diff --git a/.gitignore b/.gitignore index 281a6fdbab..a9f373dcb7 100644 --- a/.gitignore +++ b/.gitignore @@ -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-*/ diff --git a/config.sh b/config.sh index d8b4fa41d7..0c2a741d47 100755 --- a/config.sh +++ b/config.sh @@ -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" diff --git a/meson.build b/meson.build index febd0fdd2d..9639c33369 100644 --- a/meson.build +++ b/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] +) ############################################################ diff --git a/subprojects/NitroDWC.wrap b/subprojects/NitroDWC.wrap new file mode 100644 index 0000000000..15456a3d14 --- /dev/null +++ b/subprojects/NitroDWC.wrap @@ -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 \ No newline at end of file diff --git a/subprojects/NitroDWC/include/ac/dwc_ac.h b/subprojects/NitroDWC/include/ac/dwc_ac.h deleted file mode 100644 index 78278cdd80..0000000000 --- a/subprojects/NitroDWC/include/ac/dwc_ac.h +++ /dev/null @@ -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 diff --git a/subprojects/NitroDWC/include/auth/dwc_auth.h b/subprojects/NitroDWC/include/auth/dwc_auth.h deleted file mode 100644 index 11b0396b96..0000000000 --- a/subprojects/NitroDWC/include/auth/dwc_auth.h +++ /dev/null @@ -1,55 +0,0 @@ -#ifndef DWC_AUTH_H_ -#define DWC_AUTH_H_ - -#include -#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 diff --git a/subprojects/NitroDWC/include/auth/dwc_http.h b/subprojects/NitroDWC/include/auth/dwc_http.h deleted file mode 100644 index d1c3c6d4eb..0000000000 --- a/subprojects/NitroDWC/include/auth/dwc_http.h +++ /dev/null @@ -1,102 +0,0 @@ -#ifndef DWC_HTTP_H_ -#define DWC_HTTP_H_ - -#include -#include -#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 diff --git a/subprojects/NitroDWC/include/auth/dwc_netcheck.h b/subprojects/NitroDWC/include/auth/dwc_netcheck.h deleted file mode 100644 index 78a36d2458..0000000000 --- a/subprojects/NitroDWC/include/auth/dwc_netcheck.h +++ /dev/null @@ -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 diff --git a/subprojects/NitroDWC/include/auth/dwc_prof.h b/subprojects/NitroDWC/include/auth/dwc_prof.h deleted file mode 100644 index 3e2b731d52..0000000000 --- a/subprojects/NitroDWC/include/auth/dwc_prof.h +++ /dev/null @@ -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 diff --git a/subprojects/NitroDWC/include/auth/dwc_svl.h b/subprojects/NitroDWC/include/auth/dwc_svl.h deleted file mode 100644 index 1a6ac44378..0000000000 --- a/subprojects/NitroDWC/include/auth/dwc_svl.h +++ /dev/null @@ -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 diff --git a/subprojects/NitroDWC/include/auth/util_alloc.h b/subprojects/NitroDWC/include/auth/util_alloc.h deleted file mode 100644 index 9ea69b5dc2..0000000000 --- a/subprojects/NitroDWC/include/auth/util_alloc.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef DWC_UTIL_ALLOC_H_ -#define DWC_UTIL_ALLOC_H_ - -#include - -#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 diff --git a/subprojects/NitroDWC/include/auth/util_base64.h b/subprojects/NitroDWC/include/auth/util_base64.h deleted file mode 100644 index 4f4131eade..0000000000 --- a/subprojects/NitroDWC/include/auth/util_base64.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef DWC_UTIL_BASE64_H_ -#define DWC_UTIL_BASE64_H_ - -#include - -#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 diff --git a/subprojects/NitroDWC/include/base/dwc_account.h b/subprojects/NitroDWC/include/base/dwc_account.h deleted file mode 100644 index 7aa272fc67..0000000000 --- a/subprojects/NitroDWC/include/base/dwc_account.h +++ /dev/null @@ -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 diff --git a/subprojects/NitroDWC/include/base/dwc_base_gamespy.h b/subprojects/NitroDWC/include/base/dwc_base_gamespy.h deleted file mode 100644 index 124c4371f9..0000000000 --- a/subprojects/NitroDWC/include/base/dwc_base_gamespy.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef DWC_BASE_GAMESPY_ -#define DWC_BASE_GAMESPY_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include -#include - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroDWC/include/base/dwc_common.h b/subprojects/NitroDWC/include/base/dwc_common.h deleted file mode 100644 index 5f1fb4d3af..0000000000 --- a/subprojects/NitroDWC/include/base/dwc_common.h +++ /dev/null @@ -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 diff --git a/subprojects/NitroDWC/include/base/dwc_connectinet.h b/subprojects/NitroDWC/include/base/dwc_connectinet.h deleted file mode 100644 index cba651c94f..0000000000 --- a/subprojects/NitroDWC/include/base/dwc_connectinet.h +++ /dev/null @@ -1,88 +0,0 @@ -#ifndef DWC_CONNECTINET_H_ -#define DWC_CONNECTINET_H_ - -#include - -#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 diff --git a/subprojects/NitroDWC/include/base/dwc_core.h b/subprojects/NitroDWC/include/base/dwc_core.h deleted file mode 100644 index 3e2194405e..0000000000 --- a/subprojects/NitroDWC/include/base/dwc_core.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef DWC_CORE_H_ -#define DWC_CORE_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include -#include -#include - -#ifndef NITRODWC_NOGS -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroDWC/include/base/dwc_error.h b/subprojects/NitroDWC/include/base/dwc_error.h deleted file mode 100644 index 6dc778d9f0..0000000000 --- a/subprojects/NitroDWC/include/base/dwc_error.h +++ /dev/null @@ -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 diff --git a/subprojects/NitroDWC/include/base/dwc_friend.h b/subprojects/NitroDWC/include/base/dwc_friend.h deleted file mode 100644 index 9df9275ede..0000000000 --- a/subprojects/NitroDWC/include/base/dwc_friend.h +++ /dev/null @@ -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 diff --git a/subprojects/NitroDWC/include/base/dwc_ghttp.h b/subprojects/NitroDWC/include/base/dwc_ghttp.h deleted file mode 100644 index 1b940c8e2f..0000000000 --- a/subprojects/NitroDWC/include/base/dwc_ghttp.h +++ /dev/null @@ -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 diff --git a/subprojects/NitroDWC/include/base/dwc_init.h b/subprojects/NitroDWC/include/base/dwc_init.h deleted file mode 100644 index 95a5875352..0000000000 --- a/subprojects/NitroDWC/include/base/dwc_init.h +++ /dev/null @@ -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 diff --git a/subprojects/NitroDWC/include/base/dwc_login.h b/subprojects/NitroDWC/include/base/dwc_login.h deleted file mode 100644 index dee780a6c4..0000000000 --- a/subprojects/NitroDWC/include/base/dwc_login.h +++ /dev/null @@ -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 diff --git a/subprojects/NitroDWC/include/base/dwc_main.h b/subprojects/NitroDWC/include/base/dwc_main.h deleted file mode 100644 index 006a09ed8c..0000000000 --- a/subprojects/NitroDWC/include/base/dwc_main.h +++ /dev/null @@ -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 diff --git a/subprojects/NitroDWC/include/base/dwc_match.h b/subprojects/NitroDWC/include/base/dwc_match.h deleted file mode 100644 index 7cde68abaf..0000000000 --- a/subprojects/NitroDWC/include/base/dwc_match.h +++ /dev/null @@ -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 diff --git a/subprojects/NitroDWC/include/base/dwc_memfunc.h b/subprojects/NitroDWC/include/base/dwc_memfunc.h deleted file mode 100644 index e8d8d940dc..0000000000 --- a/subprojects/NitroDWC/include/base/dwc_memfunc.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef DWC_MEMFUNC_H_ -#define DWC_MEMFUNC_H_ - -#include - -#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 diff --git a/subprojects/NitroDWC/include/base/dwc_nasfunc.h b/subprojects/NitroDWC/include/base/dwc_nasfunc.h deleted file mode 100644 index e917590d13..0000000000 --- a/subprojects/NitroDWC/include/base/dwc_nasfunc.h +++ /dev/null @@ -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 diff --git a/subprojects/NitroDWC/include/base/dwc_nd.h b/subprojects/NitroDWC/include/base/dwc_nd.h deleted file mode 100644 index 2e4440787c..0000000000 --- a/subprojects/NitroDWC/include/base/dwc_nd.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef DWC_ND_H_ -#define DWC_ND_H_ - -#include - -#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 diff --git a/subprojects/NitroDWC/include/base/dwc_ranking.h b/subprojects/NitroDWC/include/base/dwc_ranking.h deleted file mode 100644 index 0fba8b6a22..0000000000 --- a/subprojects/NitroDWC/include/base/dwc_ranking.h +++ /dev/null @@ -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 diff --git a/subprojects/NitroDWC/include/base/dwc_report.h b/subprojects/NitroDWC/include/base/dwc_report.h deleted file mode 100644 index 2604c81494..0000000000 --- a/subprojects/NitroDWC/include/base/dwc_report.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef DWC_REPORT_H_ -#define DWC_REPORT_H_ - -#include - -#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 diff --git a/subprojects/NitroDWC/include/base/dwc_transport.h b/subprojects/NitroDWC/include/base/dwc_transport.h deleted file mode 100644 index e1760cc13c..0000000000 --- a/subprojects/NitroDWC/include/base/dwc_transport.h +++ /dev/null @@ -1,140 +0,0 @@ -#ifndef DWC_TRANSPORT_H_ -#define DWC_TRANSPORT_H_ - -#include - -#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 diff --git a/subprojects/NitroDWC/include/bm/dwc_bm_init.h b/subprojects/NitroDWC/include/bm/dwc_bm_init.h deleted file mode 100644 index 45f9162b2d..0000000000 --- a/subprojects/NitroDWC/include/bm/dwc_bm_init.h +++ /dev/null @@ -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 diff --git a/subprojects/NitroDWC/include/bm/util_wifiidtool.h b/subprojects/NitroDWC/include/bm/util_wifiidtool.h deleted file mode 100644 index 1701c8719a..0000000000 --- a/subprojects/NitroDWC/include/bm/util_wifiidtool.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef DWC_UTIL_WIFIIDTOOL_H_ -#define DWC_UTIL_WIFIIDTOOL_H_ - -#include - -#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 diff --git a/subprojects/NitroDWC/include/dwc.h b/subprojects/NitroDWC/include/dwc.h deleted file mode 100644 index f07c4bb93a..0000000000 --- a/subprojects/NitroDWC/include/dwc.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef DWC_H_ -#define DWC_H_ - -#include -#include -#include -#include -#include - -#ifndef NITRODWC_NOGS -#include -#endif - -#endif diff --git a/subprojects/NitroDWC/include/dwc_version.h b/subprojects/NitroDWC/include/dwc_version.h deleted file mode 100644 index 0badf90751..0000000000 --- a/subprojects/NitroDWC/include/dwc_version.h +++ /dev/null @@ -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 diff --git a/subprojects/NitroDWC/include/nd/DWCi_Nd.h b/subprojects/NitroDWC/include/nd/DWCi_Nd.h deleted file mode 100644 index 4663df9dee..0000000000 --- a/subprojects/NitroDWC/include/nd/DWCi_Nd.h +++ /dev/null @@ -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 -#else -#ifndef _NITRO -#define _NITRO -#endif -#include -#include -#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 diff --git a/subprojects/NitroDWC/include/nhttp/NHTTP.h b/subprojects/NitroDWC/include/nhttp/NHTTP.h deleted file mode 100644 index 80b82efdcc..0000000000 --- a/subprojects/NitroDWC/include/nhttp/NHTTP.h +++ /dev/null @@ -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 -#include -#else -#ifndef _NITRO -#define _NITRO -#endif -#include -#include -#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 diff --git a/subprojects/NitroDWC/include/ranking/dwc_ranksession.h b/subprojects/NitroDWC/include/ranking/dwc_ranksession.h deleted file mode 100644 index c8bbdfa1fa..0000000000 --- a/subprojects/NitroDWC/include/ranking/dwc_ranksession.h +++ /dev/null @@ -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 diff --git a/subprojects/NitroDWC/include/util/dwc_utility.h b/subprojects/NitroDWC/include/util/dwc_utility.h deleted file mode 100644 index 6195eaf1e2..0000000000 --- a/subprojects/NitroDWC/include/util/dwc_utility.h +++ /dev/null @@ -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 diff --git a/subprojects/NitroDWC/libraries/ac/asm/beacon.s b/subprojects/NitroDWC/libraries/ac/asm/beacon.s deleted file mode 100644 index 23d1323bec..0000000000 --- a/subprojects/NitroDWC/libraries/ac/asm/beacon.s +++ /dev/null @@ -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 \ No newline at end of file diff --git a/subprojects/NitroDWC/libraries/ac/asm/callback.s b/subprojects/NitroDWC/libraries/ac/asm/callback.s deleted file mode 100644 index 243236fd38..0000000000 --- a/subprojects/NitroDWC/libraries/ac/asm/callback.s +++ /dev/null @@ -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 \ No newline at end of file diff --git a/subprojects/NitroDWC/libraries/ac/asm/close.s b/subprojects/NitroDWC/libraries/ac/asm/close.s deleted file mode 100644 index e7e3b9a761..0000000000 --- a/subprojects/NitroDWC/libraries/ac/asm/close.s +++ /dev/null @@ -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 \ No newline at end of file diff --git a/subprojects/NitroDWC/libraries/ac/asm/connect.s b/subprojects/NitroDWC/libraries/ac/asm/connect.s deleted file mode 100644 index ff67ac1cdd..0000000000 --- a/subprojects/NitroDWC/libraries/ac/asm/connect.s +++ /dev/null @@ -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 \ No newline at end of file diff --git a/subprojects/NitroDWC/libraries/ac/asm/dwc_ac.s b/subprojects/NitroDWC/libraries/ac/asm/dwc_ac.s deleted file mode 100644 index 58e22089e0..0000000000 --- a/subprojects/NitroDWC/libraries/ac/asm/dwc_ac.s +++ /dev/null @@ -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 - diff --git a/subprojects/NitroDWC/libraries/ac/asm/error.s b/subprojects/NitroDWC/libraries/ac/asm/error.s deleted file mode 100644 index 420df27b49..0000000000 --- a/subprojects/NitroDWC/libraries/ac/asm/error.s +++ /dev/null @@ -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 \ No newline at end of file diff --git a/subprojects/NitroDWC/libraries/ac/asm/incbin/search_dwcac.bin b/subprojects/NitroDWC/libraries/ac/asm/incbin/search_dwcac.bin deleted file mode 100644 index 915e0af5e4..0000000000 Binary files a/subprojects/NitroDWC/libraries/ac/asm/incbin/search_dwcac.bin and /dev/null differ diff --git a/subprojects/NitroDWC/libraries/ac/asm/incbin/shop_usb.bin b/subprojects/NitroDWC/libraries/ac/asm/incbin/shop_usb.bin deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/subprojects/NitroDWC/libraries/ac/asm/incbin/test.bin b/subprojects/NitroDWC/libraries/ac/asm/incbin/test.bin deleted file mode 100644 index d132ba55fc..0000000000 Binary files a/subprojects/NitroDWC/libraries/ac/asm/incbin/test.bin and /dev/null differ diff --git a/subprojects/NitroDWC/libraries/ac/asm/include/beacon.inc b/subprojects/NitroDWC/libraries/ac/asm/include/beacon.inc deleted file mode 100644 index 3be6d18e80..0000000000 --- a/subprojects/NitroDWC/libraries/ac/asm/include/beacon.inc +++ /dev/null @@ -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 diff --git a/subprojects/NitroDWC/libraries/ac/asm/include/callback.inc b/subprojects/NitroDWC/libraries/ac/asm/include/callback.inc deleted file mode 100644 index ebd2123e4a..0000000000 --- a/subprojects/NitroDWC/libraries/ac/asm/include/callback.inc +++ /dev/null @@ -1,2 +0,0 @@ -.public ov4_021E62EC -.public ov4_021E6588 diff --git a/subprojects/NitroDWC/libraries/ac/asm/include/close.inc b/subprojects/NitroDWC/libraries/ac/asm/include/close.inc deleted file mode 100644 index 7ddfe964fc..0000000000 --- a/subprojects/NitroDWC/libraries/ac/asm/include/close.inc +++ /dev/null @@ -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 diff --git a/subprojects/NitroDWC/libraries/ac/asm/include/connect.inc b/subprojects/NitroDWC/libraries/ac/asm/include/connect.inc deleted file mode 100644 index 73e3cfe69e..0000000000 --- a/subprojects/NitroDWC/libraries/ac/asm/include/connect.inc +++ /dev/null @@ -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 diff --git a/subprojects/NitroDWC/libraries/ac/asm/include/dwc_ac.inc b/subprojects/NitroDWC/libraries/ac/asm/include/dwc_ac.inc deleted file mode 100644 index 9896db9ae5..0000000000 --- a/subprojects/NitroDWC/libraries/ac/asm/include/dwc_ac.inc +++ /dev/null @@ -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 diff --git a/subprojects/NitroDWC/libraries/ac/asm/include/error.inc b/subprojects/NitroDWC/libraries/ac/asm/include/error.inc deleted file mode 100644 index 141e7937ed..0000000000 --- a/subprojects/NitroDWC/libraries/ac/asm/include/error.inc +++ /dev/null @@ -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 diff --git a/subprojects/NitroDWC/libraries/ac/asm/include/makelist.inc b/subprojects/NitroDWC/libraries/ac/asm/include/makelist.inc deleted file mode 100644 index a7fd0405db..0000000000 --- a/subprojects/NitroDWC/libraries/ac/asm/include/makelist.inc +++ /dev/null @@ -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 diff --git a/subprojects/NitroDWC/libraries/ac/asm/include/nintendospot.inc b/subprojects/NitroDWC/libraries/ac/asm/include/nintendospot.inc deleted file mode 100644 index 8f1626aca1..0000000000 --- a/subprojects/NitroDWC/libraries/ac/asm/include/nintendospot.inc +++ /dev/null @@ -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 diff --git a/subprojects/NitroDWC/libraries/ac/asm/include/retry.inc b/subprojects/NitroDWC/libraries/ac/asm/include/retry.inc deleted file mode 100644 index 96e70fa3df..0000000000 --- a/subprojects/NitroDWC/libraries/ac/asm/include/retry.inc +++ /dev/null @@ -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 diff --git a/subprojects/NitroDWC/libraries/ac/asm/include/search_dwcac.inc b/subprojects/NitroDWC/libraries/ac/asm/include/search_dwcac.inc deleted file mode 100644 index 2a51c1008b..0000000000 --- a/subprojects/NitroDWC/libraries/ac/asm/include/search_dwcac.inc +++ /dev/null @@ -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 diff --git a/subprojects/NitroDWC/libraries/ac/asm/include/shop_usb.inc b/subprojects/NitroDWC/libraries/ac/asm/include/shop_usb.inc deleted file mode 100644 index b46e208230..0000000000 --- a/subprojects/NitroDWC/libraries/ac/asm/include/shop_usb.inc +++ /dev/null @@ -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 diff --git a/subprojects/NitroDWC/libraries/ac/asm/include/start.inc b/subprojects/NitroDWC/libraries/ac/asm/include/start.inc deleted file mode 100644 index a2a4808ef7..0000000000 --- a/subprojects/NitroDWC/libraries/ac/asm/include/start.inc +++ /dev/null @@ -1,6 +0,0 @@ -.public ov4_021E62EC -.public ov4_021E63C0 -.public ov4_021E6B04 -.public ov4_021E73FC -.public WCM_StartupAsync -.public WCM_GetPhase diff --git a/subprojects/NitroDWC/libraries/ac/asm/include/test.inc b/subprojects/NitroDWC/libraries/ac/asm/include/test.inc deleted file mode 100644 index 1ebd687bdf..0000000000 --- a/subprojects/NitroDWC/libraries/ac/asm/include/test.inc +++ /dev/null @@ -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 diff --git a/subprojects/NitroDWC/libraries/ac/asm/include/wds.inc b/subprojects/NitroDWC/libraries/ac/asm/include/wds.inc deleted file mode 100644 index 1cceaea791..0000000000 --- a/subprojects/NitroDWC/libraries/ac/asm/include/wds.inc +++ /dev/null @@ -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 diff --git a/subprojects/NitroDWC/libraries/ac/asm/macros/function.inc b/subprojects/NitroDWC/libraries/ac/asm/macros/function.inc deleted file mode 100644 index f71cc4ccae..0000000000 --- a/subprojects/NitroDWC/libraries/ac/asm/macros/function.inc +++ /dev/null @@ -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 \ No newline at end of file diff --git a/subprojects/NitroDWC/libraries/ac/asm/makelist.s b/subprojects/NitroDWC/libraries/ac/asm/makelist.s deleted file mode 100644 index 0bf575a931..0000000000 --- a/subprojects/NitroDWC/libraries/ac/asm/makelist.s +++ /dev/null @@ -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" - diff --git a/subprojects/NitroDWC/libraries/ac/asm/nintendospot.s b/subprojects/NitroDWC/libraries/ac/asm/nintendospot.s deleted file mode 100644 index cc27de6c2c..0000000000 --- a/subprojects/NitroDWC/libraries/ac/asm/nintendospot.s +++ /dev/null @@ -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 - diff --git a/subprojects/NitroDWC/libraries/ac/asm/retry.s b/subprojects/NitroDWC/libraries/ac/asm/retry.s deleted file mode 100644 index 1f680c02b4..0000000000 --- a/subprojects/NitroDWC/libraries/ac/asm/retry.s +++ /dev/null @@ -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 \ No newline at end of file diff --git a/subprojects/NitroDWC/libraries/ac/asm/search_dwcac.s b/subprojects/NitroDWC/libraries/ac/asm/search_dwcac.s deleted file mode 100644 index d853640083..0000000000 --- a/subprojects/NitroDWC/libraries/ac/asm/search_dwcac.s +++ /dev/null @@ -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 - diff --git a/subprojects/NitroDWC/libraries/ac/asm/shop_usb.s b/subprojects/NitroDWC/libraries/ac/asm/shop_usb.s deleted file mode 100644 index 5152fe32f9..0000000000 --- a/subprojects/NitroDWC/libraries/ac/asm/shop_usb.s +++ /dev/null @@ -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 - diff --git a/subprojects/NitroDWC/libraries/ac/asm/start.s b/subprojects/NitroDWC/libraries/ac/asm/start.s deleted file mode 100644 index 2dfdaa8703..0000000000 --- a/subprojects/NitroDWC/libraries/ac/asm/start.s +++ /dev/null @@ -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 \ No newline at end of file diff --git a/subprojects/NitroDWC/libraries/ac/asm/test.s b/subprojects/NitroDWC/libraries/ac/asm/test.s deleted file mode 100644 index 0037773810..0000000000 --- a/subprojects/NitroDWC/libraries/ac/asm/test.s +++ /dev/null @@ -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" - diff --git a/subprojects/NitroDWC/libraries/ac/asm/wds.s b/subprojects/NitroDWC/libraries/ac/asm/wds.s deleted file mode 100644 index 9bece23b8c..0000000000 --- a/subprojects/NitroDWC/libraries/ac/asm/wds.s +++ /dev/null @@ -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 - diff --git a/subprojects/NitroDWC/libraries/ac/meson.build b/subprojects/NitroDWC/libraries/ac/meson.build deleted file mode 100644 index f824cebc1e..0000000000 --- a/subprojects/NitroDWC/libraries/ac/meson.build +++ /dev/null @@ -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 diff --git a/subprojects/NitroDWC/libraries/account/meson.build b/subprojects/NitroDWC/libraries/account/meson.build deleted file mode 100644 index 1807b3782c..0000000000 --- a/subprojects/NitroDWC/libraries/account/meson.build +++ /dev/null @@ -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 diff --git a/subprojects/NitroDWC/libraries/account/src/dwc_account.c b/subprojects/NitroDWC/libraries/account/src/dwc_account.c deleted file mode 100644 index e5a8e0b9cd..0000000000 --- a/subprojects/NitroDWC/libraries/account/src/dwc_account.c +++ /dev/null @@ -1,492 +0,0 @@ -#include -#include -#include - -#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"); -} diff --git a/subprojects/NitroDWC/libraries/account/src/dwc_init.c b/subprojects/NitroDWC/libraries/account/src/dwc_init.c deleted file mode 100644 index 1ed678a0c5..0000000000 --- a/subprojects/NitroDWC/libraries/account/src/dwc_init.c +++ /dev/null @@ -1,97 +0,0 @@ -#include -#include -#include -#include -#include -#include - -#include -static char id_string [] = SDK_MIDDLEWARE_STRING("NINTENDO", DWC_VERSION_STRING); -#include - -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); - } -} diff --git a/subprojects/NitroDWC/libraries/account/src/meson.build b/subprojects/NitroDWC/libraries/account/src/meson.build deleted file mode 100644 index a0fa8ff017..0000000000 --- a/subprojects/NitroDWC/libraries/account/src/meson.build +++ /dev/null @@ -1,4 +0,0 @@ -libdwcaccount_srcs = files( - 'dwc_init.c', - 'dwc_account.c' -) \ No newline at end of file diff --git a/subprojects/NitroDWC/libraries/auth/asm/dwc_auth.s b/subprojects/NitroDWC/libraries/auth/asm/dwc_auth.s deleted file mode 100644 index 79cc7ea131..0000000000 --- a/subprojects/NitroDWC/libraries/auth/asm/dwc_auth.s +++ /dev/null @@ -1,1163 +0,0 @@ - .include "macros/function.inc" - .include "include/dwc_auth.inc" - - .extern OSi_ThreadInfo - .extern errno - .extern Unk_ov4_0221A43C - - .text - - - arm_func_start DWC_Auth_SetCustomNas -DWC_Auth_SetCustomNas: ; 0x021D3038 - ldr r1, _021D3044 ; =0x02215EA0 - str r0, [r1, #0] - bx lr - ; .align 2, 0 -_021D3044: .word Unk_ov4_02215EA0 - arm_func_end DWC_Auth_SetCustomNas - - arm_func_start DWC_Auth_Create -DWC_Auth_Create: ; 0x021D3048 - stmfd sp!, {r3, r4, r5, lr} - ldr r2, _021D315C ; =0x0221A414 - mov r5, r0 - ldr r0, [r2, #8] - mov r4, r1 - cmp r0, #0 - ldr r2, [r5, #0x40] - movne r0, #2 - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, _021D3160 ; =0x02215EE4 - ldr r1, _021D3164 ; =0x000013F4 - blx r2 - ldr r1, _021D315C ; =0x0221A414 - cmp r0, #0 - str r0, [r1, #8] - moveq r0, #2 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r2, _021D3164 ; =0x000013F4 - mov r1, #0 - bl MI_CpuFill8 - ldr r3, _021D315C ; =0x0221A414 - mov r1, #0 - ldr r0, [r3, #8] - mov r2, #0x1c4 - add r0, r0, #0x1000 - str r4, [r0, #0x314] - str r1, [r3, #0] - ldr r0, [r3, #8] - add r0, r0, #8 - add r0, r0, #0x1000 - bl MI_CpuFill8 - ldr r1, _021D315C ; =0x0221A414 - ldr r2, _021D3168 ; =0x00004E84 - ldr r0, [r1, #8] - mov r4, #4 - add r0, r0, #0x1000 - str r2, [r0, #8] - ldr lr, [r1, #8] - add r0, lr, #0x1cc - add ip, r0, #0x1000 -_021D30E8: - ldmia r5!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - subs r4, r4, #1 - bne _021D30E8 - ldmia r5, {r0, r1} - stmia ip, {r0, r1} - add r0, lr, #0x1100 - mov r2, #0 - strh r2, [r0, #0xfe] - ldr r1, _021D315C ; =0x0221A414 - mov r0, #1 - ldr r1, [r1, #8] - add r1, r1, #0x1000 - strb r2, [r1, #0x20b] - bl ov4_021D3410 - ldr r2, _021D315C ; =0x0221A414 - ldr r1, [r2, #8] - add r1, r1, #0x1000 - str r0, [r1, #4] - ldr r0, [r2, #8] - add r0, r0, #0x1000 - ldr r0, [r0, #4] - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, #0 - str r0, [r2, #4] - bl ov4_021D316C - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_021D315C: .word Unk_ov4_0221A414 -_021D3160: .word Unk_ov4_02215EE4 -_021D3164: .word 0x000013F4 -_021D3168: .word 0x00004E84 - arm_func_end DWC_Auth_Create - - arm_func_start ov4_021D316C -ov4_021D316C: ; 0x021D316C - stmfd sp!, {r3, lr} - sub sp, sp, #8 - ldr r0, _021D3214 ; =0x0221A414 - ldr r0, [r0, #8] - add r0, r0, #0x3d8 - add r0, r0, #0x1000 - bl OS_InitMutex - ldr r1, _021D3214 ; =0x0221A414 - mov r2, #0 - ldr r0, [r1, #8] - add r0, r0, #0x1000 - str r2, [r0, #0x3f0] - ldr r1, [r1, #8] - add r0, r1, #0x1000 - ldr r0, [r0, #0x384] - cmp r0, #0 - beq _021D31C8 - add r0, r1, #0x318 - add r0, r0, #0x1000 - bl OS_IsThreadTerminated - cmp r0, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r3, pc} -_021D31C8: - ldr r0, _021D3214 ; =0x0221A414 - mov r3, #0x1000 - ldr lr, [r0, #8] - ldr r1, _021D3218 ; =ov4_021D3520 - add r0, lr, #0x318 - ldr r2, _021D321C ; =0x0221A41C - str r3, [sp] - mov ip, #0x10 - add r0, r0, #0x1000 - add r3, lr, #0x1000 - str ip, [sp, #4] - bl OS_CreateThread - ldr r0, _021D3214 ; =0x0221A414 - ldr r0, [r0, #8] - add r0, r0, #0x318 - add r0, r0, #0x1000 - bl OS_WakeupThreadDirect - add sp, sp, #8 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_021D3214: .word Unk_ov4_0221A414 -_021D3218: .word ov4_021D3520 -_021D321C: .word Unk_ov4_0221A41C - arm_func_end ov4_021D316C - - arm_func_start DWC_Auth_Abort -DWC_Auth_Abort: ; 0x021D3220 - stmfd sp!, {r3, lr} - ldr r0, _021D32A8 ; =0x0221A414 - ldr r0, [r0, #8] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - add r0, r0, #0x3d8 - add r0, r0, #0x1000 - bl OS_LockMutex - ldr r1, _021D32A8 ; =0x0221A414 - mov r2, #1 - ldr r0, [r1, #8] - add r0, r0, #0x1000 - str r2, [r0, #0x3f0] - ldr r0, [r1, #8] - add r0, r0, #0x3d8 - add r0, r0, #0x1000 - bl OS_UnlockMutex - ldr r0, _021D32A8 ; =0x0221A414 - ldr r0, [r0, #8] - add r0, r0, #0x1000 - ldr r0, [r0, #0x314] - cmp r0, #0 - beq _021D3280 - bl DWC_Http_Abort -_021D3280: - ldr r0, _021D32A8 ; =0x0221A414 - ldr r1, [r0, #8] - add r0, r1, #0x1000 - ldr r0, [r0, #0x384] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - add r0, r1, #0x318 - add r0, r0, #0x1000 - bl OS_JoinThread - ldmia sp!, {r3, pc} - ; .align 2, 0 -_021D32A8: .word Unk_ov4_0221A414 - arm_func_end DWC_Auth_Abort - - arm_func_start DWC_Auth_Destroy -DWC_Auth_Destroy: ; 0x021D32AC - stmfd sp!, {r4, lr} - ldr r0, _021D32FC ; =0x0221A414 - ldr r0, [r0, #8] - cmp r0, #0 - ldmeqia sp!, {r4, pc} - add r1, r0, #0x1000 - ldr r0, [r1, #0x314] - ldr r4, [r1, #0x210] - cmp r0, #0 - beq _021D32D8 - bl DWC_Http_Destroy -_021D32D8: - ldr r1, _021D32FC ; =0x0221A414 - ldr r0, _021D3300 ; =0x02215EF4 - ldr r1, [r1, #8] - mov r2, #0 - blx r4 - ldr r0, _021D32FC ; =0x0221A414 - mov r1, #0 - str r1, [r0, #8] - ldmia sp!, {r4, pc} - ; .align 2, 0 -_021D32FC: .word Unk_ov4_0221A414 -_021D3300: .word Unk_ov4_02215EF4 - arm_func_end DWC_Auth_Destroy - - arm_func_start DWC_Auth_Join -DWC_Auth_Join: ; 0x021D3304 - stmfd sp!, {r3, lr} - ldr r0, _021D3330 ; =0x0221A414 - ldr r1, [r0, #8] - add r0, r1, #0x1000 - ldr r0, [r0, #0x384] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - add r0, r1, #0x318 - add r0, r0, #0x1000 - bl OS_JoinThread - ldmia sp!, {r3, pc} - ; .align 2, 0 -_021D3330: .word Unk_ov4_0221A414 - arm_func_end DWC_Auth_Join - - arm_func_start DWC_Auth_GetError -DWC_Auth_GetError: ; 0x021D3334 - stmfd sp!, {r4, lr} - ldr r0, _021D337C ; =0x0221A414 - ldr r0, [r0, #8] - cmp r0, #0 - moveq r0, #0x16 - ldmeqia sp!, {r4, pc} - add r0, r0, #0x3d8 - add r0, r0, #0x1000 - bl OS_LockMutex - ldr r0, _021D337C ; =0x0221A414 - ldr r1, [r0, #8] - add r0, r1, #0x3d8 - add r1, r1, #0x1000 - add r0, r0, #0x1000 - ldr r4, [r1, #4] - bl OS_UnlockMutex - mov r0, r4 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_021D337C: .word Unk_ov4_0221A414 - arm_func_end DWC_Auth_GetError - - arm_func_start DWC_Auth_GetResult -DWC_Auth_GetResult: ; 0x021D3380 - stmfd sp!, {r4, lr} - ldr r1, _021D33FC ; =0x0221A414 - mov r4, r0 - ldr r1, [r1, #8] - cmp r1, #0 - bne _021D33A4 - mov r1, #0 - mov r2, #0x1c4 - bl MI_CpuFill8 -_021D33A4: - ldr r0, _021D33FC ; =0x0221A414 - mov r1, r4 - ldr r0, [r0, #8] - mov r2, #0x1c4 - add r0, r0, #8 - add r0, r0, #0x1000 - bl MI_CpuCopy8 - ldr r1, [r4, #0] - ldr r0, _021D3400 ; =0x00004E20 - cmp r1, r0 - blt _021D33DC - ldr r0, _021D3404 ; =0x00007530 - cmp r1, r0 - blt _021D33E4 -_021D33DC: - ldr r0, _021D3408 ; =0x00005206 - str r0, [r4, #0] -_021D33E4: - ldr r1, [r4, #0] - ldr r0, _021D340C ; =0x00004E84 - cmp r1, r0 - rsbge r0, r1, #0 - strge r0, [r4] - ldmia sp!, {r4, pc} - ; .align 2, 0 -_021D33FC: .word Unk_ov4_0221A414 -_021D3400: .word 0x00004E20 -_021D3404: .word 0x00007530 -_021D3408: .word 0x00005206 -_021D340C: .word 0x00004E84 - arm_func_end DWC_Auth_GetResult - - arm_func_start ov4_021D3410 -ov4_021D3410: ; 0x021D3410 - stmfd sp!, {r4, lr} - ldr r1, _021D3508 ; =0x02215EA0 - mov r4, r0 - ldr r0, [r1, #0] - ldr r1, _021D350C ; =0x02215F04 - bl strcmp - cmp r0, #0 - ldrne r0, _021D3508 ; =0x02215EA0 - movne r1, #1 - strne r1, [r0, #0x14] - ldr r0, _021D3510 ; =0x0221A414 - ldr r2, _021D3508 ; =0x02215EA0 - ldr r0, [r0, #8] - ldr r1, _021D3514 ; =0x02215EA0 - add r0, r0, #0x1000 - ldr r3, [r0, #0x20c] - str r3, [r2, #0xc] - ldr r3, [r0, #0x210] - str r3, [r2, #0x10] - ldr r0, [r0, #0x314] - bl DWC_Http_Create - cmp r0, #0 - movne r0, #4 - ldmneia sp!, {r4, pc} - cmp r4, #1 - bne _021D3480 - ldr r0, _021D3518 ; =0x0221A420 - bl sub_020A283C -_021D3480: - ldr r0, _021D3510 ; =0x0221A414 - ldr r1, [r0, #8] - add r0, r1, #0x1000 - add r2, r1, #0x1cc - ldr r0, [r0, #0x314] - add r1, r1, #0x1200 - add r2, r2, #0x1000 - bl ov4_021D3C74 - ldr r2, _021D3510 ; =0x0221A414 - ldr r1, [r2, #8] - add r1, r1, #0x1000 - str r0, [r1, #4] - ldr r0, [r2, #8] - add r0, r0, #0x1000 - ldr r1, [r0, #4] - cmp r1, #0 - movne r0, #4 - ldmneia sp!, {r4, pc} - ldr r0, [r0, #0x314] - bl DWC_Http_FinishHeader - cmp r0, #0 - movne r0, #4 - ldmneia sp!, {r4, pc} - ldr r0, _021D351C ; =0x021CCC80 - ldr r0, [r0, #4] - bl OS_GetThreadPriority - ldr r1, _021D3510 ; =0x0221A414 - ldr r2, [r1, #8] - sub r1, r0, #1 - add r0, r2, #0x1000 - ldr r0, [r0, #0x314] - bl DWC_Http_StartThread - mov r0, #0 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_021D3508: .word Unk_ov4_02215EA0 -_021D350C: .word Unk_ov4_02215F04 -_021D3510: .word Unk_ov4_0221A414 -_021D3514: .word Unk_ov4_02215EA0 -_021D3518: .word Unk_ov4_0221A420 -_021D351C: .word OSi_ThreadInfo - arm_func_end ov4_021D3410 - - arm_func_start ov4_021D3520 -ov4_021D3520: ; 0x021D3520 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r8, #0 -_021D3528: - ldr r0, _021D37C4 ; =0x0221A414 - ldr r0, [r0, #8] - add r0, r0, #0x1000 - ldr r1, [r0, #0x314] - add r0, r1, #0x1000 - ldr r0, [r0, #0xba4] - cmp r0, #0 - beq _021D3554 - add r0, r1, #0x338 - add r0, r0, #0x1800 - bl OS_JoinThread -_021D3554: - ldr r2, _021D37C4 ; =0x0221A414 - ldr r0, [r2, #8] - add r0, r0, #0x1000 - ldr r1, [r0, #0x314] - add r1, r1, #0x1000 - ldr r1, [r1, #0x20] - cmp r1, #8 - beq _021D35F0 - ldr r1, _021D37C8 ; =0x00004E84 - str r1, [r0, #8] - ldr r0, [r2, #8] - add r0, r0, #0x1000 - ldr r0, [r0, #0x314] - add r0, r0, #0x1000 - ldr r0, [r0, #0x20] - cmp r0, #7 - bne _021D35A4 - mov r0, #0x14 - bl ov4_021D3E18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021D35A4: - cmp r8, #2 - ble _021D35E0 - cmp r0, #2 - bne _021D35C0 - mov r0, #9 - bl ov4_021D3E18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021D35C0: - cmp r0, #3 - bne _021D35D4 - mov r0, #0xb - bl ov4_021D3E18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021D35D4: - mov r0, #0xd - bl ov4_021D3E18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021D35E0: - mov r0, #1 - add r8, r8, #1 - str r0, [sp] - b _021D3660 -_021D35F0: - bl ov4_021D37D4 - cmp r0, #0x10 - beq _021D3618 - cmp r0, #0x11 - beq _021D363C - cmp r0, #0x15 - bne _021D3644 - mov r0, #0x15 - bl ov4_021D3E18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021D3618: - cmp r8, #2 - ble _021D362C - mov r0, #0x10 - bl ov4_021D3E18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021D362C: - mov r0, #0 - add r8, r8, #1 - str r0, [sp] - b _021D3660 -_021D363C: - bl ov4_021D3E18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021D3644: - cmp r8, #2 - blt _021D3654 - bl ov4_021D3E18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021D3654: - mov r0, #1 - add r8, r8, #1 - str r0, [sp] -_021D3660: - bl OS_GetTick - mov sb, r0 - mov sl, r1 - bl OS_GetTick - subs r2, r0, sb - sbc r0, r1, sl - mov r1, r0, lsl #6 - orr r1, r1, r2, lsr #26 - mov r0, r2, lsl #6 - ldr r2, _021D37CC ; =0x000082EA - mov r3, #0 - bl _ull_div - cmp r1, #0 - ldr r7, _021D37D0 ; =0x00001388 - cmpeq r0, r7 - bhs _021D3740 - mov fp, #0 - ldr r6, _021D37CC ; =0x000082EA - ldr r5, _021D37C4 ; =0x0221A414 - mov r4, fp -_021D36B0: - ldr r0, [r5, #8] - add r0, r0, #0x3d8 - add r0, r0, #0x1000 - bl OS_LockMutex - ldr r2, [r5, #8] - add r0, r2, #0x1000 - ldr r1, [r0, #0x3f0] - cmp r1, #1 - bne _021D36FC - ldr r2, _021D37C8 ; =0x00004E84 - ldr r1, _021D37C4 ; =0x0221A414 - str r2, [r0, #8] - ldr r0, [r1, #8] - add r0, r0, #0x3d8 - add r0, r0, #0x1000 - bl OS_UnlockMutex - mov r0, #0x14 - bl ov4_021D3E18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021D36FC: - add r0, r2, #0x3d8 - add r0, r0, #0x1000 - bl OS_UnlockMutex - mov r0, r7 - bl OS_Sleep - bl OS_GetTick - subs r2, r0, sb - sbc r0, r1, sl - mov r1, r0, lsl #6 - orr r1, r1, r2, lsr #26 - mov r0, r2, lsl #6 - mov r2, r6 - mov r3, fp - bl _ull_div - cmp r1, r4 - cmpeq r0, r7 - blo _021D36B0 -_021D3740: - ldr r0, _021D37C4 ; =0x0221A414 - ldr r0, [r0, #8] - add r0, r0, #0x1000 - ldr r0, [r0, #0x314] - bl DWC_Http_Destroy - ldr r0, _021D37C4 ; =0x0221A414 - ldr r0, [r0, #8] - add r0, r0, #0x3d8 - add r0, r0, #0x1000 - bl OS_LockMutex - ldr r0, [sp] - bl ov4_021D3410 - ldr r2, _021D37C4 ; =0x0221A414 - ldr r1, [r2, #8] - add r1, r1, #0x1000 - str r0, [r1, #4] - ldr r3, [r2, #8] - add r0, r3, #0x1000 - ldr r1, [r0, #4] - cmp r1, #0 - beq _021D37B0 - ldr r1, _021D37C8 ; =0x00004E84 - str r1, [r0, #8] - ldr r0, [r2, #8] - add r0, r0, #0x3d8 - add r0, r0, #0x1000 - bl OS_UnlockMutex - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021D37B0: - add r0, r3, #0x3d8 - add r0, r0, #0x1000 - bl OS_UnlockMutex - b _021D3528 -_021D37C0: - .byte 0xF8, 0x8F, 0xBD, 0xE8 -_021D37C4: .word Unk_ov4_0221A414 -_021D37C8: .word 0x00004E84 -_021D37CC: .word 0x000082EA -_021D37D0: .word 0x00001388 - arm_func_end ov4_021D3520 - - arm_func_start ov4_021D37D4 -ov4_021D37D4: ; 0x021D37D4 - stmfd sp!, {r3, r4, r5, lr} - ldr r0, _021D398C ; =0x0221A414 - mov r1, #0 - ldr r0, [r0, #8] - add r2, r0, #0x1000 - ldr r0, [r2, #0x314] - ldr r4, [r2, #0x20c] - ldr r5, [r2, #0x210] - bl DWC_Http_ParseResult - cmp r0, #1 - beq _021D381C - ldr r0, _021D398C ; =0x0221A414 - ldr r2, _021D3990 ; =0x00004E84 - ldr r1, [r0, #8] - mov r0, #0xe - add r1, r1, #0x1000 - str r2, [r1, #8] - ldmia sp!, {r3, r4, r5, pc} -_021D381C: - bl ov4_021D39AC - cmp r0, #0 - movne r0, #0xe - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, _021D398C ; =0x0221A414 - ldr r1, _021D3990 ; =0x00004E84 - ldr r0, [r0, #8] - add r0, r0, #0x1000 - ldr r2, [r0, #8] - cmp r2, r1 - bge _021D38DC - sub r0, r1, #0x62 - cmp r2, r0 - bne _021D38D4 - ldr r0, _021D3994 ; =0x02215F24 - ldr r1, _021D3998 ; =0x0000071F - blx r4 - movs r4, r0 - bne _021D3884 - ldr r0, _021D398C ; =0x0221A414 - ldr r2, _021D3990 ; =0x00004E84 - ldr r1, [r0, #8] - mov r0, #2 - add r1, r1, #0x1000 - str r2, [r1, #8] - ldmia sp!, {r3, r4, r5, pc} -_021D3884: - add r1, r4, #0x1f - ldr r0, _021D399C ; =0x0221A420 - bic r1, r1, #0x1f - bl sub_020A3C5C - cmp r0, #1 - mov r2, #0 - beq _021D38C8 - ldr r0, _021D39A0 ; =0x02215F34 - mov r1, r4 - blx r5 - ldr r0, _021D398C ; =0x0221A414 - ldr r2, _021D3990 ; =0x00004E84 - ldr r1, [r0, #8] - mov r0, #0xf - add r1, r1, #0x1000 - str r2, [r1, #8] - ldmia sp!, {r3, r4, r5, pc} -_021D38C8: - ldr r0, _021D39A0 ; =0x02215F34 - mov r1, r4 - blx r5 -_021D38D4: - mov r0, #0x15 - ldmia sp!, {r3, r4, r5, pc} -_021D38DC: - add r0, r1, #4 - cmp r2, r0 - beq _021D38F8 - add r0, r1, #8 - cmp r2, r0 - beq _021D391C - b _021D3984 -_021D38F8: - ldr r0, _021D399C ; =0x0221A420 - bl sub_020A3CAC - ldr r0, _021D398C ; =0x0221A414 - ldr r2, _021D39A4 ; =0x00004E88 - ldr r1, [r0, #8] - mov r0, #0x10 - add r1, r1, #0x1000 - str r2, [r1, #8] - ldmia sp!, {r3, r4, r5, pc} -_021D391C: - ldr r0, _021D3994 ; =0x02215F24 - mov r1, #0x700 - blx r4 - movs r4, r0 - bne _021D394C - ldr r0, _021D398C ; =0x0221A414 - ldr r2, _021D39A8 ; =0x00004E8C - ldr r1, [r0, #8] - mov r0, #0x11 - add r1, r1, #0x1000 - str r2, [r1, #8] - ldmia sp!, {r3, r4, r5, pc} -_021D394C: - add r0, r4, #0x1f - bic r0, r0, #0x1f - bl DWCi_AUTH_MakeWiFiID - ldr r0, _021D39A0 ; =0x02215F34 - mov r1, r4 - mov r2, #0 - blx r5 - ldr r0, _021D398C ; =0x0221A414 - ldr r2, _021D39A8 ; =0x00004E8C - ldr r1, [r0, #8] - mov r0, #0x11 - add r1, r1, #0x1000 - str r2, [r1, #8] - ldmia sp!, {r3, r4, r5, pc} -_021D3984: - mov r0, #0x12 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_021D398C: .word Unk_ov4_0221A414 -_021D3990: .word 0x00004E84 -_021D3994: .word Unk_ov4_02215F24 -_021D3998: .word 0x0000071F -_021D399C: .word Unk_ov4_0221A420 -_021D39A0: .word Unk_ov4_02215F34 -_021D39A4: .word 0x00004E88 -_021D39A8: .word 0x00004E8C - arm_func_end ov4_021D37D4 - - arm_func_start ov4_021D39AC -ov4_021D39AC: ; 0x021D39AC - stmfd sp!, {r3, r4, r5, lr} - ldr r0, _021D3C44 ; =0x0221A414 - mov r1, #0 - ldr r0, [r0, #8] - str r1, [sp] - add r0, r0, #0x1000 - ldr r0, [r0, #0x314] - ldr r1, _021D3C48 ; =0x02215F40 - bl DWC_Http_GetResult - str r0, [sp] - cmp r0, #0 - beq _021D39E0 - bl DWC_Auth_SetNasTimeDiff -_021D39E0: - ldr r0, _021D3C44 ; =0x0221A414 - mov r2, #0 - ldr r1, [r0, #8] - ldr r0, _021D3C4C ; =0x021D0D40 - str r2, [sp] - str r2, [r0, #0] - add r0, r1, #0x1000 - ldr r0, [r0, #0x314] - ldr r1, _021D3C50 ; =0x02215F48 - bl DWC_Http_GetResult - bl atoi - ldr r1, _021D3C4C ; =0x021D0D40 - ldr r1, [r1, #0] - cmp r1, #0x22 - bne _021D3A38 - ldr r0, _021D3C44 ; =0x0221A414 - ldr r2, _021D3C54 ; =0x00004E85 - ldr r1, [r0, #8] - mov r0, #0xc - add r1, r1, #0x1000 - str r2, [r1, #8] - ldmia sp!, {r3, r4, r5, pc} -_021D3A38: - cmp r0, #0xc8 - beq _021D3A60 - ldr r1, _021D3C44 ; =0x0221A414 - add r0, r0, #0x1d8 - ldr r1, [r1, #8] - add r2, r0, #0x5800 - add r0, r1, #0x1000 - str r2, [r0, #8] - mov r0, #0x12 - ldmia sp!, {r3, r4, r5, pc} -_021D3A60: - ldr r0, _021D3C44 ; =0x0221A414 - ldr r1, _021D3C58 ; =0x02215F54 - ldr r2, [r0, #8] - mov r3, #4 - add r0, r2, #0x1000 - add r2, r2, #0xc - ldr r0, [r0, #0x314] - add r2, r2, #0x1000 - bl DWC_Http_GetBase64DecodedResult - cmp r0, #0 - bgt _021D3AA8 - ldr r0, _021D3C44 ; =0x0221A414 - ldr r2, _021D3C54 ; =0x00004E85 - ldr r1, [r0, #8] - mov r0, #0xe - add r1, r1, #0x1000 - str r2, [r1, #8] - ldmia sp!, {r3, r4, r5, pc} -_021D3AA8: - ldr r0, _021D3C44 ; =0x0221A414 - add r1, sp, #0 - ldr r0, [r0, #8] - mov r2, #0xa - add r0, r0, #0xc - add r0, r0, #0x1000 - bl strtol - ldr r1, _021D3C44 ; =0x0221A414 - mov r4, r0 - ldr r5, [r1, #8] - add r0, r5, #0xc - add r0, r0, #0x1000 - bl strlen - add r1, r5, #0xc - add r1, r1, #0x1000 - ldr r2, [sp] - add r0, r1, r0 - cmp r2, r0 - beq _021D3B08 - ldr r1, _021D3C54 ; =0x00004E85 - add r0, r5, #0x1000 - str r1, [r0, #8] - mov r0, #0xc - ldmia sp!, {r3, r4, r5, pc} -_021D3B08: - add r0, r4, #0xe20 - add r1, r0, #0x4000 - add r0, r5, #0x1000 - str r1, [r0, #8] - cmp r4, #0x64 - bge _021D3C3C - ldr r5, _021D3C44 ; =0x0221A414 - mov r0, #0 - ldr r2, [r5, #8] - ldr r1, _021D3C5C ; =0x02215F60 - add r2, r2, #0x1000 - strb r0, [r2, #0x52] - ldr r2, [r5, #8] - ldr r3, _021D3C60 ; =0x0000012D - add r2, r2, #0x1000 - strb r0, [r2, #0x1f] - ldr r2, [r5, #8] - add r2, r2, #0x1000 - strb r0, [r2, #0x17f] - ldr r2, [r5, #8] - add r2, r2, #0x1000 - strb r0, [r2, #0x10] - ldr r2, [r5, #8] - add r2, r2, #0x1000 - strb r0, [r2, #0x188] - ldr r2, [r5, #8] - add r0, r2, #0x1000 - add r2, r2, #0x52 - ldr r0, [r0, #0x314] - add r2, r2, #0x1000 - bl DWC_Http_GetBase64DecodedResult - mov r0, r5 - ldr r2, [r0, #8] - ldr r1, _021D3C64 ; =0x02215F68 - add r0, r2, #0x1000 - add r2, r2, #0x1f - ldr r0, [r0, #0x314] - mov r3, #0x33 - add r2, r2, #0x1000 - bl DWC_Http_GetBase64DecodedResult - mov r0, r5 - ldr r2, [r0, #8] - ldr r1, _021D3C68 ; =0x02215F70 - add r0, r2, #0x1000 - add r2, r2, #0x7f - ldr r0, [r0, #0x314] - mov r3, #9 - add r2, r2, #0x1100 - bl DWC_Http_GetBase64DecodedResult - mov r0, r5 - ldr r2, [r0, #8] - ldr r1, _021D3C6C ; =0x02215F7C - add r0, r2, #0x1000 - add r2, r2, #0x10 - ldr r0, [r0, #0x314] - mov r3, #0xf - add r2, r2, #0x1000 - bl DWC_Http_GetBase64DecodedResult - mov r0, r5 - ldr r2, [r0, #8] - ldr r1, _021D3C70 ; =0x02215F88 - add r0, r2, #0x1000 - add r2, r2, #0x188 - ldr r0, [r0, #0x314] - mov r3, #0x41 - add r2, r2, #0x1000 - bl DWC_Http_GetRawResult - mov r1, r5 - ldr r0, [r1, #8] - mov r2, #0 - add r0, r0, #0x1000 - cmp r4, #0x28 - strb r2, [r0, #0x1b3] - movne r0, #1 - strne r0, [r1] - moveq r0, #2 - streq r0, [r1] -_021D3C3C: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_021D3C44: .word Unk_ov4_0221A414 -_021D3C48: .word Unk_ov4_02215F40 -_021D3C4C: .word errno -_021D3C50: .word Unk_ov4_02215F48 -_021D3C54: .word 0x00004E85 -_021D3C58: .word Unk_ov4_02215F54 -_021D3C5C: .word Unk_ov4_02215F60 -_021D3C60: .word 0x0000012D -_021D3C64: .word Unk_ov4_02215F68 -_021D3C68: .word Unk_ov4_02215F70 -_021D3C6C: .word Unk_ov4_02215F7C -_021D3C70: .word Unk_ov4_02215F88 - arm_func_end ov4_021D39AC - - arm_func_start ov4_021D3C74 -ov4_021D3C74: ; 0x021D3C74 - stmfd sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0x94 - ldr r3, _021D3DF0 ; =0x0221A414 - mov r4, r0 - ldr r0, [r3, #0x10] - ldr r3, [r3, #0xc] - cmp r0, #0 - mov r6, r1 - mov r5, r2 - cmpeq r3, #0 - bne _021D3CD0 - ldr r0, _021D3DF4 ; =0x02215F94 - bl strlen - mov r3, r0 - ldr r1, _021D3DF8 ; =0x02215FA0 - ldr r2, _021D3DF4 ; =0x02215F94 - mov r0, r4 - bl DWC_Http_Add_PostBase64Item - cmp r0, #0 - beq _021D3D28 - add sp, sp, #0x94 - mov r0, #8 - ldmia sp!, {r3, r4, r5, r6, pc} -_021D3CD0: - ldr r0, _021D3DFC ; =0x02215FA8 - bl strlen - mov r3, r0 - ldr r1, _021D3DF8 ; =0x02215FA0 - ldr r2, _021D3DFC ; =0x02215FA8 - mov r0, r4 - bl DWC_Http_Add_PostBase64Item - cmp r0, #0 - addne sp, sp, #0x94 - movne r0, #8 - ldmneia sp!, {r3, r4, r5, r6, pc} - mov r0, r6 - bl strlen - mov r3, r0 - ldr r1, _021D3E00 ; =0x02215FB0 - mov r0, r4 - mov r2, r6 - bl DWC_Http_Add_PostBase64Item - cmp r0, #0 - addne sp, sp, #0x94 - movne r0, #8 - ldmneia sp!, {r3, r4, r5, r6, pc} -_021D3D28: - ldr r1, _021D3E04 ; =0x0221A420 - add r0, sp, #0 - bl DWC_Auth_GetCalInfoFromWiFiInfo - cmp r0, #0 - addeq sp, sp, #0x94 - moveq r0, #5 - ldmeqia sp!, {r3, r4, r5, r6, pc} - ldr r0, _021D3E08 ; =0x0221A43C - add r1, sp, #0 - ldr r2, [r0, #0] - mov r0, r4 - bl DWC_Auth_SetCalInfoToHttp - cmp r0, #0 - addeq sp, sp, #0x94 - moveq r0, #8 - ldmeqia sp!, {r3, r4, r5, r6, pc} - ldr r0, _021D3DF0 ; =0x0221A414 - ldr r0, [r0, #4] - cmp r0, #1 - bne _021D3DA4 - ldr r0, _021D3E0C ; =0x02215FB8 - bl strlen - mov r3, r0 - ldr r1, _021D3E10 ; =0x02215FBC - ldr r2, _021D3E0C ; =0x02215FB8 - mov r0, r4 - bl DWC_Http_Add_PostBase64Item - cmp r0, #0 - addne sp, sp, #0x94 - movne r0, #8 - ldmneia sp!, {r3, r4, r5, r6, pc} -_021D3DA4: - mov r0, r5 - bl wcslen - cmp r0, #0 - beq _021D3DE4 - mov r0, r5 - bl wcslen - mov r3, r0 - ldr r1, _021D3E14 ; =0x02215FC4 - mov r0, r4 - mov r2, r5 - mov r3, r3, lsl #1 - bl DWC_Http_Add_PostBase64Item - cmp r0, #0 - addne sp, sp, #0x94 - movne r0, #8 - ldmneia sp!, {r3, r4, r5, r6, pc} -_021D3DE4: - mov r0, #0 - add sp, sp, #0x94 - ldmia sp!, {r3, r4, r5, r6, pc} - ; .align 2, 0 -_021D3DF0: .word Unk_ov4_0221A414 -_021D3DF4: .word Unk_ov4_02215F94 -_021D3DF8: .word Unk_ov4_02215FA0 -_021D3DFC: .word Unk_ov4_02215FA8 -_021D3E00: .word Unk_ov4_02215FB0 -_021D3E04: .word Unk_ov4_0221A420 -_021D3E08: .word Unk_ov4_0221A43C -_021D3E0C: .word Unk_ov4_02215FB8 -_021D3E10: .word Unk_ov4_02215FBC -_021D3E14: .word Unk_ov4_02215FC4 - arm_func_end ov4_021D3C74 - - arm_func_start ov4_021D3E18 -ov4_021D3E18: ; 0x021D3E18 - stmfd sp!, {r4, lr} - ldr r1, _021D3E58 ; =0x0221A414 - mov r4, r0 - ldr r0, [r1, #8] - add r0, r0, #0x3d8 - add r0, r0, #0x1000 - bl OS_LockMutex - ldr r1, _021D3E58 ; =0x0221A414 - ldr r0, [r1, #8] - add r0, r0, #0x1000 - str r4, [r0, #4] - ldr r0, [r1, #8] - add r0, r0, #0x3d8 - add r0, r0, #0x1000 - bl OS_UnlockMutex - ldmia sp!, {r4, pc} - ; .align 2, 0 -_021D3E58: .word Unk_ov4_0221A414 - arm_func_end ov4_021D3E18 - - .data - - - .global Unk_ov4_02215EA0 -Unk_ov4_02215EA0: ; 0x02215EA0 - .word Unk_ov4_02215EBC - .word 0x0 - .word 0x1000 - .word 0x0 - .word 0x0 - .word 0x0 - .word 0x4E20 - - .global Unk_ov4_02215EBC -Unk_ov4_02215EBC: ; 0x02215EBC - .ascii "https://nas.test.nintendowifi.net/ac" - .word 0x0 - - .global Unk_ov4_02215EE4 -Unk_ov4_02215EE4: ; 0x02215EE4 - .asciz "ALLOC DWCauth" - .short 0x0 - - .global Unk_ov4_02215EF4 -Unk_ov4_02215EF4: ; 0x02215EF4 - .ascii "FREE DWCauth" - .word 0x0 - - .global Unk_ov4_02215F04 -Unk_ov4_02215F04: ; 0x02215F04 - .asciz "https://nas.nintendowifi.net/ac" - - .global Unk_ov4_02215F24 -Unk_ov4_02215F24: ; 0x02215F24 - .ascii "ALLOC bmwork" - .word 0x0 - - .global Unk_ov4_02215F34 -Unk_ov4_02215F34: ; 0x02215F34 - .asciz "FREE bmwork" - - .global Unk_ov4_02215F40 -Unk_ov4_02215F40: ; 0x02215F40 - .ascii "Date" - .word 0x0 - - .global Unk_ov4_02215F48 -Unk_ov4_02215F48: ; 0x02215F48 - .ascii "httpresult" - .short 0x0 - - .global Unk_ov4_02215F54 -Unk_ov4_02215F54: ; 0x02215F54 - .ascii "returncd" - .word 0x0 - - .global Unk_ov4_02215F60 -Unk_ov4_02215F60: ; 0x02215F60 - .asciz "token" - .short 0x0 - - .global Unk_ov4_02215F68 -Unk_ov4_02215F68: ; 0x02215F68 - .asciz "locator" - - .global Unk_ov4_02215F70 -Unk_ov4_02215F70: ; 0x02215F70 - .asciz "challenge" - .short 0x0 - - .global Unk_ov4_02215F7C -Unk_ov4_02215F7C: ; 0x02215F7C - .ascii "datetime" - .word 0x0 - - .global Unk_ov4_02215F88 -Unk_ov4_02215F88: ; 0x02215F88 - .ascii "Set-Cookie" - .short 0x0 - - .global Unk_ov4_02215F94 -Unk_ov4_02215F94: ; 0x02215F94 - .ascii "acctcreate" - .short 0x0 - - .global Unk_ov4_02215FA0 -Unk_ov4_02215FA0: ; 0x02215FA0 - .ascii "action" - .short 0x0 - - .global Unk_ov4_02215FA8 -Unk_ov4_02215FA8: ; 0x02215FA8 - .asciz "login" - .short 0x0 - - .global Unk_ov4_02215FB0 -Unk_ov4_02215FB0: ; 0x02215FB0 - .ascii "gsbrcd" - .short 0x0 - - .global Unk_ov4_02215FB8 -Unk_ov4_02215FB8: ; 0x02215FB8 - .word 0x59 - - .global Unk_ov4_02215FBC -Unk_ov4_02215FBC: ; 0x02215FBC - .asciz "iswfc" - .short 0x0 - - .global Unk_ov4_02215FC4 -Unk_ov4_02215FC4: ; 0x02215FC4 - .asciz "ingamesn" - - - - .bss - - - .global Unk_ov4_0221A414 -Unk_ov4_0221A414: ; 0x0221A414 - .space 0x4 - - .global Unk_ov4_0221A418 -Unk_ov4_0221A418: ; 0x0221A418 - .space 0x4 - - .global Unk_ov4_0221A41C -Unk_ov4_0221A41C: ; 0x0221A41C - .space 0x4 - - .global Unk_ov4_0221A420 -Unk_ov4_0221A420: ; 0x0221A420 - .space 0x14 - diff --git a/subprojects/NitroDWC/libraries/auth/asm/dwc_ca_cybertrust.s b/subprojects/NitroDWC/libraries/auth/asm/dwc_ca_cybertrust.s deleted file mode 100644 index 2baf01444b..0000000000 --- a/subprojects/NitroDWC/libraries/auth/asm/dwc_ca_cybertrust.s +++ /dev/null @@ -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 - diff --git a/subprojects/NitroDWC/libraries/auth/asm/dwc_ca_globalsign.s b/subprojects/NitroDWC/libraries/auth/asm/dwc_ca_globalsign.s deleted file mode 100644 index 5a1bf49273..0000000000 --- a/subprojects/NitroDWC/libraries/auth/asm/dwc_ca_globalsign.s +++ /dev/null @@ -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 - diff --git a/subprojects/NitroDWC/libraries/auth/asm/dwc_ca_nas_self.s b/subprojects/NitroDWC/libraries/auth/asm/dwc_ca_nas_self.s deleted file mode 100644 index 6d0701cc0a..0000000000 --- a/subprojects/NitroDWC/libraries/auth/asm/dwc_ca_nas_self.s +++ /dev/null @@ -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 - diff --git a/subprojects/NitroDWC/libraries/auth/asm/dwc_ca_thawte_premiumserver.s b/subprojects/NitroDWC/libraries/auth/asm/dwc_ca_thawte_premiumserver.s deleted file mode 100644 index 2c2cd68dce..0000000000 --- a/subprojects/NitroDWC/libraries/auth/asm/dwc_ca_thawte_premiumserver.s +++ /dev/null @@ -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" - diff --git a/subprojects/NitroDWC/libraries/auth/asm/dwc_ca_thawte_server.s b/subprojects/NitroDWC/libraries/auth/asm/dwc_ca_thawte_server.s deleted file mode 100644 index 49323ef2fb..0000000000 --- a/subprojects/NitroDWC/libraries/auth/asm/dwc_ca_thawte_server.s +++ /dev/null @@ -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 - diff --git a/subprojects/NitroDWC/libraries/auth/asm/dwc_ca_verisign.s b/subprojects/NitroDWC/libraries/auth/asm/dwc_ca_verisign.s deleted file mode 100644 index 7ebd1e70ad..0000000000 --- a/subprojects/NitroDWC/libraries/auth/asm/dwc_ca_verisign.s +++ /dev/null @@ -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 - diff --git a/subprojects/NitroDWC/libraries/auth/asm/dwc_cal.s b/subprojects/NitroDWC/libraries/auth/asm/dwc_cal.s deleted file mode 100644 index e5849bdb63..0000000000 --- a/subprojects/NitroDWC/libraries/auth/asm/dwc_cal.s +++ /dev/null @@ -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" - diff --git a/subprojects/NitroDWC/libraries/auth/asm/dwc_http.s b/subprojects/NitroDWC/libraries/auth/asm/dwc_http.s deleted file mode 100644 index 1a6c8ed0dc..0000000000 --- a/subprojects/NitroDWC/libraries/auth/asm/dwc_http.s +++ /dev/null @@ -1,1656 +0,0 @@ - .include "macros/function.inc" - .include "include/dwc_http.inc" - - .extern CPSMyIp - .extern Unk_ov4_02216F08 - .extern Unk_ov4_02216DDC - .extern Unk_ov4_022170BC - .extern Unk_ov4_02217198 - .extern Unk_ov4_02216674 - .extern Unk_ov4_02216910 - .extern Unk_ov4_022169F8 - .extern Unk_ov4_022167C0 - .extern Unk_ov4_02216CC4 - .extern Unk_ov4_02216BA4 - .extern Unk_ov4_02217274 - .extern Unk_ov4_02216ABC - - .text - - - arm_func_start DWC_Http_Create -DWC_Http_Create: ; 0x021D4478 - stmfd sp!, {r4, r5, r6, lr} - mov r5, r1 - ldr r2, _021D4580 ; =0x00001C14 - mov r6, r0 - ldr r4, [r5, #0xc] - mov r1, #0 - bl MI_CpuFill8 - add r1, r6, #4 - add r0, r6, #0x1000 - mvn r2, #0 - str r2, [r0, #0xa30] - mov lr, r5 - str r2, [r0, #0xa34] - add ip, r1, #0x1000 - ldmia lr!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - ldmia lr, {r0, r1, r2} - stmia ip, {r0, r1, r2} - ldr r0, _021D4584 ; =0x02216100 - ldr r1, _021D4588 ; =0x00000B68 - blx r4 - add r1, r6, #0x1000 - str r0, [r1, #0x9cc] - cmp r0, #0 - moveq r0, #1 - streq r0, [r1, #0x20] - ldmeqia sp!, {r4, r5, r6, pc} - ldr r0, _021D458C ; =0x02216118 - ldr r1, _021D4590 ; =0x000005EA - blx r4 - add r2, r6, #0x1000 - str r0, [r2, #0x9d0] - cmp r0, #0 - moveq r0, #1 - streq r0, [r2, #0x20] - ldmeqia sp!, {r4, r5, r6, pc} - add r1, r6, #0x208 - ldr r2, [r2, #0xc] - mov r0, r6 - add r1, r1, #0x1800 - bl ov4_021D501C - cmp r0, #0 - bne _021D4534 - add r1, r6, #0x1000 - mov r0, #1 - str r0, [r1, #0x20] - ldmia sp!, {r4, r5, r6, pc} -_021D4534: - ldr r1, [r5, #0] - mov r0, r6 - bl ov4_021D515C - cmp r0, #0 - bne _021D4558 - add r1, r6, #0x1000 - mov r0, #1 - str r0, [r1, #0x20] - ldmia sp!, {r4, r5, r6, pc} -_021D4558: - mov r0, r6 - bl ov4_021D4CE0 - add r1, r6, #0x1000 - str r0, [r1, #0x20] - cmp r0, #0 - moveq r0, #0xff - streqb r0, [r1] - add r0, r6, #0x1000 - ldr r0, [r0, #0x20] - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_021D4580: .word 0x00001C14 -_021D4584: .word 0x02216100 -_021D4588: .word 0x00000B68 -_021D458C: .word 0x02216118 -_021D4590: .word 0x000005EA - arm_func_end DWC_Http_Create - - arm_func_start DWC_Http_FinishHeader -DWC_Http_FinishHeader: ; 0x021D4594 - stmfd sp!, {r4, lr} - sub sp, sp, #8 - ldr r1, _021D4618 ; =0x02216130 - ldr r2, _021D461C ; =0x0221613C - mov r4, r0 - bl DWC_Http_Add_HeaderItem - cmp r0, #0 - addne sp, sp, #8 - movne r0, #1 - ldmneia sp!, {r4, pc} - add r0, r4, #0x1000 - ldr r0, [r0, #0x9f8] - ldr r1, _021D4620 ; =0x02216144 - bl strstr - add r0, r0, #4 - bl strlen - movs r3, r0 - beq _021D460C - ldr r2, _021D4624 ; =0x0221614C - add r0, sp, #0 - mov r1, #7 - bl OS_SNPrintf - ldr r1, _021D4628 ; =0x02216150 - add r2, sp, #0 - mov r0, r4 - bl DWC_Http_Add_HeaderItem - cmp r0, #0 - addne sp, sp, #8 - movne r0, #1 - ldmneia sp!, {r4, pc} -_021D460C: - mov r0, #0 - add sp, sp, #8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_021D4618: .word 0x02216130 -_021D461C: .word 0x0221613C -_021D4620: .word 0x02216144 -_021D4624: .word 0x0221614C -_021D4628: .word 0x02216150 - arm_func_end DWC_Http_FinishHeader - - arm_func_start DWC_Http_StartThread -DWC_Http_StartThread: ; 0x021D462C - stmfd sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - mov r5, r0 - add r0, r5, #0x3f8 - add r2, r5, #0x1000 - mov r3, #0 - add r0, r0, #0x1800 - mov r4, r1 - str r3, [r2, #0xc10] - bl OS_InitMutex - add r0, r5, #0x218 - add r0, r0, #0x1800 - bl OS_InitMutex - add r0, r5, #0x1000 - ldr r0, [r0, #0x18] - cmp r0, #1 - ldreq r0, _021D46E0 ; =0x0221A434 - moveq r1, #1 - ldrne r0, _021D46E0 ; =0x0221A434 - movne r1, #0 - str r1, [r0, #0] - add r0, r5, #0x1000 - ldr r0, [r0, #0xba4] - cmp r0, #0 - beq _021D46A8 - add r0, r5, #0x338 - add r0, r0, #0x1800 - bl OS_IsThreadTerminated - cmp r0, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r3, r4, r5, pc} -_021D46A8: - add r0, r5, #0x338 - mov r1, #0x1000 - str r1, [sp] - ldr r1, _021D46E4 ; =ov4_021D4910 - mov r2, r5 - add r0, r0, #0x1800 - add r3, r5, #0x1000 - str r4, [sp, #4] - bl OS_CreateThread - add r0, r5, #0x338 - add r0, r0, #0x1800 - bl OS_WakeupThreadDirect - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_021D46E0: .word Unk_ov4_0221A434 -_021D46E4: .word ov4_021D4910 - arm_func_end DWC_Http_StartThread - - arm_func_start DWC_Http_Abort -DWC_Http_Abort: ; 0x021D46E8 - stmfd sp!, {r4, lr} - mov r4, r0 - add r0, r4, #0x1000 - ldrb r0, [r0] - cmp r0, #0xff - ldmneia sp!, {r4, pc} - add r0, r4, #0x3f8 - add r0, r0, #0x1800 - bl OS_LockMutex - add r0, r4, #0x3f8 - add r1, r4, #0x1000 - mov r2, #1 - add r0, r0, #0x1800 - str r2, [r1, #0xc10] - bl OS_UnlockMutex - add r0, r4, #0x1000 - ldr r0, [r0, #0xba4] - cmp r0, #0 - ldmeqia sp!, {r4, pc} - add r0, r4, #0x338 - add r0, r0, #0x1800 - bl OS_JoinThread - ldmia sp!, {r4, pc} - arm_func_end DWC_Http_Abort - - arm_func_start ov4_021D4744 -ov4_021D4744: ; 0x021D4744 - stmfd sp!, {r4, lr} - mov r4, r0 - add r0, r4, #0x1000 - ldr r0, [r0, #0x130] - cmp r0, #1 - bne _021D4778 - add r0, r4, #0x1d4 - add r0, r0, #0x1800 - bl OS_GetLowEntropyData - add r0, r4, #0x1d4 - add r0, r0, #0x1800 - mov r1, #0x20 - bl CPS_SslAddRandomSeed -_021D4778: - add r0, r4, #0x3f8 - add r0, r0, #0x1800 - bl OS_LockMutex - add r0, r4, #0x1000 - ldr r0, [r0, #0xc10] - cmp r0, #1 - add r0, r4, #0x3f8 - add r0, r0, #0x1800 - bne _021D47A8 - bl OS_UnlockMutex - mov r0, #0 - ldmia sp!, {r4, pc} -_021D47A8: - bl OS_UnlockMutex - mov r0, #0xa - bl OS_Sleep - mov r0, #1 - ldmia sp!, {r4, pc} - arm_func_end ov4_021D4744 - - arm_func_start ov4_021D47BC -ov4_021D47BC: ; 0x021D47BC - stmfd sp!, {r4, lr} - mov r4, r0 - add r0, r4, #0x138 - add r0, r0, #0x1000 - mov r1, #0 - mov r2, #0x64 - bl MI_CpuFill8 - ldr r0, _021D480C ; =0x00000B68 - add r1, r4, #0x1000 - str r0, [r1, #0x174] - ldr r3, [r1, #0x9cc] - add r0, r4, #0x138 - ldr r2, _021D4810 ; =0x000005EA - str r3, [r1, #0x178] - str r2, [r1, #0x180] - ldr r2, [r1, #0x9d0] - add r0, r0, #0x1000 - str r2, [r1, #0x184] - bl CPS_SocRegister - ldmia sp!, {r4, pc} - ; .align 2, 0 -_021D480C: .word 0x00000B68 -_021D4810: .word 0x000005EA - arm_func_end ov4_021D47BC - - arm_func_start ov4_021D4814 -ov4_021D4814: ; 0x021D4814 - ldr ip, _021D4824 ; =CPS_Resolve - add r0, r0, #0x1000 - ldr r0, [r0, #0x124] - bx ip - ; .align 2, 0 -_021D4824: .word CPS_Resolve - arm_func_end ov4_021D4814 - - arm_func_start ov4_021D4828 -ov4_021D4828: ; 0x021D4828 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - mov r5, r0 - add r0, r5, #0x1000 - ldr r6, [r0, #0xa08] - add r2, r5, #0x208 - ldr r1, _021D4904 ; =0x02216144 - mov r0, r6 - add r4, r2, #0x1800 - bl strstr - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldr r1, _021D4904 ; =0x02216144 - mov r0, r6 - bl strstr - add r1, r5, #0x218 - add r6, r0, #4 - add r0, r1, #0x1800 - bl OS_LockMutex - ldr r0, [r4, #4] - add r1, r5, #0x218 - sub r2, r0, r6 - add r0, r5, #0x1000 - str r2, [r0, #0xa34] - add r0, r1, #0x1800 - bl OS_UnlockMutex - ldr r0, [r4, #0] - ldr r1, _021D4908 ; =0x02216160 - bl strstr - movs r8, r0 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldr r0, _021D4908 ; =0x02216160 - bl strlen - mov r7, r0 - ldr r1, _021D490C ; =0x02216174 - add r0, r8, r7 - bl strstr - mov r6, r0 - add r0, r5, #0x218 - ldrsb r4, [r6] - mov r1, #0 - add r0, r0, #0x1800 - strb r1, [r6] - bl OS_LockMutex - add r0, r8, r7 - bl atoi - add r1, r5, #0x1000 - add r2, r5, #0x218 - str r0, [r1, #0xa30] - add r0, r2, #0x1800 - bl OS_UnlockMutex - strb r4, [r6] - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_021D4904: .word 0x02216144 -_021D4908: .word 0x02216160 -_021D490C: .word 0x02216174 - arm_func_end ov4_021D4828 - - arm_func_start ov4_021D4910 -ov4_021D4910: ; 0x021D4910 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - mov sl, r0 - add r0, sl, #0x1000 - ldr r8, [r0, #0x1c] - add r0, sl, #0x138 - add r1, sl, #0x19c - add r2, sl, #0x208 - add r4, r0, #0x1000 - cmp r8, #0 - mov r0, sl - add r5, r1, #0x1000 - add r7, r2, #0x1800 - mov fp, #0 - ldrle r8, _021D4C18 ; =0x0000EA60 - bl ov4_021D47BC - mov r0, sl - bl ov4_021D4814 - movs r6, r0 - add r0, sl, #0x1000 - moveq r1, #2 - streq r1, [r0, #0x20] - addeq sp, sp, #0x14 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - str r6, [r0, #0x12c] - bl CPS_SocUse - add r0, sl, #0x1000 - ldr r0, [r0, #0x130] - cmp r0, #1 - bne _021D49C4 - mov r0, r5 - mov r1, #0 - mov r2, #0x830 - bl MI_CpuFill8 - ldr r1, _021D4C1C ; =ov4_021D5010 - add r0, sl, #0x1000 - str r1, [r5, #0x810] - ldr r1, [r0, #0x124] - ldr r0, _021D4C20 ; =0x022160D0 - str r1, [r5, #0x800] - mov r1, #0xc - str r5, [r4, #0xc] - bl CPS_SetRootCa - mov r0, #1 - bl CPS_SetSsl -_021D49C4: - add r0, sl, #0x1100 - ldrh r1, [r0, #0x34] - mov r2, r6 - mov r0, #0 - bl CPS_SocBind - bl CPS_TcpConnect - cmp r0, #0 - add r0, sl, #0x1000 - beq _021D4A00 - mov r1, #3 - str r1, [r0, #0x20] - bl CPS_SocRelease - bl CPS_SocUnRegister - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021D4A00: - ldr r4, [r0, #0x9f8] - mov r0, r4 - bl strlen - mov r1, r0 - mov r0, r4 - bl CPS_SocWrite - str r0, [sp, #0x10] - cmp r0, #0 - bgt _021D4A34 - add r0, sl, #0x1000 - mov r1, #5 - str r1, [r0, #0x20] - b _021D4C00 -_021D4A34: - bl CPS_SocFlush - mov r0, sl - bl ov4_021D4744 - cmp r0, #0 - bne _021D4A58 - add r0, sl, #0x1000 - mov r1, #7 - str r1, [r0, #0x20] - b _021D4C00 -_021D4A58: - ldr r0, [r7, #0] - str r0, [r7, #4] - ldr r1, [r7, #0] - ldr r0, [r7, #0xc] - add r0, r1, r0 - str r0, [r7, #8] - bl OS_GetTick - str r0, [sp, #8] - add r0, sl, #0x234 - str r1, [sp, #4] - add r5, sl, #0x218 - add r6, r0, #0x1800 - add r4, sl, #0x1000 -_021D4A8C: - ldr r0, _021D4C24 ; =0x0221DE40 - ldr r0, [r0, #0] - cmp r0, #0 - bne _021D4AAC - add r0, sl, #0x1000 - mov r1, #5 - str r1, [r0, #0x20] - b _021D4C00 -_021D4AAC: - bl CPS_SocGetLength - str r0, [sp, #0x10] - cmp r0, #0 - blt _021D4BDC - ble _021D4B60 - bl OS_GetTick - str r0, [sp, #8] - add r0, sp, #0x10 - str r1, [sp, #4] - bl CPS_SocRead - cmp r0, #0 - beq _021D4BDC - ldmib r7, {r1, r2} - sub r2, r2, #1 - ldr sb, [sp, #0x10] - sub r2, r2, r1 - cmp sb, r2 - movge sb, r2 - mov r2, sb - bl MI_CpuCopy8 - ldr r0, [r7, #4] - cmp fp, #1 - add r1, r0, sb - str r1, [r7, #4] - mov r0, #0 - strb r0, [r1] - bne _021D4B38 - add r0, r5, #0x1800 - bl OS_LockMutex - ldr r1, [r6, #0] - add r0, r5, #0x1800 - add r1, r1, sb - str r1, [r6, #0] - bl OS_UnlockMutex - b _021D4B44 -_021D4B38: - mov r0, sl - bl ov4_021D4828 - mov fp, r0 -_021D4B44: - ldr r0, [sp, #0x10] - cmp r0, sb - bls _021D4B58 - bl CPS_SocConsume - b _021D4BDC -_021D4B58: - mov r0, sb - bl CPS_SocConsume -_021D4B60: - ldr r1, [r4, #0xa30] - cmp r1, #0 - ldrge r0, [r4, #0xa34] - cmpge r0, r1 - bge _021D4BDC - bl OS_GetTick - ldr r2, [sp, #8] - mov r3, #0 - subs r2, r0, r2 - ldr r0, [sp, #4] - sbc r0, r1, r0 - mov r1, r0, lsl #6 - orr r1, r1, r2, lsr #26 - mov r0, r2, lsl #6 - ldr r2, _021D4C28 ; =0x000082EA - bl _ull_div - cmp r1, r8, asr #31 - cmpeq r0, r8 - bls _021D4BBC - add r0, sl, #0x1000 - mov r1, #6 - str r1, [r0, #0x20] - b _021D4C00 -_021D4BBC: - mov r0, sl - bl ov4_021D4744 - cmp r0, #0 - bne _021D4A8C - add r0, sl, #0x1000 - mov r1, #7 - str r1, [r0, #0x20] - b _021D4C00 -_021D4BDC: - bl CPS_TcpShutdown - bl CPS_TcpClose - bl CPS_SocRelease - bl CPS_SocUnRegister - add r0, sl, #0x1000 - mov r1, #8 - str r1, [r0, #0x20] - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021D4C00: - bl CPS_TcpShutdown - bl CPS_TcpClose - bl CPS_SocRelease - bl CPS_SocUnRegister - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_021D4C18: .word 0x0000EA60 -_021D4C1C: .word ov4_021D5010 -_021D4C20: .word Unk_ov4_022160D0 -_021D4C24: .word CPSMyIp -_021D4C28: .word 0x000082EA - arm_func_end ov4_021D4910 - - arm_func_start DWC_Http_Destroy -DWC_Http_Destroy: ; 0x021D4C2C - stmfd sp!, {r3, r4, r5, lr} - movs r5, r0 - add r1, r5, #0x1000 - ldr r4, [r1, #0x14] - ldmeqia sp!, {r3, r4, r5, pc} - add r1, r5, #0x238 - add r1, r1, #0x1800 - mov r2, #0x20 - bl ov4_021D5790 - add r1, r5, #0x208 - mov r0, r5 - add r1, r1, #0x1800 - bl ov4_021D5074 - add r1, r5, #0x1f8 - mov r0, r5 - add r1, r1, #0x1800 - bl ov4_021D5074 - add r0, r5, #0x1000 - ldr r1, [r0, #0x9cc] - cmp r1, #0 - beq _021D4C98 - ldr r0, _021D4CD4 ; =0x02216178 - mov r2, #0 - blx r4 - add r0, r5, #0x1000 - mov r1, #0 - str r1, [r0, #0x9cc] -_021D4C98: - add r0, r5, #0x1000 - ldr r1, [r0, #0x9d0] - cmp r1, #0 - beq _021D4CC0 - ldr r0, _021D4CD8 ; =0x02216190 - mov r2, #0 - blx r4 - add r0, r5, #0x1000 - mov r1, #0 - str r1, [r0, #0x9d0] -_021D4CC0: - ldr r2, _021D4CDC ; =0x00001C14 - mov r0, r5 - mov r1, #0 - bl MI_CpuFill8 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_021D4CD4: .word 0x02216178 -_021D4CD8: .word 0x02216190 -_021D4CDC: .word 0x00001C14 - arm_func_end DWC_Http_Destroy - - arm_func_start ov4_021D4CE0 -ov4_021D4CE0: ; 0x021D4CE0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - mov r7, r0 - add r0, r7, #0x1000 - ldr r1, [r0, #8] - add r0, r7, #0x1f8 - cmp r1, #0 - ldreq r6, _021D4D98 ; =0x022161A8 - add r5, r0, #0x1800 - add r0, r7, #0x1000 - ldrne r6, _021D4D9C ; =0x022161FC - ldr r0, [r0, #0x124] - bl strlen - mov r4, r0 - mov r0, r6 - bl strlen - add r1, r7, #0x1000 - mov r8, r0 - ldr r0, [r1, #0x128] - bl strlen - sub r1, r8, #4 - add r0, r1, r0 - add r2, r4, r0 - add r0, r7, #0x1f8 - add r1, r0, #0x1800 - add r2, r2, #0x400 - mov r0, r7 - bl ov4_021D501C - cmp r0, #1 - addne sp, sp, #4 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} - add r3, r7, #0x1000 - ldr r0, [r3, #0x124] - mov r2, r6 - str r0, [sp] - ldr r0, [r5, #4] - ldr r1, [r5, #0xc] - ldr r3, [r3, #0x128] - bl OS_SNPrintf - ldr r1, [r5, #4] - add r0, r1, r0 - str r0, [r5, #4] - mov r0, #0 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_021D4D98: .word 0x022161A8 -_021D4D9C: .word 0x022161FC - arm_func_end ov4_021D4CE0 - - arm_func_start DWC_Http_Add_HeaderItem -DWC_Http_Add_HeaderItem: ; 0x021D4DA0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r8, r0 - mov r6, r2 - add r2, r8, #0x1f8 - mov r0, r6 - mov r7, r1 - add r5, r2, #0x1800 - bl strlen - mov r4, r0 - ldr r0, _021D4E74 ; =0x0221621C - bl strlen - mov sb, r0 - mov r0, r7 - bl strlen - sub r1, sb, #4 - add r0, r1, r0 - add r4, r4, r0 - ldmib r5, {r1, r2} - add r0, r4, #1 - sub r1, r2, r1 - cmp r0, r1 - ble _021D4E18 - sub r2, r4, r1 - mov r0, r8 - mov r1, r5 - add r2, r2, #1 - bl ov4_021D50B4 - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_021D4E18: - ldr r0, [r5, #0] - ldr r1, _021D4E78 ; =0x02216144 - bl strstr - add sb, r0, #2 - ldrsb r8, [r0, #2] - mov r0, sb - bl strlen - add r2, r0, #1 - add r0, sb, r4 - mov r1, sb - bl memmove - ldr r2, _021D4E74 ; =0x0221621C - str r6, [sp] - mov r3, r7 - mov r0, sb - add r1, r4, #1 - bl OS_SNPrintf - strb r8, [sb, r0] - ldr r1, [r5, #4] - mov r0, #0 - add r1, r1, r4 - str r1, [r5, #4] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ; .align 2, 0 -_021D4E74: .word 0x0221621C -_021D4E78: .word 0x02216144 - arm_func_end DWC_Http_Add_HeaderItem - - arm_func_start DWC_Http_Add_PostBase64Item -DWC_Http_Add_PostBase64Item: ; 0x021D4E7C - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - add r0, sl, #0x1000 - ldr r4, [r0, #0x9f4] - add r0, sl, #0x1f8 - cmp r4, #0 - ldreq r7, _021D4F80 ; =0x02216228 - mov r8, r2 - add r4, sl, #0x1000 - add r6, r0, #0x1800 - ldr r0, [r4, #0x9f4] - mov fp, r3 - add r5, r0, #1 - mov r2, #0 - mov sb, r1 - ldrne r7, _021D4F84 ; =0x0221622C - mov r0, r8 - mov r1, fp - mov r3, r2 - str r5, [r4, #0x9f4] - bl DWC_Auth_Base64Encode - mov r5, r0 - mov r0, r7 - bl strlen - mov r4, r0 - mov r0, sb - bl strlen - sub r1, r4, #2 - add r2, r1, r0 - ldmib r6, {r0, r1} - add r2, r5, r2 - sub r1, r1, r0 - cmp r2, r1 - ble _021D4F2C - sub r2, r2, r1 - mov r0, sl - mov r1, r6 - add r2, r2, #1 - bl ov4_021D50B4 - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldmib r6, {r0, r1} - sub r1, r1, r0 -_021D4F2C: - mov r2, r7 - mov r3, sb - bl OS_SNPrintf - ldr r2, [r6, #4] - mov r1, fp - add r2, r2, r0 - str r2, [r6, #4] - ldr r0, [r6, #8] - sub r3, r0, r2 - mov r0, r8 - sub r3, r3, #1 - bl DWC_Auth_Base64Encode - cmp r0, #0 - movlt r0, #1 - ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [r6, #4] - mov r0, #0 - add r1, r1, r5 - str r1, [r6, #4] - strb r0, [r1] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_021D4F80: .word 0x02216228 -_021D4F84: .word 0x0221622C - arm_func_end DWC_Http_Add_PostBase64Item - - arm_func_start DWC_Http_Add_Body -DWC_Http_Add_Body: ; 0x021D4F88 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - add r1, r7, #0x1f8 - mov r0, r6 - add r5, r1, #0x1800 - bl strlen - mov r4, r0 - ldmib r5, {r0, r1} - sub r1, r1, r0 - cmp r4, r1 - ble _021D4FE0 - sub r2, r4, r1 - mov r0, r7 - mov r1, r5 - add r2, r2, #1 - bl ov4_021D50B4 - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldmib r5, {r0, r1} - sub r1, r1, r0 -_021D4FE0: - ldr r2, _021D500C ; =0x02216234 - mov r3, r6 - bl OS_SNPrintf - cmp r0, r4 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, [r5, #4] - add r0, r1, r0 - str r0, [r5, #4] - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021D500C: .word 0x02216234 - arm_func_end DWC_Http_Add_Body - - arm_func_start ov4_021D5010 -ov4_021D5010: ; 0x021D5010 - tst r0, #0x8000 - bicne r0, r0, #0x8000 - bx lr - arm_func_end ov4_021D5010 - - arm_func_start ov4_021D501C -ov4_021D501C: ; 0x021D501C - stmfd sp!, {r3, r4, r5, lr} - movs r4, r2 - add r0, r0, #0x1000 - ldr r2, [r0, #0x10] - mov r5, r1 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, _021D5070 ; =0x02216238 - mov r1, r4 - blx r2 - str r0, [r5, #0] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - str r0, [r5, #4] - str r4, [r5, #0xc] - ldr r0, [r5, #0] - add r0, r0, r4 - str r0, [r5, #8] - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_021D5070: .word 0x02216238 - arm_func_end ov4_021D501C - - arm_func_start ov4_021D5074 -ov4_021D5074: ; 0x021D5074 - stmfd sp!, {r4, lr} - mov r4, r1 - ldr r1, [r4, #0] - add r0, r0, #0x1000 - cmp r1, #0 - ldr r3, [r0, #0x14] - beq _021D509C - ldr r0, _021D50B0 ; =0x0221624C - mov r2, #0 - blx r3 -_021D509C: - mov r0, r4 - mov r1, #0 - mov r2, #0x10 - bl MI_CpuFill8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_021D50B0: .word 0x0221624C - arm_func_end ov4_021D5074 - - arm_func_start ov4_021D50B4 -ov4_021D50B4: ; 0x021D50B4 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - add r0, r0, #0x1000 - ldr r7, [r0, #0x14] - mov r5, r2 - mov r6, r1 - cmp r5, #0 - ldr r2, [r0, #0x10] - movle r0, #0 - ldmleia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, [r6, #0xc] - ldr r0, _021D5154 ; =0x02216260 - add r1, r1, r5 - blx r2 - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r6, #0] - ldr r2, [r6, #0xc] - mov r1, r4 - bl MI_CpuCopy8 - ldr r1, [r6, #0] - ldr r0, _021D5158 ; =0x0221624C - mov r2, #0 - blx r7 - cmp r4, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldmia r6, {r0, r1} - sub r0, r4, r0 - add r0, r1, r0 - str r0, [r6, #4] - ldr r1, [r6, #0xc] - mov r0, #1 - add r1, r1, r5 - str r1, [r6, #0xc] - str r4, [r6, #0] - ldr r1, [r6, #0xc] - add r1, r4, r1 - str r1, [r6, #8] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021D5154: .word 0x02216260 -_021D5158: .word 0x0221624C - arm_func_end ov4_021D50B4 - - arm_func_start ov4_021D515C -ov4_021D515C: ; 0x021D515C - stmfd sp!, {r4, r5, r6, lr} - mov r6, r1 - mov r5, r0 - mov r0, r6 - mov r4, #0 - bl strlen - cmp r0, #0x100 - movhs r0, r4 - ldmhsia sp!, {r4, r5, r6, pc} - add r0, r5, #0x24 - mov r1, r6 - add r0, r0, #0x1000 - mov r2, #0x100 - bl strncpy - mov r0, r6 - bl strlen - add r1, r5, #0x24 - mov r6, r0 - add r0, r1, #0x1000 - bl strlen - cmp r6, r0 - movne r0, r4 - ldmneia sp!, {r4, r5, r6, pc} - add r0, r5, #0x24 - ldr r1, _021D52A0 ; =0x02216270 - add r0, r0, #0x1000 - bl strstr - cmp r0, #0 - beq _021D51F8 - add r0, r5, #0x2b - add r1, r0, #0x1000 - add r0, r5, #0x1000 - str r1, [r0, #0x124] - mov r1, r4 - str r1, [r0, #0x130] - add r0, r5, #0x1100 - mov r1, #0x50 - strh r1, [r0, #0x34] - b _021D5234 -_021D51F8: - add r0, r5, #0x24 - ldr r1, _021D52A4 ; =0x02216278 - add r0, r0, #0x1000 - bl strstr - cmp r0, #0 - moveq r0, r4 - ldmeqia sp!, {r4, r5, r6, pc} - add r2, r0, #8 - add r0, r5, #0x1000 - mov r1, #1 - str r2, [r0, #0x124] - str r1, [r0, #0x130] - rsb r1, r1, #0x1bc - add r0, r5, #0x1100 - strh r1, [r0, #0x34] -_021D5234: - add r0, r5, #0x1000 - ldr r0, [r0, #0x124] - ldr r1, _021D52A8 ; =0x02216284 - bl strstr - cmp r0, #0 - movne r1, #0 - strneb r1, [r0] - addne r4, r0, #1 - add r0, r5, #0x1000 - ldr r0, [r0, #0x124] - ldr r1, _021D52AC ; =0x02216288 - bl strstr - cmp r0, #0 - mov r1, #0 - addeq r0, r5, #0x1000 - strneb r1, [r0] - addne r1, r0, #1 - addne r0, r5, #0x1000 - str r1, [r0, #0x128] - cmp r4, #0 - beq _021D5298 - mov r0, r4 - bl atoi - add r1, r5, #0x1100 - strh r0, [r1, #0x34] -_021D5298: - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_021D52A0: .word 0x02216270 -_021D52A4: .word 0x02216278 -_021D52A8: .word 0x02216284 -_021D52AC: .word 0x02216288 - arm_func_end ov4_021D515C - - arm_func_start ov4_021D52B0 -ov4_021D52B0: ; 0x021D52B0 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - mov r8, r1 - add r0, r0, #0x1000 - ldmib r8, {r1, r4} - cmp r4, r1 - ldr r4, [r0, #0x10] - ldr r5, [r0, #0x14] - mov r7, r2 - mov r6, r3 - movgt r0, #0 - ldmgtia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, r7 - bl strlen - mov r1, r0 - ldr r0, _021D53F4 ; =0x0221628C - add r1, r1, #1 - blx r4 - ldr r2, [r8] - ldr r1, [r8, #8] - str r0, [r2, r1, lsl #3] - ldr r1, [r8, #8] - ldr r2, [r8] - ldr r0, [r2, r1, lsl #3] - cmp r0, #0 - beq _021D538C - mov r0, r6 - bl strlen - mov r1, r0 - ldr r0, _021D53F8 ; =0x022162AC - add r1, r1, #1 - blx r4 - ldr r2, [r8] - ldr r1, [r8, #8] - add r1, r2, r1, lsl #3 - str r0, [r1, #4] - ldr r1, [r8, #8] - ldr r2, [r8] - add r0, r2, r1, lsl #3 - ldr r0, [r0, #4] - cmp r0, #0 - beq _021D538C - ldr r0, [r2, r1, lsl #3] - mov r1, r7 - bl strcpy - ldr r2, [r8] - ldr r0, [r8, #8] - mov r1, r6 - add r0, r2, r0, lsl #3 - ldr r0, [r0, #4] - bl strcpy - ldr r1, [r8, #8] - mov r0, #1 - add r1, r1, #1 - str r1, [r8, #8] - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_021D538C: - ldr r1, [r2, r1, lsl #3] - cmp r1, #0 - beq _021D53B4 - ldr r0, _021D53FC ; =0x022162CC - mov r2, #0 - blx r5 - ldr r1, [r8] - ldr r0, [r8, #8] - mov r2, #0 - str r2, [r1, r0, lsl #3] -_021D53B4: - ldr r1, [r8] - ldr r0, [r8, #8] - add r0, r1, r0, lsl #3 - ldr r1, [r0, #4] - cmp r1, #0 - beq _021D53EC - ldr r0, _021D5400 ; =0x022162E8 - mov r2, #0 - blx r5 - ldr r1, [r8] - ldr r0, [r8, #8] - mov r2, #0 - add r0, r1, r0, lsl #3 - str r2, [r0, #4] -_021D53EC: - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_021D53F4: .word 0x0221628C -_021D53F8: .word 0x022162AC -_021D53FC: .word 0x022162CC -_021D5400: .word 0x022162E8 - arm_func_end ov4_021D52B0 - - arm_func_start DWC_Http_ParseResult -DWC_Http_ParseResult: ; 0x021D5404 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x10 - mov r4, r0 - add r0, r4, #0x238 - mov r6, r1 - add r0, r0, #0x1800 - mov r3, #0x20 - mov r1, #0 - mov r2, #0x100 - str r0, [sp, #4] - str r3, [sp, #8] - str r1, [sp, #0xc] - bl MI_CpuFill8 - add r0, r4, #0x1000 - ldr r5, [r0, #0xa08] - ldr r1, _021D5684 ; =0x02216144 - mov r0, r5 - bl strstr - str r0, [sp] - cmp r0, #0 - addeq sp, sp, #0x10 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r0, r0, #4 - bl strlen - ldr r1, [sp] - add r1, r1, #4 - add fp, r1, r0 - ldr r1, _021D5688 ; =0x02216304 - mov r0, r5 - bl strstr - movs r7, r0 - addeq sp, sp, #0x10 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrsb sb, [r7, #4] - ldr r2, _021D568C ; =0x02216308 - mov r5, #0 - add r1, sp, #4 - mov r0, r4 - add r3, r7, #1 - strb r5, [r7, #4] - bl ov4_021D52B0 - cmp r0, #1 - addne sp, sp, #0x10 - strb sb, [r7, #4] - movne r0, r5 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r6, #1 - beq _021D54E4 - ldr r1, _021D5690 ; =0x02216314 - add r0, r7, #1 - mov r2, #3 - bl strncmp - cmp r0, #0 - beq _021D54F0 -_021D54E4: - add sp, sp, #0x10 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021D54F0: - ldr r1, _021D5694 ; =0x02216174 - add r0, r7, #5 - bl strstr - cmp r0, #0 - addeq sp, sp, #0x10 - moveq r0, r5 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - add sb, r0, #2 - b _021D55A4 -_021D5514: - ldr r1, _021D5698 ; =0x02216318 - mov r0, sb - bl strstr - movs r6, r0 - beq _021D55B8 - ldrsb r7, [r6] - mov r1, #0 - add sl, r6, #2 - strb r1, [r6] - ldr r1, _021D5694 ; =0x02216174 - mov r0, sl - bl strstr - movs r5, r0 - streqb r7, [r6] - beq _021D55B8 - ldrsb r8, [r5] - mov r1, #0 - mov r2, sb - strb r1, [r5] - mov r0, r4 - add r1, sp, #4 - mov r3, sl - bl ov4_021D52B0 - cmp r0, #1 - beq _021D558C - strb r7, [r6] - add sp, sp, #0x10 - strb r8, [r5] - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021D558C: - mov r0, sl - bl strlen - strb r7, [r6] - add r0, sl, r0 - strb r8, [r5] - add sb, r0, #2 -_021D55A4: - ldrsb r0, [sb] - cmp r0, #0xd - ldrnesb r0, [sb, #1] - cmpne r0, #0xa - bne _021D5514 -_021D55B8: - ldr r0, [sp] - add r7, r0, #4 - cmp r7, fp - bhs _021D5678 -_021D55C8: - ldr r1, _021D569C ; =0x0221631C - mov r0, r7 - bl strstr - movs r5, r0 - beq _021D5678 - ldrsb sb, [r5] - mov r1, #0 - add r6, r5, #1 - strb r1, [r5] - ldr r1, _021D56A0 ; =0x02216320 - mov r0, r6 - bl strstr - movs sl, r0 - bne _021D5610 - ldr r1, _021D5694 ; =0x02216174 - mov r0, r6 - bl strstr - mov sl, r0 -_021D5610: - cmp sl, #0 - ldrnesb r8, [sl] - movne r0, #0 - mov r2, r7 - strneb r0, [sl] - mov r0, r4 - add r1, sp, #4 - mov r3, r6 - bl ov4_021D52B0 - cmp r0, #1 - beq _021D5654 - strb sb, [r5] - cmp sl, #0 - add sp, sp, #0x10 - strneb r8, [sl] - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021D5654: - mov r0, r6 - bl strlen - add r0, r6, r0 - strb sb, [r5] - cmp sl, #0 - add r7, r0, #1 - strneb r8, [sl] - cmp r7, fp - blo _021D55C8 -_021D5678: - mov r0, #1 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_021D5684: .word 0x02216144 -_021D5688: .word 0x02216304 -_021D568C: .word 0x02216308 -_021D5690: .word 0x02216314 -_021D5694: .word 0x02216174 -_021D5698: .word 0x02216318 -_021D569C: .word 0x0221631C -_021D56A0: .word 0x02216320 - arm_func_end DWC_Http_ParseResult - - arm_func_start DWC_Http_GetResult -DWC_Http_GetResult: ; 0x021D56A4 - stmfd sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, #0 -_021D56B4: - add r0, r6, r4, lsl #3 - add r0, r0, #0x1000 - ldr r1, [r0, #0xa38] - cmp r1, #0 - beq _021D56F4 - mov r0, r5 - bl strcmp - cmp r0, #0 - bne _021D56E8 - add r0, r6, r4, lsl #3 - add r0, r0, #0x1000 - ldr r0, [r0, #0xa3c] - ldmia sp!, {r4, r5, r6, pc} -_021D56E8: - add r4, r4, #1 - cmp r4, #0x20 - blt _021D56B4 -_021D56F4: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end DWC_Http_GetResult - - arm_func_start DWC_Http_GetBase64DecodedResult -DWC_Http_GetBase64DecodedResult: ; 0x021D56FC - stmfd sp!, {r4, r5, r6, lr} - mov r6, r2 - mov r5, r3 - bl DWC_Http_GetResult - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - bl strlen - mov r1, r0 - mov r0, r4 - mov r2, r6 - mov r3, r5 - bl DWC_Auth_Base64Decode - mvn r1, #0 - cmp r0, r1 - ldmeqia sp!, {r4, r5, r6, pc} - cmp r0, r5 - ldmhsia sp!, {r4, r5, r6, pc} - mov r1, #0 - strb r1, [r6, r0] - ldmia sp!, {r4, r5, r6, pc} - arm_func_end DWC_Http_GetBase64DecodedResult - - arm_func_start DWC_Http_GetRawResult -DWC_Http_GetRawResult: ; 0x021D5750 - stmfd sp!, {r4, r5, r6, lr} - mov r6, r2 - mov r5, r3 - bl DWC_Http_GetResult - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - bl strlen - cmp r0, r5 - movge r0, #0 - ldmgeia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r1, r4 - bl strcpy - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end DWC_Http_GetRawResult - - arm_func_start ov4_021D5790 -ov4_021D5790: ; 0x021D5790 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - add r0, r0, #0x1000 - ldr r6, [r0, #0x14] - mov sb, r2 - mov sl, r1 - mov r8, #0 - cmp sb, #0 - ldmleia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr fp, _021D5810 ; =0x02216324 - ldr r7, _021D5814 ; =0x02216340 - mov r5, r8 - mov r4, r8 -_021D57C0: - ldr r1, [sl, r8, lsl #3] - cmp r1, #0 - beq _021D57DC - mov r0, fp - mov r2, #0 - blx r6 - str r5, [sl, r8, lsl #3] -_021D57DC: - add r0, sl, r8, lsl #3 - ldr r1, [r0, #4] - cmp r1, #0 - beq _021D5800 - mov r0, r7 - mov r2, #0 - blx r6 - add r0, sl, r8, lsl #3 - str r4, [r0, #4] -_021D5800: - add r8, r8, #1 - cmp r8, sb - blt _021D57C0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_021D5810: .word 0x02216324 -_021D5814: .word 0x02216340 - arm_func_end ov4_021D5790 - - .data - - - .global Unk_ov4_022160D0 -Unk_ov4_022160D0: ; 0x022160D0 - .word Unk_ov4_02216F08 - .word Unk_ov4_02216DDC - .word Unk_ov4_022170BC - .word Unk_ov4_02217198 - .word Unk_ov4_02216674 - .word Unk_ov4_02216910 - .word Unk_ov4_022169F8 - .word Unk_ov4_022167C0 - .word Unk_ov4_02216CC4 - .word Unk_ov4_02216BA4 - .word Unk_ov4_02217274 - .word Unk_ov4_02216ABC - - .global Unk_ov4_02216100 -Unk_ov4_02216100: ; 0x02216100 - .asciz "ALLOC http->lowrecvbuf" - .byte 0x0 - - .global Unk_ov4_02216118 -Unk_ov4_02216118: ; 0x02216118 - .asciz "ALLOC http->lowsendbuf" - .byte 0x0 - - .global Unk_ov4_02216130 -Unk_ov4_02216130: ; 0x02216130 - .asciz "Connection" - .byte 0x0 - - .global Unk_ov4_0221613C -Unk_ov4_0221613C: ; 0x0221613C - .asciz "close" - .short 0x0 - - .global Unk_ov4_02216144 -Unk_ov4_02216144: ; 0x02216144 - .byte 0xD, 0xA - .byte 0xD, 0xA - .word 0x0 - - .global Unk_ov4_0221614C -Unk_ov4_0221614C: ; 0x0221614C - .ascii "%d" - .short 0x0 - - .global Unk_ov4_02216150 -Unk_ov4_02216150: ; 0x02216150 - .ascii "Content-Length" - .short 0x0 - - .global Unk_ov4_02216160 -Unk_ov4_02216160: ; 0x02216160 - .ascii "Content-Length: " - .word 0x0 - - .global Unk_ov4_02216174 -Unk_ov4_02216174: ; 0x02216174 - .byte 0xD, 0xA - .short 0x0 - - .global Unk_ov4_02216178 -Unk_ov4_02216178: ; 0x02216178 - .asciz "FREE http->lowrecvbuf" - .short 0x0 - - .global Unk_ov4_02216190 -Unk_ov4_02216190: ; 0x02216190 - .asciz "FREE http->lowsendbuf" - .short 0x0 - - .global Unk_ov4_022161A8 -Unk_ov4_022161A8: ; 0x022161A8 - .ascii "POST /%s HTTP/1.0" - .byte 0xD, 0xA - .ascii "Content-type: application/x-www-form-urlencoded" - .byte 0xD, 0xA - .ascii "Host: %s" - .byte 0xD, 0xA - .byte 0xD, 0xA - .word 0x0 - - .global Unk_ov4_022161FC -Unk_ov4_022161FC: ; 0x022161FC - .ascii "GET /%s HTTP/1.0" - .byte 0xD, 0xA - .ascii "Host: %s" - .byte 0xD, 0xA - .byte 0xD, 0xA - .short 0x0 - - .global Unk_ov4_0221621C -Unk_ov4_0221621C: ; 0x0221621C - .ascii "%s: %s" - .byte 0xD, 0xA - .word 0x0 - - .global Unk_ov4_02216228 -Unk_ov4_02216228: ; 0x02216228 - .asciz "%s=" - - .global Unk_ov4_0221622C -Unk_ov4_0221622C: ; 0x0221622C - .ascii "&%s=" - .word 0x0 - - .global Unk_ov4_02216234 -Unk_ov4_02216234: ; 0x02216234 - .ascii "%s" - .short 0x0 - - .global Unk_ov4_02216238 -Unk_ov4_02216238: ; 0x02216238 - .asciz "ALLOC buf->buffer" - .short 0x0 - - .global Unk_ov4_0221624C -Unk_ov4_0221624C: ; 0x0221624C - .ascii "FREE buf->buffer" - .word 0x0 - - .global Unk_ov4_02216260 -Unk_ov4_02216260: ; 0x02216260 - .ascii "ALLOC newptr" - .word 0x0 - - .global Unk_ov4_02216270 -Unk_ov4_02216270: ; 0x02216270 - .asciz "http://" - - .global Unk_ov4_02216278 -Unk_ov4_02216278: ; 0x02216278 - .ascii "https://" - .word 0x0 - - .global Unk_ov4_02216284 -Unk_ov4_02216284: ; 0x02216284 - .asciz ":" - .short 0x0 - - .global Unk_ov4_02216288 -Unk_ov4_02216288: ; 0x02216288 - .asciz "/" - .short 0x0 - - .global Unk_ov4_0221628C -Unk_ov4_0221628C: ; 0x0221628C - .ascii "ALLOC result->entry[i].label" - .word 0x0 - - .global Unk_ov4_022162AC -Unk_ov4_022162AC: ; 0x022162AC - .ascii "ALLOC result->entry[i].value" - .word 0x0 - - .global Unk_ov4_022162CC -Unk_ov4_022162CC: ; 0x022162CC - .asciz "FREE result->entry[i].label" - - .global Unk_ov4_022162E8 -Unk_ov4_022162E8: ; 0x022162E8 - .asciz "FREE result->entry[i].value" - - .global Unk_ov4_02216304 -Unk_ov4_02216304: ; 0x02216304 - .asciz " " - .short 0x0 - - .global Unk_ov4_02216308 -Unk_ov4_02216308: ; 0x02216308 - .ascii "httpresult" - .short 0x0 - - .global Unk_ov4_02216314 -Unk_ov4_02216314: ; 0x02216314 - .asciz "200" - - .global Unk_ov4_02216318 -Unk_ov4_02216318: ; 0x02216318 - .ascii ": " - .short 0x0 - - .global Unk_ov4_0221631C -Unk_ov4_0221631C: ; 0x0221631C - .asciz "=" - .short 0x0 - - .global Unk_ov4_02216320 -Unk_ov4_02216320: ; 0x02216320 - .asciz "&" - .short 0x0 - - .global Unk_ov4_02216324 -Unk_ov4_02216324: ; 0x02216324 - .asciz "FREE array_entry[i].label" - .short 0x0 - - .global Unk_ov4_02216340 -Unk_ov4_02216340: ; 0x02216340 - .asciz "FREE array_entry[i].value" - .short 0x0 - - - - .bss - - - .global Unk_ov4_0221A434 -Unk_ov4_0221A434: ; 0x0221A434 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/auth/asm/dwc_nastime.s b/subprojects/NitroDWC/libraries/auth/asm/dwc_nastime.s deleted file mode 100644 index 14474be019..0000000000 --- a/subprojects/NitroDWC/libraries/auth/asm/dwc_nastime.s +++ /dev/null @@ -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 - diff --git a/subprojects/NitroDWC/libraries/auth/asm/dwc_netcheck.s b/subprojects/NitroDWC/libraries/auth/asm/dwc_netcheck.s deleted file mode 100644 index 9605b5ad6a..0000000000 --- a/subprojects/NitroDWC/libraries/auth/asm/dwc_netcheck.s +++ /dev/null @@ -1,1480 +0,0 @@ - .include "macros/function.inc" - .include "include/dwc_netcheck.inc" - - .extern OSi_ThreadInfo - .extern errno - - .extern Unk_ov4_02215EA0 - .text - - - arm_func_start DWC_Netcheck_Create -DWC_Netcheck_Create: ; 0x021D5818 - stmfd sp!, {r3, r4, r5, lr} - ldr r1, _021D58E0 ; =0x0221A438 - mov r5, r0 - ldr r0, [r1, #0] - ldr r4, [r5, #0] - cmp r0, #0 - movne r0, #4 - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, _021D58E4 ; =0x02216384 - ldr r1, _021D58E8 ; =0x000011F4 - blx r4 - ldr r1, _021D58E0 ; =0x0221A438 - cmp r0, #0 - str r0, [r1, #0] - moveq r0, #4 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r2, _021D58E8 ; =0x000011F4 - mov r1, #0 - bl MI_CpuFill8 - ldr ip, _021D58E0 ; =0x0221A438 - ldr r1, _021D58EC ; =0xFFFE7961 - ldr r0, [ip] - add r0, r0, #0x1000 - str r1, [r0, #4] - ldr r3, [ip] - ldmia r5, {r0, r1, r2} - add r3, r3, #0x108 - add r3, r3, #0x1000 - stmia r3, {r0, r1, r2} - ldr r0, [ip, #0x14] - cmp r0, #0 - movne r0, #4 - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, _021D58F0 ; =0x02216398 - ldr r1, _021D58F4 ; =0x00001C14 - blx r4 - ldr r1, _021D58E0 ; =0x0221A438 - cmp r0, #0 - str r0, [r1, #0x14] - moveq r0, #4 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, #0 - str r0, [r1, #4] - ldr r0, [r1, #0] - add r0, r0, #0x1dc - add r0, r0, #0x1000 - bl OS_InitMutex - bl ov4_021D5AB0 - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_021D58E0: .word Unk_ov4_0221A438 -_021D58E4: .word Unk_ov4_02216384 -_021D58E8: .word 0x000011F4 -_021D58EC: .word 0xFFFE7961 -_021D58F0: .word Unk_ov4_02216398 -_021D58F4: .word 0x00001C14 - arm_func_end DWC_Netcheck_Create - - arm_func_start DWC_Netcheck_Destroy -DWC_Netcheck_Destroy: ; 0x021D58F8 - stmfd sp!, {r4, lr} - ldr r0, _021D59DC ; =0x0221A438 - ldr r1, [r0, #0] - ldr r0, [r0, #0x14] - add r1, r1, #0x1000 - cmp r0, #0 - ldr r4, [r1, #0x10c] - beq _021D593C - bl DWC_Http_Destroy - ldr r1, _021D59DC ; =0x0221A438 - ldr r0, _021D59E0 ; =0x022163A8 - ldr r1, [r1, #0x14] - mov r2, #0 - blx r4 - ldr r0, _021D59DC ; =0x0221A438 - mov r1, #0 - str r1, [r0, #0x14] -_021D593C: - bl DWC_Auth_Destroy - ldr r0, _021D59DC ; =0x0221A438 - ldr r0, [r0, #0] - cmp r0, #0 - ldmeqia sp!, {r4, pc} - add r0, r0, #0x1000 - ldr r1, [r0, #0x114] - cmp r1, #0 - beq _021D5980 - ldr r0, _021D59E4 ; =0x022163B8 - mov r2, #0 - blx r4 - ldr r0, _021D59DC ; =0x0221A438 - mov r1, #0 - ldr r0, [r0, #0] - add r0, r0, #0x1000 - str r1, [r0, #0x114] -_021D5980: - ldr r0, _021D59DC ; =0x0221A438 - ldr r0, [r0, #0] - add r0, r0, #0x1000 - ldr r1, [r0, #0x118] - cmp r1, #0 - beq _021D59B8 - ldr r0, _021D59E8 ; =0x022163D4 - mov r2, #0 - blx r4 - ldr r0, _021D59DC ; =0x0221A438 - mov r1, #0 - ldr r0, [r0, #0] - add r0, r0, #0x1000 - str r1, [r0, #0x118] -_021D59B8: - ldr r1, _021D59DC ; =0x0221A438 - ldr r0, _021D59EC ; =0x022163F4 - ldr r1, [r1, #0] - mov r2, #0 - blx r4 - ldr r0, _021D59DC ; =0x0221A438 - mov r1, #0 - str r1, [r0, #0] - ldmia sp!, {r4, pc} - ; .align 2, 0 -_021D59DC: .word Unk_ov4_0221A438 -_021D59E0: .word Unk_ov4_022163A8 -_021D59E4: .word Unk_ov4_022163B8 -_021D59E8: .word Unk_ov4_022163D4 -_021D59EC: .word Unk_ov4_022163F4 - arm_func_end DWC_Netcheck_Destroy - - arm_func_start DWC_Netcheck_Abort -DWC_Netcheck_Abort: ; 0x021D59F0 - stmfd sp!, {r3, lr} - ldr r0, _021D5A54 ; =0x0221A438 - ldr r1, [r0, #0] - cmp r1, #0 - ldmeqia sp!, {r3, pc} - ldr r0, [r0, #0x14] - cmp r0, #0 - beq _021D5A14 - bl DWC_Http_Abort -_021D5A14: - bl DWC_Auth_Abort - ldr r0, _021D5A54 ; =0x0221A438 - ldr r1, [r0, #0] - add r0, r1, #0x1000 - ldr r0, [r0, #0x188] - cmp r0, #0 - beq _021D5A3C - add r0, r1, #0x11c - add r0, r0, #0x1000 - bl OS_JoinThread -_021D5A3C: - ldr r0, _021D5A54 ; =0x0221A438 - mvn r1, #6 - ldr r0, [r0, #0] - add r0, r0, #0x1000 - str r1, [r0, #4] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_021D5A54: .word Unk_ov4_0221A438 - arm_func_end DWC_Netcheck_Abort - - arm_func_start DWC_Netcheck_GetError -DWC_Netcheck_GetError: ; 0x021D5A58 - stmfd sp!, {r4, lr} - ldr r0, _021D5A94 ; =0x0221A438 - ldr r0, [r0, #0] - add r0, r0, #0x1dc - add r0, r0, #0x1000 - bl OS_LockMutex - ldr r0, _021D5A94 ; =0x0221A438 - ldr r1, [r0, #0] - add r0, r1, #0x1dc - add r1, r1, #0x1000 - add r0, r0, #0x1000 - ldr r4, [r1, #0] - bl OS_UnlockMutex - mov r0, r4 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_021D5A94: .word Unk_ov4_0221A438 - arm_func_end DWC_Netcheck_GetError - - arm_func_start DWC_Netcheck_GetReturnCode -DWC_Netcheck_GetReturnCode: ; 0x021D5A98 - ldr r0, _021D5AAC ; =0x0221A438 - ldr r0, [r0, #0] - add r0, r0, #0x1000 - ldr r0, [r0, #4] - bx lr - ; .align 2, 0 -_021D5AAC: .word Unk_ov4_0221A438 - arm_func_end DWC_Netcheck_GetReturnCode - - arm_func_start ov4_021D5AB0 -ov4_021D5AB0: ; 0x021D5AB0 - stmfd sp!, {r3, lr} - sub sp, sp, #8 - ldr r0, _021D5B30 ; =0x0221A438 - ldr r1, [r0, #0] - add r0, r1, #0x1000 - ldr r0, [r0, #0x188] - cmp r0, #0 - beq _021D5AE8 - add r0, r1, #0x11c - add r0, r0, #0x1000 - bl OS_IsThreadTerminated - cmp r0, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r3, pc} -_021D5AE8: - ldr r0, _021D5B30 ; =0x0221A438 - mov r3, #0x1000 - ldr r2, [r0, #0] - ldr r1, _021D5B34 ; =ov4_021D5B38 - add r0, r2, #0x11c - str r3, [sp] - mov ip, #0x10 - add r0, r0, #0x1000 - add r3, r2, #0x1000 - str ip, [sp, #4] - bl OS_CreateThread - ldr r0, _021D5B30 ; =0x0221A438 - ldr r0, [r0, #0] - add r0, r0, #0x11c - add r0, r0, #0x1000 - bl OS_WakeupThreadDirect - add sp, sp, #8 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_021D5B30: .word Unk_ov4_0221A438 -_021D5B34: .word ov4_021D5B38 - arm_func_end ov4_021D5AB0 - - arm_func_start ov4_021D5B38 -ov4_021D5B38: ; 0x021D5B38 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x29c - ldr r5, _021D69BC ; =0x0221A438 - mov sb, #0 - ldr r0, [r5, #0] - mov fp, sb - add r0, r0, #0x1000 - ldr r7, [r0, #0x108] - ldr r8, [r0, #0x10c] - mvn r0, #2 - str r0, [sp, #0x20] - sub r0, r0, #1 - str r0, [sp, #0x24] - ldr r0, [sp, #0x20] - mov sl, sb - sub r0, r0, #2 - str r0, [sp, #0x28] - ldr r0, _021D69C0 ; =0x00009C40 - mov r4, sb - mov r0, r0, lsr #1 - str r0, [sp, #0x18] - ldr r0, [sp, #0x20] - add r0, r0, #1 - str r0, [sp, #0x1c] -_021D5B98: - ldr r0, _021D69C4 ; =0x0221635C - ldr r1, _021D69C8 ; =0x0221A450 - ldr r0, [r0, #0] - str r0, [r5, #0x18] - mov r0, #1 - str r0, [r5, #0x1c] - mov r0, #0x1000 - str r0, [r5, #0x20] - str r7, [r5, #0x24] - ldr r0, [sp, #0x18] - str r8, [r5, #0x28] - str r0, [r5, #0x30] - ldr r0, [r5, #0] - add r2, r0, #0x1000 - ldr r0, [sp, #0x1c] - str r0, [r2, #4] - ldr r0, [r5, #0x14] - bl DWC_Http_Create - cmp r0, #0 - beq _021D5C00 - ldr r0, _021D69BC ; =0x0221A438 - ldr r0, [r0, #0x14] - bl DWC_Http_Destroy - mov r0, #1 - bl ov4_021D6A44 - b _021D6968 -_021D5C00: - ldr r0, [r5, #0x14] - bl DWC_Http_FinishHeader - cmp r0, #0 - beq _021D5C28 - ldr r0, _021D69BC ; =0x0221A438 - ldr r0, [r0, #0x14] - bl DWC_Http_Destroy - mov r0, #1 - bl ov4_021D6A44 - b _021D6968 -_021D5C28: - ldr r0, _021D69CC ; =0x021CCC80 - ldr r0, [r0, #4] - bl OS_GetThreadPriority - sub r1, r0, #1 - ldr r0, [r5, #0x14] - bl DWC_Http_StartThread - ldr r1, [r5, #0x14] - add r0, r1, #0x1000 - ldr r0, [r0, #0xba4] - cmp r0, #0 - beq _021D5C60 - add r0, r1, #0x338 - add r0, r0, #0x1800 - bl OS_JoinThread -_021D5C60: - ldr r0, [r5, #0x14] - add r1, r0, #0x1000 - ldr r1, [r1, #0x20] - cmp r1, #2 - beq _021D5C80 - cmp r1, #8 - beq _021D5CAC - b _021D5C94 -_021D5C80: - ldr r0, _021D69BC ; =0x0221A438 - mvn r1, #0 - ldr r0, [r0, #0] - add r0, r0, #0x1000 - str r1, [r0, #4] -_021D5C94: - ldr r0, _021D69BC ; =0x0221A438 - ldr r0, [r0, #0x14] - bl DWC_Http_Destroy - mov r0, #3 - bl ov4_021D6A44 - b _021D6968 -_021D5CAC: - mov r1, #0 - bl DWC_Http_ParseResult - cmp r0, #1 - beq _021D5CD4 - ldr r0, _021D69BC ; =0x0221A438 - ldr r0, [r0, #0x14] - bl DWC_Http_Destroy - mov r0, #2 - bl ov4_021D6A44 - b _021D6968 -_021D5CD4: - ldr r0, [r5, #0x14] - ldr r1, _021D69D0 ; =0x02216470 - bl DWC_Http_GetResult - bl atoi - mov r6, r0 - ldr r0, _021D69D4 ; =0x021D0D40 - ldr r0, [r0, #0] - cmp r0, #0x22 - bne _021D5D04 - mov r0, #2 - bl ov4_021D6A44 - b _021D6968 -_021D5D04: - cmp r6, #0xc8 - beq _021D5D1C - ldr r0, _021D69D8 ; =0x0000012E - cmp r6, r0 - beq _021D5D30 - b _021D6018 -_021D5D1C: - ldr r0, [r5, #0x14] - add r0, r0, #0x1000 - ldr r0, [r0, #0x12c] - str r0, [r5, #8] - b _021D6030 -_021D5D30: - mov r0, #1 - str r0, [r5, #4] - ldr r0, [r5, #0] - add r0, r0, #0x1000 - ldr r1, [r0, #0x118] - cmp r1, #0 - beq _021D5F80 - ldr r1, _021D69BC ; =0x0221A438 - mvn r2, #5 - str r2, [r0, #4] - ldr r0, [r1, #0x14] - bl DWC_Http_Destroy - ldr r0, _021D69DC ; =0x02215EA0 - ldr r2, _021D69BC ; =0x0221A438 - ldr r0, [r0, #0] - mov r1, #0 - str r0, [r2, #0x18] - str r1, [r2, #0x1c] - mov r1, #0x200 - str r1, [r2, #0x20] - str r7, [r2, #0x24] - ldr r3, _021D69E0 ; =0x00004E20 - str r8, [r2, #0x28] - ldr r1, _021D69E4 ; =0x0221647C - str r3, [r2, #0x30] - bl strcmp - cmp r0, #0 - ldrne r0, _021D69BC ; =0x0221A438 - movne r1, #1 - strne r1, [r0, #0x2c] - ldr r0, _021D69BC ; =0x0221A438 - ldr r1, _021D69C8 ; =0x0221A450 - ldr r0, [r0, #0x14] - bl DWC_Http_Create - cmp r0, #0 - beq _021D5DD8 - ldr r0, _021D69BC ; =0x0221A438 - ldr r0, [r0, #0x14] - bl DWC_Http_Destroy - mov r0, #1 - bl ov4_021D6A44 - b _021D6968 -_021D5DD8: - add r0, sp, #0x44 - bl DWC_Auth_GetCalInfoFromNVRAM - cmp r0, #0 - beq _021D5E04 - ldr r0, _021D69BC ; =0x0221A438 - add r1, sp, #0x44 - ldr r0, [r0, #0x14] - mov r2, #1 - bl DWC_Auth_SetCalInfoToHttp - cmp r0, #0 - bne _021D5E1C -_021D5E04: - ldr r0, _021D69BC ; =0x0221A438 - ldr r0, [r0, #0x14] - bl DWC_Http_Destroy - mov r0, #8 - bl ov4_021D6A44 - b _021D6968 -_021D5E1C: - ldr r0, _021D69BC ; =0x0221A438 - ldr r1, _021D69E8 ; =0x0221649C - ldr r0, [r0, #0x14] - ldr r2, _021D69EC ; =0x022164A4 - mov r3, #7 - bl DWC_Http_Add_PostBase64Item - cmp r0, #0 - bne _021D5E74 - ldr r0, _021D69BC ; =0x0221A438 - ldr r0, [r0, #0] - add r0, r0, #0x1000 - ldr r4, [r0, #0x118] - mov r0, r4 - bl strlen - ldr r1, _021D69BC ; =0x0221A438 - mov r3, r0 - ldr r0, [r1, #0x14] - ldr r1, _021D69F0 ; =0x022164AC - mov r2, r4 - bl DWC_Http_Add_PostBase64Item - cmp r0, #0 - beq _021D5E8C -_021D5E74: - ldr r0, _021D69BC ; =0x0221A438 - ldr r0, [r0, #0x14] - bl DWC_Http_Destroy - mov r0, #8 - bl ov4_021D6A44 - b _021D6968 -_021D5E8C: - ldr r1, _021D69BC ; =0x0221A438 - ldr r0, _021D69F4 ; =0x022163D4 - ldr r1, [r1, #0] - mov r2, #0 - add r1, r1, #0x1000 - ldr r1, [r1, #0x118] - blx r8 - ldr r1, _021D69BC ; =0x0221A438 - mov r2, #0 - ldr r0, [r1, #0] - add r0, r0, #0x1000 - str r2, [r0, #0x118] - ldr r0, [r1, #0x14] - bl DWC_Http_FinishHeader - cmp r0, #0 - beq _021D5EE4 - ldr r0, _021D69BC ; =0x0221A438 - ldr r0, [r0, #0x14] - bl DWC_Http_Destroy - mov r0, #1 - bl ov4_021D6A44 - b _021D6968 -_021D5EE4: - ldr r0, _021D69CC ; =0x021CCC80 - ldr r0, [r0, #4] - bl OS_GetThreadPriority - ldr r2, _021D69BC ; =0x0221A438 - sub r1, r0, #1 - ldr r0, [r2, #0x14] - bl DWC_Http_StartThread - ldr r0, _021D69BC ; =0x0221A438 - ldr r1, [r0, #0x14] - add r0, r1, #0x1000 - ldr r0, [r0, #0xba4] - cmp r0, #0 - beq _021D5F24 - add r0, r1, #0x338 - add r0, r0, #0x1800 - bl OS_JoinThread -_021D5F24: - ldr r2, _021D69BC ; =0x0221A438 - ldr r0, [r2, #0x14] - add r1, r0, #0x1000 - ldr r1, [r1, #0x20] - cmp r1, #2 - beq _021D5F48 - cmp r1, #8 - beq _021D5F70 - b _021D5F58 -_021D5F48: - ldr r0, [r2, #0] - mvn r1, #0 - add r0, r0, #0x1000 - str r1, [r0, #4] -_021D5F58: - ldr r0, _021D69BC ; =0x0221A438 - ldr r0, [r0, #0x14] - bl DWC_Http_Destroy - mov r0, #3 - bl ov4_021D6A44 - b _021D6968 -_021D5F70: - bl DWC_Http_Destroy - mov r0, #7 - bl ov4_021D6A44 - b _021D6968 -_021D5F80: - ldr r0, [r5, #0x14] - add r1, r0, #0x1000 - ldr r1, [r1, #0xa08] - str r1, [sp, #0x14] - cmp r1, #0 - bne _021D5FA8 - bl DWC_Http_Destroy - mov r0, #2 - bl ov4_021D6A44 - b _021D6968 -_021D5FA8: - mov r0, r1 - bl strlen - add r1, r0, #1 - ldr r0, _021D69F8 ; =0x02216408 - blx r7 - ldr r1, [r5, #0] - add r1, r1, #0x1000 - str r0, [r1, #0x114] - ldr r0, [r5, #0] - add r0, r0, #0x1000 - ldr r0, [r0, #0x114] - str r0, [sp, #4] - cmp r0, #0 - bne _021D5FF8 - ldr r0, _021D69BC ; =0x0221A438 - ldr r0, [r0, #0x14] - bl DWC_Http_Destroy - mov r0, #4 - bl ov4_021D6A44 - b _021D6968 -_021D5FF8: - ldr r0, [sp, #0x14] - bl strlen - mov r2, r0 - ldr r1, [sp, #0x14] - ldr r0, [sp, #4] - add r2, r2, #1 - bl strncpy - b _021D6030 -_021D6018: - ldr r0, _021D69BC ; =0x0221A438 - ldr r0, [r0, #0x14] - bl DWC_Http_Destroy - mov r0, #0xa - bl ov4_021D6A44 - b _021D6968 -_021D6030: - ldr r0, [r5, #0x14] - bl DWC_Http_Destroy - add r0, sp, #0x30 - bl sub_020A283C - ldr r2, [sp, #0x30] - ldr r1, [sp, #0x34] - mov r0, #0 - cmp r1, r0 - cmpeq r2, r4 - bne _021D6160 - ldr r1, [r5, #0] - ldr r0, _021D69FC ; =0x0221A46C - add r2, r1, #0x1000 - ldr r1, [sp, #0x20] - str r1, [r2, #4] - mov r1, #0 - strh r1, [r5, #0x34] - strb r1, [r5, #0x68] - ldr r1, [r5, #0] - add r1, r1, #0x1000 - ldr r2, [r1, #0x108] - str r2, [r5, #0x74] - ldr r1, [r1, #0x10c] - str r1, [r5, #0x78] - ldr r1, [r5, #0x14] - bl DWC_Auth_Create - cmp r0, #0 - beq _021D60AC - mov r0, #5 - bl ov4_021D6A44 - b _021D6968 -_021D60AC: - bl DWC_Auth_Join - bl DWC_Auth_GetError - cmp r0, #0x15 - beq _021D615C - bl DWC_Auth_GetError - cmp r0, #9 - bne _021D60E0 - ldr r0, _021D69BC ; =0x0221A438 - mvn r1, #0 - ldr r0, [r0, #0] - add r0, r0, #0x1000 - str r1, [r0, #4] - b _021D614C -_021D60E0: - add r0, sp, #0xd8 - bl DWC_Auth_GetResult - ldr r0, _021D69BC ; =0x0221A438 - ldr r0, [r0, #0xc] - cmp r0, #1 - bne _021D6138 - ldr r1, [sp, #0xd8] - ldr r0, _021D6A00 ; =0xFFFFA4FA - cmp r1, r0 - beq _021D6114 - bl DWC_Auth_GetError - cmp r0, #0xb - bne _021D6138 -_021D6114: - ldr r0, _021D69BC ; =0x0221A438 - mov r1, #0 - ldr r0, [r0, #0] - add r0, r0, #0x1000 - str r1, [r0, #4] - bl DWC_Auth_Destroy - mov r0, #0xb - bl ov4_021D6A44 - b _021D6968 -_021D6138: - ldr r0, _021D69BC ; =0x0221A438 - ldr r1, [sp, #0xd8] - ldr r0, [r0, #0] - add r0, r0, #0x1000 - str r1, [r0, #4] -_021D614C: - bl DWC_Auth_Destroy - mov r0, #6 - bl ov4_021D6A44 - b _021D6968 -_021D615C: - bl DWC_Auth_Destroy -_021D6160: - cmp r6, #0xc8 - bne _021D6188 - ldr r0, _021D69BC ; =0x0221A438 - mov r2, #0 - ldr r1, [r0, #0] - mov r0, #0xb - add r1, r1, #0x1000 - str r2, [r1, #4] - bl ov4_021D6A44 - b _021D6968 -_021D6188: - ldr r0, [r5, #0] - ldr r1, _021D69E4 ; =0x0221647C - add r2, r0, #0x1000 - ldr r0, [sp, #0x24] - str r0, [r2, #4] - ldr r0, _021D69DC ; =0x02215EA0 - mov r2, #0 - ldr r0, [r0, #0] - str r0, [r5, #0x18] - str r2, [r5, #0x1c] - mov r2, #0x1000 - str r2, [r5, #0x20] - str r7, [r5, #0x24] - ldr r2, _021D69C0 ; =0x00009C40 - str r8, [r5, #0x28] - str r2, [r5, #0x30] - bl strcmp - cmp r0, #0 - movne r0, #1 - strne r0, [r5, #0x2c] - ldr r0, [r5, #0x14] - ldr r1, _021D69C8 ; =0x0221A450 - bl DWC_Http_Create - cmp r0, #0 - beq _021D6204 - ldr r0, _021D69BC ; =0x0221A438 - ldr r0, [r0, #0x14] - bl DWC_Http_Destroy - mov r0, #1 - bl ov4_021D6A44 - b _021D6968 -_021D6204: - add r0, sp, #0x44 - bl DWC_Auth_GetCalInfoFromNVRAM - cmp r0, #0 - beq _021D622C - ldr r0, [r5, #0x14] - add r1, sp, #0x44 - mov r2, #1 - bl DWC_Auth_SetCalInfoToHttp - cmp r0, #0 - bne _021D6244 -_021D622C: - ldr r0, _021D69BC ; =0x0221A438 - ldr r0, [r0, #0x14] - bl DWC_Http_Destroy - mov r0, #8 - bl ov4_021D6A44 - b _021D6968 -_021D6244: - ldr r0, [r5, #0x14] - ldr r1, _021D69E8 ; =0x0221649C - ldr r2, _021D6A04 ; =0x022164BC - mov r3, #5 - bl DWC_Http_Add_PostBase64Item - cmp r0, #0 - bne _021D6290 - ldr r0, [r5, #0] - add r0, r0, #0x1000 - ldr r6, [r0, #0x114] - mov r0, r6 - bl strlen - mov r3, r0 - ldr r0, [r5, #0x14] - ldr r1, _021D6A08 ; =0x022164C4 - mov r2, r6 - bl DWC_Http_Add_PostBase64Item - cmp r0, #0 - beq _021D62A8 -_021D6290: - ldr r0, _021D69BC ; =0x0221A438 - ldr r0, [r0, #0x14] - bl DWC_Http_Destroy - mov r0, #8 - bl ov4_021D6A44 - b _021D6968 -_021D62A8: - ldr r1, [r5, #0] - ldr r0, _021D6A0C ; =0x022163B8 - add r1, r1, #0x1000 - ldr r1, [r1, #0x114] - mov r2, #0 - blx r8 - ldr r0, [r5, #0] - add r1, r0, #0x1000 - mov r0, #0 - str r0, [r1, #0x114] - ldr r0, [r5, #0x14] - bl DWC_Http_FinishHeader - cmp r0, #0 - beq _021D62F8 - ldr r0, _021D69BC ; =0x0221A438 - ldr r0, [r0, #0x14] - bl DWC_Http_Destroy - mov r0, #1 - bl ov4_021D6A44 - b _021D6968 -_021D62F8: - ldr r0, _021D69CC ; =0x021CCC80 - ldr r0, [r0, #4] - bl OS_GetThreadPriority - sub r1, r0, #1 - ldr r0, [r5, #0x14] - bl DWC_Http_StartThread - ldr r1, [r5, #0x14] - add r0, r1, #0x1000 - ldr r0, [r0, #0xba4] - cmp r0, #0 - beq _021D6330 - add r0, r1, #0x338 - add r0, r0, #0x1800 - bl OS_JoinThread -_021D6330: - ldr r0, [r5, #0x14] - add r1, r0, #0x1000 - ldr r1, [r1, #0x20] - cmp r1, #2 - beq _021D6394 - cmp r1, #3 - beq _021D6358 - cmp r1, #8 - beq _021D63C0 - b _021D63A8 -_021D6358: - bl DWC_Http_Destroy - ldr r0, _021D69BC ; =0x0221A438 - ldr r1, [r0, #0xc] - cmp r1, #1 - bne _021D6388 - ldr r0, [r0, #0] - mov r2, #0 - add r1, r0, #0x1000 - mov r0, #0xb - str r2, [r1, #4] - bl ov4_021D6A44 - b _021D6968 -_021D6388: - mov r0, #3 - bl ov4_021D6A44 - b _021D6968 -_021D6394: - ldr r0, _021D69BC ; =0x0221A438 - mvn r1, #0 - ldr r0, [r0, #0] - add r0, r0, #0x1000 - str r1, [r0, #4] -_021D63A8: - ldr r0, _021D69BC ; =0x0221A438 - ldr r0, [r0, #0x14] - bl DWC_Http_Destroy - mov r0, #3 - bl ov4_021D6A44 - b _021D6968 -_021D63C0: - mov r1, #0 - bl DWC_Http_ParseResult - cmp r0, #1 - beq _021D63E8 - ldr r0, _021D69BC ; =0x0221A438 - ldr r0, [r0, #0x14] - bl DWC_Http_Destroy - mov r0, #2 - bl ov4_021D6A44 - b _021D6968 -_021D63E8: - ldr r0, [r5, #0x14] - ldr r1, _021D69D0 ; =0x02216470 - bl DWC_Http_GetResult - bl atoi - mov r6, r0 - ldr r0, _021D69D4 ; =0x021D0D40 - ldr r0, [r0, #0] - cmp r0, #0x22 - bne _021D6424 - ldr r0, _021D69BC ; =0x0221A438 - ldr r0, [r0, #0x14] - bl DWC_Http_Destroy - mov r0, #2 - bl ov4_021D6A44 - b _021D6968 -_021D6424: - cmp r6, #0xc8 - beq _021D6478 - ldr r0, _021D69BC ; =0x0221A438 - ldr r0, [r0, #0x14] - bl DWC_Http_Destroy - ldr r1, _021D69BC ; =0x0221A438 - ldr r0, [r1, #0xc] - cmp r0, #1 - ldreq r0, _021D69D8 ; =0x0000012E - cmpeq r6, r0 - bne _021D646C - ldr r0, [r1, #0] - mov r2, #0 - add r1, r0, #0x1000 - mov r0, #0xb - str r2, [r1, #4] - bl ov4_021D6A44 - b _021D6968 -_021D646C: - mov r0, #2 - bl ov4_021D6A44 - b _021D6968 -_021D6478: - ldr r0, [r5, #0x14] - ldr r1, _021D6A10 ; =0x022164CC - add r2, sp, #0x2c - mov r3, #4 - bl DWC_Http_GetBase64DecodedResult - cmp r0, #0 - bgt _021D64AC - ldr r0, _021D69BC ; =0x0221A438 - ldr r0, [r0, #0x14] - bl DWC_Http_Destroy - mov r0, #9 - bl ov4_021D6A44 - b _021D6968 -_021D64AC: - add r0, sp, #0x2c - bl atoi - ldr r1, _021D69D4 ; =0x021D0D40 - ldr r1, [r1, #0] - cmp r1, #0x22 - bne _021D64DC - ldr r0, _021D69BC ; =0x0221A438 - ldr r0, [r0, #0x14] - bl DWC_Http_Destroy - mov r0, #9 - bl ov4_021D6A44 - b _021D6968 -_021D64DC: - ldr r1, [r5, #0xc] - cmp r1, #1 - cmpeq r0, #0x72 - bne _021D650C - ldr r0, _021D69BC ; =0x0221A438 - mov r2, #0 - ldr r1, [r0, #0] - mov r0, #0xb - add r1, r1, #0x1000 - str r2, [r1, #4] - bl ov4_021D6A44 - b _021D6968 -_021D650C: - cmp r0, #0x64 - blt _021D652C - ldr r0, _021D69BC ; =0x0221A438 - ldr r0, [r0, #0x14] - bl DWC_Http_Destroy - mov r0, #6 - bl ov4_021D6A44 - b _021D6968 -_021D652C: - mov r2, #0 - ldr r0, [r5, #0x14] - ldr r1, _021D6A14 ; =0x022164D8 - mov r3, r2 - bl DWC_Http_GetBase64DecodedResult - str r0, [sp, #0x10] - cmp r0, #0 - bgt _021D6564 - ldr r0, _021D69BC ; =0x0221A438 - ldr r0, [r0, #0x14] - bl DWC_Http_Destroy - mov r0, #9 - bl ov4_021D6A44 - b _021D6968 -_021D6564: - mov r2, #0 - ldr r0, [r5, #0x14] - ldr r1, _021D6A18 ; =0x022164DC - mov r3, r2 - bl DWC_Http_GetBase64DecodedResult - str r0, [sp, #0xc] - cmp r0, #0 - bgt _021D659C - ldr r0, _021D69BC ; =0x0221A438 - ldr r0, [r0, #0x14] - bl DWC_Http_Destroy - mov r0, #9 - bl ov4_021D6A44 - b _021D6968 -_021D659C: - mov r2, #0 - ldr r0, [r5, #0x14] - ldr r1, _021D6A1C ; =0x022164E4 - mov r3, r2 - bl DWC_Http_GetBase64DecodedResult - ldr r1, [sp, #0x10] - mov r6, r0 - ldr r0, _021D6A20 ; =0x02216424 - add r1, r1, #1 - blx r7 - movs sb, r0 - bne _021D65E4 - ldr r0, _021D69BC ; =0x0221A438 - ldr r0, [r0, #0x14] - bl DWC_Http_Destroy - mov r0, #4 - bl ov4_021D6A44 - b _021D6968 -_021D65E4: - ldr r1, [sp, #0xc] - ldr r0, _021D6A24 ; =0x02216430 - add r1, r1, #1 - blx r7 - movs fp, r0 - bne _021D6614 - ldr r0, _021D69BC ; =0x0221A438 - ldr r0, [r0, #0x14] - bl DWC_Http_Destroy - mov r0, #4 - bl ov4_021D6A44 - b _021D6968 -_021D6614: - cmp r6, #0 - ble _021D6648 - ldr r0, _021D6A28 ; =0x02216440 - add r1, r6, #1 - blx r7 - movs sl, r0 - bne _021D6648 - ldr r0, _021D69BC ; =0x0221A438 - ldr r0, [r0, #0x14] - bl DWC_Http_Destroy - mov r0, #4 - bl ov4_021D6A44 - b _021D6968 -_021D6648: - ldr r0, [sp, #0x10] - ldr r1, _021D6A14 ; =0x022164D8 - add r3, r0, #1 - ldr r0, [r5, #0x14] - mov r2, sb - bl DWC_Http_GetBase64DecodedResult - cmp r0, #0 - bge _021D6680 - ldr r0, _021D69BC ; =0x0221A438 - ldr r0, [r0, #0x14] - bl DWC_Http_Destroy - mov r0, #9 - bl ov4_021D6A44 - b _021D6968 -_021D6680: - ldr r1, [sp, #0xc] - mov r2, fp - add r3, r1, #1 - mov r1, #0 - strb r1, [sb, r0] - ldr r0, [r5, #0x14] - ldr r1, _021D6A18 ; =0x022164DC - bl DWC_Http_GetBase64DecodedResult - cmp r0, #0 - bge _021D66C0 - ldr r0, _021D69BC ; =0x0221A438 - ldr r0, [r0, #0x14] - bl DWC_Http_Destroy - mov r0, #9 - bl ov4_021D6A44 - b _021D6968 -_021D66C0: - mov r1, #0 - strb r1, [fp, r0] - mov r0, r1 - cmp r6, #0 - str r0, [sp, #8] - ble _021D675C - ldr r0, [r5, #0x14] - ldr r1, _021D6A1C ; =0x022164E4 - add r3, r6, #1 - mov r2, sl - bl DWC_Http_GetBase64DecodedResult - cmp r0, #0 - bge _021D670C - ldr r0, _021D69BC ; =0x0221A438 - ldr r0, [r0, #0x14] - bl DWC_Http_Destroy - mov r0, #9 - bl ov4_021D6A44 - b _021D6968 -_021D670C: - mov r1, #0 - strb r1, [sl, r0] - mov r0, sl - bl atoi - ldr r1, _021D69D4 ; =0x021D0D40 - ldr r1, [r1, #0] - cmp r1, #0x22 - bne _021D6744 - ldr r0, _021D69BC ; =0x0221A438 - ldr r0, [r0, #0x14] - bl DWC_Http_Destroy - mov r0, #9 - bl ov4_021D6A44 - b _021D6968 -_021D6744: - mov r1, #0x3e8 - mul r1, r0, r1 - ldr r0, _021D6A2C ; =0x0002BF20 - str r1, [sp, #8] - cmp r1, r0 - strgt r0, [sp, #8] -_021D675C: - ldr r0, [r5, #0x14] - bl DWC_Http_Destroy - ldr r0, [r5, #0] - ldr r1, _021D69C8 ; =0x0221A450 - add r2, r0, #0x1000 - ldr r0, [sp, #0x28] - str r0, [r2, #4] - str sb, [r5, #0x18] - mov r0, #0 - str r0, [r5, #0x1c] - mov r0, #0x1000 - str r0, [r5, #0x20] - str r7, [r5, #0x24] - ldr r0, _021D6A30 ; =0x0001D4C0 - str r8, [r5, #0x28] - str r0, [r5, #0x30] - ldr r0, [r5, #0x14] - bl DWC_Http_Create - cmp r0, #0 - beq _021D67C4 - ldr r0, _021D69BC ; =0x0221A438 - ldr r0, [r0, #0x14] - bl DWC_Http_Destroy - mov r0, #1 - bl ov4_021D6A44 - b _021D6968 -_021D67C4: - ldr r0, [r5, #0x14] - mov r1, fp - bl DWC_Http_Add_Body - cmp r0, #0 - beq _021D67F0 - ldr r0, _021D69BC ; =0x0221A438 - ldr r0, [r0, #0x14] - bl DWC_Http_Destroy - mov r0, #8 - bl ov4_021D6A44 - b _021D6968 -_021D67F0: - ldr r0, [r5, #0x14] - bl DWC_Http_FinishHeader - cmp r0, #0 - beq _021D6818 - ldr r0, _021D69BC ; =0x0221A438 - ldr r0, [r0, #0x14] - bl DWC_Http_Destroy - mov r0, #1 - bl ov4_021D6A44 - b _021D6968 -_021D6818: - ldr r0, _021D69CC ; =0x021CCC80 - ldr r0, [r0, #4] - bl OS_GetThreadPriority - sub r1, r0, #1 - ldr r0, [r5, #0x14] - bl DWC_Http_StartThread - ldr r1, [r5, #0x14] - add r0, r1, #0x1000 - ldr r0, [r0, #0xba4] - cmp r0, #0 - beq _021D6850 - add r0, r1, #0x338 - add r0, r0, #0x1800 - bl OS_JoinThread -_021D6850: - ldr r0, [r5, #0x14] - add r1, r0, #0x1000 - ldr r1, [r1, #0x20] - cmp r1, #2 - beq _021D6870 - cmp r1, #8 - beq _021D689C - b _021D6884 -_021D6870: - ldr r0, _021D69BC ; =0x0221A438 - mvn r1, #0 - ldr r0, [r0, #0] - add r0, r0, #0x1000 - str r1, [r0, #4] -_021D6884: - ldr r0, _021D69BC ; =0x0221A438 - ldr r0, [r0, #0x14] - bl DWC_Http_Destroy - mov r0, #3 - bl ov4_021D6A44 - b _021D6968 -_021D689C: - mov r1, #1 - bl DWC_Http_ParseResult - cmp r0, #1 - beq _021D68C4 - ldr r0, _021D69BC ; =0x0221A438 - ldr r0, [r0, #0x14] - bl DWC_Http_Destroy - mov r0, #2 - bl ov4_021D6A44 - b _021D6968 -_021D68C4: - ldr r0, [r5, #0x14] - add r1, r0, #0x1000 - ldr r6, [r1, #0xa08] - cmp r6, #0 - bne _021D68E8 - bl DWC_Http_Destroy - mov r0, #2 - bl ov4_021D6A44 - b _021D6968 -_021D68E8: - mov r0, r6 - bl strlen - add r1, r0, #1 - ldr r0, _021D6A34 ; =0x02216450 - blx r7 - ldr r1, [r5, #0] - add r1, r1, #0x1000 - str r0, [r1, #0x118] - ldr r0, [r5, #0] - add r0, r0, #0x1000 - ldr r0, [r0, #0x118] - str r0, [sp] - cmp r0, #0 - bne _021D6938 - ldr r0, _021D69BC ; =0x0221A438 - ldr r0, [r0, #0x14] - bl DWC_Http_Destroy - mov r0, #4 - bl ov4_021D6A44 - b _021D6968 -_021D6938: - mov r0, r6 - bl strlen - mov r2, r0 - ldr r0, [sp] - mov r1, r6 - add r2, r2, #1 - bl strncpy - ldr r0, [r5, #0x14] - bl DWC_Http_Destroy - ldr r0, [sp, #8] - bl OS_Sleep - b _021D5B98 -_021D6968: - cmp sb, #0 - beq _021D6980 - ldr r0, _021D6A38 ; =0x022164EC - mov r1, sb - mov r2, #0 - blx r8 -_021D6980: - cmp fp, #0 - beq _021D6998 - ldr r0, _021D6A3C ; =0x022164F8 - mov r1, fp - mov r2, #0 - blx r8 -_021D6998: - cmp sl, #0 - addeq sp, sp, #0x29c - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, _021D6A40 ; =0x02216504 - mov r1, sl - mov r2, #0 - blx r8 - add sp, sp, #0x29c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_021D69BC: .word Unk_ov4_0221A438 -_021D69C0: .word 0x00009C40 -_021D69C4: .word Unk_ov4_0221635C -_021D69C8: .word Unk_ov4_0221A450 -_021D69CC: .word OSi_ThreadInfo -_021D69D0: .word Unk_ov4_02216470 -_021D69D4: .word errno -_021D69D8: .word 0x0000012E -_021D69DC: .word Unk_ov4_02215EA0 -_021D69E0: .word 0x00004E20 -_021D69E4: .word Unk_ov4_0221647C -_021D69E8: .word Unk_ov4_0221649C -_021D69EC: .word Unk_ov4_022164A4 -_021D69F0: .word Unk_ov4_022164AC -_021D69F4: .word Unk_ov4_022163D4 -_021D69F8: .word Unk_ov4_02216408 -_021D69FC: .word Unk_ov4_0221A46C -_021D6A00: .word 0xFFFFA4FA -_021D6A04: .word Unk_ov4_022164BC -_021D6A08: .word Unk_ov4_022164C4 -_021D6A0C: .word Unk_ov4_022163B8 -_021D6A10: .word Unk_ov4_022164CC -_021D6A14: .word Unk_ov4_022164D8 -_021D6A18: .word Unk_ov4_022164DC -_021D6A1C: .word Unk_ov4_022164E4 -_021D6A20: .word Unk_ov4_02216424 -_021D6A24: .word Unk_ov4_02216430 -_021D6A28: .word Unk_ov4_02216440 -_021D6A2C: .word 0x0002BF20 -_021D6A30: .word 0x0001D4C0 -_021D6A34: .word Unk_ov4_02216450 -_021D6A38: .word Unk_ov4_022164EC -_021D6A3C: .word Unk_ov4_022164F8 -_021D6A40: .word Unk_ov4_02216504 - arm_func_end ov4_021D5B38 - - arm_func_start ov4_021D6A44 -ov4_021D6A44: ; 0x021D6A44 - stmfd sp!, {r4, lr} - ldr r1, _021D6A84 ; =0x0221A438 - mov r4, r0 - ldr r0, [r1, #0] - add r0, r0, #0x1dc - add r0, r0, #0x1000 - bl OS_LockMutex - ldr r1, _021D6A84 ; =0x0221A438 - ldr r0, [r1, #0] - add r0, r0, #0x1000 - str r4, [r0, #0] - ldr r0, [r1, #0] - add r0, r0, #0x1dc - add r0, r0, #0x1000 - bl OS_UnlockMutex - ldmia sp!, {r4, pc} - ; .align 2, 0 -_021D6A84: .word Unk_ov4_0221A438 - arm_func_end ov4_021D6A44 - - .data - - - .global Unk_ov4_0221635C -Unk_ov4_0221635C: ; 0x0221635C - .word Unk_ov4_02216360 - - .global Unk_ov4_02216360 -Unk_ov4_02216360: ; 0x02216360 - .asciz "http://conntest.nintendowifi.net/" - .short 0x0 - - .global Unk_ov4_02216384 -Unk_ov4_02216384: ; 0x02216384 - .asciz "ALLOC DWCnetcheck" - .short 0x0 - - .global Unk_ov4_02216398 -Unk_ov4_02216398: ; 0x02216398 - .asciz "ALLOC DWChttp" - .short 0x0 - - .global Unk_ov4_022163A8 -Unk_ov4_022163A8: ; 0x022163A8 - .ascii "FREE DWChttp" - .word 0x0 - - .global Unk_ov4_022163B8 -Unk_ov4_022163B8: ; 0x022163B8 - .asciz "FREE DWCnetcheck->body_302" - .byte 0x0 - - .global Unk_ov4_022163D4 -Unk_ov4_022163D4: ; 0x022163D4 - .asciz "FREE DWCnetcheck->body_wayport" - .byte 0x0 - - .global Unk_ov4_022163F4 -Unk_ov4_022163F4: ; 0x022163F4 - .ascii "FREE DWCnetcheck" - .word 0x0 - - .global Unk_ov4_02216408 -Unk_ov4_02216408: ; 0x02216408 - .asciz "ALLOC DWCnetcheck->body_302" - - .global Unk_ov4_02216424 -Unk_ov4_02216424: ; 0x02216424 - .asciz "ALLOC url" - .short 0x0 - - .global Unk_ov4_02216430 -Unk_ov4_02216430: ; 0x02216430 - .asciz "ALLOC data_len" - .byte 0x0 - - .global Unk_ov4_02216440 -Unk_ov4_02216440: ; 0x02216440 - .asciz "ALLOC wait_len" - .byte 0x0 - - .global Unk_ov4_02216450 -Unk_ov4_02216450: ; 0x02216450 - .asciz "ALLOC DWCnetcheck->body_wayport" - - .global Unk_ov4_02216470 -Unk_ov4_02216470: ; 0x02216470 - .asciz "httpresult" - .byte 0x0 - - .global Unk_ov4_0221647C -Unk_ov4_0221647C: ; 0x0221647C - .asciz "https://nas.nintendowifi.net/ac" - - .global Unk_ov4_0221649C -Unk_ov4_0221649C: ; 0x0221649C - .asciz "action" - .byte 0x0 - - .global Unk_ov4_022164A4 -Unk_ov4_022164A4: ; 0x022164A4 - .asciz "message" - - .global Unk_ov4_022164AC -Unk_ov4_022164AC: ; 0x022164AC - .asciz "HotSpotResponse" - - .global Unk_ov4_022164BC -Unk_ov4_022164BC: ; 0x022164BC - .asciz "parse" - .short 0x0 - - .global Unk_ov4_022164C4 -Unk_ov4_022164C4: ; 0x022164C4 - .ascii "HTML" - .word 0x0 - - .global Unk_ov4_022164CC -Unk_ov4_022164CC: ; 0x022164CC - .ascii "returncd" - .word 0x0 - - .global Unk_ov4_022164D8 -Unk_ov4_022164D8: ; 0x022164D8 - .asciz "url" - - .global Unk_ov4_022164DC -Unk_ov4_022164DC: ; 0x022164DC - .ascii "data" - .word 0x0 - - .global Unk_ov4_022164E4 -Unk_ov4_022164E4: ; 0x022164E4 - .ascii "wait" - .word 0x0 - - .global Unk_ov4_022164EC -Unk_ov4_022164EC: ; 0x022164EC - .ascii "FREE url" - .word 0x0 - - .global Unk_ov4_022164F8 -Unk_ov4_022164F8: ; 0x022164F8 - .asciz "FREE data" - .short 0x0 - - .global Unk_ov4_02216504 -Unk_ov4_02216504: ; 0x02216504 - .asciz "FREE wait" - - - - .bss - - - .global Unk_ov4_0221A438 -Unk_ov4_0221A438: ; 0x0221A438 - .space 0x4 - - .global Unk_ov4_0221A43C -Unk_ov4_0221A43C: ; 0x0221A43C - .space 0x4 - - .global Unk_ov4_0221A440 -Unk_ov4_0221A440: ; 0x0221A440 - .space 0x4 - - .global Unk_ov4_0221A444 -Unk_ov4_0221A444: ; 0x0221A444 - .space 0x4 - - .global Unk_ov4_0221A448 -Unk_ov4_0221A448: ; 0x0221A448 - .space 0x4 - - .global Unk_ov4_0221A44C -Unk_ov4_0221A44C: ; 0x0221A44C - .space 0x4 - - .global Unk_ov4_0221A450 -Unk_ov4_0221A450: ; 0x0221A450 - .space 0x1C - - .global Unk_ov4_0221A46C -Unk_ov4_0221A46C: ; 0x0221A46C - .space 0x48 - diff --git a/subprojects/NitroDWC/libraries/auth/asm/dwc_svl.s b/subprojects/NitroDWC/libraries/auth/asm/dwc_svl.s deleted file mode 100644 index 9c0f390551..0000000000 --- a/subprojects/NitroDWC/libraries/auth/asm/dwc_svl.s +++ /dev/null @@ -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 - diff --git a/subprojects/NitroDWC/libraries/auth/asm/incbin/dwc_ca_cybertrust.bin b/subprojects/NitroDWC/libraries/auth/asm/incbin/dwc_ca_cybertrust.bin deleted file mode 100644 index 222a013300..0000000000 Binary files a/subprojects/NitroDWC/libraries/auth/asm/incbin/dwc_ca_cybertrust.bin and /dev/null differ diff --git a/subprojects/NitroDWC/libraries/auth/asm/incbin/dwc_ca_globalsign.bin b/subprojects/NitroDWC/libraries/auth/asm/incbin/dwc_ca_globalsign.bin deleted file mode 100644 index a4ac2323ba..0000000000 Binary files a/subprojects/NitroDWC/libraries/auth/asm/incbin/dwc_ca_globalsign.bin and /dev/null differ diff --git a/subprojects/NitroDWC/libraries/auth/asm/incbin/dwc_ca_nas_self.bin b/subprojects/NitroDWC/libraries/auth/asm/incbin/dwc_ca_nas_self.bin deleted file mode 100644 index 89139e961b..0000000000 Binary files a/subprojects/NitroDWC/libraries/auth/asm/incbin/dwc_ca_nas_self.bin and /dev/null differ diff --git a/subprojects/NitroDWC/libraries/auth/asm/incbin/dwc_ca_thawte_premiumserver.bin b/subprojects/NitroDWC/libraries/auth/asm/incbin/dwc_ca_thawte_premiumserver.bin deleted file mode 100644 index af426641ea..0000000000 Binary files a/subprojects/NitroDWC/libraries/auth/asm/incbin/dwc_ca_thawte_premiumserver.bin and /dev/null differ diff --git a/subprojects/NitroDWC/libraries/auth/asm/incbin/dwc_ca_thawte_server.bin b/subprojects/NitroDWC/libraries/auth/asm/incbin/dwc_ca_thawte_server.bin deleted file mode 100644 index f8e73b016a..0000000000 Binary files a/subprojects/NitroDWC/libraries/auth/asm/incbin/dwc_ca_thawte_server.bin and /dev/null differ diff --git a/subprojects/NitroDWC/libraries/auth/asm/incbin/dwc_ca_verisign.bin b/subprojects/NitroDWC/libraries/auth/asm/incbin/dwc_ca_verisign.bin deleted file mode 100644 index d997fe8668..0000000000 Binary files a/subprojects/NitroDWC/libraries/auth/asm/incbin/dwc_ca_verisign.bin and /dev/null differ diff --git a/subprojects/NitroDWC/libraries/auth/asm/incbin/dwc_nastime.bin b/subprojects/NitroDWC/libraries/auth/asm/incbin/dwc_nastime.bin deleted file mode 100644 index 5a2bb77c77..0000000000 Binary files a/subprojects/NitroDWC/libraries/auth/asm/incbin/dwc_nastime.bin and /dev/null differ diff --git a/subprojects/NitroDWC/libraries/auth/asm/include/dwc_auth.inc b/subprojects/NitroDWC/libraries/auth/asm/include/dwc_auth.inc deleted file mode 100644 index 978da74b1f..0000000000 --- a/subprojects/NitroDWC/libraries/auth/asm/include/dwc_auth.inc +++ /dev/null @@ -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 diff --git a/subprojects/NitroDWC/libraries/auth/asm/include/dwc_cal.inc b/subprojects/NitroDWC/libraries/auth/asm/include/dwc_cal.inc deleted file mode 100644 index 9b0dd63a40..0000000000 --- a/subprojects/NitroDWC/libraries/auth/asm/include/dwc_cal.inc +++ /dev/null @@ -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 diff --git a/subprojects/NitroDWC/libraries/auth/asm/include/dwc_http.inc b/subprojects/NitroDWC/libraries/auth/asm/include/dwc_http.inc deleted file mode 100644 index 7b634321a0..0000000000 --- a/subprojects/NitroDWC/libraries/auth/asm/include/dwc_http.inc +++ /dev/null @@ -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 diff --git a/subprojects/NitroDWC/libraries/auth/asm/include/dwc_nastime.inc b/subprojects/NitroDWC/libraries/auth/asm/include/dwc_nastime.inc deleted file mode 100644 index 6820f76a99..0000000000 --- a/subprojects/NitroDWC/libraries/auth/asm/include/dwc_nastime.inc +++ /dev/null @@ -1,6 +0,0 @@ -.public RTC_GetDateTime -.public RTC_ConvertDateTimeToSecond -.public strlen -.public strcpy -.public strcmp -.public atoi diff --git a/subprojects/NitroDWC/libraries/auth/asm/include/dwc_netcheck.inc b/subprojects/NitroDWC/libraries/auth/asm/include/dwc_netcheck.inc deleted file mode 100644 index ebd4a2632b..0000000000 --- a/subprojects/NitroDWC/libraries/auth/asm/include/dwc_netcheck.inc +++ /dev/null @@ -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 diff --git a/subprojects/NitroDWC/libraries/auth/asm/include/dwc_svl.inc b/subprojects/NitroDWC/libraries/auth/asm/include/dwc_svl.inc deleted file mode 100644 index 7540451872..0000000000 --- a/subprojects/NitroDWC/libraries/auth/asm/include/dwc_svl.inc +++ /dev/null @@ -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 diff --git a/subprojects/NitroDWC/libraries/auth/asm/include/util_base64.inc b/subprojects/NitroDWC/libraries/auth/asm/include/util_base64.inc deleted file mode 100644 index 39fa2e0d4e..0000000000 --- a/subprojects/NitroDWC/libraries/auth/asm/include/util_base64.inc +++ /dev/null @@ -1,2 +0,0 @@ -.public MI_CpuFill8 -.public MI_CpuCopy8 diff --git a/subprojects/NitroDWC/libraries/auth/asm/macros/function.inc b/subprojects/NitroDWC/libraries/auth/asm/macros/function.inc deleted file mode 100644 index f71cc4ccae..0000000000 --- a/subprojects/NitroDWC/libraries/auth/asm/macros/function.inc +++ /dev/null @@ -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 \ No newline at end of file diff --git a/subprojects/NitroDWC/libraries/auth/asm/util_base64.s b/subprojects/NitroDWC/libraries/auth/asm/util_base64.s deleted file mode 100644 index 0a52ad26f7..0000000000 --- a/subprojects/NitroDWC/libraries/auth/asm/util_base64.s +++ /dev/null @@ -1,231 +0,0 @@ - .include "macros/function.inc" - .include "include/util_base64.inc" - - - - .text - - - arm_func_start DWC_Auth_Base64Encode -DWC_Auth_Base64Encode: ; 0x021D72E0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - ldr r4, _021D7460 ; =0xAAAAAAAB - str r2, [sp] - umull r4, r5, r1, r4 - mov r6, #3 - mov r5, r5, lsr #1 - umull r4, r5, r6, r5 - mov sl, r0 - subs r5, r1, r4 - movne r5, #4 - ldr r2, _021D7460 ; =0xAAAAAAAB - ldr r0, [sp] - moveq r5, #0 - cmp r0, #0 - umull r0, r4, r1, r2 - mov r4, r4, lsr #1 - addeq sp, sp, #8 - add r0, r5, r4, lsl #2 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r3, r0 - addlo sp, sp, #8 - mvnlo r0, #0 - ldmloia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r7, sl, r1 - ldr r8, [sp] - cmp sl, r7 - beq _021D7450 - sub fp, r2, #-0x80000000 - ldr r5, _021D7464 ; =0x02216628 - mov r4, fp -_021D735C: - sub sb, r7, sl - mov r0, sb, lsl #3 - smull r1, r2, r4, r0 - add r2, r2, r0, lsr #31 - mov r1, #6 - smull r2, r3, r1, r2 - subs r2, r0, r2 - smull r1, r2, fp, r0 - movne r3, #1 - moveq r3, #0 - add r2, r2, r0, lsr #31 - cmp sb, #3 - add r6, r2, r3 - movge sb, #3 - add r0, sp, #4 - mov r1, #0 - mov r2, #3 - bl MI_CpuFill8 - mov r0, sl - add r1, sp, #4 - mov r2, sb - bl MI_CpuCopy8 - ldrb r0, [sp, #4] - ldr r1, [r5, #0] - cmp r6, #2 - mov r0, r0, asr #2 - ldrsb r0, [r1, r0] - strb r0, [r8] - movlt r0, #0x2a - blt _021D73F0 - ldrb r2, [sp, #4] - ldrb r1, [sp, #5] - ldr r0, [r5, #0] - mov r2, r2, lsl #4 - and r2, r2, #0x3f - orr r1, r2, r1, asr #4 - ldrsb r0, [r0, r1] -_021D73F0: - strb r0, [r8, #1] - cmp r6, #3 - movlt r0, #0x2a - blt _021D741C - ldrb r2, [sp, #5] - ldrb r1, [sp, #6] - ldr r0, [r5, #0] - mov r2, r2, lsl #2 - and r2, r2, #0x3f - orr r1, r2, r1, asr #6 - ldrsb r0, [r0, r1] -_021D741C: - strb r0, [r8, #2] - cmp r6, #4 - movlt r0, #0x2a - blt _021D743C - ldrb r0, [sp, #6] - ldr r1, [r5, #0] - and r0, r0, #0x3f - ldrsb r0, [r1, r0] -_021D743C: - add sl, sl, sb - strb r0, [r8, #3] - cmp sl, r7 - add r8, r8, #4 - bne _021D735C -_021D7450: - ldr r0, [sp] - sub r0, r8, r0 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_021D7460: .word 0xAAAAAAAB -_021D7464: .word Unk_ov4_02216628 - arm_func_end DWC_Auth_Base64Encode - - arm_func_start DWC_Auth_Base64Decode -DWC_Auth_Base64Decode: ; 0x021D7468 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - tst r1, #3 - mvnne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r5, #0 - mov ip, r5 - cmp r1, #0 - bls _021D74A0 -_021D7488: - ldrsb r4, [r0, ip] - add ip, ip, #1 - cmp r4, #0x2a - addne r5, r5, #6 - cmp ip, r1 - blo _021D7488 -_021D74A0: - mov ip, r5, asr #2 - add ip, r5, ip, lsr #29 - mov ip, ip, asr #3 - cmp r2, #0 - moveq r0, ip - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - cmp r3, ip - mvnlo r0, #0 - ldmloia sp!, {r3, r4, r5, r6, r7, pc} - cmp r1, #0 - moveq r0, #0 - streqb r0, [r2] - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r1, r2 -_021D74D8: - mov r7, #0 - add r6, sp, #0 - mov r3, r7 - mov r4, #0x3f - mov lr, #0x3e -_021D74EC: - ldrsb r5, [r0, r7] - cmp r5, #0x41 - blt _021D7508 - cmp r5, #0x5a - suble r5, r5, #0x41 - strleb r5, [r6] - ble _021D7550 -_021D7508: - cmp r5, #0x61 - blt _021D7520 - cmp r5, #0x7a - suble r5, r5, #0x47 - strleb r5, [r6] - ble _021D7550 -_021D7520: - cmp r5, #0x30 - blt _021D7538 - cmp r5, #0x39 - addle r5, r5, #4 - strleb r5, [r6] - ble _021D7550 -_021D7538: - cmp r5, #0x2e - streqb lr, [r6] - beq _021D7550 - cmp r5, #0x2d - streqb r4, [r6] - strneb r3, [r6] -_021D7550: - add r7, r7, #1 - cmp r7, #4 - add r6, r6, #1 - blt _021D74EC - ldrsb r4, [sp, #1] - ldrsb lr, [sp] - add r3, r1, #1 - mov r4, r4, asr #4 - orr r4, r4, lr, lsl #2 - sub r3, r3, r2 - strb r4, [r1] - cmp r3, ip - add r0, r0, #4 - bge _021D75CC - ldrsb lr, [sp, #2] - ldrsb r4, [sp, #1] - add r3, r1, #2 - mov lr, lr, asr #2 - orr r4, lr, r4, lsl #4 - sub r3, r3, r2 - strb r4, [r1, #1] - cmp r3, ip - bge _021D75CC - ldrsb lr, [sp, #2] - ldrsb r3, [sp, #3] - orr r3, r3, lr, lsl #6 - strb r3, [r1, #2] - add r1, r1, #3 - sub r3, r1, r2 - cmp r3, ip - blt _021D74D8 -_021D75CC: - mov r0, r3 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end DWC_Auth_Base64Decode - - .data - - - .global Unk_ov4_02216628 -Unk_ov4_02216628: ; 0x02216628 - .word Unk_ov4_0221662C - - .global Unk_ov4_0221662C -Unk_ov4_0221662C: ; 0x0221662C - .asciz "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.-" - diff --git a/subprojects/NitroDWC/libraries/auth/meson.build b/subprojects/NitroDWC/libraries/auth/meson.build deleted file mode 100644 index 3f159395f1..0000000000 --- a/subprojects/NitroDWC/libraries/auth/meson.build +++ /dev/null @@ -1,24 +0,0 @@ -libdwcauth_srcs = files( - 'asm/dwc_auth.s', - 'asm/dwc_cal.s', - 'asm/dwc_http.s', - 'asm/dwc_netcheck.s', - 'asm/dwc_nastime.s', - 'asm/dwc_svl.s', - 'asm/util_base64.s', - 'asm/dwc_ca_cybertrust.s', - 'asm/dwc_ca_nas_self.s', - 'asm/dwc_ca_thawte_premiumserver.s', - 'asm/dwc_ca_thawte_server.s', - 'asm/dwc_ca_verisign.s', - 'asm/dwc_ca_globalsign.s' -) - -libdwcauth = static_library('dwcauth', - sources: libdwcauth_srcs, - nasm_args: asm_args, - include_directories: public_includes, - pic: false -) - -nitrodwc_libs += libdwcauth diff --git a/subprojects/NitroDWC/libraries/base/meson.build b/subprojects/NitroDWC/libraries/base/meson.build deleted file mode 100644 index 9395f32812..0000000000 --- a/subprojects/NitroDWC/libraries/base/meson.build +++ /dev/null @@ -1,31 +0,0 @@ -libdwcbase_srcs = files( - 'src/dwc_error.c', - 'src/dwc_memfunc.c', - 'src/dwc_connectinet.c', - 'src/dwc_nasfunc.c', - 'src/dwc_nd.c', - 'src/dwc_common.c', - 'src/dwc_main.c', - 'src/dwc_login.c', - 'src/dwc_friend.c', - 'src/dwc_match.c', - 'src/dwc_transport.c', - 'src/dwc_ghttp.c' -) - -libdwcbase = static_library('dwcbase', - sources: libdwcbase_srcs, - c_args: [c_args, sdk_args], - nasm_args: asm_args, - dependencies: [ - gamespy_dep, - nitrosdk_dep, - nitrosystem_dep, - nitrowifi_dep - ], - c_pch: nitro_pch, - include_directories: public_includes, - pic: false -) - -nitrodwc_libs += libdwcbase \ No newline at end of file diff --git a/subprojects/NitroDWC/libraries/base/src/dwc_common.c b/subprojects/NitroDWC/libraries/base/src/dwc_common.c deleted file mode 100644 index 3885b7ea5f..0000000000 --- a/subprojects/NitroDWC/libraries/base/src/dwc_common.c +++ /dev/null @@ -1,88 +0,0 @@ -#include -#include - -#include - -static MATHRandContext32 stRandContext32 = { 0, 0, 0 }; - -int DWC_SetCommonKeyValueString (const char * key, const char * value, char * string, char separator) -{ - - SDK_ASSERT(key && value); - - OS_SNPrintf(string, DWC_COMMONSTR_MAX_KEY_VALUE_LEN, - "%c%s%c%s", - separator, key, separator, value); - - return (int)strlen(string); -} - -int DWC_AddCommonKeyValueString (const char * key, const char * value, char * string, char separator) -{ - (void)DWC_SetCommonKeyValueString(key, value, strchr(string, '\0'), separator); - return (int)strlen(string); -} - -int DWC_GetCommonValueString (const char * key, char * value, const char * string, char separator) -{ - const char * pSrcBegin; - char * pSrcEnd; - int len; - - SDK_ASSERT(key); - - if (!value) return -1; - - pSrcBegin = strchr(string, separator); - if (!pSrcBegin) return -1; - - while (1){ - if (!strncmp(pSrcBegin+1, key, strlen(key)) && - (pSrcBegin[strlen(key)+1] == separator)){ - break; - } - - pSrcBegin = strchr(pSrcBegin+1, separator); - if (!pSrcBegin) return -1; - pSrcBegin = strchr(pSrcBegin+1, separator); - if (!pSrcBegin) return -1; - } - - pSrcBegin = strchr(pSrcBegin+1, separator); - if (!pSrcBegin) return -1; - pSrcBegin++; - - pSrcEnd = strchr(pSrcBegin, separator); - if (pSrcEnd) len = (int)(pSrcEnd-pSrcBegin); - else len = (int)strlen(pSrcBegin); - - strncpy(value, pSrcBegin, (u32)len); - value[len] = '\0'; - - return len; -} - -u32 DWCi_GetMathRand32 (u32 max) -{ - u64 seed; - - if (!stRandContext32.x && !stRandContext32.mul && !stRandContext32.add){ - OS_GetMacAddress((u8 *)&seed); - seed = ((seed >> 24) & 0xffffff) | (OS_GetTick() << 24); - MATH_InitRand32(&stRandContext32, seed); - } - - return MATH_Rand32(&stRandContext32, max); -} - -u32 DWCi_WStrLen (const u16 * str) -{ - u32 length = 0; - - while (str[length] != 0) - { - length++; - } - - return length; -} diff --git a/subprojects/NitroDWC/libraries/base/src/dwc_connectinet.c b/subprojects/NitroDWC/libraries/base/src/dwc_connectinet.c deleted file mode 100644 index f3698233f7..0000000000 --- a/subprojects/NitroDWC/libraries/base/src/dwc_connectinet.c +++ /dev/null @@ -1,501 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -#define DWC_CONNECTINET_DMA_DEFAULT 3 -#define DWC_CONNECTINET_POWERMODE_SAVE 0 -#define DWC_CONNECTINET_POWERMODE_ACTIVE 1 -#define DWC_CONNECTINET_SSL_DEFAULT_PRIORITY 20 - - -static DWCInetControl *stpInetCntl; - - -extern u8 *WCM_GetApMacAddress(void); -extern u8 *WCM_GetApEssid(u16 *length); - - -void DWC_InitInetEx(DWCInetControl *inetCntl, u16 dmaNo, u16 powerMode, u16 ssl_priority) { -#ifdef SDK_FINALROM -#pragma unused(powerMode) -#endif - SDK_ASSERT(powerMode == DWC_CONNECTINET_POWERMODE_ACTIVE); - - if (stpInetCntl == NULL) { - DWC_Printf(DWC_REPORTFLAG_CONNECTINET, "InitInet dma : %d, powerMode: %d\n", dmaNo, powerMode); - SDK_ASSERT(inetCntl); - MI_CpuClear8(inetCntl, sizeof(DWCInetControl)); - - inetCntl->dmaNo = dmaNo; - inetCntl->powerMode = DWC_CONNECTINET_POWERMODE_ACTIVE; - inetCntl->state = DWC_CONNECTINET_STATE_IDLE; - inetCntl->online = FALSE; - inetCntl->wontExecuteWDS = FALSE; - inetCntl->processWDSstate = DWC_WDS_STATE_IDLE; - -#ifndef SDK_FINALROM - inetCntl->connectType = 0; -#endif - - stpInetCntl = inetCntl; - -#if SDK_WIFI_VERSION_DATE >= 20051005 - CPS_SetSslLowThreadPriority(ssl_priority); -#else - (void)ssl_priority; -#endif - } -} - -void DWC_InitInet(DWCInetControl *inetCntl) { - DWC_InitInetEx(inetCntl, DWC_CONNECTINET_DMA_DEFAULT, DWC_CONNECTINET_POWERMODE_ACTIVE, DWC_CONNECTINET_SSL_DEFAULT_PRIORITY); -} - -void DWC_SetAuthServer(DWCInetAuthType type) { - switch (type) { - case DWC_CONNECTINET_AUTH_TEST: - DWC_Auth_SetCustomNas("https://nas.test.nintendowifi.net/ac"); - break; - case DWC_CONNECTINET_AUTH_DEVELOP: - DWC_Printf(DWC_REPORTFLAG_AC, "******************************************************************************************\n"); - DWC_Printf(DWC_REPORTFLAG_AC, " DWC_CONNECTINET_AUTH_DEVELOP: This setting is for authentication server developing ONLY. \n"); - DWC_Printf(DWC_REPORTFLAG_AC, "******************************************************************************************\n"); - DWC_Auth_SetCustomNas("https://nas.dev.nintendowifi.net/ac"); - break; - case DWC_CONNECTINET_AUTH_RELEASE: - DWC_Auth_SetCustomNas("https://nas.nintendowifi.net/ac"); - break; - } -} - -#ifndef SDK_FINALROM -void DWC_SetConnectApType(DWCApInfoType type) { - SDK_ASSERTMSG(stpInetCntl, "DWC_InitInet[Ex] is not called."); - SDK_ASSERTMSG(0 <= type && type <= DWC_APINFO_TYPE_NINTENDOWFC, "Invalid argument 'type'"); - - DWC_Printf(DWC_REPORTFLAG_AC, "***************************************************************\n"); - DWC_Printf(DWC_REPORTFLAG_AC, " DWC_CONNECTINET_SET_AP_TYPE: This setting is debug ONLY. \n"); - DWC_Printf(DWC_REPORTFLAG_AC, "***************************************************************\n"); - - stpInetCntl->connectType = type + 1; - stpInetCntl->wontExecuteWDS = TRUE; -} - -#endif - -void DWC_ConnectInetAsync(void) { - DWCACConfig inp; - - if (stpInetCntl != NULL) { - if (stpInetCntl->state != DWC_CONNECTINET_STATE_IDLE) { - return; - } - - MI_CpuClear8(&inp, sizeof(DWCACConfig)); - - inp.dmaNo = (u8)stpInetCntl->dmaNo; - inp.powerMode = (u8)stpInetCntl->powerMode; - inp.alloc = (DWCACAlloc)DWC_Alloc; - inp.free = (DWCACFree)DWC_Free; - -#ifndef SDK_FINALROM - inp.option.connectType = (u8)stpInetCntl->connectType; -#endif - - DWC_Printf(DWC_REPORTFLAG_CONNECTINET, "ConnectInet Async\n"); - stpInetCntl->state = DWC_CONNECTINET_STATE_OPERATING; - - if (!DWC_AC_Create(&inp)) { - DWCi_SetError(DWC_ERROR_FATAL, -50199); - } - } - else { - DWCi_SetError(DWC_ERROR_FATAL, -50199); - } -} - -void DWC_DebugConnectInetAsync(const void *ssid, const void *wep, int wepMode) { - DWC_DebugConnectInetExAsync(ssid, wep, wepMode, NULL, DWC_AC_AP_TYPE_USER1); -} - -void DWC_DebugConnectInetExAsync(const void *ssid, const void *wep, int wepMode, const char *apSpotInfo, int overrideType) { - DWC_ConnectInetAsync(); - - if (stpInetCntl != NULL) { - stpInetCntl->wontExecuteWDS = TRUE; - } - - if (DWC_GetInetStatus() == DWC_CONNECTINET_STATE_OPERATING) { - DWC_AC_SetSpecifyApEx(ssid, wep, wepMode, apSpotInfo, overrideType); - } -} - -BOOL DWC_CheckInet(void) { - if (stpInetCntl == NULL) { - DWC_Printf(DWC_REPORTFLAG_CONNECTINET, "ConnectInet library is not initialized.\n"); - - return FALSE; - } - - if (stpInetCntl->ac_state != 0) { - stpInetCntl->state = DWC_CONNECTINET_STATE_OPERATED; - (void)DWC_GetInetStatus(); - - if (stpInetCntl->wontExecuteWDS) { - return TRUE; - } - else { - return FALSE; - } - } - - return FALSE; -} - -void DWC_ProcessInet(void) { - if (stpInetCntl == NULL) { - return; - } - - switch (stpInetCntl->processWDSstate) { - case DWC_WDS_STATE_IDLE: - break; - case DWC_WDS_STATE_PROCESS: - stpInetCntl->ac_state = 0; - stpInetCntl->processWDSstate = DWC_AC_ProcessGetWDSInfo(); - - return; - case DWC_WDS_STATE_COMPLETED: - DWC_AC_CleanupGetWDSInfo(); - DWC_DebugConnectInetExAsync( - stpInetCntl->nspotInfo.ssid, stpInetCntl->nspotInfo.wep, stpInetCntl->nspotInfo.wepMode, stpInetCntl->nspotInfo.apnum, DWC_AC_AP_TYPE_NINTENDOSPOT); - stpInetCntl->processWDSstate = DWC_WDS_STATE_IDLE; - - return; - case DWC_WDS_STATE_FAILED: - DWC_AC_CleanupGetWDSInfo(); - stpInetCntl->ac_state = -1; - stpInetCntl->wontExecuteWDS = TRUE; - - return; - case DWC_WDS_STATE_ERROR: - return; - default: - break; - } - - if (stpInetCntl->state == DWC_CONNECTINET_STATE_OPERATING) { - stpInetCntl->ac_state = DWC_AC_Process(); - } - else if (stpInetCntl->state == DWC_CONNECTINET_STATE_CONNECTED) { - if (stpInetCntl->online) { - if (WCM_GetPhase() != WCM_PHASE_DCF) { - stpInetCntl->online = FALSE; - stpInetCntl->state = DWC_CONNECTINET_STATE_DISCONNECTED; - } - } - } -} - -DWCInetResult DWC_GetInetStatus(void) { - int state; - static int stateOld; - DWCInetResult result = DWC_CONNECTINET_STATE_NOT_INITIALIZED; - - if (stpInetCntl == NULL) { - return result; - } - - switch (stpInetCntl->processWDSstate) { - case DWC_WDS_STATE_IDLE: - break; - case DWC_WDS_STATE_PROCESS: - return DWC_CONNECTINET_STATE_OPERATING; - case DWC_WDS_STATE_COMPLETED: - return DWC_CONNECTINET_STATE_OPERATING; - case DWC_WDS_STATE_FAILED: - DWC_ProcessInet(); - DWCi_SetError(DWC_ERROR_AC_ANY, stateOld); - - result = DWC_CONNECTINET_STATE_ERROR; - stpInetCntl->state = result; - stpInetCntl->processWDSstate = DWC_WDS_STATE_ERROR; - - return result; - case DWC_WDS_STATE_ERROR: - result = DWC_CONNECTINET_STATE_ERROR; - - return result; - default: - break; - } - - result = (DWCInetResult)stpInetCntl->state; - - if (result == DWC_CONNECTINET_STATE_IDLE) { - return result; - } - - state = DWC_AC_GetStatus(); - - if (state == DWC_AC_STATE_COMPLETE) { - result = DWC_CONNECTINET_STATE_CONNECTED; - stpInetCntl->state = result; - stpInetCntl->online = TRUE; - stpInetCntl->wontExecuteWDS = TRUE; - } - else if (state < 0) { - if (state >= -10) { - DWCi_SetError(DWC_ERROR_FATAL, -50199); - - result = DWC_CONNECTINET_STATE_FATAL_ERROR; - stpInetCntl->state = result; - } - else if (!stpInetCntl->wontExecuteWDS) { - DWCInetControl *stepInetCntlTemp = stpInetCntl; - u16 dmaNoTemp = stpInetCntl->dmaNo; - u32 ssl_priority_Temp = CPS_GetSslLowThreadPriority(); - - stateOld = state; - - DWC_CleanupInet(); - DWC_InitInetEx(stepInetCntlTemp, dmaNoTemp, DWC_CONNECTINET_POWERMODE_ACTIVE, (u16)ssl_priority_Temp); - DWC_AC_StartupGetWDSInfo(&(stpInetCntl->nspotInfo)); - - stpInetCntl->processWDSstate = DWC_WDS_STATE_PROCESS; - result = DWC_CONNECTINET_STATE_OPERATING; - stpInetCntl->ac_state = 0; - } - else { - if (stateOld < state) { - state = stateOld; - } - - DWCi_SetError(DWC_ERROR_AC_ANY, state); - - result = DWC_CONNECTINET_STATE_ERROR; - stpInetCntl->state = result; - } - } - else { - result = DWC_CONNECTINET_STATE_OPERATING; - } - - return result; -} - -void DWC_CleanupInet(void) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "!!DWC_CleanupInet() was called!!\n"); - - if (stpInetCntl == NULL) { - DWC_Printf(DWC_REPORTFLAG_CONNECTINET, "ConnectInet library is not initialized.\n"); - return; - } - - if (stpInetCntl->state == DWC_CONNECTINET_STATE_IDLE) { - stpInetCntl = NULL; - return; - } - - while (!DWC_AC_Destroy()) { - OS_Sleep(10); - } - - stpInetCntl = NULL; -} - -BOOL DWC_CleanupInetAsync(void) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "!!DWC_CleanupInetAsync() was called!!\n"); - - if (stpInetCntl == NULL) { - DWC_Printf(DWC_REPORTFLAG_CONNECTINET, "ConnectInet library is not initialized.\n"); - return TRUE; - } - - if (stpInetCntl->state == DWC_CONNECTINET_STATE_FATAL_ERROR) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "CleanupInet Status: FATAL ERROR.\n"); - return FALSE; - } - else if (stpInetCntl->state == DWC_CONNECTINET_STATE_IDLE) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "CleanupInet Status: %d\n", stpInetCntl->state); - stpInetCntl = NULL; - return TRUE; - } - else { - stpInetCntl->state = DWC_CONNECTINET_STATE_DISCONNECTING; - } - -#if 0 -#if SDK_WIFI_VERSION_DATE >= 20050929 - if (SOCL_CalmDown() != SOCL_ESUCCESS) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "CleanupInet Status: %d %d\n", stpInetCntl->state, SOCL_CalmDown()); - - return FALSE; - } -#endif -#endif - - if (DWC_AC_Destroy()) { - stpInetCntl = NULL; - return TRUE; - } - - return FALSE; -} - -BOOL DWCi_CheckDisconnected(void) { - if ((stpInetCntl != NULL) && (stpInetCntl->state == DWC_CONNECTINET_STATE_DISCONNECTED)) { - return TRUE; - } - - return FALSE; -} - -WMLinkLevel DWC_GetLinkLevel(void) { -#if SDK_WIFI_VERSION_DATE >= 20050914 - return WCM_GetLinkLevel(); -#else - return WM_GetLinkLevel(); -#endif -} - -int DWC_GetUdpPacketDropNum(void) { -#if SDK_WIFI_VERSION_DATE >= 20050914 - return (int)SOCLi_CheckCount[SOCL_CHECKCOUNT_UDPRCVCB_2]; -#else - return 0; -#endif -} - -BOOL DWC_GetApInfo(DWCApInfo *apinfo) { - OSIntrMode preirq; - unsigned char *wcmapbssid; - unsigned char *wcmapessid; - unsigned short essidlen; - u8 apSpotInfo[10]; - - MI_CpuClear8(apinfo, sizeof(DWCApInfo)); - apinfo->area = DWC_APINFO_AREA_UNKNOWN; - - if (DWC_GetInetStatus() != DWC_CONNECTINET_STATE_CONNECTED) { - return FALSE; - } - - apinfo->aptype = (DWCApInfoType)DWC_AC_GetApType(); - - if ((apinfo->aptype == DWC_AC_AP_TYPE_FALSE) || (apinfo->aptype > DWC_AC_AP_TYPE_UNKNOWN)) { - apinfo->aptype = (DWCApInfoType)DWC_AC_AP_TYPE_UNKNOWN; - return FALSE; - } - - preirq = OS_DisableInterrupts(); - wcmapbssid = WCM_GetApMacAddress(); - DC_InvalidateRange(wcmapbssid, WM_SIZE_BSSID); - - if (wcmapbssid == NULL) { - preirq = OS_RestoreInterrupts(preirq); - return FALSE; - } - - MI_CpuCopy8(wcmapbssid, apinfo->bssid, 6); - - if ((apinfo->aptype >= 0) && (apinfo->aptype < 3)) { - wcmapessid = WCM_GetApEssid(&essidlen); - DC_InvalidateRange(wcmapessid, WM_SIZE_SSID); - - if (wcmapessid == NULL) { - preirq = OS_RestoreInterrupts(preirq); - return FALSE; - } - - MI_CpuCopy8(wcmapessid, apinfo->essid, essidlen); - } - - preirq = OS_RestoreInterrupts(preirq); - - if (DWC_AC_GetApSpotInfo(apSpotInfo)) { - apinfo->area = ((apSpotInfo[0] >= '0') && (apSpotInfo[0] <= '9')) ? (DWCApInfoArea)(apSpotInfo[0] - '0') : DWC_APINFO_AREA_UNKNOWN; - MI_CpuCopy8(&apSpotInfo[1], apinfo->spotinfo, DWC_SIZE_SPOTINFO); - } - else { - apinfo->area = DWC_APINFO_AREA_UNKNOWN; - } - - return TRUE; -} - -void DWC_EnableHotspot(void) { - DWC_Netcheck_SetAllow302(TRUE); -} - -BOOL DWC_CheckWiFiStation(const void *ssid, u16 len) { - return DWC_AC_CheckWiFiStation(ssid, len); -} - -BOOL DWC_UpdateConnection(void) { - DWC_ProcessInet(); - - if (DWCi_CheckDisconnected()) { - u8 aptype = DWC_AC_GetApType(); - - if ((aptype == DWC_AC_AP_TYPE_FALSE) || (aptype > DWC_AC_AP_TYPE_UNKNOWN)) { - aptype = DWC_AC_AP_TYPE_UNKNOWN; - } - - DWCi_SetError(DWC_ERROR_DISCONNECTED, -54000 - aptype); - DWC_Printf(DWC_REPORTFLAG_DEBUG, "Detected DCF shutdown.\n"); - - return TRUE; - } - - return FALSE; -} - -void DWC_ForceShutdown(void) { -} - -BOOL DWC_TestInetAsync(int timeout) { - if (stpInetCntl == NULL) { - return FALSE; - } - else if (stpInetCntl->state != DWC_CONNECTINET_STATE_CONNECTED) { - return FALSE; - } - - return DWC_SimpleNetcheckAsync(timeout); -} - -DWCTestInetResult DWC_TestInetProcess(void) { - DWCSimpleNetcheckResult result; - u8 aptype; - - result = DWC_SimpleNetcheckProcess(); - - switch (result) { - case DWC_SIMPLENETCHECK_PROCESSING: - return DWC_TESTINET_OPERATING; - case DWC_SIMPLENETCHECK_SUCCESS: - return DWC_TESTINET_CONNECTED; - case DWC_SIMPLENETCHECK_FAIL: - case DWC_SIMPLENETCHECK_SYSFAIL: - aptype = DWC_AC_GetApType(); - - if ((aptype == DWC_AC_AP_TYPE_FALSE) || (aptype > DWC_AC_AP_TYPE_UNKNOWN)) { - aptype = DWC_AC_AP_TYPE_UNKNOWN; - } - - DWCi_SetError(DWC_ERROR_DISCONNECTED, -54100 - aptype); - return DWC_TESTINET_DISCONNECTED; - case DWC_SIMPLENETCHECK_NOTINITIALIZED: - return DWC_TESTINET_NOT_INITIALIZED; - } - - return DWC_TESTINET_DISCONNECTED; -} diff --git a/subprojects/NitroDWC/libraries/base/src/dwc_error.c b/subprojects/NitroDWC/libraries/base/src/dwc_error.c deleted file mode 100644 index aff610c65a..0000000000 --- a/subprojects/NitroDWC/libraries/base/src/dwc_error.c +++ /dev/null @@ -1,96 +0,0 @@ -#include -#include - - -static DWCError stDwcLastError = DWC_ERROR_NONE; -static int stDwcErrorCode = 0; - - -DWCError DWC_GetLastError(int *errorCode) { - if (errorCode != NULL) { - *errorCode = stDwcErrorCode; - } - - return stDwcLastError; -} - -DWCError DWC_GetLastErrorEx(int *errorCode, DWCErrorType *errorType) { - if (errorCode != NULL) { - *errorCode = stDwcErrorCode; - } - - if (errorType != NULL) { - switch (stDwcLastError) { - case DWC_ERROR_AUTH_ANY: - case DWC_ERROR_AUTH_OUT_OF_SERVICE: - case DWC_ERROR_AUTH_STOP_SERVICE: - case DWC_ERROR_AC_ANY: - case DWC_ERROR_DISCONNECTED: - *errorType = DWC_ETYPE_DISCONNECT; - break; - case DWC_ERROR_NETWORK: - *errorType = DWC_ETYPE_SHUTDOWN_FM; - break; - case DWC_ERROR_GHTTP_ANY: - *errorType = DWC_ETYPE_SHUTDOWN_GHTTP; - break; - case DWC_ERROR_FRIENDS_SHORTAGE: - case DWC_ERROR_NOT_FRIEND_SERVER: - case DWC_ERROR_MO_SC_CONNECT_BLOCK: - case DWC_ERROR_SERVER_FULL: - *errorType = DWC_ETYPE_LIGHT; - break; - case DWC_ERROR_DS_MEMORY_ANY: - case DWC_ERROR_FATAL: - *errorType = DWC_ETYPE_FATAL; - break; - case DWC_ERROR_ND_ANY: - *errorType = DWC_ETYPE_SHUTDOWN_ND; - break; - case DWC_ERROR_ND_HTTP: - case DWC_ERROR_SVL_HTTP: - case DWC_ERROR_PROF_HTTP: - *errorType = DWC_ETYPE_DISCONNECT; - break; - case DWC_ERROR_SVL_ANY: - case DWC_ERROR_PROF_ANY: - *errorType = DWC_ETYPE_SHOW_ERROR; - break; - case DWC_ERROR_NONE: - default: - *errorType = DWC_ETYPE_NO_ERROR; - break; - } - } - - return stDwcLastError; -} - -void DWC_ClearError(void) { - if (stDwcLastError != DWC_ERROR_FATAL) { - stDwcLastError = DWC_ERROR_NONE; - stDwcErrorCode = 0; - } -} - -BOOL DWCi_IsError(void) { - if (stDwcLastError != DWC_ERROR_NONE) { - return TRUE; - } - else { - return FALSE; - } -} - -void DWCi_SetError(DWCError error, int errorCode) { - if (stDwcLastError != DWC_ERROR_FATAL) { - stDwcLastError = error; - stDwcErrorCode = errorCode; - } - -#ifndef SDK_FINALROM - if (error == DWC_ERROR_FATAL) { - OS_TPrintf("FATALERROR_SET\n"); - } -#endif -} diff --git a/subprojects/NitroDWC/libraries/base/src/dwc_friend.c b/subprojects/NitroDWC/libraries/base/src/dwc_friend.c deleted file mode 100644 index ce4469ad88..0000000000 --- a/subprojects/NitroDWC/libraries/base/src/dwc_friend.c +++ /dev/null @@ -1,1391 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - - -static DWCFriendControl *stpFriendCnt = NULL; -static int stPersState = DWC_PERS_STATE_INIT; -static BOOL s_bInPersistThink = FALSE; -static BOOL s_bNeedCloseStatsConnection = FALSE; - - -static GPResult DWCi_GPProcess(void); -static void DWCi_CloseFriendProcess(void); -static void DWCi_UpdateFriendReq(DWCFriendData friendList[], int friendListLen); -static void DWCi_EndUpdateServers(void); -static void DWCi_DeleteFriendFromList(DWCFriendData friendList[], int index, int otherIndex); -static BOOL DWCi_RefreshFriendListForth(DWCFriendData friendList[], int index, int profileID); -static int DWCi_RefreshFriendListAll(DWCFriendData friendList[], int friendListLen, int profileID); -static GPResult DWCi_GPSendBuddyRequest(int profileID); -static BOOL DWCi_GetFriendBuddyStatus(const DWCFriendData *friendData, GPBuddyStatus *status); -static GPResult DWCi_HandleGPError(GPResult result); -static int DWCi_HandlePersError(int error); -static void DWCi_GPProfileSearchCallback(GPConnection *connection, GPProfileSearchResponseArg *arg, void *param); -static void DWCi_GPGetInfoCallback_RecvBuddyRequest(GPConnection *connection, GPGetInfoResponseArg *arg, void *param); -static void DWCi_GPGetInfoCallback_RecvAuthMessage(GPConnection *connection, GPGetInfoResponseArg *arg, void *param); -static void DWCi_StopPersLogin(DWCError error, int errorCode); -static void DWCi_SetPersistDataValuesAsync(int profileID, persisttype_t type, gsi_char *keyvalues, void *param); -static void DWCi_GetPersistDataValuesAsync(int profileID, persisttype_t type, gsi_char *keys, void *param); -static void DWCi_PersAuthCallback(int localid, int profileid, int authenticated, gsi_char *errmsg, void *instance); -static void DWCi_PersDataCallback(int localid, int profileid, persisttype_t type, int index, int success, time_t modified, char *data, int len, void *instance); -static void DWCi_PersDataSaveCallback(int localid, int profileid, persisttype_t type, int index, int success, time_t modified, void *instance); -static void DWCi_AddPersCallbackLevel(void); -static void DWCi_SubPersCallbackLevel(void); -static u32 DWCi_GetPersCallbackLevel(void); - - -u8 DWC_GetFriendStatus(const DWCFriendData *friendData, char *statusString) { - return DWC_GetFriendStatusSC(friendData, NULL, NULL, statusString); -} - -u8 DWC_GetFriendStatusSC(const DWCFriendData *friendData, u8 *maxEntry, u8 *numEntry, char *statusString) { - char valueStr[4]; - int len; - GPBuddyStatus status; - - if (DWCi_GetFriendBuddyStatus(friendData, &status)) { - if (status.status == DWC_STATUS_MATCH_SC_SV) { - if (maxEntry) { - len = DWC_GetCommonValueString(DWC_GP_SSTR_KEY_MATCH_SC_MAX, valueStr, status.statusString, '/'); - - if (len > 0) { - *maxEntry = (u8)strtoul(valueStr, NULL, 10); - } - else { - *maxEntry = 0; - } - } - - if (numEntry) { - len = DWC_GetCommonValueString(DWC_GP_SSTR_KEY_MATCH_SC_NUM, valueStr, status.statusString, '/'); - - if (len > 0) { - *numEntry = (u8)strtoul(valueStr, NULL, 10); - } - else { - *numEntry = 0; - } - } - } - else { - if (maxEntry) { - *maxEntry = 0; - } - if (numEntry) { - *numEntry = 0; - } - } - - if (statusString) { - strcpy(statusString, status.locationString); - } - - return status.status; - } - else { - if (maxEntry) { - *maxEntry = 0; - } - if (numEntry) { - *numEntry = 0; - } - - return DWC_STATUS_OFFLINE; - } -} - -u8 DWC_GetFriendStatusData(const DWCFriendData *friendData, char *statusData, int *size) { - return DWC_GetFriendStatusDataSC(friendData, NULL, NULL, statusData, size); -} - -u8 DWC_GetFriendStatusDataSC(const DWCFriendData *friendData, u8 *maxEntry, u8 *numEntry, char *statusData, int *size) { - u8 ret; - char statusString[DWC_GS_STATUS_STRING_LEN]; - - ret = DWC_GetFriendStatusSC(friendData, maxEntry, numEntry, statusString); - - if (ret == DWC_STATUS_OFFLINE) { - *size = -1; - return ret; - } - - *size = DWC_Auth_Base64Decode(statusString, strlen(statusString), NULL, 0); - - if (!statusData || (*size == -1)) { - return ret; - } - - (void)DWC_Auth_Base64Decode(statusString, strlen(statusString), statusData, (u32) * size); - - return ret; -} - -int DWC_GetNumFriend(const DWCFriendData friendList[], int friendListLen) { - int count = 0; - int i; - - if (!friendList) { - return 0; - } - - for (i = 0; i < friendListLen; i++) { - if (DWCi_Acc_IsValidFriendData(&friendList[i])) { - count++; - } - } - - return count; -} - -BOOL DWC_SetOwnStatusString(const char *statusString) { - if ((stpFriendCnt == NULL) || !DWCi_CheckLogin()) { - return FALSE; - } - - if (DWCi_SetGPStatus(DWC_GP_STATUS_NO_CHANGE, NULL, statusString)) { - return FALSE; - } - else { - return TRUE; - } -} - -BOOL DWC_GetOwnStatusString(char *statusString) { - if ((stpFriendCnt == NULL) || (*stpFriendCnt->pGpObj == NULL) || !statusString) { - return FALSE; - } - - strcpy(statusString, ((GPIConnection *)*stpFriendCnt->pGpObj)->lastLocationString); - - return TRUE; -} - -BOOL DWC_SetOwnStatusData(const char *statusData, u32 size) { - char statusString[DWC_GS_STATUS_STRING_LEN]; - int len; - - if (!stpFriendCnt || !DWCi_CheckLogin()) { - return FALSE; - } - - len = DWC_Auth_Base64Encode(statusData, size, statusString, DWC_GS_STATUS_STRING_LEN - 1); - - if (len == -1) { - return FALSE; - } - - statusString[len] = '\0'; - - if (DWCi_SetGPStatus(DWC_GP_STATUS_NO_CHANGE, NULL, statusString)) { - return FALSE; - } - else { - return TRUE; - } -} - -int DWC_GetOwnStatusData(char *statusData) { - int size; - - if (!stpFriendCnt || !DWCi_CheckLogin()) { - return FALSE; - } - - size = DWC_Auth_Base64Decode(((GPIConnection *)*stpFriendCnt->pGpObj)->lastLocationString, strlen(((GPIConnection *)*stpFriendCnt->pGpObj)->lastLocationString), NULL, 0); - - if (!statusData || (size == -1)) { - return size; - } - - return DWC_Auth_Base64Decode(((GPIConnection *)*stpFriendCnt->pGpObj)->lastLocationString, strlen(((GPIConnection *)*stpFriendCnt->pGpObj)->lastLocationString), statusData, (u32)size); -} - -BOOL DWC_CanChangeFriendList(void) { - if ((stpFriendCnt != NULL) && ((stpFriendCnt->buddyUpdateState == DWC_BUDDY_UPDATE_STATE_CHECK) || (stpFriendCnt->buddyUpdateState == DWC_BUDDY_UPDATE_STATE_PSEARCH))) { - return FALSE; - } - else { - return TRUE; - } -} - -void DWC_DeleteBuddyFriendData(DWCFriendData *friendData) { - int profileID; - - if ((stpFriendCnt != NULL) && DWCi_CheckLogin() && (DWCi_GetUserData() != NULL) && ((profileID = ((DWC_GetGsProfileId(DWCi_GetUserData(), friendData)) != 0))) && (profileID != -1) && gpIsBuddy(stpFriendCnt->pGpObj, profileID)) { - (void)gpDeleteBuddy(stpFriendCnt->pGpObj, profileID); - DWC_Printf(DWC_REPORTFLAG_DEBUG, "DWC_DeleteBuddyFriendData : Deleted buddy.\n"); - } - else { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "DWC_DeleteBuddyFriendData : Only clear data.\n"); - } - - MI_CpuClear8(friendData, sizeof(DWCFriendData)); -} - -BOOL DWC_SetBuddyFriendCallback(DWCBuddyFriendCallback callback, void *param) { - if (!stpFriendCnt) { - return FALSE; - } - - stpFriendCnt->buddyCallback = callback; - stpFriendCnt->buddyParam = param; - - return TRUE; -} - -BOOL DWC_SetFriendStatusCallback(DWCFriendStatusCallback callback, void *param) { - if (!stpFriendCnt) { - return FALSE; - } - - stpFriendCnt->statusCallback = callback; - - if (param != NULL) { - stpFriendCnt->statusParam = param; - } - - return TRUE; -} - -int DWC_Base64Encode(const char *src, const u32 srclen, char *dst, const u32 dstlen) { - return DWC_Auth_Base64Encode(src, srclen, dst, dstlen); -} - -int DWC_Base64Decode(const char *src, const u32 srclen, char *dst, const u32 dstlen) { - return DWC_Auth_Base64Decode(src, srclen, dst, dstlen); -} - -BOOL DWC_LoginToStorageServerAsync(DWCStorageLoginCallback callback, void *param) { - char response[33]; - char *authToken, *partnerChallenge; - int persResult; - int i; - - if (!DWCi_GetAuthInfo(&authToken, &partnerChallenge) || IsStatsConnected()) { - return FALSE; - } - - stpFriendCnt->persLoginCallback = callback; - stpFriendCnt->persLoginParam = param; - - for (i = 0; i < DWC_DNS_ERROR_RETRY_MAX; i++) { - stPersState = DWC_PERS_STATE_LOGIN; - persResult = InitStatsConnection(0); - - if (persResult == GE_NOERROR) { - break; - } - - if ((persResult != GE_NODNS) || (i == DWC_DNS_ERROR_RETRY_MAX - 1)) { - DWCi_HandlePersError(persResult); - - return TRUE; - } - } - - (void)GenerateAuth(GetChallenge(NULL), partnerChallenge, response); - - PreAuthenticatePlayerPartner(0, authToken, response, DWCi_PersAuthCallback, NULL); - DWCi_AddPersCallbackLevel(); - - return TRUE; -} - -void DWC_LogoutFromStorageServer(void) { - if (s_bInPersistThink == TRUE) { - s_bNeedCloseStatsConnection = TRUE; - } - else { - CloseStatsConnection(); - } - - stPersState = DWC_PERS_STATE_INIT; - - if (stpFriendCnt != NULL) { - stpFriendCnt->persCallbackLevel = 0; - } -} - -BOOL DWC_SetStorageServerCallback(DWCSaveToServerCallback saveCallback, DWCLoadFromServerCallback loadCallback) { - if (!stpFriendCnt) { - return FALSE; - } - - stpFriendCnt->saveCallback = saveCallback; - stpFriendCnt->loadCallback = loadCallback; - - return TRUE; -} - -BOOL DWC_SavePublicDataAsync(char *keyvalues, void *param) { - if ((stPersState != DWC_PERS_STATE_CONNECTED) || DWCi_IsError() || !stpFriendCnt) { - return FALSE; - } - - DWCi_SetPersistDataValuesAsync(stpFriendCnt->profileID, pd_public_rw, keyvalues, param); - - return TRUE; -} - -BOOL DWC_SavePrivateDataAsync(char *keyvalues, void *param) { - if ((stPersState != DWC_PERS_STATE_CONNECTED) || DWCi_IsError() || !stpFriendCnt) { - return FALSE; - } - - DWCi_SetPersistDataValuesAsync(stpFriendCnt->profileID, pd_private_rw, keyvalues, param); - - return TRUE; -} - -BOOL DWC_LoadOwnPublicDataAsync(char *keys, void *param) { - if ((stPersState != DWC_PERS_STATE_CONNECTED) || DWCi_IsError() || !stpFriendCnt) { - return FALSE; - } - - DWCi_GetPersistDataValuesAsync(stpFriendCnt->profileID, pd_public_rw, keys, param); - - return TRUE; -} - -BOOL DWC_LoadOwnPrivateDataAsync(char *keys, void *param) { - if ((stPersState != DWC_PERS_STATE_CONNECTED) || DWCi_IsError() || !stpFriendCnt) { - return FALSE; - } - - DWCi_GetPersistDataValuesAsync(stpFriendCnt->profileID, pd_private_rw, keys, param); - - return TRUE; -} - -BOOL DWC_LoadOthersDataAsync(char *keys, int index, void *param) { - if ((stPersState != DWC_PERS_STATE_CONNECTED) || DWCi_IsError() || !stpFriendCnt || !DWCi_GetProfileIDFromList(index)) { - return FALSE; - } - - DWCi_GetPersistDataValuesAsync(DWCi_GetProfileIDFromList(index), pd_public_rw, keys, param); - - return TRUE; -} - -void DWCi_FriendInit(DWCFriendControl *friendcnt, GPConnection *pGpObj, const u16 *playerName, DWCFriendData *friendList, int friendListLen) { - SDK_ASSERT(friendcnt); - - stpFriendCnt = friendcnt; - stpFriendCnt->state = DWC_FRIEND_STATE_INIT; - stpFriendCnt->pGpObj = pGpObj; - stpFriendCnt->gpProcessCount = 0; - stpFriendCnt->lastGpProcess = 0; - stpFriendCnt->friendListLen = friendListLen; - stpFriendCnt->friendList = friendList; - stpFriendCnt->buddyUpdateIdx = 0; - stpFriendCnt->friendListChanged = 0; - stpFriendCnt->buddyUpdateState = DWC_BUDDY_UPDATE_STATE_WAIT; - stpFriendCnt->svUpdateComplete = 0; - stpFriendCnt->persCallbackLevel = 0; - stpFriendCnt->profileID = 0; - stpFriendCnt->playerName = playerName; - stpFriendCnt->updateCallback = NULL; - stpFriendCnt->updateParam = NULL; - stpFriendCnt->statusCallback = NULL; - stpFriendCnt->statusParam = NULL; - stpFriendCnt->deleteCallback = NULL; - stpFriendCnt->deleteParam = NULL; - stpFriendCnt->buddyCallback = NULL; - stpFriendCnt->buddyParam = NULL; - stpFriendCnt->persLoginCallback = NULL; - stpFriendCnt->persLoginParam = NULL; - stpFriendCnt->saveCallback = NULL; - stpFriendCnt->loadCallback = NULL; -} - -void DWCi_FriendProcess(void) { - GPResult gpResult; - - if (!stpFriendCnt || DWCi_IsError()) { - return; - } - else if (!stpFriendCnt->friendList) { - if (stpFriendCnt->pGpObj && *stpFriendCnt->pGpObj) { - gpResult = DWCi_GPProcess(); - } - return; - } - - if (DWCi_GetPersCallbackLevel() || IsStatsConnected()) { - s_bInPersistThink = TRUE; - s_bNeedCloseStatsConnection = FALSE; - - if (!PersistThink()) { - s_bInPersistThink = FALSE; - DWC_Printf(DWC_REPORTFLAG_WARNING, "Connection to the stats server was lost\n"); -#if 0 - DWCi_StopFriendProcess(DWC_ERROR_NETWORK, DWC_ECODE_SEQ_FRIEND + DWC_ECODE_GS_PERS + DWC_ECODE_TYPE_NETWORK); - return; -#endif - } - - s_bInPersistThink = FALSE; - - if (s_bNeedCloseStatsConnection == TRUE) { - s_bNeedCloseStatsConnection = FALSE; - CloseStatsConnection(); - } - } - - if (stpFriendCnt->pGpObj && *stpFriendCnt->pGpObj) { - gpResult = DWCi_GPProcess(); - - if (gpResult != GP_NO_ERROR) { - return; - } - - if (stpFriendCnt->state == DWC_FRIEND_STATE_INIT) { - return; - } - - if (stpFriendCnt->friendList && (stpFriendCnt->buddyUpdateState != DWC_BUDDY_UPDATE_STATE_COMPLETE) && (stpFriendCnt->gpProcessCount > DWC_FRIEND_UPDATE_WAIT_COUNT)) { - if ((stpFriendCnt->buddyUpdateState == DWC_BUDDY_UPDATE_STATE_WAIT) || (stpFriendCnt->buddyUpdateState == DWC_BUDDY_UPDATE_STATE_CHECK)) { - DWCi_UpdateFriendReq(stpFriendCnt->friendList, stpFriendCnt->friendListLen); - } - - if (stpFriendCnt->buddyUpdateIdx >= stpFriendCnt->friendListLen) { - stpFriendCnt->buddyUpdateState = DWC_BUDDY_UPDATE_STATE_COMPLETE; - stpFriendCnt->svUpdateComplete++; - } - } - } - - if (stpFriendCnt->svUpdateComplete >= 2) { - stpFriendCnt->svUpdateComplete = 0; - DWCi_EndUpdateServers(); - } -} - -void DWCi_UpdateServersAsync(const char *authToken, const char *partnerChallenge, DWCUpdateServersCallback updateCallback, void *updateParam, DWCFriendStatusCallback statusCallback, void *statusParam, DWCDeleteFriendListCallback deleteCallback, void *deleteParam) { -#if 0 - char response[33]; - int persResult; - int i; -#else -#pragma unused(authToken) -#pragma unused(partnerChallenge) -#endif - - SDK_ASSERT(updateCallback); - - stpFriendCnt->updateCallback = updateCallback; - stpFriendCnt->updateParam = updateParam; - stpFriendCnt->statusCallback = statusCallback; - stpFriendCnt->statusParam = statusParam; - stpFriendCnt->deleteCallback = deleteCallback; - stpFriendCnt->deleteParam = deleteParam; - stpFriendCnt->friendListChanged = 0; - stpFriendCnt->buddyUpdateState = DWC_BUDDY_UPDATE_STATE_WAIT; - stpFriendCnt->svUpdateComplete = 0; - stpFriendCnt->buddyUpdateIdx = 0; - stpFriendCnt->state = DWC_FRIEND_STATE_PERS_LOGIN; - - if (stpFriendCnt->friendList == NULL) { - stpFriendCnt->svUpdateComplete++; - } - -#if 0 - if (stpFriendCnt->playerName[0] != '\0') { - for (i = 0; i < DWC_DNS_ERROR_RETRY_MAX; i++) { - persResult = InitStatsConnection(0); - - if (!persResult) { - break; - } - - if ((persResult != GE_NODNS) || (i == DWC_DNS_ERROR_RETRY_MAX - 1)) { - DWCi_HandlePersError(persResult); - return; - } - } - - (void)GenerateAuth(GetChallenge(NULL), partnerChallenge, response); - PreAuthenticatePlayerPartner(0, authToken, response, DWCi_PersAuthCallback, NULL); - - DWCi_AddPersCallbackLevel(); - } - else { -#endif - stpFriendCnt->svUpdateComplete++; -#if 0 -} -#endif -} - -void DWCi_StopFriendProcess(DWCError error, int errorCode) { - if (!stpFriendCnt || (error == DWC_ERROR_NONE)) { - return; - } - - DWCi_SetError(error, errorCode); - - if ((stpFriendCnt->state != DWC_FRIEND_STATE_INIT) && (stpFriendCnt->state != DWC_FRIEND_STATE_LOGON)) { - stpFriendCnt->updateCallback(error, stpFriendCnt->friendListChanged, stpFriendCnt->updateParam); - } - - DWCi_CloseFriendProcess(); -} - -void DWCi_GPRecvBuddyRequestCallback(GPConnection *connection, GPRecvBuddyRequestArg *arg, void *param) { -#pragma unused(param) - - DWC_Printf(DWC_REPORTFLAG_UPDATE_SV, "Received buddy request from %u\n", arg->profile); - - if (!stpFriendCnt->friendList) { - return; - } - - DWC_Printf(DWC_REPORTFLAG_UPDATE_SV, "Begin to search gpInfo.\n"); - gpGetInfo(connection, arg->profile, GP_DONT_CHECK_CACHE, GP_NON_BLOCKING, (GPCallback)DWCi_GPGetInfoCallback_RecvBuddyRequest, NULL); -} - -BOOL DWCi_GPRecvBuddyAuthCallback(GPConnection *connection, GPRecvBuddyMessageArg *arg, void *param) { -#pragma unused(param) - char *message = arg->message; - - if (!strcmp(message, "I have authorized your request to add me to your list")) { - DWC_Printf(DWC_REPORTFLAG_UPDATE_SV, "Received buddy authenticated message from %u.\n", arg->profile); - DWC_Printf(DWC_REPORTFLAG_UPDATE_SV, "Begin to search gpInfo.\n"); - gpGetInfo(connection, arg->profile, GP_DONT_CHECK_CACHE, GP_NON_BLOCKING, (GPCallback)DWCi_GPGetInfoCallback_RecvAuthMessage, NULL); - - return TRUE; - } - - return FALSE; -} - -void DWCi_GPRecvBuddyStatusCallback(GPConnection *connection, GPRecvBuddyStatusArg *arg, void *param) { -#pragma unused(param) - int friendIdx; - GPBuddyStatus status; - - DWC_Printf(DWC_REPORTFLAG_UPDATE_SV, "RECV update friend status. p:%d\n", arg->profile); - - if (stpFriendCnt->statusCallback) { - friendIdx = DWCi_GetFriendListIndex(arg->profile); - - if (friendIdx == -1) { - return; - } - - (void)gpGetBuddyStatus(connection, arg->index, &status); - stpFriendCnt->statusCallback(friendIdx, (u8)status.status, status.locationString, stpFriendCnt->statusParam); - } -} - -DWCFriendData*DWCi_GetFriendList(void) { - if (stpFriendCnt) { - return stpFriendCnt->friendList; - } - else { - return NULL; - } -} - -int DWCi_GetFriendListLen(void) { - if (stpFriendCnt) { - return stpFriendCnt->friendListLen; - } - else { - return 0; - } -} - -int DWCi_GetProfileIDFromList(int index) { - int profileID; - - if (stpFriendCnt->friendList == NULL) { - return 0; - } - - profileID = DWC_GetGsProfileId(DWCi_GetUserData(), &stpFriendCnt->friendList[index]); - - if (!profileID || (profileID == -1)) { - return 0; - } - else { - return profileID; - } -} - -int DWCi_GetFriendListIndex(int profileID) { - int i; - - if (!stpFriendCnt || !profileID) { - return -1; - } - - for (i = 0; i < stpFriendCnt->friendListLen; i++) { - if (DWCi_GetProfileIDFromList(i) == profileID) { - return i; - } - } - - return -1; -} - -void DWCi_InitGPProcessCount(void) { - if (stpFriendCnt) { - stpFriendCnt->gpProcessCount = 0; - stpFriendCnt->lastGpProcess = OS_GetTick(); - } -} - -GPResult DWCi_SetGPStatus(int status, const char *statusString, const char *locationString) { -#if 1 - if ((stpFriendCnt == NULL) || !DWCi_CheckLogin()) { - return GP_NO_ERROR; - } -#else - if ((stpFriendCnt == NULL) || (stpFriendCnt->pGpObj == NULL)) { - return GP_NO_ERROR; - } -#endif - - if (status == DWC_GP_STATUS_NO_CHANGE) { - status = ((GPIConnection *)*stpFriendCnt->pGpObj)->lastStatus; - } - else { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "Change GP status->status %d\n", status); - } - - if (!statusString) { - statusString = ((GPIConnection *)*stpFriendCnt->pGpObj)->lastStatusString; - } - else { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "Change GP status->statusString %s\n", statusString); - } - - if (!locationString) { - locationString = ((GPIConnection *)*stpFriendCnt->pGpObj)->lastLocationString; - } - else { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "Change GP status->locationString %s\n", locationString); - } - - return gpSetStatus(stpFriendCnt->pGpObj, (GPEnum)status, statusString, locationString); -} - -BOOL DWCi_GetGPStatus(int *status, char *statusString, char *locationString) { - if ((stpFriendCnt == NULL) || (*stpFriendCnt->pGpObj == NULL)) { - return FALSE; - } - - *status = ((GPIConnection *)*stpFriendCnt->pGpObj)->lastStatus; - strcpy(statusString, ((GPIConnection *)*stpFriendCnt->pGpObj)->lastStatusString); - strcpy(locationString, ((GPIConnection *)*stpFriendCnt->pGpObj)->lastLocationString); - - return TRUE; -} - -void DWCi_CallBuddyFriendCallback(int index) { - if (stpFriendCnt->buddyCallback && (stpFriendCnt->state != DWC_FRIEND_STATE_PERS_LOGIN)) { - stpFriendCnt->buddyCallback(index, stpFriendCnt->buddyParam); - } - - if (stpFriendCnt->statusCallback) { - u8 st; - GPBuddyStatus status; - - st = DWC_GetFriendStatus(&stpFriendCnt->friendList[index], status.locationString); - stpFriendCnt->statusCallback(index, st, status.locationString, stpFriendCnt->statusParam); - } -} - -void DWCi_ShutdownFriend(void) { - stpFriendCnt = NULL; -} - -static GPResult DWCi_GPProcess(void) { - GPResult result = GP_NO_ERROR; - - if (OS_TicksToMilliSeconds(OS_GetTick() - stpFriendCnt->lastGpProcess) >= DWC_GP_PROCESS_INTERVAL) { - stpFriendCnt->gpProcessCount++; - -#if defined(DWC_ENABLE_KEEPALIVE_TO_GPSERVER) - if ((stpFriendCnt->gpProcessCount % DWC_GP_KEEP_ALIVE_COUNT) == 0) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "GP:keep alive\n"); - (void)gpSetInfoi(stpFriendCnt->pGpObj, GP_INTERESTS1, 0); - } -#endif - result = gpProcess(stpFriendCnt->pGpObj); - stpFriendCnt->lastGpProcess = OS_GetTick(); - } - - return result; -} - -static void DWCi_CloseFriendProcess(void) { - if (!stpFriendCnt) { - return; - } - -#if 0 - CloseStatsConnection(); -#endif - - stpFriendCnt->state = DWC_FRIEND_STATE_INIT; - stpFriendCnt->buddyUpdateState = DWC_BUDDY_UPDATE_STATE_WAIT; - stpFriendCnt->svUpdateComplete = 0; - -} - -static void DWCi_UpdateFriendReq(DWCFriendData friendList[], int friendListLen) { - char userName[21]; - int numBuddy; - int profileID; - int i, j; - GPBuddyStatus status; - GPResult gpResult; - - if (stpFriendCnt->buddyUpdateState == DWC_BUDDY_UPDATE_STATE_WAIT) { - gpResult = gpGetNumBuddies(stpFriendCnt->pGpObj, &numBuddy); - - (void)DWCi_HandleGPError(gpResult); - DWC_Printf(DWC_REPORTFLAG_UPDATE_SV, "gpGetNumBuddies -> %d\n", numBuddy); - - for (i = 0; i < numBuddy; i++) { - gpResult = gpGetBuddyStatus(stpFriendCnt->pGpObj, i, &status); - (void)DWCi_HandleGPError(gpResult); - - for (j = 0; j < friendListLen; j++) { - if (DWCi_GetProfileIDFromList(j) == status.profile) { - if (!DWC_IsBuddyFriendData(&friendList[j])) { - DWC_SetGsProfileId(&friendList[j], status.profile); - DWCi_SetBuddyFriendData(&friendList[j]); - - stpFriendCnt->friendListChanged = 1; - } - break; - } - } - - if (j == friendListLen) { - DWC_Printf(DWC_REPORTFLAG_UPDATE_SV, "Deleted buddy %u\n", status.profile); - - gpResult = gpDeleteBuddy(stpFriendCnt->pGpObj, status.profile); - (void)DWCi_HandleGPError(gpResult); - - numBuddy--; - i--; - } - } - - stpFriendCnt->buddyUpdateState = DWC_BUDDY_UPDATE_STATE_CHECK; - } - - for ( ; stpFriendCnt->buddyUpdateIdx < friendListLen; stpFriendCnt->buddyUpdateIdx++) { - profileID = DWCi_GetProfileIDFromList(stpFriendCnt->buddyUpdateIdx); - - if (profileID) { - if (DWCi_RefreshFriendListForth(friendList, stpFriendCnt->buddyUpdateIdx, profileID)) { - continue; - } - - gpResult = gpGetBuddyIndex(stpFriendCnt->pGpObj, profileID, &i); - (void)DWCi_HandleGPError(gpResult); - - if (i == -1) { - (void)DWCi_GPSendBuddyRequest(profileID); - -#ifndef SDK_FINALROM - if (DWC_IsBuddyFriendData(&friendList[stpFriendCnt->buddyUpdateIdx])) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "Local only friend\n"); - } -#endif - } - } - else if (DWC_GetGsProfileId(DWCi_GetUserData(), &friendList[stpFriendCnt->buddyUpdateIdx]) == -1) { - DWC_LoginIdToUserName(DWCi_GetUserData(), &friendList[stpFriendCnt->buddyUpdateIdx], userName); - gpProfileSearch(stpFriendCnt->pGpObj, NULL, NULL, NULL, NULL, userName, NULL, GP_NON_BLOCKING, (GPCallback)DWCi_GPProfileSearchCallback, (void *)stpFriendCnt->buddyUpdateIdx); - DWC_Printf(DWC_REPORTFLAG_UPDATE_SV, "Called gpProfileSearch().\n"); - - stpFriendCnt->buddyUpdateState = DWC_BUDDY_UPDATE_STATE_PSEARCH; - break; - } - } - - return; -} - -static void DWCi_EndUpdateServers(void) { - stpFriendCnt->updateCallback(DWC_ERROR_NONE, stpFriendCnt->friendListChanged, stpFriendCnt->updateParam); - stpFriendCnt->state = DWC_FRIEND_STATE_LOGON; -} - -static void DWCi_DeleteFriendFromList(DWCFriendData friendData[], int deleteIndex, int otherIndex) { - if (stpFriendCnt) { - MI_CpuClear8(&friendData[deleteIndex], sizeof(DWCFriendData)); - - if (stpFriendCnt->deleteCallback) { - stpFriendCnt->deleteCallback(deleteIndex, otherIndex, stpFriendCnt->deleteParam); - } - } -} - -static BOOL DWCi_RefreshFriendListForth(DWCFriendData friendList[], int index, int profileID) { - int pid_i; - int i; - - for (i = 0; i < index; i++) { - pid_i = DWCi_GetProfileIDFromList(i); - - if (pid_i && (pid_i == profileID)) { - DWC_Printf(DWC_REPORTFLAG_UPDATE_SV, "Found same friend in the list [%d] & [%d], %d\n", i, index, DWC_GetFriendDataType(&friendList[i])); - - if (DWC_IsBuddyFriendData(&friendList[index]) && !DWC_IsBuddyFriendData(&friendList[i])) { - DWCi_DeleteFriendFromList(friendList, i, index); - } - else { - DWCi_DeleteFriendFromList(friendList, index, i); - } - - stpFriendCnt->friendListChanged = 1; - return TRUE; - } - } - - return FALSE; -} - -static int DWCi_RefreshFriendListAll(DWCFriendData friendList[], int friendListLen, int profileID) { - int index = -1; - int pid_i; - int i, j; - - for (i = 0; i < friendListLen; i++) { - pid_i = DWCi_GetProfileIDFromList(i); - - if (pid_i == 0) { - continue; - } - - if (pid_i == profileID) { - index = i; - } - - for (j = i + 1; j < friendListLen; j++) { - if (pid_i == DWCi_GetProfileIDFromList(j)) { - if ((DWC_GetFriendDataType(&friendList[i]) == DWC_FRIENDDATA_FRIEND_KEY) && (DWC_GetFriendDataType(&friendList[j]) == DWC_FRIENDDATA_GS_PROFILE_ID)) { - DWC_SetGsProfileId(&friendList[i], pid_i); - } - - if (DWC_IsBuddyFriendData(&friendList[j])) { - DWCi_SetBuddyFriendData(&friendList[i]); - } - - DWC_Printf(DWC_REPORTFLAG_UPDATE_SV, "Found same friend in the list [%d] & [%d], %d\n", i, j, DWC_GetFriendDataType(&friendList[i])); - DWCi_DeleteFriendFromList(friendList, j, i); - - stpFriendCnt->friendListChanged = 1; - } - } - } - - return index; -} - -static GPResult DWCi_GPSendBuddyRequest(int profileID) { - GPResult gpResult; - - gpResult = gpSendBuddyRequest(stpFriendCnt->pGpObj, profileID, ""); - (void)DWCi_HandleGPError(gpResult); - - DWC_Printf(DWC_REPORTFLAG_UPDATE_SV, "Send buddy request to %u\n", profileID); - - return gpResult; -} - -static BOOL DWCi_GetFriendBuddyStatus(const DWCFriendData *friendData, GPBuddyStatus *status) { - u8 ret; - int buddyIdx = 0; - int profileid; - - SDK_ASSERT(friendData); - SDK_ASSERT(status); - - if (!stpFriendCnt || !DWCi_CheckLogin()) { - return FALSE; - } - - profileid = DWC_GetGsProfileId(DWCi_GetUserData(), friendData); - - if ((profileid > 0) && gpGetBuddyIndex(stpFriendCnt->pGpObj, profileid, &buddyIdx)) { - ret = FALSE; - } - else if ((profileid <= 0) || (buddyIdx == -1)) { - ret = FALSE; - } - else { - if (gpGetBuddyStatus(stpFriendCnt->pGpObj, buddyIdx, status)) { - ret = FALSE; - } - else { - ret = TRUE; - } - } - - return ret; -} - -static GPResult DWCi_HandleGPError(GPResult result) { - int errorCode; - DWCError dwcError; - - if (result == GP_NO_ERROR) { - return GP_NO_ERROR; - } - - DWC_Printf(DWC_REPORTFLAG_ERROR, "Friend, GP error %d\n", result); - - switch (result) { - case GP_MEMORY_ERROR: - dwcError = DWC_ERROR_FATAL; - errorCode = DWC_ECODE_TYPE_ALLOC; - break; - case GP_PARAMETER_ERROR: - dwcError = DWC_ERROR_FATAL; - errorCode = DWC_ECODE_TYPE_PARAM; - break; - case GP_NETWORK_ERROR: - dwcError = DWC_ERROR_NETWORK; - errorCode = DWC_ECODE_TYPE_NETWORK; - break; - case GP_SERVER_ERROR: - dwcError = DWC_ERROR_NETWORK; - errorCode = DWC_ECODE_TYPE_SERVER; - break; - } - - errorCode += DWC_ECODE_SEQ_FRIEND + DWC_ECODE_GS_GP; - DWCi_StopFriendProcess(dwcError, errorCode); - - return result; -} - -static int DWCi_HandlePersError(int error) { - int errorCode; - DWCError dwcError; - - if (error == GE_NOERROR) { - return GE_NOERROR; - } - - DWC_Printf(DWC_REPORTFLAG_ERROR, "Friend, persistent error %d\n", error); - - switch (error) { - case GE_NOSOCKET: - dwcError = DWC_ERROR_NETWORK; - errorCode = DWC_ECODE_TYPE_SOCKET; - break; - case GE_NODNS: - dwcError = DWC_ERROR_NETWORK; - errorCode = DWC_ECODE_TYPE_DNS; - break; - case GE_NOCONNECT: - dwcError = DWC_ERROR_NETWORK; - errorCode = DWC_ECODE_TYPE_SERVER; - break; - case GE_DATAERROR: - dwcError = DWC_ERROR_NETWORK; - errorCode = DWC_ECODE_TYPE_DATA; - break; - case GE_TIMEDOUT: - dwcError = DWC_ERROR_NETWORK; - errorCode = DWC_ECODE_TYPE_TIMEOUT; - break; - } - -#if 0 - errorCode += DWC_ECODE_SEQ_FRIEND + DWC_ECODE_GS_PERS; - DWCi_StopFriendProcess(dwcError, errorCode); -#else - errorCode += DWC_ECODE_SEQ_ETC + DWC_ECODE_GS_PERS; - - if (stPersState == DWC_PERS_STATE_LOGIN) { - DWCi_StopPersLogin(dwcError, errorCode); - } -#endif - - return error; -} - -static void DWCi_GPProfileSearchCallback(GPConnection *connection, GPProfileSearchResponseArg *arg, void *param) { - int idx; - GPResult gpResult; - int friendIdx = (int)param; - - DWC_Printf(DWC_REPORTFLAG_DEBUG, "ProfileSearch: num:%d m:%x\n", arg->numMatches, arg->more); - - if ((arg->result == GP_NO_ERROR) && arg->numMatches && (DWC_GetFriendDataType(&stpFriendCnt->friendList[friendIdx]) != DWC_FRIENDDATA_NODATA)) { - int match_index; - - if (arg->numMatches > 1) { - DWC_Printf(DWC_REPORTFLAG_UPDATE_SV, "Happned to find %d profiles.\n", arg->numMatches); - } - - if (stpFriendCnt->state == DWC_FRIEND_STATE_PERS_LOGIN) { - for (match_index = 0 ; match_index < arg->numMatches ; ++match_index) { - if (DWCi_RefreshFriendListForth(stpFriendCnt->friendList, friendIdx, arg->matches[match_index].profile)) { - stpFriendCnt->buddyUpdateIdx++; - stpFriendCnt->buddyUpdateState = DWC_BUDDY_UPDATE_STATE_CHECK; - arg->more = GP_DONE; - return; - } - } - - for (match_index = 0 ; match_index < arg->numMatches ; ++match_index) { - gpResult = gpGetBuddyIndex(connection, arg->matches[match_index].profile, &idx); - (void)DWCi_HandleGPError(gpResult); - - if (idx == -1) { - (void)DWCi_GPSendBuddyRequest(arg->matches[match_index].profile); - } - else { - DWC_SetGsProfileId(&stpFriendCnt->friendList[friendIdx], arg->matches->profile); - DWCi_SetBuddyFriendData(&stpFriendCnt->friendList[friendIdx]); - DWCi_CallBuddyFriendCallback(friendIdx); - - stpFriendCnt->buddyUpdateIdx++; - stpFriendCnt->buddyUpdateState = DWC_BUDDY_UPDATE_STATE_CHECK; - arg->more = GP_DONE; - stpFriendCnt->friendListChanged = 1; - - return; - } - } - - if (arg->more != GP_MORE) { - stpFriendCnt->buddyUpdateIdx++; - stpFriendCnt->buddyUpdateState = DWC_BUDDY_UPDATE_STATE_CHECK; - } - else { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "more profiles will come...\n"); - } - } - } - else if (arg->result) { - if (DWCi_HandleGPError(arg->result)) { - return; - } - } - else if ((stpFriendCnt->state == DWC_FRIEND_STATE_PERS_LOGIN) || (DWC_GetFriendDataType(&stpFriendCnt->friendList[friendIdx]) == DWC_FRIENDDATA_NODATA)) { - stpFriendCnt->buddyUpdateIdx++; - stpFriendCnt->buddyUpdateState = DWC_BUDDY_UPDATE_STATE_CHECK; - } -} - -static void DWCi_GPGetInfoCallback_RecvBuddyRequest(GPConnection *connection, GPGetInfoResponseArg *arg, void *param) { -#pragma unused(param) - char userName[21]; - char gamecode_str[5]; - unsigned int gamecode; - GPResult gpResult; - int i; - BOOL confirm = FALSE; - - if (arg->result != GP_NO_ERROR) { - DWC_Printf(DWC_REPORTFLAG_LOGIN, " ERROR: GetInfo Req. why??? : %d\n", arg->result); - - return; - } - - DWC_Printf(DWC_REPORTFLAG_DEBUG, "GetInfo Req: profileID %u, lastname '%s'.\n", arg->profile, arg->lastname); - - for (i = 0; i < stpFriendCnt->friendListLen; i++) { - if (DWC_GetFriendDataType(&stpFriendCnt->friendList[i]) == DWC_FRIENDDATA_LOGIN_ID) { - DWC_LoginIdToUserName(DWCi_GetUserData(), &stpFriendCnt->friendList[i], userName); - - if (strcmp(userName, arg->lastname) == 0) { - gpResult = gpAuthBuddyRequest(connection, arg->profile); - DWC_SetGsProfileId(&stpFriendCnt->friendList[i], arg->profile); - confirm = TRUE; - DWC_Printf(DWC_REPORTFLAG_UPDATE_SV, "Auth buddy request from %u, friend[%d]mp.\n", arg->profile, i); - } - } - else if ((DWC_GetFriendDataType(&stpFriendCnt->friendList[i]) == DWC_FRIENDDATA_GS_PROFILE_ID) || (DWC_GetFriendDataType(&stpFriendCnt->friendList[i]) == DWC_FRIENDDATA_FRIEND_KEY)) { - gamecode = DWCi_GetUserData()->gamecode; - OS_SNPrintf(gamecode_str, 5, "%c%c%c%c", (u8)(gamecode >> 24), (u8)(gamecode >> 16), (u8)(gamecode >> 8), (u8)gamecode); - - if ((DWC_GetGsProfileId(DWCi_GetUserData(), &stpFriendCnt->friendList[i]) == arg->profile) && (memcmp(gamecode_str, arg->lastname + DWC_ACC_USERNAME_GSBRCD_OFFSET, 4) == 0)) { - gpResult = gpAuthBuddyRequest(connection, arg->profile); - confirm = TRUE; - DWC_Printf(DWC_REPORTFLAG_UPDATE_SV, "Auth buddy request from %u, friend[%d]gs.\n", arg->profile, i); - } - } - } - - if (confirm) { - (void)DWCi_GPSendBuddyRequest(arg->profile); - } - else { - gpDenyBuddyRequest(connection, arg->profile); - DWC_Printf(DWC_REPORTFLAG_UPDATE_SV, "Denied buddy request from %u.\n", arg->profile); - } -} - -static void DWCi_GPGetInfoCallback_RecvAuthMessage(GPConnection *connection, GPGetInfoResponseArg *arg, void *param) { -#pragma unused(connection) -#pragma unused(param) - char userName[21]; - int index; - int i; - BOOL listChanged = FALSE; - BOOL alreadyBuddy = FALSE; - - if (arg->result != GP_NO_ERROR) { - DWC_Printf(DWC_REPORTFLAG_LOGIN, " ERROR: GetInfo Auth. why??? : %d\n", arg->result); - - return; - } - - DWC_Printf(DWC_REPORTFLAG_DEBUG, "GetInfo Auth: profileID %u, lastname '%s'.\n", arg->profile, arg->lastname); - - for (i = 0; i < stpFriendCnt->friendListLen; i++) { - if (DWC_GetFriendDataType(&stpFriendCnt->friendList[i]) == DWC_FRIENDDATA_LOGIN_ID) { - DWC_LoginIdToUserName(DWCi_GetUserData(), &stpFriendCnt->friendList[i], userName); - - if (strcmp(userName, arg->lastname) == 0) { - DWC_SetGsProfileId(&stpFriendCnt->friendList[i], arg->profile); - DWCi_SetBuddyFriendData(&stpFriendCnt->friendList[i]); - - listChanged = TRUE; - - DWC_Printf(DWC_REPORTFLAG_UPDATE_SV, "Established buddy with %u, friend[%d]mp.\n", arg->profile, i); - - } - } - else if ((DWC_GetFriendDataType(&stpFriendCnt->friendList[i]) == DWC_FRIENDDATA_GS_PROFILE_ID) || (DWC_GetFriendDataType(&stpFriendCnt->friendList[i]) == DWC_FRIENDDATA_FRIEND_KEY)) { - if (DWC_GetGsProfileId(DWCi_GetUserData(), &stpFriendCnt->friendList[i]) == arg->profile) { - if (DWC_IsBuddyFriendData(&stpFriendCnt->friendList[i]) == TRUE) { - DWC_Printf(DWC_REPORTFLAG_UPDATE_SV, "This profile is already my friend[%d].\n", i); - alreadyBuddy = TRUE; - } - else { - DWC_SetGsProfileId(&stpFriendCnt->friendList[i], arg->profile); - DWCi_SetBuddyFriendData(&stpFriendCnt->friendList[i]); - listChanged = TRUE; - DWC_Printf(DWC_REPORTFLAG_UPDATE_SV, "Established buddy with %u, friend[%d]gs.\n", arg->profile, i); - } - } - } - } - - if (listChanged) { - index = DWCi_RefreshFriendListAll(stpFriendCnt->friendList, stpFriendCnt->friendListLen, arg->profile); - - if (!alreadyBuddy) { - DWCi_CallBuddyFriendCallback(index); - } - - stpFriendCnt->friendListChanged = 1; - } - else { - if (!alreadyBuddy) { - DWC_Printf(DWC_REPORTFLAG_UPDATE_SV, "Not Established buddy with %u.\n", arg->profile); - } - } -} - -static void DWCi_StopPersLogin(DWCError error, int errorCode) { - if (!stpFriendCnt || (error == DWC_ERROR_NONE)) { - return; - } - - DWCi_SetError(error, errorCode); - - if (IsStatsConnected()) { - DWC_LogoutFromStorageServer(); - } - - if (stpFriendCnt->persLoginCallback != NULL) { - stpFriendCnt->persLoginCallback(error, stpFriendCnt->persLoginParam); - } -} - -static void DWCi_SetPersistDataValuesAsync(int profileID, persisttype_t type, gsi_char *keyvalues, void *param) { - DWCi_AddPersCallbackLevel(); - SetPersistDataValues(0, profileID, type, 0, keyvalues, DWCi_PersDataSaveCallback, param); -} - -static void DWCi_GetPersistDataValuesAsync(int profileID, persisttype_t type, gsi_char *keys, void *param) { - DWCi_AddPersCallbackLevel(); - GetPersistDataValues(0, profileID, type, 0, keys, DWCi_PersDataCallback, param); -} - -static void DWCi_PersAuthCallback(int localid, int profileid, int authenticated, gsi_char *errmsg, void *instance) { -#ifdef SDK_FINALROM -#pragma unused(errmsg) -#endif -#pragma unused(instance) -#if 0 - char tmpStr[DWC_MAX_PLAYER_NAME * 2]; -#endif - - DWCi_SubPersCallbackLevel(); - - if (!authenticated || (localid != 0)) { - DWC_Printf(DWC_REPORTFLAG_ERROR, "Stats server authentication failed.\n"); - DWC_Printf(DWC_REPORTFLAG_ERROR, "%s\n", errmsg); - -#if 0 - DWCi_StopFriendProcess(DWC_ERROR_NETWORK, DWC_ECODE_SEQ_FRIEND + DWC_ECODE_GS_PERS + DWC_ECODE_TYPE_STATS_AUTH); -#else - DWCi_StopPersLogin(DWC_ERROR_NETWORK, DWC_ECODE_SEQ_ETC + DWC_ECODE_GS_PERS + DWC_ECODE_TYPE_STATS_AUTH); -#endif - return; - } - else { - DWC_Printf(DWC_REPORTFLAG_UPDATE_SV, "Stats server authentication succeeded.\n"); - stpFriendCnt->profileID = profileid; -#if 0 - (void)OS_SNPrintf(tmpStr, sizeof(tmpStr), "\\dwc_name\\%s", stpFriendCnt->playerName); - DWCi_SetPersistDataValuesAsync(stpFriendCnt->profileID, pd_public_rw, tmpStr, (void *)DWC_PERS_KEY_ID_PLAYER_NAME); -#else - stPersState = DWC_PERS_STATE_CONNECTED; - - if (stpFriendCnt->persLoginCallback != NULL) { - stpFriendCnt->persLoginCallback(DWC_ERROR_NONE, stpFriendCnt->persLoginParam); - } -#endif - } -} - -static void DWCi_PersDataCallback(int localid, int profileid, persisttype_t type, int index, int success, time_t modified, char *data, int len, void *instance) { -#pragma unused(localid) -#pragma unused(type) -#pragma unused(index) -#pragma unused(modified) - BOOL result; - - DWCi_SubPersCallbackLevel(); - - if (success) { - if (len == 0) { - DWC_Printf(DWC_REPORTFLAG_WARNING, "Persitent, Specified key is not exist.\n"); - - result = FALSE; - } - else { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "Loaded data from persistent server. -> %s\n", data); - result = TRUE; - } - - if (stpFriendCnt->loadCallback) { - stpFriendCnt->loadCallback(result, DWCi_GetFriendListIndex(profileid), data, len, instance); - } - } - else { - DWC_Printf(DWC_REPORTFLAG_ERROR, "Failed to load persistent data.\n"); - -#if 0 - DWCi_StopFriendProcess(DWC_ERROR_NETWORK, DWC_ECODE_SEQ_FRIEND + DWC_ECODE_GS_PERS + DWC_ECODE_TYPE_STATS_LOAD); - return; -#endif - - if (stpFriendCnt->loadCallback) { - stpFriendCnt->loadCallback(FALSE, DWCi_GetFriendListIndex(profileid), data, len, instance); - } - } -} - -static void DWCi_PersDataSaveCallback(int localid, int profileid, persisttype_t type, int index, int success, time_t modified, void *instance) { -#pragma unused(localid) -#pragma unused(profileid) -#pragma unused(index) -#pragma unused(modified) - u32 flag = (u32)instance; - BOOL isPublic; - - DWCi_SubPersCallbackLevel(); - -#if 0 - if (flag == DWC_PERS_KEY_ID_PLAYER_NAME) { - if (success) { - if (stpFriendCnt->state == DWC_FRIEND_STATE_PERS_LOGIN) { - DWC_Printf(DWC_REPORTFLAG_UPDATE_SV, "Saved player name to persistent server.\n"); - stpFriendCnt->svUpdateComplete++; - } - else { - flag = 0; - } - } - else { - DWC_Printf(DWC_REPORTFLAG_ERROR, "Failed to save persistent data.\n"); - DWCi_StopFriendProcess(DWC_ERROR_NETWORK, DWC_ECODE_SEQ_FRIEND + DWC_ECODE_GS_PERS + DWC_ECODE_TYPE_STATS_SAVE); - } - } - - if (flag & DWC_PERS_KEY_ID_MASK) { - return; - } -#endif - - DWC_Printf(DWC_REPORTFLAG_DEBUG, "Saved data to persistent server.\n"); - - if ((type == pd_public_ro) || (type == pd_public_rw)) { - isPublic = TRUE; - } - else { - isPublic = FALSE; - } - - if (success) { - if (stpFriendCnt->saveCallback) { - stpFriendCnt->saveCallback(TRUE, isPublic, instance); - } - } - else { - DWC_Printf(DWC_REPORTFLAG_ERROR, "Failed to save persistent data.\n"); - -#if 0 - DWCi_StopFriendProcess(DWC_ERROR_NETWORK, DWC_ECODE_SEQ_FRIEND + DWC_ECODE_GS_PERS + DWC_ECODE_TYPE_STATS_SAVE); -#endif - - if (stpFriendCnt->saveCallback) { - stpFriendCnt->saveCallback(FALSE, isPublic, instance); - } - } -} - -static void DWCi_AddPersCallbackLevel(void) { - if (stpFriendCnt->persCallbackLevel == 0xffffffff) { - DWCi_StopFriendProcess(DWC_ERROR_FATAL, DWC_ECODE_SEQ_FRIEND + DWC_ECODE_TYPE_UNEXPECTED); - - return; - } - - stpFriendCnt->persCallbackLevel++; -} - -static void DWCi_SubPersCallbackLevel(void) { - if (stpFriendCnt->persCallbackLevel == 0) { - DWCi_StopFriendProcess(DWC_ERROR_FATAL, DWC_ECODE_SEQ_FRIEND + DWC_ECODE_TYPE_UNEXPECTED); - - return; - } - - stpFriendCnt->persCallbackLevel--; -} - -static u32 DWCi_GetPersCallbackLevel(void) { - return stpFriendCnt->persCallbackLevel; -} diff --git a/subprojects/NitroDWC/libraries/base/src/dwc_ghttp.c b/subprojects/NitroDWC/libraries/base/src/dwc_ghttp.c deleted file mode 100644 index f13ca59cb0..0000000000 --- a/subprojects/NitroDWC/libraries/base/src/dwc_ghttp.c +++ /dev/null @@ -1,484 +0,0 @@ -#include - -#include -#include -#include -#include - - -typedef struct DWCGHTTPParamEntry { - DWCGHTTPParam param; - char *buf; - int req; - struct DWCGHTTPParamEntry *nextentry; -} DWCGHTTPParamEntry; - - -static DWCGHTTPParamEntry *paramhead = NULL; -static int ghttpinitcount = 0; - - -static GHTTPBool GHTTPCompletedCallback(GHTTPRequest request, GHTTPResult result, char *buffer, GHTTPByteCount bufferLen, void *param); -static void GHTTPProgressCallback(GHTTPRequest request, GHTTPState state, const char *buffer, GHTTPByteCount bufferLen, GHTTPByteCount bytesReceived, GHTTPByteCount totalSize, void *param); -static DWCGHTTPResult DWCi_HandleGHTTPError(DWCGHTTPResult result); -static DWCGHTTPParamEntry *DWCi_AppendDWCGHTTPParam(const DWCGHTTPParam *param); -static void DWCi_RemoveDWCGHTTPParamEntry(DWCGHTTPParamEntry *entry); -static void DWCi_RemoveAllDWCGHTTPParamEntry(void); -static DWCGHTTPParamEntry *DWCi_FindDWCGHTTPParamEntryByReq(int req); - - -BOOL DWC_InitGHTTP(const char *gamename) { -#pragma unused(gamename) - - DWC_Printf(DWC_REPORTFLAG_DEBUG, "DWC_InitGHTTP\n"); - ghttpStartup(); - - ghttpinitcount++; - - return TRUE; -} - -BOOL DWC_ShutdownGHTTP(void) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "DWC_ShutdownGHTTP\n"); - - if (ghttpinitcount <= 0) { - return TRUE; - } - - ghttpCleanup(); - ghttpinitcount--; - - if (ghttpinitcount == 0) { - DWCi_RemoveAllDWCGHTTPParamEntry(); - } - - return TRUE; -} - -BOOL DWC_ProcessGHTTP(void) { - if (DWCi_IsError()) { - return FALSE; - } - - ghttpThink(); - - return TRUE; -} - -static GHTTPBool GHTTPCompletedCallback(GHTTPRequest request, GHTTPResult result, char *buffer, GHTTPByteCount bufferLen, void *param) { -#pragma unused(request) - - DWCGHTTPParamEntry *entry = (DWCGHTTPParamEntry *)param; - DWCGHTTPParam *parameter = &entry->param; - DWCGHTTPCompletedCallback callback = (DWCGHTTPCompletedCallback)parameter->completedCallback; - BOOL buffer_clear = parameter->buffer_clear; - - DWC_Printf(DWC_REPORTFLAG_DEBUG, "GHTTPCompleteCallback result : %d\n", result); - - if (callback) { - if (result == GHTTPSuccess) { - callback(buffer, (int)bufferLen, (DWCGHTTPResult)result, parameter->param); - } else { - DWCi_HandleGHTTPError((DWCGHTTPResult)result); - callback(NULL, 0, (DWCGHTTPResult)result, parameter->param); - } - } else { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "Callback is NULL\n"); - } - - if ((result != GHTTPSuccess) || (buffer_clear == TRUE)) { - if (entry->buf) { - DWC_Free(DWC_ALLOCTYPE_BASE, (void *)entry->buf, 0); - } else { - buffer_clear = TRUE; - } - } - - DWCi_RemoveDWCGHTTPParamEntry(entry); - - if (!buffer_clear) { - return GHTTPFalse; - } - - return GHTTPTrue; -} - -static void GHTTPProgressCallback(GHTTPRequest request, GHTTPState state, const char *buffer, GHTTPByteCount bufferLen, GHTTPByteCount bytesReceived, GHTTPByteCount totalSize, void *param) { -#pragma unused(request) - - DWCGHTTPParam *parameter = &((DWCGHTTPParamEntry *)param)->param; - DWCGHTTPProgressCallback callback = (DWCGHTTPProgressCallback)parameter->progressCallback; - - if (callback) { - callback((DWCGHTTPState)state, buffer, (int)bufferLen, (int)bytesReceived, (int)totalSize, parameter->param); - } -} - -void DWC_GHTTPNewPost(DWCGHTTPPost *post) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "DWC_GHTTPNewPost\n"); - - *post = ghttpNewPost(); - - if (post == NULL) { - DWCi_HandleGHTTPError((DWCGHTTPResult)DWC_GHTTP_INSUFFICIENT_MEMORY); - DWC_Printf(DWC_REPORTFLAG_DEBUG, "DWC_Alloc Error\n"); - } -} - -BOOL DWC_GHTTPPostAddString(DWCGHTTPPost *post, const char *key, const char *value) { - if (!ghttpPostAddString(*post, key, value)) { - DWC_Printf(DWC_REPORTFLAG_WARNING, "DWC_GHTTPPostAddString FALSE\n"); - return FALSE; - } else { - return TRUE; - } -} - -BOOL DWC_GHTTPPostAddFileFromMemory(DWCGHTTPPost *post, const char *key, const char *buffer, int bufferlen, const char *filename, const char *contentType) { - if (!ghttpPostAddFileFromMemory(*post, key, buffer, bufferlen, filename, contentType)) { - DWC_Printf(DWC_REPORTFLAG_WARNING, "DWC_GHTTPPostAddFileFromMemory FALSE\n"); - return FALSE; - } else { - return TRUE; - } -} - -int DWC_PostGHTTPData(const char *url, GHTTPPost *post, DWCGHTTPCompletedCallback completedCallback, void *param) { - GHTTPRequest req; - DWCGHTTPParamEntry *entry = NULL; - DWCGHTTPParam parameter_instance; - - DWC_Printf(DWC_REPORTFLAG_DEBUG, "DWC_PostGHTTPData\n"); - - if (DWCi_IsError()) { - return DWC_GHTTP_IN_ERROR; - } - - parameter_instance.param = param; - parameter_instance.completedCallback = completedCallback; - parameter_instance.progressCallback = NULL; - parameter_instance.buffer_clear = TRUE; - entry = DWCi_AppendDWCGHTTPParam(¶meter_instance); - - if (!entry) { - DWCi_HandleGHTTPError((DWCGHTTPResult)DWC_GHTTP_INSUFFICIENT_MEMORY); - DWC_Printf(DWC_REPORTFLAG_DEBUG, "DWC_Alloc Error\n"); - completedCallback(NULL, 0, (DWCGHTTPResult)DWC_GHTTP_INSUFFICIENT_MEMORY, param); - - return (int)DWC_GHTTP_INSUFFICIENT_MEMORY; - } - - req = ghttpPost(url, *post, GHTTPFalse, GHTTPCompletedCallback, (void *)entry); - - if (req < 0) { - DWCi_HandleGHTTPError((DWCGHTTPResult)req); - completedCallback(NULL, 0, (DWCGHTTPResult)req, param); - DWCi_RemoveDWCGHTTPParamEntry(entry); - } - - entry->req = req; - return (int)req; -} - -int DWC_GetGHTTPData(const char *url, DWCGHTTPCompletedCallback completedCallback, void *param) { - GHTTPRequest req; - DWCGHTTPParamEntry *entry = NULL; - DWCGHTTPParam parameter_instance; - - DWC_Printf(DWC_REPORTFLAG_DEBUG, "DWC_GetGHTTPData\n"); - - if (DWCi_IsError()) { - return DWC_GHTTP_IN_ERROR; - } - - parameter_instance.param = param; - parameter_instance.completedCallback = completedCallback; - parameter_instance.progressCallback = NULL; - parameter_instance.buffer_clear = TRUE; - entry = DWCi_AppendDWCGHTTPParam(¶meter_instance); - - if (!entry) { - DWCi_HandleGHTTPError((DWCGHTTPResult)DWC_GHTTP_INSUFFICIENT_MEMORY); - DWC_Printf(DWC_REPORTFLAG_DEBUG, "DWC_Alloc Error\n"); - completedCallback(NULL, 0, (DWCGHTTPResult)DWC_GHTTP_INSUFFICIENT_MEMORY, param); - - return (int)DWC_GHTTP_INSUFFICIENT_MEMORY; - } - - req = ghttpGet(url, GHTTPFalse, GHTTPCompletedCallback, (void *)entry); - - if (req < 0) { - DWCi_HandleGHTTPError((DWCGHTTPResult)req); - completedCallback(NULL, 0, (DWCGHTTPResult)req, param); - DWCi_RemoveDWCGHTTPParamEntry(entry); - } - - entry->req = req; - return (int)req; -} - -static int DWCi_GHTTPGetEx(const char *url, int bufferlen, BOOL buffer_clear, DWCGHTTPPost *post, DWCGHTTPProgressCallback progressCallback, DWCGHTTPCompletedCallback completedCallback, void *param) { - char *buffer = NULL; - GHTTPRequest req; - DWCGHTTPParamEntry *entry = NULL; - DWCGHTTPParam parameter_instance; - - if (DWCi_IsError()) { - return DWC_GHTTP_IN_ERROR; - } - - parameter_instance.param = param; - parameter_instance.completedCallback = completedCallback; - parameter_instance.progressCallback = progressCallback; - parameter_instance.buffer_clear = buffer_clear; - entry = DWCi_AppendDWCGHTTPParam(¶meter_instance); - - if (!entry) { - DWCi_HandleGHTTPError((DWCGHTTPResult)DWC_GHTTP_INSUFFICIENT_MEMORY); - DWC_Printf(DWC_REPORTFLAG_DEBUG, "DWC_Alloc Error\n"); - completedCallback(NULL, 0, (DWCGHTTPResult)DWC_GHTTP_INSUFFICIENT_MEMORY, param); - - return (int)DWC_GHTTP_INSUFFICIENT_MEMORY; - } - - if (bufferlen > 0) { - buffer = (char *)DWC_Alloc(DWC_ALLOCTYPE_BASE, (u32)bufferlen); - - if (!buffer) { - DWCi_HandleGHTTPError((DWCGHTTPResult)DWC_GHTTP_INSUFFICIENT_MEMORY); - DWC_Printf(DWC_REPORTFLAG_DEBUG, "DWC_Alloc Error\n"); - completedCallback(NULL, 0, (DWCGHTTPResult)DWC_GHTTP_INSUFFICIENT_MEMORY, param); - DWCi_RemoveDWCGHTTPParamEntry(entry); - - return (int)DWC_GHTTP_INSUFFICIENT_MEMORY; - } - entry->buf = buffer; - } - - if (post) { - req = ghttpGetEx(url, NULL, buffer, bufferlen, *post, GHTTPFalse, GHTTPFalse, GHTTPProgressCallback, GHTTPCompletedCallback, (void *)entry); - } else { - req = ghttpGetEx(url, NULL, buffer, bufferlen, NULL, GHTTPFalse, GHTTPFalse, GHTTPProgressCallback, GHTTPCompletedCallback, (void *)entry); - } - - if (req < 0) { - DWCi_HandleGHTTPError((DWCGHTTPResult)req); - completedCallback(NULL, 0, (DWCGHTTPResult)req, param); - - if (entry->buf != NULL) { - DWC_Free(DWC_ALLOCTYPE_BASE, (void *)entry->buf, 0); - } - - DWCi_RemoveDWCGHTTPParamEntry(entry); - } - - entry->req = req; - return (int)req; -} - -int DWC_GetGHTTPDataEx(const char *url, int bufferlen, BOOL buffer_clear, DWCGHTTPProgressCallback progressCallback, DWCGHTTPCompletedCallback completedCallback, void *param) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "DWC_GetGHTTPDataEx\n"); - return DWCi_GHTTPGetEx(url, bufferlen, buffer_clear, NULL, progressCallback, completedCallback, param); -} - -int DWC_GetGHTTPDataEx2(const char *url, int bufferlen, BOOL buffer_clear, DWCGHTTPPost *post, DWCGHTTPProgressCallback progressCallback, DWCGHTTPCompletedCallback completedCallback, void *param) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "DWC_GetGHTTPDataEx2\n"); - return DWCi_GHTTPGetEx(url, bufferlen, buffer_clear, post, progressCallback, completedCallback, param); -} - -void DWC_CancelGHTTPRequest(int req) { - DWCGHTTPParamEntry *entry; - - ghttpCancelRequest((GHTTPRequest)req); - - entry = DWCi_FindDWCGHTTPParamEntryByReq(req); - - if (entry == NULL) { - return; - } - - if (entry->buf != NULL) { - DWC_Free(DWC_ALLOCTYPE_BASE, (void *)entry->buf, 0); - } - - DWCi_RemoveDWCGHTTPParamEntry(entry); -} - -DWCGHTTPState DWC_GetGHTTPState(int req) { - if (req < 0) { - return DWC_GHTTP_FALSE; - } else { - return (DWCGHTTPState)(ghttpGetState(req)); - } -} - -static DWCGHTTPResult DWCi_HandleGHTTPError(DWCGHTTPResult result) { - int errorCode = DWC_ECODE_SEQ_ETC + DWC_ECODE_GS_HTTP; - DWCError dwcError = DWC_ERROR_GHTTP_ANY; - - if (result == DWC_GHTTP_SUCCESS) { - return DWC_GHTTP_SUCCESS; - } - - DWC_Printf(DWC_REPORTFLAG_ERROR, "Main, DWCGHTTP error %d\n", result); - - switch (result) { - case DWC_GHTTP_FAILED_TO_OPEN_FILE: - errorCode += DWC_ECODE_TYPE_OPEN_FILE; - break; - case DWC_GHTTP_INVALID_POST: - errorCode += DWC_ECODE_TYPE_INVALID_POST; - break; - case DWC_GHTTP_INSUFFICIENT_MEMORY: - errorCode += DWC_ECODE_TYPE_BUFF_OVER; - break; - case DWC_GHTTP_INVALID_FILE_NAME: - case DWC_GHTTP_INVALID_BUFFER_SIZE: - case DWC_GHTTP_INVALID_URL: - errorCode += DWC_ECODE_TYPE_REQ_INVALID; - break; - case DWC_GHTTP_UNSPECIFIED_ERROR: - errorCode += DWC_ECODE_TYPE_UNSPECIFIED; - break; - case DWC_GHTTP_OUT_OF_MEMORY: - case DWC_GHTTP_MEMORY_ERROR: - dwcError = DWC_ERROR_FATAL; - errorCode += DWC_ECODE_TYPE_ALLOC; - break; - case DWC_GHTTP_BUFFER_OVERFLOW: - errorCode += DWC_ECODE_TYPE_BUFF_OVER; - break; - case DWC_GHTTP_PARSE_URL_FAILED: - errorCode += DWC_ECODE_TYPE_PARSE_URL; - break; - case DWC_GHTTP_HOST_LOOKUP_FAILED: - errorCode += DWC_ECODE_TYPE_DNS; - break; - case DWC_GHTTP_SOCKET_FAILED: - errorCode += DWC_ECODE_TYPE_SOCKET; - break; - case DWC_GHTTP_CONNECT_FAILED: - case DWC_GHTTP_FILE_NOT_FOUND: - case DWC_GHTTP_SERVER_ERROR: - errorCode += DWC_ECODE_TYPE_SERVER; - break; - case DWC_GHTTP_BAD_RESPONSE: - errorCode += DWC_ECODE_TYPE_BAD_RESPONSE; - break; - case DWC_GHTTP_REQUEST_REJECTED: - case DWC_GHTTP_UNAUTHORIZED: - case DWC_GHTTP_FORBIDDEN: - errorCode += DWC_ECODE_TYPE_REJECTED; - break; - case DWC_GHTTP_FILE_WRITE_FAILED: - case DWC_GHTTP_FILE_READ_FAILED: - errorCode += DWC_ECODE_TYPE_FILE_RW; - break; - case DWC_GHTTP_FILE_INCOMPLETE: - errorCode += DWC_ECODE_TYPE_INCOMPLETE; - break; - case DWC_GHTTP_FILE_TOO_BIG: - errorCode += DWC_ECODE_TYPE_TO_BIG; - break; - case DWC_GHTTP_ENCRYPTION_ERROR: - errorCode += DWC_ECODE_TYPE_ENCRYPTION; - break; - - default: - break; - } - - DWCi_SetError(dwcError, errorCode); - - return result; -} - -static DWCGHTTPParamEntry*DWCi_AppendDWCGHTTPParam(const DWCGHTTPParam *param) { - DWCGHTTPParamEntry *entry; - - entry = DWC_Alloc(DWC_ALLOCTYPE_BASE, sizeof(DWCGHTTPParamEntry)); - - if (entry == NULL) { - return NULL; - } - - entry->param = *param; - entry->nextentry = NULL; - entry->buf = NULL; - - if (paramhead == NULL) { - paramhead = entry; - return entry; - } - - entry->nextentry = paramhead; - paramhead = entry; - - return entry; -} - -static void DWCi_RemoveDWCGHTTPParamEntry(DWCGHTTPParamEntry *entry) { - DWCGHTTPParamEntry *cursor, *target; - - if (paramhead == NULL) { - return; - } - - if (paramhead == entry) { - cursor = paramhead->nextentry; - DWC_Free(DWC_ALLOCTYPE_BASE, (void *)paramhead, 0); - paramhead = cursor; - - return; - } - - cursor = paramhead; - - while (cursor->nextentry != NULL) { - if (cursor->nextentry != entry) { - cursor = cursor->nextentry; - continue; - } - - target = cursor->nextentry; - cursor->nextentry = cursor->nextentry->nextentry; - DWC_Free(DWC_ALLOCTYPE_BASE, (void *)target, 0); - - return; - } - - return; -} - -static DWCGHTTPParamEntry*DWCi_FindDWCGHTTPParamEntryByReq(int req) { - DWCGHTTPParamEntry *cursor; - - cursor = paramhead; - - while (cursor != NULL && cursor->req != req) { - cursor = cursor->nextentry; - } - - return cursor; -} - -static void DWCi_RemoveAllDWCGHTTPParamEntry(void) { - DWCGHTTPParamEntry *cursor, *target; - - cursor = paramhead; - - while (cursor != NULL) { - target = cursor; - cursor = cursor->nextentry; - - if (target->buf != NULL) { - DWC_Free(DWC_ALLOCTYPE_BASE, (void *)target->buf, 0); - } - - DWC_Free(DWC_ALLOCTYPE_BASE, (void *)target, 0); - } - - paramhead = NULL; - - return; -} diff --git a/subprojects/NitroDWC/libraries/base/src/dwc_login.c b/subprojects/NitroDWC/libraries/base/src/dwc_login.c deleted file mode 100644 index 8a5327c264..0000000000 --- a/subprojects/NitroDWC/libraries/base/src/dwc_login.c +++ /dev/null @@ -1,450 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -typedef void (*DWCRemoteAuthCallback)(const char *authToken, const char *partnerChallenge, void *param); - - -static DWCLoginControl *stpLoginCnt = NULL; -static DWCRemoteAuthCallback stRemoteAuthCallback; -static void *pStRemoteAuthParam; - - -static void DWCi_CloseLogin(void); -static GPResult DWCi_HandleGPError(GPResult result); -static void DWCi_GPConnectCallback(GPConnection *pconnection, GPConnectResponseArg *arg, void *param); -static void DWCi_RemoteAuthCallback(const char *authToken, const char *partnerChallenge, void *param); -static void DWCi_GPConnect(const char *authToken, const char *partnerChallenge, GPCallback callback, DWCLoginState nextstate); -static void DWCi_GPGetInfo(void); -static void DWCi_GPGetInfoCallback(GPConnection *pconnection, GPGetInfoResponseArg *arg, void *param); -static void DWCi_RemoteLogin(DWCRemoteAuthCallback callback, void *param); -static void DWCi_RemoteLoginProcess(void); - - -void DWCi_LoginInit(DWCLoginControl *logcnt, DWCUserData *userdata, GPConnection *pGpObj, int productID, u32 gamecode, const u16 *playerName, DWCLoginCallback callback, void *param) { - SDK_ASSERT(logcnt); - - DWC_Printf(DWC_REPORTFLAG_LOGIN, "Login Init\n"); - stpLoginCnt = logcnt; - MI_CpuClear8(stpLoginCnt, sizeof(DWCLoginControl)); - - stpLoginCnt->pGpObj = pGpObj; - stpLoginCnt->state = DWC_LOGIN_STATE_INIT; - stpLoginCnt->productID = productID; - stpLoginCnt->gamecode = gamecode; - stpLoginCnt->playerName = playerName; - stpLoginCnt->callback = callback; - stpLoginCnt->param = param; - stpLoginCnt->userdata = userdata; - - DWC_Printf(DWC_REPORTFLAG_LOGIN, "******************************************\n"); - DWC_Printf(DWC_REPORTFLAG_LOGIN, " pseudo UserID : %016llx\n", DWCi_Acc_GetUserId(&userdata->pseudo)); - DWC_Printf(DWC_REPORTFLAG_LOGIN, " pseudo PlayerID : %08x\n", DWCi_Acc_GetPlayerId(&userdata->pseudo)); - DWC_Printf(DWC_REPORTFLAG_LOGIN, " authentic UserID : %016llx\n", DWCi_Acc_GetUserId(&userdata->authentic)); - DWC_Printf(DWC_REPORTFLAG_LOGIN, " authentic PlayerID : %08x\n", DWCi_Acc_GetPlayerId(&userdata->authentic)); - DWC_Printf(DWC_REPORTFLAG_LOGIN, "******************************************\n"); - -} - -void DWCi_LoginAsync(void) { - DWC_Printf(DWC_REPORTFLAG_LOGIN, "Login Async\n"); - DWCi_RemoteLogin(DWCi_RemoteAuthCallback, NULL); - - stpLoginCnt->state = DWC_LOGIN_STATE_REMOTE_AUTH; - stpLoginCnt->connectFlag = FALSE; -} - -void DWCi_LoginProcess(void) { - if (!stpLoginCnt || DWCi_IsError()) { - return; - } - - switch (stpLoginCnt->state) { - case DWC_LOGIN_STATE_REMOTE_AUTH: - DWCi_RemoteLoginProcess(); - break; - case DWC_LOGIN_STATE_CONNECTING: - case DWC_LOGIN_STATE_GPGETINFO: - case DWC_LOGIN_STATE_GPSETINFO: - if (stpLoginCnt->pGpObj && *stpLoginCnt->pGpObj) { - gpProcess(stpLoginCnt->pGpObj); - } - - if (stpLoginCnt->connectFlag && (OS_TicksToMilliSeconds(OS_GetTick() - stpLoginCnt->connectTick) > DWC_LOGIN_GPCONNECT_TIMEOUT)) { - DWCi_StopLogin(DWC_ERROR_NETWORK, DWC_ECODE_SEQ_LOGIN + DWC_ECODE_GS_GP + DWC_ECODE_TYPE_TIMEOUT); - stpLoginCnt->connectFlag = FALSE; - } - break; - case DWC_LOGIN_STATE_INIT: - case DWC_LOGIN_STATE_CONNECTED: - default: - DWC_Printf(DWC_REPORTFLAG_DEBUG, "Ignore invalid login state.\n"); - break; - } -} - -DWCAccUserData*DWCi_GetUserData(void) { - if (stpLoginCnt) { - return stpLoginCnt->userdata; - } - else { - return NULL; - } -} - -void DWCi_StopLogin(DWCError error, int errorCode) { - if (!stpLoginCnt || (error == DWC_ERROR_NONE)) { - return; - } - - DWCi_SetError(error, errorCode); - - if (stpLoginCnt->callback != NULL) { - stpLoginCnt->callback(error, 0, stpLoginCnt->param); - } - - DWCi_CloseLogin(); -} - -void DWCi_ShutdownLogin(void) { - if (stpLoginCnt->http != NULL) { - DWC_Auth_Abort(); - DWC_Auth_Destroy(); - DWC_Free(DWC_ALLOCTYPE_AUTH, stpLoginCnt->http, 0); - - stpLoginCnt->http = NULL; - } - - stpLoginCnt = NULL; -} - -static void DWCi_CloseLogin(void) { - if (!stpLoginCnt) { - return; - } - - stpLoginCnt->state = DWC_LOGIN_STATE_INIT; - stpLoginCnt->connectFlag = FALSE; -} - -static GPResult DWCi_HandleGPError(GPResult result) { - int errorCode; - DWCError dwcError; - - if (result == GP_NO_ERROR) { - return GP_NO_ERROR; - } - - DWC_Printf(DWC_REPORTFLAG_ERROR, "Login, GP error %d\n", result); - - switch (result) { - case GP_MEMORY_ERROR: - dwcError = DWC_ERROR_FATAL; - errorCode = DWC_ECODE_TYPE_ALLOC; - break; - case GP_PARAMETER_ERROR: - dwcError = DWC_ERROR_FATAL; - errorCode = DWC_ECODE_TYPE_PARAM; - break; - case GP_NETWORK_ERROR: - dwcError = DWC_ERROR_NETWORK; - errorCode = DWC_ECODE_TYPE_NETWORK; - break; - case GP_SERVER_ERROR: - dwcError = DWC_ERROR_NETWORK; - errorCode = DWC_ECODE_TYPE_SERVER; - break; - } - - errorCode += DWC_ECODE_SEQ_LOGIN + DWC_ECODE_GS_GP; - DWCi_StopLogin(dwcError, errorCode); - - return result; -} - -static void DWCi_GPConnectCallback(GPConnection *pconnection, GPConnectResponseArg *arg, void *param) { -#pragma unused( param ) - GPResult gpResult; - - DWC_Printf(DWC_REPORTFLAG_LOGIN, "Finished connecting to GP server, result = %d\n", arg->result); - stpLoginCnt->connectFlag = FALSE; - - if (arg->result == GP_NO_ERROR) { - stpLoginCnt->gpconnectresponsearg = *arg; - - if (stpLoginCnt->state == DWC_LOGIN_STATE_CONNECTING) { - if (stpLoginCnt->userdata->gs_profile_id == arg->profile) { - DWC_Printf(DWC_REPORTFLAG_LOGIN, " gs profile id is valid.\n"); - - stpLoginCnt->state = DWC_LOGIN_STATE_CONNECTED; - gpResult = DWCi_SetGPStatus(DWC_STATUS_ONLINE, "", NULL); - - if (DWCi_HandleGPError(gpResult)) { - return; - } - - stpLoginCnt->callback(DWC_ERROR_NONE, arg->profile, stpLoginCnt->param); - - if (!DWCi_GT2Startup()) { - if (DWCi_QR2Startup(arg->profile)) { - return; - } - } - else { - return; - } - } - else { - DWC_Printf(DWC_REPORTFLAG_LOGIN, " gs profile id is invalid.\n"); - DWCi_StopLogin(DWC_ERROR_NETWORK, DWC_ECODE_SEQ_LOGIN); - } - } - else if (stpLoginCnt->state == DWC_LOGIN_STATE_GPGETINFO) { - gpResult = gpGetInfo(pconnection, arg->profile, GP_DONT_CHECK_CACHE, GP_NON_BLOCKING, (GPCallback)DWCi_GPGetInfoCallback, NULL); - - if (DWCi_HandleGPError(gpResult)) { - return; - } - } - } - else { - (void)DWCi_HandleGPError(arg->result); - } -} - -static void DWCi_RemoteAuthCallback(const char *authToken, const char *partnerChallenge, void *param) { -#pragma unused( param ) - - DWCi_GPConnect(authToken, partnerChallenge, (GPCallback)DWCi_GPConnectCallback, DWC_LOGIN_STATE_CONNECTING); -} - -static void DWCi_GPConnect(const char *authToken, const char *partnerChallenge, GPCallback callback, DWCLoginState next_state) { - GPResult gpResult; - - DWC_Printf(DWC_REPORTFLAG_LOGIN, "Succeeded to remote authentication.\n"); - strcpy(stpLoginCnt->authToken, authToken); - strcpy(stpLoginCnt->partnerChallenge, partnerChallenge); - - stpLoginCnt->connectTick = OS_GetTick(); - stpLoginCnt->connectFlag = TRUE; - gpResult = gpConnectPreAuthenticated(stpLoginCnt->pGpObj, stpLoginCnt->authToken, stpLoginCnt->partnerChallenge, GP_FIREWALL, GP_NON_BLOCKING, callback, NULL); - - if (DWCi_HandleGPError(gpResult)) { - return; - } - - stpLoginCnt->state = next_state; -} - -static void DWCi_RemoteLogin(DWCRemoteAuthCallback callback, void *param) { - DWCAuthParam auth; - void *http; - - DWC_Printf(DWC_REPORTFLAG_LOGIN, "Start Remote Auth\n"); - MI_CpuClear8(&auth, sizeof(auth)); - - stRemoteAuthCallback = callback; - pStRemoteAuthParam = param; - - if (DWCi_Acc_IsAuthentic(stpLoginCnt->userdata)) { - DWC_Printf(DWC_REPORTFLAG_LOGIN, " Hmm.. you already have authentic login id.\n"); - DWCi_Acc_LoginIdToUserName(&stpLoginCnt->userdata->authentic, stpLoginCnt->userdata->gamecode, stpLoginCnt->username); - } - else { - DWC_Printf(DWC_REPORTFLAG_LOGIN, " Hmm.. you need to create authentic login id.\n"); - - if (!DWCi_Acc_IsValidLoginId(&stpLoginCnt->tempLoginId)) { - DWC_Printf(DWC_REPORTFLAG_LOGIN, " Hmm.. you are the first time to get authentic login id."); - - if (DWCi_Acc_CheckConsoleUserId(&stpLoginCnt->userdata->pseudo)) { - DWC_Printf(DWC_REPORTFLAG_LOGIN, "- copy temp loginid from pseudo login id\n"); - stpLoginCnt->tempLoginId = stpLoginCnt->userdata->pseudo; - } - else { - DWC_Printf(DWC_REPORTFLAG_LOGIN, "- create temp loginid from console user id\n"); - DWCi_Acc_CreateTempLoginId(&stpLoginCnt->tempLoginId); - } - } - else { - MATHRandContext32 randcontext; - - DWC_Printf(DWC_REPORTFLAG_LOGIN, " Hmm.. you are NOT the first times to get authentic login id.\n"); - MATH_InitRand32(&randcontext, OS_GetTick()); - DWCi_Acc_SetPlayerId(&stpLoginCnt->tempLoginId, MATH_Rand32(&randcontext, 0)); - } - - DWCi_Acc_LoginIdToUserName(&stpLoginCnt->tempLoginId, stpLoginCnt->gamecode, stpLoginCnt->username); - } - - MI_CpuCopy8(stpLoginCnt->playerName, auth.ingamesn, DWCi_WStrLen(stpLoginCnt->playerName) * 2 + 2); - DWC_Printf(DWC_REPORTFLAG_LOGIN, " ingamesn : %s\n", auth.ingamesn); - strcpy(auth.gsbrcd, &(stpLoginCnt->username[DWC_ACC_USERNAME_GSBRCD_OFFSET])); - DWC_Printf(DWC_REPORTFLAG_LOGIN, " gsbrcd : %s.\n", auth.gsbrcd); - - auth.alloc = (DWCAuthAlloc)DWC_Alloc; - auth.free = (DWCAuthFree)DWC_Free; - - http = DWC_AllocEx(DWC_ALLOCTYPE_AUTH, sizeof(DWCHttp), 4); - SDK_ASSERTMSG(http, "DWC_LOGIN: can't alloc memory %s :%d\n", __FILE__, __LINE__); - - stpLoginCnt->http = http; - stpLoginCnt->startTick = OS_GetTick(); - - DWC_Auth_Create(&auth, http); -} - -static void DWCi_RemoteLoginProcess(void) { - if (DWC_Auth_GetError() == DWCAUTH_E_FINISH) { - DWCAuthResult result; - - DWC_Printf(DWC_REPORTFLAG_LOGIN, " *** Auth Done\n"); - DWC_Auth_GetResult(&result); - - strcpy(stpLoginCnt->authToken, result.token); - strcpy(stpLoginCnt->partnerChallenge, result.challenge); - - DWC_Auth_Destroy(); - DWC_Free(DWC_ALLOCTYPE_AUTH, stpLoginCnt->http, 0); - - stpLoginCnt->http = NULL; - - if (DWCi_Acc_IsAuthentic(stpLoginCnt->userdata)) { - stRemoteAuthCallback(stpLoginCnt->authToken, stpLoginCnt->partnerChallenge, pStRemoteAuthParam); - } - else { - DWCi_GPConnect(stpLoginCnt->authToken, stpLoginCnt->partnerChallenge, (GPCallback)DWCi_GPConnectCallback, DWC_LOGIN_STATE_GPGETINFO); - } - } - else if (DWC_Auth_GetError() != DWCAUTH_E_NOERR) { - OSTick nowTick; - - DWC_Printf(DWC_REPORTFLAG_LOGIN, " *** Auth Error\n"); - nowTick = OS_GetTick(); - - if (OS_TicksToMilliSeconds(nowTick - stpLoginCnt->startTick) > DWC_LOGIN_AUTH_TIMEOUT) { - DWCAuthResult result; - - DWC_Auth_GetResult(&result); - DWC_Auth_Destroy(); - DWC_Free(DWC_ALLOCTYPE_AUTH, stpLoginCnt->http, 0); - - stpLoginCnt->http = NULL; - - DWCi_StopLogin(DWC_ERROR_AUTH_ANY, result.returncode); - - return; - } - else { - DWCAuthParam auth; - - DWC_Printf(DWC_REPORTFLAG_LOGIN, " **** AUTH FAILED ... retry AUTH_ERROR:%d.\n", DWC_Auth_GetError()); - DWC_Auth_Destroy(); - - MI_CpuClear8(&auth, sizeof(auth)); - MI_CpuCopy8(stpLoginCnt->playerName, auth.ingamesn, DWCi_WStrLen(stpLoginCnt->playerName) * 2 + 2); - - DWC_Printf(DWC_REPORTFLAG_LOGIN, " ingamesn : %s\n", auth.ingamesn); - - strcpy(auth.gsbrcd, &(stpLoginCnt->username[DWC_ACC_USERNAME_GSBRCD_OFFSET])); - auth.alloc = (DWCAuthAlloc)DWC_Alloc; - auth.free = (DWCAuthFree)DWC_Free; - - DWC_Printf(DWC_REPORTFLAG_LOGIN, " gsbrcd : %s.\n", auth.gsbrcd); - DWC_Auth_Create(&auth, stpLoginCnt->http); - } - } -} - -static void DWCi_GPGetInfoCallback(GPConnection *pconnection, GPGetInfoResponseArg *arg, void *param) { -#pragma unused( param ) - - if (arg->result == GP_NO_ERROR) { - if (stpLoginCnt->state == DWC_LOGIN_STATE_GPGETINFO) { - if (arg->lastname[0] == 0) { - GPResult gpResult; - char pseudo_name[DWC_ACC_USERNAME_STRING_BUFSIZE]; - - DWC_Printf(DWC_REPORTFLAG_LOGIN, " login id is authenticated. set lastname field.\n"); - DWCi_Acc_LoginIdToUserName(&stpLoginCnt->userdata->pseudo, stpLoginCnt->gamecode, pseudo_name); - gpResult = gpSetInfos(pconnection, GP_LASTNAME, pseudo_name); - - if (DWCi_HandleGPError(gpResult)) { - return; - } - - stpLoginCnt->state = DWC_LOGIN_STATE_GPSETINFO; - gpResult = gpGetInfo(pconnection, arg->profile, GP_DONT_CHECK_CACHE, GP_NON_BLOCKING, (GPCallback)DWCi_GPGetInfoCallback, NULL); - - if (DWCi_HandleGPError(gpResult)) { - return; - } - - DWC_Printf(DWC_REPORTFLAG_LOGIN, " call gpSetInfos\n"); - } - else { - DWC_Printf(DWC_REPORTFLAG_LOGIN, " this login id is used by anybody.... retry.\n"); - gpDisconnect(pconnection); - DWCi_RemoteLogin(DWCi_RemoteAuthCallback, NULL); - - stpLoginCnt->state = DWC_LOGIN_STATE_REMOTE_AUTH; - } - } - else if (stpLoginCnt->state == DWC_LOGIN_STATE_GPSETINFO) { - char pseudo_name[DWC_ACC_USERNAME_STRING_BUFSIZE]; - DWCi_Acc_LoginIdToUserName(&stpLoginCnt->userdata->pseudo, stpLoginCnt->gamecode, pseudo_name); - - if (strcmp(arg->lastname, pseudo_name) == 0) { - char username[DWC_ACC_USERNAME_STRING_BUFSIZE]; - DWCi_Acc_LoginIdToUserName(&stpLoginCnt->tempLoginId, stpLoginCnt->gamecode, username); - DWC_Printf(DWC_REPORTFLAG_LOGIN, " Account is created : %s(%s) - %d.\n", username, pseudo_name, arg->profile); - DWCi_Acc_SetLoginIdToUserData(stpLoginCnt->userdata, &stpLoginCnt->tempLoginId, arg->profile); - - stpLoginCnt->state = DWC_LOGIN_STATE_CONNECTING; - DWCi_GPConnectCallback(pconnection, &stpLoginCnt->gpconnectresponsearg, NULL); - } - else { - GPResult gpResult; - DWC_Printf(DWC_REPORTFLAG_LOGIN, " Login but gpSetInfo failed... %s : %d retry gpGetInfo.\n", arg->lastname, arg->profile); - - gpResult = gpGetInfo(pconnection, arg->profile, GP_DONT_CHECK_CACHE, GP_NON_BLOCKING, (GPCallback)DWCi_GPGetInfoCallback, NULL); - - if (DWCi_HandleGPError(gpResult)) { - return; - } - } - } - } - else { - DWC_Printf(DWC_REPORTFLAG_LOGIN, " ERROR: gpGetInfo. why??? : %d\n", arg->result); - } -} - -BOOL DWCi_CheckLogin(void) { - if ((stpLoginCnt != NULL) && (stpLoginCnt->state == DWC_LOGIN_STATE_CONNECTED)) { - return TRUE; - } - - return FALSE; -} - -BOOL DWCi_GetAuthInfo(char **authToken, char **partnerChallenge) { - if (!DWCi_CheckLogin()) { - return FALSE; - } - - *authToken = stpLoginCnt->authToken; - *partnerChallenge = stpLoginCnt->partnerChallenge; - - return TRUE; -} diff --git a/subprojects/NitroDWC/libraries/base/src/dwc_main.c b/subprojects/NitroDWC/libraries/base/src/dwc_main.c deleted file mode 100644 index ba450de904..0000000000 --- a/subprojects/NitroDWC/libraries/base/src/dwc_main.c +++ /dev/null @@ -1,1306 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -static DWCFriendsMatchControl *stpDwcCnt = NULL; -static int stLastSocketError = 0; -static GT2Connection stGt2ConnectionList[DWC_MAX_CONNECTIONS]; -static DWCConnectionInfo stConnectionInfoList[DWC_MAX_CONNECTIONS]; - - -static BOOL DWCs_UpdateConnection(void); -static void DWCs_ForceShutdown(void); -static void DWCi_SetState(DWCState state); -static int DWCi_DeleteAID(u8 aid); -static u32 DWCi_GetAIDBitmapFromList(u8 *aidList, int aidListLen); -static GPResult DWCi_HandleGPError(GPResult result); -static GT2Result DWCi_HandleGT2Error(GT2Result result); -static void DWCi_LoginCallback(DWCError error, int profileID, void *param); -static void DWCi_UpdateServersCallback(DWCError error, BOOL isChanged, void *param); -static void DWCi_MatchedCallback(DWCError error, BOOL cancel, BOOL self, BOOL isServer, int profileID, void *param); -static void DWCi_GPErrorCallback(GPConnection *pconnection, GPErrorArg *arg, void *param); -static void DWCi_GPRecvBuddyMessageCallback(GPConnection *pconnection, GPRecvBuddyMessageArg *arg, void *param); -static void DWCi_GT2ReceivedCallback(GT2Connection connection, GT2Byte *message, int len, GT2Bool reliable); -static void DWCi_GT2ClosedCallback(GT2Connection connection, GT2CloseReason reason); -static void DWCi_GT2PingCallback(GT2Connection connection, int latency); -static void DWCi_GT2SocketErrorCallback(GT2Socket socket); - - -void DWC_InitFriendsMatch(DWCFriendsMatchControl *dwccnt, DWCUserData *userdata, int productID, const char *gameName, const char *secretKey, int sendBufSize, int recvBufSize, DWCFriendData friendList[], int friendListLen) { - u32 cpySize; - - SDK_ASSERT(dwccnt); - SDK_ASSERT(gameName); - SDK_ASSERT(secretKey); - SDK_ASSERT(friendListLen <= DWC_MAX_MATCH_IDX_LIST); - - DWC_Printf(DWC_REPORTFLAG_DEBUG, "!!DWC_InitFriendsMatch() was called!!\n"); - - stpDwcCnt = dwccnt; - - DWC_ClearError(); - - stpDwcCnt->gt2Socket = NULL; - stpDwcCnt->gt2Callbacks.connected = DWCi_GT2ConnectedCallback; - stpDwcCnt->gt2Callbacks.received = DWCi_GT2ReceivedCallback; - stpDwcCnt->gt2Callbacks.closed = DWCi_GT2ClosedCallback; - stpDwcCnt->gt2Callbacks.ping = DWCi_GT2PingCallback; - stpDwcCnt->gt2SendBufSize = sendBufSize ? sendBufSize : 8 * 1024; - stpDwcCnt->gt2RecvBufSize = recvBufSize ? recvBufSize : 8 * 1024; - stpDwcCnt->gpObj = NULL; - stpDwcCnt->userdata = userdata; - stpDwcCnt->state = DWC_STATE_INIT; - stpDwcCnt->lastState = DWC_STATE_INIT; - stpDwcCnt->aid = 0; - stpDwcCnt->ownCloseFlag = FALSE; - stpDwcCnt->profileID = 0; - stpDwcCnt->gameName = gcd_gamename; - stpDwcCnt->secretKey = gcd_secret_key; - stpDwcCnt->loginCallback = NULL; - stpDwcCnt->loginParam = NULL; - stpDwcCnt->updateServersCallback = NULL; - stpDwcCnt->updateServersParam = NULL; - stpDwcCnt->matchedCallback = NULL; - stpDwcCnt->matchedParam = NULL; - stpDwcCnt->matchedSCCallback = NULL; - stpDwcCnt->matchedSCParam = NULL; - stpDwcCnt->closedCallback = NULL; - stpDwcCnt->closedParam = NULL; - - DWCi_ClearGT2ConnectionList(); - DWCi_LoginInit(&stpDwcCnt->logcnt, userdata, &stpDwcCnt->gpObj, productID, userdata->gamecode, stpDwcCnt->playerName, DWCi_LoginCallback, NULL); - DWCi_FriendInit(&stpDwcCnt->friendcnt, &stpDwcCnt->gpObj, stpDwcCnt->playerName, friendList, friendListLen); - DWCi_MatchInit(&stpDwcCnt->matchcnt, &stpDwcCnt->gpObj, &stpDwcCnt->gt2Socket, &stpDwcCnt->gt2Callbacks, gcd_gamename, gcd_secret_key, friendList, friendListLen); - DWCi_InitTransport(&stpDwcCnt->transinfo); - - cpySize = (strlen(gameName) < sizeof(gcd_gamename))? strlen(gameName) : sizeof(gcd_gamename) - 1; - MI_CpuCopy8(gameName, gcd_gamename, cpySize); - gcd_gamename[cpySize] = '\0'; - - cpySize = (strlen(secretKey) < sizeof(gcd_secret_key))? strlen(secretKey) : sizeof(gcd_secret_key) - 1; - MI_CpuCopy8(secretKey, gcd_secret_key, cpySize); - gcd_secret_key[cpySize] = '\0'; -} - -void DWC_ShutdownFriendsMatch(void) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "!!DWC_ShutdownFriendsMatch() was called!! stpDwcCnt = 0x%x\n", stpDwcCnt); - - if (!stpDwcCnt) { - return; - } - - if (stpDwcCnt->matchcnt.qr2Obj) { - qr2_shutdown(stpDwcCnt->matchcnt.qr2Obj); - stpDwcCnt->matchcnt.qr2Obj = NULL; - } - -#ifdef DWC_QR2_ALIVE_DURING_MATCHING - stpDwcCnt->matchcnt.qr2ShutdownFlag = 0; -#endif - - if (stpDwcCnt->matchcnt.sbObj) { - ServerBrowserFree(stpDwcCnt->matchcnt.sbObj); - stpDwcCnt->matchcnt.sbObj = NULL; - } - - DWCi_NNFreeNegotiateList(); - - CloseStatsConnection(); - - if (stpDwcCnt->gpObj) { - (void)gpSetCallback(&stpDwcCnt->gpObj, GP_ERROR, (GPCallback)NULL, NULL); - (void)gpSetCallback(&stpDwcCnt->gpObj, GP_RECV_BUDDY_MESSAGE, (GPCallback)NULL, NULL); - (void)gpSetCallback(&stpDwcCnt->gpObj, GP_RECV_BUDDY_REQUEST, (GPCallback)NULL, NULL); - (void)gpSetCallback(&stpDwcCnt->gpObj, GP_RECV_BUDDY_STATUS, (GPCallback)NULL, NULL); - (void)gpProcess(&stpDwcCnt->gpObj); - gpDestroy(&stpDwcCnt->gpObj); - stpDwcCnt->gpObj = NULL; - } - - DWCi_ShutdownLogin(); - DWCi_ShutdownFriend(); - DWCi_ShutdownMatch(); - DWCi_ShutdownTransport(); - - if (stpDwcCnt->gt2Socket) { - gt2CloseSocket(stpDwcCnt->gt2Socket); - stpDwcCnt->gt2Socket = NULL; - } - -#ifdef GSI_MEM_MANAGED - gsMemMgrDestroy(); -#endif - - stpDwcCnt = NULL; -} - -void DWC_ProcessFriendsMatch(void) { - GSIACResult acResult; - GPResult gpResult; - - if (DWC_UpdateConnection()) { - DWCs_ForceShutdown(); - } - - if (!stpDwcCnt || (stpDwcCnt->state == DWC_STATE_INIT) || DWCi_IsError()) { - return; - } - - switch (stpDwcCnt->state) { - case DWC_STATE_AVAILABLE_CHECK: - acResult = GSIAvailableCheckThink(); - - switch (acResult) { - case GSIACAvailable: - DWC_Printf(DWC_REPORTFLAG_ACHECK, "Confirmed the backend of GameSpy server.\n"); - gpResult = gpInitialize(&stpDwcCnt->gpObj, stpDwcCnt->logcnt.productID, 0); - - if (DWCi_HandleGPError(gpResult)) { - return; - } - -#if 0 - gpResult = gpDisable(&stpDwcCnt->gpObj, GP_INFO_CACHING_BUDDY_ONLY); - - if (DWCi_HandleGPError(gpResult)) { - return; - } -#endif - - gpResult = gpSetCallback(&stpDwcCnt->gpObj, GP_ERROR, (GPCallback)DWCi_GPErrorCallback, NULL); - - if (DWCi_HandleGPError(gpResult)) { - return; - } - - gpResult = gpSetCallback(&stpDwcCnt->gpObj, GP_RECV_BUDDY_MESSAGE, (GPCallback)DWCi_GPRecvBuddyMessageCallback, NULL); - - if (DWCi_HandleGPError(gpResult)) { - return; - } - - gpResult = gpSetCallback(&stpDwcCnt->gpObj, GP_RECV_BUDDY_REQUEST, (GPCallback)DWCi_GPRecvBuddyRequestCallback, NULL); - - if (DWCi_HandleGPError(gpResult)) { - return; - } - - gpResult = gpSetCallback(&stpDwcCnt->gpObj, GP_RECV_BUDDY_STATUS, (GPCallback)DWCi_GPRecvBuddyStatusCallback, NULL); - - if (DWCi_HandleGPError(gpResult)) { - return; - } - - DWCi_SetState(DWC_STATE_LOGIN); - DWCi_LoginAsync(); - break; - case GSIACUnavailable: - DWCi_StopLogin(DWC_ERROR_AUTH_OUT_OF_SERVICE, -20110); - return; - break; - case GSIACTemporarilyUnavailable: - DWCi_StopLogin(DWC_ERROR_AUTH_STOP_SERVICE, -20101); - return; - break; - default: - break; - } - break; - case DWC_STATE_LOGIN: - DWCi_LoginProcess(); - break; - case DWC_STATE_UPDATE_SERVERS: - case DWC_STATE_ONLINE: - DWCi_FriendProcess(); - DWCi_MatchProcess(FALSE); - break; - case DWC_STATE_MATCHING: - DWCi_MatchProcess(TRUE); - DWCi_FriendProcess(); - break; - case DWC_STATE_CONNECTED: - DWCi_TransportProcess(); - DWCi_FriendProcess(); - - if ((stpDwcCnt->matchcnt.qr2MatchType == DWC_MATCH_TYPE_SC_SV) || (stpDwcCnt->matchcnt.qr2MatchType == DWC_MATCH_TYPE_SC_CL)) { - DWCi_MatchProcess(TRUE); - } - else if (stpDwcCnt->gt2Socket) { - DWCi_MatchProcess(FALSE); - } - break; - default: - break; - } - -#ifdef DWC_QR2_ALIVE_DURING_MATCHING - if (stpDwcCnt->matchcnt.qr2ShutdownFlag == 1) { - if (stpDwcCnt->matchcnt.qr2Obj != NULL) { - qr2_shutdown(stpDwcCnt->matchcnt.qr2Obj); - stpDwcCnt->matchcnt.qr2Obj = NULL; - } - - stpDwcCnt->matchcnt.qr2ShutdownFlag = 0; - } -#endif -} - -BOOL DWC_LoginAsync(const u16 *ingamesn, const char *reserved, DWCLoginCallback callback, void *param) { -#pragma unused(reserved) - u32 len; - - SDK_ASSERT(stpDwcCnt); - SDK_ASSERT(callback); - - DWC_Printf(DWC_REPORTFLAG_DEBUG, "!!DWC_LoginAsync() was called!!\n"); - - if (ingamesn == NULL) { - DWC_Printf(DWC_REPORTFLAG_WARNING, "ingamesn is NULL!!\n"); - return FALSE; - } - - if (DWCi_IsError() || (stpDwcCnt->state != DWC_STATE_INIT)) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "But ignored.\n"); - return FALSE; - } - - stpDwcCnt->loginCallback = callback; - stpDwcCnt->loginParam = param; - - if (!ingamesn || (ingamesn[0] == '\0')) { - len = 0; - } - else { - MI_CpuClear16(stpDwcCnt->playerName, DWC_MAX_PLAYER_NAME * 2); - len = (DWCi_WStrLen(ingamesn) <= DWC_MAX_PLAYER_NAME - 1)? DWCi_WStrLen(ingamesn) : DWC_MAX_PLAYER_NAME - 1; - MI_CpuCopy16(ingamesn, stpDwcCnt->playerName, len * 2); - } - - stpDwcCnt->playerName[len] = 0; - - if (DWC_GetInetStatus() != DWC_CONNECTINET_STATE_CONNECTED) { - DWCi_StopLogin(DWC_ERROR_AUTH_ANY, DWC_ECODE_SEQ_LOGIN + DWC_ECODE_TYPE_NETWORK); - return TRUE; - } - - DWCi_SetState(DWC_STATE_AVAILABLE_CHECK); - GSIStartAvailableCheck(stpDwcCnt->gameName); - - return TRUE; -} - -BOOL DWC_UpdateServersAsync(const char *playerName, DWCUpdateServersCallback updateCallback, void *updateParam, DWCFriendStatusCallback statusCallback, void *statusParam, DWCDeleteFriendListCallback deleteCallback, void *deleteParam) { -#pragma unused(playerName) - - SDK_ASSERT(stpDwcCnt); - SDK_ASSERT(updateCallback); - - DWC_Printf(DWC_REPORTFLAG_DEBUG, "!!DWC_UpdateServersAsync() was called!!\n"); - - if (DWCi_IsError() || (stpDwcCnt->state < DWC_STATE_ONLINE) || (stpDwcCnt->state == DWC_STATE_UPDATE_SERVERS)) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "But ignored.\n"); - return FALSE; - } - -#if 0 - if (!playerName || (playerName[0] == '\0')) { - len = 0; - } - else { - len = (strlen(playerName) < DWC_MAX_PLAYER_NAME)? strlen(playerName) : DWC_MAX_PLAYER_NAME - 1; - MI_CpuCopy8(playerName, stpDwcCnt->playerName, len); - } - stpDwcCnt->playerName[len] = '\0'; -#endif - - stpDwcCnt->updateServersCallback = updateCallback; - stpDwcCnt->updateServersParam = updateParam; - - DWCi_SetState(DWC_STATE_UPDATE_SERVERS); - DWCi_UpdateServersAsync(stpDwcCnt->logcnt.authToken, stpDwcCnt->logcnt.partnerChallenge, DWCi_UpdateServersCallback, NULL, statusCallback, statusParam, deleteCallback, deleteParam); - - return TRUE; -} - -BOOL DWC_ConnectToAnybodyAsync(u8 numEntry, const char *addFilter, DWCMatchedCallback matchedCallback, void *matchedParam, DWCEvalPlayerCallback evalCallback, void *evalParam) { - SDK_ASSERT(stpDwcCnt); - SDK_ASSERT((numEntry > 1) && (numEntry <= DWC_MAX_CONNECTIONS)); - SDK_ASSERT(matchedCallback); - - DWC_Printf(DWC_REPORTFLAG_DEBUG, "!!DWC_ConnectToAnybodyAsync() was called!!\n"); - - if (DWCi_IsError() || (stpDwcCnt->state != DWC_STATE_ONLINE)) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "But ignored.\n"); - return FALSE; - } - - DWCi_ClearGT2ConnectionList(); - - stpDwcCnt->matchedCallback = matchedCallback; - stpDwcCnt->matchedParam = matchedParam; - - DWCi_SetState(DWC_STATE_MATCHING); - DWCi_ConnectToAnybodyAsync((u8)(numEntry - 1), addFilter, DWCi_MatchedCallback, NULL, evalCallback, evalParam); - - return TRUE; -} - -BOOL DWC_ConnectToFriendsAsync(const u8 friendIdxList[], int friendIdxListLen, u8 numEntry, BOOL distantFriend, DWCMatchedCallback matchedCallback, void *matchedParam, DWCEvalPlayerCallback evalCallback, void *evalParam) { - u8 tmpFriendIdxList[DWC_MAX_MATCH_IDX_LIST]; - u8 idxList[DWC_MAX_MATCH_IDX_LIST]; - u8 i; - u32 j; - - SDK_ASSERT(stpDwcCnt); - SDK_ASSERT(friendIdxListLen <= DWC_MAX_MATCH_IDX_LIST); - SDK_ASSERT((numEntry > 1) && (numEntry <= DWC_MAX_CONNECTIONS)); - SDK_ASSERT(matchedCallback); - - DWC_Printf(DWC_REPORTFLAG_DEBUG, "!!DWC_ConnectToFriendsAsync() was called!!\n"); - - if (DWCi_IsError() || (stpDwcCnt->state != DWC_STATE_ONLINE)) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "But ignored.\n"); - return FALSE; - } - - DWCi_ClearGT2ConnectionList(); - - stpDwcCnt->matchedCallback = matchedCallback; - stpDwcCnt->matchedParam = matchedParam; - - DWCi_SetState(DWC_STATE_MATCHING); - - if (friendIdxList) { - DWCi_ConnectToFriendsAsync(friendIdxList, friendIdxListLen, (u8)(numEntry - 1), distantFriend, DWCi_MatchedCallback, NULL, evalCallback, evalParam); - } - else { - friendIdxListLen = 0; - - for (i = 0; i < DWCi_GetFriendListLen(); i++) { - idxList[i] = i; - } - - for (i = 0; i < DWCi_GetFriendListLen(); i++) { - u32 randIdx = DWCi_GetMathRand32((u32)(DWCi_GetFriendListLen() - i)); - -#ifdef DWC_MATCH_ACCEPT_NO_FRIEND - tmpFriendIdxList[i] = idxList[randIdx]; - friendIdxListLen++; -#else - if (DWCi_Acc_IsValidFriendData(&(DWCi_GetFriendList())[idxList[randIdx]])) { - tmpFriendIdxList[i] = idxList[randIdx]; - friendIdxListLen++; - } -#endif - for (j = randIdx; j < DWCi_GetFriendListLen() - i - 1; j++) { - idxList[j] = idxList[j + 1]; - } - } - - DWCi_ConnectToFriendsAsync(tmpFriendIdxList, friendIdxListLen, (u8)(numEntry - 1), distantFriend, DWCi_MatchedCallback, NULL, evalCallback, evalParam); - } - - return TRUE; -} - -BOOL DWC_SetupGameServer(u8 maxEntry, DWCMatchedSCCallback matchedCallback, void *matchedParam, DWCNewClientCallback newClientCallback, void *newClientParam) { - SDK_ASSERT(stpDwcCnt); - SDK_ASSERT((maxEntry > 1) && (maxEntry <= DWC_MAX_CONNECTIONS)); - SDK_ASSERT(matchedCallback); - - DWC_Printf(DWC_REPORTFLAG_DEBUG, "!!DWC_SetupGameServer() was called!!\n"); - - if (DWCi_IsError() || (stpDwcCnt->state != DWC_STATE_ONLINE)) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "But ignored.\n"); - return FALSE; - } - - DWCi_ClearGT2ConnectionList(); - - stpDwcCnt->matchedSCCallback = matchedCallback; - stpDwcCnt->matchedSCParam = matchedParam; - stpDwcCnt->aid = 0; - - DWCi_SetState(DWC_STATE_MATCHING); - DWCi_SetupGameServer((u8)(maxEntry - 1), DWCi_MatchedCallback, NULL, newClientCallback, newClientParam); - - return TRUE; -} - -BOOL DWC_ConnectToGameServerAsync(int serverIndex, DWCMatchedSCCallback matchedCallback, void *matchedParam, DWCNewClientCallback newClientCallback, void *newClientParam) { - int profileID; - int buddyIdx = -1; - GPBuddyStatus status; - DWCError dwcError; - - SDK_ASSERT(stpDwcCnt); - SDK_ASSERT(matchedCallback); - - DWC_Printf(DWC_REPORTFLAG_DEBUG, "!!DWC_ConnectToGameServerAsync() was called!!\n"); - - if (DWCi_IsError() || (stpDwcCnt->state != DWC_STATE_ONLINE)) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "But ignored.\n"); - return FALSE; - } - - DWCi_ClearGT2ConnectionList(); - - stpDwcCnt->matchedSCCallback = matchedCallback; - stpDwcCnt->matchedSCParam = matchedParam; - - DWCi_SetState(DWC_STATE_MATCHING); - - if (!(profileID = DWCi_GetProfileIDFromList(serverIndex)) || !gpIsBuddy(&stpDwcCnt->gpObj, profileID)) { - DWC_Printf(DWC_REPORTFLAG_ERROR, "pid %d is not buddy.\n", profileID); - dwcError = DWC_ERROR_NOT_FRIEND_SERVER; - goto error; - - } - - (void)gpGetBuddyIndex(&stpDwcCnt->gpObj, profileID, &buddyIdx); - (void)gpGetBuddyStatus(&stpDwcCnt->gpObj, buddyIdx, &status); - - if (status.status != DWC_STATUS_MATCH_SC_SV) { - DWC_Printf(DWC_REPORTFLAG_ERROR, "pid %d is not game server.\n", profileID); - dwcError = DWC_ERROR_NOT_FRIEND_SERVER; - goto error; - } - { - char valueStr[4]; - u8 maxEntry, numEntry; - - valueStr[0] = '0'; - - DWC_GetCommonValueString(DWC_GP_SSTR_KEY_MATCH_SC_MAX, valueStr, status.statusString, '/'); - maxEntry = (u8)strtoul(valueStr, NULL, 10); - - DWC_GetCommonValueString(DWC_GP_SSTR_KEY_MATCH_SC_NUM, valueStr, status.statusString, '/'); - numEntry = (u8)strtoul(valueStr, NULL, 10); - - if (numEntry == maxEntry) { - DWC_Printf(DWC_REPORTFLAG_ERROR, "pid %d is fully occupied.\n", profileID); - dwcError = DWC_ERROR_SERVER_FULL; - goto error; - } - } - - DWCi_ConnectToGameServerAsync(profileID, DWCi_MatchedCallback, NULL, newClientCallback, newClientParam); - return TRUE; - - error: DWCi_SetError(dwcError, 0); - - stpDwcCnt->matchedSCCallback(dwcError, FALSE, TRUE, FALSE, 0, stpDwcCnt->matchedSCParam); - - if ((stpDwcCnt != NULL) && (stpDwcCnt->state == DWC_STATE_MATCHING)) { - DWCi_SetState(DWC_STATE_ONLINE); - - (void)DWCi_SetGPStatus(DWC_STATUS_ONLINE, "", NULL); - } - - return TRUE; -} - -BOOL DWC_SetConnectionClosedCallback(DWCConnectionClosedCallback callback, void *param) { - if (!stpDwcCnt) { - return FALSE; - } - - stpDwcCnt->closedCallback = callback; - stpDwcCnt->closedParam = param; - - return TRUE; -} - -int DWC_CloseConnectionsAsync(void) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "!!DWC_CloseConnectionsAsync() was called!!\n"); - - if (!stpDwcCnt || DWCi_IsError() || ((stpDwcCnt->state != DWC_STATE_MATCHING) && (stpDwcCnt->state != DWC_STATE_CONNECTED))) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "But ignored.\n"); - return -1; - } - - if (!stpDwcCnt->matchcnt.gt2NumConnection) { - DWC_Printf(DWC_REPORTFLAG_TRANSPORT, "Closed 0 connection.\n"); - (void)DWCi_SetGPStatus(DWC_STATUS_ONLINE, "", NULL); - DWCi_NNFreeNegotiateList(); - DWCi_SetState(DWC_STATE_ONLINE); - - return 1; - } - - gt2CloseAllConnections(stpDwcCnt->gt2Socket); - - return 0; -} - -int DWC_CloseAllConnectionsHard(void) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "!!DWC_CloseAllConnectionsHard() was called!!\n"); - - if (!stpDwcCnt || DWCi_IsError() || ((stpDwcCnt->state != DWC_STATE_MATCHING) && (stpDwcCnt->state != DWC_STATE_CONNECTED))) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "But ignored.\n"); - return -1; - } - - if (!stpDwcCnt->matchcnt.gt2NumConnection) { - DWC_Printf(DWC_REPORTFLAG_TRANSPORT, "Closed 0 connection.\n"); - (void)DWCi_SetGPStatus(DWC_STATUS_ONLINE, "", NULL); - DWCi_NNFreeNegotiateList(); - DWCi_SetState(DWC_STATE_ONLINE); - - return 1; - } - - stpDwcCnt->ownCloseFlag = TRUE; - gt2CloseAllConnectionsHard(stpDwcCnt->gt2Socket); - stpDwcCnt->ownCloseFlag = FALSE; - - return 0; -} - -int DWC_CloseConnectionHard(u8 aid) { - GT2Connection connection; - - DWC_Printf(DWC_REPORTFLAG_DEBUG, "!!DWC_CloseConnectionHard() was called!! aid = %d.\n", aid); - - if (!stpDwcCnt || DWCi_IsError() || ((stpDwcCnt->state != DWC_STATE_MATCHING) && (stpDwcCnt->state != DWC_STATE_CONNECTED))) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "But ignored.\n"); - return -1; - } - - if (!(connection = DWCi_GetGT2Connection(aid))) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "No connection!\n"); - return -2; - } - - gt2CloseConnectionHard(connection); - - return 0; -} - -int DWC_CloseConnectionHardBitmap(u32 *bitmap) { - u8 aid; - u32 bitmask; - - DWC_Printf(DWC_REPORTFLAG_DEBUG, "!!DWC_CloseConnectionHardBitmap() was called!! AID bitmap = 0x%x\n", (bitmap == NULL) ? 0 : *bitmap); - - if (!stpDwcCnt || !bitmap || DWCi_IsError() || ((stpDwcCnt->state != DWC_STATE_MATCHING) && (stpDwcCnt->state != DWC_STATE_CONNECTED))) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "But ignored.\n"); - return -1; - } - - for (aid = 0; aid < DWC_MAX_CONNECTIONS; aid++) { - bitmask = 1U << aid; - - if (*bitmap & bitmask) { - if (aid == DWC_GetMyAID()) { - *bitmap &= ~bitmask; - } - else if (DWC_CloseConnectionHard(aid)) { - *bitmap &= ~bitmask; - } - } - } - - if (!*bitmap) { - return -2; - } - - return 0; -} - -int DWC_GetNumConnectionHost(void) { - if (!stpDwcCnt) { - return 0; - } - - if ((stpDwcCnt->matchcnt.qr2MatchType == DWC_MATCH_TYPE_SC_SV) || (stpDwcCnt->matchcnt.qr2MatchType == DWC_MATCH_TYPE_SC_CL)) { - return DWCi_GetNumValidConnection() + 1; - } - else { - return DWCi_GetNumAllConnection() + 1; - } -} - -u8 DWC_GetMyAID(void) { - if (!stpDwcCnt) { - return 0; - } - - return stpDwcCnt->aid; -} - -int DWC_GetAIDList(u8 **aidList) { - if (!stpDwcCnt) { - return 0; - } - - *aidList = stpDwcCnt->matchcnt.aidList; - - if ((stpDwcCnt->matchcnt.qr2MatchType == DWC_MATCH_TYPE_SC_SV) || (stpDwcCnt->matchcnt.qr2MatchType == DWC_MATCH_TYPE_SC_CL)) { - return DWCi_GetValidAIDList(aidList); - } - else { - return DWCi_GetAllAIDList(aidList); - } -} - -u32 DWC_GetAIDBitmap(void) { - u8 *pAidList; - u32 bitmap = 0; - int numHost; - - if (!stpDwcCnt) { - return 0; - } - - numHost = DWC_GetAIDList(&pAidList); - bitmap = DWCi_GetAIDBitmapFromList(pAidList, numHost); - - return bitmap; -} - -BOOL DWC_IsValidAID(u8 aid) { - if (!stpDwcCnt) { - return FALSE; - } - - if (!(stpDwcCnt->matchcnt.validAidBitmap & (1 << aid))) { - return FALSE; - } - - return DWCi_IsValidAID(aid); -} - -DWCState DWC_GetState(void) { - if (!stpDwcCnt) { - return DWC_STATE_INIT; - } - else { - return stpDwcCnt->state; - } -} - -int DWC_GetLastSocketError(void) { - return stLastSocketError; -} - -GT2Result DWCi_GT2Startup(void) { - u16 baseport; - GT2Result gt2Result; - - if (stpDwcCnt->gt2Socket) { - DWC_Printf(DWC_REPORTFLAG_WARNING, "gt2Socket is already made.\n"); - return GT2Success; - } - - baseport = (u16)(0xc000 + DWCi_GetMathRand32(0x4000)); - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "--- Private port = %d ---\n", baseport); - gt2Result = gt2CreateSocket(&stpDwcCnt->gt2Socket, gt2AddressToString(0, baseport, NULL), stpDwcCnt->gt2SendBufSize, stpDwcCnt->gt2RecvBufSize, DWCi_GT2SocketErrorCallback); - - if (DWCi_HandleGT2Error(gt2Result)) { - return gt2Result; - } - - gt2Listen(stpDwcCnt->gt2Socket, DWCi_GT2ConnectAttemptCallback); - gt2SetUnrecognizedMessageCallback(stpDwcCnt->gt2Socket, DWCi_GT2UnrecognizedMessageCallback); - - return gt2Result; -} - -GT2Connection DWCi_GetGT2Connection(u8 aid) { - int i; - - if (!stpDwcCnt) { - return NULL; - } - - for (i = 0; i < DWC_MAX_CONNECTIONS; i++) { - if (stGt2ConnectionList[i] && (((DWCConnectionInfo *)gt2GetConnectionData(stGt2ConnectionList[i]))->aid == aid)) { - return stGt2ConnectionList[i]; - } - } - - return NULL; -} - -u8 DWCi_GetConnectionAID(GT2Connection connection) { - return ((DWCConnectionInfo *)gt2GetConnectionData(connection))->aid; -} - -u8 DWCi_GetConnectionIndex(GT2Connection connection) { - return ((DWCConnectionInfo *)gt2GetConnectionData(connection))->index; -} - -void *DWCi_GetConnectionUserData(GT2Connection connection) { - return ((DWCConnectionInfo *)gt2GetConnectionData(connection))->param; -} - -int DWCi_GT2GetConnectionListIdx(void) { - int i; - - for (i = 0; i < DWC_MAX_CONNECTIONS; i++) { - if (!stGt2ConnectionList[i]) { - return i; - } - } - - return -1; -} - -void DWCi_ClearGT2ConnectionList(void) { - MI_CpuClear32(stGt2ConnectionList, sizeof(GT2Connection) * DWC_MAX_CONNECTIONS); - MI_CpuClear32(stConnectionInfoList, sizeof(DWCConnectionInfo) * DWC_MAX_CONNECTIONS); -} - -GT2Connection*DWCi_GetGT2ConnectionByIdx(int index) { - return &stGt2ConnectionList[index]; -} - -GT2Connection*DWCi_GetGT2ConnectionByProfileID(int profileID, int numHost) { - u8 i; - - for (i = 0; i < numHost; i++) { - if (stpDwcCnt->matchcnt.sbPidList[i] == profileID) { - break; - } - } - - if (i >= numHost) { - return NULL; - } - - return DWCi_GetGT2ConnectionByIdx(DWCi_GetConnectionIndex(DWCi_GetGT2Connection(stpDwcCnt->matchcnt.aidList[i]))); -} - -DWCConnectionInfo *DWCi_GetConnectionInfoByIdx(int index) { - return &stConnectionInfoList[index]; -} - -BOOL DWCi_IsValidAID(u8 aid) { - int i; - - for (i = 0; i < DWC_MAX_CONNECTIONS; i++) { - if (stGt2ConnectionList[i] && (((DWCConnectionInfo *)gt2GetConnectionData(stGt2ConnectionList[i]))->aid == aid)) { - return TRUE; - } - } - - return FALSE; -} - -static void DWCs_ForceShutdown(void) { -} - -static void DWCi_SetState(DWCState state) { - stpDwcCnt->lastState = stpDwcCnt->state; - stpDwcCnt->state = state; -} - -static int DWCi_DeleteAID(u8 aid) { - u8 *pAidList; - int numHost; - int i; - - numHost = DWCi_GetAllAIDList(&pAidList); - - for (i = 0; i < numHost; i++) { - if (pAidList[i] == aid) { - break; - } - } - - if (i == numHost) { - return 0; - } - - return DWCi_DeleteHostByIndex(i, numHost); -} - -static u32 DWCi_GetAIDBitmapFromList(u8 *aidList, int aidListLen) { - u32 bitmap = 0; - int i; - - for (i = 0; i < aidListLen; i++) { - bitmap |= 1 << aidList[i]; - } - - return bitmap; -} - -static GPResult DWCi_HandleGPError(GPResult result) { - int errorCode; - DWCError dwcError; - - if (result == GP_NO_ERROR) { - return GP_NO_ERROR; - } - - DWC_Printf(DWC_REPORTFLAG_ERROR, "Main, GP error %d\n", result); - - switch (result) { - case GP_MEMORY_ERROR: - dwcError = DWC_ERROR_FATAL; - errorCode = DWC_ECODE_TYPE_ALLOC; - break; - case GP_PARAMETER_ERROR: - dwcError = DWC_ERROR_FATAL; - errorCode = DWC_ECODE_TYPE_PARAM; - break; - case GP_NETWORK_ERROR: - dwcError = DWC_ERROR_NETWORK; - errorCode = DWC_ECODE_TYPE_NETWORK; - break; - case GP_SERVER_ERROR: - dwcError = DWC_ERROR_NETWORK; - errorCode = DWC_ECODE_TYPE_SERVER; - break; - } - - switch (stpDwcCnt->state) { - case DWC_STATE_AVAILABLE_CHECK: - errorCode += DWC_ECODE_SEQ_LOGIN + DWC_ECODE_GS_GP; - DWCi_StopLogin(dwcError, errorCode); - break; - case DWC_STATE_LOGIN: - errorCode += DWC_ECODE_SEQ_LOGIN + DWC_ECODE_GS_GP; - - if (stpDwcCnt->logcnt.state < DWC_LOGIN_STATE_REMOTE_AUTH) { - DWCi_StopLogin(dwcError, errorCode); - } - else { - DWC_Printf(DWC_REPORTFLAG_ERROR, "Not handle an error here.\n"); - } - break; - case DWC_STATE_MATCHING: - errorCode += DWC_ECODE_SEQ_MATCH + DWC_ECODE_GS_GP; - DWCi_StopMatching(dwcError, errorCode); - break; - case DWC_STATE_UPDATE_SERVERS: - errorCode += DWC_ECODE_SEQ_FRIEND + DWC_ECODE_GS_GP; - break; - default: - errorCode += DWC_ECODE_SEQ_ETC + DWC_ECODE_GS_GP; - break; - } - - DWCi_StopFriendProcess(dwcError, errorCode); - - return result; -} - -static GT2Result DWCi_HandleGT2Error(GT2Result result) { - int errorCode; - DWCError dwcError; - - if (result == GT2Success) { - return GT2Success; - } - - DWC_Printf(DWC_REPORTFLAG_ERROR, "Main, GT2 error %d\n", result); - - switch (result) { - case GT2OutOfMemory: - dwcError = DWC_ERROR_FATAL; - errorCode = DWC_ECODE_TYPE_ALLOC; - break; - case GT2Rejected: - case GT2DuplicateAddress: - dwcError = DWC_ERROR_NONE; - errorCode = 0; - result = GT2Success; - break; - case GT2NetworkError: - dwcError = DWC_ERROR_NETWORK; - errorCode = DWC_ECODE_TYPE_NETWORK; - break; - case GT2AddressError: - dwcError = DWC_ERROR_NETWORK; - errorCode = DWC_ECODE_TYPE_DNS; - break; - case GT2TimedOut: - dwcError = DWC_ERROR_NETWORK; - errorCode = DWC_ECODE_TYPE_TIMEOUT; - break; - case GT2NegotiationError: - dwcError = DWC_ERROR_NETWORK; - errorCode = DWC_ECODE_TYPE_PEER; - break; - } - - if (dwcError) { - errorCode += DWC_ECODE_SEQ_LOGIN + DWC_ECODE_GS_GT2; - DWCi_StopLogin(dwcError, errorCode); - } - - return result; -} - -static void DWCi_LoginCallback(DWCError error, int profileID, void *param) { -#pragma unused(param) - - if (error == DWC_ERROR_NONE) { - stpDwcCnt->profileID = profileID; - DWCi_SetState(DWC_STATE_ONLINE); - - DWCi_InitGPProcessCount(); - } - else { - DWCi_SetState(DWC_STATE_INIT); - } - - if (stpDwcCnt->loginCallback != NULL) { - stpDwcCnt->loginCallback(error, profileID, stpDwcCnt->loginParam); - } -} - -static void DWCi_UpdateServersCallback(DWCError error, BOOL isChanged, void *param) { -#pragma unused(param) - - if (stpDwcCnt->lastState != DWC_STATE_UPDATE_SERVERS) { - DWCi_SetState(stpDwcCnt->lastState); - } - - stpDwcCnt->updateServersCallback(error, isChanged, stpDwcCnt->updateServersParam); -} - -static void DWCi_MatchedCallback(DWCError error, BOOL cancel, BOOL self, BOOL isServer, int index, void *param) { -#pragma unused(param) - int i; - - if ((error == DWC_ERROR_NONE) && cancel) { - if (stpDwcCnt->matchcnt.state == DWC_MATCH_STATE_INIT) { - DWCi_ClearQR2Key(); - - DWCi_SetState(DWC_STATE_ONLINE); - } - } - else if (error == DWC_ERROR_NONE) { - DWCi_SetState(DWC_STATE_CONNECTED); - - for (i = 0; i <= stpDwcCnt->matchcnt.gt2NumConnection; i++) { - if (stpDwcCnt->matchcnt.sbPidList[i] == stpDwcCnt->profileID) { - stpDwcCnt->aid = stpDwcCnt->matchcnt.aidList[i]; - break; - } - } - } - -#ifndef SDK_FINALROM - if (!error) { - int i; - - for (i = 0; i < stpDwcCnt->matchcnt.gt2NumConnection + 1; i++) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "aid[%d] = %d, pid[%d] = %u\n", i, stpDwcCnt->matchcnt.aidList[i], i, stpDwcCnt->matchcnt.sbPidList[i]); - } - } -#endif - - stpDwcCnt->matchcnt.validAidBitmap = DWCi_GetAIDBitmapFromList(stpDwcCnt->matchcnt.aidList, stpDwcCnt->matchcnt.gt2NumConnection + 1); - DWCi_SetNumValidConnection(); - - if ((stpDwcCnt->matchcnt.qr2MatchType == DWC_MATCH_TYPE_SC_SV) || (stpDwcCnt->matchcnt.qr2MatchType == DWC_MATCH_TYPE_SC_CL)) { - stpDwcCnt->matchedSCCallback(error, cancel, self, isServer, index, stpDwcCnt->matchedSCParam); - } - else { - stpDwcCnt->matchedCallback(error, cancel, stpDwcCnt->matchedParam); - } - - if ((error != DWC_ERROR_NONE) && (stpDwcCnt != NULL) && (stpDwcCnt->state == DWC_STATE_MATCHING)) { - DWCi_SetState(DWC_STATE_ONLINE); - } -} - -static void DWCi_GPErrorCallback(GPConnection *pconnection, GPErrorArg *arg, void *param) { -#pragma unused(pconnection) -#pragma unused(param) - gsi_char *errorCodeString; - gsi_char *resultString; - GPResult gpResult; - -#ifdef DWC_IGNORE_GP_ERROR_ALREADY_BUDDY - if ((arg->errorCode == GP_ADDBUDDY_ALREADY_BUDDY) || (arg->errorCode == GP_BM_NOT_BUDDY) || (arg->errorCode == GP_DELBUDDY_NOT_BUDDY)) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "Ignore GP ALLREADY_BUDDY or NOT_BUDDY %d.\n", arg->errorCode); - - return; - } -#endif - -#define RESULT(x) case x: resultString = #x; break; - - switch (arg->result) { - RESULT(GP_NO_ERROR) - RESULT(GP_MEMORY_ERROR) - RESULT(GP_PARAMETER_ERROR) - RESULT(GP_NETWORK_ERROR) - RESULT(GP_SERVER_ERROR) - default: - resultString = "Unknown result!\n"; - } - -#define ERRORCODE(x) case x: errorCodeString = #x; break; - - switch (arg->errorCode) { - ERRORCODE(GP_GENERAL) - ERRORCODE(GP_PARSE) - ERRORCODE(GP_NOT_LOGGED_IN) - ERRORCODE(GP_BAD_SESSKEY) - ERRORCODE(GP_DATABASE) - ERRORCODE(GP_NETWORK) - ERRORCODE(GP_FORCED_DISCONNECT) - ERRORCODE(GP_CONNECTION_CLOSED) - ERRORCODE(GP_LOGIN) - ERRORCODE(GP_LOGIN_TIMEOUT) - ERRORCODE(GP_LOGIN_BAD_NICK) - ERRORCODE(GP_LOGIN_BAD_EMAIL) - ERRORCODE(GP_LOGIN_BAD_PASSWORD) - ERRORCODE(GP_LOGIN_BAD_PROFILE) - ERRORCODE(GP_LOGIN_PROFILE_DELETED) - ERRORCODE(GP_LOGIN_CONNECTION_FAILED) - ERRORCODE(GP_LOGIN_SERVER_AUTH_FAILED) - ERRORCODE(GP_NEWUSER) - ERRORCODE(GP_NEWUSER_BAD_NICK) - ERRORCODE(GP_NEWUSER_BAD_PASSWORD) - ERRORCODE(GP_UPDATEUI) - ERRORCODE(GP_UPDATEUI_BAD_EMAIL) - ERRORCODE(GP_NEWPROFILE) - ERRORCODE(GP_NEWPROFILE_BAD_NICK) - ERRORCODE(GP_NEWPROFILE_BAD_OLD_NICK) - ERRORCODE(GP_UPDATEPRO) - ERRORCODE(GP_UPDATEPRO_BAD_NICK) - ERRORCODE(GP_ADDBUDDY) - ERRORCODE(GP_ADDBUDDY_BAD_FROM) - ERRORCODE(GP_ADDBUDDY_BAD_NEW) - ERRORCODE(GP_ADDBUDDY_ALREADY_BUDDY) - ERRORCODE(GP_AUTHADD) - ERRORCODE(GP_AUTHADD_BAD_FROM) - ERRORCODE(GP_AUTHADD_BAD_SIG) - ERRORCODE(GP_STATUS) - ERRORCODE(GP_BM) - ERRORCODE(GP_BM_NOT_BUDDY) - ERRORCODE(GP_GETPROFILE) - ERRORCODE(GP_GETPROFILE_BAD_PROFILE) - ERRORCODE(GP_DELBUDDY) - ERRORCODE(GP_DELBUDDY_NOT_BUDDY) - ERRORCODE(GP_DELPROFILE) - ERRORCODE(GP_DELPROFILE_LAST_PROFILE) - ERRORCODE(GP_SEARCH) - ERRORCODE(GP_SEARCH_CONNECTION_FAILED) - default: - errorCodeString = "Unknown error code!\n"; - } - - if (arg->fatal) { - DWC_Printf(DWC_REPORTFLAG_ERROR, "FATAL ERROR\n"); - } - else { - DWC_Printf(DWC_REPORTFLAG_ERROR, "ERROR\n"); - } - - DWC_Printf(DWC_REPORTFLAG_ERROR, "RESULT: %s (%d)\n", resultString, arg->result); - DWC_Printf(DWC_REPORTFLAG_ERROR, "ERROR CODE: %s (0x%X)\n", errorCodeString, arg->errorCode); - DWC_Printf(DWC_REPORTFLAG_ERROR, "ERROR STRING: %s\n", arg->errorString); - - gpResult = GP_NETWORK_ERROR; - - (void)DWCi_HandleGPError(gpResult); -} - -static void DWCi_GPRecvBuddyMessageCallback(GPConnection *pconnection, GPRecvBuddyMessageArg *arg, void *param) { -#pragma unused(param) - char version[12] = {0, }; - char *message = arg->message; - u32 len; - - if (DWCi_GPRecvBuddyAuthCallback(pconnection, arg, param)) { - return; - } - - if (memcmp(message, DWC_GP_COMMAND_STRING, strlen(DWC_GP_COMMAND_STRING))) { - DWC_Printf(DWC_REPORTFLAG_WARNING, "Received undefined buddy message. '%s'\n", message); - - return; - } - - message += strlen(DWC_GP_COMMAND_STRING); - len = (u32)(strchr(message, 'v') - message); - strncpy(version, message, len); - - if ((len > 10) || (strtoul(version, NULL, 10) != DWC_MATCHING_VERSION)) { - DWC_Printf(DWC_REPORTFLAG_WARNING, "Received different version buddy message command. '%s'\n", message); - return; - } - - message += len + 1; - - if (memcmp(message, DWC_GP_COMMAND_MATCH_STRING, strlen(DWC_GP_COMMAND_MATCH_STRING)) == 0) { - if ((stpDwcCnt->state == DWC_STATE_MATCHING) || ((stpDwcCnt->state == DWC_STATE_CONNECTED) && ((stpDwcCnt->matchcnt.qr2MatchType == DWC_MATCH_TYPE_SC_SV) || (stpDwcCnt->matchcnt.qr2MatchType == DWC_MATCH_TYPE_SC_CL)))) { - message += strlen(DWC_GP_COMMAND_MATCH_STRING); - DWCi_MatchGPRecvBuddyMsgCallback(pconnection, arg->profile, message); - } - else { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "Ignore delayed GP matching command.\n"); - } - } -} - -static void DWCi_GT2ReceivedCallback(GT2Connection connection, GT2Byte *message, int len, GT2Bool reliable) { - DWCi_RecvCallback(connection, message, len, reliable); -} - -static void DWCi_GT2ClosedCallback(GT2Connection connection, GT2CloseReason reason) { - u8 aid; - int profileID = 0; - int errorCode; - int i; - BOOL isServer = FALSE; - BOOL aidValid; - DWCConnectionInfo *conninfo; - DWCError dwcError; - - if (DWCi_IsShutdownMatch()) { - DWC_Printf(DWC_REPORTFLAG_WARNING, "Called DWC_ShutdownFriendsMatch() with unexpected status.\n"); - return; - } - - switch (reason) { - case GT2LocalClose: - case GT2RemoteClose: - dwcError = DWC_ERROR_NONE; - break; - case GT2CommunicationError: - case GT2SocketError: - dwcError = DWC_ERROR_NETWORK; - errorCode = DWC_ECODE_GS_GT2 + DWC_ECODE_TYPE_CLOSE; - break; - case GT2NotEnoughMemory: - dwcError = DWC_ERROR_FATAL; - errorCode = DWC_ECODE_GS_GT2 + DWC_ECODE_TYPE_CLOSE + DWC_ECODE_TYPE_ALLOC; - break; - } - - DWC_Printf(DWC_REPORTFLAG_DEBUG, "Connection was closed (reason %d).\n", reason); - - if (!dwcError) { - conninfo = (DWCConnectionInfo *)gt2GetConnectionData(connection); - - if (!conninfo) { - return; - } - - aid = conninfo->aid; - - if (stpDwcCnt->matchcnt.validAidBitmap & (1 << aid)) { - aidValid = TRUE; - } - else { - aidValid = FALSE; - } - - DWCi_ClearTransConnection(aid); - - DWC_Printf(DWC_REPORTFLAG_DEBUG, "aid = %d (validity %d).\n", aid, aidValid); - - if (((stpDwcCnt->matchcnt.qr2MatchType == DWC_MATCH_TYPE_SC_SV) && (reason == GT2LocalClose)) || ((stpDwcCnt->matchcnt.qr2MatchType == DWC_MATCH_TYPE_SC_CL) && (aid == 0))) { - isServer = TRUE; - } - - profileID = DWCi_DeleteAID(aid); - stGt2ConnectionList[conninfo->index] = NULL; - - if (stpDwcCnt->matchcnt.gt2NumConnection > 0) { - stpDwcCnt->matchcnt.gt2NumConnection--; - } - - if (stpDwcCnt->matchcnt.qr2NNFinishCount > 0) { - stpDwcCnt->matchcnt.qr2NNFinishCount--; - } - } - - if (!stpDwcCnt->ownCloseFlag && (stpDwcCnt->state == DWC_STATE_CONNECTED) && !aidValid) { - if ((stpDwcCnt->matchcnt.qr2MatchType == DWC_MATCH_TYPE_SC_SV) && (dwcError == DWC_ERROR_NONE)) { - (void)DWCi_GPSetServerStatus(); - DWCi_ProcessMatchSCClosing(profileID); - } - - DWC_Printf(DWC_REPORTFLAG_DEBUG, "Closing process by matching SC.\n"); - return; - } - else if (DWCi_ProcessMatchClosing(dwcError, errorCode, profileID)) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "Closing process by matching.\n"); - return; - } - - if (dwcError) { - DWCi_SetError(dwcError, errorCode + DWC_ECODE_SEQ_MATCH); - return; - } - - if ((!stpDwcCnt->ownCloseFlag) && ((stpDwcCnt->matchcnt.qr2MatchType == DWC_MATCH_TYPE_SC_SV) || (stpDwcCnt->matchcnt.qr2MatchType == DWC_MATCH_TYPE_SC_CL)) && (stpDwcCnt->matchcnt.sbPidList[stpDwcCnt->matchcnt.gt2NumConnection + 2] != 0)) { - stpDwcCnt->matchcnt.aidList[stpDwcCnt->matchcnt.gt2NumConnection + 1] = stpDwcCnt->matchcnt.aidList[stpDwcCnt->matchcnt.gt2NumConnection + 2]; - (void)DWCi_DeleteHostByIndex(stpDwcCnt->matchcnt.gt2NumConnection + 1, stpDwcCnt->matchcnt.gt2NumConnection + 3); - } - - if (stpDwcCnt->matchcnt.qr2MatchType == DWC_MATCH_TYPE_SC_SV) { - if (!stpDwcCnt->ownCloseFlag) { - (void)DWCi_GPSetServerStatus(); - } - else if (stpDwcCnt->matchcnt.gt2NumConnection == 0) { - (void)DWCi_SetGPStatus(DWC_STATUS_ONLINE, "", NULL); - } - } - else if (stpDwcCnt->matchcnt.gt2NumConnection == 0) { - (void)DWCi_SetGPStatus(DWC_STATUS_ONLINE, "", NULL); - } - - for (i = 0; i < stpDwcCnt->matchcnt.gt2NumConnection + 1; i++) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "aid[%d] = %d, pid[%d] = %u\n", i, stpDwcCnt->matchcnt.aidList[i], i, stpDwcCnt->matchcnt.sbPidList[i]); - } - - if ((stpDwcCnt->matchcnt.qr2MatchType == DWC_MATCH_TYPE_ANYBODY) || (stpDwcCnt->matchcnt.qr2MatchType == DWC_MATCH_TYPE_FRIEND)) { - stpDwcCnt->matchcnt.qr2NumEntry = stpDwcCnt->matchcnt.qr2NNFinishCount; - qr2_send_statechanged(stpDwcCnt->matchcnt.qr2Obj); - } - - if (stpDwcCnt->closedCallback && aidValid) { - stpDwcCnt->closedCallback(dwcError, reason == GT2LocalClose ? TRUE : FALSE, isServer, aid, DWCi_GetFriendListIndex(profileID), stpDwcCnt->closedParam); - } - - if (!stpDwcCnt->ownCloseFlag && (stpDwcCnt->matchcnt.qr2MatchType == DWC_MATCH_TYPE_SC_SV)) { - return; - } - - if (!stpDwcCnt->matchcnt.gt2NumConnection) { - DWCi_NNFreeNegotiateList(); - DWCi_ClearQR2Key(); - DWCi_SetState(DWC_STATE_ONLINE); - } -} - -static void DWCi_GT2PingCallback(GT2Connection connection, int latency) { -#pragma unused(connection) - DWC_Printf(DWC_REPORTFLAG_TRANSPORT, "Ping: %dms\n", latency); - DWCi_PingCallback(connection, latency); -} - -static void DWCi_GT2SocketErrorCallback(GT2Socket socket) { - stLastSocketError = GOAGetLastError(gt2GetSocketSOCKET(socket)); - - DWC_Printf(DWC_REPORTFLAG_ERROR, "Socket fatal error! (%d)\n", stLastSocketError); - DWCi_SetError(DWC_ERROR_FATAL, DWC_ECODE_SEQ_ETC + DWC_ECODE_GS_GT2 + DWC_ECODE_TYPE_SO_SOCKET); - - stpDwcCnt->gt2Socket = NULL; -} diff --git a/subprojects/NitroDWC/libraries/base/src/dwc_match.c b/subprojects/NitroDWC/libraries/base/src/dwc_match.c deleted file mode 100644 index 45e7d0c2de..0000000000 --- a/subprojects/NitroDWC/libraries/base/src/dwc_match.c +++ /dev/null @@ -1,5116 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -#define DWC_MATCH_COMMAND_ADD_MESSAGE_MAX 512 -#define DWC_MATCH_COMMAND_ADD_MESSAGE_NUM (DWC_MATCH_COMMAND_ADD_MESSAGE_MAX >> 2) -#define DWC_MATCH_RESV_DENY_REASON_SV_FULL 0x10 - - -enum { - DWC_MATCH_CANCEL_STATE_INIT = 0, DWC_MATCH_CANCEL_STATE_EXEC, DWC_MATCH_CANCEL_STATE_NUM -}; - -enum { - DWC_MATCH_CLOSE_STATE_INIT = 0, DWC_MATCH_CLOSE_STATE_CHANGE_TO_CLIENT, DWC_MATCH_CLOSE_STATE_TIMEOUT, DWC_MATCH_CLOSE_STATE_FORCED, DWC_MATCH_CLOSE_STATE_NUM -}; - -typedef enum { - DWC_PP_CONNECTION_SV_CONNECT = 0, DWC_PP_CONNECTION_CL_GT2_CONNECT, DWC_PP_CONNECTION_CL_GT2_ACCEPT, DWC_PP_CONNECTION_CL_FINISH_CONNECT, DWC_PP_CONNECTION_SYN_FINISH, DWC_PP_CONNECTION_NUM -} DWCMatchPpConnectionType; - -typedef enum { - DWC_MATCH_RESET_ALL = 0, DWC_MATCH_RESET_RESTART, DWC_MATCH_RESET_CONTINUE, DWC_MATCH_RESET_NUM -} DWCMatchResetLevel; - - -static char *stpAddFilter = NULL; -static DWCMatchOptMinCompleteIn *stpOptMinComp = NULL; -static DWCMatchOptSCBlock stOptSCBlock; -static DWCGameMatchKeyData stGameMatchKeys[DWC_QR2_GAME_RESERVED_KEYS]; -static const stEvalRate[DWC_SB_UPDATE_MAX_SERVERS] = {3, 3, 2, 2, 1, 1, }; -static int s_sbCallbackLevel = 0; -static BOOL s_needSbFree = FALSE; -static BOOL s_bInNNThink = FALSE; -static BOOL s_bNNFreeNegotiateList = FALSE; -#if 0 -int DWCi_connect_errorcount = 0; -#endif - - -static void DWCi_ResetMatchParam(DWCMatchResetLevel level); -static void DWCi_SetMatchCommonParam(u8 matchType, u8 numEntry, DWCMatchedSCCallback callback, void *param); -static void DWCi_CloseMatching(void); -static SBError DWCi_SBUpdateAsync(int profileID); -static int DWCi_GetDefaultMatchFilter(char *filter, int profileID, u8 numEntry, u8 matchType); -static NegotiateError DWCi_NNStartupAsync(int isQR2, int cookie, SBServer server); -static NegotiateError DWCi_DoNatNegotiationAsync(DWCNNInfo *nnInfo); -static int DWCi_SendMatchCommand(u8 command, int profileID, u32 ip, u16 port, const u32 data[], int len); -static SBError DWCi_SendSBMsgCommand(u8 command, u32 ip, u16 port, const u32 data[], int len); -static GPResult DWCi_SendGPBuddyMsgCommand(GPConnection *connection, u8 command, int profileID, const char *message); -static int DWCi_GetGPBuddyAdditionalMsg(char *dstMsg, const char *srcMsg, int index); -static void DWCi_StopResendingMatchCommand(void); -static BOOL DWCi_ProcessRecvMatchCommand(u8 command, int srcPid, u32 srcIP, u16 srcPort, const u32 data[], int len); -static u8 DWCi_CheckResvCommand(int profileID, u32 qr2IP, u16 qr2Port, u32 matchType, BOOL priorFlag); -static int DWCi_ProcessResvOK(int profileID, u32 ip, u16 port); -static void DWCi_MakeBackupServerData(int profileID, const u32 data[]); -static int DWCi_HandleMatchCommandError(int error); -static int DWCi_SendResvCommand(int profileID, BOOL delay); -static int DWCi_SendResvCommandToFriend(BOOL delay, BOOL init, int resendPid); -static BOOL DWCi_RetryReserving(int resendPid); -static int DWCi_CancelReservation(int profileID); -static BOOL DWCi_CancelPreConnectedServerProcess(int clientPid); -static BOOL DWCi_CancelPreConnectedClientProcess(int serverPid); -static int DWCi_ChangeToClient(void); -static void DWCi_PostProcessConnection(DWCMatchPpConnectionType type); -static BOOL DWCi_AreAllBuddies(const u32 pidList[], u32 pidListLen); -static void DWCi_DoCancelMatching(void); -static void DWCi_FinishCancelMatching(void); -static int DWCi_InvalidateReservation(void); -static void DWCi_RestartFromCancel(DWCMatchResetLevel level); -static void DWCi_RestartFromTimeout(void); -static int DWCi_ResumeMatching(void); -static BOOL DWCi_CloseCancelHostAsync(int profileID); -static void DWCi_CloseAllConnectionsByTimeout(void); -static BOOL DWCi_CloseShutdownClientSC(u32 bitmap); -static void DWCi_SendMatchSynPacket(u8 aid, u16 type); -static BOOL DWCi_ProcessMatchSynTimeout(void); -static BOOL DWCi_SendCancelMatchSynCommand(int profileID, u8 command); -static BOOL DWCi_ProcessCancelMatchSynCommand(int profileID, u8 command, u32 data); -static BOOL DWCi_ProcessCancelMatchSynTimeout(void); -static u8 DWCi_GetNewMatchKey(void); -static void DWCi_ClearGameMatchKeys(void); -static u8 DWCi_GetAIDFromList(void); -static BOOL DWCi_IsFriendByIdxList(int profileID); -static int DWCi_CheckDWCServer(SBServer server); -static int DWCi_GetPidListIndex(int profileID, BOOL idx0); -static u8 DWCi_GetAIDFromProfileID(int profileID, BOOL idx0); -static u32 DWCi_GetAIDBitmask(BOOL valid); -static void DWCi_InitClWaitTimeout(void); -static void DWCi_InitOptMinCompParam(BOOL reset); -static void DWCi_ProcessOptMinComp(void); -static GPResult DWCi_HandleGPError(GPResult result); -static SBError DWCi_HandleSBError(SBError error); -static qr2_error_t DWCi_HandleQR2Error(qr2_error_t error); -static NegotiateError DWCi_HandleNNError(NegotiateError error); -static NegotiateResult DWCi_HandleNNResult(NegotiateResult result); -static GT2Result DWCi_HandleGT2Error(GT2Result result); -static void DWCi_SBCallback(ServerBrowser sb, SBCallbackReason reason, SBServer server, void *instance); -static void DWCi_SBPrintServerData(SBServer server); -static BOOL DWCi_EvaluateServers(BOOL sort); -static void DWCi_RandomizeServers(void); -static void DWCi_QR2ServerKeyCallback(int keyid, qr2_buffer_t outbuf, void *userdata); -static void DWCi_QR2PlayerKeyCallback(int keyid, int index, qr2_buffer_t outbuf, void *userdata); -static void DWCi_QR2TeamKeyCallback(int keyid, int index, qr2_buffer_t outbuf, void *userdata); -static void DWCi_QR2KeyListCallback(qr2_key_type keytype, qr2_keybuffer_t keybuffer, void *userdata); -static int DWCi_QR2CountCallback(qr2_key_type keytype, void *userdata); -static void DWCi_QR2AddErrorCallback(qr2_error_t error, gsi_char *errmsg, void *userdata); -static void DWCi_QR2PublicAddrCallback(unsigned int ip, unsigned short port, void *userdata); -static void DWCi_QR2NatnegCallback(int cookie, void *userdata); -static void DWCi_QR2ClientMsgCallback(gsi_char *data, int len, void *userdata); -static void DWCi_NNProgressCallback(NegotiateState state, void *userdata); -static void DWCi_NNCompletedCallback(NegotiateResult result, SOCKET gamesocket, struct sockaddr_in *remoteaddr, void *userdata); -static BOOL DWCi_ProcessNNFailure(BOOL ignoreError); -static void DWCi_SetMatchCnt(DWCMatchControl *pCnt); -static DWCMatchControl *DWCi_GetMatchCnt(void); -static void DWCi_SetMatchStatus(DWCMatchState state); -#ifdef NITRODWC_DEBUG -static void disp_time(void); -static void disp_match_state(DWCMatchState old, DWCMatchState now); -static const char *get_dwccommandstr(u8 command); -#endif - - -void DWCi_NNFreeNegotiateList() { - if (s_bInNNThink == FALSE) { - NNFreeNegotiateList(); - } - else { - s_bNNFreeNegotiateList = TRUE; - } -} - -#ifdef DWC_QR2_ALIVE_DURING_MATCHING -BOOL DWC_RegisterMatchingStatus(void) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "!!DWC_RegisterMatchingStatus() was called!!\n"); - - if ((DWCi_GetMatchCnt() == NULL) || (DWCi_GetMatchCnt()->profileID == 0) || DWCi_IsError()) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "But ignored.\n"); - - return FALSE; - } - - if (DWCi_QR2Startup(DWCi_GetMatchCnt()->profileID)) { - return FALSE; - } - - return TRUE; -} -#endif - -BOOL DWC_CancelMatching(void) { - if (DWC_IsValidCancelMatching()) { - DWCi_DoCancelMatching(); - return TRUE; - } - else { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "Now unable to cancel.\n"); - return FALSE; - } -} - -BOOL DWC_CancelMatchingAsync(void) { - if (DWC_IsValidCancelMatching()) { - DWCi_DoCancelMatching(); - return TRUE; - } - else { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "Now unable to cancel.\n"); - return FALSE; - } -} - -BOOL DWC_IsValidCancelMatching(void) { - if (DWCi_IsError()) { - return FALSE; - } - - if (!DWCi_GetMatchCnt() || (DWC_GetState() != DWC_STATE_MATCHING) || (DWCi_GetMatchCnt()->cancelState != DWC_MATCH_CANCEL_STATE_INIT)) { - return FALSE; - } - else { - return TRUE; - } -} - -#ifdef DWC_STOP_SC_SERVER -BOOL DWC_StopSCMatchingAsync(DWCStopSCCallback callback, void *param) { - if (DWCi_IsError() || !DWCi_GetMatchCnt() || (DWCi_GetMatchCnt()->qr2MatchType != DWC_MATCH_TYPE_SC_SV) || ((DWC_GetState() != DWC_STATE_MATCHING) && (DWC_GetState() != DWC_STATE_CONNECTED))) { - return FALSE; - } - - if (DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_SV_WAITING) { - DWCi_GetMatchCnt()->qr2NumEntry = DWCi_GetMatchCnt()->gt2NumConnection; - (void)DWCi_GPSetServerStatus(); - - if (callback) { - callback(param); - } - } - else { - DWCi_GetMatchCnt()->stopSCCallback = callback; - DWCi_GetMatchCnt()->stopSCParam = param; - DWCi_GetMatchCnt()->stopSCFlag = 1; - } - - return TRUE; -} -#endif - -u8 DWC_AddMatchKeyInt(u8 keyID, const char *keyString, const int *valueSrc) { - int index; - - if (!keyString || !valueSrc) { - return 0; - } - - if ((keyID >= DWC_QR2_GAME_KEY_START) && stGameMatchKeys[keyID - DWC_QR2_GAME_KEY_START].keyID) { - if ((stGameMatchKeys[keyID - DWC_QR2_GAME_KEY_START].keyStr != NULL) && (strcmp(stGameMatchKeys[keyID - DWC_QR2_GAME_KEY_START].keyStr, keyString) != 0)) { - return 0; - } - } - else { - keyID = DWCi_GetNewMatchKey(); - - if (!keyID) { - return 0; - } - } - - index = keyID - DWC_QR2_GAME_KEY_START; - stGameMatchKeys[index].keyID = keyID; - stGameMatchKeys[index].isStr = 0; - stGameMatchKeys[index].pad = 0; - - if (stGameMatchKeys[index].keyStr) { - DWC_Free(DWC_ALLOCTYPE_BASE, stGameMatchKeys[index].keyStr, 0); - } - - stGameMatchKeys[index].keyStr = DWC_Alloc(DWC_ALLOCTYPE_BASE, strlen(keyString) + 1); - - if (!stGameMatchKeys[index].keyStr) { - DWCi_StopMatching(DWC_ERROR_FATAL, DWC_ECODE_SEQ_MATCH + DWC_ECODE_TYPE_ALLOC); - return 0; - } - - strcpy(stGameMatchKeys[index].keyStr, keyString); - DWC_Printf(DWC_REPORTFLAG_DEBUG, "DWC_AddMatchKeyInt: key='%s', value=%d\n", keyString, *valueSrc); - - stGameMatchKeys[index].value = valueSrc; - qr2_register_key(keyID, stGameMatchKeys[index].keyStr); - - return keyID; -} - -u8 DWC_AddMatchKeyString(u8 keyID, const char *keyString, const char *valueSrc) { - int index; - - if (!keyString || !valueSrc) { - return 0; - } - - if ((keyID >= DWC_QR2_GAME_KEY_START) && stGameMatchKeys[keyID - DWC_QR2_GAME_KEY_START].keyID) { - if ((stGameMatchKeys[keyID - DWC_QR2_GAME_KEY_START].keyStr != NULL) && (strcmp(stGameMatchKeys[keyID - DWC_QR2_GAME_KEY_START].keyStr, keyString) != 0)) { - return 0; - } - } - else { - keyID = DWCi_GetNewMatchKey(); - - if (!keyID) { - return 0; - } - } - - index = keyID - DWC_QR2_GAME_KEY_START; - stGameMatchKeys[index].keyID = keyID; - stGameMatchKeys[index].isStr = 1; - stGameMatchKeys[index].pad = 0; - - if (stGameMatchKeys[index].keyStr) { - DWC_Free(DWC_ALLOCTYPE_BASE, stGameMatchKeys[index].keyStr, 0); - } - - stGameMatchKeys[index].keyStr = DWC_Alloc(DWC_ALLOCTYPE_BASE, strlen(keyString) + 1); - - if (!stGameMatchKeys[index].keyStr) { - DWCi_StopMatching(DWC_ERROR_FATAL, DWC_ECODE_SEQ_MATCH + DWC_ECODE_TYPE_ALLOC); - return 0; - } - - strcpy(stGameMatchKeys[index].keyStr, keyString); - DWC_Printf(DWC_REPORTFLAG_DEBUG, "DWC_AddMatchKeyString: key='%s' value='%s'\n", keyString, valueSrc); - - stGameMatchKeys[index].value = valueSrc; - qr2_register_key(keyID, stGameMatchKeys[index].keyStr); - - return keyID; -} - -int DWC_GetMatchIntValue(int index, const char *keyString, int idefault) { - SBServer server; - - if (!DWCi_GetMatchCnt() || DWCi_IsError()) { - return idefault; - } - - server = ServerBrowserGetServer(DWCi_GetMatchCnt()->sbObj, index); - - if (!server) { - return idefault; - } - - return SBServerGetIntValue(server, keyString, idefault); -} - -const char*DWC_GetMatchStringValue(int index, const char *keyString, const char *sdefault) { - SBServer server; - - if (!DWCi_GetMatchCnt() || DWCi_IsError()) { - return sdefault; - } - - server = ServerBrowserGetServer(DWCi_GetMatchCnt()->sbObj, index); - - if (!server) { - return sdefault; - } - - return SBServerGetStringValue(server, keyString, sdefault); -} - -int DWC_GetLastMatchingType(void) { - if (DWCi_GetMatchCnt()) { - return DWCi_GetMatchCnt()->qr2MatchType; - } - else { - return -1; - } -} - -int DWC_SetMatchingOption(DWCMatchOptType opttype, const void *optval, int optlen) { -#pragma unused(optlen) - DWCMatchOptMinComplete *pMinComp; - - DWC_Printf(DWC_REPORTFLAG_DEBUG, "!!DWC_SetMatchingOption() was called!! type %d\n", opttype); - - if (!DWCi_GetMatchCnt()) { - return DWC_SET_MATCH_OPT_RESULT_E_BAD_STATE; - } - - if (!optval) { - return DWC_SET_MATCH_OPT_RESULT_E_PARAM; - } - - switch (opttype) { - case DWC_MATCH_OPTION_MIN_COMPLETE: - - if (DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_SV_POLL_TIMEOUT) { - return DWC_SET_MATCH_OPT_RESULT_E_BAD_STATE; - } - - pMinComp = (DWCMatchOptMinComplete *)optval; - - if (pMinComp->valid && (pMinComp->minEntry <= 1)) { - return DWC_SET_MATCH_OPT_RESULT_E_PARAM; - } - - if (!stpOptMinComp) { - stpOptMinComp = DWC_Alloc(DWC_ALLOCTYPE_BASE, sizeof(DWCMatchOptMinCompleteIn)); - - if (!stpOptMinComp) { - return DWC_SET_MATCH_OPT_RESULT_E_ALLOC; - } - } - - stpOptMinComp->valid = pMinComp->valid; - stpOptMinComp->minEntry = pMinComp->minEntry; - stpOptMinComp->retry = 0; - stpOptMinComp->pad = 0; - stpOptMinComp->timeout = pMinComp->timeout; - stpOptMinComp->recvBit = 0; - stpOptMinComp->timeoutBit = 0; - stpOptMinComp->startTime = OS_GetTick(); - stpOptMinComp->lastPollTime = OS_GetTick(); - - return DWC_SET_MATCH_OPT_RESULT_SUCCESS; - case DWC_MATCH_OPTION_SC_CONNECT_BLOCK: - if (*(BOOL *)optval) { - stOptSCBlock.valid = 1; - } - else { - stOptSCBlock.valid = 0; - } - - stOptSCBlock.lock = 0; - return DWC_SET_MATCH_OPT_RESULT_SUCCESS; - default: - return DWC_SET_MATCH_OPT_RESULT_E_INVALID; - } -} - -int DWC_GetMatchingOption(DWCMatchOptType opttype, void *optval, int *optlen) { - if (!DWCi_GetMatchCnt()) { - return DWC_SET_MATCH_OPT_RESULT_E_BAD_STATE; - } - - if (!optval) { - return DWC_SET_MATCH_OPT_RESULT_E_PARAM; - } - - switch (opttype) { - case DWC_MATCH_OPTION_MIN_COMPLETE: - - if (!stpOptMinComp) { - if (optlen) { - *optlen = 0; - } - } - else { - DWCMatchOptMinComplete *pVal = optval; - - pVal->valid = stpOptMinComp->valid; - pVal->minEntry = stpOptMinComp->minEntry; - pVal->timeout = stpOptMinComp->timeout; - pVal->pad[0] = pVal->pad[1] = 0; - - if (optlen) { - *optlen = sizeof(DWCMatchOptMinComplete); - } - } - - return DWC_SET_MATCH_OPT_RESULT_SUCCESS; - case DWC_MATCH_OPTION_SC_CONNECT_BLOCK: - - if (stOptSCBlock.valid == 1) { - *(BOOL *)optval = TRUE; - } - else { - *(BOOL *)optval = FALSE; - } - - if (optlen) { - *optlen = sizeof(BOOL); - } - - return DWC_SET_MATCH_OPT_RESULT_SUCCESS; - default: - return DWC_SET_MATCH_OPT_RESULT_E_INVALID; - } -} - -int DWC_GetMOMinCompState(u64 *time) { - u64 passTime; - - if (!stpOptMinComp || !stpOptMinComp->valid) { - return -1; - } - - passTime = OS_TicksToMilliSeconds(OS_GetTick() - stpOptMinComp->startTime); - - if (time) { - *time = passTime; - } - - if (passTime >= stpOptMinComp->timeout) { - return 1; - } - else { - return 0; - } -} - -BOOL DWC_GetMOSCConnectBlockState(void) { - if ((stOptSCBlock.valid == 0) || (stOptSCBlock.lock == 0)) { - return FALSE; - } - else { - return TRUE; - } -} - -void DWC_ClearMOSCConnectBlock(void) { - stOptSCBlock.lock = 0; - DWC_Printf(DWC_REPORTFLAG_DEBUG, "[OPT_SC_BLOCK] ClearMOSCConnectBlock\n"); -} - -DWCMatchState DWC_GetMatchingState(void) { - if (DWCi_GetMatchCnt()) { - return DWCi_GetMatchCnt()->state; - } - else { - return DWC_MATCH_STATE_INIT; - } -} - -void DWCi_MatchInit(DWCMatchControl *matchcnt, GPConnection pGpObj, GT2Socket *pGt2Socket, GT2ConnectionCallbacks *gt2Callbacks, const char *gameName, const char *secretKey, const DWCFriendData friendList[], int friendListLen) { - SDK_ASSERT(matchcnt); - - DWCi_SetMatchCnt(matchcnt); - DWCi_GetMatchCnt()->pGpObj = pGpObj; - DWCi_GetMatchCnt()->pGt2Socket = pGt2Socket; - DWCi_GetMatchCnt()->gt2Callbacks = gt2Callbacks; - DWCi_GetMatchCnt()->qr2Obj = NULL; - DWCi_GetMatchCnt()->qr2IP = 0; - DWCi_GetMatchCnt()->qr2Port = 0; - DWCi_GetMatchCnt()->sbObj = NULL; - DWCi_SetMatchStatus(DWC_MATCH_STATE_INIT); - DWCi_GetMatchCnt()->pad1 = 0; - DWCi_GetMatchCnt()->pad2 = 0; -#ifdef DWC_STOP_SC_SERVER - DWCi_GetMatchCnt()->pad3 = 0; - DWCi_GetMatchCnt()->pad4 = 0; -#endif -#ifdef DWC_LIMIT_FRIENDS_MATCH_VALID - DWCi_GetMatchCnt()->friendAcceptBit = 0; -#endif - DWCi_GetMatchCnt()->profileID = 0; - DWCi_GetMatchCnt()->gameName = gameName; - DWCi_GetMatchCnt()->secretKey = secretKey; - DWCi_GetMatchCnt()->friendList = friendList; - DWCi_GetMatchCnt()->friendListLen = friendListLen; - MI_CpuClear8(DWCi_GetMatchCnt()->friendIdxList, DWC_MAX_MATCH_IDX_LIST); - DWCi_GetMatchCnt()->friendIdxListLen = 0; - DWCi_GetMatchCnt()->matchedCallback = NULL; - DWCi_GetMatchCnt()->matchedParam = NULL; - DWCi_GetMatchCnt()->evalCallback = NULL; - DWCi_GetMatchCnt()->evalParam = NULL; -#ifdef DWC_STOP_SC_SERVER - DWCi_GetMatchCnt()->stopSCCallback = NULL; - DWCi_GetMatchCnt()->stopSCParam = NULL; -#endif - DWCi_GetMatchCnt()->sbUpdateRequestTick = 0; - DWC_Printf(DWC_REPORTFLAG_DEBUG, "ServerBrowserLimitUpdate timeout reset.(%s)\n", __FUNCTION__); - DWCi_ClearGameMatchKeys(); - - stOptSCBlock.valid = 0; - stOptSCBlock.lock = 0; - stOptSCBlock.pad = 0; - - DWCi_ResetMatchParam(DWC_MATCH_RESET_ALL); -} - -qr2_error_t DWCi_QR2Startup(int profileID) { - int i; - qr2_error_t qr2Error = e_qrnoerror; - - if (DWCi_GetMatchCnt()->qr2Obj) { - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "QR2 is already set up.\n"); - return e_qrnoerror; - } - - DWCi_GetMatchCnt()->profileID = profileID; - - for (i = 0; i < DWC_DNS_ERROR_RETRY_MAX; i++) { - qr2Error = qr2_init_socket(&DWCi_GetMatchCnt()->qr2Obj, gt2GetSocketSOCKET(*DWCi_GetMatchCnt()->pGt2Socket), gt2GetLocalPort(*DWCi_GetMatchCnt()->pGt2Socket), DWCi_GetMatchCnt()->gameName, DWCi_GetMatchCnt()->secretKey, 1, 1, DWCi_QR2ServerKeyCallback, DWCi_QR2PlayerKeyCallback, DWCi_QR2TeamKeyCallback, DWCi_QR2KeyListCallback, DWCi_QR2CountCallback, DWCi_QR2AddErrorCallback, NULL); - - if (!qr2Error) { - break; - } - else { - qr2_shutdown(DWCi_GetMatchCnt()->qr2Obj); - DWCi_GetMatchCnt()->qr2Obj = NULL; - } - - if ((qr2Error != e_qrdnserror) || (i == DWC_DNS_ERROR_RETRY_MAX - 1)) { - DWCi_HandleQR2Error(qr2Error); - - return qr2Error; - } - } - -#ifdef DWC_QR2_ALIVE_DURING_MATCHING - DWCi_GetMatchCnt()->qr2IP = 0; - DWCi_GetMatchCnt()->qr2Port = 0; -#endif - qr2_register_publicaddress_callback(DWCi_GetMatchCnt()->qr2Obj, DWCi_QR2PublicAddrCallback); - qr2_register_natneg_callback(DWCi_GetMatchCnt()->qr2Obj, DWCi_QR2NatnegCallback); - qr2_register_clientmessage_callback(DWCi_GetMatchCnt()->qr2Obj, DWCi_QR2ClientMsgCallback); - qr2_send_statechanged(DWCi_GetMatchCnt()->qr2Obj); - - return qr2Error; -} - -void DWCi_ConnectToAnybodyAsync(u8 numEntry, const char *addFilter, DWCMatchedSCCallback matchedCallback, void *matchedParam, DWCEvalPlayerCallback evalCallback, void *evalParam) { - char filter[MAX_FILTER_LEN]; - u32 addFilterLenMax; - SBError sbError; - - if (stpAddFilter) { - DWC_Free(DWC_ALLOCTYPE_BASE, stpAddFilter, 0); - stpAddFilter = NULL; - } - - if (addFilter) { - addFilterLenMax = MAX_FILTER_LEN - DWCi_GetDefaultMatchFilter(filter, 0xffffffff, DWC_MAX_CONNECTIONS, DWC_MATCH_TYPE_SC_CL) - strlen(" and ()"); - - SDK_ASSERT(strlen(addFilter) < addFilterLenMax); - - stpAddFilter = DWC_Alloc(DWC_ALLOCTYPE_BASE, addFilterLenMax); - - if (!stpAddFilter) { - DWCi_StopMatching(DWC_ERROR_FATAL, DWC_ECODE_SEQ_MATCH + DWC_ECODE_TYPE_ALLOC); - return; - } - - MI_CpuCopy8(addFilter, stpAddFilter, addFilterLenMax); - stpAddFilter[addFilterLenMax - 1] = '\0'; - } - - DWCi_SetMatchCommonParam(DWC_MATCH_TYPE_ANYBODY, numEntry, matchedCallback, matchedParam); - DWCi_GetMatchCnt()->evalCallback = evalCallback; - DWCi_GetMatchCnt()->evalParam = evalParam; - DWCi_SetMatchStatus(DWC_MATCH_STATE_CL_SEARCH_OWN); - - if (!DWCi_GetMatchCnt()->sbObj) { - DWCi_GetMatchCnt()->sbObj = ServerBrowserNew(DWCi_GetMatchCnt()->gameName, DWCi_GetMatchCnt()->gameName, DWCi_GetMatchCnt()->secretKey, 0, 20, QVERSION_QR2, SBFalse, DWCi_SBCallback, NULL); - } - - if (!DWCi_GetMatchCnt()->sbObj) { - if (DWCi_HandleSBError(sbe_allocerror)) { - return; - } - } - - (void)DWCi_SetGPStatus(DWC_STATUS_MATCH_ANYBODY, "", NULL); - sbError = DWCi_SBUpdateAsync(DWCi_GetMatchCnt()->profileID); - - if (DWCi_HandleSBError(sbError)) { - return; - } - -#ifdef DWC_QR2_ALIVE_DURING_MATCHING - if (DWCi_GetMatchCnt()->qr2Obj == NULL) { - DWCi_QR2Startup(DWCi_GetMatchCnt()->profileID); - } -#else - qr2_send_statechanged(DWCi_GetMatchCnt()->qr2Obj); -#endif - - DWCi_InitOptMinCompParam(FALSE); -} - -void DWCi_ConnectToFriendsAsync(const u8 friendIdxList[], int friendIdxListLen, u8 numEntry, BOOL distantFriend, DWCMatchedSCCallback matchedCallback, void *matchedParam, DWCEvalPlayerCallback evalCallback, void *evalParam) { - char valueStr[12], keyValueStr[32]; - -#ifndef DWC_MATCH_ACCEPT_NO_FRIEND - int checkpid; - int friendCount; - int i; -#endif - int result; - GPResult gpResult; - - DWCi_SetMatchCommonParam(DWC_MATCH_TYPE_FRIEND, numEntry, matchedCallback, matchedParam); - DWCi_GetMatchCnt()->distantFriend = (u8)(distantFriend ? 1 : 0); - DWCi_GetMatchCnt()->evalCallback = evalCallback; - DWCi_GetMatchCnt()->evalParam = evalParam; - -#ifdef DWC_MATCH_ACCEPT_NO_FRIEND - MI_CpuCopy8(friendIdxList, DWCi_GetMatchCnt()->friendIdxList, (u32)friendIdxListLen); - DWCi_GetMatchCnt()->friendIdxListLen = friendIdxListLen; - - if (!friendIdxListLen || ((friendIdxListLen < numEntry) && !distantFriend && (!stpOptMinComp || !stpOptMinComp->valid || (friendIdxListLen < stpOptMinComp->minEntry - 1)))) { - DWCi_StopMatching(DWC_ERROR_FRIENDS_SHORTAGE, 0); - return; - } -#else - for (i = 0, friendCount = 0; i < friendIdxListLen; i++) { - if (!(checkpid = DWCi_GetProfileIDFromList(friendIdxList[i])) || !gpIsBuddy(DWCi_GetMatchCnt()->pGpObj, checkpid)) { - continue; - } - - DWCi_GetMatchCnt()->friendIdxList[friendCount] = friendIdxList[i]; - friendCount++; - } - - if (!friendCount || ((friendCount < numEntry) && !distantFriend && (!stpOptMinComp || !stpOptMinComp->valid || (friendCount < stpOptMinComp->minEntry - 1)))) { - DWCi_StopMatching(DWC_ERROR_FRIENDS_SHORTAGE, 0); - return; - } - DWCi_GetMatchCnt()->friendIdxListLen = friendCount; -#endif - - DWCi_SetMatchStatus(DWC_MATCH_STATE_CL_WAIT_RESV); - - if (!DWCi_GetMatchCnt()->sbObj) { - DWCi_GetMatchCnt()->sbObj = ServerBrowserNew(DWCi_GetMatchCnt()->gameName, DWCi_GetMatchCnt()->gameName, DWCi_GetMatchCnt()->secretKey, 0, 20, QVERSION_QR2, SBFalse, DWCi_SBCallback, NULL); - } - - if (!DWCi_GetMatchCnt()->sbObj) { - if (DWCi_HandleSBError(sbe_allocerror)) { - return; - } - } - - (void)OS_SNPrintf(valueStr, sizeof(valueStr), "%u", numEntry); - (void)DWC_SetCommonKeyValueString(DWC_GP_SSTR_KEY_MATCH_FRIEND_NUM, valueStr, keyValueStr, '/'); - (void)DWC_AddCommonKeyValueString(DWC_GP_SSTR_KEY_DISTANT_FRIEND, distantFriend ? "Y" : "N", keyValueStr, '/'); - (void)OS_SNPrintf(valueStr, sizeof(valueStr), "%u", DWC_MATCHING_VERSION); - (void)DWC_AddCommonKeyValueString(DWC_GP_SSTR_KEY_MATCH_VERSION, valueStr, keyValueStr, '/'); - - gpResult = DWCi_SetGPStatus(DWC_STATUS_MATCH_FRIEND, keyValueStr, NULL); - - if (DWCi_HandleGPError(gpResult)) { - return; - } - -#ifdef DWC_QR2_ALIVE_DURING_MATCHING - if (DWCi_GetMatchCnt()->qr2Obj == NULL) { - if (DWCi_QR2Startup(DWCi_GetMatchCnt()->profileID)) { - return; - } - } -#else - qr2_send_statechanged(DWCi_GetMatchCnt()->qr2Obj); -#endif - - result = DWCi_SendResvCommandToFriend(FALSE, TRUE, 0); - - if (DWCi_HandleMatchCommandError(result)) { - return; - } - - DWCi_InitOptMinCompParam(FALSE); -} - -void DWCi_SetupGameServer(u8 maxEntry, DWCMatchedSCCallback matchedCallback, void *matchedParam, DWCNewClientCallback newClientCallback, void *newClientParam) { - GPResult gpResult; - - DWCi_SetMatchCommonParam(DWC_MATCH_TYPE_SC_SV, maxEntry, matchedCallback, matchedParam); - DWCi_GetMatchCnt()->newClientCallback = newClientCallback; - DWCi_GetMatchCnt()->newClientParam = newClientParam; - DWCi_GetMatchCnt()->sbPidList[0] = DWCi_GetMatchCnt()->profileID; - DWCi_GetMatchCnt()->validAidBitmap = 1; - DWCi_GetMatchCnt()->gt2NumValidConn = 0; - - stOptSCBlock.lock = 0; - - DWCi_SetMatchStatus(DWC_MATCH_STATE_SV_WAITING); - - gpResult = DWCi_GPSetServerStatus(); - - if (DWCi_HandleGPError(gpResult)) { - return; - } - -#ifdef DWC_QR2_ALIVE_DURING_MATCHING - if (DWCi_GetMatchCnt()->qr2Obj == NULL) { - DWCi_QR2Startup(DWCi_GetMatchCnt()->profileID); - } -#else - qr2_send_statechanged(DWCi_GetMatchCnt()->qr2Obj); -#endif - -} - -void DWCi_ConnectToGameServerAsync(int serverPid, DWCMatchedSCCallback matchedCallback, void *matchedParam, DWCNewClientCallback newClientCallback, void *newClientParam) { - int result; - GPResult gpResult; - - DWCi_SetMatchCommonParam(DWC_MATCH_TYPE_SC_CL, 0, matchedCallback, matchedParam); - DWCi_GetMatchCnt()->newClientCallback = newClientCallback; - DWCi_GetMatchCnt()->newClientParam = newClientParam; - DWCi_GetMatchCnt()->qr2IsReserved = 1; - DWCi_GetMatchCnt()->qr2Reservation = DWCi_GetMatchCnt()->profileID; - DWCi_GetMatchCnt()->sbPidList[0] = serverPid; - DWCi_SetMatchStatus(DWC_MATCH_STATE_CL_WAIT_RESV); - - if (!DWCi_GetMatchCnt()->sbObj) { - DWCi_GetMatchCnt()->sbObj = ServerBrowserNew(DWCi_GetMatchCnt()->gameName, DWCi_GetMatchCnt()->gameName, DWCi_GetMatchCnt()->secretKey, 0, 20, QVERSION_QR2, SBFalse, DWCi_SBCallback, NULL); - } - - if (!DWCi_GetMatchCnt()->sbObj) { - if (DWCi_HandleSBError(sbe_allocerror)) { - return; - } - } - - gpResult = DWCi_SetGPStatus(DWC_STATUS_MATCH_SC_CL, "", NULL); - - if (DWCi_HandleGPError(gpResult)) { - return; - } - -#ifdef DWC_QR2_ALIVE_DURING_MATCHING - if (DWCi_GetMatchCnt()->qr2Obj == NULL) { - if (DWCi_QR2Startup(DWCi_GetMatchCnt()->profileID)) { - return; - } - } -#else - qr2_send_statechanged(DWCi_GetMatchCnt()->qr2Obj); -#endif - - result = DWCi_SendResvCommand(DWCi_GetMatchCnt()->sbPidList[0], FALSE); - - if (DWCi_HandleMatchCommandError(result)) { - return; - } -} - -static void DWCi_SendStateChanged(qr2_t qr2Obj) { - if (qr2Obj == NULL) { - return; - } - - qr2_think(qr2Obj); - - if (qr2Obj->userstatechangerequested) { - return; - } - - switch (DWCi_GetMatchCnt()->qr2MatchType) { - case DWC_MATCH_TYPE_ANYBODY: - case DWC_MATCH_TYPE_FRIEND: - switch (DWCi_GetMatchCnt()->state) { - case DWC_MATCH_STATE_CL_WAITING: - case DWC_MATCH_STATE_CL_SEARCH_OWN: - case DWC_MATCH_STATE_CL_SEARCH_HOST: - case DWC_MATCH_STATE_CL_WAIT_RESV: - case DWC_MATCH_STATE_CL_NN: - case DWC_MATCH_STATE_SV_OWN_NN: - qr2_send_statechanged(DWCi_GetMatchCnt()->qr2Obj); - break; - } - - break; - case DWC_MATCH_TYPE_SC_SV: - if (DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_SV_OWN_NN) { - qr2_send_statechanged(DWCi_GetMatchCnt()->qr2Obj); - } - - break; - } -} - -void DWCi_MatchProcess(BOOL fullSpec) { - u32 resendInterval; - u32 sbInterval; - int result; - SBError sbError; - - if (!DWCi_GetMatchCnt() || DWCi_IsError()) { - return; - } - - if (!fullSpec) { - if (DWCi_GetMatchCnt()->qr2Obj) { - qr2_think(DWCi_GetMatchCnt()->qr2Obj); - } - - if (DWCi_GetMatchCnt()->pGt2Socket) { - gt2Think(*DWCi_GetMatchCnt()->pGt2Socket); - } - - return; - } - - if (DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_INIT) { - return; - } - - switch (DWCi_GetMatchCnt()->state) { - case DWC_MATCH_STATE_CL_WAIT_RESV: - if (DWCi_GetMatchCnt()->cmdTimeoutTime > 0) { - if (OS_TicksToMilliSeconds(OS_GetTick() - DWCi_GetMatchCnt()->cmdTimeoutStartTick) > DWCi_GetMatchCnt()->cmdTimeoutTime) { - DWCi_GetMatchCnt()->cmdTimeoutTime = 0; - - if (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_SC_CL) { - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Timeout: wait server response %d/%d.\n", DWCi_GetMatchCnt()->scResvRetryCount, DWC_MATCH_CMD_RETRY_MAX); - DWCi_GetMatchCnt()->scResvRetryCount++; - - if (DWCi_GetMatchCnt()->scResvRetryCount > DWC_MATCH_CMD_RETRY_MAX) { - DWCi_StopMatching(DWC_ERROR_NETWORK, DWC_ECODE_SEQ_MATCH + DWC_ECODE_TYPE_SC_CL_FAIL); - return; - } - else { - result = DWCi_SendResvCommand(DWCi_GetMatchCnt()->sbPidList[0], FALSE); - if (DWCi_HandleMatchCommandError(result)) { - return; - } - } - } - else { - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "NN resv(with %u) timed out. Try next server.\n", DWCi_GetMatchCnt()->sbPidList[0]); - if (!DWCi_RetryReserving(0)) { - return; - } - } - } - } - - if (DWCi_GetMatchCnt()->cmdResendFlag) { - resendInterval = (u32)DWC_MATCH_CMD_RESEND_INTERVAL_MSEC + DWC_MATCH_CMD_RESEND_INTERVAL_ADD_MSEC * DWCi_GetMatchCnt()->gt2NumConnection; - - if (OS_TicksToMilliSeconds(OS_GetTick() - DWCi_GetMatchCnt()->cmdResendTick) >= resendInterval) { - result = DWCi_SendResvCommand(DWCi_GetMatchCnt()->sbPidList[0], FALSE); - if (DWCi_HandleMatchCommandError(result)) { - return; - } - } - } - break; - case DWC_MATCH_STATE_CL_SEARCH_OWN: - case DWC_MATCH_STATE_CL_SEARCH_HOST: - case DWC_MATCH_STATE_CL_SEARCH_NN_HOST: - if (DWCi_GetMatchCnt()->sbUpdateFlag <= 0) { - break; - } - - if (DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_CL_SEARCH_HOST) { - sbInterval = (u32)DWC_SB_UPDATE_INTERVAL_MSEC + DWC_SB_UPDATE_INTERVAL_ADD_MSEC * DWCi_GetMatchCnt()->gt2NumConnection; - } - else { - if (DWCi_GetMatchCnt()->sbUpdateFlag == DWC_SB_UPDATE_INTERVAL_SHORT) { - sbInterval = DWC_SB_UPDATE_INTERVAL_SHORT_MSEC; - } - else { - sbInterval = DWC_SB_UPDATE_INTERVAL_MSEC; - } - } - - if (OS_TicksToMilliSeconds(OS_GetTick() - DWCi_GetMatchCnt()->sbUpdateTick) > sbInterval) { - sbError = DWCi_SBUpdateAsync(DWCi_GetMatchCnt()->reqProfileID); - - if (DWCi_HandleSBError(sbError)) { - return; - } - - DWCi_GetMatchCnt()->sbUpdateFlag = 0; - } - break; - case DWC_MATCH_STATE_CL_GT2: - if (DWCi_GetMatchCnt()->nnFinishTime) { - if (OS_TicksToMilliSeconds(OS_GetTick() - DWCi_GetMatchCnt()->nnFinishTime) > DWC_WAIT_GT2_CONNECT_TIMEOUT) { - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Timeout: wait gt2Connect().\n"); - DWCi_GetMatchCnt()->nnFinishTime = 0; - - if (!DWCi_CancelPreConnectedClientProcess(DWCi_GetMatchCnt()->sbPidList[0])) { - return; - } - } - } - else if ((DWCi_GetMatchCnt()->cmdCnt.command == DWC_MATCH_COMMAND_TELL_ADDR) && (OS_TicksToMilliSeconds(OS_GetTick() - DWCi_GetMatchCnt()->cmdCnt.sendTime) > DWC_MATCH_CMD_RTT_TIMEOUT)) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "RTT Timeout with DWC_MATCH_STATE_CL_GT2.\n"); - DWCi_GetMatchCnt()->cmdCnt.count++; - - if (DWCi_GetMatchCnt()->cmdCnt.count > DWC_MATCH_CMD_RETRY_MAX) { - DWCi_StopResendingMatchCommand(); - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Stop resending command %d.\n", DWC_MATCH_COMMAND_TELL_ADDR); - - if (!DWCi_CancelPreConnectedClientProcess(DWCi_GetMatchCnt()->sbPidList[0])) { - return; - } - - break; - } - - result = DWCi_SendMatchCommand(DWC_MATCH_COMMAND_TELL_ADDR, DWCi_GetMatchCnt()->cmdCnt.profileID, DWCi_GetMatchCnt()->cmdCnt.ip, DWCi_GetMatchCnt()->cmdCnt.port, DWCi_GetMatchCnt()->cmdCnt.data, DWCi_GetMatchCnt()->cmdCnt.len); - - if (DWCi_HandleMatchCommandError(result)) { - return; - } - } - - break; - case DWC_MATCH_STATE_SV_OWN_NN: - if ((DWCi_GetMatchCnt()->cmdCnt.command == DWC_MATCH_COMMAND_RESV_OK) && (((DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_ANYBODY) && (OS_TicksToMilliSeconds(OS_GetTick() - DWCi_GetMatchCnt()->cmdCnt.sendTime) > DWC_MATCH_RESV_KEEP_TIME_ANYBODY)) || ((DWCi_GetMatchCnt()->qr2MatchType != DWC_MATCH_TYPE_ANYBODY) && (OS_TicksToMilliSeconds(OS_GetTick() - DWCi_GetMatchCnt()->cmdCnt.sendTime) > DWC_MATCH_RESV_KEEP_TIME_FRIEND)))) { - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Reservation timeout. Cancel reservation.\n"); - DWCi_StopResendingMatchCommand(); - - if (!DWCi_CancelPreConnectedServerProcess(DWCi_GetMatchCnt()->sbPidList[DWCi_GetMatchCnt()->gt2NumConnection + 1])) { - return; - } - } - break; - case DWC_MATCH_STATE_SV_WAIT_CL_LINK: - if ((DWCi_GetMatchCnt()->cmdCnt.command == DWC_MATCH_COMMAND_LINK_CLS_REQ) && (OS_TicksToMilliSeconds(OS_GetTick() - DWCi_GetMatchCnt()->cmdCnt.sendTime) > DWC_MATCH_LINK_CLS_TIMEOUT)) { - DWCi_GetMatchCnt()->cmdCnt.count++; - - if (DWCi_GetMatchCnt()->cmdCnt.count > 0) { - DWCi_StopResendingMatchCommand(); - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Wait clients connecting timeout.\n"); - - if (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_SC_SV) { - if (!DWCi_CancelPreConnectedServerProcess(DWCi_GetMatchCnt()->sbPidList[DWCi_GetMatchCnt()->gt2NumConnection])) { - return; - } - } - else { - DWCi_RestartFromTimeout(); - } - break; - } - - result = DWCi_SendMatchCommand(DWC_MATCH_COMMAND_LINK_CLS_REQ, DWCi_GetMatchCnt()->cmdCnt.profileID, DWCi_GetMatchCnt()->cmdCnt.ip, DWCi_GetMatchCnt()->cmdCnt.port, DWCi_GetMatchCnt()->cmdCnt.data, DWCi_GetMatchCnt()->cmdCnt.len); - - if (DWCi_HandleMatchCommandError(result)) { - return; - } - } - - break; - case DWC_MATCH_STATE_CL_WAITING: - if ((DWC_GetState() == DWC_STATE_MATCHING) && (OS_TicksToMilliSeconds(OS_GetTick() - DWCi_GetMatchCnt()->clWaitTime) > DWC_MATCH_CL_WAIT_TIMEOUT)) { - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "No data from server %d/%d.\n", DWCi_GetMatchCnt()->clWaitTimeoutCount, DWC_MATCH_CMD_RETRY_MAX); - - if (DWCi_GetMatchCnt()->clWaitTimeoutCount >= DWC_MATCH_CMD_RETRY_MAX) { - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Timeout: Connection to server was shut down.\n"); - - if (!DWCi_CancelPreConnectedClientProcess(DWCi_GetMatchCnt()->sbPidList[0])) { - return; - } - } - else { - result = DWCi_SendMatchCommand(DWC_MATCH_COMMAND_CL_WAIT_POLL, DWCi_GetMatchCnt()->sbPidList[0], DWCi_GetMatchCnt()->qr2IPList[0], DWCi_GetMatchCnt()->qr2PortList[0], NULL, 0); - - if (DWCi_HandleMatchCommandError(result)) { - return; - } - - DWCi_GetMatchCnt()->clWaitTimeoutCount++; - DWCi_GetMatchCnt()->clWaitTime = OS_GetTick() - OS_MilliSecondsToTicks(DWC_MATCH_CL_WAIT_TIMEOUT - DWC_MATCH_CMD_RTT_TIMEOUT); - } - } - break; - default: - break; - } - - if (((DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_SV_OWN_NN) || (DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_CL_NN)) && DWCi_GetMatchCnt()->nnFailedTime && (OS_TicksToMilliSeconds(OS_GetTick() - DWCi_GetMatchCnt()->nnFailedTime) > DWC_WAIT_NN_RETRY_TIMEOUT)) { - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Timeout : wait NN retry.\n"); - DWCi_NNCompletedCallback(nr_deadbeatpartner, NULL, NULL, &DWCi_GetMatchCnt()->nnInfo); - } - - if (DWCi_GetMatchCnt()->sbObj) { -#if 1 - s_sbCallbackLevel = 0; - s_needSbFree = FALSE; - - (void)ServerBrowserThink(DWCi_GetMatchCnt()->sbObj); - - if (s_needSbFree) { - ServerBrowserFree(DWCi_GetMatchCnt()->sbObj); - DWCi_GetMatchCnt()->sbObj = NULL; - } -#else - sbError = ServerBrowserThink(DWCi_GetMatchCnt()->sbObj); - - if (DWCi_HandleSBError(sbError)) { - return; - } -#endif - - if (DWCi_GetMatchCnt()->sbObj) { - if ((ServerBrowserState(DWCi_GetMatchCnt()->sbObj) != sb_disconnected) && (DWCi_GetMatchCnt()->sbUpdateRequestTick != 0) && (OS_GetTick() > DWCi_GetMatchCnt()->sbUpdateRequestTick)) { - DWCi_StopMatching(DWC_ERROR_NETWORK, DWC_ECODE_SEQ_MATCH + DWC_ECODE_GS_SB + DWC_ECODE_TYPE_NETWORK); - DWC_Printf(DWC_REPORTFLAG_SB_UPDATE, "ServerBrowserLimitUpdate timeout.\n"); - } - } - } - - DWCi_SendStateChanged(DWCi_GetMatchCnt()->qr2Obj); - - s_bNNFreeNegotiateList = FALSE; - s_bInNNThink = TRUE; - NNThink(); - s_bInNNThink = FALSE; - - if (s_bNNFreeNegotiateList == TRUE) { - s_bNNFreeNegotiateList = FALSE; - NNFreeNegotiateList(); - } - - if (DWCi_GetMatchCnt()->pGt2Socket) { - gt2Think(*DWCi_GetMatchCnt()->pGt2Socket); - } - - if ((DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_WAIT_CLOSE) && (OS_TicksToMilliSeconds(OS_GetTick() - DWCi_GetMatchCnt()->closedTime) > (DWC_MATCH_CMD_RTT_TIMEOUT >> 1))) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "RTT Timeout with DWCi_MatchProcess.\n"); - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Timeout : Wait prior profileID.\n"); - - if (DWCi_ResumeMatching()) { - return; - } - } - - if (!DWCi_ProcessMatchSynTimeout()) { - return; - } - - if (!DWCi_ProcessCancelMatchSynTimeout()) { - return; - } - - DWCi_ProcessOptMinComp(); - -#ifdef DWC_STOP_SC_SERVER - if (DWCi_GetMatchCnt()->stopSCFlag && (DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_SV_WAITING)) { - DWCi_GetMatchCnt()->qr2NumEntry = DWCi_GetMatchCnt()->gt2NumConnection; - (void)DWCi_GPSetServerStatus(); - - DWCi_GetMatchCnt()->stopSCFlag = 0; - - if (DWCi_GetMatchCnt()->stopSCCallback) { - DWCi_GetMatchCnt()->stopSCCallback(DWCi_GetMatchCnt()->stopSCParam); - } - } -#endif -} - -GT2Bool DWCi_GT2UnrecognizedMessageCallback(GT2Socket socket, unsigned int ip, unsigned short port, GT2Byte *message, int len) { -#pragma unused(socket) - struct sockaddr_in saddr; - - if (!len || !message) { - return GT2False; - } - - MI_CpuClear32(&saddr, sizeof(saddr)); - saddr.sin_family = AF_INET; - saddr.sin_addr.s_addr = ip; - saddr.sin_port = htons(port); - - if (((message[0] == QR_MAGIC_1) && (message[1] == QR_MAGIC_2)) || (message[0] == '\\')) { - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "GT2 Unrecognized : Received QR2 data.\n"); - - if (DWCi_GetMatchCnt()->qr2Obj) { - qr2_parse_query(DWCi_GetMatchCnt()->qr2Obj, (gsi_char *)message, len, (struct sockaddr *)&saddr); - } - else { - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, " ignore qr2 message.\n"); - } - } - else if (!memcmp(message, NNMagicData, NATNEG_MAGIC_LEN)) { - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "GT2 Unrecognized : Received NN data.\n"); - NNProcessData((char *)message, len, &saddr); - } - else if ((message[0] == 0xfe) && (message[1] == 0xfe)) { - DWC_Printf(DWC_REPORTFLAG_MATCH_GT2, "GT2 Unrecognized : Not Connected gt2 data.\n"); - return GT2False; - } - else { - DWC_Printf(DWC_REPORTFLAG_WARNING, "GT2 Unrecognized : Received unrecognized data.\n"); - return GT2False; - } - - return GT2True; -} - -void DWCi_GT2ConnectAttemptCallback(GT2Socket socket, GT2Connection connection, unsigned int ip, unsigned short port, int latency, GT2Byte *message, int len) { -#pragma unused(socket) -#pragma unused(message) -#pragma unused(len) - int index; - GT2Bool result; - GT2Connection *pGt2Con; - DWCConnectionInfo *pConInfo; - - if (!DWCi_GetMatchCnt() || (DWCi_GetMatchCnt()->state != DWC_MATCH_STATE_CL_GT2) || (DWCi_GetMatchCnt()->cancelState != DWC_MATCH_CANCEL_STATE_INIT)) { - gt2Reject(connection, (const GT2Byte *)"Init state", -1); - DWC_Printf(DWC_REPORTFLAG_MATCH_GT2, "gt2Reject was called : Init state\n"); - return; - } - - index = DWCi_GT2GetConnectionListIdx(); - - if (index == -1) { - gt2Reject(connection, (const GT2Byte *)"Server full", -1); - DWC_Printf(DWC_REPORTFLAG_MATCH_GT2, "gt2Reject was called : Server full\n"); - DWCi_StopMatching(DWC_ERROR_NETWORK, DWC_ECODE_SEQ_MATCH + DWC_ECODE_GS_GT2 + DWC_ECODE_TYPE_CONN_OVER); - } - else { - if ((ip != DWCi_GetMatchCnt()->ipList[DWCi_GetMatchCnt()->gt2NumConnection]) || (port != DWCi_GetMatchCnt()->portList[DWCi_GetMatchCnt()->gt2NumConnection])) { - if (message[0] && (strtoul((const char *)message, NULL, 10) == DWCi_GetMatchCnt()->sbPidList[DWCi_GetMatchCnt()->gt2NumConnection])) { - DWC_Printf(DWC_REPORTFLAG_WARNING, "gt2Connect() came before NN complete.\n"); - DWCi_GetMatchCnt()->ipList[DWCi_GetMatchCnt()->gt2NumConnection] = ip; - DWCi_GetMatchCnt()->portList[DWCi_GetMatchCnt()->gt2NumConnection] = port; - } - else { - gt2Reject(connection, (const GT2Byte *)"Unknown connect attempt", -1); - DWC_Printf(DWC_REPORTFLAG_WARNING, "gt2Reject was called : Unknown connect attempt from %s\n", gt2AddressToString(ip, port, NULL)); - return; - } - } - - DWCi_GetMatchCnt()->nnFinishTime = 0; - result = gt2Accept(connection, DWCi_GetMatchCnt()->gt2Callbacks); - - if (result == GT2False) { - DWC_Printf(DWC_REPORTFLAG_WARNING, "Unexpected failure to gt2Accept.\n"); - DWCi_StopMatching(DWC_ERROR_NETWORK, DWC_ECODE_SEQ_MATCH + DWC_ECODE_TYPE_OTHER); - return; - } - - DWC_Printf(DWC_REPORTFLAG_MATCH_GT2, "Accepted connection from %s (latency %d)\n", gt2AddressToString(ip, port, NULL), latency); - DWCi_StopResendingMatchCommand(); - - if (DWCi_GetMatchCnt()->gt2NumConnection == 0) { - DWCi_GetMatchCnt()->baseLatency = (u16)(((latency >> 1) < 0xffff) ? (latency >> 1) : 0xffff); - } - - pGt2Con = DWCi_GetGT2ConnectionByIdx(index); - pConInfo = DWCi_GetConnectionInfoByIdx(index); - - *pGt2Con = connection; - DWCi_GetMatchCnt()->gt2NumConnection++; - - pConInfo->index = (u8)index; - pConInfo->aid = DWCi_GetMatchCnt()->aidList[DWCi_GetMatchCnt()->gt2NumConnection - 1]; - pConInfo->reserve = 0; - pConInfo->param = NULL; - - gt2SetConnectionData(connection, pConInfo); - DWCi_PostProcessConnection(DWC_PP_CONNECTION_CL_GT2_ACCEPT); - } -} - -void DWCi_GT2ConnectedCallback(GT2Connection connection, GT2Result result, GT2Byte *message, int len) { -#pragma unused(len) - char pidStr[12]; - int index; - GT2Connection *pGt2Con; - GT2Result gt2Result; - DWCConnectionInfo *pConInfo; - - if (!DWCi_GetMatchCnt() || ((DWCi_GetMatchCnt()->state != DWC_MATCH_STATE_CL_GT2) && (DWCi_GetMatchCnt()->state != DWC_MATCH_STATE_SV_OWN_GT2))) { - DWC_Printf(DWC_REPORTFLAG_MATCH_GT2, "gt2ConnectedCallback: Already cancel\n"); - return; - } - - if (result != GT2Success) { - if (!message) { - message = (GT2Byte *)""; - } - - DWC_Printf(DWC_REPORTFLAG_MATCH_GT2, "GT2 connect failed %d: %s\n", result, message); - - if (result == GT2DuplicateAddress) { - return; - } - else if (result == GT2TimedOut) { - DWCi_GetMatchCnt()->gt2ConnectCount++; - - if (DWCi_GetMatchCnt()->gt2ConnectCount > DWC_MATCH_CMD_RETRY_MAX) { - DWC_Printf(DWC_REPORTFLAG_MATCH_GT2, "gt2Connect() retry over.\n"); - DWCi_GetMatchCnt()->gt2ConnectCount = 0; - DWCi_CancelPreConnectedServerProcess(DWCi_GetMatchCnt()->sbPidList[DWCi_GetMatchCnt()->qr2NNFinishCount]); - return; - } - - DWC_Printf(DWC_REPORTFLAG_MATCH_GT2, "Retry to gt2Connect.\n"); - - (void)OS_SNPrintf(pidStr, sizeof(pidStr), "%u", DWCi_GetMatchCnt()->profileID); - gt2Result = gt2Connect(*DWCi_GetMatchCnt()->pGt2Socket, NULL, gt2AddressToString( - DWCi_GetMatchCnt()->ipList[DWCi_GetMatchCnt()->qr2NNFinishCount], DWCi_GetMatchCnt()->portList[DWCi_GetMatchCnt()->qr2NNFinishCount], NULL), (GT2Byte *)pidStr, -1, DWC_GT2_CONNECT_TIMEOUT, DWCi_GetMatchCnt()->gt2Callbacks, GT2False); - - if (gt2Result == GT2OutOfMemory) { - DWCi_HandleGT2Error(gt2Result); - return; - } - else if (gt2Result == GT2Success) { - } - else if (!DWCi_CancelPreConnectedServerProcess(DWCi_GetMatchCnt()->sbPidList[DWCi_GetMatchCnt()->qr2NNFinishCount])) { - return; - } - } - else { - if (!DWCi_CancelPreConnectedServerProcess(DWCi_GetMatchCnt()->sbPidList[DWCi_GetMatchCnt()->gt2NumConnection + 1])) { - return; - } - } - } - else { - DWC_Printf(DWC_REPORTFLAG_MATCH_GT2, "GT2 connected.\n"); - - index = DWCi_GT2GetConnectionListIdx(); - - if (index == -1) { - DWC_Printf(DWC_REPORTFLAG_WARNING, "Don't continue matching without closing connections!!\n"); - DWCi_StopMatching(DWC_ERROR_NETWORK, DWC_ECODE_SEQ_MATCH + DWC_ECODE_GS_GT2 + DWC_ECODE_TYPE_CONN_OVER); - return; - } - - pGt2Con = DWCi_GetGT2ConnectionByIdx(index); - pConInfo = DWCi_GetConnectionInfoByIdx(index); - - *pGt2Con = connection; - DWCi_GetMatchCnt()->gt2NumConnection++; - - pConInfo->index = (u8)index; - pConInfo->reserve = 0; - pConInfo->param = NULL; - pConInfo->aid = DWCi_GetMatchCnt()->aidList[DWCi_GetMatchCnt()->gt2NumConnection]; - - gt2SetConnectionData(connection, pConInfo); - - if (DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_SV_OWN_GT2) { - DWCi_PostProcessConnection(DWC_PP_CONNECTION_SV_CONNECT); - } - else { - DWCi_PostProcessConnection(DWC_PP_CONNECTION_CL_GT2_CONNECT); - } - } -} - -void DWCi_MatchGPRecvBuddyMsgCallback(GPConnection *pconnection, int profileID, char *message) { -#pragma unused(pconnection) - char tmpStr[16]; - - u32 data[DWC_MATCH_COMMAND_ADD_MESSAGE_NUM]; - int i; - - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, " RECV-0x%02x <- [--------:-----] [pid=%u]\n", *message, profileID); - - for (i = 0; i < DWC_MATCH_COMMAND_ADD_MESSAGE_NUM; i++) { - if (DWCi_GetGPBuddyAdditionalMsg(tmpStr, message + 1, i) == -1) { - break; - } - - data[i] = strtoul(tmpStr, NULL, 10); - } - - (void)DWCi_ProcessRecvMatchCommand((u8) * message, profileID, 0, 0, data, i); -} - -static void DWCi_StopResendingMatchCommand(void) { - DWCi_GetMatchCnt()->cmdCnt.command = DWC_MATCH_COMMAND_DUMMY; - DWCi_GetMatchCnt()->cmdCnt.count = 0; -} - -void DWCi_StopMatching(DWCError error, int errorCode) { - if (!DWCi_GetMatchCnt() || (error == DWC_ERROR_NONE)) { - return; - } - - DWCi_CloseAllConnectionsByTimeout(); - DWCi_SetError(error, errorCode); - (void)DWCi_SetGPStatus(DWC_STATUS_ONLINE, "", NULL); - DWCi_GetMatchCnt()->matchedCallback(error, FALSE, DWCi_GetMatchCnt()->cbEventPid ? FALSE : TRUE, (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_SC_SV) ? TRUE : FALSE, DWCi_GetFriendListIndex(DWCi_GetMatchCnt()->cbEventPid), DWCi_GetMatchCnt()->matchedParam); - DWCi_CloseMatching(); -} - -void DWCi_ClearQR2Key(void) { - if (DWCi_GetMatchCnt()->qr2MatchType != DWC_MATCH_TYPE_SC_SV) { - DWCi_GetMatchCnt()->qr2NNFinishCount = 0; - DWCi_GetMatchCnt()->qr2NumEntry = 0; - - qr2_send_statechanged(DWCi_GetMatchCnt()->qr2Obj); - } -} - -void DWCi_ProcessMatchSynPacket(u8 aid, u16 type, u8 *data) { - u8 aidIdx; - u32 bitmask; - int i; - - DWC_Printf(DWC_REPORTFLAG_MATCH_GT2, "Received SYN %d packet from aid %d.\n", type - DWC_SEND_TYPE_MATCH_SYN, aid); - - switch (type) { - case DWC_SEND_TYPE_MATCH_SYN: - if (DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_CL_WAITING) { - if (data[0] == 1) { - DWCi_GetMatchCnt()->cbEventPid = 0; - } - - aidIdx = data[1]; - - DWCi_GetMatchCnt()->aidList[aidIdx] = data[2]; - DWCi_GetMatchCnt()->sbPidList[aidIdx] = DWCi_GetMatchCnt()->profileID; - - if ((DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_ANYBODY) || (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_FRIEND)) { - DWCi_GetMatchCnt()->qr2NumEntry = (u8)DWCi_GetMatchCnt()->gt2NumConnection; - } - - DWCi_GetMatchCnt()->clWaitTimeoutCount = 0; - DWCi_SetMatchStatus(DWC_MATCH_STATE_CL_SYN); - } - - DWCi_SendMatchSynPacket(aid, DWC_SEND_TYPE_MATCH_SYN_ACK); - break; - - case DWC_SEND_TYPE_MATCH_SYN_ACK: - if (DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_SV_SYN) { - DWCi_GetMatchCnt()->synAckBit |= 1 << aid; - - if ((data[0] | (data[1] << 8)) > DWCi_GetMatchCnt()->baseLatency) { - DWCi_GetMatchCnt()->baseLatency = (u16)(data[0] | (data[1] << 8)); - } - - bitmask = DWCi_GetAIDBitmask(FALSE); - - if (DWCi_GetMatchCnt()->synAckBit == bitmask) { - for (i = 1; i <= DWCi_GetMatchCnt()->gt2NumConnection; i++) { - DWCi_SendMatchSynPacket(DWCi_GetMatchCnt()->aidList[i], DWC_SEND_TYPE_MATCH_ACK); - } - - DWCi_SetMatchStatus(DWC_MATCH_STATE_SV_SYN_WAIT); - DWC_Printf(DWC_REPORTFLAG_MATCH_GT2, "Wait max latency %d msec.\n", DWCi_GetMatchCnt()->baseLatency); - } - } - else { - DWCi_SendMatchSynPacket(aid, DWC_SEND_TYPE_MATCH_ACK); - } - - break; - - case DWC_SEND_TYPE_MATCH_ACK: - if (DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_CL_SYN) { - DWCi_PostProcessConnection(DWC_PP_CONNECTION_SYN_FINISH); - } - - break; - } -} - -BOOL DWCi_ProcessMatchClosing(DWCError error, int errorCode, int profileID) { -#pragma unused(profileID) - - if (DWC_GetState() != DWC_STATE_MATCHING) { - return FALSE; - } - - if (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_SC_SV) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "DWCi_ProcessMatchClosing: SC_SV.\n"); - return TRUE; - } - - if (error) { - DWCi_StopMatching(error, errorCode + DWC_ECODE_SEQ_MATCH); - return TRUE; - } - - DWCi_GetMatchCnt()->aidList[0] = 0; - - if ((DWCi_GetMatchCnt()->cancelState == DWC_MATCH_CANCEL_STATE_EXEC) || (DWCi_GetMatchCnt()->closeState == DWC_MATCH_CLOSE_STATE_CHANGE_TO_CLIENT) || (DWCi_GetMatchCnt()->closeState == DWC_MATCH_CLOSE_STATE_TIMEOUT)) { - return TRUE; - } - - if (DWCi_GetMatchCnt()->nnInfo.cookie) { - NNCancel(DWCi_GetMatchCnt()->nnInfo.cookie); - DWCi_GetMatchCnt()->nnInfo.cookie = 0; - } - - if (DWCi_GetMatchCnt()->gt2NumConnection) { - if (DWCi_GetMatchCnt()->closeState == DWC_MATCH_CLOSE_STATE_INIT) { - DWCi_GetMatchCnt()->closeState = DWC_MATCH_CLOSE_STATE_FORCED; - gt2CloseAllConnectionsHard(*DWCi_GetMatchCnt()->pGt2Socket); - } - } - else { - if (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_SC_CL) { - DWCi_StopMatching(DWC_ERROR_NETWORK, DWC_ECODE_SEQ_MATCH + DWC_ECODE_TYPE_SC_CL_FAIL); - } - else if (DWCi_GetMatchCnt()->priorProfileID) { - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Reserve NN to %u.\n", DWCi_GetMatchCnt()->priorProfileID); - (void)DWCi_ResumeMatching(); - } - else if (DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_CL_WAITING) { - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Wait prior profileID.\n"); - DWCi_SetMatchStatus(DWC_MATCH_STATE_WAIT_CLOSE); - DWCi_GetMatchCnt()->closedTime = OS_GetTick(); - } - else { - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Restart matching immediately.\n"); - DWCi_RestartFromCancel(DWC_MATCH_RESET_RESTART); - } - } - - return TRUE; -} - -void DWCi_ProcessMatchSCClosing(int clientPid) { - if (DWCi_GetMatchCnt()->closeState != DWC_MATCH_CLOSE_STATE_TIMEOUT) { - DWCi_CancelPreConnectedServerProcess(clientPid); - } -} - -BOOL DWCi_DeleteHostByProfileID(int profileID, int numHost) { - int i; - - if (!DWCi_GetMatchCnt()) { - return FALSE; - } - - for (i = 0; i < numHost; i++) { - if (DWCi_GetMatchCnt()->sbPidList[i] == profileID) { - DWCi_DeleteHostByIndex(i, numHost); - return TRUE; - } - } - - return FALSE; -} - -int DWCi_DeleteHostByIndex(int index, int numHost) { - int profileID; - - if (!DWCi_GetMatchCnt()) { - return 0; - } - - profileID = DWCi_GetMatchCnt()->sbPidList[index]; - - DWCi_GetMatchCnt()->validAidBitmap &= ~(1 << DWCi_GetMatchCnt()->aidList[index]); - DWCi_SetNumValidConnection(); - - if (index < numHost - 1) { - int i; - - for (i = 0 ; i < numHost - index - 1 ; ++i) { - DWCi_GetMatchCnt()->qr2IPList [index + i] = DWCi_GetMatchCnt()->qr2IPList [index + i + 1]; - DWCi_GetMatchCnt()->qr2PortList[index + i] = DWCi_GetMatchCnt()->qr2PortList[index + i + 1]; - DWCi_GetMatchCnt()->sbPidList [index + i] = DWCi_GetMatchCnt()->sbPidList [index + i + 1]; - DWCi_GetMatchCnt()->ipList [index + i] = DWCi_GetMatchCnt()->ipList [index + i + 1]; - DWCi_GetMatchCnt()->portList [index + i] = DWCi_GetMatchCnt()->portList [index + i + 1]; - DWCi_GetMatchCnt()->aidList [index + i] = DWCi_GetMatchCnt()->aidList [index + i + 1]; - } - } - - if (numHost > 0) { - DWCi_GetMatchCnt()->qr2IPList[numHost - 1] = 0; - DWCi_GetMatchCnt()->qr2PortList[numHost - 1] = 0; - DWCi_GetMatchCnt()->sbPidList[numHost - 1] = 0; - DWCi_GetMatchCnt()->ipList[numHost - 1] = 0; - DWCi_GetMatchCnt()->portList[numHost - 1] = 0; - DWCi_GetMatchCnt()->aidList[numHost - 1] = 0; - } - - return profileID; -} - -int DWCi_GetNumAllConnection(void) { - if (!DWCi_GetMatchCnt()) { - return 0; - } - - return DWCi_GetMatchCnt()->gt2NumConnection; -} - -int DWCi_GetNumValidConnection(void) { - if (!DWCi_GetMatchCnt()) { - return 0; - } - - return DWCi_GetMatchCnt()->gt2NumValidConn; -} - -void DWCi_SetNumValidConnection(void) { - int count = -1; - int i; - - for (i = 0; i < DWC_MAX_CONNECTIONS; i++) { - if (DWCi_GetMatchCnt()->validAidBitmap & (1 << i)) { - count++; - } - } - - if (count == -1) { - DWCi_GetMatchCnt()->gt2NumValidConn = 0; - } - else { - DWCi_GetMatchCnt()->gt2NumValidConn = (u8)count; - } -} - -int DWCi_GetAllAIDList(u8 **aidList) { - if (!DWCi_GetMatchCnt()) { - return 0; - } - - *aidList = DWCi_GetMatchCnt()->aidList; - - return DWCi_GetMatchCnt()->gt2NumConnection + 1; -} - -int DWCi_GetValidAIDList(u8 **aidList) { - static u8 validAidList[DWC_MAX_CONNECTIONS]; - int i; - - if (!DWCi_GetMatchCnt()) { - return 0; - } - - MI_CpuClear8(validAidList, sizeof(validAidList)); - - for (i = 0; i <= DWCi_GetMatchCnt()->gt2NumValidConn; i++) { - if (DWCi_GetMatchCnt()->validAidBitmap & (1 << DWCi_GetMatchCnt()->aidList[i])) { - validAidList[i] = DWCi_GetMatchCnt()->aidList[i]; - } - else { - break; - } - } - - *aidList = validAidList; - - return DWCi_GetMatchCnt()->gt2NumValidConn + 1; -} - -GPResult DWCi_GPSetServerStatus(void) { - char valueStr[12], keyValueStr[32]; - - if (DWCi_GetMatchCnt()->qr2MatchType != DWC_MATCH_TYPE_SC_SV) { - return GP_NO_ERROR; - } - - (void)OS_SNPrintf(valueStr, sizeof(valueStr), "%u", DWCi_GetMatchCnt()->qr2NumEntry + 1); - (void)DWC_SetCommonKeyValueString(DWC_GP_SSTR_KEY_MATCH_SC_MAX, valueStr, keyValueStr, '/'); - (void)OS_SNPrintf(valueStr, sizeof(valueStr), "%u", DWCi_GetMatchCnt()->gt2NumConnection + 1); - (void)DWC_AddCommonKeyValueString(DWC_GP_SSTR_KEY_MATCH_SC_NUM, valueStr, keyValueStr, '/'); - (void)OS_SNPrintf(valueStr, sizeof(valueStr), "%u", DWC_MATCHING_VERSION); - (void)DWC_AddCommonKeyValueString(DWC_GP_SSTR_KEY_MATCH_VERSION, valueStr, keyValueStr, '/'); - - return DWCi_SetGPStatus(DWC_STATUS_MATCH_SC_SV, keyValueStr, NULL); -} - -void DWCi_ShutdownMatch(void) { - DWCi_SetMatchCnt(NULL); - - if (stpAddFilter) { - DWC_Free(DWC_ALLOCTYPE_BASE, stpAddFilter, 0); - stpAddFilter = NULL; - } - - DWCi_ClearGameMatchKeys(); - - if (stpOptMinComp != NULL) { - DWC_Free(DWC_ALLOCTYPE_BASE, stpOptMinComp, 0); - stpOptMinComp = NULL; - } - - stOptSCBlock.valid = 0; - stOptSCBlock.lock = 0; -} - -BOOL DWCi_IsShutdownMatch(void) { - if (!DWCi_GetMatchCnt()) { - return TRUE; - } - else { - return FALSE; - } -} - -static void DWCi_ResetMatchParam(DWCMatchResetLevel level) { - DWCi_GetMatchCnt()->gt2ConnectCount = 0; - DWCi_GetMatchCnt()->nnRecvCount = 0; - DWCi_GetMatchCnt()->nnCookieRand = (u16)DWCi_GetMathRand32(0x10000); - DWCi_GetMatchCnt()->nnLastCookie = 0; - DWCi_GetMatchCnt()->nnFailedTime = 0; - DWCi_GetMatchCnt()->nnFinishTime = 0; - DWCi_GetMatchCnt()->clLinkProgress = 0; - DWCi_GetMatchCnt()->cancelState = DWC_MATCH_CANCEL_STATE_INIT; - DWCi_GetMatchCnt()->scResvRetryCount = 0; - DWCi_GetMatchCnt()->synResendCount = 0; - DWCi_GetMatchCnt()->cancelSynResendCount = 0; - DWCi_GetMatchCnt()->resvWaitCount = 0; - DWCi_GetMatchCnt()->closeState = DWC_MATCH_CLOSE_STATE_INIT; - DWCi_GetMatchCnt()->cancelBaseLatency = 0; - DWCi_GetMatchCnt()->searchPort = 0; - DWCi_GetMatchCnt()->searchIP = 0; - DWCi_GetMatchCnt()->lastSynSent = 0; - DWCi_GetMatchCnt()->closedTime = 0; - MI_CpuClear32(&DWCi_GetMatchCnt()->cmdCnt, sizeof(DWCi_GetMatchCnt()->cmdCnt)); - - if (level == DWC_MATCH_RESET_CONTINUE) { - DWCi_GetMatchCnt()->qr2NNFinishCount = (u8)DWCi_GetMatchCnt()->gt2NumConnection; - - if (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_SC_CL) { - DWCi_SetMatchStatus(DWC_MATCH_STATE_CL_WAITING); - } - else if (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_SC_SV) { - DWCi_SetMatchStatus(DWC_MATCH_STATE_SV_WAITING); - } - } - else { - DWCi_GetMatchCnt()->gt2NumConnection = 0; - DWCi_GetMatchCnt()->gt2NumValidConn = 0; - DWCi_GetMatchCnt()->qr2NNFinishCount = 0; - DWCi_GetMatchCnt()->qr2IsReserved = 0; - DWCi_GetMatchCnt()->qr2Reservation = 0; - DWCi_GetMatchCnt()->sbUpdateFlag = FALSE; - DWCi_GetMatchCnt()->friendCount = 0; - DWCi_GetMatchCnt()->baseLatency = 0; - DWCi_GetMatchCnt()->cmdResendFlag = FALSE; - DWCi_GetMatchCnt()->cmdResendTick = 0; - DWCi_GetMatchCnt()->cmdTimeoutTime = 0; - DWCi_GetMatchCnt()->cmdTimeoutStartTick = 0; - DWCi_GetMatchCnt()->synAckBit = 0; - DWCi_GetMatchCnt()->reqProfileID = 0; - DWCi_GetMatchCnt()->priorProfileID = 0; - DWCi_GetMatchCnt()->validAidBitmap = 0; - - MI_CpuClear32(DWCi_GetMatchCnt()->qr2IPList, sizeof(DWCi_GetMatchCnt()->qr2IPList)); - MI_CpuClear16(DWCi_GetMatchCnt()->qr2PortList, sizeof(DWCi_GetMatchCnt()->qr2PortList)); - MI_CpuClear32(DWCi_GetMatchCnt()->sbPidList, sizeof(DWCi_GetMatchCnt()->sbPidList)); - MI_CpuClear32(&DWCi_GetMatchCnt()->nnInfo, sizeof(DWCNNInfo)); - MI_CpuClear32(DWCi_GetMatchCnt()->ipList, sizeof(DWCi_GetMatchCnt()->ipList)); - MI_CpuClear16(DWCi_GetMatchCnt()->portList, sizeof(DWCi_GetMatchCnt()->portList)); - MI_CpuClear8(DWCi_GetMatchCnt()->aidList, sizeof(DWCi_GetMatchCnt()->aidList)); - MI_CpuClear32(DWCi_GetMatchCnt()->svDataBak, sizeof(DWCi_GetMatchCnt()->svDataBak)); - - if (level == DWC_MATCH_RESET_RESTART) { - if (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_ANYBODY) { - DWCi_SetMatchStatus(DWC_MATCH_STATE_CL_SEARCH_HOST); - } - else if (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_FRIEND) { - DWCi_SetMatchStatus(DWC_MATCH_STATE_CL_WAIT_RESV); - } - } - else { - DWCi_GetMatchCnt()->qr2MatchType = 0; - DWCi_GetMatchCnt()->qr2NumEntry = 0; -#ifdef DWC_QR2_ALIVE_DURING_MATCHING - DWCi_GetMatchCnt()->qr2ShutdownFlag = 0; -#endif - DWCi_GetMatchCnt()->cbEventPid = 0; - DWCi_GetMatchCnt()->distantFriend = 0; -#ifdef DWC_STOP_SC_SERVER - DWCi_GetMatchCnt()->stopSCFlag = 0; -#endif - DWCi_GetMatchCnt()->clWaitTimeoutCount = 0; - DWCi_GetMatchCnt()->clWaitTime = 0; - DWCi_GetMatchCnt()->newClientCallback = NULL; - DWCi_GetMatchCnt()->newClientParam = NULL; - } - } -} - -static void DWCi_SetMatchCommonParam(u8 matchType, u8 numEntry, DWCMatchedSCCallback callback, void *param) { - DWCi_ResetMatchParam(DWC_MATCH_RESET_ALL); - DWCi_GetMatchCnt()->qr2MatchType = matchType; - DWCi_GetMatchCnt()->qr2NumEntry = numEntry; - DWCi_GetMatchCnt()->matchedCallback = callback; - DWCi_GetMatchCnt()->matchedParam = param; - DWCi_GetMatchCnt()->nnFailureCount = 0; - DWCi_GetMatchCnt()->aidList[0] = 0; - - qr2_register_key(DWC_QR2_PID_KEY, DWC_QR2_PID_KEY_STR); - qr2_register_key(DWC_QR2_MATCH_TYPE_KEY, DWC_QR2_MATCH_TYPE_KEY_STR); - qr2_register_key(DWC_QR2_MATCH_RESV_KEY, DWC_QR2_MATCH_RESV_KEY_STR); - qr2_register_key(DWC_QR2_MATCH_VER_KEY, DWC_QR2_MATCH_VER_KEY_STR); - qr2_register_key(DWC_QR2_MATCH_EVAL_KEY, DWC_QR2_MATCH_EVAL_KEY_STR); -} - -static void DWCi_CloseMatching(void) { - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, " Close Matching....\n"); - - if (!DWCi_GetMatchCnt()) { - return; - } - -#ifndef DWC_BUG_WIFI_DELAY_SEND - if (DWCi_GetMatchCnt()->sbObj) { - if (s_sbCallbackLevel == 0) { - ServerBrowserFree(DWCi_GetMatchCnt()->sbObj); - DWCi_GetMatchCnt()->sbObj = NULL; - } - else { - s_needSbFree = TRUE; - } - } -#endif - - DWCi_NNFreeNegotiateList(); - DWCi_SetMatchStatus(DWC_MATCH_STATE_INIT); - - if (stpAddFilter) { - DWC_Free(DWC_ALLOCTYPE_BASE, stpAddFilter, 0); - stpAddFilter = NULL; - } - - DWCi_ClearGameMatchKeys(); - -#ifdef DWC_QR2_ALIVE_DURING_MATCHING - DWCi_GetMatchCnt()->qr2ShutdownFlag = 1; -#endif -} - -#define DWC_NUM_QR2_MATCH_KEY 7 - - -static SBError DWCi_SBUpdateAsync(int profileID) { - char filter[MAX_FILTER_LEN]; - char *pFilter = filter; - u8 basicFields[DWC_NUM_QR2_MATCH_KEY + DWC_QR2_GAME_RESERVED_KEYS]; - int len; - int numBasicFields = DWC_NUM_QR2_MATCH_KEY; - int i; - SBError sbError = sbe_noerror; - - basicFields[0] = NUMPLAYERS_KEY; - basicFields[1] = MAXPLAYERS_KEY; - basicFields[2] = DWC_QR2_PID_KEY; - basicFields[3] = DWC_QR2_MATCH_TYPE_KEY; - basicFields[4] = DWC_QR2_MATCH_RESV_KEY; - basicFields[5] = DWC_QR2_MATCH_VER_KEY; - basicFields[6] = DWC_QR2_MATCH_EVAL_KEY; - - if ((DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_ANYBODY) || (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_FRIEND)) { - for (i = 0; i < DWC_QR2_GAME_RESERVED_KEYS; i++) { - if (stGameMatchKeys[i].keyID) { - basicFields[numBasicFields] = stGameMatchKeys[i].keyID; - numBasicFields++; - } - } - } - - switch (DWCi_GetMatchCnt()->state) { - case DWC_MATCH_STATE_CL_SEARCH_HOST: - if (!DWCi_GetMatchCnt()->priorProfileID) { - len = DWCi_GetDefaultMatchFilter(filter, DWCi_GetMatchCnt()->profileID, DWCi_GetMatchCnt()->qr2NumEntry, DWCi_GetMatchCnt()->qr2MatchType); - - if (stpAddFilter) { - (void)OS_SNPrintf(&filter[len], sizeof(filter) - len, " and (%s)", stpAddFilter); - } - - break; - } - else { - profileID = DWCi_GetMatchCnt()->priorProfileID; - } - case DWC_MATCH_STATE_CL_SEARCH_OWN: - case DWC_MATCH_STATE_CL_WAIT_RESV: - case DWC_MATCH_STATE_CL_SEARCH_NN_HOST: - - (void)OS_SNPrintf(filter, sizeof(filter), "%s = %u", DWC_QR2_PID_KEY_STR, profileID); - DWCi_GetMatchCnt()->reqProfileID = profileID; - break; - - default: - DWC_Printf(DWC_REPORTFLAG_ERROR, "---DWCi_SBUpdateAsync() illegal state %d.\n", DWCi_GetMatchCnt()->state); - } - - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "ServerBrowserFilter : %s\n", filter); - -#if 1 - ServerBrowserClear(DWCi_GetMatchCnt()->sbObj); -#else - if (ServerBrowserState(DWCi_GetMatchCnt()->sbObj) != sb_disconnected) { - ServerBrowserClear(DWCi_GetMatchCnt()->sbObj); - } -#endif - - for (i = 0; i < DWC_DNS_ERROR_RETRY_MAX; i++) { - sbError = ServerBrowserLimitUpdate(DWCi_GetMatchCnt()->sbObj, SBTrue, SBFalse, basicFields, numBasicFields, filter, DWC_SB_UPDATE_MAX_SERVERS); - - if (!sbError) { - break; - } - else if (sbError != sbe_dnserror) { - break; - } - } - - if (!sbError) { - DWCi_GetMatchCnt()->sbUpdateRequestTick = OS_GetTick() + OS_MilliSecondsToTicks(DWC_SB_UPDATE_TIMEOUT); - DWC_Printf(DWC_REPORTFLAG_DEBUG, "ServerBrowserLimitUpdate timeout set.(%s)\n", __FUNCTION__); - } - - return sbError; -} - -static int DWCi_GetDefaultMatchFilter(char *filter, int profileID, u8 numEntry, u8 matchType) { - return OS_SNPrintf(filter, MAX_FILTER_LEN, "%s = %d and %s != %u and maxplayers = %d and numplayers < %d and %s = %d and %s != %s", DWC_QR2_MATCH_VER_KEY_STR, DWC_MATCHING_VERSION, DWC_QR2_PID_KEY_STR, profileID, numEntry, numEntry, DWC_QR2_MATCH_TYPE_KEY_STR, matchType, DWC_QR2_MATCH_RESV_KEY_STR, DWC_QR2_PID_KEY_STR); -} - -static NegotiateError DWCi_NNStartupAsync(int isQR2, int cookie, SBServer server) { - u32 ip; - u32 senddata[2]; - int index = DWCi_GetMatchCnt()->qr2NNFinishCount; - int result; - BOOL nnValid; - NegotiateError nnError = ne_noerror; - - if (!isQR2) { - cookie = (DWCi_GetMatchCnt()->profileID & 0x0ffff) | (DWCi_GetMatchCnt()->nnCookieRand << 16); - - if (SBServerHasPrivateAddress(server)) { - if (SBServerGetPublicInetAddress(server) == ServerBrowserGetMyPublicIPAddr(DWCi_GetMatchCnt()->sbObj)) { - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Server[%d] is behind same NAT as me.\n", index); - DWCi_GetMatchCnt()->ipList[index] = SBServerGetPrivateInetAddress(server); - DWCi_GetMatchCnt()->portList[index] = SBServerGetPrivateQueryPort(server); - - nnValid = FALSE; - } - else { - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Server[%d] is behind NAT.\n", index); - nnValid = TRUE; - } - } - else { - ip = (u16)SO_GetHostID(); - - if (((ip & 0xffff) == 0xa8c0) || (((ip & 0xff) == 0xac) && ((ip & 0xff00) >= 0x1000) && ((ip & 0xff00) <= 0x1f00)) || ((ip & 0xff) == 0x0a)) { - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Server[%d] is not behind NAT. But I'm behind NAT.\n", index); - nnValid = TRUE; - } - else { - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Both I and Server[%d] are not behind NAT.\n", index); - DWCi_GetMatchCnt()->ipList[index] = SBServerGetPublicInetAddress(server); - DWCi_GetMatchCnt()->portList[index] = SBServerGetPublicQueryPort(server); - - nnValid = FALSE; - } - } - - if (nnValid) { - DWCi_GetMatchCnt()->nnCookieRand = (u16)DWCi_GetMathRand32(0x10000); - DWCi_GetMatchCnt()->nnInfo.cookie = cookie; - } - else { - senddata[0] = (u32)SO_GetHostID(); - senddata[1] = gt2GetLocalPort(*DWCi_GetMatchCnt()->pGt2Socket); - result = DWCi_SendMatchCommand(DWC_MATCH_COMMAND_TELL_ADDR, DWCi_GetMatchCnt()->sbPidList[index], SBServerGetPublicInetAddress(server), SBServerGetPublicQueryPort(server), senddata, 2); - - DWCi_GetMatchCnt()->cmdCnt.count = 0; - - if (result) { - return ne_socketerror; - } - - DWCi_GetMatchCnt()->nnInfo.cookie = 0; - } - - DWCi_GetMatchCnt()->nnInfo.isQR2 = 0; - DWCi_GetMatchCnt()->nnInfo.retryCount = 0; - DWCi_GetMatchCnt()->nnInfo.port = SBServerGetPublicQueryPort(server); - DWCi_GetMatchCnt()->nnInfo.ip = SBServerGetPublicInetAddress(server); - } - else { - DWCi_GetMatchCnt()->nnInfo.isQR2 = 1; - DWCi_GetMatchCnt()->nnInfo.retryCount = 0; - DWCi_GetMatchCnt()->nnInfo.port = 0; - DWCi_GetMatchCnt()->nnInfo.ip = 0; - DWCi_GetMatchCnt()->nnInfo.cookie = cookie; - - nnValid = TRUE; - } - - if (nnValid) { - nnError = DWCi_DoNatNegotiationAsync(&DWCi_GetMatchCnt()->nnInfo); - } - else { - DWCi_NNCompletedCallback(nr_success, gt2GetSocketSOCKET(*DWCi_GetMatchCnt()->pGt2Socket), NULL, &DWCi_GetMatchCnt()->nnInfo); - DWCi_GetMatchCnt()->nnFinishTime = 0; - } - - return nnError; -} - -static NegotiateError DWCi_DoNatNegotiationAsync(DWCNNInfo *nnInfo) { - SBError sbError; - NegotiateError nnError; - int i; - - if (!nnInfo->isQR2) { - sbError = ServerBrowserSendNatNegotiateCookieToServer( - DWCi_GetMatchCnt()->sbObj, gt2AddressToString(nnInfo->ip, 0, NULL), nnInfo->port, nnInfo->cookie); - - if (DWCi_HandleSBError(sbError)) { - return ne_socketerror; - } - - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Send NN cookie = %x.\n", nnInfo->cookie); - } - - for (i = 0 ; i < DWC_DNS_ERROR_RETRY_MAX ; ++i) { - nnError = NNBeginNegotiationWithSocket(gt2GetSocketSOCKET(*DWCi_GetMatchCnt()->pGt2Socket), nnInfo->cookie, nnInfo->isQR2, DWCi_NNProgressCallback, DWCi_NNCompletedCallback, nnInfo); - - if ((nnError == ne_noerror) || (nnError != ne_dnserror)) { - break; - } - - DWC_Printf(DWC_REPORTFLAG_DEBUG, " dns error occurs when NatNegotiation begin... retry\n"); - } - - return nnError; -} - -static int DWCi_SendMatchCommand(u8 command, int profileID, u32 ip, u16 port, const u32 data[], int len) { - char message[DWC_MATCH_COMMAND_ADD_MESSAGE_MAX]; - char tmpStr[16]; - int msgLen = 0, tmpLen; - int result; - int i; - - if ((DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_ANYBODY) || (((DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_SC_CL) || DWCi_GetMatchCnt()->distantFriend) && (command == DWC_MATCH_COMMAND_TELL_ADDR))) { - result = (int)DWCi_SendSBMsgCommand(command, ip, port, data, len); - } - else { - if (data && len) { - msgLen = OS_SNPrintf(message, sizeof(message), "%u", data[0]); - - for (i = 1; i < len; i++) { - tmpLen = OS_SNPrintf(tmpStr, sizeof(tmpStr), "/%u", data[i]); - - if (msgLen + tmpLen + 1 > sizeof(message)) { - SDK_ASSERTMSG(0, "Match command is too long."); - break; - } - - MI_CpuCopy8(tmpStr, &message[msgLen], (u32)tmpLen); - msgLen += tmpLen; - } - } - - message[msgLen] = '\0'; - result = (int)DWCi_SendGPBuddyMsgCommand(DWCi_GetMatchCnt()->pGpObj, command, profileID, message); - } - - if ((command == DWC_MATCH_COMMAND_RESV_OK) || (command == DWC_MATCH_COMMAND_TELL_ADDR) || (command == DWC_MATCH_COMMAND_LINK_CLS_REQ) || (command == DWC_MATCH_COMMAND_LINK_CLS_SUC)) { - DWCi_GetMatchCnt()->cmdCnt.command = command; - DWCi_GetMatchCnt()->cmdCnt.port = port; - DWCi_GetMatchCnt()->cmdCnt.ip = ip; - DWCi_GetMatchCnt()->cmdCnt.profileID = profileID; - DWCi_GetMatchCnt()->cmdCnt.len = len; - DWCi_GetMatchCnt()->cmdCnt.sendTime = OS_GetTick(); - - if (data && len) { - MI_CpuCopy32(data, DWCi_GetMatchCnt()->cmdCnt.data, (u32)len * 4); - } - } - - return result; -} - -static SBError DWCi_SendSBMsgCommand(u8 command, u32 ip, u16 port, const u32 data[], int len) { - int i; - DWCSBMessage senddata; - SBError sbError; - - if (len > sizeof(senddata.data) / sizeof(u32)) { - SDK_ASSERTMSG(0, "Match command is too long."); - len = sizeof(senddata.data) / sizeof(u32); - } - - if (data && len) { - MI_CpuCopy32(data, senddata.data, sizeof(u32) * len); - } - else { - len = 0; - } - - strcpy(senddata.header.identifier, DWC_SB_COMMAND_STRING); - senddata.header.version = DWC_MATCHING_VERSION; - senddata.header.command = command; - senddata.header.size = (u8)(sizeof(u32) * len); - senddata.header.qr2Port = DWCi_GetMatchCnt()->qr2Port; - senddata.header.qr2IP = DWCi_GetMatchCnt()->qr2IP; - senddata.header.profileID = DWCi_GetMatchCnt()->profileID; - -#ifdef NITRODWC_DEBUG - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, " SEND-%s -> [%08x:%d] [pid=--------]\n", get_dwccommandstr(command), ip, port); -#else - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, " SEND-0x%02x -> [%08x:%d] [pid=--------]\n", command, ip, port); -#endif - - for (i = 0; i < DWC_DNS_ERROR_RETRY_MAX; i++) { - sbError = ServerBrowserSendMessageToServer(DWCi_GetMatchCnt()->sbObj, gt2AddressToString(ip, 0, NULL), port, (gsi_char *)&senddata, (int)(sizeof(DWCSBMessageHeader) + senddata.header.size)); - - if (!sbError) { - break; - } - else if (sbError != sbe_dnserror) { - break; - } - } - - return sbError; -} - -static GPResult DWCi_SendGPBuddyMsgCommand(GPConnection *connection, u8 command, int profileID, const char *message) { - char tmpStr[DWC_MATCH_COMMAND_ADD_MESSAGE_MAX]; - u32 len, len2; - GPResult result; - - len = (u32)OS_SNPrintf(tmpStr, sizeof(tmpStr), "%s%dv%s", DWC_GP_COMMAND_STRING, DWC_MATCHING_VERSION, DWC_GP_COMMAND_MATCH_STRING); - tmpStr[len] = (char)command; - tmpStr[len + 1] = '\0'; - - if (message) { - len2 = strlen(message); - - if ((len + 1) + len2 + 1 > sizeof(tmpStr)) { - SDK_ASSERTMSG(0, "Match command is too long."); - len2 = sizeof(tmpStr) - (len + 1) - 1; - } - - MI_CpuCopy8(message, &tmpStr[len + 1], len2); - tmpStr[len + 1 + len2] = '\0'; - } - - result = gpSendBuddyMessage(connection, profileID, tmpStr); - - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, " SEND-0x%02x -> [--------:-----] [pid=%u]\n", command, profileID); - - return result; -} - -static int DWCi_GetGPBuddyAdditionalMsg(char *dstMsg, const char *srcMsg, int index) { - const char *pSrcBegin = srcMsg; - char *pSrcNext = NULL; - char *pSrcEnd; - int len; - int i; - - pSrcEnd = strchr(pSrcBegin, '\0'); - - for (i = 0; i < index; i++) { - pSrcNext = strchr(pSrcBegin, '/'); - - if (!pSrcNext) { - return -1; - } - - pSrcBegin = pSrcNext + 1; - } - - pSrcNext = strchr(pSrcBegin, '/'); - - if (!pSrcNext) { - pSrcNext = pSrcEnd; - } - - if (pSrcBegin == pSrcNext) { - return -1; - } - - len = pSrcNext - pSrcBegin; - MI_CpuCopy8(pSrcBegin, dstMsg, (u32)len); - dstMsg[len] = '\0'; - - return len; -} - -static BOOL DWCi_ProcessRecvMatchCommand(u8 command, int srcPid, u32 srcIP, u16 srcPort, const u32 data[], int len) { -#pragma unused(len) - u8 sendCommand; - u8 aid; - u16 port = 0; - u32 ip = 0; - u32 aidIdx; - u32 senddata[DWC_MAX_MATCH_IDX_LIST + 1]; - int profileID; - int sendlen = 0; - int result; - int i; - SBError sbError; - NegotiateError nnError; - struct sockaddr_in remoteaddr; - - if (!DWCi_GetMatchCnt() || (DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_INIT)) { - return TRUE; - } - - if ((DWC_GetState() == DWC_STATE_MATCHING) && (DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_CL_WAITING) && (srcPid == DWCi_GetMatchCnt()->sbPidList[0])) { - DWCi_InitClWaitTimeout(); - } - - switch (command) { - case DWC_MATCH_COMMAND_RESERVATION: - case DWC_MATCH_COMMAND_RESV_PRIOR: - if (DWCi_GetMatchCnt()->qr2MatchType != DWC_MATCH_TYPE_ANYBODY) { - srcIP = data[1]; - srcPort = (u16)data[2]; - DWC_Printf(DWC_REPORTFLAG_DEBUG, "friend IP:%x, port:%d\n", srcIP, srcPort); - } - - sendCommand = DWCi_CheckResvCommand(srcPid, srcIP, srcPort, data[0], (command == DWC_MATCH_COMMAND_RESV_PRIOR)? TRUE : FALSE); - - if (sendCommand == DWC_MATCH_COMMAND_RESV_OK) { -#ifdef DWC_LIMIT_FRIENDS_MATCH_VALID - DWCi_GetMatchCnt()->friendAcceptBit = 0; -#endif - - result = DWCi_ProcessResvOK(srcPid, srcIP, srcPort); - - if (DWCi_HandleMatchCommandError(result)) { - return FALSE; - } - - if (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_SC_SV) { - if (DWCi_GetMatchCnt()->newClientCallback) { - DWCi_GetMatchCnt()->newClientCallback(DWCi_GetFriendListIndex(srcPid), DWCi_GetMatchCnt()->newClientParam); - } - } - - senddata[0] = DWCi_GetMatchCnt()->qr2NNFinishCount; - - for (sendlen = 1; sendlen <= DWCi_GetMatchCnt()->qr2NNFinishCount; sendlen++) { - senddata[sendlen] = (u32)DWCi_GetMatchCnt()->sbPidList[sendlen]; - } - - senddata[sendlen++] = DWCi_GetMatchCnt()->qr2IP; - senddata[sendlen++] = DWCi_GetMatchCnt()->qr2Port; - - DWCi_SetMatchStatus(DWC_MATCH_STATE_SV_OWN_NN); - } - else if (sendCommand == DWC_MATCH_COMMAND_RESV_DENY) { - if ((DWCi_GetMatchCnt()->qr2NumEntry > 0) && (DWCi_GetMatchCnt()->qr2NNFinishCount == DWCi_GetMatchCnt()->qr2NumEntry)) { - if (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_SC_SV) { - senddata[0] = DWC_MATCH_RESV_DENY_REASON_SV_FULL; - sendlen = 1; - } - } - } - - if (sendCommand != DWC_MATCH_COMMAND_DUMMY) { - result = DWCi_SendMatchCommand(sendCommand, srcPid, srcIP, srcPort, senddata, sendlen); - - if (DWCi_HandleMatchCommandError(result)) { - return FALSE; - } - } - break; - case DWC_MATCH_COMMAND_RESV_OK: - - if (DWCi_GetMatchCnt()->state != DWC_MATCH_STATE_CL_WAIT_RESV) { - break; - } - - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Succeeded NN reservation.\n"); - - if (srcPid != DWCi_GetMatchCnt()->reqProfileID) { - break; - } - - DWCi_GetMatchCnt()->priorProfileID = 0; - DWCi_GetMatchCnt()->resvWaitCount = 0; - DWCi_GetMatchCnt()->cmdTimeoutTime = 0; - DWCi_GetMatchCnt()->cmdResendFlag = FALSE; - DWCi_GetMatchCnt()->qr2IPList[0] = data[data[0] + 1]; - DWCi_GetMatchCnt()->qr2PortList[0] = (u16)data[data[0] + 2]; - DWCi_GetMatchCnt()->searchIP = data[data[0] + 1]; - DWCi_GetMatchCnt()->searchPort = (u16)data[data[0] + 2]; - DWC_Printf(DWC_REPORTFLAG_DEBUG, "Server IP:%x, port:%d\n", DWCi_GetMatchCnt()->searchIP, DWCi_GetMatchCnt()->searchPort); - - if (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_FRIEND) { - if (DWCi_AreAllBuddies(&data[1], data[0])) { - if (DWCi_GetMatchCnt()->gt2NumConnection) { - DWCi_MakeBackupServerData(srcPid, data); - } - } - else { - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "But some clients are not friends.\n"); - result = DWCi_CancelReservation(srcPid); - - if (DWCi_HandleMatchCommandError(result)) { - return FALSE; - } - - result = DWCi_SendResvCommandToFriend(FALSE, FALSE, srcPid); - - if (DWCi_HandleMatchCommandError(result)) { - return FALSE; - } - - break; - } - } - - if (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_ANYBODY) { - if (DWCi_GetMatchCnt()->gt2NumConnection) { - DWCi_MakeBackupServerData(srcPid, data); - - result = DWCi_ChangeToClient(); - - if (DWCi_HandleMatchCommandError(result)) { - return FALSE; - } - } - - DWCi_SetMatchStatus(DWC_MATCH_STATE_CL_NN); - nnError = DWCi_NNStartupAsync(0, 0, ServerBrowserGetServer(DWCi_GetMatchCnt()->sbObj, 0)); - - if (DWCi_HandleNNError(nnError)) { - return FALSE; - } - } - else { - DWCi_SetMatchStatus(DWC_MATCH_STATE_CL_SEARCH_NN_HOST); - sbError = DWCi_SBUpdateAsync(srcPid); - - if (DWCi_HandleSBError(sbError)) { - return FALSE; - } - } - - break; - - case DWC_MATCH_COMMAND_RESV_DENY: - - if ((DWCi_GetMatchCnt()->state != DWC_MATCH_STATE_CL_WAIT_RESV) || (srcPid != DWCi_GetMatchCnt()->reqProfileID)) { - break; - } - - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Reservation was denied by %u.\n", srcPid); - - if (len > 0) { - if (data[0] == DWC_MATCH_RESV_DENY_REASON_SV_FULL) { - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Game server is fully occupied.\n"); - DWCi_StopMatching(DWC_ERROR_SERVER_FULL, 0); - - return FALSE; - } - } - return DWCi_RetryReserving(DWCi_GetMatchCnt()->reqProfileID); - break; - case DWC_MATCH_COMMAND_RESV_WAIT: - if (DWCi_GetMatchCnt()->state != DWC_MATCH_STATE_CL_WAIT_RESV) { - break; - } - - if (srcPid == DWCi_GetMatchCnt()->reqProfileID) { - DWCi_GetMatchCnt()->cmdTimeoutStartTick = OS_GetTick(); - - if ((DWCi_GetMatchCnt()->priorProfileID && (DWCi_GetMatchCnt()->resvWaitCount < DWC_RESV_COMMAND_RETRY_MAX)) || (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_SC_CL)) { - DWCi_GetMatchCnt()->cmdResendFlag = TRUE; - DWCi_GetMatchCnt()->cmdResendTick = OS_GetTick(); - - if (DWCi_GetMatchCnt()->qr2MatchType != DWC_MATCH_TYPE_SC_CL) { - DWCi_GetMatchCnt()->resvWaitCount++; - } - - break; - } - - DWCi_GetMatchCnt()->priorProfileID = 0; - DWCi_GetMatchCnt()->resvWaitCount = 0; - - if (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_ANYBODY) { - DWCi_SetMatchStatus(DWC_MATCH_STATE_CL_SEARCH_HOST); - DWCi_GetMatchCnt()->sbUpdateFlag = DWC_SB_UPDATE_INTERVAL_SHORT; - DWCi_GetMatchCnt()->sbUpdateTick = OS_GetTick(); - } - else if (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_FRIEND) { - (void)DWCi_SendResvCommandToFriend(TRUE, FALSE, 0); - } - } - break; - case DWC_MATCH_COMMAND_RESV_CANCEL: - if (DWCi_GetMatchCnt()->qr2IsReserved && (srcPid == DWCi_GetMatchCnt()->qr2Reservation)) { - if ((DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_SC_SV) && (DWCi_GetMatchCnt()->gt2NumConnection == 1) && (DWCi_GetMatchCnt()->sbPidList[1] == srcPid)) { - gt2CloseAllConnectionsHard(*DWCi_GetMatchCnt()->pGt2Socket); - } - - if (!DWCi_CancelPreConnectedServerProcess(srcPid)) { - return FALSE; - } - } - break; - case DWC_MATCH_COMMAND_TELL_ADDR: - ip = data[0]; - port = (u16)data[1]; - - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "NN parent is behind same NAT as me. Received IP %x & port %d\n", ip, port); - - if (DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_CL_WAITING) { - DWCi_SetMatchStatus(DWC_MATCH_STATE_CL_NN); - } - else if (((DWCi_GetMatchCnt()->state != DWC_MATCH_STATE_CL_NN) && (DWCi_GetMatchCnt()->state != DWC_MATCH_STATE_SV_OWN_NN)) || (srcPid != DWCi_GetMatchCnt()->qr2Reservation)) { - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "But already canceled reservation.\n"); - break; - } - - DWCi_GetMatchCnt()->cmdCnt.command = DWC_MATCH_COMMAND_DUMMY; - - if (DWCi_GetMatchCnt()->sbPidList[DWCi_GetMatchCnt()->gt2NumConnection + 1] != srcPid) { - DWCi_GetMatchCnt()->sbPidList[DWCi_GetMatchCnt()->gt2NumConnection + 1] = srcPid; - } - - remoteaddr.sin_addr.s_addr = ip; - remoteaddr.sin_port = SO_HtoNs(port); - - DWCi_GetMatchCnt()->nnInfo.isQR2 = 1; - DWCi_NNCompletedCallback(nr_success, gt2GetSocketSOCKET(*DWCi_GetMatchCnt()->pGt2Socket), &remoteaddr, &DWCi_GetMatchCnt()->nnInfo); - DWCi_GetMatchCnt()->nnFinishTime = 0; - break; - - case DWC_MATCH_COMMAND_NEW_PID_AID: - if ((DWCi_GetMatchCnt()->state != DWC_MATCH_STATE_CL_WAITING) || (srcPid != DWCi_GetMatchCnt()->sbPidList[0])) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "Ignore delayed NEW_PID_AID command.\n"); - break; - } - - profileID = (int)data[0]; - aid = (u8)data[1]; - -#ifdef DWC_LIMIT_FRIENDS_MATCH_VALID - if ((DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_FRIEND) && !DWCi_GetMatchCnt()->distantFriend) { - senddata[0] = (u32)DWCi_IsFriendByIdxList(profileID); - - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "profileID %d is acceptable? - %d.\n", profileID, senddata[0]); - - result = DWCi_SendMatchCommand(DWC_MATCH_COMMAND_FRIEND_ACCEPT, srcPid, srcIP, srcPort, senddata, 1); - - if (DWCi_HandleMatchCommandError(result)) { - return FALSE; - } - } -#endif - - DWCi_GetMatchCnt()->sbPidList[DWCi_GetMatchCnt()->qr2NNFinishCount + 1] = profileID; - DWCi_GetMatchCnt()->aidList[DWCi_GetMatchCnt()->qr2NNFinishCount + 1] = aid; - qr2_send_statechanged(DWCi_GetMatchCnt()->qr2Obj); - - if (DWCi_GetMatchCnt()->newClientCallback) { - DWCi_GetMatchCnt()->newClientCallback(DWCi_GetFriendListIndex(profileID), DWCi_GetMatchCnt()->newClientParam); - } - - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Received new client's profileID = %u & aid = %d.\n", profileID, aid); - break; - - case DWC_MATCH_COMMAND_LINK_CLS_REQ: - if ((DWCi_GetMatchCnt()->state != DWC_MATCH_STATE_CL_WAITING) || (srcPid != DWCi_GetMatchCnt()->sbPidList[0])) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "Ignore delayed LINK_CLS_REQ command.\n"); - break; - } - - profileID = (int)data[0]; - - if (!profileID) { - aidIdx = data[1]; - aid = (u8)data[2]; - - DWCi_GetMatchCnt()->aidList[aidIdx] = aid; - DWCi_GetMatchCnt()->sbPidList[aidIdx] = DWCi_GetMatchCnt()->profileID; - DWCi_PostProcessConnection(DWC_PP_CONNECTION_CL_FINISH_CONNECT); - } - else { - aidIdx = data[1]; - aid = (u8)data[2]; - - if ((DWCi_GetMatchCnt()->sbPidList[aidIdx] == profileID) && (aidIdx == DWCi_GetMatchCnt()->gt2NumConnection - 1)) { - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Resend command %d for delayed command %d.\n", DWC_MATCH_COMMAND_LINK_CLS_SUC, DWC_MATCH_COMMAND_LINK_CLS_REQ); - - result = DWCi_SendMatchCommand(DWC_MATCH_COMMAND_LINK_CLS_SUC, srcPid, DWCi_GetMatchCnt()->qr2IPList[0], DWCi_GetMatchCnt()->qr2PortList[0], (u32 *)&profileID, 1); - - if (DWCi_HandleMatchCommandError(result)) { - return FALSE; - } - - break; - } - - DWCi_GetMatchCnt()->sbPidList[aidIdx] = profileID; - DWCi_GetMatchCnt()->aidList[aidIdx] = aid; - DWCi_GetMatchCnt()->qr2IPList[aidIdx] = data[3]; - DWCi_GetMatchCnt()->qr2PortList[aidIdx] = (u16)data[4]; - DWCi_GetMatchCnt()->searchIP = data[3]; - DWCi_GetMatchCnt()->searchPort = (u16)data[4]; - DWC_Printf(DWC_REPORTFLAG_DEBUG, "Client IP:%x, port:%d\n", DWCi_GetMatchCnt()->searchIP, DWCi_GetMatchCnt()->searchPort); - DWCi_SetMatchStatus(DWC_MATCH_STATE_CL_SEARCH_NN_HOST); - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Next, try to connect to %u.\n", profileID); - - sbError = DWCi_SBUpdateAsync(profileID); - - if (DWCi_HandleSBError(sbError)) { - return FALSE; - } - - DWCi_GetMatchCnt()->cmdTimeoutTime = 0; - DWCi_GetMatchCnt()->cmdResendFlag = FALSE; - } - - break; - case DWC_MATCH_COMMAND_LINK_CLS_SUC: - if ((DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_SV_WAIT_CL_LINK) && (DWCi_GetMatchCnt()->sbPidList[DWCi_GetMatchCnt()->clLinkProgress + 1] == data[0])) { - DWCi_GetMatchCnt()->clLinkProgress++; - DWCi_PostProcessConnection(DWC_PP_CONNECTION_SV_CONNECT); - } - else { - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Ignore delayed command %d.\n", DWC_MATCH_COMMAND_LINK_CLS_SUC); - } - break; - case DWC_MATCH_COMMAND_CLOSE_LINK: - if ((DWCi_GetMatchCnt()->state != DWC_MATCH_STATE_CL_WAITING) && (DWCi_GetMatchCnt()->state != DWC_MATCH_STATE_WAIT_CLOSE)) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "Ignore delayed CLOSE_LINK command.\n"); - break; - } - - if ((DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_ANYBODY) || DWCi_AreAllBuddies(&data[1], data[0])) { - DWCi_GetMatchCnt()->priorProfileID = (int)data[1]; - DWCi_GetMatchCnt()->resvWaitCount = 0; - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Received close command. Next try to %u.\n", data[1]); - } - else { - DWCi_GetMatchCnt()->priorProfileID = 0; - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Received close command. Server %u or its clients are not friends.\n", data[1]); - } - - if (DWCi_GetMatchCnt()->gt2NumConnection) { - gt2CloseAllConnectionsHard(*DWCi_GetMatchCnt()->pGt2Socket); - } - else { - if (DWCi_ResumeMatching()) { - return FALSE; - } - } - break; - case DWC_MATCH_COMMAND_CANCEL: - if (srcPid != DWCi_GetMatchCnt()->sbPidList[0]) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "Ignore delayed CANCEL command.\n"); - break; - } - - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Received cancel command from %u data[0] = %d.\n", srcPid, data[0]); - DWC_Printf(DWC_REPORTFLAG_DEBUG, "numHost nn=%d gt2=%d, state %d\n", DWCi_GetMatchCnt()->qr2NNFinishCount, DWCi_GetMatchCnt()->gt2NumConnection, DWCi_GetMatchCnt()->state); - - if ((DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_ANYBODY) || (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_FRIEND)) { - if (!DWCi_CancelPreConnectedClientProcess(srcPid)) { - return FALSE; - } - } - else if (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_SC_CL) { - DWCi_GetMatchCnt()->cbEventPid = srcPid; - DWCi_CloseAllConnectionsByTimeout(); - DWCi_RestartFromCancel(DWC_MATCH_RESET_ALL); - } - break; - case DWC_MATCH_COMMAND_CANCEL_SYN: - case DWC_MATCH_COMMAND_CANCEL_SYN_ACK: - case DWC_MATCH_COMMAND_CANCEL_ACK: - if (!DWCi_ProcessCancelMatchSynCommand(srcPid, command, data[0])) { - return FALSE; - } - break; - case DWC_MATCH_COMMAND_SC_CLOSE_CL: - if (srcPid != DWCi_GetMatchCnt()->sbPidList[0]) { - return TRUE; - } - - DWC_Printf(DWC_REPORTFLAG_DEBUG, "Close shutdown client.\n"); - - for (i = 0; i < len; i++) { - aid = DWCi_GetAIDFromProfileID((int)data[i], FALSE); - if (aid != 0xff) { - DWC_CloseConnectionHard(aid); - } - } - break; - - case DWC_MATCH_COMMAND_POLL_TIMEOUT: - if (stpOptMinComp && stpOptMinComp->valid && (OS_TicksToMilliSeconds(OS_GetTick() - stpOptMinComp->startTime) >= stpOptMinComp->timeout)) { - senddata[0] = 1; - - DWC_Printf(DWC_REPORTFLAG_MATCH_GT2, "[OPT_MIN_COMP] time is %lu.\n", OS_TicksToMilliSeconds(OS_GetTick() - stpOptMinComp->startTime)); - } - else { - senddata[0] = 0; - } - - result = DWCi_SendMatchCommand(DWC_MATCH_COMMAND_POLL_TO_ACK, srcPid, srcIP, srcPort, senddata, 1); - - if (DWCi_HandleMatchCommandError(result)) { - return FALSE; - } - break; - case DWC_MATCH_COMMAND_POLL_TO_ACK: - if (DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_SV_POLL_TIMEOUT) { - aid = DWCi_GetAIDFromProfileID(srcPid, FALSE); - - if (aid != 0xff) { - stpOptMinComp->recvBit |= 1 << aid; - - if (data[0]) { - stpOptMinComp->timeoutBit |= 1 << aid; - } - } - } - break; - case DWC_MATCH_COMMAND_SC_CONN_BLOCK: - DWCi_StopMatching(DWC_ERROR_MO_SC_CONNECT_BLOCK, 0); - return FALSE; - -#ifdef DWC_LIMIT_FRIENDS_MATCH_VALID - case DWC_MATCH_COMMAND_FRIEND_ACCEPT: - if ((DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_FRIEND) && !DWCi_GetMatchCnt()->distantFriend) { - for (i = 1; i <= DWCi_GetMatchCnt()->gt2NumConnection; i++) { - if (DWCi_GetMatchCnt()->sbPidList[i] == srcPid) { - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "New client was accepted? - %d.\n", data[0]); - - if (!data[0]) { - if ((DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_SV_OWN_NN) || (DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_SV_OWN_GT2)) { - result = DWCi_InvalidateReservation(); - - if (DWCi_HandleMatchCommandError(result)) { - return FALSE; - } - } - - if (DWCi_GetMatchCnt()->nnInfo.cookie) { - NNCancel(DWCi_GetMatchCnt()->nnInfo.cookie); - DWCi_GetMatchCnt()->nnInfo.cookie = 0; - } - - DWCi_RestartFromTimeout(); - } - else { - DWCi_GetMatchCnt()->friendAcceptBit |= 1 << DWCi_GetAIDFromProfileID(srcPid, FALSE); - } - - break; - } - } - } - break; -#endif - case DWC_MATCH_COMMAND_CL_WAIT_POLL: - for (i = 1; i <= DWCi_GetMatchCnt()->gt2NumConnection; i++) { - if (DWCi_GetMatchCnt()->sbPidList[i] == srcPid) { - result = DWCi_SendMatchCommand(DWC_MATCH_COMMAND_SV_KA_TO_CL, srcPid, srcIP, srcPort, NULL, 0); - - if (DWCi_HandleMatchCommandError(result)) { - return FALSE; - } - else { - break; - } - } - } - break; - case DWC_MATCH_COMMAND_SV_KA_TO_CL: - break; - default: - DWC_Printf(DWC_REPORTFLAG_ERROR, "Received unexpected matching command 0x%02x.\n", command); - break; - } - - return TRUE; -} - -static u8 DWCi_CheckResvCommand(int profileID, u32 qr2IP, u16 qr2Port, u32 matchType, BOOL priorFlag) { - u8 sendCommand; - int result; - - switch (DWCi_GetMatchCnt()->qr2MatchType) { - case DWC_MATCH_TYPE_FRIEND: - if (!gpIsBuddy(DWCi_GetMatchCnt()->pGpObj, profileID)) { - sendCommand = DWC_MATCH_COMMAND_DUMMY; - break; - } - -#ifdef DWC_LIMIT_FRIENDS_MATCH_VALID - else if (!DWCi_IsFriendByIdxList(profileID)) { - sendCommand = DWC_MATCH_COMMAND_RESV_DENY; - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "This friend doesn't exist in friendIdxList.\n"); - break; - } -#endif - - case DWC_MATCH_TYPE_ANYBODY: - if ((matchType != DWCi_GetMatchCnt()->qr2MatchType) || (DWCi_GetMatchCnt()->cancelState != DWC_MATCH_CANCEL_STATE_INIT) || (DWCi_GetMatchCnt()->qr2NNFinishCount == DWCi_GetMatchCnt()->qr2NumEntry) || (DWCi_GetMatchCnt()->qr2IsReserved && (DWCi_GetMatchCnt()->qr2Reservation == DWCi_GetMatchCnt()->profileID))) { - sendCommand = DWC_MATCH_COMMAND_RESV_DENY; - - if ((DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_ANYBODY) && !DWCi_GetMatchCnt()->qr2Obj->userstatechangerequested && DWCi_GetMatchCnt()->qr2IsReserved && (DWCi_GetMatchCnt()->qr2Reservation == DWCi_GetMatchCnt()->profileID)) { - qr2_send_statechanged(DWCi_GetMatchCnt()->qr2Obj); - } - } - else if (((DWCi_GetMatchCnt()->state != DWC_MATCH_STATE_CL_SEARCH_HOST) && (DWCi_GetMatchCnt()->state != DWC_MATCH_STATE_CL_WAIT_RESV)) || ((DWCi_GetMatchCnt()->qr2IP == 0) && (DWCi_GetMatchCnt()->qr2Port == 0)) || ((qr2IP == 0) && (qr2Port == 0))) { - sendCommand = DWC_MATCH_COMMAND_RESV_WAIT; - } - else { - if (DWCi_GetMatchCnt()->reqProfileID) { - if (DWCi_GetMatchCnt()->reqProfileID == profileID) { - if (priorFlag || ((DWCi_GetMatchCnt()->profileID < profileID) && (profileID != DWCi_GetMatchCnt()->priorProfileID))) { - sendCommand = DWC_MATCH_COMMAND_RESV_OK; - } - else { - sendCommand = DWC_MATCH_COMMAND_DUMMY; - } - } - else { - if (priorFlag || ((DWCi_GetMatchCnt()->profileID < profileID) && !DWCi_GetMatchCnt()->priorProfileID)) { - result = DWCi_CancelReservation(DWCi_GetMatchCnt()->reqProfileID); - - if (DWCi_HandleMatchCommandError(result)) { - return DWC_MATCH_COMMAND_DUMMY; - } - else { - sendCommand = DWC_MATCH_COMMAND_RESV_OK; - } - } - else { - sendCommand = DWC_MATCH_COMMAND_RESV_DENY; - } - } - } - else { - sendCommand = DWC_MATCH_COMMAND_RESV_OK; - } - } - - break; - - case DWC_MATCH_TYPE_SC_SV: - if (!gpIsBuddy(DWCi_GetMatchCnt()->pGpObj, profileID)) { - sendCommand = DWC_MATCH_COMMAND_DUMMY; - } - else if ((matchType != DWC_MATCH_TYPE_SC_CL) || (DWCi_GetMatchCnt()->qr2NNFinishCount == DWCi_GetMatchCnt()->qr2NumEntry)) { - sendCommand = DWC_MATCH_COMMAND_RESV_DENY; - } - else if ((stOptSCBlock.valid == 1) && (stOptSCBlock.lock == 1)) { - sendCommand = DWC_MATCH_COMMAND_SC_CONN_BLOCK; - } - else if ((DWCi_GetMatchCnt()->state != DWC_MATCH_STATE_SV_WAITING) || ((DWCi_GetMatchCnt()->qr2IP == 0) && (DWCi_GetMatchCnt()->qr2Port == 0)) || ((qr2IP == 0) && (qr2Port == 0))) { - sendCommand = DWC_MATCH_COMMAND_RESV_WAIT; - } - else { - sendCommand = DWC_MATCH_COMMAND_RESV_OK; - } - - break; - } - - return sendCommand; -} - -static int DWCi_ProcessResvOK(int profileID, u32 ip, u16 port) { - u32 senddata[2]; - int result; - int i; - - if (DWCi_GetMatchCnt()->qr2IsReserved && (DWCi_GetMatchCnt()->qr2Reservation == profileID)) { - return 0; - } - - DWCi_GetMatchCnt()->qr2IsReserved = 1; - DWCi_GetMatchCnt()->qr2Reservation = profileID; - DWCi_GetMatchCnt()->cmdResendFlag = FALSE; - DWCi_GetMatchCnt()->cmdTimeoutTime = 0; - - qr2_send_statechanged(DWCi_GetMatchCnt()->qr2Obj); - - DWCi_GetMatchCnt()->reqProfileID = 0; - DWCi_GetMatchCnt()->sbPidList[DWCi_GetMatchCnt()->qr2NNFinishCount + 1] = profileID; - DWCi_GetMatchCnt()->qr2IPList[DWCi_GetMatchCnt()->qr2NNFinishCount + 1] = ip; - DWCi_GetMatchCnt()->qr2PortList[DWCi_GetMatchCnt()->qr2NNFinishCount + 1] = port; - DWCi_GetMatchCnt()->searchIP = ip; - DWCi_GetMatchCnt()->searchPort = port; - DWCi_GetMatchCnt()->aidList[DWCi_GetMatchCnt()->qr2NNFinishCount + 1] = DWCi_GetAIDFromList(); - - senddata[0] = (u32)profileID; - senddata[1] = DWCi_GetMatchCnt()->aidList[DWCi_GetMatchCnt()->qr2NNFinishCount + 1]; - - for (i = 1; i <= DWCi_GetMatchCnt()->qr2NNFinishCount; i++) { - result = DWCi_SendMatchCommand(DWC_MATCH_COMMAND_NEW_PID_AID, DWCi_GetMatchCnt()->sbPidList[i], DWCi_GetMatchCnt()->qr2IPList[i], DWCi_GetMatchCnt()->qr2PortList[i], senddata, 2); - - if (result) { - return result; - } - } - - DWCi_InitOptMinCompParam(TRUE); - - return 0; -} - -static void DWCi_MakeBackupServerData(int profileID, const u32 data[]) { - u32 len; - - len = data[0] + 2; - - if (len > 2) { - MI_CpuCopy32(&data[1], &DWCi_GetMatchCnt()->svDataBak[2], sizeof(u32) * (len - 2)); - } - - DWCi_GetMatchCnt()->svDataBak[0] = len - 1; - DWCi_GetMatchCnt()->svDataBak[1] = (u32)profileID; -} - -static int DWCi_HandleMatchCommandError(int error) { - if (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_ANYBODY) { - return (int)DWCi_HandleSBError((SBError)error); - } - else { - return (int)DWCi_HandleGPError((GPResult)error); - } -} - -static int DWCi_SendResvCommand(int profileID, BOOL delay) { - u8 command; - u32 senddata[3]; - int sendlen; - int result; - SBServer server; - - if (delay || ((DWCi_GetMatchCnt()->qr2IP == 0) && (DWCi_GetMatchCnt()->qr2Port == 0))) { - DWCi_GetMatchCnt()->cmdResendFlag = TRUE; - DWCi_GetMatchCnt()->cmdResendTick = OS_GetTick(); - DWCi_GetMatchCnt()->sbPidList[0] = profileID; - - if (!delay) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "Delay ResvCommand - qr2IP & qr2Port = 0.\n"); - } - - return 0; - } - - if (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_ANYBODY) { - server = ServerBrowserGetServer(DWCi_GetMatchCnt()->sbObj, 0); - DWCi_GetMatchCnt()->sbPidList[0] = SBServerGetIntValue(server, DWC_QR2_PID_KEY_STR, 0); - DWCi_GetMatchCnt()->qr2IPList[0] = SBServerGetPublicInetAddress(server); - DWCi_GetMatchCnt()->qr2PortList[0] = SBServerGetPublicQueryPort(server); - - DWCi_GetMatchCnt()->reqProfileID = DWCi_GetMatchCnt()->sbPidList[0]; - sendlen = 1; - } - else { - if (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_FRIEND) { - DWCi_GetMatchCnt()->sbPidList[0] = profileID; - } - - DWCi_GetMatchCnt()->reqProfileID = profileID; - - senddata[1] = DWCi_GetMatchCnt()->qr2IP; - senddata[2] = DWCi_GetMatchCnt()->qr2Port; - sendlen = 3; - } - - DWCi_GetMatchCnt()->cmdTimeoutTime = DWC_MATCH_CMD_RESV_TIMEOUT_MSEC; - DWCi_GetMatchCnt()->cmdTimeoutStartTick = OS_GetTick(); - DWCi_GetMatchCnt()->cmdResendFlag = FALSE; - - if (DWCi_GetMatchCnt()->priorProfileID) { - command = DWC_MATCH_COMMAND_RESV_PRIOR; - } - else { - command = DWC_MATCH_COMMAND_RESERVATION; - } - - senddata[0] = DWCi_GetMatchCnt()->qr2MatchType; - - result = DWCi_SendMatchCommand(command, profileID, DWCi_GetMatchCnt()->qr2IPList[0], DWCi_GetMatchCnt()->qr2PortList[0], senddata, sendlen); - - return result; -} - -static int DWCi_SendResvCommandToFriend(BOOL delay, BOOL init, int resendPid) { - char version[12]; - char numEntry[4]; - char distantFriend[2]; - int profileID; - int startIdx = init ? DWCi_GetMatchCnt()->friendCount :(DWCi_GetMatchCnt()->friendCount < DWCi_GetMatchCnt()->friendIdxListLen - 1) ? DWCi_GetMatchCnt()->friendCount + 1 : 0; - int buddyIdx; - int initFinished = 0; - int versionLen, numEntryLen, distantFriendLen; - int i; - GPBuddyStatus status; - GPResult gpResult; - - while (1) { - if (!init || initFinished) { - DWCi_GetMatchCnt()->friendCount++; - - if (DWCi_GetMatchCnt()->friendCount >= DWCi_GetMatchCnt()->friendIdxListLen) { - DWCi_GetMatchCnt()->friendCount = 0; - } - } - - if (initFinished) { - if (DWCi_GetMatchCnt()->friendCount == startIdx) { - DWCi_GetMatchCnt()->cmdTimeoutTime = DWC_MATCH_CMD_RESEND_INTERVAL_MSEC; - DWCi_GetMatchCnt()->cmdTimeoutStartTick = OS_GetTick(); - - DWCi_GetMatchCnt()->cmdResendFlag = FALSE; - - return 0; - } - } - - initFinished = 1; - - profileID = DWC_GetGsProfileId(DWCi_GetUserData(), &DWCi_GetMatchCnt()->friendList[DWCi_GetMatchCnt()->friendIdxList[DWCi_GetMatchCnt()->friendCount]]); - -#ifdef DWC_MATCH_ACCEPT_NO_FRIEND - if ((profileID == 0) || (profileID == -1)) { - continue; - } - - if (!DWCi_Acc_IsValidFriendData(&DWCi_GetMatchCnt()->friendList[DWCi_GetMatchCnt()->friendIdxList[DWCi_GetMatchCnt()->friendCount]])) { - continue; - } -#endif - - for (i = 1; i <= DWCi_GetMatchCnt()->gt2NumConnection; i++) { - if (DWCi_GetMatchCnt()->sbPidList[i] == profileID) { - break; - } - } - - if (i > DWCi_GetMatchCnt()->gt2NumConnection) { - gpResult = gpGetBuddyIndex(DWCi_GetMatchCnt()->pGpObj, profileID, &buddyIdx); - gpResult |= gpGetBuddyStatus(DWCi_GetMatchCnt()->pGpObj, buddyIdx, &status); - - if (!gpResult && (status.status == DWC_STATUS_MATCH_FRIEND)) { - versionLen = DWC_GetCommonValueString(DWC_GP_SSTR_KEY_MATCH_VERSION, version, status.statusString, '/'); - numEntryLen = DWC_GetCommonValueString(DWC_GP_SSTR_KEY_MATCH_FRIEND_NUM, numEntry, status.statusString, '/'); - distantFriendLen = DWC_GetCommonValueString(DWC_GP_SSTR_KEY_DISTANT_FRIEND, distantFriend, status.statusString, '/'); - - if ((versionLen > 0) && (numEntryLen > 0) && (distantFriendLen > 0) && (strtoul(version, NULL, 10) == DWC_MATCHING_VERSION) && (strtoul(numEntry, NULL, 10) == DWCi_GetMatchCnt()->qr2NumEntry)) { - break; - } - } - } - } - - if (profileID == resendPid) { - delay = TRUE; - } - - return DWCi_SendResvCommand(profileID, delay); -} - -static BOOL DWCi_RetryReserving(int resendPid) { - SBError sbError; - int result; - - DWCi_GetMatchCnt()->priorProfileID = 0; - DWCi_GetMatchCnt()->reqProfileID = 0; - DWCi_GetMatchCnt()->resvWaitCount = 0; - DWCi_GetMatchCnt()->cmdTimeoutStartTick = OS_GetTick(); - - if (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_ANYBODY) { - DWCi_SetMatchStatus(DWC_MATCH_STATE_CL_SEARCH_HOST); - - sbError = DWCi_SBUpdateAsync(0); - - if (DWCi_HandleSBError(sbError)) { - return FALSE; - } - } - else if (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_FRIEND) { - result = DWCi_SendResvCommandToFriend(FALSE, FALSE, resendPid); - - if (DWCi_HandleMatchCommandError(result)) { - return FALSE; - } - } - else if (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_SC_CL) { - DWCi_StopMatching(DWC_ERROR_NETWORK, DWC_ECODE_SEQ_MATCH + DWC_ECODE_TYPE_OTHER); - - return FALSE; - } - - return TRUE; -} - -static int DWCi_CancelReservation(int profileID) { - int result; - - result = DWCi_SendMatchCommand(DWC_MATCH_COMMAND_RESV_CANCEL, profileID, DWCi_GetMatchCnt()->qr2IPList[0], DWCi_GetMatchCnt()->qr2PortList[0], NULL, 0); - DWCi_GetMatchCnt()->reqProfileID = 0; - - return result; -} - -static BOOL DWCi_CancelPreConnectedServerProcess(int clientPid) { - int i; - BOOL isServer; - - if (DWCi_GetMatchCnt()->qr2IsReserved && (DWCi_GetMatchCnt()->qr2Reservation == DWCi_GetMatchCnt()->profileID)) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "DWCi_CancelPreConnectedServerProcess : client\n"); - isServer = FALSE; - } - else { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "DWCi_CancelPreConnectedServerProcess : server\n"); - isServer = TRUE; - } - - if (isServer) { - DWCi_GetMatchCnt()->qr2IsReserved = 0; - DWCi_GetMatchCnt()->qr2Reservation = 0; - qr2_send_statechanged(DWCi_GetMatchCnt()->qr2Obj); - } - - if (DWCi_GetMatchCnt()->gt2NumConnection < DWC_MAX_CONNECTIONS - 1) { - DWCi_GetMatchCnt()->sbPidList[DWCi_GetMatchCnt()->gt2NumConnection + 1] = 0; - } - - DWCi_GetMatchCnt()->cmdCnt.command = DWC_MATCH_COMMAND_DUMMY; - - if (DWCi_GetMatchCnt()->nnInfo.cookie) { - NNCancel(DWCi_GetMatchCnt()->nnInfo.cookie); - DWCi_GetMatchCnt()->nnInfo.cookie = 0; - } - - DWCi_GetMatchCnt()->qr2NNFinishCount = (u8)DWCi_GetMatchCnt()->gt2NumConnection; - DWCi_GetMatchCnt()->reqProfileID = 0; - - if (!isServer) { - if (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_SC_CL) { - } - else { - DWCi_RestartFromTimeout(); - } - } - else if (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_ANYBODY) { - DWCi_SetMatchStatus(DWC_MATCH_STATE_CL_SEARCH_HOST); - DWCi_GetMatchCnt()->sbUpdateFlag = DWC_SB_UPDATE_INTERVAL_LONG; - DWCi_GetMatchCnt()->sbUpdateTick = OS_GetTick(); - } - else if (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_FRIEND) { - DWCi_SetMatchStatus(DWC_MATCH_STATE_CL_WAIT_RESV); - (void)DWCi_SendResvCommandToFriend(TRUE, FALSE, 0); - } - else if (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_SC_SV) { - DWCi_SetMatchStatus(DWC_MATCH_STATE_SV_CANCEL_SYN); - DWCi_GetMatchCnt()->cancelSynAckBit = 0; - DWCi_GetMatchCnt()->cancelBaseLatency = 0; - DWCi_CloseCancelHostAsync(clientPid); - - for (i = 1; i <= DWCi_GetMatchCnt()->gt2NumConnection; i++) { - if (!DWCi_SendCancelMatchSynCommand(DWCi_GetMatchCnt()->sbPidList[i], DWC_MATCH_COMMAND_CANCEL_SYN)) { - return FALSE; - } - } - - if (DWCi_GetMatchCnt()->gt2NumConnection == 0) { - DWCi_RestartFromCancel(DWC_MATCH_RESET_CONTINUE); - } - } - - return TRUE; -} - -static BOOL DWCi_CancelPreConnectedClientProcess(int serverPid) { -#pragma unused(serverPid) - BOOL result = TRUE; - - if (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_SC_CL) { - if (DWCi_GetMatchCnt()->gt2NumConnection) { - DWCi_CloseAllConnectionsByTimeout(); - } - - DWCi_StopMatching(DWC_ERROR_NETWORK, DWC_ECODE_SEQ_MATCH + DWC_ECODE_TYPE_SC_CL_FAIL); - - return FALSE; - } - - DWCi_GetMatchCnt()->qr2NNFinishCount = (u8)DWCi_GetMatchCnt()->gt2NumConnection; - DWCi_GetMatchCnt()->priorProfileID = 0; - - if (DWCi_GetMatchCnt()->nnInfo.cookie) { - NNCancel(DWCi_GetMatchCnt()->nnInfo.cookie); - DWCi_GetMatchCnt()->nnInfo.cookie = 0; - } - - if (DWCi_GetMatchCnt()->gt2NumConnection) { - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Close all connection and restart matching.\n"); - DWCi_RestartFromTimeout(); - } - else { - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Cancel and restart client process.\n"); - DWCi_SetMatchStatus(DWC_MATCH_STATE_CL_WAIT_RESV); - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Cancel and retry to reserve.\n"); - - result = DWCi_RetryReserving(0); - } - - return result; -} - -static int DWCi_ChangeToClient(void) { - int result; - int i; - - for (i = 1; i <= DWCi_GetMatchCnt()->gt2NumConnection; i++) { - result = DWCi_SendMatchCommand(DWC_MATCH_COMMAND_CLOSE_LINK, DWCi_GetMatchCnt()->sbPidList[i], DWCi_GetMatchCnt()->qr2IPList[i], DWCi_GetMatchCnt()->qr2PortList[i], DWCi_GetMatchCnt()->svDataBak, (int)(DWCi_GetMatchCnt()->svDataBak[0] + 1)); - - if (result) { - return result; - } - } - - DWCi_GetMatchCnt()->qr2IsReserved = 0; - DWCi_GetMatchCnt()->qr2Reservation = 0; - DWCi_GetMatchCnt()->closeState = DWC_MATCH_CLOSE_STATE_CHANGE_TO_CLIENT; - - gt2CloseAllConnectionsHard(*DWCi_GetMatchCnt()->pGt2Socket); - - DWCi_GetMatchCnt()->closeState = DWC_MATCH_CLOSE_STATE_INIT; - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Closed all connections. Begin NN to %u\n", DWCi_GetMatchCnt()->reqProfileID); - - return 0; -} - -static void DWCi_PostProcessConnection(DWCMatchPpConnectionType type) { - u32 senddata[5]; - int sendlen = 3; - int result; - int i; - BOOL sbClear = FALSE; - GPResult gpResult; - - switch (type) { - case DWC_PP_CONNECTION_SV_CONNECT: - - if (DWCi_GetMatchCnt()->clLinkProgress < DWCi_GetMatchCnt()->gt2NumConnection - 1) { - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Send client-client link request.\n"); - - DWCi_SetMatchStatus(DWC_MATCH_STATE_SV_WAIT_CL_LINK); - - senddata[0] = (u32)DWCi_GetMatchCnt()->sbPidList[DWCi_GetMatchCnt()->clLinkProgress + 1]; - senddata[1] = (u32)(DWCi_GetMatchCnt()->clLinkProgress + 1); - senddata[2] = DWCi_GetMatchCnt()->aidList[DWCi_GetMatchCnt()->clLinkProgress + 1]; - - senddata[3] = DWCi_GetMatchCnt()->qr2IPList[DWCi_GetMatchCnt()->clLinkProgress + 1]; - senddata[4] = DWCi_GetMatchCnt()->qr2PortList[DWCi_GetMatchCnt()->clLinkProgress + 1]; - sendlen = 5; - } - else { - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Tell new client completion of matching.\n"); - DWCi_GetMatchCnt()->qr2IsReserved = 0; - DWCi_GetMatchCnt()->qr2Reservation = 0; - - qr2_send_statechanged(DWCi_GetMatchCnt()->qr2Obj); - - if (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_ANYBODY) { - DWCi_SetMatchStatus(DWC_MATCH_STATE_CL_SEARCH_HOST); - } - else if (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_FRIEND) { - DWCi_SetMatchStatus(DWC_MATCH_STATE_CL_WAIT_RESV); - } - else { - DWCi_SetMatchStatus(DWC_MATCH_STATE_SV_WAITING); - } - - DWCi_GetMatchCnt()->clLinkProgress = 0; - - if ((DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_SC_SV) || (DWCi_GetMatchCnt()->gt2NumConnection == DWCi_GetMatchCnt()->qr2NumEntry)) { - if (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_SC_SV) { - DWCi_GetMatchCnt()->cbEventPid = DWCi_GetMatchCnt()->sbPidList[DWCi_GetMatchCnt()->gt2NumConnection]; - } - else { - DWCi_GetMatchCnt()->cbEventPid = 0; - DWCi_GetMatchCnt()->sbPidList[0] = DWCi_GetMatchCnt()->profileID; - } - - DWCi_SetMatchStatus(DWC_MATCH_STATE_SV_SYN); - DWCi_GetMatchCnt()->synAckBit = 0; - - for (i = 1; i <= DWCi_GetMatchCnt()->gt2NumConnection; i++) { - DWCi_SendMatchSynPacket(DWCi_GetMatchCnt()->aidList[i], DWC_SEND_TYPE_MATCH_SYN); - } - } - else { - senddata[0] = 0; - senddata[1] = (u8)DWCi_GetMatchCnt()->gt2NumConnection; - senddata[2] = DWCi_GetMatchCnt()->aidList[DWCi_GetMatchCnt()->gt2NumConnection]; - - if (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_ANYBODY) { - DWCi_GetMatchCnt()->sbUpdateFlag = DWC_SB_UPDATE_INTERVAL_LONG; - DWCi_GetMatchCnt()->sbUpdateTick = OS_GetTick(); - } - else if (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_FRIEND) { - (void)DWCi_SendResvCommandToFriend(TRUE, FALSE, 0); - -#ifdef DWC_LIMIT_FRIENDS_MATCH_VALID - if (!DWCi_GetMatchCnt()->distantFriend && (DWCi_GetMatchCnt()->gt2NumConnection >= 2)) { - if (DWCi_GetMatchCnt()->friendAcceptBit != (DWCi_GetAIDBitmask(FALSE) & ~(1 << DWCi_GetMatchCnt()->aidList[DWCi_GetMatchCnt()->gt2NumConnection]))) { - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "FRIEND_ACCEPT command droped.\n"); - DWCi_RestartFromTimeout(); - break; - } - } -#endif - } - } - - if (DWCi_GetMatchCnt()->qr2MatchType != DWC_MATCH_TYPE_SC_SV) { - sbClear = TRUE; - } - } - - if (DWCi_GetMatchCnt()->state != DWC_MATCH_STATE_SV_SYN) { - result = DWCi_SendMatchCommand(DWC_MATCH_COMMAND_LINK_CLS_REQ, DWCi_GetMatchCnt()->sbPidList[DWCi_GetMatchCnt()->gt2NumConnection], DWCi_GetMatchCnt()->qr2IPList[DWCi_GetMatchCnt()->gt2NumConnection], DWCi_GetMatchCnt()->qr2PortList[DWCi_GetMatchCnt()->gt2NumConnection], senddata, sendlen); - - if (DWCi_HandleMatchCommandError(result)) { - return; - } - - DWCi_GetMatchCnt()->cmdCnt.count = 0; - } - break; - case DWC_PP_CONNECTION_CL_GT2_CONNECT: - DWCi_SetMatchStatus(DWC_MATCH_STATE_CL_WAITING); - - if (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_SC_CL) { - DWCi_GetMatchCnt()->cbEventPid = DWCi_GetMatchCnt()->sbPidList[DWCi_GetMatchCnt()->gt2NumConnection]; - } - - sbClear = TRUE; - break; - case DWC_PP_CONNECTION_CL_GT2_ACCEPT: - DWCi_SetMatchStatus(DWC_MATCH_STATE_CL_WAITING); - - if ((DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_ANYBODY) || (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_FRIEND)) { - DWCi_GetMatchCnt()->qr2IsReserved = 1; - DWCi_GetMatchCnt()->qr2Reservation = DWCi_GetMatchCnt()->profileID; - } - - DWCi_InitClWaitTimeout(); - - if (DWCi_GetMatchCnt()->gt2NumConnection > 1) { - result = DWCi_SendMatchCommand(DWC_MATCH_COMMAND_LINK_CLS_SUC, DWCi_GetMatchCnt()->sbPidList[0], DWCi_GetMatchCnt()->qr2IPList[0], DWCi_GetMatchCnt()->qr2PortList[0], (u32 *)&DWCi_GetMatchCnt()->sbPidList[DWCi_GetMatchCnt()->gt2NumConnection - 1], 1); - if (DWCi_HandleMatchCommandError(result)) { - return; - } - } - break; - case DWC_PP_CONNECTION_CL_FINISH_CONNECT: - DWCi_SetMatchStatus(DWC_MATCH_STATE_CL_WAITING); - DWCi_InitClWaitTimeout(); - DWCi_GetMatchCnt()->cbEventPid = 0; - sbClear = TRUE; - break; - - case DWC_PP_CONNECTION_SYN_FINISH: - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Completed matching!\n"); - - if (DWCi_GetMatchCnt()->qr2MatchType != DWC_MATCH_TYPE_SC_SV) { - (void)DWCi_SetGPStatus(DWC_STATUS_PLAYING, "", NULL); - } - - DWCi_GetMatchCnt()->matchedCallback(DWC_ERROR_NONE, FALSE, DWCi_GetMatchCnt()->cbEventPid ? FALSE : TRUE, FALSE, DWCi_GetFriendListIndex(DWCi_GetMatchCnt()->cbEventPid), DWCi_GetMatchCnt()->matchedParam); - - if ((DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_ANYBODY) || (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_FRIEND)) { - DWCi_CloseMatching(); - } - else { -#ifndef DWC_BUG_WIFI_DELAY_SEND - if (DWCi_GetMatchCnt()->sbObj) { - ServerBrowserFree(DWCi_GetMatchCnt()->sbObj); - DWCi_GetMatchCnt()->sbObj = NULL; - } -#endif - - DWCi_NNFreeNegotiateList(); - - if (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_SC_SV) { - gpResult = DWCi_GPSetServerStatus(); - - if (DWCi_HandleGPError(gpResult)) { - return; - } - - if (stOptSCBlock.valid == 1) { - stOptSCBlock.lock = 1; - DWC_Printf(DWC_REPORTFLAG_DEBUG, "[OPT_SC_BLOCK] Connect block start!\n"); - } - - DWCi_SetMatchStatus(DWC_MATCH_STATE_SV_WAITING); - } - else { - DWCi_SetMatchStatus(DWC_MATCH_STATE_CL_WAITING); - } - - DWCi_GetMatchCnt()->cbEventPid = 0; - } - - DWCi_GetMatchCnt()->cancelState = DWC_MATCH_CANCEL_STATE_INIT; - break; - } - -#ifndef DWC_BUG_WIFI_DELAY_SEND -#if 1 - if (sbClear && (DWCi_GetMatchCnt()->qr2MatchType != DWC_MATCH_TYPE_SC_CL)) { - ServerBrowserClear(DWCi_GetMatchCnt()->sbObj); - } -#else - if (sbClear && (DWCi_GetMatchCnt()->qr2MatchType != DWC_MATCH_TYPE_SC_CL) && (ServerBrowserState(DWCi_GetMatchCnt()->sbObj) != sb_disconnected)) { - ServerBrowserClear(DWCi_GetMatchCnt()->sbObj); - } -#endif -#endif -} - -static BOOL DWCi_AreAllBuddies(const u32 pidList[], u32 pidListLen) { - int i; - - if (DWCi_GetMatchCnt()->distantFriend && (DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_CL_WAIT_RESV)) { - return TRUE; - } - - for (i = 0; i < pidListLen; i++) { -#ifdef DWC_LIMIT_FRIENDS_MATCH_VALID - if (!DWCi_IsFriendByIdxList((int)pidList[i])) { - return FALSE; - } -#else - if (!gpIsBuddy(DWCi_GetMatchCnt()->pGpObj, (int)pidList[i])) { - return FALSE; - } -#endif - - if (DWCi_GetMatchCnt()->distantFriend && (DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_CL_WAITING)) { - return TRUE; - } - } - - return TRUE; -} - -static void DWCi_DoCancelMatching(void) { - u32 senddata; - int result; - - DWC_Printf(DWC_REPORTFLAG_DEBUG, "CANCEL! state %d, numHost nn=%d gt2=%d.\n", DWCi_GetMatchCnt()->state, DWCi_GetMatchCnt()->qr2NNFinishCount, DWCi_GetMatchCnt()->gt2NumConnection); - DWCi_GetMatchCnt()->cbEventPid = 0; - - if (DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_CL_SEARCH_OWN) { - DWCi_FinishCancelMatching(); - - return; - } - - DWCi_GetMatchCnt()->cancelState = DWC_MATCH_CANCEL_STATE_EXEC; - - if (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_SC_CL) { - senddata = 0; - - DWCi_GetMatchCnt()->cancelState = DWC_MATCH_CANCEL_STATE_EXEC; - - if (DWCi_GetMatchCnt()->gt2NumConnection) { - gt2CloseAllConnectionsHard(*DWCi_GetMatchCnt()->pGt2Socket); - } - else { - result = DWCi_CancelReservation(DWCi_GetMatchCnt()->sbPidList[0]); - - if (DWCi_HandleMatchCommandError(result)) { - return; - } - } - - DWCi_FinishCancelMatching(); - - return; - } - - if ((DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_CL_WAIT_RESV) || (DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_CL_SEARCH_NN_HOST) || (DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_CL_NN) || (DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_CL_GT2) || (DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_SV_OWN_NN) || (DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_SV_OWN_GT2)) { - if (DWCi_GetMatchCnt()->reqProfileID) { - result = DWCi_CancelReservation(DWCi_GetMatchCnt()->sbPidList[0]); - - if (DWCi_HandleMatchCommandError(result)) { - return; - } - } - - result = DWCi_InvalidateReservation(); - - if (DWCi_HandleMatchCommandError(result)) { - return; - } - } - - if (DWCi_GetMatchCnt()->nnInfo.cookie) { - NNCancel(DWCi_GetMatchCnt()->nnInfo.cookie); - DWCi_GetMatchCnt()->nnInfo.cookie = 0; - } - - if (DWCi_GetMatchCnt()->gt2NumConnection) { - DWCi_GetMatchCnt()->cancelState = DWC_MATCH_CANCEL_STATE_EXEC; - - gt2CloseAllConnectionsHard(*DWCi_GetMatchCnt()->pGt2Socket); - } - - DWCi_FinishCancelMatching(); -} - -static void DWCi_FinishCancelMatching(void) { - GPResult gpResult; - - gpResult = DWCi_SetGPStatus(DWC_STATUS_ONLINE, "", NULL); - - if (DWCi_HandleGPError(gpResult)) { - return; - } - - DWCi_CloseMatching(); - DWCi_GetMatchCnt()->matchedCallback(DWC_ERROR_NONE, TRUE, DWCi_GetMatchCnt()->cbEventPid ? FALSE : TRUE, DWCi_GetMatchCnt()->cbEventPid ? TRUE : ((DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_SC_SV) ? TRUE : FALSE), DWCi_GetFriendListIndex(DWCi_GetMatchCnt()->cbEventPid), DWCi_GetMatchCnt()->matchedParam); - DWCi_GetMatchCnt()->cancelState = DWC_MATCH_CANCEL_STATE_INIT; -} - -static int DWCi_InvalidateReservation(void) { - u32 senddata = 0; - int result = 0; - - if (DWCi_GetMatchCnt()->qr2IsReserved && DWCi_GetMatchCnt()->qr2Reservation && (DWCi_GetMatchCnt()->qr2Reservation != DWCi_GetMatchCnt()->profileID)) { - result = DWCi_SendMatchCommand(DWC_MATCH_COMMAND_CANCEL, DWCi_GetMatchCnt()->qr2Reservation, DWCi_GetMatchCnt()->qr2IPList[DWCi_GetMatchCnt()->gt2NumConnection + 1], DWCi_GetMatchCnt()->qr2PortList[DWCi_GetMatchCnt()->gt2NumConnection + 1], &senddata, 1); - - DWCi_GetMatchCnt()->qr2IsReserved = 0; - DWCi_GetMatchCnt()->qr2Reservation = 0; - - } - - return result; -} - -static void DWCi_RestartFromCancel(DWCMatchResetLevel level) { - SBError sbError; - - if (level == DWC_MATCH_RESET_ALL) { - DWCi_FinishCancelMatching(); - } - else { - DWCi_ResetMatchParam(level); - - if ((DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_SC_SV) || (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_SC_CL)) { - DWCi_GetMatchCnt()->matchedCallback(DWC_ERROR_NONE, TRUE, DWCi_GetMatchCnt()->cbEventPid ? FALSE : TRUE, FALSE, DWCi_GetFriendListIndex(DWCi_GetMatchCnt()->cbEventPid), DWCi_GetMatchCnt()->matchedParam); - } - else if (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_ANYBODY) { - if (level == DWC_MATCH_RESET_RESTART) { - sbError = DWCi_SBUpdateAsync(0); - - if (DWCi_HandleSBError(sbError)) { - return; - } - } - } - else if (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_FRIEND) { - if (level == DWC_MATCH_RESET_RESTART) { - (void)DWCi_SendResvCommandToFriend(FALSE, FALSE, 0); - } - } - else { - DWC_Printf(DWC_REPORTFLAG_ERROR, "ERROR - DWCi_RestartFromCancel : matchType %d, level %d\n", DWCi_GetMatchCnt()->qr2MatchType, level); - } - } -} - -static void DWCi_RestartFromTimeout(void) { - if ((DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_SC_SV) || (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_SC_CL)) { - DWC_Printf(DWC_REPORTFLAG_WARNING, "DWCi_RestartFromTimeout() shouldn't be called.\n"); - - return; - } - - DWCi_CloseAllConnectionsByTimeout(); - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Closed all connections and restart matching.\n"); - DWCi_RestartFromCancel(DWC_MATCH_RESET_RESTART); -} - -static int DWCi_ResumeMatching(void) { - SBError sbError; - int result; - - DWCi_GetMatchCnt()->qr2IsReserved = 0; - DWCi_GetMatchCnt()->qr2Reservation = 0; - DWCi_GetMatchCnt()->closeState = DWC_MATCH_CLOSE_STATE_INIT; - - if (DWCi_GetMatchCnt()->priorProfileID) { - if (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_ANYBODY) { - DWCi_SetMatchStatus(DWC_MATCH_STATE_CL_SEARCH_HOST); - - sbError = DWCi_SBUpdateAsync(0); - - if (DWCi_HandleSBError(sbError)) { - return sbError; - } - } - else if (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_FRIEND) { - DWCi_SetMatchStatus(DWC_MATCH_STATE_CL_WAIT_RESV); - - result = DWCi_SendResvCommand(DWCi_GetMatchCnt()->priorProfileID, FALSE); - - if (DWCi_HandleMatchCommandError(result)) { - return result; - } - } - } - else { - DWCi_RestartFromCancel(DWC_MATCH_RESET_RESTART); - } - - return 0; -} - -static BOOL DWCi_CloseCancelHostAsync(int profileID) { - BOOL ret; - GT2Connection *connection; - - DWCi_GetMatchCnt()->cbEventPid = profileID; - - connection = DWCi_GetGT2ConnectionByProfileID(profileID, DWCi_GetMatchCnt()->gt2NumConnection + 1); - - if (connection) { - DWCi_GetMatchCnt()->closeState = DWC_MATCH_CLOSE_STATE_TIMEOUT; - gt2CloseConnectionHard(*connection); - DWCi_GetMatchCnt()->closeState = DWC_MATCH_CLOSE_STATE_INIT; - ret = TRUE; - } - else { - (void)DWCi_DeleteHostByProfileID(profileID, DWCi_GetMatchCnt()->gt2NumConnection + 1); - ret = FALSE; - } - - return ret; -} - -static void DWCi_CloseAllConnectionsByTimeout(void) { - DWCi_GetMatchCnt()->closeState = DWC_MATCH_CLOSE_STATE_TIMEOUT; - gt2CloseAllConnectionsHard(*DWCi_GetMatchCnt()->pGt2Socket); - DWCi_GetMatchCnt()->closeState = DWC_MATCH_CLOSE_STATE_INIT; -} - -static BOOL DWCi_CloseShutdownClientSC(u32 bitmap) { - u8 aid; - int senddata[DWC_MAX_CONNECTIONS]; - int senddataLen = 0; - int validPid[DWC_MAX_CONNECTIONS]; - int validPidLen = 0; - int result; - int i; - - for (i = 1; i <= DWCi_GetMatchCnt()->gt2NumConnection; i++) { - if (bitmap & (1 << DWCi_GetMatchCnt()->aidList[i])) { - validPid[validPidLen] = DWCi_GetMatchCnt()->sbPidList[i]; - validPidLen++; - } - else { - senddata[senddataLen] = DWCi_GetMatchCnt()->sbPidList[i]; - senddataLen++; - } - } - - for (i = 0; i < validPidLen; i++) { - result = DWCi_SendMatchCommand(DWC_MATCH_COMMAND_SC_CLOSE_CL, validPid[i], 0, 0, (u32 *)senddata, senddataLen); - - if (DWCi_HandleMatchCommandError(result)) { - return FALSE; - } - } - - DWCi_GetMatchCnt()->closeState = DWC_MATCH_CLOSE_STATE_TIMEOUT; - - for (i = 0; i < senddataLen; i++) { - aid = DWCi_GetAIDFromProfileID(senddata[i], FALSE); - - if (aid != 0xff) { - DWC_CloseConnectionHard(aid); - } - } - - DWCi_GetMatchCnt()->closeState = DWC_MATCH_CLOSE_STATE_INIT; - - return TRUE; -} - -static void DWCi_SendMatchSynPacket(u8 aid, u16 type) { - u8 i; - u8 senddata[4]; - - DWC_Printf(DWC_REPORTFLAG_MATCH_GT2, "Sent SYN %d packet to aid %d.\n", type - DWC_SEND_TYPE_MATCH_SYN, aid); - - switch (type) { - case DWC_SEND_TYPE_MATCH_SYN: - if (aid == DWCi_GetMatchCnt()->aidList[DWCi_GetMatchCnt()->gt2NumConnection]) { - senddata[0] = 1; - } - else { - senddata[0] = 0; - } - - for (i = 1; i <= DWCi_GetMatchCnt()->gt2NumConnection; i++) { - if (aid == DWCi_GetMatchCnt()->aidList[i]) { - senddata[1] = i; - senddata[2] = aid; - break; - } - } - break; - case DWC_SEND_TYPE_MATCH_SYN_ACK: - senddata[0] = (u8)(DWCi_GetMatchCnt()->baseLatency & 0xff); - senddata[1] = (u8)((DWCi_GetMatchCnt()->baseLatency >> 8) & 0xff); - break; - } - - DWCi_SendReliable(type, aid, senddata, DWC_MATCH_SYN_DATA_BODY_SIZE); - DWCi_GetMatchCnt()->lastSynSent = OS_GetTick(); -} - -static BOOL DWCi_ProcessMatchSynTimeout(void) { - u64 passTime; - int i; - - if ((DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_CL_SYN) || (DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_SV_SYN) || (DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_SV_SYN_WAIT)) { - passTime = OS_TicksToMilliSeconds(OS_GetTick() - DWCi_GetMatchCnt()->lastSynSent); - } - else { - return TRUE; - } - - switch (DWCi_GetMatchCnt()->state) { - case DWC_MATCH_STATE_CL_SYN: - if (passTime > DWC_MATCH_SYN_ACK_WAIT_TIME) { - DWC_Printf(DWC_REPORTFLAG_MATCH_GT2, "[SYN] No ACK from server %d/%d.\n", DWCi_GetMatchCnt()->clWaitTimeoutCount, DWC_MATCH_CMD_RETRY_MAX); - - if ((DWC_GetState() == DWC_STATE_MATCHING) && (DWCi_GetMatchCnt()->clWaitTimeoutCount >= DWC_MATCH_CMD_RETRY_MAX)) { - DWC_Printf(DWC_REPORTFLAG_MATCH_GT2, "Timeout: [SYN] Connection to server was shut down.\n"); - - if (!DWCi_CancelPreConnectedClientProcess(DWCi_GetMatchCnt()->sbPidList[0])) { - return FALSE; - } - } - else { - DWCi_GetMatchCnt()->clWaitTimeoutCount++; - DWCi_SendMatchSynPacket(DWCi_GetMatchCnt()->aidList[0], DWC_SEND_TYPE_MATCH_SYN_ACK); - } - } - break; - case DWC_MATCH_STATE_SV_SYN: - if (passTime > DWC_MATCH_SYN_ACK_WAIT_TIME) { - DWCi_GetMatchCnt()->synResendCount++; - - if (DWCi_GetMatchCnt()->synResendCount > DWC_MATCH_CMD_RETRY_MAX) { - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Timeout: wait SYN-ACK (aidbitmap 0x%x). Restart matching.\n", DWCi_GetMatchCnt()->synAckBit); - - if ((DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_ANYBODY) || (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_FRIEND)) { - DWCi_CloseAllConnectionsByTimeout(); - DWCi_RestartFromCancel(DWC_MATCH_RESET_RESTART); - } - else { - if (!DWCi_CloseShutdownClientSC(DWCi_GetMatchCnt()->synAckBit)) { - return FALSE; - } - - if (DWCi_GetMatchCnt()->gt2NumConnection != 0) { - DWCi_GetMatchCnt()->synResendCount = 0; - DWCi_GetMatchCnt()->lastSynSent = OS_GetTick(); - } - else { - if (!DWCi_CancelPreConnectedServerProcess(DWCi_GetMatchCnt()->cbEventPid)) { - return FALSE; - } - } - } - } - else { - for (i = 1; i <= DWCi_GetMatchCnt()->gt2NumConnection; i++) { - if (!(DWCi_GetMatchCnt()->synAckBit & (1 << DWCi_GetMatchCnt()->aidList[i]))) { - DWCi_SendMatchSynPacket(DWCi_GetMatchCnt()->aidList[i], DWC_SEND_TYPE_MATCH_SYN); - } - } - } - } - - break; - - case DWC_MATCH_STATE_SV_SYN_WAIT: - if (passTime > DWCi_GetMatchCnt()->baseLatency) { - DWCi_PostProcessConnection(DWC_PP_CONNECTION_SYN_FINISH); - } - - break; - } - - return TRUE; -} - -static BOOL DWCi_SendCancelMatchSynCommand(int profileID, u8 command) { - u32 senddata; - int len; - int result; - - DWC_Printf(DWC_REPORTFLAG_MATCH_GT2, "Sent CANCEL SYN %d command to %u.\n", command - DWC_MATCH_COMMAND_CANCEL_SYN, profileID); - - if (command == DWC_MATCH_COMMAND_CANCEL_SYN) { - senddata = (u32)DWCi_GetMatchCnt()->cbEventPid; - len = 1; - } - else { - len = 0; - } - - result = DWCi_SendMatchCommand(command, profileID, 0, 0, &senddata, len); - - if (DWCi_HandleMatchCommandError(result)) { - return FALSE; - } - - DWCi_GetMatchCnt()->lastCancelSynSent = OS_GetTick(); - - return TRUE; -} - -static BOOL DWCi_ProcessCancelMatchSynCommand(int profileID, u8 command, u32 data) { - u8 aid; - u32 bitmask; - u64 baseTime, latency; - int i; - - DWC_Printf(DWC_REPORTFLAG_MATCH_GT2, "Received CANCEL SYN %d command from %u.\n", command - DWC_MATCH_COMMAND_CANCEL_SYN, profileID); - - if (DWC_GetState() != DWC_STATE_CONNECTED) { - DWC_Printf(DWC_REPORTFLAG_MATCH_GT2, "Ignore delayed CANCEL SYN.\n"); - - return TRUE; - } - - switch (command) { - case DWC_MATCH_COMMAND_CANCEL_SYN: - if (DWCi_GetMatchCnt()->state != DWC_MATCH_STATE_CL_CANCEL_SYN) { - DWCi_SetMatchStatus(DWC_MATCH_STATE_CL_CANCEL_SYN); - - DWCi_CloseCancelHostAsync((int)data); - } - - if (!DWCi_SendCancelMatchSynCommand(profileID, DWC_MATCH_COMMAND_CANCEL_SYN_ACK)) { - return FALSE; - } - - break; - case DWC_MATCH_COMMAND_CANCEL_SYN_ACK: - if (DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_SV_CANCEL_SYN) { - baseTime = OS_GetTick(); - - if ((OS_TicksToMilliSeconds(baseTime - DWCi_GetMatchCnt()->lastCancelSynSent) >> 1) > DWC_GP_PROCESS_INTERVAL) { - latency = (OS_TicksToMilliSeconds(baseTime - DWCi_GetMatchCnt()->lastCancelSynSent) >> 1) - DWC_GP_PROCESS_INTERVAL; - - if (latency > DWCi_GetMatchCnt()->cancelBaseLatency) { - DWCi_GetMatchCnt()->cancelBaseLatency = (u16)latency; - } - } - - aid = DWCi_GetAIDFromProfileID(profileID, FALSE); - - if (aid != 0xff) { - DWCi_GetMatchCnt()->cancelSynAckBit |= 1 << aid; - } - - bitmask = DWCi_GetAIDBitmask(TRUE); - - if (DWCi_GetMatchCnt()->cancelSynAckBit == bitmask) { - for (i = 1; i <= DWCi_GetMatchCnt()->gt2NumConnection; i++) { - if (!DWCi_SendCancelMatchSynCommand(DWCi_GetMatchCnt()->sbPidList[i], DWC_MATCH_COMMAND_CANCEL_ACK)) { - return FALSE; - } - } - - DWCi_SetMatchStatus(DWC_MATCH_STATE_SV_CANCEL_SYN_WAIT); - DWC_Printf(DWC_REPORTFLAG_MATCH_GT2, "Wait max latency %d msec.\n", DWCi_GetMatchCnt()->cancelBaseLatency); - } - } - else { - if (!DWCi_SendCancelMatchSynCommand(profileID, DWC_MATCH_COMMAND_CANCEL_ACK)) { - return FALSE; - } - } - break; - case DWC_MATCH_COMMAND_CANCEL_ACK: - if (DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_CL_CANCEL_SYN) { - DWCi_RestartFromCancel(DWC_MATCH_RESET_CONTINUE); - } - - break; - } - - return TRUE; -} - -static BOOL DWCi_ProcessCancelMatchSynTimeout(void) { - u64 passTime; - int i; - - if ((DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_CL_CANCEL_SYN) || (DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_SV_CANCEL_SYN) || (DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_SV_CANCEL_SYN_WAIT)) { - passTime = OS_TicksToMilliSeconds(OS_GetTick() - DWCi_GetMatchCnt()->lastCancelSynSent); - } - else { - return TRUE; - } - - switch (DWCi_GetMatchCnt()->state) { - case DWC_MATCH_STATE_CL_CANCEL_SYN: - if (passTime > DWC_MATCH_CANCEL_SYN_ACK_WAIT_TIME) { - if (!DWCi_SendCancelMatchSynCommand(DWCi_GetMatchCnt()->sbPidList[0], DWC_MATCH_COMMAND_CANCEL_SYN_ACK)) { - return FALSE; - } - } - break; - case DWC_MATCH_STATE_SV_CANCEL_SYN: - if (passTime > DWC_MATCH_CANCEL_SYN_ACK_WAIT_TIME) { - DWCi_GetMatchCnt()->cancelSynResendCount++; - - if (DWCi_GetMatchCnt()->cancelSynResendCount > DWC_MATCH_CMD_RETRY_MAX) { - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Timeout: wait cancel SYN-ACK (aidbitmap 0x%x).\n", DWCi_GetMatchCnt()->cancelSynAckBit); - - if (!DWCi_CloseShutdownClientSC(DWCi_GetMatchCnt()->cancelSynAckBit)) { - return FALSE; - } - - if (DWCi_GetMatchCnt()->gt2NumConnection != 0) { - DWCi_GetMatchCnt()->cancelSynResendCount = 0; - DWCi_GetMatchCnt()->lastCancelSynSent = OS_GetTick(); - } - else { - DWCi_RestartFromCancel(DWC_MATCH_RESET_CONTINUE); - } - } - else { - for (i = 1; i <= DWCi_GetMatchCnt()->gt2NumConnection; i++) { - if (!(DWCi_GetMatchCnt()->cancelSynAckBit & (1 << DWCi_GetMatchCnt()->aidList[i]))) { - if (!DWCi_SendCancelMatchSynCommand(DWCi_GetMatchCnt()->sbPidList[i], DWC_MATCH_COMMAND_CANCEL_SYN)) { - return FALSE; - } - } - } - } - } - break; - case DWC_MATCH_STATE_SV_CANCEL_SYN_WAIT: - if (passTime > DWCi_GetMatchCnt()->cancelBaseLatency) { - DWCi_RestartFromCancel(DWC_MATCH_RESET_CONTINUE); - } - break; - } - - return TRUE; -} - -static u8 DWCi_GetNewMatchKey(void) { - u8 i; - - for (i = 0; i < DWC_QR2_GAME_RESERVED_KEYS; i++) { - if (!stGameMatchKeys[i].keyID) { - return (u8)(DWC_QR2_GAME_KEY_START + i); - } - } - - return 0; -} - -static void DWCi_ClearGameMatchKeys(void) { - int i; - - for (i = 0; i < DWC_QR2_GAME_RESERVED_KEYS; i++) { - if (stGameMatchKeys[i].keyStr) { - DWC_Free(DWC_ALLOCTYPE_BASE, stGameMatchKeys[i].keyStr, 0); - } - } - - MI_CpuClear32(stGameMatchKeys, sizeof(DWCGameMatchKeyData) * DWC_QR2_GAME_RESERVED_KEYS); -} - -static u8 DWCi_GetAIDFromList(void) { - u8 i; - int j; - - for (i = 0; i < DWC_MAX_CONNECTIONS; i++) { - for (j = 0; j <= DWCi_GetMatchCnt()->qr2NNFinishCount; j++) { - if (DWCi_GetMatchCnt()->aidList[j] == i) { - break; - } - } - - if (j > DWCi_GetMatchCnt()->qr2NNFinishCount) { - break; - } - } - - return i; -} - -static BOOL DWCi_IsFriendByIdxList(int profileID) { - int listProfileID; - int i; - - if (DWCi_GetMatchCnt()->friendList == NULL) { - return FALSE; - } - - for (i = 0; i < DWCi_GetMatchCnt()->friendIdxListLen; i++) { - if (((listProfileID = DWCi_GetProfileIDFromList(DWCi_GetMatchCnt()->friendIdxList[i])) > 0) && (listProfileID == profileID)) { - return TRUE; - } - } - - return FALSE; -} - -static int DWCi_CheckDWCServer(SBServer server) { - if (SBServerGetIntValue(server, "numplayers", -1) == -1) { - return 0; - } - - if (SBServerGetIntValue(server, "maxplayers", -1) == -1) { - return 0; - } - - if (SBServerGetIntValue(server, DWC_QR2_MATCH_TYPE_KEY_STR, -1) == -1) { - return 0; - } - - if (SBServerGetIntValue(server, DWC_QR2_MATCH_RESV_KEY_STR, -1) == -1) { - if (SBServerGetIntValue(server, DWC_QR2_MATCH_RESV_KEY_STR, 0) == 0) { - return 0; - } - } - - if (SBServerGetIntValue(server, DWC_QR2_MATCH_VER_KEY_STR, -1) == -1) { - return 0; - } - - return SBServerGetIntValue(server, DWC_QR2_PID_KEY_STR, 0); -} - -static int DWCi_GetPidListIndex(int profileID, BOOL idx0) { - int i; - - for (i = (idx0 ? 0 : 1); i <= DWCi_GetMatchCnt()->qr2NNFinishCount; i++) { - if (DWCi_GetMatchCnt()->sbPidList[i] == profileID) { - return i; - } - } - - return -1; -} - -static u8 DWCi_GetAIDFromProfileID(int profileID, BOOL idx0) { - int i; - - for (i = (idx0 ? 0 : 1); i <= DWCi_GetMatchCnt()->gt2NumConnection; i++) { - if (DWCi_GetMatchCnt()->sbPidList[i] == profileID) { - return DWCi_GetMatchCnt()->aidList[i]; - } - } - - return 0xff; -} - -static u32 DWCi_GetAIDBitmask(BOOL valid) { - u32 bitmask = 0; - int i; - - if (valid) { - return DWCi_GetMatchCnt()->validAidBitmap & ~1; - } - else { - for (i = 1; i <= DWCi_GetMatchCnt()->gt2NumConnection; i++) { - bitmask |= 1 << DWCi_GetMatchCnt()->aidList[i]; - } - - return bitmask; - } -} - -static void DWCi_InitClWaitTimeout(void) { - DWCi_GetMatchCnt()->clWaitTimeoutCount = 0; - DWCi_GetMatchCnt()->clWaitTime = OS_GetTick(); -} - -static void DWCi_InitOptMinCompParam(BOOL reset) { - if (stpOptMinComp && stpOptMinComp->valid) { - stpOptMinComp->recvBit = 0; - stpOptMinComp->timeoutBit = 0; - stpOptMinComp->retry = 0; - stpOptMinComp->lastPollTime = OS_GetTick(); - - if (!reset) { - stpOptMinComp->startTime = OS_GetTick(); - } - } -} - -static void DWCi_ProcessOptMinComp(void) { - u32 bitmask; - int result; - int i; - - if (!stpOptMinComp || !stpOptMinComp->valid || (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_SC_SV) || (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_SC_CL)) { - return; - } - - if (DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_SV_POLL_TIMEOUT) { - bitmask = DWCi_GetAIDBitmask(FALSE); - - if (stpOptMinComp->recvBit == bitmask) { - if (stpOptMinComp->timeoutBit == bitmask) { - DWC_Printf(DWC_REPORTFLAG_MATCH_GT2, "[OPT_MIN_COMP] Timeout occured in all hosts.\n"); - - DWCi_GetMatchCnt()->qr2NumEntry = (u8)DWCi_GetMatchCnt()->gt2NumConnection; - - DWCi_GetMatchCnt()->clLinkProgress = (u8)(DWCi_GetMatchCnt()->gt2NumConnection - 1); - - DWCi_PostProcessConnection(DWC_PP_CONNECTION_SV_CONNECT); - } - else { - DWC_Printf(DWC_REPORTFLAG_MATCH_GT2, "[OPT_MIN_COMP] Some clients is in time.\n"); - - stpOptMinComp->lastPollTime = OS_GetTick(); - stpOptMinComp->recvBit = 0; - - if (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_ANYBODY) { - DWCi_SetMatchStatus(DWC_MATCH_STATE_CL_SEARCH_HOST); - - DWCi_GetMatchCnt()->sbUpdateFlag = DWC_SB_UPDATE_INTERVAL_LONG; - DWCi_GetMatchCnt()->sbUpdateTick = OS_GetTick(); - } - else { - DWCi_SetMatchStatus(DWC_MATCH_STATE_CL_WAIT_RESV); - (void)DWCi_SendResvCommandToFriend(TRUE, FALSE, 0); - } - } - } - else if (OS_TicksToMilliSeconds(OS_GetTick() - stpOptMinComp->lastPollTime) >= DWC_MATCH_CMD_RTT_TIMEOUT * stpOptMinComp->retry) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "[OPT_MIN_COMP] Timeout: wait poll-ACK %d/%d.\n", stpOptMinComp->retry - 1, DWC_MATCH_OPT_MIN_COMP_POLL_RETRY_MAX); - - if (stpOptMinComp->retry > DWC_MATCH_OPT_MIN_COMP_POLL_RETRY_MAX) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "[OPT_MIN_COMP] Timeout: aidbitmap 0x%x. Restart matching.\n", stpOptMinComp->recvBit); - - DWCi_InitOptMinCompParam(TRUE); - - DWCi_CloseAllConnectionsByTimeout(); - DWCi_RestartFromCancel(DWC_MATCH_RESET_RESTART); - } - else { - for (i = 1; i <= DWCi_GetMatchCnt()->gt2NumConnection; i++) { - if (!(stpOptMinComp->recvBit & (1 << DWCi_GetMatchCnt()->aidList[i]))) { - result = DWCi_SendMatchCommand(DWC_MATCH_COMMAND_POLL_TIMEOUT, DWCi_GetMatchCnt()->sbPidList[i], DWCi_GetMatchCnt()->qr2IPList[i], DWCi_GetMatchCnt()->qr2PortList[i], NULL, 0); - - if (DWCi_HandleMatchCommandError(result)) { - return; - } - } - } - - stpOptMinComp->retry++; - } - } - } - else if (((DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_CL_WAIT_RESV) || (DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_CL_SEARCH_HOST)) && (DWCi_GetMatchCnt()->gt2NumConnection >= stpOptMinComp->minEntry - 1) && ((!stpOptMinComp->retry && (OS_TicksToMilliSeconds(OS_GetTick() - stpOptMinComp->startTime) >= stpOptMinComp->timeout)) || (stpOptMinComp->retry && (OS_TicksToMilliSeconds(OS_GetTick() - stpOptMinComp->lastPollTime) >= stpOptMinComp->timeout >> 2)))) { - if (DWCi_GetMatchCnt()->reqProfileID) { - result = DWCi_CancelReservation(DWCi_GetMatchCnt()->reqProfileID); - - if (DWCi_HandleMatchCommandError(result)) { - return; - } - } - - DWCi_SetMatchStatus(DWC_MATCH_STATE_SV_POLL_TIMEOUT); - - DWC_Printf(DWC_REPORTFLAG_MATCH_GT2, "[OPT_MIN_COMP] Poll timeout (my time is %lu).\n", OS_TicksToMilliSeconds(OS_GetTick() - stpOptMinComp->startTime)); - - for (i = 1; i <= DWCi_GetMatchCnt()->gt2NumConnection; i++) { - result = DWCi_SendMatchCommand(DWC_MATCH_COMMAND_POLL_TIMEOUT, DWCi_GetMatchCnt()->sbPidList[i], DWCi_GetMatchCnt()->qr2IPList[i], DWCi_GetMatchCnt()->qr2PortList[i], NULL, 0); - - if (DWCi_HandleMatchCommandError(result)) { - return; - } - } - - stpOptMinComp->lastPollTime = OS_GetTick(); - stpOptMinComp->retry = 1; - } -} - -static GPResult DWCi_HandleGPError(GPResult result) { - int errorCode; - DWCError dwcError; - - if (result == GP_NO_ERROR) { - return GP_NO_ERROR; - } - - DWC_Printf(DWC_REPORTFLAG_ERROR, "Match, GP error %d\n", result); - - switch (result) { - case GP_MEMORY_ERROR: - dwcError = DWC_ERROR_FATAL; - errorCode = DWC_ECODE_TYPE_ALLOC; - break; - case GP_PARAMETER_ERROR: - dwcError = DWC_ERROR_FATAL; - errorCode = DWC_ECODE_TYPE_PARAM; - break; - case GP_NETWORK_ERROR: - dwcError = DWC_ERROR_NETWORK; - errorCode = DWC_ECODE_TYPE_NETWORK; - break; - case GP_SERVER_ERROR: - dwcError = DWC_ERROR_NETWORK; - errorCode = DWC_ECODE_TYPE_SERVER; - break; - } - - errorCode += DWC_ECODE_SEQ_MATCH + DWC_ECODE_GS_GP; - - DWCi_StopMatching(dwcError, errorCode); - - return result; -} - -static SBError DWCi_HandleSBError(SBError error) { - int errorCode; - DWCError dwcError; - - if (error == sbe_noerror) { - return sbe_noerror; - } - -#if 0 - if (error == sbe_connecterror) { - DWCi_connect_errorcount++; - DWC_Printf(DWC_REPORTFLAG_ERROR, "********************************%d\n", DWCi_connect_errorcount); - - return sbe_noerror; - } -#endif - - DWC_Printf(DWC_REPORTFLAG_ERROR, "Match, SB error %d\n", error); - - switch (error) { - case sbe_socketerror: - dwcError = DWC_ERROR_NETWORK; - errorCode = DWC_ECODE_TYPE_SOCKET; - break; - case sbe_dnserror: - dwcError = DWC_ERROR_NETWORK; - errorCode = DWC_ECODE_TYPE_DNS; - break; - case sbe_connecterror: - dwcError = DWC_ERROR_NETWORK; - errorCode = DWC_ECODE_TYPE_SERVER; - break; - case sbe_dataerror: - dwcError = DWC_ERROR_NETWORK; - errorCode = DWC_ECODE_TYPE_DATA; - break; - case sbe_allocerror: - dwcError = DWC_ERROR_FATAL; - errorCode = DWC_ECODE_TYPE_ALLOC; - break; - case sbe_paramerror: - dwcError = DWC_ERROR_FATAL; - errorCode = DWC_ECODE_TYPE_PARAM; - break; - } - - errorCode += DWC_ECODE_SEQ_MATCH + DWC_ECODE_GS_SB; - DWCi_StopMatching(dwcError, errorCode); - - return error; -} - -static qr2_error_t DWCi_HandleQR2Error(qr2_error_t error) { - int errorCode; - DWCError dwcError; - - if (error == e_qrnoerror) { - return e_qrnoerror; - } - - DWC_Printf(DWC_REPORTFLAG_ERROR, "Match, QR2 error %d\n", error); - - switch (error) { - case e_qrwsockerror: - dwcError = DWC_ERROR_NETWORK; - errorCode = DWC_ECODE_TYPE_SOCKET; - break; - case e_qrbinderror: - dwcError = DWC_ERROR_NETWORK; - errorCode = DWC_ECODE_TYPE_BIND; - break; - case e_qrdnserror: - dwcError = DWC_ERROR_NETWORK; - errorCode = DWC_ECODE_TYPE_DNS; - break; - case e_qrconnerror: - dwcError = DWC_ERROR_NETWORK; - errorCode = DWC_ECODE_TYPE_PEER; - break; - case e_qrnochallengeerror: - dwcError = DWC_ERROR_NETWORK; - errorCode = DWC_ECODE_TYPE_SERVER; - break; - } - - switch (DWC_GetState()) { - case DWC_STATE_LOGIN: - errorCode += DWC_ECODE_SEQ_LOGIN + DWC_ECODE_GS_QR2; - DWCi_StopLogin(dwcError, errorCode); - break; - case DWC_STATE_UPDATE_SERVERS: - errorCode += DWC_ECODE_SEQ_FRIEND + DWC_ECODE_GS_QR2; - DWCi_StopFriendProcess(dwcError, errorCode); - break; - case DWC_STATE_MATCHING: - - errorCode += DWC_ECODE_SEQ_MATCH + DWC_ECODE_GS_QR2; - DWCi_StopMatching(dwcError, errorCode); - break; - default: - errorCode += DWC_ECODE_SEQ_ETC + DWC_ECODE_GS_QR2; - DWCi_SetError(dwcError, errorCode); - break; - } - - return error; -} - -static NegotiateError DWCi_HandleNNError(NegotiateError error) { - int errorCode; - DWCError dwcError; - - if (error == ne_noerror) { - return ne_noerror; - } - - DWC_Printf(DWC_REPORTFLAG_ERROR, "Match, NN error %d\n", error); - - switch (error) { - case ne_allocerror: - dwcError = DWC_ERROR_FATAL; - errorCode = DWC_ECODE_TYPE_ALLOC; - break; - case ne_socketerror: - dwcError = DWC_ERROR_NETWORK; - errorCode = DWC_ECODE_TYPE_SOCKET; - break; - case ne_dnserror: - dwcError = DWC_ERROR_NETWORK; - errorCode = DWC_ECODE_TYPE_DNS; - break; - } - - errorCode += DWC_ECODE_SEQ_MATCH + DWC_ECODE_GS_NN; - - DWCi_StopMatching(dwcError, errorCode); - - return error; -} - -static NegotiateResult DWCi_HandleNNResult(NegotiateResult result) { - int errorCode; - DWCError dwcError; - - if (result == nr_success) { - return nr_success; - } - - DWC_Printf(DWC_REPORTFLAG_WARNING, "Match, NN result %d\n", result); - - switch (result) { - case nr_deadbeatpartner: - return nr_deadbeatpartner; - break; - case nr_inittimeout: - return nr_inittimeout; - break; - default: - dwcError = DWC_ERROR_NETWORK; - errorCode = DWC_ECODE_TYPE_UNEXPECTED; - break; - } - - if (dwcError) { - errorCode += DWC_ECODE_SEQ_MATCH + DWC_ECODE_GS_NN; - DWCi_StopMatching(dwcError, errorCode); - } - - return result; -} - -static GT2Result DWCi_HandleGT2Error(GT2Result result) { - int errorCode; - DWCError dwcError; - - if (result == GT2Success) { - return GT2Success; - } - - DWC_Printf(DWC_REPORTFLAG_ERROR, "Match, GT2 error %d\n", result); - - switch (result) { - case GT2OutOfMemory: - dwcError = DWC_ERROR_FATAL; - errorCode = DWC_ECODE_TYPE_ALLOC; - break; - case GT2Rejected: - case GT2DuplicateAddress: - dwcError = DWC_ERROR_NONE; - errorCode = 0; - result = GT2Success; - break; - case GT2NetworkError: - dwcError = DWC_ERROR_NETWORK; - errorCode = DWC_ECODE_TYPE_NETWORK; - break; - case GT2AddressError: - dwcError = DWC_ERROR_NETWORK; - errorCode = DWC_ECODE_TYPE_DNS; - break; - case GT2TimedOut: - dwcError = DWC_ERROR_NETWORK; - errorCode = DWC_ECODE_TYPE_TIMEOUT; - break; - case GT2NegotiationError: - dwcError = DWC_ERROR_NETWORK; - errorCode = DWC_ECODE_TYPE_PEER; - break; - } - - if (dwcError) { - errorCode += DWC_ECODE_SEQ_MATCH + DWC_ECODE_GS_GT2; - DWCi_StopMatching(dwcError, errorCode); - } - - return result; -} - -static void DWCi_SBCallback(ServerBrowser sb, SBCallbackReason reason, SBServer server, void *instance) { -#pragma unused(instance) - int profileID; - int result; - int i; - NegotiateError nnError; - - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "SBCallback : reason %d (state = %d)\n", reason, DWCi_GetMatchCnt()->state); - - s_sbCallbackLevel++; - - if (DWCi_GetMatchCnt()->sbUpdateRequestTick != 0) { - if ((reason == sbc_updatecomplete) || (reason == sbc_queryerror)) { - DWCi_GetMatchCnt()->sbUpdateRequestTick = 0; - DWC_Printf(DWC_REPORTFLAG_DEBUG, "ServerBrowserLimitUpdate timeout reset.(%s)\n", __FUNCTION__); - } - else { - DWCi_GetMatchCnt()->sbUpdateRequestTick = OS_GetTick() + OS_MilliSecondsToTicks(DWC_SB_UPDATE_TIMEOUT); - DWC_Printf(DWC_REPORTFLAG_DEBUG, "ServerBrowserLimitUpdate timeout update.(%s)\n", __FUNCTION__); - } - } - - switch (reason) { - case sbc_serveradded: - DWCi_SBPrintServerData(server); - break; - case sbc_updatecomplete: - for (i = 0; i < ServerBrowserCount(sb); i++) { - server = ServerBrowserGetServer(sb, i); - - if (!DWCi_CheckDWCServer(server)) { - ServerBrowserRemoveServer(sb, server); - DWC_Printf(DWC_REPORTFLAG_SB_UPDATE, "Deleted server [%d].\n", i); - i--; - } - } - - switch (DWCi_GetMatchCnt()->state) { - case DWC_MATCH_STATE_CL_SEARCH_OWN: - for (i = 0; i < ServerBrowserCount(sb); i++) { - server = ServerBrowserGetServer(sb, i); - if (DWCi_GetMatchCnt()->qr2IP && (DWCi_GetMatchCnt()->qr2IP == SBServerGetPublicInetAddress(server)) && DWCi_GetMatchCnt()->qr2Port && (DWCi_GetMatchCnt()->qr2Port == SBServerGetPublicQueryPort(server))) { - break; - } - } - - if (i < ServerBrowserCount(sb)) { - SBError sbError; - - DWCi_SetMatchStatus(DWC_MATCH_STATE_CL_SEARCH_HOST); - DWCi_GetMatchCnt()->reqProfileID = 0; - - sbError = DWCi_SBUpdateAsync(DWCi_GetMatchCnt()->reqProfileID); - - if (DWCi_HandleSBError(sbError)) { - goto on_exit; - } - } - else { - DWCi_GetMatchCnt()->sbUpdateFlag = DWC_SB_UPDATE_INTERVAL_LONG; - DWCi_GetMatchCnt()->sbUpdateTick = OS_GetTick(); - } - - break; - - case DWC_MATCH_STATE_CL_SEARCH_HOST: - (void)DWCi_EvaluateServers(TRUE); - DWCi_RandomizeServers(); - - if (ServerBrowserCount(sb)) { - result = DWCi_SendResvCommand(0, FALSE); - - if (DWCi_HandleMatchCommandError(result)) { - goto on_exit; - } - - DWCi_SetMatchStatus(DWC_MATCH_STATE_CL_WAIT_RESV); - DWCi_GetMatchCnt()->sbUpdateFlag = 0; - } - else { - DWCi_GetMatchCnt()->sbUpdateFlag = DWC_SB_UPDATE_INTERVAL_LONG; - DWCi_GetMatchCnt()->sbUpdateTick = OS_GetTick(); - } - - break; - case DWC_MATCH_STATE_CL_SEARCH_NN_HOST: - DWC_Printf(DWC_REPORTFLAG_DEBUG, "searchIP: %x, searchPort: %d\n", DWCi_GetMatchCnt()->searchIP, DWCi_GetMatchCnt()->searchPort); - - while (ServerBrowserCount(sb)) { - server = ServerBrowserGetServer(sb, 0); - - if ((SBServerGetPublicInetAddress(server) == DWCi_GetMatchCnt()->searchIP) && (SBServerGetPublicQueryPort(server) == DWCi_GetMatchCnt()->searchPort)) { - break; - } - else { - ServerBrowserRemoveServer(sb, server); - } - } - - if (ServerBrowserCount(sb)) { - profileID = SBServerGetIntValue(ServerBrowserGetServer(sb, 0), DWC_QR2_PID_KEY_STR, 0); - - if ((DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_FRIEND) && (profileID == DWCi_GetMatchCnt()->sbPidList[0])) { - if (DWCi_EvaluateServers(FALSE)) { - if (DWCi_GetMatchCnt()->gt2NumConnection) { - result = DWCi_ChangeToClient(); - - if (DWCi_HandleMatchCommandError(result)) { - goto on_exit; - } - } - } - else { - result = DWCi_CancelReservation(DWCi_GetMatchCnt()->sbPidList[0]); - - if (DWCi_HandleMatchCommandError(result)) { - goto on_exit; - } - - DWCi_SetMatchStatus(DWC_MATCH_STATE_CL_WAIT_RESV); - result = DWCi_SendResvCommandToFriend(FALSE, FALSE, DWCi_GetMatchCnt()->sbPidList[0]); - - if (DWCi_HandleMatchCommandError(result)) { - goto on_exit; - } - - break; - } - } - - DWCi_SetMatchStatus(DWC_MATCH_STATE_CL_NN); - - server = ServerBrowserGetServer(sb, 0); - nnError = DWCi_NNStartupAsync(0, 0, server); - - if (DWCi_HandleNNError(nnError)) { - goto on_exit; - } - } - else { - DWCi_GetMatchCnt()->sbUpdateFlag = DWC_SB_UPDATE_INTERVAL_LONG; - DWCi_GetMatchCnt()->sbUpdateTick = OS_GetTick(); - } - break; - - default: - break; - } - break; - case sbc_queryerror: - break; - default: - break; - } - - on_exit: s_sbCallbackLevel--; - - return; -} - -static void DWCi_SBPrintServerData(SBServer server) { -#if defined(SDK_FINALROM) -#pragma unused(server) -#endif - int i; - - DWC_Printf(DWC_REPORTFLAG_SB_UPDATE, "SBServerGetPrivateAddress = %s\n", SBServerGetPrivateAddress(server)); - DWC_Printf(DWC_REPORTFLAG_SB_UPDATE, "SBServerGetPrivateInetAddress = %x\n", SBServerGetPrivateInetAddress(server)); - DWC_Printf(DWC_REPORTFLAG_SB_UPDATE, "SBServerGetPrivateQueryPort = %d\n", SBServerGetPrivateQueryPort(server)); - DWC_Printf(DWC_REPORTFLAG_SB_UPDATE, "SBServerGetPublicAddress = %s\n", SBServerGetPublicAddress(server)); - DWC_Printf(DWC_REPORTFLAG_SB_UPDATE, "SBServerGetPublicInetAddres = %x\n", SBServerGetPublicInetAddress(server)); - DWC_Printf(DWC_REPORTFLAG_SB_UPDATE, "SBServerGetPublicQueryPort = %d\n", SBServerGetPublicQueryPort(server)); - DWC_Printf(DWC_REPORTFLAG_SB_UPDATE, "SBServerHasPrivateAddress = %d\n", SBServerHasPrivateAddress(server)); - - DWC_Printf(DWC_REPORTFLAG_SB_UPDATE, "numplayers = %d\n", SBServerGetIntValue(server, "numplayers", -1)); - DWC_Printf(DWC_REPORTFLAG_SB_UPDATE, "maxplayers = %d\n", SBServerGetIntValue(server, "maxplayers", -1)); - DWC_Printf(DWC_REPORTFLAG_SB_UPDATE, "%s = %u\n", DWC_QR2_PID_KEY_STR, SBServerGetIntValue(server, DWC_QR2_PID_KEY_STR, 0)); - DWC_Printf(DWC_REPORTFLAG_SB_UPDATE, "%s = %u\n", DWC_QR2_MATCH_RESV_KEY_STR, SBServerGetIntValue(server, DWC_QR2_MATCH_RESV_KEY_STR, -1)); - DWC_Printf(DWC_REPORTFLAG_SB_UPDATE, "%s = %d\n", DWC_QR2_MATCH_TYPE_KEY_STR, SBServerGetIntValue(server, DWC_QR2_MATCH_TYPE_KEY_STR, -1)); - DWC_Printf(DWC_REPORTFLAG_SB_UPDATE, "%s = %d\n", DWC_QR2_MATCH_VER_KEY_STR, SBServerGetIntValue(server, DWC_QR2_MATCH_VER_KEY_STR, -1)); - - for (i = 0; i < DWC_QR2_GAME_RESERVED_KEYS; i++) { - if (stGameMatchKeys[i].keyID) { - if (stGameMatchKeys[i].isStr) { - DWC_Printf(DWC_REPORTFLAG_SB_UPDATE, "%s = %s\n", stGameMatchKeys[i].keyStr, SBServerGetStringValue(server, stGameMatchKeys[i].keyStr, "NONE")); - } - else { - DWC_Printf(DWC_REPORTFLAG_SB_UPDATE, "%s = %d\n", stGameMatchKeys[i].keyStr, SBServerGetIntValue(server, stGameMatchKeys[i].keyStr, -1)); - } - } - } -} - -static BOOL DWCi_EvaluateServers(BOOL sort) { - int eval; - int deleteFlag = 0; - int localDelete; - int profileID; - int i, j; - SBServer server; - - for (i = 0; i < ServerBrowserCount(DWCi_GetMatchCnt()->sbObj); i++) { - server = ServerBrowserGetServer(DWCi_GetMatchCnt()->sbObj, i); - - if (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_ANYBODY) { - profileID = SBServerGetIntValue(server, DWC_QR2_PID_KEY_STR, 0); - localDelete = 0; - - for (j = 1; j <= DWCi_GetMatchCnt()->gt2NumConnection; j++) { - if (profileID == DWCi_GetMatchCnt()->sbPidList[j]) { - ServerBrowserRemoveServer(DWCi_GetMatchCnt()->sbObj, server); - - i--; - localDelete = 1; - break; - } - } - - if (localDelete) { - continue; - } - } - - if (DWCi_GetMatchCnt()->evalCallback) { - eval = DWCi_GetMatchCnt()->evalCallback(i, DWCi_GetMatchCnt()->evalParam); - - if (eval > 0) { - if (eval > 0x007fffff) { - eval = 0x007fffff; - } - - SBServerAddIntKeyValue(server, DWC_QR2_MATCH_EVAL_KEY_STR, (int)((eval << 8) | DWCi_GetMathRand32(256))); - } - else { - ServerBrowserRemoveServer(DWCi_GetMatchCnt()->sbObj, server); - - DWC_Printf(DWC_REPORTFLAG_SB_UPDATE, "Deleted server [%d] (eval point is %d).\n", i, eval); - - i--; - deleteFlag = 1; - } - } - else { - SBServerAddIntKeyValue(server, DWC_QR2_MATCH_EVAL_KEY_STR, (int)DWCi_GetMathRand32(DWC_MAX_CONNECTIONS << 2)); - } - } - - if (sort && ServerBrowserCount(DWCi_GetMatchCnt()->sbObj)) { - ServerBrowserSort(DWCi_GetMatchCnt()->sbObj, SBFalse, DWC_QR2_MATCH_EVAL_KEY_STR, sbcm_int); - } - - if (deleteFlag && !ServerBrowserCount(DWCi_GetMatchCnt()->sbObj)) { - return FALSE; - } - else { - return TRUE; - } -} - -static void DWCi_RandomizeServers(void) { - u32 rand; - int tmpEval, maxEval = 0; - int sum = 0; - int i; - int eval[DWC_SB_UPDATE_MAX_SERVERS]; - SBServer server; - - if (ServerBrowserCount(DWCi_GetMatchCnt()->sbObj) <= 1) { - return; - } - - for (i = 0; i < ServerBrowserCount(DWCi_GetMatchCnt()->sbObj); i++) { - server = ServerBrowserGetServer(DWCi_GetMatchCnt()->sbObj, i); - tmpEval = SBServerGetIntValue(server, DWC_QR2_MATCH_EVAL_KEY_STR, -1); - - if (tmpEval > maxEval) { - maxEval = tmpEval; - } - - sum += stEvalRate[i]; - } - - rand = DWCi_GetMathRand32(100); - - for (i = 0; i < ServerBrowserCount(DWCi_GetMatchCnt()->sbObj); i++) { - if (i == ServerBrowserCount(DWCi_GetMatchCnt()->sbObj) - 1) { - eval[i] = 100; - break; - } - else { - eval[i] = (100 * stEvalRate[i]) / sum + ((i > 0)? eval[i - 1] : 0); - - if (rand < eval[i]) { - break; - } - } - } - - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Server[%d] is selected (%d/100: rand %d)\n", i, eval[i], rand); - - if (maxEval < 0x7fffffff) { - maxEval++; - } - - SBServerAddIntKeyValue(ServerBrowserGetServer(DWCi_GetMatchCnt()->sbObj, i), DWC_QR2_MATCH_EVAL_KEY_STR, maxEval); - - ServerBrowserSort(DWCi_GetMatchCnt()->sbObj, SBFalse, DWC_QR2_MATCH_EVAL_KEY_STR, sbcm_int); -} - -static void DWCi_QR2ServerKeyCallback(int keyid, qr2_buffer_t outbuf, void *userdata) { -#pragma unused(userdata) - int index; - - switch (keyid) { - case NUMPLAYERS_KEY: - qr2_buffer_add_int(outbuf, DWCi_GetMatchCnt()->qr2NNFinishCount); - DWC_Printf(DWC_REPORTFLAG_QR2_REQ, "QR2, Received ServerKeyReq : keyID %d - %d\n", keyid, DWCi_GetMatchCnt()->qr2NNFinishCount); - break; - case MAXPLAYERS_KEY: - qr2_buffer_add_int(outbuf, DWCi_GetMatchCnt()->qr2NumEntry); - DWC_Printf(DWC_REPORTFLAG_QR2_REQ, "QR2, Received ServerKeyReq : keyID %d - %d\n", keyid, DWCi_GetMatchCnt()->qr2NumEntry); - break; - case DWC_QR2_PID_KEY: - qr2_buffer_add_int(outbuf, DWCi_GetMatchCnt()->profileID); - DWC_Printf(DWC_REPORTFLAG_QR2_REQ, "QR2, Received ServerKeyReq : keyID %d - %d\n", keyid, DWCi_GetMatchCnt()->profileID); - break; - case DWC_QR2_MATCH_TYPE_KEY: - qr2_buffer_add_int(outbuf, DWCi_GetMatchCnt()->qr2MatchType); - DWC_Printf(DWC_REPORTFLAG_QR2_REQ, "QR2, Received ServerKeyReq : keyID %d - %d\n", keyid, DWCi_GetMatchCnt()->qr2MatchType); - break; - case DWC_QR2_MATCH_RESV_KEY: - qr2_buffer_add_int(outbuf, DWCi_GetMatchCnt()->qr2Reservation); - DWC_Printf(DWC_REPORTFLAG_QR2_REQ, "QR2, Received ServerKeyReq : keyID %d - %d\n", keyid, DWCi_GetMatchCnt()->qr2Reservation); - break; - case DWC_QR2_MATCH_VER_KEY: - qr2_buffer_add_int(outbuf, DWC_MATCHING_VERSION); - DWC_Printf(DWC_REPORTFLAG_QR2_REQ, "QR2, Received ServerKeyReq : keyID %d - %d\n", keyid, DWC_MATCHING_VERSION); - break; - case DWC_QR2_MATCH_EVAL_KEY: - qr2_buffer_add_int(outbuf, 1); - DWC_Printf(DWC_REPORTFLAG_QR2_REQ, "QR2, Received ServerKeyReq : keyID %d - %d\n", keyid, 1); - break; - default: - - index = keyid - DWC_QR2_GAME_KEY_START; - - if (((index >= 0) && (index < DWC_QR2_GAME_RESERVED_KEYS)) && stGameMatchKeys[index].keyID) { - if (stGameMatchKeys[index].isStr) { - qr2_buffer_add(outbuf, (char *)stGameMatchKeys[index].value); - } - else { - qr2_buffer_add_int(outbuf, *(int *)stGameMatchKeys[index].value); - } - } - - break; - } -} - -static void DWCi_QR2PlayerKeyCallback(int keyid, int index, qr2_buffer_t outbuf, void *userdata) { -#pragma unused(keyid) -#pragma unused(index) -#pragma unused(outbuf) -#pragma unused(userdata) -} - -static void DWCi_QR2TeamKeyCallback(int keyid, int index, qr2_buffer_t outbuf, void *userdata) { -#pragma unused(keyid) -#pragma unused(index) -#pragma unused(outbuf) -#pragma unused(userdata) -} - -static void DWCi_QR2KeyListCallback(qr2_key_type keytype, qr2_keybuffer_t keybuffer, void *userdata) { -#pragma unused(userdata) - int i; - - switch (keytype) { - case key_server: - qr2_keybuffer_add(keybuffer, NUMPLAYERS_KEY); - qr2_keybuffer_add(keybuffer, MAXPLAYERS_KEY); - qr2_keybuffer_add(keybuffer, DWC_QR2_PID_KEY); - qr2_keybuffer_add(keybuffer, DWC_QR2_MATCH_TYPE_KEY); - qr2_keybuffer_add(keybuffer, DWC_QR2_MATCH_RESV_KEY); - qr2_keybuffer_add(keybuffer, DWC_QR2_MATCH_VER_KEY); - qr2_keybuffer_add(keybuffer, DWC_QR2_MATCH_EVAL_KEY); - - for (i = 0; i < DWC_QR2_GAME_RESERVED_KEYS; i++) { - if (stGameMatchKeys[i].keyID) { - qr2_keybuffer_add(keybuffer, stGameMatchKeys[i].keyID); - } - } - - break; - case key_player: - break; - case key_team: - break; - } - - DWC_Printf(DWC_REPORTFLAG_QR2_REQ, "QR2, Received KeyListReq : keytype %d\n", keytype); -} - -static int DWCi_QR2CountCallback(qr2_key_type keytype, void *userdata) { -#pragma unused(keytype) -#pragma unused(userdata) - - return 0; -} - -static void DWCi_QR2AddErrorCallback(qr2_error_t error, gsi_char *errmsg, void *userdata) { -#pragma unused(userdata) -#if defined(SDK_FINALROM) -#pragma unused(errmsg) -#endif - DWC_Printf(DWC_REPORTFLAG_ERROR, "QR2 Failed query addition to master server %d\n", error); - DWC_Printf(DWC_REPORTFLAG_ERROR, "%s\n", errmsg); - - (void)DWCi_HandleQR2Error(error); -} - -static void DWCi_QR2PublicAddrCallback(unsigned int ip, unsigned short port, void *userdata) { -#pragma unused(userdata) - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Got my query IP %08x & port %d.\n", ip, port); - DWCi_GetMatchCnt()->qr2IP = ip; - DWCi_GetMatchCnt()->qr2Port = port; -} - -static void DWCi_QR2NatnegCallback(int cookie, void *userdata) { -#pragma unused(userdata) - NegotiateError nnError; - - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Got NN request, cookie = %x.\n", cookie); - - if (DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_CL_WAITING) { - DWCi_SetMatchStatus(DWC_MATCH_STATE_CL_NN); - } - else if ((DWCi_GetMatchCnt()->state != DWC_MATCH_STATE_CL_NN) && (DWCi_GetMatchCnt()->state != DWC_MATCH_STATE_SV_OWN_NN)) { - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "But already canceled reservation.\n"); - return; - } - - if (DWCi_GetMatchCnt()->nnLastCookie == cookie) { - DWCi_GetMatchCnt()->nnRecvCount++; - } - else { - DWCi_GetMatchCnt()->nnRecvCount = 0; - DWCi_GetMatchCnt()->nnLastCookie = cookie; - } - - DWCi_GetMatchCnt()->nnFailedTime = 0; - - nnError = DWCi_NNStartupAsync(1, cookie, NULL); - - if (DWCi_HandleNNError(nnError)) { - return; - } - - DWCi_GetMatchCnt()->cmdCnt.command = DWC_MATCH_COMMAND_DUMMY; -} - -static void DWCi_QR2ClientMsgCallback(gsi_char *data, int len, void *userdata) { -#pragma unused(userdata) - int offset = 0; - BOOL boolResult; - DWCSBMessage sbMsg; - - if ((DWC_GetState() != DWC_STATE_MATCHING) && ((DWC_GetState() != DWC_STATE_CONNECTED) || ((DWCi_GetMatchCnt()->qr2MatchType != DWC_MATCH_TYPE_SC_SV) && (DWCi_GetMatchCnt()->qr2MatchType != DWC_MATCH_TYPE_SC_CL)))) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "Ignore delayed SB matching command.\n"); - - return; - } - - while (offset + sizeof(DWCSBMessageHeader) <= len) { - MI_CpuCopy8(data, &sbMsg, sizeof(DWCSBMessageHeader)); - - if (strncmp(sbMsg.header.identifier, DWC_SB_COMMAND_STRING, 4)) { - DWC_Printf(DWC_REPORTFLAG_WARNING, "Got undefined SBcommand.\n"); - - return; - } - - if (sbMsg.header.version != DWC_MATCHING_VERSION) { - DWC_Printf(DWC_REPORTFLAG_WARNING, "Got different version SBcommand.\n"); - - return; - } - - MI_CpuCopy8(data + sizeof(DWCSBMessageHeader), sbMsg.data, sbMsg.header.size); - -#ifdef NITRODWC_DEBUG - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, " RECV-%s <- [%08x:%d] [pid=%u]\n", get_dwccommandstr(sbMsg.header.command), sbMsg.header.qr2IP, sbMsg.header.qr2Port, sbMsg.header.profileID); -#else - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, " RECV-0x%02x <- [%08x:%d] [pid=%u]\n", sbMsg.header.command, sbMsg.header.qr2IP, sbMsg.header.qr2Port, sbMsg.header.profileID); -#endif - - boolResult = DWCi_ProcessRecvMatchCommand(sbMsg.header.command, sbMsg.header.profileID, sbMsg.header.qr2IP, sbMsg.header.qr2Port, sbMsg.data, sbMsg.header.size >> 2); - - if (!boolResult) { - return; - } - - offset += sizeof(DWCSBMessageHeader) + sbMsg.header.size; - } -} - -static void DWCi_NNProgressCallback(NegotiateState state, void *userdata) { -#pragma unused(userdata) -#if defined(SDK_FINALROM) -#pragma unused(state) -#endif - - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "NN, Got state update: %d\n", state); -} - -static void DWCi_NNCompletedCallback(NegotiateResult result, SOCKET gamesocket, struct sockaddr_in *remoteaddr, void *userdata) { -#pragma unused(gamesocket) - char pidStr[12]; - int index; - NegotiateError nnError; - NegotiateResult nnResult; - GT2Result gt2Result; - DWCNNInfo *nnInfo = (DWCNNInfo *)userdata; - - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "NN, Complete NAT Negotiation. result : %d\n", result); - - if (nnInfo) { - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "NN cookie = %x.\n", nnInfo->cookie); - } - - if (((DWCi_GetMatchCnt()->state != DWC_MATCH_STATE_CL_NN) && (DWCi_GetMatchCnt()->state != DWC_MATCH_STATE_SV_OWN_NN)) || !nnInfo) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "Ignore delayed NN after cancel.\n"); - - return; - } - - if (result == nr_success) { - if (remoteaddr) { - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "NN, remote address : %s\n", gt2AddressToString(remoteaddr->sin_addr.s_addr, SO_NtoHs(remoteaddr->sin_port), NULL)); - } - - nnInfo->cookie = 0; - - DWCi_GetMatchCnt()->qr2NNFinishCount++; - index = DWCi_GetMatchCnt()->qr2NNFinishCount; - - if (nnInfo->isQR2) { - DWCi_GetMatchCnt()->ipList[index] = remoteaddr->sin_addr.s_addr; - DWCi_GetMatchCnt()->portList[index] = SO_NtoHs(remoteaddr->sin_port); - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "NN child finished Nat Negotiation.\n"); - - DWCi_GetMatchCnt()->nnRecvCount = 0; - DWCi_GetMatchCnt()->nnLastCookie = 0; - DWCi_GetMatchCnt()->nnFailedTime = 0; - - if (DWCi_GetMatchCnt()->state == DWC_MATCH_STATE_SV_OWN_NN) { - DWCi_SetMatchStatus(DWC_MATCH_STATE_SV_OWN_GT2); - } - else { - DWCi_SetMatchStatus(DWC_MATCH_STATE_CL_GT2); - } - - DWCi_GetMatchCnt()->gt2ConnectCount = 0; - - DWC_Printf(DWC_REPORTFLAG_MATCH_GT2, "gt2Connect() to pidList[%d] (%s)\n", index, gt2AddressToString(DWCi_GetMatchCnt()->ipList[index], DWCi_GetMatchCnt()->portList[index], NULL)); - - (void)OS_SNPrintf(pidStr, sizeof(pidStr), "%u", DWCi_GetMatchCnt()->profileID); - gt2Result = gt2Connect(*DWCi_GetMatchCnt()->pGt2Socket, NULL, gt2AddressToString(DWCi_GetMatchCnt()->ipList[index], DWCi_GetMatchCnt()->portList[index], NULL), (GT2Byte *)pidStr, -1, DWC_GT2_CONNECT_TIMEOUT, DWCi_GetMatchCnt()->gt2Callbacks, GT2False); - - if (gt2Result == GT2OutOfMemory) { - DWCi_HandleGT2Error(gt2Result); - - return; - } - else if (gt2Result == GT2Success) { - } - else if (!DWCi_CancelPreConnectedServerProcess(DWCi_GetMatchCnt()->sbPidList[index])) { - return; - } - } - else { - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "NN parent finished Nat Negotiation.\n"); - - if (remoteaddr) { - DWCi_GetMatchCnt()->ipList[index - 1] = remoteaddr->sin_addr.s_addr; - DWCi_GetMatchCnt()->portList[index - 1] = SO_NtoHs(remoteaddr->sin_port); - } - - DWCi_GetMatchCnt()->nnFinishTime = OS_GetTick(); - - DWCi_SetMatchStatus(DWC_MATCH_STATE_CL_GT2); - } - } - else { - if (!nnInfo->cookie) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "Ignore delayed NN error after cancel.\n"); - - return; - } - - nnResult = DWCi_HandleNNResult(result); - - if ((nnResult != nr_inittimeout) && (nnResult != nr_deadbeatpartner)) { - return; - } - - if (!nnInfo->isQR2) { - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Failed %d/%d NN send.\n", nnInfo->retryCount, DWC_MAX_MATCH_NN_RETRY); - - if ((nnResult == nr_deadbeatpartner) || ((nnResult == nr_inittimeout) && (nnInfo->retryCount >= DWC_MAX_MATCH_NN_RETRY))) { - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Abort NN.\n"); - - nnInfo->cookie = 0; - - if (!DWCi_ProcessNNFailure(FALSE)) { - return; - } - - if (!DWCi_CancelPreConnectedClientProcess(DWCi_GetMatchCnt()->sbPidList[DWCi_GetMatchCnt()->gt2NumConnection])) { - return; - } - } - else { - nnInfo->retryCount++; - - nnError = DWCi_DoNatNegotiationAsync(nnInfo); - - if (DWCi_HandleNNError(nnError)) { - return; - } - } - } - else { - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Failed %d/%d NN recv.\n", DWCi_GetMatchCnt()->nnRecvCount, DWC_MAX_MATCH_NN_RETRY); - - DWCi_GetMatchCnt()->nnFailedTime = OS_GetTick(); - - if ((nnResult == nr_deadbeatpartner) || ((nnResult == nr_inittimeout) && (DWCi_GetMatchCnt()->nnRecvCount >= DWC_MAX_MATCH_NN_RETRY))) { - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "Abort NN.\n"); - - nnInfo->cookie = 0; - - if ((DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_SC_CL) || (DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_SC_SV)) { - if (!DWCi_ProcessNNFailure(TRUE)) { - return; - } - } - else { - if (!DWCi_ProcessNNFailure(FALSE)) { - return; - } - } - - DWCi_GetMatchCnt()->nnRecvCount = 0; - DWCi_GetMatchCnt()->nnLastCookie = 0; - DWCi_GetMatchCnt()->nnFailedTime = 0; - - if (!DWCi_CancelPreConnectedServerProcess(DWCi_GetMatchCnt()->sbPidList[DWCi_GetMatchCnt()->gt2NumConnection + 1])) { - return; - } - } - } - } -} - -static BOOL DWCi_ProcessNNFailure(BOOL ignoreError) { - if (ignoreError) { - return TRUE; - } - - if (DWCi_GetMatchCnt()->qr2MatchType != DWC_MATCH_TYPE_SC_CL) { - DWCi_GetMatchCnt()->nnFailureCount++; - - DWC_Printf(DWC_REPORTFLAG_MATCH_NN, "NN failure %d/%d.\n", DWCi_GetMatchCnt()->nnFailureCount, DWC_MATCH_NN_FAILURE_MAX); - } - - if ((DWCi_GetMatchCnt()->qr2MatchType == DWC_MATCH_TYPE_SC_CL) || (DWCi_GetMatchCnt()->nnFailureCount >= DWC_MATCH_NN_FAILURE_MAX)) { - DWCi_StopMatching(DWC_ERROR_NETWORK, DWC_ECODE_SEQ_MATCH + DWC_ECODE_GS_NN + DWC_ECODE_TYPE_MUCH_FAILURE); - - return FALSE; - } - else { - return TRUE; - } -} - -static DWCMatchControl *stpMatchCnt = NULL; -#ifdef NITRODWC_DEBUG -static OSTick sMatchStateTick; -#endif - - -static void DWCi_SetMatchCnt(DWCMatchControl *pCnt) { - stpMatchCnt = pCnt; -#ifdef NITRODWC_DEBUG - sMatchStateTick = OS_GetTick(); -#endif -} - -static DWCMatchControl*DWCi_GetMatchCnt(void) { - return stpMatchCnt; -} - -static void DWCi_SetMatchStatus(DWCMatchState state) { - SDK_ASSERT(stpMatchCnt); -#ifdef NITRODWC_DEBUG - if (stpMatchCnt->state != state) { - disp_match_state(stpMatchCnt->state, state); - } -#endif - stpMatchCnt->state = state; -} - -#ifdef NITRODWC_DEBUG -static char *match_st_string[DWC_MATCH_STATE_NUM] = { - "DWC_MATCH_STATE_INIT", "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", -}; - -static void disp_time(void) { - int m_time, sec; - - m_time = (int)OS_TicksToMilliSeconds(OS_GetTick() - sMatchStateTick); - sec = m_time / 1000; - m_time = (m_time - sec + 50) / 100; - OS_TPrintf("�o�ߎ��� %d.%d �b\n", sec, m_time); -} - -static void disp_match_state(DWCMatchState old, DWCMatchState now) { - int m_time, sec; - OSTick tick; - - tick = sMatchStateTick; sMatchStateTick = OS_GetTick(); tick = sMatchStateTick - tick; - m_time = (int)OS_TicksToMilliSeconds(tick); - sec = m_time / 1000; - m_time = (m_time - sec + 50) / 100; - OS_TPrintf("�X�e�[�^�X�ύX %s(%d.%d �b) -> %s\n", match_st_string[old], sec, m_time, match_st_string[now]); -} - -static const char*get_dwccommandstr(u8 command) { - switch (command) { - case DWC_MATCH_COMMAND_RESERVATION: - return "DWC_MATCH_COMMAND_RESERVATION"; - case DWC_MATCH_COMMAND_RESV_OK: - return "DWC_MATCH_COMMAND_RESV_OK"; - case DWC_MATCH_COMMAND_RESV_DENY: - return "DWC_MATCH_COMMAND_RESV_DENY"; - case DWC_MATCH_COMMAND_RESV_WAIT: - return "DWC_MATCH_COMMAND_RESV_WAIT"; - case DWC_MATCH_COMMAND_RESV_CANCEL: - return "DWC_MATCH_COMMAND_RESV_CANCEL"; - case DWC_MATCH_COMMAND_TELL_ADDR: - return "DWC_MATCH_COMMAND_TELL_ADDR"; - case DWC_MATCH_COMMAND_NEW_PID_AID: - return "DWC_MATCH_COMMAND_NEW_PID_AID"; - case DWC_MATCH_COMMAND_LINK_CLS_REQ: - return "DWC_MATCH_COMMAND_LINK_CLS_REQ"; - case DWC_MATCH_COMMAND_LINK_CLS_SUC: - return "DWC_MATCH_COMMAND_LINK_CLS_SUC"; - case DWC_MATCH_COMMAND_CLOSE_LINK: - return "DWC_MATCH_COMMAND_CLOSE_LINK"; - case DWC_MATCH_COMMAND_RESV_PRIOR: - return "DWC_MATCH_COMMAND_RESV_PRIOR"; - case DWC_MATCH_COMMAND_CANCEL: - return "DWC_MATCH_COMMAND_CANCEL"; - case DWC_MATCH_COMMAND_CANCEL_SYN: - return "DWC_MATCH_COMMAND_CANCEL_SYN"; - case DWC_MATCH_COMMAND_CANCEL_SYN_ACK: - return "DWC_MATCH_COMMAND_CANCEL_SYN_ACK"; - case DWC_MATCH_COMMAND_CANCEL_ACK: - return "DWC_MATCH_COMMAND_CANCEL_ACK"; - case DWC_MATCH_COMMAND_SC_CLOSE_CL: - return "DWC_MATCH_COMMAND_SC_CLOSE_CL"; - case DWC_MATCH_COMMAND_POLL_TIMEOUT: - return "DWC_MATCH_COMMAND_POLL_TIMEOUT"; - case DWC_MATCH_COMMAND_POLL_TO_ACK: - return "DWC_MATCH_COMMAND_POLL_TO_ACK"; - case DWC_MATCH_COMMAND_SC_CONN_BLOCK: - return "DWC_MATCH_COMMAND_SC_CONN_BLOCK"; - case DWC_MATCH_COMMAND_FRIEND_ACCEPT: - return "DWC_MATCH_COMMAND_FRIEND_ACCEPT"; - case DWC_MATCH_COMMAND_CL_WAIT_POLL: - return "DWC_MATCH_COMMAND_CL_WAIT_POLL"; - case DWC_MATCH_COMMAND_SV_KA_TO_CL: - return "DWC_MATCH_COMMAND_SV_KA_TO_CL"; - case DWC_MATCH_COMMAND_DUMMY: - return "DWC_MATCH_COMMAND_DUMMY"; - default: - return "DWC_MATCH_COMMAND_UNDEFINED"; - } -} - -#endif diff --git a/subprojects/NitroDWC/libraries/base/src/dwc_memfunc.c b/subprojects/NitroDWC/libraries/base/src/dwc_memfunc.c deleted file mode 100644 index a3efe3b23b..0000000000 --- a/subprojects/NitroDWC/libraries/base/src/dwc_memfunc.c +++ /dev/null @@ -1,119 +0,0 @@ -#include -#include - - -#define DWCi_MEMFUNC_SIGNATURE 'DWCM' - - -typedef struct _tagDWCiAllocHeader { - u32 signature; - u32 size; - u32 dummy[6]; -} DWCiAllocHeader; - - -static DWCAllocEx s_alloc; -static DWCFreeEx s_free; - - -static void *DWCi_GetAllocateHeader(void *ptr); -static void *DWCi_SetAllocateHeader(void *ptr, u32 size); -static u32 DWCi_GetAllocateSize(void *ptr); - - -static void *DWCi_GetAllocateHeader(void *ptr) { - DWCiAllocHeader *header = (DWCiAllocHeader *)(((u8 *)ptr) - sizeof(DWCiAllocHeader)); - SDK_ASSERT(header->signature == DWCi_MEMFUNC_SIGNATURE); - return (void *)header; -} - -static void *DWCi_SetAllocateHeader(void *ptr, u32 size) { - DWCiAllocHeader *header = (DWCiAllocHeader *)ptr; - - header->signature = DWCi_MEMFUNC_SIGNATURE; - header->size = size; - - return (void *)(((u8 *)ptr) + sizeof(DWCiAllocHeader)); -} - -static u32 DWCi_GetAllocateSize(void *ptr) { - DWCiAllocHeader *header = DWCi_GetAllocateHeader(ptr); - SDK_ASSERT(header != NULL); - return header->size; -} - -void DWC_SetMemFunc(DWCAllocEx alloc, DWCFreeEx free) { - s_alloc = alloc; - s_free = free; -} - -void *DWC_Alloc(DWCAllocType name, u32 size) { - return DWC_AllocEx(name, size, 32); -} - -void*DWC_AllocEx(DWCAllocType name, u32 size, int align) { - void *ptr; - - SDK_ASSERTMSG(s_alloc, "DWC_MEMFUNC: Allocator function isn't defined.\n"); - SDK_ASSERTMSG((align <= 32) && (align >= -32), "DWC_Alloc() dosen't support to align over 32 bytes order"); - - ptr = s_alloc(name, size + sizeof(DWCiAllocHeader), align); - - if (ptr == NULL) { - return NULL; - } - - return DWCi_SetAllocateHeader(ptr, size); -} - -void DWC_Free(DWCAllocType name, void *ptr, u32 size) { -#pragma unused(size) - - SDK_ASSERTMSG(s_free, "DWC_MEMFUNC: Free function isn't defined.\n"); - - if (ptr == NULL) { - return; - } - - ptr = DWCi_GetAllocateHeader(ptr); - s_free(name, ptr, ((DWCiAllocHeader *)ptr)->size + sizeof(DWCiAllocHeader)); -} - -void *DWC_Realloc(DWCAllocType name, void *ptr, u32 oldsize, u32 newsize) { - return DWC_ReallocEx(name, ptr, oldsize, newsize, 32); -} - -void *DWC_ReallocEx(DWCAllocType name, void *ptr, u32 oldsize, u32 newsize, int align) { - void *newptr; - - newptr = DWC_AllocEx(name, newsize, align); - - if (newptr == NULL) { - return NULL; - } - - if (ptr != NULL) { - oldsize = DWCi_GetAllocateSize(ptr); - - MI_CpuCopy8(ptr, newptr, (oldsize > newsize) ? newsize : oldsize); - DWC_Free(name, ptr, oldsize); - } - - return newptr; -} - -void *DWCi_GsMalloc(size_t size) { - return DWC_Alloc(DWC_ALLOCTYPE_GS, (u32)size); -} - -void *DWCi_GsRealloc(void *ptr, size_t size) { - return DWC_Realloc(DWC_ALLOCTYPE_GS, ptr, (u32)size, (u32)size); -} - -void DWCi_GsFree(void *ptr) { - DWC_Free(DWC_ALLOCTYPE_GS, ptr, 0); -} - -void *DWCi_GsMemalign(size_t boundary, size_t size) { - return DWC_AllocEx(DWC_ALLOCTYPE_GS, (u32)size, (int)boundary); -} diff --git a/subprojects/NitroDWC/libraries/base/src/dwc_nasfunc.c b/subprojects/NitroDWC/libraries/base/src/dwc_nasfunc.c deleted file mode 100644 index 3ea6352c06..0000000000 --- a/subprojects/NitroDWC/libraries/base/src/dwc_nasfunc.c +++ /dev/null @@ -1,167 +0,0 @@ -#include -#include -#include -#include -#include - - -typedef struct { - DWCHttp http; - DWCAuthParam authparam; - DWCAuthResult result; -} DWCNalCnt; - - -extern s64 DWCnastimediff; -extern BOOL DWCnastimediffvalid; -extern s64 DWCnastimediffbase; -static DWCNalCnt *nalcnt = NULL; - - -DWCIngamesnCheckResult DWC_GetIngamesnCheckResult(void) { - return (DWCIngamesnCheckResult)DWCauthingamesncheckresult; -} - -BOOL DWC_GetDateTime(RTCDate *date, RTCTime *time) { - s64 localsec; - - if (DWCnastimediffvalid == FALSE) { - return FALSE; - } - - if (RTC_GetDateTime(date, time) != 0) { - return FALSE; - } - - localsec = RTC_ConvertDateTimeToSecond(date, time); - - if (localsec == -1) { - return FALSE; - } - - if (localsec < DWCnastimediffbase) { - DWC_Printf(DWC_REPORTFLAG_DEBUG, "RTC overflow detected.\n"); - localsec += 3155760000; - } - - localsec -= DWCnastimediff; - - if ((localsec < 0) || (localsec > 3155759999)) { - return FALSE; - } - - RTC_ConvertSecondToDateTime(date, time, localsec); - - return TRUE; -} - -BOOL DWC_SVLGetTokenAsync(char *svl, DWCSvlResult *result) { - BOOL flag; - - SDK_ASSERT(svl); - SDK_ASSERT(result); - - flag = DWC_Svl_Init((DWCAuthAlloc)DWC_Alloc, (DWCAuthFree)DWC_Free); - - if (flag == FALSE) { - return FALSE; - } - - if (strlen(svl) == 0) { - flag = DWC_Svl_GetTokenAsync("0000", result); - } - else { - flag = DWC_Svl_GetTokenAsync(svl, result); - } - - if (flag == FALSE) { - DWC_Svl_Cleanup(); - return FALSE; - } - - return TRUE; -} - -DWCSvlState DWC_SVLProcess(void) { - DWCSvlState state; - - state = DWC_Svl_Process(); - - if ((state == DWC_SVL_STATE_ERROR) || (state == DWC_SVL_STATE_SUCCESS) || (state == DWC_SVL_STATE_CANCELED)) { - DWC_Svl_Cleanup(); - } - - return state; -} - -void DWC_SVLAbort(void) { - DWC_Svl_Abort(); -} - -BOOL DWC_NASLoginAsync(void) { - if (nalcnt != NULL) { - OS_Panic("You can't request more than one NAS login request at once.\n"); - } - - nalcnt = DWC_Alloc(DWC_ALLOCTYPE_BASE, sizeof(DWCNalCnt)); - - if (nalcnt == NULL) { - DWCi_SetError(DWC_ERROR_FATAL, -20100); - - return FALSE; - } - - MI_CpuClear8(nalcnt, sizeof(DWCNalCnt)); - MI_CpuCopy8("", nalcnt->authparam.gsbrcd, 9); - - nalcnt->authparam.alloc = (DWCAuthAlloc)DWC_Alloc; - nalcnt->authparam.free = (DWCAuthFree)DWC_Free; - -#if 1 - DWC_Auth_Create(&nalcnt->authparam, &nalcnt->http); -#else - if (DWC_Auth_Create(&nalcnt->authparam, &nalcnt->http) != DWCAUTH_E_NOERR) { - DWC_Free(DWC_ALLOCTYPE_BASE, nalcnt, sizeof(DWCNalCnt)); - nalcnt = NULL; - DWCi_SetError(DWC_ERROR_FATAL, -20100); - - return FALSE; - } -#endif - - return TRUE; -} - -DWCNasLoginState DWC_NASLoginProcess(void) { - DWCAuthResult result; - - if (nalcnt == NULL) { - return DWC_NASLOGIN_STATE_DIRTY; - } - - switch (DWC_Auth_GetError()) { - case DWCAUTH_E_NOERR: - return DWC_NASLOGIN_STATE_HTTP; - case DWCAUTH_E_FINISH: - DWC_Auth_Destroy(); - DWC_Free(DWC_ALLOCTYPE_BASE, nalcnt, sizeof(DWCNalCnt)); - nalcnt = NULL; - return DWC_NASLOGIN_STATE_SUCCESS; - case DWCAUTH_E_ABORT: - DWC_Auth_Destroy(); - DWC_Free(DWC_ALLOCTYPE_BASE, nalcnt, sizeof(DWCNalCnt)); - nalcnt = NULL; - return DWC_NASLOGIN_STATE_CANCELED; - default: - DWC_Auth_GetResult(&result); - DWC_Auth_Destroy(); - DWC_Free(DWC_ALLOCTYPE_BASE, nalcnt, sizeof(DWCNalCnt)); - nalcnt = NULL; - DWCi_SetError(DWC_ERROR_AUTH_ANY, result.returncode); - return DWC_NASLOGIN_STATE_ERROR; - } -} - -void DWC_NASLoginAbort(void) { - DWC_Auth_Abort(); -} diff --git a/subprojects/NitroDWC/libraries/base/src/dwc_nd.c b/subprojects/NitroDWC/libraries/base/src/dwc_nd.c deleted file mode 100644 index b439135ff0..0000000000 --- a/subprojects/NitroDWC/libraries/base/src/dwc_nd.c +++ /dev/null @@ -1,275 +0,0 @@ -#include - -#include -#include -#include -#include -#include -#include -#include -#include - - -#define DWC_ND_SVL "9000" -#define SVLTHREADSTACKSIZE 2048 -#define SVLHOSTNAMEMAX 255 -#define GAMECDMAX 32 -#define PASSWDMAX 32 -#define TOKEN_LENGTH (300 / 3 * 4) - - -typedef struct { - DWCNdCallback callback; - DWCNdCleanupCallback cleanupcallback; - char gamecd[GAMECDMAX]; - char passwd[PASSWDMAX]; - BOOL ndinitialized; - DWCSvlResult svlresult; - u8 svlthreadstack[SVLTHREADSTACKSIZE]; - OSThread svlthread; -} DWCNdCnt; - - -static DWCNdCnt *dwcndcnt = NULL; - - -static void *DWCi_NdAlloc(u32 size, int align) { - return DWC_AllocEx(DWC_ALLOCTYPE_ND, size, align); -} - -static void DWCi_NdFree(void *ptr) { - DWC_Free(DWC_ALLOCTYPE_ND, ptr, 0); -} - -static void DWCi_NdCallback(DWCNdCallbackReason reason, DWCNdError error, int servererror) { - SDK_ASSERT(dwcndcnt); - SDK_ASSERT(dwcndcnt->callback); - - if (error == DWC_ND_ERROR_NONE) { - dwcndcnt->callback(reason, error, servererror); - return; - } - - switch (error) { - case DWC_ND_ERROR_ALLOC: - DWCi_SetError(DWC_ERROR_FATAL, DWC_ECODE_SEQ_ADDINS + DWC_ECODE_FUNC_ND + DWC_ECODE_TYPE_ND_ALLOC); - break; - case DWC_ND_ERROR_BUSY: - OS_Panic("You can't request more than one download process to DWC_Nd library."); - break; - case DWC_ND_ERROR_HTTP: - DWCi_SetError(DWC_ERROR_ND_HTTP, DWC_ECODE_SEQ_ADDINS + DWC_ECODE_FUNC_ND + DWC_ECODE_TYPE_ND_HTTP); - break; - case DWC_ND_ERROR_BUFFULL: - DWCi_SetError(DWC_ERROR_ND_ANY, DWC_ECODE_SEQ_ADDINS + DWC_ECODE_FUNC_ND + DWC_ECODE_TYPE_ND_BUFFULL); - break; - case DWC_ND_ERROR_DLSERVER: - DWCi_SetError(DWC_ERROR_ND_ANY, DWC_ECODE_SEQ_ADDINS + DWC_ECODE_FUNC_ND - servererror); - break; - case DWC_ND_ERROR_CANCELED: - break; - case DWC_ND_ERROR_PARAM: - OS_Panic("Some Parameters passed to DWC_Nd library are invalid."); - break; - case DWC_ND_ERROR_FATAL: - DWCi_SetError(DWC_ERROR_FATAL, DWC_ECODE_SEQ_ADDINS + DWC_ECODE_FUNC_ND + DWC_ECODE_TYPE_ND_FATAL); - break; - default: - OS_Panic("DWCi_NdCallback: Unknown error type."); - } - - dwcndcnt->callback(reason, error, servererror); -} - -static void DWCi_NdCleanupCallback(void) { - DWCNdCleanupCallback callback; - - SDK_ASSERT(dwcndcnt); - - OS_JoinThread(&dwcndcnt->svlthread); - - callback = dwcndcnt->cleanupcallback; - - DWCi_NdFree(dwcndcnt); - dwcndcnt = NULL; - - if (callback != NULL) { - callback(); - } -} - -static void DWCi_SVLTokenWaitThread(void *arg) { -#pragma unused(arg) - DWCSvlState svlstate; - char url[SVLHOSTNAMEMAX + 1]; - char token[TOKEN_LENGTH]; - int errorcode; - - SDK_ASSERT(dwcndcnt); - SDK_ASSERT(dwcndcnt->callback); - - for (;;) { - svlstate = DWC_SVLProcess(); - - if (svlstate == DWC_SVL_STATE_SUCCESS) { - if (strlen(dwcndcnt->svlresult.svlhost) + strlen("https:///download") > SVLHOSTNAMEMAX) { - DWC_Printf(DWC_REPORTFLAG_ERROR, "DWCi_SVLTokenWaitThread: DWCi_NdStartup too long svlhost.\n"); - DWCi_NdCallback(DWC_ND_CBREASON_INITIALIZE, DWC_ND_ERROR_FATAL, -1); - return; - } - - OS_SNPrintf(url, SVLHOSTNAMEMAX + 1, "https://%s/download", dwcndcnt->svlresult.svlhost); - - if (DWC_Auth_Base64Encode(dwcndcnt->svlresult.svltoken, strlen(dwcndcnt->svlresult.svltoken), token, TOKEN_LENGTH) < 0) { - DWC_Printf(DWC_REPORTFLAG_ERROR, "DWCi_SVLTokenWaitThread: Can't encode SVL token.\n"); - DWCi_NdCallback(DWC_ND_CBREASON_INITIALIZE, DWC_ND_ERROR_FATAL, -1); - return; - } - - if (DWCi_NdStartup(DWCi_NdAlloc, DWCi_NdFree, url, token, dwcndcnt->gamecd, dwcndcnt->passwd, DWCi_NdCallback) == FALSE) { - DWC_Printf(DWC_REPORTFLAG_ERROR, "DWCi_SVLTokenWaitThread: DWCi_NdStartup failed.\n"); - DWCi_NdCallback(DWC_ND_CBREASON_INITIALIZE, DWC_ND_ERROR_FATAL, -1); - return; - } - - DWC_Printf(DWC_REPORTFLAG_DEBUG, "DWCi_SVLTokenWaitThread: DWCi_NdStartup successed.\n"); - dwcndcnt->ndinitialized = TRUE; - DWCi_NdCallback(DWC_ND_CBREASON_INITIALIZE, DWC_ND_ERROR_NONE, -1); - return; - } - else if (svlstate == DWC_SVL_STATE_ERROR) { - DWC_Printf(DWC_REPORTFLAG_ERROR, "DWCi_SVLTokenWaitThread: Can't get SVL token.\n"); - (void)DWC_GetLastError(&errorcode); - DWCi_SetError(DWC_ERROR_ND_ANY, errorcode); - - dwcndcnt->callback(DWC_ND_CBREASON_INITIALIZE, DWC_ND_ERROR_HTTP, -1); - - return; - } - else if (svlstate == DWC_SVL_STATE_CANCELED) { - DWCi_NdCallback(DWC_ND_CBREASON_INITIALIZE, DWC_ND_ERROR_CANCELED, -1); - } - - OS_Sleep(100); - } - - return; -} - -BOOL DWC_NdInitAsync(DWCNdCallback callback, char *gamecd, char *passwd) { - SDK_ASSERT(callback); - SDK_ASSERT(dwcndcnt == NULL); - SDK_ASSERT(gamecd); - SDK_ASSERT(passwd); - - if (DWCi_IsError()) { - return FALSE; - } - - dwcndcnt = DWCi_NdAlloc(sizeof(DWCNdCnt), 32); - SDK_ASSERT(dwcndcnt); - dwcndcnt->ndinitialized = FALSE; - - MI_CpuClear8(dwcndcnt, sizeof(DWCNdCnt)); - dwcndcnt->callback = callback; - strncpy(dwcndcnt->gamecd, gamecd, GAMECDMAX - 1); - strncpy(dwcndcnt->passwd, passwd, PASSWDMAX - 1); - - if (DWC_SVLGetTokenAsync(DWC_ND_SVL, &dwcndcnt->svlresult) == FALSE) { - DWC_Printf(DWC_REPORTFLAG_ERROR, "DWC_NdInitAsync: DWC_SVLGetTokenAsync failed.\n"); - DWCi_NdFree(dwcndcnt); - dwcndcnt = NULL; - - return FALSE; - } - - DWC_Printf(DWC_REPORTFLAG_DEBUG, "DWC_NdInitAsync: DWC_SVLGetTokenAsync started.\n"); - OS_CreateThread(&dwcndcnt->svlthread, DWCi_SVLTokenWaitThread, NULL, dwcndcnt->svlthreadstack + SVLTHREADSTACKSIZE, SVLTHREADSTACKSIZE, 16); - OS_WakeupThreadDirect(&dwcndcnt->svlthread); - - return TRUE; -} - -BOOL DWC_NdCleanupAsync(DWCNdCleanupCallback callback) { - if (dwcndcnt == NULL) { - return FALSE; - } - - dwcndcnt->cleanupcallback = callback; - - if (dwcndcnt->ndinitialized == FALSE) { - DWCi_NdCleanupCallback(); - } - else { - DWCi_NdCleanupAsync(DWCi_NdCleanupCallback); - } - - return TRUE; -} - -BOOL DWC_NdSetAttr(const char *attr1, const char *attr2, const char *attr3) { - SDK_ASSERT(dwcndcnt); - - if (DWCi_IsError()) { - return FALSE; - } - - return DWCi_NdSetAttr((char *)attr1, (char *)attr2, (char *)attr3); -} - -BOOL DWC_NdGetFileListNumAsync(int *entrynum) { - SDK_ASSERT(dwcndcnt); - - if (DWCi_IsError()) { - return FALSE; - } - - return DWCi_NdGetFileListNumAsync(entrynum); -} - -BOOL DWC_NdGetFileListAsync(DWCNdFileInfo *filelist, unsigned offset, unsigned int num) { - SDK_ASSERT(dwcndcnt); - - if (DWCi_IsError()) { - return FALSE; - } - - MI_CpuClear8(filelist, sizeof(DWCNdFileInfo) * num); - - return DWCi_NdGetFileListAsync(filelist, (int)offset, (int)num); -} - -BOOL DWC_NdGetFileAsync(DWCNdFileInfo *fileinfo, char *buf, unsigned int size) { -#pragma unused(size) - SDK_ASSERT(dwcndcnt); - SDK_ASSERT(fileinfo); - SDK_ASSERT(buf); - SDK_ASSERT(size >= DWC_ND_RECVBUF_MIN); - SDK_ASSERT(size >= fileinfo->size); - - if (DWCi_IsError()) { - return FALSE; - } - - return DWCi_NdGetFileAsync(fileinfo, buf, size); -} - -BOOL DWC_NdCancelAsync(void) { - SDK_ASSERT(dwcndcnt); - - if (DWCi_IsError()) { - return FALSE; - } - - return DWCi_NdCancelAsync(); -} - -BOOL DWC_NdGetProgress(u32 *received, u32 *contentlen) { - SDK_ASSERT(dwcndcnt); - - if (DWCi_IsError()) { - return FALSE; - } - - return DWCi_NdGetProgress(received, contentlen); -} diff --git a/subprojects/NitroDWC/libraries/base/src/dwc_transport.c b/subprojects/NitroDWC/libraries/base/src/dwc_transport.c deleted file mode 100644 index 4256ad7144..0000000000 --- a/subprojects/NitroDWC/libraries/base/src/dwc_transport.c +++ /dev/null @@ -1,956 +0,0 @@ -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - - -static DWCTransportInfo *sTransInfo = NULL; - - -static DWCTransportConnection *DWCs_GetTransConnection(u8 aid); -static int DWCs_GetSendState(u8 aid); -static int DWCs_GetRecvState(u8 aid); -static void DWCs_Send(u8 aid, const u8 *buffer, int size, BOOL reliable); -static void DWCs_HandleUnreliableMessage(GT2Connection connection, void *message, int size); -static void DWCs_HandleReliableMessage(GT2Connection connection, u8 *message, int size); -static void DWCs_RecvDataHeader(u8 aid, DWCTransportHeader *message, int size); -static void DWCs_RecvDataBody(u8 aid, void *message, int size); -static void DWCs_RecvSystemDataBody(u8 aid, void *message, int size); -static void DWCs_DelayCheck(DArray delayedMessages, OSTick now, BOOL send); -static void DWCs_AddDelayMessage(DArray array, u16 delayValue, GT2Connection connection, int filterID, const u8 *message, int size, BOOL reliable); -static void DWCs_DelayedMessageFree(void *elem); -static int DWCs_GetOutgoingBufferFreeSize(u8 aid); -static void DWCs_SendFilterCallbackDrop(GT2Connection connection, int filterID, const u8 *message, int size, BOOL reliable); -static void DWCs_SendFilterCallbackDelay(GT2Connection connection, int filterID, const u8 *message, int size, BOOL reliable); -static void DWCs_RecvFilterCallbackDrop(GT2Connection connection, int filterID, u8 *message, int size, BOOL reliable); -static void DWCs_RecvFilterCallbackDelay(GT2Connection connection, int filterID, u8 *message, int size, BOOL reliable); -static void DWCs_EncodeHeader(DWCTransportHeader *header, u16 type, int size); -static u16 DWCs_DecodeHeader(const DWCTransportHeader *header); -static s32 DWCs_GetRequiredHeaderSize(u16 type); - - -BOOL DWC_IsSendableReliable(u8 aid) { - return DWCi_IsSendableReliable(aid, DWC_SEND_TYPE_USERDATA); -} - -BOOL DWCi_IsSendableReliable(u8 aid, u16 type) { - s32 freeSpace; - - if (DWCi_IsError() || ((type == DWC_SEND_TYPE_USERDATA) && !DWC_IsValidAID(aid)) || !DWCi_IsValidAID(aid)) { - DWC_Printf(DWC_REPORTFLAG_WARNING, "aid %d is unavailable.\n", aid); - return FALSE; - } - - if (DWCs_GetSendState(aid) == DWC_TRANSPORT_SEND_BUSY) { - DWC_Printf(DWC_REPORTFLAG_SEND_INFO, "+++ Cannot send to %d from %d (busy)\n", aid, DWC_GetMyAID()); - return FALSE; - } - - freeSpace = DWCs_GetOutgoingBufferFreeSize(aid); - - if (freeSpace < DWCs_GetRequiredHeaderSize(type)) { - DWC_Printf(DWC_REPORTFLAG_SEND_INFO, "+++ Cannot send to %d from %d (outgoing buffer is not enough) %d < %d\n", aid, DWC_GetMyAID(), freeSpace, DWCs_GetRequiredHeaderSize(type)); - return FALSE; - } - - return TRUE; -} - -BOOL DWC_SendReliable(u8 aid, const void *buffer, int size) { - return DWCi_SendReliable(DWC_SEND_TYPE_USERDATA, aid, buffer, size); -} - -BOOL DWCi_SendReliable(u16 type, u8 aid, const void *buffer, int size) { - DWCTransportConnection *transConnection = DWCs_GetTransConnection(aid); - DWCTransportHeader header; - int sendSize; - int freeSpace; - - SDK_ASSERT(buffer); - SDK_ASSERT(size > 0); - - if (!DWCi_IsSendableReliable(aid, type)) { - return FALSE; - } - - transConnection->sendState = DWC_TRANSPORT_SEND_BUSY; - transConnection->sendBuffer = buffer; - transConnection->sendingSize = 0; - transConnection->requestSendSize = size; - - DWCs_EncodeHeader(&header, type, size); - DWCs_Send(aid, (const u8 *)&header, sizeof(DWCTransportHeader), TRUE); - - if (size > sTransInfo->sendSplitMax) { - sendSize = sTransInfo->sendSplitMax; - } - else { - sendSize = size; - } - - freeSpace = DWCs_GetOutgoingBufferFreeSize(aid); -#if 1 - DWC_Printf( - DWC_REPORTFLAG_SEND_INFO, "DWCi_SendReliable:aid = %d,%d,%d,%d,%d,vcount = %d\n", aid, sendSize, freeSpace, size, sTransInfo->sendSplitMax, OS_GetVBlankCount()); -#endif - - if (sendSize > freeSpace) { - DWC_Printf( - DWC_REPORTFLAG_SEND_INFO, "DWCi_SendReliable:sendSize > freeSpace:aid = %d,%d,%d,vcount = %d\n", aid, sendSize, freeSpace, OS_GetVBlankCount()); - - return TRUE; - } - - DWCs_Send(aid, buffer, sendSize, TRUE); - - transConnection->sendingSize += sendSize; - - DWC_Printf( - DWC_REPORTFLAG_SEND_INFO, "[R] aid = %d, size = %d/%d, outgoing buffer = %d, vcount = %d\n", aid, transConnection->sendingSize, transConnection->requestSendSize, freeSpace - sendSize, OS_GetVBlankCount()); - - if (transConnection->sendingSize == transConnection->requestSendSize) { - int reqSendSize = transConnection->requestSendSize; - - transConnection->sendState = DWC_TRANSPORT_SEND_READY; - transConnection->sendBuffer = NULL; - transConnection->sendingSize = 0; - transConnection->requestSendSize = 0; - - if (sTransInfo->sendCallback && (type == DWC_SEND_TYPE_USERDATA)) { - sTransInfo->sendCallback(reqSendSize, aid); - } - } - - return TRUE; -} - -u32 DWC_SendReliableBitmap(u32 bitmap, const void *buffer, int size) { - u8 aid; - u32 aidbit; - - for (aid = 0; aid < DWC_MAX_CONNECTIONS; ++aid) { - aidbit = aid ? (1 << aid) : 1U; - - if ((bitmap & aidbit) && (aid != DWC_GetMyAID())) { - if (!DWC_SendReliable(aid, buffer, size)) { - bitmap &= ~aidbit; - } - } - } - - return bitmap; -} - -BOOL DWC_SendUnreliable(u8 aid, const void *buffer, int size) { - SDK_ASSERT(buffer); - SDK_ASSERT(size > 0); - - if (DWCi_IsError()) { - return FALSE; - } - - if (!DWC_IsValidAID(aid)) { - DWC_Printf(DWC_REPORTFLAG_WARNING, "aid %d is now unavailable.\n", aid); - return FALSE; - } - - if (size > sTransInfo->sendSplitMax) { - DWC_Printf(DWC_REPORTFLAG_SEND_INFO, "+++ SendUnreliable size is too large ( %d > %d )\n", size, sTransInfo->sendSplitMax); - return FALSE; - } - - DWCs_Send(aid, buffer, size, FALSE); - DWC_Printf(DWC_REPORTFLAG_SEND_INFO, "[U] aid = %d, size = %d, vcount = %d\n", aid, size, OS_GetVBlankCount()); - - if (sTransInfo->sendCallback) { - sTransInfo->sendCallback(size, aid); - } - - return TRUE; -} - -u32 DWC_SendUnreliableBitmap(u32 bitmap, const void *buffer, int size) { - u8 aid; - u32 aidbit; - - for (aid = 0; aid < DWC_MAX_CONNECTIONS; ++aid) { - aidbit = aid ? (1 << aid) : 1U; - - if (bitmap & aidbit && (aid != DWC_GetMyAID())) { - if (!DWC_SendUnreliable(aid, buffer, size)) { - bitmap &= ~aidbit; - } - } - } - - return bitmap; -} - -BOOL DWC_SetRecvBuffer(u8 aid, void *recvBuffer, int size) { - DWCTransportConnection *connection = DWCs_GetTransConnection(aid); - - SDK_ASSERT(recvBuffer); - SDK_ASSERT(size > 0); - - if (DWCs_GetRecvState(aid) == DWC_TRANSPORT_RECV_BODY) { - DWC_Printf(DWC_REPORTFLAG_RECV_INFO, "+++ Cannot set recv buffer\n"); - - return FALSE; - } - - connection->recvBuffer = recvBuffer; - connection->recvBufferSize = size; - connection->recvState = DWC_TRANSPORT_RECV_HEADER; - connection->recvingSize = 0; - connection->requestRecvSize = 0; - - return TRUE; -} - -BOOL DWC_Ping(u8 aid) { - GT2Connection connection; - - if (DWCi_IsError()) { - return FALSE; - } - - connection = DWCi_GetGT2Connection(aid); - - if ((aid == DWC_GetMyAID()) || (!connection) || (gt2GetConnectionState(connection) != GT2Connected)) { - DWC_Printf(DWC_REPORTFLAG_SEND_INFO, "DWC_Ping:not connected yet:%d\n", aid); - - return FALSE; - } - - gt2Ping(connection); - - return TRUE; -} - -BOOL DWC_SetUserSendCallback(DWCUserSendCallback callback) { - if (sTransInfo == NULL) { - return FALSE; - } - - sTransInfo->sendCallback = callback; - - return TRUE; -} - -BOOL DWC_SetUserRecvCallback(DWCUserRecvCallback callback) { - if (sTransInfo == NULL) { - return FALSE; - } - - sTransInfo->recvCallback = callback; - - return TRUE; -} - -BOOL DWC_SetUserRecvTimeoutCallback(DWCUserRecvTimeoutCallback callback) { - if (sTransInfo == NULL) { - return FALSE; - } - - sTransInfo->recvTimeoutCallback = callback; - - return TRUE; -} - -BOOL DWC_SetUserPingCallback(DWCUserPingCallback callback) { - if (sTransInfo == NULL) { - return FALSE; - } - - sTransInfo->pingCallback = callback; - - return TRUE; -} - -BOOL DWC_SetSendSplitMax(u16 sendSplitMax) { - if (sTransInfo == NULL) { - return FALSE; - } - -#if 1 - SDK_ASSERT(sendSplitMax <= DWC_TRANSPORT_SEND_MAX); -#else - if (sendSplitMax > DWC_TRANSPORT_SEND_MAX) { - DWC_Printf(DWC_REPORTFLAG_SEND_INFO, "DWC_SetSendSplitMax:sendSplitMax > DWC_TRANSPORT_SEND_MAX:%d,%d\n", sendSplitMax, DWC_TRANSPORT_SEND_MAX); - sendSplitMax = DWC_TRANSPORT_SEND_MAX; - } -#endif - sTransInfo->sendSplitMax = sendSplitMax; - - return TRUE; -} - -static void DWCs_EncodeHeader(DWCTransportHeader *header, u16 type, int size) { - strncpy(header->magicStrings, DWC_MAGIC_STRINGS, DWC_MAGIC_STRINGS_LEN); - - header->type = type; - header->size = size; -} - -static u16 DWCs_DecodeHeader(const DWCTransportHeader *message) { - DWCTransportHeader header; - - MI_CpuCopy8(message, (u8 *)&header, sizeof(DWCTransportHeader)); - - if ((memcmp(header.magicStrings, DWC_MAGIC_STRINGS, DWC_MAGIC_STRINGS_LEN) == 0)) { - return header.type; - } - - return DWC_SEND_TYPE_INVALID; -} - -static s32 DWCs_GetRequiredHeaderSize(u16 type) { - s32 size; - - switch (type) { - case DWC_SEND_TYPE_MATCH_SYN: - case DWC_SEND_TYPE_MATCH_SYN_ACK: - case DWC_SEND_TYPE_MATCH_ACK: - size = sizeof(DWCTransportHeader) + DWC_MATCH_SYN_DATA_BODY_SIZE; - break; - default: - size = sizeof(DWCTransportHeader); - break; - } - - return size; -} - -BOOL DWC_SetRecvTimeoutTime(u8 aid, u32 time) { -#if 0 - GT2Connection connection = DWCi_GetGT2Connection(aid); - - if ((aid == DWC_GetMyAID()) || (!connection) || (gt2GetConnectionState(connection) != GT2Connected)) { - return; - } -#else - if (!sTransInfo) { - return FALSE; - } -#endif - - sTransInfo->connections[aid].recvTimeoutTime = time; - sTransInfo->connections[aid].previousRecvTick = OS_GetTick(); - - return TRUE; -} - -#ifndef SDK_FINALROM - - -BOOL DWC_SetSendDelay(u16 delay, u8 aid) { - GT2Connection connection; - - if (sTransInfo == NULL) { - return FALSE; - } - - connection = DWCi_GetGT2Connection(aid); - - if ((aid == DWC_GetMyAID()) || (!connection) || (gt2GetConnectionState(connection) != GT2Connected)) { - return FALSE; - } - - if (delay) { - if (!sTransInfo->connections[aid].sendDelay) { - if (!gt2AddSendFilter(connection, DWCs_SendFilterCallbackDelay)) { - DWCi_SetError(DWC_ERROR_FATAL, DWC_ECODE_SEQ_ETC + DWC_ECODE_GS_GT2 + DWC_ECODE_TYPE_ALLOC); - - return FALSE; - } - } - } - else { - gt2RemoveSendFilter(connection, DWCs_SendFilterCallbackDelay); - } - - sTransInfo->connections[aid].sendDelay = delay; - - return TRUE; -} - -BOOL DWC_SetRecvDelay(u16 delay, u8 aid) { - GT2Connection connection; - - if (sTransInfo == NULL) { - return FALSE; - } - - connection = DWCi_GetGT2Connection(aid); - - if ((aid == DWC_GetMyAID()) || (!connection) || (gt2GetConnectionState(connection) != GT2Connected)) { - return FALSE; - } - - if (delay) { - if (!sTransInfo->connections[aid].recvDelay) { - if (!gt2AddReceiveFilter(connection, DWCs_RecvFilterCallbackDelay)) { - DWCi_SetError(DWC_ERROR_FATAL, DWC_ECODE_SEQ_ETC + DWC_ECODE_GS_GT2 + DWC_ECODE_TYPE_ALLOC); - - return FALSE; - } - } - } - else { - gt2RemoveReceiveFilter(connection, DWCs_RecvFilterCallbackDelay); - } - - sTransInfo->connections[aid].recvDelay = delay; - - return TRUE; -} - -BOOL DWC_SetSendDrop(u8 drop, u8 aid) { - GT2Connection connection; - - if (sTransInfo == NULL) { - return FALSE; - } - - connection = DWCi_GetGT2Connection(aid); - - if ((aid == DWC_GetMyAID()) || (!connection) || (gt2GetConnectionState(connection) != GT2Connected)) { - return FALSE; - } - - sTransInfo->sendDrop = drop; - - if (drop) { - if (!gt2AddSendFilter(connection, DWCs_SendFilterCallbackDrop)) { - DWCi_SetError(DWC_ERROR_FATAL, DWC_ECODE_SEQ_ETC + DWC_ECODE_GS_GT2 + DWC_ECODE_TYPE_ALLOC); - - return FALSE; - } - } - else { - gt2RemoveSendFilter(connection, DWCs_SendFilterCallbackDrop); - } - - return TRUE; -} - -BOOL DWC_SetRecvDrop(u8 drop, u8 aid) { - GT2Connection connection; - - if (sTransInfo == NULL) { - return FALSE; - } - - connection = DWCi_GetGT2Connection(aid); - - if ((aid == DWC_GetMyAID()) || (!connection) || (gt2GetConnectionState(connection) != GT2Connected)) { - return FALSE; - } - - sTransInfo->recvDrop = drop; - - if (drop) { - if (!gt2AddReceiveFilter(connection, DWCs_RecvFilterCallbackDrop)) { - DWCi_SetError(DWC_ERROR_FATAL, DWC_ECODE_SEQ_ETC + DWC_ECODE_GS_GT2 + DWC_ECODE_TYPE_ALLOC); - - return FALSE; - } - } - else { - gt2RemoveReceiveFilter(connection, DWCs_RecvFilterCallbackDrop); - } - - return TRUE; -} -#endif - - -void DWCi_InitTransport(DWCTransportInfo *info) { - SDK_ASSERT(info); - - sTransInfo = info; - - MI_CpuClear8(sTransInfo, sizeof(DWCTransportInfo)); - sTransInfo->sendSplitMax = DWC_TRANSPORT_SEND_MAX; - -#ifndef SDK_FINALROM - MATH_InitRand16(&sTransInfo->context, sTransInfo->seed); - - sTransInfo->delayedSend = ArrayNew(sizeof(DWCDelayedMessage), 10, DWCs_DelayedMessageFree); - sTransInfo->delayedRecv = ArrayNew(sizeof(DWCDelayedMessage), 10, DWCs_DelayedMessageFree); -#endif -} - -void DWCi_RecvCallback(GT2Connection connection, GT2Byte *message, int size, GT2Bool reliable) { - if (!sTransInfo) { - return; - } - - DWC_Printf(DWC_REPORTFLAG_RECV_INFO, "%s aid = %d, size = %d, vcount = %d\n", reliable ? "[R]" : "[U]", DWCi_GetConnectionAID(connection), size, OS_GetVBlankCount()); - - if ((message == NULL) || (size == 0)) { - DWC_Printf(DWC_REPORTFLAG_WARNING, "Recv NULL message %x, size = %d\n", message, size); - return; - } - - if (reliable) { - DWCs_HandleReliableMessage(connection, message, size); - } - else { - DWCs_HandleUnreliableMessage(connection, message, size); - } -} - -void DWCi_PingCallback(GT2Connection connection, int latency) { - if (sTransInfo->pingCallback) { - u8 aid = DWCi_GetConnectionAID(connection); - sTransInfo->pingCallback(latency, aid); - } -} - -void DWCi_TransportProcess(void) { - u8 *aidList; - s32 hostCount; - s32 i; - - if (!sTransInfo) { - return; - } - - hostCount = DWC_GetAIDList(&aidList); - - for (i = 0; i < hostCount ; i++) { - u8 aid; - - aid = aidList[i]; - - if (DWC_IsValidAID(aid)) { - DWCTransportConnection *transConnection; - - transConnection = DWCs_GetTransConnection(aid); - - if (sTransInfo->recvTimeoutCallback && (transConnection->recvTimeoutTime > 0)) { - u32 time; - OSTick currentTick; - - currentTick = OS_GetTick(); - time = (u32)OS_TicksToMilliSeconds(currentTick - transConnection->previousRecvTick); - - if (time > transConnection->recvTimeoutTime) { - DWC_Printf(DWC_REPORTFLAG_RECV_INFO, "DWCi_TransportProcess:timeout aid=%d,time=%d[ms],timeout time=%d[ms]\n", aid, time, transConnection->recvTimeoutTime); - - sTransInfo->recvTimeoutCallback(aid); - transConnection->previousRecvTick = currentTick; - } - } - } - - if ((aid != DWC_GetMyAID()) && (DWCs_GetSendState(aid) == DWC_TRANSPORT_SEND_BUSY)) { - s32 restSize; - s32 sendSize; - s32 freeSpace; - DWCTransportConnection *transConnection; - - transConnection = DWCs_GetTransConnection(aid); - restSize = transConnection->requestSendSize - transConnection->sendingSize; - - if (restSize > sTransInfo->sendSplitMax) { - sendSize = sTransInfo->sendSplitMax; - } - else { - sendSize = restSize; - } - - freeSpace = DWCs_GetOutgoingBufferFreeSize(aid); - - if (freeSpace < sendSize) { - DWC_Printf(DWC_REPORTFLAG_SEND_INFO, "DWCi_TransportProcess:freeSpace < sendSize:aid:%d, %d < %d\n", aid, freeSpace, sendSize); - continue; - } - - DWCs_Send(aid, (u8 *)transConnection->sendBuffer + transConnection->sendingSize, sendSize, TRUE); - - transConnection->sendingSize += sendSize; - - DWC_Printf( - DWC_REPORTFLAG_SEND_INFO, "DWCi_TransportProcess:aid = %d, size = %d/%d, outgoing buffer = %d, vcont = %d\n", aid, transConnection->sendingSize, transConnection->requestSendSize, freeSpace - sendSize, OS_GetVBlankCount()); - - if (transConnection->sendingSize == transConnection->requestSendSize) { - int reqSendSize = transConnection->requestSendSize; - - transConnection->sendState = DWC_TRANSPORT_SEND_READY; - transConnection->sendBuffer = NULL; - transConnection->sendingSize = 0; - transConnection->requestSendSize = 0; - - if (sTransInfo->sendCallback) { - sTransInfo->sendCallback(reqSendSize, aid); - } - } - } - -#ifndef SDK_FINALROM -#if 0 - { - OSTick now = OS_GetTick(); - - if (sTransInfo->connections[aid].sendDelay) { - DWCs_DelayCheck(sTransInfo->delayedSend, now, TRUE); - } - - if (sTransInfo->connections[aid].recvDelay) { - DWCs_DelayCheck(sTransInfo->delayedRecv, now, FALSE); - } - } -#endif -#endif - } - -#ifndef SDK_FINALROM - { - OSTick now = OS_GetTick(); - DWCs_DelayCheck(sTransInfo->delayedSend, now, TRUE); - DWCs_DelayCheck(sTransInfo->delayedRecv, now, FALSE); - } -#endif -} - -void DWCi_ClearTransConnection(u8 aid) { - if (!sTransInfo) { - return; - } - -#if 1 - sTransInfo->connections[aid].sendingSize = 0; - sTransInfo->connections[aid].recvingSize = 0; - sTransInfo->connections[aid].requestSendSize = 0; - sTransInfo->connections[aid].requestRecvSize = 0; - sTransInfo->connections[aid].sendState = 0; - - if (sTransInfo->connections[aid].recvState != DWC_TRANSPORT_RECV_NOBUF) { - sTransInfo->connections[aid].recvState = DWC_TRANSPORT_RECV_HEADER; - } - - sTransInfo->connections[aid].lastRecvType = 0; -#else - MI_CpuClear8(&sTransInfo->connections[aid], sizeof(DWCTransportConnection)); -#endif -} - -void DWCi_ShutdownTransport(void) { -#ifndef SDK_FINALROM - ArrayFree(sTransInfo->delayedSend); - ArrayFree(sTransInfo->delayedRecv); -#endif - - sTransInfo = NULL; -} - -static DWCTransportConnection*DWCs_GetTransConnection(u8 aid) { - SDK_ASSERT((aid >= 0) && (aid < DWC_MAX_CONNECTIONS)); - return &sTransInfo->connections[aid]; -} - -static int DWCs_GetSendState(u8 aid) { - return sTransInfo->connections[aid].sendState; -} - -static int DWCs_GetRecvState(u8 aid) { - return sTransInfo->connections[aid].recvState; -} - -void DWCs_Send(u8 aid, const u8 *buffer, int size, BOOL reliable) { - GT2Connection connection = DWCi_GetGT2Connection(aid); - gt2Send(connection, buffer, size, reliable); -} - -static void DWCs_HandleReliableMessage(GT2Connection connection, u8 *message, int size) { - u8 aid = DWCi_GetConnectionAID(connection); - u16 type; - - switch (DWCs_GetRecvState(aid)) { - case DWC_TRANSPORT_RECV_NOBUF: - type = DWCs_DecodeHeader((DWCTransportHeader *)message); - - if ((type >= DWC_SEND_TYPE_MATCH_SYN) && (type <= DWC_SEND_TYPE_MATCH_ACK)) { - DWCs_RecvDataHeader(aid, (DWCTransportHeader *)message, size); - } - else { - DWC_Printf(DWC_REPORTFLAG_RECV_INFO, "+++ Recv buffer is not set\n"); - } - break; - case DWC_TRANSPORT_RECV_HEADER: - DWCs_RecvDataHeader(aid, (DWCTransportHeader *)message, size); - break; - case DWC_TRANSPORT_RECV_BODY: - DWCs_RecvDataBody(aid, message, size); - break; - case DWC_TRANSPORT_RECV_SYSTEM_DATA: - DWCs_RecvSystemDataBody(aid, message, size); - break; - case DWC_TRANSPORT_RECV_ERROR: - DWC_Printf(DWC_REPORTFLAG_RECV_INFO, "+++ Recv size is too large ( buffer size = %d < %d )\n", sTransInfo->connections[aid].recvBufferSize, size); - sTransInfo->connections[aid].recvState = DWC_TRANSPORT_RECV_HEADER; - sTransInfo->connections[aid].recvingSize = 0; - sTransInfo->connections[aid].requestRecvSize = 0; - break; - default: - DWC_Printf(DWC_REPORTFLAG_ERROR, "Recv error (state is %d).\n", DWCs_GetRecvState(aid)); - DWCi_SetError(DWC_ERROR_NETWORK, DWC_ECODE_SEQ_ETC + DWC_ECODE_GS_GT2 + DWC_ECODE_TYPE_TRANS_HEADER); - break; - } -} - -static void DWCs_HandleUnreliableMessage(GT2Connection connection, void *message, int size) { - u8 aid = DWCi_GetConnectionAID(connection); - DWCTransportConnection *transConnection = &sTransInfo->connections[aid]; - - if (transConnection->recvBuffer && (transConnection->recvBufferSize >= size)) { - if (sTransInfo->recvCallback) { - sTransInfo->recvCallback(aid, message, size); - } - - if (sTransInfo->recvTimeoutCallback && (transConnection->recvTimeoutTime > 0)) { - transConnection->previousRecvTick = OS_GetTick(); - } - } - else { - DWC_Printf(DWC_REPORTFLAG_RECV_INFO, "Recv data size is too large (%d > %d)\n", size, transConnection->recvBufferSize); - return; - } -} - -static void DWCs_RecvDataHeader(u8 aid, DWCTransportHeader *message, int size) { - u16 type; - DWCTransportConnection *connection = &sTransInfo->connections[aid]; - DWCTransportHeader header; - - connection->lastRecvState = (u8)DWCs_GetRecvState(aid); - - switch (type = DWCs_DecodeHeader(message)) { - case DWC_SEND_TYPE_USERDATA: - - if (size != sizeof(DWCTransportHeader)) { - DWC_Printf(DWC_REPORTFLAG_RECV_INFO, "+++ Invalid header from aid %d\n", aid); - - return; - } - - MI_CpuCopy8(message, &header, sizeof(DWCTransportHeader)); - - connection->requestRecvSize = header.size; - connection->recvingSize = 0; - - if (connection->recvBuffer && (connection->recvBufferSize >= connection->requestRecvSize)) { - connection->recvState = DWC_TRANSPORT_RECV_BODY; - } - else { - connection->recvState = DWC_TRANSPORT_RECV_ERROR; - } - - break; - - case DWC_SEND_TYPE_MATCH_SYN: - case DWC_SEND_TYPE_MATCH_SYN_ACK: - case DWC_SEND_TYPE_MATCH_ACK: - - DWC_Printf(DWC_REPORTFLAG_RECV_INFO, "Received system header.\n"); - connection->recvState = DWC_TRANSPORT_RECV_SYSTEM_DATA; - break; - - default: - DWC_Printf(DWC_REPORTFLAG_RECV_INFO, "+++ Invalid header from aid %d\n", aid); - break; - } - - connection->lastRecvType = type; -} - -static void DWCs_RecvDataBody(u8 aid, void *message, int size) { - DWCTransportConnection *connection; - int requestSize; - - connection = &sTransInfo->connections[aid]; - - if (DWCs_GetRecvState(aid) == DWC_TRANSPORT_RECV_BODY) { - if (connection->recvingSize + size > connection->recvBufferSize) { - DWC_Printf(DWC_REPORTFLAG_ERROR, "Recv buffer over flow.\n"); - DWCi_SetError(DWC_ERROR_NETWORK, DWC_ECODE_SEQ_ETC + DWC_ECODE_GS_GT2 + DWC_ECODE_TYPE_TRANS_BODY); - - return; - } - - MI_CpuCopy8(message, (u8 *)connection->recvBuffer + connection->recvingSize, (u32)size); - } - - connection->recvingSize += size; - - DWC_Printf(DWC_REPORTFLAG_RECV_INFO, "aid = %d size = %d/%d state = %d incoming buffer = %d\n", aid, connection->recvingSize, connection->requestRecvSize, DWCs_GetRecvState(aid), gt2GetIncomingBufferFreeSpace(DWCi_GetGT2Connection(aid))); - - if (connection->recvingSize == connection->requestRecvSize) { - requestSize = connection->requestRecvSize; - - connection->recvState = DWC_TRANSPORT_RECV_HEADER; - connection->recvingSize = 0; - connection->requestRecvSize = 0; - - if (sTransInfo->recvCallback) { - sTransInfo->recvCallback(aid, connection->recvBuffer, requestSize); - } - } - - if (sTransInfo->recvTimeoutCallback && (connection->recvTimeoutTime > 0)) { - connection->previousRecvTick = OS_GetTick(); - } -} - -static void DWCs_RecvSystemDataBody(u8 aid, void *message, int size) { -#pragma unused( size ) - DWCTransportConnection *transConnection = DWCs_GetTransConnection(aid); - - transConnection->recvState = transConnection->lastRecvState; - - switch (transConnection->lastRecvType) { - case DWC_SEND_TYPE_MATCH_SYN: - case DWC_SEND_TYPE_MATCH_SYN_ACK: - case DWC_SEND_TYPE_MATCH_ACK: - DWCi_ProcessMatchSynPacket(aid, transConnection->lastRecvType, (u8 *)message); - break; - } -} - -static void DWCs_DelayCheck(DArray delayedMessages, OSTick now, BOOL send) { - DWCDelayedMessage *msg; - int i; - int num; - int freeSpace; - u8 aid; - - if (delayedMessages == NULL) { - return; - } - - num = ArrayLength(delayedMessages); - - for (i = (num - 1); i >= 0; --i) { - msg = (DWCDelayedMessage *)ArrayNth(delayedMessages, i); - - if (OS_TicksToMilliSeconds(now - msg->startTime) > msg->delayTime) { - if (send) { -#if 0 - aid = DWCi_GetConnectionAID(msg->connection); - - if (!DWCi_IsValidAID(aid)) -#else - if (gt2GetConnectionState(msg->connection) != GT2Connected) -#endif - { - ArrayDeleteAt(delayedMessages, i); - continue; - } - -#if 1 - aid = DWCi_GetConnectionAID(msg->connection); -#endif - freeSpace = DWCs_GetOutgoingBufferFreeSize(aid); - - if (freeSpace > msg->size) { - gt2FilteredSend(msg->connection, msg->filterID, msg->message, msg->size, msg->reliable); - } - else { - return; - } - } - else { - gt2FilteredReceive(msg->connection, msg->filterID, msg->message, msg->size, msg->reliable); - } - - ArrayDeleteAt(delayedMessages, i); - } - else { - return; - } - } -} - -static void DWCs_AddDelayMessage(DArray array, u16 delayValue, GT2Connection connection, int filterID, const u8 *message, int size, BOOL reliable) { - DWCDelayedMessage msg; - - MI_CpuClear8(&msg, sizeof(DWCDelayedMessage)); - - msg.connection = connection; - msg.message = gsimalloc((u32)size); - - if (msg.message == NULL) { - DWCi_SetError(DWC_ERROR_FATAL, DWC_ECODE_SEQ_ETC + DWC_ECODE_GS_GT2 + DWC_ECODE_TYPE_ALLOC); - - return; - } - - MI_CpuCopy8(message, msg.message, (u32)size); - - msg.filterID = filterID; - msg.size = size; - msg.reliable = reliable; - msg.startTime = OS_GetTick(); - msg.delayTime = delayValue; - - ArrayInsertAt(array, &msg, 0); -} - -static void DWCs_DelayedMessageFree(void *elem) { - DWCDelayedMessage *message = (DWCDelayedMessage *)elem; - gsifree(message->message); -} - -static int DWCs_GetOutgoingBufferFreeSize(u8 aid) { - static const int gamespyUseSize = 512; - GT2Connection connection = DWCi_GetGT2Connection(aid); - int free; - - SDK_ASSERT(connection); - - free = gt2GetOutgoingBufferFreeSpace(connection) - DWC_TRANSPORT_GT2HEADER_SIZE - gamespyUseSize; - - return (free > 0) ? free : 0; -} - -#ifndef SDK_FINALROM -static void DWCs_SendFilterCallbackDrop(GT2Connection connection, int filterID, const GT2Byte *message, int size, GT2Bool reliable) { - if (!reliable && (MATH_Rand16(&sTransInfo->context, 100) < sTransInfo->sendDrop)) { - DWC_Printf(DWC_REPORTFLAG_SEND_INFO, "Packet loss\n"); - - return; - } - - gt2FilteredSend(connection, filterID, message, size, reliable); -} - -static void DWCs_RecvFilterCallbackDrop(GT2Connection connection, int filterID, GT2Byte *message, int size, GT2Bool reliable) { - if (!reliable && (MATH_Rand16(&sTransInfo->context, 100) < sTransInfo->recvDrop)) { - DWC_Printf(DWC_REPORTFLAG_RECV_INFO, "Packet loss\n"); - return; - } - - gt2FilteredReceive(connection, filterID, message, size, reliable); -} - -static void DWCs_SendFilterCallbackDelay(GT2Connection connection, int filterID, const u8 *message, int size, BOOL reliable) { - u8 aid = DWCi_GetConnectionAID(connection); - DWCs_AddDelayMessage(sTransInfo->delayedSend, sTransInfo->connections[aid].sendDelay, connection, filterID, message, size, reliable); -} - -static void DWCs_RecvFilterCallbackDelay(GT2Connection connection, int filterID, u8 *message, int size, BOOL reliable) { - u8 aid = DWCi_GetConnectionAID(connection); - DWCs_AddDelayMessage(sTransInfo->delayedRecv, sTransInfo->connections[aid].recvDelay, connection, filterID, message, size, reliable); -} - - -#endif diff --git a/subprojects/NitroDWC/libraries/bm/asm/dwc_backup.s b/subprojects/NitroDWC/libraries/bm/asm/dwc_backup.s deleted file mode 100644 index 09e5b386e0..0000000000 --- a/subprojects/NitroDWC/libraries/bm/asm/dwc_backup.s +++ /dev/null @@ -1,948 +0,0 @@ - .include "macros/function.inc" - .include "include/dwc_backup.inc" - - .extern Unk_021C3A48 - .extern Unk_021C3A54 - .extern Unk_021C3A80 - - - .text - - - arm_func_start sub_020A2810 -sub_020A2810: ; 0x020A2810 - stmfd sp!, {r3, lr} - ldr r1, _020A2838 ; =0x021C3A48 - mov r2, r0 - ldr r0, [r1, #8] - mov r1, #0x300 - bl sub_020A3144 - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_020A2838: .word Unk_021C3A48 - arm_func_end sub_020A2810 - - arm_func_start sub_020A283C -sub_020A283C: ; 0x020A283C - stmfd sp!, {r4, lr} - mov r4, r0 - ldr r0, _020A28FC ; =0x021C3A54 - mov r1, r4 - mov r2, #6 - bl MI_CpuCopy8 - ldr r1, _020A2900 ; =0x000007FF - ldr r3, [r4, #0] - sub r0, r1, #0x800 - ldr r2, [r4, #4] - and r0, r3, r0 - str r0, [r4, #0] - and r1, r2, r1 - str r1, [r4, #4] - ldr r0, _020A2904 ; =0x021C3A59 - add r1, r4, #8 - mov r2, #6 - bl MI_CpuCopy8 - ldr r1, [r4, #8] - ldr r0, [r4, #0xc] - mov r1, r1, lsr #3 - orr r1, r1, r0, lsl #29 - str r1, [r4, #8] - mov r3, r0, lsr #3 - str r3, [r4, #0xc] - ldr r1, _020A2900 ; =0x000007FF - ldr r2, [r4, #8] - sub r0, r1, #0x800 - and r0, r2, r0 - str r0, [r4, #8] - and r1, r1, r3 - str r1, [r4, #0xc] - ldr r0, _020A2908 ; =0x021C3A5E - add r1, r4, #0x10 - mov r2, #2 - bl MI_CpuCopy8 - ldrh r1, [r4, #0x10] - ldr r3, _020A290C ; =0x000003FF - ldr r0, _020A2910 ; =0x021C3A60 - mov r1, r1, asr #6 - strh r1, [r4, #0x10] - ldrh ip, [r4, #0x10] - add r1, r4, #0x12 - mov r2, #2 - and r3, ip, r3 - strh r3, [r4, #0x10] - bl MI_CpuCopy8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_020A28FC: .word Unk_021C3A54 -_020A2900: .word 0x000007FF -_020A2904: .word 0x021C3A59 -_020A2908: .word 0x021C3A5E -_020A290C: .word 0x000003FF -_020A2910: .word 0x021C3A60 - arm_func_end sub_020A283C - - arm_func_start sub_020A2914 -sub_020A2914: ; 0x020A2914 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r2, _020A29E4 ; =0x021C3A48 - mov sl, r1 - ldr sb, [r2, #8] - bl sub_020A3338 - ldr r1, _020A29E8 ; =0x0000A001 - add r0, sl, #0x200 - bl MATHi_CRC16InitTableRev - mov r5, #0x100 - ldr r6, _020A29EC ; =0x021C3A54 - mov r8, #0 - mov r4, r5 - mov fp, #0xe - mov r7, r5 -_020A294C: - mov r0, sb - mov r1, r7 - mov r2, sl - bl sub_020A3144 - cmp r0, #0 - bne _020A2970 - bl OS_Terminate - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_020A2970: - mov r0, r6 - mov r2, fp - add r1, sl, #0xf0 - bl MI_CpuCopy8 - mov r1, sl - mov r2, #0xfe - add r0, sl, #0x200 - bl MATH_CalcCRC16 - strh r0, [sl, #0xfe] -_020A2994: - mov r0, sb - mov r1, r5 - mov r2, sl - bl sub_020A31D4 - mov r0, sl - mov r1, sb - mov r2, r4 - add r3, sl, #0x100 - bl sub_020A3250 - cmp r0, #0 - beq _020A2994 - add r8, r8, #1 - cmp r8, #2 - add sb, sb, #0x100 - blt _020A294C - bl sub_020A329C - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_020A29E4: .word Unk_021C3A48 -_020A29E8: .word 0x0000A001 -_020A29EC: .word Unk_021C3A54 - arm_func_end sub_020A2914 - - arm_func_start sub_020A29F0 -sub_020A29F0: ; 0x020A29F0 - stmfd sp!, {r4, lr} - mov r4, r0 - mov r0, #0x20 - mov r1, r0 - mov r2, r4 - bl sub_020A3144 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldrh r2, [r4] - ldr r1, _020A2A30 ; =0x021C3A48 - mov r0, #1 - mov r2, r2, lsl #3 - sub r2, r2, #0x400 - str r2, [r1, #8] - ldmia sp!, {r4, pc} - ; .align 2, 0 -_020A2A30: .word Unk_021C3A48 - arm_func_end sub_020A29F0 - - arm_func_start sub_020A2A34 -sub_020A2A34: ; 0x020A2A34 - stmfd sp!, {r3, lr} - ldr r1, _020A2A5C ; =0x021C3A48 - mov r2, r0 - ldr r0, [r1, #8] - mov r1, #0x400 - bl sub_020A3144 - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_020A2A5C: .word Unk_021C3A48 - arm_func_end sub_020A2A34 - - arm_func_start sub_020A2A60 -sub_020A2A60: ; 0x020A2A60 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - ldr r3, _020A2AE4 ; =0x021C3A48 - mov sl, #0x100 - ldr r5, [r3, #8] - mov r8, r0 - mov r7, r1 - mov r6, r2 - mov r4, #0 - mov sb, sl -_020A2A84: - ldr r0, [r7, r4, lsl #2] - cmp r0, #0 - beq _020A2ABC -_020A2A90: - mov r0, r5 - mov r1, sl - mov r2, r8 - bl sub_020A31D4 - mov r0, r8 - mov r1, r5 - mov r2, sb - mov r3, r6 - bl sub_020A3250 - cmp r0, #0 - beq _020A2A90 -_020A2ABC: - add r4, r4, #1 - cmp r4, #4 - add r8, r8, #0x100 - add r5, r5, #0x100 - blt _020A2A84 - bl sub_020A329C - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ; .align 2, 0 -_020A2AE4: .word Unk_021C3A48 - arm_func_end sub_020A2A60 - - arm_func_start sub_020A2AE8 -sub_020A2AE8: ; 0x020A2AE8 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - ldr r1, _020A2B78 ; =0x021C3A48 - mov r8, r0 - mov sl, #0x100 - ldr r6, [r1, #8] - mov r7, r8 - mov r5, #0 - mov sb, sl - mov r4, #0xfe -_020A2B0C: - mov r1, r7 - mov r2, r4 - add r0, r8, #0x500 - bl MATH_CalcCRC16 - add r1, r8, r5, lsl #8 - strh r0, [r1, #0xfe] -_020A2B24: - mov r0, r6 - mov r1, sl - mov r2, r7 - bl sub_020A31D4 - mov r0, r7 - mov r1, r6 - mov r2, sb - add r3, r8, #0x400 - bl sub_020A3250 - cmp r0, #0 - beq _020A2B24 - add r5, r5, #1 - cmp r5, #4 - add r7, r7, #0x100 - add r6, r6, #0x100 - blt _020A2B0C - bl sub_020A329C - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ; .align 2, 0 -_020A2B78: .word Unk_021C3A48 - arm_func_end sub_020A2AE8 - - arm_func_start sub_020A2B7C -sub_020A2B7C: ; 0x020A2B7C - ldr ip, _020A2B8C ; =MI_CpuCopy8 - ldr r1, _020A2B90 ; =0x021C3A54 - mov r2, #0xe - bx ip - ; .align 2, 0 -_020A2B8C: .word MI_CpuCopy8 -_020A2B90: .word Unk_021C3A54 - arm_func_end sub_020A2B7C - - arm_func_start sub_020A2B94 -sub_020A2B94: ; 0x020A2B94 - stmfd sp!, {r4, lr} - mov ip, #0 - mov r3, ip - mov r2, ip -_020A2BA4: - ldrb r4, [r0, ip] - mov lr, r2 -_020A2BAC: - mov r1, r4, asr lr - tst r1, #1 - add lr, lr, #1 - addne r3, r3, #1 - cmp lr, #8 - blt _020A2BAC - add ip, ip, #1 - cmp ip, #4 - blt _020A2BA4 - and r0, r3, #0xff - ldmia sp!, {r4, pc} - arm_func_end sub_020A2B94 - - arm_func_start sub_020A2BD8 -sub_020A2BD8: ; 0x020A2BD8 - mvn r2, #0 - mov r3, #0 - eor r2, r2, r2, lsr r0 - mov ip, r3 -_020A2BE8: - rsb r0, ip, #0x18 - mov r0, r2, lsr r0 - strb r0, [r1, r3] - add r3, r3, #1 - cmp r3, #4 - add ip, ip, #8 - blt _020A2BE8 - bx lr - arm_func_end sub_020A2BD8 - - arm_func_start sub_020A2C08 -sub_020A2C08: ; 0x020A2C08 - mov r2, #0 -_020A2C0C: - ldrb r1, [r0, r2] - cmp r1, #0 - movne r0, #1 - bxne lr - add r2, r2, #1 - cmp r2, #0x20 - blt _020A2C0C - mov r0, #0 - bx lr - arm_func_end sub_020A2C08 - - arm_func_start sub_020A2C30 -sub_020A2C30: ; 0x020A2C30 - stmfd sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - mov r5, r0 - mov r4, r1 - bl sub_020A2CAC - cmp r0, #0 - addeq sp, sp, #8 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - add r1, sp, #4 - mov r0, r5 - mov r2, #4 - bl MI_CpuCopy8 - add r1, sp, #0 - mov r0, r4 - mov r2, #4 - bl MI_CpuCopy8 - ldr r3, [sp] - ldr r2, [sp, #4] - mvn r0, #1 - orr r1, r2, r3 - cmp r1, r0 - addeq sp, sp, #8 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mvn r0, r3 - tst r2, r0 - movne r0, #1 - moveq r0, #0 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end sub_020A2C30 - - arm_func_start sub_020A2CAC -sub_020A2CAC: ; 0x020A2CAC - ldrb r0, [r0] - cmp r0, #0x7f - moveq r0, #0 - bxeq lr - cmp r0, #1 - movlo r0, #0 - bxlo lr - cmp r0, #0xdf - movls r0, #1 - movhi r0, #0 - bx lr - arm_func_end sub_020A2CAC - - arm_func_start sub_020A2CD8 -sub_020A2CD8: ; 0x020A2CD8 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x3c - ldr sl, _020A312C ; =0x021C3A80 - mov r8, r1, lsr #0x10 - mov r4, sl, lsl #8 - mov sb, r4 - and r4, r4, #0xff00 - mov r1, r1, lsl #0x10 - orr r4, r4, #0x20000 - mov r5, r3, lsr #0x10 - mov r7, r0 - ldr ip, _020A3130 ; =0x01020000 - mov r1, r1, lsr #0x10 - str r4, [sp, #0x30] - orr r4, r1, #0x10000 - mov r3, r3, lsl #0x10 - add r1, ip, #0x30000 - orr r1, r1, r3, lsr #16 - str r1, [sp, #0x10] - mov r1, r3, lsr #0x10 - orr r1, r1, #0x1040000 - ldr r0, _020A3134 ; =0x02002200 - str r1, [sp, #0x24] - orr r1, r0, sl, lsr #24 - str r1, [sp, #0x28] - ldr r1, [sp, #0x30] - mov sb, sb, lsr #0x10 - orr r1, r1, #0x1000000 - str r1, [sp, #0x30] - add r1, r0, #0x300 - and r8, r8, #0xff - add r0, r0, #0x100 - orr r0, r8, r0 - orr r1, r8, r1 - str r0, [sp] - orr r0, r2, #0x20000 - str r0, [sp, #0x1c] - orr r0, r5, #0x30000 - str r0, [sp, #0x20] - orr r0, r5, #0x40000 - str r0, [sp, #0xc] - ldr r0, _020A3138 ; =0x03002100 - mov r6, #0 - sub r0, r0, #0x100 - str r0, [sp, #0x14] - mov r0, r2, lsr #0x10 - orr r0, r0, #0x20000 - str r0, [sp, #4] - mov r0, r2, lsl #0x10 - mov r0, r0, lsr #0x10 - orr sb, sb, #0x10000 - orr r0, r0, #0x30000 - str sb, [sp, #0x2c] - str r1, [sp, #0x18] - str r0, [sp, #8] - mov r5, r6 - mov r8, #0xfa0 -_020A2DBC: - cmp r6, #0 - bne _020A2FFC - ldr r0, _020A313C ; =0x021C3A48 - cmp r7, #7 - str r5, [r0, #4] - addls pc, pc, r7, lsl #2 - b _020A2DBC -_020A2DD8: ; jump table - b _020A2DBC ; case 0 - b _020A2DF8 ; case 1 - b _020A2EA4 ; case 2 - b _020A2EC4 ; case 3 - b _020A2F60 ; case 4 - b _020A2F60 ; case 5 - b _020A2FB8 ; case 6 - b _020A2FDC ; case 7 -_020A2DF8: - ldr r1, [sp] - mov r0, #4 - mov r2, r5 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r6, #0 - blt _020A2DBC - mov r0, #4 - mov r1, r4 - mov r2, #0 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r6, #0 - blt _020A2DBC - ldr r1, [sp, #4] - mov r0, #4 - mov r2, #0 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r6, #0 - blt _020A2DBC - ldr r1, [sp, #8] - mov r0, #4 - mov r2, #0 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r6, #0 - blt _020A2DBC - ldr r1, [sp, #0xc] - mov r0, #4 - mov r2, #0 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r6, #0 - blt _020A2DBC - ldr r1, [sp, #0x10] - mov r0, #4 - mov r2, #0 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r6, #0 - movge r6, #1 - b _020A2DBC -_020A2EA4: - ldr r1, [sp, #0x14] - mov r0, #4 - mov r2, r5 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r6, #0 - movge r6, #1 - b _020A2DBC -_020A2EC4: - ldr r1, [sp, #0x18] - mov r0, #4 - mov r2, r5 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r6, #0 - blt _020A2F50 - mov r0, #4 - mov r1, r4 - mov r2, #0 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r6, #0 - blt _020A2F50 - ldr r1, [sp, #0x1c] - mov r0, #4 - mov r2, #0 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r6, #0 - blt _020A2F50 - ldr r1, [sp, #0x20] - mov r0, #4 - mov r2, #0 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r6, #0 - blt _020A2F50 - ldr r1, [sp, #0x24] - mov r0, #4 - mov r2, #0 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r6, #0 - movge r6, #1 -_020A2F50: - bl OS_GetTick - str r0, [sp, #0x34] - mov fp, r1 - b _020A2DBC -_020A2F60: - ldr r1, [sp, #0x28] - mov r0, #4 - mov r2, r5 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r6, #0 - blt _020A2DBC - ldr r1, [sp, #0x2c] - mov r0, #4 - mov r2, #0 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r6, #0 - blt _020A2DBC - ldr r1, [sp, #0x30] - mov r0, #4 - mov r2, #0 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r6, #0 - movge r6, #1 - b _020A2DBC -_020A2FB8: - ldr r1, _020A3138 ; =0x03002100 - mov r0, #4 - add r1, r1, #0xc00 - mov r2, r5 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r6, #0 - movge r6, #1 - b _020A2DBC -_020A2FDC: - ldr r1, _020A3138 ; =0x03002100 - mov r0, #4 - mov r2, r5 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r6, #0 - movge r6, #1 - b _020A2DBC -_020A2FFC: - ldr r0, _020A313C ; =0x021C3A48 - ldr r0, [r0, #4] - cmp r0, #1 - bne _020A2DBC - ldr r0, _020A313C ; =0x021C3A48 - mov r6, #0 - ldrh r0, [r0] - cmp r0, #0 - bne _020A3120 - cmp r7, #7 - addls pc, pc, r7, lsl #2 - b _020A2DBC -_020A302C: ; jump table - b _020A2DBC ; case 0 - b _020A304C ; case 1 - b _020A3058 ; case 2 - b _020A3060 ; case 3 - b _020A3068 ; case 4 - b _020A3068 ; case 5 - b _020A3108 ; case 6 - b _020A3114 ; case 7 -_020A304C: - add sp, sp, #0x3c - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_020A3058: - mov r7, #4 - b _020A2DBC -_020A3060: - mov r7, #5 - b _020A2DBC -_020A3068: - mov r0, sl - mov r1, #1 - bl DC_InvalidateRange - cmp r7, #4 - ldrb r0, [sl] - bne _020A3098 - tst r0, #2 - movne r7, #3 - bne _020A2DBC - add sp, sp, #0x3c - mov r0, r6 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_020A3098: - tst r0, #1 - addeq sp, sp, #0x3c - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - tst r0, #0x20 - bne _020A30F4 - bl OS_GetTick - ldr r2, [sp, #0x34] - mov ip, r6 - subs sb, r0, r2 - mov r0, #0x40 - sbc lr, r1, fp - umull r0, r1, sb, r0 - mla r1, sb, ip, r1 - mov sb, #0x40 - mla r1, lr, sb, r1 - ldr r2, _020A3140 ; =0x000082EA - mov r3, r6 - bl _ull_div - mov r2, r6 - cmp r1, r2 - cmpeq r0, r8 - bls _020A30FC -_020A30F4: - mov r7, #6 - b _020A2DBC -_020A30FC: - mov r0, #0x4000 - bl SVC_WaitByLoop - b _020A2DBC -_020A3108: - add sp, sp, #0x3c - mov r0, r6 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_020A3114: - add sp, sp, #0x3c - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_020A3120: - mov r0, r6 - add sp, sp, #0x3c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_020A312C: .word Unk_021C3A80 -_020A3130: .word 0x01020000 -_020A3134: .word 0x02002200 -_020A3138: .word 0x03002100 -_020A313C: .word Unk_021C3A48 -_020A3140: .word 0x000082EA - arm_func_end sub_020A2CD8 - - arm_func_start sub_020A3144 -sub_020A3144: ; 0x020A3144 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r4, r2 - mov r6, r0 - mov r0, r4 - mov r5, r1 - bl DC_InvalidateRange - mov r8, #4 - mov r7, #1 -_020A3164: - mov r0, r8 - mov r1, r7 - bl PXI_IsCallbackReady - cmp r0, #0 - beq _020A3164 - ldr r1, _020A31D0 ; =sub_020A3308 - mov r0, #4 - bl PXI_SetFifoRecvCallback - mov r0, r5, lsl #0x10 - mov r8, r0, lsr #0x10 - mov r7, #0x40000 - mov sb, #1 -_020A3194: - mov r0, sb - mov r1, r6 - mov r2, r8 - mov r3, r4 - bl sub_020A2CD8 - cmp r0, #1 - beq _020A31BC - mov r0, r7 - bl SVC_WaitByLoop - b _020A3194 -_020A31BC: - mov r0, r4 - mov r1, r5 - bl DC_InvalidateRange - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ; .align 2, 0 -_020A31D0: .word sub_020A3308 - arm_func_end sub_020A3144 - - arm_func_start sub_020A31D4 -sub_020A31D4: ; 0x020A31D4 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - mov r8, r0 - mov r7, r1 - mov r6, r2 - mov r5, #4 - mov r4, #1 -_020A31EC: - mov r0, r5 - mov r1, r4 - bl PXI_IsCallbackReady - cmp r0, #0 - beq _020A31EC - ldr r1, _020A324C ; =sub_020A3308 - mov r0, #4 - bl PXI_SetFifoRecvCallback - mov r0, r6 - mov r1, r7 - bl DC_StoreRange - mov r4, #0x40000 - mov r5, #2 -_020A3220: - mov r0, r5 - mov r1, r8 - mov r2, r7 - mov r3, r6 - bl sub_020A2CD8 - cmp r0, #1 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, r4 - bl SVC_WaitByLoop - b _020A3220 -_020A3248: - .byte 0xF0, 0x81, 0xBD, 0xE8 -_020A324C: .word sub_020A3308 - arm_func_end sub_020A31D4 - - arm_func_start sub_020A3250 -sub_020A3250: ; 0x020A3250 - stmfd sp!, {r4, r5, r6, lr} - mov r5, r2 - mov r4, r3 - mov r6, r0 - mov r0, r1 - mov r1, r5 - mov r2, r4 - bl sub_020A3144 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl memcmp - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end sub_020A3250 - - arm_func_start sub_020A329C -sub_020A329C: ; 0x020A329C - stmfd sp!, {r4, r5, r6, lr} - mov r5, #4 - mov r4, #1 -_020A32A8: - mov r0, r5 - mov r1, r4 - bl PXI_IsCallbackReady - cmp r0, #0 - beq _020A32A8 - ldr r1, _020A3304 ; =sub_020A3308 - mov r0, #4 - bl PXI_SetFifoRecvCallback - mov r4, #0x40000 - mov r6, #7 - mov r5, #0 -_020A32D4: - mov r0, r6 - mov r1, r5 - mov r2, r5 - mov r3, r5 - bl sub_020A2CD8 - cmp r0, #1 - beq _020A32FC - mov r0, r4 - bl SVC_WaitByLoop - b _020A32D4 -_020A32FC: - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_020A3304: .word sub_020A3308 - arm_func_end sub_020A329C - - arm_func_start sub_020A3308 -sub_020A3308: ; 0x020A3308 - ldr r0, _020A3334 ; =0x021C3A48 - and r1, r1, #0xff - strh r1, [r0] - mov r1, #1 - str r1, [r0, #4] - cmp r2, #0 - movne r1, #0xff - strneh r1, [r0] - ldr r0, _020A3334 ; =0x021C3A48 - ldrh r0, [r0] - bx lr - ; .align 2, 0 -_020A3334: .word Unk_021C3A48 - arm_func_end sub_020A3308 - - arm_func_start sub_020A3338 -sub_020A3338: ; 0x020A3338 - stmfd sp!, {r4, lr} - sub sp, sp, #8 - mov r4, r0 - ldr r3, [r4, #8] - ldr r2, [r4, #0xc] - ldr r1, _020A33EC ; =0x021C3A54 - str r2, [sp, #4] - str r3, [sp] - mov r2, #5 - bl MI_CpuCopy8 - ldr r2, [sp] - ldr r1, [sp, #4] - mov ip, r2, lsr #5 - ldr lr, [r4, #4] - mov r3, r1, lsr #5 - orr ip, ip, r1, lsl #27 - mov r0, #7 - and r1, r0, lr, lsr #8 - and r0, r2, #0x1f - orr lr, r1, r0, lsl #3 - ldr r2, _020A33EC ; =0x021C3A54 - ldr r1, _020A33F0 ; =0x021C3A5A - strb lr, [r2, #5] - add r0, sp, #0 - str ip, [sp] - str r3, [sp, #4] - mov r2, #4 - bl MI_CpuCopy8 - ldrh r0, [r4, #0x10] - ldr r1, [sp, #4] - ldr r3, _020A33EC ; =0x021C3A54 - and r1, r1, #0x3f - mov r0, r0, lsl #0x1e - orr r0, r1, r0, lsr #24 - strb r0, [r3, #0xa] - ldrh r2, [r4, #0x10] - add r0, r4, #0x12 - ldr r1, _020A33F4 ; =0x021C3A60 - mov r4, r2, asr #2 - mov r2, #2 - strb r4, [r3, #0xb] - bl MI_CpuCopy8 - ldr r0, _020A33EC ; =0x021C3A54 - add sp, sp, #8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_020A33EC: .word Unk_021C3A54 -_020A33F0: .word 0x021C3A5A -_020A33F4: .word 0x021C3A60 - arm_func_end sub_020A3338 - - arm_func_start sub_020A33F8 -sub_020A33F8: ; 0x020A33F8 - ldr r0, _020A3400 ; =0x021C3A54 - bx lr - ; .align 2, 0 -_020A3400: .word Unk_021C3A54 - arm_func_end sub_020A33F8 - - .rodata - - - .global Unk_020F9534 -Unk_020F9534: ; 0x020F9534 - .word 0x0 - - - - .bss - - - .global Unk_021C3A48 -Unk_021C3A48: ; 0x021C3A48 - .space 0x4 - - .global Unk_021C3A4C -Unk_021C3A4C: ; 0x021C3A4C - .space 0x4 - - .global Unk_021C3A50 -Unk_021C3A50: ; 0x021C3A50 - .space 0x4 - - .global Unk_021C3A54 -Unk_021C3A54: ; 0x021C3A54 - .space 0x2C - - .global Unk_021C3A80 -Unk_021C3A80: ; 0x021C3A80 - .space 0x20 - diff --git a/subprojects/NitroDWC/libraries/bm/asm/dwc_bm_init.s b/subprojects/NitroDWC/libraries/bm/asm/dwc_bm_init.s deleted file mode 100644 index ac7a6e92e9..0000000000 --- a/subprojects/NitroDWC/libraries/bm/asm/dwc_bm_init.s +++ /dev/null @@ -1,342 +0,0 @@ - .include "macros/function.inc" - .include "include/dwc_bm_init.inc" - - .extern Unk_020F9534 - - .text - - - arm_func_start DWC_BM_Init -DWC_BM_Init: ; 0x020A3404 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x10 - mov r8, r0 - mov r1, #0 - mov r2, #0x700 - bl MI_CpuFill8 - mov r0, r8 - bl sub_020A29F0 - cmp r0, #0 - addeq sp, sp, #0x10 - ldreq r0, _020A36F8 ; =0xFFFFD8EF - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldr r1, _020A36FC ; =0x0000A001 - add r0, r8, #0x500 - bl MATHi_CRC16InitTableRev - mov r0, r8 - bl sub_020A2A34 - cmp r0, #0 - addeq sp, sp, #0x10 - ldreq r0, _020A36F8 ; =0xFFFFD8EF - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - add r0, sp, #0 - mov r1, #0 - mov r2, #0x10 - bl MI_CpuFill8 - mov r6, r8 - mov r7, r8 - mov r5, #0 - mov sl, #1 - add sb, sp, #0 - mov r4, #0xfe -_020A3480: - mov r1, r6 - mov r2, r4 - add r0, r8, #0x500 - bl MATH_CalcCRC16 - add r1, r8, r5, lsl #8 - ldrh r1, [r1, #0xfe] - cmp r0, r1 - bne _020A34B0 - mov r0, r7 - bl sub_020A370C - cmp r0, #0 - strne sl, [sb, r5, lsl #2] -_020A34B0: - add r5, r5, #1 - cmp r5, #3 - add r6, r6, #0x100 - add r7, r7, #0x100 - blt _020A3480 - add r0, r8, #0x500 - add r1, r8, #0x300 - mov r2, #0xfe - bl MATH_CalcCRC16 - add r1, r8, #0x300 - ldrh r1, [r1, #0xfe] - cmp r0, r1 - moveq r0, #1 - ldr r1, [sp] - streq r0, [sp, #0xc] - cmp r1, #0 - ldrne r0, [sp, #4] - cmpne r0, #0 - ldrne r0, [sp, #8] - cmpne r0, #0 - ldrne r0, [sp, #0xc] - cmpne r0, #0 - beq _020A3520 - add r0, r8, #0xf0 - bl sub_020A2B7C - add sp, sp, #0x10 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_020A3520: - cmp r1, #0 - ldreq r0, [sp, #4] - cmpeq r0, #0 - ldreq r0, [sp, #8] - cmpeq r0, #0 - ldreq r0, [sp, #0xc] - cmpeq r0, #0 - bne _020A3564 - mov r0, r8 - bl sub_020A380C - mov r0, r8 - bl sub_020A2AE8 - cmp r0, #0 - movne r0, #0 - add sp, sp, #0x10 - ldreq r0, _020A3700 ; =0xFFFFD8F0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_020A3564: - cmp r1, #0 - ldrne r0, [sp, #4] - cmpne r0, #0 - bne _020A35AC - ldr r0, [sp, #8] - cmp r0, #0 - ldrne r0, [sp, #0xc] - cmpne r0, #0 - bne _020A35AC - mov r0, r8 - bl sub_020A380C - mov r0, r8 - bl sub_020A2AE8 - cmp r0, #0 - movne r0, #0 - add sp, sp, #0x10 - ldreq r0, _020A3700 ; =0xFFFFD8F0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_020A35AC: - cmp r1, #0 - ldreq r0, [sp, #4] - cmpeq r0, #0 - bne _020A35E0 - mov r0, r8 - bl sub_020A380C - mov r0, r8 - bl sub_020A2AE8 - cmp r0, #0 - ldrne r0, _020A3704 ; =0xFFFFD8ED - add sp, sp, #0x10 - ldreq r0, _020A3700 ; =0xFFFFD8F0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_020A35E0: - cmp r1, #0 - bne _020A3610 - mov r0, r8 - mov r1, #0 - bl sub_020A388C - add r0, r8, #0x1f0 - add r1, r8, #0xf0 - mov r2, #0xe - bl MI_CpuCopy8 - ldrb r0, [r8, #0x1ef] - strb r0, [r8, #0xef] - b _020A3640 -_020A3610: - ldr r0, [sp, #4] - cmp r0, #0 - bne _020A3640 - mov r0, r8 - mov r1, #1 - bl sub_020A388C - add r0, r8, #0xf0 - add r1, r8, #0x1f0 - mov r2, #0xe - bl MI_CpuCopy8 - ldrb r0, [r8, #0xef] - strb r0, [r8, #0x1ef] -_020A3640: - add r0, r8, #0xf0 - bl sub_020A2B7C - ldr r0, [sp, #8] - cmp r0, #0 - bne _020A3660 - mov r0, r8 - mov r1, #2 - bl sub_020A388C -_020A3660: - ldr r0, [sp, #0xc] - cmp r0, #0 - bne _020A367C - add r1, r8, #0x300 - mov r0, #0 - mov r2, #0x100 - bl MIi_CpuClear16 -_020A367C: - mov r4, #0 - mov r5, r4 - mov r2, #1 - add r3, sp, #0 -_020A368C: - ldr r0, [r3, r5, lsl #2] - cmp r0, #0 - bne _020A36C0 - ldrb r0, [r8, #0xef] - tst r0, r2, lsl r5 - beq _020A36C0 - mov r1, r0 - mvn r0, r2, lsl r5 - and r0, r1, r0 - strb r0, [r8, #0xef] - and r0, r0, #0xff - mov r4, r2 - strb r0, [r8, #0x1ef] -_020A36C0: - add r5, r5, #1 - cmp r5, #3 - blt _020A368C - mov r0, r8 - bl sub_020A2AE8 - cmp r0, #0 - addeq sp, sp, #0x10 - ldreq r0, _020A3700 ; =0xFFFFD8F0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - cmp r4, #0 - ldrne r0, _020A3708 ; =0xFFFFD8EE - moveq r0, #0 - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ; .align 2, 0 -_020A36F8: .word 0xFFFFD8EF -_020A36FC: .word 0x0000A001 -_020A3700: .word 0xFFFFD8F0 -_020A3704: .word 0xFFFFD8ED -_020A3708: .word 0xFFFFD8EE - arm_func_end DWC_BM_Init - - arm_func_start sub_020A370C -sub_020A370C: ; 0x020A370C - stmfd sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, r0 - ldrb r0, [r4, #0xe7] - cmp r0, #0xff - addeq sp, sp, #4 - moveq r0, #1 - ldmeqia sp!, {r3, r4, pc} - cmp r0, #2 - addhi sp, sp, #4 - movhi r0, #0 - ldmhiia sp!, {r3, r4, pc} - add r0, r4, #0x40 - bl sub_020A2C08 - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, pc} - ldr r1, _020A3808 ; =0x020F9534 - add r0, r4, #0xc0 - mov r2, #4 - bl memcmp - cmp r0, #0 - beq _020A37BC - add r0, r4, #0xc4 - bl sub_020A2CAC - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, pc} - ldrb r0, [r4, #0xd0] - cmp r0, #0x20 - addhi sp, sp, #4 - movhi r0, #0 - ldmhiia sp!, {r3, r4, pc} - add r1, sp, #0 - bl sub_020A2BD8 - add r1, sp, #0 - add r0, r4, #0xc0 - bl sub_020A2C30 - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, pc} -_020A37BC: - ldr r1, _020A3808 ; =0x020F9534 - add r0, r4, #0xc8 - mov r2, #4 - bl memcmp - cmp r0, #0 - beq _020A37FC - add r0, r4, #0xc8 - bl sub_020A2CAC - cmp r0, #0 - bne _020A37FC - add r0, r4, #0xcc - bl sub_020A2CAC - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, pc} -_020A37FC: - mov r0, #1 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - ; .align 2, 0 -_020A3808: .word Unk_020F9534 - arm_func_end sub_020A370C - - arm_func_start sub_020A380C -sub_020A380C: ; 0x020A380C - stmfd sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x14 - mov r7, r0 - mov r1, r7 - mov r0, #0 - mov r2, #0x400 - bl MIi_CpuClear16 - mov r2, #0 - mov r1, #0xff -_020A3830: - add r0, r7, r2, lsl #8 - add r2, r2, #1 - strb r1, [r0, #0xe7] - cmp r2, #3 - blt _020A3830 - add r0, sp, #0 - bl sub_020A3A3C - add r0, sp, #0 - bl sub_020A3338 - mov r5, r0 - mov r6, #0 - mov r4, #0xe -_020A3860: - mov r0, r5 - mov r2, r4 - add r1, r7, #0xf0 - bl MI_CpuCopy8 - add r6, r6, #1 - cmp r6, #2 - add r7, r7, #0x100 - blt _020A3860 - mov r0, #0 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, pc} - arm_func_end sub_020A380C - - arm_func_start sub_020A388C -sub_020A388C: ; 0x020A388C - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - add r1, r5, r4, lsl #8 - mov r0, #0 - mov r2, #0x100 - bl MIi_CpuClear16 - add r0, r5, r4, lsl #8 - mov r1, #0xff - strb r1, [r0, #0xe7] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end sub_020A388C \ No newline at end of file diff --git a/subprojects/NitroDWC/libraries/bm/asm/include/dwc_backup.inc b/subprojects/NitroDWC/libraries/bm/asm/include/dwc_backup.inc deleted file mode 100644 index 57565c5a56..0000000000 --- a/subprojects/NitroDWC/libraries/bm/asm/include/dwc_backup.inc +++ /dev/null @@ -1,21 +0,0 @@ -.public SVC_WaitByLoop -.public sub_020A2CAC -.public sub_020A2CD8 -.public sub_020A3144 -.public sub_020A31D4 -.public sub_020A3250 -.public sub_020A329C -.public sub_020A3308 -.public sub_020A3338 -.public DC_InvalidateRange -.public DC_StoreRange -.public OS_GetTick -.public OS_Terminate -.public MI_CpuCopy8 -.public PXI_SetFifoRecvCallback -.public PXI_IsCallbackReady -.public PXI_SendWordByFifo -.public MATHi_CRC16InitTableRev -.public MATH_CalcCRC16 -.public memcmp -.public _ull_div diff --git a/subprojects/NitroDWC/libraries/bm/asm/include/dwc_bm_init.inc b/subprojects/NitroDWC/libraries/bm/asm/include/dwc_bm_init.inc deleted file mode 100644 index e9ddbaa013..0000000000 --- a/subprojects/NitroDWC/libraries/bm/asm/include/dwc_bm_init.inc +++ /dev/null @@ -1,19 +0,0 @@ -.public sub_020A29F0 -.public sub_020A2A34 -.public sub_020A2AE8 -.public sub_020A2B7C -.public sub_020A2BD8 -.public sub_020A2C08 -.public sub_020A2C30 -.public sub_020A2CAC -.public sub_020A3338 -.public sub_020A370C -.public sub_020A380C -.public sub_020A388C -.public sub_020A3A3C -.public MIi_CpuClear16 -.public MI_CpuFill8 -.public MI_CpuCopy8 -.public MATHi_CRC16InitTableRev -.public MATH_CalcCRC16 -.public memcmp diff --git a/subprojects/NitroDWC/libraries/bm/asm/include/util_wifiidtool.inc b/subprojects/NitroDWC/libraries/bm/asm/include/util_wifiidtool.inc deleted file mode 100644 index e598afe2ed..0000000000 --- a/subprojects/NitroDWC/libraries/bm/asm/include/util_wifiidtool.inc +++ /dev/null @@ -1,12 +0,0 @@ -.public sub_020A283C -.public sub_020A2914 -.public sub_020A38B8 -.public sub_020A3A3C -.public OS_IsTickAvailable -.public OS_GetTick -.public OS_GetMacAddress -.public MI_CpuCopy8 -.public RTC_Init -.public RTC_GetDate -.public RTC_GetTime -.public RTC_ConvertDateTimeToSecond diff --git a/subprojects/NitroDWC/libraries/bm/asm/macros/function.inc b/subprojects/NitroDWC/libraries/bm/asm/macros/function.inc deleted file mode 100644 index f71cc4ccae..0000000000 --- a/subprojects/NitroDWC/libraries/bm/asm/macros/function.inc +++ /dev/null @@ -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 \ No newline at end of file diff --git a/subprojects/NitroDWC/libraries/bm/asm/util_wifiidtool.s b/subprojects/NitroDWC/libraries/bm/asm/util_wifiidtool.s deleted file mode 100644 index bf0ba46e2b..0000000000 --- a/subprojects/NitroDWC/libraries/bm/asm/util_wifiidtool.s +++ /dev/null @@ -1,465 +0,0 @@ - .include "macros/function.inc" - .include "include/util_wifiidtool.inc" - - - - .text - - - arm_func_start sub_020A38B8 -sub_020A38B8: ; 0x020A38B8 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x10 - ldr r4, _020A3A30 ; =0x0000FFFF - mov lr, #0 - and ip, lr, #0 - add r5, r4, #0xff0000 - and r2, r2, #1 - mov r6, ip, lsl #2 - and r3, r3, #3 - and r5, r1, r5 - orr r1, r3, r2, lsl #2 - orr r6, r6, r2, lsr #30 - mov r7, ip, lsl #3 - and r2, r0, r4 - orr r0, r1, r5, lsl #3 - orr r1, r0, r2, lsl #27 - mov r3, ip, lsl #0x1b - orr r3, r3, r2, lsr #5 - orr r7, r7, r5, lsr #29 - orr r0, ip, r6 - orr r0, r7, r0 - orr r0, r3, r0 - add r2, sp, #8 - str r1, [sp, #8] - str r0, [sp, #0xc] -_020A391C: - ldrb r0, [r2] - add lr, lr, #1 - cmp lr, #6 - eor r0, r0, #0xd6 - strb r0, [r2], #1 - blt _020A391C - ldr r2, _020A3A34 ; =0x020F9540 - add r4, sp, #8 - mov r5, #0 -_020A3940: - ldrb r3, [r4] - add r5, r5, #1 - cmp r5, #5 - 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], #1 - blt _020A3940 - add r0, sp, #8 - add r1, sp, #0 - mov r2, #8 - bl MI_CpuCopy8 - ldr r4, _020A3A38 ; =0x020F9538 - add r3, sp, #0 - mov r5, #0 - add r0, sp, #8 -_020A398C: - ldrb r2, [r3], #1 - ldrb r1, [r4], #1 - add r5, r5, #1 - cmp r5, #5 - strb r2, [r0, r1] - blt _020A398C - ldrb r2, [sp, #0xd] - mov r1, #0 - ldr r3, [sp, #8] - and r2, r2, #7 - strb r1, [sp, #0xf] - strb r1, [sp, #0xe] - strb r2, [sp, #0xd] - ldr r2, [sp, #0xc] - mov r4, r3, lsl #1 - mov r2, r2, lsl #1 - orr r2, r2, r3, lsr #31 - str r2, [sp, #0xc] - ldrb r2, [sp, #0xd] - str r4, [sp, #8] - ldrb r3, [sp, #8] - mov r2, r2, asr #3 - and r2, r2, #1 - orr r2, r3, r2 - strb r2, [sp, #8] -_020A39F0: - ldrb r2, [r0] - add r1, r1, #1 - cmp r1, #6 - eor r2, r2, #0x67 - strb r2, [r0], #1 - blt _020A39F0 - ldrb r0, [sp, #0xd] - mov r1, #0 - strb r1, [sp, #0xf] - and r0, r0, #7 - strb r1, [sp, #0xe] - strb r0, [sp, #0xd] - ldr r0, [sp, #8] - ldr r1, [sp, #0xc] - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_020A3A30: .word 0x0000FFFF -_020A3A34: .word Unk_020F9540 -_020A3A38: .word Unk_020F9538 - arm_func_end sub_020A38B8 - - arm_func_start sub_020A3A3C -sub_020A3A3C: ; 0x020A3A3C - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x24 - mov sl, r0 - bl sub_020A283C - bl RTC_Init - add r0, sp, #0x14 - bl RTC_GetDate - cmp r0, #0 - addne sp, sp, #0x24 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r0, sp, #8 - bl RTC_GetTime - cmp r0, #0 - addne sp, sp, #0x24 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r0, sp, #0x14 - add r1, sp, #8 - bl RTC_ConvertDateTimeToSecond - mov r4, r0 - mov r0, #0 - subs r2, r4, r0 - sbcs r2, r1, r0 - addlt sp, sp, #0x24 - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl OS_IsTickAvailable - cmp r0, #0 - beq _020A3AB8 - ldr r0, _020A3C08 ; =OS_GetTick - adds r4, r4, r0 -_020A3AB8: - add r0, sp, #0 - bl OS_GetMacAddress - ldrb r0, [sp, #1] - ldr r5, _020A3C0C ; =0x5D588B65 - ldr r6, _020A3C10 ; =0x00269EC3 - ldrb r1, [sp] - mla sb, r4, r5, r6 - mov r0, r0, lsl #8 - orr r1, r0, r1, lsl #16 - ldrb r2, [sp, #2] - ldr r0, _020A3C14 ; =0x000009BF - ldrb r7, [sp, #4] - orr r1, r2, r1 - cmp r1, r0 - mov r2, sb, lsr #0x10 - mov r0, #0x3e8 - mul r3, r2, r0 - mov r2, r3, lsr #0x10 - movne r1, #1 - ldrb r0, [sp, #5] - ldrb r4, [sp, #3] - mov r3, r7, lsl #8 - moveq r1, #0 - orr r4, r3, r4, lsl #16 - strh r2, [sl, #0x10] - mov r3, #0 - str r3, [sl] - str r3, [sl, #4] - ldrh r2, [sl, #0x12] - and r7, r1, #0xff - orr r8, r0, r4 - str r3, [sl, #8] - cmp r2, #0 - str r3, [sl, #0xc] - bne _020A3BA8 - ldr r0, [sl, #8] - cmp r3, r3 - cmpeq r0, r3 - bne _020A3BFC - mov fp, r3 - mov r4, r3 -_020A3B5C: - mul r0, sb, r5 - adds sb, r0, r6 - bne _020A3B74 -_020A3B68: - mul r0, sb, r5 - adds sb, r0, r6 - beq _020A3B68 -_020A3B74: - strh sb, [sl, #0x12] - ldrh r0, [sl, #0x12] - mov r1, r8 - mov r2, r7 - mov r3, #0 - bl sub_020A38B8 - str r0, [sl, #8] - str r1, [sl, #0xc] - ldr r0, [sl, #8] - cmp r1, fp - cmpeq r0, r4 - beq _020A3B5C - b _020A3BFC -_020A3BA8: - ldr r0, [sl, #8] - cmp r3, r3 - cmpeq r0, r3 - bne _020A3BFC - mov r6, r3 - mov r5, r3 - mov r4, r3 -_020A3BC4: - ldrh r0, [sl, #0x12] - mov r1, r8 - mov r2, r7 - add r0, r0, #1 - strh r0, [sl, #0x12] - ldrh r0, [sl, #0x12] - mov r3, r6 - bl sub_020A38B8 - str r0, [sl, #8] - str r1, [sl, #0xc] - ldr r0, [sl, #8] - cmp r1, r5 - cmpeq r0, r4 - beq _020A3BC4 -_020A3BFC: - mov r0, #1 - add sp, sp, #0x24 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_020A3C08: .word OS_GetTick -_020A3C0C: .word 0x5D588B65 -_020A3C10: .word 0x00269EC3 -_020A3C14: .word 0x000009BF - arm_func_end sub_020A3A3C - - arm_func_start DWCi_AUTH_MakeWiFiID -DWCi_AUTH_MakeWiFiID: ; 0x020A3C18 - stmfd sp!, {r3, r4, lr} - sub sp, sp, #0x14 - mov r4, r0 - add r0, sp, #0 - bl sub_020A3A3C - cmp r0, #0 - addeq sp, sp, #0x14 - moveq r0, #0 - ldmeqia sp!, {r3, r4, pc} - add r0, sp, #0 - mov r1, r4 - bl sub_020A2914 - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - add sp, sp, #0x14 - ldmia sp!, {r3, r4, pc} - arm_func_end DWCi_AUTH_MakeWiFiID - - arm_func_start sub_020A3C5C -sub_020A3C5C: ; 0x020A3C5C - stmfd sp!, {r4, r5, lr} - sub sp, sp, #0x14 - mov r5, r0 - add r0, sp, #0 - mov r4, r1 - bl sub_020A283C - add ip, r5, #8 - ldmia ip, {r2, r3} - stmia r5, {r2, r3} - add r1, sp, #8 - ldmia r1, {r2, r3} - mov r0, r5 - mov r1, r4 - stmia ip, {r2, r3} - bl sub_020A2914 - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, pc} - arm_func_end sub_020A3C5C - - arm_func_start sub_020A3CAC -sub_020A3CAC: ; 0x020A3CAC - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x24 - add r2, sp, #0 - mov r1, #0 - mov sl, r0 - strb r1, [r2] - strb r1, [r2, #1] - strb r1, [r2, #2] - strb r1, [r2, #3] - strb r1, [r2, #4] - strb r1, [r2, #5] - bl sub_020A283C - bl RTC_Init - add r0, sp, #0x14 - bl RTC_GetDate - cmp r0, #0 - addne sp, sp, #0x24 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r0, sp, #8 - bl RTC_GetTime - cmp r0, #0 - addne sp, sp, #0x24 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r0, sp, #0x14 - add r1, sp, #8 - bl RTC_ConvertDateTimeToSecond - mov r4, r0 - mov r0, #0 - subs r2, r4, r0 - sbcs r2, r1, r0 - addlt sp, sp, #0x24 - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl OS_IsTickAvailable - cmp r0, #0 - beq _020A3D48 - ldr r0, _020A3E3C ; =OS_GetTick - adds r4, r4, r0 -_020A3D48: - add r0, sp, #0 - bl OS_GetMacAddress - ldrb r0, [sp, #1] - ldr r5, _020A3E40 ; =0x5D588B65 - ldr r6, _020A3E44 ; =0x00269EC3 - ldrb r1, [sp] - mov r0, r0, lsl #8 - mla sb, r4, r5, r6 - orr r1, r0, r1, lsl #16 - ldrb r2, [sp, #2] - ldr r0, _020A3E48 ; =0x000009BF - ldrb r7, [sp, #4] - orr r1, r2, r1 - cmp r1, r0 - movne r1, #1 - mov r2, sb, lsr #0x10 - mov r0, #0x3e8 - mul r4, r2, r0 - mov r2, r4, lsr #0x10 - ldrb r0, [sp, #5] - ldrb r8, [sp, #3] - mov r4, r7, lsl #8 - moveq r1, #0 - mov r3, #0 - strh r2, [sl, #0x10] - str r3, [sl, #8] - str r3, [sl, #0xc] - orr r4, r4, r8, lsl #16 - ldr r2, [sl, #8] - cmp r3, #0 - cmpeq r2, #0 - and r7, r1, #0xff - orr r8, r0, r4 - bne _020A3E30 - mov fp, r3 - mov r4, r3 -_020A3DD8: - mla sb, r5, sb, r6 - b _020A3DE4 -_020A3DE0: - mla sb, r5, sb, r6 -_020A3DE4: - cmp sb, #0 - beq _020A3DE0 - ldrh r2, [sl, #0x12] - mov r0, sb, lsl #0x10 - mov r1, r0, lsr #0x10 - cmp r2, r0, lsr #16 - beq _020A3DE0 - strh r1, [sl, #0x12] - ldrh r0, [sl, #0x12] - mov r1, r8 - mov r2, r7 - mov r3, #0 - bl sub_020A38B8 - str r0, [sl, #8] - str r1, [sl, #0xc] - ldr r0, [sl, #8] - cmp r1, fp - cmpeq r0, r4 - beq _020A3DD8 -_020A3E30: - mov r0, #1 - add sp, sp, #0x24 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_020A3E3C: .word OS_GetTick -_020A3E40: .word 0x5D588B65 -_020A3E44: .word 0x00269EC3 -_020A3E48: .word 0x000009BF - arm_func_end sub_020A3CAC - - arm_func_start DWC_Auth_GetId -DWC_Auth_GetId: ; 0x020A3E4C - stmfd sp!, {r3, r4, lr} - sub sp, sp, #0x14 - mov r4, r0 - add r0, sp, #0 - bl sub_020A283C - add r0, sp, #0 - ldmia r0, {r2, r3} - stmia r4, {r2, r3} - add r1, sp, #8 - add r0, r4, #8 - ldmia r1, {r2, r3} - stmia r0, {r2, r3} - ldr r0, [sp, #4] - ldr r1, [sp] - cmp r0, #0 - mov r0, #0 - cmpeq r1, #0 - movne r0, #1 - str r0, [r4, #0x10] - add sp, sp, #0x14 - ldmia sp!, {r3, r4, pc} - arm_func_end DWC_Auth_GetId - - arm_func_start DWC_Auth_CheckWiFiIDNeedCreate -DWC_Auth_CheckWiFiIDNeedCreate: ; 0x020A3EA0 - stmdb sp!, {lr} - sub sp, sp, #0x14 - add r0, sp, #0 - bl sub_020A283C - ldr r0, [sp, #0xc] - ldr r1, [sp, #8] - cmp r0, #0 - cmpeq r1, #0 - mov r0, #0 - bne _020A3EE4 - ldr r1, [sp, #4] - ldr r2, [sp] - cmp r1, r0 - cmpeq r2, r0 - addeq sp, sp, #0x14 - moveq r0, #1 - ldmeqia sp!, {pc} -_020A3EE4: - mov r0, #0 - add sp, sp, #0x14 - ldmia sp!, {pc} - arm_func_end DWC_Auth_CheckWiFiIDNeedCreate - - .rodata - - - .global Unk_020F9538 -Unk_020F9538: ; 0x020F9538 - .byte 0x1, 0x2, 0x0, 0x4, 0x3, 0x5, 0x6, 0x7 - - .global Unk_020F9540 -Unk_020F9540: ; 0x020F9540 - .byte 0x5, 0x9, 0x1, 0xE, 0xC, 0x2, 0xA, 0x0, 0xB, 0xD, 0x3, 0x4, 0x8, 0x6, 0xF, 0x7 - diff --git a/subprojects/NitroDWC/libraries/bm/meson.build b/subprojects/NitroDWC/libraries/bm/meson.build deleted file mode 100644 index 9a5872de88..0000000000 --- a/subprojects/NitroDWC/libraries/bm/meson.build +++ /dev/null @@ -1,14 +0,0 @@ -libdwcbm_srcs = files( - 'asm/dwc_backup.s', - 'asm/dwc_bm_init.s', - 'asm/util_wifiidtool.s' -) - -libdwcbm = static_library('dwcbm', - sources: libdwcbm_srcs, - nasm_args: asm_args, - include_directories: public_includes, - pic: false -) - -nitrodwc_libs += libdwcbm diff --git a/subprojects/NitroDWC/libraries/meson.build b/subprojects/NitroDWC/libraries/meson.build deleted file mode 100644 index 09af1cb6c7..0000000000 --- a/subprojects/NitroDWC/libraries/meson.build +++ /dev/null @@ -1,8 +0,0 @@ -subdir('ac') -subdir('account') -subdir('auth') -subdir('base') -subdir('bm') -subdir('nd') -subdir('nhttp') -subdir('util') diff --git a/subprojects/NitroDWC/libraries/nd/asm/dwci_nd_attr.s b/subprojects/NitroDWC/libraries/nd/asm/dwci_nd_attr.s deleted file mode 100644 index 3a9985b086..0000000000 --- a/subprojects/NitroDWC/libraries/nd/asm/dwci_nd_attr.s +++ /dev/null @@ -1,128 +0,0 @@ - .include "macros/function.inc" - .include "include/dwci_nd_attr.inc" - - .extern Unk_ov60_02229E5C - .extern Unk_ov60_02229E6C - .extern Unk_ov60_02229E70 - .extern Unk_ov60_02229E78 - - .text - - - arm_func_start ov60_02223D7C -ov60_02223D7C: ; 0x02223D7C - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r7, #0 - ldr r6, _02223DB8 ; =0x02229E78 - ldr r4, _02223DBC ; =0x02229E70 - mov r5, r7 -_02223D90: - ldr r0, [r6, r7, lsl #2] - cmp r0, #0 - beq _02223DA8 - ldr r1, [r4, #0] - blx r1 - str r5, [r6, r7, lsl #2] -_02223DA8: - add r7, r7, #1 - cmp r7, #3 - blt _02223D90 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02223DB8: .word Unk_ov60_02229E78 -_02223DBC: .word Unk_ov60_02229E70 - arm_func_end ov60_02223D7C - - arm_func_start ov60_02223DC0 -ov60_02223DC0: ; 0x02223DC0 - stmfd sp!, {r4, r5, r6, lr} - mov r6, r1 - ldrsb r1, [r6] - mov r4, r0 - cmp r1, #0 - beq _02223E7C - mov r0, r6 - bl ov60_02225670 - cmp r0, #0xa - ble _02223DFC - ldr r0, _02223E84 ; =0x02229E6C - mov r1, #7 - str r1, [r0, #0] - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_02223DFC: - mov r0, r6 - bl ov60_02225670 - mov r5, r0 - cmp r5, #0xa - ble _02223E24 - ldr r0, _02223E84 ; =0x02229E6C - mov r1, #7 - str r1, [r0, #0] - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_02223E24: - bl ov60_02223FAC - ldr r1, _02223E88 ; =0x02229E5C - add r0, r0, #1 - ldr r2, [r1, #0] - mov r1, #4 - blx r2 - ldr r1, _02223E8C ; =0x02229E78 - cmp r0, #0 - str r0, [r1, r4, lsl #2] - bne _02223E60 - ldr r0, _02223E84 ; =0x02229E6C - mov r1, #1 - str r1, [r0, #0] - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_02223E60: - mov r1, r6 - mov r2, r5 - bl ov60_02223FC8 - ldr r1, _02223E8C ; =0x02229E78 - mov r2, #0 - ldr r1, [r1, r4, lsl #2] - strb r2, [r1, r0] -_02223E7C: - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_02223E84: .word Unk_ov60_02229E6C -_02223E88: .word Unk_ov60_02229E5C -_02223E8C: .word Unk_ov60_02229E78 - arm_func_end ov60_02223DC0 - - arm_func_start DWCi_NdSetAttr -DWCi_NdSetAttr: ; 0x02223E90 - stmfd sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl ov60_02225534 - bl ov60_02223D7C - mov r1, r6 - mov r0, #0 - bl ov60_02223DC0 - cmp r0, #0 - beq _02223EF0 - mov r1, r5 - mov r0, #1 - bl ov60_02223DC0 - cmp r0, #0 - beq _02223EF0 - mov r1, r4 - mov r0, #2 - bl ov60_02223DC0 - cmp r0, #0 - beq _02223EF0 - bl ov60_02225548 - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} -_02223EF0: - bl ov60_02223D7C - bl ov60_02225548 - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end DWCi_NdSetAttr \ No newline at end of file diff --git a/subprojects/NitroDWC/libraries/nd/asm/dwci_nd_base64.s b/subprojects/NitroDWC/libraries/nd/asm/dwci_nd_base64.s deleted file mode 100644 index 3226f112ff..0000000000 --- a/subprojects/NitroDWC/libraries/nd/asm/dwci_nd_base64.s +++ /dev/null @@ -1,242 +0,0 @@ - .include "macros/function.inc" - .include "include/dwci_nd_base64.inc" - - - - .text - - - arm_func_start ov60_02223F00 -ov60_02223F00: ; 0x02223F00 - stmfd sp!, {r4, lr} - mov r4, #0 - mov lr, r4 - cmp r2, #0 - ble _02223F40 - mov r3, r4 -_02223F18: - ldrsb ip, [r1] - cmp ip, #0 - streqb r3, [r0], #1 - beq _02223F34 - add r4, r4, #1 - add r1, r1, #1 - strb ip, [r0], #1 -_02223F34: - add lr, lr, #1 - cmp lr, r2 - blt _02223F18 -_02223F40: - mov r0, r4 - ldmia sp!, {r4, pc} - arm_func_end ov60_02223F00 - - arm_func_start ov60_02223F48 -ov60_02223F48: ; 0x02223F48 - cmp r0, #0x41 - blo _02223F5C - cmp r0, #0x5a - subls r0, r0, #0x41 - bxls lr -_02223F5C: - cmp r0, #0x61 - blo _02223F70 - cmp r0, #0x7a - subls r0, r0, #0x47 - bxls lr -_02223F70: - cmp r0, #0x30 - blo _02223F84 - cmp r0, #0x39 - addls r0, r0, #4 - bxls lr -_02223F84: - cmp r0, #0x2e - moveq r0, #0x3e - bxeq lr - cmp r0, #0x2d - moveq r0, #0x3f - mvnne r0, #0 - bx lr - arm_func_end ov60_02223F48 - - arm_func_start ov60_02223FA0 -ov60_02223FA0: ; 0x02223FA0 - mov r0, r0, asr #2 - add r0, r0, r0, lsl #1 - bx lr - arm_func_end ov60_02223FA0 - - arm_func_start ov60_02223FAC -ov60_02223FAC: ; 0x02223FAC - ldr r1, _02223FC4 ; =0x55555556 - add r2, r0, #2 - smull r0, r3, r1, r2 - add r3, r3, r2, lsr #31 - mov r0, r3, lsl #2 - bx lr - ; .align 2, 0 -_02223FC4: .word 0x55555556 - arm_func_end ov60_02223FAC - - arm_func_start ov60_02223FC8 -ov60_02223FC8: ; 0x02223FC8 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r7, r2 - mov r8, r1 - mov sb, r0 - cmp r7, #3 - movgt r2, #3 - add r0, sp, #0 - mov r1, r8 - mov r6, #0 - bl ov60_02223F00 - cmp r0, #0 - ble _022240AC - mov r5, #0 - ldr sl, _022240BC ; =0x02228C78 - mov r4, r5 - mov fp, #0x2a -_02224008: - cmp r7, #3 - strltb r5, [sp, #2] - cmp r7, #2 - strltb r4, [sp, #1] - ldrb r1, [sp, #2] - ldrb r2, [sp] - ldrb r3, [sp, #1] - mov lr, r1, asr #6 - mov ip, r2, asr #2 - orr lr, lr, r3, lsl #2 - mov r3, r3, asr #4 - and ip, ip, #0xff - orr r2, r3, r2, lsl #4 - ldrsb ip, [sl, ip] - and r2, r2, #0x3f - ldrsb r2, [sl, r2] - strb ip, [sb] - and ip, lr, #0x3f - cmp r0, #1 - strb r2, [sb, #1] - ldrgtsb r2, [sl, ip] - and r1, r1, #0x3f - add r8, r8, r0 - movle r2, fp - cmp r0, #2 - ldrgtsb r1, [sl, r1] - strb r2, [sb, #2] - add r6, r6, #4 - movle r1, #0x2a - strb r1, [sb, #3] - add sb, sb, #4 - subs r7, r7, r0 - beq _022240AC - cmp r7, #3 - movgt r2, #3 - movle r2, r7 - add r0, sp, #0 - mov r1, r8 - bl ov60_02223F00 - cmp r0, #0 - bgt _02224008 -_022240AC: - mov r1, #0 - mov r0, r6 - strb r1, [sb] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_022240BC: .word Unk_ov60_02228C78 - arm_func_end ov60_02223FC8 - - arm_func_start ov60_022240C0 -ov60_022240C0: ; 0x022240C0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #8 - mov sb, r0 - mov r7, r2 - add r0, sp, #3 - mov r2, #4 - mov r6, #0 - mov r8, r1 - bl ov60_02223F00 - mov r5, r0 - mov r4, r6 - b _022241CC -_022240F0: - ldrb r0, [sp, #3] - mov r1, #0 - strb r1, [sp] - strb r1, [sp, #1] - strb r1, [sp, #2] - bl ov60_02223F48 - movs r4, r0 - bmi _02224178 - ldrb r0, [sp, #4] - mov r1, r4, lsl #2 - strb r1, [sp] - bl ov60_02223F48 - movs r4, r0 - bmi _02224178 - ldrsb r2, [sp] - ldrb r0, [sp, #5] - mov r1, r4, lsl #4 - orr r2, r2, r4, asr #4 - strb r2, [sp] - strb r1, [sp, #1] - bl ov60_02223F48 - movs r4, r0 - bmi _02224178 - ldrsb r2, [sp, #1] - ldrb r0, [sp, #6] - mov r1, r4, lsl #6 - orr r2, r2, r4, asr #2 - strb r1, [sp, #2] - strb r2, [sp, #1] - bl ov60_02223F48 - movs r4, r0 - ldrplsb r0, [sp, #2] - orrpl r0, r0, r4 - strplb r0, [sp, #2] -_02224178: - sub r1, r5, #1 - cmp r1, #0 - mov r2, #0 - ble _022241A0 - add r3, sp, #0 -_0222418C: - ldrsb r0, [r3], #1 - add r2, r2, #1 - cmp r2, r1 - strb r0, [sb], #1 - blt _0222418C -_022241A0: - sub r0, r5, #1 - sub r7, r7, #4 - cmp r7, #0 - add r8, r8, r5 - add r6, r6, r0 - ble _022241DC - add r0, sp, #3 - mov r1, r8 - mov r2, #4 - bl ov60_02223F00 - mov r5, r0 -_022241CC: - cmp r5, #0 - ble _022241DC - cmp r4, #0 - bge _022240F0 -_022241DC: - mov r0, r6 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end ov60_022240C0 - - .rodata - - - .global Unk_ov60_02228C78 -Unk_ov60_02228C78: ; 0x02228C78 - .ascii "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.-" - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/nd/asm/dwci_nd_bgnend.s b/subprojects/NitroDWC/libraries/nd/asm/dwci_nd_bgnend.s deleted file mode 100644 index 4ba1cae683..0000000000 --- a/subprojects/NitroDWC/libraries/nd/asm/dwci_nd_bgnend.s +++ /dev/null @@ -1,253 +0,0 @@ - .include "macros/function.inc" - .include "include/dwci_nd_bgnend.inc" - - - - .text - - - arm_func_start ov60_022241E8 -ov60_022241E8: ; 0x022241E8 - stmfd sp!, {r4, r5, r6, lr} - mov r6, r0 - bl ov60_02225670 - ldr r1, _02224230 ; =0x02229E50 - mov r4, r0 - ldr r2, [r1, #0xc] - add r0, r4, #1 - mov r1, #4 - blx r2 - movs r5, r0 - beq _02224228 - mov r1, r6 - mov r2, r4 - bl ov60_0222569C - mov r0, #0 - strb r0, [r5, r4] -_02224228: - mov r0, r5 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_02224230: .word Unk_ov60_02229E50 - arm_func_end ov60_022241E8 - - arm_func_start DWCi_NdStartup -DWCi_NdStartup: ; 0x02224234 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - ldr ip, _022243C4 ; =0x02229E50 - mov r5, r0 - mov r4, r1 - str r5, [ip, #0xc] - mov r1, #0 - ldr r0, [sp, #0x20] - str r4, [ip, #0x20] - str r0, [ip, #0x18] - str r1, [ip, #0x1c] - str r1, [ip, #0x28] - str r1, [ip, #0x2c] - str r1, [ip, #0x30] - str r1, [ip, #4] - sub r0, r1, #1 - str r0, [ip, #0x24] - str r1, [ip, #8] - ldr r0, _022243C8 ; =0x02229E90 - mov r7, r2 - mov r6, r3 - str r1, [ip, #0x10] - bl ov60_02225610 - ldr r0, _022243CC ; =0x02229ED8 - bl ov60_02224610 - mov r0, r7 - bl ov60_022241E8 - ldr r1, _022243C4 ; =0x02229E50 - cmp r0, #0 - str r0, [r1, #0x10] - beq _02224380 - mov r0, r6 - bl ov60_022241E8 - ldr r1, _022243C4 ; =0x02229E50 - cmp r0, #0 - str r0, [r1, #8] - beq _02224380 - ldr r1, [sp, #0x18] - ldr r0, _022243D0 ; =0x02229E84 - mov r2, #4 - bl ov60_02223FC8 - ldr r1, _022243D0 ; =0x02229E84 - mov r2, #0 - strb r2, [r1, r0] - ldr r1, [sp, #0x1c] - ldr r0, _022243D4 ; =0x02229EBC - mov r2, #0x10 - bl ov60_02223FC8 - ldr r1, _022243D4 ; =0x02229EBC - mov r2, #0 - strb r2, [r1, r0] - bl ov60_0222555C - cmp r0, #0 - beq _0222434C - bl ov60_02225518 - cmp r0, #0 - beq _0222434C - mov r0, r5 - mov r1, r4 - mov r2, #0xa - bl ov60_022257FC - cmp r0, #0 - beq _02224348 - ldr r0, _022243D8 ; =0x02229EA4 - bl ov60_02224484 - ldr r1, _022243C4 ; =0x02229E50 - str r0, [r1, #4] - mov r0, #1 - str r0, [r1, #0x14] - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02224348: - bl ov60_02225530 -_0222434C: - ldr r1, _022243C4 ; =0x02229E50 - ldr r0, [r1, #8] - ldr r1, [r1, #0x20] - blx r1 - ldr r1, _022243C4 ; =0x02229E50 - ldr r0, [r1, #0x10] - ldr r1, [r1, #0x20] - blx r1 - ldr r0, _022243C4 ; =0x02229E50 - mov r1, #8 - str r1, [r0, #0x1c] - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02224380: - ldr r1, _022243C4 ; =0x02229E50 - ldr r0, [r1, #8] - cmp r0, #0 - beq _02224398 - ldr r1, [r1, #0x20] - blx r1 -_02224398: - ldr r1, _022243C4 ; =0x02229E50 - ldr r0, [r1, #0x10] - cmp r0, #0 - beq _022243B0 - ldr r1, [r1, #0x20] - blx r1 -_022243B0: - ldr r0, _022243C4 ; =0x02229E50 - mov r1, #1 - str r1, [r0, #0x1c] - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_022243C4: .word Unk_ov60_02229E50 -_022243C8: .word Unk_ov60_02229E90 -_022243CC: .word Unk_ov60_02229ED8 -_022243D0: .word Unk_ov60_02229E84 -_022243D4: .word Unk_ov60_02229EBC -_022243D8: .word Unk_ov60_02229EA4 - arm_func_end DWCi_NdStartup - - arm_func_start ov60_022243DC -ov60_022243DC: ; 0x022243DC - stmfd sp!, {r3, lr} - bl ov60_02223D7C - bl ov60_02225530 - bl ov60_02225584 - ldr r1, _0222441C ; =0x02229E50 - ldr r0, [r1, #8] - ldr r1, [r1, #0x20] - blx r1 - ldr r1, _0222441C ; =0x02229E50 - ldr r0, [r1, #0x10] - ldr r1, [r1, #0x20] - blx r1 - ldr r0, _0222441C ; =0x02229E50 - ldr r0, [r0, #0] - blx r0 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222441C: .word Unk_ov60_02229E50 - arm_func_end ov60_022243DC - - arm_func_start DWCi_NdCleanupAsync -DWCi_NdCleanupAsync: ; 0x02224420 - ldr r1, _0222443C ; =0x02229E50 - mov r2, #0 - str r2, [r1, #0x14] - str r0, [r1, #0] - ldr ip, _02224440 ; =ov60_022258C4 - ldr r0, _02224444 ; =ov60_022243DC - bx ip - ; .align 2, 0 -_0222443C: .word Unk_ov60_02229E50 -_02224440: .word ov60_022258C4 -_02224444: .word ov60_022243DC - arm_func_end DWCi_NdCleanupAsync - - .bss - - - .global Unk_ov60_02229E50 -Unk_ov60_02229E50: ; 0x02229E50 - .space 0x4 - - .global Unk_ov60_02229E54 -Unk_ov60_02229E54: ; 0x02229E54 - .space 0x4 - - .global Unk_ov60_02229E58 -Unk_ov60_02229E58: ; 0x02229E58 - .space 0x4 - - .global Unk_ov60_02229E5C -Unk_ov60_02229E5C: ; 0x02229E5C - .space 0x4 - - .global Unk_ov60_02229E60 -Unk_ov60_02229E60: ; 0x02229E60 - .space 0x4 - - .global Unk_ov60_02229E64 -Unk_ov60_02229E64: ; 0x02229E64 - .space 0x4 - - .global Unk_ov60_02229E68 -Unk_ov60_02229E68: ; 0x02229E68 - .space 0x4 - - .global Unk_ov60_02229E6C -Unk_ov60_02229E6C: ; 0x02229E6C - .space 0x4 - - .global Unk_ov60_02229E70 -Unk_ov60_02229E70: ; 0x02229E70 - .space 0x4 - - .global Unk_ov60_02229E74 -Unk_ov60_02229E74: ; 0x02229E74 - .space 0x4 - - .global Unk_ov60_02229E78 -Unk_ov60_02229E78: ; 0x02229E78 - .space 0xC - - .global Unk_ov60_02229E84 -Unk_ov60_02229E84: ; 0x02229E84 - .space 0xC - - .global Unk_ov60_02229E90 -Unk_ov60_02229E90: ; 0x02229E90 - .space 0x14 - - .global Unk_ov60_02229EA4 -Unk_ov60_02229EA4: ; 0x02229EA4 - .space 0x18 - - .global Unk_ov60_02229EBC -Unk_ov60_02229EBC: ; 0x02229EBC - .space 0x1C - - .global Unk_ov60_02229ED8 -Unk_ov60_02229ED8: ; 0x02229ED8 - .space 0x21 - diff --git a/subprojects/NitroDWC/libraries/nd/asm/dwci_nd_ca_nasself.s b/subprojects/NitroDWC/libraries/nd/asm/dwci_nd_ca_nasself.s deleted file mode 100644 index 6f9f5c2254..0000000000 --- a/subprojects/NitroDWC/libraries/nd/asm/dwci_nd_ca_nasself.s +++ /dev/null @@ -1,28 +0,0 @@ - .include "macros/function.inc" - - - .data - - - .global Unk_ov60_02229B20 -Unk_ov60_02229B20: ; 0x02229B20 - .short 0x1 - .short 0x1 - - .global Unk_ov60_02229B24 -Unk_ov60_02229B24: ; 0x02229B24 - .word Unk_ov60_02229B38 - .word 0x80 - .word Unk_ov60_02229B88 - .word 0x3 - .word Unk_ov60_02229B20 - - .global Unk_ov60_02229B38 -Unk_ov60_02229B38: ; 0x02229B38 - .ascii "US, Washington, Nintendo of America Inc, NOA, Nintendo CA, ca@noa.nintendo.com" - .space 0x2 - - .global Unk_ov60_02229B88 -Unk_ov60_02229B88: ; 0x02229B88 - .incbin "incbin/dwci_nd_ca_nasself.bin", 0x0, 0x80 - diff --git a/subprojects/NitroDWC/libraries/nd/asm/dwci_nd_cancel.s b/subprojects/NitroDWC/libraries/nd/asm/dwci_nd_cancel.s deleted file mode 100644 index 23248edf16..0000000000 --- a/subprojects/NitroDWC/libraries/nd/asm/dwci_nd_cancel.s +++ /dev/null @@ -1,28 +0,0 @@ - .include "macros/function.inc" - .include "include/dwci_nd_cancel.inc" - - .extern Unk_ov60_02229E74 - - .text - - - arm_func_start DWCi_NdCancelAsync -DWCi_NdCancelAsync: ; 0x02224448 - stmfd sp!, {r4, lr} - bl ov60_02225588 - cmp r0, #0 - bne _02224474 - bl ov60_02225534 - ldr r0, _02224480 ; =0x02229E74 - ldr r4, [r0, #0] - bl ov60_02225548 - mov r0, r4 - bl ov60_02226A9C - ldmia sp!, {r4, pc} -_02224474: - bl ov60_022255D0 - mov r0, #0 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02224480: .word Unk_ov60_02229E74 - arm_func_end DWCi_NdCancelAsync \ No newline at end of file diff --git a/subprojects/NitroDWC/libraries/nd/asm/dwci_nd_dwc_nitro.s b/subprojects/NitroDWC/libraries/nd/asm/dwci_nd_dwc_nitro.s deleted file mode 100644 index f9925bd141..0000000000 --- a/subprojects/NitroDWC/libraries/nd/asm/dwci_nd_dwc_nitro.s +++ /dev/null @@ -1,162 +0,0 @@ - .include "macros/function.inc" - .include "include/dwci_nd_dwc_nit.inc" - - - - .text - - - arm_func_start ov60_02224484 -ov60_02224484: ; 0x02224484 - stmfd sp!, {r4, lr} - sub sp, sp, #0x10 - ldr ip, _02224574 ; =0x02228CBC - add r3, sp, #0 - mov r4, r0 - mov r2, #6 -_0222449C: - ldrb r1, [ip] - ldrb r0, [ip, #1] - add ip, ip, #2 - strb r1, [r3] - strb r0, [r3, #1] - add r3, r3, #2 - subs r2, r2, #1 - bne _0222449C - ldrb r1, [ip] - ldr r0, _02224578 ; =0x02229EFC - strb r1, [r3] - bl DWC_GetApInfo - cmp r0, #0 - beq _02224568 - ldr r0, _0222457C ; =0x02229EFC - ldr r1, [r0, #0] - cmp r1, #0 - blt _022244F4 - cmp r1, #0xa - addlt r0, r1, #0x30 - strltb r0, [sp, #1] - blt _0222450C -_022244F4: - cmp r1, #0xa - blt _0222450C - cmp r1, #0x64 - bge _0222450C - add r0, sp, #0 - bl ov60_022256C0 -_0222450C: - ldr r0, _0222457C ; =0x02229EFC - ldr r0, [r0, #0] - cmp r0, #4 - cmpne r0, #8 - bne _0222454C - ldr r0, _0222457C ; =0x02229EFC - ldr r0, [r0, #4] - cmp r0, #0 - blt _0222453C - cmp r0, #0xa - addlt r0, r0, #0x30 - strltb r0, [sp, #3] -_0222453C: - ldr r1, _02224580 ; =0x02229F04 - add r0, sp, #4 - mov r2, #9 - bl ov60_0222569C -_0222454C: - add r1, sp, #0 - mov r0, r4 - mov r2, #0xd - bl ov60_02223FC8 - add sp, sp, #0x10 - mov r0, #1 - ldmia sp!, {r4, pc} -_02224568: - mov r0, #0 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02224574: .word Unk_ov60_02228CBC -_02224578: .word Unk_ov60_02229EFC -_0222457C: .word Unk_ov60_02229EFC -_02224580: .word 0x02229F04 - arm_func_end ov60_02224484 - - arm_func_start ov60_02224584 -ov60_02224584: ; 0x02224584 - stmfd sp!, {r4, r5, lr} - sub sp, sp, #0x24 - mov r5, r0 - mov r4, r1 - add r0, sp, #0x10 - mov r1, #0x14 - bl ov60_02225688 - add r0, sp, #0x10 - bl sub_020A283C - ldr r1, [sp, #0x10] - ldr r2, [sp, #0x14] - mov r0, #0 - cmp r2, r0 - cmpeq r1, r0 - addeq sp, sp, #0x24 - ldmeqia sp!, {r4, r5, pc} - add r0, sp, #0 - mov r3, #0xd - bl ov60_022256CC - cmp r0, #0 - addlt sp, sp, #0x24 - movlt r0, #0 - ldmltia sp!, {r4, r5, pc} - add r1, sp, #0 - mov r0, r4 - mov r2, #0xd - bl ov60_02223FC8 - ldr r1, _0222460C ; =0x027FFE0C - mov r0, r5 - mov r2, #4 - bl ov60_02223FC8 - mov r0, #1 - add sp, sp, #0x24 - ldmia sp!, {r4, r5, pc} - ; .align 2, 0 -_0222460C: .word 0x027FFE0C - arm_func_end ov60_02224584 - - arm_func_start ov60_02224610 -ov60_02224610: ; 0x02224610 - stmfd sp!, {r3, lr} - ldr r2, _0222462C ; =0x02229C08 - mov r3, #2 - mov r1, #0x21 - str r3, [sp] - bl OS_SNPrintf - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222462C: .word Unk_ov60_02229C08 - arm_func_end ov60_02224610 - - .rodata - - - .global Unk_ov60_02228CBC -Unk_ov60_02228CBC: ; 0x02228CBC - .ascii "00:0000000-00" - - - - .data - - - .global Unk_ov60_02229C08 -Unk_ov60_02229C08: ; 0x02229C08 - .ascii "Nitro WiFi SDK/%d.%d" - .space 0x4 - - - - .bss - - - .global Unk_ov60_02229EFC -Unk_ov60_02229EFC: ; 0x02229EFC - .space 0x3C - diff --git a/subprojects/NitroDWC/libraries/nd/asm/dwci_nd_fileapi.s b/subprojects/NitroDWC/libraries/nd/asm/dwci_nd_fileapi.s deleted file mode 100644 index 578d65df70..0000000000 --- a/subprojects/NitroDWC/libraries/nd/asm/dwci_nd_fileapi.s +++ /dev/null @@ -1,1000 +0,0 @@ - .include "macros/function.inc" - .include "include/dwci_nd_fileapi.inc" - - - .extern Unk_ov60_02229E54 - .extern Unk_ov60_02229E58 - .extern Unk_ov60_02229E5C - .extern Unk_ov60_02229E60 - .extern Unk_ov60_02229E68 - .extern Unk_ov60_02229E6C - .extern Unk_ov60_02229E70 - .extern Unk_ov60_02229E74 - .extern Unk_ov60_02229E78 - .extern Unk_ov60_02229E84 - .extern Unk_ov60_02229E90 - .extern Unk_ov60_02229EA4 - .extern Unk_ov60_02229EBC - .extern Unk_ov60_02229ED8 - .extern Unk_ov60_02229B24 - - - .text - - - arm_func_start ov60_02224630 -ov60_02224630: ; 0x02224630 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x18 - mov sb, r2 - mov sl, r1 - ldr r1, [sb, #8] - cmp r0, #0 - str r1, [sp, #8] - ldr r1, [sb, #0xc] - ldr r5, [sb, #4] - str r1, [sp, #4] - mvn r1, #0 - str r1, [sp] - beq _02224678 - cmp r0, #6 - beq _02224854 - cmp r0, #8 - beq _0222484C - b _0222485C -_02224678: - ldr r1, _02224948 ; =0x02229C24 - add r2, sp, #0x14 - mov r0, sl - bl ov60_02226D88 - cmp r0, #3 - movne r4, #3 - bne _02224860 - ldr r0, [sp, #0x14] - mov r1, #3 - bl ov60_022256B4 - ldr r1, _0222494C ; =0x0000012E - cmp r0, r1 - bne _022247C4 - add r1, sp, #0x10 - mov r0, sl - mov r8, #0 - bl ov60_02226E8C - movs r6, r0 - movmi r4, #3 - bmi _02224860 - cmp r6, #0 - mov r7, r8 - ble _022247B0 - ldr r4, _02224950 ; =0x02229C34 - mov fp, #8 -_022246DC: - ldr r3, [sp, #0x10] - mov r1, r7 - add r2, r3, r7 - b _022246F4 -_022246EC: - add r2, r2, #1 - add r7, r7, #1 -_022246F4: - ldrsb r0, [r2] - cmp r0, #0x3d - beq _02224708 - cmp r7, r6 - blt _022246EC -_02224708: - sub r0, r7, r1 - cmp r0, #8 - add r7, r7, #1 - bne _02224734 - add r0, r3, r1 - mov r1, r4 - mov r2, fp - bl ov60_0222567C - cmp r0, #0 - moveq r8, #1 - movne r8, #0 -_02224734: - ldr r1, [sp, #0x10] - mov r3, r7 - add r2, r1, r7 - b _0222474C -_02224744: - add r2, r2, #1 - add r7, r7, #1 -_0222474C: - ldrsb r0, [r2] - cmp r0, #0x26 - cmpne r0, #0xd - cmpne r0, #0 - beq _02224768 - cmp r7, r6 - blt _02224744 -_02224768: - cmp r8, #0 - sub r2, r7, r3 - add r7, r7, #1 - beq _022247A8 - cmp r2, #4 - bne _022247B0 - add r0, sp, #0xc - add r1, r1, r3 - bl ov60_022240C0 - mov r1, r0 - add r0, sp, #0xc - mov r2, #0 - strb r2, [r0, r1] - bl ov60_022256B4 - str r0, [sp] - b _022247B0 -_022247A8: - cmp r7, r6 - blt _022246DC -_022247B0: - ldr r0, [sp] - cmp r0, #0 - movlt r4, #3 - movge r4, #5 - b _02224860 -_022247C4: - cmp r0, #0 - ble _022247D4 - cmp r0, #0xc8 - beq _022247DC -_022247D4: - mov r4, #3 - b _02224860 -_022247DC: - cmp r5, #1 - beq _022247F8 - cmp r5, #2 - beq _02224814 - cmp r5, #3 - beq _02224830 - b _02224860 -_022247F8: - mov r0, sl - mov r1, sb - bl ov60_02225214 - cmp r0, #0 - movne r4, #0 - moveq r4, #3 - b _02224860 -_02224814: - mov r0, sl - mov r1, sb - bl ov60_02225294 - cmp r0, #0 - movne r4, #0 - moveq r4, #3 - b _02224860 -_02224830: - mov r0, sl - mov r1, sb - bl ov60_02225268 - cmp r0, #0 - movne r4, #0 - moveq r4, #3 - b _02224860 -_0222484C: - mov r4, #6 - b _02224860 -_02224854: - mov r4, #4 - b _02224860 -_0222485C: - mov r4, #3 -_02224860: - cmp r5, #1 - beq _022248D0 - cmp r5, #2 - beq _0222487C - cmp r5, #3 - beq _022248C0 - b _022248D0 -_0222487C: - ldr r0, [sb, #0x20] - cmp r0, #0 - beq _02224894 - ldr r1, _02224954 ; =0x02229E70 - ldr r1, [r1, #0] - blx r1 -_02224894: - ldr r0, [sb, #0x1c] - cmp r0, #0 - beq _022248AC - ldr r1, _02224954 ; =0x02229E70 - ldr r1, [r1, #0] - blx r1 -_022248AC: - ldr r1, _02224954 ; =0x02229E70 - ldr r0, [sb, #0x18] - ldr r1, [r1, #0] - blx r1 - b _022248D0 -_022248C0: - ldr r1, _02224954 ; =0x02229E70 - ldr r0, [sb, #0x10] - ldr r1, [r1, #0] - blx r1 -_022248D0: - bl ov60_02225534 - ldr r0, _02224958 ; =0x02229E74 - mvn r1, #0 - str r1, [r0, #0] - bl ov60_02225548 - mov r0, sl - bl ov60_02226C04 - ldr r1, _02224954 ; =0x02229E70 - mov r0, sb - ldr r1, [r1, #0] - blx r1 - bl ov60_022255D0 - cmp r4, #0 - ldrne r0, _0222495C ; =0x02229E6C - strne r4, [r0] - ldr r0, [sp, #8] - cmp r0, #0 - beq _0222492C - ldr r2, [sp] - ldr r3, [sp, #8] - mov r0, r5 - mov r1, r4 - blx r3 -_0222492C: - ldr r0, [sp, #4] - cmp r0, #0 - addeq sp, sp, #0x18 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl ov60_022255FC - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_02224948: .word 0x02229C24 -_0222494C: .word 0x0000012E -_02224950: .word 0x02229C34 -_02224954: .word Unk_ov60_02229E70 -_02224958: .word Unk_ov60_02229E74 -_0222495C: .word Unk_ov60_02229E6C - arm_func_end ov60_02224630 - - arm_func_start ov60_02224960 -ov60_02224960: ; 0x02224960 - stmfd sp!, {r4, lr} - mov r4, r0 - mov r0, r1 - bl ov60_0222691C - bl ov60_022255D0 - ldr r1, _02224988 ; =0x02229E70 - mov r0, r4 - ldr r1, [r1, #0] - blx r1 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02224988: .word Unk_ov60_02229E70 - arm_func_end ov60_02224960 - - arm_func_start ov60_0222498C -ov60_0222498C: ; 0x0222498C - stmfd sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #8 - mov r8, r0 - mov r7, r1 - ldr r0, _02224C44 ; =0x02229F38 - ldr r1, _02224C48 ; =0x02229F44 - mov r6, r2 - mov r5, r3 - bl ov60_02224584 - cmp r0, #0 - bne _022249D0 - ldr r0, _02224C4C ; =0x02229E6C - mov r1, #8 - str r1, [r0, #0] - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022249D0: - ldr r1, _02224C50 ; =0x02229E5C - mov r0, #0x24 - ldr r2, [r1, #0] - mov r1, #4 - blx r2 - movs r4, r0 - bne _02224A04 - ldr r0, _02224C4C ; =0x02229E6C - mov r1, #1 - str r1, [r0, #0] - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02224A04: - ldr r0, _02224C54 ; =0x02229E68 - mov r1, #0 - ldr r0, [r0, #0] - str r0, [r4, #8] - str r1, [r4, #0xc] - bl ov60_02225588 - cmp r0, #0 - bne _02224A4C - ldr r1, _02224C58 ; =0x02229E70 - mov r0, r4 - ldr r1, [r1, #0] - blx r1 - ldr r0, _02224C4C ; =0x02229E6C - mov r1, #2 - str r1, [r0, #0] - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02224A4C: - ldr r1, _02224C5C ; =ov60_02224630 - ldr r0, _02224C60 ; =0x02229E60 - stmia sp, {r1, r4} - ldr r0, [r0, #0] - ldr r3, [sp, #0x20] - mov r2, r5 - mov r1, #1 - bl ov60_022263B8 - movs r5, r0 - bne _02224AA0 - bl ov60_022255D0 - ldr r1, _02224C58 ; =0x02229E70 - mov r0, r4 - ldr r1, [r1, #0] - blx r1 - ldr r0, _02224C4C ; =0x02229E6C - mov r1, #3 - str r1, [r0, #0] - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02224AA0: - ldr r1, _02224C64 ; =0x02229C20 - str r4, [r8] - mov r2, #1 - str r5, [r7, #0] - bl ov60_02225C10 - cmp r0, #0 - beq _02224C20 - ldr r1, _02224C68 ; =0x02229C40 - ldr r2, _02224C6C ; =0x02229ED8 - mov r0, r5 - bl ov60_02225B78 - cmp r0, #0 - beq _02224C20 - ldr r1, _02224C70 ; =0x02229C4C - ldr r2, _02224C74 ; =0x02229E84 - mov r0, r5 - bl ov60_02225B9C - cmp r0, #0 - beq _02224C20 - ldr r1, _02224C78 ; =0x02229C54 - ldr r2, _02224C44 ; =0x02229F38 - mov r0, r5 - bl ov60_02225B9C - cmp r0, #0 - beq _02224C20 - ldr r1, _02224C7C ; =0x02229C60 - ldr r2, _02224C80 ; =0x02229EBC - mov r0, r5 - bl ov60_02225B9C - cmp r0, #0 - beq _02224C20 - ldr r0, _02224C84 ; =0x02229E58 - ldr r1, _02224C88 ; =0x02229C68 - ldr r2, [r0, #0] - mov r0, r5 - bl ov60_02225B9C - cmp r0, #0 - beq _02224C20 - ldr r1, _02224C8C ; =0x02229C70 - ldr r2, _02224C48 ; =0x02229F44 - mov r0, r5 - bl ov60_02225B9C - cmp r0, #0 - beq _02224C20 - ldr r1, _02224C90 ; =0x02229C78 - ldr r2, _02224C94 ; =0x02229E90 - mov r0, r5 - bl ov60_02225B9C - cmp r0, #0 - beq _02224C20 - ldr r1, _02224C98 ; =0x02229C80 - mov r0, r5 - mov r2, r6 - bl ov60_02225B9C - cmp r0, #0 - beq _02224C20 - ldr r0, _02224C9C ; =0x02229E78 - ldr r2, [r0, #0] - cmp r2, #0 - beq _02224BA4 - ldr r1, _02224CA0 ; =0x02229C88 - mov r0, r5 - bl ov60_02225B9C - cmp r0, #0 - beq _02224C20 -_02224BA4: - ldr r0, _02224C9C ; =0x02229E78 - ldr r2, [r0, #4] - cmp r2, #0 - beq _02224BC8 - ldr r1, _02224CA4 ; =0x02229C90 - mov r0, r5 - bl ov60_02225B9C - cmp r0, #0 - beq _02224C20 -_02224BC8: - ldr r0, _02224C9C ; =0x02229E78 - ldr r2, [r0, #8] - cmp r2, #0 - beq _02224BEC - ldr r1, _02224CA8 ; =0x02229C98 - mov r0, r5 - bl ov60_02225B9C - cmp r0, #0 - beq _02224C20 -_02224BEC: - ldr r0, _02224CAC ; =0x02229E54 - ldr r0, [r0, #0] - cmp r0, #0 - beq _02224C14 - ldr r1, _02224CB0 ; =0x02229CA0 - ldr r2, _02224CB4 ; =0x02229EA4 - mov r0, r5 - bl ov60_02225B9C - cmp r0, #0 - beq _02224C20 -_02224C14: - add sp, sp, #8 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02224C20: - mov r0, r4 - mov r1, r5 - bl ov60_02224960 - ldr r0, _02224C4C ; =0x02229E6C - mov r1, #1 - str r1, [r0, #0] - mov r0, #0 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_02224C44: .word Unk_ov60_02229F38 -_02224C48: .word Unk_ov60_02229F44 -_02224C4C: .word Unk_ov60_02229E6C -_02224C50: .word Unk_ov60_02229E5C -_02224C54: .word Unk_ov60_02229E68 -_02224C58: .word Unk_ov60_02229E70 -_02224C5C: .word ov60_02224630 -_02224C60: .word Unk_ov60_02229E60 -_02224C64: .word Unk_ov60_02229C20 -_02224C68: .word 0x02229C40 -_02224C6C: .word Unk_ov60_02229ED8 -_02224C70: .word 0x02229C4C -_02224C74: .word Unk_ov60_02229E84 -_02224C78: .word 0x02229C54 -_02224C7C: .word 0x02229C60 -_02224C80: .word Unk_ov60_02229EBC -_02224C84: .word Unk_ov60_02229E58 -_02224C88: .word 0x02229C68 -_02224C8C: .word 0x02229C70 -_02224C90: .word 0x02229C78 -_02224C94: .word Unk_ov60_02229E90 -_02224C98: .word 0x02229C80 -_02224C9C: .word Unk_ov60_02229E78 -_02224CA0: .word 0x02229C88 -_02224CA4: .word 0x02229C90 -_02224CA8: .word 0x02229C98 -_02224CAC: .word Unk_ov60_02229E54 -_02224CB0: .word 0x02229CA0 -_02224CB4: .word Unk_ov60_02229EA4 - arm_func_end ov60_0222498C - - arm_func_start ov60_02224CB8 -ov60_02224CB8: ; 0x02224CB8 - stmfd sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r5, r0 - bl ov60_02225534 - mov r0, r4 - bl ov60_02226A10 - ldr r1, _02224D10 ; =0x02229E74 - str r0, [r5, #0] - str r0, [r1, #0] - bl ov60_02225548 - ldr r0, [r5, #0] - cmp r0, #0 - movge r0, #1 - ldmgeia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, r4 - bl ov60_02224960 - ldr r0, _02224D14 ; =0x02229E6C - mov r1, #3 - str r1, [r0, #0] - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02224D10: .word Unk_ov60_02229E74 -_02224D14: .word Unk_ov60_02229E6C - arm_func_end ov60_02224CB8 - - arm_func_start DWCi_NdGetFileListNumAsync -DWCi_NdGetFileListNumAsync: ; 0x02224D18 - stmfd sp!, {r3, r4, lr} - sub sp, sp, #0xc - ldr r2, _02224D84 ; =0x02228CD8 - mov r4, r0 - mov ip, #0x80 - ldr r3, _02224D88 ; =0x02229F5C - add r0, sp, #8 - add r1, sp, #4 - str ip, [sp] - bl ov60_0222498C - cmp r0, #0 - addeq sp, sp, #0xc - moveq r0, #0 - ldmeqia sp!, {r3, r4, pc} - ldr r0, [sp, #8] - mov r1, #1 - str r1, [r0, #4] - ldr r0, [sp, #8] - str r4, [r0, #0x10] - ldr r0, [sp, #8] - ldr r1, [sp, #4] - bl ov60_02224CB8 - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - add sp, sp, #0xc - ldmia sp!, {r3, r4, pc} - ; .align 2, 0 -_02224D84: .word Unk_ov60_02228CD8 -_02224D88: .word Unk_ov60_02229F5C - arm_func_end DWCi_NdGetFileListNumAsync - - arm_func_start DWCi_NdGetFileListAsync -DWCi_NdGetFileListAsync: ; 0x02224D8C - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x18 - mov r4, r2 - mov r6, r1 - ldr r1, _02225034 ; =0x02229E5C - mov r7, r4, lsl #8 - cmp r7, #0x80 - ldr r2, [r1, #0] - movlt r7, #0x80 - mov r5, r0 - mov r0, r7 - mov r1, #4 - blx r2 - movs r8, r0 - bne _02224DE0 - ldr r0, _02225038 ; =0x02229E6C - mov r1, #1 - str r1, [r0, #0] - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_02224DE0: - add r0, sp, #0xc - mov r1, r6 - bl ov60_022256C0 - mov r6, r0 - bl ov60_02223FAC - ldr r1, _02225034 ; =0x02229E5C - add r0, r0, #1 - ldr r2, [r1, #0] - mov r1, #4 - blx r2 - movs sb, r0 - bne _02224E38 - ldr r1, _0222503C ; =0x02229E70 - mov r0, r8 - ldr r1, [r1, #0] - blx r1 - ldr r0, _02225038 ; =0x02229E6C - mov r1, #1 - str r1, [r0, #0] - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_02224E38: - add r1, sp, #0xc - mov r2, r6 - bl ov60_02223FC8 - mov r1, #0 - strb r1, [sb, r0] - add r0, sp, #0xc - mov r1, r4 - bl ov60_022256C0 - mov r6, r0 - bl ov60_02223FAC - ldr r1, _02225034 ; =0x02229E5C - add r0, r0, #1 - ldr r2, [r1, #0] - mov r1, #4 - blx r2 - movs sl, r0 - bne _02224EB4 - ldr r1, _0222503C ; =0x02229E70 - mov r0, sb - ldr r1, [r1, #0] - blx r1 - ldr r1, _0222503C ; =0x02229E70 - mov r0, r8 - ldr r1, [r1, #0] - blx r1 - ldr r0, _02225038 ; =0x02229E6C - mov r1, #1 - str r1, [r0, #0] - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_02224EB4: - add r1, sp, #0xc - mov r2, r6 - bl ov60_02223FC8 - mov r1, #0 - strb r1, [sl, r0] - ldr r2, _02225040 ; =0x02228CCC - add r0, sp, #8 - add r1, sp, #4 - mov r3, r8 - str r7, [sp] - bl ov60_0222498C - cmp r0, #0 - bne _02224F24 - ldr r1, _0222503C ; =0x02229E70 - mov r0, sl - ldr r1, [r1, #0] - blx r1 - ldr r1, _0222503C ; =0x02229E70 - mov r0, sb - ldr r1, [r1, #0] - blx r1 - ldr r1, _0222503C ; =0x02229E70 - mov r0, r8 - ldr r1, [r1, #0] - blx r1 - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_02224F24: - ldr r0, [sp, #4] - ldr r1, _02225044 ; =0x02229CA8 - mov r2, sb - bl ov60_02225B9C - cmp r0, #0 - beq _02224FE0 - ldr r0, [sp, #4] - ldr r1, _02225048 ; =0x02229CB0 - mov r2, sl - bl ov60_02225B9C - cmp r0, #0 - beq _02224FE0 - ldr r0, [sp, #8] - mov r1, #2 - str r1, [r0, #4] - ldr r0, [sp, #8] - str r5, [r0, #0x10] - ldr r0, [sp, #8] - str sb, [r0, #0x1c] - ldr r0, [sp, #8] - str sl, [r0, #0x20] - ldr r0, [sp, #8] - str r4, [r0, #0x14] - ldr r0, [sp, #8] - str r8, [r0, #0x18] - ldr r0, [sp, #8] - ldr r1, [sp, #4] - bl ov60_02224CB8 - cmp r0, #0 - addne sp, sp, #0x18 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldr r1, _0222503C ; =0x02229E70 - mov r0, sl - ldr r1, [r1, #0] - blx r1 - ldr r1, _0222503C ; =0x02229E70 - mov r0, sb - ldr r1, [r1, #0] - blx r1 - ldr r1, _0222503C ; =0x02229E70 - mov r0, r8 - ldr r1, [r1, #0] - blx r1 - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_02224FE0: - ldr r1, _0222503C ; =0x02229E70 - mov r0, sl - ldr r1, [r1, #0] - blx r1 - ldr r1, _0222503C ; =0x02229E70 - mov r0, sb - ldr r1, [r1, #0] - blx r1 - ldr r1, _0222503C ; =0x02229E70 - mov r0, r8 - ldr r1, [r1, #0] - blx r1 - ldr r0, [sp, #8] - ldr r1, [sp, #4] - bl ov60_02224960 - ldr r0, _02225038 ; =0x02229E6C - mov r1, #1 - str r1, [r0, #0] - mov r0, #0 - add sp, sp, #0x18 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ; .align 2, 0 -_02225034: .word Unk_ov60_02229E5C -_02225038: .word Unk_ov60_02229E6C -_0222503C: .word Unk_ov60_02229E70 -_02225040: .word Unk_ov60_02228CCC -_02225044: .word 0x02229CA8 -_02225048: .word 0x02229CB0 - arm_func_end DWCi_NdGetFileListAsync - - arm_func_start DWCi_NdGetFileAsync -DWCi_NdGetFileAsync: ; 0x0222504C - stmfd sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0xc - mov r8, r0 - ldr r3, [r8, #0xac] - mov r7, r1 - cmp r2, r3 - bhs _02225080 - ldr r0, _022251F4 ; =0x02229E6C - mov r1, #7 - str r1, [r0, #0] - add sp, sp, #0xc - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_02225080: - bl ov60_02225670 - mov r4, r0 - cmp r4, #0x20 - ble _022250A8 - ldr r0, _022251F4 ; =0x02229E6C - mov r1, #7 - str r1, [r0, #0] - add sp, sp, #0xc - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_022250A8: - cmp r4, #0 - movle r6, #0 - ble _022250BC - bl ov60_02223FAC - mov r6, r0 -_022250BC: - ldr r1, _022251F8 ; =0x02229E5C - add r0, r6, #1 - ldr r2, [r1, #0] - mov r1, #4 - blx r2 - movs r5, r0 - bne _022250F0 - ldr r0, _022251F4 ; =0x02229E6C - mov r1, #1 - str r1, [r0, #0] - add sp, sp, #0xc - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_022250F0: - ldr ip, [r8, #0xac] - ldr r2, _022251FC ; =0x02228CE4 - add r0, sp, #8 - add r1, sp, #4 - mov r3, r7 - str ip, [sp] - bl ov60_0222498C - cmp r0, #0 - bne _02225130 - ldr r1, _02225200 ; =0x02229E70 - mov r0, r5 - ldr r1, [r1, #0] - blx r1 - add sp, sp, #0xc - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_02225130: - cmp r6, #0 - ble _02225168 - mov r0, r5 - mov r1, r8 - mov r2, r4 - bl ov60_02223FC8 - mov r1, #0 - strb r1, [r5, r0] - ldr r0, [sp, #4] - ldr r1, _02225204 ; =0x02229CB4 - mov r2, r5 - bl ov60_02225B9C - cmp r0, #0 - beq _022251C0 -_02225168: - ldr r0, [sp, #8] - mov r1, #3 - str r1, [r0, #4] - ldr r0, [sp, #8] - str r5, [r0, #0x10] - ldr r1, [r8, #0xac] - ldr r0, [sp, #8] - str r1, [r0, #0x14] - ldr r0, [sp, #8] - ldr r1, [sp, #4] - bl ov60_02224CB8 - cmp r0, #0 - addne sp, sp, #0xc - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} - ldr r1, _02225200 ; =0x02229E70 - mov r0, r5 - ldr r1, [r1, #0] - blx r1 - add sp, sp, #0xc - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_022251C0: - ldr r0, [sp, #8] - ldr r1, [sp, #4] - bl ov60_02224960 - ldr r1, _02225200 ; =0x02229E70 - mov r0, r5 - ldr r1, [r1, #0] - blx r1 - ldr r0, _022251F4 ; =0x02229E6C - mov r1, #1 - str r1, [r0, #0] - mov r0, #0 - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_022251F4: .word Unk_ov60_02229E6C -_022251F8: .word Unk_ov60_02229E5C -_022251FC: .word Unk_ov60_02228CE4 -_02225200: .word Unk_ov60_02229E70 -_02225204: .word 0x02229CB4 - arm_func_end DWCi_NdGetFileAsync - - arm_func_start DWCi_NdGetProgress -DWCi_NdGetProgress: ; 0x02225208 - ldr ip, _02225210 ; =ov60_02227184 - bx ip - ; .align 2, 0 -_02225210: .word ov60_02227184 - arm_func_end DWCi_NdGetProgress - - .rodata - - - .global Unk_ov60_02228CCC -Unk_ov60_02228CCC: ; 0x02228CCC - .ascii "bGlzdA**" - .space 0x4 - - .global Unk_ov60_02228CD8 -Unk_ov60_02228CD8: ; 0x02228CD8 - .ascii "Y291bnQ*" - .space 0x4 - - .global Unk_ov60_02228CE4 -Unk_ov60_02228CE4: ; 0x02228CE4 - .asciz "Y29udGVudHM*" - - - - .data - - - .global Unk_ov60_02229C20 -Unk_ov60_02229C20: ; 0x02229C20 - .word Unk_ov60_02229B24 - - .global Unk_ov60_02229C24 -Unk_ov60_02229C24: ; 0x02229C24 - .ascii "HTTPSTATUSCODE" - .space 0x2 - - .global Unk_ov60_02229C34 -Unk_ov60_02229C34: ; 0x02229C34 - .ascii "returncd" - .space 0x4 - - .global Unk_ov60_02229C40 -Unk_ov60_02229C40: ; 0x02229C40 - .ascii "User-Agent" - .space 0x2 - - .global Unk_ov60_02229C4C -Unk_ov60_02229C4C: ; 0x02229C4C - .ascii "gamecd" - .space 0x2 - - .global Unk_ov60_02229C54 -Unk_ov60_02229C54: ; 0x02229C54 - .ascii "rhgamecd" - .space 0x4 - - .global Unk_ov60_02229C60 -Unk_ov60_02229C60: ; 0x02229C60 - .ascii "passwd" - .space 0x2 - - .global Unk_ov60_02229C68 -Unk_ov60_02229C68: ; 0x02229C68 - .asciz "token" - .space 0x2 - - .global Unk_ov60_02229C70 -Unk_ov60_02229C70: ; 0x02229C70 - .ascii "userid" - .space 0x2 - - .global Unk_ov60_02229C78 -Unk_ov60_02229C78: ; 0x02229C78 - .ascii "macadr" - .space 0x2 - - .global Unk_ov60_02229C80 -Unk_ov60_02229C80: ; 0x02229C80 - .ascii "action" - .space 0x2 - - .global Unk_ov60_02229C88 -Unk_ov60_02229C88: ; 0x02229C88 - .asciz "attr1" - .space 0x2 - - .global Unk_ov60_02229C90 -Unk_ov60_02229C90: ; 0x02229C90 - .asciz "attr2" - .space 0x2 - - .global Unk_ov60_02229C98 -Unk_ov60_02229C98: ; 0x02229C98 - .asciz "attr3" - .space 0x2 - - .global Unk_ov60_02229CA0 -Unk_ov60_02229CA0: ; 0x02229CA0 - .ascii "apinfo" - .space 0x2 - - .global Unk_ov60_02229CA8 -Unk_ov60_02229CA8: ; 0x02229CA8 - .ascii "offset" - .space 0x2 - - .global Unk_ov60_02229CB0 -Unk_ov60_02229CB0: ; 0x02229CB0 - .asciz "num" - - .global Unk_ov60_02229CB4 -Unk_ov60_02229CB4: ; 0x02229CB4 - .ascii "contents" - .space 0x4 - - - - .bss - - - .global Unk_ov60_02229F38 -Unk_ov60_02229F38: ; 0x02229F38 - .space 0xC - - .global Unk_ov60_02229F44 -Unk_ov60_02229F44: ; 0x02229F44 - .space 0x18 - - .global Unk_ov60_02229F5C -Unk_ov60_02229F5C: ; 0x02229F5C - .space 0x80 - diff --git a/subprojects/NitroDWC/libraries/nd/asm/dwci_nd_filecount.s b/subprojects/NitroDWC/libraries/nd/asm/dwci_nd_filecount.s deleted file mode 100644 index e1e9707657..0000000000 --- a/subprojects/NitroDWC/libraries/nd/asm/dwci_nd_filecount.s +++ /dev/null @@ -1,33 +0,0 @@ - .include "macros/function.inc" - .include "include/dwci_nd_filecou.inc" - - - - .text - - - arm_func_start ov60_02225214 -ov60_02225214: ; 0x02225214 - stmfd sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, r1 - add r1, sp, #0 - bl ov60_02226E8C - movs r1, r0 - bmi _0222525C - ldr r0, [sp] - bl ov60_022256B4 - ldr r1, [r4, #0x10] - add sp, sp, #4 - str r0, [r1, #0] - ldr r0, [r4, #0x10] - ldr r0, [r0, #0] - cmp r0, #0 - movge r0, #1 - movlt r0, #0 - ldmia sp!, {r3, r4, pc} -_0222525C: - mov r0, #0 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - arm_func_end ov60_02225214 \ No newline at end of file diff --git a/subprojects/NitroDWC/libraries/nd/asm/dwci_nd_fileget.s b/subprojects/NitroDWC/libraries/nd/asm/dwci_nd_fileget.s deleted file mode 100644 index d4561b4d03..0000000000 --- a/subprojects/NitroDWC/libraries/nd/asm/dwci_nd_fileget.s +++ /dev/null @@ -1,22 +0,0 @@ - .include "macros/function.inc" - .include "include/dwci_nd_fileget.inc" - - - - .text - - - arm_func_start ov60_02225268 -ov60_02225268: ; 0x02225268 - stmfd sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, r1 - add r1, sp, #0 - bl ov60_02226E8C - ldr r1, [r4, #0x14] - cmp r0, r1 - moveq r0, #1 - movne r0, #0 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - arm_func_end ov60_02225268 \ No newline at end of file diff --git a/subprojects/NitroDWC/libraries/nd/asm/dwci_nd_filelist.s b/subprojects/NitroDWC/libraries/nd/asm/dwci_nd_filelist.s deleted file mode 100644 index c5dc227615..0000000000 --- a/subprojects/NitroDWC/libraries/nd/asm/dwci_nd_filelist.s +++ /dev/null @@ -1,199 +0,0 @@ - .include "macros/function.inc" - .include "include/dwci_nd_filelis.inc" - - - - .text - - - arm_func_start ov60_02225294 -ov60_02225294: ; 0x02225294 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x18 - ldr r2, [r1, #0x14] - str r1, [sp] - mov r1, #0xb0 - mul r1, r2, r1 - mov r4, r0 - ldr r0, [sp] - mov r2, #0 - ldr r0, [r0, #0x10] - str r2, [sp, #4] - bl ov60_02225688 - ldr r1, _02225514 ; =0x02229CC0 - add r2, sp, #0x10 - mov r0, r4 - bl ov60_02226D88 - cmp r0, #0 - ble _022252FC - ldr r1, [sp, #0x10] - ldrsb r0, [r1] - cmp r0, #0x30 - ldreqsb r0, [r1, #1] - cmpeq r0, #0 - addeq sp, sp, #0x18 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022252FC: - add r1, sp, #0x14 - mov r0, r4 - bl ov60_02226E8C - mov r4, r0 - cmp r4, #0 - ble _02225508 - ldr r0, [sp] - mov r5, #0 - ldr r0, [r0, #0x14] - str r5, [sp, #0xc] - cmp r0, #0 - ble _02225508 - str r5, [sp, #8] -_02225330: - cmp r5, r4 - movge r0, #1 - strge r0, [sp, #4] - bge _02225508 - ldr r0, [sp] - mov r6, #0 - ldr r1, [r0, #0x10] - ldr r0, [sp, #8] - mov r7, r5 - mov r2, r6 - str r6, [sp, #4] - cmp r5, r4 - add r8, r1, r0 - bge _022254E0 - mov sl, r6 - mov fp, #1 -_02225370: - ldr r3, [sp, #0x14] - ldrsb r0, [r3, r5] - cmp r0, #0xd - moveq r2, fp - beq _022254D4 - cmp r2, #0 - beq _022253DC - cmp r0, #0xa - bne _022254D0 - cmp r6, #5 - bne _022253C0 - sub r0, r5, #1 - sub r1, r0, r7 - cmp r1, #8 - bgt _02225508 - add r0, r3, r7 - bl ov60_022256B4 - cmp r0, #0 - blt _02225508 - str r0, [r8, #0xac] -_022253C0: - cmp r6, #5 - movge r0, #1 - strge r0, [sp, #4] - movlt r0, #0 - add r5, r5, #1 - strlt r0, [sp, #4] - b _022254E0 -_022253DC: - cmp r0, #9 - bne _022254D0 - cmp r6, #5 - addls pc, pc, r6, lsl #2 - b _022254C8 -_022253F0: ; jump table - b _02225408 ; case 0 - b _02225424 ; case 1 - b _02225454 ; case 2 - b _02225470 ; case 3 - b _0222548C ; case 4 - b _022254A8 ; case 5 -_02225408: - sub r2, r5, r7 - cmp r2, #0x20 - bhi _02225508 - add r1, r3, r7 - mov r0, r8 - bl ov60_0222569C - b _022254C8 -_02225424: - sub sb, r5, r7 - mov r0, sb - bl ov60_02223FA0 - cmp r0, #0x66 - bhi _02225508 - ldr r0, [sp, #0x14] - mov r2, sb - add r1, r0, r7 - add r0, r8, #0x22 - bl ov60_022240C0 - strh sl, [r8, #0x86] - b _022254C8 -_02225454: - sub r2, r5, r7 - cmp r2, #0xa - bhi _02225508 - add r1, r3, r7 - add r0, r8, #0x88 - bl ov60_0222569C - b _022254C8 -_02225470: - sub r2, r5, r7 - cmp r2, #0xa - bhi _02225508 - add r1, r3, r7 - add r0, r8, #0x93 - bl ov60_0222569C - b _022254C8 -_0222548C: - sub r2, r5, r7 - cmp r2, #0xa - bhi _02225508 - add r1, r3, r7 - add r0, r8, #0x9e - bl ov60_0222569C - b _022254C8 -_022254A8: - sub r1, r5, r7 - cmp r1, #8 - bgt _02225508 - add r0, r3, r7 - bl ov60_022256B4 - cmp r0, #0 - blt _02225508 - str r0, [r8, #0xac] -_022254C8: - add r6, r6, #1 - add r7, r5, #1 -_022254D0: - mov r2, #0 -_022254D4: - add r5, r5, #1 - cmp r5, r4 - blt _02225370 -_022254E0: - ldr r0, [sp] - ldr r1, [r0, #0x14] - ldr r0, [sp, #0xc] - add r0, r0, #1 - str r0, [sp, #0xc] - cmp r0, r1 - ldr r0, [sp, #8] - add r0, r0, #0xb0 - str r0, [sp, #8] - blt _02225330 -_02225508: - ldr r0, [sp, #4] - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_02225514: .word Unk_ov60_02229CC0 - arm_func_end ov60_02225294 - - .data - - - .global Unk_ov60_02229CC0 -Unk_ov60_02229CC0: ; 0x02229CC0 - .ascii "Content-Length" - .space 0x2 - diff --git a/subprojects/NitroDWC/libraries/nd/asm/dwci_nd_os_nitro.s b/subprojects/NitroDWC/libraries/nd/asm/dwci_nd_os_nitro.s deleted file mode 100644 index 167c9f0f11..0000000000 --- a/subprojects/NitroDWC/libraries/nd/asm/dwci_nd_os_nitro.s +++ /dev/null @@ -1,157 +0,0 @@ - .include "macros/function.inc" - .include "include/dwci_nd_os_nitr.inc" - - - - .text - - - arm_func_start ov60_02225518 -ov60_02225518: ; 0x02225518 - stmfd sp!, {r3, lr} - ldr r0, _0222552C ; =0x02229FF8 - bl OS_InitMutex - mov r0, #1 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222552C: .word Unk_ov60_02229FF8 - arm_func_end ov60_02225518 - - arm_func_start ov60_02225530 -ov60_02225530: ; 0x02225530 - bx lr - arm_func_end ov60_02225530 - - arm_func_start ov60_02225534 -ov60_02225534: ; 0x02225534 - ldr ip, _02225540 ; =OS_LockMutex - ldr r0, _02225544 ; =0x02229FF8 - bx ip - ; .align 2, 0 -_02225540: .word OS_LockMutex -_02225544: .word Unk_ov60_02229FF8 - arm_func_end ov60_02225534 - - arm_func_start ov60_02225548 -ov60_02225548: ; 0x02225548 - ldr ip, _02225554 ; =OS_UnlockMutex - ldr r0, _02225558 ; =0x02229FF8 - bx ip - ; .align 2, 0 -_02225554: .word OS_UnlockMutex -_02225558: .word Unk_ov60_02229FF8 - arm_func_end ov60_02225548 - - arm_func_start ov60_0222555C -ov60_0222555C: ; 0x0222555C - stmfd sp!, {r3, lr} - ldr r0, _0222557C ; =0x02229FE0 - bl OS_InitMutex - ldr r0, _02225580 ; =0x02229FDC - mov r1, #0 - str r1, [r0, #0] - mov r0, #1 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222557C: .word Unk_ov60_02229FE0 -_02225580: .word Unk_ov60_02229FDC - arm_func_end ov60_0222555C - - arm_func_start ov60_02225584 -ov60_02225584: ; 0x02225584 - bx lr - arm_func_end ov60_02225584 - - arm_func_start ov60_02225588 -ov60_02225588: ; 0x02225588 - stmfd sp!, {r4, lr} - ldr r0, _022255C8 ; =0x02229FE0 - bl OS_LockMutex - ldr r0, _022255CC ; =0x02229FDC - ldr r0, [r0, #0] - cmp r0, #0 - moveq r4, #1 - movne r4, #0 - cmp r4, #0 - ldrne r0, _022255CC ; =0x02229FDC - movne r1, #1 - strne r1, [r0] - ldr r0, _022255C8 ; =0x02229FE0 - bl OS_UnlockMutex - mov r0, r4 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_022255C8: .word Unk_ov60_02229FE0 -_022255CC: .word Unk_ov60_02229FDC - arm_func_end ov60_02225588 - - arm_func_start ov60_022255D0 -ov60_022255D0: ; 0x022255D0 - stmfd sp!, {r3, lr} - ldr r0, _022255F4 ; =0x02229FE0 - bl OS_LockMutex - ldr r1, _022255F8 ; =0x02229FDC - mov r2, #0 - ldr r0, _022255F4 ; =0x02229FE0 - str r2, [r1, #0] - bl OS_UnlockMutex - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022255F4: .word Unk_ov60_02229FE0 -_022255F8: .word Unk_ov60_02229FDC - arm_func_end ov60_022255D0 - - arm_func_start ov60_022255FC -ov60_022255FC: ; 0x022255FC - ldr ip, _0222560C ; =OS_SendMessage - mov r1, #0 - mov r2, r1 - bx ip - ; .align 2, 0 -_0222560C: .word OS_SendMessage - arm_func_end ov60_022255FC - - arm_func_start ov60_02225610 -ov60_02225610: ; 0x02225610 - stmfd sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x14 - mov sb, r0 - add r0, sp, #0 - bl OS_GetMacAddress - mov r6, #0 - add r7, sp, #0 - mov r8, r6 - add r5, sp, #6 - mov r4, #2 -_02225638: - ldrb r1, [r7], #1 - mov r2, r4 - add r0, r5, r8 - bl ov60_022257A4 - add r6, r6, #1 - cmp r6, #6 - add r8, r8, #2 - blt _02225638 - add r1, sp, #6 - mov r0, sb - mov r2, #0xc - bl ov60_02223FC8 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - arm_func_end ov60_02225610 - - .bss - - - .global Unk_ov60_02229FDC -Unk_ov60_02229FDC: ; 0x02229FDC - .space 0x4 - - .global Unk_ov60_02229FE0 -Unk_ov60_02229FE0: ; 0x02229FE0 - .space 0x18 - - .global Unk_ov60_02229FF8 -Unk_ov60_02229FF8: ; 0x02229FF8 - .space 0x18 - diff --git a/subprojects/NitroDWC/libraries/nd/asm/dwci_nd_stdlib_nitro.s b/subprojects/NitroDWC/libraries/nd/asm/dwci_nd_stdlib_nitro.s deleted file mode 100644 index 2cddac9624..0000000000 --- a/subprojects/NitroDWC/libraries/nd/asm/dwci_nd_stdlib_nitro.s +++ /dev/null @@ -1,44 +0,0 @@ - .include "macros/function.inc" - .include "include/dwci_nd_stdlib_.inc" - - - - .text - - - arm_func_start ov60_02225670 -ov60_02225670: ; 0x02225670 - ldr ip, _02225678 ; =STD_GetStringLength - bx ip - ; .align 2, 0 -_02225678: .word STD_GetStringLength - arm_func_end ov60_02225670 - - arm_func_start ov60_0222567C -ov60_0222567C: ; 0x0222567C - ldr ip, _02225684 ; =STD_CompareNString - bx ip - ; .align 2, 0 -_02225684: .word STD_CompareNString - arm_func_end ov60_0222567C - - arm_func_start ov60_02225688 -ov60_02225688: ; 0x02225688 - ldr ip, _02225698 ; =MI_CpuFill8 - mov r2, r1 - mov r1, #0 - bx ip - ; .align 2, 0 -_02225698: .word MI_CpuFill8 - arm_func_end ov60_02225688 - - arm_func_start ov60_0222569C -ov60_0222569C: ; 0x0222569C - ldr ip, _022256B0 ; =MI_CpuCopy8 - mov r3, r0 - mov r0, r1 - mov r1, r3 - bx ip - ; .align 2, 0 -_022256B0: .word MI_CpuCopy8 - arm_func_end ov60_0222569C \ No newline at end of file diff --git a/subprojects/NitroDWC/libraries/nd/asm/dwci_nd_string.s b/subprojects/NitroDWC/libraries/nd/asm/dwci_nd_string.s deleted file mode 100644 index 4fa559565a..0000000000 --- a/subprojects/NitroDWC/libraries/nd/asm/dwci_nd_string.s +++ /dev/null @@ -1,122 +0,0 @@ - .include "macros/function.inc" - .include "include/dwci_nd_string.inc" - - - - .text - - - arm_func_start ov60_022256B4 -ov60_022256B4: ; 0x022256B4 - ldr ip, _022256BC ; =ov60_02228980 - bx ip - ; .align 2, 0 -_022256BC: .word ov60_02228980 - arm_func_end ov60_022256B4 - - arm_func_start ov60_022256C0 -ov60_022256C0: ; 0x022256C0 - ldr ip, _022256C8 ; =ov60_02228A18 - bx ip - ; .align 2, 0 -_022256C8: .word ov60_02228A18 - arm_func_end ov60_022256C0 - - arm_func_start ov60_022256CC -ov60_022256CC: ; 0x022256CC - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r8, r2 - ldr r4, _02225798 ; =0x01634578 - ldr r2, _0222579C ; =0x5D8A0000 - mov sb, r1 - cmp r8, r4 - mov sl, r0 - mov fp, r3 - mov r5, #0 - cmpeq sb, r2 - subhs r0, r5, #1 - ldmhsia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r4, r5 - mov r0, r5 -_02225704: - ldr r1, _022257A0 ; =0x02228CF4 - add r1, r1, r4, lsl #3 - ldr r6, [r1, #4] - ldr r1, _022257A0 ; =0x02228CF4 - cmp r8, r6 - ldr r7, [r1, r4, lsl #3] - cmpeq sb, r7 - blo _0222575C - mov r0, sb - mov r1, r8 - mov r2, r7 - mov r3, r6 - bl _ull_div - umull r3, r2, r0, r7 - mla r2, r0, r6, r2 - add r0, r0, #0x30 - strb r0, [sl, r5] - subs sb, sb, r3 - sbc r8, r8, r2 - mov r0, #1 - add r5, r5, #1 - b _0222577C -_0222575C: - cmp r0, #0 - bne _02225770 - rsb r1, r4, #0x11 - cmp r1, fp - bgt _0222577C -_02225770: - mov r1, #0x30 - strb r1, [sl, r5] - add r5, r5, #1 -_0222577C: - add r4, r4, #1 - cmp r4, #0x10 - blt _02225704 - adds r0, sb, #0x30 - strb r0, [sl, r5] - add r0, r5, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_02225798: .word 0x01634578 -_0222579C: .word 0x5D8A0000 -_022257A0: .word Unk_ov60_02228CF4 - arm_func_end ov60_022256CC - - arm_func_start ov60_022257A4 -ov60_022257A4: ; 0x022257A4 - stmfd sp!, {r3, lr} - mov lr, #0 - cmp r2, #8 - subgt r0, lr, #1 - ldmgtia sp!, {r3, pc} - cmp r2, #1 - mov ip, #1 - blt _022257F4 -_022257C4: - sub r3, r2, ip - mov r3, r3, lsl #2 - mov r3, r1, lsr r3 - and r3, r3, #0xf - cmp r3, #0xa - addlo r3, r3, #0x30 - addhs r3, r3, #0x57 - add ip, ip, #1 - strb r3, [r0, lr] - add lr, lr, #1 - cmp ip, r2 - ble _022257C4 -_022257F4: - mov r0, lr - ldmia sp!, {r3, pc} - arm_func_end ov60_022257A4 - - .rodata - - - .global Unk_ov60_02228CF4 -Unk_ov60_02228CF4: ; 0x02228CF4 - .incbin "incbin/dwci_nd_string.bin", 0x0, 0x80 - diff --git a/subprojects/NitroDWC/libraries/nd/asm/incbin/dwci_nd_ca_nasself.bin b/subprojects/NitroDWC/libraries/nd/asm/incbin/dwci_nd_ca_nasself.bin deleted file mode 100644 index 89139e961b..0000000000 Binary files a/subprojects/NitroDWC/libraries/nd/asm/incbin/dwci_nd_ca_nasself.bin and /dev/null differ diff --git a/subprojects/NitroDWC/libraries/nd/asm/incbin/dwci_nd_string.bin b/subprojects/NitroDWC/libraries/nd/asm/incbin/dwci_nd_string.bin deleted file mode 100644 index 8a068dc259..0000000000 Binary files a/subprojects/NitroDWC/libraries/nd/asm/incbin/dwci_nd_string.bin and /dev/null differ diff --git a/subprojects/NitroDWC/libraries/nd/asm/include/dwci_nd_attr.inc b/subprojects/NitroDWC/libraries/nd/asm/include/dwci_nd_attr.inc deleted file mode 100644 index 7654f7d25d..0000000000 --- a/subprojects/NitroDWC/libraries/nd/asm/include/dwci_nd_attr.inc +++ /dev/null @@ -1,7 +0,0 @@ -.public ov60_02223D7C -.public ov60_02223DC0 -.public ov60_02223FAC -.public ov60_02223FC8 -.public ov60_02225534 -.public ov60_02225548 -.public ov60_02225670 diff --git a/subprojects/NitroDWC/libraries/nd/asm/include/dwci_nd_base64.inc b/subprojects/NitroDWC/libraries/nd/asm/include/dwci_nd_base64.inc deleted file mode 100644 index 7b8e9f88ca..0000000000 --- a/subprojects/NitroDWC/libraries/nd/asm/include/dwci_nd_base64.inc +++ /dev/null @@ -1,2 +0,0 @@ -.public ov60_02223F00 -.public ov60_02223F48 diff --git a/subprojects/NitroDWC/libraries/nd/asm/include/dwci_nd_bgnend.inc b/subprojects/NitroDWC/libraries/nd/asm/include/dwci_nd_bgnend.inc deleted file mode 100644 index 01ee05a8f9..0000000000 --- a/subprojects/NitroDWC/libraries/nd/asm/include/dwci_nd_bgnend.inc +++ /dev/null @@ -1,15 +0,0 @@ -.public ov60_02223D7C -.public ov60_02223FC8 -.public ov60_022241E8 -.public ov60_022243DC -.public ov60_02224484 -.public ov60_02224610 -.public ov60_02225518 -.public ov60_02225530 -.public ov60_0222555C -.public ov60_02225584 -.public ov60_02225610 -.public ov60_02225670 -.public ov60_0222569C -.public ov60_022257FC -.public ov60_022258C4 diff --git a/subprojects/NitroDWC/libraries/nd/asm/include/dwci_nd_cancel.inc b/subprojects/NitroDWC/libraries/nd/asm/include/dwci_nd_cancel.inc deleted file mode 100644 index 65672bb9a7..0000000000 --- a/subprojects/NitroDWC/libraries/nd/asm/include/dwci_nd_cancel.inc +++ /dev/null @@ -1,5 +0,0 @@ -.public ov60_02225534 -.public ov60_02225548 -.public ov60_02225588 -.public ov60_022255D0 -.public ov60_02226A9C diff --git a/subprojects/NitroDWC/libraries/nd/asm/include/dwci_nd_dwc_nit.inc b/subprojects/NitroDWC/libraries/nd/asm/include/dwci_nd_dwc_nit.inc deleted file mode 100644 index f1361311f2..0000000000 --- a/subprojects/NitroDWC/libraries/nd/asm/include/dwci_nd_dwc_nit.inc +++ /dev/null @@ -1,8 +0,0 @@ -.public sub_020A283C -.public OS_SNPrintf -.public DWC_GetApInfo -.public ov60_02223FC8 -.public ov60_02225688 -.public ov60_0222569C -.public ov60_022256C0 -.public ov60_022256CC diff --git a/subprojects/NitroDWC/libraries/nd/asm/include/dwci_nd_fileapi.inc b/subprojects/NitroDWC/libraries/nd/asm/include/dwci_nd_fileapi.inc deleted file mode 100644 index 3fe35fa9ee..0000000000 --- a/subprojects/NitroDWC/libraries/nd/asm/include/dwci_nd_fileapi.inc +++ /dev/null @@ -1,30 +0,0 @@ -.public ov60_02223FAC -.public ov60_02223FC8 -.public ov60_022240C0 -.public ov60_02224584 -.public ov60_02224630 -.public ov60_02224960 -.public ov60_0222498C -.public ov60_02224CB8 -.public ov60_02225214 -.public ov60_02225268 -.public ov60_02225294 -.public ov60_02225534 -.public ov60_02225548 -.public ov60_02225588 -.public ov60_022255D0 -.public ov60_022255FC -.public ov60_02225670 -.public ov60_0222567C -.public ov60_022256B4 -.public ov60_022256C0 -.public ov60_02225B78 -.public ov60_02225B9C -.public ov60_02225C10 -.public ov60_022263B8 -.public ov60_0222691C -.public ov60_02226A10 -.public ov60_02226C04 -.public ov60_02226D88 -.public ov60_02226E8C -.public ov60_02227184 diff --git a/subprojects/NitroDWC/libraries/nd/asm/include/dwci_nd_filecou.inc b/subprojects/NitroDWC/libraries/nd/asm/include/dwci_nd_filecou.inc deleted file mode 100644 index 37f31b380e..0000000000 --- a/subprojects/NitroDWC/libraries/nd/asm/include/dwci_nd_filecou.inc +++ /dev/null @@ -1,2 +0,0 @@ -.public ov60_022256B4 -.public ov60_02226E8C diff --git a/subprojects/NitroDWC/libraries/nd/asm/include/dwci_nd_fileget.inc b/subprojects/NitroDWC/libraries/nd/asm/include/dwci_nd_fileget.inc deleted file mode 100644 index f80905cea3..0000000000 --- a/subprojects/NitroDWC/libraries/nd/asm/include/dwci_nd_fileget.inc +++ /dev/null @@ -1 +0,0 @@ -.public ov60_02226E8C diff --git a/subprojects/NitroDWC/libraries/nd/asm/include/dwci_nd_filelis.inc b/subprojects/NitroDWC/libraries/nd/asm/include/dwci_nd_filelis.inc deleted file mode 100644 index 628923a9a1..0000000000 --- a/subprojects/NitroDWC/libraries/nd/asm/include/dwci_nd_filelis.inc +++ /dev/null @@ -1,7 +0,0 @@ -.public ov60_02223FA0 -.public ov60_022240C0 -.public ov60_02225688 -.public ov60_0222569C -.public ov60_022256B4 -.public ov60_02226D88 -.public ov60_02226E8C diff --git a/subprojects/NitroDWC/libraries/nd/asm/include/dwci_nd_os_nitr.inc b/subprojects/NitroDWC/libraries/nd/asm/include/dwci_nd_os_nitr.inc deleted file mode 100644 index fcd5c568d5..0000000000 --- a/subprojects/NitroDWC/libraries/nd/asm/include/dwci_nd_os_nitr.inc +++ /dev/null @@ -1,7 +0,0 @@ -.public OS_SendMessage -.public OS_InitMutex -.public OS_LockMutex -.public OS_UnlockMutex -.public OS_GetMacAddress -.public ov60_02223FC8 -.public ov60_022257A4 diff --git a/subprojects/NitroDWC/libraries/nd/asm/include/dwci_nd_stdlib_.inc b/subprojects/NitroDWC/libraries/nd/asm/include/dwci_nd_stdlib_.inc deleted file mode 100644 index 9d6a6945af..0000000000 --- a/subprojects/NitroDWC/libraries/nd/asm/include/dwci_nd_stdlib_.inc +++ /dev/null @@ -1,4 +0,0 @@ -.public MI_CpuFill8 -.public MI_CpuCopy8 -.public STD_GetStringLength -.public STD_CompareNString diff --git a/subprojects/NitroDWC/libraries/nd/asm/include/dwci_nd_string.inc b/subprojects/NitroDWC/libraries/nd/asm/include/dwci_nd_string.inc deleted file mode 100644 index 6ea72b4116..0000000000 --- a/subprojects/NitroDWC/libraries/nd/asm/include/dwci_nd_string.inc +++ /dev/null @@ -1,3 +0,0 @@ -.public _ull_div -.public ov60_02228980 -.public ov60_02228A18 diff --git a/subprojects/NitroDWC/libraries/nd/asm/macros/function.inc b/subprojects/NitroDWC/libraries/nd/asm/macros/function.inc deleted file mode 100644 index f71cc4ccae..0000000000 --- a/subprojects/NitroDWC/libraries/nd/asm/macros/function.inc +++ /dev/null @@ -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 \ No newline at end of file diff --git a/subprojects/NitroDWC/libraries/nd/meson.build b/subprojects/NitroDWC/libraries/nd/meson.build deleted file mode 100644 index 1dbad0d494..0000000000 --- a/subprojects/NitroDWC/libraries/nd/meson.build +++ /dev/null @@ -1,24 +0,0 @@ -libdwcnd_srcs = files( - 'asm/dwci_nd_ca_nasself.s', - 'asm/dwci_nd_attr.s', - 'asm/dwci_nd_base64.s', - 'asm/dwci_nd_bgnend.s', - 'asm/dwci_nd_cancel.s', - 'asm/dwci_nd_dwc_nitro.s', - 'asm/dwci_nd_fileapi.s', - 'asm/dwci_nd_filecount.s', - 'asm/dwci_nd_fileget.s', - 'asm/dwci_nd_filelist.s', - 'asm/dwci_nd_os_nitro.s', - 'asm/dwci_nd_stdlib_nitro.s', - 'asm/dwci_nd_string.s' -) - -libdwcnd = static_library('dwcnd', - sources: libdwcnd_srcs, - nasm_args: asm_args, - include_directories: public_includes, - pic: false -) - -nitrodwc_libs += libdwcnd diff --git a/subprojects/NitroDWC/libraries/nhttp/asm/incbin/nhttp_token.bin b/subprojects/NitroDWC/libraries/nhttp/asm/incbin/nhttp_token.bin deleted file mode 100644 index 53419ebe79..0000000000 Binary files a/subprojects/NitroDWC/libraries/nhttp/asm/incbin/nhttp_token.bin and /dev/null differ diff --git a/subprojects/NitroDWC/libraries/nhttp/asm/include/nhttp_bgnend.inc b/subprojects/NitroDWC/libraries/nhttp/asm/include/nhttp_bgnend.inc deleted file mode 100644 index 49f3c15048..0000000000 --- a/subprojects/NitroDWC/libraries/nhttp/asm/include/nhttp_bgnend.inc +++ /dev/null @@ -1,8 +0,0 @@ -.public OS_CreateThread -.public OS_WakeupThreadDirect -.public ov60_0222590C -.public ov60_02225E1C -.public ov60_02225E34 -.public ov60_02225E60 -.public ov60_02225ED8 -.public ov60_02226B18 diff --git a/subprojects/NitroDWC/libraries/nhttp/asm/include/nhttp_control.inc b/subprojects/NitroDWC/libraries/nhttp/asm/include/nhttp_control.inc deleted file mode 100644 index d90966dd98..0000000000 --- a/subprojects/NitroDWC/libraries/nhttp/asm/include/nhttp_control.inc +++ /dev/null @@ -1,6 +0,0 @@ -.public ov60_02225948 -.public ov60_02225AA4 -.public ov60_02225AD8 -.public ov60_0222714C -.public ov60_02228AD4 -.public ov60_02228BC8 diff --git a/subprojects/NitroDWC/libraries/nhttp/asm/include/nhttp_list.inc b/subprojects/NitroDWC/libraries/nhttp/asm/include/nhttp_list.inc deleted file mode 100644 index 794378f32b..0000000000 --- a/subprojects/NitroDWC/libraries/nhttp/asm/include/nhttp_list.inc +++ /dev/null @@ -1,4 +0,0 @@ -.public ov60_02225A60 -.public ov60_02225CE0 -.public ov60_02225D38 -.public ov60_02226998 diff --git a/subprojects/NitroDWC/libraries/nhttp/asm/include/nhttp_os_nitro.inc b/subprojects/NitroDWC/libraries/nhttp/asm/include/nhttp_os_nitro.inc deleted file mode 100644 index 5b99fadce7..0000000000 --- a/subprojects/NitroDWC/libraries/nhttp/asm/include/nhttp_os_nitro.inc +++ /dev/null @@ -1,12 +0,0 @@ -.public OS_IsThreadAvailable -.public OS_CreateThread -.public OS_JoinThread -.public OS_WakeupThreadDirect -.public OS_InitMessageQueue -.public OS_SendMessage -.public OS_ReceiveMessage -.public OS_InitMutex -.public OS_LockMutex -.public OS_UnlockMutex -.public ov60_02225F1C -.public ov60_022274A0 diff --git a/subprojects/NitroDWC/libraries/nhttp/asm/include/nhttp_recvbuf.inc b/subprojects/NitroDWC/libraries/nhttp/asm/include/nhttp_recvbuf.inc deleted file mode 100644 index a888680c2d..0000000000 --- a/subprojects/NitroDWC/libraries/nhttp/asm/include/nhttp_recvbuf.inc +++ /dev/null @@ -1,5 +0,0 @@ -.public ov60_02225F38 -.public ov60_02225F94 -.public ov60_0222630C -.public ov60_02227024 -.public ov60_0222716C diff --git a/subprojects/NitroDWC/libraries/nhttp/asm/include/nhttp_request.inc b/subprojects/NitroDWC/libraries/nhttp/asm/include/nhttp_request.inc deleted file mode 100644 index 3beef0b851..0000000000 --- a/subprojects/NitroDWC/libraries/nhttp/asm/include/nhttp_request.inc +++ /dev/null @@ -1,15 +0,0 @@ -.public ov60_02225C2C -.public ov60_02225D38 -.public ov60_02225DD8 -.public ov60_02225E38 -.public ov60_02225E4C -.public ov60_02225F1C -.public ov60_02226944 -.public ov60_02226998 -.public ov60_022270BC -.public ov60_022270E4 -.public ov60_0222714C -.public ov60_02227158 -.public ov60_0222716C -.public ov60_02228898 -.public ov60_02228B58 diff --git a/subprojects/NitroDWC/libraries/nhttp/asm/include/nhttp_resolve_n.inc b/subprojects/NitroDWC/libraries/nhttp/asm/include/nhttp_resolve_n.inc deleted file mode 100644 index e2f41853db..0000000000 --- a/subprojects/NitroDWC/libraries/nhttp/asm/include/nhttp_resolve_n.inc +++ /dev/null @@ -1,2 +0,0 @@ -.public SOCL_Resolve -.public SOC_InetAtoN diff --git a/subprojects/NitroDWC/libraries/nhttp/asm/include/nhttp_response.inc b/subprojects/NitroDWC/libraries/nhttp/asm/include/nhttp_response.inc deleted file mode 100644 index 8280b6c901..0000000000 --- a/subprojects/NitroDWC/libraries/nhttp/asm/include/nhttp_response.inc +++ /dev/null @@ -1,6 +0,0 @@ -.public ov60_02226010 -.public ov60_022260E0 -.public ov60_02226150 -.public ov60_02226220 -.public ov60_02226C7C -.public ov60_022270D8 diff --git a/subprojects/NitroDWC/libraries/nhttp/asm/include/nhttp_socket_ni.inc b/subprojects/NitroDWC/libraries/nhttp/asm/include/nhttp_socket_ni.inc deleted file mode 100644 index b4733babb3..0000000000 --- a/subprojects/NitroDWC/libraries/nhttp/asm/include/nhttp_socket_ni.inc +++ /dev/null @@ -1,12 +0,0 @@ -.public OS_Sleep -.public OS_GetLowEntropyData -.public SOC_Socket -.public SOC_Connect -.public SOC_Recv -.public SOC_Send -.public SOC_Shutdown -.public SOC_Close -.public SOCL_EnableSsl -.public CPS_SslAddRandomSeed -.public ov60_02226EB0 -.public ov60_02226EBC diff --git a/subprojects/NitroDWC/libraries/nhttp/asm/include/nhttp_stdlib_ni.inc b/subprojects/NitroDWC/libraries/nhttp/asm/include/nhttp_stdlib_ni.inc deleted file mode 100644 index d85815b4fc..0000000000 --- a/subprojects/NitroDWC/libraries/nhttp/asm/include/nhttp_stdlib_ni.inc +++ /dev/null @@ -1,4 +0,0 @@ -.public MI_CpuFill8 -.public MI_CpuCopy8 -.public STD_GetStringLength -.public STD_CompareString diff --git a/subprojects/NitroDWC/libraries/nhttp/asm/include/nhttp_thread.inc b/subprojects/NitroDWC/libraries/nhttp/asm/include/nhttp_thread.inc deleted file mode 100644 index 7ac624330f..0000000000 --- a/subprojects/NitroDWC/libraries/nhttp/asm/include/nhttp_thread.inc +++ /dev/null @@ -1,35 +0,0 @@ -.public SOC_Poll -.public ov60_02225A60 -.public ov60_02225E08 -.public ov60_02225E38 -.public ov60_02225E4C -.public ov60_02225F00 -.public ov60_02226010 -.public ov60_02226150 -.public ov60_02226220 -.public ov60_0222630C -.public ov60_02226320 -.public ov60_02226348 -.public ov60_02226998 -.public ov60_02226B6C -.public ov60_02226C7C -.public ov60_02226EBC -.public ov60_02226EDC -.public ov60_02226F5C -.public ov60_02226F6C -.public ov60_02226FA8 -.public ov60_02227024 -.public ov60_02227070 -.public ov60_022270E4 -.public ov60_0222714C -.public ov60_0222716C -.public ov60_02227224 -.public ov60_022272D8 -.public ov60_02227364 -.public ov60_022273A0 -.public ov60_02227440 -.public ov60_022287A0 -.public ov60_02228808 -.public ov60_02228898 -.public ov60_02228980 -.public ov60_02228A18 diff --git a/subprojects/NitroDWC/libraries/nhttp/asm/include/nhttp_token.inc b/subprojects/NitroDWC/libraries/nhttp/asm/include/nhttp_token.inc deleted file mode 100644 index 389bda8ac7..0000000000 --- a/subprojects/NitroDWC/libraries/nhttp/asm/include/nhttp_token.inc +++ /dev/null @@ -1 +0,0 @@ -.public _u32_div_f diff --git a/subprojects/NitroDWC/libraries/nhttp/asm/macros/function.inc b/subprojects/NitroDWC/libraries/nhttp/asm/macros/function.inc deleted file mode 100644 index f71cc4ccae..0000000000 --- a/subprojects/NitroDWC/libraries/nhttp/asm/macros/function.inc +++ /dev/null @@ -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 \ No newline at end of file diff --git a/subprojects/NitroDWC/libraries/nhttp/asm/nhttp_bgnend.s b/subprojects/NitroDWC/libraries/nhttp/asm/nhttp_bgnend.s deleted file mode 100644 index df1d9bed1c..0000000000 --- a/subprojects/NitroDWC/libraries/nhttp/asm/nhttp_bgnend.s +++ /dev/null @@ -1,155 +0,0 @@ - .include "macros/function.inc" - .include "include/nhttp_bgnend.inc" - - .extern Unk_ov60_0222A8F4 - - .text - - - arm_func_start ov60_022257FC -ov60_022257FC: ; 0x022257FC - stmfd sp!, {r4, lr} - ldr r3, _022258C0 ; =0x0222A010 - mov ip, #0 - str r0, [r3, #8] - str r1, [r3, #0xc] - str ip, [r3, #4] - str ip, [r3, #0x1c] - str ip, [r3, #0x20] - str ip, [r3, #0x10] - mov r4, r2 - str ip, [r3, #0x14] - bl ov60_02225E1C - cmp r0, #0 - bne _02225848 - ldr r0, _022258C0 ; =0x0222A010 - mov r1, #9 - str r1, [r0, #4] - mov r0, #0 - ldmia sp!, {r4, pc} -_02225848: - ldr r1, _022258C0 ; =0x0222A010 - mov r0, #0x2000 - ldr r2, [r1, #8] - mov r1, #8 - blx r2 - movs r1, r0 - ldr r0, _022258C0 ; =0x0222A010 - str r1, [r0, #0x18] - bne _02225880 - mov r1, #1 - str r1, [r0, #4] - bl ov60_02225E34 - mov r0, #0 - ldmia sp!, {r4, pc} -_02225880: - mov r0, r4 - bl ov60_02225E60 - cmp r0, #0 - ldrne r1, _022258C0 ; =0x0222A010 - movne r0, #1 - strne r0, [r1] - ldmneia sp!, {r4, pc} - ldr r1, _022258C0 ; =0x0222A010 - mov r0, #9 - str r0, [r1, #4] - ldr r0, [r1, #0x18] - ldr r1, [r1, #0xc] - blx r1 - bl ov60_02225E34 - mov r0, #0 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_022258C0: .word Unk_ov60_0222A010 - arm_func_end ov60_022257FC - - arm_func_start ov60_022258C4 -ov60_022258C4: ; 0x022258C4 - stmfd sp!, {r3, lr} - sub sp, sp, #8 - mov r2, r0 - mov ip, #0x800 - ldr r0, _02225900 ; =0x0222A034 - ldr r1, _02225904 ; =ov60_0222590C - ldr r3, _02225908 ; =0x0222A8F4 - str ip, [sp] - mov ip, #0x10 - str ip, [sp, #4] - bl OS_CreateThread - ldr r0, _02225900 ; =0x0222A034 - bl OS_WakeupThreadDirect - add sp, sp, #8 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02225900: .word Unk_ov60_0222A034 -_02225904: .word ov60_0222590C -_02225908: .word Unk_ov60_0222A8F4 - arm_func_end ov60_022258C4 - - arm_func_start ov60_0222590C -ov60_0222590C: ; 0x0222590C - stmfd sp!, {r4, lr} - mov r4, r0 - bl ov60_02226B18 - bl ov60_02225ED8 - ldr r1, _02225944 ; =0x0222A010 - ldr r0, [r1, #0x18] - ldr r1, [r1, #0xc] - blx r1 - bl ov60_02225E34 - ldr r0, _02225944 ; =0x0222A010 - mov r1, #0 - str r1, [r0, #0] - blx r4 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02225944: .word Unk_ov60_0222A010 - arm_func_end ov60_0222590C - - .bss - - - .global Unk_ov60_0222A010 -Unk_ov60_0222A010: ; 0x0222A010 - .space 0x4 - - .global Unk_ov60_0222A014 -Unk_ov60_0222A014: ; 0x0222A014 - .space 0x4 - - .global Unk_ov60_0222A018 -Unk_ov60_0222A018: ; 0x0222A018 - .space 0x4 - - .global Unk_ov60_0222A01C -Unk_ov60_0222A01C: ; 0x0222A01C - .space 0x4 - - .global Unk_ov60_0222A020 -Unk_ov60_0222A020: ; 0x0222A020 - .space 0x4 - - .global Unk_ov60_0222A024 -Unk_ov60_0222A024: ; 0x0222A024 - .space 0x4 - - .global Unk_ov60_0222A028 -Unk_ov60_0222A028: ; 0x0222A028 - .space 0x4 - - .global Unk_ov60_0222A02C -Unk_ov60_0222A02C: ; 0x0222A02C - .space 0x4 - - .global Unk_ov60_0222A030 -Unk_ov60_0222A030: ; 0x0222A030 - .space 0x4 - - .global Unk_ov60_0222A034 -Unk_ov60_0222A034: ; 0x0222A034 - .space 0xC0 - - .global Unk_ov60_0222A0F4 -Unk_ov60_0222A0F4: ; 0x0222A0F4 - .space 0x800 - diff --git a/subprojects/NitroDWC/libraries/nhttp/asm/nhttp_control.s b/subprojects/NitroDWC/libraries/nhttp/asm/nhttp_control.s deleted file mode 100644 index e159f7800b..0000000000 --- a/subprojects/NitroDWC/libraries/nhttp/asm/nhttp_control.s +++ /dev/null @@ -1,234 +0,0 @@ - .include "macros/function.inc" - .include "include/nhttp_control.inc" - - .extern Unk_ov60_0222A014 - .extern Unk_ov60_0222A018 - - .text - - - arm_func_start ov60_02225948 -ov60_02225948: ; 0x02225948 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov sb, r0 - ldr sl, [sb] - mov r8, r1 - mov r7, r2 - mov r6, r3 - cmp sl, #0 - mov r4, #0 - beq _022259C4 - ldr r1, [sl, #8] - mov r0, r8 - mov r5, sl - bl ov60_02228AD4 - cmp r0, #0 - beq _022259C0 - ldr r5, [sl, #4] - ldr r0, [sb] - cmp r5, r0 - beq _022259C4 -_02225994: - ldr r1, [r5, #8] - mov r0, r8 - bl ov60_02228AD4 - cmp r0, #0 - moveq r4, #1 - beq _022259C4 - ldr r5, [r5, #4] - ldr r0, [sb] - cmp r5, r0 - bne _02225994 - b _022259C4 -_022259C0: - mov r4, #1 -_022259C4: - cmp r4, #0 - strne r7, [r5, #0xc] - bne _02225A50 - ldr r1, _02225A58 ; =0x0222A018 - mov r0, r6 - ldr r2, [r1, #0] - mov r1, #4 - blx r2 - cmp r0, #0 - bne _02225A00 - ldr r0, _02225A5C ; =0x0222A014 - mov r1, #1 - str r1, [r0, #0] - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_02225A00: - str r8, [r0, #8] - str r7, [r0, #0xc] - mov r1, #0 - str r1, [r0, #0x10] - str r1, [r0, #0x14] - ldr r1, [sb] - cmp r1, #0 - streq r0, [r0, #4] - streq r0, [r0] - streq r0, [sb] - beq _02225A50 - ldr r1, [r1, #0] - str r1, [r0, #0] - ldr r1, [sb] - str r1, [r0, #4] - ldr r1, [sb] - ldr r1, [r1, #0] - str r0, [r1, #4] - ldr r1, [sb] - str r0, [r1, #0] -_02225A50: - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ; .align 2, 0 -_02225A58: .word Unk_ov60_0222A018 -_02225A5C: .word Unk_ov60_0222A014 - arm_func_end ov60_02225948 - - arm_func_start ov60_02225A60 -ov60_02225A60: ; 0x02225A60 - ldr r3, [r0, #0] - cmp r3, #0 - beq _02225A9C - ldr r2, [r3, #0] - cmp r3, r2 - moveq r1, #0 - streq r1, [r0] - beq _02225A9C - ldr r1, [r3, #4] - str r1, [r2, #4] - ldr r2, [r3, #0] - ldr r1, [r3, #4] - str r2, [r1, #0] - ldr r1, [r3, #4] - str r1, [r0, #0] -_02225A9C: - mov r0, r3 - bx lr - arm_func_end ov60_02225A60 - - arm_func_start ov60_02225AA4 -ov60_02225AA4: ; 0x02225AA4 - add r0, r0, #1 - and r0, r0, #0xff - cmp r0, #0x7b - moveq r0, #0x30 - beq _02225ACC - cmp r0, #0x5b - moveq r0, #0x61 - beq _02225ACC - cmp r0, #0x3a - moveq r0, #0x41 -_02225ACC: - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bx lr - arm_func_end ov60_02225AA4 - - arm_func_start ov60_02225AD8 -ov60_02225AD8: ; 0x02225AD8 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - mov sb, r1 - mov r8, r2 - mov r0, sb - mov r1, r8 - add r2, sl, #0x46 - mov r3, #0x12 - bl ov60_02228BC8 - cmp r0, #0 - movlt r0, #1 - ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r6, _02225B74 ; =0x02228D87 - mov fp, #0x13 - mov r4, #0x12 -_02225B14: - add r7, sl, fp - ldrsb r5, [r7, #0x44] -_02225B1C: - and r0, r5, #0xff - bl ov60_02225AA4 - mov r5, r0 - strb r5, [r7, #0x44] - ldrsb r0, [r6] - cmp r5, r0 - beq _02225B5C - mov r0, sb - mov r1, r8 - mov r3, r4 - add r2, sl, #0x46 - bl ov60_02228BC8 - cmp r0, #0 - bge _02225B1C - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02225B5C: - sub fp, fp, #1 - cmp fp, #2 - sub r6, r6, #1 - bge _02225B14 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_02225B74: .word 0x02228D87 - arm_func_end ov60_02225AD8 - - arm_func_start ov60_02225B78 -ov60_02225B78: ; 0x02225B78 - stmfd sp!, {r3, lr} - ldr r3, [r0, #0] - cmp r3, #0 - movne r0, #0 - ldmneia sp!, {r3, pc} - add r0, r0, #0x34 - mov r3, #0x18 - bl ov60_02225948 - ldmia sp!, {r3, pc} - arm_func_end ov60_02225B78 - - arm_func_start ov60_02225B9C -ov60_02225B9C: ; 0x02225B9C - stmfd sp!, {r4, r5, r6, r7, r8, lr} - mov r8, r0 - ldr r0, [r8] - mov r7, r1 - mov r6, r2 - mov r5, #0 - cmp r0, #0 - movne r0, r5 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, r6 - bl ov60_0222714C - mov r4, r0 - mov r0, r8 - mov r1, r6 - mov r2, r4 - bl ov60_02225AD8 - cmp r0, #0 - beq _02225C08 - mov r1, r7 - mov r2, r6 - add r0, r8, #0x38 - mov r3, #0x18 - bl ov60_02225948 - movs r5, r0 - ldrne r0, [r8, #0x38] - ldrne r0, [r0] - strne r4, [r0, #0x10] -_02225C08: - mov r0, r5 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end ov60_02225B9C - - arm_func_start ov60_02225C10 -ov60_02225C10: ; 0x02225C10 - ldr r3, [r0, #0] - cmp r3, #0 - movne r0, #0 - streq r1, [r0, #0x1c] - streq r2, [r0, #0x18] - moveq r0, #1 - bx lr - arm_func_end ov60_02225C10 \ No newline at end of file diff --git a/subprojects/NitroDWC/libraries/nhttp/asm/nhttp_list.s b/subprojects/NitroDWC/libraries/nhttp/asm/nhttp_list.s deleted file mode 100644 index 1ca916308d..0000000000 --- a/subprojects/NitroDWC/libraries/nhttp/asm/nhttp_list.s +++ /dev/null @@ -1,167 +0,0 @@ - .include "macros/function.inc" - .include "include/nhttp_list.inc" - - .extern Unk_ov60_0222A018 - .extern Unk_ov60_0222A01C - .extern Unk_ov60_0222A030 - .extern Unk_ov60_0222A02C - - .text - - - arm_func_start ov60_02225C2C -ov60_02225C2C: ; 0x02225C2C - stmfd sp!, {r3, r4, r5, lr} - ldr r1, _02225CD4 ; =0x0222A018 - mov r4, r0 - ldr r2, [r1, #0] - mov r0, #0x14 - mov r1, #4 - mvn r5, #0 - blx r2 - cmp r0, #0 - beq _02225CCC - ldr r1, _02225CD8 ; =0x0222A030 - ldr r2, [r1, #0] - cmp r2, #0 - streq r0, [r0] - streq r0, [r0, #4] - streq r0, [r1] - beq _02225C94 - ldr r2, [r2, #0] - str r2, [r0, #0] - ldr r2, [r1, #0] - str r2, [r0, #4] - ldr r2, [r1, #0] - ldr r2, [r2, #0] - str r0, [r2, #4] - ldr r1, [r1, #0] - str r0, [r1, #0] -_02225C94: - ldr r1, _02225CDC ; =0x0222A02C - mvn r2, #0 - ldr ip, [r1] - ldr r3, [r1, #0] - add r3, r3, #1 - str r3, [r1, #0] - str ip, [r0, #8] - str r4, [r0, #0xc] - str r2, [r0, #0x10] - ldr r2, [r1, #0] - ldr r5, [r0, #8] - cmp r2, #0 - movlt r0, #0 - strlt r0, [r1] -_02225CCC: - mov r0, r5 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02225CD4: .word Unk_ov60_0222A018 -_02225CD8: .word Unk_ov60_0222A030 -_02225CDC: .word Unk_ov60_0222A02C - arm_func_end ov60_02225C2C - - arm_func_start ov60_02225CE0 -ov60_02225CE0: ; 0x02225CE0 - ldr r1, _02225D34 ; =0x0222A030 - mov r2, #0 - ldr r3, [r1, #0] - cmp r3, #0 - beq _02225D2C - ldr r1, [r3, #8] - cmp r1, r0 - moveq r2, r3 - beq _02225D2C - ldr ip, [r3, #4] - cmp ip, r3 - beq _02225D2C -_02225D10: - ldr r1, [ip, #8] - cmp r1, r0 - moveq r2, ip - beq _02225D2C - ldr ip, [ip, #4] - cmp ip, r3 - bne _02225D10 -_02225D2C: - mov r0, r2 - bx lr - ; .align 2, 0 -_02225D34: .word Unk_ov60_0222A030 - arm_func_end ov60_02225CE0 - - arm_func_start ov60_02225D38 -ov60_02225D38: ; 0x02225D38 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r5, #0 - bl ov60_02225CE0 - movs r4, r0 - beq _02225DC8 - ldr r0, _02225DD0 ; =0x0222A030 - ldr r2, [r0, #0] - ldr r1, [r2, #0] - cmp r2, r1 - beq _02225D88 - ldmia r4, {r1, r2} - str r2, [r1, #4] - ldr r2, [r4, #0] - ldr r1, [r4, #4] - str r2, [r1, #0] - ldr r1, [r0, #0] - cmp r1, r4 - ldreq r1, [r4, #4] - streq r1, [r0] - b _02225D90 -_02225D88: - mov r1, r5 - str r1, [r0, #0] -_02225D90: - ldr r0, [r4, #0xc] - ldr r5, [r0, #0x3c] - ldr r6, [r0, #0x30] - ldr r7, [r0, #0x2c] - bl ov60_02226998 - ldr r1, _02225DD4 ; =0x0222A01C - mov r0, r4 - ldr r1, [r1, #0] - blx r1 - mov r1, r6 - mov r2, r7 - mov r0, #8 - blx r5 - mov r5, #1 -_02225DC8: - mov r0, r5 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02225DD0: .word Unk_ov60_0222A030 -_02225DD4: .word Unk_ov60_0222A01C - arm_func_end ov60_02225D38 - - arm_func_start ov60_02225DD8 -ov60_02225DD8: ; 0x02225DD8 - stmfd sp!, {r4, lr} - ldr r4, _02225E04 ; =0x0222A030 - ldr r0, [r4, #0] - cmp r0, #0 - ldmeqia sp!, {r4, pc} -_02225DEC: - ldr r0, [r0, #8] - bl ov60_02225D38 - ldr r0, [r4, #0] - cmp r0, #0 - bne _02225DEC - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02225E04: .word Unk_ov60_0222A030 - arm_func_end ov60_02225DD8 - - arm_func_start ov60_02225E08 -ov60_02225E08: ; 0x02225E08 - ldr ip, _02225E14 ; =ov60_02225A60 - ldr r0, _02225E18 ; =0x0222A030 - bx ip - ; .align 2, 0 -_02225E14: .word ov60_02225A60 -_02225E18: .word Unk_ov60_0222A030 - arm_func_end ov60_02225E08 \ No newline at end of file diff --git a/subprojects/NitroDWC/libraries/nhttp/asm/nhttp_os_nitro.s b/subprojects/NitroDWC/libraries/nhttp/asm/nhttp_os_nitro.s deleted file mode 100644 index 695817560f..0000000000 --- a/subprojects/NitroDWC/libraries/nhttp/asm/nhttp_os_nitro.s +++ /dev/null @@ -1,139 +0,0 @@ - .include "macros/function.inc" - .include "include/nhttp_os_nitro.inc" - - - .extern Unk_ov60_0222A024 - - - .text - - - arm_func_start ov60_02225E1C -ov60_02225E1C: ; 0x02225E1C - stmfd sp!, {r3, lr} - ldr r0, _02225E30 ; =0x0222A8F8 - bl OS_InitMutex - mov r0, #1 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02225E30: .word Unk_ov60_0222A8F8 - arm_func_end ov60_02225E1C - - arm_func_start ov60_02225E34 -ov60_02225E34: ; 0x02225E34 - bx lr - arm_func_end ov60_02225E34 - - arm_func_start ov60_02225E38 -ov60_02225E38: ; 0x02225E38 - ldr ip, _02225E44 ; =OS_LockMutex - ldr r0, _02225E48 ; =0x0222A8F8 - bx ip - ; .align 2, 0 -_02225E44: .word OS_LockMutex -_02225E48: .word Unk_ov60_0222A8F8 - arm_func_end ov60_02225E38 - - arm_func_start ov60_02225E4C -ov60_02225E4C: ; 0x02225E4C - ldr ip, _02225E58 ; =OS_UnlockMutex - ldr r0, _02225E5C ; =0x0222A8F8 - bx ip - ; .align 2, 0 -_02225E58: .word OS_UnlockMutex -_02225E5C: .word Unk_ov60_0222A8F8 - arm_func_end ov60_02225E4C - - arm_func_start ov60_02225E60 -ov60_02225E60: ; 0x02225E60 - stmfd sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - mov r5, r0 - mov r4, r1 - bl OS_IsThreadAvailable - cmp r0, #0 - addeq sp, sp, #8 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, _02225EC8 ; =0x0222A910 - ldr r1, _02225ECC ; =0x0222A8F4 - mov r2, #1 - bl OS_InitMessageQueue - mov r0, #0x2000 - str r0, [sp] - ldr r0, _02225ED0 ; =0x0222A930 - ldr r1, _02225ED4 ; =ov60_022274A0 - add r3, r4, #0x2000 - mov r2, #0 - str r5, [sp, #4] - bl OS_CreateThread - ldr r0, _02225ED0 ; =0x0222A930 - bl OS_WakeupThreadDirect - mov r0, #1 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02225EC8: .word Unk_ov60_0222A910 -_02225ECC: .word Unk_ov60_0222A8F4 -_02225ED0: .word Unk_ov60_0222A930 -_02225ED4: .word ov60_022274A0 - arm_func_end ov60_02225E60 - - arm_func_start ov60_02225ED8 -ov60_02225ED8: ; 0x02225ED8 - stmfd sp!, {r3, lr} - ldr r0, _02225EF8 ; =0x0222A024 - mov r1, #1 - str r1, [r0, #0] - bl ov60_02225F1C - ldr r0, _02225EFC ; =0x0222A930 - bl OS_JoinThread - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02225EF8: .word Unk_ov60_0222A024 -_02225EFC: .word Unk_ov60_0222A930 - arm_func_end ov60_02225ED8 - - arm_func_start ov60_02225F00 -ov60_02225F00: ; 0x02225F00 - stmfd sp!, {r3, lr} - ldr r0, _02225F18 ; =0x0222A910 - add r1, sp, #0 - mov r2, #1 - bl OS_ReceiveMessage - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02225F18: .word Unk_ov60_0222A910 - arm_func_end ov60_02225F00 - - arm_func_start ov60_02225F1C -ov60_02225F1C: ; 0x02225F1C - ldr ip, _02225F30 ; =OS_SendMessage - mov r1, #0 - ldr r0, _02225F34 ; =0x0222A910 - mov r2, r1 - bx ip - ; .align 2, 0 -_02225F30: .word OS_SendMessage -_02225F34: .word Unk_ov60_0222A910 - arm_func_end ov60_02225F1C - - .bss - - - .global Unk_ov60_0222A8F4 -Unk_ov60_0222A8F4: ; 0x0222A8F4 - .space 0x4 - - .global Unk_ov60_0222A8F8 -Unk_ov60_0222A8F8: ; 0x0222A8F8 - .space 0x18 - - .global Unk_ov60_0222A910 -Unk_ov60_0222A910: ; 0x0222A910 - .space 0x20 - - .global Unk_ov60_0222A930 -Unk_ov60_0222A930: ; 0x0222A930 - .space 0xC0 - diff --git a/subprojects/NitroDWC/libraries/nhttp/asm/nhttp_recvbuf.s b/subprojects/NitroDWC/libraries/nhttp/asm/nhttp_recvbuf.s deleted file mode 100644 index a078ba93cc..0000000000 --- a/subprojects/NitroDWC/libraries/nhttp/asm/nhttp_recvbuf.s +++ /dev/null @@ -1,359 +0,0 @@ - .include "macros/function.inc" - .include "include/nhttp_recvbuf.inc" - - - - .text - - - arm_func_start ov60_02225F38 -ov60_02225F38: ; 0x02225F38 - stmfd sp!, {r3, lr} - cmp r1, #0x400 - bge _02225F54 - mov r0, #0 - str r0, [r2, #0] - str r1, [r3, #0] - ldmia sp!, {r3, pc} -_02225F54: - sub ip, r1, #0x400 - movs ip, ip, asr #9 - sub lr, ip, #1 - ldr ip, [r0, #0x1c] - beq _02225F78 -_02225F68: - cmp lr, #0 - sub lr, lr, #1 - ldr ip, [ip] - bne _02225F68 -_02225F78: - ldr r0, _02225F90 ; =0x000001FF - sub r1, r1, #0x400 - str ip, [r2] - and r0, r1, r0 - str r0, [r3, #0] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02225F90: .word 0x000001FF - arm_func_end ov60_02225F38 - - arm_func_start ov60_02225F94 -ov60_02225F94: ; 0x02225F94 - ldr r3, [r1, #0] - cmp r3, #0 - bne _02225FD4 - ldr r3, [r2, #0] - cmp r3, #0x400 - bge _02225FC0 - add r1, r3, #1 - str r1, [r2, #0] - add r0, r0, r3 - ldrsb r0, [r0, #0x20] - bx lr -_02225FC0: - mov r3, #0 - str r3, [r2, #0] - ldr r0, [r0, #0x1c] - str r0, [r1, #0] - b _02225FF4 -_02225FD4: - ldr r0, [r2, #0] - cmp r0, #0x200 - bne _02225FF4 - mov r0, #0 - str r0, [r2, #0] - ldr r0, [r1, #0] - ldr r0, [r0, #0] - str r0, [r1, #0] -_02225FF4: - ldr r3, [r2, #0] - add r0, r3, #1 - str r0, [r2, #0] - ldr r0, [r1, #0] - add r0, r0, r3 - ldrsb r0, [r0, #4] - bx lr - arm_func_end ov60_02225F94 - - arm_func_start ov60_02226010 -ov60_02226010: ; 0x02226010 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - mov r6, #0 - movs r7, r3 - mov sl, r0 - subne r0, r6, #1 - mov sb, r1 - mov r8, r2 - strne r0, [r7] - cmp sb, r8 - bge _022260D4 - add r2, sp, #4 - add r3, sp, #0 - mov r0, sl - mov r1, sb - bl ov60_02225F38 - cmp sb, r8 - bge _022260D4 - mov fp, #1 - add r5, sp, #4 - add r4, sp, #0 -_02226064: - mov r0, sl - mov r1, r5 - mov r2, r4 - bl ov60_02225F94 - cmp r0, #0x3a - bne _02226090 - cmp r7, #0 - beq _02226090 - ldr r1, [r7, #0] - cmp r1, #0 - strlt sb, [r7] -_02226090: - cmp r6, #0 - bne _022260A4 - cmp r0, #0xd - moveq r6, fp - b _022260C8 -_022260A4: - cmp r0, #0xa - bne _022260C4 - sub r0, r8, #1 - cmp sb, r0 - moveq r0, #0 - add sp, sp, #8 - addne r0, sb, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022260C4: - mov r6, #0 -_022260C8: - add sb, sb, #1 - cmp sb, r8 - blt _02226064 -_022260D4: - mvn r0, #0 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end ov60_02226010 - - arm_func_start ov60_022260E0 -ov60_022260E0: ; 0x022260E0 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #8 - mov r7, r1 - mov r6, r2 - mov r8, r0 - cmp r7, r6 - bge _02226144 - add r2, sp, #4 - add r3, sp, #0 - bl ov60_02225F38 - cmp r7, r6 - bge _02226144 - add r5, sp, #4 - add r4, sp, #0 -_02226118: - mov r0, r8 - mov r1, r5 - mov r2, r4 - bl ov60_02225F94 - cmp r0, #0x20 - addne sp, sp, #8 - movne r0, r7 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - add r7, r7, #1 - cmp r7, r6 - blt _02226118 -_02226144: - mvn r0, #0 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end ov60_022260E0 - - arm_func_start ov60_02226150 -ov60_02226150: ; 0x02226150 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - mov sb, r1 - mov r4, r2 - mov sl, r0 - mov r8, r3 - cmp sb, r4 - ldr r7, [sp, #0x30] - bge _02226214 - add r2, sp, #4 - add r3, sp, #0 - bl ov60_02225F38 - add r1, sp, #4 - add r2, sp, #0 - mov r0, sl - bl ov60_02225F94 - sub r6, r4, #1 - add r5, sp, #4 - add r4, sp, #0 - mov fp, #0 - b _022261D8 -_022261A4: - cmp r2, #0 - cmpne r2, #0x20 - cmpne r2, r7 - cmpne sb, r6 - addeq sp, sp, #8 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, sl - mov r1, r5 - mov r2, r4 - bl ov60_02225F94 - add sb, sb, #1 - add r8, r8, #1 -_022261D8: - ldrsb r2, [r8] - mov r1, fp - cmp r2, #0x41 - blt _022261F0 - cmp r2, #0x5a - movle r1, #1 -_022261F0: - cmp r1, #0 - addne r1, r2, #0x20 - moveq r1, r2 - cmp r0, #0x41 - blt _0222620C - cmp r0, #0x5a - addle r0, r0, #0x20 -_0222620C: - cmp r0, r1 - beq _022261A4 -_02226214: - mvn r0, #0 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end ov60_02226150 - - arm_func_start ov60_02226220 -ov60_02226220: ; 0x02226220 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r4, r0 - mov r7, r2 - mov r6, r3 - ldr r0, [r4, #0] - add r2, r7, r6 - mov r8, r1 - cmp r2, r0 - bgt _02226300 - cmp r6, #0 - beq _022262F8 - cmp r7, #0x400 - bge _02226280 - rsb r5, r7, #0x400 - cmp r6, r5 - movle r5, r6 - add r1, r4, #0x20 - mov r0, r8 - mov r2, r5 - add r1, r1, r7 - bl ov60_0222716C - add r7, r7, r5 - sub r6, r6, r5 - add r8, r8, r5 -_02226280: - cmp r6, #0 - beq _022262F8 - sub r2, r7, #0x400 - ldr r0, _02226308 ; =0x000001FF - movs r1, r2, asr #9 - and r7, r2, r0 - sub r0, r1, #1 - ldr r4, [r4, #0x1c] - beq _022262B4 -_022262A4: - cmp r0, #0 - sub r0, r0, #1 - ldr r4, [r4, #0] - bne _022262A4 -_022262B4: - cmp r6, #0 - beq _022262F8 - ldr sb, _02226308 ; =0x000001FF -_022262C0: - rsb r5, r7, #0x200 - cmp r6, r5 - movle r5, r6 - add r1, r4, #4 - mov r0, r8 - mov r2, r5 - add r1, r1, r7 - bl ov60_0222716C - add r0, r7, r5 - and r7, r0, sb - subs r6, r6, r5 - add r8, r8, r5 - ldr r4, [r4, #0] - bne _022262C0 -_022262F8: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_02226300: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ; .align 2, 0 -_02226308: .word 0x000001FF - arm_func_end ov60_02226220 - - arm_func_start ov60_0222630C -ov60_0222630C: ; 0x0222630C - ldr r0, [r0, #0xc] - cmp r0, r1 - movls r0, #1 - movhi r0, #0 - bx lr - arm_func_end ov60_0222630C - - arm_func_start ov60_02226320 -ov60_02226320: ; 0x02226320 - stmfd sp!, {r3, lr} - ldr ip, [r0, #0x30] - mov lr, r2 - str r3, [sp] - ldr r2, [ip, #0x18] - ldr r3, [ip, #0xc] - add r2, r2, lr - sub r3, r3, lr - bl ov60_02227024 - ldmia sp!, {r3, pc} - arm_func_end ov60_02226320 - - arm_func_start ov60_02226348 -ov60_02226348: ; 0x02226348 - stmfd sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - mov r8, r0 - ldr r4, [r8, #0x30] - mov r6, r2 - mov r7, r1 - mov r0, r4 - mov r1, r6 - mov r5, r3 - bl ov60_0222630C - cmp r0, #0 - addne sp, sp, #4 - ldrne r0, _022263B4 ; =0xFFFFFC15 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} - ldr r0, [r4, #0xc] - ldr r1, [sp, #0x20] - sub r3, r0, r6 - str r1, [sp] - ldr r2, [r4, #0x18] - cmp r5, r3 - movle r3, r5 - mov r0, r8 - mov r1, r7 - add r2, r2, r6 - bl ov60_02227024 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_022263B4: .word 0xFFFFFC15 - arm_func_end ov60_02226348 \ No newline at end of file diff --git a/subprojects/NitroDWC/libraries/nhttp/asm/nhttp_request.s b/subprojects/NitroDWC/libraries/nhttp/asm/nhttp_request.s deleted file mode 100644 index 6d78843eaf..0000000000 --- a/subprojects/NitroDWC/libraries/nhttp/asm/nhttp_request.s +++ /dev/null @@ -1,608 +0,0 @@ - .include "macros/function.inc" - .include "include/nhttp_request.inc" - - .extern Unk_ov60_0222A014 - .extern Unk_ov60_0222A018 - .extern Unk_ov60_0222A01C - .extern Unk_ov60_0222A020 - - - .text - - - arm_func_start ov60_022263B8 -ov60_022263B8: ; 0x022263B8 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov fp, r0 - movs r0, r1 - cmpne r0, #1 - str r1, [sp] - mov r5, r2 - mov r4, r3 - mov r7, #0 - cmpne r0, #2 - beq _022263F0 - ldr r0, _02226900 ; =0x0222A014 - mov r1, #0xb - str r1, [r0, #0] - b _0222687C -_022263F0: - cmp r4, #0 - bne _02226408 - ldr r0, _02226900 ; =0x0222A014 - mov r1, #0xb - str r1, [r0, #0] - b _0222687C -_02226408: - ldr r1, _02226904 ; =0x0222A018 - mov r0, #0x58 - ldr r2, [r1, #0] - mov r1, #4 - blx r2 - movs r7, r0 - bne _02226434 - ldr r0, _02226900 ; =0x0222A014 - mov r1, #1 - str r1, [r0, #0] - b _0222687C -_02226434: - mov r1, #0x58 - bl ov60_02227158 - ldr r1, _02226904 ; =0x0222A018 - mov r0, #0x420 - ldr r2, [r1, #0] - mov r1, #4 - blx r2 - str r0, [r7, #0x30] - cmp r0, #0 - bne _0222646C - ldr r0, _02226900 ; =0x0222A014 - mov r1, #1 - str r1, [r0, #0] - b _0222687C -_0222646C: - mov r1, #0x420 - bl ov60_02227158 - ldr r1, [r7, #0x30] - mov r0, fp - str r5, [r1, #0x18] - ldr r1, [r7, #0x30] - str r4, [r1, #0xc] - bl ov60_0222714C - mov r4, r0 - cmp r4, #7 - bgt _022264A8 - ldr r0, _02226900 ; =0x0222A014 - mov r1, #4 - str r1, [r0, #0] - b _0222687C -_022264A8: - mov r8, #7 - mov r3, #0x50 - ldr r1, _02226908 ; =0x02229CD0 - mov r0, fp - mov r2, r8 - str r3, [r7, #0x28] - bl ov60_022270E4 - cmp r0, #0 - beq _02226508 - ldr r1, _0222690C ; =0x02229CD8 - mov r0, fp - mov r2, #8 - bl ov60_022270E4 - cmp r0, #0 - beq _022264F4 - ldr r0, _02226900 ; =0x0222A014 - mov r1, #4 - str r1, [r0, #0] - b _0222687C -_022264F4: - mov r0, #1 - str r0, [r7, #8] - rsb r0, r0, #0x1bc - str r0, [r7, #0x28] - mov r8, #8 -_02226508: - sub r4, r4, r8 - cmp r4, #0 - add r6, fp, r8 - bgt _02226528 - ldr r0, _02226900 ; =0x0222A014 - mov r1, #4 - str r1, [r0, #0] - b _0222687C -_02226528: - mov r5, #0 - mov sb, r5 - mov sl, r5 - b _0222659C -_02226538: - cmp sl, #2 - subeq sl, sl, #1 - beq _02226598 - cmp sl, #1 - bne _0222658C - sub r0, r5, #1 - mov r1, #2 - add r0, r6, r0 - bl ov60_02228898 - mov r0, r0, lsl #0x18 - movs r0, r0, asr #0x18 - sub sl, sl, #1 - bpl _0222657C - ldr r0, _02226900 ; =0x0222A014 - mov r1, #4 - str r1, [r0, #0] - b _0222687C -_0222657C: - cmp r0, #0x2f - bne _02226598 - sub sb, sb, #1 - b _022265B0 -_0222658C: - cmp r0, #0x25 - moveq sl, #2 - addeq sb, sb, #1 -_02226598: - add r5, r5, #1 -_0222659C: - cmp r5, r4 - bge _022265B0 - ldrsb r0, [r6, r5] - cmp r0, #0x2f - bne _02226538 -_022265B0: - cmp sl, #0 - beq _022265C8 - ldr r0, _02226900 ; =0x0222A014 - mov r1, #4 - str r1, [r0, #0] - b _0222687C -_022265C8: - ldr r0, _02226904 ; =0x0222A018 - add r1, r8, r4 - sub r1, r1, sb, lsl #1 - ldr r2, [r0, #0] - add r0, r1, #1 - mov r1, #4 - blx r2 - str r0, [r7, #0x24] - cmp r0, #0 - bne _02226600 - ldr r0, _02226900 ; =0x0222A014 - mov r1, #1 - str r1, [r0, #0] - b _0222687C -_02226600: - mov r1, fp - mov r2, r8 - bl ov60_0222716C - mov sb, #0 - mov r5, sb - mov sl, sb - mov fp, sb - cmp r4, #0 - ble _022266A4 -_02226624: - cmp sl, #2 - subeq sl, sl, #1 - beq _02226698 - cmp sl, #1 - bne _02226670 - sub r0, sb, #1 - add r0, r6, r0 - mov r1, #2 - bl ov60_02228898 - mov r0, r0, lsl #0x18 - mov r1, r0, asr #0x18 - ldr r0, [r7, #0x24] - cmp r1, #0x2f - add r0, r8, r0 - add r0, r5, r0 - sub sl, sl, #1 - strb r1, [r0, #-1] - moveq fp, #1 - b _02226698 -_02226670: - ldrsb r1, [r6, sb] - cmp r1, #0x2f - moveq fp, #1 - cmp fp, #0 - cmpeq r1, #0x25 - ldrne r0, [r7, #0x24] - moveq sl, #2 - addne r0, r8, r0 - strneb r1, [r5, r0] - add r5, r5, #1 -_02226698: - add sb, sb, #1 - cmp sb, r4 - blt _02226624 -_022266A4: - ldr r1, [r7, #0x24] - add r0, r8, r5 - mov r2, #0 - strb r2, [r1, r0] - ldr r0, [r7, #0x24] - cmp r5, #0 - add r1, r0, r8 - ble _022266E8 -_022266C4: - ldrsb r0, [r1, r2] - cmp r0, #0x2f - cmpne r0, #0x3a - addeq r0, r2, r8 - streq r0, [r7, #0xc] - beq _022266E8 - add r2, r2, #1 - cmp r2, r5 - blt _022266C4 -_022266E8: - cmp r2, r5 - bne _02226700 - add r0, r2, r8 - str r0, [r7, #0xc] - str r0, [r7, #0x10] - b _022267A4 -_02226700: - ldrsb r0, [r1, r2] - cmp r0, #0x2f - ldreq r0, [r7, #0xc] - streq r0, [r7, #0x10] - beq _022267A4 - cmp r0, #0x3a - bne _022267A4 - cmp r2, r5 - bge _02226744 -_02226724: - ldrsb r0, [r1, r2] - cmp r0, #0x2f - addeq r0, r2, r8 - streq r0, [r7, #0x10] - beq _02226744 - add r2, r2, #1 - cmp r2, r5 - blt _02226724 -_02226744: - cmp r2, r5 - addeq r0, r2, r8 - streq r0, [r7, #0x10] - beq _022267A4 - ldr r1, [r7, #0xc] - ldr r0, [r7, #0x24] - add r2, r1, #1 - ldr r1, [r7, #0x10] - add r0, r0, r2 - sub r1, r1, r2 - bl ov60_02228B58 - cmp r0, #0 - ldrlt r0, [r7, #0x28] - blt _02226798 - ldr r1, _02226910 ; =0x0000FFFF - cmp r0, r1 - ble _02226798 - ldr r0, _02226900 ; =0x0222A014 - mov r1, #4 - str r1, [r0, #0] - b _0222687C -_02226798: - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - str r0, [r7, #0x28] -_022267A4: - ldr r0, [r7, #8] - cmp r0, #0 - beq _0222684C - ldr r0, _02226904 ; =0x0222A018 - ldr r3, [r7, #0xc] - ldr r2, [r0, #0] - mov r0, #0x830 - mov r1, #4 - sub r4, r3, r8 - blx r2 - str r0, [r7, #0x20] - cmp r0, #0 - bne _022267E8 - ldr r0, _02226900 ; =0x0222A014 - mov r1, #1 - str r1, [r0, #0] - b _0222687C -_022267E8: - mov r1, #0x830 - bl ov60_02227158 - ldr r1, _02226904 ; =0x0222A018 - add r0, r4, #1 - ldr r2, [r1, #0] - mov r1, #4 - blx r2 - ldr r1, [r7, #0x20] - str r0, [r1, #0x800] - ldr r0, [r7, #0x20] - ldr r0, [r0, #0x800] - cmp r0, #0 - bne _0222682C - ldr r0, _02226900 ; =0x0222A014 - mov r1, #1 - str r1, [r0, #0] - b _0222687C -_0222682C: - ldr r1, [r7, #0x24] - mov r2, r4 - add r1, r1, r8 - bl ov60_0222716C - ldr r0, [r7, #0x20] - mov r1, #0 - ldr r0, [r0, #0x800] - strb r1, [r0, r4] -_0222684C: - ldr r1, _02226914 ; =0x02228D74 - add r0, r7, #0x44 - mov r2, #0x14 - bl ov60_0222716C - ldr r0, [sp, #0x2c] - ldr r1, [sp, #0x28] - str r0, [r7, #0x2c] - ldr r0, [sp] - str r0, [r7, #0x40] - mov r0, r7 - str r1, [r7, #0x3c] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0222687C: - cmp r7, #0 - beq _022268F8 - ldr r0, [r7, #0x20] - cmp r0, #0 - beq _022268B8 - ldr r0, [r0, #0x800] - cmp r0, #0 - beq _022268A8 - ldr r1, _02226918 ; =0x0222A01C - ldr r1, [r1, #0] - blx r1 -_022268A8: - ldr r1, _02226918 ; =0x0222A01C - ldr r0, [r7, #0x20] - ldr r1, [r1, #0] - blx r1 -_022268B8: - ldr r0, [r7, #0x24] - cmp r0, #0 - beq _022268D0 - ldr r1, _02226918 ; =0x0222A01C - ldr r1, [r1, #0] - blx r1 -_022268D0: - ldr r0, [r7, #0x30] - cmp r0, #0 - beq _022268E8 - ldr r1, _02226918 ; =0x0222A01C - ldr r1, [r1, #0] - blx r1 -_022268E8: - ldr r1, _02226918 ; =0x0222A01C - mov r0, r7 - ldr r1, [r1, #0] - blx r1 -_022268F8: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_02226900: .word Unk_ov60_0222A014 -_02226904: .word Unk_ov60_0222A018 -_02226908: .word Unk_ov60_02229CD0 -_0222690C: .word Unk_ov60_02229CD8 -_02226910: .word 0x0000FFFF -_02226914: .word Unk_ov60_02228D74 -_02226918: .word Unk_ov60_0222A01C - arm_func_end ov60_022263B8 - - arm_func_start ov60_0222691C -ov60_0222691C: ; 0x0222691C - stmfd sp!, {r4, lr} - ldr r1, _02226940 ; =0x0222A01C - mov r4, r0 - ldr r0, [r4, #0x30] - ldr r1, [r1, #0] - blx r1 - mov r0, r4 - bl ov60_02226998 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02226940: .word Unk_ov60_0222A01C - arm_func_end ov60_0222691C - - arm_func_start ov60_02226944 -ov60_02226944: ; 0x02226944 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - movs r7, r0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r4, _02226994 ; =0x0222A01C - mov r5, #0 -_02226958: - ldr r0, [r7, #0] - cmp r7, r0 - beq _02226978 - ldr r6, [r0, #0] - ldr r1, [r4, #0] - blx r1 - str r6, [r7, #0] - b _02226988 -_02226978: - ldr r1, [r4, #0] - mov r0, r7 - blx r1 - mov r7, r5 -_02226988: - cmp r7, #0 - bne _02226958 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02226994: .word Unk_ov60_0222A01C - arm_func_end ov60_02226944 - - arm_func_start ov60_02226998 -ov60_02226998: ; 0x02226998 - stmfd sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4, #0x34] - bl ov60_02226944 - ldr r0, [r4, #0x38] - bl ov60_02226944 - ldr r0, [r4, #0x20] - cmp r0, #0 - beq _022269E4 - ldr r0, [r0, #0x800] - cmp r0, #0 - beq _022269D4 - ldr r1, _02226A0C ; =0x0222A01C - ldr r1, [r1, #0] - blx r1 -_022269D4: - ldr r1, _02226A0C ; =0x0222A01C - ldr r0, [r4, #0x20] - ldr r1, [r1, #0] - blx r1 -_022269E4: - ldr r1, _02226A0C ; =0x0222A01C - ldr r0, [r4, #0x24] - ldr r1, [r1, #0] - blx r1 - ldr r1, _02226A0C ; =0x0222A01C - mov r0, r4 - ldr r1, [r1, #0] - blx r1 - mov r0, #1 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02226A0C: .word Unk_ov60_0222A01C - arm_func_end ov60_02226998 - - arm_func_start ov60_02226A10 -ov60_02226A10: ; 0x02226A10 - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r0, [r5, #0] - cmp r0, #0 - beq _02226A38 - ldr r0, _02226A98 ; =0x0222A014 - mov r1, #0xb - str r1, [r0, #0] - sub r0, r1, #0xc - ldmia sp!, {r3, r4, r5, pc} -_02226A38: - ldr r0, [r5, #0x40] - cmp r0, #1 - ldreq r0, [r5, #0x38] - cmpeq r0, #0 - bne _02226A60 - ldr r0, _02226A98 ; =0x0222A014 - mov r1, #0xb - str r1, [r0, #0] - sub r0, r1, #0xc - ldmia sp!, {r3, r4, r5, pc} -_02226A60: - bl ov60_02225E38 - mov r0, r5 - bl ov60_02225C2C - movs r4, r0 - ldrmi r0, _02226A98 ; =0x0222A014 - movmi r1, #1 - strmi r1, [r0] - bmi _02226A8C - mov r0, #1 - str r0, [r5, #0] - bl ov60_02225F1C -_02226A8C: - bl ov60_02225E4C - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02226A98: .word Unk_ov60_0222A014 - arm_func_end ov60_02226A10 - - arm_func_start ov60_02226A9C -ov60_02226A9C: ; 0x02226A9C - stmfd sp!, {r3, r4, r5, lr} - mov r4, r0 - mov r5, #0 - bl ov60_02225E38 - ldr r0, _02226B14 ; =0x0222A020 - ldr r2, [r0, #0] - cmp r2, #0 - beq _02226AF4 - ldr r1, [r2, #8] - cmp r1, r4 - ldreq r1, [r2, #0xc] - ldreq r1, [r1, #4] - cmpeq r1, #0 - bne _02226AF4 - ldr r1, [r2, #0xc] - mov r2, #1 - str r2, [r1, #4] - ldr r1, [r0, #0] - ldr r0, [r1, #0xc] - ldr r1, [r1, #0x10] - bl ov60_022270BC - mov r5, #1 -_02226AF4: - cmp r5, #0 - bne _02226B08 - mov r0, r4 - bl ov60_02225D38 - mov r5, r0 -_02226B08: - bl ov60_02225E4C - mov r0, r5 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02226B14: .word 0x0222A020 - arm_func_end ov60_02226A9C - - arm_func_start ov60_02226B18 -ov60_02226B18: ; 0x02226B18 - stmfd sp!, {r3, lr} - bl ov60_02225E38 - ldr r0, _02226B68 ; =0x0222A020 - ldr r2, [r0, #0] - cmp r2, #0 - beq _02226B5C - ldr r1, [r2, #0xc] - ldr r1, [r1, #4] - cmp r1, #0 - bne _02226B5C - ldr r1, [r2, #0xc] - mov r2, #1 - str r2, [r1, #4] - ldr r1, [r0, #0] - ldr r0, [r1, #0xc] - ldr r1, [r1, #0x10] - bl ov60_022270BC -_02226B5C: - bl ov60_02225DD8 - bl ov60_02225E4C - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02226B68: .word 0x0222A020 - arm_func_end ov60_02226B18 - - .rodata - - - .global Unk_ov60_02228D74 -Unk_ov60_02228D74: ; 0x02228D74 - .asciz "--t9Sf4yfjf1RtvDu3AA" - - - - .data - - - .global Unk_ov60_02229CD0 -Unk_ov60_02229CD0: ; 0x02229CD0 - .asciz "http://" - - .global Unk_ov60_02229CD8 -Unk_ov60_02229CD8: ; 0x02229CD8 - .ascii "https://" - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/nhttp/asm/nhttp_resolve_nitro.s b/subprojects/NitroDWC/libraries/nhttp/asm/nhttp_resolve_nitro.s deleted file mode 100644 index e213b4163b..0000000000 --- a/subprojects/NitroDWC/libraries/nhttp/asm/nhttp_resolve_nitro.s +++ /dev/null @@ -1,50 +0,0 @@ - .include "macros/function.inc" - .include "include/nhttp_resolve_n.inc" - - - - .text - - - arm_func_start ov60_02226B6C -ov60_02226B6C: ; 0x02226B6C - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r5, r0 - ldr r2, [r5, #0x24] - ldr r1, [r5, #0xc] - mov r0, #0 - ldrsb r4, [r2, r1] - strb r0, [r2, r1] - ldr r0, [r5, #8] - ldr r6, [r5, #0x24] - cmp r0, #0 - movne r7, #8 - moveq r7, #7 - add r1, sp, #0 - add r0, r6, r7 - bl SOC_InetAtoN - cmp r0, #0 - ldrne r0, [sp] - bne _02226BF4 - add r0, r6, r7 - bl SOCL_Resolve - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r2, r0, lsr #0x18 - mov r1, r0, lsr #8 - mov r3, r0, lsl #8 - mov ip, r0, lsl #0x18 - and r2, r2, #0xff - and r0, r1, #0xff00 - and r1, r3, #0xff0000 - orr r0, r2, r0 - and r2, ip, #0xff000000 - orr r0, r1, r0 - orr r0, r2, r0 -_02226BF4: - ldr r2, [r5, #0x24] - ldr r1, [r5, #0xc] - strb r4, [r2, r1] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov60_02226B6C \ No newline at end of file diff --git a/subprojects/NitroDWC/libraries/nhttp/asm/nhttp_response.s b/subprojects/NitroDWC/libraries/nhttp/asm/nhttp_response.s deleted file mode 100644 index a32e8179fc..0000000000 --- a/subprojects/NitroDWC/libraries/nhttp/asm/nhttp_response.s +++ /dev/null @@ -1,217 +0,0 @@ - .include "macros/function.inc" - .include "include/nhttp_response.inc" - - .extern Unk_ov60_0222A018 - .extern Unk_ov60_0222A01C - - .text - - - arm_func_start ov60_02226C04 -ov60_02226C04: ; 0x02226C04 - stmfd sp!, {r4, r5, r6, lr} - mov r4, r0 - ldr r0, [r4, #0x1c] - cmp r0, #0 - beq _02226C34 - ldr r5, _02226C78 ; =0x0222A01C -_02226C1C: - ldr r6, [r0, #0] - ldr r1, [r5, #0] - blx r1 - movs r0, r6 - str r6, [r4, #0x1c] - bne _02226C1C -_02226C34: - ldr r0, [r4, #0x10] - cmp r0, #0 - beq _02226C4C - ldr r1, _02226C78 ; =0x0222A01C - ldr r1, [r1, #0] - blx r1 -_02226C4C: - ldr r0, [r4, #0x14] - cmp r0, #0 - beq _02226C64 - ldr r1, _02226C78 ; =0x0222A01C - ldr r1, [r1, #0] - blx r1 -_02226C64: - ldr r1, _02226C78 ; =0x0222A01C - mov r0, r4 - ldr r1, [r1, #0] - blx r1 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_02226C78: .word Unk_ov60_0222A01C - arm_func_end ov60_02226C04 - - arm_func_start ov60_02226C7C -ov60_02226C7C: ; 0x02226C7C - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #8 - mov r5, r0 - mov r4, r2 - mov sl, r1 - ldr r2, [r5, #0] - add r3, sp, #4 - mov r1, #0xc - bl ov60_02226010 - mov r8, r0 - cmp r8, #0 - ble _02226D7C - mov r6, #0 - add r7, sp, #4 -_02226CB4: - ldr r2, [r5, #0] - mov r0, r5 - mov r1, r8 - mov r3, r7 - bl ov60_02226010 - ldr r2, [sp, #4] - mov sb, r0 - cmp r2, #0 - ble _02226D70 - mov r0, r5 - mov r1, r8 - mov r3, sl - str r6, [sp] - bl ov60_02226150 - cmp r0, #0 - bne _02226D70 - ldr r1, [sp, #4] - ldr r0, [r5, #0] - add r1, r1, #1 - cmp r1, r0 - bge _02226D64 - ldr r2, [r5, #0] - mov r0, r5 - mov r3, #0 - bl ov60_02226010 - cmp r0, #0 - ldrle r6, [r5] - ble _02226D38 - cmp r0, #2 - addlt sp, sp, #8 - mvnlt r0, #0 - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - sub r6, r0, #2 -_02226D38: - ldr r1, [sp, #4] - mov r0, r5 - mov r2, r6 - add r1, r1, #1 - bl ov60_022260E0 - cmp r0, #0 - movlt r0, r6 - str r0, [r4, #0] - add sp, sp, #8 - sub r0, r6, r0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_02226D64: - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_02226D70: - mov r8, sb - cmp sb, #0 - bgt _02226CB4 -_02226D7C: - mvn r0, #0 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - arm_func_end ov60_02226C7C - - arm_func_start ov60_02226D88 -ov60_02226D88: ; 0x02226D88 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - ldr r0, [r7, #8] - mov r6, r1 - cmp r0, #0 - mov r5, r2 - mvneq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r7, #0x14] - cmp r0, #0 - beq _02226DC8 - ldr r1, _02226E80 ; =0x0222A01C - ldr r1, [r1, #0] - blx r1 - mov r0, #0 - str r0, [r7, #0x14] -_02226DC8: - add r2, sp, #0 - mov r0, r7 - mov r1, r6 - bl ov60_02226C7C - movs r4, r0 - bmi _02226E24 - ldr r1, _02226E84 ; =0x0222A018 - add r0, r4, #1 - ldr r2, [r1, #0] - mov r1, #4 - blx r2 - str r0, [r7, #0x14] - mov r1, #0 - strb r1, [r0, r4] - ldr r1, [r7, #0x14] - ldr r2, [sp] - mov r0, r7 - mov r3, r4 - bl ov60_02226220 - ldr r1, [r7, #0x14] - mov r0, r4 - str r1, [r5, #0] - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02226E24: - ldr r0, _02226E88 ; =0x02229CE4 - mov r1, r6 - bl ov60_022270D8 - cmp r0, #0 - mvnne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, _02226E84 ; =0x0222A018 - mov r0, #4 - ldr r2, [r1, #0] - mov r1, r0 - blx r2 - str r0, [r7, #0x14] - mov r1, #0 - strb r1, [r0, #3] - ldr r1, [r7, #0x14] - mov r0, r7 - mov r2, #9 - mov r3, #3 - bl ov60_02226220 - ldr r1, [r7, #0x14] - mov r0, #3 - str r1, [r5, #0] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02226E80: .word Unk_ov60_0222A01C -_02226E84: .word Unk_ov60_0222A018 -_02226E88: .word Unk_ov60_02229CE4 - arm_func_end ov60_02226D88 - - arm_func_start ov60_02226E8C -ov60_02226E8C: ; 0x02226E8C - ldr r2, [r0, #8] - cmp r2, #0 - ldrne r2, [r0, #4] - cmpne r2, #0 - mvneq r0, #0 - ldrne r2, [r0, #0x18] - strne r2, [r1] - ldrne r0, [r0, #4] - bx lr - arm_func_end ov60_02226E8C - - .data - - - .global Unk_ov60_02229CE4 -Unk_ov60_02229CE4: ; 0x02229CE4 - .ascii "HTTPSTATUSCODE" - .space 0x2 - diff --git a/subprojects/NitroDWC/libraries/nhttp/asm/nhttp_socket_nitro.s b/subprojects/NitroDWC/libraries/nhttp/asm/nhttp_socket_nitro.s deleted file mode 100644 index 2ca73a8651..0000000000 --- a/subprojects/NitroDWC/libraries/nhttp/asm/nhttp_socket_nitro.s +++ /dev/null @@ -1,198 +0,0 @@ - .include "macros/function.inc" - .include "include/nhttp_socket_ni.inc" - - - - .text - - - arm_func_start ov60_02226EB0 -ov60_02226EB0: ; 0x02226EB0 - tst r0, #0x8000 - bicne r0, r0, #0x8000 - bx lr - arm_func_end ov60_02226EB0 - - arm_func_start ov60_02226EBC -ov60_02226EBC: ; 0x02226EBC - stmfd sp!, {r3, lr} - ldr r0, _02226ED8 ; =0x0222A9F0 - bl OS_GetLowEntropyData - ldr r0, _02226ED8 ; =0x0222A9F0 - mov r1, #0x20 - bl CPS_SslAddRandomSeed - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02226ED8: .word Unk_ov60_0222A9F0 - arm_func_end ov60_02226EBC - - arm_func_start ov60_02226EDC -ov60_02226EDC: ; 0x02226EDC - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r0, #2 - mov r1, #1 - mov r2, #0 - bl SOC_Socket - movs r4, r0 - bmi _02226F50 - ldr r0, [r5, #8] - cmp r0, #0 - beq _02226F50 - bl ov60_02226EBC - ldr r1, [r5, #0x1c] - ldr r0, [r5, #0x20] - ldr r2, _02226F58 ; =ov60_02226EB0 - str r1, [r0, #0x814] - ldr r3, [r5, #0x18] - ldr r1, [r5, #0x20] - mov r0, r4 - str r3, [r1, #0x818] - ldr r1, [r5, #0x20] - str r2, [r1, #0x810] - ldr r1, [r5, #0x20] - bl SOCL_EnableSsl - cmp r0, #0 - bge _02226F50 - mov r0, r4 - bl SOC_Close - mvn r4, #0 -_02226F50: - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02226F58: .word ov60_02226EB0 - arm_func_end ov60_02226EDC - - arm_func_start ov60_02226F5C -ov60_02226F5C: ; 0x02226F5C - ldr ip, _02226F68 ; =SOC_Close - mov r0, r1 - bx ip - ; .align 2, 0 -_02226F68: .word SOC_Close - arm_func_end ov60_02226F5C - - arm_func_start ov60_02226F6C -ov60_02226F6C: ; 0x02226F6C - stmfd sp!, {r4, r5, r6, lr} - mov r6, r1 - mov r0, r6 - bl SOC_Close - mvn r4, #0x19 - cmp r0, r4 - ldmneia sp!, {r4, r5, r6, pc} - mov r5, #0x1f4 -_02226F8C: - mov r0, r5 - bl OS_Sleep - mov r0, r6 - bl SOC_Close - cmp r0, r4 - beq _02226F8C - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ov60_02226F6C - - arm_func_start ov60_02226FA8 -ov60_02226FA8: ; 0x02226FA8 - stmfd sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - mov r3, r3, lsl #0x10 - mov r3, r3, lsr #0x10 - mov ip, r3, asr #8 - mov r4, r0 - mov r5, #8 - mov lr, #2 - mov r3, r3, lsl #8 - mov r0, r1 - and ip, ip, #0xff - and r1, r3, #0xff00 - orr r3, ip, r1 - add r1, sp, #0 - strb r5, [sp] - strb lr, [sp, #1] - strh r3, [sp, #2] - str r2, [sp, #4] - bl SOC_Connect - cmp r0, #0 - bge _02227014 - ldr r0, [r4, #4] - add sp, sp, #8 - cmp r0, #0 - ldrne r0, _02227020 ; =0xFFFFFC16 - mvneq r0, #0x3e8 - ldmia sp!, {r3, r4, r5, pc} -_02227014: - mov r0, #0 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02227020: .word 0xFFFFFC16 - arm_func_end ov60_02226FA8 - - arm_func_start ov60_02227024 -ov60_02227024: ; 0x02227024 - stmfd sp!, {r4, lr} - mov r4, r0 - mov r0, r1 - mov r1, r2 - mov r2, r3 - ldr r3, [sp, #8] - bl SOC_Recv - cmp r0, #0 - ldmgeia sp!, {r4, pc} - ldr r1, [r4, #4] - cmp r1, #0 - ldrne r0, _0222706C ; =0xFFFFFC16 - ldmneia sp!, {r4, pc} - mvn r1, #0x37 - cmp r0, r1 - moveq r0, #0 - mvnne r0, #0x3e8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0222706C: .word 0xFFFFFC16 - arm_func_end ov60_02227024 - - arm_func_start ov60_02227070 -ov60_02227070: ; 0x02227070 - stmfd sp!, {r4, lr} - mov r4, r0 - mov r0, r1 - mov r1, r2 - mov r2, r3 - ldr r3, [sp, #8] - bl SOC_Send - cmp r0, #0 - ldmgeia sp!, {r4, pc} - ldr r1, [r4, #4] - cmp r1, #0 - ldrne r0, _022270B8 ; =0xFFFFFC16 - ldmneia sp!, {r4, pc} - mvn r1, #0x37 - cmp r0, r1 - moveq r0, #0 - mvnne r0, #0x3e8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_022270B8: .word 0xFFFFFC16 - arm_func_end ov60_02227070 - - arm_func_start ov60_022270BC -ov60_022270BC: ; 0x022270BC - stmfd sp!, {r3, lr} - cmp r1, #0 - ldmltia sp!, {r3, pc} - mov r0, r1 - mov r1, #2 - bl SOC_Shutdown - ldmia sp!, {r3, pc} - arm_func_end ov60_022270BC - - .bss - - - .global Unk_ov60_0222A9F0 -Unk_ov60_0222A9F0: ; 0x0222A9F0 - .space 0x20 - diff --git a/subprojects/NitroDWC/libraries/nhttp/asm/nhttp_stdlib_nitro.s b/subprojects/NitroDWC/libraries/nhttp/asm/nhttp_stdlib_nitro.s deleted file mode 100644 index 43cb580397..0000000000 --- a/subprojects/NitroDWC/libraries/nhttp/asm/nhttp_stdlib_nitro.s +++ /dev/null @@ -1,79 +0,0 @@ - .include "macros/function.inc" - .include "include/nhttp_stdlib_ni.inc" - - - - .text - - - arm_func_start ov60_022270D8 -ov60_022270D8: ; 0x022270D8 - ldr ip, _022270E0 ; =STD_CompareString - bx ip - ; .align 2, 0 -_022270E0: .word STD_CompareString - arm_func_end ov60_022270D8 - - arm_func_start ov60_022270E4 -ov60_022270E4: ; 0x022270E4 - cmp r2, #0 - ble _02227144 -_022270EC: - ldrsb ip, [r0], #1 - ldrsb r3, [r1], #1 - cmp ip, #0 - cmpne r3, #0 - bne _02227110 - cmp ip, #0 - cmpeq r3, #0 - moveq r2, #0 - b _02227144 -_02227110: - cmp r3, #0x41 - blt _02227120 - cmp r3, #0x5a - addle r3, r3, #0x20 -_02227120: - cmp ip, #0x41 - blt _02227130 - cmp ip, #0x5a - addle ip, ip, #0x20 -_02227130: - cmp ip, r3 - bne _02227144 - sub r2, r2, #1 - cmp r2, #0 - bgt _022270EC -_02227144: - mov r0, r2 - bx lr - arm_func_end ov60_022270E4 - - arm_func_start ov60_0222714C -ov60_0222714C: ; 0x0222714C - ldr ip, _02227154 ; =STD_GetStringLength - bx ip - ; .align 2, 0 -_02227154: .word STD_GetStringLength - arm_func_end ov60_0222714C - - arm_func_start ov60_02227158 -ov60_02227158: ; 0x02227158 - ldr ip, _02227168 ; =MI_CpuFill8 - mov r2, r1 - mov r1, #0 - bx ip - ; .align 2, 0 -_02227168: .word MI_CpuFill8 - arm_func_end ov60_02227158 - - arm_func_start ov60_0222716C -ov60_0222716C: ; 0x0222716C - ldr ip, _02227180 ; =MI_CpuCopy8 - mov r3, r0 - mov r0, r1 - mov r1, r3 - bx ip - ; .align 2, 0 -_02227180: .word MI_CpuCopy8 - arm_func_end ov60_0222716C \ No newline at end of file diff --git a/subprojects/NitroDWC/libraries/nhttp/asm/nhttp_thread.s b/subprojects/NitroDWC/libraries/nhttp/asm/nhttp_thread.s deleted file mode 100644 index e6be5c59f0..0000000000 --- a/subprojects/NitroDWC/libraries/nhttp/asm/nhttp_thread.s +++ /dev/null @@ -1,1701 +0,0 @@ - .include "macros/function.inc" - .include "include/nhttp_thread.inc" - - .extern Unk_ov60_0222A014 - .extern Unk_ov60_0222A018 - .extern Unk_ov60_0222A01C - .extern Unk_ov60_0222A020 - .extern Unk_ov60_0222A024 - .extern Unk_ov60_0222A030 - - .text - - - arm_func_start ov60_02227184 -ov60_02227184: ; 0x02227184 - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r0, #0 - mov r4, r1 - str r0, [r5, #0] - str r0, [r4, #0] - bl ov60_02225E38 - ldr r1, _0222721C ; =0x0222A020 - ldr r2, [r1, #0] - cmp r2, #0 - beq _022271FC - ldr r0, [r2, #0xc] - ldr r0, [r0, #0x14] - cmp r0, #0 - beq _022271F4 - ldr r2, [r2, #0xc] - mvn r0, #0 - ldr r2, [r2, #0x30] - ldr r2, [r2, #4] - str r2, [r5, #0] - ldr r2, [r1, #0] - ldr r1, [r2, #0xc] - ldr r1, [r1, #0x14] - cmp r1, r0 - moveq r0, #0 - ldrne r0, [r2, #0xc] - ldrne r0, [r0, #0x14] - str r0, [r4, #0] -_022271F4: - mov r4, #1 - b _02227210 -_022271FC: - ldr r0, _02227220 ; =0x0222A030 - ldr r0, [r0, #0] - cmp r0, #0 - movne r4, #1 - moveq r4, #0 -_02227210: - bl ov60_02225E4C - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0222721C: .word 0x0222A020 -_02227220: .word Unk_ov60_0222A030 - arm_func_end ov60_02227184 - - arm_func_start ov60_02227224 -ov60_02227224: ; 0x02227224 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r5, [sp, #0x28] - mov sl, r0 - mov sb, r1 - mov r8, r2 - mov r7, r3 - cmp r5, #0 - ble _022272CC - ldr r4, _022272D4 ; =0x0222AA58 - mov fp, #0 -_0222724C: - ldr r0, [sl, #4] - cmp r0, #0 - mvnne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [r8] - mov r1, r7 - rsb r6, r0, #0x400 - cmp r5, r6 - movle r6, r5 - mov r2, r6 - add r0, r4, r0 - bl ov60_0222716C - ldr r0, [r8] - add r7, r7, r6 - add r0, r0, r6 - str r0, [r8] - cmp r0, #0x400 - sub r5, r5, r6 - bne _022272C4 - mov r0, sl - mov r1, sb - mov r2, r4 - mov r3, #0x400 - str fp, [sp] - bl ov60_02227070 - cmp r0, #0 - ldmleia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [r8] - sub r0, r1, r0 - str r0, [r8] -_022272C4: - cmp r5, #0 - bgt _0222724C -_022272CC: - ldr r0, [sp, #0x28] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_022272D4: .word Unk_ov60_0222AA58 - arm_func_end ov60_02227224 - - arm_func_start ov60_022272D8 -ov60_022272D8: ; 0x022272D8 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #8 - mov r8, #0 - mov sl, r0 - mov sb, r1 - mov r7, r8 - strb r8, [sp, #4] - strb r8, [sp, #5] - mov r6, r8 - mov r5, #1 - add r4, sp, #4 - b _02227334 -_02227308: - mov r0, sl - mov r1, sb - mov r3, r5 - add r2, r4, r2 - str r6, [sp] - bl ov60_02227024 - cmp r0, #0 - addle sp, sp, #8 - ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - add r8, r8, r0 - add r7, r7, #1 -_02227334: - and r2, r7, #1 - ldrsb r0, [r4, r2] - cmp r0, #0xd - bne _02227308 - sub r0, r7, #1 - and r0, r0, #1 - ldrsb r0, [r4, r0] - cmp r0, #0xa - bne _02227308 - mov r0, r8 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - arm_func_end ov60_022272D8 - - arm_func_start ov60_02227364 -ov60_02227364: ; 0x02227364 - stmfd sp!, {r4, lr} - movs r4, r0 - ldmeqia sp!, {r4, pc} - ldr r0, [r4, #0x800] - cmp r0, #0 - beq _02227388 - ldr r1, _0222739C ; =0x0222A01C - ldr r1, [r1, #0] - blx r1 -_02227388: - ldr r1, _0222739C ; =0x0222A01C - mov r0, r4 - ldr r1, [r1, #0] - blx r1 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0222739C: .word Unk_ov60_0222A01C - arm_func_end ov60_02227364 - - arm_func_start ov60_022273A0 -ov60_022273A0: ; 0x022273A0 - stmfd sp!, {r4, r5, r6, lr} - ldr r2, _02227434 ; =0x0222AA10 - mov r6, r0 - ldmia r2, {r0, r2} - add r0, r0, #1 - and r4, r0, #7 - mov r5, r1 - cmp r4, r2 - bne _022273FC - ldr r1, _02227438 ; =0x0222AA18 - mov r0, #0 - ldr r1, [r1, r2, lsl #3] - bl ov60_02226F6C - ldr r0, _02227434 ; =0x0222AA10 - ldr r1, _0222743C ; =0x0222AA1C - ldr r0, [r0, #4] - ldr r0, [r1, r0, lsl #3] - bl ov60_02227364 - ldr r0, _02227434 ; =0x0222AA10 - ldr r1, [r0, #4] - add r1, r1, #1 - and r1, r1, #7 - str r1, [r0, #4] -_022273FC: - ldr r0, [r5, #0] - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r0, _02227434 ; =0x0222AA10 - ldr r1, _02227438 ; =0x0222AA18 - ldr ip, [r0] - ldr r2, _0222743C ; =0x0222AA1C - str r6, [r1, ip, lsl #3] - ldr r3, [r5, #0] - mov r1, #0 - str r3, [r2, ip, lsl #3] - str r1, [r5, #0] - str r4, [r0, #0] - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_02227434: .word Unk_ov60_0222AA10 -_02227438: .word Unk_ov60_0222AA18 -_0222743C: .word 0x0222AA1C - arm_func_end ov60_022273A0 - - arm_func_start ov60_02227440 -ov60_02227440: ; 0x02227440 - stmfd sp!, {r4, r5, r6, lr} - ldr r6, _02227498 ; =0x0222AA10 - ldmia r6, {r0, r1} - cmp r0, r1 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r4, _0222749C ; =0x0222AA18 - mov r5, #0 -_0222745C: - ldr r1, [r4, r1, lsl #3] - mov r0, r5 - bl ov60_02226F6C - ldr r0, [r6, #4] - add r0, r4, r0, lsl #3 - ldr r0, [r0, #4] - bl ov60_02227364 - ldr r0, [r6, #4] - add r0, r0, #1 - and r1, r0, #7 - str r1, [r6, #4] - ldr r0, [r6, #0] - cmp r0, r1 - bne _0222745C - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_02227498: .word Unk_ov60_0222AA10 -_0222749C: .word Unk_ov60_0222AA18 - arm_func_end ov60_02227440 - - arm_func_start ov60_022274A0 -ov60_022274A0: ; 0x022274A0 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x4c - ldr r2, _022283C0 ; =0x0222AA10 - mov r0, #0 - str r0, [sp, #0x3c] - str r0, [r2, #0] - ldr r1, _022283C4 ; =0x0222A024 - mvn r6, #0 - str r0, [r2, #4] - ldr r1, [r1, #0] - str r0, [sp, #0x10] - str r6, [sp, #0x18] - str r6, [sp, #0x14] - str r0, [sp, #8] - str r0, [sp, #0xc] - cmp r1, #0 - bne _02228770 -_022274E4: - bl ov60_02225E38 - bl ov60_02225E08 - cmp r0, #0 - mvneq r4, #0 - beq _02227508 - ldr r4, [r0, #8] - ldr r8, [r0, #0xc] - ldr r1, _022283C8 ; =0x0222A020 - str r0, [r1, #0] -_02227508: - bl ov60_02225E4C - cmp r4, #0 - bge _0222751C - bl ov60_02225F00 - b _02228760 -_0222751C: - ldr r0, [r8, #4] - ldr sb, [r8, #0x30] - cmp r0, #0 - bne _02228690 - mov r0, r8 - bl ov60_02226B6C - str r0, [sp, #0x1c] - cmp r0, #0 - moveq r0, #4 - streq r0, [sp, #4] - beq _02228690 - mov r1, r0 - ldr r0, [sp, #0x18] - mov r2, #0 - cmp r1, r0 - ldreq r1, [r8, #0x28] - ldreq r0, [sp, #0x14] - add r5, sp, #0x38 - cmpeq r1, r0 - ldreq r1, [r8, #8] - ldreq r0, [sp, #0xc] - add r4, sp, #0x40 - cmpeq r1, r0 - ldr r0, [r8, #0x28] - moveq r2, #1 - str r0, [sp, #0x14] - ldr r0, [r8, #8] - str r0, [sp, #0xc] - ldr r0, [sp, #0x1c] - str r0, [sp, #0x18] - ldr r0, [sp, #8] - and r0, r0, r2 - str r0, [sp, #8] - mvn r0, #0 - str r0, [sp, #0x20] -_022275A8: - mov r0, #0 - cmp r6, #0 - str r0, [sp, #4] - blt _022275F8 - mov r0, #9 - strh r0, [sp, #0x2c] - ldr r2, _022283CC ; =0x0000CC8D - add r0, sp, #0x28 - mov r1, #1 - mov r3, #0 - str r6, [sp, #0x28] - bl SOC_Poll - cmp r0, #0 - movle r0, #0 - strle r0, [sp, #8] - ble _022275F8 - ldrsh r0, [sp, #0x2e] - tst r0, #0xe0 - movne r0, #0 - strne r0, [sp, #8] -_022275F8: - ldr r0, [sp, #8] - cmp r0, #0 - bne _022276C0 - cmp r6, #0 - blt _02227640 - mov r0, r8 - mov r1, r6 - bl ov60_02226F5C - cmp r0, #0 - movlt r0, #0xa - strlt r0, [sp, #4] - mov r0, r6 - add r1, sp, #0x3c - bl ov60_022273A0 - ldr r0, [sp, #4] - ldr r6, [sp, #0x20] - cmp r0, #0 - bne _02228690 -_02227640: - mov r0, r8 - bl ov60_02226EDC - movs r6, r0 - movmi r0, #3 - strmi r0, [sp, #4] - bmi _02228690 - ldr r0, [r8, #8] - cmp r0, #0 - beq _02227674 - ldr r0, [r8, #0x20] - str r0, [sp, #0x3c] - mov r0, #0 - str r0, [r8, #0x20] -_02227674: - bl ov60_02225E38 - ldr r0, _022283C8 ; =0x0222A020 - ldr r0, [r0, #0] - str r6, [r0, #0x10] - bl ov60_02225E4C - ldr r0, [r8, #4] - cmp r0, #0 - bne _02228690 - ldr r2, [sp, #0x1c] - ldr r3, [r8, #0x28] - mov r0, r8 - mov r1, r6 - bl ov60_02226FA8 - cmp r0, #0 - movge r0, #1 - strge r0, [sp, #8] - movlt r0, #0 - strlt r0, [sp, #8] - b _022276F4 -_022276C0: - ldr r0, [r8, #8] - cmp r0, #0 - beq _022276DC - ldr r0, [r8, #0x20] - bl ov60_02227364 - mov r0, #0 - str r0, [r8, #0x20] -_022276DC: - bl ov60_02226EBC - bl ov60_02225E38 - ldr r0, _022283C8 ; =0x0222A020 - ldr r0, [r0, #0] - str r6, [r0, #0x10] - bl ov60_02225E4C -_022276F4: - ldr r0, [r8, #4] - cmp r0, #0 - bne _02228690 - ldr r0, [sp, #8] - cmp r0, #0 - moveq r0, #5 - streq r0, [sp, #4] - beq _02228690 - mov r0, #0 - str r0, [sp, #0x38] - str r0, [sp, #8] - ldr r0, [r8, #0x24] - bl ov60_0222714C - mov r7, r0 - mov r0, #0xa - str r0, [sp, #4] - ldr r0, [r8, #0x40] - cmp r0, #0 - beq _02227754 - cmp r0, #1 - beq _02227780 - cmp r0, #2 - beq _022277AC - b _022277D4 -_02227754: - mov r0, #4 - str r0, [sp] - ldr r3, _022283D0 ; =0x02229CF4 - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl ov60_02227224 - cmp r0, #0 - blt _02228690 - beq _022275A8 - b _022277D4 -_02227780: - mov r0, #5 - str r0, [sp] - ldr r3, _022283D4 ; =0x02229CFC - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl ov60_02227224 - cmp r0, #0 - blt _02228690 - beq _022275A8 - b _022277D4 -_022277AC: - mov r0, #5 - str r0, [sp] - ldr r3, _022283D8 ; =0x02229D04 - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl ov60_02227224 - cmp r0, #0 - blt _02228690 - beq _022275A8 -_022277D4: - ldr sl, [r8, #0x10] - cmp r7, sl - ble _02227814 - subs r0, r7, sl - beq _0222783C - str r0, [sp] - mov r0, r8 - mov r1, r6 - mov r2, r5 - ldr r3, [r8, #0x24] - add r3, r3, sl - bl ov60_02227224 - cmp r0, #0 - blt _02228690 - beq _022275A8 - b _0222783C -_02227814: - mov r0, #1 - str r0, [sp] - ldr r3, _022283DC ; =0x02229D0C - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl ov60_02227224 - cmp r0, #0 - blt _02228690 - beq _022275A8 -_0222783C: - mov r0, #0xb - str r0, [sp] - ldr r3, _022283E0 ; =0x02229D10 - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl ov60_02227224 - cmp r0, #0 - blt _02228690 - beq _022275A8 - ldr r0, [r8, #8] - ldr r3, _022283E4 ; =0x02229D1C - cmp r0, #0 - movne r0, #8 - moveq r0, #7 - str r0, [sp, #0x34] - mov r0, #6 - str r0, [sp] - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl ov60_02227224 - cmp r0, #0 - blt _02228690 - beq _022275A8 - ldr r7, [sp, #0x34] - ldr r0, [r8, #0xc] - subs r0, r0, r7 - beq _022278D8 - str r0, [sp] - mov r0, r8 - mov r1, r6 - mov r2, r5 - ldr r3, [r8, #0x24] - add r3, r3, r7 - bl ov60_02227224 - cmp r0, #0 - blt _02228690 - beq _022275A8 -_022278D8: - mov r0, #2 - str r0, [sp] - ldr r3, _022283E8 ; =0x02229D24 - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl ov60_02227224 - cmp r0, #0 - blt _02228690 - beq _022275A8 - add r0, r8, #0x34 - bl ov60_02225A60 - movs r7, r0 - beq _022279E8 -_02227910: - ldr r0, [r7, #8] - bl ov60_0222714C - cmp r0, #0 - beq _02227944 - str r0, [sp] - mov r0, r8 - mov r1, r6 - mov r2, r5 - ldr r3, [r7, #8] - bl ov60_02227224 - cmp r0, #0 - blt _02228690 - beq _022275A8 -_02227944: - mov r0, #2 - str r0, [sp] - ldr r3, _022283EC ; =0x02229D28 - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl ov60_02227224 - cmp r0, #0 - blt _02228690 - beq _022275A8 - ldr r0, [r7, #0xc] - bl ov60_0222714C - cmp r0, #0 - beq _022279A0 - str r0, [sp] - mov r0, r8 - mov r1, r6 - mov r2, r5 - ldr r3, [r7, #0xc] - bl ov60_02227224 - cmp r0, #0 - blt _02228690 - beq _022275A8 -_022279A0: - mov r0, #2 - str r0, [sp] - ldr r3, _022283E8 ; =0x02229D24 - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl ov60_02227224 - cmp r0, #0 - blt _02228690 - beq _022275A8 - ldr r1, _022283F0 ; =0x0222A01C - mov r0, r7 - ldr r1, [r1, #0] - blx r1 - add r0, r8, #0x34 - bl ov60_02225A60 - movs r7, r0 - bne _02227910 -_022279E8: - ldr r0, [r8, #0x40] - cmp r0, #1 - bne _02227C08 - ldr sl, [r8, #0x38] - mov r7, #0 - mov r0, r7 - str r0, [sp, #0x10] - cmp sl, #0 - mov r1, sl - beq _02227A38 -_02227A10: - ldr r0, [r1, #0x14] - cmp r0, #0 - movne r0, #1 - strne r0, [sp, #0x10] - bne _02227A38 - ldr r0, [sl] - cmp r1, r0 - ldrne r1, [r1, #4] - cmpne r1, #0 - bne _02227A10 -_02227A38: - ldr r0, [sp, #0x10] - cmp r0, #0 - beq _02227B14 - cmp sl, #0 - beq _02227A94 -_02227A4C: - ldr r0, [sl, #8] - add r7, r7, #0x16 - bl ov60_0222714C - add r0, r0, #0x29 - add r7, r7, r0 - ldr r0, [sl, #0x14] - ldr r1, [sl, #0x10] - cmp r0, #0 - ldr r0, [r8, #0x38] - addne r7, r7, #0x4b - ldr r0, [r0, #0] - add r2, r7, #2 - cmp sl, r0 - ldrne sl, [sl, #4] - add r1, r2, r1 - add r7, r1, #2 - cmpne sl, #0 - bne _02227A4C -_02227A94: - mov r0, #0x2c - str r0, [sp] - ldr r3, _022283F4 ; =0x02229D2C - mov r0, r8 - mov r1, r6 - mov r2, r5 - add r7, r7, #0x18 - bl ov60_02227224 - cmp r0, #0 - blt _02228690 - beq _022275A8 - mov r0, #0x12 - str r0, [sp] - mov r0, r8 - mov r1, r6 - mov r2, r5 - add r3, r8, #0x46 - bl ov60_02227224 - cmp r0, #0 - blt _02228690 - beq _022275A8 - mov r0, #2 - str r0, [sp] - ldr r3, _022283E8 ; =0x02229D24 - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl ov60_02227224 - cmp r0, #0 - blt _02228690 - beq _022275A8 - b _02227B7C -_02227B14: - cmp sl, #0 - beq _02227B54 -_02227B1C: - ldr r0, [sl, #8] - bl ov60_022287A0 - add r0, r7, r0 - add r7, r0, #1 - ldr r0, [sl, #0xc] - bl ov60_022287A0 - add r7, r7, r0 - ldr r0, [r8, #0x38] - ldr r0, [r0, #0] - cmp sl, r0 - ldrne sl, [sl, #4] - addne r7, r7, #1 - cmpne sl, #0 - bne _02227B1C -_02227B54: - mov r0, #0x31 - str r0, [sp] - ldr r3, _022283F8 ; =0x02229D5C - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl ov60_02227224 - cmp r0, #0 - blt _02228690 - beq _022275A8 -_02227B7C: - mov r0, #0x10 - str r0, [sp] - ldr r3, _022283FC ; =0x02229D90 - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl ov60_02227224 - cmp r0, #0 - blt _02228690 - beq _022275A8 - mov r1, r7 - mov r0, r4 - bl ov60_02228A18 - str r0, [sp, #0x34] - cmp r0, #0 - beq _02227BE0 - str r0, [sp] - mov r0, r8 - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl ov60_02227224 - cmp r0, #0 - blt _02228690 - beq _022275A8 -_02227BE0: - mov r0, #2 - str r0, [sp] - ldr r3, _022283E8 ; =0x02229D24 - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl ov60_02227224 - cmp r0, #0 - blt _02228690 - beq _022275A8 -_02227C08: - mov r0, #2 - str r0, [sp] - ldr r3, _022283E8 ; =0x02229D24 - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl ov60_02227224 - cmp r0, #0 - blt _02228690 - beq _022275A8 - ldr r0, [r8, #0x40] - cmp r0, #1 - bne _02227F88 - ldr r0, [sp, #0x10] - cmp r0, #0 - beq _02227E48 - ldr r7, [r8, #0x38] - cmp r7, #0 - beq _02227DF4 -_02227C54: - mov r0, #0x14 - str r0, [sp] - mov r0, r8 - mov r1, r6 - mov r2, r5 - add r3, r8, #0x44 - bl ov60_02227224 - cmp r0, #0 - blt _02228690 - beq _022275A8 - mov r0, #2 - str r0, [sp] - ldr r3, _022283E8 ; =0x02229D24 - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl ov60_02227224 - cmp r0, #0 - blt _02228690 - beq _022275A8 - mov r0, #0x26 - str r0, [sp] - ldr r3, _02228400 ; =0x02228D8C - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl ov60_02227224 - cmp r0, #0 - blt _02228690 - beq _022275A8 - ldr r0, [r7, #8] - bl ov60_0222714C - cmp r0, #0 - beq _02227D00 - str r0, [sp] - mov r0, r8 - mov r1, r6 - mov r2, r5 - ldr r3, [r7, #8] - bl ov60_02227224 - cmp r0, #0 - blt _02228690 - beq _022275A8 -_02227D00: - mov r0, #3 - str r0, [sp] - ldr r3, _02228404 ; =0x02229DA4 - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl ov60_02227224 - cmp r0, #0 - blt _02228690 - beq _022275A8 - ldr r0, [r7, #0x14] - cmp r0, #0 - beq _02227D5C - mov r0, #0x4b - str r0, [sp] - ldr r3, _02228408 ; =0x02228DB4 - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl ov60_02227224 - cmp r0, #0 - blt _02228690 - beq _022275A8 -_02227D5C: - mov r0, #2 - str r0, [sp] - ldr r3, _022283E8 ; =0x02229D24 - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl ov60_02227224 - cmp r0, #0 - blt _02228690 - beq _022275A8 - ldr r0, [r7, #0x10] - cmp r0, #0 - beq _02227DB4 - str r0, [sp] - mov r0, r8 - mov r1, r6 - mov r2, r5 - ldr r3, [r7, #0xc] - bl ov60_02227224 - cmp r0, #0 - blt _02228690 - beq _022275A8 -_02227DB4: - mov r0, #2 - str r0, [sp] - ldr r3, _022283E8 ; =0x02229D24 - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl ov60_02227224 - cmp r0, #0 - blt _02228690 - beq _022275A8 - ldr r0, [r8, #0x38] - ldr r0, [r0, #0] - cmp r7, r0 - ldrne r7, [r7, #4] - cmpne r7, #0 - bne _02227C54 -_02227DF4: - mov r0, #0x14 - str r0, [sp] - mov r0, r8 - mov r1, r6 - mov r2, r5 - add r3, r8, #0x44 - bl ov60_02227224 - cmp r0, #0 - blt _02228690 - beq _022275A8 - mov r0, #4 - str r0, [sp] - ldr r3, _0222840C ; =0x02229DA8 - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl ov60_02227224 - cmp r0, #0 - blt _02228690 - beq _022275A8 - b _02227F88 -_02227E48: - ldr sl, [r8, #0x38] - cmp sl, #0 - beq _02227F88 -_02227E54: - ldr r1, [sl, #8] - mov r7, #0 - ldrsb r0, [r1] - cmp r0, #0 - beq _02227EB8 -_02227E68: - ldrsb r1, [r1, r7] - mov r0, r4 - bl ov60_02228808 - str r0, [sp, #0x34] - cmp r0, #0 - beq _02227EA4 - str r0, [sp] - mov r0, r8 - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl ov60_02227224 - cmp r0, #0 - blt _02228690 - beq _022275A8 -_02227EA4: - add r7, r7, #1 - ldr r1, [sl, #8] - ldrsb r0, [r1, r7] - cmp r0, #0 - bne _02227E68 -_02227EB8: - mov r0, #1 - str r0, [sp] - ldr r3, _02228410 ; =0x02229DB0 - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl ov60_02227224 - cmp r0, #0 - blt _02228690 - beq _022275A8 - ldr r1, [sl, #0xc] - mov r7, #0 - ldrsb r0, [r1] - cmp r0, #0 - beq _02227F44 -_02227EF4: - ldrsb r1, [r1, r7] - mov r0, r4 - bl ov60_02228808 - str r0, [sp, #0x34] - cmp r0, #0 - beq _02227F30 - str r0, [sp] - mov r0, r8 - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl ov60_02227224 - cmp r0, #0 - blt _02228690 - beq _022275A8 -_02227F30: - add r7, r7, #1 - ldr r1, [sl, #0xc] - ldrsb r0, [r1, r7] - cmp r0, #0 - bne _02227EF4 -_02227F44: - ldr r0, [r8, #0x38] - ldr r0, [r0, #0] - cmp sl, r0 - beq _02227F88 - mov r0, #1 - str r0, [sp] - ldr r3, _02228414 ; =0x02229DB4 - mov r0, r8 - mov r1, r6 - mov r2, r5 - bl ov60_02227224 - cmp r0, #0 - blt _02228690 - beq _022275A8 - ldr sl, [sl, #4] - cmp sl, #0 - bne _02227E54 -_02227F88: - ldr r3, [sp, #0x38] - cmp r3, #0 - ble _02227FB8 - mov r0, #0 - str r0, [sp] - ldr r2, _02228418 ; =0x0222AA58 - mov r0, r8 - mov r1, r6 - bl ov60_02227070 - cmp r0, #0 - blt _02228690 - beq _022275A8 -_02227FB8: - mov r0, #0 - str r0, [sb] - strb r0, [sp, #0x40] - strb r0, [sp, #0x41] - mov r1, #7 - strb r0, [sp, #0x42] - strb r0, [sp, #0x43] - ldr r5, [sb, #0x1c] - str r1, [sp, #4] - str r0, [sp, #0x38] - add sl, sb, #0x20 - add r4, sp, #0x40 -_02227FE8: - ldr r1, [r8, #4] - cmp r1, #0 - bne _02228690 - cmp r0, #0x400 - bge _02228030 - add r2, sl, r0 - mov r0, #0 - str r0, [sp] - mov r0, r8 - mov r1, r6 - mov r3, #1 - bl ov60_02227024 - ldr r3, [sp, #0x38] - add r1, sb, r3 - ldrsb r2, [r1, #0x20] - and r1, r3, #3 - strb r2, [r4, r1] - b _022280C4 -_02228030: - ldr r1, _0222841C ; =0x000001FF - ands r7, r0, r1 - bne _02228090 - cmp r5, #0 - mov r0, #0x204 - mov r1, #4 - beq _02228064 - ldr r2, _02228420 ; =0x0222A018 - ldr r2, [r2, #0] - blx r2 - str r0, [r5, #0] - mov r5, r0 - b _02228078 -_02228064: - ldr r2, _02228420 ; =0x0222A018 - ldr r2, [r2, #0] - blx r2 - mov r5, r0 - str r5, [sb, #0x1c] -_02228078: - cmp r5, #0 - moveq r0, #1 - streq r0, [sp, #4] - beq _02228690 - mov r0, #0 - str r0, [r5, #0] -_02228090: - mov r0, #0 - add r2, r5, #4 - str r0, [sp] - mov r0, r8 - mov r1, r6 - add r2, r2, r7 - mov r3, #1 - bl ov60_02227024 - add r1, r5, r7 - ldrsb r2, [r1, #4] - ldr r1, [sp, #0x38] - and r1, r1, #3 - strb r2, [r4, r1] -_022280C4: - cmp r0, #0 - movle r0, #0xa - strle r0, [sp, #4] - ble _02228690 - ldr r1, [sp, #0x38] - add r0, r1, r0 - str r0, [sp, #0x38] - sub r1, r0, #4 - and r1, r1, #3 - ldrsb r1, [r4, r1] - cmp r1, #0xd - bne _02227FE8 - sub r1, r0, #3 - and r1, r1, #3 - ldrsb r1, [r4, r1] - cmp r1, #0xa - bne _02227FE8 - sub r1, r0, #2 - and r1, r1, #3 - ldrsb r1, [r4, r1] - cmp r1, #0xd - bne _02227FE8 - sub r1, r0, #1 - and r1, r1, #3 - ldrsb r1, [r4, r1] - cmp r1, #0xa - bne _02227FE8 - str r0, [sb] - ldr r0, [sb] - cmp r0, #0 - beq _02228690 - ldr r1, _02228418 ; =0x0222AA58 - mov r0, sb - mov r2, #0 - mov r3, #0xe - bl ov60_02226220 - cmp r0, #0 - beq _02228690 - ldr r0, _02228418 ; =0x0222AA58 - ldr r1, _02228424 ; =0x02229DB8 - mov r2, #5 - bl ov60_022270E4 - cmp r0, #0 - ldreq r0, _02228418 ; =0x0222AA58 - ldreqsb r0, [r0, #8] - cmpeq r0, #0x20 - bne _02228690 - ldr r0, _02228428 ; =0x0222AA61 - mov r1, #3 - bl ov60_02228980 - cmp r0, #0 - blt _02228690 - ldr r2, [sb] - add r3, sp, #0x30 - mov r0, sb - mov r1, #0xc - bl ov60_02226010 - cmp r0, #0 - blt _02228690 - ldr r1, _0222842C ; =0x02229DC0 - add r2, sp, #0x34 - mov r0, sb - bl ov60_02226C7C - movs r5, r0 - moveq r0, #0 - streq r0, [sp, #4] - beq _02228690 - cmp r5, #0x400 - bgt _02228690 - cmp r5, #0 - ble _02228218 - ldr r2, [sp, #0x34] - ldr r1, _02228418 ; =0x0222AA58 - mov r0, sb - mov r3, r5 - bl ov60_02226220 - cmp r0, #0 - beq _02228690 - ldr r0, _02228418 ; =0x0222AA58 - mov r1, r5 - bl ov60_02228980 - movs r5, r0 - bmi _02228690 - str r5, [r8, #0x14] - b _02228220 -_02228218: - mvn r0, #0 - str r0, [r8, #0x14] -_02228220: - ldr r1, _02228430 ; =0x02229DD0 - add r2, sp, #0x34 - mov r0, sb - bl ov60_02226C7C - str r0, [sp, #8] - cmp r0, #0 - beq _02228690 - bge _02228280 - ldr r0, _02228418 ; =0x0222AA58 - mov r2, #0 - ldrsb r1, [r0, #5] - ldrsb r3, [r0, #7] - add r0, sp, #0x24 - strb r1, [sp, #0x24] - mov r1, #2 - strb r3, [sp, #0x25] - strb r2, [sp, #0x26] - bl ov60_02228980 - cmp r0, #0xb - movge r0, #1 - strge r0, [sp, #8] - movlt r0, #0 - strlt r0, [sp, #8] - b _022282C0 -_02228280: - cmp r0, #0x400 - mov r0, #0 - strgt r0, [sp, #8] - bgt _022282C0 - ldr r1, [sp, #0x34] - ldr r2, [sp, #8] - str r0, [sp] - ldr r3, _02228434 ; =0x02229DDC - mov r0, sb - add r2, r1, r2 - bl ov60_02226150 - cmp r0, #0 - moveq r0, #1 - streq r0, [sp, #8] - movne r0, #0 - strne r0, [sp, #8] -_022282C0: - ldr r1, _02228438 ; =0x02229DE8 - add r2, sp, #0x34 - mov r0, sb - bl ov60_02226C7C - cmp r0, #0 - beq _02228690 - cmp r0, #0x400 - movgt r1, #0 - bgt _0222831C - cmp r0, #0 - ble _02228318 - ldr r1, [sp, #0x34] - ldr r3, _0222843C ; =0x02229DFC - add r2, r1, r0 - mov r0, #0x3b - str r0, [sp] - mov r0, sb - bl ov60_02226150 - cmp r0, #0 - moveq r1, #1 - movne r1, #0 - b _0222831C -_02228318: - mov r1, #0 -_0222831C: - ldr r0, [r8, #0x40] - cmp r0, #2 - beq _02228690 - cmp r5, #0 - blt _02228440 - mov r4, #0 - b _0222836C -_02228338: - str r4, [sp] - ldr r2, [sb, #4] - mov r0, r8 - mov r1, r6 - mov r3, r5 - bl ov60_02226348 - cmp r0, #0 - blt _02228690 - beq _02228388 - ldr r1, [sb, #4] - sub r5, r5, r0 - add r0, r1, r0 - str r0, [sb, #4] -_0222836C: - cmp r5, #0 - ble _02228388 - ldr r1, [sb, #4] - mov r0, sb - bl ov60_0222630C - cmp r0, #0 - beq _02228338 -_02228388: - cmp r5, #0 - beq _022283B4 - ldr r1, [sb, #4] - mov r0, sb - bl ov60_0222630C - cmp r0, #0 - movne r0, #6 - strne r0, [sp, #4] - moveq r0, #0xa - streq r0, [sp, #4] - b _02228690 -_022283B4: - mov r0, #0 - str r0, [sp, #4] - b _02228690 - ; .align 2, 0 -_022283C0: .word Unk_ov60_0222AA10 -_022283C4: .word Unk_ov60_0222A024 -_022283C8: .word 0x0222A020 -_022283CC: .word 0x0000CC8D -_022283D0: .word Unk_ov60_02229CF4 -_022283D4: .word Unk_ov60_02229CFC -_022283D8: .word Unk_ov60_02229D04 -_022283DC: .word Unk_ov60_02229D0C -_022283E0: .word Unk_ov60_02229D10 -_022283E4: .word Unk_ov60_02229D1C -_022283E8: .word Unk_ov60_02229D24 -_022283EC: .word Unk_ov60_02229D28 -_022283F0: .word Unk_ov60_0222A01C -_022283F4: .word Unk_ov60_02229D2C -_022283F8: .word Unk_ov60_02229D5C -_022283FC: .word Unk_ov60_02229D90 -_02228400: .word Unk_ov60_02228D8C -_02228404: .word Unk_ov60_02229DA4 -_02228408: .word Unk_ov60_02228DB4 -_0222840C: .word Unk_ov60_02229DA8 -_02228410: .word Unk_ov60_02229DB0 -_02228414: .word Unk_ov60_02229DB4 -_02228418: .word Unk_ov60_0222AA58 -_0222841C: .word 0x000001FF -_02228420: .word Unk_ov60_0222A018 -_02228424: .word Unk_ov60_02229DB8 -_02228428: .word 0x0222AA61 -_0222842C: .word Unk_ov60_02229DC0 -_02228430: .word Unk_ov60_02229DD0 -_02228434: .word Unk_ov60_02229DDC -_02228438: .word Unk_ov60_02229DE8 -_0222843C: .word Unk_ov60_02229DFC -_02228440: - mov r0, #0xa - cmp r1, #0 - str r0, [sp, #4] - beq _022285E4 - mov r7, #0 - ldr r5, _02228418 ; =0x0222AA58 - add r4, sp, #0x40 - mov sl, r7 -_02228460: - mov r0, #0 - strb r0, [sp, #0x40] - strb r0, [sp, #0x41] - str r0, [sp, #0x38] -_02228470: - str r7, [sp] - ldr r2, [sp, #0x38] - mov r0, r8 - mov r1, r6 - mov r3, #1 - add r2, r5, r2 - bl ov60_02227024 - cmp r0, #0 - blt _02228690 - ldr r1, [sp, #0x38] - ldrsb r0, [r5, r1] - and r2, r1, #1 - strb r0, [r4, r2] - cmp r0, #0x3b - beq _022284C8 - cmp r0, #0xa - bne _02228510 - sub r2, r1, #1 - and r2, r2, #1 - ldrsb r2, [r4, r2] - cmp r2, #0xd - bne _02228510 -_022284C8: - cmp r0, #0xa - subeq r0, r1, #1 - streq r0, [sp, #0x34] - beq _022284F0 - str r1, [sp, #0x34] - mov r0, r8 - mov r1, r6 - bl ov60_022272D8 - cmp r0, #0 - ble _02228690 -_022284F0: - ldr r1, [sp, #0x34] - cmp r1, #0 - beq _02228690 - mov r0, r5 - bl ov60_02228898 - movs fp, r0 - bmi _02228690 - b _02228524 -_02228510: - ldr r0, [sp, #0x38] - add r0, r0, #1 - str r0, [sp, #0x38] - cmp r0, #0x400 - blt _02228470 -_02228524: - ldr r0, [sp, #0x38] - cmp r0, #0x400 - moveq r0, #7 - streq r0, [sp, #4] - beq _02228690 - cmp fp, #0 - ble _022285CC - ble _02228460 -_02228544: - str sl, [sp] - mov r0, r8 - mov r1, r6 - ldr r2, [sb, #4] - mov r3, fp - bl ov60_02226348 - cmp r0, #0 - ble _02228690 - ldr r1, [sb, #4] - subs fp, fp, r0 - add r0, r1, r0 - str r0, [sb, #4] - bne _022285C0 - mov r0, #0 - str r0, [sp] - mov r0, r8 - mov r1, r6 - mov r2, r5 - mov r3, #1 - bl ov60_02227024 - cmp r0, #0 - ble _02228690 - mov r0, #0 - str r0, [sp] - mov r0, r8 - mov r1, r6 - mov r2, r5 - mov r3, #1 - bl ov60_02227024 - cmp r0, #0 - ble _02228690 -_022285C0: - cmp fp, #0 - bgt _02228544 - b _02228460 -_022285CC: - mov r0, r8 - mov r1, r6 - bl ov60_022272D8 - mov r0, #0 - str r0, [sp, #4] - b _02228690 -_022285E4: - ldr r1, [sb, #4] - mov r0, sb - bl ov60_0222630C - cmp r0, #0 - bne _02228690 - mov r5, #0 - ldr r4, _02228418 ; =0x0222AA58 - mov sl, #1 - mov r7, r5 -_02228608: - mov r0, r8 - mov r1, r6 - ldr r2, [sb, #4] - mov r3, r7 - bl ov60_02226320 - cmp r0, #0 - blt _02228690 - moveq r0, #0 - streq r0, [sp, #4] - beq _02228690 - ldr r1, [sb, #4] - add r0, r1, r0 - str r0, [sb, #4] - mov r0, sb - ldr r1, [sb, #4] - bl ov60_0222630C - cmp r0, #0 - beq _0222867C - str r5, [sp] - mov r0, r8 - mov r1, r6 - mov r2, r4 - mov r3, sl - bl ov60_02227024 - cmp r0, #0 - blt _02228690 - movne r0, #6 - strne r0, [sp, #4] - bne _02228690 -_0222867C: - mov r0, sb - ldr r1, [sb, #4] - bl ov60_0222630C - cmp r0, #0 - beq _02228608 -_02228690: - bl ov60_02225E38 - ldr r0, _022283C8 ; =0x0222A020 - ldr r1, _022283F0 ; =0x0222A01C - ldr r0, [r0, #0] - ldr r1, [r1, #0] - blx r1 - ldr r0, _022283C8 ; =0x0222A020 - mov r1, #0 - str r1, [r0, #0] - bl ov60_02225E4C - ldr r0, [r8, #4] - cmp r0, #0 - movne r0, #8 - strne r0, [sp, #4] - cmp r6, #0 - blt _02228718 - ldr r0, [sp, #8] - cmp r0, #0 - beq _022286E8 - ldr r0, [sp, #4] - cmp r0, #0 - beq _02228718 -_022286E8: - mov r0, r8 - mov r1, r6 - bl ov60_02226F5C - cmp r0, #0 - movlt r0, #0xa - strlt r0, [sp, #4] - add r1, sp, #0x3c - mov r0, r6 - bl ov60_022273A0 - mov r0, #0 - mvn r6, #0 - str r0, [sp, #8] -_02228718: - ldr r0, [sp, #4] - cmp r0, #0 - moveq r0, #1 - streq r0, [sb, #8] - beq _02228740 - mov r0, #0 - str r0, [sb, #8] - ldr r1, _0222879C ; =0x0222A014 - ldr r0, [sp, #4] - str r0, [r1, #0] -_02228740: - ldr r4, [r8, #0x2c] - mov r0, r8 - ldr r5, [r8, #0x3c] - bl ov60_02226998 - ldr r0, [sp, #4] - mov r1, sb - mov r2, r4 - blx r5 -_02228760: - ldr r0, _022283C4 ; =0x0222A024 - ldr r0, [r0, #0] - cmp r0, #0 - beq _022274E4 -_02228770: - cmp r6, #0 - blt _02228790 - mov r0, r8 - mov r1, r6 - bl ov60_02226F5C - add r1, sp, #0x3c - mov r0, r6 - bl ov60_022273A0 -_02228790: - bl ov60_02227440 - add sp, sp, #0x4c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0222879C: .word Unk_ov60_0222A014 - arm_func_end ov60_022274A0 - - .rodata - - - .global Unk_ov60_02228D8C -Unk_ov60_02228D8C: ; 0x02228D8C - .ascii "Content-Disposition: form-data; name=" - .byte 0x22 - .space 0x2 - - .global Unk_ov60_02228DB4 -Unk_ov60_02228DB4: ; 0x02228DB4 - .ascii "Content-Type: application/octet-stream" - .byte 0xD, 0xA - .ascii "Content-Transfer-Encoding: binary" - .byte 0xD, 0xA - - - - .data - - - .global Unk_ov60_02229CF4 -Unk_ov60_02229CF4: ; 0x02229CF4 - .ascii "GET " - .space 0x4 - - .global Unk_ov60_02229CFC -Unk_ov60_02229CFC: ; 0x02229CFC - .ascii "POST " - .space 0x3 - - .global Unk_ov60_02229D04 -Unk_ov60_02229D04: ; 0x02229D04 - .ascii "HEAD " - .space 0x3 - - .global Unk_ov60_02229D0C -Unk_ov60_02229D0C: ; 0x02229D0C - .word 0x2F - - .global Unk_ov60_02229D10 -Unk_ov60_02229D10: ; 0x02229D10 - .ascii " HTTP/1.1" - .byte 0xD, 0xA - .space 0x1 - - .global Unk_ov60_02229D1C -Unk_ov60_02229D1C: ; 0x02229D1C - .ascii "Host: " - .space 0x2 - - .global Unk_ov60_02229D24 -Unk_ov60_02229D24: ; 0x02229D24 - .byte 0xD, 0xA - .space 0x2 - - .global Unk_ov60_02229D28 -Unk_ov60_02229D28: ; 0x02229D28 - .ascii ": " - .space 0x2 - - .global Unk_ov60_02229D2C -Unk_ov60_02229D2C: ; 0x02229D2C - .ascii "Content-Type: multipart/form-data; boundary=" - .space 0x4 - - .global Unk_ov60_02229D5C -Unk_ov60_02229D5C: ; 0x02229D5C - .ascii "Content-Type: application/x-www-form-urlencoded" - .byte 0xD, 0xA - .space 0x3 - - .global Unk_ov60_02229D90 -Unk_ov60_02229D90: ; 0x02229D90 - .ascii "Content-Length: " - .space 0x4 - - .global Unk_ov60_02229DA4 -Unk_ov60_02229DA4: ; 0x02229DA4 - .byte 0x22, 0xD, 0xA, 0x0 - - .global Unk_ov60_02229DA8 -Unk_ov60_02229DA8: ; 0x02229DA8 - .ascii "--" - .byte 0xD, 0xA - .space 0x4 - - .global Unk_ov60_02229DB0 -Unk_ov60_02229DB0: ; 0x02229DB0 - .word 0x3D - - .global Unk_ov60_02229DB4 -Unk_ov60_02229DB4: ; 0x02229DB4 - .word 0x26 - - .global Unk_ov60_02229DB8 -Unk_ov60_02229DB8: ; 0x02229DB8 - .ascii "HTTP/" - .space 0x3 - - .global Unk_ov60_02229DC0 -Unk_ov60_02229DC0: ; 0x02229DC0 - .ascii "Content-Length" - .space 0x2 - - .global Unk_ov60_02229DD0 -Unk_ov60_02229DD0: ; 0x02229DD0 - .ascii "Connection" - .space 0x2 - - .global Unk_ov60_02229DDC -Unk_ov60_02229DDC: ; 0x02229DDC - .ascii "Keep-Alive" - .space 0x2 - - .global Unk_ov60_02229DE8 -Unk_ov60_02229DE8: ; 0x02229DE8 - .ascii "Transfer-Encoding" - .space 0x3 - - .global Unk_ov60_02229DFC -Unk_ov60_02229DFC: ; 0x02229DFC - .asciz "chunked" - - - - .bss - - - .global Unk_ov60_0222AA10 -Unk_ov60_0222AA10: ; 0x0222AA10 - .space 0x4 - - .global Unk_ov60_0222AA14 -Unk_ov60_0222AA14: ; 0x0222AA14 - .space 0x4 - - .global Unk_ov60_0222AA18 -Unk_ov60_0222AA18: ; 0x0222AA18 - .space 0x40 - - .global Unk_ov60_0222AA58 -Unk_ov60_0222AA58: ; 0x0222AA58 - .space 0x400 - diff --git a/subprojects/NitroDWC/libraries/nhttp/asm/nhttp_token.s b/subprojects/NitroDWC/libraries/nhttp/asm/nhttp_token.s deleted file mode 100644 index 50dc369f94..0000000000 --- a/subprojects/NitroDWC/libraries/nhttp/asm/nhttp_token.s +++ /dev/null @@ -1,389 +0,0 @@ - .include "macros/function.inc" - .include "include/nhttp_token.inc" - - - - .text - - - arm_func_start ov60_022287A0 -ov60_022287A0: ; 0x022287A0 - ldrsb r2, [r0], #1 - mov r1, #0 - cmp r2, #0 - beq _02228800 -_022287B0: - cmp r2, #0x30 - blt _022287C0 - cmp r2, #0x39 - ble _022287E8 -_022287C0: - cmp r2, #0x41 - blt _022287D0 - cmp r2, #0x5a - ble _022287E8 -_022287D0: - cmp r2, #0x61 - blt _022287E0 - cmp r2, #0x7a - ble _022287E8 -_022287E0: - cmp r2, #0x20 - bne _022287F0 -_022287E8: - add r1, r1, #1 - b _022287F4 -_022287F0: - add r1, r1, #3 -_022287F4: - ldrsb r2, [r0], #1 - cmp r2, #0 - bne _022287B0 -_02228800: - mov r0, r1 - bx lr - arm_func_end ov60_022287A0 - - arm_func_start ov60_02228808 -ov60_02228808: ; 0x02228808 - cmp r1, #0x20 - bne _02228820 - mov r1, #0x2b - strb r1, [r0] - mov r0, #1 - bx lr -_02228820: - cmp r1, #0x30 - blt _02228830 - cmp r1, #0x39 - ble _02228850 -_02228830: - cmp r1, #0x41 - blt _02228840 - cmp r1, #0x5a - ble _02228850 -_02228840: - cmp r1, #0x61 - blt _0222885C - cmp r1, #0x7a - bgt _0222885C -_02228850: - strb r1, [r0] - mov r0, #1 - bx lr -_0222885C: - mov r2, r1, asr #4 - and r3, r2, #0xf - mov r2, #0x25 - strb r2, [r0] - cmp r3, #0xa - addlt r2, r3, #0x30 - addge r2, r3, #0x37 - and r1, r1, #0xf - cmp r1, #0xa - addlt r1, r1, #0x30 - strb r2, [r0, #1] - addge r1, r1, #0x37 - strb r1, [r0, #2] - mov r0, #3 - bx lr - arm_func_end ov60_02228808 - - arm_func_start ov60_02228898 -ov60_02228898: ; 0x02228898 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - cmp r1, #8 - mvngt r0, #0 - ldmgtia sp!, {r4, r5, r6, r7, r8, pc} - bne _022288BC - ldrsb r2, [r0] - cmp r2, #0x37 - mvngt r0, #0 - ldmgtia sp!, {r4, r5, r6, r7, r8, pc} -_022288BC: - mov r5, #0 - mov r6, r5 - mov r7, r5 - cmp r1, #0 - ble _02228978 - mov lr, #1 - mov r3, lr - mov ip, lr - mov r4, r5 -_022288E0: - ldrsb r8, [r0, r5] - mov r2, r4 - cmp r8, #0x41 - blt _022288F8 - cmp r8, #0x5a - movle r2, lr -_022288F8: - cmp r2, #0 - addne r8, r8, #0x20 - mov r2, r8, lsl #0x18 - mov r2, r2, asr #0x18 - cmp r2, #0x30 - blt _02228928 - cmp r2, #0x39 - bgt _02228928 - add r2, r2, r6, lsl #4 - mov r7, ip - sub r6, r2, #0x30 - b _0222896C -_02228928: - cmp r2, #0x61 - blt _02228948 - cmp r2, #0x66 - bgt _02228948 - add r2, r2, r6, lsl #4 - mov r7, r3 - sub r6, r2, #0x57 - b _0222896C -_02228948: - cmp r7, #0 - beq _0222895C - cmp r2, #0x20 - cmpne r2, #0 - beq _02228978 -_0222895C: - cmp r7, #0 - cmpeq r2, #0x20 - mvnne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} -_0222896C: - add r5, r5, #1 - cmp r5, r1 - blt _022288E0 -_02228978: - mov r0, r6 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end ov60_02228898 - - arm_func_start ov60_02228980 -ov60_02228980: ; 0x02228980 - stmfd sp!, {r3, r4, r5, lr} - cmp r1, #0xa - mvngt r0, #0 - ldmgtia sp!, {r3, r4, r5, pc} - mov lr, #0 - mov r4, lr - mov r3, lr - cmp r1, #0 - ble _02228A10 - mov ip, #1 - mov r2, #0xa -_022289AC: - cmp r3, #0 - ldrsb r5, [r0, lr] - beq _022289C4 - cmp r5, #0x20 - cmpne r5, #0 - beq _02228A10 -_022289C4: - cmp r3, #0 - cmpeq r5, #0x20 - beq _02228A04 - cmp r5, #0x30 - blt _022289E0 - cmp r5, #0x39 - ble _022289E8 -_022289E0: - mvn r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_022289E8: - mla r3, r4, r2, r5 - mov r5, r4 - sub r4, r3, #0x30 - cmp r5, r4 - mov r3, ip - mvngt r0, #0 - ldmgtia sp!, {r3, r4, r5, pc} -_02228A04: - add lr, lr, #1 - cmp lr, r1 - blt _022289AC -_02228A10: - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov60_02228980 - - arm_func_start ov60_02228A18 -ov60_02228A18: ; 0x02228A18 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x24 - ldr r6, _02228AD0 ; =0x02228E00 - add r4, sp, #0 - mov sl, r0 - mov sb, r1 - ldmia r6!, {r0, r1, r2, r3} - mov r5, r4 - stmia r4!, {r0, r1, r2, r3} - ldmia r6!, {r0, r1, r2, r3} - stmia r4!, {r0, r1, r2, r3} - ldr r0, [r6, #0] - mov r7, #0 - str r0, [r4, #0] - mov r6, r7 - mov r1, r7 - mov fp, #1 - mov r4, #0x30 -_02228A60: - ldr r8, [r5, r6, lsl #2] - cmp sb, r8 - blo _02228A98 - mov r0, sb - mov r1, r8 - bl _u32_div_f - mul r2, r0, r8 - cmp sl, #0 - addne r0, r0, #0x30 - strneb r0, [sl, r7] - mov r1, fp - sub sb, sb, r2 - add r7, r7, #1 - b _02228AAC -_02228A98: - cmp r1, #0 - beq _02228AAC - cmp sl, #0 - strneb r4, [sl, r7] - add r7, r7, #1 -_02228AAC: - add r6, r6, #1 - cmp r6, #9 - blt _02228A60 - cmp sl, #0 - addne r0, sb, #0x30 - strneb r0, [sl, r7] - add r0, r7, #1 - add sp, sp, #0x24 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_02228AD0: .word Unk_ov60_02228E00 - arm_func_end ov60_02228A18 - - arm_func_start ov60_02228AD4 -ov60_02228AD4: ; 0x02228AD4 - stmfd sp!, {r4, r5, r6, lr} - mov ip, #1 - mov r3, #0 - mov r2, ip - mov lr, r3 - b _02228B04 -_02228AEC: - cmp r5, #0 - cmpne r5, #0x20 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - add r0, r0, #1 - add r1, r1, #1 -_02228B04: - ldrsb r6, [r1] - mov r4, lr - cmp r6, #0x41 - blt _02228B1C - cmp r6, #0x5a - movle r4, ip -_02228B1C: - ldrsb r5, [r0] - cmp r4, #0 - addne r6, r6, #0x20 - mov r4, r3 - cmp r5, #0x41 - blt _02228B3C - cmp r5, #0x5a - movle r4, r2 -_02228B3C: - cmp r4, #0 - addne r4, r5, #0x20 - moveq r4, r5 - cmp r4, r6 - beq _02228AEC - mvn r0, #0 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ov60_02228AD4 - - arm_func_start ov60_02228B58 -ov60_02228B58: ; 0x02228B58 - stmfd sp!, {r3, lr} - mov ip, #0 - cmp r1, #0 - mov lr, ip - sub r1, r1, #1 - beq _02228BB8 - mov r2, #0xa -_02228B74: - ldrsb r3, [r0] - cmp r3, #0x20 - beq _02228BA8 - cmp r3, #0x30 - blt _02228BA8 - cmp r3, #0x39 - bgt _02228BA8 - mla r3, lr, r2, r3 - add ip, ip, #1 - cmp ip, #9 - sub lr, r3, #0x30 - mvngt r0, #0 - ldmgtia sp!, {r3, pc} -_02228BA8: - cmp r1, #0 - add r0, r0, #1 - sub r1, r1, #1 - bne _02228B74 -_02228BB8: - cmp ip, #0 - mvneq lr, #0 - mov r0, lr - ldmia sp!, {r3, pc} - arm_func_end ov60_02228B58 - - arm_func_start ov60_02228BC8 -ov60_02228BC8: ; 0x02228BC8 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - cmp r1, r3 - mvnlt r0, #0 - ldmltia sp!, {r4, r5, r6, r7, r8, pc} - sub r1, r1, r3 - add r8, r1, #1 - cmp r8, #0 - mov r4, #0 - ble _02228C44 - ldrsb r7, [r2] - mov lr, #1 -_02228BF4: - ldrsb r1, [r0, r4] - cmp r7, r1 - bne _02228C38 - mov r5, lr - cmp r3, #1 - add r6, r0, r4 - ble _02228C2C -_02228C10: - ldrsb ip, [r6, r5] - ldrsb r1, [r2, r5] - cmp ip, r1 - bne _02228C2C - add r5, r5, #1 - cmp r5, r3 - blt _02228C10 -_02228C2C: - cmp r5, r3 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} -_02228C38: - add r4, r4, #1 - cmp r4, r8 - blt _02228BF4 -_02228C44: - mvn r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end ov60_02228BC8 - - .rodata - - - .global Unk_ov60_02228E00 -Unk_ov60_02228E00: ; 0x02228E00 - .incbin "incbin/nhttp_token.bin", 0x0, 0x24 - diff --git a/subprojects/NitroDWC/libraries/nhttp/meson.build b/subprojects/NitroDWC/libraries/nhttp/meson.build deleted file mode 100644 index 9bb020b6b5..0000000000 --- a/subprojects/NitroDWC/libraries/nhttp/meson.build +++ /dev/null @@ -1,23 +0,0 @@ -libdwcnhttp_srcs = files( - 'asm/nhttp_bgnend.s', - 'asm/nhttp_control.s', - 'asm/nhttp_list.s', - 'asm/nhttp_os_nitro.s', - 'asm/nhttp_recvbuf.s', - 'asm/nhttp_request.s', - 'asm/nhttp_resolve_nitro.s', - 'asm/nhttp_response.s', - 'asm/nhttp_socket_nitro.s', - 'asm/nhttp_stdlib_nitro.s', - 'asm/nhttp_thread.s', - 'asm/nhttp_token.s' -) - -libdwcnhttp = static_library('dwcnhttp', - sources: libdwcnhttp_srcs, - nasm_args: asm_args, - include_directories: public_includes, - pic: false -) - -nitrodwc_libs += libdwcnhttp diff --git a/subprojects/NitroDWC/libraries/util/asm/anime.s b/subprojects/NitroDWC/libraries/util/asm/anime.s deleted file mode 100644 index 44e98e5151..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/anime.s +++ /dev/null @@ -1,157 +0,0 @@ - .include "macros/function.inc" - .include "include/anime.inc" - - - - .text - - - arm_func_start ov18_0222AD34 -ov18_0222AD34: ; 0x0222AD34 - stmfd sp!, {r4, r5, r6, lr} - mov r4, r0 - mov r0, #0xc - mov r1, #4 - bl ov18_02245068 - ldr r2, _0222ADF4 ; =0x02253244 - mov r1, #0x47 - str r0, [r2, #0] - strb r4, [r0, #8] - mov r0, #0 - bl ov18_02243F60 - ldr lr, _0222ADF4 ; =0x02253244 - ldr r1, _0222ADF8 ; =0x02248C8C - ldr r2, [lr] - ldrb r4, [r1, r4] - str r0, [r2, #4] - ldr r0, [lr] - ldr ip, _0222ADFC ; =0xFE00FF00 - ldr r5, [r0, #4] - ldr r1, _0222AE00 ; =ov18_0222AE40 - ldrh r3, [r5, #4] - mov r0, #1 - mov r2, #0 - bic r3, r3, #0xc00 - orr r3, r3, #0x400 - strh r3, [r5, #4] - ldr r5, [lr] - mov r3, #0x78 - ldr r6, [r5, #4] - ldr r5, [r6, #0] - bic r5, r5, #0xc00 - str r5, [r6, #0] - ldrh r5, [r6, #4] - bic r5, r5, #0xf000 - orr r4, r5, r4, lsl #12 - strh r4, [r6, #4] - ldr r4, [lr] - ldr r4, [r4, #4] - ldr lr, [r4] - and ip, lr, ip - orr ip, ip, #0x8b - orr ip, ip, #0xe60000 - str ip, [r4] - bl ov18_02246304 - ldr r1, _0222ADF4 ; =0x02253244 - ldr r1, [r1, #0] - str r0, [r1, #0] - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_0222ADF4: .word Unk_ov18_02253244 -_0222ADF8: .word Unk_ov18_02248C8C -_0222ADFC: .word 0xFE00FF00 -_0222AE00: .word ov18_0222AE40 - arm_func_end ov18_0222AD34 - - arm_func_start ov18_0222AE04 -ov18_0222AE04: ; 0x0222AE04 - stmfd sp!, {r3, lr} - ldr r1, _0222AE38 ; =0x02253244 - mov r0, #1 - ldr r1, [r1, #0] - ldr r1, [r1, #0] - bl ov18_022463CC - ldr r0, _0222AE38 ; =0x02253244 - ldr r0, [r0, #0] - ldr r0, [r0, #4] - bl ov18_02245B74 - ldr r0, _0222AE3C ; =0x02253244 - bl ov18_0224508C - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222AE38: .word Unk_ov18_02253244 -_0222AE3C: .word Unk_ov18_02253244 - arm_func_end ov18_0222AE04 - - arm_func_start ov18_0222AE40 -ov18_0222AE40: ; 0x0222AE40 - stmfd sp!, {r3, lr} - ldr r0, _0222AF00 ; =0x02253244 - mov r1, #0x28 - ldr r0, [r0, #0] - ldrb r0, [r0, #9] - add r0, r0, #1 - bl FX_ModS32 - ldr r2, _0222AF00 ; =0x02253244 - mov r1, #5 - ldr r3, [r2, #0] - strb r0, [r3, #9] - ldr r0, [r2, #0] - ldrb r0, [r0, #9] - bl FX_DivS32 - ldr r2, _0222AF00 ; =0x02253244 - add r1, r0, #0x47 - ldr r2, [r2, #0] - mov r0, #0 - ldr r2, [r2, #4] - bl ov18_02243ECC - ldr r1, _0222AF00 ; =0x02253244 - ldr ip, _0222AF04 ; =0x02248C8C - ldr r2, [r1, #0] - ldr r0, _0222AF08 ; =0xFE00FF00 - ldr r3, [r2, #4] - ldrh r2, [r3, #4] - bic r2, r2, #0xc00 - orr r2, r2, #0x400 - strh r2, [r3, #4] - ldr r2, [r1, #0] - ldrb lr, [r2, #8] - ldr r3, [r2, #4] - ldr r2, [r3, #0] - ldrb ip, [ip, lr] - bic r2, r2, #0xc00 - str r2, [r3, #0] - ldrh r2, [r3, #4] - bic r2, r2, #0xf000 - orr r2, r2, ip, lsl #12 - strh r2, [r3, #4] - ldr r1, [r1, #0] - ldr r2, [r1, #4] - ldr r1, [r2, #0] - and r0, r1, r0 - orr r0, r0, #0x8b - orr r0, r0, #0xe60000 - str r0, [r2, #0] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222AF00: .word Unk_ov18_02253244 -_0222AF04: .word Unk_ov18_02248C8C -_0222AF08: .word 0xFE00FF00 - arm_func_end ov18_0222AE40 - - .rodata - - - .global Unk_ov18_02248C8C -Unk_ov18_02248C8C: ; 0x02248C8C - .byte 0xE, 0x4, 0x5, 0x0 - - - - .bss - - - .global Unk_ov18_02253244 -Unk_ov18_02253244: ; 0x02253244 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/aoss.s b/subprojects/NitroDWC/libraries/util/asm/aoss.s deleted file mode 100644 index 81d91e5390..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/aoss.s +++ /dev/null @@ -1,4601 +0,0 @@ - .include "macros/function.inc" - .include "include/aoss.inc" - - .extern CPSMyIp - .extern Unk_ov18_02251B60 - .extern Unk_ov18_02251B6C - - .text - - - thumb_func_start ov18_022246C4 -ov18_022246C4: ; 0x022246C4 - push {r3, lr} - ldr r1, _022246D0 ; =0x02251B60 - ldr r1, [r1, #0] - blx r1 - pop {r3, pc} - nop -_022246D0: .word Unk_ov18_02251B60 - thumb_func_end ov18_022246C4 - - thumb_func_start ov18_022246D4 -ov18_022246D4: ; 0x022246D4 - push {r3, lr} - ldr r1, _022246E0 ; =0x02251B6C - ldr r1, [r1, #0] - blx r1 - pop {r3, pc} - nop -_022246E0: .word Unk_ov18_02251B6C - thumb_func_end ov18_022246D4 - - thumb_func_start ov18_022246E4 -ov18_022246E4: ; 0x022246E4 - push {r4, lr} - ldr r2, _022247B8 ; =0x00000106 - add r4, r0, #0 - ldrsh r0, [r4, r2] - cmp r0, #0 - beq _02224734 - mov r1, #0 - mvn r1, r1 - cmp r0, r1 - blt _02224734 - add r0, r2, #2 - ldrsh r0, [r4, r0] - cmp r0, r1 - blt _02224734 - add r0, r2, #4 - ldrsh r0, [r4, r0] - cmp r0, #0 - beq _02224734 - cmp r0, r1 - blt _02224734 - add r0, r2, #6 - ldrsh r0, [r4, r0] - cmp r0, r1 - blt _02224734 - add r0, r2, #0 - add r0, #8 - ldrsh r0, [r4, r0] - cmp r0, r1 - blt _02224734 - ldrh r1, [r4, #4] - cmp r1, #0 - beq _02224734 - sub r0, r2, #6 - cmp r1, r0 - bhi _02224734 - sub r0, r1, #1 - add r0, r4, r0 - ldrb r0, [r0, #6] - cmp r0, #0 - beq _0222473A -_02224734: - mov r1, #0 - mvn r1, r1 - b _0222473C -_0222473A: - mov r1, #0 -_0222473C: - ldr r0, _022247BC ; =0x02251B60 - ldr r0, [r0, #0] - cmp r0, #0 - beq _0222474C - ldr r0, _022247C0 ; =0x02251B6C - ldr r0, [r0, #0] - cmp r0, #0 - bne _02224750 -_0222474C: - mov r1, #0 - mvn r1, r1 -_02224750: - mov r0, #0 - mvn r0, r0 - cmp r1, r0 - bne _02224768 - ldr r0, _022247C4 ; =0x00000116 - mov r1, #0xf - strb r1, [r4, r0] - bl ov18_02225204 - mov r0, #0 - mvn r0, r0 - pop {r4, pc} -_02224768: - ldr r0, _022247C8 ; =0x000005F8 - bl ov18_022246C4 - ldr r1, _022247CC ; =0x02250D78 - cmp r0, #0 - str r0, [r1, #0x14] - bne _02224786 - ldr r0, _022247C4 ; =0x00000116 - mov r1, #0xf - strb r1, [r4, r0] - bl ov18_02225204 - mov r0, #0 - mvn r0, r0 - pop {r4, pc} -_02224786: - mov r0, #0 - mvn r0, r0 - bl ov18_022255AC - add r0, r4, #0 - bl ov18_022247D4 - add r4, r0, #0 - ldr r0, _022247CC ; =0x02250D78 - ldr r0, [r0, #0x14] - bl ov18_022246D4 - bl ov18_02225204 - ldr r0, _022247D0 ; =0x02249794 - mov r1, #0 - ldr r0, [r0, #0] - mvn r1, r1 - cmp r0, r1 - beq _022247B2 - bl ov18_022267F0 -_022247B2: - add r0, r4, #0 - pop {r4, pc} - nop -_022247B8: .word 0x00000106 -_022247BC: .word Unk_ov18_02251B60 -_022247C0: .word Unk_ov18_02251B6C -_022247C4: .word 0x00000116 -_022247C8: .word 0x000005F8 -_022247CC: .word Unk_ov18_02250D78 -_022247D0: .word Unk_ov18_02249794 - thumb_func_end ov18_022246E4 - - thumb_func_start ov18_022247D4 -ov18_022247D4: ; 0x022247D4 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0xc8 - ldr r1, _02224B28 ; =0x02246458 - str r0, [sp, #8] - ldrh r2, [r1] - ldrh r1, [r1, #2] - add r0, sp, #0x2c - strh r2, [r0, #0x30] - strh r1, [r0, #0x32] - mov r0, #0 - add r1, sp, #0x58 - strh r0, [r1] - str r0, [sp, #0x24] - strh r0, [r1, #2] - mov r0, #1 - str r0, [sp, #0x54] - ldr r0, [sp, #0x24] - ldr r1, [sp, #0x24] - str r0, [sp, #0x50] - str r0, [sp, #0x1c] - add r0, sp, #0xb0 - mov r2, #0x18 - bl ov18_02226754 - ldr r1, _02224B2C ; =0x00000106 - ldr r0, [sp, #8] - ldrsh r0, [r0, r1] - add r1, sp, #0x2c - strh r0, [r1, #0x30] - mov r0, #0x30 - ldrsh r2, [r1, r0] - sub r0, #0x31 - cmp r2, r0 - bne _0222481C - mov r0, #0xa - strh r0, [r1, #0x30] -_0222481C: - ldr r1, _02224B30 ; =0x0000010A - ldr r0, [sp, #8] - ldrsh r0, [r0, r1] - add r1, sp, #0x2c - strh r0, [r1, #0x2c] - mov r0, #0x2c - ldrsh r2, [r1, r0] - sub r0, #0x2d - cmp r2, r0 - bne _02224834 - mov r0, #0xa - strh r0, [r1, #0x2c] -_02224834: - mov r1, #0x42 - ldr r0, [sp, #8] - lsl r1, r1, #2 - ldrsh r0, [r0, r1] - add r1, sp, #0x2c - strh r0, [r1, #0x32] - mov r0, #0x32 - ldrsh r2, [r1, r0] - sub r0, #0x33 - cmp r2, r0 - bne _0222484E - mov r0, #0x64 - strh r0, [r1, #0x32] -_0222484E: - mov r1, #0x43 - ldr r0, [sp, #8] - lsl r1, r1, #2 - ldrsh r0, [r0, r1] - add r1, sp, #0x2c - strh r0, [r1, #0x2e] - mov r0, #0x2e - ldrsh r2, [r1, r0] - sub r0, #0x2f - cmp r2, r0 - bne _02224868 - mov r0, #0x64 - strh r0, [r1, #0x2e] -_02224868: - ldr r1, _02224B34 ; =0x0000010E - ldr r0, [sp, #8] - ldrsh r0, [r0, r1] - mov r1, #0 - mvn r1, r1 - str r0, [sp, #0xc] - cmp r0, r1 - bne _0222487E - mov r0, #0x7d - lsl r0, r0, #4 - str r0, [sp, #0xc] -_0222487E: - ldr r0, [sp, #8] - bl ov18_02225230 - ldr r0, _02224B38 ; =0x02250D78 - ldr r1, [r0, #0x2c] - mov r0, #1 - and r0, r1 - cmp r0, #1 - beq _022248AA - mov r0, #0x13 - bl ov18_02225288 - ldr r1, _02224B3C ; =0x00000116 - ldr r0, [sp, #8] - mov r2, #0xf - strb r2, [r0, r1] - bl ov18_02225204 - mov r0, #0 - add sp, #0xc8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_022248AA: - mov r4, #0 - add r0, r4, #0 - bl ov18_022255AC - add r1, sp, #0x2c - mov r0, #0x32 - ldrsh r6, [r1, r0] - mov r0, #0x30 - ldrsh r7, [r1, r0] - ldr r5, _02224B38 ; =0x02250D78 -_022248BE: - ldr r0, [r5, #4] - cmp r0, #0 - beq _022248CC - bl ov18_022246D4 - mov r0, #0 - str r0, [r5, #4] -_022248CC: - ldr r0, _02224B40 ; =0x02250D7C - bl ov18_02226B8C - mov r1, #0 - mvn r1, r1 - cmp r0, r1 - bne _022248EE - ldr r1, _02224B3C ; =0x00000116 - ldr r0, [sp, #8] - mov r2, #0xf - strb r2, [r0, r1] - bl ov18_02225204 - mov r0, #0 - add sp, #0xc8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_022248EE: - ldr r0, [r5, #4] - bl ov18_022254BC - cmp r0, #4 - bne _0222490C - ldr r1, _02224B3C ; =0x00000116 - ldr r0, [sp, #8] - mov r2, #2 - strb r2, [r0, r1] - bl ov18_02225204 - mov r0, #0 - add sp, #0xc8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_0222490C: - cmp r0, #0 - beq _02224936 - cmp r4, r7 - blt _02224928 - ldr r1, _02224B3C ; =0x00000116 - ldr r0, [sp, #8] - mov r2, #1 - strb r2, [r0, r1] - bl ov18_02225204 - mov r0, #0 - add sp, #0xc8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02224928: - add r0, r6, #0 - bl ov18_02226ED4 - add r0, r4, #1 - lsl r0, r0, #0x10 - asr r4, r0, #0x10 - b _022248BE -_02224936: - mov r0, #1 - bl ov18_022255AC - add r0, sp, #0x74 - mov r1, #0 - mov r2, #0x3c - bl ov18_02226754 - add r0, sp, #0x74 - bl ov18_02225538 - cmp r0, #0 - beq _02224964 - ldr r1, _02224B3C ; =0x00000116 - ldr r0, [sp, #8] - mov r2, #0xf - strb r2, [r0, r1] - bl ov18_02225204 - mov r0, #0 - add sp, #0xc8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02224964: - mov r0, #0x58 - bl ov18_022246C4 - ldr r1, _02224B38 ; =0x02250D78 - cmp r0, #0 - str r0, [r1, #0xc] - bne _02224986 - ldr r1, _02224B3C ; =0x00000116 - ldr r0, [sp, #8] - mov r2, #0xf - strb r2, [r0, r1] - bl ov18_02225204 - mov r0, #0 - add sp, #0xc8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02224986: - mov r1, #0 - mov r2, #0x58 - bl ov18_02226754 - add r1, sp, #0x2c - mov r0, #0x30 - ldrsh r5, [r1, r0] - mov r4, #0 - cmp r5, #0 - ble _022249DE - ldr r7, _02224B38 ; =0x02250D78 -_0222499C: - ldr r1, [r7, #0xc] - add r0, sp, #0x74 - bl ov18_02226D04 - mov r1, #0 - mvn r1, r1 - cmp r0, r1 - bne _022249C0 - ldr r1, _02224B3C ; =0x00000116 - ldr r0, [sp, #8] - mov r2, #0xf - strb r2, [r0, r1] - bl ov18_02225204 - mov r0, #0 - add sp, #0xc8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_022249C0: - cmp r0, #0 - bne _022249CE - bne _022249DE - ldr r0, [r7, #0xc] - ldr r0, [r0, #0] - cmp r0, #1 - beq _022249DE -_022249CE: - add r0, r6, #0 - bl ov18_02226ED4 - add r0, r4, #1 - lsl r0, r0, #0x10 - asr r4, r0, #0x10 - cmp r4, r5 - blt _0222499C -_022249DE: - add r0, sp, #0x2c - mov r1, #0x30 - ldrsh r0, [r0, r1] - cmp r4, r0 - bne _022249FC - ldr r0, [sp, #8] - mov r2, #0xf - add r1, #0xe6 - strb r2, [r0, r1] - bl ov18_02225204 - mov r0, #0 - add sp, #0xc8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_022249FC: - ldr r0, _02224B44 ; =0xC0A80B65 - mov r1, #0xff - mvn r1, r1 - add r2, r0, #0 - bl ov18_022266A8 - cmp r0, #0 - beq _02224A26 - mov r0, #0xc - bl ov18_02225288 - ldr r1, _02224B3C ; =0x00000116 - ldr r0, [sp, #8] - mov r2, #0xf - strb r2, [r0, r1] - bl ov18_02225204 - mov r0, #0 - add sp, #0xc8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02224A26: - bl ov18_02225204 - mov r3, #0x11 - ldr r2, [sp, #8] - lsl r3, r3, #4 - mov r0, #3 - add r1, sp, #0xb0 - add r2, r2, r3 - bl ov18_0222557C - mov r0, #2 - add r1, r0, #0 - mov r2, #0 - bl ov18_022267DC - ldr r1, _02224B48 ; =0x02249794 - cmp r0, #0 - str r0, [r1, #0] - bge _02224A60 - ldr r1, _02224B3C ; =0x00000116 - ldr r0, [sp, #8] - mov r2, #0xf - strb r2, [r0, r1] - bl ov18_02225204 - mov r0, #0 - add sp, #0xc8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02224A60: - mov r1, #4 - str r1, [sp] - ldr r1, _02224B4C ; =0x0000FFFF - mov r2, #1 - add r3, sp, #0x54 - bl ov18_022267D8 - cmp r0, #0 - bge _02224A8C - mov r0, #0xb - bl ov18_02225288 - ldr r1, _02224B3C ; =0x00000116 - ldr r0, [sp, #8] - mov r2, #0xf - strb r2, [r0, r1] - bl ov18_02225204 - mov r0, #0 - add sp, #0xc8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02224A8C: - add r0, sp, #0x2c - mov r1, #0 - mov r2, #8 - bl ov18_02226754 - mov r1, #2 - add r0, sp, #0x2c - strb r1, [r0, #1] - ldr r0, _02224B44 ; =0xC0A80B65 - bl ov18_022267F8 - str r0, [sp, #0x30] - ldr r0, _02224B50 ; =0x00005790 - bl ov18_02226820 - add r1, sp, #0x2c - strh r0, [r1, #2] - ldr r0, _02224B48 ; =0x02249794 - add r1, sp, #0x2c - ldr r0, [r0, #0] - mov r2, #8 - bl ov18_022267E4 - cmp r0, #0 - bge _02224AD2 - ldr r1, _02224B3C ; =0x00000116 - ldr r0, [sp, #8] - mov r2, #0xf - strb r2, [r0, r1] - bl ov18_02225204 - mov r0, #0 - add sp, #0xc8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02224AD2: - ldr r0, _02224B38 ; =0x02250D78 - mov r1, #0 - ldr r0, [r0, #0x14] - mov r2, #0x14 - str r0, [sp, #0x18] - add r0, sp, #0x60 - bl ov18_02226754 - ldr r0, _02224B44 ; =0xC0A80B65 - mov r1, #0xfa - str r0, [sp, #0x70] - sub r0, #0x64 - str r0, [sp, #0x60] - ldr r0, [sp, #0xc] - lsl r1, r1, #2 - bl _s32_div_f - str r0, [sp, #0x14] - mov r1, #0xfa - ldr r0, [sp, #0xc] - lsl r1, r1, #2 - bl _s32_div_f - mov r0, #0xfa - lsl r0, r0, #2 - mul r0, r1 - str r0, [sp, #0x10] - mov r1, #0x30 - add r0, sp, #0x2c - ldrsh r7, [r0, r1] - ldr r5, _02224B38 ; =0x02250D78 -_02224B10: - ldr r0, [sp, #0x24] - cmp r0, #1 - bne _02224B20 - ldr r1, _02224B54 ; =0x02250D98 - mov r0, #0x1c - ldrsb r0, [r1, r0] - cmp r0, #1 - bne _02224B22 -_02224B20: - b _02224D9C -_02224B22: - ldr r0, _02224B48 ; =0x02249794 - b _02224B58 - nop -_02224B28: .word Unk_ov18_02246458 -_02224B2C: .word 0x00000106 -_02224B30: .word 0x0000010A -_02224B34: .word 0x0000010E -_02224B38: .word Unk_ov18_02250D78 -_02224B3C: .word 0x00000116 -_02224B40: .word Unk_ov18_02250D7C -_02224B44: .word 0xC0A80B65 -_02224B48: .word Unk_ov18_02249794 -_02224B4C: .word 0x0000FFFF -_02224B50: .word 0x00005790 -_02224B54: .word 0x02250D98 -_02224B58: - mov r1, #0 - ldr r0, [r0, #0] - mvn r1, r1 - cmp r0, r1 - beq _02224B66 - bl ov18_022267F0 -_02224B66: - mov r1, #0 - ldr r0, _02224E98 ; =0x02249794 - mvn r1, r1 - str r1, [r0, #0] - bl ov18_02226700 - cmp r0, #0 - beq _02224B8A - ldr r1, _02224E9C ; =0x00000116 - ldr r0, [sp, #8] - mov r2, #0xf - strb r2, [r0, r1] - bl ov18_02225204 - mov r0, #0 - add sp, #0xc8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02224B8A: - mov r0, #0x58 - bl ov18_022246C4 - str r0, [r5, #4] - cmp r0, #0 - bne _02224BAA - ldr r1, _02224E9C ; =0x00000116 - ldr r0, [sp, #8] - mov r2, #0xf - strb r2, [r0, r1] - bl ov18_02225204 - mov r0, #0 - add sp, #0xc8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02224BAA: - ldr r0, [r5, #4] - cmp r0, #0 - beq _02224BB8 - bl ov18_022246D4 - mov r0, #0 - str r0, [r5, #4] -_02224BB8: - ldr r0, _02224EA0 ; =0x02250D7C - bl ov18_02226B8C - mov r1, #0 - mvn r1, r1 - str r0, [sp, #0x28] - cmp r0, r1 - bne _02224BDC - ldr r1, _02224E9C ; =0x00000116 - ldr r0, [sp, #8] - mov r2, #0xf - strb r2, [r0, r1] - bl ov18_02225204 - mov r0, #0 - add sp, #0xc8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02224BDC: - ldr r0, [r5, #4] - bl ov18_022254BC - cmp r0, #4 - bne _02224BFA - ldr r1, _02224E9C ; =0x00000116 - ldr r0, [sp, #8] - mov r2, #2 - strb r2, [r0, r1] - bl ov18_02225204 - mov r0, #0 - add sp, #0xc8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02224BFA: - cmp r0, #0 - beq _02224C24 - cmp r4, r7 - blt _02224C16 - ldr r1, _02224E9C ; =0x00000116 - ldr r0, [sp, #8] - mov r2, #1 - strb r2, [r0, r1] - bl ov18_02225204 - mov r0, #0 - add sp, #0xc8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02224C16: - add r0, r6, #0 - bl ov18_02226ED4 - add r0, r4, #1 - lsl r0, r0, #0x10 - asr r4, r0, #0x10 - b _02224BAA -_02224C24: - mov r0, #0 - ldr r1, [sp, #0x28] - mvn r0, r0 - cmp r1, r0 - bne _02224C42 - ldr r1, _02224E9C ; =0x00000116 - ldr r0, [sp, #8] - mov r2, #0xf - strb r2, [r0, r1] - bl ov18_02225204 - mov r0, #0 - add sp, #0xc8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02224C42: - mov r0, #0x58 - bl ov18_022246C4 - str r0, [r5, #0xc] - cmp r0, #0 - bne _02224C62 - ldr r1, _02224E9C ; =0x00000116 - ldr r0, [sp, #8] - mov r2, #0xf - strb r2, [r0, r1] - bl ov18_02225204 - mov r0, #0 - add sp, #0xc8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02224C62: - mov r1, #0 - mov r2, #0x58 - bl ov18_02226754 - mov r4, #0 - cmp r7, #0 - ble _02224CB2 -_02224C70: - ldr r1, [r5, #0xc] - add r0, sp, #0x74 - bl ov18_02226D04 - mov r1, #0 - mvn r1, r1 - cmp r0, r1 - bne _02224C94 - ldr r1, _02224E9C ; =0x00000116 - ldr r0, [sp, #8] - mov r2, #0xf - strb r2, [r0, r1] - bl ov18_02225204 - mov r0, #0 - add sp, #0xc8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02224C94: - cmp r0, #0 - bne _02224CA2 - bne _02224CB2 - ldr r0, [r5, #0xc] - ldr r0, [r0, #0] - cmp r0, #1 - beq _02224CB2 -_02224CA2: - add r0, r6, #0 - bl ov18_02226ED4 - add r0, r4, #1 - lsl r0, r0, #0x10 - asr r4, r0, #0x10 - cmp r4, r7 - blt _02224C70 -_02224CB2: - cmp r4, r7 - bne _02224CCA - ldr r1, _02224E9C ; =0x00000116 - ldr r0, [sp, #8] - mov r2, #0xf - strb r2, [r0, r1] - bl ov18_02225204 - mov r0, #0 - add sp, #0xc8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02224CCA: - ldr r0, [r5, #0x34] - ldr r1, [r5, #0x38] - bl ov18_022251EC - ldr r1, [r5, #0x38] - add r2, r0, #0 - str r0, [sp, #0x1c] - bl ov18_022266A8 - cmp r0, #0 - beq _02224CFA - mov r0, #0xc - bl ov18_02225288 - ldr r1, _02224E9C ; =0x00000116 - ldr r0, [sp, #8] - mov r2, #0xf - strb r2, [r0, r1] - bl ov18_02225204 - mov r0, #0 - add sp, #0xc8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02224CFA: - ldr r0, _02224EA4 ; =0x02250D98 - mov r1, #1 - strb r1, [r0, #0x1c] - bl ov18_02225204 - mov r0, #2 - add r1, r0, #0 - mov r2, #0 - bl ov18_022267DC - ldr r1, _02224E98 ; =0x02249794 - cmp r0, #0 - str r0, [r1, #0] - bge _02224D2A - ldr r1, _02224E9C ; =0x00000116 - ldr r0, [sp, #8] - mov r2, #0xf - strb r2, [r0, r1] - bl ov18_02225204 - mov r0, #0 - add sp, #0xc8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02224D2A: - mov r1, #4 - str r1, [sp] - ldr r1, _02224EA8 ; =0x0000FFFF - mov r2, #1 - add r3, sp, #0x54 - bl ov18_022267D8 - cmp r0, #0 - bge _02224D56 - mov r0, #0xb - bl ov18_02225288 - ldr r1, _02224E9C ; =0x00000116 - ldr r0, [sp, #8] - mov r2, #0xf - strb r2, [r0, r1] - bl ov18_02225204 - mov r0, #0 - add sp, #0xc8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02224D56: - add r0, sp, #0x2c - mov r1, #0 - mov r2, #8 - bl ov18_02226754 - mov r1, #2 - add r0, sp, #0x2c - strb r1, [r0, #1] - ldr r0, [sp, #0x1c] - bl ov18_022267F8 - str r0, [sp, #0x30] - ldr r0, _02224EAC ; =0x00005790 - bl ov18_02226820 - add r1, sp, #0x2c - strh r0, [r1, #2] - ldr r0, _02224E98 ; =0x02249794 - add r1, sp, #0x2c - ldr r0, [r0, #0] - mov r2, #8 - bl ov18_022267E4 - cmp r0, #0 - bge _02224D9C - ldr r1, _02224E9C ; =0x00000116 - ldr r0, [sp, #8] - mov r2, #0xf - strb r2, [r0, r1] - bl ov18_02225204 - mov r0, #0 - add sp, #0xc8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02224D9C: - ldr r3, _02224E98 ; =0x02249794 - ldr r0, [sp, #0x24] - ldr r3, [r3, #0] - add r1, sp, #0x60 - add r2, sp, #0xb0 - bl ov18_02225E90 - mov r1, #0 - mvn r1, r1 - cmp r0, r1 - bne _02224DD2 - mov r1, #1 - ldr r0, [sp, #0x24] - lsl r1, r1, #0xc - add r0, r0, r1 - bl ov18_02225288 - ldr r1, _02224E9C ; =0x00000116 - ldr r0, [sp, #8] - mov r2, #0xf - strb r2, [r0, r1] - bl ov18_02225204 - mov r0, #0 - add sp, #0xc8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02224DD2: - ldr r0, [sp, #0x18] - ldr r2, _02224EB0 ; =0x000005F8 - mov r1, #0 - bl ov18_02226754 - add r0, sp, #0x3c - bl ov18_022268FC - ldr r0, _02224E98 ; =0x02249794 - add r1, sp, #0x3c - ldr r0, [r0, #0] - bl ov18_02226908 - ldr r0, [sp, #0x14] - mov r2, #0 - str r0, [sp, #0x34] - ldr r0, [sp, #0x10] - add r1, sp, #0x3c - str r0, [sp, #0x38] - add r0, sp, #0x34 - str r0, [sp] - ldr r0, _02224E98 ; =0x02249794 - add r3, r2, #0 - ldr r0, [r0, #0] - add r0, r0, #1 - bl ov18_02226774 - cmp r0, #0 - bgt _02224E4C - ldr r0, [sp, #0x50] - add r1, sp, #0x2c - add r2, r0, #1 - str r2, [sp, #0x50] - mov r0, #0x2c - ldrsh r0, [r1, r0] - cmp r2, r0 - ble _02224E42 - ldr r0, [sp, #0x24] - cmp r0, #0 - bne _02224E2A - mov r0, #0xf - bl ov18_02225288 - b _02224E3C -_02224E2A: - cmp r0, #1 - bne _02224E36 - mov r0, #0x10 - bl ov18_02225288 - b _02224E3C -_02224E36: - mov r0, #0x11 - bl ov18_02225288 -_02224E3C: - mov r5, #0 - mvn r5, r5 - b _0222512A -_02224E42: - mov r0, #0x2e - ldrsh r0, [r1, r0] - bl ov18_02226ED4 - b _02224B10 -_02224E4C: - mov r0, #8 - str r0, [sp, #0x44] - add r0, sp, #0x48 - str r0, [sp] - add r0, sp, #0x44 - str r0, [sp, #4] - ldr r0, _02224E98 ; =0x02249794 - ldr r1, [sp, #0x18] - ldr r0, [r0, #0] - ldr r2, _02224EB4 ; =0x000005DC - add r1, #0xc - mov r3, #0 - bl ov18_02226760 - ldr r1, _02224E98 ; =0x02249794 - lsl r0, r0, #0x10 - ldr r2, [r1, #0] - ldr r1, [sp, #0x18] - lsr r0, r0, #0x10 - str r2, [r1, #0] - bl ov18_02226860 - ldr r1, [sp, #0x18] - add r2, sp, #0x50 - str r0, [r1, #4] - ldr r0, _02224E98 ; =0x02249794 - add r3, sp, #0xb0 - ldr r0, [r0, #0] - str r0, [sp] - ldr r0, [sp, #0x24] - bl ov18_022255D8 - str r0, [sp, #0x20] - cmp r0, #0x64 - bne _02224EB8 - mov r5, #0 - b _0222512A - nop -_02224E98: .word Unk_ov18_02249794 -_02224E9C: .word 0x00000116 -_02224EA0: .word Unk_ov18_02250D7C -_02224EA4: .word 0x02250D98 -_02224EA8: .word 0x0000FFFF -_02224EAC: .word 0x00005790 -_02224EB0: .word 0x000005F8 -_02224EB4: .word 0x000005DC -_02224EB8: - mov r5, #0 - mvn r5, r5 - cmp r0, r5 - bne _02224EC2 - b _0222512A -_02224EC2: - ldr r1, [sp, #0x24] - cmp r1, r0 - bne _02224ECA - b _022250EC -_02224ECA: - cmp r0, #2 - beq _02224ED0 - b _022250E6 -_02224ED0: - ldr r0, _022251D4 ; =0x02249794 - ldr r0, [r0, #0] - cmp r0, r5 - beq _02224EDC - bl ov18_022267F0 -_02224EDC: - mov r1, #0 - ldr r0, _022251D4 ; =0x02249794 - mvn r1, r1 - str r1, [r0, #0] - bl ov18_02226700 - cmp r0, #0 - beq _02224F00 - ldr r1, _022251D8 ; =0x00000116 - ldr r0, [sp, #8] - mov r2, #0xf - strb r2, [r0, r1] - bl ov18_02225204 - mov r0, #0 - add sp, #0xc8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02224F00: - mov r0, #4 - mov r4, #0 - bl ov18_022255AC - add r1, sp, #0x2c - mov r0, #0x30 - ldrsh r7, [r1, r0] - ldr r5, _022251DC ; =0x02250D78 -_02224F10: - ldr r0, [r5, #4] - cmp r0, #0 - beq _02224F1E - bl ov18_022246D4 - mov r0, #0 - str r0, [r5, #4] -_02224F1E: - ldr r0, _022251E0 ; =0x02250D7C - bl ov18_02226B8C - mov r1, #0 - mvn r1, r1 - cmp r0, r1 - bne _02224F40 - ldr r1, _022251D8 ; =0x00000116 - ldr r0, [sp, #8] - mov r2, #0xf - strb r2, [r0, r1] - bl ov18_02225204 - mov r0, #0 - add sp, #0xc8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02224F40: - ldr r0, [r5, #4] - bl ov18_022254BC - cmp r0, #4 - bne _02224F5E - ldr r1, _022251D8 ; =0x00000116 - ldr r0, [sp, #8] - mov r2, #2 - strb r2, [r0, r1] - bl ov18_02225204 - mov r0, #0 - add sp, #0xc8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02224F5E: - cmp r0, #0 - beq _02224F88 - cmp r4, r7 - blt _02224F7A - ldr r1, _022251D8 ; =0x00000116 - ldr r0, [sp, #8] - mov r2, #1 - strb r2, [r0, r1] - bl ov18_02225204 - mov r0, #0 - add sp, #0xc8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02224F7A: - add r0, r6, #0 - bl ov18_02226ED4 - add r0, r4, #1 - lsl r0, r0, #0x10 - asr r4, r0, #0x10 - b _02224F10 -_02224F88: - mov r0, #0x58 - bl ov18_022246C4 - ldr r1, _022251DC ; =0x02250D78 - cmp r0, #0 - str r0, [r1, #0xc] - bne _02224FAA - ldr r1, _022251D8 ; =0x00000116 - ldr r0, [sp, #8] - mov r2, #0xf - strb r2, [r0, r1] - bl ov18_02225204 - mov r0, #0 - add sp, #0xc8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02224FAA: - mov r1, #0 - mov r2, #0x58 - bl ov18_02226754 - add r1, sp, #0x2c - mov r0, #0x30 - ldrsh r5, [r1, r0] - mov r4, #0 - cmp r5, #0 - ble _02225002 - ldr r7, _022251DC ; =0x02250D78 -_02224FC0: - ldr r1, [r7, #0xc] - add r0, sp, #0x74 - bl ov18_02226D04 - mov r1, #0 - mvn r1, r1 - cmp r0, r1 - bne _02224FE4 - ldr r1, _022251D8 ; =0x00000116 - ldr r0, [sp, #8] - mov r2, #0xf - strb r2, [r0, r1] - bl ov18_02225204 - mov r0, #0 - add sp, #0xc8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02224FE4: - cmp r0, #0 - bne _02224FF2 - bne _02225002 - ldr r0, [r7, #0xc] - ldr r0, [r0, #0] - cmp r0, #1 - beq _02225002 -_02224FF2: - add r0, r6, #0 - bl ov18_02226ED4 - add r0, r4, #1 - lsl r0, r0, #0x10 - asr r4, r0, #0x10 - cmp r4, r5 - blt _02224FC0 -_02225002: - add r0, sp, #0x2c - mov r1, #0x30 - ldrsh r0, [r0, r1] - cmp r4, r0 - bne _02225020 - ldr r0, [sp, #8] - mov r2, #0xf - add r1, #0xe6 - strb r2, [r0, r1] - bl ov18_02225204 - mov r0, #0 - add sp, #0xc8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02225020: - ldr r1, _022251DC ; =0x02250D78 - ldr r0, [sp, #0x1c] - ldr r1, [r1, #0x38] - add r2, r0, #0 - bl ov18_022266A8 - cmp r0, #0 - beq _0222504A - mov r0, #0xc - bl ov18_02225288 - ldr r1, _022251D8 ; =0x00000116 - ldr r0, [sp, #8] - mov r2, #0xf - strb r2, [r0, r1] - bl ov18_02225204 - mov r0, #0 - add sp, #0xc8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_0222504A: - bl ov18_02225204 - mov r0, #2 - add r1, r0, #0 - mov r2, #0 - bl ov18_022267DC - ldr r1, _022251D4 ; =0x02249794 - cmp r0, #0 - str r0, [r1, #0] - bge _02225074 - ldr r1, _022251D8 ; =0x00000116 - ldr r0, [sp, #8] - mov r2, #0xf - strb r2, [r0, r1] - bl ov18_02225204 - mov r0, #0 - add sp, #0xc8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02225074: - mov r1, #4 - str r1, [sp] - ldr r1, _022251E4 ; =0x0000FFFF - mov r2, #1 - add r3, sp, #0x54 - bl ov18_022267D8 - cmp r0, #0 - bge _022250A0 - mov r0, #0xb - bl ov18_02225288 - ldr r1, _022251D8 ; =0x00000116 - ldr r0, [sp, #8] - mov r2, #0xf - strb r2, [r0, r1] - bl ov18_02225204 - mov r0, #0 - add sp, #0xc8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_022250A0: - add r0, sp, #0x2c - mov r1, #0 - mov r2, #8 - bl ov18_02226754 - mov r1, #2 - add r0, sp, #0x2c - strb r1, [r0, #1] - ldr r0, [sp, #0x1c] - bl ov18_022267F8 - str r0, [sp, #0x30] - ldr r0, _022251E8 ; =0x00005790 - bl ov18_02226820 - add r1, sp, #0x2c - strh r0, [r1, #2] - ldr r0, _022251D4 ; =0x02249794 - add r1, sp, #0x2c - ldr r0, [r0, #0] - mov r2, #8 - bl ov18_022267E4 - cmp r0, #0 - bge _022250E6 - ldr r1, _022251D8 ; =0x00000116 - ldr r0, [sp, #8] - mov r2, #0xf - strb r2, [r0, r1] - bl ov18_02225204 - mov r0, #0 - add sp, #0xc8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_022250E6: - ldr r0, [sp, #0x20] - str r0, [sp, #0x24] - b _02224AD2 -_022250EC: - str r0, [sp, #0x24] - add r1, sp, #0x2c - mov r0, #0x2c - ldrsh r0, [r1, r0] - ldr r2, [sp, #0x50] - cmp r2, r0 - ble _02225120 - ldr r0, [sp, #0x20] - cmp r0, #0 - bne _02225108 - mov r0, #0xf - bl ov18_02225288 - b _0222511A -_02225108: - cmp r0, #1 - bne _02225114 - mov r0, #0x10 - bl ov18_02225288 - b _0222511A -_02225114: - mov r0, #0x11 - bl ov18_02225288 -_0222511A: - mov r5, #0 - mvn r5, r5 - b _0222512A -_02225120: - mov r0, #0x2e - ldrsh r0, [r1, r0] - bl ov18_02226ED4 - b _02224AD2 -_0222512A: - ldr r0, _022251D4 ; =0x02249794 - mov r1, #0 - ldr r0, [r0, #0] - mvn r1, r1 - cmp r0, r1 - beq _0222513A - bl ov18_022267F0 -_0222513A: - mov r1, #0 - ldr r0, _022251D4 ; =0x02249794 - mvn r1, r1 - str r1, [r0, #0] - bl ov18_02226700 - cmp r0, #0 - beq _0222515E - ldr r1, _022251D8 ; =0x00000116 - ldr r0, [sp, #8] - mov r2, #0xf - strb r2, [r0, r1] - bl ov18_02225204 - mov r0, #0 - add sp, #0xc8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_0222515E: - cmp r5, #0 - beq _022251AE - bl ov18_02225294 - sub r0, #0xf - cmp r0, #6 - bhi _0222519A - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02225178: ; jump table - .short _02225186 - _02225178 - 2 ; case 0 - .short _0222518A - _02225178 - 2 ; case 1 - .short _0222518E - _02225178 - 2 ; case 2 - .short _0222519A - _02225178 - 2 ; case 3 - .short _0222519A - _02225178 - 2 ; case 4 - .short _02225192 - _02225178 - 2 ; case 5 - .short _02225196 - _02225178 - 2 ; case 6 -_02225186: - mov r2, #3 - b _0222519C -_0222518A: - mov r2, #4 - b _0222519C -_0222518E: - mov r2, #5 - b _0222519C -_02225192: - mov r2, #7 - b _0222519C -_02225196: - mov r2, #8 - b _0222519C -_0222519A: - mov r2, #0xf -_0222519C: - ldr r1, _022251D8 ; =0x00000116 - ldr r0, [sp, #8] - strb r2, [r0, r1] - bl ov18_02225204 - mov r0, #0 - add sp, #0xc8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_022251AE: - ldr r0, [sp, #8] - bl ov18_022252A0 - cmp r0, #0 - beq _022251CC - ldr r1, _022251D8 ; =0x00000116 - ldr r0, [sp, #8] - mov r2, #6 - strb r2, [r0, r1] - bl ov18_02225204 - mov r0, #0 - add sp, #0xc8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_022251CC: - mov r0, #0 - add sp, #0xc8 - pop {r3, r4, r5, r6, r7, pc} - nop -_022251D4: .word Unk_ov18_02249794 -_022251D8: .word 0x00000116 -_022251DC: .word Unk_ov18_02250D78 -_022251E0: .word Unk_ov18_02250D7C -_022251E4: .word 0x0000FFFF -_022251E8: .word 0x00005790 - thumb_func_end ov18_022247D4 - - thumb_func_start ov18_022251EC -ov18_022251EC: ; 0x022251EC - add r2, r0, #0 - and r2, r1 - mvn r1, r1 - and r0, r1 - add r0, r0, #1 - orr r0, r2 - orr r1, r2 - cmp r0, r1 - blo _02225202 - mov r0, #1 - orr r0, r2 -_02225202: - bx lr - thumb_func_end ov18_022251EC - - thumb_func_start ov18_02225204 -ov18_02225204: ; 0x02225204 - push {r3, lr} - ldr r0, _0222522C ; =0x02250D78 - ldr r0, [r0, #0xc] - cmp r0, #0 - beq _02225218 - bl ov18_022246D4 - ldr r0, _0222522C ; =0x02250D78 - mov r1, #0 - str r1, [r0, #0xc] -_02225218: - ldr r0, _0222522C ; =0x02250D78 - ldr r0, [r0, #4] - cmp r0, #0 - beq _0222522A - bl ov18_022246D4 - ldr r0, _0222522C ; =0x02250D78 - mov r1, #0 - str r1, [r0, #4] -_0222522A: - pop {r3, pc} - ; .align 2, 0 -_0222522C: .word Unk_ov18_02250D78 - thumb_func_end ov18_02225204 - - thumb_func_start ov18_02225230 -ov18_02225230: ; 0x02225230 - push {r4, lr} - add r4, r0, #0 - ldr r0, _02225274 ; =0x02251AD8 - mov r1, #0 - mov r2, #8 - bl ov18_02226754 - ldr r0, _02225278 ; =0x02250D78 - mov r1, #1 - str r1, [r0, #0x10] - ldr r0, _0222527C ; =0x02250D9C - mov r1, #0 - mov r2, #0x1c - bl ov18_02226754 - ldr r1, _02225278 ; =0x02250D78 - add r0, r4, #6 - str r0, [r1, #0x24] - ldrh r0, [r4, #4] - mov r3, #0 - str r0, [r1, #0x28] - ldrh r2, [r4] - mov r0, #0xf - and r0, r2 - str r0, [r1, #0x2c] - ldrb r2, [r4, #2] - ldr r0, _02225280 ; =0x02250D98 - strb r2, [r0, #0x1d] - ldr r2, _02225284 ; =0xC0A80B01 - str r3, [r1, #0x30] - str r2, [r1, #0x34] - strb r3, [r0, #0x1c] - pop {r4, pc} - nop -_02225274: .word Unk_ov18_02251AD8 -_02225278: .word Unk_ov18_02250D78 -_0222527C: .word Unk_ov18_02250D9C -_02225280: .word 0x02250D98 -_02225284: .word 0xC0A80B01 - thumb_func_end ov18_02225230 - - thumb_func_start ov18_02225288 -ov18_02225288: ; 0x02225288 - ldr r1, _02225290 ; =0x02250D78 - str r0, [r1, #0x10] - bx lr - nop -_02225290: .word Unk_ov18_02250D78 - thumb_func_end ov18_02225288 - - thumb_func_start ov18_02225294 -ov18_02225294: ; 0x02225294 - ldr r0, _0222529C ; =0x02250D78 - ldr r0, [r0, #0x10] - bx lr - nop -_0222529C: .word Unk_ov18_02250D78 - thumb_func_end ov18_02225294 - - thumb_func_start ov18_022252A0 -ov18_022252A0: ; 0x022252A0 - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - add r7, r0, #0 - ldr r0, _02225478 ; =0x022516A0 - ldr r2, _0222547C ; =0x00000117 - str r0, [sp, #4] - ldr r0, _02225480 ; =0x02251710 - add r4, r7, r2 - ldr r6, _02225484 ; =0x02251440 - ldr r5, _02225488 ; =0x02251570 - str r0, [sp] - bne _022252C0 - mov r0, #0 - add sp, #8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_022252C0: - ldr r1, _0222548C ; =0x02250D78 - add r2, #0x3d - ldr r0, [r1, #0x2c] - ldr r1, [r1, #0x30] - and r0, r1 - strh r0, [r7] - add r0, r4, #0 - mov r1, #0 - bl ov18_02226754 - ldrh r1, [r7] - mov r0, #1 - tst r0, r1 - beq _0222533E - add r1, r6, #0 - ldr r2, [r6, #4] - add r0, r4, #0 - add r1, #0x30 - bl ov18_02226744 - add r1, r6, #0 - ldr r2, [r6, #4] - add r0, r4, #6 - add r1, #0x70 - bl ov18_02226744 - add r0, r4, #0 - add r1, r6, #0 - ldr r2, [r6, #4] - add r0, #0xc - add r1, #0xb0 - bl ov18_02226744 - add r0, r4, #0 - add r1, r6, #0 - ldr r2, [r6, #4] - add r0, #0x12 - add r1, #0xf0 - bl ov18_02226744 - add r0, r6, #0 - add r0, #8 - bl ov18_02226878 - add r1, r0, #0 - add r0, r6, #0 - add r0, #8 - bl ov18_02225498 - cmp r0, #0 - beq _02225328 - b _02225464 -_02225328: - add r0, r6, #0 - add r0, #8 - bl ov18_02226878 - add r2, r0, #0 - add r0, r4, #0 - add r6, #8 - add r0, #0x18 - add r1, r6, #0 - bl ov18_02226744 -_0222533E: - ldrh r1, [r7] - mov r0, #2 - tst r0, r1 - beq _022253AA - add r0, r4, #0 - add r1, r5, #0 - ldr r2, [r5, #4] - add r0, #0x39 - add r1, #0x30 - bl ov18_02226744 - add r0, r4, #0 - add r1, r5, #0 - ldr r2, [r5, #4] - add r0, #0x47 - add r1, #0x70 - bl ov18_02226744 - add r0, r4, #0 - add r1, r5, #0 - ldr r2, [r5, #4] - add r0, #0x55 - add r1, #0xb0 - bl ov18_02226744 - add r0, r4, #0 - add r1, r5, #0 - ldr r2, [r5, #4] - add r0, #0x63 - add r1, #0xf0 - bl ov18_02226744 - add r0, r5, #0 - add r0, #8 - bl ov18_02226878 - add r1, r0, #0 - add r0, r5, #0 - add r0, #8 - bl ov18_02225498 - cmp r0, #0 - bne _02225464 - add r0, r5, #0 - add r0, #8 - bl ov18_02226878 - add r2, r0, #0 - add r0, r4, #0 - add r5, #8 - add r0, #0x71 - add r1, r5, #0 - bl ov18_02226744 -_022253AA: - ldrh r1, [r7] - mov r0, #4 - tst r0, r1 - beq _02225402 - ldr r1, [sp, #4] - ldr r0, [sp, #4] - ldr r1, [r1, #4] - add r0, #0x30 - sub r1, r1, #1 - bl ov18_02225498 - cmp r0, #0 - bne _02225464 - ldr r2, [sp, #4] - ldr r1, [sp, #4] - add r0, r4, #0 - ldr r2, [r2, #4] - add r0, #0x92 - add r1, #0x30 - bl ov18_02226744 - ldr r0, [sp, #4] - add r0, #8 - bl ov18_02226878 - add r1, r0, #0 - ldr r0, [sp, #4] - add r0, #8 - bl ov18_02225498 - cmp r0, #0 - bne _02225464 - ldr r0, [sp, #4] - add r0, #8 - bl ov18_02226878 - ldr r1, [sp, #4] - add r2, r0, #0 - add r0, r4, #0 - add r1, #8 - add r0, #0xd2 - str r1, [sp, #4] - bl ov18_02226744 -_02225402: - ldrh r1, [r7] - mov r0, #8 - tst r0, r1 - beq _0222545A - ldr r1, [sp] - ldr r0, [sp] - ldr r1, [r1, #4] - add r0, #0x30 - sub r1, r1, #1 - bl ov18_02225498 - cmp r0, #0 - bne _02225464 - ldr r2, [sp] - ldr r1, [sp] - add r0, r4, #0 - ldr r2, [r2, #4] - add r0, #0xf3 - add r1, #0x30 - bl ov18_02226744 - ldr r0, [sp] - add r0, #8 - bl ov18_02226878 - add r1, r0, #0 - ldr r0, [sp] - add r0, #8 - bl ov18_02225498 - cmp r0, #0 - bne _02225464 - ldr r0, [sp] - add r0, #8 - bl ov18_02226878 - add r2, r0, #0 - ldr r0, _02225490 ; =0x00000133 - ldr r1, [sp] - add r0, r4, r0 - add r1, #8 - str r1, [sp] - bl ov18_02226744 -_0222545A: - ldr r1, _02225494 ; =0x00000116 - mov r0, #0 - add sp, #8 - strb r0, [r7, r1] - pop {r3, r4, r5, r6, r7, pc} -_02225464: - mov r2, #0x55 - add r0, r4, #0 - mov r1, #0 - lsl r2, r2, #2 - bl ov18_02226754 - mov r0, #0 - mvn r0, r0 - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02225478: .word 0x022516A0 -_0222547C: .word 0x00000117 -_02225480: .word 0x02251710 -_02225484: .word 0x02251440 -_02225488: .word 0x02251570 -_0222548C: .word Unk_ov18_02250D78 -_02225490: .word 0x00000133 -_02225494: .word 0x00000116 - thumb_func_end ov18_022252A0 - - thumb_func_start ov18_02225498 -ov18_02225498: ; 0x02225498 - mov r3, #0 - cmp r1, #0 - ble _022254B6 -_0222549E: - ldrb r2, [r0] - add r0, r0, #1 - cmp r2, #0x20 - blo _022254AA - cmp r2, #0x7f - bls _022254B0 -_022254AA: - mov r0, #0 - mvn r0, r0 - bx lr -_022254B0: - add r3, r3, #1 - cmp r3, r1 - blt _0222549E -_022254B6: - mov r0, #0 - bx lr - ; .align 2, 0 - thumb_func_end ov18_02225498 - - thumb_func_start ov18_022254BC -ov18_022254BC: ; 0x022254BC - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - add r5, r0, #0 - ldr r0, [r5, #0] - mov r4, #0 - str r4, [sp, #4] - str r0, [sp] - cmp r0, #0 - bne _022254D4 - add sp, #8 - mov r0, #5 - pop {r3, r4, r5, r6, r7, pc} -_022254D4: - cmp r0, #0x40 - bls _022254DC - mov r0, #0x40 - str r0, [sp] -_022254DC: - ldr r0, [sp] - mov r7, #0 - cmp r0, #0 - ble _0222551E - add r6, r5, #0 - add r6, #8 -_022254E8: - ldr r1, [r5, #0x54] - mov r0, #1 - tst r0, r1 - beq _02225512 - ldr r0, _02225534 ; =0x022497F4 - bl ov18_02226878 - ldr r1, [r5, #4] - cmp r1, r0 - bne _02225512 - ldr r0, _02225534 ; =0x022497F4 - bl ov18_02226878 - add r2, r0, #0 - ldr r1, _02225534 ; =0x022497F4 - add r0, r6, #0 - bl ov18_02226724 - cmp r0, #0 - bne _02225512 - add r4, r4, #1 -_02225512: - ldr r0, [sp] - add r7, r7, #1 - add r5, #0x54 - add r6, #0x54 - cmp r7, r0 - blt _022254E8 -_0222551E: - cmp r4, #1 - ble _02225526 - mov r0, #4 - str r0, [sp, #4] -_02225526: - cmp r4, #0 - bne _0222552E - mov r0, #5 - str r0, [sp, #4] -_0222552E: - ldr r0, [sp, #4] - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02225534: .word Unk_ov18_022497F4 - thumb_func_end ov18_022254BC - - thumb_func_start ov18_02225538 -ov18_02225538: ; 0x02225538 - push {r4, lr} - add r4, r0, #0 - ldr r0, _02225574 ; =0x022497F4 - bl ov18_02226878 - str r0, [r4, #0] - ldr r1, _02225574 ; =0x022497F4 - ldr r2, [r4, #0] - add r0, r4, #4 - bl ov18_02226744 - mov r0, #1 - str r0, [r4, #0x24] - ldr r0, _02225578 ; =0x02249800 - bl ov18_02226878 - add r2, r0, #0 - str r0, [r4, #0x28] - cmp r2, #0xd - bls _02225566 - mov r0, #0 - mvn r0, r0 - pop {r4, pc} -_02225566: - add r4, #0x2c - ldr r1, _02225578 ; =0x02249800 - add r0, r4, #0 - bl ov18_02226744 - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 -_02225574: .word Unk_ov18_022497F4 -_02225578: .word Unk_ov18_02249800 - thumb_func_end ov18_02225538 - - thumb_func_start ov18_0222557C -ov18_0222557C: ; 0x0222557C - push {r3, r4, r5, r6, r7, lr} - add r6, r0, #0 - add r5, r1, #0 - add r7, r2, #0 - mov r4, #0 - cmp r6, #0 - ble _022255AA -_0222558A: - add r0, r5, #0 - add r1, r7, #0 - mov r2, #6 - bl ov18_02226744 - bl ov18_0222688C - strh r0, [r5, #6] - ldrh r0, [r5, #6] - bl ov18_02226820 - strh r0, [r5, #6] - add r4, r4, #1 - add r5, #8 - cmp r4, r6 - blt _0222558A -_022255AA: - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov18_0222557C - - thumb_func_start ov18_022255AC -ov18_022255AC: ; 0x022255AC - push {r3, lr} - mov r1, #0 - mvn r1, r1 - cmp r0, r1 - bne _022255BE - ldr r1, _022255D4 ; =0x02249794 - str r0, [r1, #4] - mov r0, #0 - pop {r3, pc} -_022255BE: - ldr r1, _022255D4 ; =0x02249794 - ldr r2, [r1, #4] - cmp r2, r0 - beq _022255CE - str r0, [r1, #4] - bl ov18_02226EDC - pop {r3, pc} -_022255CE: - mov r0, #0 - pop {r3, pc} - nop -_022255D4: .word Unk_ov18_02249794 - thumb_func_end ov18_022255AC - - thumb_func_start ov18_022255D8 -ov18_022255D8: ; 0x022255D8 - push {r3, r4, r5, r6, r7, lr} - add r6, r1, #0 - add r5, r0, #0 - ldrh r0, [r6, #0xc] - add r7, r6, #0 - add r4, r2, #0 - str r3, [sp] - add r7, #0xc - bl ov18_02226860 - cmp r0, #1 - bhs _022255FA - ldr r0, [r4, #0] - add r0, r0, #1 - str r0, [r4, #0] - add r0, r5, #0 - pop {r3, r4, r5, r6, r7, pc} -_022255FA: - ldrb r0, [r7, #0xf] - cmp r0, #0x11 - beq _0222560A - ldr r0, [r4, #0] - add r0, r0, #1 - str r0, [r4, #0] - add r0, r5, #0 - pop {r3, r4, r5, r6, r7, pc} -_0222560A: - add r0, r6, #0 - add r0, #0xc - bl ov18_022258D0 - cmp r0, #0 - ble _02225620 - ldr r0, [r4, #0] - add r0, r0, #1 - str r0, [r4, #0] - add r0, r5, #0 - pop {r3, r4, r5, r6, r7, pc} -_02225620: - ldrh r0, [r7, #6] - bl ov18_02226860 - ldr r1, _0222566C ; =0x00001010 - cmp r0, r1 - beq _0222563A - ldr r1, _02225670 ; =0x00002010 - cmp r0, r1 - beq _0222564A - ldr r1, _02225674 ; =0x00003010 - cmp r0, r1 - beq _0222565A - b _02225668 -_0222563A: - ldr r3, [sp] - add r0, r5, #0 - add r1, r6, #0 - add r2, r4, #0 - bl ov18_02225678 - add r5, r0, #0 - b _02225668 -_0222564A: - ldr r3, [sp] - add r0, r5, #0 - add r1, r6, #0 - add r2, r4, #0 - bl ov18_02225754 - add r5, r0, #0 - b _02225668 -_0222565A: - ldr r3, [sp] - add r0, r5, #0 - add r1, r6, #0 - add r2, r4, #0 - bl ov18_0222582C - add r5, r0, #0 -_02225668: - add r0, r5, #0 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_0222566C: .word 0x00001010 -_02225670: .word 0x00002010 -_02225674: .word 0x00003010 - thumb_func_end ov18_022255D8 - - thumb_func_start ov18_02225678 -ov18_02225678: ; 0x02225678 - push {r3, r4, r5, r6, r7, lr} - add r6, r0, #0 - add r5, r2, #0 - cmp r6, #0 - beq _0222568A - ldr r1, [r5, #0] - add r1, r1, #1 - str r1, [r5, #0] - pop {r3, r4, r5, r6, r7, pc} -_0222568A: - add r7, r1, #0 - add r7, #0xc - add r4, r1, #0 - add r1, r7, #0 - add r0, r3, #0 - add r1, #0x10 - add r4, #0x24 - bl ov18_02225A08 - cmp r0, #0 - bge _022256AA - ldr r0, [r5, #0] - add r0, r0, #1 - str r0, [r5, #0] - add r0, r6, #0 - pop {r3, r4, r5, r6, r7, pc} -_022256AA: - ldrh r0, [r4, #2] - bl ov18_02226860 - cmp r0, #0 - bne _022256BE - ldr r0, [r5, #0] - add r0, r0, #1 - str r0, [r5, #0] - add r0, r6, #0 - pop {r3, r4, r5, r6, r7, pc} -_022256BE: - ldrb r0, [r4] - cmp r0, #7 - bne _022256FC - ldr r0, [r4, #4] - bl ov18_02226838 - mov r1, #1 - mvn r1, r1 - cmp r0, r1 - bne _022256DA - mov r0, #0x14 - bl ov18_02225288 - b _022256F6 -_022256DA: - ldr r0, [r4, #4] - bl ov18_02226838 - mov r1, #2 - mvn r1, r1 - cmp r0, r1 - bne _022256F0 - mov r0, #0x15 - bl ov18_02225288 - b _022256F6 -_022256F0: - mov r0, #0x18 - bl ov18_02225288 -_022256F6: - mov r0, #0 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_022256FC: - cmp r0, #1 - beq _0222570A - ldr r0, [r5, #0] - add r0, r0, #1 - str r0, [r5, #0] - add r0, r6, #0 - pop {r3, r4, r5, r6, r7, pc} -_0222570A: - ldr r1, _0222574C ; =0x02250DB8 - add r0, r4, #4 - bl ov18_02225A54 - cmp r0, #0 - bge _02225734 - mov r1, #1 - mvn r1, r1 - cmp r0, r1 - bne _0222572A - mov r0, #0x16 - bl ov18_02225288 - mov r0, #0 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_0222572A: - ldr r0, [r5, #0] - add r0, r0, #1 - str r0, [r5, #0] - add r0, r6, #0 - pop {r3, r4, r5, r6, r7, pc} -_02225734: - ldrh r0, [r7, #0xc] - bl ov18_02226860 - bl ov18_02225E80 - ldr r1, _02225750 ; =0x02250D78 - str r0, [r1, #0] - mov r0, #0 - str r0, [r5, #0] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} - nop -_0222574C: .word Unk_ov18_02250DB8 -_02225750: .word Unk_ov18_02250D78 - thumb_func_end ov18_02225678 - - thumb_func_start ov18_02225754 -ov18_02225754: ; 0x02225754 - push {r3, r4, r5, r6, r7, lr} - add r6, r0, #0 - add r5, r2, #0 - cmp r6, #1 - beq _02225766 - ldr r1, [r5, #0] - add r1, r1, #1 - str r1, [r5, #0] - pop {r3, r4, r5, r6, r7, pc} -_02225766: - add r7, r1, #0 - add r7, #0xc - add r4, r1, #0 - add r3, #8 - add r1, r7, #0 - add r0, r3, #0 - add r1, #0x10 - add r4, #0x24 - bl ov18_02225A08 - cmp r0, #0 - bge _02225788 - ldr r0, [r5, #0] - add r0, r0, #1 - str r0, [r5, #0] - add r0, r6, #0 - pop {r3, r4, r5, r6, r7, pc} -_02225788: - ldrh r0, [r4, #2] - bl ov18_02226860 - cmp r0, #0 - bne _0222579C - ldr r0, [r5, #0] - add r0, r0, #1 - str r0, [r5, #0] - add r0, r6, #0 - pop {r3, r4, r5, r6, r7, pc} -_0222579C: - ldrb r0, [r4] - cmp r0, #7 - bne _022257DA - ldr r0, [r4, #4] - bl ov18_02226838 - mov r1, #1 - mvn r1, r1 - cmp r0, r1 - bne _022257B8 - mov r0, #0x14 - bl ov18_02225288 - b _022257D4 -_022257B8: - ldr r0, [r4, #4] - bl ov18_02226838 - mov r1, #2 - mvn r1, r1 - cmp r0, r1 - bne _022257CE - mov r0, #0x15 - bl ov18_02225288 - b _022257D4 -_022257CE: - mov r0, #0x18 - bl ov18_02225288 -_022257D4: - mov r0, #0 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_022257DA: - mov r2, #0x6a - ldr r0, _02225820 ; =0x02251438 - mov r1, #0 - lsl r2, r2, #4 - bl ov18_02226754 - ldrh r0, [r7, #0xa] - bl ov18_02226860 - add r2, r0, #0 - ldr r0, _02225824 ; =0x02250DB8 - ldr r3, _02225820 ; =0x02251438 - str r0, [sp] - mov r0, #0 - add r1, r4, #0 - bl ov18_02225D70 - cmp r0, #0 - bge _0222580A - ldr r0, [r5, #0] - add r0, r0, #1 - str r0, [r5, #0] - add r0, r6, #0 - pop {r3, r4, r5, r6, r7, pc} -_0222580A: - ldr r0, _02225828 ; =0x02250D78 - ldr r1, [r0, #0x30] - ldr r0, [r0, #0x2c] - tst r0, r1 - bne _02225818 - add r0, r6, #0 - pop {r3, r4, r5, r6, r7, pc} -_02225818: - mov r0, #0 - str r0, [r5, #0] - mov r0, #2 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02225820: .word Unk_ov18_02251438 -_02225824: .word Unk_ov18_02250DB8 -_02225828: .word Unk_ov18_02250D78 - thumb_func_end ov18_02225754 - - thumb_func_start ov18_0222582C -ov18_0222582C: ; 0x0222582C - push {r4, r5, r6, lr} - add r6, r0, #0 - add r5, r2, #0 - cmp r6, #2 - beq _0222583E - ldr r1, [r5, #0] - add r1, r1, #1 - str r1, [r5, #0] - pop {r4, r5, r6, pc} -_0222583E: - add r4, r1, #0 - add r3, #0x10 - add r1, #0xc - add r0, r3, #0 - add r1, #0x10 - add r4, #0x24 - bl ov18_02225A08 - cmp r0, #0 - bge _0222585C - ldr r0, [r5, #0] - add r0, r0, #1 - str r0, [r5, #0] - add r0, r6, #0 - pop {r4, r5, r6, pc} -_0222585C: - ldrb r0, [r4] - cmp r0, #7 - beq _0222586C - ldr r0, [r5, #0] - add r0, r0, #1 - str r0, [r5, #0] - add r0, r6, #0 - pop {r4, r5, r6, pc} -_0222586C: - ldrh r0, [r4, #2] - bl ov18_02226860 - cmp r0, #0 - bne _02225880 - ldr r0, [r5, #0] - add r0, r0, #1 - str r0, [r5, #0] - add r0, r6, #0 - pop {r4, r5, r6, pc} -_02225880: - ldr r0, [r4, #4] - bl ov18_02226838 - cmp r0, #0 - bne _0222588E - mov r0, #0x64 - pop {r4, r5, r6, pc} -_0222588E: - ldr r0, [r4, #4] - bl ov18_02226838 - mov r1, #1 - mvn r1, r1 - cmp r0, r1 - bne _022258A8 - mov r0, #0x14 - bl ov18_02225288 - mov r0, #0 - mvn r0, r0 - pop {r4, r5, r6, pc} -_022258A8: - ldr r0, [r4, #4] - bl ov18_02226838 - mov r1, #2 - mvn r1, r1 - cmp r0, r1 - bne _022258C2 - mov r0, #0x15 - bl ov18_02225288 - mov r0, #0 - mvn r0, r0 - pop {r4, r5, r6, pc} -_022258C2: - mov r0, #0x18 - bl ov18_02225288 - mov r0, #0 - mvn r0, r0 - pop {r4, r5, r6, pc} - ; .align 2, 0 - thumb_func_end ov18_0222582C - - thumb_func_start ov18_022258D0 -ov18_022258D0: ; 0x022258D0 - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - add r5, r0, #0 - add r1, r5, #0 - add r4, r5, #0 - add r0, sp, #0xc - add r1, #0x10 - mov r2, #8 - add r4, #0x18 - bl ov18_02226744 - ldr r0, _022259BC ; =0x02249800 - bl ov18_02226878 - add r3, r0, #0 - ldr r2, _022259BC ; =0x02249800 - add r0, sp, #0xc - mov r1, #8 - bl ov18_0222657C - mov r1, #0 - mvn r1, r1 - cmp r0, r1 - bne _0222590E - mov r0, #2 - bl ov18_02225288 - mov r0, #0x63 - add sp, #0x14 - mvn r0, r0 - pop {r4, r5, r6, r7, pc} -_0222590E: - ldrh r0, [r5, #6] - bl ov18_02226860 - add r1, sp, #0xc - bl ov18_022259C4 - cmp r0, #0 - bne _022259B6 - ldrh r0, [r5, #6] - bl ov18_02226860 - mov r1, #1 - lsl r1, r1, #0xc - cmp r0, r1 - bne _02225936 - ldr r0, _022259C0 ; =0x02251AD8 - add r1, sp, #0xc - mov r2, #8 - bl ov18_02226744 -_02225936: - ldrh r0, [r5, #0xc] - bl ov18_02226860 - mov r1, #0xf - tst r0, r1 - bne _02225948 - add sp, #0x14 - mov r0, #0 - pop {r4, r5, r6, r7, pc} -_02225948: - ldrh r0, [r4] - bl ov18_02226860 - add r6, r0, #0 - bl ov18_022246C4 - add r7, r0, #0 - bne _02225964 - mov r0, #2 - bl ov18_02225288 - add sp, #0x14 - mov r0, #0x64 - pop {r4, r5, r6, r7, pc} -_02225964: - add r0, r4, #2 - str r0, [sp] - ldr r0, _022259C0 ; =0x02251AD8 - add r1, r7, #0 - str r0, [sp, #4] - mov r0, #8 - str r0, [sp, #8] - ldrb r3, [r5, #0xe] - add r0, r4, #4 - add r2, r6, #0 - bl ov18_0222638C - cmp r0, #0 - bge _0222599A - add r0, r7, #0 - bl ov18_022246D4 - bl ov18_02225294 - cmp r0, #2 - bne _02225994 - add sp, #0x14 - mov r0, #0x64 - pop {r4, r5, r6, r7, pc} -_02225994: - add sp, #0x14 - mov r0, #0xc8 - pop {r4, r5, r6, r7, pc} -_0222599A: - add r0, r4, #0 - add r1, r7, #0 - add r2, r6, #0 - bl ov18_02226744 - lsl r0, r6, #0x10 - lsr r0, r0, #0x10 - bl ov18_02226820 - strh r0, [r5, #0xa] - add r0, r7, #0 - bl ov18_022246D4 - mov r0, #0 -_022259B6: - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - nop -_022259BC: .word Unk_ov18_02249800 -_022259C0: .word Unk_ov18_02251AD8 - thumb_func_end ov18_022258D0 - - thumb_func_start ov18_022259C4 -ov18_022259C4: ; 0x022259C4 - push {r4, r5, r6, lr} - mov r4, #0 - ldr r6, _02225A04 ; =0x02251AD8 - add r5, r4, #0 - add r3, r4, #0 -_022259CE: - ldrb r2, [r6] - cmp r2, #0 - beq _022259D8 - mov r5, #1 - b _022259E0 -_022259D8: - add r3, r3, #1 - add r6, r6, #1 - cmp r3, #6 - blt _022259CE -_022259E0: - cmp r5, #0 - beq _022259F4 - ldr r0, _02225A04 ; =0x02251AD8 - mov r2, #6 - bl ov18_02226724 - cmp r0, #0 - beq _022259FE - mov r4, #1 - b _022259FE -_022259F4: - mov r1, #1 - lsl r1, r1, #0xc - cmp r0, r1 - beq _022259FE - mov r4, #2 -_022259FE: - add r0, r4, #0 - pop {r4, r5, r6, pc} - nop -_02225A04: .word Unk_ov18_02251AD8 - thumb_func_end ov18_022259C4 - - thumb_func_start ov18_02225A08 -ov18_02225A08: ; 0x02225A08 - push {r4, r5, r6, lr} - add r6, r0, #0 - ldr r0, _02225A50 ; =0x02249800 - add r5, r1, #0 - mov r4, #0 - bl ov18_02226878 - add r3, r0, #0 - ldr r2, _02225A50 ; =0x02249800 - add r0, r5, #0 - mov r1, #8 - bl ov18_0222657C - add r0, r6, #0 - add r1, r5, #0 - mov r2, #6 - bl ov18_02226724 - cmp r0, #0 - beq _02225A34 - sub r4, r4, #1 - b _02225A4A -_02225A34: - ldrh r0, [r6, #6] - bl ov18_02226860 - add r6, r0, #0 - ldrh r0, [r5, #6] - bl ov18_02226860 - add r1, r6, #1 - cmp r1, r0 - beq _02225A4A - sub r4, r4, #2 -_02225A4A: - add r0, r4, #0 - pop {r4, r5, r6, pc} - nop -_02225A50: .word Unk_ov18_02249800 - thumb_func_end ov18_02225A08 - - thumb_func_start ov18_02225A54 -ov18_02225A54: ; 0x02225A54 - push {r3, r4, r5, r6, r7, lr} - add r5, r1, #0 - mov r2, #0x41 - add r6, r0, #0 - add r0, r5, #0 - mov r1, #0 - lsl r2, r2, #2 - bl ov18_02226754 - add r7, r5, #0 - add r4, r6, #0 - add r7, #0x80 -_02225A6C: - ldrh r0, [r4, #2] - bl ov18_02226860 - add r2, r0, #0 - cmp r2, #0 - bgt _02225A7E - mov r0, #0 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02225A7E: - ldrb r0, [r4] - cmp r0, #6 - bhi _02225AF4 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02225A90: ; jump table - .short _02225A9E - _02225A90 - 2 ; case 0 - .short _02225AA8 - _02225A90 - 2 ; case 1 - .short _02225AB2 - _02225A90 - 2 ; case 2 - .short _02225AC0 - _02225A90 - 2 ; case 3 - .short _02225AC0 - _02225A90 - 2 ; case 4 - .short _02225AD0 - _02225A90 - 2 ; case 5 - .short _02225AE2 - _02225A90 - 2 ; case 6 -_02225A9E: - add r0, r5, #0 - add r1, r4, #6 - bl ov18_02226744 - b _02225AFA -_02225AA8: - add r0, r7, #0 - add r1, r4, #6 - bl ov18_02226744 - b _02225AFA -_02225AB2: - mov r0, #1 - lsl r0, r0, #8 - add r0, r5, r0 - add r1, r4, #6 - bl ov18_02226744 - b _02225AFA -_02225AC0: - ldrb r0, [r4, #6] - bl ov18_02226860 - cmp r0, #0 - bgt _02225AFA - mov r0, #1 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02225AD0: - add r0, r4, #6 - add r1, r2, #0 - bl ov18_02225B10 - bl ov18_02226838 - ldr r1, _02225B0C ; =0x02250D78 - str r0, [r1, #0x34] - b _02225AFA -_02225AE2: - add r0, r4, #6 - add r1, r2, #0 - bl ov18_02225B10 - bl ov18_02226838 - ldr r1, _02225B0C ; =0x02250D78 - str r0, [r1, #0x38] - b _02225AFA -_02225AF4: - mov r0, #0 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02225AFA: - ldrh r0, [r4, #4] - cmp r0, #0 - beq _02225B08 - bl ov18_02226860 - add r4, r6, r0 - b _02225A6C -_02225B08: - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02225B0C: .word Unk_ov18_02250D78 - thumb_func_end ov18_02225A54 - - thumb_func_start ov18_02225B10 -ov18_02225B10: ; 0x02225B10 - push {r4, r5} - mov r3, #0 - sub r2, r1, #1 - add r5, r0, r2 - add r4, r3, #0 - cmp r1, #0 - ble _02225B2C -_02225B1E: - ldrb r0, [r5] - lsl r2, r3, #8 - add r4, r4, #1 - sub r5, r5, #1 - add r3, r2, r0 - cmp r4, r1 - blt _02225B1E -_02225B2C: - add r0, r3, #0 - pop {r4, r5} - bx lr - ; .align 2, 0 - thumb_func_end ov18_02225B10 - - thumb_func_start ov18_02225B34 -ov18_02225B34: ; 0x02225B34 - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - add r6, r1, #0 - add r5, r0, #6 - add r0, r6, #0 - str r0, [sp, #0xc] - add r0, #8 - str r0, [sp, #0xc] - add r0, r6, #0 - str r0, [sp, #8] - add r0, #0xf0 - str r0, [sp, #8] - add r0, r6, #0 - str r0, [sp, #4] - add r0, #0xb0 - str r0, [sp, #4] - add r0, r6, #0 - str r0, [sp] - add r0, #0x70 - add r7, r6, #0 - str r0, [sp] - add r7, #0x30 - str r5, [sp, #0x10] -_02225B62: - ldrh r0, [r5, #2] - bl ov18_02226860 - add r4, r0, #0 - ldrb r0, [r5] - cmp r0, #0x21 - bgt _02225B9A - bge _02225BB8 - cmp r0, #0x15 - bgt _02225B94 - add r1, r0, #0 - sub r1, #0x10 - bmi _02225BD0 - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_02225B88: ; jump table - .short _02225BAC - _02225B88 - 2 ; case 0 - .short _02225BAC - _02225B88 - 2 ; case 1 - .short _02225BAC - _02225B88 - 2 ; case 2 - .short _02225BAC - _02225B88 - 2 ; case 3 - .short _02225BD0 - _02225B88 - 2 ; case 4 - .short _02225BC4 - _02225B88 - 2 ; case 5 -_02225B94: - cmp r0, #0x20 - beq _02225BB8 - b _02225BD0 -_02225B9A: - cmp r0, #0x23 - bgt _02225BA6 - bge _02225BB8 - cmp r0, #0x22 - beq _02225BB8 - b _02225BD0 -_02225BA6: - cmp r0, #0x25 - beq _02225BC4 - b _02225BD0 -_02225BAC: - cmp r4, #5 - bls _02225BD0 - mov r0, #0 - add sp, #0x14 - mvn r0, r0 - pop {r4, r5, r6, r7, pc} -_02225BB8: - cmp r4, #0xd - bls _02225BD0 - mov r0, #0 - add sp, #0x14 - mvn r0, r0 - pop {r4, r5, r6, r7, pc} -_02225BC4: - cmp r4, #0x21 - bls _02225BD0 - mov r0, #0 - add sp, #0x14 - mvn r0, r0 - pop {r4, r5, r6, r7, pc} -_02225BD0: - cmp r0, #0x21 - bgt _02225BFE - bge _02225C1E - cmp r0, #0x15 - bgt _02225BF8 - add r1, r0, #0 - sub r1, #0x10 - bmi _02225C68 - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_02225BEC: ; jump table - .short _02225C10 - _02225BEC - 2 ; case 0 - .short _02225C1E - _02225BEC - 2 ; case 1 - .short _02225C2C - _02225BEC - 2 ; case 2 - .short _02225C3A - _02225BEC - 2 ; case 3 - .short _02225C68 - _02225BEC - 2 ; case 4 - .short _02225C48 - _02225BEC - 2 ; case 5 -_02225BF8: - cmp r0, #0x20 - beq _02225C10 - b _02225C68 -_02225BFE: - cmp r0, #0x23 - bgt _02225C0A - bge _02225C3A - cmp r0, #0x22 - beq _02225C2C - b _02225C68 -_02225C0A: - cmp r0, #0x25 - beq _02225C48 - b _02225C68 -_02225C10: - add r0, r7, #0 - add r1, r5, #6 - add r2, r4, #0 - bl ov18_02226744 - str r4, [r6, #4] - b _02225C70 -_02225C1E: - ldr r0, [sp] - add r1, r5, #6 - add r2, r4, #0 - bl ov18_02226744 - str r4, [r6, #4] - b _02225C70 -_02225C2C: - ldr r0, [sp, #4] - add r1, r5, #6 - add r2, r4, #0 - bl ov18_02226744 - str r4, [r6, #4] - b _02225C70 -_02225C3A: - ldr r0, [sp, #8] - add r1, r5, #6 - add r2, r4, #0 - bl ov18_02226744 - str r4, [r6, #4] - b _02225C70 -_02225C48: - cmp r4, #0 - beq _02225C5C - add r0, r5, r4 - ldrb r0, [r0, #5] - cmp r0, #0 - beq _02225C5C - mov r0, #0 - add sp, #0x14 - mvn r0, r0 - pop {r4, r5, r6, r7, pc} -_02225C5C: - ldr r0, [sp, #0xc] - add r1, r5, #6 - add r2, r4, #0 - bl ov18_02226744 - b _02225C70 -_02225C68: - mov r0, #0 - add sp, #0x14 - mvn r0, r0 - pop {r4, r5, r6, r7, pc} -_02225C70: - ldrh r0, [r5, #4] - cmp r0, #0 - beq _02225C80 - bl ov18_02226860 - ldr r1, [sp, #0x10] - add r5, r1, r0 - b _02225B62 -_02225C80: - mov r0, #0 - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - ; .align 2, 0 - thumb_func_end ov18_02225B34 - - thumb_func_start ov18_02225C88 -ov18_02225C88: ; 0x02225C88 - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - add r6, r1, #0 - add r4, r0, #6 - add r0, r6, #0 - str r0, [sp] - add r0, #8 - add r7, r6, #0 - str r0, [sp] - add r7, #0x30 - str r4, [sp, #4] -_02225C9E: - ldrh r0, [r4, #2] - bl ov18_02226860 - add r5, r0, #0 - ldrb r0, [r4] - cmp r0, #0x35 - bgt _02225CB4 - bge _02225CCE - cmp r0, #0x30 - beq _02225CC2 - b _02225CDA -_02225CB4: - cmp r0, #0x40 - bgt _02225CBC - beq _02225CC2 - b _02225CDA -_02225CBC: - cmp r0, #0x45 - beq _02225CCE - b _02225CDA -_02225CC2: - cmp r5, #0x40 - bls _02225CDA - mov r0, #0 - add sp, #8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02225CCE: - cmp r5, #0x21 - bls _02225CDA - mov r0, #0 - add sp, #8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02225CDA: - cmp r0, #0x35 - bgt _02225CE6 - bge _02225D02 - cmp r0, #0x30 - beq _02225CF4 - b _02225D22 -_02225CE6: - cmp r0, #0x40 - bgt _02225CEE - beq _02225CF4 - b _02225D22 -_02225CEE: - cmp r0, #0x45 - beq _02225D02 - b _02225D22 -_02225CF4: - add r0, r7, #0 - add r1, r4, #6 - add r2, r5, #0 - bl ov18_02226744 - str r5, [r6, #4] - b _02225D2A -_02225D02: - cmp r5, #0 - beq _02225D16 - add r0, r4, r5 - ldrb r0, [r0, #5] - cmp r0, #0 - beq _02225D16 - mov r0, #0 - add sp, #8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02225D16: - ldr r0, [sp] - add r1, r4, #6 - add r2, r5, #0 - bl ov18_02226744 - b _02225D2A -_02225D22: - mov r0, #0 - add sp, #8 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02225D2A: - ldrh r0, [r4, #4] - cmp r0, #0 - beq _02225D3A - bl ov18_02226860 - ldr r1, [sp, #4] - add r4, r1, r0 - b _02225C9E -_02225D3A: - mov r0, #0 - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov18_02225C88 - - thumb_func_start ov18_02225D40 -ov18_02225D40: ; 0x02225D40 - push {r3, r4, r5, lr} - add r4, r0, #6 - ldrh r0, [r4, #2] - add r5, r1, #0 - bl ov18_02226860 - add r2, r0, #0 - cmp r2, #0 - bgt _02225D58 - mov r0, #0 - mvn r0, r0 - pop {r3, r4, r5, pc} -_02225D58: - ldrb r0, [r4] - cmp r0, #0x70 - beq _02225D64 - mov r0, #0 - mvn r0, r0 - pop {r3, r4, r5, pc} -_02225D64: - add r0, r5, #0 - add r1, r4, #6 - bl ov18_02226744 - mov r0, #0 - pop {r3, r4, r5, pc} - thumb_func_end ov18_02225D40 - - thumb_func_start ov18_02225D70 -ov18_02225D70: ; 0x02225D70 - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - add r6, r2, #0 - str r0, [sp] - add r4, r1, #0 - mov r5, #0 - str r3, [sp, #4] - cmp r6, #0 - bgt _02225D88 - add sp, #0x14 - sub r0, r5, #2 - pop {r4, r5, r6, r7, pc} -_02225D88: - ldr r7, _02225E78 ; =0x02249790 -_02225D8A: - ldr r2, [sp] - ldrb r0, [r4] - ldrb r2, [r7, r2] - add r1, r4, #0 - cmp r0, r2 - beq _02225DAE - ldrh r0, [r4, #2] - bl ov18_02226860 - add r0, r0, #4 - sub r6, r6, r0 - add r4, r4, r0 - cmp r6, #0 - bgt _02225D8A - mov r0, #3 - add sp, #0x14 - mvn r0, r0 - pop {r4, r5, r6, r7, pc} -_02225DAE: - ldrh r0, [r1, #2] - add r4, r4, #4 - bl ov18_02226860 - add r7, r0, #0 - mov r1, #0x35 - ldr r0, [sp] - lsl r1, r1, #4 - mul r1, r0 - ldr r0, [sp, #4] - add r6, r0, r1 - ldr r0, [sp, #0x28] - str r0, [sp, #8] - ldr r0, [sp] - add r0, r0, #3 - lsl r0, r0, #7 - str r0, [sp, #0xc] - add r0, r6, #0 - str r0, [sp, #0x10] - add r0, #8 - str r0, [sp, #0x10] -_02225DD8: - ldrb r0, [r4] - cmp r0, #0xa - bhi _02225E52 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02225DEA: ; jump table - .short _02225E52 - _02225DEA - 2 ; case 0 - .short _02225E52 - _02225DEA - 2 ; case 1 - .short _02225E52 - _02225DEA - 2 ; case 2 - .short _02225E00 - _02225DEA - 2 ; case 3 - .short _02225E0E - _02225DEA - 2 ; case 4 - .short _02225E20 - _02225DEA - 2 ; case 5 - .short _02225E32 - _02225DEA - 2 ; case 6 - .short _02225E52 - _02225DEA - 2 ; case 7 - .short _02225E52 - _02225DEA - 2 ; case 8 - .short _02225E52 - _02225DEA - 2 ; case 9 - .short _02225E44 - _02225DEA - 2 ; case 10 -_02225E00: - ldr r1, [sp, #0x10] - add r0, r4, #0 - bl ov18_02225B34 - mov r1, #1 - orr r5, r1 - b _02225E56 -_02225E0E: - mov r1, #0x4e - lsl r1, r1, #2 - add r0, r4, #0 - add r1, r6, r1 - bl ov18_02225B34 - mov r1, #2 - orr r5, r1 - b _02225E56 -_02225E20: - mov r1, #0x9a - lsl r1, r1, #2 - add r0, r4, #0 - add r1, r6, r1 - bl ov18_02225C88 - mov r1, #4 - orr r5, r1 - b _02225E56 -_02225E32: - mov r1, #0xb6 - lsl r1, r1, #2 - add r0, r4, #0 - add r1, r6, r1 - bl ov18_02225C88 - mov r1, #8 - orr r5, r1 - b _02225E56 -_02225E44: - ldr r2, [sp, #8] - ldr r1, [sp, #0xc] - add r0, r4, #0 - add r1, r2, r1 - bl ov18_02225D40 - b _02225E56 -_02225E52: - mov r0, #2 - mvn r0, r0 -_02225E56: - cmp r0, #0 - bne _02225E74 - ldrh r0, [r4, #2] - bl ov18_02226860 - add r0, r0, #4 - sub r7, r7, r0 - add r4, r4, r0 - cmp r7, #0 - bgt _02225DD8 - ldr r0, _02225E7C ; =0x02250D78 - ldr r1, [r0, #0x30] - orr r1, r5 - str r1, [r0, #0x30] - mov r0, #0 -_02225E74: - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - ; .align 2, 0 -_02225E78: .word Unk_ov18_02249790 -_02225E7C: .word Unk_ov18_02250D78 - thumb_func_end ov18_02225D70 - - thumb_func_start ov18_02225E80 -ov18_02225E80: ; 0x02225E80 - mov r1, #0x10 - mov r2, #0 - tst r0, r1 - beq _02225E8A - mov r2, #1 -_02225E8A: - add r0, r2, #0 - bx lr - ; .align 2, 0 - thumb_func_end ov18_02225E80 - - thumb_func_start ov18_02225E90 -ov18_02225E90: ; 0x02225E90 - push {r4, r5, r6, lr} - add r5, r1, #0 - add r4, r2, #0 - add r6, r3, #0 - cmp r0, #0 - beq _02225EA6 - cmp r0, #1 - beq _02225EB8 - cmp r0, #2 - beq _02225ECA - b _02225EDC -_02225EA6: - mov r0, #2 - bl ov18_022255AC - add r0, r5, #0 - add r1, r4, #0 - add r2, r6, #0 - bl ov18_02225EE4 - pop {r4, r5, r6, pc} -_02225EB8: - mov r0, #3 - bl ov18_022255AC - add r0, r5, #0 - add r1, r4, #0 - add r2, r6, #0 - bl ov18_02226028 - pop {r4, r5, r6, pc} -_02225ECA: - mov r0, #5 - bl ov18_022255AC - add r0, r5, #0 - add r1, r4, #0 - add r2, r6, #0 - bl ov18_02226104 - pop {r4, r5, r6, pc} -_02225EDC: - mov r0, #0 - mvn r0, r0 - pop {r4, r5, r6, pc} - ; .align 2, 0 - thumb_func_end ov18_02225E90 - - thumb_func_start ov18_02225EE4 -ov18_02225EE4: ; 0x02225EE4 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x20 - add r7, r1, #0 - mov r1, #0 - add r0, sp, #0x10 - strb r1, [r0] - strh r1, [r0, #4] - strh r1, [r0, #2] - ldr r0, _02226018 ; =0x02250D78 - str r2, [sp, #0xc] - ldr r5, [r0, #0x14] - ldr r2, _0222601C ; =0x000005DC - add r0, r5, #0 - bl ov18_02226754 - mov r0, #0x21 - lsl r0, r0, #4 - bl ov18_022246C4 - add r4, r0, #0 - bne _02225F1C - mov r0, #2 - bl ov18_02225288 - mov r0, #0 - add sp, #0x20 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02225F1C: - mov r2, #0x21 - mov r1, #0 - lsl r2, r2, #4 - bl ov18_02226754 - add r6, r5, #0 - ldr r0, _02226020 ; =0x02251AD8 - add r1, r7, #0 - mov r2, #8 - add r6, #0x18 - bl ov18_02226744 - add r0, sp, #0x14 - ldr r1, _02226020 ; =0x02251AD8 - add r0, #2 - mov r2, #8 - bl ov18_02226744 - add r0, r4, #4 - bl ov18_02226170 - add r1, sp, #0x10 - strh r0, [r1, #4] - mov r0, #4 - ldrsh r0, [r1, r0] - cmp r0, #0 - bge _02225F6A - mov r0, #3 - bl ov18_02225288 - cmp r4, #0 - beq _02225F62 - add r0, r4, #0 - bl ov18_022246D4 -_02225F62: - mov r0, #0 - add sp, #0x20 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02225F6A: - mov r0, #0 - strb r0, [r4] - ldrh r0, [r1, #4] - bl ov18_02226820 - strh r0, [r4, #2] - add r1, sp, #0x10 - mov r0, #4 - ldrsh r0, [r1, r0] - add r2, r4, #0 - add r3, sp, #0x14 - add r0, r0, #4 - strh r0, [r1, #4] - add r0, sp, #0x10 - add r0, #2 - str r0, [sp] - add r0, sp, #0x10 - str r0, [sp, #4] - mov r0, #0 - add r1, r6, #0 - bl ov18_022261FC - add r1, sp, #0x10 - mov r0, #2 - ldrsh r2, [r1, r0] - mov r0, #0x10 - mov r3, #6 - orr r0, r2 - strh r0, [r1, #2] - add r0, sp, #0x14 - ldr r2, _02226024 ; =0x02249800 - add r0, #2 - mov r1, #8 - bl ov18_0222657C - cmp r0, #0 - beq _02225FCC - mov r0, #2 - bl ov18_02225288 - cmp r4, #0 - beq _02225FC4 - add r0, r4, #0 - bl ov18_022246D4 -_02225FC4: - mov r0, #0 - add sp, #0x20 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02225FCC: - add r3, sp, #0x10 - mov r0, #0 - ldrsb r0, [r3, r0] - mov r1, #1 - mov r2, #4 - str r0, [sp] - mov r0, #0x11 - str r0, [sp, #4] - add r0, sp, #0x14 - add r0, #2 - str r0, [sp, #8] - mov r6, #2 - ldrsh r2, [r3, r2] - ldrsh r3, [r3, r6] - add r0, r5, #0 - lsl r1, r1, #0xc - bl ov18_02226250 - add r2, sp, #0x10 - mov r1, #4 - ldrsh r0, [r2, r1] - ldr r3, [sp, #0xc] - add r0, #0x18 - strh r0, [r2, #4] - ldrsh r1, [r2, r1] - add r0, r5, #0 - mov r2, #0xff - bl ov18_022262A8 - cmp r4, #0 - beq _02226010 - add r0, r4, #0 - bl ov18_022246D4 -_02226010: - mov r0, #0 - add sp, #0x20 - pop {r3, r4, r5, r6, r7, pc} - nop -_02226018: .word Unk_ov18_02250D78 -_0222601C: .word 0x000005DC -_02226020: .word Unk_ov18_02251AD8 -_02226024: .word Unk_ov18_02249800 - thumb_func_end ov18_02225EE4 - - thumb_func_start ov18_02226028 -ov18_02226028: ; 0x02226028 - push {r3, r4, r5, r6, lr} - sub sp, #0x24 - add r5, r1, #0 - mov r1, #0 - add r0, sp, #0xc - strb r1, [r0] - strh r1, [r0, #4] - strh r1, [r0, #2] - ldr r0, _022260F8 ; =0x02250D78 - add r6, r2, #0 - ldr r4, [r0, #0x14] - add r0, sp, #0x14 - mov r2, #8 - bl ov18_02226754 - ldr r2, _022260FC ; =0x000005DC - add r0, r4, #0 - mov r1, #0 - bl ov18_02226754 - mov r1, #2 - add r0, sp, #0xc - strb r1, [r0, #8] - mov r1, #0 - strb r1, [r0, #9] - mov r0, #4 - bl ov18_02226820 - add r1, sp, #0xc - strh r0, [r1, #0xa] - ldr r0, _022260F8 ; =0x02250D78 - ldr r0, [r0, #0x2c] - str r0, [sp, #0x18] - bl ov18_022267F8 - str r0, [sp, #0x18] - mov r1, #8 - add r0, sp, #0xc - strh r1, [r0, #4] - add r0, sp, #0xc - add r0, #2 - str r0, [sp] - add r0, sp, #0xc - str r0, [sp, #4] - ldr r0, _022260F8 ; =0x02250D78 - add r1, r4, #0 - ldr r0, [r0, #0] - add r1, #0x18 - add r2, sp, #0x14 - add r3, sp, #0x10 - bl ov18_022261FC - add r5, #8 - add r0, sp, #0x1c - add r1, r5, #0 - mov r2, #8 - bl ov18_02226744 - ldr r2, _02226100 ; =0x02249800 - add r0, sp, #0x1c - mov r1, #8 - mov r3, #6 - bl ov18_0222657C - cmp r0, #0 - beq _022260BA - mov r0, #2 - bl ov18_02225288 - mov r0, #0 - add sp, #0x24 - mvn r0, r0 - pop {r3, r4, r5, r6, pc} -_022260BA: - add r3, sp, #0xc - mov r0, #0 - ldrsb r0, [r3, r0] - mov r1, #2 - mov r2, #4 - str r0, [sp] - mov r0, #0x11 - str r0, [sp, #4] - add r0, sp, #0x1c - str r0, [sp, #8] - mov r5, #2 - ldrsh r2, [r3, r2] - ldrsh r3, [r3, r5] - add r0, r4, #0 - lsl r1, r1, #0xc - bl ov18_02226250 - add r2, sp, #0xc - mov r1, #4 - ldrsh r0, [r2, r1] - add r3, r6, #0 - add r0, #0x18 - strh r0, [r2, #4] - ldrsh r1, [r2, r1] - add r0, r4, #0 - mov r2, #0 - bl ov18_022262A8 - mov r0, #0 - add sp, #0x24 - pop {r3, r4, r5, r6, pc} - ; .align 2, 0 -_022260F8: .word Unk_ov18_02250D78 -_022260FC: .word 0x000005DC -_02226100: .word Unk_ov18_02249800 - thumb_func_end ov18_02226028 - - thumb_func_start ov18_02226104 -ov18_02226104: ; 0x02226104 - push {r3, r4, r5, r6, lr} - sub sp, #0x14 - ldr r0, _02226164 ; =0x02250D78 - add r6, r2, #0 - ldr r4, [r0, #0x14] - ldr r2, _02226168 ; =0x000005DC - add r5, r1, #0 - add r0, r4, #0 - mov r1, #0 - bl ov18_02226754 - add r5, #0x10 - add r0, sp, #0xc - add r1, r5, #0 - mov r2, #8 - bl ov18_02226744 - ldr r0, _0222616C ; =0x02249800 - bl ov18_02226878 - add r3, r0, #0 - ldr r2, _0222616C ; =0x02249800 - add r0, sp, #0xc - mov r1, #8 - bl ov18_0222657C - mov r2, #0 - mov r1, #3 - str r2, [sp] - mov r0, #0x11 - str r0, [sp, #4] - add r0, sp, #0xc - str r0, [sp, #8] - add r0, r4, #0 - lsl r1, r1, #0xc - add r3, r2, #0 - bl ov18_02226250 - add r0, r4, #0 - mov r1, #0x18 - mov r2, #0 - add r3, r6, #0 - bl ov18_022262A8 - mov r0, #0 - add sp, #0x14 - pop {r3, r4, r5, r6, pc} - nop -_02226164: .word Unk_ov18_02250D78 -_02226168: .word 0x000005DC -_0222616C: .word Unk_ov18_02249800 - thumb_func_end ov18_02226104 - - thumb_func_start ov18_02226170 -ov18_02226170: ; 0x02226170 - push {r3, r4, r5, r6, r7, lr} - ldr r1, _022261F4 ; =0x02250D98 - add r5, r0, #0 - mov r0, #0x1d - ldrsb r0, [r1, r0] - ldr r1, _022261F8 ; =0x02250D78 - mov r6, #0 - strb r0, [r5] - mov r0, #1 - strb r0, [r5, #1] - ldr r0, [r1, #0x28] - ldr r1, [r1, #0x24] - lsl r0, r0, #0x10 - asr r4, r0, #0x10 - add r0, r5, #6 - add r2, r4, #0 - bl ov18_02226744 - lsl r0, r4, #0x10 - lsr r0, r0, #0x10 - bl ov18_02226820 - strh r0, [r5, #2] - add r0, r4, #6 - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add r1, r0, #1 - lsr r0, r1, #0x1f - add r0, r1, r0 - asr r0, r0, #1 - lsl r0, r0, #0x11 - asr r7, r0, #0x10 - lsl r0, r7, #0x10 - lsr r0, r0, #0x10 - bl ov18_02226820 - strh r0, [r5, #4] - add r0, r6, r7 - lsl r0, r0, #0x10 - asr r6, r0, #0x10 - mov r0, #0x60 - strb r0, [r5, r7] - add r4, r5, r7 - mov r0, #0 - strb r0, [r4, #1] - bl ov18_02226820 - strh r0, [r4, #4] - mov r0, #0xe - bl ov18_022267F8 - str r0, [sp] - add r0, r4, #6 - add r1, sp, #0 - mov r2, #4 - bl ov18_02226744 - mov r0, #4 - bl ov18_02226820 - add r6, #0xa - strh r0, [r4, #2] - lsl r0, r6, #0x10 - asr r0, r0, #0x10 - pop {r3, r4, r5, r6, r7, pc} - nop -_022261F4: .word 0x02250D98 -_022261F8: .word Unk_ov18_02250D78 - thumb_func_end ov18_02226170 - - thumb_func_start ov18_022261FC -ov18_022261FC: ; 0x022261FC - push {r4, r5, lr} - sub sp, #0xc - add r5, r1, #0 - add r4, r3, #0 - cmp r0, #1 - bne _0222623C - ldr r0, [sp, #0x18] - mov r1, #1 - strh r1, [r0] - add r0, r5, #2 - str r0, [sp] - ldr r0, _0222624C ; =0x02251AD8 - ldr r3, [sp, #0x1c] - str r0, [sp, #4] - mov r0, #8 - str r0, [sp, #8] - add r0, r2, #0 - mov r2, #0 - ldrsh r2, [r4, r2] - add r1, r5, #4 - bl ov18_02226310 - ldrh r0, [r4] - bl ov18_02226820 - strh r0, [r5] - mov r0, #0 - ldrsh r0, [r4, r0] - add sp, #0xc - add r0, r0, #4 - strh r0, [r4] - pop {r4, r5, pc} -_0222623C: - add r1, r2, #0 - mov r2, #0 - ldrsh r2, [r4, r2] - add r0, r5, #0 - bl ov18_02226744 - add sp, #0xc - pop {r4, r5, pc} - ; .align 2, 0 -_0222624C: .word Unk_ov18_02251AD8 - thumb_func_end ov18_022261FC - - thumb_func_start ov18_02226250 -ov18_02226250: ; 0x02226250 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - mov r0, #1 - add r4, r1, #0 - add r6, r2, #0 - add r7, r3, #0 - bl ov18_02226820 - strh r0, [r5] - mov r0, #0 - strh r0, [r5, #2] - strh r0, [r5, #4] - lsl r0, r4, #0x10 - lsr r0, r0, #0x10 - bl ov18_02226820 - strh r0, [r5, #6] - mov r0, #0 - strh r0, [r5, #8] - lsl r0, r6, #0x10 - lsr r0, r0, #0x10 - bl ov18_02226820 - strh r0, [r5, #0xa] - lsl r0, r7, #0x10 - lsr r0, r0, #0x10 - bl ov18_02226820 - strh r0, [r5, #0xc] - add r1, sp, #8 - mov r0, #0x10 - ldrsb r0, [r1, r0] - mov r2, #8 - strb r0, [r5, #0xe] - mov r0, #0x14 - ldrsb r0, [r1, r0] - ldr r1, [sp, #0x20] - strb r0, [r5, #0xf] - add r5, #0x10 - add r0, r5, #0 - bl ov18_02226744 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 - thumb_func_end ov18_02226250 - - thumb_func_start ov18_022262A8 -ov18_022262A8: ; 0x022262A8 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x10 - add r5, r0, #0 - add r6, r1, #0 - add r4, r2, #0 - add r0, sp, #8 - mov r1, #0 - mov r2, #8 - add r7, r3, #0 - bl ov18_02226754 - mov r1, #2 - add r0, sp, #8 - strb r1, [r0, #1] - ldr r0, _02226304 ; =0x00005790 - bl ov18_02226820 - add r1, sp, #8 - strh r0, [r1, #2] - ldr r0, _02226308 ; =0x02250D78 - ldr r0, [r0, #0x34] - bl ov18_022267F8 - str r0, [sp, #0xc] - cmp r4, #0xff - beq _022262E6 - ldr r1, _0222630C ; =0x02250D98 - mov r0, #0x1c - ldrsb r0, [r1, r0] - cmp r0, #0 - bne _022262EC -_022262E6: - mov r0, #0 - mvn r0, r0 - str r0, [sp, #0xc] -_022262EC: - add r0, sp, #8 - str r0, [sp] - mov r0, #8 - str r0, [sp, #4] - add r0, r7, #0 - add r1, r5, #0 - add r2, r6, #0 - mov r3, #0 - bl ov18_022267C8 - add sp, #0x10 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02226304: .word 0x00005790 -_02226308: .word Unk_ov18_02250D78 -_0222630C: .word 0x02250D98 - thumb_func_end ov18_022262A8 - - thumb_func_start ov18_02226310 -ov18_02226310: ; 0x02226310 - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - add r5, r2, #0 - add r7, r1, #0 - add r4, r3, #0 - add r1, r5, #0 - add r6, r0, #0 - bl ov18_022264E4 - strb r0, [r4] - add r0, r5, #0 - bl ov18_022246C4 - str r0, [sp, #0xc] - cmp r0, #0 - bne _02226338 - mov r0, #0 - add sp, #0x14 - mvn r0, r0 - pop {r4, r5, r6, r7, pc} -_02226338: - bl ov18_0222688C - add r1, sp, #0 - strh r0, [r1] - ldr r0, [sp, #0x28] - add r1, sp, #0 - mov r2, #2 - bl ov18_02226744 - ldr r0, _02226384 ; =0x02251AE0 - ldr r1, [sp, #0x28] - mov r2, #2 - bl ov18_02226744 - ldr r0, _02226388 ; =0x02251AE2 - ldr r1, [sp, #0x2c] - ldr r2, [sp, #0x30] - bl ov18_02226744 - ldr r2, [sp, #0x30] - ldr r1, _02226384 ; =0x02251AE0 - add r0, sp, #4 - add r2, r2, #2 - add r3, r5, #0 - bl ov18_02226414 - add r0, sp, #4 - add r1, r7, #0 - add r2, r6, #0 - add r3, r5, #0 - bl ov18_02226478 - ldr r0, [sp, #0xc] - bl ov18_022246D4 - mov r0, #0 - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - ; .align 2, 0 -_02226384: .word Unk_ov18_02251AE0 -_02226388: .word 0x02251AE2 - thumb_func_end ov18_02226310 - - thumb_func_start ov18_0222638C -ov18_0222638C: ; 0x0222638C - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x10 - add r4, r2, #0 - add r7, r0, #0 - add r0, r4, #0 - add r5, r1, #0 - add r6, r3, #0 - bl ov18_022246C4 - str r0, [sp, #8] - cmp r0, #0 - bne _022263B2 - mov r0, #2 - bl ov18_02225288 - mov r0, #0 - add sp, #0x10 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_022263B2: - ldr r0, _0222640C ; =0x02251AE0 - ldr r1, [sp, #0x28] - mov r2, #2 - bl ov18_02226744 - ldr r0, _02226410 ; =0x02251AE2 - ldr r1, [sp, #0x2c] - ldr r2, [sp, #0x30] - bl ov18_02226744 - ldr r2, [sp, #0x30] - ldr r1, _0222640C ; =0x02251AE0 - add r0, sp, #0 - add r2, r2, #2 - add r3, r4, #0 - bl ov18_02226414 - add r0, sp, #0 - add r1, r5, #0 - add r2, r7, #0 - add r3, r4, #0 - bl ov18_02226478 - add r0, r5, #0 - add r1, r4, #0 - bl ov18_022264E4 - cmp r0, r6 - beq _02226400 - mov r0, #0x12 - bl ov18_02225288 - ldr r0, [sp, #8] - bl ov18_022246D4 - mov r0, #0 - add sp, #0x10 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02226400: - ldr r0, [sp, #8] - bl ov18_022246D4 - mov r0, #0 - add sp, #0x10 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_0222640C: .word Unk_ov18_02251AE0 -_02226410: .word 0x02251AE2 - thumb_func_end ov18_0222638C - - thumb_func_start ov18_02226414 -ov18_02226414: ; 0x02226414 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x10 - str r0, [sp] - str r1, [sp, #4] - ldr r4, [r0, #8] - ldr r1, [sp] - mov r0, #0 - str r0, [r1, #4] - str r2, [sp, #8] - str r0, [r1, #0] - add r2, r3, #0 - str r2, [r1, #0xc] - str r3, [sp, #0xc] - add r1, r3, #0 - beq _0222643C -_02226432: - ldr r1, [sp, #0xc] - strb r0, [r4, r0] - add r0, r0, #1 - cmp r0, r1 - blo _02226432 -_0222643C: - ldr r0, [sp, #0xc] - mov r1, #0 - add r6, r1, #0 - add r5, r1, #0 - cmp r0, #0 - bls _02226472 -_02226448: - ldr r0, [sp, #4] - ldrb r7, [r4, r5] - ldrb r0, [r0, r6] - add r0, r1, r0 - ldr r1, [sp] - add r0, r7, r0 - ldr r1, [r1, #0xc] - bl _u32_div_f - ldrb r0, [r4, r1] - add r6, r6, #1 - strb r7, [r4, r1] - strb r0, [r4, r5] - ldr r0, [sp, #8] - cmp r6, r0 - blo _0222646A - mov r6, #0 -_0222646A: - ldr r0, [sp, #0xc] - add r5, r5, #1 - cmp r5, r0 - blo _02226448 -_02226472: - add sp, #0x10 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 - thumb_func_end ov18_02226414 - - thumb_func_start ov18_02226478 -ov18_02226478: ; 0x02226478 - push {r3, r4, r5, r6, r7, lr} - str r0, [sp] - add r5, r1, #0 - add r6, r2, #0 - add r7, r3, #0 - ldr r4, _022264A0 ; =0x00000000 - beq _0222649C -_02226486: - ldr r0, [sp] - bl ov18_022264A4 - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 - ldrb r0, [r6, r4] - eor r0, r1 - strb r0, [r5, r4] - add r4, r4, #1 - cmp r4, r7 - blo _02226486 -_0222649C: - pop {r3, r4, r5, r6, r7, pc} - nop -_022264A0: .word 0x00000000 - thumb_func_end ov18_02226478 - - thumb_func_start ov18_022264A4 -ov18_022264A4: ; 0x022264A4 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - ldr r0, [r5, #0xc] - ldr r4, [r5, #8] - str r0, [sp] - ldr r0, [r5, #0] - ldr r1, [sp] - add r0, r0, #1 - bl _u32_div_f - lsl r0, r1, #0x18 - lsr r7, r0, #0x18 - ldrb r6, [r4, r7] - ldr r0, [r5, #4] - ldr r1, [sp] - add r0, r6, r0 - bl _u32_div_f - lsl r0, r1, #0x18 - lsr r1, r0, #0x18 - ldrb r0, [r4, r1] - str r7, [r5, #0] - str r1, [r5, #4] - strb r6, [r4, r1] - strb r0, [r4, r7] - ldr r1, [r5, #0xc] - add r0, r6, r0 - bl _u32_div_f - ldrb r0, [r4, r1] - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 - thumb_func_end ov18_022264A4 - - thumb_func_start ov18_022264E4 -ov18_022264E4: ; 0x022264E4 - push {r3, lr} - add r3, r0, #0 - ldr r0, _02226508 ; =0x02251038 - add r2, r1, #0 - str r0, [sp] - mov r0, #0 - add r1, r3, #0 - mvn r0, r0 - mov r3, #0 - bl ov18_0222650C - mov r1, #0 - mvn r1, r1 - eor r0, r1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - pop {r3, pc} - nop -_02226508: .word Unk_ov18_02251038 - thumb_func_end ov18_022264E4 - - thumb_func_start ov18_0222650C -ov18_0222650C: ; 0x0222650C - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - add r7, r1, #0 - add r4, r2, #0 - ldr r6, [sp, #0x18] - cmp r3, #0 - bne _02226522 - add r0, r3, #0 - add r1, r6, #0 - bl ov18_02226544 -_02226522: - mov r1, #0 - cmp r4, #0 - ble _0222653E -_02226528: - ldrb r2, [r7, r1] - lsr r0, r5, #8 - add r1, r1, #1 - eor r2, r5 - lsl r2, r2, #0x18 - lsr r2, r2, #0x16 - ldr r2, [r6, r2] - add r5, r0, #0 - eor r5, r2 - cmp r1, r4 - blt _02226528 -_0222653E: - add r0, r5, #0 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 - thumb_func_end ov18_0222650C - - thumb_func_start ov18_02226544 -ov18_02226544: ; 0x02226544 - push {r4, r5, r6, r7} - mov r5, #1 - add r3, r5, #0 - ldr r4, _02226578 ; =0xEDB88320 - mov r0, #0 - add r3, #0xff -_02226550: - add r7, r0, #0 - mov r2, #0 -_02226554: - add r6, r7, #0 - tst r6, r5 - beq _02226562 - lsr r6, r7, #1 - add r7, r6, #0 - eor r7, r4 - b _02226564 -_02226562: - lsr r7, r7, #1 -_02226564: - add r2, r2, #1 - cmp r2, #8 - blt _02226554 - add r0, r0, #1 - stmia r1!, {r7} - cmp r0, r3 - blt _02226550 - pop {r4, r5, r6, r7} - bx lr - nop -_02226578: .word 0xEDB88320 - thumb_func_end ov18_02226544 - - thumb_func_start ov18_0222657C -ov18_0222657C: ; 0x0222657C - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x10 - add r5, r1, #0 - add r7, r0, #0 - lsr r0, r5, #0x1f - add r0, r5, r0 - asr r0, r0, #1 - str r2, [sp, #4] - str r3, [sp, #8] - bl ov18_022246C4 - add r6, r0, #0 - bne _0222659E - mov r0, #0 - add sp, #0x10 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_0222659E: - add r0, r5, #0 - bl ov18_022246C4 - str r0, [sp, #0xc] - cmp r0, #0 - bne _022265B8 - add r0, r6, #0 - bl ov18_022246D4 - mov r0, #0 - add sp, #0x10 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_022265B8: - mov r4, #0 -_022265BA: - ldr r0, [sp, #8] - ldr r3, [sp, #4] - str r0, [sp] - add r0, r4, #0 - add r1, r6, #0 - add r2, r5, #0 - bl ov18_022265F8 - add r0, r6, #0 - add r1, r7, #0 - add r2, r5, #0 - bl ov18_0222662C - ldr r2, [sp, #0xc] - add r0, r7, #0 - add r1, r5, #0 - bl ov18_02226650 - add r4, r4, #1 - cmp r4, #2 - blt _022265BA - add r0, r6, #0 - bl ov18_022246D4 - ldr r0, [sp, #0xc] - bl ov18_022246D4 - mov r0, #0 - add sp, #0x10 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 - thumb_func_end ov18_0222657C - - thumb_func_start ov18_022265F8 -ov18_022265F8: ; 0x022265F8 - push {r3, r4, r5, r6, r7, lr} - add r5, r1, #0 - lsr r1, r2, #0x1f - add r1, r2, r1 - ldr r6, [sp, #0x18] - asr r4, r1, #1 - add r1, r6, #0 - add r7, r3, #0 - bl _s32_div_f - mov r0, #0 - cmp r4, #0 - ble _0222662A -_02226612: - strb r0, [r5, r0] - ldrsb r2, [r7, r1] - ldrsb r3, [r5, r0] - add r1, r1, #1 - eor r2, r3 - strb r2, [r5, r0] - cmp r1, r6 - blt _02226624 - mov r1, #0 -_02226624: - add r0, r0, #1 - cmp r0, r4 - blt _02226612 -_0222662A: - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov18_022265F8 - - thumb_func_start ov18_0222662C -ov18_0222662C: ; 0x0222662C - push {r4, r5} - lsr r3, r2, #0x1f - add r3, r2, r3 - asr r4, r3, #1 - mov r3, #0 - cmp r4, #0 - ble _0222664C - add r5, r1, r4 -_0222663C: - ldrsb r1, [r0, r3] - ldrb r2, [r5] - add r3, r3, #1 - eor r1, r2 - strb r1, [r5] - add r5, r5, #1 - cmp r3, r4 - blt _0222663C -_0222664C: - pop {r4, r5} - bx lr - thumb_func_end ov18_0222662C - - thumb_func_start ov18_02226650 -ov18_02226650: ; 0x02226650 - push {r3, r4, r5, r6, r7, lr} - add r6, r1, #0 - add r5, r0, #0 - lsr r0, r6, #0x1f - add r0, r6, r0 - asr r7, r0, #1 - add r4, r2, #0 - add r0, r4, #0 - add r1, r5, r7 - add r2, r7, #0 - bl ov18_02226744 - add r0, r4, r7 - add r1, r5, #0 - add r2, r7, #0 - bl ov18_02226744 - add r0, r5, #0 - add r1, r4, #0 - add r2, r6, #0 - bl ov18_02226744 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 - thumb_func_end ov18_02226650 - - thumb_func_start ov18_02226680 -ov18_02226680: ; 0x02226680 - push {r3, lr} - cmp r1, #0 - ble _02226690 - add r0, r1, #0 - ldr r1, _02226694 ; =0x02251B60 - ldr r1, [r1, #0] - blx r1 - pop {r3, pc} -_02226690: - mov r0, #0 - pop {r3, pc} - ; .align 2, 0 -_02226694: .word Unk_ov18_02251B60 - thumb_func_end ov18_02226680 - - thumb_func_start ov18_02226698 -ov18_02226698: ; 0x02226698 - push {r3, lr} - add r0, r1, #0 - ldr r1, _022266A4 ; =0x02251B6C - ldr r1, [r1, #0] - blx r1 - pop {r3, pc} - ; .align 2, 0 -_022266A4: .word Unk_ov18_02251B6C - thumb_func_end ov18_02226698 - - thumb_func_start ov18_022266A8 -ov18_022266A8: ; 0x022266A8 - push {r3, r4, r5, lr} - add r5, r1, #0 - add r4, r2, #0 - bl ov18_022267F8 - ldr r1, _022266F4 ; =0x02249794 - str r0, [r1, #0x18] - add r0, r5, #0 - bl ov18_022267F8 - ldr r1, _022266F4 ; =0x02249794 - str r0, [r1, #0x1c] - add r0, r4, #0 - bl ov18_022267F8 - ldr r1, _022266F4 ; =0x02249794 - str r0, [r1, #0x20] - ldr r0, _022266F8 ; =0x0224979C - bl SOC_Startup - cmp r0, #0 - bge _022266DA - mov r0, #0 - mvn r0, r0 - pop {r3, r4, r5, pc} -_022266DA: - ldr r5, _022266FC ; =0x0221DE40 - ldr r0, [r5, #0] - cmp r0, #0 - bne _022266F0 - mov r4, #0x64 -_022266E4: - add r0, r4, #0 - bl OS_Sleep - ldr r0, [r5, #0] - cmp r0, #0 - beq _022266E4 -_022266F0: - mov r0, #0 - pop {r3, r4, r5, pc} - ; .align 2, 0 -_022266F4: .word Unk_ov18_02249794 -_022266F8: .word Unk_ov18_0224979C -_022266FC: .word CPSMyIp - thumb_func_end ov18_022266A8 - - thumb_func_start ov18_02226700 -ov18_02226700: ; 0x02226700 - push {r3, lr} - bl SOC_Cleanup - cmp r0, #0 - bge _02226710 - mov r0, #0 - mvn r0, r0 - pop {r3, pc} -_02226710: - bl ov18_02226B54 - cmp r0, #0 - beq _0222671C - mov r0, #1 - b _0222671E -_0222671C: - mov r0, #0 -_0222671E: - neg r0, r0 - pop {r3, pc} - ; .align 2, 0 - thumb_func_end ov18_02226700 - - thumb_func_start ov18_02226724 -ov18_02226724: ; 0x02226724 - push {r3, r4} - mov r3, #0 - b _0222672E -_0222672A: - add r0, r0, #1 - add r1, r1, #1 -_0222672E: - add r4, r2, #0 - sub r2, r2, #1 - cmp r4, #0 - ble _0222673E - ldrb r4, [r0] - ldrb r3, [r1] - sub r3, r4, r3 - beq _0222672A -_0222673E: - add r0, r3, #0 - pop {r3, r4} - bx lr - thumb_func_end ov18_02226724 - - thumb_func_start ov18_02226744 -ov18_02226744: ; 0x02226744 - add r3, r0, #0 - add r0, r1, #0 - add r1, r3, #0 - ldr r3, _02226750 ; =MI_CpuCopy8 - bx r3 - nop -_02226750: .word MI_CpuCopy8 - thumb_func_end ov18_02226744 - - thumb_func_start ov18_02226754 -ov18_02226754: ; 0x02226754 - ldr r3, _0222675C ; =MI_CpuFill8 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - bx r3 - ; .align 2, 0 -_0222675C: .word MI_CpuFill8 - thumb_func_end ov18_02226754 - - thumb_func_start ov18_02226760 -ov18_02226760: ; 0x02226760 - push {r3, r4, r5, lr} - ldr r4, [sp, #0x14] - ldr r5, [r4, #0] - ldr r4, [sp, #0x10] - strb r5, [r4] - str r4, [sp] - bl SOC_RecvFrom - pop {r3, r4, r5, pc} - ; .align 2, 0 - thumb_func_end ov18_02226760 - - thumb_func_start ov18_02226774 -ov18_02226774: ; 0x02226774 - push {r4, r5, r6, lr} - sub sp, #8 - ldr r2, [r1, #0] - ldr r0, [r1, #4] - ldr r5, [sp, #0x18] - str r2, [sp] - str r0, [sp, #4] - ldr r0, [r5, #0] - mov r4, #0 - ldr r2, _022267C4 ; =0x01FF6210 - asr r1, r0, #0x1f - add r3, r4, #0 - bl _ull_mul - lsr r3, r0, #6 - lsl r2, r1, #0x1a - orr r3, r2 - lsr r0, r1, #6 - add r6, r4, r3 - adc r4, r0 - ldr r0, [r5, #4] - ldr r2, _022267C4 ; =0x01FF6210 - asr r1, r0, #0x1f - mov r3, #0 - bl _ull_mul - lsr r3, r0, #6 - lsl r2, r1, #0x1a - orr r3, r2 - lsr r0, r1, #6 - add r2, r6, r3 - adc r4, r0 - add r0, sp, #0 - mov r1, #1 - add r3, r4, #0 - bl SOC_Poll - add sp, #8 - pop {r4, r5, r6, pc} - nop -_022267C4: .word 0x01FF6210 - thumb_func_end ov18_02226774 - - thumb_func_start ov18_022267C8 -ov18_022267C8: ; 0x022267C8 - push {r3, r4, r5, lr} - ldr r5, [sp, #0x14] - ldr r4, [sp, #0x10] - strb r5, [r4] - str r4, [sp] - bl SOC_SendTo - pop {r3, r4, r5, pc} - thumb_func_end ov18_022267C8 - - thumb_func_start ov18_022267D8 -ov18_022267D8: ; 0x022267D8 - bx lr - ; .align 2, 0 - thumb_func_end ov18_022267D8 - - thumb_func_start ov18_022267DC -ov18_022267DC: ; 0x022267DC - ldr r3, _022267E0 ; =ov18_02208324 - bx r3 - ; .align 2, 0 -_022267E0: .word SOC_Socket - thumb_func_end ov18_022267DC - - thumb_func_start ov18_022267E4 -ov18_022267E4: ; 0x022267E4 - ldr r3, _022267EC ; =ov18_02208350 - strb r2, [r1] - bx r3 - nop -_022267EC: .word SOC_Bind - thumb_func_end ov18_022267E4 - - thumb_func_start ov18_022267F0 -ov18_022267F0: ; 0x022267F0 - ldr r3, _022267F4 ; =ov18_02208540 - bx r3 - ; .align 2, 0 -_022267F4: .word SOC_Close - thumb_func_end ov18_022267F0 - - thumb_func_start ov18_022267F8 -ov18_022267F8: ; 0x022267F8 - push {r4, r5} - mov r3, #0xff - lsl r1, r0, #0x18 - lsl r3, r3, #0x18 - add r2, r1, #0 - lsl r4, r0, #8 - lsr r1, r3, #8 - and r1, r4 - lsr r4, r0, #0x18 - lsl r4, r4, #0x18 - lsr r5, r4, #0x18 - lsr r4, r0, #8 - lsr r0, r3, #0x10 - and r0, r4 - orr r0, r5 - and r2, r3 - orr r0, r1 - orr r0, r2 - pop {r4, r5} - bx lr - thumb_func_end ov18_022267F8 - - thumb_func_start ov18_02226820 -ov18_02226820: ; 0x02226820 - asr r1, r0, #8 - lsl r1, r1, #0x18 - lsr r2, r1, #0x18 - lsl r1, r0, #8 - mov r0, #0xff - lsl r0, r0, #8 - and r0, r1 - orr r0, r2 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bx lr - ; .align 2, 0 - thumb_func_end ov18_02226820 - - thumb_func_start ov18_02226838 -ov18_02226838: ; 0x02226838 - push {r4, r5} - mov r3, #0xff - lsl r1, r0, #0x18 - lsl r3, r3, #0x18 - add r2, r1, #0 - lsl r4, r0, #8 - lsr r1, r3, #8 - and r1, r4 - lsr r4, r0, #0x18 - lsl r4, r4, #0x18 - lsr r5, r4, #0x18 - lsr r4, r0, #8 - lsr r0, r3, #0x10 - and r0, r4 - orr r0, r5 - and r2, r3 - orr r0, r1 - orr r0, r2 - pop {r4, r5} - bx lr - thumb_func_end ov18_02226838 - - thumb_func_start ov18_02226860 -ov18_02226860: ; 0x02226860 - asr r1, r0, #8 - lsl r1, r1, #0x18 - lsr r2, r1, #0x18 - lsl r1, r0, #8 - mov r0, #0xff - lsl r0, r0, #8 - and r0, r1 - orr r0, r2 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bx lr - ; .align 2, 0 - thumb_func_end ov18_02226860 - - thumb_func_start ov18_02226878 -ov18_02226878: ; 0x02226878 - mov r2, #0 - ldrsb r1, [r0, r2] - cmp r1, #0 - beq _02226888 -_02226880: - add r2, r2, #1 - ldrsb r1, [r0, r2] - cmp r1, #0 - bne _02226880 -_02226888: - add r0, r2, #0 - bx lr - thumb_func_end ov18_02226878 - - thumb_func_start ov18_0222688C -ov18_0222688C: ; 0x0222688C - push {r3, r4, lr} - sub sp, #0xc - ldr r0, _022268EC ; =0x02250D78 - ldr r0, [r0, #8] - cmp r0, #0 - bne _022268CE - mov r4, #0 - add r0, sp, #0 - add r1, r4, #0 - mov r2, #0xc - bl ov18_02226754 - add r0, sp, #0 - bl RTC_GetTime - cmp r0, #0 - bne _022268BE - ldr r0, [sp] - lsl r0, r0, #0xa - add r1, r4, r0 - ldr r0, [sp, #4] - lsl r0, r0, #3 - add r1, r1, r0 - ldr r0, [sp, #8] - add r4, r1, r0 -_022268BE: - ldr r0, _022268EC ; =0x02250D78 - ldr r1, _022268F0 ; =0x5D588B65 - str r4, [r0, #0x18] - str r1, [r0, #0x1c] - ldr r1, _022268F4 ; =0x00269EC3 - str r1, [r0, #0x20] - mov r1, #1 - str r1, [r0, #8] -_022268CE: - ldr r0, _022268EC ; =0x02250D78 - ldr r2, [r0, #0x1c] - ldr r1, [r0, #0x18] - ldr r3, [r0, #0x20] - mul r1, r2 - add r1, r3, r1 - str r1, [r0, #0x18] - ldr r0, _022268F8 ; =0x00007FFF - lsr r1, r1, #0x10 - mul r0, r1 - lsr r0, r0, #0x10 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - add sp, #0xc - pop {r3, r4, pc} - ; .align 2, 0 -_022268EC: .word Unk_ov18_02250D78 -_022268F0: .word 0x5D588B65 -_022268F4: .word 0x00269EC3 -_022268F8: .word 0x00007FFF - thumb_func_end ov18_0222688C - - thumb_func_start ov18_022268FC -ov18_022268FC: ; 0x022268FC - mov r1, #0 - str r1, [r0, #0] - strh r1, [r0, #4] - strh r1, [r0, #6] - bx lr - ; .align 2, 0 - thumb_func_end ov18_022268FC - - thumb_func_start ov18_02226908 -ov18_02226908: ; 0x02226908 - str r0, [r1, #0] - mov r0, #1 - strh r0, [r1, #4] - bx lr - thumb_func_end ov18_02226908 - - .rodata - - - .global Unk_ov18_02246458 -Unk_ov18_02246458: ; 0x02246458 - .byte 0xFF, 0xFF, 0xFF, 0xFF - - - - .data - - - .global Unk_ov18_02249790 -Unk_ov18_02249790: ; 0x02249790 - .word 0x809 - - .global Unk_ov18_02249794 -Unk_ov18_02249794: ; 0x02249794 - .word 0xFFFFFFFF - - .global Unk_ov18_02249798 -Unk_ov18_02249798: ; 0x02249798 - .word 0xFFFFFFFF - - .global Unk_ov18_0224979C -Unk_ov18_0224979C: ; 0x0224979C - .word 0x01000000 - .word ov18_02226680 - .word ov18_02226698 - .space 0x18 - .word 0x1000 - .word 0x1000 - .space 0x2C - - .global Unk_ov18_022497F4 -Unk_ov18_022497F4: ; 0x022497F4 - .ascii "ESSID-AOSS" - .space 0x2 - - .global Unk_ov18_02249800 -Unk_ov18_02249800: ; 0x02249800 - .asciz "MELCO" - - - - .bss - - - .global Unk_ov18_02250D78 -Unk_ov18_02250D78: ; 0x02250D78 - .space 0x4 - - .global Unk_ov18_02250D7C -Unk_ov18_02250D7C: ; 0x02250D7C - .space 0x4 - - .global Unk_ov18_02250D80 -Unk_ov18_02250D80: ; 0x02250D80 - .space 0x4 - - .global Unk_ov18_02250D84 -Unk_ov18_02250D84: ; 0x02250D84 - .space 0x4 - - .global Unk_ov18_02250D88 -Unk_ov18_02250D88: ; 0x02250D88 - .space 0x4 - - .global Unk_ov18_02250D8C -Unk_ov18_02250D8C: ; 0x02250D8C - .space 0x4 - - .global Unk_ov18_02250D90 -Unk_ov18_02250D90: ; 0x02250D90 - .space 0xC - - .global Unk_ov18_02250D9C -Unk_ov18_02250D9C: ; 0x02250D9C - .space 0x1C - - .global Unk_ov18_02250DB8 -Unk_ov18_02250DB8: ; 0x02250DB8 - .space 0x280 - - .global Unk_ov18_02251038 -Unk_ov18_02251038: ; 0x02251038 - .space 0x400 - - .global Unk_ov18_02251438 -Unk_ov18_02251438: ; 0x02251438 - .space 0x6A0 - - .global Unk_ov18_02251AD8 -Unk_ov18_02251AD8: ; 0x02251AD8 - .space 0x8 - - .global Unk_ov18_02251AE0 -Unk_ov18_02251AE0: ; 0x02251AE0 - .space 0x80 - diff --git a/subprojects/NitroDWC/libraries/util/asm/aosslink.s b/subprojects/NitroDWC/libraries/util/asm/aosslink.s deleted file mode 100644 index d396be670e..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/aosslink.s +++ /dev/null @@ -1,879 +0,0 @@ - .include "macros/function.inc" - .include "include/aosslink.inc" - - - - .text - - - thumb_func_start ov18_02226910 -ov18_02226910: ; 0x02226910 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - ldrh r0, [r5, #0xa] - add r4, r1, #0 - add r1, r4, #4 - str r0, [r4, #0] - add r0, r5, #0 - add r0, #0xc - mov r2, #0x20 - bl MIi_CpuCopy16 - ldrh r0, [r5, #0x36] - add r1, r4, #0 - add r1, #0x30 - str r0, [r4, #0x24] - add r0, r5, #4 - mov r2, #6 - bl MIi_CpuCopy16 - mov r1, #0 - ldr r2, _02226998 ; =0x02249808 - add r0, r1, #0 - mov r6, #0x80 -_0222693E: - ldrh r7, [r5, #0x30] - ldrh r3, [r2] - tst r3, r7 - beq _02226968 - ldrb r7, [r2, #2] - add r3, r4, r1 - add r3, #0x3c - strb r7, [r3] - ldrh r7, [r5, #0x2e] - ldrh r3, [r2] - tst r3, r7 - beq _02226966 - add r3, r4, r1 - add r3, #0x3c - ldrb r3, [r3] - add r7, r3, #0 - add r3, r4, r1 - orr r7, r6 - add r3, #0x3c - strb r7, [r3] -_02226966: - add r1, r1, #1 -_02226968: - add r0, r0, #1 - add r2, r2, #4 - cmp r0, #0xc - blt _0222693E - str r1, [r4, #0x38] - ldrh r0, [r5, #0x32] - str r0, [r4, #0x4c] - ldrh r1, [r5, #0x2c] - mov r0, #3 - and r0, r1 - cmp r0, #1 - bne _02226986 - mov r0, #1 - str r0, [r4, #0x50] - pop {r3, r4, r5, r6, r7, pc} -_02226986: - cmp r0, #2 - bne _02226990 - mov r0, #2 - str r0, [r4, #0x50] - pop {r3, r4, r5, r6, r7, pc} -_02226990: - mov r0, #0 - str r0, [r4, #0x50] - pop {r3, r4, r5, r6, r7, pc} - nop -_02226998: .word Unk_ov18_02249808 - thumb_func_end ov18_02226910 - - thumb_func_start ov18_0222699C -ov18_0222699C: ; 0x0222699C - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - mov r0, #0 - add r1, #0xc - mov r2, #0x20 - bl MIi_CpuClear16 - ldr r0, [r5, #0] - add r1, r4, #0 - strh r0, [r4, #0xa] - ldrh r2, [r4, #0xa] - add r0, r5, #4 - add r1, #0xc - bl MI_CpuCopy8 - pop {r3, r4, r5, pc} - ; .align 2, 0 - thumb_func_end ov18_0222699C - - thumb_func_start ov18_022269C0 -ov18_022269C0: ; 0x022269C0 - add r3, r0, #0 - add r0, r1, #0 - str r2, [r3, #0] - add r1, r3, #4 - ldr r3, _022269CC ; =ov18_02226910 - bx r3 - ; .align 2, 0 -_022269CC: .word ov18_02226910 - thumb_func_end ov18_022269C0 - - thumb_func_start ov18_022269D0 -ov18_022269D0: ; 0x022269D0 - ldr r3, _022269DC ; =OS_SendMessage - add r1, r0, #0 - ldr r0, _022269E0 ; =0x02251B80 - mov r2, #0 - bx r3 - nop -_022269DC: .word OS_SendMessage -_022269E0: .word Unk_ov18_02251B80 - thumb_func_end ov18_022269D0 - - thumb_func_start ov18_022269E4 -ov18_022269E4: ; 0x022269E4 - ldr r3, _022269F0 ; =OS_SendMessage - add r1, r0, #0 - ldr r0, _022269F4 ; =0x02251B80 - mov r2, #0 - bx r3 - nop -_022269F0: .word OS_SendMessage -_022269F4: .word Unk_ov18_02251B80 - thumb_func_end ov18_022269E4 - - thumb_func_start ov18_022269F8 -ov18_022269F8: ; 0x022269F8 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - add r6, r1, #0 - ldr r0, _02226AA8 ; =0x02251B80 - ldr r1, _02226AAC ; =0x02251B70 - mov r2, #4 - mov r4, #1 - bl OS_InitMessageQueue - cmp r5, #0 - beq _02226A12 - cmp r6, #0 - bne _02226A18 -_02226A12: - mov r0, #0 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02226A18: - bl OS_DisableInterrupts - ldr r1, _02226AB0 ; =0x02251B60 - str r5, [r1, #0] - str r6, [r1, #0xc] - bl OS_RestoreInterrupts - ldr r1, _02226AB0 ; =0x02251B60 - ldr r0, _02226AB4 ; =0x00005890 - ldr r1, [r1, #0] - blx r1 - add r1, r0, #0 - ldr r0, _02226AB0 ; =0x02251B60 - str r1, [r0, #8] - bne _02226A3A - sub r0, r4, #2 - pop {r3, r4, r5, r6, r7, pc} -_02226A3A: - ldr r0, _02226AB8 ; =ov18_022269D0 - ldr r2, _02226AB4 ; =0x00005890 - bl ov18_02227494 - cmp r0, #0 - bne _02226A48 - mov r4, #0 -_02226A48: - cmp r4, #0 - beq _02226A98 - ldr r5, _02226AA8 ; =0x02251B80 - add r6, sp, #0 - mov r7, #1 -_02226A52: - add r0, r5, #0 - add r1, r6, #0 - add r2, r7, #0 - bl OS_ReceiveMessage - ldr r0, [sp] - cmp r0, #0xf - bhi _02226A92 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02226A6E: ; jump table - .short _02226A92 - _02226A6E - 2 ; case 0 - .short _02226A92 - _02226A6E - 2 ; case 1 - .short _02226A92 - _02226A6E - 2 ; case 2 - .short _02226A92 - _02226A6E - 2 ; case 3 - .short _02226A94 - _02226A6E - 2 ; case 4 - .short _02226A94 - _02226A6E - 2 ; case 5 - .short _02226A8E - _02226A6E - 2 ; case 6 - .short _02226A92 - _02226A6E - 2 ; case 7 - .short _02226A92 - _02226A6E - 2 ; case 8 - .short _02226A92 - _02226A6E - 2 ; case 9 - .short _02226A92 - _02226A6E - 2 ; case 10 - .short _02226A92 - _02226A6E - 2 ; case 11 - .short _02226A92 - _02226A6E - 2 ; case 12 - .short _02226A92 - _02226A6E - 2 ; case 13 - .short _02226A92 - _02226A6E - 2 ; case 14 - .short _02226A92 - _02226A6E - 2 ; case 15 -_02226A8E: - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_02226A92: - mov r4, #0 -_02226A94: - cmp r4, #0 - bne _02226A52 -_02226A98: - ldr r1, _02226AB0 ; =0x02251B60 - ldr r0, [r1, #8] - ldr r1, [r1, #0xc] - blx r1 - mov r0, #0 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} - nop -_02226AA8: .word Unk_ov18_02251B80 -_02226AAC: .word Unk_ov18_02251B70 -_02226AB0: .word Unk_ov18_02251B60 -_02226AB4: .word 0x00005890 -_02226AB8: .word ov18_022269D0 - thumb_func_end ov18_022269F8 - - thumb_func_start ov18_02226ABC -ov18_02226ABC: ; 0x02226ABC - push {r3, r4, r5, r6, r7, lr} - ldr r0, _02226B4C ; =0x02251B60 - mov r4, #1 - ldr r0, [r0, #0xc] - sub r5, r4, #2 - cmp r0, #0 - bne _02226ACE - add r0, r5, #0 - pop {r3, r4, r5, r6, r7, pc} -_02226ACE: - bl ov18_022273B8 - cmp r0, #0 - bne _02226ADA - sub r0, r4, #2 - pop {r3, r4, r5, r6, r7, pc} -_02226ADA: - ldr r7, _02226B50 ; =0x02251B80 - ldr r6, _02226B4C ; =0x02251B60 -_02226ADE: - add r0, r7, #0 - add r1, sp, #0 - mov r2, #1 - bl OS_ReceiveMessage - ldr r0, [sp] - cmp r0, #0x14 - bhi _02226B30 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02226AFA: ; jump table - .short _02226B30 - _02226AFA - 2 ; case 0 - .short _02226B30 - _02226AFA - 2 ; case 1 - .short _02226B30 - _02226AFA - 2 ; case 2 - .short _02226B30 - _02226AFA - 2 ; case 3 - .short _02226B32 - _02226AFA - 2 ; case 4 - .short _02226B32 - _02226AFA - 2 ; case 5 - .short _02226B30 - _02226AFA - 2 ; case 6 - .short _02226B30 - _02226AFA - 2 ; case 7 - .short _02226B30 - _02226AFA - 2 ; case 8 - .short _02226B30 - _02226AFA - 2 ; case 9 - .short _02226B30 - _02226AFA - 2 ; case 10 - .short _02226B30 - _02226AFA - 2 ; case 11 - .short _02226B30 - _02226AFA - 2 ; case 12 - .short _02226B30 - _02226AFA - 2 ; case 13 - .short _02226B30 - _02226AFA - 2 ; case 14 - .short _02226B30 - _02226AFA - 2 ; case 15 - .short _02226B30 - _02226AFA - 2 ; case 16 - .short _02226B30 - _02226AFA - 2 ; case 17 - .short _02226B30 - _02226AFA - 2 ; case 18 - .short _02226B30 - _02226AFA - 2 ; case 19 - .short _02226B24 - _02226AFA - 2 ; case 20 -_02226B24: - ldr r0, [r6, #8] - mov r4, #0 - ldr r1, [r6, #0xc] - add r5, r4, #0 - blx r1 - b _02226B32 -_02226B30: - mov r4, #0 -_02226B32: - cmp r4, #0 - bne _02226ADE - bl OS_DisableInterrupts - ldr r1, _02226B4C ; =0x02251B60 - mov r2, #0 - str r2, [r1, #0] - str r2, [r1, #0xc] - bl OS_RestoreInterrupts - add r0, r5, #0 - pop {r3, r4, r5, r6, r7, pc} - nop -_02226B4C: .word Unk_ov18_02251B60 -_02226B50: .word Unk_ov18_02251B80 - thumb_func_end ov18_02226ABC - - thumb_func_start ov18_02226B54 -ov18_02226B54: ; 0x02226B54 - push {r3, r4, r5, r6, r7, lr} - mov r5, #0 - mvn r5, r5 - bl ov18_02227380 - cmp r0, #0 - beq _02226B84 - ldr r4, _02226B88 ; =0x02251B80 - add r6, sp, #0 - mov r7, #1 -_02226B68: - add r0, r4, #0 - add r1, r6, #0 - add r2, r7, #0 - bl OS_ReceiveMessage - ldr r0, [sp] - cmp r0, #0xe - bne _02226B7E - mov r0, #0 - add r5, r0, #0 - b _02226B80 -_02226B7E: - mov r0, #0 -_02226B80: - cmp r0, #0 - bne _02226B68 -_02226B84: - add r0, r5, #0 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02226B88: .word Unk_ov18_02251B80 - thumb_func_end ov18_02226B54 - - thumb_func_start ov18_02226B8C -ov18_02226B8C: ; 0x02226B8C - push {r4, r5, r6, r7, lr} - sub sp, #0x44 - str r0, [sp, #4] - mov r0, #0 - mvn r0, r0 - str r0, [sp, #0x10] - mov r0, #1 - str r0, [sp, #0xc] - mov r6, #0 - ldr r0, _02226CF0 ; =0x02251B60 - add r7, r6, #0 - ldr r1, [r0, #0] - add r5, r6, #0 - cmp r1, #0 - beq _02226BB0 - ldr r0, [r0, #0xc] - cmp r0, #0 - bne _02226BB8 -_02226BB0: - mov r0, #0 - add sp, #0x44 - mvn r0, r0 - pop {r4, r5, r6, r7, pc} -_02226BB8: - mov r0, #3 - lsl r0, r0, #0xc - blx r1 - add r4, r0, #0 - bne _02226BC8 - add sp, #0x44 - sub r0, r6, #1 - pop {r4, r5, r6, r7, pc} -_02226BC8: - add r0, r6, #0 - ldr r3, _02226CF4 ; =0x0030BFFE - add r1, r0, #0 - add r2, r0, #0 - str r4, [sp, #8] - bl ov18_02227254 - cmp r0, #0 - bne _02226BDC - b _02226CE0 -_02226BDC: - add r0, sp, #0x18 - bl OS_CreateAlarm - mov r0, #0x13 - str r0, [sp] - ldr r1, _02226CF8 ; =0x003FEC42 - ldr r3, _02226CFC ; =ov18_022269E4 - add r0, sp, #0x18 - add r2, r6, #0 - bl OS_SetAlarm -_02226BF2: - ldr r0, _02226D00 ; =0x02251B80 - add r1, sp, #0x14 - mov r2, #1 - bl OS_ReceiveMessage - ldr r0, [sp, #0x14] - cmp r0, #0x13 - bhi _02226CC6 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02226C0E: ; jump table - .short _02226CC6 - _02226C0E - 2 ; case 0 - .short _02226CC6 - _02226C0E - 2 ; case 1 - .short _02226CC6 - _02226C0E - 2 ; case 2 - .short _02226CC6 - _02226C0E - 2 ; case 3 - .short _02226C7C - _02226C0E - 2 ; case 4 - .short _02226C54 - _02226C0E - 2 ; case 5 - .short _02226CC6 - _02226C0E - 2 ; case 6 - .short _02226CC6 - _02226C0E - 2 ; case 7 - .short _02226C7C - _02226C0E - 2 ; case 8 - .short _02226CC6 - _02226C0E - 2 ; case 9 - .short _02226C76 - _02226C0E - 2 ; case 10 - .short _02226CC6 - _02226C0E - 2 ; case 11 - .short _02226CC6 - _02226C0E - 2 ; case 12 - .short _02226CC6 - _02226C0E - 2 ; case 13 - .short _02226CC6 - _02226C0E - 2 ; case 14 - .short _02226CC6 - _02226C0E - 2 ; case 15 - .short _02226CC6 - _02226C0E - 2 ; case 16 - .short _02226CC6 - _02226C0E - 2 ; case 17 - .short _02226C7C - _02226C0E - 2 ; case 18 - .short _02226C36 - _02226C0E - 2 ; case 19 -_02226C36: - cmp r6, #0 - bne _02226C7C - cmp r5, #0 - beq _02226C48 - add r0, r4, #0 - mov r1, #0x40 - bl ov18_02227210 - add r7, r0, #0 -_02226C48: - bl ov18_02227344 - cmp r0, #0 - beq _02226CC6 - mov r6, #1 - b _02226C7C -_02226C54: - cmp r6, #0 - bne _02226C7C - cmp r5, #8 - bge _02226C60 - add r5, r5, #1 - b _02226C7C -_02226C60: - add r0, r4, #0 - mov r1, #0x40 - bl ov18_02227210 - add r7, r0, #0 - bl ov18_02227344 - cmp r0, #0 - beq _02226CC6 - mov r6, #1 - b _02226C7C -_02226C76: - mov r0, #0 - str r0, [sp, #0xc] - str r0, [sp, #0x10] -_02226C7C: - ldr r0, [sp, #0xc] - cmp r0, #0 - bne _02226BF2 - cmp r7, #0 - beq _02226C9A - sub r1, r7, #1 - mov r0, #0x54 - mul r0, r1 - ldr r1, _02226CF0 ; =0x02251B60 - add r0, #0x58 - ldr r1, [r1, #0] - blx r1 - cmp r0, #0 - bne _02226CA6 - b _02226CC6 -_02226C9A: - ldr r1, _02226CF0 ; =0x02251B60 - mov r0, #0x58 - ldr r1, [r1, #0] - blx r1 - cmp r0, #0 - beq _02226CC6 -_02226CA6: - ldr r1, [sp, #4] - mov r6, #0 - str r0, [r1, #0] - str r7, [r0, #0] - cmp r7, #0 - ble _02226CC6 - add r5, r0, #4 -_02226CB4: - add r0, r4, #0 - add r1, r5, #0 - bl ov18_02226910 - add r6, r6, #1 - add r4, #0xc0 - add r5, #0x54 - cmp r6, r7 - blt _02226CB4 -_02226CC6: - add r0, sp, #0x18 - bl OS_CancelAlarm - ldr r5, _02226D00 ; =0x02251B80 - add r4, sp, #0x14 - mov r6, #0 -_02226CD2: - add r0, r5, #0 - add r1, r4, #0 - add r2, r6, #0 - bl OS_ReceiveMessage - cmp r0, #1 - beq _02226CD2 -_02226CE0: - ldr r1, _02226CF0 ; =0x02251B60 - ldr r0, [sp, #8] - ldr r1, [r1, #0xc] - blx r1 - ldr r0, [sp, #0x10] - add sp, #0x44 - pop {r4, r5, r6, r7, pc} - nop -_02226CF0: .word Unk_ov18_02251B60 -_02226CF4: .word 0x0030BFFE -_02226CF8: .word 0x003FEC42 -_02226CFC: .word ov18_022269E4 -_02226D00: .word Unk_ov18_02251B80 - thumb_func_end ov18_02226B8C - - thumb_func_start ov18_02226D04 -ov18_02226D04: ; 0x02226D04 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x40 - mov r4, #1 - add r7, r0, #0 - sub r0, r4, #2 - str r0, [sp, #0xc] - ldr r0, [r7, #0x24] - mov r6, #0 - str r1, [sp, #4] - cmp r0, #0 - bne _02226D1E - lsl r5, r4, #0x13 - b _02226D26 -_02226D1E: - cmp r0, #1 - bne _02226D26 - mov r5, #3 - lsl r5, r5, #0x12 -_02226D26: - mov r0, #3 - lsl r0, r0, #0x10 - orr r5, r0 - ldr r0, _02226EB8 ; =0x02251C60 - mov r1, #0 - mov r2, #0x60 - bl MI_CpuFill8 - ldr r0, [r7, #0x28] - cmp r0, #5 - bne _02226D44 - ldr r0, _02226EB8 ; =0x02251C60 - mov r1, #1 - strb r1, [r0] - b _02226D64 -_02226D44: - cmp r0, #0xd - bne _02226D50 - ldr r0, _02226EB8 ; =0x02251C60 - mov r1, #2 - strb r1, [r0] - b _02226D64 -_02226D50: - cmp r0, #0x10 - bne _02226D5C - ldr r0, _02226EB8 ; =0x02251C60 - mov r1, #3 - strb r1, [r0] - b _02226D64 -_02226D5C: - mov r0, #0 - add sp, #0x40 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_02226D64: - mov r1, #0x14 - ldr r2, _02226EB8 ; =0x02251C60 - mul r1, r6 - add r1, r1, #2 - add r0, r7, #0 - strb r6, [r2, #1] - add r1, r2, r1 - ldr r2, [r7, #0x28] - add r0, #0x2c - bl MI_CpuCopy8 - bl WCM_ClearApList - ldr r2, [r7, #0] - ldr r3, _02226EBC ; =0x0030BFFE - mov r0, #0 - add r1, r7, #4 - bl ov18_02227254 - cmp r0, #0 - bne _02226D90 - b _02226E9E -_02226D90: - mov r0, #0 - str r0, [sp, #8] - add r0, sp, #0x14 - bl OS_CreateAlarm - mov r0, #0x12 - str r0, [sp] - ldr r1, _02226EC0 ; =0x003FEC42 - ldr r3, _02226EC4 ; =ov18_022269E4 - add r0, sp, #0x14 - mov r2, #0 - bl OS_SetAlarm - b _02226E80 -_02226DAC: - ldr r0, _02226EC8 ; =0x02251B80 - add r1, sp, #0x10 - mov r2, #1 - bl OS_ReceiveMessage - ldr r0, [sp, #0x10] - cmp r0, #0x13 - bhi _02226E7E - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02226DC8: ; jump table - .short _02226E7E - _02226DC8 - 2 ; case 0 - .short _02226E7E - _02226DC8 - 2 ; case 1 - .short _02226E7E - _02226DC8 - 2 ; case 2 - .short _02226E7E - _02226DC8 - 2 ; case 3 - .short _02226E80 - _02226DC8 - 2 ; case 4 - .short _02226DF8 - _02226DC8 - 2 ; case 5 - .short _02226E7E - _02226DC8 - 2 ; case 6 - .short _02226E7E - _02226DC8 - 2 ; case 7 - .short _02226E80 - _02226DC8 - 2 ; case 8 - .short _02226E7E - _02226DC8 - 2 ; case 9 - .short _02226E3E - _02226DC8 - 2 ; case 10 - .short _02226E7E - _02226DC8 - 2 ; case 11 - .short _02226E58 - _02226DC8 - 2 ; case 12 - .short _02226E5E - _02226DC8 - 2 ; case 13 - .short _02226E7E - _02226DC8 - 2 ; case 14 - .short _02226E7E - _02226DC8 - 2 ; case 15 - .short _02226E7E - _02226DC8 - 2 ; case 16 - .short _02226E7E - _02226DC8 - 2 ; case 17 - .short _02226DF0 - _02226DC8 - 2 ; case 18 - .short _02226DF6 - _02226DC8 - 2 ; case 19 -_02226DF0: - cmp r6, #0 - bne _02226E80 - mov r4, #0 -_02226DF6: - b _02226E80 -_02226DF8: - cmp r6, #0 - bne _02226E80 - add r0, sp, #0x14 - bl OS_CancelAlarm - ldr r0, _02226ECC ; =0x02251BA0 - mov r1, #1 - bl ov18_02227210 - cmp r0, #1 - beq _02226E12 - mov r4, #0 - b _02226E80 -_02226E12: - ldr r1, _02226ECC ; =0x02251BA0 - add r0, r7, #0 - bl ov18_0222699C - ldr r1, _02226ED0 ; =0x02251BA0 - mov r0, #0 - ldrh r1, [r1, #0xa] - b _02226E24 -_02226E22: - add r0, r0, #1 -_02226E24: - cmp r0, r1 - blt _02226E22 - ldr r0, _02226ECC ; =0x02251BA0 - ldr r1, _02226EB8 ; =0x02251C60 - add r2, r5, #0 - bl ov18_02227410 - cmp r0, #0 - bne _02226E3A - mov r4, #0 - b _02226E80 -_02226E3A: - mov r6, #1 - b _02226E80 -_02226E3E: - ldr r1, _02226ECC ; =0x02251BA0 - add r0, r7, #0 - bl ov18_0222699C - ldr r0, _02226ECC ; =0x02251BA0 - ldr r1, _02226EB8 ; =0x02251C60 - add r2, r5, #0 - bl ov18_02227410 - cmp r0, #0 - bne _02226E80 - mov r4, #0 - b _02226E80 -_02226E58: - mov r4, #0 - str r4, [sp, #0xc] - b _02226E80 -_02226E5E: - ldr r0, [sp, #8] - add r0, r0, #1 - str r0, [sp, #8] - cmp r0, #3 - bge _02226E7A - ldr r0, _02226ECC ; =0x02251BA0 - ldr r1, _02226EB8 ; =0x02251C60 - add r2, r5, #0 - bl ov18_02227410 - cmp r0, #0 - bne _02226E80 - mov r4, #0 - b _02226E80 -_02226E7A: - mov r4, #0 - b _02226E80 -_02226E7E: - mov r4, #0 -_02226E80: - cmp r4, #0 - bne _02226DAC - add r0, sp, #0x14 - bl OS_CancelAlarm - ldr r5, _02226EC8 ; =0x02251B80 - add r4, sp, #0x10 - mov r6, #0 -_02226E90: - add r0, r5, #0 - add r1, r4, #0 - add r2, r6, #0 - bl OS_ReceiveMessage - cmp r0, #1 - beq _02226E90 -_02226E9E: - ldr r0, [sp, #0xc] - cmp r0, #0 - bne _02226EA8 - mov r2, #1 - b _02226EAA -_02226EA8: - mov r2, #0 -_02226EAA: - ldr r0, [sp, #4] - ldr r1, _02226ECC ; =0x02251BA0 - bl ov18_022269C0 - ldr r0, [sp, #0xc] - add sp, #0x40 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02226EB8: .word Unk_ov18_02251C60 -_02226EBC: .word 0x0030BFFE -_02226EC0: .word 0x003FEC42 -_02226EC4: .word ov18_022269E4 -_02226EC8: .word Unk_ov18_02251B80 -_02226ECC: .word Unk_ov18_02251BA0 -_02226ED0: .word Unk_ov18_02251BA0 - thumb_func_end ov18_02226D04 - - thumb_func_start ov18_02226ED4 -ov18_02226ED4: ; 0x02226ED4 - ldr r3, _02226ED8 ; =OS_Sleep - bx r3 - ; .align 2, 0 -_02226ED8: .word OS_Sleep - thumb_func_end ov18_02226ED4 - - thumb_func_start ov18_02226EDC -ov18_02226EDC: ; 0x02226EDC - push {r3, lr} - ldr r1, _02226EEC ; =0x02251B60 - ldr r1, [r1, #4] - cmp r1, #0 - beq _02226EE8 - blx r1 -_02226EE8: - mov r0, #0 - pop {r3, pc} - ; .align 2, 0 -_02226EEC: .word Unk_ov18_02251B60 - thumb_func_end ov18_02226EDC - - .data - - - .global Unk_ov18_02249808 -Unk_ov18_02249808: ; 0x02249808 - .short 0x1 - .short 0x2 - .short 0x2 - .short 0x4 - .short 0x4 - .short 0xB - .short 0x8 - .short 0xC - .short 0x10 - .short 0x12 - .short 0x20 - .short 0x16 - .short 0x40 - .short 0x18 - .short 0x80 - .short 0x24 - .short 0x100 - .short 0x30 - .short 0x200 - .short 0x48 - .short 0x400 - .short 0x60 - .short 0x800 - .short 0x6C - - - .bss - - - .global Unk_ov18_02251B60 -Unk_ov18_02251B60: ; 0x02251B60 - .space 0x4 - - .global Unk_ov18_02251B64 -Unk_ov18_02251B64: ; 0x02251B64 - .space 0x4 - - .global Unk_ov18_02251B68 -Unk_ov18_02251B68: ; 0x02251B68 - .space 0x4 - - .global Unk_ov18_02251B6C -Unk_ov18_02251B6C: ; 0x02251B6C - .space 0x4 - - .global Unk_ov18_02251B70 -Unk_ov18_02251B70: ; 0x02251B70 - .space 0x10 - - .global Unk_ov18_02251B80 -Unk_ov18_02251B80: ; 0x02251B80 - .space 0x20 - - .global Unk_ov18_02251BA0 -Unk_ov18_02251BA0: ; 0x02251BA0 - .space 0xC0 - - .global Unk_ov18_02251C60 -Unk_ov18_02251C60: ; 0x02251C60 - .space 0x60 - diff --git a/subprojects/NitroDWC/libraries/util/asm/apc.s b/subprojects/NitroDWC/libraries/util/asm/apc.s deleted file mode 100644 index c335defb2d..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/apc.s +++ /dev/null @@ -1,906 +0,0 @@ - .include "macros/function.inc" - .include "include/apc.inc" - - - - .extern WCM_Bssid_Any - .extern WCM_Essid_Any - .text - - - thumb_func_start ov18_02226EF0 -ov18_02226EF0: ; 0x02226EF0 - push {r3, lr} - cmp r0, #0 - bne _02226EF8 - b _022271A0 -_02226EF8: - mov r1, #0 - ldrsh r2, [r0, r1] - cmp r2, #7 - bls _02226F02 - b _02227192 -_02226F02: - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_02226F0E: ; jump table - .short _02227192 - _02226F0E - 2 ; case 0 - .short _02226F1E - _02226F0E - 2 ; case 1 - .short _02227146 - _02226F0E - 2 ; case 2 - .short _02226F9E - _02226F0E - 2 ; case 3 - .short _02227002 - _02226F0E - 2 ; case 4 - .short _02226FD0 - _02226F0E - 2 ; case 5 - .short _022270A2 - _02226F0E - 2 ; case 6 - .short _0222717E - _02226F0E - 2 ; case 7 -_02226F1E: - mov r2, #2 - ldrsh r0, [r0, r2] - cmp r0, #0 - bne _02226F8A - ldr r2, _022271A4 ; =0x02251CC0 - ldr r0, [r2, #0x18] - cmp r0, #4 - bne _02226F3E - mov r0, #3 - str r0, [r2, #0x18] - ldr r2, [r2, #0x1c] - cmp r2, #0 - beq _02226F96 - mov r0, #6 - blx r2 - pop {r3, pc} -_02226F3E: - cmp r0, #6 - bne _02226F64 - ldr r0, [r2, #0x10] - ldr r1, [r2, #0x14] - ldr r2, [r2, #4] - bl WCM_SearchAsync - cmp r0, #3 - beq _02226F96 - ldr r0, _022271A4 ; =0x02251CC0 - mov r1, #3 - str r1, [r0, #0x18] - ldr r2, [r0, #0x1c] - cmp r2, #0 - beq _02226F96 - mov r0, #2 - mov r1, #0 - blx r2 - pop {r3, pc} -_02226F64: - cmp r0, #8 - bne _02226F96 - ldr r0, [r2, #0x20] - ldr r1, [r2, #0x24] - ldr r2, [r2, #0xc] - bl WCM_ConnectAsync - cmp r0, #3 - beq _02226F96 - ldr r0, _022271A4 ; =0x02251CC0 - mov r1, #3 - str r1, [r0, #0x18] - ldr r2, [r0, #0x1c] - cmp r2, #0 - beq _02226F96 - mov r0, #2 - mov r1, #0 - blx r2 - pop {r3, pc} -_02226F8A: - ldr r0, _022271A4 ; =0x02251CC0 - mov r3, #1 - str r3, [r0, #0x18] - ldr r3, [r0, #0x1c] - cmp r3, #0 - bne _02226F98 -_02226F96: - b _022271A0 -_02226F98: - add r0, r2, #0 - blx r3 - pop {r3, pc} -_02226F9E: - mov r2, #2 - ldrsh r0, [r0, r2] - cmp r0, #0 - bne _02226FBE - ldr r0, _022271A4 ; =0x02251CC0 - ldr r2, [r0, #0x18] - cmp r2, #6 - bne _0222709A - mov r2, #5 - str r2, [r0, #0x18] - ldr r2, [r0, #0x1c] - cmp r2, #0 - beq _0222709A - mov r0, #8 - blx r2 - pop {r3, pc} -_02226FBE: - ldr r0, _022271A4 ; =0x02251CC0 - mov r2, #3 - str r2, [r0, #0x18] - ldr r2, [r0, #0x1c] - cmp r2, #0 - beq _0222709A - mov r0, #9 - blx r2 - pop {r3, pc} -_02226FD0: - mov r2, #2 - ldrsh r0, [r0, r2] - cmp r0, #0 - bne _02226FF0 - ldr r0, _022271A4 ; =0x02251CC0 - ldr r2, [r0, #0x18] - cmp r2, #8 - bne _0222709A - mov r2, #7 - str r2, [r0, #0x18] - ldr r2, [r0, #0x1c] - cmp r2, #0 - beq _0222709A - mov r0, #0xc - blx r2 - pop {r3, pc} -_02226FF0: - ldr r0, _022271A4 ; =0x02251CC0 - mov r2, #3 - str r2, [r0, #0x18] - ldr r2, [r0, #0x1c] - cmp r2, #0 - beq _0222709A - mov r0, #0xd - blx r2 - pop {r3, pc} -_02227002: - mov r2, #2 - ldrsh r0, [r0, r2] - cmp r0, #0 - bne _0222708E - ldr r2, _022271A4 ; =0x02251CC0 - ldr r0, [r2, #0x18] - cmp r0, #4 - bne _02227022 - mov r0, #3 - str r0, [r2, #0x18] - ldr r2, [r2, #0x1c] - cmp r2, #0 - beq _0222709A - mov r0, #0xa - blx r2 - pop {r3, pc} -_02227022: - cmp r0, #6 - bne _02227048 - ldr r0, [r2, #0x10] - ldr r1, [r2, #0x14] - ldr r2, [r2, #4] - bl WCM_SearchAsync - cmp r0, #3 - beq _0222709A - ldr r0, _022271A4 ; =0x02251CC0 - mov r1, #3 - str r1, [r0, #0x18] - ldr r2, [r0, #0x1c] - cmp r2, #0 - beq _0222709A - mov r0, #2 - mov r1, #0 - blx r2 - pop {r3, pc} -_02227048: - cmp r0, #2 - bne _02227068 - bl WCM_CleanupAsync - cmp r0, #3 - beq _0222709A - ldr r0, _022271A4 ; =0x02251CC0 - mov r1, #3 - str r1, [r0, #0x18] - ldr r2, [r0, #0x1c] - cmp r2, #0 - beq _0222709A - mov r0, #2 - mov r1, #0 - blx r2 - pop {r3, pc} -_02227068: - cmp r0, #8 - bne _0222709A - ldr r0, [r2, #0x20] - ldr r1, [r2, #0x24] - ldr r2, [r2, #0xc] - bl WCM_ConnectAsync - cmp r0, #3 - beq _0222709A - ldr r0, _022271A4 ; =0x02251CC0 - mov r1, #3 - str r1, [r0, #0x18] - ldr r2, [r0, #0x1c] - cmp r2, #0 - beq _0222709A - mov r0, #2 - mov r1, #0 - blx r2 - pop {r3, pc} -_0222708E: - ldr r0, _022271A4 ; =0x02251CC0 - mov r2, #3 - str r2, [r0, #0x18] - ldr r2, [r0, #0x1c] - cmp r2, #0 - bne _0222709C -_0222709A: - b _022271A0 -_0222709C: - mov r0, #0xb - blx r2 - pop {r3, pc} -_022270A2: - mov r2, #2 - ldrsh r0, [r0, r2] - cmp r0, #0 - bne _02227134 - ldr r2, _022271A4 ; =0x02251CC0 - ldr r0, [r2, #0x18] - cmp r0, #4 - bne _022270C2 - mov r0, #3 - str r0, [r2, #0x18] - ldr r2, [r2, #0x1c] - cmp r2, #0 - beq _022271A0 - mov r0, #0xe - blx r2 - pop {r3, pc} -_022270C2: - cmp r0, #6 - bne _022270E8 - ldr r0, [r2, #0x10] - ldr r1, [r2, #0x14] - ldr r2, [r2, #4] - bl WCM_SearchAsync - cmp r0, #3 - beq _022271A0 - ldr r0, _022271A4 ; =0x02251CC0 - mov r1, #3 - str r1, [r0, #0x18] - ldr r2, [r0, #0x1c] - cmp r2, #0 - beq _022271A0 - mov r0, #2 - mov r1, #0 - blx r2 - pop {r3, pc} -_022270E8: - cmp r0, #2 - bne _02227108 - bl WCM_CleanupAsync - cmp r0, #3 - beq _022271A0 - ldr r0, _022271A4 ; =0x02251CC0 - mov r1, #3 - str r1, [r0, #0x18] - ldr r2, [r0, #0x1c] - cmp r2, #0 - beq _022271A0 - mov r0, #2 - mov r1, #0 - blx r2 - pop {r3, pc} -_02227108: - cmp r0, #8 - bne _0222712E - ldr r0, [r2, #0x20] - ldr r1, [r2, #0x24] - ldr r2, [r2, #0xc] - bl WCM_ConnectAsync - cmp r0, #3 - beq _022271A0 - ldr r0, _022271A4 ; =0x02251CC0 - mov r1, #3 - str r1, [r0, #0x18] - ldr r2, [r0, #0x1c] - cmp r2, #0 - beq _022271A0 - mov r0, #2 - mov r1, #0 - blx r2 - pop {r3, pc} -_0222712E: - mov r0, #3 - str r0, [r2, #0x18] - pop {r3, pc} -_02227134: - ldr r0, _022271A4 ; =0x02251CC0 - mov r2, #3 - str r2, [r0, #0x18] - ldr r2, [r0, #0x1c] - cmp r2, #0 - beq _022271A0 - mov r0, #0xf - blx r2 - pop {r3, pc} -_02227146: - mov r2, #2 - ldrsh r0, [r0, r2] - cmp r0, #0 - bne _0222716C - ldr r0, _022271A4 ; =0x02251CC0 - ldr r0, [r0, #0x18] - cmp r0, #2 - bne _022271A0 - bl WCM_Finish - ldr r0, _022271A4 ; =0x02251CC0 - mov r1, #0 - str r1, [r0, #0x18] - ldr r2, [r0, #0x1c] - cmp r2, #0 - beq _022271A0 - mov r0, #0x14 - blx r2 - pop {r3, pc} -_0222716C: - ldr r0, _022271A4 ; =0x02251CC0 - mov r3, #3 - str r3, [r0, #0x18] - ldr r3, [r0, #0x1c] - cmp r3, #0 - beq _022271A0 - add r0, r2, #0 - blx r3 - pop {r3, pc} -_0222717E: - ldr r0, _022271A4 ; =0x02251CC0 - ldr r2, [r0, #0x18] - cmp r2, #5 - bne _022271A0 - ldr r2, [r0, #0x1c] - cmp r2, #0 - beq _022271A0 - mov r0, #5 - blx r2 - pop {r3, pc} -_02227192: - ldr r0, _022271A4 ; =0x02251CC0 - ldr r2, [r0, #0x1c] - cmp r2, #0 - beq _022271A0 - mov r0, #1 - mov r1, #0 - blx r2 -_022271A0: - pop {r3, pc} - nop -_022271A4: .word Unk_ov18_02251CC0 - thumb_func_end ov18_02226EF0 - - thumb_func_start ov18_022271A8 -ov18_022271A8: ; 0x022271A8 - push {r3, lr} - ldr r1, _02227208 ; =0x02251CC0 - ldr r0, [r1, #0x18] - cmp r0, #8 - bhi _022271FE - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_022271BE: ; jump table - .short _022271FE - _022271BE - 2 ; case 0 - .short _022271EE - _022271BE - 2 ; case 1 - .short _022271FE - _022271BE - 2 ; case 2 - .short _022271FE - _022271BE - 2 ; case 3 - .short _022271FE - _022271BE - 2 ; case 4 - .short _022271D0 - _022271BE - 2 ; case 5 - .short _022271FE - _022271BE - 2 ; case 6 - .short _022271E2 - _022271BE - 2 ; case 7 - .short _022271FE - _022271BE - 2 ; case 8 -_022271D0: - mov r0, #0 - add r1, r0, #0 - add r2, r0, #0 - bl WCM_SearchAsync - cmp r0, #3 - beq _02227202 - mov r0, #0 - pop {r3, pc} -_022271E2: - bl WCM_DisconnectAsync - cmp r0, #3 - beq _02227202 - mov r0, #0 - pop {r3, pc} -_022271EE: - ldr r0, [r1, #8] - ldr r1, _0222720C ; =ov18_02226EF0 - bl WCM_StartupAsync - cmp r0, #3 - beq _02227202 - mov r0, #0 - pop {r3, pc} -_022271FE: - mov r0, #0 - pop {r3, pc} -_02227202: - mov r0, #1 - pop {r3, pc} - nop -_02227208: .word Unk_ov18_02251CC0 -_0222720C: .word ov18_02226EF0 - thumb_func_end ov18_022271A8 - - thumb_func_start ov18_02227210 -ov18_02227210: ; 0x02227210 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - mov r0, #1 - add r7, r1, #0 - bl WCM_LockApList - bl WCM_CountApList - add r6, r0, #0 - cmp r6, #0 - ble _02227248 - mov r4, #0 - cmp r6, #0 - ble _02227248 -_0222722C: - cmp r4, r7 - bge _02227248 - lsl r0, r4, #0x10 - lsr r0, r0, #0x10 - bl WCM_PointApList - add r1, r5, #0 - mov r2, #0xc0 - bl MIi_CpuCopy32 - add r4, r4, #1 - add r5, #0xc0 - cmp r4, r6 - blt _0222722C -_02227248: - mov r0, #0 - bl WCM_LockApList - add r0, r6, #0 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 - thumb_func_end ov18_02227210 - - thumb_func_start ov18_02227254 -ov18_02227254: ; 0x02227254 - push {r3, r4, r5, r6, r7, lr} - str r3, [sp] - add r5, r0, #0 - add r4, r1, #0 - add r6, r2, #0 - bl OS_DisableInterrupts - add r7, r0, #0 - ldr r1, _02227330 ; =0x02251CC0 - ldr r0, [sp] - cmp r5, #0 - str r0, [r1, #4] - beq _02227288 - ldr r2, _02227334 ; =0x02251CE8 - mov r1, #0 -_02227272: - ldrb r0, [r5] - add r1, r1, #1 - add r5, r5, #1 - strb r0, [r2] - add r2, r2, #1 - cmp r1, #6 - blt _02227272 - ldr r1, _02227334 ; =0x02251CE8 - ldr r0, _02227330 ; =0x02251CC0 - str r1, [r0, #0x10] - b _02227298 -_02227288: - ldr r0, _02227334 ; =0x02251CE8 - mov r1, #0xff - mov r2, #6 - bl MI_CpuFill8 - ldr r1, _02227338 ; =0x02215E48 - ldr r0, _02227330 ; =0x02251CC0 - str r1, [r0, #0x10] -_02227298: - cmp r4, #0 - beq _022272D6 - cmp r6, #0 - ble _022272D6 - cmp r6, #0x20 - bgt _022272D6 - mov r0, #0 - cmp r6, #0 - ble _022272BA - ldr r2, _0222733C ; =0x02251CF0 -_022272AC: - ldrb r1, [r4] - add r0, r0, #1 - add r4, r4, #1 - strb r1, [r2] - add r2, r2, #1 - cmp r0, r6 - blt _022272AC -_022272BA: - cmp r0, #0x20 - bge _022272CE - ldr r1, _0222733C ; =0x02251CF0 - add r2, r1, r0 - mov r1, #0 -_022272C4: - add r0, r0, #1 - strb r1, [r2] - add r2, r2, #1 - cmp r0, #0x20 - blt _022272C4 -_022272CE: - ldr r1, _0222733C ; =0x02251CF0 - ldr r0, _02227330 ; =0x02251CC0 - str r1, [r0, #0x14] - b _022272E6 -_022272D6: - ldr r0, _0222733C ; =0x02251CF0 - mov r1, #0xff - mov r2, #0x20 - bl MI_CpuFill8 - ldr r1, _02227340 ; =0x02215E50 - ldr r0, _02227330 ; =0x02251CC0 - str r1, [r0, #0x14] -_022272E6: - ldr r2, _02227330 ; =0x02251CC0 - ldr r0, [r2, #0x18] - cmp r0, #3 - bne _0222730C - ldr r0, [r2, #0x10] - ldr r1, [r2, #0x14] - ldr r2, [r2, #4] - bl WCM_SearchAsync - cmp r0, #3 - bne _02227324 - ldr r0, _02227330 ; =0x02251CC0 - mov r1, #6 - str r1, [r0, #0x18] - add r0, r7, #0 - bl OS_RestoreInterrupts - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_0222730C: - bl ov18_022271A8 - cmp r0, #1 - bne _02227324 - ldr r0, _02227330 ; =0x02251CC0 - mov r1, #6 - str r1, [r0, #0x18] - add r0, r7, #0 - bl OS_RestoreInterrupts - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_02227324: - add r0, r7, #0 - bl OS_RestoreInterrupts - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} - nop -_02227330: .word Unk_ov18_02251CC0 -_02227334: .word Unk_ov18_02251CE8 -_02227338: .word WCM_Bssid_Any -_0222733C: .word Unk_ov18_02251CF0 -_02227340: .word WCM_Essid_Any - thumb_func_end ov18_02227254 - - thumb_func_start ov18_02227344 -ov18_02227344: ; 0x02227344 - push {r4, lr} - bl OS_DisableInterrupts - add r4, r0, #0 - ldr r0, _0222737C ; =0x02251CC0 - ldr r0, [r0, #0x18] - cmp r0, #5 - bne _02227372 - mov r0, #0 - add r1, r0, #0 - add r2, r0, #0 - bl WCM_SearchAsync - cmp r0, #3 - bne _02227372 - ldr r0, _0222737C ; =0x02251CC0 - mov r1, #4 - str r1, [r0, #0x18] - add r0, r4, #0 - bl OS_RestoreInterrupts - mov r0, #1 - pop {r4, pc} -_02227372: - add r0, r4, #0 - bl OS_RestoreInterrupts - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 -_0222737C: .word Unk_ov18_02251CC0 - thumb_func_end ov18_02227344 - - thumb_func_start ov18_02227380 -ov18_02227380: ; 0x02227380 - push {r4, lr} - bl OS_DisableInterrupts - add r4, r0, #0 - ldr r0, _022273B4 ; =0x02251CC0 - ldr r0, [r0, #0x18] - cmp r0, #7 - bne _022273A8 - bl WCM_DisconnectAsync - cmp r0, #3 - bne _022273A8 - ldr r0, _022273B4 ; =0x02251CC0 - mov r1, #4 - str r1, [r0, #0x18] - add r0, r4, #0 - bl OS_RestoreInterrupts - mov r0, #1 - pop {r4, pc} -_022273A8: - add r0, r4, #0 - bl OS_RestoreInterrupts - mov r0, #0 - pop {r4, pc} - nop -_022273B4: .word Unk_ov18_02251CC0 - thumb_func_end ov18_02227380 - - thumb_func_start ov18_022273B8 -ov18_022273B8: ; 0x022273B8 - push {r4, lr} - bl OS_DisableInterrupts - add r4, r0, #0 - ldr r0, _0222740C ; =0x02251CC0 - ldr r0, [r0, #0x18] - cmp r0, #3 - bne _022273EA - bl WCM_CleanupAsync - cmp r0, #3 - beq _022273DA - add r0, r4, #0 - bl OS_RestoreInterrupts - mov r0, #0 - pop {r4, pc} -_022273DA: - ldr r0, _0222740C ; =0x02251CC0 - mov r1, #2 - str r1, [r0, #0x18] - add r0, r4, #0 - bl OS_RestoreInterrupts - mov r0, #1 - pop {r4, pc} -_022273EA: - bl ov18_022271A8 - cmp r0, #1 - bne _02227402 - ldr r0, _0222740C ; =0x02251CC0 - mov r1, #2 - str r1, [r0, #0x18] - add r0, r4, #0 - bl OS_RestoreInterrupts - mov r0, #1 - pop {r4, pc} -_02227402: - add r0, r4, #0 - bl OS_RestoreInterrupts - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 -_0222740C: .word Unk_ov18_02251CC0 - thumb_func_end ov18_022273B8 - - thumb_func_start ov18_02227410 -ov18_02227410: ; 0x02227410 - push {r3, r4, r5, r6, r7, lr} - add r7, r0, #0 - add r5, r1, #0 - add r6, r2, #0 - bl OS_DisableInterrupts - ldr r1, _02227490 ; =0x02251CC0 - add r4, r0, #0 - str r6, [r1, #0xc] - cmp r5, #0 - beq _02227432 - ldr r1, [r1, #0x24] - add r0, r5, #0 - mov r2, #0x50 - bl MI_CpuCopy8 - b _0222743C -_02227432: - ldr r0, [r1, #0x24] - mov r1, #0 - mov r2, #0x50 - bl MI_CpuFill8 -_0222743C: - ldr r1, _02227490 ; =0x02251CC0 - add r0, r7, #0 - ldr r1, [r1, #0x20] - mov r2, #0xc0 - bl MIi_CpuCopy32 - bl ov18_022271A8 - cmp r0, #1 - bne _02227460 - ldr r0, _02227490 ; =0x02251CC0 - mov r1, #8 - str r1, [r0, #0x18] - add r0, r4, #0 - bl OS_RestoreInterrupts - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_02227460: - ldr r2, _02227490 ; =0x02251CC0 - ldr r0, [r2, #0x18] - cmp r0, #3 - bne _02227486 - ldr r0, [r2, #0x20] - ldr r1, [r2, #0x24] - ldr r2, [r2, #0xc] - bl WCM_ConnectAsync - cmp r0, #3 - bne _02227486 - ldr r0, _02227490 ; =0x02251CC0 - mov r1, #8 - str r1, [r0, #0x18] - add r0, r4, #0 - bl OS_RestoreInterrupts - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_02227486: - add r0, r4, #0 - bl OS_RestoreInterrupts - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02227490: .word Unk_ov18_02251CC0 - thumb_func_end ov18_02227410 - - thumb_func_start ov18_02227494 -ov18_02227494: ; 0x02227494 - push {r3, r4, r5, r6, r7, lr} - add r5, r1, #0 - add r7, r0, #0 - str r2, [sp] - bl OS_DisableInterrupts - add r4, r0, #0 - add r0, r5, #0 - ldr r2, _02227540 ; =0x02251CC0 - add r0, #0x53 - mov r1, #3 - bic r0, r1 - add r6, r0, #0 - str r5, [r2, #0x24] - add r6, #0x2f - mov r1, #0x1f - ldr r3, _02227544 ; =0x0000231F - str r0, [r2, #8] - bic r6, r1 - str r6, [r2, #0] - add r6, r6, r3 - bic r6, r1 - str r6, [r2, #0x20] - add r6, #0xdf - bic r6, r1 - str r6, [r0, #4] - ldr r1, [sp] - ldr r0, [r2, #8] - add r5, r5, r1 - ldr r1, [r0, #4] - sub r1, r5, r1 - str r1, [r0, #8] - ldr r0, [r2, #8] - mov r1, #0 - str r1, [r0, #0xc] - ldr r0, [r2, #8] - mov r1, #3 - str r1, [r0, #0] - str r7, [r2, #0x1c] - ldr r0, [r2, #0x18] - cmp r0, #0 - bne _02227506 - sub r3, #0x1f - ldr r0, [r2, #0] - add r1, r3, #0 - bl WCM_Init - cmp r0, #0 - beq _02227500 - add r0, r4, #0 - bl OS_RestoreInterrupts - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_02227500: - ldr r0, _02227540 ; =0x02251CC0 - mov r1, #1 - str r1, [r0, #0x18] -_02227506: - ldr r0, _02227540 ; =0x02251CC0 - ldr r1, [r0, #0x18] - cmp r1, #1 - bne _02227534 - ldr r0, [r0, #8] - ldr r1, _02227548 ; =ov18_02226EF0 - bl WCM_StartupAsync - cmp r0, #3 - beq _02227524 - add r0, r4, #0 - bl OS_RestoreInterrupts - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_02227524: - ldr r0, _02227540 ; =0x02251CC0 - mov r1, #4 - str r1, [r0, #0x18] - add r0, r4, #0 - bl OS_RestoreInterrupts - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_02227534: - add r0, r4, #0 - bl OS_RestoreInterrupts - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} - nop -_02227540: .word Unk_ov18_02251CC0 -_02227544: .word 0x0000231F -_02227548: .word ov18_02226EF0 - thumb_func_end ov18_02227494 - - .bss - - - .global Unk_ov18_02251CC0 -Unk_ov18_02251CC0: ; 0x02251CC0 - .space 0x4 - - .global Unk_ov18_02251CC4 -Unk_ov18_02251CC4: ; 0x02251CC4 - .space 0x4 - - .global Unk_ov18_02251CC8 -Unk_ov18_02251CC8: ; 0x02251CC8 - .space 0x4 - - .global Unk_ov18_02251CCC -Unk_ov18_02251CCC: ; 0x02251CCC - .space 0x4 - - .global Unk_ov18_02251CD0 -Unk_ov18_02251CD0: ; 0x02251CD0 - .space 0x4 - - .global Unk_ov18_02251CD4 -Unk_ov18_02251CD4: ; 0x02251CD4 - .space 0x4 - - .global Unk_ov18_02251CD8 -Unk_ov18_02251CD8: ; 0x02251CD8 - .space 0x4 - - .global Unk_ov18_02251CDC -Unk_ov18_02251CDC: ; 0x02251CDC - .space 0x4 - - .global Unk_ov18_02251CE0 -Unk_ov18_02251CE0: ; 0x02251CE0 - .space 0x4 - - .global Unk_ov18_02251CE4 -Unk_ov18_02251CE4: ; 0x02251CE4 - .space 0x4 - - .global Unk_ov18_02251CE8 -Unk_ov18_02251CE8: ; 0x02251CE8 - .space 0x8 - - .global Unk_ov18_02251CF0 -Unk_ov18_02251CF0: ; 0x02251CF0 - .space 0x20 - diff --git a/subprojects/NitroDWC/libraries/util/asm/archive.s b/subprojects/NitroDWC/libraries/util/asm/archive.s deleted file mode 100644 index f112937b1b..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/archive.s +++ /dev/null @@ -1,386 +0,0 @@ - .include "macros/function.inc" - .include "include/archive.inc" - - - - .text - - - arm_func_start ov18_02243440 -ov18_02243440: ; 0x02243440 - stmfd sp!, {r4, lr} - sub sp, sp, #0xe8 - mov r0, #0xe8 - mov r1, #4 - bl ov18_02245068 - ldr r1, _022435D0 ; =0x022533AC - str r0, [r1, #0] - add r0, sp, #0xa0 - bl FS_InitFile - ldr r1, _022435D4 ; =0x0224B1E4 - add r0, sp, #0xa0 - bl FS_OpenFile - cmp r0, #0 - bne _0224347C - bl OS_Terminate -_0224347C: - bl OS_GetLockID - ldr r2, _022435D0 ; =0x022533AC - add r1, sp, #0x18 - ldr r3, [r2, #0] - mov r2, #8 - strh r0, [r3, #0xe4] - add r0, sp, #0xa0 - ldr r4, [sp, #0xc4] - bl FS_ReadFile - add r0, sp, #0xa0 - add r1, sp, #0x10 - mov r2, #8 - bl FS_ReadFile - add r0, sp, #0xa0 - bl FS_CloseFile - ldr r0, _022435D0 ; =0x022533AC - ldr r0, [r0, #0] - add r0, r0, #0x88 - bl FS_InitArchive - ldr r0, _022435D0 ; =0x022533AC - ldr r1, _022435D8 ; =0x02249718 - ldr r0, [r0, #0] - mov r2, #3 - add r0, r0, #0x88 - bl FS_RegisterArchiveName - cmp r0, #0 - bne _022434EC - bl OS_Terminate -_022434EC: - ldr r0, _022435D0 ; =0x022533AC - ldr r1, _022435DC ; =ov18_0224367C - ldr r0, [r0, #0] - ldr r2, _022435E0 ; =0x00000602 - add r0, r0, #0x88 - bl FS_SetArchiveProc - ldr r0, [sp, #0x18] - ldr r1, _022435E4 ; =ov18_022436E0 - str r0, [sp] - ldr r2, [sp, #0x1c] - ldr r0, _022435E8 ; =ov18_02243730 - str r2, [sp, #4] - str r1, [sp, #8] - str r0, [sp, #0xc] - ldr r0, _022435D0 ; =0x022533AC - ldr r2, [sp, #0x10] - ldr r0, [r0, #0] - ldr r3, [sp, #0x14] - mov r1, r4 - add r0, r0, #0x88 - bl FS_LoadArchive - cmp r0, #0 - bne _0224354C - bl OS_Terminate -_0224354C: - ldr r0, _022435D0 ; =0x022533AC - mov r1, #0 - ldr r0, [r0, #0] - mov r2, r1 - add r0, r0, #0x88 - bl FS_LoadArchiveTables - mov r1, #4 - mov r4, r0 - bl ov18_02245068 - ldr r1, _022435D0 ; =0x022533AC - mov r2, r4 - ldr r3, [r1, #0] - str r0, [r3, #0] - ldr r0, [r1, #0] - ldr r1, [r0, #0], #0x88 - bl FS_LoadArchiveTables - ldr r1, _022435D0 ; =0x022533AC - mov r0, #0x20 - ldr r1, [r1, #0] - mov r2, #4 - add r1, r1, #4 - bl ov18_02244008 - ldr r2, _022435D0 ; =0x022533AC - ldr r1, _022435EC ; =0x0224B1FC - ldr r3, [r2, #0] - ldr r2, _022435D8 ; =0x02249718 - str r0, [r3, #0x84] - add r0, sp, #0x20 - bl OS_SPrintf - add r0, sp, #0x20 - bl FS_ChangeDir - add sp, sp, #0xe8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_022435D0: .word Unk_ov18_022533AC -_022435D4: .word Unk_ov18_0224B1E4 -_022435D8: .word Unk_ov18_02249718 -_022435DC: .word ov18_0224367C -_022435E0: .word 0x00000602 -_022435E4: .word ov18_022436E0 -_022435E8: .word ov18_02243730 -_022435EC: .word Unk_ov18_0224B1FC - arm_func_end ov18_02243440 - - arm_func_start ov18_022435F0 -ov18_022435F0: ; 0x022435F0 - stmfd sp!, {r3, lr} - ldr r0, _02243670 ; =0x0224B204 - bl FS_ChangeDir - ldr r0, _02243674 ; =0x022533AC - ldr r0, [r0, #0] - add r0, r0, #0x88 - bl FS_UnloadArchiveTables - ldr r0, _02243674 ; =0x022533AC - ldr r0, [r0, #0] - add r0, r0, #0x88 - bl FS_UnloadArchive - ldr r0, _02243674 ; =0x022533AC - ldr r0, [r0, #0] - add r0, r0, #0x88 - bl FS_ReleaseArchiveName - ldr r0, _02243674 ; =0x022533AC - ldr r0, [r0, #0] - ldrh r0, [r0, #0xe4] - bl OS_ReleaseLockID - ldr r0, _02243674 ; =0x022533AC - mov r2, #0 - ldr r1, [r0, #0] - strh r2, [r1, #0xe4] - ldr r0, [r0, #0] - bl ov18_0224508C - ldr r1, _02243674 ; =0x022533AC - ldr r0, _02243678 ; =0x022533AC - ldr r1, [r1, #0] - mov r2, #0 - str r2, [r1, #0] - bl ov18_0224508C - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02243670: .word Unk_ov18_0224B204 -_02243674: .word Unk_ov18_022533AC -_02243678: .word Unk_ov18_022533AC - arm_func_end ov18_022435F0 - - arm_func_start ov18_0224367C -ov18_0224367C: ; 0x0224367C - stmfd sp!, {r3, lr} - cmp r1, #1 - beq _022436CC - cmp r1, #9 - beq _0224369C - cmp r1, #0xa - beq _022436B4 - b _022436D4 -_0224369C: - ldr r0, _022436DC ; =0x022533AC - ldr r0, [r0, #0] - ldrh r0, [r0, #0xe4] - bl CARD_LockRom - mov r0, #0 - ldmia sp!, {r3, pc} -_022436B4: - ldr r0, _022436DC ; =0x022533AC - ldr r0, [r0, #0] - ldrh r0, [r0, #0xe4] - bl CARD_UnlockRom - mov r0, #0 - ldmia sp!, {r3, pc} -_022436CC: - mov r0, #4 - ldmia sp!, {r3, pc} -_022436D4: - mov r0, #8 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022436DC: .word Unk_ov18_022533AC - arm_func_end ov18_0224367C - - arm_func_start ov18_022436E0 -ov18_022436E0: ; 0x022436E0 - stmdb sp!, {lr} - sub sp, sp, #0xc - ldr ip, _0224371C ; =ov18_02243720 - mov lr, r1 - str ip, [sp] - mov ip, #1 - stmib sp, {r0, ip} - ldr r0, [r0, #0x28] - add r1, r2, r0 - mov r2, lr - sub r0, ip, #2 - bl CARDi_ReadRom - mov r0, #6 - add sp, sp, #0xc - ldmia sp!, {pc} - ; .align 2, 0 -_0224371C: .word ov18_02243720 - arm_func_end ov18_022436E0 - - arm_func_start ov18_02243720 -ov18_02243720: ; 0x02243720 - ldr ip, _0224372C ; =FS_NotifyArchiveAsyncEnd - mov r1, #0 - bx ip - ; .align 2, 0 -_0224372C: .word FS_NotifyArchiveAsyncEnd - arm_func_end ov18_02243720 - - arm_func_start ov18_02243730 -ov18_02243730: ; 0x02243730 - mov r0, #1 - bx lr - arm_func_end ov18_02243730 - - arm_func_start ov18_02243738 -ov18_02243738: ; 0x02243738 - stmfd sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x4c - ldr r3, _02243824 ; =0x022533AC - mov r6, r0 - ldr r0, [r3, #0] - mov r5, r1 - ldr r0, [r0, #0x84] - mov r4, r2 - bl ov18_022440BC - add r0, sp, #4 - bl FS_InitFile - add r0, sp, #4 - mov r1, r6 - bl FS_OpenFile - cmp r0, #0 - bne _0224377C - bl OS_Terminate -_0224377C: - ldr r1, [sp, #0x2c] - ldr r0, [sp, #0x28] - mov r2, #2 - sub r7, r1, r0 - cmp r5, #0 - ldr r1, _02243828 ; =0x0224B20C - mov r0, r6 - strne r7, [r5] - bl ov18_02243860 - cmp r0, #0 - mvnne r6, #3 - moveq r6, r4 - mov r0, r7 - mov r1, r6 - bl ov18_02245068 - mov r1, r0 - add r0, sp, #4 - mov r2, r7 - str r1, [sp] - bl FS_ReadFile - add r0, sp, #4 - bl FS_CloseFile - cmp r6, #0 - ldrgt r0, [sp] - addgt sp, sp, #0x4c - ldmgtia sp!, {r4, r5, r6, r7, pc} - ldr r0, [sp] - cmp r5, #0 - ldr r0, [r0, #0] - mov r1, r4 - mov r0, r0, lsr #8 - strne r0, [r5] - bl ov18_02245068 - mov r4, r0 - ldr r0, [sp] - mov r1, r4 - bl MI_UncompressLZ8 - add r0, sp, #0 - bl ov18_0224508C - mov r0, r4 - add sp, sp, #0x4c - ldmia sp!, {r4, r5, r6, r7, pc} - ; .align 2, 0 -_02243824: .word Unk_ov18_022533AC -_02243828: .word Unk_ov18_0224B20C - arm_func_end ov18_02243738 - - arm_func_start ov18_0224382C -ov18_0224382C: ; 0x0224382C - stmfd sp!, {r0, r1, r2, r3} - stmfd sp!, {r3, lr} - add r0, sp, #8 - bl ov18_0224508C - ldr r0, _0224385C ; =0x022533AC - ldr r1, [sp, #8] - ldr r0, [r0, #0] - ldr r0, [r0, #0x84] - bl ov18_02244064 - ldmia sp!, {r3, lr} - add sp, sp, #0x10 - bx lr - ; .align 2, 0 -_0224385C: .word Unk_ov18_022533AC - arm_func_end ov18_0224382C - - arm_func_start ov18_02243860 -ov18_02243860: ; 0x02243860 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r1 - mov r7, r0 - mov r5, r2 - bl strlen - mov r4, r0 - mov r0, r6 - bl strlen - cmp r4, r5 - cmpge r0, r5 - movlt r0, #0 - ldmltia sp!, {r3, r4, r5, r6, r7, pc} - sub r1, r0, r5 - sub r3, r4, r5 - mov r2, r5 - add r0, r7, r3 - add r1, r6, r1 - bl memcmp - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov18_02243860 - - .rodata - - - .global Unk_ov18_02249718 -Unk_ov18_02249718: ; 0x02249718 - .asciz "dwc" - - - - .data - - - .global Unk_ov18_0224B1E4 -Unk_ov18_0224B1E4: ; 0x0224B1E4 - .ascii "rom:/dwc/utility.bin" - .space 0x4 - - .global Unk_ov18_0224B1FC -Unk_ov18_0224B1FC: ; 0x0224B1FC - .ascii "%s:/" - .space 0x4 - - .global Unk_ov18_0224B204 -Unk_ov18_0224B204: ; 0x0224B204 - .ascii "rom:/" - .space 0x3 - - .global Unk_ov18_0224B20C -Unk_ov18_0224B20C: ; 0x0224B20C - .ascii ".l" - .space 0x2 - - - - .bss - - - .global Unk_ov18_022533AC -Unk_ov18_022533AC: ; 0x022533AC - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/atermset.s b/subprojects/NitroDWC/libraries/util/asm/atermset.s deleted file mode 100644 index c11b541763..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/atermset.s +++ /dev/null @@ -1,7666 +0,0 @@ - .include "macros/function.inc" - .include "include/atermset.inc" - - - - .extern WCM_Bssid_Any - .extern WCM_Essid_Any - .text - - - thumb_func_start ov18_0222754C -ov18_0222754C: ; 0x0222754C - push {r3, lr} - cmp r0, #0 - bne _02227554 - b _0222784E -_02227554: - mov r1, #0 - ldrsh r2, [r0, r1] - cmp r2, #9 - bls _0222755E - b _02227840 -_0222755E: - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0222756A: ; jump table - .short _02227840 - _0222756A - 2 ; case 0 - .short _0222757E - _0222756A - 2 ; case 1 - .short _022277CE - _0222756A - 2 ; case 2 - .short _02227604 - _0222756A - 2 ; case 3 - .short _02227672 - _0222756A - 2 ; case 4 - .short _0222763C - _0222756A - 2 ; case 5 - .short _0222771A - _0222756A - 2 ; case 6 - .short _0222780A - _0222756A - 2 ; case 7 - .short _02227820 - _0222756A - 2 ; case 8 - .short _0222782E - _0222756A - 2 ; case 9 -_0222757E: - mov r2, #2 - ldrsh r0, [r0, r2] - cmp r0, #0 - bne _022275F0 - ldr r2, _02227850 ; =0x02251D10 - ldr r0, [r2, #0x2c] - cmp r0, #4 - bne _022275A0 - mov r0, #3 - str r0, [r2, #0x2c] - ldr r0, _02227854 ; =0x02251D90 - ldr r2, [r0, #0] - cmp r2, #0 - beq _02227634 - mov r0, #6 - blx r2 - pop {r3, pc} -_022275A0: - cmp r0, #6 - bne _022275C8 - ldr r0, [r2, #0x44] - ldr r1, [r2, #0x48] - ldr r2, [r2, #0x60] - bl WCM_SearchAsync - cmp r0, #3 - beq _02227634 - ldr r0, _02227850 ; =0x02251D10 - mov r1, #3 - str r1, [r0, #0x2c] - ldr r0, _02227854 ; =0x02251D90 - ldr r2, [r0, #0] - cmp r2, #0 - beq _02227634 - mov r0, #2 - mov r1, #0 - blx r2 - pop {r3, pc} -_022275C8: - cmp r0, #8 - bne _02227634 - ldr r0, [r2, #0x4c] - ldr r1, [r2, #0x28] - ldr r2, [r2, #0x58] - bl WCM_ConnectAsync - cmp r0, #3 - beq _02227634 - ldr r0, _02227850 ; =0x02251D10 - mov r1, #3 - str r1, [r0, #0x2c] - ldr r0, _02227854 ; =0x02251D90 - ldr r2, [r0, #0] - cmp r2, #0 - beq _02227634 - mov r0, #2 - mov r1, #0 - blx r2 - pop {r3, pc} -_022275F0: - ldr r0, _02227850 ; =0x02251D10 - mov r3, #1 - str r3, [r0, #0x2c] - ldr r0, _02227854 ; =0x02251D90 - ldr r3, [r0, #0] - cmp r3, #0 - beq _02227634 - add r0, r2, #0 - blx r3 - pop {r3, pc} -_02227604: - mov r2, #2 - ldrsh r0, [r0, r2] - cmp r0, #0 - bne _02227626 - ldr r0, _02227850 ; =0x02251D10 - ldr r2, [r0, #0x2c] - cmp r2, #6 - bne _02227634 - mov r2, #5 - str r2, [r0, #0x2c] - ldr r0, _02227854 ; =0x02251D90 - ldr r2, [r0, #0] - cmp r2, #0 - beq _02227634 - mov r0, #8 - blx r2 - pop {r3, pc} -_02227626: - ldr r0, _02227850 ; =0x02251D10 - mov r2, #3 - str r2, [r0, #0x2c] - ldr r0, _02227854 ; =0x02251D90 - ldr r2, [r0, #0] - cmp r2, #0 - bne _02227636 -_02227634: - b _0222784E -_02227636: - mov r0, #9 - blx r2 - pop {r3, pc} -_0222763C: - mov r2, #2 - ldrsh r0, [r0, r2] - cmp r0, #0 - bne _0222765E - ldr r0, _02227850 ; =0x02251D10 - ldr r2, [r0, #0x2c] - cmp r2, #8 - bne _02227736 - mov r2, #7 - str r2, [r0, #0x2c] - ldr r0, _02227854 ; =0x02251D90 - ldr r2, [r0, #0] - cmp r2, #0 - beq _02227736 - mov r0, #0xc - blx r2 - pop {r3, pc} -_0222765E: - ldr r0, _02227850 ; =0x02251D10 - mov r2, #3 - str r2, [r0, #0x2c] - ldr r0, _02227854 ; =0x02251D90 - ldr r2, [r0, #0] - cmp r2, #0 - beq _02227736 - mov r0, #0xd - blx r2 - pop {r3, pc} -_02227672: - mov r2, #2 - ldrsh r0, [r0, r2] - cmp r0, #0 - bne _02227706 - ldr r2, _02227850 ; =0x02251D10 - ldr r0, [r2, #0x2c] - cmp r0, #4 - bne _02227694 - mov r0, #3 - str r0, [r2, #0x2c] - ldr r0, _02227854 ; =0x02251D90 - ldr r2, [r0, #0] - cmp r2, #0 - beq _02227736 - mov r0, #0xa - blx r2 - pop {r3, pc} -_02227694: - cmp r0, #6 - bne _022276BC - ldr r0, [r2, #0x44] - ldr r1, [r2, #0x48] - ldr r2, [r2, #0x60] - bl WCM_SearchAsync - cmp r0, #3 - beq _02227736 - ldr r0, _02227850 ; =0x02251D10 - mov r1, #3 - str r1, [r0, #0x2c] - ldr r0, _02227854 ; =0x02251D90 - ldr r2, [r0, #0] - cmp r2, #0 - beq _02227736 - mov r0, #2 - mov r1, #0 - blx r2 - pop {r3, pc} -_022276BC: - cmp r0, #2 - bne _022276DE - bl WCM_CleanupAsync - cmp r0, #3 - beq _02227736 - ldr r0, _02227850 ; =0x02251D10 - mov r1, #3 - str r1, [r0, #0x2c] - ldr r0, _02227854 ; =0x02251D90 - ldr r2, [r0, #0] - cmp r2, #0 - beq _02227736 - mov r0, #2 - mov r1, #0 - blx r2 - pop {r3, pc} -_022276DE: - cmp r0, #8 - bne _02227736 - ldr r0, [r2, #0x4c] - ldr r1, [r2, #0x28] - ldr r2, [r2, #0x58] - bl WCM_ConnectAsync - cmp r0, #3 - beq _02227736 - ldr r0, _02227850 ; =0x02251D10 - mov r1, #3 - str r1, [r0, #0x2c] - ldr r0, _02227854 ; =0x02251D90 - ldr r2, [r0, #0] - cmp r2, #0 - beq _02227736 - mov r0, #2 - mov r1, #0 - blx r2 - pop {r3, pc} -_02227706: - ldr r0, _02227850 ; =0x02251D10 - mov r2, #3 - str r2, [r0, #0x2c] - ldr r0, _02227854 ; =0x02251D90 - ldr r2, [r0, #0] - cmp r2, #0 - beq _02227736 - mov r0, #0xb - blx r2 - pop {r3, pc} -_0222771A: - mov r2, #2 - ldrsh r0, [r0, r2] - cmp r0, #0 - bne _022277BA - ldr r2, _02227850 ; =0x02251D10 - ldr r0, [r2, #0x2c] - cmp r0, #4 - bne _0222773E - mov r0, #3 - str r0, [r2, #0x2c] - ldr r0, _02227854 ; =0x02251D90 - ldr r2, [r0, #0] - cmp r2, #0 - bne _02227738 -_02227736: - b _0222784E -_02227738: - mov r0, #0xe - blx r2 - pop {r3, pc} -_0222773E: - cmp r0, #6 - bne _02227766 - ldr r0, [r2, #0x44] - ldr r1, [r2, #0x48] - ldr r2, [r2, #0x60] - bl WCM_SearchAsync - cmp r0, #3 - beq _0222784E - ldr r0, _02227850 ; =0x02251D10 - mov r1, #3 - str r1, [r0, #0x2c] - ldr r0, _02227854 ; =0x02251D90 - ldr r2, [r0, #0] - cmp r2, #0 - beq _0222784E - mov r0, #2 - mov r1, #0 - blx r2 - pop {r3, pc} -_02227766: - cmp r0, #2 - bne _02227788 - bl WCM_CleanupAsync - cmp r0, #3 - beq _0222784E - ldr r0, _02227850 ; =0x02251D10 - mov r1, #3 - str r1, [r0, #0x2c] - ldr r0, _02227854 ; =0x02251D90 - ldr r2, [r0, #0] - cmp r2, #0 - beq _0222784E - mov r0, #2 - mov r1, #0 - blx r2 - pop {r3, pc} -_02227788: - cmp r0, #8 - bne _022277B0 - ldr r0, [r2, #0x4c] - ldr r1, [r2, #0x28] - ldr r2, [r2, #0x58] - bl WCM_ConnectAsync - cmp r0, #3 - beq _0222784E - ldr r0, _02227850 ; =0x02251D10 - mov r1, #3 - str r1, [r0, #0x2c] - ldr r0, _02227854 ; =0x02251D90 - ldr r2, [r0, #0] - cmp r2, #0 - beq _0222784E - mov r0, #2 - mov r1, #0 - blx r2 - pop {r3, pc} -_022277B0: - cmp r0, #7 - bne _0222784E - mov r0, #3 - str r0, [r2, #0x2c] - pop {r3, pc} -_022277BA: - ldr r0, _02227850 ; =0x02251D10 - mov r2, #3 - str r2, [r0, #0x2c] - ldr r0, _02227854 ; =0x02251D90 - ldr r2, [r0, #0] - cmp r2, #0 - beq _0222784E - mov r0, #0xf - blx r2 - pop {r3, pc} -_022277CE: - mov r2, #2 - ldrsh r0, [r0, r2] - cmp r0, #0 - bne _022277F6 - ldr r0, _02227850 ; =0x02251D10 - ldr r0, [r0, #0x2c] - cmp r0, #2 - bne _0222784E - bl WCM_Finish - ldr r0, _02227850 ; =0x02251D10 - mov r1, #0 - str r1, [r0, #0x2c] - ldr r0, _02227854 ; =0x02251D90 - ldr r2, [r0, #0] - cmp r2, #0 - beq _0222784E - mov r0, #0x14 - blx r2 - pop {r3, pc} -_022277F6: - ldr r0, _02227850 ; =0x02251D10 - mov r3, #3 - str r3, [r0, #0x2c] - ldr r0, _02227854 ; =0x02251D90 - ldr r3, [r0, #0] - cmp r3, #0 - beq _0222784E - add r0, r2, #0 - blx r3 - pop {r3, pc} -_0222780A: - ldr r0, _02227850 ; =0x02251D10 - ldr r0, [r0, #0x2c] - cmp r0, #5 - bne _0222784E - ldr r0, _02227854 ; =0x02251D90 - ldr r2, [r0, #0] - cmp r2, #0 - beq _0222784E - mov r0, #5 - blx r2 - pop {r3, pc} -_02227820: - ldr r0, _02227854 ; =0x02251D90 - ldr r2, [r0, #0] - cmp r2, #0 - beq _0222784E - mov r0, #4 - blx r2 - pop {r3, pc} -_0222782E: - ldr r0, _02227850 ; =0x02251D10 - str r1, [r0, #0x2c] - ldr r0, _02227854 ; =0x02251D90 - ldr r2, [r0, #0] - cmp r2, #0 - beq _0222784E - mov r0, #3 - blx r2 - pop {r3, pc} -_02227840: - ldr r0, _02227854 ; =0x02251D90 - ldr r2, [r0, #0] - cmp r2, #0 - beq _0222784E - mov r0, #1 - mov r1, #0 - blx r2 -_0222784E: - pop {r3, pc} - ; .align 2, 0 -_02227850: .word Unk_ov18_02251D10 -_02227854: .word Unk_ov18_02251D90 - thumb_func_end ov18_0222754C - - thumb_func_start ov18_02227858 -ov18_02227858: ; 0x02227858 - push {r3, lr} - ldr r1, _022278B8 ; =0x02251D10 - ldr r0, [r1, #0x2c] - cmp r0, #8 - bhi _022278AE - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0222786E: ; jump table - .short _022278AE - _0222786E - 2 ; case 0 - .short _0222789E - _0222786E - 2 ; case 1 - .short _022278AE - _0222786E - 2 ; case 2 - .short _022278AE - _0222786E - 2 ; case 3 - .short _022278AE - _0222786E - 2 ; case 4 - .short _02227880 - _0222786E - 2 ; case 5 - .short _022278AE - _0222786E - 2 ; case 6 - .short _02227892 - _0222786E - 2 ; case 7 - .short _022278AE - _0222786E - 2 ; case 8 -_02227880: - mov r0, #0 - add r1, r0, #0 - add r2, r0, #0 - bl WCM_SearchAsync - cmp r0, #3 - beq _022278B2 - mov r0, #0 - pop {r3, pc} -_02227892: - bl WCM_DisconnectAsync - cmp r0, #3 - beq _022278B2 - mov r0, #0 - pop {r3, pc} -_0222789E: - ldr r0, [r1, #8] - ldr r1, _022278BC ; =ov18_0222754C - bl WCM_StartupAsync - cmp r0, #3 - beq _022278B2 - mov r0, #0 - pop {r3, pc} -_022278AE: - mov r0, #0 - pop {r3, pc} -_022278B2: - mov r0, #1 - pop {r3, pc} - nop -_022278B8: .word Unk_ov18_02251D10 -_022278BC: .word ov18_0222754C - thumb_func_end ov18_02227858 - - thumb_func_start ov18_022278C0 -ov18_022278C0: ; 0x022278C0 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - mov r0, #1 - add r7, r1, #0 - bl WCM_LockApList - bl WCM_CountApList - add r6, r0, #0 - cmp r6, #0 - ble _022278F8 - mov r4, #0 - cmp r6, #0 - ble _022278F8 -_022278DC: - cmp r4, r7 - bge _022278F8 - lsl r0, r4, #0x10 - lsr r0, r0, #0x10 - bl WCM_PointApList - add r1, r5, #0 - mov r2, #0xc0 - bl MIi_CpuCopy32 - add r4, r4, #1 - add r5, #0xc0 - cmp r4, r6 - blt _022278DC -_022278F8: - mov r0, #0 - bl WCM_LockApList - add r0, r6, #0 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 - thumb_func_end ov18_022278C0 - - thumb_func_start ov18_02227904 -ov18_02227904: ; 0x02227904 - push {r3, r4, r5, r6, r7, lr} - str r3, [sp] - add r5, r0, #0 - add r4, r1, #0 - add r6, r2, #0 - bl OS_DisableInterrupts - add r7, r0, #0 - ldr r1, _022279D8 ; =0x02251D10 - ldr r0, [sp] - cmp r5, #0 - str r0, [r1, #0x60] - ldr r0, _022279DC ; =0x022521C8 - str r0, [r1, #0x44] - beq _02227934 - mov r2, #0 -_02227924: - ldrb r1, [r5] - add r2, r2, #1 - add r5, r5, #1 - strb r1, [r0] - add r0, r0, #1 - cmp r2, #6 - blt _02227924 - b _02227942 -_02227934: - mov r1, #0xff - mov r2, #6 - bl MI_CpuFill8 - ldr r1, _022279E0 ; =0x02215E48 - ldr r0, _022279D8 ; =0x02251D10 - str r1, [r0, #0x44] -_02227942: - ldr r2, _022279E4 ; =0x02252200 - ldr r0, _022279D8 ; =0x02251D10 - cmp r4, #0 - str r2, [r0, #0x48] - beq _0222797E - cmp r6, #0 - ble _0222797E - cmp r6, #0x20 - bge _0222797E - mov r0, #0 - cmp r6, #0 - ble _02227968 -_0222795A: - ldrb r1, [r4] - add r0, r0, #1 - add r4, r4, #1 - strb r1, [r2] - add r2, r2, #1 - cmp r0, r6 - blt _0222795A -_02227968: - cmp r0, #0x20 - bge _0222798E - ldr r1, _022279E4 ; =0x02252200 - add r2, r1, r0 - mov r1, #0 -_02227972: - add r0, r0, #1 - strb r1, [r2] - add r2, r2, #1 - cmp r0, #0x20 - blt _02227972 - b _0222798E -_0222797E: - ldr r0, _022279E4 ; =0x02252200 - mov r1, #0xff - mov r2, #0x20 - bl MI_CpuFill8 - ldr r1, _022279E8 ; =0x02215E50 - ldr r0, _022279D8 ; =0x02251D10 - str r1, [r0, #0x48] -_0222798E: - ldr r2, _022279D8 ; =0x02251D10 - ldr r0, [r2, #0x2c] - cmp r0, #3 - bne _022279B4 - ldr r1, [r2, #0x48] - ldr r0, _022279DC ; =0x022521C8 - ldr r2, [r2, #0x60] - bl WCM_SearchAsync - cmp r0, #3 - bne _022279CC - ldr r0, _022279D8 ; =0x02251D10 - mov r1, #6 - str r1, [r0, #0x2c] - add r0, r7, #0 - bl OS_RestoreInterrupts - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_022279B4: - bl ov18_02227858 - cmp r0, #1 - bne _022279CC - ldr r0, _022279D8 ; =0x02251D10 - mov r1, #6 - str r1, [r0, #0x2c] - add r0, r7, #0 - bl OS_RestoreInterrupts - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_022279CC: - add r0, r7, #0 - bl OS_RestoreInterrupts - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} - nop -_022279D8: .word Unk_ov18_02251D10 -_022279DC: .word Unk_ov18_022521C8 -_022279E0: .word WCM_Bssid_Any -_022279E4: .word Unk_ov18_02252200 -_022279E8: .word WCM_Essid_Any - thumb_func_end ov18_02227904 - - thumb_func_start ov18_022279EC -ov18_022279EC: ; 0x022279EC - push {r4, lr} - bl OS_DisableInterrupts - add r4, r0, #0 - ldr r0, _02227A20 ; =0x02251D10 - ldr r0, [r0, #0x2c] - cmp r0, #7 - bne _02227A14 - bl WCM_DisconnectAsync - cmp r0, #3 - bne _02227A14 - ldr r0, _02227A20 ; =0x02251D10 - mov r1, #4 - str r1, [r0, #0x2c] - add r0, r4, #0 - bl OS_RestoreInterrupts - mov r0, #1 - pop {r4, pc} -_02227A14: - add r0, r4, #0 - bl OS_RestoreInterrupts - mov r0, #0 - pop {r4, pc} - nop -_02227A20: .word Unk_ov18_02251D10 - thumb_func_end ov18_022279EC - - thumb_func_start ov18_02227A24 -ov18_02227A24: ; 0x02227A24 - push {r4, lr} - bl OS_DisableInterrupts - add r4, r0, #0 - ldr r0, _02227A78 ; =0x02251D10 - ldr r0, [r0, #0x2c] - cmp r0, #3 - bne _02227A56 - bl WCM_CleanupAsync - cmp r0, #3 - beq _02227A46 - add r0, r4, #0 - bl OS_RestoreInterrupts - mov r0, #0 - pop {r4, pc} -_02227A46: - ldr r0, _02227A78 ; =0x02251D10 - mov r1, #2 - str r1, [r0, #0x2c] - add r0, r4, #0 - bl OS_RestoreInterrupts - mov r0, #1 - pop {r4, pc} -_02227A56: - bl ov18_02227858 - cmp r0, #1 - bne _02227A6E - ldr r0, _02227A78 ; =0x02251D10 - mov r1, #2 - str r1, [r0, #0x2c] - add r0, r4, #0 - bl OS_RestoreInterrupts - mov r0, #1 - pop {r4, pc} -_02227A6E: - add r0, r4, #0 - bl OS_RestoreInterrupts - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 -_02227A78: .word Unk_ov18_02251D10 - thumb_func_end ov18_02227A24 - - thumb_func_start ov18_02227A7C -ov18_02227A7C: ; 0x02227A7C - push {r3, r4, r5, r6, r7, lr} - add r7, r0, #0 - add r5, r1, #0 - add r6, r2, #0 - bl OS_DisableInterrupts - ldr r1, _02227AFC ; =0x02251D10 - add r4, r0, #0 - str r6, [r1, #0x58] - cmp r5, #0 - beq _02227A9E - ldr r1, [r1, #0x28] - add r0, r5, #0 - mov r2, #0x60 - bl MI_CpuCopy8 - b _02227AA8 -_02227A9E: - ldr r0, [r1, #0x28] - mov r1, #0 - mov r2, #0x60 - bl MI_CpuFill8 -_02227AA8: - ldr r1, _02227AFC ; =0x02251D10 - add r0, r7, #0 - ldr r1, [r1, #0x4c] - mov r2, #0xc0 - bl MIi_CpuCopy32 - bl ov18_02227858 - cmp r0, #1 - bne _02227ACC - ldr r0, _02227AFC ; =0x02251D10 - mov r1, #8 - str r1, [r0, #0x2c] - add r0, r4, #0 - bl OS_RestoreInterrupts - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_02227ACC: - ldr r2, _02227AFC ; =0x02251D10 - ldr r0, [r2, #0x2c] - cmp r0, #3 - bne _02227AF2 - ldr r0, [r2, #0x4c] - ldr r1, [r2, #0x28] - ldr r2, [r2, #0x58] - bl WCM_ConnectAsync - cmp r0, #3 - bne _02227AF2 - ldr r0, _02227AFC ; =0x02251D10 - mov r1, #8 - str r1, [r0, #0x2c] - add r0, r4, #0 - bl OS_RestoreInterrupts - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_02227AF2: - add r0, r4, #0 - bl OS_RestoreInterrupts - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02227AFC: .word Unk_ov18_02251D10 - thumb_func_end ov18_02227A7C - - thumb_func_start ov18_02227B00 -ov18_02227B00: ; 0x02227B00 - push {r3, r4, r5, r6, r7, lr} - add r5, r1, #0 - add r7, r0, #0 - str r2, [sp] - bl OS_DisableInterrupts - add r4, r0, #0 - add r0, r5, #0 - ldr r2, _02227BAC ; =0x02251D10 - add r0, #0x63 - mov r1, #3 - bic r0, r1 - add r6, r0, #0 - str r5, [r2, #0x28] - add r6, #0x2f - mov r1, #0x1f - ldr r3, _02227BB0 ; =0x0000231F - str r0, [r2, #8] - bic r6, r1 - str r6, [r2, #0x3c] - add r6, r6, r3 - bic r6, r1 - str r6, [r2, #0x4c] - add r6, #0xdf - bic r6, r1 - str r6, [r0, #4] - ldr r1, [sp] - ldr r0, [r2, #8] - add r5, r5, r1 - ldr r1, [r0, #4] - sub r1, r5, r1 - str r1, [r0, #8] - ldr r0, [r2, #8] - mov r1, #0 - str r1, [r0, #0xc] - ldr r0, [r2, #8] - mov r1, #3 - str r1, [r0, #0] - ldr r0, _02227BB4 ; =0x02251D90 - str r7, [r0, #0] - ldr r0, [r2, #0x2c] - cmp r0, #0 - bne _02227B74 - sub r3, #0x1f - ldr r0, [r2, #0x3c] - add r1, r3, #0 - bl WCM_Init - cmp r0, #0 - beq _02227B6E - add r0, r4, #0 - bl OS_RestoreInterrupts - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_02227B6E: - ldr r0, _02227BAC ; =0x02251D10 - mov r1, #1 - str r1, [r0, #0x2c] -_02227B74: - ldr r0, _02227BAC ; =0x02251D10 - ldr r1, [r0, #0x2c] - cmp r1, #1 - bne _02227BA2 - ldr r0, [r0, #8] - ldr r1, _02227BB8 ; =ov18_0222754C - bl WCM_StartupAsync - cmp r0, #3 - beq _02227B92 - add r0, r4, #0 - bl OS_RestoreInterrupts - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_02227B92: - ldr r0, _02227BAC ; =0x02251D10 - mov r1, #4 - str r1, [r0, #0x2c] - add r0, r4, #0 - bl OS_RestoreInterrupts - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_02227BA2: - add r0, r4, #0 - bl OS_RestoreInterrupts - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02227BAC: .word Unk_ov18_02251D10 -_02227BB0: .word 0x0000231F -_02227BB4: .word Unk_ov18_02251D90 -_02227BB8: .word ov18_0222754C - thumb_func_end ov18_02227B00 - - thumb_func_start ov18_02227BBC -ov18_02227BBC: ; 0x02227BBC - ldr r0, _02227BC4 ; =0x02251D10 - ldr r0, [r0, #0x2c] - bx lr - nop -_02227BC4: .word Unk_ov18_02251D10 - thumb_func_end ov18_02227BBC - - thumb_func_start ov18_02227BC8 -ov18_02227BC8: ; 0x02227BC8 - push {r4, lr} - add r4, r1, #0 - cmp r4, #0 - ble _02227BEA - ldr r0, _02227BF0 ; =0x02251DA4 - bl OS_LockMutex - ldr r1, _02227BF4 ; =0x02251D10 - add r0, r4, #0 - ldr r1, [r1, #4] - blx r1 - add r4, r0, #0 - ldr r0, _02227BF0 ; =0x02251DA4 - bl OS_UnlockMutex - add r0, r4, #0 - pop {r4, pc} -_02227BEA: - mov r0, #0 - pop {r4, pc} - nop -_02227BF0: .word Unk_ov18_02251DA4 -_02227BF4: .word Unk_ov18_02251D10 - thumb_func_end ov18_02227BC8 - - thumb_func_start ov18_02227BF8 -ov18_02227BF8: ; 0x02227BF8 - push {r4, lr} - add r4, r1, #0 - beq _02227C16 - cmp r2, #0 - ble _02227C16 - ldr r0, _02227C18 ; =0x02251DA4 - bl OS_LockMutex - ldr r1, _02227C1C ; =0x02251D10 - add r0, r4, #0 - ldr r1, [r1, #0xc] - blx r1 - ldr r0, _02227C18 ; =0x02251DA4 - bl OS_UnlockMutex -_02227C16: - pop {r4, pc} - ; .align 2, 0 -_02227C18: .word Unk_ov18_02251DA4 -_02227C1C: .word Unk_ov18_02251D10 - thumb_func_end ov18_02227BF8 - - thumb_func_start ov18_02227C20 -ov18_02227C20: ; 0x02227C20 - push {r3, lr} - bl OS_DisableInterrupts - ldr r1, _02227C40 ; =0x02251D10 - mov r2, #0 - str r2, [r1, #0x68] - str r2, [r1, #0x6c] - ldr r3, _02227C44 ; =0x02251D94 - add r1, r2, #0 -_02227C32: - add r2, r2, #1 - stmia r3!, {r1} - cmp r2, #4 - blt _02227C32 - bl OS_RestoreInterrupts - pop {r3, pc} - ; .align 2, 0 -_02227C40: .word Unk_ov18_02251D10 -_02227C44: .word Unk_ov18_02251D94 - thumb_func_end ov18_02227C20 - - thumb_func_start ov18_02227C48 -ov18_02227C48: ; 0x02227C48 - push {r3, r4, r5, lr} - bl OS_DisableInterrupts - ldr r1, _02227C78 ; =0x02251D10 - ldr r5, [r1, #0x6c] - ldr r2, [r1, #0x68] - cmp r2, r5 - bne _02227C5C - mov r4, #0 - b _02227C6E -_02227C5C: - ldr r2, _02227C7C ; =0x02251D94 - lsl r3, r5, #2 - ldr r4, [r2, r3] - add r2, r5, #1 - str r2, [r1, #0x6c] - cmp r2, #4 - blt _02227C6E - mov r2, #0 - str r2, [r1, #0x6c] -_02227C6E: - bl OS_RestoreInterrupts - add r0, r4, #0 - pop {r3, r4, r5, pc} - nop -_02227C78: .word Unk_ov18_02251D10 -_02227C7C: .word Unk_ov18_02251D94 - thumb_func_end ov18_02227C48 - - thumb_func_start ov18_02227C80 -ov18_02227C80: ; 0x02227C80 - push {r3, r4} - ldr r1, _02227CA8 ; =0x02251D10 - ldr r3, [r1, #0x68] - ldr r2, [r1, #0x6c] - add r4, r3, #1 - cmp r4, r2 - beq _02227CA4 - add r2, r2, #3 - cmp r3, r2 - beq _02227CA4 - ldr r2, _02227CAC ; =0x02251D94 - lsl r3, r3, #2 - str r0, [r2, r3] - str r4, [r1, #0x68] - cmp r4, #4 - blt _02227CA4 - mov r0, #0 - str r0, [r1, #0x68] -_02227CA4: - pop {r3, r4} - bx lr - ; .align 2, 0 -_02227CA8: .word Unk_ov18_02251D10 -_02227CAC: .word Unk_ov18_02251D94 - thumb_func_end ov18_02227C80 - - thumb_func_start ov18_02227CB0 -ov18_02227CB0: ; 0x02227CB0 - ldr r3, _02227CB8 ; =ov18_02227C80 - mov r1, #0 - bx r3 - nop -_02227CB8: .word ov18_02227C80 - thumb_func_end ov18_02227CB0 - - thumb_func_start ov18_02227CBC -ov18_02227CBC: ; 0x02227CBC - push {r3, r4, r5, r6, r7, lr} - add r6, r0, #0 - ldr r0, _02227D50 ; =0x02251D10 - mov r4, #1 - str r6, [r0, #0x70] - bl ov18_02227C20 - mov r0, #0xd0 - add r7, r6, #0 - mul r7, r0 - ldr r0, _02227D54 ; =0x000024D0 - add r1, r7, r0 - mov r0, #0xc0 - mul r0, r6 - add r0, r1, r0 - ldr r1, _02227D50 ; =0x02251D10 - ldr r1, [r1, #4] - blx r1 - ldr r6, _02227D50 ; =0x02251D10 - cmp r0, #0 - str r0, [r6, #0x54] - bne _02227CEC - sub r0, r4, #2 - pop {r3, r4, r5, r6, r7, pc} -_02227CEC: - mov r1, #0x1f - add r2, r0, r1 - add r0, r1, #0 - sub r0, #0x3f - add r3, r2, #0 - and r3, r0 - ldr r0, _02227D58 ; =0x00002490 - str r3, [r6, #0x40] - add r2, r7, r0 - add r0, r3, r2 - add r0, r0, r1 - sub r1, #0x3f - and r0, r1 - str r0, [r6, #0x5c] - ldr r0, _02227D5C ; =ov18_02227C80 - add r1, r3, #0 - bl ov18_02227B00 - cmp r0, #0 - bne _02227D18 - sub r0, r4, #3 - pop {r3, r4, r5, r6, r7, pc} -_02227D18: - mov r6, #0 - add r7, r4, #0 -_02227D1C: - mov r0, #0xa - bl OS_Sleep - bl ov18_02227C48 - cmp r0, #0 - beq _02227D48 -_02227D2A: - cmp r0, #4 - beq _02227D40 - cmp r0, #5 - beq _02227D40 - cmp r0, #6 - bne _02227D3C - add r4, r6, #0 - add r5, r7, #0 - b _02227D40 -_02227D3C: - mov r4, #0 - sub r5, r4, #2 -_02227D40: - bl ov18_02227C48 - cmp r0, #0 - bne _02227D2A -_02227D48: - cmp r4, #0 - bne _02227D1C - add r0, r5, #0 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02227D50: .word Unk_ov18_02251D10 -_02227D54: .word 0x000024D0 -_02227D58: .word 0x00002490 -_02227D5C: .word ov18_02227C80 - thumb_func_end ov18_02227CBC - - thumb_func_start ov18_02227D60 -ov18_02227D60: ; 0x02227D60 - push {r3, r4, r5, r6, r7, lr} - mov r5, #1 - bl ov18_02227A24 - cmp r0, #0 - beq _02227D9E - mov r6, #0 - add r4, r6, #0 - mov r7, #0xa -_02227D72: - add r0, r7, #0 - bl OS_Sleep - bl ov18_02227C48 - cmp r0, #0 - beq _02227D9A -_02227D80: - cmp r0, #4 - beq _02227D92 - cmp r0, #5 - beq _02227D92 - cmp r0, #0x14 - bne _02227D90 - add r5, r4, #0 - b _02227D92 -_02227D90: - add r5, r6, #0 -_02227D92: - bl ov18_02227C48 - cmp r0, #0 - bne _02227D80 -_02227D9A: - cmp r5, #0 - bne _02227D72 -_02227D9E: - ldr r1, _02227DB4 ; =0x02251D10 - ldr r0, [r1, #0x54] - cmp r0, #0 - beq _02227DB0 - ldr r1, [r1, #0xc] - blx r1 - ldr r0, _02227DB4 ; =0x02251D10 - mov r1, #0 - str r1, [r0, #0x54] -_02227DB0: - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02227DB4: .word Unk_ov18_02251D10 - thumb_func_end ov18_02227D60 - - thumb_func_start ov18_02227DB8 -ov18_02227DB8: ; 0x02227DB8 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x30 - ldr r0, _02227EC8 ; =0x02251D10 - mov r4, #1 - ldr r3, [r0, #0x5c] - ldr r0, [r0, #0x18] - mov r2, #0xc0 - add r1, r0, #0 - mul r1, r2 - sub r5, r4, #3 - add r6, r3, r1 - bne _02227DD6 - add sp, #0x30 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_02227DD6: - add r0, r6, #0 - mov r1, #0 - lsl r2, r2, #0xa - bl ov18_02227A7C - cmp r0, #0 - bne _02227DEA - add sp, #0x30 - sub r0, r4, #3 - pop {r3, r4, r5, r6, r7, pc} -_02227DEA: - add r0, sp, #4 - bl OS_CreateAlarm - mov r0, #0x12 - str r0, [sp] - ldr r1, _02227ECC ; =0x003FEC42 - ldr r3, _02227ED0 ; =ov18_02227CB0 - add r0, sp, #4 - mov r2, #0 - bl OS_SetAlarm - mov r7, #0 -_02227E02: - bl ov18_0222AA98 - ldr r1, _02227ED4 ; =0x02249838 - ldr r1, [r1, #0xc] - cmp r0, r1 - blo _02227E14 - mov r5, #2 - mvn r5, r5 - b _02227E94 -_02227E14: - ldr r0, _02227EC8 ; =0x02251D10 - ldr r0, [r0, #0x10] - cmp r0, #0 - beq _02227E22 - mov r5, #7 - mvn r5, r5 - b _02227E94 -_02227E22: - mov r0, #0xa - bl OS_Sleep - bl ov18_02227C48 - cmp r0, #0 - beq _02227E90 -_02227E30: - cmp r0, #0xc - bgt _02227E46 - bge _02227E5A - cmp r0, #5 - bgt _02227E86 - cmp r0, #4 - blt _02227E86 - beq _02227E88 - cmp r0, #5 - beq _02227E88 - b _02227E86 -_02227E46: - cmp r0, #0x13 - bgt _02227E86 - cmp r0, #0xd - blt _02227E86 - beq _02227E60 - cmp r0, #0x12 - beq _02227E88 - cmp r0, #0x13 - beq _02227E88 - b _02227E86 -_02227E5A: - add r4, r7, #0 - mov r5, #1 - b _02227E88 -_02227E60: - ldr r0, _02227EC8 ; =0x02251D10 - ldr r0, [r0, #0x10] - cmp r0, #0 - beq _02227E70 - mov r4, #0 - add r5, r4, #0 - sub r5, #8 - b _02227E88 -_02227E70: - mov r2, #3 - add r0, r6, #0 - mov r1, #0 - lsl r2, r2, #0x10 - bl ov18_02227A7C - cmp r0, #0 - bne _02227E88 - add sp, #0x30 - add r0, r5, #0 - pop {r3, r4, r5, r6, r7, pc} -_02227E86: - mov r4, #0 -_02227E88: - bl ov18_02227C48 - cmp r0, #0 - bne _02227E30 -_02227E90: - cmp r4, #0 - bne _02227E02 -_02227E94: - add r0, sp, #4 - bl OS_CancelAlarm -_02227E9A: - bl ov18_02227C48 - cmp r0, #0 - bne _02227E9A - cmp r5, #0 - ble _02227EC2 - ldr r0, _02227EC8 ; =0x02251D10 - mov r1, #1 - str r1, [r0, #0x20] - ldr r0, _02227ED8 ; =0x0224984C - bl SOC_Startup - cmp r0, #0 - bge _02227EBC - mov r5, #1 - mvn r5, r5 - b _02227EC2 -_02227EBC: - ldr r0, _02227EC8 ; =0x02251D10 - mov r1, #1 - str r1, [r0, #0x24] -_02227EC2: - add r0, r5, #0 - add sp, #0x30 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02227EC8: .word Unk_ov18_02251D10 -_02227ECC: .word 0x003FEC42 -_02227ED0: .word ov18_02227CB0 -_02227ED4: .word Unk_ov18_02249838 -_02227ED8: .word Unk_ov18_0224984C - thumb_func_end ov18_02227DB8 - - thumb_func_start ov18_02227EDC -ov18_02227EDC: ; 0x02227EDC - push {r3, r4, r5, r6, r7, lr} - ldr r0, _02227F3C ; =0x02251D10 - mov r5, #1 - ldr r0, [r0, #0x20] - cmp r0, #0 - beq _02227F28 - bl ov18_022279EC - cmp r0, #0 - beq _02227F22 - mov r6, #0 - add r4, r6, #0 - mov r7, #0xa -_02227EF6: - add r0, r7, #0 - bl OS_Sleep - bl ov18_02227C48 - cmp r0, #0 - beq _02227F1E -_02227F04: - cmp r0, #4 - beq _02227F16 - cmp r0, #5 - beq _02227F16 - cmp r0, #0xe - bne _02227F14 - add r5, r4, #0 - b _02227F16 -_02227F14: - add r5, r6, #0 -_02227F16: - bl ov18_02227C48 - cmp r0, #0 - bne _02227F04 -_02227F1E: - cmp r5, #0 - bne _02227EF6 -_02227F22: - ldr r0, _02227F3C ; =0x02251D10 - mov r1, #0 - str r1, [r0, #0x20] -_02227F28: - ldr r0, _02227F3C ; =0x02251D10 - ldr r1, [r0, #0x24] - cmp r1, #0 - beq _02227F38 - mov r1, #0 - str r1, [r0, #0x24] - bl SOC_Cleanup -_02227F38: - pop {r3, r4, r5, r6, r7, pc} - nop -_02227F3C: .word Unk_ov18_02251D10 - thumb_func_end ov18_02227EDC - - thumb_func_start ov18_02227F40 -ov18_02227F40: ; 0x02227F40 - push {r4, r5, r6, r7, lr} - sub sp, #0x6c - str r0, [sp] - mov r0, #0 - str r0, [sp, #0x20] - str r0, [sp, #0x1c] - ldr r0, [sp] - str r1, [sp, #4] - add r6, r0, #4 - add r0, r1, #0 - add r4, r0, #4 - ldr r0, [sp, #0x20] - str r2, [sp, #8] - str r0, [sp, #0xc] - ldr r0, [sp] - ldr r0, [r0, #0] - cmp r0, #0 - bls _02228014 -_02227F64: - add r2, sp, #0x48 - add r2, #2 - mov r1, #0x22 - mov r0, #0 -_02227F6C: - strb r0, [r2] - add r2, r2, #1 - sub r1, r1, #1 - bne _02227F6C - add r0, sp, #0x48 - add r0, #2 - add r1, r6, #4 - mov r2, #0x20 - bl memcpy - add r0, sp, #0x48 - ldr r1, [r6, #0] - mov r7, #0 - add r0, #2 - strb r7, [r0, r1] - ldr r0, [sp, #4] - ldr r0, [r0, #0] - str r0, [sp, #0x10] - cmp r0, #0 - bls _02227FF8 - add r0, r6, #0 - str r0, [sp, #0x24] - add r0, #0x28 - ldr r5, [r6, #0] - str r0, [sp, #0x24] -_02227F9E: - cmp r5, #0 - beq _02227FF8 - cmp r5, #0x20 - bhi _02227FF8 - cmp r5, #1 - bne _02227FB4 - ldrb r0, [r6, #4] - cmp r0, #0 - beq _02227FF8 - cmp r0, #0x20 - beq _02227FF8 -_02227FB4: - add r0, sp, #0x48 - add r0, #2 - bl strlen - add r2, r0, #0 - add r0, sp, #0x48 - add r0, #2 - add r1, r4, #4 - bl memcmp - cmp r0, #0 - bne _02227FEE - add r1, r4, #0 - ldr r0, [sp, #0x24] - add r1, #0x28 - mov r2, #6 - bl memcmp - cmp r0, #0 - bne _02227FEE - ldrh r1, [r6, #0x2e] - ldrh r0, [r4, #0x2e] - cmp r1, r0 - beq _02227FEE - cmp r1, #0 - bne _02227FEE - mov r0, #1 - str r0, [sp, #0x20] - b _02227FF8 -_02227FEE: - ldr r0, [sp, #0x10] - add r7, r7, #1 - add r4, #0x30 - cmp r7, r0 - blo _02227F9E -_02227FF8: - ldr r0, [sp, #0x20] - cmp r0, #0 - bne _02228014 - ldr r0, [sp, #4] - add r6, #0x30 - add r4, r0, #4 - ldr r0, [sp, #0xc] - add r0, r0, #1 - str r0, [sp, #0xc] - ldr r0, [sp] - ldr r1, [r0, #0] - ldr r0, [sp, #0xc] - cmp r0, r1 - blo _02227F64 -_02228014: - ldr r0, [sp, #0x20] - cmp r0, #0 - bne _022280F0 - add r2, sp, #0x28 - mov r1, #0x22 - mov r0, #0 -_02228020: - strb r0, [r2] - add r2, r2, #1 - sub r1, r1, #1 - bne _02228020 - mov r0, #0 - str r0, [sp, #0x18] - str r0, [sp, #0x14] - ldr r0, [sp] - ldr r6, [sp, #0x18] - add r4, r0, #4 - ldr r0, [sp, #4] - add r5, r0, #4 - ldr r0, [r0, #0] - cmp r0, #0 - bls _0222807C - add r7, sp, #0x28 -_02228040: - add r0, r7, #0 - add r1, r5, #4 - mov r2, #0x20 - bl memcpy - ldr r1, [r5, #0] - mov r0, #0 - strb r0, [r7, r1] - ldr r0, _02228108 ; =0x022498A4 - bl strlen - add r2, r0, #0 - ldr r1, _02228108 ; =0x022498A4 - add r0, r7, #0 - bl memcmp - cmp r0, #0 - bne _02228070 - ldrh r0, [r5, #0x2e] - cmp r0, #0 - bne _02228070 - mov r0, #1 - str r0, [sp, #0x14] - b _0222807C -_02228070: - ldr r0, [sp, #4] - add r6, r6, #1 - ldr r0, [r0, #0] - add r5, #0x30 - cmp r6, r0 - blo _02228040 -_0222807C: - mov r0, #0 - str r0, [sp, #0xc] - ldr r0, [sp] - ldr r0, [r0, #0] - cmp r0, #0 - bls _022280E0 - ldr r7, _02228108 ; =0x022498A4 - add r5, sp, #0x28 -_0222808C: - add r0, r5, #0 - add r1, r4, #4 - mov r2, #0x20 - bl memcpy - ldr r1, [r4, #0] - mov r0, #0 - strb r0, [r5, r1] - add r0, r5, #0 - bl strlen - add r6, r0, #0 - add r0, r7, #0 - bl strlen - cmp r6, r0 - bne _022280CE - add r0, r7, #0 - bl strlen - add r2, r0, #0 - add r0, r5, #0 - add r1, r7, #0 - bl memcmp - cmp r0, #0 - bne _022280CE - ldrh r0, [r4, #0x2e] - cmp r0, #0 - bne _022280CE - mov r0, #1 - str r0, [sp, #0x18] - b _022280E0 -_022280CE: - ldr r0, [sp, #0xc] - add r4, #0x30 - add r0, r0, #1 - str r0, [sp, #0xc] - ldr r0, [sp] - ldr r1, [r0, #0] - ldr r0, [sp, #0xc] - cmp r0, r1 - blo _0222808C -_022280E0: - ldr r0, [sp, #0x18] - cmp r0, #0 - beq _022280F0 - ldr r0, [sp, #0x14] - cmp r0, #0 - bne _022280F0 - mov r0, #1 - str r0, [sp, #0x20] -_022280F0: - ldr r0, [sp, #0x20] - cmp r0, #0 - beq _02228100 - ldr r1, [sp, #0xc] - ldr r0, [sp, #8] - str r1, [r0, #0] - mov r0, #1 - str r0, [sp, #0x1c] -_02228100: - ldr r0, [sp, #0x1c] - add sp, #0x6c - pop {r4, r5, r6, r7, pc} - nop -_02228108: .word Unk_ov18_022498A4 - thumb_func_end ov18_02227F40 - - thumb_func_start ov18_0222810C -ov18_0222810C: ; 0x0222810C - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x70 - mov r0, #0 - str r0, [sp, #8] - str r0, [sp, #0x20] - ldr r0, _02228384 ; =0x02251D10 - mov r4, #0 - ldr r1, [r0, #0x70] - mov r0, #0x30 - mul r0, r1 - str r0, [sp, #0x10] - add r0, #0x34 - str r0, [sp, #0x10] - ldr r1, [sp, #0x10] - mov r0, #1 - mvn r4, r4 - bl ov18_0222AAB4 - str r0, [sp, #0xc] - cmp r0, #0 - beq _02228144 - ldr r1, [sp, #0x10] - mov r0, #1 - bl ov18_0222AAB4 - str r0, [sp, #8] - cmp r0, #0 - bne _02228146 -_02228144: - b _0222836A -_02228146: - mov r0, #0 - str r0, [sp, #0x1c] - b _02228332 -_0222814C: - bl ov18_0222AA98 - ldr r1, _02228388 ; =0x02249838 - ldr r1, [r1, #0xc] - cmp r0, r1 - bhs _02228236 - mov r0, #0 - ldr r3, _0222838C ; =0x0030BFFE - add r1, r0, #0 - add r2, r0, #0 - bl ov18_02227904 - cmp r0, #0 - bne _0222816E - mov r4, #1 - mvn r4, r4 - b _0222836A -_0222816E: - add r0, sp, #0x24 - bl OS_CreateAlarm - mov r0, #0x13 - str r0, [sp] - ldr r1, _02228390 ; =0x000FFB10 - ldr r3, _02228394 ; =ov18_02227CB0 - add r0, sp, #0x24 - mov r2, #0 - bl OS_SetAlarm - ldr r7, _02228384 ; =0x02251D10 - mov r5, #1 - mov r4, #0 - add r6, sp, #0x24 -_0222818C: - mov r0, #0xa - bl OS_Sleep - bl ov18_0222AA98 - ldr r1, _02228388 ; =0x02249838 - ldr r1, [r1, #0xc] - cmp r0, r1 - bhs _02228220 - ldr r0, [r7, #0x10] - cmp r0, #0 - bne _02228220 - bl ov18_02227C48 - cmp r0, #0 - beq _0222821C -_022281AC: - cmp r0, #0x13 - bhi _02228212 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_022281BC: ; jump table - .short _02228212 - _022281BC - 2 ; case 0 - .short _02228212 - _022281BC - 2 ; case 1 - .short _02228212 - _022281BC - 2 ; case 2 - .short _02228212 - _022281BC - 2 ; case 3 - .short _02228214 - _022281BC - 2 ; case 4 - .short _022281E8 - _022281BC - 2 ; case 5 - .short _02228212 - _022281BC - 2 ; case 6 - .short _02228212 - _022281BC - 2 ; case 7 - .short _02228214 - _022281BC - 2 ; case 8 - .short _02228212 - _022281BC - 2 ; case 9 - .short _0222820E - _022281BC - 2 ; case 10 - .short _02228212 - _022281BC - 2 ; case 11 - .short _02228212 - _022281BC - 2 ; case 12 - .short _02228212 - _022281BC - 2 ; case 13 - .short _02228212 - _022281BC - 2 ; case 14 - .short _02228212 - _022281BC - 2 ; case 15 - .short _02228212 - _022281BC - 2 ; case 16 - .short _02228212 - _022281BC - 2 ; case 17 - .short _02228214 - _022281BC - 2 ; case 18 - .short _022281E4 - _022281BC - 2 ; case 19 -_022281E4: - mov r5, #0 - b _02228214 -_022281E8: - ldr r0, [r7, #0x5c] - ldr r1, [r7, #0x70] - bl ov18_022278C0 - cmp r0, r4 - ble _02228214 - add r4, r0, #0 - add r0, r6, #0 - bl OS_CancelAlarm - mov r0, #0x13 - str r0, [sp] - ldr r1, _02228390 ; =0x000FFB10 - ldr r3, _02228394 ; =ov18_02227CB0 - add r0, r6, #0 - mov r2, #0 - bl OS_SetAlarm - b _02228214 -_0222820E: - mov r5, #0 - b _02228214 -_02228212: - mov r5, #0 -_02228214: - bl ov18_02227C48 - cmp r0, #0 - bne _022281AC -_0222821C: - cmp r5, #0 - bne _0222818C -_02228220: - add r0, sp, #0x24 - bl OS_CancelAlarm -_02228226: - bl ov18_02227C48 - cmp r0, #0 - bne _02228226 - ldr r1, _02228384 ; =0x02251D10 - ldr r0, [r1, #0x10] - cmp r0, #0 - beq _02228238 -_02228236: - b _02228342 -_02228238: - mov r0, #0 - str r0, [sp, #0x14] - ldr r0, [r1, #0x70] - cmp r4, r0 - blt _02228248 - ldr r0, [sp, #0x14] - sub r4, r0, #6 - b _0222836A -_02228248: - ldr r0, [sp, #0x14] - ldr r5, [r1, #0x5c] - str r0, [sp, #0x18] - cmp r4, #0 - ble _022282BE - ble _022282BE - ldr r0, [sp, #0xc] - ldr r7, [sp, #0xc] - str r0, [sp, #4] - add r0, #8 - add r6, r7, #0 - str r0, [sp, #4] - add r6, #0x2c -_02228262: - add r1, r5, #0 - ldr r0, [sp, #4] - add r1, #0xc - mov r2, #0x20 - bl memcpy - ldrh r0, [r5, #0xa] - str r0, [r7, #4] - ldrh r0, [r5, #0xa] - add r1, r7, r0 - mov r0, #0 - strb r0, [r1, #8] - ldrh r1, [r5, #0x2c] - mov r0, #0x10 - tst r0, r1 - beq _02228286 - mov r0, #1 - b _02228288 -_02228286: - mov r0, #0 -_02228288: - strh r0, [r7, #0x32] - ldrb r0, [r5, #4] - add r7, #0x30 - strb r0, [r6] - ldrb r0, [r5, #5] - strb r0, [r6, #1] - ldrb r0, [r5, #6] - strb r0, [r6, #2] - ldrb r0, [r5, #7] - strb r0, [r6, #3] - ldrb r0, [r5, #8] - strb r0, [r6, #4] - ldrb r0, [r5, #9] - add r5, #0xc0 - strb r0, [r6, #5] - ldr r0, [sp, #4] - add r6, #0x30 - add r0, #0x30 - str r0, [sp, #4] - ldr r0, [sp, #0x14] - add r0, r0, #1 - str r0, [sp, #0x14] - ldr r0, [sp, #0x18] - add r0, r0, #1 - str r0, [sp, #0x18] - cmp r0, r4 - blt _02228262 -_022282BE: - ldr r0, [sp, #0xc] - str r4, [r0, #0] - ldr r0, _02228384 ; =0x02251D10 - ldr r0, [r0, #0x38] - cmp r0, #1 - beq _02228318 - ldr r0, [sp, #0xc] - ldr r1, [sp, #8] - add r2, sp, #0x20 - bl ov18_02227F40 - cmp r0, #0 - beq _02228318 - ldr r0, [sp, #0xc] - ldr r2, [sp, #0x20] - add r1, r0, #4 - mov r0, #0x30 - mul r0, r2 - add r4, r1, r0 - ldr r0, _02228384 ; =0x02251D10 - add r1, r4, #4 - str r2, [r0, #0x18] - ldr r0, _02228398 ; =0x02252220 - bl strcpy - add r0, r4, #0 - add r4, #0x28 - ldrb r2, [r4] - ldr r1, _0222839C ; =0x022521C0 - add r0, #0x28 - strb r2, [r1] - ldrb r2, [r0, #1] - strb r2, [r1, #1] - ldrb r2, [r0, #2] - strb r2, [r1, #2] - ldrb r2, [r0, #3] - strb r2, [r1, #3] - ldrb r2, [r0, #4] - strb r2, [r1, #4] - ldrb r0, [r0, #5] - strb r0, [r1, #5] - add r0, sp, #0x50 - bl ov18_0222AB1C - b _02228342 -_02228318: - ldr r0, [sp, #8] - ldr r1, [sp, #0xc] - ldr r2, [sp, #0x10] - bl memcpy - ldr r0, _02228384 ; =0x02251D10 - mov r1, #2 - str r1, [r0, #0x38] - bl ov18_0222AD18 - ldr r0, [sp, #0x1c] - add r0, r0, #1 - str r0, [sp, #0x1c] -_02228332: - ldr r0, [sp, #0x1c] - cmp r0, #0x1e - bge _02228342 - ldr r0, _02228384 ; =0x02251D10 - ldr r0, [r0, #0x10] - cmp r0, #0 - bne _02228342 - b _0222814C -_02228342: - ldr r0, [sp, #0x1c] - cmp r0, #0x1e - bge _02228354 - bl ov18_0222AA98 - ldr r1, _02228388 ; =0x02249838 - ldr r1, [r1, #0xc] - cmp r0, r1 - bls _0222835A -_02228354: - mov r4, #2 - mvn r4, r4 - b _0222836A -_0222835A: - ldr r0, _02228384 ; =0x02251D10 - ldr r0, [r0, #0x10] - cmp r0, #0 - beq _02228368 - mov r4, #7 - mvn r4, r4 - b _0222836A -_02228368: - mov r4, #1 -_0222836A: - ldr r0, [sp, #0xc] - cmp r0, #0 - beq _02228374 - bl ov18_0222AAD8 -_02228374: - ldr r0, [sp, #8] - cmp r0, #0 - beq _0222837E - bl ov18_0222AAD8 -_0222837E: - add r0, r4, #0 - add sp, #0x70 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02228384: .word Unk_ov18_02251D10 -_02228388: .word Unk_ov18_02249838 -_0222838C: .word 0x0030BFFE -_02228390: .word 0x000FFB10 -_02228394: .word ov18_02227CB0 -_02228398: .word Unk_ov18_02252220 -_0222839C: .word Unk_ov18_022521C0 - thumb_func_end ov18_0222810C - - thumb_func_start ov18_022283A0 -ov18_022283A0: ; 0x022283A0 - push {r3, lr} - ldr r2, [sp, #8] - str r1, [sp] - add r1, r3, #0 - mov r3, #0 - bl SOC_SendTo - cmp r0, #0 - bge _022283B6 - mov r0, #3 - mvn r0, r0 -_022283B6: - pop {r3, pc} - thumb_func_end ov18_022283A0 - - thumb_func_start ov18_022283B8 -ov18_022283B8: ; 0x022283B8 - push {r4, r5, r6, lr} - sub sp, #0x10 - add r5, r0, #0 - add r6, r1, #0 - mov r1, #8 - add r0, sp, #4 - strb r1, [r0, #4] - mov r1, #2 - strb r1, [r0, #5] - sub r1, r1, #3 - str r1, [sp, #0xc] - ldr r1, _022283F0 ; =0x000001E6 - add r4, r2, #0 - strh r1, [r0, #6] - bl SOCL_GetHostID - add r1, sp, #4 - bl SOC_U32to4U8 - add r0, r5, #0 - add r1, sp, #8 - add r2, sp, #4 - add r3, r6, #0 - str r4, [sp] - bl ov18_022283A0 - add sp, #0x10 - pop {r4, r5, r6, pc} - ; .align 2, 0 -_022283F0: .word 0x000001E6 - thumb_func_end ov18_022283B8 - - thumb_func_start ov18_022283F4 -ov18_022283F4: ; 0x022283F4 - add r1, r2, #0 - add r2, r3, #0 - ldr r3, _022283FC ; =ov18_022283B8 - bx r3 - ; .align 2, 0 -_022283FC: .word ov18_022283B8 - thumb_func_end ov18_022283F4 - - thumb_func_start ov18_02228400 -ov18_02228400: ; 0x02228400 - push {r3, r4, r5, r6} - ldrh r5, [r0] - mov r3, #0 - asr r4, r5, #8 - lsl r4, r4, #0x18 - lsr r6, r4, #0x18 - lsl r4, r5, #8 - mov r5, #0xff - lsl r5, r5, #8 - and r4, r5 - orr r4, r6 - lsl r4, r4, #0x10 - lsr r4, r4, #0x10 - str r4, [r1, #0] - ldrh r6, [r0, #2] - asr r1, r6, #8 - lsl r1, r1, #0x18 - lsr r4, r1, #0x18 - lsl r1, r6, #8 - and r1, r5 - orr r1, r4 - lsl r1, r1, #0x10 - lsr r4, r1, #0x10 - add r1, r0, #6 - str r4, [r2, #0] - add r2, r1, r4 - add r4, r0, #0 - cmp r0, r2 - bhs _02228444 -_0222843A: - ldrb r1, [r4] - add r4, r4, #1 - add r3, r3, r1 - cmp r4, r2 - blo _0222843A -_02228444: - ldrh r5, [r2] - lsl r1, r3, #0x10 - lsr r1, r1, #0x10 - asr r2, r5, #8 - lsl r2, r2, #0x18 - lsr r4, r2, #0x18 - mov r2, #0xff - lsl r3, r5, #8 - lsl r2, r2, #8 - and r2, r3 - orr r2, r4 - lsl r2, r2, #0x10 - lsr r2, r2, #0x10 - cmp r1, r2 - beq _02228468 - mov r0, #0 - pop {r3, r4, r5, r6} - bx lr -_02228468: - add r0, r0, #6 - pop {r3, r4, r5, r6} - bx lr - ; .align 2, 0 - thumb_func_end ov18_02228400 - - thumb_func_start ov18_02228470 -ov18_02228470: ; 0x02228470 - push {r3, r4, r5, r6} - add r4, r0, #0 - ldr r0, [r4, #0] - cmp r0, r1 - blo _02228480 - mov r0, #0 - pop {r3, r4, r5, r6} - bx lr -_02228480: - ldrh r5, [r0] - asr r1, r5, #8 - lsl r1, r1, #0x18 - lsr r6, r1, #0x18 - lsl r1, r5, #8 - mov r5, #0xff - lsl r5, r5, #8 - and r1, r5 - orr r1, r6 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - str r1, [r2, #0] - ldrh r6, [r0, #2] - add r0, r0, #4 - asr r1, r6, #8 - lsl r1, r1, #0x18 - lsr r2, r1, #0x18 - lsl r1, r6, #8 - and r1, r5 - orr r1, r2 - lsl r1, r1, #0x10 - lsr r2, r1, #0x10 - str r2, [r3, #0] - add r2, #0xb - mov r1, #7 - bic r2, r1 - sub r1, r2, #4 - add r1, r0, r1 - str r1, [r4, #0] - pop {r3, r4, r5, r6} - bx lr - ; .align 2, 0 - thumb_func_end ov18_02228470 - - thumb_func_start ov18_022284C0 -ov18_022284C0: ; 0x022284C0 - push {r3, r4, r5, r6, lr} - sub sp, #4 - add r5, r0, #0 - add r5, #8 - str r5, [sp] - add r3, r2, #0 - ldrh r2, [r0] - add r4, r1, #0 - add r0, sp, #0 - asr r1, r2, #8 - lsl r6, r2, #8 - mov r2, #0xff - lsl r1, r1, #0x18 - lsl r2, r2, #8 - lsr r1, r1, #0x18 - and r2, r6 - orr r1, r2 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - add r1, r5, r1 - add r2, r4, #0 - bl ov18_02228470 - add sp, #4 - pop {r3, r4, r5, r6, pc} - ; .align 2, 0 - thumb_func_end ov18_022284C0 - - thumb_func_start ov18_022284F4 -ov18_022284F4: ; 0x022284F4 - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - add r7, r3, #0 - add r6, r0, #0 - add r0, r7, #0 - sub r0, #8 - str r1, [sp, #4] - lsl r0, r0, #0x10 - add r1, r2, #0 - mov r5, #0 - strb r5, [r1] - lsr r0, r0, #0x10 - strb r5, [r1, #1] - asr r2, r0, #8 - strb r5, [r1, #2] - lsl r2, r2, #0x18 - strb r5, [r1, #3] - lsr r3, r2, #0x18 - lsl r2, r0, #8 - mov r0, #0xff - strb r5, [r1, #4] - lsl r0, r0, #8 - strb r5, [r1, #5] - and r0, r2 - strb r5, [r1, #6] - orr r0, r3 - strb r5, [r1, #7] - ldr r3, [sp, #0x20] - add r4, r6, #0 - strh r0, [r1] - cmp r3, #0 - beq _02228544 - mov r0, #0x10 - str r0, [sp] - add r0, r6, #6 - add r2, r7, #0 - bl ov18_02229134 - add r7, #8 - b _0222854C -_02228544: - add r0, r6, #6 - add r2, r7, #0 - bl memcpy -_0222854C: - mov r0, #0 - strb r0, [r6] - strb r0, [r6, #1] - strb r0, [r6, #2] - strb r0, [r6, #3] - strb r0, [r6, #4] - strb r0, [r6, #5] - ldr r0, [sp, #4] - lsl r0, r0, #0x10 - lsr r1, r0, #0x10 - asr r0, r1, #8 - lsl r0, r0, #0x18 - lsr r2, r0, #0x18 - mov r0, #0xff - lsl r1, r1, #8 - lsl r0, r0, #8 - and r1, r0 - orr r1, r2 - strh r1, [r6] - lsl r1, r7, #0x10 - lsr r2, r1, #0x10 - asr r1, r2, #8 - lsl r1, r1, #0x18 - lsl r2, r2, #8 - lsr r1, r1, #0x18 - and r0, r2 - orr r0, r1 - strh r0, [r6, #2] - add r0, r4, #6 - add r4, r0, r7 - add r1, r6, #0 - cmp r6, r4 - bhs _02228598 -_0222858E: - ldrb r0, [r1] - add r1, r1, #1 - add r5, r5, r0 - cmp r1, r4 - blo _0222858E -_02228598: - lsl r0, r5, #0x10 - lsr r1, r0, #0x10 - asr r0, r1, #8 - lsl r0, r0, #0x18 - lsr r2, r0, #0x18 - mov r0, #0xff - lsl r1, r1, #8 - lsl r0, r0, #8 - and r0, r1 - orr r0, r2 - strh r0, [r4] - add r0, r4, #2 - sub r0, r0, r6 - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 - thumb_func_end ov18_022284F4 - - thumb_func_start ov18_022285B8 -ov18_022285B8: ; 0x022285B8 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - lsl r0, r1, #0x10 - add r4, r3, #0 - mov r3, #0 - lsr r0, r0, #0x10 - add r7, r2, #0 - strb r3, [r5] - asr r1, r0, #8 - lsl r2, r0, #8 - mov r0, #0xff - strb r3, [r5, #1] - lsl r1, r1, #0x18 - lsl r0, r0, #8 - strb r3, [r5, #2] - lsr r1, r1, #0x18 - and r2, r0 - orr r1, r2 - strb r3, [r5, #3] - add r2, r4, #0 - strh r1, [r5] - add r2, #0xb - mov r1, #7 - bic r2, r1 - lsl r1, r4, #0x10 - sub r6, r2, #4 - lsr r2, r1, #0x10 - asr r1, r2, #8 - lsl r1, r1, #0x18 - lsl r2, r2, #8 - and r0, r2 - lsr r1, r1, #0x18 - orr r0, r1 - strh r0, [r5, #2] - add r5, r5, #4 - add r0, r5, #0 - add r1, r3, #0 - add r2, r6, #0 - bl memset - add r0, r5, #0 - add r1, r7, #0 - add r2, r4, #0 - bl memcpy - add r0, r5, r6 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 - thumb_func_end ov18_022285B8 - - thumb_func_start ov18_02228618 -ov18_02228618: ; 0x02228618 - push {r4, lr} - add r4, r0, #0 - mov r0, #0 - strb r0, [r4] - strb r0, [r4, #1] - strb r0, [r4, #2] - strb r0, [r4, #3] - strb r0, [r4, #4] - strb r0, [r4, #5] - strb r0, [r4, #6] - strb r0, [r4, #7] - add r0, r4, #0 - add r0, #8 - bl ov18_022285B8 - sub r0, r0, r4 - add r1, r0, #0 - sub r1, #8 - strh r1, [r4] - pop {r4, pc} - thumb_func_end ov18_02228618 - - thumb_func_start ov18_02228640 -ov18_02228640: ; 0x02228640 - push {r4, r5, r6, r7, lr} - sub sp, #0x1c - str r1, [sp] - add r1, sp, #0x18 - add r2, sp, #0x14 - bl ov18_02228400 - mov r6, #0 - add r5, r0, #0 - add r7, r6, #0 - str r5, [sp, #8] - str r6, [sp, #4] - cmp r5, #0 - bne _02228662 - add sp, #0x1c - add r0, r6, #0 - pop {r4, r5, r6, r7, pc} -_02228662: - ldr r0, [sp, #0x18] - cmp r0, #1 - beq _0222866E - add sp, #0x1c - add r0, r6, #0 - pop {r4, r5, r6, r7, pc} -_0222866E: - ldr r4, [sp, #0x14] - add r0, r5, #0 - add r0, #8 - str r0, [sp, #8] - add r0, sp, #8 - add r1, r5, r4 - add r2, sp, #0x10 - add r3, sp, #0xc - bl ov18_02228470 - cmp r0, #0 - beq _022286EE -_02228686: - ldr r1, [sp, #0x10] - cmp r1, #1 - beq _02228696 - cmp r1, #2 - beq _022286AE - cmp r1, #5 - beq _022286C8 - b _022286DE -_02228696: - ldrh r1, [r0] - asr r0, r1, #8 - lsl r0, r0, #0x18 - lsr r2, r0, #0x18 - mov r0, #0xff - lsl r1, r1, #8 - lsl r0, r0, #8 - and r0, r1 - orr r0, r2 - lsl r0, r0, #0x10 - lsr r6, r0, #0x10 - b _022286DE -_022286AE: - ldrh r1, [r0] - asr r0, r1, #8 - lsl r2, r1, #8 - mov r1, #0xff - lsl r0, r0, #0x18 - lsl r1, r1, #8 - lsr r0, r0, #0x18 - and r1, r2 - orr r0, r1 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - str r0, [sp, #4] - b _022286DE -_022286C8: - ldrh r1, [r0] - asr r0, r1, #8 - lsl r0, r0, #0x18 - lsr r2, r0, #0x18 - mov r0, #0xff - lsl r1, r1, #8 - lsl r0, r0, #8 - and r0, r1 - orr r0, r2 - lsl r0, r0, #0x10 - lsr r7, r0, #0x10 -_022286DE: - add r0, sp, #8 - add r1, r5, r4 - add r2, sp, #0x10 - add r3, sp, #0xc - bl ov18_02228470 - cmp r0, #0 - bne _02228686 -_022286EE: - cmp r6, #1 - bne _022286F8 - ldr r0, [sp, #4] - cmp r0, #1 - beq _022286FE -_022286F8: - add sp, #0x1c - mov r0, #0 - pop {r4, r5, r6, r7, pc} -_022286FE: - cmp r7, #1 - blt _02228708 - mov r1, #1 - ldr r0, [sp] - b _0222870C -_02228708: - ldr r0, [sp] - mov r1, #0 -_0222870C: - str r1, [r0, #0] - mov r0, #1 - add sp, #0x1c - pop {r4, r5, r6, r7, pc} - thumb_func_end ov18_02228640 - - thumb_func_start ov18_02228714 -ov18_02228714: ; 0x02228714 - push {r3, r4, r5, r6, lr} - sub sp, #0xc - add r5, r1, #0 - add r6, r2, #0 - add r1, sp, #8 - add r2, sp, #4 - add r4, r3, #0 - bl ov18_02228400 - add r1, r0, #0 - bne _02228730 - add sp, #0xc - mov r0, #0 - pop {r3, r4, r5, r6, pc} -_02228730: - ldr r0, [sp, #8] - cmp r0, r5 - beq _0222873C - add sp, #0xc - mov r0, #0 - pop {r3, r4, r5, r6, pc} -_0222873C: - cmp r4, #0 - beq _02228756 - mov r0, #0x10 - str r0, [sp] - ldr r2, [sp, #4] - add r0, r6, #0 - add r3, r4, #0 - bl ov18_022292EC - ldr r0, [sp, #4] - sub r0, #8 - str r0, [sp, #4] - b _0222875E -_02228756: - ldr r2, [sp, #4] - add r0, r6, #0 - bl memcpy -_0222875E: - ldr r0, [sp, #4] - add sp, #0xc - pop {r3, r4, r5, r6, pc} - thumb_func_end ov18_02228714 - - thumb_func_start ov18_02228764 -ov18_02228764: ; 0x02228764 - push {r4, lr} - sub sp, #0x10 - mov r1, #1 - add r4, r0, #0 - add r2, sp, #4 - lsl r1, r1, #8 - add r0, sp, #4 - strh r1, [r0] - ldr r3, _022287EC ; =0x0224645C - add r2, #2 - mov r1, #7 -_0222877A: - ldrb r0, [r3] - add r3, r3, #1 - strb r0, [r2] - add r2, r2, #1 - sub r1, r1, #1 - bne _0222877A - ldr r0, _022287F0 ; =0x02249838 - mov r1, #1 - ldr r0, [r0, #0] - add r2, sp, #4 - mov r3, #2 - bl ov18_022285B8 - mov r1, #2 - add r2, sp, #4 - add r3, r1, #0 - bl ov18_022285B8 - ldr r1, _022287F4 ; =0x02251D10 - ldr r1, [r1, #0x50] - cmp r1, #0 - beq _022287B0 - mov r1, #5 - add r2, sp, #4 - mov r3, #2 - bl ov18_022285B8 -_022287B0: - add r2, sp, #4 - mov r1, #3 - add r2, #2 - mov r3, #7 - bl ov18_022285B8 - ldr r1, _022287F4 ; =0x02251D10 - add r3, r0, #0 - ldr r1, [r1, #0x50] - cmp r1, #0 - beq _022287D2 - ldr r2, _022287F8 ; =0x022521B8 - mov r1, #4 - mov r3, #6 - bl ov18_022285B8 - add r3, r0, #0 -_022287D2: - mov r0, #0 - str r0, [sp] - add r0, r4, #0 - ldr r4, _022287F0 ; =0x02249838 - ldr r2, _022287FC ; =0x02252244 - ldr r4, [r4, #0] - mov r1, #2 - sub r3, r3, r4 - add r3, #8 - bl ov18_022284F4 - add sp, #0x10 - pop {r4, pc} - ; .align 2, 0 -_022287EC: .word Unk_ov18_0224645C -_022287F0: .word Unk_ov18_02249838 -_022287F4: .word Unk_ov18_02251D10 -_022287F8: .word Unk_ov18_022521B8 -_022287FC: .word Unk_ov18_02252244 - thumb_func_end ov18_02228764 - - thumb_func_start ov18_02228800 -ov18_02228800: ; 0x02228800 - push {r3, lr} - bl OS_GetMacAddress - mov r0, #1 - pop {r3, pc} - ; .align 2, 0 - thumb_func_end ov18_02228800 - - thumb_func_start ov18_0222880C -ov18_0222880C: ; 0x0222880C - push {r3, r4, lr} - sub sp, #0x4c - ldr r1, _022288F8 ; =0x022498F8 - add r4, r0, #0 - ldrb r0, [r1] - add r2, r4, #0 - add r2, #0xc - strb r0, [r4, #0xc] - ldrb r0, [r1, #1] - strb r0, [r2, #1] - ldrb r0, [r1, #2] - strb r0, [r2, #2] - ldrb r0, [r1, #3] - add r1, sp, #4 - add r1, #2 - strb r0, [r2, #3] - ldr r0, _022288FC ; =0x022521C0 - ldrb r2, [r0] - strb r2, [r1] - ldrb r2, [r0, #1] - strb r2, [r1, #1] - ldrb r2, [r0, #2] - strb r2, [r1, #2] - ldrb r2, [r0, #3] - strb r2, [r1, #3] - ldrb r2, [r0, #4] - ldrb r0, [r0, #5] - strb r2, [r1, #4] - strb r0, [r1, #5] - add r1, sp, #0 - ldrb r2, [r1, #6] - mov r0, #0xfd - and r0, r2 - strb r0, [r1, #6] - add r0, sp, #0 - bl ov18_02228800 - add r1, sp, #0 - ldrb r2, [r1] - ldr r0, _02228900 ; =0x022521B8 - strb r2, [r0] - ldrb r2, [r1, #1] - strb r2, [r0, #1] - ldrb r2, [r1, #2] - strb r2, [r0, #2] - ldrb r2, [r1, #3] - strb r2, [r0, #3] - ldrb r2, [r1, #4] - strb r2, [r0, #4] - ldrb r2, [r1, #5] - strb r2, [r0, #5] - add r0, sp, #4 - add r0, #2 - mov r2, #6 - bl memcmp - cmp r0, #0 - bgt _022288A0 - add r1, sp, #0 - ldrb r0, [r1] - strb r0, [r4] - ldrb r0, [r1, #1] - strb r0, [r4, #1] - ldrb r0, [r1, #2] - strb r0, [r4, #2] - ldrb r0, [r1, #3] - strb r0, [r4, #3] - ldrb r0, [r1, #4] - strb r0, [r4, #4] - ldrb r0, [r1, #5] - add r1, sp, #4 - add r1, #2 - strb r0, [r4, #5] - b _022288BE -_022288A0: - add r1, sp, #4 - add r1, #2 - ldrb r0, [r1] - strb r0, [r4] - ldrb r0, [r1, #1] - strb r0, [r4, #1] - ldrb r0, [r1, #2] - strb r0, [r4, #2] - ldrb r0, [r1, #3] - strb r0, [r4, #3] - ldrb r0, [r1, #4] - strb r0, [r4, #4] - ldrb r0, [r1, #5] - add r1, sp, #0 - strb r0, [r4, #5] -_022288BE: - ldrb r0, [r1] - strb r0, [r4, #6] - ldrb r0, [r1, #1] - strb r0, [r4, #7] - ldrb r0, [r1, #2] - strb r0, [r4, #8] - ldrb r0, [r1, #3] - strb r0, [r4, #9] - ldrb r0, [r1, #4] - strb r0, [r4, #0xa] - ldrb r0, [r1, #5] - strb r0, [r4, #0xb] - ldr r0, _02228904 ; =0x02249838 - ldr r0, [r0, #4] - cmp r0, #0 - beq _022288F0 - add r0, sp, #0x2c - add r1, sp, #0 - bl ov18_0222AB1C - add r1, sp, #4 - add r0, sp, #0xc - add r1, #2 - bl ov18_0222AB1C -_022288F0: - mov r0, #1 - add sp, #0x4c - pop {r3, r4, pc} - nop -_022288F8: .word Unk_ov18_022498F8 -_022288FC: .word Unk_ov18_022521C0 -_02228900: .word Unk_ov18_022521B8 -_02228904: .word Unk_ov18_02249838 - thumb_func_end ov18_0222880C - - thumb_func_start ov18_02228908 -ov18_02228908: ; 0x02228908 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x18 - add r1, r0, #0 - str r1, [sp, #4] - add r1, #8 - str r1, [sp, #4] - str r1, [sp, #0x14] - mov r1, #0 - str r1, [sp] - ldrh r1, [r0] - add r3, sp, #0xc - asr r0, r1, #8 - lsl r0, r0, #0x18 - lsr r2, r0, #0x18 - mov r0, #0xff - lsl r1, r1, #8 - lsl r0, r0, #8 - and r0, r1 - orr r0, r2 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - str r0, [sp, #8] - ldr r2, [sp, #4] - ldr r1, [sp, #8] - add r0, sp, #0x14 - add r1, r2, r1 - add r2, sp, #0x10 - bl ov18_02228470 - add r5, r0, #0 - bne _02228948 - b _02228AB8 -_02228948: - ldr r2, [sp, #0x10] - ldr r0, _02228AC0 ; =0x00000201 - sub r1, r2, r0 - cmp r1, #9 - bhi _022289D6 - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_0222895E: ; jump table - .short _02228972 - _0222895E - 2 ; case 0 - .short _02228992 - _0222895E - 2 ; case 1 - .short _022289AE - _0222895E - 2 ; case 2 - .short _022289D8 - _0222895E - 2 ; case 3 - .short _02228A02 - _0222895E - 2 ; case 4 - .short _02228A1E - _0222895E - 2 ; case 5 - .short _02228A1E - _0222895E - 2 ; case 6 - .short _02228A1E - _0222895E - 2 ; case 7 - .short _02228A1E - _0222895E - 2 ; case 8 - .short _02228A7E - _0222895E - 2 ; case 9 -_02228972: - ldr r3, _02228AC4 ; =0x02252064 - mov r0, #0 - add r2, r3, #0 - add r1, r0, #0 - stmia r2!, {r0, r1} - stmia r2!, {r0, r1} - stmia r2!, {r0, r1} - stmia r2!, {r0, r1} - ldr r2, [sp, #0xc] - add r0, r3, #0 - add r1, r5, #0 - bl memcpy - mov r0, #1 - str r0, [sp] - b _02228AA2 -_02228992: - ldrh r1, [r5] - asr r0, r1, #8 - lsl r0, r0, #0x18 - lsr r2, r0, #0x18 - mov r0, #0xff - lsl r1, r1, #8 - lsl r0, r0, #8 - and r0, r1 - orr r0, r2 - lsl r0, r0, #0x10 - lsr r1, r0, #0x10 - ldr r0, _02228AC8 ; =0x02252090 - str r1, [r0, #0] - b _02228AA2 -_022289AE: - ldrh r3, [r5] - ldr r1, _02228ACC ; =0x02251F64 - mov r0, #0 - asr r2, r3, #8 - lsl r2, r2, #0x18 - lsr r4, r2, #0x18 - mov r2, #0xff - lsl r3, r3, #8 - lsl r2, r2, #8 - and r2, r3 - orr r2, r4 - lsl r2, r2, #0x10 - lsr r3, r2, #0x10 - mov r2, #0x57 - lsl r2, r2, #2 -_022289CC: - add r0, r0, #1 - str r3, [r1, r2] - add r1, #0x28 - cmp r0, #4 - blt _022289CC -_022289D6: - b _02228AA2 -_022289D8: - ldrh r3, [r5] - ldr r0, _02228ACC ; =0x02251F64 - mov r1, #0 - asr r2, r3, #8 - lsl r2, r2, #0x18 - lsr r4, r2, #0x18 - mov r2, #0xff - lsl r3, r3, #8 - lsl r2, r2, #8 - and r2, r3 - orr r2, r4 - lsl r2, r2, #0x10 - lsr r3, r2, #0x10 - mov r2, #0x16 - lsl r2, r2, #4 -_022289F6: - add r1, r1, #1 - str r3, [r0, r2] - add r0, #0x28 - cmp r1, #4 - blt _022289F6 - b _02228AA2 -_02228A02: - ldrh r1, [r5] - asr r0, r1, #8 - lsl r0, r0, #0x18 - lsr r2, r0, #0x18 - mov r0, #0xff - lsl r1, r1, #8 - lsl r0, r0, #8 - and r0, r1 - orr r0, r2 - lsl r0, r0, #0x10 - lsr r1, r0, #0x10 - ldr r0, _02228AC8 ; =0x02252090 - str r1, [r0, #4] - b _02228AA2 -_02228A1E: - add r0, r0, #5 - sub r2, r2, r0 - mov r0, #0x28 - mul r0, r2 - ldr r1, _02228AD0 ; =0x022520C8 - mov r2, #0x20 - add r0, r1, r0 - mov r1, #0 - bl memset - ldr r0, _02228AC8 ; =0x02252090 - ldr r1, _02228AD4 ; =0x00000206 - ldr r0, [r0, #0x30] - cmp r0, #1 - bne _02228A68 - ldr r2, [sp, #0x10] - ldr r0, _02228AD0 ; =0x022520C8 - sub r2, r2, r1 - mov r1, #0x28 - mul r1, r2 - add r4, r0, r1 - ldr r0, [sp, #0xc] - mov r6, #0 - cmp r0, #0 - ble _02228AA2 - add r7, r6, #0 -_02228A52: - ldrsb r1, [r5, r7] - add r0, r4, #0 - add r5, r5, #1 - bl ov18_0222AAE8 - add r4, r4, r0 - ldr r0, [sp, #0xc] - add r6, r6, #1 - cmp r6, r0 - blt _02228A52 - b _02228AA2 -_02228A68: - ldr r2, [sp, #0x10] - ldr r0, _02228AD0 ; =0x022520C8 - sub r2, r2, r1 - mov r1, #0x28 - mul r1, r2 - add r0, r0, r1 - ldr r2, [sp, #0xc] - add r1, r5, #0 - bl memcpy - b _02228AA2 -_02228A7E: - ldr r3, _02228AD8 ; =0x02252160 - mov r0, #0 - add r2, r3, #0 - add r1, r0, #0 - stmia r2!, {r0, r1} - stmia r2!, {r0, r1} - stmia r2!, {r0, r1} - stmia r2!, {r0, r1} - stmia r2!, {r0, r1} - stmia r2!, {r0, r1} - stmia r2!, {r0, r1} - stmia r2!, {r0, r1} - stmia r2!, {r0, r1} - ldr r2, [sp, #0xc] - add r0, r3, #0 - add r1, r5, #0 - bl memcpy -_02228AA2: - ldr r2, [sp, #4] - ldr r1, [sp, #8] - add r0, sp, #0x14 - add r1, r2, r1 - add r2, sp, #0x10 - add r3, sp, #0xc - bl ov18_02228470 - add r5, r0, #0 - beq _02228AB8 - b _02228948 -_02228AB8: - ldr r0, [sp] - add sp, #0x18 - pop {r3, r4, r5, r6, r7, pc} - nop -_02228AC0: .word 0x00000201 -_02228AC4: .word 0x02252064 -_02228AC8: .word 0x02252090 -_02228ACC: .word Unk_ov18_02251F64 -_02228AD0: .word 0x022520C8 -_02228AD4: .word 0x00000206 -_02228AD8: .word 0x02252160 - thumb_func_end ov18_02228908 - - thumb_func_start ov18_02228ADC -ov18_02228ADC: ; 0x02228ADC - push {r4, r5, r6, r7} - add r4, r2, #0 - mov r2, #0 - add r5, r1, #0 - add r3, r2, #0 - cmp r4, #0 - ble _02228B8A - mov r7, #0x1f -_02228AEC: - ldrsb r1, [r5, r3] - cmp r1, #0x63 - bgt _02228B42 - bge _02228B5A - cmp r1, #0x61 - bgt _02228B3C - bge _02228B5A - add r6, r1, #0 - sub r6, #0x30 - cmp r6, #0x16 - bhi _02228B66 - add r6, r6, r6 - add r6, pc - ldrh r6, [r6, #6] - lsl r6, r6, #0x10 - asr r6, r6, #0x10 - add pc, r6 -_02228B0E: ; jump table - .short _02228B54 - _02228B0E - 2 ; case 0 - .short _02228B54 - _02228B0E - 2 ; case 1 - .short _02228B54 - _02228B0E - 2 ; case 2 - .short _02228B54 - _02228B0E - 2 ; case 3 - .short _02228B54 - _02228B0E - 2 ; case 4 - .short _02228B54 - _02228B0E - 2 ; case 5 - .short _02228B54 - _02228B0E - 2 ; case 6 - .short _02228B54 - _02228B0E - 2 ; case 7 - .short _02228B54 - _02228B0E - 2 ; case 8 - .short _02228B54 - _02228B0E - 2 ; case 9 - .short _02228B66 - _02228B0E - 2 ; case 10 - .short _02228B66 - _02228B0E - 2 ; case 11 - .short _02228B66 - _02228B0E - 2 ; case 12 - .short _02228B66 - _02228B0E - 2 ; case 13 - .short _02228B66 - _02228B0E - 2 ; case 14 - .short _02228B66 - _02228B0E - 2 ; case 15 - .short _02228B66 - _02228B0E - 2 ; case 16 - .short _02228B60 - _02228B0E - 2 ; case 17 - .short _02228B60 - _02228B0E - 2 ; case 18 - .short _02228B60 - _02228B0E - 2 ; case 19 - .short _02228B60 - _02228B0E - 2 ; case 20 - .short _02228B60 - _02228B0E - 2 ; case 21 - .short _02228B60 - _02228B0E - 2 ; case 22 -_02228B3C: - cmp r1, #0x62 - beq _02228B5A - b _02228B66 -_02228B42: - cmp r1, #0x65 - bgt _02228B4E - bge _02228B5A - cmp r1, #0x64 - beq _02228B5A - b _02228B66 -_02228B4E: - cmp r1, #0x66 - beq _02228B5A - b _02228B66 -_02228B54: - sub r1, #0x30 - add r2, r2, r1 - b _02228B6C -_02228B5A: - sub r1, #0x57 - add r2, r2, r1 - b _02228B6C -_02228B60: - sub r1, #0x37 - add r2, r2, r1 - b _02228B6C -_02228B66: - mov r0, #0 - pop {r4, r5, r6, r7} - bx lr -_02228B6C: - lsr r6, r3, #0x1f - lsl r1, r3, #0x1f - sub r1, r1, r6 - ror r1, r7 - add r1, r6, r1 - bne _02228B7C - lsl r2, r2, #4 - b _02228B84 -_02228B7C: - add r6, r3, r6 - asr r1, r6, #1 - strb r2, [r0, r1] - mov r2, #0 -_02228B84: - add r3, r3, #1 - cmp r3, r4 - blt _02228AEC -_02228B8A: - mov r0, #1 - pop {r4, r5, r6, r7} - bx lr - thumb_func_end ov18_02228ADC - - thumb_func_start ov18_02228B90 -ov18_02228B90: ; 0x02228B90 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x28 - mov r0, #1 - str r0, [sp] - ldr r0, _02228CF8 ; =0x02251E7C - ldr r1, _02228CFC ; =0x02252064 - bl strcpy - ldr r1, _02228D00 ; =0x02252090 - ldr r0, [r1, #0] - cmp r0, #3 - bls _02228BAA - b _02228CEA -_02228BAA: - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02228BB6: ; jump table - .short _02228BBE - _02228BB6 - 2 ; case 0 - .short _02228BC6 - _02228BB6 - 2 ; case 1 - .short _02228CBE - _02228BB6 - 2 ; case 2 - .short _02228CD4 - _02228BB6 - 2 ; case 3 -_02228BBE: - ldr r0, _02228D04 ; =0x02251E90 - mov r1, #0 - str r1, [r0, #0xc] - b _02228CF0 -_02228BC6: - ldr r1, [r1, #4] - cmp r1, #0 - bne _02228BD4 - mov r0, #6 - mvn r0, r0 - str r0, [sp] - b _02228CF0 -_02228BD4: - ldr r0, _02228D04 ; =0x02251E90 - ldr r6, _02228D08 ; =0x022520C8 - ldr r5, _02228D0C ; =0x02251EA4 - str r1, [r0, #0x10] - mov r7, #0 - add r4, sp, #4 -_02228BE0: - add r0, sp, #4 - add r1, r6, #0 - mov r2, #0x20 - bl memcpy - mov r1, #0 - add r0, sp, #0x24 - strb r1, [r0] - add r0, sp, #4 - bl strlen - cmp r0, #0x10 - bhi _02228C18 - cmp r0, #0xa - blo _02228C0A - beq _02228C42 - cmp r0, #0xd - beq _02228C54 - cmp r0, #0x10 - beq _02228C80 - b _02228CAC -_02228C0A: - cmp r0, #0 - bhi _02228C12 - beq _02228CB2 - b _02228CAC -_02228C12: - cmp r0, #5 - beq _02228C26 - b _02228CAC -_02228C18: - cmp r0, #0x1a - bhi _02228C20 - beq _02228C6E - b _02228CAC -_02228C20: - cmp r0, #0x20 - beq _02228C9A - b _02228CAC -_02228C26: - ldr r0, _02228D04 ; =0x02251E90 - mov r1, #1 - str r1, [r0, #0xc] - ldrb r0, [r4] - strb r0, [r5] - ldrb r0, [r4, #1] - strb r0, [r5, #1] - ldrb r0, [r4, #2] - strb r0, [r5, #2] - ldrb r0, [r4, #3] - strb r0, [r5, #3] - ldrb r0, [r4, #4] - strb r0, [r5, #4] - b _02228CB2 -_02228C42: - ldr r0, _02228D04 ; =0x02251E90 - mov r1, #1 - str r1, [r0, #0xc] - add r0, r5, #0 - add r1, r4, #0 - mov r2, #0xa - bl ov18_02228ADC - b _02228CB2 -_02228C54: - ldr r0, _02228D04 ; =0x02251E90 - mov r1, #2 - str r1, [r0, #0xc] - add r3, r4, #0 - add r2, r5, #0 - mov r1, #0xd -_02228C60: - ldrb r0, [r3] - add r3, r3, #1 - strb r0, [r2] - add r2, r2, #1 - sub r1, r1, #1 - bne _02228C60 - b _02228CB2 -_02228C6E: - ldr r0, _02228D04 ; =0x02251E90 - mov r1, #2 - str r1, [r0, #0xc] - add r0, r5, #0 - add r1, r4, #0 - mov r2, #0x1a - bl ov18_02228ADC - b _02228CB2 -_02228C80: - ldr r0, _02228D04 ; =0x02251E90 - mov r1, #3 - str r1, [r0, #0xc] - add r3, r4, #0 - add r2, r5, #0 - mov r1, #0x10 -_02228C8C: - ldrb r0, [r3] - add r3, r3, #1 - strb r0, [r2] - add r2, r2, #1 - sub r1, r1, #1 - bne _02228C8C - b _02228CB2 -_02228C9A: - ldr r0, _02228D04 ; =0x02251E90 - mov r1, #3 - str r1, [r0, #0xc] - add r0, r5, #0 - add r1, r4, #0 - mov r2, #0x20 - bl ov18_02228ADC - b _02228CB2 -_02228CAC: - mov r0, #6 - mvn r0, r0 - str r0, [sp] -_02228CB2: - add r7, r7, #1 - add r6, #0x28 - add r5, #0x20 - cmp r7, #4 - blt _02228BE0 - b _02228CF0 -_02228CBE: - ldr r0, _02228D04 ; =0x02251E90 - mov r1, #4 - ldr r4, _02228D10 ; =0x02251F24 - ldr r3, _02228D14 ; =0x02252160 - str r1, [r0, #0xc] - mov r2, #8 -_02228CCA: - ldmia r3!, {r0, r1} - stmia r4!, {r0, r1} - sub r2, r2, #1 - bne _02228CCA - b _02228CF0 -_02228CD4: - ldr r0, _02228D04 ; =0x02251E90 - mov r1, #5 - ldr r4, _02228D10 ; =0x02251F24 - ldr r3, _02228D14 ; =0x02252160 - str r1, [r0, #0xc] - mov r2, #8 -_02228CE0: - ldmia r3!, {r0, r1} - stmia r4!, {r0, r1} - sub r2, r2, #1 - bne _02228CE0 - b _02228CF0 -_02228CEA: - mov r0, #6 - mvn r0, r0 - str r0, [sp] -_02228CF0: - ldr r0, [sp] - add sp, #0x28 - pop {r3, r4, r5, r6, r7, pc} - nop -_02228CF8: .word Unk_ov18_02251E7C -_02228CFC: .word 0x02252064 -_02228D00: .word 0x02252090 -_02228D04: .word 0x02251E90 -_02228D08: .word 0x022520C8 -_02228D0C: .word 0x02251EA4 -_02228D10: .word 0x02251F24 -_02228D14: .word 0x02252160 - thumb_func_end ov18_02228B90 - - thumb_func_start ov18_02228D18 -ov18_02228D18: ; 0x02228D18 - push {r4, r5, r6, r7, lr} - sub sp, #0x2c - mov r4, #0 - sub r0, r4, #5 - str r0, [sp, #8] - ldr r0, _02229060 ; =0x02251D10 - mov r1, #1 - str r4, [sp, #0xc] - str r4, [sp, #4] - add r6, r4, #0 - str r1, [r0, #0x1c] - b _022290CA -_02228D30: - mov r0, #0x7d - lsl r0, r0, #2 - bl OS_Sleep - ldr r0, _02229060 ; =0x02251D10 - ldr r0, [r0, #0x1c] - cmp r0, #0xa - bls _02228D42 - b _022290CA -_02228D42: - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02228D4E: ; jump table - .short _022290CA - _02228D4E - 2 ; case 0 - .short _02228D64 - _02228D4E - 2 ; case 1 - .short _02228D84 - _02228D4E - 2 ; case 2 - .short _02228D9A - _02228D4E - 2 ; case 3 - .short _02228DE8 - _02228D4E - 2 ; case 4 - .short _02228E50 - _02228D4E - 2 ; case 5 - .short _02228E74 - _02228D4E - 2 ; case 6 - .short _02228F1E - _02228D4E - 2 ; case 7 - .short _02228F7A - _02228D4E - 2 ; case 8 - .short _02229002 - _02228D4E - 2 ; case 9 - .short _022290A0 - _02228D4E - 2 ; case 10 -_02228D64: - bl ov18_0222810C - str r0, [sp, #8] - cmp r0, #1 - beq _02228D72 - mov r6, #1 - b _022290CA -_02228D72: - ldr r0, _02229060 ; =0x02251D10 - mov r1, #3 - str r1, [r0, #0x38] - bl ov18_0222AD18 - ldr r0, _02229060 ; =0x02251D10 - mov r1, #2 - str r1, [r0, #0x1c] - b _022290CA -_02228D84: - bl ov18_02227DB8 - str r0, [sp, #8] - cmp r0, #1 - beq _02228D92 - mov r6, #1 - b _022290CA -_02228D92: - ldr r0, _02229060 ; =0x02251D10 - mov r1, #3 - str r1, [r0, #0x1c] - b _022290CA -_02228D9A: - mov r0, #2 - add r1, r0, #0 - mov r2, #0 - bl SOC_Socket - add r4, r0, #0 - bpl _02228DB2 - mov r0, #1 - mvn r0, r0 - str r0, [sp, #8] - mov r6, #1 - b _022290CA -_02228DB2: - add r5, sp, #0x24 - mov r1, #0 - str r1, [r5, #0] - str r1, [r5, #4] - mov r3, #8 - add r2, sp, #0x10 - strb r3, [r2, #0x14] - mov r3, #2 - strb r3, [r2, #0x15] - ldr r3, _02229064 ; =0x000001E6 - strh r3, [r2, #0x16] - str r1, [sp, #0x28] - add r1, r5, #0 - bl SOC_Bind - str r0, [sp, #8] - cmp r0, #0 - bge _02228DE0 - mov r0, #1 - mvn r0, r0 - str r0, [sp, #8] - mov r6, #1 - b _022290CA -_02228DE0: - ldr r0, _02229060 ; =0x02251D10 - mov r1, #4 - str r1, [r0, #0x1c] - b _022290CA -_02228DE8: - bl ov18_0222AA98 - ldr r1, _02229068 ; =0x02249838 - ldr r1, [r1, #0xc] - cmp r0, r1 - blo _02228E04 - add r0, r4, #0 - bl SOC_Close - mov r0, #2 - mvn r0, r0 - str r0, [sp, #8] - mov r6, #1 - b _022290CA -_02228E04: - mov r1, #8 - add r0, sp, #0x10 - strb r1, [r0, #0xc] - ldr r0, _0222906C ; =0x022521D0 - add r1, sp, #0x1c - bl ov18_0222880C - add r0, sp, #0x1c - mov r2, #2 - str r0, [sp] - ldr r1, _02229070 ; =0x02252A44 - add r0, r4, #0 - lsl r2, r2, #0xa - mov r3, #4 - bl SOC_RecvFrom - cmp r0, #0 - ble _02228F02 - ldr r0, _02229070 ; =0x02252A44 - ldr r1, _02229074 ; =0x02251D60 - bl ov18_02228640 - cmp r0, #0 - beq _02228F02 - bl ov18_0222AA98 - ldr r1, _02229078 ; =0x00007530 - add r1, r0, r1 - ldr r0, _02229068 ; =0x02249838 - str r1, [r0, #0xc] - ldr r0, _02229060 ; =0x02251D10 - mov r1, #5 - str r1, [r0, #0x1c] - mov r1, #4 - str r1, [r0, #0x38] - bl ov18_0222AD18 - b _022290CA -_02228E50: - ldr r0, _02229070 ; =0x02252A44 - bl ov18_02228764 - add r3, r0, #0 - ldr r0, _02229060 ; =0x02251D10 - ldr r2, _02229070 ; =0x02252A44 - str r3, [r0, #0x14] - add r0, r4, #0 - add r1, sp, #0x1c - bl ov18_022283F4 - bl ov18_0222AA98 - str r0, [sp, #0xc] - ldr r0, _02229060 ; =0x02251D10 - mov r1, #6 - str r1, [r0, #0x1c] - b _022290CA -_02228E74: - bl ov18_0222AA98 - ldr r1, _02229068 ; =0x02249838 - ldr r1, [r1, #0xc] - cmp r0, r1 - blo _02228E90 - add r0, r4, #0 - bl SOC_Close - mov r0, #3 - mvn r0, r0 - str r0, [sp, #8] - mov r6, #1 - b _022290CA -_02228E90: - add r0, sp, #0x1c - mov r2, #2 - str r0, [sp] - ldr r1, _02229070 ; =0x02252A44 - add r0, r4, #0 - lsl r2, r2, #0xa - mov r3, #4 - bl SOC_RecvFrom - cmp r0, #0 - ble _02228F04 - ldr r0, _02229070 ; =0x02252A44 - ldr r2, _0222907C ; =0x02252244 - ldr r3, _0222906C ; =0x022521D0 - mov r1, #3 - bl ov18_02228714 - cmp r0, #0 - beq _02228F04 - ldr r0, _0222907C ; =0x02252244 - add r1, sp, #0x18 - add r2, sp, #0x14 - bl ov18_022284C0 - add r5, r0, #0 - ldr r1, [sp, #0x18] - ldr r0, _02229080 ; =0x00000101 - cmp r1, r0 - bne _02228F02 - bl ov18_0222AA98 - ldr r2, _02229084 ; =0x022521E0 - str r0, [sp, #0x10] - mov r1, #8 -_02228ED4: - ldrb r0, [r5] - add r5, r5, #1 - strb r0, [r2] - add r2, r2, #1 - sub r1, r1, #1 - bne _02228ED4 - ldr r0, _02229088 ; =0x022521E8 - add r1, sp, #0x10 - mov r2, #4 - bl ov18_0222AA70 - mov r0, #0 - str r0, [sp, #4] - ldr r0, _02229060 ; =0x02251D10 - mov r1, #7 - str r1, [r0, #0x1c] - mov r1, #5 - str r1, [r0, #0x38] - ldr r0, _02229068 ; =0x02249838 - sub r1, r1, #6 - str r1, [r0, #0xc] - bl ov18_0222AD18 -_02228F02: - b _022290CA -_02228F04: - bl ov18_0222AA98 - mov r2, #0xfa - ldr r1, [sp, #0xc] - lsl r2, r2, #2 - add r1, r1, r2 - cmp r0, r1 - bhs _02228F16 - b _022290CA -_02228F16: - ldr r0, _02229060 ; =0x02251D10 - mov r1, #5 - str r1, [r0, #0x1c] - b _022290CA -_02228F1E: - ldr r0, _0222907C ; =0x02252244 - ldr r1, _0222908C ; =0x00000102 - ldr r2, _02229088 ; =0x022521E8 - mov r3, #8 - bl ov18_02228618 - ldr r3, _02229060 ; =0x02251D10 - ldr r2, _0222907C ; =0x02252244 - str r0, [r3, #0x34] - ldr r0, _0222906C ; =0x022521D0 - mov r1, #4 - str r0, [sp] - ldr r0, _02229070 ; =0x02252A44 - ldr r3, [r3, #0x34] - bl ov18_022284F4 - add r3, r0, #0 - ldr r0, _02229060 ; =0x02251D10 - ldr r2, _02229070 ; =0x02252A44 - str r3, [r0, #0x14] - add r0, r4, #0 - add r1, sp, #0x1c - bl ov18_022283F4 - bl ov18_0222AA98 - str r0, [sp, #0xc] - mov r0, #0 - mov r5, #0x12 - ldr r7, _02229090 ; =0x02251F64 - add r1, r0, #0 - add r2, r0, #0 - add r3, r0, #0 - mov ip, r5 -_02228F62: - stmia r7!, {r0, r1, r2, r3} - mov r5, ip - sub r5, r5, #1 - stmia r7!, {r0, r1, r2, r3} - mov ip, r5 - bne _02228F62 - stmia r7!, {r0, r1, r2, r3} - str r0, [r7, #0] - ldr r0, _02229060 ; =0x02251D10 - mov r1, #8 - str r1, [r0, #0x1c] - b _022290CA -_02228F7A: - add r0, sp, #0x1c - mov r2, #2 - str r0, [sp] - ldr r1, _02229070 ; =0x02252A44 - add r0, r4, #0 - lsl r2, r2, #0xa - mov r3, #4 - bl SOC_RecvFrom - cmp r0, #0 - ble _02228FD0 - ldr r0, _02229070 ; =0x02252A44 - ldr r2, _0222907C ; =0x02252244 - ldr r3, _02229084 ; =0x022521E0 - mov r1, #5 - bl ov18_02228714 - ldr r1, _02229060 ; =0x02251D10 - cmp r0, #0 - str r0, [r1, #0x34] - beq _02228FD0 - ldr r0, _0222907C ; =0x02252244 - bl ov18_02228908 - cmp r0, #0 - beq _02228FD0 - ldr r1, _02229094 ; =0x02252050 - mov r0, #0x14 - ldrsb r0, [r1, r0] - cmp r0, #0 - beq _02228FBE - mov r1, #1 - ldr r0, _02229060 ; =0x02251D10 - b _02228FC2 -_02228FBE: - ldr r0, _02229060 ; =0x02251D10 - mov r1, #0 -_02228FC2: - strb r1, [r0] - mov r0, #0 - str r0, [sp, #4] - ldr r0, _02229060 ; =0x02251D10 - mov r1, #9 - str r1, [r0, #0x1c] - b _022290CA -_02228FD0: - bl ov18_0222AA98 - mov r2, #0xfa - ldr r1, [sp, #0xc] - lsl r2, r2, #2 - add r1, r1, r2 - cmp r0, r1 - blo _022290CA - ldr r0, [sp, #4] - add r0, r0, #1 - str r0, [sp, #4] - cmp r0, #0xa - blt _02228FFA - add r0, r4, #0 - bl SOC_Close - mov r0, #1 - mvn r0, r0 - str r0, [sp, #8] - mov r6, #1 - b _022290CA -_02228FFA: - ldr r0, _02229060 ; =0x02251D10 - mov r1, #7 - str r1, [r0, #0x1c] - b _022290CA -_02229002: - ldr r0, _0222907C ; =0x02252244 - ldr r1, _02229098 ; =0x00000301 - ldr r2, _0222909C ; =0x02251D10 - mov r3, #1 - bl ov18_02228618 - ldr r3, _02229060 ; =0x02251D10 - ldr r2, _0222907C ; =0x02252244 - str r0, [r3, #0x34] - ldr r0, _02229084 ; =0x022521E0 - mov r1, #6 - str r0, [sp] - ldr r0, _02229070 ; =0x02252A44 - ldr r3, [r3, #0x34] - bl ov18_022284F4 - ldr r1, _02229060 ; =0x02251D10 - str r0, [r1, #0x14] - bl ov18_02227BBC - cmp r0, #7 - beq _02229044 - bl ov18_0222AA98 - mov r1, #0xfa - lsl r1, r1, #2 - add r0, r0, r1 - str r0, [sp, #0xc] - mov r0, #0xa - ldr r1, _02229060 ; =0x02251D10 - str r0, [sp, #4] - str r0, [r1, #0x1c] - b _022290CA -_02229044: - ldr r3, _02229060 ; =0x02251D10 - ldr r2, _02229070 ; =0x02252A44 - ldr r3, [r3, #0x14] - add r0, r4, #0 - add r1, sp, #0x1c - bl ov18_022283F4 - bl ov18_0222AA98 - str r0, [sp, #0xc] - ldr r0, _02229060 ; =0x02251D10 - mov r1, #0xa - str r1, [r0, #0x1c] - b _022290CA - ; .align 2, 0 -_02229060: .word Unk_ov18_02251D10 -_02229064: .word 0x000001E6 -_02229068: .word Unk_ov18_02249838 -_0222906C: .word Unk_ov18_022521D0 -_02229070: .word Unk_ov18_02252A44 -_02229074: .word 0x02251D60 -_02229078: .word 0x00007530 -_0222907C: .word Unk_ov18_02252244 -_02229080: .word 0x00000101 -_02229084: .word Unk_ov18_022521E0 -_02229088: .word 0x022521E8 -_0222908C: .word 0x00000102 -_02229090: .word Unk_ov18_02251F64 -_02229094: .word 0x02252050 -_02229098: .word 0x00000301 -_0222909C: .word Unk_ov18_02251D10 -_022290A0: - bl ov18_0222AA98 - mov r2, #0xfa - ldr r1, [sp, #0xc] - lsl r2, r2, #2 - add r1, r1, r2 - cmp r0, r1 - blo _022290CA - ldr r0, [sp, #4] - add r0, r0, #1 - str r0, [sp, #4] - cmp r0, #0xa - blt _022290C4 - mov r6, #1 - bl ov18_02228B90 - str r0, [sp, #8] - b _022290CA -_022290C4: - ldr r0, _022290F8 ; =0x02251D10 - mov r1, #9 - str r1, [r0, #0x1c] -_022290CA: - cmp r6, #0 - bne _022290D8 - ldr r0, _022290F8 ; =0x02251D10 - ldr r0, [r0, #0x10] - cmp r0, #0 - bne _022290D8 - b _02228D30 -_022290D8: - cmp r4, #0 - beq _022290E2 - add r0, r4, #0 - bl SOC_Close -_022290E2: - ldr r0, _022290F8 ; =0x02251D10 - ldr r0, [r0, #0x10] - cmp r0, #0 - beq _022290F0 - mov r0, #7 - mvn r0, r0 - str r0, [sp, #8] -_022290F0: - ldr r0, [sp, #8] - add sp, #0x2c - pop {r4, r5, r6, r7, pc} - nop -_022290F8: .word Unk_ov18_02251D10 - thumb_func_end ov18_02228D18 - - thumb_func_start ov18_022290FC -ov18_022290FC: ; 0x022290FC - push {r4, lr} - bl ov18_02228D18 - add r4, r0, #0 - ldr r0, _0222912C ; =0x02251D10 - str r4, [r0, #0x78] - bl ov18_02227EDC - cmp r4, #1 - bne _02229116 - mov r1, #6 - ldr r0, _0222912C ; =0x02251D10 - b _0222911A -_02229116: - ldr r0, _0222912C ; =0x02251D10 - mov r1, #7 -_0222911A: - str r1, [r0, #0x38] - mov r1, #0 - ldr r0, _02229130 ; =0x02249838 - mvn r1, r1 - str r1, [r0, #0xc] - bl ov18_0222AD18 - pop {r4, pc} - nop -_0222912C: .word Unk_ov18_02251D10 -_02229130: .word Unk_ov18_02249838 - thumb_func_end ov18_022290FC - - thumb_func_start ov18_02229134 -ov18_02229134: ; 0x02229134 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x1a8 - str r0, [sp] - ldr r0, _022292E8 ; =0xA6A6A6A6 - add r4, r2, #0 - add r5, r1, #0 - str r0, [sp, #0x48] - str r0, [sp, #0x4c] - mov r0, #7 - add r1, r4, #0 - tst r1, r0 - bne _02229152 - ldr r2, [sp, #0x1c0] - tst r0, r2 - beq _02229158 -_02229152: - add sp, #0x1a8 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_02229158: - lsr r0, r4, #3 - str r0, [sp, #0x14] - cmp r0, #2 - bge _02229166 - add sp, #0x1a8 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_02229166: - add r0, sp, #0x68 - add r1, r3, #0 - lsl r2, r2, #3 - bl ov18_022294EC - str r0, [sp, #0x1c] - ldr r0, [sp] - add r1, r5, #0 - add r0, #8 - add r2, r4, #0 - bl memcpy - add r3, sp, #0x58 - add r2, sp, #0x48 - mov r1, #8 -_02229184: - ldrb r0, [r2] - add r2, r2, #1 - strb r0, [r3] - add r3, r3, #1 - sub r1, r1, #1 - bne _02229184 - mov r0, #0 - str r0, [sp, #0x20] - ldr r0, [sp, #0x14] - asr r0, r0, #0x1f - str r0, [sp, #0x18] -_0222919A: - ldr r0, [sp, #0x14] - mov r4, #1 - cmp r0, #1 - bge _022291A4 - b _022292C0 -_022291A4: - ldr r2, [sp, #0x20] - ldr r1, [sp, #0x18] - asr r3, r2, #0x1f - bl _ull_mul - str r0, [sp, #0xc] - mov r0, #0 - str r1, [sp, #8] - str r0, [sp, #0x28] - mov r0, #0 - mov r1, #0 - str r0, [sp, #0x30] - add r0, r1, #0 - orr r0, r1 - str r0, [sp, #0x40] -_022291C2: - ldr r0, [sp] - lsl r1, r4, #3 - add r5, r0, r1 - add r3, r5, #0 - add r2, sp, #0x60 - mov r1, #8 -_022291CE: - ldrb r0, [r3] - add r3, r3, #1 - strb r0, [r2] - add r2, r2, #1 - sub r1, r1, #1 - bne _022291CE - add r2, sp, #0x58 - ldr r1, [sp, #0x1c] - add r0, sp, #0x68 - add r3, r2, #0 - bl ov18_02229934 - ldr r0, [sp, #0xc] - asr r1, r4, #0x1f - add r3, r4, r0 - ldr r0, [sp, #8] - adc r1, r0 - mov r0, #0xff - lsl r0, r0, #0x18 - and r0, r1 - lsr r0, r0, #0x18 - str r0, [sp, #0x24] - mov r0, #0xff - lsl r0, r0, #0x10 - and r0, r1 - lsr r0, r0, #8 - str r0, [sp, #0x2c] - mov r0, #0xff - lsl r0, r0, #8 - mov r2, #0 - and r0, r1 - and r2, r3 - lsl r6, r0, #8 - lsr r2, r2, #0x18 - str r2, [sp, #0x34] - orr r2, r6 - lsr r0, r0, #0x18 - str r2, [sp, #0x34] - str r0, [sp, #0x38] - mov r0, #0xff - mov r2, #0 - and r0, r1 - and r2, r3 - lsl r6, r0, #0x18 - lsr r2, r2, #8 - str r2, [sp, #0x44] - orr r2, r6 - lsr r0, r0, #8 - str r2, [sp, #0x44] - str r0, [sp, #0x3c] - mov r0, #0 - add r2, r1, #0 - and r2, r0 - mov r0, #0xff - lsl r0, r0, #0x18 - and r0, r3 - lsr r6, r0, #0x18 - lsl r0, r0, #8 - mov ip, r0 - mov r0, #0 - and r1, r0 - mov r0, #0xff - lsl r0, r0, #0x10 - lsl r2, r2, #8 - and r0, r3 - orr r2, r6 - lsr r6, r0, #8 - lsl r7, r0, #0x18 - mov r0, #0xff - lsl r1, r1, #0x18 - and r0, r3 - orr r1, r6 - lsl r6, r0, #0x18 - mov r0, #0xff - lsl r0, r0, #8 - and r0, r3 - lsl r0, r0, #8 - orr r0, r6 - orr r1, r0 - ldr r0, [sp, #0x40] - add r3, r7, #0 - orr r3, r0 - mov r0, ip - orr r1, r2 - add r2, r0, #0 - ldr r0, [sp, #0x3c] - orr r2, r3 - orr r1, r0 - ldr r0, [sp, #0x44] - orr r2, r0 - ldr r0, [sp, #0x38] - orr r1, r0 - ldr r0, [sp, #0x34] - orr r2, r0 - ldr r0, [sp, #0x30] - orr r1, r0 - ldr r0, [sp, #0x2c] - orr r2, r0 - ldr r0, [sp, #0x28] - orr r1, r0 - ldr r0, [sp, #0x24] - str r1, [sp, #0x54] - orr r0, r2 - str r0, [sp, #0x50] - add r0, sp, #0x58 - add r1, sp, #0x50 - add r2, r0, #0 - bl ov18_022294A4 - add r2, sp, #0x60 - mov r1, #8 -_022292AC: - ldrb r0, [r2] - add r2, r2, #1 - strb r0, [r5] - add r5, r5, #1 - sub r1, r1, #1 - bne _022292AC - ldr r0, [sp, #0x14] - add r4, r4, #1 - cmp r4, r0 - ble _022291C2 -_022292C0: - ldr r0, [sp, #0x20] - add r0, r0, #1 - str r0, [sp, #0x20] - cmp r0, #6 - bge _022292CC - b _0222919A -_022292CC: - add r3, sp, #0x58 - mov r2, #8 -_022292D0: - ldrb r1, [r3] - ldr r0, [sp] - add r3, r3, #1 - strb r1, [r0] - add r0, r0, #1 - str r0, [sp] - sub r2, r2, #1 - bne _022292D0 - mov r0, #1 - add sp, #0x1a8 - pop {r3, r4, r5, r6, r7, pc} - nop -_022292E8: .word 0xA6A6A6A6 - thumb_func_end ov18_02229134 - - thumb_func_start ov18_022292EC -ov18_022292EC: ; 0x022292EC - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x1a8 - str r0, [sp] - mov r0, #1 - str r0, [sp, #0x1c] - ldr r0, _022294A0 ; =0xA6A6A6A6 - add r4, r2, #0 - add r5, r1, #0 - str r0, [sp, #0x48] - str r0, [sp, #0x4c] - mov r0, #7 - add r1, r4, #0 - tst r1, r0 - bne _0222930E - ldr r2, [sp, #0x1c0] - tst r0, r2 - beq _02229314 -_0222930E: - add sp, #0x1a8 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_02229314: - sub r0, r4, #1 - lsr r0, r0, #3 - str r0, [sp, #0x14] - cmp r0, #2 - bge _02229324 - add sp, #0x1a8 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_02229324: - add r0, sp, #0x68 - add r1, r3, #0 - lsl r2, r2, #3 - bl ov18_022297A4 - str r0, [sp, #0x20] - add r3, sp, #0x58 - add r2, r5, #0 - mov r1, #8 -_02229336: - ldrb r0, [r2] - add r2, r2, #1 - strb r0, [r3] - add r3, r3, #1 - sub r1, r1, #1 - bne _02229336 - add r5, #8 - ldr r0, [sp] - add r1, r5, #0 - sub r2, r4, #1 - bl memcpy - mov r0, #5 - str r0, [sp, #0x24] - ldr r0, [sp, #0x14] - asr r0, r0, #0x1f - str r0, [sp, #0x18] -_02229358: - ldr r4, [sp, #0x14] - add r0, r4, #0 - cmp r0, #0 - bgt _02229362 - b _0222947C -_02229362: - ldr r2, [sp, #0x24] - ldr r1, [sp, #0x18] - asr r3, r2, #0x1f - bl _ull_mul - str r0, [sp, #0xc] - mov r0, #0 - str r1, [sp, #8] - str r0, [sp, #0x2c] - mov r0, #0 - mov r1, #0 - str r0, [sp, #0x34] - add r0, r1, #0 - orr r0, r1 - str r0, [sp, #0x40] -_02229380: - ldr r0, [sp, #0xc] - asr r1, r4, #0x1f - add r5, r4, r0 - ldr r0, [sp, #8] - adc r1, r0 - mov r0, #0xff - lsl r0, r0, #0x18 - and r0, r1 - lsr r0, r0, #0x18 - str r0, [sp, #0x28] - mov r0, #0xff - lsl r0, r0, #0x10 - and r0, r1 - lsr r0, r0, #8 - str r0, [sp, #0x30] - mov r0, #0xff - lsl r0, r0, #8 - add r2, r1, #0 - and r2, r0 - mov r0, #0 - add r3, r5, #0 - and r3, r0 - lsl r0, r2, #8 - lsr r3, r3, #0x18 - orr r3, r0 - lsr r0, r2, #0x18 - str r0, [sp, #0x38] - mov r0, #0xff - mov r2, #0 - and r0, r1 - and r2, r5 - lsl r6, r0, #0x18 - lsr r2, r2, #8 - str r2, [sp, #0x44] - orr r2, r6 - lsr r0, r0, #8 - str r2, [sp, #0x44] - str r0, [sp, #0x3c] - mov r0, #0 - add r2, r1, #0 - and r2, r0 - mov r0, #0xff - lsl r0, r0, #0x18 - and r0, r5 - lsr r6, r0, #0x18 - lsl r0, r0, #8 - mov ip, r0 - mov r0, #0 - and r1, r0 - mov r0, #0xff - lsl r0, r0, #0x10 - lsl r2, r2, #8 - and r0, r5 - orr r2, r6 - lsr r6, r0, #8 - lsl r7, r0, #0x18 - mov r0, #0xff - lsl r1, r1, #0x18 - and r0, r5 - orr r1, r6 - lsl r6, r0, #0x18 - mov r0, #0xff - lsl r0, r0, #8 - and r0, r5 - lsl r0, r0, #8 - orr r0, r6 - orr r1, r0 - ldr r0, [sp, #0x40] - add r5, r7, #0 - orr r5, r0 - mov r0, ip - orr r1, r2 - add r2, r0, #0 - ldr r0, [sp, #0x3c] - orr r2, r5 - orr r1, r0 - ldr r0, [sp, #0x44] - orr r2, r0 - ldr r0, [sp, #0x38] - orr r2, r3 - orr r1, r0 - ldr r0, [sp, #0x34] - orr r1, r0 - ldr r0, [sp, #0x30] - orr r2, r0 - ldr r0, [sp, #0x2c] - orr r1, r0 - ldr r0, [sp, #0x28] - str r1, [sp, #0x54] - orr r0, r2 - str r0, [sp, #0x50] - add r0, sp, #0x58 - add r1, sp, #0x50 - add r2, r0, #0 - bl ov18_022294A4 - sub r0, r4, #1 - lsl r1, r0, #3 - ldr r0, [sp] - add r2, sp, #0x60 - add r5, r0, r1 - add r3, r5, #0 - mov r1, #8 -_0222944E: - ldrb r0, [r3] - add r3, r3, #1 - strb r0, [r2] - add r2, r2, #1 - sub r1, r1, #1 - bne _0222944E - add r2, sp, #0x58 - ldr r1, [sp, #0x20] - add r0, sp, #0x68 - add r3, r2, #0 - bl ov18_02229CF0 - add r2, sp, #0x60 - mov r1, #8 -_0222946A: - ldrb r0, [r2] - add r2, r2, #1 - strb r0, [r5] - add r5, r5, #1 - sub r1, r1, #1 - bne _0222946A - sub r4, r4, #1 - cmp r4, #0 - bgt _02229380 -_0222947C: - ldr r0, [sp, #0x24] - sub r0, r0, #1 - str r0, [sp, #0x24] - bmi _02229486 - b _02229358 -_02229486: - add r0, sp, #0x48 - add r1, sp, #0x58 - mov r2, #8 - bl memcmp - cmp r0, #0 - beq _02229498 - mov r0, #0 - str r0, [sp, #0x1c] -_02229498: - ldr r0, [sp, #0x1c] - add sp, #0x1a8 - pop {r3, r4, r5, r6, r7, pc} - nop -_022294A0: .word 0xA6A6A6A6 - thumb_func_end ov18_022292EC - - thumb_func_start ov18_022294A4 -ov18_022294A4: ; 0x022294A4 - push {r3, r4} - ldrb r4, [r0] - ldrb r3, [r1] - eor r3, r4 - strb r3, [r2] - ldrb r4, [r0, #1] - ldrb r3, [r1, #1] - eor r3, r4 - strb r3, [r2, #1] - ldrb r4, [r0, #2] - ldrb r3, [r1, #2] - eor r3, r4 - strb r3, [r2, #2] - ldrb r4, [r0, #3] - ldrb r3, [r1, #3] - eor r3, r4 - strb r3, [r2, #3] - ldrb r4, [r0, #4] - ldrb r3, [r1, #4] - eor r3, r4 - strb r3, [r2, #4] - ldrb r4, [r0, #5] - ldrb r3, [r1, #5] - eor r3, r4 - strb r3, [r2, #5] - ldrb r4, [r0, #6] - ldrb r3, [r1, #6] - eor r3, r4 - strb r3, [r2, #6] - ldrb r3, [r0, #7] - ldrb r0, [r1, #7] - eor r0, r3 - strb r0, [r2, #7] - pop {r3, r4} - bx lr - ; .align 2, 0 - thumb_func_end ov18_022294A4 - - thumb_func_start ov18_022294EC -ov18_022294EC: ; 0x022294EC - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x18 - add r3, r1, #0 - add r1, r2, #0 - mov r2, #0 - str r2, [sp] - ldrb r2, [r3, #2] - ldrb r6, [r3, #1] - ldrb r5, [r3, #3] - lsl r4, r2, #8 - ldrb r2, [r3] - lsl r6, r6, #0x10 - lsl r2, r2, #0x18 - eor r2, r6 - eor r2, r4 - eor r2, r5 - str r2, [r0, #0] - ldrb r2, [r3, #6] - ldrb r6, [r3, #5] - ldrb r5, [r3, #7] - lsl r4, r2, #8 - ldrb r2, [r3, #4] - lsl r6, r6, #0x10 - lsl r2, r2, #0x18 - eor r2, r6 - eor r2, r4 - eor r2, r5 - str r2, [r0, #4] - ldrb r2, [r3, #0xa] - ldrb r6, [r3, #9] - ldrb r5, [r3, #0xb] - lsl r4, r2, #8 - ldrb r2, [r3, #8] - lsl r6, r6, #0x10 - lsl r2, r2, #0x18 - eor r2, r6 - eor r2, r4 - eor r2, r5 - str r2, [r0, #8] - ldrb r2, [r3, #0xe] - ldrb r6, [r3, #0xd] - ldrb r5, [r3, #0xf] - lsl r4, r2, #8 - ldrb r2, [r3, #0xc] - lsl r6, r6, #0x10 - lsl r2, r2, #0x18 - eor r2, r6 - eor r2, r4 - eor r2, r5 - str r2, [r0, #0xc] - cmp r1, #0x80 - bne _022295D0 - ldr r5, _0222979C ; =0x02246464 - ldr r2, _022297A0 ; =0x0224808C -_02229558: - ldr r4, [r0, #0xc] - ldr r3, [r5, #0] - lsr r1, r4, #0x18 - lsl r1, r1, #2 - ldr r1, [r2, r1] - add r5, r5, #4 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - str r1, [sp, #8] - lsl r1, r4, #0x18 - lsr r1, r1, #0x16 - ldr r6, [r2, r1] - mov r1, #0xff - lsl r1, r1, #8 - add r7, r6, #0 - and r7, r1 - ldr r1, [r0, #0] - str r1, [sp, #4] - lsr r1, r4, #0x10 - lsl r1, r1, #0x18 - lsr r1, r1, #0x16 - ldr r6, [r2, r1] - mov r1, #0xff - lsl r1, r1, #0x18 - lsr r4, r4, #8 - and r6, r1 - ldr r1, [sp, #4] - lsl r4, r4, #0x18 - lsr r4, r4, #0x16 - eor r1, r6 - ldr r6, [r2, r4] - mov r4, #0xff - lsl r4, r4, #0x10 - and r4, r6 - eor r1, r4 - add r4, r7, #0 - eor r4, r1 - ldr r1, [sp, #8] - eor r1, r4 - eor r3, r1 - str r3, [r0, #0x10] - ldr r1, [r0, #4] - eor r3, r1 - str r3, [r0, #0x14] - ldr r1, [r0, #8] - eor r3, r1 - str r3, [r0, #0x18] - ldr r1, [r0, #0xc] - eor r1, r3 - str r1, [r0, #0x1c] - ldr r1, [sp] - add r1, r1, #1 - str r1, [sp] - cmp r1, #0xa - blt _022295CC - add sp, #0x18 - mov r0, #0xa - pop {r3, r4, r5, r6, r7, pc} -_022295CC: - add r0, #0x10 - b _02229558 -_022295D0: - ldrb r2, [r3, #0x12] - ldrb r6, [r3, #0x11] - ldrb r5, [r3, #0x13] - lsl r4, r2, #8 - ldrb r2, [r3, #0x10] - lsl r6, r6, #0x10 - lsl r2, r2, #0x18 - eor r2, r6 - eor r2, r4 - eor r2, r5 - str r2, [r0, #0x10] - ldrb r2, [r3, #0x16] - ldrb r6, [r3, #0x15] - ldrb r5, [r3, #0x17] - lsl r4, r2, #8 - ldrb r2, [r3, #0x14] - lsl r6, r6, #0x10 - lsl r2, r2, #0x18 - eor r2, r6 - eor r2, r4 - eor r2, r5 - str r2, [r0, #0x14] - cmp r1, #0xc0 - bne _0222968C - ldr r5, _0222979C ; =0x02246464 - ldr r3, _022297A0 ; =0x0224808C -_02229604: - ldr r4, [r0, #0x14] - ldr r6, [r5, #0] - lsr r1, r4, #0x18 - lsl r1, r1, #2 - ldr r1, [r3, r1] - add r5, r5, #4 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - str r1, [sp, #0xc] - lsl r1, r4, #0x18 - lsr r1, r1, #0x16 - ldr r2, [r3, r1] - mov r1, #0xff - lsl r1, r1, #8 - add r7, r2, #0 - and r7, r1 - ldr r1, [r0, #0] - mov lr, r1 - lsr r1, r4, #0x10 - lsl r1, r1, #0x18 - lsr r1, r1, #0x16 - ldr r2, [r3, r1] - mov r1, #0xff - lsl r1, r1, #0x18 - and r1, r2 - mov r2, lr - eor r1, r2 - lsr r2, r4, #8 - lsl r2, r2, #0x18 - lsr r2, r2, #0x16 - ldr r4, [r3, r2] - mov r2, #0xff - lsl r2, r2, #0x10 - and r2, r4 - eor r1, r2 - add r2, r7, #0 - eor r2, r1 - ldr r1, [sp, #0xc] - eor r1, r2 - add r2, r6, #0 - eor r2, r1 - str r2, [r0, #0x18] - ldr r1, [r0, #4] - eor r2, r1 - str r2, [r0, #0x1c] - ldr r1, [r0, #8] - eor r2, r1 - str r2, [r0, #0x20] - ldr r1, [r0, #0xc] - eor r1, r2 - str r1, [r0, #0x24] - ldr r1, [sp] - add r1, r1, #1 - str r1, [sp] - cmp r1, #8 - blt _0222967A - add sp, #0x18 - mov r0, #0xc - pop {r3, r4, r5, r6, r7, pc} -_0222967A: - ldr r2, [r0, #0x10] - ldr r1, [r0, #0x24] - eor r2, r1 - str r2, [r0, #0x28] - ldr r1, [r0, #0x14] - eor r1, r2 - str r1, [r0, #0x2c] - add r0, #0x18 - b _02229604 -_0222968C: - ldrb r2, [r3, #0x1a] - ldrb r6, [r3, #0x19] - ldrb r5, [r3, #0x1b] - lsl r4, r2, #8 - ldrb r2, [r3, #0x18] - lsl r6, r6, #0x10 - lsl r2, r2, #0x18 - eor r2, r6 - eor r2, r4 - eor r2, r5 - str r2, [r0, #0x18] - ldrb r2, [r3, #0x1e] - ldrb r5, [r3, #0x1f] - lsl r4, r2, #8 - ldrb r2, [r3, #0x1c] - ldrb r3, [r3, #0x1d] - lsl r2, r2, #0x18 - lsl r3, r3, #0x10 - eor r2, r3 - eor r2, r4 - eor r2, r5 - str r2, [r0, #0x1c] - mov r2, #1 - lsl r2, r2, #8 - cmp r1, r2 - bne _02229796 - ldr r5, _0222979C ; =0x02246464 - ldr r3, _022297A0 ; =0x0224808C -_022296C4: - ldr r4, [r0, #0x1c] - ldr r6, [r5, #0] - lsr r1, r4, #0x18 - lsl r1, r1, #2 - ldr r1, [r3, r1] - add r5, r5, #4 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - str r1, [sp, #0x10] - lsl r1, r4, #0x18 - lsr r1, r1, #0x16 - ldr r2, [r3, r1] - mov r1, #0xff - lsl r1, r1, #8 - add r7, r2, #0 - and r7, r1 - ldr r1, [r0, #0] - mov ip, r1 - lsr r1, r4, #0x10 - lsl r1, r1, #0x18 - lsr r1, r1, #0x16 - ldr r2, [r3, r1] - mov r1, #0xff - lsl r1, r1, #0x18 - and r1, r2 - mov r2, ip - eor r1, r2 - lsr r2, r4, #8 - lsl r2, r2, #0x18 - lsr r2, r2, #0x16 - ldr r4, [r3, r2] - mov r2, #0xff - lsl r2, r2, #0x10 - and r2, r4 - eor r1, r2 - add r2, r7, #0 - eor r2, r1 - ldr r1, [sp, #0x10] - eor r1, r2 - add r2, r6, #0 - eor r2, r1 - str r2, [r0, #0x20] - ldr r1, [r0, #4] - eor r2, r1 - str r2, [r0, #0x24] - ldr r1, [r0, #8] - eor r2, r1 - str r2, [r0, #0x28] - ldr r1, [r0, #0xc] - eor r1, r2 - str r1, [r0, #0x2c] - ldr r1, [sp] - add r1, r1, #1 - str r1, [sp] - cmp r1, #7 - blt _0222973A - add sp, #0x18 - mov r0, #0xe - pop {r3, r4, r5, r6, r7, pc} -_0222973A: - ldr r6, [r0, #0x2c] - ldr r7, [r0, #0x10] - lsl r1, r6, #0x18 - lsr r1, r1, #0x16 - ldr r1, [r3, r1] - lsl r1, r1, #0x18 - lsr r4, r1, #0x18 - lsr r1, r6, #8 - lsl r1, r1, #0x18 - lsr r1, r1, #0x16 - ldr r2, [r3, r1] - mov r1, #0xff - lsl r1, r1, #8 - and r1, r2 - str r1, [sp, #0x14] - lsr r1, r6, #0x18 - lsl r1, r1, #2 - ldr r2, [r3, r1] - mov r1, #0xff - lsl r1, r1, #0x18 - and r1, r2 - lsr r2, r6, #0x10 - lsl r2, r2, #0x18 - lsr r2, r2, #0x16 - ldr r6, [r3, r2] - mov r2, #0xff - lsl r2, r2, #0x10 - eor r1, r7 - and r2, r6 - eor r2, r1 - ldr r1, [sp, #0x14] - eor r1, r2 - add r2, r4, #0 - eor r2, r1 - str r2, [r0, #0x30] - ldr r1, [r0, #0x14] - eor r2, r1 - str r2, [r0, #0x34] - ldr r1, [r0, #0x18] - eor r2, r1 - str r2, [r0, #0x38] - ldr r1, [r0, #0x1c] - eor r1, r2 - str r1, [r0, #0x3c] - add r0, #0x20 - b _022296C4 -_02229796: - ldr r0, [sp] - add sp, #0x18 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_0222979C: .word Unk_ov18_02246464 -_022297A0: .word Unk_ov18_0224808C - thumb_func_end ov18_022294EC - - thumb_func_start ov18_022297A4 -ov18_022297A4: ; 0x022297A4 - push {r3, r4, r5, r6, r7, lr} - add r4, r0, #0 - bl ov18_022294EC - mov ip, r0 - mov r1, ip - lsl r6, r1, #2 - mov r0, #0 - cmp r6, #0 - ble _022297EA - lsl r2, r6, #2 - add r1, r4, #0 - add r2, r4, r2 -_022297BE: - ldr r5, [r1, #0] - ldr r3, [r2, #0] - add r0, r0, #4 - str r3, [r1, #0] - str r5, [r2, #0] - ldr r5, [r1, #4] - ldr r3, [r2, #4] - sub r6, r6, #4 - str r3, [r1, #4] - str r5, [r2, #4] - ldr r5, [r1, #8] - ldr r3, [r2, #8] - str r3, [r1, #8] - str r5, [r2, #8] - ldr r5, [r1, #0xc] - ldr r3, [r2, #0xc] - str r3, [r1, #0xc] - str r5, [r2, #0xc] - add r1, #0x10 - sub r2, #0x10 - cmp r0, r6 - blt _022297BE -_022297EA: - mov r0, #1 - str r0, [sp] - mov r0, ip - cmp r0, #1 - bgt _022297F6 - b _0222991A -_022297F6: - ldr r2, _02229920 ; =0x0224808C - ldr r7, _02229924 ; =0x0224688C -_022297FA: - add r4, #0x10 - ldr r3, [r4, #0] - lsl r0, r3, #0x18 - lsr r0, r0, #0x16 - ldr r0, [r2, r0] - lsl r0, r0, #0x18 - lsr r0, r0, #0x16 - ldr r1, [r7, r0] - lsr r0, r3, #8 - lsl r0, r0, #0x18 - lsr r0, r0, #0x16 - ldr r0, [r2, r0] - lsl r0, r0, #0x18 - lsr r5, r0, #0x16 - ldr r0, _02229928 ; =0x0224648C - ldr r6, [r0, r5] - lsr r0, r3, #0x18 - lsl r0, r0, #2 - lsr r3, r3, #0x10 - ldr r0, [r2, r0] - lsl r3, r3, #0x18 - lsr r3, r3, #0x16 - lsl r0, r0, #0x18 - ldr r3, [r2, r3] - lsr r5, r0, #0x16 - ldr r0, _0222992C ; =0x0224848C - lsl r3, r3, #0x18 - ldr r0, [r0, r5] - lsr r5, r3, #0x16 - ldr r3, _02229930 ; =0x0224888C - ldr r3, [r3, r5] - eor r0, r3 - eor r0, r6 - eor r0, r1 - str r0, [r4, #0] - ldr r3, [r4, #4] - lsl r0, r3, #0x18 - lsr r0, r0, #0x16 - ldr r0, [r2, r0] - lsl r0, r0, #0x18 - lsr r0, r0, #0x16 - ldr r1, [r7, r0] - lsr r0, r3, #8 - lsl r0, r0, #0x18 - lsr r0, r0, #0x16 - ldr r0, [r2, r0] - lsl r0, r0, #0x18 - lsr r5, r0, #0x16 - ldr r0, _02229928 ; =0x0224648C - ldr r6, [r0, r5] - lsr r0, r3, #0x18 - lsl r0, r0, #2 - lsr r3, r3, #0x10 - ldr r0, [r2, r0] - lsl r3, r3, #0x18 - lsr r3, r3, #0x16 - lsl r0, r0, #0x18 - ldr r3, [r2, r3] - lsr r5, r0, #0x16 - ldr r0, _0222992C ; =0x0224848C - lsl r3, r3, #0x18 - ldr r0, [r0, r5] - lsr r5, r3, #0x16 - ldr r3, _02229930 ; =0x0224888C - ldr r3, [r3, r5] - eor r0, r3 - eor r0, r6 - eor r0, r1 - str r0, [r4, #4] - ldr r3, [r4, #8] - lsl r0, r3, #0x18 - lsr r0, r0, #0x16 - ldr r0, [r2, r0] - lsl r0, r0, #0x18 - lsr r0, r0, #0x16 - ldr r1, [r7, r0] - lsr r0, r3, #8 - lsl r0, r0, #0x18 - lsr r0, r0, #0x16 - ldr r0, [r2, r0] - lsl r0, r0, #0x18 - lsr r5, r0, #0x16 - ldr r0, _02229928 ; =0x0224648C - ldr r6, [r0, r5] - lsr r0, r3, #0x18 - lsl r0, r0, #2 - lsr r3, r3, #0x10 - ldr r0, [r2, r0] - lsl r3, r3, #0x18 - lsr r3, r3, #0x16 - lsl r0, r0, #0x18 - ldr r3, [r2, r3] - lsr r5, r0, #0x16 - ldr r0, _0222992C ; =0x0224848C - lsl r3, r3, #0x18 - ldr r0, [r0, r5] - lsr r5, r3, #0x16 - ldr r3, _02229930 ; =0x0224888C - ldr r3, [r3, r5] - eor r0, r3 - eor r0, r6 - eor r0, r1 - str r0, [r4, #8] - ldr r3, [r4, #0xc] - lsl r0, r3, #0x18 - lsr r0, r0, #0x16 - ldr r0, [r2, r0] - lsl r0, r0, #0x18 - lsr r0, r0, #0x16 - ldr r1, [r7, r0] - lsr r0, r3, #8 - lsl r0, r0, #0x18 - lsr r0, r0, #0x16 - ldr r0, [r2, r0] - lsl r0, r0, #0x18 - lsr r5, r0, #0x16 - ldr r0, _02229928 ; =0x0224648C - ldr r6, [r0, r5] - lsr r0, r3, #0x18 - lsl r0, r0, #2 - lsr r3, r3, #0x10 - ldr r0, [r2, r0] - lsl r3, r3, #0x18 - lsr r3, r3, #0x16 - lsl r0, r0, #0x18 - ldr r3, [r2, r3] - lsr r5, r0, #0x16 - ldr r0, _0222992C ; =0x0224848C - lsl r3, r3, #0x18 - ldr r0, [r0, r5] - lsr r5, r3, #0x16 - ldr r3, _02229930 ; =0x0224888C - ldr r3, [r3, r5] - eor r0, r3 - eor r0, r6 - eor r0, r1 - str r0, [r4, #0xc] - ldr r0, [sp] - add r1, r0, #1 - mov r0, ip - str r1, [sp] - cmp r1, r0 - bge _0222991A - b _022297FA -_0222991A: - mov r0, ip - pop {r3, r4, r5, r6, r7, pc} - nop -_02229920: .word Unk_ov18_0224808C -_02229924: .word Unk_ov18_0224688C -_02229928: .word Unk_ov18_0224648C -_0222992C: .word Unk_ov18_0224848C -_02229930: .word Unk_ov18_0224888C - thumb_func_end ov18_022297A4 - - thumb_func_start ov18_02229934 -ov18_02229934: ; 0x02229934 - push {r4, r5, r6, r7, lr} - sub sp, #0x4c - add r7, r1, #0 - add r1, r2, #0 - ldrb r2, [r1, #2] - str r3, [sp] - ldrb r6, [r1, #1] - lsl r3, r2, #8 - ldrb r2, [r1] - ldrb r4, [r1, #3] - lsl r6, r6, #0x10 - lsl r2, r2, #0x18 - eor r2, r6 - eor r2, r3 - eor r2, r4 - ldr r5, [r0, #0] - ldrb r6, [r1, #5] - eor r2, r5 - str r2, [sp, #0xc] - ldrb r2, [r1, #6] - ldrb r4, [r1, #7] - lsl r6, r6, #0x10 - lsl r3, r2, #8 - ldrb r2, [r1, #4] - ldr r5, [r0, #4] - lsl r2, r2, #0x18 - eor r2, r6 - eor r2, r3 - eor r2, r4 - eor r2, r5 - str r2, [sp, #8] - ldrb r2, [r1, #0xa] - ldrb r6, [r1, #9] - ldrb r4, [r1, #0xb] - lsl r3, r2, #8 - ldrb r2, [r1, #8] - lsl r6, r6, #0x10 - ldr r5, [r0, #8] - lsl r2, r2, #0x18 - eor r2, r6 - eor r2, r3 - eor r2, r4 - eor r5, r2 - ldrb r2, [r1, #0xe] - ldrb r4, [r1, #0xf] - ldr r6, [r0, #0xc] - lsl r3, r2, #8 - ldrb r2, [r1, #0xc] - ldrb r1, [r1, #0xd] - lsl r2, r2, #0x18 - lsl r1, r1, #0x10 - eor r1, r2 - eor r1, r3 - eor r1, r4 - eor r6, r1 - asr r1, r7, #1 - str r1, [sp, #4] -_022299A6: - lsl r1, r6, #0x18 - lsr r2, r1, #0x16 - ldr r1, _02229CDC ; =0x02247C8C - ldr r4, [r0, #0x10] - ldr r3, [r1, r2] - lsr r1, r5, #8 - lsl r1, r1, #0x18 - lsr r2, r1, #0x16 - ldr r1, _02229CE0 ; =0x0224788C - ldr r1, [r1, r2] - str r1, [sp, #0x40] - ldr r1, [sp, #0xc] - lsr r1, r1, #0x18 - lsl r2, r1, #2 - ldr r1, _02229CE4 ; =0x0224708C - ldr r7, [r1, r2] - ldr r1, [sp, #8] - lsr r1, r1, #0x10 - lsl r1, r1, #0x18 - lsr r2, r1, #0x16 - ldr r1, _02229CE8 ; =0x0224748C - ldr r1, [r1, r2] - add r2, r7, #0 - eor r2, r1 - ldr r1, [sp, #0x40] - eor r1, r2 - eor r1, r3 - eor r1, r4 - str r1, [sp, #0x10] - ldr r1, [sp, #0xc] - ldr r4, [r0, #0x14] - lsl r1, r1, #0x18 - lsr r2, r1, #0x16 - ldr r1, _02229CDC ; =0x02247C8C - ldr r3, [r1, r2] - lsr r1, r6, #8 - lsl r1, r1, #0x18 - lsr r2, r1, #0x16 - ldr r1, _02229CE0 ; =0x0224788C - ldr r1, [r1, r2] - str r1, [sp, #0x48] - ldr r1, [sp, #8] - lsr r1, r1, #0x18 - lsl r2, r1, #2 - ldr r1, _02229CE4 ; =0x0224708C - ldr r7, [r1, r2] - lsr r1, r5, #0x10 - lsl r1, r1, #0x18 - lsr r2, r1, #0x16 - ldr r1, _02229CE8 ; =0x0224748C - ldr r1, [r1, r2] - add r2, r7, #0 - eor r2, r1 - ldr r1, [sp, #0x48] - eor r1, r2 - eor r1, r3 - eor r1, r4 - str r1, [sp, #0x44] - ldr r1, [sp, #8] - ldr r4, [r0, #0x18] - lsl r1, r1, #0x18 - lsr r2, r1, #0x16 - ldr r1, _02229CDC ; =0x02247C8C - ldr r3, [r1, r2] - ldr r1, [sp, #0xc] - lsr r1, r1, #8 - lsl r1, r1, #0x18 - lsr r2, r1, #0x16 - ldr r1, _02229CE0 ; =0x0224788C - ldr r1, [r1, r2] - str r1, [sp, #0x14] - lsr r1, r5, #0x18 - lsl r2, r1, #2 - ldr r1, _02229CE4 ; =0x0224708C - ldr r7, [r1, r2] - lsr r1, r6, #0x10 - lsl r1, r1, #0x18 - lsr r2, r1, #0x16 - ldr r1, _02229CE8 ; =0x0224748C - ldr r1, [r1, r2] - add r2, r7, #0 - eor r2, r1 - ldr r1, [sp, #0x14] - ldr r7, [r0, #0x1c] - eor r1, r2 - eor r1, r3 - add r2, r4, #0 - eor r2, r1 - lsl r1, r5, #0x18 - lsr r3, r1, #0x16 - ldr r1, _02229CDC ; =0x02247C8C - add r0, #0x20 - ldr r3, [r1, r3] - ldr r1, [sp, #8] - lsr r1, r1, #8 - lsl r1, r1, #0x18 - lsr r4, r1, #0x16 - ldr r1, _02229CE0 ; =0x0224788C - ldr r1, [r1, r4] - lsr r4, r6, #0x18 - lsl r5, r4, #2 - ldr r4, _02229CE4 ; =0x0224708C - ldr r6, [r4, r5] - ldr r4, [sp, #0xc] - lsr r4, r4, #0x10 - lsl r4, r4, #0x18 - lsr r5, r4, #0x16 - ldr r4, _02229CE8 ; =0x0224748C - ldr r4, [r4, r5] - eor r4, r6 - eor r1, r4 - eor r1, r3 - ldr r3, [sp, #4] - eor r1, r7 - sub r3, r3, #1 - str r3, [sp, #4] - beq _02229B70 - lsl r3, r1, #0x18 - lsr r5, r3, #0x16 - ldr r3, _02229CDC ; =0x02247C8C - ldr r4, [r0, #0] - ldr r3, [r3, r5] - lsr r5, r2, #8 - lsl r5, r5, #0x18 - lsr r6, r5, #0x16 - ldr r5, _02229CE0 ; =0x0224788C - ldr r7, [r5, r6] - ldr r5, [sp, #0x10] - lsr r5, r5, #0x18 - lsl r6, r5, #2 - ldr r5, _02229CE4 ; =0x0224708C - ldr r5, [r5, r6] - str r5, [sp, #0x18] - ldr r5, [sp, #0x44] - lsr r5, r5, #0x10 - lsl r5, r5, #0x18 - lsr r6, r5, #0x16 - ldr r5, _02229CE8 ; =0x0224748C - ldr r6, [r5, r6] - ldr r5, [sp, #0x18] - eor r5, r6 - eor r5, r7 - eor r3, r5 - eor r3, r4 - str r3, [sp, #0xc] - ldr r3, [sp, #0x10] - ldr r4, [r0, #4] - lsl r3, r3, #0x18 - lsr r5, r3, #0x16 - ldr r3, _02229CDC ; =0x02247C8C - ldr r3, [r3, r5] - lsr r5, r1, #8 - lsl r5, r5, #0x18 - lsr r6, r5, #0x16 - ldr r5, _02229CE0 ; =0x0224788C - ldr r7, [r5, r6] - ldr r5, [sp, #0x44] - lsr r5, r5, #0x18 - lsl r6, r5, #2 - ldr r5, _02229CE4 ; =0x0224708C - ldr r5, [r5, r6] - str r5, [sp, #0x1c] - lsr r5, r2, #0x10 - lsl r5, r5, #0x18 - lsr r6, r5, #0x16 - ldr r5, _02229CE8 ; =0x0224748C - ldr r6, [r5, r6] - ldr r5, [sp, #0x1c] - eor r5, r6 - eor r5, r7 - eor r3, r5 - eor r3, r4 - str r3, [sp, #8] - ldr r3, [sp, #0x44] - ldr r6, [r0, #8] - lsl r3, r3, #0x18 - lsr r4, r3, #0x16 - ldr r3, _02229CDC ; =0x02247C8C - ldr r5, [r3, r4] - ldr r3, [sp, #0x10] - lsr r3, r3, #8 - lsl r3, r3, #0x18 - lsr r4, r3, #0x16 - ldr r3, _02229CE0 ; =0x0224788C - ldr r3, [r3, r4] - str r3, [sp, #0x20] - lsr r3, r2, #0x18 - lsl r4, r3, #2 - ldr r3, _02229CE4 ; =0x0224708C - lsl r2, r2, #0x18 - ldr r7, [r3, r4] - lsr r3, r1, #0x10 - lsl r3, r3, #0x18 - lsr r4, r3, #0x16 - ldr r3, _02229CE8 ; =0x0224748C - lsr r1, r1, #0x18 - ldr r3, [r3, r4] - add r4, r7, #0 - eor r4, r3 - ldr r3, [sp, #0x20] - ldr r7, [r0, #0xc] - eor r3, r4 - eor r3, r5 - add r5, r6, #0 - eor r5, r3 - lsr r3, r2, #0x16 - ldr r2, _02229CDC ; =0x02247C8C - ldr r3, [r2, r3] - ldr r2, [sp, #0x44] - lsr r2, r2, #8 - lsl r2, r2, #0x18 - lsr r4, r2, #0x16 - ldr r2, _02229CE0 ; =0x0224788C - ldr r2, [r2, r4] - lsl r4, r1, #2 - ldr r1, _02229CE4 ; =0x0224708C - ldr r6, [r1, r4] - ldr r1, [sp, #0x10] - lsr r1, r1, #0x10 - lsl r1, r1, #0x18 - lsr r4, r1, #0x16 - ldr r1, _02229CE8 ; =0x0224748C - ldr r1, [r1, r4] - eor r1, r6 - eor r1, r2 - eor r1, r3 - add r6, r7, #0 - eor r6, r1 - b _022299A6 -_02229B70: - ldr r3, [r0, #0] - mov r6, #0xff - str r3, [sp, #0x24] - lsl r3, r1, #0x18 - lsr r4, r3, #0x16 - ldr r3, _02229CEC ; =0x0224808C - lsl r6, r6, #0x10 - ldr r4, [r3, r4] - lsl r4, r4, #0x18 - lsr r4, r4, #0x18 - str r4, [sp, #0x28] - lsr r4, r2, #8 - lsl r4, r4, #0x18 - lsr r4, r4, #0x16 - ldr r5, [r3, r4] - mov r4, #0xff - lsl r4, r4, #8 - and r4, r5 - str r4, [sp, #0x2c] - ldr r4, [sp, #0x10] - lsr r4, r4, #0x18 - lsl r4, r4, #2 - ldr r5, [r3, r4] - mov r4, #0xff - lsl r4, r4, #0x18 - and r5, r4 - ldr r4, [sp, #0x44] - lsr r4, r4, #0x10 - lsl r4, r4, #0x18 - lsr r4, r4, #0x16 - ldr r4, [r3, r4] - and r4, r6 - eor r5, r4 - ldr r4, [sp, #0x2c] - eor r5, r4 - ldr r4, [sp, #0x28] - eor r5, r4 - ldr r4, [sp, #0x24] - eor r4, r5 - ldr r5, [sp] - lsr r6, r4, #0x18 - strb r6, [r5] - lsr r6, r4, #0x10 - strb r6, [r5, #1] - lsr r6, r4, #8 - strb r6, [r5, #2] - strb r4, [r5, #3] - ldr r4, [r0, #4] - mov r6, #0xff - str r4, [sp, #0x30] - ldr r4, [sp, #0x10] - lsl r6, r6, #0x10 - lsl r4, r4, #0x18 - lsr r4, r4, #0x16 - ldr r4, [r3, r4] - lsl r4, r4, #0x18 - lsr r4, r4, #0x18 - str r4, [sp, #0x34] - lsr r4, r1, #8 - lsl r4, r4, #0x18 - lsr r4, r4, #0x16 - ldr r5, [r3, r4] - mov r4, #0xff - lsl r4, r4, #8 - and r4, r5 - str r4, [sp, #0x38] - ldr r4, [sp, #0x44] - lsr r4, r4, #0x18 - lsl r4, r4, #2 - ldr r5, [r3, r4] - mov r4, #0xff - lsl r4, r4, #0x18 - and r5, r4 - lsr r4, r2, #0x10 - lsl r4, r4, #0x18 - lsr r4, r4, #0x16 - ldr r4, [r3, r4] - and r4, r6 - eor r5, r4 - ldr r4, [sp, #0x38] - eor r5, r4 - ldr r4, [sp, #0x34] - eor r5, r4 - ldr r4, [sp, #0x30] - eor r4, r5 - ldr r5, [sp] - lsr r6, r4, #0x18 - strb r6, [r5, #4] - lsr r6, r4, #0x10 - strb r6, [r5, #5] - lsr r6, r4, #8 - strb r6, [r5, #6] - strb r4, [r5, #7] - ldr r4, [r0, #8] - str r4, [sp, #0x3c] - ldr r4, [sp, #0x44] - lsl r4, r4, #0x18 - lsr r4, r4, #0x16 - ldr r4, [r3, r4] - lsl r4, r4, #0x18 - lsr r4, r4, #0x18 - mov lr, r4 - ldr r4, [sp, #0x10] - lsr r4, r4, #8 - lsl r4, r4, #0x18 - lsr r4, r4, #0x16 - ldr r5, [r3, r4] - mov r4, #0xff - lsl r4, r4, #8 - and r4, r5 - mov ip, r4 - lsr r4, r2, #0x18 - lsl r4, r4, #2 - ldr r5, [r3, r4] - mov r4, #0xff - lsl r4, r4, #0x18 - add r6, r5, #0 - and r6, r4 - lsr r4, r1, #0x10 - lsl r4, r4, #0x18 - lsr r4, r4, #0x16 - ldr r5, [r3, r4] - mov r4, #0xff - lsl r4, r4, #0x10 - and r4, r5 - eor r4, r6 - mov r5, ip - eor r5, r4 - mov r4, lr - eor r5, r4 - ldr r4, [sp, #0x3c] - eor r4, r5 - ldr r5, [sp] - lsr r6, r4, #0x18 - strb r6, [r5, #8] - lsr r6, r4, #0x10 - strb r6, [r5, #9] - lsr r6, r4, #8 - strb r6, [r5, #0xa] - strb r4, [r5, #0xb] - ldr r5, [r0, #0xc] - lsl r0, r2, #0x18 - lsr r0, r0, #0x16 - ldr r0, [r3, r0] - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - ldr r0, [sp, #0x44] - lsr r0, r0, #8 - lsl r0, r0, #0x18 - lsr r0, r0, #0x16 - ldr r2, [r3, r0] - mov r0, #0xff - lsl r0, r0, #8 - and r2, r0 - lsr r0, r1, #0x18 - lsl r0, r0, #2 - ldr r1, [r3, r0] - mov r0, #0xff - lsl r0, r0, #0x18 - and r0, r1 - ldr r1, [sp, #0x10] - lsr r1, r1, #0x10 - lsl r1, r1, #0x18 - lsr r1, r1, #0x16 - ldr r3, [r3, r1] - mov r1, #0xff - lsl r1, r1, #0x10 - and r1, r3 - eor r0, r1 - eor r0, r2 - eor r0, r4 - eor r0, r5 - ldr r1, [sp] - lsr r2, r0, #0x18 - strb r2, [r1, #0xc] - lsr r2, r0, #0x10 - strb r2, [r1, #0xd] - lsr r2, r0, #8 - strb r2, [r1, #0xe] - strb r0, [r1, #0xf] - add sp, #0x4c - pop {r4, r5, r6, r7, pc} - ; .align 2, 0 -_02229CDC: .word Unk_ov18_02247C8C -_02229CE0: .word Unk_ov18_0224788C -_02229CE4: .word Unk_ov18_0224708C -_02229CE8: .word Unk_ov18_0224748C -_02229CEC: .word Unk_ov18_0224808C - thumb_func_end ov18_02229934 - - thumb_func_start ov18_02229CF0 -ov18_02229CF0: ; 0x02229CF0 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x48 - add r7, r1, #0 - add r1, r2, #0 - ldrb r2, [r1, #2] - str r3, [sp] - ldrb r6, [r1, #1] - lsl r3, r2, #8 - ldrb r2, [r1] - ldrb r4, [r1, #3] - lsl r6, r6, #0x10 - lsl r2, r2, #0x18 - eor r2, r6 - eor r2, r3 - eor r2, r4 - ldr r5, [r0, #0] - ldrb r6, [r1, #5] - eor r2, r5 - str r2, [sp, #0xc] - ldrb r2, [r1, #6] - ldrb r4, [r1, #7] - lsl r6, r6, #0x10 - lsl r3, r2, #8 - ldrb r2, [r1, #4] - ldr r5, [r0, #4] - lsl r2, r2, #0x18 - eor r2, r6 - eor r2, r3 - eor r2, r4 - eor r2, r5 - str r2, [sp, #8] - ldrb r2, [r1, #0xa] - ldrb r6, [r1, #9] - ldrb r4, [r1, #0xb] - lsl r3, r2, #8 - ldrb r2, [r1, #8] - lsl r6, r6, #0x10 - ldr r5, [r0, #8] - lsl r2, r2, #0x18 - eor r2, r6 - eor r2, r3 - eor r2, r4 - eor r2, r5 - str r2, [sp, #0x40] - ldrb r2, [r1, #0xe] - ldr r5, [r0, #0xc] - ldrb r4, [r1, #0xf] - lsl r3, r2, #8 - ldrb r2, [r1, #0xc] - ldrb r1, [r1, #0xd] - add r6, r5, #0 - lsl r2, r2, #0x18 - lsl r1, r1, #0x10 - eor r1, r2 - eor r1, r3 - eor r1, r4 - eor r6, r1 - asr r1, r7, #1 - str r1, [sp, #4] -_02229D66: - ldr r1, [sp, #8] - ldr r5, [r0, #0x10] - lsl r1, r1, #0x18 - lsr r2, r1, #0x16 - ldr r1, _0222A098 ; =0x0224688C - ldr r4, [r1, r2] - ldr r1, [sp, #0x40] - lsr r1, r1, #8 - lsl r1, r1, #0x18 - lsr r2, r1, #0x16 - ldr r1, _0222A09C ; =0x0224648C - ldr r3, [r1, r2] - ldr r1, [sp, #0xc] - lsr r1, r1, #0x18 - lsl r2, r1, #2 - ldr r1, _0222A0A0 ; =0x0224848C - ldr r7, [r1, r2] - lsr r1, r6, #0x10 - lsl r1, r1, #0x18 - lsr r2, r1, #0x16 - ldr r1, _0222A0A4 ; =0x0224888C - ldr r1, [r1, r2] - eor r1, r7 - eor r1, r3 - eor r1, r4 - eor r1, r5 - str r1, [sp, #0x10] - ldr r1, [sp, #0x40] - ldr r5, [r0, #0x14] - lsl r1, r1, #0x18 - lsr r2, r1, #0x16 - ldr r1, _0222A098 ; =0x0224688C - ldr r4, [r1, r2] - lsr r1, r6, #8 - lsl r1, r1, #0x18 - lsr r2, r1, #0x16 - ldr r1, _0222A09C ; =0x0224648C - ldr r3, [r1, r2] - ldr r1, [sp, #8] - lsr r1, r1, #0x18 - lsl r2, r1, #2 - ldr r1, _0222A0A0 ; =0x0224848C - ldr r7, [r1, r2] - ldr r1, [sp, #0xc] - lsr r1, r1, #0x10 - lsl r1, r1, #0x18 - lsr r2, r1, #0x16 - ldr r1, _0222A0A4 ; =0x0224888C - ldr r1, [r1, r2] - eor r1, r7 - eor r1, r3 - eor r1, r4 - eor r1, r5 - str r1, [sp, #0x44] - lsl r1, r6, #0x18 - lsr r2, r1, #0x16 - ldr r1, _0222A098 ; =0x0224688C - ldr r3, [r0, #0x18] - ldr r2, [r1, r2] - ldr r1, [sp, #0xc] - lsr r1, r1, #8 - lsl r1, r1, #0x18 - lsr r4, r1, #0x16 - ldr r1, _0222A09C ; =0x0224648C - ldr r1, [r1, r4] - str r1, [sp, #0x14] - ldr r1, [sp, #0x40] - lsr r1, r1, #0x18 - lsl r4, r1, #2 - ldr r1, _0222A0A0 ; =0x0224848C - ldr r1, [r1, r4] - ldr r4, [sp, #8] - lsr r4, r4, #0x10 - lsl r4, r4, #0x18 - lsr r5, r4, #0x16 - ldr r4, _0222A0A4 ; =0x0224888C - ldr r4, [r4, r5] - eor r4, r1 - ldr r1, [sp, #0x14] - eor r1, r4 - eor r1, r2 - add r2, r3, #0 - eor r2, r1 - ldr r1, [sp, #0xc] - ldr r3, [r0, #0x1c] - lsl r1, r1, #0x18 - lsr r4, r1, #0x16 - ldr r1, _0222A098 ; =0x0224688C - add r0, #0x20 - ldr r1, [r1, r4] - ldr r4, [sp, #8] - lsr r4, r4, #8 - lsl r4, r4, #0x18 - lsr r5, r4, #0x16 - ldr r4, _0222A09C ; =0x0224648C - ldr r7, [r4, r5] - lsr r4, r6, #0x18 - lsl r5, r4, #2 - ldr r4, _0222A0A0 ; =0x0224848C - ldr r6, [r4, r5] - ldr r4, [sp, #0x40] - lsr r4, r4, #0x10 - lsl r4, r4, #0x18 - lsr r5, r4, #0x16 - ldr r4, _0222A0A4 ; =0x0224888C - ldr r4, [r4, r5] - eor r4, r6 - eor r4, r7 - eor r1, r4 - eor r1, r3 - ldr r3, [sp, #4] - sub r3, r3, #1 - str r3, [sp, #4] - beq _02229F2A - ldr r3, [sp, #0x44] - ldr r4, [r0, #0] - lsl r3, r3, #0x18 - lsr r5, r3, #0x16 - ldr r3, _0222A098 ; =0x0224688C - ldr r3, [r3, r5] - lsr r5, r2, #8 - lsl r5, r5, #0x18 - lsr r6, r5, #0x16 - ldr r5, _0222A09C ; =0x0224648C - ldr r7, [r5, r6] - ldr r5, [sp, #0x10] - lsr r5, r5, #0x18 - lsl r6, r5, #2 - ldr r5, _0222A0A0 ; =0x0224848C - ldr r5, [r5, r6] - str r5, [sp, #0x18] - lsr r5, r1, #0x10 - lsl r5, r5, #0x18 - lsr r6, r5, #0x16 - ldr r5, _0222A0A4 ; =0x0224888C - ldr r6, [r5, r6] - ldr r5, [sp, #0x18] - eor r5, r6 - eor r5, r7 - eor r3, r5 - eor r3, r4 - str r3, [sp, #0xc] - lsl r3, r2, #0x18 - lsr r5, r3, #0x16 - ldr r3, _0222A098 ; =0x0224688C - ldr r4, [r0, #4] - ldr r3, [r3, r5] - lsr r5, r1, #8 - lsl r5, r5, #0x18 - lsr r6, r5, #0x16 - ldr r5, _0222A09C ; =0x0224648C - ldr r7, [r5, r6] - ldr r5, [sp, #0x44] - lsr r5, r5, #0x18 - lsl r6, r5, #2 - ldr r5, _0222A0A0 ; =0x0224848C - ldr r5, [r5, r6] - str r5, [sp, #0x1c] - ldr r5, [sp, #0x10] - lsr r5, r5, #0x10 - lsl r5, r5, #0x18 - lsr r6, r5, #0x16 - ldr r5, _0222A0A4 ; =0x0224888C - ldr r6, [r5, r6] - ldr r5, [sp, #0x1c] - eor r5, r6 - eor r5, r7 - eor r3, r5 - eor r3, r4 - str r3, [sp, #8] - lsl r3, r1, #0x18 - lsr r4, r3, #0x16 - ldr r3, _0222A098 ; =0x0224688C - ldr r6, [r0, #8] - ldr r5, [r3, r4] - ldr r3, [sp, #0x10] - lsr r1, r1, #0x18 - lsr r3, r3, #8 - lsl r3, r3, #0x18 - lsr r4, r3, #0x16 - ldr r3, _0222A09C ; =0x0224648C - ldr r3, [r3, r4] - str r3, [sp, #0x20] - lsr r3, r2, #0x18 - lsl r4, r3, #2 - ldr r3, _0222A0A0 ; =0x0224848C - lsr r2, r2, #0x10 - ldr r7, [r3, r4] - ldr r3, [sp, #0x44] - lsl r2, r2, #0x18 - lsr r3, r3, #0x10 - lsl r3, r3, #0x18 - lsr r4, r3, #0x16 - ldr r3, _0222A0A4 ; =0x0224888C - ldr r3, [r3, r4] - add r4, r7, #0 - eor r4, r3 - ldr r3, [sp, #0x20] - eor r3, r4 - eor r3, r5 - eor r3, r6 - str r3, [sp, #0x40] - ldr r3, [sp, #0x10] - ldr r5, [r0, #0xc] - lsl r3, r3, #0x18 - lsr r4, r3, #0x16 - ldr r3, _0222A098 ; =0x0224688C - ldr r4, [r3, r4] - ldr r3, [sp, #0x44] - lsr r3, r3, #8 - lsl r3, r3, #0x18 - lsr r6, r3, #0x16 - ldr r3, _0222A09C ; =0x0224648C - ldr r3, [r3, r6] - lsl r6, r1, #2 - ldr r1, _0222A0A0 ; =0x0224848C - ldr r1, [r1, r6] - lsr r6, r2, #0x16 - ldr r2, _0222A0A4 ; =0x0224888C - ldr r2, [r2, r6] - add r6, r5, #0 - eor r1, r2 - eor r1, r3 - eor r1, r4 - eor r6, r1 - b _02229D66 -_02229F2A: - ldr r3, [r0, #0] - mov r6, #0xff - str r3, [sp, #0x24] - ldr r3, [sp, #0x44] - lsl r6, r6, #0x10 - lsl r3, r3, #0x18 - lsr r4, r3, #0x16 - ldr r3, _0222A0A8 ; =0x02246C8C - ldr r4, [r3, r4] - lsl r4, r4, #0x18 - lsr r4, r4, #0x18 - str r4, [sp, #0x28] - lsr r4, r2, #8 - lsl r4, r4, #0x18 - lsr r4, r4, #0x16 - ldr r5, [r3, r4] - mov r4, #0xff - lsl r4, r4, #8 - and r4, r5 - str r4, [sp, #0x2c] - ldr r4, [sp, #0x10] - lsr r4, r4, #0x18 - lsl r4, r4, #2 - ldr r5, [r3, r4] - mov r4, #0xff - lsl r4, r4, #0x18 - and r5, r4 - lsr r4, r1, #0x10 - lsl r4, r4, #0x18 - lsr r4, r4, #0x16 - ldr r4, [r3, r4] - and r4, r6 - eor r5, r4 - ldr r4, [sp, #0x2c] - eor r5, r4 - ldr r4, [sp, #0x28] - eor r5, r4 - ldr r4, [sp, #0x24] - eor r4, r5 - ldr r5, [sp] - lsr r6, r4, #0x18 - strb r6, [r5] - lsr r6, r4, #0x10 - strb r6, [r5, #1] - lsr r6, r4, #8 - strb r6, [r5, #2] - strb r4, [r5, #3] - ldr r4, [r0, #4] - mov r6, #0xff - str r4, [sp, #0x30] - lsl r4, r2, #0x18 - lsr r4, r4, #0x16 - ldr r4, [r3, r4] - lsl r6, r6, #0x10 - lsl r4, r4, #0x18 - lsr r4, r4, #0x18 - str r4, [sp, #0x34] - lsr r4, r1, #8 - lsl r4, r4, #0x18 - lsr r4, r4, #0x16 - ldr r5, [r3, r4] - mov r4, #0xff - lsl r4, r4, #8 - and r4, r5 - str r4, [sp, #0x38] - ldr r4, [sp, #0x44] - lsr r4, r4, #0x18 - lsl r4, r4, #2 - ldr r5, [r3, r4] - mov r4, #0xff - lsl r4, r4, #0x18 - and r5, r4 - ldr r4, [sp, #0x10] - lsr r4, r4, #0x10 - lsl r4, r4, #0x18 - lsr r4, r4, #0x16 - ldr r4, [r3, r4] - and r4, r6 - eor r5, r4 - ldr r4, [sp, #0x38] - eor r5, r4 - ldr r4, [sp, #0x34] - eor r5, r4 - ldr r4, [sp, #0x30] - eor r4, r5 - ldr r5, [sp] - lsr r6, r4, #0x18 - strb r6, [r5, #4] - lsr r6, r4, #0x10 - strb r6, [r5, #5] - lsr r6, r4, #8 - strb r6, [r5, #6] - strb r4, [r5, #7] - ldr r4, [r0, #8] - str r4, [sp, #0x3c] - lsl r4, r1, #0x18 - lsr r4, r4, #0x16 - ldr r4, [r3, r4] - lsl r4, r4, #0x18 - lsr r4, r4, #0x18 - mov lr, r4 - ldr r4, [sp, #0x10] - lsr r4, r4, #8 - lsl r4, r4, #0x18 - lsr r4, r4, #0x16 - ldr r5, [r3, r4] - mov r4, #0xff - lsl r4, r4, #8 - and r4, r5 - mov ip, r4 - lsr r4, r2, #0x18 - lsl r4, r4, #2 - ldr r5, [r3, r4] - mov r4, #0xff - lsl r4, r4, #0x18 - add r6, r5, #0 - and r6, r4 - ldr r4, [sp, #0x44] - lsr r4, r4, #0x10 - lsl r4, r4, #0x18 - lsr r4, r4, #0x16 - ldr r5, [r3, r4] - mov r4, #0xff - lsl r4, r4, #0x10 - and r4, r5 - eor r4, r6 - mov r5, ip - eor r5, r4 - mov r4, lr - eor r5, r4 - ldr r4, [sp, #0x3c] - eor r4, r5 - ldr r5, [sp] - lsr r6, r4, #0x18 - strb r6, [r5, #8] - lsr r6, r4, #0x10 - strb r6, [r5, #9] - lsr r6, r4, #8 - strb r6, [r5, #0xa] - strb r4, [r5, #0xb] - ldr r5, [r0, #0xc] - ldr r0, [sp, #0x10] - lsr r2, r2, #0x10 - lsl r0, r0, #0x18 - lsr r0, r0, #0x16 - ldr r0, [r3, r0] - lsr r1, r1, #0x18 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - ldr r0, [sp, #0x44] - lsl r2, r2, #0x18 - lsr r0, r0, #8 - lsl r0, r0, #0x18 - lsr r0, r0, #0x16 - ldr r6, [r3, r0] - mov r0, #0xff - lsl r0, r0, #8 - lsl r1, r1, #2 - and r0, r6 - mov r6, #0xff - lsr r2, r2, #0x16 - ldr r1, [r3, r1] - ldr r3, [r3, r2] - mov r2, #0xff - lsl r6, r6, #0x18 - lsl r2, r2, #0x10 - and r1, r6 - and r2, r3 - eor r1, r2 - eor r0, r1 - eor r0, r4 - eor r0, r5 - ldr r1, [sp] - lsr r2, r0, #0x18 - strb r2, [r1, #0xc] - lsr r2, r0, #0x10 - strb r2, [r1, #0xd] - lsr r2, r0, #8 - strb r2, [r1, #0xe] - strb r0, [r1, #0xf] - add sp, #0x48 - pop {r3, r4, r5, r6, r7, pc} - nop -_0222A098: .word Unk_ov18_0224688C -_0222A09C: .word Unk_ov18_0224648C -_0222A0A0: .word Unk_ov18_0224848C -_0222A0A4: .word Unk_ov18_0224888C -_0222A0A8: .word Unk_ov18_02246C8C - thumb_func_end ov18_02229CF0 - - thumb_func_start ov18_0222A0AC -ov18_0222A0AC: ; 0x0222A0AC - mov r1, #0 - str r1, [r0, #0x14] - str r1, [r0, #0x10] - ldr r1, _0222A0C4 ; =0x67452301 - str r1, [r0, #0] - ldr r1, _0222A0C8 ; =0xEFCDAB89 - str r1, [r0, #4] - ldr r1, _0222A0CC ; =0x98BADCFE - str r1, [r0, #8] - ldr r1, _0222A0D0 ; =0x10325476 - str r1, [r0, #0xc] - bx lr - ; .align 2, 0 -_0222A0C4: .word 0x67452301 -_0222A0C8: .word 0xEFCDAB89 -_0222A0CC: .word 0x98BADCFE -_0222A0D0: .word 0x10325476 - thumb_func_end ov18_0222A0AC - - thumb_func_start ov18_0222A0D4 -ov18_0222A0D4: ; 0x0222A0D4 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - add r7, r1, #0 - ldr r1, [r5, #0x10] - add r6, r2, #0 - lsr r2, r1, #3 - mov r0, #0x3f - and r0, r2 - lsl r2, r6, #3 - add r1, r1, r2 - str r1, [r5, #0x10] - cmp r1, r2 - bhs _0222A0F4 - ldr r1, [r5, #0x14] - add r1, r1, #1 - str r1, [r5, #0x14] -_0222A0F4: - ldr r2, [r5, #0x14] - lsr r1, r6, #0x1d - add r1, r2, r1 - str r1, [r5, #0x14] - mov r1, #0x40 - sub r4, r1, r0 - cmp r6, r4 - blo _0222A13A - add r1, r5, #0 - add r1, #0x18 - add r0, r1, r0 - add r1, r7, #0 - add r2, r4, #0 - bl ov18_0222AA40 - add r1, r5, #0 - add r0, r5, #0 - add r1, #0x18 - bl ov18_0222A1A0 - add r0, r4, #0 - add r0, #0x3f - cmp r0, r6 - bhs _0222A136 -_0222A124: - add r0, r5, #0 - add r1, r7, r4 - bl ov18_0222A1A0 - add r4, #0x40 - add r0, r4, #0 - add r0, #0x3f - cmp r0, r6 - blo _0222A124 -_0222A136: - mov r0, #0 - b _0222A13C -_0222A13A: - mov r4, #0 -_0222A13C: - add r5, #0x18 - add r0, r5, r0 - add r1, r7, r4 - sub r2, r6, r4 - bl ov18_0222AA40 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 - thumb_func_end ov18_0222A0D4 - - thumb_func_start ov18_0222A14C -ov18_0222A14C: ; 0x0222A14C - push {r3, r4, r5, lr} - sub sp, #8 - add r5, r0, #0 - add r4, r1, #0 - add r0, sp, #0 - add r1, #0x10 - mov r2, #8 - bl ov18_0222A9E8 - ldr r0, [r4, #0x10] - lsr r1, r0, #3 - mov r0, #0x3f - and r1, r0 - cmp r1, #0x38 - bhs _0222A16E - mov r0, #0x38 - b _0222A170 -_0222A16E: - mov r0, #0x78 -_0222A170: - sub r2, r0, r1 - ldr r1, _0222A19C ; =0x022498B8 - add r0, r4, #0 - bl ov18_0222A0D4 - add r0, r4, #0 - add r1, sp, #0 - mov r2, #8 - bl ov18_0222A0D4 - add r0, r5, #0 - add r1, r4, #0 - mov r2, #0x10 - bl ov18_0222A9E8 - add r0, r4, #0 - mov r1, #0 - mov r2, #0x58 - bl ov18_0222AA58 - add sp, #8 - pop {r3, r4, r5, pc} - ; .align 2, 0 -_0222A19C: .word Unk_ov18_022498B8 - thumb_func_end ov18_0222A14C - - thumb_func_start ov18_0222A1A0 -ov18_0222A1A0: ; 0x0222A1A0 - push {r4, r5, r6, r7, lr} - sub sp, #0x84 - add r7, r0, #0 - ldr r0, [r7, #0] - mov r2, #0x40 - str r0, [sp] - add r0, sp, #0x44 - ldr r4, [r7, #4] - ldr r5, [r7, #8] - ldr r6, [r7, #0xc] - bl ov18_0222AA14 - ldr r0, [sp, #0x44] - add r1, r4, #0 - str r0, [sp, #4] - mvn r0, r4 - and r1, r5 - and r0, r6 - orr r1, r0 - ldr r0, [sp, #4] - add r1, r0, r1 - ldr r0, _0222A578 ; =0x28955B88 - sub r1, r1, r0 - ldr r0, [sp] - add r0, r0, r1 - lsl r1, r0, #7 - lsr r0, r0, #0x19 - orr r0, r1 - add r3, r0, r4 - ldr r0, [sp, #0x48] - mvn r1, r3 - str r0, [sp, #8] - add r0, r3, #0 - and r0, r4 - and r1, r5 - orr r1, r0 - ldr r0, [sp, #8] - add r1, r0, r1 - ldr r0, _0222A57C ; =0x173848AA - sub r0, r1, r0 - add r0, r6, r0 - lsl r1, r0, #0xc - lsr r0, r0, #0x14 - orr r0, r1 - add r2, r0, r3 - ldr r0, [sp, #0x4c] - mvn r1, r2 - str r0, [sp, #0xc] - add r0, r2, #0 - and r0, r3 - and r1, r4 - orr r1, r0 - ldr r0, [sp, #0xc] - add r1, r0, r1 - ldr r0, _0222A580 ; =0x242070DB - add r0, r1, r0 - add r0, r5, r0 - lsl r1, r0, #0x11 - lsr r0, r0, #0xf - orr r0, r1 - add r1, r0, r2 - ldr r0, [sp, #0x50] - mvn r5, r1 - str r0, [sp, #0x10] - add r0, r1, #0 - and r0, r2 - and r5, r3 - orr r5, r0 - ldr r0, [sp, #0x10] - add r5, r0, r5 - ldr r0, _0222A584 ; =0x3E423112 - sub r0, r5, r0 - add r0, r4, r0 - lsl r4, r0, #0x16 - lsr r0, r0, #0xa - orr r0, r4 - ldr r4, [sp, #0x54] - add r0, r0, r1 - str r4, [sp, #0x14] - add r4, r0, #0 - mvn r5, r0 - and r4, r1 - and r5, r2 - orr r5, r4 - ldr r4, [sp, #0x14] - add r5, r4, r5 - ldr r4, _0222A588 ; =0x0A83F051 - sub r4, r5, r4 - add r3, r3, r4 - lsl r4, r3, #7 - lsr r3, r3, #0x19 - orr r3, r4 - ldr r4, [sp, #0x58] - add r3, r3, r0 - str r4, [sp, #0x18] - add r4, r3, #0 - mvn r5, r3 - and r4, r0 - and r5, r1 - orr r5, r4 - ldr r4, [sp, #0x18] - add r5, r4, r5 - ldr r4, _0222A58C ; =0x4787C62A - add r4, r5, r4 - add r2, r2, r4 - lsl r4, r2, #0xc - lsr r2, r2, #0x14 - orr r2, r4 - ldr r4, [sp, #0x5c] - add r2, r2, r3 - str r4, [sp, #0x1c] - add r4, r2, #0 - mvn r5, r2 - and r4, r3 - and r5, r0 - orr r5, r4 - ldr r4, [sp, #0x1c] - add r5, r4, r5 - ldr r4, _0222A590 ; =0x57CFB9ED - sub r4, r5, r4 - add r1, r1, r4 - lsl r4, r1, #0x11 - lsr r1, r1, #0xf - orr r1, r4 - ldr r4, [sp, #0x60] - add r1, r1, r2 - str r4, [sp, #0x20] - add r4, r1, #0 - mvn r5, r1 - and r4, r2 - and r5, r3 - orr r5, r4 - ldr r4, [sp, #0x20] - add r5, r4, r5 - ldr r4, _0222A594 ; =0x02B96AFF - sub r4, r5, r4 - add r0, r0, r4 - lsl r4, r0, #0x16 - lsr r0, r0, #0xa - orr r0, r4 - ldr r4, [sp, #0x64] - add r0, r0, r1 - str r4, [sp, #0x24] - add r4, r0, #0 - mvn r5, r0 - and r4, r1 - and r5, r2 - orr r5, r4 - ldr r4, [sp, #0x24] - add r5, r4, r5 - ldr r4, _0222A598 ; =0x698098D8 - add r4, r5, r4 - add r3, r3, r4 - lsl r4, r3, #7 - lsr r3, r3, #0x19 - orr r3, r4 - ldr r4, [sp, #0x68] - add r3, r3, r0 - str r4, [sp, #0x28] - add r4, r3, #0 - mvn r5, r3 - and r4, r0 - and r5, r1 - orr r5, r4 - ldr r4, [sp, #0x28] - add r5, r4, r5 - ldr r4, _0222A59C ; =0x74BB0851 - sub r4, r5, r4 - add r2, r2, r4 - lsl r4, r2, #0xc - lsr r2, r2, #0x14 - orr r2, r4 - ldr r4, [sp, #0x6c] - add r2, r2, r3 - str r4, [sp, #0x2c] - add r4, r2, #0 - mvn r5, r2 - and r4, r3 - and r5, r0 - orr r5, r4 - ldr r4, [sp, #0x2c] - add r5, r4, r5 - ldr r4, _0222A5A0 ; =0x0000A44F - sub r4, r5, r4 - add r1, r1, r4 - lsl r4, r1, #0x11 - lsr r1, r1, #0xf - orr r1, r4 - ldr r4, [sp, #0x70] - add r1, r1, r2 - str r4, [sp, #0x30] - add r4, r1, #0 - mvn r5, r1 - and r4, r2 - and r5, r3 - orr r5, r4 - ldr r4, [sp, #0x30] - add r5, r4, r5 - ldr r4, _0222A5A4 ; =0x76A32842 - sub r4, r5, r4 - add r0, r0, r4 - lsl r4, r0, #0x16 - lsr r0, r0, #0xa - orr r0, r4 - add r0, r0, r1 - ldr r4, [sp, #0x74] - mvn r5, r0 - str r4, [sp, #0x34] - add r4, r0, #0 - and r4, r1 - and r5, r2 - orr r5, r4 - ldr r4, [sp, #0x34] - add r5, r4, r5 - ldr r4, _0222A5A8 ; =0x6B901122 - add r4, r5, r4 - add r3, r3, r4 - lsl r4, r3, #7 - lsr r3, r3, #0x19 - orr r3, r4 - add r4, r3, r0 - ldr r3, [sp, #0x78] - mvn r5, r4 - str r3, [sp, #0x38] - add r3, r4, #0 - and r3, r0 - and r5, r1 - orr r5, r3 - ldr r3, [sp, #0x38] - add r5, r3, r5 - ldr r3, _0222A5AC ; =0x02678E6D - sub r3, r5, r3 - add r2, r2, r3 - lsl r3, r2, #0xc - lsr r2, r2, #0x14 - orr r2, r3 - add r3, r2, r4 - mvn r2, r3 - str r2, [sp, #0x3c] - ldr r2, [sp, #0x7c] - ldr r5, [sp, #0x3c] - str r2, [sp, #0x40] - add r2, r3, #0 - and r2, r4 - and r5, r0 - orr r5, r2 - ldr r2, [sp, #0x40] - add r5, r2, r5 - ldr r2, _0222A5B0 ; =0x5986BC72 - sub r2, r5, r2 - add r1, r1, r2 - lsl r2, r1, #0x11 - lsr r1, r1, #0xf - orr r1, r2 - add r2, r1, r3 - ldr r1, [sp, #0x80] - add r5, r2, #0 - mvn r6, r2 - mov ip, r1 - add r1, r6, #0 - and r5, r3 - and r1, r4 - orr r5, r1 - mov r1, ip - add r5, r1, r5 - ldr r1, _0222A5B4 ; =0x49B40821 - add r1, r5, r1 - add r0, r0, r1 - lsl r1, r0, #0x16 - lsr r0, r0, #0xa - orr r0, r1 - add r1, r0, r2 - ldr r5, [sp, #0x3c] - add r0, r1, #0 - and r0, r3 - and r5, r2 - orr r5, r0 - ldr r0, [sp, #8] - add r5, r0, r5 - ldr r0, _0222A5B8 ; =0x09E1DA9E - sub r0, r5, r0 - add r0, r4, r0 - lsl r4, r0, #5 - lsr r0, r0, #0x1b - orr r0, r4 - add r0, r0, r1 - add r4, r0, #0 - add r5, r1, #0 - and r4, r2 - bic r5, r2 - orr r5, r4 - ldr r4, [sp, #0x1c] - add r5, r4, r5 - ldr r4, _0222A5BC ; =0x3FBF4CC0 - sub r4, r5, r4 - add r3, r3, r4 - lsl r4, r3, #9 - lsr r3, r3, #0x17 - orr r3, r4 - add r3, r3, r0 - add r4, r3, #0 - mvn r5, r1 - and r4, r1 - and r5, r0 - orr r5, r4 - ldr r4, [sp, #0x30] - add r5, r4, r5 - ldr r4, _0222A5C0 ; =0x265E5A51 - add r4, r5, r4 - add r2, r2, r4 - lsl r4, r2, #0xe - lsr r2, r2, #0x12 - orr r2, r4 - add r2, r2, r3 - add r4, r2, #0 - mvn r5, r0 - and r4, r0 - and r5, r3 - orr r5, r4 - ldr r4, [sp, #4] - add r5, r4, r5 - ldr r4, _0222A5C4 ; =0x16493856 - sub r4, r5, r4 - add r1, r1, r4 - lsl r4, r1, #0x14 - lsr r1, r1, #0xc - orr r1, r4 - add r1, r1, r2 - add r4, r1, #0 - mvn r5, r3 - and r4, r3 - and r5, r2 - orr r5, r4 - ldr r4, [sp, #0x18] - add r5, r4, r5 - ldr r4, _0222A5C8 ; =0x29D0EFA3 - sub r4, r5, r4 - add r0, r0, r4 - lsl r4, r0, #5 - lsr r0, r0, #0x1b - orr r0, r4 - add r4, r0, r1 - add r0, r4, #0 - mvn r5, r2 - and r0, r2 - and r5, r1 - orr r5, r0 - ldr r0, [sp, #0x2c] - add r5, r0, r5 - ldr r0, _0222A5CC ; =0x02441453 - add r0, r5, r0 - add r0, r3, r0 - lsl r3, r0, #9 - lsr r0, r0, #0x17 - orr r0, r3 - add r3, r0, r4 - add r0, r3, #0 - mvn r5, r1 - and r0, r1 - and r5, r4 - orr r5, r0 - mov r0, ip - add r5, r0, r5 - ldr r0, _0222A5D0 ; =0x275E197F - sub r0, r5, r0 - add r0, r2, r0 - lsl r2, r0, #0xe - lsr r0, r0, #0x12 - orr r0, r2 - add r0, r0, r3 - add r2, r0, #0 - mvn r5, r4 - and r2, r4 - and r5, r3 - orr r5, r2 - ldr r2, [sp, #0x14] - add r5, r2, r5 - ldr r2, _0222A5D4 ; =0x182C0438 - sub r2, r5, r2 - add r1, r1, r2 - lsl r2, r1, #0x14 - lsr r1, r1, #0xc - orr r1, r2 - add r5, r1, r0 - add r1, r5, #0 - mvn r2, r3 - and r1, r3 - and r2, r0 - orr r2, r1 - ldr r1, [sp, #0x28] - add r2, r1, r2 - ldr r1, _0222A5D8 ; =0x21E1CDE6 - add r1, r2, r1 - add r1, r4, r1 - lsl r2, r1, #5 - lsr r1, r1, #0x1b - orr r1, r2 - add r2, r1, r5 - add r1, r2, #0 - mvn r4, r0 - and r1, r0 - and r4, r5 - orr r4, r1 - ldr r1, [sp, #0x40] - add r4, r1, r4 - ldr r1, _0222A5DC ; =0x3CC8F82A - sub r1, r4, r1 - add r1, r3, r1 - lsl r3, r1, #9 - lsr r1, r1, #0x17 - orr r1, r3 - add r1, r1, r2 - add r3, r1, #0 - mvn r4, r5 - and r3, r5 - and r4, r2 - orr r4, r3 - ldr r3, [sp, #0x10] - add r4, r3, r4 - ldr r3, _0222A5E0 ; =0x0B2AF279 - sub r3, r4, r3 - add r0, r0, r3 - lsl r3, r0, #0xe - lsr r0, r0, #0x12 - orr r0, r3 - add r4, r0, r1 - add r0, r4, #0 - mvn r3, r2 - and r0, r2 - and r3, r1 - orr r3, r0 - ldr r0, [sp, #0x24] - add r3, r0, r3 - ldr r0, _0222A5E4 ; =0x455A14ED - add r0, r3, r0 - add r0, r5, r0 - lsl r3, r0, #0x14 - lsr r0, r0, #0xc - orr r0, r3 - add r3, r0, r4 - add r0, r3, #0 - mvn r5, r1 - and r0, r1 - and r5, r4 - orr r5, r0 - ldr r0, [sp, #0x38] - add r5, r0, r5 - ldr r0, _0222A5E8 ; =0x561C16FB - sub r0, r5, r0 - add r0, r2, r0 - lsl r2, r0, #5 - lsr r0, r0, #0x1b - orr r0, r2 - add r0, r0, r3 - add r2, r0, #0 - mvn r5, r4 - and r2, r4 - and r5, r3 - orr r5, r2 - ldr r2, [sp, #0xc] - add r5, r2, r5 - ldr r2, _0222A5EC ; =0x03105C08 - sub r2, r5, r2 - add r1, r1, r2 - lsl r2, r1, #9 - lsr r1, r1, #0x17 - orr r1, r2 - add r5, r1, r0 - add r1, r5, #0 - mvn r2, r3 - and r1, r3 - and r2, r0 - orr r2, r1 - ldr r1, [sp, #0x20] - add r2, r1, r2 - ldr r1, _0222A5F0 ; =0x676F02D9 - add r1, r2, r1 - add r1, r4, r1 - lsl r2, r1, #0xe - lsr r1, r1, #0x12 - orr r1, r2 - add r2, r1, r5 - add r1, r2, #0 - mvn r4, r0 - and r1, r0 - and r4, r5 - orr r4, r1 - ldr r1, [sp, #0x34] - add r4, r1, r4 - ldr r1, _0222A5F4 ; =0x72D5B376 - b _0222A5F8 - nop -_0222A578: .word 0x28955B88 -_0222A57C: .word 0x173848AA -_0222A580: .word 0x242070DB -_0222A584: .word 0x3E423112 -_0222A588: .word 0x0A83F051 -_0222A58C: .word 0x4787C62A -_0222A590: .word 0x57CFB9ED -_0222A594: .word 0x02B96AFF -_0222A598: .word 0x698098D8 -_0222A59C: .word 0x74BB0851 -_0222A5A0: .word 0x0000A44F -_0222A5A4: .word 0x76A32842 -_0222A5A8: .word 0x6B901122 -_0222A5AC: .word 0x02678E6D -_0222A5B0: .word 0x5986BC72 -_0222A5B4: .word 0x49B40821 -_0222A5B8: .word 0x09E1DA9E -_0222A5BC: .word 0x3FBF4CC0 -_0222A5C0: .word 0x265E5A51 -_0222A5C4: .word 0x16493856 -_0222A5C8: .word 0x29D0EFA3 -_0222A5CC: .word 0x02441453 -_0222A5D0: .word 0x275E197F -_0222A5D4: .word 0x182C0438 -_0222A5D8: .word 0x21E1CDE6 -_0222A5DC: .word 0x3CC8F82A -_0222A5E0: .word 0x0B2AF279 -_0222A5E4: .word 0x455A14ED -_0222A5E8: .word 0x561C16FB -_0222A5EC: .word 0x03105C08 -_0222A5F0: .word 0x676F02D9 -_0222A5F4: .word 0x72D5B376 -_0222A5F8: - sub r1, r4, r1 - add r1, r3, r1 - lsl r3, r1, #0x14 - lsr r1, r1, #0xc - orr r1, r3 - add r1, r1, r2 - add r3, r1, #0 - eor r3, r2 - add r4, r5, #0 - eor r4, r3 - ldr r3, [sp, #0x18] - add r4, r3, r4 - ldr r3, _0222A968 ; =0x0005C6BE - sub r3, r4, r3 - add r0, r0, r3 - lsl r3, r0, #4 - lsr r0, r0, #0x1c - orr r0, r3 - add r4, r0, r1 - add r0, r4, #0 - eor r0, r1 - add r3, r2, #0 - eor r3, r0 - ldr r0, [sp, #0x24] - add r3, r0, r3 - ldr r0, _0222A96C ; =0x788E097F - sub r0, r3, r0 - add r0, r5, r0 - lsl r3, r0, #0xb - lsr r0, r0, #0x15 - orr r0, r3 - add r3, r0, r4 - add r0, r3, #0 - eor r0, r4 - add r5, r1, #0 - eor r5, r0 - ldr r0, [sp, #0x30] - add r5, r0, r5 - ldr r0, _0222A970 ; =0x6D9D6122 - add r0, r5, r0 - add r0, r2, r0 - lsl r2, r0, #0x10 - lsr r0, r0, #0x10 - orr r0, r2 - add r0, r0, r3 - add r2, r0, #0 - eor r2, r3 - add r5, r4, #0 - eor r5, r2 - ldr r2, [sp, #0x40] - add r5, r2, r5 - ldr r2, _0222A974 ; =0x021AC7F4 - sub r2, r5, r2 - add r1, r1, r2 - lsl r2, r1, #0x17 - lsr r1, r1, #9 - orr r1, r2 - add r5, r1, r0 - add r1, r5, #0 - eor r1, r0 - add r2, r3, #0 - eor r2, r1 - ldr r1, [sp, #8] - add r2, r1, r2 - ldr r1, _0222A978 ; =0x5B4115BC - sub r1, r2, r1 - add r1, r4, r1 - lsl r2, r1, #4 - lsr r1, r1, #0x1c - orr r1, r2 - add r2, r1, r5 - add r1, r2, #0 - eor r1, r5 - add r4, r0, #0 - eor r4, r1 - ldr r1, [sp, #0x14] - add r4, r1, r4 - ldr r1, _0222A97C ; =0x4BDECFA9 - add r1, r4, r1 - add r1, r3, r1 - lsl r3, r1, #0xb - lsr r1, r1, #0x15 - orr r1, r3 - add r1, r1, r2 - add r3, r1, #0 - eor r3, r2 - add r4, r5, #0 - eor r4, r3 - ldr r3, [sp, #0x20] - add r4, r3, r4 - ldr r3, _0222A980 ; =0x0944B4A0 - sub r3, r4, r3 - add r0, r0, r3 - lsl r3, r0, #0x10 - lsr r0, r0, #0x10 - orr r0, r3 - add r4, r0, r1 - add r0, r4, #0 - eor r0, r1 - add r3, r2, #0 - eor r3, r0 - ldr r0, [sp, #0x2c] - add r3, r0, r3 - ldr r0, _0222A984 ; =0x41404390 - sub r0, r3, r0 - add r0, r5, r0 - lsl r3, r0, #0x17 - lsr r0, r0, #9 - orr r0, r3 - add r3, r0, r4 - add r0, r3, #0 - eor r0, r4 - add r5, r1, #0 - eor r5, r0 - ldr r0, [sp, #0x38] - add r5, r0, r5 - ldr r0, _0222A988 ; =0x289B7EC6 - add r0, r5, r0 - add r0, r2, r0 - lsl r2, r0, #4 - lsr r0, r0, #0x1c - orr r0, r2 - add r0, r0, r3 - add r2, r0, #0 - eor r2, r3 - add r5, r4, #0 - eor r5, r2 - ldr r2, [sp, #4] - add r5, r2, r5 - ldr r2, _0222A98C ; =0x155ED806 - sub r2, r5, r2 - add r1, r1, r2 - lsl r2, r1, #0xb - lsr r1, r1, #0x15 - orr r1, r2 - add r5, r1, r0 - add r1, r5, #0 - eor r1, r0 - add r2, r3, #0 - eor r2, r1 - ldr r1, [sp, #0x10] - add r2, r1, r2 - ldr r1, _0222A990 ; =0x2B10CF7B - sub r1, r2, r1 - add r1, r4, r1 - lsl r2, r1, #0x10 - lsr r1, r1, #0x10 - orr r1, r2 - add r2, r1, r5 - add r1, r2, #0 - eor r1, r5 - add r4, r0, #0 - eor r4, r1 - ldr r1, [sp, #0x1c] - add r4, r1, r4 - ldr r1, _0222A994 ; =0x04881D05 - add r1, r4, r1 - add r1, r3, r1 - lsl r3, r1, #0x17 - lsr r1, r1, #9 - orr r1, r3 - add r1, r1, r2 - add r3, r1, #0 - eor r3, r2 - add r4, r5, #0 - eor r4, r3 - ldr r3, [sp, #0x28] - add r4, r3, r4 - ldr r3, _0222A998 ; =0x262B2FC7 - sub r3, r4, r3 - add r0, r0, r3 - lsl r3, r0, #4 - lsr r0, r0, #0x1c - orr r0, r3 - add r4, r0, r1 - add r0, r4, #0 - eor r0, r1 - add r3, r2, #0 - eor r3, r0 - ldr r0, [sp, #0x34] - add r3, r0, r3 - ldr r0, _0222A99C ; =0x1924661B - sub r0, r3, r0 - add r0, r5, r0 - lsl r3, r0, #0xb - lsr r0, r0, #0x15 - orr r0, r3 - add r3, r0, r4 - add r0, r3, #0 - eor r0, r4 - add r5, r1, #0 - eor r5, r0 - mov r0, ip - add r5, r0, r5 - ldr r0, _0222A9A0 ; =0x1FA27CF8 - add r0, r5, r0 - add r0, r2, r0 - lsl r2, r0, #0x10 - lsr r0, r0, #0x10 - orr r0, r2 - add r0, r0, r3 - add r2, r0, #0 - eor r2, r3 - add r5, r4, #0 - eor r5, r2 - ldr r2, [sp, #0xc] - add r5, r2, r5 - ldr r2, _0222A9A4 ; =0x3B53A99B - sub r2, r5, r2 - add r1, r1, r2 - lsl r2, r1, #0x17 - lsr r1, r1, #9 - orr r1, r2 - add r5, r1, r0 - mvn r1, r3 - orr r1, r5 - add r2, r0, #0 - eor r2, r1 - ldr r1, [sp, #4] - add r2, r1, r2 - ldr r1, _0222A9A8 ; =0x0BD6DDBC - sub r1, r2, r1 - add r1, r4, r1 - lsl r2, r1, #6 - lsr r1, r1, #0x1a - orr r1, r2 - add r2, r1, r5 - mvn r1, r0 - orr r1, r2 - add r4, r5, #0 - eor r4, r1 - ldr r1, [sp, #0x20] - add r4, r1, r4 - ldr r1, _0222A9AC ; =0x432AFF97 - add r1, r4, r1 - add r1, r3, r1 - lsl r3, r1, #0xa - lsr r1, r1, #0x16 - orr r1, r3 - add r1, r1, r2 - mvn r3, r5 - orr r3, r1 - add r4, r2, #0 - eor r4, r3 - ldr r3, [sp, #0x40] - add r4, r3, r4 - ldr r3, _0222A9B0 ; =0x546BDC59 - sub r3, r4, r3 - add r0, r0, r3 - lsl r3, r0, #0xf - lsr r0, r0, #0x11 - orr r0, r3 - add r4, r0, r1 - mvn r0, r2 - orr r0, r4 - add r3, r1, #0 - eor r3, r0 - ldr r0, [sp, #0x18] - add r3, r0, r3 - ldr r0, _0222A9B4 ; =0x036C5FC7 - sub r0, r3, r0 - add r0, r5, r0 - lsl r3, r0, #0x15 - lsr r0, r0, #0xb - orr r0, r3 - add r3, r0, r4 - mvn r0, r1 - orr r0, r3 - add r5, r4, #0 - eor r5, r0 - ldr r0, [sp, #0x34] - add r5, r0, r5 - ldr r0, _0222A9B8 ; =0x655B59C3 - add r0, r5, r0 - add r0, r2, r0 - lsl r2, r0, #6 - lsr r0, r0, #0x1a - orr r0, r2 - add r0, r0, r3 - mvn r2, r4 - orr r2, r0 - add r5, r3, #0 - eor r5, r2 - ldr r2, [sp, #0x10] - add r5, r2, r5 - ldr r2, _0222A9BC ; =0x70F3336E - sub r2, r5, r2 - add r1, r1, r2 - lsl r2, r1, #0xa - lsr r1, r1, #0x16 - orr r1, r2 - add r5, r1, r0 - mvn r1, r3 - orr r1, r5 - add r2, r0, #0 - eor r2, r1 - ldr r1, [sp, #0x2c] - add r2, r1, r2 - ldr r1, _0222A9C0 ; =0x00100B83 - sub r1, r2, r1 - add r1, r4, r1 - lsl r2, r1, #0xf - lsr r1, r1, #0x11 - orr r1, r2 - add r2, r1, r5 - mvn r1, r0 - orr r1, r2 - add r4, r5, #0 - eor r4, r1 - ldr r1, [sp, #8] - add r4, r1, r4 - ldr r1, _0222A9C4 ; =0x7A7BA22F - sub r1, r4, r1 - add r1, r3, r1 - lsl r3, r1, #0x15 - lsr r1, r1, #0xb - orr r1, r3 - add r1, r1, r2 - mvn r3, r5 - orr r3, r1 - add r4, r2, #0 - eor r4, r3 - ldr r3, [sp, #0x24] - add r4, r3, r4 - ldr r3, _0222A9C8 ; =0x6FA87E4F - add r3, r4, r3 - add r0, r0, r3 - lsl r3, r0, #6 - lsr r0, r0, #0x1a - orr r0, r3 - add r3, r0, r1 - mvn r0, r2 - orr r0, r3 - eor r0, r1 - mov r4, ip - add r4, r4, r0 - ldr r0, _0222A9CC ; =0x01D31920 - sub r0, r4, r0 - add r0, r5, r0 - lsl r4, r0, #0xa - lsr r0, r0, #0x16 - orr r0, r4 - add r0, r0, r3 - mvn r4, r1 - orr r4, r0 - add r5, r3, #0 - eor r5, r4 - ldr r4, [sp, #0x1c] - add r5, r4, r5 - ldr r4, _0222A9D0 ; =0x5CFEBCEC - sub r4, r5, r4 - add r2, r2, r4 - lsl r4, r2, #0xf - lsr r2, r2, #0x11 - orr r2, r4 - add r4, r2, r0 - mvn r2, r3 - orr r2, r4 - add r5, r0, #0 - eor r5, r2 - ldr r2, [sp, #0x38] - add r5, r2, r5 - ldr r2, _0222A9D4 ; =0x4E0811A1 - add r2, r5, r2 - add r1, r1, r2 - lsl r2, r1, #0x15 - lsr r1, r1, #0xb - orr r1, r2 - add r2, r1, r4 - mvn r1, r0 - orr r1, r2 - add r5, r4, #0 - eor r5, r1 - ldr r1, [sp, #0x14] - add r5, r1, r5 - ldr r1, _0222A9D8 ; =0x08AC817E - sub r1, r5, r1 - add r1, r3, r1 - lsl r3, r1, #6 - lsr r1, r1, #0x1a - orr r1, r3 - add r1, r1, r2 - mvn r3, r4 - orr r3, r1 - add r5, r2, #0 - eor r5, r3 - ldr r3, [sp, #0x30] - add r5, r3, r5 - ldr r3, _0222A9DC ; =0x42C50DCB - sub r3, r5, r3 - add r0, r0, r3 - lsl r3, r0, #0xa - lsr r0, r0, #0x16 - orr r0, r3 - add r5, r0, r1 - mvn r0, r2 - orr r0, r5 - add r3, r1, #0 - eor r3, r0 - ldr r0, [sp, #0xc] - add r3, r0, r3 - ldr r0, _0222A9E0 ; =0x2AD7D2BB - add r0, r3, r0 - add r0, r4, r0 - lsl r3, r0, #0xf - lsr r0, r0, #0x11 - orr r0, r3 - add r3, r0, r5 - mvn r0, r1 - orr r0, r3 - add r4, r5, #0 - eor r4, r0 - ldr r0, [sp, #0x28] - add r4, r0, r4 - ldr r0, _0222A9E4 ; =0x14792C6F - sub r0, r4, r0 - add r0, r2, r0 - lsl r2, r0, #0x15 - lsr r0, r0, #0xb - orr r0, r2 - ldr r2, [r7, #0] - add r0, r0, r3 - add r1, r2, r1 - str r1, [r7, #0] - ldr r1, [r7, #4] - mov r2, #0x40 - add r0, r1, r0 - str r0, [r7, #4] - ldr r0, [r7, #8] - mov r1, #0 - add r0, r0, r3 - str r0, [r7, #8] - ldr r0, [r7, #0xc] - add r0, r0, r5 - str r0, [r7, #0xc] - add r0, sp, #0x44 - bl ov18_0222AA58 - add sp, #0x84 - pop {r4, r5, r6, r7, pc} - ; .align 2, 0 -_0222A968: .word 0x0005C6BE -_0222A96C: .word 0x788E097F -_0222A970: .word 0x6D9D6122 -_0222A974: .word 0x021AC7F4 -_0222A978: .word 0x5B4115BC -_0222A97C: .word 0x4BDECFA9 -_0222A980: .word 0x0944B4A0 -_0222A984: .word 0x41404390 -_0222A988: .word 0x289B7EC6 -_0222A98C: .word 0x155ED806 -_0222A990: .word 0x2B10CF7B -_0222A994: .word 0x04881D05 -_0222A998: .word 0x262B2FC7 -_0222A99C: .word 0x1924661B -_0222A9A0: .word 0x1FA27CF8 -_0222A9A4: .word 0x3B53A99B -_0222A9A8: .word 0x0BD6DDBC -_0222A9AC: .word 0x432AFF97 -_0222A9B0: .word 0x546BDC59 -_0222A9B4: .word 0x036C5FC7 -_0222A9B8: .word 0x655B59C3 -_0222A9BC: .word 0x70F3336E -_0222A9C0: .word 0x00100B83 -_0222A9C4: .word 0x7A7BA22F -_0222A9C8: .word 0x6FA87E4F -_0222A9CC: .word 0x01D31920 -_0222A9D0: .word 0x5CFEBCEC -_0222A9D4: .word 0x4E0811A1 -_0222A9D8: .word 0x08AC817E -_0222A9DC: .word 0x42C50DCB -_0222A9E0: .word 0x2AD7D2BB -_0222A9E4: .word 0x14792C6F - thumb_func_end ov18_0222A1A0 - - thumb_func_start ov18_0222A9E8 -ov18_0222A9E8: ; 0x0222A9E8 - push {r4, r5} - mov r4, #0 - cmp r2, #0 - bls _0222AA10 -_0222A9F0: - ldr r5, [r1, #0] - add r3, r0, r4 - strb r5, [r0, r4] - ldr r5, [r1, #0] - add r4, r4, #4 - lsr r5, r5, #8 - strb r5, [r3, #1] - ldr r5, [r1, #0] - lsr r5, r5, #0x10 - strb r5, [r3, #2] - ldr r5, [r1, #0] - add r1, r1, #4 - lsr r5, r5, #0x18 - strb r5, [r3, #3] - cmp r4, r2 - blo _0222A9F0 -_0222AA10: - pop {r4, r5} - bx lr - thumb_func_end ov18_0222A9E8 - - thumb_func_start ov18_0222AA14 -ov18_0222AA14: ; 0x0222AA14 - push {r4, r5, r6, r7} - mov r7, #0 - cmp r2, #0 - bls _0222AA3A -_0222AA1C: - add r6, r1, r7 - ldrb r3, [r6, #3] - lsl r5, r3, #0x18 - ldrb r3, [r6, #2] - ldrb r6, [r6, #1] - lsl r4, r3, #0x10 - ldrb r3, [r1, r7] - lsl r6, r6, #8 - add r7, r7, #4 - orr r3, r6 - orr r3, r4 - orr r3, r5 - stmia r0!, {r3} - cmp r7, r2 - blo _0222AA1C -_0222AA3A: - pop {r4, r5, r6, r7} - bx lr - ; .align 2, 0 - thumb_func_end ov18_0222AA14 - - thumb_func_start ov18_0222AA40 -ov18_0222AA40: ; 0x0222AA40 - push {r3, r4} - mov r4, #0 - cmp r2, #0 - bls _0222AA52 -_0222AA48: - ldrb r3, [r1, r4] - strb r3, [r0, r4] - add r4, r4, #1 - cmp r4, r2 - blo _0222AA48 -_0222AA52: - pop {r3, r4} - bx lr - ; .align 2, 0 - thumb_func_end ov18_0222AA40 - - thumb_func_start ov18_0222AA58 -ov18_0222AA58: ; 0x0222AA58 - mov r3, #0 - cmp r2, #0 - bls _0222AA6C - lsl r1, r1, #0x18 - asr r1, r1, #0x18 -_0222AA62: - add r3, r3, #1 - strb r1, [r0] - add r0, r0, #1 - cmp r3, r2 - blo _0222AA62 -_0222AA6C: - bx lr - ; .align 2, 0 - thumb_func_end ov18_0222AA58 - - thumb_func_start ov18_0222AA70 -ov18_0222AA70: ; 0x0222AA70 - push {r4, r5, r6, lr} - sub sp, #0x58 - add r5, r0, #0 - add r4, r1, #0 - add r6, r2, #0 - add r0, sp, #0 - bl ov18_0222A0AC - add r0, sp, #0 - add r1, r4, #0 - add r2, r6, #0 - bl ov18_0222A0D4 - add r0, r5, #0 - add r1, sp, #0 - bl ov18_0222A14C - add sp, #0x58 - pop {r4, r5, r6, pc} - ; .align 2, 0 - thumb_func_end ov18_0222AA70 - - thumb_func_start ov18_0222AA98 -ov18_0222AA98: ; 0x0222AA98 - push {r3, lr} - bl OS_GetTick - lsr r2, r0, #0x1a - lsl r1, r1, #6 - orr r1, r2 - ldr r2, _0222AAB0 ; =0x000082EA - lsl r0, r0, #6 - mov r3, #0 - bl _ull_div - pop {r3, pc} - ; .align 2, 0 -_0222AAB0: .word 0x000082EA - thumb_func_end ov18_0222AA98 - - thumb_func_start ov18_0222AAB4 -ov18_0222AAB4: ; 0x0222AAB4 - push {r3, r4, r5, lr} - add r4, r0, #0 - mul r4, r1 - ldr r1, _0222AAD4 ; =0x02251D10 - add r0, r4, #0 - ldr r1, [r1, #4] - blx r1 - add r5, r0, #0 - beq _0222AACE - mov r1, #0 - add r2, r4, #0 - bl memset -_0222AACE: - add r0, r5, #0 - pop {r3, r4, r5, pc} - nop -_0222AAD4: .word Unk_ov18_02251D10 - thumb_func_end ov18_0222AAB4 - - thumb_func_start ov18_0222AAD8 -ov18_0222AAD8: ; 0x0222AAD8 - push {r3, lr} - ldr r1, _0222AAE4 ; =0x02251D10 - ldr r1, [r1, #0xc] - blx r1 - pop {r3, pc} - nop -_0222AAE4: .word Unk_ov18_02251D10 - thumb_func_end ov18_0222AAD8 - - thumb_func_start ov18_0222AAE8 -ov18_0222AAE8: ; 0x0222AAE8 - push {r4, r5} - lsl r1, r1, #0x18 - lsr r3, r1, #0x18 - mov r1, #0xf0 - and r1, r3 - asr r5, r1, #4 - mov r1, #0xf - add r2, r0, #0 - mov r4, #0 - and r1, r3 -_0222AAFC: - cmp r5, #9 - bgt _0222AB04 - add r5, #0x30 - b _0222AB06 -_0222AB04: - add r5, #0x37 -_0222AB06: - add r4, r4, #1 - strb r5, [r2] - add r2, r2, #1 - add r5, r1, #0 - cmp r4, #2 - blt _0222AAFC - mov r1, #0 - strb r1, [r2] - sub r0, r2, r0 - pop {r4, r5} - bx lr - thumb_func_end ov18_0222AAE8 - - thumb_func_start ov18_0222AB1C -ov18_0222AB1C: ; 0x0222AB1C - push {r3, r4, r5, r6, r7, lr} - str r0, [sp] - add r6, r1, #0 - add r4, r0, #0 - mov r5, #0 - mov r7, #0x3a -_0222AB28: - mov r1, #0 - ldrsb r1, [r6, r1] - add r0, r4, #0 - add r6, r6, #1 - bl ov18_0222AAE8 - add r0, r4, r0 - add r4, r0, #0 - cmp r5, #5 - bge _0222AB40 - add r4, r0, #1 - strb r7, [r0] -_0222AB40: - add r5, r5, #1 - cmp r5, #6 - blt _0222AB28 - mov r0, #0 - strb r0, [r4] - ldr r0, [sp] - sub r0, r4, r0 - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov18_0222AB1C - - thumb_func_start ov18_0222AB50 -ov18_0222AB50: ; 0x0222AB50 - push {r4, r5, r6, lr} - sub sp, #8 - add r4, r0, #0 - ldr r0, _0222AC20 ; =0x02251D10 - ldr r0, [r0, #0x38] - cmp r0, #1 - blt _0222AB6A - cmp r0, #5 - bgt _0222AB6A - mov r0, #9 - add sp, #8 - mvn r0, r0 - pop {r4, r5, r6, pc} -_0222AB6A: - ldr r5, _0222AC24 ; =0x02249838 - ldr r0, _0222AC20 ; =0x02251D10 - mov r6, #7 - str r1, [r5, #0x10] - str r6, [r0, #0x38] - str r2, [r0, #0x7c] - ldr r2, [sp, #0x18] - str r3, [r0, #4] - str r2, [r0, #0xc] - ldr r0, [sp, #0x1c] - str r0, [r5, #8] - add r0, r1, #0 - bl ov18_02227CBC - mov r2, #1 - ldr r1, _0222AC20 ; =0x02251D10 - cmp r0, #0 - str r2, [r1, #0x74] - bge _0222AB96 - str r0, [r1, #0x78] - add sp, #8 - pop {r4, r5, r6, pc} -_0222AB96: - add r0, r5, #0 - ldr r0, [r0, #8] - ldr r1, [r1, #4] - blx r1 - ldr r1, _0222AC20 ; =0x02251D10 - cmp r0, #0 - str r0, [r1, #0x30] - bne _0222ABB0 - add r0, r6, #0 - sub r0, #8 - str r0, [r1, #0x78] - add sp, #8 - pop {r4, r5, r6, pc} -_0222ABB0: - bl OS_IsThreadAvailable - cmp r0, #1 - beq _0222ABC4 - add r0, r6, #0 - ldr r1, _0222AC20 ; =0x02251D10 - sub r0, #0x10 - str r0, [r1, #0x78] - add sp, #8 - pop {r4, r5, r6, pc} -_0222ABC4: - add r0, r5, #0 - ldr r3, [r0, #8] - ldr r0, _0222AC28 ; =0x02251DBC - str r3, [sp] - str r4, [sp, #4] - ldr r4, _0222AC20 ; =0x02251D10 - ldr r1, _0222AC2C ; =ov18_022290FC - ldr r5, [r4, #0x30] - mov r4, #7 - bic r3, r4 - mov r2, #0 - add r3, r5, r3 - bl OS_CreateThread - ldr r0, _0222AC20 ; =0x02251D10 - mov r1, #1 - str r1, [r0, #0x38] - bl ov18_0222AA98 - ldr r1, _0222AC30 ; =0x0000EA60 - ldr r5, _0222AC34 ; =0x02251E7C - add r1, r0, r1 - ldr r0, _0222AC24 ; =0x02249838 - add r4, r6, #0 - str r1, [r0, #0xc] - mov r0, #0 - ldr r1, _0222AC20 ; =0x02251D10 - add r2, r0, #0 - str r0, [r1, #0x10] - add r1, r0, #0 - add r3, r0, #0 -_0222AC02: - stmia r5!, {r0, r1, r2, r3} - stmia r5!, {r0, r1, r2, r3} - sub r4, r4, #1 - bne _0222AC02 - stmia r5!, {r0, r1} - bl ov18_0222AD18 - ldr r0, _0222AC28 ; =0x02251DBC - bl OS_WakeupThreadDirect - ldr r1, _0222AC20 ; =0x02251D10 - mov r0, #1 - str r0, [r1, #0x64] - add sp, #8 - pop {r4, r5, r6, pc} - ; .align 2, 0 -_0222AC20: .word Unk_ov18_02251D10 -_0222AC24: .word Unk_ov18_02249838 -_0222AC28: .word Unk_ov18_02251DBC -_0222AC2C: .word ov18_022290FC -_0222AC30: .word 0x0000EA60 -_0222AC34: .word Unk_ov18_02251E7C - thumb_func_end ov18_0222AB50 - - thumb_func_start ov18_0222AC38 -ov18_0222AC38: ; 0x0222AC38 - push {r4, r5, r6, lr} - ldr r4, _0222ACC4 ; =0x02251D10 - ldr r0, [r4, #0x64] - cmp r0, #0 - beq _0222ACA8 - ldr r6, [r4, #0x38] - mov r0, #1 - str r0, [r4, #0x10] - mov r5, #0x64 - b _0222AC52 -_0222AC4C: - add r0, r5, #0 - bl OS_Sleep -_0222AC52: - ldr r0, [r4, #0x38] - cmp r0, #1 - blt _0222AC5C - cmp r0, #5 - ble _0222AC4C -_0222AC5C: - mov r0, #0x7d - lsl r0, r0, #2 - bl OS_Sleep - ldr r0, _0222ACC8 ; =0x02251DBC - bl OS_IsThreadTerminated - cmp r0, #0 - bne _0222AC86 - ldr r4, _0222ACC8 ; =0x02251DBC -_0222AC70: - add r0, r4, #0 - bl OS_WakeupThreadDirect - add r0, r4, #0 - bl OS_JoinThread - add r0, r4, #0 - bl OS_IsThreadTerminated - cmp r0, #0 - beq _0222AC70 -_0222AC86: - ldr r1, _0222ACC4 ; =0x02251D10 - ldr r0, [r1, #0x30] - cmp r0, #0 - beq _0222AC98 - ldr r1, [r1, #0xc] - blx r1 - ldr r0, _0222ACC4 ; =0x02251D10 - mov r1, #0 - str r1, [r0, #0x30] -_0222AC98: - ldr r0, _0222ACC4 ; =0x02251D10 - mov r1, #0 - str r1, [r0, #0x64] - ldr r0, [r0, #0x38] - cmp r6, r0 - beq _0222ACA8 - bl ov18_0222AD18 -_0222ACA8: - ldr r0, _0222ACC4 ; =0x02251D10 - ldr r0, [r0, #0x74] - cmp r0, #0 - ble _0222ACBC - bl ov18_02227D60 - ldr r1, _0222ACC4 ; =0x02251D10 - mov r2, #0 - str r2, [r1, #0x74] - pop {r4, r5, r6, pc} -_0222ACBC: - mov r0, #9 - mvn r0, r0 - pop {r4, r5, r6, pc} - nop -_0222ACC4: .word Unk_ov18_02251D10 -_0222ACC8: .word Unk_ov18_02251DBC - thumb_func_end ov18_0222AC38 - - thumb_func_start ov18_0222ACCC -ov18_0222ACCC: ; 0x0222ACCC - push {r4, lr} - add r4, r0, #0 - ldr r0, _0222ACFC ; =0x02251D10 - ldr r0, [r0, #0x38] - str r0, [r4, #0] - ldr r0, _0222AD00 ; =0x02249838 - ldr r1, [r0, #0xc] - mov r0, #0 - mvn r0, r0 - cmp r1, r0 - bne _0222ACE4 - b _0222ACEE -_0222ACE4: - bl ov18_0222AA98 - ldr r1, _0222AD00 ; =0x02249838 - ldr r1, [r1, #0xc] - sub r0, r1, r0 -_0222ACEE: - str r0, [r4, #4] - ldr r0, _0222ACFC ; =0x02251D10 - ldr r0, [r0, #0x78] - str r0, [r4, #8] - mov r0, #1 - pop {r4, pc} - nop -_0222ACFC: .word Unk_ov18_02251D10 -_0222AD00: .word Unk_ov18_02249838 - thumb_func_end ov18_0222ACCC - - thumb_func_start ov18_0222AD04 -ov18_0222AD04: ; 0x0222AD04 - push {r3, lr} - ldr r1, _0222AD14 ; =0x02251E7C - mov r2, #0xe8 - bl memcpy - mov r0, #1 - pop {r3, pc} - nop -_0222AD14: .word Unk_ov18_02251E7C - thumb_func_end ov18_0222AD04 - - thumb_func_start ov18_0222AD18 -ov18_0222AD18: ; 0x0222AD18 - push {lr} - sub sp, #0xc - add r0, sp, #0 - bl ov18_0222ACCC - ldr r1, _0222AD30 ; =0x02251D10 - add r0, sp, #0 - ldr r1, [r1, #0x7c] - blx r1 - add sp, #0xc - pop {pc} - nop -_0222AD30: .word Unk_ov18_02251D10 - thumb_func_end ov18_0222AD18 - - .rodata - - - .global Unk_ov18_0224645C -Unk_ov18_0224645C: ; 0x0224645C - .incbin "incbin/atermset.bin", 0x0, 0x8 - - .global Unk_ov18_02246464 -Unk_ov18_02246464: ; 0x02246464 - .incbin "incbin/atermset.bin", 0x8, 0x30 - 0x8 - - .global Unk_ov18_0224648C -Unk_ov18_0224648C: ; 0x0224648C - .incbin "incbin/atermset.bin", 0x30, 0x430 - 0x30 - - .global Unk_ov18_0224688C -Unk_ov18_0224688C: ; 0x0224688C - .incbin "incbin/atermset.bin", 0x430, 0x830 - 0x430 - - .global Unk_ov18_02246C8C -Unk_ov18_02246C8C: ; 0x02246C8C - .incbin "incbin/atermset.bin", 0x830, 0xC30 - 0x830 - - .global Unk_ov18_0224708C -Unk_ov18_0224708C: ; 0x0224708C - .incbin "incbin/atermset.bin", 0xC30, 0x1030 - 0xC30 - - .global Unk_ov18_0224748C -Unk_ov18_0224748C: ; 0x0224748C - .incbin "incbin/atermset.bin", 0x1030, 0x1430 - 0x1030 - - .global Unk_ov18_0224788C -Unk_ov18_0224788C: ; 0x0224788C - .incbin "incbin/atermset.bin", 0x1430, 0x1830 - 0x1430 - - .global Unk_ov18_02247C8C -Unk_ov18_02247C8C: ; 0x02247C8C - .incbin "incbin/atermset.bin", 0x1830, 0x1C30 - 0x1830 - - .global Unk_ov18_0224808C -Unk_ov18_0224808C: ; 0x0224808C - .incbin "incbin/atermset.bin", 0x1C30, 0x2030 - 0x1C30 - - .global Unk_ov18_0224848C -Unk_ov18_0224848C: ; 0x0224848C - .incbin "incbin/atermset.bin", 0x2030, 0x2430 - 0x2030 - - .global Unk_ov18_0224888C -Unk_ov18_0224888C: ; 0x0224888C - .incbin "incbin/atermset.bin", 0x2430, 0x400 - - - - .data - - - .global Unk_ov18_02249838 -Unk_ov18_02249838: ; 0x02249838 - .word Unk_ov18_02252244 + 0x8 - - .global Unk_ov18_0224983C -Unk_ov18_0224983C: ; 0x0224983C - .word 0x1 - - .global Unk_ov18_02249840 -Unk_ov18_02249840: ; 0x02249840 - .word 0x800 - - .global Unk_ov18_02249844 -Unk_ov18_02249844: ; 0x02249844 - .word 0xFFFFFFFF - - .global Unk_ov18_02249848 -Unk_ov18_02249848: ; 0x02249848 - .word 0x40 - - .global Unk_ov18_0224984C -Unk_ov18_0224984C: ; 0x0224984C - .word 0x01000000 - .word ov18_02227BC8 - .word ov18_02227BF8 - .space 0x4 - .short 0xA8C0 - .short 0xB000 - .word 0xFFFFFF - .short 0xA8C0 - .short 0xC800 - .short 0xA8C0 - .short 0x2000 - .space 0x4 - .word 0x1000 - .word 0x1000 - .space 0x1C - .word Unk_ov18_022498AC - .word 0x4 - .space 0x8 - - .global Unk_ov18_022498A4 -Unk_ov18_022498A4: ; 0x022498A4 - .ascii "******" - .space 0x2 - - .global Unk_ov18_022498AC -Unk_ov18_022498AC: ; 0x022498AC - .asciz "NINTENDO-DS" - - .global Unk_ov18_022498B8 -Unk_ov18_022498B8: ; 0x022498B8 - .word 0x80 - .space 0x3C - - .global Unk_ov18_022498F8 -Unk_ov18_022498F8: ; 0x022498F8 - .asciz "WARP" - - - - .bss - - - .global Unk_ov18_02251D10 -Unk_ov18_02251D10: ; 0x02251D10 - .space 0x4 - - .global Unk_ov18_02251D14 -Unk_ov18_02251D14: ; 0x02251D14 - .space 0x4 - - .global Unk_ov18_02251D18 -Unk_ov18_02251D18: ; 0x02251D18 - .space 0x4 - - .global Unk_ov18_02251D1C -Unk_ov18_02251D1C: ; 0x02251D1C - .space 0x4 - - .global Unk_ov18_02251D20 -Unk_ov18_02251D20: ; 0x02251D20 - .space 0x4 - - .global Unk_ov18_02251D24 -Unk_ov18_02251D24: ; 0x02251D24 - .space 0x4 - - .global Unk_ov18_02251D28 -Unk_ov18_02251D28: ; 0x02251D28 - .space 0x4 - - .global Unk_ov18_02251D2C -Unk_ov18_02251D2C: ; 0x02251D2C - .space 0x4 - - .global Unk_ov18_02251D30 -Unk_ov18_02251D30: ; 0x02251D30 - .space 0x4 - - .global Unk_ov18_02251D34 -Unk_ov18_02251D34: ; 0x02251D34 - .space 0x4 - - .global Unk_ov18_02251D38 -Unk_ov18_02251D38: ; 0x02251D38 - .space 0x4 - - .global Unk_ov18_02251D3C -Unk_ov18_02251D3C: ; 0x02251D3C - .space 0x4 - - .global Unk_ov18_02251D40 -Unk_ov18_02251D40: ; 0x02251D40 - .space 0x4 - - .global Unk_ov18_02251D44 -Unk_ov18_02251D44: ; 0x02251D44 - .space 0x4 - - .global Unk_ov18_02251D48 -Unk_ov18_02251D48: ; 0x02251D48 - .space 0x4 - - .global Unk_ov18_02251D4C -Unk_ov18_02251D4C: ; 0x02251D4C - .space 0x4 - - .global Unk_ov18_02251D50 -Unk_ov18_02251D50: ; 0x02251D50 - .space 0x4 - - .global Unk_ov18_02251D54 -Unk_ov18_02251D54: ; 0x02251D54 - .space 0x4 - - .global Unk_ov18_02251D58 -Unk_ov18_02251D58: ; 0x02251D58 - .space 0x4 - - .global Unk_ov18_02251D5C -Unk_ov18_02251D5C: ; 0x02251D5C - .space 0x4 - - .global Unk_ov18_02251D60 -Unk_ov18_02251D60: ; 0x02251D60 - .space 0x4 - - .global Unk_ov18_02251D64 -Unk_ov18_02251D64: ; 0x02251D64 - .space 0x4 - - .global Unk_ov18_02251D68 -Unk_ov18_02251D68: ; 0x02251D68 - .space 0x4 - - .global Unk_ov18_02251D6C -Unk_ov18_02251D6C: ; 0x02251D6C - .space 0x4 - - .global Unk_ov18_02251D70 -Unk_ov18_02251D70: ; 0x02251D70 - .space 0x4 - - .global Unk_ov18_02251D74 -Unk_ov18_02251D74: ; 0x02251D74 - .space 0x4 - - .global Unk_ov18_02251D78 -Unk_ov18_02251D78: ; 0x02251D78 - .space 0x4 - - .global Unk_ov18_02251D7C -Unk_ov18_02251D7C: ; 0x02251D7C - .space 0x4 - - .global Unk_ov18_02251D80 -Unk_ov18_02251D80: ; 0x02251D80 - .space 0x4 - - .global Unk_ov18_02251D84 -Unk_ov18_02251D84: ; 0x02251D84 - .space 0x4 - - .global Unk_ov18_02251D88 -Unk_ov18_02251D88: ; 0x02251D88 - .space 0x4 - - .global Unk_ov18_02251D8C -Unk_ov18_02251D8C: ; 0x02251D8C - .space 0x4 - - .global Unk_ov18_02251D90 -Unk_ov18_02251D90: ; 0x02251D90 - .space 0x4 - - .global Unk_ov18_02251D94 -Unk_ov18_02251D94: ; 0x02251D94 - .space 0x10 - - .global Unk_ov18_02251DA4 -Unk_ov18_02251DA4: ; 0x02251DA4 - .space 0x18 - - .global Unk_ov18_02251DBC -Unk_ov18_02251DBC: ; 0x02251DBC - .space 0xC0 - - .global Unk_ov18_02251E7C -Unk_ov18_02251E7C: ; 0x02251E7C - .space 0xE8 - - .global Unk_ov18_02251F64 -Unk_ov18_02251F64: ; 0x02251F64 - .space 0x254 - - .global Unk_ov18_022521B8 -Unk_ov18_022521B8: ; 0x022521B8 - .space 0x8 - - .global Unk_ov18_022521C0 -Unk_ov18_022521C0: ; 0x022521C0 - .space 0x8 - - .global Unk_ov18_022521C8 -Unk_ov18_022521C8: ; 0x022521C8 - .space 0x8 - - .global Unk_ov18_022521D0 -Unk_ov18_022521D0: ; 0x022521D0 - .space 0x10 - - .global Unk_ov18_022521E0 -Unk_ov18_022521E0: ; 0x022521E0 - .space 0x20 - - .global Unk_ov18_02252200 -Unk_ov18_02252200: ; 0x02252200 - .space 0x20 - - .global Unk_ov18_02252220 -Unk_ov18_02252220: ; 0x02252220 - .space 0x24 - - .global Unk_ov18_02252244 -Unk_ov18_02252244: ; 0x02252244 - .space 0x800 - - .global Unk_ov18_02252A44 -Unk_ov18_02252A44: ; 0x02252A44 - .space 0x800 diff --git a/subprojects/NitroDWC/libraries/util/asm/button.s b/subprojects/NitroDWC/libraries/util/asm/button.s deleted file mode 100644 index f0b745bc06..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/button.s +++ /dev/null @@ -1,543 +0,0 @@ - .include "macros/function.inc" - .include "include/button.inc" - - - - .text - - - arm_func_start ov18_0222AF0C -ov18_0222AF0C: ; 0x0222AF0C - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r2, _0222AFF4 ; =0x02248CBC - mov r5, r0 - mov r0, #0x1c - mov r1, #4 - ldrb r8, [r2, r5] - bl ov18_02245068 - ldr r4, _0222AFF8 ; =0x02253248 - mvn r7, #1 - str r0, [r4, #0] - strb r7, [r0, #0x16] - ldr r0, [r4, #0] - cmp r8, #0 - strb r5, [r0, #0x17] - mov sb, #0 - ble _0222AF98 - ldr r0, _0222AFFC ; =0x02248CA0 - mov r6, sb - add sl, r0, r5, lsl #1 - mov r5, #1 - mov fp, r5 -_0222AF60: - ldrb r1, [sl], #1 - mov r0, r6 - mov r2, r5 - bl ov18_02243F8C - ldr r1, [r4, #0] - mov r2, fp - str r0, [r1, sb, lsl #2] - ldr r0, [r4, #0] - add r1, r7, #1 - ldr r0, [r0, sb, lsl #2] - bl ov18_02243DE4 - add sb, sb, #1 - cmp sb, r8 - blt _0222AF60 -_0222AF98: - mov r1, #1 - mov r2, r1 - mov r0, #0 - bl ov18_02243F8C - ldr r3, _0222AFF8 ; =0x02253248 - mvn r1, #0 - ldr r4, [r3, #0] - mov r2, #1 - str r0, [r4, #8] - ldr r0, [r3, #0] - ldr r0, [r0, #8] - bl ov18_02243DE4 - mov r0, #0xc0 - bl ov18_0222B0D8 - mov r0, #0 - ldr r1, _0222B000 ; =ov18_0222B16C - mov r2, r0 - mov r3, #0x78 - bl ov18_02246304 - ldr r1, _0222AFF8 ; =0x02253248 - ldr r1, [r1, #0] - str r0, [r1, #0xc] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0222AFF4: .word Unk_ov18_02248CBC -_0222AFF8: .word Unk_ov18_02253248 -_0222AFFC: .word Unk_ov18_02248CA0 -_0222B000: .word ov18_0222B16C - arm_func_end ov18_0222AF0C - - arm_func_start ov18_0222B004 -ov18_0222B004: ; 0x0222B004 - ldr r0, _0222B028 ; =0x02253248 - mov r3, #1 - ldr r2, [r0, #0] - ldr ip, _0222B02C ; =ov18_022463A4 - strb r3, [r2, #0x19] - ldr r0, [r0, #0] - ldr r1, _0222B030 ; =ov18_0222B3B4 - ldr r0, [r0, #0xc] - bx ip - ; .align 2, 0 -_0222B028: .word Unk_ov18_02253248 -_0222B02C: .word ov18_022463A4 -_0222B030: .word ov18_0222B3B4 - arm_func_end ov18_0222B004 - - arm_func_start ov18_0222B034 -ov18_0222B034: ; 0x0222B034 - ldr r0, _0222B044 ; =0x02253248 - ldr r0, [r0, #0] - ldrsb r0, [r0, #0x16] - bx lr - ; .align 2, 0 -_0222B044: .word Unk_ov18_02253248 - arm_func_end ov18_0222B034 - - arm_func_start ov18_0222B048 -ov18_0222B048: ; 0x0222B048 - ldr r2, _0222B064 ; =0x02253248 - mvn r1, #0 - ldr r3, [r2, #0] - ldrsb r2, [r3, #0x16] - cmp r2, r1 - streqb r0, [r3, #0x16] - bx lr - ; .align 2, 0 -_0222B064: .word Unk_ov18_02253248 - arm_func_end ov18_0222B048 - - arm_func_start ov18_0222B068 -ov18_0222B068: ; 0x0222B068 - ldr r1, _0222B078 ; =0x02253248 - ldr r1, [r1, #0] - strb r0, [r1, #0x16] - bx lr - ; .align 2, 0 -_0222B078: .word Unk_ov18_02253248 - arm_func_end ov18_0222B068 - - arm_func_start ov18_0222B07C -ov18_0222B07C: ; 0x0222B07C - ldr r0, _0222B0A4 ; =0x02253248 - ldr r0, [r0, #0] - cmp r0, #0 - moveq r0, #1 - bxeq lr - ldrb r0, [r0, #0x19] - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - bx lr - ; .align 2, 0 -_0222B0A4: .word Unk_ov18_02253248 - arm_func_end ov18_0222B07C - - arm_func_start ov18_0222B0A8 -ov18_0222B0A8: ; 0x0222B0A8 - ldr r0, _0222B0BC ; =0x02253248 - mov r1, #0 - ldr r0, [r0, #0] - strb r1, [r0, #0x18] - bx lr - ; .align 2, 0 -_0222B0BC: .word Unk_ov18_02253248 - arm_func_end ov18_0222B0A8 - - arm_func_start ov18_0222B0C0 -ov18_0222B0C0: ; 0x0222B0C0 - ldr r0, _0222B0D4 ; =0x02253248 - mov r1, #1 - ldr r0, [r0, #0] - strb r1, [r0, #0x18] - bx lr - ; .align 2, 0 -_0222B0D4: .word Unk_ov18_02253248 - arm_func_end ov18_0222B0C0 - - arm_func_start ov18_0222B0D8 -ov18_0222B0D8: ; 0x0222B0D8 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - ldr r1, _0222B15C ; =0x02253248 - mov r8, r0 - ldr r0, [r1, #0] - ldr r1, _0222B160 ; =0x02248CBC - ldrb r2, [r0, #0x17] - ldr r0, [r0, #8] - mov r3, r8 - ldrb r6, [r1, r2] - mvn r1, #0 - mov r2, #0 - bl ov18_02243CF4 - mov r7, #0 - cmp r6, #0 - ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldr r4, _0222B164 ; =0x02248CAE - ldr sl, _0222B168 ; =0x02248C98 - ldr sb, _0222B15C ; =0x02253248 - mvn r5, #0 -_0222B124: - ldr r0, [sb] - mov r1, r5 - ldrb r2, [r0, #0x17] - ldr r0, [r0, r7, lsl #2] - add r3, r8, #4 - add r2, r4, r2, lsl #1 - ldrb r2, [r7, r2] - mov r2, r2, lsl #2 - ldrh r2, [sl, r2] - bl ov18_02243CF4 - add r7, r7, #1 - cmp r7, r6 - blt _0222B124 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ; .align 2, 0 -_0222B15C: .word Unk_ov18_02253248 -_0222B160: .word Unk_ov18_02248CBC -_0222B164: .word Unk_ov18_02248CAE -_0222B168: .word Unk_ov18_02248C98 - arm_func_end ov18_0222B0D8 - - arm_func_start ov18_0222B16C -ov18_0222B16C: ; 0x0222B16C - stmfd sp!, {r4, lr} - sub sp, sp, #8 - ldr r1, _0222B1D0 ; =0x02253248 - mov r4, r0 - ldr r0, [r1, #0] - add r2, sp, #4 - ldr r0, [r0, #8] - add r3, sp, #0 - mov r1, #0 - bl ov18_02243E44 - ldr r0, [sp] - sub r0, r0, #4 - str r0, [sp] - bl ov18_0222B0D8 - ldr r0, [sp] - cmp r0, #0xa8 - addgt sp, sp, #8 - ldmgtia sp!, {r4, pc} - mov r0, #0xa8 - bl ov18_0222B0D8 - ldr r1, _0222B1D4 ; =ov18_0222B1D8 - mov r0, r4 - bl ov18_022463A4 - add sp, sp, #8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0222B1D0: .word Unk_ov18_02253248 -_0222B1D4: .word ov18_0222B1D8 - arm_func_end ov18_0222B16C - - arm_func_start ov18_0222B1D8 -ov18_0222B1D8: ; 0x0222B1D8 - stmfd sp!, {r3, lr} - ldr r1, _0222B220 ; =0x02253248 - mvn r3, #0 - ldr r2, [r1, #0] - strb r3, [r2, #0x16] - ldr r3, [r1, #0] - ldrh r2, [r3, #0x14] - add r2, r2, #1 - strh r2, [r3, #0x14] - ldr r3, [r1, #0] - ldrh r1, [r3, #0x14] - cmp r1, #4 - ldmloia sp!, {r3, pc} - ldr r1, _0222B224 ; =ov18_0222B228 - mov r2, #0 - strh r2, [r3, #0x14] - bl ov18_022463A4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222B220: .word Unk_ov18_02253248 -_0222B224: .word ov18_0222B228 - arm_func_end ov18_0222B1D8 - - arm_func_start ov18_0222B228 -ov18_0222B228: ; 0x0222B228 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #8 - ldr r8, _0222B394 ; =0x02253248 - ldr r1, _0222B398 ; =0x02248CBC - ldr r3, [r8] - ldrb r2, [r3, #0x17] - ldrb r0, [r3, #0x18] - ldrb r6, [r1, r2] - cmp r0, #0 - bne _0222B37C - ldrsb r1, [r3, #0x16] - mvn r0, #0 - cmp r1, r0 - addne sp, sp, #8 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - cmp r6, #0 - mov r7, #0 - ble _0222B37C - ldr r5, _0222B39C ; =0x02248C98 - ldr r4, _0222B3A0 ; =0x02248CAE - ldr sl, _0222B3A4 ; =0x02248C94 - add sb, sp, #0 -_0222B280: - ldr r0, [r8] - mov r1, sl - ldrb r0, [r0, #0x17] - mov r2, sb - add r0, r4, r0, lsl #1 - ldrb r0, [r7, r0] - add r0, r5, r0, lsl #2 - bl ov18_02244C50 - mov r0, sb - bl ov18_022455B8 - cmp r0, #0 - beq _0222B370 - ldr r0, _0222B394 ; =0x02253248 - ldr r3, [r0, #0] - ldr r0, [r3, #0x10] - cmp r0, #0 - bne _0222B37C - ldrb r2, [r3, #0x17] - ldr r1, _0222B3A8 ; =0x02248CA0 - ldr r0, [r3, r7, lsl #2] - add r1, r1, r2, lsl #1 - ldrb r4, [r7, r1] - mov r1, #0 - bl ov18_02243BBC - mov r2, r0 - add r1, r4, #1 - mov r0, #0 - bl ov18_02243ECC - ldr r0, _0222B394 ; =0x02253248 - ldr r1, _0222B3A0 ; =0x02248CAE - ldr r0, [r0, #0] - ldr r2, _0222B39C ; =0x02248C98 - ldrb r4, [r0, #0x17] - ldr r3, _0222B3AC ; =0x02248C9A - ldr r0, [r0, r7, lsl #2] - add r1, r1, r4, lsl #1 - ldrb r4, [r7, r1] - mvn r1, #0 - mov r4, r4, lsl #2 - ldrh r2, [r2, r4] - ldrh r3, [r3, r4] - bl ov18_02243CF4 - ldr r0, _0222B394 ; =0x02253248 - mvn r1, #0 - ldr r0, [r0, #0] - mov r2, #1 - ldr r0, [r0, r7, lsl #2] - bl ov18_02243DE4 - mov r0, #0 - ldr r1, _0222B3B0 ; =ov18_0222B490 - mov r2, r0 - mov r3, #0x6e - bl ov18_02246304 - ldr r1, _0222B394 ; =0x02253248 - add sp, sp, #8 - ldr r2, [r1, #0] - str r0, [r2, #0x10] - ldr r0, [r1, #0] - strb r7, [r0, #0x16] - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_0222B370: - add r7, r7, #1 - cmp r7, r6 - blt _0222B280 -_0222B37C: - ldr r0, _0222B394 ; =0x02253248 - mvn r1, #0 - ldr r0, [r0, #0] - strb r1, [r0, #0x16] - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ; .align 2, 0 -_0222B394: .word Unk_ov18_02253248 -_0222B398: .word Unk_ov18_02248CBC -_0222B39C: .word Unk_ov18_02248C98 -_0222B3A0: .word Unk_ov18_02248CAE -_0222B3A4: .word Unk_ov18_02248C94 -_0222B3A8: .word Unk_ov18_02248CA0 -_0222B3AC: .word 0x02248C9A -_0222B3B0: .word ov18_0222B490 - arm_func_end ov18_0222B228 - - arm_func_start ov18_0222B3B4 -ov18_0222B3B4: ; 0x0222B3B4 - stmfd sp!, {r4, lr} - sub sp, sp, #8 - ldr r1, _0222B410 ; =0x02253248 - mov r4, r0 - ldr r0, [r1, #0] - add r2, sp, #4 - ldr r0, [r0, #8] - add r3, sp, #0 - mov r1, #0 - bl ov18_02243E44 - ldr r0, [sp] - add r0, r0, #4 - str r0, [sp] - bl ov18_0222B0D8 - ldr r0, [sp] - cmp r0, #0xc0 - addlt sp, sp, #8 - ldmltia sp!, {r4, pc} - ldr r1, _0222B414 ; =ov18_0222B418 - mov r0, r4 - bl ov18_022463A4 - add sp, sp, #8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0222B410: .word Unk_ov18_02253248 -_0222B414: .word ov18_0222B418 - arm_func_end ov18_0222B3B4 - - arm_func_start ov18_0222B418 -ov18_0222B418: ; 0x0222B418 - stmfd sp!, {r3, r4, r5, lr} - mov r1, r0 - mov r0, #0 - bl ov18_022463AC - ldr r0, _0222B488 ; =0x02253248 - ldr r0, [r0, #0] - ldr r1, [r0, #0x10] - cmp r1, #0 - beq _0222B444 - mov r0, #0 - bl ov18_022463AC -_0222B444: - ldr r4, _0222B488 ; =0x02253248 - mov r5, #0 -_0222B44C: - ldr r0, [r4, #0] - ldr r0, [r0, r5, lsl #2] - cmp r0, #0 - beq _0222B460 - bl ov18_02243B3C -_0222B460: - add r5, r5, #1 - cmp r5, #2 - blt _0222B44C - ldr r0, _0222B488 ; =0x02253248 - ldr r0, [r0, #0] - ldr r0, [r0, #8] - bl ov18_02243B3C - ldr r0, _0222B48C ; =0x02253248 - bl ov18_0224508C - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0222B488: .word Unk_ov18_02253248 -_0222B48C: .word Unk_ov18_02253248 - arm_func_end ov18_0222B418 - - arm_func_start ov18_0222B490 -ov18_0222B490: ; 0x0222B490 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r4, _0222B574 ; =0x02253248 - str r0, [sp] - ldr r1, [r4, #0] - ldrh r0, [r1, #0x14] - add r0, r0, #1 - strh r0, [r1, #0x14] - ldr r1, [r4, #0] - ldrh r0, [r1, #0x14] - cmp r0, #0x10 - ldmloia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrb r1, [r1, #0x17] - ldr r0, _0222B578 ; =0x02248CBC - mov sb, #0 - ldrb r8, [r0, r1] - cmp r8, #0 - ble _0222B530 - ldr r7, _0222B57C ; =0x02248CA0 - mov r6, sb - mov fp, sb - mvn r5, #0 -_0222B4E4: - ldr r0, [r4, #0] - mov r1, r6 - ldrb r2, [r0, #0x17] - ldr r0, [r0, sb, lsl #2] - add r2, r7, r2, lsl #1 - ldrb sl, [sb, r2] - bl ov18_02243BBC - mov r2, r0 - mov r1, sl - mov r0, fp - bl ov18_02243ECC - ldr r0, [r4, #0] - mov r1, r5 - ldr r0, [r0, sb, lsl #2] - mov r2, #1 - bl ov18_02243DE4 - add sb, sb, #1 - cmp sb, r8 - blt _0222B4E4 -_0222B530: - mov r0, #0xa8 - bl ov18_0222B0D8 - ldr r1, _0222B574 ; =0x02253248 - mov r0, #0 - ldr r2, [r1, #0] - sub r3, r0, #1 - strh r0, [r2, #0x14] - ldr r2, [r1, #0] - strb r3, [r2, #0x16] - ldr r2, [r1, #0] - ldr r1, [r2, #0x10] - cmp r1, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [sp] - str r0, [r2, #0x10] - bl ov18_022463AC - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0222B574: .word Unk_ov18_02253248 -_0222B578: .word Unk_ov18_02248CBC -_0222B57C: .word Unk_ov18_02248CA0 - arm_func_end ov18_0222B490 - - .rodata - - - .global Unk_ov18_02248C90 -Unk_ov18_02248C90: ; 0x02248C90 - .incbin "incbin/button.bin", 0x0, 0x4 - - .global Unk_ov18_02248C94 -Unk_ov18_02248C94: ; 0x02248C94 - .incbin "incbin/button.bin", 0x4, 0x8 - 0x4 - - .global Unk_ov18_02248C98 -Unk_ov18_02248C98: ; 0x02248C98 - .incbin "incbin/button.bin", 0x8, 0x10 - 0x8 - - .global Unk_ov18_02248CA0 -Unk_ov18_02248CA0: ; 0x02248CA0 - .incbin "incbin/button.bin", 0x10, 0x1E - 0x10 - - .global Unk_ov18_02248CAE -Unk_ov18_02248CAE: ; 0x02248CAE - .incbin "incbin/button.bin", 0x1E, 0x2C - 0x1E - - .global Unk_ov18_02248CBC -Unk_ov18_02248CBC: ; 0x02248CBC - .incbin "incbin/button.bin", 0x2C, 0x8 - - - - .bss - - - .global Unk_ov18_02253248 -Unk_ov18_02253248: ; 0x02253248 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/cell.s b/subprojects/NitroDWC/libraries/util/asm/cell.s deleted file mode 100644 index 5161199fd9..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/cell.s +++ /dev/null @@ -1,456 +0,0 @@ - .include "macros/function.inc" - .include "include/cell.inc" - - - - .text - - - arm_func_start ov18_022438B8 -ov18_022438B8: ; 0x022438B8 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov r0, #0x450 - mov r1, #4 - bl ov18_02245068 - ldr sl, _02243988 ; =0x022533B0 - mov r8, #0 - mov sb, r8 - str r0, [sl] - mov r7, #0x20 - mov r6, #0x10 - mov r5, #0x40 - mov r4, #0x7f -_022438E8: - ldr r1, [sl] - mov r0, r7 - mov r2, r6 - add r1, r1, sb - bl ov18_02244008 - ldr r1, [sl] - add r1, r1, sb - str r0, [r1, #0x224] - bl ov18_02245974 - ldr r2, [sl] - mov r1, r5 - add r2, r2, sb - str r0, [r2, #0x220] - mov r0, r8 - bl ov18_02245BC0 - ldr r2, [sl] - mov r1, r4 - add r2, r2, sb - str r0, [r2, #0x208] - mov r0, r8 - bl ov18_02245BC0 - add r1, r0, #8 - ldr r0, [sl] - add r0, r0, sb - str r1, [r0, #0x218] - ldr r0, [sl] - add r1, r0, sb - ldr r0, [r1, #0x220] - add r1, r1, #0x200 - bl ov18_02245A34 - ldr r0, [sl] - add r1, r0, sb - ldr r0, [r1, #0x220] - add r1, r1, #0x210 - bl ov18_02245A24 - add sb, sb, #0x228 - add r8, r8, #1 - cmp r8, #2 - blt _022438E8 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ; .align 2, 0 -_02243988: .word Unk_ov18_022533B0 - arm_func_end ov18_022438B8 - - arm_func_start ov18_0224398C -ov18_0224398C: ; 0x0224398C - stmfd sp!, {r4, r5, r6, lr} - mov r5, #0 - ldr r4, _022439D8 ; =0x022533B0 - mov r6, r5 -_0224399C: - ldr r0, [r4, #0] - add r0, r0, r6 - ldr r0, [r0, #0x220] - bl ov18_022459A0 - ldr r0, [r4, #0] - add r0, r0, r6 - ldr r0, [r0, #0x224] - bl ov18_02244048 - add r5, r5, #1 - cmp r5, #2 - add r6, r6, #0x228 - blt _0224399C - ldr r0, _022439DC ; =0x022533B0 - bl ov18_0224508C - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_022439D8: .word Unk_ov18_022533B0 -_022439DC: .word Unk_ov18_022533B0 - arm_func_end ov18_0224398C - - arm_func_start ov18_022439E0 -ov18_022439E0: ; 0x022439E0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov sb, r0 - mov r0, #0x228 - mul r7, sb, r0 - ldr r0, _02243B38 ; =0x022533B0 - mov r8, r1 - ldr r0, [r0, #0] - mov r5, r2 - add r0, r0, r7 - ldr r0, [r0, #0x224] - bl ov18_022440BC - mov r4, r0 - mov r0, #1 - bl OS_DisableIrqMask - mov r6, r0 - cmp r5, #0 - mov r0, #0x228 - beq _02243AA4 - ldr r1, _02243B38 ; =0x022533B0 - ldr r1, [r1, #0] - mla r0, sb, r0, r1 - add r5, r0, #0x200 - add r0, r0, #0x210 - cmp r5, r0 - beq _02243A84 - add r0, r1, r7 - add r1, r0, #0x210 -_02243A4C: - ldrb r3, [r5, #0xc] - ldmib r5, {r0, sb} - add sb, sb, r3, lsl #3 - ldr r2, [r0, #8] - add r3, sb, r8, lsl #3 - cmp r3, r2 - bhi _02243A78 - mov r1, r4 - str sb, [r4, #8] - bl ov18_022459F4 - b _02243A84 -_02243A78: - mov r5, r0 - cmp r0, r1 - bne _02243A4C -_02243A84: - ldr r0, _02243B38 ; =0x022533B0 - ldr r0, [r0, #0] - add r0, r0, r7 - add r0, r0, #0x210 - cmp r5, r0 - bne _02243B24 - bl OS_Terminate - b _02243B24 -_02243AA4: - ldr r1, _02243B38 ; =0x022533B0 - ldr r1, [r1, #0] - mla r0, sb, r0, r1 - add r5, r0, #0x210 - add r0, r0, #0x200 - cmp r5, r0 - beq _02243B08 - add r0, r1, r7 - add r0, r0, #0x200 -_02243AC8: - ldr sb, [r5] - ldr r3, [r5, #8] - ldrb r1, [sb, #0xc] - ldr r2, [sb, #8] - sub r3, r3, r8, lsl #3 - add r1, r2, r1, lsl #3 - cmp r3, r1 - blo _02243AFC - mov r0, r5 - mov r1, r4 - str r3, [r4, #8] - bl ov18_022459F4 - b _02243B08 -_02243AFC: - mov r5, sb - cmp sb, r0 - bne _02243AC8 -_02243B08: - ldr r0, _02243B38 ; =0x022533B0 - ldr r0, [r0, #0] - add r0, r0, r7 - add r0, r0, #0x200 - cmp r5, r0 - bne _02243B24 - bl OS_Terminate -_02243B24: - mov r0, r6 - bl OS_EnableIrqMask - mov r0, r4 - strb r8, [r4, #0xc] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ; .align 2, 0 -_02243B38: .word Unk_ov18_022533B0 - arm_func_end ov18_022439E0 - - arm_func_start ov18_02243B3C -ov18_02243B3C: ; 0x02243B3C - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - ldrb r0, [r5, #0xc] - mov r4, #0 - mov r3, r4 - cmp r0, #0 - ldr r2, [r5, #8] - ble _02243B80 - ldr r0, _02243BB4 ; =0xC1FFFCFF -_02243B60: - ldr r1, [r2, #0] - add r3, r3, #1 - and r1, r1, r0 - orr r1, r1, #0x200 - str r1, [r2, #0], #8 - ldrb r1, [r5, #0xc] - cmp r3, r1 - blt _02243B60 -_02243B80: - mov r0, r5 - bl ov18_022459BC - ldr r0, _02243BB8 ; =0x022533B0 - ldr r1, [r0, #0] - add r0, r1, #0x228 - cmp r5, r0 - movhs r4, #1 - mov r0, #0x228 - mla r0, r4, r0, r1 - ldr r0, [r0, #0x224] - mov r1, r5 - bl ov18_02244064 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02243BB4: .word 0xC1FFFCFF -_02243BB8: .word Unk_ov18_022533B0 - arm_func_end ov18_02243B3C - - arm_func_start ov18_02243BBC -ov18_02243BBC: ; 0x02243BBC - ldr r0, [r0, #8] - add r0, r0, r1, lsl #3 - bx lr - arm_func_end ov18_02243BBC - - arm_func_start ov18_02243BC8 -ov18_02243BC8: ; 0x02243BC8 - ldrb r0, [r0, #0xc] - bx lr - arm_func_end ov18_02243BC8 - - arm_func_start ov18_02243BD0 -ov18_02243BD0: ; 0x02243BD0 - stmfd sp!, {r4, lr} - cmp r1, #0 - ldr ip, [r0, #8] - blt _02243C1C - cmp r2, #0x100 - cmpne r2, #0x300 - ldr r0, _02243C70 ; =0xC1FFFCFF - beq _02243C04 - ldr r3, [ip, r1, lsl #3] - and r0, r3, r0 - orr r0, r0, r2 - str r0, [ip, r1, lsl #3] - ldmia sp!, {r4, pc} -_02243C04: - ldr r4, [ip, r1, lsl #3] - and r0, r4, r0 - orr r0, r0, r2 - orr r0, r0, r3, lsl #25 - str r0, [ip, r1, lsl #3] - ldmia sp!, {r4, pc} -_02243C1C: - ldrb r4, [r0, #0xc] - mov r1, #0 - cmp r4, #0 - ldmleia sp!, {r4, pc} - ldr lr, _02243C70 ; =0xC1FFFCFF -_02243C30: - cmp r2, #0x100 - cmpne r2, #0x300 - ldr r4, [ip, r1, lsl #3] - beq _02243C4C - and r4, r4, lr - orr r4, r4, r2 - b _02243C58 -_02243C4C: - and r4, r4, lr - orr r4, r4, r2 - orr r4, r4, r3, lsl #25 -_02243C58: - str r4, [ip, r1, lsl #3] - ldrb r4, [r0, #0xc] - add r1, r1, #1 - cmp r1, r4 - blt _02243C30 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02243C70: .word 0xC1FFFCFF - arm_func_end ov18_02243BD0 - - arm_func_start ov18_02243C74 -ov18_02243C74: ; 0x02243C74 - stmfd sp!, {r4, lr} - cmp r1, #0 - ldr ip, [r0, #8] - blt _02243CAC - ldr r0, [ip, r1, lsl #3] - add lr, ip, r1, lsl #3 - bic r0, r0, #0xc00 - orr r0, r0, r2, lsl #10 - str r0, [ip, r1, lsl #3] - ldrh r0, [lr, #4] - bic r0, r0, #0xf000 - orr r0, r0, r3, lsl #12 - strh r0, [lr, #4] - ldmia sp!, {r4, pc} -_02243CAC: - ldrb r1, [r0, #0xc] - mov r4, #0 - cmp r1, #0 - ldmleia sp!, {r4, pc} -_02243CBC: - ldr r1, [ip, r4, lsl #3] - add lr, ip, r4, lsl #3 - bic r1, r1, #0xc00 - orr r1, r1, r2, lsl #10 - str r1, [ip, r4, lsl #3] - ldrh r1, [lr, #4] - add r4, r4, #1 - bic r1, r1, #0xf000 - orr r1, r1, r3, lsl #12 - strh r1, [lr, #4] - ldrb r1, [r0, #0xc] - cmp r4, r1 - blt _02243CBC - ldmia sp!, {r4, pc} - arm_func_end ov18_02243C74 - - arm_func_start ov18_02243CF4 -ov18_02243CF4: ; 0x02243CF4 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x10 - cmp r1, #0 - ldr r5, [r0, #8] - blt _02243D30 - ldr r4, [r5, r1, lsl #3] - ldr r0, _02243DDC ; =0xFE00FF00 - and r3, r3, #0xff - and r0, r4, r0 - mov r2, r2, lsl #0x17 - orr r0, r0, r3 - orr r0, r0, r2, lsr #7 - add sp, sp, #0x10 - str r0, [r5, r1, lsl #3] - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_02243D30: - ldr r1, [r5, #0] - ldr ip, _02243DDC ; =0xFE00FF00 - and r6, r3, #0xff - and r7, r1, ip - mov sb, r1 - ldr r1, _02243DE0 ; =0x01FF0000 - mov r8, r2, lsl #0x17 - orr r6, r7, r6 - orr r6, r6, r8, lsr #7 - str r6, [r5, #0] - ldrb r6, [r0, #0xc] - and r4, sb, r1 - and lr, sb, #0xff - mov r7, r4, lsr #0x10 - str r7, [sp, #0xc] - cmp r6, #1 - str lr, [sp, #8] - sub r6, r2, r4, lsr #16 - sub r7, r3, lr - mov r4, #1 - addle sp, sp, #0x10 - ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_02243D88: - ldr r2, [r5, r4, lsl #3] - and r3, r2, #0xff - mov sb, r2 - and lr, r2, r1 - add r8, r3, r7 - add r2, r6, lr, lsr #16 - and sb, sb, ip - and r8, r8, #0xff - mov sl, r2, lsl #0x17 - orr r2, sb, r8 - orr r2, r2, sl, lsr #7 - str r2, [r5, r4, lsl #3] - ldrb r2, [r0, #0xc] - add r4, r4, #1 - mov r8, lr, lsr #0x10 - cmp r4, r2 - blt _02243D88 - str r3, [sp] - str r8, [sp, #4] - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ; .align 2, 0 -_02243DDC: .word 0xFE00FF00 -_02243DE0: .word 0x01FF0000 - arm_func_end ov18_02243CF4 - - arm_func_start ov18_02243DE4 -ov18_02243DE4: ; 0x02243DE4 - stmfd sp!, {r3, lr} - cmp r1, #0 - ldr ip, [r0, #8] - blt _02243E0C - add r1, ip, r1, lsl #3 - ldrh r0, [r1, #4] - bic r0, r0, #0xc00 - orr r0, r0, r2, lsl #10 - strh r0, [r1, #4] - ldmia sp!, {r3, pc} -_02243E0C: - ldrb r1, [r0, #0xc] - mov lr, #0 - cmp r1, #0 - ldmleia sp!, {r3, pc} -_02243E1C: - add r3, ip, lr, lsl #3 - ldrh r1, [r3, #4] - add lr, lr, #1 - bic r1, r1, #0xc00 - orr r1, r1, r2, lsl #10 - strh r1, [r3, #4] - ldrb r1, [r0, #0xc] - cmp lr, r1 - blt _02243E1C - ldmia sp!, {r3, pc} - arm_func_end ov18_02243DE4 - - arm_func_start ov18_02243E44 -ov18_02243E44: ; 0x02243E44 - stmfd sp!, {r3, lr} - ldr lr, [r0, #8] - ldr r0, _02243E70 ; =0x01FF0000 - ldr ip, [lr, r1, lsl #3] - and r0, ip, r0 - mov r0, r0, lsr #0x10 - str r0, [r2, #0] - ldr r0, [lr, r1, lsl #3] - and r0, r0, #0xff - str r0, [r3, #0] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02243E70: .word 0x01FF0000 - arm_func_end ov18_02243E44 - - .bss - - - .global Unk_ov18_022533B0 -Unk_ov18_022533B0: ; 0x022533B0 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/cellinfo.s b/subprojects/NitroDWC/libraries/util/asm/cellinfo.s deleted file mode 100644 index b04b2ed62c..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/cellinfo.s +++ /dev/null @@ -1,128 +0,0 @@ - .include "macros/function.inc" - .include "include/cellinfo.inc" - - - - .text - - - arm_func_start ov18_02243E74 -ov18_02243E74: ; 0x02243E74 - stmfd sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, r0 - mov r0, r1 - add r1, sp, #0 - mov r2, #4 - bl ov18_02243738 - ldr r1, _02243EA0 ; =0x022533B4 - str r0, [r1, r4, lsl #2] - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - ; .align 2, 0 -_02243EA0: .word Unk_ov18_022533B4 - arm_func_end ov18_02243E74 - - arm_func_start ov18_02243EA4 -ov18_02243EA4: ; 0x02243EA4 - stmfd sp!, {r4, lr} - ldr r1, _02243EC8 ; =0x022533B4 - mov r4, r0 - ldr r0, [r1, r4, lsl #2] - bl ov18_0224382C - ldr r0, _02243EC8 ; =0x022533B4 - mov r1, #0 - str r1, [r0, r4, lsl #2] - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02243EC8: .word Unk_ov18_022533B4 - arm_func_end ov18_02243EA4 - - arm_func_start ov18_02243ECC -ov18_02243ECC: ; 0x02243ECC - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #8 - ldr r3, _02243F5C ; =0x022533B4 - mov r5, r2 - ldr r6, [r3, r0, lsl #2] - mov r2, r1, lsl #3 - add r0, r6, r1, lsl #3 - ldr r3, [r0, #4] - ldrh r4, [r6, r2] - add r1, sp, #0 - mov r0, #0 - mov r2, #8 - add sb, r6, r3 - bl MIi_CpuClear32 - cmp r4, #0 - mov sl, #0 - addle sp, sp, #8 - ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - add r8, sp, #0 - mov r7, #6 - mov r6, #8 -_02243F20: - mov r0, sb - mov r1, r8 - mov r2, r7 - bl MIi_CpuCopy16 - mov r0, r8 - mov r1, r5 - mov r2, r6 - bl MIi_CpuCopy32 - add sl, sl, #1 - cmp sl, r4 - add sb, sb, #6 - add r5, r5, #8 - blt _02243F20 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ; .align 2, 0 -_02243F5C: .word Unk_ov18_022533B4 - arm_func_end ov18_02243ECC - - arm_func_start ov18_02243F60 -ov18_02243F60: ; 0x02243F60 - stmfd sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - bl ov18_02245B54 - mov r4, r0 - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl ov18_02243ECC - mov r0, r4 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ov18_02243F60 - - arm_func_start ov18_02243F8C -ov18_02243F8C: ; 0x02243F8C - stmfd sp!, {r4, r5, r6, lr} - ldr r3, _02243FD0 ; =0x022533B4 - mov r6, r0 - mov r5, r1 - ldr r3, [r3, r6, lsl #2] - mov r1, r5, lsl #3 - ldrh r1, [r3, r1] - bl ov18_022439E0 - mov r1, #0 - mov r4, r0 - bl ov18_02243BBC - mov r2, r0 - mov r0, r6 - mov r1, r5 - bl ov18_02243ECC - mov r0, r4 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_02243FD0: .word Unk_ov18_022533B4 - arm_func_end ov18_02243F8C - - .bss - - - .global Unk_ov18_022533B4 -Unk_ov18_022533B4: ; 0x022533B4 - .space 0x8 - diff --git a/subprojects/NitroDWC/libraries/util/asm/comment.s b/subprojects/NitroDWC/libraries/util/asm/comment.s deleted file mode 100644 index ad261c5c4b..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/comment.s +++ /dev/null @@ -1,111 +0,0 @@ - .include "macros/function.inc" - .include "include/comment.inc" - - .extern Unk_ov18_022532D8 - - .text - - - arm_func_start ov18_0222B580 -ov18_0222B580: ; 0x0222B580 - ldr r0, _0222B590 ; =0x0225324C - mov r1, #0 - strb r1, [r0] - bx lr - ; .align 2, 0 -_0222B590: .word Unk_ov18_0225324C - arm_func_end ov18_0222B580 - - arm_func_start ov18_0222B594 -ov18_0222B594: ; 0x0222B594 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x10 - ldr r3, _0222B650 ; =0x0225324C - mov r7, r0 - ldrb r0, [r3] - mov r6, r1 - mov r5, r2 - cmp r0, #0 - addne sp, sp, #0x10 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, _0222B654 ; =0x02249900 - ldr r1, _0222B658 ; =0x020C03CC - bl ov18_0222B700 - ldr r3, _0222B65C ; =0x01920000 - ldr r2, _0222B660 ; =0x04001010 - mov r0, #1 - mov r1, #0 - str r3, [r2, #0] - bl ov18_0224467C - ldr r1, _0222B664 ; =0x022532D8 - mov r4, r0 - ldr r0, [r1, #0] - mov r1, r7 - mov r2, r6 - mov r3, r5 - bl ov18_0222F8D0 - mov r5, r0 - bl ov18_0222B8F8 - mov r1, #0x40 - str r1, [sp] - mov r1, #2 - str r1, [sp, #4] - str r0, [sp, #8] - str r5, [sp, #0xc] - mov r0, r4 - mov r1, #0x14 - mov r2, #0 - mov r3, #0xd8 - bl ov18_02244A9C - mov r0, r4 - bl ov18_02244C08 - mov r0, #1 - ldr r1, _0222B650 ; =0x0225324C - strb r0, [r1] - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_0222B650: .word Unk_ov18_0225324C -_0222B654: .word Unk_ov18_02249900 -_0222B658: .word 0x020C03CC -_0222B65C: .word 0x01920000 -_0222B660: .word 0x04001010 -_0222B664: .word Unk_ov18_022532D8 - arm_func_end ov18_0222B594 - - arm_func_start ov18_0222B668 -ov18_0222B668: ; 0x0222B668 - stmfd sp!, {r3, lr} - ldr r0, _0222B69C ; =0x0225324C - ldrb r0, [r0] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, #1 - bl ov18_022448E0 - ldr r0, _0222B69C ; =0x0225324C - mov r1, #0 - strb r1, [r0] - mov r0, #1 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222B69C: .word Unk_ov18_0225324C - arm_func_end ov18_0222B668 - - .data - - - .global Unk_ov18_02249900 -Unk_ov18_02249900: ; 0x02249900 - .asciz "char/jtNull.nsc.l" - - - - .bss - - - .global Unk_ov18_0225324C -Unk_ov18_0225324C: ; 0x0225324C - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/common.s b/subprojects/NitroDWC/libraries/util/asm/common.s deleted file mode 100644 index a9659751a4..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/common.s +++ /dev/null @@ -1,230 +0,0 @@ - .include "macros/function.inc" - .include "include/common.inc" - - .extern Unk_ov18_022532D8 - - .text - - - arm_func_start ov18_0222B6A0 -ov18_0222B6A0: ; 0x0222B6A0 - stmfd sp!, {r4, lr} - mov r4, r0 - ldr r0, _0222B6F8 ; =0x02253250 - mov r1, r4 - mov r2, #0x3f - bl strncpy - ldrb r0, [r4, #5] - cmp r0, #0x78 - ldreq r0, _0222B6F8 ; =0x02253250 - ldmeqia sp!, {r4, pc} - bl ov18_0222F74C - ldrb r1, [r4, #5] - cmp r1, #0x79 - bne _0222B6E4 - cmp r0, #0 - ldrne r0, _0222B6F8 ; =0x02253250 - ldmneia sp!, {r4, pc} -_0222B6E4: - ldr r1, _0222B6FC ; =0x02248D0C - ldrb r1, [r1, r0] - ldr r0, _0222B6F8 ; =0x02253250 - strb r1, [r0, #5] - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0222B6F8: .word Unk_ov18_02253250 -_0222B6FC: .word Unk_ov18_02248D0C - arm_func_end ov18_0222B6A0 - - arm_func_start ov18_0222B700 -ov18_0222B700: ; 0x0222B700 - stmfd sp!, {r3, r4, r5, lr} - mov r5, r1 - bl ov18_0222B6A0 - add r1, sp, #0 - mov r2, #4 - bl ov18_02243738 - ldr r1, [sp] - mov r4, r0 - bl DC_FlushRange - ldr r2, [sp] - mov r0, r4 - mov r1, #0 - blx r5 - mov r0, r4 - bl ov18_0224382C - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov18_0222B700 - - arm_func_start ov18_0222B740 -ov18_0222B740: ; 0x0222B740 - stmfd sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, r0 - add r0, sp, #0 - mov r1, #0 - bl ov18_0222F6E8 - ldr r0, [sp] - cmp r0, #1 - bne _0222B774 - mov r0, r4 - bl ov18_0223EA28 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} -_0222B774: - cmp r0, #2 - addne sp, sp, #4 - ldmneia sp!, {r3, r4, pc} - mov r0, r4 - bl ov18_0223EFBC - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - arm_func_end ov18_0222B740 - - arm_func_start ov18_0222B790 -ov18_0222B790: ; 0x0222B790 - stmfd sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, r0 - add r1, sp, #0 - mov r0, #0 - bl ov18_0222F6E8 - ldr r0, [sp] - cmp r0, #1 - addne sp, sp, #4 - ldmneia sp!, {r3, r4, pc} - mov r0, r4 - bl ov18_0222AF0C - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - arm_func_end ov18_0222B790 - - arm_func_start ov18_0222B7C8 -ov18_0222B7C8: ; 0x0222B7C8 - stmfd sp!, {r3, r4, r5, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #0 - mov r1, r0 - bl ov18_0224467C - ldr r1, _0222B838 ; =0x022532D8 - mov r5, r0 - ldr r0, [r1, #0] - mov r1, r4 - bl ov18_0222F8B8 - mov r4, r0 - bl ov18_0222B8F8 - mov r1, #0x70 - str r1, [sp] - mov r1, #2 - str r1, [sp, #4] - str r0, [sp, #8] - str r4, [sp, #0xc] - mov r0, r5 - mov r1, #0xd - mov r2, #0x28 - mov r3, #0xe6 - bl ov18_02244A9C - mov r0, r5 - bl ov18_02244C08 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0222B838: .word Unk_ov18_022532D8 - arm_func_end ov18_0222B7C8 - - arm_func_start ov18_0222B83C -ov18_0222B83C: ; 0x0222B83C - stmfd sp!, {r4, r5, r6, lr} - sub sp, sp, #0x10 - mov r5, r0 - mov r0, #0 - mov r6, r1 - mov r1, r0 - bl ov18_0224467C - ldr r1, _0222B8E8 ; =0x022532D8 - mov r4, r0 - ldr r0, [r1, #0] - mov r1, r6 - bl ov18_0222F8B8 - mov r6, r0 - bl ov18_0222B8F8 - mov r1, #0x5e - str r1, [sp] - mov r1, #2 - str r1, [sp, #4] - str r0, [sp, #8] - mov r0, r4 - mov r1, #0xd - mov r2, #0x3c - mov r3, #0xe6 - str r6, [sp, #0xc] - bl ov18_02244A9C - bl ov18_0222F74C - mov r6, r0 - bl ov18_0222F74C - ldr r1, _0222B8EC ; =0x00000209 - mov r3, r0, lsl #2 - stmia sp, {r1, r5} - ldr r2, _0222B8F0 ; =0x02248CF2 - ldr r1, _0222B8F4 ; =0x02248CF0 - mov ip, r6, lsl #2 - ldrh r2, [r2, r3] - ldrh r1, [r1, ip] - mov r0, r4 - mov r3, #2 - bl ov18_02244904 - mov r0, r4 - bl ov18_02244C08 - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_0222B8E8: .word Unk_ov18_022532D8 -_0222B8EC: .word 0x00000209 -_0222B8F0: .word 0x02248CF2 -_0222B8F4: .word Unk_ov18_02248CF0 - arm_func_end ov18_0222B83C - - arm_func_start ov18_0222B8F8 -ov18_0222B8F8: ; 0x0222B8F8 - stmfd sp!, {r3, lr} - bl ov18_0222F74C - ldr r1, _0222B90C ; =0x02248CD4 - ldr r0, [r1, r0, lsl #2] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222B90C: .word Unk_ov18_02248CD4 - arm_func_end ov18_0222B8F8 - - .rodata - - - .global Unk_ov18_02248CC4 -Unk_ov18_02248CC4: ; 0x02248CC4 - .incbin "incbin/common.bin", 0x0, 0x8 - - .global Unk_ov18_02248CCC -Unk_ov18_02248CCC: ; 0x02248CCC - .incbin "incbin/common.bin", 0x8, 0x10 - 0x8 - - .global Unk_ov18_02248CD4 -Unk_ov18_02248CD4: ; 0x02248CD4 - .incbin "incbin/common.bin", 0x10, 0x2C - 0x10 - - .global Unk_ov18_02248CF0 -Unk_ov18_02248CF0: ; 0x02248CF0 - .incbin "incbin/common.bin", 0x2C, 0x48 - 0x2C - - .global Unk_ov18_02248D0C -Unk_ov18_02248D0C: ; 0x02248D0C - .incbin "incbin/common.bin", 0x48, 0x8 - - - - .bss - - - .global Unk_ov18_02253250 -Unk_ov18_02253250: ; 0x02253250 - .space 0x40 - diff --git a/subprojects/NitroDWC/libraries/util/asm/deque.s b/subprojects/NitroDWC/libraries/util/asm/deque.s deleted file mode 100644 index 43132b3cc8..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/deque.s +++ /dev/null @@ -1,111 +0,0 @@ - .include "macros/function.inc" - .include "include/deque.inc" - - - - .text - - - arm_func_start ov18_02243FD4 -ov18_02243FD4: ; 0x02243FD4 - stmfd sp!, {r4, lr} - mov r4, r0 - add r0, r4, #1 - mov r0, r0, lsl #2 - add r0, r0, #8 - mov r1, #4 - bl ov18_02245068 - add r1, r4, #1 - strh r1, [r0] - mov r1, #0 - strb r1, [r0, #2] - strb r1, [r0, #3] - ldmia sp!, {r4, pc} - arm_func_end ov18_02243FD4 - - arm_func_start ov18_02244008 -ov18_02244008: ; 0x02244008 - stmfd sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl ov18_02243FD4 - cmp r6, #0 - mov r2, #0 - ble _02244040 -_02244028: - add r1, r0, r2, lsl #2 - add r2, r2, #1 - str r5, [r1, #4] - cmp r2, r6 - add r5, r5, r4 - blt _02244028 -_02244040: - strb r6, [r0, #3] - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ov18_02244008 - - arm_func_start ov18_02244048 -ov18_02244048: ; 0x02244048 - stmfd sp!, {r0, r1, r2, r3} - stmfd sp!, {r3, lr} - add r0, sp, #8 - bl ov18_0224508C - ldmia sp!, {r3, lr} - add sp, sp, #0x10 - bx lr - arm_func_end ov18_02244048 - - arm_func_start ov18_02244064 -ov18_02244064: ; 0x02244064 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r5, r0 - mov r0, #1 - mov r4, r1 - bl OS_DisableIrqMask - ldrb r2, [r5, #3] - mov r6, r0 - ldrh r1, [r5] - add r0, r2, #1 - bl FX_ModS32 - ldrb r1, [r5, #2] - mov r7, r0 - cmp r7, r1 - bne _022440A0 - bl OS_Terminate -_022440A0: - ldrb r1, [r5, #3] - mov r0, r6 - add r1, r5, r1, lsl #2 - str r4, [r1, #4] - strb r7, [r5, #3] - bl OS_EnableIrqMask - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov18_02244064 - - arm_func_start ov18_022440BC -ov18_022440BC: ; 0x022440BC - stmfd sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r0, #1 - mov r4, #0 - bl OS_DisableIrqMask - ldrb r2, [r6, #3] - ldrb r1, [r6, #2] - mov r5, r0 - cmp r1, r2 - beq _02244104 - ldrh r1, [r6] - add r0, r2, r1 - sub r0, r0, #1 - bl FX_ModS32 - and r1, r0, #0xff - strb r0, [r6, #3] - add r0, r6, r1, lsl #2 - ldr r4, [r0, #4] -_02244104: - mov r0, r5 - bl OS_EnableIrqMask - mov r0, r4 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ov18_022440BC \ No newline at end of file diff --git a/subprojects/NitroDWC/libraries/util/asm/dwc_mov_mbp.s b/subprojects/NitroDWC/libraries/util/asm/dwc_mov_mbp.s deleted file mode 100644 index 7e10538e82..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/dwc_mov_mbp.s +++ /dev/null @@ -1,1092 +0,0 @@ - .include "macros/function.inc" - .include "include/dwc_mov_mbp.inc" - - - - .text - - - arm_func_start ov18_022407B0 -ov18_022407B0: ; 0x022407B0 - stmfd sp!, {r3, lr} - ldr r2, _022407EC ; =0x0225339C - add r1, r0, #0x160 - str r0, [r2, #0] - add r0, r1, #0x1b000 - bl ov18_02241448 - ldr r1, _022407EC ; =0x0225339C - mov r2, #0 - ldr r0, [r1, #0] - add r0, r0, #0x1b000 - str r2, [r0, #0x140] - ldr r0, [r1, #0] - add r0, r0, #0x1b000 - str r2, [r0, #0x144] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022407EC: .word Unk_ov18_0225339C - arm_func_end ov18_022407B0 - - arm_func_start ov18_022407F0 -ov18_022407F0: ; 0x022407F0 - stmfd sp!, {r4, r5, lr} - sub sp, sp, #0x7c - mov r5, r0 - add r0, sp, #0x28 - mov r4, r1 - bl OS_GetOwnerInfo - ldrb r2, [sp, #0x12] - ldrb r1, [sp, #0x29] - ldrh r3, [sp, #0x42] - bic r2, r2, #0xf - and r1, r1, #0xf - orr r2, r2, r1 - strb r2, [sp, #0x12] - add r0, sp, #0x2c - add r1, sp, #0x14 - mov r2, r3, lsl #1 - strb r3, [sp, #0x13] - bl MI_CpuCopy8 - ldrb r2, [sp, #0x12] - ldr r0, _02240908 ; =0x0225339C - add lr, sp, #4 - mov r1, #0 - ldr r0, [r0, #0] - bic r2, r2, #0xf0 - mov ip, r0 - strb r2, [sp, #0x12] - strh r1, [lr] - strh r1, [lr, #2] - strh r1, [lr, #4] - strh r1, [lr, #6] - strh r1, [lr, #8] - strh r1, [lr, #0xa] - strh r1, [lr, #0xc] - mov r3, #3 -_02240878: - ldrh r2, [lr] - ldrh r1, [lr, #2] - add lr, lr, #4 - subs r3, r3, #1 - strh r2, [ip] - strh r1, [ip, #2] - add ip, ip, #4 - bne _02240878 - ldrh r2, [lr] - add r1, r0, #0x40 - add r1, r1, #0x10000 - strh r2, [ip] - add r0, r0, #0x1b000 - str r1, [r0, #0x140] - mov r1, #2 - str r1, [sp] - ldr r0, _02240908 ; =0x0225339C - add r1, sp, #0x12 - ldr r0, [r0, #0] - mov r2, r5 - add r0, r0, #0x1b000 - ldr r0, [r0, #0x140] - mov r3, r4 - bl MB_Init - cmp r0, #0 - beq _022408E4 - bl OS_Terminate -_022408E4: - mov r0, #0x100 - mov r1, #1 - bl MB_SetParentCommParam - ldr r0, _0224090C ; =ov18_02240F00 - bl MB_CommSetParentStateCallback - mov r0, #1 - bl ov18_02241224 - add sp, sp, #0x7c - ldmia sp!, {r4, r5, pc} - ; .align 2, 0 -_02240908: .word Unk_ov18_0225339C -_0224090C: .word ov18_02240F00 - arm_func_end ov18_022407F0 - - arm_func_start ov18_02240910 -ov18_02240910: ; 0x02240910 - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - mov r0, #2 - bl ov18_02241224 - mov r0, r4 - bl MB_StartParentFromIdle - cmp r0, #0 - beq _02240940 - mov r0, #7 - bl ov18_02241224 - ldmia sp!, {r3, r4, r5, pc} -_02240940: - mov r0, r5 - bl ov18_02240958 - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - bl OS_Terminate - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov18_02240910 - - arm_func_start ov18_02240958 -ov18_02240958: ; 0x02240958 - stmfd sp!, {r4, r5, r6, lr} - sub sp, sp, #0x48 - mov r6, r0 - ldr r0, [r6, #0] - mov r5, #0 - cmp r0, #0 - moveq r4, r5 - beq _022409A0 - add r0, sp, #0 - bl FS_InitFile - ldr r1, [r6, #0] - add r0, sp, #0 - bl FS_OpenFile - cmp r0, #0 - addeq sp, sp, #0x48 - moveq r0, r5 - ldmeqia sp!, {r4, r5, r6, pc} - add r4, sp, #0 -_022409A0: - mov r0, r4 - bl MB_GetSegmentLength - cmp r0, #0 - beq _02240A0C - ldr r1, _02240A28 ; =0x0225339C - ldr r0, [r1, #0] - add r2, r0, #0x2c - add r0, r0, #0x1b000 - str r2, [r0, #0x144] - ldr r0, [r1, #0] - add r0, r0, #0x1b000 - ldr r1, [r0, #0x144] - cmp r1, #0 - beq _02240A0C - mov r0, r4 - mov r2, #0x10000 - bl MB_ReadSegment - cmp r0, #0 - beq _02240A0C - ldr r1, _02240A28 ; =0x0225339C - mov r0, r6 - ldr r1, [r1, #0] - add r1, r1, #0x1b000 - ldr r1, [r1, #0x144] - bl MB_RegisterFile - cmp r0, #0 - movne r5, #1 -_02240A0C: - add r0, sp, #0 - cmp r4, r0 - bne _02240A1C - bl FS_CloseFile -_02240A1C: - mov r0, r5 - add sp, sp, #0x48 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_02240A28: .word Unk_ov18_0225339C - arm_func_end ov18_02240958 - - arm_func_start ov18_02240A2C -ov18_02240A2C: ; 0x02240A2C - stmfd sp!, {r3, r4, r5, lr} - mov r1, #1 - mov r4, r0 - bl MB_CommResponseRequest - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, #1 - mvn r0, r0, lsl r4 - mov r5, r0, lsl #0x10 - bl OS_DisableInterrupts - ldr r1, _02240AC8 ; =0x0225339C - ldr r3, [r1, #0] - ldrh r2, [r3, #2] - and r2, r2, r5, lsr #16 - strh r2, [r3, #2] - ldr r3, [r1, #0] - ldrh r2, [r3, #4] - and r2, r2, r5, lsr #16 - strh r2, [r3, #4] - ldr r3, [r1, #0] - ldrh r2, [r3, #6] - and r2, r2, r5, lsr #16 - strh r2, [r3, #6] - ldr r3, [r1, #0] - ldrh r2, [r3, #8] - and r2, r2, r5, lsr #16 - strh r2, [r3, #8] - ldr r3, [r1, #0] - ldrh r2, [r3, #0xa] - and r2, r2, r5, lsr #16 - strh r2, [r3, #0xa] - ldr r2, [r1, #0] - ldrh r1, [r2, #0xc] - and r1, r1, r5, lsr #16 - strh r1, [r2, #0xc] - bl OS_RestoreInterrupts - mov r0, r4 - bl MB_DisconnectChild - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02240AC8: .word Unk_ov18_0225339C - arm_func_end ov18_02240A2C - - arm_func_start ov18_02240ACC -ov18_02240ACC: ; 0x02240ACC - stmfd sp!, {r3, r4, r5, lr} - mov r1, #0 - mov r4, r0 - bl MB_CommResponseRequest - cmp r0, #0 - bne _02240B68 - mov r0, #1 - mvn r0, r0, lsl r4 - mov r5, r0, lsl #0x10 - bl OS_DisableInterrupts - ldr r1, _02240BA0 ; =0x0225339C - ldr r3, [r1, #0] - ldrh r2, [r3, #2] - and r2, r2, r5, lsr #16 - strh r2, [r3, #2] - ldr r3, [r1, #0] - ldrh r2, [r3, #4] - and r2, r2, r5, lsr #16 - strh r2, [r3, #4] - ldr r3, [r1, #0] - ldrh r2, [r3, #6] - and r2, r2, r5, lsr #16 - strh r2, [r3, #6] - ldr r3, [r1, #0] - ldrh r2, [r3, #8] - and r2, r2, r5, lsr #16 - strh r2, [r3, #8] - ldr r3, [r1, #0] - ldrh r2, [r3, #0xa] - and r2, r2, r5, lsr #16 - strh r2, [r3, #0xa] - ldr r2, [r1, #0] - ldrh r1, [r2, #0xc] - and r1, r1, r5, lsr #16 - strh r1, [r2, #0xc] - bl OS_RestoreInterrupts - mov r0, r4 - bl MB_DisconnectChild - ldmia sp!, {r3, r4, r5, pc} -_02240B68: - bl OS_DisableInterrupts - ldr r1, _02240BA0 ; =0x0225339C - mov r2, #1 - ldr r3, [r1, #0] - mvn r4, r2, lsl r4 - ldrh r2, [r3, #4] - and r2, r2, r4 - strh r2, [r3, #4] - ldr r2, [r1, #0] - ldrh r1, [r2, #2] - and r1, r1, r4 - strh r1, [r2, #2] - bl OS_RestoreInterrupts - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02240BA0: .word Unk_ov18_0225339C - arm_func_end ov18_02240ACC - - arm_func_start ov18_02240BA4 -ov18_02240BA4: ; 0x02240BA4 - stmfd sp!, {r3, r4, r5, lr} - mov r1, #2 - mov r4, r0 - bl MB_CommResponseRequest - cmp r0, #0 - bne _02240C40 - mov r0, #1 - mvn r0, r0, lsl r4 - mov r5, r0, lsl #0x10 - bl OS_DisableInterrupts - ldr r1, _02240C78 ; =0x0225339C - ldr r3, [r1, #0] - ldrh r2, [r3, #2] - and r2, r2, r5, lsr #16 - strh r2, [r3, #2] - ldr r3, [r1, #0] - ldrh r2, [r3, #4] - and r2, r2, r5, lsr #16 - strh r2, [r3, #4] - ldr r3, [r1, #0] - ldrh r2, [r3, #6] - and r2, r2, r5, lsr #16 - strh r2, [r3, #6] - ldr r3, [r1, #0] - ldrh r2, [r3, #8] - and r2, r2, r5, lsr #16 - strh r2, [r3, #8] - ldr r3, [r1, #0] - ldrh r2, [r3, #0xa] - and r2, r2, r5, lsr #16 - strh r2, [r3, #0xa] - ldr r2, [r1, #0] - ldrh r1, [r2, #0xc] - and r1, r1, r5, lsr #16 - strh r1, [r2, #0xc] - bl OS_RestoreInterrupts - mov r0, r4 - bl MB_DisconnectChild - ldmia sp!, {r3, r4, r5, pc} -_02240C40: - bl OS_DisableInterrupts - ldr r1, _02240C78 ; =0x0225339C - mov ip, #1 - ldr r5, [r1, #0] - mvn r2, ip, lsl r4 - ldrh r3, [r5, #6] - and r2, r3, r2 - strh r2, [r5, #6] - ldr r2, [r1, #0] - ldrh r1, [r2, #8] - orr r1, r1, ip, lsl r4 - strh r1, [r2, #8] - bl OS_RestoreInterrupts - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02240C78: .word Unk_ov18_0225339C - arm_func_end ov18_02240BA4 - - arm_func_start ov18_02240C7C -ov18_02240C7C: ; 0x02240C7C - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r0, #3 - bl ov18_02241224 - mov r5, #1 - ldr r7, _02240D58 ; =0x0225339C - mov r4, r5 -_02240C94: - ldr r1, [r7, #0] - ldrh r0, [r1, #2] - tst r0, r4, lsl r5 - beq _02240D40 - ldrh r0, [r1, #4] - tst r0, r4, lsl r5 - bne _02240D40 - ldrh r0, [r1, #6] - tst r0, r4, lsl r5 - bne _02240D38 - mvn r0, r4, lsl r5 - mov r6, r0, lsl #0x10 - bl OS_DisableInterrupts - ldr r2, [r7, #0] - ldrh r1, [r2, #2] - and r1, r1, r6, lsr #16 - strh r1, [r2, #2] - ldr r2, [r7, #0] - ldrh r1, [r2, #4] - and r1, r1, r6, lsr #16 - strh r1, [r2, #4] - ldr r2, [r7, #0] - ldrh r1, [r2, #6] - and r1, r1, r6, lsr #16 - strh r1, [r2, #6] - ldr r2, [r7, #0] - ldrh r1, [r2, #8] - and r1, r1, r6, lsr #16 - strh r1, [r2, #8] - ldr r2, [r7, #0] - ldrh r1, [r2, #0xa] - and r1, r1, r6, lsr #16 - strh r1, [r2, #0xa] - ldr r2, [r7, #0] - ldrh r1, [r2, #0xc] - and r1, r1, r6, lsr #16 - strh r1, [r2, #0xc] - bl OS_RestoreInterrupts - mov r0, r5 - bl MB_DisconnectChild - b _02240D40 -_02240D38: - mov r0, r5 - bl ov18_02240BA4 -_02240D40: - add r0, r5, #1 - mov r0, r0, lsl #0x10 - mov r5, r0, lsr #0x10 - cmp r5, #0x10 - blo _02240C94 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02240D58: .word Unk_ov18_0225339C - arm_func_end ov18_02240C7C - - arm_func_start ov18_02240D5C -ov18_02240D5C: ; 0x02240D5C - stmfd sp!, {r4, r5, r6, lr} - ldr r4, _02240DC0 ; =0x0225339C - ldr r0, [r4, #0] - ldrh r0, [r0, #2] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r6, #1 - mov r5, r6 -_02240D80: - ldr r0, [r4, #0] - ldrh r0, [r0, #2] - tst r0, r5, lsl r6 - beq _02240DA4 - mov r0, r6 - bl MB_CommIsBootable - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} -_02240DA4: - add r0, r6, #1 - mov r0, r0, lsl #0x10 - mov r6, r0, lsr #0x10 - cmp r6, #0x10 - blo _02240D80 - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_02240DC0: .word Unk_ov18_0225339C - arm_func_end ov18_02240D5C - - arm_func_start ov18_02240DC4 -ov18_02240DC4: ; 0x02240DC4 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r7, #1 - ldr r4, _02240EB8 ; =0x0225339C - mov r8, #0 - mov r5, #3 - mov r6, r7 -_02240DDC: - ldr r0, [r4, #0] - ldrh r0, [r0, #0xa] - tst r0, r6, lsl r7 - beq _02240E84 - mov r0, r7 - mov r1, r5 - bl MB_CommResponseRequest - cmp r0, #0 - orrne r0, r8, r6, lsl r7 - movne r0, r0, lsl #0x10 - movne r8, r0, lsr #0x10 - bne _02240E84 - mvn r0, r6, lsl r7 - mov sb, r0, lsl #0x10 - bl OS_DisableInterrupts - ldr r2, [r4, #0] - ldrh r1, [r2, #2] - and r1, r1, sb, lsr #16 - strh r1, [r2, #2] - ldr r2, [r4, #0] - ldrh r1, [r2, #4] - and r1, r1, sb, lsr #16 - strh r1, [r2, #4] - ldr r2, [r4, #0] - ldrh r1, [r2, #6] - and r1, r1, sb, lsr #16 - strh r1, [r2, #6] - ldr r2, [r4, #0] - ldrh r1, [r2, #8] - and r1, r1, sb, lsr #16 - strh r1, [r2, #8] - ldr r2, [r4, #0] - ldrh r1, [r2, #0xa] - and r1, r1, sb, lsr #16 - strh r1, [r2, #0xa] - ldr r2, [r4, #0] - ldrh r1, [r2, #0xc] - and r1, r1, sb, lsr #16 - strh r1, [r2, #0xc] - bl OS_RestoreInterrupts - mov r0, r7 - bl MB_DisconnectChild -_02240E84: - add r0, r7, #1 - mov r0, r0, lsl #0x10 - mov r7, r0, lsr #0x10 - cmp r7, #0x10 - blo _02240DDC - cmp r8, #0 - bne _02240EAC - mov r0, #7 - bl ov18_02241224 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_02240EAC: - mov r0, #4 - bl ov18_02241224 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ; .align 2, 0 -_02240EB8: .word Unk_ov18_0225339C - arm_func_end ov18_02240DC4 - - arm_func_start ov18_02240EBC -ov18_02240EBC: ; 0x02240EBC - stmfd sp!, {r3, lr} - mov r0, #6 - bl ov18_02241224 - bl MB_EndToIdle - ldmia sp!, {r3, pc} - arm_func_end ov18_02240EBC - - arm_func_start ov18_02240ED0 -ov18_02240ED0: ; 0x02240ED0 - stmfd sp!, {r3, lr} - ldr r0, _02240EFC ; =0x0225339C - ldr r2, [r0, #0] - ldrh r0, [r2] - cmp r0, #4 - ldreqh r1, [r2, #2] - ldreqh r0, [r2, #0xc] - cmpeq r1, r0 - ldmneia sp!, {r3, pc} - bl MB_EndToIdle - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02240EFC: .word Unk_ov18_0225339C - arm_func_end ov18_02240ED0 - - arm_func_start ov18_02240F00 -ov18_02240F00: ; 0x02240F00 - stmfd sp!, {r4, r5, r6, lr} - mov r5, r0 - mov r4, r2 - cmp r1, #0xe - addls pc, pc, r1, lsl #2 - b _02241218 -_02240F18: ; jump table - b _02241218 ; case 0 - ldmia sp!, {r4, r5, r6, pc} ; case 1 - b _02240F54 ; case 2 - b _02240FDC ; case 3 - ldmia sp!, {r4, r5, r6, pc} ; case 4 - ldmia sp!, {r4, r5, r6, pc} ; case 5 - ldmia sp!, {r4, r5, r6, pc} ; case 6 - b _02241118 ; case 7 - ldmia sp!, {r4, r5, r6, pc} ; case 8 - b _02241148 ; case 9 - b _02241068 ; case 10 - ldmia sp!, {r4, r5, r6, pc} ; case 11 - b _0224117C ; case 12 - b _022411D8 ; case 13 - b _022410D4 ; case 14 -_02240F54: - bl ov18_02241238 - cmp r0, #2 - ldmneia sp!, {r4, r5, r6, pc} - ldr r0, _02241220 ; =0x0225339C - ldr r6, [r0, #0] - bl OS_DisableInterrupts - ldrh r2, [r6, #2] - mov r1, #1 - orr r1, r2, r1, lsl r5 - strh r1, [r6, #2] - bl OS_RestoreInterrupts - ldr r1, _02241220 ; =0x0225339C - sub r3, r5, #1 - mov r0, #0x1e - mul r0, r3, r0 - ldr r2, [r1, #0] - add r3, r2, #0x24 - ldrb r2, [r4, #0xa] - add ip, r3, r0 - strb r2, [r3, r0] - ldrb r2, [r4, #0xb] - strb r2, [ip, #1] - ldrb r2, [r4, #0xc] - strb r2, [ip, #2] - ldrb r2, [r4, #0xd] - strb r2, [ip, #3] - ldrb r2, [r4, #0xe] - strb r2, [ip, #4] - ldrb r2, [r4, #0xf] - strb r2, [ip, #5] - ldr r1, [r1, #0] - add r0, r1, r0 - strh r5, [r0, #0x2a] - ldmia sp!, {r4, r5, r6, pc} -_02240FDC: - bl ov18_022412A4 - cmp r0, #6 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, #1 - mvn r0, r0, lsl r5 - mov r4, r0, lsl #0x10 - bl OS_DisableInterrupts - ldr r1, _02241220 ; =0x0225339C - ldr r3, [r1, #0] - ldrh r2, [r3, #2] - and r2, r2, r4, lsr #16 - strh r2, [r3, #2] - ldr r3, [r1, #0] - ldrh r2, [r3, #4] - and r2, r2, r4, lsr #16 - strh r2, [r3, #4] - ldr r3, [r1, #0] - ldrh r2, [r3, #6] - and r2, r2, r4, lsr #16 - strh r2, [r3, #6] - ldr r3, [r1, #0] - ldrh r2, [r3, #8] - and r2, r2, r4, lsr #16 - strh r2, [r3, #8] - ldr r3, [r1, #0] - ldrh r2, [r3, #0xa] - and r2, r2, r4, lsr #16 - strh r2, [r3, #0xa] - ldr r2, [r1, #0] - ldrh r1, [r2, #0xc] - and r1, r1, r4, lsr #16 - strh r1, [r2, #0xc] - bl OS_RestoreInterrupts - bl ov18_02240ED0 - ldmia sp!, {r4, r5, r6, pc} -_02241068: - bl ov18_02241238 - cmp r0, #2 - beq _02241080 - mov r0, r5 - bl ov18_02240ACC - ldmia sp!, {r4, r5, r6, pc} -_02241080: - ldr r0, _02241220 ; =0x0225339C - mov r1, #1 - ldr r3, [r0, #0] - mov r0, r5 - ldrh r2, [r3, #4] - orr r1, r2, r1, lsl r5 - strh r1, [r3, #4] - bl ov18_02240A2C - mov r0, r5 - bl MB_CommGetChildUser - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r1, _02241220 ; =0x0225339C - sub r2, r5, #1 - ldr r3, [r1, #0] - mov r1, #0x1e - add r3, r3, #0xe - mla r1, r2, r1, r3 - mov r2, #0x16 - bl MI_CpuCopy8 - ldmia sp!, {r4, r5, r6, pc} -_022410D4: - ldr r0, _02241220 ; =0x0225339C - mov r4, #1 - ldr r3, [r0, #0] - mvn r1, r4, lsl r5 - ldrh r2, [r3, #4] - and r1, r2, r1 - strh r1, [r3, #4] - ldr r1, [r0, #0] - ldrh r0, [r1, #6] - orr r0, r0, r4, lsl r5 - strh r0, [r1, #6] - bl ov18_02241238 - cmp r0, #3 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r5 - bl ov18_02240BA4 - ldmia sp!, {r4, r5, r6, pc} -_02241118: - ldr r0, _02241220 ; =0x0225339C - mov r4, #1 - ldr r3, [r0, #0] - mvn r1, r4, lsl r5 - ldrh r2, [r3, #8] - and r1, r2, r1 - strh r1, [r3, #8] - ldr r1, [r0, #0] - ldrh r0, [r1, #0xa] - orr r0, r0, r4, lsl r5 - strh r0, [r1, #0xa] - ldmia sp!, {r4, r5, r6, pc} -_02241148: - ldr r0, _02241220 ; =0x0225339C - mov r4, #1 - ldr r3, [r0, #0] - mvn r1, r4, lsl r5 - ldrh r2, [r3, #0xa] - and r1, r2, r1 - strh r1, [r3, #0xa] - ldr r1, [r0, #0] - ldrh r0, [r1, #0xc] - orr r0, r0, r4, lsl r5 - strh r0, [r1, #0xc] - bl ov18_02240ED0 - ldmia sp!, {r4, r5, r6, pc} -_0224117C: - bl ov18_02241238 - cmp r0, #4 - bne _02241194 - mov r0, #5 - bl ov18_02241224 - b _0224119C -_02241194: - mov r0, #0 - bl ov18_02241224 -_0224119C: - ldr r0, _02241220 ; =0x0225339C - ldr r0, [r0, #0] - add r0, r0, #0x1b000 - ldr r1, [r0, #0x144] - cmp r1, #0 - movne r1, #0 - strne r1, [r0, #0x144] - ldr r0, _02241220 ; =0x0225339C - ldr r0, [r0, #0] - add r0, r0, #0x1b000 - ldr r1, [r0, #0x140] - cmp r1, #0 - movne r1, #0 - strne r1, [r0, #0x140] - ldmia sp!, {r4, r5, r6, pc} -_022411D8: - ldrh r0, [r4] - cmp r0, #8 - bgt _02241204 - ldmgeia sp!, {r4, r5, r6, pc} - cmp r0, #2 - ldmgtia sp!, {r4, r5, r6, pc} - cmp r0, #1 - ldmltia sp!, {r4, r5, r6, pc} - cmpne r0, #2 - beq _0224120C - ldmia sp!, {r4, r5, r6, pc} -_02241204: - cmp r0, #9 - ldmneia sp!, {r4, r5, r6, pc} -_0224120C: - mov r0, #7 - bl ov18_02241224 - ldmia sp!, {r4, r5, r6, pc} -_02241218: - bl OS_Terminate - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_02241220: .word Unk_ov18_0225339C - arm_func_end ov18_02240F00 - - arm_func_start ov18_02241224 -ov18_02241224: ; 0x02241224 - ldr r1, _02241234 ; =0x0225339C - ldr r1, [r1, #0] - strh r0, [r1] - bx lr - ; .align 2, 0 -_02241234: .word Unk_ov18_0225339C - arm_func_end ov18_02241224 - - arm_func_start ov18_02241238 -ov18_02241238: ; 0x02241238 - ldr r0, _02241248 ; =0x0225339C - ldr r0, [r0, #0] - ldrh r0, [r0] - bx lr - ; .align 2, 0 -_02241248: .word Unk_ov18_0225339C - arm_func_end ov18_02241238 - - arm_func_start ov18_0224124C -ov18_0224124C: ; 0x0224124C - ldr r2, _02241298 ; =0x0225339C - ldr r1, _0224129C ; =0x0224A6B8 - ldr ip, [r2] - ldr r2, _022412A0 ; =0x0224A6B8 - add r3, ip, #2 - str r3, [r1, #0] - add r3, ip, #4 - str r3, [r1, #4] - add r3, ip, #6 - str r3, [r1, #8] - add r3, ip, #8 - str r3, [r1, #0xc] - add r3, ip, #0xa - str r3, [r1, #0x10] - add r3, ip, #0xc - str r3, [r1, #0x14] - ldr r0, [r2, r0, lsl #2] - ldrh r0, [r0] - bx lr - ; .align 2, 0 -_02241298: .word Unk_ov18_0225339C -_0224129C: .word Unk_ov18_0224A6B8 -_022412A0: .word Unk_ov18_0224A6B8 - arm_func_end ov18_0224124C - - arm_func_start ov18_022412A4 -ov18_022412A4: ; 0x022412A4 - stmfd sp!, {r3, r4, r5, lr} - sub sp, sp, #0x10 - mov r4, r0 - bl OS_DisableInterrupts - ldr r1, _02241368 ; =0x0225339C - mov r3, #1 - ldr r2, [r1, #0] - mov r3, r3, lsl r4 - ldrh r1, [r2, #2] - mov r4, r3, lsl #0x10 - mov r5, r0 - tst r1, r4, lsr #16 - bne _022412E8 - bl OS_RestoreInterrupts - add sp, sp, #0x10 - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_022412E8: - mov r0, r2 - add r1, sp, #0 - mov r2, #0xe - bl MI_CpuCopy8 - mov r0, r5 - bl OS_RestoreInterrupts - ldrh r0, [sp, #4] - tst r0, r4, lsr #16 - addne sp, sp, #0x10 - movne r0, #2 - ldmneia sp!, {r3, r4, r5, pc} - ldrh r0, [sp, #6] - tst r0, r4, lsr #16 - addne sp, sp, #0x10 - movne r0, #3 - ldmneia sp!, {r3, r4, r5, pc} - ldrh r0, [sp, #8] - tst r0, r4, lsr #16 - addne sp, sp, #0x10 - movne r0, #4 - ldmneia sp!, {r3, r4, r5, pc} - ldrh r0, [sp, #0xa] - tst r0, r4, lsr #16 - addne sp, sp, #0x10 - movne r0, #5 - ldmneia sp!, {r3, r4, r5, pc} - ldrh r0, [sp, #0xc] - tst r0, r4, lsr #16 - movne r0, #6 - moveq r0, #1 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02241368: .word Unk_ov18_0225339C - arm_func_end ov18_022412A4 - - arm_func_start ov18_0224136C -ov18_0224136C: ; 0x0224136C - ldr r1, _0224139C ; =0x0225339C - mov r2, #1 - ldr r3, [r1, #0] - ldrh r1, [r3, #2] - tst r1, r2, lsl r0 - moveq r0, #0 - bxeq lr - sub r1, r0, #1 - add r2, r3, #0xe - mov r0, #0x1e - mla r0, r1, r0, r2 - bx lr - ; .align 2, 0 -_0224139C: .word Unk_ov18_0225339C - arm_func_end ov18_0224136C - - arm_func_start ov18_022413A0 -ov18_022413A0: ; 0x022413A0 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - ldr r1, _02241444 ; =0x0225339C - mov lr, #1 - ldr r5, [r1, #0] - mov ip, lr - ldrh r4, [r5, #2] - add r1, r5, #0x24 - mov r6, #0x1e -_022413C0: - tst r4, ip, lsl lr - beq _02241428 - sub r2, lr, #1 - mul r3, r2, r6 - ldrb r8, [r0] - ldrb r7, [r1, r3] - add r2, r1, r3 - cmp r8, r7 - ldreqb r8, [r0, #1] - ldreqb r7, [r2, #1] - cmpeq r8, r7 - ldreqb r8, [r0, #2] - ldreqb r7, [r2, #2] - cmpeq r8, r7 - ldreqb r8, [r0, #3] - ldreqb r7, [r2, #3] - cmpeq r8, r7 - ldreqb r8, [r0, #4] - ldreqb r7, [r2, #4] - cmpeq r8, r7 - ldreqb r7, [r0, #5] - ldreqb r2, [r2, #5] - cmpeq r7, r2 - addeq r0, r5, r3 - ldreqh r0, [r0, #0x2a] - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} -_02241428: - add r2, lr, #1 - mov r2, r2, lsl #0x10 - mov lr, r2, lsr #0x10 - cmp lr, #2 - blo _022413C0 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_02241444: .word Unk_ov18_0225339C - arm_func_end ov18_022413A0 - - .data - - - .global Unk_ov18_0224A648 -Unk_ov18_0224A648: ; 0x0224A648 - .ascii "MB_COMM_PSTATE_END" - .space 0x2 - - .global Unk_ov18_0224A65C -Unk_ov18_0224A65C: ; 0x0224A65C - .asciz "MB_COMM_PSTATE_NONE" - - .global Unk_ov18_0224A670 -Unk_ov18_0224A670: ; 0x0224A670 - .ascii "MB_COMM_PSTATE_ERROR" - .space 0x4 - - .global Unk_ov18_0224A688 -Unk_ov18_0224A688: ; 0x0224A688 - .ascii "MB_COMM_PSTATE_KICKED" - .space 0x3 - - .global Unk_ov18_0224A6A0 -Unk_ov18_0224A6A0: ; 0x0224A6A0 - .asciz "DWCi_MOV_MBP_STATE_STOP" - - .global Unk_ov18_0224A6B8 -Unk_ov18_0224A6B8: ; 0x0224A6B8 - .space 0x18 - - .global Unk_ov18_0224A6D0 -Unk_ov18_0224A6D0: ; 0x0224A6D0 - .word Unk_ov18_0224A6A0 - .word Unk_ov18_0224A72C - .word Unk_ov18_0224A760 - .word Unk_ov18_0224A914 - .word Unk_ov18_0224A894 - .word Unk_ov18_0224A824 - .word Unk_ov18_0224A7B4 - .word Unk_ov18_0224A798 - - .global Unk_ov18_0224A6F0 -Unk_ov18_0224A6F0: ; 0x0224A6F0 - .word Unk_ov18_0224A65C - .word Unk_ov18_0224A8B4 - .word Unk_ov18_0224A744 - .word Unk_ov18_0224A808 - .word Unk_ov18_0224A688 - .word Unk_ov18_0224A840 - .word Unk_ov18_0224A85C - .word Unk_ov18_0224A8D4 - .word Unk_ov18_0224A878 - .word Unk_ov18_0224A8F4 - .word Unk_ov18_0224A77C - .word Unk_ov18_0224A7D0 - .word Unk_ov18_0224A648 - .word Unk_ov18_0224A670 - .word Unk_ov18_0224A7EC - - .global Unk_ov18_0224A72C -Unk_ov18_0224A72C: ; 0x0224A72C - .asciz "DWCi_MOV_MBP_STATE_IDLE" - - .global Unk_ov18_0224A744 -Unk_ov18_0224A744: ; 0x0224A744 - .ascii "MB_COMM_PSTATE_CONNECTED" - .space 0x4 - - .global Unk_ov18_0224A760 -Unk_ov18_0224A760: ; 0x0224A760 - .ascii "DWCi_MOV_MBP_STATE_ENTRY" - .space 0x4 - - .global Unk_ov18_0224A77C -Unk_ov18_0224A77C: ; 0x0224A77C - .ascii "MB_COMM_PSTATE_REQUESTED" - .space 0x4 - - .global Unk_ov18_0224A798 -Unk_ov18_0224A798: ; 0x0224A798 - .ascii "DWCi_MOV_MBP_STATE_ERROR" - .space 0x4 - - .global Unk_ov18_0224A7B4 -Unk_ov18_0224A7B4: ; 0x0224A7B4 - .asciz "DWCi_MOV_MBP_STATE_CANCEL" - .space 0x2 - - .global Unk_ov18_0224A7D0 -Unk_ov18_0224A7D0: ; 0x0224A7D0 - .ascii "MB_COMM_PSTATE_MEMBER_FULL" - .space 0x2 - - .global Unk_ov18_0224A7EC -Unk_ov18_0224A7EC: ; 0x0224A7EC - .asciz "MB_COMM_PSTATE_WAIT_TO_SEND" - - .global Unk_ov18_0224A808 -Unk_ov18_0224A808: ; 0x0224A808 - .asciz "MB_COMM_PSTATE_DISCONNECTED" - - .global Unk_ov18_0224A824 -Unk_ov18_0224A824: ; 0x0224A824 - .asciz "DWCi_MOV_MBP_STATE_COMPLETE" - - .global Unk_ov18_0224A840 -Unk_ov18_0224A840: ; 0x0224A840 - .asciz "MB_COMM_PSTATE_REQ_ACCEPTED" - - .global Unk_ov18_0224A85C -Unk_ov18_0224A85C: ; 0x0224A85C - .asciz "MB_COMM_PSTATE_SEND_PROCEED" - - .global Unk_ov18_0224A878 -Unk_ov18_0224A878: ; 0x0224A878 - .asciz "MB_COMM_PSTATE_BOOT_REQUEST" - - .global Unk_ov18_0224A894 -Unk_ov18_0224A894: ; 0x0224A894 - .ascii "DWCi_MOV_MBP_STATE_REBOOTING" - .space 0x4 - - .global Unk_ov18_0224A8B4 -Unk_ov18_0224A8B4: ; 0x0224A8B4 - .ascii "MB_COMM_PSTATE_INIT_COMPLETE" - .space 0x4 - - .global Unk_ov18_0224A8D4 -Unk_ov18_0224A8D4: ; 0x0224A8D4 - .ascii "MB_COMM_PSTATE_SEND_COMPLETE" - .space 0x4 - - .global Unk_ov18_0224A8F4 -Unk_ov18_0224A8F4: ; 0x0224A8F4 - .ascii "MB_COMM_PSTATE_BOOT_STARTABLE" - .space 0x3 - - .global Unk_ov18_0224A914 -Unk_ov18_0224A914: ; 0x0224A914 - .ascii "DWCi_MOV_MBP_STATE_DATASENDING" - .space 0x2 - - - - .bss - - - .global Unk_ov18_0225339C -Unk_ov18_0225339C: ; 0x0225339C - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/dwc_mov_wh.s b/subprojects/NitroDWC/libraries/util/asm/dwc_mov_wh.s deleted file mode 100644 index 8754368550..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/dwc_mov_wh.s +++ /dev/null @@ -1,1865 +0,0 @@ - .include "macros/function.inc" - .include "include/dwc_mov_wh.inc" - - - - .text - - - arm_func_start ov18_02241448 -ov18_02241448: ; 0x02241448 - ldr r1, _02241480 ; =0x022533A0 - mov r2, #0 - str r0, [r1, #4] - str r2, [r0, #0x40] - ldr r0, [r1, #4] - add r0, r0, #0x1000 - str r2, [r0, #0x3a8] - ldr r0, [r1, #4] - add r0, r0, #0x1000 - str r2, [r0, #0x3ac] - ldr r0, [r1, #4] - add r0, r0, #0x1000 - str r2, [r0, #0x3b0] - bx lr - ; .align 2, 0 -_02241480: .word Unk_ov18_022533A0 - arm_func_end ov18_02241448 - - arm_func_start ov18_02241484 -ov18_02241484: ; 0x02241484 - stmfd sp!, {r4, lr} - ldr r1, _022414F0 ; =0x022533A0 - mov r4, r0 - ldr r3, [r1, #0] - cmp r3, #0 - beq _022414B8 - ldr r1, [r1, #4] - ldr r0, _022414F4 ; =0x0224AF00 - ldr r2, [r1, #0x40] - ldr r1, _022414F8 ; =0x0224AFE0 - ldr r2, [r0, r2, lsl #2] - mov r0, #0x8000000 - blx r3 -_022414B8: - ldr r0, _022414F0 ; =0x022533A0 - ldr r1, [r0, #4] - str r4, [r1, #0x40] - ldr r3, [r0, #0] - cmp r3, #0 - ldmeqia sp!, {r4, pc} - ldr r1, [r0, #4] - ldr r0, _022414F4 ; =0x0224AF00 - ldr r2, [r1, #0x40] - ldr r1, _022414FC ; =0x0224AFE8 - ldr r2, [r0, r2, lsl #2] - mov r0, #0x8000000 - blx r3 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_022414F0: .word Unk_ov18_022533A0 -_022414F4: .word Unk_ov18_0224AF00 -_022414F8: .word Unk_ov18_0224AFE0 -_022414FC: .word Unk_ov18_0224AFE8 - arm_func_end ov18_02241484 - - arm_func_start ov18_02241500 -ov18_02241500: ; 0x02241500 - ldr r1, _0224151C ; =0x022533A0 - ldr r2, [r1, #4] - ldr r1, [r2, #0x40] - sub r1, r1, #9 - cmp r1, #1 - strhi r0, [r2, #0x54] - bx lr - ; .align 2, 0 -_0224151C: .word Unk_ov18_022533A0 - arm_func_end ov18_02241500 - - arm_func_start ov18_02241520 -ov18_02241520: ; 0x02241520 - stmfd sp!, {r3, lr} - mov r0, #3 - bl ov18_02241484 - ldr r1, _0224155C ; =0x022533A0 - ldr r0, _02241560 ; =ov18_02241564 - ldr r1, [r1, #4] - bl WM_SetParentParameter - cmp r0, #2 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - bl ov18_02241500 - mov r0, #9 - bl ov18_02241484 - mov r0, #0 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0224155C: .word Unk_ov18_022533A0 -_02241560: .word ov18_02241564 - arm_func_end ov18_02241520 - - arm_func_start ov18_02241564 -ov18_02241564: ; 0x02241564 - stmfd sp!, {r3, lr} - ldrh r0, [r0, #2] - cmp r0, #0 - beq _02241584 - bl ov18_02241500 - mov r0, #9 - bl ov18_02241484 - ldmia sp!, {r3, pc} -_02241584: - ldr r0, _022415CC ; =0x022533A0 - ldr r0, [r0, #4] - add r0, r0, #0x1000 - ldr r0, [r0, #0x3ac] - cmp r0, #0 - beq _022415B4 - bl ov18_022415D0 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #9 - bl ov18_02241484 - ldmia sp!, {r3, pc} -_022415B4: - bl ov18_0224166C - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #9 - bl ov18_02241484 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022415CC: .word Unk_ov18_022533A0 - arm_func_end ov18_02241564 - - arm_func_start ov18_022415D0 -ov18_022415D0: ; 0x022415D0 - stmfd sp!, {r3, lr} - mov r0, #3 - bl ov18_02241484 - ldr r0, _0224162C ; =0x022533A0 - ldr r1, [r0, #4] - add r0, r1, #0x1000 - ldr r2, [r0, #0x3ac] - add r0, r1, #0x13c0 - blx r2 - ldr r2, _0224162C ; =0x022533A0 - mov r1, r0 - ldr r2, [r2, #4] - ldr r0, _02241630 ; =ov18_02241634 - add r2, r2, #0x13c0 - bl WM_SetWEPKey - cmp r0, #2 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - bl ov18_02241500 - mov r0, #9 - bl ov18_02241484 - mov r0, #0 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0224162C: .word Unk_ov18_022533A0 -_02241630: .word ov18_02241634 - arm_func_end ov18_022415D0 - - arm_func_start ov18_02241634 -ov18_02241634: ; 0x02241634 - stmfd sp!, {r3, lr} - ldrh r0, [r0, #2] - cmp r0, #0 - beq _02241654 - bl ov18_02241500 - mov r0, #9 - bl ov18_02241484 - ldmia sp!, {r3, pc} -_02241654: - bl ov18_0224166C - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #9 - bl ov18_02241484 - ldmia sp!, {r3, pc} - arm_func_end ov18_02241634 - - arm_func_start ov18_0224166C -ov18_0224166C: ; 0x0224166C - stmfd sp!, {r3, lr} - ldr r0, _022416C8 ; =0x022533A0 - ldr r0, [r0, #4] - ldr r0, [r0, #0x40] - sub r0, r0, #4 - cmp r0, #2 - movls r0, #1 - ldmlsia sp!, {r3, pc} - ldr r0, _022416CC ; =ov18_022416D0 - bl WM_StartParent - cmp r0, #2 - beq _022416A8 - bl ov18_02241500 - mov r0, #0 - ldmia sp!, {r3, pc} -_022416A8: - ldr r1, _022416C8 ; =0x022533A0 - mov r3, #0 - ldr r2, [r1, #4] - mov r0, #1 - strh r3, [r2, #0x50] - ldr r1, [r1, #4] - strh r0, [r1, #0x52] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022416C8: .word Unk_ov18_022533A0 -_022416CC: .word ov18_022416D0 - arm_func_end ov18_0224166C - - arm_func_start ov18_022416D0 -ov18_022416D0: ; 0x022416D0 - stmfd sp!, {r3, r4, r5, lr} - mov r4, r0 - ldrh r2, [r4, #0x10] - ldrh r0, [r4, #2] - mov r1, #1 - mov r1, r1, lsl r2 - cmp r0, #0 - mov r5, r1, lsl #0x10 - beq _02241704 - bl ov18_02241500 - mov r0, #9 - bl ov18_02241484 - ldmia sp!, {r3, r4, r5, pc} -_02241704: - ldrh ip, [r4, #8] - cmp ip, #7 - bgt _02241734 - bge _02241740 - cmp ip, #2 - bgt _0224180C - cmp ip, #0 - blt _0224180C - beq _022417F4 - cmp ip, #2 - ldmeqia sp!, {r3, r4, r5, pc} - b _0224180C -_02241734: - cmp ip, #9 - beq _022417BC - b _0224180C -_02241740: - ldr r0, _02241830 ; =0x022533A0 - ldr r3, [r0, #0] - cmp r3, #0 - beq _0224175C - ldr r1, _02241834 ; =0x0224AFEC - mov r0, #0x8000000 - blx r3 -_0224175C: - ldr r0, _02241830 ; =0x022533A0 - ldr r0, [r0, #4] - ldr r1, [r0, #0x4c] - cmp r1, #0 - beq _022417A4 - mov r0, r4 - blx r1 - cmp r0, #0 - bne _022417A4 - ldrh r1, [r4, #0x10] - mov r0, #0 - bl WM_Disconnect - cmp r0, #2 - ldmeqia sp!, {r3, r4, r5, pc} - bl ov18_02241500 - mov r0, #9 - bl ov18_02241484 - ldmia sp!, {r3, r4, r5, pc} -_022417A4: - ldr r0, _02241830 ; =0x022533A0 - ldr r1, [r0, #4] - ldrh r0, [r1, #0x52] - orr r0, r0, r5, lsr #16 - strh r0, [r1, #0x52] - ldmia sp!, {r3, r4, r5, pc} -_022417BC: - ldr r0, _02241830 ; =0x022533A0 - ldr r3, [r0, #0] - cmp r3, #0 - beq _022417D8 - ldr r1, _02241838 ; =0x0224B018 - mov r0, #0x8000000 - blx r3 -_022417D8: - ldr r0, _02241830 ; =0x022533A0 - mvn r1, r5, lsr #16 - ldr r2, [r0, #4] - ldrh r0, [r2, #0x52] - and r0, r0, r1 - strh r0, [r2, #0x52] - ldmia sp!, {r3, r4, r5, pc} -_022417F4: - bl ov18_02241840 - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, #9 - bl ov18_02241484 - ldmia sp!, {r3, r4, r5, pc} -_0224180C: - ldr r0, _02241830 ; =0x022533A0 - ldr r3, [r0, #0] - cmp r3, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, _0224183C ; =0x0224B044 - mov r2, ip - mov r0, #0x8000000 - blx r3 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02241830: .word Unk_ov18_022533A0 -_02241834: .word Unk_ov18_0224AFEC -_02241838: .word Unk_ov18_0224B018 -_0224183C: .word Unk_ov18_0224B044 - arm_func_end ov18_022416D0 - - arm_func_start ov18_02241840 -ov18_02241840: ; 0x02241840 - stmfd sp!, {r3, lr} - sub sp, sp, #8 - ldr r0, _022418D0 ; =0x022533A0 - ldr r0, [r0, #4] - ldr r0, [r0, #0x40] - sub r0, r0, #4 - cmp r0, #2 - addls sp, sp, #8 - movls r0, #1 - ldmlsia sp!, {r3, pc} - mov r0, #4 - bl ov18_02241484 - ldr r0, _022418D0 ; =0x022533A0 - mov ip, #1 - ldr lr, [r0, #4] - ldr r0, _022418D4 ; =ov18_022418D8 - add r3, lr, #0x1000 - ldr r1, [r3, #0x2a0] - add r2, lr, #0x60 - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 - stmia sp, {r1, ip} - ldr r3, [r3, #0x2a4] - add r1, r2, #0x1000 - mov r2, r3, lsl #0x10 - mov r2, r2, lsr #0x10 - add r3, lr, #0xf80 - bl WM_StartMP - cmp r0, #2 - addeq sp, sp, #8 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - bl ov18_02241500 - mov r0, #0 - add sp, sp, #8 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022418D0: .word Unk_ov18_022533A0 -_022418D4: .word ov18_022418D8 - arm_func_end ov18_02241840 - - arm_func_start ov18_022418D8 -ov18_022418D8: ; 0x022418D8 - stmfd sp!, {r3, lr} - ldrh r1, [r0, #2] - cmp r1, #0 - beq _022418FC - mov r0, r1 - bl ov18_02241500 - mov r0, #9 - bl ov18_02241484 - ldmia sp!, {r3, pc} -_022418FC: - ldrh r2, [r0, #4] - sub r0, r2, #0xa - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _022419D8 -_02241910: ; jump table - b _02241920 ; case 0 - ldmia sp!, {r3, pc} ; case 1 - b _022419D8 ; case 2 - b _022419D8 ; case 3 -_02241920: - ldr r0, _022419F8 ; =0x022533A0 - ldr r1, [r0, #4] - ldr r0, [r1, #0x44] - cmp r0, #2 - bne _02241980 - ldr r0, [r1, #0x40] - cmp r0, #4 - bne _02241974 - bl ov18_02241A04 - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _022419F8 ; =0x022533A0 - ldr r2, [r0, #0] - cmp r2, #0 - beq _02241968 - ldr r1, _022419FC ; =0x0224B064 - mov r0, #0x8000000 - blx r2 -_02241968: - mov r0, #9 - bl ov18_02241484 - ldmia sp!, {r3, pc} -_02241974: - cmp r0, #6 - bne _022419CC - ldmia sp!, {r3, pc} -_02241980: - cmp r0, #4 - bne _022419CC - add r0, r1, #0x3e0 - mov ip, #1 - add r0, r0, #0x1000 - mov r1, #0xd - mov r2, #7 - mov r3, #0x44 - str ip, [sp] - bl WM_StartDataSharing - cmp r0, #0 - beq _022419C0 - bl ov18_02241500 - mov r0, #9 - bl ov18_02241484 - ldmia sp!, {r3, pc} -_022419C0: - mov r0, #5 - bl ov18_02241484 - ldmia sp!, {r3, pc} -_022419CC: - mov r0, #4 - bl ov18_02241484 - ldmia sp!, {r3, pc} -_022419D8: - ldr r0, _022419F8 ; =0x022533A0 - ldr r3, [r0, #0] - cmp r3, #0 - ldmeqia sp!, {r3, pc} - ldr r1, _02241A00 ; =0x0224B044 - mov r0, #0x8000000 - blx r3 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022419F8: .word Unk_ov18_022533A0 -_022419FC: .word Unk_ov18_0224B064 -_02241A00: .word Unk_ov18_0224B044 - arm_func_end ov18_022418D8 - - arm_func_start ov18_02241A04 -ov18_02241A04: ; 0x02241A04 - stmfd sp!, {r3, lr} - mov r0, #6 - bl ov18_02241484 - ldr r0, _02241A3C ; =0x022533A0 - mov r1, #0xd - ldr r0, [r0, #4] - add r0, r0, #0x1e00 - bl WM_StartKeySharing - cmp r0, #2 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - bl ov18_02241500 - mov r0, #0 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02241A3C: .word Unk_ov18_022533A0 - arm_func_end ov18_02241A04 - - arm_func_start ov18_02241A40 -ov18_02241A40: ; 0x02241A40 - stmfd sp!, {r3, lr} - ldr r0, _02241A6C ; =0x022533A0 - ldr r0, [r0, #4] - add r0, r0, #0x1e00 - bl WM_EndKeySharing - cmp r0, #2 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - bl ov18_02241500 - mov r0, #0 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02241A6C: .word Unk_ov18_022533A0 - arm_func_end ov18_02241A40 - - arm_func_start ov18_02241A70 -ov18_02241A70: ; 0x02241A70 - stmfd sp!, {r3, lr} - mov r0, #3 - bl ov18_02241484 - ldr r0, _02241A9C ; =ov18_02241AA0 - bl WM_EndMP - cmp r0, #2 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - bl ov18_02241500 - mov r0, #0 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02241A9C: .word ov18_02241AA0 - arm_func_end ov18_02241A70 - - arm_func_start ov18_02241AA0 -ov18_02241AA0: ; 0x02241AA0 - stmfd sp!, {r3, lr} - ldrh r0, [r0, #2] - cmp r0, #0 - beq _02241ABC - bl ov18_02241500 - bl ov18_02242474 - ldmia sp!, {r3, pc} -_02241ABC: - bl ov18_02241AF4 - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _02241AEC ; =0x022533A0 - ldr r2, [r0, #0] - cmp r2, #0 - beq _02241AE4 - ldr r1, _02241AF0 ; =0x0224B094 - mov r0, #0x8000000 - blx r2 -_02241AE4: - bl ov18_02242474 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02241AEC: .word Unk_ov18_022533A0 -_02241AF0: .word Unk_ov18_0224B094 - arm_func_end ov18_02241AA0 - - arm_func_start ov18_02241AF4 -ov18_02241AF4: ; 0x02241AF4 - stmfd sp!, {r3, lr} - ldr r0, _02241B18 ; =ov18_02241B1C - bl WM_EndParent - cmp r0, #2 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - bl ov18_02241500 - mov r0, #0 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02241B18: .word ov18_02241B1C - arm_func_end ov18_02241AF4 - - arm_func_start ov18_02241B1C -ov18_02241B1C: ; 0x02241B1C - stmfd sp!, {r3, lr} - ldrh r0, [r0, #2] - cmp r0, #0 - beq _02241B34 - bl ov18_02241500 - ldmia sp!, {r3, pc} -_02241B34: - mov r0, #1 - bl ov18_02241484 - ldmia sp!, {r3, pc} - arm_func_end ov18_02241B1C - - arm_func_start ov18_02241B40 -ov18_02241B40: ; 0x02241B40 - stmfd sp!, {r3, lr} - ldr r0, _02241B8C ; =0x022533A0 - ldr r0, [r0, #4] - ldr r0, [r0, #0x40] - cmp r0, #6 - movne r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #3 - bl ov18_02241484 - ldr r0, _02241B8C ; =0x022533A0 - ldr r0, [r0, #4] - add r0, r0, #0x1e00 - bl WM_EndKeySharing - cmp r0, #2 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - bl ov18_02241500 - mov r0, #0 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02241B8C: .word Unk_ov18_022533A0 - arm_func_end ov18_02241B40 - - arm_func_start ov18_02241B90 -ov18_02241B90: ; 0x02241B90 - stmfd sp!, {r3, lr} - mov r0, #3 - bl ov18_02241484 - ldr r0, _02241BBC ; =ov18_02241BC0 - bl WM_EndMP - cmp r0, #2 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - bl ov18_02241500 - mov r0, #0 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02241BBC: .word ov18_02241BC0 - arm_func_end ov18_02241B90 - - arm_func_start ov18_02241BC0 -ov18_02241BC0: ; 0x02241BC0 - stmfd sp!, {r3, lr} - ldrh r0, [r0, #2] - cmp r0, #0 - beq _02241BDC - bl ov18_02241500 - bl ov18_02242490 - ldmia sp!, {r3, pc} -_02241BDC: - bl ov18_02241BF4 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #9 - bl ov18_02241484 - ldmia sp!, {r3, pc} - arm_func_end ov18_02241BC0 - - arm_func_start ov18_02241BF4 -ov18_02241BF4: ; 0x02241BF4 - stmfd sp!, {r3, lr} - mov r0, #3 - bl ov18_02241484 - ldr r0, _02241C28 ; =ov18_02241C2C - mov r1, #0 - bl WM_Disconnect - cmp r0, #2 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - bl ov18_02241500 - bl ov18_02242474 - mov r0, #0 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02241C28: .word ov18_02241C2C - arm_func_end ov18_02241BF4 - - arm_func_start ov18_02241C2C -ov18_02241C2C: ; 0x02241C2C - stmfd sp!, {r3, lr} - ldrh r0, [r0, #2] - cmp r0, #0 - beq _02241C44 - bl ov18_02241500 - ldmia sp!, {r3, pc} -_02241C44: - mov r0, #1 - bl ov18_02241484 - ldmia sp!, {r3, pc} - arm_func_end ov18_02241C2C - - arm_func_start ov18_02241C50 -ov18_02241C50: ; 0x02241C50 - stmfd sp!, {r3, lr} - mov r0, #3 - bl ov18_02241484 - ldr r0, _02241C7C ; =ov18_02241C80 - bl WM_Reset - cmp r0, #2 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - bl ov18_02241500 - mov r0, #0 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02241C7C: .word ov18_02241C80 - arm_func_end ov18_02241C50 - - arm_func_start ov18_02241C80 -ov18_02241C80: ; 0x02241C80 - stmfd sp!, {r4, lr} - mov r4, r0 - ldrh r0, [r4, #2] - cmp r0, #0 - beq _02241CA8 - mov r0, #9 - bl ov18_02241484 - ldrh r0, [r4, #2] - bl ov18_02241500 - ldmia sp!, {r4, pc} -_02241CA8: - mov r0, #1 - bl ov18_02241484 - ldmia sp!, {r4, pc} - arm_func_end ov18_02241C80 - - arm_func_start ov18_02241CB4 -ov18_02241CB4: ; 0x02241CB4 - stmfd sp!, {r3, lr} - ldrh r0, [r0, #2] - cmp r0, #0 - beq _02241CD0 - mov r0, #0xa - bl ov18_02241484 - ldmia sp!, {r3, pc} -_02241CD0: - mov r0, #0 - bl ov18_02241484 - ldmia sp!, {r3, pc} - arm_func_end ov18_02241CB4 - - arm_func_start ov18_02241CDC -ov18_02241CDC: ; 0x02241CDC - ldr r1, _02241CEC ; =0x022533A0 - ldr r1, [r1, #4] - str r0, [r1, #8] - bx lr - ; .align 2, 0 -_02241CEC: .word Unk_ov18_022533A0 - arm_func_end ov18_02241CDC - - arm_func_start ov18_02241CF0 -ov18_02241CF0: ; 0x02241CF0 - ldr r0, _02241D00 ; =0x022533A0 - ldr r0, [r0, #4] - ldrh r0, [r0, #0x52] - bx lr - ; .align 2, 0 -_02241D00: .word Unk_ov18_022533A0 - arm_func_end ov18_02241CF0 - - arm_func_start ov18_02241D04 -ov18_02241D04: ; 0x02241D04 - ldr r0, _02241D14 ; =0x022533A0 - ldr r0, [r0, #4] - ldr r0, [r0, #0x40] - bx lr - ; .align 2, 0 -_02241D14: .word Unk_ov18_022533A0 - arm_func_end ov18_02241D04 - - arm_func_start ov18_02241D18 -ov18_02241D18: ; 0x02241D18 - stmfd sp!, {r3, lr} - sub sp, sp, #8 - add r0, sp, #0 - bl OS_GetMacAddress - ldr r2, _02241DE4 ; =0x027FFC3C - ldrh r0, [sp] - ldr r3, [r2, #0] - ldrh r2, [sp, #2] - add r0, r0, r3 - ldr r1, _02241DE8 ; =0x022533A0 - add r2, r2, r0 - ldrh r3, [sp, #4] - ldr r0, [r1, #4] - add r2, r3, r2 - str r2, [r0, #0x58] - ldr ip, [r1, #4] - ldr r0, _02241DEC ; =0x00010DCD - ldr r2, [ip, #0x58] - mov r3, #0 - mul r0, r2, r0 - add r0, r0, #0x39 - add r0, r0, #0x3000 - str r0, [ip, #0x58] - ldr r0, [r1, #4] - mov r2, #0x65 - strh r3, [r0, #0x5c] - ldr r1, [r1, #4] - mov r0, #3 - strh r2, [r1, #0x5e] - bl ov18_02241484 - mov r0, #1 - bl ov18_02241DF0 - cmp r0, #0x18 - bne _02241DBC - mov r0, #0x18 - bl ov18_02241500 - mov r0, #9 - bl ov18_02241484 - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r3, pc} -_02241DBC: - cmp r0, #2 - addeq sp, sp, #8 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - bl ov18_02241500 - mov r0, #9 - bl ov18_02241484 - mov r0, #0 - add sp, sp, #8 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02241DE4: .word 0x027FFC3C -_02241DE8: .word Unk_ov18_022533A0 -_02241DEC: .word 0x00010DCD - arm_func_end ov18_02241D18 - - arm_func_start ov18_02241DF0 -ov18_02241DF0: ; 0x02241DF0 - stmfd sp!, {r4, lr} - mov r4, r0 - bl WM_GetAllowedChannel - cmp r0, #0x8000 - bne _02241E1C - mov r0, #3 - bl ov18_02241500 - mov r0, #9 - bl ov18_02241484 - mov r0, #3 - ldmia sp!, {r4, pc} -_02241E1C: - cmp r0, #0 - bne _02241E3C - mov r0, #0x16 - bl ov18_02241500 - mov r0, #9 - bl ov18_02241484 - mov r0, #0x18 - ldmia sp!, {r4, pc} -_02241E3C: - sub r1, r4, #1 - mov r2, #1 - tst r0, r2, lsl r1 - bne _02241E70 -_02241E4C: - add r1, r4, #1 - mov r1, r1, lsl #0x10 - mov r4, r1, lsr #0x10 - cmp r4, #0x10 - movhi r0, #0x18 - ldmhiia sp!, {r4, pc} - sub r1, r4, #1 - tst r0, r2, lsl r1 - beq _02241E4C -_02241E70: - ldr r0, _02241E88 ; =ov18_02241E8C - mov r1, r4 - bl ov18_02241F64 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02241E88: .word ov18_02241E8C - arm_func_end ov18_02241DF0 - - arm_func_start ov18_02241E8C -ov18_02241E8C: ; 0x02241E8C - stmfd sp!, {r4, lr} - mov r4, r0 - ldrh r0, [r4, #2] - cmp r0, #0 - beq _02241EB0 - bl ov18_02241500 - mov r0, #9 - bl ov18_02241484 - ldmia sp!, {r4, pc} -_02241EB0: - ldr r0, _02241F5C ; =0x022533A0 - ldr ip, [r0] - cmp ip, #0 - beq _02241ED4 - ldrh r2, [r4, #8] - ldrh r3, [r4, #0xa] - ldr r1, _02241F60 ; =0x0224B0EC - mov r0, #0x8000000 - blx ip -_02241ED4: - ldr r0, _02241F5C ; =0x022533A0 - ldrh r2, [r4, #0xa] - ldr r3, [r0, #4] - ldrh ip, [r4, #8] - ldrh r1, [r3, #0x5e] - cmp r1, r2 - bls _02241F0C - strh r2, [r3, #0x5e] - sub r1, ip, #1 - mov r2, #1 - mov r1, r2, lsl r1 - ldr r0, [r0, #4] - strh r1, [r0, #0x60] - b _02241F24 -_02241F0C: - bne _02241F24 - ldrh r2, [r3, #0x60] - sub r0, ip, #1 - mov r1, #1 - orr r0, r2, r1, lsl r0 - strh r0, [r3, #0x60] -_02241F24: - add r0, ip, #1 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl ov18_02241DF0 - cmp r0, #0x18 - bne _02241F48 - mov r0, #7 - bl ov18_02241484 - ldmia sp!, {r4, pc} -_02241F48: - cmp r0, #2 - ldmeqia sp!, {r4, pc} - mov r0, #9 - bl ov18_02241484 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02241F5C: .word Unk_ov18_022533A0 -_02241F60: .word Unk_ov18_0224B0EC - arm_func_end ov18_02241E8C - - arm_func_start ov18_02241F64 -ov18_02241F64: ; 0x02241F64 - stmfd sp!, {r3, lr} - mov r3, r1 - mov ip, #0x1e - mov r1, #3 - mov r2, #0x11 - str ip, [sp] - bl WM_MeasureChannel - ldmia sp!, {r3, pc} - arm_func_end ov18_02241F64 - - arm_func_start ov18_02241F84 -ov18_02241F84: ; 0x02241F84 - stmfd sp!, {r3, lr} - ldr r0, _02241FF4 ; =0x022533A0 - ldr r0, [r0, #4] - ldr r0, [r0, #0x40] - cmp r0, #7 - beq _02241FA0 - bl OS_Terminate -_02241FA0: - mov r0, #1 - bl ov18_02241484 - ldr r0, _02241FF4 ; =0x022533A0 - ldr r0, [r0, #4] - ldrh r0, [r0, #0x60] - bl ov18_02241FFC - ldr r1, _02241FF4 ; =0x022533A0 - ldr r2, [r1, #4] - strh r0, [r2, #0x5c] - ldr r3, [r1, #0] - cmp r3, #0 - beq _02241FE4 - ldr r0, [r1, #4] - ldr r1, _02241FF8 ; =0x0224B104 - ldrh r2, [r0, #0x5c] - mov r0, #0x8000000 - blx r3 -_02241FE4: - ldr r0, _02241FF4 ; =0x022533A0 - ldr r0, [r0, #4] - ldrh r0, [r0, #0x5c] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02241FF4: .word Unk_ov18_022533A0 -_02241FF8: .word Unk_ov18_0224B104 - arm_func_end ov18_02241F84 - - arm_func_start ov18_02241FFC -ov18_02241FFC: ; 0x02241FFC - stmfd sp!, {r4, lr} - mov r3, #0 - mov r1, r3 - mov ip, r3 - mov r4, #1 -_02242010: - tst r0, r4, lsl ip - beq _02242030 - add r3, ip, #1 - add r2, r1, #1 - mov r1, r3, lsl #0x10 - mov r2, r2, lsl #0x10 - mov r3, r1, asr #0x10 - mov r1, r2, lsr #0x10 -_02242030: - add r2, ip, #1 - mov r2, r2, lsl #0x10 - mov ip, r2, asr #0x10 - cmp ip, #0x10 - blt _02242010 - cmp r1, #1 - movls r0, r3 - ldmlsia sp!, {r4, pc} - ldr ip, _022420DC ; =0x022533A0 - ldr r3, _022420E0 ; =0x00010DCD - ldr r4, [ip, #4] - mov r2, #0 - ldr lr, [r4, #0x58] - mul r3, lr, r3 - add r3, r3, #0x39 - add r3, r3, #0x3000 - str r3, [r4, #0x58] - ldr r3, [ip, #4] - ldr r3, [r3, #0x58] - and r3, r3, #0xff - mul r3, r1, r3 - mov r1, r3, lsl #8 - mov r3, r1, lsr #0x10 -_0224208C: - tst r0, #1 - beq _022420B8 - cmp r3, #0 - bne _022420AC - add r0, r2, #1 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - ldmia sp!, {r4, pc} -_022420AC: - sub r1, r3, #1 - mov r1, r1, lsl #0x10 - mov r3, r1, lsr #0x10 -_022420B8: - add r1, r2, #1 - mov r1, r1, lsl #0x10 - mov r0, r0, lsl #0xf - mov r2, r1, asr #0x10 - cmp r2, #0x10 - mov r0, r0, lsr #0x10 - blt _0224208C - mov r0, #0 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_022420DC: .word Unk_ov18_022533A0 -_022420E0: .word 0x00010DCD - arm_func_end ov18_02241FFC - - arm_func_start ov18_022420E4 -ov18_022420E4: ; 0x022420E4 - stmfd sp!, {r3, lr} - ldr r2, _02242158 ; =0x022533A0 - mov r0, #0 - ldr r1, [r2, #4] - mov r3, #1 - add r1, r1, #0x1000 - str r0, [r1, #0x2a4] - ldr r1, [r2, #4] - add r1, r1, #0x1000 - str r0, [r1, #0x2a0] - ldr r1, [r2, #4] - str r0, [r1, #0x48] - ldr r1, [r2, #4] - strh r0, [r1, #0x50] - ldr r1, [r2, #4] - strh r3, [r1, #0x52] - ldr r1, [r2, #4] - str r0, [r1, #0x54] - ldr r1, [r2, #4] - str r0, [r1, #0] - ldr r1, [r2, #4] - strh r0, [r1, #4] - ldr r1, [r2, #4] - str r0, [r1, #0x4c] - bl ov18_0224217C - cmp r0, #0 - moveq r0, #0 - movne r0, #1 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02242158: .word Unk_ov18_022533A0 - arm_func_end ov18_022420E4 - - arm_func_start ov18_0224215C -ov18_0224215C: ; 0x0224215C - stmfd sp!, {r3, lr} - ldrh r0, [r0, #2] - cmp r0, #8 - ldmneia sp!, {r3, pc} - mov r0, #9 - bl ov18_02241484 - bl OS_Terminate - ldmia sp!, {r3, pc} - arm_func_end ov18_0224215C - - arm_func_start ov18_0224217C -ov18_0224217C: ; 0x0224217C - stmfd sp!, {r3, lr} - mov r0, #3 - bl ov18_02241484 - ldr r0, _022421C0 ; =0x022533A0 - ldr r1, _022421C4 ; =ov18_022421C8 - ldr r0, [r0, #4] - mov r2, #2 - add r0, r0, #0x80 - bl WM_Initialize - cmp r0, #2 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - bl ov18_02241500 - mov r0, #0xa - bl ov18_02241484 - mov r0, #0 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022421C0: .word Unk_ov18_022533A0 -_022421C4: .word ov18_022421C8 - arm_func_end ov18_0224217C - - arm_func_start ov18_022421C8 -ov18_022421C8: ; 0x022421C8 - stmfd sp!, {r3, lr} - ldrh r0, [r0, #2] - cmp r0, #0 - beq _022421E8 - bl ov18_02241500 - mov r0, #0xa - bl ov18_02241484 - ldmia sp!, {r3, pc} -_022421E8: - ldr r0, _02242214 ; =ov18_0224215C - bl WM_SetIndCallback - cmp r0, #0 - beq _02242208 - bl ov18_02241500 - mov r0, #0xa - bl ov18_02241484 - ldmia sp!, {r3, pc} -_02242208: - mov r0, #1 - bl ov18_02241484 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02242214: .word ov18_0224215C - arm_func_end ov18_022421C8 - - arm_func_start ov18_02242218 -ov18_02242218: ; 0x02242218 - stmfd sp!, {r4, r5, r6, lr} - ldr r3, _02242380 ; =0x022533A0 - mov r6, r0 - ldr r0, [r3, #4] - mov r5, r1 - ldr r0, [r0, #0x40] - mov r4, r2 - cmp r0, #1 - beq _02242244 - bl OS_Terminate - movs r0, #0 -_02242244: - ldr r1, _02242380 ; =0x022533A0 - mov r3, #0x180 - ldr r0, [r1, #4] - mov r2, #0xe0 - add r0, r0, #0x1000 - str r3, [r0, #0x2a4] - ldr r0, [r1, #4] - add r0, r0, #0x1000 - str r2, [r0, #0x2a0] - ldr r3, [r1, #0] - cmp r3, #0 - beq _0224228C - ldr r0, [r1, #4] - ldr r1, _02242384 ; =0x0224B0BC - add r0, r0, #0x1000 - ldr r2, [r0, #0x2a4] - mov r0, #0x8000000 - blx r3 -_0224228C: - ldr r0, _02242380 ; =0x022533A0 - ldr r3, [r0, #0] - cmp r3, #0 - beq _022422B4 - ldr r0, [r0, #4] - ldr r1, _02242388 ; =0x0224B0D4 - add r0, r0, #0x1000 - ldr r2, [r0, #0x2a0] - mov r0, #0x8000000 - blx r3 -_022422B4: - ldr r1, _02242380 ; =0x022533A0 - mov r0, #3 - ldr r1, [r1, #4] - str r6, [r1, #0x44] - bl ov18_02241484 - ldr r0, _02242380 ; =0x022533A0 - ldr r1, [r0, #4] - strh r5, [r1, #0xc] - ldr r0, [r0, #4] - strh r4, [r0, #0x32] - bl WM_GetDispersionBeaconPeriod - ldr r1, _02242380 ; =0x022533A0 - mov r2, #0xd0 - ldr r3, [r1, #4] - mov r4, #0x44 - strh r0, [r3, #0x18] - ldr r0, [r1, #4] - mov r3, #2 - strh r2, [r0, #0x34] - ldr r0, [r1, #4] - mov r2, #0 - strh r4, [r0, #0x36] - ldr r0, [r1, #4] - mov r4, #1 - strh r3, [r0, #0x10] - ldr r0, [r1, #4] - cmp r6, #2 - strh r2, [r0, #0x16] - ldr r0, [r1, #4] - strh r2, [r0, #0x12] - ldr r0, [r1, #4] - strh r4, [r0, #0xe] - ldr r0, _02242380 ; =0x022533A0 - movne r4, r2 - ldr r1, [r0, #4] - cmp r6, #0 - cmpne r6, #2 - strh r4, [r1, #0x14] - cmpne r6, #4 - bne _0224235C - bl ov18_02241520 - ldmia sp!, {r4, r5, r6, pc} -_0224235C: - ldr r3, [r0, #0] - cmp r3, #0 - beq _02242378 - ldr r1, _0224238C ; =0x0224B11C - mov r2, r6 - mov r0, #0x8000000 - blx r3 -_02242378: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_02242380: .word Unk_ov18_022533A0 -_02242384: .word Unk_ov18_0224B0BC -_02242388: .word Unk_ov18_0224B0D4 -_0224238C: .word Unk_ov18_0224B11C - arm_func_end ov18_02242218 - - arm_func_start ov18_02242390 -ov18_02242390: ; 0x02242390 - ldr r1, _022423A0 ; =0x022533A0 - ldr r1, [r1, #4] - str r0, [r1, #0x4c] - bx lr - ; .align 2, 0 -_022423A0: .word Unk_ov18_022533A0 - arm_func_end ov18_02242390 - - arm_func_start ov18_022423A4 -ov18_022423A4: ; 0x022423A4 - ldr r1, _022423C4 ; =0x022533A0 - ldr ip, _022423C8 ; =WM_GetSharedDataAddress - ldr r1, [r1, #4] - mov r2, r0 - add r0, r1, #0x3e0 - add r0, r0, #0x1000 - add r1, r1, #0x1c00 - bx ip - ; .align 2, 0 -_022423C4: .word Unk_ov18_022533A0 -_022423C8: .word WM_GetSharedDataAddress - arm_func_end ov18_022423A4 - - arm_func_start ov18_022423CC -ov18_022423CC: ; 0x022423CC - stmfd sp!, {r4, lr} - ldr r2, _02242468 ; =0x022533A0 - mov r1, r0 - ldr r2, [r2, #4] - add r0, r2, #0x3e0 - add r0, r0, #0x1000 - add r2, r2, #0x1c00 - bl WM_StepDataSharing - mov r4, r0 - cmp r4, #7 - bne _0224241C - ldr r0, _02242468 ; =0x022533A0 - ldr r2, [r0, #0] - cmp r2, #0 - beq _02242414 - ldr r1, _0224246C ; =0x0224B138 - mov r0, #0x8000000 - blx r2 -_02242414: - mov r0, #0 - ldmia sp!, {r4, pc} -_0224241C: - cmp r4, #5 - bne _02242450 - ldr r0, _02242468 ; =0x022533A0 - ldr r2, [r0, #0] - cmp r2, #0 - beq _02242440 - ldr r1, _02242470 ; =0x0224B168 - mov r0, #0x8000000 - blx r2 -_02242440: - mov r0, r4 - bl ov18_02241500 - mov r0, #0 - ldmia sp!, {r4, pc} -_02242450: - cmp r4, #0 - moveq r0, #1 - ldmeqia sp!, {r4, pc} - bl ov18_02241500 - mov r0, #0 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02242468: .word Unk_ov18_022533A0 -_0224246C: .word Unk_ov18_0224B138 -_02242470: .word Unk_ov18_0224B168 - arm_func_end ov18_022423CC - - arm_func_start ov18_02242474 -ov18_02242474: ; 0x02242474 - stmfd sp!, {r3, lr} - bl ov18_02241C50 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0xa - bl ov18_02241484 - ldmia sp!, {r3, pc} - arm_func_end ov18_02242474 - - arm_func_start ov18_02242490 -ov18_02242490: ; 0x02242490 - stmfd sp!, {r3, lr} - ldr r0, _0224258C ; =0x022533A0 - ldr r1, [r0, #4] - ldr r2, [r1, #0x40] - cmp r2, #1 - bne _022424C4 - ldr r2, [r0, #0] - cmp r2, #0 - ldmeqia sp!, {r3, pc} - ldr r1, _02242590 ; =0x0224B19C - mov r0, #0x8000000 - blx r2 - ldmia sp!, {r3, pc} -_022424C4: - ldr r3, [r0, #0] - cmp r3, #0 - beq _022424DC - ldr r1, _02242594 ; =0x0224B1C0 - mov r0, #0x8000000 - blx r3 -_022424DC: - ldr r0, _0224258C ; =0x022533A0 - ldr r0, [r0, #4] - ldr r0, [r0, #0x40] - cmp r0, #6 - cmpne r0, #5 - cmpne r0, #4 - mov r0, #3 - beq _02242508 - bl ov18_02241484 - bl ov18_02242474 - ldmia sp!, {r3, pc} -_02242508: - bl ov18_02241484 - ldr r0, _0224258C ; =0x022533A0 - ldr r0, [r0, #4] - ldr r0, [r0, #0x44] - cmp r0, #5 - addls pc, pc, r0, lsl #2 - ldmia sp!, {r3, pc} -_02242524: ; jump table - b _02242578 ; case 0 - b _02242550 ; case 1 - b _02242564 ; case 2 - b _0224253C ; case 3 - b _02242578 ; case 4 - b _02242550 ; case 5 -_0224253C: - bl ov18_02241B40 - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_02242474 - ldmia sp!, {r3, pc} -_02242550: - bl ov18_02241B90 - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_02242474 - ldmia sp!, {r3, pc} -_02242564: - bl ov18_02241A40 - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_02242474 - ldmia sp!, {r3, pc} -_02242578: - bl ov18_02241A70 - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_02242474 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0224258C: .word Unk_ov18_022533A0 -_02242590: .word Unk_ov18_0224B19C -_02242594: .word Unk_ov18_0224B1C0 - arm_func_end ov18_02242490 - - arm_func_start ov18_02242598 -ov18_02242598: ; 0x02242598 - stmfd sp!, {r3, lr} - ldr r0, _022425E0 ; =0x022533A0 - ldr r0, [r0, #4] - ldr r0, [r0, #0x40] - cmp r0, #1 - beq _022425B4 - bl OS_Terminate -_022425B4: - mov r0, #3 - bl ov18_02241484 - ldr r0, _022425E4 ; =ov18_02241CB4 - bl WM_End - cmp r0, #2 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - mov r0, #9 - bl ov18_02241484 - mov r0, #0 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022425E0: .word Unk_ov18_022533A0 -_022425E4: .word ov18_02241CB4 - arm_func_end ov18_02242598 - - .data - - - .global Unk_ov18_0224A934 -Unk_ov18_0224A934: ; 0x0224A934 - .asciz "N/A" - - .global Unk_ov18_0224A938 -Unk_ov18_0224A938: ; 0x0224A938 - .asciz "WM_ERRCODE_FAILED" - .space 0x2 - - .global Unk_ov18_0224A94C -Unk_ov18_0224A94C: ; 0x0224A94C - .ascii "WM_ERRCODE_NO_DATA" - .space 0x2 - - .global Unk_ov18_0224A960 -Unk_ov18_0224A960: ; 0x0224A960 - .ascii "WM_ERRCODE_TIMEOUT" - .space 0x2 - - .global Unk_ov18_0224A974 -Unk_ov18_0224A974: ; 0x0224A974 - .ascii "WM_ERRCODE_SUCCESS" - .space 0x2 - - .global Unk_ov18_0224A988 -Unk_ov18_0224A988: ; 0x0224A988 - .asciz "WM_STATECODE_MP_IND" - - .global Unk_ov18_0224A99C -Unk_ov18_0224A99C: ; 0x0224A99C - .asciz "WM_ERRCODE_DCF_TEST" - - .global Unk_ov18_0224A9B0 -Unk_ov18_0224A9B0: ; 0x0224A9B0 - .asciz "WM_ERRCODE_NO_ENTRY" - - .global Unk_ov18_0224A9C4 -Unk_ov18_0224A9C4: ; 0x0224A9C4 - .asciz "WM_ERRCODE_NO_CHILD" - - .global Unk_ov18_0224A9D8 -Unk_ov18_0224A9D8: ; 0x0224A9D8 - .ascii "WM_ERRCODE_OPERATING" - .space 0x4 - - .global Unk_ov18_0224A9F0 -Unk_ov18_0224A9F0: ; 0x0224A9F0 - .ascii "WM_STATECODE_DCF_IND" - .space 0x4 - - .global Unk_ov18_0224AA08 -Unk_ov18_0224AA08: ; 0x0224AA08 - .asciz "WM_STATECODE_MP_START" - .space 0x2 - - .global Unk_ov18_0224AA20 -Unk_ov18_0224AA20: ; 0x0224AA20 - .asciz "WM_ERRCODE_FIFO_ERROR" - .space 0x2 - - .global Unk_ov18_0224AA38 -Unk_ov18_0224AA38: ; 0x0224AA38 - .asciz "WM_ERRCODE_NO_DATASET" - .space 0x2 - - .global Unk_ov18_0224AA50 -Unk_ov18_0224AA50: ; 0x0224AA50 - .asciz "WM_ERRCODE_WM_DISABLE" - .space 0x2 - - .global Unk_ov18_0224AA68 -Unk_ov18_0224AA68: ; 0x0224AA68 - .ascii "WM_STATECODE_PORT_RECV" - .space 0x2 - - .global Unk_ov18_0224AA80 -Unk_ov18_0224AA80: ; 0x0224AA80 - .ascii "WM_STATECODE_CONNECTED" - .space 0x2 - - .global Unk_ov18_0224AA98 -Unk_ov18_0224AA98: ; 0x0224AA98 - .ascii "WM_STATECODE_MPACK_IND" - .space 0x2 - - .global Unk_ov18_0224AAB0 -Unk_ov18_0224AAB0: ; 0x0224AAB0 - .ascii "WM_ERRCODE_SEND_FAILED" - .space 0x2 - - .global Unk_ov18_0224AAC8 -Unk_ov18_0224AAC8: ; 0x0224AAC8 - .ascii "WM_STATECODE_DCF_START" - .space 0x2 - - .global Unk_ov18_0224AAE0 -Unk_ov18_0224AAE0: ; 0x0224AAE0 - .ascii "WM_ERRCODE_FLASH_ERROR" - .space 0x2 - - .global Unk_ov18_0224AAF8 -Unk_ov18_0224AAF8: ; 0x0224AAF8 - .ascii "WM_STATECODE_MPEND_IND" - .space 0x2 - - .global Unk_ov18_0224AB10 -Unk_ov18_0224AB10: ; 0x0224AB10 - .ascii "WM_STATECODE_PORT_SEND" - .space 0x2 - - .global Unk_ov18_0224AB28 -Unk_ov18_0224AB28: ; 0x0224AB28 - .asciz "WM_STATECODE_SCAN_START" - - .global Unk_ov18_0224AB40 -Unk_ov18_0224AB40: ; 0x0224AB40 - .asciz "WM_STATECODE_FIFO_ERROR" - - .global Unk_ov18_0224AB58 -Unk_ov18_0224AB58: ; 0x0224AB58 - .ascii "WM_ERRCODE_ILLEGAL_STATE" - .space 0x4 - - .global Unk_ov18_0224AB74 -Unk_ov18_0224AB74: ; 0x0224AB74 - .ascii "WM_STATECODE_BEACON_LOST" - .space 0x4 - - .global Unk_ov18_0224AB90 -Unk_ov18_0224AB90: ; 0x0224AB90 - .ascii "WM_ERRCODE_INVALID_PARAM" - .space 0x4 - - .global Unk_ov18_0224ABAC -Unk_ov18_0224ABAC: ; 0x0224ABAC - .ascii "WM_ERRCODE_WL_LENGTH_ERR" - .space 0x4 - - .global Unk_ov18_0224ABC8 -Unk_ov18_0224ABC8: ; 0x0224ABC8 - .ascii "WM_STATECODE_BEACON_RECV" - .space 0x4 - - .global Unk_ov18_0224ABE4 -Unk_ov18_0224ABE4: ; 0x0224ABE4 - .ascii "WM_STATECODE_REASSOCIATE" - .space 0x4 - - .global Unk_ov18_0224AC00 -Unk_ov18_0224AC00: ; 0x0224AC00 - .ascii "WM_STATECODE_BEACON_SENT" - .space 0x4 - - .global Unk_ov18_0224AC1C -Unk_ov18_0224AC1C: ; 0x0224AC1C - .asciz "WM_STATECODE_PARENT_FOUND" - .space 0x2 - - .global Unk_ov18_0224AC38 -Unk_ov18_0224AC38: ; 0x0224AC38 - .asciz "WM_STATECODE_DISCONNECTED" - .space 0x2 - - .global Unk_ov18_0224AC54 -Unk_ov18_0224AC54: ; 0x0224AC54 - .asciz "DWCi_MOV_WH_SYSSTATE_STOP" - .space 0x2 - - .global Unk_ov18_0224AC70 -Unk_ov18_0224AC70: ; 0x0224AC70 - .asciz "WM_ERRCODE_OVER_MAX_ENTRY" - .space 0x2 - - .global Unk_ov18_0224AC8C -Unk_ov18_0224AC8C: ; 0x0224AC8C - .asciz "DWCi_MOV_WH_SYSSTATE_IDLE" - .space 0x2 - - .global Unk_ov18_0224ACA8 -Unk_ov18_0224ACA8: ; 0x0224ACA8 - .asciz "WM_STATECODE_DISASSOCIATE" - .space 0x2 - - .global Unk_ov18_0224ACC4 -Unk_ov18_0224ACC4: ; 0x0224ACC4 - .asciz "WM_STATECODE_PARENT_START" - .space 0x2 - - .global Unk_ov18_0224ACE0 -Unk_ov18_0224ACE0: ; 0x0224ACE0 - .asciz "DWCi_MOV_WH_SYSSTATE_BUSY" - .space 0x2 - - .global Unk_ov18_0224ACFC -Unk_ov18_0224ACFC: ; 0x0224ACFC - .asciz "WM_STATECODE_AUTHENTICATE" - .space 0x2 - - .global Unk_ov18_0224AD18 -Unk_ov18_0224AD18: ; 0x0224AD18 - .ascii "WM_STATECODE_CONNECT_START" - .space 0x2 - - .global Unk_ov18_0224AD34 -Unk_ov18_0224AD34: ; 0x0224AD34 - .ascii "DWCi_MOV_WH_SYSSTATE_ERROR" - .space 0x2 - - .global Unk_ov18_0224AD50 -Unk_ov18_0224AD50: ; 0x0224AD50 - .ascii "WM_ERRCODE_SEND_QUEUE_FULL" - .space 0x2 - - .global Unk_ov18_0224AD6C -Unk_ov18_0224AD6C: ; 0x0224AD6C - .asciz "WM_ERRCODE_WL_INVALID_PARAM" - - .global Unk_ov18_0224AD88 -Unk_ov18_0224AD88: ; 0x0224AD88 - .ascii "DWCi_MOV_WH_ERRCODE_NO_RADIO" - .space 0x4 - - .global Unk_ov18_0224ADA8 -Unk_ov18_0224ADA8: ; 0x0224ADA8 - .asciz "WM_ERRCODE_INVALID_POLLBITMAP" - .space 0x2 - - .global Unk_ov18_0224ADC8 -Unk_ov18_0224ADC8: ; 0x0224ADC8 - .asciz "DWCi_MOV_WH_SYSSTATE_SCANNING" - .space 0x2 - - .global Unk_ov18_0224ADE8 -Unk_ov18_0224ADE8: ; 0x0224ADE8 - .asciz "WM_STATECODE_PARENT_NOT_FOUND" - .space 0x2 - - .global Unk_ov18_0224AE08 -Unk_ov18_0224AE08: ; 0x0224AE08 - .ascii "DWCi_MOV_WH_SYSSTATE_CONNECTED" - .space 0x2 - - .global Unk_ov18_0224AE28 -Unk_ov18_0224AE28: ; 0x0224AE28 - .asciz "DWCi_MOV_WH_SYSSTATE_KEYSHARING" - - .global Unk_ov18_0224AE48 -Unk_ov18_0224AE48: ; 0x0224AE48 - .ascii "DWCi_MOV_WH_SYSSTATE_DATASHARING" - .space 0x4 - - .global Unk_ov18_0224AE6C -Unk_ov18_0224AE6C: ; 0x0224AE6C - .ascii "DWCi_MOV_WH_ERRCODE_DISCONNECTED" - .space 0x4 - - .global Unk_ov18_0224AE90 -Unk_ov18_0224AE90: ; 0x0224AE90 - .asciz "DWCi_MOV_WH_SYSSTATE_CONNECT_FAIL" - .space 0x2 - - .global Unk_ov18_0224AEB4 -Unk_ov18_0224AEB4: ; 0x0224AEB4 - .asciz "DWCi_MOV_WH_SYSSTATE_MEASURECHANNEL" - - .global Unk_ov18_0224AED8 -Unk_ov18_0224AED8: ; 0x0224AED8 - .ascii "DWCi_MOV_WH_ERRCODE_PARENT_NOT_FOUND" - .space 0x4 - - .global Unk_ov18_0224AF00 -Unk_ov18_0224AF00: ; 0x0224AF00 - .word Unk_ov18_0224AC54 - .word Unk_ov18_0224AC8C - .word Unk_ov18_0224ADC8 - .word Unk_ov18_0224ACE0 - .word Unk_ov18_0224AE08 - .word Unk_ov18_0224AE48 - .word Unk_ov18_0224AE28 - .word Unk_ov18_0224AEB4 - .word Unk_ov18_0224AE90 - .word Unk_ov18_0224AD34 - - .global Unk_ov18_0224AF28 -Unk_ov18_0224AF28: ; 0x0224AF28 - .word Unk_ov18_0224ACC4 - .word Unk_ov18_0224A934 - .word Unk_ov18_0224AC00 - .word Unk_ov18_0224AB28 - .word Unk_ov18_0224ADE8 - .word Unk_ov18_0224AC1C - .word Unk_ov18_0224AD18 - .word Unk_ov18_0224AA80 - .word Unk_ov18_0224AB74 - .word Unk_ov18_0224AC38 - .word Unk_ov18_0224AA08 - .word Unk_ov18_0224AAF8 - .word Unk_ov18_0224A988 - .word Unk_ov18_0224AA98 - .word Unk_ov18_0224AAC8 - .word Unk_ov18_0224A9F0 - .word Unk_ov18_0224ABC8 - .word Unk_ov18_0224ACA8 - .word Unk_ov18_0224ABE4 - .word Unk_ov18_0224ACFC - .word Unk_ov18_0224AB10 - .word Unk_ov18_0224AA68 - .word Unk_ov18_0224AB40 - - .global Unk_ov18_0224AF84 -Unk_ov18_0224AF84: ; 0x0224AF84 - .word Unk_ov18_0224A974 - .word Unk_ov18_0224A938 - .word Unk_ov18_0224A9D8 - .word Unk_ov18_0224AB58 - .word Unk_ov18_0224AA50 - .word Unk_ov18_0224AA38 - .word Unk_ov18_0224AB90 - .word Unk_ov18_0224A9C4 - .word Unk_ov18_0224AA20 - .word Unk_ov18_0224A960 - .word Unk_ov18_0224AD50 - .word Unk_ov18_0224A9B0 - .word Unk_ov18_0224AC70 - .word Unk_ov18_0224ADA8 - .word Unk_ov18_0224A94C - .word Unk_ov18_0224AAB0 - .word Unk_ov18_0224A99C - .word Unk_ov18_0224AD6C - .word Unk_ov18_0224ABAC - .word Unk_ov18_0224AAE0 - .word Unk_ov18_0224AE6C - .word Unk_ov18_0224AED8 - .word Unk_ov18_0224AD88 - - .global Unk_ov18_0224AFE0 -Unk_ov18_0224AFE0: ; 0x0224AFE0 - .ascii "%s -> " - .space 0x2 - - .global Unk_ov18_0224AFE8 -Unk_ov18_0224AFE8: ; 0x0224AFE8 - .ascii "%s" - .byte 0xA - .space 0x1 - - .global Unk_ov18_0224AFEC -Unk_ov18_0224AFEC: ; 0x0224AFEC - .ascii "StartParent - new child (aid %x) connected" - .byte 0xA - .space 0x1 - - .global Unk_ov18_0224B018 -Unk_ov18_0224B018: ; 0x0224B018 - .ascii "StartParent - child (aid %x) disconnected" - .byte 0xA - .space 0x2 - - .global Unk_ov18_0224B044 -Unk_ov18_0224B044: ; 0x0224B044 - .ascii "unknown indicate, state = %d" - .byte 0xA - .space 0x3 - - .global Unk_ov18_0224B064 -Unk_ov18_0224B064: ; 0x0224B064 - .ascii "DWCi_MOV_WH_StateInStartParentKeyShare failed" - .byte 0xA - .space 0x2 - - .global Unk_ov18_0224B094 -Unk_ov18_0224B094: ; 0x0224B094 - .ascii "DWCi_MOV_WH_StateInEndParent failed" - .byte 0xA - .space 0x4 - - .global Unk_ov18_0224B0BC -Unk_ov18_0224B0BC: ; 0x0224B0BC - .ascii "recv buffer size = %d" - .byte 0xA - .space 0x2 - - .global Unk_ov18_0224B0D4 -Unk_ov18_0224B0D4: ; 0x0224B0D4 - .ascii "send buffer size = %d" - .byte 0xA - .space 0x2 - - .global Unk_ov18_0224B0EC -Unk_ov18_0224B0EC: ; 0x0224B0EC - .ascii "channel %d bratio = %x" - .byte 0xA - .space 0x1 - - .global Unk_ov18_0224B104 -Unk_ov18_0224B104: ; 0x0224B104 - .ascii "decided channel = %d" - .byte 0xA - .space 0x3 - - .global Unk_ov18_0224B11C -Unk_ov18_0224B11C: ; 0x0224B11C - .ascii "unknown connect mode %d" - .byte 0xA - .space 0x4 - - .global Unk_ov18_0224B138 -Unk_ov18_0224B138: ; 0x0224B138 - .ascii "DWCi_MOV_WH_StepDataSharing - Warning No Child" - .byte 0xA - .space 0x1 - - .global Unk_ov18_0224B168 -Unk_ov18_0224B168: ; 0x0224B168 - .ascii "DWCi_MOV_WH_StepDataSharing - Warning No DataSet" - .byte 0xA - .space 0x3 - - .global Unk_ov18_0224B19C -Unk_ov18_0224B19C: ; 0x0224B19C - .ascii "already DWCi_MOV_WH_SYSSTATE_IDLE" - .byte 0xA - .space 0x2 - - .global Unk_ov18_0224B1C0 -Unk_ov18_0224B1C0: ; 0x0224B1C0 - .ascii "DWCi_MOV_WH_Finalize, state = %d" - .byte 0xA - .space 0x1 - - - - .bss - - - .global Unk_ov18_022533A0 -Unk_ov18_022533A0: ; 0x022533A0 - .space 0x4 - - .global Unk_ov18_022533A4 -Unk_ov18_022533A4: ; 0x022533A4 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/dwc_moveid.s b/subprojects/NitroDWC/libraries/util/asm/dwc_moveid.s deleted file mode 100644 index 265d77541a..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/dwc_moveid.s +++ /dev/null @@ -1,1103 +0,0 @@ - .include "macros/function.inc" - .include "include/dwc_moveid.inc" - - - - .text - - - arm_func_start ov18_022425E8 -ov18_022425E8: ; 0x022425E8 - stmfd sp!, {r4, lr} - ldr r2, _022426D4 ; =0x022533A8 - mov r4, r1 - str r0, [r2, #0] - add r0, r0, #0xb00 - bl ov18_022407B0 - ldr r1, _022426D4 ; =0x022533A8 - mov r3, #0 - ldr r0, [r1, #0] - mov r2, #1 - add r0, r0, #0x600 - strh r3, [r0, #0x48] - ldr r0, [r1, #0] - add r0, r0, #0x600 - strh r3, [r0, #0x4a] - ldr r0, [r1, #0] - strb r2, [r0, #0xa90] - ldr r0, [r1, #0] - strb r2, [r0, #0xa91] - ldr r0, [r1, #0] - str r3, [r0, #0xa9c] - bl ov18_02243198 - ldr r0, _022426D4 ; =0x022533A8 - ldr r3, [r4, #0] - ldr r2, [r0, #0] - mov r1, #2 - str r3, [r2, #0xab4] - ldr r3, [r4, #4] - ldr r2, [r0, #0] - str r3, [r2, #0xab8] - ldr r3, [r4, #8] - ldr r2, [r0, #0] - str r3, [r2, #0xabc] - ldr r3, [r4, #0xc] - ldr r2, [r0, #0] - str r3, [r2, #0xac0] - ldr r3, [r4, #0x10] - ldr r2, [r0, #0] - str r3, [r2, #0xac4] - ldr r3, [r4, #0x14] - ldr r2, [r0, #0] - str r3, [r2, #0xac8] - ldrb r3, [r4, #0x18] - ldr r2, [r0, #0] - strb r3, [r2, #0xa92] - ldr r0, [r0, #0] - strb r1, [r0, #0xacc] - bl OS_GetTick - ldr r0, _022426D4 ; =0x022533A8 - ldr r0, [r0, #0] - add r0, r0, #0x24c - add r0, r0, #0x400 - bl sub_020A2A34 - bl OS_GetTick - bl ov18_0223E5D0 - ldr r1, _022426D4 ; =0x022533A8 - ldr r1, [r1, #0] - str r0, [r1, #0xaa4] - ldmia sp!, {r4, pc} - ; .align 2, 0 -_022426D4: .word Unk_ov18_022533A8 - arm_func_end ov18_022425E8 - - arm_func_start ov18_022426D8 -ov18_022426D8: ; 0x022426D8 - stmfd sp!, {r3, lr} - ldr r0, _022427B0 ; =0x022533A8 - ldr r2, [r0, #0] - ldrb r1, [r2, #0xa90] - cmp r1, #1 - cmpne r1, #0x14 - cmpne r1, #0x17 - cmpne r1, #0x1a - cmpne r1, #0x1d - bne _02242720 - mov r1, #0x22 - strb r1, [r2, #0xa90] - ldr r0, _022427B0 ; =0x022533A8 - mov r1, #0 - ldr r0, [r0, #0] - strb r1, [r0, #0xaac] - mov r0, #1 - ldmia sp!, {r3, pc} -_02242720: - cmp r1, #4 - cmpne r1, #5 - cmpne r1, #6 - cmpne r1, #0xd - bne _02242774 - cmp r1, #4 - bne _0224274C - ldr r0, [r2, #0xa98] - cmp r0, #6 - movlo r0, #0 - ldmloia sp!, {r3, pc} -_0224274C: - bl MB_EndToIdle - ldr r0, _022427B0 ; =0x022533A8 - mov r3, #0x10 - ldr r1, [r0, #0] - mov r2, #2 - strb r3, [r1, #0xa90] - ldr r1, [r0, #0] - mov r0, #1 - strb r2, [r1, #0xaac] - ldmia sp!, {r3, pc} -_02242774: - add r0, r1, #0xf7 - and r0, r0, #0xff - cmp r0, #1 - bhi _02242794 - mov r0, #0x20 - strb r0, [r2, #0xa90] - mov r0, #1 - ldmia sp!, {r3, pc} -_02242794: - cmp r1, #0xc - movne r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0x22 - strb r0, [r2, #0xa90] - mov r0, #1 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022427B0: .word Unk_ov18_022533A8 - arm_func_end ov18_022426D8 - - arm_func_start ov18_022427B4 -ov18_022427B4: ; 0x022427B4 - stmfd sp!, {r3, lr} - ldr r0, _02242830 ; =0x022533A8 - ldr r0, [r0, #0] - ldr r0, [r0, #0xac8] - bl ov18_02241CDC - ldr r0, _02242830 ; =0x022533A8 - mov r1, #1 - ldr r0, [r0, #0] - strb r1, [r0, #0xa90] - bl WM_GetNextTgid - ldr r3, _02242830 ; =0x022533A8 - mov r2, #0x40 - ldr r1, [r3, #0] - add r1, r1, #0x600 - strh r0, [r1, #0x48] - ldr r1, [r3, #0] - ldr r0, [r1, #0xaa4] - add r1, r1, #0xa50 - bl MI_CpuCopy8 - ldr r0, _02242830 ; =0x022533A8 - mov r2, #0 - ldr r1, [r0, #0] - strb r2, [r1, #0xa93] - ldr r1, [r0, #0] - str r2, [r1, #0x204] - ldr r0, [r0, #0] - add r0, r0, #0x600 - ldrh r1, [r0, #0x48] - add r1, r1, #1 - strh r1, [r0, #0x48] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02242830: .word Unk_ov18_022533A8 - arm_func_end ov18_022427B4 - - arm_func_start ov18_02242834 -ov18_02242834: ; 0x02242834 - stmfd sp!, {r3, lr} - ldr r0, _02242878 ; =0x022533A8 - ldr r0, [r0, #0] - ldrb r0, [r0, #0xa90] - cmp r0, #1 - cmpne r0, #0x1a - cmpne r0, #0x1d - movne r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_022427B4 - bl ov18_022420E4 - ldr r0, _02242878 ; =0x022533A8 - mov r2, #2 - ldr r1, [r0, #0] - mov r0, #1 - strb r2, [r1, #0xa90] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02242878: .word Unk_ov18_022533A8 - arm_func_end ov18_02242834 - - arm_func_start ov18_0224287C -ov18_0224287C: ; 0x0224287C - stmfd sp!, {r3, lr} - ldr r0, _022428AC ; =0x022533A8 - ldr r1, [r0, #0] - ldrb r0, [r1, #0xa90] - cmp r0, #5 - movne r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #6 - strb r0, [r1, #0xa90] - bl ov18_02240C7C - mov r0, #1 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022428AC: .word Unk_ov18_022533A8 - arm_func_end ov18_0224287C - - arm_func_start ov18_022428B0 -ov18_022428B0: ; 0x022428B0 - stmfd sp!, {r3, lr} - ldr r1, _02242C2C ; =0x022533A8 - ldr r0, [r1, #0] - ldrb r2, [r0, #0xa90] - cmp r2, #0x22 - addls pc, pc, r2, lsl #2 - ldmia sp!, {r3, pc} -_022428CC: ; jump table - ldmia sp!, {r3, pc} ; case 0 - b _02242958 ; case 1 - b _02242994 ; case 2 - b _0224299C ; case 3 - b _022429B4 ; case 4 - b _022429C8 ; case 5 - b _022429C8 ; case 6 - b _022429D0 ; case 7 - b _022429D8 ; case 8 - b _022429D8 ; case 9 - b _022429D8 ; case 10 - b _022429E0 ; case 11 - ldmia sp!, {r3, pc} ; case 12 - ldmia sp!, {r3, pc} ; case 13 - ldmia sp!, {r3, pc} ; case 14 - ldmia sp!, {r3, pc} ; case 15 - b _022429E8 ; case 16 - b _02242A00 ; case 17 - b _02242A1C ; case 18 - b _02242A40 ; case 19 - ldmia sp!, {r3, pc} ; case 20 - b _02242A78 ; case 21 - b _02242A9C ; case 22 - ldmia sp!, {r3, pc} ; case 23 - b _02242AD4 ; case 24 - b _02242AF8 ; case 25 - ldmia sp!, {r3, pc} ; case 26 - b _02242B30 ; case 27 - b _02242B54 ; case 28 - ldmia sp!, {r3, pc} ; case 29 - b _02242C24 ; case 30 - ldmia sp!, {r3, pc} ; case 31 - b _02242BC8 ; case 32 - b _02242BEC ; case 33 - ldmia sp!, {r3, pc} ; case 34 -_02242958: - ldrb r2, [r0, #0xaac] - cmp r2, #1 - bne _02242974 - mov r1, #0 - strb r1, [r0, #0xaac] - bl ov18_02242834 - ldmia sp!, {r3, pc} -_02242974: - cmp r2, #2 - ldmneia sp!, {r3, pc} - mov r2, #0 - strb r2, [r0, #0xaac] - ldr r0, [r1, #0] - mov r1, #0x22 - strb r1, [r0, #0xa90] - ldmia sp!, {r3, pc} -_02242994: - bl ov18_02242C88 - ldmia sp!, {r3, pc} -_0224299C: - bl ov18_02242D30 - ldr r0, _02242C2C ; =0x022533A8 - mov r1, #4 - ldr r0, [r0, #0] - strb r1, [r0, #0xa90] - ldmia sp!, {r3, pc} -_022429B4: - ldr r1, [r0, #0xa98] - add r1, r1, #1 - str r1, [r0, #0xa98] - bl ov18_02242D54 - ldmia sp!, {r3, pc} -_022429C8: - bl ov18_02242D54 - ldmia sp!, {r3, pc} -_022429D0: - bl ov18_02242F0C - ldmia sp!, {r3, pc} -_022429D8: - bl ov18_02242F38 - ldmia sp!, {r3, pc} -_022429E0: - bl ov18_02243114 - ldmia sp!, {r3, pc} -_022429E8: - mov r2, #0 - str r2, [r0, #0xa9c] - ldr r0, [r1, #0] - mov r1, #0x11 - strb r1, [r0, #0xa90] - ldmia sp!, {r3, pc} -_02242A00: - ldr r2, [r0, #0xa9c] - add r1, r2, #1 - str r1, [r0, #0xa9c] - cmp r2, #0x1e - ldmlsia sp!, {r3, pc} - bl ov18_0224312C - ldmia sp!, {r3, pc} -_02242A1C: - bl MB_EndToIdle - ldr r0, _02242C2C ; =0x022533A8 - mov r3, #0 - ldr r2, [r0, #0] - mov r1, #0x16 - str r3, [r2, #0xa9c] - ldr r0, [r0, #0] - strb r1, [r0, #0xa90] - ldmia sp!, {r3, pc} -_02242A40: - ldr r2, [r0, #0xa9c] - add r1, r2, #1 - str r1, [r0, #0xa9c] - cmp r2, #0x1e - ldmlsia sp!, {r3, pc} - bl ov18_02241D04 - cmp r0, #1 - ldmneia sp!, {r3, pc} - bl ov18_02242598 - ldr r0, _02242C2C ; =0x022533A8 - mov r1, #0x14 - ldr r0, [r0, #0] - strb r1, [r0, #0xa90] - ldmia sp!, {r3, pc} -_02242A78: - bl ov18_02242490 - ldr r0, _02242C2C ; =0x022533A8 - mov r3, #0 - ldr r2, [r0, #0] - mov r1, #0x16 - str r3, [r2, #0xa9c] - ldr r0, [r0, #0] - strb r1, [r0, #0xa90] - ldmia sp!, {r3, pc} -_02242A9C: - ldr r2, [r0, #0xa9c] - add r1, r2, #1 - str r1, [r0, #0xa9c] - cmp r2, #0x1e - ldmlsia sp!, {r3, pc} - bl ov18_02241D04 - cmp r0, #1 - ldmneia sp!, {r3, pc} - bl ov18_02242598 - ldr r0, _02242C2C ; =0x022533A8 - mov r1, #0x17 - ldr r0, [r0, #0] - strb r1, [r0, #0xa90] - ldmia sp!, {r3, pc} -_02242AD4: - bl ov18_02242490 - ldr r0, _02242C2C ; =0x022533A8 - mov r3, #0 - ldr r2, [r0, #0] - mov r1, #0x19 - str r3, [r2, #0xa9c] - ldr r0, [r0, #0] - strb r1, [r0, #0xa90] - ldmia sp!, {r3, pc} -_02242AF8: - ldr r2, [r0, #0xa9c] - add r1, r2, #1 - str r1, [r0, #0xa9c] - cmp r2, #0x1e - ldmlsia sp!, {r3, pc} - bl ov18_02241D04 - cmp r0, #1 - ldmneia sp!, {r3, pc} - bl ov18_02242598 - ldr r0, _02242C2C ; =0x022533A8 - mov r1, #0x1a - ldr r0, [r0, #0] - strb r1, [r0, #0xa90] - ldmia sp!, {r3, pc} -_02242B30: - bl ov18_02242490 - ldr r0, _02242C2C ; =0x022533A8 - mov r3, #0 - ldr r2, [r0, #0] - mov r1, #0x1c - str r3, [r2, #0xa9c] - ldr r0, [r0, #0] - strb r1, [r0, #0xa90] - ldmia sp!, {r3, pc} -_02242B54: - ldr r2, [r0, #0xa9c] - add r1, r2, #1 - str r1, [r0, #0xa9c] - cmp r2, #0x1e - ldmlsia sp!, {r3, pc} - bl ov18_02241D04 - cmp r0, #1 - bne _02242B8C - bl ov18_02242598 - ldr r0, _02242C2C ; =0x022533A8 - mov r1, #0x1d - ldr r0, [r0, #0] - strb r1, [r0, #0xa90] - ldmia sp!, {r3, pc} -_02242B8C: - ldr r1, _02242C2C ; =0x022533A8 - ldr r0, _02242C30 ; =0x88888889 - ldr r1, [r1, #0] - mov r2, #0x1e - ldr r3, [r1, #0xa9c] - umull r0, r1, r3, r0 - mov r1, r1, lsr #4 - umull r0, r1, r2, r1 - sub r1, r3, r0 - cmp r1, #1 - ldmneia sp!, {r3, pc} - cmp r3, #0x37 - ldmlsia sp!, {r3, pc} - bl ov18_02242490 - ldmia sp!, {r3, pc} -_02242BC8: - bl ov18_02242490 - ldr r0, _02242C2C ; =0x022533A8 - mov r3, #0 - ldr r2, [r0, #0] - mov r1, #0x21 - str r3, [r2, #0xa9c] - ldr r0, [r0, #0] - strb r1, [r0, #0xa90] - ldmia sp!, {r3, pc} -_02242BEC: - ldr r2, [r0, #0xa9c] - add r1, r2, #1 - str r1, [r0, #0xa9c] - cmp r2, #0x1e - ldmlsia sp!, {r3, pc} - bl ov18_02241D04 - cmp r0, #1 - ldmneia sp!, {r3, pc} - bl ov18_02242598 - ldr r0, _02242C2C ; =0x022533A8 - mov r1, #0x22 - ldr r0, [r0, #0] - strb r1, [r0, #0xa90] - ldmia sp!, {r3, pc} -_02242C24: - bl ov18_02242490 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02242C2C: .word Unk_ov18_022533A8 -_02242C30: .word 0x88888889 - arm_func_end ov18_022428B0 - - arm_func_start ov18_02242C34 -ov18_02242C34: ; 0x02242C34 - ldr r2, _02242C74 ; =0x022533A8 - ldr r3, [r2, #0] - ldrb r3, [r3, #0xa90] - strb r3, [r0] - ldr r0, [r2, #0] - ldrb r2, [r0, #0xa90] - ldrb r0, [r0, #0xa91] - cmp r2, r0 - movne r0, #1 - moveq r0, #0 - strb r0, [r1] - ldr r0, _02242C74 ; =0x022533A8 - ldr r1, [r0, #0] - ldrb r0, [r1, #0xa90] - strb r0, [r1, #0xa91] - bx lr - ; .align 2, 0 -_02242C74: .word Unk_ov18_022533A8 - arm_func_end ov18_02242C34 - - arm_func_start ov18_02242C78 -ov18_02242C78: ; 0x02242C78 - ldr ip, _02242C84 ; =MB_CommGetChildUser - mov r0, #1 - bx ip - ; .align 2, 0 -_02242C84: .word MB_CommGetChildUser - arm_func_end ov18_02242C78 - - arm_func_start ov18_02242C88 -ov18_02242C88: ; 0x02242C88 - stmfd sp!, {r3, lr} - bl ov18_02241D04 - cmp r0, #9 - addls pc, pc, r0, lsl #2 - b _02242D24 -_02242C9C: ; jump table - b _02242CFC ; case 0 - b _02242CC4 ; case 1 - b _02242D24 ; case 2 - ldmia sp!, {r3, pc} ; case 3 - b _02242D24 ; case 4 - b _02242D24 ; case 5 - b _02242D24 ; case 6 - b _02242CCC ; case 7 - b _02242D24 ; case 8 - b _02242D1C ; case 9 -_02242CC4: - bl ov18_02241D18 - ldmia sp!, {r3, pc} -_02242CCC: - bl ov18_02241F84 - ldr r2, _02242D2C ; =0x022533A8 - mov ip, #0 - ldr r1, [r2, #0] - mov r3, #3 - add r1, r1, #0x600 - strh r0, [r1, #0x4a] - ldr r0, [r2, #0] - str ip, [r0, #0xa98] - ldr r0, [r2, #0] - strb r3, [r0, #0xa90] - ldmia sp!, {r3, pc} -_02242CFC: - ldr r0, _02242D2C ; =0x022533A8 - mov r3, #0 - ldr r2, [r0, #0] - mov r1, #3 - str r3, [r2, #0xa98] - ldr r0, [r0, #0] - strb r1, [r0, #0xa90] - ldmia sp!, {r3, pc} -_02242D1C: - bl ov18_02242474 - ldmia sp!, {r3, pc} -_02242D24: - bl OS_Terminate - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02242D2C: .word Unk_ov18_022533A8 - arm_func_end ov18_02242C88 - - arm_func_start ov18_02242D30 -ov18_02242D30: ; 0x02242D30 - ldr r0, _02242D4C ; =0x022533A8 - ldr ip, _02242D50 ; =ov18_022407F0 - ldr r2, [r0, #0] - add r0, r2, #0x600 - ldrh r1, [r0, #0x48] - ldr r0, [r2, #0xac8] - bx ip - ; .align 2, 0 -_02242D4C: .word Unk_ov18_022533A8 -_02242D50: .word ov18_022407F0 - arm_func_end ov18_02242D30 - - arm_func_start ov18_02242D54 -ov18_02242D54: ; 0x02242D54 - stmfd sp!, {r3, lr} - bl ov18_02241238 - cmp r0, #7 - addls pc, pc, r0, lsl #2 - ldmia sp!, {r3, pc} -_02242D68: ; jump table - b _02242EB8 ; case 0 - b _02242D88 ; case 1 - b _02242DA8 ; case 2 - b _02242E38 ; case 3 - ldmia sp!, {r3, pc} ; case 4 - b _02242E8C ; case 5 - ldmia sp!, {r3, pc} ; case 6 - b _02242EA0 ; case 7 -_02242D88: - ldr r0, _02242F08 ; =0x022533A8 - ldr r2, [r0, #0] - add r0, r2, #0x600 - ldrh r1, [r0, #0x4a] - add r0, r2, #0x2b4 - add r0, r0, #0x800 - bl ov18_02240910 - ldmia sp!, {r3, pc} -_02242DA8: - mov r0, #2 - bl ov18_0224124C - cmp r0, #0 - beq _02242DCC - ldr r0, _02242F08 ; =0x022533A8 - mov r1, #5 - ldr r0, [r0, #0] - strb r1, [r0, #0xa90] - ldmia sp!, {r3, pc} -_02242DCC: - mov r0, #3 - bl ov18_0224124C - cmp r0, #0 - bne _02242DEC - mov r0, #4 - bl ov18_0224124C - cmp r0, #0 - beq _02242E00 -_02242DEC: - ldr r0, _02242F08 ; =0x022533A8 - mov r1, #6 - ldr r0, [r0, #0] - strb r1, [r0, #0xa90] - ldmia sp!, {r3, pc} -_02242E00: - ldr r0, _02242F08 ; =0x022533A8 - ldr r0, [r0, #0] - ldrb r0, [r0, #0xa90] - cmp r0, #5 - ldmneia sp!, {r3, pc} - mov r0, #2 - bl ov18_0224124C - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _02242F08 ; =0x022533A8 - mov r1, #0xd - ldr r0, [r0, #0] - strb r1, [r0, #0xa90] - ldmia sp!, {r3, pc} -_02242E38: - bl ov18_02240D5C - cmp r0, #0 - beq _02242E4C - bl ov18_02240DC4 - ldmia sp!, {r3, pc} -_02242E4C: - ldr r0, _02242F08 ; =0x022533A8 - ldr r0, [r0, #0] - ldrb r0, [r0, #0xa90] - add r0, r0, #0xfa - and r0, r0, #0xff - cmp r0, #1 - ldmhiia sp!, {r3, pc} - mov r0, #3 - bl ov18_0224124C - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _02242F08 ; =0x022533A8 - mov r1, #0x12 - ldr r0, [r0, #0] - strb r1, [r0, #0xa90] - ldmia sp!, {r3, pc} -_02242E8C: - ldr r0, _02242F08 ; =0x022533A8 - mov r1, #7 - ldr r0, [r0, #0] - strb r1, [r0, #0xa90] - ldmia sp!, {r3, pc} -_02242EA0: - bl ov18_02240EBC - ldr r0, _02242F08 ; =0x022533A8 - mov r1, #1 - ldr r0, [r0, #0] - strb r1, [r0, #0xa90] - ldmia sp!, {r3, pc} -_02242EB8: - bl ov18_02241D04 - cmp r0, #0 - beq _02242EE0 - cmp r0, #1 - beq _02242ED8 - cmp r0, #3 - ldmeqia sp!, {r3, pc} - b _02242EF4 -_02242ED8: - bl ov18_02242598 - ldmia sp!, {r3, pc} -_02242EE0: - ldr r0, _02242F08 ; =0x022533A8 - mov r1, #0x1f - ldr r0, [r0, #0] - strb r1, [r0, #0xa90] - ldmia sp!, {r3, pc} -_02242EF4: - ldr r0, _02242F08 ; =0x022533A8 - mov r1, #0x1f - ldr r0, [r0, #0] - strb r1, [r0, #0xa90] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02242F08: .word Unk_ov18_022533A8 - arm_func_end ov18_02242D54 - - arm_func_start ov18_02242F0C -ov18_02242F0C: ; 0x02242F0C - stmfd sp!, {r3, lr} - bl ov18_02243198 - ldr r0, _02242F30 ; =ov18_0224315C - bl ov18_02242390 - ldr r0, _02242F34 ; =0x022533A8 - mov r1, #8 - ldr r0, [r0, #0] - strb r1, [r0, #0xa90] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02242F30: .word ov18_0224315C -_02242F34: .word Unk_ov18_022533A8 - arm_func_end ov18_02242F0C - - arm_func_start ov18_02242F38 -ov18_02242F38: ; 0x02242F38 - stmfd sp!, {r3, lr} - bl ov18_02241D04 - cmp r0, #6 - addls pc, pc, r0, lsl #2 - ldmia sp!, {r3, pc} -_02242F4C: ; jump table - ldmia sp!, {r3, pc} ; case 0 - b _02242F68 ; case 1 - ldmia sp!, {r3, pc} ; case 2 - ldmia sp!, {r3, pc} ; case 3 - b _02242F94 ; case 4 - b _02242F94 ; case 5 - b _02242F94 ; case 6 -_02242F68: - ldr r1, _02243110 ; =0x022533A8 - mov r0, #4 - ldr r1, [r1, #0] - add r1, r1, #0x600 - ldrh r3, [r1, #0x48] - ldrh r2, [r1, #0x4a] - add r1, r3, #1 - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 - bl ov18_02242218 - ldmia sp!, {r3, pc} -_02242F94: - ldr r1, _02243110 ; =0x022533A8 - mov r0, #0 - ldr r2, [r1, #0] - add r1, r2, #0x200 - ldrh r1, [r1] - ldr ip, [r2, #0xaa4] - mov r3, r1, lsr #0x1f - rsb r2, r3, r1, lsl #28 - add r2, r3, r2, ror #28 - add r2, ip, r2, lsl #6 - bl ov18_022431DC - bl ov18_02243344 - ldr r0, _02243110 ; =0x022533A8 - ldr r1, [r0, #0] - ldrb r0, [r1, #0xa90] - cmp r0, #0x1b - ldmeqia sp!, {r3, pc} - ldr r0, [r1, #0x204] - cmp r0, #0x1e0 - movhi r0, #0x1b - strhib r0, [r1, #0xa90] - ldmhiia sp!, {r3, pc} - bl ov18_02243428 - cmp r0, #0x10 - beq _02243004 - bl ov18_02243428 - cmp r0, #0x20 - bne _0224301C -_02243004: - bl ov18_02243428 - ldr r0, _02243110 ; =0x022533A8 - mov r1, #0xa - ldr r0, [r0, #0] - strb r1, [r0, #0xa90] - ldmia sp!, {r3, pc} -_0224301C: - bl ov18_02243428 - cmp r0, #0x40 - bne _0224303C - ldr r0, _02243110 ; =0x022533A8 - mov r1, #0xb - ldr r0, [r0, #0] - strb r1, [r0, #0xa90] - ldmia sp!, {r3, pc} -_0224303C: - bl ov18_02243428 - cmp r0, #0xff - bne _0224305C - ldr r0, _02243110 ; =0x022533A8 - mov r1, #0x1b - ldr r0, [r0, #0] - strb r1, [r0, #0xa90] - ldmia sp!, {r3, pc} -_0224305C: - bl ov18_02243428 - cmp r0, #0x50 - bne _0224307C - ldr r0, _02243110 ; =0x022533A8 - mov r1, #0x15 - ldr r0, [r0, #0] - strb r1, [r0, #0xa90] - ldmia sp!, {r3, pc} -_0224307C: - bl ov18_02243428 - cmp r0, #0x60 - bne _0224309C - ldr r0, _02243110 ; =0x022533A8 - mov r1, #0x18 - ldr r0, [r0, #0] - strb r1, [r0, #0xa90] - ldmia sp!, {r3, pc} -_0224309C: - bl ov18_02243428 - cmp r0, #0x70 - bne _022430BC - ldr r0, _02243110 ; =0x022533A8 - mov r1, #0x1b - ldr r0, [r0, #0] - strb r1, [r0, #0xa90] - ldmia sp!, {r3, pc} -_022430BC: - bl ov18_02243428 - cmp r0, #0 - bne _022430DC - ldr r0, _02243110 ; =0x022533A8 - mov r1, #8 - ldr r0, [r0, #0] - strb r1, [r0, #0xa90] - ldmia sp!, {r3, pc} -_022430DC: - bl ov18_02243428 - cmp r0, #0xbd - bne _022430FC - ldr r0, _02243110 ; =0x022533A8 - mov r1, #9 - ldr r0, [r0, #0] - strb r1, [r0, #0xa90] - ldmia sp!, {r3, pc} -_022430FC: - ldr r0, _02243110 ; =0x022533A8 - mov r1, #0x1f - ldr r0, [r0, #0] - strb r1, [r0, #0xa90] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02243110: .word Unk_ov18_022533A8 - arm_func_end ov18_02242F38 - - arm_func_start ov18_02243114 -ov18_02243114: ; 0x02243114 - ldr r0, _02243128 ; =0x022533A8 - mov r1, #0xc - ldr r0, [r0, #0] - strb r1, [r0, #0xa90] - bx lr - ; .align 2, 0 -_02243128: .word Unk_ov18_022533A8 - arm_func_end ov18_02243114 - - arm_func_start ov18_0224312C -ov18_0224312C: ; 0x0224312C - stmfd sp!, {r3, lr} - bl ov18_02241D04 - cmp r0, #1 - movne r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_02242598 - ldr r1, _02243158 ; =0x022533A8 - mov r0, #1 - ldr r1, [r1, #0] - strb r0, [r1, #0xa90] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02243158: .word Unk_ov18_022533A8 - arm_func_end ov18_0224312C - - arm_func_start ov18_0224315C -ov18_0224315C: ; 0x0224315C - stmfd sp!, {r4, lr} - add r0, r0, #0xa - bl ov18_022413A0 - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - bl ov18_0224136C - ldr r1, _02243194 ; =0x022533A8 - sub r2, r4, #1 - ldr r1, [r1, #0] - add r1, r1, r2, lsl #2 - str r0, [r1, #0xaa0] - mov r0, #1 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02243194: .word Unk_ov18_022533A8 - arm_func_end ov18_0224315C - - arm_func_start ov18_02243198 -ov18_02243198: ; 0x02243198 - stmfd sp!, {r3, lr} - ldr r0, _022431D8 ; =0x022533A8 - mov r1, #0 - ldr r0, [r0, #0] - mov r2, #0x100 - add r0, r0, #0x100 - bl MI_CpuFill8 - ldr r0, _022431D8 ; =0x022533A8 - mov r1, #0 - ldr r0, [r0, #0] - mov r2, #0x100 - bl MI_CpuFill8 - ldr r0, _022431D8 ; =0x022533A8 - ldr r0, [r0, #0] - str r0, [r0, #0xab0] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022431D8: .word Unk_ov18_022533A8 - arm_func_end ov18_02243198 - - arm_func_start ov18_022431DC -ov18_022431DC: ; 0x022431DC - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r3, _02243340 ; =0x022533A8 - ldr r5, [r3, #0] - ldrb r4, [r5, #0xa93] - cmp r4, #1 - bne _02243224 - ldr r4, [r5, #0xab0] - strh r0, [r4] - ldr r4, [r3, #0] - mov r0, r2 - ldr r4, [r4, #0xab0] - mov r2, #0x40 - strh r1, [r4, #2] - ldr r1, [r3, #0] - ldr r1, [r1, #0xab0] - add r1, r1, #4 - bl MI_CpuCopy8 - b _02243250 -_02243224: - ldr r0, [r5, #0x204] - mov r1, #0xbc - add r0, r0, #1 - str r0, [r5, #0x204] - ldr r0, [r3, #0] - ldr r0, [r0, #0xab0] - strh r1, [r0] - ldr r0, [r3, #0] - ldrb r1, [r0, #0xa92] - ldr r0, [r0, #0xab0] - strb r1, [r0, #4] -_02243250: - bl ov18_02241D04 - cmp r0, #5 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldr r0, _02243340 ; =0x022533A8 - ldr r0, [r0, #0] - bl ov18_022423CC - cmp r0, #0 - bne _02243288 - ldr r0, _02243340 ; =0x022533A8 - ldr r1, [r0, #0] - ldr r0, [r1, #0x204] - add r0, r0, #4 - str r0, [r1, #0x204] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_02243288: - ldr r0, _02243340 ; =0x022533A8 - ldr r1, [r0, #0] - ldrb r0, [r1, #0xa93] - cmp r0, #0 - bne _022432AC - ldr r0, [r1, #0x204] - add r0, r0, #1 - str r0, [r1, #0x204] - b _022432D4 -_022432AC: - mov r0, #0 - str r0, [r1, #0x204] - bl ov18_02241CF0 - cmp r0, #3 - beq _022432D4 - ldr r0, _02243340 ; =0x022533A8 - mov r1, #0x1b - ldr r0, [r0, #0] - strb r1, [r0, #0xa90] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022432D4: - mov r7, #0 - mov r6, #0x44 - ldr sb, _02243340 ; =0x022533A8 - mov r4, r7 - mov r5, #1 - mov r8, r6 -_022432EC: - mov r0, r7 - bl ov18_022423A4 - cmp r0, #0 - ldreq r0, [sb] - addeq r0, r0, r7, lsl #2 - streq r4, [r0, #0x208] - beq _02243328 - ldr r1, [sb] - mov r2, r6 - add r1, r1, #0x100 - mla r1, r7, r8, r1 - bl MI_CpuCopy8 - ldr r0, [sb] - add r0, r0, r7, lsl #2 - str r5, [r0, #0x208] -_02243328: - add r0, r7, #1 - mov r0, r0, lsl #0x10 - mov r7, r0, lsr #0x10 - cmp r7, #2 - blo _022432EC - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ; .align 2, 0 -_02243340: .word Unk_ov18_022533A8 - arm_func_end ov18_022431DC - - arm_func_start ov18_02243344 -ov18_02243344: ; 0x02243344 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - mov ip, #0 - ldr r4, _02243424 ; =0x022533A8 - mov r0, #1 - mov r5, ip - mov r1, #0xbc - mov r2, ip - mov lr, #0x44 -_02243364: - ldr r3, [r4, #0] - add r6, r3, ip, lsl #2 - ldr r6, [r6, #0x208] - cmp r6, #0 - beq _02243414 - mul r7, ip, lr - cmp ip, #1 - add r8, r3, #0x100 - bne _02243414 - ldrb r6, [r3, #0xa93] - cmp r6, #1 - bne _022433E4 - ldrh r6, [r8, r7] - cmp r6, #0x10 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - ldr r6, [r3, #0xa94] - add r6, r6, #1 - str r6, [r3, #0xa94] - ldr r6, [r4, #0] - ldr r3, [r6, #0xa94] - tst r3, #1 - bne _02243414 - add r3, r6, #0x200 - ldrh r6, [r3] - add r6, r6, #1 - strh r6, [r3] - ldr r3, [r4, #0] - add r3, r3, #0x200 - ldrh r6, [r3] - cmp r6, #0x24 - strhsh r2, [r3] - b _02243414 -_022433E4: - add r3, r3, #0x200 - strh r1, [r3, #2] - ldrh r3, [r8, r7] - cmp r3, #0xbd - bne _02243414 - ldr r3, [r4, #0] - strb r0, [r3, #0xa93] - ldr r3, [r4, #0] - add r3, r3, #0x200 - strh r5, [r3] - ldr r3, [r4, #0] - str r5, [r3, #0xa94] -_02243414: - add ip, ip, #1 - cmp ip, #0x10 - blt _02243364 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_02243424: .word Unk_ov18_022533A8 - arm_func_end ov18_02243344 - - arm_func_start ov18_02243428 -ov18_02243428: ; 0x02243428 - ldr r0, _0224343C ; =0x022533A8 - ldr r0, [r0, #0] - add r0, r0, #0x100 - ldrh r0, [r0, #0x44] - bx lr - ; .align 2, 0 -_0224343C: .word Unk_ov18_022533A8 - arm_func_end ov18_02243428 - - .bss - - - .global Unk_ov18_022533A8 -Unk_ov18_022533A8: ; 0x022533A8 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/effect.s b/subprojects/NitroDWC/libraries/util/asm/effect.s deleted file mode 100644 index 71853c03e3..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/effect.s +++ /dev/null @@ -1,268 +0,0 @@ - .include "macros/function.inc" - .include "include/effect.inc" - - - - .text - - - arm_func_start ov18_02244114 -ov18_02244114: ; 0x02244114 - stmfd sp!, {r3, lr} - mov r0, #0x18 - mov r1, #4 - bl ov18_02245068 - ldr r2, _02244150 ; =0x022533BC - mov r1, #0x3f - str r0, [r2, #0] - ldr r0, _02244154 ; =0x04000050 - mov r2, #0x10 - bl G2x_SetBlendBrightness_ - ldr r0, _02244158 ; =0x04001050 - mov r1, #0x3f - mov r2, #0x10 - bl G2x_SetBlendBrightness_ - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02244150: .word Unk_ov18_022533BC -_02244154: .word 0x04000050 -_02244158: .word 0x04001050 - arm_func_end ov18_02244114 - - arm_func_start ov18_0224415C -ov18_0224415C: ; 0x0224415C - ldr ip, _02244168 ; =ov18_0224508C - ldr r0, _0224416C ; =0x022533BC - bx ip - ; .align 2, 0 -_02244168: .word ov18_0224508C -_0224416C: .word Unk_ov18_022533BC - arm_func_end ov18_0224415C - - arm_func_start ov18_02244170 -ov18_02244170: ; 0x02244170 - cmp r0, #1 - ldreq r0, _02244190 ; =0x022533BC - ldreq r0, [r0] - ldrne r0, _02244190 ; =0x022533BC - ldrne r0, [r0] - addne r0, r0, #0xc - ldrb r0, [r0, #9] - bx lr - ; .align 2, 0 -_02244190: .word Unk_ov18_022533BC - arm_func_end ov18_02244170 - - arm_func_start ov18_02244194 -ov18_02244194: ; 0x02244194 - stmfd sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - ldr r4, _02244258 ; =0x0224971C - mov r5, r0 - ldrb r0, [r4, #0xb] - ldrb r6, [r4, #8] - ldrb lr, [r4, #9] - strb r0, [sp, #3] - cmp r1, #1 - ldreq r0, _0224425C ; =0x022533BC - strb r6, [sp] - ldreq r6, [r0] - ldrne r0, _0224425C ; =0x022533BC - ldrb ip, [r4, #0xa] - ldrne r0, [r0] - mov r4, r3 - addne r6, r0, #0xc - ldrb r0, [r6, #9] - strb lr, [sp, #1] - strb ip, [sp, #2] - cmp r0, #0 - addne sp, sp, #4 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, pc} - cmp r1, #1 - add r0, sp, #0 - mov r1, r2 - bne _02244214 - ldrsb r2, [r0, r5] - ldr r0, _02244260 ; =0x04001050 - bl G2x_SetBlendBrightness_ - b _02244220 -_02244214: - ldrsb r2, [r0, r5] - ldr r0, _02244264 ; =0x04000050 - bl G2x_SetBlendBrightness_ -_02244220: - ldr r1, _02244268 ; =ov18_0224426C - mov r2, r6 - mov r0, #1 - mov r3, #0xc8 - bl ov18_02246304 - str r0, [r6, #0] - mov r0, #0 - strh r0, [r6, #4] - strb r5, [r6, #8] - strh r4, [r6, #6] - mov r0, #1 - strb r0, [r6, #9] - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - ; .align 2, 0 -_02244258: .word Unk_ov18_0224971C -_0224425C: .word Unk_ov18_022533BC -_02244260: .word 0x04001050 -_02244264: .word 0x04000050 -_02244268: .word ov18_0224426C - arm_func_end ov18_02244194 - - arm_func_start ov18_0224426C -ov18_0224426C: ; 0x0224426C - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #8 - ldr r2, _02244384 ; =0x0224971C - mov r4, r1 - ldrsh r1, [r4, #4] - ldrb sb, [r2, #4] - ldrb r8, [r2, #5] - ldrb r7, [r2, #6] - ldrb r6, [r2, #7] - ldrb lr, [r2] - ldrb ip, [r2, #1] - ldrb r3, [r2, #2] - ldrb r2, [r2, #3] - add r1, r1, #1 - mov r5, r0 - strh r1, [r4, #4] - ldrsh r0, [r4, #4] - ldrh r1, [r4, #6] - strb sb, [sp, #4] - mov r0, r0, lsl #4 - strb r8, [sp, #5] - strb r7, [sp, #6] - strb r6, [sp, #7] - strb lr, [sp] - strb ip, [sp, #1] - strb r3, [sp, #2] - strb r2, [sp, #3] - bl FX_DivS32 - ldrb r3, [r4, #8] - add r2, sp, #4 - mov r1, r0 - ldrb r0, [r2, r3] - tst r0, #1 - rsbne r1, r1, #0x10 - tst r0, #0x10 - ldr r0, _02244388 ; =0x022533BC - rsbne r1, r1, #0 - ldr r0, [r0, #0] - cmp r4, r0 - bne _02244318 - ldr r0, _0224438C ; =0x04001050 - bl G2x_ChangeBlendBrightness_ - b _02244320 -_02244318: - ldr r0, _02244390 ; =0x04000050 - bl G2x_ChangeBlendBrightness_ -_02244320: - ldrsh r1, [r4, #4] - ldrh r0, [r4, #6] - cmp r1, r0 - addlt sp, sp, #8 - ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldr r0, _02244388 ; =0x022533BC - ldrb r2, [r4, #8] - ldr r0, [r0, #0] - add r1, sp, #0 - cmp r4, r0 - bne _0224435C - ldrsb r1, [r1, r2] - ldr r0, _0224438C ; =0x04001050 - bl G2x_ChangeBlendBrightness_ - b _02244368 -_0224435C: - ldrsb r1, [r1, r2] - ldr r0, _02244390 ; =0x04000050 - bl G2x_ChangeBlendBrightness_ -_02244368: - mov r2, #0 - mov r1, r5 - mov r0, #1 - strb r2, [r4, #9] - bl ov18_022463AC - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ; .align 2, 0 -_02244384: .word Unk_ov18_0224971C -_02244388: .word Unk_ov18_022533BC -_0224438C: .word 0x04001050 -_02244390: .word 0x04000050 - arm_func_end ov18_0224426C - - arm_func_start ov18_02244394 -ov18_02244394: ; 0x02244394 - stmfd sp!, {r3, r4, r5, lr} - ldr r1, _022443E4 ; =0x022533BC - mov r5, r0 - ldr r4, [r1, #0] - ldrb r0, [r4, #9] - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - ldr r1, _022443E8 ; =ov18_022443EC - mov r2, r4 - mov r0, #1 - mov r3, #0xc8 - bl ov18_02246304 - str r0, [r4, #0] - mov r0, #0 - strh r0, [r4, #4] - strh r5, [r4, #6] - mov r0, #1 - strb r0, [r4, #9] - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_022443E4: .word Unk_ov18_022533BC -_022443E8: .word ov18_022443EC - arm_func_end ov18_02244394 - - arm_func_start ov18_022443EC -ov18_022443EC: ; 0x022443EC - stmfd sp!, {r3, lr} - ldrsh r2, [r1, #4] - add r2, r2, #1 - strh r2, [r1, #4] - ldrsh r3, [r1, #4] - ldrh r2, [r1, #6] - cmp r3, r2 - ldmltia sp!, {r3, pc} - mov r2, #0 - strb r2, [r1, #9] - mov r1, r0 - mov r0, #1 - bl ov18_022463AC - ldmia sp!, {r3, pc} - arm_func_end ov18_022443EC - - .rodata - - - .global Unk_ov18_0224971C -Unk_ov18_0224971C: ; 0x0224971C - .byte 0x0, 0xF0, 0x0, 0x10 - - .global Unk_ov18_02249720 -Unk_ov18_02249720: ; 0x02249720 - .byte 0x11, 0x10, 0x01, 0x0 - - .global Unk_ov18_02249724 -Unk_ov18_02249724: ; 0x02249724 - .byte 0xF0, 0x0, 0x10, 0x0 - - - - .bss - - - .global Unk_ov18_022533BC -Unk_ov18_022533BC: ; 0x022533BC - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/focus.s b/subprojects/NitroDWC/libraries/util/asm/focus.s deleted file mode 100644 index d6b7e3914d..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/focus.s +++ /dev/null @@ -1,190 +0,0 @@ - .include "macros/function.inc" - .include "include/focus.inc" - - - - .text - - - arm_func_start ov18_0222B910 -ov18_0222B910: ; 0x0222B910 - stmfd sp!, {r3, lr} - mov r0, #0x10 - mov r1, #4 - bl ov18_02245068 - ldr r1, _0222B92C ; =0x02253290 - str r0, [r1, #0] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222B92C: .word Unk_ov18_02253290 - arm_func_end ov18_0222B910 - - arm_func_start ov18_0222B930 -ov18_0222B930: ; 0x0222B930 - stmfd sp!, {r3, lr} - bl ov18_0222BAF4 - ldr r0, _0222B944 ; =0x02253290 - bl ov18_0224508C - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222B944: .word Unk_ov18_02253290 - arm_func_end ov18_0222B930 - - arm_func_start ov18_0222B948 -ov18_0222B948: ; 0x0222B948 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - mov r4, r0 - str r1, [sp] - str r2, [sp, #4] - mov fp, r3 - bl ov18_0222BAF4 - ldr r0, _0222B9FC ; =0x02248D14 - mov sb, #0 - add sl, r0, r4, lsl #1 - mov r7, #1 - ldr r4, _0222BA00 ; =0x02253290 - mov r8, sb - mvn r6, #0 - mov r5, r7 -_0222B984: - ldrb r1, [sl], #1 - mov r0, r8 - mov r2, r7 - bl ov18_02243F8C - ldr r2, [r4, #0] - mov r1, r6 - str r0, [r2, sb, lsl #2] - ldr r0, [r4, #0] - mov r2, r5 - ldr r0, [r0, sb, lsl #2] - bl ov18_02243DE4 - add sb, sb, #1 - cmp sb, #2 - blt _0222B984 - ldr r0, _0222BA00 ; =0x02253290 - ldr r2, [sp] - ldr r0, [r0, #0] - mov r3, fp - ldr r0, [r0, #0] - mvn r1, #0 - bl ov18_02243CF4 - ldr r0, _0222BA00 ; =0x02253290 - ldr r2, [sp, #4] - ldr r0, [r0, #0] - mov r3, fp - ldr r0, [r0, #4] - mvn r1, #0 - bl ov18_02243CF4 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0222B9FC: .word Unk_ov18_02248D14 -_0222BA00: .word Unk_ov18_02253290 - arm_func_end ov18_0222B948 - - arm_func_start ov18_0222BA04 -ov18_0222BA04: ; 0x0222BA04 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc - mov fp, r0 - str r1, [sp] - str r2, [sp, #4] - str r3, [sp, #8] - mov sb, #6 - bl ov18_0222BAF4 - mov sl, #0 - mov r7, #1 - ldr r4, _0222BAF0 ; =0x02253290 - mov r8, sl - mvn r6, #0 - mov r5, r7 -_0222BA3C: - mov r0, r8 - mov r1, sb - mov r2, r7 - bl ov18_02243F8C - ldr r2, [r4, #0] - mov r1, r6 - str r0, [r2, sl, lsl #2] - ldr r0, [r4, #0] - mov r2, r5 - ldr r0, [r0, sl, lsl #2] - bl ov18_02243DE4 - add sl, sl, #1 - cmp sl, #4 - add sb, sb, #1 - blt _0222BA3C - ldr r0, _0222BAF0 ; =0x02253290 - ldr r3, [sp, #4] - ldr r0, [r0, #0] - mov r2, fp - ldr r0, [r0, #0] - mvn r1, #0 - bl ov18_02243CF4 - ldr r0, _0222BAF0 ; =0x02253290 - ldr r2, [sp] - ldr r0, [r0, #0] - ldr r3, [sp, #4] - ldr r0, [r0, #4] - mvn r1, #0 - bl ov18_02243CF4 - ldr r0, _0222BAF0 ; =0x02253290 - ldr r3, [sp, #8] - ldr r0, [r0, #0] - mov r2, fp - ldr r0, [r0, #8] - mvn r1, #0 - bl ov18_02243CF4 - ldr r0, _0222BAF0 ; =0x02253290 - ldr r2, [sp] - ldr r0, [r0, #0] - ldr r3, [sp, #8] - ldr r0, [r0, #0xc] - mvn r1, #0 - bl ov18_02243CF4 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0222BAF0: .word Unk_ov18_02253290 - arm_func_end ov18_0222BA04 - - arm_func_start ov18_0222BAF4 -ov18_0222BAF4: ; 0x0222BAF4 - stmfd sp!, {r4, r5, r6, lr} - mov r6, #0 - ldr r4, _0222BB30 ; =0x02253290 - mov r5, r6 -_0222BB04: - ldr r0, [r4, #0] - ldr r0, [r0, r6, lsl #2] - cmp r0, #0 - beq _0222BB20 - bl ov18_02243B3C - ldr r0, [r4, #0] - str r5, [r0, r6, lsl #2] -_0222BB20: - add r6, r6, #1 - cmp r6, #4 - blt _0222BB04 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_0222BB30: .word Unk_ov18_02253290 - arm_func_end ov18_0222BAF4 - - .rodata - - - .global Unk_ov18_02248D14 -Unk_ov18_02248D14: ; 0x02248D14 - .byte 0xA, 0xB, 0x4, 0x5, 0x2, 0x3, 0xC, 0xD - - - - .bss - - - .global Unk_ov18_02253290 -Unk_ov18_02253290: ; 0x02253290 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/font.s b/subprojects/NitroDWC/libraries/util/asm/font.s deleted file mode 100644 index d3251b665a..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/font.s +++ /dev/null @@ -1,664 +0,0 @@ - .include "macros/function.inc" - .include "include/font.inc" - - - - .text - - - arm_func_start ov18_02244424 -ov18_02244424: ; 0x02244424 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r0, #0x680 - mov r1, #4 - bl ov18_02245068 - mov r4, r0 - ldr r3, _0224451C ; =0x022533C0 - add r1, r4, #0x10 - mov r0, #0x20 - mov r2, #0x30 - str r4, [r3, #0] - bl ov18_02244008 - ldr r1, _0224451C ; =0x022533C0 - ldr r1, [r1, #0] - str r0, [r1, #0x670] - bl ov18_0222F74C - cmp r0, #6 - mov r4, #4 - bne _022444C4 - mov r7, #0 - ldr r6, _02244520 ; =0x0224B210 - ldr sb, _0224451C ; =0x022533C0 - mov r8, r7 - mov r5, r7 -_02244480: - ldr r0, [r6, r7, lsl #2] - mov r1, r5 - mov r2, r4 - bl ov18_02243738 - ldr r1, [sb] - add r1, r1, r7, lsl #2 - str r0, [r1, #0x674] - ldr r2, [sb] - add r0, r2, r7, lsl #2 - ldr r1, [r0, #0x674] - add r0, r2, r8 - bl NNS_G2dFontInitUTF16 - add r7, r7, #1 - cmp r7, #2 - add r8, r8, #8 - blt _02244480 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022444C4: - mov r8, #0 - ldr r6, _02244524 ; =0x0224B218 - ldr sb, _0224451C ; =0x022533C0 - mov r7, r8 - mov r5, r8 -_022444D8: - ldr r0, [r6, r8, lsl #2] - mov r1, r5 - mov r2, r4 - bl ov18_02243738 - ldr r1, [sb] - add r1, r1, r8, lsl #2 - str r0, [r1, #0x674] - ldr r2, [sb] - add r0, r2, r8, lsl #2 - ldr r1, [r0, #0x674] - add r0, r2, r7 - bl NNS_G2dFontInitUTF16 - add r8, r8, #1 - cmp r8, #2 - add r7, r7, #8 - blt _022444D8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ; .align 2, 0 -_0224451C: .word Unk_ov18_022533C0 -_02244520: .word Unk_ov18_0224B210 -_02244524: .word Unk_ov18_0224B218 - arm_func_end ov18_02244424 - - arm_func_start ov18_02244528 -ov18_02244528: ; 0x02244528 - stmfd sp!, {r3, r4, r5, lr} - ldr r4, _0224456C ; =0x022533C0 - mov r5, #0 -_02244534: - ldr r0, [r4, #0] - add r0, r0, r5, lsl #2 - ldr r0, [r0, #0x674] - bl ov18_0224382C - add r5, r5, #1 - cmp r5, #2 - blt _02244534 - ldr r0, _0224456C ; =0x022533C0 - ldr r0, [r0, #0] - ldr r0, [r0, #0x670] - bl ov18_02244048 - ldr r0, _02244570 ; =0x022533C0 - bl ov18_0224508C - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0224456C: .word Unk_ov18_022533C0 -_02244570: .word Unk_ov18_022533C0 - arm_func_end ov18_02244528 - - arm_func_start ov18_02244574 -ov18_02244574: ; 0x02244574 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #8 - ldr r4, _0224464C ; =0x022533C0 - mov r7, r0 - ldr r0, [r4, #0] - mov r6, r1 - ldr r0, [r0, #0x670] - mov r5, r2 - mov r8, r3 - bl ov18_022440BC - mov r4, r0 - strb r6, [r4, #0x2e] - mul r1, r6, r5 - mov r2, r8 - strb r5, [r4, #0x2f] - mov r0, r7 - add r3, sp, #4 - bl ov18_02245C98 - str r0, [r4, #0x28] - ldr r1, [sp, #4] - mov r0, r6 - strh r1, [r4, #0x2c] - mov r1, r5 - bl NNSi_G2dCalcRequiredOBJ - ldr r1, [sp, #0x20] - cmp r7, #1 - str r0, [r1, #0] - moveq ip, #0x6600000 - ldr r7, [sp, #4] - mov r1, #4 - movne ip, #0x6400000 - str r1, [sp] - mov r0, r4 - mov r2, r6 - mov r3, r5 - add r1, ip, r7, lsl #7 - bl NNS_G2dCharCanvasInitForOBJ1D - ldr r1, [r4, #0x14] - mov r0, r4 - ldr r2, [r1, #4] - mov r1, #0 - blx r2 - ldr r0, _0224464C ; =0x022533C0 - ldr r2, [sp, #0x24] - ldr r0, [r0, #0] - mov r1, #1 - str r4, [r4, #0x18] - add r0, r0, r2, lsl #3 - str r0, [r4, #0x1c] - str r1, [r4, #0x20] - mov r0, r4 - str r1, [r4, #0x24] - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_0224464C: .word Unk_ov18_022533C0 - arm_func_end ov18_02244574 - - arm_func_start ov18_02244650 -ov18_02244650: ; 0x02244650 - stmfd sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4, #0x28] - bl ov18_02245E10 - ldr r0, _02244678 ; =0x022533C0 - mov r1, r4 - ldr r0, [r0, #0] - ldr r0, [r0, #0x670] - bl ov18_02244064 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02244678: .word Unk_ov18_022533C0 - arm_func_end ov18_02244650 - - arm_func_start ov18_0224467C -ov18_0224467C: ; 0x0224467C - stmfd sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x10 - mov r8, r0 - ldr r0, _022447D8 ; =0x022533C0 - ldr r3, _022447DC ; =0x0224972E - mov r4, r8, lsl #2 - ldr r2, _022447E0 ; =0x0224972C - ldr r0, [r0, #0] - ldrh r5, [r3, r4] - ldrh r6, [r2, r4] - add r3, r0, #0x610 - mov r0, #0x30 - mul r2, r6, r5 - mov r7, r1 - mla r4, r8, r0, r3 - mov r0, r2, lsl #5 - mov r1, #0x20 - bl ov18_02245068 - str r0, [r4, #0x28] - cmp r8, #1 - bne _022446F4 - ldr r1, _022447E4 ; =0x04001008 - ldrh r0, [r1] - bic r0, r0, #0x40 - strh r0, [r1] - ldrh r0, [r1] - and r0, r0, #0x43 - orr r0, r0, #0xc00 - strh r0, [r1] - b _02244714 -_022446F4: - ldr r1, _022447E8 ; =0x04000008 - ldrh r0, [r1] - bic r0, r0, #0x40 - strh r0, [r1] - ldrh r0, [r1] - and r0, r0, #0x43 - orr r0, r0, #0xc00 - strh r0, [r1] -_02244714: - mov r0, #4 - str r0, [sp] - ldr r1, [r4, #0x28] - mov r0, r4 - mov r2, r6 - mov r3, r5 - bl NNS_G2dCharCanvasInitForBG - ldr r0, _022447D8 ; =0x022533C0 - mov r1, #1 - ldr r0, [r0, #0] - cmp r8, #1 - str r4, [r4, #0x18] - add r0, r0, r7, lsl #3 - str r0, [r4, #0x1c] - str r1, [r4, #0x20] - str r1, [r4, #0x24] - bne _02244760 - bl G2S_GetBG0ScrPtr - b _02244764 -_02244760: - bl G2_GetBG0ScrPtr -_02244764: - ldr r1, _022447EC ; =0x02249728 - mov r2, r8, lsl #1 - mov r3, #0 - ldrh r7, [r1, r2] - str r3, [sp] - mov r1, #0x20 - str r1, [sp, #4] - mov r1, r6 - mov r2, r5 - str r7, [sp, #8] - mov r5, #0xf - str r5, [sp, #0xc] - bl NNS_G2dMapScrToCharText - mov r0, r4 - mov r1, #0 - bl ov18_02244B5C - ldr r0, _022447D8 ; =0x022533C0 - ldr r1, _022447F0 ; =ov18_022447F4 - ldr r2, [r0, #0] - mov r0, #1 - add r2, r2, #0x27c - add r2, r2, #0x400 - add r2, r2, r8 - mov r3, #0xc8 - bl ov18_02246304 - str r0, [r4, #0x2c] - mov r0, r4 - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_022447D8: .word Unk_ov18_022533C0 -_022447DC: .word 0x0224972E -_022447E0: .word Unk_ov18_0224972C -_022447E4: .word 0x04001008 -_022447E8: .word 0x04000008 -_022447EC: .word Unk_ov18_02249728 -_022447F0: .word ov18_022447F4 - arm_func_end ov18_0224467C - - arm_func_start ov18_022447F4 -ov18_022447F4: ; 0x022447F4 - stmfd sp!, {r4, lr} - mov r4, r1 - ldrb r0, [r4] - cmp r0, #0 - ldmeqia sp!, {r4, pc} - ldr r0, _02244878 ; =0x022533C0 - ldr r1, [r0, #0] - add r0, r1, #0x27c - add r0, r0, #0x400 - cmp r4, r0 - bne _02244848 - ldr r0, [r1, #0x638] - mov r1, #0x6000 - bl DC_FlushRange - ldr r0, _02244878 ; =0x022533C0 - mov r1, #0 - ldr r0, [r0, #0] - mov r2, #0x6000 - ldr r0, [r0, #0x638] - bl GX_LoadBG0Char - b _0224486C -_02244848: - ldr r0, [r1, #0x668] - mov r1, #0x3000 - bl DC_FlushRange - ldr r0, _02244878 ; =0x022533C0 - mov r1, #0x3000 - ldr r0, [r0, #0] - mov r2, r1 - ldr r0, [r0, #0x668] - bl GXS_LoadBG0Char -_0224486C: - mov r0, #0 - strb r0, [r4] - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02244878: .word Unk_ov18_022533C0 - arm_func_end ov18_022447F4 - - arm_func_start ov18_0224487C -ov18_0224487C: ; 0x0224487C - stmfd sp!, {r4, lr} - mov r4, r0 - ldr r1, [r4, #0x2c] - mov r0, #1 - bl ov18_022463CC - ldr r0, _022448DC ; =0x022533C0 - ldr r0, [r0, #0] - add r0, r0, #0x610 - cmp r4, r0 - bne _022448BC - bl G2_GetBG0CharPtr - mov r1, r0 - mov r0, #0 - mov r2, #0x6000 - bl MIi_CpuClear16 - b _022448D0 -_022448BC: - bl G2_GetBG0CharPtr - mov r1, r0 - mov r0, #0 - mov r2, #0x3000 - bl MIi_CpuClear16 -_022448D0: - add r0, r4, #0x28 - bl ov18_0224508C - ldmia sp!, {r4, pc} - ; .align 2, 0 -_022448DC: .word Unk_ov18_022533C0 - arm_func_end ov18_0224487C - - arm_func_start ov18_022448E0 -ov18_022448E0: ; 0x022448E0 - ldr r2, _022448FC ; =0x022533C0 - mov r1, #0x30 - ldr r2, [r2, #0] - ldr ip, _02244900 ; =ov18_0224487C - add r2, r2, #0x610 - mla r0, r1, r0, r2 - bx ip - ; .align 2, 0 -_022448FC: .word Unk_ov18_022533C0 -_02244900: .word ov18_0224487C - arm_func_end ov18_022448E0 - - arm_func_start ov18_02244904 -ov18_02244904: ; 0x02244904 - stmfd sp!, {r4, lr} - sub sp, sp, #0x10 - ldr r4, [r0, #0x1c] - add ip, sp, #0xc - mov lr, #0 - strb lr, [ip] - strb lr, [ip, #1] - ldr ip, [r4] - ldr ip, [ip, #8] - ldrb ip, [ip, #7] - cmp ip, #7 - addls pc, pc, ip, lsl #2 - b _02244984 -_02244938: ; jump table - b _02244958 ; case 0 - b _02244964 ; case 1 - b _02244964 ; case 2 - b _02244970 ; case 3 - b _02244970 ; case 4 - b _0224497C ; case 5 - b _0224497C ; case 6 - b _02244958 ; case 7 -_02244958: - mov ip, #1 - strb ip, [sp, #0xc] - b _02244984 -_02244964: - mov ip, #1 - strb ip, [sp, #0xd] - b _02244984 -_02244970: - sub ip, lr, #1 - strb ip, [sp, #0xc] - b _02244984 -_0224497C: - sub ip, lr, #1 - strb ip, [sp, #0xd] -_02244984: - ldr lr, [sp, #0x18] - ldr ip, [sp, #0x1c] - str lr, [sp] - str ip, [sp, #4] - ldrb lr, [sp, #0xc] - ldrb ip, [sp, #0xd] - add r0, r0, #0x18 - strb lr, [sp, #8] - strb ip, [sp, #9] - bl NNSi_G2dTextCanvasDrawText - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov18_02244904 - - arm_func_start ov18_022449B4 -ov18_022449B4: ; 0x022449B4 - stmfd sp!, {r3, lr} - sub sp, sp, #8 - ldrh ip, [sp, #0x10] - str r3, [sp] - ldr r3, _022449EC ; =0x022533C0 - str ip, [sp, #4] - ldr lr, [r3] - ldr ip, [sp, #0x14] - mov r3, r2 - mov r2, r1 - add r1, lr, ip, lsl #3 - bl NNS_G2dCharCanvasDrawChar - add sp, sp, #8 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022449EC: .word Unk_ov18_022533C0 - arm_func_end ov18_022449B4 - - arm_func_start ov18_022449F0 -ov18_022449F0: ; 0x022449F0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - ldr r6, [sp, #0x34] - mov sb, r1 - ldrh r1, [r6] - ldr r7, [sp, #0x30] - ldr r5, [sp, #0x38] - cmp r1, #0 - mov sl, r0 - mov r8, r2 - mov fp, r3 - addeq sp, sp, #8 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02244A24: - ldr r0, _02244A94 ; =0x022533C0 - ldr r0, [r0, #0] - add r4, r0, r5, lsl #3 - mov r0, r4 - bl NNS_G2dFontFindGlyphIndex - mov r1, r0 - ldr r0, _02244A98 ; =0x0000FFFF - cmp r1, r0 - ldreq r0, [r4] - ldreqh r1, [r0, #2] - mov r0, r4 - bl NNS_G2dFontGetCharWidthsFromIndex - ldrh r1, [r6] - mov r2, r0 - mov r0, sl - stmia sp, {r1, r5} - ldrsb r1, [r2, #2] - mov r2, r8 - mov r3, fp - sub r1, r7, r1 - add r1, sb, r1, asr #1 - bl ov18_022449B4 - ldrh r1, [r6, #2]! - add sb, sb, r7 - cmp r1, #0 - bne _02244A24 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_02244A94: .word Unk_ov18_022533C0 -_02244A98: .word 0x0000FFFF - arm_func_end ov18_022449F0 - - arm_func_start ov18_02244A9C -ov18_02244A9C: ; 0x02244A9C - stmfd sp!, {r4, lr} - sub sp, sp, #0x18 - ldr r4, [r0, #0x1c] - add ip, sp, #0x14 - mov lr, #0 - strb lr, [ip] - strb lr, [ip, #1] - ldr ip, [r4] - ldr ip, [ip, #8] - ldrb ip, [ip, #7] - cmp ip, #7 - addls pc, pc, ip, lsl #2 - b _02244B1C -_02244AD0: ; jump table - b _02244AF0 ; case 0 - b _02244AFC ; case 1 - b _02244AFC ; case 2 - b _02244B08 ; case 3 - b _02244B08 ; case 4 - b _02244B14 ; case 5 - b _02244B14 ; case 6 - b _02244AF0 ; case 7 -_02244AF0: - mov ip, #1 - strb ip, [sp, #0x14] - b _02244B1C -_02244AFC: - mov ip, #1 - strb ip, [sp, #0x15] - b _02244B1C -_02244B08: - sub ip, lr, #1 - strb ip, [sp, #0x14] - b _02244B1C -_02244B14: - sub ip, lr, #1 - strb ip, [sp, #0x15] -_02244B1C: - ldr lr, [sp, #0x20] - ldr ip, [sp, #0x24] - str lr, [sp] - ldr lr, [sp, #0x28] - str ip, [sp, #4] - ldr ip, [sp, #0x2c] - str lr, [sp, #8] - str ip, [sp, #0xc] - ldrb lr, [sp, #0x14] - ldrb ip, [sp, #0x15] - add r0, r0, #0x18 - strb lr, [sp, #0x10] - strb ip, [sp, #0x11] - bl NNSi_G2dTextCanvasDrawTextRect - add sp, sp, #0x18 - ldmia sp!, {r4, pc} - arm_func_end ov18_02244A9C - - arm_func_start ov18_02244B5C -ov18_02244B5C: ; 0x02244B5C - stmfd sp!, {r3, lr} - ldr r2, [r0, #0x14] - ldr r2, [r2, #4] - blx r2 - ldmia sp!, {r3, pc} - arm_func_end ov18_02244B5C - - arm_func_start ov18_02244B70 -ov18_02244B70: ; 0x02244B70 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x10 - mov r6, r3 - mov r4, r0 - mov r8, r1 - mov r0, r6 - mov r1, #0 - mov r7, r2 - bl ov18_02243BBC - mov r2, #0 - mov r5, r0 - mov r0, r6 - mvn r1, #0 - mov r3, r2 - bl ov18_02243BD0 - mov r0, r6 - mvn r1, #0 - mov r2, #0 - mov r3, #0xf - bl ov18_02243C74 - mov r0, r6 - mvn r1, #0 - ldr r2, [sp, #0x28] - bl ov18_02243DE4 - str r7, [sp] - mov r0, r5 - mov r3, r8 - mov r1, #0 - str r1, [sp, #4] - ldrh r2, [r4, #0x2c] - mov r1, #2 - str r2, [sp, #8] - str r1, [sp, #0xc] - ldrb r1, [r4, #0x2e] - ldrb r2, [r4, #0x2f] - bl NNS_G2dArrangeOBJ1D - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end ov18_02244B70 - - arm_func_start ov18_02244C08 -ov18_02244C08: ; 0x02244C08 - ldr r1, _02244C28 ; =0x022533C0 - ldr r2, [r1, #0] - add r1, r2, #0x610 - cmp r0, r1 - mov r0, #1 - streqb r0, [r2, #0x67c] - strneb r0, [r2, #0x67d] - bx lr - ; .align 2, 0 -_02244C28: .word Unk_ov18_022533C0 - arm_func_end ov18_02244C08 - - .rodata - - - .global Unk_ov18_02249728 -Unk_ov18_02249728: ; 0x02249728 - .byte 0x0, 0x0, 0x80, 0x1 - - .global Unk_ov18_0224972C -Unk_ov18_0224972C: ; 0x0224972C - .short 0x20, 0x18, 0x20, 0xC - - - .data - - - .global Unk_ov18_0224B210 -Unk_ov18_0224B210: ; 0x0224B210 - .word Unk_ov18_0224B230 - .word Unk_ov18_0224B220 - - .global Unk_ov18_0224B218 -Unk_ov18_0224B218: ; 0x0224B218 - .word Unk_ov18_0224B240 - .word Unk_ov18_0224B220 - - .global Unk_ov18_0224B220 -Unk_ov18_0224B220: ; 0x0224B220 - .asciz "msg/lc_s.NFTR.l" - - .global Unk_ov18_0224B230 -Unk_ov18_0224B230: ; 0x0224B230 - .asciz "msg/kc_m.NFTR.l" - - .global Unk_ov18_0224B240 -Unk_ov18_0224B240: ; 0x0224B240 - .asciz "msg/lc_m.NFTR.l" - - - - .bss - - - .global Unk_ov18_022533C0 -Unk_ov18_022533C0: ; 0x022533C0 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/foundation.s b/subprojects/NitroDWC/libraries/util/asm/foundation.s deleted file mode 100644 index 7969d342ae..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/foundation.s +++ /dev/null @@ -1,49 +0,0 @@ - .include "macros/function.inc" - - - - .text - - - arm_func_start ov18_02244C2C -ov18_02244C2C: ; 0x02244C2C - strh r0, [r2] - strh r1, [r2, #2] - bx lr - arm_func_end ov18_02244C2C - - arm_func_start ov18_02244C38 -ov18_02244C38: ; 0x02244C38 - ldr ip, [sp] - strh r0, [ip] - strh r1, [ip, #2] - strh r2, [ip, #4] - strh r3, [ip, #6] - bx lr - arm_func_end ov18_02244C38 - - arm_func_start ov18_02244C50 -ov18_02244C50: ; 0x02244C50 - ldrh r3, [r0] - strh r3, [r2] - ldrh r3, [r0, #2] - strh r3, [r2, #2] - ldrh ip, [r0] - ldrh r3, [r1] - add r3, ip, r3 - strh r3, [r2, #4] - ldrh r3, [r0, #2] - ldrh r0, [r1, #2] - add r0, r3, r0 - strh r0, [r2, #6] - bx lr - arm_func_end ov18_02244C50 - - .rodata - - - .global Unk_ov18_02249734 -Unk_ov18_02249734: ; 0x02249734 - .word 0x0 - .word 0xC00100 - diff --git a/subprojects/NitroDWC/libraries/util/asm/graphics.s b/subprojects/NitroDWC/libraries/util/asm/graphics.s deleted file mode 100644 index 8ed5355dd9..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/graphics.s +++ /dev/null @@ -1,245 +0,0 @@ - .include "macros/function.inc" - - - - .text - - - arm_func_start ov18_02244C84 -ov18_02244C84: ; 0x02244C84 - cmp r0, #1 - bne _02244CB0 - ldr r3, _02244CD4 ; =0x04001000 - ldr r2, [r3, #0] - ldr r0, [r3, #0] - and ip, r2, #0x1f00 - bic r2, r0, #0x1f00 - orr r0, r1, ip, lsr #8 - orr r0, r2, r0, lsl #8 - str r0, [r3, #0] - bx lr -_02244CB0: - mov r3, #0x4000000 - ldr r2, [r3, #0] - ldr r0, [r3, #0] - and ip, r2, #0x1f00 - bic r2, r0, #0x1f00 - orr r0, r1, ip, lsr #8 - orr r0, r2, r0, lsl #8 - str r0, [r3, #0] - bx lr - ; .align 2, 0 -_02244CD4: .word 0x04001000 - arm_func_end ov18_02244C84 - - arm_func_start ov18_02244CD8 -ov18_02244CD8: ; 0x02244CD8 - cmp r0, #1 - bne _02244D08 - ldr r3, _02244D30 ; =0x04001000 - mvn r0, r1 - ldr r2, [r3, #0] - ldr r1, [r3, #0] - and r2, r2, #0x1f00 - bic r1, r1, #0x1f00 - and r0, r0, r2, lsr #8 - orr r0, r1, r0, lsl #8 - str r0, [r3, #0] - bx lr -_02244D08: - mov r3, #0x4000000 - ldr r0, [r3, #0] - ldr r2, [r3, #0] - and ip, r0, #0x1f00 - mvn r0, r1 - bic r1, r2, #0x1f00 - and r0, r0, ip, lsr #8 - orr r0, r1, r0, lsl #8 - str r0, [r3, #0] - bx lr - ; .align 2, 0 -_02244D30: .word 0x04001000 - arm_func_end ov18_02244CD8 - - arm_func_start ov18_02244D34 -ov18_02244D34: ; 0x02244D34 - cmp r0, #1 - bne _02244DBC - cmp r1, #0 - ldrh r0, [r2] - ldrh r3, [r2, #2] - bne _02244D84 - ldrh r1, [r2, #4] - ldrh ip, [r2, #6] - mov r2, r0, lsl #8 - mov r0, r3, lsl #8 - and r3, r2, #0xff00 - and r1, r1, #0xff - orr r3, r3, r1 - ldr r2, _02244E3C ; =0x04001040 - and r1, r0, #0xff00 - and r0, ip, #0xff - strh r3, [r2] - orr r0, r1, r0 - strh r0, [r2, #4] - bx lr -_02244D84: - ldrh r1, [r2, #4] - ldrh ip, [r2, #6] - mov r2, r0, lsl #8 - mov r0, r3, lsl #8 - and r3, r2, #0xff00 - and r1, r1, #0xff - orr r3, r3, r1 - ldr r2, _02244E40 ; =0x04001042 - and r1, r0, #0xff00 - and r0, ip, #0xff - strh r3, [r2] - orr r0, r1, r0 - strh r0, [r2, #4] - bx lr -_02244DBC: - cmp r1, #0 - ldrh r0, [r2] - ldrh r3, [r2, #2] - bne _02244E04 - ldrh r1, [r2, #4] - ldrh ip, [r2, #6] - mov r2, r0, lsl #8 - mov r0, r3, lsl #8 - and r3, r2, #0xff00 - and r1, r1, #0xff - orr r3, r3, r1 - ldr r2, _02244E44 ; =0x04000040 - and r1, r0, #0xff00 - and r0, ip, #0xff - strh r3, [r2] - orr r0, r1, r0 - strh r0, [r2, #4] - bx lr -_02244E04: - ldrh r1, [r2, #4] - ldrh ip, [r2, #6] - mov r2, r0, lsl #8 - mov r0, r3, lsl #8 - and r3, r2, #0xff00 - and r1, r1, #0xff - orr r3, r3, r1 - ldr r2, _02244E48 ; =0x04000042 - and r1, r0, #0xff00 - and r0, ip, #0xff - strh r3, [r2] - orr r0, r1, r0 - strh r0, [r2, #4] - bx lr - ; .align 2, 0 -_02244E3C: .word 0x04001040 -_02244E40: .word 0x04001042 -_02244E44: .word 0x04000040 -_02244E48: .word 0x04000042 - arm_func_end ov18_02244D34 - - arm_func_start ov18_02244E4C -ov18_02244E4C: ; 0x02244E4C - cmp r1, #3 - addls pc, pc, r1, lsl #2 - bx lr -_02244E58: ; jump table - b _02244E68 ; case 0 - b _02244EB8 ; case 1 - b _02244F08 ; case 2 - b _02244F58 ; case 3 -_02244E68: - cmp r0, #1 - bne _02244E94 - ldr r0, _02244FA8 ; =0x04001048 - cmp r3, #0 - ldrh r0, [r0] - bic r0, r0, #0x3f - orr r1, r0, r2 - ldr r0, _02244FA8 ; =0x04001048 - orrne r1, r1, #0x20 - strh r1, [r0] - bx lr -_02244E94: - ldr r0, _02244FAC ; =0x04000048 - cmp r3, #0 - ldrh r0, [r0] - bic r0, r0, #0x3f - orr r1, r0, r2 - ldr r0, _02244FAC ; =0x04000048 - orrne r1, r1, #0x20 - strh r1, [r0] - bx lr -_02244EB8: - cmp r0, #1 - bne _02244EE4 - ldr r0, _02244FA8 ; =0x04001048 - cmp r3, #0 - ldrh r0, [r0] - bic r0, r0, #0x3f00 - orr r1, r0, r2, lsl #8 - ldr r0, _02244FA8 ; =0x04001048 - orrne r1, r1, #0x2000 - strh r1, [r0] - bx lr -_02244EE4: - ldr r0, _02244FAC ; =0x04000048 - cmp r3, #0 - ldrh r0, [r0] - bic r0, r0, #0x3f00 - orr r1, r0, r2, lsl #8 - ldr r0, _02244FAC ; =0x04000048 - orrne r1, r1, #0x2000 - strh r1, [r0] - bx lr -_02244F08: - cmp r0, #1 - bne _02244F34 - ldr r0, _02244FB0 ; =0x0400104A - cmp r3, #0 - ldrh r0, [r0] - bic r0, r0, #0x3f00 - orr r1, r0, r2, lsl #8 - ldr r0, _02244FB0 ; =0x0400104A - orrne r1, r1, #0x2000 - strh r1, [r0] - bx lr -_02244F34: - ldr r0, _02244FB4 ; =0x0400004A - cmp r3, #0 - ldrh r0, [r0] - bic r0, r0, #0x3f00 - orr r1, r0, r2, lsl #8 - ldr r0, _02244FB4 ; =0x0400004A - orrne r1, r1, #0x2000 - strh r1, [r0] - bx lr -_02244F58: - cmp r0, #1 - bne _02244F84 - ldr r0, _02244FB0 ; =0x0400104A - cmp r3, #0 - ldrh r0, [r0] - bic r0, r0, #0x3f - orr r1, r0, r2 - ldr r0, _02244FB0 ; =0x0400104A - orrne r1, r1, #0x20 - strh r1, [r0] - bx lr -_02244F84: - ldr r0, _02244FB4 ; =0x0400004A - cmp r3, #0 - ldrh r0, [r0] - bic r0, r0, #0x3f - orr r1, r0, r2 - ldr r0, _02244FB4 ; =0x0400004A - orrne r1, r1, #0x20 - strh r1, [r0] - bx lr - ; .align 2, 0 -_02244FA8: .word 0x04001048 -_02244FAC: .word 0x04000048 -_02244FB0: .word 0x0400104A -_02244FB4: .word 0x0400004A - arm_func_end ov18_02244E4C \ No newline at end of file diff --git a/subprojects/NitroDWC/libraries/util/asm/headline.s b/subprojects/NitroDWC/libraries/util/asm/headline.s deleted file mode 100644 index a516ca1e73..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/headline.s +++ /dev/null @@ -1,261 +0,0 @@ - .include "macros/function.inc" - .include "include/headline.inc" - - - - .text - - - arm_func_start ov18_0222BB34 -ov18_0222BB34: ; 0x0222BB34 - stmfd sp!, {r3, lr} - mov r0, #0xc0 - mov r1, #4 - bl ov18_02245068 - ldr r2, _0222BB98 ; =0x02253294 - ldr r1, _0222BB9C ; =0x020C072C - str r0, [r2, #0] - ldr r0, _0222BBA0 ; =0x02249B34 - bl ov18_0222B700 - bl ov18_0222F75C - cmp r0, #0 - beq _0222BB70 - cmp r0, #1 - beq _0222BB84 - ldmia sp!, {r3, pc} -_0222BB70: - ldr r0, _0222BBA4 ; =0x02249AE4 - ldr r1, _0222BBA8 ; =GX_LoadBG1Scr - ldr r0, [r0, #0] - bl ov18_0222B700 - ldmia sp!, {r3, pc} -_0222BB84: - ldr r0, _0222BBA4 ; =0x02249AE4 - ldr r1, _0222BBA8 ; =GX_LoadBG1Scr - ldr r0, [r0, #4] - bl ov18_0222B700 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222BB98: .word Unk_ov18_02253294 -_0222BB9C: .word 0x020C072C -_0222BBA0: .word Unk_ov18_02249B34 -_0222BBA4: .word Unk_ov18_02249AE4 -_0222BBA8: .word GX_LoadBG1Scr - arm_func_end ov18_0222BB34 - - arm_func_start ov18_0222BBAC -ov18_0222BBAC: ; 0x0222BBAC - ldr ip, _0222BBB8 ; =ov18_0224508C - ldr r0, _0222BBBC ; =0x02253294 - bx ip - ; .align 2, 0 -_0222BBB8: .word ov18_0224508C -_0222BBBC: .word Unk_ov18_02253294 - arm_func_end ov18_0222BBAC - - arm_func_start ov18_0222BBC0 -ov18_0222BBC0: ; 0x0222BBC0 - stmfd sp!, {r4, lr} - ldr r1, _0222BC10 ; =0x02249AE4 - ldr r0, [r1, r0, lsl #2] - bl ov18_0222B6A0 - mov r1, #0 - mov r2, #4 - bl ov18_02243738 - ldr r1, _0222BC14 ; =0x02253294 - mov r4, r0 - ldr r1, [r1, #0] - mov r2, #0xc0 - bl MIi_CpuCopyFast - mov r0, r4 - bl ov18_0224382C - mov r0, #1 - ldr r1, _0222BC18 ; =ov18_0222BC4C - mov r2, #0 - mov r3, #0x78 - bl ov18_02246304 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0222BC10: .word Unk_ov18_02249AE4 -_0222BC14: .word Unk_ov18_02253294 -_0222BC18: .word ov18_0222BC4C - arm_func_end ov18_0222BBC0 - - arm_func_start ov18_0222BC1C -ov18_0222BC1C: ; 0x0222BC1C - stmfd sp!, {r3, lr} - bl ov18_0223DDCC - ldrb r0, [r0, #0xf4] - add r0, r0, #5 - bl ov18_0222BBC0 - ldmia sp!, {r3, pc} - arm_func_end ov18_0222BC1C - - arm_func_start ov18_0222BC34 -ov18_0222BC34: ; 0x0222BC34 - stmfd sp!, {r3, lr} - bl ov18_0223DDCC - ldrb r0, [r0, #0xf4] - add r0, r0, #2 - bl ov18_0222BBC0 - ldmia sp!, {r3, pc} - arm_func_end ov18_0222BC34 - - arm_func_start ov18_0222BC4C -ov18_0222BC4C: ; 0x0222BC4C - stmfd sp!, {r4, lr} - ldr r1, _0222BC88 ; =0x02253294 - mov r4, r0 - ldr r0, [r1, #0] - mov r1, #0xc0 - bl DC_FlushRange - ldr r0, _0222BC88 ; =0x02253294 - mov r1, #0 - ldr r0, [r0, #0] - mov r2, #0xc0 - bl GX_LoadBG1Scr - mov r1, r4 - mov r0, #1 - bl ov18_022463AC - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0222BC88: .word Unk_ov18_02253294 - arm_func_end ov18_0222BC4C - - .data - - - .global Unk_ov18_02249914 -Unk_ov18_02249914: ; 0x02249914 - .ascii "char/jb2HlAp.nsc.l" - .space 0x2 - - .global Unk_ov18_02249928 -Unk_ov18_02249928: ; 0x02249928 - .ascii "char/jb4HlIp.nsc.l" - .space 0x2 - - .global Unk_ov18_0224993C -Unk_ov18_0224993C: ; 0x0224993C - .asciz "char/jb4HlWep.nsc.l" - - .global Unk_ov18_02249950 -Unk_ov18_02249950: ; 0x02249950 - .asciz "char/jb4HlUsb.nsc.l" - - .global Unk_ov18_02249964 -Unk_ov18_02249964: ; 0x02249964 - .ascii "char/jb4HlDns1.nsc.l" - .space 0x4 - - .global Unk_ov18_0224997C -Unk_ov18_0224997C: ; 0x0224997C - .ascii "char/jb4HlSsid.nsc.l" - .space 0x4 - - .global Unk_ov18_02249994 -Unk_ov18_02249994: ; 0x02249994 - .ascii "char/jb5HlMove.nsc.l" - .space 0x4 - - .global Unk_ov18_022499AC -Unk_ov18_022499AC: ; 0x022499AC - .ascii "char/jb2HlWiFi.nsc.l" - .space 0x4 - - .global Unk_ov18_022499C4 -Unk_ov18_022499C4: ; 0x022499C4 - .ascii "char/jb5HlInfo.nsc.l" - .space 0x4 - - .global Unk_ov18_022499DC -Unk_ov18_022499DC: ; 0x022499DC - .ascii "char/jb4HlMask.nsc.l" - .space 0x4 - - .global Unk_ov18_022499F4 -Unk_ov18_022499F4: ; 0x022499F4 - .ascii "char/jb4HlSet2.nsc.l" - .space 0x4 - - .global Unk_ov18_02249A0C -Unk_ov18_02249A0C: ; 0x02249A0C - .ascii "char/jb4HlDns0.nsc.l" - .space 0x4 - - .global Unk_ov18_02249A24 -Unk_ov18_02249A24: ; 0x02249A24 - .ascii "char/jb4HlSet3.nsc.l" - .space 0x4 - - .global Unk_ov18_02249A3C -Unk_ov18_02249A3C: ; 0x02249A3C - .ascii "char/jb4HlSet1.nsc.l" - .space 0x4 - - .global Unk_ov18_02249A54 -Unk_ov18_02249A54: ; 0x02249A54 - .asciz "char/jb3HlList1.nsc.l" - .space 0x2 - - .global Unk_ov18_02249A6C -Unk_ov18_02249A6C: ; 0x02249A6C - .asciz "char/jb3HlList2.nsc.l" - .space 0x2 - - .global Unk_ov18_02249A84 -Unk_ov18_02249A84: ; 0x02249A84 - .asciz "char/jb3HlList3.nsc.l" - .space 0x2 - - .global Unk_ov18_02249A9C -Unk_ov18_02249A9C: ; 0x02249A9C - .asciz "char/jb5HlErase.nsc.l" - .space 0x2 - - .global Unk_ov18_02249AB4 -Unk_ov18_02249AB4: ; 0x02249AB4 - .ascii "char/jb5HlOption.nsc.l" - .space 0x2 - - .global Unk_ov18_02249ACC -Unk_ov18_02249ACC: ; 0x02249ACC - .asciz "char/jb4HlGateway.nsc.l" - - .global Unk_ov18_02249AE4 -Unk_ov18_02249AE4: ; 0x02249AE4 - .word Unk_ov18_022499AC - .word Unk_ov18_02249914 - .word Unk_ov18_02249A54 - .word Unk_ov18_02249A6C - .word Unk_ov18_02249A84 - .word Unk_ov18_02249A3C - .word Unk_ov18_022499F4 - .word Unk_ov18_02249A24 - .word Unk_ov18_02249950 - .word Unk_ov18_0224997C - .word Unk_ov18_0224993C - .word Unk_ov18_02249928 - .word Unk_ov18_022499DC - .word Unk_ov18_02249ACC - .word Unk_ov18_02249A0C - .word Unk_ov18_02249964 - .word Unk_ov18_02249AB4 - .word Unk_ov18_022499C4 - .word Unk_ov18_02249A9C - .word Unk_ov18_02249994 - - .global Unk_ov18_02249B34 -Unk_ov18_02249B34: ; 0x02249B34 - .asciz "char/jbBgHl.ncg.l" - .space 0x2 - - - - .bss - - - .global Unk_ov18_02253294 -Unk_ov18_02253294: ; 0x02253294 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/heap_dwcutil.s b/subprojects/NitroDWC/libraries/util/asm/heap_dwcutil.s deleted file mode 100644 index 237663f5ed..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/heap_dwcutil.s +++ /dev/null @@ -1,130 +0,0 @@ - .include "macros/function.inc" - .include "include/heap_dwcutil.inc" - - - - .text - - - arm_func_start ov18_02244FB8 -ov18_02244FB8: ; 0x02244FB8 - stmfd sp!, {r4, lr} - mov r4, r0 - mov r1, #0 - mov r2, #0x40000 - bl MI_CpuFill8 - mov r0, r4 - mov r1, #0x40000 - mov r2, #0 - bl NNS_FndCreateExpHeapEx - ldr r1, _02244FF4 ; =0x022533C4 - cmp r0, #0 - str r0, [r1, #0] - ldmneia sp!, {r4, pc} - bl OS_Terminate - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02244FF4: .word Unk_ov18_022533C4 - arm_func_end ov18_02244FB8 - - arm_func_start ov18_02244FF8 -ov18_02244FF8: ; 0x02244FF8 - stmfd sp!, {r3, lr} - ldr r0, _02245018 ; =0x022533C4 - ldr r0, [r0, #0] - bl NNS_FndDestroyExpHeap - ldr r0, _02245018 ; =0x022533C4 - mov r1, #0 - str r1, [r0, #0] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02245018: .word Unk_ov18_022533C4 - arm_func_end ov18_02244FF8 - - arm_func_start ov18_0224501C -ov18_0224501C: ; 0x0224501C - stmfd sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r0, #1 - mov r4, r1 - bl OS_DisableIrqMask - ldr r1, _02245064 ; =0x022533C4 - mov r5, r0 - ldr r0, [r1, #0] - mov r1, r6 - mov r2, r4 - bl NNS_FndAllocFromExpHeapEx - movs r4, r0 - bne _02245054 - bl OS_Terminate -_02245054: - mov r0, r5 - bl OS_EnableIrqMask - mov r0, r4 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_02245064: .word Unk_ov18_022533C4 - arm_func_end ov18_0224501C - - arm_func_start ov18_02245068 -ov18_02245068: ; 0x02245068 - stmfd sp!, {r4, lr} - mov r4, r0 - bl ov18_0224501C - mov r2, r4 - mov r1, #0 - mov r4, r0 - bl MI_CpuFill8 - mov r0, r4 - ldmia sp!, {r4, pc} - arm_func_end ov18_02245068 - - arm_func_start ov18_0224508C -ov18_0224508C: ; 0x0224508C - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r0, #1 - bl OS_DisableIrqMask - ldr r1, [r5, #0] - mov r4, r0 - cmp r1, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, _022450CC ; =0x022533C4 - ldr r0, [r0, #0] - bl NNS_FndFreeToExpHeap - mov r0, r4 - bl OS_EnableIrqMask - mov r0, #0 - str r0, [r5, #0] - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_022450CC: .word Unk_ov18_022533C4 - arm_func_end ov18_0224508C - - arm_func_start ov18_022450D0 -ov18_022450D0: ; 0x022450D0 - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r0, #1 - bl OS_DisableIrqMask - mov r4, r0 - cmp r5, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, _02245108 ; =0x022533C4 - mov r1, r5 - ldr r0, [r0, #0] - bl NNS_FndFreeToExpHeap - mov r0, r4 - bl OS_EnableIrqMask - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02245108: .word Unk_ov18_022533C4 - arm_func_end ov18_022450D0 - - .bss - - - .global Unk_ov18_022533C4 -Unk_ov18_022533C4: ; 0x022533C4 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/icon.s b/subprojects/NitroDWC/libraries/util/asm/icon.s deleted file mode 100644 index a782a4fb86..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/icon.s +++ /dev/null @@ -1,149 +0,0 @@ - .include "macros/function.inc" - .include "include/icon.inc" - - - - .text - - - arm_func_start ov18_0222BC8C -ov18_0222BC8C: ; 0x0222BC8C - stmfd sp!, {r3, r4, r5, lr} - ldr r1, _0222BD34 ; =0x02253298 - mov r4, r0 - ldr r0, [r1, #0] - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, #0xc - mov r1, #4 - bl ov18_02245068 - ldr r1, _0222BD38 ; =0x02248D20 - ldr r2, _0222BD34 ; =0x02253298 - ldrb r1, [r1, r4, lsl #2] - str r0, [r2, #0] - strb r4, [r0, #8] - mov r0, #0 - bl ov18_02243F60 - ldr lr, _0222BD34 ; =0x02253298 - ldr ip, _0222BD3C ; =0xFE00FF00 - ldr r2, [lr] - ldr r1, _0222BD40 ; =ov18_0222BD88 - str r0, [r2, #0] - ldr r2, [lr] - mov r0, #0 - ldr r5, [r2, #0] - mov r2, r0 - ldr r4, [r5, #0] - mov r3, #0x78 - and r4, r4, ip - orr r4, r4, #0x26 - orr r4, r4, #0xe50000 - str r4, [r5, #0] - ldr ip, [lr] - ldr lr, [ip] - ldrh ip, [lr, #4] - bic ip, ip, #0xc00 - orr ip, ip, #0x800 - strh ip, [lr, #4] - bl ov18_02246304 - ldr r1, _0222BD34 ; =0x02253298 - ldr r1, [r1, #0] - str r0, [r1, #4] - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0222BD34: .word Unk_ov18_02253298 -_0222BD38: .word Unk_ov18_02248D20 -_0222BD3C: .word 0xFE00FF00 -_0222BD40: .word ov18_0222BD88 - arm_func_end ov18_0222BC8C - - arm_func_start ov18_0222BD44 -ov18_0222BD44: ; 0x0222BD44 - stmfd sp!, {r3, lr} - ldr r0, _0222BD80 ; =0x02253298 - ldr r0, [r0, #0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - ldr r1, [r0, #4] - mov r0, #0 - bl ov18_022463CC - ldr r0, _0222BD80 ; =0x02253298 - ldr r0, [r0, #0] - ldr r0, [r0, #0] - bl ov18_02245B74 - ldr r0, _0222BD84 ; =0x02253298 - bl ov18_0224508C - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222BD80: .word Unk_ov18_02253298 -_0222BD84: .word Unk_ov18_02253298 - arm_func_end ov18_0222BD44 - - arm_func_start ov18_0222BD88 -ov18_0222BD88: ; 0x0222BD88 - stmfd sp!, {r3, r4, r5, lr} - ldr r0, _0222BE20 ; =0x04000208 - mov r4, #0 - ldrh r5, [r0] - strh r4, [r0] - bl WM_GetAllowedChannel - cmp r0, #0x8000 - beq _0222BDB0 - bl WM_GetLinkLevel - mov r4, r0 -_0222BDB0: - ldr r2, _0222BE20 ; =0x04000208 - ldr r1, _0222BE24 ; =0x02253298 - ldrh r0, [r2] - ldr r3, _0222BE28 ; =0x02248D20 - mov r0, #0 - strh r5, [r2] - ldr r2, [r1, #0] - ldrsb r1, [r2, #8] - ldr r2, [r2, #0] - add r1, r3, r1, lsl #2 - ldrb r1, [r4, r1] - bl ov18_02243ECC - ldr r1, _0222BE24 ; =0x02253298 - ldr r0, _0222BE2C ; =0xFE00FF00 - ldr r2, [r1, #0] - ldr r3, [r2, #0] - ldr r2, [r3, #0] - and r0, r2, r0 - orr r0, r0, #0x26 - orr r0, r0, #0xe50000 - str r0, [r3, #0] - ldr r0, [r1, #0] - ldr r1, [r0, #0] - ldrh r0, [r1, #4] - bic r0, r0, #0xc00 - orr r0, r0, #0x800 - strh r0, [r1, #4] - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0222BE20: .word 0x04000208 -_0222BE24: .word Unk_ov18_02253298 -_0222BE28: .word Unk_ov18_02248D20 -_0222BE2C: .word 0xFE00FF00 - arm_func_end ov18_0222BD88 - - .rodata - - - .global Unk_ov18_02248D1C -Unk_ov18_02248D1C: ; 0x02248D1C - .short 0xE5 - .short 0x26 - - .global Unk_ov18_02248D20 -Unk_ov18_02248D20: ; 0x02248D20 - .byte 0x18, 0x17, 0x16, 0x15 - .byte 0x5F, 0x5E, 0x5D, 0x5C - - .bss - - - .global Unk_ov18_02253298 -Unk_ov18_02253298: ; 0x02253298 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/incbin/atermset.bin b/subprojects/NitroDWC/libraries/util/asm/incbin/atermset.bin deleted file mode 100644 index c1b91dbcb6..0000000000 Binary files a/subprojects/NitroDWC/libraries/util/asm/incbin/atermset.bin and /dev/null differ diff --git a/subprojects/NitroDWC/libraries/util/asm/incbin/button.bin b/subprojects/NitroDWC/libraries/util/asm/incbin/button.bin deleted file mode 100644 index 0656a7de72..0000000000 Binary files a/subprojects/NitroDWC/libraries/util/asm/incbin/button.bin and /dev/null differ diff --git a/subprojects/NitroDWC/libraries/util/asm/incbin/common.bin b/subprojects/NitroDWC/libraries/util/asm/incbin/common.bin deleted file mode 100644 index c092eb7615..0000000000 Binary files a/subprojects/NitroDWC/libraries/util/asm/incbin/common.bin and /dev/null differ diff --git a/subprojects/NitroDWC/libraries/util/asm/incbin/keyboard.bin b/subprojects/NitroDWC/libraries/util/asm/incbin/keyboard.bin deleted file mode 100644 index e08aba3d91..0000000000 Binary files a/subprojects/NitroDWC/libraries/util/asm/incbin/keyboard.bin and /dev/null differ diff --git a/subprojects/NitroDWC/libraries/util/asm/incbin/keyboard10.bin b/subprojects/NitroDWC/libraries/util/asm/incbin/keyboard10.bin deleted file mode 100644 index 169fb3cd3d..0000000000 Binary files a/subprojects/NitroDWC/libraries/util/asm/incbin/keyboard10.bin and /dev/null differ diff --git a/subprojects/NitroDWC/libraries/util/asm/include/anime.inc b/subprojects/NitroDWC/libraries/util/asm/include/anime.inc deleted file mode 100644 index a10a6bf95e..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/anime.inc +++ /dev/null @@ -1,10 +0,0 @@ -.public FX_DivS32 -.public FX_ModS32 -.public ov18_0222AE40 -.public ov18_02243ECC -.public ov18_02243F60 -.public ov18_02245068 -.public ov18_0224508C -.public ov18_02245B74 -.public ov18_02246304 -.public ov18_022463CC diff --git a/subprojects/NitroDWC/libraries/util/asm/include/aoss.inc b/subprojects/NitroDWC/libraries/util/asm/include/aoss.inc deleted file mode 100644 index f27319f75e..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/aoss.inc +++ /dev/null @@ -1,88 +0,0 @@ -.public OS_Sleep -.public MI_CpuFill8 -.public MI_CpuCopy8 -.public RTC_GetTime -.public _ull_mul -.public _s32_div_f -.public _u32_div_f -.public SOC_Socket -.public SOC_Bind -.public SOC_RecvFrom -.public SOC_SendTo -.public SOC_Close -.public SOC_Startup -.public SOC_Cleanup -.public SOC_Poll -.public ov18_022246C4 -.public ov18_022246D4 -.public ov18_022247D4 -.public ov18_022251EC -.public ov18_02225204 -.public ov18_02225230 -.public ov18_02225288 -.public ov18_02225294 -.public ov18_022252A0 -.public ov18_02225498 -.public ov18_022254BC -.public ov18_02225538 -.public ov18_0222557C -.public ov18_022255AC -.public ov18_022255D8 -.public ov18_02225678 -.public ov18_02225754 -.public ov18_0222582C -.public ov18_022258D0 -.public ov18_022259C4 -.public ov18_02225A08 -.public ov18_02225A54 -.public ov18_02225B10 -.public ov18_02225B34 -.public ov18_02225C88 -.public ov18_02225D40 -.public ov18_02225D70 -.public ov18_02225E80 -.public ov18_02225E90 -.public ov18_02225EE4 -.public ov18_02226028 -.public ov18_02226104 -.public ov18_02226170 -.public ov18_022261FC -.public ov18_02226250 -.public ov18_022262A8 -.public ov18_02226310 -.public ov18_0222638C -.public ov18_02226414 -.public ov18_02226478 -.public ov18_022264A4 -.public ov18_022264E4 -.public ov18_0222650C -.public ov18_02226544 -.public ov18_0222657C -.public ov18_022265F8 -.public ov18_0222662C -.public ov18_02226650 -.public ov18_022266A8 -.public ov18_02226700 -.public ov18_02226724 -.public ov18_02226744 -.public ov18_02226754 -.public ov18_02226760 -.public ov18_02226774 -.public ov18_022267C8 -.public ov18_022267D8 -.public ov18_022267DC -.public ov18_022267E4 -.public ov18_022267F0 -.public ov18_022267F8 -.public ov18_02226820 -.public ov18_02226838 -.public ov18_02226860 -.public ov18_02226878 -.public ov18_0222688C -.public ov18_022268FC -.public ov18_02226908 -.public ov18_02226B54 -.public ov18_02226B8C -.public ov18_02226D04 -.public ov18_02226ED4 -.public ov18_02226EDC diff --git a/subprojects/NitroDWC/libraries/util/asm/include/aosslink.inc b/subprojects/NitroDWC/libraries/util/asm/include/aosslink.inc deleted file mode 100644 index 6160012eea..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/aosslink.inc +++ /dev/null @@ -1,26 +0,0 @@ -.public OS_Sleep -.public OS_InitMessageQueue -.public OS_SendMessage -.public OS_ReceiveMessage -.public OS_CreateAlarm -.public OS_SetAlarm -.public OS_CancelAlarm -.public OS_DisableInterrupts -.public OS_RestoreInterrupts -.public MIi_CpuClear16 -.public MIi_CpuCopy16 -.public MI_CpuFill8 -.public MI_CpuCopy8 -.public WCM_ClearApList -.public ov18_02226910 -.public ov18_0222699C -.public ov18_022269C0 -.public ov18_022269D0 -.public ov18_022269E4 -.public ov18_02227210 -.public ov18_02227254 -.public ov18_02227344 -.public ov18_02227380 -.public ov18_022273B8 -.public ov18_02227410 -.public ov18_02227494 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/apc.inc b/subprojects/NitroDWC/libraries/util/asm/include/apc.inc deleted file mode 100644 index 4641b6dfc8..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/apc.inc +++ /dev/null @@ -1,17 +0,0 @@ -.public OS_DisableInterrupts -.public OS_RestoreInterrupts -.public MIi_CpuCopy32 -.public MI_CpuFill8 -.public MI_CpuCopy8 -.public WCM_Init -.public WCM_Finish -.public WCM_StartupAsync -.public WCM_CleanupAsync -.public WCM_SearchAsync -.public WCM_ConnectAsync -.public WCM_DisconnectAsync -.public WCM_CountApList -.public WCM_LockApList -.public WCM_PointApList -.public ov18_02226EF0 -.public ov18_022271A8 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/archive.inc b/subprojects/NitroDWC/libraries/util/asm/include/archive.inc deleted file mode 100644 index 8f91fb699b..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/archive.inc +++ /dev/null @@ -1,34 +0,0 @@ -.public OS_GetLockID -.public OS_ReleaseLockID -.public OS_SPrintf -.public OS_Terminate -.public MI_UncompressLZ8 -.public FS_InitArchive -.public FS_RegisterArchiveName -.public FS_ReleaseArchiveName -.public FS_LoadArchive -.public FS_UnloadArchive -.public FS_LoadArchiveTables -.public FS_UnloadArchiveTables -.public FS_SetArchiveProc -.public FS_NotifyArchiveAsyncEnd -.public FS_InitFile -.public FS_OpenFile -.public FS_CloseFile -.public FS_ReadFile -.public FS_ChangeDir -.public CARD_LockRom -.public CARD_UnlockRom -.public CARDi_ReadRom -.public memcmp -.public strlen -.public ov18_0224367C -.public ov18_022436E0 -.public ov18_02243720 -.public ov18_02243730 -.public ov18_02243860 -.public ov18_02244008 -.public ov18_02244064 -.public ov18_022440BC -.public ov18_02245068 -.public ov18_0224508C diff --git a/subprojects/NitroDWC/libraries/util/asm/include/atermset.inc b/subprojects/NitroDWC/libraries/util/asm/include/atermset.inc deleted file mode 100644 index e36bfc6cf1..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/atermset.inc +++ /dev/null @@ -1,105 +0,0 @@ -.public OS_IsThreadAvailable -.public OS_CreateThread -.public OS_JoinThread -.public OS_IsThreadTerminated -.public OS_WakeupThreadDirect -.public OS_Sleep -.public OS_LockMutex -.public OS_UnlockMutex -.public OS_GetTick -.public OS_CreateAlarm -.public OS_SetAlarm -.public OS_CancelAlarm -.public OS_DisableInterrupts -.public OS_RestoreInterrupts -.public OS_GetMacAddress -.public MIi_CpuCopy32 -.public MI_CpuFill8 -.public MI_CpuCopy8 -.public memcpy -.public memset -.public memcmp -.public strlen -.public strcpy -.public _ull_div -.public _ull_mul -.public SOCL_GetHostID -.public SOC_Socket -.public SOC_Bind -.public SOC_RecvFrom -.public SOC_SendTo -.public SOC_Close -.public SOC_Startup -.public SOC_Cleanup -.public SOC_U32to4U8 -.public WCM_Init -.public WCM_Finish -.public WCM_StartupAsync -.public WCM_CleanupAsync -.public WCM_SearchAsync -.public WCM_ConnectAsync -.public WCM_DisconnectAsync -.public WCM_CountApList -.public WCM_LockApList -.public WCM_PointApList -.public ov18_0222754C -.public ov18_02227858 -.public ov18_022278C0 -.public ov18_02227904 -.public ov18_022279EC -.public ov18_02227A24 -.public ov18_02227A7C -.public ov18_02227B00 -.public ov18_02227BBC -.public ov18_02227C20 -.public ov18_02227C48 -.public ov18_02227C80 -.public ov18_02227CB0 -.public ov18_02227CBC -.public ov18_02227D60 -.public ov18_02227DB8 -.public ov18_02227EDC -.public ov18_02227F40 -.public ov18_0222810C -.public ov18_022283A0 -.public ov18_022283B8 -.public ov18_022283F4 -.public ov18_02228400 -.public ov18_02228470 -.public ov18_022284C0 -.public ov18_022284F4 -.public ov18_022285B8 -.public ov18_02228618 -.public ov18_02228640 -.public ov18_02228714 -.public ov18_02228764 -.public ov18_02228800 -.public ov18_0222880C -.public ov18_02228908 -.public ov18_02228ADC -.public ov18_02228B90 -.public ov18_02228D18 -.public ov18_022290FC -.public ov18_02229134 -.public ov18_022292EC -.public ov18_022294A4 -.public ov18_022294EC -.public ov18_022297A4 -.public ov18_02229934 -.public ov18_02229CF0 -.public ov18_0222A0AC -.public ov18_0222A0D4 -.public ov18_0222A14C -.public ov18_0222A1A0 -.public ov18_0222A9E8 -.public ov18_0222AA14 -.public ov18_0222AA40 -.public ov18_0222AA58 -.public ov18_0222AA70 -.public ov18_0222AA98 -.public ov18_0222AAB4 -.public ov18_0222AAD8 -.public ov18_0222AAE8 -.public ov18_0222AB1C -.public ov18_0222ACCC -.public ov18_0222AD18 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/button.inc b/subprojects/NitroDWC/libraries/util/asm/include/button.inc deleted file mode 100644 index 9aa4b60d82..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/button.inc +++ /dev/null @@ -1,21 +0,0 @@ -.public ov18_0222B0D8 -.public ov18_0222B16C -.public ov18_0222B1D8 -.public ov18_0222B228 -.public ov18_0222B3B4 -.public ov18_0222B418 -.public ov18_0222B490 -.public ov18_02243B3C -.public ov18_02243BBC -.public ov18_02243CF4 -.public ov18_02243DE4 -.public ov18_02243E44 -.public ov18_02243ECC -.public ov18_02243F8C -.public ov18_02244C50 -.public ov18_02245068 -.public ov18_0224508C -.public ov18_022455B8 -.public ov18_02246304 -.public ov18_022463A4 -.public ov18_022463AC diff --git a/subprojects/NitroDWC/libraries/util/asm/include/cell.inc b/subprojects/NitroDWC/libraries/util/asm/include/cell.inc deleted file mode 100644 index 1f83c12edf..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/cell.inc +++ /dev/null @@ -1,16 +0,0 @@ -.public OS_EnableIrqMask -.public OS_DisableIrqMask -.public OS_Terminate -.public ov18_02244008 -.public ov18_02244048 -.public ov18_02244064 -.public ov18_022440BC -.public ov18_02245068 -.public ov18_0224508C -.public ov18_02245974 -.public ov18_022459A0 -.public ov18_022459BC -.public ov18_022459F4 -.public ov18_02245A24 -.public ov18_02245A34 -.public ov18_02245BC0 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/cellinfo.inc b/subprojects/NitroDWC/libraries/util/asm/include/cellinfo.inc deleted file mode 100644 index 4593b9683e..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/cellinfo.inc +++ /dev/null @@ -1,9 +0,0 @@ -.public MIi_CpuCopy16 -.public MIi_CpuClear32 -.public MIi_CpuCopy32 -.public ov18_02243738 -.public ov18_0224382C -.public ov18_022439E0 -.public ov18_02243BBC -.public ov18_02243ECC -.public ov18_02245B54 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/comment.inc b/subprojects/NitroDWC/libraries/util/asm/include/comment.inc deleted file mode 100644 index 4edf7f58b3..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/comment.inc +++ /dev/null @@ -1,7 +0,0 @@ -.public ov18_0222B700 -.public ov18_0222B8F8 -.public ov18_0222F8D0 -.public ov18_0224467C -.public ov18_022448E0 -.public ov18_02244A9C -.public ov18_02244C08 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/common.inc b/subprojects/NitroDWC/libraries/util/asm/include/common.inc deleted file mode 100644 index bfb6381cb6..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/common.inc +++ /dev/null @@ -1,16 +0,0 @@ -.public DC_FlushRange -.public strncpy -.public ov18_0222AF0C -.public ov18_0222B6A0 -.public ov18_0222B8F8 -.public ov18_0222F6E8 -.public ov18_0222F74C -.public ov18_0222F8B8 -.public ov18_0223EA28 -.public ov18_0223EFBC -.public ov18_02243738 -.public ov18_0224382C -.public ov18_0224467C -.public ov18_02244904 -.public ov18_02244A9C -.public ov18_02244C08 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/deque.inc b/subprojects/NitroDWC/libraries/util/asm/include/deque.inc deleted file mode 100644 index cfa17b7935..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/deque.inc +++ /dev/null @@ -1,7 +0,0 @@ -.public FX_ModS32 -.public OS_EnableIrqMask -.public OS_DisableIrqMask -.public OS_Terminate -.public ov18_02243FD4 -.public ov18_02245068 -.public ov18_0224508C diff --git a/subprojects/NitroDWC/libraries/util/asm/include/dwc_mov_mbp.inc b/subprojects/NitroDWC/libraries/util/asm/include/dwc_mov_mbp.inc deleted file mode 100644 index 54076084b6..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/dwc_mov_mbp.inc +++ /dev/null @@ -1,30 +0,0 @@ -.public OS_DisableInterrupts -.public OS_RestoreInterrupts -.public OS_GetOwnerInfo -.public OS_Terminate -.public MI_CpuCopy8 -.public FS_InitFile -.public FS_OpenFile -.public FS_CloseFile -.public MB_CommSetParentStateCallback -.public MB_CommGetChildUser -.public MB_CommIsBootable -.public MB_CommResponseRequest -.public MB_GetSegmentLength -.public MB_ReadSegment -.public MB_RegisterFile -.public MB_Init -.public MB_SetParentCommParam -.public MB_StartParentFromIdle -.public MB_EndToIdle -.public MB_DisconnectChild -.public ov18_02240958 -.public ov18_02240A2C -.public ov18_02240ACC -.public ov18_02240BA4 -.public ov18_02240ED0 -.public ov18_02240F00 -.public ov18_02241224 -.public ov18_02241238 -.public ov18_022412A4 -.public ov18_02241448 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/dwc_mov_wh.inc b/subprojects/NitroDWC/libraries/util/asm/include/dwc_mov_wh.inc deleted file mode 100644 index 815228f39b..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/dwc_mov_wh.inc +++ /dev/null @@ -1,54 +0,0 @@ -.public OS_GetMacAddress -.public OS_Terminate -.public WM_SetIndCallback -.public WM_GetAllowedChannel -.public WM_GetDispersionBeaconPeriod -.public WM_Initialize -.public WM_Reset -.public WM_End -.public WM_SetParentParameter -.public WM_StartParent -.public WM_EndParent -.public WM_Disconnect -.public WM_StartMP -.public WM_EndMP -.public WM_StartDataSharing -.public WM_StepDataSharing -.public WM_GetSharedDataAddress -.public WM_StartKeySharing -.public WM_EndKeySharing -.public WM_SetWEPKey -.public WM_MeasureChannel -.public ov18_02241484 -.public ov18_02241500 -.public ov18_02241520 -.public ov18_02241564 -.public ov18_022415D0 -.public ov18_02241634 -.public ov18_0224166C -.public ov18_022416D0 -.public ov18_02241840 -.public ov18_022418D8 -.public ov18_02241A04 -.public ov18_02241A40 -.public ov18_02241A70 -.public ov18_02241AA0 -.public ov18_02241AF4 -.public ov18_02241B1C -.public ov18_02241B40 -.public ov18_02241B90 -.public ov18_02241BC0 -.public ov18_02241BF4 -.public ov18_02241C2C -.public ov18_02241C50 -.public ov18_02241C80 -.public ov18_02241CB4 -.public ov18_02241DF0 -.public ov18_02241E8C -.public ov18_02241F64 -.public ov18_02241FFC -.public ov18_0224215C -.public ov18_0224217C -.public ov18_022421C8 -.public ov18_02242474 -.public ov18_02242490 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/dwc_moveid.inc b/subprojects/NitroDWC/libraries/util/asm/include/dwc_moveid.inc deleted file mode 100644 index 463673b9cd..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/dwc_moveid.inc +++ /dev/null @@ -1,47 +0,0 @@ -.public sub_020A2A34 -.public OS_GetTick -.public OS_Terminate -.public MI_CpuFill8 -.public MI_CpuCopy8 -.public WM_GetNextTgid -.public MB_CommGetChildUser -.public MB_EndToIdle -.public ov18_0223E5D0 -.public ov18_022407B0 -.public ov18_022407F0 -.public ov18_02240910 -.public ov18_02240C7C -.public ov18_02240D5C -.public ov18_02240DC4 -.public ov18_02240EBC -.public ov18_02241238 -.public ov18_0224124C -.public ov18_0224136C -.public ov18_022413A0 -.public ov18_02241CDC -.public ov18_02241CF0 -.public ov18_02241D04 -.public ov18_02241D18 -.public ov18_02241F84 -.public ov18_022420E4 -.public ov18_02242218 -.public ov18_02242390 -.public ov18_022423A4 -.public ov18_022423CC -.public ov18_02242474 -.public ov18_02242490 -.public ov18_02242598 -.public ov18_022427B4 -.public ov18_02242834 -.public ov18_02242C88 -.public ov18_02242D30 -.public ov18_02242D54 -.public ov18_02242F0C -.public ov18_02242F38 -.public ov18_02243114 -.public ov18_0224312C -.public ov18_0224315C -.public ov18_02243198 -.public ov18_022431DC -.public ov18_02243344 -.public ov18_02243428 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/effect.inc b/subprojects/NitroDWC/libraries/util/asm/include/effect.inc deleted file mode 100644 index 007db8902a..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/effect.inc +++ /dev/null @@ -1,9 +0,0 @@ -.public FX_DivS32 -.public G2x_SetBlendBrightness_ -.public G2x_ChangeBlendBrightness_ -.public ov18_0224426C -.public ov18_022443EC -.public ov18_02245068 -.public ov18_0224508C -.public ov18_02246304 -.public ov18_022463AC diff --git a/subprojects/NitroDWC/libraries/util/asm/include/focus.inc b/subprojects/NitroDWC/libraries/util/asm/include/focus.inc deleted file mode 100644 index 95b1474afb..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/focus.inc +++ /dev/null @@ -1,7 +0,0 @@ -.public ov18_0222BAF4 -.public ov18_02243B3C -.public ov18_02243CF4 -.public ov18_02243DE4 -.public ov18_02243F8C -.public ov18_02245068 -.public ov18_0224508C diff --git a/subprojects/NitroDWC/libraries/util/asm/include/font.inc b/subprojects/NitroDWC/libraries/util/asm/include/font.inc deleted file mode 100644 index 78e6cecce2..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/font.inc +++ /dev/null @@ -1,39 +0,0 @@ -.public NNS_G2dFontInitUTF16 -.public NNS_G2dFontFindGlyphIndex -.public NNS_G2dFontGetCharWidthsFromIndex -.public NNS_G2dCharCanvasDrawChar -.public NNS_G2dCharCanvasInitForBG -.public NNS_G2dCharCanvasInitForOBJ1D -.public NNS_G2dMapScrToCharText -.public NNSi_G2dCalcRequiredOBJ -.public NNS_G2dArrangeOBJ1D -.public NNSi_G2dTextCanvasDrawText -.public NNSi_G2dTextCanvasDrawTextRect -.public G2_GetBG0ScrPtr -.public G2S_GetBG0ScrPtr -.public G2_GetBG0CharPtr -.public GX_LoadBG0Char -.public GXS_LoadBG0Char -.public DC_FlushRange -.public MIi_CpuClear16 -.public ov18_0222F74C -.public ov18_02243738 -.public ov18_0224382C -.public ov18_02243BBC -.public ov18_02243BD0 -.public ov18_02243C74 -.public ov18_02243DE4 -.public ov18_02244008 -.public ov18_02244048 -.public ov18_02244064 -.public ov18_022440BC -.public ov18_022447F4 -.public ov18_0224487C -.public ov18_022449B4 -.public ov18_02244B5C -.public ov18_02245068 -.public ov18_0224508C -.public ov18_02245C98 -.public ov18_02245E10 -.public ov18_02246304 -.public ov18_022463CC diff --git a/subprojects/NitroDWC/libraries/util/asm/include/headline.inc b/subprojects/NitroDWC/libraries/util/asm/include/headline.inc deleted file mode 100644 index 96e7f51f2c..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/headline.inc +++ /dev/null @@ -1,15 +0,0 @@ -.public GX_LoadBG1Scr -.public DC_FlushRange -.public MIi_CpuCopyFast -.public ov18_0222B6A0 -.public ov18_0222B700 -.public ov18_0222BBC0 -.public ov18_0222BC4C -.public ov18_0222F75C -.public ov18_0223DDCC -.public ov18_02243738 -.public ov18_0224382C -.public ov18_02245068 -.public ov18_0224508C -.public ov18_02246304 -.public ov18_022463AC diff --git a/subprojects/NitroDWC/libraries/util/asm/include/heap_dwcutil.inc b/subprojects/NitroDWC/libraries/util/asm/include/heap_dwcutil.inc deleted file mode 100644 index f675def6d7..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/heap_dwcutil.inc +++ /dev/null @@ -1,9 +0,0 @@ -.public NNS_FndCreateExpHeapEx -.public NNS_FndDestroyExpHeap -.public NNS_FndAllocFromExpHeapEx -.public NNS_FndFreeToExpHeap -.public OS_EnableIrqMask -.public OS_DisableIrqMask -.public OS_Terminate -.public MI_CpuFill8 -.public ov18_0224501C diff --git a/subprojects/NitroDWC/libraries/util/asm/include/icon.inc b/subprojects/NitroDWC/libraries/util/asm/include/icon.inc deleted file mode 100644 index e9130ef916..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/icon.inc +++ /dev/null @@ -1,10 +0,0 @@ -.public WM_GetAllowedChannel -.public WM_GetLinkLevel -.public ov18_0222BD88 -.public ov18_02243ECC -.public ov18_02243F60 -.public ov18_02245068 -.public ov18_0224508C -.public ov18_02245B74 -.public ov18_02246304 -.public ov18_022463CC diff --git a/subprojects/NitroDWC/libraries/util/asm/include/input.inc b/subprojects/NitroDWC/libraries/util/asm/include/input.inc deleted file mode 100644 index 1632d09d6c..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/input.inc +++ /dev/null @@ -1,18 +0,0 @@ -.public FX_ModS32 -.public OS_Terminate -.public TP_GetUserInfo -.public TP_SetCalibrateParam -.public TP_RequestAutoSamplingStartAsync -.public TP_RequestAutoSamplingStopAsync -.public TP_GetLatestIndexInAuto -.public TP_GetCalibratedPoint -.public TP_WaitBusy -.public TP_CheckError -.public PM_SetLCDPower -.public ov18_02244C2C -.public ov18_02245068 -.public ov18_0224508C -.public ov18_022451C0 -.public ov18_022451D0 -.public ov18_022452D4 -.public ov18_022455B8 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/interrupt.inc b/subprojects/NitroDWC/libraries/util/asm/include/interrupt.inc deleted file mode 100644 index ad6f36fe60..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/interrupt.inc +++ /dev/null @@ -1,8 +0,0 @@ -.public OS_SetIrqFunction -.public OS_GetIrqFunction -.public OS_SetIrqMask -.public OS_EnableIrqMask -.public OS_ResetRequestIrqMask -.public OS_EnableInterrupts -.public ov18_0224594C -.public ov18_02246254 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/keyboard.inc b/subprojects/NitroDWC/libraries/util/asm/include/keyboard.inc deleted file mode 100644 index 008007e9b7..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/keyboard.inc +++ /dev/null @@ -1,54 +0,0 @@ -.public FX_ModS32 -.public ov18_0222C220 -.public ov18_0222C2B4 -.public ov18_0222C348 -.public ov18_0222C3DC -.public ov18_0222C470 -.public ov18_0222C4FC -.public ov18_0222C514 -.public ov18_0222C6FC -.public ov18_0222C9E4 -.public ov18_0222CA14 -.public ov18_0222CA44 -.public ov18_0222CC48 -.public ov18_0222CC9C -.public ov18_0222CECC -.public ov18_0222D148 -.public ov18_0222D1CC -.public ov18_0222D294 -.public ov18_0222D370 -.public ov18_0222D7A8 -.public ov18_0222D82C -.public ov18_0222D8A0 -.public ov18_0222D914 -.public ov18_0222D988 -.public ov18_0222D9FC -.public ov18_0223E994 -.public ov18_022439E0 -.public ov18_02243B3C -.public ov18_02243BBC -.public ov18_02243BD0 -.public ov18_02243C74 -.public ov18_02243CF4 -.public ov18_02243DE4 -.public ov18_02243E44 -.public ov18_02243ECC -.public ov18_02243F60 -.public ov18_02243F8C -.public ov18_02244574 -.public ov18_02244650 -.public ov18_02244A9C -.public ov18_02244B70 -.public ov18_02244C50 -.public ov18_02245068 -.public ov18_0224508C -.public ov18_02245470 -.public ov18_022454B0 -.public ov18_022454F0 -.public ov18_02245530 -.public ov18_022455B8 -.public ov18_022456C8 -.public ov18_02245B74 -.public ov18_02246304 -.public ov18_022463A4 -.public ov18_022463AC diff --git a/subprojects/NitroDWC/libraries/util/asm/include/keyboard10.inc b/subprojects/NitroDWC/libraries/util/asm/include/keyboard10.inc deleted file mode 100644 index a13a76e49a..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/keyboard10.inc +++ /dev/null @@ -1,50 +0,0 @@ -.public ov18_0222DEB8 -.public ov18_0222DF3C -.public ov18_0222DFC0 -.public ov18_0222E044 -.public ov18_0222E0C8 -.public ov18_0222E13C -.public ov18_0222E154 -.public ov18_0222E330 -.public ov18_0222E500 -.public ov18_0222E6F0 -.public ov18_0222E73C -.public ov18_0222E8D8 -.public ov18_0222EB38 -.public ov18_0222EC00 -.public ov18_0222EC8C -.public ov18_0222ED38 -.public ov18_0222EDB0 -.public ov18_0222EE20 -.public ov18_0222EE90 -.public ov18_0222EF00 -.public ov18_0222EF70 -.public ov18_0223E994 -.public ov18_022439E0 -.public ov18_02243B3C -.public ov18_02243BBC -.public ov18_02243BD0 -.public ov18_02243C74 -.public ov18_02243CF4 -.public ov18_02243DE4 -.public ov18_02243E44 -.public ov18_02243ECC -.public ov18_02243F60 -.public ov18_02243F8C -.public ov18_02244574 -.public ov18_02244650 -.public ov18_02244A9C -.public ov18_02244B70 -.public ov18_02244C50 -.public ov18_02245068 -.public ov18_0224508C -.public ov18_02245470 -.public ov18_022454B0 -.public ov18_022454F0 -.public ov18_02245530 -.public ov18_022455B8 -.public ov18_022456C8 -.public ov18_02245B74 -.public ov18_02246304 -.public ov18_022463A4 -.public ov18_022463AC diff --git a/subprojects/NitroDWC/libraries/util/asm/include/libaoss.inc b/subprojects/NitroDWC/libraries/util/asm/include/libaoss.inc deleted file mode 100644 index 978702a253..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/libaoss.inc +++ /dev/null @@ -1,13 +0,0 @@ -.public OS_GetMacAddress -.public OS_Terminate -.public MIi_CpuClear16 -.public MI_CpuCopy8 -.public ov18_022246E4 -.public ov18_022269F8 -.public ov18_02226ABC -.public ov18_0222F1F0 -.public ov18_0222F200 -.public ov18_0223E4C0 -.public ov18_02245068 -.public ov18_0224508C -.public ov18_022450D0 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/list_dwcutil.inc b/subprojects/NitroDWC/libraries/util/asm/include/list_dwcutil.inc deleted file mode 100644 index 4eaf927068..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/list_dwcutil.inc +++ /dev/null @@ -1,5 +0,0 @@ -.public OS_EnableIrqMask -.public OS_DisableIrqMask -.public ov18_02245068 -.public ov18_0224508C -.public ov18_022459F4 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/main_dwcutil.inc b/subprojects/NitroDWC/libraries/util/asm/include/main_dwcutil.inc deleted file mode 100644 index 26a2fea348..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/main_dwcutil.inc +++ /dev/null @@ -1,56 +0,0 @@ -.public DWC_BM_Init -.public FX_Init -.public GX_VBlankIntr -.public GX_DispOff -.public GX_DispOn -.public GX_SetGraphicsMode -.public GXS_SetGraphicsMode -.public GXx_SetMasterBrightness_ -.public GX_SetBankForBG -.public GX_SetBankForOBJ -.public GX_SetBankForSubBG -.public GX_SetBankForSubOBJ -.public G2x_SetBlendBrightness_ -.public OS_IsTickAvailable -.public OS_IsAlarmAvailable -.public OS_WaitVBlankIntr -.public OS_Terminate -.public FS_Init -.public TP_Init -.public RTC_Init -.public ov18_0222F298 -.public ov18_0222F334 -.public ov18_0222F3FC -.public ov18_0222F674 -.public ov18_0222F6C4 -.public ov18_0222FF98 -.public ov18_0223E8D8 -.public ov18_0223E968 -.public ov18_02243440 -.public ov18_022435F0 -.public ov18_022438B8 -.public ov18_0224398C -.public ov18_02244114 -.public ov18_0224415C -.public ov18_02244424 -.public ov18_02244528 -.public ov18_02244FB8 -.public ov18_02244FF8 -.public ov18_02245068 -.public ov18_0224508C -.public ov18_0224510C -.public ov18_02245188 -.public ov18_022451C0 -.public ov18_02245820 -.public ov18_0224589C -.public ov18_02245910 -.public ov18_02245A44 -.public ov18_02245B28 -.public ov18_02245BD8 -.public ov18_02245E7C -.public ov18_02245F30 -.public ov18_022460BC -.public ov18_022460E8 -.public ov18_022460F8 -.public ov18_0224620C -.public ov18_02246254 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/message.inc b/subprojects/NitroDWC/libraries/util/asm/include/message.inc deleted file mode 100644 index 8dfd906ae8..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/message.inc +++ /dev/null @@ -1,7 +0,0 @@ -.public ov18_02243738 -.public ov18_0224382C -.public ov18_02244008 -.public ov18_02244064 -.public ov18_022440BC -.public ov18_02245068 -.public ov18_0224508C diff --git a/subprojects/NitroDWC/libraries/util/asm/include/move.inc b/subprojects/NitroDWC/libraries/util/asm/include/move.inc deleted file mode 100644 index 9a1f8e8996..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/move.inc +++ /dev/null @@ -1,17 +0,0 @@ -.public OS_Terminate -.public MIi_CpuCopy16 -.public ov18_0222F7A4 -.public ov18_0222F8B8 -.public ov18_0222FA08 -.public ov18_0222FA9C -.public ov18_022425E8 -.public ov18_022426D8 -.public ov18_02242834 -.public ov18_0224287C -.public ov18_022428B0 -.public ov18_02242C34 -.public ov18_02242C78 -.public ov18_02245068 -.public ov18_0224508C -.public ov18_02246304 -.public ov18_022463AC diff --git a/subprojects/NitroDWC/libraries/util/asm/include/obj.inc b/subprojects/NitroDWC/libraries/util/asm/include/obj.inc deleted file mode 100644 index 310dd20d92..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/obj.inc +++ /dev/null @@ -1,12 +0,0 @@ -.public GX_LoadOAM -.public GXS_LoadOAM -.public DC_FlushRange -.public MIi_CpuClearFast -.public ov18_02244008 -.public ov18_02244064 -.public ov18_022440BC -.public ov18_02245068 -.public ov18_0224508C -.public ov18_02245AE0 -.public ov18_02246304 -.public ov18_022463CC diff --git a/subprojects/NitroDWC/libraries/util/asm/include/objvram.inc b/subprojects/NitroDWC/libraries/util/asm/include/objvram.inc deleted file mode 100644 index 2cd76db57c..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/objvram.inc +++ /dev/null @@ -1,12 +0,0 @@ -.public OS_EnableIrqMask -.public OS_DisableIrqMask -.public OS_Terminate -.public ov18_02244008 -.public ov18_02244064 -.public ov18_022440BC -.public ov18_02245068 -.public ov18_02245974 -.public ov18_022459BC -.public ov18_022459F4 -.public ov18_02245A24 -.public ov18_02245A34 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/rakuraku.inc b/subprojects/NitroDWC/libraries/util/asm/include/rakuraku.inc deleted file mode 100644 index 882c34960b..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/rakuraku.inc +++ /dev/null @@ -1,12 +0,0 @@ -.public OS_Sleep -.public OS_Terminate -.public ov18_0222AB50 -.public ov18_0222AC38 -.public ov18_0222AD04 -.public ov18_0222FEB4 -.public ov18_0222FECC -.public ov18_0222FEDC -.public ov18_0223E3AC -.public ov18_02245068 -.public ov18_0224508C -.public ov18_022450D0 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/sceneend.inc b/subprojects/NitroDWC/libraries/util/asm/include/sceneend.inc deleted file mode 100644 index a8c0b9296f..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/sceneend.inc +++ /dev/null @@ -1,12 +0,0 @@ -.public ov18_0222B930 -.public ov18_0222BBAC -.public ov18_0222F6C4 -.public ov18_0222F790 -.public ov18_0222F820 -.public ov18_0222F88C -.public ov18_0222FF24 -.public ov18_0223DDB8 -.public ov18_02243EA4 -.public ov18_02244170 -.public ov18_02244194 -.public ov18_0224641C diff --git a/subprojects/NitroDWC/libraries/util/asm/include/sceneinit.inc b/subprojects/NitroDWC/libraries/util/asm/include/sceneinit.inc deleted file mode 100644 index 997ddd1216..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/sceneinit.inc +++ /dev/null @@ -1,23 +0,0 @@ -.public GX_LoadBGPltt -.public GXS_LoadBG1Scr -.public ov18_0222B580 -.public ov18_0222B6A0 -.public ov18_0222B700 -.public ov18_0222B910 -.public ov18_0222BB34 -.public ov18_0222F6C4 -.public ov18_0222F6D4 -.public ov18_0222F74C -.public ov18_0222F75C -.public ov18_0222F774 -.public ov18_0222F7E4 -.public ov18_0222F834 -.public ov18_02230178 -.public ov18_022301B4 -.public ov18_02230228 -.public ov18_0223A6B4 -.public ov18_0223DD74 -.public ov18_02243E74 -.public ov18_02244170 -.public ov18_02244194 -.public ov18_02244C84 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/scenemenu.inc b/subprojects/NitroDWC/libraries/util/asm/include/scenemenu.inc deleted file mode 100644 index 356e4b5e3b..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/scenemenu.inc +++ /dev/null @@ -1,45 +0,0 @@ -.public GX_LoadBGPltt -.public GX_LoadBG2Scr -.public ov18_0222B034 -.public ov18_0222B048 -.public ov18_0222B0A8 -.public ov18_0222B0C0 -.public ov18_0222B594 -.public ov18_0222B668 -.public ov18_0222B6A0 -.public ov18_0222B700 -.public ov18_0222B790 -.public ov18_0222BA04 -.public ov18_0222BAF4 -.public ov18_0222BBC0 -.public ov18_0222F6C4 -.public ov18_0222F6D4 -.public ov18_0222FEE8 -.public ov18_022302A4 -.public ov18_02230390 -.public ov18_022303E4 -.public ov18_02230420 -.public ov18_02230448 -.public ov18_0223045C -.public ov18_02230588 -.public ov18_0223058C -.public ov18_022305DC -.public ov18_022305FC -.public ov18_02230648 -.public ov18_022306F0 -.public ov18_02230760 -.public ov18_02231230 -.public ov18_0223A6B4 -.public ov18_0223D154 -.public ov18_0223E994 -.public ov18_0223F4D0 -.public ov18_02243738 -.public ov18_0224382C -.public ov18_02244170 -.public ov18_02244194 -.public ov18_02244394 -.public ov18_02244C84 -.public ov18_02244CD8 -.public ov18_02245470 -.public ov18_022454B0 -.public ov18_022455B8 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/sceneopterase.inc b/subprojects/NitroDWC/libraries/util/asm/include/sceneopterase.inc deleted file mode 100644 index 0ead5c832d..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/sceneopterase.inc +++ /dev/null @@ -1,42 +0,0 @@ -.public GX_LoadBG2Scr -.public ov18_0222B004 -.public ov18_0222B034 -.public ov18_0222B048 -.public ov18_0222B07C -.public ov18_0222B0A8 -.public ov18_0222B0C0 -.public ov18_0222B594 -.public ov18_0222B668 -.public ov18_0222B700 -.public ov18_0222B790 -.public ov18_0222B7C8 -.public ov18_0222BBC0 -.public ov18_0222F6C4 -.public ov18_0222F6D4 -.public ov18_022307E8 -.public ov18_02230868 -.public ov18_022308BC -.public ov18_022308F8 -.public ov18_02230920 -.public ov18_02230934 -.public ov18_0223096C -.public ov18_02230970 -.public ov18_022309D8 -.public ov18_022309F8 -.public ov18_02230A5C -.public ov18_02230B14 -.public ov18_02230B64 -.public ov18_02230B84 -.public ov18_02231230 -.public ov18_0223E994 -.public ov18_0223FC48 -.public ov18_0223FF74 -.public ov18_0223FFB8 -.public ov18_0223FFCC -.public ov18_02244170 -.public ov18_02244194 -.public ov18_02244394 -.public ov18_022448E0 -.public ov18_02244C84 -.public ov18_02244CD8 -.public ov18_02245470 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/sceneopterase1.inc b/subprojects/NitroDWC/libraries/util/asm/include/sceneopterase1.inc deleted file mode 100644 index c577e8657f..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/sceneopterase1.inc +++ /dev/null @@ -1,29 +0,0 @@ -.public GX_LoadBG2Scr -.public OS_SpinWait -.public PM_ForceToPowerOff -.public ov18_0222B034 -.public ov18_0222B048 -.public ov18_0222B0A8 -.public ov18_0222B0C0 -.public ov18_0222B700 -.public ov18_0222B790 -.public ov18_0222B7C8 -.public ov18_0222F6C4 -.public ov18_02230BA8 -.public ov18_02230C28 -.public ov18_02230C5C -.public ov18_02230C88 -.public ov18_02230CB0 -.public ov18_02230CC4 -.public ov18_02230CE4 -.public ov18_02230CE8 -.public ov18_02230D10 -.public ov18_02230D30 -.public ov18_02230D7C -.public ov18_0223E61C -.public ov18_0223E994 -.public ov18_02244170 -.public ov18_02244194 -.public ov18_02244394 -.public ov18_02244C84 -.public ov18_02245470 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/sceneoptinfo.inc b/subprojects/NitroDWC/libraries/util/asm/include/sceneoptinfo.inc deleted file mode 100644 index 8a98ff5a4b..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/sceneoptinfo.inc +++ /dev/null @@ -1,43 +0,0 @@ -.public sub_020A283C -.public GX_LoadBG2Scr -.public OS_GetMacAddress -.public swprintf -.public _ull_div -.public _ull_mod -.public ov18_0222B004 -.public ov18_0222B034 -.public ov18_0222B048 -.public ov18_0222B07C -.public ov18_0222B0A8 -.public ov18_0222B0C0 -.public ov18_0222B594 -.public ov18_0222B668 -.public ov18_0222B700 -.public ov18_0222B790 -.public ov18_0222BBC0 -.public ov18_0222F6C4 -.public ov18_0222F6D4 -.public ov18_02230DE4 -.public ov18_02230E64 -.public ov18_02231038 -.public ov18_0223108C -.public ov18_022310C8 -.public ov18_022310F0 -.public ov18_02231104 -.public ov18_02231124 -.public ov18_02231128 -.public ov18_02231150 -.public ov18_02231170 -.public ov18_022311C0 -.public ov18_02231230 -.public ov18_0223E994 -.public ov18_02244170 -.public ov18_02244194 -.public ov18_02244394 -.public ov18_0224467C -.public ov18_022448E0 -.public ov18_02244A9C -.public ov18_02244C08 -.public ov18_02244C84 -.public ov18_02244CD8 -.public ov18_02245470 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/sceneoptmenu.inc b/subprojects/NitroDWC/libraries/util/asm/include/sceneoptmenu.inc deleted file mode 100644 index 79ef2f1b00..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/sceneoptmenu.inc +++ /dev/null @@ -1,55 +0,0 @@ -.public sub_020A283C -.public FX_ModS32 -.public GX_LoadBGPltt -.public GX_LoadBG2Scr -.public DC_FlushRange -.public MI_CpuCopy8 -.public ov18_0222B004 -.public ov18_0222B034 -.public ov18_0222B048 -.public ov18_0222B068 -.public ov18_0222B07C -.public ov18_0222B0A8 -.public ov18_0222B0C0 -.public ov18_0222B594 -.public ov18_0222B668 -.public ov18_0222B6A0 -.public ov18_0222B700 -.public ov18_0222B790 -.public ov18_0222BA04 -.public ov18_0222BAF4 -.public ov18_0222BBC0 -.public ov18_0222F6C4 -.public ov18_0222F6D4 -.public ov18_02230228 -.public ov18_022307A0 -.public ov18_02230DB0 -.public ov18_022312F8 -.public ov18_02231494 -.public ov18_022314E8 -.public ov18_02231524 -.public ov18_0223154C -.public ov18_02231560 -.public ov18_02231654 -.public ov18_02231658 -.public ov18_022316FC -.public ov18_0223171C -.public ov18_02231780 -.public ov18_0223188C -.public ov18_0223191C -.public ov18_02231FFC -.public ov18_0223D154 -.public ov18_0223E994 -.public ov18_0223F4D0 -.public ov18_02243738 -.public ov18_0224382C -.public ov18_02243F60 -.public ov18_02244170 -.public ov18_02244194 -.public ov18_02244394 -.public ov18_02244C84 -.public ov18_02244CD8 -.public ov18_02245470 -.public ov18_022454B0 -.public ov18_022455B8 -.public ov18_02245B74 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/sceneoptmovcomm.inc b/subprojects/NitroDWC/libraries/util/asm/include/sceneoptmovcomm.inc deleted file mode 100644 index 469df1a7b0..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/sceneoptmovcomm.inc +++ /dev/null @@ -1,32 +0,0 @@ -.public GX_LoadBG2Scr -.public ov18_0222AD34 -.public ov18_0222AE04 -.public ov18_0222B700 -.public ov18_0222B7C8 -.public ov18_0222BC8C -.public ov18_0222BD44 -.public ov18_0222F6C4 -.public ov18_0222F6D4 -.public ov18_0222F9E8 -.public ov18_0222FA44 -.public ov18_0222FA60 -.public ov18_02231980 -.public ov18_02231A00 -.public ov18_02231A34 -.public ov18_02231A64 -.public ov18_02231A74 -.public ov18_02231A78 -.public ov18_02231A7C -.public ov18_02231AA4 -.public ov18_02231B38 -.public ov18_02231BC0 -.public ov18_02232348 -.public ov18_02232530 -.public ov18_0223E61C -.public ov18_0223E994 -.public ov18_0223E9FC -.public ov18_02244170 -.public ov18_02244194 -.public ov18_022448E0 -.public ov18_02244C84 -.public ov18_02244CD8 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/sceneoptmovcomplete.inc b/subprojects/NitroDWC/libraries/util/asm/include/sceneoptmovcomplete.inc deleted file mode 100644 index 1f988c624e..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/sceneoptmovcomplete.inc +++ /dev/null @@ -1,26 +0,0 @@ -.public OS_SpinWait -.public PM_ForceToPowerOff -.public ov18_0222B034 -.public ov18_0222B048 -.public ov18_0222B0A8 -.public ov18_0222B0C0 -.public ov18_0222B790 -.public ov18_0222B7C8 -.public ov18_0222F6C4 -.public ov18_02231BE0 -.public ov18_02231C48 -.public ov18_02231C7C -.public ov18_02231CA8 -.public ov18_02231CD0 -.public ov18_02231CE4 -.public ov18_02231D04 -.public ov18_02231D08 -.public ov18_02231D30 -.public ov18_02231D50 -.public ov18_02231D9C -.public ov18_0223E994 -.public ov18_02244170 -.public ov18_02244194 -.public ov18_02244394 -.public ov18_02244C84 -.public ov18_02245470 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/sceneoptmovconfirm.inc b/subprojects/NitroDWC/libraries/util/asm/include/sceneoptmovconfirm.inc deleted file mode 100644 index a1682d0ad0..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/sceneoptmovconfirm.inc +++ /dev/null @@ -1,48 +0,0 @@ -.public GX_LoadBG2Scr -.public ov18_0222B004 -.public ov18_0222B034 -.public ov18_0222B048 -.public ov18_0222B07C -.public ov18_0222B0A8 -.public ov18_0222B0C0 -.public ov18_0222B594 -.public ov18_0222B668 -.public ov18_0222B700 -.public ov18_0222B790 -.public ov18_0222B7C8 -.public ov18_0222BBC0 -.public ov18_0222F6C4 -.public ov18_0222F6D4 -.public ov18_02231230 -.public ov18_02231DD0 -.public ov18_02231DF0 -.public ov18_02231E58 -.public ov18_02231E8C -.public ov18_02231EC8 -.public ov18_02231EF0 -.public ov18_02231F04 -.public ov18_02231F24 -.public ov18_02231F28 -.public ov18_02231F50 -.public ov18_02231F70 -.public ov18_02231FAC -.public ov18_02232044 -.public ov18_022320C4 -.public ov18_02232118 -.public ov18_02232144 -.public ov18_0223216C -.public ov18_02232180 -.public ov18_022321B8 -.public ov18_022321BC -.public ov18_0223220C -.public ov18_0223222C -.public ov18_02232290 -.public ov18_02232C90 -.public ov18_0223E994 -.public ov18_02244170 -.public ov18_02244194 -.public ov18_02244394 -.public ov18_022448E0 -.public ov18_02244C84 -.public ov18_02244CD8 -.public ov18_02245470 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/sceneoptmovdisconnect.inc b/subprojects/NitroDWC/libraries/util/asm/include/sceneoptmovdisconnect.inc deleted file mode 100644 index ef965cc35b..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/sceneoptmovdisconnect.inc +++ /dev/null @@ -1,21 +0,0 @@ -.public GX_LoadBG2Scr -.public ov18_0222B668 -.public ov18_0222B700 -.public ov18_0222B7C8 -.public ov18_0222F6C4 -.public ov18_0222F6D4 -.public ov18_0222FA44 -.public ov18_02231230 -.public ov18_02232378 -.public ov18_022323E4 -.public ov18_02232418 -.public ov18_02232448 -.public ov18_02232458 -.public ov18_0223245C -.public ov18_02232498 -.public ov18_022324FC -.public ov18_02244170 -.public ov18_02244194 -.public ov18_022448E0 -.public ov18_02244C84 -.public ov18_02244CD8 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/sceneoptmovfailure.inc b/subprojects/NitroDWC/libraries/util/asm/include/sceneoptmovfailure.inc deleted file mode 100644 index 91e980f91e..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/sceneoptmovfailure.inc +++ /dev/null @@ -1,36 +0,0 @@ -.public GX_LoadBG2Scr -.public ov18_0222B004 -.public ov18_0222B034 -.public ov18_0222B048 -.public ov18_0222B07C -.public ov18_0222B0A8 -.public ov18_0222B0C0 -.public ov18_0222B594 -.public ov18_0222B668 -.public ov18_0222B700 -.public ov18_0222B790 -.public ov18_0222B7C8 -.public ov18_0222F6C4 -.public ov18_0222F6D4 -.public ov18_0222FA44 -.public ov18_02231230 -.public ov18_0223256C -.public ov18_022325EC -.public ov18_02232654 -.public ov18_02232690 -.public ov18_022326C4 -.public ov18_022326D8 -.public ov18_02232710 -.public ov18_02232714 -.public ov18_0223276C -.public ov18_0223278C -.public ov18_022327F0 -.public ov18_02232C90 -.public ov18_0223E994 -.public ov18_02244170 -.public ov18_02244194 -.public ov18_02244394 -.public ov18_022448E0 -.public ov18_02244C84 -.public ov18_02244CD8 -.public ov18_02245470 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/sceneoptmovuser.inc b/subprojects/NitroDWC/libraries/util/asm/include/sceneoptmovuser.inc deleted file mode 100644 index 2051333d1f..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/sceneoptmovuser.inc +++ /dev/null @@ -1,39 +0,0 @@ -.public GX_LoadBG2Scr -.public MIi_CpuClear16 -.public MIi_CpuCopy16 -.public ov18_0222B668 -.public ov18_0222B700 -.public ov18_0222F6C4 -.public ov18_0222F6D4 -.public ov18_0222F9E8 -.public ov18_0222FA44 -.public ov18_0222FA60 -.public ov18_0222FA78 -.public ov18_0222FA84 -.public ov18_02231230 -.public ov18_02231948 -.public ov18_02232530 -.public ov18_02232968 -.public ov18_022329E8 -.public ov18_02232A1C -.public ov18_02232A40 -.public ov18_02232A64 -.public ov18_02232AD4 -.public ov18_02232AD8 -.public ov18_02232ADC -.public ov18_02232B38 -.public ov18_02232B94 -.public ov18_02232C5C -.public ov18_0223E994 -.public ov18_0223FC48 -.public ov18_0223FF74 -.public ov18_0223FFB8 -.public ov18_0223FFCC -.public ov18_02244170 -.public ov18_02244194 -.public ov18_0224467C -.public ov18_022448E0 -.public ov18_02244A9C -.public ov18_02244C08 -.public ov18_02244C84 -.public ov18_02244CD8 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/sceneoptmovwait.inc b/subprojects/NitroDWC/libraries/util/asm/include/sceneoptmovwait.inc deleted file mode 100644 index bb1d4c7a1a..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/sceneoptmovwait.inc +++ /dev/null @@ -1,43 +0,0 @@ -.public GX_LoadBG2Scr -.public ov18_0222AD34 -.public ov18_0222AE04 -.public ov18_0222B004 -.public ov18_0222B034 -.public ov18_0222B048 -.public ov18_0222B07C -.public ov18_0222B0C0 -.public ov18_0222B668 -.public ov18_0222B700 -.public ov18_0222B790 -.public ov18_0222B7C8 -.public ov18_0222F6C4 -.public ov18_0222F6D4 -.public ov18_0222F8FC -.public ov18_0222F9E8 -.public ov18_0222FA44 -.public ov18_0222FA60 -.public ov18_02231230 -.public ov18_02232530 -.public ov18_02232898 -.public ov18_02232C70 -.public ov18_02232CDC -.public ov18_02232D5C -.public ov18_02232D90 -.public ov18_02232DBC -.public ov18_02232DE0 -.public ov18_02232DF4 -.public ov18_02232E2C -.public ov18_02232E30 -.public ov18_02232E5C -.public ov18_02232E94 -.public ov18_02232F14 -.public ov18_0223300C -.public ov18_0223E994 -.public ov18_0223E9FC -.public ov18_02244170 -.public ov18_02244194 -.public ov18_02244394 -.public ov18_022448E0 -.public ov18_02244C84 -.public ov18_02244CD8 -.public ov18_02245470 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/scenesetaossbutton.inc b/subprojects/NitroDWC/libraries/util/asm/include/scenesetaossbutton.inc deleted file mode 100644 index 98a7563f99..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/scenesetaossbutton.inc +++ /dev/null @@ -1,58 +0,0 @@ -.public GX_LoadBGPltt -.public GX_LoadBG2Scr -.public ov18_0222AD34 -.public ov18_0222AE04 -.public ov18_0222B004 -.public ov18_0222B034 -.public ov18_0222B048 -.public ov18_0222B07C -.public ov18_0222B0C0 -.public ov18_0222B594 -.public ov18_0222B668 -.public ov18_0222B700 -.public ov18_0222B740 -.public ov18_0222B790 -.public ov18_0222B7C8 -.public ov18_0222BC1C -.public ov18_0222F030 -.public ov18_0222F140 -.public ov18_0222F190 -.public ov18_0222F6C4 -.public ov18_0222F6D4 -.public ov18_02233068 -.public ov18_022330E8 -.public ov18_02233190 -.public ov18_022331E4 -.public ov18_02233220 -.public ov18_02233268 -.public ov18_0223333C -.public ov18_02233374 -.public ov18_02233378 -.public ov18_022333C4 -.public ov18_02233400 -.public ov18_02233464 -.public ov18_02233540 -.public ov18_0223355C -.public ov18_02233588 -.public ov18_022335A8 -.public ov18_022335F4 -.public ov18_02233624 -.public ov18_0223B3F4 -.public ov18_0223E994 -.public ov18_0223E9FC -.public ov18_0223FC48 -.public ov18_0223FF74 -.public ov18_0223FFB8 -.public ov18_0223FFCC -.public ov18_02244170 -.public ov18_02244194 -.public ov18_02244394 -.public ov18_022448E0 -.public ov18_02244C84 -.public ov18_02244CD8 -.public ov18_022451C0 -.public ov18_02245470 -.public ov18_02246254 -.public ov18_02246304 -.public ov18_022463AC -.public ov18_022463CC diff --git a/subprojects/NitroDWC/libraries/util/asm/include/scenesetaosscomplete.inc b/subprojects/NitroDWC/libraries/util/asm/include/scenesetaosscomplete.inc deleted file mode 100644 index 4a50374255..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/scenesetaosscomplete.inc +++ /dev/null @@ -1,23 +0,0 @@ -.public GX_LoadBG2Scr -.public ov18_0222B668 -.public ov18_0222B700 -.public ov18_0222B7C8 -.public ov18_0222BC1C -.public ov18_0222F6C4 -.public ov18_0222F6D4 -.public ov18_0222F710 -.public ov18_02233660 -.public ov18_022336CC -.public ov18_02233700 -.public ov18_02233724 -.public ov18_02233734 -.public ov18_02233738 -.public ov18_02233774 -.public ov18_022337E4 -.public ov18_0223C21C -.public ov18_0223E994 -.public ov18_02244170 -.public ov18_02244194 -.public ov18_022448E0 -.public ov18_02244C84 -.public ov18_02244CD8 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/scenesetaplist.inc b/subprojects/NitroDWC/libraries/util/asm/include/scenesetaplist.inc deleted file mode 100644 index 2c81599595..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/scenesetaplist.inc +++ /dev/null @@ -1,100 +0,0 @@ -.public FX_DivS32 -.public FX_ModS32 -.public MI_CpuFill8 -.public ov18_0222B004 -.public ov18_0222B034 -.public ov18_0222B048 -.public ov18_0222B07C -.public ov18_0222B0A8 -.public ov18_0222B0C0 -.public ov18_0222B594 -.public ov18_0222B668 -.public ov18_0222B6A0 -.public ov18_0222B700 -.public ov18_0222B740 -.public ov18_0222B790 -.public ov18_0222B948 -.public ov18_0222BAF4 -.public ov18_0222BC1C -.public ov18_0222F6C4 -.public ov18_0222F6D4 -.public ov18_0222F710 -.public ov18_0222F724 -.public ov18_022338F0 -.public ov18_02233A44 -.public ov18_02233AEC -.public ov18_02233C60 -.public ov18_02233CB4 -.public ov18_02233CF0 -.public ov18_02233D18 -.public ov18_02233D2C -.public ov18_02233F80 -.public ov18_022341F0 -.public ov18_022342FC -.public ov18_0223431C -.public ov18_0223438C -.public ov18_02234588 -.public ov18_02234630 -.public ov18_022347A8 -.public ov18_02234834 -.public ov18_022348F0 -.public ov18_022349AC -.public ov18_02234A44 -.public ov18_02234AA0 -.public ov18_02234AEC -.public ov18_02234C38 -.public ov18_02234CAC -.public ov18_02234D30 -.public ov18_02234D60 -.public ov18_02234D8C -.public ov18_02234DB4 -.public ov18_0223A1D0 -.public ov18_0223B3F4 -.public ov18_0223C21C -.public ov18_0223D004 -.public ov18_0223D064 -.public ov18_0223D090 -.public ov18_0223D154 -.public ov18_0223D218 -.public ov18_0223D2F0 -.public ov18_0223D32C -.public ov18_0223D340 -.public ov18_0223D354 -.public ov18_0223D360 -.public ov18_0223D378 -.public ov18_0223D910 -.public ov18_0223DAE0 -.public ov18_0223DDCC -.public ov18_0223DE08 -.public ov18_0223E1F0 -.public ov18_0223E994 -.public ov18_0223FC48 -.public ov18_0223FF74 -.public ov18_0223FFB8 -.public ov18_0223FFCC -.public ov18_02243738 -.public ov18_0224382C -.public ov18_02243ECC -.public ov18_02243F60 -.public ov18_02244170 -.public ov18_02244194 -.public ov18_02244394 -.public ov18_0224467C -.public ov18_0224487C -.public ov18_022449F0 -.public ov18_02244B5C -.public ov18_02244C08 -.public ov18_02244C84 -.public ov18_02244CD8 -.public ov18_02245068 -.public ov18_0224508C -.public ov18_02245470 -.public ov18_022454B0 -.public ov18_022454F0 -.public ov18_022455B8 -.public ov18_022456C8 -.public ov18_02245B74 -.public ov18_02245E50 -.public ov18_02246304 -.public ov18_022463AC -.public ov18_022463CC diff --git a/subprojects/NitroDWC/libraries/util/asm/include/scenesetedit32.inc b/subprojects/NitroDWC/libraries/util/asm/include/scenesetedit32.inc deleted file mode 100644 index 34ed651eec..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/scenesetedit32.inc +++ /dev/null @@ -1,61 +0,0 @@ -.public GX_LoadBGPltt -.public GX_LoadBG2Scr -.public ov18_0222B594 -.public ov18_0222B668 -.public ov18_0222B700 -.public ov18_0222B740 -.public ov18_0222BBC0 -.public ov18_0222BE30 -.public ov18_0222C194 -.public ov18_0222C1C8 -.public ov18_0222C1DC -.public ov18_0222C1F0 -.public ov18_0222C204 -.public ov18_0222F6C4 -.public ov18_0222F6D4 -.public ov18_0222F710 -.public ov18_0222F724 -.public ov18_02233818 -.public ov18_02234EE8 -.public ov18_02234FA4 -.public ov18_02234FF8 -.public ov18_02235074 -.public ov18_02235094 -.public ov18_022350A4 -.public ov18_02235264 -.public ov18_02235268 -.public ov18_02235284 -.public ov18_022352B4 -.public ov18_0223538C -.public ov18_02235490 -.public ov18_02235584 -.public ov18_022355EC -.public ov18_02235648 -.public ov18_022356F8 -.public ov18_02235884 -.public ov18_022358B0 -.public ov18_02236BE0 -.public ov18_0223C21C -.public ov18_0223DE08 -.public ov18_0223DE38 -.public ov18_0223E068 -.public ov18_0223E994 -.public ov18_0223FC48 -.public ov18_0223FF74 -.public ov18_0223FFB8 -.public ov18_0223FFCC -.public ov18_02243F60 -.public ov18_02244170 -.public ov18_02244194 -.public ov18_02244394 -.public ov18_0224467C -.public ov18_022448E0 -.public ov18_02244A9C -.public ov18_02244B5C -.public ov18_02244C08 -.public ov18_02244C84 -.public ov18_02244CD8 -.public ov18_02245068 -.public ov18_0224508C -.public ov18_02245B74 -.public ov18_02245E50 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/sceneseteditaddress.inc b/subprojects/NitroDWC/libraries/util/asm/include/sceneseteditaddress.inc deleted file mode 100644 index 99bcd427d3..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/sceneseteditaddress.inc +++ /dev/null @@ -1,74 +0,0 @@ -.public sub_020A2CAC -.public GX_LoadBGPltt -.public GX_LoadBG2Scr -.public MI_CpuFill8 -.public MI_CpuCopy8 -.public memcmp -.public atoi -.public ov18_0222B594 -.public ov18_0222B668 -.public ov18_0222B700 -.public ov18_0222B740 -.public ov18_0222BBC0 -.public ov18_0222DADC -.public ov18_0222DE18 -.public ov18_0222DE4C -.public ov18_0222DE60 -.public ov18_0222DE74 -.public ov18_0222DE88 -.public ov18_0222DE9C -.public ov18_0222F6C4 -.public ov18_0222F6D4 -.public ov18_0222F710 -.public ov18_0222F724 -.public ov18_02235A68 -.public ov18_02235B24 -.public ov18_02235B78 -.public ov18_02235C04 -.public ov18_02235C24 -.public ov18_02235C34 -.public ov18_02235F44 -.public ov18_02235FD8 -.public ov18_02235FDC -.public ov18_02235FF8 -.public ov18_02236028 -.public ov18_022360B4 -.public ov18_02236158 -.public ov18_0223621C -.public ov18_02236270 -.public ov18_022362CC -.public ov18_02236380 -.public ov18_022363F8 -.public ov18_0223654C -.public ov18_02236578 -.public ov18_02236BE0 -.public ov18_0223DFD0 -.public ov18_0223DFEC -.public ov18_0223E008 -.public ov18_0223E028 -.public ov18_0223E048 -.public ov18_0223E08C -.public ov18_0223E0CC -.public ov18_0223E10C -.public ov18_0223E150 -.public ov18_0223E194 -.public ov18_0223E834 -.public ov18_0223E994 -.public ov18_0223FC48 -.public ov18_0223FF74 -.public ov18_0223FFB8 -.public ov18_0223FFCC -.public ov18_02243F60 -.public ov18_02244170 -.public ov18_02244194 -.public ov18_02244394 -.public ov18_0224467C -.public ov18_022448E0 -.public ov18_02244A9C -.public ov18_02244B5C -.public ov18_02244C08 -.public ov18_02244C84 -.public ov18_02244CD8 -.public ov18_02245068 -.public ov18_0224508C -.public ov18_02245B74 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/sceneseterror.inc b/subprojects/NitroDWC/libraries/util/asm/include/sceneseterror.inc deleted file mode 100644 index cc6935ee71..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/sceneseterror.inc +++ /dev/null @@ -1,45 +0,0 @@ -.public GX_LoadBG2Scr -.public swprintf -.public ov18_0222B004 -.public ov18_0222B034 -.public ov18_0222B048 -.public ov18_0222B07C -.public ov18_0222B0A8 -.public ov18_0222B0C0 -.public ov18_0222B668 -.public ov18_0222B700 -.public ov18_0222B790 -.public ov18_0222B8F8 -.public ov18_0222F6C4 -.public ov18_0222F6D4 -.public ov18_0222F710 -.public ov18_0222F724 -.public ov18_0222F74C -.public ov18_0222F8B8 -.public ov18_022365D8 -.public ov18_02236658 -.public ov18_022369B4 -.public ov18_022369E8 -.public ov18_02236A24 -.public ov18_02236A4C -.public ov18_02236A60 -.public ov18_02236A80 -.public ov18_02236A84 -.public ov18_02236AAC -.public ov18_02236ACC -.public ov18_02236B1C -.public ov18_02236BE0 -.public ov18_0223909C -.public ov18_0223A6B4 -.public ov18_0223E994 -.public ov18_02244170 -.public ov18_02244194 -.public ov18_02244394 -.public ov18_0224467C -.public ov18_022448E0 -.public ov18_022449F0 -.public ov18_02244A9C -.public ov18_02244C08 -.public ov18_02244C84 -.public ov18_02244CD8 -.public ov18_02245470 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/scenesetlist.inc b/subprojects/NitroDWC/libraries/util/asm/include/scenesetlist.inc deleted file mode 100644 index 9a2ca428b6..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/scenesetlist.inc +++ /dev/null @@ -1,114 +0,0 @@ -.public sub_020A2B94 -.public sub_020A2C30 -.public sub_020A2CAC -.public FX_DivS32 -.public FX_ModS32 -.public GX_LoadBGPltt -.public MI_CpuFill8 -.public memset -.public swprintf -.public ov18_0222B594 -.public ov18_0222B668 -.public ov18_0222B6A0 -.public ov18_0222B700 -.public ov18_0222B740 -.public ov18_0222B948 -.public ov18_0222BAF4 -.public ov18_0222BC34 -.public ov18_0222F6C4 -.public ov18_0222F6D4 -.public ov18_0222F710 -.public ov18_0222F724 -.public ov18_0222F74C -.public ov18_02234DB4 -.public ov18_022358F4 -.public ov18_02236DDC -.public ov18_02236FF0 -.public ov18_0223702C -.public ov18_02237080 -.public ov18_022370B4 -.public ov18_022370C4 -.public ov18_02237344 -.public ov18_022373C8 -.public ov18_02237548 -.public ov18_022375B4 -.public ov18_022375EC -.public ov18_02237848 -.public ov18_02237868 -.public ov18_022378B4 -.public ov18_02237BA8 -.public ov18_02237C68 -.public ov18_02237E04 -.public ov18_02237F58 -.public ov18_02237FEC -.public ov18_022380F0 -.public ov18_02238244 -.public ov18_022382CC -.public ov18_022384DC -.public ov18_02238750 -.public ov18_02238794 -.public ov18_022387B8 -.public ov18_02238880 -.public ov18_02238924 -.public ov18_022389A8 -.public ov18_02238A80 -.public ov18_02238B30 -.public ov18_02238B60 -.public ov18_02238E50 -.public ov18_02238E84 -.public ov18_02238ED8 -.public ov18_02238F9C -.public ov18_0223903C -.public ov18_0223907C -.public ov18_022390AC -.public ov18_0223A6B4 -.public ov18_0223B3F4 -.public ov18_0223BBAC -.public ov18_0223D004 -.public ov18_0223D064 -.public ov18_0223D090 -.public ov18_0223D0A8 -.public ov18_0223D154 -.public ov18_0223D1BC -.public ov18_0223D218 -.public ov18_0223D2F0 -.public ov18_0223D32C -.public ov18_0223D340 -.public ov18_0223D354 -.public ov18_0223D360 -.public ov18_0223D378 -.public ov18_0223DDCC -.public ov18_0223DDE0 -.public ov18_0223DDF4 -.public ov18_0223E1F0 -.public ov18_0223E994 -.public ov18_0223FC48 -.public ov18_0223FF74 -.public ov18_0223FFB8 -.public ov18_0223FFCC -.public ov18_02243738 -.public ov18_0224382C -.public ov18_02243ECC -.public ov18_02243F60 -.public ov18_02244170 -.public ov18_02244194 -.public ov18_02244394 -.public ov18_0224467C -.public ov18_022448E0 -.public ov18_022449F0 -.public ov18_02244B5C -.public ov18_02244C08 -.public ov18_02244C84 -.public ov18_02244CD8 -.public ov18_02245068 -.public ov18_0224508C -.public ov18_02245470 -.public ov18_022454B0 -.public ov18_022454F0 -.public ov18_022455B8 -.public ov18_02245750 -.public ov18_02245B74 -.public ov18_02245E50 -.public ov18_02246304 -.public ov18_022463AC -.public ov18_022463CC diff --git a/subprojects/NitroDWC/libraries/util/asm/include/scenesetlistsave.inc b/subprojects/NitroDWC/libraries/util/asm/include/scenesetlistsave.inc deleted file mode 100644 index 2b3c9c45c8..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/scenesetlistsave.inc +++ /dev/null @@ -1,23 +0,0 @@ -.public GX_LoadBGPltt -.public GX_LoadBG2Scr -.public ov18_0222B668 -.public ov18_0222B700 -.public ov18_0222BC1C -.public ov18_0222F6C4 -.public ov18_0222F6D4 -.public ov18_022390CC -.public ov18_02239160 -.public ov18_022391B4 -.public ov18_02239204 -.public ov18_0223922C -.public ov18_02239230 -.public ov18_02239234 -.public ov18_02239270 -.public ov18_0223A6B4 -.public ov18_0223E2D0 -.public ov18_0223FC48 -.public ov18_0223FFCC -.public ov18_02244170 -.public ov18_02244194 -.public ov18_02244C84 -.public ov18_02244CD8 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/scenesetrakubutton.inc b/subprojects/NitroDWC/libraries/util/asm/include/scenesetrakubutton.inc deleted file mode 100644 index 27315dbd0b..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/scenesetrakubutton.inc +++ /dev/null @@ -1,66 +0,0 @@ -.public GX_LoadBG2Scr -.public OS_Sleep -.public ov18_0222AD34 -.public ov18_0222AE04 -.public ov18_0222B004 -.public ov18_0222B034 -.public ov18_0222B048 -.public ov18_0222B07C -.public ov18_0222B0A8 -.public ov18_0222B0C0 -.public ov18_0222B668 -.public ov18_0222B700 -.public ov18_0222B790 -.public ov18_0222B7C8 -.public ov18_0222BC1C -.public ov18_0222F6C4 -.public ov18_0222F6D4 -.public ov18_0222FDA8 -.public ov18_0222FDCC -.public ov18_0222FE88 -.public ov18_022392CC -.public ov18_02239328 -.public ov18_022393A8 -.public ov18_022393DC -.public ov18_02239408 -.public ov18_02239430 -.public ov18_02239450 -.public ov18_02239488 -.public ov18_0223948C -.public ov18_022394B8 -.public ov18_022394D8 -.public ov18_0223954C -.public ov18_02239614 -.public ov18_02239698 -.public ov18_022396C4 -.public ov18_022396E4 -.public ov18_02239704 -.public ov18_02239740 -.public ov18_022397C0 -.public ov18_022397F4 -.public ov18_02239820 -.public ov18_02239848 -.public ov18_02239868 -.public ov18_022398A0 -.public ov18_022398A4 -.public ov18_022398D0 -.public ov18_022398F0 -.public ov18_02239954 -.public ov18_02239A10 -.public ov18_02239AE8 -.public ov18_02239B14 -.public ov18_02239B34 -.public ov18_0223B3F4 -.public ov18_0223E994 -.public ov18_0223E9FC -.public ov18_0223FC48 -.public ov18_0223FF74 -.public ov18_0223FFB8 -.public ov18_0223FFCC -.public ov18_02244170 -.public ov18_02244194 -.public ov18_02244394 -.public ov18_022448E0 -.public ov18_02244C84 -.public ov18_02244CD8 -.public ov18_02245470 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/scenesetrakucomplete.inc b/subprojects/NitroDWC/libraries/util/asm/include/scenesetrakucomplete.inc deleted file mode 100644 index 141c8618cd..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/scenesetrakucomplete.inc +++ /dev/null @@ -1,23 +0,0 @@ -.public GX_LoadBG2Scr -.public ov18_0222B668 -.public ov18_0222B700 -.public ov18_0222B7C8 -.public ov18_0222BC1C -.public ov18_0222F6C4 -.public ov18_0222F6D4 -.public ov18_0222F710 -.public ov18_02239B70 -.public ov18_02239BF0 -.public ov18_02239C24 -.public ov18_02239C48 -.public ov18_02239C58 -.public ov18_02239C5C -.public ov18_02239C98 -.public ov18_02239D08 -.public ov18_0223C21C -.public ov18_0223E994 -.public ov18_02244170 -.public ov18_02244194 -.public ov18_022448E0 -.public ov18_02244C84 -.public ov18_02244CD8 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/scenesetrakuready.inc b/subprojects/NitroDWC/libraries/util/asm/include/scenesetrakuready.inc deleted file mode 100644 index bca4db9c6c..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/scenesetrakuready.inc +++ /dev/null @@ -1,53 +0,0 @@ -.public GX_LoadBGPltt -.public GX_LoadBG2Scr -.public OS_Sleep -.public ov18_0222AD34 -.public ov18_0222AE04 -.public ov18_0222B004 -.public ov18_0222B034 -.public ov18_0222B048 -.public ov18_0222B07C -.public ov18_0222B0A8 -.public ov18_0222B0C0 -.public ov18_0222B594 -.public ov18_0222B668 -.public ov18_0222B700 -.public ov18_0222B740 -.public ov18_0222B790 -.public ov18_0222B7C8 -.public ov18_0222BC1C -.public ov18_0222F6C4 -.public ov18_0222F6D4 -.public ov18_0222FD3C -.public ov18_0222FDA8 -.public ov18_0222FDCC -.public ov18_022392EC -.public ov18_02239D3C -.public ov18_02239DB8 -.public ov18_02239E60 -.public ov18_02239EB4 -.public ov18_02239EF4 -.public ov18_02239F1C -.public ov18_02239F3C -.public ov18_02239F74 -.public ov18_02239F78 -.public ov18_02239FA4 -.public ov18_02239FC4 -.public ov18_0223A038 -.public ov18_0223A100 -.public ov18_0223A184 -.public ov18_0223A1B0 -.public ov18_0223B3F4 -.public ov18_0223E994 -.public ov18_0223E9FC -.public ov18_0223FC48 -.public ov18_0223FF74 -.public ov18_0223FFB8 -.public ov18_0223FFCC -.public ov18_02244170 -.public ov18_02244194 -.public ov18_02244394 -.public ov18_022448E0 -.public ov18_02244C84 -.public ov18_02244CD8 -.public ov18_02245470 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/scenesetsearch.inc b/subprojects/NitroDWC/libraries/util/asm/include/scenesetsearch.inc deleted file mode 100644 index 733353690c..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/scenesetsearch.inc +++ /dev/null @@ -1,56 +0,0 @@ -.public GX_LoadBGPltt -.public GX_LoadBG2Scr -.public ov18_0222AD34 -.public ov18_0222AE04 -.public ov18_0222B004 -.public ov18_0222B034 -.public ov18_0222B048 -.public ov18_0222B07C -.public ov18_0222B0A8 -.public ov18_0222B0C0 -.public ov18_0222B594 -.public ov18_0222B668 -.public ov18_0222B700 -.public ov18_0222B740 -.public ov18_0222B790 -.public ov18_0222B7C8 -.public ov18_0222BC1C -.public ov18_0222F6C4 -.public ov18_0222F6D4 -.public ov18_0222F710 -.public ov18_02233818 -.public ov18_0223A238 -.public ov18_0223A2E0 -.public ov18_0223A334 -.public ov18_0223A370 -.public ov18_0223A398 -.public ov18_0223A3B0 -.public ov18_0223A4D8 -.public ov18_0223A4FC -.public ov18_0223A500 -.public ov18_0223A52C -.public ov18_0223A54C -.public ov18_0223A59C -.public ov18_0223A668 -.public ov18_0223A694 -.public ov18_0223B3F4 -.public ov18_0223D8DC -.public ov18_0223D910 -.public ov18_0223D944 -.public ov18_0223DA44 -.public ov18_0223DAE0 -.public ov18_0223DDCC -.public ov18_0223E1F0 -.public ov18_0223E994 -.public ov18_0223E9FC -.public ov18_0223FC48 -.public ov18_0223FF74 -.public ov18_0223FFB8 -.public ov18_0223FFCC -.public ov18_02244170 -.public ov18_02244194 -.public ov18_02244394 -.public ov18_022448E0 -.public ov18_02244C84 -.public ov18_02244CD8 -.public ov18_02245470 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/scenesetselectap.inc b/subprojects/NitroDWC/libraries/util/asm/include/scenesetselectap.inc deleted file mode 100644 index c6c043e2c7..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/scenesetselectap.inc +++ /dev/null @@ -1,80 +0,0 @@ -.public GX_LoadBGPltt -.public GX_LoadBG2Scr -.public ov18_0222B004 -.public ov18_0222B034 -.public ov18_0222B048 -.public ov18_0222B068 -.public ov18_0222B07C -.public ov18_0222B0A8 -.public ov18_0222B0C0 -.public ov18_0222B594 -.public ov18_0222B668 -.public ov18_0222B6A0 -.public ov18_0222B700 -.public ov18_0222B740 -.public ov18_0222B790 -.public ov18_0222B948 -.public ov18_0222BA04 -.public ov18_0222BAF4 -.public ov18_0222BBC0 -.public ov18_0222F6C4 -.public ov18_0222F6D4 -.public ov18_0222F710 -.public ov18_0222F74C -.public ov18_0222F75C -.public ov18_0222FEE8 -.public ov18_02230228 -.public ov18_02236BE0 -.public ov18_0223909C -.public ov18_0223A714 -.public ov18_0223A824 -.public ov18_0223A92C -.public ov18_0223A980 -.public ov18_0223A9BC -.public ov18_0223A9F0 -.public ov18_0223AA04 -.public ov18_0223AAF8 -.public ov18_0223AAFC -.public ov18_0223AC30 -.public ov18_0223AC6C -.public ov18_0223ACF0 -.public ov18_0223AE94 -.public ov18_0223AF10 -.public ov18_0223B104 -.public ov18_0223B194 -.public ov18_0223B300 -.public ov18_0223B324 -.public ov18_0223B3F4 -.public ov18_0223C67C -.public ov18_0223D154 -.public ov18_0223DDCC -.public ov18_0223E1D8 -.public ov18_0223E1F0 -.public ov18_0223E5E0 -.public ov18_0223E994 -.public ov18_0223EF7C -.public ov18_0223F084 -.public ov18_0223F4A4 -.public ov18_0223FC48 -.public ov18_0223FF74 -.public ov18_0223FFB8 -.public ov18_0223FFCC -.public ov18_02243738 -.public ov18_0224382C -.public ov18_02243B3C -.public ov18_02243BBC -.public ov18_02243C74 -.public ov18_02243CF4 -.public ov18_02243DE4 -.public ov18_02243ECC -.public ov18_02243F8C -.public ov18_02244170 -.public ov18_02244194 -.public ov18_02244394 -.public ov18_02244C84 -.public ov18_02244CD8 -.public ov18_02245068 -.public ov18_0224508C -.public ov18_02245470 -.public ov18_022454B0 -.public ov18_022455B8 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/scenesetselectway.inc b/subprojects/NitroDWC/libraries/util/asm/include/scenesetselectway.inc deleted file mode 100644 index a5cff87c48..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/scenesetselectway.inc +++ /dev/null @@ -1,54 +0,0 @@ -.public GX_LoadBGPltt -.public GX_LoadBG2Scr -.public ov18_0222B004 -.public ov18_0222B034 -.public ov18_0222B048 -.public ov18_0222B07C -.public ov18_0222B0A8 -.public ov18_0222B0C0 -.public ov18_0222B594 -.public ov18_0222B668 -.public ov18_0222B6A0 -.public ov18_0222B700 -.public ov18_0222B740 -.public ov18_0222B790 -.public ov18_0222BA04 -.public ov18_0222BAF4 -.public ov18_0222BC1C -.public ov18_0222F6C4 -.public ov18_0222F6D4 -.public ov18_0222F710 -.public ov18_0222F74C -.public ov18_0222F774 -.public ov18_02233088 -.public ov18_02236BE0 -.public ov18_0223909C -.public ov18_02239D5C -.public ov18_0223A1D0 -.public ov18_0223A6B4 -.public ov18_0223B518 -.public ov18_0223B604 -.public ov18_0223B658 -.public ov18_0223B694 -.public ov18_0223B6BC -.public ov18_0223B6D0 -.public ov18_0223B854 -.public ov18_0223B858 -.public ov18_0223B8AC -.public ov18_0223B8CC -.public ov18_0223B930 -.public ov18_0223BA60 -.public ov18_0223BB54 -.public ov18_0223D154 -.public ov18_0223DDCC -.public ov18_0223E994 -.public ov18_02243738 -.public ov18_0224382C -.public ov18_02244170 -.public ov18_02244194 -.public ov18_02244394 -.public ov18_02244C84 -.public ov18_02244CD8 -.public ov18_02245470 -.public ov18_022454B0 -.public ov18_022455B8 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/scenesettest.inc b/subprojects/NitroDWC/libraries/util/asm/include/scenesettest.inc deleted file mode 100644 index 865b526d12..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/scenesettest.inc +++ /dev/null @@ -1,51 +0,0 @@ -.public sub_020A33F8 -.public GX_LoadBGPltt -.public GX_LoadBG2Scr -.public OS_Terminate -.public MIi_CpuCopy32 -.public MI_CpuCopy8 -.public DWC_AC_Create -.public DWC_AC_Process -.public DWC_AC_GetStatus -.public DWC_AC_Destroy -.public ov4_021E60F8 -.public ov18_0222AD34 -.public ov18_0222AE04 -.public ov18_0222B594 -.public ov18_0222B700 -.public ov18_0222B740 -.public ov18_0222B7C8 -.public ov18_0222BC1C -.public ov18_0222BC8C -.public ov18_0222BD44 -.public ov18_0222F6C4 -.public ov18_0222F6D4 -.public ov18_0222F724 -.public ov18_022365BC -.public ov18_02236BD0 -.public ov18_0223BC38 -.public ov18_0223BCE0 -.public ov18_0223BD78 -.public ov18_0223BDE4 -.public ov18_0223BE18 -.public ov18_0223BE2C -.public ov18_0223BE30 -.public ov18_0223BE34 -.public ov18_0223BE38 -.public ov18_0223BE60 -.public ov18_0223BE84 -.public ov18_0223BF18 -.public ov18_0223BFA8 -.public ov18_0223DDCC -.public ov18_0223E5D0 -.public ov18_0223E994 -.public ov18_0223E9FC -.public ov18_02244170 -.public ov18_02244194 -.public ov18_022448E0 -.public ov18_02244C84 -.public ov18_02244CD8 -.public ov18_02245068 -.public ov18_022450D0 -.public ov18_02246304 -.public ov18_022463AC diff --git a/subprojects/NitroDWC/libraries/util/asm/include/scenesettestcomplete.inc b/subprojects/NitroDWC/libraries/util/asm/include/scenesettestcomplete.inc deleted file mode 100644 index c7585a7951..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/scenesettestcomplete.inc +++ /dev/null @@ -1,27 +0,0 @@ -.public GX_LoadBG2Scr -.public ov18_0222B668 -.public ov18_0222B700 -.public ov18_0222B7C8 -.public ov18_0222F6C4 -.public ov18_0222F6D4 -.public ov18_0222F710 -.public ov18_0222F724 -.public ov18_0222F75C -.public ov18_0222FEE8 -.public ov18_02230228 -.public ov18_02236BE0 -.public ov18_0223BFD8 -.public ov18_0223C044 -.public ov18_0223C078 -.public ov18_0223C09C -.public ov18_0223C0AC -.public ov18_0223C0B0 -.public ov18_0223C108 -.public ov18_0223C1AC -.public ov18_0223EF7C -.public ov18_0223F4A4 -.public ov18_02244170 -.public ov18_02244194 -.public ov18_022448E0 -.public ov18_02244C84 -.public ov18_02244CD8 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/scenesettestconfirm.inc b/subprojects/NitroDWC/libraries/util/asm/include/scenesettestconfirm.inc deleted file mode 100644 index 8581c3c470..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/scenesettestconfirm.inc +++ /dev/null @@ -1,27 +0,0 @@ -.public GX_LoadBG2Scr -.public ov18_0222B594 -.public ov18_0222B700 -.public ov18_0222BC1C -.public ov18_0222F6C4 -.public ov18_0222F6D4 -.public ov18_0222F724 -.public ov18_0223BBAC -.public ov18_0223C274 -.public ov18_0223C2E0 -.public ov18_0223C334 -.public ov18_0223C3BC -.public ov18_0223C3F8 -.public ov18_0223C3FC -.public ov18_0223C400 -.public ov18_0223C434 -.public ov18_0223D910 -.public ov18_0223E2D0 -.public ov18_0223E994 -.public ov18_0223FC48 -.public ov18_0223FF74 -.public ov18_0223FFB8 -.public ov18_0223FFCC -.public ov18_02244170 -.public ov18_02244194 -.public ov18_02244C84 -.public ov18_02244CD8 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/scenesetusbcomplete.inc b/subprojects/NitroDWC/libraries/util/asm/include/scenesetusbcomplete.inc deleted file mode 100644 index ad181ac029..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/scenesetusbcomplete.inc +++ /dev/null @@ -1,23 +0,0 @@ -.public GX_LoadBG2Scr -.public ov18_0222B668 -.public ov18_0222B700 -.public ov18_0222B7C8 -.public ov18_0222BBC0 -.public ov18_0222F6C4 -.public ov18_0222F6D4 -.public ov18_0222F710 -.public ov18_0223C21C -.public ov18_0223C4B0 -.public ov18_0223C530 -.public ov18_0223C564 -.public ov18_0223C588 -.public ov18_0223C598 -.public ov18_0223C59C -.public ov18_0223C5D8 -.public ov18_0223C648 -.public ov18_0223E994 -.public ov18_02244170 -.public ov18_02244194 -.public ov18_022448E0 -.public ov18_02244C84 -.public ov18_02244CD8 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/scenesetusbready.inc b/subprojects/NitroDWC/libraries/util/asm/include/scenesetusbready.inc deleted file mode 100644 index a7e58e3367..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/scenesetusbready.inc +++ /dev/null @@ -1,71 +0,0 @@ -.public GX_LoadBGPltt -.public GX_LoadBG2Scr -.public OS_GetOwnerInfo -.public MIi_CpuClear16 -.public MIi_CpuCopy16 -.public ov18_0222AD34 -.public ov18_0222AE04 -.public ov18_0222B004 -.public ov18_0222B034 -.public ov18_0222B048 -.public ov18_0222B07C -.public ov18_0222B0A8 -.public ov18_0222B0C0 -.public ov18_0222B594 -.public ov18_0222B668 -.public ov18_0222B700 -.public ov18_0222B740 -.public ov18_0222B790 -.public ov18_0222B7C8 -.public ov18_0222B83C -.public ov18_0222BBC0 -.public ov18_0222F6C4 -.public ov18_0222F6D4 -.public ov18_0223A6B4 -.public ov18_0223C470 -.public ov18_0223C67C -.public ov18_0223C6CC -.public ov18_0223C774 -.public ov18_0223C7C8 -.public ov18_0223C804 -.public ov18_0223C82C -.public ov18_0223C840 -.public ov18_0223C878 -.public ov18_0223C87C -.public ov18_0223C8CC -.public ov18_0223C8EC -.public ov18_0223C950 -.public ov18_0223CA08 -.public ov18_0223CA28 -.public ov18_0223CABC -.public ov18_0223CB64 -.public ov18_0223CB98 -.public ov18_0223CBC4 -.public ov18_0223CBEC -.public ov18_0223CC00 -.public ov18_0223CC38 -.public ov18_0223CC3C -.public ov18_0223CC88 -.public ov18_0223CCA8 -.public ov18_0223CD14 -.public ov18_0223CE08 -.public ov18_0223CEF4 -.public ov18_0223CF20 -.public ov18_0223CF40 -.public ov18_0223CF9C -.public ov18_0223E994 -.public ov18_0223E9FC -.public ov18_0223F564 -.public ov18_0223F71C -.public ov18_0223F800 -.public ov18_0223FC48 -.public ov18_0223FF74 -.public ov18_0223FFB8 -.public ov18_0223FFCC -.public ov18_02244170 -.public ov18_02244194 -.public ov18_02244394 -.public ov18_022448E0 -.public ov18_02244C84 -.public ov18_02244CD8 -.public ov18_02245470 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/screen.inc b/subprojects/NitroDWC/libraries/util/asm/include/screen.inc deleted file mode 100644 index 20ad31b618..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/screen.inc +++ /dev/null @@ -1,12 +0,0 @@ -.public GX_LoadBG2Scr -.public DC_FlushRange -.public MIi_CpuCopy16 -.public MIi_CpuCopyFast -.public ov18_0223D100 -.public ov18_0223D190 -.public ov18_0223D1E8 -.public ov18_02245068 -.public ov18_0224508C -.public ov18_02246304 -.public ov18_022463AC -.public ov18_022463CC diff --git a/subprojects/NitroDWC/libraries/util/asm/include/scrollbar.inc b/subprojects/NitroDWC/libraries/util/asm/include/scrollbar.inc deleted file mode 100644 index 92fc8bcb1f..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/scrollbar.inc +++ /dev/null @@ -1,27 +0,0 @@ -.public FX_DivS32 -.public ov18_0223D390 -.public ov18_0223D514 -.public ov18_0223D5E4 -.public ov18_0223D65C -.public ov18_0223D688 -.public ov18_0223D6F0 -.public ov18_0223D77C -.public ov18_0223D7C8 -.public ov18_0223D8A0 -.public ov18_0223E994 -.public ov18_0223E9B8 -.public ov18_0223E9D8 -.public ov18_0223E9FC -.public ov18_02243B3C -.public ov18_02243CF4 -.public ov18_02243DE4 -.public ov18_02243F8C -.public ov18_02244C2C -.public ov18_02245068 -.public ov18_0224508C -.public ov18_02245530 -.public ov18_022455B8 -.public ov18_02245640 -.public ov18_022457B8 -.public ov18_02246304 -.public ov18_022463CC diff --git a/subprojects/NitroDWC/libraries/util/asm/include/search_dwcutil.inc b/subprojects/NitroDWC/libraries/util/asm/include/search_dwcutil.inc deleted file mode 100644 index c054d4cf31..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/search_dwcutil.inc +++ /dev/null @@ -1,18 +0,0 @@ -.public DC_InvalidateRange -.public OS_Terminate -.public MIi_CpuClear16 -.public MI_CpuCopy8 -.public WM_ReadStatus -.public WM_GetAllowedChannel -.public WM_GetDispersionScanPeriod -.public WM_GetOtherElements -.public WM_Initialize -.public WM_Reset -.public WM_End -.public WM_StartScanEx -.public memcmp -.public ov18_0223DA10 -.public ov18_0223DB3C -.public ov18_0223DBA0 -.public ov18_02245068 -.public ov18_0224508C diff --git a/subprojects/NitroDWC/libraries/util/asm/include/setting.inc b/subprojects/NitroDWC/libraries/util/asm/include/setting.inc deleted file mode 100644 index fbfda12b68..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/setting.inc +++ /dev/null @@ -1,21 +0,0 @@ -.public sub_020A2A34 -.public sub_020A2A60 -.public sub_020A2B94 -.public sub_020A2BD8 -.public sub_020A3338 -.public sub_020A3A3C -.public OS_SPrintf -.public MIi_CpuClear16 -.public MI_CpuFill8 -.public MI_CpuCopy8 -.public MATHi_CRC16InitTableRev -.public MATH_CalcCRC16 -.public memcmp -.public atoi -.public ov18_0223E2D0 -.public ov18_0223E6CC -.public ov18_0223E834 -.public ov18_0223E8BC -.public ov18_02245068 -.public ov18_0224508C -.public ov18_02245E50 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/sound.inc b/subprojects/NitroDWC/libraries/util/asm/include/sound.inc deleted file mode 100644 index 4856281cec..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/sound.inc +++ /dev/null @@ -1,15 +0,0 @@ -.public NNS_SndInit -.public NNS_SndMain -.public NNS_SndPlayerStopSeq -.public NNS_SndHandleInit -.public NNS_SndPlayerSetVolume -.public NNS_SndPlayerSetTrackPitch -.public NNS_SndArcInitOnMemory -.public NNS_SndArcPlayerSetup -.public NNS_SndArcPlayerStartSeqArc -.public ov18_0223EA1C -.public ov18_02243738 -.public ov18_02245068 -.public ov18_0224508C -.public ov18_02246304 -.public ov18_022463AC diff --git a/subprojects/NitroDWC/libraries/util/asm/include/step.inc b/subprojects/NitroDWC/libraries/util/asm/include/step.inc deleted file mode 100644 index 85cb295b2b..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/step.inc +++ /dev/null @@ -1,32 +0,0 @@ -.public GXS_LoadBG1Scr -.public DC_FlushRange -.public ov18_0222B6A0 -.public ov18_0223E994 -.public ov18_0223EB24 -.public ov18_0223EC08 -.public ov18_0223ECEC -.public ov18_0223EDD0 -.public ov18_0223EEB4 -.public ov18_0223EF54 -.public ov18_0223F0A4 -.public ov18_0223F138 -.public ov18_0223F214 -.public ov18_0223F2F0 -.public ov18_0223F3CC -.public ov18_0223F4D0 -.public ov18_0223F518 -.public ov18_02243738 -.public ov18_0224382C -.public ov18_02243B3C -.public ov18_02243BBC -.public ov18_02243C74 -.public ov18_02243CF4 -.public ov18_02243DE4 -.public ov18_02243E44 -.public ov18_02243ECC -.public ov18_02243F8C -.public ov18_02245068 -.public ov18_0224508C -.public ov18_02246304 -.public ov18_022463A4 -.public ov18_022463AC diff --git a/subprojects/NitroDWC/libraries/util/asm/include/sub.inc b/subprojects/NitroDWC/libraries/util/asm/include/sub.inc deleted file mode 100644 index e5dbe46536..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/sub.inc +++ /dev/null @@ -1,33 +0,0 @@ -.public GX_SetBankForBG -.public GX_SetBankForOBJ -.public GX_SetBankForBGExtPltt -.public GX_SetBankForOBJExtPltt -.public GX_SetBankForTex -.public GX_SetBankForTexPltt -.public GX_SetBankForClearImage -.public GX_SetBankForARM7 -.public GX_SetBankForLCDC -.public GX_SetBankForSubBG -.public GX_SetBankForSubOBJ -.public GX_SetBankForSubBGExtPltt -.public GX_SetBankForSubOBJExtPltt -.public GX_DisableBankForBG -.public GX_DisableBankForOBJ -.public GX_DisableBankForBGExtPltt -.public GX_DisableBankForOBJExtPltt -.public GX_DisableBankForTex -.public GX_DisableBankForTexPltt -.public GX_DisableBankForClearImage -.public GX_DisableBankForARM7 -.public GX_DisableBankForLCDC -.public GX_DisableBankForSubBG -.public GX_DisableBankForSubOBJ -.public GX_DisableBankForSubBGExtPltt -.public GX_DisableBankForSubOBJExtPltt -.public OS_DisableInterrupts -.public OS_RestoreInterrupts -.public MIi_CpuClearFast -.public PM_SetLCDPower -.public PMi_SendLEDPatternCommand -.public PM_GetLEDPattern -.public ov18_02246038 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/task.inc b/subprojects/NitroDWC/libraries/util/asm/include/task.inc deleted file mode 100644 index 52189309ae..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/task.inc +++ /dev/null @@ -1,17 +0,0 @@ -.public OS_EnableIrqMask -.public OS_DisableIrqMask -.public ov18_02243FD4 -.public ov18_02244008 -.public ov18_02244048 -.public ov18_02244064 -.public ov18_022440BC -.public ov18_02245068 -.public ov18_0224508C -.public ov18_02245974 -.public ov18_022459A0 -.public ov18_022459BC -.public ov18_022459F4 -.public ov18_02245A24 -.public ov18_02245A34 -.public ov18_02246318 -.public ov18_022463D8 diff --git a/subprojects/NitroDWC/libraries/util/asm/include/usbap.inc b/subprojects/NitroDWC/libraries/util/asm/include/usbap.inc deleted file mode 100644 index a0468a392c..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/usbap.inc +++ /dev/null @@ -1,22 +0,0 @@ -.public DC_InvalidateRange -.public OS_GetTick -.public OS_GetOwnerInfo -.public OS_Terminate -.public MI_CpuCopy8 -.public WM_ReadStatus -.public WM_GetDispersionScanPeriod -.public WM_Initialize -.public WM_Reset -.public WM_End -.public WM_StartScanEx -.public memcmp -.public ov18_0223F6E8 -.public ov18_0223F818 -.public ov18_0223F8A8 -.public ov18_0223FA00 -.public ov18_0223FB0C -.public ov18_02245068 -.public ov18_0224508C -.public ov18_02246304 -.public ov18_022463AC -.public ov18_022463CC diff --git a/subprojects/NitroDWC/libraries/util/asm/include/window.inc b/subprojects/NitroDWC/libraries/util/asm/include/window.inc deleted file mode 100644 index 80d84f9853..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/include/window.inc +++ /dev/null @@ -1,40 +0,0 @@ -.public G2x_SetBlendBrightness_ -.public G2x_ChangeBlendBrightness_ -.public ov18_0222B8F8 -.public ov18_0222F8D0 -.public ov18_0223FFE8 -.public ov18_02240048 -.public ov18_0224011C -.public ov18_02240278 -.public ov18_022402E4 -.public ov18_0224048C -.public ov18_02240518 -.public ov18_022405D8 -.public ov18_02240614 -.public ov18_022406A4 -.public ov18_02240700 -.public ov18_022439E0 -.public ov18_02243B3C -.public ov18_02243BBC -.public ov18_02243BC8 -.public ov18_02243BD0 -.public ov18_02243CF4 -.public ov18_02243DE4 -.public ov18_02243E44 -.public ov18_02243ECC -.public ov18_02243F8C -.public ov18_02244574 -.public ov18_02244650 -.public ov18_02244A9C -.public ov18_02244B70 -.public ov18_02244C38 -.public ov18_02244C50 -.public ov18_02244D34 -.public ov18_02244E4C -.public ov18_02245068 -.public ov18_0224508C -.public ov18_02245470 -.public ov18_022455B8 -.public ov18_02246304 -.public ov18_022463A4 -.public ov18_022463AC diff --git a/subprojects/NitroDWC/libraries/util/asm/input.s b/subprojects/NitroDWC/libraries/util/asm/input.s deleted file mode 100644 index ed61b878d3..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/input.s +++ /dev/null @@ -1,597 +0,0 @@ - .include "macros/function.inc" - .include "include/input.inc" - - - - .text - - - arm_func_start ov18_0224510C -ov18_0224510C: ; 0x0224510C - stmfd sp!, {r3, lr} - sub sp, sp, #8 - mov r0, #0x3a - mov r1, #4 - bl ov18_02245068 - ldr r1, _02245184 ; =0x022533C8 - str r0, [r1, #4] - add r0, sp, #0 - bl TP_GetUserInfo - cmp r0, #0 - bne _0224513C - bl OS_Terminate -_0224513C: - add r0, sp, #0 - bl TP_SetCalibrateParam - ldr r1, _02245184 ; =0x022533C8 - mov r0, #0 - ldr r2, [r1, #4] - mov r1, #4 - mov r3, #5 - bl TP_RequestAutoSamplingStartAsync - mov r0, #2 - bl TP_WaitBusy - mov r0, #2 - bl TP_CheckError - cmp r0, #0 - beq _02245178 - bl OS_Terminate -_02245178: - bl ov18_022451C0 - add sp, sp, #8 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02245184: .word Unk_ov18_022533C8 - arm_func_end ov18_0224510C - - arm_func_start ov18_02245188 -ov18_02245188: ; 0x02245188 - stmfd sp!, {r3, r4, r5, lr} - mov r5, #4 - mov r4, r5 -_02245194: - bl TP_RequestAutoSamplingStopAsync - mov r0, r5 - bl TP_WaitBusy - mov r0, r4 - bl TP_CheckError - cmp r0, #0 - bne _02245194 - ldr r0, _022451BC ; =0x022533CC - bl ov18_0224508C - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_022451BC: .word Unk_ov18_022533CC - arm_func_end ov18_02245188 - - arm_func_start ov18_022451C0 -ov18_022451C0: ; 0x022451C0 - stmfd sp!, {r3, lr} - bl ov18_022451D0 - bl ov18_022452D4 - ldmia sp!, {r3, pc} - arm_func_end ov18_022451C0 - - arm_func_start ov18_022451D0 -ov18_022451D0: ; 0x022451D0 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - ldr r1, _022452C0 ; =0x04000130 - ldr r0, _022452C4 ; =0x027FFFA8 - ldrh r2, [r1] - ldrh r1, [r0] - ldr r4, _022452C8 ; =0x022533C8 - ldr r0, _022452CC ; =0x00002FFF - orr r1, r2, r1 - eor r1, r1, r0 - and r0, r1, r0 - ldr r5, [r4, #4] - mov r0, r0, lsl #0x10 - ldrh r1, [r5, #0x30] - mov ip, r0, lsr #0x10 - ldr r3, _022452D0 ; =0x022533D0 - eor r1, r1, r0, lsr #16 - and r1, r1, r0, lsr #16 - strh r1, [r5, #0x32] - ldrh r5, [r5, #0x30] - ldr r1, [r4, #4] - mov r2, #0 - eor r0, r5, r0, lsr #16 - and r0, r5, r0 - strh r0, [r1, #0x36] - ldr r0, [r4, #4] - mov r5, #0x28 - strh ip, [r0, #0x30] - ldr r1, [r4, #4] - ldrh r0, [r1, #0x32] - strh r0, [r1, #0x34] - mov r0, r2 - mov r1, #1 -_02245250: - mov r6, r1, lsl r2 - mov lr, r6, lsl #0x10 - tst ip, lr, lsr #16 - streqb r0, [r3] - beq _022452AC - ldrb r6, [r3] - add r7, r6, #1 - and r6, r7, #0xff - strb r7, [r3] - cmp r6, #0x28 - bne _02245290 - ldr r7, [r4, #4] - ldrh r6, [r7, #0x34] - orr r6, r6, lr, lsr #16 - strh r6, [r7, #0x34] - b _022452AC -_02245290: - cmp r6, #0x2f - bne _022452AC - ldr r7, [r4, #4] - ldrh r6, [r7, #0x34] - orr r6, r6, lr, lsr #16 - strh r6, [r7, #0x34] - strb r5, [r3] -_022452AC: - add r2, r2, #1 - cmp r2, #0xe - add r3, r3, #1 - blt _02245250 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_022452C0: .word 0x04000130 -_022452C4: .word 0x027FFFA8 -_022452C8: .word Unk_ov18_022533C8 -_022452CC: .word 0x00002FFF -_022452D0: .word Unk_ov18_022533D0 - arm_func_end ov18_022451D0 - - arm_func_start ov18_022452D4 -ov18_022452D4: ; 0x022452D4 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #8 - ldr r0, _0224546C ; =0x022533C8 - mov r5, #0 - ldr r0, [r0, #4] - ldrb r0, [r0, #0x38] - mov r0, r0, lsl #0x1f - movs r0, r0, lsr #0x1f - movne r6, #1 - moveq r6, #0 - bl TP_GetLatestIndexInAuto - ldr r7, _0224546C ; =0x022533C8 - mov r4, r5 - ldr r3, [r7, #4] - mov r8, #5 - ldrh r2, [r3, #0x28] - ldrh r1, [r3, #0x2a] - strh r2, [r3, #0x2c] - strh r1, [r3, #0x2e] -_02245320: - ldr r1, [r7, #4] - add r1, r1, r0, lsl #3 - ldrh r2, [r1, #4] - cmp r2, #1 - ldreqh r2, [r1, #6] - cmpeq r2, #0 - bne _02245364 - add r0, sp, #0 - mov r5, #1 - bl TP_GetCalibratedPoint - ldr r1, _0224546C ; =0x022533C8 - ldrh r0, [sp] - ldr r2, [r1, #4] - ldrh r1, [sp, #2] - add r2, r2, #0x28 - bl ov18_02244C2C - b _0224537C -_02245364: - mov r1, r8 - add r4, r4, #1 - add r0, r0, #4 - bl FX_ModS32 - cmp r4, #4 - blt _02245320 -_0224537C: - ldr r0, _0224546C ; =0x022533C8 - eor r7, r5, r6 - ldr r4, [r0, #4] - and r1, r5, r7 - ldrb r3, [r4, #0x38] - and r2, r1, #0xff - and r1, r6, r7 - bic r3, r3, #2 - mov r2, r2, lsl #0x1f - orr r2, r3, r2, lsr #30 - strb r2, [r4, #0x38] - ldr r4, [r0, #4] - and r1, r1, #0xff - ldrb r3, [r4, #0x38] - mov r2, r1, lsl #0x1f - cmp r5, #0 - bic r3, r3, #8 - orr r2, r3, r2, lsr #28 - strb r2, [r4, #0x38] - ldr r3, [r0, #4] - and r1, r5, #1 - ldrb r2, [r3, #0x38] - addeq sp, sp, #8 - bic r2, r2, #1 - orr r1, r2, r1 - strb r1, [r3, #0x38] - ldr r3, [r0, #4] - ldrb r2, [r3, #0x38] - mov r1, r2, lsl #0x1e - mov r1, r1, lsr #0x1f - bic r2, r2, #4 - mov r1, r1, lsl #0x1f - orr r1, r2, r1, lsr #29 - strb r1, [r3, #0x38] - moveq r1, #0 - streqb r1, [r0, #1] - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldrb r1, [r0, #1] - add r2, r1, #1 - and r1, r2, #0xff - strb r2, [r0, #1] - cmp r1, #0x28 - bne _02245440 - ldr r1, [r0, #4] - add sp, sp, #8 - ldrb r0, [r1, #0x38] - orr r0, r0, #4 - strb r0, [r1, #0x38] - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02245440: - cmp r1, #0x2f - addne sp, sp, #8 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - ldr r3, [r0, #4] - mov r1, #0x28 - ldrb r2, [r3, #0x38] - orr r2, r2, #4 - strb r2, [r3, #0x38] - strb r1, [r0, #1] - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_0224546C: .word Unk_ov18_022533C8 - arm_func_end ov18_022452D4 - - arm_func_start ov18_02245470 -ov18_02245470: ; 0x02245470 - ldr r1, _022454A8 ; =0x027FFFA8 - ldrh r1, [r1] - and r1, r1, #0x8000 - movs r1, r1, asr #0xf - movne r0, #0 - bxne lr - ldr r1, _022454AC ; =0x022533C8 - ldr r1, [r1, #4] - ldrh r1, [r1, #0x32] - and r1, r0, r1 - cmp r0, r1 - moveq r0, #1 - movne r0, #0 - bx lr - ; .align 2, 0 -_022454A8: .word 0x027FFFA8 -_022454AC: .word Unk_ov18_022533C8 - arm_func_end ov18_02245470 - - arm_func_start ov18_022454B0 -ov18_022454B0: ; 0x022454B0 - ldr r1, _022454E8 ; =0x027FFFA8 - ldrh r1, [r1] - and r1, r1, #0x8000 - movs r1, r1, asr #0xf - movne r0, #0 - bxne lr - ldr r1, _022454EC ; =0x022533C8 - ldr r1, [r1, #4] - ldrh r1, [r1, #0x34] - and r1, r0, r1 - cmp r0, r1 - moveq r0, #1 - movne r0, #0 - bx lr - ; .align 2, 0 -_022454E8: .word 0x027FFFA8 -_022454EC: .word Unk_ov18_022533C8 - arm_func_end ov18_022454B0 - - arm_func_start ov18_022454F0 -ov18_022454F0: ; 0x022454F0 - ldr r1, _02245528 ; =0x027FFFA8 - ldrh r1, [r1] - and r1, r1, #0x8000 - movs r1, r1, asr #0xf - movne r0, #0 - bxne lr - ldr r1, _0224552C ; =0x022533C8 - ldr r1, [r1, #4] - ldrh r1, [r1, #0x36] - and r1, r0, r1 - cmp r0, r1 - moveq r0, #1 - movne r0, #0 - bx lr - ; .align 2, 0 -_02245528: .word 0x027FFFA8 -_0224552C: .word Unk_ov18_022533C8 - arm_func_end ov18_022454F0 - - arm_func_start ov18_02245530 -ov18_02245530: ; 0x02245530 - ldr r1, _022455B0 ; =0x027FFFA8 - ldrh r1, [r1] - and r1, r1, #0x8000 - movs r1, r1, asr #0xf - movne r0, #0 - bxne lr - ldr r1, _022455B4 ; =0x022533C8 - ldr r3, [r1, #4] - ldrb r1, [r3, #0x38] - mov r1, r1, lsl #0x1f - movs r1, r1, lsr #0x1f - moveq r0, #0 - bxeq lr - ldrh r2, [r3, #0x28] - ldrh r1, [r0] - cmp r1, r2 - movhi r0, #0 - bxhi lr - ldrh r1, [r0, #4] - cmp r1, r2 - movlo r0, #0 - bxlo lr - ldrh r2, [r3, #0x2a] - ldrh r1, [r0, #2] - cmp r1, r2 - movhi r0, #0 - bxhi lr - ldrh r0, [r0, #6] - cmp r0, r2 - movhs r0, #1 - movlo r0, #0 - bx lr - ; .align 2, 0 -_022455B0: .word 0x027FFFA8 -_022455B4: .word Unk_ov18_022533C8 - arm_func_end ov18_02245530 - - arm_func_start ov18_022455B8 -ov18_022455B8: ; 0x022455B8 - ldr r1, _02245638 ; =0x027FFFA8 - ldrh r1, [r1] - and r1, r1, #0x8000 - movs r1, r1, asr #0xf - movne r0, #0 - bxne lr - ldr r1, _0224563C ; =0x022533C8 - ldr r3, [r1, #4] - ldrb r1, [r3, #0x38] - mov r1, r1, lsl #0x1e - movs r1, r1, lsr #0x1f - moveq r0, #0 - bxeq lr - ldrh r2, [r3, #0x28] - ldrh r1, [r0] - cmp r1, r2 - movhi r0, #0 - bxhi lr - ldrh r1, [r0, #4] - cmp r1, r2 - movlo r0, #0 - bxlo lr - ldrh r2, [r3, #0x2a] - ldrh r1, [r0, #2] - cmp r1, r2 - movhi r0, #0 - bxhi lr - ldrh r0, [r0, #6] - cmp r0, r2 - movhs r0, #1 - movlo r0, #0 - bx lr - ; .align 2, 0 -_02245638: .word 0x027FFFA8 -_0224563C: .word Unk_ov18_022533C8 - arm_func_end ov18_022455B8 - - arm_func_start ov18_02245640 -ov18_02245640: ; 0x02245640 - ldr r1, _022456C0 ; =0x027FFFA8 - ldrh r1, [r1] - and r1, r1, #0x8000 - movs r1, r1, asr #0xf - movne r0, #0 - bxne lr - ldr r1, _022456C4 ; =0x022533C8 - ldr r3, [r1, #4] - ldrb r1, [r3, #0x38] - mov r1, r1, lsl #0x1d - movs r1, r1, lsr #0x1f - moveq r0, #0 - bxeq lr - ldrh r2, [r3, #0x28] - ldrh r1, [r0] - cmp r1, r2 - movhi r0, #0 - bxhi lr - ldrh r1, [r0, #4] - cmp r1, r2 - movlo r0, #0 - bxlo lr - ldrh r2, [r3, #0x2a] - ldrh r1, [r0, #2] - cmp r1, r2 - movhi r0, #0 - bxhi lr - ldrh r0, [r0, #6] - cmp r0, r2 - movhs r0, #1 - movlo r0, #0 - bx lr - ; .align 2, 0 -_022456C0: .word 0x027FFFA8 -_022456C4: .word Unk_ov18_022533C8 - arm_func_end ov18_02245640 - - arm_func_start ov18_022456C8 -ov18_022456C8: ; 0x022456C8 - ldr r1, _02245748 ; =0x027FFFA8 - ldrh r1, [r1] - and r1, r1, #0x8000 - movs r1, r1, asr #0xf - movne r0, #0 - bxne lr - ldr r1, _0224574C ; =0x022533C8 - ldr r3, [r1, #4] - ldrb r1, [r3, #0x38] - mov r1, r1, lsl #0x1c - movs r1, r1, lsr #0x1f - moveq r0, #0 - bxeq lr - ldrh r2, [r3, #0x28] - ldrh r1, [r0] - cmp r1, r2 - movhi r0, #0 - bxhi lr - ldrh r1, [r0, #4] - cmp r1, r2 - movlo r0, #0 - bxlo lr - ldrh r2, [r3, #0x2a] - ldrh r1, [r0, #2] - cmp r1, r2 - movhi r0, #0 - bxhi lr - ldrh r0, [r0, #6] - cmp r0, r2 - movhs r0, #1 - movlo r0, #0 - bx lr - ; .align 2, 0 -_02245748: .word 0x027FFFA8 -_0224574C: .word Unk_ov18_022533C8 - arm_func_end ov18_022456C8 - - arm_func_start ov18_02245750 -ov18_02245750: ; 0x02245750 - stmfd sp!, {r3, lr} - sub sp, sp, #8 - ldr r1, _022457B4 ; =0x027FFFA8 - ldrh r1, [r1] - and r1, r1, #0x8000 - movs r1, r1, asr #0xf - addne sp, sp, #8 - movne r0, #0 - ldmneia sp!, {r3, pc} - ldrh r1, [r0] - strh r1, [sp] - ldrh r1, [r0, #2] - strh r1, [sp, #2] - ldrh r2, [r0] - ldrh r1, [r0, #4] - add r1, r2, r1 - strh r1, [sp, #4] - ldrh r2, [r0, #2] - ldrh r1, [r0, #6] - add r0, sp, #0 - add r1, r2, r1 - strh r1, [sp, #6] - bl ov18_022455B8 - add sp, sp, #8 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022457B4: .word 0x027FFFA8 - arm_func_end ov18_02245750 - - arm_func_start ov18_022457B8 -ov18_022457B8: ; 0x022457B8 - ldr r1, _02245818 ; =0x027FFFA8 - ldrh r1, [r1] - and r1, r1, #0x8000 - movs r1, r1, asr #0xf - movne r0, #0 - bxne lr - ldr r1, _0224581C ; =0x022533C8 - ldr r3, [r1, #4] - ldrb r1, [r3, #0x38] - mov r1, r1, lsl #0x1f - movs r1, r1, lsr #0x1f - bne _02245800 - ldrh r2, [r3, #0x2c] - ldrh r1, [r3, #0x2e] - strh r2, [r0] - strh r1, [r0, #2] - mov r0, #0 - bx lr -_02245800: - ldrh r2, [r3, #0x28] - ldrh r1, [r3, #0x2a] - strh r2, [r0] - strh r1, [r0, #2] - mov r0, #1 - bx lr - ; .align 2, 0 -_02245818: .word 0x027FFFA8 -_0224581C: .word Unk_ov18_022533C8 - arm_func_end ov18_022457B8 - - arm_func_start ov18_02245820 -ov18_02245820: ; 0x02245820 - stmfd sp!, {r3, lr} - ldr r0, _02245894 ; =0x022533C8 - ldrb r0, [r0] - cmp r0, #0 - ldr r0, _02245898 ; =0x027FFFA8 - beq _02245868 - ldrh r0, [r0] - and r0, r0, #0x8000 - movs r0, r0, asr #0xf - ldmneia sp!, {r3, pc} - mov r0, #1 - bl PM_SetLCDPower - cmp r0, #0 - ldmeqia sp!, {r3, pc} - ldr r0, _02245894 ; =0x022533C8 - mov r1, #0 - strb r1, [r0] - ldmia sp!, {r3, pc} -_02245868: - ldrh r0, [r0] - and r0, r0, #0x8000 - movs r0, r0, asr #0xf - ldmeqia sp!, {r3, pc} - mov r0, #0 - bl PM_SetLCDPower - cmp r0, #0 - ldrne r0, _02245894 ; =0x022533C8 - movne r1, #1 - strneb r1, [r0] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02245894: .word Unk_ov18_022533C8 -_02245898: .word 0x027FFFA8 - arm_func_end ov18_02245820 - - .bss - - - .global Unk_ov18_022533C8 -Unk_ov18_022533C8: ; 0x022533C8 - .space 0x1 - - .global Unk_ov18_022533C9 -Unk_ov18_022533C9: ; 0x022533C9 - .space 0x3 - - .global Unk_ov18_022533CC -Unk_ov18_022533CC: ; 0x022533CC - .space 0x4 - - .global Unk_ov18_022533D0 -Unk_ov18_022533D0: ; 0x022533D0 - .space 0x10 - diff --git a/subprojects/NitroDWC/libraries/util/asm/interrupt.s b/subprojects/NitroDWC/libraries/util/asm/interrupt.s deleted file mode 100644 index 2af9c79e03..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/interrupt.s +++ /dev/null @@ -1,88 +0,0 @@ - .include "macros/function.inc" - .include "include/interrupt.inc" - - .extern OS_IRQTable - - .text - - - arm_func_start ov18_0224589C -ov18_0224589C: ; 0x0224589C - stmfd sp!, {r3, lr} - ldr r0, _022458FC ; =0x04000210 - ldr r1, _02245900 ; =0x022533E0 - ldr r2, [r0, #0] - ldr r0, _02245904 ; =0x00040018 - str r2, [r1, #4] - bl OS_SetIrqMask - mov r0, #1 - bl OS_EnableIrqMask - mov r0, #1 - bl OS_GetIrqFunction - ldr r2, _02245900 ; =0x022533E0 - ldr r1, _02245908 ; =ov18_0224594C - str r0, [r2, #0] - mov r0, #1 - bl OS_SetIrqFunction - mov r0, #1 - bl OS_ResetRequestIrqMask - ldr r2, _0224590C ; =0x04000208 - mov r0, #1 - ldrh r1, [r2] - strh r0, [r2] - bl OS_EnableInterrupts - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022458FC: .word 0x04000210 -_02245900: .word Unk_ov18_022533E0 -_02245904: .word 0x00040018 -_02245908: .word ov18_0224594C -_0224590C: .word 0x04000208 - arm_func_end ov18_0224589C - - arm_func_start ov18_02245910 -ov18_02245910: ; 0x02245910 - stmfd sp!, {r3, lr} - ldr r2, _02245944 ; =0x04000208 - mov r1, #0 - ldrh r0, [r2] - ldr r0, _02245948 ; =0x022533E0 - strh r1, [r2] - ldr r0, [r0, #4] - bl OS_SetIrqMask - ldr r1, _02245948 ; =0x022533E0 - mov r0, #1 - ldr r1, [r1, #0] - bl OS_SetIrqFunction - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02245944: .word 0x04000208 -_02245948: .word Unk_ov18_022533E0 - arm_func_end ov18_02245910 - - arm_func_start ov18_0224594C -ov18_0224594C: ; 0x0224594C - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02246254 - ldr r0, _02245970 ; =0x027E0000 - add r0, r0, #0x3000 - ldr r1, [r0, #0xff8] - orr r1, r1, #1 - str r1, [r0, #0xff8] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02245970: .word OS_IRQTable - arm_func_end ov18_0224594C - - .bss - - - .global Unk_ov18_022533E0 -Unk_ov18_022533E0: ; 0x022533E0 - .space 0x4 - - .global Unk_ov18_022533E4 -Unk_ov18_022533E4: ; 0x022533E4 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/keyboard.s b/subprojects/NitroDWC/libraries/util/asm/keyboard.s deleted file mode 100644 index b4ac546719..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/keyboard.s +++ /dev/null @@ -1,2544 +0,0 @@ - .include "macros/function.inc" - .include "include/keyboard.inc" - - - - .extern Unk_ov18_02249734 - .text - - - arm_func_start ov18_0222BE30 -ov18_0222BE30: ; 0x0222BE30 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x24 - add r5, sp, #0x1c - mov r4, #0 - strh r4, [r5, #4] - mov r3, #0x11 - strh r4, [r5, #6] - mov r2, #0x12 - mov r0, #0x128 - mov r1, #4 - strh r4, [r5] - strh r4, [r5, #2] - strh r3, [sp, #0x20] - strh r2, [sp, #0x22] - bl ov18_02245068 - ldr r8, _0222C17C ; =0x0225329C - mov r1, #0xff - str r0, [r8] - strb r1, [r0, #0x11c] - ldr r0, [r8] - mov r6, r4 - strb r6, [r0, #0x121] - mov r5, r4 - ldr r0, [r8] - mov r1, #1 - strb r1, [r0, #0x123] - ldr r0, [r8] - ldr r7, _0222C180 ; =0xC1FFFCFF - strb r1, [r0, #0x124] - mov r4, #0x34 -_0222BEA8: - mov r0, r5 - mov r1, r4 - bl ov18_02243F60 - ldr r1, [r8] - add r1, r1, r6, lsl #2 - str r0, [r1, #0x30] - ldr r0, [r8] - add r0, r0, r6, lsl #2 - ldr r1, [r0, #0x30] - ldr r0, [r1, #0] - and r0, r0, r7 - orr r0, r0, #0x200 - str r0, [r1, #0] - ldr r0, [r8] - add r0, r0, r6, lsl #2 - ldr r1, [r0, #0x30] - add r6, r6, #1 - ldrh r0, [r1, #4] - cmp r6, #0x2f - bic r0, r0, #0xc00 - orr r0, r0, #0xc00 - strh r0, [r1, #4] - blt _0222BEA8 - mov r6, #0 - ldr r5, _0222C184 ; =0x02248D38 - ldr r8, _0222C17C ; =0x0225329C - ldr r7, _0222C180 ; =0xC1FFFCFF - mov r4, r6 -_0222BF18: - ldrb r1, [r5], #1 - mov r0, r4 - bl ov18_02243F60 - ldr r1, [r8] - add r1, r1, r6, lsl #2 - str r0, [r1, #0xec] - ldr r0, [r8] - add r0, r0, r6, lsl #2 - ldr r1, [r0, #0xec] - ldr r0, [r1, #0] - and r0, r0, r7 - orr r0, r0, #0x200 - str r0, [r1, #0] - ldr r0, [r8] - add r0, r0, r6, lsl #2 - ldr r1, [r0, #0xec] - add r6, r6, #1 - ldrh r0, [r1, #4] - cmp r6, #4 - bic r0, r0, #0xc00 - orr r0, r0, #0xc00 - strh r0, [r1, #4] - blt _0222BF18 - mov sl, #0 - ldr sb, _0222C188 ; =0x02248D30 - ldr r4, _0222C17C ; =0x0225329C - mov r8, sl - mov r7, #1 - mvn r6, #0 - mov r5, #0x200 - mov fp, sl -_0222BF94: - ldrb r1, [sb], #1 - mov r0, r8 - mov r2, r7 - bl ov18_02243F8C - ldr r2, [r4, #0] - mov r1, r6 - add r2, r2, sl, lsl #2 - str r0, [r2, #0xfc] - ldr r0, [r4, #0] - mov r2, r5 - add r0, r0, sl, lsl #2 - ldr r0, [r0, #0xfc] - mov r3, fp - bl ov18_02243BD0 - ldr r0, [r4, #0] - mov r1, r6 - add r0, r0, sl, lsl #2 - ldr r0, [r0, #0xfc] - mov r2, #3 - bl ov18_02243DE4 - add sl, sl, #1 - cmp sl, #2 - blt _0222BF94 - mov sl, #0 - strh sl, [sp, #0x16] -_0222BFF8: - mov sb, #0 - ldr r6, _0222C18C ; =0x02249B54 - ldr r4, _0222C17C ; =0x0225329C - str sb, [sp, #0x10] - mov fp, #2 -_0222C00C: - add r0, sp, #0x18 - str r0, [sp] - mov r0, #0 - str r0, [sp, #4] - mov r1, #0x1c - mov r2, #2 - mov r3, r0 - bl ov18_02244574 - ldr r1, [r4, #0] - mov r2, sb, lsl #2 - add r1, r1, sl, lsl #4 - str r0, [r1, sb, lsl #2] - mov r0, #0 - ldr r7, [sp, #0x10] - strh r0, [sp, #0x1c] - mov r8, r0 - add r5, r2, sl, lsl #4 -_0222C050: - ldr r1, [r6, sl, lsl #2] - mov r0, r7, lsl #1 - ldrh r1, [r1, r0] - ldrh r0, [sp, #0x22] - strh r1, [sp, #0x14] - stmia sp, {r0, fp} - mov r0, #0x480 - str r0, [sp, #8] - add r0, sp, #0x14 - str r0, [sp, #0xc] - ldr r0, [r4, #0] - ldrh r1, [sp, #0x1c] - ldrh r2, [sp, #0x1e] - ldrh r3, [sp, #0x20] - ldr r0, [r0, r5] - bl ov18_02244A9C - ldrh r0, [sp, #0x1c] - add r8, r8, #1 - cmp r8, #0xc - add r0, r0, #0x12 - add r7, r7, #1 - strh r0, [sp, #0x1c] - blt _0222C050 - cmp sl, #0 - bne _0222C0D0 - ldr r1, [sp, #0x18] - mov r0, #0 - mov r2, #1 - bl ov18_022439E0 - ldr r1, [r4, #0] - add r1, r1, sb, lsl #2 - str r0, [r1, #0x104] -_0222C0D0: - ldr r0, [sp, #0x10] - add sb, sb, #1 - add r0, r0, #0xc - str r0, [sp, #0x10] - cmp sb, #4 - blt _0222C00C - add sl, sl, #1 - cmp sl, #3 - blt _0222BFF8 - mov r0, #0 - mov r1, #0x40 - mov r2, #1 - bl ov18_02243F8C - ldr r3, _0222C17C ; =0x0225329C - mvn r1, #0 - ldr r4, [r3, #0] - mov r2, #0x200 - str r0, [r4, #0x114] - ldr r0, [r3, #0] - mov r3, #0 - ldr r0, [r0, #0x114] - bl ov18_02243BD0 - ldr r0, _0222C17C ; =0x0225329C - mvn r1, #0 - ldr r0, [r0, #0] - mov r2, #2 - ldr r0, [r0, #0x114] - bl ov18_02243DE4 - mov r0, #0 - ldr r1, _0222C190 ; =ov18_0222C220 - mov r2, r0 - mov r3, #0x78 - bl ov18_02246304 - ldr r3, _0222C17C ; =0x0225329C - mov r1, #0 - ldr r4, [r3, #0] - mov r2, #0xc0 - str r0, [r4, #0x118] - ldr r0, [r3, #0] - ldrb r0, [r0, #0x11d] - bl ov18_0222CECC - add sp, sp, #0x24 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0222C17C: .word Unk_ov18_0225329C -_0222C180: .word 0xC1FFFCFF -_0222C184: .word Unk_ov18_02248D38 -_0222C188: .word Unk_ov18_02248D30 -_0222C18C: .word Unk_ov18_02249B54 -_0222C190: .word ov18_0222C220 - arm_func_end ov18_0222BE30 - - arm_func_start ov18_0222C194 -ov18_0222C194: ; 0x0222C194 - stmfd sp!, {r3, lr} - ldr r0, _0222C1C0 ; =0x0225329C - ldr r0, [r0, #0] - ldr r0, [r0, #0x114] - bl ov18_02243B3C - ldr r0, _0222C1C0 ; =0x0225329C - ldr r1, _0222C1C4 ; =ov18_0222D7A8 - ldr r0, [r0, #0] - ldr r0, [r0, #0x118] - bl ov18_022463A4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222C1C0: .word Unk_ov18_0225329C -_0222C1C4: .word ov18_0222D7A8 - arm_func_end ov18_0222C194 - - arm_func_start ov18_0222C1C8 -ov18_0222C1C8: ; 0x0222C1C8 - ldr r0, _0222C1D8 ; =0x0225329C - ldr r0, [r0, #0] - ldrb r0, [r0, #0x11c] - bx lr - ; .align 2, 0 -_0222C1D8: .word Unk_ov18_0225329C - arm_func_end ov18_0222C1C8 - - arm_func_start ov18_0222C1DC -ov18_0222C1DC: ; 0x0222C1DC - ldr r1, _0222C1EC ; =0x0225329C - ldr r1, [r1, #0] - strb r0, [r1, #0x123] - bx lr - ; .align 2, 0 -_0222C1EC: .word Unk_ov18_0225329C - arm_func_end ov18_0222C1DC - - arm_func_start ov18_0222C1F0 -ov18_0222C1F0: ; 0x0222C1F0 - ldr r1, _0222C200 ; =0x0225329C - ldr r1, [r1, #0] - strb r0, [r1, #0x124] - bx lr - ; .align 2, 0 -_0222C200: .word Unk_ov18_0225329C - arm_func_end ov18_0222C1F0 - - arm_func_start ov18_0222C204 -ov18_0222C204: ; 0x0222C204 - ldr r0, _0222C21C ; =0x0225329C - ldr r0, [r0, #0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - bx lr - ; .align 2, 0 -_0222C21C: .word Unk_ov18_0225329C - arm_func_end ov18_0222C204 - - arm_func_start ov18_0222C220 -ov18_0222C220: ; 0x0222C220 - stmfd sp!, {r4, lr} - sub sp, sp, #8 - ldr r2, _0222C2A8 ; =0x0225329C - mov r4, r0 - ldr r3, [r2, #0] - ldr r1, _0222C2AC ; =0x01FF0000 - ldr r0, [r3, #0x30] - ldr r0, [r0, #0] - and r1, r0, r1 - and r0, r0, #0xff - sub r2, r0, #0xc - mov r0, r1, lsr #0x10 - str r0, [sp, #4] - str r2, [sp] - cmp r2, #0x51 - ldrb r0, [r3, #0x11d] - mov r1, #0 - ble _0222C274 - bl ov18_0222CECC - add sp, sp, #8 - ldmia sp!, {r4, pc} -_0222C274: - mov r2, #0x51 - bl ov18_0222CECC - ldr r0, _0222C2A8 ; =0x0225329C - mov r1, #1 - ldr r0, [r0, #0] - mov r2, #0xc0 - ldrb r0, [r0, #0x11d] - bl ov18_0222CECC - ldr r1, _0222C2B0 ; =ov18_0222C2B4 - mov r0, r4 - bl ov18_022463A4 - add sp, sp, #8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0222C2A8: .word Unk_ov18_0225329C -_0222C2AC: .word 0x01FF0000 -_0222C2B0: .word ov18_0222C2B4 - arm_func_end ov18_0222C220 - - arm_func_start ov18_0222C2B4 -ov18_0222C2B4: ; 0x0222C2B4 - stmfd sp!, {r4, lr} - sub sp, sp, #8 - ldr r2, _0222C33C ; =0x0225329C - mov r4, r0 - ldr r3, [r2, #0] - ldr r1, _0222C340 ; =0x01FF0000 - ldr r0, [r3, #0x60] - ldr r0, [r0, #0] - and r1, r0, r1 - and r0, r0, #0xff - sub r2, r0, #0xc - mov r0, r1, lsr #0x10 - str r0, [sp, #4] - str r2, [sp] - cmp r2, #0x67 - ldrb r0, [r3, #0x11d] - mov r1, #1 - ble _0222C308 - bl ov18_0222CECC - add sp, sp, #8 - ldmia sp!, {r4, pc} -_0222C308: - mov r2, #0x67 - bl ov18_0222CECC - ldr r0, _0222C33C ; =0x0225329C - mov r1, #2 - ldr r0, [r0, #0] - mov r2, #0xc0 - ldrb r0, [r0, #0x11d] - bl ov18_0222CECC - ldr r1, _0222C344 ; =ov18_0222C348 - mov r0, r4 - bl ov18_022463A4 - add sp, sp, #8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0222C33C: .word Unk_ov18_0225329C -_0222C340: .word 0x01FF0000 -_0222C344: .word ov18_0222C348 - arm_func_end ov18_0222C2B4 - - arm_func_start ov18_0222C348 -ov18_0222C348: ; 0x0222C348 - stmfd sp!, {r4, lr} - sub sp, sp, #8 - ldr r2, _0222C3D0 ; =0x0225329C - mov r4, r0 - ldr r3, [r2, #0] - ldr r1, _0222C3D4 ; =0x01FF0000 - ldr r0, [r3, #0x90] - ldr r0, [r0, #0] - and r1, r0, r1 - and r0, r0, #0xff - sub r2, r0, #0xc - mov r0, r1, lsr #0x10 - str r0, [sp, #4] - str r2, [sp] - cmp r2, #0x7d - ldrb r0, [r3, #0x11d] - mov r1, #2 - ble _0222C39C - bl ov18_0222CECC - add sp, sp, #8 - ldmia sp!, {r4, pc} -_0222C39C: - mov r2, #0x7d - bl ov18_0222CECC - ldr r0, _0222C3D0 ; =0x0225329C - mov r1, #3 - ldr r0, [r0, #0] - mov r2, #0xc0 - ldrb r0, [r0, #0x11d] - bl ov18_0222CECC - ldr r1, _0222C3D8 ; =ov18_0222C3DC - mov r0, r4 - bl ov18_022463A4 - add sp, sp, #8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0222C3D0: .word Unk_ov18_0225329C -_0222C3D4: .word 0x01FF0000 -_0222C3D8: .word ov18_0222C3DC - arm_func_end ov18_0222C348 - - arm_func_start ov18_0222C3DC -ov18_0222C3DC: ; 0x0222C3DC - stmfd sp!, {r4, lr} - sub sp, sp, #8 - ldr r2, _0222C464 ; =0x0225329C - mov r4, r0 - ldr r3, [r2, #0] - ldr r1, _0222C468 ; =0x01FF0000 - ldr r0, [r3, #0xc0] - ldr r0, [r0, #0] - and r1, r0, r1 - and r0, r0, #0xff - sub r2, r0, #0xc - mov r0, r1, lsr #0x10 - str r0, [sp, #4] - str r2, [sp] - cmp r2, #0x93 - ldrb r0, [r3, #0x11d] - mov r1, #3 - ble _0222C430 - bl ov18_0222CECC - add sp, sp, #8 - ldmia sp!, {r4, pc} -_0222C430: - mov r2, #0x93 - bl ov18_0222CECC - ldr r0, _0222C464 ; =0x0225329C - mov r1, #4 - ldr r0, [r0, #0] - mov r2, #0xc0 - ldrb r0, [r0, #0x11d] - bl ov18_0222CECC - ldr r1, _0222C46C ; =ov18_0222C470 - mov r0, r4 - bl ov18_022463A4 - add sp, sp, #8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0222C464: .word Unk_ov18_0225329C -_0222C468: .word 0x01FF0000 -_0222C46C: .word ov18_0222C470 - arm_func_end ov18_0222C3DC - - arm_func_start ov18_0222C470 -ov18_0222C470: ; 0x0222C470 - stmfd sp!, {r4, lr} - sub sp, sp, #8 - ldr r1, _0222C4F4 ; =0x0225329C - mov r4, r0 - ldr r0, [r1, #0] - add r2, sp, #4 - ldr r0, [r0, #0xfc] - add r3, sp, #0 - mov r1, #0 - bl ov18_02243E44 - ldr r0, [sp] - mov r1, #4 - sub r2, r0, #0xc - str r2, [sp] - cmp r2, #0xaa - ble _0222C4C8 - ldr r0, _0222C4F4 ; =0x0225329C - ldr r0, [r0, #0] - ldrb r0, [r0, #0x11d] - bl ov18_0222CECC - add sp, sp, #8 - ldmia sp!, {r4, pc} -_0222C4C8: - ldr r0, _0222C4F4 ; =0x0225329C - mov r2, #0xaa - ldr r0, [r0, #0] - ldrb r0, [r0, #0x11d] - bl ov18_0222CECC - bl ov18_0222D294 - ldr r1, _0222C4F8 ; =ov18_0222C4FC - mov r0, r4 - bl ov18_022463A4 - add sp, sp, #8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0222C4F4: .word Unk_ov18_0225329C -_0222C4F8: .word ov18_0222C4FC - arm_func_end ov18_0222C470 - - arm_func_start ov18_0222C4FC -ov18_0222C4FC: ; 0x0222C4FC - stmfd sp!, {r3, lr} - bl ov18_0222C514 - bl ov18_0222C6FC - bl ov18_0222CA44 - bl ov18_0222CC9C - ldmia sp!, {r3, pc} - arm_func_end ov18_0222C4FC - - arm_func_start ov18_0222C514 -ov18_0222C514: ; 0x0222C514 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - ldr r0, _0222C6D8 ; =0x02249734 - bl ov18_022455B8 - cmp r0, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, _0222C6DC ; =0x0225329C - mvn r1, #0 - ldr r0, [r0, #0] - ldr r7, _0222C6E0 ; =0x02248D80 - ldr r6, _0222C6E4 ; =0x02248D44 - strb r1, [r0, #0x11e] - mov r4, #0 - add r5, sp, #0 -_0222C550: - mov r0, r7 - mov r1, r6 - mov r2, r5 - bl ov18_02244C50 - mov r0, r5 - bl ov18_022455B8 - cmp r0, #0 - beq _0222C5B0 - ldr r0, _0222C6DC ; =0x0225329C - ldr r0, [r0, #0] - ldrb r0, [r0, #0x124] - cmp r0, #0 - bne _0222C594 - mov r0, #9 - bl ov18_0223E994 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0222C594: - mov r0, #0 - bl ov18_0223E994 - ldr r0, _0222C6DC ; =0x0225329C - add sp, sp, #8 - ldr r0, [r0, #0] - strb r4, [r0, #0x11e] - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0222C5B0: - add r4, r4, #1 - cmp r4, #0x2f - add r7, r7, #4 - blt _0222C550 - ldr r6, _0222C6E8 ; =0x02248D70 - ldr r7, _0222C6EC ; =0x02248D60 - mov r4, #0 - add r5, sp, #0 -_0222C5D0: - mov r0, r7 - mov r1, r6 - mov r2, r5 - bl ov18_02244C50 - mov r0, r5 - bl ov18_022455B8 - cmp r0, #0 - beq _0222C65C - cmp r4, #3 - bne _0222C60C - ldr r0, _0222C6DC ; =0x0225329C - ldr r0, [r0, #0] - ldrb r0, [r0, #0x123] - cmp r0, #0 - beq _0222C628 -_0222C60C: - cmp r4, #2 - bne _0222C638 - ldr r0, _0222C6DC ; =0x0225329C - ldr r0, [r0, #0] - ldrb r0, [r0, #0x124] - cmp r0, #0 - bne _0222C638 -_0222C628: - mov r0, #9 - bl ov18_0223E994 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0222C638: - ldr r0, _0222C6F0 ; =0x02249B60 - ldr r0, [r0, r4, lsl #2] - bl ov18_0223E994 - ldr r0, _0222C6DC ; =0x0225329C - add r1, r4, #0x2f - ldr r0, [r0, #0] - add sp, sp, #8 - strb r1, [r0, #0x11e] - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0222C65C: - add r4, r4, #1 - cmp r4, #4 - add r6, r6, #4 - add r7, r7, #4 - blt _0222C5D0 - ldr r6, _0222C6F4 ; =0x02248D58 - ldr r5, _0222C6F8 ; =0x02248D40 - mov r7, #0 - add r4, sp, #0 -_0222C680: - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl ov18_02244C50 - mov r0, r4 - bl ov18_022455B8 - cmp r0, #0 - beq _0222C6C0 - mov r0, #0 - bl ov18_0223E994 - ldr r0, _0222C6DC ; =0x0225329C - add r1, r7, #0x33 - ldr r0, [r0, #0] - add sp, sp, #8 - strb r1, [r0, #0x11e] - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0222C6C0: - add r7, r7, #1 - cmp r7, #2 - add r6, r6, #4 - blt _0222C680 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_0222C6D8: .word Unk_ov18_02249734 -_0222C6DC: .word Unk_ov18_0225329C -_0222C6E0: .word Unk_ov18_02248D80 -_0222C6E4: .word Unk_ov18_02248D44 -_0222C6E8: .word Unk_ov18_02248D70 -_0222C6EC: .word Unk_ov18_02248D60 -_0222C6F0: .word Unk_ov18_02249B60 -_0222C6F4: .word Unk_ov18_02248D58 -_0222C6F8: .word Unk_ov18_02248D40 - arm_func_end ov18_0222C514 - - arm_func_start ov18_0222C6FC -ov18_0222C6FC: ; 0x0222C6FC - stmfd sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - ldr r1, _0222C9A8 ; =0x0225329C - ldr r0, _0222C9AC ; =0x02249734 - ldr r1, [r1, #0] - mov r2, #0 - strb r2, [r1, #0x11c] - bl ov18_022456C8 - cmp r0, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r7, _0222C9B0 ; =0x02248D80 - ldr r6, _0222C9B4 ; =0x02248D44 - mov r4, #0 - add r5, sp, #0 -_0222C738: - mov r0, r7 - mov r1, r6 - mov r2, r5 - bl ov18_02244C50 - mov r0, r5 - bl ov18_022456C8 - cmp r0, #0 - beq _0222C7B8 - ldr r1, _0222C9A8 ; =0x0225329C - ldr r3, [r1, #0] - add r0, r3, #0x100 - ldrsb r0, [r0, #0x1e] - cmp r0, r4 - addne sp, sp, #8 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldrb r2, [r3, #0x11d] - ldr r0, _0222C9B8 ; =0x02249B48 - ldr r0, [r0, r2, lsl #2] - ldrb r0, [r0, r4] - strb r0, [r3, #0x11c] - ldr r0, [r1, #0] - ldrb r0, [r0, #0x11d] - cmp r0, #1 - bne _0222C7A0 - mov r0, #0 - bl ov18_0222D148 -_0222C7A0: - ldr r0, _0222C9A8 ; =0x0225329C - ldr r0, [r0, #0] - strb r4, [r0, #0x121] - bl ov18_0222D294 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0222C7B8: - add r4, r4, #1 - cmp r4, #0x2f - add r7, r7, #4 - blt _0222C738 - ldr r6, _0222C9BC ; =0x02248D78 - ldr r7, _0222C9C0 ; =0x02248D68 - mov r4, #2 - add r5, sp, #0 -_0222C7D8: - mov r0, r7 - mov r1, r6 - mov r2, r5 - bl ov18_02244C50 - mov r0, r5 - bl ov18_022456C8 - cmp r0, #0 - beq _0222C858 - ldr r1, _0222C9A8 ; =0x0225329C - add r2, r4, #0x2f - ldr r3, [r1, #0] - add r0, r3, #0x100 - ldrsb r0, [r0, #0x1e] - cmp r0, r2 - addne sp, sp, #8 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, _0222C9C4 ; =0x02248FE4 - ldrb r0, [r0, r4] - strb r0, [r3, #0x11c] - ldr r0, [r1, #0] - ldrb r0, [r0, #0x11d] - cmp r0, #1 - bne _0222C83C - mov r0, #0 - bl ov18_0222D148 -_0222C83C: - ldr r0, _0222C9A8 ; =0x0225329C - add r1, r4, #0x2f - ldr r0, [r0, #0] - strb r1, [r0, #0x121] - bl ov18_0222D294 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0222C858: - add r4, r4, #1 - cmp r4, #4 - add r6, r6, #4 - add r7, r7, #4 - blt _0222C7D8 - ldr r7, _0222C9C8 ; =0x02248D58 - ldr r6, _0222C9CC ; =0x02248D40 - mov r4, #0 - add r5, sp, #0 -_0222C87C: - mov r0, r7 - mov r1, r6 - mov r2, r5 - bl ov18_02244C50 - mov r0, r5 - bl ov18_022456C8 - cmp r0, #0 - beq _0222C8DC - ldr r1, _0222C9A8 ; =0x0225329C - add r2, r4, #0x33 - ldr r3, [r1, #0] - add r0, r3, #0x100 - ldrsb r0, [r0, #0x1e] - cmp r0, r2 - addne sp, sp, #8 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, _0222C9D0 ; =0x02248D34 - ldrb r0, [r0, r4] - strb r0, [r3, #0x11c] - ldr r0, [r1, #0] - strb r2, [r0, #0x121] - bl ov18_0222D294 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0222C8DC: - add r4, r4, #1 - cmp r4, #2 - add r7, r7, #4 - blt _0222C87C - ldr r0, _0222C9D4 ; =0x02248D60 - ldr r1, _0222C9D8 ; =0x02248D70 - add r2, sp, #0 - bl ov18_02244C50 - add r0, sp, #0 - bl ov18_022456C8 - cmp r0, #0 - beq _0222C948 - ldr r0, _0222C9A8 ; =0x0225329C - ldr r0, [r0, #0] - add r0, r0, #0x100 - ldrsb r0, [r0, #0x1e] - cmp r0, #0x2f - addne sp, sp, #8 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - bl ov18_0222C9E4 - ldr r0, _0222C9A8 ; =0x0225329C - mov r1, #0x2f - ldr r0, [r0, #0] - strb r1, [r0, #0x121] - bl ov18_0222D294 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0222C948: - ldr r0, _0222C9DC ; =0x02248D64 - ldr r1, _0222C9E0 ; =0x02248D74 - add r2, sp, #0 - bl ov18_02244C50 - add r0, sp, #0 - bl ov18_022456C8 - cmp r0, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, _0222C9A8 ; =0x0225329C - ldr r0, [r0, #0] - add r0, r0, #0x100 - ldrsb r0, [r0, #0x1e] - cmp r0, #0x30 - addne sp, sp, #8 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - bl ov18_0222CA14 - ldr r0, _0222C9A8 ; =0x0225329C - mov r1, #0x30 - ldr r0, [r0, #0] - strb r1, [r0, #0x121] - bl ov18_0222D294 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_0222C9A8: .word Unk_ov18_0225329C -_0222C9AC: .word Unk_ov18_02249734 -_0222C9B0: .word Unk_ov18_02248D80 -_0222C9B4: .word Unk_ov18_02248D44 -_0222C9B8: .word Unk_ov18_02249B48 -_0222C9BC: .word 0x02248D78 -_0222C9C0: .word 0x02248D68 -_0222C9C4: .word Unk_ov18_02248FE4 -_0222C9C8: .word Unk_ov18_02248D58 -_0222C9CC: .word Unk_ov18_02248D40 -_0222C9D0: .word Unk_ov18_02248D34 -_0222C9D4: .word Unk_ov18_02248D60 -_0222C9D8: .word Unk_ov18_02248D70 -_0222C9DC: .word 0x02248D64 -_0222C9E0: .word 0x02248D74 - arm_func_end ov18_0222C6FC - - arm_func_start ov18_0222C9E4 -ov18_0222C9E4: ; 0x0222C9E4 - stmfd sp!, {r3, lr} - ldr r0, _0222CA10 ; =0x0225329C - ldr r0, [r0, #0] - ldrb r0, [r0, #0x11d] - cmp r0, #2 - moveq r0, #0 - movne r0, #2 - bl ov18_0222D148 - mov r0, #1 - bl ov18_0223E994 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222CA10: .word Unk_ov18_0225329C - arm_func_end ov18_0222C9E4 - - arm_func_start ov18_0222CA14 -ov18_0222CA14: ; 0x0222CA14 - stmfd sp!, {r3, lr} - ldr r0, _0222CA40 ; =0x0225329C - ldr r0, [r0, #0] - ldrb r0, [r0, #0x11d] - cmp r0, #1 - movne r0, #1 - moveq r0, #0 - bl ov18_0222D148 - mov r0, #1 - bl ov18_0223E994 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222CA40: .word Unk_ov18_0225329C - arm_func_end ov18_0222CA14 - - arm_func_start ov18_0222CA44 -ov18_0222CA44: ; 0x0222CA44 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - ldr r0, _0222CC28 ; =0x02249734 - bl ov18_02245530 - cmp r0, #0 - beq _0222CC08 - ldr r7, _0222CC2C ; =0x02248D80 - ldr r5, _0222CC30 ; =0x02248D44 - mov r6, #0 - add r4, sp, #0 -_0222CA6C: - mov r0, r7 - mov r1, r5 - mov r2, r4 - bl ov18_02244C50 - mov r0, r4 - bl ov18_02245530 - cmp r0, #0 - beq _0222CAB0 - ldr r0, _0222CC34 ; =0x0225329C - ldr r0, [r0, #0] - add r0, r0, #0x100 - ldrsb r0, [r0, #0x1e] - cmp r0, r6 - bne _0222CC08 - mov r0, r6 - bl ov18_0222CC48 - b _0222CC10 -_0222CAB0: - add r6, r6, #1 - cmp r6, #0x2f - add r7, r7, #4 - blt _0222CA6C - ldr r6, _0222CC38 ; =0x02248D78 - ldr r7, _0222CC3C ; =0x02248D68 - mov r4, #2 - add r5, sp, #0 -_0222CAD0: - mov r0, r7 - mov r1, r6 - mov r2, r5 - bl ov18_02244C50 - mov r0, r5 - bl ov18_02245530 - cmp r0, #0 - beq _0222CB90 - ldr r1, _0222CC34 ; =0x0225329C - add r0, r4, #0x2f - ldr r1, [r1, #0] - add r1, r1, #0x100 - ldrsb r1, [r1, #0x1e] - cmp r1, r0 - bne _0222CC08 - bl ov18_0222CC48 - cmp r4, #3 - addne sp, sp, #8 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, _0222CC34 ; =0x0225329C - ldr r2, [r0, #0] - ldrb r1, [r2, #0x122] - add r1, r1, #1 - strb r1, [r2, #0x122] - ldr r2, [r0, #0] - ldrb r1, [r2, #0x122] - cmp r1, #0x28 - addlo sp, sp, #8 - ldmloia sp!, {r3, r4, r5, r6, r7, pc} - ldrb r1, [r2, #0x123] - cmp r1, #0 - bne _0222CB70 - mov r0, #9 - bl ov18_0223E994 - ldr r0, _0222CC34 ; =0x0225329C - mvn r1, #0 - ldr r0, [r0, #0] - add sp, sp, #8 - strb r1, [r0, #0x11e] - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0222CB70: - mov r1, #0x80 - strb r1, [r2, #0x11c] - ldr r1, [r0, #0] - add sp, sp, #8 - ldrb r0, [r1, #0x122] - sub r0, r0, #7 - strb r0, [r1, #0x122] - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0222CB90: - add r4, r4, #1 - cmp r4, #4 - add r6, r6, #4 - add r7, r7, #4 - blt _0222CAD0 - ldr r6, _0222CC40 ; =0x02248D58 - ldr r5, _0222CC44 ; =0x02248D40 - mov r7, #0 - add r4, sp, #0 -_0222CBB4: - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl ov18_02244C50 - mov r0, r4 - bl ov18_02245530 - cmp r0, #0 - beq _0222CBF8 - ldr r1, _0222CC34 ; =0x0225329C - add r0, r7, #0x33 - ldr r1, [r1, #0] - add r1, r1, #0x100 - ldrsb r1, [r1, #0x1e] - cmp r1, r0 - bne _0222CC08 - bl ov18_0222CC48 - b _0222CC10 -_0222CBF8: - add r7, r7, #1 - cmp r7, #2 - add r6, r6, #4 - blt _0222CBB4 -_0222CC08: - mvn r0, #0 - bl ov18_0222CC48 -_0222CC10: - ldr r0, _0222CC34 ; =0x0225329C - mov r1, #0 - ldr r0, [r0, #0] - strb r1, [r0, #0x122] - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_0222CC28: .word Unk_ov18_02249734 -_0222CC2C: .word Unk_ov18_02248D80 -_0222CC30: .word Unk_ov18_02248D44 -_0222CC34: .word Unk_ov18_0225329C -_0222CC38: .word 0x02248D78 -_0222CC3C: .word 0x02248D68 -_0222CC40: .word Unk_ov18_02248D58 -_0222CC44: .word Unk_ov18_02248D40 - arm_func_end ov18_0222CA44 - - arm_func_start ov18_0222CC48 -ov18_0222CC48: ; 0x0222CC48 - stmfd sp!, {r4, lr} - ldr r1, _0222CC98 ; =0x0225329C - mov r4, r0 - ldr r1, [r1, #0] - add r1, r1, #0x100 - ldrsb r1, [r1, #0x1f] - cmp r4, r1 - ldmeqia sp!, {r4, pc} - mov r1, #1 - bl ov18_0222D1CC - ldr r0, _0222CC98 ; =0x0225329C - mov r1, #0 - ldr r0, [r0, #0] - add r0, r0, #0x100 - ldrsb r0, [r0, #0x1f] - bl ov18_0222D1CC - ldr r0, _0222CC98 ; =0x0225329C - ldr r0, [r0, #0] - strb r4, [r0, #0x11f] - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0222CC98: .word Unk_ov18_0225329C - arm_func_end ov18_0222CC48 - - arm_func_start ov18_0222CC9C -ov18_0222CC9C: ; 0x0222CC9C - stmfd sp!, {r4, lr} - mov r0, #0x20 - bl ov18_022454B0 - cmp r0, #0 - beq _0222CCB8 - mov r0, #0 - bl ov18_0222D370 -_0222CCB8: - mov r0, #0x40 - bl ov18_022454B0 - cmp r0, #0 - beq _0222CCD0 - mov r0, #1 - bl ov18_0222D370 -_0222CCD0: - mov r0, #0x10 - bl ov18_022454B0 - cmp r0, #0 - beq _0222CCE8 - mov r0, #2 - bl ov18_0222D370 -_0222CCE8: - mov r0, #0x80 - bl ov18_022454B0 - cmp r0, #0 - beq _0222CD00 - mov r0, #3 - bl ov18_0222D370 -_0222CD00: - mov r0, #1 - bl ov18_02245470 - cmp r0, #0 - beq _0222CE18 - ldr r2, _0222CEBC ; =0x0225329C - ldr r0, [r2, #0] - add r1, r0, #0x100 - ldrsb r4, [r1, #0x21] - cmp r4, #0x2f - bge _0222CD70 - ldrb r1, [r0, #0x124] - cmp r1, #0 - bne _0222CD40 - mov r0, #9 - bl ov18_0223E994 - ldmia sp!, {r4, pc} -_0222CD40: - ldrb r3, [r0, #0x11d] - ldr r1, _0222CEC0 ; =0x02249B48 - ldr r1, [r1, r3, lsl #2] - ldrb r1, [r1, r4] - strb r1, [r0, #0x11c] - ldr r0, [r2, #0] - ldrb r0, [r0, #0x11d] - cmp r0, #1 - ldmneia sp!, {r4, pc} - mov r0, #0 - bl ov18_0222D148 - ldmia sp!, {r4, pc} -_0222CD70: - sub r1, r4, #0x2f - cmp r1, #4 - bge _0222CE08 - cmp r1, #3 - addls pc, pc, r1, lsl #2 - b _0222CDD8 -_0222CD88: ; jump table - b _0222CD98 ; case 0 - b _0222CDA0 ; case 1 - b _0222CDA8 ; case 2 - b _0222CDC0 ; case 3 -_0222CD98: - bl ov18_0222C9E4 - ldmia sp!, {r4, pc} -_0222CDA0: - bl ov18_0222CA14 - ldmia sp!, {r4, pc} -_0222CDA8: - ldrb r1, [r0, #0x124] - cmp r1, #0 - bne _0222CDD8 - mov r0, #9 - bl ov18_0223E994 - ldmia sp!, {r4, pc} -_0222CDC0: - ldrb r1, [r0, #0x123] - cmp r1, #0 - bne _0222CDD8 - mov r0, #9 - bl ov18_0223E994 - ldmia sp!, {r4, pc} -_0222CDD8: - ldrb r0, [r0, #0x11d] - cmp r0, #1 - bne _0222CDEC - mov r0, #0 - bl ov18_0222D148 -_0222CDEC: - ldr r1, _0222CEC4 ; =0x02248FE4 - sub r2, r4, #0x2f - ldr r0, _0222CEBC ; =0x0225329C - ldrb r1, [r1, r2] - ldr r0, [r0, #0] - strb r1, [r0, #0x11c] - ldmia sp!, {r4, pc} -_0222CE08: - ldr r1, _0222CEC8 ; =0x02248D34 - sub r2, r4, #0x33 - ldrb r1, [r1, r2] - strb r1, [r0, #0x11c] -_0222CE18: - mov r0, #2 - bl ov18_022454B0 - cmp r0, #0 - beq _0222CE70 - ldr r0, _0222CEBC ; =0x0225329C - ldr r1, [r0, #0] - ldrb r0, [r1, #0x123] - cmp r0, #0 - bne _0222CE64 - ldrb r0, [r1, #0x125] - cmp r0, #0 - ldmneia sp!, {r4, pc} - mov r0, #9 - bl ov18_0223E994 - ldr r0, _0222CEBC ; =0x0225329C - mov r1, #1 - ldr r0, [r0, #0] - strb r1, [r0, #0x125] - ldmia sp!, {r4, pc} -_0222CE64: - mov r0, #0x80 - strb r0, [r1, #0x11c] - b _0222CE90 -_0222CE70: - mov r0, #2 - bl ov18_022454F0 - cmp r0, #0 - beq _0222CE90 - ldr r0, _0222CEBC ; =0x0225329C - mov r1, #0 - ldr r0, [r0, #0] - strb r1, [r0, #0x125] -_0222CE90: - mov r0, #0x400 - bl ov18_02245470 - cmp r0, #0 - beq _0222CEA4 - bl ov18_0222C9E4 -_0222CEA4: - mov r0, #0x800 - bl ov18_02245470 - cmp r0, #0 - ldmeqia sp!, {r4, pc} - bl ov18_0222CA14 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0222CEBC: .word Unk_ov18_0225329C -_0222CEC0: .word Unk_ov18_02249B48 -_0222CEC4: .word Unk_ov18_02248FE4 -_0222CEC8: .word Unk_ov18_02248D34 - arm_func_end ov18_0222CC9C - - arm_func_start ov18_0222CECC -ov18_0222CECC: ; 0x0222CECC - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x18 - ldr r3, _0222D12C ; =0x02248D3C - mov sl, r1 - ldrb r5, [r3, #0x11] - ldrb r4, [r3, #0x12] - mov r1, #0xc - mul r1, sl, r1 - strb r5, [sp, #0x12] - strb r4, [sp, #0x13] - ldrb r4, [r3, #0x14] - ldrb r5, [r3, #0x13] - str r1, [sp, #4] - strb r4, [sp, #0x15] - strb r5, [sp, #0x14] - ldrb r1, [r3, #0x15] - mov sb, r2 - add r4, sp, #0x12 - strb r1, [sp, #0x16] - ldrb r1, [r4, sl] - ldrb r6, [r3, #0x16] - ldrb r2, [r3, #0x17] - cmp r1, #0 - ldr r5, [sp, #4] - strb r6, [sp, #0xd] - strb r2, [sp, #0xe] - ldrb r7, [r3, #0x18] - ldrb r2, [r3, #0x19] - mov r6, #0 - strb r7, [sp, #0xf] - strb r2, [sp, #0x10] - ldrb r1, [r3, #0x1a] - strb r1, [sp, #0x11] - ldrb r2, [r3, #0xc] - ldrb r1, [r3, #0xd] - strb r2, [sp, #8] - strb r1, [sp, #9] - ldrb r2, [r3, #0xe] - ldrb r1, [r3, #0xf] - strb r2, [sp, #0xa] - strb r1, [sp, #0xb] - ldrb r1, [r3, #0x10] - strb r1, [sp, #0xc] - ble _0222CFE8 - ldr r1, _0222D130 ; =0x02248D80 - ldr fp, _0222D134 ; =0x0225329C - ldr lr, _0222D138 ; =0xC1FFFCFF - ldr r8, _0222D13C ; =0xFE00FF00 - and r7, sb, #0xff -_0222CF90: - ldr r2, [fp] - mov r3, r5, lsl #2 - add r2, r2, r5, lsl #2 - ldr r2, [r2, #0x30] - ldrh r3, [r1, r3] - ldr ip, [r2] - add r6, r6, #1 - and ip, ip, lr - str ip, [r2] - mov r2, r3, lsl #0x17 - ldr r3, [fp] - add r3, r3, r5, lsl #2 - ldr r3, [r3, #0x30] - add r5, r5, #1 - ldr ip, [r3] - and ip, ip, r8 - orr ip, ip, r7 - orr r2, ip, r2, lsr #7 - str r2, [r3, #0] - ldrb r2, [r4, sl] - cmp r6, r2 - blt _0222CF90 -_0222CFE8: - cmp sl, #4 - bge _0222D028 - ldr r1, _0222D134 ; =0x0225329C - ldr r3, _0222D130 ; =0x02248D80 - ldr r4, [r1, #0] - ldr r1, [sp, #4] - mov r2, #2 - mov r1, r1, lsl #2 - str r2, [sp] - add r0, r4, r0, lsl #4 - add r2, r4, sl, lsl #2 - ldrh r1, [r3, r1] - ldr r3, [r2, #0x104] - ldr r0, [r0, sl, lsl #2] - mov r2, sb - bl ov18_02244B70 -_0222D028: - add r0, sl, #3 - mov r1, #4 - bl FX_ModS32 - add r3, sp, #0xd - ldrb r1, [r3, sl] - mov r5, #0 - cmp r1, #0 - ble _0222D0B0 - ldr r2, _0222D140 ; =0x02248D60 - mov r1, r0, lsl #2 - ldrh r0, [r2, r1] - ldr r8, _0222D134 ; =0x0225329C - ldr r6, _0222D138 ; =0xC1FFFCFF - ldr r7, _0222D13C ; =0xFE00FF00 - and r4, sb, #0xff - mov r2, r0, lsl #0x17 -_0222D068: - ldr r0, [r8] - add r5, r5, #1 - add r0, r1, r0 - ldr fp, [r0, #0xec] - ldr r0, [fp] - and r0, r0, r6 - str r0, [fp] - ldr r0, [r8] - add r0, r1, r0 - ldr r0, [r0, #0xec] - ldr fp, [r0] - and fp, fp, r7 - orr fp, fp, r4 - orr fp, fp, r2, lsr #7 - str fp, [r0] - ldrb r0, [r3, sl] - cmp r5, r0 - blt _0222D068 -_0222D0B0: - add r7, sp, #8 - ldrb r0, [r7, sl] - mov r8, #0 - cmp r0, #0 - addle sp, sp, #0x18 - ldmleia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r5, _0222D144 ; =0x02248D58 - ldr r4, _0222D134 ; =0x0225329C - mvn r6, #0 - mov fp, r8 -_0222D0D8: - ldr r0, [r4, #0] - mov r1, r6 - add r0, r0, r8, lsl #2 - ldr r0, [r0, #0xfc] - mov r2, fp - mov r3, fp - bl ov18_02243BD0 - ldr r0, [r4, #0] - mov r1, r8, lsl #2 - add r0, r0, r8, lsl #2 - ldr r0, [r0, #0xfc] - ldrh r2, [r5, r1] - mov r1, r6 - mov r3, sb - bl ov18_02243CF4 - ldrb r0, [r7, sl] - add r8, r8, #1 - cmp r8, r0 - blt _0222D0D8 - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0222D12C: .word Unk_ov18_02248D3C -_0222D130: .word Unk_ov18_02248D80 -_0222D134: .word Unk_ov18_0225329C -_0222D138: .word 0xC1FFFCFF -_0222D13C: .word 0xFE00FF00 -_0222D140: .word Unk_ov18_02248D60 -_0222D144: .word Unk_ov18_02248D58 - arm_func_end ov18_0222CECC - - arm_func_start ov18_0222D148 -ov18_0222D148: ; 0x0222D148 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r1, _0222D1C4 ; =0x0225329C - mov r5, #0 - ldr r1, [r1, #0] - mov r8, r0 - ldr sb, _0222D1C8 ; =0x02248D80 - mov r6, r5 - mov r4, r5 - mov r7, r5 - strb r8, [r1, #0x11d] -_0222D170: - add r0, sb, r7, lsl #2 - ldrh r2, [r0, #2] - mov r0, r8 - mov r1, r4 - bl ov18_0222CECC - add r4, r4, #1 - cmp r4, #4 - add r7, r7, #0xc - blt _0222D170 - cmp r8, #2 - moveq r5, #1 - beq _0222D1A8 - cmp r8, #1 - moveq r6, #1 -_0222D1A8: - mov r1, r5 - mov r0, #0x2f - bl ov18_0222D1CC - mov r1, r6 - mov r0, #0x30 - bl ov18_0222D1CC - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ; .align 2, 0 -_0222D1C4: .word Unk_ov18_0225329C -_0222D1C8: .word Unk_ov18_02248D80 - arm_func_end ov18_0222D148 - - arm_func_start ov18_0222D1CC -ov18_0222D1CC: ; 0x0222D1CC - stmfd sp!, {r3, lr} - cmp r0, #0 - ldmltia sp!, {r3, pc} - cmp r0, #0x2f - bge _0222D218 - ldr r2, _0222D288 ; =0x0225329C - ldr r3, _0222D28C ; =0x02248D28 - ldr r2, [r2, #0] - ldrb r1, [r3, r1] - add r0, r2, r0, lsl #2 - ldr r2, [r0, #0x30] - ldr r0, [r2, #0] - bic r0, r0, #0xc00 - str r0, [r2, #0] - ldrh r0, [r2, #4] - bic r0, r0, #0xf000 - orr r0, r0, r1, lsl #12 - strh r0, [r2, #4] - ldmia sp!, {r3, pc} -_0222D218: - sub ip, r0, #0x2f - cmp ip, #4 - bge _0222D25C - ldr r0, _0222D288 ; =0x0225329C - ldr r2, _0222D28C ; =0x02248D28 - ldr r3, [r0, #0] - ldrb r0, [r2, r1] - add r1, r3, ip, lsl #2 - ldr r2, [r1, #0xec] - ldr r1, [r2, #0] - bic r1, r1, #0xc00 - str r1, [r2, #0] - ldrh r1, [r2, #4] - bic r1, r1, #0xf000 - orr r0, r1, r0, lsl #12 - strh r0, [r2, #4] - ldmia sp!, {r3, pc} -_0222D25C: - ldr r2, _0222D288 ; =0x0225329C - ldr r3, _0222D290 ; =0x02248D2C - ldr r2, [r2, #0] - sub r0, r0, #0x33 - add r0, r2, r0, lsl #2 - ldrb r3, [r3, r1] - ldr r0, [r0, #0xfc] - mvn r1, #0 - mov r2, #0 - bl ov18_02243C74 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222D288: .word Unk_ov18_0225329C -_0222D28C: .word Unk_ov18_02248D28 -_0222D290: .word Unk_ov18_02248D2C - arm_func_end ov18_0222D1CC - - arm_func_start ov18_0222D294 -ov18_0222D294: ; 0x0222D294 - stmfd sp!, {r4, lr} - ldr r0, _0222D364 ; =0x0225329C - ldr r1, [r0, #0] - add r0, r1, #0x100 - ldrsb r0, [r0, #0x21] - sub r0, r0, #0x2f - cmp r0, #5 - addls pc, pc, r0, lsl #2 - b _0222D2F8 -_0222D2B8: ; jump table - b _0222D2D0 ; case 0 - b _0222D2D8 ; case 1 - b _0222D2E0 ; case 2 - b _0222D2E8 ; case 3 - b _0222D2F0 ; case 4 - b _0222D2F0 ; case 5 -_0222D2D0: - mov r4, #0x42 - b _0222D2FC -_0222D2D8: - mov r4, #0x41 - b _0222D2FC -_0222D2E0: - mov r4, #0x43 - b _0222D2FC -_0222D2E8: - mov r4, #0x41 - b _0222D2FC -_0222D2F0: - mov r4, #0x45 - b _0222D2FC -_0222D2F8: - mov r4, #0x40 -_0222D2FC: - ldr r0, [r1, #0x114] - mov r1, #0 - bl ov18_02243BBC - mov r2, r0 - mov r1, r4 - mov r0, #0 - bl ov18_02243ECC - ldr r0, _0222D364 ; =0x0225329C - mvn r1, #0 - ldr r0, [r0, #0] - mov r2, #2 - ldr r0, [r0, #0x114] - bl ov18_02243DE4 - ldr r0, _0222D364 ; =0x0225329C - ldr r2, _0222D368 ; =0x02248E3C - ldr r3, [r0, #0] - mvn r1, #0 - add r0, r3, #0x100 - ldrsb ip, [r0, #0x21] - ldr r0, [r3, #0x114] - ldr r3, _0222D36C ; =0x02248E3E - mov ip, ip, lsl #2 - ldrh r2, [r2, ip] - ldrh r3, [r3, ip] - bl ov18_02243CF4 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0222D364: .word Unk_ov18_0225329C -_0222D368: .word Unk_ov18_02248E3C -_0222D36C: .word 0x02248E3E - arm_func_end ov18_0222D294 - - arm_func_start ov18_0222D370 -ov18_0222D370: ; 0x0222D370 - stmfd sp!, {r3, lr} - ldr r2, _0222D7A0 ; =0x0225329C - ldr r3, _0222D7A4 ; =0x02248F10 - ldr ip, [r2] - add r1, ip, #0x100 - ldrsb lr, [r1, #0x21] - add r1, r3, lr, lsl #2 - ldrsb r1, [r0, r1] - strb r1, [ip, #0x121] - ldr r1, [r2, #0] - add r2, r1, #0x100 - ldrsb r3, [r2, #0x21] - cmp r3, #0x2e - cmpeq r0, #3 - streqb lr, [r1, #0x120] - beq _0222D790 - cmp r3, #0x33 - bne _0222D3C8 - cmp r0, #1 - cmpne r0, #3 - streqb lr, [r1, #0x120] - beq _0222D790 -_0222D3C8: - cmp r3, #0x34 - bne _0222D3E8 - cmp r0, #1 - cmpne r0, #3 - bne _0222D3E8 - cmp lr, #0x2e - strneb lr, [r1, #0x120] - b _0222D790 -_0222D3E8: - mvn r2, #0 - cmp r3, r2 - bne _0222D418 - add r0, r1, #0x100 - ldrsb r0, [r0, #0x20] - cmp r0, #0x23 - cmpne r0, #0x32 - moveq r0, #0x23 - streqb r0, [r1, #0x121] - movne r0, #0x22 - strneb r0, [r1, #0x121] - b _0222D790 -_0222D418: - sub r0, r2, #1 - cmp r3, r0 - bne _0222D4D8 - add r0, r1, #0x100 - ldrsb r0, [r0, #0x20] - cmp r0, #0x26 - bgt _0222D470 - bge _0222D4A8 - cmp r0, #5 - bgt _0222D464 - cmp r0, #0 - addge pc, pc, r0, lsl #2 - b _0222D4CC -_0222D44C: ; jump table - b _0222D490 ; case 0 - b _0222D49C ; case 1 - b _0222D4CC ; case 2 - b _0222D4A8 ; case 3 - b _0222D4B4 ; case 4 - b _0222D4C0 ; case 5 -_0222D464: - cmp r0, #0x24 - beq _0222D49C - b _0222D4CC -_0222D470: - cmp r0, #0x28 - bgt _0222D488 - bge _0222D4C0 - cmp r0, #0x27 - beq _0222D4B4 - b _0222D4CC -_0222D488: - cmp r0, #0x31 - bne _0222D4CC -_0222D490: - mov r0, #0x31 - strb r0, [r1, #0x121] - b _0222D790 -_0222D49C: - mov r0, #0x24 - strb r0, [r1, #0x121] - b _0222D790 -_0222D4A8: - mov r0, #0x26 - strb r0, [r1, #0x121] - b _0222D790 -_0222D4B4: - mov r0, #0x27 - strb r0, [r1, #0x121] - b _0222D790 -_0222D4C0: - mov r0, #0x28 - strb r0, [r1, #0x121] - b _0222D790 -_0222D4CC: - mov r0, #0x25 - strb r0, [r1, #0x121] - b _0222D790 -_0222D4D8: - sub r0, r2, #2 - cmp r3, r0 - bne _0222D5D0 - add r0, r1, #0x100 - ldrsb r0, [r0, #0x20] - cmp r0, #0x23 - bgt _0222D548 - bge _0222D5B8 - cmp r0, #0xb - bgt _0222D53C - cmp r0, #0 - addge pc, pc, r0, lsl #2 - b _0222D5C4 -_0222D50C: ; jump table - b _0222D5C4 ; case 0 - b _0222D5C4 ; case 1 - b _0222D5C4 ; case 2 - b _0222D5C4 ; case 3 - b _0222D5C4 ; case 4 - b _0222D5C4 ; case 5 - b _0222D588 ; case 6 - b _0222D594 ; case 7 - b _0222D5C4 ; case 8 - b _0222D5A0 ; case 9 - b _0222D5AC ; case 10 - b _0222D5B8 ; case 11 -_0222D53C: - cmp r0, #0x22 - beq _0222D5B8 - b _0222D5C4 -_0222D548: - cmp r0, #0x2a - bgt _0222D560 - bge _0222D594 - cmp r0, #0x29 - beq _0222D588 - b _0222D5C4 -_0222D560: - cmp r0, #0x32 - bgt _0222D5C4 - cmp r0, #0x2c - blt _0222D5C4 - beq _0222D5A0 - cmp r0, #0x2d - beq _0222D5AC - cmp r0, #0x32 - beq _0222D5B8 - b _0222D5C4 -_0222D588: - mov r0, #0x29 - strb r0, [r1, #0x121] - b _0222D790 -_0222D594: - mov r0, #0x2a - strb r0, [r1, #0x121] - b _0222D790 -_0222D5A0: - mov r0, #0x2c - strb r0, [r1, #0x121] - b _0222D790 -_0222D5AC: - mov r0, #0x2d - strb r0, [r1, #0x121] - b _0222D790 -_0222D5B8: - mov r0, #0x2e - strb r0, [r1, #0x121] - b _0222D790 -_0222D5C4: - mov r0, #0x2b - strb r0, [r1, #0x121] - b _0222D790 -_0222D5D0: - sub r0, r2, #3 - cmp r3, r0 - bne _0222D690 - add r0, r1, #0x100 - ldrsb r0, [r0, #0x20] - cmp r0, #0x26 - bgt _0222D628 - bge _0222D660 - cmp r0, #5 - bgt _0222D61C - cmp r0, #0 - addge pc, pc, r0, lsl #2 - b _0222D684 -_0222D604: ; jump table - b _0222D648 ; case 0 - b _0222D654 ; case 1 - b _0222D684 ; case 2 - b _0222D660 ; case 3 - b _0222D66C ; case 4 - b _0222D678 ; case 5 -_0222D61C: - cmp r0, #0x24 - beq _0222D654 - b _0222D684 -_0222D628: - cmp r0, #0x28 - bgt _0222D640 - bge _0222D678 - cmp r0, #0x27 - beq _0222D66C - b _0222D684 -_0222D640: - cmp r0, #0x31 - bne _0222D684 -_0222D648: - mov r0, #0 - strb r0, [r1, #0x121] - b _0222D790 -_0222D654: - mov r0, #1 - strb r0, [r1, #0x121] - b _0222D790 -_0222D660: - mov r0, #3 - strb r0, [r1, #0x121] - b _0222D790 -_0222D66C: - mov r0, #4 - strb r0, [r1, #0x121] - b _0222D790 -_0222D678: - mov r0, #5 - strb r0, [r1, #0x121] - b _0222D790 -_0222D684: - mov r0, #2 - strb r0, [r1, #0x121] - b _0222D790 -_0222D690: - sub r0, r2, #4 - cmp r3, r0 - bne _0222D790 - add r0, r1, #0x100 - ldrsb r0, [r0, #0x20] - cmp r0, #0x23 - bgt _0222D700 - bge _0222D77C - cmp r0, #0xb - bgt _0222D6F4 - cmp r0, #0 - addge pc, pc, r0, lsl #2 - b _0222D788 -_0222D6C4: ; jump table - b _0222D788 ; case 0 - b _0222D788 ; case 1 - b _0222D788 ; case 2 - b _0222D788 ; case 3 - b _0222D788 ; case 4 - b _0222D788 ; case 5 - b _0222D740 ; case 6 - b _0222D74C ; case 7 - b _0222D788 ; case 8 - b _0222D758 ; case 9 - b _0222D764 ; case 10 - b _0222D770 ; case 11 -_0222D6F4: - cmp r0, #0x22 - beq _0222D770 - b _0222D788 -_0222D700: - cmp r0, #0x2a - bgt _0222D718 - bge _0222D74C - cmp r0, #0x29 - beq _0222D740 - b _0222D788 -_0222D718: - cmp r0, #0x32 - bgt _0222D788 - cmp r0, #0x2c - blt _0222D788 - beq _0222D758 - cmp r0, #0x2d - beq _0222D764 - cmp r0, #0x32 - beq _0222D77C - b _0222D788 -_0222D740: - mov r0, #6 - strb r0, [r1, #0x121] - b _0222D790 -_0222D74C: - mov r0, #7 - strb r0, [r1, #0x121] - b _0222D790 -_0222D758: - mov r0, #9 - strb r0, [r1, #0x121] - b _0222D790 -_0222D764: - mov r0, #0xa - strb r0, [r1, #0x121] - b _0222D790 -_0222D770: - mov r0, #0xb - strb r0, [r1, #0x121] - b _0222D790 -_0222D77C: - mov r0, #0x32 - strb r0, [r1, #0x121] - b _0222D790 -_0222D788: - mov r0, #8 - strb r0, [r1, #0x121] -_0222D790: - bl ov18_0222D294 - mov r0, #8 - bl ov18_0223E994 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222D7A0: .word Unk_ov18_0225329C -_0222D7A4: .word Unk_ov18_02248F10 - arm_func_end ov18_0222D370 - - arm_func_start ov18_0222D7A8 -ov18_0222D7A8: ; 0x0222D7A8 - stmfd sp!, {r4, lr} - sub sp, sp, #8 - ldr r1, _0222D820 ; =0x0225329C - mov r4, r0 - ldr r0, [r1, #0] - mov r1, #0 - ldr r0, [r0, #0xfc] - bl ov18_02243BBC - ldr r3, [r0, #0] - ldr r1, _0222D820 ; =0x0225329C - ldr r0, _0222D824 ; =0x01FF0000 - and r2, r3, #0xff - and r0, r3, r0 - mov r3, r0, lsr #0x10 - ldr r1, [r1, #0] - add r2, r2, #0xc - ldrb r0, [r1, #0x11d] - str r2, [sp] - mov r1, #4 - str r3, [sp, #4] - bl ov18_0222CECC - ldr r0, [sp] - cmp r0, #0xc0 - addlt sp, sp, #8 - ldmltia sp!, {r4, pc} - ldr r1, _0222D828 ; =ov18_0222D82C - mov r0, r4 - bl ov18_022463A4 - add sp, sp, #8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0222D820: .word Unk_ov18_0225329C -_0222D824: .word 0x01FF0000 -_0222D828: .word ov18_0222D82C - arm_func_end ov18_0222D7A8 - - arm_func_start ov18_0222D82C -ov18_0222D82C: ; 0x0222D82C - stmfd sp!, {r4, lr} - sub sp, sp, #8 - ldr r1, _0222D894 ; =0x0225329C - ldr r2, _0222D898 ; =0x01FF0000 - ldr r3, [r1, #0] - mov r4, r0 - ldr r1, [r3, #0xc0] - ldrb r0, [r3, #0x11d] - ldr ip, [r1] - mov r1, #3 - and r3, ip, #0xff - and ip, ip, r2 - add r2, r3, #0xc - mov r3, ip, lsr #0x10 - str r2, [sp] - str r3, [sp, #4] - bl ov18_0222CECC - ldr r0, [sp] - cmp r0, #0xc0 - addlt sp, sp, #8 - ldmltia sp!, {r4, pc} - ldr r1, _0222D89C ; =ov18_0222D8A0 - mov r0, r4 - bl ov18_022463A4 - add sp, sp, #8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0222D894: .word Unk_ov18_0225329C -_0222D898: .word 0x01FF0000 -_0222D89C: .word ov18_0222D8A0 - arm_func_end ov18_0222D82C - - arm_func_start ov18_0222D8A0 -ov18_0222D8A0: ; 0x0222D8A0 - stmfd sp!, {r4, lr} - sub sp, sp, #8 - ldr r1, _0222D908 ; =0x0225329C - ldr r2, _0222D90C ; =0x01FF0000 - ldr r3, [r1, #0] - mov r4, r0 - ldr r1, [r3, #0x90] - ldrb r0, [r3, #0x11d] - ldr ip, [r1] - mov r1, #2 - and r3, ip, #0xff - and ip, ip, r2 - add r2, r3, #0xc - mov r3, ip, lsr #0x10 - str r2, [sp] - str r3, [sp, #4] - bl ov18_0222CECC - ldr r0, [sp] - cmp r0, #0xc0 - addlt sp, sp, #8 - ldmltia sp!, {r4, pc} - ldr r1, _0222D910 ; =ov18_0222D914 - mov r0, r4 - bl ov18_022463A4 - add sp, sp, #8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0222D908: .word Unk_ov18_0225329C -_0222D90C: .word 0x01FF0000 -_0222D910: .word ov18_0222D914 - arm_func_end ov18_0222D8A0 - - arm_func_start ov18_0222D914 -ov18_0222D914: ; 0x0222D914 - stmfd sp!, {r4, lr} - sub sp, sp, #8 - ldr r1, _0222D97C ; =0x0225329C - ldr r2, _0222D980 ; =0x01FF0000 - ldr r3, [r1, #0] - mov r4, r0 - ldr r1, [r3, #0x60] - ldrb r0, [r3, #0x11d] - ldr ip, [r1] - mov r1, #1 - and r3, ip, #0xff - and ip, ip, r2 - add r2, r3, #0xc - mov r3, ip, lsr #0x10 - str r2, [sp] - str r3, [sp, #4] - bl ov18_0222CECC - ldr r0, [sp] - cmp r0, #0xc0 - addlt sp, sp, #8 - ldmltia sp!, {r4, pc} - ldr r1, _0222D984 ; =ov18_0222D988 - mov r0, r4 - bl ov18_022463A4 - add sp, sp, #8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0222D97C: .word Unk_ov18_0225329C -_0222D980: .word 0x01FF0000 -_0222D984: .word ov18_0222D988 - arm_func_end ov18_0222D914 - - arm_func_start ov18_0222D988 -ov18_0222D988: ; 0x0222D988 - stmfd sp!, {r4, lr} - sub sp, sp, #8 - ldr r1, _0222D9F0 ; =0x0225329C - ldr r2, _0222D9F4 ; =0x01FF0000 - ldr r3, [r1, #0] - mov r4, r0 - ldr r1, [r3, #0x30] - ldrb r0, [r3, #0x11d] - ldr ip, [r1] - mov r1, #0 - and r3, ip, #0xff - and ip, ip, r2 - add r2, r3, #0xc - mov r3, ip, lsr #0x10 - str r2, [sp] - str r3, [sp, #4] - bl ov18_0222CECC - ldr r0, [sp] - cmp r0, #0xc0 - addlt sp, sp, #8 - ldmltia sp!, {r4, pc} - ldr r1, _0222D9F8 ; =ov18_0222D9FC - mov r0, r4 - bl ov18_022463A4 - add sp, sp, #8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0222D9F0: .word Unk_ov18_0225329C -_0222D9F4: .word 0x01FF0000 -_0222D9F8: .word ov18_0222D9FC - arm_func_end ov18_0222D988 - - arm_func_start ov18_0222D9FC -ov18_0222D9FC: ; 0x0222D9FC - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r1, r0 - mov r0, #0 - bl ov18_022463AC - mov r5, #0 - ldr r7, _0222DAD4 ; =0x0225329C - mov r4, r5 -_0222DA18: - mov r6, r4 -_0222DA1C: - ldr r0, [r7, #0] - add r0, r0, r5, lsl #4 - ldr r0, [r0, r6, lsl #2] - bl ov18_02244650 - cmp r5, #0 - bne _0222DA44 - ldr r0, [r7, #0] - add r0, r0, r6, lsl #2 - ldr r0, [r0, #0x104] - bl ov18_02243B3C -_0222DA44: - add r6, r6, #1 - cmp r6, #4 - blt _0222DA1C - add r5, r5, #1 - cmp r5, #3 - blt _0222DA18 - ldr r4, _0222DAD4 ; =0x0225329C - mov r5, #0 -_0222DA64: - ldr r0, [r4, #0] - add r0, r0, r5, lsl #2 - ldr r0, [r0, #0xfc] - bl ov18_02243B3C - add r5, r5, #1 - cmp r5, #2 - blt _0222DA64 - ldr r4, _0222DAD4 ; =0x0225329C - mov r5, #0 -_0222DA88: - ldr r0, [r4, #0] - add r0, r0, r5, lsl #2 - ldr r0, [r0, #0xec] - bl ov18_02245B74 - add r5, r5, #1 - cmp r5, #4 - blt _0222DA88 - ldr r4, _0222DAD4 ; =0x0225329C - mov r5, #0 -_0222DAAC: - ldr r0, [r4, #0] - add r0, r0, r5, lsl #2 - ldr r0, [r0, #0x30] - bl ov18_02245B74 - add r5, r5, #1 - cmp r5, #0x2f - blt _0222DAAC - ldr r0, _0222DAD8 ; =0x0225329C - bl ov18_0224508C - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_0222DAD4: .word Unk_ov18_0225329C -_0222DAD8: .word Unk_ov18_0225329C - arm_func_end ov18_0222D9FC - - .rodata - - - .global Unk_ov18_02248D28 -Unk_ov18_02248D28: ; 0x02248D28 - .incbin "incbin/keyboard.bin", 0x0, 0x4 - - .global Unk_ov18_02248D2C -Unk_ov18_02248D2C: ; 0x02248D2C - .incbin "incbin/keyboard.bin", 0x4, 0x8 - 0x4 - - .global Unk_ov18_02248D30 -Unk_ov18_02248D30: ; 0x02248D30 - .incbin "incbin/keyboard.bin", 0x8, 0xC - 0x8 - - .global Unk_ov18_02248D34 -Unk_ov18_02248D34: ; 0x02248D34 - .incbin "incbin/keyboard.bin", 0xC, 0x10 - 0xC - - .global Unk_ov18_02248D38 -Unk_ov18_02248D38: ; 0x02248D38 - .incbin "incbin/keyboard.bin", 0x10, 0x14 - 0x10 - - .global Unk_ov18_02248D3C -Unk_ov18_02248D3C: ; 0x02248D3C - .incbin "incbin/keyboard.bin", 0x14, 0x18 - 0x14 - - .global Unk_ov18_02248D40 -Unk_ov18_02248D40: ; 0x02248D40 - .incbin "incbin/keyboard.bin", 0x18, 0x1C - 0x18 - - .global Unk_ov18_02248D44 -Unk_ov18_02248D44: ; 0x02248D44 - .incbin "incbin/keyboard.bin", 0x1C, 0x20 - 0x1C - - .global Unk_ov18_02248D48 -Unk_ov18_02248D48: ; 0x02248D48 - .incbin "incbin/keyboard.bin", 0x20, 0x21 - 0x20 - - .global Unk_ov18_02248D4D -Unk_ov18_02248D4D: ; 0x02248D4D - .incbin "incbin/keyboard.bin", 0x21, 0x2A - 0x21 - - .global Unk_ov18_02248D52 -Unk_ov18_02248D52: ; 0x02248D52 - .incbin "incbin/keyboard.bin", 0x2A, 0x30 - 0x2A - - .global Unk_ov18_02248D58 -Unk_ov18_02248D58: ; 0x02248D58 - .incbin "incbin/keyboard.bin", 0x30, 0x38 - 0x30 - - .global Unk_ov18_02248D60 -Unk_ov18_02248D60: ; 0x02248D60 - .incbin "incbin/keyboard.bin", 0x38, 0x48 - 0x38 - - .global Unk_ov18_02248D70 -Unk_ov18_02248D70: ; 0x02248D70 - .incbin "incbin/keyboard.bin", 0x48, 0x58 - 0x48 - - .global Unk_ov18_02248D80 -Unk_ov18_02248D80: ; 0x02248D80 - .incbin "incbin/keyboard.bin", 0x58, 0x114 - 0x58 - - .global Unk_ov18_02248E3C -Unk_ov18_02248E3C: ; 0x02248E3C - .incbin "incbin/keyboard.bin", 0x114, 0x1E8 - 0x114 - - .global Unk_ov18_02248F10 -Unk_ov18_02248F10: ; 0x02248F10 - .incbin "incbin/keyboard.bin", 0x1E8, 0x2BC - 0x1E8 - - .global Unk_ov18_02248FE4 -Unk_ov18_02248FE4: ; 0x02248FE4 - .incbin "incbin/keyboard.bin", 0x2BC, 0x8 - - - - .data - - - .global Unk_ov18_02249B48 -Unk_ov18_02249B48: ; 0x02249B48 - .word Unk_ov18_02249CF8 - .word Unk_ov18_02249C98 - .word Unk_ov18_02249CC8 - - .global Unk_ov18_02249B54 -Unk_ov18_02249B54: ; 0x02249B54 - .word Unk_ov18_02249B70 - .word Unk_ov18_02249BD2 - .word Unk_ov18_02249C34 - - .global Unk_ov18_02249B60 -Unk_ov18_02249B60: ; 0x02249B60 - .space 0xC - .word 0x2 - - .global Unk_ov18_02249B70 -Unk_ov18_02249B70: ; 0x02249B70 - .ascii "1" - .space 0x1 - .ascii "2" - .space 0x1 - .ascii "3" - .space 0x1 - .ascii "4" - .space 0x1 - .ascii "5" - .space 0x1 - .ascii "6" - .space 0x1 - .ascii "7" - .space 0x1 - .ascii "8" - .space 0x1 - .ascii "9" - .space 0x1 - .ascii "0" - .space 0x1 - .ascii "-" - .space 0x1 - .ascii "=" - .space 0x1 - .ascii "q" - .space 0x1 - .ascii "w" - .space 0x1 - .ascii "e" - .space 0x1 - .ascii "r" - .space 0x1 - .ascii "t" - .space 0x1 - .ascii "y" - .space 0x1 - .ascii "u" - .space 0x1 - .ascii "i" - .space 0x1 - .ascii "o" - .space 0x1 - .ascii "p" - .space 0x1 - .ascii "[" - .space 0x1 - .ascii "]" - .space 0x1 - .ascii "a" - .space 0x1 - .ascii "s" - .space 0x1 - .ascii "d" - .space 0x1 - .ascii "f" - .space 0x1 - .ascii "g" - .space 0x1 - .ascii "h" - .space 0x1 - .ascii "j" - .space 0x1 - .ascii "k" - .space 0x1 - .ascii "l" - .space 0x1 - .ascii ";" - .space 0x1 - .ascii "'" - .space 0x1 - .ascii "`" - .space 0x1 - .ascii "z" - .space 0x1 - .ascii "x" - .space 0x1 - .ascii "c" - .space 0x1 - .ascii "v" - .space 0x1 - .ascii "b" - .space 0x1 - .ascii "n" - .space 0x1 - .ascii "m" - .space 0x1 - .ascii "," - .space 0x1 - .ascii "." - .space 0x1 - .ascii "/" - .space 0x1 - .byte 0x5C - .space 0x1 - .ascii " " - .space 0x3 - - .global Unk_ov18_02249BD2 -Unk_ov18_02249BD2: ; 0x02249BD2 - .ascii "!" - .space 0x1 - .ascii "@" - .space 0x1 - .ascii "#" - .space 0x1 - .ascii "$" - .space 0x1 - .ascii "%" - .space 0x1 - .ascii "^" - .space 0x1 - .ascii "&" - .space 0x1 - .ascii "*" - .space 0x1 - .ascii "(" - .space 0x1 - .ascii ")" - .space 0x1 - .ascii "_" - .space 0x1 - .ascii "+" - .space 0x1 - .ascii "Q" - .space 0x1 - .ascii "W" - .space 0x1 - .ascii "E" - .space 0x1 - .ascii "R" - .space 0x1 - .ascii "T" - .space 0x1 - .ascii "Y" - .space 0x1 - .ascii "U" - .space 0x1 - .ascii "I" - .space 0x1 - .ascii "O" - .space 0x1 - .ascii "P" - .space 0x1 - .ascii "{" - .space 0x1 - .ascii "}" - .space 0x1 - .ascii "A" - .space 0x1 - .ascii "S" - .space 0x1 - .ascii "D" - .space 0x1 - .ascii "F" - .space 0x1 - .ascii "G" - .space 0x1 - .ascii "H" - .space 0x1 - .ascii "J" - .space 0x1 - .ascii "K" - .space 0x1 - .ascii "L" - .space 0x1 - .ascii ":" - .space 0x1 - .byte 0x22 - .space 0x1 - .ascii "~" - .space 0x1 - .ascii "Z" - .space 0x1 - .ascii "X" - .space 0x1 - .ascii "C" - .space 0x1 - .ascii "V" - .space 0x1 - .ascii "B" - .space 0x1 - .ascii "N" - .space 0x1 - .ascii "M" - .space 0x1 - .ascii "<" - .space 0x1 - .ascii ">" - .space 0x1 - .ascii "?" - .space 0x1 - .ascii "|" - .space 0x1 - .ascii " " - .space 0x3 - - .global Unk_ov18_02249C34 -Unk_ov18_02249C34: ; 0x02249C34 - .ascii "1" - .space 0x1 - .ascii "2" - .space 0x1 - .ascii "3" - .space 0x1 - .ascii "4" - .space 0x1 - .ascii "5" - .space 0x1 - .ascii "6" - .space 0x1 - .ascii "7" - .space 0x1 - .ascii "8" - .space 0x1 - .ascii "9" - .space 0x1 - .ascii "0" - .space 0x1 - .ascii "-" - .space 0x1 - .ascii "=" - .space 0x1 - .ascii "Q" - .space 0x1 - .ascii "W" - .space 0x1 - .ascii "E" - .space 0x1 - .ascii "R" - .space 0x1 - .ascii "T" - .space 0x1 - .ascii "Y" - .space 0x1 - .ascii "U" - .space 0x1 - .ascii "I" - .space 0x1 - .ascii "O" - .space 0x1 - .ascii "P" - .space 0x1 - .ascii "[" - .space 0x1 - .ascii "]" - .space 0x1 - .ascii "A" - .space 0x1 - .ascii "S" - .space 0x1 - .ascii "D" - .space 0x1 - .ascii "F" - .space 0x1 - .ascii "G" - .space 0x1 - .ascii "H" - .space 0x1 - .ascii "J" - .space 0x1 - .ascii "K" - .space 0x1 - .ascii "L" - .space 0x1 - .ascii ";" - .space 0x1 - .ascii "'" - .space 0x1 - .ascii "`" - .space 0x1 - .ascii "Z" - .space 0x1 - .ascii "X" - .space 0x1 - .ascii "C" - .space 0x1 - .ascii "V" - .space 0x1 - .ascii "B" - .space 0x1 - .ascii "N" - .space 0x1 - .ascii "M" - .space 0x1 - .ascii "," - .space 0x1 - .ascii "." - .space 0x1 - .ascii "/" - .space 0x1 - .byte 0x5C - .space 0x1 - .ascii " " - .space 0x5 - - .global Unk_ov18_02249C98 -Unk_ov18_02249C98: ; 0x02249C98 - .ascii "!@#$%^&*()_+QWERTYUIOP{}ASDFGHJKL:" - .byte 0x22 - .asciz "~ZXCVBNM<>?|" - - .global Unk_ov18_02249CC8 -Unk_ov18_02249CC8: ; 0x02249CC8 - .ascii "1234567890-=QWERTYUIOP[]ASDFGHJKL;'`ZXCVBNM,./" - .byte 0x5C - .space 0x1 - - .global Unk_ov18_02249CF8 -Unk_ov18_02249CF8: ; 0x02249CF8 - .ascii "1234567890-=qwertyuiop[]asdfghjkl;'`zxcvbnm,./" - .byte 0x5C - .space 0x1 - - - .bss - - - .global Unk_ov18_0225329C -Unk_ov18_0225329C: ; 0x0225329C - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/keyboard10.s b/subprojects/NitroDWC/libraries/util/asm/keyboard10.s deleted file mode 100644 index e653502676..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/keyboard10.s +++ /dev/null @@ -1,1671 +0,0 @@ - .include "macros/function.inc" - .include "include/keyboard10.inc" - - - - .extern Unk_ov18_02249734 - .text - - - arm_func_start ov18_0222DADC -ov18_0222DADC: ; 0x0222DADC - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x24 - ldr r0, _0222DDFC ; =0x02249004 - mov r3, #0x1c - ldrh r5, [r0, #0x20] - ldrh r4, [r0, #0x22] - mov r2, #0x14 - mov r0, #0x6c - mov r1, #4 - strh r5, [sp, #0x1c] - strh r4, [sp, #0x1e] - strh r3, [sp, #0x20] - strh r2, [sp, #0x22] - bl ov18_02245068 - ldr r8, _0222DE00 ; =0x022532A0 - mov r6, #0 - mov r1, #0x1f - str r0, [r8] - strb r1, [r0, #0x60] - ldr r0, [r8] - mov r1, #1 - strb r6, [r0, #0x63] - ldr r0, [r8] - ldr r7, _0222DE04 ; =0xC1FFFCFF - strb r1, [r0, #0x66] - ldr r0, [r8] - mov r5, r6 - strb r1, [r0, #0x67] - ldr r0, [r8] - mov r4, #0x36 - strb r1, [r0, #0x68] -_0222DB58: - mov r0, r5 - mov r1, r4 - bl ov18_02243F60 - ldr r1, [r8] - add r1, r1, r6, lsl #2 - str r0, [r1, #0x10] - ldr r0, [r8] - add r0, r0, r6, lsl #2 - ldr r1, [r0, #0x10] - ldr r0, [r1, #0] - and r0, r0, r7 - orr r0, r0, #0x200 - str r0, [r1, #0] - ldr r0, [r8] - add r0, r0, r6, lsl #2 - ldr r1, [r0, #0x10] - add r6, r6, #1 - ldrh r0, [r1, #4] - cmp r6, #0xa - bic r0, r0, #0xc00 - orr r0, r0, #0xc00 - strh r0, [r1, #4] - blt _0222DB58 - mov r6, #0 - ldr r5, _0222DE08 ; =0x02248FF0 - ldr r8, _0222DE00 ; =0x022532A0 - ldr r7, _0222DE04 ; =0xC1FFFCFF - mov r4, r6 -_0222DBC8: - ldrb r1, [r5], #1 - mov r0, r4 - bl ov18_02243F60 - ldr r1, [r8] - add r1, r1, r6, lsl #2 - str r0, [r1, #0x38] - ldr r0, [r8] - add r0, r0, r6, lsl #2 - ldr r1, [r0, #0x38] - ldr r0, [r1, #0] - and r0, r0, r7 - orr r0, r0, #0x200 - str r0, [r1, #0] - ldr r0, [r8] - add r0, r0, r6, lsl #2 - ldr r1, [r0, #0x38] - add r6, r6, #1 - ldrh r0, [r1, #4] - cmp r6, #2 - bic r0, r0, #0xc00 - orr r0, r0, #0xc00 - strh r0, [r1, #4] - blt _0222DBC8 - mov sl, #0 - ldr sb, _0222DE0C ; =0x02248FF4 - ldr r4, _0222DE00 ; =0x022532A0 - mov r8, sl - mov r7, #1 - mvn r6, #0 - mov r5, #0x200 - mov fp, sl -_0222DC44: - ldrb r1, [sb], #1 - mov r0, r8 - mov r2, r7 - bl ov18_02243F8C - ldr r2, [r4, #0] - mov r1, r6 - add r2, r2, sl, lsl #2 - str r0, [r2, #0x40] - ldr r0, [r4, #0] - mov r2, r5 - add r0, r0, sl, lsl #2 - ldr r0, [r0, #0x40] - mov r3, fp - bl ov18_02243BD0 - ldr r0, [r4, #0] - mov r1, r6 - add r0, r0, sl, lsl #2 - ldr r0, [r0, #0x40] - mov r2, #3 - bl ov18_02243DE4 - add sl, sl, #1 - cmp sl, #2 - blt _0222DC44 - mov sl, #0 - str sl, [sp, #0x10] - strh sl, [sp, #0x16] -_0222DCAC: - add r1, sp, #0x18 - mov r0, #0 - str r1, [sp] - mov r3, r0 - mov r1, #0xc - mov r2, #4 - str r0, [sp, #4] - bl ov18_02244574 - ldr fp, _0222DE00 ; =0x022532A0 - mov sb, #0 - ldr r1, [fp] - ldr r8, [sp, #0x10] - ldr r7, _0222DE10 ; =0x0224903C - str r0, [r1, sl, lsl #2] - strh sb, [sp, #0x1c] - mov r6, #2 - mov r5, #0x480 - add r4, sp, #0x14 -_0222DCF4: - mov r0, r8, lsl #1 - ldrh r2, [r7, r0] - ldrh r0, [sp, #0x22] - ldrh r1, [sp, #0x1c] - strh r2, [sp, #0x14] - stmia sp, {r0, r6} - str r5, [sp, #8] - str r4, [sp, #0xc] - ldr r0, [fp] - ldrh r2, [sp, #0x1e] - ldrh r3, [sp, #0x20] - ldr r0, [r0, sl, lsl #2] - bl ov18_02244A9C - ldrh r0, [sp, #0x1c] - add sb, sb, #1 - cmp sb, #3 - add r0, r0, #0x20 - strh r0, [sp, #0x1c] - add r8, r8, #1 - blt _0222DCF4 - mov r0, #0 - ldr r1, [sp, #0x18] - mov r2, r0 - bl ov18_022439E0 - ldr r1, [sp, #0x10] - ldr r2, _0222DE00 ; =0x022532A0 - add r1, r1, #3 - str r1, [sp, #0x10] - ldr r1, [r2, #0] - add r1, r1, sl, lsl #2 - add sl, sl, #1 - str r0, [r1, #0x48] - cmp sl, #4 - blt _0222DCAC - mov r0, #0 - mov r1, #0x44 - mov r2, #1 - bl ov18_02243F8C - ldr r3, _0222DE00 ; =0x022532A0 - mvn r1, #0 - ldr r4, [r3, #0] - mov r2, #0x200 - str r0, [r4, #0x58] - ldr r0, [r3, #0] - mov r3, #0 - ldr r0, [r0, #0x58] - bl ov18_02243BD0 - ldr r0, _0222DE00 ; =0x022532A0 - mvn r1, #0 - ldr r0, [r0, #0] - mov r2, #2 - ldr r0, [r0, #0x58] - bl ov18_02243DE4 - mov r0, #0 - ldr r1, _0222DE14 ; =ov18_0222DEB8 - mov r2, r0 - mov r3, #0x78 - bl ov18_02246304 - ldr r2, _0222DE00 ; =0x022532A0 - mov r1, #0xc0 - ldr r2, [r2, #0] - str r0, [r2, #0x5c] - mov r0, #0 - bl ov18_0222E8D8 - add sp, sp, #0x24 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0222DDFC: .word Unk_ov18_02249004 -_0222DE00: .word Unk_ov18_022532A0 -_0222DE04: .word 0xC1FFFCFF -_0222DE08: .word Unk_ov18_02248FF0 -_0222DE0C: .word Unk_ov18_02248FF4 -_0222DE10: .word Unk_ov18_0224903C -_0222DE14: .word ov18_0222DEB8 - arm_func_end ov18_0222DADC - - arm_func_start ov18_0222DE18 -ov18_0222DE18: ; 0x0222DE18 - stmfd sp!, {r3, lr} - ldr r0, _0222DE44 ; =0x022532A0 - ldr r0, [r0, #0] - ldr r0, [r0, #0x58] - bl ov18_02243B3C - ldr r0, _0222DE44 ; =0x022532A0 - ldr r1, _0222DE48 ; =ov18_0222ED38 - ldr r0, [r0, #0] - ldr r0, [r0, #0x5c] - bl ov18_022463A4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222DE44: .word Unk_ov18_022532A0 -_0222DE48: .word ov18_0222ED38 - arm_func_end ov18_0222DE18 - - arm_func_start ov18_0222DE4C -ov18_0222DE4C: ; 0x0222DE4C - ldr r0, _0222DE5C ; =0x022532A0 - ldr r0, [r0, #0] - ldrb r0, [r0, #0x60] - bx lr - ; .align 2, 0 -_0222DE5C: .word Unk_ov18_022532A0 - arm_func_end ov18_0222DE4C - - arm_func_start ov18_0222DE60 -ov18_0222DE60: ; 0x0222DE60 - ldr r1, _0222DE70 ; =0x022532A0 - ldr r1, [r1, #0] - strb r0, [r1, #0x66] - bx lr - ; .align 2, 0 -_0222DE70: .word Unk_ov18_022532A0 - arm_func_end ov18_0222DE60 - - arm_func_start ov18_0222DE74 -ov18_0222DE74: ; 0x0222DE74 - ldr r1, _0222DE84 ; =0x022532A0 - ldr r1, [r1, #0] - strb r0, [r1, #0x67] - bx lr - ; .align 2, 0 -_0222DE84: .word Unk_ov18_022532A0 - arm_func_end ov18_0222DE74 - - arm_func_start ov18_0222DE88 -ov18_0222DE88: ; 0x0222DE88 - ldr r1, _0222DE98 ; =0x022532A0 - ldr r1, [r1, #0] - strb r0, [r1, #0x68] - bx lr - ; .align 2, 0 -_0222DE98: .word Unk_ov18_022532A0 - arm_func_end ov18_0222DE88 - - arm_func_start ov18_0222DE9C -ov18_0222DE9C: ; 0x0222DE9C - ldr r0, _0222DEB4 ; =0x022532A0 - ldr r0, [r0, #0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - bx lr - ; .align 2, 0 -_0222DEB4: .word Unk_ov18_022532A0 - arm_func_end ov18_0222DE9C - - arm_func_start ov18_0222DEB8 -ov18_0222DEB8: ; 0x0222DEB8 - stmfd sp!, {r4, lr} - sub sp, sp, #8 - ldr r2, _0222DF30 ; =0x022532A0 - mov r4, r0 - ldr r2, [r2, #0] - ldr r1, _0222DF34 ; =0x01FF0000 - ldr r0, [r2, #0x10] - ldr r0, [r0, #0] - and r2, r0, r1 - and r0, r0, #0xff - sub r1, r0, #0xc - mov r0, r2, lsr #0x10 - str r0, [sp, #4] - str r1, [sp] - cmp r1, #0x4c - mov r0, #0 - ble _0222DF08 - bl ov18_0222E8D8 - add sp, sp, #8 - ldmia sp!, {r4, pc} -_0222DF08: - mov r1, #0x4c - bl ov18_0222E8D8 - mov r0, #1 - mov r1, #0xc0 - bl ov18_0222E8D8 - ldr r1, _0222DF38 ; =ov18_0222DF3C - mov r0, r4 - bl ov18_022463A4 - add sp, sp, #8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0222DF30: .word Unk_ov18_022532A0 -_0222DF34: .word 0x01FF0000 -_0222DF38: .word ov18_0222DF3C - arm_func_end ov18_0222DEB8 - - arm_func_start ov18_0222DF3C -ov18_0222DF3C: ; 0x0222DF3C - stmfd sp!, {r4, lr} - sub sp, sp, #8 - ldr r2, _0222DFB4 ; =0x022532A0 - mov r4, r0 - ldr r2, [r2, #0] - ldr r1, _0222DFB8 ; =0x01FF0000 - ldr r0, [r2, #0x1c] - ldr r0, [r0, #0] - and r2, r0, r1 - and r0, r0, #0xff - sub r1, r0, #0xc - mov r0, r2, lsr #0x10 - str r0, [sp, #4] - str r1, [sp] - cmp r1, #0x63 - mov r0, #1 - ble _0222DF8C - bl ov18_0222E8D8 - add sp, sp, #8 - ldmia sp!, {r4, pc} -_0222DF8C: - mov r1, #0x63 - bl ov18_0222E8D8 - mov r0, #2 - mov r1, #0xc0 - bl ov18_0222E8D8 - ldr r1, _0222DFBC ; =ov18_0222DFC0 - mov r0, r4 - bl ov18_022463A4 - add sp, sp, #8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0222DFB4: .word Unk_ov18_022532A0 -_0222DFB8: .word 0x01FF0000 -_0222DFBC: .word ov18_0222DFC0 - arm_func_end ov18_0222DF3C - - arm_func_start ov18_0222DFC0 -ov18_0222DFC0: ; 0x0222DFC0 - stmfd sp!, {r4, lr} - sub sp, sp, #8 - ldr r2, _0222E038 ; =0x022532A0 - mov r4, r0 - ldr r2, [r2, #0] - ldr r1, _0222E03C ; =0x01FF0000 - ldr r0, [r2, #0x28] - ldr r0, [r0, #0] - and r2, r0, r1 - and r0, r0, #0xff - sub r1, r0, #0xc - mov r0, r2, lsr #0x10 - str r0, [sp, #4] - str r1, [sp] - cmp r1, #0x7a - mov r0, #2 - ble _0222E010 - bl ov18_0222E8D8 - add sp, sp, #8 - ldmia sp!, {r4, pc} -_0222E010: - mov r1, #0x7a - bl ov18_0222E8D8 - mov r0, #3 - mov r1, #0xc0 - bl ov18_0222E8D8 - ldr r1, _0222E040 ; =ov18_0222E044 - mov r0, r4 - bl ov18_022463A4 - add sp, sp, #8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0222E038: .word Unk_ov18_022532A0 -_0222E03C: .word 0x01FF0000 -_0222E040: .word ov18_0222E044 - arm_func_end ov18_0222DFC0 - - arm_func_start ov18_0222E044 -ov18_0222E044: ; 0x0222E044 - stmfd sp!, {r4, lr} - sub sp, sp, #8 - ldr r2, _0222E0BC ; =0x022532A0 - mov r4, r0 - ldr r2, [r2, #0] - ldr r1, _0222E0C0 ; =0x01FF0000 - ldr r0, [r2, #0x34] - ldr r0, [r0, #0] - and r2, r0, r1 - and r0, r0, #0xff - sub r1, r0, #0xc - mov r0, r2, lsr #0x10 - str r0, [sp, #4] - str r1, [sp] - cmp r1, #0x91 - mov r0, #3 - ble _0222E094 - bl ov18_0222E8D8 - add sp, sp, #8 - ldmia sp!, {r4, pc} -_0222E094: - mov r1, #0x91 - bl ov18_0222E8D8 - mov r0, #4 - mov r1, #0xc0 - bl ov18_0222E8D8 - ldr r1, _0222E0C4 ; =ov18_0222E0C8 - mov r0, r4 - bl ov18_022463A4 - add sp, sp, #8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0222E0BC: .word Unk_ov18_022532A0 -_0222E0C0: .word 0x01FF0000 -_0222E0C4: .word ov18_0222E0C8 - arm_func_end ov18_0222E044 - - arm_func_start ov18_0222E0C8 -ov18_0222E0C8: ; 0x0222E0C8 - stmfd sp!, {r4, lr} - sub sp, sp, #8 - ldr r1, _0222E134 ; =0x022532A0 - mov r4, r0 - ldr r0, [r1, #0] - add r2, sp, #4 - ldr r0, [r0, #0x40] - add r3, sp, #0 - mov r1, #0 - bl ov18_02243E44 - ldr r0, [sp] - sub r1, r0, #0xc - str r1, [sp] - cmp r1, #0xaa - mov r0, #4 - ble _0222E114 - bl ov18_0222E8D8 - add sp, sp, #8 - ldmia sp!, {r4, pc} -_0222E114: - mov r1, #0xaa - bl ov18_0222E8D8 - bl ov18_0222EC00 - ldr r1, _0222E138 ; =ov18_0222E13C - mov r0, r4 - bl ov18_022463A4 - add sp, sp, #8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0222E134: .word Unk_ov18_022532A0 -_0222E138: .word ov18_0222E13C - arm_func_end ov18_0222E0C8 - - arm_func_start ov18_0222E13C -ov18_0222E13C: ; 0x0222E13C - stmfd sp!, {r3, lr} - bl ov18_0222E154 - bl ov18_0222E330 - bl ov18_0222E500 - bl ov18_0222E73C - ldmia sp!, {r3, pc} - arm_func_end ov18_0222E13C - - arm_func_start ov18_0222E154 -ov18_0222E154: ; 0x0222E154 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - ldr r0, _0222E310 ; =0x02249734 - bl ov18_022455B8 - cmp r0, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, _0222E314 ; =0x022532A0 - mvn r1, #0 - ldr r0, [r0, #0] - ldr r7, _0222E318 ; =0x02249056 - ldr r6, _0222E31C ; =0x02249004 - strb r1, [r0, #0x61] - mov r4, #0 - add r5, sp, #0 -_0222E190: - mov r0, r7 - mov r1, r6 - mov r2, r5 - bl ov18_02244C50 - mov r0, r5 - bl ov18_022455B8 - cmp r0, #0 - beq _0222E1F0 - ldr r0, _0222E314 ; =0x022532A0 - ldr r0, [r0, #0] - ldrb r0, [r0, #0x67] - cmp r0, #0 - bne _0222E1D4 - mov r0, #9 - bl ov18_0223E994 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0222E1D4: - mov r0, #0 - bl ov18_0223E994 - ldr r0, _0222E314 ; =0x022532A0 - add sp, sp, #8 - ldr r0, [r0, #0] - strb r4, [r0, #0x61] - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0222E1F0: - add r4, r4, #1 - cmp r4, #0xa - add r7, r7, #4 - blt _0222E190 - ldr r7, _0222E320 ; =0x0224902C - ldr r6, _0222E324 ; =0x0224900C - mov r4, #0 - add r5, sp, #0 -_0222E210: - mov r0, r7 - mov r1, r6 - mov r2, r5 - bl ov18_02244C50 - mov r0, r5 - bl ov18_022455B8 - cmp r0, #0 - beq _0222E298 - cmp r4, #0 - bne _0222E24C - ldr r0, _0222E314 ; =0x022532A0 - ldr r0, [r0, #0] - ldrb r0, [r0, #0x66] - cmp r0, #0 - beq _0222E268 -_0222E24C: - cmp r4, #1 - bne _0222E278 - ldr r0, _0222E314 ; =0x022532A0 - ldr r0, [r0, #0] - ldrb r0, [r0, #0x68] - cmp r0, #0 - bne _0222E278 -_0222E268: - mov r0, #9 - bl ov18_0223E994 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0222E278: - mov r0, #0 - bl ov18_0223E994 - ldr r0, _0222E314 ; =0x022532A0 - add r1, r4, #0xa - ldr r0, [r0, #0] - add sp, sp, #8 - strb r1, [r0, #0x61] - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0222E298: - add r4, r4, #1 - cmp r4, #2 - add r7, r7, #4 - blt _0222E210 - ldr r6, _0222E328 ; =0x02249034 - ldr r5, _0222E32C ; =0x02249010 - mov r7, #0 - add r4, sp, #0 -_0222E2B8: - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl ov18_02244C50 - mov r0, r4 - bl ov18_022455B8 - cmp r0, #0 - beq _0222E2F8 - mov r0, #0 - bl ov18_0223E994 - ldr r0, _0222E314 ; =0x022532A0 - add r1, r7, #0xc - ldr r0, [r0, #0] - add sp, sp, #8 - strb r1, [r0, #0x61] - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0222E2F8: - add r7, r7, #1 - cmp r7, #2 - add r6, r6, #4 - blt _0222E2B8 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_0222E310: .word Unk_ov18_02249734 -_0222E314: .word Unk_ov18_022532A0 -_0222E318: .word Unk_ov18_02249056 -_0222E31C: .word Unk_ov18_02249004 -_0222E320: .word Unk_ov18_0224902C -_0222E324: .word Unk_ov18_0224900C -_0222E328: .word Unk_ov18_02249034 -_0222E32C: .word Unk_ov18_02249010 - arm_func_end ov18_0222E154 - - arm_func_start ov18_0222E330 -ov18_0222E330: ; 0x0222E330 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - ldr r1, _0222E4D4 ; =0x022532A0 - ldr r0, _0222E4D8 ; =0x02249734 - ldr r1, [r1, #0] - mov r2, #0 - strb r2, [r1, #0x60] - bl ov18_022456C8 - cmp r0, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r7, _0222E4DC ; =0x02249056 - ldr r6, _0222E4E0 ; =0x02249004 - mov r4, #0 - add r5, sp, #0 -_0222E36C: - mov r0, r7 - mov r1, r6 - mov r2, r5 - bl ov18_02244C50 - mov r0, r5 - bl ov18_022456C8 - cmp r0, #0 - beq _0222E3C4 - ldr r0, _0222E4D4 ; =0x022532A0 - ldr r2, [r0, #0] - ldrsb r1, [r2, #0x61] - cmp r1, r4 - addne sp, sp, #8 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, _0222E4E4 ; =0x022490F0 - ldrb r1, [r1, r4] - strb r1, [r2, #0x60] - ldr r0, [r0, #0] - strb r4, [r0, #0x63] - bl ov18_0222EC00 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0222E3C4: - add r4, r4, #1 - cmp r4, #0xa - add r7, r7, #4 - blt _0222E36C - ldr r7, _0222E4E8 ; =0x0224902C - ldr r6, _0222E4EC ; =0x0224900C - mov r4, #0 - add r5, sp, #0 -_0222E3E4: - mov r0, r7 - mov r1, r6 - mov r2, r5 - bl ov18_02244C50 - mov r0, r5 - bl ov18_022456C8 - cmp r0, #0 - beq _0222E440 - ldr r0, _0222E4D4 ; =0x022532A0 - add r2, r4, #0xa - ldr r3, [r0, #0] - ldrsb r1, [r3, #0x61] - cmp r1, r2 - addne sp, sp, #8 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, _0222E4F0 ; =0x02249000 - ldrb r1, [r1, r4] - strb r1, [r3, #0x60] - ldr r0, [r0, #0] - strb r2, [r0, #0x63] - bl ov18_0222EC00 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0222E440: - add r4, r4, #1 - cmp r4, #2 - add r7, r7, #4 - blt _0222E3E4 - ldr r7, _0222E4F4 ; =0x02249034 - ldr r6, _0222E4F8 ; =0x02249010 - mov r4, #0 - add r5, sp, #0 -_0222E460: - mov r0, r7 - mov r1, r6 - mov r2, r5 - bl ov18_02244C50 - mov r0, r5 - bl ov18_022456C8 - cmp r0, #0 - beq _0222E4BC - ldr r0, _0222E4D4 ; =0x022532A0 - add r2, r4, #0xc - ldr r3, [r0, #0] - ldrsb r1, [r3, #0x61] - cmp r1, r2 - addne sp, sp, #8 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, _0222E4FC ; =0x02248FFC - ldrb r1, [r1, r4] - strb r1, [r3, #0x60] - ldr r0, [r0, #0] - strb r2, [r0, #0x63] - bl ov18_0222EC00 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0222E4BC: - add r4, r4, #1 - cmp r4, #2 - add r7, r7, #4 - blt _0222E460 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_0222E4D4: .word Unk_ov18_022532A0 -_0222E4D8: .word Unk_ov18_02249734 -_0222E4DC: .word Unk_ov18_02249056 -_0222E4E0: .word Unk_ov18_02249004 -_0222E4E4: .word Unk_ov18_022490F0 -_0222E4E8: .word Unk_ov18_0224902C -_0222E4EC: .word Unk_ov18_0224900C -_0222E4F0: .word Unk_ov18_02249000 -_0222E4F4: .word Unk_ov18_02249034 -_0222E4F8: .word Unk_ov18_02249010 -_0222E4FC: .word Unk_ov18_02248FFC - arm_func_end ov18_0222E330 - - arm_func_start ov18_0222E500 -ov18_0222E500: ; 0x0222E500 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - ldr r0, _0222E6D0 ; =0x02249734 - bl ov18_02245530 - cmp r0, #0 - beq _0222E6B0 - ldr r7, _0222E6D4 ; =0x02249056 - ldr r5, _0222E6D8 ; =0x02249004 - mov r6, #0 - add r4, sp, #0 -_0222E528: - mov r0, r7 - mov r1, r5 - mov r2, r4 - bl ov18_02244C50 - mov r0, r4 - bl ov18_02245530 - cmp r0, #0 - beq _0222E568 - ldr r0, _0222E6DC ; =0x022532A0 - ldr r0, [r0, #0] - ldrsb r0, [r0, #0x61] - cmp r0, r6 - bne _0222E6B0 - mov r0, r6 - bl ov18_0222E6F0 - b _0222E6B8 -_0222E568: - add r6, r6, #1 - cmp r6, #0xa - add r7, r7, #4 - blt _0222E528 - ldr r6, _0222E6E0 ; =0x0224902C - ldr r5, _0222E6E4 ; =0x0224900C - mov r7, #0 - add r4, sp, #0 -_0222E588: - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl ov18_02244C50 - mov r0, r4 - bl ov18_02245530 - cmp r0, #0 - beq _0222E640 - ldr r1, _0222E6DC ; =0x022532A0 - add r0, r7, #0xa - ldr r1, [r1, #0] - ldrsb r1, [r1, #0x61] - cmp r1, r0 - bne _0222E6B0 - bl ov18_0222E6F0 - cmp r7, #0 - bne _0222E6B8 - ldr r0, _0222E6DC ; =0x022532A0 - ldr r2, [r0, #0] - ldrb r1, [r2, #0x65] - add r1, r1, #1 - strb r1, [r2, #0x65] - ldr r2, [r0, #0] - ldrb r1, [r2, #0x65] - cmp r1, #0x28 - addlo sp, sp, #8 - ldmloia sp!, {r3, r4, r5, r6, r7, pc} - ldrb r1, [r2, #0x66] - cmp r1, #0 - bne _0222E620 - mov r0, #9 - bl ov18_0223E994 - ldr r0, _0222E6DC ; =0x022532A0 - mvn r1, #0 - ldr r0, [r0, #0] - add sp, sp, #8 - strb r1, [r0, #0x61] - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0222E620: - mov r1, #0x10 - strb r1, [r2, #0x60] - ldr r1, [r0, #0] - add sp, sp, #8 - ldrb r0, [r1, #0x65] - sub r0, r0, #7 - strb r0, [r1, #0x65] - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0222E640: - add r7, r7, #1 - cmp r7, #2 - add r6, r6, #4 - blt _0222E588 - ldr r6, _0222E6E8 ; =0x02249034 - ldr r5, _0222E6EC ; =0x02249010 - mov r7, #0 - add r4, sp, #0 -_0222E660: - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl ov18_02244C50 - mov r0, r4 - bl ov18_02245530 - cmp r0, #0 - beq _0222E6A0 - ldr r1, _0222E6DC ; =0x022532A0 - add r0, r7, #0xc - ldr r1, [r1, #0] - ldrsb r1, [r1, #0x61] - cmp r1, r0 - bne _0222E6B0 - bl ov18_0222E6F0 - b _0222E6B8 -_0222E6A0: - add r7, r7, #1 - cmp r7, #2 - add r6, r6, #4 - blt _0222E660 -_0222E6B0: - mvn r0, #0 - bl ov18_0222E6F0 -_0222E6B8: - ldr r0, _0222E6DC ; =0x022532A0 - mov r1, #0 - ldr r0, [r0, #0] - strb r1, [r0, #0x65] - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_0222E6D0: .word Unk_ov18_02249734 -_0222E6D4: .word Unk_ov18_02249056 -_0222E6D8: .word Unk_ov18_02249004 -_0222E6DC: .word Unk_ov18_022532A0 -_0222E6E0: .word Unk_ov18_0224902C -_0222E6E4: .word Unk_ov18_0224900C -_0222E6E8: .word Unk_ov18_02249034 -_0222E6EC: .word Unk_ov18_02249010 - arm_func_end ov18_0222E500 - - arm_func_start ov18_0222E6F0 -ov18_0222E6F0: ; 0x0222E6F0 - stmfd sp!, {r4, lr} - ldr r1, _0222E738 ; =0x022532A0 - mov r4, r0 - ldr r1, [r1, #0] - ldrsb r1, [r1, #0x62] - cmp r4, r1 - ldmeqia sp!, {r4, pc} - mov r1, #1 - bl ov18_0222EB38 - ldr r0, _0222E738 ; =0x022532A0 - mov r1, #0 - ldr r0, [r0, #0] - ldrsb r0, [r0, #0x62] - bl ov18_0222EB38 - ldr r0, _0222E738 ; =0x022532A0 - ldr r0, [r0, #0] - strb r4, [r0, #0x62] - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0222E738: .word Unk_ov18_022532A0 - arm_func_end ov18_0222E6F0 - - arm_func_start ov18_0222E73C -ov18_0222E73C: ; 0x0222E73C - stmfd sp!, {r3, lr} - mov r0, #0x20 - bl ov18_022454B0 - cmp r0, #0 - beq _0222E758 - mov r0, #0 - bl ov18_0222EC8C -_0222E758: - mov r0, #0x40 - bl ov18_022454B0 - cmp r0, #0 - beq _0222E770 - mov r0, #1 - bl ov18_0222EC8C -_0222E770: - mov r0, #0x10 - bl ov18_022454B0 - cmp r0, #0 - beq _0222E788 - mov r0, #2 - bl ov18_0222EC8C -_0222E788: - mov r0, #0x80 - bl ov18_022454B0 - cmp r0, #0 - beq _0222E7A0 - mov r0, #3 - bl ov18_0222EC8C -_0222E7A0: - mov r0, #1 - bl ov18_02245470 - cmp r0, #0 - beq _0222E84C - ldr r0, _0222E8C8 ; =0x022532A0 - ldr r0, [r0, #0] - ldrsb r2, [r0, #0x63] - cmp r2, #0xa - bge _0222E7EC - ldrb r1, [r0, #0x67] - cmp r1, #0 - beq _0222E7E0 - ldr r1, _0222E8CC ; =0x022490F0 - ldrb r1, [r1, r2] - strb r1, [r0, #0x60] - ldmia sp!, {r3, pc} -_0222E7E0: - mov r0, #9 - bl ov18_0223E994 - ldmia sp!, {r3, pc} -_0222E7EC: - sub r1, r2, #0xa - cmp r1, #2 - bge _0222E83C - cmp r1, #0 - ldreqb r1, [r0, #0x66] - cmpeq r1, #0 - beq _0222E81C - sub r1, r2, #0xa - cmp r1, #1 - ldreqb r1, [r0, #0x68] - cmpeq r1, #0 - bne _0222E828 -_0222E81C: - mov r0, #9 - bl ov18_0223E994 - ldmia sp!, {r3, pc} -_0222E828: - ldr r1, _0222E8D0 ; =0x02249000 - sub r2, r2, #0xa - ldrb r1, [r1, r2] - strb r1, [r0, #0x60] - ldmia sp!, {r3, pc} -_0222E83C: - ldr r1, _0222E8D4 ; =0x02248FFC - sub r2, r2, #0xc - ldrb r1, [r1, r2] - strb r1, [r0, #0x60] -_0222E84C: - mov r0, #2 - bl ov18_022454B0 - cmp r0, #0 - beq _0222E8A4 - ldr r0, _0222E8C8 ; =0x022532A0 - ldr r1, [r0, #0] - ldrb r0, [r1, #0x66] - cmp r0, #0 - bne _0222E898 - ldrb r0, [r1, #0x69] - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #9 - bl ov18_0223E994 - ldr r0, _0222E8C8 ; =0x022532A0 - mov r1, #1 - ldr r0, [r0, #0] - strb r1, [r0, #0x69] - ldmia sp!, {r3, pc} -_0222E898: - mov r0, #0x10 - strb r0, [r1, #0x60] - ldmia sp!, {r3, pc} -_0222E8A4: - mov r0, #2 - bl ov18_022454F0 - cmp r0, #0 - ldmeqia sp!, {r3, pc} - ldr r0, _0222E8C8 ; =0x022532A0 - mov r1, #0 - ldr r0, [r0, #0] - strb r1, [r0, #0x69] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222E8C8: .word Unk_ov18_022532A0 -_0222E8CC: .word Unk_ov18_022490F0 -_0222E8D0: .word Unk_ov18_02249000 -_0222E8D4: .word Unk_ov18_02248FFC - arm_func_end ov18_0222E73C - - arm_func_start ov18_0222E8D8 -ov18_0222E8D8: ; 0x0222E8D8 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - ldr r2, _0222EB1C ; =0x02249004 - mov sl, r0 - ldrb r3, [r2, #0x15] - ldrb r0, [r2, #0x16] - ldrb r4, [r2, #0x17] - strb r3, [sp, #0xe] - strb r0, [sp, #0xf] - ldrb r0, [r2, #0x18] - mov sb, r1 - add r3, sp, #0xe - strb r4, [sp, #0x10] - strb r0, [sp, #0x11] - ldrb r0, [r2, #0x19] - add lr, sl, sl, lsl #1 - mov r4, lr - strb r0, [sp, #0x12] - ldrb r6, [r2, #0x1a] - ldrb r1, [r2, #0x1b] - ldrb r0, [r3, sl] - mov r5, #0 - strb r6, [sp, #9] - strb r1, [sp, #0xa] - ldrb r6, [r2, #0x1c] - ldrb r1, [r2, #0x1d] - cmp r0, #0 - strb r6, [sp, #0xb] - strb r1, [sp, #0xc] - ldrb r0, [r2, #0x1e] - strb r0, [sp, #0xd] - ldrb r1, [r2, #0x10] - ldrb r0, [r2, #0x11] - strb r1, [sp, #4] - strb r0, [sp, #5] - ldrb r1, [r2, #0x12] - ldrb r0, [r2, #0x13] - strb r1, [sp, #6] - strb r0, [sp, #7] - ldrb r0, [r2, #0x14] - strb r0, [sp, #8] - ble _0222E9EC - ldr r0, _0222EB20 ; =0x02249056 - ldr fp, _0222EB24 ; =0x022532A0 - ldr r7, _0222EB28 ; =0xC1FFFCFF - ldr r8, _0222EB2C ; =0xFE00FF00 - and r6, sb, #0xff -_0222E994: - ldr r1, [fp] - mov r2, r4, lsl #2 - add r1, r1, r4, lsl #2 - ldr r1, [r1, #0x10] - ldrh r2, [r0, r2] - ldr ip, [r1] - add r5, r5, #1 - and ip, ip, r7 - str ip, [r1] - ldr ip, [fp] - mov r1, r2, lsl #0x17 - add r2, ip, r4, lsl #2 - ldr r2, [r2, #0x10] - add r4, r4, #1 - ldr ip, [r2] - and ip, ip, r8 - orr ip, ip, r6 - orr r1, ip, r1, lsr #7 - str r1, [r2, #0] - ldrb r1, [r3, sl] - cmp r5, r1 - blt _0222E994 -_0222E9EC: - cmp sl, #4 - bge _0222EA24 - ldr r0, _0222EB24 ; =0x022532A0 - ldr r1, _0222EB20 ; =0x02249056 - ldr r3, [r0, #0] - mov r0, lr, lsl #2 - mov r2, #2 - str r2, [sp] - add r2, r3, sl, lsl #2 - ldrh r1, [r1, r0] - ldr r0, [r3, sl, lsl #2] - ldr r3, [r2, #0x48] - mov r2, sb - bl ov18_02244B70 -_0222EA24: - add r3, sp, #9 - ldrb r0, [r3, sl] - mov r5, #0 - cmp r0, #0 - ble _0222EAA0 - ldr r0, _0222EB30 ; =0x0224902C - ldr r8, _0222EB24 ; =0x022532A0 - ldr r6, _0222EB28 ; =0xC1FFFCFF - ldr r7, _0222EB2C ; =0xFE00FF00 - and r4, sb, #0xff -_0222EA4C: - ldr r1, [r8] - mov r2, r5, lsl #2 - add r1, r1, r5, lsl #2 - ldr fp, [r1, #0x38] - ldrh r1, [r0, r2] - ldr r2, [fp] - and r2, r2, r6 - str r2, [fp] - ldr r2, [r8] - mov r1, r1, lsl #0x17 - add r2, r2, r5, lsl #2 - ldr r2, [r2, #0x38] - add r5, r5, #1 - ldr fp, [r2] - and fp, fp, r7 - orr fp, fp, r4 - orr r1, fp, r1, lsr #7 - str r1, [r2, #0] - ldrb r1, [r3, sl] - cmp r5, r1 - blt _0222EA4C -_0222EAA0: - add r7, sp, #4 - ldrb r0, [r7, sl] - mov r8, #0 - cmp r0, #0 - addle sp, sp, #0x14 - ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r5, _0222EB34 ; =0x02249034 - ldr r4, _0222EB24 ; =0x022532A0 - mvn r6, #0 - mov fp, r8 -_0222EAC8: - ldr r0, [r4, #0] - mov r1, r6 - add r0, r0, r8, lsl #2 - ldr r0, [r0, #0x40] - mov r2, fp - mov r3, fp - bl ov18_02243BD0 - ldr r0, [r4, #0] - mov r1, r8, lsl #2 - add r0, r0, r8, lsl #2 - ldr r0, [r0, #0x40] - ldrh r2, [r5, r1] - mov r1, r6 - mov r3, sb - bl ov18_02243CF4 - ldrb r0, [r7, sl] - add r8, r8, #1 - cmp r8, r0 - blt _0222EAC8 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0222EB1C: .word Unk_ov18_02249004 -_0222EB20: .word Unk_ov18_02249056 -_0222EB24: .word Unk_ov18_022532A0 -_0222EB28: .word 0xC1FFFCFF -_0222EB2C: .word 0xFE00FF00 -_0222EB30: .word Unk_ov18_0224902C -_0222EB34: .word Unk_ov18_02249034 - arm_func_end ov18_0222E8D8 - - arm_func_start ov18_0222EB38 -ov18_0222EB38: ; 0x0222EB38 - stmfd sp!, {r3, lr} - cmp r0, #0 - ldmltia sp!, {r3, pc} - cmp r0, #0xa - bge _0222EB84 - ldr r2, _0222EBF4 ; =0x022532A0 - ldr r3, _0222EBF8 ; =0x02248FF8 - ldr r2, [r2, #0] - ldrb r1, [r3, r1] - add r0, r2, r0, lsl #2 - ldr r2, [r0, #0x10] - ldr r0, [r2, #0] - bic r0, r0, #0xc00 - str r0, [r2, #0] - ldrh r0, [r2, #4] - bic r0, r0, #0xf000 - orr r0, r0, r1, lsl #12 - strh r0, [r2, #4] - ldmia sp!, {r3, pc} -_0222EB84: - sub ip, r0, #0xa - cmp ip, #2 - bge _0222EBC8 - ldr r0, _0222EBF4 ; =0x022532A0 - ldr r2, _0222EBF8 ; =0x02248FF8 - ldr r3, [r0, #0] - ldrb r0, [r2, r1] - add r1, r3, ip, lsl #2 - ldr r2, [r1, #0x38] - ldr r1, [r2, #0] - bic r1, r1, #0xc00 - str r1, [r2, #0] - ldrh r1, [r2, #4] - bic r1, r1, #0xf000 - orr r0, r1, r0, lsl #12 - strh r0, [r2, #4] - ldmia sp!, {r3, pc} -_0222EBC8: - ldr r2, _0222EBF4 ; =0x022532A0 - ldr r3, _0222EBFC ; =0x02248FEC - ldr r2, [r2, #0] - sub r0, r0, #0xc - add r0, r2, r0, lsl #2 - ldrb r3, [r3, r1] - ldr r0, [r0, #0x40] - mvn r1, #0 - mov r2, #0 - bl ov18_02243C74 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222EBF4: .word Unk_ov18_022532A0 -_0222EBF8: .word Unk_ov18_02248FF8 -_0222EBFC: .word Unk_ov18_02248FEC - arm_func_end ov18_0222EB38 - - arm_func_start ov18_0222EC00 -ov18_0222EC00: ; 0x0222EC00 - stmfd sp!, {r4, lr} - ldr r0, _0222EC80 ; =0x022532A0 - ldr r1, [r0, #0] - ldrsb r0, [r1, #0x63] - cmp r0, #0xb - movle r4, #0x44 - ldr r0, [r1, #0x58] - movgt r4, #0x45 - mov r1, #0 - bl ov18_02243BBC - mov r2, r0 - mov r1, r4 - mov r0, #0 - bl ov18_02243ECC - ldr r0, _0222EC80 ; =0x022532A0 - mvn r1, #0 - ldr r0, [r0, #0] - mov r2, #2 - ldr r0, [r0, #0x58] - bl ov18_02243DE4 - ldr r0, _0222EC80 ; =0x022532A0 - ldr r2, _0222EC84 ; =0x0224907E - ldr r0, [r0, #0] - ldr r3, _0222EC88 ; =0x02249080 - ldrsb ip, [r0, #0x63] - ldr r0, [r0, #0x58] - mvn r1, #0 - mov ip, ip, lsl #2 - ldrh r2, [r2, ip] - ldrh r3, [r3, ip] - bl ov18_02243CF4 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0222EC80: .word Unk_ov18_022532A0 -_0222EC84: .word Unk_ov18_0224907E -_0222EC88: .word 0x02249080 - arm_func_end ov18_0222EC00 - - arm_func_start ov18_0222EC8C -ov18_0222EC8C: ; 0x0222EC8C - stmfd sp!, {r3, lr} - ldr r1, _0222ED30 ; =0x022532A0 - ldr r2, _0222ED34 ; =0x022490B6 - ldr r3, [r1, #0] - ldrsb ip, [r3, #0x63] - add r2, r2, ip, lsl #2 - ldrsb r2, [r0, r2] - strb r2, [r3, #0x63] - ldr r2, [r1, #0] - ldrsb r1, [r2, #0x63] - cmp r1, #0xd - bne _0222ECCC - cmp r0, #1 - cmpne r0, #3 - streqb ip, [r2, #0x64] - beq _0222ED20 -_0222ECCC: - mvn r0, #0 - cmp r1, r0 - bne _0222ECF8 - ldrsb r0, [r2, #0x64] - cmp r0, #1 - cmpne r0, #0xa - moveq r0, #0xa - streqb r0, [r2, #0x63] - movne r0, #0xb - strneb r0, [r2, #0x63] - b _0222ED20 -_0222ECF8: - sub r0, r0, #1 - cmp r1, r0 - bne _0222ED20 - ldrsb r0, [r2, #0x64] - cmp r0, #1 - cmpne r0, #0xa - moveq r0, #1 - streqb r0, [r2, #0x63] - movne r0, #2 - strneb r0, [r2, #0x63] -_0222ED20: - bl ov18_0222EC00 - mov r0, #8 - bl ov18_0223E994 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222ED30: .word Unk_ov18_022532A0 -_0222ED34: .word Unk_ov18_022490B6 - arm_func_end ov18_0222EC8C - - arm_func_start ov18_0222ED38 -ov18_0222ED38: ; 0x0222ED38 - stmfd sp!, {r4, lr} - sub sp, sp, #8 - ldr r1, _0222EDA4 ; =0x022532A0 - mov r4, r0 - ldr r0, [r1, #0] - mov r1, #0 - ldr r0, [r0, #0x40] - bl ov18_02243BBC - ldr r2, [r0, #0] - ldr r0, _0222EDA8 ; =0x01FF0000 - and r1, r2, #0xff - and r0, r2, r0 - mov r2, r0, lsr #0x10 - add r1, r1, #0xc - str r1, [sp] - mov r0, #4 - str r2, [sp, #4] - bl ov18_0222E8D8 - ldr r0, [sp] - cmp r0, #0xc0 - addlt sp, sp, #8 - ldmltia sp!, {r4, pc} - ldr r1, _0222EDAC ; =ov18_0222EDB0 - mov r0, r4 - bl ov18_022463A4 - add sp, sp, #8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0222EDA4: .word Unk_ov18_022532A0 -_0222EDA8: .word 0x01FF0000 -_0222EDAC: .word ov18_0222EDB0 - arm_func_end ov18_0222ED38 - - arm_func_start ov18_0222EDB0 -ov18_0222EDB0: ; 0x0222EDB0 - stmfd sp!, {r4, lr} - sub sp, sp, #8 - ldr r1, _0222EE14 ; =0x022532A0 - mov r4, r0 - ldr r0, [r1, #0] - ldr r1, _0222EE18 ; =0x01FF0000 - ldr r2, [r0, #0x34] - mov r0, #3 - ldr r3, [r2, #0] - and r2, r3, #0xff - and r3, r3, r1 - add r1, r2, #0xc - mov r2, r3, lsr #0x10 - str r1, [sp] - str r2, [sp, #4] - bl ov18_0222E8D8 - ldr r0, [sp] - cmp r0, #0xc0 - addlt sp, sp, #8 - ldmltia sp!, {r4, pc} - ldr r1, _0222EE1C ; =ov18_0222EE20 - mov r0, r4 - bl ov18_022463A4 - add sp, sp, #8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0222EE14: .word Unk_ov18_022532A0 -_0222EE18: .word 0x01FF0000 -_0222EE1C: .word ov18_0222EE20 - arm_func_end ov18_0222EDB0 - - arm_func_start ov18_0222EE20 -ov18_0222EE20: ; 0x0222EE20 - stmfd sp!, {r4, lr} - sub sp, sp, #8 - ldr r1, _0222EE84 ; =0x022532A0 - mov r4, r0 - ldr r0, [r1, #0] - ldr r1, _0222EE88 ; =0x01FF0000 - ldr r2, [r0, #0x28] - mov r0, #2 - ldr r3, [r2, #0] - and r2, r3, #0xff - and r3, r3, r1 - add r1, r2, #0xc - mov r2, r3, lsr #0x10 - str r1, [sp] - str r2, [sp, #4] - bl ov18_0222E8D8 - ldr r0, [sp] - cmp r0, #0xc0 - addlt sp, sp, #8 - ldmltia sp!, {r4, pc} - ldr r1, _0222EE8C ; =ov18_0222EE90 - mov r0, r4 - bl ov18_022463A4 - add sp, sp, #8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0222EE84: .word Unk_ov18_022532A0 -_0222EE88: .word 0x01FF0000 -_0222EE8C: .word ov18_0222EE90 - arm_func_end ov18_0222EE20 - - arm_func_start ov18_0222EE90 -ov18_0222EE90: ; 0x0222EE90 - stmfd sp!, {r4, lr} - sub sp, sp, #8 - ldr r1, _0222EEF4 ; =0x022532A0 - mov r4, r0 - ldr r0, [r1, #0] - ldr r1, _0222EEF8 ; =0x01FF0000 - ldr r2, [r0, #0x1c] - mov r0, #1 - ldr r3, [r2, #0] - and r2, r3, #0xff - and r3, r3, r1 - add r1, r2, #0xc - mov r2, r3, lsr #0x10 - str r1, [sp] - str r2, [sp, #4] - bl ov18_0222E8D8 - ldr r0, [sp] - cmp r0, #0xc0 - addlt sp, sp, #8 - ldmltia sp!, {r4, pc} - ldr r1, _0222EEFC ; =ov18_0222EF00 - mov r0, r4 - bl ov18_022463A4 - add sp, sp, #8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0222EEF4: .word Unk_ov18_022532A0 -_0222EEF8: .word 0x01FF0000 -_0222EEFC: .word ov18_0222EF00 - arm_func_end ov18_0222EE90 - - arm_func_start ov18_0222EF00 -ov18_0222EF00: ; 0x0222EF00 - stmfd sp!, {r4, lr} - sub sp, sp, #8 - ldr r1, _0222EF64 ; =0x022532A0 - mov r4, r0 - ldr r0, [r1, #0] - ldr r1, _0222EF68 ; =0x01FF0000 - ldr r2, [r0, #0x10] - mov r0, #0 - ldr r3, [r2, #0] - and r2, r3, #0xff - and r3, r3, r1 - add r1, r2, #0xc - mov r2, r3, lsr #0x10 - str r1, [sp] - str r2, [sp, #4] - bl ov18_0222E8D8 - ldr r0, [sp] - cmp r0, #0xc0 - addlt sp, sp, #8 - ldmltia sp!, {r4, pc} - ldr r1, _0222EF6C ; =ov18_0222EF70 - mov r0, r4 - bl ov18_022463A4 - add sp, sp, #8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0222EF64: .word Unk_ov18_022532A0 -_0222EF68: .word 0x01FF0000 -_0222EF6C: .word ov18_0222EF70 - arm_func_end ov18_0222EF00 - - arm_func_start ov18_0222EF70 -ov18_0222EF70: ; 0x0222EF70 - stmfd sp!, {r3, r4, r5, lr} - mov r1, r0 - mov r0, #0 - bl ov18_022463AC - ldr r4, _0222F028 ; =0x022532A0 - mov r5, #0 -_0222EF88: - ldr r0, [r4, #0] - add r0, r0, r5, lsl #2 - ldr r0, [r0, #0x48] - bl ov18_02243B3C - ldr r0, [r4, #0] - ldr r0, [r0, r5, lsl #2] - bl ov18_02244650 - add r5, r5, #1 - cmp r5, #4 - blt _0222EF88 - ldr r4, _0222F028 ; =0x022532A0 - mov r5, #0 -_0222EFB8: - ldr r0, [r4, #0] - add r0, r0, r5, lsl #2 - ldr r0, [r0, #0x40] - bl ov18_02243B3C - add r5, r5, #1 - cmp r5, #2 - blt _0222EFB8 - ldr r4, _0222F028 ; =0x022532A0 - mov r5, #0 -_0222EFDC: - ldr r0, [r4, #0] - add r0, r0, r5, lsl #2 - ldr r0, [r0, #0x38] - bl ov18_02245B74 - add r5, r5, #1 - cmp r5, #2 - blt _0222EFDC - ldr r4, _0222F028 ; =0x022532A0 - mov r5, #0 -_0222F000: - ldr r0, [r4, #0] - add r0, r0, r5, lsl #2 - ldr r0, [r0, #0x10] - bl ov18_02245B74 - add r5, r5, #1 - cmp r5, #0xa - blt _0222F000 - ldr r0, _0222F02C ; =0x022532A0 - bl ov18_0224508C - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0222F028: .word Unk_ov18_022532A0 -_0222F02C: .word Unk_ov18_022532A0 - arm_func_end ov18_0222EF70 - - .rodata - - - .global Unk_ov18_02248FEC -Unk_ov18_02248FEC: ; 0x02248FEC - .incbin "incbin/keyboard10.bin", 0x0, 0x4 - - .global Unk_ov18_02248FF0 -Unk_ov18_02248FF0: ; 0x02248FF0 - .incbin "incbin/keyboard10.bin", 0x4, 0x8 - 0x4 - - .global Unk_ov18_02248FF4 -Unk_ov18_02248FF4: ; 0x02248FF4 - .incbin "incbin/keyboard10.bin", 0x8, 0xC - 0x8 - - .global Unk_ov18_02248FF8 -Unk_ov18_02248FF8: ; 0x02248FF8 - .incbin "incbin/keyboard10.bin", 0xC, 0x10 - 0xC - - .global Unk_ov18_02248FFC -Unk_ov18_02248FFC: ; 0x02248FFC - .incbin "incbin/keyboard10.bin", 0x10, 0x14 - 0x10 - - .global Unk_ov18_02249000 -Unk_ov18_02249000: ; 0x02249000 - .incbin "incbin/keyboard10.bin", 0x14, 0x18 - 0x14 - - .global Unk_ov18_02249004 -Unk_ov18_02249004: ; 0x02249004 - .incbin "incbin/keyboard10.bin", 0x18, 0x1C - 0x18 - - .global Unk_ov18_02249008 -Unk_ov18_02249008: ; 0x02249008 - .incbin "incbin/keyboard10.bin", 0x1C, 0x20 - 0x1C - - .global Unk_ov18_0224900C -Unk_ov18_0224900C: ; 0x0224900C - .incbin "incbin/keyboard10.bin", 0x20, 0x24 - 0x20 - - .global Unk_ov18_02249010 -Unk_ov18_02249010: ; 0x02249010 - .incbin "incbin/keyboard10.bin", 0x24, 0x28 - 0x24 - - .global Unk_ov18_02249014 -Unk_ov18_02249014: ; 0x02249014 - .incbin "incbin/keyboard10.bin", 0x28, 0x2D - 0x28 - - .global Unk_ov18_02249019 -Unk_ov18_02249019: ; 0x02249019 - .incbin "incbin/keyboard10.bin", 0x2D, 0x32 - 0x2D - - .global Unk_ov18_0224901E -Unk_ov18_0224901E: ; 0x0224901E - .incbin "incbin/keyboard10.bin", 0x32, 0x38 - 0x32 - - .global Unk_ov18_02249024 -Unk_ov18_02249024: ; 0x02249024 - .incbin "incbin/keyboard10.bin", 0x38, 0x40 - 0x38 - - .global Unk_ov18_0224902C -Unk_ov18_0224902C: ; 0x0224902C - .incbin "incbin/keyboard10.bin", 0x40, 0x48 - 0x40 - - .global Unk_ov18_02249034 -Unk_ov18_02249034: ; 0x02249034 - .incbin "incbin/keyboard10.bin", 0x48, 0x50 - 0x48 - - .global Unk_ov18_0224903C -Unk_ov18_0224903C: ; 0x0224903C - .incbin "incbin/keyboard10.bin", 0x50, 0x6A - 0x50 - - .global Unk_ov18_02249056 -Unk_ov18_02249056: ; 0x02249056 - .incbin "incbin/keyboard10.bin", 0x6A, 0x92 - 0x6A - - .global Unk_ov18_0224907E -Unk_ov18_0224907E: ; 0x0224907E - .incbin "incbin/keyboard10.bin", 0x92, 0xCA - 0x92 - - .global Unk_ov18_022490B6 -Unk_ov18_022490B6: ; 0x022490B6 - .incbin "incbin/keyboard10.bin", 0xCA, 0x104 - 0xCA - - .global Unk_ov18_022490F0 -Unk_ov18_022490F0: ; 0x022490F0 - .incbin "incbin/keyboard10.bin", 0x104, 0xC - - - - .bss - - - .global Unk_ov18_022532A0 -Unk_ov18_022532A0: ; 0x022532A0 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/libaoss.s b/subprojects/NitroDWC/libraries/util/asm/libaoss.s deleted file mode 100644 index 5d222bf456..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/libaoss.s +++ /dev/null @@ -1,177 +0,0 @@ - .include "macros/function.inc" - .include "include/libaoss.inc" - - - - .text - - - arm_func_start ov18_0222F030 -ov18_0222F030: ; 0x0222F030 - stmdb sp!, {lr} - sub sp, sp, #0x104 - mov r0, #0x26c - mov r1, #4 - bl ov18_02245068 - ldr r3, _0222F130 ; =0x022532A4 - add r1, sp, #0 - str r0, [r3, #4] - mov r0, #0 - mov r2, #0x104 - strb r0, [r3] - bl MIi_CpuClear16 - mov r3, #0x50 - mov r2, #0xc - ldr r0, _0222F134 ; =0x022490FC - add r1, sp, #4 - strb r3, [sp] - strh r2, [sp, #2] - bl MI_CpuCopy8 - ldr r0, _0222F130 ; =0x022532A4 - mov r2, #3 - ldr r1, [r0, #4] - add ip, sp, #0 - strh r2, [r1] - ldr lr, [r0, #4] - mov r2, #0x41 - add r3, lr, #2 -_0222F09C: - ldrh r1, [ip] - ldrh r0, [ip, #2] - add ip, ip, #4 - subs r2, r2, #1 - strh r1, [r3] - strh r0, [r3, #2] - add r3, r3, #4 - bne _0222F09C - ldr r1, _0222F130 ; =0x022532A4 - mov r3, #1 - add r0, lr, #0x100 - strh r3, [r0, #6] - ldr r0, [r1, #4] - sub r2, r3, #2 - add r0, r0, #0x100 - strh r2, [r0, #8] - ldr r0, [r1, #4] - add r0, r0, #0x100 - strh r3, [r0, #0xa] - ldr r0, [r1, #4] - add r0, r0, #0x100 - strh r2, [r0, #0xc] - ldr r0, [r1, #4] - add r0, r0, #0x100 - strh r2, [r0, #0xe] - ldr r0, [r1, #4] - add r0, r0, #0x110 - bl OS_GetMacAddress - ldr r0, _0222F138 ; =ov18_0222F1F0 - ldr r1, _0222F13C ; =ov18_0222F200 - blx ov18_022269F8 - cmp r0, #0 - addeq sp, sp, #0x104 - ldmeqia sp!, {pc} - bl OS_Terminate - add sp, sp, #0x104 - ldmia sp!, {pc} - ; .align 2, 0 -_0222F130: .word Unk_ov18_022532A4 -_0222F134: .word Unk_ov18_022490FC -_0222F138: .word ov18_0222F1F0 -_0222F13C: .word ov18_0222F200 - arm_func_end ov18_0222F030 - - arm_func_start ov18_0222F140 -ov18_0222F140: ; 0x0222F140 - stmfd sp!, {r4, lr} - mov r4, r0 - blx ov18_02226ABC - cmp r4, #0 - beq _0222F17C - ldr r0, _0222F188 ; =0x022532A4 - ldr r2, [r0, #4] - ldrb r1, [r2, #0x116] - cmp r1, #0 - ldreqb r0, [r0] - cmpeq r0, #1 - bne _0222F17C - add r0, r2, #0x17 - add r0, r0, #0x100 - bl ov18_0223E4C0 -_0222F17C: - ldr r0, _0222F18C ; =0x022532A8 - bl ov18_0224508C - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0222F188: .word Unk_ov18_022532A4 -_0222F18C: .word Unk_ov18_022532A8 - arm_func_end ov18_0222F140 - - arm_func_start ov18_0222F190 -ov18_0222F190: ; 0x0222F190 - stmfd sp!, {r3, lr} - ldr r0, _0222F1EC ; =0x022532A4 - ldr r0, [r0, #4] - blx ov18_022246E4 - cmp r0, #0 - bne _0222F1B8 - ldr r1, _0222F1EC ; =0x022532A4 - mov r0, #1 - strb r0, [r1] - ldmia sp!, {r3, pc} -_0222F1B8: - ldr r0, _0222F1EC ; =0x022532A4 - ldr r0, [r0, #4] - ldrb r0, [r0, #0x116] - cmp r0, #1 - beq _0222F1DC - add r0, r0, #0xfd - and r0, r0, #0xff - cmp r0, #2 - bhi _0222F1E4 -_0222F1DC: - mov r0, #0 - ldmia sp!, {r3, pc} -_0222F1E4: - mov r0, #2 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222F1EC: .word Unk_ov18_022532A4 - arm_func_end ov18_0222F190 - - arm_func_start ov18_0222F1F0 -ov18_0222F1F0: ; 0x0222F1F0 - ldr ip, _0222F1FC ; =ov18_02245068 - mov r1, #0x20 - bx ip - ; .align 2, 0 -_0222F1FC: .word ov18_02245068 - arm_func_end ov18_0222F1F0 - - arm_func_start ov18_0222F200 -ov18_0222F200: ; 0x0222F200 - ldr ip, _0222F208 ; =ov18_022450D0 - bx ip - ; .align 2, 0 -_0222F208: .word ov18_022450D0 - arm_func_end ov18_0222F200 - - .rodata - - - .global Unk_ov18_022490FC -Unk_ov18_022490FC: ; 0x022490FC - .asciz "NINTENDO-DS" - - - - .bss - - - .global Unk_ov18_022532A4 -Unk_ov18_022532A4: ; 0x022532A4 - .space 0x4 - - .global Unk_ov18_022532A8 -Unk_ov18_022532A8: ; 0x022532A8 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/list_dwcutil.s b/subprojects/NitroDWC/libraries/util/asm/list_dwcutil.s deleted file mode 100644 index 52a3f54377..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/list_dwcutil.s +++ /dev/null @@ -1,85 +0,0 @@ - .include "macros/function.inc" - .include "include/list_dwcutil.inc" - - - - .text - - - arm_func_start ov18_02245974 -ov18_02245974: ; 0x02245974 - stmfd sp!, {r3, lr} - mov r0, #0x10 - mov r1, #4 - bl ov18_02245068 - mov r2, #0 - str r2, [r0, #0] - add r1, r0, #8 - str r1, [r0, #4] - str r0, [r0, #8] - str r2, [r0, #0xc] - ldmia sp!, {r3, pc} - arm_func_end ov18_02245974 - - arm_func_start ov18_022459A0 -ov18_022459A0: ; 0x022459A0 - stmfd sp!, {r0, r1, r2, r3} - stmfd sp!, {r3, lr} - add r0, sp, #8 - bl ov18_0224508C - ldmia sp!, {r3, lr} - add sp, sp, #0x10 - bx lr - arm_func_end ov18_022459A0 - - arm_func_start ov18_022459BC -ov18_022459BC: ; 0x022459BC - stmfd sp!, {r4, lr} - mov r4, r0 - mov r0, #1 - bl OS_DisableIrqMask - ldmia r4, {r2, r3} - str r3, [r2, #4] - ldr r3, [r4, #0] - ldr r2, [r4, #4] - mov r1, #0 - str r3, [r2, #0] - str r1, [r4, #4] - str r1, [r4, #0] - bl OS_EnableIrqMask - ldmia sp!, {r4, pc} - arm_func_end ov18_022459BC - - arm_func_start ov18_022459F4 -ov18_022459F4: ; 0x022459F4 - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r0, #1 - mov r4, r1 - bl OS_DisableIrqMask - ldr r1, [r5, #0] - str r4, [r1, #4] - ldr r1, [r5, #0] - stmia r4, {r1, r5} - str r4, [r5, #0] - bl OS_EnableIrqMask - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov18_022459F4 - - arm_func_start ov18_02245A24 -ov18_02245A24: ; 0x02245A24 - ldr ip, _02245A30 ; =ov18_022459F4 - add r0, r0, #8 - bx ip - ; .align 2, 0 -_02245A30: .word ov18_022459F4 - arm_func_end ov18_02245A24 - - arm_func_start ov18_02245A34 -ov18_02245A34: ; 0x02245A34 - ldr ip, _02245A40 ; =ov18_022459F4 - ldr r0, [r0, #4] - bx ip - ; .align 2, 0 -_02245A40: .word ov18_022459F4 - arm_func_end ov18_02245A34 \ No newline at end of file diff --git a/subprojects/NitroDWC/libraries/util/asm/macros/function.inc b/subprojects/NitroDWC/libraries/util/asm/macros/function.inc deleted file mode 100644 index f71cc4ccae..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/macros/function.inc +++ /dev/null @@ -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 \ No newline at end of file diff --git a/subprojects/NitroDWC/libraries/util/asm/main_dwcutil.s b/subprojects/NitroDWC/libraries/util/asm/main_dwcutil.s deleted file mode 100644 index 710301aa46..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/main_dwcutil.s +++ /dev/null @@ -1,493 +0,0 @@ - .include "macros/function.inc" - .include "include/main_dwcutil.inc" - - - - .text - - - arm_func_start DWC_StartUtility -DWC_StartUtility: ; 0x0222F20C - stmfd sp!, {r3, r4, r5, lr} - ldr r3, _0222F290 ; =0x022532AC - str r0, [r3, #4] - mov r0, r1 - mov r1, r2 - bl ov18_0222F298 - cmp r0, #0 - mvneq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, _0222F290 ; =0x022532AC - mov r1, #0 - strb r1, [r0, #1] - bl ov18_0222F334 - bl ov18_0222F3FC - bl ov18_0223E8D8 - ldr r0, _0222F294 ; =ov18_0222FF98 - bl ov18_0222F6C4 - ldr r4, _0222F290 ; =0x022532AC - mov r5, #0 -_0222F258: - bl ov18_022451C0 - ldr r0, [r4, #0xc] - blx r0 - mov r0, r5 - bl ov18_02246254 - bl ov18_02245820 - bl ov18_022460BC - bl OS_WaitVBlankIntr - ldrb r0, [r4, #1] - cmp r0, #0 - beq _0222F258 - bl ov18_0222F674 - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0222F290: .word Unk_ov18_022532AC -_0222F294: .word ov18_0222FF98 - arm_func_end DWC_StartUtility - - arm_func_start ov18_0222F298 -ov18_0222F298: ; 0x0222F298 - ldr r2, _0222F330 ; =0x022532AC - cmp r0, #0 - strb r0, [r2] - str r1, [r2, #8] - blt _0222F2B4 - cmp r0, #6 - ble _0222F2BC -_0222F2B4: - mov r0, #0 - bx lr -_0222F2BC: - cmp r0, #1 - bne _0222F2D4 - mov r1, r1, lsr #4 - bics r1, r1, #2 - movne r0, #0 - bxne lr -_0222F2D4: - ldr r1, _0222F330 ; =0x022532AC - ldr r1, [r1, #8] - mov r2, r1, lsl #0x1c - mov r2, r2, lsr #0x1c - cmp r2, #1 - movhi r0, #0 - bxhi lr - cmp r0, #0 - beq _0222F308 - mov r1, r1, lsr #4 - tst r1, #1 - movne r0, #0 - bxne lr -_0222F308: - cmp r0, #0 - bne _0222F328 - ldr r0, _0222F330 ; =0x022532AC - ldr r0, [r0, #8] - mov r0, r0, lsr #4 - tst r0, #1 - moveq r0, #0 - bxeq lr -_0222F328: - mov r0, #1 - bx lr - ; .align 2, 0 -_0222F330: .word Unk_ov18_022532AC - arm_func_end ov18_0222F298 - - arm_func_start ov18_0222F334 -ov18_0222F334: ; 0x0222F334 - stmfd sp!, {r3, lr} - ldr r2, _0222F3F0 ; =0x04000208 - mov r0, #0 - ldrh r1, [r2] - strh r0, [r2] - bl GX_DispOff - ldr r1, _0222F3F4 ; =0x04001000 - ldr r0, [r1, #0] - bic r0, r0, #0x10000 - str r0, [r1, #0] - bl OS_IsTickAvailable - cmp r0, #0 - bne _0222F36C - bl OS_Terminate -_0222F36C: - bl OS_IsAlarmAvailable - cmp r0, #0 - bne _0222F37C - bl OS_Terminate -_0222F37C: - mov r0, #0 - bl GX_VBlankIntr - bl FX_Init - mvn r0, #0 - bl FS_Init - bl TP_Init - bl RTC_Init - bl GX_DispOff - ldr r1, _0222F3F4 ; =0x04001000 - ldr r0, [r1, #0] - bic r0, r0, #0x10000 - str r0, [r1, #0] - bl ov18_02245E7C - ldr r0, _0222F3F8 ; =0x022532AC - ldr r0, [r0, #4] - bl ov18_02244FB8 - bl ov18_0224589C - bl ov18_022460F8 - bl ov18_02243440 - bl ov18_0224510C - bl ov18_02244114 - mov r0, #0x700 - mov r1, #0x20 - bl ov18_02245068 - str r0, [sp] - bl DWC_BM_Init - add r0, sp, #0 - bl ov18_0224508C - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222F3F0: .word 0x04000208 -_0222F3F4: .word 0x04001000 -_0222F3F8: .word Unk_ov18_022532AC - arm_func_end ov18_0222F334 - - arm_func_start ov18_0222F3FC -ov18_0222F3FC: ; 0x0222F3FC - stmfd sp!, {r4, lr} - mov r0, #0 - bl GX_VBlankIntr - mov r0, #1 - bl GX_SetBankForBG - mov r0, #2 - bl GX_SetBankForOBJ - mov r1, #0 - mov r2, r1 - mov r0, #1 - bl GX_SetGraphicsMode - mov r3, #0x4000000 - ldr r1, [r3, #0] - add r0, r3, #0x6c - bic r1, r1, #0x1f00 - str r1, [r3, #0] - ldr r2, [r3, #0] - mov r1, #0 - bic r2, r2, #0xe000 - str r2, [r3, #0] - bl GXx_SetMasterBrightness_ - mov r3, #0x4000000 - ldr r2, [r3, #0] - ldr r0, _0222F660 ; =0xFFCFFFEF - ldr r1, _0222F664 ; =0x00200010 - and r0, r2, r0 - orr r0, r0, #0x10 - add ip, r1, #0x3e00000 - orr r0, r0, #0x200000 - str r0, [r3, #0] - ldrh r1, [r3, #8] - mov lr, #0 - add r0, r3, #0x50 - bic r1, r1, #0x40 - strh r1, [r3, #8] - ldrh r4, [r3, #0xa] - mov r1, #0x3f - mov r2, #0x10 - bic r4, r4, #0x40 - strh r4, [r3, #0xa] - ldrh r4, [r3, #0xc] - bic r4, r4, #0x40 - strh r4, [r3, #0xc] - ldrh r4, [r3, #0xe] - bic r4, r4, #0x40 - strh r4, [r3, #0xe] - str lr, [ip] - str lr, [r3, #0x14] - str lr, [r3, #0x18] - str lr, [r3, #0x1c] - bl G2x_SetBlendBrightness_ - mov r0, #0x80 - bl GX_SetBankForSubBG - mov r0, #0x100 - bl GX_SetBankForSubOBJ - mov r0, #0 - bl GXS_SetGraphicsMode - ldr r1, _0222F668 ; =0x04001000 - ldr r0, [r1, #0] - bic r0, r0, #0x1f00 - str r0, [r1, #0] - ldr r0, [r1, #0] - bic r0, r0, #0xe000 - str r0, [r1, #0] - add r0, r1, #0x6c - mov r1, #0 - bl GXx_SetMasterBrightness_ - ldr r3, _0222F668 ; =0x04001000 - ldr r0, _0222F660 ; =0xFFCFFFEF - ldr r1, [r3, #0] - mov ip, #0 - and r0, r1, r0 - orr r0, r0, #0x10 - str r0, [r3, #0] - ldrh r2, [r3, #8] - add r0, r3, #0x50 - mov r1, #0x3f - bic r2, r2, #0x40 - strh r2, [r3, #8] - ldrh lr, [r3, #0xa] - mov r2, #0x10 - bic lr, lr, #0x40 - strh lr, [r3, #0xa] - ldrh lr, [r3, #0xc] - bic lr, lr, #0x40 - strh lr, [r3, #0xc] - ldrh lr, [r3, #0xe] - bic lr, lr, #0x40 - strh lr, [r3, #0xe] - str ip, [r3, #0x10] - str ip, [r3, #0x14] - str ip, [r3, #0x18] - str ip, [r3, #0x1c] - bl G2x_SetBlendBrightness_ - ldr r2, _0222F66C ; =0x04000008 - ldr r3, _0222F670 ; =0x0400100A - ldrh r0, [r2] - add r1, r2, #0x1000 - and r0, r0, #0x43 - orr r0, r0, #0xc00 - strh r0, [r2] - ldrh r0, [r2, #2] - and r0, r0, #0x43 - orr r0, r0, #0x108 - orr r0, r0, #0xc00 - strh r0, [r2, #2] - ldrh r0, [r2, #4] - and r0, r0, #0x43 - orr r0, r0, #0xe10 - strh r0, [r2, #4] - ldrh r0, [r2, #6] - and r0, r0, #0x43 - orr r0, r0, #0xf10 - strh r0, [r2, #6] - ldrh r0, [r1] - and r0, r0, #0x43 - orr r0, r0, #0xc00 - strh r0, [r1] - ldrh r0, [r3] - and r0, r0, #0x43 - orr r0, r0, #0xd00 - strh r0, [r3] - ldrh r0, [r3, #2] - and r0, r0, #0x43 - orr r0, r0, #0xe00 - strh r0, [r3, #2] - ldrh r0, [r3, #4] - mov r2, #0x4000000 - add r1, r2, #0x304 - and r0, r0, #0x43 - orr r0, r0, #0xf00 - strh r0, [r3, #4] - ldr r0, [r2, #0] - bic r0, r0, #0x38000000 - str r0, [r2, #0] - ldr r0, [r2, #0] - bic r0, r0, #0x7000000 - str r0, [r2, #0] - ldrh r0, [r1] - bic r0, r0, #0x8000 - strh r0, [r1] - bl ov18_02244424 - bl ov18_02245A44 - bl ov18_02245BD8 - bl ov18_022438B8 - bl GX_DispOn - ldr r2, _0222F668 ; =0x04001000 - mov r0, #1 - ldr r1, [r2, #0] - orr r1, r1, #0x10000 - str r1, [r2, #0] - bl GX_VBlankIntr - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0222F660: .word 0xFFCFFFEF -_0222F664: .word 0x00200010 -_0222F668: .word 0x04001000 -_0222F66C: .word 0x04000008 -_0222F670: .word 0x0400100A - arm_func_end ov18_0222F3FC - - arm_func_start ov18_0222F674 -ov18_0222F674: ; 0x0222F674 - stmfd sp!, {r3, lr} - bl GX_DispOff - ldr r1, _0222F6C0 ; =0x04001000 - ldr r0, [r1, #0] - bic r0, r0, #0x10000 - str r0, [r1, #0] - bl ov18_022460E8 - bl ov18_02245188 - bl ov18_02245910 - bl ov18_0223E968 - bl ov18_0224398C - bl ov18_02245B28 - bl ov18_02244528 - bl ov18_0224415C - bl ov18_022435F0 - bl ov18_0224620C - bl ov18_02244FF8 - bl ov18_02245F30 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222F6C0: .word 0x04001000 - arm_func_end ov18_0222F674 - - arm_func_start ov18_0222F6C4 -ov18_0222F6C4: ; 0x0222F6C4 - ldr r1, _0222F6D0 ; =0x022532AC - str r0, [r1, #0xc] - bx lr - ; .align 2, 0 -_0222F6D0: .word Unk_ov18_022532AC - arm_func_end ov18_0222F6C4 - - arm_func_start ov18_0222F6D4 -ov18_0222F6D4: ; 0x0222F6D4 - ldr r2, _0222F6E4 ; =0x022532AC - str r0, [r2, #0x10] - str r1, [r2, #0x14] - bx lr - ; .align 2, 0 -_0222F6E4: .word Unk_ov18_022532AC - arm_func_end ov18_0222F6D4 - - arm_func_start ov18_0222F6E8 -ov18_0222F6E8: ; 0x0222F6E8 - cmp r0, #0 - ldrne r2, _0222F70C ; =0x022532AC - ldrne r2, [r2, #0x10] - strne r2, [r0] - cmp r1, #0 - ldrne r0, _0222F70C ; =0x022532AC - ldrne r0, [r0, #0x14] - strne r0, [r1] - bx lr - ; .align 2, 0 -_0222F70C: .word Unk_ov18_022532AC - arm_func_end ov18_0222F6E8 - - arm_func_start ov18_0222F710 -ov18_0222F710: ; 0x0222F710 - ldr r2, _0222F720 ; =0x022532AC - str r0, [r2, #0x18] - str r1, [r2, #0x1c] - bx lr - ; .align 2, 0 -_0222F720: .word Unk_ov18_022532AC - arm_func_end ov18_0222F710 - - arm_func_start ov18_0222F724 -ov18_0222F724: ; 0x0222F724 - cmp r0, #0 - ldrne r2, _0222F748 ; =0x022532AC - ldrne r2, [r2, #0x18] - strne r2, [r0] - cmp r1, #0 - ldrne r0, _0222F748 ; =0x022532AC - ldrne r0, [r0, #0x1c] - strne r0, [r1] - bx lr - ; .align 2, 0 -_0222F748: .word Unk_ov18_022532AC - arm_func_end ov18_0222F724 - - arm_func_start ov18_0222F74C -ov18_0222F74C: ; 0x0222F74C - ldr r0, _0222F758 ; =0x022532AC - ldrb r0, [r0] - bx lr - ; .align 2, 0 -_0222F758: .word Unk_ov18_022532AC - arm_func_end ov18_0222F74C - - arm_func_start ov18_0222F75C -ov18_0222F75C: ; 0x0222F75C - ldr r0, _0222F770 ; =0x022532AC - ldr r0, [r0, #8] - mov r0, r0, lsl #0x1c - mov r0, r0, lsr #0x1c - bx lr - ; .align 2, 0 -_0222F770: .word Unk_ov18_022532AC - arm_func_end ov18_0222F75C - - arm_func_start ov18_0222F774 -ov18_0222F774: ; 0x0222F774 - ldr r1, _0222F78C ; =0x022532AC - ldr r1, [r1, #8] - tst r0, r1, lsr #4 - movne r0, #1 - moveq r0, #0 - bx lr - ; .align 2, 0 -_0222F78C: .word Unk_ov18_022532AC - arm_func_end ov18_0222F774 - - arm_func_start ov18_0222F790 -ov18_0222F790: ; 0x0222F790 - ldr r0, _0222F7A0 ; =0x022532AC - mov r1, #1 - strb r1, [r0, #1] - bx lr - ; .align 2, 0 -_0222F7A0: .word Unk_ov18_022532AC - arm_func_end ov18_0222F790 - - arm_func_start ov18_0222F7A4 -ov18_0222F7A4: ; 0x0222F7A4 - ldr r0, _0222F7E0 ; =0x022532AC - ldrb r1, [r0] - cmp r1, #6 - moveq r0, #0x38 - bxeq lr - cmp r1, #1 - bne _0222F7D4 - ldr r0, [r0, #8] - mov r0, r0, lsr #4 - tst r0, #2 - moveq r0, #0x37 - bxeq lr -_0222F7D4: - add r0, r1, #0x31 - and r0, r0, #0xff - bx lr - ; .align 2, 0 -_0222F7E0: .word Unk_ov18_022532AC - arm_func_end ov18_0222F7A4 - - .bss - - - .global Unk_ov18_022532AC -Unk_ov18_022532AC: ; 0x022532AC - .space 0x1 - - .global Unk_ov18_022532AD -Unk_ov18_022532AD: ; 0x022532AD - .space 0x3 - - .global Unk_ov18_022532B0 -Unk_ov18_022532B0: ; 0x022532B0 - .space 0x4 - - .global Unk_ov18_022532B4 -Unk_ov18_022532B4: ; 0x022532B4 - .space 0x4 - - .global Unk_ov18_022532B8 -Unk_ov18_022532B8: ; 0x022532B8 - .space 0x4 - - .global Unk_ov18_022532BC -Unk_ov18_022532BC: ; 0x022532BC - .space 0x10 - diff --git a/subprojects/NitroDWC/libraries/util/asm/message.s b/subprojects/NitroDWC/libraries/util/asm/message.s deleted file mode 100644 index 26acd16edf..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/message.s +++ /dev/null @@ -1,113 +0,0 @@ - .include "macros/function.inc" - .include "include/message.inc" - - - - .text - - - arm_func_start ov18_0222F7E4 -ov18_0222F7E4: ; 0x0222F7E4 - stmfd sp!, {r3, lr} - mov r0, #0x64 - mov r1, #4 - bl ov18_02245068 - mov r1, r0 - ldr r3, _0222F81C ; =0x022532CC - mov r0, #8 - mov r2, #0xc - str r1, [r3, #0] - bl ov18_02244008 - ldr r1, _0222F81C ; =0x022532CC - ldr r1, [r1, #0] - str r0, [r1, #0x60] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222F81C: .word Unk_ov18_022532CC - arm_func_end ov18_0222F7E4 - - arm_func_start ov18_0222F820 -ov18_0222F820: ; 0x0222F820 - ldr ip, _0222F82C ; =ov18_0224508C - ldr r0, _0222F830 ; =0x022532CC - bx ip - ; .align 2, 0 -_0222F82C: .word ov18_0224508C -_0222F830: .word Unk_ov18_022532CC - arm_func_end ov18_0222F820 - - arm_func_start ov18_0222F834 -ov18_0222F834: ; 0x0222F834 - stmfd sp!, {r3, r4, r5, lr} - ldr r1, _0222F888 ; =0x022532CC - mov r5, r0 - ldr r0, [r1, #0] - ldr r0, [r0, #0x60] - bl ov18_022440BC - mov r4, r0 - add r1, sp, #0 - mov r0, r5 - mov r2, #4 - bl ov18_02243738 - add r2, r0, #0x20 - str r0, [r4, #8] - add r0, r2, #0x10 - str r0, [r4, #0] - ldr r1, [r2, #4] - mov r0, r4 - add r1, r2, r1 - add r1, r1, #8 - str r1, [r4, #4] - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0222F888: .word Unk_ov18_022532CC - arm_func_end ov18_0222F834 - - arm_func_start ov18_0222F88C -ov18_0222F88C: ; 0x0222F88C - stmfd sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4, #8] - bl ov18_0224382C - ldr r0, _0222F8B4 ; =0x022532CC - mov r1, r4 - ldr r0, [r0, #0] - ldr r0, [r0, #0x60] - bl ov18_02244064 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0222F8B4: .word Unk_ov18_022532CC - arm_func_end ov18_0222F88C - - arm_func_start ov18_0222F8B8 -ov18_0222F8B8: ; 0x0222F8B8 - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 - ldmia r0, {r2, r3} - ldr r0, [r2, r1, lsl #2] - add r0, r3, r0 - bx lr - arm_func_end ov18_0222F8B8 - - arm_func_start ov18_0222F8D0 -ov18_0222F8D0: ; 0x0222F8D0 - stmfd sp!, {r3, lr} - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 - ldmia r0, {ip, lr} - ldr r0, [ip, r1, lsl #2] - cmp r2, #0 - add r0, lr, r0 - addge r3, r3, #0x30 - movge r1, r2, lsl #1 - strgeh r3, [r0, r1] - ldmia sp!, {r3, pc} - arm_func_end ov18_0222F8D0 - - .bss - - - .global Unk_ov18_022532CC -Unk_ov18_022532CC: ; 0x022532CC - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/move.s b/subprojects/NitroDWC/libraries/util/asm/move.s deleted file mode 100644 index 2e41ae3a90..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/move.s +++ /dev/null @@ -1,368 +0,0 @@ - .include "macros/function.inc" - .include "include/move.inc" - - .extern Unk_ov18_022532D8 - - .text - - - arm_func_start ov18_0222F8FC -ov18_0222F8FC: ; 0x0222F8FC - stmfd sp!, {r3, r4, lr} - sub sp, sp, #0x1c - mov r4, r0 - ldr r0, _0222F9D4 ; =0x0001E2A4 - mov r1, #0x20 - bl ov18_02245068 - ldr r2, _0222F9D8 ; =0x022532D0 - add r1, r0, #0x1e000 - str r0, [r2, #0] - str r4, [r1, #0x298] - ldr r0, [r2, #0] - mov r4, #0 - add r0, r0, #0x1e000 - strb r4, [r0, #0x2a0] - ldr r0, [r2, #0] - ldr lr, _0222F9DC ; =0x02249D6C - add r0, r0, #0x1e000 - strb r4, [r0, #0x2a1] - add ip, sp, #0 - ldmia lr!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - ldmia lr, {r0, r1, r2} - stmia ip, {r0, r1, r2} - ldr r0, _0222F9E0 ; =0x022532D8 - mov r1, r4 - ldr r0, [r0, #0] - bl ov18_0222F8B8 - ldr r1, _0222F9E0 ; =0x022532D8 - str r0, [sp, #4] - ldr r0, [r1, #0] - mov r1, #1 - bl ov18_0222F8B8 - str r0, [sp, #8] - bl ov18_0222F7A4 - strb r0, [sp, #0x18] - ldr r0, _0222F9D8 ; =0x022532D0 - add r1, sp, #0 - ldr r0, [r0, #0] - bl ov18_022425E8 - bl ov18_02242834 - cmp r0, #0 - bne _0222F9A8 - bl OS_Terminate -_0222F9A8: - mov r0, #0 - ldr r1, _0222F9E4 ; =ov18_0222FA9C - mov r2, r0 - mov r3, #0x78 - bl ov18_02246304 - ldr r1, _0222F9D8 ; =0x022532D0 - ldr r1, [r1, #0] - add r1, r1, #0x1e000 - str r0, [r1, #0x29c] - add sp, sp, #0x1c - ldmia sp!, {r3, r4, pc} - ; .align 2, 0 -_0222F9D4: .word 0x0001E2A4 -_0222F9D8: .word Unk_ov18_022532D0 -_0222F9DC: .word Unk_ov18_02249D6C -_0222F9E0: .word Unk_ov18_022532D8 -_0222F9E4: .word ov18_0222FA9C - arm_func_end ov18_0222F8FC - - arm_func_start ov18_0222F9E8 -ov18_0222F9E8: ; 0x0222F9E8 - ldr ip, _0222FA00 ; =ov18_02246304 - mov r0, #0 - ldr r1, _0222FA04 ; =ov18_0222FA08 - mov r2, r0 - mov r3, #0x78 - bx ip - ; .align 2, 0 -_0222FA00: .word ov18_02246304 -_0222FA04: .word ov18_0222FA08 - arm_func_end ov18_0222F9E8 - - arm_func_start ov18_0222FA08 -ov18_0222FA08: ; 0x0222FA08 - stmfd sp!, {r4, lr} - mov r4, r0 - bl ov18_022426D8 - cmp r0, #0 - ldmeqia sp!, {r4, pc} - ldr r0, _0222FA40 ; =0x022532D0 - mov r1, r4 - ldr r0, [r0, #0] - mov r3, #1 - add r2, r0, #0x1e000 - mov r0, #0 - strb r3, [r2, #0x2a1] - bl ov18_022463AC - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0222FA40: .word Unk_ov18_022532D0 - arm_func_end ov18_0222FA08 - - arm_func_start ov18_0222FA44 -ov18_0222FA44: ; 0x0222FA44 - ldr r0, _0222FA5C ; =0x022532D0 - ldr r0, [r0, #0] - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - bx lr - ; .align 2, 0 -_0222FA5C: .word Unk_ov18_022532D0 - arm_func_end ov18_0222FA44 - - arm_func_start ov18_0222FA60 -ov18_0222FA60: ; 0x0222FA60 - ldr r1, _0222FA74 ; =0x022532D0 - ldr r1, [r1, #0] - add r1, r1, #0x1e000 - str r0, [r1, #0x298] - bx lr - ; .align 2, 0 -_0222FA74: .word Unk_ov18_022532D0 - arm_func_end ov18_0222FA60 - - arm_func_start ov18_0222FA78 -ov18_0222FA78: ; 0x0222FA78 - ldr ip, _0222FA80 ; =ov18_0224287C - bx ip - ; .align 2, 0 -_0222FA80: .word ov18_0224287C - arm_func_end ov18_0222FA78 - - arm_func_start ov18_0222FA84 -ov18_0222FA84: ; 0x0222FA84 - ldr r0, _0222FA98 ; =0x022532D0 - ldr r0, [r0, #0] - add r0, r0, #0x2280 - add r0, r0, #0x1c000 - bx lr - ; .align 2, 0 -_0222FA98: .word Unk_ov18_022532D0 - arm_func_end ov18_0222FA84 - - arm_func_start ov18_0222FA9C -ov18_0222FA9C: ; 0x0222FA9C - stmfd sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, r0 - bl ov18_022428B0 - ldr r0, _0222FD34 ; =0x022532D0 - ldr r0, [r0, #0] - add r0, r0, #0x1e000 - ldrb r1, [r0, #0x2a0] - cmp r1, #0 - beq _0222FAF0 - ldrb r1, [r0, #0x2a1] - cmp r1, #0 - bne _0222FAF0 - ldr r1, [r0, #0x298] - cmp r1, #0 - addeq sp, sp, #4 - ldmeqia sp!, {r3, r4, pc} - mov r0, #0 - blx r1 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} -_0222FAF0: - add r0, sp, #1 - add r1, sp, #0 - bl ov18_02242C34 - ldrb r0, [sp, #1] - cmp r0, #0x1a - bgt _0222FB84 - bge _0222FC90 - cmp r0, #0x14 - bgt _0222FB74 - cmp r0, #0 - addge pc, pc, r0, lsl #2 - b _0222FD2C -_0222FB20: ; jump table - b _0222FD2C ; case 0 - b _0222FD2C ; case 1 - b _0222FD2C ; case 2 - b _0222FD2C ; case 3 - b _0222FD2C ; case 4 - b _0222FBA8 ; case 5 - b _0222FD2C ; case 6 - b _0222FD2C ; case 7 - b _0222FD2C ; case 8 - b _0222FD2C ; case 9 - b _0222FD2C ; case 10 - b _0222FD2C ; case 11 - b _0222FCD4 ; case 12 - b _0222FC08 ; case 13 - b _0222FD2C ; case 14 - b _0222FD2C ; case 15 - b _0222FD2C ; case 16 - b _0222FD2C ; case 17 - b _0222FD2C ; case 18 - b _0222FD2C ; case 19 - b _0222FC4C ; case 20 -_0222FB74: - cmp r0, #0x17 - beq _0222FC4C - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} -_0222FB84: - cmp r0, #0x1d - bgt _0222FB98 - beq _0222FC90 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} -_0222FB98: - cmp r0, #0x22 - beq _0222FD18 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} -_0222FBA8: - ldrb r0, [sp] - cmp r0, #0 - addeq sp, sp, #4 - ldmeqia sp!, {r3, r4, pc} - ldr r0, _0222FD34 ; =0x022532D0 - ldr r0, [r0, #0] - add r4, r0, #0x2280 - bl ov18_02242C78 - add r1, r4, #0x1c000 - mov r2, #0x16 - bl MIi_CpuCopy16 - ldr r0, _0222FD34 ; =0x022532D0 - ldr r0, [r0, #0] - add r0, r0, #0x1e000 - ldr r1, [r0, #0x298] - cmp r1, #0 - moveq r1, #1 - streqb r1, [r0, #0x2a0] - addeq sp, sp, #4 - ldmeqia sp!, {r3, r4, pc} - mov r0, #0 - blx r1 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} -_0222FC08: - ldrb r0, [sp] - cmp r0, #0 - addeq sp, sp, #4 - ldmeqia sp!, {r3, r4, pc} - ldr r0, _0222FD34 ; =0x022532D0 - ldr r0, [r0, #0] - add r0, r0, #0x1e000 - ldr r1, [r0, #0x298] - cmp r1, #0 - moveq r1, #1 - streqb r1, [r0, #0x2a0] - addeq sp, sp, #4 - ldmeqia sp!, {r3, r4, pc} - mov r0, #1 - blx r1 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} -_0222FC4C: - ldrb r0, [sp] - cmp r0, #0 - addeq sp, sp, #4 - ldmeqia sp!, {r3, r4, pc} - ldr r0, _0222FD34 ; =0x022532D0 - ldr r0, [r0, #0] - add r0, r0, #0x1e000 - ldr r1, [r0, #0x298] - cmp r1, #0 - moveq r1, #1 - streqb r1, [r0, #0x2a0] - addeq sp, sp, #4 - ldmeqia sp!, {r3, r4, pc} - mov r0, #3 - blx r1 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} -_0222FC90: - ldrb r0, [sp] - cmp r0, #0 - addeq sp, sp, #4 - ldmeqia sp!, {r3, r4, pc} - ldr r0, _0222FD34 ; =0x022532D0 - ldr r0, [r0, #0] - add r0, r0, #0x1e000 - ldr r1, [r0, #0x298] - cmp r1, #0 - moveq r1, #1 - streqb r1, [r0, #0x2a0] - addeq sp, sp, #4 - ldmeqia sp!, {r3, r4, pc} - mov r0, #4 - blx r1 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} -_0222FCD4: - ldrb r0, [sp] - cmp r0, #0 - addeq sp, sp, #4 - ldmeqia sp!, {r3, r4, pc} - ldr r0, _0222FD34 ; =0x022532D0 - ldr r0, [r0, #0] - add r0, r0, #0x1e000 - ldr r1, [r0, #0x298] - cmp r1, #0 - moveq r1, #1 - streqb r1, [r0, #0x2a0] - addeq sp, sp, #4 - ldmeqia sp!, {r3, r4, pc} - mov r0, #2 - blx r1 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} -_0222FD18: - mov r1, r4 - mov r0, #0 - bl ov18_022463AC - ldr r0, _0222FD38 ; =0x022532D0 - bl ov18_0224508C -_0222FD2C: - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - ; .align 2, 0 -_0222FD34: .word Unk_ov18_022532D0 -_0222FD38: .word Unk_ov18_022532D0 - arm_func_end ov18_0222FA9C - - .data - - - .global Unk_ov18_02249D28 -Unk_ov18_02249D28: ; 0x02249D28 - .asciz "dwc:/move/child.srl" - - .global Unk_ov18_02249D3C -Unk_ov18_02249D3C: ; 0x02249D3C - .ascii "dwc:/move/banner.plt" - .space 0x4 - - .global Unk_ov18_02249D54 -Unk_ov18_02249D54: ; 0x02249D54 - .asciz "dwc:/move/banner.char" - .space 0x2 - - .global Unk_ov18_02249D6C -Unk_ov18_02249D6C: ; 0x02249D6C - .word Unk_ov18_02249D28 - .space 0x8 - .word Unk_ov18_02249D54 - .word Unk_ov18_02249D3C - .word 0x159 - .space 0x4 - - - - .bss - - - .global Unk_ov18_022532D0 -Unk_ov18_022532D0: ; 0x022532D0 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/obj.s b/subprojects/NitroDWC/libraries/util/asm/obj.s deleted file mode 100644 index 6224c66e6f..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/obj.s +++ /dev/null @@ -1,147 +0,0 @@ - .include "macros/function.inc" - .include "include/obj.inc" - - - - .text - - - arm_func_start ov18_02245A44 -ov18_02245A44: ; 0x02245A44 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - ldr r0, _02245AD4 ; =0x0000080C - mov r1, #4 - bl ov18_02245068 - mov r1, r0 - ldr r3, _02245AD8 ; =0x022533E8 - mov r0, #0x200 - mov r2, #0x800 - str r1, [r3, #0] - bl MIi_CpuClearFast - mov r5, #0 - ldr r7, _02245AD8 ; =0x022533E8 - mov r6, r5 - mov r4, #0x40 - mov r8, #8 -_02245A80: - ldr r1, [r7, #0] - mov r0, r4 - mov r2, r8 - add r1, r1, r6 - bl ov18_02244008 - ldr r1, [r7, #0] - add r6, r6, #0x400 - add r1, r1, r5, lsl #2 - add r5, r5, #1 - str r0, [r1, #0x800] - cmp r5, #2 - blt _02245A80 - ldr r1, _02245ADC ; =ov18_02245AE0 - mov r0, #1 - mov r2, #0 - mov r3, #0xc8 - bl ov18_02246304 - ldr r1, _02245AD8 ; =0x022533E8 - ldr r1, [r1, #0] - str r0, [r1, #0x808] - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_02245AD4: .word 0x0000080C -_02245AD8: .word Unk_ov18_022533E8 -_02245ADC: .word ov18_02245AE0 - arm_func_end ov18_02245A44 - - arm_func_start ov18_02245AE0 -ov18_02245AE0: ; 0x02245AE0 - stmfd sp!, {r3, lr} - ldr r0, _02245B24 ; =0x022533E8 - mov r1, #0x800 - ldr r0, [r0, #0] - bl DC_FlushRange - ldr r0, _02245B24 ; =0x022533E8 - mov r1, #0 - ldr r0, [r0, #0] - mov r2, #0x400 - bl GX_LoadOAM - ldr r0, _02245B24 ; =0x022533E8 - mov r1, #0 - ldr r0, [r0, #0] - mov r2, #0x400 - add r0, r0, #0x400 - bl GXS_LoadOAM - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02245B24: .word Unk_ov18_022533E8 - arm_func_end ov18_02245AE0 - - arm_func_start ov18_02245B28 -ov18_02245B28: ; 0x02245B28 - stmfd sp!, {r3, lr} - ldr r1, _02245B4C ; =0x022533E8 - mov r0, #1 - ldr r1, [r1, #0] - ldr r1, [r1, #0x808] - bl ov18_022463CC - ldr r0, _02245B50 ; =0x022533E8 - bl ov18_0224508C - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02245B4C: .word Unk_ov18_022533E8 -_02245B50: .word Unk_ov18_022533E8 - arm_func_end ov18_02245B28 - - arm_func_start ov18_02245B54 -ov18_02245B54: ; 0x02245B54 - ldr r1, _02245B6C ; =0x022533E8 - ldr ip, _02245B70 ; =ov18_022440BC - ldr r1, [r1, #0] - add r0, r1, r0, lsl #2 - ldr r0, [r0, #0x800] - bx ip - ; .align 2, 0 -_02245B6C: .word Unk_ov18_022533E8 -_02245B70: .word ov18_022440BC - arm_func_end ov18_02245B54 - - arm_func_start ov18_02245B74 -ov18_02245B74: ; 0x02245B74 - mov r1, r0 - ldr r3, [r1, #0] - ldr r0, _02245BB4 ; =0xC1FFFCFF - ldr r2, _02245BB8 ; =0x022533E8 - and r0, r3, r0 - orr r0, r0, #0x200 - str r0, [r1, #0] - ldr r3, [r2, #0] - mov r2, #0 - add r0, r3, #0x400 - cmp r1, r0 - movhs r2, #1 - add r0, r3, r2, lsl #2 - ldr ip, _02245BBC ; =ov18_02244064 - ldr r0, [r0, #0x800] - bx ip - ; .align 2, 0 -_02245BB4: .word 0xC1FFFCFF -_02245BB8: .word Unk_ov18_022533E8 -_02245BBC: .word ov18_02244064 - arm_func_end ov18_02245B74 - - arm_func_start ov18_02245BC0 -ov18_02245BC0: ; 0x02245BC0 - ldr r2, _02245BD4 ; =0x022533E8 - ldr r2, [r2, #0] - add r0, r2, r0, lsl #10 - add r0, r0, r1, lsl #3 - bx lr - ; .align 2, 0 -_02245BD4: .word Unk_ov18_022533E8 - arm_func_end ov18_02245BC0 - - .bss - - - .global Unk_ov18_022533E8 -Unk_ov18_022533E8: ; 0x022533E8 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/objvram.s b/subprojects/NitroDWC/libraries/util/asm/objvram.s deleted file mode 100644 index 66b0d8fb70..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/objvram.s +++ /dev/null @@ -1,197 +0,0 @@ - .include "macros/function.inc" - .include "include/objvram.inc" - - - - .text - - - arm_func_start ov18_02245BD8 -ov18_02245BD8: ; 0x02245BD8 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov r0, #0x340 - mov r1, #4 - bl ov18_02245068 - ldr r4, _02245C94 ; =0x022533EC - mov sb, #0 - mov sl, sb - str r0, [r4, #0] - mov r8, #0x20 - mov r7, #0xc - mov r6, #0x300 - mov r5, #0x400 -_02245C08: - ldr r1, [r4, #0] - mov r0, r8 - mov r2, r7 - add r1, r1, sl - bl ov18_02244008 - ldr r1, [r4, #0] - add r1, r1, sl - str r0, [r1, #0x19c] - bl ov18_02245974 - ldr r1, [r4, #0] - add r1, r1, sl - str r0, [r1, #0x198] - ldr r0, [r4, #0] - add r0, r0, sl - add r0, r0, #0x100 - strh r6, [r0, #0x88] - ldr r0, [r4, #0] - add r0, r0, sl - add r0, r0, #0x100 - strh r5, [r0, #0x94] - ldr r0, [r4, #0] - add r1, r0, sl - ldr r0, [r1, #0x198] - add r1, r1, #0x180 - bl ov18_02245A34 - ldr r0, [r4, #0] - add r1, r0, sl - ldr r0, [r1, #0x198] - add r1, r1, #0x18c - bl ov18_02245A24 - add sb, sb, #1 - cmp sb, #2 - add sl, sl, #0x1a0 - blt _02245C08 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ; .align 2, 0 -_02245C94: .word Unk_ov18_022533EC - arm_func_end ov18_02245BD8 - - arm_func_start ov18_02245C98 -ov18_02245C98: ; 0x02245C98 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov r5, r0 - mov r0, #0x1a0 - mul sb, r5, r0 - ldr r0, _02245E0C ; =0x022533EC - mov r6, r1 - ldr r0, [r0, #0] - mov sl, r2 - add r0, r0, sb - ldr r0, [r0, #0x19c] - mov r4, r3 - bl ov18_022440BC - add r1, r6, #3 - bic r1, r1, #3 - mov r6, r0 - mov r8, r1, asr #2 - mov r0, #1 - strh r8, [r6, #0xa] - bl OS_DisableIrqMask - mov r7, r0 - cmp sl, #0 - mov r0, #0x1a0 - beq _02245D74 - ldr r1, _02245E0C ; =0x022533EC - ldr r1, [r1, #0] - mla r0, r5, r0, r1 - add r5, r0, #0x180 - add r0, r0, #0x18c - cmp r5, r0 - beq _02245D54 - add r0, r1, sb - add r1, r0, #0x18c -_02245D18: - ldr r0, [r5, #4] - ldrh sl, [r5, #8] - ldrh r3, [r5, #0xa] - ldrh r2, [r0, #8] - add sl, sl, r3 - add r3, sl, r8 - cmp r3, r2 - bgt _02245D48 - mov r1, r6 - strh sl, [r6, #8] - bl ov18_022459F4 - b _02245D54 -_02245D48: - mov r5, r0 - cmp r0, r1 - bne _02245D18 -_02245D54: - ldr r0, _02245E0C ; =0x022533EC - ldr r0, [r0, #0] - add r0, r0, sb - add r0, r0, #0x18c - cmp r5, r0 - bne _02245DF4 - bl OS_Terminate - b _02245DF4 -_02245D74: - ldr r1, _02245E0C ; =0x022533EC - ldr r1, [r1, #0] - mla r0, r5, r0, r1 - add r5, r0, #0x18c - add r0, r0, #0x180 - cmp r5, r0 - beq _02245DD8 - add r0, r1, sb - add r0, r0, #0x180 -_02245D98: - ldr sl, [r5] - ldrh r3, [r5, #8] - ldrh r2, [sl, #8] - ldrh r1, [sl, #0xa] - sub r3, r3, r8 - add r1, r2, r1 - cmp r3, r1 - blt _02245DCC - mov r0, r5 - mov r1, r6 - strh r3, [r6, #8] - bl ov18_022459F4 - b _02245DD8 -_02245DCC: - mov r5, sl - cmp sl, r0 - bne _02245D98 -_02245DD8: - ldr r0, _02245E0C ; =0x022533EC - ldr r0, [r0, #0] - add r0, r0, sb - add r0, r0, #0x180 - cmp r5, r0 - bne _02245DF4 - bl OS_Terminate -_02245DF4: - ldrh r1, [r6, #8] - mov r0, r7 - str r1, [r4, #0] - bl OS_EnableIrqMask - mov r0, r6 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ; .align 2, 0 -_02245E0C: .word Unk_ov18_022533EC - arm_func_end ov18_02245C98 - - arm_func_start ov18_02245E10 -ov18_02245E10: ; 0x02245E10 - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, #0 - bl ov18_022459BC - ldr r0, _02245E4C ; =0x022533EC - ldr r1, [r0, #0] - add r0, r1, #0x1a0 - cmp r5, r0 - movhs r4, #1 - mov r0, #0x1a0 - mla r0, r4, r0, r1 - ldr r0, [r0, #0x19c] - mov r1, r5 - bl ov18_02244064 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02245E4C: .word Unk_ov18_022533EC - arm_func_end ov18_02245E10 - - .bss - - - .global Unk_ov18_022533EC -Unk_ov18_022533EC: ; 0x022533EC - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/rakuraku.s b/subprojects/NitroDWC/libraries/util/asm/rakuraku.s deleted file mode 100644 index 566656b697..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/rakuraku.s +++ /dev/null @@ -1,168 +0,0 @@ - .include "macros/function.inc" - .include "include/rakuraku.inc" - - - - .text - - - arm_func_start ov18_0222FD3C -ov18_0222FD3C: ; 0x0222FD3C - stmfd sp!, {r3, lr} - sub sp, sp, #8 - mov r0, #0xc - sub r1, r0, #0x10 - bl ov18_02245068 - ldr r1, _0222FD98 ; =0x022532D4 - ldr ip, _0222FD9C ; =ov18_0222FEDC - str r0, [r1, #0] - ldr r2, _0222FDA0 ; =ov18_0222FEB4 - ldr r3, _0222FDA4 ; =ov18_0222FECC - str ip, [sp] - mov ip, #0x800 - mov r0, #0xf - mov r1, #0x40 - str ip, [sp, #4] - blx ov18_0222AB50 - cmp r0, #1 - beq _0222FD88 - bl OS_Terminate -_0222FD88: - mov r0, #0xa - bl OS_Sleep - add sp, sp, #8 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222FD98: .word Unk_ov18_022532D4 -_0222FD9C: .word ov18_0222FEDC -_0222FDA0: .word ov18_0222FEB4 -_0222FDA4: .word ov18_0222FECC - arm_func_end ov18_0222FD3C - - arm_func_start ov18_0222FDA8 -ov18_0222FDA8: ; 0x0222FDA8 - stmfd sp!, {r3, lr} - blx ov18_0222AC38 - cmp r0, #1 - beq _0222FDBC - bl OS_Terminate -_0222FDBC: - ldr r0, _0222FDC8 ; =0x022532D4 - bl ov18_0224508C - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222FDC8: .word Unk_ov18_022532D4 - arm_func_end ov18_0222FDA8 - - arm_func_start ov18_0222FDCC -ov18_0222FDCC: ; 0x0222FDCC - stmfd sp!, {r3, lr} - sub sp, sp, #0xe8 - ldr r1, _0222FE84 ; =0x022532D4 - ldr r1, [r1, #0] - ldr r1, [r1, #0] - cmp r1, #7 - addls pc, pc, r1, lsl #2 - b _0222FE7C -_0222FDEC: ; jump table - b _0222FE0C ; case 0 - b _0222FE0C ; case 1 - b _0222FE18 ; case 2 - b _0222FE0C ; case 3 - b _0222FE24 ; case 4 - b _0222FE0C ; case 5 - b _0222FE30 ; case 6 - b _0222FE78 ; case 7 -_0222FE0C: - add sp, sp, #0xe8 - mov r0, #0 - ldmia sp!, {r3, pc} -_0222FE18: - add sp, sp, #0xe8 - mov r0, #1 - ldmia sp!, {r3, pc} -_0222FE24: - add sp, sp, #0xe8 - mov r0, #2 - ldmia sp!, {r3, pc} -_0222FE30: - add r0, sp, #0 - blx ov18_0222AD04 - cmp r0, #1 - beq _0222FE44 - bl OS_Terminate -_0222FE44: - ldr r0, [sp, #0x20] - cmp r0, #0 - blt _0222FE6C - cmp r0, #3 - bgt _0222FE6C - ldr r0, [sp, #0x24] - cmp r0, #1 - addeq sp, sp, #0xe8 - moveq r0, #3 - ldmeqia sp!, {r3, pc} -_0222FE6C: - add sp, sp, #0xe8 - mov r0, #5 - ldmia sp!, {r3, pc} -_0222FE78: - mov r0, #4 -_0222FE7C: - add sp, sp, #0xe8 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222FE84: .word Unk_ov18_022532D4 - arm_func_end ov18_0222FDCC - - arm_func_start ov18_0222FE88 -ov18_0222FE88: ; 0x0222FE88 - stmfd sp!, {r3, lr} - sub sp, sp, #0xe8 - add r0, sp, #0 - blx ov18_0222AD04 - cmp r0, #1 - beq _0222FEA4 - bl OS_Terminate -_0222FEA4: - add r0, sp, #0 - bl ov18_0223E3AC - add sp, sp, #0xe8 - ldmia sp!, {r3, pc} - arm_func_end ov18_0222FE88 - - arm_func_start ov18_0222FEB4 -ov18_0222FEB4: ; 0x0222FEB4 - ldr r3, _0222FEC8 ; =0x022532D4 - ldmia r0, {r0, r1, r2} - ldr r3, [r3, #0] - stmia r3, {r0, r1, r2} - bx lr - ; .align 2, 0 -_0222FEC8: .word Unk_ov18_022532D4 - arm_func_end ov18_0222FEB4 - - arm_func_start ov18_0222FECC -ov18_0222FECC: ; 0x0222FECC - ldr ip, _0222FED8 ; =ov18_02245068 - mov r1, #0x20 - bx ip - ; .align 2, 0 -_0222FED8: .word ov18_02245068 - arm_func_end ov18_0222FECC - - arm_func_start ov18_0222FEDC -ov18_0222FEDC: ; 0x0222FEDC - ldr ip, _0222FEE4 ; =ov18_022450D0 - bx ip - ; .align 2, 0 -_0222FEE4: .word ov18_022450D0 - arm_func_end ov18_0222FEDC - - .bss - - - .global Unk_ov18_022532D4 -Unk_ov18_022532D4: ; 0x022532D4 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/sceneend.s b/subprojects/NitroDWC/libraries/util/asm/sceneend.s deleted file mode 100644 index 4b9164e99d..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/sceneend.s +++ /dev/null @@ -1,61 +0,0 @@ - .include "macros/function.inc" - .include "include/sceneend.inc" - - .extern Unk_ov18_022532D8 - - .text - - - arm_func_start ov18_0222FEE8 -ov18_0222FEE8: ; 0x0222FEE8 - stmfd sp!, {r3, lr} - mov r0, #3 - mov r1, #1 - mov r2, #0x3f - mov r3, #0x14 - bl ov18_02244194 - mov r0, #3 - mov r1, #0 - mov r2, #0x3f - mov r3, #0x14 - bl ov18_02244194 - ldr r0, _0222FF20 ; =ov18_0222FF24 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222FF20: .word ov18_0222FF24 - arm_func_end ov18_0222FEE8 - - arm_func_start ov18_0222FF24 -ov18_0222FF24: ; 0x0222FF24 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - mov r1, r0 - bl ov18_0224641C - mov r0, #1 - mov r1, #0 - bl ov18_0224641C - mov r0, #1 - bl ov18_02243EA4 - mov r0, #0 - bl ov18_02243EA4 - bl ov18_0222BBAC - bl ov18_0222B930 - ldr r0, _0222FF94 ; =0x022532D8 - ldr r0, [r0, #0] - bl ov18_0222F88C - bl ov18_0222F820 - bl ov18_0223DDB8 - bl ov18_0222F790 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222FF94: .word Unk_ov18_022532D8 - arm_func_end ov18_0222FF24 \ No newline at end of file diff --git a/subprojects/NitroDWC/libraries/util/asm/sceneinit.s b/subprojects/NitroDWC/libraries/util/asm/sceneinit.s deleted file mode 100644 index 3888754aa3..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/sceneinit.s +++ /dev/null @@ -1,314 +0,0 @@ - .include "macros/function.inc" - .include "include/sceneinit.inc" - - - - .text - - - arm_func_start ov18_0222FF98 -ov18_0222FF98: ; 0x0222FF98 - stmfd sp!, {r3, lr} - bl ov18_0223DD74 - bl ov18_0222F7E4 - bl ov18_0222B910 - bl ov18_0222BB34 - bl ov18_0222B580 - bl ov18_0222F74C - cmp r0, #1 - bne _0222FFE0 - mov r0, #2 - bl ov18_0222F774 - cmp r0, #0 - beq _0222FFE0 - ldr r0, _02230110 ; =0x02249E14 - bl ov18_0222F834 - ldr r1, _02230114 ; =0x022532D8 - str r0, [r1, #0] - b _0222FFF8 -_0222FFE0: - bl ov18_0222F74C - ldr r1, _02230118 ; =0x02249DF8 - ldr r0, [r1, r0, lsl #2] - bl ov18_0222F834 - ldr r1, _02230114 ; =0x022532D8 - str r0, [r1, #0] -_0222FFF8: - ldr r0, _0223011C ; =0x02249E24 - bl ov18_0222B6A0 - mov r1, r0 - mov r0, #1 - bl ov18_02243E74 - ldr r0, _02230120 ; =0x02249E38 - bl ov18_0222B6A0 - mov r1, r0 - mov r0, #0 - bl ov18_02243E74 - ldr r0, _02230124 ; =0x02249E4C - ldr r1, _02230128 ; =0x020C078C - bl ov18_0222B700 - ldr r0, _0223012C ; =0x02249E60 - ldr r1, _02230130 ; =0x020C0108 - bl ov18_0222B700 - ldr r0, _02230134 ; =0x02249E74 - ldr r1, _02230138 ; =0x020C0314 - bl ov18_0222B700 - ldr r0, _0223013C ; =0x02249E8C - ldr r1, _02230140 ; =0x020C01B8 - bl ov18_0222B700 - ldr r0, _02230144 ; =0x02249EA4 - ldr r1, _02230148 ; =0x020C07EC - bl ov18_0222B700 - ldr r0, _0223014C ; =0x02249EBC - ldr r1, _02230150 ; =GX_LoadBGPltt - bl ov18_0222B700 - ldr r0, _02230154 ; =0x02249ED4 - ldr r1, _02230158 ; =0x020C02BC - bl ov18_0222B700 - ldr r0, _0223015C ; =0x02249EEC - ldr r1, _02230160 ; =0x020C0160 - bl ov18_0222B700 - bl ov18_0222F75C - cmp r0, #0 - beq _02230098 - cmp r0, #1 - beq _022300A8 - b _022300B4 -_02230098: - ldr r0, _02230164 ; =0x02249F04 - ldr r1, _02230168 ; =GXS_LoadBG1Scr - bl ov18_0222B700 - b _022300B4 -_022300A8: - ldr r0, _0223016C ; =0x02249F18 - ldr r1, _02230168 ; =GXS_LoadBG1Scr - bl ov18_0222B700 -_022300B4: - ldr ip, _02230170 ; =0x0400100A - mov r0, #1 - ldrh r2, [ip] - sub r3, ip, #0x1000 - mov r1, #2 - bic r2, r2, #3 - orr r2, r2, #3 - strh r2, [ip] - ldrh r2, [r3] - bic r2, r2, #3 - orr r2, r2, #3 - strh r2, [r3] - ldrh r2, [r3] - bic r2, r2, #3 - orr r2, r2, #3 - strh r2, [r3] - bl ov18_02244C84 - mov r0, #0 - mov r1, #2 - bl ov18_02244C84 - ldr r0, _02230174 ; =ov18_02230178 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02230110: .word Unk_ov18_02249E14 -_02230114: .word Unk_ov18_022532D8 -_02230118: .word Unk_ov18_02249DF8 -_0223011C: .word Unk_ov18_02249E24 -_02230120: .word Unk_ov18_02249E38 -_02230124: .word Unk_ov18_02249E4C -_02230128: .word 0x020C078C -_0223012C: .word Unk_ov18_02249E60 -_02230130: .word 0x020C0108 -_02230134: .word Unk_ov18_02249E74 -_02230138: .word 0x020C0314 -_0223013C: .word Unk_ov18_02249E8C -_02230140: .word 0x020C01B8 -_02230144: .word Unk_ov18_02249EA4 -_02230148: .word 0x020C07EC -_0223014C: .word Unk_ov18_02249EBC -_02230150: .word GX_LoadBGPltt -_02230154: .word Unk_ov18_02249ED4 -_02230158: .word 0x020C02BC -_0223015C: .word Unk_ov18_02249EEC -_02230160: .word 0x020C0160 -_02230164: .word Unk_ov18_02249F04 -_02230168: .word GXS_LoadBG1Scr -_0223016C: .word Unk_ov18_02249F18 -_02230170: .word 0x0400100A -_02230174: .word ov18_02230178 - arm_func_end ov18_0222FF98 - - arm_func_start ov18_02230178 -ov18_02230178: ; 0x02230178 - stmfd sp!, {r3, lr} - mov r0, #2 - mov r2, r0 - mov r1, #1 - mov r3, #0x14 - bl ov18_02244194 - mov r0, #2 - mov r2, r0 - mov r1, #0 - mov r3, #0x14 - bl ov18_02244194 - ldr r0, _022301B0 ; =ov18_022301B4 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022301B0: .word ov18_022301B4 - arm_func_end ov18_02230178 - - arm_func_start ov18_022301B4 -ov18_022301B4: ; 0x022301B4 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_0222F75C - cmp r0, #0 - beq _022301F0 - cmp r0, #1 - beq _02230208 - ldmia sp!, {r3, pc} -_022301F0: - mov r0, #0 - mov r1, #1 - bl ov18_0222F6D4 - ldr r0, _02230220 ; =ov18_02230228 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_02230208: - mov r0, #1 - mov r1, r0 - bl ov18_0222F6D4 - ldr r0, _02230224 ; =ov18_0223A6B4 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02230220: .word ov18_02230228 -_02230224: .word ov18_0223A6B4 - arm_func_end ov18_022301B4 - - .data - - - .global Unk_ov18_02249D88 -Unk_ov18_02249D88: ; 0x02249D88 - .asciz "msg/kor.bmg.l" - .space 0x2 - - .global Unk_ov18_02249D98 -Unk_ov18_02249D98: ; 0x02249D98 - .asciz "msg/eng.bmg.l" - .space 0x2 - - .global Unk_ov18_02249DA8 -Unk_ov18_02249DA8: ; 0x02249DA8 - .asciz "msg/ita.bmg.l" - .space 0x2 - - .global Unk_ov18_02249DB8 -Unk_ov18_02249DB8: ; 0x02249DB8 - .asciz "msg/ger.bmg.l" - .space 0x2 - - .global Unk_ov18_02249DC8 -Unk_ov18_02249DC8: ; 0x02249DC8 - .asciz "msg/fre.bmg.l" - .space 0x2 - - .global Unk_ov18_02249DD8 -Unk_ov18_02249DD8: ; 0x02249DD8 - .asciz "msg/spa.bmg.l" - .space 0x2 - - .global Unk_ov18_02249DE8 -Unk_ov18_02249DE8: ; 0x02249DE8 - .asciz "msg/jap.bmg.l" - .space 0x2 - - .global Unk_ov18_02249DF8 -Unk_ov18_02249DF8: ; 0x02249DF8 - .word Unk_ov18_02249DE8 - .word Unk_ov18_02249D98 - .word Unk_ov18_02249DC8 - .word Unk_ov18_02249DB8 - .word Unk_ov18_02249DA8 - .word Unk_ov18_02249DD8 - .word Unk_ov18_02249D88 - - .global Unk_ov18_02249E14 -Unk_ov18_02249E14: ; 0x02249E14 - .asciz "msg/usa.bmg.l" - .space 0x2 - - .global Unk_ov18_02249E24 -Unk_ov18_02249E24: ; 0x02249E24 - .asciz "char/jtMain.nce.l" - .space 0x2 - - .global Unk_ov18_02249E38 -Unk_ov18_02249E38: ; 0x02249E38 - .asciz "char/jbMain.nce.l" - .space 0x2 - - .global Unk_ov18_02249E4C -Unk_ov18_02249E4C: ; 0x02249E4C - .asciz "char/jtBgMain.ncg.l" - - .global Unk_ov18_02249E60 -Unk_ov18_02249E60: ; 0x02249E60 - .asciz "char/jtBgMain.ncl.l" - - .global Unk_ov18_02249E74 -Unk_ov18_02249E74: ; 0x02249E74 - .ascii "char/jtObjMain.ncg.l" - .space 0x4 - - .global Unk_ov18_02249E8C -Unk_ov18_02249E8C: ; 0x02249E8C - .ascii "char/xtObjMain.ncl.l" - .space 0x4 - - .global Unk_ov18_02249EA4 -Unk_ov18_02249EA4: ; 0x02249EA4 - .ascii "char/jbBgStep1.ncg.l" - .space 0x4 - - .global Unk_ov18_02249EBC -Unk_ov18_02249EBC: ; 0x02249EBC - .ascii "char/jbBgStep1.ncl.l" - .space 0x4 - - .global Unk_ov18_02249ED4 -Unk_ov18_02249ED4: ; 0x02249ED4 - .ascii "char/jbObjMain.ncg.l" - .space 0x4 - - .global Unk_ov18_02249EEC -Unk_ov18_02249EEC: ; 0x02249EEC - .ascii "char/ybObjMain.ncl.l" - .space 0x4 - - .global Unk_ov18_02249F04 -Unk_ov18_02249F04: ; 0x02249F04 - .ascii "char/jtTop.nsc.l" - .space 0x4 - - .global Unk_ov18_02249F18 -Unk_ov18_02249F18: ; 0x02249F18 - .ascii "char/jtStep1.nsc.l" - .space 0x2 - - - - .bss - - - .global Unk_ov18_022532D8 -Unk_ov18_022532D8: ; 0x022532D8 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/scenemenu.s b/subprojects/NitroDWC/libraries/util/asm/scenemenu.s deleted file mode 100644 index bf1eed20a0..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/scenemenu.s +++ /dev/null @@ -1,490 +0,0 @@ - .include "macros/function.inc" - .include "include/scenemenu.inc" - - - - .text - - - arm_func_start ov18_02230228 -ov18_02230228: ; 0x02230228 - stmfd sp!, {r3, lr} - bl ov18_022302A4 - mov r0, #0 - bl ov18_0222BBC0 - mov r0, #0x2e - sub r1, r0, #0x2f - mov r2, #0 - bl ov18_0222B594 - mov r0, #4 - bl ov18_0223F4D0 - ldr r0, _0223028C ; =0x022532DC - ldr r3, _02230290 ; =0x0224911A - ldrb r0, [r0] - ldr r1, _02230294 ; =0x0224911E - ldr r2, _02230298 ; =0x0224911C - mov ip, r0, lsl #3 - ldrh r0, [r3, ip] - ldrh r1, [r1, ip] - ldrh r2, [r2, ip] - ldr r3, _0223029C ; =0x02249120 - ldrh r3, [r3, ip] - bl ov18_0222BA04 - ldr r0, _022302A0 ; =ov18_02230390 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223028C: .word Unk_ov18_022532DC -_02230290: .word Unk_ov18_0224911A -_02230294: .word 0x0224911E -_02230298: .word 0x0224911C -_0223029C: .word 0x02249120 -_022302A0: .word ov18_02230390 - arm_func_end ov18_02230228 - - arm_func_start ov18_022302A4 -ov18_022302A4: ; 0x022302A4 - stmfd sp!, {r3, lr} - sub sp, sp, #0x18 - ldr ip, _02230368 ; =0x0224912A - add r3, sp, #0 - mov r2, #0xb -_022302B8: - ldrb r1, [ip] - ldrb r0, [ip, #1] - add ip, ip, #2 - strb r1, [r3] - strb r0, [r3, #1] - add r3, r3, #2 - subs r2, r2, #1 - bne _022302B8 - ldr r0, _0223036C ; =0x02249F2C - ldr r1, _02230370 ; =0x020C07EC - bl ov18_0222B700 - ldr r0, _02230374 ; =0x02249F44 - ldr r1, _02230378 ; =GX_LoadBGPltt - bl ov18_0222B700 - ldr r0, _0223037C ; =0x02249F5C - ldr r1, _02230380 ; =GX_LoadBG2Scr - bl ov18_0222B700 - add r0, sp, #0 - bl ov18_0222B6A0 - mov r1, #0 - mov r2, #4 - bl ov18_02243738 - ldr r1, _02230384 ; =0x022532DC - ldr r2, _02230388 ; =0x04001008 - str r0, [r1, #4] - ldrh r0, [r2] - ldr r1, _0223038C ; =0x0400000A - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2] - ldrh r0, [r2, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2, #2] - ldrh r0, [r1] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1] - ldrh r0, [r1, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1, #2] - add sp, sp, #0x18 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02230368: .word Unk_ov18_0224912A -_0223036C: .word Unk_ov18_02249F2C -_02230370: .word 0x020C07EC -_02230374: .word Unk_ov18_02249F44 -_02230378: .word GX_LoadBGPltt -_0223037C: .word Unk_ov18_02249F5C -_02230380: .word GX_LoadBG2Scr -_02230384: .word Unk_ov18_022532DC -_02230388: .word 0x04001008 -_0223038C: .word 0x0400000A - arm_func_end ov18_022302A4 - - arm_func_start ov18_02230390 -ov18_02230390: ; 0x02230390 - stmfd sp!, {r3, lr} - mov r1, #1 - mov r2, r1 - mov r0, #2 - mov r3, #8 - bl ov18_02244194 - mov r0, #2 - mov r1, #0 - mov r2, #0x14 - mov r3, #8 - bl ov18_02244194 - mov r0, #1 - mov r1, r0 - bl ov18_02244C84 - mov r0, #0 - mov r1, #0x14 - bl ov18_02244C84 - ldr r0, _022303E0 ; =ov18_022303E4 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022303E0: .word ov18_022303E4 - arm_func_end ov18_02230390 - - arm_func_start ov18_022303E4 -ov18_022303E4: ; 0x022303E4 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_0222B790 - ldr r0, _0223041C ; =ov18_02230420 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223041C: .word ov18_02230420 - arm_func_end ov18_022303E4 - - arm_func_start ov18_02230420 -ov18_02230420: ; 0x02230420 - stmfd sp!, {r3, lr} - bl ov18_0222B034 - mvn r1, #1 - cmp r0, r1 - ldmeqia sp!, {r3, pc} - bl ov18_0222B0A8 - ldr r0, _02230444 ; =ov18_02230448 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02230444: .word ov18_02230448 - arm_func_end ov18_02230420 - - arm_func_start ov18_02230448 -ov18_02230448: ; 0x02230448 - stmfd sp!, {r3, lr} - bl ov18_0223045C - bl ov18_02230588 - bl ov18_0223058C - ldmia sp!, {r3, pc} - arm_func_end ov18_02230448 - - arm_func_start ov18_0223045C -ov18_0223045C: ; 0x0223045C - stmfd sp!, {r3, r4, r5, lr} - ldr r5, _02230570 ; =0x0224910A - mov r4, #0 -_02230468: - mov r0, r5 - bl ov18_022455B8 - cmp r0, #0 - beq _022304B8 - mov r0, #1 - bl ov18_0222B048 - and r1, r4, #0xff - mov lr, r1, lsl #3 - ldr r0, _02230574 ; =0x0224911A - ldr r1, _02230578 ; =0x0224911E - ldr r2, _0223057C ; =0x0224911C - ldr r3, _02230580 ; =0x02249120 - ldr ip, _02230584 ; =0x022532DC - ldrh r0, [r0, lr] - ldrh r1, [r1, lr] - ldrh r2, [r2, lr] - ldrh r3, [r3, lr] - strb r4, [ip] - bl ov18_0222BA04 - ldmia sp!, {r3, r4, r5, pc} -_022304B8: - add r4, r4, #1 - cmp r4, #2 - add r5, r5, #8 - blo _02230468 - mov r0, #1 - bl ov18_02245470 - cmp r0, #0 - beq _022304E4 - mov r0, #1 - bl ov18_0222B048 - ldmia sp!, {r3, r4, r5, pc} -_022304E4: - mov r0, #2 - bl ov18_02245470 - cmp r0, #0 - beq _02230500 - mov r0, #0 - bl ov18_0222B048 - ldmia sp!, {r3, r4, r5, pc} -_02230500: - mov r0, #0x40 - bl ov18_022454B0 - cmp r0, #0 - beq _0223051C - mov r0, #1 - bl ov18_022306F0 - ldmia sp!, {r3, r4, r5, pc} -_0223051C: - mov r0, #0x80 - bl ov18_022454B0 - cmp r0, #0 - beq _02230538 - mov r0, #3 - bl ov18_022306F0 - ldmia sp!, {r3, r4, r5, pc} -_02230538: - mov r0, #0x20 - bl ov18_022454B0 - cmp r0, #0 - beq _02230554 - mov r0, #0 - bl ov18_022306F0 - ldmia sp!, {r3, r4, r5, pc} -_02230554: - mov r0, #0x10 - bl ov18_022454B0 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, #2 - bl ov18_022306F0 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02230570: .word Unk_ov18_0224910A -_02230574: .word Unk_ov18_0224911A -_02230578: .word 0x0224911E -_0223057C: .word 0x0224911C -_02230580: .word 0x02249120 -_02230584: .word Unk_ov18_022532DC - arm_func_end ov18_0223045C - - arm_func_start ov18_02230588 -ov18_02230588: ; 0x02230588 - bx lr - arm_func_end ov18_02230588 - - arm_func_start ov18_0223058C -ov18_0223058C: ; 0x0223058C - stmfd sp!, {r3, lr} - bl ov18_0222B034 - cmp r0, #0 - beq _022305A8 - cmp r0, #1 - beq _022305BC - ldmia sp!, {r3, pc} -_022305A8: - mov r0, #7 - bl ov18_0223E994 - ldr r0, _022305D4 ; =ov18_0222FEE8 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_022305BC: - mov r0, #6 - bl ov18_0223E994 - bl ov18_02230760 - ldr r0, _022305D8 ; =ov18_022305DC - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022305D4: .word ov18_0222FEE8 -_022305D8: .word ov18_022305DC - arm_func_end ov18_0223058C - - arm_func_start ov18_022305DC -ov18_022305DC: ; 0x022305DC - stmfd sp!, {r3, lr} - bl ov18_0222B0C0 - mov r0, #8 - bl ov18_02244394 - ldr r0, _022305F8 ; =ov18_022305FC - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022305F8: .word ov18_022305FC - arm_func_end ov18_022305DC - - arm_func_start ov18_022305FC -ov18_022305FC: ; 0x022305FC - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r1, #1 - mov r2, r1 - mov r0, #3 - mov r3, #8 - bl ov18_02244194 - mov r0, #3 - mov r1, #0 - mov r2, #0x16 - mov r3, #8 - bl ov18_02244194 - ldr r0, _02230644 ; =ov18_02230648 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02230644: .word ov18_02230648 - arm_func_end ov18_022305FC - - arm_func_start ov18_02230648 -ov18_02230648: ; 0x02230648 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_0222BAF4 - bl ov18_0222B668 - ldr r0, _022306E4 ; =0x022532DC - ldr r0, [r0, #4] - bl ov18_0224382C - mov r0, #1 - mov r1, r0 - bl ov18_02244CD8 - mov r0, #0 - mov r1, #0x14 - bl ov18_02244CD8 - ldr r0, _022306E4 ; =0x022532DC - ldrb r0, [r0] - cmp r0, #0 - beq _022306B4 - cmp r0, #1 - beq _022306CC - ldmia sp!, {r3, pc} -_022306B4: - mov r0, #1 - mov r1, #0 - bl ov18_0222F6D4 - ldr r0, _022306E8 ; =ov18_0223A6B4 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_022306CC: - mov r0, #0 - mov r1, r0 - bl ov18_0222F6D4 - ldr r0, _022306EC ; =ov18_02231230 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022306E4: .word Unk_ov18_022532DC -_022306E8: .word ov18_0223A6B4 -_022306EC: .word ov18_02231230 - arm_func_end ov18_02230648 - - arm_func_start ov18_022306F0 -ov18_022306F0: ; 0x022306F0 - stmfd sp!, {r3, lr} - cmp r0, #1 - cmpne r0, #3 - ldmeqia sp!, {r3, pc} - ldr r1, _0223074C ; =0x022532DC - mov r0, #8 - ldrb r2, [r1] - eor r2, r2, #1 - strb r2, [r1] - bl ov18_0223E994 - ldr r0, _0223074C ; =0x022532DC - ldr ip, _02230750 ; =0x0224911A - ldrb r0, [r0] - ldr r1, _02230754 ; =0x0224911E - ldr r2, _02230758 ; =0x0224911C - mov lr, r0, lsl #3 - ldr r3, _0223075C ; =0x02249120 - ldrh r0, [ip, lr] - ldrh r1, [r1, lr] - ldrh r2, [r2, lr] - ldrh r3, [r3, lr] - bl ov18_0222BA04 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223074C: .word Unk_ov18_022532DC -_02230750: .word Unk_ov18_0224911A -_02230754: .word 0x0224911E -_02230758: .word 0x0224911C -_0223075C: .word 0x02249120 - arm_func_end ov18_022306F0 - - arm_func_start ov18_02230760 -ov18_02230760: ; 0x02230760 - stmfd sp!, {r3, lr} - ldr r1, _02230798 ; =0x02249108 - ldr r0, _0223079C ; =0x022532DC - ldrb r3, [r1] - ldrb r2, [r1, #1] - ldrb r1, [r0] - add ip, sp, #0 - strb r3, [sp] - strb r2, [sp, #1] - ldrb r1, [ip, r1] - ldr r0, [r0, #4] - mov r2, r1 - bl ov18_0223D154 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02230798: .word Unk_ov18_02249108 -_0223079C: .word Unk_ov18_022532DC - arm_func_end ov18_02230760 - - .rodata - - - .global Unk_ov18_02249108 -Unk_ov18_02249108: ; 0x02249108 - .byte 0x1, 0x2 - - .global Unk_ov18_0224910A -Unk_ov18_0224910A: ; 0x0224910A - .short 0x8, 0x20, 0xAC, 0xA0, 0xB4, 0x20, 0xF8, 0xA0 - - .global Unk_ov18_0224911A -Unk_ov18_0224911A: ; 0x0224911A - .short 0x6, 0x1E, 0x9E, 0x92, 0xB2, 0x1E, 0xEA, 0x92 - - .global Unk_ov18_0224912A -Unk_ov18_0224912A: ; 0x0224912A - .asciz "char/ybBgStep11.ncl.l" - - - - .data - - - .global Unk_ov18_02249F2C -Unk_ov18_02249F2C: ; 0x02249F2C - .ascii "char/jbBgStep1.ncg.l" - .space 0x4 - - .global Unk_ov18_02249F44 -Unk_ov18_02249F44: ; 0x02249F44 - .ascii "char/jbBgStep1.ncl.l" - .space 0x4 - - .global Unk_ov18_02249F5C -Unk_ov18_02249F5C: ; 0x02249F5C - .ascii "char/jb2Menu.nsc.l" - .space 0x2 - - - - .bss - - - .global Unk_ov18_022532DC -Unk_ov18_022532DC: ; 0x022532DC - .space 0x4 - - .global Unk_ov18_022532E0 -Unk_ov18_022532E0: ; 0x022532E0 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/sceneopterase.s b/subprojects/NitroDWC/libraries/util/asm/sceneopterase.s deleted file mode 100644 index 73c4844861..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/sceneopterase.s +++ /dev/null @@ -1,349 +0,0 @@ - .include "macros/function.inc" - .include "include/sceneopterase.inc" - - - - .text - - - arm_func_start ov18_022307A0 -ov18_022307A0: ; 0x022307A0 - stmfd sp!, {r3, lr} - ldr r0, _022307E0 ; =0x022532E4 - mov r1, #0 - strb r1, [r0] - bl ov18_022307E8 - mov r0, #0x12 - bl ov18_0222BBC0 - mov r0, #0x3b - sub r1, r0, #0x3c - mov r2, #0 - bl ov18_0222B594 - mov r0, #0x17 - bl ov18_0222B7C8 - ldr r0, _022307E4 ; =ov18_02230868 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022307E0: .word Unk_ov18_022532E4 -_022307E4: .word ov18_02230868 - arm_func_end ov18_022307A0 - - arm_func_start ov18_022307E8 -ov18_022307E8: ; 0x022307E8 - stmfd sp!, {r3, lr} - ldr r0, _02230858 ; =0x02249F70 - ldr r1, _0223085C ; =GX_LoadBG2Scr - bl ov18_0222B700 - ldr r3, _02230860 ; =0x04001008 - ldr r1, _02230864 ; =0x0400000A - ldrh r0, [r3] - sub r2, r3, #0x1000 - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3] - ldrh r0, [r3, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3, #2] - ldrh r0, [r2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2] - ldrh r0, [r1] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1] - ldrh r0, [r1, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1, #2] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02230858: .word Unk_ov18_02249F70 -_0223085C: .word GX_LoadBG2Scr -_02230860: .word 0x04001008 -_02230864: .word 0x0400000A - arm_func_end ov18_022307E8 - - arm_func_start ov18_02230868 -ov18_02230868: ; 0x02230868 - stmfd sp!, {r3, lr} - mov r1, #1 - mov r2, r1 - mov r0, #2 - mov r3, #8 - bl ov18_02244194 - mov r0, #2 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - mov r0, #1 - mov r1, r0 - bl ov18_02244C84 - mov r0, #0 - mov r1, #0x15 - bl ov18_02244C84 - ldr r0, _022308B8 ; =ov18_022308BC - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022308B8: .word ov18_022308BC - arm_func_end ov18_02230868 - - arm_func_start ov18_022308BC -ov18_022308BC: ; 0x022308BC - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #3 - bl ov18_0222B790 - ldr r0, _022308F4 ; =ov18_022308F8 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022308F4: .word ov18_022308F8 - arm_func_end ov18_022308BC - - arm_func_start ov18_022308F8 -ov18_022308F8: ; 0x022308F8 - stmfd sp!, {r3, lr} - bl ov18_0222B034 - mvn r1, #1 - cmp r0, r1 - ldmeqia sp!, {r3, pc} - bl ov18_0222B0A8 - ldr r0, _0223091C ; =ov18_02230920 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223091C: .word ov18_02230920 - arm_func_end ov18_022308F8 - - arm_func_start ov18_02230920 -ov18_02230920: ; 0x02230920 - stmfd sp!, {r3, lr} - bl ov18_02230934 - bl ov18_0223096C - bl ov18_02230970 - ldmia sp!, {r3, pc} - arm_func_end ov18_02230920 - - arm_func_start ov18_02230934 -ov18_02230934: ; 0x02230934 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02245470 - cmp r0, #0 - beq _02230950 - mov r0, #1 - bl ov18_0222B048 -_02230950: - mov r0, #2 - bl ov18_02245470 - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, #0 - bl ov18_0222B048 - ldmia sp!, {r3, pc} - arm_func_end ov18_02230934 - - arm_func_start ov18_0223096C -ov18_0223096C: ; 0x0223096C - bx lr - arm_func_end ov18_0223096C - - arm_func_start ov18_02230970 -ov18_02230970: ; 0x02230970 - stmfd sp!, {r3, lr} - bl ov18_0222B034 - cmp r0, #0 - beq _0223098C - cmp r0, #1 - beq _022309A0 - ldmia sp!, {r3, pc} -_0223098C: - mov r0, #7 - bl ov18_0223E994 - ldr r0, _022309D0 ; =ov18_022309D8 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_022309A0: - mov r0, #6 - bl ov18_0223E994 - mov r2, #1 - mov r1, #0 - sub r3, r2, #2 - mov r0, #0x18 - str r1, [sp] - bl ov18_0223FC48 - bl ov18_0222B0C0 - ldr r0, _022309D4 ; =ov18_02230B14 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022309D0: .word ov18_022309D8 -_022309D4: .word ov18_02230B14 - arm_func_end ov18_02230970 - - arm_func_start ov18_022309D8 -ov18_022309D8: ; 0x022309D8 - stmfd sp!, {r3, lr} - bl ov18_0222B0C0 - mov r0, #8 - bl ov18_02244394 - ldr r0, _022309F4 ; =ov18_022309F8 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022309F4: .word ov18_022309F8 - arm_func_end ov18_022309D8 - - arm_func_start ov18_022309F8 -ov18_022309F8: ; 0x022309F8 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_0222B004 - ldr r0, _02230A54 ; =0x022532E4 - ldrb r0, [r0] - cmp r0, #0 - bne _02230A34 - mov r1, #1 - mov r2, r1 - mov r0, #3 - mov r3, #8 - bl ov18_02244194 -_02230A34: - mov r0, #3 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - ldr r0, _02230A58 ; =ov18_02230A5C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02230A54: .word Unk_ov18_022532E4 -_02230A58: .word ov18_02230A5C - arm_func_end ov18_022309F8 - - arm_func_start ov18_02230A5C -ov18_02230A5C: ; 0x02230A5C - stmfd sp!, {r3, lr} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _02230B08 ; =0x022532E4 - ldrb r0, [r0] - cmp r0, #0 - bne _02230A90 - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} -_02230A90: - bl ov18_0222B07C - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, #0 - bl ov18_022448E0 - ldr r0, _02230B08 ; =0x022532E4 - ldrb r0, [r0] - cmp r0, #0 - bne _02230AC4 - bl ov18_0222B668 - mov r0, #1 - mov r1, r0 - bl ov18_02244CD8 -_02230AC4: - mov r0, #0 - mov r1, #0x15 - bl ov18_02244CD8 - ldr r0, _02230B08 ; =0x022532E4 - mov r1, #1 - ldrb r0, [r0] - cmp r0, #0 - mov r0, #0 - bne _02230AF8 - bl ov18_0222F6D4 - ldr r0, _02230B0C ; =ov18_02231230 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_02230AF8: - bl ov18_0222F6D4 - ldr r0, _02230B10 ; =ov18_02230B84 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02230B08: .word Unk_ov18_022532E4 -_02230B0C: .word ov18_02231230 -_02230B10: .word ov18_02230B84 - arm_func_end ov18_02230A5C - - arm_func_start ov18_02230B14 -ov18_02230B14: ; 0x02230B14 - stmfd sp!, {r3, lr} - bl ov18_0223FFB8 - cmp r0, #0 - beq _02230B44 - cmp r0, #1 - ldmneia sp!, {r3, pc} - mov r0, #0xe - bl ov18_0223E994 - ldr r0, _02230B5C ; =0x022532E4 - mov r1, #1 - strb r1, [r0] - b _02230B4C -_02230B44: - mov r0, #7 - bl ov18_0223E994 -_02230B4C: - bl ov18_0223FF74 - ldr r0, _02230B60 ; =ov18_02230B64 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02230B5C: .word Unk_ov18_022532E4 -_02230B60: .word ov18_02230B64 - arm_func_end ov18_02230B14 - - arm_func_start ov18_02230B64 -ov18_02230B64: ; 0x02230B64 - stmfd sp!, {r3, lr} - bl ov18_0223FFCC - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _02230B80 ; =ov18_022309D8 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02230B80: .word ov18_022309D8 - arm_func_end ov18_02230B64 - - .data - - - .global Unk_ov18_02249F70 -Unk_ov18_02249F70: ; 0x02249F70 - .asciz "char/yb5Multi.nsc.l" - - - - .bss - - - .global Unk_ov18_022532E4 -Unk_ov18_022532E4: ; 0x022532E4 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/sceneopterase1.s b/subprojects/NitroDWC/libraries/util/asm/sceneopterase1.s deleted file mode 100644 index fe56800cd6..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/sceneopterase1.s +++ /dev/null @@ -1,210 +0,0 @@ - .include "macros/function.inc" - .include "include/sceneopterase1.inc" - - - - .text - - - arm_func_start ov18_02230B84 -ov18_02230B84: ; 0x02230B84 - stmfd sp!, {r3, lr} - bl ov18_02230BA8 - mov r0, #0x19 - bl ov18_0222B7C8 - bl ov18_0223E61C - ldr r0, _02230BA4 ; =ov18_02230C28 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02230BA4: .word ov18_02230C28 - arm_func_end ov18_02230B84 - - arm_func_start ov18_02230BA8 -ov18_02230BA8: ; 0x02230BA8 - stmfd sp!, {r3, lr} - ldr r0, _02230C18 ; =0x02249F84 - ldr r1, _02230C1C ; =GX_LoadBG2Scr - bl ov18_0222B700 - ldr r3, _02230C20 ; =0x04001008 - ldr r1, _02230C24 ; =0x0400000A - ldrh r0, [r3] - sub r2, r3, #0x1000 - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3] - ldrh r0, [r3, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3, #2] - ldrh r0, [r2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2] - ldrh r0, [r1] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1] - ldrh r0, [r1, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1, #2] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02230C18: .word Unk_ov18_02249F84 -_02230C1C: .word GX_LoadBG2Scr -_02230C20: .word 0x04001008 -_02230C24: .word 0x0400000A - arm_func_end ov18_02230BA8 - - arm_func_start ov18_02230C28 -ov18_02230C28: ; 0x02230C28 - stmfd sp!, {r3, lr} - mov r0, #2 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - mov r0, #0 - mov r1, #0x15 - bl ov18_02244C84 - ldr r0, _02230C58 ; =ov18_02230C5C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02230C58: .word ov18_02230C5C - arm_func_end ov18_02230C28 - - arm_func_start ov18_02230C5C -ov18_02230C5C: ; 0x02230C5C - stmfd sp!, {r3, lr} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #5 - bl ov18_0222B790 - ldr r0, _02230C84 ; =ov18_02230C88 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02230C84: .word ov18_02230C88 - arm_func_end ov18_02230C5C - - arm_func_start ov18_02230C88 -ov18_02230C88: ; 0x02230C88 - stmfd sp!, {r3, lr} - bl ov18_0222B034 - mvn r1, #1 - cmp r0, r1 - ldmeqia sp!, {r3, pc} - bl ov18_0222B0A8 - ldr r0, _02230CAC ; =ov18_02230CB0 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02230CAC: .word ov18_02230CB0 - arm_func_end ov18_02230C88 - - arm_func_start ov18_02230CB0 -ov18_02230CB0: ; 0x02230CB0 - stmfd sp!, {r3, lr} - bl ov18_02230CC4 - bl ov18_02230CE4 - bl ov18_02230CE8 - ldmia sp!, {r3, pc} - arm_func_end ov18_02230CB0 - - arm_func_start ov18_02230CC4 -ov18_02230CC4: ; 0x02230CC4 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02245470 - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, #0 - bl ov18_0222B048 - ldmia sp!, {r3, pc} - arm_func_end ov18_02230CC4 - - arm_func_start ov18_02230CE4 -ov18_02230CE4: ; 0x02230CE4 - bx lr - arm_func_end ov18_02230CE4 - - arm_func_start ov18_02230CE8 -ov18_02230CE8: ; 0x02230CE8 - stmfd sp!, {r3, lr} - bl ov18_0222B034 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #6 - bl ov18_0223E994 - ldr r0, _02230D0C ; =ov18_02230D10 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02230D0C: .word ov18_02230D10 - arm_func_end ov18_02230CE8 - - arm_func_start ov18_02230D10 -ov18_02230D10: ; 0x02230D10 - stmfd sp!, {r3, lr} - bl ov18_0222B0C0 - mov r0, #8 - bl ov18_02244394 - ldr r0, _02230D2C ; =ov18_02230D30 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02230D2C: .word ov18_02230D30 - arm_func_end ov18_02230D10 - - arm_func_start ov18_02230D30 -ov18_02230D30: ; 0x02230D30 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #3 - mov r1, #1 - mov r2, #0x3f - mov r3, #0x40 - bl ov18_02244194 - mov r0, #3 - mov r1, #0 - mov r2, #0x3f - mov r3, #0x40 - bl ov18_02244194 - ldr r0, _02230D78 ; =ov18_02230D7C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02230D78: .word ov18_02230D7C - arm_func_end ov18_02230D30 - - arm_func_start ov18_02230D7C -ov18_02230D7C: ; 0x02230D7C - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0x1000000 - bl OS_SpinWait - bl PM_ForceToPowerOff - ldmia sp!, {r3, pc} - arm_func_end ov18_02230D7C - - .data - - - .global Unk_ov18_02249F84 -Unk_ov18_02249F84: ; 0x02249F84 - .asciz "char/yb5Multi.nsc.l" - diff --git a/subprojects/NitroDWC/libraries/util/asm/sceneoptinfo.s b/subprojects/NitroDWC/libraries/util/asm/sceneoptinfo.s deleted file mode 100644 index 6eee552215..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/sceneoptinfo.s +++ /dev/null @@ -1,512 +0,0 @@ - .include "macros/function.inc" - .include "include/sceneoptinfo.inc" - - - - .text - - - arm_func_start ov18_02230DB0 -ov18_02230DB0: ; 0x02230DB0 - stmfd sp!, {r3, lr} - bl ov18_02230DE4 - mov r0, #0x11 - bl ov18_0222BBC0 - mov r0, #0x3a - sub r1, r0, #0x3b - mov r2, #0 - bl ov18_0222B594 - bl ov18_02230E64 - ldr r0, _02230DE0 ; =ov18_02231038 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02230DE0: .word ov18_02231038 - arm_func_end ov18_02230DB0 - - arm_func_start ov18_02230DE4 -ov18_02230DE4: ; 0x02230DE4 - stmfd sp!, {r3, lr} - ldr r0, _02230E54 ; =0x02249F98 - ldr r1, _02230E58 ; =GX_LoadBG2Scr - bl ov18_0222B700 - ldr r3, _02230E5C ; =0x04001008 - ldr r1, _02230E60 ; =0x0400000A - ldrh r0, [r3] - sub r2, r3, #0x1000 - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3] - ldrh r0, [r3, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3, #2] - ldrh r0, [r2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2] - ldrh r0, [r1] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1] - ldrh r0, [r1, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1, #2] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02230E54: .word Unk_ov18_02249F98 -_02230E58: .word GX_LoadBG2Scr -_02230E5C: .word 0x04001008 -_02230E60: .word 0x0400000A - arm_func_end ov18_02230DE4 - - arm_func_start ov18_02230E64 -ov18_02230E64: ; 0x02230E64 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x68 - mov r0, #0 - mov r1, r0 - bl ov18_0224467C - mov fp, r0 - add r0, sp, #0x14 - bl OS_GetMacAddress - ldrb r1, [sp, #0x15] - ldr r2, _02231028 ; =0x02249FAC - add r0, sp, #0x1a - str r1, [sp] - ldrb r3, [sp, #0x16] - mov r1, #0x14 - str r3, [sp, #4] - ldrb r3, [sp, #0x17] - str r3, [sp, #8] - ldrb r3, [sp, #0x18] - str r3, [sp, #0xc] - ldrb r3, [sp, #0x19] - str r3, [sp, #0x10] - ldrb r3, [sp, #0x14] - bl swprintf - mov r0, #0x1c - str r0, [sp] - mov r0, #2 - str r0, [sp, #4] - mov r0, #0x480 - str r0, [sp, #8] - add r1, sp, #0x1a - str r1, [sp, #0xc] - mov r0, fp - mov r1, #8 - mov r2, #0x40 - mov r3, #0xf0 - bl ov18_02244A9C - add r0, sp, #0x54 - bl sub_020A283C - ldr sl, [sp, #0x58] - ldr r8, [sp, #0x54] - cmp sl, #0 - mov r3, #0 - cmpeq r8, #0 - beq _02230FD4 - mov r0, r8 - mov r1, sl - mov r2, #0xa - bl _ull_mod - mov r1, #0x3e8 - umull r4, r1, r0, r1 - mov r0, r8 - mov r1, sl - mov r3, #0 - mov r2, #0xa - str r4, [sp, #0x50] - bl _ull_div - mov sb, #0 - ldr r7, _0223102C ; =0x00002710 - mov r8, r0 - mov sl, r1 - mov r6, sb - add r5, sp, #0x44 - mov r4, sb -_02230F60: - mov r0, r8 - mov r1, sl - mov r2, r7 - mov r3, r6 - bl _ull_mod - rsb r1, sb, #2 - str r0, [r5, r1, lsl #2] - mov r0, r8 - mov r1, sl - mov r2, r7 - mov r3, r4 - bl _ull_div - mov r8, r0 - mov sl, r1 - add sb, sb, #1 - cmp sb, #3 - blt _02230F60 - ldr r1, [sp, #0x48] - ldr r0, [sp, #0x4c] - str r1, [sp] - str r0, [sp, #4] - ldr r4, [sp, #0x50] - ldr r3, [sp, #0x44] - ldr r2, _02231030 ; =0x02249FE8 - add r0, sp, #0x1a - mov r1, #0x14 - str r4, [sp, #8] - bl swprintf - b _02230FE4 -_02230FD4: - ldr r2, _02231034 ; =0x0224A010 - add r0, sp, #0x1a - mov r1, #0x14 - bl swprintf -_02230FE4: - mov r0, #0x1c - str r0, [sp] - mov r0, #2 - str r0, [sp, #4] - mov r0, #0x480 - str r0, [sp, #8] - add r4, sp, #0x1a - mov r0, fp - mov r1, #8 - mov r2, #0x78 - mov r3, #0xf0 - str r4, [sp, #0xc] - bl ov18_02244A9C - mov r0, fp - bl ov18_02244C08 - add sp, sp, #0x68 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_02231028: .word Unk_ov18_02249FAC -_0223102C: .word 0x00002710 -_02231030: .word Unk_ov18_02249FE8 -_02231034: .word Unk_ov18_0224A010 - arm_func_end ov18_02230E64 - - arm_func_start ov18_02231038 -ov18_02231038: ; 0x02231038 - stmfd sp!, {r3, lr} - mov r1, #1 - mov r2, r1 - mov r0, #2 - mov r3, #8 - bl ov18_02244194 - mov r0, #2 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - mov r0, #1 - mov r1, r0 - bl ov18_02244C84 - mov r0, #0 - mov r1, #0x15 - bl ov18_02244C84 - ldr r0, _02231088 ; =ov18_0223108C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02231088: .word ov18_0223108C - arm_func_end ov18_02231038 - - arm_func_start ov18_0223108C -ov18_0223108C: ; 0x0223108C - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #2 - bl ov18_0222B790 - ldr r0, _022310C4 ; =ov18_022310C8 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022310C4: .word ov18_022310C8 - arm_func_end ov18_0223108C - - arm_func_start ov18_022310C8 -ov18_022310C8: ; 0x022310C8 - stmfd sp!, {r3, lr} - bl ov18_0222B034 - mvn r1, #1 - cmp r0, r1 - ldmeqia sp!, {r3, pc} - bl ov18_0222B0A8 - ldr r0, _022310EC ; =ov18_022310F0 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022310EC: .word ov18_022310F0 - arm_func_end ov18_022310C8 - - arm_func_start ov18_022310F0 -ov18_022310F0: ; 0x022310F0 - stmfd sp!, {r3, lr} - bl ov18_02231104 - bl ov18_02231124 - bl ov18_02231128 - ldmia sp!, {r3, pc} - arm_func_end ov18_022310F0 - - arm_func_start ov18_02231104 -ov18_02231104: ; 0x02231104 - stmfd sp!, {r3, lr} - mov r0, #2 - bl ov18_02245470 - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, #0 - bl ov18_0222B048 - ldmia sp!, {r3, pc} - arm_func_end ov18_02231104 - - arm_func_start ov18_02231124 -ov18_02231124: ; 0x02231124 - bx lr - arm_func_end ov18_02231124 - - arm_func_start ov18_02231128 -ov18_02231128: ; 0x02231128 - stmfd sp!, {r3, lr} - bl ov18_0222B034 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #7 - bl ov18_0223E994 - ldr r0, _0223114C ; =ov18_02231150 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223114C: .word ov18_02231150 - arm_func_end ov18_02231128 - - arm_func_start ov18_02231150 -ov18_02231150: ; 0x02231150 - stmfd sp!, {r3, lr} - bl ov18_0222B0C0 - mov r0, #8 - bl ov18_02244394 - ldr r0, _0223116C ; =ov18_02231170 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223116C: .word ov18_02231170 - arm_func_end ov18_02231150 - - arm_func_start ov18_02231170 -ov18_02231170: ; 0x02231170 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_0222B004 - mov r1, #1 - mov r2, r1 - mov r0, #3 - mov r3, #8 - bl ov18_02244194 - mov r0, #3 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - ldr r0, _022311BC ; =ov18_022311C0 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022311BC: .word ov18_022311C0 - arm_func_end ov18_02231170 - - arm_func_start ov18_022311C0 -ov18_022311C0: ; 0x022311C0 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_0222B07C - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, #0 - bl ov18_022448E0 - bl ov18_0222B668 - mov r0, #1 - mov r1, r0 - bl ov18_02244CD8 - mov r0, #0 - mov r1, #0x15 - bl ov18_02244CD8 - mov r0, #0 - mov r1, #1 - bl ov18_0222F6D4 - ldr r0, _0223122C ; =ov18_02231230 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223122C: .word ov18_02231230 - arm_func_end ov18_022311C0 - - .data - - - .global Unk_ov18_02249F98 -Unk_ov18_02249F98: ; 0x02249F98 - .ascii "char/jb5Info.nsc.l" - .space 0x2 - - .global Unk_ov18_02249FAC -Unk_ov18_02249FAC: ; 0x02249FAC - .ascii "%" - .space 0x1 - .ascii "0" - .space 0x1 - .ascii "2" - .space 0x1 - .ascii "X" - .space 0x1 - .ascii "-" - .space 0x1 - .ascii "%" - .space 0x1 - .ascii "0" - .space 0x1 - .ascii "2" - .space 0x1 - .ascii "X" - .space 0x1 - .ascii "-" - .space 0x1 - .ascii "%" - .space 0x1 - .ascii "0" - .space 0x1 - .ascii "2" - .space 0x1 - .ascii "X" - .space 0x1 - .ascii "-" - .space 0x1 - .ascii "%" - .space 0x1 - .ascii "0" - .space 0x1 - .ascii "2" - .space 0x1 - .ascii "X" - .space 0x1 - .ascii "-" - .space 0x1 - .ascii "%" - .space 0x1 - .ascii "0" - .space 0x1 - .ascii "2" - .space 0x1 - .ascii "X" - .space 0x1 - .ascii "-" - .space 0x1 - .ascii "%" - .space 0x1 - .ascii "0" - .space 0x1 - .ascii "2" - .space 0x1 - .ascii "X" - .space 0x3 - - .global Unk_ov18_02249FE8 -Unk_ov18_02249FE8: ; 0x02249FE8 - .ascii "%" - .space 0x1 - .ascii "0" - .space 0x1 - .ascii "4" - .space 0x1 - .ascii "d" - .space 0x1 - .ascii "-" - .space 0x1 - .ascii "%" - .space 0x1 - .ascii "0" - .space 0x1 - .ascii "4" - .space 0x1 - .ascii "d" - .space 0x1 - .ascii "-" - .space 0x1 - .ascii "%" - .space 0x1 - .ascii "0" - .space 0x1 - .ascii "4" - .space 0x1 - .ascii "d" - .space 0x1 - .ascii "-" - .space 0x1 - .ascii "%" - .space 0x1 - .ascii "0" - .space 0x1 - .ascii "4" - .space 0x1 - .ascii "d" - .space 0x3 - - .global Unk_ov18_0224A010 -Unk_ov18_0224A010: ; 0x0224A010 - .ascii "-" - .space 0x1 - .ascii "-" - .space 0x1 - .ascii "-" - .space 0x1 - .ascii "-" - .space 0x1 - .ascii "-" - .space 0x1 - .ascii "-" - .space 0x1 - .ascii "-" - .space 0x1 - .ascii "-" - .space 0x1 - .ascii "-" - .space 0x1 - .ascii "-" - .space 0x1 - .ascii "-" - .space 0x1 - .ascii "-" - .space 0x1 - .ascii "-" - .space 0x1 - .ascii "-" - .space 0x1 - .ascii "-" - .space 0x1 - .ascii "-" - .space 0x1 - .ascii "-" - .space 0x1 - .ascii "-" - .space 0x1 - .ascii "-" - .space 0x3 - diff --git a/subprojects/NitroDWC/libraries/util/asm/sceneoptmenu.s b/subprojects/NitroDWC/libraries/util/asm/sceneoptmenu.s deleted file mode 100644 index d5a71466be..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/sceneoptmenu.s +++ /dev/null @@ -1,618 +0,0 @@ - .include "macros/function.inc" - .include "include/sceneoptmenu.inc" - - - - .text - - - arm_func_start ov18_02231230 -ov18_02231230: ; 0x02231230 - stmfd sp!, {r4, lr} - ldr r0, _022312DC ; =0x022532E8 - mov r1, #0 - strb r1, [r0, #1] - bl ov18_022312F8 - mov r0, #0x10 - bl ov18_0222BBC0 - mov r0, #3 - bl ov18_0223F4D0 - mov r0, #0x39 - sub r1, r0, #0x3a - mov r2, #0 - bl ov18_0222B594 - mov r0, #0 - mov r1, #0x5b - bl ov18_02243F60 - ldr r2, _022312DC ; =0x022532E8 - ldr r1, _022312E0 ; =0xFE00FF00 - str r0, [r2, #8] - ldr r3, [r0, #0] - ldr lr, _022312E4 ; =0x0224918E - and r1, r3, r1 - orr r1, r1, #0x84 - orr r1, r1, #0xe00000 - str r1, [r0, #0] - ldr r4, [r2, #8] - ldr r1, _022312E8 ; =0x02249192 - ldrh r0, [r4, #4] - ldr ip, _022312EC ; =0x02249190 - ldr r3, _022312F0 ; =0x02249194 - bic r0, r0, #0xc00 - orr r0, r0, #0xc00 - strh r0, [r4, #4] - ldrb r0, [r2] - mov r4, r0, lsl #3 - ldrh r0, [lr, r4] - ldrh r1, [r1, r4] - ldrh r2, [ip, r4] - ldrh r3, [r3, r4] - bl ov18_0222BA04 - ldr r0, _022312F4 ; =ov18_02231494 - bl ov18_0222F6C4 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_022312DC: .word Unk_ov18_022532E8 -_022312E0: .word 0xFE00FF00 -_022312E4: .word Unk_ov18_0224918E -_022312E8: .word 0x02249192 -_022312EC: .word 0x02249190 -_022312F0: .word 0x02249194 -_022312F4: .word ov18_02231494 - arm_func_end ov18_02231230 - - arm_func_start ov18_022312F8 -ov18_022312F8: ; 0x022312F8 - stmfd sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x44 - ldr r4, _02231470 ; =0x02249148 - add r3, sp, #0x2b - mov r2, #0xb -_0223130C: - ldrb r1, [r4] - ldrb r0, [r4, #1] - add r4, r4, #2 - strb r1, [r3] - strb r0, [r3, #1] - add r3, r3, #2 - subs r2, r2, #1 - bne _0223130C - ldr r4, _02231474 ; =0x0224915E - add r3, sp, #0x14 - mov r2, #0xb -_02231338: - ldrb r1, [r4] - ldrb r0, [r4, #1] - add r4, r4, #2 - strb r1, [r3] - strb r0, [r3, #1] - add r3, r3, #2 - subs r2, r2, #1 - bne _02231338 - ldrb r2, [r4] - ldr r0, _02231478 ; =0x0224A038 - ldr r1, _0223147C ; =0x020C07EC - strb r2, [r3] - bl ov18_0222B700 - ldr r0, _02231480 ; =0x0224A050 - ldr r1, _02231484 ; =GX_LoadBG2Scr - bl ov18_0222B700 - add r0, sp, #0x14 - bl ov18_0222B6A0 - mov r1, #0 - mov r2, #4 - bl ov18_02243738 - ldr r1, _02231488 ; =0x022532E8 - str r0, [r1, #4] - add r0, sp, #0x2b - bl ov18_0222B6A0 - mov r1, #0 - mov r2, #4 - bl ov18_02243738 - mov r8, r0 - add r0, sp, #0 - bl sub_020A283C - ldr r0, [sp, #4] - ldr r1, [sp] - cmp r0, #0 - mov r7, #0 - cmpeq r1, #0 - bne _022313FC - add r5, r8, #0xc0 - add r6, r8, #0x40 - mov r4, #0x20 -_022313D8: - mov r0, r5 - mov r1, r6 - mov r2, r4 - bl MI_CpuCopy8 - add r7, r7, #1 - cmp r7, #2 - add r5, r5, #0x20 - add r6, r6, #0x20 - blt _022313D8 -_022313FC: - mov r0, r8 - mov r1, #0x200 - bl DC_FlushRange - mov r0, r8 - mov r1, #0 - mov r2, #0x200 - bl GX_LoadBGPltt - mov r0, r8 - bl ov18_0224382C - ldr r2, _0223148C ; =0x04001008 - ldr r1, _02231490 ; =0x0400000A - ldrh r0, [r2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2] - ldrh r0, [r2, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2, #2] - ldrh r0, [r1] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1] - ldrh r0, [r1, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1, #2] - add sp, sp, #0x44 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_02231470: .word Unk_ov18_02249148 -_02231474: .word Unk_ov18_0224915E -_02231478: .word Unk_ov18_0224A038 -_0223147C: .word 0x020C07EC -_02231480: .word Unk_ov18_0224A050 -_02231484: .word GX_LoadBG2Scr -_02231488: .word Unk_ov18_022532E8 -_0223148C: .word 0x04001008 -_02231490: .word 0x0400000A - arm_func_end ov18_022312F8 - - arm_func_start ov18_02231494 -ov18_02231494: ; 0x02231494 - stmfd sp!, {r3, lr} - mov r1, #1 - mov r2, r1 - mov r0, #2 - mov r3, #8 - bl ov18_02244194 - mov r0, #2 - mov r1, #0 - mov r2, #0x14 - mov r3, #8 - bl ov18_02244194 - mov r0, #1 - mov r1, r0 - bl ov18_02244C84 - mov r0, #0 - mov r1, #0x14 - bl ov18_02244C84 - ldr r0, _022314E4 ; =ov18_022314E8 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022314E4: .word ov18_022314E8 - arm_func_end ov18_02231494 - - arm_func_start ov18_022314E8 -ov18_022314E8: ; 0x022314E8 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_0222B790 - ldr r0, _02231520 ; =ov18_02231524 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02231520: .word ov18_02231524 - arm_func_end ov18_022314E8 - - arm_func_start ov18_02231524 -ov18_02231524: ; 0x02231524 - stmfd sp!, {r3, lr} - bl ov18_0222B034 - mvn r1, #1 - cmp r0, r1 - ldmeqia sp!, {r3, pc} - bl ov18_0222B0A8 - ldr r0, _02231548 ; =ov18_0223154C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02231548: .word ov18_0223154C - arm_func_end ov18_02231524 - - arm_func_start ov18_0223154C -ov18_0223154C: ; 0x0223154C - stmfd sp!, {r3, lr} - bl ov18_02231560 - bl ov18_02231654 - bl ov18_02231658 - ldmia sp!, {r3, pc} - arm_func_end ov18_0223154C - - arm_func_start ov18_02231560 -ov18_02231560: ; 0x02231560 - stmfd sp!, {r3, r4, r5, lr} - ldr r5, _0223163C ; =0x02249176 - mov r4, #0 -_0223156C: - mov r0, r5 - bl ov18_022455B8 - cmp r0, #0 - beq _022315BC - mov r0, #1 - bl ov18_0222B048 - and r1, r4, #0xff - mov lr, r1, lsl #3 - ldr r0, _02231640 ; =0x0224918E - ldr r1, _02231644 ; =0x02249192 - ldr r2, _02231648 ; =0x02249190 - ldr r3, _0223164C ; =0x02249194 - ldr ip, _02231650 ; =0x022532E8 - ldrh r0, [r0, lr] - ldrh r1, [r1, lr] - ldrh r2, [r2, lr] - ldrh r3, [r3, lr] - strb r4, [ip] - bl ov18_0222BA04 - ldmia sp!, {r3, r4, r5, pc} -_022315BC: - add r4, r4, #1 - cmp r4, #3 - add r5, r5, #8 - blo _0223156C - mov r0, #1 - bl ov18_02245470 - cmp r0, #0 - beq _022315E8 - mov r0, #1 - bl ov18_0222B048 - ldmia sp!, {r3, r4, r5, pc} -_022315E8: - mov r0, #2 - bl ov18_02245470 - cmp r0, #0 - beq _02231604 - mov r0, #0 - bl ov18_0222B048 - ldmia sp!, {r3, r4, r5, pc} -_02231604: - mov r0, #0x40 - bl ov18_022454B0 - cmp r0, #0 - beq _02231620 - mov r0, #1 - bl ov18_0223188C - ldmia sp!, {r3, r4, r5, pc} -_02231620: - mov r0, #0x80 - bl ov18_022454B0 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, #3 - bl ov18_0223188C - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0223163C: .word Unk_ov18_02249176 -_02231640: .word Unk_ov18_0224918E -_02231644: .word 0x02249192 -_02231648: .word 0x02249190 -_0223164C: .word 0x02249194 -_02231650: .word Unk_ov18_022532E8 - arm_func_end ov18_02231560 - - arm_func_start ov18_02231654 -ov18_02231654: ; 0x02231654 - bx lr - arm_func_end ov18_02231654 - - arm_func_start ov18_02231658 -ov18_02231658: ; 0x02231658 - stmdb sp!, {lr} - sub sp, sp, #0x14 - bl ov18_0222B034 - cmp r0, #0 - beq _0223167C - cmp r0, #1 - beq _02231688 - add sp, sp, #0x14 - ldmia sp!, {pc} -_0223167C: - mov r0, #7 - bl ov18_0223E994 - b _022316E4 -_02231688: - add r0, sp, #0 - bl sub_020A283C - ldr r0, _022316F4 ; =0x022532E8 - ldrb r0, [r0] - cmp r0, #0 - beq _022316CC - ldr r0, [sp, #4] - ldr r1, [sp] - cmp r0, #0 - cmpeq r1, #0 - bne _022316CC - mov r0, #9 - bl ov18_0223E994 - mvn r0, #0 - bl ov18_0222B068 - add sp, sp, #0x14 - ldmia sp!, {pc} -_022316CC: - mov r0, #6 - bl ov18_0223E994 - bl ov18_0223191C - ldr r0, _022316F4 ; =0x022532E8 - mov r1, #1 - strb r1, [r0, #1] -_022316E4: - ldr r0, _022316F8 ; =ov18_022316FC - bl ov18_0222F6C4 - add sp, sp, #0x14 - ldmia sp!, {pc} - ; .align 2, 0 -_022316F4: .word Unk_ov18_022532E8 -_022316F8: .word ov18_022316FC - arm_func_end ov18_02231658 - - arm_func_start ov18_022316FC -ov18_022316FC: ; 0x022316FC - stmfd sp!, {r3, lr} - bl ov18_0222B0C0 - mov r0, #8 - bl ov18_02244394 - ldr r0, _02231718 ; =ov18_0223171C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02231718: .word ov18_0223171C - arm_func_end ov18_022316FC - - arm_func_start ov18_0223171C -ov18_0223171C: ; 0x0223171C - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _02231778 ; =0x022532E8 - ldrb r0, [r0, #1] - cmp r0, #0 - beq _02231744 - bl ov18_0222B004 -_02231744: - mov r1, #1 - mov r2, r1 - mov r0, #3 - mov r3, #8 - bl ov18_02244194 - mov r0, #3 - mov r1, #0 - mov r2, #0x14 - mov r3, #8 - bl ov18_02244194 - ldr r0, _0223177C ; =ov18_02231780 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02231778: .word Unk_ov18_022532E8 -_0223177C: .word ov18_02231780 - arm_func_end ov18_0223171C - - arm_func_start ov18_02231780 -ov18_02231780: ; 0x02231780 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_0222B07C - cmp r0, #0 - ldmeqia sp!, {r3, pc} - ldr r0, _02231878 ; =0x022532E8 - ldr r0, [r0, #8] - bl ov18_02245B74 - bl ov18_0222BAF4 - bl ov18_0222B668 - ldr r0, _02231878 ; =0x022532E8 - ldr r0, [r0, #4] - bl ov18_0224382C - mov r0, #1 - mov r1, r0 - bl ov18_02244CD8 - mov r0, #0 - mov r1, #0x14 - bl ov18_02244CD8 - ldr r0, _02231878 ; =0x022532E8 - ldrb r1, [r0, #1] - cmp r1, #0 - bne _02231810 - mov r0, #0 - mov r1, r0 - bl ov18_0222F6D4 - ldr r0, _0223187C ; =ov18_02230228 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_02231810: - ldrb r0, [r0] - cmp r0, #0 - beq _02231830 - cmp r0, #1 - beq _02231848 - cmp r0, #2 - beq _02231860 - ldmia sp!, {r3, pc} -_02231830: - mov r0, #0 - mov r1, #1 - bl ov18_0222F6D4 - ldr r0, _02231880 ; =ov18_02230DB0 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_02231848: - mov r0, #0 - mov r1, #1 - bl ov18_0222F6D4 - ldr r0, _02231884 ; =ov18_022307A0 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_02231860: - mov r0, #0 - mov r1, #1 - bl ov18_0222F6D4 - ldr r0, _02231888 ; =ov18_02231FFC - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02231878: .word Unk_ov18_022532E8 -_0223187C: .word ov18_02230228 -_02231880: .word ov18_02230DB0 -_02231884: .word ov18_022307A0 -_02231888: .word ov18_02231FFC - arm_func_end ov18_02231780 - - arm_func_start ov18_0223188C -ov18_0223188C: ; 0x0223188C - stmfd sp!, {r3, lr} - cmp r0, #1 - mov r1, #3 - bne _022318B4 - ldr r0, _02231908 ; =0x022532E8 - ldrb r0, [r0] - add r0, r0, #2 - bl FX_ModS32 - ldr r1, _02231908 ; =0x022532E8 - b _022318C8 -_022318B4: - ldr r0, _02231908 ; =0x022532E8 - ldrb r0, [r0] - add r0, r0, #1 - bl FX_ModS32 - ldr r1, _02231908 ; =0x022532E8 -_022318C8: - strb r0, [r1] - mov r0, #8 - bl ov18_0223E994 - ldr r0, _02231908 ; =0x022532E8 - ldr ip, _0223190C ; =0x0224918E - ldrb r0, [r0] - ldr r1, _02231910 ; =0x02249192 - ldr r2, _02231914 ; =0x02249190 - mov lr, r0, lsl #3 - ldr r3, _02231918 ; =0x02249194 - ldrh r0, [ip, lr] - ldrh r1, [r1, lr] - ldrh r2, [r2, lr] - ldrh r3, [r3, lr] - bl ov18_0222BA04 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02231908: .word Unk_ov18_022532E8 -_0223190C: .word Unk_ov18_0224918E -_02231910: .word 0x02249192 -_02231914: .word 0x02249190 -_02231918: .word 0x02249194 - arm_func_end ov18_0223188C - - arm_func_start ov18_0223191C -ov18_0223191C: ; 0x0223191C - ldr r0, _0223193C ; =0x022532E8 - ldr r1, _02231940 ; =0x02249140 - ldrb r2, [r0] - ldr ip, _02231944 ; =ov18_0223D154 - ldr r0, [r0, #4] - ldrb r1, [r1, r2] - mov r2, r1 - bx ip - ; .align 2, 0 -_0223193C: .word Unk_ov18_022532E8 -_02231940: .word Unk_ov18_02249140 -_02231944: .word ov18_0223D154 - arm_func_end ov18_0223191C - - .rodata - - - .global Unk_ov18_02249140 -Unk_ov18_02249140: ; 0x02249140 - .byte 0x1, 0x2, 0x3, 0x0 - - .global Unk_ov18_02249144 -Unk_ov18_02249144: ; 0x02249144 - .short 0xE0 - .short 0x84 - - .global Unk_ov18_02249148 -Unk_ov18_02249148: ; 0x02249148 - .asciz "char/ybBgOption.ncl.l" - - .global Unk_ov18_0224915E -Unk_ov18_0224915E: ; 0x0224915E - .ascii "char/ybBgOption1.ncl.l" - .space 0x2 - - .global Unk_ov18_02249176 -Unk_ov18_02249176: ; 0x02249176 - .short 0x8, 0x24, 0xF8, 0x44, 0x8, 0x50, 0xF8 - .short 0x70, 0x8, 0x7C, 0xF8, 0x9C - - .global Unk_ov18_0224918E -Unk_ov18_0224918E: ; 0x0224918E - .short 0x6, 0x22, 0xEA - .short 0x36, 0x6, 0x4E, 0xEA, 0x62, 0x6, 0x7A, 0xEA - .short 0x8E - - - - .data - - - .global Unk_ov18_0224A038 -Unk_ov18_0224A038: ; 0x0224A038 - .asciz "char/jbBgOption.ncg.l" - .space 0x2 - - .global Unk_ov18_0224A050 -Unk_ov18_0224A050: ; 0x0224A050 - .asciz "char/jb5OptMenu.nsc.l" - .space 0x2 - - - - .bss - - - .global Unk_ov18_022532E8 -Unk_ov18_022532E8: ; 0x022532E8 - .space 0x1 - - .global Unk_ov18_022532E9 -Unk_ov18_022532E9: ; 0x022532E9 - .space 0x3 - - .global Unk_ov18_022532EC -Unk_ov18_022532EC: ; 0x022532EC - .space 0x4 - - .global Unk_ov18_022532F0 -Unk_ov18_022532F0: ; 0x022532F0 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/sceneoptmovcomm.s b/subprojects/NitroDWC/libraries/util/asm/sceneoptmovcomm.s deleted file mode 100644 index 20aabc3301..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/sceneoptmovcomm.s +++ /dev/null @@ -1,234 +0,0 @@ - .include "macros/function.inc" - .include "include/sceneoptmovcomm.inc" - - - - .text - - - arm_func_start ov18_02231948 -ov18_02231948: ; 0x02231948 - stmfd sp!, {r3, lr} - bl ov18_02231980 - mov r0, #0x1e - bl ov18_0222B7C8 - mov r0, #0 - bl ov18_0222AD34 - mov r0, #1 - bl ov18_0222BC8C - mov r0, #0xb - bl ov18_0223E994 - ldr r0, _0223197C ; =ov18_02231A00 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223197C: .word ov18_02231A00 - arm_func_end ov18_02231948 - - arm_func_start ov18_02231980 -ov18_02231980: ; 0x02231980 - stmfd sp!, {r3, lr} - ldr r0, _022319F0 ; =0x0224A068 - ldr r1, _022319F4 ; =GX_LoadBG2Scr - bl ov18_0222B700 - ldr r3, _022319F8 ; =0x04001008 - ldr r1, _022319FC ; =0x0400000A - ldrh r0, [r3] - sub r2, r3, #0x1000 - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3] - ldrh r0, [r3, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3, #2] - ldrh r0, [r2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2] - ldrh r0, [r1] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1] - ldrh r0, [r1, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1, #2] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022319F0: .word Unk_ov18_0224A068 -_022319F4: .word GX_LoadBG2Scr -_022319F8: .word 0x04001008 -_022319FC: .word 0x0400000A - arm_func_end ov18_02231980 - - arm_func_start ov18_02231A00 -ov18_02231A00: ; 0x02231A00 - stmfd sp!, {r3, lr} - mov r0, #2 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - mov r0, #0 - mov r1, #0x15 - bl ov18_02244C84 - ldr r0, _02231A30 ; =ov18_02231A34 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02231A30: .word ov18_02231A34 - arm_func_end ov18_02231A00 - - arm_func_start ov18_02231A34 -ov18_02231A34: ; 0x02231A34 - stmfd sp!, {r3, lr} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _02231A5C ; =ov18_02231B38 - bl ov18_0222FA60 - ldr r0, _02231A60 ; =ov18_02231A64 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02231A5C: .word ov18_02231B38 -_02231A60: .word ov18_02231A64 - arm_func_end ov18_02231A34 - - arm_func_start ov18_02231A64 -ov18_02231A64: ; 0x02231A64 - stmfd sp!, {r3, lr} - bl ov18_02231A74 - bl ov18_02231A78 - ldmia sp!, {r3, pc} - arm_func_end ov18_02231A64 - - arm_func_start ov18_02231A74 -ov18_02231A74: ; 0x02231A74 - bx lr - arm_func_end ov18_02231A74 - - arm_func_start ov18_02231A78 -ov18_02231A78: ; 0x02231A78 - bx lr - arm_func_end ov18_02231A78 - - arm_func_start ov18_02231A7C -ov18_02231A7C: ; 0x02231A7C - stmfd sp!, {r3, lr} - mov r0, #3 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - ldr r0, _02231AA0 ; =ov18_02231AA4 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02231AA0: .word ov18_02231AA4 - arm_func_end ov18_02231A7C - - arm_func_start ov18_02231AA4 -ov18_02231AA4: ; 0x02231AA4 - stmfd sp!, {r3, lr} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_0222FA44 - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl ov18_0222BD44 - bl ov18_0222AE04 - mov r0, #0 - bl ov18_022448E0 - mov r0, #0 - mov r1, #0x15 - bl ov18_02244CD8 - mov r0, #0 - mov r1, #1 - bl ov18_0222F6D4 - ldr r0, _02231B28 ; =0x022532F4 - ldrb r0, [r0] - cmp r0, #0 - bne _02231B08 - ldr r0, _02231B2C ; =ov18_02232530 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_02231B08: - cmp r0, #2 - bne _02231B1C - ldr r0, _02231B30 ; =ov18_02232348 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_02231B1C: - ldr r0, _02231B34 ; =ov18_02231BC0 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02231B28: .word Unk_ov18_022532F4 -_02231B2C: .word ov18_02232530 -_02231B30: .word ov18_02232348 -_02231B34: .word ov18_02231BC0 - arm_func_end ov18_02231AA4 - - arm_func_start ov18_02231B38 -ov18_02231B38: ; 0x02231B38 - stmfd sp!, {r3, lr} - cmp r0, #2 - bne _02231B64 - bl ov18_0223E61C - ldr r0, _02231BB8 ; =0x022532F4 - mov r1, #1 - strb r1, [r0] - bl ov18_0223E9FC - mov r0, #0x10 - bl ov18_0223E994 - b _02231BA0 -_02231B64: - cmp r0, #3 - bne _02231B88 - ldr r0, _02231BB8 ; =0x022532F4 - mov r1, #2 - strb r1, [r0] - bl ov18_0223E9FC - mov r0, #0x12 - bl ov18_0223E994 - b _02231BA0 -_02231B88: - ldr r0, _02231BB8 ; =0x022532F4 - mov r1, #0 - strb r1, [r0] - bl ov18_0223E9FC - mov r0, #0x12 - bl ov18_0223E994 -_02231BA0: - mov r0, #0 - bl ov18_0222FA60 - bl ov18_0222F9E8 - ldr r0, _02231BBC ; =ov18_02231A7C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02231BB8: .word Unk_ov18_022532F4 -_02231BBC: .word ov18_02231A7C - arm_func_end ov18_02231B38 - - .data - - - .global Unk_ov18_0224A068 -Unk_ov18_0224A068: ; 0x0224A068 - .asciz "char/yb5Multi.nsc.l" - - - - .bss - - - .global Unk_ov18_022532F4 -Unk_ov18_022532F4: ; 0x022532F4 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/sceneoptmovcomplete.s b/subprojects/NitroDWC/libraries/util/asm/sceneoptmovcomplete.s deleted file mode 100644 index 15e226509d..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/sceneoptmovcomplete.s +++ /dev/null @@ -1,195 +0,0 @@ - .include "macros/function.inc" - .include "include/sceneoptmovcomplete.inc" - - - - .text - - - arm_func_start ov18_02231BC0 -ov18_02231BC0: ; 0x02231BC0 - stmfd sp!, {r3, lr} - bl ov18_02231BE0 - mov r0, #0x1f - bl ov18_0222B7C8 - ldr r0, _02231BDC ; =ov18_02231C48 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02231BDC: .word ov18_02231C48 - arm_func_end ov18_02231BC0 - - arm_func_start ov18_02231BE0 -ov18_02231BE0: ; 0x02231BE0 - ldr r3, _02231C40 ; =0x04001008 - ldr r1, _02231C44 ; =0x0400000A - ldrh r0, [r3] - sub r2, r3, #0x1000 - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3] - ldrh r0, [r3, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3, #2] - ldrh r0, [r2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2] - ldrh r0, [r1] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1] - ldrh r0, [r1, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1, #2] - bx lr - ; .align 2, 0 -_02231C40: .word 0x04001008 -_02231C44: .word 0x0400000A - arm_func_end ov18_02231BE0 - - arm_func_start ov18_02231C48 -ov18_02231C48: ; 0x02231C48 - stmfd sp!, {r3, lr} - mov r0, #2 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - mov r0, #0 - mov r1, #0x15 - bl ov18_02244C84 - ldr r0, _02231C78 ; =ov18_02231C7C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02231C78: .word ov18_02231C7C - arm_func_end ov18_02231C48 - - arm_func_start ov18_02231C7C -ov18_02231C7C: ; 0x02231C7C - stmfd sp!, {r3, lr} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #5 - bl ov18_0222B790 - ldr r0, _02231CA4 ; =ov18_02231CA8 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02231CA4: .word ov18_02231CA8 - arm_func_end ov18_02231C7C - - arm_func_start ov18_02231CA8 -ov18_02231CA8: ; 0x02231CA8 - stmfd sp!, {r3, lr} - bl ov18_0222B034 - mvn r1, #1 - cmp r0, r1 - ldmeqia sp!, {r3, pc} - bl ov18_0222B0A8 - ldr r0, _02231CCC ; =ov18_02231CD0 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02231CCC: .word ov18_02231CD0 - arm_func_end ov18_02231CA8 - - arm_func_start ov18_02231CD0 -ov18_02231CD0: ; 0x02231CD0 - stmfd sp!, {r3, lr} - bl ov18_02231CE4 - bl ov18_02231D04 - bl ov18_02231D08 - ldmia sp!, {r3, pc} - arm_func_end ov18_02231CD0 - - arm_func_start ov18_02231CE4 -ov18_02231CE4: ; 0x02231CE4 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02245470 - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, #0 - bl ov18_0222B048 - ldmia sp!, {r3, pc} - arm_func_end ov18_02231CE4 - - arm_func_start ov18_02231D04 -ov18_02231D04: ; 0x02231D04 - bx lr - arm_func_end ov18_02231D04 - - arm_func_start ov18_02231D08 -ov18_02231D08: ; 0x02231D08 - stmfd sp!, {r3, lr} - bl ov18_0222B034 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #6 - bl ov18_0223E994 - ldr r0, _02231D2C ; =ov18_02231D30 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02231D2C: .word ov18_02231D30 - arm_func_end ov18_02231D08 - - arm_func_start ov18_02231D30 -ov18_02231D30: ; 0x02231D30 - stmfd sp!, {r3, lr} - bl ov18_0222B0C0 - mov r0, #8 - bl ov18_02244394 - ldr r0, _02231D4C ; =ov18_02231D50 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02231D4C: .word ov18_02231D50 - arm_func_end ov18_02231D30 - - arm_func_start ov18_02231D50 -ov18_02231D50: ; 0x02231D50 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #3 - mov r1, #1 - mov r2, #0x3f - mov r3, #0x40 - bl ov18_02244194 - mov r0, #3 - mov r1, #0 - mov r2, #0x3f - mov r3, #0x40 - bl ov18_02244194 - ldr r0, _02231D98 ; =ov18_02231D9C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02231D98: .word ov18_02231D9C - arm_func_end ov18_02231D50 - - arm_func_start ov18_02231D9C -ov18_02231D9C: ; 0x02231D9C - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0x1000000 - bl OS_SpinWait - bl PM_ForceToPowerOff - ldmia sp!, {r3, pc} - arm_func_end ov18_02231D9C \ No newline at end of file diff --git a/subprojects/NitroDWC/libraries/util/asm/sceneoptmovconfirm.s b/subprojects/NitroDWC/libraries/util/asm/sceneoptmovconfirm.s deleted file mode 100644 index 3955ed2832..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/sceneoptmovconfirm.s +++ /dev/null @@ -1,496 +0,0 @@ - .include "macros/function.inc" - .include "include/sceneoptmovconfirm.inc" - - - - .text - - - arm_func_start ov18_02231DD0 -ov18_02231DD0: ; 0x02231DD0 - stmfd sp!, {r3, lr} - bl ov18_02231DF0 - mov r0, #0x1a - bl ov18_0222B7C8 - ldr r0, _02231DEC ; =ov18_02231E58 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02231DEC: .word ov18_02231E58 - arm_func_end ov18_02231DD0 - - arm_func_start ov18_02231DF0 -ov18_02231DF0: ; 0x02231DF0 - ldr r3, _02231E50 ; =0x04001008 - ldr r1, _02231E54 ; =0x0400000A - ldrh r0, [r3] - sub r2, r3, #0x1000 - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3] - ldrh r0, [r3, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3, #2] - ldrh r0, [r2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2] - ldrh r0, [r1] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1] - ldrh r0, [r1, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1, #2] - bx lr - ; .align 2, 0 -_02231E50: .word 0x04001008 -_02231E54: .word 0x0400000A - arm_func_end ov18_02231DF0 - - arm_func_start ov18_02231E58 -ov18_02231E58: ; 0x02231E58 - stmfd sp!, {r3, lr} - mov r0, #2 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - mov r0, #0 - mov r1, #0x15 - bl ov18_02244C84 - ldr r0, _02231E88 ; =ov18_02231E8C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02231E88: .word ov18_02231E8C - arm_func_end ov18_02231E58 - - arm_func_start ov18_02231E8C -ov18_02231E8C: ; 0x02231E8C - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #4 - bl ov18_0222B790 - ldr r0, _02231EC4 ; =ov18_02231EC8 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02231EC4: .word ov18_02231EC8 - arm_func_end ov18_02231E8C - - arm_func_start ov18_02231EC8 -ov18_02231EC8: ; 0x02231EC8 - stmfd sp!, {r3, lr} - bl ov18_0222B034 - mvn r1, #1 - cmp r0, r1 - ldmeqia sp!, {r3, pc} - bl ov18_0222B0A8 - ldr r0, _02231EEC ; =ov18_02231EF0 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02231EEC: .word ov18_02231EF0 - arm_func_end ov18_02231EC8 - - arm_func_start ov18_02231EF0 -ov18_02231EF0: ; 0x02231EF0 - stmfd sp!, {r3, lr} - bl ov18_02231F04 - bl ov18_02231F24 - bl ov18_02231F28 - ldmia sp!, {r3, pc} - arm_func_end ov18_02231EF0 - - arm_func_start ov18_02231F04 -ov18_02231F04: ; 0x02231F04 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02245470 - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, #0 - bl ov18_0222B048 - ldmia sp!, {r3, pc} - arm_func_end ov18_02231F04 - - arm_func_start ov18_02231F24 -ov18_02231F24: ; 0x02231F24 - bx lr - arm_func_end ov18_02231F24 - - arm_func_start ov18_02231F28 -ov18_02231F28: ; 0x02231F28 - stmfd sp!, {r3, lr} - bl ov18_0222B034 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #6 - bl ov18_0223E994 - ldr r0, _02231F4C ; =ov18_02231F50 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02231F4C: .word ov18_02231F50 - arm_func_end ov18_02231F28 - - arm_func_start ov18_02231F50 -ov18_02231F50: ; 0x02231F50 - stmfd sp!, {r3, lr} - bl ov18_0222B0C0 - mov r0, #8 - bl ov18_02244394 - ldr r0, _02231F6C ; =ov18_02231F70 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02231F6C: .word ov18_02231F70 - arm_func_end ov18_02231F50 - - arm_func_start ov18_02231F70 -ov18_02231F70: ; 0x02231F70 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_0222B004 - mov r0, #3 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - ldr r0, _02231FA8 ; =ov18_02231FAC - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02231FA8: .word ov18_02231FAC - arm_func_end ov18_02231F70 - - arm_func_start ov18_02231FAC -ov18_02231FAC: ; 0x02231FAC - stmfd sp!, {r3, lr} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_0222B07C - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, #0 - bl ov18_022448E0 - mov r0, #0 - mov r1, #0x15 - bl ov18_02244CD8 - mov r0, #0 - mov r1, #1 - bl ov18_0222F6D4 - ldr r0, _02231FF8 ; =ov18_02232C90 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02231FF8: .word ov18_02232C90 - arm_func_end ov18_02231FAC - - arm_func_start ov18_02231FFC -ov18_02231FFC: ; 0x02231FFC - stmfd sp!, {r3, lr} - ldr r0, _0223203C ; =0x022532F8 - mov r1, #0 - strb r1, [r0] - bl ov18_02232044 - mov r0, #0x13 - bl ov18_0222BBC0 - mov r0, #0x3c - sub r1, r0, #0x3d - mov r2, #0 - bl ov18_0222B594 - mov r0, #0x1b - bl ov18_0222B7C8 - ldr r0, _02232040 ; =ov18_022320C4 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223203C: .word Unk_ov18_022532F8 -_02232040: .word ov18_022320C4 - arm_func_end ov18_02231FFC - - arm_func_start ov18_02232044 -ov18_02232044: ; 0x02232044 - stmfd sp!, {r3, lr} - ldr r0, _022320B4 ; =0x0224A07C - ldr r1, _022320B8 ; =GX_LoadBG2Scr - bl ov18_0222B700 - ldr r3, _022320BC ; =0x04001008 - ldr r1, _022320C0 ; =0x0400000A - ldrh r0, [r3] - sub r2, r3, #0x1000 - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3] - ldrh r0, [r3, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3, #2] - ldrh r0, [r2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2] - ldrh r0, [r1] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1] - ldrh r0, [r1, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1, #2] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022320B4: .word Unk_ov18_0224A07C -_022320B8: .word GX_LoadBG2Scr -_022320BC: .word 0x04001008 -_022320C0: .word 0x0400000A - arm_func_end ov18_02232044 - - arm_func_start ov18_022320C4 -ov18_022320C4: ; 0x022320C4 - stmfd sp!, {r3, lr} - mov r1, #1 - mov r2, r1 - mov r0, #2 - mov r3, #8 - bl ov18_02244194 - mov r0, #2 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - mov r0, #1 - mov r1, r0 - bl ov18_02244C84 - mov r0, #0 - mov r1, #0x15 - bl ov18_02244C84 - ldr r0, _02232114 ; =ov18_02232118 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02232114: .word ov18_02232118 - arm_func_end ov18_022320C4 - - arm_func_start ov18_02232118 -ov18_02232118: ; 0x02232118 - stmfd sp!, {r3, lr} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #3 - bl ov18_0222B790 - ldr r0, _02232140 ; =ov18_02232144 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02232140: .word ov18_02232144 - arm_func_end ov18_02232118 - - arm_func_start ov18_02232144 -ov18_02232144: ; 0x02232144 - stmfd sp!, {r3, lr} - bl ov18_0222B034 - mvn r1, #1 - cmp r0, r1 - ldmeqia sp!, {r3, pc} - bl ov18_0222B0A8 - ldr r0, _02232168 ; =ov18_0223216C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02232168: .word ov18_0223216C - arm_func_end ov18_02232144 - - arm_func_start ov18_0223216C -ov18_0223216C: ; 0x0223216C - stmfd sp!, {r3, lr} - bl ov18_02232180 - bl ov18_022321B8 - bl ov18_022321BC - ldmia sp!, {r3, pc} - arm_func_end ov18_0223216C - - arm_func_start ov18_02232180 -ov18_02232180: ; 0x02232180 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02245470 - cmp r0, #0 - beq _0223219C - mov r0, #1 - bl ov18_0222B048 -_0223219C: - mov r0, #2 - bl ov18_02245470 - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, #0 - bl ov18_0222B048 - ldmia sp!, {r3, pc} - arm_func_end ov18_02232180 - - arm_func_start ov18_022321B8 -ov18_022321B8: ; 0x022321B8 - bx lr - arm_func_end ov18_022321B8 - - arm_func_start ov18_022321BC -ov18_022321BC: ; 0x022321BC - stmfd sp!, {r3, lr} - bl ov18_0222B034 - cmp r0, #0 - beq _022321D8 - cmp r0, #1 - beq _022321E4 - ldmia sp!, {r3, pc} -_022321D8: - mov r0, #7 - bl ov18_0223E994 - b _022321F8 -_022321E4: - mov r0, #6 - bl ov18_0223E994 - ldr r0, _02232204 ; =0x022532F8 - mov r1, #1 - strb r1, [r0] -_022321F8: - ldr r0, _02232208 ; =ov18_0223220C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02232204: .word Unk_ov18_022532F8 -_02232208: .word ov18_0223220C - arm_func_end ov18_022321BC - - arm_func_start ov18_0223220C -ov18_0223220C: ; 0x0223220C - stmfd sp!, {r3, lr} - bl ov18_0222B0C0 - mov r0, #8 - bl ov18_02244394 - ldr r0, _02232228 ; =ov18_0223222C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02232228: .word ov18_0223222C - arm_func_end ov18_0223220C - - arm_func_start ov18_0223222C -ov18_0223222C: ; 0x0223222C - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_0222B004 - ldr r0, _02232288 ; =0x022532F8 - ldrb r0, [r0] - cmp r0, #0 - bne _02232268 - mov r1, #1 - mov r2, r1 - mov r0, #3 - mov r3, #8 - bl ov18_02244194 -_02232268: - mov r0, #3 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - ldr r0, _0223228C ; =ov18_02232290 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02232288: .word Unk_ov18_022532F8 -_0223228C: .word ov18_02232290 - arm_func_end ov18_0223222C - - arm_func_start ov18_02232290 -ov18_02232290: ; 0x02232290 - stmfd sp!, {r3, lr} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0223233C ; =0x022532F8 - ldrb r0, [r0] - cmp r0, #0 - bne _022322C4 - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} -_022322C4: - bl ov18_0222B07C - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, #0 - bl ov18_022448E0 - ldr r0, _0223233C ; =0x022532F8 - ldrb r0, [r0] - cmp r0, #0 - bne _022322F8 - bl ov18_0222B668 - mov r0, #1 - mov r1, r0 - bl ov18_02244CD8 -_022322F8: - mov r0, #0 - mov r1, #0x15 - bl ov18_02244CD8 - ldr r0, _0223233C ; =0x022532F8 - mov r1, #1 - ldrb r0, [r0] - cmp r0, #0 - mov r0, #0 - bne _0223232C - bl ov18_0222F6D4 - ldr r0, _02232340 ; =ov18_02231230 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_0223232C: - bl ov18_0222F6D4 - ldr r0, _02232344 ; =ov18_02231DD0 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223233C: .word Unk_ov18_022532F8 -_02232340: .word ov18_02231230 -_02232344: .word ov18_02231DD0 - arm_func_end ov18_02232290 - - .data - - - .global Unk_ov18_0224A07C -Unk_ov18_0224A07C: ; 0x0224A07C - .asciz "char/yb5Multi.nsc.l" - - - - .bss - - - .global Unk_ov18_022532F8 -Unk_ov18_022532F8: ; 0x022532F8 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/sceneoptmovdisconnect.s b/subprojects/NitroDWC/libraries/util/asm/sceneoptmovdisconnect.s deleted file mode 100644 index b27eed88a4..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/sceneoptmovdisconnect.s +++ /dev/null @@ -1,189 +0,0 @@ - .include "macros/function.inc" - .include "include/sceneoptmovdisconnect.inc" - - - - .text - - - arm_func_start ov18_02232348 -ov18_02232348: ; 0x02232348 - stmfd sp!, {r3, lr} - ldr r0, _02232370 ; =0x022532FC - mov r1, #0 - strb r1, [r0] - bl ov18_02232378 - mov r0, #0x21 - bl ov18_0222B7C8 - ldr r0, _02232374 ; =ov18_022323E4 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02232370: .word Unk_ov18_022532FC -_02232374: .word ov18_022323E4 - arm_func_end ov18_02232348 - - arm_func_start ov18_02232378 -ov18_02232378: ; 0x02232378 - stmfd sp!, {r3, lr} - ldr r0, _022323D4 ; =0x0224A090 - ldr r1, _022323D8 ; =GX_LoadBG2Scr - bl ov18_0222B700 - ldr r2, _022323DC ; =0x04001008 - ldr r1, _022323E0 ; =0x0400000A - ldrh r0, [r2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2] - ldrh r0, [r2, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2, #2] - ldrh r0, [r1] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1] - ldrh r0, [r1, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1, #2] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022323D4: .word Unk_ov18_0224A090 -_022323D8: .word GX_LoadBG2Scr -_022323DC: .word 0x04001008 -_022323E0: .word 0x0400000A - arm_func_end ov18_02232378 - - arm_func_start ov18_022323E4 -ov18_022323E4: ; 0x022323E4 - stmfd sp!, {r3, lr} - mov r0, #2 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - mov r0, #0 - mov r1, #0x15 - bl ov18_02244C84 - ldr r0, _02232414 ; =ov18_02232418 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02232414: .word ov18_02232418 - arm_func_end ov18_022323E4 - - arm_func_start ov18_02232418 -ov18_02232418: ; 0x02232418 - stmfd sp!, {r3, lr} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_0222FA44 - cmp r0, #0 - ldmeqia sp!, {r3, pc} - ldr r0, _02232444 ; =ov18_02232448 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02232444: .word ov18_02232448 - arm_func_end ov18_02232418 - - arm_func_start ov18_02232448 -ov18_02232448: ; 0x02232448 - stmfd sp!, {r3, lr} - bl ov18_022324FC - bl ov18_02232458 - ldmia sp!, {r3, pc} - arm_func_end ov18_02232448 - - arm_func_start ov18_02232458 -ov18_02232458: ; 0x02232458 - bx lr - arm_func_end ov18_02232458 - - arm_func_start ov18_0223245C -ov18_0223245C: ; 0x0223245C - stmfd sp!, {r3, lr} - mov r1, #1 - mov r2, r1 - mov r0, #3 - mov r3, #8 - bl ov18_02244194 - mov r0, #3 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - ldr r0, _02232494 ; =ov18_02232498 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02232494: .word ov18_02232498 - arm_func_end ov18_0223245C - - arm_func_start ov18_02232498 -ov18_02232498: ; 0x02232498 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_022448E0 - bl ov18_0222B668 - mov r0, #1 - mov r1, r0 - bl ov18_02244CD8 - mov r0, #0 - mov r1, #0x15 - bl ov18_02244CD8 - mov r0, #0 - mov r1, #1 - bl ov18_0222F6D4 - ldr r0, _022324F8 ; =ov18_02231230 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022324F8: .word ov18_02231230 - arm_func_end ov18_02232498 - - arm_func_start ov18_022324FC -ov18_022324FC: ; 0x022324FC - stmfd sp!, {r3, lr} - ldr r0, _02232528 ; =0x022532FC - ldrb r1, [r0] - add r2, r1, #1 - and r1, r2, #0xff - strb r2, [r0] - cmp r1, #0x78 - ldmloia sp!, {r3, pc} - ldr r0, _0223252C ; =ov18_0223245C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02232528: .word Unk_ov18_022532FC -_0223252C: .word ov18_0223245C - arm_func_end ov18_022324FC - - .data - - - .global Unk_ov18_0224A090 -Unk_ov18_0224A090: ; 0x0224A090 - .asciz "char/yb5Multi.nsc.l" - - - - .bss - - - .global Unk_ov18_022532FC -Unk_ov18_022532FC: ; 0x022532FC - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/sceneoptmovfailure.s b/subprojects/NitroDWC/libraries/util/asm/sceneoptmovfailure.s deleted file mode 100644 index f251612ac6..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/sceneoptmovfailure.s +++ /dev/null @@ -1,310 +0,0 @@ - .include "macros/function.inc" - .include "include/sceneoptmovfailure.inc" - - - - .text - - - arm_func_start ov18_02232530 -ov18_02232530: ; 0x02232530 - stmfd sp!, {r3, lr} - bl ov18_0223256C - mov r0, #0x20 - bl ov18_0222B7C8 - mov r0, #0x3c - sub r1, r0, #0x3d - mov r2, #0 - bl ov18_0222B594 - ldr r1, _02232564 ; =0x02253300 - strb r0, [r1] - ldr r0, _02232568 ; =ov18_022325EC - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02232564: .word Unk_ov18_02253300 -_02232568: .word ov18_022325EC - arm_func_end ov18_02232530 - - arm_func_start ov18_0223256C -ov18_0223256C: ; 0x0223256C - stmfd sp!, {r3, lr} - ldr r0, _022325DC ; =0x0224A0A4 - ldr r1, _022325E0 ; =GX_LoadBG2Scr - bl ov18_0222B700 - ldr r3, _022325E4 ; =0x04001008 - ldr r1, _022325E8 ; =0x0400000A - ldrh r0, [r3] - sub r2, r3, #0x1000 - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3] - ldrh r0, [r3, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3, #2] - ldrh r0, [r2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2] - ldrh r0, [r1] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1] - ldrh r0, [r1, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1, #2] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022325DC: .word Unk_ov18_0224A0A4 -_022325E0: .word GX_LoadBG2Scr -_022325E4: .word 0x04001008 -_022325E8: .word 0x0400000A - arm_func_end ov18_0223256C - - arm_func_start ov18_022325EC -ov18_022325EC: ; 0x022325EC - stmfd sp!, {r3, lr} - mov r0, #2 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - mov r0, #0 - mov r1, #0x15 - bl ov18_02244C84 - ldr r0, _0223264C ; =0x02253300 - ldrb r0, [r0] - cmp r0, #0 - beq _02232640 - mov r1, #1 - mov r2, r1 - mov r0, #2 - mov r3, #8 - bl ov18_02244194 - mov r0, #1 - mov r1, r0 - bl ov18_02244C84 -_02232640: - ldr r0, _02232650 ; =ov18_02232654 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223264C: .word Unk_ov18_02253300 -_02232650: .word ov18_02232654 - arm_func_end ov18_022325EC - - arm_func_start ov18_02232654 -ov18_02232654: ; 0x02232654 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #3 - bl ov18_0222B790 - ldr r0, _0223268C ; =ov18_02232690 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223268C: .word ov18_02232690 - arm_func_end ov18_02232654 - - arm_func_start ov18_02232690 -ov18_02232690: ; 0x02232690 - stmfd sp!, {r3, lr} - bl ov18_0222B034 - mvn r1, #1 - cmp r0, r1 - ldmeqia sp!, {r3, pc} - bl ov18_0222FA44 - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl ov18_0222B0A8 - ldr r0, _022326C0 ; =ov18_022326C4 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022326C0: .word ov18_022326C4 - arm_func_end ov18_02232690 - - arm_func_start ov18_022326C4 -ov18_022326C4: ; 0x022326C4 - stmfd sp!, {r3, lr} - bl ov18_022326D8 - bl ov18_02232710 - bl ov18_02232714 - ldmia sp!, {r3, pc} - arm_func_end ov18_022326C4 - - arm_func_start ov18_022326D8 -ov18_022326D8: ; 0x022326D8 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02245470 - cmp r0, #0 - beq _022326F4 - mov r0, #1 - bl ov18_0222B048 -_022326F4: - mov r0, #2 - bl ov18_02245470 - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, #0 - bl ov18_0222B048 - ldmia sp!, {r3, pc} - arm_func_end ov18_022326D8 - - arm_func_start ov18_02232710 -ov18_02232710: ; 0x02232710 - bx lr - arm_func_end ov18_02232710 - - arm_func_start ov18_02232714 -ov18_02232714: ; 0x02232714 - stmfd sp!, {r3, lr} - bl ov18_0222B034 - cmp r0, #0 - beq _02232744 - cmp r0, #1 - ldmneia sp!, {r3, pc} - ldr r1, _02232764 ; =0x02253300 - mov r2, #1 - mov r0, #6 - strb r2, [r1, #1] - bl ov18_0223E994 - b _02232758 -_02232744: - ldr r1, _02232764 ; =0x02253300 - mov r2, #0 - mov r0, #7 - strb r2, [r1, #1] - bl ov18_0223E994 -_02232758: - ldr r0, _02232768 ; =ov18_0223276C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02232764: .word Unk_ov18_02253300 -_02232768: .word ov18_0223276C - arm_func_end ov18_02232714 - - arm_func_start ov18_0223276C -ov18_0223276C: ; 0x0223276C - stmfd sp!, {r3, lr} - bl ov18_0222B0C0 - mov r0, #8 - bl ov18_02244394 - ldr r0, _02232788 ; =ov18_0223278C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02232788: .word ov18_0223278C - arm_func_end ov18_0223276C - - arm_func_start ov18_0223278C -ov18_0223278C: ; 0x0223278C - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_0222B004 - ldr r0, _022327E8 ; =0x02253300 - ldrb r0, [r0, #1] - cmp r0, #0 - bne _022327C8 - mov r1, #1 - mov r2, r1 - mov r0, #3 - mov r3, #8 - bl ov18_02244194 -_022327C8: - mov r0, #3 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - ldr r0, _022327EC ; =ov18_022327F0 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022327E8: .word Unk_ov18_02253300 -_022327EC: .word ov18_022327F0 - arm_func_end ov18_0223278C - - arm_func_start ov18_022327F0 -ov18_022327F0: ; 0x022327F0 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_0222B07C - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, #0 - bl ov18_022448E0 - ldr r0, _0223288C ; =0x02253300 - ldrb r0, [r0, #1] - cmp r0, #0 - bne _02232848 - bl ov18_0222B668 - mov r0, #1 - mov r1, r0 - bl ov18_02244CD8 -_02232848: - mov r0, #0 - mov r1, #0x15 - bl ov18_02244CD8 - ldr r0, _0223288C ; =0x02253300 - mov r1, #1 - ldrb r0, [r0, #1] - cmp r0, #0 - mov r0, #0 - bne _0223287C - bl ov18_0222F6D4 - ldr r0, _02232890 ; =ov18_02231230 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_0223287C: - bl ov18_0222F6D4 - ldr r0, _02232894 ; =ov18_02232C90 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223288C: .word Unk_ov18_02253300 -_02232890: .word ov18_02231230 -_02232894: .word ov18_02232C90 - arm_func_end ov18_022327F0 - - .data - - - .global Unk_ov18_0224A0A4 -Unk_ov18_0224A0A4: ; 0x0224A0A4 - .asciz "char/yb5Multi.nsc.l" - - - - .bss - - - .global Unk_ov18_02253300 -Unk_ov18_02253300: ; 0x02253300 - .space 0x1 - - .global Unk_ov18_02253301 -Unk_ov18_02253301: ; 0x02253301 - .space 0x3 - diff --git a/subprojects/NitroDWC/libraries/util/asm/sceneoptmovuser.s b/subprojects/NitroDWC/libraries/util/asm/sceneoptmovuser.s deleted file mode 100644 index 5ee96deb8b..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/sceneoptmovuser.s +++ /dev/null @@ -1,344 +0,0 @@ - .include "macros/function.inc" - .include "include/sceneoptmovuser.inc" - - - - .text - - - arm_func_start ov18_02232898 -ov18_02232898: ; 0x02232898 - stmfd sp!, {r3, r4, r5, lr} - sub sp, sp, #0x28 - bl ov18_0222FA84 - mov r5, r0 - mov r0, #0 - mov r1, r0 - bl ov18_0224467C - ldr r1, _0223295C ; =0x02253304 - mov r2, #0 - strb r2, [r1, #1] - mov r4, r0 - strb r2, [r1] - bl ov18_02232968 - mov r0, #0 - add r1, sp, #0x10 - mov r2, #0x16 - bl MIi_CpuClear16 - ldrb r2, [r5, #1] - add r0, r5, #2 - add r1, sp, #0x10 - mov r2, r2, lsl #1 - bl MIi_CpuCopy16 - mov r0, #0x1c - str r0, [sp] - mov r0, #2 - str r0, [sp, #4] - mov r0, #0x480 - str r0, [sp, #8] - add r1, sp, #0x10 - str r1, [sp, #0xc] - mov r0, r4 - mov r1, #8 - mov r2, #0x35 - mov r3, #0xf0 - bl ov18_02244A9C - mov r0, r4 - bl ov18_02244C08 - ldr r0, _02232960 ; =ov18_02232C5C - bl ov18_0222FA60 - mov r1, #4 - mov r2, #0 - mov r0, #0x1d - sub r3, r1, #5 - str r2, [sp] - bl ov18_0223FC48 - ldr r0, _02232964 ; =ov18_022329E8 - bl ov18_0222F6C4 - add sp, sp, #0x28 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0223295C: .word Unk_ov18_02253304 -_02232960: .word ov18_02232C5C -_02232964: .word ov18_022329E8 - arm_func_end ov18_02232898 - - arm_func_start ov18_02232968 -ov18_02232968: ; 0x02232968 - stmfd sp!, {r3, lr} - ldr r0, _022329D8 ; =0x0224A0B8 - ldr r1, _022329DC ; =GX_LoadBG2Scr - bl ov18_0222B700 - ldr r3, _022329E0 ; =0x04001008 - ldr r1, _022329E4 ; =0x0400000A - ldrh r0, [r3] - sub r2, r3, #0x1000 - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3] - ldrh r0, [r3, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3, #2] - ldrh r0, [r2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2] - ldrh r0, [r1] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1] - ldrh r0, [r1, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1, #2] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022329D8: .word Unk_ov18_0224A0B8 -_022329DC: .word GX_LoadBG2Scr -_022329E0: .word 0x04001008 -_022329E4: .word 0x0400000A - arm_func_end ov18_02232968 - - arm_func_start ov18_022329E8 -ov18_022329E8: ; 0x022329E8 - stmfd sp!, {r3, lr} - mov r0, #2 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - mov r0, #0 - mov r1, #0x15 - bl ov18_02244C84 - ldr r0, _02232A18 ; =ov18_02232A1C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02232A18: .word ov18_02232A1C - arm_func_end ov18_022329E8 - - arm_func_start ov18_02232A1C -ov18_02232A1C: ; 0x02232A1C - stmfd sp!, {r3, lr} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _02232A3C ; =ov18_02232A40 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02232A3C: .word ov18_02232A40 - arm_func_end ov18_02232A1C - - arm_func_start ov18_02232A40 -ov18_02232A40: ; 0x02232A40 - stmfd sp!, {r3, lr} - bl ov18_0223FFB8 - mvn r1, #1 - cmp r0, r1 - ldmeqia sp!, {r3, pc} - ldr r0, _02232A60 ; =ov18_02232A64 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02232A60: .word ov18_02232A64 - arm_func_end ov18_02232A40 - - arm_func_start ov18_02232A64 -ov18_02232A64: ; 0x02232A64 - stmfd sp!, {r3, lr} - bl ov18_02232AD4 - bl ov18_02232AD8 - bl ov18_0223FFB8 - cmp r0, #0 - beq _02232A88 - cmp r0, #1 - beq _02232AA0 - ldmia sp!, {r3, pc} -_02232A88: - ldr r1, _02232ACC ; =0x02253304 - mov r2, #0 - mov r0, #7 - strb r2, [r1, #1] - bl ov18_0223E994 - b _02232AB4 -_02232AA0: - ldr r1, _02232ACC ; =0x02253304 - mov r2, #1 - mov r0, #0xe - strb r2, [r1, #1] - bl ov18_0223E994 -_02232AB4: - mov r0, #0 - bl ov18_0222FA60 - bl ov18_0223FF74 - ldr r0, _02232AD0 ; =ov18_02232ADC - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02232ACC: .word Unk_ov18_02253304 -_02232AD0: .word ov18_02232ADC - arm_func_end ov18_02232A64 - - arm_func_start ov18_02232AD4 -ov18_02232AD4: ; 0x02232AD4 - bx lr - arm_func_end ov18_02232AD4 - - arm_func_start ov18_02232AD8 -ov18_02232AD8: ; 0x02232AD8 - bx lr - arm_func_end ov18_02232AD8 - - arm_func_start ov18_02232ADC -ov18_02232ADC: ; 0x02232ADC - stmfd sp!, {r3, lr} - bl ov18_0223FFCC - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _02232B30 ; =0x02253304 - ldrb r0, [r0, #1] - cmp r0, #0 - bne _02232B10 - mov r1, #1 - mov r2, r1 - mov r0, #3 - mov r3, #8 - bl ov18_02244194 -_02232B10: - mov r0, #3 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - ldr r0, _02232B34 ; =ov18_02232B38 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02232B30: .word Unk_ov18_02253304 -_02232B34: .word ov18_02232B38 - arm_func_end ov18_02232ADC - - arm_func_start ov18_02232B38 -ov18_02232B38: ; 0x02232B38 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _02232B8C ; =0x02253304 - ldrb r1, [r0] - cmp r1, #0 - ldreqb r0, [r0, #1] - cmpeq r0, #1 - bne _02232B7C - bl ov18_0222FA78 - b _02232B80 -_02232B7C: - bl ov18_0222F9E8 -_02232B80: - ldr r0, _02232B90 ; =ov18_02232B94 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02232B8C: .word Unk_ov18_02253304 -_02232B90: .word ov18_02232B94 - arm_func_end ov18_02232B38 - - arm_func_start ov18_02232B94 -ov18_02232B94: ; 0x02232B94 - stmfd sp!, {r3, lr} - ldr r0, _02232C4C ; =0x02253304 - ldrb r1, [r0] - cmp r1, #0 - bne _02232BB4 - ldrb r0, [r0, #1] - cmp r0, #0 - bne _02232BC0 -_02232BB4: - bl ov18_0222FA44 - cmp r0, #0 - ldmeqia sp!, {r3, pc} -_02232BC0: - mov r0, #0 - bl ov18_022448E0 - mov r0, #0 - mov r1, #0x15 - bl ov18_02244CD8 - ldr r0, _02232C4C ; =0x02253304 - ldrb r0, [r0, #1] - cmp r0, #0 - bne _02232BF4 - bl ov18_0222B668 - mov r0, #1 - mov r1, r0 - bl ov18_02244CD8 -_02232BF4: - mov r0, #0 - mov r1, #1 - bl ov18_0222F6D4 - ldr r0, _02232C4C ; =0x02253304 - ldrb r1, [r0] - cmp r1, #0 - beq _02232C1C - ldr r0, _02232C50 ; =ov18_02232530 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_02232C1C: - ldrb r0, [r0, #1] - cmp r0, #0 - bne _02232C40 - mov r0, #1 - mov r1, r0 - bl ov18_02244CD8 - ldr r0, _02232C54 ; =ov18_02231230 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_02232C40: - ldr r0, _02232C58 ; =ov18_02231948 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02232C4C: .word Unk_ov18_02253304 -_02232C50: .word ov18_02232530 -_02232C54: .word ov18_02231230 -_02232C58: .word ov18_02231948 - arm_func_end ov18_02232B94 - - arm_func_start ov18_02232C5C -ov18_02232C5C: ; 0x02232C5C - ldr r0, _02232C6C ; =0x02253304 - mov r1, #1 - strb r1, [r0] - bx lr - ; .align 2, 0 -_02232C6C: .word Unk_ov18_02253304 - arm_func_end ov18_02232C5C - - .data - - - .global Unk_ov18_0224A0B8 -Unk_ov18_0224A0B8: ; 0x0224A0B8 - .ascii "char/jb5Move.nsc.l" - .space 0x2 - - - - .bss - - - .global Unk_ov18_02253304 -Unk_ov18_02253304: ; 0x02253304 - .space 0x1 - - .global Unk_ov18_02253305 -Unk_ov18_02253305: ; 0x02253305 - .space 0x3 - diff --git a/subprojects/NitroDWC/libraries/util/asm/sceneoptmovwait.s b/subprojects/NitroDWC/libraries/util/asm/sceneoptmovwait.s deleted file mode 100644 index e5ae75aea4..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/sceneoptmovwait.s +++ /dev/null @@ -1,356 +0,0 @@ - .include "macros/function.inc" - .include "include/sceneoptmovwait.inc" - - - - .text - - - arm_func_start ov18_02232C70 -ov18_02232C70: ; 0x02232C70 - ldr r0, _02232C8C ; =0x027FFFA8 - ldrh r0, [r0] - and r0, r0, #0x8000 - movs r0, r0, asr #0xf - movne r0, #1 - moveq r0, #0 - bx lr - ; .align 2, 0 -_02232C8C: .word 0x027FFFA8 - arm_func_end ov18_02232C70 - - arm_func_start ov18_02232C90 -ov18_02232C90: ; 0x02232C90 - stmfd sp!, {r3, lr} - ldr r0, _02232CD0 ; =ov18_0223300C - bl ov18_0222F8FC - ldr r0, _02232CD4 ; =0x02253308 - mov r1, #0 - strb r1, [r0] - bl ov18_02232CDC - mov r0, #0x1c - bl ov18_0222B7C8 - mov r0, #0 - bl ov18_0222AD34 - mov r0, #0xb - bl ov18_0223E994 - ldr r0, _02232CD8 ; =ov18_02232D5C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02232CD0: .word ov18_0223300C -_02232CD4: .word Unk_ov18_02253308 -_02232CD8: .word ov18_02232D5C - arm_func_end ov18_02232C90 - - arm_func_start ov18_02232CDC -ov18_02232CDC: ; 0x02232CDC - stmfd sp!, {r3, lr} - ldr r0, _02232D4C ; =0x0224A0CC - ldr r1, _02232D50 ; =GX_LoadBG2Scr - bl ov18_0222B700 - ldr r3, _02232D54 ; =0x04001008 - ldr r1, _02232D58 ; =0x0400000A - ldrh r0, [r3] - sub r2, r3, #0x1000 - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3] - ldrh r0, [r3, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3, #2] - ldrh r0, [r2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2] - ldrh r0, [r1] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1] - ldrh r0, [r1, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1, #2] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02232D4C: .word Unk_ov18_0224A0CC -_02232D50: .word GX_LoadBG2Scr -_02232D54: .word 0x04001008 -_02232D58: .word 0x0400000A - arm_func_end ov18_02232CDC - - arm_func_start ov18_02232D5C -ov18_02232D5C: ; 0x02232D5C - stmfd sp!, {r3, lr} - mov r0, #2 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - mov r0, #0 - mov r1, #0x15 - bl ov18_02244C84 - ldr r0, _02232D8C ; =ov18_02232D90 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02232D8C: .word ov18_02232D90 - arm_func_end ov18_02232D5C - - arm_func_start ov18_02232D90 -ov18_02232D90: ; 0x02232D90 - stmfd sp!, {r3, lr} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #1 - bl ov18_0222B790 - ldr r0, _02232DB8 ; =ov18_02232DBC - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02232DB8: .word ov18_02232DBC - arm_func_end ov18_02232D90 - - arm_func_start ov18_02232DBC -ov18_02232DBC: ; 0x02232DBC - stmfd sp!, {r3, lr} - bl ov18_0222B034 - mvn r1, #1 - cmp r0, r1 - ldmeqia sp!, {r3, pc} - ldr r0, _02232DDC ; =ov18_02232DE0 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02232DDC: .word ov18_02232DE0 - arm_func_end ov18_02232DBC - - arm_func_start ov18_02232DE0 -ov18_02232DE0: ; 0x02232DE0 - stmfd sp!, {r3, lr} - bl ov18_02232DF4 - bl ov18_02232E2C - bl ov18_02232E30 - ldmia sp!, {r3, pc} - arm_func_end ov18_02232DE0 - - arm_func_start ov18_02232DF4 -ov18_02232DF4: ; 0x02232DF4 - stmfd sp!, {r3, lr} - mov r0, #2 - bl ov18_02245470 - cmp r0, #0 - beq _02232E14 - mov r0, #0 - bl ov18_0222B048 - ldmia sp!, {r3, pc} -_02232E14: - bl ov18_02232C70 - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, #0 - bl ov18_0222B048 - ldmia sp!, {r3, pc} - arm_func_end ov18_02232DF4 - - arm_func_start ov18_02232E2C -ov18_02232E2C: ; 0x02232E2C - bx lr - arm_func_end ov18_02232E2C - - arm_func_start ov18_02232E30 -ov18_02232E30: ; 0x02232E30 - stmfd sp!, {r3, lr} - bl ov18_0222B034 - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_0223E9FC - mov r0, #7 - bl ov18_0223E994 - ldr r0, _02232E58 ; =ov18_02232E5C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02232E58: .word ov18_02232E5C - arm_func_end ov18_02232E30 - - arm_func_start ov18_02232E5C -ov18_02232E5C: ; 0x02232E5C - stmfd sp!, {r3, lr} - ldr r0, _02232E8C ; =0x02253308 - ldrb r0, [r0] - cmp r0, #0 - bne _02232E74 - bl ov18_0222F9E8 -_02232E74: - bl ov18_0222B0C0 - mov r0, #8 - bl ov18_02244394 - ldr r0, _02232E90 ; =ov18_02232E94 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02232E8C: .word Unk_ov18_02253308 -_02232E90: .word ov18_02232E94 - arm_func_end ov18_02232E5C - - arm_func_start ov18_02232E94 -ov18_02232E94: ; 0x02232E94 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _02232F0C ; =0x02253308 - ldrb r0, [r0] - cmp r0, #0 - bne _02232EC4 - bl ov18_0222FA44 - cmp r0, #0 - ldmeqia sp!, {r3, pc} -_02232EC4: - bl ov18_0222B004 - ldr r0, _02232F0C ; =0x02253308 - ldrb r0, [r0] - cmp r0, #0 - bne _02232EEC - mov r1, #1 - mov r2, r1 - mov r0, #3 - mov r3, #8 - bl ov18_02244194 -_02232EEC: - mov r0, #3 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - ldr r0, _02232F10 ; =ov18_02232F14 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02232F0C: .word Unk_ov18_02253308 -_02232F10: .word ov18_02232F14 - arm_func_end ov18_02232E94 - - arm_func_start ov18_02232F14 -ov18_02232F14: ; 0x02232F14 - stmfd sp!, {r3, lr} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _02232FFC ; =0x02253308 - ldrb r0, [r0] - cmp r0, #0 - bne _02232F48 - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} -_02232F48: - bl ov18_0222B07C - cmp r0, #0 - ldmeqia sp!, {r3, pc} - ldr r0, _02232FFC ; =0x02253308 - ldrb r0, [r0] - cmp r0, #0 - bne _02232F70 - bl ov18_0222FA44 - cmp r0, #0 - ldmeqia sp!, {r3, pc} -_02232F70: - bl ov18_0222AE04 - mov r0, #0 - bl ov18_022448E0 - ldr r0, _02232FFC ; =0x02253308 - ldrb r0, [r0] - cmp r0, #0 - bne _02232F9C - bl ov18_0222B668 - mov r0, #1 - mov r1, r0 - bl ov18_02244CD8 -_02232F9C: - mov r0, #0 - mov r1, #0x15 - bl ov18_02244CD8 - ldr r0, _02232FFC ; =0x02253308 - mov r1, #1 - ldrb r0, [r0] - cmp r0, #0 - bne _02232FD0 - mov r0, #0 - bl ov18_0222F6D4 - ldr r0, _02233000 ; =ov18_02231230 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_02232FD0: - cmp r0, #2 - mov r0, #0 - bne _02232FEC - bl ov18_0222F6D4 - ldr r0, _02233004 ; =ov18_02232530 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_02232FEC: - bl ov18_0222F6D4 - ldr r0, _02233008 ; =ov18_02232898 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02232FFC: .word Unk_ov18_02253308 -_02233000: .word ov18_02231230 -_02233004: .word ov18_02232530 -_02233008: .word ov18_02232898 - arm_func_end ov18_02232F14 - - arm_func_start ov18_0223300C -ov18_0223300C: ; 0x0223300C - stmfd sp!, {r4, lr} - mov r4, r0 - bl ov18_0223E9FC - cmp r4, #0 - bne _02233038 - ldr r1, _02233060 ; =0x02253308 - mov r2, #1 - mov r0, #0x10 - strb r2, [r1] - bl ov18_0223E994 - b _0223304C -_02233038: - ldr r1, _02233060 ; =0x02253308 - mov r2, #2 - mov r0, #0x12 - strb r2, [r1] - bl ov18_0223E994 -_0223304C: - mov r0, #0 - bl ov18_0222FA60 - ldr r0, _02233064 ; =ov18_02232E5C - bl ov18_0222F6C4 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02233060: .word Unk_ov18_02253308 -_02233064: .word ov18_02232E5C - arm_func_end ov18_0223300C - - .data - - - .global Unk_ov18_0224A0CC -Unk_ov18_0224A0CC: ; 0x0224A0CC - .asciz "char/yb5Multi.nsc.l" - - - - .bss - - - .global Unk_ov18_02253308 -Unk_ov18_02253308: ; 0x02253308 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/scenesetaossbutton.s b/subprojects/NitroDWC/libraries/util/asm/scenesetaossbutton.s deleted file mode 100644 index c88cf9af98..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/scenesetaossbutton.s +++ /dev/null @@ -1,504 +0,0 @@ - .include "macros/function.inc" - .include "include/scenesetaossbutton.inc" - - - - .text - - - arm_func_start ov18_02233068 -ov18_02233068: ; 0x02233068 - ldr r0, _02233084 ; =0x027FFFA8 - ldrh r0, [r0] - and r0, r0, #0x8000 - movs r0, r0, asr #0xf - movne r0, #1 - moveq r0, #0 - bx lr - ; .align 2, 0 -_02233084: .word 0x027FFFA8 - arm_func_end ov18_02233068 - - arm_func_start ov18_02233088 -ov18_02233088: ; 0x02233088 - stmfd sp!, {r3, lr} - ldr r0, _022330E0 ; =0x0225330C - mov r1, #0 - strh r1, [r0, #2] - bl ov18_022330E8 - bl ov18_0222BC1C - mov r0, #0x36 - sub r1, r0, #0x37 - mov r2, #0 - bl ov18_0222B594 - mov r0, #2 - bl ov18_0222B740 - mov r0, #0x22 - bl ov18_0222B7C8 - mov r0, #0 - bl ov18_0222AD34 - bl ov18_0222F030 - mov r0, #0xb - bl ov18_0223E994 - ldr r0, _022330E4 ; =ov18_02233190 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022330E0: .word Unk_ov18_0225330C -_022330E4: .word ov18_02233190 - arm_func_end ov18_02233088 - - arm_func_start ov18_022330E8 -ov18_022330E8: ; 0x022330E8 - stmfd sp!, {r3, lr} - ldr r0, _02233170 ; =0x0224A0E0 - ldr r1, _02233174 ; =0x020C07EC - bl ov18_0222B700 - ldr r0, _02233178 ; =0x0224A0F8 - ldr r1, _0223317C ; =GX_LoadBGPltt - bl ov18_0222B700 - ldr r0, _02233180 ; =0x0224A110 - ldr r1, _02233184 ; =GX_LoadBG2Scr - bl ov18_0222B700 - ldr r3, _02233188 ; =0x04001008 - ldr r1, _0223318C ; =0x0400000A - ldrh r0, [r3] - sub r2, r3, #0x1000 - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3] - ldrh r0, [r3, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3, #2] - ldrh r0, [r2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2] - ldrh r0, [r1] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1] - ldrh r0, [r1, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1, #2] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02233170: .word Unk_ov18_0224A0E0 -_02233174: .word 0x020C07EC -_02233178: .word Unk_ov18_0224A0F8 -_0223317C: .word GX_LoadBGPltt -_02233180: .word Unk_ov18_0224A110 -_02233184: .word GX_LoadBG2Scr -_02233188: .word 0x04001008 -_0223318C: .word 0x0400000A - arm_func_end ov18_022330E8 - - arm_func_start ov18_02233190 -ov18_02233190: ; 0x02233190 - stmfd sp!, {r3, lr} - mov r1, #1 - mov r2, r1 - mov r0, #2 - mov r3, #8 - bl ov18_02244194 - mov r0, #2 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - mov r0, #1 - mov r1, r0 - bl ov18_02244C84 - mov r0, #0 - mov r1, #0x15 - bl ov18_02244C84 - ldr r0, _022331E0 ; =ov18_022331E4 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022331E0: .word ov18_022331E4 - arm_func_end ov18_02233190 - - arm_func_start ov18_022331E4 -ov18_022331E4: ; 0x022331E4 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #1 - bl ov18_0222B790 - ldr r0, _0223321C ; =ov18_02233220 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223321C: .word ov18_02233220 - arm_func_end ov18_022331E4 - - arm_func_start ov18_02233220 -ov18_02233220: ; 0x02233220 - stmfd sp!, {r3, lr} - bl ov18_0222B034 - mvn r1, #1 - cmp r0, r1 - ldmeqia sp!, {r3, pc} - ldr r1, _0223325C ; =ov18_02233540 - mov r0, #1 - mov r2, #0 - mov r3, #0x78 - bl ov18_02246304 - ldr r1, _02233260 ; =0x0225330C - str r0, [r1, #4] - ldr r0, _02233264 ; =ov18_02233268 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223325C: .word ov18_02233540 -_02233260: .word Unk_ov18_0225330C -_02233264: .word ov18_02233268 - arm_func_end ov18_02233220 - - arm_func_start ov18_02233268 -ov18_02233268: ; 0x02233268 - stmfd sp!, {r3, lr} - bl ov18_0223333C - bl ov18_02233374 - bl ov18_02233378 - bl ov18_0222F190 - cmp r0, #0 - ldmeqia sp!, {r3, pc} - cmp r0, #1 - beq _02233298 - cmp r0, #2 - beq _022332CC - ldmia sp!, {r3, pc} -_02233298: - ldr r2, _02233330 ; =0x0225330C - ldr r1, [r2, #4] - cmp r1, #0 - ldmeqia sp!, {r3, pc} - mov r0, #1 - strb r0, [r2] - bl ov18_022463CC - ldr r1, _02233330 ; =0x0225330C - mov r2, #0 - ldr r0, _02233334 ; =ov18_022335A8 - str r2, [r1, #4] - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_022332CC: - ldr r0, _02233330 ; =0x0225330C - ldr r0, [r0, #4] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl ov18_0223E9FC - mov r1, #1 - mov ip, #0 - mov r2, r1 - sub r3, r1, #2 - mov r0, #0xc - str ip, [sp] - bl ov18_0223FC48 - mov r0, #9 - bl ov18_0223E994 - bl ov18_0222B0C0 - ldr r1, _02233330 ; =0x0225330C - mov r0, #1 - ldr r1, [r1, #4] - bl ov18_022463CC - ldr r1, _02233330 ; =0x0225330C - mov r2, #0 - ldr r0, _02233338 ; =ov18_0223355C - str r2, [r1, #4] - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02233330: .word Unk_ov18_0225330C -_02233334: .word ov18_022335A8 -_02233338: .word ov18_0223355C - arm_func_end ov18_02233268 - - arm_func_start ov18_0223333C -ov18_0223333C: ; 0x0223333C - stmfd sp!, {r3, lr} - mov r0, #2 - bl ov18_02245470 - cmp r0, #0 - beq _0223335C - mov r0, #0 - bl ov18_0222B048 - ldmia sp!, {r3, pc} -_0223335C: - bl ov18_02233068 - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, #0 - bl ov18_0222B048 - ldmia sp!, {r3, pc} - arm_func_end ov18_0223333C - - arm_func_start ov18_02233374 -ov18_02233374: ; 0x02233374 - bx lr - arm_func_end ov18_02233374 - - arm_func_start ov18_02233378 -ov18_02233378: ; 0x02233378 - stmfd sp!, {r3, lr} - bl ov18_0222B034 - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _022333BC ; =0x0225330C - ldr r1, [r0, #4] - cmp r1, #0 - ldmeqia sp!, {r3, pc} - mov r0, #1 - bl ov18_022463AC - ldr r0, _022333BC ; =0x0225330C - mov r1, #0 - str r1, [r0, #4] - bl ov18_0222B0C0 - ldr r0, _022333C0 ; =ov18_022335F4 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022333BC: .word Unk_ov18_0225330C -_022333C0: .word ov18_022335F4 - arm_func_end ov18_02233378 - - arm_func_start ov18_022333C4 -ov18_022333C4: ; 0x022333C4 - stmfd sp!, {r3, lr} - bl ov18_0222B0C0 - ldr r0, _022333F8 ; =0x0225330C - ldr r1, [r0, #4] - cmp r1, #0 - beq _022333E4 - mov r0, #1 - bl ov18_022463CC -_022333E4: - mov r0, #8 - bl ov18_02244394 - ldr r0, _022333FC ; =ov18_02233400 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022333F8: .word Unk_ov18_0225330C -_022333FC: .word ov18_02233400 - arm_func_end ov18_022333C4 - - arm_func_start ov18_02233400 -ov18_02233400: ; 0x02233400 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_0222B004 - ldr r0, _0223345C ; =0x0225330C - ldrb r0, [r0] - cmp r0, #0 - bne _0223343C - mov r1, #1 - mov r2, r1 - mov r0, #3 - mov r3, #8 - bl ov18_02244194 -_0223343C: - mov r0, #3 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - ldr r0, _02233460 ; =ov18_02233464 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223345C: .word Unk_ov18_0225330C -_02233460: .word ov18_02233464 - arm_func_end ov18_02233400 - - arm_func_start ov18_02233464 -ov18_02233464: ; 0x02233464 - stmfd sp!, {r3, lr} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _02233534 ; =0x0225330C - ldrb r0, [r0] - cmp r0, #0 - bne _02233498 - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} -_02233498: - bl ov18_0222B07C - cmp r0, #0 - ldmeqia sp!, {r3, pc} - ldr r0, _02233534 ; =0x0225330C - ldrb r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - bl ov18_0222F140 - bl ov18_0222AE04 - mov r0, #0 - bl ov18_022448E0 - ldr r0, _02233534 ; =0x0225330C - ldrb r0, [r0] - cmp r0, #0 - bne _022334E8 - bl ov18_0222B668 - mov r0, #1 - mov r1, r0 - bl ov18_02244CD8 -_022334E8: - mov r0, #0 - mov r1, #0x15 - bl ov18_02244CD8 - ldr r0, _02233534 ; =0x0225330C - ldrb r0, [r0] - cmp r0, #0 - bne _0223351C - mov r0, #2 - mov r1, #1 - bl ov18_0222F6D4 - ldr r0, _02233538 ; =ov18_0223B3F4 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_0223351C: - mov r0, #0 - mov r1, r0 - bl ov18_0222F6D4 - ldr r0, _0223353C ; =ov18_02233624 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02233534: .word Unk_ov18_0225330C -_02233538: .word ov18_0223B3F4 -_0223353C: .word ov18_02233624 - arm_func_end ov18_02233464 - - arm_func_start ov18_02233540 -ov18_02233540: ; 0x02233540 - stmfd sp!, {r3, lr} - bl ov18_022451C0 - mov r0, #0 - bl ov18_02246254 - bl ov18_0223333C - bl ov18_02233378 - ldmia sp!, {r3, pc} - arm_func_end ov18_02233540 - - arm_func_start ov18_0223355C -ov18_0223355C: ; 0x0223355C - stmfd sp!, {r3, lr} - bl ov18_0223FFB8 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #6 - bl ov18_0223E994 - bl ov18_0223FF74 - ldr r0, _02233584 ; =ov18_02233588 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02233584: .word ov18_02233588 - arm_func_end ov18_0223355C - - arm_func_start ov18_02233588 -ov18_02233588: ; 0x02233588 - stmfd sp!, {r3, lr} - bl ov18_0223FFCC - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _022335A4 ; =ov18_022333C4 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022335A4: .word ov18_022333C4 - arm_func_end ov18_02233588 - - arm_func_start ov18_022335A8 -ov18_022335A8: ; 0x022335A8 - stmfd sp!, {r3, lr} - bl ov18_0223333C - bl ov18_02233374 - bl ov18_02233378 - ldr r1, _022335E8 ; =0x0225330C - ldr r0, _022335EC ; =0x00000438 - ldrh r2, [r1, #2] - add r2, r2, #1 - strh r2, [r1, #2] - ldrh r1, [r1, #2] - cmp r1, r0 - ldmloia sp!, {r3, pc} - bl ov18_0223E9FC - ldr r0, _022335F0 ; =ov18_022333C4 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022335E8: .word Unk_ov18_0225330C -_022335EC: .word 0x00000438 -_022335F0: .word ov18_022333C4 - arm_func_end ov18_022335A8 - - arm_func_start ov18_022335F4 -ov18_022335F4: ; 0x022335F4 - stmfd sp!, {r3, lr} - bl ov18_0223E9FC - mov r0, #7 - bl ov18_0223E994 - ldr r1, _0223361C ; =0x0225330C - mov r2, #0 - ldr r0, _02233620 ; =ov18_022333C4 - strb r2, [r1] - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223361C: .word Unk_ov18_0225330C -_02233620: .word ov18_022333C4 - arm_func_end ov18_022335F4 - - .data - - - .global Unk_ov18_0224A0E0 -Unk_ov18_0224A0E0: ; 0x0224A0E0 - .ascii "char/jbBgStep3.ncg.l" - .space 0x4 - - .global Unk_ov18_0224A0F8 -Unk_ov18_0224A0F8: ; 0x0224A0F8 - .ascii "char/ybBgStep3.ncl.l" - .space 0x4 - - .global Unk_ov18_0224A110 -Unk_ov18_0224A110: ; 0x0224A110 - .asciz "char/xb4Multi.nsc.l" - - - - .bss - - - .global Unk_ov18_0225330C -Unk_ov18_0225330C: ; 0x0225330C - .space 0x2 - - .global Unk_ov18_0225330E -Unk_ov18_0225330E: ; 0x0225330E - .space 0x2 - - .global Unk_ov18_02253310 -Unk_ov18_02253310: ; 0x02253310 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/scenesetaosscomplete.s b/subprojects/NitroDWC/libraries/util/asm/scenesetaosscomplete.s deleted file mode 100644 index f11819087b..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/scenesetaosscomplete.s +++ /dev/null @@ -1,192 +0,0 @@ - .include "macros/function.inc" - .include "include/scenesetaosscomplete.inc" - - - - .text - - - arm_func_start ov18_02233624 -ov18_02233624: ; 0x02233624 - stmfd sp!, {r3, lr} - ldr r0, _02233658 ; =0x02253314 - mov r1, #0 - strb r1, [r0] - bl ov18_02233660 - bl ov18_0222BC1C - mov r0, #0x23 - bl ov18_0222B7C8 - mov r0, #0x10 - bl ov18_0223E994 - ldr r0, _0223365C ; =ov18_022336CC - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02233658: .word Unk_ov18_02253314 -_0223365C: .word ov18_022336CC - arm_func_end ov18_02233624 - - arm_func_start ov18_02233660 -ov18_02233660: ; 0x02233660 - stmfd sp!, {r3, lr} - ldr r0, _022336BC ; =0x0224A124 - ldr r1, _022336C0 ; =GX_LoadBG2Scr - bl ov18_0222B700 - ldr r2, _022336C4 ; =0x04001008 - ldr r1, _022336C8 ; =0x0400000A - ldrh r0, [r2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2] - ldrh r0, [r2, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2, #2] - ldrh r0, [r1] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1] - ldrh r0, [r1, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1, #2] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022336BC: .word Unk_ov18_0224A124 -_022336C0: .word GX_LoadBG2Scr -_022336C4: .word 0x04001008 -_022336C8: .word 0x0400000A - arm_func_end ov18_02233660 - - arm_func_start ov18_022336CC -ov18_022336CC: ; 0x022336CC - stmfd sp!, {r3, lr} - mov r0, #2 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - mov r0, #0 - mov r1, #0x15 - bl ov18_02244C84 - ldr r0, _022336FC ; =ov18_02233700 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022336FC: .word ov18_02233700 - arm_func_end ov18_022336CC - - arm_func_start ov18_02233700 -ov18_02233700: ; 0x02233700 - stmfd sp!, {r3, lr} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _02233720 ; =ov18_02233724 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02233720: .word ov18_02233724 - arm_func_end ov18_02233700 - - arm_func_start ov18_02233724 -ov18_02233724: ; 0x02233724 - stmfd sp!, {r3, lr} - bl ov18_022337E4 - bl ov18_02233734 - ldmia sp!, {r3, pc} - arm_func_end ov18_02233724 - - arm_func_start ov18_02233734 -ov18_02233734: ; 0x02233734 - bx lr - arm_func_end ov18_02233734 - - arm_func_start ov18_02233738 -ov18_02233738: ; 0x02233738 - stmfd sp!, {r3, lr} - mov r1, #1 - mov r2, r1 - mov r0, #3 - mov r3, #8 - bl ov18_02244194 - mov r0, #3 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - ldr r0, _02233770 ; =ov18_02233774 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02233770: .word ov18_02233774 - arm_func_end ov18_02233738 - - arm_func_start ov18_02233774 -ov18_02233774: ; 0x02233774 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_022448E0 - bl ov18_0222B668 - mov r0, #1 - mov r1, r0 - bl ov18_02244CD8 - mov r0, #0 - mov r1, #0x15 - bl ov18_02244CD8 - mov r0, #0 - mov r1, r0 - bl ov18_0222F6D4 - mov r0, #0 - mov r1, #1 - bl ov18_0222F710 - ldr r0, _022337E0 ; =ov18_0223C21C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022337E0: .word ov18_0223C21C - arm_func_end ov18_02233774 - - arm_func_start ov18_022337E4 -ov18_022337E4: ; 0x022337E4 - stmfd sp!, {r3, lr} - ldr r0, _02233810 ; =0x02253314 - ldrb r1, [r0] - add r2, r1, #1 - and r1, r2, #0xff - strb r2, [r0] - cmp r1, #0x78 - ldmloia sp!, {r3, pc} - ldr r0, _02233814 ; =ov18_02233738 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02233810: .word Unk_ov18_02253314 -_02233814: .word ov18_02233738 - arm_func_end ov18_022337E4 - - .data - - - .global Unk_ov18_0224A124 -Unk_ov18_0224A124: ; 0x0224A124 - .asciz "char/xb4Multi.nsc.l" - - - - .bss - - - .global Unk_ov18_02253314 -Unk_ov18_02253314: ; 0x02253314 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/scenesetaplist.s b/subprojects/NitroDWC/libraries/util/asm/scenesetaplist.s deleted file mode 100644 index a1cfd65f6b..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/scenesetaplist.s +++ /dev/null @@ -1,1670 +0,0 @@ - .include "macros/function.inc" - .include "include/scenesetaplist.inc" - - - - .extern Unk_ov18_02249734 - .text - - - arm_func_start ov18_02233818 -ov18_02233818: ; 0x02233818 - stmfd sp!, {r3, lr} - mov r0, #0x5c - mov r1, #4 - bl ov18_02245068 - ldr r2, _022338E4 ; =0x02253318 - mov r1, #0 - str r0, [r2, #4] - add r0, sp, #0 - bl ov18_0222F724 - ldr r0, [sp] - cmp r0, #0 - bne _02233858 - ldr r0, _022338E4 ; =0x02253318 - mov r1, #0 - strb r1, [r0] - strh r1, [r0, #2] -_02233858: - ldr r0, _022338E4 ; =0x02253318 - ldr r0, [r0, #4] - bl ov18_0223DAE0 - ldr r1, _022338E4 ; =0x02253318 - ldr r1, [r1, #4] - strb r0, [r1, #0x51] - bl ov18_022338F0 - bl ov18_0222BC1C - mov r0, #0x34 - sub r1, r0, #0x35 - mov r2, #0 - bl ov18_0222B594 - mov r0, #2 - bl ov18_0222B740 - bl ov18_02233A44 - bl ov18_02233AEC - mov r0, #0 - mov r1, r0 - bl ov18_0224467C - ldr r2, _022338E4 ; =0x02253318 - ldr r1, _022338E8 ; =ov18_02234A44 - ldr r3, [r2, #4] - mov r2, #0 - str r0, [r3, #0xc] - mov r0, #1 - mov r3, #0x6e - bl ov18_02246304 - ldr r1, _022338E4 ; =0x02253318 - ldr r1, [r1, #4] - str r0, [r1, #0x3c] - bl ov18_02234588 - bl ov18_02234AA0 - ldr r0, _022338EC ; =ov18_02233C60 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022338E4: .word Unk_ov18_02253318 -_022338E8: .word ov18_02234A44 -_022338EC: .word ov18_02233C60 - arm_func_end ov18_02233818 - - arm_func_start ov18_022338F0 -ov18_022338F0: ; 0x022338F0 - stmfd sp!, {r3, lr} - sub sp, sp, #0x30 - ldr r3, _02233A28 ; =0x022491BF - add lr, sp, #0x16 - mov r2, #0xc -_02233904: - ldrb r1, [r3] - ldrb r0, [r3, #1] - add r3, r3, #2 - strb r1, [lr] - strb r0, [lr, #1] - add lr, lr, #2 - subs r2, r2, #1 - bne _02233904 - ldrb r0, [r3] - ldr ip, _02233A2C ; =0x022491A9 - add r3, sp, #0 - strb r0, [lr] - mov r2, #0xb -_02233938: - ldrb r1, [ip] - ldrb r0, [ip, #1] - add ip, ip, #2 - strb r1, [r3] - strb r0, [r3, #1] - add r3, r3, #2 - subs r2, r2, #1 - bne _02233938 - ldr r0, _02233A30 ; =0x0224A138 - ldr r1, _02233A34 ; =0x020C05AC - bl ov18_0222B700 - add r0, sp, #0x16 - bl ov18_0222B6A0 - mov r1, #0 - mov r2, #4 - bl ov18_02243738 - ldr r1, _02233A38 ; =0x02253318 - ldr r2, [r1, #4] - str r0, [r2, #4] - ldr r0, [r1, #4] - ldr r0, [r0, #4] - bl ov18_0223D004 - bl ov18_0223D090 - add r0, sp, #0 - bl ov18_0222B6A0 - mov r1, #0 - mov r2, #4 - bl ov18_02243738 - ldr r1, _02233A38 ; =0x02253318 - ldr r3, _02233A3C ; =0x04001008 - ldr r1, [r1, #4] - sub r2, r3, #0x1000 - str r0, [r1, #8] - ldrh r0, [r3] - ldr r1, _02233A40 ; =0x0400000A - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3] - ldrh r0, [r3, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3, #2] - ldrh r0, [r2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2] - ldrh r0, [r1] - bic r0, r0, #3 - orr r0, r0, #2 - strh r0, [r1] - ldrh r0, [r1, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1, #2] - ldrh r0, [r1, #4] - bic r0, r0, #3 - orr r0, r0, #2 - strh r0, [r1, #4] - add sp, sp, #0x30 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02233A28: .word Unk_ov18_022491BF -_02233A2C: .word Unk_ov18_022491A9 -_02233A30: .word Unk_ov18_0224A138 -_02233A34: .word 0x020C05AC -_02233A38: .word Unk_ov18_02253318 -_02233A3C: .word 0x04001008 -_02233A40: .word 0x0400000A - arm_func_end ov18_022338F0 - - arm_func_start ov18_02233A44 -ov18_02233A44: ; 0x02233A44 - stmfd sp!, {r3, r4, lr} - sub sp, sp, #4 - ldr r2, _02233AE8 ; =0x02253318 - mov r1, #0x1c - ldr ip, [r2, #4] - mov r0, #0 - ldrb r3, [ip, #0x51] - sub r3, r3, #4 - mul r1, r3, r1 - strh r1, [ip, #0x40] - ldr r2, [r2, #4] - ldrb r1, [r2, #0x51] - cmp r1, #4 - movls r4, r0 - strlsb r0, [r2, #0x53] - bls _02233AA4 - cmp r1, #8 - movhi r1, #0x37 - strhib r1, [r2, #0x53] - movhi r4, #2 - bhi _02233AA4 - mov r1, #0x1f - strb r1, [r2, #0x53] - mov r4, #1 -_02233AA4: - cmp r4, #0 - beq _02233AC8 - ldr r0, _02233AE8 ; =0x02253318 - ldr r1, [r0, #4] - ldrh r2, [r0, #2] - ldrb r0, [r1, #0x53] - ldrh r1, [r1, #0x40] - mul r0, r2, r0 - bl FX_DivS32 -_02233AC8: - str r0, [sp] - mov r0, r4 - mov r1, #0x55 - mov r2, #0xec - mov r3, #0x3f - bl ov18_0223D218 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - ; .align 2, 0 -_02233AE8: .word Unk_ov18_02253318 - arm_func_end ov18_02233A44 - - arm_func_start ov18_02233AEC -ov18_02233AEC: ; 0x02233AEC - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - ldr r0, _02233C50 ; =0x02253318 - mov sb, #0 - ldr r0, [r0, #4] - ldrb r8, [r0, #0x51] - cmp r8, #5 - movgt r8, #5 - cmp r8, #0 - ble _02233B60 - ldr sl, _02233C50 ; =0x02253318 - mov r7, sb - mov r6, #0x2e - mov r5, sb - mov r4, #0x18 -_02233B24: - mov r0, r7 - mov r1, r6 - bl ov18_02243F60 - ldr r2, [sl, #4] - mov r1, r4 - add r2, r2, sb, lsl #2 - str r0, [r2, #0x10] - mov r0, r5 - bl ov18_02243F60 - ldr r1, [sl, #4] - add r1, r1, sb, lsl #2 - add sb, sb, #1 - str r0, [r1, #0x24] - cmp sb, r8 - blt _02233B24 -_02233B60: - mov r6, #0 - ldr r5, _02233C54 ; =0x02249228 - ldr sb, _02233C50 ; =0x02253318 - ldr r7, _02233C58 ; =0x000003FF - mov r4, r6 -_02233B74: - ldr r0, [sb, #4] - ldrb r1, [r5], #1 - ldr r2, [r0, #0x10] - mov r0, r4 - bl ov18_02243ECC - ldr r0, [sb, #4] - ldr r1, [r0, #0x10] - add r0, r0, r6, lsl #1 - ldrh r1, [r1, #4] - add r6, r6, #1 - cmp r6, #3 - and r1, r1, r7 - strh r1, [r0, #0x42] - blo _02233B74 - mov r6, #0 - ldr r5, _02233C5C ; =0x0224922C - ldr sb, _02233C50 ; =0x02253318 - ldr r7, _02233C58 ; =0x000003FF - mov r4, r6 -_02233BC0: - ldr r0, [sb, #4] - ldrb r1, [r5], #1 - ldr r2, [r0, #0x24] - mov r0, r4 - bl ov18_02243ECC - ldr r0, [sb, #4] - ldr r1, [r0, #0x24] - add r0, r0, r6, lsl #1 - ldrh r1, [r1, #4] - add r6, r6, #1 - cmp r6, #4 - and r1, r1, r7 - strh r1, [r0, #0x48] - blo _02233BC0 - cmp r8, #0 - mov r0, #0 - ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldr r1, _02233C50 ; =0x02253318 -_02233C08: - ldr r2, [r1, #4] - add r2, r2, r0, lsl #2 - ldr r3, [r2, #0x10] - ldrh r2, [r3, #4] - bic r2, r2, #0xc00 - orr r2, r2, #0xc00 - strh r2, [r3, #4] - ldr r2, [r1, #4] - add r2, r2, r0, lsl #2 - ldr r3, [r2, #0x24] - add r0, r0, #1 - ldrh r2, [r3, #4] - cmp r0, r8 - bic r2, r2, #0xc00 - orr r2, r2, #0xc00 - strh r2, [r3, #4] - blt _02233C08 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ; .align 2, 0 -_02233C50: .word Unk_ov18_02253318 -_02233C54: .word Unk_ov18_02249228 -_02233C58: .word 0x000003FF -_02233C5C: .word Unk_ov18_0224922C - arm_func_end ov18_02233AEC - - arm_func_start ov18_02233C60 -ov18_02233C60: ; 0x02233C60 - stmfd sp!, {r3, lr} - mov r1, #1 - mov r2, r1 - mov r0, #2 - mov r3, #8 - bl ov18_02244194 - mov r0, #2 - mov r1, #0 - mov r2, #0x1d - mov r3, #8 - bl ov18_02244194 - mov r0, #1 - mov r1, r0 - bl ov18_02244C84 - mov r0, #0 - mov r1, #0x1d - bl ov18_02244C84 - ldr r0, _02233CB0 ; =ov18_02233CB4 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02233CB0: .word ov18_02233CB4 - arm_func_end ov18_02233C60 - - arm_func_start ov18_02233CB4 -ov18_02233CB4: ; 0x02233CB4 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_0222B790 - ldr r0, _02233CEC ; =ov18_02233CF0 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02233CEC: .word ov18_02233CF0 - arm_func_end ov18_02233CB4 - - arm_func_start ov18_02233CF0 -ov18_02233CF0: ; 0x02233CF0 - stmfd sp!, {r3, lr} - bl ov18_0222B034 - mvn r1, #1 - cmp r0, r1 - ldmeqia sp!, {r3, pc} - bl ov18_0222B0A8 - ldr r0, _02233D14 ; =ov18_02233D18 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02233D14: .word ov18_02233D18 - arm_func_end ov18_02233CF0 - - arm_func_start ov18_02233D18 -ov18_02233D18: ; 0x02233D18 - stmfd sp!, {r3, lr} - bl ov18_02233D2C - bl ov18_02233F80 - bl ov18_022341F0 - ldmia sp!, {r3, pc} - arm_func_end ov18_02233D18 - - arm_func_start ov18_02233D2C -ov18_02233D2C: ; 0x02233D2C - stmfd sp!, {r3, r4, r5, lr} - ldr r0, _02233F74 ; =0x02253318 - ldr r1, [r0, #4] - ldr r0, [r1, #0x38] - cmp r0, #0 - ldreqb r0, [r1, #0x57] - cmpeq r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, _02233F78 ; =0x02249734 - bl ov18_022455B8 - cmp r0, #0 - beq _02233DC4 - ldr r0, _02233F74 ; =0x02253318 - mvn r1, #0 - ldr r0, [r0, #4] - ldr r5, _02233F7C ; =0x022491D8 - strb r1, [r0, #0x50] - mov r4, #0 -_02233D74: - mov r0, r5 - bl ov18_022455B8 - cmp r0, #0 - beq _02233DB4 - cmp r4, #4 - bge _02233D9C - ldr r0, _02233F74 ; =0x02253318 - ldr r0, [r0, #4] - strb r4, [r0, #0x50] - b _02233DC4 -_02233D9C: - mov r0, #1 - bl ov18_0222B048 - ldr r0, _02233F74 ; =0x02253318 - strb r4, [r0] - bl ov18_02234AA0 - ldmia sp!, {r3, r4, r5, pc} -_02233DB4: - add r4, r4, #1 - cmp r4, #5 - add r5, r5, #8 - blo _02233D74 -_02233DC4: - ldr r0, _02233F78 ; =0x02249734 - bl ov18_022456C8 - cmp r0, #0 - beq _02233E40 - ldr r4, _02233F7C ; =0x022491D8 - mov r5, #0 -_02233DDC: - mov r0, r4 - bl ov18_022456C8 - cmp r0, #0 - beq _02233E30 - ldr r0, _02233F74 ; =0x02253318 - ldr r1, [r0, #4] - ldrsb r0, [r1, #0x50] - cmp r0, r5 - bne _02233E40 - ldrb r0, [r1, #0x51] - cmp r5, r0 - blt _02233E18 - mov r0, #9 - bl ov18_0223E994 - b _02233E40 -_02233E18: - mov r0, #1 - bl ov18_0222B048 - ldr r0, _02233F74 ; =0x02253318 - strb r5, [r0] - bl ov18_02234AA0 - ldmia sp!, {r3, r4, r5, pc} -_02233E30: - add r5, r5, #1 - cmp r5, #4 - add r4, r4, #8 - blt _02233DDC -_02233E40: - mov r0, #1 - bl ov18_02245470 - cmp r0, #0 - beq _02233E60 - mov r0, #1 - bl ov18_0222B048 - bl ov18_0223D378 - ldmia sp!, {r3, r4, r5, pc} -_02233E60: - mov r0, #2 - bl ov18_02245470 - cmp r0, #0 - beq _02233E7C - mov r0, #0 - bl ov18_0222B048 - ldmia sp!, {r3, r4, r5, pc} -_02233E7C: - mov r0, #0x200 - bl ov18_022454B0 - cmp r0, #0 - beq _02233E94 - bl ov18_02234CAC - ldmia sp!, {r3, r4, r5, pc} -_02233E94: - mov r0, #0x200 - bl ov18_022454F0 - cmp r0, #0 - beq _02233EB8 - ldr r0, _02233F74 ; =0x02253318 - mov r1, #0 - ldr r0, [r0, #4] - strb r1, [r0, #0x59] - ldmia sp!, {r3, r4, r5, pc} -_02233EB8: - mov r0, #0x100 - bl ov18_022454B0 - cmp r0, #0 - beq _02233ED0 - bl ov18_02234C38 - ldmia sp!, {r3, r4, r5, pc} -_02233ED0: - mov r0, #0x100 - bl ov18_022454F0 - cmp r0, #0 - beq _02233EF4 - ldr r0, _02233F74 ; =0x02253318 - mov r1, #0 - ldr r0, [r0, #4] - strb r1, [r0, #0x59] - ldmia sp!, {r3, r4, r5, pc} -_02233EF4: - mov r0, #0x40 - bl ov18_022454B0 - cmp r0, #0 - beq _02233F10 - mov r0, #1 - bl ov18_02234AEC - ldmia sp!, {r3, r4, r5, pc} -_02233F10: - mov r0, #0x40 - bl ov18_022454F0 - cmp r0, #0 - beq _02233F34 - ldr r0, _02233F74 ; =0x02253318 - mov r1, #0 - ldr r0, [r0, #4] - strb r1, [r0, #0x59] - ldmia sp!, {r3, r4, r5, pc} -_02233F34: - mov r0, #0x80 - bl ov18_022454B0 - cmp r0, #0 - beq _02233F50 - mov r0, #3 - bl ov18_02234AEC - ldmia sp!, {r3, r4, r5, pc} -_02233F50: - mov r0, #0x80 - bl ov18_022454F0 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, _02233F74 ; =0x02253318 - mov r1, #0 - ldr r0, [r0, #4] - strb r1, [r0, #0x59] - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02233F74: .word Unk_ov18_02253318 -_02233F78: .word Unk_ov18_02249734 -_02233F7C: .word Unk_ov18_022491D8 - arm_func_end ov18_02233D2C - - arm_func_start ov18_02233F80 -ov18_02233F80: ; 0x02233F80 - stmfd sp!, {r3, lr} - ldr r0, _022341E4 ; =0x02253318 - ldr r1, [r0, #4] - ldr r0, [r1, #0x38] - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldrb r0, [r1, #0x55] - cmp r0, #0 - subne r0, r0, #1 - strneb r0, [r1, #0x55] - bl ov18_0223D340 - cmp r0, #7 - addls pc, pc, r0, lsl #2 - ldmia sp!, {r3, pc} -_02233FB8: ; jump table - ldmia sp!, {r3, pc} ; case 0 - b _02233FD8 ; case 1 - b _02233FF0 ; case 2 - b _02234044 ; case 3 - b _022340F0 ; case 4 - b _022341D0 ; case 5 - b _02234158 ; case 6 - b _022341D0 ; case 7 -_02233FD8: - ldr r0, _022341E4 ; =0x02253318 - mov r1, #1 - ldr r0, [r0, #4] - strb r1, [r0, #0x57] - bl ov18_0222B0C0 - ldmia sp!, {r3, pc} -_02233FF0: - ldr r0, _022341E4 ; =0x02253318 - ldr r0, [r0, #4] - ldrb r0, [r0, #0x55] - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_0222BAF4 - bl ov18_0223D32C - ldr r1, _022341E4 ; =0x02253318 - ldr r1, [r1, #4] - ldrh r2, [r1, #0x40] - ldrb r1, [r1, #0x53] - mul r0, r2, r0 - bl FX_DivS32 - ldr r1, _022341E4 ; =0x02253318 - strh r0, [r1, #2] - bl ov18_02234588 - ldr r0, _022341E4 ; =0x02253318 - mov r1, #4 - ldr r0, [r0, #4] - strb r1, [r0, #0x55] - ldmia sp!, {r3, pc} -_02234044: - ldr r0, _022341E4 ; =0x02253318 - mov r1, #0 - ldr r0, [r0, #4] - strb r1, [r0, #0x57] - bl ov18_0222B0A8 - bl ov18_0223D32C - ldr r1, _022341E4 ; =0x02253318 - ldr r1, [r1, #4] - ldrh r2, [r1, #0x40] - ldrb r1, [r1, #0x53] - mul r0, r2, r0 - bl FX_DivS32 - ldr r1, _022341E4 ; =0x02253318 - strh r0, [r1, #2] - mov r0, #0x13 - bl ov18_0223E994 - bl ov18_02234588 - ldr r0, _022341E4 ; =0x02253318 - mov r1, #0x1c - ldrh r0, [r0, #2] - bl FX_ModS32 - cmp r0, #0 - bne _022340A8 - bl ov18_02234AA0 - ldmia sp!, {r3, pc} -_022340A8: - cmp r0, #0xe - mov r0, #0 - mov r3, #0x78 - bge _022340D4 - ldr r1, _022341E8 ; =ov18_022348F0 - mov r2, r0 - bl ov18_02246304 - ldr r1, _022341E4 ; =0x02253318 - ldr r1, [r1, #4] - str r0, [r1, #0x38] - ldmia sp!, {r3, pc} -_022340D4: - ldr r1, _022341EC ; =ov18_022349AC - mov r2, r0 - bl ov18_02246304 - ldr r1, _022341E4 ; =0x02253318 - ldr r1, [r1, #4] - str r0, [r1, #0x38] - ldmia sp!, {r3, pc} -_022340F0: - ldr r0, _022341E4 ; =0x02253318 - ldrh r1, [r0, #2] - cmp r1, #0 - bne _0223412C - ldr r0, [r0, #4] - ldrb r0, [r0, #0x58] - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #9 - bl ov18_0223E994 - ldr r0, _022341E4 ; =0x02253318 - mov r1, #1 - ldr r0, [r0, #4] - strb r1, [r0, #0x58] - ldmia sp!, {r3, pc} -_0223412C: - mov r0, #0x13 - bl ov18_0223E994 - mov r0, #0 - ldr r1, _022341E8 ; =ov18_022348F0 - mov r2, r0 - mov r3, #0x78 - bl ov18_02246304 - ldr r1, _022341E4 ; =0x02253318 - ldr r1, [r1, #4] - str r0, [r1, #0x38] - ldmia sp!, {r3, pc} -_02234158: - ldr r0, _022341E4 ; =0x02253318 - ldr r2, [r0, #4] - ldrb r1, [r2, #0x51] - cmp r1, #4 - bls _0223417C - ldrh r1, [r0, #2] - ldrh r0, [r2, #0x40] - cmp r1, r0 - bne _022341A4 -_0223417C: - ldrb r0, [r2, #0x58] - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #9 - bl ov18_0223E994 - ldr r0, _022341E4 ; =0x02253318 - mov r1, #1 - ldr r0, [r0, #4] - strb r1, [r0, #0x58] - ldmia sp!, {r3, pc} -_022341A4: - mov r0, #0x13 - bl ov18_0223E994 - mov r0, #0 - ldr r1, _022341EC ; =ov18_022349AC - mov r2, r0 - mov r3, #0x78 - bl ov18_02246304 - ldr r1, _022341E4 ; =0x02253318 - ldr r1, [r1, #4] - str r0, [r1, #0x38] - ldmia sp!, {r3, pc} -_022341D0: - ldr r0, _022341E4 ; =0x02253318 - mov r1, #0 - ldr r0, [r0, #4] - strb r1, [r0, #0x58] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022341E4: .word Unk_ov18_02253318 -_022341E8: .word ov18_022348F0 -_022341EC: .word ov18_022349AC - arm_func_end ov18_02233F80 - - arm_func_start ov18_022341F0 -ov18_022341F0: ; 0x022341F0 - stmfd sp!, {r3, lr} - ldr r0, _022342F0 ; =0x02253318 - ldr r1, [r0, #4] - ldr r0, [r1, #0x38] - cmp r0, #0 - ldreqb r0, [r1, #0x57] - cmpeq r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_0222B034 - cmp r0, #0 - beq _02234228 - cmp r0, #1 - beq _02234234 - ldmia sp!, {r3, pc} -_02234228: - mov r0, #7 - bl ov18_0223E994 - b _022342E4 -_02234234: - ldr r0, _022342F0 ; =0x02253318 - ldrb r1, [r0] - cmp r1, #4 - bne _02234260 - ldr r1, [r0, #4] - mov r2, #1 - mov r0, #6 - strb r2, [r1, #0x54] - bl ov18_0223E994 - bl ov18_02234D30 - b _022342E4 -_02234260: - ldrh r0, [r0, #2] - mov r1, #0x1c - bl FX_DivS32 - ldr r2, _022342F0 ; =0x02253318 - mov r1, #0x2a - ldrb lr, [r2] - ldr ip, [r2, #4] - ldr r3, [ip] - add lr, lr, r0 - mla r0, lr, r1, r3 - ldrb r0, [r0, #0x28] - cmp r0, #2 - bne _022342CC - mov r0, #9 - bl ov18_0223E994 - bl ov18_0223D378 - bl ov18_0222B0C0 - mov r1, #1 - mov r0, #0 - str r0, [sp] - mov r2, r1 - mov r0, #0xe - sub r3, r1, #2 - bl ov18_0223FC48 - ldr r0, _022342F4 ; =ov18_02234D60 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_022342CC: - mov r0, #1 - strb r0, [ip, #0x54] - ldr r1, [r2, #4] - mov r0, #6 - strb lr, [r1, #0x52] - bl ov18_0223E994 -_022342E4: - ldr r0, _022342F8 ; =ov18_022342FC - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022342F0: .word Unk_ov18_02253318 -_022342F4: .word ov18_02234D60 -_022342F8: .word ov18_022342FC - arm_func_end ov18_022341F0 - - arm_func_start ov18_022342FC -ov18_022342FC: ; 0x022342FC - stmfd sp!, {r3, lr} - bl ov18_0222B0C0 - mov r0, #8 - bl ov18_02244394 - ldr r0, _02234318 ; =ov18_0223431C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02234318: .word ov18_0223431C - arm_func_end ov18_022342FC - - arm_func_start ov18_0223431C -ov18_0223431C: ; 0x0223431C - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _02234384 ; =0x02253318 - ldr r0, [r0, #4] - ldrb r0, [r0, #0x54] - cmp r0, #0 - beq _0223434C - bl ov18_0222B004 - b _02234350 -_0223434C: - bl ov18_0222B0C0 -_02234350: - mov r1, #1 - mov r2, r1 - mov r0, #3 - mov r3, #8 - bl ov18_02244194 - mov r0, #3 - mov r1, #0 - mov r2, #0x1d - mov r3, #8 - bl ov18_02244194 - ldr r0, _02234388 ; =ov18_0223438C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02234384: .word Unk_ov18_02253318 -_02234388: .word ov18_0223438C - arm_func_end ov18_0223431C - - arm_func_start ov18_0223438C -ov18_0223438C: ; 0x0223438C - stmfd sp!, {r3, r4, r5, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - bl ov18_0222B07C - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, _0223456C ; =0x02253318 - mov r0, #1 - ldr r1, [r1, #4] - ldr r1, [r1, #0x3c] - bl ov18_022463CC - ldr r4, _0223456C ; =0x02253318 - mov r5, #0 -_022343D8: - ldr r0, [r4, #4] - add r0, r0, r5, lsl #2 - ldr r0, [r0, #0x10] - cmp r0, #0 - beq _022343F0 - bl ov18_02245B74 -_022343F0: - ldr r0, [r4, #4] - add r0, r0, r5, lsl #2 - ldr r0, [r0, #0x24] - cmp r0, #0 - beq _02234408 - bl ov18_02245B74 -_02234408: - add r5, r5, #1 - cmp r5, #5 - blt _022343D8 - ldr r0, _0223456C ; =0x02253318 - ldr r0, [r0, #4] - ldr r0, [r0, #0xc] - bl ov18_0224487C - bl ov18_0223D2F0 - bl ov18_0222BAF4 - bl ov18_0222B668 - bl ov18_0223D064 - ldr r0, _0223456C ; =0x02253318 - ldr r0, [r0, #4] - ldr r0, [r0, #4] - bl ov18_0224382C - ldr r0, _0223456C ; =0x02253318 - ldr r0, [r0, #4] - ldr r0, [r0, #8] - bl ov18_0224382C - mov r0, #1 - mov r1, r0 - bl ov18_02244CD8 - mov r0, #0 - mov r1, #0x1d - bl ov18_02244CD8 - mov r2, #0 - ldr r1, _02234570 ; =0x04000010 - ldr r0, _0223456C ; =0x02253318 - str r2, [r1, #0] - str r2, [r1, #8] - ldr r2, [r0, #4] - ldrb r1, [r2, #0x54] - cmp r1, #0 - bne _022344B8 - bl ov18_0223D910 - bl ov18_0223DDCC - ldrb r0, [r0, #0xf4] - bl ov18_0223E1F0 - mov r0, #2 - mov r1, #0 - bl ov18_0222F6D4 - ldr r0, _02234574 ; =ov18_0223B3F4 - bl ov18_0222F6C4 - b _02234560 -_022344B8: - ldrb r0, [r0] - cmp r0, #4 - bne _022344E0 - bl ov18_0223D910 - mov r0, #0 - mov r1, #1 - bl ov18_0222F6D4 - ldr r0, _02234578 ; =ov18_0223A1D0 - bl ov18_0222F6C4 - b _02234560 -_022344E0: - ldrb r1, [r2, #0x52] - ldr r2, [r2, #0] - mov r0, #0x2a - mla r0, r1, r0, r2 - bl ov18_0223DE08 - mov r0, #0 - mov r1, r0 - bl ov18_0222F6D4 - ldr r1, _0223456C ; =0x02253318 - mov r0, #0x2a - ldr r2, [r1, #4] - ldrb r1, [r2, #0x52] - ldr r2, [r2, #0] - mla r0, r1, r0, r2 - ldrb r0, [r0, #0x28] - mov r1, #1 - cmp r0, #0 - mov r0, #0 - beq _02234548 - bl ov18_0222F6D4 - mov r0, #1 - mov r1, r0 - bl ov18_0222F710 - ldr r0, _0223457C ; =ov18_02234DB4 - bl ov18_0222F6C4 - b _02234560 -_02234548: - bl ov18_0222F6D4 - mov r0, #0 - mov r1, #1 - bl ov18_0222F710 - ldr r0, _02234580 ; =ov18_0223C21C - bl ov18_0222F6C4 -_02234560: - ldr r0, _02234584 ; =0x0225331C - bl ov18_0224508C - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0223456C: .word Unk_ov18_02253318 -_02234570: .word 0x04000010 -_02234574: .word ov18_0223B3F4 -_02234578: .word ov18_0223A1D0 -_0223457C: .word ov18_02234DB4 -_02234580: .word ov18_0223C21C -_02234584: .word Unk_ov18_0225331C - arm_func_end ov18_0223438C - - arm_func_start ov18_02234588 -ov18_02234588: ; 0x02234588 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - ldr r0, _0223462C ; =0x02253318 - mov r1, #0x1c - ldrh r0, [r0, #2] - bl FX_DivS32 - ldr r1, _0223462C ; =0x02253318 - mov r7, r0 - ldr r0, [r1, #4] - mov r1, #0 - ldrb r4, [r0, #0x51] - ldr r0, [r0, #0xc] - bl ov18_02244B5C - cmp r4, #5 - movgt r4, #5 - mov r5, r7 - cmp r4, #0 - mov r6, #0 - ble _022345EC -_022345D0: - mov r0, r5 - mov r1, r6 - bl ov18_02234630 - add r6, r6, #1 - cmp r6, r4 - add r5, r5, #1 - blt _022345D0 -_022345EC: - cmp r4, #0 - mov r5, #0 - ble _02234614 -_022345F8: - mov r0, r7 - mov r1, r5 - bl ov18_022347A8 - add r5, r5, #1 - cmp r5, r4 - add r7, r7, #1 - blt _022345F8 -_02234614: - ldr r0, _0223462C ; =0x02253318 - ldr r0, [r0, #4] - ldr r0, [r0, #0xc] - bl ov18_02244C08 - bl ov18_02234834 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_0223462C: .word Unk_ov18_02253318 - arm_func_end ov18_02234588 - - arm_func_start ov18_02234630 -ov18_02234630: ; 0x02234630 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x30 - mov r7, r0 - mov r0, #0x2a - ldr r2, _022347A4 ; =0x02253318 - mul r6, r7, r0 - ldr r0, [r2, #4] - mov r4, r1 - ldr r0, [r0, #0] - mov r1, #0x20 - add r0, r0, r6 - bl ov18_02245E50 - ldr r2, _022347A4 ; =0x02253318 - mov r1, #0x1c - mul r5, r4, r1 - ldr r2, [r2, #4] - mov r4, r0 - ldrb r1, [r2, #0x51] - cmp r7, r1 - addge sp, sp, #0x30 - ldmgeia sp!, {r3, r4, r5, r6, r7, pc} - add r0, sp, #0xc - cmp r4, #0x10 - mov r1, #0 - mov r2, #0x22 - addle r5, r5, #6 - bl MI_CpuFill8 - cmp r4, #0x10 - movle ip, r4 - movgt ip, #0x10 - cmp ip, #0 - mov r3, #0 - ble _022346E0 - ldr r0, _022347A4 ; =0x02253318 - ldr r7, [r0, #4] - add r0, sp, #0xc -_022346C0: - ldr r2, [r7, #0] - mov r1, r3, lsl #1 - add r2, r6, r2 - ldrb r2, [r3, r2] - add r3, r3, #1 - cmp r3, ip - strh r2, [r0, r1] - blt _022346C0 -_022346E0: - mov r1, #0xa - add r0, sp, #0xc - str r1, [sp] - str r0, [sp, #4] - mov r2, #1 - str r2, [sp, #8] - ldr r0, _022347A4 ; =0x02253318 - mov r2, r5 - ldr r0, [r0, #4] - mov r3, #2 - ldr r0, [r0, #0xc] - bl ov18_022449F0 - cmp r4, #0x10 - addle sp, sp, #0x30 - ldmleia sp!, {r3, r4, r5, r6, r7, pc} - add r0, sp, #0xc - mov r1, #0 - mov r2, #0x22 - bl MI_CpuFill8 - sub r3, r4, #0x10 - cmp r3, #0 - mov r7, #0 - ble _0223476C - ldr r0, _022347A4 ; =0x02253318 - ldr r4, [r0, #4] - add r0, sp, #0xc -_02234748: - ldr r2, [r4, #0] - mov r1, r7, lsl #1 - add r2, r6, r2 - add r2, r7, r2 - ldrb r2, [r2, #0x10] - add r7, r7, #1 - cmp r7, r3 - strh r2, [r0, r1] - blt _02234748 -_0223476C: - mov r1, #0xa - add r0, sp, #0xc - str r1, [sp] - str r0, [sp, #4] - mov r2, #1 - str r2, [sp, #8] - ldr r0, _022347A4 ; =0x02253318 - add r2, r5, #0xc - ldr r0, [r0, #4] - mov r3, #2 - ldr r0, [r0, #0xc] - bl ov18_022449F0 - add sp, sp, #0x30 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_022347A4: .word Unk_ov18_02253318 - arm_func_end ov18_02234630 - - arm_func_start ov18_022347A8 -ov18_022347A8: ; 0x022347A8 - stmfd sp!, {r4, lr} - ldr r3, _02234830 ; =0x02253318 - ldr lr, [r3, #4] - ldrb r2, [lr, #0x51] - cmp r0, r2 - ldmgeia sp!, {r4, pc} - mov r2, #0x2a - mul r2, r0, r2 - ldr r0, [lr] - add r4, lr, r1, lsl #2 - add r0, r0, r2 - ldrb ip, [r0, #0x28] - ldr r4, [r4, #0x10] - mov r0, #0x400 - add ip, lr, ip, lsl #1 - ldrh lr, [r4, #4] - rsb r0, r0, #0 - ldrh ip, [ip, #0x42] - and lr, lr, r0 - orr ip, lr, ip - strh ip, [r4, #4] - ldr lr, [r3, #4] - ldr r3, [lr] - add ip, lr, r1, lsl #2 - add r1, r3, r2 - ldrh r1, [r1, #0x26] - ldr r3, [ip, #0x24] - add r1, lr, r1, lsl #1 - ldrh r2, [r3, #4] - ldrh r1, [r1, #0x48] - and r0, r2, r0 - orr r0, r0, r1 - strh r0, [r3, #4] - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02234830: .word Unk_ov18_02253318 - arm_func_end ov18_022347A8 - - arm_func_start ov18_02234834 -ov18_02234834: ; 0x02234834 - stmfd sp!, {r4, r5, r6, lr} - ldr r0, _022348E8 ; =0x02253318 - mov r1, #0x1c - ldrh r0, [r0, #2] - bl FX_ModS32 - ldr r1, _022348E8 ; =0x02253318 - rsb r0, r0, #0x36 - ldr r1, [r1, #4] - mov r2, #0 - ldrb r1, [r1, #0x51] - cmp r1, #5 - movgt r1, #5 - cmp r1, #0 - ble _022348D4 - ldr ip, _022348E8 ; =0x02253318 - ldr r3, _022348EC ; =0xFE00FF00 -_02234874: - ldr r5, [ip, #4] - sub r4, r0, #2 - add r5, r5, r2, lsl #2 - ldr r6, [r5, #0x10] - add lr, r0, #1 - ldr r5, [r6, #0] - and r4, r4, #0xff - and r5, r5, r3 - orr r4, r5, r4 - orr r4, r4, #0xb30000 - str r4, [r6, #0] - ldr r4, [ip, #4] - and lr, lr, #0xff - add r4, r4, r2, lsl #2 - ldr r5, [r4, #0x24] - add r2, r2, #1 - ldr r4, [r5, #0] - cmp r2, r1 - and r4, r4, r3 - orr r4, r4, lr - orr r4, r4, #0xd20000 - str r4, [r5, #0] - add r0, r0, #0x1c - blt _02234874 -_022348D4: - ldr r0, _022348E8 ; =0x02253318 - mov r1, #1 - ldr r0, [r0, #4] - strb r1, [r0, #0x56] - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_022348E8: .word Unk_ov18_02253318 -_022348EC: .word 0xFE00FF00 - arm_func_end ov18_02234834 - - arm_func_start ov18_022348F0 -ov18_022348F0: ; 0x022348F0 - stmfd sp!, {r3, r4, r5, lr} - mov r4, r0 - bl ov18_0223D378 - bl ov18_0222BAF4 - ldr r0, _022349A8 ; =0x02253318 - ldrh r1, [r0, #2] - cmp r1, #4 - subhi r1, r1, #4 - movls r1, #0 - strh r1, [r0, #2] - ldr r0, _022349A8 ; =0x02253318 - mov r1, #0x1c - ldrh r0, [r0, #2] - bl FX_ModS32 - mov r5, r0 - cmp r5, #0x18 - bne _0223493C - bl ov18_02234588 - ldmia sp!, {r3, r4, r5, pc} -_0223493C: - ble _02234958 - ldr r0, _022349A8 ; =0x02253318 - rsb r1, r5, #0x1c - ldrh r2, [r0, #2] - mov r5, #0 - add r1, r2, r1 - strh r1, [r0, #2] -_02234958: - bl ov18_02234834 - cmp r5, #0 - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, _022349A8 ; =0x02253318 - ldr r1, [r0, #4] - ldrh r2, [r0, #2] - ldrb r0, [r1, #0x53] - ldrh r1, [r1, #0x40] - mul r0, r2, r0 - bl FX_DivS32 - bl ov18_0223D354 - bl ov18_0223D360 - bl ov18_02234AA0 - ldr r0, _022349A8 ; =0x02253318 - mov r1, r4 - ldr r2, [r0, #4] - mov r0, #0 - str r0, [r2, #0x38] - bl ov18_022463AC - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_022349A8: .word Unk_ov18_02253318 - arm_func_end ov18_022348F0 - - arm_func_start ov18_022349AC -ov18_022349AC: ; 0x022349AC - stmfd sp!, {r4, lr} - mov r4, r0 - bl ov18_0223D378 - bl ov18_0222BAF4 - ldr r0, _02234A40 ; =0x02253318 - mov r1, #0x1c - ldrh r2, [r0, #2] - add r2, r2, #4 - strh r2, [r0, #2] - ldrh r0, [r0, #2] - bl FX_ModS32 - cmp r0, #4 - blt _022349E8 - bl ov18_02234834 - ldmia sp!, {r4, pc} -_022349E8: - ldr r1, _02234A40 ; =0x02253318 - ldrh r2, [r1, #2] - sub r0, r2, r0 - strh r0, [r1, #2] - bl ov18_02234588 - ldr r0, _02234A40 ; =0x02253318 - ldr r1, [r0, #4] - ldrh r2, [r0, #2] - ldrb r0, [r1, #0x53] - ldrh r1, [r1, #0x40] - mul r0, r2, r0 - bl FX_DivS32 - bl ov18_0223D354 - bl ov18_0223D360 - bl ov18_02234AA0 - ldr r0, _02234A40 ; =0x02253318 - mov r1, r4 - ldr r2, [r0, #4] - mov r0, #0 - str r0, [r2, #0x38] - bl ov18_022463AC - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02234A40: .word Unk_ov18_02253318 - arm_func_end ov18_022349AC - - arm_func_start ov18_02234A44 -ov18_02234A44: ; 0x02234A44 - stmfd sp!, {r3, lr} - ldr r0, _02234A94 ; =0x02253318 - ldr r1, [r0, #4] - ldrb r1, [r1, #0x56] - cmp r1, #0 - ldmeqia sp!, {r3, pc} - ldrh r0, [r0, #2] - mov r1, #0x1c - bl FX_ModS32 - ldr r1, _02234A98 ; =0x01FF0000 - sub r0, r0, #0x32 - ldr r2, _02234A9C ; =0x04000010 - and r1, r1, r0, lsl #16 - str r1, [r2, #0] - ldr r0, _02234A94 ; =0x02253318 - str r1, [r2, #8] - ldr r0, [r0, #4] - mov r1, #0 - strb r1, [r0, #0x56] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02234A94: .word Unk_ov18_02253318 -_02234A98: .word 0x01FF0000 -_02234A9C: .word 0x04000010 - arm_func_end ov18_02234A44 - - arm_func_start ov18_02234AA0 -ov18_02234AA0: ; 0x02234AA0 - stmfd sp!, {r3, lr} - ldr r0, _02234ADC ; =0x02253318 - ldr r1, _02234AE0 ; =0x02249200 - ldrb r2, [r0] - ldr r3, _02234AE4 ; =0x02249202 - mov ip, r2, lsl #3 - cmp r2, #4 - ldr r2, _02234AE8 ; =0x02249204 - movlo r0, #2 - ldrh r1, [r1, ip] - ldrh r2, [r2, ip] - ldrh r3, [r3, ip] - movhs r0, #3 - bl ov18_0222B948 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02234ADC: .word Unk_ov18_02253318 -_02234AE0: .word Unk_ov18_02249200 -_02234AE4: .word 0x02249202 -_02234AE8: .word 0x02249204 - arm_func_end ov18_02234AA0 - - arm_func_start ov18_02234AEC -ov18_02234AEC: ; 0x02234AEC - stmfd sp!, {r4, lr} - ldr r1, _02234C30 ; =0x02253318 - mov r4, #1 - ldrb r3, [r1] - cmp r3, #4 - addls pc, pc, r3, lsl #2 - b _02234BE8 -_02234B08: ; jump table - b _02234B1C ; case 0 - b _02234B80 ; case 1 - b _02234B80 ; case 2 - b _02234BAC ; case 3 - b _02234BC4 ; case 4 -_02234B1C: - cmp r0, #1 - bne _02234B64 - ldrh r0, [r1, #2] - cmp r0, #0 - moveq r0, #4 - streqb r0, [r1] - beq _02234BE8 - mov r0, #0x13 - bl ov18_0223E994 - mov r0, #0 - ldr r1, _02234C34 ; =ov18_022348F0 - mov r2, r0 - mov r3, #0x78 - bl ov18_02246304 - ldr r1, _02234C30 ; =0x02253318 - ldr r1, [r1, #4] - str r0, [r1, #0x38] - ldmia sp!, {r4, pc} -_02234B64: - ldr r0, [r1, #4] - ldrb r0, [r0, #0x51] - cmp r0, #1 - addhi r0, r3, #1 - strhib r0, [r1] - movls r4, #0 - b _02234BE8 -_02234B80: - cmp r0, #1 - subeq r0, r3, #1 - streqb r0, [r1] - beq _02234BE8 - ldr r2, [r1, #4] - add r0, r3, #1 - ldrb r2, [r2, #0x51] - cmp r2, r0 - strgtb r0, [r1] - movle r4, #0 - b _02234BE8 -_02234BAC: - cmp r0, #1 - subeq r0, r3, #1 - streqb r0, [r1] - beq _02234BE8 - bl ov18_02234CAC - ldmia sp!, {r4, pc} -_02234BC4: - cmp r0, #1 - moveq r4, #0 - beq _02234BE8 - mov r0, #0 - strh r0, [r1, #2] - strb r0, [r1] - bl ov18_02234588 - mov r0, #0 - bl ov18_0223D354 -_02234BE8: - cmp r4, #0 - bne _02234C20 - ldr r0, _02234C30 ; =0x02253318 - ldr r0, [r0, #4] - ldrb r0, [r0, #0x59] - cmp r0, #0 - ldmneia sp!, {r4, pc} - mov r0, #9 - bl ov18_0223E994 - ldr r0, _02234C30 ; =0x02253318 - mov r1, #1 - ldr r0, [r0, #4] - strb r1, [r0, #0x59] - ldmia sp!, {r4, pc} -_02234C20: - mov r0, #8 - bl ov18_0223E994 - bl ov18_02234AA0 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02234C30: .word Unk_ov18_02253318 -_02234C34: .word ov18_022348F0 - arm_func_end ov18_02234AEC - - arm_func_start ov18_02234C38 -ov18_02234C38: ; 0x02234C38 - stmfd sp!, {r3, lr} - ldr r0, _02234CA4 ; =0x02253318 - ldrh r1, [r0, #2] - cmp r1, #0 - bne _02234C78 - ldr r0, [r0, #4] - ldrb r0, [r0, #0x59] - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #9 - bl ov18_0223E994 - ldr r0, _02234CA4 ; =0x02253318 - mov r1, #1 - ldr r0, [r0, #4] - strb r1, [r0, #0x59] - ldmia sp!, {r3, pc} -_02234C78: - mov r0, #0x13 - bl ov18_0223E994 - mov r0, #0 - ldr r1, _02234CA8 ; =ov18_022348F0 - mov r2, r0 - mov r3, #0x78 - bl ov18_02246304 - ldr r1, _02234CA4 ; =0x02253318 - ldr r1, [r1, #4] - str r0, [r1, #0x38] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02234CA4: .word Unk_ov18_02253318 -_02234CA8: .word ov18_022348F0 - arm_func_end ov18_02234C38 - - arm_func_start ov18_02234CAC -ov18_02234CAC: ; 0x02234CAC - stmfd sp!, {r3, lr} - ldr r0, _02234D28 ; =0x02253318 - ldr r2, [r0, #4] - ldrh r1, [r0, #2] - ldrh r0, [r2, #0x40] - cmp r1, r0 - beq _02234CD4 - ldrb r0, [r2, #0x51] - cmp r0, #4 - bhi _02234CFC -_02234CD4: - ldrb r0, [r2, #0x59] - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #9 - bl ov18_0223E994 - ldr r0, _02234D28 ; =0x02253318 - mov r1, #1 - ldr r0, [r0, #4] - strb r1, [r0, #0x59] - ldmia sp!, {r3, pc} -_02234CFC: - mov r0, #0x13 - bl ov18_0223E994 - mov r0, #0 - ldr r1, _02234D2C ; =ov18_022349AC - mov r2, r0 - mov r3, #0x78 - bl ov18_02246304 - ldr r1, _02234D28 ; =0x02253318 - ldr r1, [r1, #4] - str r0, [r1, #0x38] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02234D28: .word Unk_ov18_02253318 -_02234D2C: .word ov18_022349AC - arm_func_end ov18_02234CAC - - arm_func_start ov18_02234D30 -ov18_02234D30: ; 0x02234D30 - stmfd sp!, {r3, lr} - ldr r1, _02234D58 ; =0x022491A8 - ldr r0, _02234D5C ; =0x02253318 - ldrb r1, [r1] - ldr r0, [r0, #4] - ldr r0, [r0, #8] - mov r2, r1 - strb r1, [sp] - bl ov18_0223D154 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02234D58: .word Unk_ov18_022491A8 -_02234D5C: .word Unk_ov18_02253318 - arm_func_end ov18_02234D30 - - arm_func_start ov18_02234D60 -ov18_02234D60: ; 0x02234D60 - stmfd sp!, {r3, lr} - bl ov18_0223FFB8 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #6 - bl ov18_0223E994 - bl ov18_0223FF74 - ldr r0, _02234D88 ; =ov18_02234D8C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02234D88: .word ov18_02234D8C - arm_func_end ov18_02234D60 - - arm_func_start ov18_02234D8C -ov18_02234D8C: ; 0x02234D8C - stmfd sp!, {r3, lr} - bl ov18_0223FFCC - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_0222B0A8 - bl ov18_0223D360 - ldr r0, _02234DB0 ; =ov18_02233D18 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02234DB0: .word ov18_02233D18 - arm_func_end ov18_02234D8C - - .rodata - - - .global Unk_ov18_022491A8 -Unk_ov18_022491A8: ; 0x022491A8 - .byte 0x2 - - .global Unk_ov18_022491A9 -Unk_ov18_022491A9: ; 0x022491A9 - .asciz "char/ybBgStep31.ncl.l" - - .global Unk_ov18_022491BF -Unk_ov18_022491BF: ; 0x022491BF - .asciz "char/xb4ApListBack.nsc.l" - - .global Unk_ov18_022491D8 -Unk_ov18_022491D8: ; 0x022491D8 - .short 0x7, 0x32, 0xD0, 0x4C, 0x7, 0x4E - .short 0xD0, 0x68, 0x7, 0x6A, 0xD0, 0x84, 0x7, 0x86 - .short 0xD0, 0xA0, 0x85, 0x1B, 0xFD, 0x2C - - .global Unk_ov18_02249200 -Unk_ov18_02249200: ; 0x02249200 - .short 0x4, 0x2E - .short 0xDB, 0x3F, 0x4, 0x4A, 0xDB, 0x5B, 0x4, 0x66 - .short 0xDB, 0x77, 0x4, 0x82, 0xDB, 0x93, 0x82, 0x18 - .short 0xF0, 0x2C - - .global Unk_ov18_02249228 -Unk_ov18_02249228: ; 0x02249228 - .asciz ".-3" - - .global Unk_ov18_0224922C -Unk_ov18_0224922C: ; 0x0224922C - .byte 0x18, 0x17, 0x16, 0x15 - - - - .data - - - .global Unk_ov18_0224A138 -Unk_ov18_0224A138: ; 0x0224A138 - .asciz "char/jb4ApList.nsc.l" - - - - .bss - - - .global Unk_ov18_02253318 -Unk_ov18_02253318: ; 0x02253318 - .space 0x2 - - .global Unk_ov18_0225331A -Unk_ov18_0225331A: ; 0x0225331A - .space 0x2 - - .global Unk_ov18_0225331C -Unk_ov18_0225331C: ; 0x0225331C - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/scenesetedit32.s b/subprojects/NitroDWC/libraries/util/asm/scenesetedit32.s deleted file mode 100644 index 43957016b6..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/scenesetedit32.s +++ /dev/null @@ -1,932 +0,0 @@ - .include "macros/function.inc" - .include "include/scenesetedit32.inc" - - - - .text - - - arm_func_start ov18_02234DB4 -ov18_02234DB4: ; 0x02234DB4 - stmdb sp!, {lr} - sub sp, sp, #0xc - ldr r1, _02234EDC ; =0x02249230 - mov r0, #0x2c - ldrb r3, [r1] - ldrb r2, [r1, #1] - mov r1, #4 - strb r3, [sp] - strb r2, [sp, #1] - bl ov18_02245068 - ldr r2, _02234EE0 ; =0x02253320 - add r1, sp, #4 - str r0, [r2, #0] - add r0, sp, #8 - bl ov18_0222F724 - ldr r0, [sp, #8] - cmp r0, #0 - bne _02234E2C - ldr r0, _02234EE0 ; =0x02253320 - ldr r0, [r0, #0] - add r0, r0, #8 - bl ov18_0223E068 - ldr r0, _02234EE0 ; =0x02253320 - mov r1, #0x20 - ldr r0, [r0, #0] - add r0, r0, #8 - bl ov18_02245E50 - ldr r1, _02234EE0 ; =0x02253320 - ldr r1, [r1, #0] - strb r0, [r1, #0x29] -_02234E2C: - bl ov18_02234EE8 - ldr r0, [sp, #8] - add r0, r0, #9 - bl ov18_0222BBC0 - ldr r0, [sp, #4] - cmp r0, #1 - bne _02234E5C - mov r0, #0x35 - sub r1, r0, #0x36 - mov r2, #0 - bl ov18_0222B594 - b _02234E74 -_02234E5C: - ldr r2, [sp, #8] - add r0, sp, #0 - ldrb r0, [r0, r2] - mvn r1, #0 - mov r2, #0 - bl ov18_0222B594 -_02234E74: - mov r0, #2 - bl ov18_0222B740 - mov r0, #0 - mov r1, r0 - bl ov18_0224467C - ldr r2, _02234EE0 ; =0x02253320 - mov r1, #0x3e - ldr r2, [r2, #0] - str r0, [r2, #0] - mov r0, #0 - bl ov18_02243F60 - ldr r1, _02234EE0 ; =0x02253320 - ldr r2, [r1, #0] - str r0, [r2, #4] - ldr r0, [r1, #0] - ldr r1, [r0, #4] - ldrh r0, [r1, #4] - bic r0, r0, #0xc00 - orr r0, r0, #0xc00 - strh r0, [r1, #4] - bl ov18_02235584 - bl ov18_02235490 - ldr r0, _02234EE4 ; =ov18_02234FA4 - bl ov18_0222F6C4 - add sp, sp, #0xc - ldmia sp!, {pc} - ; .align 2, 0 -_02234EDC: .word Unk_ov18_02249230 -_02234EE0: .word Unk_ov18_02253320 -_02234EE4: .word ov18_02234FA4 - arm_func_end ov18_02234DB4 - - arm_func_start ov18_02234EE8 -ov18_02234EE8: ; 0x02234EE8 - stmfd sp!, {r3, lr} - ldr r0, _02234F7C ; =0x0224A150 - ldr r1, _02234F80 ; =0x020C0160 - bl ov18_0222B700 - ldr r0, _02234F84 ; =0x0224A164 - ldr r1, _02234F88 ; =0x020C07EC - bl ov18_0222B700 - ldr r0, _02234F8C ; =0x0224A17C - ldr r1, _02234F90 ; =GX_LoadBGPltt - bl ov18_0222B700 - ldr r0, _02234F94 ; =0x0224A194 - ldr r1, _02234F98 ; =GX_LoadBG2Scr - bl ov18_0222B700 - ldr r3, _02234F9C ; =0x04001008 - ldr r1, _02234FA0 ; =0x0400000A - ldrh r0, [r3] - sub r2, r3, #0x1000 - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3] - ldrh r0, [r3, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3, #2] - ldrh r0, [r2] - bic r0, r0, #3 - orr r0, r0, #2 - strh r0, [r2] - ldrh r0, [r1] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1] - ldrh r0, [r1, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1, #2] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02234F7C: .word Unk_ov18_0224A150 -_02234F80: .word 0x020C0160 -_02234F84: .word Unk_ov18_0224A164 -_02234F88: .word 0x020C07EC -_02234F8C: .word Unk_ov18_0224A17C -_02234F90: .word GX_LoadBGPltt -_02234F94: .word Unk_ov18_0224A194 -_02234F98: .word GX_LoadBG2Scr -_02234F9C: .word 0x04001008 -_02234FA0: .word 0x0400000A - arm_func_end ov18_02234EE8 - - arm_func_start ov18_02234FA4 -ov18_02234FA4: ; 0x02234FA4 - stmfd sp!, {r3, lr} - mov r1, #1 - mov r2, r1 - mov r0, #2 - mov r3, #8 - bl ov18_02244194 - mov r0, #2 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - mov r0, #1 - mov r1, r0 - bl ov18_02244C84 - mov r0, #0 - mov r1, #0x15 - bl ov18_02244C84 - ldr r0, _02234FF4 ; =ov18_02234FF8 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02234FF4: .word ov18_02234FF8 - arm_func_end ov18_02234FA4 - - arm_func_start ov18_02234FF8 -ov18_02234FF8: ; 0x02234FF8 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_0222BE30 - mov r0, #0x14 - bl ov18_0223E994 - ldr r0, _0223506C ; =0x02253320 - ldr r0, [r0, #0] - ldrb r0, [r0, #0x29] - cmp r0, #0 - bne _02235044 - mov r0, #0 - bl ov18_0222C1DC -_02235044: - ldr r0, _0223506C ; =0x02253320 - ldr r0, [r0, #0] - ldrb r0, [r0, #0x29] - cmp r0, #0x20 - bne _02235060 - mov r0, #0 - bl ov18_0222C1F0 -_02235060: - ldr r0, _02235070 ; =ov18_02235074 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223506C: .word Unk_ov18_02253320 -_02235070: .word ov18_02235074 - arm_func_end ov18_02234FF8 - - arm_func_start ov18_02235074 -ov18_02235074: ; 0x02235074 - stmfd sp!, {r3, lr} - bl ov18_0222C1C8 - cmp r0, #0xff - ldmeqia sp!, {r3, pc} - ldr r0, _02235090 ; =ov18_02235094 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02235090: .word ov18_02235094 - arm_func_end ov18_02235074 - - arm_func_start ov18_02235094 -ov18_02235094: ; 0x02235094 - stmfd sp!, {r3, lr} - bl ov18_022350A4 - bl ov18_02235264 - ldmia sp!, {r3, pc} - arm_func_end ov18_02235094 - - arm_func_start ov18_022350A4 -ov18_022350A4: ; 0x022350A4 - stmfd sp!, {r4, lr} - bl ov18_0222C1C8 - mov r4, r0 - cmp r4, #0x83 - bgt _022350E4 - cmp r4, #0x80 - blt _022350D8 - beq _022350F0 - cmp r4, #0x82 - beq _02235154 - cmp r4, #0x83 - beq _02235178 - b _022351E4 -_022350D8: - cmp r4, #0 - beq _02235248 - b _022351E4 -_022350E4: - ldr r0, _02235254 ; =0x0000E01D - cmp r4, r0 - b _022351E4 -_022350F0: - ldr r0, _02235258 ; =0x02253320 - ldr r0, [r0, #0] - ldrb r0, [r0, #0x29] - cmp r0, #0 - beq _02235248 - mov r0, #3 - bl ov18_0223E994 - ldr r1, _02235258 ; =0x02253320 - mov r0, #0 - ldr r3, [r1, #0] - ldrb r2, [r3, #0x29] - sub r2, r2, #1 - strb r2, [r3, #0x29] - ldr r3, [r1, #0] - ldrb r2, [r3, #0x29] - add r2, r3, r2 - strb r0, [r2, #8] - ldr r1, [r1, #0] - ldrb r1, [r1, #0x29] - cmp r1, #0 - bne _02235148 - bl ov18_0222C1DC -_02235148: - mov r0, #1 - bl ov18_0222C1F0 - b _02235248 -_02235154: - mov r0, #7 - bl ov18_0223E994 - ldr r1, _02235258 ; =0x02253320 - ldr r0, _0223525C ; =ov18_02235268 - ldr r1, [r1, #0] - mov r2, #0 - strb r2, [r1, #0x2a] - bl ov18_0222F6C4 - ldmia sp!, {r4, pc} -_02235178: - bl ov18_022356F8 - cmp r0, #0 - beq _022351A0 - mov r0, #6 - bl ov18_0223E994 - ldr r0, _02235258 ; =0x02253320 - mov r1, #1 - ldr r0, [r0, #0] - strb r1, [r0, #0x2a] - b _022351B8 -_022351A0: - ldr r0, _02235258 ; =0x02253320 - mov r2, #2 - ldr r1, [r0, #0] - mov r0, #9 - strb r2, [r1, #0x2a] - bl ov18_0223E994 -_022351B8: - ldr r0, _02235258 ; =0x02253320 - ldr r1, _02235260 ; =0xC1FFFCFF - ldr r2, [r0, #0] - ldr r0, _0223525C ; =ov18_02235268 - ldr r3, [r2, #4] - ldr r2, [r3, #0] - and r1, r2, r1 - orr r1, r1, #0x200 - str r1, [r3, #0] - bl ov18_0222F6C4 - ldmia sp!, {r4, pc} -_022351E4: - ldr r0, _02235258 ; =0x02253320 - ldr r0, [r0, #0] - ldrb r0, [r0, #0x29] - cmp r0, #0x20 - beq _02235248 - mov r0, #1 - bl ov18_0223E994 - ldr r1, _02235258 ; =0x02253320 - mov r0, #1 - ldr r3, [r1, #0] - ldrb r2, [r3, #0x29] - add r2, r3, r2 - strb r4, [r2, #8] - ldr r2, [r1, #0] - ldrb r1, [r2, #0x29] - add r1, r1, #1 - strb r1, [r2, #0x29] - bl ov18_0222C1DC - ldr r0, _02235258 ; =0x02253320 - ldr r0, [r0, #0] - ldrb r0, [r0, #0x29] - cmp r0, #0x20 - bne _02235248 - mov r0, #0 - bl ov18_0222C1F0 -_02235248: - bl ov18_02235490 - bl ov18_02235584 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02235254: .word 0x0000E01D -_02235258: .word Unk_ov18_02253320 -_0223525C: .word ov18_02235268 -_02235260: .word 0xC1FFFCFF - arm_func_end ov18_022350A4 - - arm_func_start ov18_02235264 -ov18_02235264: ; 0x02235264 - bx lr - arm_func_end ov18_02235264 - - arm_func_start ov18_02235268 -ov18_02235268: ; 0x02235268 - stmfd sp!, {r3, lr} - mov r0, #8 - bl ov18_02244394 - ldr r0, _02235280 ; =ov18_02235284 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02235280: .word ov18_02235284 - arm_func_end ov18_02235268 - - arm_func_start ov18_02235284 -ov18_02235284: ; 0x02235284 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_0222C194 - mov r0, #0x15 - bl ov18_0223E994 - ldr r0, _022352B0 ; =ov18_022352B4 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022352B0: .word ov18_022352B4 - arm_func_end ov18_02235284 - - arm_func_start ov18_022352B4 -ov18_022352B4: ; 0x022352B4 - stmfd sp!, {r3, lr} - sub sp, sp, #0x10 - ldr r0, _02235378 ; =0x02249230 - ldr r1, [r0, #8] - ldr r0, [r0, #0xc] - str r1, [sp, #8] - str r0, [sp, #0xc] - bl ov18_0222C204 - cmp r0, #0 - addne sp, sp, #0x10 - ldmneia sp!, {r3, pc} - ldr r0, _0223537C ; =0x02253320 - ldr r0, [r0, #0] - ldrb r0, [r0, #0x2a] - cmp r0, #0 - bne _02235304 - ldr r0, _02235380 ; =ov18_0223538C - bl ov18_0222F6C4 - add sp, sp, #0x10 - ldmia sp!, {r3, pc} -_02235304: - cmp r0, #2 - bne _02235338 - mov r2, #1 - mov ip, #0 - sub r3, r2, #2 - mov r0, #6 - mov r1, #3 - str ip, [sp] - bl ov18_0223FC48 - ldr r0, _02235384 ; =ov18_02235884 - bl ov18_0222F6C4 - add sp, sp, #0x10 - ldmia sp!, {r3, pc} -_02235338: - add r1, sp, #4 - mov r0, #0 - bl ov18_0222F724 - mov r0, #0 - str r0, [sp] - mov r2, #1 - ldr r1, [sp, #4] - add r0, sp, #8 - ldr r0, [r0, r1, lsl #2] - sub r3, r2, #2 - mov r1, #2 - bl ov18_0223FC48 - ldr r0, _02235388 ; =ov18_022355EC - bl ov18_0222F6C4 - add sp, sp, #0x10 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02235378: .word Unk_ov18_02249230 -_0223537C: .word Unk_ov18_02253320 -_02235380: .word ov18_0223538C -_02235384: .word ov18_02235884 -_02235388: .word ov18_022355EC - arm_func_end ov18_022352B4 - - arm_func_start ov18_0223538C -ov18_0223538C: ; 0x0223538C - stmfd sp!, {r3, lr} - sub sp, sp, #8 - bl ov18_0222B668 - ldr r0, _02235474 ; =0x02253320 - ldr r0, [r0, #0] - ldr r0, [r0, #4] - bl ov18_02245B74 - mov r0, #0 - bl ov18_022448E0 - ldr r0, _02235478 ; =0x0224A1A8 - ldr r1, _0223547C ; =0x020C0160 - bl ov18_0222B700 - mov r0, #1 - mov r1, r0 - bl ov18_02244CD8 - mov r0, #0 - mov r1, #0x15 - bl ov18_02244CD8 - add r0, sp, #4 - add r1, sp, #0 - bl ov18_0222F724 - ldr r0, [sp] - cmp r0, #0 - bne _02235410 - mov r0, #2 - mov r1, #1 - bl ov18_0222F6D4 - ldr r1, [sp, #4] - mov r0, #0 - bl ov18_0222F710 - ldr r0, _02235480 ; =ov18_02236BE0 - bl ov18_0222F6C4 - b _02235464 -_02235410: - ldr r0, _02235474 ; =0x02253320 - ldr r0, [r0, #0] - ldrb r0, [r0, #0x2a] - cmp r0, #0 - mov r0, #0 - bne _02235448 - mov r1, #1 - bl ov18_0222F6D4 - mov r0, #1 - mov r1, #0 - bl ov18_0222F710 - ldr r0, _02235484 ; =ov18_02233818 - bl ov18_0222F6C4 - b _02235464 -_02235448: - mov r1, r0 - bl ov18_0222F6D4 - mov r0, #0 - mov r1, #1 - bl ov18_0222F710 - ldr r0, _02235488 ; =ov18_0223C21C - bl ov18_0222F6C4 -_02235464: - ldr r0, _0223548C ; =0x02253320 - bl ov18_0224508C - add sp, sp, #8 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02235474: .word Unk_ov18_02253320 -_02235478: .word Unk_ov18_0224A1A8 -_0223547C: .word 0x020C0160 -_02235480: .word ov18_02236BE0 -_02235484: .word ov18_02233818 -_02235488: .word ov18_0223C21C -_0223548C: .word Unk_ov18_02253320 - arm_func_end ov18_0223538C - - arm_func_start ov18_02235490 -ov18_02235490: ; 0x02235490 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x1c - ldr r0, _02235578 ; =0x02253320 - add r5, sp, #0x14 - mov r1, #0 - strh r1, [r5, #2] - mov r4, #0x20 - strh r1, [r5, #4] - mov r3, #0xe - strh r1, [r5, #6] - mov r2, #0x10 - ldr r0, [r0, #0] - strh r1, [r5] - strh r4, [sp, #0x16] - strh r3, [sp, #0x18] - strh r2, [sp, #0x1a] - ldr r0, [r0, #0] - bl ov18_02244B5C - mov sl, #0 - ldr r7, _0223557C ; =0x0000E01D - ldr r6, _02235580 ; =0x0224924C - mov sb, sl - strh sl, [sp, #0x12] - mov r8, #0x31 - mov r5, #2 - mov r4, #0x480 - add fp, sp, #0x10 -_022354FC: - ldr r0, _02235578 ; =0x02253320 - cmp sl, #0x10 - ldr r0, [r0, #0] - moveq sb, #0 - streqh r8, [sp, #0x16] - add r1, r0, sl - ldrb r1, [r1, #8] - ldrb r2, [r6, sb] - cmp r1, #0x20 - streqh r7, [sp, #0x10] - strneh r1, [sp, #0x10] - ldrh r1, [sp, #0x1a] - strh r2, [sp, #0x14] - stmia sp, {r1, r5} - str r4, [sp, #8] - str fp, [sp, #0xc] - ldrh r1, [sp, #0x14] - ldrh r2, [sp, #0x16] - ldrh r3, [sp, #0x18] - ldr r0, [r0, #0] - bl ov18_02244A9C - add sl, sl, #1 - cmp sl, #0x20 - add sb, sb, #1 - blt _022354FC - ldr r0, _02235578 ; =0x02253320 - ldr r0, [r0, #0] - ldr r0, [r0, #0] - bl ov18_02244C08 - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_02235578: .word Unk_ov18_02253320 -_0223557C: .word 0x0000E01D -_02235580: .word Unk_ov18_0224924C - arm_func_end ov18_02235490 - - arm_func_start ov18_02235584 -ov18_02235584: ; 0x02235584 - stmfd sp!, {r3, lr} - ldr r0, _022355DC ; =0x02253320 - ldr r1, [r0, #0] - ldrb r0, [r1, #0x29] - ldr ip, [r1, #4] - ldr r1, _022355E0 ; =0x02249248 - cmp r0, #0x20 - and r2, r0, #0xf - mov lr, r0, asr #4 - movhs lr, #1 - ldr r0, _022355E4 ; =0x0224924C - movhs r2, #0xf - ldrb r3, [r0, r2] - ldr r2, [ip] - ldr r0, _022355E8 ; =0xFE00FF00 - ldrb r1, [r1, lr] - and r0, r2, r0 - mov r2, r3, lsl #0x17 - orr r0, r0, r1 - orr r0, r0, r2, lsr #7 - str r0, [ip] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022355DC: .word Unk_ov18_02253320 -_022355E0: .word Unk_ov18_02249248 -_022355E4: .word Unk_ov18_0224924C -_022355E8: .word 0xFE00FF00 - arm_func_end ov18_02235584 - - arm_func_start ov18_022355EC -ov18_022355EC: ; 0x022355EC - stmfd sp!, {r3, lr} - bl ov18_0223FFB8 - ldr r1, _02235640 ; =0x02253320 - ldr r2, [r1, #0] - strb r0, [r2, #0x2a] - ldr r0, [r1, #0] - ldrb r0, [r0, #0x2a] - cmp r0, #0 - beq _0223561C - cmp r0, #1 - beq _02235628 - ldmia sp!, {r3, pc} -_0223561C: - mov r0, #7 - bl ov18_0223E994 - b _02235630 -_02235628: - mov r0, #0xe - bl ov18_0223E994 -_02235630: - bl ov18_0223FF74 - ldr r0, _02235644 ; =ov18_02235648 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02235640: .word Unk_ov18_02253320 -_02235644: .word ov18_02235648 - arm_func_end ov18_022355EC - - arm_func_start ov18_02235648 -ov18_02235648: ; 0x02235648 - stmdb sp!, {lr} - sub sp, sp, #0xc - ldr r0, _022356E4 ; =0x02249230 - ldr r1, [r0, #0x10] - ldr r0, [r0, #0x14] - str r1, [sp, #4] - str r0, [sp, #8] - bl ov18_0223FFCC - cmp r0, #0 - addne sp, sp, #0xc - ldmneia sp!, {pc} - ldr r0, _022356E8 ; =0x02253320 - ldr r1, [r0, #0] - ldrb r0, [r1, #0x2a] - cmp r0, #0 - bne _022356AC - ldr r3, [r1, #4] - ldr r1, _022356EC ; =0xC1FFFCFF - ldr r2, [r3, #0] - ldr r0, _022356F0 ; =ov18_02234FF8 - and r1, r2, r1 - str r1, [r3, #0] - bl ov18_0222F6C4 - add sp, sp, #0xc - ldmia sp!, {pc} -_022356AC: - add r0, sp, #0 - mov r1, #0 - bl ov18_0222F724 - ldr r0, _022356E8 ; =0x02253320 - ldr r2, [sp] - add r1, sp, #4 - ldr r0, [r0, #0] - ldr r1, [r1, r2, lsl #2] - add r0, r0, #8 - blx r1 - ldr r0, _022356F4 ; =ov18_0223538C - bl ov18_0222F6C4 - add sp, sp, #0xc - ldmia sp!, {pc} - ; .align 2, 0 -_022356E4: .word Unk_ov18_02249230 -_022356E8: .word Unk_ov18_02253320 -_022356EC: .word 0xC1FFFCFF -_022356F0: .word ov18_02234FF8 -_022356F4: .word ov18_0223538C - arm_func_end ov18_02235648 - - arm_func_start ov18_022356F8 -ov18_022356F8: ; 0x022356F8 - stmfd sp!, {r3, lr} - sub sp, sp, #8 - add r0, sp, #4 - add r1, sp, #0 - bl ov18_0222F724 - ldr r0, [sp] - cmp r0, #1 - bne _02235728 - mov r0, #0x35 - sub r1, r0, #0x36 - mov r2, #0 - bl ov18_0222B594 -_02235728: - add r0, sp, #4 - add r1, sp, #0 - bl ov18_0222F724 - ldr r0, [sp, #4] - cmp r0, #0 - bne _02235760 - ldr r0, _02235880 ; =0x02253320 - add sp, sp, #8 - ldr r0, [r0, #0] - ldrb r0, [r0, #8] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, pc} -_02235760: - ldr r0, [sp] - cmp r0, #1 - bne _02235788 - ldr r0, _02235880 ; =0x02253320 - ldr r0, [r0, #0] - ldrb r0, [r0, #8] - cmp r0, #0 - addeq sp, sp, #8 - moveq r0, #0 - ldmeqia sp!, {r3, pc} -_02235788: - ldr r0, _02235880 ; =0x02253320 - mov r1, #0x20 - ldr r0, [r0, #0] - add r0, r0, #8 - bl ov18_02245E50 - cmp r0, #0x10 - bgt _022357DC - cmp r0, #0xa - blt _022357C0 - beq _02235804 - cmp r0, #0xd - cmpne r0, #0x10 - beq _022357F8 - b _02235874 -_022357C0: - cmp r0, #0 - bgt _022357D0 - beq _022357F8 - b _02235874 -_022357D0: - cmp r0, #5 - beq _022357F8 - b _02235874 -_022357DC: - cmp r0, #0x1a - bgt _022357EC - beq _02235804 - b _02235874 -_022357EC: - cmp r0, #0x20 - beq _02235804 - b _02235874 -_022357F8: - add sp, sp, #8 - mov r0, #1 - ldmia sp!, {r3, pc} -_02235804: - cmp r0, #0 - mov r2, #0 - ble _02235868 - ldr r1, _02235880 ; =0x02253320 - ldr r3, [r1, #0] -_02235818: - ldrb r1, [r3, #8] - cmp r1, #0x30 - blo _0223582C - cmp r1, #0x39 - bls _02235858 -_0223582C: - cmp r1, #0x41 - blo _0223583C - cmp r1, #0x46 - bls _02235858 -_0223583C: - cmp r1, #0x61 - blo _0223584C - cmp r1, #0x66 - bls _02235858 -_0223584C: - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r3, pc} -_02235858: - add r2, r2, #1 - cmp r2, r0 - add r3, r3, #1 - blt _02235818 -_02235868: - add sp, sp, #8 - mov r0, #1 - ldmia sp!, {r3, pc} -_02235874: - mov r0, #0 - add sp, sp, #8 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02235880: .word Unk_ov18_02253320 - arm_func_end ov18_022356F8 - - arm_func_start ov18_02235884 -ov18_02235884: ; 0x02235884 - stmfd sp!, {r3, lr} - bl ov18_0223FFB8 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #6 - bl ov18_0223E994 - bl ov18_0223FF74 - ldr r0, _022358AC ; =ov18_022358B0 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022358AC: .word ov18_022358B0 - arm_func_end ov18_02235884 - - arm_func_start ov18_022358B0 -ov18_022358B0: ; 0x022358B0 - stmfd sp!, {r3, lr} - bl ov18_0223FFCC - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _022358E8 ; =0x02253320 - ldr r1, _022358EC ; =0xC1FFFCFF - ldr r2, [r0, #0] - ldr r0, _022358F0 ; =ov18_02234FF8 - ldr r3, [r2, #4] - ldr r2, [r3, #0] - and r1, r2, r1 - str r1, [r3, #0] - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022358E8: .word Unk_ov18_02253320 -_022358EC: .word 0xC1FFFCFF -_022358F0: .word ov18_02234FF8 - arm_func_end ov18_022358B0 - - .rodata - - - .global Unk_ov18_02249230 -Unk_ov18_02249230: ; 0x02249230 - .byte 0x3E, 0x3D - - .global Unk_ov18_02249232 -Unk_ov18_02249232: ; 0x02249232 - .short 0xE - .word 0x10 - - .global Unk_ov18_02249238 -Unk_ov18_02249238: ; 0x02249238 - .word 0x47 - .word 0x48 - - .global Unk_ov18_02249240 -Unk_ov18_02249240: ; 0x02249240 - .word ov18_0223DE08 - .word ov18_0223DE38 - - .global Unk_ov18_02249248 -Unk_ov18_02249248: ; 0x02249248 - .byte 0x20, 0x31, 0x0, 0x0 - - .global Unk_ov18_0224924C -Unk_ov18_0224924C: ; 0x0224924C - .byte 0x8, 0x17, 0x26, 0x35, 0x44, 0x53, 0x62, 0x71 - .byte 0x80, 0x8F, 0x9E, 0xAD, 0xBC, 0xCB, 0xDA, 0xE9 - - - - .data - - - .global Unk_ov18_0224A150 -Unk_ov18_0224A150: ; 0x0224A150 - .ascii "char/ybObjKb.ncl.l" - .space 0x2 - - .global Unk_ov18_0224A164 -Unk_ov18_0224A164: ; 0x0224A164 - .ascii "char/jbBgStep3.ncg.l" - .space 0x4 - - .global Unk_ov18_0224A17C -Unk_ov18_0224A17C: ; 0x0224A17C - .ascii "char/ybBgStep3.ncl.l" - .space 0x4 - - .global Unk_ov18_0224A194 -Unk_ov18_0224A194: ; 0x0224A194 - .ascii "char/xb4Edit.nsc.l" - .space 0x2 - - .global Unk_ov18_0224A1A8 -Unk_ov18_0224A1A8: ; 0x0224A1A8 - .ascii "char/ybObjMain.ncl.l" - .space 0x4 - - - - .bss - - - .global Unk_ov18_02253320 -Unk_ov18_02253320: ; 0x02253320 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/sceneseteditaddress.s b/subprojects/NitroDWC/libraries/util/asm/sceneseteditaddress.s deleted file mode 100644 index 9648fcba4b..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/sceneseteditaddress.s +++ /dev/null @@ -1,1054 +0,0 @@ - .include "macros/function.inc" - .include "include/sceneseteditaddress.inc" - - - - .text - - - arm_func_start ov18_022358F4 -ov18_022358F4: ; 0x022358F4 - stmfd sp!, {r3, r4, r5, lr} - sub sp, sp, #0x20 - ldr r4, _02235A54 ; =0x02249274 - ldr ip, _02235A58 ; =0x0224925C - ldmia r4!, {r0, r1, r2, r3} - add r5, sp, #0xc - stmia r5!, {r0, r1, r2, r3} - ldr r4, [r4, #0] - ldrb lr, [ip, #0xa] - str r4, [r5, #0] - ldrb r5, [ip, #8] - ldrb r4, [ip, #9] - ldrb r3, [ip, #0xb] - ldrb r2, [ip, #0xc] - mov r0, #0x18 - mov r1, #4 - strb r5, [sp, #4] - strb r4, [sp, #5] - strb lr, [sp, #6] - strb r3, [sp, #7] - strb r2, [sp, #8] - bl ov18_02245068 - ldr r2, _02235A5C ; =0x02253324 - mov r1, #0 - str r0, [r2, #0] - add r0, sp, #0 - bl ov18_0222F724 - ldr r0, _02235A5C ; =0x02253324 - ldr r2, [sp] - add r1, sp, #0xc - ldr r0, [r0, #0] - ldr r1, [r1, r2, lsl #2] - add r0, r0, #8 - blx r1 - ldr r0, _02235A5C ; =0x02253324 - ldr r1, _02235A60 ; =0x0224A1C0 - ldr r4, [r0, #0] - mov r2, #3 - add r0, r4, #8 - bl memcmp - cmp r0, #0 - movne r0, #3 - strneb r0, [r4, #0x14] - bne _022359C4 - add r0, r4, #8 - mov r1, #0 - mov r2, #0xc - bl MI_CpuFill8 - ldr r0, _02235A5C ; =0x02253324 - mov r1, #0 - ldr r0, [r0, #0] - strb r1, [r0, #0x14] -_022359C4: - bl ov18_02235A68 - ldr r0, [sp] - add r0, r0, #0xb - bl ov18_0222BBC0 - ldr r2, [sp] - add r0, sp, #4 - ldrb r0, [r0, r2] - mvn r1, #0 - mov r2, #0 - bl ov18_0222B594 - mov r0, #2 - bl ov18_0222B740 - mov r0, #0 - mov r1, r0 - bl ov18_0224467C - ldr r2, _02235A5C ; =0x02253324 - mov r1, #0x3f - ldr r2, [r2, #0] - str r0, [r2, #0] - mov r0, #0 - bl ov18_02243F60 - ldr r1, _02235A5C ; =0x02253324 - ldr r2, [r1, #0] - str r0, [r2, #4] - ldr r0, [r1, #0] - ldr r1, [r0, #4] - ldrh r0, [r1, #4] - bic r0, r0, #0xc00 - orr r0, r0, #0xc00 - strh r0, [r1, #4] - bl ov18_0223621C - bl ov18_02236158 - ldr r0, _02235A64 ; =ov18_02235B24 - bl ov18_0222F6C4 - add sp, sp, #0x20 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02235A54: .word Unk_ov18_02249274 -_02235A58: .word Unk_ov18_0224925C -_02235A5C: .word Unk_ov18_02253324 -_02235A60: .word Unk_ov18_0224A1C0 -_02235A64: .word ov18_02235B24 - arm_func_end ov18_022358F4 - - arm_func_start ov18_02235A68 -ov18_02235A68: ; 0x02235A68 - stmfd sp!, {r3, lr} - ldr r0, _02235AFC ; =0x0224A1C4 - ldr r1, _02235B00 ; =0x020C0160 - bl ov18_0222B700 - ldr r0, _02235B04 ; =0x0224A1D8 - ldr r1, _02235B08 ; =0x020C07EC - bl ov18_0222B700 - ldr r0, _02235B0C ; =0x0224A1F0 - ldr r1, _02235B10 ; =GX_LoadBGPltt - bl ov18_0222B700 - ldr r0, _02235B14 ; =0x0224A208 - ldr r1, _02235B18 ; =GX_LoadBG2Scr - bl ov18_0222B700 - ldr r3, _02235B1C ; =0x04001008 - ldr r1, _02235B20 ; =0x0400000A - ldrh r0, [r3] - sub r2, r3, #0x1000 - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3] - ldrh r0, [r3, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3, #2] - ldrh r0, [r2] - bic r0, r0, #3 - orr r0, r0, #2 - strh r0, [r2] - ldrh r0, [r1] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1] - ldrh r0, [r1, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1, #2] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02235AFC: .word Unk_ov18_0224A1C4 -_02235B00: .word 0x020C0160 -_02235B04: .word Unk_ov18_0224A1D8 -_02235B08: .word 0x020C07EC -_02235B0C: .word Unk_ov18_0224A1F0 -_02235B10: .word GX_LoadBGPltt -_02235B14: .word Unk_ov18_0224A208 -_02235B18: .word GX_LoadBG2Scr -_02235B1C: .word 0x04001008 -_02235B20: .word 0x0400000A - arm_func_end ov18_02235A68 - - arm_func_start ov18_02235B24 -ov18_02235B24: ; 0x02235B24 - stmfd sp!, {r3, lr} - mov r1, #1 - mov r2, r1 - mov r0, #2 - mov r3, #8 - bl ov18_02244194 - mov r0, #2 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - mov r0, #1 - mov r1, r0 - bl ov18_02244C84 - mov r0, #0 - mov r1, #0x15 - bl ov18_02244C84 - ldr r0, _02235B74 ; =ov18_02235B78 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02235B74: .word ov18_02235B78 - arm_func_end ov18_02235B24 - - arm_func_start ov18_02235B78 -ov18_02235B78: ; 0x02235B78 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_0222DADC - mov r0, #0x14 - bl ov18_0223E994 - ldr r0, _02235BFC ; =0x02253324 - ldr r0, [r0, #0] - ldrb r0, [r0, #0x14] - cmp r0, #0 - bne _02235BD0 - mov r0, #0 - bl ov18_0222DE60 - mov r0, #0 - bl ov18_0222DE88 - b _02235BF0 -_02235BD0: - mov r0, #0x1a - bl ov18_02235F44 - cmp r0, #0 - beq _02235BE8 - mov r0, #0 - bl ov18_0222DE74 -_02235BE8: - mov r0, #0 - bl ov18_0222DE88 -_02235BF0: - ldr r0, _02235C00 ; =ov18_02235C04 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02235BFC: .word Unk_ov18_02253324 -_02235C00: .word ov18_02235C04 - arm_func_end ov18_02235B78 - - arm_func_start ov18_02235C04 -ov18_02235C04: ; 0x02235C04 - stmfd sp!, {r3, lr} - bl ov18_0222DE4C - cmp r0, #0x1f - ldmeqia sp!, {r3, pc} - ldr r0, _02235C20 ; =ov18_02235C24 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02235C20: .word ov18_02235C24 - arm_func_end ov18_02235C04 - - arm_func_start ov18_02235C24 -ov18_02235C24: ; 0x02235C24 - stmfd sp!, {r3, lr} - bl ov18_02235C34 - bl ov18_02235FD8 - ldmia sp!, {r3, pc} - arm_func_end ov18_02235C24 - - arm_func_start ov18_02235C34 -ov18_02235C34: ; 0x02235C34 - stmfd sp!, {r3, r4, r5, lr} - bl ov18_0222DE4C - mov r4, r0 - cmp r4, #0 - bgt _02235C50 - ldmeqia sp!, {r3, r4, r5, pc} - b _02235E14 -_02235C50: - sub r0, r4, #0x10 - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _02235E14 -_02235C60: ; jump table - b _02235C74 ; case 0 - b _02235D1C ; case 1 - b _02235D70 ; case 2 - b _02235D94 ; case 3 - ldmia sp!, {r3, r4, r5, pc} ; case 4 -_02235C74: - ldr r0, _02235F38 ; =0x02253324 - ldr r1, [r0, #0] - ldrb r0, [r1, #0x14] - cmp r0, #0 - ldreqb r0, [r1, #0xa] - cmpeq r0, #0 - beq _02235F2C - mov r0, #3 - bl ov18_0223E994 - ldr r0, _02235F38 ; =0x02253324 - ldr r2, [r0, #0] - ldrb r1, [r2, #0x14] - add r0, r1, r1, lsl #1 - add r0, r0, #2 - add r0, r2, r0 - ldrb r0, [r0, #8] - cmp r0, #0 - subeq r0, r1, #1 - streqb r0, [r2, #0x14] - ldr r0, _02235F38 ; =0x02253324 - mov r1, #0 - ldr r3, [r0, #0] - mov r2, #3 - ldrb r0, [r3, #0x14] - add r3, r3, #8 - add r0, r0, r0, lsl #1 - add r0, r3, r0 - bl MI_CpuFill8 - ldr r0, _02235F38 ; =0x02253324 - ldr r1, [r0, #0] - ldrb r0, [r1, #0x14] - cmp r0, #0 - ldreqb r0, [r1, #0xa] - cmpeq r0, #0 - bne _02235D08 - mov r0, #0 - bl ov18_0222DE60 -_02235D08: - mov r0, #1 - bl ov18_0222DE74 - mov r0, #0 - bl ov18_0222DE88 - b _02235F2C -_02235D1C: - ldr r0, _02235F38 ; =0x02253324 - ldr r1, [r0, #0] - ldrb r0, [r1, #0x14] - cmp r0, #3 - bhs _02235F2C - add r0, r0, r0, lsl #1 - add r0, r0, #2 - add r0, r1, r0 - ldrb r0, [r0, #8] - cmp r0, #0 - beq _02235F2C - mov r0, #1 - bl ov18_0223E994 - ldr r1, _02235F38 ; =0x02253324 - mov r0, #0 - ldr r2, [r1, #0] - ldrb r1, [r2, #0x14] - add r1, r1, #1 - strb r1, [r2, #0x14] - bl ov18_0222DE88 - b _02235F2C -_02235D70: - ldr r0, _02235F38 ; =0x02253324 - mov r2, #0 - ldr r1, [r0, #0] - mov r0, #7 - strb r2, [r1, #0x15] - bl ov18_0223E994 - ldr r0, _02235F3C ; =ov18_02235FDC - bl ov18_0222F6C4 - ldmia sp!, {r3, r4, r5, pc} -_02235D94: - bl ov18_022363F8 - cmp r0, #0 - beq _02235DBC - mov r0, #6 - bl ov18_0223E994 - ldr r0, _02235F38 ; =0x02253324 - mov r1, #1 - ldr r0, [r0, #0] - strb r1, [r0, #0x15] - b _02235DD4 -_02235DBC: - ldr r0, _02235F38 ; =0x02253324 - mov r2, #2 - ldr r1, [r0, #0] - mov r0, #9 - strb r2, [r1, #0x15] - bl ov18_0223E994 -_02235DD4: - ldr r1, _02235F38 ; =0x02253324 - mov r3, #3 - ldr r2, [r1, #0] - ldr r0, _02235F40 ; =0xC1FFFCFF - strb r3, [r2, #0x14] - ldr r1, [r1, #0] - ldr r2, [r1, #4] - ldr r1, [r2, #0] - and r0, r1, r0 - orr r0, r0, #0x200 - str r0, [r2, #0] - bl ov18_0223621C - bl ov18_02236380 - ldr r0, _02235F3C ; =ov18_02235FDC - bl ov18_0222F6C4 - ldmia sp!, {r3, r4, r5, pc} -_02235E14: - ldr r0, _02235F38 ; =0x02253324 - ldr r0, [r0, #0] - ldrb r0, [r0, #0x14] - cmp r0, #3 - bne _02235E38 - mov r0, #0x1a - bl ov18_02235F44 - cmp r0, #0 - bne _02235F2C -_02235E38: - mov r0, #1 - bl ov18_0223E994 - ldr r0, _02235F38 ; =0x02253324 - ldr r2, [r0, #0] - ldrb r1, [r2, #0x14] - add r5, r2, #8 - add lr, r1, r1, lsl #1 - add ip, lr, #2 - ldrb r3, [r5, ip] - cmp r3, #0 - streqb r4, [r5, ip] - beq _02235ED0 - add r2, lr, #1 - ldrb r1, [r5, r2] - cmp r1, #0 - bne _02235EAC - strb r3, [r5, r2] - mov r0, #0x1a - strb r4, [r5, ip] - bl ov18_02235F44 - cmp r0, #0 - beq _02235ED0 - ldr r0, _02235F38 ; =0x02253324 - ldr r1, [r0, #0] - ldrb r0, [r1, #0x14] - cmp r0, #3 - addlo r0, r0, #1 - strlob r0, [r1, #0x14] - b _02235ED0 -_02235EAC: - strb r1, [r5, lr] - ldrb r1, [r5, ip] - strb r1, [r5, r2] - strb r4, [r5, ip] - ldr r1, [r0, #0] - ldrb r0, [r1, #0x14] - cmp r0, #3 - addlo r0, r0, #1 - strlob r0, [r1, #0x14] -_02235ED0: - mov r0, #1 - bl ov18_0222DE60 - ldr r0, _02235F38 ; =0x02253324 - ldr r0, [r0, #0] - ldrb r0, [r0, #0x14] - cmp r0, #3 - bhs _02235EF8 - mov r0, #1 - bl ov18_0222DE88 - b _02235F00 -_02235EF8: - mov r0, #0 - bl ov18_0222DE88 -_02235F00: - ldr r0, _02235F38 ; =0x02253324 - ldr r0, [r0, #0] - ldrb r0, [r0, #0x14] - cmp r0, #3 - bne _02235F2C - mov r0, #0x1a - bl ov18_02235F44 - cmp r0, #0 - beq _02235F2C - mov r0, #0 - bl ov18_0222DE74 -_02235F2C: - bl ov18_02236158 - bl ov18_0223621C - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02235F38: .word Unk_ov18_02253324 -_02235F3C: .word ov18_02235FDC -_02235F40: .word 0xC1FFFCFF - arm_func_end ov18_02235C34 - - arm_func_start ov18_02235F44 -ov18_02235F44: ; 0x02235F44 - stmfd sp!, {r3, r4, lr} - sub sp, sp, #4 - ldr r1, _02235FD4 ; =0x02253324 - mov r4, r0 - ldr r1, [r1, #0] - ldrb r0, [r1, #0x14] - add r3, r1, #8 - add r2, r0, r0, lsl #1 - ldrb r0, [r3, r2] - cmp r0, #0 - cmpne r0, #0x20 - addne sp, sp, #4 - movne r0, #1 - ldmneia sp!, {r3, r4, pc} - add r0, r3, r2 - add r1, sp, #0 - mov r2, #3 - bl MI_CpuCopy8 - mov r2, #0 - add r3, sp, #0 - strb r2, [sp, #3] - mov r0, #0x20 -_02235F9C: - ldrb r1, [r3] - cmp r1, #0 - bne _02235FB8 - add r2, r2, #1 - cmp r2, #3 - strb r0, [r3], #1 - blt _02235F9C -_02235FB8: - add r0, sp, #0 - bl atoi - cmp r0, r4 - movge r0, #1 - movlt r0, #0 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - ; .align 2, 0 -_02235FD4: .word Unk_ov18_02253324 - arm_func_end ov18_02235F44 - - arm_func_start ov18_02235FD8 -ov18_02235FD8: ; 0x02235FD8 - bx lr - arm_func_end ov18_02235FD8 - - arm_func_start ov18_02235FDC -ov18_02235FDC: ; 0x02235FDC - stmfd sp!, {r3, lr} - mov r0, #8 - bl ov18_02244394 - ldr r0, _02235FF4 ; =ov18_02235FF8 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02235FF4: .word ov18_02235FF8 - arm_func_end ov18_02235FDC - - arm_func_start ov18_02235FF8 -ov18_02235FF8: ; 0x02235FF8 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_0222DE18 - mov r0, #0x15 - bl ov18_0223E994 - ldr r0, _02236024 ; =ov18_02236028 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02236024: .word ov18_02236028 - arm_func_end ov18_02235FF8 - - arm_func_start ov18_02236028 -ov18_02236028: ; 0x02236028 - stmfd sp!, {r3, lr} - bl ov18_0222DE9C - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _022360A4 ; =0x02253324 - ldr r0, [r0, #0] - ldrb r0, [r0, #0x15] - cmp r0, #0 - bne _02236058 - ldr r0, _022360A8 ; =ov18_022360B4 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_02236058: - mov r2, #1 - cmp r0, #2 - mov ip, #0 - sub r3, r2, #2 - bne _02236088 - mov r0, #6 - mov r1, #3 - str ip, [sp] - bl ov18_0223FC48 - ldr r0, _022360AC ; =ov18_0223654C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_02236088: - mov r0, #0x47 - mov r1, #2 - str ip, [sp] - bl ov18_0223FC48 - ldr r0, _022360B0 ; =ov18_02236270 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022360A4: .word Unk_ov18_02253324 -_022360A8: .word ov18_022360B4 -_022360AC: .word ov18_0223654C -_022360B0: .word ov18_02236270 - arm_func_end ov18_02236028 - - arm_func_start ov18_022360B4 -ov18_022360B4: ; 0x022360B4 - stmfd sp!, {r3, lr} - bl ov18_0222B668 - ldr r0, _02236144 ; =0x02253324 - ldr r0, [r0, #0] - ldr r0, [r0, #4] - bl ov18_02245B74 - mov r0, #0 - bl ov18_022448E0 - ldr r0, _02236148 ; =0x0224A220 - ldr r1, _0223614C ; =0x020C0160 - bl ov18_0222B700 - mov r0, #1 - mov r1, r0 - bl ov18_02244CD8 - mov r0, #0 - mov r1, #0x15 - bl ov18_02244CD8 - add r0, sp, #0 - mov r1, #0 - bl ov18_0222F724 - ldr r0, [sp] - mov r1, #1 - cmp r0, #3 - addge r0, r0, #1 - strge r0, [sp] - mov r0, #2 - bl ov18_0222F6D4 - ldr r1, [sp] - mov r0, #0 - add r1, r1, #3 - bl ov18_0222F710 - ldr r0, _02236150 ; =ov18_02236BE0 - bl ov18_0222F6C4 - ldr r0, _02236154 ; =0x02253324 - bl ov18_0224508C - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02236144: .word Unk_ov18_02253324 -_02236148: .word Unk_ov18_0224A220 -_0223614C: .word 0x020C0160 -_02236150: .word ov18_02236BE0 -_02236154: .word Unk_ov18_02253324 - arm_func_end ov18_022360B4 - - arm_func_start ov18_02236158 -ov18_02236158: ; 0x02236158 - stmfd sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x1c - ldr r0, _02236210 ; =0x02253324 - ldr r1, _02236214 ; =0x0224925C - ldr r0, [r0, #0] - ldrh r5, [r1, #0xe] - ldrh r4, [r1, #0x10] - mov r3, #0xb - mov r2, #0x10 - ldr r0, [r0, #0] - mov r1, #0 - strh r5, [sp, #0x14] - strh r4, [sp, #0x16] - strh r3, [sp, #0x18] - strh r2, [sp, #0x1a] - bl ov18_02244B5C - mov r4, #0 - ldr r5, _02236218 ; =0x0224929C - ldr r6, _02236210 ; =0x02253324 - strh r4, [sp, #0x12] - mov sb, #2 - mov r8, #0x480 - add r7, sp, #0x10 -_022361B4: - ldr ip, [r6] - ldrb r1, [r5], #1 - add r0, ip, r4 - ldrb r3, [r0, #8] - ldrh r0, [sp, #0x1a] - ldrh r2, [sp, #0x16] - strh r3, [sp, #0x10] - stmia sp, {r0, sb} - str r8, [sp, #8] - str r7, [sp, #0xc] - ldrh r3, [sp, #0x18] - ldr r0, [ip] - strh r1, [sp, #0x14] - bl ov18_02244A9C - add r4, r4, #1 - cmp r4, #0xc - blt _022361B4 - ldr r0, _02236210 ; =0x02253324 - ldr r0, [r0, #0] - ldr r0, [r0, #0] - bl ov18_02244C08 - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - ; .align 2, 0 -_02236210: .word Unk_ov18_02253324 -_02236214: .word Unk_ov18_0224925C -_02236218: .word Unk_ov18_0224929C - arm_func_end ov18_02236158 - - arm_func_start ov18_0223621C -ov18_0223621C: ; 0x0223621C - ldr r0, _02236264 ; =0x02253324 - ldr r2, [r0, #0] - ldrb r0, [r2, #0x14] - ldr r3, [r2, #4] - cmp r0, #3 - movgt r0, #3 - add r1, r0, r0, lsl #1 - ldr r0, _02236268 ; =0x0224929C - add r1, r1, #2 - ldrb r2, [r0, r1] - ldr r1, [r3, #0] - ldr r0, _0223626C ; =0xFE00FF00 - mov r2, r2, lsl #0x17 - and r0, r1, r0 - orr r0, r0, #0x28 - orr r0, r0, r2, lsr #7 - str r0, [r3, #0] - bx lr - ; .align 2, 0 -_02236264: .word Unk_ov18_02253324 -_02236268: .word Unk_ov18_0224929C -_0223626C: .word 0xFE00FF00 - arm_func_end ov18_0223621C - - arm_func_start ov18_02236270 -ov18_02236270: ; 0x02236270 - stmfd sp!, {r3, lr} - bl ov18_0223FFB8 - ldr r1, _022362C4 ; =0x02253324 - ldr r2, [r1, #0] - strb r0, [r2, #0x15] - ldr r0, [r1, #0] - ldrb r0, [r0, #0x15] - cmp r0, #0 - beq _022362A0 - cmp r0, #1 - beq _022362AC - ldmia sp!, {r3, pc} -_022362A0: - mov r0, #7 - bl ov18_0223E994 - b _022362B4 -_022362AC: - mov r0, #0xe - bl ov18_0223E994 -_022362B4: - bl ov18_0223FF74 - ldr r0, _022362C8 ; =ov18_022362CC - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022362C4: .word Unk_ov18_02253324 -_022362C8: .word ov18_022362CC - arm_func_end ov18_02236270 - - arm_func_start ov18_022362CC -ov18_022362CC: ; 0x022362CC - stmfd sp!, {r3, lr} - sub sp, sp, #0x18 - ldr lr, _0223636C ; =0x02249288 - add ip, sp, #4 - ldmia lr!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - ldr r0, [lr] - str r0, [ip] - bl ov18_0223FFCC - cmp r0, #0 - addne sp, sp, #0x18 - ldmneia sp!, {r3, pc} - ldr r0, _02236370 ; =0x02253324 - ldr r1, [r0, #0] - ldrb r0, [r1, #0x15] - cmp r0, #0 - bne _02236334 - ldr r3, [r1, #4] - ldr r1, _02236374 ; =0xC1FFFCFF - ldr r2, [r3, #0] - ldr r0, _02236378 ; =ov18_02235B78 - and r1, r2, r1 - str r1, [r3, #0] - bl ov18_0222F6C4 - add sp, sp, #0x18 - ldmia sp!, {r3, pc} -_02236334: - add r0, sp, #0 - mov r1, #0 - bl ov18_0222F724 - ldr r0, _02236370 ; =0x02253324 - ldr r2, [sp] - add r1, sp, #4 - ldr r0, [r0, #0] - ldr r1, [r1, r2, lsl #2] - add r0, r0, #8 - blx r1 - ldr r0, _0223637C ; =ov18_022360B4 - bl ov18_0222F6C4 - add sp, sp, #0x18 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223636C: .word Unk_ov18_02249288 -_02236370: .word Unk_ov18_02253324 -_02236374: .word 0xC1FFFCFF -_02236378: .word ov18_02235B78 -_0223637C: .word ov18_022360B4 - arm_func_end ov18_022362CC - - arm_func_start ov18_02236380 -ov18_02236380: ; 0x02236380 - stmfd sp!, {r4, r5, r6, lr} - mov r4, #0 - ldr r0, _022363F4 ; =0x02253324 - mov r6, r4 - mov r1, #0x20 - mov r2, #0x30 - mov ip, r4 -_0223639C: - ldr r3, [r0, #0] - mov r5, ip - add r3, r3, #8 - add lr, r3, r6 -_022363AC: - ldrb r3, [lr, r5] - cmp r3, #0x30 - cmpne r3, #0x20 - cmpne r3, #0 - bne _022363DC - cmp r5, #2 - moveq r3, r2 - movne r3, r1 - strb r3, [lr, r5] - add r5, r5, #1 - cmp r5, #3 - blt _022363AC -_022363DC: - add r4, r4, #1 - cmp r4, #4 - add r6, r6, #3 - blt _0223639C - bl ov18_02236158 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_022363F4: .word Unk_ov18_02253324 - arm_func_end ov18_02236380 - - arm_func_start ov18_022363F8 -ov18_022363F8: ; 0x022363F8 - stmfd sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0xc - ldr r2, _02236544 ; =0x0224925C - mov r0, #0 - ldrb ip, [r2] - ldrb r3, [r2, #1] - ldr r1, _02236548 ; =0x02253324 - strb ip, [sp, #8] - strb r3, [sp, #9] - ldrb ip, [r2, #2] - ldrb r3, [r2, #3] - ldr r2, [r1, #0] - add r4, sp, #8 - strb ip, [sp, #0xa] - mov r7, r0 - strb r3, [sp, #0xb] - add lr, r2, #8 - mov ip, r0 -_02236440: - ldrb r1, [lr, r7] - add r5, lr, r7 - cmp r1, #0x20 - beq _02236484 - mov r6, ip - mov r8, r4 -_02236458: - ldrb r3, [r5, r6] - ldrb r1, [r8] - cmp r3, r1 - addhi sp, sp, #0xc - movhi r0, #0 - ldmhiia sp!, {r3, r4, r5, r6, r7, r8, pc} - blo _02236484 - add r6, r6, #1 - cmp r6, #3 - add r8, r8, #1 - blt _02236458 -_02236484: - add r0, r0, #1 - cmp r0, #4 - add r7, r7, #3 - blt _02236440 - add r1, sp, #0 - add r0, r2, #8 - bl ov18_0223E834 - add r0, sp, #4 - mov r1, #0 - bl ov18_0222F724 - ldr r0, [sp, #4] - cmp r0, #1 - bne _02236528 - mov r4, #0 - mov r1, #1 - add r5, sp, #0 - mov r6, r4 - mov r2, r1 - mov ip, r4 -_022364D0: - ldrb r3, [r5] - mov r7, ip -_022364D8: - cmp r4, #0 - rsb r0, r7, #7 - beq _022364F8 - tst r3, r2, lsl r0 - beq _02236500 - add sp, sp, #0xc - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_022364F8: - tst r3, r1, lsl r0 - moveq r4, r1 -_02236500: - add r7, r7, #1 - cmp r7, #8 - blt _022364D8 - add r6, r6, #1 - cmp r6, #4 - add r5, r5, #1 - blt _022364D0 - add sp, sp, #0xc - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_02236528: - add r0, sp, #0 - bl sub_020A2CAC - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_02236544: .word Unk_ov18_0224925C -_02236548: .word Unk_ov18_02253324 - arm_func_end ov18_022363F8 - - arm_func_start ov18_0223654C -ov18_0223654C: ; 0x0223654C - stmfd sp!, {r3, lr} - bl ov18_0223FFB8 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #6 - bl ov18_0223E994 - bl ov18_0223FF74 - ldr r0, _02236574 ; =ov18_02236578 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02236574: .word ov18_02236578 - arm_func_end ov18_0223654C - - arm_func_start ov18_02236578 -ov18_02236578: ; 0x02236578 - stmfd sp!, {r3, lr} - bl ov18_0223FFCC - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _022365B0 ; =0x02253324 - ldr r1, _022365B4 ; =0xC1FFFCFF - ldr r2, [r0, #0] - ldr r0, _022365B8 ; =ov18_02235B78 - ldr r3, [r2, #4] - ldr r2, [r3, #0] - and r1, r2, r1 - str r1, [r3, #0] - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022365B0: .word Unk_ov18_02253324 -_022365B4: .word 0xC1FFFCFF -_022365B8: .word ov18_02235B78 - arm_func_end ov18_02236578 - - .rodata - - - .global Unk_ov18_0224925C -Unk_ov18_0224925C: ; 0x0224925C - .asciz "255" - - .global Unk_ov18_02249260 -Unk_ov18_02249260: ; 0x02249260 - .short 0xB - .short 0x10 - - .global Unk_ov18_02249264 -Unk_ov18_02249264: ; 0x02249264 - .asciz "?@ABC" - .space 0x2 - - .global Unk_ov18_0224926A -Unk_ov18_0224926A: ; 0x0224926A - .word 0x29 - .space 0x4 - - .global Unk_ov18_02249274 -Unk_ov18_02249274: ; 0x02249274 - .word ov18_0223E08C - .word ov18_0223E0CC - .word ov18_0223E10C - .word ov18_0223E150 - .word ov18_0223E194 - - .global Unk_ov18_02249288 -Unk_ov18_02249288: ; 0x02249288 - .word ov18_0223DFD0 - .word ov18_0223DFEC - .word ov18_0223E008 - .word ov18_0223E028 - .word ov18_0223E048 - - .global Unk_ov18_0224929C -Unk_ov18_0224929C: ; 0x0224929C - .byte 0x31, 0x3D, 0x49, 0x5A, 0x66, 0x72, 0x83, 0x8F, 0x9B, 0xAC, 0xB8, 0xC4 - - - - .data - - - .global Unk_ov18_0224A1C0 -Unk_ov18_0224A1C0: ; 0x0224A1C0 - .asciz " 0" - - .global Unk_ov18_0224A1C4 -Unk_ov18_0224A1C4: ; 0x0224A1C4 - .ascii "char/ybObjKb.ncl.l" - .space 0x2 - - .global Unk_ov18_0224A1D8 -Unk_ov18_0224A1D8: ; 0x0224A1D8 - .ascii "char/jbBgStep3.ncg.l" - .space 0x4 - - .global Unk_ov18_0224A1F0 -Unk_ov18_0224A1F0: ; 0x0224A1F0 - .ascii "char/ybBgStep3.ncl.l" - .space 0x4 - - .global Unk_ov18_0224A208 -Unk_ov18_0224A208: ; 0x0224A208 - .ascii "char/xb4EditAddr.nsc.l" - .space 0x2 - - .global Unk_ov18_0224A220 -Unk_ov18_0224A220: ; 0x0224A220 - .ascii "char/ybObjMain.ncl.l" - .space 0x4 - - - - .bss - - - .global Unk_ov18_02253324 -Unk_ov18_02253324: ; 0x02253324 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/sceneseterror.s b/subprojects/NitroDWC/libraries/util/asm/sceneseterror.s deleted file mode 100644 index f5a6dcd66e..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/sceneseterror.s +++ /dev/null @@ -1,510 +0,0 @@ - .include "macros/function.inc" - .include "include/sceneseterror.inc" - - .extern Unk_ov18_022532D8 - - .text - - - arm_func_start ov18_022365BC -ov18_022365BC: ; 0x022365BC - stmfd sp!, {r3, lr} - bl ov18_022365D8 - bl ov18_02236658 - ldr r0, _022365D4 ; =ov18_022369B4 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022365D4: .word ov18_022369B4 - arm_func_end ov18_022365BC - - arm_func_start ov18_022365D8 -ov18_022365D8: ; 0x022365D8 - stmfd sp!, {r3, lr} - ldr r0, _02236648 ; =0x0224A238 - ldr r1, _0223664C ; =GX_LoadBG2Scr - bl ov18_0222B700 - ldr r3, _02236650 ; =0x04001008 - ldr r1, _02236654 ; =0x0400000A - ldrh r0, [r3] - sub r2, r3, #0x1000 - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3] - ldrh r0, [r3, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3, #2] - ldrh r0, [r2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2] - ldrh r0, [r1] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1] - ldrh r0, [r1, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1, #2] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02236648: .word Unk_ov18_0224A238 -_0223664C: .word GX_LoadBG2Scr -_02236650: .word 0x04001008 -_02236654: .word 0x0400000A - arm_func_end ov18_022365D8 - - arm_func_start ov18_02236658 -ov18_02236658: ; 0x02236658 - stmfd sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0x24 - add r1, sp, #0x10 - mov r0, #0 - bl ov18_0222F724 - ldr r0, _02236988 ; =0x02253328 - ldr r2, _0223698C ; =0xFFFFB17D - ldr r1, [r0, #0] - cmp r1, r2 - movge r4, #0 - bge _022368B4 - sub r0, r2, #1 - cmp r1, r0 - movge r4, #2 - bge _022368B4 - sub r0, r2, #2 - cmp r1, r0 - movge r4, #0x13 - bge _022368B4 - sub r0, r2, #8 - cmp r1, r0 - movge r4, #2 - bge _022368B4 - sub r0, r2, #9 - cmp r1, r0 - movge r4, #0x12 - bge _022368B4 - sub r0, r2, #0xa - cmp r1, r0 - movge r4, #2 - bge _022368B4 - sub r0, r2, #0xb - cmp r1, r0 - movge r4, #3 - bge _022368B4 - sub r0, r2, #0x384 - cmp r1, r0 - movge r4, #2 - bge _022368B4 - ldr r0, _02236990 ; =0xFFFFA629 - cmp r1, r0 - movge r4, #0 - bge _022368B4 - sub r0, r0, #0x3e8 - cmp r1, r0 - movge r4, #0x13 - bge _022368B4 - ldr r0, _02236994 ; =0xFFFF3CB1 - cmp r1, r0 - movge r4, #0 - bge _022368B4 - sub r2, r0, #3 - cmp r1, r2 - movge r4, #7 - bge _022368B4 - sub r2, r0, #4 - cmp r1, r2 - movge r4, #5 - bge _022368B4 - sub r2, r0, #0x63 - cmp r1, r2 - movge r4, #0 - bge _022368B4 - sub r2, r0, #0x64 - cmp r1, r2 - blt _02236774 - ldr r0, [sp, #0x10] - cmp r0, #2 - moveq r4, #5 - movne r4, #7 - b _022368B4 -_02236774: - ldr r3, _02236998 ; =0xFFFF3866 - cmp r1, r3 - movge r4, #0 - bge _022368B4 - sub r2, r3, #1 - cmp r1, r2 - blt _022367A4 - ldr r0, [sp, #0x10] - cmp r0, #2 - moveq r4, #5 - movne r4, #8 - b _022368B4 -_022367A4: - sub r2, r3, #4 - cmp r1, r2 - movge r4, #9 - bge _022368B4 - sub r2, r3, #5 - cmp r1, r2 - movge r4, #5 - bge _022368B4 - sub r2, r3, #0x65 - cmp r1, r2 - movge r4, #0 - bge _022368B4 - sub r2, r3, #0xc9 - cmp r1, r2 - movge r4, #0x14 - bge _022368B4 - sub r2, r3, #0xcc - cmp r1, r2 - movge r4, #0x15 - bge _022368B4 - sub r2, r3, #0xcd - cmp r1, r2 - movge r4, #4 - bge _022368B4 - sub r0, r0, #0x7d0 - cmp r1, r0 - movge r4, #0 - bge _022368B4 - sub r0, r3, #0x388 - cmp r1, r0 - movge r4, #0xa - bge _022368B4 - ldr r2, _0223699C ; =0xFFFF34DD - cmp r1, r2 - movge r4, #0x16 - bge _022368B4 - sub r0, r2, #0x60 - cmp r1, r0 - movge r4, #0 - bge _022368B4 - sub r0, r2, #0x64 - cmp r1, r0 - movge r4, #0xb - bge _022368B4 - sub r0, r2, #0xc4 - cmp r1, r0 - movge r4, #0 - bge _022368B4 - sub r0, r2, #0xc8 - cmp r1, r0 - movge r4, #0xb - bge _022368B4 - sub r0, r2, #0x128 - cmp r1, r0 - movge r4, #0 - bge _022368B4 - sub r0, r2, #0x18c - cmp r1, r0 - movge r4, #2 - bge _022368B4 - sub r0, r2, #0x3e4 - cmp r1, r0 - movge r4, #0 - bge _022368B4 - sub r0, r2, #0x510 - cmp r1, r0 - movge r4, #2 - movlt r4, #0 -_022368B4: - bl ov18_0222F74C - mov r2, r0 - ldr r1, _022369A0 ; =0x022492A8 - mov r0, #0 - ldrb r1, [r1, r2] - bl ov18_0224467C - ldr r1, _022369A4 ; =0x022532D8 - mov r5, r0 - ldr r0, [r1, #0] - mov r1, r4 - bl ov18_0222F8B8 - ldr r1, _02236988 ; =0x02253328 - mov r4, r0 - ldr r1, [r1, #0] - ldr r2, _022369A8 ; =0x0224A24C - rsb r3, r1, #0 - add r0, sp, #0x14 - mov r1, #8 - bl swprintf - bl ov18_0222F74C - mov r1, r0, lsl #2 - ldr r0, _022369AC ; =0x022492BA - ldrh r6, [r0, r1] - bl ov18_0222F74C - mov r3, r0, lsl #2 - ldr r1, _022369B0 ; =0x022492B8 - mov r0, #0xa - ldrh r1, [r1, r3] - str r0, [sp] - add r3, sp, #0x14 - str r3, [sp, #4] - mov r0, #0 - str r0, [sp, #8] - mov r2, r6 - mov r0, r5 - mov r3, #2 - bl ov18_022449F0 - bl ov18_0222B8F8 - mov r1, #0x5e - str r1, [sp] - mov r1, #2 - str r1, [sp, #4] - str r0, [sp, #8] - mov r0, r5 - mov r1, #0xd - mov r2, #0x3c - mov r3, #0xe6 - str r4, [sp, #0xc] - bl ov18_02244A9C - mov r0, r5 - bl ov18_02244C08 - add sp, sp, #0x24 - ldmia sp!, {r3, r4, r5, r6, pc} - ; .align 2, 0 -_02236988: .word Unk_ov18_02253328 -_0223698C: .word 0xFFFFB17D -_02236990: .word 0xFFFFA629 -_02236994: .word 0xFFFF3CB1 -_02236998: .word 0xFFFF3866 -_0223699C: .word 0xFFFF34DD -_022369A0: .word Unk_ov18_022492A8 -_022369A4: .word Unk_ov18_022532D8 -_022369A8: .word Unk_ov18_0224A24C -_022369AC: .word 0x022492BA -_022369B0: .word Unk_ov18_022492B8 - arm_func_end ov18_02236658 - - arm_func_start ov18_022369B4 -ov18_022369B4: ; 0x022369B4 - stmfd sp!, {r3, lr} - mov r0, #2 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - mov r0, #0 - mov r1, #0x15 - bl ov18_02244C84 - ldr r0, _022369E4 ; =ov18_022369E8 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022369E4: .word ov18_022369E8 - arm_func_end ov18_022369B4 - - arm_func_start ov18_022369E8 -ov18_022369E8: ; 0x022369E8 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #4 - bl ov18_0222B790 - ldr r0, _02236A20 ; =ov18_02236A24 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02236A20: .word ov18_02236A24 - arm_func_end ov18_022369E8 - - arm_func_start ov18_02236A24 -ov18_02236A24: ; 0x02236A24 - stmfd sp!, {r3, lr} - bl ov18_0222B034 - mvn r1, #1 - cmp r0, r1 - ldmeqia sp!, {r3, pc} - bl ov18_0222B0A8 - ldr r0, _02236A48 ; =ov18_02236A4C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02236A48: .word ov18_02236A4C - arm_func_end ov18_02236A24 - - arm_func_start ov18_02236A4C -ov18_02236A4C: ; 0x02236A4C - stmfd sp!, {r3, lr} - bl ov18_02236A60 - bl ov18_02236A80 - bl ov18_02236A84 - ldmia sp!, {r3, pc} - arm_func_end ov18_02236A4C - - arm_func_start ov18_02236A60 -ov18_02236A60: ; 0x02236A60 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02245470 - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, #0 - bl ov18_0222B048 - ldmia sp!, {r3, pc} - arm_func_end ov18_02236A60 - - arm_func_start ov18_02236A80 -ov18_02236A80: ; 0x02236A80 - bx lr - arm_func_end ov18_02236A80 - - arm_func_start ov18_02236A84 -ov18_02236A84: ; 0x02236A84 - stmfd sp!, {r3, lr} - bl ov18_0222B034 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #6 - bl ov18_0223E994 - ldr r0, _02236AA8 ; =ov18_02236AAC - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02236AA8: .word ov18_02236AAC - arm_func_end ov18_02236A84 - - arm_func_start ov18_02236AAC -ov18_02236AAC: ; 0x02236AAC - stmfd sp!, {r3, lr} - bl ov18_0222B0C0 - mov r0, #8 - bl ov18_02244394 - ldr r0, _02236AC8 ; =ov18_02236ACC - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02236AC8: .word ov18_02236ACC - arm_func_end ov18_02236AAC - - arm_func_start ov18_02236ACC -ov18_02236ACC: ; 0x02236ACC - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_0222B004 - mov r1, #1 - mov r2, r1 - mov r0, #3 - mov r3, #8 - bl ov18_02244194 - mov r0, #3 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - ldr r0, _02236B18 ; =ov18_02236B1C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02236B18: .word ov18_02236B1C - arm_func_end ov18_02236ACC - - arm_func_start ov18_02236B1C -ov18_02236B1C: ; 0x02236B1C - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_0222B07C - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, #0 - bl ov18_022448E0 - bl ov18_0222B668 - mov r0, #1 - mov r1, r0 - bl ov18_02244CD8 - mov r0, #0 - mov r1, #0x15 - bl ov18_02244CD8 - add r1, sp, #0 - mov r0, #0 - bl ov18_0222F724 - ldr r0, [sp] - cmp r0, #0 - mov r0, #2 - beq _02236BA0 - mov r1, #1 - bl ov18_0222F6D4 - ldr r0, _02236BC8 ; =ov18_0223A6B4 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_02236BA0: - mov r1, #0 - bl ov18_0222F6D4 - mov r0, #0 - mov r1, r0 - bl ov18_0222F710 - mov r0, #0 - bl ov18_0223909C - ldr r0, _02236BCC ; =ov18_02236BE0 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02236BC8: .word ov18_0223A6B4 -_02236BCC: .word ov18_02236BE0 - arm_func_end ov18_02236B1C - - arm_func_start ov18_02236BD0 -ov18_02236BD0: ; 0x02236BD0 - ldr r1, _02236BDC ; =0x02253328 - str r0, [r1, #0] - bx lr - ; .align 2, 0 -_02236BDC: .word Unk_ov18_02253328 - arm_func_end ov18_02236BD0 - - .rodata - - - .global Unk_ov18_022492A8 -Unk_ov18_022492A8: ; 0x022492A8 - .byte 0x0, 0x1, 0x1, 0x1, 0x1, 0x1, 0x0, 0x0 - - .global Unk_ov18_022492B0 -Unk_ov18_022492B0: ; 0x022492B0 - .short 0xD, 0x3C, 0xE6, 0x5E - - .global Unk_ov18_022492B8 -Unk_ov18_022492B8: ; 0x022492B8 - .short 0x62, 0x22, 0x62, 0x22, 0x3D, 0x22 - .short 0x65, 0x22, 0x6C, 0x22, 0x34, 0x22, 0x4E, 0x22 - - - .data - - - .global Unk_ov18_0224A238 -Unk_ov18_0224A238: ; 0x0224A238 - .asciz "char/jb4Error.nsc.l" - - .global Unk_ov18_0224A24C -Unk_ov18_0224A24C: ; 0x0224A24C - .short 0x25, 0x64 - .space 0x4 - - - - .bss - - - .global Unk_ov18_02253328 -Unk_ov18_02253328: ; 0x02253328 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/scenesetlist.s b/subprojects/NitroDWC/libraries/util/asm/scenesetlist.s deleted file mode 100644 index 14f2a70655..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/scenesetlist.s +++ /dev/null @@ -1,2854 +0,0 @@ - .include "macros/function.inc" - .include "include/scenesetlist.inc" - - - - .extern Unk_ov18_02249734 - .text - - - arm_func_start ov18_02236BE0 -ov18_02236BE0: ; 0x02236BE0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - bl ov18_0223DDCC - mov r4, r0 - mov r0, #0x48 - mov r1, #4 - bl ov18_02245068 - ldr r1, _02236DC4 ; =0x0225332C - mov r2, #0xc - str r0, [r1, #8] - ldrb r3, [r4, #0xf6] - strb r3, [r0, #0x43] - ldr r0, [r1, #8] - strb r2, [r0, #0x42] - bl ov18_02236FF0 - bl ov18_02236DDC - ldr r0, _02236DC4 ; =0x0225332C - ldrb r0, [r0, #1] - cmp r0, #0 - bne _02236C50 - bl ov18_0222F74C - ldr r1, _02236DC8 ; =0x022493B0 - ldrb r2, [r4, #0xf4] - ldrsb r1, [r1, r0] - mov r0, #0x30 - add r2, r2, #1 - bl ov18_0222B594 - b _02236C60 -_02236C50: - mov r0, #0x45 - sub r1, r0, #0x46 - mov r2, #0 - bl ov18_0222B594 -_02236C60: - mov r0, #1 - bl ov18_0222B740 - bl ov18_0222BC34 - ldr r0, _02236DC4 ; =0x0225332C - mov r1, #0x37 - ldrh r3, [r0, #4] - ldr r2, _02236DCC ; =0xE1FC780F - mov r0, #2 - mul r5, r3, r1 - smull r1, r3, r2, r5 - add r3, r5, r3 - mov r1, r5, lsr #0x1f - add r3, r1, r3, asr #7 - str r3, [sp] - mov r1, #0x55 - mov r2, #0xf1 - mov r3, #0x41 - bl ov18_0223D218 - mov r0, #0 - mov r1, #1 - bl ov18_0224467C - ldr r6, _02236DC4 ; =0x0225332C - mov r5, #0 - ldr r1, [r6, #8] - mov r8, r5 - str r0, [r1, #0x14] - mov r7, #0x29 -_02236CCC: - mov r0, r8 - mov r1, r7 - bl ov18_02243F60 - ldr r1, [r6, #8] - add r1, r1, r5, lsl #2 - add r5, r5, #1 - str r0, [r1, #0x18] - cmp r5, #7 - blt _02236CCC - ldrb r0, [r4, #0xe7] - cmp r0, #1 - beq _02236D08 - cmp r0, #2 - beq _02236D3C - b _02236D6C -_02236D08: - mov r0, #0 - mov r1, #0x50 - bl ov18_02243F60 - ldr r1, _02236DC4 ; =0x0225332C - ldr r2, [r1, #8] - str r0, [r2, #0x34] - ldr r0, [r1, #8] - ldr r1, [r0, #0x34] - ldrh r0, [r1, #4] - bic r0, r0, #0xc00 - orr r0, r0, #0xc00 - strh r0, [r1, #4] - b _02236D6C -_02236D3C: - mov r0, #0 - mov r1, #0x51 - bl ov18_02243F60 - ldr r1, _02236DC4 ; =0x0225332C - ldr r2, [r1, #8] - str r0, [r2, #0x34] - ldr r0, [r1, #8] - ldr r1, [r0, #0x34] - ldrh r0, [r1, #4] - bic r0, r0, #0xc00 - orr r0, r0, #0xc00 - strh r0, [r1, #4] -_02236D6C: - ldr r1, _02236DD0 ; =ov18_02238924 - mov r0, #1 - mov r2, #0 - mov r3, #0x6e - bl ov18_02246304 - ldr r2, _02236DC4 ; =0x0225332C - ldr r1, _02236DD4 ; =ov18_02238E84 - ldr r2, [r2, #8] - mov r3, #0x78 - str r0, [r2, #0x3c] - mov r0, #0 - mov r2, r0 - bl ov18_02246304 - ldr r1, _02236DC4 ; =0x0225332C - ldr r1, [r1, #8] - str r0, [r1, #0] - bl ov18_02237BA8 - bl ov18_022389A8 - ldr r0, _02236DD8 ; =ov18_0223702C - bl ov18_0222F6C4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_02236DC4: .word Unk_ov18_0225332C -_02236DC8: .word Unk_ov18_022493B0 -_02236DCC: .word 0xE1FC780F -_02236DD0: .word ov18_02238924 -_02236DD4: .word ov18_02238E84 -_02236DD8: .word ov18_0223702C - arm_func_end ov18_02236BE0 - - arm_func_start ov18_02236DDC -ov18_02236DDC: ; 0x02236DDC - stmdb sp!, {lr} - sub sp, sp, #0x44 - ldr r3, _02236FB0 ; =0x0224934F - add ip, sp, #0x2b - mov r2, #0xb -_02236DF0: - ldrb r1, [r3] - ldrb r0, [r3, #1] - add r3, r3, #2 - strb r1, [ip] - strb r0, [ip, #1] - add ip, ip, #2 - subs r2, r2, #1 - bne _02236DF0 - ldrb r0, [r3] - ldr r3, _02236FB4 ; =0x02249324 - add lr, sp, #0x16 - strb r0, [ip] - mov r2, #0xa -_02236E24: - ldrb r1, [r3] - ldrb r0, [r3, #1] - add r3, r3, #2 - strb r1, [lr] - strb r0, [lr, #1] - add lr, lr, #2 - subs r2, r2, #1 - bne _02236E24 - ldrb r0, [r3] - ldr ip, _02236FB8 ; =0x02249339 - add r3, sp, #0 - strb r0, [lr] - mov r2, #0xb -_02236E58: - ldrb r1, [ip] - ldrb r0, [ip, #1] - add ip, ip, #2 - strb r1, [r3] - strb r0, [r3, #1] - add r3, r3, #2 - subs r2, r2, #1 - bne _02236E58 - ldr r3, _02236FBC ; =0x0400000C - ldr r0, _02236FC0 ; =0x0224A254 - ldrh r2, [r3] - ldr r1, _02236FC4 ; =0x020C0160 - and r2, r2, #0x43 - orr r2, r2, #0x218 - orr r2, r2, #0xc00 - strh r2, [r3] - bl ov18_0222B700 - ldr r0, _02236FC8 ; =0x0224A268 - ldr r1, _02236FCC ; =0x020C08AC - bl ov18_0222B700 - ldr r0, _02236FD0 ; =0x0224A280 - ldr r1, _02236FD4 ; =0x020C07EC - bl ov18_0222B700 - ldr r1, _02236FD8 ; =GX_LoadBGPltt - add r0, sp, #0x16 - bl ov18_0222B700 - ldr r0, _02236FDC ; =0x0224A298 - ldr r1, _02236FE0 ; =0x020C05AC - bl ov18_0222B700 - add r0, sp, #0x2b - bl ov18_0222B6A0 - mov r1, #0 - mov r2, #4 - bl ov18_02243738 - ldr r1, _02236FE4 ; =0x0225332C - ldr r2, [r1, #8] - str r0, [r2, #8] - ldr r0, [r1, #8] - ldr r0, [r0, #8] - bl ov18_0223D004 - bl ov18_0223D090 - add r0, sp, #0x16 - bl ov18_0222B6A0 - mov r1, #0 - mov r2, #4 - bl ov18_02243738 - ldr r1, _02236FE4 ; =0x0225332C - ldr r1, [r1, #8] - str r0, [r1, #0xc] - add r0, sp, #0 - bl ov18_0222B6A0 - mov r1, #0 - mov r2, #4 - bl ov18_02243738 - ldr r1, _02236FE4 ; =0x0225332C - ldr r2, _02236FE8 ; =0x04001008 - ldr r1, [r1, #8] - str r0, [r1, #0x10] - ldrh r0, [r2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2] - ldrh r0, [r2, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2, #2] - sub r2, r2, #0x1000 - ldrh r0, [r2] - ldr r1, _02236FEC ; =0x0400000A - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2] - ldrh r0, [r1] - bic r0, r0, #3 - orr r0, r0, #2 - strh r0, [r1] - ldrh r0, [r1, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1, #2] - ldrh r0, [r1, #4] - bic r0, r0, #3 - orr r0, r0, #2 - strh r0, [r1, #4] - add sp, sp, #0x44 - ldmia sp!, {pc} - ; .align 2, 0 -_02236FB0: .word Unk_ov18_0224934F -_02236FB4: .word Unk_ov18_02249324 -_02236FB8: .word Unk_ov18_02249339 -_02236FBC: .word 0x0400000C -_02236FC0: .word Unk_ov18_0224A254 -_02236FC4: .word 0x020C0160 -_02236FC8: .word Unk_ov18_0224A268 -_02236FCC: .word 0x020C08AC -_02236FD0: .word Unk_ov18_0224A280 -_02236FD4: .word 0x020C07EC -_02236FD8: .word GX_LoadBGPltt -_02236FDC: .word Unk_ov18_0224A298 -_02236FE0: .word 0x020C05AC -_02236FE4: .word Unk_ov18_0225332C -_02236FE8: .word 0x04001008 -_02236FEC: .word 0x0400000A - arm_func_end ov18_02236DDC - - arm_func_start ov18_02236FF0 -ov18_02236FF0: ; 0x02236FF0 - stmfd sp!, {r3, lr} - bl ov18_0223DDCC - add r1, sp, #0 - mov r0, #0 - bl ov18_0222F724 - ldr r0, [sp] - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _02237028 ; =0x0225332C - mov r1, #0 - strh r1, [r0, #4] - strb r1, [r0] - strb r1, [r0, #2] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02237028: .word Unk_ov18_0225332C - arm_func_end ov18_02236FF0 - - arm_func_start ov18_0223702C -ov18_0223702C: ; 0x0223702C - stmfd sp!, {r3, lr} - mov r1, #1 - mov r2, r1 - mov r0, #2 - mov r3, #8 - bl ov18_02244194 - mov r0, #2 - mov r1, #0 - mov r2, #0x1d - mov r3, #8 - bl ov18_02244194 - mov r0, #1 - mov r1, r0 - bl ov18_02244C84 - mov r0, #0 - mov r1, #0x1d - bl ov18_02244C84 - ldr r0, _0223707C ; =ov18_02237080 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223707C: .word ov18_02237080 - arm_func_end ov18_0223702C - - arm_func_start ov18_02237080 -ov18_02237080: ; 0x02237080 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _022370B0 ; =ov18_022370B4 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022370B0: .word ov18_022370B4 - arm_func_end ov18_02237080 - - arm_func_start ov18_022370B4 -ov18_022370B4: ; 0x022370B4 - stmfd sp!, {r3, lr} - bl ov18_022370C4 - bl ov18_022375EC - ldmia sp!, {r3, pc} - arm_func_end ov18_022370B4 - - arm_func_start ov18_022370C4 -ov18_022370C4: ; 0x022370C4 - stmfd sp!, {r3, lr} - ldr r0, _02237334 ; =0x0225332C - ldr r1, [r0, #8] - ldr r0, [r1, #0x38] - cmp r0, #0 - ldreqb r0, [r1, #0x45] - cmpeq r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_02237344 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #1 - bl ov18_02245470 - cmp r0, #0 - beq _02237110 - ldr r0, _02237334 ; =0x0225332C - ldrb r0, [r0] - bl ov18_022373C8 - ldmia sp!, {r3, pc} -_02237110: - mov r0, #2 - bl ov18_02245470 - cmp r0, #0 - beq _02237144 - mov r0, #7 - bl ov18_0223E994 - ldr r1, _02237334 ; =0x0225332C - ldr r0, _02237338 ; =ov18_02237848 - ldr r1, [r1, #8] - mov r2, #0xd - strb r2, [r1, #0x40] - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_02237144: - mov r0, #0x200 - bl ov18_022454B0 - cmp r0, #0 - beq _022371BC - ldr r0, _02237334 ; =0x0225332C - ldrh r1, [r0, #4] - cmp r1, #0x91 - bne _02237190 - ldr r0, [r0, #8] - ldrb r0, [r0, #0x47] - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #9 - bl ov18_0223E994 - ldr r0, _02237334 ; =0x0225332C - mov r1, #1 - ldr r0, [r0, #8] - strb r1, [r0, #0x47] - ldmia sp!, {r3, pc} -_02237190: - mov r0, #0x13 - bl ov18_0223E994 - mov r0, #0 - ldr r1, _0223733C ; =ov18_02238880 - mov r2, r0 - mov r3, #0x78 - bl ov18_02246304 - ldr r1, _02237334 ; =0x0225332C - ldr r1, [r1, #8] - str r0, [r1, #0x38] - ldmia sp!, {r3, pc} -_022371BC: - mov r0, #0x200 - bl ov18_022454F0 - cmp r0, #0 - beq _022371E0 - ldr r0, _02237334 ; =0x0225332C - mov r1, #0 - ldr r0, [r0, #8] - strb r1, [r0, #0x47] - ldmia sp!, {r3, pc} -_022371E0: - mov r0, #0x100 - bl ov18_022454B0 - cmp r0, #0 - beq _02237258 - ldr r0, _02237334 ; =0x0225332C - ldrh r1, [r0, #4] - cmp r1, #0 - bne _0223722C - ldr r0, [r0, #8] - ldrb r0, [r0, #0x47] - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #9 - bl ov18_0223E994 - ldr r0, _02237334 ; =0x0225332C - mov r1, #1 - ldr r0, [r0, #8] - strb r1, [r0, #0x47] - ldmia sp!, {r3, pc} -_0223722C: - mov r0, #0x13 - bl ov18_0223E994 - mov r0, #0 - ldr r1, _02237340 ; =ov18_022387B8 - mov r2, r0 - mov r3, #0x78 - bl ov18_02246304 - ldr r1, _02237334 ; =0x0225332C - ldr r1, [r1, #8] - str r0, [r1, #0x38] - ldmia sp!, {r3, pc} -_02237258: - mov r0, #0x100 - bl ov18_022454F0 - cmp r0, #0 - beq _0223727C - ldr r0, _02237334 ; =0x0225332C - mov r1, #0 - ldr r0, [r0, #8] - strb r1, [r0, #0x47] - ldmia sp!, {r3, pc} -_0223727C: - mov r0, #0x40 - bl ov18_022454B0 - cmp r0, #0 - beq _02237298 - mov r0, #1 - bl ov18_02238B60 - ldmia sp!, {r3, pc} -_02237298: - mov r0, #0x40 - bl ov18_022454F0 - cmp r0, #0 - beq _022372BC - ldr r0, _02237334 ; =0x0225332C - mov r1, #0 - ldr r0, [r0, #8] - strb r1, [r0, #0x47] - ldmia sp!, {r3, pc} -_022372BC: - mov r0, #0x80 - bl ov18_022454B0 - cmp r0, #0 - beq _022372D8 - mov r0, #3 - bl ov18_02238B60 - ldmia sp!, {r3, pc} -_022372D8: - mov r0, #0x80 - bl ov18_022454F0 - cmp r0, #0 - beq _022372FC - ldr r0, _02237334 ; =0x0225332C - mov r1, #0 - ldr r0, [r0, #8] - strb r1, [r0, #0x47] - ldmia sp!, {r3, pc} -_022372FC: - mov r0, #0x20 - bl ov18_022454B0 - cmp r0, #0 - beq _02237318 - mov r0, #0 - bl ov18_02238B60 - ldmia sp!, {r3, pc} -_02237318: - mov r0, #0x10 - bl ov18_022454B0 - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, #2 - bl ov18_02238B60 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02237334: .word Unk_ov18_0225332C -_02237338: .word ov18_02237848 -_0223733C: .word ov18_02238880 -_02237340: .word ov18_022387B8 - arm_func_end ov18_022370C4 - - arm_func_start ov18_02237344 -ov18_02237344: ; 0x02237344 - stmfd sp!, {r4, lr} - bl ov18_0223DDCC - bl ov18_022384DC - mov r4, r0 - cmp r4, #0xe - moveq r0, #0 - ldmeqia sp!, {r4, pc} - bl ov18_02237F58 - cmp r0, #0 - bne _0223737C - mov r0, #9 - bl ov18_0223E994 - mov r0, #1 - ldmia sp!, {r4, pc} -_0223737C: - mov r0, r4 - bl ov18_02238B30 - cmp r4, #8 - addls pc, pc, r4, lsl #2 - b _022373B8 -_02237390: ; jump table - b _022373B8 ; case 0 - b _022373B8 ; case 1 - b _022373B4 ; case 2 - b _022373B4 ; case 3 - b _022373B8 ; case 4 - b _022373B8 ; case 5 - b _022373B8 ; case 6 - b _022373B4 ; case 7 - b _022373B4 ; case 8 -_022373B4: - bl ov18_02238ED8 -_022373B8: - mov r0, r4 - bl ov18_022373C8 - mov r0, #1 - ldmia sp!, {r4, pc} - arm_func_end ov18_02237344 - - arm_func_start ov18_022373C8 -ov18_022373C8: ; 0x022373C8 - stmfd sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, r0 - bl ov18_02237F58 - cmp r0, #0 - bne _022373F0 - mov r0, #9 - bl ov18_0223E994 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} -_022373F0: - cmp r4, #8 - addls pc, pc, r4, lsl #2 - b _02237468 -_022373FC: ; jump table - b _02237468 ; case 0 - b _02237468 ; case 1 - b _02237420 ; case 2 - b _02237420 ; case 3 - b _02237468 ; case 4 - b _02237468 ; case 5 - b _02237468 ; case 6 - b _02237444 ; case 7 - b _02237444 ; case 8 -_02237420: - mov r0, #6 - bl ov18_0223E994 - sub r0, r4, #2 - teq r0, #1 - movne r0, #1 - moveq r0, #0 - bl ov18_02237548 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} -_02237444: - mov r0, #6 - bl ov18_0223E994 - sub r0, r4, #7 - teq r0, #1 - movne r0, #1 - moveq r0, #0 - bl ov18_022375B4 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} -_02237468: - ldr r0, _02237538 ; =0x0225332C - sub r1, r4, #0xb - ldr r0, [r0, #8] - cmp r1, #1 - strb r4, [r0, #0x40] - bhi _022374E4 - bl ov18_02238E50 - bl ov18_02238F9C - cmp r0, #0 - bne _022374C4 - mov r0, #9 - bl ov18_0223E994 - mov r1, #1 - mov ip, #0 - mov r2, r1 - sub r3, r1, #2 - mov r0, #6 - str ip, [sp] - bl ov18_0223FC48 - ldr r0, _0223753C ; =ov18_0223903C - bl ov18_0222F6C4 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} -_022374C4: - cmp r4, #0xb - bne _022374D8 - mov r0, #6 - bl ov18_0223E994 - b _02237524 -_022374D8: - mov r0, #0xe - bl ov18_0223E994 - b _02237524 -_022374E4: - cmp r4, #0xd - bne _022374FC - bl ov18_02238E50 - mov r0, #7 - bl ov18_0223E994 - b _02237524 -_022374FC: - mov r0, #6 - bl ov18_0223E994 - ldr r0, _02237540 ; =0x022493D0 - ldrb r0, [r0, r4] - bl ov18_02238750 - mov r2, r0 - mov r0, #0 - mov r1, #1 - bl ov18_02237FEC - bl ov18_022382CC -_02237524: - bl ov18_0223D378 - ldr r0, _02237544 ; =ov18_02237848 - bl ov18_0222F6C4 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - ; .align 2, 0 -_02237538: .word Unk_ov18_0225332C -_0223753C: .word ov18_0223903C -_02237540: .word Unk_ov18_022493D0 -_02237544: .word ov18_02237848 - arm_func_end ov18_022373C8 - - arm_func_start ov18_02237548 -ov18_02237548: ; 0x02237548 - stmfd sp!, {r3, r4, r5, lr} - mov r4, r0 - bl ov18_0223DDCC - ldrb r1, [r0, #0xf5] - cmp r1, r4 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r4, #0 - beq _02237584 - ldr r0, _022375B0 ; =0x0225332C - ldr r0, [r0, #8] - ldrb r0, [r0, #0x43] - cmp r0, #0 - movne r5, #1 - moveq r5, #0 - b _02237598 -_02237584: - ldr r1, _022375B0 ; =0x0225332C - ldrb r2, [r0, #0xf6] - ldr r0, [r1, #8] - mov r5, #0 - strb r2, [r0, #0x43] -_02237598: - mov r0, r4 - bl ov18_0223DDE0 - mov r0, r5 - bl ov18_0223DDF4 - bl ov18_02237BA8 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_022375B0: .word Unk_ov18_0225332C - arm_func_end ov18_02237548 - - arm_func_start ov18_022375B4 -ov18_022375B4: ; 0x022375B4 - stmfd sp!, {r4, lr} - mov r4, r0 - bl ov18_0223DDCC - ldrb r0, [r0, #0xf6] - cmp r0, r4 - ldmeqia sp!, {r4, pc} - ldr r1, _022375E8 ; =0x0225332C - mov r0, r4 - ldr r1, [r1, #8] - strb r4, [r1, #0x43] - bl ov18_0223DDF4 - bl ov18_02237BA8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_022375E8: .word Unk_ov18_0225332C - arm_func_end ov18_022375B4 - - arm_func_start ov18_022375EC -ov18_022375EC: ; 0x022375EC - stmfd sp!, {r3, lr} - ldr r0, _02237838 ; =0x0225332C - ldr r1, [r0, #8] - ldr r0, [r1, #0x38] - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldrb r0, [r1, #0x41] - cmp r0, #0 - subne r0, r0, #1 - strneb r0, [r1, #0x41] - bl ov18_0223D340 - cmp r0, #7 - addls pc, pc, r0, lsl #2 - ldmia sp!, {r3, pc} -_02237624: ; jump table - ldmia sp!, {r3, pc} ; case 0 - b _02237644 ; case 1 - b _02237658 ; case 2 - b _022376AC ; case 3 - b _02237754 ; case 4 - b _02237824 ; case 5 - b _022377BC ; case 6 - b _02237824 ; case 7 -_02237644: - ldr r0, _02237838 ; =0x0225332C - mov r1, #1 - ldr r0, [r0, #8] - strb r1, [r0, #0x45] - ldmia sp!, {r3, pc} -_02237658: - ldr r0, _02237838 ; =0x0225332C - ldr r0, [r0, #8] - ldrb r0, [r0, #0x41] - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_0222BAF4 - bl ov18_0223D32C - mov r1, #0x91 - mul r1, r0, r1 - ldr r2, _0223783C ; =0x094F2095 - mov r0, r1, lsr #0x1f - smull r1, r3, r2, r1 - ldr r1, _02237838 ; =0x0225332C - add r3, r0, r3, asr #1 - strh r3, [r1, #4] - bl ov18_02237BA8 - ldr r0, _02237838 ; =0x0225332C - mov r1, #4 - ldr r0, [r0, #8] - strb r1, [r0, #0x41] - ldmia sp!, {r3, pc} -_022376AC: - ldr r0, _02237838 ; =0x0225332C - mov r1, #0 - ldr r0, [r0, #8] - strb r1, [r0, #0x45] - bl ov18_0223D32C - mov r1, #0x91 - mul r1, r0, r1 - ldr r2, _0223783C ; =0x094F2095 - mov r0, r1, lsr #0x1f - smull r1, r3, r2, r1 - ldr r1, _02237838 ; =0x0225332C - add r3, r0, r3, asr #1 - mov r0, #0x13 - strh r3, [r1, #4] - bl ov18_0223E994 - bl ov18_02237BA8 - ldr r0, _02237838 ; =0x0225332C - mov r1, #0x1d - ldrh r0, [r0, #4] - bl FX_ModS32 - cmp r0, #0 - bne _0223770C - bl ov18_02238A80 - ldmia sp!, {r3, pc} -_0223770C: - cmp r0, #0x10 - mov r0, #0 - mov r3, #0x78 - bge _02237738 - ldr r1, _02237840 ; =ov18_022387B8 - mov r2, r0 - bl ov18_02246304 - ldr r1, _02237838 ; =0x0225332C - ldr r1, [r1, #8] - str r0, [r1, #0x38] - ldmia sp!, {r3, pc} -_02237738: - ldr r1, _02237844 ; =ov18_02238880 - mov r2, r0 - bl ov18_02246304 - ldr r1, _02237838 ; =0x0225332C - ldr r1, [r1, #8] - str r0, [r1, #0x38] - ldmia sp!, {r3, pc} -_02237754: - ldr r0, _02237838 ; =0x0225332C - ldrh r1, [r0, #4] - cmp r1, #0 - bne _02237790 - ldr r0, [r0, #8] - ldrb r0, [r0, #0x46] - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #9 - bl ov18_0223E994 - ldr r0, _02237838 ; =0x0225332C - mov r1, #1 - ldr r0, [r0, #8] - strb r1, [r0, #0x46] - ldmia sp!, {r3, pc} -_02237790: - mov r0, #0x13 - bl ov18_0223E994 - mov r0, #0 - ldr r1, _02237840 ; =ov18_022387B8 - mov r2, r0 - mov r3, #0x78 - bl ov18_02246304 - ldr r1, _02237838 ; =0x0225332C - ldr r1, [r1, #8] - str r0, [r1, #0x38] - ldmia sp!, {r3, pc} -_022377BC: - ldr r0, _02237838 ; =0x0225332C - ldrh r1, [r0, #4] - cmp r1, #0x91 - bne _022377F8 - ldr r0, [r0, #8] - ldrb r0, [r0, #0x46] - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #9 - bl ov18_0223E994 - ldr r0, _02237838 ; =0x0225332C - mov r1, #1 - ldr r0, [r0, #8] - strb r1, [r0, #0x46] - ldmia sp!, {r3, pc} -_022377F8: - mov r0, #0x13 - bl ov18_0223E994 - mov r0, #0 - ldr r1, _02237844 ; =ov18_02238880 - mov r2, r0 - mov r3, #0x78 - bl ov18_02246304 - ldr r1, _02237838 ; =0x0225332C - ldr r1, [r1, #8] - str r0, [r1, #0x38] - ldmia sp!, {r3, pc} -_02237824: - ldr r0, _02237838 ; =0x0225332C - mov r1, #0 - ldr r0, [r0, #8] - strb r1, [r0, #0x46] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02237838: .word Unk_ov18_0225332C -_0223783C: .word 0x094F2095 -_02237840: .word ov18_022387B8 -_02237844: .word ov18_02238880 - arm_func_end ov18_022375EC - - arm_func_start ov18_02237848 -ov18_02237848: ; 0x02237848 - stmfd sp!, {r3, lr} - bl ov18_0223D378 - mov r0, #8 - bl ov18_02244394 - ldr r0, _02237864 ; =ov18_02237868 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02237864: .word ov18_02237868 - arm_func_end ov18_02237848 - - arm_func_start ov18_02237868 -ov18_02237868: ; 0x02237868 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r1, #1 - mov r2, r1 - mov r0, #3 - mov r3, #8 - bl ov18_02244194 - mov r0, #3 - mov r1, #0 - mov r2, #0x1d - mov r3, #8 - bl ov18_02244194 - ldr r0, _022378B0 ; =ov18_022378B4 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022378B0: .word ov18_022378B4 - arm_func_end ov18_02237868 - - arm_func_start ov18_022378B4 -ov18_022378B4: ; 0x022378B4 - stmfd sp!, {r3, r4, r5, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - ldr r1, _02237B7C ; =0x0225332C - mov r0, #0 - ldr r1, [r1, #8] - ldr r1, [r1, #0] - bl ov18_022463CC - ldr r1, _02237B7C ; =0x0225332C - mov r0, #1 - ldr r1, [r1, #8] - ldr r1, [r1, #0x3c] - bl ov18_022463CC - ldr r4, _02237B7C ; =0x0225332C - mov r5, #0 -_02237908: - ldr r0, [r4, #8] - add r0, r0, r5, lsl #2 - ldr r0, [r0, #0x18] - bl ov18_02245B74 - add r5, r5, #1 - cmp r5, #7 - blt _02237908 - ldr r0, _02237B7C ; =0x0225332C - ldr r0, [r0, #8] - ldr r0, [r0, #0x34] - cmp r0, #0 - beq _0223793C - bl ov18_02245B74 -_0223793C: - bl ov18_0223D2F0 - mov r0, #0 - bl ov18_022448E0 - bl ov18_0222BAF4 - ldr r0, _02237B7C ; =0x0225332C - ldr r0, [r0, #8] - ldrb r0, [r0, #0x40] - cmp r0, #0xc - beq _02237964 - bl ov18_0222B668 -_02237964: - bl ov18_0223D064 - ldr r0, _02237B7C ; =0x0225332C - ldr r0, [r0, #8] - ldr r0, [r0, #8] - bl ov18_0224382C - ldr r4, _02237B7C ; =0x0225332C - mov r5, #0 -_02237980: - ldr r0, [r4, #8] - add r0, r0, r5, lsl #2 - ldr r0, [r0, #0xc] - bl ov18_0224382C - add r5, r5, #1 - cmp r5, #2 - blt _02237980 - ldr r0, _02237B80 ; =0x0224A2AC - ldr r1, _02237B84 ; =0x020C0160 - bl ov18_0222B700 - mov r0, #1 - mov r1, r0 - bl ov18_02244CD8 - mov r0, #0 - mov r1, #0x1d - bl ov18_02244CD8 - ldr r0, _02237B88 ; =0x04000010 - mov r1, #0 - str r1, [r0, #0] - sub r3, r0, #4 - str r1, [r0, #8] - ldrh r0, [r3] - ldr r2, _02237B7C ; =0x0225332C - and r0, r0, #0x43 - orr r0, r0, #0xe10 - strh r0, [r3] - ldr r0, [r2, #8] - ldrb r0, [r0, #0x40] - cmp r0, #0xd - addls pc, pc, r0, lsl #2 - b _02237B70 -_022379FC: ; jump table - b _02237A34 ; case 0 - b _02237A34 ; case 1 - b _02237B70 ; case 2 - b _02237B70 ; case 3 - b _02237A50 ; case 4 - b _02237A50 ; case 5 - b _02237A50 ; case 6 - b _02237B70 ; case 7 - b _02237B70 ; case 8 - b _02237A50 ; case 9 - b _02237A50 ; case 10 - b _02237A80 ; case 11 - b _02237B18 ; case 12 - b _02237B2C ; case 13 -_02237A34: - bl ov18_0222F710 - mov r0, #2 - mov r1, #0 - bl ov18_0222F6D4 - ldr r0, _02237B8C ; =ov18_02234DB4 - bl ov18_0222F6C4 - b _02237B70 -_02237A50: - sub r4, r0, #4 - cmp r0, #9 - subhs r4, r4, #2 - mov r0, #2 - mov r1, #0 - bl ov18_0222F6D4 - mov r0, r4 - mov r1, #0 - bl ov18_0222F710 - ldr r0, _02237B90 ; =ov18_022358F4 - bl ov18_0222F6C4 - b _02237B70 -_02237A80: - bl ov18_0223DDCC - mov r4, r0 - add r0, r4, #0xf0 - bl sub_020A2B94 - strb r0, [r4, #0xd0] - ldrb r0, [r4, #0xf5] - cmp r0, #0 - beq _02237AD8 - add r0, r4, #0xc0 - mov r1, #0 - mov r2, #4 - bl MI_CpuFill8 - add r0, r4, #0xc4 - mov r1, #0 - mov r2, #4 - bl MI_CpuFill8 - add r0, r4, #0xf0 - mov r1, #0 - mov r2, #4 - bl MI_CpuFill8 - mov r0, #0 - strb r0, [r4, #0xd0] -_02237AD8: - ldrb r0, [r4, #0xf6] - cmp r0, #0 - beq _02237AF4 - add r0, r4, #0xc8 - mov r1, #0 - mov r2, #8 - bl MI_CpuFill8 -_02237AF4: - mov r0, #2 - mov r1, #0 - bl ov18_0222F6D4 - mov r0, #0 - mov r1, r0 - bl ov18_0222F710 - ldr r0, _02237B94 ; =ov18_0223BBAC - bl ov18_0222F6C4 - b _02237B70 -_02237B18: - mov r0, r1 - bl ov18_0222F6D4 - ldr r0, _02237B98 ; =ov18_022390AC - bl ov18_0222F6C4 - b _02237B70 -_02237B2C: - ldrb r0, [r2, #1] - cmp r0, #0 - bne _02237B50 - mov r0, #2 - mov r1, #1 - bl ov18_0222F6D4 - ldr r0, _02237B9C ; =ov18_0223A6B4 - bl ov18_0222F6C4 - b _02237B70 -_02237B50: - bl ov18_0223DDCC - ldrb r0, [r0, #0xf4] - bl ov18_0223E1F0 - mov r0, #0 - mov r1, #1 - bl ov18_0222F6D4 - ldr r0, _02237BA0 ; =ov18_0223B3F4 - bl ov18_0222F6C4 -_02237B70: - ldr r0, _02237BA4 ; =0x02253334 - bl ov18_0224508C - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02237B7C: .word Unk_ov18_0225332C -_02237B80: .word Unk_ov18_0224A2AC -_02237B84: .word 0x020C0160 -_02237B88: .word 0x04000010 -_02237B8C: .word ov18_02234DB4 -_02237B90: .word ov18_022358F4 -_02237B94: .word ov18_0223BBAC -_02237B98: .word ov18_022390AC -_02237B9C: .word ov18_0223A6B4 -_02237BA0: .word ov18_0223B3F4 -_02237BA4: .word Unk_ov18_02253334 - arm_func_end ov18_022378B4 - - arm_func_start ov18_02237BA8 -ov18_02237BA8: ; 0x02237BA8 - stmfd sp!, {r4, r5, r6, lr} - ldr r0, _02237C60 ; =0x0225332C - mov r1, #0x1d - ldrh r0, [r0, #4] - bl FX_DivS32 - ldr r1, _02237C60 ; =0x0225332C - mov r4, r0 - ldr r0, [r1, #8] - mov r1, #0 - ldr r0, [r0, #0x14] - bl ov18_02244B5C - mov r5, r4 - mov r6, #0 -_02237BDC: - mov r0, r5 - mov r1, r6 - bl ov18_02237C68 - add r6, r6, #1 - cmp r6, #5 - add r5, r5, #1 - blt _02237BDC - ldr r0, _02237C60 ; =0x0225332C - ldr r1, _02237C64 ; =0x02249312 - mov r2, r4, lsl #1 - ldr r3, [r0, #8] - ldrh r0, [r1, r2] - ldr r2, [r3, #8] - mov r1, #0 - add r0, r2, r0, lsl #1 - mov r2, #0x1e - mov r3, #0x13 - bl ov18_0223D0A8 - mov r5, #0 -_02237C28: - mov r0, r4 - mov r1, r5 - bl ov18_02237E04 - add r5, r5, #1 - cmp r5, #5 - add r4, r4, #1 - blt _02237C28 - bl ov18_0223D090 - ldr r0, _02237C60 ; =0x0225332C - ldr r0, [r0, #8] - ldr r0, [r0, #0x14] - bl ov18_02244C08 - bl ov18_022382CC - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_02237C60: .word Unk_ov18_0225332C -_02237C64: .word Unk_ov18_02249312 - arm_func_end ov18_02237BA8 - - arm_func_start ov18_02237C68 -ov18_02237C68: ; 0x02237C68 - stmfd sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0x24 - mov r6, r0 - mov r5, r1 - bl ov18_0223DDCC - cmp r6, #8 - addls pc, pc, r6, lsl #2 - b _02237DFC -_02237C88: ; jump table - b _02237CAC ; case 0 - b _02237CC0 ; case 1 - b _02237DFC ; case 2 - b _02237D50 ; case 3 - b _02237D74 ; case 4 - b _02237D98 ; case 5 - b _02237DFC ; case 6 - b _02237DBC ; case 7 - b _02237DE0 ; case 8 -_02237CAC: - mov r1, r5 - add r0, r0, #0x40 - bl ov18_022380F0 - add sp, sp, #0x24 - ldmia sp!, {r3, r4, r5, r6, pc} -_02237CC0: - ldrb r1, [r0, #0xe6] - mov r1, r1, lsl #0x1e - mov r1, r1, lsr #0x1e - cmp r1, #3 - addls pc, pc, r1, lsl #2 - b _02237D04 -_02237CD8: ; jump table - b _02237CE8 ; case 0 - b _02237CF0 ; case 1 - b _02237CF8 ; case 2 - b _02237D00 ; case 3 -_02237CE8: - add sp, sp, #0x24 - ldmia sp!, {r3, r4, r5, r6, pc} -_02237CF0: - mov r4, #0xa - b _02237D04 -_02237CF8: - mov r4, #0x1a - b _02237D04 -_02237D00: - mov r4, #0x20 -_02237D04: - ldrb r0, [r0, #0xe6] - mov r1, #0 - mov r2, #0x21 - mov r0, r0, lsl #0x18 - mov r0, r0, lsr #0x1a - cmp r0, #1 - addeq r0, r4, r4, lsr #31 - moveq r4, r0, asr #1 - add r0, sp, #0 - bl MI_CpuFill8 - add r0, sp, #0 - mov r2, r4 - mov r1, #0x2a - bl memset - add r0, sp, #0 - mov r1, r5 - bl ov18_022380F0 - add sp, sp, #0x24 - ldmia sp!, {r3, r4, r5, r6, pc} -_02237D50: - ldrb r1, [r0, #0xf5] - cmp r1, #0 - addne sp, sp, #0x24 - ldmneia sp!, {r3, r4, r5, r6, pc} - mov r1, r5 - add r0, r0, #0xc0 - bl ov18_02238244 - add sp, sp, #0x24 - ldmia sp!, {r3, r4, r5, r6, pc} -_02237D74: - ldrb r1, [r0, #0xf5] - cmp r1, #0 - addne sp, sp, #0x24 - ldmneia sp!, {r3, r4, r5, r6, pc} - mov r1, r5 - add r0, r0, #0xf0 - bl ov18_02238244 - add sp, sp, #0x24 - ldmia sp!, {r3, r4, r5, r6, pc} -_02237D98: - ldrb r1, [r0, #0xf5] - cmp r1, #0 - addne sp, sp, #0x24 - ldmneia sp!, {r3, r4, r5, r6, pc} - mov r1, r5 - add r0, r0, #0xc4 - bl ov18_02238244 - add sp, sp, #0x24 - ldmia sp!, {r3, r4, r5, r6, pc} -_02237DBC: - ldrb r1, [r0, #0xf6] - cmp r1, #0 - addne sp, sp, #0x24 - ldmneia sp!, {r3, r4, r5, r6, pc} - mov r1, r5 - add r0, r0, #0xc8 - bl ov18_02238244 - add sp, sp, #0x24 - ldmia sp!, {r3, r4, r5, r6, pc} -_02237DE0: - ldrb r1, [r0, #0xf6] - cmp r1, #0 - addne sp, sp, #0x24 - ldmneia sp!, {r3, r4, r5, r6, pc} - mov r1, r5 - add r0, r0, #0xcc - bl ov18_02238244 -_02237DFC: - add sp, sp, #0x24 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end ov18_02237C68 - - arm_func_start ov18_02237E04 -ov18_02237E04: ; 0x02237E04 - stmfd sp!, {r4, r5, r6, lr} - mov r4, r0 - mov r6, r1 - bl ov18_0223DDCC - cmp r4, #8 - addls pc, pc, r4, lsl #2 - b _02237F38 -_02237E20: ; jump table - b _02237E44 ; case 0 - b _02237E44 ; case 1 - b _02237E60 ; case 2 - b _02237EAC ; case 3 - b _02237EAC ; case 4 - b _02237EAC ; case 5 - b _02237EC4 ; case 6 - b _02237F20 ; case 7 - b _02237F20 ; case 8 -_02237E44: - mov r4, #0 - mov r0, r4 - mov r5, r4 - bl ov18_02237F58 - cmp r0, #0 - moveq r5, #2 - b _02237F40 -_02237E60: - ldr r2, _02237F54 ; =0x0225332C - ldrb r0, [r0, #0xf5] - ldr r3, [r2, #8] - mov r1, #0 - ldrb r2, [r3, #4] - cmp r0, #0 - movne r4, #1 - movne r0, #4 - moveq r4, #2 - moveq r0, #3 - cmp r2, #0 - mov r5, r1 - ldrb r2, [r3, #5] - movne r5, #1 - cmp r2, #0 - movne r1, #1 - mov r2, r6 - bl ov18_02237FEC - b _02237F40 -_02237EAC: - ldrb r0, [r0, #0xf5] - mov r4, #0 - cmp r0, #0 - movne r5, #2 - moveq r5, r4 - b _02237F40 -_02237EC4: - ldrb r2, [r0, #0xf6] - mov r1, #0 - mov r5, r1 - cmp r2, #0 - movne r4, #1 - movne r0, #4 - bne _02237EF4 - ldrb r0, [r0, #0xf5] - mov r4, #2 - cmp r0, #0 - moveq r5, #2 - mov r0, #3 -_02237EF4: - ldr r2, _02237F54 ; =0x0225332C - ldr r3, [r2, #8] - ldrb r2, [r3, #6] - cmp r2, #0 - ldrb r2, [r3, #7] - movne r5, #1 - cmp r2, #0 - movne r1, #1 - mov r2, r6 - bl ov18_02237FEC - b _02237F40 -_02237F20: - ldrb r0, [r0, #0xf6] - mov r4, #0 - cmp r0, #0 - movne r5, #2 - moveq r5, r4 - b _02237F40 -_02237F38: - mov r4, #0 - mov r5, #2 -_02237F40: - mov r0, r4 - mov r1, r5 - mov r2, r6 - bl ov18_02237FEC - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_02237F54: .word Unk_ov18_0225332C - arm_func_end ov18_02237E04 - - arm_func_start ov18_02237F58 -ov18_02237F58: ; 0x02237F58 - stmfd sp!, {r4, lr} - mov r4, r0 - bl ov18_0223DDCC - cmp r4, #0xa - mov r1, #1 - addls pc, pc, r4, lsl #2 - b _02237FE4 -_02237F74: ; jump table - b _02237FB0 ; case 0 - b _02237FB0 ; case 1 - b _02237FE4 ; case 2 - b _02237FE4 ; case 3 - b _02237FC8 ; case 4 - b _02237FC8 ; case 5 - b _02237FC8 ; case 6 - b _02237FA0 ; case 7 - b _02237FE4 ; case 8 - b _02237FD8 ; case 9 - b _02237FD8 ; case 10 -_02237FA0: - ldrb r0, [r0, #0xf5] - cmp r0, #0 - moveq r1, #0 - b _02237FE4 -_02237FB0: - ldrb r0, [r0, #0xe7] - add r0, r0, #0xff - and r0, r0, #0xff - cmp r0, #1 - movls r1, #0 - b _02237FE4 -_02237FC8: - ldrb r0, [r0, #0xf5] - cmp r0, #0 - movne r1, #0 - b _02237FE4 -_02237FD8: - ldrb r0, [r0, #0xf6] - cmp r0, #0 - movne r1, #0 -_02237FE4: - mov r0, r1 - ldmia sp!, {r4, pc} - arm_func_end ov18_02237F58 - - arm_func_start ov18_02237FEC -ov18_02237FEC: ; 0x02237FEC - stmfd sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0xc - ldr r3, _022380E4 ; =0x0225332C - mov ip, #0xc0 - ldr r3, [r3, #8] - mov r6, r0 - mov r4, #0x8f - add r3, r3, #0x18 - sub r0, r6, #1 - mov lr, #0xcc - mov r5, r1 - strh lr, [sp] - strh ip, [sp, #2] - strh ip, [sp, #4] - strh r4, [sp, #6] - strh r4, [sp, #8] - cmp r0, #1 - add r4, r3, r2, lsl #2 - bhi _02238060 - mov r0, r2 - bl ov18_02238794 - cmp r0, #2 - ldrne r0, _022380E4 ; =0x0225332C - ldrne r0, [r0, #8] - addne r4, r0, #0x30 - bne _02238060 - ldr r0, _022380E4 ; =0x0225332C - ldr r0, [r0, #8] - add r4, r0, #0x2c -_02238060: - ldr r0, _022380E8 ; =0x02249302 - add r1, r6, r6, lsl #1 - add r0, r0, r1 - ldrb r1, [r5, r0] - ldr r2, [r4, #0] - cmp r1, #0 - beq _022380C8 - mov r0, #0 - bl ov18_02243ECC - add r0, sp, #0 - mov r1, r6, lsl #1 - ldrh r2, [r0, r1] - ldr r3, [r4, #0] - ldr r0, _022380EC ; =0xFE00FF00 - ldr r1, [r3, #0] - mov r2, r2, lsl #0x17 - and r0, r1, r0 - orr r0, r0, r2, lsr #7 - str r0, [r3, #0] - ldr r1, [r4, #0] - add sp, sp, #0xc - ldrh r0, [r1, #4] - bic r0, r0, #0xc00 - orr r0, r0, #0xc00 - strh r0, [r1, #4] - ldmia sp!, {r3, r4, r5, r6, pc} -_022380C8: - ldr r0, _022380EC ; =0xFE00FF00 - ldr r1, [r2, #0] - and r0, r1, r0 - orr r0, r0, #0x1000000 - str r0, [r2, #0] - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, pc} - ; .align 2, 0 -_022380E4: .word Unk_ov18_0225332C -_022380E8: .word Unk_ov18_02249302 -_022380EC: .word 0xFE00FF00 - arm_func_end ov18_02237FEC - - arm_func_start ov18_022380F0 -ov18_022380F0: ; 0x022380F0 - stmfd sp!, {r4, r5, r6, lr} - sub sp, sp, #0x30 - mov r6, r0 - mov r5, r1 - add r0, sp, #0xc - mov r1, #0 - mov r2, #0x22 - bl MI_CpuFill8 - mov r0, r6 - mov r1, #0x20 - bl ov18_02245E50 - mov r4, r0 - cmp r4, #0x10 - movle lr, r4 - movgt lr, #0x10 - cmp lr, #0 - mov ip, #0 - ble _02238160 - ldr r2, _0223823C ; =0x0000E01D - add r1, sp, #0xc -_02238140: - ldrb r3, [r6, ip] - mov r0, ip, lsl #1 - add ip, ip, #1 - cmp r3, #0x20 - streqh r2, [r1, r0] - strneh r3, [r1, r0] - cmp ip, lr - blt _02238140 -_02238160: - mov r0, #0x1d - mul r0, r5, r0 - mov r1, #8 - add r5, r0, #2 - str r1, [sp] - add r0, sp, #0xc - str r0, [sp, #4] - mov r1, #1 - str r1, [sp, #8] - ldr r0, _02238240 ; =0x0225332C - cmp r4, #0x10 - ldr r0, [r0, #8] - addle r5, r5, #5 - ldr r0, [r0, #0x14] - mov r2, r5 - mov r1, #0x48 - mov r3, #2 - bl ov18_022449F0 - cmp r4, #0x10 - addle sp, sp, #0x30 - ldmleia sp!, {r4, r5, r6, pc} - add r0, sp, #0xc - mov r1, #0 - mov r2, #0x22 - bl MI_CpuFill8 - sub r4, r4, #0x10 - cmp r4, #0 - mov ip, #0 - ble _02238200 - ldr r2, _0223823C ; =0x0000E01D - add r1, sp, #0xc -_022381DC: - add r0, r6, ip - ldrb r3, [r0, #0x10] - mov r0, ip, lsl #1 - add ip, ip, #1 - cmp r3, #0x20 - streqh r2, [r1, r0] - strneh r3, [r1, r0] - cmp ip, r4 - blt _022381DC -_02238200: - mov r1, #8 - str r1, [sp] - add r0, sp, #0xc - str r0, [sp, #4] - mov r1, #1 - str r1, [sp, #8] - ldr r0, _02238240 ; =0x0225332C - add r2, r5, #0xc - ldr r0, [r0, #8] - mov r1, #0x48 - ldr r0, [r0, #0x14] - mov r3, #2 - bl ov18_022449F0 - add sp, sp, #0x30 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_0223823C: .word 0x0000E01D -_02238240: .word Unk_ov18_0225332C - arm_func_end ov18_022380F0 - - arm_func_start ov18_02238244 -ov18_02238244: ; 0x02238244 - stmfd sp!, {r3, r4, lr} - sub sp, sp, #0x2c - mov ip, r0 - ldrb r2, [ip, #1] - mov r4, r1 - add r0, sp, #0xc - str r2, [sp] - ldrb r3, [ip, #2] - ldr r2, _022382C4 ; =0x0224A2C4 - mov r1, #0x10 - str r3, [sp, #4] - ldrb r3, [ip, #3] - str r3, [sp, #8] - ldrb r3, [ip] - bl swprintf - mov r2, #7 - mov r0, #0x1d - mul r1, r4, r0 - str r2, [sp] - add r0, sp, #0xc - str r0, [sp, #4] - mov r2, #1 - str r2, [sp, #8] - ldr r0, _022382C8 ; =0x0225332C - add r2, r1, #8 - ldr r0, [r0, #8] - mov r1, #0x5f - ldr r0, [r0, #0x14] - mov r3, #2 - bl ov18_022449F0 - add sp, sp, #0x2c - ldmia sp!, {r3, r4, pc} - ; .align 2, 0 -_022382C4: .word Unk_ov18_0224A2C4 -_022382C8: .word Unk_ov18_0225332C - arm_func_end ov18_02238244 - - arm_func_start ov18_022382CC -ov18_022382CC: ; 0x022382CC - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #8 - ldr r0, _022384D0 ; =0x0225332C - mov r1, #0x1d - ldrh r0, [r0, #4] - bl FX_DivS32 - ldr r1, _022384D0 ; =0x0225332C - mov r4, r0 - ldrh r0, [r1, #4] - mov r1, #0x1d - bl FX_ModS32 - ldr r1, _022384D0 ; =0x0225332C - rsb ip, r0, #0x34 - ldr r1, [r1, #8] - ldr r0, [r1, #0x34] - cmp r0, #0 - beq _0223834C - ldr r5, [r1, #0x34] - cmp r4, #0 - moveq r0, #0x26 - streq r0, [sp, #4] - movne r0, #0x100 - strne r0, [sp, #4] - ldr r2, [r5, #0] - ldr r0, _022384D4 ; =0xFE00FF00 - ldr r3, [sp, #4] - and r0, r2, r0 - and r1, ip, #0xff - mov r2, r3, lsl #0x17 - orr r0, r0, r1 - orr r0, r0, r2, lsr #7 - str r0, [r5, #0] -_0223834C: - ldr r8, _022384D0 ; =0x0225332C - ldr r6, _022384D8 ; =0x01FF0000 - ldr r7, _022384D4 ; =0xFE00FF00 - mov lr, ip - mov r5, #0 -_02238360: - ldr r0, [r8, #8] - and sb, lr, #0xff - add r0, r0, r5, lsl #2 - ldr r3, [r0, #0x18] - add r5, r5, #1 - ldr r1, [r3, #0] - cmp r5, #5 - mov r0, r1 - and r2, r1, r6 - and sl, r0, r7 - mov r2, r2, lsr #0x10 - mov r0, r2, lsl #0x17 - orr sb, sl, sb - orr r0, sb, r0, lsr #7 - str r0, [r3, #0] - and r0, r1, #0xff - add lr, lr, #0x1d - blt _02238360 - str r0, [sp] - str r2, [sp, #4] - cmp r4, #2 - bgt _02238410 - ldr r0, _022384D0 ; =0x0225332C - rsb r2, r4, #2 - ldr r0, [r0, #8] - mov r1, #0x1d - ldr r0, [r0, #0x2c] - mla r3, r2, r1, ip - ldr r2, [r0, #0] - ldr r1, _022384D8 ; =0x01FF0000 - and r6, r2, #0xff - and r1, r2, r1 - mov r7, r1, lsr #0x10 - mov r5, r2 - ldr r1, _022384D4 ; =0xFE00FF00 - and r2, r3, #0xff - and r1, r5, r1 - mov r3, r7, lsl #0x17 - orr r1, r1, r2 - orr r1, r1, r3, lsr #7 - str r7, [sp, #4] - str r6, [sp] - str r1, [r0, #0] - b _02238430 -_02238410: - ldr r1, _022384D0 ; =0x0225332C - ldr r0, _022384D4 ; =0xFE00FF00 - ldr r1, [r1, #8] - ldr r2, [r1, #0x2c] - ldr r1, [r2, #0] - and r0, r1, r0 - orr r0, r0, #0x1000000 - str r0, [r2, #0] -_02238430: - cmp r4, #2 - blt _02238498 - cmp r4, #6 - bgt _02238498 - ldr r0, _022384D0 ; =0x0225332C - rsb r2, r4, #6 - ldr r0, [r0, #8] - mov r1, #0x1d - ldr r0, [r0, #0x30] - mla r3, r2, r1, ip - ldr r2, [r0, #0] - ldr r1, _022384D8 ; =0x01FF0000 - and r5, r2, #0xff - and r1, r2, r1 - mov r6, r1, lsr #0x10 - mov r4, r2 - ldr r1, _022384D4 ; =0xFE00FF00 - and r2, r3, #0xff - and r1, r4, r1 - mov r3, r6, lsl #0x17 - orr r1, r1, r2 - orr r1, r1, r3, lsr #7 - str r6, [sp, #4] - str r5, [sp] - str r1, [r0, #0] - b _022384B8 -_02238498: - ldr r1, _022384D0 ; =0x0225332C - ldr r0, _022384D4 ; =0xFE00FF00 - ldr r1, [r1, #8] - ldr r2, [r1, #0x30] - ldr r1, [r2, #0] - and r0, r1, r0 - orr r0, r0, #0x1000000 - str r0, [r2, #0] -_022384B8: - ldr r0, _022384D0 ; =0x0225332C - mov r1, #1 - ldr r0, [r0, #8] - strb r1, [r0, #0x44] - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ; .align 2, 0 -_022384D0: .word Unk_ov18_0225332C -_022384D4: .word 0xFE00FF00 -_022384D8: .word 0x01FF0000 - arm_func_end ov18_022382CC - - arm_func_start ov18_022384DC -ov18_022384DC: ; 0x022384DC - stmfd sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - ldr r0, _0223873C ; =0x02249734 - bl ov18_022455B8 - cmp r0, #0 - addeq sp, sp, #8 - moveq r0, #0xe - ldmeqia sp!, {r4, r5, r6, pc} - ldr r0, _02238740 ; =0x0225332C - mov r1, #0x1d - ldrh r0, [r0, #4] - bl FX_DivS32 - ldr r1, _02238744 ; =0x022492D8 - mov r5, r0 - ldrh r3, [r1, #4] - ldrh r2, [r1, #6] - add r4, sp, #0 - strh r3, [sp] - strh r2, [sp, #2] - ldrh r2, [r1, #8] - ldrh r0, [r1, #0xa] - mov r6, #0 - strh r2, [sp, #4] - strh r0, [sp, #6] -_0223853C: - cmp r5, #2 - cmpne r5, #6 - beq _02238564 - mov r0, r4 - bl ov18_02245750 - cmp r0, #0 - ldrne r0, _02238748 ; =0x022493B8 - addne sp, sp, #8 - ldrneb r0, [r0, r5] - ldmneia sp!, {r4, r5, r6, pc} -_02238564: - ldrh r0, [sp, #2] - add r6, r6, #1 - cmp r6, #4 - add r0, r0, #0x1d - strh r0, [sp, #2] - add r5, r5, #1 - blt _0223853C - ldr r0, _02238740 ; =0x0225332C - mov r1, #0x1d - ldrh r0, [r0, #4] - bl FX_DivS32 - mov r3, #0 -_02238594: - cmp r0, #2 - bne _02238630 - ldr r1, _02238744 ; =0x022492D8 - mov r0, #0x1d - ldrh r5, [r1, #0x16] - ldrh r2, [r1, #0x14] - mul r4, r3, r0 - strh r2, [sp] - strh r5, [sp, #2] - ldrh r3, [r1, #0x18] - ldrh r2, [r1, #0x1a] - add r1, r5, r4 - add r0, sp, #0 - strh r3, [sp, #4] - strh r2, [sp, #6] - strh r1, [sp, #2] - bl ov18_02245750 - cmp r0, #0 - addne sp, sp, #8 - movne r0, #2 - ldmneia sp!, {r4, r5, r6, pc} - ldr r1, _02238744 ; =0x022492D8 - add r0, sp, #0 - ldrh r5, [r1, #0xe] - ldrh r2, [r1, #0xc] - strh r5, [sp, #2] - strh r2, [sp] - ldrh r3, [r1, #0x10] - ldrh r2, [r1, #0x12] - add r1, r5, r4 - strh r3, [sp, #4] - strh r2, [sp, #6] - strh r1, [sp, #2] - bl ov18_02245750 - cmp r0, #0 - beq _02238640 - add sp, sp, #8 - mov r0, #3 - ldmia sp!, {r4, r5, r6, pc} -_02238630: - add r3, r3, #1 - cmp r3, #4 - add r0, r0, #1 - blt _02238594 -_02238640: - ldr r0, _02238740 ; =0x0225332C - mov r1, #0x1d - ldrh r0, [r0, #4] - bl FX_DivS32 - mov r3, #0 -_02238654: - cmp r0, #6 - bne _022386F0 - ldr r1, _02238744 ; =0x022492D8 - mov r0, #0x1d - ldrh r5, [r1, #0x16] - ldrh r2, [r1, #0x14] - mul r4, r3, r0 - strh r2, [sp] - strh r5, [sp, #2] - ldrh r3, [r1, #0x18] - ldrh r2, [r1, #0x1a] - add r1, r5, r4 - add r0, sp, #0 - strh r3, [sp, #4] - strh r2, [sp, #6] - strh r1, [sp, #2] - bl ov18_02245750 - cmp r0, #0 - addne sp, sp, #8 - movne r0, #7 - ldmneia sp!, {r4, r5, r6, pc} - ldr r1, _02238744 ; =0x022492D8 - add r0, sp, #0 - ldrh r5, [r1, #0xe] - ldrh r2, [r1, #0xc] - strh r5, [sp, #2] - strh r2, [sp] - ldrh r3, [r1, #0x10] - ldrh r2, [r1, #0x12] - add r1, r5, r4 - strh r3, [sp, #4] - strh r2, [sp, #6] - strh r1, [sp, #2] - bl ov18_02245750 - cmp r0, #0 - beq _02238700 - add sp, sp, #8 - mov r0, #8 - ldmia sp!, {r4, r5, r6, pc} -_022386F0: - add r3, r3, #1 - cmp r3, #4 - add r0, r0, #1 - blt _02238654 -_02238700: - ldr r4, _0223874C ; =0x02249366 - mov r5, #0 -_02238708: - mov r0, r4 - bl ov18_022455B8 - cmp r0, #0 - addne sp, sp, #8 - addne r0, r5, #0xb - ldmneia sp!, {r4, r5, r6, pc} - add r5, r5, #1 - cmp r5, #3 - add r4, r4, #8 - blt _02238708 - mov r0, #0xe - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_0223873C: .word Unk_ov18_02249734 -_02238740: .word Unk_ov18_0225332C -_02238744: .word Unk_ov18_022492D8 -_02238748: .word Unk_ov18_022493B8 -_0223874C: .word Unk_ov18_02249366 - arm_func_end ov18_022384DC - - arm_func_start ov18_02238750 -ov18_02238750: ; 0x02238750 - stmfd sp!, {r4, lr} - ldr r1, _02238790 ; =0x0225332C - mov r4, r0 - ldrh r0, [r1, #4] - mov r1, #0x1d - bl FX_DivS32 - mov r1, #0 -_0223876C: - cmp r0, r4 - moveq r0, r1 - ldmeqia sp!, {r4, pc} - add r1, r1, #1 - cmp r1, #4 - add r0, r0, #1 - blt _0223876C - mvn r0, #0 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02238790: .word Unk_ov18_0225332C - arm_func_end ov18_02238750 - - arm_func_start ov18_02238794 -ov18_02238794: ; 0x02238794 - stmfd sp!, {r4, lr} - ldr r1, _022387B4 ; =0x0225332C - mov r4, r0 - ldrh r0, [r1, #4] - mov r1, #0x1d - bl FX_DivS32 - add r0, r0, r4 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_022387B4: .word Unk_ov18_0225332C - arm_func_end ov18_02238794 - - arm_func_start ov18_022387B8 -ov18_022387B8: ; 0x022387B8 - stmfd sp!, {r3, r4, r5, lr} - mov r4, r0 - bl ov18_0223D378 - bl ov18_0222BAF4 - ldr r0, _02238878 ; =0x0225332C - ldrh r1, [r0, #4] - cmp r1, #6 - subhi r1, r1, #6 - movls r1, #0 - strh r1, [r0, #4] - ldr r0, _02238878 ; =0x0225332C - mov r1, #0x1d - ldrh r0, [r0, #4] - bl FX_ModS32 - mov r5, r0 - cmp r5, #0x17 - bne _02238804 - bl ov18_02237BA8 - ldmia sp!, {r3, r4, r5, pc} -_02238804: - ble _02238820 - ldr r0, _02238878 ; =0x0225332C - rsb r1, r5, #0x1d - ldrh r2, [r0, #4] - mov r5, #0 - add r1, r2, r1 - strh r1, [r0, #4] -_02238820: - bl ov18_022382CC - cmp r5, #0 - ldmneia sp!, {r3, r4, r5, pc} - ldr r1, _02238878 ; =0x0225332C - mov r0, #0x37 - ldrh r1, [r1, #4] - ldr r2, _0223887C ; =0xE1FC780F - mul r3, r1, r0 - smull r1, r0, r2, r3 - add r0, r3, r0 - mov r1, r3, lsr #0x1f - add r0, r1, r0, asr #7 - bl ov18_0223D354 - bl ov18_0223D360 - bl ov18_02238A80 - ldr r0, _02238878 ; =0x0225332C - mov r1, r4 - ldr r2, [r0, #8] - mov r0, #0 - str r0, [r2, #0x38] - bl ov18_022463AC - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02238878: .word Unk_ov18_0225332C -_0223887C: .word 0xE1FC780F - arm_func_end ov18_022387B8 - - arm_func_start ov18_02238880 -ov18_02238880: ; 0x02238880 - stmfd sp!, {r4, lr} - mov r4, r0 - bl ov18_0223D378 - bl ov18_0222BAF4 - ldr r0, _0223891C ; =0x0225332C - mov r1, #0x1d - ldrh r2, [r0, #4] - add r2, r2, #6 - strh r2, [r0, #4] - ldrh r0, [r0, #4] - bl FX_ModS32 - cmp r0, #6 - blt _022388BC - bl ov18_022382CC - ldmia sp!, {r4, pc} -_022388BC: - ldr r1, _0223891C ; =0x0225332C - ldrh r2, [r1, #4] - sub r0, r2, r0 - strh r0, [r1, #4] - bl ov18_02237BA8 - ldr r1, _0223891C ; =0x0225332C - mov r0, #0x37 - ldrh r1, [r1, #4] - ldr r2, _02238920 ; =0xE1FC780F - mul r3, r1, r0 - smull r1, r0, r2, r3 - add r0, r3, r0 - mov r1, r3, lsr #0x1f - add r0, r1, r0, asr #7 - bl ov18_0223D354 - bl ov18_0223D360 - bl ov18_02238A80 - ldr r0, _0223891C ; =0x0225332C - mov r1, r4 - ldr r2, [r0, #8] - mov r0, #0 - str r0, [r2, #0x38] - bl ov18_022463AC - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0223891C: .word Unk_ov18_0225332C -_02238920: .word 0xE1FC780F - arm_func_end ov18_02238880 - - arm_func_start ov18_02238924 -ov18_02238924: ; 0x02238924 - stmfd sp!, {r4, lr} - ldr r0, _02238998 ; =0x0225332C - ldr r1, [r0, #8] - ldrb r1, [r1, #0x44] - cmp r1, #0 - ldmeqia sp!, {r4, pc} - ldrh r0, [r0, #4] - mov r1, #0x1d - bl FX_DivS32 - ldr r1, _02238998 ; =0x0225332C - mov r4, r0 - ldrh r0, [r1, #4] - mov r1, #0x1d - bl FX_ModS32 - ldr r2, _0223899C ; =0x022493C4 - ldr r1, _022389A0 ; =0x01FF0000 - sub ip, r0, #0x33 - ldrb r0, [r2, r4] - ldr r2, _022389A4 ; =0x04000010 - and r3, r1, ip, lsl #16 - add r0, ip, r0 - str r3, [r2, #0] - and r1, r1, r0, lsl #16 - ldr r0, _02238998 ; =0x0225332C - str r1, [r2, #8] - ldr r0, [r0, #8] - mov r1, #0 - strb r1, [r0, #0x44] - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02238998: .word Unk_ov18_0225332C -_0223899C: .word Unk_ov18_022493C4 -_022389A0: .word 0x01FF0000 -_022389A4: .word 0x04000010 - arm_func_end ov18_02238924 - - arm_func_start ov18_022389A8 -ov18_022389A8: ; 0x022389A8 - stmfd sp!, {r3, lr} - sub sp, sp, #0x18 - ldr ip, _02238A6C ; =0x022492F4 - add r3, sp, #8 - mov r2, #7 -_022389BC: - ldrb r1, [ip] - ldrb r0, [ip, #1] - add ip, ip, #2 - strb r1, [r3] - strb r0, [r3, #1] - add r3, r3, #2 - subs r2, r2, #1 - bne _022389BC - ldr r0, _02238A70 ; =0x0225332C - add r1, sp, #8 - ldrb r2, [r0] - ldrb r2, [r1, r2] - cmp r2, #3 - blt _02238A20 - mov r3, r2, lsl #3 - ldr r1, _02238A74 ; =0x0224937E - ldr r2, _02238A78 ; =0x02249382 - ldr r0, _02238A7C ; =0x02249380 - ldrh r1, [r1, r3] - ldrh r2, [r2, r3] - ldrh r3, [r0, r3] - mov r0, #3 - bl ov18_0222B948 - add sp, sp, #0x18 - ldmia sp!, {r3, pc} -_02238A20: - ldr r1, _02238A74 ; =0x0224937E - mov lr, r2, lsl #3 - add ip, r1, r2, lsl #3 - ldrb r2, [r0, #2] - ldrh r3, [ip, #2] - mov r0, #0x1d - ldrh r1, [r1, lr] - mla r0, r2, r0, r3 - strh r0, [sp, #2] - ldrh r2, [ip, #4] - ldrh ip, [ip, #6] - ldrh r3, [sp, #2] - mov r0, #1 - strh r1, [sp] - strh r2, [sp, #4] - strh ip, [sp, #6] - bl ov18_0222B948 - add sp, sp, #0x18 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02238A6C: .word Unk_ov18_022492F4 -_02238A70: .word Unk_ov18_0225332C -_02238A74: .word Unk_ov18_0224937E -_02238A78: .word 0x02249382 -_02238A7C: .word 0x02249380 - arm_func_end ov18_022389A8 - - arm_func_start ov18_02238A80 -ov18_02238A80: ; 0x02238A80 - stmfd sp!, {r4, lr} - ldr r0, _02238B28 ; =0x0225332C - ldrb r0, [r0] - add r0, r0, #0xf5 - and r0, r0, #0xff - cmp r0, #2 - bhi _02238AA4 - bl ov18_022389A8 - ldmia sp!, {r4, pc} -_02238AA4: - bl ov18_0223DDCC - ldr r1, _02238B28 ; =0x0225332C - mov r4, r0 - ldrh r0, [r1, #4] - mov r1, #0x1d - bl FX_DivS32 - ldr r1, _02238B28 ; =0x0225332C - ldrb r2, [r1, #2] - add r2, r2, r0 - cmp r2, #2 - beq _02238ADC - cmp r2, #6 - beq _02238AF8 - b _02238B14 -_02238ADC: - ldrb r0, [r4, #0xf5] - cmp r0, #0 - movne r0, #2 - strneb r0, [r1] - moveq r0, #3 - streqb r0, [r1] - b _02238B20 -_02238AF8: - ldrb r0, [r4, #0xf6] - cmp r0, #0 - movne r0, #7 - strneb r0, [r1] - moveq r0, #8 - streqb r0, [r1] - b _02238B20 -_02238B14: - ldr r0, _02238B2C ; =0x022493B8 - ldrb r0, [r0, r2] - strb r0, [r1] -_02238B20: - bl ov18_022389A8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02238B28: .word Unk_ov18_0225332C -_02238B2C: .word Unk_ov18_022493B8 - arm_func_end ov18_02238A80 - - arm_func_start ov18_02238B30 -ov18_02238B30: ; 0x02238B30 - stmfd sp!, {r3, lr} - ldr r1, _02238B58 ; =0x0225332C - ldr r2, _02238B5C ; =0x022493D0 - strb r0, [r1] - ldrb r0, [r2, r0] - bl ov18_02238750 - ldr r1, _02238B58 ; =0x0225332C - strb r0, [r1, #2] - bl ov18_022389A8 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02238B58: .word Unk_ov18_0225332C -_02238B5C: .word Unk_ov18_022493D0 - arm_func_end ov18_02238B30 - - arm_func_start ov18_02238B60 -ov18_02238B60: ; 0x02238B60 - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - bl ov18_0223DDCC - ldr r1, _02238E44 ; =0x0225332C - mov r4, #0 - ldrb r2, [r1] - cmp r2, #8 - ldreqb r0, [r0, #0xf5] - cmpeq r0, #0 - bne _02238B94 - cmp r5, #0 - cmpne r5, #2 - ldmeqia sp!, {r3, r4, r5, pc} -_02238B94: - cmp r2, #0 - bgt _02238BA4 - beq _02238BC4 - b _02238D28 -_02238BA4: - sub r0, r2, #0xa - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _02238D28 -_02238BB4: ; jump table - b _02238BFC ; case 0 - b _02238C38 ; case 1 - b _02238CA0 ; case 2 - b _02238CA0 ; case 3 -_02238BC4: - cmp r5, #1 - bne _02238BDC - ldr r0, _02238E44 ; =0x0225332C - mov r1, #0xb - strb r1, [r0] - b _02238E24 -_02238BDC: - cmp r5, #3 - movne r4, #2 - bne _02238E24 - ldr r0, _02238E44 ; =0x0225332C - ldrb r1, [r0, #2] - add r1, r1, #1 - strb r1, [r0, #2] - b _02238E24 -_02238BFC: - cmp r5, #1 - bne _02238C18 - ldr r0, _02238E44 ; =0x0225332C - ldrb r1, [r0, #2] - sub r1, r1, #1 - strb r1, [r0, #2] - b _02238E24 -_02238C18: - cmp r5, #3 - movne r4, #2 - bne _02238E24 - ldr r0, _02238E44 ; =0x0225332C - ldr r1, [r0, #8] - ldrb r1, [r1, #0x42] - strb r1, [r0] - b _02238E24 -_02238C38: - cmp r5, #1 - bne _02238C70 - ldr r0, _02238E44 ; =0x0225332C - ldr r0, [r0, #8] - ldrb r0, [r0, #0x47] - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, #9 - bl ov18_0223E994 - ldr r0, _02238E44 ; =0x0225332C - mov r1, #1 - ldr r0, [r0, #8] - strb r1, [r0, #0x47] - ldmia sp!, {r3, r4, r5, pc} -_02238C70: - cmp r5, #3 - movne r4, #2 - bne _02238E24 - ldr r0, _02238E44 ; =0x0225332C - mov r1, #0 - strb r1, [r0] - strb r1, [r0, #2] - strh r1, [r0, #4] - bl ov18_02237BA8 - mov r0, #0 - bl ov18_0223D354 - b _02238E24 -_02238CA0: - ldr r0, _02238E44 ; =0x0225332C - cmp r5, #1 - ldr r1, [r0, #8] - strb r2, [r1, #0x42] - bne _02238CDC - mov r1, #0xa - strb r1, [r0] - mov r1, #3 - strb r1, [r0, #2] - mov r1, #0x91 - strh r1, [r0, #4] - bl ov18_02237BA8 - mov r0, #0x37 - bl ov18_0223D354 - b _02238E24 -_02238CDC: - cmp r5, #3 - bne _02238D10 - ldr r0, [r0, #8] - ldrb r0, [r0, #0x47] - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, #9 - bl ov18_0223E994 - ldr r0, _02238E44 ; =0x0225332C - mov r1, #1 - ldr r0, [r0, #8] - strb r1, [r0, #0x47] - ldmia sp!, {r3, r4, r5, pc} -_02238D10: - cmp r2, #0xc - moveq r1, #0xd - streqb r1, [r0] - movne r1, #0xc - strneb r1, [r0] - b _02238E24 -_02238D28: - cmp r5, #1 - bne _02238D74 - ldr r0, _02238E44 ; =0x0225332C - ldrb r1, [r0, #2] - cmp r1, #0 - subne r1, r1, #1 - strneb r1, [r0, #2] - bne _02238E24 - mov r0, #0x13 - bl ov18_0223E994 - mov r0, #0 - ldr r1, _02238E48 ; =ov18_022387B8 - mov r2, r0 - mov r3, #0x78 - bl ov18_02246304 - ldr r1, _02238E44 ; =0x0225332C - ldr r1, [r1, #8] - str r0, [r1, #0x38] - ldmia sp!, {r3, r4, r5, pc} -_02238D74: - cmp r5, #3 - bne _02238DC0 - ldr r0, _02238E44 ; =0x0225332C - ldrb r1, [r0, #2] - cmp r1, #3 - addlo r1, r1, #1 - strlob r1, [r0, #2] - blo _02238E24 - mov r0, #0x13 - bl ov18_0223E994 - mov r0, #0 - ldr r1, _02238E4C ; =ov18_02238880 - mov r2, r0 - mov r3, #0x78 - bl ov18_02246304 - ldr r1, _02238E44 ; =0x0225332C - ldr r1, [r1, #8] - str r0, [r1, #0x38] - ldmia sp!, {r3, r4, r5, pc} -_02238DC0: - cmp r2, #2 - mov r4, #2 - bne _02238DDC - ldr r0, _02238E44 ; =0x0225332C - mov r1, #3 - strb r1, [r0] - b _02238E18 -_02238DDC: - cmp r2, #3 - ldreq r0, _02238E44 ; =0x0225332C - streqb r4, [r0] - beq _02238E18 - cmp r2, #7 - bne _02238E04 - ldr r0, _02238E44 ; =0x0225332C - mov r1, #8 - strb r1, [r0] - b _02238E18 -_02238E04: - cmp r2, #8 - bne _02238E24 - ldr r0, _02238E44 ; =0x0225332C - mov r1, #7 - strb r1, [r0] -_02238E18: - mov r0, #8 - bl ov18_0223E994 - bl ov18_022389A8 -_02238E24: - cmp r4, #2 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, #8 - bl ov18_0223E994 - cmp r4, #0 - ldmneia sp!, {r3, r4, r5, pc} - bl ov18_02238A80 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02238E44: .word Unk_ov18_0225332C -_02238E48: .word ov18_022387B8 -_02238E4C: .word ov18_02238880 - arm_func_end ov18_02238B60 - - arm_func_start ov18_02238E50 -ov18_02238E50: ; 0x02238E50 - ldr r0, _02238E78 ; =0x0225332C - ldr r1, _02238E7C ; =0x022492D4 - ldrb r2, [r0] - ldr r0, [r0, #8] - ldr ip, _02238E80 ; =ov18_0223D154 - sub r2, r2, #0xb - ldrb r1, [r1, r2] - ldr r0, [r0, #0x10] - mov r2, r1 - bx ip - ; .align 2, 0 -_02238E78: .word Unk_ov18_0225332C -_02238E7C: .word Unk_ov18_022492D4 -_02238E80: .word ov18_0223D154 - arm_func_end ov18_02238E50 - - arm_func_start ov18_02238E84 -ov18_02238E84: ; 0x02238E84 - stmfd sp!, {r3, r4, r5, lr} - ldr r5, _02238ED4 ; =0x0225332C - mov r4, #0 -_02238E90: - ldr r0, [r5, #8] - add r1, r0, r4 - ldrb r0, [r1, #4] - cmp r0, #0 - beq _02238EC4 - sub r0, r0, #1 - strb r0, [r1, #4] - ldr r0, [r5, #8] - add r0, r0, r4 - ldrb r0, [r0, #4] - cmp r0, #0 - bne _02238EC4 - bl ov18_02237BA8 -_02238EC4: - add r4, r4, #1 - cmp r4, #4 - blt _02238E90 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02238ED4: .word Unk_ov18_0225332C - arm_func_end ov18_02238E84 - - arm_func_start ov18_02238ED8 -ov18_02238ED8: ; 0x02238ED8 - stmdb sp!, {r3} - sub sp, sp, #4 - ldr r1, _02238F94 ; =0x022492D8 - ldr r0, _02238F98 ; =0x0225332C - ldrb r3, [r1] - ldrb r2, [r1, #1] - ldrb ip, [r0] - strb r3, [sp] - strb r2, [sp, #1] - ldrb r2, [r1, #2] - ldrb r0, [r1, #3] - add r1, sp, #0 - mov r3, #0 - strb r2, [sp, #2] - strb r0, [sp, #3] -_02238F14: - ldrb r0, [r1] - cmp ip, r0 - bne _02238F78 - ldr r0, _02238F98 ; =0x0225332C - mov r2, #0x14 - ldr r1, [r0, #8] - tst r3, #1 - add r1, r1, r3 - strb r2, [r1, #4] - ldr r1, [r0, #8] - beq _02238F5C - sub r0, r3, #1 - add r0, r1, r0 - mov r1, #0 - strb r1, [r0, #4] - add sp, sp, #4 - ldmia sp!, {r3} - bx lr -_02238F5C: - add r0, r3, #1 - add r0, r1, r0 - mov r1, #0 - strb r1, [r0, #4] - add sp, sp, #4 - ldmia sp!, {r3} - bx lr -_02238F78: - add r3, r3, #1 - cmp r3, #4 - add r1, r1, #1 - blt _02238F14 - add sp, sp, #4 - ldmia sp!, {r3} - bx lr - ; .align 2, 0 -_02238F94: .word Unk_ov18_022492D8 -_02238F98: .word Unk_ov18_0225332C - arm_func_end ov18_02238ED8 - - arm_func_start ov18_02238F9C -ov18_02238F9C: ; 0x02238F9C - stmfd sp!, {r4, lr} - bl ov18_0223DDCC - mov r4, r0 - ldrb r0, [r4, #0x40] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldrb r0, [r4, #0xf6] - cmp r0, #0 - bne _02238FE8 - add r0, r4, #0xc8 - bl sub_020A2CAC - cmp r0, #0 - bne _02238FE8 - add r0, r4, #0xcc - bl sub_020A2CAC - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} -_02238FE8: - ldrb r0, [r4, #0xf5] - cmp r0, #0 - bne _02239034 - add r0, r4, #0xc0 - bl sub_020A2CAC - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - add r0, r4, #0xc4 - bl sub_020A2CAC - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - add r0, r4, #0xc0 - add r1, r4, #0xf0 - bl sub_020A2C30 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} -_02239034: - mov r0, #1 - ldmia sp!, {r4, pc} - arm_func_end ov18_02238F9C - - arm_func_start ov18_0223903C -ov18_0223903C: ; 0x0223903C - stmfd sp!, {r3, lr} - bl ov18_0223FFB8 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #6 - bl ov18_0223E994 - bl ov18_0223FF74 - ldr r0, _02239074 ; =0x0225332C - ldr r0, [r0, #8] - ldr r0, [r0, #0xc] - bl ov18_0223D1BC - ldr r0, _02239078 ; =ov18_0223907C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02239074: .word Unk_ov18_0225332C -_02239078: .word ov18_0223907C - arm_func_end ov18_0223903C - - arm_func_start ov18_0223907C -ov18_0223907C: ; 0x0223907C - stmfd sp!, {r3, lr} - bl ov18_0223FFCC - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _02239098 ; =ov18_022370B4 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02239098: .word ov18_022370B4 - arm_func_end ov18_0223907C - - arm_func_start ov18_0223909C -ov18_0223909C: ; 0x0223909C - ldr r1, _022390A8 ; =0x0225332C - strb r0, [r1, #1] - bx lr - ; .align 2, 0 -_022390A8: .word Unk_ov18_0225332C - arm_func_end ov18_0223909C - - .rodata - - - .global Unk_ov18_022492D4 -Unk_ov18_022492D4: ; 0x022492D4 - .byte 0x6, 0x8, 0x7 - .space 0x1 - - .global Unk_ov18_022492D8 -Unk_ov18_022492D8: ; 0x022492D8 - .byte 0x2, 0x3, 0x7, 0x8 - - .global Unk_ov18_022492DC -Unk_ov18_022492DC: ; 0x022492DC - .short 0xCC, 0x34, 0x1C, 0x18 - - .global Unk_ov18_022492E4 -Unk_ov18_022492E4: ; 0x022492E4 - .short 0x8F, 0x34, 0x2C, 0x18 - - .global Unk_ov18_022492EC -Unk_ov18_022492EC: ; 0x022492EC - .short 0xC0, 0x34, 0x2C, 0x18 - - .global Unk_ov18_022492F4 -Unk_ov18_022492F4: ; 0x022492F4 - .byte 0x0, 0x0, 0x1, 0x2, 0x0, 0x0, 0x0, 0x1, 0x2, 0x0, 0x0, 0x3, 0x4, 0x5 - - .global Unk_ov18_02249302 -Unk_ov18_02249302: ; 0x02249302 - .byte 0x0, 0x29, 0x2C, 0x52, 0x53, 0x30, 0x0, 0x2A, 0x30, 0x54, 0x55, 0x0, 0x0, 0x2B - .space 0x2 - - .global Unk_ov18_02249312 -Unk_ov18_02249312: ; 0x02249312 - .short 0x0, 0x60, 0xE0, 0x140, 0x1C0, 0x240, 0x2A0, 0x320, 0x3A0 - - .global Unk_ov18_02249324 -Unk_ov18_02249324: ; 0x02249324 - .asciz "char/ybBgStep2.ncl.l" - - .global Unk_ov18_02249339 -Unk_ov18_02249339: ; 0x02249339 - .asciz "char/ybBgStep21.ncl.l" - - .global Unk_ov18_0224934F -Unk_ov18_0224934F: ; 0x0224934F - .asciz "char/jb3ListBack.nsc.l" - - .global Unk_ov18_02249366 -Unk_ov18_02249366: ; 0x02249366 - .short 0x84, 0x1B, 0xFC, 0x2C, 0x84, 0xAC, 0xFC - .short 0xBD, 0x4, 0xAC, 0x7C, 0xBD - - .global Unk_ov18_0224937E -Unk_ov18_0224937E: ; 0x0224937E - .short 0xC8, 0x31, 0xE0 - .short 0x4D, 0xBC, 0x31, 0xE0, 0x4D, 0x8B, 0x31, 0xAF - .short 0x4D, 0x82, 0x18, 0xEE, 0x2C, 0x82, 0xA9, 0xEE - .short 0xBD, 0x2, 0xA9, 0x6E, 0xBD, 0x0 - - .global Unk_ov18_022493B0 -Unk_ov18_022493B0: ; 0x022493B0 - .byte 0xFF, 0x23, 0x27, 0xFF - .byte 0x23, 0x2F, 0xFF, 0x0 - - .global Unk_ov18_022493B8 -Unk_ov18_022493B8: ; 0x022493B8 - .byte 0x0, 0x1, 0xE, 0x4, 0x5, 0x6, 0xE, 0x9, 0xA, 0x0 - .space 0x2 - - .global Unk_ov18_022493C4 -Unk_ov18_022493C4: ; 0x022493C4 - .byte 0x0, 0x5, 0x2, 0x7, 0x4, 0x1, 0x6, 0x3 - .space 0x4 - - .global Unk_ov18_022493D0 -Unk_ov18_022493D0: ; 0x022493D0 - .byte 0x0, 0x1, 0x2, 0x2, 0x3, 0x4, 0x5, 0x6, 0x6, 0x7, 0x8 - .space 0x1 - - - - .data - - - .global Unk_ov18_0224A254 -Unk_ov18_0224A254: ; 0x0224A254 - .ascii "char/ybObjKb.ncl.l" - .space 0x2 - - .global Unk_ov18_0224A268 -Unk_ov18_0224A268: ; 0x0224A268 - .ascii "char/jbBgStep2.ncg.l" - .space 0x4 - - .global Unk_ov18_0224A280 -Unk_ov18_0224A280: ; 0x0224A280 - .asciz "char/jbBgStep21.ncg.l" - .space 0x2 - - .global Unk_ov18_0224A298 -Unk_ov18_0224A298: ; 0x0224A298 - .ascii "char/jb3List.nsc.l" - .space 0x2 - - .global Unk_ov18_0224A2AC -Unk_ov18_0224A2AC: ; 0x0224A2AC - .ascii "char/ybObjMain.ncl.l" - .space 0x4 - - .global Unk_ov18_0224A2C4 -Unk_ov18_0224A2C4: ; 0x0224A2C4 - .short 0x25, 0x33, 0x64, 0x2E, 0x25, 0x33 - .short 0x64, 0x2E, 0x25, 0x33, 0x64, 0x2E, 0x25, 0x33 - .short 0x64, 0x0 - - - - .bss - - - .global Unk_ov18_0225332C -Unk_ov18_0225332C: ; 0x0225332C - .space 0x1 - - .global Unk_ov18_0225332D -Unk_ov18_0225332D: ; 0x0225332D - .space 0x1 - - .global Unk_ov18_0225332E -Unk_ov18_0225332E: ; 0x0225332E - .space 0x2 - - .global Unk_ov18_02253330 -Unk_ov18_02253330: ; 0x02253330 - .space 0x4 - - .global Unk_ov18_02253334 -Unk_ov18_02253334: ; 0x02253334 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/scenesetlistsave.s b/subprojects/NitroDWC/libraries/util/asm/scenesetlistsave.s deleted file mode 100644 index 99b26dbbea..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/scenesetlistsave.s +++ /dev/null @@ -1,205 +0,0 @@ - .include "macros/function.inc" - .include "include/scenesetlistsave.inc" - - - - .text - - - arm_func_start ov18_022390AC -ov18_022390AC: ; 0x022390AC - stmfd sp!, {r3, lr} - bl ov18_022390CC - bl ov18_0222BC1C - bl ov18_0223E2D0 - ldr r0, _022390C8 ; =ov18_02239160 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022390C8: .word ov18_02239160 - arm_func_end ov18_022390AC - - arm_func_start ov18_022390CC -ov18_022390CC: ; 0x022390CC - stmfd sp!, {r3, lr} - ldr r0, _02239140 ; =0x0224A2E4 - ldr r1, _02239144 ; =0x020C07EC - bl ov18_0222B700 - ldr r0, _02239148 ; =0x0224A2FC - ldr r1, _0223914C ; =GX_LoadBGPltt - bl ov18_0222B700 - ldr r0, _02239150 ; =0x0224A314 - ldr r1, _02239154 ; =GX_LoadBG2Scr - bl ov18_0222B700 - ldr r2, _02239158 ; =0x04001008 - ldr r1, _0223915C ; =0x0400000A - ldrh r0, [r2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2] - ldrh r0, [r2, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2, #2] - ldrh r0, [r1] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1] - ldrh r0, [r1, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1, #2] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02239140: .word Unk_ov18_0224A2E4 -_02239144: .word 0x020C07EC -_02239148: .word Unk_ov18_0224A2FC -_0223914C: .word GX_LoadBGPltt -_02239150: .word Unk_ov18_0224A314 -_02239154: .word GX_LoadBG2Scr -_02239158: .word 0x04001008 -_0223915C: .word 0x0400000A - arm_func_end ov18_022390CC - - arm_func_start ov18_02239160 -ov18_02239160: ; 0x02239160 - stmfd sp!, {r3, lr} - mov r1, #1 - mov r2, r1 - mov r0, #2 - mov r3, #8 - bl ov18_02244194 - mov r0, #2 - mov r1, #0 - mov r2, #0x14 - mov r3, #8 - bl ov18_02244194 - mov r0, #1 - mov r1, r0 - bl ov18_02244C84 - mov r0, #0 - mov r1, #0x14 - bl ov18_02244C84 - ldr r0, _022391B0 ; =ov18_022391B4 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022391B0: .word ov18_022391B4 - arm_func_end ov18_02239160 - - arm_func_start ov18_022391B4 -ov18_022391B4: ; 0x022391B4 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r2, #1 - mov ip, #0 - sub r3, r2, #2 - mov r0, #0x44 - mov r1, #5 - str ip, [sp] - bl ov18_0223FC48 - ldr r0, _02239200 ; =ov18_02239204 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02239200: .word ov18_02239204 - arm_func_end ov18_022391B4 - - arm_func_start ov18_02239204 -ov18_02239204: ; 0x02239204 - stmfd sp!, {r3, lr} - bl ov18_0223922C - bl ov18_02239230 - bl ov18_0223FFCC - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _02239228 ; =ov18_02239234 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02239228: .word ov18_02239234 - arm_func_end ov18_02239204 - - arm_func_start ov18_0223922C -ov18_0223922C: ; 0x0223922C - bx lr - arm_func_end ov18_0223922C - - arm_func_start ov18_02239230 -ov18_02239230: ; 0x02239230 - bx lr - arm_func_end ov18_02239230 - - arm_func_start ov18_02239234 -ov18_02239234: ; 0x02239234 - stmfd sp!, {r3, lr} - mov r1, #1 - mov r2, r1 - mov r0, #3 - mov r3, #8 - bl ov18_02244194 - mov r0, #3 - mov r1, #0 - mov r2, #0x14 - mov r3, #8 - bl ov18_02244194 - ldr r0, _0223926C ; =ov18_02239270 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223926C: .word ov18_02239270 - arm_func_end ov18_02239234 - - arm_func_start ov18_02239270 -ov18_02239270: ; 0x02239270 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_0222B668 - mov r0, #1 - mov r1, r0 - bl ov18_02244CD8 - mov r0, #0 - mov r1, #0x14 - bl ov18_02244CD8 - mov r0, #2 - mov r1, #1 - bl ov18_0222F6D4 - ldr r0, _022392C8 ; =ov18_0223A6B4 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022392C8: .word ov18_0223A6B4 - arm_func_end ov18_02239270 - - .data - - - .global Unk_ov18_0224A2E4 -Unk_ov18_0224A2E4: ; 0x0224A2E4 - .ascii "char/jbBgStep3.ncg.l" - .space 0x4 - - .global Unk_ov18_0224A2FC -Unk_ov18_0224A2FC: ; 0x0224A2FC - .ascii "char/ybBgStep3.ncl.l" - .space 0x4 - - .global Unk_ov18_0224A314 -Unk_ov18_0224A314: ; 0x0224A314 - .ascii "char/xb4None.nsc.l" - .space 0x2 - diff --git a/subprojects/NitroDWC/libraries/util/asm/scenesetrakubutton.s b/subprojects/NitroDWC/libraries/util/asm/scenesetrakubutton.s deleted file mode 100644 index 950ddf8082..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/scenesetrakubutton.s +++ /dev/null @@ -1,740 +0,0 @@ - .include "macros/function.inc" - .include "include/scenesetrakubutton.inc" - - - - .text - - - arm_func_start ov18_022392CC -ov18_022392CC: ; 0x022392CC - ldr r0, _022392E8 ; =0x027FFFA8 - ldrh r0, [r0] - and r0, r0, #0x8000 - movs r0, r0, asr #0xf - movne r0, #1 - moveq r0, #0 - bx lr - ; .align 2, 0 -_022392E8: .word 0x027FFFA8 - arm_func_end ov18_022392CC - - arm_func_start ov18_022392EC -ov18_022392EC: ; 0x022392EC - stmfd sp!, {r3, lr} - ldr r0, _02239320 ; =0x02253338 - mov r1, #0 - strb r1, [r0] - bl ov18_02239328 - bl ov18_0222BC1C - mov r0, #0x25 - bl ov18_0222B7C8 - mov r0, #1 - bl ov18_0222AD34 - ldr r0, _02239324 ; =ov18_022393A8 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02239320: .word Unk_ov18_02253338 -_02239324: .word ov18_022393A8 - arm_func_end ov18_022392EC - - arm_func_start ov18_02239328 -ov18_02239328: ; 0x02239328 - stmfd sp!, {r3, lr} - ldr r0, _02239398 ; =0x0224A328 - ldr r1, _0223939C ; =GX_LoadBG2Scr - bl ov18_0222B700 - ldr r3, _022393A0 ; =0x04001008 - ldr r1, _022393A4 ; =0x0400000A - ldrh r0, [r3] - sub r2, r3, #0x1000 - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3] - ldrh r0, [r3, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3, #2] - ldrh r0, [r2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2] - ldrh r0, [r1] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1] - ldrh r0, [r1, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1, #2] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02239398: .word Unk_ov18_0224A328 -_0223939C: .word GX_LoadBG2Scr -_022393A0: .word 0x04001008 -_022393A4: .word 0x0400000A - arm_func_end ov18_02239328 - - arm_func_start ov18_022393A8 -ov18_022393A8: ; 0x022393A8 - stmfd sp!, {r3, lr} - mov r0, #2 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - mov r0, #0 - mov r1, #0x15 - bl ov18_02244C84 - ldr r0, _022393D8 ; =ov18_022393DC - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022393D8: .word ov18_022393DC - arm_func_end ov18_022393A8 - - arm_func_start ov18_022393DC -ov18_022393DC: ; 0x022393DC - stmfd sp!, {r3, lr} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #1 - bl ov18_0222B790 - ldr r0, _02239404 ; =ov18_02239408 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02239404: .word ov18_02239408 - arm_func_end ov18_022393DC - - arm_func_start ov18_02239408 -ov18_02239408: ; 0x02239408 - stmfd sp!, {r3, lr} - bl ov18_0222B034 - mvn r1, #1 - cmp r0, r1 - ldmeqia sp!, {r3, pc} - bl ov18_0222B0A8 - ldr r0, _0223942C ; =ov18_02239430 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223942C: .word ov18_02239430 - arm_func_end ov18_02239408 - - arm_func_start ov18_02239430 -ov18_02239430: ; 0x02239430 - stmfd sp!, {r3, lr} - mov r0, #0xa - bl OS_Sleep - bl ov18_02239614 - bl ov18_02239450 - bl ov18_02239488 - bl ov18_0223948C - ldmia sp!, {r3, pc} - arm_func_end ov18_02239430 - - arm_func_start ov18_02239450 -ov18_02239450: ; 0x02239450 - stmfd sp!, {r3, lr} - mov r0, #2 - bl ov18_02245470 - cmp r0, #0 - beq _02239470 - mov r0, #0 - bl ov18_0222B048 - ldmia sp!, {r3, pc} -_02239470: - bl ov18_022392CC - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, #0 - bl ov18_0222B048 - ldmia sp!, {r3, pc} - arm_func_end ov18_02239450 - - arm_func_start ov18_02239488 -ov18_02239488: ; 0x02239488 - bx lr - arm_func_end ov18_02239488 - - arm_func_start ov18_0223948C -ov18_0223948C: ; 0x0223948C - stmfd sp!, {r3, lr} - bl ov18_0222B034 - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_0223E9FC - mov r0, #7 - bl ov18_0223E994 - ldr r0, _022394B4 ; =ov18_022394B8 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022394B4: .word ov18_022394B8 - arm_func_end ov18_0223948C - - arm_func_start ov18_022394B8 -ov18_022394B8: ; 0x022394B8 - stmfd sp!, {r3, lr} - bl ov18_0222B0C0 - mov r0, #8 - bl ov18_02244394 - ldr r0, _022394D4 ; =ov18_022394D8 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022394D4: .word ov18_022394D8 - arm_func_end ov18_022394B8 - - arm_func_start ov18_022394D8 -ov18_022394D8: ; 0x022394D8 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _02239544 ; =0x02253338 - ldrb r0, [r0] - cmp r0, #0 - bne _02239500 - bl ov18_0222B004 -_02239500: - ldr r0, _02239544 ; =0x02253338 - ldrb r0, [r0] - cmp r0, #0 - bne _02239524 - mov r1, #1 - mov r2, r1 - mov r0, #3 - mov r3, #8 - bl ov18_02244194 -_02239524: - mov r0, #3 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - ldr r0, _02239548 ; =ov18_0223954C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02239544: .word Unk_ov18_02253338 -_02239548: .word ov18_0223954C - arm_func_end ov18_022394D8 - - arm_func_start ov18_0223954C -ov18_0223954C: ; 0x0223954C - stmfd sp!, {r3, lr} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _02239608 ; =0x02253338 - ldrb r0, [r0] - cmp r0, #0 - bne _02239580 - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} -_02239580: - bl ov18_0222B07C - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl ov18_0222AE04 - mov r0, #0 - bl ov18_022448E0 - ldr r0, _02239608 ; =0x02253338 - ldrb r0, [r0] - cmp r0, #0 - bne _022395B8 - bl ov18_0222B668 - mov r0, #1 - mov r1, r0 - bl ov18_02244CD8 -_022395B8: - mov r0, #0 - mov r1, #0x15 - bl ov18_02244CD8 - ldr r0, _02239608 ; =0x02253338 - ldrb r0, [r0] - cmp r0, #0 - bne _022395F0 - bl ov18_0222FDA8 - mov r0, #2 - mov r1, #1 - bl ov18_0222F6D4 - ldr r0, _0223960C ; =ov18_0223B3F4 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_022395F0: - mov r0, #0 - mov r1, r0 - bl ov18_0222F6D4 - ldr r0, _02239610 ; =ov18_02239704 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02239608: .word Unk_ov18_02253338 -_0223960C: .word ov18_0223B3F4 -_02239610: .word ov18_02239704 - arm_func_end ov18_0223954C - - arm_func_start ov18_02239614 -ov18_02239614: ; 0x02239614 - stmfd sp!, {r3, lr} - bl ov18_0222FDCC - cmp r0, #2 - beq _02239630 - cmp r0, #4 - beq _02239648 - ldmia sp!, {r3, pc} -_02239630: - ldr r1, _0223968C ; =0x02253338 - mov r2, #1 - ldr r0, _02239690 ; =ov18_022394B8 - strb r2, [r1] - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_02239648: - ldr r0, _0223968C ; =0x02253338 - mov r1, #0 - strb r1, [r0] - bl ov18_0223E9FC - mov r0, #9 - bl ov18_0223E994 - mov r1, #1 - mov ip, #0 - mov r2, r1 - sub r3, r1, #2 - mov r0, #0xd - str ip, [sp] - bl ov18_0223FC48 - bl ov18_0222B0C0 - ldr r0, _02239694 ; =ov18_02239698 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223968C: .word Unk_ov18_02253338 -_02239690: .word ov18_022394B8 -_02239694: .word ov18_02239698 - arm_func_end ov18_02239614 - - arm_func_start ov18_02239698 -ov18_02239698: ; 0x02239698 - stmfd sp!, {r3, lr} - bl ov18_0223FFB8 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #6 - bl ov18_0223E994 - bl ov18_0223FF74 - ldr r0, _022396C0 ; =ov18_022396C4 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022396C0: .word ov18_022396C4 - arm_func_end ov18_02239698 - - arm_func_start ov18_022396C4 -ov18_022396C4: ; 0x022396C4 - stmfd sp!, {r3, lr} - bl ov18_0223FFCC - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _022396E0 ; =ov18_022394B8 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022396E0: .word ov18_022394B8 - arm_func_end ov18_022396C4 - - arm_func_start ov18_022396E4 -ov18_022396E4: ; 0x022396E4 - ldr r0, _02239700 ; =0x027FFFA8 - ldrh r0, [r0] - and r0, r0, #0x8000 - movs r0, r0, asr #0xf - movne r0, #1 - moveq r0, #0 - bx lr - ; .align 2, 0 -_02239700: .word 0x027FFFA8 - arm_func_end ov18_022396E4 - - arm_func_start ov18_02239704 -ov18_02239704: ; 0x02239704 - stmfd sp!, {r3, lr} - ldr r0, _02239738 ; =0x0225333C - mov r1, #0 - strb r1, [r0] - bl ov18_02239740 - bl ov18_0222BC1C - mov r0, #0x2a - bl ov18_0222B7C8 - mov r0, #2 - bl ov18_0222AD34 - ldr r0, _0223973C ; =ov18_022397C0 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02239738: .word Unk_ov18_0225333C -_0223973C: .word ov18_022397C0 - arm_func_end ov18_02239704 - - arm_func_start ov18_02239740 -ov18_02239740: ; 0x02239740 - stmfd sp!, {r3, lr} - ldr r0, _022397B0 ; =0x0224A33C - ldr r1, _022397B4 ; =GX_LoadBG2Scr - bl ov18_0222B700 - ldr r3, _022397B8 ; =0x04001008 - ldr r1, _022397BC ; =0x0400000A - ldrh r0, [r3] - sub r2, r3, #0x1000 - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3] - ldrh r0, [r3, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3, #2] - ldrh r0, [r2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2] - ldrh r0, [r1] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1] - ldrh r0, [r1, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1, #2] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022397B0: .word Unk_ov18_0224A33C -_022397B4: .word GX_LoadBG2Scr -_022397B8: .word 0x04001008 -_022397BC: .word 0x0400000A - arm_func_end ov18_02239740 - - arm_func_start ov18_022397C0 -ov18_022397C0: ; 0x022397C0 - stmfd sp!, {r3, lr} - mov r0, #2 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - mov r0, #0 - mov r1, #0x15 - bl ov18_02244C84 - ldr r0, _022397F0 ; =ov18_022397F4 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022397F0: .word ov18_022397F4 - arm_func_end ov18_022397C0 - - arm_func_start ov18_022397F4 -ov18_022397F4: ; 0x022397F4 - stmfd sp!, {r3, lr} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #1 - bl ov18_0222B790 - ldr r0, _0223981C ; =ov18_02239820 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223981C: .word ov18_02239820 - arm_func_end ov18_022397F4 - - arm_func_start ov18_02239820 -ov18_02239820: ; 0x02239820 - stmfd sp!, {r3, lr} - bl ov18_0222B034 - mvn r1, #1 - cmp r0, r1 - ldmeqia sp!, {r3, pc} - bl ov18_0222B0A8 - ldr r0, _02239844 ; =ov18_02239848 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02239844: .word ov18_02239848 - arm_func_end ov18_02239820 - - arm_func_start ov18_02239848 -ov18_02239848: ; 0x02239848 - stmfd sp!, {r3, lr} - mov r0, #0xa - bl OS_Sleep - bl ov18_02239A10 - bl ov18_02239868 - bl ov18_022398A0 - bl ov18_022398A4 - ldmia sp!, {r3, pc} - arm_func_end ov18_02239848 - - arm_func_start ov18_02239868 -ov18_02239868: ; 0x02239868 - stmfd sp!, {r3, lr} - mov r0, #2 - bl ov18_02245470 - cmp r0, #0 - beq _02239888 - mov r0, #0 - bl ov18_0222B048 - ldmia sp!, {r3, pc} -_02239888: - bl ov18_022396E4 - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, #0 - bl ov18_0222B048 - ldmia sp!, {r3, pc} - arm_func_end ov18_02239868 - - arm_func_start ov18_022398A0 -ov18_022398A0: ; 0x022398A0 - bx lr - arm_func_end ov18_022398A0 - - arm_func_start ov18_022398A4 -ov18_022398A4: ; 0x022398A4 - stmfd sp!, {r3, lr} - bl ov18_0222B034 - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_0223E9FC - mov r0, #7 - bl ov18_0223E994 - ldr r0, _022398CC ; =ov18_022398D0 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022398CC: .word ov18_022398D0 - arm_func_end ov18_022398A4 - - arm_func_start ov18_022398D0 -ov18_022398D0: ; 0x022398D0 - stmfd sp!, {r3, lr} - bl ov18_0222B0C0 - mov r0, #8 - bl ov18_02244394 - ldr r0, _022398EC ; =ov18_022398F0 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022398EC: .word ov18_022398F0 - arm_func_end ov18_022398D0 - - arm_func_start ov18_022398F0 -ov18_022398F0: ; 0x022398F0 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_0222B004 - ldr r0, _0223994C ; =0x0225333C - ldrb r0, [r0] - cmp r0, #0 - bne _0223992C - mov r1, #1 - mov r2, r1 - mov r0, #3 - mov r3, #8 - bl ov18_02244194 -_0223992C: - mov r0, #3 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - ldr r0, _02239950 ; =ov18_02239954 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223994C: .word Unk_ov18_0225333C -_02239950: .word ov18_02239954 - arm_func_end ov18_022398F0 - - arm_func_start ov18_02239954 -ov18_02239954: ; 0x02239954 - stmfd sp!, {r3, lr} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _02239A04 ; =0x0225333C - ldrb r0, [r0] - cmp r0, #0 - bne _02239988 - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} -_02239988: - bl ov18_0222B07C - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl ov18_0222AE04 - mov r0, #0 - bl ov18_022448E0 - ldr r0, _02239A04 ; =0x0225333C - ldrb r0, [r0] - cmp r0, #0 - bne _022399C0 - bl ov18_0222B668 - mov r0, #1 - mov r1, r0 - bl ov18_02244CD8 -_022399C0: - bl ov18_0222FDA8 - ldr r0, _02239A04 ; =0x0225333C - ldrb r0, [r0] - cmp r0, #0 - bne _022399EC - mov r0, #2 - mov r1, #1 - bl ov18_0222F6D4 - ldr r0, _02239A08 ; =ov18_0223B3F4 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_022399EC: - mov r0, #0 - mov r1, r0 - bl ov18_0222F6D4 - ldr r0, _02239A0C ; =ov18_02239B34 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02239A04: .word Unk_ov18_0225333C -_02239A08: .word ov18_0223B3F4 -_02239A0C: .word ov18_02239B34 - arm_func_end ov18_02239954 - - arm_func_start ov18_02239A10 -ov18_02239A10: ; 0x02239A10 - stmfd sp!, {r3, lr} - bl ov18_0222FDCC - cmp r0, #3 - beq _02239A34 - cmp r0, #4 - beq _02239A54 - cmp r0, #5 - beq _02239A98 - ldmia sp!, {r3, pc} -_02239A34: - ldr r0, _02239ADC ; =0x0225333C - mov r1, #1 - strb r1, [r0] - bl ov18_0223E9FC - bl ov18_0222FE88 - ldr r0, _02239AE0 ; =ov18_022398D0 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_02239A54: - ldr r0, _02239ADC ; =0x0225333C - mov r1, #0 - strb r1, [r0] - bl ov18_0223E9FC - mov r0, #9 - bl ov18_0223E994 - mov r1, #1 - mov ip, #0 - mov r2, r1 - sub r3, r1, #2 - mov r0, #0xd - str ip, [sp] - bl ov18_0223FC48 - bl ov18_0222B0C0 - ldr r0, _02239AE4 ; =ov18_02239AE8 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_02239A98: - ldr r0, _02239ADC ; =0x0225333C - mov r1, #0 - strb r1, [r0] - bl ov18_0223E9FC - mov r0, #0x12 - bl ov18_0223E994 - mov r1, #1 - mov ip, #0 - mov r2, r1 - sub r3, r1, #2 - mov r0, #0xe - str ip, [sp] - bl ov18_0223FC48 - bl ov18_0222B0C0 - ldr r0, _02239AE4 ; =ov18_02239AE8 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02239ADC: .word Unk_ov18_0225333C -_02239AE0: .word ov18_022398D0 -_02239AE4: .word ov18_02239AE8 - arm_func_end ov18_02239A10 - - arm_func_start ov18_02239AE8 -ov18_02239AE8: ; 0x02239AE8 - stmfd sp!, {r3, lr} - bl ov18_0223FFB8 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #6 - bl ov18_0223E994 - bl ov18_0223FF74 - ldr r0, _02239B10 ; =ov18_02239B14 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02239B10: .word ov18_02239B14 - arm_func_end ov18_02239AE8 - - arm_func_start ov18_02239B14 -ov18_02239B14: ; 0x02239B14 - stmfd sp!, {r3, lr} - bl ov18_0223FFCC - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _02239B30 ; =ov18_022398D0 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02239B30: .word ov18_022398D0 - arm_func_end ov18_02239B14 - - .data - - - .global Unk_ov18_0224A328 -Unk_ov18_0224A328: ; 0x0224A328 - .asciz "char/xb4Multi.nsc.l" - - .global Unk_ov18_0224A33C -Unk_ov18_0224A33C: ; 0x0224A33C - .asciz "char/xb4Multi.nsc.l" - - - - .bss - - - .global Unk_ov18_02253338 -Unk_ov18_02253338: ; 0x02253338 - .space 0x4 - - .global Unk_ov18_0225333C -Unk_ov18_0225333C: ; 0x0225333C - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/scenesetrakucomplete.s b/subprojects/NitroDWC/libraries/util/asm/scenesetrakucomplete.s deleted file mode 100644 index 4954c4c34e..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/scenesetrakucomplete.s +++ /dev/null @@ -1,197 +0,0 @@ - .include "macros/function.inc" - .include "include/scenesetrakucomplete.inc" - - - - .text - - - arm_func_start ov18_02239B34 -ov18_02239B34: ; 0x02239B34 - stmfd sp!, {r3, lr} - ldr r0, _02239B68 ; =0x02253340 - mov r1, #0 - strb r1, [r0] - bl ov18_02239B70 - bl ov18_0222BC1C - mov r0, #0x26 - bl ov18_0222B7C8 - mov r0, #0x10 - bl ov18_0223E994 - ldr r0, _02239B6C ; =ov18_02239BF0 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02239B68: .word Unk_ov18_02253340 -_02239B6C: .word ov18_02239BF0 - arm_func_end ov18_02239B34 - - arm_func_start ov18_02239B70 -ov18_02239B70: ; 0x02239B70 - stmfd sp!, {r3, lr} - ldr r0, _02239BE0 ; =0x0224A350 - ldr r1, _02239BE4 ; =GX_LoadBG2Scr - bl ov18_0222B700 - ldr r3, _02239BE8 ; =0x04001008 - ldr r1, _02239BEC ; =0x0400000A - ldrh r0, [r3] - sub r2, r3, #0x1000 - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3] - ldrh r0, [r3, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3, #2] - ldrh r0, [r2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2] - ldrh r0, [r1] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1] - ldrh r0, [r1, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1, #2] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02239BE0: .word Unk_ov18_0224A350 -_02239BE4: .word GX_LoadBG2Scr -_02239BE8: .word 0x04001008 -_02239BEC: .word 0x0400000A - arm_func_end ov18_02239B70 - - arm_func_start ov18_02239BF0 -ov18_02239BF0: ; 0x02239BF0 - stmfd sp!, {r3, lr} - mov r0, #2 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - mov r0, #0 - mov r1, #0x15 - bl ov18_02244C84 - ldr r0, _02239C20 ; =ov18_02239C24 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02239C20: .word ov18_02239C24 - arm_func_end ov18_02239BF0 - - arm_func_start ov18_02239C24 -ov18_02239C24: ; 0x02239C24 - stmfd sp!, {r3, lr} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _02239C44 ; =ov18_02239C48 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02239C44: .word ov18_02239C48 - arm_func_end ov18_02239C24 - - arm_func_start ov18_02239C48 -ov18_02239C48: ; 0x02239C48 - stmfd sp!, {r3, lr} - bl ov18_02239D08 - bl ov18_02239C58 - ldmia sp!, {r3, pc} - arm_func_end ov18_02239C48 - - arm_func_start ov18_02239C58 -ov18_02239C58: ; 0x02239C58 - bx lr - arm_func_end ov18_02239C58 - - arm_func_start ov18_02239C5C -ov18_02239C5C: ; 0x02239C5C - stmfd sp!, {r3, lr} - mov r1, #1 - mov r2, r1 - mov r0, #3 - mov r3, #8 - bl ov18_02244194 - mov r0, #3 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - ldr r0, _02239C94 ; =ov18_02239C98 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02239C94: .word ov18_02239C98 - arm_func_end ov18_02239C5C - - arm_func_start ov18_02239C98 -ov18_02239C98: ; 0x02239C98 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_022448E0 - bl ov18_0222B668 - mov r0, #1 - mov r1, r0 - bl ov18_02244CD8 - mov r0, #0 - mov r1, #0x15 - bl ov18_02244CD8 - mov r0, #0 - mov r1, r0 - bl ov18_0222F6D4 - mov r0, #0 - mov r1, #1 - bl ov18_0222F710 - ldr r0, _02239D04 ; =ov18_0223C21C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02239D04: .word ov18_0223C21C - arm_func_end ov18_02239C98 - - arm_func_start ov18_02239D08 -ov18_02239D08: ; 0x02239D08 - stmfd sp!, {r3, lr} - ldr r0, _02239D34 ; =0x02253340 - ldrb r1, [r0] - add r2, r1, #1 - and r1, r2, #0xff - strb r2, [r0] - cmp r1, #0x78 - ldmloia sp!, {r3, pc} - ldr r0, _02239D38 ; =ov18_02239C5C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02239D34: .word Unk_ov18_02253340 -_02239D38: .word ov18_02239C5C - arm_func_end ov18_02239D08 - - .data - - - .global Unk_ov18_0224A350 -Unk_ov18_0224A350: ; 0x0224A350 - .asciz "char/xb4Multi.nsc.l" - - - - .bss - - - .global Unk_ov18_02253340 -Unk_ov18_02253340: ; 0x02253340 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/scenesetrakuready.s b/subprojects/NitroDWC/libraries/util/asm/scenesetrakuready.s deleted file mode 100644 index 44a65ba750..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/scenesetrakuready.s +++ /dev/null @@ -1,412 +0,0 @@ - .include "macros/function.inc" - .include "include/scenesetrakuready.inc" - - - - .text - - - arm_func_start ov18_02239D3C -ov18_02239D3C: ; 0x02239D3C - ldr r0, _02239D58 ; =0x027FFFA8 - ldrh r0, [r0] - and r0, r0, #0x8000 - movs r0, r0, asr #0xf - movne r0, #1 - moveq r0, #0 - bx lr - ; .align 2, 0 -_02239D58: .word 0x027FFFA8 - arm_func_end ov18_02239D3C - - arm_func_start ov18_02239D5C -ov18_02239D5C: ; 0x02239D5C - stmfd sp!, {r3, lr} - ldr r0, _02239DB0 ; =0x02253344 - mov r1, #0 - strb r1, [r0] - bl ov18_02239DB8 - bl ov18_0222BC1C - mov r0, #0x37 - sub r1, r0, #0x38 - mov r2, #0 - bl ov18_0222B594 - mov r0, #2 - bl ov18_0222B740 - mov r0, #0x24 - bl ov18_0222B7C8 - mov r0, #0 - bl ov18_0222AD34 - mov r0, #0xb - bl ov18_0223E994 - ldr r0, _02239DB4 ; =ov18_02239E60 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02239DB0: .word Unk_ov18_02253344 -_02239DB4: .word ov18_02239E60 - arm_func_end ov18_02239D5C - - arm_func_start ov18_02239DB8 -ov18_02239DB8: ; 0x02239DB8 - stmfd sp!, {r3, lr} - ldr r0, _02239E40 ; =0x0224A364 - ldr r1, _02239E44 ; =0x020C07EC - bl ov18_0222B700 - ldr r0, _02239E48 ; =0x0224A37C - ldr r1, _02239E4C ; =GX_LoadBGPltt - bl ov18_0222B700 - ldr r0, _02239E50 ; =0x0224A394 - ldr r1, _02239E54 ; =GX_LoadBG2Scr - bl ov18_0222B700 - ldr r3, _02239E58 ; =0x04001008 - ldr r1, _02239E5C ; =0x0400000A - ldrh r0, [r3] - sub r2, r3, #0x1000 - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3] - ldrh r0, [r3, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3, #2] - ldrh r0, [r2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2] - ldrh r0, [r1] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1] - ldrh r0, [r1, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1, #2] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02239E40: .word Unk_ov18_0224A364 -_02239E44: .word 0x020C07EC -_02239E48: .word Unk_ov18_0224A37C -_02239E4C: .word GX_LoadBGPltt -_02239E50: .word Unk_ov18_0224A394 -_02239E54: .word GX_LoadBG2Scr -_02239E58: .word 0x04001008 -_02239E5C: .word 0x0400000A - arm_func_end ov18_02239DB8 - - arm_func_start ov18_02239E60 -ov18_02239E60: ; 0x02239E60 - stmfd sp!, {r3, lr} - mov r1, #1 - mov r2, r1 - mov r0, #2 - mov r3, #8 - bl ov18_02244194 - mov r0, #2 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - mov r0, #1 - mov r1, r0 - bl ov18_02244C84 - mov r0, #0 - mov r1, #0x15 - bl ov18_02244C84 - ldr r0, _02239EB0 ; =ov18_02239EB4 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02239EB0: .word ov18_02239EB4 - arm_func_end ov18_02239E60 - - arm_func_start ov18_02239EB4 -ov18_02239EB4: ; 0x02239EB4 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_0222FD3C - mov r0, #1 - bl ov18_0222B790 - ldr r0, _02239EF0 ; =ov18_02239EF4 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02239EF0: .word ov18_02239EF4 - arm_func_end ov18_02239EB4 - - arm_func_start ov18_02239EF4 -ov18_02239EF4: ; 0x02239EF4 - stmfd sp!, {r3, lr} - bl ov18_0222B034 - mvn r1, #1 - cmp r0, r1 - ldmeqia sp!, {r3, pc} - bl ov18_0222B0A8 - ldr r0, _02239F18 ; =ov18_02239F1C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02239F18: .word ov18_02239F1C - arm_func_end ov18_02239EF4 - - arm_func_start ov18_02239F1C -ov18_02239F1C: ; 0x02239F1C - stmfd sp!, {r3, lr} - mov r0, #0xa - bl OS_Sleep - bl ov18_0223A100 - bl ov18_02239F3C - bl ov18_02239F74 - bl ov18_02239F78 - ldmia sp!, {r3, pc} - arm_func_end ov18_02239F1C - - arm_func_start ov18_02239F3C -ov18_02239F3C: ; 0x02239F3C - stmfd sp!, {r3, lr} - mov r0, #2 - bl ov18_02245470 - cmp r0, #0 - beq _02239F5C - mov r0, #0 - bl ov18_0222B048 - ldmia sp!, {r3, pc} -_02239F5C: - bl ov18_02239D3C - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, #0 - bl ov18_0222B048 - ldmia sp!, {r3, pc} - arm_func_end ov18_02239F3C - - arm_func_start ov18_02239F74 -ov18_02239F74: ; 0x02239F74 - bx lr - arm_func_end ov18_02239F74 - - arm_func_start ov18_02239F78 -ov18_02239F78: ; 0x02239F78 - stmfd sp!, {r3, lr} - bl ov18_0222B034 - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_0223E9FC - mov r0, #7 - bl ov18_0223E994 - ldr r0, _02239FA0 ; =ov18_02239FA4 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02239FA0: .word ov18_02239FA4 - arm_func_end ov18_02239F78 - - arm_func_start ov18_02239FA4 -ov18_02239FA4: ; 0x02239FA4 - stmfd sp!, {r3, lr} - bl ov18_0222B0C0 - mov r0, #8 - bl ov18_02244394 - ldr r0, _02239FC0 ; =ov18_02239FC4 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02239FC0: .word ov18_02239FC4 - arm_func_end ov18_02239FA4 - - arm_func_start ov18_02239FC4 -ov18_02239FC4: ; 0x02239FC4 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0223A030 ; =0x02253344 - ldrb r0, [r0] - cmp r0, #0 - bne _02239FEC - bl ov18_0222B004 -_02239FEC: - ldr r0, _0223A030 ; =0x02253344 - ldrb r0, [r0] - cmp r0, #0 - bne _0223A010 - mov r1, #1 - mov r2, r1 - mov r0, #3 - mov r3, #8 - bl ov18_02244194 -_0223A010: - mov r0, #3 - mov r1, #0 - mov r2, #0x14 - mov r3, #8 - bl ov18_02244194 - ldr r0, _0223A034 ; =ov18_0223A038 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223A030: .word Unk_ov18_02253344 -_0223A034: .word ov18_0223A038 - arm_func_end ov18_02239FC4 - - arm_func_start ov18_0223A038 -ov18_0223A038: ; 0x0223A038 - stmfd sp!, {r3, lr} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0223A0F4 ; =0x02253344 - ldrb r0, [r0] - cmp r0, #0 - bne _0223A06C - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} -_0223A06C: - bl ov18_0222B07C - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl ov18_0222AE04 - mov r0, #0 - bl ov18_022448E0 - ldr r0, _0223A0F4 ; =0x02253344 - ldrb r0, [r0] - cmp r0, #0 - bne _0223A0A4 - bl ov18_0222B668 - mov r0, #1 - mov r1, r0 - bl ov18_02244CD8 -_0223A0A4: - mov r0, #0 - mov r1, #0x15 - bl ov18_02244CD8 - ldr r0, _0223A0F4 ; =0x02253344 - ldrb r0, [r0] - cmp r0, #0 - bne _0223A0DC - bl ov18_0222FDA8 - mov r0, #2 - mov r1, #1 - bl ov18_0222F6D4 - ldr r0, _0223A0F8 ; =ov18_0223B3F4 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_0223A0DC: - mov r0, #0 - mov r1, r0 - bl ov18_0222F6D4 - ldr r0, _0223A0FC ; =ov18_022392EC - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223A0F4: .word Unk_ov18_02253344 -_0223A0F8: .word ov18_0223B3F4 -_0223A0FC: .word ov18_022392EC - arm_func_end ov18_0223A038 - - arm_func_start ov18_0223A100 -ov18_0223A100: ; 0x0223A100 - stmfd sp!, {r3, lr} - bl ov18_0222FDCC - cmp r0, #1 - beq _0223A11C - cmp r0, #4 - beq _0223A134 - ldmia sp!, {r3, pc} -_0223A11C: - ldr r1, _0223A178 ; =0x02253344 - mov r2, #1 - ldr r0, _0223A17C ; =ov18_02239FA4 - strb r2, [r1] - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_0223A134: - ldr r0, _0223A178 ; =0x02253344 - mov r1, #0 - strb r1, [r0] - bl ov18_0223E9FC - mov r0, #9 - bl ov18_0223E994 - mov r1, #1 - mov ip, #0 - mov r2, r1 - sub r3, r1, #2 - mov r0, #0xd - str ip, [sp] - bl ov18_0223FC48 - bl ov18_0222B0C0 - ldr r0, _0223A180 ; =ov18_0223A184 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223A178: .word Unk_ov18_02253344 -_0223A17C: .word ov18_02239FA4 -_0223A180: .word ov18_0223A184 - arm_func_end ov18_0223A100 - - arm_func_start ov18_0223A184 -ov18_0223A184: ; 0x0223A184 - stmfd sp!, {r3, lr} - bl ov18_0223FFB8 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #6 - bl ov18_0223E994 - bl ov18_0223FF74 - ldr r0, _0223A1AC ; =ov18_0223A1B0 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223A1AC: .word ov18_0223A1B0 - arm_func_end ov18_0223A184 - - arm_func_start ov18_0223A1B0 -ov18_0223A1B0: ; 0x0223A1B0 - stmfd sp!, {r3, lr} - bl ov18_0223FFCC - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0223A1CC ; =ov18_02239FA4 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223A1CC: .word ov18_02239FA4 - arm_func_end ov18_0223A1B0 - - .data - - - .global Unk_ov18_0224A364 -Unk_ov18_0224A364: ; 0x0224A364 - .ascii "char/jbBgStep3.ncg.l" - .space 0x4 - - .global Unk_ov18_0224A37C -Unk_ov18_0224A37C: ; 0x0224A37C - .ascii "char/ybBgStep3.ncl.l" - .space 0x4 - - .global Unk_ov18_0224A394 -Unk_ov18_0224A394: ; 0x0224A394 - .asciz "char/xb4Multi.nsc.l" - - - - .bss - - - .global Unk_ov18_02253344 -Unk_ov18_02253344: ; 0x02253344 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/scenesetsearch.s b/subprojects/NitroDWC/libraries/util/asm/scenesetsearch.s deleted file mode 100644 index 17c7dd3ba6..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/scenesetsearch.s +++ /dev/null @@ -1,429 +0,0 @@ - .include "macros/function.inc" - .include "include/scenesetsearch.inc" - - - - .text - - - arm_func_start ov18_0223A1D0 -ov18_0223A1D0: ; 0x0223A1D0 - stmfd sp!, {r3, lr} - ldr r0, _0223A230 ; =0x02253348 - mov r1, #0 - strh r1, [r0, #2] - strb r1, [r0] - bl ov18_0223A238 - mov r0, #0x33 - sub r1, r0, #0x34 - mov r2, #0 - bl ov18_0222B594 - bl ov18_0222BC1C - mov r0, #2 - bl ov18_0222B740 - mov r0, #0x33 - bl ov18_0222B7C8 - mov r0, #0 - bl ov18_0222AD34 - bl ov18_0223D8DC - bl ov18_0223D944 - mov r0, #0xa - bl ov18_0223E994 - ldr r0, _0223A234 ; =ov18_0223A2E0 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223A230: .word Unk_ov18_02253348 -_0223A234: .word ov18_0223A2E0 - arm_func_end ov18_0223A1D0 - - arm_func_start ov18_0223A238 -ov18_0223A238: ; 0x0223A238 - stmfd sp!, {r3, lr} - ldr r0, _0223A2C0 ; =0x0224A3A8 - ldr r1, _0223A2C4 ; =0x020C07EC - bl ov18_0222B700 - ldr r0, _0223A2C8 ; =0x0224A3C0 - ldr r1, _0223A2CC ; =GX_LoadBGPltt - bl ov18_0222B700 - ldr r0, _0223A2D0 ; =0x0224A3D8 - ldr r1, _0223A2D4 ; =GX_LoadBG2Scr - bl ov18_0222B700 - ldr r3, _0223A2D8 ; =0x04001008 - ldr r1, _0223A2DC ; =0x0400000A - ldrh r0, [r3] - sub r2, r3, #0x1000 - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3] - ldrh r0, [r3, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3, #2] - ldrh r0, [r2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2] - ldrh r0, [r1] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1] - ldrh r0, [r1, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1, #2] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223A2C0: .word Unk_ov18_0224A3A8 -_0223A2C4: .word 0x020C07EC -_0223A2C8: .word Unk_ov18_0224A3C0 -_0223A2CC: .word GX_LoadBGPltt -_0223A2D0: .word Unk_ov18_0224A3D8 -_0223A2D4: .word GX_LoadBG2Scr -_0223A2D8: .word 0x04001008 -_0223A2DC: .word 0x0400000A - arm_func_end ov18_0223A238 - - arm_func_start ov18_0223A2E0 -ov18_0223A2E0: ; 0x0223A2E0 - stmfd sp!, {r3, lr} - mov r1, #1 - mov r2, r1 - mov r0, #2 - mov r3, #8 - bl ov18_02244194 - mov r0, #2 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - mov r0, #1 - mov r1, r0 - bl ov18_02244C84 - mov r0, #0 - mov r1, #0x15 - bl ov18_02244C84 - ldr r0, _0223A330 ; =ov18_0223A334 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223A330: .word ov18_0223A334 - arm_func_end ov18_0223A2E0 - - arm_func_start ov18_0223A334 -ov18_0223A334: ; 0x0223A334 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #1 - bl ov18_0222B790 - ldr r0, _0223A36C ; =ov18_0223A370 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223A36C: .word ov18_0223A370 - arm_func_end ov18_0223A334 - - arm_func_start ov18_0223A370 -ov18_0223A370: ; 0x0223A370 - stmfd sp!, {r3, lr} - bl ov18_0222B034 - mvn r1, #1 - cmp r0, r1 - ldmeqia sp!, {r3, pc} - bl ov18_0222B0A8 - ldr r0, _0223A394 ; =ov18_0223A398 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223A394: .word ov18_0223A398 - arm_func_end ov18_0223A370 - - arm_func_start ov18_0223A398 -ov18_0223A398: ; 0x0223A398 - stmfd sp!, {r3, lr} - bl ov18_0223A4D8 - bl ov18_0223A4FC - bl ov18_0223A500 - bl ov18_0223A3B0 - ldmia sp!, {r3, pc} - arm_func_end ov18_0223A398 - - arm_func_start ov18_0223A3B0 -ov18_0223A3B0: ; 0x0223A3B0 - stmfd sp!, {r3, lr} - sub sp, sp, #8 - ldr r0, _0223A4CC ; =0x02253348 - ldrh r1, [r0, #2] - add r1, r1, #1 - strh r1, [r0, #2] - ldrh r0, [r0, #2] - cmp r0, #0x12c - addlo sp, sp, #8 - ldmloia sp!, {r3, pc} - bl ov18_0223E9FC - add r0, sp, #4 - bl ov18_0223DAE0 - cmp r0, #0 - bne _0223A430 - ldr r0, _0223A4CC ; =0x02253348 - mov r1, #1 - mov r3, #2 - strb r3, [r0] - mov ip, #0 - mov r2, r1 - sub r3, r1, #2 - mov r0, #0xf - str ip, [sp] - bl ov18_0223FC48 - mov r0, #0x12 - bl ov18_0223E994 - bl ov18_0222B0C0 - ldr r0, _0223A4D0 ; =ov18_0223A668 - bl ov18_0222F6C4 - add sp, sp, #8 - ldmia sp!, {r3, pc} -_0223A430: - cmp r0, #0 - mov r2, #0 - ble _0223A45C - ldr r3, [sp, #4] -_0223A440: - ldrb r1, [r3, #0x28] - cmp r1, #2 - bne _0223A45C - add r2, r2, #1 - cmp r2, r0 - add r3, r3, #0x2a - blt _0223A440 -_0223A45C: - cmp r2, r0 - bne _0223A4A8 - ldr r0, _0223A4CC ; =0x02253348 - mov r1, #1 - mov r3, #3 - strb r3, [r0] - mov ip, #0 - mov r2, r1 - sub r3, r1, #2 - mov r0, #0xe - str ip, [sp] - bl ov18_0223FC48 - mov r0, #0x12 - bl ov18_0223E994 - bl ov18_0222B0C0 - ldr r0, _0223A4D0 ; =ov18_0223A668 - bl ov18_0222F6C4 - add sp, sp, #8 - ldmia sp!, {r3, pc} -_0223A4A8: - ldr r1, _0223A4CC ; =0x02253348 - mov r2, #1 - mov r0, #0xf - strb r2, [r1] - bl ov18_0223E994 - ldr r0, _0223A4D4 ; =ov18_0223A52C - bl ov18_0222F6C4 - add sp, sp, #8 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223A4CC: .word Unk_ov18_02253348 -_0223A4D0: .word ov18_0223A668 -_0223A4D4: .word ov18_0223A52C - arm_func_end ov18_0223A3B0 - - arm_func_start ov18_0223A4D8 -ov18_0223A4D8: ; 0x0223A4D8 - stmfd sp!, {r3, lr} - mov r0, #2 - bl ov18_02245470 - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl ov18_0223E9FC - mov r0, #0 - bl ov18_0222B048 - ldmia sp!, {r3, pc} - arm_func_end ov18_0223A4D8 - - arm_func_start ov18_0223A4FC -ov18_0223A4FC: ; 0x0223A4FC - bx lr - arm_func_end ov18_0223A4FC - - arm_func_start ov18_0223A500 -ov18_0223A500: ; 0x0223A500 - stmfd sp!, {r3, lr} - bl ov18_0222B034 - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_0223E9FC - mov r0, #7 - bl ov18_0223E994 - ldr r0, _0223A528 ; =ov18_0223A52C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223A528: .word ov18_0223A52C - arm_func_end ov18_0223A500 - - arm_func_start ov18_0223A52C -ov18_0223A52C: ; 0x0223A52C - stmfd sp!, {r3, lr} - bl ov18_0222B0C0 - mov r0, #8 - bl ov18_02244394 - ldr r0, _0223A548 ; =ov18_0223A54C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223A548: .word ov18_0223A54C - arm_func_end ov18_0223A52C - - arm_func_start ov18_0223A54C -ov18_0223A54C: ; 0x0223A54C - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_0222B004 - mov r1, #1 - mov r2, r1 - mov r0, #3 - mov r3, #8 - bl ov18_02244194 - mov r0, #3 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - ldr r0, _0223A598 ; =ov18_0223A59C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223A598: .word ov18_0223A59C - arm_func_end ov18_0223A54C - - arm_func_start ov18_0223A59C -ov18_0223A59C: ; 0x0223A59C - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_0222B07C - cmp r0, #0 - ldmeqia sp!, {r3, pc} -_0223A5CC: - bl ov18_0223DA44 - cmp r0, #0 - beq _0223A5CC - bl ov18_0222AE04 - mov r0, #0 - bl ov18_022448E0 - bl ov18_0222B668 - mov r0, #1 - mov r1, r0 - bl ov18_02244CD8 - mov r0, #0 - mov r1, #0x15 - bl ov18_02244CD8 - ldr r0, _0223A65C ; =0x02253348 - ldrb r0, [r0] - cmp r0, #1 - beq _0223A638 - bl ov18_0223D910 - bl ov18_0223DDCC - ldrb r0, [r0, #0xf4] - bl ov18_0223E1F0 - mov r0, #2 - mov r1, #1 - bl ov18_0222F6D4 - ldr r0, _0223A660 ; =ov18_0223B3F4 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_0223A638: - mov r0, #0 - mov r1, #1 - bl ov18_0222F6D4 - mov r0, #0 - mov r1, r0 - bl ov18_0222F710 - ldr r0, _0223A664 ; =ov18_02233818 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223A65C: .word Unk_ov18_02253348 -_0223A660: .word ov18_0223B3F4 -_0223A664: .word ov18_02233818 - arm_func_end ov18_0223A59C - - arm_func_start ov18_0223A668 -ov18_0223A668: ; 0x0223A668 - stmfd sp!, {r3, lr} - bl ov18_0223FFB8 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #6 - bl ov18_0223E994 - bl ov18_0223FF74 - ldr r0, _0223A690 ; =ov18_0223A694 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223A690: .word ov18_0223A694 - arm_func_end ov18_0223A668 - - arm_func_start ov18_0223A694 -ov18_0223A694: ; 0x0223A694 - stmfd sp!, {r3, lr} - bl ov18_0223FFCC - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0223A6B0 ; =ov18_0223A52C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223A6B0: .word ov18_0223A52C - arm_func_end ov18_0223A694 - - .data - - - .global Unk_ov18_0224A3A8 -Unk_ov18_0224A3A8: ; 0x0224A3A8 - .ascii "char/jbBgStep3.ncg.l" - .space 0x4 - - .global Unk_ov18_0224A3C0 -Unk_ov18_0224A3C0: ; 0x0224A3C0 - .ascii "char/ybBgStep3.ncl.l" - .space 0x4 - - .global Unk_ov18_0224A3D8 -Unk_ov18_0224A3D8: ; 0x0224A3D8 - .asciz "char/xb4Multi.nsc.l" - - - - .bss - - - .global Unk_ov18_02253348 -Unk_ov18_02253348: ; 0x02253348 - .space 0x2 - - .global Unk_ov18_0225334A -Unk_ov18_0225334A: ; 0x0225334A - .space 0x2 - diff --git a/subprojects/NitroDWC/libraries/util/asm/scenesetselectap.s b/subprojects/NitroDWC/libraries/util/asm/scenesetselectap.s deleted file mode 100644 index badd34e331..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/scenesetselectap.s +++ /dev/null @@ -1,1078 +0,0 @@ - .include "macros/function.inc" - .include "include/scenesetselectap.inc" - - - - .text - - - arm_func_start ov18_0223A6B4 -ov18_0223A6B4: ; 0x0223A6B4 - stmfd sp!, {r3, lr} - mov r0, #0x20 - mov r1, #4 - bl ov18_02245068 - ldr r1, _0223A70C ; =0x0225334C - mov r2, #0 - str r0, [r1, #4] - strb r2, [r0, #0x1d] - bl ov18_0223A714 - mov r0, #1 - bl ov18_0222BBC0 - mov r0, #0x2f - sub r1, r0, #0x30 - mov r2, #0 - bl ov18_0222B594 - mov r0, #0 - bl ov18_0222B740 - bl ov18_0223A824 - bl ov18_0223AE94 - ldr r0, _0223A710 ; =ov18_0223A92C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223A70C: .word Unk_ov18_0225334C -_0223A710: .word ov18_0223A92C - arm_func_end ov18_0223A6B4 - - arm_func_start ov18_0223A714 -ov18_0223A714: ; 0x0223A714 - stmfd sp!, {r3, lr} - sub sp, sp, #0x18 - ldr ip, _0223A7F4 ; =0x022493E8 - add r3, sp, #0 - mov r2, #0xb -_0223A728: - ldrb r1, [ip] - ldrb r0, [ip, #1] - add ip, ip, #2 - strb r1, [r3] - strb r0, [r3, #1] - add r3, r3, #2 - subs r2, r2, #1 - bne _0223A728 - ldr r0, _0223A7F8 ; =0x0224A3EC - ldr r1, _0223A7FC ; =0x020C0160 - bl ov18_0222B700 - ldr r0, _0223A800 ; =0x0224A400 - ldr r1, _0223A804 ; =0x020C07EC - bl ov18_0222B700 - ldr r0, _0223A808 ; =0x0224A418 - ldr r1, _0223A80C ; =GX_LoadBGPltt - bl ov18_0222B700 - ldr r0, _0223A810 ; =0x0224A430 - ldr r1, _0223A814 ; =GX_LoadBG2Scr - bl ov18_0222B700 - add r0, sp, #0 - bl ov18_0222B6A0 - mov r1, #0 - mov r2, #4 - bl ov18_02243738 - ldr r2, _0223A818 ; =0x0225334C - mov r1, #0x10 - ldr r2, [r2, #4] - str r0, [r2, #0] - mov r0, #1 - bl ov18_02244C84 - ldr r2, _0223A81C ; =0x04001008 - ldr r1, _0223A820 ; =0x0400000A - ldrh r0, [r2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2] - ldrh r0, [r2, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2, #2] - ldrh r0, [r1] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1] - ldrh r0, [r1, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1, #2] - add sp, sp, #0x18 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223A7F4: .word Unk_ov18_022493E8 -_0223A7F8: .word Unk_ov18_0224A3EC -_0223A7FC: .word 0x020C0160 -_0223A800: .word Unk_ov18_0224A400 -_0223A804: .word 0x020C07EC -_0223A808: .word Unk_ov18_0224A418 -_0223A80C: .word GX_LoadBGPltt -_0223A810: .word Unk_ov18_0224A430 -_0223A814: .word GX_LoadBG2Scr -_0223A818: .word Unk_ov18_0225334C -_0223A81C: .word 0x04001008 -_0223A820: .word 0x0400000A - arm_func_end ov18_0223A714 - - arm_func_start ov18_0223A824 -ov18_0223A824: ; 0x0223A824 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, #0 - ldr r6, _0223A920 ; =0x022493FE - ldr r5, _0223A924 ; =0x022493DC - ldr r4, _0223A928 ; =0x0225334C - mov fp, sl - mvn r7, #0 - mov r8, #3 -_0223A844: - mov r0, sl - bl ov18_0223E1D8 - mov sb, r0 - cmp sb, #0xff - moveq sb, r8 - beq _0223A8B8 - mov r0, fp - mov r1, #0x11 - mov r2, #1 - bl ov18_02243F8C - ldr r1, [r4, #4] - add r3, sl, #3 - add r1, r1, sl, lsl #2 - str r0, [r1, #0x10] - mov r2, r3, lsl #2 - ldr r0, [r4, #4] - add r3, r6, r3, lsl #2 - add r0, r0, sl, lsl #2 - ldrh r2, [r6, r2] - ldrh r3, [r3, #2] - ldr r0, [r0, #0x10] - mov r1, r7 - bl ov18_02243CF4 - ldr r0, [r4, #4] - mov r1, r7 - add r0, r0, sl, lsl #2 - ldr r0, [r0, #0x10] - mov r2, #3 - bl ov18_02243DE4 -_0223A8B8: - ldrb r1, [r5, sb] - mov r0, #0 - mov r2, #1 - bl ov18_02243F8C - ldr r1, [r4, #4] - mov r2, sl, lsl #2 - add r1, r1, sl, lsl #2 - str r0, [r1, #4] - ldr r0, [r4, #4] - add r3, r6, sl, lsl #2 - add r0, r0, sl, lsl #2 - ldrh r2, [r6, r2] - ldrh r3, [r3, #2] - ldr r0, [r0, #4] - mov r1, r7 - bl ov18_02243CF4 - ldr r0, [r4, #4] - mov r1, r7 - add r0, r0, sl, lsl #2 - ldr r0, [r0, #4] - mov r2, #3 - bl ov18_02243DE4 - add sl, sl, #1 - cmp sl, #3 - blt _0223A844 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0223A920: .word Unk_ov18_022493FE -_0223A924: .word Unk_ov18_022493DC -_0223A928: .word Unk_ov18_0225334C - arm_func_end ov18_0223A824 - - arm_func_start ov18_0223A92C -ov18_0223A92C: ; 0x0223A92C - stmfd sp!, {r3, lr} - mov r1, #1 - mov r2, r1 - mov r0, #2 - mov r3, #8 - bl ov18_02244194 - mov r0, #2 - mov r1, #0 - mov r2, #0x14 - mov r3, #8 - bl ov18_02244194 - mov r0, #1 - mov r1, r0 - bl ov18_02244C84 - mov r0, #0 - mov r1, #0x14 - bl ov18_02244C84 - ldr r0, _0223A97C ; =ov18_0223A980 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223A97C: .word ov18_0223A980 - arm_func_end ov18_0223A92C - - arm_func_start ov18_0223A980 -ov18_0223A980: ; 0x0223A980 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_0222B790 - ldr r0, _0223A9B8 ; =ov18_0223A9BC - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223A9B8: .word ov18_0223A9BC - arm_func_end ov18_0223A980 - - arm_func_start ov18_0223A9BC -ov18_0223A9BC: ; 0x0223A9BC - stmfd sp!, {r3, lr} - bl ov18_0222B034 - mvn r1, #1 - cmp r0, r1 - ldmeqia sp!, {r3, pc} - bl ov18_0223F084 - cmp r0, #1 - ldmeqia sp!, {r3, pc} - bl ov18_0222B0A8 - ldr r0, _0223A9EC ; =ov18_0223A9F0 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223A9EC: .word ov18_0223A9F0 - arm_func_end ov18_0223A9BC - - arm_func_start ov18_0223A9F0 -ov18_0223A9F0: ; 0x0223A9F0 - stmfd sp!, {r3, lr} - bl ov18_0223AA04 - bl ov18_0223AAF8 - bl ov18_0223AAFC - ldmia sp!, {r3, pc} - arm_func_end ov18_0223A9F0 - - arm_func_start ov18_0223AA04 -ov18_0223AA04: ; 0x0223AA04 - stmfd sp!, {r3, r4, r5, lr} - ldr r5, _0223AAF0 ; =0x02249416 - mov r4, #0 -_0223AA10: - mov r0, r5 - bl ov18_022455B8 - cmp r0, #0 - beq _0223AA38 - mov r0, #1 - bl ov18_0222B048 - ldr r0, _0223AAF4 ; =0x0225334C - strb r4, [r0] - bl ov18_0223AE94 - ldmia sp!, {r3, r4, r5, pc} -_0223AA38: - add r4, r4, #1 - cmp r4, #7 - add r5, r5, #8 - blo _0223AA10 - mov r0, #1 - bl ov18_02245470 - cmp r0, #0 - beq _0223AA64 - mov r0, #1 - bl ov18_0222B048 - ldmia sp!, {r3, r4, r5, pc} -_0223AA64: - mov r0, #2 - bl ov18_02245470 - cmp r0, #0 - beq _0223AA80 - mov r0, #0 - bl ov18_0222B048 - ldmia sp!, {r3, r4, r5, pc} -_0223AA80: - mov r0, #0x40 - bl ov18_022454B0 - cmp r0, #0 - beq _0223AA9C - mov r0, #1 - bl ov18_0223AF10 - ldmia sp!, {r3, r4, r5, pc} -_0223AA9C: - mov r0, #0x80 - bl ov18_022454B0 - cmp r0, #0 - beq _0223AAB8 - mov r0, #3 - bl ov18_0223AF10 - ldmia sp!, {r3, r4, r5, pc} -_0223AAB8: - mov r0, #0x20 - bl ov18_022454B0 - cmp r0, #0 - beq _0223AAD4 - mov r0, #0 - bl ov18_0223AF10 - ldmia sp!, {r3, r4, r5, pc} -_0223AAD4: - mov r0, #0x10 - bl ov18_022454B0 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, #2 - bl ov18_0223AF10 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0223AAF0: .word Unk_ov18_02249416 -_0223AAF4: .word Unk_ov18_0225334C - arm_func_end ov18_0223AA04 - - arm_func_start ov18_0223AAF8 -ov18_0223AAF8: ; 0x0223AAF8 - bx lr - arm_func_end ov18_0223AAF8 - - arm_func_start ov18_0223AAFC -ov18_0223AAFC: ; 0x0223AAFC - stmfd sp!, {r3, r4, lr} - sub sp, sp, #4 - bl ov18_0222B034 - cmp r0, #0 - beq _0223AB20 - cmp r0, #1 - beq _0223AB68 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} -_0223AB20: - bl ov18_0222F75C - cmp r0, #0 - beq _0223AB38 - cmp r0, #1 - beq _0223AB54 - b _0223AC0C -_0223AB38: - mov r0, #7 - bl ov18_0223E994 - ldr r0, _0223AC1C ; =0x0225334C - mov r1, #2 - ldr r0, [r0, #4] - strb r1, [r0, #0x1d] - b _0223AC0C -_0223AB54: - bl ov18_0222B0C0 - ldr r0, _0223AC20 ; =ov18_0222FEE8 - bl ov18_0222F6C4 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} -_0223AB68: - ldr r0, _0223AC1C ; =0x0225334C - mov r2, #1 - ldr r1, [r0, #4] - strb r2, [r1, #0x1d] - ldrb r0, [r0] - cmp r0, #4 - blo _0223ABF4 - sub r4, r0, #4 - mov r0, r4 - bl ov18_0223E1D8 - cmp r0, #0xff - bne _0223ABB0 - mov r0, #9 - bl ov18_0223E994 - mvn r0, #0 - bl ov18_0222B068 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} -_0223ABB0: - mov r0, #6 - bl ov18_0223E994 - bl ov18_0222F74C - ldr r1, _0223AC24 ; =0x02249488 - add ip, r4, #1 - ldrsb r3, [r1, r0] - mov r0, #0x46 - mov r1, #0 - mov r2, #1 - str ip, [sp] - bl ov18_0223FC48 - bl ov18_0223B104 - bl ov18_0222B0C0 - ldr r0, _0223AC28 ; =ov18_0223B194 - bl ov18_0222F6C4 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} -_0223ABF4: - cmp r0, #2 - bhi _0223AC00 - bl ov18_0223E1F0 -_0223AC00: - mov r0, #6 - bl ov18_0223E994 - bl ov18_0223B324 -_0223AC0C: - ldr r0, _0223AC2C ; =ov18_0223AC30 - bl ov18_0222F6C4 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - ; .align 2, 0 -_0223AC1C: .word Unk_ov18_0225334C -_0223AC20: .word ov18_0222FEE8 -_0223AC24: .word Unk_ov18_02249488 -_0223AC28: .word ov18_0223B194 -_0223AC2C: .word ov18_0223AC30 - arm_func_end ov18_0223AAFC - - arm_func_start ov18_0223AC30 -ov18_0223AC30: ; 0x0223AC30 - stmfd sp!, {r3, lr} - ldr r0, _0223AC64 ; =0x0225334C - ldr r0, [r0, #4] - ldrb r0, [r0, #0x1d] - cmp r0, #2 - bne _0223AC4C - bl ov18_0223EF7C -_0223AC4C: - bl ov18_0222B0C0 - mov r0, #8 - bl ov18_02244394 - ldr r0, _0223AC68 ; =ov18_0223AC6C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223AC64: .word Unk_ov18_0225334C -_0223AC68: .word ov18_0223AC6C - arm_func_end ov18_0223AC30 - - arm_func_start ov18_0223AC6C -ov18_0223AC6C: ; 0x0223AC6C - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0223ACE8 ; =0x0225334C - ldr r1, [r0, #4] - ldrb r1, [r1, #0x1d] - cmp r1, #1 - bne _0223ACB4 - ldrb r0, [r0] - cmp r0, #3 - beq _0223ACB0 - bl ov18_0223DDCC - ldrb r0, [r0, #0xe7] - cmp r0, #0xff - beq _0223ACB4 -_0223ACB0: - bl ov18_0222B004 -_0223ACB4: - mov r1, #1 - mov r2, r1 - mov r0, #3 - mov r3, #8 - bl ov18_02244194 - mov r0, #3 - mov r1, #0 - mov r2, #0x14 - mov r3, #8 - bl ov18_02244194 - ldr r0, _0223ACEC ; =ov18_0223ACF0 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223ACE8: .word Unk_ov18_0225334C -_0223ACEC: .word ov18_0223ACF0 - arm_func_end ov18_0223AC6C - - arm_func_start ov18_0223ACF0 -ov18_0223ACF0: ; 0x0223ACF0 - stmfd sp!, {r3, r4, r5, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - bl ov18_0223F4A4 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - bl ov18_0222B07C - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r4, _0223AE74 ; =0x0225334C - mov r5, #0 -_0223AD34: - ldr r0, [r4, #4] - add r0, r0, r5, lsl #2 - ldr r0, [r0, #4] - cmp r0, #0 - beq _0223AD4C - bl ov18_02243B3C -_0223AD4C: - add r5, r5, #1 - cmp r5, #3 - blo _0223AD34 - ldr r4, _0223AE74 ; =0x0225334C - mov r5, #0 -_0223AD60: - ldr r0, [r4, #4] - add r0, r0, r5, lsl #2 - ldr r0, [r0, #0x10] - cmp r0, #0 - beq _0223AD78 - bl ov18_02243B3C -_0223AD78: - add r5, r5, #1 - cmp r5, #3 - blo _0223AD60 - bl ov18_0222BAF4 - bl ov18_0222B668 - ldr r0, _0223AE74 ; =0x0225334C - ldr r0, [r0, #4] - ldr r0, [r0, #0] - bl ov18_0224382C - ldr r0, _0223AE78 ; =0x0224A444 - ldr r1, _0223AE7C ; =0x020C0160 - bl ov18_0222B700 - mov r0, #1 - mov r1, r0 - bl ov18_02244CD8 - mov r0, #0 - mov r1, #0x14 - bl ov18_02244CD8 - ldr r0, _0223AE74 ; =0x0225334C - ldr r1, [r0, #4] - ldrb r1, [r1, #0x1d] - cmp r1, #2 - bne _0223ADEC - mov r0, #0 - mov r1, r0 - bl ov18_0222F6D4 - ldr r0, _0223AE80 ; =ov18_02230228 - bl ov18_0222F6C4 - b _0223AE68 -_0223ADEC: - ldrb r0, [r0] - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _0223AE68 -_0223ADFC: ; jump table - b _0223AE0C ; case 0 - b _0223AE0C ; case 1 - b _0223AE0C ; case 2 - b _0223AE54 ; case 3 -_0223AE0C: - mov r0, #2 - mov r1, #0 - bl ov18_0222F6D4 - bl ov18_0223DDCC - ldrb r0, [r0, #0xe7] - cmp r0, #0xff - bne _0223AE34 - ldr r0, _0223AE84 ; =ov18_0223B3F4 - bl ov18_0222F6C4 - b _0223AE68 -_0223AE34: - mov r0, #0 - mov r1, r0 - bl ov18_0222F710 - mov r0, #0 - bl ov18_0223909C - ldr r0, _0223AE88 ; =ov18_02236BE0 - bl ov18_0222F6C4 - b _0223AE68 -_0223AE54: - mov r0, #2 - mov r1, #1 - bl ov18_0222F6D4 - ldr r0, _0223AE8C ; =ov18_0223C67C - bl ov18_0222F6C4 -_0223AE68: - ldr r0, _0223AE90 ; =0x02253350 - bl ov18_0224508C - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0223AE74: .word Unk_ov18_0225334C -_0223AE78: .word Unk_ov18_0224A444 -_0223AE7C: .word 0x020C0160 -_0223AE80: .word ov18_02230228 -_0223AE84: .word ov18_0223B3F4 -_0223AE88: .word ov18_02236BE0 -_0223AE8C: .word ov18_0223C67C -_0223AE90: .word Unk_ov18_02253350 - arm_func_end ov18_0223ACF0 - - arm_func_start ov18_0223AE94 -ov18_0223AE94: ; 0x0223AE94 - stmfd sp!, {r3, lr} - ldr r0, _0223AEFC ; =0x0225334C - ldrb r2, [r0] - cmp r2, #4 - bhs _0223AED4 - mov ip, r2, lsl #3 - ldr r0, _0223AF00 ; =0x0224944E - ldr r1, _0223AF04 ; =0x02249452 - ldr r2, _0223AF08 ; =0x02249450 - ldr r3, _0223AF0C ; =0x02249454 - ldrh r0, [r0, ip] - ldrh r1, [r1, ip] - ldrh r2, [r2, ip] - ldrh r3, [r3, ip] - bl ov18_0222BA04 - ldmia sp!, {r3, pc} -_0223AED4: - ldr r1, _0223AF00 ; =0x0224944E - mov r3, r2, lsl #3 - ldr r2, _0223AF04 ; =0x02249452 - ldr r0, _0223AF08 ; =0x02249450 - ldrh r1, [r1, r3] - ldrh r2, [r2, r3] - ldrh r3, [r0, r3] - mov r0, #0 - bl ov18_0222B948 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223AEFC: .word Unk_ov18_0225334C -_0223AF00: .word Unk_ov18_0224944E -_0223AF04: .word 0x02249452 -_0223AF08: .word 0x02249450 -_0223AF0C: .word 0x02249454 - arm_func_end ov18_0223AE94 - - arm_func_start ov18_0223AF10 -ov18_0223AF10: ; 0x0223AF10 - stmfd sp!, {r3, lr} - ldr r2, _0223B100 ; =0x0225334C - mov r1, #1 - ldrb r3, [r2] - cmp r3, #6 - addls pc, pc, r3, lsl #2 - b _0223B0E8 -_0223AF2C: ; jump table - b _0223AF48 ; case 0 - b _0223AF88 ; case 1 - b _0223AFC8 ; case 2 - b _0223B008 ; case 3 - b _0223B030 ; case 4 - b _0223B070 ; case 5 - b _0223B0AC ; case 6 -_0223AF48: - ldr r3, [r2, #4] - mov ip, #0 - cmp r0, #0 - strb ip, [r3, #0x1c] - moveq r0, #2 - streqb r0, [r2] - beq _0223B0E8 - cmp r0, #2 - streqb r1, [r2] - beq _0223B0E8 - cmp r0, #1 - moveq r0, #3 - streqb r0, [r2] - movne r0, #4 - strneb r0, [r2] - b _0223B0E8 -_0223AF88: - ldr r3, [r2, #4] - cmp r0, #0 - strb r1, [r3, #0x1c] - moveq r0, #0 - streqb r0, [r2] - beq _0223B0E8 - cmp r0, #2 - moveq r0, #2 - streqb r0, [r2] - beq _0223B0E8 - cmp r0, #1 - moveq r0, #3 - streqb r0, [r2] - movne r0, #5 - strneb r0, [r2] - b _0223B0E8 -_0223AFC8: - ldr r3, [r2, #4] - mov ip, #2 - strb ip, [r3, #0x1c] - cmp r0, #0 - streqb r1, [r2] - beq _0223B0E8 - cmp r0, #2 - moveq r0, #0 - streqb r0, [r2] - beq _0223B0E8 - cmp r0, #1 - moveq r0, #3 - streqb r0, [r2] - movne r0, #6 - strneb r0, [r2] - b _0223B0E8 -_0223B008: - ldr r3, [r2, #4] - cmp r0, #1 - ldrb ip, [r3, #0x1c] - add r3, ip, #4 - streqb r3, [r2] - beq _0223B0E8 - cmp r0, #3 - streqb ip, [r2] - movne r1, #0 - b _0223B0E8 -_0223B030: - ldr r3, [r2, #4] - mov ip, #0 - cmp r0, #0 - strb ip, [r3, #0x1c] - moveq r0, #6 - streqb r0, [r2] - beq _0223B0E8 - cmp r0, #2 - moveq r0, #5 - streqb r0, [r2] - beq _0223B0E8 - cmp r0, #1 - streqb ip, [r2] - movne r0, #3 - strneb r0, [r2] - b _0223B0E8 -_0223B070: - ldr r3, [r2, #4] - cmp r0, #0 - strb r1, [r3, #0x1c] - moveq r0, #4 - streqb r0, [r2] - beq _0223B0E8 - cmp r0, #2 - moveq r0, #6 - streqb r0, [r2] - beq _0223B0E8 - cmp r0, #1 - streqb r1, [r2] - movne r0, #3 - strneb r0, [r2] - b _0223B0E8 -_0223B0AC: - ldr r3, [r2, #4] - mov ip, #2 - cmp r0, #0 - strb ip, [r3, #0x1c] - moveq r0, #5 - streqb r0, [r2] - beq _0223B0E8 - cmp r0, #2 - moveq r0, #4 - streqb r0, [r2] - beq _0223B0E8 - cmp r0, #1 - streqb ip, [r2] - movne r0, #3 - strneb r0, [r2] -_0223B0E8: - cmp r1, #0 - ldmeqia sp!, {r3, pc} - mov r0, #8 - bl ov18_0223E994 - bl ov18_0223AE94 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223B100: .word Unk_ov18_0225334C - arm_func_end ov18_0223AF10 - - arm_func_start ov18_0223B104 -ov18_0223B104: ; 0x0223B104 - stmfd sp!, {r4, lr} - ldr r0, _0223B188 ; =0x0225334C - mov r1, #0 - ldrb r2, [r0] - ldr r0, [r0, #4] - sub r4, r2, #4 - add r0, r0, r4, lsl #2 - ldr r0, [r0, #0x10] - bl ov18_02243BBC - mov r2, r0 - mov r0, #0 - mov r1, #0x32 - bl ov18_02243ECC - ldr r0, _0223B188 ; =0x0225334C - add r3, r4, #3 - ldr r2, [r0, #4] - ldr r1, _0223B18C ; =0x022493FE - mov r3, r3, lsl #2 - ldr r0, _0223B190 ; =0x02249400 - add ip, r2, r4, lsl #2 - ldrh r2, [r1, r3] - ldrh r3, [r0, r3] - ldr r0, [ip, #0x10] - mvn r1, #0 - bl ov18_02243CF4 - ldr r0, _0223B188 ; =0x0225334C - mvn r1, #0 - ldr r0, [r0, #4] - mov r2, #3 - add r0, r0, r4, lsl #2 - ldr r0, [r0, #0x10] - bl ov18_02243DE4 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0223B188: .word Unk_ov18_0225334C -_0223B18C: .word Unk_ov18_022493FE -_0223B190: .word 0x02249400 - arm_func_end ov18_0223B104 - - arm_func_start ov18_0223B194 -ov18_0223B194: ; 0x0223B194 - stmfd sp!, {r4, lr} - ldr r0, _0223B2F0 ; =0x0225334C - ldrb r0, [r0] - sub r4, r0, #4 - bl ov18_0223FFB8 - cmp r0, #0 - beq _0223B264 - cmp r0, #1 - ldmneia sp!, {r4, pc} - mov r0, #0xe - bl ov18_0223E994 - mov r0, r4 - bl ov18_0223E5E0 - ldr r0, _0223B2F0 ; =0x0225334C - mov r1, #0 - ldr r0, [r0, #4] - add r0, r0, r4, lsl #2 - ldr r0, [r0, #4] - bl ov18_02243BBC - mov r2, r0 - mov r0, #0 - mov r1, #0x56 - bl ov18_02243ECC - ldr r0, _0223B2F0 ; =0x0225334C - mov ip, r4, lsl #2 - ldr r0, [r0, #4] - mvn r1, #0 - add r0, r0, r4, lsl #2 - ldr r0, [r0, #4] - ldr r2, _0223B2F4 ; =0x022493FE - ldr r3, _0223B2F8 ; =0x02249400 - ldrh r2, [r2, ip] - ldrh r3, [r3, ip] - bl ov18_02243CF4 - ldr r0, _0223B2F0 ; =0x0225334C - mvn r1, #0 - ldr r0, [r0, #4] - mov r2, #3 - add r0, r0, r4, lsl #2 - ldr r0, [r0, #4] - bl ov18_02243DE4 - ldr r0, _0223B2F0 ; =0x0225334C - ldr r0, [r0, #4] - add r0, r0, r4, lsl #2 - ldr r0, [r0, #0x10] - bl ov18_02243B3C - mov r1, #0 - ldr r0, _0223B2F0 ; =0x0225334C - ldr r0, [r0, #4] - add r0, r0, r4, lsl #2 - str r1, [r0, #0x10] - b _0223B2E0 -_0223B264: - mov r0, #7 - bl ov18_0223E994 - ldr r0, _0223B2F0 ; =0x0225334C - mov r1, #0 - ldr r0, [r0, #4] - add r0, r0, r4, lsl #2 - ldr r0, [r0, #0x10] - bl ov18_02243BBC - mov r2, r0 - mov r0, #0 - mov r1, #0x11 - bl ov18_02243ECC - ldr r0, _0223B2F0 ; =0x0225334C - add r1, r4, #3 - ldr r0, [r0, #4] - mov ip, r1, lsl #2 - ldr r2, _0223B2F4 ; =0x022493FE - ldr r3, _0223B2F8 ; =0x02249400 - add r0, r0, r4, lsl #2 - ldrh r2, [r2, ip] - ldrh r3, [r3, ip] - ldr r0, [r0, #0x10] - mvn r1, #0 - bl ov18_02243CF4 - ldr r0, _0223B2F0 ; =0x0225334C - mvn r1, #0 - ldr r0, [r0, #4] - mov r2, #3 - add r0, r0, r4, lsl #2 - ldr r0, [r0, #0x10] - bl ov18_02243DE4 -_0223B2E0: - bl ov18_0223FF74 - ldr r0, _0223B2FC ; =ov18_0223B300 - bl ov18_0222F6C4 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0223B2F0: .word Unk_ov18_0225334C -_0223B2F4: .word Unk_ov18_022493FE -_0223B2F8: .word 0x02249400 -_0223B2FC: .word ov18_0223B300 - arm_func_end ov18_0223B194 - - arm_func_start ov18_0223B300 -ov18_0223B300: ; 0x0223B300 - stmfd sp!, {r3, lr} - bl ov18_0223FFCC - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_0222B0A8 - ldr r0, _0223B320 ; =ov18_0223A9F0 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223B320: .word ov18_0223A9F0 - arm_func_end ov18_0223B300 - - arm_func_start ov18_0223B324 -ov18_0223B324: ; 0x0223B324 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - ldr r1, _0223B3EC ; =0x022493E0 - ldr r0, _0223B3F0 ; =0x0225334C - ldrb r7, [r1] - ldrb r6, [r1, #1] - ldrb r5, [r1, #2] - ldrb r4, [r1, #3] - ldrb lr, [r1, #4] - ldrb ip, [r1, #5] - ldrb r3, [r1, #6] - ldrb r2, [r1, #7] - ldrb r1, [r0] - strb r7, [sp, #4] - strb r2, [sp, #3] - strb r6, [sp, #5] - strb r5, [sp, #6] - strb r4, [sp, #7] - strb lr, [sp] - strb ip, [sp, #1] - strb r3, [sp, #2] - cmp r1, #3 - add r2, sp, #4 - addhi sp, sp, #8 - ldmhiia sp!, {r3, r4, r5, r6, r7, pc} - ldrb r1, [r2, r1] - ldr r0, [r0, #4] - ldr r0, [r0, #0] - mov r2, r1 - bl ov18_0223D154 - ldr r0, _0223B3F0 ; =0x0225334C - ldrb r0, [r0] - cmp r0, #3 - addeq sp, sp, #8 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - bl ov18_0223E1D8 - ldr r1, _0223B3F0 ; =0x0225334C - cmp r0, #2 - ldrb ip, [r1] - ldr r1, [r1, #4] - movgt r0, #3 - add r2, sp, #0 - ldrb r3, [r2, r0] - add r0, r1, ip, lsl #2 - ldr r0, [r0, #4] - mvn r1, #0 - mov r2, #0 - bl ov18_02243C74 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_0223B3EC: .word Unk_ov18_022493E0 -_0223B3F0: .word Unk_ov18_0225334C - arm_func_end ov18_0223B324 - - .rodata - - - .global Unk_ov18_022493DC -Unk_ov18_022493DC: ; 0x022493DC - .byte 0x13, 0x14, 0x12, 0x56 - - .global Unk_ov18_022493E0 -Unk_ov18_022493E0: ; 0x022493E0 - .byte 0x3, 0x4, 0x5, 0x7 - - .global Unk_ov18_022493E4 -Unk_ov18_022493E4: ; 0x022493E4 - .byte 0xA, 0x9, 0xB, 0x6 - - .global Unk_ov18_022493E8 -Unk_ov18_022493E8: ; 0x022493E8 - .asciz "char/ybBgStep11.ncl.l" - - .global Unk_ov18_022493FE -Unk_ov18_022493FE: ; 0x022493FE - .short 0x8, 0x30, 0x5A - .short 0x30, 0xAC, 0x30, 0xC, 0x58, 0x5E, 0x58, 0xB0 - .short 0x58 - - .global Unk_ov18_02249416 -Unk_ov18_02249416: ; 0x02249416 - .short 0x8, 0x20, 0x54, 0x56, 0x5A, 0x20, 0xA6 - .short 0x56, 0xAC, 0x20, 0xF8, 0x56, 0x8, 0x78, 0xF8 - .short 0xA0, 0x8, 0x54, 0x54, 0x70, 0x5A, 0x54, 0xA6 - .short 0x70, 0xAC, 0x54, 0xF8, 0x70 - - .global Unk_ov18_0224944E -Unk_ov18_0224944E: ; 0x0224944E - .short 0x6, 0x1E, 0x46 - .short 0x48, 0x58, 0x1E, 0x98, 0x48, 0xAA, 0x1E, 0xEA - .short 0x48, 0x6, 0x76, 0xEA, 0x92, 0x9, 0x54, 0x43 - .short 0x70, 0x5B, 0x54, 0x95, 0x70, 0xAD, 0x54, 0xE7 - .word 0x70 - - .global Unk_ov18_02249488 -Unk_ov18_02249488: ; 0x02249488 - .byte 0x3, 0x2D, 0x27, 0x1D, 0x32, 0x30, 0x6, 0x0 - - - - .data - - - .global Unk_ov18_0224A3EC -Unk_ov18_0224A3EC: ; 0x0224A3EC - .asciz "char/ybObjWay.ncl.l" - - .global Unk_ov18_0224A400 -Unk_ov18_0224A400: ; 0x0224A400 - .ascii "char/jbBgStep1.ncg.l" - .space 0x4 - - .global Unk_ov18_0224A418 -Unk_ov18_0224A418: ; 0x0224A418 - .ascii "char/jbBgStep1.ncl.l" - .space 0x4 - - .global Unk_ov18_0224A430 -Unk_ov18_0224A430: ; 0x0224A430 - .ascii "char/jb2Ap.nsc.l" - .space 0x4 - - .global Unk_ov18_0224A444 -Unk_ov18_0224A444: ; 0x0224A444 - .ascii "char/ybObjMain.ncl.l" - .space 0x4 - - - - .bss - - - .global Unk_ov18_0225334C -Unk_ov18_0225334C: ; 0x0225334C - .space 0x4 - - .global Unk_ov18_02253350 -Unk_ov18_02253350: ; 0x02253350 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/scenesetselectway.s b/subprojects/NitroDWC/libraries/util/asm/scenesetselectway.s deleted file mode 100644 index 1786592e74..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/scenesetselectway.s +++ /dev/null @@ -1,672 +0,0 @@ - .include "macros/function.inc" - .include "include/scenesetselectway.inc" - - - - .text - - - arm_func_start ov18_0223B3F4 -ov18_0223B3F4: ; 0x0223B3F4 - stmfd sp!, {r4, r5, r6, lr} - bl ov18_0223DDCC - ldr r1, _0223B4FC ; =0x02253354 - mov r2, #0 - strb r2, [r1, #2] - ldrsb r2, [r1] - mov r4, r0 - cmp r2, #0 - moveq r0, #1 - streqb r0, [r1] - bl ov18_0222F74C - cmp r0, #0 - beq _0223B450 - ldr r0, _0223B4FC ; =0x02253354 - ldrsb r1, [r0, #1] - cmp r1, #2 - moveq r1, #0 - streqb r1, [r0, #1] - ldr r0, _0223B4FC ; =0x02253354 - ldrsb r1, [r0] - cmp r1, #2 - moveq r1, #1 - streqb r1, [r0] -_0223B450: - bl ov18_0223B518 - bl ov18_0222BC1C - bl ov18_0222F74C - mov r5, r0 - ldrb r1, [r4, #0xf4] - mov r0, #0x32 - ldr r3, _0223B500 ; =0x0224954C - add r2, r1, #1 - ldrsb r1, [r3, r5] - bl ov18_0222B594 - mov r0, #1 - bl ov18_0222B740 - mov r0, #1 - bl ov18_0222F774 - mov r6, r0 - mov r0, #1 - bl ov18_0222F774 - mov r5, r0 - mov r0, #1 - bl ov18_0222F774 - mov r4, r0 - mov r0, #1 - bl ov18_0222F774 - mov r3, r0 - ldr r1, _0223B504 ; =0x0224950A - ldr r0, _0223B4FC ; =0x02253354 - add ip, r1, r6, lsl #5 - ldrsb lr, [r0, #1] - ldr r1, _0223B508 ; =0x0224950E - ldr r0, _0223B50C ; =0x0224950C - add r1, r1, r5, lsl #5 - add r2, r0, r4, lsl #5 - mov r5, lr, lsl #3 - ldrh r0, [r5, ip] - ldrh r1, [r5, r1] - ldrh r2, [r5, r2] - ldr r4, _0223B510 ; =0x02249510 - add r3, r4, r3, lsl #5 - ldrh r3, [r5, r3] - bl ov18_0222BA04 - ldr r0, _0223B514 ; =ov18_0223B604 - bl ov18_0222F6C4 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_0223B4FC: .word Unk_ov18_02253354 -_0223B500: .word Unk_ov18_0224954C -_0223B504: .word Unk_ov18_0224950A -_0223B508: .word 0x0224950E -_0223B50C: .word 0x0224950C -_0223B510: .word 0x02249510 -_0223B514: .word ov18_0223B604 - arm_func_end ov18_0223B3F4 - - arm_func_start ov18_0223B518 -ov18_0223B518: ; 0x0223B518 - stmfd sp!, {r3, lr} - sub sp, sp, #0x18 - ldr ip, _0223B5DC ; =0x02249494 - add r3, sp, #0 - mov r2, #0xb -_0223B52C: - ldrb r1, [ip] - ldrb r0, [ip, #1] - add ip, ip, #2 - strb r1, [r3] - strb r0, [r3, #1] - add r3, r3, #2 - subs r2, r2, #1 - bne _0223B52C - ldr r0, _0223B5E0 ; =0x0224A45C - ldr r1, _0223B5E4 ; =0x020C07EC - bl ov18_0222B700 - ldr r0, _0223B5E8 ; =0x0224A474 - ldr r1, _0223B5EC ; =GX_LoadBGPltt - bl ov18_0222B700 - ldr r0, _0223B5F0 ; =0x0224A48C - ldr r1, _0223B5F4 ; =GX_LoadBG2Scr - bl ov18_0222B700 - add r0, sp, #0 - bl ov18_0222B6A0 - mov r1, #0 - mov r2, #4 - bl ov18_02243738 - ldr r1, _0223B5F8 ; =0x02253354 - ldr r2, _0223B5FC ; =0x04001008 - str r0, [r1, #4] - ldrh r0, [r2] - ldr r1, _0223B600 ; =0x0400000A - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2] - ldrh r0, [r2, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2, #2] - ldrh r0, [r1] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1] - ldrh r0, [r1, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1, #2] - add sp, sp, #0x18 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223B5DC: .word Unk_ov18_02249494 -_0223B5E0: .word Unk_ov18_0224A45C -_0223B5E4: .word 0x020C07EC -_0223B5E8: .word Unk_ov18_0224A474 -_0223B5EC: .word GX_LoadBGPltt -_0223B5F0: .word Unk_ov18_0224A48C -_0223B5F4: .word GX_LoadBG2Scr -_0223B5F8: .word Unk_ov18_02253354 -_0223B5FC: .word 0x04001008 -_0223B600: .word 0x0400000A - arm_func_end ov18_0223B518 - - arm_func_start ov18_0223B604 -ov18_0223B604: ; 0x0223B604 - stmfd sp!, {r3, lr} - mov r1, #1 - mov r2, r1 - mov r0, #2 - mov r3, #8 - bl ov18_02244194 - mov r0, #2 - mov r1, #0 - mov r2, #0x14 - mov r3, #8 - bl ov18_02244194 - mov r0, #1 - mov r1, r0 - bl ov18_02244C84 - mov r0, #0 - mov r1, #0x14 - bl ov18_02244C84 - ldr r0, _0223B654 ; =ov18_0223B658 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223B654: .word ov18_0223B658 - arm_func_end ov18_0223B604 - - arm_func_start ov18_0223B658 -ov18_0223B658: ; 0x0223B658 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_0222B790 - ldr r0, _0223B690 ; =ov18_0223B694 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223B690: .word ov18_0223B694 - arm_func_end ov18_0223B658 - - arm_func_start ov18_0223B694 -ov18_0223B694: ; 0x0223B694 - stmfd sp!, {r3, lr} - bl ov18_0222B034 - mvn r1, #1 - cmp r0, r1 - ldmeqia sp!, {r3, pc} - bl ov18_0222B0A8 - ldr r0, _0223B6B8 ; =ov18_0223B6BC - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223B6B8: .word ov18_0223B6BC - arm_func_end ov18_0223B694 - - arm_func_start ov18_0223B6BC -ov18_0223B6BC: ; 0x0223B6BC - stmfd sp!, {r3, lr} - bl ov18_0223B6D0 - bl ov18_0223B854 - bl ov18_0223B858 - ldmia sp!, {r3, pc} - arm_func_end ov18_0223B6BC - - arm_func_start ov18_0223B6D0 -ov18_0223B6D0: ; 0x0223B6D0 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r6, #0 - ldr r4, _0223B83C ; =0x022494CA - mov r7, r6 - mov r5, #1 -_0223B6E4: - mov r0, r5 - bl ov18_0222F774 - add r0, r4, r0, lsl #5 - add r0, r0, r7 - bl ov18_022455B8 - cmp r0, #0 - beq _0223B784 - mov r0, #1 - bl ov18_0222B048 - ldr r1, _0223B840 ; =0x02253354 - mov r0, #1 - strb r6, [r1, #1] - bl ov18_0222F774 - mov r6, r0 - mov r0, #1 - bl ov18_0222F774 - mov r5, r0 - mov r0, #1 - bl ov18_0222F774 - mov r4, r0 - mov r0, #1 - bl ov18_0222F774 - mov r3, r0 - ldr r0, _0223B840 ; =0x02253354 - ldr r1, _0223B844 ; =0x0224950A - ldrsb lr, [r0, #1] - ldr r0, _0223B848 ; =0x0224950C - add ip, r1, r6, lsl #5 - ldr r1, _0223B84C ; =0x0224950E - add r2, r0, r4, lsl #5 - ldr r4, _0223B850 ; =0x02249510 - add r1, r1, r5, lsl #5 - mov r5, lr, lsl #3 - add r3, r4, r3, lsl #5 - ldrh r0, [r5, ip] - ldrh r1, [r5, r1] - ldrh r2, [r5, r2] - ldrh r3, [r5, r3] - bl ov18_0222BA04 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0223B784: - add r6, r6, #1 - cmp r6, #4 - add r7, r7, #8 - blo _0223B6E4 - mov r0, #1 - bl ov18_02245470 - cmp r0, #0 - beq _0223B7B0 - mov r0, #1 - bl ov18_0222B048 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0223B7B0: - mov r0, #2 - bl ov18_02245470 - cmp r0, #0 - beq _0223B7CC - mov r0, #0 - bl ov18_0222B048 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0223B7CC: - mov r0, #0x40 - bl ov18_022454B0 - cmp r0, #0 - beq _0223B7E8 - mov r0, #1 - bl ov18_0223BA60 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0223B7E8: - mov r0, #0x80 - bl ov18_022454B0 - cmp r0, #0 - beq _0223B804 - mov r0, #3 - bl ov18_0223BA60 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0223B804: - mov r0, #0x20 - bl ov18_022454B0 - cmp r0, #0 - beq _0223B820 - mov r0, #0 - bl ov18_0223BA60 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0223B820: - mov r0, #0x10 - bl ov18_022454B0 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, #2 - bl ov18_0223BA60 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_0223B83C: .word Unk_ov18_022494CA -_0223B840: .word Unk_ov18_02253354 -_0223B844: .word Unk_ov18_0224950A -_0223B848: .word 0x0224950C -_0223B84C: .word 0x0224950E -_0223B850: .word 0x02249510 - arm_func_end ov18_0223B6D0 - - arm_func_start ov18_0223B854 -ov18_0223B854: ; 0x0223B854 - bx lr - arm_func_end ov18_0223B854 - - arm_func_start ov18_0223B858 -ov18_0223B858: ; 0x0223B858 - stmfd sp!, {r3, lr} - bl ov18_0222B034 - cmp r0, #0 - beq _0223B874 - cmp r0, #1 - beq _0223B880 - ldmia sp!, {r3, pc} -_0223B874: - mov r0, #7 - bl ov18_0223E994 - b _0223B898 -_0223B880: - mov r0, #6 - bl ov18_0223E994 - bl ov18_0223BB54 - ldr r0, _0223B8A4 ; =0x02253354 - mov r1, #1 - strb r1, [r0, #2] -_0223B898: - ldr r0, _0223B8A8 ; =ov18_0223B8AC - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223B8A4: .word Unk_ov18_02253354 -_0223B8A8: .word ov18_0223B8AC - arm_func_end ov18_0223B858 - - arm_func_start ov18_0223B8AC -ov18_0223B8AC: ; 0x0223B8AC - stmfd sp!, {r3, lr} - bl ov18_0222B0C0 - mov r0, #8 - bl ov18_02244394 - ldr r0, _0223B8C8 ; =ov18_0223B8CC - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223B8C8: .word ov18_0223B8CC - arm_func_end ov18_0223B8AC - - arm_func_start ov18_0223B8CC -ov18_0223B8CC: ; 0x0223B8CC - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0223B928 ; =0x02253354 - ldrb r0, [r0, #2] - cmp r0, #0 - beq _0223B8F4 - bl ov18_0222B004 -_0223B8F4: - mov r1, #1 - mov r2, r1 - mov r0, #3 - mov r3, #8 - bl ov18_02244194 - mov r0, #3 - mov r1, #0 - mov r2, #0x14 - mov r3, #8 - bl ov18_02244194 - ldr r0, _0223B92C ; =ov18_0223B930 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223B928: .word Unk_ov18_02253354 -_0223B92C: .word ov18_0223B930 - arm_func_end ov18_0223B8CC - - arm_func_start ov18_0223B930 -ov18_0223B930: ; 0x0223B930 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_0222B07C - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl ov18_0222BAF4 - bl ov18_0222B668 - ldr r0, _0223BA48 ; =0x02253354 - ldr r0, [r0, #4] - bl ov18_0224382C - mov r0, #1 - mov r1, r0 - bl ov18_02244CD8 - mov r0, #0 - mov r1, #0x14 - bl ov18_02244CD8 - ldr r0, _0223BA48 ; =0x02253354 - ldrb r1, [r0, #2] - cmp r1, #0 - bne _0223B9B4 - mov r0, #2 - mov r1, #0 - bl ov18_0222F6D4 - ldr r0, _0223BA4C ; =ov18_0223A6B4 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_0223B9B4: - ldrsb r0, [r0, #1] - cmp r0, #3 - addls pc, pc, r0, lsl #2 - ldmia sp!, {r3, pc} -_0223B9C4: ; jump table - b _0223B9D4 ; case 0 - b _0223B9EC ; case 1 - b _0223BA04 ; case 2 - b _0223BA1C ; case 3 -_0223B9D4: - mov r0, #2 - mov r1, #1 - bl ov18_0222F6D4 - ldr r0, _0223BA50 ; =ov18_0223A1D0 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_0223B9EC: - mov r0, #2 - mov r1, #1 - bl ov18_0222F6D4 - ldr r0, _0223BA54 ; =ov18_02233088 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_0223BA04: - mov r0, #2 - mov r1, #1 - bl ov18_0222F6D4 - ldr r0, _0223BA58 ; =ov18_02239D5C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_0223BA1C: - mov r0, #2 - mov r1, #0 - bl ov18_0222F6D4 - mov r0, #0 - mov r1, r0 - bl ov18_0222F710 - mov r0, #1 - bl ov18_0223909C - ldr r0, _0223BA5C ; =ov18_02236BE0 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223BA48: .word Unk_ov18_02253354 -_0223BA4C: .word ov18_0223A6B4 -_0223BA50: .word ov18_0223A1D0 -_0223BA54: .word ov18_02233088 -_0223BA58: .word ov18_02239D5C -_0223BA5C: .word ov18_02236BE0 - arm_func_end ov18_0223B930 - - arm_func_start ov18_0223BA60 -ov18_0223BA60: ; 0x0223BA60 - stmfd sp!, {r4, r5, r6, lr} - ldr r1, _0223BB3C ; =0x02253354 - mov r5, r0 - mov r0, #1 - ldrsb r4, [r1, #1] - bl ov18_0222F774 - ldr r2, _0223BB40 ; =0x022494AA - mvn r1, #0 - add r0, r2, r0, lsl #4 - add r0, r0, r4, lsl #2 - ldrsb r2, [r5, r0] - cmp r2, r1 - ldmeqia sp!, {r4, r5, r6, pc} - cmp r2, #0 - ldreq r0, _0223BB3C ; =0x02253354 - streqb r4, [r0] - mvn r0, #1 - cmp r2, r0 - ldrne r0, _0223BB3C ; =0x02253354 - strneb r2, [r0, #1] - bne _0223BAC0 - ldr r0, _0223BB3C ; =0x02253354 - ldrsb r1, [r0] - strb r1, [r0, #1] -_0223BAC0: - mov r0, #8 - bl ov18_0223E994 - mov r0, #1 - bl ov18_0222F774 - mov r6, r0 - mov r0, #1 - bl ov18_0222F774 - mov r5, r0 - mov r0, #1 - bl ov18_0222F774 - mov r4, r0 - mov r0, #1 - bl ov18_0222F774 - mov r3, r0 - ldr r1, _0223BB44 ; =0x0224950A - ldr r0, _0223BB3C ; =0x02253354 - add ip, r1, r6, lsl #5 - ldrsb lr, [r0, #1] - ldr r1, _0223BB48 ; =0x0224950E - ldr r0, _0223BB4C ; =0x0224950C - add r1, r1, r5, lsl #5 - add r2, r0, r4, lsl #5 - mov r5, lr, lsl #3 - ldrh r0, [r5, ip] - ldrh r1, [r5, r1] - ldrh r2, [r5, r2] - ldr r4, _0223BB50 ; =0x02249510 - add r3, r4, r3, lsl #5 - ldrh r3, [r5, r3] - bl ov18_0222BA04 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_0223BB3C: .word Unk_ov18_02253354 -_0223BB40: .word Unk_ov18_022494AA -_0223BB44: .word Unk_ov18_0224950A -_0223BB48: .word 0x0224950E -_0223BB4C: .word 0x0224950C -_0223BB50: .word 0x02249510 - arm_func_end ov18_0223BA60 - - arm_func_start ov18_0223BB54 -ov18_0223BB54: ; 0x0223BB54 - stmfd sp!, {r3, r4, lr} - sub sp, sp, #4 - ldr r1, _0223BBA4 ; =0x02249490 - ldr r0, _0223BBA8 ; =0x02253354 - ldrb lr, [r1] - ldrb ip, [r1, #1] - ldrb r3, [r1, #2] - ldrb r2, [r1, #3] - ldrsb r1, [r0, #1] - add r4, sp, #0 - strb lr, [sp] - strb ip, [sp, #1] - strb r3, [sp, #2] - strb r2, [sp, #3] - ldrb r1, [r4, r1] - ldr r0, [r0, #4] - mov r2, r1 - bl ov18_0223D154 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - ; .align 2, 0 -_0223BBA4: .word Unk_ov18_02249490 -_0223BBA8: .word Unk_ov18_02253354 - arm_func_end ov18_0223BB54 - - .rodata - - - .global Unk_ov18_02249490 -Unk_ov18_02249490: ; 0x02249490 - .byte 0x1, 0x2, 0x3, 0x4 - - .global Unk_ov18_02249494 -Unk_ov18_02249494: ; 0x02249494 - .asciz "char/ybBgStep21.ncl.l" - - .global Unk_ov18_022494AA -Unk_ov18_022494AA: ; 0x022494AA - .short 0xFEFF, 0xFEFF - .short 0x3, 0x3 - .short 0xFFFF, 0xFFFF - .short 0x1, 0x1 - .short 0xFEFF, 0xFEFF - .short 0x3, 0x2, 0x1 - .short 0x3, 0x2, 0x1 - - .global Unk_ov18_022494CA -Unk_ov18_022494CA: ; 0x022494CA - .short 0x8, 0x20, 0xF8, 0x5C, 0x8 - .short 0x64, 0x7E, 0xA0, 0x0, 0x0, 0x0, 0x0, 0x83 - .short 0x64, 0xF8, 0xA0, 0x8, 0x20, 0xF8, 0x5C, 0x8 - .short 0x64, 0x64, 0xA0, 0x68, 0x64, 0xC4, 0xA0, 0xC8 - .short 0x64, 0xF8, 0xA0 - - .global Unk_ov18_0224950A -Unk_ov18_0224950A: ; 0x0224950A - .short 0x6, 0x1E, 0xEA, 0x4E, 0x6 - .short 0x62, 0x70, 0x92, 0x0, 0x0, 0x0, 0x0, 0x80 - .short 0x62, 0xEA, 0x92, 0x6, 0x1E, 0xEA, 0x4E, 0x6 - .short 0x62, 0x56, 0x92, 0x66, 0x62, 0xB6, 0x92, 0xC6 - .short 0x62, 0xEA, 0x92, 0x0 - - .global Unk_ov18_0224954C -Unk_ov18_0224954C: ; 0x0224954C - .byte 0x3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6, 0x0 - - - - .data - - - .global Unk_ov18_0224A45C -Unk_ov18_0224A45C: ; 0x0224A45C - .ascii "char/jbBgStep2.ncg.l" - .space 0x4 - - .global Unk_ov18_0224A474 -Unk_ov18_0224A474: ; 0x0224A474 - .ascii "char/ybBgStep2.ncl.l" - .space 0x4 - - .global Unk_ov18_0224A48C -Unk_ov18_0224A48C: ; 0x0224A48C - .asciz "char/jb3Way.nsc.l" - .space 0x2 - - - - .bss - - - .global Unk_ov18_02253354 -Unk_ov18_02253354: ; 0x02253354 - .space 0x1 - - .global Unk_ov18_02253355 -Unk_ov18_02253355: ; 0x02253355 - .space 0x1 - - .global Unk_ov18_02253356 -Unk_ov18_02253356: ; 0x02253356 - .space 0x2 - - .global Unk_ov18_02253358 -Unk_ov18_02253358: ; 0x02253358 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/scenesettest.s b/subprojects/NitroDWC/libraries/util/asm/scenesettest.s deleted file mode 100644 index 678e082743..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/scenesettest.s +++ /dev/null @@ -1,380 +0,0 @@ - .include "macros/function.inc" - .include "include/scenesettest.inc" - - - - .text - - - arm_func_start ov18_0223BBAC -ov18_0223BBAC: ; 0x0223BBAC - stmfd sp!, {r3, lr} - ldr r0, _0223BC30 ; =0x0225335C - mov r1, #0 - strb r1, [r0] - bl ov18_0223BC38 - add r1, sp, #0 - mov r0, #0 - bl ov18_0222F724 - ldr r0, [sp] - cmp r0, #0 - bne _0223BBE8 - mov r0, #0x31 - sub r1, r0, #0x32 - mov r2, #0 - bl ov18_0222B594 -_0223BBE8: - mov r0, #2 - bl ov18_0222B740 - ldr r0, [sp] - cmp r0, #0 - bne _0223BC00 - bl ov18_0222BC1C -_0223BC00: - mov r0, #0x2c - bl ov18_0222B7C8 - mov r0, #0 - bl ov18_0222AD34 - bl ov18_0223BCE0 - mov r0, #0 - bl ov18_0222BC8C - mov r0, #0xc - bl ov18_0223E994 - ldr r0, _0223BC34 ; =ov18_0223BD78 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223BC30: .word Unk_ov18_0225335C -_0223BC34: .word ov18_0223BD78 - arm_func_end ov18_0223BBAC - - arm_func_start ov18_0223BC38 -ov18_0223BC38: ; 0x0223BC38 - stmfd sp!, {r3, lr} - ldr r0, _0223BCC0 ; =0x0224A4A0 - ldr r1, _0223BCC4 ; =0x020C07EC - bl ov18_0222B700 - ldr r0, _0223BCC8 ; =0x0224A4B8 - ldr r1, _0223BCCC ; =GX_LoadBGPltt - bl ov18_0222B700 - ldr r0, _0223BCD0 ; =0x0224A4D0 - ldr r1, _0223BCD4 ; =GX_LoadBG2Scr - bl ov18_0222B700 - ldr r3, _0223BCD8 ; =0x04001008 - ldr r1, _0223BCDC ; =0x0400000A - ldrh r0, [r3] - sub r2, r3, #0x1000 - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3] - ldrh r0, [r3, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3, #2] - ldrh r0, [r2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2] - ldrh r0, [r1] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1] - ldrh r0, [r1, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1, #2] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223BCC0: .word Unk_ov18_0224A4A0 -_0223BCC4: .word 0x020C07EC -_0223BCC8: .word Unk_ov18_0224A4B8 -_0223BCCC: .word GX_LoadBGPltt -_0223BCD0: .word Unk_ov18_0224A4D0 -_0223BCD4: .word GX_LoadBG2Scr -_0223BCD8: .word 0x04001008 -_0223BCDC: .word 0x0400000A - arm_func_end ov18_0223BC38 - - arm_func_start ov18_0223BCE0 -ov18_0223BCE0: ; 0x0223BCE0 - stmfd sp!, {r4, lr} - sub sp, sp, #0x10 - bl ov18_0223DDCC - mov r4, r0 - ldr r0, _0223BD70 ; =0x02249554 - add r1, sp, #4 - mov r2, #0xc - bl MIi_CpuCopy32 - add r1, sp, #0 - mov r0, #0 - bl ov18_0222F724 - ldr r0, [sp] - cmp r0, #2 - moveq r0, #4 - streqb r0, [sp, #0xe] - ldrneb r0, [r4, #0xf4] - addne r0, r0, #1 - strneb r0, [sp, #0xe] - add r0, sp, #4 - bl DWC_AC_Create - cmp r0, #0 - bne _0223BD3C - bl OS_Terminate -_0223BD3C: - ldr r0, [sp] - cmp r0, #0 - bne _0223BD54 - ldrb r0, [r4, #0xf4] - mov r1, r4 - bl ov4_021E60F8 -_0223BD54: - mov r0, #0 - ldr r1, _0223BD74 ; =ov18_0223BF18 - mov r2, r0 - mov r3, #0x78 - bl ov18_02246304 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0223BD70: .word Unk_ov18_02249554 -_0223BD74: .word ov18_0223BF18 - arm_func_end ov18_0223BCE0 - - arm_func_start ov18_0223BD78 -ov18_0223BD78: ; 0x0223BD78 - stmfd sp!, {r3, lr} - mov r0, #2 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - mov r0, #0 - mov r1, #0x15 - bl ov18_02244C84 - add r1, sp, #0 - mov r0, #0 - bl ov18_0222F724 - ldr r0, [sp] - cmp r0, #0 - bne _0223BDD4 - mov r1, #1 - mov r2, r1 - mov r0, #2 - mov r3, #8 - bl ov18_02244194 - mov r0, #1 - mov r1, r0 - bl ov18_02244C84 -_0223BDD4: - ldr r0, _0223BDE0 ; =ov18_0223BDE4 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223BDE0: .word ov18_0223BDE4 - arm_func_end ov18_0223BD78 - - arm_func_start ov18_0223BDE4 -ov18_0223BDE4: ; 0x0223BDE4 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0223BE14 ; =ov18_0223BE18 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223BE14: .word ov18_0223BE18 - arm_func_end ov18_0223BDE4 - - arm_func_start ov18_0223BE18 -ov18_0223BE18: ; 0x0223BE18 - stmfd sp!, {r3, lr} - bl ov18_0223BE2C - bl ov18_0223BE30 - bl ov18_0223BE34 - ldmia sp!, {r3, pc} - arm_func_end ov18_0223BE18 - - arm_func_start ov18_0223BE2C -ov18_0223BE2C: ; 0x0223BE2C - bx lr - arm_func_end ov18_0223BE2C - - arm_func_start ov18_0223BE30 -ov18_0223BE30: ; 0x0223BE30 - bx lr - arm_func_end ov18_0223BE30 - - arm_func_start ov18_0223BE34 -ov18_0223BE34: ; 0x0223BE34 - bx lr - arm_func_end ov18_0223BE34 - - arm_func_start ov18_0223BE38 -ov18_0223BE38: ; 0x0223BE38 - stmfd sp!, {r3, lr} - mov r0, #3 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - ldr r0, _0223BE5C ; =ov18_0223BE60 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223BE5C: .word ov18_0223BE60 - arm_func_end ov18_0223BE38 - - arm_func_start ov18_0223BE60 -ov18_0223BE60: ; 0x0223BE60 - stmfd sp!, {r3, lr} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0223BE80 ; =ov18_0223BE84 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223BE80: .word ov18_0223BE84 - arm_func_end ov18_0223BE60 - - arm_func_start ov18_0223BE84 -ov18_0223BE84: ; 0x0223BE84 - stmfd sp!, {r4, lr} - bl ov18_0223E5D0 - mov r4, r0 - bl DWC_AC_Destroy - cmp r0, #0 - ldmeqia sp!, {r4, pc} - bl sub_020A33F8 - add r1, r4, #0xf0 - mov r2, #0xe - bl MI_CpuCopy8 - bl sub_020A33F8 - add r1, r4, #0x1f0 - mov r2, #0xe - bl MI_CpuCopy8 - bl ov18_0222AE04 - mov r0, #0 - bl ov18_022448E0 - mov r0, #0 - mov r1, #0x15 - bl ov18_02244CD8 - ldr r0, _0223BF0C ; =0x0225335C - mov r1, #1 - ldrb r0, [r0] - cmp r0, #0 - mov r0, #0 - bne _0223BEFC - bl ov18_0222F6D4 - ldr r0, _0223BF10 ; =ov18_022365BC - bl ov18_0222F6C4 - ldmia sp!, {r4, pc} -_0223BEFC: - bl ov18_0222F6D4 - ldr r0, _0223BF14 ; =ov18_0223BFA8 - bl ov18_0222F6C4 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0223BF0C: .word Unk_ov18_0225335C -_0223BF10: .word ov18_022365BC -_0223BF14: .word ov18_0223BFA8 - arm_func_end ov18_0223BE84 - - arm_func_start ov18_0223BF18 -ov18_0223BF18: ; 0x0223BF18 - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - bl DWC_AC_Process - movs r4, r0 - ldmeqia sp!, {r3, r4, r5, pc} - bl ov18_0222BD44 - bl ov18_0223E9FC - cmp r4, #0 - ble _0223BF54 - ldr r1, _0223BF7C ; =0x0225335C - mov r2, #1 - mov r0, #0x11 - strb r2, [r1] - bl ov18_0223E994 - b _0223BF64 -_0223BF54: - bl DWC_AC_GetStatus - bl ov18_02236BD0 - mov r0, #0x12 - bl ov18_0223E994 -_0223BF64: - ldr r0, _0223BF80 ; =ov18_0223BE38 - bl ov18_0222F6C4 - mov r1, r5 - mov r0, #0 - bl ov18_022463AC - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0223BF7C: .word Unk_ov18_0225335C -_0223BF80: .word ov18_0223BE38 - arm_func_end ov18_0223BF18 - - arm_func_start ov18_0223BF84 -ov18_0223BF84: ; 0x0223BF84 - ldr ip, _0223BF94 ; =ov18_02245068 - mov r0, r1 - mov r1, #0x20 - bx ip - ; .align 2, 0 -_0223BF94: .word ov18_02245068 - arm_func_end ov18_0223BF84 - - arm_func_start ov18_0223BF98 -ov18_0223BF98: ; 0x0223BF98 - ldr ip, _0223BFA4 ; =ov18_022450D0 - mov r0, r1 - bx ip - ; .align 2, 0 -_0223BFA4: .word ov18_022450D0 - arm_func_end ov18_0223BF98 - - .rodata - - - .global Unk_ov18_02249554 -Unk_ov18_02249554: ; 0x02249554 - .word ov18_0223BF84 - .word ov18_0223BF98 - .byte 0x3, 0x1 - .space 0x2 - - - - .data - - - .global Unk_ov18_0224A4A0 -Unk_ov18_0224A4A0: ; 0x0224A4A0 - .ascii "char/jbBgStep3.ncg.l" - .space 0x4 - - .global Unk_ov18_0224A4B8 -Unk_ov18_0224A4B8: ; 0x0224A4B8 - .ascii "char/ybBgStep3.ncl.l" - .space 0x4 - - .global Unk_ov18_0224A4D0 -Unk_ov18_0224A4D0: ; 0x0224A4D0 - .asciz "char/xb4Multi.nsc.l" - - - - .bss - - - .global Unk_ov18_0225335C -Unk_ov18_0225335C: ; 0x0225335C - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/scenesettestcomplete.s b/subprojects/NitroDWC/libraries/util/asm/scenesettestcomplete.s deleted file mode 100644 index a478cba16f..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/scenesettestcomplete.s +++ /dev/null @@ -1,227 +0,0 @@ - .include "macros/function.inc" - .include "include/scenesettestcomplete.inc" - - - - .text - - - arm_func_start ov18_0223BFA8 -ov18_0223BFA8: ; 0x0223BFA8 - stmfd sp!, {r3, lr} - ldr r0, _0223BFD0 ; =0x02253360 - mov r1, #0 - strb r1, [r0] - bl ov18_0223BFD8 - mov r0, #0x2d - bl ov18_0222B7C8 - ldr r0, _0223BFD4 ; =ov18_0223C044 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223BFD0: .word Unk_ov18_02253360 -_0223BFD4: .word ov18_0223C044 - arm_func_end ov18_0223BFA8 - - arm_func_start ov18_0223BFD8 -ov18_0223BFD8: ; 0x0223BFD8 - stmfd sp!, {r3, lr} - ldr r0, _0223C034 ; =0x0224A4E4 - ldr r1, _0223C038 ; =GX_LoadBG2Scr - bl ov18_0222B700 - ldr r2, _0223C03C ; =0x04001008 - ldr r1, _0223C040 ; =0x0400000A - ldrh r0, [r2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2] - ldrh r0, [r2, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2, #2] - ldrh r0, [r1] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1] - ldrh r0, [r1, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1, #2] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223C034: .word Unk_ov18_0224A4E4 -_0223C038: .word GX_LoadBG2Scr -_0223C03C: .word 0x04001008 -_0223C040: .word 0x0400000A - arm_func_end ov18_0223BFD8 - - arm_func_start ov18_0223C044 -ov18_0223C044: ; 0x0223C044 - stmfd sp!, {r3, lr} - mov r0, #2 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - mov r0, #0 - mov r1, #0x15 - bl ov18_02244C84 - ldr r0, _0223C074 ; =ov18_0223C078 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223C074: .word ov18_0223C078 - arm_func_end ov18_0223C044 - - arm_func_start ov18_0223C078 -ov18_0223C078: ; 0x0223C078 - stmfd sp!, {r3, lr} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0223C098 ; =ov18_0223C09C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223C098: .word ov18_0223C09C - arm_func_end ov18_0223C078 - - arm_func_start ov18_0223C09C -ov18_0223C09C: ; 0x0223C09C - stmfd sp!, {r3, lr} - bl ov18_0223C1AC - bl ov18_0223C0AC - ldmia sp!, {r3, pc} - arm_func_end ov18_0223C09C - - arm_func_start ov18_0223C0AC -ov18_0223C0AC: ; 0x0223C0AC - bx lr - arm_func_end ov18_0223C0AC - - arm_func_start ov18_0223C0B0 -ov18_0223C0B0: ; 0x0223C0B0 - stmfd sp!, {r3, lr} - add r1, sp, #0 - mov r0, #0 - bl ov18_0222F724 - ldr r0, [sp] - cmp r0, #0 - beq _0223C0D0 - bl ov18_0223EF7C -_0223C0D0: - mov r1, #1 - mov r2, r1 - mov r0, #3 - mov r3, #8 - bl ov18_02244194 - mov r0, #3 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - ldr r0, _0223C104 ; =ov18_0223C108 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223C104: .word ov18_0223C108 - arm_func_end ov18_0223C0B0 - - arm_func_start ov18_0223C108 -ov18_0223C108: ; 0x0223C108 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_0223F4A4 - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, #0 - bl ov18_022448E0 - bl ov18_0222B668 - mov r0, #1 - mov r1, r0 - bl ov18_02244CD8 - mov r0, #0 - mov r1, #0x15 - bl ov18_02244CD8 - mov r0, #2 - mov r1, #1 - bl ov18_0222F6D4 - add r1, sp, #0 - mov r0, #0 - bl ov18_0222F724 - ldr r0, [sp] - cmp r0, #0 - bne _0223C198 - mov r0, #0 - mov r1, r0 - bl ov18_0222F710 - ldr r0, _0223C1A4 ; =ov18_02236BE0 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_0223C198: - ldr r0, _0223C1A8 ; =ov18_02230228 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223C1A4: .word ov18_02236BE0 -_0223C1A8: .word ov18_02230228 - arm_func_end ov18_0223C108 - - arm_func_start ov18_0223C1AC -ov18_0223C1AC: ; 0x0223C1AC - stmfd sp!, {r3, lr} - ldr r0, _0223C210 ; =0x02253360 - ldrb r1, [r0] - add r2, r1, #1 - and r1, r2, #0xff - strb r2, [r0] - cmp r1, #0xb4 - ldmloia sp!, {r3, pc} - add r1, sp, #0 - mov r0, #0 - bl ov18_0222F724 - bl ov18_0222F75C - cmp r0, #0 - beq _0223C204 - cmp r0, #1 - bne _0223C204 - ldr r0, [sp] - cmp r0, #0 - beq _0223C204 - ldr r0, _0223C214 ; =ov18_0222FEE8 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_0223C204: - ldr r0, _0223C218 ; =ov18_0223C0B0 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223C210: .word Unk_ov18_02253360 -_0223C214: .word ov18_0222FEE8 -_0223C218: .word ov18_0223C0B0 - arm_func_end ov18_0223C1AC - - .data - - - .global Unk_ov18_0224A4E4 -Unk_ov18_0224A4E4: ; 0x0224A4E4 - .asciz "char/xb4Multi.nsc.l" - - - - .bss - - - .global Unk_ov18_02253360 -Unk_ov18_02253360: ; 0x02253360 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/scenesettestconfirm.s b/subprojects/NitroDWC/libraries/util/asm/scenesettestconfirm.s deleted file mode 100644 index 8cbbcbdc2d..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/scenesettestconfirm.s +++ /dev/null @@ -1,221 +0,0 @@ - .include "macros/function.inc" - .include "include/scenesettestconfirm.inc" - - - - .text - - - arm_func_start ov18_0223C21C -ov18_0223C21C: ; 0x0223C21C - stmfd sp!, {r3, lr} - bl ov18_0223D910 - add r1, sp, #0 - mov r0, #0 - bl ov18_0222F724 - bl ov18_0223C274 - mov r0, #0x31 - sub r1, r0, #0x32 - mov r2, #0 - bl ov18_0222B594 - ldr r0, [sp] - cmp r0, #2 - beq _0223C254 - bl ov18_0222BC1C -_0223C254: - ldr r0, [sp] - cmp r0, #1 - bne _0223C264 - bl ov18_0223E2D0 -_0223C264: - ldr r0, _0223C270 ; =ov18_0223C2E0 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223C270: .word ov18_0223C2E0 - arm_func_end ov18_0223C21C - - arm_func_start ov18_0223C274 -ov18_0223C274: ; 0x0223C274 - stmfd sp!, {r3, lr} - ldr r0, _0223C2D0 ; =0x0224A4F8 - ldr r1, _0223C2D4 ; =GX_LoadBG2Scr - bl ov18_0222B700 - ldr r2, _0223C2D8 ; =0x04001008 - ldr r1, _0223C2DC ; =0x0400000A - ldrh r0, [r2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2] - ldrh r0, [r2, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2, #2] - ldrh r0, [r1] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1] - ldrh r0, [r1, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1, #2] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223C2D0: .word Unk_ov18_0224A4F8 -_0223C2D4: .word GX_LoadBG2Scr -_0223C2D8: .word 0x04001008 -_0223C2DC: .word 0x0400000A - arm_func_end ov18_0223C274 - - arm_func_start ov18_0223C2E0 -ov18_0223C2E0: ; 0x0223C2E0 - stmfd sp!, {r3, lr} - mov r1, #1 - mov r2, r1 - mov r0, #2 - mov r3, #8 - bl ov18_02244194 - mov r0, #2 - mov r1, #0 - mov r2, #0x14 - mov r3, #8 - bl ov18_02244194 - mov r0, #1 - mov r1, r0 - bl ov18_02244C84 - mov r0, #0 - mov r1, #0x14 - bl ov18_02244C84 - ldr r0, _0223C330 ; =ov18_0223C334 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223C330: .word ov18_0223C334 - arm_func_end ov18_0223C2E0 - - arm_func_start ov18_0223C334 -ov18_0223C334: ; 0x0223C334 - stmdb sp!, {lr} - sub sp, sp, #0x14 - ldr r0, _0223C3B4 ; =0x02249560 - add r3, sp, #8 - ldmia r0, {r0, r1, r2} - stmia r3, {r0, r1, r2} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - addne sp, sp, #0x14 - ldmneia sp!, {pc} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - addne sp, sp, #0x14 - ldmneia sp!, {pc} - add r1, sp, #4 - mov r0, #0 - bl ov18_0222F724 - mov r0, #0 - str r0, [sp] - mov r1, #1 - ldr r3, [sp, #4] - add r0, sp, #8 - ldr r0, [r0, r3, lsl #2] - mov r2, r1 - sub r3, r1, #2 - bl ov18_0223FC48 - ldr r0, _0223C3B8 ; =ov18_0223C3BC - bl ov18_0222F6C4 - add sp, sp, #0x14 - ldmia sp!, {pc} - ; .align 2, 0 -_0223C3B4: .word Unk_ov18_02249560 -_0223C3B8: .word ov18_0223C3BC - arm_func_end ov18_0223C334 - - arm_func_start ov18_0223C3BC -ov18_0223C3BC: ; 0x0223C3BC - stmfd sp!, {r3, lr} - bl ov18_0223C3F8 - bl ov18_0223C3FC - bl ov18_0223FFB8 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #6 - bl ov18_0223E994 - bl ov18_0223FF74 - mov r0, #6 - bl ov18_0223E994 - ldr r0, _0223C3F4 ; =ov18_0223C400 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223C3F4: .word ov18_0223C400 - arm_func_end ov18_0223C3BC - - arm_func_start ov18_0223C3F8 -ov18_0223C3F8: ; 0x0223C3F8 - bx lr - arm_func_end ov18_0223C3F8 - - arm_func_start ov18_0223C3FC -ov18_0223C3FC: ; 0x0223C3FC - bx lr - arm_func_end ov18_0223C3FC - - arm_func_start ov18_0223C400 -ov18_0223C400: ; 0x0223C400 - stmfd sp!, {r3, lr} - bl ov18_0223FFCC - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #3 - mov r1, #0 - mov r2, #0x14 - mov r3, #8 - bl ov18_02244194 - ldr r0, _0223C430 ; =ov18_0223C434 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223C430: .word ov18_0223C434 - arm_func_end ov18_0223C400 - - arm_func_start ov18_0223C434 -ov18_0223C434: ; 0x0223C434 - stmfd sp!, {r3, lr} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - mov r1, #0x14 - bl ov18_02244CD8 - mov r0, #0 - mov r1, #1 - bl ov18_0222F6D4 - ldr r0, _0223C46C ; =ov18_0223BBAC - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223C46C: .word ov18_0223BBAC - arm_func_end ov18_0223C434 - - .rodata - - - .global Unk_ov18_02249560 -Unk_ov18_02249560: ; 0x02249560 - .word 0x2B - .word 0x2B - .word 0x49 - - - - .data - - - .global Unk_ov18_0224A4F8 -Unk_ov18_0224A4F8: ; 0x0224A4F8 - .ascii "char/xb4None.nsc.l" - .space 0x2 - diff --git a/subprojects/NitroDWC/libraries/util/asm/scenesetusbcomplete.s b/subprojects/NitroDWC/libraries/util/asm/scenesetusbcomplete.s deleted file mode 100644 index 94d5121b69..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/scenesetusbcomplete.s +++ /dev/null @@ -1,198 +0,0 @@ - .include "macros/function.inc" - .include "include/scenesetusbcomplete.inc" - - - - .text - - - arm_func_start ov18_0223C470 -ov18_0223C470: ; 0x0223C470 - stmfd sp!, {r3, lr} - ldr r0, _0223C4A8 ; =0x02253364 - mov r1, #0 - strb r1, [r0] - bl ov18_0223C4B0 - mov r0, #8 - bl ov18_0222BBC0 - mov r0, #0x29 - bl ov18_0222B7C8 - mov r0, #0x10 - bl ov18_0223E994 - ldr r0, _0223C4AC ; =ov18_0223C530 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223C4A8: .word Unk_ov18_02253364 -_0223C4AC: .word ov18_0223C530 - arm_func_end ov18_0223C470 - - arm_func_start ov18_0223C4B0 -ov18_0223C4B0: ; 0x0223C4B0 - stmfd sp!, {r3, lr} - ldr r0, _0223C520 ; =0x0224A50C - ldr r1, _0223C524 ; =GX_LoadBG2Scr - bl ov18_0222B700 - ldr r3, _0223C528 ; =0x04001008 - ldr r1, _0223C52C ; =0x0400000A - ldrh r0, [r3] - sub r2, r3, #0x1000 - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3] - ldrh r0, [r3, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3, #2] - ldrh r0, [r2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2] - ldrh r0, [r1] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1] - ldrh r0, [r1, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1, #2] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223C520: .word Unk_ov18_0224A50C -_0223C524: .word GX_LoadBG2Scr -_0223C528: .word 0x04001008 -_0223C52C: .word 0x0400000A - arm_func_end ov18_0223C4B0 - - arm_func_start ov18_0223C530 -ov18_0223C530: ; 0x0223C530 - stmfd sp!, {r3, lr} - mov r0, #2 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - mov r0, #0 - mov r1, #0x15 - bl ov18_02244C84 - ldr r0, _0223C560 ; =ov18_0223C564 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223C560: .word ov18_0223C564 - arm_func_end ov18_0223C530 - - arm_func_start ov18_0223C564 -ov18_0223C564: ; 0x0223C564 - stmfd sp!, {r3, lr} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0223C584 ; =ov18_0223C588 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223C584: .word ov18_0223C588 - arm_func_end ov18_0223C564 - - arm_func_start ov18_0223C588 -ov18_0223C588: ; 0x0223C588 - stmfd sp!, {r3, lr} - bl ov18_0223C648 - bl ov18_0223C598 - ldmia sp!, {r3, pc} - arm_func_end ov18_0223C588 - - arm_func_start ov18_0223C598 -ov18_0223C598: ; 0x0223C598 - bx lr - arm_func_end ov18_0223C598 - - arm_func_start ov18_0223C59C -ov18_0223C59C: ; 0x0223C59C - stmfd sp!, {r3, lr} - mov r1, #1 - mov r2, r1 - mov r0, #3 - mov r3, #8 - bl ov18_02244194 - mov r0, #3 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - ldr r0, _0223C5D4 ; =ov18_0223C5D8 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223C5D4: .word ov18_0223C5D8 - arm_func_end ov18_0223C59C - - arm_func_start ov18_0223C5D8 -ov18_0223C5D8: ; 0x0223C5D8 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_022448E0 - bl ov18_0222B668 - mov r0, #1 - mov r1, r0 - bl ov18_02244CD8 - mov r0, #0 - mov r1, #0x15 - bl ov18_02244CD8 - mov r0, #0 - mov r1, r0 - bl ov18_0222F6D4 - mov r0, #0 - mov r1, #2 - bl ov18_0222F710 - ldr r0, _0223C644 ; =ov18_0223C21C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223C644: .word ov18_0223C21C - arm_func_end ov18_0223C5D8 - - arm_func_start ov18_0223C648 -ov18_0223C648: ; 0x0223C648 - stmfd sp!, {r3, lr} - ldr r0, _0223C674 ; =0x02253364 - ldrb r1, [r0] - add r2, r1, #1 - and r1, r2, #0xff - strb r2, [r0] - cmp r1, #0x78 - ldmloia sp!, {r3, pc} - ldr r0, _0223C678 ; =ov18_0223C59C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223C674: .word Unk_ov18_02253364 -_0223C678: .word ov18_0223C59C - arm_func_end ov18_0223C648 - - .data - - - .global Unk_ov18_0224A50C -Unk_ov18_0224A50C: ; 0x0224A50C - .asciz "char/xb4Multi.nsc.l" - - - - .bss - - - .global Unk_ov18_02253364 -Unk_ov18_02253364: ; 0x02253364 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/scenesetusbready.s b/subprojects/NitroDWC/libraries/util/asm/scenesetusbready.s deleted file mode 100644 index b7c04a5c00..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/scenesetusbready.s +++ /dev/null @@ -1,829 +0,0 @@ - .include "macros/function.inc" - .include "include/scenesetusbready.inc" - - - - .text - - - arm_func_start ov18_0223C67C -ov18_0223C67C: ; 0x0223C67C - stmfd sp!, {r3, lr} - ldr r0, _0223C6C4 ; =0x02253368 - mov r1, #0 - strb r1, [r0] - bl ov18_0223C6CC - mov r0, #8 - bl ov18_0222BBC0 - mov r0, #0x38 - sub r1, r0, #0x39 - mov r2, #0 - bl ov18_0222B594 - mov r0, #1 - bl ov18_0222B740 - mov r0, #0x27 - bl ov18_0222B7C8 - ldr r0, _0223C6C8 ; =ov18_0223C774 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223C6C4: .word Unk_ov18_02253368 -_0223C6C8: .word ov18_0223C774 - arm_func_end ov18_0223C67C - - arm_func_start ov18_0223C6CC -ov18_0223C6CC: ; 0x0223C6CC - stmfd sp!, {r3, lr} - ldr r0, _0223C754 ; =0x0224A520 - ldr r1, _0223C758 ; =0x020C07EC - bl ov18_0222B700 - ldr r0, _0223C75C ; =0x0224A538 - ldr r1, _0223C760 ; =GX_LoadBGPltt - bl ov18_0222B700 - ldr r0, _0223C764 ; =0x0224A550 - ldr r1, _0223C768 ; =GX_LoadBG2Scr - bl ov18_0222B700 - ldr r3, _0223C76C ; =0x04001008 - ldr r1, _0223C770 ; =0x0400000A - ldrh r0, [r3] - sub r2, r3, #0x1000 - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3] - ldrh r0, [r3, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3, #2] - ldrh r0, [r2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2] - ldrh r0, [r1] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1] - ldrh r0, [r1, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1, #2] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223C754: .word Unk_ov18_0224A520 -_0223C758: .word 0x020C07EC -_0223C75C: .word Unk_ov18_0224A538 -_0223C760: .word GX_LoadBGPltt -_0223C764: .word Unk_ov18_0224A550 -_0223C768: .word GX_LoadBG2Scr -_0223C76C: .word 0x04001008 -_0223C770: .word 0x0400000A - arm_func_end ov18_0223C6CC - - arm_func_start ov18_0223C774 -ov18_0223C774: ; 0x0223C774 - stmfd sp!, {r3, lr} - mov r1, #1 - mov r2, r1 - mov r0, #2 - mov r3, #8 - bl ov18_02244194 - mov r0, #2 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - mov r0, #1 - mov r1, r0 - bl ov18_02244C84 - mov r0, #0 - mov r1, #0x15 - bl ov18_02244C84 - ldr r0, _0223C7C4 ; =ov18_0223C7C8 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223C7C4: .word ov18_0223C7C8 - arm_func_end ov18_0223C774 - - arm_func_start ov18_0223C7C8 -ov18_0223C7C8: ; 0x0223C7C8 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #6 - bl ov18_0222B790 - ldr r0, _0223C800 ; =ov18_0223C804 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223C800: .word ov18_0223C804 - arm_func_end ov18_0223C7C8 - - arm_func_start ov18_0223C804 -ov18_0223C804: ; 0x0223C804 - stmfd sp!, {r3, lr} - bl ov18_0222B034 - mvn r1, #1 - cmp r0, r1 - ldmeqia sp!, {r3, pc} - bl ov18_0222B0A8 - ldr r0, _0223C828 ; =ov18_0223C82C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223C828: .word ov18_0223C82C - arm_func_end ov18_0223C804 - - arm_func_start ov18_0223C82C -ov18_0223C82C: ; 0x0223C82C - stmfd sp!, {r3, lr} - bl ov18_0223C840 - bl ov18_0223C878 - bl ov18_0223C87C - ldmia sp!, {r3, pc} - arm_func_end ov18_0223C82C - - arm_func_start ov18_0223C840 -ov18_0223C840: ; 0x0223C840 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02245470 - cmp r0, #0 - beq _0223C85C - mov r0, #1 - bl ov18_0222B048 -_0223C85C: - mov r0, #2 - bl ov18_02245470 - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, #0 - bl ov18_0222B048 - ldmia sp!, {r3, pc} - arm_func_end ov18_0223C840 - - arm_func_start ov18_0223C878 -ov18_0223C878: ; 0x0223C878 - bx lr - arm_func_end ov18_0223C878 - - arm_func_start ov18_0223C87C -ov18_0223C87C: ; 0x0223C87C - stmfd sp!, {r3, lr} - bl ov18_0222B034 - cmp r0, #0 - beq _0223C898 - cmp r0, #1 - beq _0223C8A4 - ldmia sp!, {r3, pc} -_0223C898: - mov r0, #7 - bl ov18_0223E994 - b _0223C8B8 -_0223C8A4: - mov r0, #6 - bl ov18_0223E994 - ldr r0, _0223C8C4 ; =0x02253368 - mov r1, #1 - strb r1, [r0] -_0223C8B8: - ldr r0, _0223C8C8 ; =ov18_0223C8CC - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223C8C4: .word Unk_ov18_02253368 -_0223C8C8: .word ov18_0223C8CC - arm_func_end ov18_0223C87C - - arm_func_start ov18_0223C8CC -ov18_0223C8CC: ; 0x0223C8CC - stmfd sp!, {r3, lr} - bl ov18_0222B0C0 - mov r0, #8 - bl ov18_02244394 - ldr r0, _0223C8E8 ; =ov18_0223C8EC - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223C8E8: .word ov18_0223C8EC - arm_func_end ov18_0223C8CC - - arm_func_start ov18_0223C8EC -ov18_0223C8EC: ; 0x0223C8EC - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_0222B004 - ldr r0, _0223C948 ; =0x02253368 - ldrb r0, [r0] - cmp r0, #0 - bne _0223C928 - mov r1, #1 - mov r2, r1 - mov r0, #3 - mov r3, #8 - bl ov18_02244194 -_0223C928: - mov r0, #3 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - ldr r0, _0223C94C ; =ov18_0223C950 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223C948: .word Unk_ov18_02253368 -_0223C94C: .word ov18_0223C950 - arm_func_end ov18_0223C8EC - - arm_func_start ov18_0223C950 -ov18_0223C950: ; 0x0223C950 - stmfd sp!, {r3, lr} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0223C9FC ; =0x02253368 - ldrb r0, [r0] - cmp r0, #0 - bne _0223C984 - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} -_0223C984: - bl ov18_0222B07C - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, #0 - bl ov18_022448E0 - ldr r0, _0223C9FC ; =0x02253368 - ldrb r0, [r0] - cmp r0, #0 - bne _0223C9B8 - bl ov18_0222B668 - mov r0, #1 - mov r1, r0 - bl ov18_02244CD8 -_0223C9B8: - mov r0, #0 - mov r1, #0x15 - bl ov18_02244CD8 - ldr r0, _0223C9FC ; =0x02253368 - mov r1, #1 - ldrb r0, [r0] - cmp r0, #0 - mov r0, #2 - bne _0223C9EC - bl ov18_0222F6D4 - ldr r0, _0223CA00 ; =ov18_0223A6B4 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_0223C9EC: - bl ov18_0222F6D4 - ldr r0, _0223CA04 ; =ov18_0223CA28 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223C9FC: .word Unk_ov18_02253368 -_0223CA00: .word ov18_0223A6B4 -_0223CA04: .word ov18_0223CA28 - arm_func_end ov18_0223C950 - - arm_func_start ov18_0223CA08 -ov18_0223CA08: ; 0x0223CA08 - ldr r0, _0223CA24 ; =0x027FFFA8 - ldrh r0, [r0] - and r0, r0, #0x8000 - movs r0, r0, asr #0xf - movne r0, #1 - moveq r0, #0 - bx lr - ; .align 2, 0 -_0223CA24: .word 0x027FFFA8 - arm_func_end ov18_0223CA08 - - arm_func_start ov18_0223CA28 -ov18_0223CA28: ; 0x0223CA28 - stmdb sp!, {lr} - sub sp, sp, #0x6c - ldr r0, _0223CAB0 ; =0x0225336C - mov r1, #0 - strb r1, [r0] - bl ov18_0223CABC - mov r0, #8 - bl ov18_0222BBC0 - mov r0, #2 - bl ov18_0222B740 - add r0, sp, #0x16 - bl OS_GetOwnerInfo - add r1, sp, #0 - mov r0, #0 - mov r2, #0x16 - bl MIi_CpuClear16 - ldrh r2, [sp, #0x30] - add r0, sp, #0x1a - add r1, sp, #0 - mov r2, r2, lsl #1 - bl MIi_CpuCopy16 - add r0, sp, #0 - mov r1, #0x28 - bl ov18_0222B83C - mov r0, #0 - bl ov18_0222AD34 - ldr r0, _0223CAB4 ; =ov18_0223CE08 - bl ov18_0223F564 - mov r0, #0xb - bl ov18_0223E994 - ldr r0, _0223CAB8 ; =ov18_0223CB64 - bl ov18_0222F6C4 - add sp, sp, #0x6c - ldmia sp!, {pc} - ; .align 2, 0 -_0223CAB0: .word Unk_ov18_0225336C -_0223CAB4: .word ov18_0223CE08 -_0223CAB8: .word ov18_0223CB64 - arm_func_end ov18_0223CA28 - - arm_func_start ov18_0223CABC -ov18_0223CABC: ; 0x0223CABC - stmfd sp!, {r3, lr} - ldr r0, _0223CB44 ; =0x0224A564 - ldr r1, _0223CB48 ; =0x020C07EC - bl ov18_0222B700 - ldr r0, _0223CB4C ; =0x0224A57C - ldr r1, _0223CB50 ; =GX_LoadBGPltt - bl ov18_0222B700 - ldr r0, _0223CB54 ; =0x0224A594 - ldr r1, _0223CB58 ; =GX_LoadBG2Scr - bl ov18_0222B700 - ldr r3, _0223CB5C ; =0x04001008 - ldr r1, _0223CB60 ; =0x0400000A - ldrh r0, [r3] - sub r2, r3, #0x1000 - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3] - ldrh r0, [r3, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r3, #2] - ldrh r0, [r2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r2] - ldrh r0, [r1] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1] - ldrh r0, [r1, #2] - bic r0, r0, #3 - orr r0, r0, #3 - strh r0, [r1, #2] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223CB44: .word Unk_ov18_0224A564 -_0223CB48: .word 0x020C07EC -_0223CB4C: .word Unk_ov18_0224A57C -_0223CB50: .word GX_LoadBGPltt -_0223CB54: .word Unk_ov18_0224A594 -_0223CB58: .word GX_LoadBG2Scr -_0223CB5C: .word 0x04001008 -_0223CB60: .word 0x0400000A - arm_func_end ov18_0223CABC - - arm_func_start ov18_0223CB64 -ov18_0223CB64: ; 0x0223CB64 - stmfd sp!, {r3, lr} - mov r0, #2 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - mov r0, #0 - mov r1, #0x15 - bl ov18_02244C84 - ldr r0, _0223CB94 ; =ov18_0223CB98 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223CB94: .word ov18_0223CB98 - arm_func_end ov18_0223CB64 - - arm_func_start ov18_0223CB98 -ov18_0223CB98: ; 0x0223CB98 - stmfd sp!, {r3, lr} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #2 - bl ov18_0222B790 - ldr r0, _0223CBC0 ; =ov18_0223CBC4 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223CBC0: .word ov18_0223CBC4 - arm_func_end ov18_0223CB98 - - arm_func_start ov18_0223CBC4 -ov18_0223CBC4: ; 0x0223CBC4 - stmfd sp!, {r3, lr} - bl ov18_0222B034 - mvn r1, #1 - cmp r0, r1 - ldmeqia sp!, {r3, pc} - bl ov18_0222B0A8 - ldr r0, _0223CBE8 ; =ov18_0223CBEC - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223CBE8: .word ov18_0223CBEC - arm_func_end ov18_0223CBC4 - - arm_func_start ov18_0223CBEC -ov18_0223CBEC: ; 0x0223CBEC - stmfd sp!, {r3, lr} - bl ov18_0223CC00 - bl ov18_0223CC38 - bl ov18_0223CC3C - ldmia sp!, {r3, pc} - arm_func_end ov18_0223CBEC - - arm_func_start ov18_0223CC00 -ov18_0223CC00: ; 0x0223CC00 - stmfd sp!, {r3, lr} - mov r0, #2 - bl ov18_02245470 - cmp r0, #0 - beq _0223CC20 - mov r0, #0 - bl ov18_0222B048 - ldmia sp!, {r3, pc} -_0223CC20: - bl ov18_0223CA08 - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, #0 - bl ov18_0222B048 - ldmia sp!, {r3, pc} - arm_func_end ov18_0223CC00 - - arm_func_start ov18_0223CC38 -ov18_0223CC38: ; 0x0223CC38 - bx lr - arm_func_end ov18_0223CC38 - - arm_func_start ov18_0223CC3C -ov18_0223CC3C: ; 0x0223CC3C - stmfd sp!, {r3, lr} - ldr r0, _0223CC80 ; =0x0225336C - ldrb r0, [r0] - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_0222B034 - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0223CC80 ; =0x0225336C - mov r1, #2 - strb r1, [r0] - bl ov18_0223E9FC - mov r0, #7 - bl ov18_0223E994 - ldr r0, _0223CC84 ; =ov18_0223CC88 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223CC80: .word Unk_ov18_0225336C -_0223CC84: .word ov18_0223CC88 - arm_func_end ov18_0223CC3C - - arm_func_start ov18_0223CC88 -ov18_0223CC88: ; 0x0223CC88 - stmfd sp!, {r3, lr} - bl ov18_0222B0C0 - mov r0, #8 - bl ov18_02244394 - ldr r0, _0223CCA4 ; =ov18_0223CCA8 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223CCA4: .word ov18_0223CCA8 - arm_func_end ov18_0223CC88 - - arm_func_start ov18_0223CCA8 -ov18_0223CCA8: ; 0x0223CCA8 - stmfd sp!, {r3, lr} - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_0222B004 - ldr r0, _0223CD0C ; =0x0225336C - ldrb r0, [r0] - add r0, r0, #0xfe - and r0, r0, #0xff - cmp r0, #1 - bhi _0223CCEC - mov r1, #1 - mov r2, r1 - mov r0, #3 - mov r3, #8 - bl ov18_02244194 -_0223CCEC: - mov r0, #3 - mov r1, #0 - mov r2, #0x15 - mov r3, #8 - bl ov18_02244194 - ldr r0, _0223CD10 ; =ov18_0223CD14 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223CD0C: .word Unk_ov18_0225336C -_0223CD10: .word ov18_0223CD14 - arm_func_end ov18_0223CCA8 - - arm_func_start ov18_0223CD14 -ov18_0223CD14: ; 0x0223CD14 - stmfd sp!, {r3, lr} - mov r0, #0 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0223CDF8 ; =0x0225336C - ldrb r0, [r0] - cmp r0, #2 - bne _0223CD48 - mov r0, #1 - bl ov18_02244170 - cmp r0, #0 - ldmneia sp!, {r3, pc} -_0223CD48: - bl ov18_0222B07C - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl ov18_0223F71C - bl ov18_0222AE04 - mov r0, #0 - bl ov18_022448E0 - ldr r0, _0223CDF8 ; =0x0225336C - ldrb r0, [r0] - add r0, r0, #0xfe - and r0, r0, #0xff - cmp r0, #1 - bhi _0223CD8C - bl ov18_0222B668 - mov r0, #1 - mov r1, r0 - bl ov18_02244CD8 -_0223CD8C: - mov r0, #0 - mov r1, #0x15 - bl ov18_02244CD8 - ldr r0, _0223CDF8 ; =0x0225336C - ldrb r0, [r0] - cmp r0, #2 - bne _0223CDC0 - mov r0, #2 - mov r1, #1 - bl ov18_0222F6D4 - ldr r0, _0223CDFC ; =ov18_0223A6B4 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_0223CDC0: - cmp r0, #3 - bne _0223CDE0 - mov r0, #2 - mov r1, #1 - bl ov18_0222F6D4 - ldr r0, _0223CE00 ; =ov18_0223C67C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_0223CDE0: - mov r0, #0 - mov r1, r0 - bl ov18_0222F6D4 - ldr r0, _0223CE04 ; =ov18_0223C470 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223CDF8: .word Unk_ov18_0225336C -_0223CDFC: .word ov18_0223A6B4 -_0223CE00: .word ov18_0223C67C -_0223CE04: .word ov18_0223C470 - arm_func_end ov18_0223CD14 - - arm_func_start ov18_0223CE08 -ov18_0223CE08: ; 0x0223CE08 - stmfd sp!, {r3, lr} - ldr r1, _0223CEE4 ; =0x0225336C - ldrb r2, [r1] - cmp r2, #0 - ldmneia sp!, {r3, pc} - cmp r0, #3 - addls pc, pc, r0, lsl #2 - ldmia sp!, {r3, pc} -_0223CE28: ; jump table - b _0223CE38 ; case 0 - b _0223CE78 ; case 1 - b _0223CE90 ; case 2 - b _0223CEC4 ; case 3 -_0223CE38: - mov r0, #3 - strb r0, [r1] - bl ov18_0223E9FC - mov r0, #0x12 - bl ov18_0223E994 - mov r1, #1 - mov ip, #0 - mov r2, r1 - sub r3, r1, #2 - mov r0, #0x10 - str ip, [sp] - bl ov18_0223FC48 - bl ov18_0222B0C0 - ldr r0, _0223CEE8 ; =ov18_0223CEF4 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_0223CE78: - mov r0, #1 - strb r0, [r1] - bl ov18_0223E9FC - ldr r0, _0223CEEC ; =ov18_0223CC88 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_0223CE90: - bl ov18_0223E9FC - mov r0, #0 - bl ov18_0223F800 - mov r2, #1 - mov r1, #0 - sub r3, r2, #2 - mov r0, #0x11 - str r1, [sp] - bl ov18_0223FC48 - bl ov18_0222B0C0 - ldr r0, _0223CEF0 ; =ov18_0223CF40 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_0223CEC4: - mov r0, #2 - strb r0, [r1] - bl ov18_0223E9FC - mov r0, #9 - bl ov18_0223E994 - ldr r0, _0223CEEC ; =ov18_0223CC88 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223CEE4: .word Unk_ov18_0225336C -_0223CEE8: .word ov18_0223CEF4 -_0223CEEC: .word ov18_0223CC88 -_0223CEF0: .word ov18_0223CF40 - arm_func_end ov18_0223CE08 - - arm_func_start ov18_0223CEF4 -ov18_0223CEF4: ; 0x0223CEF4 - stmfd sp!, {r3, lr} - bl ov18_0223FFB8 - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #6 - bl ov18_0223E994 - bl ov18_0223FF74 - ldr r0, _0223CF1C ; =ov18_0223CF20 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223CF1C: .word ov18_0223CF20 - arm_func_end ov18_0223CEF4 - - arm_func_start ov18_0223CF20 -ov18_0223CF20: ; 0x0223CF20 - stmfd sp!, {r3, lr} - bl ov18_0223FFCC - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0223CF3C ; =ov18_0223CC88 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223CF3C: .word ov18_0223CC88 - arm_func_end ov18_0223CF20 - - arm_func_start ov18_0223CF40 -ov18_0223CF40: ; 0x0223CF40 - stmfd sp!, {r3, lr} - bl ov18_0223FFB8 - cmp r0, #0 - beq _0223CF70 - cmp r0, #1 - ldmneia sp!, {r3, pc} - ldr r1, _0223CF94 ; =0x0225336C - mov r2, #3 - mov r0, #6 - strb r2, [r1] - bl ov18_0223E994 - b _0223CF84 -_0223CF70: - ldr r1, _0223CF94 ; =0x0225336C - mov r2, #1 - mov r0, #7 - strb r2, [r1] - bl ov18_0223E994 -_0223CF84: - bl ov18_0223FF74 - ldr r0, _0223CF98 ; =ov18_0223CF9C - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223CF94: .word Unk_ov18_0225336C -_0223CF98: .word ov18_0223CF9C - arm_func_end ov18_0223CF40 - - arm_func_start ov18_0223CF9C -ov18_0223CF9C: ; 0x0223CF9C - stmfd sp!, {r3, lr} - bl ov18_0223FFCC - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0223CFF4 ; =0x0225336C - ldrb r0, [r0] - cmp r0, #1 - bne _0223CFC8 - ldr r0, _0223CFF8 ; =ov18_0223CC88 - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} -_0223CFC8: - mov r0, #0xb - bl ov18_0223E994 - bl ov18_0222B0A8 - ldr r1, _0223CFF4 ; =0x0225336C - mov r2, #0 - ldr r0, _0223CFFC ; =ov18_0223CE08 - strb r2, [r1] - bl ov18_0223F800 - ldr r0, _0223D000 ; =ov18_0223CBEC - bl ov18_0222F6C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223CFF4: .word Unk_ov18_0225336C -_0223CFF8: .word ov18_0223CC88 -_0223CFFC: .word ov18_0223CE08 -_0223D000: .word ov18_0223CBEC - arm_func_end ov18_0223CF9C - - .data - - - .global Unk_ov18_0224A520 -Unk_ov18_0224A520: ; 0x0224A520 - .ascii "char/jbBgStep2.ncg.l" - .space 0x4 - - .global Unk_ov18_0224A538 -Unk_ov18_0224A538: ; 0x0224A538 - .ascii "char/ybBgStep2.ncl.l" - .space 0x4 - - .global Unk_ov18_0224A550 -Unk_ov18_0224A550: ; 0x0224A550 - .asciz "char/xb3Multi.nsc.l" - - .global Unk_ov18_0224A564 -Unk_ov18_0224A564: ; 0x0224A564 - .ascii "char/jbBgStep3.ncg.l" - .space 0x4 - - .global Unk_ov18_0224A57C -Unk_ov18_0224A57C: ; 0x0224A57C - .ascii "char/ybBgStep3.ncl.l" - .space 0x4 - - .global Unk_ov18_0224A594 -Unk_ov18_0224A594: ; 0x0224A594 - .asciz "char/jb4Usb.nsc.l" - .space 0x2 - - - - .bss - - - .global Unk_ov18_02253368 -Unk_ov18_02253368: ; 0x02253368 - .space 0x4 - - .global Unk_ov18_0225336C -Unk_ov18_0225336C: ; 0x0225336C - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/screen.s b/subprojects/NitroDWC/libraries/util/asm/screen.s deleted file mode 100644 index 59b5d8f95c..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/screen.s +++ /dev/null @@ -1,198 +0,0 @@ - .include "macros/function.inc" - .include "include/screen.inc" - - - - .text - - - arm_func_start ov18_0223D004 -ov18_0223D004: ; 0x0223D004 - stmfd sp!, {r4, lr} - mov r4, r0 - ldr r0, _0223D058 ; =0x00000608 - mov r1, #4 - bl ov18_02245068 - mov ip, r0 - ldr r3, _0223D05C ; =0x02253370 - mov r0, r4 - add r1, ip, #4 - mov r2, #0x600 - str ip, [r3] - bl MIi_CpuCopyFast - ldr r1, _0223D060 ; =ov18_0223D100 - mov r0, #1 - mov r2, #0 - mov r3, #0x78 - bl ov18_02246304 - ldr r1, _0223D05C ; =0x02253370 - ldr r1, [r1, #0] - str r0, [r1, #0] - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0223D058: .word 0x00000608 -_0223D05C: .word Unk_ov18_02253370 -_0223D060: .word ov18_0223D100 - arm_func_end ov18_0223D004 - - arm_func_start ov18_0223D064 -ov18_0223D064: ; 0x0223D064 - stmfd sp!, {r3, lr} - ldr r1, _0223D088 ; =0x02253370 - mov r0, #1 - ldr r1, [r1, #0] - ldr r1, [r1, #0] - bl ov18_022463CC - ldr r0, _0223D08C ; =0x02253370 - bl ov18_0224508C - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223D088: .word Unk_ov18_02253370 -_0223D08C: .word Unk_ov18_02253370 - arm_func_end ov18_0223D064 - - arm_func_start ov18_0223D090 -ov18_0223D090: ; 0x0223D090 - ldr r0, _0223D0A4 ; =0x02253370 - mov r1, #1 - ldr r0, [r0, #0] - strb r1, [r0, #0x604] - bx lr - ; .align 2, 0 -_0223D0A4: .word Unk_ov18_02253370 - arm_func_end ov18_0223D090 - - arm_func_start ov18_0223D0A8 -ov18_0223D0A8: ; 0x0223D0A8 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - ldr ip, _0223D0FC ; =0x02253370 - mov r7, r3 - ldr r3, [ip] - mov r8, r0 - add r0, r3, #4 - add r4, r0, r1, lsl #1 - mov r5, #0 - cmp r7, #0 - ldmleia sp!, {r4, r5, r6, r7, r8, pc} - mov r6, r2, lsl #1 -_0223D0D4: - mov r0, r8 - mov r1, r4 - mov r2, r6 - bl MIi_CpuCopy16 - add r5, r5, #1 - cmp r5, r7 - add r8, r8, #0x40 - add r4, r4, #0x40 - blt _0223D0D4 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_0223D0FC: .word Unk_ov18_02253370 - arm_func_end ov18_0223D0A8 - - arm_func_start ov18_0223D100 -ov18_0223D100: ; 0x0223D100 - stmfd sp!, {r3, lr} - ldr r0, _0223D150 ; =0x02253370 - ldr r1, [r0, #0] - ldrb r0, [r1, #0x604] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - add r0, r1, #4 - mov r1, #0x600 - bl DC_FlushRange - ldr r0, _0223D150 ; =0x02253370 - mov r1, #0 - ldr r0, [r0, #0] - mov r2, #0x600 - add r0, r0, #4 - bl GX_LoadBG2Scr - ldr r0, _0223D150 ; =0x02253370 - mov r1, #0 - ldr r0, [r0, #0] - strb r1, [r0, #0x604] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223D150: .word Unk_ov18_02253370 - arm_func_end ov18_0223D100 - - arm_func_start ov18_0223D154 -ov18_0223D154: ; 0x0223D154 - stmfd sp!, {r3, lr} - ldr ip, _0223D188 ; =0x02253370 - add r3, r0, r1, lsl #5 - mov r0, r2, lsl #5 - ldr r1, _0223D18C ; =ov18_0223D190 - str r3, [ip, #4] - add lr, r0, #0x5000000 - mov r0, #1 - mov r2, #0 - mov r3, #0x78 - str lr, [ip, #8] - bl ov18_02246304 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223D188: .word Unk_ov18_02253370 -_0223D18C: .word ov18_0223D190 - arm_func_end ov18_0223D154 - - arm_func_start ov18_0223D190 -ov18_0223D190: ; 0x0223D190 - stmfd sp!, {r4, lr} - ldr r1, _0223D1B8 ; =0x02253370 - mov r4, r0 - mov r2, #0x20 - ldmib r1, {r0, r1} - bl MIi_CpuCopy16 - mov r1, r4 - mov r0, #1 - bl ov18_022463AC - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0223D1B8: .word Unk_ov18_02253370 - arm_func_end ov18_0223D190 - - arm_func_start ov18_0223D1BC -ov18_0223D1BC: ; 0x0223D1BC - ldr r2, _0223D1DC ; =0x02253370 - ldr ip, _0223D1E0 ; =ov18_02246304 - str r0, [r2, #4] - ldr r1, _0223D1E4 ; =ov18_0223D1E8 - mov r0, #1 - mov r2, #0 - mov r3, #0x78 - bx ip - ; .align 2, 0 -_0223D1DC: .word Unk_ov18_02253370 -_0223D1E0: .word ov18_02246304 -_0223D1E4: .word ov18_0223D1E8 - arm_func_end ov18_0223D1BC - - arm_func_start ov18_0223D1E8 -ov18_0223D1E8: ; 0x0223D1E8 - stmfd sp!, {r4, lr} - ldr r1, _0223D214 ; =0x02253370 - mov r4, r0 - ldr r0, [r1, #4] - mov r1, #0x5000000 - mov r2, #0x200 - bl MIi_CpuCopy16 - mov r1, r4 - mov r0, #1 - bl ov18_022463AC - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0223D214: .word Unk_ov18_02253370 - arm_func_end ov18_0223D1E8 - - .bss - - - .global Unk_ov18_02253370 -Unk_ov18_02253370: ; 0x02253370 - .space 0x4 - - .global Unk_ov18_02253374 -Unk_ov18_02253374: ; 0x02253374 - .space 0x8 - diff --git a/subprojects/NitroDWC/libraries/util/asm/scrollbar.s b/subprojects/NitroDWC/libraries/util/asm/scrollbar.s deleted file mode 100644 index 7f28478170..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/scrollbar.s +++ /dev/null @@ -1,564 +0,0 @@ - .include "macros/function.inc" - .include "include/scrollbar.inc" - - - - .extern Unk_ov18_02249734 - .text - - - arm_func_start ov18_0223D218 -ov18_0223D218: ; 0x0223D218 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r0 - mov r7, r1 - mov r0, #0x20 - mov r1, #4 - mov r5, r2 - mov r4, r3 - bl ov18_02245068 - ldr r2, _0223D2E4 ; =0x0225337C - ldr ip, [sp, #0x18] - str r0, [r2, #0] - strb r6, [r0, #0x1b] - ldr r1, [r2, #0] - mov r0, r5 - strb r7, [r1, #0x19] - ldr r3, [r2, #0] - mov r1, r4 - strb ip, [r3, #0x1a] - ldr r2, [r2, #0] - add r2, r2, #0x10 - bl ov18_02244C2C - ldr r1, _0223D2E8 ; =0x0224956C - mov r0, #0 - ldrb r1, [r1, r6] - mov r2, #1 - bl ov18_02243F8C - mov r2, r5 - ldr r5, _0223D2E4 ; =0x0225337C - ldr r3, [sp, #0x18] - ldr r6, [r5, #0] - mvn r1, #0 - str r0, [r6, #0] - ldr r0, [r5, #0] - add r3, r4, r3 - ldr r0, [r0, #0] - bl ov18_02243CF4 - mov r0, r5 - ldr r0, [r0, #0] - mvn r1, #0 - ldr r0, [r0, #0] - mov r2, #1 - bl ov18_02243DE4 - mov r0, #0 - ldr r1, _0223D2EC ; =ov18_0223D390 - mov r2, r0 - mov r3, #0x80 - bl ov18_02246304 - mov r1, r5 - ldr r1, [r1, #0] - str r0, [r1, #0xc] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_0223D2E4: .word Unk_ov18_0225337C -_0223D2E8: .word Unk_ov18_0224956C -_0223D2EC: .word ov18_0223D390 - arm_func_end ov18_0223D218 - - arm_func_start ov18_0223D2F0 -ov18_0223D2F0: ; 0x0223D2F0 - stmfd sp!, {r3, lr} - ldr r1, _0223D324 ; =0x0225337C - mov r0, #0 - ldr r1, [r1, #0] - ldr r1, [r1, #0xc] - bl ov18_022463CC - ldr r0, _0223D324 ; =0x0225337C - ldr r0, [r0, #0] - ldr r0, [r0, #0] - bl ov18_02243B3C - ldr r0, _0223D328 ; =0x0225337C - bl ov18_0224508C - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223D324: .word Unk_ov18_0225337C -_0223D328: .word Unk_ov18_0225337C - arm_func_end ov18_0223D2F0 - - arm_func_start ov18_0223D32C -ov18_0223D32C: ; 0x0223D32C - ldr r0, _0223D33C ; =0x0225337C - ldr r0, [r0, #0] - ldrb r0, [r0, #0x1a] - bx lr - ; .align 2, 0 -_0223D33C: .word Unk_ov18_0225337C - arm_func_end ov18_0223D32C - - arm_func_start ov18_0223D340 -ov18_0223D340: ; 0x0223D340 - ldr r0, _0223D350 ; =0x0225337C - ldr r0, [r0, #0] - ldrb r0, [r0, #0x1d] - bx lr - ; .align 2, 0 -_0223D350: .word Unk_ov18_0225337C - arm_func_end ov18_0223D340 - - arm_func_start ov18_0223D354 -ov18_0223D354: ; 0x0223D354 - ldr ip, _0223D35C ; =ov18_0223D8A0 - bx ip - ; .align 2, 0 -_0223D35C: .word ov18_0223D8A0 - arm_func_end ov18_0223D354 - - arm_func_start ov18_0223D360 -ov18_0223D360: ; 0x0223D360 - ldr r0, _0223D374 ; =0x0225337C - mov r1, #0 - ldr r0, [r0, #0] - strb r1, [r0, #0x1e] - bx lr - ; .align 2, 0 -_0223D374: .word Unk_ov18_0225337C - arm_func_end ov18_0223D360 - - arm_func_start ov18_0223D378 -ov18_0223D378: ; 0x0223D378 - ldr r0, _0223D38C ; =0x0225337C - mov r1, #1 - ldr r0, [r0, #0] - strb r1, [r0, #0x1e] - bx lr - ; .align 2, 0 -_0223D38C: .word Unk_ov18_0225337C - arm_func_end ov18_0223D378 - - arm_func_start ov18_0223D390 -ov18_0223D390: ; 0x0223D390 - stmfd sp!, {r3, lr} - ldr r0, _0223D510 ; =0x0225337C - mov r2, #0 - ldr r1, [r0, #0] - strb r2, [r1, #0x1d] - ldr r1, [r0, #0] - ldrb r0, [r1, #0x1c] - cmp r0, #3 - addls pc, pc, r0, lsl #2 - ldmia sp!, {r3, pc} -_0223D3B8: ; jump table - b _0223D3C8 ; case 0 - b _0223D478 ; case 1 - b _0223D480 ; case 2 - b _0223D4C8 ; case 3 -_0223D3C8: - ldrb r0, [r1, #0x1e] - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov18_0223D6F0 - cmp r0, #4 - addls pc, pc, r0, lsl #2 - ldmia sp!, {r3, pc} -_0223D3E4: ; jump table - ldmia sp!, {r3, pc} ; case 0 - b _0223D3F8 ; case 1 - b _0223D458 ; case 2 - b _0223D464 ; case 3 - b _0223D470 ; case 4 -_0223D3F8: - ldr r0, _0223D510 ; =0x0225337C - ldr r0, [r0, #0] - ldrb r0, [r0, #0x1b] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, #0x16 - bl ov18_0223E994 - mov r0, #0 - bl ov18_0223E9B8 - ldr r0, _0223D510 ; =0x0225337C - mov r2, #1 - ldr r1, [r0, #0] - strb r2, [r1, #0x1d] - ldr r0, [r0, #0] - add r0, r0, #0x14 - bl ov18_022457B8 - ldr r0, _0223D510 ; =0x0225337C - mov r1, #1 - ldr r3, [r0, #0] - ldrb r2, [r3, #0x1a] - strb r2, [r3, #0x18] - ldr r0, [r0, #0] - strb r1, [r0, #0x1c] - ldmia sp!, {r3, pc} -_0223D458: - mov r0, #2 - bl ov18_0223D65C - ldmia sp!, {r3, pc} -_0223D464: - mov r0, #3 - bl ov18_0223D65C - ldmia sp!, {r3, pc} -_0223D470: - bl ov18_0223D688 - ldmia sp!, {r3, pc} -_0223D478: - bl ov18_0223D514 - ldmia sp!, {r3, pc} -_0223D480: - mov r0, #2 - bl ov18_0223D77C - cmp r0, #2 - beq _0223D4B0 - ldr r0, _0223D510 ; =0x0225337C - mov r3, #5 - ldr r2, [r0, #0] - mov r1, #0 - strb r3, [r2, #0x1d] - ldr r0, [r0, #0] - strb r1, [r0, #0x1c] - ldmia sp!, {r3, pc} -_0223D4B0: - bl ov18_0223D6F0 - cmp r0, #2 - ldmneia sp!, {r3, pc} - mov r0, #2 - bl ov18_0223D65C - ldmia sp!, {r3, pc} -_0223D4C8: - mov r0, #3 - bl ov18_0223D77C - cmp r0, #3 - beq _0223D4F8 - ldr r0, _0223D510 ; =0x0225337C - mov r3, #7 - ldr r2, [r0, #0] - mov r1, #0 - strb r3, [r2, #0x1d] - ldr r0, [r0, #0] - strb r1, [r0, #0x1c] - ldmia sp!, {r3, pc} -_0223D4F8: - bl ov18_0223D6F0 - cmp r0, #3 - ldmneia sp!, {r3, pc} - mov r0, #3 - bl ov18_0223D65C - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223D510: .word Unk_ov18_0225337C - arm_func_end ov18_0223D390 - - arm_func_start ov18_0223D514 -ov18_0223D514: ; 0x0223D514 - stmfd sp!, {r3, r4, lr} - sub sp, sp, #4 - ldr r0, _0223D5D8 ; =0x02249734 - bl ov18_02245530 - cmp r0, #0 - beq _0223D5B0 - add r0, sp, #0 - bl ov18_022457B8 - ldr r0, _0223D5DC ; =0x0225337C - ldrh r1, [sp] - ldr r3, [r0, #0] - ldrh r0, [r3, #0x10] - sub r0, r0, #0x1e - cmp r1, r0 - blt _0223D5B0 - ldrh r1, [sp, #2] - ldrh r0, [r3, #0x16] - ldrb r2, [r3, #0x18] - sub r0, r1, r0 - adds r4, r2, r0 - movmi r4, #0 - bmi _0223D588 - ldrb r1, [r3, #0x1b] - ldr r0, _0223D5E0 ; =0x02249570 - ldrb r2, [r3, #0x19] - ldrb r0, [r0, r1] - sub r0, r2, r0 - cmp r4, r0 - movge r4, r0 -_0223D588: - mov r0, r4 - bl ov18_0223D5E4 - mov r0, r4 - bl ov18_0223D8A0 - ldr r0, _0223D5DC ; =0x0225337C - mov r1, #2 - ldr r0, [r0, #0] - add sp, sp, #4 - strb r1, [r0, #0x1d] - ldmia sp!, {r3, r4, pc} -_0223D5B0: - bl ov18_0223E9FC - ldr r0, _0223D5DC ; =0x0225337C - mov r3, #0 - ldr r2, [r0, #0] - mov r1, #3 - strb r3, [r2, #0x1c] - ldr r0, [r0, #0] - strb r1, [r0, #0x1d] - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - ; .align 2, 0 -_0223D5D8: .word Unk_ov18_02249734 -_0223D5DC: .word Unk_ov18_0225337C -_0223D5E0: .word Unk_ov18_02249570 - arm_func_end ov18_0223D514 - - arm_func_start ov18_0223D5E4 -ov18_0223D5E4: ; 0x0223D5E4 - stmfd sp!, {r4, lr} - ldr r1, _0223D654 ; =0x0225337C - ldr r1, [r1, #0] - ldrb r1, [r1, #0x1a] - subs r4, r1, r0 - rsbmi r4, r4, #0 - cmp r4, #2 - movlt r0, #0 - blt _0223D61C - cmp r4, #6 - mov r0, #0x7f - bge _0223D61C - rsb r1, r4, #6 - bl FX_DivS32 -_0223D61C: - bl ov18_0223E9B8 - cmp r4, #2 - mvnlt r1, #0xff - blt _0223D648 - cmp r4, #6 - movge r1, #0x100 - bge _0223D648 - rsb r1, r4, #6 - mov r0, #0x200 - bl FX_DivS32 - sub r1, r0, #0x100 -_0223D648: - ldr r0, _0223D658 ; =0x0000FFFF - bl ov18_0223E9D8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0223D654: .word Unk_ov18_0225337C -_0223D658: .word 0x0000FFFF - arm_func_end ov18_0223D5E4 - - arm_func_start ov18_0223D65C -ov18_0223D65C: ; 0x0223D65C - ldr r1, _0223D684 ; =0x0225337C - cmp r0, #2 - ldr r1, [r1, #0] - strb r0, [r1, #0x1c] - ldr r0, _0223D684 ; =0x0225337C - moveq r1, #4 - ldr r0, [r0, #0] - movne r1, #6 - strb r1, [r0, #0x1d] - bx lr - ; .align 2, 0 -_0223D684: .word Unk_ov18_0225337C - arm_func_end ov18_0223D65C - - arm_func_start ov18_0223D688 -ov18_0223D688: ; 0x0223D688 - stmfd sp!, {r3, lr} - add r0, sp, #0 - bl ov18_022457B8 - ldr r0, _0223D6E8 ; =0x0225337C - ldr r2, _0223D6EC ; =0x02249570 - ldr ip, [r0] - ldrh r1, [sp, #2] - ldrb r3, [ip, #0x1b] - ldrh r0, [ip, #0x12] - ldrb r2, [r2, r3] - sub r0, r1, r0 - subs r0, r0, r2, lsr #1 - movmi r0, #0 - bmi _0223D6D0 - ldrb r1, [ip, #0x19] - sub r1, r1, r2 - cmp r0, r1 - movge r0, r1 -_0223D6D0: - bl ov18_0223D8A0 - ldr r0, _0223D6E8 ; =0x0225337C - mov r1, #3 - ldr r0, [r0, #0] - strb r1, [r0, #0x1d] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223D6E8: .word Unk_ov18_0225337C -_0223D6EC: .word Unk_ov18_02249570 - arm_func_end ov18_0223D688 - - arm_func_start ov18_0223D6F0 -ov18_0223D6F0: ; 0x0223D6F0 - stmfd sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - add r1, sp, #0 - mov r0, #1 - bl ov18_0223D7C8 - add r0, sp, #0 - bl ov18_02245640 - cmp r0, #0 - addne sp, sp, #8 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} - mov r5, #2 - add r4, sp, #0 -_0223D724: - mov r0, r5 - mov r1, r4 - bl ov18_0223D7C8 - mov r0, r4 - bl ov18_02245640 - cmp r0, #0 - addne sp, sp, #8 - movne r0, r5 - ldmneia sp!, {r3, r4, r5, pc} - add r5, r5, #1 - cmp r5, #3 - ble _0223D724 - add r1, sp, #0 - mov r0, #4 - bl ov18_0223D7C8 - add r0, sp, #0 - bl ov18_022455B8 - cmp r0, #0 - movne r0, #4 - moveq r0, #0 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov18_0223D6F0 - - arm_func_start ov18_0223D77C -ov18_0223D77C: ; 0x0223D77C - stmfd sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - mov r5, #2 - add r4, sp, #0 -_0223D78C: - mov r0, r5 - mov r1, r4 - bl ov18_0223D7C8 - mov r0, r4 - bl ov18_02245530 - cmp r0, #0 - addne sp, sp, #8 - movne r0, r5 - ldmneia sp!, {r3, r4, r5, pc} - add r5, r5, #1 - cmp r5, #3 - ble _0223D78C - mov r0, #0 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov18_0223D77C - - arm_func_start ov18_0223D7C8 -ov18_0223D7C8: ; 0x0223D7C8 - ldr r2, _0223D898 ; =0x0225337C - cmp r0, #4 - ldr r3, [r2, #0] - ldrh r3, [r3, #0x10] - strh r3, [r1] - add r3, r3, #0xc - strh r3, [r1, #4] - addls pc, pc, r0, lsl #2 - bx lr -_0223D7EC: ; jump table - bx lr ; case 0 - b _0223D800 ; case 1 - b _0223D834 ; case 2 - b _0223D854 ; case 3 - b _0223D878 ; case 4 -_0223D800: - ldr r3, [r2, #0] - ldr r0, _0223D89C ; =0x02249570 - ldrh ip, [r3, #0x12] - ldrb r3, [r3, #0x1a] - add r3, ip, r3 - strh r3, [r1, #2] - ldr r2, [r2, #0] - ldrh r3, [r1, #2] - ldrb r2, [r2, #0x1b] - ldrb r0, [r0, r2] - add r0, r3, r0 - strh r0, [r1, #6] - bx lr -_0223D834: - ldr r0, [r2, #0] - ldrh r0, [r0, #0x12] - sub r0, r0, #0xd - strh r0, [r1, #2] - ldr r0, [r2, #0] - ldrh r0, [r0, #0x12] - strh r0, [r1, #6] - bx lr -_0223D854: - ldr r0, [r2, #0] - ldrh r2, [r0, #0x12] - ldrb r0, [r0, #0x19] - add r0, r2, r0 - strh r0, [r1, #2] - ldrh r0, [r1, #2] - add r0, r0, #0xd - strh r0, [r1, #6] - bx lr -_0223D878: - ldr r0, [r2, #0] - ldrh r3, [r0, #0x12] - strh r3, [r1, #2] - ldr r0, [r2, #0] - ldrb r0, [r0, #0x19] - add r0, r3, r0 - strh r0, [r1, #6] - bx lr - ; .align 2, 0 -_0223D898: .word Unk_ov18_0225337C -_0223D89C: .word Unk_ov18_02249570 - arm_func_end ov18_0223D7C8 - - arm_func_start ov18_0223D8A0 -ov18_0223D8A0: ; 0x0223D8A0 - stmfd sp!, {r4, lr} - ldr r1, _0223D8D8 ; =0x0225337C - mov r4, r0 - ldr r0, [r1, #0] - mvn r1, #0 - ldrh r3, [r0, #0x12] - ldrh r2, [r0, #0x10] - ldr r0, [r0, #0] - add r3, r4, r3 - bl ov18_02243CF4 - ldr r0, _0223D8D8 ; =0x0225337C - ldr r0, [r0, #0] - strb r4, [r0, #0x1a] - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0223D8D8: .word Unk_ov18_0225337C - arm_func_end ov18_0223D8A0 - - .rodata - - - .global Unk_ov18_0224956C -Unk_ov18_0224956C: ; 0x0224956C - .byte 0x10, 0xF, 0xE, 0x0 - - .global Unk_ov18_02249570 -Unk_ov18_02249570: ; 0x02249570 - .byte 0x55, 0x36, 0x1E, 0x0 - - - - .bss - - - .global Unk_ov18_0225337C -Unk_ov18_0225337C: ; 0x0225337C - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/search_dwcutil.s b/subprojects/NitroDWC/libraries/util/asm/search_dwcutil.s deleted file mode 100644 index 6e5c51a411..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/search_dwcutil.s +++ /dev/null @@ -1,388 +0,0 @@ - .include "macros/function.inc" - .include "include/search_dwcutil.inc" - - - - .text - - - arm_func_start ov18_0223D8DC -ov18_0223D8DC: ; 0x0223D8DC - stmfd sp!, {r3, lr} - ldr r0, _0223D908 ; =0x02253380 - ldr r0, [r0, #0] - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0223D90C ; =0x00001E60 - mov r1, #0x20 - bl ov18_02245068 - ldr r1, _0223D908 ; =0x02253380 - str r0, [r1, #0] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223D908: .word Unk_ov18_02253380 -_0223D90C: .word 0x00001E60 - arm_func_end ov18_0223D8DC - - arm_func_start ov18_0223D910 -ov18_0223D910: ; 0x0223D910 - stmfd sp!, {r3, lr} - ldr r0, _0223D93C ; =0x02253380 - ldr r0, [r0, #0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} -_0223D924: - bl WM_GetAllowedChannel - cmp r0, #0x8000 - bne _0223D924 - ldr r0, _0223D940 ; =0x02253380 - bl ov18_0224508C - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223D93C: .word Unk_ov18_02253380 -_0223D940: .word Unk_ov18_02253380 - arm_func_end ov18_0223D910 - - arm_func_start ov18_0223D944 -ov18_0223D944: ; 0x0223D944 - stmfd sp!, {r3, r4, r5, lr} - ldr r1, _0223DA04 ; =0x02253380 - mov r0, #0 - ldr r1, [r1, #0] - mov r2, #0x348 - add r1, r1, #0x1300 - bl MIi_CpuClear16 - ldr r0, _0223DA04 ; =0x02253380 - ldr r1, _0223DA08 ; =ov18_0223DB3C - ldr r0, [r0, #0] - mov r2, #3 - bl WM_Initialize - cmp r0, #2 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - ldr r4, _0223DA04 ; =0x02253380 -_0223D984: - ldr r0, [r4, #0] - add r0, r0, #0x28c - add r0, r0, #0x1400 - bl WM_ReadStatus - ldr ip, [r4] - add r0, ip, #0x1600 - ldrh r0, [r0, #0x8c] - cmp r0, #2 - bne _0223D984 - add r0, ip, #0x248 - ldr r5, _0223DA0C ; =0x02249580 - add lr, r0, #0x1400 - mov r4, #4 -_0223D9B8: - ldmia r5!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - subs r4, r4, #1 - bne _0223D9B8 - ldr r0, [r5, #0] - add r1, ip, #0xf00 - str r0, [lr] - add r0, ip, #0x1000 - str r1, [r0, #0x648] - bl WM_GetDispersionScanPeriod - ldr r1, _0223DA04 ; =0x02253380 - ldr r1, [r1, #0] - add r1, r1, #0x1600 - strh r0, [r1, #0x50] - bl ov18_0223DA10 - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0223DA04: .word Unk_ov18_02253380 -_0223DA08: .word ov18_0223DB3C -_0223DA0C: .word Unk_ov18_02249580 - arm_func_end ov18_0223D944 - - arm_func_start ov18_0223DA10 -ov18_0223DA10: ; 0x0223DA10 - stmfd sp!, {r3, lr} - ldr r1, _0223DA3C ; =0x02253380 - ldr r0, _0223DA40 ; =ov18_0223DB3C - ldr r1, [r1, #0] - add r1, r1, #0x248 - add r1, r1, #0x1400 - bl WM_StartScanEx - cmp r0, #2 - moveq r0, #1 - movne r0, #0 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223DA3C: .word Unk_ov18_02253380 -_0223DA40: .word ov18_0223DB3C - arm_func_end ov18_0223DA10 - - arm_func_start ov18_0223DA44 -ov18_0223DA44: ; 0x0223DA44 - stmfd sp!, {r4, lr} - ldr r1, _0223DAD8 ; =0x02253380 - mov r2, #1 - ldr r0, [r1, #0] - add r0, r0, #0x1000 - strb r2, [r0, #0xe5c] - ldr r0, [r1, #0] - add r0, r0, #0x28c - add r0, r0, #0x1400 - bl WM_ReadStatus - ldr r0, _0223DAD8 ; =0x02253380 - ldr r0, [r0, #0] - add r0, r0, #0x1600 - ldrh r0, [r0, #0x8c] - cmp r0, #2 - beq _0223DAC0 - ldr r0, _0223DADC ; =ov18_0223DB3C - bl WM_Reset - cmp r0, #2 - movne r0, #0 - ldmneia sp!, {r4, pc} - ldr r4, _0223DAD8 ; =0x02253380 -_0223DA9C: - ldr r0, [r4, #0] - add r0, r0, #0x28c - add r0, r0, #0x1400 - bl WM_ReadStatus - ldr r0, [r4, #0] - add r0, r0, #0x1600 - ldrh r0, [r0, #0x8c] - cmp r0, #2 - bne _0223DA9C -_0223DAC0: - ldr r0, _0223DADC ; =ov18_0223DB3C - bl WM_End - cmp r0, #2 - movne r0, #0 - moveq r0, #1 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0223DAD8: .word Unk_ov18_02253380 -_0223DADC: .word ov18_0223DB3C - arm_func_end ov18_0223DA44 - - arm_func_start ov18_0223DAE0 -ov18_0223DAE0: ; 0x0223DAE0 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - ldr r1, _0223DB34 ; =0x02253380 - mov r6, #0 - ldr r1, [r1, #0] - ldr r5, _0223DB38 ; =0x02249578 - add r8, r1, #0x1300 - mov r7, r6 - str r8, [r0] - mov r4, #6 -_0223DB04: - mov r1, r5 - mov r2, r4 - add r0, r8, #0x20 - bl memcmp - cmp r0, #0 - add r7, r7, #1 - addne r6, r6, #1 - cmp r7, #0x14 - add r8, r8, #0x2a - blt _0223DB04 - mov r0, r6 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_0223DB34: .word Unk_ov18_02253380 -_0223DB38: .word Unk_ov18_02249578 - arm_func_end ov18_0223DAE0 - - arm_func_start ov18_0223DB3C -ov18_0223DB3C: ; 0x0223DB3C - stmfd sp!, {r3, lr} - ldrh r1, [r0, #2] - cmp r1, #0 - ldmneia sp!, {r3, pc} - ldr r1, _0223DB9C ; =0x02253380 - ldr r1, [r1, #0] - add r1, r1, #0x1000 - ldrb r1, [r1, #0xe5c] - cmp r1, #0 - ldreqh r1, [r0] - cmpeq r1, #0x26 - ldmneia sp!, {r3, pc} - ldrh r1, [r0, #8] - cmp r1, #4 - beq _0223DB8C - cmp r1, #5 - bne _0223DB94 - bl ov18_0223DBA0 - bl ov18_0223DA10 - ldmia sp!, {r3, pc} -_0223DB8C: - bl ov18_0223DA10 - ldmia sp!, {r3, pc} -_0223DB94: - bl OS_Terminate - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223DB9C: .word Unk_ov18_02253380 - arm_func_end ov18_0223DB3C - - arm_func_start ov18_0223DBA0 -ov18_0223DBA0: ; 0x0223DBA0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x88 - ldr r1, _0223DD68 ; =0x02253380 - mov fp, r0 - ldr r2, [r1, #0] - mov r1, #0x400 - add r0, r2, #0xf00 - add r2, r2, #0x1300 - str r2, [sp] - bl DC_InvalidateRange - ldrh r0, [fp, #0xe] - mov sl, #0 - cmp r0, #0 - addle sp, sp, #0x88 - ldmleia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0223DBDC: - add r0, fp, sl, lsl #2 - ldr r4, [r0, #0x10] - ldrb r0, [r4, #0xc] - cmp r0, #0 - beq _0223DD50 - ldrh r0, [r4, #0x3c] - cmp r0, #0 - bne _0223DD50 - ldr r7, [sp] - mov r5, #0 - mov r6, #6 -_0223DC08: - mov r2, r6 - add r0, r4, #4 - add r1, r7, #0x20 - bl memcmp - cmp r0, #0 - beq _0223DC30 - add r5, r5, #1 - cmp r5, #0x14 - add r7, r7, #0x2a - blt _0223DC08 -_0223DC30: - cmp r5, #0x14 - bne _0223DC7C - ldr r8, [sp] - ldr r7, _0223DD6C ; =0x02249578 - mov r5, #0 - mov r6, #6 -_0223DC48: - mov r1, r7 - mov r2, r6 - add r0, r8, #0x20 - bl memcmp - cmp r0, #0 - beq _0223DC70 - add r5, r5, #1 - cmp r5, #0x14 - add r8, r8, #0x2a - blt _0223DC48 -_0223DC70: - cmp r5, #0x14 - addeq sp, sp, #0x88 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0223DC7C: - ldr r0, [sp] - mov r1, #0x2a - mla sb, r5, r1, r0 - add r0, r4, #4 - add r1, sb, #0x20 - mov r2, #6 - bl MI_CpuCopy8 - mov r1, sb - add r0, r4, #0xc - mov r2, #0x20 - bl MI_CpuCopy8 - add r0, fp, sl, lsl #1 - ldrh r0, [r0, #0x50] - strh r0, [sb, #0x26] - ldrh r0, [r4, #0x2c] - tst r0, #0x10 - moveq r0, #0 - streqb r0, [sb, #0x28] - beq _0223DD50 - mov r2, #1 - add r0, sp, #4 - mov r1, r4 - strb r2, [sb, #0x28] - bl WM_GetOtherElements - ldrb r8, [sp, #4] - mov r7, #0 - cmp r8, #0 - ble _0223DD50 - ldr r5, _0223DD70 ; =0x02249574 - mov r4, #4 - add r6, sp, #4 -_0223DCF8: - add r1, r6, r7, lsl #3 - ldrb r0, [r1, #4] - cmp r0, #0x30 - moveq r0, #2 - streqb r0, [sb, #0x28] - beq _0223DD50 - cmp r0, #0xdd - bne _0223DD44 - ldrb r0, [r1, #5] - cmp r0, #4 - blo _0223DD44 - ldr r0, [r1, #8] - mov r1, r5 - mov r2, r4 - bl memcmp - cmp r0, #0 - moveq r0, #2 - streqb r0, [sb, #0x28] - beq _0223DD50 -_0223DD44: - add r7, r7, #1 - cmp r7, r8 - blt _0223DCF8 -_0223DD50: - ldrh r0, [fp, #0xe] - add sl, sl, #1 - cmp sl, r0 - blt _0223DBDC - add sp, sp, #0x88 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0223DD68: .word Unk_ov18_02253380 -_0223DD6C: .word Unk_ov18_02249578 -_0223DD70: .word Unk_ov18_02249574 - arm_func_end ov18_0223DBA0 - - .rodata - - - .global Unk_ov18_02249574 -Unk_ov18_02249574: ; 0x02249574 - .byte 0x0, 0x50, 0xF2, 0x1 - - .global Unk_ov18_02249578 -Unk_ov18_02249578: ; 0x02249578 - .space 0x8 - - .global Unk_ov18_02249580 -Unk_ov18_02249580: ; 0x02249580 - .space 0x4 - .byte 0x0, 0x4, 0xFF, 0x3F - .space 0x2 - .short 0xFFFF - .short 0xFFFF - .short 0xFFFF - .space 0x34 - - - .bss - - - .global Unk_ov18_02253380 -Unk_ov18_02253380: ; 0x02253380 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/setting.s b/subprojects/NitroDWC/libraries/util/asm/setting.s deleted file mode 100644 index 688b94c247..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/setting.s +++ /dev/null @@ -1,943 +0,0 @@ - .include "macros/function.inc" - .include "include/setting.inc" - - - - .text - - - arm_func_start ov18_0223DD74 -ov18_0223DD74: ; 0x0223DD74 - stmfd sp!, {r3, lr} - ldr r0, _0223DDAC ; =0x000006F8 - mov r1, #0x20 - bl ov18_02245068 - ldr r1, _0223DDB0 ; =0x02253384 - add r2, r0, #0xf8 - str r0, [r1, #0] - ldr r1, _0223DDB4 ; =0x0000A001 - add r0, r2, #0x400 - bl MATHi_CRC16InitTableRev - ldr r0, _0223DDB0 ; =0x02253384 - ldr r0, [r0, #0] - bl sub_020A2A34 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223DDAC: .word 0x000006F8 -_0223DDB0: .word Unk_ov18_02253384 -_0223DDB4: .word 0x0000A001 - arm_func_end ov18_0223DD74 - - arm_func_start ov18_0223DDB8 -ov18_0223DDB8: ; 0x0223DDB8 - ldr ip, _0223DDC4 ; =ov18_0224508C - ldr r0, _0223DDC8 ; =0x02253384 - bx ip - ; .align 2, 0 -_0223DDC4: .word ov18_0224508C -_0223DDC8: .word Unk_ov18_02253384 - arm_func_end ov18_0223DDB8 - - arm_func_start ov18_0223DDCC -ov18_0223DDCC: ; 0x0223DDCC - ldr r0, _0223DDDC ; =0x02253384 - ldr r0, [r0, #0] - add r0, r0, #0x400 - bx lr - ; .align 2, 0 -_0223DDDC: .word Unk_ov18_02253384 - arm_func_end ov18_0223DDCC - - arm_func_start ov18_0223DDE0 -ov18_0223DDE0: ; 0x0223DDE0 - ldr r1, _0223DDF0 ; =0x02253384 - ldr r1, [r1, #0] - strb r0, [r1, #0x4f5] - bx lr - ; .align 2, 0 -_0223DDF0: .word Unk_ov18_02253384 - arm_func_end ov18_0223DDE0 - - arm_func_start ov18_0223DDF4 -ov18_0223DDF4: ; 0x0223DDF4 - ldr r1, _0223DE04 ; =0x02253384 - ldr r1, [r1, #0] - strb r0, [r1, #0x4f6] - bx lr - ; .align 2, 0 -_0223DE04: .word Unk_ov18_02253384 - arm_func_end ov18_0223DDF4 - - arm_func_start ov18_0223DE08 -ov18_0223DE08: ; 0x0223DE08 - stmfd sp!, {r3, lr} - ldr r1, _0223DE34 ; =0x02253384 - mov r2, #0x20 - ldr r1, [r1, #0] - add r1, r1, #0x440 - bl MI_CpuCopy8 - ldr r0, _0223DE34 ; =0x02253384 - mov r1, #0 - ldr r0, [r0, #0] - strb r1, [r0, #0x4e7] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223DE34: .word Unk_ov18_02253384 - arm_func_end ov18_0223DE08 - - arm_func_start ov18_0223DE38 -ov18_0223DE38: ; 0x0223DE38 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r1, _0223DFCC ; =0x02253384 - mov r6, r0 - ldr r0, [r1, #0] - mov r1, #0 - add r0, r0, #0x480 - mov r2, #0x10 - bl MI_CpuFill8 - mov r0, r6 - mov r1, #0x20 - bl ov18_02245E50 - mov r5, r0 - cmp r5, #0xa - bgt _0223DE80 - bge _0223DE98 - cmp r5, #0 - beq _0223DE98 - b _0223DEF0 -_0223DE80: - cmp r5, #0x1a - bgt _0223DE90 - beq _0223DE98 - b _0223DEF0 -_0223DE90: - cmp r5, #0x20 - bne _0223DEF0 -_0223DE98: - ldr r0, _0223DFCC ; =0x02253384 - cmp r5, #0 - ldr r2, [r0, #0] - mov r4, #0 - ldrb r1, [r2, #0x4e6] - bic r1, r1, #0xfc - strb r1, [r2, #0x4e6] - ldr r0, [r0, #0] - add r8, r0, #0x480 - ble _0223DF1C -_0223DEC0: - ldrb r0, [r6, r4] - add sb, r6, r4 - bl ov18_0223E8BC - mov r7, r0 - ldrb r0, [sb, #1] - bl ov18_0223E8BC - add r0, r0, r7, lsl #4 - add r4, r4, #2 - cmp r4, r5 - strb r0, [r8], #1 - blt _0223DEC0 - b _0223DF1C -_0223DEF0: - ldr r1, _0223DFCC ; =0x02253384 - mov r0, r6 - ldr r4, [r1, #0] - mov r2, #0x10 - ldrb r3, [r4, #0x4e6] - bic r3, r3, #0xfc - orr r3, r3, #4 - strb r3, [r4, #0x4e6] - ldr r1, [r1, #0] - add r1, r1, #0x480 - bl MI_CpuCopy8 -_0223DF1C: - cmp r5, #5 - bgt _0223DF34 - bge _0223DF78 - cmp r5, #0 - beq _0223DF60 - b _0223DFB0 -_0223DF34: - cmp r5, #0xd - bgt _0223DF54 - cmp r5, #0xa - blt _0223DFB0 - beq _0223DF78 - cmp r5, #0xd - beq _0223DF94 - b _0223DFB0 -_0223DF54: - cmp r5, #0x1a - beq _0223DF94 - b _0223DFB0 -_0223DF60: - ldr r0, _0223DFCC ; =0x02253384 - ldr r1, [r0, #0] - ldrb r0, [r1, #0x4e6] - bic r0, r0, #3 - strb r0, [r1, #0x4e6] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_0223DF78: - ldr r0, _0223DFCC ; =0x02253384 - ldr r1, [r0, #0] - ldrb r0, [r1, #0x4e6] - bic r0, r0, #3 - orr r0, r0, #1 - strb r0, [r1, #0x4e6] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_0223DF94: - ldr r0, _0223DFCC ; =0x02253384 - ldr r1, [r0, #0] - ldrb r0, [r1, #0x4e6] - bic r0, r0, #3 - orr r0, r0, #2 - strb r0, [r1, #0x4e6] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_0223DFB0: - ldr r0, _0223DFCC ; =0x02253384 - ldr r1, [r0, #0] - ldrb r0, [r1, #0x4e6] - bic r0, r0, #3 - orr r0, r0, #3 - strb r0, [r1, #0x4e6] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ; .align 2, 0 -_0223DFCC: .word Unk_ov18_02253384 - arm_func_end ov18_0223DE38 - - arm_func_start ov18_0223DFD0 -ov18_0223DFD0: ; 0x0223DFD0 - ldr r1, _0223DFE4 ; =0x02253384 - ldr ip, _0223DFE8 ; =ov18_0223E834 - ldr r1, [r1, #0] - add r1, r1, #0x4c0 - bx ip - ; .align 2, 0 -_0223DFE4: .word Unk_ov18_02253384 -_0223DFE8: .word ov18_0223E834 - arm_func_end ov18_0223DFD0 - - arm_func_start ov18_0223DFEC -ov18_0223DFEC: ; 0x0223DFEC - ldr r1, _0223E000 ; =0x02253384 - ldr ip, _0223E004 ; =ov18_0223E834 - ldr r1, [r1, #0] - add r1, r1, #0x4f0 - bx ip - ; .align 2, 0 -_0223E000: .word Unk_ov18_02253384 -_0223E004: .word ov18_0223E834 - arm_func_end ov18_0223DFEC - - arm_func_start ov18_0223E008 -ov18_0223E008: ; 0x0223E008 - ldr r1, _0223E020 ; =0x02253384 - ldr ip, _0223E024 ; =ov18_0223E834 - ldr r1, [r1, #0] - add r1, r1, #0xc4 - add r1, r1, #0x400 - bx ip - ; .align 2, 0 -_0223E020: .word Unk_ov18_02253384 -_0223E024: .word ov18_0223E834 - arm_func_end ov18_0223E008 - - arm_func_start ov18_0223E028 -ov18_0223E028: ; 0x0223E028 - ldr r1, _0223E040 ; =0x02253384 - ldr ip, _0223E044 ; =ov18_0223E834 - ldr r1, [r1, #0] - add r1, r1, #0xc8 - add r1, r1, #0x400 - bx ip - ; .align 2, 0 -_0223E040: .word Unk_ov18_02253384 -_0223E044: .word ov18_0223E834 - arm_func_end ov18_0223E028 - - arm_func_start ov18_0223E048 -ov18_0223E048: ; 0x0223E048 - ldr r1, _0223E060 ; =0x02253384 - ldr ip, _0223E064 ; =ov18_0223E834 - ldr r1, [r1, #0] - add r1, r1, #0xcc - add r1, r1, #0x400 - bx ip - ; .align 2, 0 -_0223E060: .word Unk_ov18_02253384 -_0223E064: .word ov18_0223E834 - arm_func_end ov18_0223E048 - - arm_func_start ov18_0223E068 -ov18_0223E068: ; 0x0223E068 - ldr r2, _0223E084 ; =0x02253384 - mov r1, r0 - ldr r0, [r2, #0] - ldr ip, _0223E088 ; =MI_CpuCopy8 - mov r2, #0x20 - add r0, r0, #0x440 - bx ip - ; .align 2, 0 -_0223E084: .word Unk_ov18_02253384 -_0223E088: .word MI_CpuCopy8 - arm_func_end ov18_0223E068 - - arm_func_start ov18_0223E08C -ov18_0223E08C: ; 0x0223E08C - stmfd sp!, {r3, lr} - sub sp, sp, #8 - ldr r2, _0223E0C4 ; =0x02253384 - ldr r1, _0223E0C8 ; =0x0224A5A8 - ldr r3, [r2, #0] - ldrb r2, [r3, #0x4c2] - str r2, [sp] - ldrb r2, [r3, #0x4c3] - str r2, [sp, #4] - ldrb r2, [r3, #0x4c0] - ldrb r3, [r3, #0x4c1] - bl OS_SPrintf - add sp, sp, #8 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223E0C4: .word Unk_ov18_02253384 -_0223E0C8: .word Unk_ov18_0224A5A8 - arm_func_end ov18_0223E08C - - arm_func_start ov18_0223E0CC -ov18_0223E0CC: ; 0x0223E0CC - stmfd sp!, {r3, lr} - sub sp, sp, #8 - ldr r2, _0223E104 ; =0x02253384 - ldr r1, _0223E108 ; =0x0224A5A8 - ldr r3, [r2, #0] - ldrb r2, [r3, #0x4f2] - str r2, [sp] - ldrb r2, [r3, #0x4f3] - str r2, [sp, #4] - ldrb r2, [r3, #0x4f0] - ldrb r3, [r3, #0x4f1] - bl OS_SPrintf - add sp, sp, #8 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223E104: .word Unk_ov18_02253384 -_0223E108: .word Unk_ov18_0224A5A8 - arm_func_end ov18_0223E0CC - - arm_func_start ov18_0223E10C -ov18_0223E10C: ; 0x0223E10C - stmfd sp!, {r3, lr} - sub sp, sp, #8 - ldr r2, _0223E148 ; =0x02253384 - ldr r1, _0223E14C ; =0x0224A5A8 - ldr ip, [r2] - add r3, ip, #0xc4 - ldrb r2, [r3, #0x402] - str r2, [sp] - ldrb r2, [r3, #0x403] - str r2, [sp, #4] - ldrb r2, [ip, #0x4c4] - ldrb r3, [r3, #0x401] - bl OS_SPrintf - add sp, sp, #8 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223E148: .word Unk_ov18_02253384 -_0223E14C: .word Unk_ov18_0224A5A8 - arm_func_end ov18_0223E10C - - arm_func_start ov18_0223E150 -ov18_0223E150: ; 0x0223E150 - stmfd sp!, {r3, lr} - sub sp, sp, #8 - ldr r2, _0223E18C ; =0x02253384 - ldr r1, _0223E190 ; =0x0224A5A8 - ldr ip, [r2] - add r3, ip, #0xc8 - ldrb r2, [r3, #0x402] - str r2, [sp] - ldrb r2, [r3, #0x403] - str r2, [sp, #4] - ldrb r2, [ip, #0x4c8] - ldrb r3, [r3, #0x401] - bl OS_SPrintf - add sp, sp, #8 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223E18C: .word Unk_ov18_02253384 -_0223E190: .word Unk_ov18_0224A5A8 - arm_func_end ov18_0223E150 - - arm_func_start ov18_0223E194 -ov18_0223E194: ; 0x0223E194 - stmfd sp!, {r3, lr} - sub sp, sp, #8 - ldr r2, _0223E1D0 ; =0x02253384 - ldr r1, _0223E1D4 ; =0x0224A5A8 - ldr ip, [r2] - add r3, ip, #0xcc - ldrb r2, [r3, #0x402] - str r2, [sp] - ldrb r2, [r3, #0x403] - str r2, [sp, #4] - ldrb r2, [ip, #0x4cc] - ldrb r3, [r3, #0x401] - bl OS_SPrintf - add sp, sp, #8 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223E1D0: .word Unk_ov18_02253384 -_0223E1D4: .word Unk_ov18_0224A5A8 - arm_func_end ov18_0223E194 - - arm_func_start ov18_0223E1D8 -ov18_0223E1D8: ; 0x0223E1D8 - ldr r1, _0223E1EC ; =0x02253384 - ldr r1, [r1, #0] - add r0, r1, r0, lsl #8 - ldrb r0, [r0, #0xe7] - bx lr - ; .align 2, 0 -_0223E1EC: .word Unk_ov18_02253384 - arm_func_end ov18_0223E1D8 - - arm_func_start ov18_0223E1F0 -ov18_0223E1F0: ; 0x0223E1F0 - stmfd sp!, {r3, r4, r5, lr} - ldr r1, _0223E2C8 ; =0x02253384 - mov r3, #0x78 - ldr r5, [r1, #0] - add r4, r5, r0, lsl #8 - mov lr, r4 - add ip, r5, #0x400 -_0223E20C: - ldrb r2, [lr] - ldrb r1, [lr, #1] - add lr, lr, #2 - subs r3, r3, #1 - strb r2, [ip] - strb r1, [ip, #1] - add ip, ip, #2 - bne _0223E20C - ldr r1, _0223E2CC ; =0x022495C4 - strb r0, [r5, #0x4f4] - add r0, r4, #0xc0 - mov r2, #4 - bl memcmp - cmp r0, #0 - ldrne r0, _0223E2C8 ; =0x02253384 - movne r1, #0 - ldreq r0, _0223E2C8 ; =0x02253384 - moveq r1, #1 - ldr r0, [r0, #0] - mov r2, #4 - strb r1, [r0, #0x4f5] - ldr r1, _0223E2CC ; =0x022495C4 - add r0, r4, #0xc8 - bl memcmp - cmp r0, #0 - bne _0223E28C - ldr r1, _0223E2CC ; =0x022495C4 - add r0, r4, #0xcc - mov r2, #4 - bl memcmp - cmp r0, #0 - beq _0223E2A0 -_0223E28C: - ldr r0, _0223E2C8 ; =0x02253384 - mov r1, #0 - ldr r0, [r0, #0] - strb r1, [r0, #0x4f6] - b _0223E2B0 -_0223E2A0: - ldr r0, _0223E2C8 ; =0x02253384 - mov r1, #1 - ldr r0, [r0, #0] - strb r1, [r0, #0x4f6] -_0223E2B0: - ldr r1, _0223E2C8 ; =0x02253384 - ldrb r0, [r4, #0xd0] - ldr r1, [r1, #0] - add r1, r1, #0x4f0 - bl sub_020A2BD8 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0223E2C8: .word Unk_ov18_02253384 -_0223E2CC: .word Unk_ov18_022495C4 - arm_func_end ov18_0223E1F0 - - arm_func_start ov18_0223E2D0 -ov18_0223E2D0: ; 0x0223E2D0 - stmfd sp!, {r3, r4, r5, lr} - ldr r0, _0223E3A8 ; =0x02253384 - mov r2, #0x78 - ldr r1, [r0, #0] - add r4, r1, #0x400 - ldrb r0, [r4, #0xf4] - mov ip, r4 - add r5, r1, r0, lsl #8 - mov r3, r5 -_0223E2F4: - ldrb r1, [ip] - ldrb r0, [ip, #1] - add ip, ip, #2 - subs r2, r2, #1 - strb r1, [r3] - strb r0, [r3, #1] - add r3, r3, #2 - bne _0223E2F4 - ldrb r0, [r4, #0xf5] - mov r2, #4 - cmp r0, #0 - beq _0223E348 - add r0, r5, #0xc0 - mov r1, #0 - bl MI_CpuFill8 - add r0, r5, #0xc4 - mov r1, #0 - mov r2, #4 - bl MI_CpuFill8 - mov r0, #0 - b _0223E36C -_0223E348: - add r0, r4, #0xc0 - add r1, r5, #0xc0 - bl MI_CpuCopy8 - add r0, r4, #0xc4 - add r1, r5, #0xc4 - mov r2, #4 - bl MI_CpuCopy8 - add r0, r4, #0xf0 - bl sub_020A2B94 -_0223E36C: - strb r0, [r5, #0xd0] - ldrb r0, [r4, #0xf6] - mov r2, #8 - cmp r0, #0 - beq _0223E390 - add r0, r5, #0xc8 - mov r1, #0 - bl MI_CpuFill8 - b _0223E39C -_0223E390: - add r0, r4, #0xc8 - add r1, r5, #0xc8 - bl MI_CpuCopy8 -_0223E39C: - ldrb r0, [r4, #0xf4] - bl ov18_0223E6CC - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0223E3A8: .word Unk_ov18_02253384 - arm_func_end ov18_0223E2D0 - - arm_func_start ov18_0223E3AC -ov18_0223E3AC: ; 0x0223E3AC - stmfd sp!, {r4, r5, r6, r7, r8, lr} - ldr r1, _0223E4BC ; =0x02253384 - mov r6, r0 - ldr r4, [r1, #0] - mov r1, #0 - add r0, r4, #0x400 - mov r2, #0xef - bl MI_CpuFill8 - mov r0, r6 - add r1, r4, #0x440 - mov r2, #0x20 - bl MI_CpuCopy8 - ldr r0, [r6, #0x20] - cmp r0, #1 - beq _0223E3FC - cmp r0, #2 - beq _0223E414 - cmp r0, #3 - beq _0223E42C - b _0223E444 -_0223E3FC: - ldrb r0, [r4, #0x4e6] - mov r5, #5 - bic r0, r0, #3 - orr r0, r0, #1 - strb r0, [r4, #0x4e6] - b _0223E454 -_0223E414: - ldrb r0, [r4, #0x4e6] - mov r5, #0xd - bic r0, r0, #3 - orr r0, r0, #2 - strb r0, [r4, #0x4e6] - b _0223E454 -_0223E42C: - ldrb r0, [r4, #0x4e6] - mov r5, #0x10 - bic r0, r0, #3 - orr r0, r0, #3 - strb r0, [r4, #0x4e6] - b _0223E454 -_0223E444: - ldrb r0, [r4, #0x4e6] - mov r5, #0 - bic r0, r0, #3 - strb r0, [r4, #0x4e6] -_0223E454: - ldrb r0, [r4, #0x4e6] - add r8, r6, #0x28 - add r7, r4, #0x480 - bic r0, r0, #0xfc - strb r0, [r4, #0x4e6] - mov r6, #0 -_0223E46C: - mov r0, r8 - mov r1, r7 - mov r2, r5 - bl MI_CpuCopy8 - add r6, r6, #1 - cmp r6, #4 - add r7, r7, #0x10 - add r8, r8, #0x20 - blt _0223E46C - mov r3, #2 - add r0, r4, #0x4f0 - mov r1, #0 - mov r2, #4 - strb r3, [r4, #0x4e7] - bl MI_CpuFill8 - mov r0, #1 - strb r0, [r4, #0x4f5] - strb r0, [r4, #0x4f6] - bl ov18_0223E2D0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_0223E4BC: .word Unk_ov18_02253384 - arm_func_end ov18_0223E3AC - - arm_func_start ov18_0223E4C0 -ov18_0223E4C0: ; 0x0223E4C0 - stmfd sp!, {r3, r4, r5, lr} - ldr r1, _0223E5CC ; =0x02253384 - mov r5, r0 - ldr r0, [r1, #0] - mov r1, #0 - add r4, r0, #0x400 - mov r0, r4 - mov r2, #0xef - bl MI_CpuFill8 - mov r0, r5 - add r1, r4, #0xd1 - mov r2, #5 - bl MI_CpuCopy8 - add r0, r5, #6 - add r1, r4, #0xd6 - mov r2, #5 - bl MI_CpuCopy8 - add r0, r5, #0xc - add r1, r4, #0xdb - mov r2, #5 - bl MI_CpuCopy8 - add r0, r5, #0x12 - add r1, r4, #0xe0 - mov r2, #5 - bl MI_CpuCopy8 - add r0, r5, #0x18 - add r1, r4, #0x60 - mov r2, #0x20 - bl MI_CpuCopy8 - add r0, r5, #0x39 - add r1, r4, #0x80 - mov r2, #0xd - bl MI_CpuCopy8 - add r0, r5, #0x47 - add r1, r4, #0x90 - mov r2, #0xd - bl MI_CpuCopy8 - add r0, r5, #0x55 - add r1, r4, #0xa0 - mov r2, #0xd - bl MI_CpuCopy8 - add r0, r5, #0x63 - add r1, r4, #0xb0 - mov r2, #0xd - bl MI_CpuCopy8 - add r0, r5, #0x71 - add r1, r4, #0x40 - mov r2, #0x20 - bl MI_CpuCopy8 - ldrb r2, [r4, #0xe6] - mov r1, #1 - add r0, r4, #0xf0 - bic r2, r2, #3 - orr r2, r2, #2 - strb r2, [r4, #0xe6] - and r2, r2, #0xff - bic r2, r2, #0xfc - strb r2, [r4, #0xe6] - strb r1, [r4, #0xe7] - mov r1, #0 - mov r2, #4 - bl MI_CpuFill8 - mov r0, #1 - strb r0, [r4, #0xf5] - strb r0, [r4, #0xf6] - bl ov18_0223E2D0 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0223E5CC: .word Unk_ov18_02253384 - arm_func_end ov18_0223E4C0 - - arm_func_start ov18_0223E5D0 -ov18_0223E5D0: ; 0x0223E5D0 - ldr r0, _0223E5DC ; =0x02253384 - ldr r0, [r0, #0] - bx lr - ; .align 2, 0 -_0223E5DC: .word Unk_ov18_02253384 - arm_func_end ov18_0223E5D0 - - arm_func_start ov18_0223E5E0 -ov18_0223E5E0: ; 0x0223E5E0 - stmfd sp!, {r3, r4, r5, lr} - ldr r1, _0223E618 ; =0x02253384 - mov r5, r0 - ldr r0, [r1, #0] - mov r1, #0 - add r4, r0, r5, lsl #8 - mov r0, r4 - mov r2, #0xef - bl MI_CpuFill8 - mov r1, #0xff - mov r0, r5 - strb r1, [r4, #0xe7] - bl ov18_0223E6CC - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0223E618: .word Unk_ov18_02253384 - arm_func_end ov18_0223E5E0 - - arm_func_start ov18_0223E61C -ov18_0223E61C: ; 0x0223E61C - stmfd sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x14 - ldr r1, _0223E6C8 ; =0x02253384 - mov r0, #0 - ldr r1, [r1, #0] - mov r2, #0x400 - bl MIi_CpuClear16 - ldr r0, _0223E6C8 ; =0x02253384 - mov r3, #0 - mov r2, #0xff -_0223E644: - ldr r1, [r0, #0] - add r1, r1, r3, lsl #8 - add r3, r3, #1 - strb r2, [r1, #0xe7] - cmp r3, #3 - blt _0223E644 - add r0, sp, #0 - bl sub_020A3A3C - add r0, sp, #0 - bl sub_020A3338 - mov r8, #0 - ldr r4, _0223E6C8 ; =0x02253384 - mov r6, r0 - mov r7, r8 - mov r5, #0xe -_0223E680: - ldr r1, [r4, #0] - mov r0, r6 - add r1, r1, r7 - mov r2, r5 - add r1, r1, #0xf0 - bl MI_CpuCopy8 - add r8, r8, #1 - cmp r8, #2 - add r7, r7, #0x100 - blt _0223E680 - mov r4, #0 -_0223E6AC: - mov r0, r4 - bl ov18_0223E6CC - add r4, r4, #1 - cmp r4, #4 - blt _0223E6AC - add sp, sp, #0x14 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_0223E6C8: .word Unk_ov18_02253384 - arm_func_end ov18_0223E61C - - arm_func_start ov18_0223E6CC -ov18_0223E6CC: ; 0x0223E6CC - stmfd sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x14 - ldr r1, _0223E830 ; =0x02253384 - mov r7, r0 - ldr r0, [r1, #0] - mov r6, #0 - add r2, r0, r7, lsl #8 - ldrb r5, [r2, #0xe7] - add r0, sp, #4 - mov r1, r6 - mov r2, #0x10 - mov r4, #1 - bl MI_CpuFill8 - add r0, sp, #4 - mov r2, r4 - str r2, [r0, r7, lsl #2] - cmp r7, #2 - bgt _0223E7A8 - ldr r0, _0223E830 ; =0x02253384 - ldr r0, [r0, #0] - ldrb r1, [r0, #0xef] - tst r1, r4, lsl r7 - movne r6, r2 - cmp r5, #0xff - bne _0223E76C - cmp r6, #0 - beq _0223E76C - ldrb r1, [r0, #0xef] - mvn r3, r4, lsl r7 - and r2, r1, r3 - ldr r1, _0223E830 ; =0x02253384 - strb r2, [r0, #0xef] - ldr r2, [r1, #0] - mov r0, #1 - ldrb r1, [r2, #0x1ef] - and r1, r1, r3 - strb r1, [r2, #0x1ef] - str r0, [sp, #8] - str r0, [sp, #4] - b _0223E7A8 -_0223E76C: - cmp r5, #0xff - beq _0223E7A8 - cmp r6, #0 - bne _0223E7A8 - ldrb r3, [r0, #0xef] - ldr r1, _0223E830 ; =0x02253384 - mov r2, #1 - orr r3, r3, r4, lsl r7 - strb r3, [r0, #0xef] - ldr r1, [r1, #0] - ldrb r0, [r1, #0x1ef] - orr r0, r0, r4, lsl r7 - strb r0, [r1, #0x1ef] - str r2, [sp, #8] - str r2, [sp, #4] -_0223E7A8: - mov r6, #0 - ldr r8, _0223E830 ; =0x02253384 - mov r7, r6 - mov r4, #0xfe - add r5, sp, #4 -_0223E7BC: - ldr r0, [r5, r6, lsl #2] - cmp r0, #0 - beq _0223E7EC - ldr r1, [r8] - mov r2, r4 - add r0, r1, #0xf8 - add r0, r0, #0x400 - add r1, r1, r7 - bl MATH_CalcCRC16 - ldr r1, [r8] - add r1, r1, r6, lsl #8 - strh r0, [r1, #0xfe] -_0223E7EC: - add r6, r6, #1 - cmp r6, #4 - add r7, r7, #0x100 - blt _0223E7BC - mov r0, #0x100 - mov r1, #0x20 - bl ov18_02245068 - mov r2, r0 - ldr r0, _0223E830 ; =0x02253384 - add r1, sp, #4 - ldr r0, [r0, #0] - str r2, [sp] - bl sub_020A2A60 - add r0, sp, #0 - bl ov18_0224508C - add sp, sp, #0x14 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_0223E830: .word Unk_ov18_02253384 - arm_func_end ov18_0223E6CC - - arm_func_start ov18_0223E834 -ov18_0223E834: ; 0x0223E834 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - mov sb, r1 - add r0, sp, #0 - mov r1, #0 - mov r2, #4 - bl MI_CpuFill8 - mov r7, #0 - mov r8, r7 - mov r4, #0x20 - add r6, sp, #0 - mov r5, #3 - mov fp, r7 -_0223E868: - mov r1, r6 - mov r2, r5 - add r0, sl, r8 - bl MI_CpuCopy8 - mov r1, fp - mov r2, r6 -_0223E880: - ldrb r0, [r2] - cmp r0, #0 - bne _0223E89C - add r1, r1, #1 - cmp r1, #3 - strb r4, [r2], #1 - blt _0223E880 -_0223E89C: - mov r0, r6 - bl atoi - strb r0, [sb, r7] - add r7, r7, #1 - cmp r7, #4 - add r8, r8, #3 - blt _0223E868 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end ov18_0223E834 - - arm_func_start ov18_0223E8BC -ov18_0223E8BC: ; 0x0223E8BC - cmp r0, #0x39 - subls r0, r0, #0x30 - bxls lr - cmp r0, #0x46 - subls r0, r0, #0x37 - subhi r0, r0, #0x57 - bx lr - arm_func_end ov18_0223E8BC - - .rodata - - - .global Unk_ov18_022495C4 -Unk_ov18_022495C4: ; 0x022495C4 - .space 0x4 - - - - .data - - - .global Unk_ov18_0224A5A8 -Unk_ov18_0224A5A8: ; 0x0224A5A8 - .ascii "%3d%3d%3d%3d" - .space 0x4 - - - - .bss - - - .global Unk_ov18_02253384 -Unk_ov18_02253384: ; 0x02253384 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/sound.s b/subprojects/NitroDWC/libraries/util/asm/sound.s deleted file mode 100644 index 2084f03c78..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/sound.s +++ /dev/null @@ -1,143 +0,0 @@ - .include "macros/function.inc" - .include "include/sound.inc" - - - - .text - - - arm_func_start ov18_0223E8D8 -ov18_0223E8D8: ; 0x0223E8D8 - stmfd sp!, {r3, lr} - mov r0, #0xa0 - mov r1, #4 - bl ov18_02245068 - ldr r2, _0223E95C ; =0x02253388 - add r1, sp, #0 - str r0, [r2, #0] - ldr r0, _0223E960 ; =0x0224A5B8 - mov r2, #0x20 - bl ov18_02243738 - ldr r1, _0223E95C ; =0x02253388 - ldr r1, [r1, #0] - str r0, [r1, #0x98] - bl NNS_SndInit - ldr r0, _0223E95C ; =0x02253388 - ldr r0, [r0, #0] - ldr r1, [r0, #0x98] - bl NNS_SndArcInitOnMemory - mov r0, #0 - bl NNS_SndArcPlayerSetup - ldr r0, _0223E95C ; =0x02253388 - ldr r0, [r0, #0] - add r0, r0, #0x94 - bl NNS_SndHandleInit - mov r0, #0 - ldr r1, _0223E964 ; =ov18_0223EA1C - mov r2, r0 - mov r3, #0xc8 - bl ov18_02246304 - ldr r1, _0223E95C ; =0x02253388 - ldr r1, [r1, #0] - str r0, [r1, #0x9c] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223E95C: .word Unk_ov18_02253388 -_0223E960: .word Unk_ov18_0224A5B8 -_0223E964: .word ov18_0223EA1C - arm_func_end ov18_0223E8D8 - - arm_func_start ov18_0223E968 -ov18_0223E968: ; 0x0223E968 - stmfd sp!, {r3, lr} - ldr r1, _0223E98C ; =0x02253388 - mov r0, #0 - ldr r1, [r1, #0] - ldr r1, [r1, #0x9c] - bl ov18_022463AC - ldr r0, _0223E990 ; =0x02253388 - bl ov18_0224508C - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223E98C: .word Unk_ov18_02253388 -_0223E990: .word Unk_ov18_02253388 - arm_func_end ov18_0223E968 - - arm_func_start ov18_0223E994 -ov18_0223E994: ; 0x0223E994 - ldr r1, _0223E9B0 ; =0x02253388 - mov r2, r0 - ldr r0, [r1, #0] - ldr ip, _0223E9B4 ; =NNS_SndArcPlayerStartSeqArc - mov r1, #0 - add r0, r0, #0x94 - bx ip - ; .align 2, 0 -_0223E9B0: .word Unk_ov18_02253388 -_0223E9B4: .word NNS_SndArcPlayerStartSeqArc - arm_func_end ov18_0223E994 - - arm_func_start ov18_0223E9B8 -ov18_0223E9B8: ; 0x0223E9B8 - ldr r2, _0223E9D0 ; =0x02253388 - mov r1, r0 - ldr r0, [r2, #0] - ldr ip, _0223E9D4 ; =NNS_SndPlayerSetVolume - add r0, r0, #0x94 - bx ip - ; .align 2, 0 -_0223E9D0: .word Unk_ov18_02253388 -_0223E9D4: .word NNS_SndPlayerSetVolume - arm_func_end ov18_0223E9B8 - - arm_func_start ov18_0223E9D8 -ov18_0223E9D8: ; 0x0223E9D8 - ldr r2, _0223E9F4 ; =0x02253388 - ldr ip, _0223E9F8 ; =NNS_SndPlayerSetTrackPitch - ldr r3, [r2, #0] - mov r2, r1 - mov r1, r0 - add r0, r3, #0x94 - bx ip - ; .align 2, 0 -_0223E9F4: .word Unk_ov18_02253388 -_0223E9F8: .word NNS_SndPlayerSetTrackPitch - arm_func_end ov18_0223E9D8 - - arm_func_start ov18_0223E9FC -ov18_0223E9FC: ; 0x0223E9FC - ldr r0, _0223EA14 ; =0x02253388 - ldr ip, _0223EA18 ; =NNS_SndPlayerStopSeq - ldr r0, [r0, #0] - mov r1, #0 - add r0, r0, #0x94 - bx ip - ; .align 2, 0 -_0223EA14: .word Unk_ov18_02253388 -_0223EA18: .word NNS_SndPlayerStopSeq - arm_func_end ov18_0223E9FC - - arm_func_start ov18_0223EA1C -ov18_0223EA1C: ; 0x0223EA1C - ldr ip, _0223EA24 ; =NNS_SndMain - bx ip - ; .align 2, 0 -_0223EA24: .word NNS_SndMain - arm_func_end ov18_0223EA1C - - .data - - - .global Unk_ov18_0224A5B8 -Unk_ov18_0224A5B8: ; 0x0224A5B8 - .asciz "sound/sound_data.sdat.l" - - - - .bss - - - .global Unk_ov18_02253388 -Unk_ov18_02253388: ; 0x02253388 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/step.s b/subprojects/NitroDWC/libraries/util/asm/step.s deleted file mode 100644 index 72c0ac3a44..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/step.s +++ /dev/null @@ -1,916 +0,0 @@ - .include "macros/function.inc" - .include "include/step.inc" - - - - .text - - - arm_func_start ov18_0223EA28 -ov18_0223EA28: ; 0x0223EA28 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - str r0, [sp] - mov r0, #0x1c - mov r1, #4 - bl ov18_02245068 - ldr r1, [sp] - ldr r4, _0223EB10 ; =0x0225338C - add r3, r1, r1, lsl #2 - ldr r2, _0223EB14 ; =0x022495C8 - ldr r1, _0223EB18 ; =0x022495D7 - mov r8, #0 - mvn r7, #0 - ldr r5, _0223EB1C ; =0x022495E6 - str r0, [r4, #4] - add sb, r2, r3 - add sl, r1, r3 - sub r6, r7, #0x29 - mov fp, r8 -_0223EA70: - ldrb r1, [sb], #1 - mov r0, #1 - mov r2, r0 - bl ov18_02243F8C - ldr r2, [r4, #4] - mov r1, r7 - str r0, [r2, r8, lsl #2] - ldr r0, [r4, #4] - mov r2, fp - ldr r0, [r0, r8, lsl #2] - bl ov18_02243DE4 - ldr r0, [r4, #4] - add r3, r5, r8, lsl #2 - ldrh r3, [r3, #2] - ldr r0, [r0, r8, lsl #2] - mov r1, r7 - mov r2, r6 - bl ov18_02243CF4 - ldr r0, [r4, #4] - ldrb r3, [sl], #1 - ldr r0, [r0, r8, lsl #2] - mov r1, r7 - mov r2, #0 - bl ov18_02243C74 - add r8, r8, #1 - cmp r8, #5 - blt _0223EA70 - mov r0, #0 - ldr r1, _0223EB20 ; =ov18_0223EB24 - mov r2, r0 - mov r3, #0x78 - bl ov18_02246304 - ldr r1, _0223EB10 ; =0x0225338C - ldr r1, [r1, #4] - str r0, [r1, #0x14] - ldr r0, [sp] - bl ov18_0223F4D0 - mov r0, #0xd - bl ov18_0223E994 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0223EB10: .word Unk_ov18_0225338C -_0223EB14: .word Unk_ov18_022495C8 -_0223EB18: .word Unk_ov18_022495D7 -_0223EB1C: .word Unk_ov18_022495E6 -_0223EB20: .word ov18_0223EB24 - arm_func_end ov18_0223EA28 - - arm_func_start ov18_0223EB24 -ov18_0223EB24: ; 0x0223EB24 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #8 - ldr r1, _0223EBFC ; =0x0225338C - mov r4, r0 - ldr r0, [r1, #4] - add r2, sp, #4 - ldr r0, [r0, #0] - add r3, sp, #0 - mov r1, #0 - bl ov18_02243E44 - ldr r0, [sp, #4] - add r0, r0, #8 - str r0, [sp, #4] - cmp r0, #0x20 - blt _0223EB68 - cmp r0, #0x100 - ble _0223EBA8 -_0223EB68: - ldr r5, _0223EC00 ; =0x022495E6 - ldr r4, _0223EBFC ; =0x0225338C - mov r7, #0 - mvn r6, #0 -_0223EB78: - add r0, r5, r7, lsl #2 - ldr r1, [r4, #4] - ldrh r3, [r0, #2] - ldr r0, [r1, r7, lsl #2] - ldr r2, [sp, #4] - mov r1, r6 - bl ov18_02243CF4 - add r7, r7, #1 - cmp r7, #5 - blt _0223EB78 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0223EBA8: - mov r0, #0x20 - ldr r6, _0223EC00 ; =0x022495E6 - ldr r5, _0223EBFC ; =0x0225338C - str r0, [sp, #4] - mov r8, #0 - mvn r7, #0 -_0223EBC0: - add r0, r6, r8, lsl #2 - ldr r1, [r5, #4] - ldrh r3, [r0, #2] - ldr r0, [r1, r8, lsl #2] - ldr r2, [sp, #4] - mov r1, r7 - bl ov18_02243CF4 - add r8, r8, #1 - cmp r8, #5 - blt _0223EBC0 - ldr r1, _0223EC04 ; =ov18_0223EC08 - mov r0, r4 - bl ov18_022463A4 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_0223EBFC: .word Unk_ov18_0225338C -_0223EC00: .word Unk_ov18_022495E6 -_0223EC04: .word ov18_0223EC08 - arm_func_end ov18_0223EB24 - - arm_func_start ov18_0223EC08 -ov18_0223EC08: ; 0x0223EC08 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #8 - ldr r1, _0223ECE0 ; =0x0225338C - mov r4, r0 - ldr r0, [r1, #4] - add r2, sp, #4 - ldr r0, [r0, #4] - add r3, sp, #0 - mov r1, #0 - bl ov18_02243E44 - ldr r0, [sp, #4] - add r0, r0, #8 - str r0, [sp, #4] - cmp r0, #0x50 - blt _0223EC4C - cmp r0, #0x100 - ble _0223EC8C -_0223EC4C: - ldr r5, _0223ECE4 ; =0x022495E6 - ldr r4, _0223ECE0 ; =0x0225338C - mov r7, #1 - mvn r6, #0 -_0223EC5C: - add r0, r5, r7, lsl #2 - ldr r1, [r4, #4] - ldrh r3, [r0, #2] - ldr r0, [r1, r7, lsl #2] - ldr r2, [sp, #4] - mov r1, r6 - bl ov18_02243CF4 - add r7, r7, #1 - cmp r7, #5 - blt _0223EC5C - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0223EC8C: - mov r0, #0x50 - ldr r6, _0223ECE4 ; =0x022495E6 - ldr r5, _0223ECE0 ; =0x0225338C - str r0, [sp, #4] - mov r8, #1 - mvn r7, #0 -_0223ECA4: - add r0, r6, r8, lsl #2 - ldr r1, [r5, #4] - ldrh r3, [r0, #2] - ldr r0, [r1, r8, lsl #2] - ldr r2, [sp, #4] - mov r1, r7 - bl ov18_02243CF4 - add r8, r8, #1 - cmp r8, #5 - blt _0223ECA4 - ldr r1, _0223ECE8 ; =ov18_0223ECEC - mov r0, r4 - bl ov18_022463A4 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_0223ECE0: .word Unk_ov18_0225338C -_0223ECE4: .word Unk_ov18_022495E6 -_0223ECE8: .word ov18_0223ECEC - arm_func_end ov18_0223EC08 - - arm_func_start ov18_0223ECEC -ov18_0223ECEC: ; 0x0223ECEC - stmfd sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #8 - ldr r1, _0223EDC4 ; =0x0225338C - mov r4, r0 - ldr r0, [r1, #4] - add r2, sp, #4 - ldr r0, [r0, #8] - add r3, sp, #0 - mov r1, #0 - bl ov18_02243E44 - ldr r0, [sp, #4] - add r0, r0, #8 - str r0, [sp, #4] - cmp r0, #0x68 - blt _0223ED30 - cmp r0, #0x100 - ble _0223ED70 -_0223ED30: - ldr r5, _0223EDC8 ; =0x022495E6 - ldr r4, _0223EDC4 ; =0x0225338C - mov r7, #2 - mvn r6, #0 -_0223ED40: - add r0, r5, r7, lsl #2 - ldr r1, [r4, #4] - ldrh r3, [r0, #2] - ldr r0, [r1, r7, lsl #2] - ldr r2, [sp, #4] - mov r1, r6 - bl ov18_02243CF4 - add r7, r7, #1 - cmp r7, #5 - blt _0223ED40 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0223ED70: - mov r0, #0x68 - ldr r6, _0223EDC8 ; =0x022495E6 - ldr r5, _0223EDC4 ; =0x0225338C - str r0, [sp, #4] - mov r8, #2 - mvn r7, #0 -_0223ED88: - add r0, r6, r8, lsl #2 - ldr r1, [r5, #4] - ldrh r3, [r0, #2] - ldr r0, [r1, r8, lsl #2] - ldr r2, [sp, #4] - mov r1, r7 - bl ov18_02243CF4 - add r8, r8, #1 - cmp r8, #5 - blt _0223ED88 - ldr r1, _0223EDCC ; =ov18_0223EDD0 - mov r0, r4 - bl ov18_022463A4 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_0223EDC4: .word Unk_ov18_0225338C -_0223EDC8: .word Unk_ov18_022495E6 -_0223EDCC: .word ov18_0223EDD0 - arm_func_end ov18_0223ECEC - - arm_func_start ov18_0223EDD0 -ov18_0223EDD0: ; 0x0223EDD0 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #8 - ldr r1, _0223EEA8 ; =0x0225338C - mov r4, r0 - ldr r0, [r1, #4] - add r2, sp, #4 - ldr r0, [r0, #0xc] - add r3, sp, #0 - mov r1, #0 - bl ov18_02243E44 - ldr r0, [sp, #4] - add r0, r0, #8 - str r0, [sp, #4] - cmp r0, #0x98 - blt _0223EE14 - cmp r0, #0x100 - ble _0223EE54 -_0223EE14: - ldr r5, _0223EEAC ; =0x022495E6 - ldr r4, _0223EEA8 ; =0x0225338C - mov r7, #3 - mvn r6, #0 -_0223EE24: - add r0, r5, r7, lsl #2 - ldr r1, [r4, #4] - ldrh r3, [r0, #2] - ldr r0, [r1, r7, lsl #2] - ldr r2, [sp, #4] - mov r1, r6 - bl ov18_02243CF4 - add r7, r7, #1 - cmp r7, #5 - blt _0223EE24 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0223EE54: - mov r0, #0x98 - ldr r6, _0223EEAC ; =0x022495E6 - ldr r5, _0223EEA8 ; =0x0225338C - str r0, [sp, #4] - mov r8, #3 - mvn r7, #0 -_0223EE6C: - add r0, r6, r8, lsl #2 - ldr r1, [r5, #4] - ldrh r3, [r0, #2] - ldr r0, [r1, r8, lsl #2] - ldr r2, [sp, #4] - mov r1, r7 - bl ov18_02243CF4 - add r8, r8, #1 - cmp r8, #5 - blt _0223EE6C - ldr r1, _0223EEB0 ; =ov18_0223EEB4 - mov r0, r4 - bl ov18_022463A4 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_0223EEA8: .word Unk_ov18_0225338C -_0223EEAC: .word Unk_ov18_022495E6 -_0223EEB0: .word ov18_0223EEB4 - arm_func_end ov18_0223EDD0 - - arm_func_start ov18_0223EEB4 -ov18_0223EEB4: ; 0x0223EEB4 - stmfd sp!, {r4, lr} - sub sp, sp, #8 - ldr r1, _0223EF4C ; =0x0225338C - mov r4, r0 - ldr r0, [r1, #4] - add r2, sp, #4 - ldr r0, [r0, #0x10] - add r3, sp, #0 - mov r1, #0 - bl ov18_02243E44 - ldr r0, [sp, #4] - add r2, r0, #8 - str r2, [sp, #4] - cmp r2, #0xb0 - blt _0223EEF8 - cmp r2, #0x100 - ble _0223EF18 -_0223EEF8: - ldr r0, _0223EF4C ; =0x0225338C - mvn r1, #0 - ldr r0, [r0, #4] - mov r3, #0x21 - ldr r0, [r0, #0x10] - bl ov18_02243CF4 - add sp, sp, #8 - ldmia sp!, {r4, pc} -_0223EF18: - ldr r0, _0223EF4C ; =0x0225338C - mov r2, #0xb0 - ldr r0, [r0, #4] - str r2, [sp, #4] - ldr r0, [r0, #0x10] - sub r1, r2, #0xb1 - mov r3, #0x21 - bl ov18_02243CF4 - ldr r1, _0223EF50 ; =ov18_0223EF54 - mov r0, r4 - bl ov18_022463A4 - add sp, sp, #8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0223EF4C: .word Unk_ov18_0225338C -_0223EF50: .word ov18_0223EF54 - arm_func_end ov18_0223EEB4 - - arm_func_start ov18_0223EF54 -ov18_0223EF54: ; 0x0223EF54 - stmfd sp!, {r3, lr} - mov r1, r0 - mov r0, #0 - bl ov18_022463AC - ldr r0, _0223EF78 ; =0x0225338C - mov r1, #0 - ldr r0, [r0, #4] - str r1, [r0, #0x14] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223EF78: .word Unk_ov18_0225338C - arm_func_end ov18_0223EF54 - - arm_func_start ov18_0223EF7C -ov18_0223EF7C: ; 0x0223EF7C - stmfd sp!, {r3, lr} - ldr r1, _0223EFB4 ; =0x0225338C - mov r0, #0 - ldr ip, [r1, #4] - mov lr, #1 - ldr r1, _0223EFB8 ; =ov18_0223F0A4 - mov r2, r0 - mov r3, #0x78 - strb lr, [ip, #0x18] - bl ov18_02246304 - ldr r1, _0223EFB4 ; =0x0225338C - ldr r1, [r1, #4] - str r0, [r1, #0x14] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223EFB4: .word Unk_ov18_0225338C -_0223EFB8: .word ov18_0223F0A4 - arm_func_end ov18_0223EF7C - - arm_func_start ov18_0223EFBC -ov18_0223EFBC: ; 0x0223EFBC - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - str r0, [sp] - add r2, r0, r0, lsl #2 - ldr r1, _0223F074 ; =0x022495C8 - ldr r0, _0223F078 ; =0x022495D7 - mov r8, #0 - ldr r5, _0223F07C ; =0x022495E6 - ldr r4, _0223F080 ; =0x0225338C - add sb, r1, r2 - add sl, r0, r2 - mov r7, r8 - mov fp, #1 - mvn r6, #0 -_0223EFF0: - ldr r0, [r4, #4] - mov r1, r7 - ldr r0, [r0, r8, lsl #2] - bl ov18_02243BBC - mov r2, r0 - ldrb r1, [sb], #2 - mov r0, fp - bl ov18_02243ECC - ldr r0, [r4, #4] - mov r1, r6 - ldr r0, [r0, r8, lsl #2] - mov r2, #0 - bl ov18_02243DE4 - ldr r0, [r4, #4] - mov r1, r8, lsl #2 - add r3, r5, r8, lsl #2 - ldrh r2, [r5, r1] - ldrh r3, [r3, #2] - ldr r0, [r0, r8, lsl #2] - mov r1, r6 - bl ov18_02243CF4 - ldr r0, [r4, #4] - ldrb r3, [sl], #2 - ldr r0, [r0, r8, lsl #2] - mov r1, r6 - mov r2, #0 - bl ov18_02243C74 - add r8, r8, #2 - cmp r8, #5 - blt _0223EFF0 - ldr r0, [sp] - bl ov18_0223F4D0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0223F074: .word Unk_ov18_022495C8 -_0223F078: .word Unk_ov18_022495D7 -_0223F07C: .word Unk_ov18_022495E6 -_0223F080: .word Unk_ov18_0225338C - arm_func_end ov18_0223EFBC - - arm_func_start ov18_0223F084 -ov18_0223F084: ; 0x0223F084 - ldr r0, _0223F0A0 ; =0x0225338C - ldr r0, [r0, #4] - ldr r0, [r0, #0x14] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - bx lr - ; .align 2, 0 -_0223F0A0: .word Unk_ov18_0225338C - arm_func_end ov18_0223F084 - - arm_func_start ov18_0223F0A4 -ov18_0223F0A4: ; 0x0223F0A4 - stmfd sp!, {r4, lr} - sub sp, sp, #8 - ldr r1, _0223F130 ; =0x0225338C - mov r4, r0 - ldr r0, [r1, #4] - add r2, sp, #4 - ldr r0, [r0, #0x10] - add r3, sp, #0 - mov r1, #0 - bl ov18_02243E44 - ldr r0, [sp, #4] - mov r3, #0x21 - sub r2, r0, #8 - str r2, [sp, #4] - cmp r2, #0x98 - ble _0223F100 - ldr r0, _0223F130 ; =0x0225338C - mvn r1, #0 - ldr r0, [r0, #4] - ldr r0, [r0, #0x10] - bl ov18_02243CF4 - add sp, sp, #8 - ldmia sp!, {r4, pc} -_0223F100: - ldr r0, _0223F130 ; =0x0225338C - mov r2, #0x98 - ldr r0, [r0, #4] - str r2, [sp, #4] - ldr r0, [r0, #0x10] - sub r1, r2, #0x99 - bl ov18_02243CF4 - ldr r1, _0223F134 ; =ov18_0223F138 - mov r0, r4 - bl ov18_022463A4 - add sp, sp, #8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0223F130: .word Unk_ov18_0225338C -_0223F134: .word ov18_0223F138 - arm_func_end ov18_0223F0A4 - - arm_func_start ov18_0223F138 -ov18_0223F138: ; 0x0223F138 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #8 - ldr r1, _0223F208 ; =0x0225338C - mov r4, r0 - ldr r0, [r1, #4] - add r2, sp, #4 - ldr r0, [r0, #0xc] - add r3, sp, #0 - mov r1, #0 - bl ov18_02243E44 - ldr r0, [sp, #4] - sub r0, r0, #8 - str r0, [sp, #4] - cmp r0, #0x68 - ble _0223F1B4 - ldr r5, _0223F20C ; =0x022495E6 - ldr r4, _0223F208 ; =0x0225338C - mov r7, #3 - mvn r6, #0 -_0223F184: - add r0, r5, r7, lsl #2 - ldr r1, [r4, #4] - ldrh r3, [r0, #2] - ldr r0, [r1, r7, lsl #2] - ldr r2, [sp, #4] - mov r1, r6 - bl ov18_02243CF4 - add r7, r7, #1 - cmp r7, #5 - blt _0223F184 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0223F1B4: - mov r0, #0x68 - ldr r6, _0223F20C ; =0x022495E6 - ldr r5, _0223F208 ; =0x0225338C - str r0, [sp, #4] - mov r8, #3 - mvn r7, #0 -_0223F1CC: - add r0, r6, r8, lsl #2 - ldr r1, [r5, #4] - ldrh r3, [r0, #2] - ldr r0, [r1, r8, lsl #2] - ldr r2, [sp, #4] - mov r1, r7 - bl ov18_02243CF4 - add r8, r8, #1 - cmp r8, #5 - blt _0223F1CC - ldr r1, _0223F210 ; =ov18_0223F214 - mov r0, r4 - bl ov18_022463A4 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_0223F208: .word Unk_ov18_0225338C -_0223F20C: .word Unk_ov18_022495E6 -_0223F210: .word ov18_0223F214 - arm_func_end ov18_0223F138 - - arm_func_start ov18_0223F214 -ov18_0223F214: ; 0x0223F214 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #8 - ldr r1, _0223F2E4 ; =0x0225338C - mov r4, r0 - ldr r0, [r1, #4] - add r2, sp, #4 - ldr r0, [r0, #8] - add r3, sp, #0 - mov r1, #0 - bl ov18_02243E44 - ldr r0, [sp, #4] - sub r0, r0, #8 - str r0, [sp, #4] - cmp r0, #0x50 - ble _0223F290 - ldr r5, _0223F2E8 ; =0x022495E6 - ldr r4, _0223F2E4 ; =0x0225338C - mov r7, #2 - mvn r6, #0 -_0223F260: - add r0, r5, r7, lsl #2 - ldr r1, [r4, #4] - ldrh r3, [r0, #2] - ldr r0, [r1, r7, lsl #2] - ldr r2, [sp, #4] - mov r1, r6 - bl ov18_02243CF4 - add r7, r7, #1 - cmp r7, #5 - blt _0223F260 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0223F290: - mov r0, #0x50 - ldr r6, _0223F2E8 ; =0x022495E6 - ldr r5, _0223F2E4 ; =0x0225338C - str r0, [sp, #4] - mov r8, #2 - mvn r7, #0 -_0223F2A8: - add r0, r6, r8, lsl #2 - ldr r1, [r5, #4] - ldrh r3, [r0, #2] - ldr r0, [r1, r8, lsl #2] - ldr r2, [sp, #4] - mov r1, r7 - bl ov18_02243CF4 - add r8, r8, #1 - cmp r8, #5 - blt _0223F2A8 - ldr r1, _0223F2EC ; =ov18_0223F2F0 - mov r0, r4 - bl ov18_022463A4 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_0223F2E4: .word Unk_ov18_0225338C -_0223F2E8: .word Unk_ov18_022495E6 -_0223F2EC: .word ov18_0223F2F0 - arm_func_end ov18_0223F214 - - arm_func_start ov18_0223F2F0 -ov18_0223F2F0: ; 0x0223F2F0 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #8 - ldr r1, _0223F3C0 ; =0x0225338C - mov r4, r0 - ldr r0, [r1, #4] - add r2, sp, #4 - ldr r0, [r0, #4] - add r3, sp, #0 - mov r1, #0 - bl ov18_02243E44 - ldr r0, [sp, #4] - sub r0, r0, #8 - str r0, [sp, #4] - cmp r0, #0x20 - ble _0223F36C - ldr r5, _0223F3C4 ; =0x022495E6 - ldr r4, _0223F3C0 ; =0x0225338C - mov r7, #1 - mvn r6, #0 -_0223F33C: - add r0, r5, r7, lsl #2 - ldr r1, [r4, #4] - ldrh r3, [r0, #2] - ldr r0, [r1, r7, lsl #2] - ldr r2, [sp, #4] - mov r1, r6 - bl ov18_02243CF4 - add r7, r7, #1 - cmp r7, #5 - blt _0223F33C - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0223F36C: - mov r0, #0x20 - ldr r6, _0223F3C4 ; =0x022495E6 - ldr r5, _0223F3C0 ; =0x0225338C - str r0, [sp, #4] - mov r8, #1 - mvn r7, #0 -_0223F384: - add r0, r6, r8, lsl #2 - ldr r1, [r5, #4] - ldrh r3, [r0, #2] - ldr r0, [r1, r8, lsl #2] - ldr r2, [sp, #4] - mov r1, r7 - bl ov18_02243CF4 - add r8, r8, #1 - cmp r8, #5 - blt _0223F384 - ldr r1, _0223F3C8 ; =ov18_0223F3CC - mov r0, r4 - bl ov18_022463A4 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_0223F3C0: .word Unk_ov18_0225338C -_0223F3C4: .word Unk_ov18_022495E6 -_0223F3C8: .word ov18_0223F3CC - arm_func_end ov18_0223F2F0 - - arm_func_start ov18_0223F3CC -ov18_0223F3CC: ; 0x0223F3CC - stmfd sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #8 - ldr r1, _0223F494 ; =0x0225338C - mov r5, r0 - ldr r0, [r1, #4] - add r2, sp, #4 - ldr r0, [r0, #0] - add r3, sp, #0 - mov r1, #0 - bl ov18_02243E44 - ldr r0, [sp, #4] - ldr r7, _0223F498 ; =0x022495E6 - sub r0, r0, #8 - ldr r6, _0223F494 ; =0x0225338C - mov r4, #0 - str r0, [sp, #4] - mvn r8, #0 -_0223F410: - add r0, r7, r4, lsl #2 - ldr r1, [r6, #4] - ldrh r3, [r0, #2] - ldr r0, [r1, r4, lsl #2] - ldr r2, [sp, #4] - mov r1, r8 - bl ov18_02243CF4 - add r4, r4, #1 - cmp r4, #5 - blt _0223F410 - ldr r1, [sp, #4] - ldr r0, _0223F49C ; =0x000001D6 - cmp r1, r0 - addgt sp, sp, #8 - ldmgtia sp!, {r4, r5, r6, r7, r8, pc} - cmp r1, #0x100 - addlt sp, sp, #8 - ldmltia sp!, {r4, r5, r6, r7, r8, pc} - mov r1, r5 - mov r0, #0 - bl ov18_022463AC - ldr r4, _0223F494 ; =0x0225338C - mov r5, #0 -_0223F46C: - ldr r0, [r4, #4] - ldr r0, [r0, r5, lsl #2] - bl ov18_02243B3C - add r5, r5, #1 - cmp r5, #5 - blt _0223F46C - ldr r0, _0223F4A0 ; =0x02253390 - bl ov18_0224508C - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_0223F494: .word Unk_ov18_0225338C -_0223F498: .word Unk_ov18_022495E6 -_0223F49C: .word 0x000001D6 -_0223F4A0: .word Unk_ov18_02253390 - arm_func_end ov18_0223F3CC - - arm_func_start ov18_0223F4A4 -ov18_0223F4A4: ; 0x0223F4A4 - ldr r0, _0223F4CC ; =0x0225338C - ldr r0, [r0, #4] - cmp r0, #0 - moveq r0, #1 - bxeq lr - ldrb r0, [r0, #0x18] - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - bx lr - ; .align 2, 0 -_0223F4CC: .word Unk_ov18_0225338C - arm_func_end ov18_0223F4A4 - - arm_func_start ov18_0223F4D0 -ov18_0223F4D0: ; 0x0223F4D0 - stmfd sp!, {r3, lr} - ldr r1, _0223F50C ; =0x0224A634 - ldr r0, [r1, r0, lsl #2] - bl ov18_0222B6A0 - mov r1, #0 - mov r2, #4 - bl ov18_02243738 - ldr r2, _0223F510 ; =0x0225338C - ldr r1, _0223F514 ; =ov18_0223F518 - str r0, [r2, #0] - mov r0, #1 - mov r2, #0 - mov r3, #0x78 - bl ov18_02246304 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223F50C: .word Unk_ov18_0224A634 -_0223F510: .word Unk_ov18_0225338C -_0223F514: .word ov18_0223F518 - arm_func_end ov18_0223F4D0 - - arm_func_start ov18_0223F518 -ov18_0223F518: ; 0x0223F518 - stmfd sp!, {r4, lr} - ldr r1, _0223F560 ; =0x0225338C - mov r4, r0 - ldr r0, [r1, #0] - mov r1, #0x600 - bl DC_FlushRange - ldr r0, _0223F560 ; =0x0225338C - mov r1, #0 - ldr r0, [r0, #0] - mov r2, #0x600 - bl GXS_LoadBG1Scr - ldr r0, _0223F560 ; =0x0225338C - ldr r0, [r0, #0] - bl ov18_0224382C - mov r1, r4 - mov r0, #1 - bl ov18_022463AC - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0223F560: .word Unk_ov18_0225338C - arm_func_end ov18_0223F518 - - .rodata - - - .global Unk_ov18_022495C8 -Unk_ov18_022495C8: ; 0x022495C8 - .short 0x1, 0x5, 0x406, 0x200, 0x600, 0x4 - .short 0x5 - .byte 0x3 - - .global Unk_ov18_022495D7 -Unk_ov18_022495D7: ; 0x022495D7 - .byte 0x2, 0x1, 0x3, 0x1, 0x3, 0x5, 0x1, 0x4, 0x1, 0x5, 0x7, 0x1, 0x7, 0x1, 0x6 - - .global Unk_ov18_022495E6 -Unk_ov18_022495E6: ; 0x022495E6 - .short 0x20, 0x21, 0x50, 0x30, 0x68, 0x21, 0x98 - .short 0x30, 0xB0, 0x21 - - - - .data - - - .global Unk_ov18_0224A5D0 -Unk_ov18_0224A5D0: ; 0x0224A5D0 - .ascii "char/jtTop.nsc.l" - .space 0x4 - - .global Unk_ov18_0224A5E4 -Unk_ov18_0224A5E4: ; 0x0224A5E4 - .ascii "char/jtStep1.nsc.l" - .space 0x2 - - .global Unk_ov18_0224A5F8 -Unk_ov18_0224A5F8: ; 0x0224A5F8 - .ascii "char/jtStep2.nsc.l" - .space 0x2 - - .global Unk_ov18_0224A60C -Unk_ov18_0224A60C: ; 0x0224A60C - .ascii "char/jtStep3.nsc.l" - .space 0x2 - - .global Unk_ov18_0224A620 -Unk_ov18_0224A620: ; 0x0224A620 - .asciz "char/jtOption.nsc.l" - - .global Unk_ov18_0224A634 -Unk_ov18_0224A634: ; 0x0224A634 - .word Unk_ov18_0224A5E4 - .word Unk_ov18_0224A5F8 - .word Unk_ov18_0224A60C - .word Unk_ov18_0224A620 - .word Unk_ov18_0224A5D0 - - - .bss - - - .global Unk_ov18_0225338C -Unk_ov18_0225338C: ; 0x0225338C - .space 0x4 - - .global Unk_ov18_02253390 -Unk_ov18_02253390: ; 0x02253390 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/str.s b/subprojects/NitroDWC/libraries/util/asm/str.s deleted file mode 100644 index 74d1372b1e..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/str.s +++ /dev/null @@ -1,23 +0,0 @@ - .include "macros/function.inc" - - - - .text - - - arm_func_start ov18_02245E50 -ov18_02245E50: ; 0x02245E50 - cmp r1, #0 - mov r3, #0 - ble _02245E74 -_02245E5C: - ldrb r2, [r0, r3] - cmp r2, #0 - beq _02245E74 - add r3, r3, #1 - cmp r3, r1 - blt _02245E5C -_02245E74: - mov r0, r3 - bx lr - arm_func_end ov18_02245E50 \ No newline at end of file diff --git a/subprojects/NitroDWC/libraries/util/asm/sub.s b/subprojects/NitroDWC/libraries/util/asm/sub.s deleted file mode 100644 index f0a7f0f185..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/sub.s +++ /dev/null @@ -1,198 +0,0 @@ - .include "macros/function.inc" - .include "include/sub.inc" - - - - .text - - - arm_func_start ov18_02245E7C -ov18_02245E7C: ; 0x02245E7C - stmfd sp!, {r3, lr} - bl GX_DisableBankForBG - ldr r1, _02245F2C ; =0x022533F0 - str r0, [r1, #0] - bl GX_DisableBankForOBJ - ldr r1, _02245F2C ; =0x022533F0 - str r0, [r1, #4] - bl GX_DisableBankForBGExtPltt - ldr r1, _02245F2C ; =0x022533F0 - str r0, [r1, #8] - bl GX_DisableBankForOBJExtPltt - ldr r1, _02245F2C ; =0x022533F0 - str r0, [r1, #0xc] - bl GX_DisableBankForTex - ldr r1, _02245F2C ; =0x022533F0 - str r0, [r1, #0x10] - bl GX_DisableBankForTexPltt - ldr r1, _02245F2C ; =0x022533F0 - str r0, [r1, #0x14] - bl GX_DisableBankForClearImage - ldr r1, _02245F2C ; =0x022533F0 - str r0, [r1, #0x18] - bl GX_DisableBankForSubBG - ldr r1, _02245F2C ; =0x022533F0 - str r0, [r1, #0x1c] - bl GX_DisableBankForSubOBJ - ldr r1, _02245F2C ; =0x022533F0 - str r0, [r1, #0x20] - bl GX_DisableBankForSubBGExtPltt - ldr r1, _02245F2C ; =0x022533F0 - str r0, [r1, #0x24] - bl GX_DisableBankForSubOBJExtPltt - ldr r1, _02245F2C ; =0x022533F0 - str r0, [r1, #0x28] - bl GX_DisableBankForARM7 - ldr r1, _02245F2C ; =0x022533F0 - str r0, [r1, #0x2c] - bl GX_DisableBankForLCDC - ldr r1, _02245F2C ; =0x022533F0 - str r0, [r1, #0x30] - ldr r0, [r1, #0x2c] - bl GX_SetBankForARM7 - bl ov18_02246038 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02245F2C: .word Unk_ov18_022533F0 - arm_func_end ov18_02245E7C - - arm_func_start ov18_02245F30 -ov18_02245F30: ; 0x02245F30 - stmfd sp!, {r4, lr} - bl GX_DisableBankForBG - bl GX_DisableBankForOBJ - bl GX_DisableBankForSubBG - bl GX_DisableBankForSubOBJ - bl ov18_02246038 - ldr r0, _0224602C ; =0x022533F0 - ldr r0, [r0, #0] - bl GX_SetBankForBG - ldr r0, _0224602C ; =0x022533F0 - ldr r0, [r0, #4] - bl GX_SetBankForOBJ - ldr r0, _0224602C ; =0x022533F0 - ldr r0, [r0, #8] - bl GX_SetBankForBGExtPltt - ldr r0, _0224602C ; =0x022533F0 - ldr r0, [r0, #0xc] - bl GX_SetBankForOBJExtPltt - ldr r0, _0224602C ; =0x022533F0 - ldr r0, [r0, #0x10] - bl GX_SetBankForTex - ldr r0, _0224602C ; =0x022533F0 - ldr r0, [r0, #0x14] - bl GX_SetBankForTexPltt - ldr r0, _0224602C ; =0x022533F0 - ldr r0, [r0, #0x18] - bl GX_SetBankForClearImage - ldr r0, _0224602C ; =0x022533F0 - ldr r0, [r0, #0x1c] - bl GX_SetBankForSubBG - ldr r0, _0224602C ; =0x022533F0 - ldr r0, [r0, #0x20] - bl GX_SetBankForSubOBJ - ldr r0, _0224602C ; =0x022533F0 - ldr r0, [r0, #0x24] - bl GX_SetBankForSubBGExtPltt - ldr r0, _0224602C ; =0x022533F0 - ldr r0, [r0, #0x28] - bl GX_SetBankForSubOBJExtPltt - ldr r0, _0224602C ; =0x022533F0 - ldr r0, [r0, #0x30] - bl GX_SetBankForLCDC - mov r3, #0 - ldr r2, _02246030 ; =0x04000050 - ldr r0, _02246034 ; =0x04001014 - strh r3, [r2] - add r1, r2, #0x1000 - strh r3, [r1] - str r3, [r2, #-0x40] - str r3, [r2, #-0x3c] - str r3, [r2, #-0x38] - str r3, [r2, #-0x34] - str r3, [r2, #0xfc0] - str r3, [r0, #0] - str r3, [r0, #4] - str r3, [r0, #8] - bl OS_DisableInterrupts - mov r4, r0 - mov r0, #1 - bl PM_SetLCDPower - mov r0, r4 - bl OS_RestoreInterrupts - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0224602C: .word Unk_ov18_022533F0 -_02246030: .word 0x04000050 -_02246034: .word 0x04001014 - arm_func_end ov18_02245F30 - - arm_func_start ov18_02246038 -ov18_02246038: ; 0x02246038 - stmfd sp!, {r3, lr} - ldr r0, _022460AC ; =0x000001F3 - bl GX_SetBankForLCDC - mov r0, #0 - mov r1, #0x6800000 - mov r2, #0x40000 - bl MIi_CpuClearFast - ldr r1, _022460B0 ; =0x06880000 - mov r0, #0 - mov r2, #0x24000 - bl MIi_CpuClearFast - bl GX_DisableBankForLCDC - mov r0, #0x200 - mov r1, #0x7000000 - mov r2, #0x400 - bl MIi_CpuClearFast - mov r0, #0 - mov r1, #0x5000000 - mov r2, #0x400 - bl MIi_CpuClearFast - mov r0, #0x200 - ldr r1, _022460B4 ; =0x07000400 - mov r2, #0x400 - bl MIi_CpuClearFast - mov r0, #0 - ldr r1, _022460B8 ; =0x05000400 - mov r2, #0x400 - bl MIi_CpuClearFast - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022460AC: .word 0x000001F3 -_022460B0: .word 0x06880000 -_022460B4: .word 0x07000400 -_022460B8: .word 0x05000400 - arm_func_end ov18_02246038 - - arm_func_start ov18_022460BC -ov18_022460BC: ; 0x022460BC - stmfd sp!, {r3, lr} - add r0, sp, #0 - bl PM_GetLEDPattern - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, [sp] - cmp r0, #0xf - ldmeqia sp!, {r3, pc} - mov r0, #0xf - bl PMi_SendLEDPatternCommand - ldmia sp!, {r3, pc} - arm_func_end ov18_022460BC - - arm_func_start ov18_022460E8 -ov18_022460E8: ; 0x022460E8 - ldr ip, _022460F4 ; =PMi_SendLEDPatternCommand - mov r0, #1 - bx ip - ; .align 2, 0 -_022460F4: .word PMi_SendLEDPatternCommand - arm_func_end ov18_022460E8 - - .bss - - - .global Unk_ov18_022533F0 -Unk_ov18_022533F0: ; 0x022533F0 - .space 0x34 - diff --git a/subprojects/NitroDWC/libraries/util/asm/task.s b/subprojects/NitroDWC/libraries/util/asm/task.s deleted file mode 100644 index a60bdae9c4..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/task.s +++ /dev/null @@ -1,288 +0,0 @@ - .include "macros/function.inc" - .include "include/task.inc" - - - - .text - - - arm_func_start ov18_022460F8 -ov18_022460F8: ; 0x022460F8 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r0, #0x80 - mov r1, #4 - bl ov18_02245068 - mov r8, #0 - ldr r4, _02246204 ; =0x02253424 - ldr sb, _02246208 ; =0x0224973C - mov sl, r8 - str r0, [r4, #0] - mov r7, r8 - mov r6, #0xff - mov r5, #1 - mov fp, #0x14 -_0224612C: - ldr r0, [r4, #0] - ldrb r2, [sb] - add r0, r0, r8, lsl #6 - mov r1, #4 - str r2, [r0, #0x34] - ldrb r2, [sb] - mul r0, r2, fp - bl ov18_02245068 - ldr r1, [r4, #0] - mov r2, #0x14 - add r1, r1, r8, lsl #6 - str r0, [r1, #0x3c] - ldr r1, [r4, #0] - ldrb r0, [sb] - add r1, r1, r8, lsl #6 - ldr r1, [r1, #0x3c] - bl ov18_02244008 - ldr r1, [r4, #0] - str r0, [r1, r8, lsl #6] - ldrb r0, [sb], #1 - bl ov18_02243FD4 - ldr r1, [r4, #0] - add r1, r1, r8, lsl #6 - str r0, [r1, #4] - bl ov18_02245974 - ldr r1, [r4, #0] - add r1, r1, r8, lsl #6 - str r0, [r1, #8] - ldr r0, [r4, #0] - add r0, r0, r8, lsl #6 - strb r7, [r0, #0x1c] - ldr r0, [r4, #0] - add r0, r0, r8, lsl #6 - strb r6, [r0, #0x30] - ldr r1, [r4, #0] - add r0, r1, r8, lsl #6 - add r1, r1, sl - ldr r0, [r0, #8] - add r1, r1, #0xc - bl ov18_02245A34 - ldr r1, [r4, #0] - add r0, r1, r8, lsl #6 - add r1, r1, sl - ldr r0, [r0, #8] - add r1, r1, #0x20 - bl ov18_02245A24 - ldr r0, [r4, #0] - add sl, sl, #0x40 - add r0, r0, r8, lsl #6 - add r8, r8, #1 - strb r5, [r0, #0x38] - cmp r8, #2 - blt _0224612C - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_02246204: .word Unk_ov18_02253424 -_02246208: .word Unk_ov18_0224973C - arm_func_end ov18_022460F8 - - arm_func_start ov18_0224620C -ov18_0224620C: ; 0x0224620C - stmfd sp!, {r3, r4, r5, lr} - ldr r4, _0224624C ; =0x02253424 - mov r5, #0 -_02246218: - ldr r0, [r4, #0] - add r0, r0, r5, lsl #6 - ldr r0, [r0, #8] - bl ov18_022459A0 - ldr r0, [r4, #0] - ldr r0, [r0, r5, lsl #6] - bl ov18_02244048 - add r5, r5, #1 - cmp r5, #2 - blt _02246218 - ldr r0, _02246250 ; =0x02253424 - bl ov18_0224508C - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0224624C: .word Unk_ov18_02253424 -_02246250: .word Unk_ov18_02253424 - arm_func_end ov18_0224620C - - arm_func_start ov18_02246254 -ov18_02246254: ; 0x02246254 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - ldr r5, _02246300 ; =0x02253424 - mov r6, r0 - ldr r0, [r5, #0] - add r2, r0, r6, lsl #6 - ldrb r1, [r2, #0x38] - cmp r1, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r4, [r2, #0x10] - add r1, r2, #0x20 - cmp r4, r1 - beq _022462AC -_02246284: - ldr r1, [r4, #0xc] - ldr r2, [r4, #8] - mov r0, r4 - blx r2 - ldr r0, [r5, #0] - ldr r4, [r4, #4] - add r1, r0, r6, lsl #6 - add r1, r1, #0x20 - cmp r4, r1 - bne _02246284 -_022462AC: - add r1, r0, r6, lsl #6 - ldr r1, [r1, #0x34] - mov r4, r6, lsl #6 - mov r5, #0 - cmp r1, #0 - ldmleia sp!, {r3, r4, r5, r6, r7, pc} - ldr r7, _02246300 ; =0x02253424 -_022462C8: - add r0, r4, r0 - ldr r0, [r0, #4] - bl ov18_022440BC - movs r1, r0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r6 - bl ov18_022463D8 - ldr r0, [r7, #0] - add r5, r5, #1 - add r1, r4, r0 - ldr r1, [r1, #0x34] - cmp r5, r1 - blt _022462C8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02246300: .word Unk_ov18_02253424 - arm_func_end ov18_02246254 - - arm_func_start ov18_02246304 -ov18_02246304: ; 0x02246304 - stmfd sp!, {r3, lr} - mov ip, #0 - str ip, [sp] - bl ov18_02246318 - ldmia sp!, {r3, pc} - arm_func_end ov18_02246304 - - arm_func_start ov18_02246318 -ov18_02246318: ; 0x02246318 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - ldr r4, _022463A0 ; =0x02253424 - mov r7, r0 - ldr r0, [r4, #0] - mov r8, r1 - ldr r0, [r0, r7, lsl #6] - mov r5, r2 - mov r6, r3 - bl ov18_022440BC - mov r4, r0 - str r8, [r4, #8] - str r5, [r4, #0xc] - ldrb r1, [sp, #0x18] - strb r6, [r4, #0x10] - mov r0, #1 - strb r1, [r4, #0x11] - bl OS_DisableIrqMask - ldr r1, _022463A0 ; =0x02253424 - mov r5, r0 - ldr r0, [r1, #0] - add r0, r0, r7, lsl #6 - ldr r0, [r0, #0x10] -_02246370: - ldrb r1, [r0, #0x10] - cmp r6, r1 - bhs _02246388 - mov r1, r4 - bl ov18_022459F4 - b _02246390 -_02246388: - ldr r0, [r0, #4] - b _02246370 -_02246390: - mov r0, r5 - bl OS_EnableIrqMask - mov r0, r4 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_022463A0: .word Unk_ov18_02253424 - arm_func_end ov18_02246318 - - arm_func_start ov18_022463A4 -ov18_022463A4: ; 0x022463A4 - str r1, [r0, #8] - bx lr - arm_func_end ov18_022463A4 - - arm_func_start ov18_022463AC -ov18_022463AC: ; 0x022463AC - ldr r2, _022463C4 ; =0x02253424 - ldr ip, _022463C8 ; =ov18_02244064 - ldr r2, [r2, #0] - add r0, r2, r0, lsl #6 - ldr r0, [r0, #4] - bx ip - ; .align 2, 0 -_022463C4: .word Unk_ov18_02253424 -_022463C8: .word ov18_02244064 - arm_func_end ov18_022463AC - - arm_func_start ov18_022463CC -ov18_022463CC: ; 0x022463CC - ldr ip, _022463D4 ; =ov18_022463D8 - bx ip - ; .align 2, 0 -_022463D4: .word ov18_022463D8 - arm_func_end ov18_022463CC - - arm_func_start ov18_022463D8 -ov18_022463D8: ; 0x022463D8 - stmfd sp!, {r3, r4, r5, lr} - mov r4, r1 - ldrb r1, [r4, #0x11] - mov r5, r0 - cmp r1, #0 - beq _022463F8 - add r0, r4, #0xc - bl ov18_0224508C -_022463F8: - mov r0, r4 - bl ov18_022459BC - ldr r0, _02246418 ; =0x02253424 - mov r1, r4 - ldr r0, [r0, #0] - ldr r0, [r0, r5, lsl #6] - bl ov18_02244064 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02246418: .word Unk_ov18_02253424 - arm_func_end ov18_022463D8 - - arm_func_start ov18_0224641C -ov18_0224641C: ; 0x0224641C - ldr r2, _02246430 ; =0x02253424 - ldr r2, [r2, #0] - add r0, r2, r0, lsl #6 - strb r1, [r0, #0x38] - bx lr - ; .align 2, 0 -_02246430: .word Unk_ov18_02253424 - arm_func_end ov18_0224641C - - .rodata - - - .global Unk_ov18_0224973C -Unk_ov18_0224973C: ; 0x0224973C - .byte 0x80, 0x20, 0x0, 0x0 - - - - .bss - - - .global Unk_ov18_02253424 -Unk_ov18_02253424: ; 0x02253424 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/usbap.s b/subprojects/NitroDWC/libraries/util/asm/usbap.s deleted file mode 100644 index 9377348126..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/usbap.s +++ /dev/null @@ -1,549 +0,0 @@ - .include "macros/function.inc" - .include "include/usbap.inc" - - - - .text - - - arm_func_start ov18_0223F564 -ov18_0223F564: ; 0x0223F564 - stmfd sp!, {r4, r5, lr} - sub sp, sp, #0x54 - mov r4, r0 - ldr r0, _0223F6CC ; =0x00001BA0 - mov r1, #0x20 - bl ov18_02245068 - ldr r2, _0223F6D0 ; =0x02253394 - add r1, r0, #0x1000 - str r0, [r2, #0] - str r4, [r1, #0x370] - bl OS_GetTick - ldr r4, _0223F6D0 ; =0x02253394 - mov r2, #3 - ldr r3, [r4, #0] - add r3, r3, #0x1000 - str r0, [r3, #0xb88] - str r1, [r3, #0xb8c] - ldr r0, [r4, #0] - ldr r1, _0223F6D4 ; =ov18_0223F818 - bl WM_Initialize - cmp r0, #2 - bne _0223F6B8 -_0223F5BC: - ldr r0, [r4, #0] - add r0, r0, #0x3b8 - add r0, r0, #0x1000 - bl WM_ReadStatus - ldr ip, [r4] - add r0, ip, #0x1300 - ldrh r0, [r0, #0xb8] - cmp r0, #2 - bne _0223F5BC - add r0, ip, #0x374 - ldr r5, _0223F6D8 ; =0x02249610 - add lr, r0, #0x1000 - mov r4, #4 -_0223F5F0: - ldmia r5!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - subs r4, r4, #1 - bne _0223F5F0 - ldr r0, [r5, #0] - add r1, ip, #0xf00 - str r0, [lr] - add r0, ip, #0x1000 - str r1, [r0, #0x374] - bl WM_GetDispersionScanPeriod - ldr r1, _0223F6D0 ; =0x02253394 - ldr r1, [r1, #0] - add r1, r1, #0x1300 - strh r0, [r1, #0x7c] - add r0, sp, #0 - bl OS_GetOwnerInfo - ldr r1, _0223F6D0 ; =0x02253394 - ldr r0, _0223F6DC ; =0x02249604 - ldr r1, [r1, #0] - mov r2, #8 - add r1, r1, #0x388 - add r1, r1, #0x1000 - bl MI_CpuCopy8 - ldr r2, _0223F6D0 ; =0x02253394 - mov r3, #1 - ldr r1, [r2, #0] - add r0, sp, #4 - add r1, r1, #0x1000 - strb r3, [r1, #0x391] - ldr r1, [r2, #0] - ldrh r2, [sp, #0x1a] - add r1, r1, #0x394 - add r1, r1, #0x1000 - mov r2, r2, lsl #1 - bl MI_CpuCopy8 - bl ov18_0223F6E8 - cmp r0, #0 - beq _0223F6B8 - mov r0, #0 - ldr r1, _0223F6E0 ; =ov18_0223FB0C - mov r2, r0 - mov r3, #0x78 - bl ov18_02246304 - ldr r1, _0223F6D0 ; =0x02253394 - add sp, sp, #0x54 - ldr r1, [r1, #0] - add r1, r1, #0x1000 - str r0, [r1, #0xb90] - mov r0, #1 - ldmia sp!, {r4, r5, pc} -_0223F6B8: - ldr r0, _0223F6E4 ; =0x02253394 - bl ov18_0224508C - mov r0, #0 - add sp, sp, #0x54 - ldmia sp!, {r4, r5, pc} - ; .align 2, 0 -_0223F6CC: .word 0x00001BA0 -_0223F6D0: .word Unk_ov18_02253394 -_0223F6D4: .word ov18_0223F818 -_0223F6D8: .word Unk_ov18_02249610 -_0223F6DC: .word Unk_ov18_02249604 -_0223F6E0: .word ov18_0223FB0C -_0223F6E4: .word Unk_ov18_02253394 - arm_func_end ov18_0223F564 - - arm_func_start ov18_0223F6E8 -ov18_0223F6E8: ; 0x0223F6E8 - stmfd sp!, {r3, lr} - ldr r1, _0223F714 ; =0x02253394 - ldr r0, _0223F718 ; =ov18_0223F818 - ldr r1, [r1, #0] - add r1, r1, #0x374 - add r1, r1, #0x1000 - bl WM_StartScanEx - cmp r0, #2 - moveq r0, #1 - movne r0, #0 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223F714: .word Unk_ov18_02253394 -_0223F718: .word ov18_0223F818 - arm_func_end ov18_0223F6E8 - - arm_func_start ov18_0223F71C -ov18_0223F71C: ; 0x0223F71C - stmfd sp!, {r4, lr} - ldr r1, _0223F7F4 ; =0x02253394 - mov r2, #1 - ldr r0, [r1, #0] - add r0, r0, #0x1000 - strb r2, [r0, #0xb94] - ldr r0, [r1, #0] - add r0, r0, #0x3b8 - add r0, r0, #0x1000 - bl WM_ReadStatus - ldr r0, _0223F7F4 ; =0x02253394 - ldr r0, [r0, #0] - add r0, r0, #0x1300 - ldrh r0, [r0, #0xb8] - cmp r0, #2 - beq _0223F798 - ldr r0, _0223F7F8 ; =ov18_0223F818 - bl WM_Reset - cmp r0, #2 - movne r0, #0 - ldmneia sp!, {r4, pc} - ldr r4, _0223F7F4 ; =0x02253394 -_0223F774: - ldr r0, [r4, #0] - add r0, r0, #0x3b8 - add r0, r0, #0x1000 - bl WM_ReadStatus - ldr r0, [r4, #0] - add r0, r0, #0x1300 - ldrh r0, [r0, #0xb8] - cmp r0, #2 - bne _0223F774 -_0223F798: - ldr r0, _0223F7F8 ; =ov18_0223F818 - bl WM_End - cmp r0, #2 - movne r0, #0 - ldmneia sp!, {r4, pc} - ldr r0, _0223F7F4 ; =0x02253394 - ldr r0, [r0, #0] - add r0, r0, #0x1000 - ldr r1, [r0, #0xb90] - cmp r1, #0 - beq _0223F7CC - mov r0, #0 - bl ov18_022463CC -_0223F7CC: - ldr r0, _0223F7F4 ; =0x02253394 - ldr r0, [r0, #0] - add r0, r0, #0x1000 -_0223F7D8: - ldrb r1, [r0, #0xb94] - cmp r1, #2 - bne _0223F7D8 - ldr r0, _0223F7FC ; =0x02253394 - bl ov18_0224508C - mov r0, #1 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0223F7F4: .word Unk_ov18_02253394 -_0223F7F8: .word ov18_0223F818 -_0223F7FC: .word Unk_ov18_02253394 - arm_func_end ov18_0223F71C - - arm_func_start ov18_0223F800 -ov18_0223F800: ; 0x0223F800 - ldr r1, _0223F814 ; =0x02253394 - ldr r1, [r1, #0] - add r1, r1, #0x1000 - str r0, [r1, #0x370] - bx lr - ; .align 2, 0 -_0223F814: .word Unk_ov18_02253394 - arm_func_end ov18_0223F800 - - arm_func_start ov18_0223F818 -ov18_0223F818: ; 0x0223F818 - stmfd sp!, {r3, lr} - ldrh r1, [r0, #2] - cmp r1, #0 - ldmneia sp!, {r3, pc} - ldr r1, _0223F8A4 ; =0x02253394 - ldr r1, [r1, #0] - add r1, r1, #0x1000 - ldrb r2, [r1, #0xb94] - cmp r2, #0 - beq _0223F854 - ldrh r0, [r0] - cmp r0, #2 - moveq r0, #2 - streqb r0, [r1, #0xb94] - ldmia sp!, {r3, pc} -_0223F854: - ldrh r2, [r0] - cmp r2, #0x26 - ldmneia sp!, {r3, pc} - ldrh r2, [r0, #8] - cmp r2, #4 - beq _0223F894 - cmp r2, #5 - bne _0223F89C - ldrb r1, [r1, #0xb96] - cmp r1, #0 - beq _0223F888 - bl ov18_0223FA00 - b _0223F88C -_0223F888: - bl ov18_0223F8A8 -_0223F88C: - bl ov18_0223F6E8 - ldmia sp!, {r3, pc} -_0223F894: - bl ov18_0223F6E8 - ldmia sp!, {r3, pc} -_0223F89C: - bl OS_Terminate - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223F8A4: .word Unk_ov18_02253394 - arm_func_end ov18_0223F818 - - arm_func_start ov18_0223F8A8 -ov18_0223F8A8: ; 0x0223F8A8 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov fp, r0 - ldrh r0, [fp, #0xe] - mov r7, #0 - cmp r0, #0 - ldmleia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0223F8C0: - add r0, fp, r7, lsl #2 - ldr r6, [r0, #0x10] - mov r1, #0xc0 - mov r0, r6 - bl DC_InvalidateRange - ldr r1, _0223F9F4 ; =0x02249604 - add r0, r6, #0xc - mov r2, #8 - bl memcmp - cmp r0, #0 - bne _0223F9E0 - ldr r0, _0223F9F8 ; =0x02253394 - mov r5, #0 - ldr sb, [r0] - mov r4, #6 - add r8, sb, #0x1300 -_0223F900: - mov r1, r8 - mov r2, r4 - add r0, r6, #4 - bl memcmp - cmp r0, #0 - bne _0223F958 - rsb r0, r5, r5, lsl #3 - add r0, sb, r0 - add r0, r0, #0x1000 - ldrb r0, [r0, #0x306] - cmp r0, #0 - bne _0223F9E0 - ldrb r0, [r6, #0x15] - tst r0, #1 - beq _0223F9E0 - add r0, sb, #0x1000 - ldr r1, [r0, #0x370] - cmp r1, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, #1 - blx r1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0223F958: - add r5, r5, #1 - cmp r5, #0x10 - add r8, r8, #7 - blt _0223F900 - ldr r5, _0223F9FC ; =0x022495FC - add r8, sb, #0x1300 - mov sl, #0 - mov r4, #6 -_0223F978: - mov r0, r8 - mov r1, r5 - mov r2, r4 - bl memcmp - cmp r0, #0 - bne _0223F9D0 - rsb r4, sl, sl, lsl #3 - add r1, sb, #0x1300 - add r0, r6, #4 - add r1, r1, r4 - mov r2, #6 - bl MI_CpuCopy8 - ldrb r0, [r6, #0x15] - tst r0, #1 - ldr r0, _0223F9F8 ; =0x02253394 - movne r1, #1 - ldr r0, [r0, #0] - moveq r1, #0 - add r0, r0, r4 - add r0, r0, #0x1000 - strb r1, [r0, #0x306] - b _0223F9E0 -_0223F9D0: - add sl, sl, #1 - cmp sl, #0x10 - add r8, r8, #7 - blt _0223F978 -_0223F9E0: - ldrh r0, [fp, #0xe] - add r7, r7, #1 - cmp r7, r0 - blt _0223F8C0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0223F9F4: .word Unk_ov18_02249604 -_0223F9F8: .word Unk_ov18_02253394 -_0223F9FC: .word Unk_ov18_022495FC - arm_func_end ov18_0223F8A8 - - arm_func_start ov18_0223FA00 -ov18_0223FA00: ; 0x0223FA00 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r1, _0223FB04 ; =0x02253394 - mov sl, r0 - ldr r2, [r1, #0] - add r1, r2, #0x1000 - ldrb r0, [r1, #0xb95] - cmp r0, #0 - beq _0223FA34 - ldr r1, [r1, #0x370] - cmp r1, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - blx r1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0223FA34: - add r0, r2, #0xf00 - mov r1, #0x400 - bl DC_InvalidateRange - ldrh fp, [sl, #0xe] - mov r6, #0 - cmp fp, #0 - ldmleia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, _0223FB04 ; =0x02253394 - mov r4, #6 - ldr sb, [r0] -_0223FA5C: - add r0, sl, r6, lsl #2 - ldr r5, [r0, #0x10] - ldr r1, _0223FB08 ; =0x02249604 - mov r2, #8 - add r0, r5, #0xc - bl memcmp - cmp r0, #0 - bne _0223FAF4 - ldrb r0, [r5, #0x15] - tst r0, #1 - beq _0223FAF4 - mov r7, #0 - add r8, sb, #0x1300 -_0223FA90: - mov r1, r8 - mov r2, r4 - add r0, r5, #4 - bl memcmp - cmp r0, #0 - bne _0223FAE4 - rsb r0, r7, r7, lsl #3 - add r0, sb, r0 - add r0, r0, #0x1000 - ldrb r0, [r0, #0x306] - cmp r0, #0 - bne _0223FAF4 - add r0, sb, #0x1000 - ldr r1, [r0, #0x370] - cmp r1, #0 - moveq r1, #1 - streqb r1, [r0, #0xb95] - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, #1 - blx r1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0223FAE4: - add r7, r7, #1 - cmp r7, #0x10 - add r8, r8, #7 - blt _0223FA90 -_0223FAF4: - add r6, r6, #1 - cmp r6, fp - blt _0223FA5C - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0223FB04: .word Unk_ov18_02253394 -_0223FB08: .word Unk_ov18_02249604 - arm_func_end ov18_0223FA00 - - arm_func_start ov18_0223FB0C -ov18_0223FB0C: ; 0x0223FB0C - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - str r0, [sp] - bl OS_GetTick - ldr r2, _0223FC3C ; =0x02253394 - ldr r3, _0223FC40 ; =0x0017F898 - ldr sl, [r2] - mov r7, #0 - add r2, sl, #0x1000 - ldr r4, [r2, #0xb88] - ldr r2, [r2, #0xb8c] - adds r3, r4, r3 - adc r2, r2, #0 - cmp r1, r2 - cmpeq r0, r3 - ldmloia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r4, _0223FC44 ; =0x022495FC - mov r6, r7 - mov r5, r7 - mov sb, sl - add r8, sl, #0x1300 - mov fp, #6 -_0223FB60: - mov r0, r8 - mov r1, r4 - mov r2, fp - bl memcmp - cmp r0, #0 - beq _0223FB8C - add r0, sb, #0x1000 - ldrb r0, [r0, #0x306] - cmp r0, #0 - movne r6, #1 - moveq r7, #1 -_0223FB8C: - add r5, r5, #1 - cmp r5, #0x10 - add r8, r8, #7 - add sb, sb, #7 - blt _0223FB60 - cmp r6, #0 - cmpne r7, #0 - beq _0223FBC8 - add r0, sl, #0x1000 - ldr r1, [r0, #0x370] - cmp r1, #0 - beq _0223FC0C - mov r0, #2 - blx r1 - b _0223FC0C -_0223FBC8: - cmp r6, #0 - beq _0223FBEC - add r0, sl, #0x1000 - ldr r1, [r0, #0x370] - cmp r1, #0 - beq _0223FC0C - mov r0, #1 - blx r1 - b _0223FC0C -_0223FBEC: - cmp r7, #0 - bne _0223FC0C - add r0, sl, #0x1000 - ldr r1, [r0, #0x370] - cmp r1, #0 - beq _0223FC0C - mov r0, #0 - blx r1 -_0223FC0C: - ldr r3, _0223FC3C ; =0x02253394 - mov r0, #0 - ldr r2, [r3, #0] - ldr r1, [sp] - add r2, r2, #0x1000 - str r0, [r2, #0xb90] - ldr r2, [r3, #0] - mov r3, #1 - add r2, r2, #0x1000 - strb r3, [r2, #0xb96] - bl ov18_022463AC - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0223FC3C: .word Unk_ov18_02253394 -_0223FC40: .word 0x0017F898 -_0223FC44: .word Unk_ov18_022495FC - arm_func_end ov18_0223FB0C - - .rodata - - - .global Unk_ov18_022495FC -Unk_ov18_022495FC: ; 0x022495FC - .space 0x8 - - .global Unk_ov18_02249604 -Unk_ov18_02249604: ; 0x02249604 - .ascii "NWCUSBAP" - .space 0x4 - - .global Unk_ov18_02249610 -Unk_ov18_02249610: ; 0x02249610 - .space 0x4 - .byte 0x0, 0x4, 0xFF, 0x3F - .space 0x2 - .short 0xFFFF, 0xFFFF, 0xFFFF - .short 0x2, 0x20 - .space 0x20 - .word 0x8 - .space 0xC - - - - .bss - - - .global Unk_ov18_02253394 -Unk_ov18_02253394: ; 0x02253394 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/asm/window.s b/subprojects/NitroDWC/libraries/util/asm/window.s deleted file mode 100644 index bea88c6272..0000000000 --- a/subprojects/NitroDWC/libraries/util/asm/window.s +++ /dev/null @@ -1,920 +0,0 @@ - .include "macros/function.inc" - .include "include/window.inc" - - .extern Unk_ov18_022532D8 - - .text - - - arm_func_start ov18_0223FC48 -ov18_0223FC48: ; 0x0223FC48 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x24 - ldr r5, _0223FF44 ; =0x02249654 - ldr r4, _0223FF48 ; =0x022532D8 - ldrb sl, [r5, #4] - ldrb sb, [r5, #5] - ldrb r8, [r5, #6] - ldrb r7, [r5, #7] - ldrb r6, [r5, #8] - ldrb r5, [r5, #9] - strb sl, [sp, #0x1c] - mov fp, r0 - str r2, [sp, #0x10] - mov r2, r3 - mov sl, r1 - ldr r0, [r4, #0] - ldr r3, [sp, #0x48] - mov r1, fp - strb sb, [sp, #0x1d] - strb r8, [sp, #0x1e] - strb r7, [sp, #0x1f] - strb r6, [sp, #0x20] - strb r5, [sp, #0x21] - bl ov18_0222F8D0 - str r0, [sp, #0x14] - mov r0, #0x20 - mov r1, #4 - bl ov18_02245068 - ldr r1, _0223FF4C ; =0x02253398 - mvn r3, #1 - str r0, [r1, #0] - strb sl, [r0, #0x1c] - ldr r2, [r1, #0] - ldr r0, _0223FF50 ; =0x04000050 - strb r3, [r2, #0x1b] - ldr r3, [r1, #0] - ldr r2, [sp, #0x10] - mov r1, #0x1f - strb r2, [r3, #0x1e] - mov r2, #0 - bl G2x_SetBlendBrightness_ - ldr r1, _0223FF54 ; =0x02249708 - mov r0, #0 - ldrb r1, [r1, sl] - mov r2, r0 - bl ov18_02243F8C - ldr r3, _0223FF4C ; =0x02253398 - mvn r1, #0 - ldr r4, [r3, #0] - mov r2, #0x100 - str r0, [r4, #0] - ldr r0, [r3, #0] - mov r3, #0 - ldr r0, [r0, #0] - bl ov18_02243CF4 - ldr r0, _0223FF4C ; =0x02253398 - mvn r1, #0 - ldr r0, [r0, #0] - mov r2, #0 - ldr r0, [r0, #0] - bl ov18_02243DE4 - ldr r7, _0223FF58 ; =0x02249710 - mov r8, #0 - ldrb r0, [r7, sl] - cmp r0, #0 - ble _0223FDC8 - ldr r0, _0223FF5C ; =0x0224967A - ldr r4, _0223FF4C ; =0x02253398 - add sb, r0, sl, lsl #1 - mvn r6, #0 - mov r5, #0x100 - mov fp, r8 -_0223FD68: - ldrb r1, [sb], #1 - mov r0, #0 - mov r2, r0 - bl ov18_02243F8C - ldr r2, [r4, #0] - mov r1, r6 - add r2, r2, r8, lsl #2 - str r0, [r2, #8] - ldr r0, [r4, #0] - mov r2, r5 - add r0, r0, r8, lsl #2 - ldr r0, [r0, #8] - mov r3, fp - bl ov18_02243CF4 - ldr r0, [r4, #0] - mov r1, r6 - add r0, r0, r8, lsl #2 - ldr r0, [r0, #8] - mov r2, #0 - bl ov18_02243DE4 - ldrb r0, [r7, sl] - add r8, r8, #1 - cmp r8, r0 - blt _0223FD68 -_0223FDC8: - add r1, sp, #0x18 - str r1, [sp] - mov r0, #0 - mov r1, #0x20 - mov r2, #0xc - mov r3, #1 - str r0, [sp, #4] - bl ov18_02244574 - ldr r1, _0223FF4C ; =0x02253398 - ldr r1, [r1, #0] - str r0, [r1, #0x10] - mov r0, #0 - ldr r1, [sp, #0x18] - mov r2, r0 - bl ov18_022439E0 - ldr r1, _0223FF4C ; =0x02253398 - ldr r1, [r1, #0] - str r0, [r1, #4] - bl ov18_0222B8F8 - ldr r1, _0223FF60 ; =0x0224969A - mov r5, sl, lsl #2 - ldrh r4, [r1, r5] - mov r3, #2 - ldr r2, _0223FF4C ; =0x02253398 - str r4, [sp] - str r3, [sp, #4] - str r0, [sp, #8] - ldr r0, [sp, #0x14] - ldr r3, _0223FF64 ; =0x02249698 - str r0, [sp, #0xc] - ldr r0, [r2, #0] - mov r1, #0 - ldrh r3, [r3, r5] - ldr r0, [r0, #0x10] - mov r2, r1 - bl ov18_02244A9C - ldr r0, _0223FF4C ; =0x02253398 - mov r2, #0 - ldr r3, [r0, #0] - mov r1, #0x100 - str r2, [sp] - ldr r0, [r3, #0x10] - ldr r3, [r3, #4] - bl ov18_02244B70 - mov r0, #0 - mov r1, r0 - mov r2, #0x1f - mov r3, r0 - bl ov18_02244E4C - ldr r3, _0223FF4C ; =0x02253398 - add r4, sp, #0x1c - ldr r3, [r3, #0] - mov r0, #0 - ldrb r3, [r3, #0x1c] - mov r1, #1 - mov r2, #0x1f - ldrb r3, [r4, r3] - bl ov18_02244E4C - mov r0, #0 - mov r1, #3 - mov r2, #0x1f - mov r3, #1 - bl ov18_02244E4C - ldr r2, _0223FF68 ; =0x0224965E - mov r0, #0 - mov r1, #1 - bl ov18_02244D34 - mov r0, #0xc0 - bl ov18_022402E4 - mov r2, #0x4000000 - ldr r0, [sp, #0x10] - ldr r1, [r2, #0] - cmp r0, #0 - bic r0, r1, #0xe000 - orr r0, r0, #0x6000 - str r0, [r2, #0] - mov r0, #1 - mov r2, #0 - beq _0223FF24 - ldr r1, _0223FF6C ; =ov18_0223FFE8 - mov r3, #0x78 - bl ov18_02246304 - ldr r1, _0223FF4C ; =0x02253398 - add sp, sp, #0x24 - ldr r1, [r1, #0] - str r0, [r1, #0x14] - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0223FF24: - ldr r1, _0223FF70 ; =ov18_02240048 - mov r3, #0x78 - bl ov18_02246304 - ldr r1, _0223FF4C ; =0x02253398 - ldr r1, [r1, #0] - str r0, [r1, #0x14] - add sp, sp, #0x24 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0223FF44: .word Unk_ov18_02249654 -_0223FF48: .word Unk_ov18_022532D8 -_0223FF4C: .word Unk_ov18_02253398 -_0223FF50: .word 0x04000050 -_0223FF54: .word Unk_ov18_02249708 -_0223FF58: .word Unk_ov18_02249710 -_0223FF5C: .word Unk_ov18_0224967A -_0223FF60: .word 0x0224969A -_0223FF64: .word Unk_ov18_02249698 -_0223FF68: .word Unk_ov18_0224965E -_0223FF6C: .word ov18_0223FFE8 -_0223FF70: .word ov18_02240048 - arm_func_end ov18_0223FC48 - - arm_func_start ov18_0223FF74 -ov18_0223FF74: ; 0x0223FF74 - stmfd sp!, {r3, lr} - ldr r1, _0223FFB0 ; =0x02253398 - mov r0, #0 - ldr r1, [r1, #0] - ldr r1, [r1, #0x14] - bl ov18_022463AC - ldr r1, _0223FFB4 ; =ov18_022405D8 - mov r0, #1 - mov r2, #0 - mov r3, #0x78 - bl ov18_02246304 - ldr r1, _0223FFB0 ; =0x02253398 - ldr r1, [r1, #0] - str r0, [r1, #0x14] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0223FFB0: .word Unk_ov18_02253398 -_0223FFB4: .word ov18_022405D8 - arm_func_end ov18_0223FF74 - - arm_func_start ov18_0223FFB8 -ov18_0223FFB8: ; 0x0223FFB8 - ldr r0, _0223FFC8 ; =0x02253398 - ldr r0, [r0, #0] - ldrsb r0, [r0, #0x1b] - bx lr - ; .align 2, 0 -_0223FFC8: .word Unk_ov18_02253398 - arm_func_end ov18_0223FFB8 - - arm_func_start ov18_0223FFCC -ov18_0223FFCC: ; 0x0223FFCC - ldr r0, _0223FFE4 ; =0x02253398 - ldr r0, [r0, #0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - bx lr - ; .align 2, 0 -_0223FFE4: .word Unk_ov18_02253398 - arm_func_end ov18_0223FFCC - - arm_func_start ov18_0223FFE8 -ov18_0223FFE8: ; 0x0223FFE8 - stmfd sp!, {r4, lr} - ldr r1, _0224003C ; =0x02253398 - mov r4, r0 - ldr r3, [r1, #0] - ldr r0, _02240040 ; =0x04000050 - ldrsb r2, [r3, #0x1a] - sub r2, r2, #1 - strb r2, [r3, #0x1a] - ldr r1, [r1, #0] - ldrsb r1, [r1, #0x1a] - bl G2x_ChangeBlendBrightness_ - ldr r1, _0224003C ; =0x02253398 - mvn r0, #0xb - ldr r1, [r1, #0] - ldrsb r1, [r1, #0x1a] - cmp r1, r0 - ldmgtia sp!, {r4, pc} - ldr r1, _02240044 ; =ov18_02240048 - mov r0, r4 - bl ov18_022463A4 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0224003C: .word Unk_ov18_02253398 -_02240040: .word 0x04000050 -_02240044: .word ov18_02240048 - arm_func_end ov18_0223FFE8 - - arm_func_start ov18_02240048 -ov18_02240048: ; 0x02240048 - stmfd sp!, {r4, lr} - sub sp, sp, #8 - ldr r1, _0224010C ; =0x02253398 - mov r4, r0 - ldr r0, [r1, #0] - add r2, sp, #4 - ldr r0, [r0, #0] - add r3, sp, #0 - mov r1, #0 - bl ov18_02243E44 - ldr r0, [sp] - ldr r1, _0224010C ; =0x02253398 - sub r0, r0, #0xc - ldr r1, [r1, #0] - str r0, [sp] - ldrb r2, [r1, #0x1c] - ldr r1, _02240110 ; =0x022496B2 - mov r2, r2, lsl #2 - ldrh r1, [r1, r2] - cmp r0, r1 - ble _022400A8 - bl ov18_022402E4 - add sp, sp, #8 - ldmia sp!, {r4, pc} -_022400A8: - mov r0, r1 - bl ov18_022402E4 - ldr r0, _0224010C ; =0x02253398 - mov r3, #0x78 - ldr r0, [r0, #0] - ldrb r0, [r0, #0x1c] - cmp r0, #5 - mov r0, #0 - bne _022400E0 - ldr r1, _02240114 ; =ov18_02240278 - mov r2, r0 - bl ov18_02246304 - ldr r1, _0224010C ; =0x02253398 - b _022400F0 -_022400E0: - ldr r1, _02240118 ; =ov18_0224011C - mov r2, r0 - bl ov18_02246304 - ldr r1, _0224010C ; =0x02253398 -_022400F0: - ldr r1, [r1, #0] - str r0, [r1, #0x14] - mov r1, r4 - mov r0, #1 - bl ov18_022463AC - add sp, sp, #8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0224010C: .word Unk_ov18_02253398 -_02240110: .word 0x022496B2 -_02240114: .word ov18_02240278 -_02240118: .word ov18_0224011C - arm_func_end ov18_02240048 - - arm_func_start ov18_0224011C -ov18_0224011C: ; 0x0224011C - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #8 - ldr r4, _0224025C ; =0x02253398 - ldr sb, _02240260 ; =0x02249710 - ldr r0, [r4, #0] - mov sl, #0 - ldrb r1, [r0, #0x1c] - ldrb r0, [sb, r1] - cmp r0, #0 - ble _022401A8 - ldr r8, _02240264 ; =0x022496E0 - ldr r7, _02240268 ; =0x02249666 - ldr r6, _0224026C ; =0x02249684 - add r5, sp, #0 -_02240154: - add r0, r7, r1, lsl #1 - ldrb r0, [sl, r0] - add r3, r8, r1, lsl #3 - mov r2, r5 - add r0, r3, r0, lsl #2 - add r1, r6, r1, lsl #2 - bl ov18_02244C50 - mov r0, r5 - bl ov18_022455B8 - cmp r0, #0 - beq _02240190 - ldr r0, _0224025C ; =0x02253398 - ldr r0, [r0, #0] - strb sl, [r0, #0x1b] - b _022401A8 -_02240190: - ldr r0, [r4, #0] - add sl, sl, #1 - ldrb r1, [r0, #0x1c] - ldrb r0, [sb, r1] - cmp sl, r0 - blt _02240154 -_022401A8: - mov r0, #1 - bl ov18_02245470 - cmp r0, #0 - beq _022401D4 - ldr r0, _0224025C ; =0x02253398 - ldr r1, _02240270 ; =0x02249670 - ldr r2, [r0, #0] - ldrb r0, [r2, #0x1c] - mov r0, r0, lsl #1 - ldrsb r0, [r1, r0] - strb r0, [r2, #0x1b] -_022401D4: - mov r0, #2 - bl ov18_02245470 - cmp r0, #0 - beq _02240200 - ldr r0, _0224025C ; =0x02253398 - ldr r1, _02240274 ; =0x02249671 - ldr r2, [r0, #0] - ldrb r0, [r2, #0x1c] - mov r0, r0, lsl #1 - ldrsb r0, [r1, r0] - strb r0, [r2, #0x1b] -_02240200: - ldr r0, _0224025C ; =0x02253398 - ldr r2, _02240260 ; =0x02249710 - ldr r4, [r0, #0] - mov r0, #0 - ldrb r1, [r4, #0x1c] - ldrb r1, [r2, r1] - cmp r1, #0 - ble _0224024C - ldrsb r3, [r4, #0x1b] -_02240224: - cmp r0, r3 - bne _02240238 - bl ov18_02240518 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_02240238: - ldrb r1, [r4, #0x1c] - add r0, r0, #1 - ldrb r1, [r2, r1] - cmp r0, r1 - blt _02240224 -_0224024C: - mvn r0, #0 - strb r0, [r4, #0x1b] - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ; .align 2, 0 -_0224025C: .word Unk_ov18_02253398 -_02240260: .word Unk_ov18_02249710 -_02240264: .word Unk_ov18_022496E0 -_02240268: .word Unk_ov18_02249666 -_0224026C: .word Unk_ov18_02249684 -_02240270: .word Unk_ov18_02249670 -_02240274: .word 0x02249671 - arm_func_end ov18_0224011C - - arm_func_start ov18_02240278 -ov18_02240278: ; 0x02240278 - stmfd sp!, {r3, lr} - ldr r2, _022402DC ; =0x02253398 - mvn ip, #0 - ldr r3, [r2, #0] - mov r1, r0 - strb ip, [r3, #0x1b] - ldr r3, [r2, #0] - ldrh r0, [r3, #0x18] - add r0, r0, #1 - strh r0, [r3, #0x18] - ldr r0, [r2, #0] - ldrh r0, [r0, #0x18] - cmp r0, #0x78 - ldmloia sp!, {r3, pc} - mov r0, #0 - bl ov18_022463AC - ldr r1, _022402E0 ; =ov18_022405D8 - mov r0, #1 - mov r2, #0 - mov r3, #0x78 - bl ov18_02246304 - ldr r1, _022402DC ; =0x02253398 - ldr r1, [r1, #0] - str r0, [r1, #0x14] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022402DC: .word Unk_ov18_02253398 -_022402E0: .word ov18_022405D8 - arm_func_end ov18_02240278 - - arm_func_start ov18_022402E4 -ov18_022402E4: ; 0x022402E4 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc - ldr r1, _02240470 ; =0x02253398 - mov sl, r0 - ldr r0, [r1, #0] - ldr r1, _02240474 ; =0x022496B0 - ldrb r2, [r0, #0x1c] - ldr r0, [r0, #0] - mov r3, sl - mov r2, r2, lsl #2 - ldrh r2, [r1, r2] - mvn r1, #0 - bl ov18_02243CF4 - ldr r0, _02240470 ; =0x02253398 - ldr r2, _02240474 ; =0x022496B0 - ldr r0, [r0, #0] - add r3, sl, #8 - ldrb r4, [r0, #0x1c] - ldr r0, [r0, #4] - mvn r1, #0 - mov r4, r4, lsl #2 - ldrh r2, [r2, r4] - add r2, r2, #8 - bl ov18_02243CF4 - ldr r0, _02240470 ; =0x02253398 - mov r1, sl - ldr r0, [r0, #0] - ldr r0, [r0, #0] - bl ov18_0224048C - ldr r0, _02240470 ; =0x02253398 - mov r1, sl - ldr r0, [r0, #0] - ldr r0, [r0, #4] - bl ov18_0224048C - ldr r4, _02240470 ; =0x02253398 - ldr r8, _02240478 ; =0x02249710 - ldr r0, [r4, #0] - mov sb, #0 - ldrb r0, [r0, #0x1c] - ldrb r1, [r8, r0] - cmp r1, #0 - ble _02240408 - ldr r7, _0224047C ; =0x02249666 - ldr r5, _02240480 ; =0x022496E0 - ldr fp, _02240474 ; =0x022496B0 - mvn r6, #0 -_0224039C: - add r1, r7, r0, lsl #1 - ldrb ip, [sb, r1] - add r2, r5, r0, lsl #3 - add r3, fp, r0, lsl #2 - add r0, r2, ip, lsl #2 - ldr r1, [r4, #0] - mov ip, ip, lsl #2 - ldrh r2, [ip, r2] - ldrh r0, [r0, #2] - add r1, r1, sb, lsl #2 - ldrh r3, [r3, #2] - add ip, sl, r0 - ldr r0, [r1, #8] - mov r1, r6 - sub r3, ip, r3 - bl ov18_02243CF4 - ldr r0, [r4, #0] - mov r1, sl - add r0, r0, sb, lsl #2 - ldr r0, [r0, #8] - bl ov18_0224048C - ldr r0, [r4, #0] - add sb, sb, #1 - ldrb r0, [r0, #0x1c] - ldrb r1, [r8, r0] - cmp sb, r1 - blt _0224039C -_02240408: - and r1, sl, #0xff - cmp r1, #0xc0 - movge r3, #0 - movge r1, r3 - bge _0224042C - ldr r2, _02240484 ; =0x022496CA - mov r3, r0, lsl #2 - ldrh r2, [r2, r3] - add r3, r1, r2 -_0224042C: - ldr r4, _02240474 ; =0x022496B0 - mov r5, r0, lsl #2 - ldr r2, _02240488 ; =0x022496C8 - ldrh r0, [r4, r5] - ldrh r2, [r2, r5] - cmp r3, #0xc0 - add r4, sp, #4 - movgt r3, #0xc0 - add r2, r0, r2 - str r4, [sp] - bl ov18_02244C38 - mov r0, #0 - mov r2, r4 - mov r1, r0 - bl ov18_02244D34 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_02240470: .word Unk_ov18_02253398 -_02240474: .word Unk_ov18_022496B0 -_02240478: .word Unk_ov18_02249710 -_0224047C: .word Unk_ov18_02249666 -_02240480: .word Unk_ov18_022496E0 -_02240484: .word 0x022496CA -_02240488: .word Unk_ov18_022496C8 - arm_func_end ov18_022402E4 - - arm_func_start ov18_0224048C -ov18_0224048C: ; 0x0224048C - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - mov sl, r0 - mov sb, r1 - bl ov18_02243BC8 - mov r7, r0 - cmp r7, #0 - mov r8, #0 - addle sp, sp, #8 - ldmleia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov fp, #0x200 - mov r4, r8 - add r6, sp, #4 - add r5, sp, #0 -_022404C4: - mov r0, sl - mov r1, r8 - mov r2, r6 - mov r3, r5 - bl ov18_02243E44 - ldr r0, [sp] - cmp r0, sb - blt _022404F0 - cmp r0, #0xc0 - movlt r2, r4 - blt _022404F4 -_022404F0: - mov r2, fp -_022404F4: - mov r0, sl - mov r1, r8 - mov r3, #0 - bl ov18_02243BD0 - add r8, r8, #1 - cmp r8, r7 - blt _022404C4 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end ov18_0224048C - - arm_func_start ov18_02240518 -ov18_02240518: ; 0x02240518 - stmfd sp!, {r4, lr} - ldr r1, _022405C4 ; =0x02253398 - mov r4, r0 - ldr r0, [r1, #0] - mov r1, #0 - add r0, r0, r4, lsl #2 - ldr r0, [r0, #8] - bl ov18_02243BBC - ldr r1, _022405C4 ; =0x02253398 - mov r2, r0 - ldr r0, [r1, #0] - ldr r1, _022405C8 ; =0x0224967A - ldrb r3, [r0, #0x1c] - mov r0, #0 - add r1, r1, r3, lsl #1 - ldrb r1, [r4, r1] - add r1, r1, #1 - bl ov18_02243ECC - ldr r0, _022405C4 ; =0x02253398 - ldr r2, _022405CC ; =0x02249666 - ldr r0, [r0, #0] - ldr r1, _022405D0 ; =0x022496E0 - ldrb lr, [r0, #0x1c] - add r0, r0, r4, lsl #2 - ldr r0, [r0, #8] - add r2, r2, lr, lsl #1 - ldrb r3, [r4, r2] - add r2, r1, lr, lsl #3 - mvn r1, #0 - mov ip, r3, lsl #2 - ldrh r2, [ip, r2] - ldr r3, _022405D4 ; =0x022496E2 - add r3, r3, lr, lsl #3 - ldrh r3, [ip, r3] - bl ov18_02243CF4 - ldr r0, _022405C4 ; =0x02253398 - mvn r1, #0 - ldr r0, [r0, #0] - mov r2, #0 - add r0, r0, r4, lsl #2 - ldr r0, [r0, #8] - bl ov18_02243DE4 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_022405C4: .word Unk_ov18_02253398 -_022405C8: .word Unk_ov18_0224967A -_022405CC: .word Unk_ov18_02249666 -_022405D0: .word Unk_ov18_022496E0 -_022405D4: .word 0x022496E2 - arm_func_end ov18_02240518 - - arm_func_start ov18_022405D8 -ov18_022405D8: ; 0x022405D8 - stmfd sp!, {r3, lr} - ldr r1, _0224060C ; =0x02253398 - ldr r3, [r1, #0] - ldrb r2, [r3, #0x1d] - add r2, r2, #1 - strb r2, [r3, #0x1d] - ldr r1, [r1, #0] - ldrb r1, [r1, #0x1d] - cmp r1, #8 - ldmloia sp!, {r3, pc} - ldr r1, _02240610 ; =ov18_02240614 - bl ov18_022463A4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0224060C: .word Unk_ov18_02253398 -_02240610: .word ov18_02240614 - arm_func_end ov18_022405D8 - - arm_func_start ov18_02240614 -ov18_02240614: ; 0x02240614 - stmfd sp!, {r4, lr} - sub sp, sp, #8 - ldr r1, _02240698 ; =0x02253398 - mov r4, r0 - ldr r0, [r1, #0] - add r2, sp, #4 - ldr r0, [r0, #0] - add r3, sp, #0 - mov r1, #0 - bl ov18_02243E44 - ldr r0, [sp] - add r0, r0, #0xc - str r0, [sp] - bl ov18_022402E4 - ldr r0, [sp] - cmp r0, #0xc0 - addlt sp, sp, #8 - ldmltia sp!, {r4, pc} - ldr r0, _02240698 ; =0x02253398 - ldr r0, [r0, #0] - ldrb r0, [r0, #0x1e] - cmp r0, #0 - beq _02240684 - ldr r1, _0224069C ; =ov18_022406A4 - mov r0, r4 - bl ov18_022463A4 - add sp, sp, #8 - ldmia sp!, {r4, pc} -_02240684: - ldr r1, _022406A0 ; =ov18_02240700 - mov r0, r4 - bl ov18_022463A4 - add sp, sp, #8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02240698: .word Unk_ov18_02253398 -_0224069C: .word ov18_022406A4 -_022406A0: .word ov18_02240700 - arm_func_end ov18_02240614 - - arm_func_start ov18_022406A4 -ov18_022406A4: ; 0x022406A4 - stmfd sp!, {r4, lr} - ldr r1, _022406F4 ; =0x02253398 - mov r4, r0 - ldr r3, [r1, #0] - ldr r0, _022406F8 ; =0x04000050 - ldrsb r2, [r3, #0x1a] - add r2, r2, #1 - strb r2, [r3, #0x1a] - ldr r1, [r1, #0] - ldrsb r1, [r1, #0x1a] - bl G2x_ChangeBlendBrightness_ - ldr r0, _022406F4 ; =0x02253398 - ldr r0, [r0, #0] - ldrsb r0, [r0, #0x1a] - cmp r0, #0 - ldmltia sp!, {r4, pc} - ldr r1, _022406FC ; =ov18_02240700 - mov r0, r4 - bl ov18_022463A4 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_022406F4: .word Unk_ov18_02253398 -_022406F8: .word 0x04000050 -_022406FC: .word ov18_02240700 - arm_func_end ov18_022406A4 - - arm_func_start ov18_02240700 -ov18_02240700: ; 0x02240700 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r3, #0x4000000 - ldr r2, [r3, #0] - ldr r1, _022407A4 ; =0x02253398 - bic r2, r2, #0xe000 - str r2, [r3, #0] - ldr r1, [r1, #0] - mov r6, r0 - ldr r0, [r1, #0] - bl ov18_02243B3C - ldr r0, _022407A4 ; =0x02253398 - ldr r0, [r0, #0] - ldr r0, [r0, #4] - bl ov18_02243B3C - ldr r7, _022407A4 ; =0x02253398 - ldr r4, _022407A8 ; =0x02249710 - ldr r1, [r7, #0] - mov r5, #0 - ldrb r0, [r1, #0x1c] - ldrb r0, [r4, r0] - cmp r0, #0 - ble _02240784 -_02240758: - add r0, r1, r5, lsl #2 - ldr r0, [r0, #8] - cmp r0, #0 - beq _0224076C - bl ov18_02243B3C -_0224076C: - ldr r1, [r7, #0] - add r5, r5, #1 - ldrb r0, [r1, #0x1c] - ldrb r0, [r4, r0] - cmp r5, r0 - blt _02240758 -_02240784: - ldr r0, [r1, #0x10] - bl ov18_02244650 - mov r1, r6 - mov r0, #1 - bl ov18_022463AC - ldr r0, _022407AC ; =0x02253398 - bl ov18_0224508C - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_022407A4: .word Unk_ov18_02253398 -_022407A8: .word Unk_ov18_02249710 -_022407AC: .word Unk_ov18_02253398 - arm_func_end ov18_02240700 - - .rodata - - - .global Unk_ov18_02249654 -Unk_ov18_02249654: ; 0x02249654 - .short 0x8 - .short 0x8 - - .global Unk_ov18_02249658 -Unk_ov18_02249658: ; 0x02249658 - .byte 0x1, 0x1 - .space 0x2 - .byte 0x1, 0x1 - - .global Unk_ov18_0224965E -Unk_ov18_0224965E: ; 0x0224965E - .short 0x4, 0x1D, 0xFC, 0x44 - - .global Unk_ov18_02249666 -Unk_ov18_02249666: ; 0x02249666 - .space 0x1 - .byte 0x1, 0x1 - .space 0x2 - .byte 0x1, 0x1 - .space 0x2 - .byte 0x1 - - .global Unk_ov18_02249670 -Unk_ov18_02249670: ; 0x02249670 - .short 0x1, 0xFF00 - .short 0x1, 0xFF00, 0x1 - - .global Unk_ov18_0224967A -Unk_ov18_0224967A: ; 0x0224967A - .byte 0x1B, 0x19, 0x57, 0x0, 0x23, 0x1D, 0x59, 0x0, 0x23, 0x1D - - .global Unk_ov18_02249684 -Unk_ov18_02249684: ; 0x02249684 - .short 0x6C, 0x10, 0x6C, 0x10, 0x78, 0x10, 0x78, 0x10, 0x78, 0x10 - - .global Unk_ov18_02249698 -Unk_ov18_02249698: ; 0x02249698 - .short 0xD8, 0x50, 0xD8, 0x50, 0xE6, 0x4F - .short 0xE6, 0x4F, 0xE6, 0x48, 0xDA, 0x5C - - .global Unk_ov18_022496B0 -Unk_ov18_022496B0: ; 0x022496B0 - .short 0xB, 0x27 - .short 0xB, 0x27, 0x4, 0x4C, 0x4, 0x4C, 0x4, 0x54 - .short 0xB, 0x27 - - .global Unk_ov18_022496C8 -Unk_ov18_022496C8: ; 0x022496C8 - .short 0xEA, 0x72, 0xEA, 0x72, 0xF8, 0x70 - .short 0xF8, 0x70, 0x64, 0x70, 0xEA, 0x72 - - .global Unk_ov18_022496E0 -Unk_ov18_022496E0: ; 0x022496E0 - .short 0x10, 0x84 - .short 0x84, 0x84, 0x10, 0x84, 0x84, 0x84, 0x9, 0xA7 - .short 0x83, 0xA7, 0x9, 0xA7, 0x83, 0xA7, 0x9, 0xA7 - .short 0x83, 0xA7 - - .global Unk_ov18_02249708 -Unk_ov18_02249708: ; 0x02249708 - .space 0x2 - .ascii "FFO/" - .space 0x2 - - .global Unk_ov18_02249710 -Unk_ov18_02249710: ; 0x02249710 - .byte 0x2, 0x1 - .byte 0x2, 0x1 - .byte 0x2, 0x0 - - - - .bss - - - .global Unk_ov18_02253398 -Unk_ov18_02253398: ; 0x02253398 - .space 0x4 - diff --git a/subprojects/NitroDWC/libraries/util/meson.build b/subprojects/NitroDWC/libraries/util/meson.build deleted file mode 100644 index e9d4ba41b6..0000000000 --- a/subprojects/NitroDWC/libraries/util/meson.build +++ /dev/null @@ -1,90 +0,0 @@ -libdwcutil_srcs = files( - 'asm/aoss.s', - 'asm/aosslink.s', - 'asm/apc.s', - 'asm/atermset.s', - 'asm/anime.s', - 'asm/button.s', - 'asm/comment.s', - 'asm/common.s', - 'asm/focus.s', - 'asm/headline.s', - 'asm/icon.s', - 'asm/keyboard.s', - 'asm/keyboard10.s', - 'asm/libaoss.s', - 'asm/main_dwcutil.s', - 'asm/message.s', - 'asm/move.s', - 'asm/rakuraku.s', - 'asm/sceneend.s', - 'asm/sceneinit.s', - 'asm/scenemenu.s', - 'asm/sceneopterase.s', - 'asm/sceneopterase1.s', - 'asm/sceneoptinfo.s', - 'asm/sceneoptmenu.s', - 'asm/sceneoptmovcomm.s', - 'asm/sceneoptmovcomplete.s', - 'asm/sceneoptmovconfirm.s', - 'asm/sceneoptmovdisconnect.s', - 'asm/sceneoptmovfailure.s', - 'asm/sceneoptmovuser.s', - 'asm/sceneoptmovwait.s', - 'asm/scenesetaossbutton.s', - 'asm/scenesetaosscomplete.s', - 'asm/scenesetaplist.s', - 'asm/scenesetedit32.s', - 'asm/sceneseteditaddress.s', - 'asm/sceneseterror.s', - 'asm/scenesetlist.s', - 'asm/scenesetlistsave.s', - 'asm/scenesetrakubutton.s', - 'asm/scenesetrakucomplete.s', - 'asm/scenesetrakuready.s', - 'asm/scenesetsearch.s', - 'asm/scenesetselectap.s', - 'asm/scenesetselectway.s', - 'asm/scenesettest.s', - 'asm/scenesettestcomplete.s', - 'asm/scenesettestconfirm.s', - 'asm/scenesetusbcomplete.s', - 'asm/scenesetusbready.s', - 'asm/screen.s', - 'asm/scrollbar.s', - 'asm/search_dwcutil.s', - 'asm/setting.s', - 'asm/sound.s', - 'asm/step.s', - 'asm/usbap.s', - 'asm/window.s', - 'asm/dwc_mov_mbp.s', - 'asm/dwc_mov_wh.s', - 'asm/dwc_moveid.s', - 'asm/archive.s', - 'asm/cell.s', - 'asm/cellinfo.s', - 'asm/deque.s', - 'asm/effect.s', - 'asm/font.s', - 'asm/foundation.s', - 'asm/graphics.s', - 'asm/heap_dwcutil.s', - 'asm/input.s', - 'asm/interrupt.s', - 'asm/list_dwcutil.s', - 'asm/obj.s', - 'asm/objvram.s', - 'asm/str.s', - 'asm/sub.s', - 'asm/task.s' -) - -libdwcutil = static_library('dwcutil', - sources: libdwcutil_srcs, - nasm_args: asm_args, - include_directories: public_includes, - pic: false -) - -nitrodwc_libs += libdwcutil diff --git a/subprojects/NitroDWC/meson.build b/subprojects/NitroDWC/meson.build deleted file mode 100644 index b411caf00b..0000000000 --- a/subprojects/NitroDWC/meson.build +++ /dev/null @@ -1,61 +0,0 @@ -project('NitroDWC', ['c', 'nasm']) - -# Compiler flags -c_args = [ - '-O4,p', - '-proc', 'arm946e', - '-enum', 'int', - '-lang', 'c99', - '-Cpp_exceptions', 'off', - '-gccext,on', - '-msgstyle', 'gcc', - '-ipa', 'file', - '-interworking', - '-inline', 'on,noauto', - '-char', 'signed', - '-nosyspath', - '-stdinc' -] - -asm_args = [ - '-proc', 'arm5TE', - '-gccinc' -] - -sdk_args = [ - '-DSDK_CW_FORCE_EXPORT_SUPPORT', - '-DSDK_TS', - '-DSDK_4M', - '-DSDK_ARM9', - '-DSDK_CW', - '-DSDK_FINALROM', - '-DSDK_CODE_ARM', - '-DNNS_FINALROM' -] - -# Dependencies -gamespy_dep = dependency('gamespy', fallback : ['gamespy', 'gamespy_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']) - -# Public includes -public_includes = include_directories('include') -nitro_pch = subproject('NitroSDK').get_variable('nitro_pch') - -# Libraries -nitrodwc_libs = [] -subdir('libraries') - -# Own dependency for consumers -nitrodwc_dep = declare_dependency( - compile_args: sdk_args, - dependencies: [ - gamespy_dep, - nitrosdk_dep, - nitrosystem_dep, - nitrowifi_dep - ], - include_directories: public_includes, - link_with: nitrodwc_libs -) \ No newline at end of file diff --git a/subprojects/NitroSDK.wrap b/subprojects/NitroSDK.wrap new file mode 100644 index 0000000000..395dae722b --- /dev/null +++ b/subprojects/NitroSDK.wrap @@ -0,0 +1,8 @@ +[wrap-git] +url = https://github.com/Nomura-RH/NitroSDK.git +revision = head +depth = 1 +directory = NitroSDK-4.2.30001 + +[provide] +dependency_names = NitroSDK \ No newline at end of file diff --git a/subprojects/NitroSDK/autogen/meson.build b/subprojects/NitroSDK/autogen/meson.build deleted file mode 100644 index 104afbdf60..0000000000 --- a/subprojects/NitroSDK/autogen/meson.build +++ /dev/null @@ -1 +0,0 @@ -subdir('nitro/fx') diff --git a/subprojects/NitroSDK/autogen/nitro/fx/fx_const.csv b/subprojects/NitroSDK/autogen/nitro/fx/fx_const.csv deleted file mode 100644 index 713aaa33f4..0000000000 --- a/subprojects/NitroSDK/autogen/nitro/fx/fx_const.csv +++ /dev/null @@ -1,862 +0,0 @@ -#name,type,value -E,fx64c,2.7182818284590452354 -LOG2E,fx64c,1.4426950408889634074 -LOG10E,fx64c,0.43429448190325182765 -LN2,fx64c,0.69314718055994530942 -LN10,fx64c,2.30258509299404568402 -PI,fx64c,3.14159265358979323846 -TWOPI,fx64c,6.28318530717958647692 -PI_2,fx64c,1.57079632679489661923 -PI_4,fx64c,0.78539816339744830962 -3PI_4,fx64c,2.3561944901923448370 -SQRTPI,fx64c,1.77245385090551602793 -1_PI,fx64c,0.31830988618379067154 -2_PI,fx64c,0.63661977236758134308 -2_SQRTPI,fx64c,1.12837916709551257390 -SQRT2,fx64c,1.41421356237309504880 -SQRT1_2,fx64c,0.70710678118654752440 -SQRT3,fx64c,1.73205080756887719000 -SQRT1_3,fx64c,0.57735026918962576450914878050196 -IVLN10,fx64c,0.43429448190325182765 -LOG2_E,fx64c,0.693147180559945309417 -INVLN2,fx64c,1.4426950408889633870 -1_360,fx64c,0.0027777777777777777778 -TWOPI_360,fx64c,0.0174532925199432957692 -360_TWOPI,fx64c,57.295779513082320876846 -65536_TWOPI,fx64c,10430.378350470452724958342593503 -65536_360,fx64c,182.04444444444444444444444444444 -TWOPI_65536,fx64c,0.0000958737992428525768572998046875 -360_65536,fx64c,0.0054931640625 -1_100,fx64c,0.01000000000000000000 -2_100,fx64c,0.02000000000000000000 -3_100,fx64c,0.03000000000000000000 -4_100,fx64c,0.04000000000000000000 -5_100,fx64c,0.05000000000000000000 -6_100,fx64c,0.06000000000000000000 -7_100,fx64c,0.07000000000000000000 -8_100,fx64c,0.08000000000000000000 -9_100,fx64c,0.09000000000000000000 -10_100,fx64c,0.10000000000000000000 -11_100,fx64c,0.11000000000000000000 -12_100,fx64c,0.12000000000000000000 -13_100,fx64c,0.13000000000000000000 -14_100,fx64c,0.14000000000000000000 -15_100,fx64c,0.15000000000000000000 -16_100,fx64c,0.16000000000000000000 -17_100,fx64c,0.17000000000000000000 -18_100,fx64c,0.18000000000000000000 -19_100,fx64c,0.19000000000000000000 -20_100,fx64c,0.20000000000000000000 -21_100,fx64c,0.21000000000000000000 -22_100,fx64c,0.22000000000000000000 -23_100,fx64c,0.23000000000000000000 -24_100,fx64c,0.24000000000000000000 -25_100,fx64c,0.25000000000000000000 -26_100,fx64c,0.26000000000000000000 -27_100,fx64c,0.27000000000000000000 -28_100,fx64c,0.28000000000000000000 -29_100,fx64c,0.29000000000000000000 -30_100,fx64c,0.30000000000000000000 -31_100,fx64c,0.31000000000000000000 -32_100,fx64c,0.32000000000000000000 -33_100,fx64c,0.33000000000000000000 -34_100,fx64c,0.34000000000000000000 -35_100,fx64c,0.35000000000000000000 -36_100,fx64c,0.36000000000000000000 -37_100,fx64c,0.37000000000000000000 -38_100,fx64c,0.38000000000000000000 -39_100,fx64c,0.39000000000000000000 -40_100,fx64c,0.40000000000000000000 -41_100,fx64c,0.41000000000000000000 -42_100,fx64c,0.42000000000000000000 -43_100,fx64c,0.43000000000000000000 -44_100,fx64c,0.44000000000000000000 -45_100,fx64c,0.45000000000000000000 -46_100,fx64c,0.46000000000000000000 -47_100,fx64c,0.47000000000000000000 -48_100,fx64c,0.48000000000000000000 -49_100,fx64c,0.49000000000000000000 -50_100,fx64c,0.50000000000000000000 -51_100,fx64c,0.51000000000000000000 -52_100,fx64c,0.52000000000000000000 -53_100,fx64c,0.53000000000000000000 -54_100,fx64c,0.54000000000000000000 -55_100,fx64c,0.55000000000000000000 -56_100,fx64c,0.56000000000000000000 -57_100,fx64c,0.57000000000000000000 -58_100,fx64c,0.58000000000000000000 -59_100,fx64c,0.59000000000000000000 -60_100,fx64c,0.60000000000000000000 -61_100,fx64c,0.61000000000000000000 -62_100,fx64c,0.62000000000000000000 -63_100,fx64c,0.63000000000000000000 -64_100,fx64c,0.64000000000000000000 -65_100,fx64c,0.65000000000000000000 -66_100,fx64c,0.66000000000000000000 -67_100,fx64c,0.67000000000000000000 -68_100,fx64c,0.68000000000000000000 -69_100,fx64c,0.69000000000000000000 -70_100,fx64c,0.70000000000000000000 -71_100,fx64c,0.71000000000000000000 -72_100,fx64c,0.72000000000000000000 -73_100,fx64c,0.73000000000000000000 -74_100,fx64c,0.74000000000000000000 -75_100,fx64c,0.75000000000000000000 -76_100,fx64c,0.76000000000000000000 -77_100,fx64c,0.77000000000000000000 -78_100,fx64c,0.78000000000000000000 -79_100,fx64c,0.79000000000000000000 -80_100,fx64c,0.80000000000000000000 -81_100,fx64c,0.81000000000000000000 -82_100,fx64c,0.82000000000000000000 -83_100,fx64c,0.83000000000000000000 -84_100,fx64c,0.84000000000000000000 -85_100,fx64c,0.85000000000000000000 -86_100,fx64c,0.86000000000000000000 -87_100,fx64c,0.87000000000000000000 -88_100,fx64c,0.88000000000000000000 -89_100,fx64c,0.89000000000000000000 -90_100,fx64c,0.90000000000000000000 -91_100,fx64c,0.91000000000000000000 -92_100,fx64c,0.92000000000000000000 -93_100,fx64c,0.93000000000000000000 -94_100,fx64c,0.94000000000000000000 -95_100,fx64c,0.95000000000000000000 -96_100,fx64c,0.96000000000000000000 -97_100,fx64c,0.97000000000000000000 -98_100,fx64c,0.98000000000000000000 -99_100,fx64c,0.99000000000000000000 -ONE,fx64c,1.00000000000000000000 -HALF,fx64c,0.50000000000000000000 -ONE,fx32,1.00000000000000000000 -HALF,fx32,0.50000000000000000000 -SQRT2,fx32,1.41421356237309504880 -SQRT1_2,fx32,0.70710678118654752440 -SQRT3,fx32,1.73205080756887719000 -SQRT1_3,fx32,0.57735026918962576450914878050196 -ONE,fx16,1.00000000000000000000 -HALF,fx16,0.50000000000000000000 -SQRT2,fx16,1.41421356237309504880 -SQRT1_2,fx16,0.70710678118654752440 -SQRT3,fx16,1.73205080756887719000 -SQRT1_3,fx16,0.57735026918962576450914878050196 -SIN0,fx32,0 -SIN1,fx32,0.0174524064372835 -SIN2,fx32,0.034899496702501 -SIN3,fx32,0.0523359562429438 -SIN4,fx32,0.0697564737441253 -SIN5,fx32,0.0871557427476582 -SIN6,fx32,0.104528463267653 -SIN7,fx32,0.121869343405147 -SIN8,fx32,0.139173100960065 -SIN9,fx32,0.156434465040231 -SIN10,fx32,0.17364817766693 -SIN11,fx32,0.190808995376545 -SIN12,fx32,0.207911690817759 -SIN13,fx32,0.224951054343865 -SIN14,fx32,0.241921895599668 -SIN15,fx32,0.258819045102521 -SIN16,fx32,0.275637355816999 -SIN17,fx32,0.292371704722737 -SIN18,fx32,0.309016994374947 -SIN19,fx32,0.325568154457157 -SIN20,fx32,0.342020143325669 -SIN21,fx32,0.3583679495453 -SIN22,fx32,0.374606593415912 -SIN23,fx32,0.390731128489274 -SIN24,fx32,0.4067366430758 -SIN25,fx32,0.422618261740699 -SIN26,fx32,0.438371146789077 -SIN27,fx32,0.453990499739547 -SIN28,fx32,0.469471562785891 -SIN29,fx32,0.484809620246337 -SIN30,fx32,0.5 -SIN31,fx32,0.515038074910054 -SIN32,fx32,0.529919264233205 -SIN33,fx32,0.544639035015027 -SIN34,fx32,0.559192903470747 -SIN35,fx32,0.573576436351046 -SIN36,fx32,0.587785252292473 -SIN37,fx32,0.601815023152048 -SIN38,fx32,0.615661475325658 -SIN39,fx32,0.629320391049837 -SIN40,fx32,0.642787609686539 -SIN41,fx32,0.656059028990507 -SIN42,fx32,0.669130606358858 -SIN43,fx32,0.681998360062498 -SIN44,fx32,0.694658370458997 -SIN45,fx32,0.707106781186547 -SIN46,fx32,0.719339800338651 -SIN47,fx32,0.73135370161917 -SIN48,fx32,0.743144825477394 -SIN49,fx32,0.754709580222772 -SIN50,fx32,0.766044443118978 -SIN51,fx32,0.777145961456971 -SIN52,fx32,0.788010753606722 -SIN53,fx32,0.798635510047293 -SIN54,fx32,0.809016994374947 -SIN55,fx32,0.819152044288992 -SIN56,fx32,0.829037572555042 -SIN57,fx32,0.838670567945424 -SIN58,fx32,0.848048096156426 -SIN59,fx32,0.857167300702112 -SIN60,fx32,0.866025403784439 -SIN61,fx32,0.874619707139396 -SIN62,fx32,0.882947592858927 -SIN63,fx32,0.891006524188368 -SIN64,fx32,0.898794046299167 -SIN65,fx32,0.90630778703665 -SIN66,fx32,0.913545457642601 -SIN67,fx32,0.92050485345244 -SIN68,fx32,0.927183854566787 -SIN69,fx32,0.933580426497202 -SIN70,fx32,0.939692620785908 -SIN71,fx32,0.945518575599317 -SIN72,fx32,0.951056516295154 -SIN73,fx32,0.956304755963035 -SIN74,fx32,0.961261695938319 -SIN75,fx32,0.965925826289068 -SIN76,fx32,0.970295726275996 -SIN77,fx32,0.974370064785235 -SIN78,fx32,0.978147600733806 -SIN79,fx32,0.981627183447664 -SIN80,fx32,0.984807753012208 -SIN81,fx32,0.987688340595138 -SIN82,fx32,0.99026806874157 -SIN83,fx32,0.992546151641322 -SIN84,fx32,0.994521895368273 -SIN85,fx32,0.996194698091746 -SIN86,fx32,0.997564050259824 -SIN87,fx32,0.998629534754574 -SIN88,fx32,0.999390827019096 -SIN89,fx32,0.999847695156391 -SIN90,fx32,1 -SIN91,fx32,0.999847695156391 -SIN92,fx32,0.999390827019096 -SIN93,fx32,0.998629534754574 -SIN94,fx32,0.997564050259824 -SIN95,fx32,0.996194698091746 -SIN96,fx32,0.994521895368273 -SIN97,fx32,0.992546151641322 -SIN98,fx32,0.99026806874157 -SIN99,fx32,0.987688340595138 -SIN100,fx32,0.984807753012208 -SIN101,fx32,0.981627183447664 -SIN102,fx32,0.978147600733806 -SIN103,fx32,0.974370064785235 -SIN104,fx32,0.970295726275996 -SIN105,fx32,0.965925826289068 -SIN106,fx32,0.961261695938319 -SIN107,fx32,0.956304755963036 -SIN108,fx32,0.951056516295154 -SIN109,fx32,0.945518575599317 -SIN110,fx32,0.939692620785908 -SIN111,fx32,0.933580426497202 -SIN112,fx32,0.927183854566787 -SIN113,fx32,0.92050485345244 -SIN114,fx32,0.913545457642601 -SIN115,fx32,0.90630778703665 -SIN116,fx32,0.898794046299167 -SIN117,fx32,0.891006524188368 -SIN118,fx32,0.882947592858927 -SIN119,fx32,0.874619707139396 -SIN120,fx32,0.866025403784439 -SIN121,fx32,0.857167300702112 -SIN122,fx32,0.848048096156426 -SIN123,fx32,0.838670567945424 -SIN124,fx32,0.829037572555042 -SIN125,fx32,0.819152044288992 -SIN126,fx32,0.809016994374947 -SIN127,fx32,0.798635510047293 -SIN128,fx32,0.788010753606722 -SIN129,fx32,0.777145961456971 -SIN130,fx32,0.766044443118978 -SIN131,fx32,0.754709580222772 -SIN132,fx32,0.743144825477394 -SIN133,fx32,0.731353701619171 -SIN134,fx32,0.719339800338651 -SIN135,fx32,0.707106781186548 -SIN136,fx32,0.694658370458997 -SIN137,fx32,0.681998360062498 -SIN138,fx32,0.669130606358858 -SIN139,fx32,0.656059028990507 -SIN140,fx32,0.642787609686539 -SIN141,fx32,0.629320391049837 -SIN142,fx32,0.615661475325658 -SIN143,fx32,0.601815023152048 -SIN144,fx32,0.587785252292473 -SIN145,fx32,0.573576436351046 -SIN146,fx32,0.559192903470747 -SIN147,fx32,0.544639035015027 -SIN148,fx32,0.529919264233205 -SIN149,fx32,0.515038074910054 -SIN150,fx32,0.5 -SIN151,fx32,0.484809620246337 -SIN152,fx32,0.469471562785891 -SIN153,fx32,0.453990499739547 -SIN154,fx32,0.438371146789077 -SIN155,fx32,0.422618261740699 -SIN156,fx32,0.4067366430758 -SIN157,fx32,0.390731128489274 -SIN158,fx32,0.374606593415912 -SIN159,fx32,0.3583679495453 -SIN160,fx32,0.342020143325669 -SIN161,fx32,0.325568154457157 -SIN162,fx32,0.309016994374948 -SIN163,fx32,0.292371704722737 -SIN164,fx32,0.275637355816999 -SIN165,fx32,0.258819045102521 -SIN166,fx32,0.241921895599668 -SIN167,fx32,0.224951054343865 -SIN168,fx32,0.207911690817759 -SIN169,fx32,0.190808995376545 -SIN170,fx32,0.17364817766693 -SIN171,fx32,0.156434465040231 -SIN172,fx32,0.139173100960065 -SIN173,fx32,0.121869343405148 -SIN174,fx32,0.104528463267654 -SIN175,fx32,0.0871557427476582 -SIN176,fx32,0.0697564737441255 -SIN177,fx32,0.0523359562429438 -SIN178,fx32,0.0348994967025011 -SIN179,fx32,0.0174524064372834 -SIN180,fx32,1.22464679914735e-16 -SIN181,fx32,-0.0174524064372836 -SIN182,fx32,-0.0348994967025009 -SIN183,fx32,-0.0523359562429436 -SIN184,fx32,-0.0697564737441253 -SIN185,fx32,-0.0871557427476579 -SIN186,fx32,-0.104528463267653 -SIN187,fx32,-0.121869343405147 -SIN188,fx32,-0.139173100960066 -SIN189,fx32,-0.156434465040231 -SIN190,fx32,-0.17364817766693 -SIN191,fx32,-0.190808995376545 -SIN192,fx32,-0.20791169081776 -SIN193,fx32,-0.224951054343865 -SIN194,fx32,-0.241921895599668 -SIN195,fx32,-0.258819045102521 -SIN196,fx32,-0.275637355816999 -SIN197,fx32,-0.292371704722737 -SIN198,fx32,-0.309016994374947 -SIN199,fx32,-0.325568154457157 -SIN200,fx32,-0.342020143325669 -SIN201,fx32,-0.3583679495453 -SIN202,fx32,-0.374606593415912 -SIN203,fx32,-0.390731128489274 -SIN204,fx32,-0.4067366430758 -SIN205,fx32,-0.422618261740699 -SIN206,fx32,-0.438371146789077 -SIN207,fx32,-0.453990499739547 -SIN208,fx32,-0.469471562785891 -SIN209,fx32,-0.484809620246337 -SIN210,fx32,-0.5 -SIN211,fx32,-0.515038074910054 -SIN212,fx32,-0.529919264233205 -SIN213,fx32,-0.544639035015027 -SIN214,fx32,-0.559192903470747 -SIN215,fx32,-0.573576436351046 -SIN216,fx32,-0.587785252292473 -SIN217,fx32,-0.601815023152048 -SIN218,fx32,-0.615661475325658 -SIN219,fx32,-0.629320391049838 -SIN220,fx32,-0.642787609686539 -SIN221,fx32,-0.656059028990507 -SIN222,fx32,-0.669130606358858 -SIN223,fx32,-0.681998360062498 -SIN224,fx32,-0.694658370458997 -SIN225,fx32,-0.707106781186547 -SIN226,fx32,-0.719339800338651 -SIN227,fx32,-0.73135370161917 -SIN228,fx32,-0.743144825477394 -SIN229,fx32,-0.754709580222772 -SIN230,fx32,-0.766044443118978 -SIN231,fx32,-0.777145961456971 -SIN232,fx32,-0.788010753606722 -SIN233,fx32,-0.798635510047293 -SIN234,fx32,-0.809016994374947 -SIN235,fx32,-0.819152044288992 -SIN236,fx32,-0.829037572555042 -SIN237,fx32,-0.838670567945424 -SIN238,fx32,-0.848048096156426 -SIN239,fx32,-0.857167300702112 -SIN240,fx32,-0.866025403784438 -SIN241,fx32,-0.874619707139396 -SIN242,fx32,-0.882947592858927 -SIN243,fx32,-0.891006524188368 -SIN244,fx32,-0.898794046299167 -SIN245,fx32,-0.90630778703665 -SIN246,fx32,-0.913545457642601 -SIN247,fx32,-0.92050485345244 -SIN248,fx32,-0.927183854566787 -SIN249,fx32,-0.933580426497202 -SIN250,fx32,-0.939692620785908 -SIN251,fx32,-0.945518575599317 -SIN252,fx32,-0.951056516295154 -SIN253,fx32,-0.956304755963035 -SIN254,fx32,-0.961261695938319 -SIN255,fx32,-0.965925826289068 -SIN256,fx32,-0.970295726275996 -SIN257,fx32,-0.974370064785235 -SIN258,fx32,-0.978147600733806 -SIN259,fx32,-0.981627183447664 -SIN260,fx32,-0.984807753012208 -SIN261,fx32,-0.987688340595138 -SIN262,fx32,-0.99026806874157 -SIN263,fx32,-0.992546151641322 -SIN264,fx32,-0.994521895368273 -SIN265,fx32,-0.996194698091746 -SIN266,fx32,-0.997564050259824 -SIN267,fx32,-0.998629534754574 -SIN268,fx32,-0.999390827019096 -SIN269,fx32,-0.999847695156391 -SIN270,fx32,-1 -SIN271,fx32,-0.999847695156391 -SIN272,fx32,-0.999390827019096 -SIN273,fx32,-0.998629534754574 -SIN274,fx32,-0.997564050259824 -SIN275,fx32,-0.996194698091746 -SIN276,fx32,-0.994521895368273 -SIN277,fx32,-0.992546151641322 -SIN278,fx32,-0.99026806874157 -SIN279,fx32,-0.987688340595138 -SIN280,fx32,-0.984807753012208 -SIN281,fx32,-0.981627183447664 -SIN282,fx32,-0.978147600733806 -SIN283,fx32,-0.974370064785235 -SIN284,fx32,-0.970295726275997 -SIN285,fx32,-0.965925826289068 -SIN286,fx32,-0.961261695938319 -SIN287,fx32,-0.956304755963035 -SIN288,fx32,-0.951056516295154 -SIN289,fx32,-0.945518575599317 -SIN290,fx32,-0.939692620785908 -SIN291,fx32,-0.933580426497202 -SIN292,fx32,-0.927183854566787 -SIN293,fx32,-0.92050485345244 -SIN294,fx32,-0.913545457642601 -SIN295,fx32,-0.90630778703665 -SIN296,fx32,-0.898794046299167 -SIN297,fx32,-0.891006524188368 -SIN298,fx32,-0.882947592858927 -SIN299,fx32,-0.874619707139396 -SIN300,fx32,-0.866025403784439 -SIN301,fx32,-0.857167300702112 -SIN302,fx32,-0.848048096156426 -SIN303,fx32,-0.838670567945424 -SIN304,fx32,-0.829037572555042 -SIN305,fx32,-0.819152044288992 -SIN306,fx32,-0.809016994374948 -SIN307,fx32,-0.798635510047293 -SIN308,fx32,-0.788010753606722 -SIN309,fx32,-0.777145961456971 -SIN310,fx32,-0.766044443118978 -SIN311,fx32,-0.754709580222772 -SIN312,fx32,-0.743144825477395 -SIN313,fx32,-0.73135370161917 -SIN314,fx32,-0.719339800338651 -SIN315,fx32,-0.707106781186548 -SIN316,fx32,-0.694658370458998 -SIN317,fx32,-0.681998360062498 -SIN318,fx32,-0.669130606358858 -SIN319,fx32,-0.656059028990507 -SIN320,fx32,-0.64278760968654 -SIN321,fx32,-0.629320391049838 -SIN322,fx32,-0.615661475325658 -SIN323,fx32,-0.601815023152048 -SIN324,fx32,-0.587785252292473 -SIN325,fx32,-0.573576436351046 -SIN326,fx32,-0.559192903470747 -SIN327,fx32,-0.544639035015027 -SIN328,fx32,-0.529919264233205 -SIN329,fx32,-0.515038074910054 -SIN330,fx32,-0.5 -SIN331,fx32,-0.484809620246337 -SIN332,fx32,-0.469471562785891 -SIN333,fx32,-0.453990499739547 -SIN334,fx32,-0.438371146789078 -SIN335,fx32,-0.422618261740699 -SIN336,fx32,-0.4067366430758 -SIN337,fx32,-0.390731128489274 -SIN338,fx32,-0.374606593415912 -SIN339,fx32,-0.358367949545301 -SIN340,fx32,-0.342020143325669 -SIN341,fx32,-0.325568154457157 -SIN342,fx32,-0.309016994374948 -SIN343,fx32,-0.292371704722737 -SIN344,fx32,-0.275637355816999 -SIN345,fx32,-0.258819045102521 -SIN346,fx32,-0.241921895599668 -SIN347,fx32,-0.224951054343865 -SIN348,fx32,-0.20791169081776 -SIN349,fx32,-0.190808995376545 -SIN350,fx32,-0.17364817766693 -SIN351,fx32,-0.156434465040231 -SIN352,fx32,-0.139173100960066 -SIN353,fx32,-0.121869343405147 -SIN354,fx32,-0.104528463267653 -SIN355,fx32,-0.0871557427476583 -SIN356,fx32,-0.0697564737441256 -SIN357,fx32,-0.0523359562429444 -SIN358,fx32,-0.0348994967025008 -SIN359,fx32,-0.0174524064372836 -COS0,fx32,1 -COS1,fx32,0.999847695156391 -COS2,fx32,0.999390827019096 -COS3,fx32,0.998629534754574 -COS4,fx32,0.997564050259824 -COS5,fx32,0.996194698091746 -COS6,fx32,0.994521895368273 -COS7,fx32,0.992546151641322 -COS8,fx32,0.99026806874157 -COS9,fx32,0.987688340595138 -COS10,fx32,0.984807753012208 -COS11,fx32,0.981627183447664 -COS12,fx32,0.978147600733806 -COS13,fx32,0.974370064785235 -COS14,fx32,0.970295726275996 -COS15,fx32,0.965925826289068 -COS16,fx32,0.961261695938319 -COS17,fx32,0.956304755963035 -COS18,fx32,0.951056516295154 -COS19,fx32,0.945518575599317 -COS20,fx32,0.939692620785908 -COS21,fx32,0.933580426497202 -COS22,fx32,0.927183854566787 -COS23,fx32,0.92050485345244 -COS24,fx32,0.913545457642601 -COS25,fx32,0.90630778703665 -COS26,fx32,0.898794046299167 -COS27,fx32,0.891006524188368 -COS28,fx32,0.882947592858927 -COS29,fx32,0.874619707139396 -COS30,fx32,0.866025403784439 -COS31,fx32,0.857167300702112 -COS32,fx32,0.848048096156426 -COS33,fx32,0.838670567945424 -COS34,fx32,0.829037572555042 -COS35,fx32,0.819152044288992 -COS36,fx32,0.809016994374947 -COS37,fx32,0.798635510047293 -COS38,fx32,0.788010753606722 -COS39,fx32,0.777145961456971 -COS40,fx32,0.766044443118978 -COS41,fx32,0.754709580222772 -COS42,fx32,0.743144825477394 -COS43,fx32,0.73135370161917 -COS44,fx32,0.719339800338651 -COS45,fx32,0.707106781186548 -COS46,fx32,0.694658370458997 -COS47,fx32,0.681998360062498 -COS48,fx32,0.669130606358858 -COS49,fx32,0.656059028990507 -COS50,fx32,0.642787609686539 -COS51,fx32,0.629320391049838 -COS52,fx32,0.615661475325658 -COS53,fx32,0.601815023152048 -COS54,fx32,0.587785252292473 -COS55,fx32,0.573576436351046 -COS56,fx32,0.559192903470747 -COS57,fx32,0.544639035015027 -COS58,fx32,0.529919264233205 -COS59,fx32,0.515038074910054 -COS60,fx32,0.5 -COS61,fx32,0.484809620246337 -COS62,fx32,0.469471562785891 -COS63,fx32,0.453990499739547 -COS64,fx32,0.438371146789077 -COS65,fx32,0.422618261740699 -COS66,fx32,0.4067366430758 -COS67,fx32,0.390731128489274 -COS68,fx32,0.374606593415912 -COS69,fx32,0.3583679495453 -COS70,fx32,0.342020143325669 -COS71,fx32,0.325568154457157 -COS72,fx32,0.309016994374947 -COS73,fx32,0.292371704722737 -COS74,fx32,0.275637355816999 -COS75,fx32,0.258819045102521 -COS76,fx32,0.241921895599668 -COS77,fx32,0.224951054343865 -COS78,fx32,0.207911690817759 -COS79,fx32,0.190808995376545 -COS80,fx32,0.17364817766693 -COS81,fx32,0.156434465040231 -COS82,fx32,0.139173100960065 -COS83,fx32,0.121869343405147 -COS84,fx32,0.104528463267653 -COS85,fx32,0.0871557427476581 -COS86,fx32,0.0697564737441252 -COS87,fx32,0.052335956242944 -COS88,fx32,0.0348994967025011 -COS89,fx32,0.0174524064372836 -COS90,fx32,6.12323399573677e-17 -COS91,fx32,-0.0174524064372835 -COS92,fx32,-0.034899496702501 -COS93,fx32,-0.0523359562429438 -COS94,fx32,-0.0697564737441253 -COS95,fx32,-0.0871557427476582 -COS96,fx32,-0.104528463267654 -COS97,fx32,-0.121869343405147 -COS98,fx32,-0.139173100960065 -COS99,fx32,-0.156434465040231 -COS100,fx32,-0.17364817766693 -COS101,fx32,-0.190808995376545 -COS102,fx32,-0.207911690817759 -COS103,fx32,-0.224951054343865 -COS104,fx32,-0.241921895599668 -COS105,fx32,-0.258819045102521 -COS106,fx32,-0.275637355816999 -COS107,fx32,-0.292371704722737 -COS108,fx32,-0.309016994374947 -COS109,fx32,-0.325568154457157 -COS110,fx32,-0.342020143325669 -COS111,fx32,-0.3583679495453 -COS112,fx32,-0.374606593415912 -COS113,fx32,-0.390731128489274 -COS114,fx32,-0.4067366430758 -COS115,fx32,-0.422618261740699 -COS116,fx32,-0.438371146789078 -COS117,fx32,-0.453990499739547 -COS118,fx32,-0.469471562785891 -COS119,fx32,-0.484809620246337 -COS120,fx32,-0.5 -COS121,fx32,-0.515038074910054 -COS122,fx32,-0.529919264233205 -COS123,fx32,-0.544639035015027 -COS124,fx32,-0.559192903470747 -COS125,fx32,-0.573576436351046 -COS126,fx32,-0.587785252292473 -COS127,fx32,-0.601815023152048 -COS128,fx32,-0.615661475325658 -COS129,fx32,-0.629320391049837 -COS130,fx32,-0.642787609686539 -COS131,fx32,-0.656059028990507 -COS132,fx32,-0.669130606358858 -COS133,fx32,-0.681998360062498 -COS134,fx32,-0.694658370458997 -COS135,fx32,-0.707106781186547 -COS136,fx32,-0.719339800338651 -COS137,fx32,-0.73135370161917 -COS138,fx32,-0.743144825477394 -COS139,fx32,-0.754709580222772 -COS140,fx32,-0.766044443118978 -COS141,fx32,-0.777145961456971 -COS142,fx32,-0.788010753606722 -COS143,fx32,-0.798635510047293 -COS144,fx32,-0.809016994374947 -COS145,fx32,-0.819152044288992 -COS146,fx32,-0.829037572555042 -COS147,fx32,-0.838670567945424 -COS148,fx32,-0.848048096156426 -COS149,fx32,-0.857167300702112 -COS150,fx32,-0.866025403784439 -COS151,fx32,-0.874619707139396 -COS152,fx32,-0.882947592858927 -COS153,fx32,-0.891006524188368 -COS154,fx32,-0.898794046299167 -COS155,fx32,-0.90630778703665 -COS156,fx32,-0.913545457642601 -COS157,fx32,-0.92050485345244 -COS158,fx32,-0.927183854566787 -COS159,fx32,-0.933580426497202 -COS160,fx32,-0.939692620785908 -COS161,fx32,-0.945518575599317 -COS162,fx32,-0.951056516295154 -COS163,fx32,-0.956304755963036 -COS164,fx32,-0.961261695938319 -COS165,fx32,-0.965925826289068 -COS166,fx32,-0.970295726275996 -COS167,fx32,-0.974370064785235 -COS168,fx32,-0.978147600733806 -COS169,fx32,-0.981627183447664 -COS170,fx32,-0.984807753012208 -COS171,fx32,-0.987688340595138 -COS172,fx32,-0.99026806874157 -COS173,fx32,-0.992546151641322 -COS174,fx32,-0.994521895368273 -COS175,fx32,-0.996194698091746 -COS176,fx32,-0.997564050259824 -COS177,fx32,-0.998629534754574 -COS178,fx32,-0.999390827019096 -COS179,fx32,-0.999847695156391 -COS180,fx32,-1 -COS181,fx32,-0.999847695156391 -COS182,fx32,-0.999390827019096 -COS183,fx32,-0.998629534754574 -COS184,fx32,-0.997564050259824 -COS185,fx32,-0.996194698091746 -COS186,fx32,-0.994521895368273 -COS187,fx32,-0.992546151641322 -COS188,fx32,-0.99026806874157 -COS189,fx32,-0.987688340595138 -COS190,fx32,-0.984807753012208 -COS191,fx32,-0.981627183447664 -COS192,fx32,-0.978147600733806 -COS193,fx32,-0.974370064785235 -COS194,fx32,-0.970295726275996 -COS195,fx32,-0.965925826289068 -COS196,fx32,-0.961261695938319 -COS197,fx32,-0.956304755963035 -COS198,fx32,-0.951056516295154 -COS199,fx32,-0.945518575599317 -COS200,fx32,-0.939692620785908 -COS201,fx32,-0.933580426497202 -COS202,fx32,-0.927183854566787 -COS203,fx32,-0.92050485345244 -COS204,fx32,-0.913545457642601 -COS205,fx32,-0.90630778703665 -COS206,fx32,-0.898794046299167 -COS207,fx32,-0.891006524188368 -COS208,fx32,-0.882947592858927 -COS209,fx32,-0.874619707139396 -COS210,fx32,-0.866025403784439 -COS211,fx32,-0.857167300702112 -COS212,fx32,-0.848048096156426 -COS213,fx32,-0.838670567945424 -COS214,fx32,-0.829037572555042 -COS215,fx32,-0.819152044288992 -COS216,fx32,-0.809016994374948 -COS217,fx32,-0.798635510047293 -COS218,fx32,-0.788010753606722 -COS219,fx32,-0.777145961456971 -COS220,fx32,-0.766044443118978 -COS221,fx32,-0.754709580222772 -COS222,fx32,-0.743144825477394 -COS223,fx32,-0.731353701619171 -COS224,fx32,-0.719339800338651 -COS225,fx32,-0.707106781186548 -COS226,fx32,-0.694658370458997 -COS227,fx32,-0.681998360062499 -COS228,fx32,-0.669130606358858 -COS229,fx32,-0.656059028990507 -COS230,fx32,-0.642787609686539 -COS231,fx32,-0.629320391049838 -COS232,fx32,-0.615661475325658 -COS233,fx32,-0.601815023152048 -COS234,fx32,-0.587785252292473 -COS235,fx32,-0.573576436351046 -COS236,fx32,-0.559192903470747 -COS237,fx32,-0.544639035015027 -COS238,fx32,-0.529919264233205 -COS239,fx32,-0.515038074910054 -COS240,fx32,-0.5 -COS241,fx32,-0.484809620246337 -COS242,fx32,-0.469471562785891 -COS243,fx32,-0.453990499739547 -COS244,fx32,-0.438371146789078 -COS245,fx32,-0.422618261740699 -COS246,fx32,-0.4067366430758 -COS247,fx32,-0.390731128489274 -COS248,fx32,-0.374606593415912 -COS249,fx32,-0.358367949545301 -COS250,fx32,-0.342020143325669 -COS251,fx32,-0.325568154457157 -COS252,fx32,-0.309016994374948 -COS253,fx32,-0.292371704722737 -COS254,fx32,-0.275637355816999 -COS255,fx32,-0.258819045102521 -COS256,fx32,-0.241921895599668 -COS257,fx32,-0.224951054343865 -COS258,fx32,-0.20791169081776 -COS259,fx32,-0.190808995376545 -COS260,fx32,-0.17364817766693 -COS261,fx32,-0.156434465040231 -COS262,fx32,-0.139173100960066 -COS263,fx32,-0.121869343405147 -COS264,fx32,-0.104528463267653 -COS265,fx32,-0.0871557427476582 -COS266,fx32,-0.0697564737441256 -COS267,fx32,-0.0523359562429443 -COS268,fx32,-0.0348994967025008 -COS269,fx32,-0.0174524064372835 -COS270,fx32,-1.83697019872103e-16 -COS271,fx32,0.0174524064372831 -COS272,fx32,0.0348994967025013 -COS273,fx32,0.0523359562429439 -COS274,fx32,0.0697564737441252 -COS275,fx32,0.0871557427476579 -COS276,fx32,0.104528463267653 -COS277,fx32,0.121869343405148 -COS278,fx32,0.139173100960065 -COS279,fx32,0.156434465040231 -COS280,fx32,0.17364817766693 -COS281,fx32,0.190808995376545 -COS282,fx32,0.207911690817759 -COS283,fx32,0.224951054343865 -COS284,fx32,0.241921895599667 -COS285,fx32,0.25881904510252 -COS286,fx32,0.275637355816999 -COS287,fx32,0.292371704722737 -COS288,fx32,0.309016994374947 -COS289,fx32,0.325568154457156 -COS290,fx32,0.342020143325669 -COS291,fx32,0.3583679495453 -COS292,fx32,0.374606593415912 -COS293,fx32,0.390731128489273 -COS294,fx32,0.4067366430758 -COS295,fx32,0.4226182617407 -COS296,fx32,0.438371146789077 -COS297,fx32,0.453990499739547 -COS298,fx32,0.46947156278589 -COS299,fx32,0.484809620246337 -COS300,fx32,0.5 -COS301,fx32,0.515038074910054 -COS302,fx32,0.529919264233205 -COS303,fx32,0.544639035015027 -COS304,fx32,0.559192903470747 -COS305,fx32,0.573576436351046 -COS306,fx32,0.587785252292473 -COS307,fx32,0.601815023152048 -COS308,fx32,0.615661475325659 -COS309,fx32,0.629320391049838 -COS310,fx32,0.642787609686539 -COS311,fx32,0.656059028990507 -COS312,fx32,0.669130606358858 -COS313,fx32,0.681998360062499 -COS314,fx32,0.694658370458997 -COS315,fx32,0.707106781186547 -COS316,fx32,0.719339800338651 -COS317,fx32,0.731353701619171 -COS318,fx32,0.743144825477394 -COS319,fx32,0.754709580222772 -COS320,fx32,0.766044443118978 -COS321,fx32,0.777145961456971 -COS322,fx32,0.788010753606722 -COS323,fx32,0.798635510047293 -COS324,fx32,0.809016994374947 -COS325,fx32,0.819152044288992 -COS326,fx32,0.829037572555042 -COS327,fx32,0.838670567945424 -COS328,fx32,0.848048096156426 -COS329,fx32,0.857167300702112 -COS330,fx32,0.866025403784438 -COS331,fx32,0.874619707139396 -COS332,fx32,0.882947592858927 -COS333,fx32,0.891006524188368 -COS334,fx32,0.898794046299167 -COS335,fx32,0.90630778703665 -COS336,fx32,0.913545457642601 -COS337,fx32,0.92050485345244 -COS338,fx32,0.927183854566787 -COS339,fx32,0.933580426497202 -COS340,fx32,0.939692620785908 -COS341,fx32,0.945518575599317 -COS342,fx32,0.951056516295154 -COS343,fx32,0.956304755963035 -COS344,fx32,0.961261695938319 -COS345,fx32,0.965925826289068 -COS346,fx32,0.970295726275996 -COS347,fx32,0.974370064785235 -COS348,fx32,0.978147600733806 -COS349,fx32,0.981627183447664 -COS350,fx32,0.984807753012208 -COS351,fx32,0.987688340595138 -COS352,fx32,0.99026806874157 -COS353,fx32,0.992546151641322 -COS354,fx32,0.994521895368273 -COS355,fx32,0.996194698091746 -COS356,fx32,0.997564050259824 -COS357,fx32,0.998629534754574 -COS358,fx32,0.999390827019096 -COS359,fx32,0.999847695156391 diff --git a/subprojects/NitroSDK/autogen/nitro/fx/gen_fx_const.py b/subprojects/NitroSDK/autogen/nitro/fx/gen_fx_const.py deleted file mode 100644 index 832ce99e41..0000000000 --- a/subprojects/NitroSDK/autogen/nitro/fx/gen_fx_const.py +++ /dev/null @@ -1,138 +0,0 @@ -#!/usr/bin/env python3 - -import argparse -import csv -import math - - -class FxSpec: - intpart_dict = { - 'fx32': 19, - 'fx64': 51, - 'fx64c': 31, - 'fx16': 3 - } - - fracpart_dict = { - 'fx32': 12, - 'fx64': 12, - 'fx64c': 32, - 'fx16': 12 - } - - l_suffix_dict = { - 'fx32': 'L', - 'fx64': 'LL', - 'fx64c': 'LL', - 'fx16': '' - } - - def __init__(self, name: str) -> 'FxSpec': - self.name = name - - @property - def intpart(self): - return self._intpart - - @intpart.getter - def intpart(self): - return self.intpart_dict[self.name] - - @property - def fracpart(self): - return self._fracpart - - @fracpart.getter - def fracpart(self): - return self.fracpart_dict[self.name] - - @property - def l_suffix(self): - return self._l_suffix - - @l_suffix.getter - def l_suffix(self): - return self.l_suffix_dict[self.name] - - -class FxConst: - def __init__(self, name: str, fxtype: FxSpec, value: float) -> 'FxConst': - self.fxtype = fxtype - self.name = name - self.value = value - - @property - def name(self): - return self._name - - @name.setter - def name(self, value: str): - self._name = f'{self.fxtype.name.upper()}_{value}' - - def encode(self) -> int: - if self.value == 0: - return 0 - - ret_di = 0.0 - ret_df = 0.0 - value_abs = 0.0 - ret_ii = 0 - ret_if = 0 - ret_val = 0 - - value_abs = abs(self.value) - ret_di = math.floor(value_abs) - ret_df = value_abs - ret_di - ret_ii = int(value_abs * (1 << self.fxtype.fracpart)) - ret_if = int(ret_df * (1 << self.fxtype.fracpart) + 0.5) - ret_ii &= ~((1 << self.fxtype.fracpart) - 1) - ret_if &= (1 << self.fxtype.fracpart) - 1 - ret_val = ret_ii + ret_if - - if self.value < 0: - ret_val = -ret_val - - return ret_val - - -def generate_define(c: FxConst) -> str: - hex_value = f'(({c.fxtype.name}) 0x{hex(c.encode())[2:].zfill(16)}{c.fxtype.l_suffix})' - comment = f'// {c.value:.12f}' - - return f'#define {c.name: <20} {hex_value: ^20} {comment: >25}' - - -def generate_header(constants: list[FxConst]) -> str: - guard_top = '\n'.join(['#ifndef FX_CONST_H', '#define FX_CONST_H', str()]) - body = '\n'.join(generate_define(c) for c in constants) - guard_bottom = '\n'.join(['', '#endif // FX_CONST_H', '']) - - return '\n'.join([guard_top, body, guard_bottom]) - - -def main(): - args = parse_args() - constants = parse_csv(args.input) - header = generate_header(constants) - with open(args.output, 'w') as out: - out.write(header) - - -def parse_args(): - parser = argparse.ArgumentParser(description='fx_const.h header generator') - parser.add_argument('input', type=str) - parser.add_argument('output', type=str) - return parser.parse_args() - - -def parse_csv(path: str) -> list[FxConst]: - with open(path, newline='') as file: - reader = csv.reader(file) - return list( - FxConst( - row[0], FxSpec(row[1]), float(row[2])) - for row in reader if not row[0].startswith('#')) - - -if __name__ == '__main__': - main() diff --git a/subprojects/NitroSDK/autogen/nitro/fx/meson.build b/subprojects/NitroSDK/autogen/nitro/fx/meson.build deleted file mode 100644 index 593418fa5e..0000000000 --- a/subprojects/NitroSDK/autogen/nitro/fx/meson.build +++ /dev/null @@ -1,8 +0,0 @@ -fx_const_csv = files('fx_const.csv') -gen_fx_const_py = find_program('gen_fx_const.py', native: true) - -fx_const_h = custom_target('fx_const.h', - input: fx_const_csv, - output: 'fx_const.h', - command: [gen_fx_const_py, '@INPUT@', '@OUTPUT@'] -) diff --git a/subprojects/NitroSDK/components/ichneumon_sub.sbin b/subprojects/NitroSDK/components/ichneumon_sub.sbin deleted file mode 100644 index 58a0356bd0..0000000000 Binary files a/subprojects/NitroSDK/components/ichneumon_sub.sbin and /dev/null differ diff --git a/subprojects/NitroSDK/components/ichneumon_sub_defs.sbin b/subprojects/NitroSDK/components/ichneumon_sub_defs.sbin deleted file mode 100644 index 390d6153a5..0000000000 Binary files a/subprojects/NitroSDK/components/ichneumon_sub_defs.sbin and /dev/null differ diff --git a/subprojects/NitroSDK/components/meson.build b/subprojects/NitroSDK/components/meson.build deleted file mode 100644 index de3e23a815..0000000000 --- a/subprojects/NitroSDK/components/meson.build +++ /dev/null @@ -1,2 +0,0 @@ -ichneumon_sub = files('ichneumon_sub.sbin') -ichneumon_sub_defs = files('ichneumon_sub_defs.sbin') \ No newline at end of file diff --git a/subprojects/NitroSDK/include/nitro.h b/subprojects/NitroSDK/include/nitro.h deleted file mode 100644 index efbcc01789..0000000000 --- a/subprojects/NitroSDK/include/nitro.h +++ /dev/null @@ -1,68 +0,0 @@ -#ifndef NITRO_H_ -#define NITRO_H_ - -#ifdef SDK_ASM -#include -#include -#include -#include -#else -#ifdef __MWERKS__ -# ifdef __cplusplus -# ifndef __embedded_cplusplus -# define __embedded_cplusplus 0 -# endif -# ifndef __VEC__ -# define __VEC__ 0 -# endif -# endif -# if !defined(_MSL_USE_INLINE) && __option(dont_inline) -# define _MSL_USE_INLINE 0 -# endif -#endif - -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef SDK_ARM9 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#else -#include -#endif -#endif - -#endif // NITRO_H_ diff --git a/subprojects/NitroSDK/include/nitro/card.h b/subprojects/NitroSDK/include/nitro/card.h deleted file mode 100644 index 2bb5eff16d..0000000000 --- a/subprojects/NitroSDK/include/nitro/card.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef NITRO_CARD_H_ -#define NITRO_CARD_H_ - -#include -#include - -#include -#include -#include -#include -#include -#include - -#endif diff --git a/subprojects/NitroSDK/include/nitro/card/backup.h b/subprojects/NitroSDK/include/nitro/card/backup.h deleted file mode 100644 index f3b56aa0ee..0000000000 --- a/subprojects/NitroSDK/include/nitro/card/backup.h +++ /dev/null @@ -1,230 +0,0 @@ -#if !defined(NITRO_CARD_BACKUP_H_) -#define NITRO_CARD_BACKUP_H_ - -#include - -#ifdef __cplusplus -extern "C" -{ -#endif - -void CARD_LockBackup(u16 lock_id); - -void CARD_UnlockBackup(u16 lock_id); - -BOOL CARD_TryWaitBackupAsync(void); - -BOOL CARD_WaitBackupAsync(void); - -void CARD_CancelBackupAsync(void); - -BOOL CARDi_RequestStreamCommand(u32 src, u32 dst, u32 len, - MIDmaCallback callback, void * arg, BOOL is_async, - CARDRequest req_type, int req_retry, CARDRequestMode req_mode); - -BOOL CARDi_RequestWriteSectorCommand(u32 src, u32 dst, u32 len, BOOL verify, - MIDmaCallback callback, void * arg, BOOL is_async); - -SDK_INLINE BOOL CARDi_ReadBackup (u32 src, void * dst, u32 len, - MIDmaCallback callback, void * arg, BOOL is_async) -{ - return CARDi_RequestStreamCommand((u32)src, (u32)dst, len, - callback, arg, is_async, - CARD_REQ_READ_BACKUP, 1, CARD_REQUEST_MODE_RECV); -} - -SDK_INLINE BOOL CARDi_ProgramBackup (u32 dst, const void * src, u32 len, - MIDmaCallback callback, void * arg, BOOL is_async) -{ - return CARDi_RequestStreamCommand((u32)src, (u32)dst, len, callback, arg, is_async, - CARD_REQ_PROGRAM_BACKUP, CARD_RETRY_COUNT_MAX, - CARD_REQUEST_MODE_SEND); -} - -SDK_INLINE BOOL CARDi_WriteBackup (u32 dst, const void * src, u32 len, - MIDmaCallback callback, void * arg, BOOL is_async) -{ - return CARDi_RequestStreamCommand((u32)src, (u32)dst, len, callback, arg, is_async, - CARD_REQ_WRITE_BACKUP, CARD_RETRY_COUNT_MAX, - CARD_REQUEST_MODE_SEND); -} - -SDK_INLINE BOOL CARDi_VerifyBackup (u32 dst, const void * src, u32 len, - MIDmaCallback callback, void * arg, BOOL is_async) -{ - return CARDi_RequestStreamCommand((u32)src, (u32)dst, len, callback, arg, is_async, - CARD_REQ_VERIFY_BACKUP, 1, CARD_REQUEST_MODE_SEND); -} - -SDK_INLINE BOOL CARDi_ProgramAndVerifyBackup (u32 dst, const void * src, u32 len, - MIDmaCallback callback, void * arg, BOOL is_async) -{ - return CARDi_RequestStreamCommand((u32)src, (u32)dst, len, callback, arg, is_async, - CARD_REQ_PROGRAM_BACKUP, CARD_RETRY_COUNT_MAX, - CARD_REQUEST_MODE_SEND_VERIFY); -} - -SDK_INLINE BOOL CARDi_WriteAndVerifyBackup (u32 dst, const void * src, u32 len, - MIDmaCallback callback, void * arg, BOOL is_async) -{ - return CARDi_RequestStreamCommand((u32)src, (u32)dst, len, callback, arg, is_async, - CARD_REQ_WRITE_BACKUP, CARD_RETRY_COUNT_MAX, - CARD_REQUEST_MODE_SEND_VERIFY); -} - -SDK_INLINE BOOL CARDi_EraseBackupSector (u32 dst, u32 len, - MIDmaCallback callback, void * arg, BOOL is_async) -{ - return CARDi_RequestStreamCommand(0, (u32)dst, len, callback, arg, is_async, - CARD_REQ_ERASE_SECTOR_BACKUP, CARD_RETRY_COUNT_MAX, - CARD_REQUEST_MODE_SPECIAL); -} - -SDK_INLINE BOOL CARDi_EraseBackupSubSector (u32 dst, u32 len, - MIDmaCallback callback, void * arg, BOOL is_async) -{ - return CARDi_RequestStreamCommand(0, (u32)dst, len, callback, arg, is_async, - CARD_REQ_ERASE_SUBSECTOR_BACKUP, CARD_RETRY_COUNT_MAX, - CARD_REQUEST_MODE_SPECIAL); -} - -SDK_INLINE BOOL CARDi_EraseBackupChip (MIDmaCallback callback, void * arg, BOOL is_async) -{ - return CARDi_RequestStreamCommand(0, 0, 0, callback, arg, is_async, - CARD_REQ_ERASE_CHIP_BACKUP, 1, CARD_REQUEST_MODE_SPECIAL); -} - -SDK_INLINE void CARD_ReadBackupAsync (u32 src, void * dst, u32 len, MIDmaCallback callback, void * arg) -{ - (void)CARDi_ReadBackup(src, dst, len, callback, arg, TRUE); -} - -SDK_INLINE BOOL CARD_ReadBackup (u32 src, void * dst, u32 len) -{ - return CARDi_ReadBackup(src, dst, len, NULL, NULL, FALSE); -} - -SDK_INLINE void CARD_ProgramBackupAsync (u32 dst, const void * src, u32 len, - MIDmaCallback callback, void * arg) -{ - (void)CARDi_ProgramBackup(dst, src, len, callback, arg, TRUE); -} - -SDK_INLINE BOOL CARD_ProgramBackup (u32 dst, const void * src, u32 len) -{ - return CARDi_ProgramBackup(dst, src, len, NULL, NULL, FALSE); -} - -SDK_INLINE void CARD_WriteBackupAsync (u32 dst, const void * src, u32 len, - MIDmaCallback callback, void * arg) -{ - (void)CARDi_WriteBackup(dst, src, len, callback, arg, TRUE); -} - -SDK_INLINE BOOL CARD_WriteBackup (u32 dst, const void * src, u32 len) -{ - return CARDi_WriteBackup(dst, src, len, NULL, NULL, FALSE); -} - -SDK_INLINE void CARD_VerifyBackupAsync (u32 dst, const void * src, u32 len, - MIDmaCallback callback, void * arg) -{ - (void)CARDi_VerifyBackup(dst, src, len, callback, arg, TRUE); -} - -SDK_INLINE BOOL CARD_VerifyBackup (u32 dst, const void * src, u32 len) -{ - return CARDi_VerifyBackup(dst, src, len, NULL, NULL, FALSE); -} - -SDK_INLINE void CARD_ProgramAndVerifyBackupAsync (u32 dst, const void * src, u32 len, - MIDmaCallback callback, void * arg) -{ - (void)CARDi_ProgramAndVerifyBackup(dst, src, len, callback, arg, TRUE); -} - -SDK_INLINE BOOL CARD_ProgramAndVerifyBackup (u32 dst, const void * src, u32 len) -{ - return CARDi_ProgramAndVerifyBackup(dst, src, len, NULL, NULL, FALSE); -} - -SDK_INLINE void CARD_WriteAndVerifyBackupAsync (u32 dst, const void * src, u32 len, - MIDmaCallback callback, void * arg) -{ - (void)CARDi_WriteAndVerifyBackup(dst, src, len, callback, arg, TRUE); -} - -SDK_INLINE BOOL CARD_WriteAndVerifyBackup (u32 dst, const void * src, u32 len) -{ - return CARDi_WriteAndVerifyBackup(dst, src, len, NULL, NULL, FALSE); -} - -SDK_INLINE void CARD_EraseBackupSectorAsync (u32 dst, u32 len, MIDmaCallback callback, void * arg) -{ - (void)CARDi_EraseBackupSector(dst, len, callback, arg, TRUE); -} - -SDK_INLINE BOOL CARD_EraseBackupSector (u32 dst, u32 len) -{ - return CARDi_EraseBackupSector(dst, len, NULL, NULL, FALSE); -} - -SDK_INLINE void CARD_EraseBackupSubSectorAsync (u32 dst, u32 len, MIDmaCallback callback, void * arg) -{ - (void)CARDi_EraseBackupSubSector(dst, len, callback, arg, TRUE); -} - -SDK_INLINE BOOL CARD_EraseBackupSubSector (u32 dst, u32 len) -{ - return CARDi_EraseBackupSubSector(dst, len, NULL, NULL, FALSE); -} - -SDK_INLINE void CARD_EraseBackupChipAsync (MIDmaCallback callback, void * arg) -{ - (void)CARDi_EraseBackupChip(callback, arg, TRUE); -} - -SDK_INLINE BOOL CARD_EraseBackupChip (void) -{ - return CARDi_EraseBackupChip(NULL, NULL, FALSE); -} - -SDK_INLINE void CARD_WriteBackupSectorAsync (u32 dst, const void * src, u32 len, - MIDmaCallback callback, void * arg) -{ - (void)CARDi_RequestWriteSectorCommand((u32)src, dst, len, FALSE, callback, arg, TRUE); -} - -SDK_INLINE BOOL CARD_WriteBackupSector (u32 dst, const void * src, u32 len) -{ - return CARDi_RequestWriteSectorCommand((u32)src, dst, len, FALSE, NULL, NULL, FALSE); -} - -SDK_INLINE void CARD_WriteAndVerifyBackupSectorAsync (u32 dst, const void * src, u32 len, - MIDmaCallback callback, void * arg) -{ - (void)CARDi_RequestWriteSectorCommand((u32)src, dst, len, TRUE, callback, arg, TRUE); -} - -SDK_INLINE BOOL CARD_WriteAndVerifyBackupSector (u32 dst, const void * src, u32 len) -{ - return CARDi_RequestWriteSectorCommand((u32)src, dst, len, TRUE, NULL, NULL, FALSE); -} - -int CARDi_AccessStatus(CARDRequest command, u8 value); - -SDK_INLINE int CARDi_ReadStatus (void) -{ - return CARDi_AccessStatus(CARD_REQ_READ_STATUS, 0); -} - -SDK_INLINE BOOL CARDi_WriteStatus (u8 value) -{ - return (CARDi_AccessStatus(CARD_REQ_WRITE_STATUS, value) >= 0); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/card/common.h b/subprojects/NitroSDK/include/nitro/card/common.h deleted file mode 100644 index c7ad800ac1..0000000000 --- a/subprojects/NitroSDK/include/nitro/card/common.h +++ /dev/null @@ -1,130 +0,0 @@ -#if !defined(NITRO_CARD_COMMON_H_) -#define NITRO_CARD_COMMON_H_ - -#include -#include -#include -#include -#include - -typedef enum { - CARD_RESULT_SUCCESS = 0, - CARD_RESULT_FAILURE, - CARD_RESULT_INVALID_PARAM, - CARD_RESULT_UNSUPPORTED, - CARD_RESULT_TIMEOUT, - CARD_RESULT_ERROR, - CARD_RESULT_NO_RESPONSE, - CARD_RESULT_CANCELED -} CARDResult; - -#define CARD_BACKUP_TYPE_DEVICE_SHIFT 0 -#define CARD_BACKUP_TYPE_DEVICE_MASK 0xFF -#define CARD_BACKUP_TYPE_DEVICE_EEPROM 1 -#define CARD_BACKUP_TYPE_DEVICE_FLASH 2 -#define CARD_BACKUP_TYPE_DEVICE_FRAM 3 -#define CARD_BACKUP_TYPE_SIZEBIT_SHIFT 8 -#define CARD_BACKUP_TYPE_SIZEBIT_MASK 0xFF -#define CARD_BACKUP_TYPE_VENDER_SHIFT 16 -#define CARD_BACKUP_TYPE_VENDER_MASK 0xFF -#define CARD_BACKUP_TYPE_DEFINE(type, size, vender) \ - (((CARD_BACKUP_TYPE_DEVICE_ ## type) << CARD_BACKUP_TYPE_DEVICE_SHIFT) | \ - ((size) << CARD_BACKUP_TYPE_SIZEBIT_SHIFT) | \ - ((vender) << CARD_BACKUP_TYPE_VENDER_SHIFT)) - -typedef enum { - CARD_BACKUP_TYPE_EEPROM_4KBITS = CARD_BACKUP_TYPE_DEFINE(EEPROM, 9, 0), - CARD_BACKUP_TYPE_EEPROM_64KBITS = CARD_BACKUP_TYPE_DEFINE(EEPROM, 13, 0), - CARD_BACKUP_TYPE_EEPROM_512KBITS = CARD_BACKUP_TYPE_DEFINE(EEPROM, 16, 0), - CARD_BACKUP_TYPE_FLASH_2MBITS = CARD_BACKUP_TYPE_DEFINE(FLASH, 18, 0), - CARD_BACKUP_TYPE_FLASH_4MBITS = CARD_BACKUP_TYPE_DEFINE(FLASH, 19, 0), - CARD_BACKUP_TYPE_FLASH_8MBITS = CARD_BACKUP_TYPE_DEFINE(FLASH, 20, 0), - CARD_BACKUP_TYPE_FLASH_16MBITS = CARD_BACKUP_TYPE_DEFINE(FLASH, 21, 0), - CARD_BACKUP_TYPE_FLASH_64MBITS = CARD_BACKUP_TYPE_DEFINE(FLASH, 23, 0), - CARD_BACKUP_TYPE_FRAM_256KBITS = CARD_BACKUP_TYPE_DEFINE(FRAM, 15, 0), - CARD_BACKUP_TYPE_NOT_USE = 0 -} CARDBackupType; - -#define CARD_BACKUP_TYPE_FLASH_64MBITS_EX (CARDBackupType)CARD_BACKUP_TYPE_DEFINE(FLASH, 23, 1) - -#define CARD_THREAD_PRIORITY_DEFAULT 4 - -typedef enum { - CARD_REQ_INIT = 0, - CARD_REQ_ACK, - CARD_REQ_IDENTIFY, - CARD_REQ_READ_ID, - CARD_REQ_READ_ROM, - CARD_REQ_WRITE_ROM, - CARD_REQ_READ_BACKUP, - CARD_REQ_WRITE_BACKUP, - CARD_REQ_PROGRAM_BACKUP, - CARD_REQ_VERIFY_BACKUP, - CARD_REQ_ERASE_PAGE_BACKUP, - CARD_REQ_ERASE_SECTOR_BACKUP, - CARD_REQ_ERASE_CHIP_BACKUP, - CARD_REQ_READ_STATUS, - CARD_REQ_WRITE_STATUS, - CARD_REQ_ERASE_SUBSECTOR_BACKUP, - CARD_REQ_MAX -} CARDRequest; - -typedef enum { - CARD_REQUEST_MODE_RECV, - CARD_REQUEST_MODE_SEND, - CARD_REQUEST_MODE_SEND_VERIFY, - CARD_REQUEST_MODE_SPECIAL -} CARDRequestMode; - -#define CARD_RETRY_COUNT_MAX 10 - -#define CARD_PXI_COMMAND_MASK 0x0000003f -#define CARD_PXI_COMMAND_SHIFT 0 -#define CARD_PXI_COMMAND_PARAM_MASK 0x01ffffc0 -#define CARD_PXI_COMMAND_PARAM_SHIFT 6 - -#define CARD_PXI_COMMAND_TERMINATE 0x0001 -#define CARD_PXI_COMMAND_PULLED_OUT 0x0011 - -#if defined(__cplusplus) -extern "C" -{ -#endif - -void CARD_Init(void); - -BOOL CARD_IsAvailable(void); - -BOOL CARD_IsEnabled(void); - -void CARD_CheckEnabled(void); - -void CARD_Enable(BOOL enable); - -u32 CARD_GetThreadPriority(void); - -u32 CARD_SetThreadPriority(u32 prior); - -CARDResult CARD_GetResultCode(void); - -const u8 * CARD_GetRomHeader(void); - -void CARD_GetCacheFlushThreshold(u32 * icache, u32 * dcache); - -void CARD_SetCacheFlushThreshold(u32 icache, u32 dcache); - -BOOL CARD_IdentifyBackup(CARDBackupType type); - -u32 CARD_GetBackupTotalSize(void); - -u32 CARD_GetBackupSectorSize(void); - -u32 CARD_GetBackupPageSize(void); - -CARDBackupType CARD_GetCurrentBackupType(void); - -#if defined(__cplusplus) -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/card/eeprom.h b/subprojects/NitroSDK/include/nitro/card/eeprom.h deleted file mode 100644 index 415803c033..0000000000 --- a/subprojects/NitroSDK/include/nitro/card/eeprom.h +++ /dev/null @@ -1,65 +0,0 @@ -#if !defined(NITRO_CARD_EEPROM_H_) -#define NITRO_CARD_EEPROM_H_ - -#include -#include -#include - -#if defined(__cplusplus) -extern "C" -{ -#endif - -static inline BOOL CARD_IsBackupEeprom (void) -{ - const CARDBackupType t = CARD_GetCurrentBackupType(); - - return (((t >> CARD_BACKUP_TYPE_DEVICE_SHIFT) & - CARD_BACKUP_TYPE_DEVICE_MASK) == CARD_BACKUP_TYPE_DEVICE_EEPROM); -} - -static inline BOOL CARD_ReadEeprom (u32 src, void * dst, u32 len) -{ - return CARD_ReadBackup(src, dst, len); -} -static inline void CARD_ReadEepromAsync (u32 src, void * dst, u32 len, MIDmaCallback callback, - void * arg) -{ - CARD_ReadBackupAsync(src, dst, len, callback, arg); -} - -static inline BOOL CARD_WriteEeprom (u32 dst, const void * src, u32 len) -{ - return CARD_ProgramBackup(dst, src, len); -} -static inline void CARD_WriteEepromAsync (u32 dst, const void * src, u32 len, - MIDmaCallback callback, void * arg) -{ - CARD_ProgramBackupAsync(dst, src, len, callback, arg); -} - -static inline BOOL CARD_VerifyEeprom (u32 dst, const void * src, u32 len) -{ - return CARD_VerifyBackup(dst, src, len); -} -static inline void CARD_VerifyEepromAsync (u32 dst, const void * src, u32 len, - MIDmaCallback callback, void * arg) -{ - CARD_VerifyBackupAsync(dst, src, len, callback, arg); -} - -static inline BOOL CARD_WriteAndVerifyEeprom (u32 dst, const void * src, u32 len) -{ - return CARD_ProgramAndVerifyBackup(dst, src, len); -} -static inline void CARD_WriteAndVerifyEepromAsync (u32 dst, const void * src, u32 len, - MIDmaCallback callback, void * arg) -{ - CARD_ProgramAndVerifyBackupAsync(dst, src, len, callback, arg); -} - -#if defined(__cplusplus) -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/card/flash.h b/subprojects/NitroSDK/include/nitro/card/flash.h deleted file mode 100644 index 36dcc3a20b..0000000000 --- a/subprojects/NitroSDK/include/nitro/card/flash.h +++ /dev/null @@ -1,124 +0,0 @@ -#if !defined(NITRO_CARD_FLASH_H_) -#define NITRO_CARD_FLASH_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" -{ -#endif - -SDK_INLINE BOOL CARD_IsBackupFlash (void) -{ - const CARDBackupType t = CARD_GetCurrentBackupType(); - - return (((t >> CARD_BACKUP_TYPE_DEVICE_SHIFT) & - CARD_BACKUP_TYPE_DEVICE_MASK) == CARD_BACKUP_TYPE_DEVICE_FLASH); -} - -SDK_INLINE BOOL CARD_ReadFlash (u32 src, void * dst, u32 len) -{ - return CARD_ReadBackup(src, dst, len); -} - -SDK_INLINE void CARD_ReadFlashAsync (u32 src, void * dst, u32 len, - MIDmaCallback callback, void * arg) -{ - CARD_ReadBackupAsync(src, dst, len, callback, arg); -} - -SDK_INLINE BOOL CARD_WriteFlash (u32 dst, const void * src, u32 len) -{ - return CARD_WriteBackup(dst, src, len); -} - -SDK_INLINE void CARD_WriteFlashAsync (u32 dst, const void * src, u32 len, - MIDmaCallback callback, void * arg) -{ - CARD_WriteBackupAsync(dst, src, len, callback, arg); -} - -SDK_INLINE BOOL CARD_VerifyFlash (u32 dst, const void * src, u32 len) -{ - return CARD_VerifyBackup(dst, src, len); -} - -SDK_INLINE void CARD_VerifyFlashAsync (u32 dst, const void * src, u32 len, - MIDmaCallback callback, void * arg) -{ - CARD_VerifyBackupAsync(dst, src, len, callback, arg); -} - -SDK_INLINE BOOL CARD_WriteAndVerifyFlash (u32 dst, const void * src, u32 len) -{ - return CARD_WriteAndVerifyBackup(dst, src, len); -} - -SDK_INLINE void CARD_WriteAndVerifyFlashAsync (u32 dst, const void * src, u32 len, - MIDmaCallback callback, void * arg) -{ - CARD_WriteAndVerifyBackupAsync(dst, src, len, callback, arg); -} - -SDK_INLINE BOOL CARD_EraseFlashSector (u32 dst, u32 len) -{ - return CARD_EraseBackupSector(dst, len); -} - -SDK_INLINE void CARD_EraseFlashSectorAsync (u32 dst, u32 len, - MIDmaCallback callback, void * arg) -{ - CARD_EraseBackupSectorAsync(dst, len, callback, arg); -} - -SDK_INLINE BOOL CARD_ProgramFlash (u32 dst, const void * src, u32 len) -{ - return CARD_ProgramBackup(dst, src, len); -} - -SDK_INLINE void CARD_ProgramFlashAsync (u32 dst, const void * src, u32 len, - MIDmaCallback callback, void * arg) -{ - CARD_ProgramBackupAsync(dst, src, len, callback, arg); -} - -SDK_INLINE BOOL CARD_ProgramAndVerifyFlash (u32 dst, const void * src, u32 len) -{ - return CARD_ProgramAndVerifyBackup(dst, src, len); -} - -SDK_INLINE void CARD_ProgramAndVerifyFlashAsync (u32 dst, const void * src, u32 len, - MIDmaCallback callback, void * arg) -{ - CARD_ProgramAndVerifyBackupAsync(dst, src, len, callback, arg); -} - -SDK_INLINE BOOL CARD_WriteFlashSector (u32 dst, const void * src, u32 len) -{ - return CARD_WriteBackupSector(dst, src, len); -} - -SDK_INLINE void CARD_WriteFlashSectorAsync (u32 dst, const void * src, u32 len, - MIDmaCallback callback, void * arg) -{ - CARD_WriteBackupSectorAsync(dst, src, len, callback, arg); -} - -SDK_INLINE BOOL CARD_WriteAndVerifyFlashSector (u32 dst, const void * src, u32 len) -{ - return CARD_WriteAndVerifyBackupSector(dst, src, len); -} - -SDK_INLINE void CARD_WriteAndVerifyFlashSectorAsync (u32 dst, const void * src, u32 len, - MIDmaCallback callback, void * arg) -{ - CARD_WriteAndVerifyBackupSectorAsync(dst, src, len, callback, arg); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/card/fram.h b/subprojects/NitroSDK/include/nitro/card/fram.h deleted file mode 100644 index 0f5b583e67..0000000000 --- a/subprojects/NitroSDK/include/nitro/card/fram.h +++ /dev/null @@ -1,69 +0,0 @@ -#if !defined(NITRO_CARD_FRAM_H_) -#define NITRO_CARD_FRAM_H_ - -#include -#include -#include - -#if defined(__cplusplus) -extern "C" -{ -#endif - -static inline BOOL CARD_IsBackupFram (void) -{ - const CARDBackupType t = CARD_GetCurrentBackupType(); - - return (((t >> CARD_BACKUP_TYPE_DEVICE_SHIFT) & - CARD_BACKUP_TYPE_DEVICE_MASK) == CARD_BACKUP_TYPE_DEVICE_FRAM); -} - -static inline BOOL CARD_ReadFram (u32 src, void * dst, u32 len) -{ - return CARD_ReadBackup(src, dst, len); -} - -static inline void CARD_ReadFramAsync (u32 src, void * dst, u32 len, MIDmaCallback callback, - void * arg) -{ - CARD_ReadBackupAsync(src, dst, len, callback, arg); -} - -static inline BOOL CARD_WriteFram (u32 dst, const void * src, u32 len) -{ - return CARD_ProgramBackup(dst, src, len); -} - -static inline void CARD_WriteFramAsync (u32 dst, const void * src, u32 len, - MIDmaCallback callback, void * arg) -{ - CARD_ProgramBackupAsync(dst, src, len, callback, arg); -} - -static inline BOOL CARD_VerifyFram (u32 dst, const void * src, u32 len) -{ - return CARD_VerifyBackup(dst, src, len); -} - -static inline void CARD_VerifyFramAsync (u32 dst, const void * src, u32 len, - MIDmaCallback callback, void * arg) -{ - CARD_VerifyBackupAsync(dst, src, len, callback, arg); -} - -static inline BOOL CARD_WriteAndVerifyFram (u32 dst, const void * src, u32 len) -{ - return CARD_ProgramAndVerifyBackup(dst, src, len); -} - -static inline void CARD_WriteAndVerifyFramAsync (u32 dst, const void * src, u32 len, - MIDmaCallback callback, void * arg) -{ - CARD_ProgramAndVerifyBackupAsync(dst, src, len, callback, arg); -} - -#if defined(__cplusplus) -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/card/pullOut.h b/subprojects/NitroSDK/include/nitro/card/pullOut.h deleted file mode 100644 index 1d220abe0f..0000000000 --- a/subprojects/NitroSDK/include/nitro/card/pullOut.h +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef NITRO_CARD_PULLOUT_H_ -#define NITRO_CARD_PULLOUT_H_ - -#if defined(__cplusplus) -extern "C" -{ -#endif - -typedef BOOL (* CARDPulledOutCallback) (void); - -void CARD_InitPulledOutCallback(void); - -#ifdef SDK_ARM9 -void CARD_SetPulledOutCallback(CARDPulledOutCallback callback); -#endif - -#ifdef SDK_ARM9 -void CARD_TerminateForPulledOut(void); -#endif - -#ifdef SDK_ARM9 -void CARD_PulledOutCallbackProc(void); -#endif - -#ifdef SDK_ARM9 -void CARD_CheckPulledOut(void); -#endif - -BOOL CARD_IsPulledOut(void); - -#ifdef SDK_ARM7 -void CARD_CheckPullOut_Polling(void); -#endif - -#if defined(__cplusplus) -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/card/rom.h b/subprojects/NitroSDK/include/nitro/card/rom.h deleted file mode 100644 index a7db8d26bc..0000000000 --- a/subprojects/NitroSDK/include/nitro/card/rom.h +++ /dev/null @@ -1,129 +0,0 @@ -#if !defined(NITRO_CARD_ROM_H_) -#define NITRO_CARD_ROM_H_ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include -#include -#include -#include -#include - -#include - -typedef struct { - u32 offset; - u32 length; -} CARDRomRegion; - -typedef struct { - char game_name[12]; - u32 game_code; - u16 maker_code; - u8 product_id; - u8 device_type; - u8 device_size; - u8 reserved_A[9]; - u8 game_version; - u8 property; - - void * main_rom_offset; - void * main_entry_address; - void * main_ram_address; - u32 main_size; - void * sub_rom_offset; - void * sub_entry_address; - void * sub_ram_address; - u32 sub_size; - - CARDRomRegion fnt; - CARDRomRegion fat; - - CARDRomRegion main_ovt; - CARDRomRegion sub_ovt; - - u8 rom_param_A[8]; - u32 banner_offset; - u16 secure_crc; - u8 rom_param_B[2]; - - void * main_autoload_done; - void * sub_autoload_done; - - u8 rom_param_C[8]; - u32 rom_size; - u32 header_size; - u8 reserved_B[0x38]; - - u8 logo_data[0x9C]; - u16 logo_crc; - u16 header_crc; -} CARDRomHeader; - -#define CARD_ROM_PAGE_SIZE 512 - -static inline const CARDRomRegion * CARD_GetRomRegionFNT (void) -{ - return (const CARDRomRegion *)((const u8 *)HW_ROM_HEADER_BUF + 0x40); -} - -static inline const CARDRomRegion * CARD_GetRomRegionFAT (void) -{ - return (const CARDRomRegion *)((const u8 *)HW_ROM_HEADER_BUF + 0x48); -} - -static inline const CARDRomRegion * CARD_GetRomRegionOVT (MIProcessor target) -{ - return (target == MI_PROCESSOR_ARM9) ? - (const CARDRomRegion *)((const u8 *)HW_ROM_HEADER_BUF + 0x50) : - (const CARDRomRegion *)((const u8 *)HW_ROM_HEADER_BUF + 0x58); -} - -#if defined(SDK_TEG) -static inline BOOL CARDi_IsTrueRom (void) -{ - return (OS_GetConsoleType() & OS_CONSOLE_DEV_CARD) != 0; -} -#endif - -void CARD_LockRom(u16 lock_id); - -void CARD_UnlockRom(u16 lock_id); - -void CARDi_ReadRom(u32 dma, - const void * src, void * dst, u32 len, - MIDmaCallback callback, void * arg, BOOL is_async); - -BOOL CARD_TryWaitRomAsync(void); - -void CARD_WaitRomAsync(void); - -static inline void CARD_ReadRomAsync (u32 dma, - const void * src, void * dst, u32 len, - MIDmaCallback callback, void * arg) -{ - CARDi_ReadRom(dma, src, dst, len, callback, arg, TRUE); -} - -static inline void CARD_ReadRom (u32 dma, const void * src, void * dst, u32 len) -{ - CARDi_ReadRom(dma, src, dst, len, NULL, NULL, FALSE); -} - -u32 CARDi_ReadRomID(void); - -#if defined(SDK_TEG) && defined(SDK_ARM7) - -void CARDi_CreatePxiRecvThread(u32 priority); - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/cht.h b/subprojects/NitroSDK/include/nitro/cht.h deleted file mode 100644 index 19e933975e..0000000000 --- a/subprojects/NitroSDK/include/nitro/cht.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef NITRO_CHT_H_ -#define NITRO_CHT_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef SDK_ARM9 - -#include - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/cht/ARM9/pictocatch.h b/subprojects/NitroSDK/include/nitro/cht/ARM9/pictocatch.h deleted file mode 100644 index babdf4a9b7..0000000000 --- a/subprojects/NitroSDK/include/nitro/cht/ARM9/pictocatch.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef NITRO_CHT_ARM9_PICTOCATCH_H_ -#define NITRO_CHT_ARM9_PICTOCATCH_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -BOOL CHT_IsPictochatParent(const WMBssDesc * pWmBssDesc); - -int CHT_GetPictochatClientNum(const WMBssDesc * pWmBssDesc); - -int CHT_GetPictochatRoomNumber(const WMBssDesc * pWmBssDesc); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/code16.h b/subprojects/NitroSDK/include/nitro/code16.h deleted file mode 100644 index 62c9cafe8f..0000000000 --- a/subprojects/NitroSDK/include/nitro/code16.h +++ /dev/null @@ -1,23 +0,0 @@ -#if defined(SDK_CW) || defined(__MWERKS__) -#pragma thumb on -#elif defined(SDK_ADS) -TO BE DEFINED -#elif defined(SDK_GCC) -TO BE DEFINED -#endif - -#ifdef FX_Mul -#undef FX_Mul -#endif - -#ifdef FX_Mul32x64c -#undef FX_Mul32x64c -#endif - -#ifdef MATH_CountLeadingZeros -#undef MATH_CountLeadingZeros -#endif - -#define FX_Mul(v1, v2) FX_MulFunc(v1, v2) -#define FX_Mul32x64c(v32, v64c) FX_Mul32x64cFunc(v32, v64c) -#define MATH_CountLeadingZeros(x) MATH_CountLeadingZerosFunc(x) diff --git a/subprojects/NitroSDK/include/nitro/code32.h b/subprojects/NitroSDK/include/nitro/code32.h deleted file mode 100644 index af9858b7f3..0000000000 --- a/subprojects/NitroSDK/include/nitro/code32.h +++ /dev/null @@ -1,23 +0,0 @@ -#if defined(SDK_CW) || defined(__MWERKS__) -#pragma thumb off -#elif defined(SDK_ADS) -TO BE DEFINED -#elif defined(SDK_GCC) -TO BE DEFINED -#endif - -#ifdef FX_Mul -#undef FX_Mul -#endif - -#ifdef FX_Mul32x64c -#undef FX_Mul32x64c -#endif - -#ifdef MATH_CountLeadingZeros -#undef MATH_CountLeadingZeros -#endif - -#define FX_Mul(v1, v2) FX_MulInline(v1, v2) -#define FX_Mul32x64c(v32, v64c) FX_Mul32x64cInline(v32, v64c) -#define MATH_CountLeadingZeros(x) MATH_CountLeadingZerosInline(x) diff --git a/subprojects/NitroSDK/include/nitro/codereset.h b/subprojects/NitroSDK/include/nitro/codereset.h deleted file mode 100644 index 90e578e700..0000000000 --- a/subprojects/NitroSDK/include/nitro/codereset.h +++ /dev/null @@ -1,5 +0,0 @@ -#ifdef SDK_CODE_ARM -#include -#else -#include -#endif diff --git a/subprojects/NitroSDK/include/nitro/cp.h b/subprojects/NitroSDK/include/nitro/cp.h deleted file mode 100644 index c7d4883db6..0000000000 --- a/subprojects/NitroSDK/include/nitro/cp.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef NITRO_CP_H_ -#define NITRO_CP_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/cp/context.h b/subprojects/NitroSDK/include/nitro/cp/context.h deleted file mode 100644 index 5ddda32099..0000000000 --- a/subprojects/NitroSDK/include/nitro/cp/context.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef NITRO_CP_CONTEXT_H_ -#define NITRO_CP_CONTEXT_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -typedef struct CPContext { - u64 div_numer; - u64 div_denom; - u64 sqrt; - u16 div_mode; - u16 sqrt_mode; -} CPContext; - -void CP_SaveContext(CPContext * context); - -void CPi_RestoreContext(const CPContext * context); -static inline void CP_RestoreContext (const CPContext * context) -{ - CPi_RestoreContext(context); - CP_WaitDiv(); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/cp/divider.h b/subprojects/NitroSDK/include/nitro/cp/divider.h deleted file mode 100644 index de6fd9ffc2..0000000000 --- a/subprojects/NitroSDK/include/nitro/cp/divider.h +++ /dev/null @@ -1,173 +0,0 @@ -#ifndef NITRO_CP_DIVIDER_H_ -#define NITRO_CP_DIVIDER_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#define CP_DIV_32_32BIT_MODE (0UL << REG_CP_DIVCNT_MODE_SHIFT) -#define CP_DIV_64_32BIT_MODE (1UL << REG_CP_DIVCNT_MODE_SHIFT) -#define CP_DIV_64_64BIT_MODE (2UL << REG_CP_DIVCNT_MODE_SHIFT) - -static inline void CP_SetDivControl (u16 parameter) -{ - reg_CP_DIVCNT = parameter; -} - -static inline void CP_SetDivImm32_32_NS_ (u32 numer, u32 denom) -{ - *(REGType32 *)REG_DIV_NUMER_ADDR = numer; - *(REGType64 *)REG_DIV_DENOM_ADDR = denom; -} - -static inline void CP_SetDivImm64_32_NS_ (u64 numer, u32 denom) -{ - *(REGType64 *)REG_DIV_NUMER_ADDR = numer; - *(REGType64 *)REG_DIV_DENOM_ADDR = denom; -} - -static inline void CP_SetDivImm64_64_NS_ (u64 numer, u64 denom) -{ - *(REGType64 *)REG_DIV_NUMER_ADDR = numer; - *(REGType64 *)REG_DIV_DENOM_ADDR = denom; -} - -static inline void CP_SetDivImm32_32 (u32 numer, u32 denom) -{ - CP_SetDivImm32_32_NS_(numer, denom); -} - -static inline void CP_SetDivImm64_32 (u64 numer, u32 denom) -{ - CP_SetDivImm64_32_NS_(numer, denom); -} - -static inline void CP_SetDivImm64_64 (u64 numer, u64 denom) -{ - CP_SetDivImm64_64_NS_(numer, denom); -} - -static inline void CP_SetDiv32_32 (u32 numer, u32 denom) -{ - reg_CP_DIVCNT = CP_DIV_32_32BIT_MODE; - CP_SetDivImm32_32_NS_(numer, denom); -} - -static inline void CP_SetDiv64_32 (u64 numer, u32 denom) -{ - reg_CP_DIVCNT = CP_DIV_64_32BIT_MODE; - CP_SetDivImm64_32_NS_(numer, denom); -} - -static inline void CP_SetDiv64_64 (u64 numer, u64 denom) -{ - reg_CP_DIVCNT = CP_DIV_64_64BIT_MODE; - CP_SetDivImm64_64_NS_(numer, denom); -} - -static inline s32 CP_IsDivBusy () -{ - return (reg_CP_DIVCNT & REG_CP_DIVCNT_BUSY_MASK); -} - -static inline void CP_WaitDiv () -{ - while (CP_IsDivBusy()) { - } -} - -static inline s64 CP_GetDivResultImm64 () -{ - return (s64)(*(REGType64 *)REG_DIV_RESULT_ADDR); -} - -static inline s32 CP_GetDivResultImm32 () -{ - return (s32)(*(REGType32 *)REG_DIV_RESULT_ADDR); -} - -static inline s16 CP_GetDivResultImm16 () -{ - return (s16)(*(REGType16 *)REG_DIV_RESULT_ADDR); -} - -static inline s8 CP_GetDivResultImm8 () -{ - return (s8)(*(REGType8 *)REG_DIV_RESULT_ADDR); -} - -static inline s64 CP_GetDivResult64 () -{ - CP_WaitDiv(); - return CP_GetDivResultImm64(); -} - -static inline s32 CP_GetDivResult32 () -{ - CP_WaitDiv(); - return CP_GetDivResultImm32(); -} - -static inline s16 CP_GetDivResult16 () -{ - CP_WaitDiv(); - return CP_GetDivResultImm16(); -} - -static inline s8 CP_GetDivResult8 () -{ - CP_WaitDiv(); - return CP_GetDivResultImm8(); -} - -static inline s64 CP_GetDivRemainderImm64 () -{ - return (s64)(*(REGType64 *)REG_DIVREM_RESULT_ADDR); -} - -static inline s32 CP_GetDivRemainderImm32 () -{ - return (s32)(*(REGType32 *)REG_DIVREM_RESULT_ADDR); -} - -static inline s16 CP_GetDivRemainderImm16 () -{ - return (s16)(*(REGType16 *)REG_DIVREM_RESULT_ADDR); -} - -static inline s8 CP_GetDivRemainderImm8 () -{ - return (s8)(*(REGType8 *)REG_DIVREM_RESULT_ADDR); -} - -static inline s64 CP_GetDivRemainder64 () -{ - CP_WaitDiv(); - return CP_GetDivRemainderImm64(); -} - -static inline s32 CP_GetDivRemainder32 () -{ - CP_WaitDiv(); - return CP_GetDivRemainderImm32(); -} - -static inline s16 CP_GetDivRemainder16 () -{ - CP_WaitDiv(); - return CP_GetDivRemainderImm16(); -} - -static inline s8 CP_GetDivRemainder8 () -{ - CP_WaitDiv(); - return CP_GetDivRemainderImm8(); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/cp/sqrt.h b/subprojects/NitroSDK/include/nitro/cp/sqrt.h deleted file mode 100644 index acc41ae280..0000000000 --- a/subprojects/NitroSDK/include/nitro/cp/sqrt.h +++ /dev/null @@ -1,93 +0,0 @@ -#ifndef NITRO_CP_SQRT_H_ -#define NITRO_CP_SQRT_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#define CP_SQRT_32BIT_MODE (0UL << REG_CP_SQRTCNT_MODE_SHIFT) -#define CP_SQRT_64BIT_MODE (1UL << REG_CP_SQRTCNT_MODE_SHIFT) - -static inline void CP_SetSqrtControl (u16 param) -{ - reg_CP_SQRTCNT = param; -} - -static inline void CP_SetSqrtImm64_NS_ (u64 param) -{ - *((REGType64 *)REG_SQRT_PARAM_ADDR) = param; -} -static inline void CP_SetSqrtImm32_NS_ (u32 param) -{ - *((REGType32 *)REG_SQRT_PARAM_ADDR) = param; -} - -static inline void CP_SetSqrtImm64 (u64 param) -{ - *((REGType64 *)REG_SQRT_PARAM_ADDR) = param; -} - -static inline void CP_SetSqrtImm32 (u32 param) -{ - *((REGType32 *)REG_SQRT_PARAM_ADDR) = param; -} - -static inline void CP_SetSqrt64 (u64 param) -{ - reg_CP_SQRTCNT = CP_SQRT_64BIT_MODE; - CP_SetSqrtImm64_NS_(param); -} - -static inline void CP_SetSqrt32 (u32 param) -{ - reg_CP_SQRTCNT = CP_SQRT_32BIT_MODE; - CP_SetSqrtImm32_NS_(param); -} - -static inline s32 CP_IsSqrtBusy (void) -{ - return (reg_CP_SQRTCNT & REG_CP_SQRTCNT_BUSY_MASK); -} - -static inline void CP_WaitSqrt (void) -{ - while (CP_IsSqrtBusy()) { - } -} - -static inline u32 CP_GetSqrtResultImm32 (void) -{ - return (u32)(*((REGType32 *)REG_SQRT_RESULT_ADDR)); -} -static inline u16 CP_GetSqrtResultImm16 (void) -{ - return (u16)(*((REGType16 *)REG_SQRT_RESULT_ADDR)); -} -static inline u8 CP_GetSqrtResultImm8 (void) -{ - return (u8)(*((REGType8 *)REG_SQRT_RESULT_ADDR)); -} - -static inline u32 CP_GetSqrtResult32 (void) -{ - CP_WaitSqrt(); - return CP_GetSqrtResultImm32(); -} -static inline u16 CP_GetSqrtResult16 (void) -{ - CP_WaitSqrt(); - return CP_GetSqrtResultImm16(); -} -static inline u8 CP_GetSqrtResult8 (void) -{ - CP_WaitSqrt(); - return CP_GetSqrtResultImm8(); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/ctrdg.h b/subprojects/NitroSDK/include/nitro/ctrdg.h deleted file mode 100644 index 279edf591c..0000000000 --- a/subprojects/NitroSDK/include/nitro/ctrdg.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef NITRO_CTRDG_H_ -#define NITRO_CTRDG_H_ - -#include -#include -#include -#include -#include - -#ifdef SDK_ARM7 -#include -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/ctrdg/ARM9/ctrdg_backup.h b/subprojects/NitroSDK/include/nitro/ctrdg/ARM9/ctrdg_backup.h deleted file mode 100644 index 36fea7ed24..0000000000 --- a/subprojects/NitroSDK/include/nitro/ctrdg/ARM9/ctrdg_backup.h +++ /dev/null @@ -1,63 +0,0 @@ -#ifndef NITRO_CTRDG_BACKUP_H_ -#define NITRO_CTRDG_BACKUP_H_ - -#include -#include "ctrdg_task.h" -#include "ctrdg_flash.h" -#include "ctrdg_sram.h" - -#define CTRDG_BACKUP_PHASE_VERIFY 0x0000 -#define CTRDG_BACKUP_PHASE_PROGRAM 0x0001 -#define CTRDG_BACKUP_PHASE_SECTOR_ERASE 0x0002 -#define CTRDG_BACKUP_PHASE_CHIP_ERASE 0x0003 -#define CTRDG_BACKUP_PHASE_VERIFY_ERASE 0x0004 -#define CTRDG_BACKUP_PHASE_PARAMETER_CHECK 0x00ff - -#define CTRDG_BACKUP_RESULT_OK 0x0000 -#define CTRDG_BACKUP_RESULT_ERROR 0x8000 -#define CTRDG_BACKUP_RESULT_TIMEOUT 0x4000 -#define CTRDG_BACKUP_RESULT_Q5TIMEOUT 0x2000 -#define CTRDG_BACKUP_RESULT_PULLEDOUT 0x1000 - -#define CTRDG_BACKUP_VENDER_ID_ADR (CTRDG_AGB_FLASH_ADR + 0x00000000) -#define CTRDG_BACKUP_DEVICE_ID_ADR (CTRDG_AGB_FLASH_ADR + 0x00000001) -#define CTRDG_BACKUP_COM_ADR1 (CTRDG_AGB_FLASH_ADR + 0x00005555) -#define CTRDG_BACKUP_COM_ADR2 (CTRDG_AGB_FLASH_ADR + 0x00002aaa) - -#define CTRDG_BACKUP_MEGA_512K_ID 0x1cc2 -#define CTRDG_BACKUP_MEGA_1M_ID 0x09c2 - -typedef struct CTRDGiFlashTypePlusTag { - u16 (* CTRDGi_WriteAgbFlashSector)(u16 secNo, u8 * src); - u16 (* CTRDGi_EraseAgbFlashChip)(void); - u16 (* CTRDGi_EraseAgbFlashSector)(u16 secNo); - void (* CTRDGi_WriteAgbFlashSectorAsync)(u16 secNo, u8 * src, CTRDG_TASK_FUNC callback); - void (* CTRDGi_EraseAgbFlashChipAsync)(CTRDG_TASK_FUNC callback); - void (* CTRDGi_EraseAgbFlashSectorAsync)(u16 secNo, CTRDG_TASK_FUNC callback); - u16 (* CTRDGi_PollingSR)(u16 phase, u8 * adr, u16 lastData); - const u16(*maxtime); - CTRDGFlashType type; -} CTRDGiFlashTypePlus; - -typedef enum { - CTRDG_BACKUP_TYPE_FLASH_512K, - CTRDG_BACKUP_TYPE_FLASH_1M, - CTRDG_BACKUP_TYPE_SRAM -} CTRDGBackupType; - -extern u16 ctrdg_flash_remainder; -extern const u16(*ctrdgi_fl_maxtime); -extern u16 (* CTRDGi_PollingSR) (u16 phase, u8 * adr, u16 lastData); - -extern const CTRDGFlashType * AgbFlash; -extern u16 (* CTRDGi_WriteAgbFlashSector) (u16 secNo, u8 * src); -extern u16 (* CTRDGi_EraseAgbFlashChip) (void); -extern u16 (* CTRDGi_EraseAgbFlashSector) (u16 secNo); -extern void (* CTRDGi_WriteAgbFlashSectorAsync) (u16 secNo, u8 * src, CTRDG_TASK_FUNC callback); -extern void (* CTRDGi_EraseAgbFlashChipAsync) (CTRDG_TASK_FUNC callback); -extern void (* CTRDGi_EraseAgbFlashSectorAsync) (u16 secNo, CTRDG_TASK_FUNC callback); -extern u16 (* pollingSR) (u16 phase, u8 * adr, u16 lastData); - -extern u16 CTRDG_IdentifyAgbBackup(CTRDGBackupType type); - -#endif diff --git a/subprojects/NitroSDK/include/nitro/ctrdg/ARM9/ctrdg_flash.h b/subprojects/NitroSDK/include/nitro/ctrdg/ARM9/ctrdg_flash.h deleted file mode 100644 index 4c2e982ea3..0000000000 --- a/subprojects/NitroSDK/include/nitro/ctrdg/ARM9/ctrdg_flash.h +++ /dev/null @@ -1,66 +0,0 @@ -#ifndef NITRO_CTRDG_FLASH_H_ -#define NITRO_CTRDG_FLASH_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define CTRDG_AGB_FLASH_ADR 0x0A000000 - -#define CTRDG_AGB_FLASH_RETRY_MAX 3 - -typedef struct CTRDGiFlashSectorTag { - u32 size; - u16 shift; - u16 count; - u16 top; - u8 reserved[2]; -} CTRDGiFlashSector; - -typedef struct CTRDGFlashTypeTag { - u32 romSize; - CTRDGiFlashSector sector; - MICartridgeRamCycle agbWait[2]; - u16 makerID; - u16 deviceID; -} CTRDGFlashType; - -extern void CTRDGi_SetFlashBankMx(u16 bank); -extern u16 CTRDGi_ReadFlashID(void); -extern void StartFlashTimer(u16 phase); -extern void CheckFlashTimer(void); -extern void CTRDGi_SetFlashBankMx(u16 bank); -extern u16 CTRDGi_PollingSR512kCOMMON(u16 phase, u8 * adr, u16 lastData); -extern u16 CTRDGi_PollingSR1MCOMMON(u16 phase, u8 * adr, u16 lastData); - -extern const CTRDGFlashType * AgbFlash; - -extern u16 ctrdg_flash_remainder; - -extern void CTRDG_ReadAgbFlash(u16 sec_num, u32 offset, u8 * dst, u32 size); -extern void CTRDG_ReadAgbFlashAsync(u16 sec_num, u32 offset, u8 * dst, u32 size, - CTRDG_TASK_FUNC callback); - -extern u16 CTRDG_EraseAgbFlashChip(void); -extern void CTRDG_EraseAgbFlashChipAsync(CTRDG_TASK_FUNC callback); - -extern u16 CTRDG_EraseAgbFlashSector(u16 sec_num); -extern void CTRDG_EraseAgbFlashSectorAsync(u16 sec_num, CTRDG_TASK_FUNC callback); - -extern u16 CTRDG_WriteAgbFlashSector(u16 sec_num, u8 * src); -extern void CTRDG_WriteAgbFlashSectorAsync(u16 sec_num, u8 * src, CTRDG_TASK_FUNC callback); - -extern u32 CTRDG_VerifyAgbFlash(u16 sec_num, u8 * src, u32 size); -extern void CTRDG_VerifyAgbFlashAsync(u16 sec_num, u8 * src, u32 size, CTRDG_TASK_FUNC callback); - -extern u32 CTRDG_WriteAndVerifyAgbFlash(u16 sec_num, u8 * src, u32 verifysize); -extern void CTRDG_WriteAndVerifyAgbFlashAsync(u16 sec_num, u8 * src, u32 verifysize, - CTRDG_TASK_FUNC callback); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/ctrdg/ARM9/ctrdg_sram.h b/subprojects/NitroSDK/include/nitro/ctrdg/ARM9/ctrdg_sram.h deleted file mode 100644 index f4ded4e923..0000000000 --- a/subprojects/NitroSDK/include/nitro/ctrdg/ARM9/ctrdg_sram.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef NITRO_CTRDG_SRAM_H_ -#define NITRO_CTRDG_SRAM_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define CTRDG_AGB_SRAM_ADR 0x0A000000 -#define CTRDG_AGB_SRAM_SIZE_256K 0x00008000 -#define CTRDG_AGB_SRAM_SIZE_512K 0x00010000 - -#define CTRDG_AGB_SRAM_RETRY_MAX 3 - -extern void CTRDG_ReadAgbSram(u32 src, void * dst, u32 size); -extern void CTRDG_ReadAgbSramAsync(u32 src, void * dst, u32 size, CTRDG_TASK_FUNC callback); - -extern void CTRDG_WriteAgbSram(u32 dst, const void * src, u32 size); -extern void CTRDG_WriteAgbSramAsync(u32 dst, const void * src, u32 size, CTRDG_TASK_FUNC callback); - -extern u32 CTRDG_VerifyAgbSram(u32 tgt, const void * src, u32 size); -extern void CTRDG_VerifyAgbSramAsync(u32 tgt, const void * src, u32 size, CTRDG_TASK_FUNC callback); - -extern u32 CTRDG_WriteAndVerifyAgbSram(u32 dst, const void * src, u32 size); -extern void CTRDG_WriteAndVerifyAgbSramAsync(u32 dst, const void * src, u32 size, - CTRDG_TASK_FUNC callback); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/ctrdg/ARM9/ctrdg_task.h b/subprojects/NitroSDK/include/nitro/ctrdg/ARM9/ctrdg_task.h deleted file mode 100644 index b2110131ea..0000000000 --- a/subprojects/NitroSDK/include/nitro/ctrdg/ARM9/ctrdg_task.h +++ /dev/null @@ -1,48 +0,0 @@ -#ifndef NITRO_CTRDG_TASK_H_ -#define NITRO_CTRDG_TASK_H_ - -#include - -#define CTRDG_TASK_PRIORITY_DEFAULT 20 - -#define CTRDG_TASK_STACK_SIZE 1024 - -struct CTRDGTaskInfo_tag; - -typedef u32 (* CTRDG_TASK_FUNC) (struct CTRDGTaskInfo_tag *); - -typedef struct CTRDGTaskInfo_tag { - CTRDG_TASK_FUNC task; - CTRDG_TASK_FUNC callback; - u32 result; - u8 * data; - u8 * adr; - u32 offset; - u32 size; - u8 * dst; - u16 sec_num; - u8 busy; - u8 param[1]; -} CTRDGTaskInfo; - -typedef struct { - OSThread th[1]; - CTRDGTaskInfo * volatile list; - CTRDGTaskInfo end_task; -} CTRDGiTaskWork; - -void CTRDGi_InitTaskThread(void * p_work); - -BOOL CTRDGi_IsTaskAvailable(void); - -void CTRDGi_InitTaskInfo(CTRDGTaskInfo * pt); - -BOOL CTRDGi_IsTaskBusy(volatile const CTRDGTaskInfo * pt); - -void CTRDGi_SetTask(CTRDGTaskInfo * pt, CTRDG_TASK_FUNC task, CTRDG_TASK_FUNC callback); - -void CTRDGi_EndTaskThread(CTRDG_TASK_FUNC callback); - -void CTRDG_SetTaskThreadPriority(u32 priority); - -#endif diff --git a/subprojects/NitroSDK/include/nitro/ctrdg/common/ctrdg_common.h b/subprojects/NitroSDK/include/nitro/ctrdg/common/ctrdg_common.h deleted file mode 100644 index 288942a3bd..0000000000 --- a/subprojects/NitroSDK/include/nitro/ctrdg/common/ctrdg_common.h +++ /dev/null @@ -1,241 +0,0 @@ -#ifndef NITRO_CTRDG_COMMON_H_ -#define NITRO_CTRDG_COMMON_H_ - -#include -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define CTRDG_PXI_COMMAND_MASK 0x0000003f -#define CTRDG_PXI_COMMAND_SHIFT 0 -#define CTRDG_PXI_COMMAND_PARAM_MASK 0x01ffffc0 -#define CTRDG_PXI_COMMAND_PARAM_SHIFT 6 -#define CTRDG_PXI_FIXLEN_DATA_MASK 0x03ffffff -#define CTRDG_PXI_FIXLEN_DATA_SHIFT 0 -#define CTRDG_PXI_FLEXLEN_DATA_MASK 0x01ffffff -#define CTRDG_PXI_FLEXLEN_DATA_SHIFT 0 -#define CTRDG_PXI_FLEXLEN_CONTINUOUS_BIT 0x02000000 -#define CTRDG_PXI_PACKET_MAX 4 - -#define CTRDG_PXI_COMMAND_INIT_MODULE_INFO 0x0001 -#define CTRDG_PXI_COMMAND_TERMINATE 0x0002 -#define CTRDG_PXI_COMMAND_SET_PHI 0x0003 - -#define CTRDG_PXI_COMMAND_IMI_PACKET_SIZE 2 - -#define CTRDG_PXI_COMMAND_PULLED_OUT 0x0011 -#define CTRDG_PXI_COMMAND_SET_PHI_RESULT 0x0012 - -#ifdef SDK_ARM9 -#define CTRDG_LOCKED_BY_MYPROC_FLAG OS_MAINP_LOCKED_FLAG -#else -#define CTRDG_LOCKED_BY_MYPROC_FLAG OS_SUBP_LOCKED_FLAG -#endif - -#define CTRDG_SYSROM9_NINLOGO_ADR 0xffff0020 - -#define CTRDG_AGB_ROMHEADER_SIZE 0xc0 -#define CTRDG_AGB_NINLOGO_SIZE 0x9c - -#define CTRDG_IS_ROM_CODE 0x96 - -typedef enum { - CTRDG_PHI_CLOCK_LOW = MIi_PHI_CLOCK_LOW, - CTRDG_PHI_CLOCK_4MHZ = MIi_PHI_CLOCK_4MHZ, - CTRDG_PHI_CLOCK_8MHZ = MIi_PHI_CLOCK_8MHZ, - CTRDG_PHI_CLOCK_16MHZ = MIi_PHI_CLOCK_16MHZ -} CTRDGPhiClock; - -typedef struct { - u32 startAddress; - u8 nintendoLogo[0x9c]; - - char titleName[12]; - u32 gameCode; - u16 makerCode; - - u8 isRomCode; - - u8 machineCode; - u8 deviceType; - - u8 exLsiID[3]; - - u8 reserved_A[4]; - u8 softVersion; - u8 complement; - - u16 moduleID; -} CTRDGHeader; - -typedef struct { - union { - struct { - u8 bitID; - u8 numberID : 5; - u8 : 2; - u8 disableExLsiID : 1; - }; - u16 raw; - }; -} CTRDGModuleID; - -typedef struct { - CTRDGModuleID moduleID; - u8 exLsiID[3]; - u8 isAgbCartridge : 1; - u8 detectPullOut : 1; - u8 : 0; - u16 makerCode; - u32 gameCode; -} CTRDGModuleInfo; - -#ifdef SDK_ARM9 -typedef BOOL (* CTRDGPulledOutCallback) (void); -#endif - -void CTRDG_Init(void); - -BOOL CTRDG_IsPulledOut(void); - -BOOL CTRDG_IsExisting(void); - -BOOL CTRDG_IsBitID(u8 bitID); - -BOOL CTRDG_IsNumberID(u8 numberID); - -BOOL CTRDG_IsAgbCartridge(void); - -BOOL CTRDG_IsOptionCartridge(void); - -u32 CTRDG_GetAgbGameCode(void); - -u16 CTRDG_GetAgbMakerCode(void); - -BOOL CTRDG_IsAgbCartridgePulledOut(void); - -BOOL CTRDG_IsOptionCartridgePulledOut(void); - -#ifdef SDK_ARM9 -void CTRDG_SetPulledOutCallback(CTRDGPulledOutCallback callback); -#endif - -#ifdef SDK_ARM9 -void CTRDG_TerminateForPulledOut(void); -#endif - -void CTRDG_SendToARM7(void * arg); - -BOOL CTRDG_DmaCopy16(u32 dmaNo, const void * src, void * dest, u32 size); -BOOL CTRDG_DmaCopy32(u32 dmaNo, const void * src, void * dest, u32 size); - -BOOL CTRDG_CpuCopy8(const void * src, void * dest, u32 size); -BOOL CTRDG_CpuCopy16(const void * src, void * dest, u32 size); -BOOL CTRDG_CpuCopy32(const void * src, void * dest, u32 size); - -BOOL CTRDG_Read8(const u8 * address, u8 * rdata); -BOOL CTRDG_Read16(const u16 * address, u16 * rdata); -BOOL CTRDG_Read32(const u32 * address, u32 * rdata); - -BOOL CTRDG_Write8(u8 * address, u8 data); -BOOL CTRDG_Write16(u16 * address, u16 data); -BOOL CTRDG_Write32(u32 * address, u32 data); - -BOOL CTRDG_IsEnabled(void); - -void CTRDG_Enable(BOOL enable); - -void CTRDG_CheckEnabled(void); - -void CTRDG_CheckPulledOut(void); - -#ifdef SDK_ARM9 -void CTRDG_SetPhiClock(CTRDGPhiClock clock); -#endif - -#ifdef SDK_ARM9 -static inline CTRDGPhiClock CTRDG_GetPhiClock (void) -{ - return (CTRDGPhiClock)MIi_GetPhiClock(); -} -#endif - -typedef struct CTRDGRomCycle { - MICartridgeRomCycle1st c1; - MICartridgeRomCycle2nd c2; -} CTRDGRomCycle; - -typedef struct CTRDGLockByProc { - BOOL locked; - OSIntrMode irq; -} CTRDGLockByProc; - -void CTRDGi_InitCommon(void); -void CTRDGi_InitModuleInfo(void); -void CTRDGi_SendtoPxi(u32 data); -#if defined(SDK_ARM7) -BOOL CTRDGi_LockByProcessor(u16 lockID, CTRDGLockByProc * info); -#else -void CTRDGi_LockByProcessor(u16 lockID, CTRDGLockByProc * info); -#endif -void CTRDGi_UnlockByProcessor(u16 lockID, CTRDGLockByProc * info); -void CTRDGi_ChangeLatestAccessCycle(CTRDGRomCycle * r); -void CTRDGi_RestoreAccessCycle(CTRDGRomCycle * r); - -BOOL CTRDGi_IsBitIDAtInit(u8 bitID); -BOOL CTRDGi_IsNumberIDAtInit(u8 numberID); -BOOL CTRDGi_IsAgbCartridgeAtInit(void); -u32 CTRDGi_GetAgbGameCodeAtInit(void); -u16 CTRDGi_GetAgbMakerCodeAtInit(void); - -#define CTRDGi_GetHeaderAddr() ((CTRDGHeader *)HW_CTRDG_ROM) - -#define CTRDGi_GetModuleIDImageAddr() ((u16 *)(HW_CTRDG_ROM + 0x0001fffe)) - -#define CTRDGi_GetModuleInfoAddr() ((CTRDGModuleInfo *)HW_CTRDG_MODULE_INFO_BUF) - -#define CTRDGi_FORWARD_TYPE_DMA 0x00000000 -#define CTRDGi_FORWARD_TYPE_CPU 0x00000001 -#define CTRDGi_FORWARD_TYPE_MASK 0x00000001 - -#define CTRDGi_FORWARD_WIDTH_8 0x00000000 -#define CTRDGi_FORWARD_WIDTH_16 0x00000010 -#define CTRDGi_FORWARD_WIDTH_32 0x00000020 -#define CTRDGi_FORWARD_WIDTH_MASK 0x00000030 - -#define CTRDGi_FORWARD_DMA16 (CTRDGi_FORWARD_TYPE_DMA | CTRDGi_FORWARD_WIDTH_16) -#define CTRDGi_FORWARD_DMA32 (CTRDGi_FORWARD_TYPE_DMA | CTRDGi_FORWARD_WIDTH_32) -#define CTRDGi_FORWARD_CPU8 (CTRDGi_FORWARD_TYPE_CPU | CTRDGi_FORWARD_WIDTH_8) -#define CTRDGi_FORWARD_CPU16 (CTRDGi_FORWARD_TYPE_CPU | CTRDGi_FORWARD_WIDTH_16) -#define CTRDGi_FORWARD_CPU32 (CTRDGi_FORWARD_TYPE_CPU | CTRDGi_FORWARD_WIDTH_32) - -#define CTRDGi_ACCESS_DIR_WRITE 0x00000000 -#define CTRDGi_ACCESS_DIR_READ 0x00000001 -#define CTRDGi_ACCESS_DIR_MASK 0x00000001 - -#define CTRDGi_ACCESS_WIDTH_8 0x00000010 -#define CTRDGi_ACCESS_WIDTH_16 0x00000020 -#define CTRDGi_ACCESS_WIDTH_32 0x00000040 -#define CTRDGi_ACCESS_WIDTH_MASK 0x000000f0 - -#define CTRDGi_ACCESS_WRITE8 (CTRDGi_ACCESS_DIR_WRITE | CTRDGi_ACCESS_WIDTH_8) -#define CTRDGi_ACCESS_WRITE16 (CTRDGi_ACCESS_DIR_WRITE | CTRDGi_ACCESS_WIDTH_16) -#define CTRDGi_ACCESS_WRITE32 (CTRDGi_ACCESS_DIR_WRITE | CTRDGi_ACCESS_WIDTH_32) -#define CTRDGi_ACCESS_READ8 (CTRDGi_ACCESS_DIR_READ | CTRDGi_ACCESS_WIDTH_8) -#define CTRDGi_ACCESS_READ16 (CTRDGi_ACCESS_DIR_READ | CTRDGi_ACCESS_WIDTH_16) -#define CTRDGi_ACCESS_READ32 (CTRDGi_ACCESS_DIR_READ | CTRDGi_ACCESS_WIDTH_32) - -BOOL CTRDGi_CopyCommon(u32 dmaNo, const void * src, void * dest, u32 size, u32 forwardType); - -BOOL CTRDGi_AccessCommon(void * address, u32 data, void * rdata, u32 accessType); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/dgt/common.h b/subprojects/NitroSDK/include/nitro/dgt/common.h deleted file mode 100644 index ac812f0c4f..0000000000 --- a/subprojects/NitroSDK/include/nitro/dgt/common.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef NITRO_DGT_COMMON_H_ -#define NITRO_DGT_COMMON_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#define DGT_HASH1_DIGEST_SIZE (128 / 8) -#define DGT_HASH2_DIGEST_SIZE (160 / 8) - -#define DGT_HASH_DIGEST_SIZE_MAX DGT_HASH2_DIGEST_SIZE - -#define DGT_HASH_BLOCK_SIZE (512 / 8) - -#ifdef __cplusplus -} -#endif -#endif diff --git a/subprojects/NitroSDK/include/nitro/dgt/dgt.h b/subprojects/NitroSDK/include/nitro/dgt/dgt.h deleted file mode 100644 index 4edfe8b723..0000000000 --- a/subprojects/NitroSDK/include/nitro/dgt/dgt.h +++ /dev/null @@ -1,133 +0,0 @@ -#ifndef NITRO_DGT_DGT_H_ -#define NITRO_DGT_DGT_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct DGTHash1Context { - union { - struct { - unsigned long a, b, c, d; - }; - unsigned long state[4]; - }; - unsigned long long length; - union { - unsigned long buffer32[16]; - unsigned char buffer8[64]; - }; -} DGTHash1Context; - -#if defined(SDK_DGT_HASH2_CODE_SAFE) || defined(SDK_WIN32) || defined(SDK_FROM_TOOL) -typedef struct DGTHash2Context { - unsigned long Intermediate_Hash[5]; - unsigned long Length_Low; - unsigned long Length_High; - int Message_Block_Index; - unsigned char Message_Block[64]; - int Computed; - int Corrupted; -} DGTHash2Context; -#else -typedef struct DGTHash2Context { - unsigned long h0, h1, h2, h3, h4; - unsigned long Nl, Nh; - int num; - unsigned long data[64 / 4]; - int dummy[2]; -} DGTHash2Context; -#endif - -#ifdef SDK_DGT_HASH1_CODE_SAFE -void DGT_Hash1Reset(DGTHash1Context *); -void DGT_Hash1SetSource(DGTHash1Context *, unsigned char *, unsigned long); -void DGT_Hash1GetDigest_R(unsigned char digest[16], DGTHash1Context *); -#else -void DGT_Hash1Reset(DGTHash1Context *); -void DGT_Hash1SetSource(DGTHash1Context *, const void *, unsigned long); -void DGT_Hash1GetDigest_R(void * digest, DGTHash1Context *); -#endif - -#if defined(SDK_DGT_HASH2_CODE_SAFE) || defined(SDK_WIN32) || defined(SDK_FROM_TOOL) -void DGT_Hash2Reset(DGTHash2Context *); -void DGT_Hash2SetSource(DGTHash2Context *, unsigned char *, unsigned long); -void DGT_Hash2GetDigest(DGTHash2Context *, unsigned char digest[20]); -#else -void DGT_Hash2Reset(DGTHash2Context *); -void DGT_Hash2SetSource(DGTHash2Context *, const unsigned char *, unsigned long); -void DGT_Hash2GetDigest(DGTHash2Context *, unsigned char * digest); -#endif - -void DGT_Hash1CalcHmac( - void * digest, - void * bin_ptr, - int bin_len, - void * key_ptr, - int key_len -); - -void DGT_Hash2CalcHmac( - void * digest, - void * bin_ptr, - int bin_len, - void * key_ptr, - int key_len -); - -int DGT_Hash1CalcHmacForRms( - void * digest, - void * romh_ptr, - int romh_len, - void * mbin_ptr, - int mbin_len, - void * sbin_ptr, - int sbin_len, - void * key_ptr, - int key_len -); - -int DGT_Hash2CalcHmacForRms( - void * digest, - void * romh_ptr, - int romh_len, - void * mbin_ptr, - int mbin_len, - void * sbin_ptr, - int sbin_len, - void * key_ptr, - int key_len -); - -int DGT_Hash1TestHmacForRms( - void * digest, - void * romh_ptr, - int romh_len, - void * mbin_ptr, - int mbin_len, - void * sbin_ptr, - int sbin_len, - void * key_ptr, - int key_len -); - -int DGT_Hash2TestHmacForRms( - void * digest, - void * romh_ptr, - int romh_len, - void * mbin_ptr, - int mbin_len, - void * sbin_ptr, - int sbin_len, - void * key_ptr, - int key_len -); - -int DGT_SetOverlayTableMode(int flag); - -#ifdef __cplusplus -} -#endif -#endif diff --git a/subprojects/NitroSDK/include/nitro/dtcm_begin.h b/subprojects/NitroSDK/include/nitro/dtcm_begin.h deleted file mode 100644 index c110b9243f..0000000000 --- a/subprojects/NitroSDK/include/nitro/dtcm_begin.h +++ /dev/null @@ -1,9 +0,0 @@ -#include - -#if defined(SDK_CW) || defined(__MWERKS__) -#pragma section DTCM begin -#elif defined(SDK_ADS) -TO BE DEFINED -#elif defined(SDK_GCC) -TO BE DEFINED -#endif diff --git a/subprojects/NitroSDK/include/nitro/dtcm_end.h b/subprojects/NitroSDK/include/nitro/dtcm_end.h deleted file mode 100644 index 05ebba36bf..0000000000 --- a/subprojects/NitroSDK/include/nitro/dtcm_end.h +++ /dev/null @@ -1,7 +0,0 @@ -#if defined(SDK_CW) || defined(__MWERKS__) -#pragma section DTCM end -#elif defined(SDK_ADS) -TO BE DEFINED -#elif defined(SDK_GCC) -TO BE DEFINED -#endif diff --git a/subprojects/NitroSDK/include/nitro/env.h b/subprojects/NitroSDK/include/nitro/env.h deleted file mode 100644 index efa44a808d..0000000000 --- a/subprojects/NitroSDK/include/nitro/env.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef NITROSDK_ENV_H_ -#define NITROSDK_ENV_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef SDK_ARM9 -#include -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/env/env_system.h b/subprojects/NitroSDK/include/nitro/env/env_system.h deleted file mode 100644 index 70f3e13930..0000000000 --- a/subprojects/NitroSDK/include/nitro/env/env_system.h +++ /dev/null @@ -1,296 +0,0 @@ -#ifndef NITRO_ENV_SYSTEM_H_ -#define NITRO_ENV_SYSTEM_H_ - -#if !(defined(SDK_WIN32) || defined(SDK_FROM_TOOL)) -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define ENV_CLASS_NAME_MAX 64 -#define ENV_MEMBER_NAME_MAX 64 - -#define ENV_RESTYPE_RES_MASK 0xff -#define ENV_RESTYPE_OFFSET_MASK 0x100 - -#define ENV_RESTYPE_NONE ((ENVType)0x0) -#define ENV_RESTYPE_STRING ((ENVType)0x1) -#define ENV_RESTYPE_BINARY ((ENVType)0x2) -#define ENV_RESTYPE_S8 ((ENVType)0x3) -#define ENV_RESTYPE_U8 ((ENVType)0x4) -#define ENV_RESTYPE_S16 ((ENVType)0x5) -#define ENV_RESTYPE_U16 ((ENVType)0x6) -#define ENV_RESTYPE_S32 ((ENVType)0x7) -#define ENV_RESTYPE_U32 ((ENVType)0x8) -#define ENV_RESTYPE_BOOL ((ENVType)0x9) -#define ENV_RESTYPE_S64 ((ENVType)0xa) -#define ENV_RESTYPE_U64 ((ENVType)0xb) -#define ENV_RESTYPE_OFFSET_STRING ((ENVType)(ENV_RESTYPE_OFFSET_MASK | ENV_RESTYPE_STRING)) -#define ENV_RESTYPE_OFFSET_BINARY ((ENV_RESTYPE_OFFSET_MASK | ENV_RESTYPE_BINARY)) -#define ENV_RESTYPE_OFFSET_S64 ((ENVType)(ENV_RESTYPE_OFFSET_MASK | ENV_RESTYPE_S64)) -#define ENV_RESTYPE_OFFSET_U64 ((ENVType)(ENV_RESTYPE_OFFSET_MASK | ENV_RESTYPE_U64)) - -#define ENVi_RESTYPE_U64HALF 100 -#define ENVi_RESTYPE_LINK 255 - -#define ENVi_DUMMY_FOR_U64 "@DUMMY@" - -#define ENV_STRING(X) sizeof(X), ENV_RESTYPE_STRING, (void *)(X) -#define ENV_BINARY(X) sizeof(X) - 1, ENV_RESTYPE_BINARY, (void *)(X) -#define ENV_S8(X) sizeof(s8), ENV_RESTYPE_S8, (void *)(X) -#define ENV_U8(X) sizeof(u8), ENV_RESTYPE_U8, (void *)(X) -#define ENV_S16(X) sizeof(s16), ENV_RESTYPE_S16, (void *)(X) -#define ENV_U16(X) sizeof(u16), ENV_RESTYPE_U16, (void *)(X) -#define ENV_S32(X) sizeof(s32), ENV_RESTYPE_S32, (void *)(X) -#define ENV_U32(X) sizeof(u32), ENV_RESTYPE_U32, (void *)(X) -#define ENV_BOOL(X) sizeof(BOOL), ENV_RESTYPE_BOOL, (void *)(X) - -#define ENV_S64(X) sizeof(u32), ENV_RESTYPE_S64, (void *)((X) & 0xffffffff), \ - ENVi_DUMMY_FOR_U64, sizeof(u32), ENVi_RESTYPE_U64HALF, (void *)((X) >> 32) - -#define ENV_U64(X) sizeof(u32), ENV_RESTYPE_U64, (void *)((X) & 0xffffffff), \ - ENVi_DUMMY_FOR_U64, sizeof(u32), ENVi_RESTYPE_U64HALF, (void *)((X) >> 32) - -#define ENV_RESOURCE_START {NULL, 0, ENVi_RESTYPE_LINK, NULL} -#define ENV_RESOURCE_END {NULL, 0, ENV_RESTYPE_NONE, NULL} - -#define ENV_RESOURCE_SET_MAX 8 - -typedef u16 ENVType; - -typedef struct ENVResource ENVResource; -struct ENVResource { - char * name; - u16 len; - ENVType type; - void * ptr; -}; - -typedef struct ENVResourceSetLink ENVResourceSetLink; -struct ENVResourceSetLink { - ENVResourceSetLink * next; - ENVResource * array; -}; - -typedef struct ENVResourceIter ENVResourceIter; -struct ENVResourceIter { - ENVResourceSetLink * link; - ENVResource * ptr; - int count; - - void * supData; -}; - -static inline char * ENV_GetResourceName (ENVResource * res) -{ - return res->name; -} -static inline u16 ENV_GetResourceLen (ENVResource * res) -{ - return res->len; -} -static inline ENVType ENV_GetResourceType (ENVResource * res) -{ - return res->type; -} -static inline void * ENV_GetResourcePtr (ENVResource * res) -{ - return res->ptr; -} - -extern void ENV_Init(void); - -extern void ENV_AppendResourceSet(ENVResource * resSet); - -extern void ENV_PrependResourceSet(ENVResource * resSet); - -extern void ENV_InsertResourceSet(ENVResource * standardResSet, ENVResource * resSet); - -extern void ENV_SetResourceSet(ENVResource * resSet); - -extern ENVResourceSetLink * ENV_GetResourceSetLinkHead(void); - -extern ENVResourceSetLink * ENV_GetNextResourceSet(ENVResourceSetLink * link); - -extern void ENV_SetClass(const char * className); - -extern char * ENV_GetClass(void); - -extern ENVResource * ENVi_SearchByMemberName(const char * memberName, ENVResource ** resSetPtr); - -static inline ENVResource * ENV_SearchByMemberName (const char * memberName) -{ - return ENVi_SearchByMemberName(memberName, NULL); -} - -extern ENVResource * ENVi_SearchByFullName(const char * fullName, ENVResource ** resSetPtr); - -static inline ENVResource * ENV_SearchByFullName (const char * fullName) -{ - return ENVi_SearchByFullName(fullName, NULL); -} - -extern ENVResource * ENVi_Search(const char * name, ENVResource ** resSetPtr); - -static inline ENVResource * ENV_Search (const char * name) -{ - return ENVi_Search(name, NULL); -} - -extern void * ENVi_GetPtrAndLength(const char * name, int * len); - -static inline void * ENV_GetPtr (const char * name) -{ - return ENVi_GetPtrAndLength(name, NULL); -} - -extern ENVType ENV_GetType(const char * name); - -extern int ENV_GetSize(const char * name); - -extern ENVResource * ENV_GetBelongingResourceSet(ENVResource * res); - -static inline BOOL ENV_GetString (const char * name, char ** retPtr) -{ - char * strPtr = (char *)ENV_GetPtr(name); - *retPtr = strPtr; - return (strPtr != NULL); -} - -static inline BOOL ENV_GetStringAndLength (const char * name, char ** retPtr, int * len) -{ - char * strPtr = (char *)ENVi_GetPtrAndLength(name, len); - *retPtr = strPtr; - return (strPtr != NULL); -} - -static inline BOOL ENV_GetBinary (const char * name, void ** retPtr) -{ - void * binPtr = (void *)ENV_GetPtr(name); - *retPtr = binPtr; - return (binPtr != NULL); -} - -static inline BOOL ENV_GetBinaryAndSize (const char * name, void ** retPtr, int * size) -{ - void * binPtr = (void *)ENVi_GetPtrAndLength(name, size); - *retPtr = binPtr; - return (binPtr != NULL); -} - -static inline BOOL ENV_GetU8 (const char * name, u8 * retVal) -{ - int len; - u32 val = (u32)ENVi_GetPtrAndLength(name, &len); - if (!len) { - return FALSE; - } else { - *retVal = (u8)val; - return TRUE; - } -} - -static inline BOOL ENV_GetS8 (const char * name, s8 * retVal) -{ - int len; - u32 val = (u32)ENVi_GetPtrAndLength(name, &len); - if (!len) { - return FALSE; - } else { - *retVal = (s8)val; - return TRUE; - } -} - -static inline BOOL ENV_GetU16 (const char * name, u16 * retVal) -{ - int len; - u32 val = (u32)ENVi_GetPtrAndLength(name, &len); - if (!len) { - return FALSE; - } else { - *retVal = (u16)val; - return TRUE; - } -} - -static inline BOOL ENV_GetS16 (const char * name, s16 * retVal) -{ - int len; - u32 val = (u32)ENVi_GetPtrAndLength(name, &len); - if (!len) { - return FALSE; - } else { - *retVal = (s16)val; - return TRUE; - } -} - -static inline BOOL ENV_GetU32 (const char * name, u32 * retVal) -{ - int len; - u32 val = (u32)ENVi_GetPtrAndLength(name, &len); - if (!len) { - return FALSE; - } else { - *retVal = (u32)val; - return TRUE; - } -} - -static inline BOOL ENV_GetS32 (const char * name, s32 * retVal) -{ - int len; - u32 val = (u32)ENVi_GetPtrAndLength(name, &len); - if (!len) { - return FALSE; - } else { - *retVal = (s32)val; - return TRUE; - } -} - -static inline BOOL ENV_GetBOOL (const char * name, BOOL * retVal) -{ - int len; - u32 val = (u32)ENVi_GetPtrAndLength(name, &len); - if (!len) { - return FALSE; - } else { - *retVal = (BOOL)(val ? TRUE : FALSE); - return TRUE; - } -} - -extern BOOL ENV_GetU64(const char * name, u64 * retVal); - -static inline BOOL ENV_GetS64 (const char * name, s64 * retVal) -{ - return ENV_GetU64(name, (u64 *)retVal); -} - -extern void ENV_InitIter(ENVResourceIter * iter); - -extern ENVResource * ENV_SearchByClass(ENVResourceIter * iter, const char * className); - -extern ENVResource * ENV_SearchByMember(ENVResourceIter * iter, const char * memberName); - -extern ENVResource * ENV_SearchByType(ENVResourceIter * iter, ENVType type); - -extern ENVResource * ENV_SearchByPartialName(ENVResourceIter * iter, const char * partialName); - -extern void ENV_SetResoruceSetArray(ENVResource * array[]); - -static inline ENVResource * ENV_GetLastResourceSetFromIter (ENVResourceIter * iter) -{ - SDK_ASSERT(iter); - return (iter->link) ? iter->link->array : NULL; -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/exi.h b/subprojects/NitroSDK/include/nitro/exi.h deleted file mode 100644 index 95ceddffd8..0000000000 --- a/subprojects/NitroSDK/include/nitro/exi.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef NITRO_EXI_H_ -#define NITRO_EXI_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef SDK_ARM9 - -#else -#include -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/exi/ARM7/genPort.h b/subprojects/NitroSDK/include/nitro/exi/ARM7/genPort.h deleted file mode 100644 index 373fb5b3b3..0000000000 --- a/subprojects/NitroSDK/include/nitro/exi/ARM7/genPort.h +++ /dev/null @@ -1,81 +0,0 @@ -#ifndef NITRO_EXI_GENPORT_H_ -#define NITRO_EXI_GENPORT_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -typedef enum { - EXI_GPIOIF_SERIAL = 0x0000, - EXI_GPIOIF_UNDEF = REG_EXI_RCNT0_L_RE0_MASK, - EXI_GPIOIF_GPIO = REG_EXI_RCNT0_L_RE1_MASK, - EXI_GPIOIF_JOY = REG_EXI_RCNT0_L_RE1_MASK | REG_EXI_RCNT0_L_RE0_MASK -} EXIGpioIF; - -#define EXI_GPIOIF_MASK (REG_EXI_RCNT0_L_RE1_MASK | REG_EXI_RCNT0_L_RE0_MASK) - -#define EXI_GPIO_PADX REG_EXI_RCNT0_H_DATA_R0_MASK -#define EXI_GPIO_PADY REG_EXI_RCNT0_H_DATA_R1_MASK -#define EXI_GPIO_PADDEBUG REG_EXI_RCNT0_H_DATA_R3_MASK -#define EXI_GPIO_TOUCHPANEL REG_EXI_RCNT0_H_DATA_R6_MASK -#define EXI_GPIO_GPCOMM_DAT REG_EXI_RCNT0_H_DATA_R7_MASK -#define EXI_GPIO_GPCOMM_CLK REG_EXI_RCNT1_DATA_RB_MASK - -#if defined(SDK_TEG) -#define EXI_GPIO_PADFOLD REG_EXI_RCNT0_H_DATA_R2_MASK -#elif defined(SDK_TS) -#define EXI_GPIO_PADFOLD REG_EXI_RCNT0_H_DATA_R7_MASK -#endif - -void EXIi_SelectRcnt(EXIGpioIF type); -void EXIi_SetBitRcnt0L(u16 mask, u16 data); -void EXIi_SetBitRcnt0H(u16 mask, u16 data); -void EXIi_SetBitRcnt1(u16 mask, u16 data); -u16 EXIi_GetBitRcnt0L(u16 mask); -u16 EXIi_GetBitRcnt0H(u16 mask); -u16 EXIi_GetBitRcnt1(u16 mask); -void EXIi_SendBitRcnt0L(u16 mask, u16 data); -void EXIi_SendBitRcnt0H(u16 mask, u16 data); -void EXIi_SendBitRcnt1(u16 mask, u16 data); -u16 EXIi_RecvBitRcnt0L(u16 mask); -u16 EXIi_RecvBitRcnt0H(u16 mask); -u16 EXIi_RecvBitRcnt1(u16 mask); - -static inline void EXIi_SetRcnt0L (u16 val) -{ - *(REGType16 *)REG_RCNT0_L_ADDR = val; -} - -static inline void EXIi_SetRcnt0H (u16 val) -{ - *(REGType16 *)REG_RCNT0_H_ADDR = val; -} - -static inline void EXIi_SetRcnt1 (u16 val) -{ - *(REGType16 *)REG_RCNT1_ADDR = val; -} - -static inline u16 EXIi_GetRcnt0L (void) -{ - return *(REGType16 *)REG_RCNT0_L_ADDR; -} - -static inline u16 EXIi_GetRcnt0H (void) -{ - return *(REGType16 *)REG_RCNT0_H_ADDR; -} - -static inline u16 EXIi_GetRcnt1 (void) -{ - return *(REGType16 *)REG_RCNT1_ADDR; -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/ext.h b/subprojects/NitroSDK/include/nitro/ext.h deleted file mode 100644 index 33af73fa2b..0000000000 --- a/subprojects/NitroSDK/include/nitro/ext.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef EXT_H_ -#define EXT_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/ext/ext_keycontrol.h b/subprojects/NitroSDK/include/nitro/ext/ext_keycontrol.h deleted file mode 100644 index 131fd9411f..0000000000 --- a/subprojects/NitroSDK/include/nitro/ext/ext_keycontrol.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef EXT_KEYCONTROL_H_ -#define EXT_KEYCONTROL_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct { - u16 key; - u16 count; -} EXTKeys; - -void EXT_AutoKeys(const EXTKeys * sequence, u16 * cont, u16 * trig); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/ext/ext_scrntest.h b/subprojects/NitroSDK/include/nitro/ext/ext_scrntest.h deleted file mode 100644 index be0253bc2d..0000000000 --- a/subprojects/NitroSDK/include/nitro/ext/ext_scrntest.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef EXT_SCRNTEST_H_ -#define EXT_SCRNTEST_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -void EXT_Printf(const char * fmt, ...); -void EXT_CompPrint(const char * src1, const char * src2_fmt, ...); -void EXT_TestScreenShot(u32 testFrames, u32 checkSum); -void EXT_TestTickCounter(); -void EXT_TestResetCounter(); -void EXT_TestSetVRAMForScreenShot(GXVRamLCDC vram); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/fs.h b/subprojects/NitroSDK/include/nitro/fs.h deleted file mode 100644 index 9f81db48cf..0000000000 --- a/subprojects/NitroSDK/include/nitro/fs.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef NITRO_FS_H_ -#define NITRO_FS_H_ - -#include -#include - -#include -#include -#include - -#endif diff --git a/subprojects/NitroSDK/include/nitro/fs/archive.h b/subprojects/NitroSDK/include/nitro/fs/archive.h deleted file mode 100644 index 660eb14ae5..0000000000 --- a/subprojects/NitroSDK/include/nitro/fs/archive.h +++ /dev/null @@ -1,239 +0,0 @@ -#if !defined(NITRO_FS_ARCHIVE_H_) -#define NITRO_FS_ARCHIVE_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -enum { - FS_ARCHIVE_NAME_LEN_MAX = 3 -}; - -#define FS_ARCHIVE_FLAG_REGISTER 0x00000001 -#define FS_ARCHIVE_FLAG_LOADED 0x00000002 -#define FS_ARCHIVE_FLAG_TABLE_LOAD 0x00000004 -#define FS_ARCHIVE_FLAG_SUSPEND 0x00000008 -#define FS_ARCHIVE_FLAG_RUNNING 0x00000010 -#define FS_ARCHIVE_FLAG_CANCELING 0x00000020 -#define FS_ARCHIVE_FLAG_SUSPENDING 0x00000040 -#define FS_ARCHIVE_FLAG_UNLOADING 0x00000080 -#define FS_ARCHIVE_FLAG_IS_ASYNC 0x00000100 -#define FS_ARCHIVE_FLAG_IS_SYNC 0x00000200 - -#define FS_ARCHIVE_FLAG_USER_RESERVED_BIT 0x00010000 -#define FS_ARCHIVE_FLAG_USER_RESERVED_MASK 0xFFFF0000 - -typedef enum { - FS_COMMAND_ASYNC_BEGIN = 0, - FS_COMMAND_READFILE = FS_COMMAND_ASYNC_BEGIN, - FS_COMMAND_WRITEFILE, - FS_COMMAND_ASYNC_END, - - FS_COMMAND_SYNC_BEGIN = FS_COMMAND_ASYNC_END, - FS_COMMAND_SEEKDIR = FS_COMMAND_SYNC_BEGIN, - FS_COMMAND_READDIR, - FS_COMMAND_FINDPATH, - FS_COMMAND_GETPATH, - FS_COMMAND_OPENFILEFAST, - FS_COMMAND_OPENFILEDIRECT, - FS_COMMAND_CLOSEFILE, - FS_COMMAND_SYNC_END, - - FS_COMMAND_STATUS_BEGIN = FS_COMMAND_SYNC_END, - FS_COMMAND_ACTIVATE = FS_COMMAND_STATUS_BEGIN, - FS_COMMAND_IDLE, - FS_COMMAND_SUSPEND, - FS_COMMAND_RESUME, - FS_COMMAND_STATUS_END, - - FS_COMMAND_INVALID -} FSCommandType; - -#define FS_ARCHIVE_PROC_READFILE (1 << FS_COMMAND_READFILE) -#define FS_ARCHIVE_PROC_WRITEFILE (1 << FS_COMMAND_WRITEFILE) - -#define FS_ARCHIVE_PROC_ASYNC \ - (FS_ARCHIVE_PROC_READFILE | FS_ARCHIVE_PROC_WRITEFILE) - -#define FS_ARCHIVE_PROC_SEEKDIR (1 << FS_COMMAND_SEEKDIR) -#define FS_ARCHIVE_PROC_READDIR (1 << FS_COMMAND_READDIR) -#define FS_ARCHIVE_PROC_FINDPATH (1 << FS_COMMAND_FINDPATH) -#define FS_ARCHIVE_PROC_GETPATH (1 << FS_COMMAND_GETPATH) -#define FS_ARCHIVE_PROC_OPENFILEFAST (1 << FS_COMMAND_OPENFILEFAST) -#define FS_ARCHIVE_PROC_OPENFILEDIRECT (1 << FS_COMMAND_OPENFILEDIRECT) -#define FS_ARCHIVE_PROC_CLOSEFILE (1 << FS_COMMAND_CLOSEFILE) - -#define FS_ARCHIVE_PROC_SYNC \ - (FS_ARCHIVE_PROC_SEEKDIR | FS_ARCHIVE_PROC_READDIR | \ - FS_ARCHIVE_PROC_FINDPATH | FS_ARCHIVE_PROC_GETPATH | \ - FS_ARCHIVE_PROC_OPENFILEFAST | FS_ARCHIVE_PROC_OPENFILEDIRECT | FS_ARCHIVE_PROC_CLOSEFILE) - -#define FS_ARCHIVE_PROC_ACTIVATE (1 << FS_COMMAND_ACTIVATE) -#define FS_ARCHIVE_PROC_IDLE (1 << FS_COMMAND_IDLE) -#define FS_ARCHIVE_PROC_SUSPENDING (1 << FS_COMMAND_SUSPEND) -#define FS_ARCHIVE_PROC_RESUME (1 << FS_COMMAND_RESUME) - -#define FS_ARCHIVE_PROC_STATUS \ - (FS_ARCHIVE_PROC_ACTIVATE | FS_ARCHIVE_PROC_IDLE | \ - FS_ARCHIVE_PROC_SUSPENDING | FS_ARCHIVE_PROC_RESUME) - -#define FS_ARCHIVE_PROC_ALL (~0) - -typedef enum { - FS_RESULT_SUCCESS = 0, - - FS_RESULT_FAILURE, - - FS_RESULT_BUSY, - - FS_RESULT_CANCELED, - FS_RESULT_CANCELLED = FS_RESULT_CANCELED, - - FS_RESULT_UNSUPPORTED, - - FS_RESULT_ERROR, - - FS_RESULT_PROC_ASYNC, - - FS_RESULT_PROC_DEFAULT, - - FS_RESULT_PROC_UNKNOWN -} FSResult; - -struct FSFile; -struct FSFileLink; -struct FSArchiveFAT; -struct FSArchiveFNT; -struct FSArchive; - -typedef FSResult (* FS_ARCHIVE_PROC_FUNC) (struct FSFile *, FSCommandType); - -typedef FSResult (* FS_ARCHIVE_READ_FUNC) (struct FSArchive * p, void * dst, u32 pos, u32 size); -typedef FSResult (* FS_ARCHIVE_WRITE_FUNC) (struct FSArchive * p, const void * src, u32 pos, u32 size); - -typedef struct FSFileLink { - struct FSFile * prev; - struct FSFile * next; -} FSFileLink; - -typedef struct FSArchiveFAT { - u32 top; - u32 bottom; -} FSArchiveFAT; - -typedef struct FSArchiveFNT { - u32 start; - u16 index; - u16 parent; -} FSArchiveFNT; - -typedef struct FSArchive { - union { - char ptr[FS_ARCHIVE_NAME_LEN_MAX + 1]; - u32 pack; - } name; - - struct FSArchive * next; - struct FSArchive * prev; - - OSThreadQueue sync_q; - OSThreadQueue stat_q; - u32 flag; - - FSFileLink list; - - u32 base; - u32 fat; - u32 fat_size; - u32 fnt; - u32 fnt_size; - u32 fat_bak; - u32 fnt_bak; - void * load_mem; - - FS_ARCHIVE_READ_FUNC read_func; - FS_ARCHIVE_WRITE_FUNC write_func; - - FS_ARCHIVE_READ_FUNC table_func; - - FS_ARCHIVE_PROC_FUNC proc; - u32 proc_flag; -} FSArchive; - -void FS_InitArchive(FSArchive * p_arc); - -static inline const char * FS_GetArchiveName (const FSArchive * p_arc) -{ - return p_arc->name.ptr; -} - -static inline u32 FS_GetArchiveBase (const FSArchive * p_arc) -{ - return p_arc->base; -} - -static inline u32 FS_GetArchiveFAT (const FSArchive * p_arc) -{ - return p_arc->fat; -} - -static inline u32 FS_GetArchiveFNT (const FSArchive * p_arc) -{ - return p_arc->fnt; -} - -static inline u32 FS_GetArchiveOffset (const FSArchive * p_arc, u32 pos) -{ - return p_arc->base + pos; -} - -static inline BOOL FS_IsArchiveLoaded (volatile const FSArchive * p_arc) -{ - return (p_arc->flag & FS_ARCHIVE_FLAG_LOADED) ? TRUE : FALSE; -} - -static inline BOOL FS_IsArchiveTableLoaded (volatile const FSArchive * p_arc) -{ - return (p_arc->flag & FS_ARCHIVE_FLAG_TABLE_LOAD) ? TRUE : FALSE; -} - -static inline BOOL FS_IsArchiveSuspended (volatile const FSArchive * p_arc) -{ - return (p_arc->flag & FS_ARCHIVE_FLAG_SUSPEND) ? TRUE : FALSE; -} - -FSArchive * FS_FindArchive(const char * name, int name_len); - -BOOL FS_RegisterArchiveName(FSArchive * p_arc, const char * name, u32 name_len); - -void FS_ReleaseArchiveName(FSArchive * p_arc); - -BOOL FS_LoadArchive(FSArchive * p_arc, u32 base, - u32 fat, u32 fat_size, u32 fnt, u32 fnt_size, - FS_ARCHIVE_READ_FUNC read_func, FS_ARCHIVE_WRITE_FUNC write_func); - -BOOL FS_UnloadArchive(FSArchive * p_arc); - -u32 FS_LoadArchiveTables(FSArchive * p_arc, void * p_mem, u32 max_size); - -void * FS_UnloadArchiveTables(FSArchive * p_arc); - -BOOL FS_SuspendArchive(FSArchive * p_arc); - -BOOL FS_ResumeArchive(FSArchive * p_arc); - -void FS_SetArchiveProc(struct FSArchive * p_arc, FS_ARCHIVE_PROC_FUNC proc, u32 flags); - -void FS_NotifyArchiveAsyncEnd(FSArchive * p_arc, FSResult ret); - -void FSi_EndArchive(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/fs/file.h b/subprojects/NitroSDK/include/nitro/fs/file.h deleted file mode 100644 index 4794fe5207..0000000000 --- a/subprojects/NitroSDK/include/nitro/fs/file.h +++ /dev/null @@ -1,306 +0,0 @@ -#if !defined(NITRO_FS_FILE_H_) -#define NITRO_FS_FILE_H_ - -#include -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define FS_FILE_NAME_MAX 127 - -#define FS_DMA_NOT_USE ((u32) ~0) - -typedef enum { - FS_SEEK_SET, - FS_SEEK_CUR, - FS_SEEK_END -} FSSeekFileMode; - -#define FS_FILE_STATUS_BUSY 0x00000001 -#define FS_FILE_STATUS_CANCEL 0x00000002 -#define FS_FILE_STATUS_SYNC 0x00000004 -#define FS_FILE_STATUS_ASYNC 0x00000008 -#define FS_FILE_STATUS_IS_FILE 0x00000010 -#define FS_FILE_STATUS_IS_DIR 0x00000020 -#define FS_FILE_STATUS_OPERATING 0x00000040 - -#define FS_FILE_STATUS_USER_RESERVED_BIT 0x00010000 -#define FS_FILE_STATUS_USER_RESERVED_MASK 0xFFFF0000 - -struct FSFile; - -typedef struct { - struct FSArchive * arc; - u16 own_id; - u16 index; - u32 pos; -} FSDirPos; - -typedef struct { - struct FSArchive * arc; - u32 file_id; -} FSFileID; - -typedef struct { - union { - FSFileID file_id; - FSDirPos dir_id; - }; - u32 is_directory; - u32 name_len; - char name[FS_FILE_NAME_MAX + 1]; -} FSDirEntry; - -typedef struct { - FSDirPos pos; -} FSSeekDirInfo; - -typedef struct { - FSDirEntry * p_entry; - BOOL skip_string; -} FSReadDirInfo; - -typedef struct { - FSDirPos pos; - const char * path; - BOOL find_directory; - union { - FSFileID * file; - FSDirPos * dir; - } result; -} FSFindPathInfo; - -typedef struct { - u8 * buf; - u32 buf_len; - u16 total_len; - u16 dir_id; -} FSGetPathInfo; - -typedef struct { - FSFileID id; -} FSOpenFileFastInfo; - -typedef struct { - u32 top; - u32 bottom; - u32 index; -} FSOpenFileDirectInfo; - -typedef struct { - u32 reserved; -} FSCloseFileInfo; - -typedef struct { - void * dst; - u32 len_org; - u32 len; -} FSReadFileInfo; - -typedef struct { - const void * src; - u32 len_org; - u32 len; -} FSWriteFileInfo; - -typedef struct FSFile { - FSFileLink link; - struct FSArchive * arc; - - u32 stat; - FSCommandType command; - FSResult error; -#ifndef SDK_THREAD_INFINITY - OSThreadQueue queue[4 / sizeof(OSThreadQueue)]; -#else - OSThreadQueue queue[1]; -#endif - - union { - struct { - u32 own_id; - u32 top; - u32 bottom; - u32 pos; - } file; - - struct { - FSDirPos pos; - u32 parent; - } dir; - } prop; - - union { - FSReadFileInfo readfile; - FSWriteFileInfo writefile; - - FSSeekDirInfo seekdir; - FSReadDirInfo readdir; - FSFindPathInfo findpath; - FSGetPathInfo getpath; - FSOpenFileFastInfo openfilefast; - FSOpenFileDirectInfo openfiledirect; - FSCloseFileInfo closefile; - } arg; -} FSFile; - -void FS_Init(u32 default_dma_no); - -BOOL FS_IsAvailable(void); - -void FS_End(void); - -u32 FS_GetDefaultDMA(void); - -u32 FS_SetDefaultDMA(u32 dma_no); - -u32 FS_TryLoadTable(void * p_mem, u32 size); - -static inline u32 FS_GetTableSize (void) -{ - return FS_TryLoadTable(NULL, 0); -} - -static inline BOOL FS_LoadTable (void * p_mem, u32 size) -{ - return (FS_TryLoadTable(p_mem, size) <= size) ? TRUE : FALSE; -} - -static inline void * FS_UnloadTable (void) -{ - FSArchive * const p_arc = FS_FindArchive("rom", 3); - return FS_UnloadArchiveTables(p_arc); -} - -static inline BOOL FS_IsBusy (volatile const FSFile * p_file) -{ - return (p_file->stat & FS_FILE_STATUS_BUSY) ? TRUE : FALSE; -} - -static inline BOOL FS_IsCanceling (volatile const FSFile * p_file) -{ - return (p_file->stat & FS_FILE_STATUS_CANCEL) ? TRUE : FALSE; -} - -static inline BOOL FS_IsSucceeded (volatile const FSFile * p_file) -{ - return (p_file->error == FS_RESULT_SUCCESS) ? TRUE : FALSE; -} - -static inline BOOL FS_IsFile (volatile const FSFile * p_file) -{ - return (p_file->stat & FS_FILE_STATUS_IS_FILE) ? TRUE : FALSE; -} - -static inline BOOL FS_IsDir (volatile const FSFile * p_file) -{ - return (p_file->stat & FS_FILE_STATUS_IS_DIR) ? TRUE : FALSE; -} - -static inline BOOL FS_IsFileSyncMode (const volatile FSFile * p) -{ - return (p->stat & FS_FILE_STATUS_SYNC) ? TRUE : FALSE; -} - -static inline FSResult FS_GetResultCode (volatile const FSFile * p_file) -{ - return p_file->error; -} - -void FS_InitFile(FSFile * p_file); - -BOOL FS_OpenFile(FSFile * p_file, const char * path); - -BOOL FS_OpenFileFast(FSFile * p_file, FSFileID file_id); - -BOOL FS_ConvertPathToFileID(FSFileID * p_file_id, const char * path); - -BOOL FS_CloseFile(FSFile * p_file); - -BOOL FS_GetPathName(FSFile * p_file, char * buf, u32 len); - -s32 FS_GetPathLength(FSFile * p_file); - -static inline u32 FS_GetLength (const FSFile * p_file) -{ - return p_file->prop.file.bottom - p_file->prop.file.top; -} - -static inline u32 FS_GetPosition (const FSFile * p_file) -{ - return p_file->prop.file.pos - p_file->prop.file.top; -} - -s32 FS_ReadFile(FSFile * p_file, void * dst, s32 len); - -s32 FS_ReadFileAsync(FSFile * p_file, void * dst, s32 len); - -s32 FS_WriteFile(FSFile * p_file, const void * src, s32 len); - -s32 FS_WriteFileAsync(FSFile * p_file, const void * src, s32 len); - -BOOL FS_WaitAsync(FSFile * p_file); - -void FS_CancelFile(FSFile * p_file); - -BOOL FS_SeekFile(FSFile * p_file, s32 offset, FSSeekFileMode origin); - -static inline BOOL FS_SeekFileToBegin (FSFile * p_file) -{ - return FS_SeekFile(p_file, 0, FS_SEEK_SET); -} - -static inline BOOL FS_SeekFileToEnd (FSFile * p_file) -{ - return FS_SeekFile(p_file, 0, FS_SEEK_END); -} - -BOOL FS_ChangeDir(const char * path); - -BOOL FS_FindDir(FSFile * p_dir, const char * path); - -BOOL FS_ReadDir(FSFile * p_dir, FSDirEntry * p_entry); - -BOOL FS_TellDir(const FSFile * p_dir, FSDirPos * p_pos); - -BOOL FS_SeekDir(FSFile * p_dir, const FSDirPos * p_pos); - -BOOL FS_RewindDir(FSFile * p_dir); - -BOOL FS_OpenFileDirect(FSFile * p_file, FSArchive * p_arc, - u32 image_top, u32 image_bottom, u32 file_index); - -static inline FSArchive * FS_GetAttachedArchive (const FSFile * p_file) -{ - return p_file->arc; -} - -static inline u32 FS_GetFileImageTop (const FSFile * p_file) -{ - return p_file->prop.file.top; -} - -static inline u32 FS_GetFileImageBottom (const FSFile * p_file) -{ - return p_file->prop.file.bottom; -} - -BOOL FS_CreateFileFromRom(FSFile * p_file, u32 offset, u32 size); - -BOOL FS_CreateFileFromMemory(FSFile * p_file, void * buf, u32 size); - -static inline void FS_CreateReadServerThread (u32 priority) -{ - (void)CARD_SetThreadPriority(priority); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/fs/overlay.h b/subprojects/NitroSDK/include/nitro/fs/overlay.h deleted file mode 100644 index cdbd889e52..0000000000 --- a/subprojects/NitroSDK/include/nitro/fs/overlay.h +++ /dev/null @@ -1,86 +0,0 @@ -#if !defined(NITRO_FS_OVERLAY_H_) -#define NITRO_FS_OVERLAY_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef u32 FSOverlayID; - -#define FS_EXTERN_OVERLAY(name) extern u32 SDK_OVERLAY_ ## name ## _ID[1] - -#define FS_OVERLAY_ID(name) ((u32) & (SDK_OVERLAY_ ## name ## _ID)) - -typedef void (* FSOverlayInitFunc) (void); - -typedef struct { - u32 id; - u8 * ram_address; - u32 ram_size; - u32 bss_size; - - FSOverlayInitFunc * sinit_init; - FSOverlayInitFunc * sinit_init_end; - u32 file_id; - u32 compressed : 24; - u32 flag : 8; -} FSOverlayInfoHeader; - -typedef struct { - FSOverlayInfoHeader header; - MIProcessor target; - CARDRomRegion file_pos; -} FSOverlayInfo; - -BOOL FS_LoadOverlayInfo(FSOverlayInfo * p_ovi, MIProcessor target, FSOverlayID id); - -static inline u32 FS_GetOverlayTotalSize (const FSOverlayInfo * p_ovi) -{ - return (u32)(p_ovi->header.ram_size + p_ovi->header.bss_size); -} - -static inline u32 FS_GetOverlayImageSize (const FSOverlayInfo * p_ovi) -{ - return (u32)(p_ovi->header.ram_size); -} - -static inline void * FS_GetOverlayAddress (const FSOverlayInfo * p_ovi) -{ - return p_ovi->header.ram_address; -} - -FSFileID FS_GetOverlayFileID(const FSOverlayInfo * p_ovi); - -void FS_ClearOverlayImage(FSOverlayInfo * p_ovi); - -BOOL FS_LoadOverlayImage(FSOverlayInfo * p_ovi); - -BOOL FS_LoadOverlayImageAsync(FSOverlayInfo * p_ovi, FSFile * p_file); - -void FS_StartOverlay(FSOverlayInfo * p_ovi); - -void FS_EndOverlay(FSOverlayInfo * p_ovi); - -BOOL FS_UnloadOverlayImage(FSOverlayInfo * p_ovi); - -BOOL FS_LoadOverlay(MIProcessor target, FSOverlayID id); - -BOOL FS_UnloadOverlay(MIProcessor target, FSOverlayID id); - -void FS_AttachOverlayTable(MIProcessor target, const void * ptr, u32 len); - -static inline void FS_RegisterOverlayToDebugger (const FSOverlayInfo * p_ovi, const FSFile * p_file) -{ - (void)p_ovi; - (void)p_file; -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/fx/.gitignore b/subprojects/NitroSDK/include/nitro/fx/.gitignore deleted file mode 100644 index e0c047f42f..0000000000 --- a/subprojects/NitroSDK/include/nitro/fx/.gitignore +++ /dev/null @@ -1 +0,0 @@ -fx_const.h diff --git a/subprojects/NitroSDK/include/nitro/fx/fx.h b/subprojects/NitroSDK/include/nitro/fx/fx.h deleted file mode 100644 index 3bd594a01e..0000000000 --- a/subprojects/NitroSDK/include/nitro/fx/fx.h +++ /dev/null @@ -1,245 +0,0 @@ -#ifndef NITRO_FX_H_ -#define NITRO_FX_H_ - -#if !(defined(SDK_WIN32) || defined(SDK_FROM_TOOL)) -#include -#endif - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef s32 fx32; -#define FX32_SHIFT 12 -#define FX32_INT_SIZE 19 -#define FX32_DEC_SIZE 12 - -#define FX32_INT_MASK 0x7ffff000 -#define FX32_DEC_MASK 0x00000fff -#define FX32_SIGN_MASK 0x80000000 - -#define FX32_MAX ((fx32)0x7fffffff) -#define FX32_MIN ((fx32)0x80000000) - -#define FX_MUL(v1, v2) FX32_CAST(((fx64)(v1) * (v2) + 0x800LL) >> FX32_SHIFT) -#define FX_MUL32x64C(v1, v2) FX32_CAST(((v2) * (v1) + 0x80000000LL) >> 32) - -#define FX_FX32_TO_F32(x) ((f32)((x) / (f32)(1 << FX32_SHIFT))) -#define FX_F32_TO_FX32(x) ((fx32)(((x) > 0) ? \ - ((x) * (1 << FX32_SHIFT) + 0.5f) : \ - ((x) * (1 << FX32_SHIFT) - 0.5f))) - -#define FX32_CONST(x) FX_F32_TO_FX32(x) - -typedef s64 fx64; -#define FX64_SHIFT 12 -#define FX64_INT_SIZE 51 -#define FX64_DEC_SIZE 12 - -#define FX64_INT_MASK ((fx64)0x7ffffffffffff000) -#define FX64_DEC_MASK ((fx64)0x0000000000000fff) -#define FX64_SIGN_MASK ((fx64)0x8000000000000000) - -#define FX64_MAX ((fx64)0x7fffffffffffffff) -#define FX64_MIN ((fx64)0x8000000000000000) - -#define FX_FX64_TO_F32(x) ((f32)((x) / (f32)(1 << FX64_SHIFT))) -#define FX_F32_TO_FX64(x) ((fx64)(((x) > 0) ? \ - ((x) * (1 << FX32_SHIFT) + 0.5f) : \ - ((x) * (1 << FX32_SHIFT) - 0.5f))) - -#define FX64_CONST(x) FX_F32_TO_FX64(x) - -typedef s64 fx64c; -#define FX64C_SHIFT 32 -#define FX64C_INT_SIZE 31 -#define FX64C_DEC_SIZE 32 - -#define FX64C_INT_MASK ((fx64c)0x7fffffff00000000) -#define FX64C_DEC_MASK ((fx64c)0x00000000ffffffff) -#define FX64C_SIGN_MASK ((fx64c)0x8000000000000000) - -#define FX64C_MAX ((fx64c)0x7fffffffffffffff) -#define FX64C_MIN ((fx64c)0x8000000000000000) - -#define FX_FX64C_TO_F32(x) ((f32)((x) / (f32)((fx64c)1 << FX64C_SHIFT))) -#define FX_F32_TO_FX64C(x) ((fx64c)(((x) > 0) ? \ - ((x) * ((fx64c)1 << FX64C_SHIFT) + 0.5f) : \ - ((x) * ((fx64c)1 << FX64C_SHIFT) - 0.5f))) - -#define FX64C_CONST(x) FX_F32_TO_FX64C(x) - -typedef s16 fx16; -#define FX16_SHIFT 12 -#define FX16_INT_SIZE 3 -#define FX16_DEC_SIZE 12 - -#define FX16_INT_MASK 0x7000 -#define FX16_DEC_MASK 0x0fff -#define FX16_SIGN_MASK 0x8000 - -#define FX16_MAX ((fx16)0x7fff) - -#define FX16_MIN ((fx16)0x8000) - -#define FX_FX16_TO_F32(x) ((f32)((x) / (f32)(1 << FX16_SHIFT))) -#define FX_F32_TO_FX16(x) ((fx16)(((x) > 0) ? \ - (fx16)((x) * (1 << FX16_SHIFT) + 0.5f) : \ - (fx16)((x) * (1 << FX16_SHIFT) - 0.5f))) - -#define FX16_CONST(x) FX_F32_TO_FX16(x) - -typedef struct { - fx32 x; - fx32 y; - fx32 z; -} VecFx32; - -typedef struct { - fx16 x; - fx16 y; - fx16 z; -} VecFx16; - -#ifdef SDK_ADS -typedef struct { - fx32 _00, _01, _02, _03; - fx32 _10, _11, _12, _13; - fx32 _20, _21, _22, _23; - fx32 _30, _31, _32, _33; -} MtxFx44; -#else -typedef union { - struct { - fx32 _00, _01, _02, _03; - fx32 _10, _11, _12, _13; - fx32 _20, _21, _22, _23; - fx32 _30, _31, _32, _33; - }; - fx32 m[4][4]; - fx32 a[16]; -} MtxFx44; -#endif - -#ifdef SDK_ADS -typedef struct { - fx32 _00, _01, _02; - fx32 _10, _11, _12; - fx32 _20, _21, _22; - fx32 _30, _31, _32; -} MtxFx43; -#else -typedef union { - struct { - fx32 _00, _01, _02; - fx32 _10, _11, _12; - fx32 _20, _21, _22; - fx32 _30, _31, _32; - }; - fx32 m[4][3]; - fx32 a[12]; -} MtxFx43; -#endif - -#ifdef SDK_ADS -typedef struct { - fx32 _00, _01, _02; - fx32 _10, _11, _12; - fx32 _20, _21, _22; -} MtxFx33; -#else -typedef union { - struct { - fx32 _00, _01, _02; - fx32 _10, _11, _12; - fx32 _20, _21, _22; - }; - fx32 m[3][3]; - fx32 a[9]; -} MtxFx33; -#endif - -#ifdef SDK_ADS -typedef struct { - fx32 _00, _01; - fx32 _10, _11; -} MtxFx22; -#else -typedef union { - struct { - fx32 _00, _01; - fx32 _10, _11; - }; - fx32 m[2][2]; - fx32 a[4]; -} MtxFx22; -#endif - -#if !(defined(SDK_WIN32) || defined(SDK_FROM_TOOL)) - -void FX_Init(void); - -SDK_DECL_INLINE s32 FX_Whole(fx32 v); -SDK_DECL_INLINE fx32 FX_Floor(fx32 v); - -fx32 FX_Modf(fx32 x, fx32 * iPtr); - -SDK_INLINE s32 FX_Whole (fx32 v) -{ - return (s32)(v >> FX32_SHIFT); -} - -SDK_INLINE fx32 FX_Floor (fx32 v) -{ - return (fx32)(v & (FX32_INT_MASK | FX32_SIGN_MASK)); -} - -SDK_INLINE fx32 FX32_CAST (s64 res) -{ - SDK_WARNING(res >= FX32_MIN && res <= FX32_MAX, "FX_Mul: Overflow/Underflow"); - return (fx32)res; -} - -fx32 FX_MulFunc(fx32 v1, fx32 v2); - -SDK_DECL_INLINE fx32 FX_MulInline(fx32 v1, fx32 v2); - -SDK_INLINE fx32 FX_MulInline (fx32 v1, fx32 v2) -{ - return FX32_CAST(((s64)(v1) * v2 + 0x800LL) >> FX32_SHIFT); -} - -#ifndef FX_Mul -#ifdef SDK_CODE_ARM -#define FX_Mul(v1, v2) FX_MulInline(v1, v2) -#else -#define FX_Mul(v1, v2) FX_MulFunc(v1, v2) -#endif -#endif - -#ifndef FX_Mul32x64c -#ifdef SDK_CODE_ARM -#define FX_Mul32x64c(v32, v64c) FX_Mul32x64cInline(v32, v64c) -#else -#define FX_Mul32x64c(v32, v64c) FX_Mul32x64cFunc(v32, v64c) -#endif -#endif - -fx32 FX_Mul32x64cFunc(fx32 v32, fx64c v64c); -SDK_DECL_INLINE fx32 FX_Mul32x64cInline(fx32 v32, fx64c v64c); - -SDK_INLINE fx32 FX_Mul32x64cInline (fx32 v32, fx64c v64c) -{ - fx64c tmp = v64c * v32 + 0x80000000LL; - return FX32_CAST(tmp >> FX64C_SHIFT); -} - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/fx/fx_cp.h b/subprojects/NitroSDK/include/nitro/fx/fx_cp.h deleted file mode 100644 index 31fb79d19b..0000000000 --- a/subprojects/NitroSDK/include/nitro/fx/fx_cp.h +++ /dev/null @@ -1,78 +0,0 @@ -#ifndef NITRO_FX_CP_H_ -#define NITRO_FX_CP_H_ - -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -fx32 FX_Div(fx32 numer, fx32 denom); -fx64c FX_DivFx64c(fx32 numer, fx32 denom); -SDK_DECL_INLINE fx32 FX_Mod(fx32 numer, fx32 denom); -fx32 FX_Sqrt(fx32 x); -fx32 FX_Inv(fx32 denom); -fx64c FX_InvFx64c(fx32 denom); -fx32 FX_InvSqrt(fx32 x); - -void FX_DivAsync(fx32 numer, fx32 denom); -SDK_DECL_INLINE void FX_DivAsyncImm(fx32 numer, fx32 denom); -fx64c FX_GetDivResultFx64c(void); -fx32 FX_GetDivResult(void); -fx64c FX_GetDivRemainderFx64c(void); -fx32 FX_GetDivRemainder(void); - -void FX_InvAsync(fx32 denom); -SDK_DECL_INLINE void FX_InvAsyncImm(fx32 denom); -SDK_DECL_INLINE fx64c FX_GetInvResultFx64c(void); -SDK_DECL_INLINE fx32 FX_GetInvResult(void); - -void FX_SqrtAsync(fx32 x); -void FX_SqrtAsyncImm(fx32 x); -fx32 FX_GetSqrtResult(void); - -s32 FX_DivS32(s32 a, s32 b); -s32 FX_ModS32(s32 a, s32 b); - -#define FX_DIVISION_BY_ZERO(a, b) \ - SDK_WARNING(b != 0, "Division by zero(%d / %d)", a, b) - -SDK_INLINE void FX_InvAsyncImm (fx32 denom) -{ - SDK_ASSERT(!CP_IsDivBusy()); - FX_DIVISION_BY_ZERO(FX32_ONE, denom); - - CP_SetDivImm64_32((u64)FX32_ONE << 32, (u32)denom); -} - -SDK_INLINE fx64c FX_GetInvResultFx64c (void) -{ - return FX_GetDivResultFx64c(); -} - -SDK_INLINE fx32 FX_GetInvResult (void) -{ - return FX_GetDivResult(); -} - -SDK_INLINE void FX_DivAsyncImm (fx32 numer, fx32 denom) -{ - SDK_ASSERT(!CP_IsDivBusy()); - FX_DIVISION_BY_ZERO(numer, denom); - - CP_SetDivImm64_32((u64)numer << 32, (u32)denom); -} - -SDK_INLINE fx32 FX_Mod (fx32 numer, fx32 denom) -{ - return (fx32)FX_ModS32(numer, denom); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/fx/fx_mtx.h b/subprojects/NitroSDK/include/nitro/fx/fx_mtx.h deleted file mode 100644 index c5faa7b8fd..0000000000 --- a/subprojects/NitroSDK/include/nitro/fx/fx_mtx.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef NITRO_FX_MTX_H_ -#define NITRO_FX_MTX_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/fx/fx_mtx22.h b/subprojects/NitroSDK/include/nitro/fx/fx_mtx22.h deleted file mode 100644 index 4f8f1b9759..0000000000 --- a/subprojects/NitroSDK/include/nitro/fx/fx_mtx22.h +++ /dev/null @@ -1,60 +0,0 @@ -#ifndef NITRO_FX_MTX22_H_ -#define NITRO_FX_MTX22_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -SDK_DECL_INLINE void MTX_Identity22(MtxFx22 * pDst); -SDK_DECL_INLINE void MTX_Copy22(const MtxFx22 * pSrc, MtxFx22 * pDst); -SDK_DECL_INLINE void MTX_Transpose22(const MtxFx22 * pSrc, MtxFx22 * pDst); -SDK_DECL_INLINE void MTX_Rot22(MtxFx22 * pDst, fx32 sinVal, fx32 cosVal); -int MTX_Inverse22(const MtxFx22 * pSrc, MtxFx22 * pDst); -void MTX_Concat22(const MtxFx22 * a, const MtxFx22 * b, MtxFx22 * ab); -void MTX_ScaleApply22(const MtxFx22 * pSrc, MtxFx22 * pDst, fx32 x, fx32 y); - -void MTX_Identity22_(register MtxFx22 * pDst); -void MTX_Transpose22_(const register MtxFx22 * pSrc, register MtxFx22 * pDst); -void MTX_Scale22_(register MtxFx22 * pDst, register fx32 x, register fx32 y); -void MTX_Rot22_(register MtxFx22 * pDst, register fx32 sinVal, register fx32 cosVal); - -SDK_INLINE void MTX_Identity22 (MtxFx22 * pDst) -{ - SDK_NULL_ASSERT(pDst); - MTX_Identity22_(pDst); -} - -SDK_INLINE void MTX_Copy22 (const MtxFx22 * pSrc, MtxFx22 * pDst) -{ - SDK_NULL_ASSERT(pSrc); - SDK_NULL_ASSERT(pDst); - MI_Copy16B(pSrc, pDst); -} - -SDK_INLINE void MTX_Transpose22 (const MtxFx22 * pSrc, MtxFx22 * pDst) -{ - SDK_NULL_ASSERT(pSrc); - SDK_NULL_ASSERT(pDst); - MTX_Transpose22_(pSrc, pDst); -} - -SDK_INLINE void MTX_Scale22 (MtxFx22 * pDst, fx32 x, fx32 y) -{ - SDK_NULL_ASSERT(pDst); - MTX_Scale22_(pDst, x, y); -} - -SDK_INLINE void MTX_Rot22 (MtxFx22 * pDst, fx32 sinVal, fx32 cosVal) -{ - SDK_NULL_ASSERT(pDst); - MTX_Rot22_(pDst, sinVal, cosVal); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/fx/fx_mtx33.h b/subprojects/NitroSDK/include/nitro/fx/fx_mtx33.h deleted file mode 100644 index f64ff2c308..0000000000 --- a/subprojects/NitroSDK/include/nitro/fx/fx_mtx33.h +++ /dev/null @@ -1,98 +0,0 @@ -#ifndef NITRO_FX_MTX33_H_ -#define NITRO_FX_MTX33_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -SDK_DECL_INLINE void MTX_Identity33(MtxFx33 * pDst); -SDK_DECL_INLINE void MTX_Copy33(const MtxFx33 * pSrc, MtxFx33 * pDst); -SDK_DECL_INLINE void MTX_Copy33To43(const MtxFx33 * pSrc, MtxFx43 * pDst); -SDK_DECL_INLINE void MTX_Copy33To44(const MtxFx33 * pSrc, MtxFx44 * pDst); -SDK_DECL_INLINE void MTX_Transpose33(const MtxFx33 * pSrc, MtxFx33 * pDst); -SDK_DECL_INLINE void MTX_Scale33(MtxFx33 * pDst, fx32 x, fx32 y, fx32 z); -void MTX_ScaleApply33(const MtxFx33 * pSrc, MtxFx33 * pDst, fx32 x, fx32 y, fx32 z); -SDK_DECL_INLINE void MTX_RotX33(MtxFx33 * pDst, fx32 sinVal, fx32 cosVal); -SDK_DECL_INLINE void MTX_RotY33(MtxFx33 * pDst, fx32 sinVal, fx32 cosVal); -SDK_DECL_INLINE void MTX_RotZ33(MtxFx33 * pDst, fx32 sinVal, fx32 cosVal); -void MTX_RotAxis33(MtxFx33 * pDst, const VecFx32 * vec, fx32 sinVal, fx32 cosVal); -int MTX_Inverse33(const MtxFx33 * pSrc, MtxFx33 * pDst); -void MTX_Concat33(const MtxFx33 * a, const MtxFx33 * b, MtxFx33 * ab); -void MTX_MultVec33(const VecFx32 * vec, const MtxFx33 * m, VecFx32 * dst); - -void MTX_Identity33_(register MtxFx33 * pDst); -void MTX_Copy33To43_(const register MtxFx33 * pSrc, register MtxFx43 * pDst); -void MTX_Copy33To44_(const register MtxFx33 * pSrc, register MtxFx44 * pDst); -void MTX_Transpose33_(const register MtxFx33 * pSrc, register MtxFx33 * pDst); -void MTX_Scale33_(register MtxFx33 * pDst, register fx32 x, register fx32 y, register fx32 z); -void MTX_RotX33_(register MtxFx33 * pDst, register fx32 sinVal, register fx32 cosVal); -void MTX_RotY33_(register MtxFx33 * pDst, register fx32 sinVal, register fx32 cosVal); -void MTX_RotZ33_(register MtxFx33 * pDst, register fx32 sinVal, register fx32 cosVal); - -SDK_INLINE void MTX_Identity33 (MtxFx33 * pDst) -{ - SDK_NULL_ASSERT(pDst); - MTX_Identity33_(pDst); -} - -SDK_INLINE void MTX_Copy33 (const MtxFx33 * pSrc, MtxFx33 * pDst) -{ - SDK_NULL_ASSERT(pSrc); - SDK_NULL_ASSERT(pDst); - MI_Copy36B(pSrc, pDst); -} - -SDK_INLINE void MTX_Copy33To43 (const MtxFx33 * pSrc, MtxFx43 * pDst) -{ - SDK_NULL_ASSERT(pSrc); - SDK_NULL_ASSERT(pDst); - MTX_Copy33To43_(pSrc, pDst); -} - -SDK_INLINE void MTX_Copy33To44 (const MtxFx33 * pSrc, MtxFx44 * pDst) -{ - SDK_NULL_ASSERT(pSrc); - SDK_NULL_ASSERT(pDst); - MTX_Copy33To44_(pSrc, pDst); -} - -SDK_INLINE void MTX_Transpose33 (const MtxFx33 * pSrc, MtxFx33 * pDst) -{ - SDK_NULL_ASSERT(pSrc); - SDK_NULL_ASSERT(pDst); - MTX_Transpose33_(pSrc, pDst); -} - -SDK_INLINE void MTX_Scale33 (MtxFx33 * pDst, fx32 x, fx32 y, fx32 z) -{ - SDK_NULL_ASSERT(pDst); - MTX_Scale33_(pDst, x, y, z); -} - -SDK_INLINE void MTX_RotX33 (MtxFx33 * pDst, fx32 sinVal, fx32 cosVal) -{ - SDK_NULL_ASSERT(pDst); - MTX_RotX33_(pDst, sinVal, cosVal); -} - -SDK_INLINE void MTX_RotY33 (MtxFx33 * pDst, fx32 sinVal, fx32 cosVal) -{ - SDK_NULL_ASSERT(pDst); - MTX_RotY33_(pDst, sinVal, cosVal); -} - -SDK_INLINE void MTX_RotZ33 (MtxFx33 * pDst, fx32 sinVal, fx32 cosVal) -{ - SDK_NULL_ASSERT(pDst); - MTX_RotZ33_(pDst, sinVal, cosVal); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/fx/fx_mtx43.h b/subprojects/NitroSDK/include/nitro/fx/fx_mtx43.h deleted file mode 100644 index 12943f5113..0000000000 --- a/subprojects/NitroSDK/include/nitro/fx/fx_mtx43.h +++ /dev/null @@ -1,99 +0,0 @@ -#ifndef NITRO_FX_MTX43_H_ -#define NITRO_FX_MTX43_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -SDK_DECL_INLINE void MTX_Identity43(MtxFx43 * pDst); -SDK_DECL_INLINE void MTX_Copy43(const MtxFx43 * pSrc, MtxFx43 * pDst); -SDK_DECL_INLINE void MTX_Copy43To33(const MtxFx43 * pSrc, MtxFx33 * pDst); -SDK_DECL_INLINE void MTX_Copy43To44(const MtxFx43 * pSrc, MtxFx44 * pDst); -SDK_DECL_INLINE void MTX_Transpose43(const MtxFx43 * pSrc, MtxFx43 * pDst); -void MTX_TransApply43(const MtxFx43 * pSrc, MtxFx43 * pDst, fx32 x, fx32 y, fx32 z); -SDK_DECL_INLINE void MTX_Scale43(MtxFx43 * pDst, fx32 x, fx32 y, fx32 z); -void MTX_ScaleApply43(const MtxFx43 * pSrc, MtxFx43 * pDst, fx32 x, fx32 y, fx32 z); -SDK_DECL_INLINE void MTX_RotX43(MtxFx43 * pDst, fx32 sinVal, fx32 cosVal); -SDK_DECL_INLINE void MTX_RotY43(MtxFx43 * pDst, fx32 sinVal, fx32 cosVal); -SDK_DECL_INLINE void MTX_RotZ43(MtxFx43 * pDst, fx32 sinVal, fx32 cosVal); -void MTX_RotAxis43(MtxFx43 * pDst, const VecFx32 * vec, fx32 sinVal, fx32 cosVal); -int MTX_Inverse43(const MtxFx43 * pSrc, MtxFx43 * pDst); -void MTX_Concat43(const MtxFx43 * a, const MtxFx43 * b, MtxFx43 * ab); -void MTX_MultVec43(const VecFx32 * vec, const MtxFx43 * m, VecFx32 * dst); -void MTX_LookAt(const VecFx32 * camPos, const VecFx32 * camUp, const VecFx32 * target, MtxFx43 * mtx); - -void MTX_Identity43_(register MtxFx43 * pDst); -void MTX_Copy43To44_(register const MtxFx43 * pSrc, register MtxFx44 * pDst); -void MTX_Transpose43_(register const MtxFx43 * pSrc, register MtxFx43 * pDst); -void MTX_Scale43_(register MtxFx43 * pDst, register fx32 x, register fx32 y, register fx32 z); -void MTX_RotX43_(register MtxFx43 * pDst, register fx32 sinVal, register fx32 cosVal); -void MTX_RotY43_(register MtxFx43 * pDst, register fx32 sinVal, register fx32 cosVal); -void MTX_RotZ43_(register MtxFx43 * pDst, register fx32 sinVal, register fx32 cosVal); - -SDK_INLINE void MTX_Identity43 (MtxFx43 * pDst) -{ - SDK_NULL_ASSERT(pDst); - MTX_Identity43_(pDst); -} - -SDK_INLINE void MTX_Copy43 (const MtxFx43 * pSrc, MtxFx43 * pDst) -{ - SDK_NULL_ASSERT(pSrc); - SDK_NULL_ASSERT(pDst); - MI_Copy48B(pSrc, pDst); -} - -SDK_INLINE void MTX_Copy43To33 (const MtxFx43 * pSrc, MtxFx33 * pDst) -{ - SDK_NULL_ASSERT(pSrc); - SDK_NULL_ASSERT(pDst); - MI_Copy36B(pSrc, pDst); -} - -SDK_INLINE void MTX_Copy43To44 (const MtxFx43 * pSrc, MtxFx44 * pDst) -{ - SDK_NULL_ASSERT(pSrc); - SDK_NULL_ASSERT(pDst); - MTX_Copy43To44_(pSrc, pDst); -} - -SDK_INLINE void MTX_Transpose43 (const MtxFx43 * pSrc, MtxFx43 * pDst) -{ - SDK_NULL_ASSERT(pSrc); - SDK_NULL_ASSERT(pDst); - - MTX_Transpose43_(pSrc, pDst); -} - -SDK_INLINE void MTX_Scale43 (MtxFx43 * pDst, fx32 x, fx32 y, fx32 z) -{ - SDK_NULL_ASSERT(pDst); - MTX_Scale43_(pDst, x, y, z); -} - -SDK_INLINE void MTX_RotX43 (MtxFx43 * pDst, fx32 sinVal, fx32 cosVal) -{ - SDK_NULL_ASSERT(pDst); - MTX_RotX43_(pDst, sinVal, cosVal); -} - -SDK_INLINE void MTX_RotY43 (MtxFx43 * pDst, fx32 sinVal, fx32 cosVal) -{ - SDK_NULL_ASSERT(pDst); - MTX_RotY43_(pDst, sinVal, cosVal); -} - -SDK_INLINE void MTX_RotZ43 (MtxFx43 * pDst, fx32 sinVal, fx32 cosVal) -{ - SDK_NULL_ASSERT(pDst); - MTX_RotZ43_(pDst, sinVal, cosVal); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/fx/fx_mtx44.h b/subprojects/NitroSDK/include/nitro/fx/fx_mtx44.h deleted file mode 100644 index 6a793bd2bd..0000000000 --- a/subprojects/NitroSDK/include/nitro/fx/fx_mtx44.h +++ /dev/null @@ -1,119 +0,0 @@ -#ifndef NITRO_FX_MTX44_H_ -#define NITRO_FX_MTX44_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -SDK_DECL_INLINE void MTX_Identity44(MtxFx44 * pDst); -SDK_DECL_INLINE void MTX_Copy44To33(const MtxFx44 * pSrc, MtxFx33 * pDst); -SDK_DECL_INLINE void MTX_Copy44To43(const MtxFx44 * pSrc, MtxFx43 * pDst); -SDK_DECL_INLINE void MTX_Transpose44(const MtxFx44 * pSrc, MtxFx44 * pDst); -void MTX_TransApply44(const MtxFx44 * pSrc, MtxFx44 * pDst, fx32 x, fx32 y, fx32 z); -SDK_DECL_INLINE void MTX_Scale44(MtxFx44 * pDst, fx32 x, fx32 y, fx32 z); -void MTX_ScaleApply44(const MtxFx44 * pSrc, MtxFx44 * pDst, fx32 x, fx32 y, fx32 z); -SDK_DECL_INLINE void MTX_RotX44(MtxFx44 * pDst, fx32 sinVal, fx32 cosVal); -SDK_DECL_INLINE void MTX_RotY44(MtxFx44 * pDst, fx32 sinVal, fx32 cosVal); -SDK_DECL_INLINE void MTX_RotZ44(MtxFx44 * pDst, fx32 sinVal, fx32 cosVal); -void MTX_RotAxis44(MtxFx44 * pDst, const VecFx32 * vec, fx32 sinVal, fx32 cosVal); -void MTX_Concat44(const MtxFx44 * a, const MtxFx44 * b, MtxFx44 * ab); -void MTX_FrustumW(fx32 t, fx32 b, fx32 l, fx32 r, fx32 n, fx32 f, fx32 scaleW, MtxFx44 * mtx); -void MTX_PerspectiveW(fx32 fovySin, fx32 fovyCos, fx32 aspect, fx32 n, fx32 f, fx32 scaleW, MtxFx44 * mtx); -void MTX_OrthoW(fx32 t, fx32 b, fx32 l, fx32 r, fx32 n, fx32 f, fx32 scaleW, MtxFx44 * mtx); - -void MTX_Identity44_(register MtxFx44 * pDst); -void MTX_Copy44To33_(register const MtxFx44 * pSrc, register MtxFx33 * pDst); -void MTX_Copy44To43_(register const MtxFx44 * pSrc, register MtxFx43 * pDst); -void MTX_Transpose44_(register const MtxFx44 * pSrc, register MtxFx44 * pDst); -void MTX_Scale44_(register MtxFx44 * pDst, register fx32 x, register fx32 y, register fx32 z); -void MTX_RotX44_(register MtxFx44 * pDst, register fx32 sinVal, register fx32 cosVal); -void MTX_RotY44_(register MtxFx44 * pDst, register fx32 sinVal, register fx32 cosVal); -void MTX_RotZ44_(register MtxFx44 * pDst, register fx32 sinVal, register fx32 cosVal); - -SDK_INLINE void MTX_Identity44 (MtxFx44 * pDst) -{ - SDK_NULL_ASSERT(pDst); - MTX_Identity44_(pDst); -} - -SDK_INLINE void MTX_Copy44 (const MtxFx44 * pSrc, MtxFx44 * pDst) -{ - SDK_NULL_ASSERT(pSrc); - SDK_NULL_ASSERT(pDst); - - MI_Copy64B(pSrc, pDst); -} - -SDK_INLINE void MTX_Copy44To33 (const MtxFx44 * pSrc, MtxFx33 * pDst) -{ - SDK_NULL_ASSERT(pSrc); - SDK_NULL_ASSERT(pDst); - - MTX_Copy44To33_(pSrc, pDst); -} - -SDK_INLINE void MTX_Copy44To43 (const MtxFx44 * pSrc, MtxFx43 * pDst) -{ - SDK_NULL_ASSERT(pSrc); - SDK_NULL_ASSERT(pDst); - - MTX_Copy44To43_(pSrc, pDst); -} - -SDK_INLINE void MTX_Transpose44 (const MtxFx44 * pSrc, MtxFx44 * pDst) -{ - SDK_NULL_ASSERT(pSrc); - SDK_NULL_ASSERT(pDst); - - MTX_Transpose44_(pSrc, pDst); -} - -SDK_INLINE void MTX_Scale44 (MtxFx44 * pDst, fx32 x, fx32 y, fx32 z) -{ - SDK_NULL_ASSERT(pDst); - MTX_Scale44_(pDst, x, y, z); -} - -SDK_INLINE void MTX_RotX44 (MtxFx44 * pDst, fx32 sinVal, fx32 cosVal) -{ - SDK_NULL_ASSERT(pDst); - MTX_RotX44_(pDst, sinVal, cosVal); -} - -SDK_INLINE void MTX_RotY44 (MtxFx44 * pDst, fx32 sinVal, fx32 cosVal) -{ - SDK_NULL_ASSERT(pDst); - MTX_RotY44_(pDst, sinVal, cosVal); -} - -SDK_INLINE void MTX_RotZ44 (MtxFx44 * pDst, fx32 sinVal, fx32 cosVal) -{ - SDK_NULL_ASSERT(pDst); - MTX_RotZ44_(pDst, sinVal, cosVal); -} - -SDK_INLINE void MTX_Frustum (fx32 t, fx32 b, fx32 l, fx32 r, fx32 n, fx32 f, MtxFx44 * mtx) -{ - MTX_FrustumW(t, b, l, r, n, f, FX32_ONE, mtx); -} - -SDK_INLINE -void MTX_Perspective (fx32 fovySin, fx32 fovyCos, fx32 aspect, fx32 n, fx32 f, MtxFx44 * mtx) -{ - MTX_PerspectiveW(fovySin, fovyCos, aspect, n, f, FX32_ONE, mtx); -} - -SDK_INLINE void MTX_Ortho (fx32 t, fx32 b, fx32 l, fx32 r, fx32 n, fx32 f, MtxFx44 * mtx) -{ - MTX_OrthoW(t, b, l, r, n, f, FX32_ONE, mtx); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/fx/fx_trig.h b/subprojects/NitroSDK/include/nitro/fx/fx_trig.h deleted file mode 100644 index 4fc5161796..0000000000 --- a/subprojects/NitroSDK/include/nitro/fx/fx_trig.h +++ /dev/null @@ -1,58 +0,0 @@ -#ifndef NITRO_FXTRIG_H_ -#define NITRO_FXTRIG_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef SDK_FX_DYNAMIC_TABLE -extern fx16 FX_SinCosTable_[]; -#else -extern const fx16 FX_SinCosTable_[]; -#endif - -#define FX_DEG_TO_RAD(deg) ((fx32)((FX64C_TWOPI_360 * (deg) + 0x80000000LL) >> 32)) -#define FX_DEG_TO_IDX(deg) ((u16)((FX64C_65536_360 * (deg) + 0x80000000000LL) >> 44)) - -#define FX_RAD_TO_DEG(rad) ((fx32)((FX64C_360_TWOPI * (rad) + 0x80000000LL) >> 32)) -#define FX_RAD_TO_IDX(rad) ((u16)((FX64C_65536_TWOPI * (rad) + 0x80000000000LL) >> 44)) - -#define FX_IDX_TO_RAD(idx) ((fx32)((FX64C_TWOPI_65536 * (idx) + 0x80000LL) >> 20)) -#define FX_IDX_TO_DEG(idx) ((fx32)((FX64C_360_65536 * (idx) + 0x80000LL) >> 20)) - -SDK_DECL_INLINE fx16 FX_SinIdx(int idx); -SDK_DECL_INLINE fx16 FX_CosIdx(int idx); - -u16 FX_AtanIdx(fx32 x); -u16 FX_Atan2Idx(fx32 y, fx32 x); - -fx16 FX_Atan(fx32 x); -fx16 FX_Atan2(fx32 y, fx32 x); - -u16 FX_AsinIdx(fx32 x); -u16 FX_AcosIdx(fx32 x); - -fx64c FX_SinFx64c(fx32 rad); -fx64c FX_CosFx64c(fx32 rad); - -SDK_INLINE fx16 FX_SinIdx (int idx) -{ - SDK_MINMAX_ASSERT(idx, 0, 65535); - - return FX_SinCosTable_[((idx >> 4) << 1)]; -} - -SDK_INLINE fx16 FX_CosIdx (int idx) -{ - SDK_MINMAX_ASSERT(idx, 0, 65535); - - return FX_SinCosTable_[((idx >> 4) << 1) + 1]; -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/fx/fx_vec.h b/subprojects/NitroSDK/include/nitro/fx/fx_vec.h deleted file mode 100644 index 233757cfc2..0000000000 --- a/subprojects/NitroSDK/include/nitro/fx/fx_vec.h +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef NITRO_FX_VEC_H_ -#define NITRO_FX_VEC_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -void VEC_Add(const VecFx32 * a, const VecFx32 * b, VecFx32 * ab); -void VEC_Subtract(const VecFx32 * a, const VecFx32 * b, VecFx32 * ab); -fx32 VEC_DotProduct(const VecFx32 * a, const VecFx32 * b); -void VEC_CrossProduct(const VecFx32 * a, const VecFx32 * b, VecFx32 * axb); -fx32 VEC_Mag(const VecFx32 * v); -fx32 VEC_Distance(const VecFx32 * v1, const VecFx32 * v2); -void VEC_Normalize(const VecFx32 * pSrc, VecFx32 * pDst); -void VEC_MultAdd(fx32 a, const VecFx32 * v1, const VecFx32 * v2, VecFx32 * pDest); -void VEC_MultSubtract(fx32 a, const VecFx32 * v1, const VecFx32 * v2, VecFx32 * pDest); - -void VEC_Fx16Add(const VecFx16 * a, const VecFx16 * b, VecFx16 * ab); -void VEC_Fx16Subtract(const VecFx16 * a, const VecFx16 * b, VecFx16 * ab); -fx32 VEC_Fx16DotProduct(const VecFx16 * a, const VecFx16 * b); -void VEC_Fx16CrossProduct(const VecFx16 * a, const VecFx16 * b, VecFx16 * axb); -fx32 VEC_Fx16Mag(const VecFx16 * v); -fx32 VEC_Fx16Distance(const VecFx16 * v1, const VecFx16 * v2); -void VEC_Fx16Normalize(const VecFx16 * pSrc, VecFx16 * pDst); - -SDK_INLINE void VEC_Set (VecFx32 * a, fx32 x, fx32 y, fx32 z) -{ - SDK_NULL_ASSERT(a); - - a->x = x; - a->y = y; - a->z = z; -} - -SDK_INLINE void VEC_Fx16Set (VecFx16 * a, fx16 x, fx16 y, fx16 z) -{ - SDK_NULL_ASSERT(a); - - a->x = x; - a->y = y; - a->z = z; -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/gx.h b/subprojects/NitroSDK/include/nitro/gx.h deleted file mode 100644 index 3888f58def..0000000000 --- a/subprojects/NitroSDK/include/nitro/gx.h +++ /dev/null @@ -1,44 +0,0 @@ -#ifndef NITRO_GX_H_ -#define NITRO_GX_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef SDK_ARM9 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if !(defined(SDK_WIN32) || defined(SDK_FROM_TOOL)) - -#include -#include -#include - -#endif - -#else - -#if !(defined(SDK_WIN32) || defined(SDK_FROM_TOOL)) - -#include - -#endif - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/gx/g2.h b/subprojects/NitroSDK/include/nitro/gx/g2.h deleted file mode 100644 index 8e93d6a191..0000000000 --- a/subprojects/NitroSDK/include/nitro/gx/g2.h +++ /dev/null @@ -1,552 +0,0 @@ -#ifndef NITRO_G2_H_ -#define NITRO_G2_H_ - -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct { - u8 planeMask : 5; - u8 effect : 1; - u8 _reserve : 2; -} GXWndPlane; - -typedef enum { - GX_WND_PLANEMASK_NONE = 0x0000, - GX_WND_PLANEMASK_BG0 = 0x0001, - GX_WND_PLANEMASK_BG1 = 0x0002, - GX_WND_PLANEMASK_BG2 = 0x0004, - GX_WND_PLANEMASK_BG3 = 0x0008, - GX_WND_PLANEMASK_OBJ = 0x0010 -} GXWndPlaneMask; - -#define GX_WND_PLANEMASK_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, \ - GX_WND_PLANEMASK_NONE, \ - (GX_WND_PLANEMASK_BG0 | GX_WND_PLANEMASK_BG1 | \ - GX_WND_PLANEMASK_BG2 | GX_WND_PLANEMASK_BG3 | \ - GX_WND_PLANEMASK_OBJ)) - -typedef enum { - GX_BLEND_PLANEMASK_NONE = 0x0000, - GX_BLEND_PLANEMASK_BG0 = 0x0001, - GX_BLEND_PLANEMASK_BG1 = 0x0002, - GX_BLEND_PLANEMASK_BG2 = 0x0004, - GX_BLEND_PLANEMASK_BG3 = 0x0008, - GX_BLEND_PLANEMASK_OBJ = 0x0010, - GX_BLEND_PLANEMASK_BD = 0x0020 -} GXBlendPlaneMask; - -#define GX_BLEND_PLANEMASK_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, GX_BLEND_PLANEMASK_NONE, 0x3f) - -#define GX_MOSAICSIZE_ASSERT(x) SDK_MINMAX_ASSERT(x, 0, 15) - -#if !(defined(SDK_WIN32) || defined(SDK_FROM_TOOL)) - -static void G2_SetBG0Offset(int hOffset, int vOffset); -static void G2_SetBG1Offset(int hOffset, int vOffset); -static void G2_SetBG2Offset(int hOffset, int vOffset); -static void G2_SetBG3Offset(int hOffset, int vOffset); - -static void G2_SetBG2Affine(const MtxFx22 * mtx, int centerX, int centerY, int x1, int y1); -static void G2_SetBG3Affine(const MtxFx22 * mtx, int centerX, int centerY, int x1, int y1); - -static void G2_SetWnd0InsidePlane(int wnd, BOOL effect); -static void G2_SetWnd1InsidePlane(int wnd, BOOL effect); -static void G2_SetWndOutsidePlane(int wnd, BOOL effect); -static void G2_SetWndOBJInsidePlane(int wnd, BOOL effect); -static void G2_SetWnd0Position(int x1, int y1, int x2, int y2); -static void G2_SetWnd1Position(int x1, int y1, int x2, int y2); - -static void G2_SetBGMosaicSize(int hSize, int vSize); -static void G2_SetOBJMosaicSize(int hSize, int vSize); - -static void G2_BlendNone(void); -static void G2_SetBlendAlpha(int plane1, - int plane2, - int ev1, int ev2); - -static void G2_SetBlendBrightness(int plane, - int brightness); -static void G2_SetBlendBrightnessExt(int plane1, - int plane2, - int ev1, int ev2, int brightness); - -static void G2_ChangeBlendAlpha(int ev1, int ev2); -static void G2_ChangeBlendBrightness(int brightness); - -static void G2S_SetBG0Offset(int hOffset, int vOffset); -static void G2S_SetBG1Offset(int hOffset, int vOffset); -static void G2S_SetBG2Offset(int hOffset, int vOffset); -static void G2S_SetBG3Offset(int hOffset, int vOffset); - -static void G2S_SetBG2Affine(const MtxFx22 * mtx, int centerX, int centerY, int x1, int y1); -static void G2S_SetBG3Affine(const MtxFx22 * mtx, int centerX, int centerY, int x1, int y1); - -static void G2S_SetWnd0InsidePlane(int wnd, BOOL effect); -static void G2S_SetWnd1InsidePlane(int wnd, BOOL effect); -static void G2S_SetWndOutsidePlane(int wnd, BOOL effect); -static void G2S_SetWndOBJInsidePlane(int wnd, BOOL effect); -static void G2S_SetWnd0Position(int x1, int y1, int x2, int y2); -static void G2S_SetWnd1Position(int x1, int y1, int x2, int y2); - -static void G2S_SetBGMosaicSize(int hSize, int vSize); -static void G2S_SetOBJMosaicSize(int hSize, int vSize); - -static void G2S_BlendNone(void); -static void G2S_SetBlendAlpha(int plane1, - int plane2, - int ev1, int ev2); - -static void G2S_SetBlendBrightness(int plane, - int brightness); -static void G2S_SetBlendBrightnessExt(int plane1, - int plane2, - int ev1, int ev2, int brightness); - -static void G2S_ChangeBlendAlpha(int ev1, int ev2); -static void G2S_ChangeBlendBrightness(int brightness); - -void G2x_SetBGyAffine_(u32 addr, const MtxFx22 * mtx, int centerX, int centerY, int x1, int y1); -void G2x_SetBlendAlpha_(u32 addr, int plane1, int plane2, int ev1, int ev2); -void G2x_SetBlendBrightness_(u32 addr, int plane, int brightness); -void G2x_SetBlendBrightnessExt_(u32 addr, int plane1, int plane2, int ev1, int ev2, - int brightness); -void G2x_ChangeBlendBrightness_(u32 addr, int brightness); - -static inline void G2_SetBG0Offset (int hOffset, int vOffset) -{ - SDK_WARNING(0 == (reg_GX_DISPCNT & REG_GX_DISPCNT_BG02D3D_MASK), - "BG0 is in 3D mode now. call \'G3X_SetHOffset\'\n"); - - reg_G2_BG0OFS = (u32)(((hOffset << REG_G2_BG0OFS_HOFFSET_SHIFT) & REG_G2_BG0OFS_HOFFSET_MASK) | - ((vOffset << REG_G2_BG0OFS_VOFFSET_SHIFT) & REG_G2_BG0OFS_VOFFSET_MASK)); -} - -static inline void G2_SetBG1Offset (int hOffset, int vOffset) -{ - reg_G2_BG1OFS = (u32)(((hOffset << REG_G2_BG1OFS_HOFFSET_SHIFT) & REG_G2_BG1OFS_HOFFSET_MASK) | - ((vOffset << REG_G2_BG1OFS_VOFFSET_SHIFT) & REG_G2_BG1OFS_VOFFSET_MASK)); -} - -static inline void G2_SetBG2Offset (int hOffset, int vOffset) -{ -#ifdef SDK_DEBUG - { - u32 tmp = (reg_GX_DISPCNT & REG_GX_DISPCNT_BGMODE_MASK) >> REG_GX_DISPCNT_BGMODE_SHIFT; - SDK_WARNING((0 == tmp) || (1 == tmp) || (3 == tmp), - "G2_SetBG2Offset requires BG #2 to be text mode. Use G2_SetBG2Affine instead."); - } -#endif - reg_G2_BG2OFS = (u32)(((hOffset << REG_G2_BG2OFS_HOFFSET_SHIFT) & REG_G2_BG2OFS_HOFFSET_MASK) | - ((vOffset << REG_G2_BG2OFS_VOFFSET_SHIFT) & REG_G2_BG2OFS_VOFFSET_MASK)); -} - -static inline void G2_SetBG3Offset (int hOffset, int vOffset) -{ -#ifdef SDK_DEBUG - { - u32 tmp = (reg_GX_DISPCNT & REG_GX_DISPCNT_BGMODE_MASK) >> REG_GX_DISPCNT_BGMODE_SHIFT; - SDK_WARNING(0 == tmp, - "G2_SetBG3Offset requires BG #3 to be text mode. Use G2_SetBG3Affine instead."); - } -#endif - reg_G2_BG3OFS = (u32)(((hOffset << REG_G2_BG3OFS_HOFFSET_SHIFT) & REG_G2_BG3OFS_HOFFSET_MASK) | - ((vOffset << REG_G2_BG3OFS_VOFFSET_SHIFT) & REG_G2_BG3OFS_VOFFSET_MASK)); -} - -static inline void G2_SetWnd0InsidePlane (int wnd, BOOL effect) -{ - u32 tmp; - GX_WND_PLANEMASK_ASSERT(wnd); - - tmp = ((reg_G2_WININ & ~REG_G2_WININ_WIN0IN_MASK) | ((u32)wnd << REG_G2_WININ_WIN0IN_SHIFT)); - - if (effect) { - tmp |= (0x20 << REG_G2_WININ_WIN0IN_SHIFT); - } - - reg_G2_WININ = (u16)tmp; -} - -static inline GXWndPlane G2_GetWnd0InsidePlane (void) -{ - return *(volatile GXWndPlane *)(REG_WININ_ADDR); -} - -static inline void G2_SetWnd1InsidePlane (int wnd, BOOL effect) -{ - u32 tmp; - GX_WND_PLANEMASK_ASSERT(wnd); - - tmp = ((reg_G2_WININ & ~REG_G2_WININ_WIN1IN_MASK) | ((u32)wnd << REG_G2_WININ_WIN1IN_SHIFT)); - - if (effect) { - tmp |= (0x20 << REG_G2_WININ_WIN1IN_SHIFT); - } - - reg_G2_WININ = (u16)tmp; -} - -static inline GXWndPlane G2_GetWnd1InsidePlane (void) -{ - return *(volatile GXWndPlane *)(REG_WININ_ADDR + 1); -} - -static inline void G2_SetWndOutsidePlane (int wnd, BOOL effect) -{ - u32 tmp; - GX_WND_PLANEMASK_ASSERT(wnd); - - tmp = ((reg_G2_WINOUT & ~REG_G2_WINOUT_WINOUT_MASK) | ((u32)wnd << REG_G2_WINOUT_WINOUT_SHIFT)); - - if (effect) { - tmp |= (0x20 << REG_G2_WINOUT_WINOUT_SHIFT); - } - - reg_G2_WINOUT = (u16)tmp; -} - -static inline GXWndPlane G2_GetWndOutsidePlane (void) -{ - return *(volatile GXWndPlane *)(REG_WINOUT_ADDR); -} - -static inline void G2_SetWndOBJInsidePlane (int wnd, BOOL effect) -{ - u32 tmp; - GX_WND_PLANEMASK_ASSERT(wnd); - - tmp = ((reg_G2_WINOUT & ~REG_G2_WINOUT_OBJWININ_MASK) | - ((u32)wnd << REG_G2_WINOUT_OBJWININ_SHIFT)); - - if (effect) { - tmp |= (0x20 << REG_G2_WINOUT_OBJWININ_SHIFT); - } - - reg_G2_WINOUT = (u16)tmp; -} - -static inline GXWndPlane G2_GetWndOBJInsidePlane (void) -{ - return *(volatile GXWndPlane *)(REG_WINOUT_ADDR + 1); -} - -static inline void G2_SetWnd0Position (int x1, int y1, int x2, int y2) -{ - SDK_MINMAX_ASSERT(y1, 0, 192); - SDK_MINMAX_ASSERT(y2, 0, 192); - - reg_G2_WIN0H = (u16)(((x1 << REG_G2_WIN0H_LEFTX_SHIFT) & REG_G2_WIN0H_LEFTX_MASK) | - ((x2 << REG_G2_WIN0H_RIGHTX_SHIFT) & REG_G2_WIN0H_RIGHTX_MASK)); - - reg_G2_WIN0V = (u16)(((y1 << REG_G2_WIN0V_UPY_SHIFT) & REG_G2_WIN0V_UPY_MASK) | - ((y2 << REG_G2_WIN0V_DOWNY_SHIFT) & REG_G2_WIN0V_DOWNY_MASK)); -} - -static inline void G2_SetWnd1Position (int x1, int y1, int x2, int y2) -{ - SDK_MINMAX_ASSERT(y1, 0, 192); - SDK_MINMAX_ASSERT(y2, 0, 192); - - reg_G2_WIN1H = (u16)(((x1 << REG_G2_WIN1H_LEFTX_SHIFT) & REG_G2_WIN1H_LEFTX_MASK) | - ((x2 << REG_G2_WIN1H_RIGHTX_SHIFT) & REG_G2_WIN1H_RIGHTX_MASK)); - - reg_G2_WIN1V = (u16)(((y1 << REG_G2_WIN1V_UPY_SHIFT) & REG_G2_WIN1V_UPY_MASK) | - ((y2 << REG_G2_WIN1V_DOWNY_SHIFT) & REG_G2_WIN1V_DOWNY_MASK)); -} - -static inline void G2_SetBGMosaicSize (int hSize, int vSize) -{ - GX_MOSAICSIZE_ASSERT(hSize); - GX_MOSAICSIZE_ASSERT(vSize); - - *((vu8 *)REG_MOSAIC_ADDR) = (u8)((hSize << REG_G2_MOSAIC_BGHSIZE_SHIFT) | - (vSize << REG_G2_MOSAIC_BGVSIZE_SHIFT)); -} - -static inline void G2_SetOBJMosaicSize (int hSize, int vSize) -{ - GX_MOSAICSIZE_ASSERT(hSize); - GX_MOSAICSIZE_ASSERT(vSize); - - *((vu8 *)(REG_MOSAIC_ADDR + 1)) = (u8)((hSize << (REG_G2_MOSAIC_OBJHSIZE_SHIFT - 8)) | - (vSize << (REG_G2_MOSAIC_OBJVSIZE_SHIFT - 8))); -} - -static inline void G2_BlendNone () -{ - reg_G2_BLDCNT = 0; -} - -static inline void G2_ChangeBlendAlpha (int ev1, int ev2) -{ - GX_ALPHA_ASSERT(ev1); - GX_ALPHA_ASSERT(ev2); - - reg_G2_BLDALPHA = (u16)((ev1 << REG_G2_BLDALPHA_EVA_SHIFT) | - (ev2 << REG_G2_BLDALPHA_EVB_SHIFT)); -} - -static inline void G2_SetBG2Affine (const MtxFx22 * mtx, int centerX, int centerY, int x1, int y1) -{ - G2x_SetBGyAffine_((u32) & reg_G2_BG2PA, mtx, centerX, centerY, x1, y1); -} - -static inline void G2_SetBG3Affine (const MtxFx22 * mtx, int centerX, int centerY, int x1, int y1) -{ - G2x_SetBGyAffine_((u32) & reg_G2_BG3PA, mtx, centerX, centerY, x1, y1); -} - -static inline void G2_SetBlendAlpha (int plane1, int plane2, int ev1, int ev2) -{ - G2x_SetBlendAlpha_((u32) & reg_G2_BLDCNT, plane1, plane2, ev1, ev2); -} - -static inline void G2_SetBlendBrightness (int plane, int brightness) -{ - G2x_SetBlendBrightness_((u32) & reg_G2_BLDCNT, plane, brightness); -} - -static inline void G2_SetBlendBrightnessExt (int plane1, - int plane2, int ev1, int ev2, int brightness) -{ - G2x_SetBlendBrightnessExt_((u32) & reg_G2_BLDCNT, plane1, plane2, ev1, ev2, brightness); -} - -static inline void G2_ChangeBlendBrightness (int brightness) -{ - G2x_ChangeBlendBrightness_((u32) & reg_G2_BLDCNT, brightness); -} - -static inline void G2S_SetBG0Offset (int hOffset, int vOffset) -{ - reg_G2S_DB_BG0OFS = - (u32)(((hOffset << REG_G2S_DB_BG0OFS_HOFFSET_SHIFT) & REG_G2S_DB_BG0OFS_HOFFSET_MASK) | - ((vOffset << REG_G2S_DB_BG0OFS_VOFFSET_SHIFT) & REG_G2S_DB_BG0OFS_VOFFSET_MASK)); -} - -static inline void G2S_SetBG1Offset (int hOffset, int vOffset) -{ - reg_G2S_DB_BG1OFS = - (u32)(((hOffset << REG_G2S_DB_BG1OFS_HOFFSET_SHIFT) & REG_G2S_DB_BG1OFS_HOFFSET_MASK) | - ((vOffset << REG_G2S_DB_BG1OFS_VOFFSET_SHIFT) & REG_G2S_DB_BG1OFS_VOFFSET_MASK)); -} - -static inline void G2S_SetBG2Offset (int hOffset, int vOffset) -{ -#ifdef SDK_DEBUG - { - u32 tmp = - (reg_GXS_DB_DISPCNT & REG_GXS_DB_DISPCNT_BGMODE_MASK) >> - REG_GXS_DB_DISPCNT_BGMODE_SHIFT; - SDK_WARNING((0 == tmp) || (1 == tmp) - || (3 == tmp), - "G2S_SetBG2Offset requires BG #2 to be text mode. Use G2S_SetBG2Affine instead."); - } -#endif - - reg_G2S_DB_BG2OFS = - (u32)(((hOffset << REG_G2S_DB_BG2OFS_HOFFSET_SHIFT) & REG_G2S_DB_BG2OFS_HOFFSET_MASK) | - ((vOffset << REG_G2S_DB_BG2OFS_VOFFSET_SHIFT) & REG_G2S_DB_BG2OFS_VOFFSET_MASK)); -} - -static inline void G2S_SetBG3Offset (int hOffset, int vOffset) -{ -#ifdef SDK_DEBUG - { - u32 tmp = - (reg_GXS_DB_DISPCNT & REG_GXS_DB_DISPCNT_BGMODE_MASK) >> - REG_GXS_DB_DISPCNT_BGMODE_SHIFT; - SDK_WARNING(0 == tmp, - "G2S_SetBG3Offset requires BG #3 to be text mode. Use G2S_SetBG3Affine instead."); - } -#endif - - reg_G2S_DB_BG3OFS = - (u32)(((hOffset << REG_G2S_DB_BG3OFS_HOFFSET_SHIFT) & REG_G2S_DB_BG3OFS_HOFFSET_MASK) | - ((vOffset << REG_G2S_DB_BG3OFS_VOFFSET_SHIFT) & REG_G2S_DB_BG3OFS_VOFFSET_MASK)); -} - -static inline void G2S_SetWnd0InsidePlane (int wnd, BOOL effect) -{ - u32 tmp; - GX_WND_PLANEMASK_ASSERT(wnd); - - tmp = ((reg_G2S_DB_WININ & ~REG_G2S_DB_WININ_WIN0IN_MASK) | - ((u32)wnd << REG_G2S_DB_WININ_WIN0IN_SHIFT)); - - if (effect) { - tmp |= (0x20 << REG_G2S_DB_WININ_WIN0IN_SHIFT); - } - - reg_G2S_DB_WININ = (u16)tmp; -} - -static inline GXWndPlane G2S_GetWnd0InsidePlane (void) -{ - return *(volatile GXWndPlane *)(REG_DB_WININ_ADDR); -} - -static inline void G2S_SetWnd1InsidePlane (int wnd, BOOL effect) -{ - u32 tmp; - GX_WND_PLANEMASK_ASSERT(wnd); - - tmp = ((reg_G2S_DB_WININ & ~REG_G2S_DB_WININ_WIN1IN_MASK) | - ((u32)wnd << REG_G2S_DB_WININ_WIN1IN_SHIFT)); - - if (effect) { - tmp |= (0x20 << REG_G2S_DB_WININ_WIN1IN_SHIFT); - } - - reg_G2S_DB_WININ = (u16)tmp; -} - -static inline GXWndPlane G2S_GetWnd1InsidePlane (void) -{ - return *(volatile GXWndPlane *)(REG_DB_WININ_ADDR + 1); -} - -static inline void G2S_SetWndOutsidePlane (int wnd, BOOL effect) -{ - u32 tmp; - GX_WND_PLANEMASK_ASSERT(wnd); - - tmp = ((reg_G2S_DB_WINOUT & ~REG_G2S_DB_WINOUT_WINOUT_MASK) | - ((u32)wnd << REG_G2S_DB_WINOUT_WINOUT_SHIFT)); - - if (effect) { - tmp |= (0x20 << REG_G2S_DB_WINOUT_WINOUT_SHIFT); - } - - reg_G2S_DB_WINOUT = (u16)tmp; -} - -static inline GXWndPlane G2S_GetWndOutsidePlane (void) -{ - return *(volatile GXWndPlane *)(REG_DB_WINOUT_ADDR); -} - -static inline void G2S_SetWndOBJInsidePlane (int wnd, BOOL effect) -{ - u32 tmp; - GX_WND_PLANEMASK_ASSERT(wnd); - - tmp = ((reg_G2S_DB_WINOUT & ~REG_G2S_DB_WINOUT_OBJWININ_MASK) | - ((u32)wnd << REG_G2S_DB_WINOUT_OBJWININ_SHIFT)); - - if (effect) { - tmp |= (0x20 << REG_G2S_DB_WINOUT_OBJWININ_SHIFT); - } - - reg_G2S_DB_WINOUT = (u16)tmp; -} - -static inline GXWndPlane G2S_GetWndOBJInsidePlane (void) -{ - return *(volatile GXWndPlane *)(REG_DB_WINOUT_ADDR + 1); -} - -static inline void G2S_SetWnd0Position (int x1, int y1, int x2, int y2) -{ - SDK_MINMAX_ASSERT(y1, 0, 192); - SDK_MINMAX_ASSERT(y2, 0, 192); - - reg_G2S_DB_WIN0H = (u16)(((x1 << REG_G2S_DB_WIN0H_LEFTX_SHIFT) & REG_G2S_DB_WIN0H_LEFTX_MASK) | - ((x2 << REG_G2S_DB_WIN0H_RIGHTX_SHIFT) & - REG_G2S_DB_WIN0H_RIGHTX_MASK)); - - reg_G2S_DB_WIN0V = (u16)(((y1 << REG_G2S_DB_WIN0V_UPY_SHIFT) & REG_G2S_DB_WIN0V_UPY_MASK) | - ((y2 << REG_G2S_DB_WIN0V_DOWNY_SHIFT) & REG_G2S_DB_WIN0V_DOWNY_MASK)); -} - -static inline void G2S_SetWnd1Position (int x1, int y1, int x2, int y2) -{ - SDK_MINMAX_ASSERT(y1, 0, 192); - SDK_MINMAX_ASSERT(y2, 0, 192); - - reg_G2S_DB_WIN1H = (u16)(((x1 << REG_G2S_DB_WIN1H_LEFTX_SHIFT) & REG_G2S_DB_WIN1H_LEFTX_MASK) | - ((x2 << REG_G2S_DB_WIN1H_RIGHTX_SHIFT) & - REG_G2S_DB_WIN1H_RIGHTX_MASK)); - - reg_G2S_DB_WIN1V = (u16)(((y1 << REG_G2S_DB_WIN1V_UPY_SHIFT) & REG_G2S_DB_WIN1V_UPY_MASK) | - ((y2 << REG_G2S_DB_WIN1V_DOWNY_SHIFT) & REG_G2S_DB_WIN1V_DOWNY_MASK)); -} - -static inline void G2S_SetBGMosaicSize (int hSize, int vSize) -{ - GX_MOSAICSIZE_ASSERT(hSize); - GX_MOSAICSIZE_ASSERT(vSize); - - *((vu8 *)REG_DB_MOSAIC_ADDR) = (u8)((hSize << REG_G2S_DB_MOSAIC_BGHSIZE_SHIFT) | - (vSize << REG_G2S_DB_MOSAIC_BGVSIZE_SHIFT)); -} - -static inline void G2S_SetOBJMosaicSize (int hSize, int vSize) -{ - GX_MOSAICSIZE_ASSERT(hSize); - GX_MOSAICSIZE_ASSERT(vSize); - - *((vu8 *)(REG_DB_MOSAIC_ADDR + 1)) = (u8)((hSize << (REG_G2S_DB_MOSAIC_OBJHSIZE_SHIFT - 8)) | - (vSize << (REG_G2S_DB_MOSAIC_OBJVSIZE_SHIFT - 8))); -} - -static inline void G2S_BlendNone () -{ - reg_G2S_DB_BLDCNT = 0; -} - -static inline void G2S_ChangeBlendAlpha (int ev1, int ev2) -{ - GX_ALPHA_ASSERT(ev1); - GX_ALPHA_ASSERT(ev2); - - reg_G2S_DB_BLDALPHA = (u16)((ev1 << REG_G2S_DB_BLDALPHA_EVA_SHIFT) | - (ev2 << REG_G2S_DB_BLDALPHA_EVB_SHIFT)); -} - -static inline void G2S_SetBG2Affine (const MtxFx22 * mtx, int centerX, int centerY, int x1, int y1) -{ - G2x_SetBGyAffine_((u32) & reg_G2S_DB_BG2PA, mtx, centerX, centerY, x1, y1); -} - -static inline void G2S_SetBG3Affine (const MtxFx22 * mtx, int centerX, int centerY, int x1, int y1) -{ - G2x_SetBGyAffine_((u32) & reg_G2S_DB_BG3PA, mtx, centerX, centerY, x1, y1); -} - -static inline void G2S_SetBlendAlpha (int plane1, int plane2, int ev1, int ev2) -{ - G2x_SetBlendAlpha_((u32) & reg_G2S_DB_BLDCNT, plane1, plane2, ev1, ev2); -} - -static inline void G2S_SetBlendBrightness (int plane, int brightness) -{ - G2x_SetBlendBrightness_((u32) & reg_G2S_DB_BLDCNT, plane, brightness); -} - -static inline void G2S_SetBlendBrightnessExt (int plane1, - int plane2, int ev1, int ev2, int brightness) -{ - G2x_SetBlendBrightnessExt_((u32) & reg_G2S_DB_BLDCNT, plane1, plane2, ev1, ev2, brightness); -} - -static inline void G2S_ChangeBlendBrightness (int brightness) -{ - G2x_ChangeBlendBrightness_((u32) & reg_G2S_DB_BLDCNT, brightness); -} - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/gx/g2_oam.h b/subprojects/NitroSDK/include/nitro/gx/g2_oam.h deleted file mode 100644 index 27ce4e69cd..0000000000 --- a/subprojects/NitroSDK/include/nitro/gx/g2_oam.h +++ /dev/null @@ -1,476 +0,0 @@ -#ifndef NITRO_G2_OAM_H_ -#define NITRO_G2_OAM_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef SDK_ADS -typedef struct { - u32 attr01; - u16 attr2; - u16 _3; -} GXOamAttr; -#else -typedef struct { - union { - u32 attr01; - struct { - u16 attr0; - u16 attr1; - }; - struct { - u32 y : 8; - u32 rsMode : 2; - u32 objMode : 2; - u32 mosaic : 1; - u32 colorMode : 1; - u32 shape : 2; - - u32 x : 9; - u32 rsParam : 5; - u32 size : 2; - }; - struct { - u32 _0 : 28; - u32 flipH : 1; - u32 flipV : 1; - u32 _1 : 2; - }; - }; - union { - struct { - u16 attr2; - u16 _3; - }; - u32 attr23; - struct { - u32 charNo : 10; - u32 priority : 2; - u32 cParam : 4; - u32 _2 : 16; - }; - }; -} GXOamAttr; -#endif - -typedef struct { - u16 _0; - u16 _1; - u16 _2; - s16 PA; - u16 _4; - u16 _5; - u16 _6; - s16 PB; - u16 _8; - u16 _9; - u16 _10; - s16 PC; - u16 _12; - u16 _13; - u16 _14; - s16 PD; -} GXOamAffine; - -#define GX_OAM_ATTR01_Y_SHIFT 0 -#define GX_OAM_ATTR01_Y_SIZE 8 -#define GX_OAM_ATTR01_Y_MASK 0x000000ff - -#define GX_OAM_ATTR01_RSENABLE_SHIFT 8 -#define GX_OAM_ATTR01_RSENABLE_SIZE 2 -#define GX_OAM_ATTR01_RSENABLE_MASK 0x00000300 - -#define GX_OAM_ATTR01_MODE_SHIFT 10 -#define GX_OAM_ATTR01_MODE_SIZE 2 -#define GX_OAM_ATTR01_MODE_MASK 0x00000c00 - -#define GX_OAM_ATTR01_MOSAIC_SHIFT 12 -#define GX_OAM_ATTR01_MOSAIC_SIZE 1 -#define GX_OAM_ATTR01_MOSAIC_MASK 0x00001000 - -#define GX_OAM_ATTR01_CM_SHIFT 13 -#define GX_OAM_ATTR01_CM_SIZE 1 -#define GX_OAM_ATTR01_CM_MASK 0x00002000 - -#define GX_OAM_ATTR01_SHAPE_SHIFT 14 -#define GX_OAM_ATTR01_SHAPE_SIZE 2 -#define GX_OAM_ATTR01_SHAPE_MASK 0x0000c000 - -#define GX_OAM_ATTR01_X_SHIFT 16 -#define GX_OAM_ATTR01_X_SIZE 9 -#define GX_OAM_ATTR01_X_MASK 0x01ff0000 - -#define GX_OAM_ATTR01_RS_SHIFT 25 -#define GX_OAM_ATTR01_RS_SIZE 5 -#define GX_OAM_ATTR01_RS_MASK 0x3e000000 -#define GX_OAM_ATTR01_FLIP_MASK 0x30000000 - -#define GX_OAM_ATTR01_HF_SHIFT 28 -#define GX_OAM_ATTR01_HF_SIZE 1 -#define GX_OAM_ATTR01_HF_MASK 0x10000000 - -#define GX_OAM_ATTR01_VF_SHIFT 29 -#define GX_OAM_ATTR01_VF_SIZE 1 -#define GX_OAM_ATTR01_VF_MASK 0x20000000 - -#define GX_OAM_ATTR01_SIZE_SHIFT 30 -#define GX_OAM_ATTR01_SIZE_SIZE 2 -#define GX_OAM_ATTR01_SIZE_MASK 0xc0000000 - -#define GX_OAM_ATTR2_NAME_SHIFT 0 -#define GX_OAM_ATTR2_NAME_SIZE 10 -#define GX_OAM_ATTR2_NAME_MASK 0x03ff - -#define GX_OAM_ATTR2_PRIORITY_SHIFT 10 -#define GX_OAM_ATTR2_PRIORITY_SIZE 2 -#define GX_OAM_ATTR2_PRIORITY_MASK 0x0c00 - -#define GX_OAM_ATTR2_CPARAM_SHIFT 12 -#define GX_OAM_ATTR2_CPARAM_SIZE 4 -#define GX_OAM_ATTR2_CPARAM_MASK 0xf000 - -#define GX_OAM_OBJNUM_ASSERT(obj) SDK_MINMAX_ASSERT(obj, 0, 127) -#define GX_OAM_CPARAM_ASSERT(x) SDK_MINMAX_ASSERT(x, 0, 15) -#define GX_OAM_RSPARAM_ASSERT(x) SDK_MINMAX_ASSERT(x, 0, 31) -#define GX_OAM_CHARNAME_ASSERT(x) SDK_MINMAX_ASSERT(x, 0, 1023) - -typedef enum { - GX_OAM_SHAPE_8x8 = (0 << GX_OAM_ATTR01_SHAPE_SHIFT) | (0 << GX_OAM_ATTR01_SIZE_SHIFT), - GX_OAM_SHAPE_16x16 = (0 << GX_OAM_ATTR01_SHAPE_SHIFT) | (1 << GX_OAM_ATTR01_SIZE_SHIFT), - GX_OAM_SHAPE_32x32 = (0 << GX_OAM_ATTR01_SHAPE_SHIFT) | (2 << GX_OAM_ATTR01_SIZE_SHIFT), - GX_OAM_SHAPE_64x64 = (0 << GX_OAM_ATTR01_SHAPE_SHIFT) | (3 << GX_OAM_ATTR01_SIZE_SHIFT), - GX_OAM_SHAPE_16x8 = (1 << GX_OAM_ATTR01_SHAPE_SHIFT) | (0 << GX_OAM_ATTR01_SIZE_SHIFT), - GX_OAM_SHAPE_32x8 = (1 << GX_OAM_ATTR01_SHAPE_SHIFT) | (1 << GX_OAM_ATTR01_SIZE_SHIFT), - GX_OAM_SHAPE_32x16 = (1 << GX_OAM_ATTR01_SHAPE_SHIFT) | (2 << GX_OAM_ATTR01_SIZE_SHIFT), - GX_OAM_SHAPE_64x32 = (1 << GX_OAM_ATTR01_SHAPE_SHIFT) | (3 << GX_OAM_ATTR01_SIZE_SHIFT), - GX_OAM_SHAPE_8x16 = (2 << GX_OAM_ATTR01_SHAPE_SHIFT) | (0 << GX_OAM_ATTR01_SIZE_SHIFT), - GX_OAM_SHAPE_8x32 = (2 << GX_OAM_ATTR01_SHAPE_SHIFT) | (1 << GX_OAM_ATTR01_SIZE_SHIFT), - GX_OAM_SHAPE_16x32 = (2 << GX_OAM_ATTR01_SHAPE_SHIFT) | (2 << GX_OAM_ATTR01_SIZE_SHIFT), - GX_OAM_SHAPE_32x64 = (2 << GX_OAM_ATTR01_SHAPE_SHIFT) | (3 << GX_OAM_ATTR01_SIZE_SHIFT) -} GXOamShape; - -#define GX_OAM_SHAPE_ASSERT(x) \ - SDK_ASSERT((x) == GX_OAM_SHAPE_8x8 || \ - (x) == GX_OAM_SHAPE_16x16 || \ - (x) == GX_OAM_SHAPE_32x32 || \ - (x) == GX_OAM_SHAPE_64x64 || \ - (x) == GX_OAM_SHAPE_16x8 || \ - (x) == GX_OAM_SHAPE_32x8 || \ - (x) == GX_OAM_SHAPE_32x16 || \ - (x) == GX_OAM_SHAPE_64x32 || \ - (x) == GX_OAM_SHAPE_8x16 || \ - (x) == GX_OAM_SHAPE_8x32 || \ - (x) == GX_OAM_SHAPE_16x32 || \ - (x) == GX_OAM_SHAPE_32x64) - -typedef enum { - GX_OAM_COLORMODE_16 = 0, - GX_OAM_COLORMODE_256 = 1 -} GXOamColorMode; - -typedef GXOamColorMode GXOamColor; -#define GX_OAM_COLOR_16 ((GXOamColorMode)GX_OAM_COLORMODE_16) -#define GX_OAM_COLOR_256 ((GXOamColorMode)GX_OAM_COLORMODE_256) - -#define GX_OAM_COLORMODE_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, GX_OAM_COLORMODE_16, GX_OAM_COLORMODE_256) - -typedef enum { - GX_OAM_EFFECT_NONE = - (0 << GX_OAM_ATTR01_RSENABLE_SHIFT) | (0 << GX_OAM_ATTR01_HF_SHIFT) | (0 << - GX_OAM_ATTR01_VF_SHIFT), - GX_OAM_EFFECT_FLIP_H = - (0 << GX_OAM_ATTR01_RSENABLE_SHIFT) | (1 << GX_OAM_ATTR01_HF_SHIFT) | (0 << - GX_OAM_ATTR01_VF_SHIFT), - GX_OAM_EFFECT_FLIP_V = - (0 << GX_OAM_ATTR01_RSENABLE_SHIFT) | (0 << GX_OAM_ATTR01_HF_SHIFT) | (1 << - GX_OAM_ATTR01_VF_SHIFT), - GX_OAM_EFFECT_FLIP_HV = - (0 << GX_OAM_ATTR01_RSENABLE_SHIFT) | (1 << GX_OAM_ATTR01_HF_SHIFT) | (1 << - GX_OAM_ATTR01_VF_SHIFT), - GX_OAM_EFFECT_AFFINE = (1 << GX_OAM_ATTR01_RSENABLE_SHIFT), - GX_OAM_EFFECT_NODISPLAY = (2 << GX_OAM_ATTR01_RSENABLE_SHIFT), - GX_OAM_EFFECT_AFFINE_DOUBLE = (3 << GX_OAM_ATTR01_RSENABLE_SHIFT) -} GXOamEffect; - -#define GX_OAM_EFFECT_ASSERT(x) \ - SDK_ASSERT((x) == GX_OAM_EFFECT_NONE || \ - (x) == GX_OAM_EFFECT_FLIP_H || \ - (x) == GX_OAM_EFFECT_FLIP_V || \ - (x) == GX_OAM_EFFECT_FLIP_HV || \ - (x) == GX_OAM_EFFECT_AFFINE || \ - (x) == GX_OAM_EFFECT_NODISPLAY || \ - (x) == GX_OAM_EFFECT_AFFINE_DOUBLE) - -typedef enum { - GX_OAM_MODE_NORMAL = 0, - GX_OAM_MODE_XLU = 1, - GX_OAM_MODE_OBJWND = 2, - GX_OAM_MODE_BITMAPOBJ = 3 -} GXOamMode; - -#define GX_OAM_MODE_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, GX_OAM_MODE_NORMAL, GX_OAM_MODE_BITMAPOBJ) - -#define GX_OAM_PRIORTY_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, 0, 3) - -#define GXOamAttrArray ((GXOamAttr *)HW_OAM) -#define GXOamAffineArray ((GXOamAffine *)HW_OAM) - -#if !(defined(SDK_WIN32) || defined(SDK_FROM_TOOL)) - -static void G2_SetOBJPosition(GXOamAttr * oam, int x, int y); -static void G2_SetOBJPriority(GXOamAttr * oam, int priority); -static void G2_SetOBJMode(GXOamAttr * oam, GXOamMode mode, int cParam); -static void G2_SetOBJEffect(GXOamAttr * oam, GXOamEffect effect, int rsParam); -static void G2_SetOBJShape(GXOamAttr * oam, GXOamShape shape); -static void G2_SetOBJCharName(GXOamAttr * oam, int name); -static void G2_SetOBJColorMode(GXOamAttr * oam, GXOamColorMode color); -static void G2_OBJMosaic(GXOamAttr * oam, BOOL enable); -static void G2_SetOBJAttr(GXOamAttr * oam, - int x, - int y, - int priority, - GXOamMode mode, - BOOL mosaic, - GXOamEffect effect, - GXOamShape shape, - GXOamColorMode color, int charName, int cParam, int rsParam); -static void G2_SetOBJAffine(GXOamAffine * oam, const MtxFx22 * mtx); - -static inline void G2_SetOBJPosition (GXOamAttr * oam, int x, int y) -{ - oam->attr01 = ((oam->attr01 & ~(GX_OAM_ATTR01_Y_MASK | GX_OAM_ATTR01_X_MASK)) | - (y & GX_OAM_ATTR01_Y_MASK) | - ((x & (GX_OAM_ATTR01_X_MASK >> GX_OAM_ATTR01_X_SHIFT)) << - GX_OAM_ATTR01_X_SHIFT)); -} - -static inline void G2_GetOBJPosition (const GXOamAttr * oam, u32 * x, u32 * y) -{ - SDK_NULL_ASSERT(oam); - SDK_NULL_ASSERT(x); - SDK_NULL_ASSERT(y); - - *x = (oam->attr01 & GX_OAM_ATTR01_X_MASK) >> GX_OAM_ATTR01_X_SHIFT; - *y = oam->attr01 & GX_OAM_ATTR01_Y_MASK; -} - -static inline void G2_SetOBJPriority (GXOamAttr * oam, int priority) -{ - GX_OAM_PRIORTY_ASSERT(priority); - - oam->attr2 = (u16)((oam->attr2 & ~GX_OAM_ATTR2_PRIORITY_MASK) | - (priority << GX_OAM_ATTR2_PRIORITY_SHIFT)); -} - -static inline int G2_GetOBJPriority (const GXOamAttr * oam) -{ - SDK_NULL_ASSERT(oam); - - return (oam->attr2 & GX_OAM_ATTR2_PRIORITY_MASK) >> GX_OAM_ATTR2_PRIORITY_SHIFT; -} - -static inline void G2_SetOBJMode (GXOamAttr * oam, GXOamMode mode, int cParam) -{ - GX_OAM_MODE_ASSERT(mode); - GX_OAM_CPARAM_ASSERT(cParam); - - oam->attr01 = ((oam->attr01 & ~GX_OAM_ATTR01_MODE_MASK) | (mode << GX_OAM_ATTR01_MODE_SHIFT)); - - oam->attr2 = (u16)((oam->attr2 & ~GX_OAM_ATTR2_CPARAM_MASK) | - (cParam << GX_OAM_ATTR2_CPARAM_SHIFT)); -} - -static inline GXOamMode G2_GetOBJMode (const GXOamAttr * oam) -{ - SDK_NULL_ASSERT(oam); - - return (GXOamMode)((oam->attr01 & GX_OAM_ATTR01_MODE_MASK) >> GX_OAM_ATTR01_MODE_SHIFT); -} - -static inline int G2_GetOBJColorParam (const GXOamAttr * oam) -{ - SDK_NULL_ASSERT(oam); - - return (oam->attr2 & GX_OAM_ATTR2_CPARAM_MASK) >> GX_OAM_ATTR2_CPARAM_SHIFT; -} - -static inline void G2_SetOBJEffect (GXOamAttr * oam, GXOamEffect effect, int rsParam) -{ - GX_OAM_EFFECT_ASSERT(effect); - GX_OAM_RSPARAM_ASSERT(rsParam); - - if (GX_OAM_EFFECT_AFFINE != effect && GX_OAM_EFFECT_AFFINE_DOUBLE != effect) { - oam->attr01 = ((oam->attr01 & ~(GX_OAM_ATTR01_RSENABLE_MASK | GX_OAM_ATTR01_RS_MASK)) | - effect); - } else { - oam->attr01 = ((oam->attr01 & ~(GX_OAM_ATTR01_RSENABLE_MASK | GX_OAM_ATTR01_RS_MASK)) | - effect | (rsParam << GX_OAM_ATTR01_RS_SHIFT)); - } -} - -static inline GXOamEffect G2_GetOBJEffect (const GXOamAttr * oam) -{ - GXOamEffect effect; - - SDK_NULL_ASSERT(oam); - - effect = (GXOamEffect)(oam->attr01 & GX_OAM_ATTR01_RSENABLE_MASK); - - if (effect == GX_OAM_EFFECT_AFFINE || effect == GX_OAM_EFFECT_AFFINE_DOUBLE) { - return effect; - } - - return (GXOamEffect)(effect | (oam->attr01 & GX_OAM_ATTR01_FLIP_MASK)); -} - -static inline void G2_SetOBJShape (GXOamAttr * oam, GXOamShape shape) -{ - GX_OAM_SHAPE_ASSERT(shape); - - oam->attr01 = ((oam->attr01 & ~(GX_OAM_ATTR01_SHAPE_MASK | GX_OAM_ATTR01_SIZE_MASK)) | shape); -} - -static inline GXOamShape G2_GetOBJShape (const GXOamAttr * oam) -{ - SDK_NULL_ASSERT(oam); - - return (GXOamShape)(oam->attr01 & (GX_OAM_ATTR01_SHAPE_MASK | GX_OAM_ATTR01_SIZE_MASK)); -} - -static inline void G2_SetOBJCharName (GXOamAttr * oam, int name) -{ - GX_OAM_CHARNAME_ASSERT(name); - - oam->attr2 = (u16)((oam->attr2 & ~GX_OAM_ATTR2_NAME_MASK) | name); -} - -static inline int G2_GetOBJCharName (const GXOamAttr * oam) -{ - SDK_NULL_ASSERT(oam); - - return oam->attr2 & GX_OAM_ATTR2_NAME_MASK; -} - -static inline void G2_SetOBJColorMode (GXOamAttr * oam, GXOamColorMode color) -{ - GX_OAM_COLORMODE_ASSERT(color); - SDK_WARNING(!(GX_OAM_COLORMODE_256 == color && - (oam->attr01 & GX_OAM_ATTR01_MODE_MASK) == GX_OAM_ATTR01_MODE_MASK), - "Only GX_OAM_COLORMODE_16 can be specified with GX_OAM_MODE_BITMAPOBJ."); - - oam->attr01 = ((oam->attr01 & ~GX_OAM_ATTR01_CM_MASK) | (color << GX_OAM_ATTR01_CM_SHIFT)); -} - -static inline GXOamColorMode G2_GetOBJColorMode (const GXOamAttr * oam) -{ - SDK_NULL_ASSERT(oam); - - return (GXOamColorMode)((oam->attr01 & GX_OAM_ATTR01_CM_MASK) >> GX_OAM_ATTR01_CM_SHIFT); -} - -static inline void G2_OBJMosaic (GXOamAttr * oam, BOOL enable) -{ - if (enable) { - oam->attr01 |= (1 << GX_OAM_ATTR01_MOSAIC_SHIFT); - } else { - oam->attr01 &= ~(1 << GX_OAM_ATTR01_MOSAIC_SHIFT); - } -} - -static inline void G2_SetOBJAttr (GXOamAttr * oam, - int x, - int y, - int priority, - GXOamMode mode, - BOOL mosaic, - GXOamEffect effect, - GXOamShape shape, - GXOamColorMode color, int charName, int cParam, int rsParam) -{ -#define G2_SET_OBJ_ATTR_AFMODE_AFFINE_() (rsParam << GX_OAM_ATTR01_RS_SHIFT) | -#define G2_SET_OBJ_ATTR_AFMODE_NORMAL_() - -#define G2_SET_OBJ_ATTR_CLMODE_CHARACTOR_() (color << GX_OAM_ATTR01_CM_SHIFT) | -#define G2_SET_OBJ_ATTR_CLMODE_BITMAP_() - -#define G2_SET_OBJ_ATTR_(af_t, bm_t) \ - oam->attr01 = (u32)(G2_SET_OBJ_ATTR_AFMODE_ ## af_t ## _() \ - G2_SET_OBJ_ATTR_CLMODE_ ## bm_t ## _() \ - ((y & (GX_OAM_ATTR01_Y_MASK >> GX_OAM_ATTR01_Y_SHIFT)) << GX_OAM_ATTR01_Y_SHIFT) | \ - (mode << GX_OAM_ATTR01_MODE_SHIFT) | \ - (mosaic << GX_OAM_ATTR01_MOSAIC_SHIFT) | \ - shape | \ - ((x & (GX_OAM_ATTR01_X_MASK >> GX_OAM_ATTR01_X_SHIFT)) << GX_OAM_ATTR01_X_SHIFT) | \ - effect); - - GX_OAM_PRIORTY_ASSERT(priority); - GX_OAM_MODE_ASSERT(mode); - GX_OAM_EFFECT_ASSERT(effect); - GX_OAM_SHAPE_ASSERT(shape); - GX_OAM_COLORMODE_ASSERT(color); - GX_OAM_CPARAM_ASSERT(cParam); - SDK_ASSERT(mosaic == 0 || mosaic == 1); - SDK_WARNING(!(mode == GX_OAM_MODE_BITMAPOBJ && color == GX_OAM_COLORMODE_256), - "Only GX_OAM_COLORMODE_16 can be specified with GX_OAM_MODE_BITMAPOBJ."); - - if (GX_OAM_EFFECT_AFFINE == effect || GX_OAM_EFFECT_AFFINE_DOUBLE == effect) { - if (GX_OAM_MODE_BITMAPOBJ == mode) { - G2_SET_OBJ_ATTR_(AFFINE, BITMAP); - } else { - G2_SET_OBJ_ATTR_(AFFINE, CHARACTOR); - } - } else { - if (GX_OAM_MODE_BITMAPOBJ == mode) { - G2_SET_OBJ_ATTR_(NORMAL, BITMAP); - } else { - G2_SET_OBJ_ATTR_(NORMAL, CHARACTOR); - } - } - - oam->attr2 = (u16)((charName << GX_OAM_ATTR2_NAME_SHIFT) | - (priority << GX_OAM_ATTR2_PRIORITY_SHIFT) | - (cParam << GX_OAM_ATTR2_CPARAM_SHIFT)); - -#undef G2_SET_OBJ_ATTR_AFMODE_AFFINE_ -#undef G2_SET_OBJ_ATTR_AFMODE_NORMAL_ -#undef G2_SET_OBJ_ATTR_CLMODE_CHARACTOR_ -#undef G2_SET_OBJ_ATTR_CLMODE_BITMAP_ -#undef G2_SET_OBJ_ATTR_ -} - -static inline void G2_SetOBJAffine (GXOamAffine * oam, const MtxFx22 * mtx) -{ - SDK_MINMAX_ASSERT(mtx->_00, -128 * FX32_ONE, 128 * FX32_ONE - 1); - SDK_MINMAX_ASSERT(mtx->_01, -128 * FX32_ONE, 128 * FX32_ONE - 1); - SDK_MINMAX_ASSERT(mtx->_10, -128 * FX32_ONE, 128 * FX32_ONE - 1); - SDK_MINMAX_ASSERT(mtx->_11, -128 * FX32_ONE, 128 * FX32_ONE - 1); - - oam->PA = (s16)(mtx->_00 >> 4); - oam->PB = (s16)(mtx->_01 >> 4); - oam->PC = (s16)(mtx->_10 >> 4); - oam->PD = (s16)(mtx->_11 >> 4); -} - -static inline void G2_GetOBJAffine (const GXOamAffine * oam, MtxFx22 * mtx) -{ - mtx->_00 = (fx32)(oam->PA << 4); - mtx->_01 = (fx32)(oam->PB << 4); - mtx->_10 = (fx32)(oam->PC << 4); - mtx->_11 = (fx32)(oam->PD << 4); -} - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/gx/g3.h b/subprojects/NitroSDK/include/nitro/gx/g3.h deleted file mode 100644 index 0898d9f39c..0000000000 --- a/subprojects/NitroSDK/include/nitro/gx/g3.h +++ /dev/null @@ -1,483 +0,0 @@ -#ifndef NITRO_G3_H_ -#define NITRO_G3_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define G3OP_NOP 0x00 - -#define G3OP_MTX_MODE 0x10 -#define G3OP_MTX_PUSH 0x11 -#define G3OP_MTX_POP 0x12 -#define G3OP_MTX_STORE 0x13 -#define G3OP_MTX_RESTORE 0x14 -#define G3OP_MTX_IDENTITY 0x15 -#define G3OP_MTX_LOAD_4x4 0x16 -#define G3OP_MTX_LOAD_4x3 0x17 -#define G3OP_MTX_MULT_4x4 0x18 -#define G3OP_MTX_MULT_4x3 0x19 -#define G3OP_MTX_MULT_3x3 0x1a -#define G3OP_MTX_SCALE 0x1b -#define G3OP_MTX_TRANS 0x1c - -#define G3OP_COLOR 0x20 -#define G3OP_NORMAL 0x21 -#define G3OP_TEXCOORD 0x22 -#define G3OP_VTX_16 0x23 -#define G3OP_VTX_10 0x24 -#define G3OP_VTX_XY 0x25 -#define G3OP_VTX_XZ 0x26 -#define G3OP_VTX_YZ 0x27 -#define G3OP_VTX_DIFF 0x28 -#define G3OP_POLYGON_ATTR 0x29 -#define G3OP_TEXIMAGE_PARAM 0x2a -#define G3OP_TEXPLTT_BASE 0x2b - -#define G3OP_DIF_AMB 0x30 -#define G3OP_SPE_EMI 0x31 -#define G3OP_LIGHT_VECTOR 0x32 -#define G3OP_LIGHT_COLOR 0x33 -#define G3OP_SHININESS 0x34 - -#define G3OP_BEGIN 0x40 -#define G3OP_END 0x41 - -#define G3OP_SWAP_BUFFERS 0x50 - -#define G3OP_VIEWPORT 0x60 - -#define G3OP_BOX_TEST 0x70 -#define G3OP_POS_TEST 0x71 -#define G3OP_VEC_TEST 0x72 - -#define G3OP_DUMMY_COMMAND 0xFF - -#define G3OP_NOP_NPARAMS 0 - -#define G3OP_MTX_MODE_NPARAMS 1 -#define G3OP_MTX_PUSH_NPARAMS 0 -#define G3OP_MTX_POP_NPARAMS 1 -#define G3OP_MTX_STORE_NPARAMS 1 -#define G3OP_MTX_RESTORE_NPARAMS 1 -#define G3OP_MTX_IDENTITY_NPARAMS 0 -#define G3OP_MTX_LOAD_4x4_NPARAMS 16 -#define G3OP_MTX_LOAD_4x3_NPARAMS 12 -#define G3OP_MTX_MULT_4x4_NPARAMS 16 -#define G3OP_MTX_MULT_4x3_NPARAMS 12 -#define G3OP_MTX_MULT_3x3_NPARAMS 9 -#define G3OP_MTX_SCALE_NPARAMS 3 -#define G3OP_MTX_TRANS_NPARAMS 3 - -#define G3OP_COLOR_NPARAMS 1 -#define G3OP_NORMAL_NPARAMS 1 -#define G3OP_TEXCOORD_NPARAMS 1 -#define G3OP_VTX_16_NPARAMS 2 -#define G3OP_VTX_10_NPARAMS 1 -#define G3OP_VTX_XY_NPARAMS 1 -#define G3OP_VTX_XZ_NPARAMS 1 -#define G3OP_VTX_YZ_NPARAMS 1 -#define G3OP_VTX_DIFF_NPARAMS 1 -#define G3OP_POLYGON_ATTR_NPARAMS 1 -#define G3OP_TEXIMAGE_PARAM_NPARAMS 1 -#define G3OP_TEXPLTT_BASE_NPARAMS 1 - -#define G3OP_DIF_AMB_NPARAMS 1 -#define G3OP_SPE_EMI_NPARAMS 1 -#define G3OP_LIGHT_VECTOR_NPARAMS 1 -#define G3OP_LIGHT_COLOR_NPARAMS 1 -#define G3OP_SHININESS_NPARAMS 32 - -#define G3OP_BEGIN_NPARAMS 1 -#define G3OP_END_NPARAMS 0 - -#define G3OP_SWAP_BUFFERS_NPARAMS 1 - -#define G3OP_VIEWPORT_NPARAMS 1 - -#define G3OP_BOX_TEST_NPARAMS 3 -#define G3OP_POS_TEST_NPARAMS 2 -#define G3OP_VEC_TEST_NPARAMS 1 - -#define GX_VALID_OPCODE_ASSERT(x) SDK_ASSERT((x == 0xFF) || ((x >= 0) && (x <= 0x72))) - -typedef enum { - GX_MTXMODE_PROJECTION = 0, - GX_MTXMODE_POSITION = 1, - GX_MTXMODE_POSITION_VECTOR = 2, - GX_MTXMODE_TEXTURE = 3 -} GXMtxMode; - -#define GX_MTXMODE_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, GX_MTXMODE_PROJECTION, GX_MTXMODE_TEXTURE) - -#define GX_MTX_POP_NUM_ASSERT(x) SDK_MINMAX_ASSERT(x, -30, 31) - -#define GX_MTX_STORE_NUM_ASSERT(x) SDK_MINMAX_ASSERT(x, 0, 30) - -#define GX_MTX_RESTORE_NUM_ASSERT(x) SDK_MINMAX_ASSERT(x, 0, 30) - -typedef enum { - GX_BEGIN_TRIANGLES = 0, - GX_BEGIN_QUADS = 1, - GX_BEGIN_TRIANGLE_STRIP = 2, - GX_BEGIN_QUAD_STRIP = 3 -} GXBegin; - -#define GX_BEGIN_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, GX_BEGIN_TRIANGLES, GX_BEGIN_QUAD_STRIP) - -typedef enum { - GX_SORTMODE_AUTO = 0, - GX_SORTMODE_MANUAL = 1 -} GXSortMode; - -#define GX_SORTMODE_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, GX_SORTMODE_AUTO, GX_SORTMODE_MANUAL) - -typedef enum { - GX_BUFFERMODE_Z = 0, - GX_BUFFERMODE_W = 1 -} GXBufferMode; - -#define GX_BUFFERMODE_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, GX_BUFFERMODE_Z, GX_BUFFERMODE_W) - -#define GX_VIEWPORT_ASSERT(x1, y1, x2, y2) \ - SDK_ASSERT((x1) < (x2) && (y1) < (y2) && \ - (x1) >= 0 && (x2) < 256 && \ - (y1) >= 0 && (y2) < 192) - -#define GX_POLYGON_ATTR_POLYGONID_ASSERT(x) GX_POLYGONID_ASSERT(x) -#define GX_POLYGON_ATTR_ALPHA_ASSERT(x) GX_ALPHA_ASSERT(x) - -typedef enum { - GX_LIGHTMASK_NONE = 0, - GX_LIGHTMASK_0 = 1, - GX_LIGHTMASK_1 = 2, - GX_LIGHTMASK_01 = 3, - GX_LIGHTMASK_2 = 4, - GX_LIGHTMASK_02 = 5, - GX_LIGHTMASK_12 = 6, - GX_LIGHTMASK_012 = 7, - GX_LIGHTMASK_3 = 8, - GX_LIGHTMASK_03 = 9, - GX_LIGHTMASK_13 = 10, - GX_LIGHTMASK_013 = 11, - GX_LIGHTMASK_23 = 12, - GX_LIGHTMASK_023 = 13, - GX_LIGHTMASK_123 = 14, - GX_LIGHTMASK_0123 = 15 -} GXLightMask; - -#define GX_LIGHTMASK_ASSERT(x) SDK_MINMAX_ASSERT(x, 0, 15) - -typedef enum { - GX_POLYGONMODE_MODULATE = 0, - GX_POLYGONMODE_DECAL = 1, - GX_POLYGONMODE_TOON = 2, - GX_POLYGONMODE_SHADOW = 3 -} GXPolygonMode; - -#define GX_POLYGONMODE_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, GX_POLYGONMODE_MODULATE, GX_POLYGONMODE_SHADOW) - -typedef enum { - GX_CULL_ALL = 0, - GX_CULL_FRONT = 1, - GX_CULL_BACK = 2, - GX_CULL_NONE = 3 -} GXCull; - -#define GX_CULL_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, GX_CULL_ALL, GX_CULL_NONE) - -typedef enum { - GX_POLYGON_ATTR_MISC_NONE = 0, - GX_POLYGON_ATTR_MISC_XLU_DEPTH_UPDATE = 1 << REG_G3_POLYGON_ATTR_XL_SHIFT, - GX_POLYGON_ATTR_MISC_FAR_CLIPPING = 1 << REG_G3_POLYGON_ATTR_FC_SHIFT, - GX_POLYGON_ATTR_MISC_DISP_1DOT = 1 << REG_G3_POLYGON_ATTR_D1_SHIFT, - GX_POLYGON_ATTR_MISC_DEPTHTEST_DECAL = 1 << REG_G3_POLYGON_ATTR_DT_SHIFT, - GX_POLYGON_ATTR_MISC_FOG = 1 << REG_G3_POLYGON_ATTR_FE_SHIFT -} GXPolygonAttrMisc; - -typedef enum { - GX_TEXREPEAT_NONE = 0, - GX_TEXREPEAT_S = 1, - GX_TEXREPEAT_T = 2, - GX_TEXREPEAT_ST = 3 -} GXTexRepeat; - -#define GX_TEXREPEAT_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, GX_TEXREPEAT_NONE, GX_TEXREPEAT_ST) - -typedef enum { - GX_TEXFLIP_NONE = 0, - GX_TEXFLIP_S = 1, - GX_TEXFLIP_T = 2, - GX_TEXFLIP_ST = 3 -} GXTexFlip; - -#define GX_TEXFLIP_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, GX_TEXFLIP_NONE, GX_TEXFLIP_ST) - -typedef enum { - GX_TEXSIZE_S8 = 0, - GX_TEXSIZE_S16 = 1, - GX_TEXSIZE_S32 = 2, - GX_TEXSIZE_S64 = 3, - GX_TEXSIZE_S128 = 4, - GX_TEXSIZE_S256 = 5, - GX_TEXSIZE_S512 = 6, - GX_TEXSIZE_S1024 = 7 -} GXTexSizeS; - -#define GX_TEXSIZE_S_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, GX_TEXSIZE_S8, GX_TEXSIZE_S1024) - -typedef enum { - GX_TEXSIZE_T8 = 0, - GX_TEXSIZE_T16 = 1, - GX_TEXSIZE_T32 = 2, - GX_TEXSIZE_T64 = 3, - GX_TEXSIZE_T128 = 4, - GX_TEXSIZE_T256 = 5, - GX_TEXSIZE_T512 = 6, - GX_TEXSIZE_T1024 = 7 -} GXTexSizeT; - -#define GX_TEXSIZE_T_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, GX_TEXSIZE_T8, GX_TEXSIZE_T1024) - -typedef enum { - GX_TEXFMT_NONE = 0, - GX_TEXFMT_A3I5 = 1, - GX_TEXFMT_PLTT4 = 2, - GX_TEXFMT_PLTT16 = 3, - GX_TEXFMT_PLTT256 = 4, - GX_TEXFMT_COMP4x4 = 5, - GX_TEXFMT_A5I3 = 6, - GX_TEXFMT_DIRECT = 7 -} GXTexFmt; - -#define GX_TEXFMT_ALPHA ((GXTexFmt)GX_TEXFMT_A5I3) - -#define GX_TEXFMT_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, GX_TEXFMT_NONE, GX_TEXFMT_DIRECT) - -typedef enum { - GX_TEXPLTTCOLOR0_USE = 0, - GX_TEXPLTTCOLOR0_TRNS = 1 -} GXTexPlttColor0; - -#define GX_TEXPLTTCOLOR0_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, GX_TEXPLTTCOLOR0_USE, GX_TEXPLTTCOLOR0_TRNS) - -typedef enum { - GX_TEXGEN_NONE = 0, - GX_TEXGEN_TEXCOORD = 1, - GX_TEXGEN_NORMAL = 2, - GX_TEXGEN_VERTEX = 3 -} GXTexGen; - -#define GX_TEXGEN_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, GX_TEXGEN_NONE, GX_TEXGEN_VERTEX) - -#define GX_TEXIMAGE_PARAM_ADDR_ASSERT(addr) \ - SDK_ASSERT(((addr) & 0x7) == 0 && (addr) >= 0 && (addr) < 0x80000) - -typedef enum { - GX_LIGHTID_0 = 0, - GX_LIGHTID_1 = 1, - GX_LIGHTID_2 = 2, - GX_LIGHTID_3 = 3 -} GXLightId; - -#define GX_LIGHTID_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, GX_LIGHTID_0, GX_LIGHTID_3) - -#ifdef SDK_ADS -typedef struct { - u32 val[3]; -} GXBoxTestParam; -#else -typedef union { - u32 val[3]; - struct { - fx16 x; - fx16 y; - fx16 z; - fx16 width; - fx16 height; - fx16 depth; - }; -} GXBoxTestParam; -#endif - -typedef struct { - u8 * curr_cmd; - u32 * curr_param; - u32 * bottom; - u32 length; - BOOL param0_cmd_flg; -} GXDLInfo; - -typedef u32 GXSt; - -typedef u32 GXTexPlttBaseParam; -#define GX_TEXPLTTBASEPARAM_ASSERT(x) SDK_ASSERT((x) < 0xe000) - -typedef u32 VecVtx10; -#define GX_VTX10_SHIFT 6 -#define GX_VTX10_INT_SIZE 3 -#define GX_VTX10_DEC_SIZE 6 - -#define GX_VTX10_INT_MASK 0x01c0 -#define GX_VTX10_DEC_MASK 0x003f -#define GX_VTX10_SIGN_MASK 0x0200 -#define GX_VTX10_MASK (GX_VTX10_INT_MASK | GX_VTX10_DEC_MASK | GX_VTX10_SIGN_MASK) - -#define GX_VTX10_MAX ((fx32)(0x00007fc0)) -#define GX_VTX10_MIN ((fx32)(0xffff8000)) - -#define GX_VEC_VTX10_X_SHIFT 0 -#define GX_VEC_VTX10_Y_SHIFT 10 -#define GX_VEC_VTX10_Z_SHIFT 20 - -#define GX_FX16PAIR(a, b) ((u32)((u32)(u16)(a) | ((u32)(u16)(b) << 16))) - -#define GX_VECVTX10(x, y, z) \ - ((VecVtx10)(((((x) >> (FX32_DEC_SIZE - GX_VTX10_DEC_SIZE)) & GX_VTX10_MASK) << GX_VEC_VTX10_X_SHIFT) | \ - ((((y) >> (FX32_DEC_SIZE - GX_VTX10_DEC_SIZE)) & GX_VTX10_MASK) << GX_VEC_VTX10_Y_SHIFT) | \ - ((((z) >> (FX32_DEC_SIZE - GX_VTX10_DEC_SIZE)) & GX_VTX10_MASK) << GX_VEC_VTX10_Z_SHIFT))) - -typedef u32 VecVtxDiff; -#define GX_VTXDIFF_MASK 0x03ff - -#define GX_VTXDIFF_MAX ((fx32)(0x000001ff)) -#define GX_VTXDIFF_MIN ((fx32)(0xfffffe00)) - -#define GX_VEC_VTXDIFF_X_SHIFT 0 -#define GX_VEC_VTXDIFF_Y_SHIFT 10 -#define GX_VEC_VTXDIFF_Z_SHIFT 20 - -#define GX_VECVTXDIFF(x, y, z) \ - ((VecVtxDiff)((((x) & GX_VTXDIFF_MASK) << GX_VEC_VTXDIFF_X_SHIFT) | \ - (((y) & GX_VTXDIFF_MASK) << GX_VEC_VTXDIFF_Y_SHIFT) | \ - (((z) & GX_VTXDIFF_MASK) << GX_VEC_VTXDIFF_Z_SHIFT))) - -#define GX_FX16ST(x) ((s16)((x) >> 8)) - -#define GX_ST(s, t) ((GXSt)((u16)GX_FX16ST(s) | ((u16)GX_FX16ST(t) << 16))) - -#define GX_COMP4x4_PLTT_IDX(image) \ - ((u32)(0x20000 + (((image) & 0x1ffff) >> 1) + (((image) & 0x40000) >> 2))) - -#define GX_PACK_OP(op1, op2, op3, op4) \ - ((u32)((op1) | ((op2) << 8) | ((op3) << 16) | ((op4) << 24))) -#define GX_PACK_SWAPBUFFERS_PARAM(am, zw) \ - ((u32)(((am) << REG_G3_SWAP_BUFFERS_XS_SHIFT) | \ - ((zw) << REG_G3_SWAP_BUFFERS_DP_SHIFT))) -#define GX_PACK_MTXMODE_PARAM(mode) ((u32)((mode) << REG_G3_MTX_MODE_M_SHIFT)) -#define GX_PACK_POPMTX_PARAM(num) ((u32)(num)) -#define GX_PACK_STOREMTX_PARAM(num) ((u32)(num)) -#define GX_PACK_RESTOREMTX_PARAM(num) ((u32)(num)) -#define GX_PACK_LIGHTVECTOR_PARAM(lightID, x, y, z) \ - ((u32)GX_VECFX10((x), (y), (z)) | \ - ((u32)(lightID) << REG_G3_LIGHT_VECTOR_LNUM_SHIFT)) -#define GX_PACK_LIGHTCOLOR_PARAM(lightID, rgb) \ - ((u32)((rgb) | \ - ((u32)(lightID) << REG_G3_LIGHT_COLOR_LNUM_SHIFT))) -#define GX_PACK_DIFFAMB_PARAM(diffuse, ambient, IsSetVtxColor) \ - ((u32)((diffuse) | \ - ((ambient) << REG_G3_DIF_AMB_AMBIENT_RED_SHIFT) | \ - (((IsSetVtxColor) != FALSE) << REG_G3_DIF_AMB_C_SHIFT))) -#define GX_PACK_SPECEMI_PARAM(specular, emission, IsShininess) \ - ((u32)((specular) | \ - ((emission) << REG_G3_SPE_EMI_EMISSION_RED_SHIFT) | \ - (((IsShininess) != FALSE) << REG_G3_SPE_EMI_S_SHIFT))) -#define GX_PACK_POLYGONATTR_PARAM(light, polyMode, cullMode, polygonID, alpha, misc) \ - ((u32)(((light) << REG_G3_POLYGON_ATTR_LE_SHIFT) | \ - ((polyMode) << REG_G3_POLYGON_ATTR_PM_SHIFT) | \ - ((cullMode) << REG_G3_POLYGON_ATTR_BK_SHIFT) | \ - (misc) | \ - ((polygonID) << REG_G3_POLYGON_ATTR_ID_SHIFT) | \ - ((alpha) << REG_G3_POLYGON_ATTR_ALPHA_SHIFT))) -#define GX_PACK_BEGIN_PARAM(primitive) \ - ((u32)((primitive) << REG_G3_BEGIN_VTXS_TYPE_SHIFT)) -#define GX_PACK_COLOR_PARAM(rgb) ((u32)(rgb)) -#define GX_PACK_NORMAL_PARAM(x, y, z) ((u32)GX_VECFX10((x), (y), (z))) -#define GX_PACK_VTX10_PARAM(x, y, z) ((u32)GX_VECVTX10((x), (y), (z))) -#define GX_PACK_VTXXY_PARAM(x, y) (GX_FX16PAIR((x), (y))) -#define GX_PACK_VTXXZ_PARAM(x, z) (GX_FX16PAIR((x), (z))) -#define GX_PACK_VTXYZ_PARAM(y, z) (GX_FX16PAIR((y), (z))) -#define GX_PACK_VTXDIFF_PARAM(x, y, z) (GX_VECVTXDIFF((x), (y), (z))) -#define GX_PACK_TEXCOORD_PARAM(s, t) (GX_ST((s), (t))) -#define GX_PACK_TEXIMAGE_PARAM(texFmt, texGen, s, t, repeat, flip, pltt0, addr) \ - ((u32)(((addr) >> 3) | \ - ((texFmt) << REG_G3_TEXIMAGE_PARAM_TEXFMT_SHIFT) | \ - ((texGen) << REG_G3_TEXIMAGE_PARAM_TGEN_SHIFT) | \ - ((s) << REG_G3_TEXIMAGE_PARAM_V_SIZE_SHIFT) | \ - ((t) << REG_G3_TEXIMAGE_PARAM_T_SIZE_SHIFT) | \ - ((repeat) << REG_G3_TEXIMAGE_PARAM_RS_SHIFT) | \ - ((flip) << REG_G3_TEXIMAGE_PARAM_FS_SHIFT) | \ - ((pltt0) << REG_G3_TEXIMAGE_PARAM_TR_SHIFT))) -#define GX_PACK_TEXPLTTBASE_PARAM(addr, texFmt) \ - ((u32)((addr) >> (4 - ((texFmt) == GX_TEXFMT_PLTT4)))) -#define GX_PACK_VIEWPORT_PARAM(x1, y1, x2, y2) \ - ((u32)((x1) | ((y1) << 8) | ((x2) << 16) | ((y2) << 24))) -#define GX_PACK_VECTORTEST_PARAM(x, y, z) ((u32)GX_VECFX10((x), (y), (z))) - -#if !(defined(SDK_WIN32) || defined(SDK_FROM_TOOL)) - -void G3_BeginMakeDL(GXDLInfo * info, void * ptr, u32 length); -u32 G3_EndMakeDL(GXDLInfo * info); -static void * G3_GetDLStart(const GXDLInfo * info); -static u32 G3_GetDLLength(const GXDLInfo * info); -static u32 G3_GetDLSize(const GXDLInfo * info); - -static GXTexPlttBaseParam G3_MakeTexPlttBaseParam(u32 plttBaseAddr, GXTexFmt texfmt); - -static inline void * G3_GetDLStart (const GXDLInfo * info) -{ - return (void *)info->bottom; -} - -static inline u32 G3_GetDLLength (const GXDLInfo * info) -{ - return info->length; -} - -static inline u32 G3_GetDLSize (const GXDLInfo * info) -{ - SDK_ASSERT((u32)info->bottom < (u32)info->curr_param); - if ((u32)info->curr_cmd & 3) { - return (u32)((u32)info->curr_param - (u32)info->bottom); - } else { - return (u32)((u32)info->curr_cmd - (u32)info->bottom); - } -} - -static inline GXTexPlttBaseParam G3_MakeTexPlttBaseParam (u32 plttBaseAddr, GXTexFmt texfmt) -{ - SDK_ASSERT(GX_TEXFMT_NONE != texfmt); - - if (GX_TEXFMT_PLTT4 == texfmt) { - SDK_ASSERT((plttBaseAddr & 0x7) == 0); - return (GXTexPlttBaseParam)(plttBaseAddr >> 3); - } else { - SDK_ASSERT((plttBaseAddr & 0xf) == 0); - return (GXTexPlttBaseParam)(plttBaseAddr >> 4); - } -} - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/gx/g3_util.h b/subprojects/NitroSDK/include/nitro/gx/g3_util.h deleted file mode 100644 index 75238f5db7..0000000000 --- a/subprojects/NitroSDK/include/nitro/gx/g3_util.h +++ /dev/null @@ -1,77 +0,0 @@ -#ifndef NITRO_G3_UTIL_H_ -#define NITRO_G3_UTIL_H_ - -#include -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -void G3i_FrustumW_(fx32 t, fx32 b, fx32 l, fx32 r, fx32 n, fx32 f, fx32 scaleW, BOOL draw, - MtxFx44 * mtx); -void G3i_PerspectiveW_(fx32 fovySin, fx32 fovyCos, fx32 aspect, fx32 n, fx32 f, fx32 scaleW, - BOOL draw, MtxFx44 * mtx); -void G3i_OrthoW_(fx32 t, fx32 b, fx32 l, fx32 r, fx32 n, fx32 f, fx32 scaleW, BOOL draw, - MtxFx44 * mtx); -void G3i_LookAt_(const VecFx32 * camPos, const VecFx32 * camUp, const VecFx32 * target, BOOL draw, - MtxFx43 * mtx); -void G3_RotX(fx32 s, fx32 c); -void G3_RotY(fx32 s, fx32 c); -void G3_RotZ(fx32 s, fx32 c); -void G3_LoadTexMtxTexCoord(const MtxFx44 * mtx); -void G3_LoadTexMtxEnv(const MtxFx44 * mtx); - -void G3BS_LoadTexMtxTexCoord(GXDLInfo * info, const MtxFx44 * mtx); -void G3CS_LoadTexMtxTexCoord(GXDLInfo * info, const MtxFx44 * mtx); -void G3B_LoadTexMtxTexCoord(GXDLInfo * info, const MtxFx44 * mtx); -void G3C_LoadTexMtxTexCoord(GXDLInfo * info, const MtxFx44 * mtx); -void G3BS_LoadTexMtxEnv(GXDLInfo * info, const MtxFx44 * mtx); -void G3B_LoadTexMtxEnv(GXDLInfo * info, const MtxFx44 * mtx); -void G3CS_LoadTexMtxEnv(GXDLInfo * info, const MtxFx44 * mtx); -void G3C_LoadTexMtxEnv(GXDLInfo * info, const MtxFx44 * mtx); - -static inline void G3_Frustum (fx32 t, fx32 b, fx32 l, fx32 r, fx32 n, fx32 f, MtxFx44 * mtx) -{ - G3i_FrustumW_(t, b, l, r, n, f, FX32_ONE, TRUE, mtx); -} - -static inline -void G3_Perspective (fx32 fovySin, fx32 fovyCos, fx32 aspect, fx32 n, fx32 f, MtxFx44 * mtx) -{ - G3i_PerspectiveW_(fovySin, fovyCos, aspect, n, f, FX32_ONE, TRUE, mtx); -} - -static inline void G3_Ortho (fx32 t, fx32 b, fx32 l, fx32 r, fx32 n, fx32 f, MtxFx44 * mtx) -{ - G3i_OrthoW_(t, b, l, r, n, f, FX32_ONE, TRUE, mtx); -} - -static inline void G3_FrustumW (fx32 t, fx32 b, fx32 l, fx32 r, fx32 n, fx32 f, fx32 scaleW, MtxFx44 * mtx) -{ - G3i_FrustumW_(t, b, l, r, n, f, scaleW, TRUE, mtx); -} - -static inline void G3_PerspectiveW (fx32 fovySin, fx32 fovyCos, fx32 aspect, fx32 n, fx32 f, fx32 scaleW, MtxFx44 * mtx) -{ - G3i_PerspectiveW_(fovySin, fovyCos, aspect, n, f, scaleW, TRUE, mtx); -} - -static inline void G3_OrthoW (fx32 t, fx32 b, fx32 l, fx32 r, fx32 n, fx32 f, fx32 scaleW, MtxFx44 * mtx) -{ - G3i_OrthoW_(t, b, l, r, n, f, scaleW, TRUE, mtx); -} - -static inline void G3_LookAt (const VecFx32 * camPos, const VecFx32 * camUp, const VecFx32 * target, MtxFx43 * mtx) -{ - G3i_LookAt_(camPos, camUp, target, TRUE, mtx); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/gx/g3b.h b/subprojects/NitroSDK/include/nitro/gx/g3b.h deleted file mode 100644 index 33277c58d0..0000000000 --- a/subprojects/NitroSDK/include/nitro/gx/g3b.h +++ /dev/null @@ -1,436 +0,0 @@ -#ifndef NITRO_G3B_H_ -#define NITRO_G3B_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#if (defined(SDK_WIN32) || defined(SDK_FROM_TOOL)) -#define SDK_ASSERT(exp) ((void)0) -#define SDK_ALIGN4_ASSERT(exp) ((void)0) -#define SDK_MINMAX_ASSERT(exp, min, max) ((void)0) -#define SDK_NULL_ASSERT(exp) ((void)0) - -#ifdef _MSC_VER -#define SDK_ASSERTMSG(exp, msg) ((void)0) -#ifndef __cplusplus -#define inline __inline -#endif -#else -#define SDK_ASSERTMSG(exp, ...) ((void)0) -#endif -#endif - -static void G3BS_Direct0(GXDLInfo * info, int op); -static void G3BS_Direct1(GXDLInfo * info, int op, u32 param0); -static void G3BS_Direct2(GXDLInfo * info, int op, u32 param0, u32 param1); -static void G3BS_Direct3(GXDLInfo * info, int op, u32 param0, u32 param1, u32 param2); -void G3BS_DirectN(GXDLInfo * info, int op, int nParams, const u32 * params); - -static void G3BS_Nop(GXDLInfo * info); -static void G3BS_MtxMode(GXDLInfo * info, GXMtxMode mode); -static void G3BS_PushMtx(GXDLInfo * info); -static void G3BS_PopMtx(GXDLInfo * info, int num); -static void G3BS_StoreMtx(GXDLInfo * info, int num); -static void G3BS_RestoreMtx(GXDLInfo * info, int num); -static void G3BS_Identity(GXDLInfo * info); -void G3BS_LoadMtx44(GXDLInfo * info, const MtxFx44 * m); -void G3BS_LoadMtx43(GXDLInfo * info, const MtxFx43 * m); -void G3BS_MultMtx44(GXDLInfo * info, const MtxFx44 * m); -void G3BS_MultMtx43(GXDLInfo * info, const MtxFx43 * m); -void G3BS_MultMtx33(GXDLInfo * info, const MtxFx33 * m); -void G3BS_MultTransMtx33(GXDLInfo * info, const MtxFx33 * mtx, const VecFx32 * trans); -static void G3BS_Scale(GXDLInfo * info, fx32 x, fx32 y, fx32 z); -static void G3BS_Translate(GXDLInfo * info, fx32 x, fx32 y, fx32 z); -static void G3BS_Color(GXDLInfo * info, GXRgb rgb); -static void G3BS_Normal(GXDLInfo * info, fx16 x, fx16 y, fx16 z); -static void G3BS_TexCoord(GXDLInfo * info, fx32 s, fx32 t); -static void G3BS_Vtx(GXDLInfo * info, fx16 x, fx16 y, fx16 z); -static void G3BS_Vtx10(GXDLInfo * info, fx16 x, fx16 y, fx16 z); -static void G3BS_VtxXY(GXDLInfo * info, fx16 x, fx16 y); -static void G3BS_VtxXZ(GXDLInfo * info, fx16 x, fx16 z); -static void G3BS_VtxYZ(GXDLInfo * info, fx16 y, fx16 z); -static void G3BS_VtxDiff(GXDLInfo * info, fx16 x, fx16 y, fx16 z); -static void G3BS_PolygonAttr(GXDLInfo * info, int light, GXPolygonMode polyMode, GXCull cullMode, int polygonID, int alpha, int misc -); -static void G3BS_TexImageParam(GXDLInfo * info, - GXTexFmt texFmt, - GXTexGen texGen, - GXTexSizeS s, - GXTexSizeT t, - GXTexRepeat repeat, GXTexFlip flip, GXTexPlttColor0 pltt0, u32 addr); -static void G3BS_TexPlttBase(GXDLInfo * info, u32 addr, GXTexFmt texfmt); -static void G3BS_MaterialColorDiffAmb(GXDLInfo * info, GXRgb diffuse, GXRgb ambient, - BOOL IsSetVtxColor); -static void G3BS_MaterialColorSpecEmi(GXDLInfo * info, GXRgb specular, GXRgb emission, - BOOL IsShininess); -static void G3BS_LightVector(GXDLInfo * info, GXLightId lightID, fx16 x, fx16 y, fx16 z); -static void G3BS_LightColor(GXDLInfo * info, GXLightId lightID, GXRgb rgb); -static void G3BS_Shininess(GXDLInfo * info, const u32 * table); -static void G3BS_Begin(GXDLInfo * info, GXBegin primitive); -static void G3BS_End(GXDLInfo * info); -static void G3BS_SwapBuffers(GXDLInfo * info, GXSortMode am, GXBufferMode zw); -static void G3BS_ViewPort(GXDLInfo * info, int x1, int y1, int x2, int y2); -static void G3BS_BoxTest(GXDLInfo * info, const GXBoxTestParam * box); -static void G3BS_PositionTest(GXDLInfo * info, fx16 x, fx16 y, fx16 z); -static void G3BS_VectorTest(GXDLInfo * info, fx16 x, fx16 y, fx16 z); - -static void G3B_UpdateGXDLInfo(GXDLInfo * info, int n); -void G3B_Direct0(GXDLInfo * info, int op); -void G3B_Direct1(GXDLInfo * info, int op, u32 param0); -void G3B_Direct2(GXDLInfo * info, int op, u32 param0, u32 param1); -void G3B_Direct3(GXDLInfo * info, int op, u32 param0, u32 param1, u32 param2); -void G3B_DirectN(GXDLInfo * info, int op, int nParams, const u32 * params); - -void G3B_Nop(GXDLInfo * info); -void G3B_MtxMode(GXDLInfo * info, GXMtxMode mode); -void G3B_PushMtx(GXDLInfo * info); -void G3B_PopMtx(GXDLInfo * info, int num); -void G3B_StoreMtx(GXDLInfo * info, int num); -void G3B_RestoreMtx(GXDLInfo * info, int num); -void G3B_Identity(GXDLInfo * info); -void G3B_LoadMtx44(GXDLInfo * info, const MtxFx44 * m); -void G3B_LoadMtx43(GXDLInfo * info, const MtxFx43 * m); -void G3B_MultMtx44(GXDLInfo * info, const MtxFx44 * m); -void G3B_MultMtx43(GXDLInfo * info, const MtxFx43 * m); -void G3B_MultMtx33(GXDLInfo * info, const MtxFx33 * m); -void G3B_Scale(GXDLInfo * info, fx32 x, fx32 y, fx32 z); -void G3B_Translate(GXDLInfo * info, fx32 x, fx32 y, fx32 z); -void G3B_MultTransMtx33(GXDLInfo * info, const MtxFx33 * mtx, const VecFx32 * trans); -void G3B_Color(GXDLInfo * info, GXRgb rgb); -void G3B_Normal(GXDLInfo * info, fx16 x, fx16 y, fx16 z); -void G3B_TexCoord(GXDLInfo * info, fx32 s, fx32 t); -void G3B_Vtx(GXDLInfo * info, fx16 x, fx16 y, fx16 z); -void G3B_Vtx10(GXDLInfo * info, fx16 x, fx16 y, fx16 z); -void G3B_VtxXY(GXDLInfo * info, fx16 x, fx16 y); -void G3B_VtxXZ(GXDLInfo * info, fx16 x, fx16 z); -void G3B_VtxYZ(GXDLInfo * info, fx16 y, fx16 z); -void G3B_VtxDiff(GXDLInfo * info, fx16 x, fx16 y, fx16 z); -void G3B_PolygonAttr(GXDLInfo * info, int light, GXPolygonMode polyMode, GXCull cullMode, int polygonID, int alpha, int misc -); -void G3B_TexImageParam(GXDLInfo * info, - GXTexFmt texFmt, - GXTexGen texGen, - GXTexSizeS s, - GXTexSizeT t, - GXTexRepeat repeat, GXTexFlip flip, GXTexPlttColor0 pltt0, u32 addr); -void G3B_TexPlttBase(GXDLInfo * info, u32 addr, GXTexFmt texfmt); -void G3B_MaterialColorDiffAmb(GXDLInfo * info, GXRgb diffuse, GXRgb ambient, BOOL IsSetVtxColor); -void G3B_MaterialColorSpecEmi(GXDLInfo * info, GXRgb specular, GXRgb emission, BOOL IsShininess); -void G3B_LightVector(GXDLInfo * info, GXLightId lightID, fx16 x, fx16 y, fx16 z); -void G3B_LightColor(GXDLInfo * info, GXLightId lightID, GXRgb rgb); -void G3B_Shininess(GXDLInfo * info, const u32 * table); -void G3B_Begin(GXDLInfo * info, GXBegin primitive); -void G3B_End(GXDLInfo * info); -void G3B_SwapBuffers(GXDLInfo * info, GXSortMode am, GXBufferMode zw); -void G3B_ViewPort(GXDLInfo * info, int x1, int y1, int x2, int y2); -void G3B_BoxTest(GXDLInfo * info, const GXBoxTestParam * box); -void G3B_PositionTest(GXDLInfo * info, fx16 x, fx16 y, fx16 z); -void G3B_VectorTest(GXDLInfo * info, fx16 x, fx16 y, fx16 z); - -#define GXBS_CURR_ALIGNMENT_ASSERT(x) SDK_ASSERT(((u32)x->curr_cmd & 0x03) == 0) - -static inline void G3BS_Direct0 (GXDLInfo * info, int op) -{ - SDK_NULL_ASSERT(info); - GXBS_CURR_ALIGNMENT_ASSERT(info); - GX_VALID_OPCODE_ASSERT(op); - - *(u32 *)info->curr_cmd = (u32)op; -} - -static inline void G3BS_Direct1 (GXDLInfo * info, int op, u32 param0) -{ - SDK_NULL_ASSERT(info); - GXBS_CURR_ALIGNMENT_ASSERT(info); - GX_VALID_OPCODE_ASSERT(op); - - *(u32 *)info->curr_cmd = (u32)op; - *info->curr_param = param0; -} - -static inline void G3BS_Direct2 (GXDLInfo * info, int op, u32 param0, u32 param1) -{ - SDK_NULL_ASSERT(info); - GXBS_CURR_ALIGNMENT_ASSERT(info); - GX_VALID_OPCODE_ASSERT(op); - - *(u32 *)info->curr_cmd = (u32)op; - *(info->curr_param + 0) = param0; - *(info->curr_param + 1) = param1; -} - -static inline void G3BS_Direct3 (GXDLInfo * info, int op, u32 param0, u32 param1, u32 param2) -{ - SDK_NULL_ASSERT(info); - GXBS_CURR_ALIGNMENT_ASSERT(info); - GX_VALID_OPCODE_ASSERT(op); - - *(u32 *)info->curr_cmd = (u32)op; - *(info->curr_param + 0) = param0; - *(info->curr_param + 1) = param1; - *(info->curr_param + 2) = param2; -} - -static inline void G3BS_Nop (GXDLInfo * info) -{ - G3BS_Direct0(info, G3OP_NOP); -} - -static inline void G3BS_MtxMode (GXDLInfo * info, GXMtxMode mode) -{ - GX_MTXMODE_ASSERT(mode); - - G3BS_Direct1(info, G3OP_MTX_MODE, GX_PACK_MTXMODE_PARAM(mode)); -} - -static inline void G3BS_PushMtx (GXDLInfo * info) -{ - G3BS_Direct0(info, G3OP_MTX_PUSH); -} - -static inline void G3BS_PopMtx (GXDLInfo * info, int num) -{ - GX_MTX_POP_NUM_ASSERT(num); - - G3BS_Direct1(info, G3OP_MTX_POP, GX_PACK_POPMTX_PARAM(num)); -} - -static inline void G3BS_StoreMtx (GXDLInfo * info, int num) -{ - GX_MTX_STORE_NUM_ASSERT(num); - - G3BS_Direct1(info, G3OP_MTX_STORE, GX_PACK_STOREMTX_PARAM(num)); -} - -static inline void G3BS_RestoreMtx (GXDLInfo * info, int num) -{ - GX_MTX_RESTORE_NUM_ASSERT(num); - - G3BS_Direct1(info, G3OP_MTX_RESTORE, GX_PACK_RESTOREMTX_PARAM(num)); -} - -static inline void G3BS_Identity (GXDLInfo * info) -{ - G3BS_Direct0(info, G3OP_MTX_IDENTITY); -} - -static inline void G3BS_Scale (GXDLInfo * info, fx32 x, fx32 y, fx32 z) -{ - G3BS_Direct3(info, G3OP_MTX_SCALE, (u32)x, (u32)y, (u32)z); -} - -static inline void G3BS_Translate (GXDLInfo * info, fx32 x, fx32 y, fx32 z) -{ - G3BS_Direct3(info, G3OP_MTX_TRANS, (u32)x, (u32)y, (u32)z); -} - -static inline void G3BS_Color (GXDLInfo * info, GXRgb rgb) -{ - GXRGB_ASSERT(rgb); - G3BS_Direct1(info, G3OP_COLOR, GX_PACK_COLOR_PARAM(rgb)); -} - -static inline void G3BS_Normal (GXDLInfo * info, fx16 x, fx16 y, fx16 z) -{ - SDK_MINMAX_ASSERT(x, -FX16_ONE, FX16_ONE - 1); - SDK_MINMAX_ASSERT(y, -FX16_ONE, FX16_ONE - 1); - SDK_MINMAX_ASSERT(z, -FX16_ONE, FX16_ONE - 1); - - G3BS_Direct1(info, G3OP_NORMAL, GX_PACK_NORMAL_PARAM(x, y, z)); -} - -static inline void G3BS_TexCoord (GXDLInfo * info, fx32 s, fx32 t) -{ - SDK_MINMAX_ASSERT(s, -2048 * FX32_ONE, 2048 * FX32_ONE - 1); - SDK_MINMAX_ASSERT(t, -2048 * FX32_ONE, 2048 * FX32_ONE - 1); - - G3BS_Direct1(info, G3OP_TEXCOORD, GX_PACK_TEXCOORD_PARAM(s, t)); -} - -static inline void G3BS_Vtx (GXDLInfo * info, fx16 x, fx16 y, fx16 z) -{ - G3BS_Direct2(info, G3OP_VTX_16, GX_FX16PAIR(x, y), (u32)(u16)z); -} - -static inline void G3BS_Vtx10 (GXDLInfo * info, fx16 x, fx16 y, fx16 z) -{ - G3BS_Direct1(info, G3OP_VTX_10, GX_PACK_VTX10_PARAM(x, y, z)); -} - -static inline void G3BS_VtxXY (GXDLInfo * info, fx16 x, fx16 y) -{ - G3BS_Direct1(info, G3OP_VTX_XY, GX_PACK_VTXXY_PARAM(x, y)); -} - -static inline void G3BS_VtxXZ (GXDLInfo * info, fx16 x, fx16 z) -{ - G3BS_Direct1(info, G3OP_VTX_XZ, GX_PACK_VTXXZ_PARAM(x, z)); -} - -static inline void G3BS_VtxYZ (GXDLInfo * info, fx16 y, fx16 z) -{ - G3BS_Direct1(info, G3OP_VTX_YZ, GX_PACK_VTXYZ_PARAM(y, z)); -} - -static inline void G3BS_VtxDiff (GXDLInfo * info, fx16 x, fx16 y, fx16 z) -{ - SDK_MINMAX_ASSERT(x, (fx16)0xfe00, (fx16)0x1ff); - SDK_MINMAX_ASSERT(y, (fx16)0xfe00, (fx16)0x1ff); - SDK_MINMAX_ASSERT(z, (fx16)0xfe00, (fx16)0x1ff); - - G3BS_Direct1(info, G3OP_VTX_DIFF, GX_PACK_VTXDIFF_PARAM(x, y, z)); -} - -static inline void G3BS_PolygonAttr (GXDLInfo * info, int light, GXPolygonMode polyMode, GXCull cullMode, int polygonID, int alpha, int misc -) -{ - GX_LIGHTMASK_ASSERT(light); - GX_POLYGONMODE_ASSERT(polyMode); - GX_CULL_ASSERT(cullMode); - GX_POLYGON_ATTR_POLYGONID_ASSERT(polygonID); - GX_POLYGON_ATTR_ALPHA_ASSERT(alpha); - - G3BS_Direct1(info, - G3OP_POLYGON_ATTR, - GX_PACK_POLYGONATTR_PARAM(light, polyMode, cullMode, polygonID, alpha, misc)); -} - -static inline void G3BS_TexImageParam (GXDLInfo * info, - GXTexFmt texFmt, - GXTexGen texGen, - GXTexSizeS s, - GXTexSizeT t, - GXTexRepeat repeat, - GXTexFlip flip, GXTexPlttColor0 pltt0, u32 addr) -{ - GX_TEXREPEAT_ASSERT(repeat); - GX_TEXFLIP_ASSERT(flip); - GX_TEXSIZE_S_ASSERT(s); - GX_TEXSIZE_T_ASSERT(t); - GX_TEXFMT_ASSERT(texFmt); - GX_TEXPLTTCOLOR0_ASSERT(pltt0); - GX_TEXGEN_ASSERT(texGen); - GX_TEXIMAGE_PARAM_ADDR_ASSERT(addr); - - G3BS_Direct1(info, - G3OP_TEXIMAGE_PARAM, - GX_PACK_TEXIMAGE_PARAM(texFmt, texGen, s, t, repeat, flip, pltt0, addr)); -} - -static inline void G3BS_TexPlttBase (GXDLInfo * info, u32 addr, GXTexFmt texfmt) -{ - u32 param = GX_PACK_TEXPLTTBASE_PARAM(addr, texfmt); - GX_TEXPLTTBASEPARAM_ASSERT(param); - - G3BS_Direct1(info, G3OP_TEXPLTT_BASE, param); -} - -static inline void G3BS_MaterialColorDiffAmb (GXDLInfo * info, - GXRgb diffuse, GXRgb ambient, BOOL IsSetVtxColor) -{ - GXRGB_ASSERT(diffuse); - GXRGB_ASSERT(ambient); - - G3BS_Direct1(info, G3OP_DIF_AMB, GX_PACK_DIFFAMB_PARAM(diffuse, ambient, IsSetVtxColor)); -} - -static inline void G3BS_MaterialColorSpecEmi (GXDLInfo * info, - GXRgb specular, GXRgb emission, BOOL IsShininess) -{ - GXRGB_ASSERT(specular); - GXRGB_ASSERT(emission); - - G3BS_Direct1(info, G3OP_SPE_EMI, GX_PACK_SPECEMI_PARAM(specular, emission, IsShininess)); -} - -static inline void G3BS_LightVector (GXDLInfo * info, GXLightId lightID, fx16 x, fx16 y, fx16 z) -{ - GX_LIGHTID_ASSERT(lightID); - SDK_MINMAX_ASSERT(x, -FX16_ONE, FX16_ONE - 1); - SDK_MINMAX_ASSERT(y, -FX16_ONE, FX16_ONE - 1); - SDK_MINMAX_ASSERT(z, -FX16_ONE, FX16_ONE - 1); - - G3BS_Direct1(info, G3OP_LIGHT_VECTOR, GX_PACK_LIGHTVECTOR_PARAM(lightID, x, y, z)); -} - -static inline void G3BS_LightColor (GXDLInfo * info, GXLightId lightID, GXRgb rgb) -{ - GX_LIGHTID_ASSERT(lightID); - GXRGB_ASSERT(rgb); - - G3BS_Direct1(info, G3OP_LIGHT_COLOR, GX_PACK_LIGHTCOLOR_PARAM(lightID, rgb)); -} - -static inline void G3BS_Shininess (GXDLInfo * info, const u32 * table) -{ - G3BS_DirectN(info, G3OP_SHININESS, 32, table); -} - -static inline void G3BS_Begin (GXDLInfo * info, GXBegin primitive) -{ - GX_BEGIN_ASSERT(primitive); - - G3BS_Direct1(info, G3OP_BEGIN, GX_PACK_BEGIN_PARAM(primitive)); -} - -static inline void G3BS_End (GXDLInfo * info) -{ - G3BS_Direct0(info, G3OP_END); -} - -static inline void G3BS_SwapBuffers (GXDLInfo * info, GXSortMode am, GXBufferMode zw) -{ - GX_SORTMODE_ASSERT(am); - GX_BUFFERMODE_ASSERT(zw); - - G3BS_Direct1(info, G3OP_SWAP_BUFFERS, GX_PACK_SWAPBUFFERS_PARAM(am, zw)); -} - -static inline void G3BS_ViewPort (GXDLInfo * info, int x1, int y1, int x2, int y2) -{ - GX_VIEWPORT_ASSERT(x1, y1, x2, y2); - - G3BS_Direct1(info, G3OP_VIEWPORT, GX_PACK_VIEWPORT_PARAM(x1, y1, x2, y2)); -} - -static inline void G3BS_BoxTest (GXDLInfo * info, const GXBoxTestParam * box) -{ - G3BS_Direct3(info, G3OP_BOX_TEST, box->val[0], box->val[1], box->val[2]); -} - -static inline void G3BS_PositionTest (GXDLInfo * info, fx16 x, fx16 y, fx16 z) -{ - G3BS_Direct2(info, G3OP_POS_TEST, GX_FX16PAIR(x, y), (u32)(u16)z); -} - -static inline void G3BS_VectorTest (GXDLInfo * info, fx16 x, fx16 y, fx16 z) -{ - SDK_MINMAX_ASSERT(x, -FX16_ONE, FX16_ONE - 1); - SDK_MINMAX_ASSERT(y, -FX16_ONE, FX16_ONE - 1); - SDK_MINMAX_ASSERT(z, -FX16_ONE, FX16_ONE - 1); - - G3BS_Direct1(info, G3OP_VEC_TEST, GX_PACK_VECTORTEST_PARAM(x, y, z)); -} - -static inline void G3B_UpdateGXDLInfo (GXDLInfo * info, int n) -{ - info->curr_cmd = (u8 *)(info->curr_param + n); - info->curr_param = (u32 *)(info->curr_cmd + 4); - - SDK_ASSERTMSG(((u32)(info->curr_cmd) - (u32)info->bottom <= info->length), - "Buffer overflow ! : Current DL buffer doesn't have enough capacity for new commands\n"); -} - -#if (defined(_MSC_VER) && !defined(_cplusplus)) -#undef inline -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/gx/g3c.h b/subprojects/NitroSDK/include/nitro/gx/g3c.h deleted file mode 100644 index 93809dc490..0000000000 --- a/subprojects/NitroSDK/include/nitro/gx/g3c.h +++ /dev/null @@ -1,378 +0,0 @@ -#ifndef NITRO_G3C_H_ -#define NITRO_G3C_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#if (defined(SDK_WIN32) || defined(SDK_FROM_TOOL)) -#define SDK_ASSERT(exp) ((void)0) -#define SDK_ALIGN4_ASSERT(exp) ((void)0) -#define SDK_MINMAX_ASSERT(exp, min, max) ((void)0) -#define SDK_NULL_ASSERT(exp) ((void)0) -#if (defined(_MSC_VER) && !defined(__cplusplus)) -#define inline __inline -#endif -#endif - -void G3CS_Direct0(GXDLInfo * info, int op); -void G3CS_Direct1(GXDLInfo * info, int op, u32 param0); -void G3CS_Direct2(GXDLInfo * info, int op, u32 param0, u32 param1); -void G3CS_Direct3(GXDLInfo * info, int op, u32 param0, u32 param1, u32 param2); -void G3CS_DirectN(GXDLInfo * info, int op, int nParams, const u32 * params); - -static void G3CS_Nop(GXDLInfo * info); -static void G3CS_MtxMode(GXDLInfo * info, GXMtxMode mode); -static void G3CS_PushMtx(GXDLInfo * info); -static void G3CS_PopMtx(GXDLInfo * info, int num); -static void G3CS_StoreMtx(GXDLInfo * info, int num); -static void G3CS_RestoreMtx(GXDLInfo * info, int num); -static void G3CS_Identity(GXDLInfo * info); -void G3CS_LoadMtx44(GXDLInfo * info, const MtxFx44 * m); -void G3CS_LoadMtx43(GXDLInfo * info, const MtxFx43 * m); -void G3CS_MultMtx44(GXDLInfo * info, const MtxFx44 * m); -void G3CS_MultMtx43(GXDLInfo * info, const MtxFx43 * m); -void G3CS_MultMtx33(GXDLInfo * info, const MtxFx33 * m); -void G3CS_MultTransMtx33(GXDLInfo * info, const MtxFx33 * mtx, const VecFx32 * trans); -static void G3CS_Scale(GXDLInfo * info, fx32 x, fx32 y, fx32 z); -static void G3CS_Translate(GXDLInfo * info, fx32 x, fx32 y, fx32 z); -static void G3CS_Color(GXDLInfo * info, GXRgb rgb); -static void G3CS_Normal(GXDLInfo * info, fx16 x, fx16 y, fx16 z); -static void G3CS_TexCoord(GXDLInfo * info, fx32 s, fx32 t); -static void G3CS_Vtx(GXDLInfo * info, fx16 x, fx16 y, fx16 z); -static void G3CS_Vtx10(GXDLInfo * info, fx16 x, fx16 y, fx16 z); -static void G3CS_VtxXY(GXDLInfo * info, fx16 x, fx16 y); -static void G3CS_VtxXZ(GXDLInfo * info, fx16 x, fx16 z); -static void G3CS_VtxYZ(GXDLInfo * info, fx16 y, fx16 z); -static void G3CS_VtxDiff(GXDLInfo * info, fx16 x, fx16 y, fx16 z); -static void G3CS_PolygonAttr(GXDLInfo * info, int light, GXPolygonMode polyMode, GXCull cullMode, int polygonID, int alpha, int misc -); -static void G3CS_TexImageParam(GXDLInfo * info, - GXTexFmt texFmt, - GXTexGen texGen, - GXTexSizeS s, - GXTexSizeT t, - GXTexRepeat repeat, GXTexFlip flip, GXTexPlttColor0 pltt0, u32 addr); -static void G3CS_TexPlttBase(GXDLInfo * info, u32 addr, GXTexFmt texfmt); -static void G3CS_MaterialColorDiffAmb(GXDLInfo * info, GXRgb diffuse, GXRgb ambient, - BOOL IsSetVtxColor); -static void G3CS_MaterialColorSpecEmi(GXDLInfo * info, GXRgb specular, GXRgb emission, - BOOL IsShininess); -static void G3CS_LightVector(GXDLInfo * info, GXLightId lightID, fx16 x, fx16 y, fx16 z); -static void G3CS_LightColor(GXDLInfo * info, GXLightId lightID, GXRgb rgb); -static void G3CS_Shininess(GXDLInfo * info, const u32 * table); -static void G3CS_Begin(GXDLInfo * info, GXBegin primitive); -static void G3CS_End(GXDLInfo * info); -static void G3CS_SwapBuffers(GXDLInfo * info, GXSortMode am, GXBufferMode zw); -static void G3CS_ViewPort(GXDLInfo * info, int x1, int y1, int x2, int y2); -static void G3CS_BoxTest(GXDLInfo * info, const GXBoxTestParam * box); -static void G3CS_PositionTest(GXDLInfo * info, fx16 x, fx16 y, fx16 z); -static void G3CS_VectorTest(GXDLInfo * info, fx16 x, fx16 y, fx16 z); - -void G3C_UpdateGXDLInfo(GXDLInfo * info, int n); -void G3C_Direct0(GXDLInfo * info, int op); -void G3C_Direct1(GXDLInfo * info, int op, u32 param0); -void G3C_Direct2(GXDLInfo * info, int op, u32 param0, u32 param1); -void G3C_Direct3(GXDLInfo * info, int op, u32 param0, u32 param1, u32 param2); -void G3C_DirectN(GXDLInfo * info, int op, int nParams, const u32 * params); - -void G3C_Nop(GXDLInfo * info); -void G3C_MtxMode(GXDLInfo * info, GXMtxMode mode); -void G3C_PushMtx(GXDLInfo * info); -void G3C_PopMtx(GXDLInfo * info, int num); -void G3C_StoreMtx(GXDLInfo * info, int num); -void G3C_RestoreMtx(GXDLInfo * info, int num); -void G3C_Identity(GXDLInfo * info); -void G3C_LoadMtx44(GXDLInfo * info, const MtxFx44 * m); -void G3C_LoadMtx43(GXDLInfo * info, const MtxFx43 * m); -void G3C_MultMtx44(GXDLInfo * info, const MtxFx44 * m); -void G3C_MultMtx43(GXDLInfo * info, const MtxFx43 * m); -void G3C_MultMtx33(GXDLInfo * info, const MtxFx33 * m); -void G3C_MultTransMtx33(GXDLInfo * info, const MtxFx33 * mtx, const VecFx32 * trans); -void G3C_Scale(GXDLInfo * info, fx32 x, fx32 y, fx32 z); -void G3C_Translate(GXDLInfo * info, fx32 x, fx32 y, fx32 z); -void G3C_Color(GXDLInfo * info, GXRgb rgb); -void G3C_Normal(GXDLInfo * info, fx16 x, fx16 y, fx16 z); -void G3C_TexCoord(GXDLInfo * info, fx32 s, fx32 t); -void G3C_Vtx(GXDLInfo * info, fx16 x, fx16 y, fx16 z); -void G3C_Vtx10(GXDLInfo * info, fx16, fx16, fx16); -void G3C_VtxXY(GXDLInfo * info, fx16 x, fx16 y); -void G3C_VtxXZ(GXDLInfo * info, fx16 x, fx16 z); -void G3C_VtxYZ(GXDLInfo * info, fx16 y, fx16 z); -void G3C_VtxDiff(GXDLInfo * info, fx16 x, fx16 y, fx16 z); -void G3C_PolygonAttr(GXDLInfo * info, int light, GXPolygonMode polyMode, GXCull cullMode, int polygonID, int alpha, int misc -); -void G3C_TexImageParam(GXDLInfo * info, - GXTexFmt texFmt, - GXTexGen texGen, - GXTexSizeS s, - GXTexSizeT t, - GXTexRepeat repeat, GXTexFlip flip, GXTexPlttColor0 pltt0, u32 addr); -void G3C_TexPlttBase(GXDLInfo * info, u32 addr, GXTexFmt texfmt); -void G3C_MaterialColorDiffAmb(GXDLInfo * info, GXRgb diffuse, GXRgb ambient, BOOL IsSetVtxColor); -void G3C_MaterialColorSpecEmi(GXDLInfo * info, GXRgb specular, GXRgb emission, BOOL IsShininess); -void G3C_LightVector(GXDLInfo * info, GXLightId lightID, fx16 x, fx16 y, fx16 z); -void G3C_LightColor(GXDLInfo * info, GXLightId lightID, GXRgb rgb); -void G3C_Shininess(GXDLInfo * info, const u32 * table); -void G3C_Begin(GXDLInfo * info, GXBegin primitive); -void G3C_End(GXDLInfo * info); -void G3C_SwapBuffers(GXDLInfo * info, GXSortMode am, GXBufferMode zw); -void G3C_ViewPort(GXDLInfo * info, int x1, int y1, int x2, int y2); -void G3C_BoxTest(GXDLInfo * info, const GXBoxTestParam * box); -void G3C_PositionTest(GXDLInfo * info, fx16 x, fx16 y, fx16 z); -void G3C_VectorTest(GXDLInfo * info, fx16 x, fx16 y, fx16 z); - -static inline void G3CS_Nop (GXDLInfo * info) -{ - G3CS_Direct0(info, G3OP_NOP); -} - -static inline void G3CS_MtxMode (GXDLInfo * info, GXMtxMode mode) -{ - GX_MTXMODE_ASSERT(mode); - - G3CS_Direct1(info, G3OP_MTX_MODE, GX_PACK_MTXMODE_PARAM(mode)); -} - -static inline void G3CS_PushMtx (GXDLInfo * info) -{ - G3CS_Direct0(info, G3OP_MTX_PUSH); -} - -static inline void G3CS_PopMtx (GXDLInfo * info, int num) -{ - GX_MTX_POP_NUM_ASSERT(num); - - G3CS_Direct1(info, G3OP_MTX_POP, GX_PACK_POPMTX_PARAM(num)); -} - -static inline void G3CS_StoreMtx (GXDLInfo * info, int num) -{ - GX_MTX_STORE_NUM_ASSERT(num); - - G3CS_Direct1(info, G3OP_MTX_STORE, GX_PACK_STOREMTX_PARAM(num)); -} - -static inline void G3CS_RestoreMtx (GXDLInfo * info, int num) -{ - GX_MTX_RESTORE_NUM_ASSERT(num); - - G3CS_Direct1(info, G3OP_MTX_RESTORE, GX_PACK_RESTOREMTX_PARAM(num)); -} - -static inline void G3CS_Identity (GXDLInfo * info) -{ - G3CS_Direct0(info, G3OP_MTX_IDENTITY); -} - -static inline void G3CS_Scale (GXDLInfo * info, fx32 x, fx32 y, fx32 z) -{ - G3CS_Direct3(info, G3OP_MTX_SCALE, (u32)x, (u32)y, (u32)z); -} - -static inline void G3CS_Translate (GXDLInfo * info, fx32 x, fx32 y, fx32 z) -{ - G3CS_Direct3(info, G3OP_MTX_TRANS, (u32)x, (u32)y, (u32)z); -} - -static inline void G3CS_Color (GXDLInfo * info, GXRgb rgb) -{ - GXRGB_ASSERT(rgb); - - G3CS_Direct1(info, G3OP_COLOR, GX_PACK_COLOR_PARAM(rgb)); -} - -static inline void G3CS_Normal (GXDLInfo * info, fx16 x, fx16 y, fx16 z) -{ - SDK_MINMAX_ASSERT(x, -FX16_ONE, FX16_ONE - 1); - SDK_MINMAX_ASSERT(y, -FX16_ONE, FX16_ONE - 1); - SDK_MINMAX_ASSERT(z, -FX16_ONE, FX16_ONE - 1); - - G3CS_Direct1(info, G3OP_NORMAL, GX_PACK_NORMAL_PARAM(x, y, z)); -} - -static inline void G3CS_TexCoord (GXDLInfo * info, fx32 s, fx32 t) -{ - SDK_MINMAX_ASSERT(s, -2048 * FX32_ONE, 2048 * FX32_ONE - 1); - SDK_MINMAX_ASSERT(t, -2048 * FX32_ONE, 2048 * FX32_ONE - 1); - - G3CS_Direct1(info, G3OP_TEXCOORD, GX_PACK_TEXCOORD_PARAM(s, t)); -} - -static inline void G3CS_Vtx (GXDLInfo * info, fx16 x, fx16 y, fx16 z) -{ - G3CS_Direct2(info, G3OP_VTX_16, GX_FX16PAIR(x, y), (u32)(u16)z); -} - -static inline void G3CS_Vtx10 (GXDLInfo * info, fx16 x, fx16 y, fx16 z) -{ - G3CS_Direct1(info, G3OP_VTX_10, GX_PACK_VTX10_PARAM(x, y, z)); -} - -static inline void G3CS_VtxXY (GXDLInfo * info, fx16 x, fx16 y) -{ - G3CS_Direct1(info, G3OP_VTX_XY, GX_PACK_VTXXY_PARAM(x, y)); -} - -static inline void G3CS_VtxXZ (GXDLInfo * info, fx16 x, fx16 z) -{ - G3CS_Direct1(info, G3OP_VTX_XZ, GX_PACK_VTXXZ_PARAM(x, z)); -} - -static inline void G3CS_VtxYZ (GXDLInfo * info, fx16 y, fx16 z) -{ - G3CS_Direct1(info, G3OP_VTX_YZ, GX_PACK_VTXYZ_PARAM(y, z)); -} - -static inline void G3CS_VtxDiff (GXDLInfo * info, fx16 x, fx16 y, fx16 z) -{ - SDK_MINMAX_ASSERT(x, (fx16)0xfe00, (fx16)0x1ff); - SDK_MINMAX_ASSERT(y, (fx16)0xfe00, (fx16)0x1ff); - SDK_MINMAX_ASSERT(z, (fx16)0xfe00, (fx16)0x1ff); - - G3CS_Direct1(info, G3OP_VTX_DIFF, GX_PACK_VTXDIFF_PARAM(x, y, z)); -} - -static inline void G3CS_PolygonAttr (GXDLInfo * info, int light, GXPolygonMode polyMode, GXCull cullMode, int polygonID, int alpha, int misc -) -{ - GX_LIGHTMASK_ASSERT(light); - GX_POLYGONMODE_ASSERT(polyMode); - GX_CULL_ASSERT(cullMode); - GX_POLYGON_ATTR_POLYGONID_ASSERT(polygonID); - GX_POLYGON_ATTR_ALPHA_ASSERT(alpha); - - G3CS_Direct1(info, - G3OP_POLYGON_ATTR, - GX_PACK_POLYGONATTR_PARAM(light, polyMode, cullMode, polygonID, alpha, misc)); -} - -static inline void G3CS_TexImageParam (GXDLInfo * info, - GXTexFmt texFmt, - GXTexGen texGen, - GXTexSizeS s, - GXTexSizeT t, - GXTexRepeat repeat, - GXTexFlip flip, GXTexPlttColor0 pltt0, u32 addr) -{ - GX_TEXREPEAT_ASSERT(repeat); - GX_TEXFLIP_ASSERT(flip); - GX_TEXSIZE_S_ASSERT(s); - GX_TEXSIZE_T_ASSERT(t); - GX_TEXFMT_ASSERT(texFmt); - GX_TEXPLTTCOLOR0_ASSERT(pltt0); - GX_TEXGEN_ASSERT(texGen); - GX_TEXIMAGE_PARAM_ADDR_ASSERT(addr); - - G3CS_Direct1(info, - G3OP_TEXIMAGE_PARAM, - GX_PACK_TEXIMAGE_PARAM(texFmt, texGen, s, t, repeat, flip, pltt0, addr)); -} - -static inline void G3CS_TexPlttBase (GXDLInfo * info, u32 addr, GXTexFmt texfmt) -{ - u32 param = GX_PACK_TEXPLTTBASE_PARAM(addr, texfmt); - GX_TEXPLTTBASEPARAM_ASSERT(param); - - G3CS_Direct1(info, G3OP_TEXPLTT_BASE, param); -} - -static inline void G3CS_MaterialColorDiffAmb (GXDLInfo * info, - GXRgb diffuse, GXRgb ambient, BOOL IsSetVtxColor) -{ - GXRGB_ASSERT(diffuse); - GXRGB_ASSERT(ambient); - - G3CS_Direct1(info, G3OP_DIF_AMB, GX_PACK_DIFFAMB_PARAM(diffuse, ambient, IsSetVtxColor)); -} - -static inline void G3CS_MaterialColorSpecEmi (GXDLInfo * info, - GXRgb specular, GXRgb emission, BOOL IsShininess) -{ - GXRGB_ASSERT(specular); - GXRGB_ASSERT(emission); - - G3CS_Direct1(info, G3OP_SPE_EMI, GX_PACK_SPECEMI_PARAM(specular, emission, IsShininess)); -} - -static inline void G3CS_LightVector (GXDLInfo * info, GXLightId lightID, fx16 x, fx16 y, fx16 z) -{ - GX_LIGHTID_ASSERT(lightID); - SDK_MINMAX_ASSERT(x, -FX16_ONE, FX16_ONE - 1); - SDK_MINMAX_ASSERT(y, -FX16_ONE, FX16_ONE - 1); - SDK_MINMAX_ASSERT(z, -FX16_ONE, FX16_ONE - 1); - - G3CS_Direct1(info, G3OP_LIGHT_VECTOR, GX_PACK_LIGHTVECTOR_PARAM(lightID, x, y, z)); -} - -static inline void G3CS_LightColor (GXDLInfo * info, GXLightId lightID, GXRgb rgb) -{ - GX_LIGHTID_ASSERT(lightID); - GXRGB_ASSERT(rgb); - - G3CS_Direct1(info, G3OP_LIGHT_COLOR, GX_PACK_LIGHTCOLOR_PARAM(lightID, rgb)); -} - -static inline void G3CS_Shininess (GXDLInfo * info, const u32 * table) -{ - G3CS_DirectN(info, G3OP_SHININESS, 32, table); -} - -static inline void G3CS_Begin (GXDLInfo * info, GXBegin primitive) -{ - GX_BEGIN_ASSERT(primitive); - - G3CS_Direct1(info, G3OP_BEGIN, GX_PACK_BEGIN_PARAM(primitive)); -} - -static inline void G3CS_End (GXDLInfo * info) -{ - G3CS_Direct0(info, G3OP_END); -} - -static inline void G3CS_SwapBuffers (GXDLInfo * info, GXSortMode am, GXBufferMode zw) -{ - GX_SORTMODE_ASSERT(am); - GX_BUFFERMODE_ASSERT(zw); - - G3CS_Direct1(info, G3OP_SWAP_BUFFERS, GX_PACK_SWAPBUFFERS_PARAM(am, zw)); -} - -static inline void G3CS_ViewPort (GXDLInfo * info, int x1, int y1, int x2, int y2) -{ - GX_VIEWPORT_ASSERT(x1, y1, x2, y2); - - G3CS_Direct1(info, G3OP_VIEWPORT, GX_PACK_VIEWPORT_PARAM(x1, y1, x2, y2)); -} - -static inline void G3CS_BoxTest (GXDLInfo * info, const GXBoxTestParam * box) -{ - G3CS_Direct3(info, G3OP_BOX_TEST, box->val[0], box->val[1], box->val[2]); -} - -static inline void G3CS_PositionTest (GXDLInfo * info, fx16 x, fx16 y, fx16 z) -{ - G3CS_Direct2(info, G3OP_POS_TEST, GX_FX16PAIR(x, y), (u32)(u16)z); -} - -static inline void G3CS_VectorTest (GXDLInfo * info, fx16 x, fx16 y, fx16 z) -{ - SDK_MINMAX_ASSERT(x, -FX16_ONE, FX16_ONE - 1); - SDK_MINMAX_ASSERT(y, -FX16_ONE, FX16_ONE - 1); - SDK_MINMAX_ASSERT(z, -FX16_ONE, FX16_ONE - 1); - - G3CS_Direct1(info, G3OP_VEC_TEST, GX_PACK_VECTORTEST_PARAM(x, y, z)); -} - -#if (defined(_MSC_VER) && !defined(_cplusplus)) -#undef inline -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/gx/g3imm.h b/subprojects/NitroSDK/include/nitro/gx/g3imm.h deleted file mode 100644 index fb104a2bb4..0000000000 --- a/subprojects/NitroSDK/include/nitro/gx/g3imm.h +++ /dev/null @@ -1,322 +0,0 @@ -#ifndef NITRO_G3IMM_H_ -#define NITRO_G3IMM_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -static void G3_Direct0(int op); -static void G3_Direct1(int op, u32 param0); -static void G3_Direct2(int op, u32 param0, u32 param1); -static void G3_Direct3(int op, u32 param0, u32 param1, u32 param2); - -static void G3_MtxMode(GXMtxMode mode); -static void G3_PushMtx(void); -static void G3_PopMtx(int num); -static void G3_StoreMtx(int num); -static void G3_RestoreMtx(int num); -static void G3_Identity(void); -void G3_LoadMtx44(const MtxFx44 * m); -void G3_LoadMtx43(const MtxFx43 * m); -void G3_MultMtx44(const MtxFx44 * m); -void G3_MultMtx43(const MtxFx43 * m); -void G3_MultMtx33(const MtxFx33 * m); -void G3_MultTransMtx33(const MtxFx33 * mtx, const VecFx32 * trans); -static void G3_Scale(fx32 x, fx32 y, fx32 z); -static void G3_Translate(fx32 x, fx32 y, fx32 z); -static void G3_Color(GXRgb rgb); -static void G3_Normal(fx16 x, fx16 y, fx16 z); -static void G3_TexCoord(fx32 s, fx32 t); -static void G3_Vtx(fx16 x, fx16 y, fx16 z); -static void G3_Vtx10(fx16 x, fx16 y, fx16 z); -static void G3_VtxXY(fx16 x, fx16 y); -static void G3_VtxXZ(fx16 x, fx16 z); -static void G3_VtxYZ(fx16 y, fx16 z); -static void G3_VtxDiff(fx16 x, fx16 y, fx16 z); -static void G3_PolygonAttr(int light, GXPolygonMode polyMode, GXCull cullMode, int polygonID, int alpha, int misc -); -static void G3_TexImageParam(GXTexFmt texFmt, - GXTexGen texGen, - GXTexSizeS s, - GXTexSizeT t, - GXTexRepeat repeat, GXTexFlip flip, GXTexPlttColor0 pltt0, u32 addr); -static void G3_TexPlttBase(u32 addr, GXTexFmt texfmt); -static void G3_MaterialColorDiffAmb(GXRgb diffuse, GXRgb ambient, BOOL IsSetVtxColor); -static void G3_MaterialColorSpecEmi(GXRgb specular, GXRgb emission, BOOL IsShininess); -static void G3_LightVector(GXLightId lightID, fx16 x, fx16 y, fx16 z); -static void G3_LightColor(GXLightId lightID, GXRgb rgb); -void G3_Shininess(const u32 * table); -static void G3_Begin(GXBegin primitive); -static void G3_End(void); -static void G3_SwapBuffers(GXSortMode am, GXBufferMode zw); -static void G3_ViewPort(int x1, int y1, int x2, int y2); -static void G3_BoxTest(const GXBoxTestParam * box); -static void G3_PositionTest(fx16 x, fx16 y, fx16 z); -static void G3_VectorTest(fx16 x, fx16 y, fx16 z); - -static inline void G3_Direct0 (int op) -{ - *(REGType32v *)(REG_MTX_MODE_ADDR + ((op - G3OP_MTX_MODE) * 4)) = 0; -} - -static inline void G3_Direct1 (int op, u32 param0) -{ - *(REGType32v *)(REG_MTX_MODE_ADDR + ((op - G3OP_MTX_MODE) * 4)) = param0; -} - -static inline void G3_Direct2 (int op, u32 param0, u32 param1) -{ - *(REGType32v *)(REG_MTX_MODE_ADDR + ((op - G3OP_MTX_MODE) * 4)) = param0; - *(REGType32v *)(REG_MTX_MODE_ADDR + ((op - G3OP_MTX_MODE) * 4)) = param1; -} - -static inline void G3_Direct3 (int op, u32 param0, u32 param1, u32 param2) -{ - *(REGType32v *)(REG_MTX_MODE_ADDR + ((op - G3OP_MTX_MODE) * 4)) = param0; - *(REGType32v *)(REG_MTX_MODE_ADDR + ((op - G3OP_MTX_MODE) * 4)) = param1; - *(REGType32v *)(REG_MTX_MODE_ADDR + ((op - G3OP_MTX_MODE) * 4)) = param2; -} - -static inline void G3_MtxMode (GXMtxMode mode) -{ - GX_MTXMODE_ASSERT(mode); - - reg_G3_MTX_MODE = GX_PACK_MTXMODE_PARAM(mode); -} - -static inline void G3_PushMtx () -{ - reg_G3_MTX_PUSH = 0; -} - -static inline void G3_PopMtx (int num) -{ - GX_MTX_POP_NUM_ASSERT(num); - - reg_G3_MTX_POP = GX_PACK_POPMTX_PARAM(num); -} - -static inline void G3_StoreMtx (int num) -{ - GX_MTX_STORE_NUM_ASSERT(num); - - reg_G3_MTX_STORE = GX_PACK_STOREMTX_PARAM(num); -} - -static inline void G3_RestoreMtx (int num) -{ - GX_MTX_RESTORE_NUM_ASSERT(num); - - reg_G3_MTX_RESTORE = GX_PACK_RESTOREMTX_PARAM(num); -} - -static inline void G3_Identity () -{ - reg_G3_MTX_IDENTITY = 0; -} - -static inline void G3_Scale (fx32 x, fx32 y, fx32 z) -{ - reg_G3_MTX_SCALE = (u32)x; - reg_G3_MTX_SCALE = (u32)y; - reg_G3_MTX_SCALE = (u32)z; -} - -static inline void G3_Translate (fx32 x, fx32 y, fx32 z) -{ - reg_G3_MTX_TRANS = (u32)x; - reg_G3_MTX_TRANS = (u32)y; - reg_G3_MTX_TRANS = (u32)z; -} - -static inline void G3_Color (GXRgb rgb) -{ - GXRGB_ASSERT(rgb); - - reg_G3_COLOR = GX_PACK_COLOR_PARAM(rgb); -} - -static inline void G3_Normal (fx16 x, fx16 y, fx16 z) -{ - SDK_MINMAX_ASSERT(x, -FX16_ONE, FX16_ONE - 1); - SDK_MINMAX_ASSERT(y, -FX16_ONE, FX16_ONE - 1); - SDK_MINMAX_ASSERT(z, -FX16_ONE, FX16_ONE - 1); - - reg_G3_NORMAL = GX_PACK_NORMAL_PARAM(x, y, z); -} - -static inline void G3_TexCoord (fx32 s, fx32 t) -{ - SDK_MINMAX_ASSERT(s, -2048 * FX32_ONE, 2048 * FX32_ONE - 1); - SDK_MINMAX_ASSERT(t, -2048 * FX32_ONE, 2048 * FX32_ONE - 1); - - reg_G3_TEXCOORD = GX_PACK_TEXCOORD_PARAM(s, t); -} - -static inline void G3_Vtx (fx16 x, fx16 y, fx16 z) -{ - reg_G3_VTX_16 = GX_FX16PAIR(x, y); - reg_G3_VTX_16 = (u32)(u16)z; -} - -static inline void G3_Vtx10 (fx16 x, fx16 y, fx16 z) -{ - reg_G3_VTX_10 = GX_PACK_VTX10_PARAM(x, y, z); -} - -static inline void G3_VtxXY (fx16 x, fx16 y) -{ - reg_G3_VTX_XY = GX_PACK_VTXXY_PARAM(x, y); -} - -static inline void G3_VtxXZ (fx16 x, fx16 z) -{ - reg_G3_VTX_XZ = GX_PACK_VTXXZ_PARAM(x, z); -} - -static inline void G3_VtxYZ (fx16 y, fx16 z) -{ - reg_G3_VTX_YZ = GX_PACK_VTXYZ_PARAM(y, z); -} - -static inline void G3_VtxDiff (fx16 x, fx16 y, fx16 z) -{ - SDK_MINMAX_ASSERT(x, (fx16)0xfe00, (fx16)0x1ff); - SDK_MINMAX_ASSERT(y, (fx16)0xfe00, (fx16)0x1ff); - SDK_MINMAX_ASSERT(z, (fx16)0xfe00, (fx16)0x1ff); - - reg_G3_VTX_DIFF = GX_PACK_VTXDIFF_PARAM(x, y, z); -} - -static inline void G3_PolygonAttr (int light, GXPolygonMode polyMode, GXCull cullMode, int polygonID, int alpha, int misc -) -{ - GX_LIGHTMASK_ASSERT(light); - GX_POLYGONMODE_ASSERT(polyMode); - GX_CULL_ASSERT(cullMode); - GX_POLYGON_ATTR_POLYGONID_ASSERT(polygonID); - GX_POLYGON_ATTR_ALPHA_ASSERT(alpha); - - reg_G3_POLYGON_ATTR = GX_PACK_POLYGONATTR_PARAM(light, - polyMode, cullMode, polygonID, alpha, misc); -} - -static inline void G3_TexImageParam (GXTexFmt texFmt, - GXTexGen texGen, - GXTexSizeS s, - GXTexSizeT t, - GXTexRepeat repeat, - GXTexFlip flip, GXTexPlttColor0 pltt0, u32 addr) -{ - GX_TEXREPEAT_ASSERT(repeat); - GX_TEXFLIP_ASSERT(flip); - GX_TEXSIZE_S_ASSERT(s); - GX_TEXSIZE_T_ASSERT(t); - GX_TEXFMT_ASSERT(texFmt); - GX_TEXPLTTCOLOR0_ASSERT(pltt0); - GX_TEXGEN_ASSERT(texGen); - GX_TEXIMAGE_PARAM_ADDR_ASSERT(addr); - - reg_G3_TEXIMAGE_PARAM = GX_PACK_TEXIMAGE_PARAM(texFmt, texGen, s, t, repeat, flip, pltt0, addr); -} - -static inline void G3_TexPlttBase (u32 addr, GXTexFmt texfmt) -{ - u32 param = GX_PACK_TEXPLTTBASE_PARAM(addr, texfmt); - GX_TEXPLTTBASEPARAM_ASSERT(param); - - reg_G3_TEXPLTT_BASE = param; -} - -static inline void G3_MaterialColorDiffAmb (GXRgb diffuse, GXRgb ambient, BOOL IsSetVtxColor) -{ - GXRGB_ASSERT(diffuse); - GXRGB_ASSERT(ambient); - - reg_G3_DIF_AMB = GX_PACK_DIFFAMB_PARAM(diffuse, ambient, IsSetVtxColor); -} - -static inline void G3_MaterialColorSpecEmi (GXRgb specular, GXRgb emission, BOOL IsShininess) -{ - GXRGB_ASSERT(specular); - GXRGB_ASSERT(emission); - - reg_G3_SPE_EMI = GX_PACK_SPECEMI_PARAM(specular, emission, IsShininess); -} - -static inline void G3_LightVector (GXLightId lightID, fx16 x, fx16 y, fx16 z) -{ - GX_LIGHTID_ASSERT(lightID); - SDK_MINMAX_ASSERT(x, -FX16_ONE, FX16_ONE - 1); - SDK_MINMAX_ASSERT(y, -FX16_ONE, FX16_ONE - 1); - SDK_MINMAX_ASSERT(z, -FX16_ONE, FX16_ONE - 1); - - reg_G3_LIGHT_VECTOR = GX_PACK_LIGHTVECTOR_PARAM(lightID, x, y, z); -} - -static inline void G3_LightColor (GXLightId lightID, GXRgb rgb) -{ - GX_LIGHTID_ASSERT(lightID); - GXRGB_ASSERT(rgb); - - reg_G3_LIGHT_COLOR = GX_PACK_LIGHTCOLOR_PARAM(lightID, rgb); -} - -static inline void G3_Begin (GXBegin primitive) -{ - GX_BEGIN_ASSERT(primitive); - - reg_G3_BEGIN_VTXS = GX_PACK_BEGIN_PARAM(primitive); -} - -static inline void G3_End () -{ - reg_G3_END_VTXS = 0; -} - -static inline void G3_SwapBuffers (GXSortMode am, GXBufferMode zw) -{ - GX_SORTMODE_ASSERT(am); - GX_BUFFERMODE_ASSERT(zw); - - reg_G3_SWAP_BUFFERS = GX_PACK_SWAPBUFFERS_PARAM(am, zw); -} - -static inline void G3_ViewPort (int x1, int y1, int x2, int y2) -{ - GX_VIEWPORT_ASSERT(x1, y1, x2, y2); - - reg_G3_VIEWPORT = GX_PACK_VIEWPORT_PARAM(x1, y1, x2, y2); -} - -static inline void G3_BoxTest (const GXBoxTestParam * box) -{ - reg_G3_BOX_TEST = box->val[0]; - reg_G3_BOX_TEST = box->val[1]; - reg_G3_BOX_TEST = box->val[2]; -} - -static inline void G3_PositionTest (fx16 x, fx16 y, fx16 z) -{ - reg_G3_POS_TEST = GX_FX16PAIR(x, y); - reg_G3_POS_TEST = (u32)(u16)z; -} - -static inline void G3_VectorTest (fx16 x, fx16 y, fx16 z) -{ - SDK_MINMAX_ASSERT(x, -FX16_ONE, FX16_ONE - 1); - SDK_MINMAX_ASSERT(y, -FX16_ONE, FX16_ONE - 1); - SDK_MINMAX_ASSERT(z, -FX16_ONE, FX16_ONE - 1); - - reg_G3_VEC_TEST = GX_PACK_VECTORTEST_PARAM(x, y, z); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/gx/g3x.h b/subprojects/NitroSDK/include/nitro/gx/g3x.h deleted file mode 100644 index 7c92398482..0000000000 --- a/subprojects/NitroSDK/include/nitro/gx/g3x.h +++ /dev/null @@ -1,279 +0,0 @@ -#ifndef NITRO_G3X_H_ -#define NITRO_G3X_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - GX_SHADING_TOON = 0, - GX_SHADING_HIGHLIGHT = 1 -} GXShading; - -#define GX_SHADING_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, GX_SHADING_TOON, GX_SHADING_HIGHLIGHT) - -typedef enum { - GX_FOGBLEND_COLOR_ALPHA = 0, - GX_FOGBLEND_ALPHA = 1 -} GXFogBlend; - -#define GX_FOGBLEND_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, GX_FOGBLEND_COLOR_ALPHA, GX_FOGBLEND_ALPHA) - -typedef enum { - GX_FOGSLOPE_0x8000 = 0, - GX_FOGSLOPE_0x4000 = 1, - GX_FOGSLOPE_0x2000 = 2, - GX_FOGSLOPE_0x1000 = 3, - GX_FOGSLOPE_0x0800 = 4, - GX_FOGSLOPE_0x0400 = 5, - GX_FOGSLOPE_0x0200 = 6, - GX_FOGSLOPE_0x0100 = 7, - GX_FOGSLOPE_0x0080 = 8, - GX_FOGSLOPE_0x0040 = 9, - GX_FOGSLOPE_0x0020 = 10 -} GXFogSlope; - -#define GX_FOGSLOPE_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, GX_FOGSLOPE_0x8000, GX_FOGSLOPE_0x0020) - -typedef enum { - GX_FIFOINTR_COND_DISABLE = 0, - GX_FIFOINTR_COND_UNDERHALF = 1, - GX_FIFOINTR_COND_EMPTY = 2 -} GXFifoIntrCond; - -#define GX_FIFOINTR_COND_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, GX_FIFOINTR_COND_DISABLE, GX_FIFOINTR_COND_EMPTY) - -typedef enum { - GX_FIFOSTAT_EMPTY = 6, - GX_FIFOSTAT_UNDERHALF = 2, - GX_FIFOSTAT_OVERHALF = 0, - GX_FIFOSTAT_FULL = 1 -} GXFifoStat; - -#define GX_RDLINES_COUNT_MAX 46 -#define GX_LISTRAM_COUNT_MAX 2048 -#define GX_VTXRAM_COUNT_MAX 6144 - -#if !(defined(SDK_WIN32) || defined(SDK_FROM_TOOL)) - -void G3X_Init(void); -void G3X_InitMtxStack(void); -void G3X_ResetMtxStack(void); -void G3X_InitTable(void); -void G3X_Reset(void); - -static void G3X_SetShading(GXShading shading); -static void G3X_AlphaTest(BOOL enable, int ref); -static void G3X_AlphaBlend(BOOL enable); -static void G3X_AntiAlias(BOOL enable); -static void G3X_EdgeMarking(BOOL enable); -void G3X_SetFog(BOOL enable, GXFogBlend fogMode, GXFogSlope fogSlope, int fogOffset); - -int G3X_GetMtxStackLevelPV(s32 * level); -int G3X_GetMtxStackLevelPJ(s32 * level); -static void G3X_SetFifoIntrCond(GXFifoIntrCond cond); - -void G3X_SetDisp1DotDepth(fx32 w); - -int G3X_GetBoxTestResult(s32 * in); -int G3X_GetPositionTestResult(VecFx32 * vec, fx32 * w); -int G3X_GetVectorTestResult(fx16 * vec); - -int G3X_GetClipMtx(MtxFx44 * m); -int G3X_GetVectorMtx(MtxFx33 * m); - -void G3X_SetHOffset(int hOffset); - -void G3X_SetEdgeColorTable(const GXRgb * rgb_8); -void G3X_SetFogTable(const u32 * fogTable); -void G3X_SetToonTable(const GXRgb * rgb_32); -void G3X_SetClearColor(GXRgb rgb, int alpha, int depth, int polygonID, BOOL fog); -static void G3X_SetClearImageOffset(int xOffset, int yOffset); -static void G3X_SetFogColor(GXRgb rgb, int alpha); - -static s32 G3X_IsMtxStackOverflow(s32 * overflow); -static s32 G3X_IsLineBufferUnderflow(void); -static s32 G3X_IsListRamOverflow(void); -static s32 G3X_IsGeometryBusy(void); - -static void G3X_ResetMtxStackOverflow(void); -static void G3X_ResetLineBufferUnderflow(void); -static void G3X_ResetListRamOverflow(void); -void G3X_ClearFifo(void); - -static s32 G3X_GetPolygonListRamCount(void); -static s32 G3X_GetVtxListRamCount(void); -static s32 G3X_GetRenderedLineCount(void); -static s32 G3X_GetCommandFifoCount(void); -static GXFifoStat G3X_GetCommandFifoStatus(void); - -static inline void G3X_SetShading (GXShading shading) -{ - reg_G3X_DISP3DCNT = (u16)((reg_G3X_DISP3DCNT & ~(REG_G3X_DISP3DCNT_THS_MASK | - REG_G3X_DISP3DCNT_RO_MASK | - REG_G3X_DISP3DCNT_GO_MASK)) | - (shading << REG_G3X_DISP3DCNT_THS_SHIFT)); -} - -static inline void G3X_AlphaTest (BOOL enable, int ref) -{ - if (enable) { - GX_ALPHA_ASSERT(ref); - reg_G3X_DISP3DCNT = (u16)(reg_G3X_DISP3DCNT & - ~(REG_G3X_DISP3DCNT_RO_MASK | REG_G3X_DISP3DCNT_GO_MASK) | - REG_G3X_DISP3DCNT_ATE_MASK); - reg_G3X_ALPHA_TEST_REF = (u16)ref; - } else { - reg_G3X_DISP3DCNT &= (u16) ~(REG_G3X_DISP3DCNT_ATE_MASK | - REG_G3X_DISP3DCNT_RO_MASK | REG_G3X_DISP3DCNT_GO_MASK); - } -} - -static inline void G3X_AlphaBlend (BOOL enable) -{ - if (enable) { - reg_G3X_DISP3DCNT = (u16)(reg_G3X_DISP3DCNT & - ~(REG_G3X_DISP3DCNT_RO_MASK | REG_G3X_DISP3DCNT_GO_MASK) | - REG_G3X_DISP3DCNT_ABE_MASK); - } else { - reg_G3X_DISP3DCNT &= (u16) ~(REG_G3X_DISP3DCNT_ABE_MASK | - REG_G3X_DISP3DCNT_RO_MASK | REG_G3X_DISP3DCNT_GO_MASK); - } -} - -static inline void G3X_AntiAlias (BOOL enable) -{ - if (enable) { - reg_G3X_DISP3DCNT = (u16)(reg_G3X_DISP3DCNT & - ~(REG_G3X_DISP3DCNT_RO_MASK | REG_G3X_DISP3DCNT_GO_MASK) | - REG_G3X_DISP3DCNT_AAE_MASK); - } else { - reg_G3X_DISP3DCNT &= (u16) ~(REG_G3X_DISP3DCNT_AAE_MASK | - REG_G3X_DISP3DCNT_RO_MASK | REG_G3X_DISP3DCNT_GO_MASK); - } -} - -static inline void G3X_EdgeMarking (BOOL enable) -{ - if (enable) { - reg_G3X_DISP3DCNT = (u16)(reg_G3X_DISP3DCNT & - ~(REG_G3X_DISP3DCNT_RO_MASK | REG_G3X_DISP3DCNT_GO_MASK) | - REG_G3X_DISP3DCNT_EME_MASK); - } else { - reg_G3X_DISP3DCNT &= (u16) ~(REG_G3X_DISP3DCNT_EME_MASK | - REG_G3X_DISP3DCNT_RO_MASK | REG_G3X_DISP3DCNT_GO_MASK); - } -} - -static inline void G3X_SetFifoIntrCond (GXFifoIntrCond cond) -{ - GX_FIFOINTR_COND_ASSERT(cond); - - reg_G3X_GXSTAT = ((reg_G3X_GXSTAT & ~REG_G3X_GXSTAT_FI_MASK) | - (cond << REG_G3X_GXSTAT_FI_SHIFT)); -} - -static inline void G3X_SetClearImageOffset (int xOffset, int yOffset) -{ - reg_G3X_CLRIMAGE_OFFSET = (u16)(((xOffset << REG_G3X_CLRIMAGE_OFFSET_OFFSETX_SHIFT) & - REG_G3X_CLRIMAGE_OFFSET_OFFSETX_MASK) | ((yOffset << - REG_G3X_CLRIMAGE_OFFSET_OFFSETY_SHIFT) - & - REG_G3X_CLRIMAGE_OFFSET_OFFSETY_MASK)); -} - -static inline void G3X_SetFogColor (GXRgb rgb, int alpha) -{ - GXRGB_ASSERT(rgb); - GX_ALPHA_ASSERT(alpha); - - reg_G3X_FOG_COLOR = (u32)((rgb << REG_G3X_FOG_COLOR_FOG_RED_SHIFT) | - (alpha << REG_G3X_FOG_COLOR_FOG_ALPHA_SHIFT)); -} - -static inline s32 G3X_IsMtxStackOverflow (s32 * overflow) -{ - SDK_NULL_ASSERT(overflow); - if (reg_G3X_GXSTAT & REG_G3X_GXSTAT_SB_MASK) { - return -1; - } - - *overflow = (s32)(reg_G3X_GXSTAT & REG_G3X_GXSTAT_SE_MASK); - return 0; -} - -#define G3X_IsLineBufferOverflow G3X_IsLineBufferUnderflow - -static inline s32 G3X_IsLineBufferUnderflow (void) -{ - return (reg_G3X_DISP3DCNT & REG_G3X_DISP3DCNT_RO_MASK); -} - -static inline s32 G3X_IsListRamOverflow (void) -{ - return (reg_G3X_DISP3DCNT & REG_G3X_DISP3DCNT_GO_MASK); -} - -static inline s32 G3X_IsGeometryBusy (void) -{ - return (s32)(reg_G3X_GXSTAT & REG_G3X_GXSTAT_B_MASK); -} - -static inline void G3X_ResetMtxStackOverflow (void) -{ - reg_G3X_GXSTAT |= REG_G3X_GXSTAT_SE_MASK; -} - -#define G3X_ResetLineBufferOverflow G3X_ResetLineBufferUnderflow - -static inline void G3X_ResetLineBufferUnderflow (void) -{ - reg_G3X_DISP3DCNT |= REG_G3X_DISP3DCNT_RO_MASK; -} - -static inline void G3X_ResetListRamOverflow (void) -{ - reg_G3X_DISP3DCNT |= REG_G3X_DISP3DCNT_GO_MASK; -} - -static inline s32 G3X_GetPolygonListRamCount (void) -{ - return reg_G3X_LISTRAM_COUNT; -} - -static inline s32 G3X_GetVtxListRamCount (void) -{ - return reg_G3X_VTXRAM_COUNT; -} - -static inline s32 G3X_GetRenderedLineCount (void) -{ - return reg_G3X_RDLINES_COUNT; -} - -static inline s32 G3X_GetCommandFifoCount (void) -{ - return (s32)((reg_G3X_GXSTAT & REG_G3X_GXSTAT_FIFOCNT_MASK) >> REG_G3X_GXSTAT_FIFOCNT_SHIFT); -} - -static inline GXFifoStat G3X_GetCommandFifoStatus (void) -{ - return (GXFifoStat)((reg_G3X_GXSTAT & (REG_G3X_GXSTAT_F_MASK | - REG_G3X_GXSTAT_H_MASK | - REG_G3X_GXSTAT_E_MASK)) >> REG_G3X_GXSTAT_F_SHIFT); -} - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/gx/gx.h b/subprojects/NitroSDK/include/nitro/gx/gx.h deleted file mode 100644 index 2285c72307..0000000000 --- a/subprojects/NitroSDK/include/nitro/gx/gx.h +++ /dev/null @@ -1,694 +0,0 @@ -#ifndef NITRO_GX_GX_H_ -#define NITRO_GX_GX_H_ - -#include -#include -#include - -#if !(defined(SDK_WIN32) || defined(SDK_FROM_TOOL)) -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define GX_LCD_SIZE_X 256 -#define GX_LCD_SIZE_Y 192 - -typedef union { - u32 raw; - struct { - u32 bgMode : 3; - u32 bg0_2d3d : 1; - u32 objMapChar : 1; - u32 objMapBmp : 2; - u32 blankScr : 1; - u32 visiblePlane : 5; - u32 visibleWnd : 3; - u32 dispMode : 4; - u32 extObjMapChar : 2; - u32 extObjMapBmp : 1; - u32 hBlankObjProc : 1; - u32 bgCharOffset : 3; - u32 bgScrOffset : 3; - u32 bgExtPltt : 1; - u32 objExtPltt : 1; - }; -} GXDispCnt; - -typedef union { - u32 raw; - struct { - u32 bgMode : 3; - u32 _reserve1 : 1; - u32 objMapChar : 1; - u32 objMapBmp : 2; - u32 blankScr : 1; - u32 visiblePlane : 5; - u32 visibleWnd : 3; - u32 dispMode : 1; - u32 _reserve2 : 3; - u32 extObjMapChar : 2; - u32 _reserve3 : 1; - u32 hBlankObjProc : 1; - u32 _reserve4 : 6; - u32 bgExtPltt : 1; - u32 objExtPltt : 1; - }; -} GXSDispCnt; - -typedef enum { - GX_BGMODE_0 = 0, - GX_BGMODE_1 = 1, - GX_BGMODE_2 = 2, - GX_BGMODE_3 = 3, - GX_BGMODE_4 = 4, - GX_BGMODE_5 = 5, - GX_BGMODE_6 = 6 -} GXBGMode; - -#define GX_BGMODE_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, GX_BGMODE_0, GX_BGMODE_6) - -typedef enum { - GX_BG0_AS_2D = 0, - GX_BG0_AS_3D = 1 -} GXBG0As; - -#define GX_BG0_AS_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, GX_BG0_AS_2D, GX_BG0_AS_3D) - -typedef enum { - GX_DISPMODE_GRAPHICS = 0x01, - GX_DISPMODE_VRAM_A = 0x02, - GX_DISPMODE_VRAM_B = 0x06, - GX_DISPMODE_VRAM_C = 0x0a, - GX_DISPMODE_VRAM_D = 0x0e, - GX_DISPMODE_MMEM = 0x03 -} GXDispMode; - -#define GX_DISPMODE_OFF ((GXDispMode)0x00) - -#define GX_DISPMODE_ASSERT(x) \ - SDK_ASSERT((x) == GX_DISPMODE_OFF || \ - (x) == GX_DISPMODE_GRAPHICS || \ - (x) == GX_DISPMODE_VRAM_A || \ - (x) == GX_DISPMODE_VRAM_B || \ - (x) == GX_DISPMODE_VRAM_C || \ - (x) == GX_DISPMODE_VRAM_D || \ - (x) == GX_DISPMODE_MMEM) - -typedef enum { - GX_OBJVRAMMODE_CHAR_2D = (0 << REG_GX_DISPCNT_OBJMAP_SHIFT) | (0 << REG_GX_DISPCNT_EXOBJ_SHIFT), - GX_OBJVRAMMODE_CHAR_1D_32K = - (1 << REG_GX_DISPCNT_OBJMAP_SHIFT) | (0 << REG_GX_DISPCNT_EXOBJ_SHIFT), - GX_OBJVRAMMODE_CHAR_1D_64K = - (1 << REG_GX_DISPCNT_OBJMAP_SHIFT) | (1 << REG_GX_DISPCNT_EXOBJ_SHIFT), - GX_OBJVRAMMODE_CHAR_1D_128K = - (1 << REG_GX_DISPCNT_OBJMAP_SHIFT) | (2 << REG_GX_DISPCNT_EXOBJ_SHIFT), - GX_OBJVRAMMODE_CHAR_1D_256K = - (1 << REG_GX_DISPCNT_OBJMAP_SHIFT) | (3 << REG_GX_DISPCNT_EXOBJ_SHIFT) -} GXOBJVRamModeChar; - -#define GX_OBJVRAMMODE_CHAR_ASSERT(x) \ - SDK_ASSERT(x == GX_OBJVRAMMODE_CHAR_2D || \ - x == GX_OBJVRAMMODE_CHAR_1D_32K || \ - x == GX_OBJVRAMMODE_CHAR_1D_64K || \ - x == GX_OBJVRAMMODE_CHAR_1D_128K || \ - x == GX_OBJVRAMMODE_CHAR_1D_256K) - -#define GXS_OBJVRAMMODE_CHAR_ASSERT(x) \ - SDK_ASSERT(x == GX_OBJVRAMMODE_CHAR_2D || \ - x == GX_OBJVRAMMODE_CHAR_1D_32K || \ - x == GX_OBJVRAMMODE_CHAR_1D_64K || \ - x == GX_OBJVRAMMODE_CHAR_1D_128K) - -typedef enum { - GX_OBJVRAMMODE_BMP_2D_W128 = - (0 << (REG_GX_DISPCNT_OBJMAP_SHIFT + 1)) | (0 << (REG_GX_DISPCNT_EXOBJ_SHIFT + 2)), - GX_OBJVRAMMODE_BMP_2D_W256 = - (1 << (REG_GX_DISPCNT_OBJMAP_SHIFT + 1)) | (0 << (REG_GX_DISPCNT_EXOBJ_SHIFT + 2)), - GX_OBJVRAMMODE_BMP_1D_128K = - (2 << (REG_GX_DISPCNT_OBJMAP_SHIFT + 1)) | (0 << (REG_GX_DISPCNT_EXOBJ_SHIFT + 2)), - GX_OBJVRAMMODE_BMP_1D_256K = - (2 << (REG_GX_DISPCNT_OBJMAP_SHIFT + 1)) | (1 << (REG_GX_DISPCNT_EXOBJ_SHIFT + 2)) -} GXOBJVRamModeBmp; - -#define GX_OBJVRAMMODE_BMP_2D_W128_32K GX_OBJVRAMMODE_BMP_2D_W128 -#define GX_OBJVRAMMODE_BMP_2D_W256_32K GX_OBJVRAMMODE_BMP_2D_W256 - -#define GX_OBJVRAMMODE_BMP_ASSERT(x) \ - SDK_ASSERT(x == GX_OBJVRAMMODE_BMP_2D_W128_32K || \ - x == GX_OBJVRAMMODE_BMP_2D_W256_32K || \ - x == GX_OBJVRAMMODE_BMP_1D_128K || \ - x == GX_OBJVRAMMODE_BMP_1D_256K) - -#define GXS_OBJVRAMMODE_BMP_ASSERT(x) \ - SDK_ASSERT(x == GX_OBJVRAMMODE_BMP_2D_W128 || \ - x == GX_OBJVRAMMODE_BMP_2D_W256 || \ - x == GX_OBJVRAMMODE_BMP_1D_128K) - -typedef enum { - GX_PLANEMASK_NONE = 0x00, - GX_PLANEMASK_BG0 = 0x01, - GX_PLANEMASK_BG1 = 0x02, - GX_PLANEMASK_BG2 = 0x04, - GX_PLANEMASK_BG3 = 0x08, - GX_PLANEMASK_OBJ = 0x10 -} GXPlaneMask; - -#define GX_PLANEMASK_ASSERT(x) SDK_MINMAX_ASSERT(x, GX_PLANEMASK_NONE, 0x1f) - -typedef enum { - GX_WNDMASK_NONE = 0x00, - GX_WNDMASK_W0 = 0x01, - GX_WNDMASK_W1 = 0x02, - GX_WNDMASK_OW = 0x04 -} GXWndMask; - -#define GX_WNDMASK_ASSERT(x) SDK_MINMAX_ASSERT(x, GX_WNDMASK_NONE, 0x7) - -typedef enum { - GX_BGCHAROFFSET_0x00000 = 0x00, - GX_BGCHAROFFSET_0x10000 = 0x01, - GX_BGCHAROFFSET_0x20000 = 0x02, - GX_BGCHAROFFSET_0x30000 = 0x03, - GX_BGCHAROFFSET_0x40000 = 0x04, - GX_BGCHAROFFSET_0x50000 = 0x05, - GX_BGCHAROFFSET_0x60000 = 0x06, - GX_BGCHAROFFSET_0x70000 = 0x07 -} GXBGCharOffset; - -#define GX_BGCHAROFFSET_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, GX_BGCHAROFFSET_0x00000, GX_BGCHAROFFSET_0x70000) - -typedef enum { - GX_BGSCROFFSET_0x00000 = 0x00, - GX_BGSCROFFSET_0x10000 = 0x01, - GX_BGSCROFFSET_0x20000 = 0x02, - GX_BGSCROFFSET_0x30000 = 0x03, - GX_BGSCROFFSET_0x40000 = 0x04, - GX_BGSCROFFSET_0x50000 = 0x05, - GX_BGSCROFFSET_0x60000 = 0x06, - GX_BGSCROFFSET_0x70000 = 0x07 -} GXBGScrOffset; - -#define GX_BGSCROFFSET_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, GX_BGSCROFFSET_0x00000, GX_BGSCROFFSET_0x70000) - -typedef enum { - GX_POWER_OFF = 0, - - GX_POWER_2D_MAIN = 1 << REG_GX_POWCNT_E2DG_SHIFT, - GX_POWER_2D_SUB = 1 << REG_GX_POWCNT_E2DGB_SHIFT, - - GX_POWER_RE = 1 << REG_GX_POWCNT_RE_SHIFT, - GX_POWER_GE = 1 << REG_GX_POWCNT_GE_SHIFT, - - GX_POWER_2D = GX_POWER_2D_MAIN | GX_POWER_2D_SUB, - GX_POWER_3D = GX_POWER_RE | GX_POWER_GE, - - GX_POWER_ALL = GX_POWER_2D | GX_POWER_3D -} GXPower; - -#define GX_POWER_ASSERT(x) SDK_ASSERTMSG((((x) & ~GX_POWER_ALL) == 0), \ - "GX_POWER_LCD is obsolete. please use PM_SetLCDPower()\n") - -typedef enum { - GX_DISP_SELECT_SUB_MAIN = 0, - GX_DISP_SELECT_MAIN_SUB = 1 -} GXDispSelect; - -#define GX_DISP_SELECT_ASSERT(x) SDK_MINMAX_ASSERT(x, 0, 1) - -#if !(defined(SDK_WIN32) || defined(SDK_FROM_TOOL)) - -static void GX_SetPower(int gxbit_power); -static GXPower GX_GetPower(void); - -static void GX_Power2DMain(BOOL enable); -static void GX_Power2DSub(BOOL enable); - -static void GX_PowerRender(BOOL enable); -static void GX_PowerGeometry(BOOL enable); - -static void GXi_PowerLCD(BOOL enable); -static void GX_Power2D(BOOL enable); -static void GX_Power3D(BOOL enable); - -static void GX_SetDispSelect(GXDispSelect sel); -static GXDispSelect GX_GetDispSelect(void); - -static s32 GX_IsHBlank(void); -s32 GX_HBlankIntr(BOOL enable); -static s32 GX_IsVBlank(void); -s32 GX_VBlankIntr(BOOL enable); -static s32 GX_IsVCountEq(void); -static void GX_VCountEqIntr(BOOL enable); -void GX_SetVCountEqVal(s32 val); -static s32 GX_GetVCountEqVal(void); - -#define GX_IsVCounterEq GX_IsVCountEq -#define GX_VCounterEqIntr GX_VCountEqIntr -#define GX_SetVCounterEqVal GX_SetVCountEqVal -#define GX_GetVCounterEqVal GX_GetVCountEqVal - -static s32 GX_GetVCount(void); -static void GX_SetVCount(s32 count); - -void GX_Init(void); -static void GX_InitEx(u32 dma_no); -u32 GX_SetDefaultDMA(u32 dma_no); -static u32 GX_GetDefaultDMA(void); - -void GX_SetGraphicsMode(GXDispMode dispMode, GXBGMode bgMode, GXBG0As bg0_2d3d); -void GX_DispOff(void); -void GX_DispOn(void); -BOOL GX_IsDispOn(void); - -static void GX_SetVisiblePlane(int plane); -static void GX_SetVisibleWnd(int window); -static void GX_BlankScr(BOOL blank); - -static GXBGScrOffset GX_GetBGScrOffset(); -static void GX_SetBGScrOffset(GXBGScrOffset offset); - -static GXBGCharOffset GX_GetBGCharOffset(); -static void GX_SetBGCharOffset(GXBGCharOffset offset); - -static void GX_SetOBJVRamModeChar(GXOBJVRamModeChar mode); -static void GX_SetOBJVRamModeBmp(GXOBJVRamModeBmp mode); - -static void GX_HBlankOBJProc(BOOL proc); - -static void GX_SetMasterBrightness(int brightness); - -void GXS_SetGraphicsMode(GXBGMode bgMode); -static void GXS_DispOff(void); -static void GXS_DispOn(void); - -static void GXS_SetVisiblePlane(int plane); -static void GXS_SetVisibleWnd(int window); - -static void GXS_SetOBJVRamModeChar(GXOBJVRamModeChar mode); -static void GXS_SetOBJVRamModeBmp(GXOBJVRamModeBmp mode); - -static void GXS_HBlankOBJProc(BOOL proc); - -static void GXS_SetMasterBrightness(int brightness); - -void GXx_SetMasterBrightness_(vu16 * reg, int brightness); -int GXx_GetMasterBrightness_(vu16 * reg); - -static inline GXDispCnt GX_GetDispCnt (void) -{ - return *(volatile GXDispCnt *)REG_DISPCNT_ADDR; -} - -static inline GXSDispCnt GXS_GetDispCnt (void) -{ - return *(volatile GXSDispCnt *)REG_DB_DISPCNT_ADDR; -} - -static inline GXBGScrOffset GX_GetBGScrOffset () -{ - return (GXBGScrOffset)((reg_GX_DISPCNT & REG_GX_DISPCNT_BGSCREENOFFSET_MASK) >> - REG_GX_DISPCNT_BGSCREENOFFSET_SHIFT); -} - -static inline void GX_SetBGScrOffset (GXBGScrOffset offset) -{ - GX_BGSCROFFSET_ASSERT(offset); - reg_GX_DISPCNT = (u32)((reg_GX_DISPCNT & ~REG_GX_DISPCNT_BGSCREENOFFSET_MASK) | - (offset << REG_GX_DISPCNT_BGSCREENOFFSET_SHIFT)); -} - -static inline GXBGCharOffset GX_GetBGCharOffset () -{ - return (GXBGCharOffset)((reg_GX_DISPCNT & REG_GX_DISPCNT_BGCHAROFFSET_MASK) - >> REG_GX_DISPCNT_BGCHAROFFSET_SHIFT); -} - -static inline void GX_SetBGCharOffset (GXBGCharOffset offset) -{ - GX_BGCHAROFFSET_ASSERT(offset); - reg_GX_DISPCNT = (u32)((reg_GX_DISPCNT & ~REG_GX_DISPCNT_BGCHAROFFSET_MASK) | - (offset << REG_GX_DISPCNT_BGCHAROFFSET_SHIFT)); -} - -static inline void GX_SetVisiblePlane (int plane) -{ - GX_PLANEMASK_ASSERT(plane); - - reg_GX_DISPCNT = (u32)((reg_GX_DISPCNT & ~REG_GX_DISPCNT_DISPLAY_MASK) | - (plane << REG_GX_DISPCNT_DISPLAY_SHIFT)); -} - -static inline int GX_GetVisiblePlane (void) -{ - return (int)((reg_GX_DISPCNT & REG_GX_DISPCNT_DISPLAY_MASK) >> REG_GX_DISPCNT_DISPLAY_SHIFT); -} - -static inline void GXS_SetVisiblePlane (int plane) -{ - GX_PLANEMASK_ASSERT(plane); - - reg_GXS_DB_DISPCNT = (u32)((reg_GXS_DB_DISPCNT & ~REG_GXS_DB_DISPCNT_DISPLAY_MASK) | - (plane << REG_GXS_DB_DISPCNT_DISPLAY_SHIFT)); -} - -static inline int GXS_GetVisiblePlane (void) -{ - return (int)((reg_GXS_DB_DISPCNT & REG_GXS_DB_DISPCNT_DISPLAY_MASK) - >> REG_GXS_DB_DISPCNT_DISPLAY_SHIFT); -} - -static inline void GX_SetVisibleWnd (int window) -{ - GX_WNDMASK_ASSERT(window); - - reg_GX_DISPCNT = (u32)((reg_GX_DISPCNT & - ~(REG_GX_DISPCNT_W0_MASK | - REG_GX_DISPCNT_W1_MASK | - REG_GX_DISPCNT_OW_MASK)) | (window << REG_GX_DISPCNT_W0_SHIFT)); -} - -static inline int GX_GetVisibleWnd (void) -{ - return (int)((reg_GX_DISPCNT & (REG_GX_DISPCNT_W0_MASK | - REG_GX_DISPCNT_W1_MASK | - REG_GX_DISPCNT_OW_MASK)) >> REG_GX_DISPCNT_W0_SHIFT); -} - -static inline void GXS_SetVisibleWnd (int window) -{ - GX_WNDMASK_ASSERT(window); - - reg_GXS_DB_DISPCNT = (u32)((reg_GXS_DB_DISPCNT & - ~(REG_GXS_DB_DISPCNT_W0_MASK | - REG_GXS_DB_DISPCNT_W1_MASK | - REG_GXS_DB_DISPCNT_OW_MASK)) | - (window << REG_GXS_DB_DISPCNT_W0_SHIFT)); -} - -static inline int GXS_GetVisibleWnd (void) -{ - return (int)((reg_GXS_DB_DISPCNT & (REG_GXS_DB_DISPCNT_W0_MASK | - REG_GXS_DB_DISPCNT_W1_MASK | - REG_GXS_DB_DISPCNT_OW_MASK)) - >> REG_GXS_DB_DISPCNT_W0_SHIFT); -} - -static inline void GX_SetOBJVRamModeChar (GXOBJVRamModeChar mode) -{ - GX_OBJVRAMMODE_CHAR_ASSERT(mode); - - reg_GX_DISPCNT = (u32)(reg_GX_DISPCNT & - ~(REG_GX_DISPCNT_EXOBJ_CH_MASK | REG_GX_DISPCNT_OBJMAP_CH_MASK) | mode); -} - -static inline GXOBJVRamModeChar GX_GetOBJVRamModeChar (void) -{ - return (GXOBJVRamModeChar)(reg_GX_DISPCNT & - (REG_GX_DISPCNT_EXOBJ_CH_MASK | REG_GX_DISPCNT_OBJMAP_CH_MASK)); -} - -static inline void GXS_SetOBJVRamModeChar (GXOBJVRamModeChar mode) -{ - GXS_OBJVRAMMODE_CHAR_ASSERT(mode); - - reg_GXS_DB_DISPCNT = (u32)(reg_GXS_DB_DISPCNT & - ~(REG_GXS_DB_DISPCNT_EXOBJ_CH_MASK | - REG_GXS_DB_DISPCNT_OBJMAP_CH_MASK) | mode); -} - -static inline GXOBJVRamModeChar GXS_GetOBJVRamModeChar (void) -{ - return (GXOBJVRamModeChar)(reg_GXS_DB_DISPCNT & - (REG_GXS_DB_DISPCNT_EXOBJ_CH_MASK | - REG_GXS_DB_DISPCNT_OBJMAP_CH_MASK)); -} - -static inline void GX_SetOBJVRamModeBmp (GXOBJVRamModeBmp mode) -{ - GX_OBJVRAMMODE_BMP_ASSERT(mode); - - reg_GX_DISPCNT = (u32)(reg_GX_DISPCNT & - ~(REG_GX_DISPCNT_EXOBJ_BM_MASK | REG_GX_DISPCNT_OBJMAP_BM_MASK) | mode); -} - -static inline GXOBJVRamModeBmp GX_GetOBJVRamModeBmp (void) -{ - return (GXOBJVRamModeBmp)(reg_GX_DISPCNT & - (REG_GX_DISPCNT_EXOBJ_BM_MASK | REG_GX_DISPCNT_OBJMAP_BM_MASK)); -} - -static inline void GXS_SetOBJVRamModeBmp (GXOBJVRamModeBmp mode) -{ - GXS_OBJVRAMMODE_BMP_ASSERT(mode); - - reg_GXS_DB_DISPCNT = (u32)(reg_GXS_DB_DISPCNT & ~(REG_GXS_DB_DISPCNT_OBJMAP_BM_MASK) | mode); -} - -static inline GXOBJVRamModeBmp GXS_GetOBJVRamModeBmp (void) -{ - return (GXOBJVRamModeBmp)(reg_GXS_DB_DISPCNT & REG_GXS_DB_DISPCNT_OBJMAP_BM_MASK); -} - -static inline void GX_BlankScr (BOOL blank) -{ - SDK_WARNING((1 == 0), "GX_BlankScr is obsolete, please use GX_DispOn/GX_DispOff instead."); - if (blank) { - reg_GX_DISPCNT |= REG_GX_DISPCNT_BLANK_MASK; - } else { - reg_GX_DISPCNT &= ~REG_GX_DISPCNT_BLANK_MASK; - } -} - -static inline void GXS_DispOff (void) -{ - reg_GXS_DB_DISPCNT &= ~REG_GXS_DB_DISPCNT_MODE_MASK; -} - -static inline void GXS_DispOn (void) -{ - reg_GXS_DB_DISPCNT |= REG_GXS_DB_DISPCNT_MODE_MASK; -} - -static inline void GX_HBlankOBJProc (BOOL proc) -{ - if (proc) { - reg_GX_DISPCNT |= REG_GX_DISPCNT_OH_MASK; - } else { - reg_GX_DISPCNT &= ~REG_GX_DISPCNT_OH_MASK; - } -} - -static inline void GXS_HBlankOBJProc (BOOL proc) -{ - if (proc) { - reg_GXS_DB_DISPCNT |= REG_GXS_DB_DISPCNT_OH_MASK; - } else { - reg_GXS_DB_DISPCNT &= ~REG_GXS_DB_DISPCNT_OH_MASK; - } -} - -static inline void GX_SetMasterBrightness (int brightness) -{ - GXx_SetMasterBrightness_(®_GX_MASTER_BRIGHT, brightness); -} - -static inline int GX_GetMasterBrightness (void) -{ - return GXx_GetMasterBrightness_(®_GX_MASTER_BRIGHT); -} - -static inline void GXS_SetMasterBrightness (int brightness) -{ - GXx_SetMasterBrightness_(®_GXS_DB_MASTER_BRIGHT, brightness); -} - -static inline int GXS_GetMasterBrightness (void) -{ - return GXx_GetMasterBrightness_(®_GXS_DB_MASTER_BRIGHT); -} - -static inline s32 GX_IsHBlank (void) -{ - return (reg_GX_DISPSTAT & REG_GX_DISPSTAT_HBLK_MASK); -} - -static inline s32 GX_IsVBlank (void) -{ - return (reg_GX_DISPSTAT & REG_GX_DISPSTAT_VBLK_MASK); -} - -static inline s32 GX_IsVCountEq (void) -{ - return (reg_GX_DISPSTAT & REG_GX_DISPSTAT_LYC_MASK); -} - -static inline void GX_VCountEqIntr (BOOL enable) -{ - if (enable) { - reg_GX_DISPSTAT |= REG_GX_DISPSTAT_VQI_MASK; - } else { - reg_GX_DISPSTAT &= ~REG_GX_DISPSTAT_VQI_MASK; - } -} - -static inline s32 GX_GetVCount () -{ - return reg_GX_VCOUNT; -} - -static inline void GX_SetVCount (s32 count) -{ - static vu32 vblank_count; - - if (count < 202 || count > 211) { - SDK_TFATAL_ERROR("V Counter out of range(%d). it must be 202 to 211.", count); - } else if (vblank_count == *(vu32 *)HW_VBLANK_COUNT_BUF) { - SDK_TFATAL_ERROR("Set V Count once a frame."); - } else { - OSIntrMode intr_mode; - s32 current_count; - - intr_mode = OS_DisableInterrupts(); - current_count = reg_GX_VCOUNT; - - if (current_count < 202 || current_count > 211) { - SDK_TFATAL_ERROR("Current V Counter out of range(%d). it must be 202 to 211.", current_count); - } else if (count > current_count) { - SDK_TFATAL_ERROR("Cannot advance the V Counter"); - } else { - reg_GX_VCOUNT = (u16)count; - vblank_count = *(vu32 *)HW_VBLANK_COUNT_BUF; - } - - (void)OS_RestoreInterrupts(intr_mode); - } -} - -static inline s32 GX_GetVCountEqVal (void) -{ - u16 val = reg_GX_DISPSTAT; - return ((val >> 8) & 0x00ff) | ((val << 1) & 0x0100); -} - -static inline void GX_SetPower (int gxbit_power) -{ - GX_POWER_ASSERT(gxbit_power); - - reg_GX_POWCNT = (u16)((reg_GX_POWCNT & ~GX_POWER_ALL) | gxbit_power); -} - -static inline GXPower GX_GetPower () -{ - return (GXPower)(reg_GX_POWCNT & GX_POWER_ALL); -} - -static inline void GXi_PowerLCD (BOOL enable) -{ - if (enable) { - reg_GX_POWCNT |= REG_GX_POWCNT_LCD_MASK; - } else { - reg_GX_POWCNT &= ~REG_GX_POWCNT_LCD_MASK; - } -} - -#define GX_PowerLCD(x) SDK_ERR("GX_PowerLCD() is discontinued. please use PM_SetLCDPower()\n") -#define GX_PowerLCDTop(x) SDK_ERR("GX_PowerLCDTop() is discontinued. please use PM_SetLCDPower()\n") -#define GX_PowerLCDBot(x) SDK_ERR("GX_PowerLCDBot() is discontinued. please use PM_SetLCDPower()\n") -#define GX_POWER_LCD_TOP SDK_ERR("GX_POWER_LCD_TOP is discontinued. please use PM_SetLCDPower()\n") -#define GX_POWER_LCD_BOT SDK_ERR("GX_POWER_LCD_BOT is discontinued. please use PM_SetLCDPower()\n") -#define GX_POWER_LCD SDK_ERR("GX_POWER_LCD is discontinued. please use PM_SetLCDPower()\n") - -static inline void GX_Power2D (BOOL enable) -{ - if (enable) { - reg_GX_POWCNT |= (REG_GX_POWCNT_E2DG_MASK | REG_GX_POWCNT_E2DGB_MASK); - } else { - reg_GX_POWCNT &= ~(REG_GX_POWCNT_E2DG_MASK | REG_GX_POWCNT_E2DGB_MASK); - } -} - -static inline void GX_Power2DMain (BOOL enable) -{ - if (enable) { - reg_GX_POWCNT |= REG_GX_POWCNT_E2DG_MASK; - } else { - reg_GX_POWCNT &= ~REG_GX_POWCNT_E2DG_MASK; - } -} - -static inline void GX_Power2DSub (BOOL enable) -{ - if (enable) { - reg_GX_POWCNT |= REG_GX_POWCNT_E2DGB_MASK; - } else { - reg_GX_POWCNT &= ~REG_GX_POWCNT_E2DGB_MASK; - } -} - -static inline void GX_PowerRender (BOOL enable) -{ - if (enable) { - reg_GX_POWCNT |= REG_GX_POWCNT_RE_MASK; - } else { - reg_GX_POWCNT &= ~REG_GX_POWCNT_RE_MASK; - } -} - -static inline void GX_PowerGeometry (BOOL enable) -{ - if (enable) { - reg_GX_POWCNT |= REG_GX_POWCNT_GE_MASK; - } else { - reg_GX_POWCNT &= ~REG_GX_POWCNT_GE_MASK; - } -} - -static inline void GX_Power3D (BOOL enable) -{ - if (enable) { - reg_GX_POWCNT |= (REG_GX_POWCNT_GE_MASK | REG_GX_POWCNT_RE_MASK); - } else { - reg_GX_POWCNT &= ~(REG_GX_POWCNT_GE_MASK | REG_GX_POWCNT_RE_MASK); - } -} - -static inline void GX_SetDispSelect (GXDispSelect sel) -{ - GX_DISP_SELECT_ASSERT(sel); - - reg_GX_POWCNT = (u16)((reg_GX_POWCNT & ~REG_GX_POWCNT_DSEL_MASK) | - (sel << REG_GX_POWCNT_DSEL_SHIFT)); -} - -static inline GXDispSelect GX_GetDispSelect (void) -{ - return (GXDispSelect)((reg_GX_POWCNT & REG_GX_POWCNT_DSEL_MASK) >> REG_GX_POWCNT_DSEL_SHIFT); -} - -static inline void GX_InitEx (u32 dma_no) -{ - SDK_ASSERT(dma_no <= MI_DMA_MAX_NUM || dma_no == GX_DMA_NOT_USE); - - GXi_DmaId = dma_no; - GX_Init(); -} - -static inline u32 GX_GetDefaultDMA (void) -{ - return GXi_DmaId; -} - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/gx/gx_bgcnt.h b/subprojects/NitroSDK/include/nitro/gx/gx_bgcnt.h deleted file mode 100644 index 400276e704..0000000000 --- a/subprojects/NitroSDK/include/nitro/gx/gx_bgcnt.h +++ /dev/null @@ -1,1309 +0,0 @@ -#ifndef NITRO_GX_BGCNT_H_ -#define NITRO_GX_BGCNT_H_ - -#include -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef union { - u16 raw; - struct { - u16 priority : 2; - u16 charBase : 4; - u16 mosaic : 1; - u16 colorMode : 1; - u16 screenBase : 5; - u16 bgExtPltt : 1; - u16 screenSize : 2; - }; -} GXBg01Control; - -typedef union { - u16 raw; - struct { - u16 priority : 2; - u16 charBase : 4; - u16 mosaic : 1; - u16 colorMode : 1; - u16 screenBase : 5; - u16 _reserve : 1; - u16 screenSize : 2; - }; -} GXBg23ControlText; - -typedef union { - u16 raw; - struct { - u16 priority : 2; - u16 charBase : 4; - u16 mosaic : 1; - u16 _reserve : 1; - u16 screenBase : 5; - u16 areaOver : 1; - u16 screenSize : 2; - }; -} GXBg23ControlAffine; - -typedef union { - u16 raw; - struct { - u16 priority : 2; - u16 _reserve1 : 1; - u16 charBase : 3; - u16 mosaic : 1; - u16 _reserve2 : 1; - u16 screenBase : 5; - u16 areaOver : 1; - u16 screenSize : 2; - }; -} GXBg23Control256x16Pltt; - -typedef union { - u16 raw; - struct { - u16 priority : 2; - u16 charBase : 4; - u16 mosaic : 1; - u16 _reserve : 1; - u16 screenBase : 5; - u16 areaOver : 1; - u16 screenSize : 2; - }; -} GXBg23Control256x16Affine; - -typedef union { - u16 raw; - struct { - u16 priority : 2; - u16 _reserve1 : 4; - u16 mosaic : 1; - u16 _reserve2 : 1; - u16 screenBase : 5; - u16 areaOver : 1; - u16 screenSize : 2; - }; -} GXBg23Control256Bmp, GXBg23ControlDCBmp; - -typedef union { - u16 raw; - struct { - u16 priority : 2; - u16 _reserve1 : 4; - u16 mosaic : 1; - u16 _reserve2 : 6; - u16 areaOver : 1; - u16 screenSize : 2; - }; -} GXBg2ControlLargeBmp; - -typedef enum { - GX_BG_SCRSIZE_TEXT_256x256 = 0, - GX_BG_SCRSIZE_TEXT_512x256 = 1, - GX_BG_SCRSIZE_TEXT_256x512 = 2, - GX_BG_SCRSIZE_TEXT_512x512 = 3 -} GXBGScrSizeText; - -#define GX_BG_SCRSIZE_TEXT_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, GX_BG_SCRSIZE_TEXT_256x256, GX_BG_SCRSIZE_TEXT_512x512) - -typedef enum { - GX_BG_SCRSIZE_AFFINE_128x128 = 0, - GX_BG_SCRSIZE_AFFINE_256x256 = 1, - GX_BG_SCRSIZE_AFFINE_512x512 = 2, - GX_BG_SCRSIZE_AFFINE_1024x1024 = 3 -} GXBGScrSizeAffine; - -#define GX_BG_SCRSIZE_AFFINE_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, GX_BG_SCRSIZE_AFFINE_128x128, GX_BG_SCRSIZE_AFFINE_1024x1024) - -typedef enum { - GX_BG_SCRSIZE_256x16PLTT_128x128 = 0, - GX_BG_SCRSIZE_256x16PLTT_256x256 = 1, - GX_BG_SCRSIZE_256x16PLTT_512x512 = 2, - GX_BG_SCRSIZE_256x16PLTT_1024x1024 = 3 -} GXBGScrSize256x16Pltt; - -#define GX_BG_SCRSIZE_256x16PLTT_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, GX_BG_SCRSIZE_256x16PLTT_128x128, GX_BG_SCRSIZE_256x16PLTT_1024x1024) - -typedef enum { - GX_BG_SCRSIZE_256BMP_128x128 = 0, - GX_BG_SCRSIZE_256BMP_256x256 = 1, - GX_BG_SCRSIZE_256BMP_512x256 = 2, - GX_BG_SCRSIZE_256BMP_512x512 = 3 -} GXBGScrSize256Bmp; - -#define GX_BG_SCRSIZE_256BMP_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, GX_BG_SCRSIZE_256BMP_128x128, GX_BG_SCRSIZE_256BMP_512x512) - -typedef enum { - GX_BG_SCRSIZE_DCBMP_128x128 = 0, - GX_BG_SCRSIZE_DCBMP_256x256 = 1, - GX_BG_SCRSIZE_DCBMP_512x256 = 2, - GX_BG_SCRSIZE_DCBMP_512x512 = 3 -} GXBGScrSizeDcBmp; - -#define GX_BG_SCRSIZE_DCBMP_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, GX_BG_SCRSIZE_DCBMP_128x128, GX_BG_SCRSIZE_DCBMP_512x512) - -typedef enum { - GX_BG_SCRSIZE_LARGEBMP_512x1024 = 0, - GX_BG_SCRSIZE_LARGEBMP_1024x512 = 1 -} GXBGScrSizeLargeBmp; - -#define GX_BG_SCRSIZE_LARGEBMP_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, GX_BG_SCRSIZE_LARGEBMP_512x1024, GX_BG_SCRSIZE_LARGEBMP_1024x512) - -typedef enum { - GX_BG_COLORMODE_16 = 0, - GX_BG_COLORMODE_256 = 1 -} GXBGColorMode; - -#define GX_BG_COLORMODE_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, GX_BG_COLORMODE_16, GX_BG_COLORMODE_256) - -typedef enum { - GX_BG_AREAOVER_XLU = 0, - GX_BG_AREAOVER_REPEAT = 1 -} GXBGAreaOver; - -#define GX_BG_AREAOVER_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, GX_BG_AREAOVER_XLU, GX_BG_AREAOVER_REPEAT) - -typedef enum { - GX_BG_CHARBASE_0x00000 = 0, - GX_BG_CHARBASE_0x04000 = 1, - GX_BG_CHARBASE_0x08000 = 2, - GX_BG_CHARBASE_0x0c000 = 3, - GX_BG_CHARBASE_0x10000 = 4, - GX_BG_CHARBASE_0x14000 = 5, - GX_BG_CHARBASE_0x18000 = 6, - GX_BG_CHARBASE_0x1c000 = 7, - GX_BG_CHARBASE_0x20000 = 8, - GX_BG_CHARBASE_0x24000 = 9, - GX_BG_CHARBASE_0x28000 = 10, - GX_BG_CHARBASE_0x2c000 = 11, - GX_BG_CHARBASE_0x30000 = 12, - GX_BG_CHARBASE_0x34000 = 13, - GX_BG_CHARBASE_0x38000 = 14, - GX_BG_CHARBASE_0x3c000 = 15 -} GXBGCharBase; - -#define GX_BG_CHARBASE_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, GX_BG_CHARBASE_0x00000, GX_BG_CHARBASE_0x3c000) - -typedef enum { - GX_BG_SCRBASE_0x0000 = 0, - GX_BG_SCRBASE_0x0800 = 1, - GX_BG_SCRBASE_0x1000 = 2, - GX_BG_SCRBASE_0x1800 = 3, - GX_BG_SCRBASE_0x2000 = 4, - GX_BG_SCRBASE_0x2800 = 5, - GX_BG_SCRBASE_0x3000 = 6, - GX_BG_SCRBASE_0x3800 = 7, - GX_BG_SCRBASE_0x4000 = 8, - GX_BG_SCRBASE_0x4800 = 9, - GX_BG_SCRBASE_0x5000 = 10, - GX_BG_SCRBASE_0x5800 = 11, - GX_BG_SCRBASE_0x6000 = 12, - GX_BG_SCRBASE_0x6800 = 13, - GX_BG_SCRBASE_0x7000 = 14, - GX_BG_SCRBASE_0x7800 = 15, - GX_BG_SCRBASE_0x8000 = 16, - GX_BG_SCRBASE_0x8800 = 17, - GX_BG_SCRBASE_0x9000 = 18, - GX_BG_SCRBASE_0x9800 = 19, - GX_BG_SCRBASE_0xa000 = 20, - GX_BG_SCRBASE_0xa800 = 21, - GX_BG_SCRBASE_0xb000 = 22, - GX_BG_SCRBASE_0xb800 = 23, - GX_BG_SCRBASE_0xc000 = 24, - GX_BG_SCRBASE_0xc800 = 25, - GX_BG_SCRBASE_0xd000 = 26, - GX_BG_SCRBASE_0xd800 = 27, - GX_BG_SCRBASE_0xe000 = 28, - GX_BG_SCRBASE_0xe800 = 29, - GX_BG_SCRBASE_0xf000 = 30, - GX_BG_SCRBASE_0xf800 = 31 -} GXBGScrBase; - -#define GX_BG_SCRBASE_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, GX_BG_SCRBASE_0x0000, GX_BG_SCRBASE_0xf800) - -typedef enum { - GX_BG_BMPSCRBASE_0x00000 = 0, - GX_BG_BMPSCRBASE_0x04000 = 1, - GX_BG_BMPSCRBASE_0x08000 = 2, - GX_BG_BMPSCRBASE_0x0c000 = 3, - GX_BG_BMPSCRBASE_0x10000 = 4, - GX_BG_BMPSCRBASE_0x14000 = 5, - GX_BG_BMPSCRBASE_0x18000 = 6, - GX_BG_BMPSCRBASE_0x1c000 = 7, - GX_BG_BMPSCRBASE_0x20000 = 8, - GX_BG_BMPSCRBASE_0x24000 = 9, - GX_BG_BMPSCRBASE_0x28000 = 10, - GX_BG_BMPSCRBASE_0x2c000 = 11, - GX_BG_BMPSCRBASE_0x30000 = 12, - GX_BG_BMPSCRBASE_0x34000 = 13, - GX_BG_BMPSCRBASE_0x38000 = 14, - GX_BG_BMPSCRBASE_0x3c000 = 15, - GX_BG_BMPSCRBASE_0x40000 = 16, - GX_BG_BMPSCRBASE_0x44000 = 17, - GX_BG_BMPSCRBASE_0x48000 = 18, - GX_BG_BMPSCRBASE_0x4c000 = 19, - GX_BG_BMPSCRBASE_0x50000 = 20, - GX_BG_BMPSCRBASE_0x54000 = 21, - GX_BG_BMPSCRBASE_0x58000 = 22, - GX_BG_BMPSCRBASE_0x5c000 = 23, - GX_BG_BMPSCRBASE_0x60000 = 24, - GX_BG_BMPSCRBASE_0x64000 = 25, - GX_BG_BMPSCRBASE_0x68000 = 26, - GX_BG_BMPSCRBASE_0x6c000 = 27, - GX_BG_BMPSCRBASE_0x70000 = 28, - GX_BG_BMPSCRBASE_0x74000 = 29, - GX_BG_BMPSCRBASE_0x78000 = 30, - GX_BG_BMPSCRBASE_0x7c000 = 31 -} GXBGBmpScrBase; - -#define GX_BG_BMPSCRBASE_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, GX_BG_BMPSCRBASE_0x00000, GX_BG_BMPSCRBASE_0x7c000) - -typedef enum { - GX_BG_EXTPLTT_01 = 0, - GX_BG_EXTPLTT_23 = 1 -} GXBGExtPltt; - -#define GX_BG_EXTPLTT_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, GX_BG_EXTPLTT_01, GX_BG_EXTPLTT_23) - -#define GX_BG_PRIORITY_ASSERT(x) SDK_MINMAX_ASSERT(x, 0, 3) - -typedef enum { - GX_BG_EXTMODE_256x16PLTT = - (0 << REG_G2_BG2CNT_CHARBASE_SHIFT) | (0 << REG_G2_BG2CNT_COLORMODE_SHIFT), - GX_BG_EXTMODE_256BITMAP = - (0 << REG_G2_BG2CNT_CHARBASE_SHIFT) | (1 << REG_G2_BG2CNT_COLORMODE_SHIFT), - GX_BG_EXTMODE_DCBITMAP = - (1 << REG_G2_BG2CNT_CHARBASE_SHIFT) | (1 << REG_G2_BG2CNT_COLORMODE_SHIFT) -} GXBGExtMode; - -#if !(defined(SDK_WIN32) || defined(SDK_FROM_TOOL)) - -static void G2_SetBG0Control(GXBGScrSizeText screenSize, - GXBGColorMode colorMode, - GXBGScrBase screenBase, GXBGCharBase charBase, GXBGExtPltt bgExtPltt); - -static void G2_SetBG1Control(GXBGScrSizeText screenSize, - GXBGColorMode colorMode, - GXBGScrBase screenBase, GXBGCharBase charBase, GXBGExtPltt bgExtPltt); - -static void G2_SetBG2ControlText(GXBGScrSizeText screenSize, - GXBGColorMode colorMode, - GXBGScrBase screenBase, GXBGCharBase charBase); - -static void G2_SetBG2ControlAffine(GXBGScrSizeAffine screenSize, - GXBGAreaOver areaOver, - GXBGScrBase screenBase, GXBGCharBase charBase); - -#define G2_SetBG2Control256x16Pltt G2_SetBG2Control256x16Affine -static void G2_SetBG2Control256x16Affine(GXBGScrSize256x16Pltt screenSize, - GXBGAreaOver areaOver, - GXBGScrBase screenBase, GXBGCharBase charBase); - -static void G2_SetBG2Control256Bmp(GXBGScrSize256Bmp screenSize, - GXBGAreaOver areaOver, GXBGBmpScrBase screenBase); - -static void G2_SetBG2ControlDCBmp(GXBGScrSizeDcBmp screenSize, - GXBGAreaOver areaOver, GXBGBmpScrBase screenBase); - -static void G2_SetBG2ControlLargeBmp(GXBGScrSizeLargeBmp screenSize, GXBGAreaOver areaOver); - -static void G2_SetBG3ControlText(GXBGScrSizeText screenSize, - GXBGColorMode colorMode, - GXBGScrBase screenBase, GXBGCharBase charBase); - -static void G2_SetBG3ControlAffine(GXBGScrSizeAffine screenSize, - GXBGAreaOver areaOver, - GXBGScrBase screenBase, GXBGCharBase charBase); - -#define G2_SetBG3Control256x16Pltt G2_SetBG3Control256x16Affine -static void G2_SetBG3Control256x16Affine(GXBGScrSize256x16Pltt screenSize, - GXBGAreaOver areaOver, - GXBGScrBase screenBase, GXBGCharBase charBase); - -static void G2_SetBG3Control256Bmp(GXBGScrSize256Bmp screenSize, - GXBGAreaOver areaOver, GXBGBmpScrBase screenBase); - -static void G2_SetBG3ControlDCBmp(GXBGScrSizeDcBmp screenSize, - GXBGAreaOver areaOver, GXBGBmpScrBase screenBase); - -static void G2_SetBG0Priority(int priority); -static void G2_SetBG1Priority(int priority); -static void G2_SetBG2Priority(int priority); -static void G2_SetBG3Priority(int priority); - -static void G2_BG0Mosaic(BOOL enable); -static void G2_BG1Mosaic(BOOL enable); -static void G2_BG2Mosaic(BOOL enable); -static void G2_BG3Mosaic(BOOL enable); - -void * G2_GetBG0ScrPtr(void); -void * G2_GetBG1ScrPtr(void); -void * G2_GetBG2ScrPtr(void); -void * G2_GetBG3ScrPtr(void); -void * G2_GetBG0CharPtr(void); -void * G2_GetBG1CharPtr(void); -void * G2_GetBG2CharPtr(void); -void * G2_GetBG3CharPtr(void); -static void * G2_GetOBJCharPtr(void); - -static void G2S_SetBG0Control(GXBGScrSizeText screenSize, - GXBGColorMode colorMode, - GXBGScrBase screenBase, GXBGCharBase charBase, GXBGExtPltt bgExtPltt); - -static void G2S_SetBG1Control(GXBGScrSizeText screenSize, - GXBGColorMode colorMode, - GXBGScrBase screenBase, GXBGCharBase charBase, GXBGExtPltt bgExtPltt); - -static void G2S_SetBG2ControlText(GXBGScrSizeText screenSize, - GXBGColorMode colorMode, - GXBGScrBase screenBase, GXBGCharBase charBase); - -static void G2S_SetBG2ControlAffine(GXBGScrSizeAffine screenSize, - GXBGAreaOver areaOver, - GXBGScrBase screenBase, GXBGCharBase charBase); - -#define G2S_SetBG2Control256x16Pltt G2S_SetBG2Control256x16Affine -static void G2S_SetBG2Control256x16Affine(GXBGScrSize256x16Pltt screenSize, - GXBGAreaOver areaOver, - GXBGScrBase screenBase, GXBGCharBase charBase); - -static void G2S_SetBG2Control256Bmp(GXBGScrSize256Bmp screenSize, - GXBGAreaOver areaOver, GXBGBmpScrBase screenBase); - -static void G2S_SetBG2ControlDCBmp(GXBGScrSizeDcBmp screenSize, - GXBGAreaOver areaOver, GXBGBmpScrBase screenBase); - -static void G2S_SetBG3ControlText(GXBGScrSizeText screenSize, - GXBGColorMode colorMode, - GXBGScrBase screenBase, GXBGCharBase charBase); - -static void G2S_SetBG3ControlAffine(GXBGScrSizeAffine screenSize, - GXBGAreaOver areaOver, - GXBGScrBase screenBase, GXBGCharBase charBase); - -#define G2S_SetBG3Control256x16Pltt G2S_SetBG3Control256x16Affine -static void G2S_SetBG3Control256x16Affine(GXBGScrSize256x16Pltt screenSize, - GXBGAreaOver areaOver, - GXBGScrBase screenBase, GXBGCharBase charBase); - -static void G2S_SetBG3Control256Bmp(GXBGScrSize256Bmp screenSize, - GXBGAreaOver areaOver, GXBGBmpScrBase screenBase); - -static void G2S_SetBG3ControlDCBmp(GXBGScrSizeDcBmp screenSize, - GXBGAreaOver areaOver, GXBGBmpScrBase screenBase); - -static void G2S_SetBG0Priority(int priority); -static void G2S_SetBG1Priority(int priority); -static void G2S_SetBG2Priority(int priority); -static void G2S_SetBG3Priority(int priority); - -static void G2S_BG0Mosaic(BOOL enable); -static void G2S_BG1Mosaic(BOOL enable); -static void G2S_BG2Mosaic(BOOL enable); -static void G2S_BG3Mosaic(BOOL enable); - -void * G2S_GetBG0ScrPtr(void); -void * G2S_GetBG1ScrPtr(void); -void * G2S_GetBG2ScrPtr(void); -void * G2S_GetBG3ScrPtr(void); -void * G2S_GetBG0CharPtr(void); -void * G2S_GetBG1CharPtr(void); -void * G2S_GetBG2CharPtr(void); -void * G2S_GetBG3CharPtr(void); -static void * G2S_GetOBJCharPtr(void); - -#define GX_BG0_2D_CHECK_WARNING \ - SDK_WARNING(!(reg_GX_DISPCNT & REG_GX_DISPCNT_BG02D3D_MASK), \ - "G2_SetBG0Control: BG #0 assigned to 3D now.") -#ifdef SDK_DEBUG -#define GX_BGMODE_WARNING1(name, mode1) \ - do { \ - u32 tmp = (reg_GX_DISPCNT & REG_GX_DISPCNT_BGMODE_MASK) >> REG_GX_DISPCNT_BGMODE_SHIFT; \ - SDK_WARNING(tmp == mode1, \ - #name ## ": BG mode should be %d", mode1); \ - (void)0; \ - } while (0) - -#define GX_BGMODE_WARNING2(name, mode1, mode2) \ - do { \ - u32 tmp = (reg_GX_DISPCNT & REG_GX_DISPCNT_BGMODE_MASK) >> REG_GX_DISPCNT_BGMODE_SHIFT; \ - SDK_WARNING(tmp == mode1 || tmp == mode2, \ - #name ## ": BG mode should be %d or %d", mode1, mode2); \ - (void)0; \ - } while (0) - -#define GX_BGMODE_WARNING3(name, mode1, mode2, mode3) \ - do { \ - u32 tmp = (reg_GX_DISPCNT & REG_GX_DISPCNT_BGMODE_MASK) >> REG_GX_DISPCNT_BGMODE_SHIFT; \ - SDK_WARNING(tmp == mode1 || tmp == mode2 || tmp == mode3, \ - #name ## ": BG mode should be %d, %d, or %d", mode1, mode2, mode3); \ - (void)0; \ - } while (0) - -#define GXS_BGMODE_WARNING1(name, mode1) \ - do { \ - u32 tmp = (reg_GXS_DB_DISPCNT & REG_GXS_DB_DISPCNT_BGMODE_MASK) >> REG_GXS_DB_DISPCNT_BGMODE_SHIFT; \ - SDK_WARNING(tmp == mode1, \ - #name ## ": BG mode should be %d", mode1); \ - (void)0; \ - } while (0) - -#define GXS_BGMODE_WARNING2(name, mode1, mode2) \ - do { \ - u32 tmp = (reg_GXS_DB_DISPCNT & REG_GXS_DB_DISPCNT_BGMODE_MASK) >> REG_GXS_DB_DISPCNT_BGMODE_SHIFT; \ - SDK_WARNING(tmp == mode1 || tmp == mode2, \ - #name ## ": BG mode should be %d or %d", mode1, mode2); \ - (void)0; \ - } while (0) - -#define GXS_BGMODE_WARNING3(name, mode1, mode2, mode3) \ - do { \ - u32 tmp = (reg_GXS_DB_DISPCNT & REG_GXS_DB_DISPCNT_BGMODE_MASK) >> REG_GXS_DB_DISPCNT_BGMODE_SHIFT; \ - SDK_WARNING(tmp == mode1 || tmp == mode2 || tmp == mode3, \ - #name ## ": BG mode should be %d, %d, or %d", mode1, mode2, mode3); \ - (void)0; \ - } while (0) - -#else -#define GX_BGMODE_WARNING1(name, mode1) ((void)0) -#define GX_BGMODE_WARNING2(name, mode1, mode2) ((void)0) -#define GX_BGMODE_WARNING3(name, mode1, mode2, mode3) ((void)0) -#define GXS_BGMODE_WARNING1(name, mode1) ((void)0) -#define GXS_BGMODE_WARNING2(name, mode1, mode2) ((void)0) -#define GXS_BGMODE_WARNING3(name, mode1, mode2, mode3) ((void)0) -#endif - -static inline void G2_SetBG0Control (GXBGScrSizeText screenSize, - GXBGColorMode colorMode, - GXBGScrBase screenBase, - GXBGCharBase charBase, GXBGExtPltt bgExtPltt) -{ - GX_BG_SCRSIZE_TEXT_ASSERT(screenSize); - GX_BG_COLORMODE_ASSERT(colorMode); - GX_BG_SCRBASE_ASSERT(screenBase); - GX_BG_CHARBASE_ASSERT(charBase); - GX_BG_EXTPLTT_ASSERT(bgExtPltt); - GX_BG0_2D_CHECK_WARNING; - - reg_G2_BG0CNT = - (u16)((reg_G2_BG0CNT & (REG_G2_BG0CNT_PRIORITY_MASK | REG_G2_BG0CNT_MOSAIC_MASK)) | - (screenSize << REG_G2_BG0CNT_SCREENSIZE_SHIFT) | (colorMode << - REG_G2_BG0CNT_COLORMODE_SHIFT) | - (screenBase << REG_G2_BG0CNT_SCREENBASE_SHIFT) | (charBase << - REG_G2_BG0CNT_CHARBASE_SHIFT) | - (bgExtPltt << REG_G2_BG0CNT_BGPLTTSLOT_SHIFT)); -} - -static inline GXBg01Control G2_GetBG0Control (void) -{ - GX_BG0_2D_CHECK_WARNING; - - return *(volatile GXBg01Control *)REG_BG0CNT_ADDR; -} - -static inline void G2S_SetBG0Control (GXBGScrSizeText screenSize, - GXBGColorMode colorMode, - GXBGScrBase screenBase, - GXBGCharBase charBase, GXBGExtPltt bgExtPltt) -{ - GX_BG_SCRSIZE_TEXT_ASSERT(screenSize); - GX_BG_COLORMODE_ASSERT(colorMode); - GX_BG_SCRBASE_ASSERT(screenBase); - GX_BG_CHARBASE_ASSERT(charBase); - GX_BG_EXTPLTT_ASSERT(bgExtPltt); - - reg_G2S_DB_BG0CNT = - (u16)((reg_G2S_DB_BG0CNT & - (REG_G2S_DB_BG0CNT_PRIORITY_MASK | REG_G2S_DB_BG0CNT_MOSAIC_MASK)) | (screenSize << - REG_G2S_DB_BG0CNT_SCREENSIZE_SHIFT) - | (colorMode << REG_G2S_DB_BG0CNT_COLORMODE_SHIFT) | (screenBase << - REG_G2S_DB_BG0CNT_SCREENBASE_SHIFT) - | (charBase << REG_G2S_DB_BG0CNT_CHARBASE_SHIFT) | (bgExtPltt << - REG_G2S_DB_BG0CNT_BGPLTTSLOT_SHIFT)); -} - -static inline GXBg01Control G2S_GetBG0Control (void) -{ - return *(volatile GXBg01Control *)REG_DB_BG0CNT_ADDR; -} - -static inline void G2_SetBG1Control (GXBGScrSizeText screenSize, - GXBGColorMode colorMode, - GXBGScrBase screenBase, - GXBGCharBase charBase, GXBGExtPltt bgExtPltt) -{ - GX_BG_SCRSIZE_TEXT_ASSERT(screenSize); - GX_BG_COLORMODE_ASSERT(colorMode); - GX_BG_SCRBASE_ASSERT(screenBase); - GX_BG_CHARBASE_ASSERT(charBase); - GX_BG_EXTPLTT_ASSERT(bgExtPltt); - - reg_G2_BG1CNT = - (u16)((reg_G2_BG1CNT & (REG_G2_BG1CNT_PRIORITY_MASK | REG_G2_BG1CNT_MOSAIC_MASK)) | - (screenSize << REG_G2_BG1CNT_SCREENSIZE_SHIFT) | (colorMode << - REG_G2_BG1CNT_COLORMODE_SHIFT) | - (screenBase << REG_G2_BG1CNT_SCREENBASE_SHIFT) | (charBase << - REG_G2_BG1CNT_CHARBASE_SHIFT) | - (bgExtPltt << REG_G2_BG1CNT_BGPLTTSLOT_SHIFT)); -} - -static inline GXBg01Control G2_GetBG1Control (void) -{ - return *(volatile GXBg01Control *)REG_BG1CNT_ADDR; -} - -static inline void G2S_SetBG1Control (GXBGScrSizeText screenSize, - GXBGColorMode colorMode, - GXBGScrBase screenBase, - GXBGCharBase charBase, GXBGExtPltt bgExtPltt) -{ - GX_BG_SCRSIZE_TEXT_ASSERT(screenSize); - GX_BG_COLORMODE_ASSERT(colorMode); - GX_BG_SCRBASE_ASSERT(screenBase); - GX_BG_CHARBASE_ASSERT(charBase); - GX_BG_EXTPLTT_ASSERT(bgExtPltt); - - reg_G2S_DB_BG1CNT = - (u16)((reg_G2S_DB_BG1CNT & - (REG_G2S_DB_BG1CNT_PRIORITY_MASK | REG_G2S_DB_BG1CNT_MOSAIC_MASK)) | (screenSize << - REG_G2S_DB_BG1CNT_SCREENSIZE_SHIFT) - | (colorMode << REG_G2S_DB_BG1CNT_COLORMODE_SHIFT) | (screenBase << - REG_G2S_DB_BG1CNT_SCREENBASE_SHIFT) - | (charBase << REG_G2S_DB_BG1CNT_CHARBASE_SHIFT) | (bgExtPltt << - REG_G2S_DB_BG1CNT_BGPLTTSLOT_SHIFT)); -} - -static inline GXBg01Control G2S_GetBG1Control (void) -{ - return *(volatile GXBg01Control *)REG_DB_BG1CNT_ADDR; -} - -static inline GXBGExtMode G2_GetBG2ExtMode (void) -{ - GX_BGMODE_WARNING1(G2_GetBG2ExtMode, 5); - - return (GXBGExtMode)(reg_G2_BG2CNT & - (((reg_G2_BG2CNT & REG_G2_BG2CNT_COLORMODE_MASK) >> 5) | - REG_G2_BG2CNT_COLORMODE_MASK)); -} - -static inline GXBGExtMode G2S_GetBG2ExtMode (void) -{ - GXS_BGMODE_WARNING1(G2S_GetBG2ExtMode, 5); - - return (GXBGExtMode)(reg_G2S_DB_BG2CNT & - (((reg_G2S_DB_BG2CNT & REG_G2S_DB_BG2CNT_COLORMODE_MASK) >> 5) | - REG_G2S_DB_BG2CNT_COLORMODE_MASK)); -} - -static inline void G2_SetBG2ControlText (GXBGScrSizeText screenSize, - GXBGColorMode colorMode, - GXBGScrBase screenBase, GXBGCharBase charBase) -{ - GX_BG_SCRSIZE_TEXT_ASSERT(screenSize); - GX_BG_COLORMODE_ASSERT(colorMode); - GX_BG_SCRBASE_ASSERT(screenBase); - GX_BG_CHARBASE_ASSERT(charBase); - GX_BGMODE_WARNING3(G2_SetBG2ControlText, 0, 1, 3); - - reg_G2_BG2CNT = - (u16)((reg_G2_BG2CNT & (REG_G2_BG2CNT_PRIORITY_MASK | REG_G2_BG2CNT_MOSAIC_MASK)) | - (screenSize << REG_G2_BG2CNT_SCREENSIZE_SHIFT) | (colorMode << - REG_G2_BG2CNT_COLORMODE_SHIFT) | - (screenBase << REG_G2_BG2CNT_SCREENBASE_SHIFT) | (charBase << - REG_G2_BG2CNT_CHARBASE_SHIFT)); -} - -static inline GXBg23ControlText G2_GetBG2ControlText (void) -{ - GX_BGMODE_WARNING3(G2_GetBG2ControlText, 0, 1, 3); - - return *(volatile GXBg23ControlText *)REG_BG2CNT_ADDR; -} - -static inline void G2S_SetBG2ControlText (GXBGScrSizeText screenSize, - GXBGColorMode colorMode, - GXBGScrBase screenBase, GXBGCharBase charBase) -{ - GX_BG_SCRSIZE_TEXT_ASSERT(screenSize); - GX_BG_COLORMODE_ASSERT(colorMode); - GX_BG_SCRBASE_ASSERT(screenBase); - GX_BG_CHARBASE_ASSERT(charBase); - GXS_BGMODE_WARNING3(G2S_SetBG2ControlText, 0, 1, 3); - - reg_G2S_DB_BG2CNT = - (u16)((reg_G2S_DB_BG2CNT & - (REG_G2S_DB_BG2CNT_PRIORITY_MASK | REG_G2S_DB_BG2CNT_MOSAIC_MASK)) | (screenSize << - REG_G2S_DB_BG2CNT_SCREENSIZE_SHIFT) - | (colorMode << REG_G2S_DB_BG2CNT_COLORMODE_SHIFT) | (screenBase << - REG_G2S_DB_BG2CNT_SCREENBASE_SHIFT) - | (charBase << REG_G2S_DB_BG2CNT_CHARBASE_SHIFT)); -} - -static inline GXBg23ControlText G2S_GetBG2ControlText (void) -{ - GXS_BGMODE_WARNING3(G2S_GetBG2ControlText, 0, 1, 3); - - return *(volatile GXBg23ControlText *)REG_DB_BG2CNT_ADDR; -} - -static inline void G2_SetBG2ControlAffine (GXBGScrSizeAffine screenSize, - GXBGAreaOver areaOver, - GXBGScrBase screenBase, GXBGCharBase charBase) -{ - GX_BG_SCRSIZE_AFFINE_ASSERT(screenSize); - GX_BG_AREAOVER_ASSERT(areaOver); - GX_BG_SCRBASE_ASSERT(screenBase); - GX_BG_CHARBASE_ASSERT(charBase); - GX_BGMODE_WARNING2(G2_SetBG2ControlAffine, 2, 4); - - reg_G2_BG2CNT = - (u16)((reg_G2_BG2CNT & (REG_G2_BG2CNT_PRIORITY_MASK | REG_G2_BG2CNT_MOSAIC_MASK)) | - (screenSize << REG_G2_BG2CNT_SCREENSIZE_SHIFT) | (screenBase << - REG_G2_BG2CNT_SCREENBASE_SHIFT) | - (charBase << REG_G2_BG2CNT_CHARBASE_SHIFT) | (areaOver << - REG_G2_BG2CNT_AREAOVER_SHIFT)); -} - -static inline GXBg23ControlAffine G2_GetBG2ControlAffine (void) -{ - GX_BGMODE_WARNING2(G2_GetBG2ControlAffine, 2, 4); - - return *(volatile GXBg23ControlAffine *)REG_BG2CNT_ADDR; -} - -static inline void G2S_SetBG2ControlAffine (GXBGScrSizeAffine screenSize, - GXBGAreaOver areaOver, - GXBGScrBase screenBase, GXBGCharBase charBase) -{ - GX_BG_SCRSIZE_AFFINE_ASSERT(screenSize); - GX_BG_AREAOVER_ASSERT(areaOver); - GX_BG_SCRBASE_ASSERT(screenBase); - GX_BG_CHARBASE_ASSERT(charBase); - GXS_BGMODE_WARNING2(G2S_SetBG2ControlAffine, 2, 4); - - reg_G2S_DB_BG2CNT = - (u16)((reg_G2S_DB_BG2CNT & - (REG_G2S_DB_BG2CNT_PRIORITY_MASK | REG_G2S_DB_BG2CNT_MOSAIC_MASK)) | (screenSize << - REG_G2S_DB_BG2CNT_SCREENSIZE_SHIFT) - | (screenBase << REG_G2S_DB_BG2CNT_SCREENBASE_SHIFT) | (charBase << - REG_G2S_DB_BG2CNT_CHARBASE_SHIFT) - | (areaOver << REG_G2S_DB_BG2CNT_AREAOVER_SHIFT)); -} - -static inline GXBg23ControlAffine G2S_GetBG2ControlAffine (void) -{ - GXS_BGMODE_WARNING2(G2S_GetBG2ControlAffine, 2, 4); - - return *(volatile GXBg23ControlAffine *)REG_DB_BG2CNT_ADDR; -} - -static inline void G2_SetBG2Control256x16Affine (GXBGScrSize256x16Pltt screenSize, - GXBGAreaOver areaOver, - GXBGScrBase screenBase, GXBGCharBase charBase) -{ - GX_BG_SCRSIZE_256x16PLTT_ASSERT(screenSize); - GX_BG_AREAOVER_ASSERT(areaOver); - GX_BG_SCRBASE_ASSERT(screenBase); - GX_BG_CHARBASE_ASSERT(charBase); - GX_BGMODE_WARNING1(G2_SetBG2Control256x16Affine, 5); - - reg_G2_BG2CNT = - (u16)((reg_G2_BG2CNT & (REG_G2_BG2CNT_PRIORITY_MASK | REG_G2_BG2CNT_MOSAIC_MASK)) | - (screenSize << REG_G2_BG2CNT_SCREENSIZE_SHIFT) | (charBase << - REG_G2_BG2CNT_CHARBASE_SHIFT) | - GX_BG_EXTMODE_256x16PLTT | (screenBase << REG_G2_BG2CNT_SCREENBASE_SHIFT) | (areaOver - << - REG_G2_BG2CNT_AREAOVER_SHIFT)); -} - -static inline GXBg23Control256x16Pltt G2_GetBG2Control256x16Pltt (void) -{ - GX_BGMODE_WARNING1(G2_GetBG2Control256x16Pltt, 5); - - return *(volatile GXBg23Control256x16Pltt *)REG_BG2CNT_ADDR; -} - -static inline GXBg23Control256x16Affine G2_GetBG2Control256x16Affine (void) -{ - GX_BGMODE_WARNING1(G2_GetBG2Control256x16Affine, 5); - - return *(volatile GXBg23Control256x16Affine *)REG_BG2CNT_ADDR; -} - -static inline void G2S_SetBG2Control256x16Affine (GXBGScrSize256x16Pltt screenSize, - GXBGAreaOver areaOver, - GXBGScrBase screenBase, GXBGCharBase charBase) -{ - GX_BG_SCRSIZE_256x16PLTT_ASSERT(screenSize); - GX_BG_AREAOVER_ASSERT(areaOver); - GX_BG_SCRBASE_ASSERT(screenBase); - GX_BG_CHARBASE_ASSERT(charBase); - GXS_BGMODE_WARNING1(G2S_SetBG2Control256x16Affine, 5); - - reg_G2S_DB_BG2CNT = - (u16)((reg_G2S_DB_BG2CNT & - (REG_G2S_DB_BG2CNT_PRIORITY_MASK | REG_G2S_DB_BG2CNT_MOSAIC_MASK)) | (screenSize << - REG_G2S_DB_BG2CNT_SCREENSIZE_SHIFT) - | (charBase << REG_G2S_DB_BG2CNT_CHARBASE_SHIFT) | GX_BG_EXTMODE_256x16PLTT | - (screenBase << REG_G2S_DB_BG2CNT_SCREENBASE_SHIFT) | (areaOver << - REG_G2S_DB_BG2CNT_AREAOVER_SHIFT)); -} - -static inline GXBg23Control256x16Pltt G2S_GetBG2Control256x16Pltt (void) -{ - GXS_BGMODE_WARNING1(G2S_GetBG2Control256x16Pltt, 5); - - return *(volatile GXBg23Control256x16Pltt *)REG_DB_BG2CNT_ADDR; -} - -static inline GXBg23Control256x16Affine G2S_GetBG2Control256x16Affine (void) -{ - GXS_BGMODE_WARNING1(G2S_GetBG2Control256x16Affine, 5); - - return *(volatile GXBg23Control256x16Affine *)REG_DB_BG2CNT_ADDR; -} - -static inline void G2_SetBG2Control256Bmp (GXBGScrSize256Bmp screenSize, - GXBGAreaOver areaOver, GXBGBmpScrBase screenBase) -{ - GX_BG_SCRSIZE_256BMP_ASSERT(screenSize); - GX_BG_AREAOVER_ASSERT(areaOver); - GX_BG_BMPSCRBASE_ASSERT(screenBase); - GX_BGMODE_WARNING1(G2_SetBG2Control256Bmp, 5); - - reg_G2_BG2CNT = - (u16)((reg_G2_BG2CNT & (REG_G2_BG2CNT_PRIORITY_MASK | REG_G2_BG2CNT_MOSAIC_MASK)) | - (screenSize << REG_G2_BG2CNT_SCREENSIZE_SHIFT) | GX_BG_EXTMODE_256BITMAP | (screenBase - << - REG_G2_BG2CNT_SCREENBASE_SHIFT) - | (areaOver << REG_G2_BG2CNT_AREAOVER_SHIFT)); -} - -static inline GXBg23Control256Bmp G2_GetBG2Control256Bmp (void) -{ - GX_BGMODE_WARNING1(G2_GetBG2Control256Bmp, 5); - - return *(volatile GXBg23Control256Bmp *)REG_BG2CNT_ADDR; -} - -static inline void G2S_SetBG2Control256Bmp (GXBGScrSize256Bmp screenSize, - GXBGAreaOver areaOver, GXBGBmpScrBase screenBase) -{ - GX_BG_SCRSIZE_256BMP_ASSERT(screenSize); - GX_BG_AREAOVER_ASSERT(areaOver); - GX_BG_BMPSCRBASE_ASSERT(screenBase); - SDK_ASSERTMSG(screenSize != GX_BG_SCRSIZE_256BMP_512x512, - "SUB 2D engine does not support GX_BG_SCRSIZE_256BMP_512x512"); - GXS_BGMODE_WARNING1(G2S_SetBG2Control256Bmp, 5); - - reg_G2S_DB_BG2CNT = - (u16)((reg_G2S_DB_BG2CNT & - (REG_G2S_DB_BG2CNT_PRIORITY_MASK | REG_G2S_DB_BG2CNT_MOSAIC_MASK)) | (screenSize << - REG_G2S_DB_BG2CNT_SCREENSIZE_SHIFT) - | GX_BG_EXTMODE_256BITMAP | (screenBase << REG_G2S_DB_BG2CNT_SCREENBASE_SHIFT) | - (areaOver << REG_G2S_DB_BG2CNT_AREAOVER_SHIFT)); -} - -static inline GXBg23Control256Bmp G2S_GetBG2Control256Bmp (void) -{ - GXS_BGMODE_WARNING1(G2S_GetBG2Control256Bmp, 5); - - return *(volatile GXBg23Control256Bmp *)REG_DB_BG2CNT_ADDR; -} - -static inline void G2_SetBG2ControlDCBmp (GXBGScrSizeDcBmp screenSize, - GXBGAreaOver areaOver, GXBGBmpScrBase screenBase) -{ - GX_BG_SCRSIZE_DCBMP_ASSERT(screenSize); - GX_BG_AREAOVER_ASSERT(areaOver); - GX_BG_BMPSCRBASE_ASSERT(screenBase); - GX_BGMODE_WARNING1(G2_SetBG2ControlDCBmp, 5); - - reg_G2_BG2CNT = - (u16)((reg_G2_BG2CNT & (REG_G2_BG2CNT_PRIORITY_MASK | REG_G2_BG2CNT_MOSAIC_MASK)) | - (screenSize << REG_G2_BG2CNT_SCREENSIZE_SHIFT) | GX_BG_EXTMODE_DCBITMAP | (screenBase - << - REG_G2_BG2CNT_SCREENBASE_SHIFT) - | (areaOver << REG_G2_BG2CNT_AREAOVER_SHIFT)); -} - -static inline GXBg23ControlDCBmp G2_GetBG2ControlDCBmp (void) -{ - GX_BGMODE_WARNING1(G2_SetBG2ControlDCBmp, 5); - - return *(volatile GXBg23ControlDCBmp *)REG_BG2CNT_ADDR; -} - -static inline void G2S_SetBG2ControlDCBmp (GXBGScrSizeDcBmp screenSize, - GXBGAreaOver areaOver, GXBGBmpScrBase screenBase) -{ - GX_BG_SCRSIZE_DCBMP_ASSERT(screenSize); - GX_BG_AREAOVER_ASSERT(areaOver); - GX_BG_BMPSCRBASE_ASSERT(screenBase); - SDK_ASSERTMSG(screenSize != GX_BG_SCRSIZE_DCBMP_512x256, - "SUB 2D engine does not support GX_BG_SCRSIZE_DCBMP_512x256"); - SDK_ASSERTMSG(screenSize != GX_BG_SCRSIZE_DCBMP_512x512, - "SUB 2D engine does not support GX_BG_SCRSIZE_DCBMP_512x512"); - GXS_BGMODE_WARNING1(G2S_SetBG2ControlDCBmp, 5); - - reg_G2S_DB_BG2CNT = - (u16)((reg_G2S_DB_BG2CNT & - (REG_G2S_DB_BG2CNT_PRIORITY_MASK | REG_G2S_DB_BG2CNT_MOSAIC_MASK)) | (screenSize << - REG_G2S_DB_BG2CNT_SCREENSIZE_SHIFT) - | GX_BG_EXTMODE_DCBITMAP | (screenBase << REG_G2S_DB_BG2CNT_SCREENBASE_SHIFT) | - (areaOver << REG_G2S_DB_BG2CNT_AREAOVER_SHIFT)); -} - -static inline GXBg23ControlDCBmp G2S_GetBG2ControlDCBmp (void) -{ - GXS_BGMODE_WARNING1(G2S_GetBG2ControlDCBmp, 5); - - return *(volatile GXBg23ControlDCBmp *)REG_DB_BG2CNT_ADDR; -} - -static inline void G2_SetBG2ControlLargeBmp (GXBGScrSizeLargeBmp screenSize, GXBGAreaOver areaOver) -{ - GX_BG_SCRSIZE_LARGEBMP_ASSERT(screenSize); - GX_BG_AREAOVER_ASSERT(areaOver); - GX_BGMODE_WARNING1(G2_SetBG2ControlLargeBmp, 6); - - reg_G2_BG2CNT = - (u16)((reg_G2_BG2CNT & (REG_G2_BG2CNT_PRIORITY_MASK | REG_G2_BG2CNT_MOSAIC_MASK)) | - (screenSize << REG_G2_BG2CNT_SCREENSIZE_SHIFT) | (areaOver << - REG_G2_BG2CNT_AREAOVER_SHIFT)); -} - -static inline GXBg2ControlLargeBmp G2_GetBG2ControlLargeBmp (void) -{ - GX_BGMODE_WARNING1(G2_GetBG2ControlLargeBmp, 6); - - return *(volatile GXBg2ControlLargeBmp *)REG_BG2CNT_ADDR; -} - -static inline GXBGExtMode G2_GetBG3ExtMode (void) -{ - GX_BGMODE_WARNING3(G2_GetBG3ExtMode, 3, 4, 5); - - return (GXBGExtMode)(reg_G2_BG3CNT & - (((reg_G2_BG3CNT & REG_G2_BG3CNT_COLORMODE_MASK) >> 5) | - REG_G2_BG3CNT_COLORMODE_MASK)); -} - -static inline GXBGExtMode G2S_GetBG3ExtMode (void) -{ - GXS_BGMODE_WARNING3(G2S_GetBG3ExtMode, 3, 4, 5); - - return (GXBGExtMode)(reg_G2S_DB_BG3CNT & - (((reg_G2S_DB_BG3CNT & REG_G2S_DB_BG3CNT_COLORMODE_MASK) >> 5) | - REG_G2S_DB_BG3CNT_COLORMODE_MASK)); -} - -static inline void G2_SetBG3ControlText (GXBGScrSizeText screenSize, - GXBGColorMode colorMode, - GXBGScrBase screenBase, GXBGCharBase charBase) -{ - GX_BG_SCRSIZE_TEXT_ASSERT(screenSize); - GX_BG_COLORMODE_ASSERT(colorMode); - GX_BG_SCRBASE_ASSERT(screenBase); - GX_BG_CHARBASE_ASSERT(charBase); - GX_BGMODE_WARNING1(G2_SetBG3ControlText, 0); - - reg_G2_BG3CNT = - (u16)((reg_G2_BG3CNT & (REG_G2_BG3CNT_PRIORITY_MASK | REG_G2_BG3CNT_MOSAIC_MASK)) | - (screenSize << REG_G2_BG3CNT_SCREENSIZE_SHIFT) | (colorMode << - REG_G2_BG3CNT_COLORMODE_SHIFT) | - (screenBase << REG_G2_BG3CNT_SCREENBASE_SHIFT) | (charBase << - REG_G2_BG3CNT_CHARBASE_SHIFT)); -} - -static inline GXBg23ControlText G2_GetBG3ControlText (void) -{ - return *(volatile GXBg23ControlText *)REG_BG3CNT_ADDR; -} - -static inline void G2S_SetBG3ControlText (GXBGScrSizeText screenSize, - GXBGColorMode colorMode, - GXBGScrBase screenBase, GXBGCharBase charBase) -{ - GX_BG_SCRSIZE_TEXT_ASSERT(screenSize); - GX_BG_COLORMODE_ASSERT(colorMode); - GX_BG_SCRBASE_ASSERT(screenBase); - GX_BG_CHARBASE_ASSERT(charBase); - GXS_BGMODE_WARNING1(G2S_SetBG3ControlText, 0); - - reg_G2S_DB_BG3CNT = - (u16)((reg_G2S_DB_BG3CNT & - (REG_G2S_DB_BG3CNT_PRIORITY_MASK | REG_G2S_DB_BG3CNT_MOSAIC_MASK)) | (screenSize << - REG_G2S_DB_BG3CNT_SCREENSIZE_SHIFT) - | (colorMode << REG_G2S_DB_BG3CNT_COLORMODE_SHIFT) | (screenBase << - REG_G2S_DB_BG3CNT_SCREENBASE_SHIFT) - | (charBase << REG_G2S_DB_BG3CNT_CHARBASE_SHIFT)); -} - -static inline GXBg23ControlText G2S_GetBG3ControlText (void) -{ - return *(volatile GXBg23ControlText *)REG_DB_BG3CNT_ADDR; -} - -static inline void G2_SetBG3ControlAffine (GXBGScrSizeAffine screenSize, - GXBGAreaOver areaOver, - GXBGScrBase screenBase, GXBGCharBase charBase) -{ - GX_BG_SCRSIZE_AFFINE_ASSERT(screenSize); - GX_BG_AREAOVER_ASSERT(areaOver); - GX_BG_SCRBASE_ASSERT(screenBase); - GX_BG_CHARBASE_ASSERT(charBase); - GX_BGMODE_WARNING2(G2_SetBG3ControlAffine, 1, 2); - - reg_G2_BG3CNT = - (u16)((reg_G2_BG3CNT & (REG_G2_BG3CNT_PRIORITY_MASK | REG_G2_BG3CNT_MOSAIC_MASK)) | - (screenSize << REG_G2_BG3CNT_SCREENSIZE_SHIFT) | (screenBase << - REG_G2_BG3CNT_SCREENBASE_SHIFT) | - (charBase << REG_G2_BG3CNT_CHARBASE_SHIFT) | (areaOver << - REG_G2_BG3CNT_AREAOVER_SHIFT)); -} - -static inline GXBg23ControlAffine G2_GetBG3ControlAffine (void) -{ - return *(volatile GXBg23ControlAffine *)REG_BG3CNT_ADDR; -} - -static inline void G2S_SetBG3ControlAffine (GXBGScrSizeAffine screenSize, - GXBGAreaOver areaOver, - GXBGScrBase screenBase, GXBGCharBase charBase) -{ - GX_BG_SCRSIZE_AFFINE_ASSERT(screenSize); - GX_BG_AREAOVER_ASSERT(areaOver); - GX_BG_SCRBASE_ASSERT(screenBase); - GX_BG_CHARBASE_ASSERT(charBase); - GXS_BGMODE_WARNING2(G2S_SetBG3ControlAffine, 1, 2); - - reg_G2S_DB_BG3CNT = - (u16)((reg_G2S_DB_BG3CNT & - (REG_G2S_DB_BG3CNT_PRIORITY_MASK | REG_G2S_DB_BG3CNT_MOSAIC_MASK)) | (screenSize << - REG_G2S_DB_BG3CNT_SCREENSIZE_SHIFT) - | (screenBase << REG_G2S_DB_BG3CNT_SCREENBASE_SHIFT) | (charBase << - REG_G2S_DB_BG3CNT_CHARBASE_SHIFT) - | (areaOver << REG_G2S_DB_BG3CNT_AREAOVER_SHIFT)); -} - -static inline GXBg23ControlAffine G2S_GetBG3ControlAffine (void) -{ - return *(volatile GXBg23ControlAffine *)REG_DB_BG3CNT_ADDR; -} - -static inline void G2_SetBG3Control256x16Affine (GXBGScrSize256x16Pltt screenSize, - GXBGAreaOver areaOver, - GXBGScrBase screenBase, GXBGCharBase charBase) -{ - GX_BG_SCRSIZE_256x16PLTT_ASSERT(screenSize); - GX_BG_AREAOVER_ASSERT(areaOver); - GX_BG_SCRBASE_ASSERT(screenBase); - GX_BG_CHARBASE_ASSERT(charBase); - GX_BGMODE_WARNING3(G2_SetBG3Control256x16Affine, 3, 4, 5); - - reg_G2_BG3CNT = - (u16)((reg_G2_BG3CNT & (REG_G2_BG3CNT_PRIORITY_MASK | REG_G2_BG3CNT_MOSAIC_MASK)) | - (screenSize << REG_G2_BG3CNT_SCREENSIZE_SHIFT) | (charBase << - REG_G2_BG3CNT_CHARBASE_SHIFT) | - GX_BG_EXTMODE_256x16PLTT | (screenBase << REG_G2_BG3CNT_SCREENBASE_SHIFT) | (areaOver - << - REG_G2_BG3CNT_AREAOVER_SHIFT)); -} - -static inline GXBg23Control256x16Pltt G2_GetBG3Control256x16Pltt (void) -{ - return *(volatile GXBg23Control256x16Pltt *)REG_BG3CNT_ADDR; -} - -static inline GXBg23Control256x16Affine G2_GetBG3Control256x16Affine (void) -{ - return *(volatile GXBg23Control256x16Affine *)REG_BG3CNT_ADDR; -} - -static inline void G2S_SetBG3Control256x16Affine (GXBGScrSize256x16Pltt screenSize, - GXBGAreaOver areaOver, - GXBGScrBase screenBase, GXBGCharBase charBase) -{ - GX_BG_SCRSIZE_256x16PLTT_ASSERT(screenSize); - GX_BG_AREAOVER_ASSERT(areaOver); - GX_BG_SCRBASE_ASSERT(screenBase); - GX_BG_CHARBASE_ASSERT(charBase); - GXS_BGMODE_WARNING3(G2S_SetBG3Control256x16Affine, 3, 4, 5); - - reg_G2S_DB_BG3CNT = - (u16)((reg_G2S_DB_BG3CNT & - (REG_G2S_DB_BG3CNT_PRIORITY_MASK | REG_G2S_DB_BG3CNT_MOSAIC_MASK)) | (screenSize << - REG_G2S_DB_BG3CNT_SCREENSIZE_SHIFT) - | (charBase << REG_G2S_DB_BG3CNT_CHARBASE_SHIFT) | GX_BG_EXTMODE_256x16PLTT | - (screenBase << REG_G2S_DB_BG3CNT_SCREENBASE_SHIFT) | (areaOver << - REG_G2S_DB_BG3CNT_AREAOVER_SHIFT)); -} - -static inline GXBg23Control256x16Pltt G2S_GetBG3Control256x16Pltt (void) -{ - return *(volatile GXBg23Control256x16Pltt *)REG_DB_BG3CNT_ADDR; -} - -static inline GXBg23Control256x16Affine G2S_GetBG3Control256x16Affine (void) -{ - return *(volatile GXBg23Control256x16Affine *)REG_DB_BG3CNT_ADDR; -} - -static inline void G2_SetBG3Control256Bmp (GXBGScrSize256Bmp screenSize, - GXBGAreaOver areaOver, GXBGBmpScrBase screenBase) -{ - GX_BG_SCRSIZE_256BMP_ASSERT(screenSize); - GX_BG_AREAOVER_ASSERT(areaOver); - GX_BG_BMPSCRBASE_ASSERT(screenBase); - GX_BGMODE_WARNING3(G2_SetBG3Control256Bmp, 3, 4, 5); - - reg_G2_BG3CNT = - (u16)((reg_G2_BG3CNT & (REG_G2_BG3CNT_PRIORITY_MASK | REG_G2_BG3CNT_MOSAIC_MASK)) | - (screenSize << REG_G2_BG3CNT_SCREENSIZE_SHIFT) | GX_BG_EXTMODE_256BITMAP | (screenBase - << - REG_G2_BG3CNT_SCREENBASE_SHIFT) - | (areaOver << REG_G2_BG3CNT_AREAOVER_SHIFT)); -} - -static inline GXBg23Control256Bmp G2_GetBG3Control256Bmp (void) -{ - return *(volatile GXBg23Control256Bmp *)REG_BG3CNT_ADDR; -} - -static inline void G2S_SetBG3Control256Bmp (GXBGScrSize256Bmp screenSize, - GXBGAreaOver areaOver, GXBGBmpScrBase screenBase) -{ - GX_BG_SCRSIZE_256BMP_ASSERT(screenSize); - GX_BG_AREAOVER_ASSERT(areaOver); - GX_BG_BMPSCRBASE_ASSERT(screenBase); - SDK_ASSERTMSG(screenSize != GX_BG_SCRSIZE_256BMP_512x512, - "SUB 2D engine does not support GX_BG_SCRSIZE_256BMP_512x512"); - GXS_BGMODE_WARNING3(G2S_SetBG3Control256Bmp, 3, 4, 5); - - reg_G2S_DB_BG3CNT = - (u16)((reg_G2S_DB_BG3CNT & - (REG_G2S_DB_BG3CNT_PRIORITY_MASK | REG_G2S_DB_BG3CNT_MOSAIC_MASK)) | (screenSize << - REG_G2S_DB_BG3CNT_SCREENSIZE_SHIFT) - | GX_BG_EXTMODE_256BITMAP | (screenBase << REG_G2S_DB_BG3CNT_SCREENBASE_SHIFT) | - (areaOver << REG_G2S_DB_BG3CNT_AREAOVER_SHIFT)); -} - -static inline GXBg23Control256Bmp G2S_GetBG3Control256Bmp (void) -{ - return *(volatile GXBg23Control256Bmp *)REG_DB_BG3CNT_ADDR; -} - -static inline void G2_SetBG3ControlDCBmp (GXBGScrSizeDcBmp screenSize, - GXBGAreaOver areaOver, GXBGBmpScrBase screenBase) -{ - GX_BG_SCRSIZE_DCBMP_ASSERT(screenSize); - GX_BG_AREAOVER_ASSERT(areaOver); - GX_BG_BMPSCRBASE_ASSERT(screenBase); - GX_BGMODE_WARNING3(G2_SetBG3ControlDCBmp, 3, 4, 5); - - reg_G2_BG3CNT = - (u16)((reg_G2_BG3CNT & (REG_G2_BG3CNT_PRIORITY_MASK | REG_G2_BG3CNT_MOSAIC_MASK)) | - (screenSize << REG_G2_BG3CNT_SCREENSIZE_SHIFT) | GX_BG_EXTMODE_DCBITMAP | (screenBase - << - REG_G2_BG3CNT_SCREENBASE_SHIFT) - | (areaOver << REG_G2_BG3CNT_AREAOVER_SHIFT)); -} - -static inline GXBg23ControlDCBmp G2_GetBG3ControlDCBmp (void) -{ - return *(volatile GXBg23ControlDCBmp *)REG_BG3CNT_ADDR; -} - -static inline void G2S_SetBG3ControlDCBmp (GXBGScrSizeDcBmp screenSize, - GXBGAreaOver areaOver, GXBGBmpScrBase screenBase) -{ - GX_BG_SCRSIZE_DCBMP_ASSERT(screenSize); - GX_BG_AREAOVER_ASSERT(areaOver); - GX_BG_BMPSCRBASE_ASSERT(screenBase); - GXS_BGMODE_WARNING3(G2S_SetBG3ControlDCBmp, 3, 4, 5); - - reg_G2S_DB_BG3CNT = - (u16)((reg_G2S_DB_BG3CNT & - (REG_G2S_DB_BG3CNT_PRIORITY_MASK | REG_G2S_DB_BG3CNT_MOSAIC_MASK)) | (screenSize << - REG_G2S_DB_BG3CNT_SCREENSIZE_SHIFT) - | GX_BG_EXTMODE_DCBITMAP | (screenBase << REG_G2S_DB_BG3CNT_SCREENBASE_SHIFT) | - (areaOver << REG_G2S_DB_BG3CNT_AREAOVER_SHIFT)); -} - -static inline GXBg23ControlDCBmp G2S_GetBG3ControlDCBmp (void) -{ - return *(volatile GXBg23ControlDCBmp *)REG_DB_BG3CNT_ADDR; -} - -static inline void G2_BG0Mosaic (BOOL enable) -{ - if (enable) { - reg_G2_BG0CNT |= REG_G2_BG0CNT_MOSAIC_MASK; - } else { - reg_G2_BG0CNT &= ~REG_G2_BG0CNT_MOSAIC_MASK; - } -} - -static inline void G2S_BG0Mosaic (BOOL enable) -{ - if (enable) { - reg_G2S_DB_BG0CNT |= REG_G2S_DB_BG0CNT_MOSAIC_MASK; - } else { - reg_G2S_DB_BG0CNT &= ~REG_G2S_DB_BG0CNT_MOSAIC_MASK; - } -} - -static inline void G2_BG1Mosaic (BOOL enable) -{ - if (enable) { - reg_G2_BG1CNT |= REG_G2_BG1CNT_MOSAIC_MASK; - } else { - reg_G2_BG1CNT &= ~REG_G2_BG1CNT_MOSAIC_MASK; - } -} - -static inline void G2S_BG1Mosaic (BOOL enable) -{ - if (enable) { - reg_G2S_DB_BG1CNT |= REG_G2S_DB_BG1CNT_MOSAIC_MASK; - } else { - reg_G2S_DB_BG1CNT &= ~REG_G2S_DB_BG1CNT_MOSAIC_MASK; - } -} - -static inline void G2_BG2Mosaic (BOOL enable) -{ - if (enable) { - reg_G2_BG2CNT |= REG_G2_BG2CNT_MOSAIC_MASK; - } else { - reg_G2_BG2CNT &= ~REG_G2_BG2CNT_MOSAIC_MASK; - } -} - -static inline void G2S_BG2Mosaic (BOOL enable) -{ - if (enable) { - reg_G2S_DB_BG2CNT |= REG_G2S_DB_BG2CNT_MOSAIC_MASK; - } else { - reg_G2S_DB_BG2CNT &= ~REG_G2S_DB_BG2CNT_MOSAIC_MASK; - } -} - -static inline void G2_BG3Mosaic (BOOL enable) -{ - if (enable) { - reg_G2_BG3CNT |= REG_G2_BG3CNT_MOSAIC_MASK; - } else { - reg_G2_BG3CNT &= ~REG_G2_BG3CNT_MOSAIC_MASK; - } -} - -static inline void G2S_BG3Mosaic (BOOL enable) -{ - if (enable) { - reg_G2S_DB_BG3CNT |= REG_G2S_DB_BG3CNT_MOSAIC_MASK; - } else { - reg_G2S_DB_BG3CNT &= ~REG_G2S_DB_BG3CNT_MOSAIC_MASK; - } -} - -static inline void G2_SetBG0Priority (int priority) -{ - GX_BG_PRIORITY_ASSERT(priority); - - reg_G2_BG0CNT = (u16)((reg_G2_BG0CNT & ~REG_G2_BG0CNT_PRIORITY_MASK) | - (priority << REG_G2_BG0CNT_PRIORITY_SHIFT)); -} - -static inline void G2S_SetBG0Priority (int priority) -{ - GX_BG_PRIORITY_ASSERT(priority); - - reg_G2S_DB_BG0CNT = (u16)((reg_G2S_DB_BG0CNT & ~REG_G2S_DB_BG0CNT_PRIORITY_MASK) | - (priority << REG_G2S_DB_BG0CNT_PRIORITY_SHIFT)); -} - -static inline void G2_SetBG1Priority (int priority) -{ - GX_BG_PRIORITY_ASSERT(priority); - - reg_G2_BG1CNT = (u16)((reg_G2_BG1CNT & ~REG_G2_BG1CNT_PRIORITY_MASK) | - (priority << REG_G2_BG1CNT_PRIORITY_SHIFT)); -} - -static inline void G2S_SetBG1Priority (int priority) -{ - GX_BG_PRIORITY_ASSERT(priority); - - reg_G2S_DB_BG1CNT = (u16)((reg_G2S_DB_BG1CNT & ~REG_G2S_DB_BG1CNT_PRIORITY_MASK) | - (priority << REG_G2S_DB_BG1CNT_PRIORITY_SHIFT)); -} - -static inline void G2_SetBG2Priority (int priority) -{ - GX_BG_PRIORITY_ASSERT(priority); - - reg_G2_BG2CNT = (u16)((reg_G2_BG2CNT & ~REG_G2_BG2CNT_PRIORITY_MASK) | - (priority << REG_G2_BG2CNT_PRIORITY_SHIFT)); -} - -static inline void G2S_SetBG2Priority (int priority) -{ - GX_BG_PRIORITY_ASSERT(priority); - - reg_G2S_DB_BG2CNT = (u16)((reg_G2S_DB_BG2CNT & ~REG_G2S_DB_BG2CNT_PRIORITY_MASK) | - (priority << REG_G2S_DB_BG2CNT_PRIORITY_SHIFT)); -} - -static inline void G2_SetBG3Priority (int priority) -{ - GX_BG_PRIORITY_ASSERT(priority); - - reg_G2_BG3CNT = (u16)((reg_G2_BG3CNT & ~REG_G2_BG3CNT_PRIORITY_MASK) | - (priority << REG_G2_BG3CNT_PRIORITY_SHIFT)); -} - -static inline void G2S_SetBG3Priority (int priority) -{ - GX_BG_PRIORITY_ASSERT(priority); - - reg_G2S_DB_BG3CNT = (u16)((reg_G2S_DB_BG3CNT & ~REG_G2S_DB_BG3CNT_PRIORITY_MASK) | - (priority << REG_G2S_DB_BG3CNT_PRIORITY_SHIFT)); -} - -static inline void * G2_GetOBJCharPtr () -{ - return (void *)HW_OBJ_VRAM; -} - -static inline void * G2S_GetOBJCharPtr () -{ - return (void *)HW_DB_OBJ_VRAM; -} - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/gx/gx_capture.h b/subprojects/NitroSDK/include/nitro/gx/gx_capture.h deleted file mode 100644 index f04a19d774..0000000000 --- a/subprojects/NitroSDK/include/nitro/gx/gx_capture.h +++ /dev/null @@ -1,117 +0,0 @@ -#ifndef NITRO_GX_CAPTURE_H_ -#define NITRO_GX_CAPTURE_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - GX_CAPTURE_DEST_VRAM_A_0x00000 = 0, - GX_CAPTURE_DEST_VRAM_B_0x00000 = 1, - GX_CAPTURE_DEST_VRAM_C_0x00000 = 2, - GX_CAPTURE_DEST_VRAM_D_0x00000 = 3, - - GX_CAPTURE_DEST_VRAM_A_0x08000 = 4, - GX_CAPTURE_DEST_VRAM_B_0x08000 = 5, - GX_CAPTURE_DEST_VRAM_C_0x08000 = 6, - GX_CAPTURE_DEST_VRAM_D_0x08000 = 7, - - GX_CAPTURE_DEST_VRAM_A_0x10000 = 8, - GX_CAPTURE_DEST_VRAM_B_0x10000 = 9, - GX_CAPTURE_DEST_VRAM_C_0x10000 = 10, - GX_CAPTURE_DEST_VRAM_D_0x10000 = 11, - - GX_CAPTURE_DEST_VRAM_A_0x18000 = 12, - GX_CAPTURE_DEST_VRAM_B_0x18000 = 13, - GX_CAPTURE_DEST_VRAM_C_0x18000 = 14, - GX_CAPTURE_DEST_VRAM_D_0x18000 = 15 -} GXCaptureDest; - -#define GX_CAPTURE_DEST_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, GX_CAPTURE_DEST_VRAM_A_0x00000, GX_CAPTURE_DEST_VRAM_D_0x18000) - -typedef enum { - GX_CAPTURE_SIZE_128x128 = 0, - GX_CAPTURE_SIZE_256x64 = 1, - GX_CAPTURE_SIZE_256x128 = 2, - GX_CAPTURE_SIZE_256x192 = 3 -} GXCaptureSize; - -#define GX_CAPTURE_SIZE_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, GX_CAPTURE_SIZE_128x128, GX_CAPTURE_SIZE_256x192) - -typedef enum { - GX_CAPTURE_SRCA_2D3D = 0, - GX_CAPTURE_SRCA_3D = 1 -} GXCaptureSrcA; - -#define GX_CAPTURE_SRCA_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, GX_CAPTURE_SRCA_2D3D, GX_CAPTURE_SRCA_3D) - -typedef enum { - GX_CAPTURE_SRCB_VRAM_0x00000 = 0, - GX_CAPTURE_SRCB_MRAM = 1, - GX_CAPTURE_SRCB_VRAM_0x08000 = 2, - GX_CAPTURE_SRCB_VRAM_0x10000 = 4, - GX_CAPTURE_SRCB_VRAM_0x18000 = 6 -} GXCaptureSrcB; - -#define GX_CAPTURE_SRCB_ASSERT(x) \ - SDK_ASSERT((x) == GX_CAPTURE_SRCB_VRAM_0x00000 || \ - (x) == GX_CAPTURE_SRCB_MRAM || \ - (x) == GX_CAPTURE_SRCB_VRAM_0x08000 || \ - (x) == GX_CAPTURE_SRCB_VRAM_0x10000 || \ - (x) == GX_CAPTURE_SRCB_VRAM_0x18000) - -typedef enum { - GX_CAPTURE_MODE_A = 0, - GX_CAPTURE_MODE_B = 1, - GX_CAPTURE_MODE_AB = 2 -} GXCaptureMode; - -#define GX_CAPTURE_MODE_ASSERT(x) SDK_MINMAX_ASSERT(x, GX_CAPTURE_MODE_A, GX_CAPTURE_MODE_AB) - -#if !(defined(SDK_WIN32) || defined(SDK_FROM_TOOL)) - -static void GX_SetCapture(GXCaptureSize sz, - GXCaptureMode mode, - GXCaptureSrcA a, GXCaptureSrcB b, GXCaptureDest dest, int eva, int evb); - -static inline void GX_SetCapture (GXCaptureSize sz, - GXCaptureMode mode, - GXCaptureSrcA a, - GXCaptureSrcB b, GXCaptureDest dest, int eva, int evb) -{ - GX_CAPTURE_DEST_ASSERT(dest); - GX_CAPTURE_SIZE_ASSERT(sz); - GX_CAPTURE_SRCA_ASSERT(a); - GX_CAPTURE_SRCB_ASSERT(b); - GX_CAPTURE_MODE_ASSERT(mode); - SDK_MINMAX_ASSERT(eva, 0, 16); - SDK_MINMAX_ASSERT(evb, 0, 16); - - reg_GX_DISPCAPCNT = (REG_GX_DISPCAPCNT_E_MASK | - (mode << REG_GX_DISPCAPCNT_MOD_SHIFT) | - (b << REG_GX_DISPCAPCNT_SRCB_SHIFT) | - (a << REG_GX_DISPCAPCNT_SRCA_SHIFT) | - (sz << REG_GX_DISPCAPCNT_WSIZE_SHIFT) | - (dest << REG_GX_DISPCAPCNT_DEST_SHIFT) | - (evb << REG_GX_DISPCAPCNT_EVB_SHIFT) | - (eva << REG_GX_DISPCAPCNT_EVA_SHIFT)); -} - -static inline void GX_ResetCapture (void) -{ - reg_GX_DISPCAPCNT &= ~REG_GX_DISPCAPCNT_E_MASK; -} - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/gx/gx_load.h b/subprojects/NitroSDK/include/nitro/gx/gx_load.h deleted file mode 100644 index 7e3e29b8a2..0000000000 --- a/subprojects/NitroSDK/include/nitro/gx/gx_load.h +++ /dev/null @@ -1,96 +0,0 @@ -#ifndef NITRO_GX_LOAD_H_ -#define NITRO_GX_LOAD_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -void GX_LoadBGPltt(const void * pSrc, u32 offset, u32 szByte); -void GX_LoadOBJPltt(const void * pSrc, u32 offset, u32 szByte); -void GX_LoadOAM(const void * pSrc, u32 offset, u32 szByte); -void GX_LoadOBJ(const void * pSrc, u32 offset, u32 szByte); - -void GX_LoadBG0Scr(const void * pSrc, u32 offset, u32 szByte); -void GX_LoadBG1Scr(const void * pSrc, u32 offset, u32 szByte); -void GX_LoadBG2Scr(const void * pSrc, u32 offset, u32 szByte); -void GX_LoadBG3Scr(const void * pSrc, u32 offset, u32 szByte); - -void GX_LoadBG0Char(const void * pSrc, u32 offset, u32 szByte); -void GX_LoadBG1Char(const void * pSrc, u32 offset, u32 szByte); -void GX_LoadBG2Char(const void * pSrc, u32 offset, u32 szByte); -void GX_LoadBG3Char(const void * pSrc, u32 offset, u32 szByte); - -void GX_BeginLoadBGExtPltt(void); -void GX_LoadBGExtPltt(const void * pSrc, u32 destSlotAddr, u32 szByte); -void GX_EndLoadBGExtPltt(void); - -void GX_BeginLoadOBJExtPltt(void); -void GX_LoadOBJExtPltt(const void * pSrc, u32 destSlotAddr, u32 szByte); -void GX_EndLoadOBJExtPltt(void); - -void GXS_LoadBGPltt(const void * pSrc, u32 offset, u32 szByte); -void GXS_LoadOBJPltt(const void * pSrc, u32 offset, u32 szByte); -void GXS_LoadOAM(const void * pSrc, u32 offset, u32 szByte); -void GXS_LoadOBJ(const void * pSrc, u32 offset, u32 szByte); - -void GXS_LoadBG0Scr(const void * pSrc, u32 offset, u32 szByte); -void GXS_LoadBG1Scr(const void * pSrc, u32 offset, u32 szByte); -void GXS_LoadBG2Scr(const void * pSrc, u32 offset, u32 szByte); -void GXS_LoadBG3Scr(const void * pSrc, u32 offset, u32 szByte); - -void GXS_LoadBG0Char(const void * pSrc, u32 offset, u32 szByte); -void GXS_LoadBG1Char(const void * pSrc, u32 offset, u32 szByte); -void GXS_LoadBG2Char(const void * pSrc, u32 offset, u32 szByte); -void GXS_LoadBG3Char(const void * pSrc, u32 offset, u32 szByte); - -void GXS_BeginLoadBGExtPltt(void); -void GXS_LoadBGExtPltt(const void * pSrc, u32 destSlotAddr, u32 szByte); -void GXS_EndLoadBGExtPltt(void); - -void GXS_BeginLoadOBJExtPltt(void); -void GXS_LoadOBJExtPltt(const void * pSrc, u32 destSlotAddr, u32 szByte); -void GXS_EndLoadOBJExtPltt(void); - -void GX_BeginLoadTex(void); -void GX_LoadTex(const void * pSrc, u32 destSlotAddr, u32 szByte); -void GX_EndLoadTex(void); -void GX_LoadTexEx(GXVRamTex tex, const void * pSrc, u32 destSlotAddr, u32 szByte); - -void GX_BeginLoadTexPltt(void); -void GX_LoadTexPltt(const void * pSrc, u32 destSlotAddr, u32 szByte); -void GX_EndLoadTexPltt(void); -void GX_LoadTexPlttEx(GXVRamTexPltt texPltt, const void * pSrc, u32 destSlotAddr, u32 szByte); - -void GX_BeginLoadClearImage(void); -void GX_LoadClearImageColor(const void * pSrc, u32 szByte); -void GX_LoadClearImageDepth(const void * pSrc, u32 szByte); -void GX_EndLoadClearImage(void); - -static inline void GX_LoadBG2Bmp (const void * pSrc, u32 offset, u32 szByte) -{ - GX_LoadBG2Scr(pSrc, offset, szByte); -} - -static inline void GX_LoadBG3Bmp (const void * pSrc, u32 offset, u32 szByte) -{ - GX_LoadBG3Scr(pSrc, offset, szByte); -} - -static inline void GXS_LoadBG2Bmp (const void * pSrc, u32 offset, u32 szByte) -{ - GXS_LoadBG2Scr(pSrc, offset, szByte); -} - -static inline void GXS_LoadBG3Bmp (const void * pSrc, u32 offset, u32 szByte) -{ - GXS_LoadBG3Scr(pSrc, offset, szByte); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/gx/gx_sp.h b/subprojects/NitroSDK/include/nitro/gx/gx_sp.h deleted file mode 100644 index 8f18aa5bb8..0000000000 --- a/subprojects/NitroSDK/include/nitro/gx/gx_sp.h +++ /dev/null @@ -1,112 +0,0 @@ -#ifndef NITRO_GX_SP_H_ -#define NITRO_GX_SP_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define GX_LCD_SIZE_X HW_LCD_WIDTH -#define GX_LCD_SIZE_Y HW_LCD_HEIGHT - -static s32 GX_IsHBlank(void); -static s32 GX_HBlankIntr(BOOL enable); -static s32 GX_IsVBlank(void); -static s32 GX_VBlankIntr(BOOL enable); -static s32 GX_IsVCountEq(void); -static void GX_VCountEqIntr(BOOL enable); -static void GX_SetVCountEqVal(s32 val); -static s32 GX_GetVCountEqVal(void); - -#define GX_IsVCounterEq GX_IsVCountEq -#define GX_VCounterEqIntr GX_VCountEqIntr -#define GX_SetVCounterEqVal GX_SetVCountEqVal -#define GX_GetVCounterEqVal GX_GetVCountEqVal - -static s32 GX_GetVCount(void); -static void GX_SetVCount(s32 count); - -static inline s32 GX_IsHBlank (void) -{ - return (reg_GX_DISPSTAT & REG_GX_DISPSTAT_HBLK_MASK); -} - -static inline s32 GX_IsVBlank (void) -{ - return (reg_GX_DISPSTAT & REG_GX_DISPSTAT_VBLK_MASK); -} - -static inline s32 GX_IsVCountEq (void) -{ - return (reg_GX_DISPSTAT & REG_GX_DISPSTAT_LYC_MASK); -} - -static inline void GX_VCountEqIntr (BOOL enable) -{ - if (enable) { - reg_GX_DISPSTAT |= REG_GX_DISPSTAT_VQI_MASK; - } else { - reg_GX_DISPSTAT &= ~REG_GX_DISPSTAT_VQI_MASK; - } -} - -static inline s32 GX_GetVCount () -{ - return reg_GX_VCOUNT; -} - -static inline void GX_SetVCount (s32 count) -{ - SDK_WARNING(reg_GX_VCOUNT >= 202 && reg_GX_VCOUNT <= 212, - "V Counter out of range(%d). it must be 202 to 212.", reg_GX_VCOUNT); - SDK_ASSERT(count >= 202 && count <= 212); - - reg_GX_VCOUNT = (u16)count; -} - -static inline void GX_SetVCountEqVal (s32 val) -{ - SDK_MINMAX_ASSERT(val, 0, HW_LCD_LINES - 1); - reg_GX_DISPSTAT = (u16)((reg_GX_DISPSTAT & (REG_GX_DISPSTAT_VBLK_MASK | - REG_GX_DISPSTAT_HBLK_MASK | - REG_GX_DISPSTAT_LYC_MASK | - REG_GX_DISPSTAT_VBI_MASK | - REG_GX_DISPSTAT_HBI_MASK | - REG_GX_DISPSTAT_VQI_MASK)) | - ((val & 0xff) << 8) | ((val & 0x100) >> 1)); -} - -static inline s32 GX_GetVCountEqVal (void) -{ - u16 val = reg_GX_DISPSTAT; - return ((val >> 8) & 0x00ff) | ((val << 1) & 0x0100); -} - -static inline s32 GX_HBlankIntr (BOOL enable) -{ - s32 rval = (reg_GX_DISPSTAT & REG_GX_DISPSTAT_HBI_MASK); - if (enable) { - reg_GX_DISPSTAT |= REG_GX_DISPSTAT_HBI_MASK; - } else { - reg_GX_DISPSTAT &= ~REG_GX_DISPSTAT_HBI_MASK; - } - return rval; -} - -static inline s32 GX_VBlankIntr (BOOL enable) -{ - s32 rval = (reg_GX_DISPSTAT & REG_GX_DISPSTAT_VBI_MASK); - if (enable) { - reg_GX_DISPSTAT |= REG_GX_DISPSTAT_VBI_MASK; - } else { - reg_GX_DISPSTAT &= ~REG_GX_DISPSTAT_VBI_MASK; - } - return rval; -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/gx/gx_vramcnt.h b/subprojects/NitroSDK/include/nitro/gx/gx_vramcnt.h deleted file mode 100644 index bb7fca6cae..0000000000 --- a/subprojects/NitroSDK/include/nitro/gx/gx_vramcnt.h +++ /dev/null @@ -1,412 +0,0 @@ -#ifndef NITRO_GX_VRAMCNT_H_ -#define NITRO_GX_VRAMCNT_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - GX_VRAM_A = OS_VRAM_BANK_ID_A, - GX_VRAM_B = OS_VRAM_BANK_ID_B, - GX_VRAM_C = OS_VRAM_BANK_ID_C, - GX_VRAM_D = OS_VRAM_BANK_ID_D, - GX_VRAM_E = OS_VRAM_BANK_ID_E, - GX_VRAM_F = OS_VRAM_BANK_ID_F, - GX_VRAM_G = OS_VRAM_BANK_ID_G, - GX_VRAM_H = OS_VRAM_BANK_ID_H, - GX_VRAM_I = OS_VRAM_BANK_ID_I, - GX_VRAM_ALL = OS_VRAM_BANK_ID_ALL -} GXVRam; - -typedef enum { - GX_VRAM_LCDC_NONE = 0x0000, - GX_VRAM_LCDC_A = GX_VRAM_A, - GX_VRAM_LCDC_B = GX_VRAM_B, - GX_VRAM_LCDC_C = GX_VRAM_C, - GX_VRAM_LCDC_D = GX_VRAM_D, - GX_VRAM_LCDC_E = GX_VRAM_E, - GX_VRAM_LCDC_F = GX_VRAM_F, - GX_VRAM_LCDC_G = GX_VRAM_G, - GX_VRAM_LCDC_H = GX_VRAM_H, - GX_VRAM_LCDC_I = GX_VRAM_I, - - GX_VRAM_LCDC_ALL = GX_VRAM_ALL -} GXVRamLCDC; - -#define GX_VRAM_LCDC_ASSERT(x) \ - SDK_MINMAX_ASSERT(x, GX_VRAM_LCDC_NONE, GX_VRAM_LCDC_ALL) - -typedef enum { - GX_VRAM_BG_NONE = 0x0000, - GX_VRAM_BG_16_F = GX_VRAM_F, - GX_VRAM_BG_16_G = GX_VRAM_G, - GX_VRAM_BG_32_FG = GX_VRAM_F | GX_VRAM_G, - GX_VRAM_BG_64_E = GX_VRAM_E, - GX_VRAM_BG_80_EF = GX_VRAM_E | GX_VRAM_F, - GX_VRAM_BG_96_EFG = GX_VRAM_E | GX_VRAM_F | GX_VRAM_G, - GX_VRAM_BG_128_A = GX_VRAM_A, - GX_VRAM_BG_128_B = GX_VRAM_B, - GX_VRAM_BG_128_C = GX_VRAM_C, - GX_VRAM_BG_128_D = GX_VRAM_D, - GX_VRAM_BG_256_AB = GX_VRAM_A | GX_VRAM_B, - GX_VRAM_BG_256_BC = GX_VRAM_B | GX_VRAM_C, - GX_VRAM_BG_256_CD = GX_VRAM_C | GX_VRAM_D, - GX_VRAM_BG_384_ABC = GX_VRAM_A | GX_VRAM_B | GX_VRAM_C, - GX_VRAM_BG_384_BCD = GX_VRAM_B | GX_VRAM_C | GX_VRAM_D, - GX_VRAM_BG_512_ABCD = GX_VRAM_A | GX_VRAM_B | GX_VRAM_C | GX_VRAM_D, - - GX_VRAM_BG_80_EG = GX_VRAM_E | GX_VRAM_G, - GX_VRAM_BG_256_AC = GX_VRAM_A | GX_VRAM_C, - GX_VRAM_BG_256_AD = GX_VRAM_A | GX_VRAM_D, - GX_VRAM_BG_256_BD = GX_VRAM_B | GX_VRAM_D, - GX_VRAM_BG_384_ABD = GX_VRAM_A | GX_VRAM_B | GX_VRAM_D, - GX_VRAM_BG_384_ACD = GX_VRAM_A | GX_VRAM_C | GX_VRAM_D -} GXVRamBG; - -#define GX_VRAM_BG_ASSERT(x) \ - SDK_ASSERT((x) == GX_VRAM_BG_NONE || \ - (x) == GX_VRAM_BG_16_F || \ - (x) == GX_VRAM_BG_16_G || \ - (x) == GX_VRAM_BG_32_FG || \ - (x) == GX_VRAM_BG_64_E || \ - (x) == GX_VRAM_BG_80_EF || \ - (x) == GX_VRAM_BG_80_EG || \ - (x) == GX_VRAM_BG_96_EFG || \ - (x) == GX_VRAM_BG_128_A || \ - (x) == GX_VRAM_BG_128_B || \ - (x) == GX_VRAM_BG_128_C || \ - (x) == GX_VRAM_BG_128_D || \ - (x) == GX_VRAM_BG_256_AB || \ - (x) == GX_VRAM_BG_256_BC || \ - (x) == GX_VRAM_BG_256_CD || \ - (x) == GX_VRAM_BG_384_ABC || \ - (x) == GX_VRAM_BG_384_BCD || \ - (x) == GX_VRAM_BG_512_ABCD || \ - (x) == GX_VRAM_BG_256_AC || \ - (x) == GX_VRAM_BG_256_AD || \ - (x) == GX_VRAM_BG_256_BD || \ - (x) == GX_VRAM_BG_384_ABD || \ - (x) == GX_VRAM_BG_384_ACD) - -#define GX_VRAM_BG_ASSERT_EX_1(x) \ - SDK_ASSERT((x) == GX_VRAM_BG_16_F || \ - (x) == GX_VRAM_BG_16_G || \ - (x) == GX_VRAM_BG_32_FG || \ - (x) == GX_VRAM_BG_64_E || \ - (x) == GX_VRAM_BG_80_EF || \ - (x) == GX_VRAM_BG_80_EG || \ - (x) == GX_VRAM_BG_96_EFG) - -#define GX_VRAM_BG_ASSERT_EX_2(x) \ - SDK_ASSERT((x) == GX_VRAM_BG_NONE || \ - (x) == GX_VRAM_BG_128_A || \ - (x) == GX_VRAM_BG_128_B || \ - (x) == GX_VRAM_BG_128_C || \ - (x) == GX_VRAM_BG_128_D || \ - (x) == GX_VRAM_BG_256_AB || \ - (x) == GX_VRAM_BG_256_BC || \ - (x) == GX_VRAM_BG_256_CD || \ - (x) == GX_VRAM_BG_384_ABC || \ - (x) == GX_VRAM_BG_384_BCD || \ - (x) == GX_VRAM_BG_256_AC || \ - (x) == GX_VRAM_BG_256_AD || \ - (x) == GX_VRAM_BG_256_BD || \ - (x) == GX_VRAM_BG_384_ABD || \ - (x) == GX_VRAM_BG_384_ACD) - -typedef enum { - GX_VRAM_OBJ_NONE = 0x0000, - GX_VRAM_OBJ_16_F = GX_VRAM_F, - GX_VRAM_OBJ_16_G = GX_VRAM_G, - GX_VRAM_OBJ_32_FG = GX_VRAM_F | GX_VRAM_G, - GX_VRAM_OBJ_64_E = GX_VRAM_E, - GX_VRAM_OBJ_80_EF = GX_VRAM_E | GX_VRAM_F, - GX_VRAM_OBJ_80_EG = GX_VRAM_E | GX_VRAM_G, - GX_VRAM_OBJ_96_EFG = GX_VRAM_E | GX_VRAM_F | GX_VRAM_G, - GX_VRAM_OBJ_128_A = GX_VRAM_A, - GX_VRAM_OBJ_128_B = GX_VRAM_B, - GX_VRAM_OBJ_256_AB = GX_VRAM_A | GX_VRAM_B -} GXVRamOBJ; - -#define GX_VRAM_OBJ_ASSERT(x) \ - SDK_ASSERT((x) == GX_VRAM_OBJ_NONE || \ - (x) == GX_VRAM_OBJ_16_F || \ - (x) == GX_VRAM_OBJ_16_G || \ - (x) == GX_VRAM_OBJ_32_FG || \ - (x) == GX_VRAM_OBJ_64_E || \ - (x) == GX_VRAM_OBJ_80_EF || \ - (x) == GX_VRAM_OBJ_80_EG || \ - (x) == GX_VRAM_OBJ_96_EFG || \ - (x) == GX_VRAM_OBJ_128_A || \ - (x) == GX_VRAM_OBJ_128_B || \ - (x) == GX_VRAM_OBJ_256_AB) - -typedef enum { - GX_VRAM_ARM7_NONE = 0x0000, - GX_VRAM_ARM7_128_C = GX_VRAM_C, - GX_VRAM_ARM7_128_D = GX_VRAM_D, - GX_VRAM_ARM7_256_CD = GX_VRAM_C | GX_VRAM_D -} GXVRamARM7; - -#define GX_VRAM_ARM7_ASSERT(x) \ - SDK_ASSERT((x) == GX_VRAM_ARM7_NONE || \ - (x) == GX_VRAM_ARM7_128_C || \ - (x) == GX_VRAM_ARM7_128_D || \ - (x) == GX_VRAM_ARM7_256_CD) - -typedef enum { - GX_VRAM_TEX_NONE = 0x0000, - GX_VRAM_TEX_0_A = GX_VRAM_A, - GX_VRAM_TEX_0_B = GX_VRAM_B, - GX_VRAM_TEX_0_C = GX_VRAM_C, - GX_VRAM_TEX_0_D = GX_VRAM_D, - GX_VRAM_TEX_01_AB = GX_VRAM_A | GX_VRAM_B, - GX_VRAM_TEX_01_BC = GX_VRAM_B | GX_VRAM_C, - GX_VRAM_TEX_01_CD = GX_VRAM_C | GX_VRAM_D, - GX_VRAM_TEX_012_ABC = GX_VRAM_A | GX_VRAM_B | GX_VRAM_C, - GX_VRAM_TEX_012_BCD = GX_VRAM_B | GX_VRAM_C | GX_VRAM_D, - GX_VRAM_TEX_0123_ABCD = GX_VRAM_A | GX_VRAM_B | GX_VRAM_C | GX_VRAM_D, - - GX_VRAM_TEX_01_AC = GX_VRAM_A | GX_VRAM_C, - GX_VRAM_TEX_01_AD = GX_VRAM_A | GX_VRAM_D, - GX_VRAM_TEX_01_BD = GX_VRAM_B | GX_VRAM_D, - GX_VRAM_TEX_012_ABD = GX_VRAM_A | GX_VRAM_B | GX_VRAM_D, - GX_VRAM_TEX_012_ACD = GX_VRAM_A | GX_VRAM_C | GX_VRAM_D -} GXVRamTex; - -#define GX_VRAM_TEX_ASSERT(x) \ - SDK_ASSERT((x) == GX_VRAM_TEX_NONE || \ - (x) == GX_VRAM_TEX_0_A || \ - (x) == GX_VRAM_TEX_0_B || \ - (x) == GX_VRAM_TEX_0_C || \ - (x) == GX_VRAM_TEX_0_D || \ - (x) == GX_VRAM_TEX_01_AB || \ - (x) == GX_VRAM_TEX_01_BC || \ - (x) == GX_VRAM_TEX_01_CD || \ - (x) == GX_VRAM_TEX_012_ABC || \ - (x) == GX_VRAM_TEX_012_BCD || \ - (x) == GX_VRAM_TEX_0123_ABCD || \ - (x) == GX_VRAM_TEX_01_AC || \ - (x) == GX_VRAM_TEX_01_AD || \ - (x) == GX_VRAM_TEX_01_BD || \ - (x) == GX_VRAM_TEX_012_ABD || \ - (x) == GX_VRAM_TEX_012_ACD) - -typedef enum { - GX_VRAM_CLEARIMAGE_NONE = 0x0000, - GX_VRAM_CLEARIMAGE_256_AB = GX_VRAM_A | GX_VRAM_B, - GX_VRAM_CLEARIMAGE_256_CD = GX_VRAM_C | GX_VRAM_D, - GX_VRAM_CLEARDEPTH_128_A = GX_VRAM_A, - GX_VRAM_CLEARDEPTH_128_B = GX_VRAM_B, - GX_VRAM_CLEARDEPTH_128_C = GX_VRAM_C, - GX_VRAM_CLEARDEPTH_128_D = GX_VRAM_D -} GXVRamClearImage; - -#define GX_VRAM_CLRIMG_ASSERT(x) \ - SDK_ASSERT((x) == GX_VRAM_CLEARIMAGE_NONE || \ - (x) == GX_VRAM_CLEARIMAGE_256_AB || \ - (x) == GX_VRAM_CLEARIMAGE_256_CD || \ - (x) == GX_VRAM_CLEARDEPTH_128_A || \ - (x) == GX_VRAM_CLEARDEPTH_128_B || \ - (x) == GX_VRAM_CLEARDEPTH_128_C || \ - (x) == GX_VRAM_CLEARDEPTH_128_D) - -typedef enum { - GX_VRAM_TEXPLTT_NONE = 0x0000, - GX_VRAM_TEXPLTT_0_F = GX_VRAM_F, - GX_VRAM_TEXPLTT_0_G = GX_VRAM_G, - GX_VRAM_TEXPLTT_01_FG = GX_VRAM_F | GX_VRAM_G, - GX_VRAM_TEXPLTT_0123_E = GX_VRAM_E, - GX_VRAM_TEXPLTT_01234_EF = GX_VRAM_E | GX_VRAM_F, - GX_VRAM_TEXPLTT_012345_EFG = GX_VRAM_E | GX_VRAM_F | GX_VRAM_G -} GXVRamTexPltt; - -#define GX_VRAM_TEXPLTT_ASSERT(x) \ - SDK_ASSERT((x) == GX_VRAM_TEXPLTT_NONE || \ - (x) == GX_VRAM_TEXPLTT_0_F || \ - (x) == GX_VRAM_TEXPLTT_0_G || \ - (x) == GX_VRAM_TEXPLTT_01_FG || \ - (x) == GX_VRAM_TEXPLTT_0123_E || \ - (x) == GX_VRAM_TEXPLTT_01234_EF || \ - (x) == GX_VRAM_TEXPLTT_012345_EFG) - -typedef enum { - GX_VRAM_BGEXTPLTT_NONE = 0x0000, - GX_VRAM_BGEXTPLTT_01_F = GX_VRAM_F, - GX_VRAM_BGEXTPLTT_23_G = GX_VRAM_G, - GX_VRAM_BGEXTPLTT_0123_E = GX_VRAM_E, - GX_VRAM_BGEXTPLTT_0123_FG = GX_VRAM_F | GX_VRAM_G -} GXVRamBGExtPltt; - -#define GX_VRAM_BGEXTPLTT_ASSERT(x) \ - SDK_ASSERT((x) == GX_VRAM_BGEXTPLTT_NONE || \ - (x) == GX_VRAM_BGEXTPLTT_01_F || \ - (x) == GX_VRAM_BGEXTPLTT_23_G || \ - (x) == GX_VRAM_BGEXTPLTT_0123_E || \ - (x) == GX_VRAM_BGEXTPLTT_0123_FG) - -#define GX_VRAM_OBJEXTPLTT_8_F GX_VRAM_OBJEXTPLTT_0_F -#define GX_VRAM_OBJEXTPLTT_8_G GX_VRAM_OBJEXTPLTT_0_G - -typedef enum { - GX_VRAM_OBJEXTPLTT_NONE = 0, - GX_VRAM_OBJEXTPLTT_0_F = GX_VRAM_F, - GX_VRAM_OBJEXTPLTT_0_G = GX_VRAM_G -} GXVRamOBJExtPltt; - -#define GX_VRAM_OBJEXTPLTT_ASSERT(x) \ - SDK_ASSERT((x) == GX_VRAM_OBJEXTPLTT_NONE || \ - (x) == GX_VRAM_OBJEXTPLTT_0_F || \ - (x) == GX_VRAM_OBJEXTPLTT_0_G) - -typedef enum { - GX_VRAM_SUB_BG_NONE = 0x0000, - GX_VRAM_SUB_BG_128_C = GX_VRAM_C, - GX_VRAM_SUB_BG_32_H = GX_VRAM_H, - GX_VRAM_SUB_BG_48_HI = GX_VRAM_H | GX_VRAM_I -} GXVRamSubBG; - -#define GX_VRAM_SUB_BG_ASSERT(x) \ - SDK_ASSERT((x) == GX_VRAM_SUB_BG_NONE || \ - (x) == GX_VRAM_SUB_BG_128_C || \ - (x) == GX_VRAM_SUB_BG_32_H || \ - (x) == GX_VRAM_SUB_BG_48_HI) - -typedef enum { - GX_VRAM_SUB_OBJ_NONE = 0x0000, - GX_VRAM_SUB_OBJ_128_D = GX_VRAM_D, - GX_VRAM_SUB_OBJ_16_I = GX_VRAM_I -} GXVRamSubOBJ; - -#define GX_VRAM_SUB_OBJ_ASSERT(x) \ - SDK_ASSERT((x) == GX_VRAM_SUB_OBJ_NONE || \ - (x) == GX_VRAM_SUB_OBJ_128_D || \ - (x) == GX_VRAM_SUB_OBJ_16_I) - -#define GX_VRAM_SUB_BGEXTPLTT_32_H GX_VRAM_SUB_BGEXTPLTT_0123_H - -typedef enum { - GX_VRAM_SUB_BGEXTPLTT_NONE = 0x0000, - GX_VRAM_SUB_BGEXTPLTT_0123_H = GX_VRAM_H -} GXVRamSubBGExtPltt; - -#define GX_VRAM_SUB_BGEXTPLTT_ASSERT(x) \ - SDK_ASSERT((x) == GX_VRAM_SUB_BGEXTPLTT_NONE || \ - (x) == GX_VRAM_SUB_BGEXTPLTT_0123_H) - -#define GX_VRAM_SUB_OBJEXTPLTT_16_I GX_VRAM_SUB_OBJEXTPLTT_0_I - -typedef enum { - GX_VRAM_SUB_OBJEXTPLTT_NONE = 0x0000, - GX_VRAM_SUB_OBJEXTPLTT_0_I = GX_VRAM_I -} GXVRamSubOBJExtPltt; - -#define GX_VRAM_SUB_OBJEXTPLTT_ASSERT(x) \ - SDK_ASSERT((x) == GX_VRAM_SUB_OBJEXTPLTT_NONE || \ - (x) == GX_VRAM_SUB_OBJEXTPLTT_0_I) - -#if !(defined(SDK_WIN32) || defined(SDK_FROM_TOOL)) - -void GX_SetBankForBG(GXVRamBG bg); -BOOL GX_TrySetBankForBG(GXVRamBG bg); -void GX_SetBankForBGEx(GXVRamBG bg1, GXVRamBG bg2); -BOOL GX_TrySetBankForBGEx(GXVRamBG bg1, GXVRamBG bg2); -void GX_SetBankForOBJ(GXVRamOBJ obj); -BOOL GX_TrySetBankForOBJ(GXVRamOBJ obj); -void GX_SetBankForBGExtPltt(GXVRamBGExtPltt bgExtPltt); -BOOL GX_TrySetBankForBGExtPltt(GXVRamBGExtPltt bgExtPltt); -void GX_SetBankForOBJExtPltt(GXVRamOBJExtPltt objExtPltt); -BOOL GX_TrySetBankForOBJExtPltt(GXVRamOBJExtPltt objExtPltt); -void GX_SetBankForTex(GXVRamTex tex); -BOOL GX_TrySetBankForTex(GXVRamTex tex); -void GX_SetBankForTexPltt(GXVRamTexPltt texPltt); -BOOL GX_TrySetBankForTexPltt(GXVRamTexPltt texPltt); -void GX_SetBankForClearImage(GXVRamClearImage clrImg); -BOOL GX_TrySetBankForClearImage(GXVRamClearImage clrImg); - -GXVRamBG GX_GetBankForBG(void); -GXVRamOBJ GX_GetBankForOBJ(void); -GXVRamBGExtPltt GX_GetBankForBGExtPltt(void); -GXVRamOBJExtPltt GX_GetBankForOBJExtPltt(void); -GXVRamTex GX_GetBankForTex(void); -GXVRamTexPltt GX_GetBankForTexPltt(void); -GXVRamClearImage GX_GetBankForClearImage(void); - -GXVRamBG GX_ResetBankForBG(void); -GXVRamOBJ GX_ResetBankForOBJ(void); -GXVRamBGExtPltt GX_ResetBankForBGExtPltt(void); -GXVRamOBJExtPltt GX_ResetBankForOBJExtPltt(void); -GXVRamTex GX_ResetBankForTex(void); -GXVRamTexPltt GX_ResetBankForTexPltt(void); -GXVRamClearImage GX_ResetBankForClearImage(void); - -GXVRamBG GX_DisableBankForBG(void); -GXVRamOBJ GX_DisableBankForOBJ(void); -GXVRamBGExtPltt GX_DisableBankForBGExtPltt(void); -GXVRamOBJExtPltt GX_DisableBankForOBJExtPltt(void); -GXVRamTex GX_DisableBankForTex(void); -GXVRamTexPltt GX_DisableBankForTexPltt(void); -GXVRamClearImage GX_DisableBankForClearImage(void); - -u32 GX_GetSizeOfBG(void); -u32 GX_GetSizeOfOBJ(void); -u32 GX_GetSizeOfBGExtPltt(void); -u32 GX_GetSizeOfOBJExtPltt(void); -u32 GX_GetSizeOfTex(void); -u32 GX_GetSizeOfTexPltt(void); -u32 GX_GetSizeOfClearImage(void); - -void GX_SetBankForSubBG(GXVRamSubBG sub_bg); -BOOL GX_TrySetBankForSubBG(GXVRamSubBG sub_bg); -void GX_SetBankForSubOBJ(GXVRamSubOBJ sub_obj); -BOOL GX_TrySetBankForSubOBJ(GXVRamSubOBJ sub_obj); -void GX_SetBankForSubBGExtPltt(GXVRamSubBGExtPltt sub_bgExtPltt); -BOOL GX_TrySetBankForSubBGExtPltt(GXVRamSubBGExtPltt sub_bgExtPltt); -void GX_SetBankForSubOBJExtPltt(GXVRamSubOBJExtPltt sub_objExtPltt); -BOOL GX_TrySetBankForSubOBJExtPltt(GXVRamSubOBJExtPltt sub_objExtPltt); - -GXVRamSubBG GX_GetBankForSubBG(void); -GXVRamSubOBJ GX_GetBankForSubOBJ(void); -GXVRamSubBGExtPltt GX_GetBankForSubBGExtPltt(void); -GXVRamSubOBJExtPltt GX_GetBankForSubOBJExtPltt(void); - -GXVRamSubBG GX_ResetBankForSubBG(void); -GXVRamSubOBJ GX_ResetBankForSubOBJ(void); -GXVRamSubBGExtPltt GX_ResetBankForSubBGExtPltt(void); -GXVRamSubOBJExtPltt GX_ResetBankForSubOBJExtPltt(void); - -GXVRamSubBG GX_DisableBankForSubBG(void); -GXVRamSubOBJ GX_DisableBankForSubOBJ(void); -GXVRamSubBGExtPltt GX_DisableBankForSubBGExtPltt(void); -GXVRamSubOBJExtPltt GX_DisableBankForSubOBJExtPltt(void); - -u32 GX_GetSizeOfSubBG(void); -u32 GX_GetSizeOfSubOBJ(void); -u32 GX_GetSizeOfSubBGExtPltt(void); -u32 GX_GetSizeOfSubOBJExtPltt(void); - -void GX_SetBankForARM7(GXVRamARM7 arm7); -BOOL GX_TrySetBankForARM7(GXVRamARM7 arm7); -void GX_SetBankForLCDC(int lcdc); -BOOL GX_TrySetBankForLCDC(int lcdc); - -GXVRamARM7 GX_GetBankForARM7(void); -GXVRamLCDC GX_GetBankForLCDC(void); - -GXVRamARM7 GX_ResetBankForARM7(void); - -GXVRamARM7 GX_DisableBankForARM7(void); -GXVRamLCDC GX_DisableBankForLCDC(void); - -u32 GX_GetSizeOfARM7(void); - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/gx/gxcommon.h b/subprojects/NitroSDK/include/nitro/gx/gxcommon.h deleted file mode 100644 index 71e902f285..0000000000 --- a/subprojects/NitroSDK/include/nitro/gx/gxcommon.h +++ /dev/null @@ -1,83 +0,0 @@ -#ifndef NITRO_GXCOMMON_H_ -#define NITRO_GXCOMMON_H_ - -#if !(defined(SDK_WIN32) || defined(SDK_FROM_TOOL)) - -#include -#include - -#endif - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define GX_DEFAULT_DMAID (3) -#define GX_DMA_NOT_USE ((u32) ~0) - -#define GX_DMAID (GXi_DmaId) -extern u32 GXi_DmaId; - -typedef u16 GXRgb; -#define GXRGB_ASSERT(gxrgb) SDK_ASSERT(((gxrgb) & 0x8000) == 0) -#define GX_RGB_R_SHIFT (0) -#define GX_RGB_R_MASK (0x001f) -#define GX_RGB_G_SHIFT (5) -#define GX_RGB_G_MASK (0x03e0) -#define GX_RGB_B_SHIFT (10) -#define GX_RGB_B_MASK (0x7c00) -#define GX_RGB(r, g, b) ((GXRgb)(((r) << GX_RGB_R_SHIFT) | \ - ((g) << GX_RGB_G_SHIFT) | \ - ((b) << GX_RGB_B_SHIFT))) - -typedef u16 GXRgba; -#define GX_RGBA_R_SHIFT (0) -#define GX_RGBA_R_MASK (0x001f) -#define GX_RGBA_G_SHIFT (5) -#define GX_RGBA_G_MASK (0x03e0) -#define GX_RGBA_B_SHIFT (10) -#define GX_RGBA_B_MASK (0x7c00) -#define GX_RGBA_A_SHIFT (15) -#define GX_RGBA_A_MASK (0x8000) -#define GX_RGBA(r, g, b, a) ((GXRgba)(((r) << GX_RGBA_R_SHIFT) | \ - ((g) << GX_RGBA_G_SHIFT) | \ - ((b) << GX_RGBA_B_SHIFT) | \ - ((a) << GX_RGBA_A_SHIFT))) - -#define GX_POLYGONID_ASSERT(x) SDK_ASSERT((x) >= 0 && (x) <= 63) -#define GX_ALPHA_ASSERT(x) SDK_ASSERT((x) >= 0 && (x) <= 31) -#define GX_DEPTH_ASSERT(x) SDK_ASSERT((x) >= 0 && (x) <= 0x7fff) - -#define GX_VECFX10(x, y, z) \ - ((VecFx10)(((((x) >> (FX32_DEC_SIZE - GX_FX10_DEC_SIZE)) & GX_FX10_MASK) << GX_VEC_FX10_X_SHIFT) | \ - ((((y) >> (FX32_DEC_SIZE - GX_FX10_DEC_SIZE)) & GX_FX10_MASK) << GX_VEC_FX10_Y_SHIFT) | \ - ((((z) >> (FX32_DEC_SIZE - GX_FX10_DEC_SIZE)) & GX_FX10_MASK) << GX_VEC_FX10_Z_SHIFT))) - -typedef u32 VecFx10; -#define GX_FX10_SHIFT 9 -#define GX_FX10_INT_SIZE 0 -#define GX_FX10_DEC_SIZE 9 - -#define GX_FX10_INT_MASK 0x0000 -#define GX_FX10_DEC_MASK 0x01ff -#define GX_FX10_SIGN_MASK 0x0200 -#define GX_FX10_MASK (GX_FX10_INT_MASK | GX_FX10_DEC_MASK | GX_FX10_SIGN_MASK) - -#define GX_FX16_FX10_MAX (fx16)(0x0fff) -#define GX_FX16_FX10_MIN (fx16)(0xf000) - -#define GX_FX32_FX10_MAX (fx32)(0x00000fff); -#define GX_FX32_FX10_MIN (fx32)(0xfffff000); - -#define GX_VEC_FX10_X_SHIFT 0 -#define GX_VEC_FX10_Y_SHIFT 10 -#define GX_VEC_FX10_Z_SHIFT 20 - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/gx/struct_2d.h b/subprojects/NitroSDK/include/nitro/gx/struct_2d.h deleted file mode 100644 index 0c6cdb6469..0000000000 --- a/subprojects/NitroSDK/include/nitro/gx/struct_2d.h +++ /dev/null @@ -1,188 +0,0 @@ -#ifndef NITRO_STRUCT_2D_H_ -#define NITRO_STRUCT_2D_H_ - -#include - -typedef u16 GXScrFmtText; -#define GX_SCRFMT_TEXT_CHARNAME_SHIFT (0) -#define GX_SCRFMT_TEXT_CHARNAME_MASK (0x03ff) -#define GX_SCRFMT_TEXT_HF_SHIFT (10) -#define GX_SCRFMT_TEXT_HF_MASK (0x0400) -#define GX_SCRFMT_TEXT_VF_SHIFT (11) -#define GX_SCRFMT_TEXT_VF_MASK (0x0800) -#define GX_SCRFMT_TEXT_COLORPLTT_SHIFT (12) -#define GX_SCRFMT_TEXT_COLORPLTT_MASK (0xf000) -#define GX_SCRFMT_TEXT(pltt, vf, hf, name) \ - ((u16)(((name) << GX_SCRFMT_TEXT_CHARNAME_SHIFT) | \ - ((hf) << GX_SCRFMT_TEXT_HF_SHIFT) | \ - ((vf) << GX_SCRFMT_TEXT_VF_SHIFT) | \ - ((pltt) << GX_SCRFMT_TEXT_COLORPLTT_SHIFT))) - -typedef u8 GXScrFmtAffine; -#define GX_SCRFMT_AFFINE_CHARNAME_SHIFT (0) -#define GX_SCRFMT_AFFINE_CHARNAME_MASK (0xff) - -typedef u8 GXScrFmt256Bmp; -#define GX_SCRFMT_256BMP_COLORNO_SHIFT (0) -#define GX_SCRFMT_256BMP_COLORNO_MASK (0xff) - -typedef union { - u32 data32[8]; - u16 data16[16]; - u8 data8[32]; -} GXCharFmt16; - -typedef union { - u32 data32[16]; - u16 data16[32]; - u8 data8[64]; -} GXCharFmt256; - -typedef union { - u16 data16[16]; - u32 data32[8]; - GXRgb rgb[16]; -} GXBGPltt16; - -typedef GXBGPltt16 GXOBJPltt16; - -typedef union { - u16 data16[256]; - u32 data32[128]; - GXRgb rgb[256]; -} GXBGPltt256; - -typedef GXBGPltt256 GXOBJPltt256; - -typedef union { - u16 data16[32 * 32]; - u32 data32[32 * 32 / 2]; - GXScrFmtText scr[32][32]; -} GXScrText32x32; - -typedef union { - u16 data16[64 * 32]; - u32 data32[64 * 32 / 2]; - GXScrFmtText scr[64][32]; -} GXScrText64x32; - -typedef union { - u16 data16[32 * 64]; - u32 data32[32 * 64 / 2]; - GXScrFmtText scr[32][64]; -} GXScrText32x64; - -typedef union { - u16 data16[64 * 64]; - u32 data32[64 * 64 / 2]; - GXScrFmtText scr[64][64]; -} GXScrText64x64; - -typedef union { - u8 data8[16 * 16]; - u32 data32[16 * 16 / 4]; - GXScrFmtAffine scr[16][16]; -} GXScrAffine16x16; - -typedef union { - u8 data8[32 * 32]; - u32 data32[32 * 32 / 4]; - GXScrFmtAffine scr[32][32]; -} GXScrAffine32x32; - -typedef union { - u8 data8[64 * 64]; - u32 data32[64 * 64 / 4]; - GXScrFmtAffine scr[64][64]; -} GXScrAffine64x64; - -typedef union { - u8 data8[128 * 128]; - u32 data32[128 * 128 / 4]; - GXScrFmtAffine scr[128][128]; -} GXScrAffine128x128; - -typedef union { - u8 data8[128 * 128]; - u32 data32[128 * 128 / 4]; - GXScrFmt256Bmp scr[128][128]; -} GXScr256Bmp128x128; - -typedef union { - u8 data8[256 * 256]; - u32 data32[256 * 256 / 4]; - GXScrFmt256Bmp scr[256][256]; -} GXScr256Bmp256x256; - -typedef union { - u8 data8[512 * 256]; - u32 data32[512 * 256 / 4]; - GXScrFmt256Bmp scr[512][256]; -} GXScr256Bmp512x256; - -typedef union { - u8 data8[512 * 512]; - u32 data32[512 * 512 / 4]; - GXScrFmt256Bmp scr[512][512]; -} GXScr256Bmp512x512; - -typedef union { - u16 data16[128 * 128]; - u32 data32[128 * 128 / 2]; - GXRgba scr[128][128]; -} GXScrDCBmp128x128; - -typedef union { - u16 data16[256 * 256]; - u32 data32[256 * 256 / 2]; - GXRgba scr[256][256]; -} GXScrDCBmp256x256; - -typedef union { - u16 data16[512 * 256]; - u32 data32[512 * 256 / 2]; - GXRgba scr[512][256]; -} GXScrDCBmp512x256; - -typedef union { - u16 data16[512 * 512]; - u32 data32[512 * 512 / 2]; - GXRgba scr[512][512]; -} GXScrDCBmp512x512; - -typedef struct { - GXCharFmt16 ch[1024]; -} GXCharBGText16; - -typedef struct { - GXCharFmt256 ch[1024]; -} GXCharBGText256; - -typedef struct { - GXCharFmt256 ch[256]; -} GXCharBGAffine256; - -typedef union { - GXBGPltt256 pltt256; - GXBGPltt16 pltt16[16]; -} GXBGStdPlttData; - -typedef union { - GXOBJPltt256 pltt256; - GXOBJPltt16 pltt16[16]; -} GXOBJStdPlttData; - -typedef struct { - GXBGStdPlttData bgPltt; - GXOBJStdPlttData objPltt; -} GXStdPlttData; - -typedef struct { - GXBGPltt256 pltt256[16]; -} GXBGExtPlttData; - -typedef struct { - GXOBJPltt256 pltt256[16]; -} GXOBJExtPlttData; - -#endif diff --git a/subprojects/NitroSDK/include/nitro/hw/ARM7/ioreg.h b/subprojects/NitroSDK/include/nitro/hw/ARM7/ioreg.h deleted file mode 100644 index a82e22fce4..0000000000 --- a/subprojects/NitroSDK/include/nitro/hw/ARM7/ioreg.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef NITRO_HW_ARM7_IOREG_H_ -#define NITRO_HW_ARM7_IOREG_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/hw/ARM7/ioreg_EXI.h b/subprojects/NitroSDK/include/nitro/hw/ARM7/ioreg_EXI.h deleted file mode 100644 index e8240d3d47..0000000000 --- a/subprojects/NitroSDK/include/nitro/hw/ARM7/ioreg_EXI.h +++ /dev/null @@ -1,775 +0,0 @@ -#ifndef NITRO_HW_ARM7_IOREG_EXI_H_ -#define NITRO_HW_ARM7_IOREG_EXI_H_ - -#ifndef SDK_ASM -#include -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define REG_SIODATA32_OFFSET 0x120 -#define REG_SIODATA32_ADDR (HW_REG_BASE + REG_SIODATA32_OFFSET) -#define reg_EXI_SIODATA32 (*( REGType32v *)REG_SIODATA32_ADDR) - -#define REG_SIOMULTI0_OFFSET 0x120 -#define REG_SIOMULTI0_ADDR (HW_REG_BASE + REG_SIOMULTI0_OFFSET) -#define reg_EXI_SIOMULTI0 (*( REGType16v *)REG_SIOMULTI0_ADDR) - -#define REG_SIOMULTI1_OFFSET 0x122 -#define REG_SIOMULTI1_ADDR (HW_REG_BASE + REG_SIOMULTI1_OFFSET) -#define reg_EXI_SIOMULTI1 (*( REGType16v *)REG_SIOMULTI1_ADDR) - -#define REG_SIOMULTI2_OFFSET 0x124 -#define REG_SIOMULTI2_ADDR (HW_REG_BASE + REG_SIOMULTI2_OFFSET) -#define reg_EXI_SIOMULTI2 (*( REGType16v *)REG_SIOMULTI2_ADDR) - -#define REG_SIOMULTI3_OFFSET 0x126 -#define REG_SIOMULTI3_ADDR (HW_REG_BASE + REG_SIOMULTI3_OFFSET) -#define reg_EXI_SIOMULTI3 (*( REGType16v *)REG_SIOMULTI3_ADDR) - -#define REG_SIOCNT_OFFSET 0x128 -#define REG_SIOCNT_ADDR (HW_REG_BASE + REG_SIOCNT_OFFSET) -#define reg_EXI_SIOCNT (*( REGType16v *)REG_SIOCNT_ADDR) - -#define REG_SIOCNT_MULTI_OFFSET 0x128 -#define REG_SIOCNT_MULTI_ADDR (HW_REG_BASE + REG_SIOCNT_MULTI_OFFSET) -#define reg_EXI_SIOCNT_MULTI (*( REGType16v *)REG_SIOCNT_MULTI_ADDR) - -#define REG_SIOCNT_UART_OFFSET 0x128 -#define REG_SIOCNT_UART_ADDR (HW_REG_BASE + REG_SIOCNT_UART_OFFSET) -#define reg_EXI_SIOCNT_UART (*( REGType16v *)REG_SIOCNT_UART_ADDR) - -#define REG_SIOCNT_H_OFFSET 0x12a -#define REG_SIOCNT_H_ADDR (HW_REG_BASE + REG_SIOCNT_H_OFFSET) -#define reg_EXI_SIOCNT_H (*( REGType16v *)REG_SIOCNT_H_ADDR) - -#define REG_SIOMLT_SEND_OFFSET 0x12a -#define REG_SIOMLT_SEND_ADDR (HW_REG_BASE + REG_SIOMLT_SEND_OFFSET) -#define reg_EXI_SIOMLT_SEND (*( REGType16v *)REG_SIOMLT_SEND_ADDR) - -#define REG_SIODATA8_OFFSET 0x12a -#define REG_SIODATA8_ADDR (HW_REG_BASE + REG_SIODATA8_OFFSET) -#define reg_EXI_SIODATA8 (*( REGType16v *)REG_SIODATA8_ADDR) - -#define REG_SIOSEL_OFFSET 0x12c -#define REG_SIOSEL_ADDR (HW_REG_BASE + REG_SIOSEL_OFFSET) -#define reg_EXI_SIOSEL (*( REGType16v *)REG_SIOSEL_ADDR) - -#define REG_RCNT0_L_OFFSET 0x134 -#define REG_RCNT0_L_ADDR (HW_REG_BASE + REG_RCNT0_L_OFFSET) -#define reg_EXI_RCNT0_L (*( REGType16v *)REG_RCNT0_L_ADDR) - -#define REG_RCNT0_H_OFFSET 0x136 -#define REG_RCNT0_H_ADDR (HW_REG_BASE + REG_RCNT0_H_OFFSET) -#define reg_EXI_RCNT0_H (*( REGType16v *)REG_RCNT0_H_ADDR) - -#define REG_RCNT1_OFFSET 0x138 -#define REG_RCNT1_ADDR (HW_REG_BASE + REG_RCNT1_OFFSET) -#define reg_EXI_RCNT1 (*( REGType16v *)REG_RCNT1_ADDR) - -#define REG_JOYCNT_OFFSET 0x140 -#define REG_JOYCNT_ADDR (HW_REG_BASE + REG_JOYCNT_OFFSET) -#define reg_EXI_JOYCNT (*( REGType16v *)REG_JOYCNT_ADDR) - -#define REG_JOY_RECV_OFFSET 0x150 -#define REG_JOY_RECV_ADDR (HW_REG_BASE + REG_JOY_RECV_OFFSET) -#define reg_EXI_JOY_RECV (*( REGType32v *)REG_JOY_RECV_ADDR) - -#define REG_JOY_TRANS_OFFSET 0x154 -#define REG_JOY_TRANS_ADDR (HW_REG_BASE + REG_JOY_TRANS_OFFSET) -#define reg_EXI_JOY_TRANS (*( REGType32v *)REG_JOY_TRANS_ADDR) - -#define REG_JOY_STAT_OFFSET 0x158 -#define REG_JOY_STAT_ADDR (HW_REG_BASE + REG_JOY_STAT_OFFSET) -#define reg_EXI_JOY_STAT (*( REGType16v *)REG_JOY_STAT_ADDR) - -#define REG_EXI_SIODATA32_H_SHIFT 16 -#define REG_EXI_SIODATA32_H_SIZE 16 -#define REG_EXI_SIODATA32_H_MASK 0xffff0000 - -#define REG_EXI_SIODATA32_L_SHIFT 0 -#define REG_EXI_SIODATA32_L_SIZE 16 -#define REG_EXI_SIODATA32_L_MASK 0x0000ffff - -#ifndef SDK_ASM -#define REG_EXI_SIODATA32_FIELD(h, l) \ - (u32)( \ - ((u32)(h) << REG_EXI_SIODATA32_H_SHIFT) | \ - ((u32)(l) << REG_EXI_SIODATA32_L_SHIFT)) -#endif - -#define REG_EXI_SIOMULTI0_DATA_SHIFT 0 -#define REG_EXI_SIOMULTI0_DATA_SIZE 16 -#define REG_EXI_SIOMULTI0_DATA_MASK 0xffff - -#ifndef SDK_ASM -#define REG_EXI_SIOMULTI0_FIELD(data) \ - (u16)( \ - ((u32)(data) << REG_EXI_SIOMULTI0_DATA_SHIFT)) -#endif - -#define REG_EXI_SIOMULTI1_DATA_SHIFT 0 -#define REG_EXI_SIOMULTI1_DATA_SIZE 16 -#define REG_EXI_SIOMULTI1_DATA_MASK 0xffff - -#ifndef SDK_ASM -#define REG_EXI_SIOMULTI1_FIELD(data) \ - (u16)( \ - ((u32)(data) << REG_EXI_SIOMULTI1_DATA_SHIFT)) -#endif - -#define REG_EXI_SIOMULTI2_DATA_SHIFT 0 -#define REG_EXI_SIOMULTI2_DATA_SIZE 16 -#define REG_EXI_SIOMULTI2_DATA_MASK 0xffff - -#ifndef SDK_ASM -#define REG_EXI_SIOMULTI2_FIELD(data) \ - (u16)( \ - ((u32)(data) << REG_EXI_SIOMULTI2_DATA_SHIFT)) -#endif - -#define REG_EXI_SIOMULTI3_DATA_SHIFT 0 -#define REG_EXI_SIOMULTI3_DATA_SIZE 16 -#define REG_EXI_SIOMULTI3_DATA_MASK 0xffff - -#ifndef SDK_ASM -#define REG_EXI_SIOMULTI3_FIELD(data) \ - (u16)( \ - ((u32)(data) << REG_EXI_SIOMULTI3_DATA_SHIFT)) -#endif - -#define REG_EXI_SIOCNT_CKUP_SHIFT 15 -#define REG_EXI_SIOCNT_CKUP_SIZE 1 -#define REG_EXI_SIOCNT_CKUP_MASK 0x8000 - -#define REG_EXI_SIOCNT_I_SHIFT 14 -#define REG_EXI_SIOCNT_I_SIZE 1 -#define REG_EXI_SIOCNT_I_MASK 0x4000 - -#define REG_EXI_SIOCNT_MD1_SHIFT 13 -#define REG_EXI_SIOCNT_MD1_SIZE 1 -#define REG_EXI_SIOCNT_MD1_MASK 0x2000 - -#define REG_EXI_SIOCNT_BITLEN_SHIFT 12 -#define REG_EXI_SIOCNT_BITLEN_SIZE 1 -#define REG_EXI_SIOCNT_BITLEN_MASK 0x1000 - -#define REG_EXI_SIOCNT_START_SHIFT 7 -#define REG_EXI_SIOCNT_START_SIZE 1 -#define REG_EXI_SIOCNT_START_MASK 0x0080 - -#define REG_EXI_SIOCNT_TSEND_SHIFT 3 -#define REG_EXI_SIOCNT_TSEND_SIZE 1 -#define REG_EXI_SIOCNT_TSEND_MASK 0x0008 - -#define REG_EXI_SIOCNT_TRECV_SHIFT 2 -#define REG_EXI_SIOCNT_TRECV_SIZE 1 -#define REG_EXI_SIOCNT_TRECV_MASK 0x0004 - -#define REG_EXI_SIOCNT_SCLOCKHZ_SHIFT 1 -#define REG_EXI_SIOCNT_SCLOCKHZ_SIZE 1 -#define REG_EXI_SIOCNT_SCLOCKHZ_MASK 0x0002 - -#define REG_EXI_SIOCNT_SCLOCK_SHIFT 0 -#define REG_EXI_SIOCNT_SCLOCK_SIZE 1 -#define REG_EXI_SIOCNT_SCLOCK_MASK 0x0001 - -#ifndef SDK_ASM -#define REG_EXI_SIOCNT_FIELD(ckup, i, md1, bitlen, start, tsend, trecv, sclockhz, sclock) \ - (u16)( \ - ((u32)(ckup) << REG_EXI_SIOCNT_CKUP_SHIFT) | \ - ((u32)(i) << REG_EXI_SIOCNT_I_SHIFT) | \ - ((u32)(md1) << REG_EXI_SIOCNT_MD1_SHIFT) | \ - ((u32)(bitlen) << REG_EXI_SIOCNT_BITLEN_SHIFT) | \ - ((u32)(start) << REG_EXI_SIOCNT_START_SHIFT) | \ - ((u32)(tsend) << REG_EXI_SIOCNT_TSEND_SHIFT) | \ - ((u32)(trecv) << REG_EXI_SIOCNT_TRECV_SHIFT) | \ - ((u32)(sclockhz) << REG_EXI_SIOCNT_SCLOCKHZ_SHIFT) | \ - ((u32)(sclock) << REG_EXI_SIOCNT_SCLOCK_SHIFT)) -#endif - -#define REG_EXI_SIOCNT_MULTI_CKUP_SHIFT 15 -#define REG_EXI_SIOCNT_MULTI_CKUP_SIZE 1 -#define REG_EXI_SIOCNT_MULTI_CKUP_MASK 0x8000 - -#define REG_EXI_SIOCNT_MULTI_I_SHIFT 14 -#define REG_EXI_SIOCNT_MULTI_I_SIZE 1 -#define REG_EXI_SIOCNT_MULTI_I_MASK 0x4000 - -#define REG_EXI_SIOCNT_MULTI_MD1_SHIFT 13 -#define REG_EXI_SIOCNT_MULTI_MD1_SIZE 1 -#define REG_EXI_SIOCNT_MULTI_MD1_MASK 0x2000 - -#define REG_EXI_SIOCNT_MULTI_MD0_SHIFT 12 -#define REG_EXI_SIOCNT_MULTI_MD0_SIZE 1 -#define REG_EXI_SIOCNT_MULTI_MD0_MASK 0x1000 - -#define REG_EXI_SIOCNT_MULTI_START_SHIFT 7 -#define REG_EXI_SIOCNT_MULTI_START_SIZE 1 -#define REG_EXI_SIOCNT_MULTI_START_MASK 0x0080 - -#define REG_EXI_SIOCNT_MULTI_ERROR_SHIFT 6 -#define REG_EXI_SIOCNT_MULTI_ERROR_SIZE 1 -#define REG_EXI_SIOCNT_MULTI_ERROR_MASK 0x0040 - -#define REG_EXI_SIOCNT_MULTI_MULTIID_SHIFT 4 -#define REG_EXI_SIOCNT_MULTI_MULTIID_SIZE 2 -#define REG_EXI_SIOCNT_MULTI_MULTIID_MASK 0x0030 - -#define REG_EXI_SIOCNT_MULTI_SDMON_SHIFT 3 -#define REG_EXI_SIOCNT_MULTI_SDMON_SIZE 1 -#define REG_EXI_SIOCNT_MULTI_SDMON_MASK 0x0008 - -#define REG_EXI_SIOCNT_MULTI_SIMON_SHIFT 2 -#define REG_EXI_SIOCNT_MULTI_SIMON_SIZE 1 -#define REG_EXI_SIOCNT_MULTI_SIMON_MASK 0x0004 - -#define REG_EXI_SIOCNT_MULTI_BAUD_SHIFT 0 -#define REG_EXI_SIOCNT_MULTI_BAUD_SIZE 2 -#define REG_EXI_SIOCNT_MULTI_BAUD_MASK 0x0003 - -#ifndef SDK_ASM -#define REG_EXI_SIOCNT_MULTI_FIELD(ckup, i, md1, md0, start, error, multiid, sdmon, simon, baud) \ - (u16)( \ - ((u32)(ckup) << REG_EXI_SIOCNT_MULTI_CKUP_SHIFT) | \ - ((u32)(i) << REG_EXI_SIOCNT_MULTI_I_SHIFT) | \ - ((u32)(md1) << REG_EXI_SIOCNT_MULTI_MD1_SHIFT) | \ - ((u32)(md0) << REG_EXI_SIOCNT_MULTI_MD0_SHIFT) | \ - ((u32)(start) << REG_EXI_SIOCNT_MULTI_START_SHIFT) | \ - ((u32)(error) << REG_EXI_SIOCNT_MULTI_ERROR_SHIFT) | \ - ((u32)(multiid) << REG_EXI_SIOCNT_MULTI_MULTIID_SHIFT) | \ - ((u32)(sdmon) << REG_EXI_SIOCNT_MULTI_SDMON_SHIFT) | \ - ((u32)(simon) << REG_EXI_SIOCNT_MULTI_SIMON_SHIFT) | \ - ((u32)(baud) << REG_EXI_SIOCNT_MULTI_BAUD_SHIFT)) -#endif - -#define REG_EXI_SIOCNT_UART_CKUP_SHIFT 15 -#define REG_EXI_SIOCNT_UART_CKUP_SIZE 1 -#define REG_EXI_SIOCNT_UART_CKUP_MASK 0x8000 - -#define REG_EXI_SIOCNT_UART_MD1_SHIFT 13 -#define REG_EXI_SIOCNT_UART_MD1_SIZE 1 -#define REG_EXI_SIOCNT_UART_MD1_MASK 0x2000 - -#define REG_EXI_SIOCNT_UART_MD0_SHIFT 12 -#define REG_EXI_SIOCNT_UART_MD0_SIZE 1 -#define REG_EXI_SIOCNT_UART_MD0_MASK 0x1000 - -#define REG_EXI_SIOCNT_UART_RECVEF_SHIFT 11 -#define REG_EXI_SIOCNT_UART_RECVEF_SIZE 1 -#define REG_EXI_SIOCNT_UART_RECVEF_MASK 0x0800 - -#define REG_EXI_SIOCNT_UART_SENDEF_SHIFT 10 -#define REG_EXI_SIOCNT_UART_SENDEF_SIZE 1 -#define REG_EXI_SIOCNT_UART_SENDEF_MASK 0x0400 - -#define REG_EXI_SIOCNT_UART_PARITYEF_SHIFT 9 -#define REG_EXI_SIOCNT_UART_PARITYEF_SIZE 1 -#define REG_EXI_SIOCNT_UART_PARITYEF_MASK 0x0200 - -#define REG_EXI_SIOCNT_UART_FIFOEF_SHIFT 8 -#define REG_EXI_SIOCNT_UART_FIFOEF_SIZE 1 -#define REG_EXI_SIOCNT_UART_FIFOEF_MASK 0x0100 - -#define REG_EXI_SIOCNT_UART_DATALEN_SHIFT 7 -#define REG_EXI_SIOCNT_UART_DATALEN_SIZE 1 -#define REG_EXI_SIOCNT_UART_DATALEN_MASK 0x0080 - -#define REG_EXI_SIOCNT_UART_ERROR_SHIFT 6 -#define REG_EXI_SIOCNT_UART_ERROR_SIZE 1 -#define REG_EXI_SIOCNT_UART_ERROR_MASK 0x0040 - -#define REG_EXI_SIOCNT_UART_RECV_SHIFT 5 -#define REG_EXI_SIOCNT_UART_RECV_SIZE 1 -#define REG_EXI_SIOCNT_UART_RECV_MASK 0x0020 - -#define REG_EXI_SIOCNT_UART_SEND_SHIFT 4 -#define REG_EXI_SIOCNT_UART_SEND_SIZE 1 -#define REG_EXI_SIOCNT_UART_SEND_MASK 0x0010 - -#define REG_EXI_SIOCNT_UART_PARITYCNT_SHIFT 3 -#define REG_EXI_SIOCNT_UART_PARITYCNT_SIZE 1 -#define REG_EXI_SIOCNT_UART_PARITYCNT_MASK 0x0008 - -#define REG_EXI_SIOCNT_UART_CTS_SHIFT 2 -#define REG_EXI_SIOCNT_UART_CTS_SIZE 1 -#define REG_EXI_SIOCNT_UART_CTS_MASK 0x0004 - -#define REG_EXI_SIOCNT_UART_BAUD_SHIFT 0 -#define REG_EXI_SIOCNT_UART_BAUD_SIZE 2 -#define REG_EXI_SIOCNT_UART_BAUD_MASK 0x0003 - -#ifndef SDK_ASM -#define REG_EXI_SIOCNT_UART_FIELD(ckup, md1, md0, recvef, sendef, parityef, fifoef, datalen, error, recv, send, paritycnt, cts, baud) \ - (u16)( \ - ((u32)(ckup) << REG_EXI_SIOCNT_UART_CKUP_SHIFT) | \ - ((u32)(md1) << REG_EXI_SIOCNT_UART_MD1_SHIFT) | \ - ((u32)(md0) << REG_EXI_SIOCNT_UART_MD0_SHIFT) | \ - ((u32)(recvef) << REG_EXI_SIOCNT_UART_RECVEF_SHIFT) | \ - ((u32)(sendef) << REG_EXI_SIOCNT_UART_SENDEF_SHIFT) | \ - ((u32)(parityef) << REG_EXI_SIOCNT_UART_PARITYEF_SHIFT) | \ - ((u32)(fifoef) << REG_EXI_SIOCNT_UART_FIFOEF_SHIFT) | \ - ((u32)(datalen) << REG_EXI_SIOCNT_UART_DATALEN_SHIFT) | \ - ((u32)(error) << REG_EXI_SIOCNT_UART_ERROR_SHIFT) | \ - ((u32)(recv) << REG_EXI_SIOCNT_UART_RECV_SHIFT) | \ - ((u32)(send) << REG_EXI_SIOCNT_UART_SEND_SHIFT) | \ - ((u32)(paritycnt) << REG_EXI_SIOCNT_UART_PARITYCNT_SHIFT) | \ - ((u32)(cts) << REG_EXI_SIOCNT_UART_CTS_SHIFT) | \ - ((u32)(baud) << REG_EXI_SIOCNT_UART_BAUD_SHIFT)) -#endif - -#define REG_EXI_SIOCNT_H_RFFUL_SHIFT 15 -#define REG_EXI_SIOCNT_H_RFFUL_SIZE 1 -#define REG_EXI_SIOCNT_H_RFFUL_MASK 0x8000 - -#define REG_EXI_SIOCNT_H_TFEMP_SHIFT 14 -#define REG_EXI_SIOCNT_H_TFEMP_SIZE 1 -#define REG_EXI_SIOCNT_H_TFEMP_MASK 0x4000 - -#ifndef SDK_ASM -#define REG_EXI_SIOCNT_H_FIELD(rfful, tfemp) \ - (u16)( \ - ((u32)(rfful) << REG_EXI_SIOCNT_H_RFFUL_SHIFT) | \ - ((u32)(tfemp) << REG_EXI_SIOCNT_H_TFEMP_SHIFT)) -#endif - -#define REG_EXI_SIOMLT_SEND_DATA_SHIFT 0 -#define REG_EXI_SIOMLT_SEND_DATA_SIZE 16 -#define REG_EXI_SIOMLT_SEND_DATA_MASK 0xffff - -#ifndef SDK_ASM -#define REG_EXI_SIOMLT_SEND_FIELD(data) \ - (u16)( \ - ((u32)(data) << REG_EXI_SIOMLT_SEND_DATA_SHIFT)) -#endif - -#define REG_EXI_SIODATA8_DATA_SHIFT 0 -#define REG_EXI_SIODATA8_DATA_SIZE 8 -#define REG_EXI_SIODATA8_DATA_MASK 0x00ff - -#ifndef SDK_ASM -#define REG_EXI_SIODATA8_FIELD(data) \ - (u16)( \ - ((u32)(data) << REG_EXI_SIODATA8_DATA_SHIFT)) -#endif - -#define REG_EXI_SIOSEL_SEL_SHIFT 0 -#define REG_EXI_SIOSEL_SEL_SIZE 1 -#define REG_EXI_SIOSEL_SEL_MASK 0x0001 - -#ifndef SDK_ASM -#define REG_EXI_SIOSEL_FIELD(sel) \ - (u16)( \ - ((u32)(sel) << REG_EXI_SIOSEL_SEL_SHIFT)) -#endif - -#define REG_EXI_RCNT0_L_RE1_SHIFT 15 -#define REG_EXI_RCNT0_L_RE1_SIZE 1 -#define REG_EXI_RCNT0_L_RE1_MASK 0x8000 - -#define REG_EXI_RCNT0_L_RE0_SHIFT 14 -#define REG_EXI_RCNT0_L_RE0_SIZE 1 -#define REG_EXI_RCNT0_L_RE0_MASK 0x4000 - -#define REG_EXI_RCNT0_L_I_SHIFT 8 -#define REG_EXI_RCNT0_L_I_SIZE 1 -#define REG_EXI_RCNT0_L_I_MASK 0x0100 - -#define REG_EXI_RCNT0_L_DIR_SO_SHIFT 7 -#define REG_EXI_RCNT0_L_DIR_SO_SIZE 1 -#define REG_EXI_RCNT0_L_DIR_SO_MASK 0x0080 - -#define REG_EXI_RCNT0_L_DIR_SI_SHIFT 6 -#define REG_EXI_RCNT0_L_DIR_SI_SIZE 1 -#define REG_EXI_RCNT0_L_DIR_SI_MASK 0x0040 - -#define REG_EXI_RCNT0_L_DIR_SD_SHIFT 5 -#define REG_EXI_RCNT0_L_DIR_SD_SIZE 1 -#define REG_EXI_RCNT0_L_DIR_SD_MASK 0x0020 - -#define REG_EXI_RCNT0_L_DIR_SC_SHIFT 4 -#define REG_EXI_RCNT0_L_DIR_SC_SIZE 1 -#define REG_EXI_RCNT0_L_DIR_SC_MASK 0x0010 - -#define REG_EXI_RCNT0_L_DATA_SO_SHIFT 3 -#define REG_EXI_RCNT0_L_DATA_SO_SIZE 1 -#define REG_EXI_RCNT0_L_DATA_SO_MASK 0x0008 - -#define REG_EXI_RCNT0_L_DATA_SI_SHIFT 2 -#define REG_EXI_RCNT0_L_DATA_SI_SIZE 1 -#define REG_EXI_RCNT0_L_DATA_SI_MASK 0x0004 - -#define REG_EXI_RCNT0_L_DATA_SD_SHIFT 1 -#define REG_EXI_RCNT0_L_DATA_SD_SIZE 1 -#define REG_EXI_RCNT0_L_DATA_SD_MASK 0x0002 - -#define REG_EXI_RCNT0_L_DATA_SC_SHIFT 0 -#define REG_EXI_RCNT0_L_DATA_SC_SIZE 1 -#define REG_EXI_RCNT0_L_DATA_SC_MASK 0x0001 - -#ifndef SDK_ASM -#define REG_EXI_RCNT0_L_FIELD(re1, re0, i, dir_so, dir_si, dir_sd, dir_sc, data_so, data_si, data_sd, data_sc) \ - (u16)( \ - ((u32)(re1) << REG_EXI_RCNT0_L_RE1_SHIFT) | \ - ((u32)(re0) << REG_EXI_RCNT0_L_RE0_SHIFT) | \ - ((u32)(i) << REG_EXI_RCNT0_L_I_SHIFT) | \ - ((u32)(dir_so) << REG_EXI_RCNT0_L_DIR_SO_SHIFT) | \ - ((u32)(dir_si) << REG_EXI_RCNT0_L_DIR_SI_SHIFT) | \ - ((u32)(dir_sd) << REG_EXI_RCNT0_L_DIR_SD_SHIFT) | \ - ((u32)(dir_sc) << REG_EXI_RCNT0_L_DIR_SC_SHIFT) | \ - ((u32)(data_so) << REG_EXI_RCNT0_L_DATA_SO_SHIFT) | \ - ((u32)(data_si) << REG_EXI_RCNT0_L_DATA_SI_SHIFT) | \ - ((u32)(data_sd) << REG_EXI_RCNT0_L_DATA_SD_SHIFT) | \ - ((u32)(data_sc) << REG_EXI_RCNT0_L_DATA_SC_SHIFT)) -#endif - -#if !defined(SDK_TS) - -#define REG_EXI_RCNT0_H_DIR_R7_SHIFT 15 -#define REG_EXI_RCNT0_H_DIR_R7_SIZE 1 -#define REG_EXI_RCNT0_H_DIR_R7_MASK 0x8000 - -#define REG_EXI_RCNT0_H_DIR_R6_SHIFT 14 -#define REG_EXI_RCNT0_H_DIR_R6_SIZE 1 -#define REG_EXI_RCNT0_H_DIR_R6_MASK 0x4000 - -#define REG_EXI_RCNT0_H_DIR_R5_SHIFT 13 -#define REG_EXI_RCNT0_H_DIR_R5_SIZE 1 -#define REG_EXI_RCNT0_H_DIR_R5_MASK 0x2000 - -#define REG_EXI_RCNT0_H_DIR_R4_SHIFT 12 -#define REG_EXI_RCNT0_H_DIR_R4_SIZE 1 -#define REG_EXI_RCNT0_H_DIR_R4_MASK 0x1000 - -#define REG_EXI_RCNT0_H_DIR_R3_SHIFT 11 -#define REG_EXI_RCNT0_H_DIR_R3_SIZE 1 -#define REG_EXI_RCNT0_H_DIR_R3_MASK 0x0800 - -#define REG_EXI_RCNT0_H_DIR_R2_SHIFT 10 -#define REG_EXI_RCNT0_H_DIR_R2_SIZE 1 -#define REG_EXI_RCNT0_H_DIR_R2_MASK 0x0400 - -#define REG_EXI_RCNT0_H_DIR_R1_SHIFT 9 -#define REG_EXI_RCNT0_H_DIR_R1_SIZE 1 -#define REG_EXI_RCNT0_H_DIR_R1_MASK 0x0200 - -#define REG_EXI_RCNT0_H_DIR_R0_SHIFT 8 -#define REG_EXI_RCNT0_H_DIR_R0_SIZE 1 -#define REG_EXI_RCNT0_H_DIR_R0_MASK 0x0100 - -#define REG_EXI_RCNT0_H_DATA_R7_SHIFT 7 -#define REG_EXI_RCNT0_H_DATA_R7_SIZE 1 -#define REG_EXI_RCNT0_H_DATA_R7_MASK 0x0080 - -#define REG_EXI_RCNT0_H_DATA_R6_SHIFT 6 -#define REG_EXI_RCNT0_H_DATA_R6_SIZE 1 -#define REG_EXI_RCNT0_H_DATA_R6_MASK 0x0040 - -#define REG_EXI_RCNT0_H_DATA_R5_SHIFT 5 -#define REG_EXI_RCNT0_H_DATA_R5_SIZE 1 -#define REG_EXI_RCNT0_H_DATA_R5_MASK 0x0020 - -#define REG_EXI_RCNT0_H_DATA_R4_SHIFT 4 -#define REG_EXI_RCNT0_H_DATA_R4_SIZE 1 -#define REG_EXI_RCNT0_H_DATA_R4_MASK 0x0010 - -#define REG_EXI_RCNT0_H_DATA_R3_SHIFT 3 -#define REG_EXI_RCNT0_H_DATA_R3_SIZE 1 -#define REG_EXI_RCNT0_H_DATA_R3_MASK 0x0008 - -#define REG_EXI_RCNT0_H_DATA_R2_SHIFT 2 -#define REG_EXI_RCNT0_H_DATA_R2_SIZE 1 -#define REG_EXI_RCNT0_H_DATA_R2_MASK 0x0004 - -#define REG_EXI_RCNT0_H_DATA_R1_SHIFT 1 -#define REG_EXI_RCNT0_H_DATA_R1_SIZE 1 -#define REG_EXI_RCNT0_H_DATA_R1_MASK 0x0002 - -#define REG_EXI_RCNT0_H_DATA_R0_SHIFT 0 -#define REG_EXI_RCNT0_H_DATA_R0_SIZE 1 -#define REG_EXI_RCNT0_H_DATA_R0_MASK 0x0001 - -#ifndef SDK_ASM -#define REG_EXI_RCNT0_H_FIELD(dir_r7, dir_r6, dir_r5, dir_r4, dir_r3, dir_r2, dir_r1, dir_r0, data_r7, data_r6, data_r5, data_r4, data_r3, data_r2, data_r1, data_r0) \ - (u16)( \ - ((u32)(dir_r7) << REG_EXI_RCNT0_H_DIR_R7_SHIFT) | \ - ((u32)(dir_r6) << REG_EXI_RCNT0_H_DIR_R6_SHIFT) | \ - ((u32)(dir_r5) << REG_EXI_RCNT0_H_DIR_R5_SHIFT) | \ - ((u32)(dir_r4) << REG_EXI_RCNT0_H_DIR_R4_SHIFT) | \ - ((u32)(dir_r3) << REG_EXI_RCNT0_H_DIR_R3_SHIFT) | \ - ((u32)(dir_r2) << REG_EXI_RCNT0_H_DIR_R2_SHIFT) | \ - ((u32)(dir_r1) << REG_EXI_RCNT0_H_DIR_R1_SHIFT) | \ - ((u32)(dir_r0) << REG_EXI_RCNT0_H_DIR_R0_SHIFT) | \ - ((u32)(data_r7) << REG_EXI_RCNT0_H_DATA_R7_SHIFT) | \ - ((u32)(data_r6) << REG_EXI_RCNT0_H_DATA_R6_SHIFT) | \ - ((u32)(data_r5) << REG_EXI_RCNT0_H_DATA_R5_SHIFT) | \ - ((u32)(data_r4) << REG_EXI_RCNT0_H_DATA_R4_SHIFT) | \ - ((u32)(data_r3) << REG_EXI_RCNT0_H_DATA_R3_SHIFT) | \ - ((u32)(data_r2) << REG_EXI_RCNT0_H_DATA_R2_SHIFT) | \ - ((u32)(data_r1) << REG_EXI_RCNT0_H_DATA_R1_SHIFT) | \ - ((u32)(data_r0) << REG_EXI_RCNT0_H_DATA_R0_SHIFT)) -#endif - -#elif defined(SDK_TS) - -#define REG_EXI_RCNT0_H_DATA_R7_SHIFT 7 -#define REG_EXI_RCNT0_H_DATA_R7_SIZE 1 -#define REG_EXI_RCNT0_H_DATA_R7_MASK 0x0080 - -#define REG_EXI_RCNT0_H_DATA_R6_SHIFT 6 -#define REG_EXI_RCNT0_H_DATA_R6_SIZE 1 -#define REG_EXI_RCNT0_H_DATA_R6_MASK 0x0040 - -#define REG_EXI_RCNT0_H_DATA_R5_SHIFT 5 -#define REG_EXI_RCNT0_H_DATA_R5_SIZE 1 -#define REG_EXI_RCNT0_H_DATA_R5_MASK 0x0020 - -#define REG_EXI_RCNT0_H_DATA_R4_SHIFT 4 -#define REG_EXI_RCNT0_H_DATA_R4_SIZE 1 -#define REG_EXI_RCNT0_H_DATA_R4_MASK 0x0010 - -#define REG_EXI_RCNT0_H_DATA_R3_SHIFT 3 -#define REG_EXI_RCNT0_H_DATA_R3_SIZE 1 -#define REG_EXI_RCNT0_H_DATA_R3_MASK 0x0008 - -#define REG_EXI_RCNT0_H_DATA_R2_SHIFT 2 -#define REG_EXI_RCNT0_H_DATA_R2_SIZE 1 -#define REG_EXI_RCNT0_H_DATA_R2_MASK 0x0004 - -#define REG_EXI_RCNT0_H_DATA_R1_SHIFT 1 -#define REG_EXI_RCNT0_H_DATA_R1_SIZE 1 -#define REG_EXI_RCNT0_H_DATA_R1_MASK 0x0002 - -#define REG_EXI_RCNT0_H_DATA_R0_SHIFT 0 -#define REG_EXI_RCNT0_H_DATA_R0_SIZE 1 -#define REG_EXI_RCNT0_H_DATA_R0_MASK 0x0001 - -#ifndef SDK_ASM -#define REG_EXI_RCNT0_H_FIELD(data_r7, data_r6, data_r5, data_r4, data_r3, data_r2, data_r1, data_r0) \ - (u16)( \ - ((u32)(data_r7) << REG_EXI_RCNT0_H_DATA_R7_SHIFT) | \ - ((u32)(data_r6) << REG_EXI_RCNT0_H_DATA_R6_SHIFT) | \ - ((u32)(data_r5) << REG_EXI_RCNT0_H_DATA_R5_SHIFT) | \ - ((u32)(data_r4) << REG_EXI_RCNT0_H_DATA_R4_SHIFT) | \ - ((u32)(data_r3) << REG_EXI_RCNT0_H_DATA_R3_SHIFT) | \ - ((u32)(data_r2) << REG_EXI_RCNT0_H_DATA_R2_SHIFT) | \ - ((u32)(data_r1) << REG_EXI_RCNT0_H_DATA_R1_SHIFT) | \ - ((u32)(data_r0) << REG_EXI_RCNT0_H_DATA_R0_SHIFT)) -#endif - -#endif - -#if !defined(SDK_TS) - -#define REG_EXI_RCNT1_DIR_RB_SHIFT 7 -#define REG_EXI_RCNT1_DIR_RB_SIZE 1 -#define REG_EXI_RCNT1_DIR_RB_MASK 0x0080 - -#define REG_EXI_RCNT1_DIR_RA_SHIFT 6 -#define REG_EXI_RCNT1_DIR_RA_SIZE 1 -#define REG_EXI_RCNT1_DIR_RA_MASK 0x0040 - -#define REG_EXI_RCNT1_DIR_R9_SHIFT 5 -#define REG_EXI_RCNT1_DIR_R9_SIZE 1 -#define REG_EXI_RCNT1_DIR_R9_MASK 0x0020 - -#define REG_EXI_RCNT1_DIR_R8_SHIFT 4 -#define REG_EXI_RCNT1_DIR_R8_SIZE 1 -#define REG_EXI_RCNT1_DIR_R8_MASK 0x0010 - -#define REG_EXI_RCNT1_DATA_RB_SHIFT 3 -#define REG_EXI_RCNT1_DATA_RB_SIZE 1 -#define REG_EXI_RCNT1_DATA_RB_MASK 0x0008 - -#define REG_EXI_RCNT1_DATA_RA_SHIFT 2 -#define REG_EXI_RCNT1_DATA_RA_SIZE 1 -#define REG_EXI_RCNT1_DATA_RA_MASK 0x0004 - -#define REG_EXI_RCNT1_DATA_R9_SHIFT 1 -#define REG_EXI_RCNT1_DATA_R9_SIZE 1 -#define REG_EXI_RCNT1_DATA_R9_MASK 0x0002 - -#define REG_EXI_RCNT1_DATA_R8_SHIFT 0 -#define REG_EXI_RCNT1_DATA_R8_SIZE 1 -#define REG_EXI_RCNT1_DATA_R8_MASK 0x0001 - -#ifndef SDK_ASM -#define REG_EXI_RCNT1_FIELD(dir_rb, dir_ra, dir_r9, dir_r8, data_rb, data_ra, data_r9, data_r8) \ - (u16)( \ - ((u32)(dir_rb) << REG_EXI_RCNT1_DIR_RB_SHIFT) | \ - ((u32)(dir_ra) << REG_EXI_RCNT1_DIR_RA_SHIFT) | \ - ((u32)(dir_r9) << REG_EXI_RCNT1_DIR_R9_SHIFT) | \ - ((u32)(dir_r8) << REG_EXI_RCNT1_DIR_R8_SHIFT) | \ - ((u32)(data_rb) << REG_EXI_RCNT1_DATA_RB_SHIFT) | \ - ((u32)(data_ra) << REG_EXI_RCNT1_DATA_RA_SHIFT) | \ - ((u32)(data_r9) << REG_EXI_RCNT1_DATA_R9_SHIFT) | \ - ((u32)(data_r8) << REG_EXI_RCNT1_DATA_R8_SHIFT)) -#endif - -#elif defined(SDK_TS) - -#define REG_EXI_RCNT1_DIR_RF_SHIFT 15 -#define REG_EXI_RCNT1_DIR_RF_SIZE 1 -#define REG_EXI_RCNT1_DIR_RF_MASK 0x8000 - -#define REG_EXI_RCNT1_DIR_RE_SHIFT 14 -#define REG_EXI_RCNT1_DIR_RE_SIZE 1 -#define REG_EXI_RCNT1_DIR_RE_MASK 0x4000 - -#define REG_EXI_RCNT1_DIR_RD_SHIFT 13 -#define REG_EXI_RCNT1_DIR_RD_SIZE 1 -#define REG_EXI_RCNT1_DIR_RD_MASK 0x2000 - -#define REG_EXI_RCNT1_DIR_RC_SHIFT 12 -#define REG_EXI_RCNT1_DIR_RC_SIZE 1 -#define REG_EXI_RCNT1_DIR_RC_MASK 0x1000 - -#define REG_EXI_RCNT1_DATA_RF_SHIFT 11 -#define REG_EXI_RCNT1_DATA_RF_SIZE 1 -#define REG_EXI_RCNT1_DATA_RF_MASK 0x0800 - -#define REG_EXI_RCNT1_DATA_RE_SHIFT 10 -#define REG_EXI_RCNT1_DATA_RE_SIZE 1 -#define REG_EXI_RCNT1_DATA_RE_MASK 0x0400 - -#define REG_EXI_RCNT1_DATA_RD_SHIFT 9 -#define REG_EXI_RCNT1_DATA_RD_SIZE 1 -#define REG_EXI_RCNT1_DATA_RD_MASK 0x0200 - -#define REG_EXI_RCNT1_DATA_RC_SHIFT 8 -#define REG_EXI_RCNT1_DATA_RC_SIZE 1 -#define REG_EXI_RCNT1_DATA_RC_MASK 0x0100 - -#define REG_EXI_RCNT1_DIR_RB_SHIFT 7 -#define REG_EXI_RCNT1_DIR_RB_SIZE 1 -#define REG_EXI_RCNT1_DIR_RB_MASK 0x0080 - -#define REG_EXI_RCNT1_DIR_RA_SHIFT 6 -#define REG_EXI_RCNT1_DIR_RA_SIZE 1 -#define REG_EXI_RCNT1_DIR_RA_MASK 0x0040 - -#define REG_EXI_RCNT1_DIR_R9_SHIFT 5 -#define REG_EXI_RCNT1_DIR_R9_SIZE 1 -#define REG_EXI_RCNT1_DIR_R9_MASK 0x0020 - -#define REG_EXI_RCNT1_DIR_R8_SHIFT 4 -#define REG_EXI_RCNT1_DIR_R8_SIZE 1 -#define REG_EXI_RCNT1_DIR_R8_MASK 0x0010 - -#define REG_EXI_RCNT1_DATA_RB_SHIFT 3 -#define REG_EXI_RCNT1_DATA_RB_SIZE 1 -#define REG_EXI_RCNT1_DATA_RB_MASK 0x0008 - -#define REG_EXI_RCNT1_DATA_RA_SHIFT 2 -#define REG_EXI_RCNT1_DATA_RA_SIZE 1 -#define REG_EXI_RCNT1_DATA_RA_MASK 0x0004 - -#define REG_EXI_RCNT1_DATA_R9_SHIFT 1 -#define REG_EXI_RCNT1_DATA_R9_SIZE 1 -#define REG_EXI_RCNT1_DATA_R9_MASK 0x0002 - -#define REG_EXI_RCNT1_DATA_R8_SHIFT 0 -#define REG_EXI_RCNT1_DATA_R8_SIZE 1 -#define REG_EXI_RCNT1_DATA_R8_MASK 0x0001 - -#ifndef SDK_ASM -#define REG_EXI_RCNT1_FIELD(dir_rf, dir_re, dir_rd, dir_rc, data_rf, data_re, data_rd, data_rc, dir_rb, dir_ra, dir_r9, dir_r8, data_rb, data_ra, data_r9, data_r8) \ - (u16)( \ - ((u32)(dir_rf) << REG_EXI_RCNT1_DIR_RF_SHIFT) | \ - ((u32)(dir_re) << REG_EXI_RCNT1_DIR_RE_SHIFT) | \ - ((u32)(dir_rd) << REG_EXI_RCNT1_DIR_RD_SHIFT) | \ - ((u32)(dir_rc) << REG_EXI_RCNT1_DIR_RC_SHIFT) | \ - ((u32)(data_rf) << REG_EXI_RCNT1_DATA_RF_SHIFT) | \ - ((u32)(data_re) << REG_EXI_RCNT1_DATA_RE_SHIFT) | \ - ((u32)(data_rd) << REG_EXI_RCNT1_DATA_RD_SHIFT) | \ - ((u32)(data_rc) << REG_EXI_RCNT1_DATA_RC_SHIFT) | \ - ((u32)(dir_rb) << REG_EXI_RCNT1_DIR_RB_SHIFT) | \ - ((u32)(dir_ra) << REG_EXI_RCNT1_DIR_RA_SHIFT) | \ - ((u32)(dir_r9) << REG_EXI_RCNT1_DIR_R9_SHIFT) | \ - ((u32)(dir_r8) << REG_EXI_RCNT1_DIR_R8_SHIFT) | \ - ((u32)(data_rb) << REG_EXI_RCNT1_DATA_RB_SHIFT) | \ - ((u32)(data_ra) << REG_EXI_RCNT1_DATA_RA_SHIFT) | \ - ((u32)(data_r9) << REG_EXI_RCNT1_DATA_R9_SHIFT) | \ - ((u32)(data_r8) << REG_EXI_RCNT1_DATA_R8_SHIFT)) -#endif - -#endif - -#define REG_EXI_JOYCNT_MOD_SHIFT 7 -#define REG_EXI_JOYCNT_MOD_SIZE 1 -#define REG_EXI_JOYCNT_MOD_MASK 0x0080 - -#define REG_EXI_JOYCNT_I_SHIFT 6 -#define REG_EXI_JOYCNT_I_SIZE 1 -#define REG_EXI_JOYCNT_I_MASK 0x0040 - -#define REG_EXI_JOYCNT_SEND_SHIFT 2 -#define REG_EXI_JOYCNT_SEND_SIZE 1 -#define REG_EXI_JOYCNT_SEND_MASK 0x0004 - -#define REG_EXI_JOYCNT_RECV_SHIFT 1 -#define REG_EXI_JOYCNT_RECV_SIZE 1 -#define REG_EXI_JOYCNT_RECV_MASK 0x0002 - -#define REG_EXI_JOYCNT_RESET_SHIFT 0 -#define REG_EXI_JOYCNT_RESET_SIZE 1 -#define REG_EXI_JOYCNT_RESET_MASK 0x0001 - -#ifndef SDK_ASM -#define REG_EXI_JOYCNT_FIELD(mod, i, send, recv, reset) \ - (u16)( \ - ((u32)(mod) << REG_EXI_JOYCNT_MOD_SHIFT) | \ - ((u32)(i) << REG_EXI_JOYCNT_I_SHIFT) | \ - ((u32)(send) << REG_EXI_JOYCNT_SEND_SHIFT) | \ - ((u32)(recv) << REG_EXI_JOYCNT_RECV_SHIFT) | \ - ((u32)(reset) << REG_EXI_JOYCNT_RESET_SHIFT)) -#endif - -#define REG_EXI_JOY_RECV_RECVDATA_SHIFT 0 -#define REG_EXI_JOY_RECV_RECVDATA_SIZE 32 -#define REG_EXI_JOY_RECV_RECVDATA_MASK 0xffffffff - -#ifndef SDK_ASM -#define REG_EXI_JOY_RECV_FIELD(recvdata) \ - (u32)( \ - ((u32)(recvdata) << REG_EXI_JOY_RECV_RECVDATA_SHIFT)) -#endif - -#define REG_EXI_JOY_TRANS_SENDDATA_SHIFT 0 -#define REG_EXI_JOY_TRANS_SENDDATA_SIZE 32 -#define REG_EXI_JOY_TRANS_SENDDATA_MASK 0xffffffff - -#ifndef SDK_ASM -#define REG_EXI_JOY_TRANS_FIELD(senddata) \ - (u32)( \ - ((u32)(senddata) << REG_EXI_JOY_TRANS_SENDDATA_SHIFT)) -#endif - -#define REG_EXI_JOY_STAT_GEN_SHIFT 4 -#define REG_EXI_JOY_STAT_GEN_SIZE 2 -#define REG_EXI_JOY_STAT_GEN_MASK 0x0030 - -#define REG_EXI_JOY_STAT_SSTATUS_SHIFT 3 -#define REG_EXI_JOY_STAT_SSTATUS_SIZE 1 -#define REG_EXI_JOY_STAT_SSTATUS_MASK 0x0008 - -#define REG_EXI_JOY_STAT_RSTATUS_SHIFT 1 -#define REG_EXI_JOY_STAT_RSTATUS_SIZE 1 -#define REG_EXI_JOY_STAT_RSTATUS_MASK 0x0002 - -#ifndef SDK_ASM -#define REG_EXI_JOY_STAT_FIELD(gen, sstatus, rstatus) \ - (u16)( \ - ((u32)(gen) << REG_EXI_JOY_STAT_GEN_SHIFT) | \ - ((u32)(sstatus) << REG_EXI_JOY_STAT_SSTATUS_SHIFT) | \ - ((u32)(rstatus) << REG_EXI_JOY_STAT_RSTATUS_SHIFT)) -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/hw/ARM7/ioreg_GX.h b/subprojects/NitroSDK/include/nitro/hw/ARM7/ioreg_GX.h deleted file mode 100644 index 19e4bd136f..0000000000 --- a/subprojects/NitroSDK/include/nitro/hw/ARM7/ioreg_GX.h +++ /dev/null @@ -1,75 +0,0 @@ -#ifndef NITRO_HW_ARM7_IOREG_GX_H_ -#define NITRO_HW_ARM7_IOREG_GX_H_ - -#ifndef SDK_ASM -#include -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define REG_DISPSTAT_OFFSET 0x004 -#define REG_DISPSTAT_ADDR (HW_REG_BASE + REG_DISPSTAT_OFFSET) -#define reg_GX_DISPSTAT (*( REGType16v *)REG_DISPSTAT_ADDR) - -#define REG_VCOUNT_OFFSET 0x006 -#define REG_VCOUNT_ADDR (HW_REG_BASE + REG_VCOUNT_OFFSET) -#define reg_GX_VCOUNT (*( REGType16v *)REG_VCOUNT_ADDR) - -#define REG_GX_DISPSTAT_VCOUNTER_SHIFT 7 -#define REG_GX_DISPSTAT_VCOUNTER_SIZE 9 -#define REG_GX_DISPSTAT_VCOUNTER_MASK 0xff80 - -#define REG_GX_DISPSTAT_VQI_SHIFT 5 -#define REG_GX_DISPSTAT_VQI_SIZE 1 -#define REG_GX_DISPSTAT_VQI_MASK 0x0020 - -#define REG_GX_DISPSTAT_HBI_SHIFT 4 -#define REG_GX_DISPSTAT_HBI_SIZE 1 -#define REG_GX_DISPSTAT_HBI_MASK 0x0010 - -#define REG_GX_DISPSTAT_VBI_SHIFT 3 -#define REG_GX_DISPSTAT_VBI_SIZE 1 -#define REG_GX_DISPSTAT_VBI_MASK 0x0008 - -#define REG_GX_DISPSTAT_LYC_SHIFT 2 -#define REG_GX_DISPSTAT_LYC_SIZE 1 -#define REG_GX_DISPSTAT_LYC_MASK 0x0004 - -#define REG_GX_DISPSTAT_HBLK_SHIFT 1 -#define REG_GX_DISPSTAT_HBLK_SIZE 1 -#define REG_GX_DISPSTAT_HBLK_MASK 0x0002 - -#define REG_GX_DISPSTAT_VBLK_SHIFT 0 -#define REG_GX_DISPSTAT_VBLK_SIZE 1 -#define REG_GX_DISPSTAT_VBLK_MASK 0x0001 - -#ifndef SDK_ASM -#define REG_GX_DISPSTAT_FIELD(vcounter, vqi, hbi, vbi, lyc, hblk, vblk) \ - (u16)( \ - ((u32)(vcounter) << REG_GX_DISPSTAT_VCOUNTER_SHIFT) | \ - ((u32)(vqi) << REG_GX_DISPSTAT_VQI_SHIFT) | \ - ((u32)(hbi) << REG_GX_DISPSTAT_HBI_SHIFT) | \ - ((u32)(vbi) << REG_GX_DISPSTAT_VBI_SHIFT) | \ - ((u32)(lyc) << REG_GX_DISPSTAT_LYC_SHIFT) | \ - ((u32)(hblk) << REG_GX_DISPSTAT_HBLK_SHIFT) | \ - ((u32)(vblk) << REG_GX_DISPSTAT_VBLK_SHIFT)) -#endif - -#define REG_GX_VCOUNT_VCOUNTER_SHIFT 0 -#define REG_GX_VCOUNT_VCOUNTER_SIZE 10 -#define REG_GX_VCOUNT_VCOUNTER_MASK 0x03ff - -#ifndef SDK_ASM -#define REG_GX_VCOUNT_FIELD(vcounter) \ - (u16)( \ - ((u32)(vcounter) << REG_GX_VCOUNT_VCOUNTER_SHIFT)) -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/hw/ARM7/ioreg_MI.h b/subprojects/NitroSDK/include/nitro/hw/ARM7/ioreg_MI.h deleted file mode 100644 index d17b0d3d1c..0000000000 --- a/subprojects/NitroSDK/include/nitro/hw/ARM7/ioreg_MI.h +++ /dev/null @@ -1,591 +0,0 @@ -#ifndef NITRO_HW_ARM7_IOREG_MI_H_ -#define NITRO_HW_ARM7_IOREG_MI_H_ - -#ifndef SDK_ASM -#include -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define REG_DMA0SAD_OFFSET 0x0b0 -#define REG_DMA0SAD_ADDR (HW_REG_BASE + REG_DMA0SAD_OFFSET) -#define reg_MI_DMA0SAD (*( REGType32v *)REG_DMA0SAD_ADDR) - -#define REG_DMA0DAD_OFFSET 0x0b4 -#define REG_DMA0DAD_ADDR (HW_REG_BASE + REG_DMA0DAD_OFFSET) -#define reg_MI_DMA0DAD (*( REGType32v *)REG_DMA0DAD_ADDR) - -#define REG_DMA0CNT_OFFSET 0x0b8 -#define REG_DMA0CNT_ADDR (HW_REG_BASE + REG_DMA0CNT_OFFSET) -#define reg_MI_DMA0CNT (*( REGType32v *)REG_DMA0CNT_ADDR) - -#define REG_DMA1SAD_OFFSET 0x0bc -#define REG_DMA1SAD_ADDR (HW_REG_BASE + REG_DMA1SAD_OFFSET) -#define reg_MI_DMA1SAD (*( REGType32v *)REG_DMA1SAD_ADDR) - -#define REG_DMA1DAD_OFFSET 0x0c0 -#define REG_DMA1DAD_ADDR (HW_REG_BASE + REG_DMA1DAD_OFFSET) -#define reg_MI_DMA1DAD (*( REGType32v *)REG_DMA1DAD_ADDR) - -#define REG_DMA1CNT_OFFSET 0x0c4 -#define REG_DMA1CNT_ADDR (HW_REG_BASE + REG_DMA1CNT_OFFSET) -#define reg_MI_DMA1CNT (*( REGType32v *)REG_DMA1CNT_ADDR) - -#define REG_DMA2SAD_OFFSET 0x0c8 -#define REG_DMA2SAD_ADDR (HW_REG_BASE + REG_DMA2SAD_OFFSET) -#define reg_MI_DMA2SAD (*( REGType32v *)REG_DMA2SAD_ADDR) - -#define REG_DMA2DAD_OFFSET 0x0cc -#define REG_DMA2DAD_ADDR (HW_REG_BASE + REG_DMA2DAD_OFFSET) -#define reg_MI_DMA2DAD (*( REGType32v *)REG_DMA2DAD_ADDR) - -#define REG_DMA2CNT_OFFSET 0x0d0 -#define REG_DMA2CNT_ADDR (HW_REG_BASE + REG_DMA2CNT_OFFSET) -#define reg_MI_DMA2CNT (*( REGType32v *)REG_DMA2CNT_ADDR) - -#define REG_DMA3SAD_OFFSET 0x0d4 -#define REG_DMA3SAD_ADDR (HW_REG_BASE + REG_DMA3SAD_OFFSET) -#define reg_MI_DMA3SAD (*( REGType32v *)REG_DMA3SAD_ADDR) - -#define REG_DMA3DAD_OFFSET 0x0d8 -#define REG_DMA3DAD_ADDR (HW_REG_BASE + REG_DMA3DAD_OFFSET) -#define reg_MI_DMA3DAD (*( REGType32v *)REG_DMA3DAD_ADDR) - -#define REG_DMA3CNT_OFFSET 0x0dc -#define REG_DMA3CNT_ADDR (HW_REG_BASE + REG_DMA3CNT_OFFSET) -#define reg_MI_DMA3CNT (*( REGType32v *)REG_DMA3CNT_ADDR) - -#define REG_MCCNT0_OFFSET 0x1a0 -#define REG_MCCNT0_ADDR (HW_REG_BASE + REG_MCCNT0_OFFSET) -#define reg_MI_MCCNT0 (*( REGType16v *)REG_MCCNT0_ADDR) - -#define REG_MCD0_OFFSET 0x1a2 -#define REG_MCD0_ADDR (HW_REG_BASE + REG_MCD0_OFFSET) -#define reg_MI_MCD0 (*( REGType16v *)REG_MCD0_ADDR) - -#define REG_MCD1_OFFSET 0x100010 -#define REG_MCD1_ADDR (HW_REG_BASE + REG_MCD1_OFFSET) -#define reg_MI_MCD1 (*( REGType32v *)REG_MCD1_ADDR) - -#define REG_MCCNT1_OFFSET 0x1a4 -#define REG_MCCNT1_ADDR (HW_REG_BASE + REG_MCCNT1_OFFSET) -#define reg_MI_MCCNT1 (*( REGType32v *)REG_MCCNT1_ADDR) - -#define REG_MCCMD0_OFFSET 0x1a8 -#define REG_MCCMD0_ADDR (HW_REG_BASE + REG_MCCMD0_OFFSET) -#define reg_MI_MCCMD0 (*( REGType32v *)REG_MCCMD0_ADDR) - -#define REG_MCCMD1_OFFSET 0x1ac -#define REG_MCCMD1_ADDR (HW_REG_BASE + REG_MCCMD1_OFFSET) -#define reg_MI_MCCMD1 (*( REGType32v *)REG_MCCMD1_ADDR) - -#define REG_EXMEMCNT_L_OFFSET 0x204 -#define REG_EXMEMCNT_L_ADDR (HW_REG_BASE + REG_EXMEMCNT_L_OFFSET) -#define reg_MI_EXMEMCNT_L (*( REGType16v *)REG_EXMEMCNT_L_ADDR) - -#define REG_EXMEMCNT_H_OFFSET 0x206 -#define REG_EXMEMCNT_H_ADDR (HW_REG_BASE + REG_EXMEMCNT_H_OFFSET) -#define reg_MI_EXMEMCNT_H (*( REGType16v *)REG_EXMEMCNT_H_ADDR) - -#define REG_WVRAMSTAT_OFFSET 0x240 -#define REG_WVRAMSTAT_ADDR (HW_REG_BASE + REG_WVRAMSTAT_OFFSET) -#define reg_MI_WVRAMSTAT (*( REGType16v *)REG_WVRAMSTAT_ADDR) - -#define REG_MI_DMA0SAD_DMASRC_SHIFT 0 -#define REG_MI_DMA0SAD_DMASRC_SIZE 27 -#define REG_MI_DMA0SAD_DMASRC_MASK 0x07ffffff - -#ifndef SDK_ASM -#define REG_MI_DMA0SAD_FIELD(dmasrc) \ - (u32)( \ - ((u32)(dmasrc) << REG_MI_DMA0SAD_DMASRC_SHIFT)) -#endif - -#define REG_MI_DMA0DAD_DMADEST_SHIFT 0 -#define REG_MI_DMA0DAD_DMADEST_SIZE 27 -#define REG_MI_DMA0DAD_DMADEST_MASK 0x07ffffff - -#ifndef SDK_ASM -#define REG_MI_DMA0DAD_FIELD(dmadest) \ - (u32)( \ - ((u32)(dmadest) << REG_MI_DMA0DAD_DMADEST_SHIFT)) -#endif - -#define REG_MI_DMA0CNT_E_SHIFT 31 -#define REG_MI_DMA0CNT_E_SIZE 1 -#define REG_MI_DMA0CNT_E_MASK 0x80000000 - -#define REG_MI_DMA0CNT_I_SHIFT 30 -#define REG_MI_DMA0CNT_I_SIZE 1 -#define REG_MI_DMA0CNT_I_MASK 0x40000000 - -#define REG_MI_DMA0CNT_TIMING_SHIFT 28 -#define REG_MI_DMA0CNT_TIMING_SIZE 2 -#define REG_MI_DMA0CNT_TIMING_MASK 0x30000000 - -#define REG_MI_DMA0CNT_SB_SHIFT 26 -#define REG_MI_DMA0CNT_SB_SIZE 1 -#define REG_MI_DMA0CNT_SB_MASK 0x04000000 - -#define REG_MI_DMA0CNT_CM_SHIFT 25 -#define REG_MI_DMA0CNT_CM_SIZE 1 -#define REG_MI_DMA0CNT_CM_MASK 0x02000000 - -#define REG_MI_DMA0CNT_SAR_SHIFT 23 -#define REG_MI_DMA0CNT_SAR_SIZE 2 -#define REG_MI_DMA0CNT_SAR_MASK 0x01800000 - -#define REG_MI_DMA0CNT_DAR_SHIFT 21 -#define REG_MI_DMA0CNT_DAR_SIZE 2 -#define REG_MI_DMA0CNT_DAR_MASK 0x00600000 - -#define REG_MI_DMA0CNT_WORDCNT_SHIFT 0 -#define REG_MI_DMA0CNT_WORDCNT_SIZE 16 -#define REG_MI_DMA0CNT_WORDCNT_MASK 0x0000ffff - -#ifndef SDK_ASM -#define REG_MI_DMA0CNT_FIELD(e, i, timing, sb, cm, sar, dar, wordcnt) \ - (u32)( \ - ((u32)(e) << REG_MI_DMA0CNT_E_SHIFT) | \ - ((u32)(i) << REG_MI_DMA0CNT_I_SHIFT) | \ - ((u32)(timing) << REG_MI_DMA0CNT_TIMING_SHIFT) | \ - ((u32)(sb) << REG_MI_DMA0CNT_SB_SHIFT) | \ - ((u32)(cm) << REG_MI_DMA0CNT_CM_SHIFT) | \ - ((u32)(sar) << REG_MI_DMA0CNT_SAR_SHIFT) | \ - ((u32)(dar) << REG_MI_DMA0CNT_DAR_SHIFT) | \ - ((u32)(wordcnt) << REG_MI_DMA0CNT_WORDCNT_SHIFT)) -#endif - -#define REG_MI_DMA1SAD_DMASRC_SHIFT 0 -#define REG_MI_DMA1SAD_DMASRC_SIZE 28 -#define REG_MI_DMA1SAD_DMASRC_MASK 0x0fffffff - -#ifndef SDK_ASM -#define REG_MI_DMA1SAD_FIELD(dmasrc) \ - (u32)( \ - ((u32)(dmasrc) << REG_MI_DMA1SAD_DMASRC_SHIFT)) -#endif - -#define REG_MI_DMA1DAD_DMADEST_SHIFT 0 -#define REG_MI_DMA1DAD_DMADEST_SIZE 27 -#define REG_MI_DMA1DAD_DMADEST_MASK 0x07ffffff - -#ifndef SDK_ASM -#define REG_MI_DMA1DAD_FIELD(dmadest) \ - (u32)( \ - ((u32)(dmadest) << REG_MI_DMA1DAD_DMADEST_SHIFT)) -#endif - -#define REG_MI_DMA1CNT_E_SHIFT 31 -#define REG_MI_DMA1CNT_E_SIZE 1 -#define REG_MI_DMA1CNT_E_MASK 0x80000000 - -#define REG_MI_DMA1CNT_I_SHIFT 30 -#define REG_MI_DMA1CNT_I_SIZE 1 -#define REG_MI_DMA1CNT_I_MASK 0x40000000 - -#define REG_MI_DMA1CNT_TIMING_SHIFT 28 -#define REG_MI_DMA1CNT_TIMING_SIZE 2 -#define REG_MI_DMA1CNT_TIMING_MASK 0x30000000 - -#define REG_MI_DMA1CNT_SB_SHIFT 26 -#define REG_MI_DMA1CNT_SB_SIZE 1 -#define REG_MI_DMA1CNT_SB_MASK 0x04000000 - -#define REG_MI_DMA1CNT_CM_SHIFT 25 -#define REG_MI_DMA1CNT_CM_SIZE 1 -#define REG_MI_DMA1CNT_CM_MASK 0x02000000 - -#define REG_MI_DMA1CNT_SAR_SHIFT 23 -#define REG_MI_DMA1CNT_SAR_SIZE 2 -#define REG_MI_DMA1CNT_SAR_MASK 0x01800000 - -#define REG_MI_DMA1CNT_DAR_SHIFT 21 -#define REG_MI_DMA1CNT_DAR_SIZE 2 -#define REG_MI_DMA1CNT_DAR_MASK 0x00600000 - -#define REG_MI_DMA1CNT_WORDCNT_SHIFT 0 -#define REG_MI_DMA1CNT_WORDCNT_SIZE 16 -#define REG_MI_DMA1CNT_WORDCNT_MASK 0x0000ffff - -#ifndef SDK_ASM -#define REG_MI_DMA1CNT_FIELD(e, i, timing, sb, cm, sar, dar, wordcnt) \ - (u32)( \ - ((u32)(e) << REG_MI_DMA1CNT_E_SHIFT) | \ - ((u32)(i) << REG_MI_DMA1CNT_I_SHIFT) | \ - ((u32)(timing) << REG_MI_DMA1CNT_TIMING_SHIFT) | \ - ((u32)(sb) << REG_MI_DMA1CNT_SB_SHIFT) | \ - ((u32)(cm) << REG_MI_DMA1CNT_CM_SHIFT) | \ - ((u32)(sar) << REG_MI_DMA1CNT_SAR_SHIFT) | \ - ((u32)(dar) << REG_MI_DMA1CNT_DAR_SHIFT) | \ - ((u32)(wordcnt) << REG_MI_DMA1CNT_WORDCNT_SHIFT)) -#endif - -#define REG_MI_DMA2SAD_DMASRC_SHIFT 0 -#define REG_MI_DMA2SAD_DMASRC_SIZE 28 -#define REG_MI_DMA2SAD_DMASRC_MASK 0x0fffffff - -#ifndef SDK_ASM -#define REG_MI_DMA2SAD_FIELD(dmasrc) \ - (u32)( \ - ((u32)(dmasrc) << REG_MI_DMA2SAD_DMASRC_SHIFT)) -#endif - -#define REG_MI_DMA2DAD_DMADEST_SHIFT 0 -#define REG_MI_DMA2DAD_DMADEST_SIZE 27 -#define REG_MI_DMA2DAD_DMADEST_MASK 0x07ffffff - -#ifndef SDK_ASM -#define REG_MI_DMA2DAD_FIELD(dmadest) \ - (u32)( \ - ((u32)(dmadest) << REG_MI_DMA2DAD_DMADEST_SHIFT)) -#endif - -#define REG_MI_DMA2CNT_E_SHIFT 31 -#define REG_MI_DMA2CNT_E_SIZE 1 -#define REG_MI_DMA2CNT_E_MASK 0x80000000 - -#define REG_MI_DMA2CNT_I_SHIFT 30 -#define REG_MI_DMA2CNT_I_SIZE 1 -#define REG_MI_DMA2CNT_I_MASK 0x40000000 - -#define REG_MI_DMA2CNT_TIMING_SHIFT 28 -#define REG_MI_DMA2CNT_TIMING_SIZE 2 -#define REG_MI_DMA2CNT_TIMING_MASK 0x30000000 - -#define REG_MI_DMA2CNT_SB_SHIFT 26 -#define REG_MI_DMA2CNT_SB_SIZE 1 -#define REG_MI_DMA2CNT_SB_MASK 0x04000000 - -#define REG_MI_DMA2CNT_CM_SHIFT 25 -#define REG_MI_DMA2CNT_CM_SIZE 1 -#define REG_MI_DMA2CNT_CM_MASK 0x02000000 - -#define REG_MI_DMA2CNT_SAR_SHIFT 23 -#define REG_MI_DMA2CNT_SAR_SIZE 2 -#define REG_MI_DMA2CNT_SAR_MASK 0x01800000 - -#define REG_MI_DMA2CNT_DAR_SHIFT 21 -#define REG_MI_DMA2CNT_DAR_SIZE 2 -#define REG_MI_DMA2CNT_DAR_MASK 0x00600000 - -#define REG_MI_DMA2CNT_WORDCNT_SHIFT 0 -#define REG_MI_DMA2CNT_WORDCNT_SIZE 16 -#define REG_MI_DMA2CNT_WORDCNT_MASK 0x0000ffff - -#ifndef SDK_ASM -#define REG_MI_DMA2CNT_FIELD(e, i, timing, sb, cm, sar, dar, wordcnt) \ - (u32)( \ - ((u32)(e) << REG_MI_DMA2CNT_E_SHIFT) | \ - ((u32)(i) << REG_MI_DMA2CNT_I_SHIFT) | \ - ((u32)(timing) << REG_MI_DMA2CNT_TIMING_SHIFT) | \ - ((u32)(sb) << REG_MI_DMA2CNT_SB_SHIFT) | \ - ((u32)(cm) << REG_MI_DMA2CNT_CM_SHIFT) | \ - ((u32)(sar) << REG_MI_DMA2CNT_SAR_SHIFT) | \ - ((u32)(dar) << REG_MI_DMA2CNT_DAR_SHIFT) | \ - ((u32)(wordcnt) << REG_MI_DMA2CNT_WORDCNT_SHIFT)) -#endif - -#define REG_MI_DMA3SAD_DMASRC_SHIFT 0 -#define REG_MI_DMA3SAD_DMASRC_SIZE 28 -#define REG_MI_DMA3SAD_DMASRC_MASK 0x0fffffff - -#ifndef SDK_ASM -#define REG_MI_DMA3SAD_FIELD(dmasrc) \ - (u32)( \ - ((u32)(dmasrc) << REG_MI_DMA3SAD_DMASRC_SHIFT)) -#endif - -#define REG_MI_DMA3DAD_DMADEST_SHIFT 0 -#define REG_MI_DMA3DAD_DMADEST_SIZE 28 -#define REG_MI_DMA3DAD_DMADEST_MASK 0x0fffffff - -#ifndef SDK_ASM -#define REG_MI_DMA3DAD_FIELD(dmadest) \ - (u32)( \ - ((u32)(dmadest) << REG_MI_DMA3DAD_DMADEST_SHIFT)) -#endif - -#define REG_MI_DMA3CNT_E_SHIFT 31 -#define REG_MI_DMA3CNT_E_SIZE 1 -#define REG_MI_DMA3CNT_E_MASK 0x80000000 - -#define REG_MI_DMA3CNT_I_SHIFT 30 -#define REG_MI_DMA3CNT_I_SIZE 1 -#define REG_MI_DMA3CNT_I_MASK 0x40000000 - -#define REG_MI_DMA3CNT_TIMING_SHIFT 28 -#define REG_MI_DMA3CNT_TIMING_SIZE 2 -#define REG_MI_DMA3CNT_TIMING_MASK 0x30000000 - -#define REG_MI_DMA3CNT_SB_SHIFT 26 -#define REG_MI_DMA3CNT_SB_SIZE 1 -#define REG_MI_DMA3CNT_SB_MASK 0x04000000 - -#define REG_MI_DMA3CNT_CM_SHIFT 25 -#define REG_MI_DMA3CNT_CM_SIZE 1 -#define REG_MI_DMA3CNT_CM_MASK 0x02000000 - -#define REG_MI_DMA3CNT_SAR_SHIFT 23 -#define REG_MI_DMA3CNT_SAR_SIZE 2 -#define REG_MI_DMA3CNT_SAR_MASK 0x01800000 - -#define REG_MI_DMA3CNT_DAR_SHIFT 21 -#define REG_MI_DMA3CNT_DAR_SIZE 2 -#define REG_MI_DMA3CNT_DAR_MASK 0x00600000 - -#define REG_MI_DMA3CNT_WORDCNT_SHIFT 0 -#define REG_MI_DMA3CNT_WORDCNT_SIZE 16 -#define REG_MI_DMA3CNT_WORDCNT_MASK 0x0000ffff - -#ifndef SDK_ASM -#define REG_MI_DMA3CNT_FIELD(e, i, timing, sb, cm, sar, dar, wordcnt) \ - (u32)( \ - ((u32)(e) << REG_MI_DMA3CNT_E_SHIFT) | \ - ((u32)(i) << REG_MI_DMA3CNT_I_SHIFT) | \ - ((u32)(timing) << REG_MI_DMA3CNT_TIMING_SHIFT) | \ - ((u32)(sb) << REG_MI_DMA3CNT_SB_SHIFT) | \ - ((u32)(cm) << REG_MI_DMA3CNT_CM_SHIFT) | \ - ((u32)(sar) << REG_MI_DMA3CNT_SAR_SHIFT) | \ - ((u32)(dar) << REG_MI_DMA3CNT_DAR_SHIFT) | \ - ((u32)(wordcnt) << REG_MI_DMA3CNT_WORDCNT_SHIFT)) -#endif - -#define REG_MI_MCCNT0_E_SHIFT 15 -#define REG_MI_MCCNT0_E_SIZE 1 -#define REG_MI_MCCNT0_E_MASK 0x8000 - -#define REG_MI_MCCNT0_I_SHIFT 14 -#define REG_MI_MCCNT0_I_SIZE 1 -#define REG_MI_MCCNT0_I_MASK 0x4000 - -#define REG_MI_MCCNT0_SEL_SHIFT 13 -#define REG_MI_MCCNT0_SEL_SIZE 1 -#define REG_MI_MCCNT0_SEL_MASK 0x2000 - -#define REG_MI_MCCNT0_BUSY_SHIFT 7 -#define REG_MI_MCCNT0_BUSY_SIZE 1 -#define REG_MI_MCCNT0_BUSY_MASK 0x0080 - -#define REG_MI_MCCNT0_MODE_SHIFT 6 -#define REG_MI_MCCNT0_MODE_SIZE 1 -#define REG_MI_MCCNT0_MODE_MASK 0x0040 - -#define REG_MI_MCCNT0_BAUDRATE_SHIFT 0 -#define REG_MI_MCCNT0_BAUDRATE_SIZE 2 -#define REG_MI_MCCNT0_BAUDRATE_MASK 0x0003 - -#ifndef SDK_ASM -#define REG_MI_MCCNT0_FIELD(e, i, sel, busy, mode, baudrate) \ - (u16)( \ - ((u32)(e) << REG_MI_MCCNT0_E_SHIFT) | \ - ((u32)(i) << REG_MI_MCCNT0_I_SHIFT) | \ - ((u32)(sel) << REG_MI_MCCNT0_SEL_SHIFT) | \ - ((u32)(busy) << REG_MI_MCCNT0_BUSY_SHIFT) | \ - ((u32)(mode) << REG_MI_MCCNT0_MODE_SHIFT) | \ - ((u32)(baudrate) << REG_MI_MCCNT0_BAUDRATE_SHIFT)) -#endif - -#define REG_MI_MCD0_DATA_SHIFT 0 -#define REG_MI_MCD0_DATA_SIZE 8 -#define REG_MI_MCD0_DATA_MASK 0x00ff - -#ifndef SDK_ASM -#define REG_MI_MCD0_FIELD(data) \ - (u16)( \ - ((u32)(data) << REG_MI_MCD0_DATA_SHIFT)) -#endif - -#define REG_MI_MCCNT1_START_SHIFT 31 -#define REG_MI_MCCNT1_START_SIZE 1 -#define REG_MI_MCCNT1_START_MASK 0x80000000 - -#define REG_MI_MCCNT1_WR_SHIFT 30 -#define REG_MI_MCCNT1_WR_SIZE 1 -#define REG_MI_MCCNT1_WR_MASK 0x40000000 - -#define REG_MI_MCCNT1_CT_SHIFT 27 -#define REG_MI_MCCNT1_CT_SIZE 1 -#define REG_MI_MCCNT1_CT_MASK 0x08000000 - -#define REG_MI_MCCNT1_PC_SHIFT 24 -#define REG_MI_MCCNT1_PC_SIZE 3 -#define REG_MI_MCCNT1_PC_MASK 0x07000000 - -#define REG_MI_MCCNT1_RDY_SHIFT 23 -#define REG_MI_MCCNT1_RDY_SIZE 1 -#define REG_MI_MCCNT1_RDY_MASK 0x00800000 - -#define REG_MI_MCCNT1_L2_SHIFT 16 -#define REG_MI_MCCNT1_L2_SIZE 6 -#define REG_MI_MCCNT1_L2_MASK 0x003f0000 - -#define REG_MI_MCCNT1_L1_SHIFT 0 -#define REG_MI_MCCNT1_L1_SIZE 13 -#define REG_MI_MCCNT1_L1_MASK 0x00001fff - -#ifndef SDK_ASM -#define REG_MI_MCCNT1_FIELD(start, wr, ct, pc, rdy, l2, l1) \ - (u32)( \ - ((u32)(start) << REG_MI_MCCNT1_START_SHIFT) | \ - ((u32)(wr) << REG_MI_MCCNT1_WR_SHIFT) | \ - ((u32)(ct) << REG_MI_MCCNT1_CT_SHIFT) | \ - ((u32)(pc) << REG_MI_MCCNT1_PC_SHIFT) | \ - ((u32)(rdy) << REG_MI_MCCNT1_RDY_SHIFT) | \ - ((u32)(l2) << REG_MI_MCCNT1_L2_SHIFT) | \ - ((u32)(l1) << REG_MI_MCCNT1_L1_SHIFT)) -#endif - -#define REG_MI_MCCMD0_CMD3_SHIFT 24 -#define REG_MI_MCCMD0_CMD3_SIZE 8 -#define REG_MI_MCCMD0_CMD3_MASK 0xff000000 - -#define REG_MI_MCCMD0_CMD2_SHIFT 16 -#define REG_MI_MCCMD0_CMD2_SIZE 8 -#define REG_MI_MCCMD0_CMD2_MASK 0x00ff0000 - -#define REG_MI_MCCMD0_CMD1_SHIFT 8 -#define REG_MI_MCCMD0_CMD1_SIZE 8 -#define REG_MI_MCCMD0_CMD1_MASK 0x0000ff00 - -#define REG_MI_MCCMD0_CMD0_SHIFT 0 -#define REG_MI_MCCMD0_CMD0_SIZE 8 -#define REG_MI_MCCMD0_CMD0_MASK 0x000000ff - -#ifndef SDK_ASM -#define REG_MI_MCCMD0_FIELD(cmd3, cmd2, cmd1, cmd0) \ - (u32)( \ - ((u32)(cmd3) << REG_MI_MCCMD0_CMD3_SHIFT) | \ - ((u32)(cmd2) << REG_MI_MCCMD0_CMD2_SHIFT) | \ - ((u32)(cmd1) << REG_MI_MCCMD0_CMD1_SHIFT) | \ - ((u32)(cmd0) << REG_MI_MCCMD0_CMD0_SHIFT)) -#endif - -#define REG_MI_MCCMD1_CMD7_SHIFT 24 -#define REG_MI_MCCMD1_CMD7_SIZE 8 -#define REG_MI_MCCMD1_CMD7_MASK 0xff000000 - -#define REG_MI_MCCMD1_CMD6_SHIFT 16 -#define REG_MI_MCCMD1_CMD6_SIZE 8 -#define REG_MI_MCCMD1_CMD6_MASK 0x00ff0000 - -#define REG_MI_MCCMD1_CMD5_SHIFT 8 -#define REG_MI_MCCMD1_CMD5_SIZE 8 -#define REG_MI_MCCMD1_CMD5_MASK 0x0000ff00 - -#define REG_MI_MCCMD1_CMD4_SHIFT 0 -#define REG_MI_MCCMD1_CMD4_SIZE 8 -#define REG_MI_MCCMD1_CMD4_MASK 0x000000ff - -#ifndef SDK_ASM -#define REG_MI_MCCMD1_FIELD(cmd7, cmd6, cmd5, cmd4) \ - (u32)( \ - ((u32)(cmd7) << REG_MI_MCCMD1_CMD7_SHIFT) | \ - ((u32)(cmd6) << REG_MI_MCCMD1_CMD6_SHIFT) | \ - ((u32)(cmd5) << REG_MI_MCCMD1_CMD5_SHIFT) | \ - ((u32)(cmd4) << REG_MI_MCCMD1_CMD4_SHIFT)) -#endif - -#define REG_MI_EXMEMCNT_L_EP_SHIFT 15 -#define REG_MI_EXMEMCNT_L_EP_SIZE 1 -#define REG_MI_EXMEMCNT_L_EP_MASK 0x8000 - -#define REG_MI_EXMEMCNT_L_MP_SHIFT 11 -#define REG_MI_EXMEMCNT_L_MP_SIZE 1 -#define REG_MI_EXMEMCNT_L_MP_MASK 0x0800 - -#define REG_MI_EXMEMCNT_L_CP_SHIFT 7 -#define REG_MI_EXMEMCNT_L_CP_SIZE 1 -#define REG_MI_EXMEMCNT_L_CP_MASK 0x0080 - -#define REG_MI_EXMEMCNT_L_PHI_SHIFT 5 -#define REG_MI_EXMEMCNT_L_PHI_SIZE 2 -#define REG_MI_EXMEMCNT_L_PHI_MASK 0x0060 - -#define REG_MI_EXMEMCNT_L_ROM2nd_SHIFT 4 -#define REG_MI_EXMEMCNT_L_ROM2nd_SIZE 1 -#define REG_MI_EXMEMCNT_L_ROM2nd_MASK 0x0010 - -#define REG_MI_EXMEMCNT_L_ROM1st_SHIFT 2 -#define REG_MI_EXMEMCNT_L_ROM1st_SIZE 2 -#define REG_MI_EXMEMCNT_L_ROM1st_MASK 0x000c - -#define REG_MI_EXMEMCNT_L_RAM_SHIFT 0 -#define REG_MI_EXMEMCNT_L_RAM_SIZE 2 -#define REG_MI_EXMEMCNT_L_RAM_MASK 0x0003 - -#ifndef SDK_ASM -#define REG_MI_EXMEMCNT_L_FIELD(ep, mp, cp, phi, rom2nd, rom1st, ram) \ - (u16)( \ - ((u32)(ep) << REG_MI_EXMEMCNT_L_EP_SHIFT) | \ - ((u32)(mp) << REG_MI_EXMEMCNT_L_MP_SHIFT) | \ - ((u32)(cp) << REG_MI_EXMEMCNT_L_CP_SHIFT) | \ - ((u32)(phi) << REG_MI_EXMEMCNT_L_PHI_SHIFT) | \ - ((u32)(rom2nd) << REG_MI_EXMEMCNT_L_ROM2nd_SHIFT) | \ - ((u32)(rom1st) << REG_MI_EXMEMCNT_L_ROM1st_SHIFT) | \ - ((u32)(ram) << REG_MI_EXMEMCNT_L_RAM_SHIFT)) -#endif - -#define REG_MI_EXMEMCNT_H_PHI33M_SHIFT 7 -#define REG_MI_EXMEMCNT_H_PHI33M_SIZE 1 -#define REG_MI_EXMEMCNT_H_PHI33M_MASK 0x0080 - -#define REG_MI_EXMEMCNT_H_WW1_2nd_SHIFT 5 -#define REG_MI_EXMEMCNT_H_WW1_2nd_SIZE 1 -#define REG_MI_EXMEMCNT_H_WW1_2nd_MASK 0x0020 - -#define REG_MI_EXMEMCNT_H_WW1_1st_SHIFT 3 -#define REG_MI_EXMEMCNT_H_WW1_1st_SIZE 2 -#define REG_MI_EXMEMCNT_H_WW1_1st_MASK 0x0018 - -#define REG_MI_EXMEMCNT_H_WW0_2nd_SHIFT 2 -#define REG_MI_EXMEMCNT_H_WW0_2nd_SIZE 1 -#define REG_MI_EXMEMCNT_H_WW0_2nd_MASK 0x0004 - -#define REG_MI_EXMEMCNT_H_WW0_1st_SHIFT 0 -#define REG_MI_EXMEMCNT_H_WW0_1st_SIZE 2 -#define REG_MI_EXMEMCNT_H_WW0_1st_MASK 0x0003 - -#ifndef SDK_ASM -#define REG_MI_EXMEMCNT_H_FIELD(phi33m, ww1_2nd, ww1_1st, ww0_2nd, ww0_1st) \ - (u16)( \ - ((u32)(phi33m) << REG_MI_EXMEMCNT_H_PHI33M_SHIFT) | \ - ((u32)(ww1_2nd) << REG_MI_EXMEMCNT_H_WW1_2nd_SHIFT) | \ - ((u32)(ww1_1st) << REG_MI_EXMEMCNT_H_WW1_1st_SHIFT) | \ - ((u32)(ww0_2nd) << REG_MI_EXMEMCNT_H_WW0_2nd_SHIFT) | \ - ((u32)(ww0_1st) << REG_MI_EXMEMCNT_H_WW0_1st_SHIFT)) -#endif - -#define REG_MI_WVRAMSTAT_WRAM_1_SHIFT 9 -#define REG_MI_WVRAMSTAT_WRAM_1_SIZE 1 -#define REG_MI_WVRAMSTAT_WRAM_1_MASK 0x0200 - -#define REG_MI_WVRAMSTAT_WRAM_0_SHIFT 8 -#define REG_MI_WVRAMSTAT_WRAM_0_SIZE 1 -#define REG_MI_WVRAMSTAT_WRAM_0_MASK 0x0100 - -#define REG_MI_WVRAMSTAT_VRAM_D_SHIFT 1 -#define REG_MI_WVRAMSTAT_VRAM_D_SIZE 1 -#define REG_MI_WVRAMSTAT_VRAM_D_MASK 0x0002 - -#define REG_MI_WVRAMSTAT_VRAM_C_SHIFT 0 -#define REG_MI_WVRAMSTAT_VRAM_C_SIZE 1 -#define REG_MI_WVRAMSTAT_VRAM_C_MASK 0x0001 - -#ifndef SDK_ASM -#define REG_MI_WVRAMSTAT_FIELD(wram_1, wram_0, vram_d, vram_c) \ - (u16)( \ - ((u32)(wram_1) << REG_MI_WVRAMSTAT_WRAM_1_SHIFT) | \ - ((u32)(wram_0) << REG_MI_WVRAMSTAT_WRAM_0_SHIFT) | \ - ((u32)(vram_d) << REG_MI_WVRAMSTAT_VRAM_D_SHIFT) | \ - ((u32)(vram_c) << REG_MI_WVRAMSTAT_VRAM_C_SHIFT)) -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/hw/ARM7/ioreg_OS.h b/subprojects/NitroSDK/include/nitro/hw/ARM7/ioreg_OS.h deleted file mode 100644 index 088393e7fc..0000000000 --- a/subprojects/NitroSDK/include/nitro/hw/ARM7/ioreg_OS.h +++ /dev/null @@ -1,445 +0,0 @@ -#ifndef NITRO_HW_ARM7_IOREG_OS_H_ -#define NITRO_HW_ARM7_IOREG_OS_H_ - -#ifndef SDK_ASM -#include -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define REG_TM0CNT_L_OFFSET 0x100 -#define REG_TM0CNT_L_ADDR (HW_REG_BASE + REG_TM0CNT_L_OFFSET) -#define reg_OS_TM0CNT_L (*( REGType16v *)REG_TM0CNT_L_ADDR) - -#define REG_TM0CNT_H_OFFSET 0x102 -#define REG_TM0CNT_H_ADDR (HW_REG_BASE + REG_TM0CNT_H_OFFSET) -#define reg_OS_TM0CNT_H (*( REGType16v *)REG_TM0CNT_H_ADDR) - -#define REG_TM1CNT_L_OFFSET 0x104 -#define REG_TM1CNT_L_ADDR (HW_REG_BASE + REG_TM1CNT_L_OFFSET) -#define reg_OS_TM1CNT_L (*( REGType16v *)REG_TM1CNT_L_ADDR) - -#define REG_TM1CNT_H_OFFSET 0x106 -#define REG_TM1CNT_H_ADDR (HW_REG_BASE + REG_TM1CNT_H_OFFSET) -#define reg_OS_TM1CNT_H (*( REGType16v *)REG_TM1CNT_H_ADDR) - -#define REG_TM2CNT_L_OFFSET 0x108 -#define REG_TM2CNT_L_ADDR (HW_REG_BASE + REG_TM2CNT_L_OFFSET) -#define reg_OS_TM2CNT_L (*( REGType16v *)REG_TM2CNT_L_ADDR) - -#define REG_TM2CNT_H_OFFSET 0x10a -#define REG_TM2CNT_H_ADDR (HW_REG_BASE + REG_TM2CNT_H_OFFSET) -#define reg_OS_TM2CNT_H (*( REGType16v *)REG_TM2CNT_H_ADDR) - -#define REG_TM3CNT_L_OFFSET 0x10c -#define REG_TM3CNT_L_ADDR (HW_REG_BASE + REG_TM3CNT_L_OFFSET) -#define reg_OS_TM3CNT_L (*( REGType16v *)REG_TM3CNT_L_ADDR) - -#define REG_TM3CNT_H_OFFSET 0x10e -#define REG_TM3CNT_H_ADDR (HW_REG_BASE + REG_TM3CNT_H_OFFSET) -#define reg_OS_TM3CNT_H (*( REGType16v *)REG_TM3CNT_H_ADDR) - -#define REG_IME_OFFSET 0x208 -#define REG_IME_ADDR (HW_REG_BASE + REG_IME_OFFSET) -#define reg_OS_IME (*( REGType16v *)REG_IME_ADDR) - -#define REG_IE_OFFSET 0x210 -#define REG_IE_ADDR (HW_REG_BASE + REG_IE_OFFSET) -#define reg_OS_IE (*( REGType32v *)REG_IE_ADDR) - -#define REG_IF_OFFSET 0x214 -#define REG_IF_ADDR (HW_REG_BASE + REG_IF_OFFSET) -#define reg_OS_IF (*( REGType32v *)REG_IF_ADDR) - -#define REG_PAUSE_OFFSET 0x300 -#define REG_PAUSE_ADDR (HW_REG_BASE + REG_PAUSE_OFFSET) -#define reg_OS_PAUSE (*( REGType16v *)REG_PAUSE_ADDR) - -#define REG_OS_TM0CNT_L_TIMER0CNT_SHIFT 0 -#define REG_OS_TM0CNT_L_TIMER0CNT_SIZE 16 -#define REG_OS_TM0CNT_L_TIMER0CNT_MASK 0xffff - -#ifndef SDK_ASM -#define REG_OS_TM0CNT_L_FIELD(timer0cnt) \ - (u16)( \ - ((u32)(timer0cnt) << REG_OS_TM0CNT_L_TIMER0CNT_SHIFT)) -#endif - -#define REG_OS_TM0CNT_H_E_SHIFT 7 -#define REG_OS_TM0CNT_H_E_SIZE 1 -#define REG_OS_TM0CNT_H_E_MASK 0x0080 - -#define REG_OS_TM0CNT_H_I_SHIFT 6 -#define REG_OS_TM0CNT_H_I_SIZE 1 -#define REG_OS_TM0CNT_H_I_MASK 0x0040 - -#define REG_OS_TM0CNT_H_PS_SHIFT 0 -#define REG_OS_TM0CNT_H_PS_SIZE 2 -#define REG_OS_TM0CNT_H_PS_MASK 0x0003 - -#ifndef SDK_ASM -#define REG_OS_TM0CNT_H_FIELD(e, i, ps) \ - (u16)( \ - ((u32)(e) << REG_OS_TM0CNT_H_E_SHIFT) | \ - ((u32)(i) << REG_OS_TM0CNT_H_I_SHIFT) | \ - ((u32)(ps) << REG_OS_TM0CNT_H_PS_SHIFT)) -#endif - -#define REG_OS_TM1CNT_L_TIMER1CNT_SHIFT 0 -#define REG_OS_TM1CNT_L_TIMER1CNT_SIZE 16 -#define REG_OS_TM1CNT_L_TIMER1CNT_MASK 0xffff - -#ifndef SDK_ASM -#define REG_OS_TM1CNT_L_FIELD(timer1cnt) \ - (u16)( \ - ((u32)(timer1cnt) << REG_OS_TM1CNT_L_TIMER1CNT_SHIFT)) -#endif - -#define REG_OS_TM1CNT_H_E_SHIFT 7 -#define REG_OS_TM1CNT_H_E_SIZE 1 -#define REG_OS_TM1CNT_H_E_MASK 0x0080 - -#define REG_OS_TM1CNT_H_I_SHIFT 6 -#define REG_OS_TM1CNT_H_I_SIZE 1 -#define REG_OS_TM1CNT_H_I_MASK 0x0040 - -#define REG_OS_TM1CNT_H_CH_SHIFT 2 -#define REG_OS_TM1CNT_H_CH_SIZE 1 -#define REG_OS_TM1CNT_H_CH_MASK 0x0004 - -#define REG_OS_TM1CNT_H_PS_SHIFT 0 -#define REG_OS_TM1CNT_H_PS_SIZE 2 -#define REG_OS_TM1CNT_H_PS_MASK 0x0003 - -#ifndef SDK_ASM -#define REG_OS_TM1CNT_H_FIELD(e, i, ch, ps) \ - (u16)( \ - ((u32)(e) << REG_OS_TM1CNT_H_E_SHIFT) | \ - ((u32)(i) << REG_OS_TM1CNT_H_I_SHIFT) | \ - ((u32)(ch) << REG_OS_TM1CNT_H_CH_SHIFT) | \ - ((u32)(ps) << REG_OS_TM1CNT_H_PS_SHIFT)) -#endif - -#define REG_OS_TM2CNT_L_TIMER2CNT_SHIFT 0 -#define REG_OS_TM2CNT_L_TIMER2CNT_SIZE 16 -#define REG_OS_TM2CNT_L_TIMER2CNT_MASK 0xffff - -#ifndef SDK_ASM -#define REG_OS_TM2CNT_L_FIELD(timer2cnt) \ - (u16)( \ - ((u32)(timer2cnt) << REG_OS_TM2CNT_L_TIMER2CNT_SHIFT)) -#endif - -#define REG_OS_TM2CNT_H_E_SHIFT 7 -#define REG_OS_TM2CNT_H_E_SIZE 1 -#define REG_OS_TM2CNT_H_E_MASK 0x0080 - -#define REG_OS_TM2CNT_H_I_SHIFT 6 -#define REG_OS_TM2CNT_H_I_SIZE 1 -#define REG_OS_TM2CNT_H_I_MASK 0x0040 - -#define REG_OS_TM2CNT_H_CH_SHIFT 2 -#define REG_OS_TM2CNT_H_CH_SIZE 1 -#define REG_OS_TM2CNT_H_CH_MASK 0x0004 - -#define REG_OS_TM2CNT_H_PS_SHIFT 0 -#define REG_OS_TM2CNT_H_PS_SIZE 2 -#define REG_OS_TM2CNT_H_PS_MASK 0x0003 - -#ifndef SDK_ASM -#define REG_OS_TM2CNT_H_FIELD(e, i, ch, ps) \ - (u16)( \ - ((u32)(e) << REG_OS_TM2CNT_H_E_SHIFT) | \ - ((u32)(i) << REG_OS_TM2CNT_H_I_SHIFT) | \ - ((u32)(ch) << REG_OS_TM2CNT_H_CH_SHIFT) | \ - ((u32)(ps) << REG_OS_TM2CNT_H_PS_SHIFT)) -#endif - -#define REG_OS_TM3CNT_L_TIMER2CNT_SHIFT 0 -#define REG_OS_TM3CNT_L_TIMER2CNT_SIZE 16 -#define REG_OS_TM3CNT_L_TIMER2CNT_MASK 0xffff - -#ifndef SDK_ASM -#define REG_OS_TM3CNT_L_FIELD(timer2cnt) \ - (u16)( \ - ((u32)(timer2cnt) << REG_OS_TM3CNT_L_TIMER2CNT_SHIFT)) -#endif - -#define REG_OS_TM3CNT_H_E_SHIFT 7 -#define REG_OS_TM3CNT_H_E_SIZE 1 -#define REG_OS_TM3CNT_H_E_MASK 0x0080 - -#define REG_OS_TM3CNT_H_I_SHIFT 6 -#define REG_OS_TM3CNT_H_I_SIZE 1 -#define REG_OS_TM3CNT_H_I_MASK 0x0040 - -#define REG_OS_TM3CNT_H_CH_SHIFT 2 -#define REG_OS_TM3CNT_H_CH_SIZE 1 -#define REG_OS_TM3CNT_H_CH_MASK 0x0004 - -#define REG_OS_TM3CNT_H_PS_SHIFT 0 -#define REG_OS_TM3CNT_H_PS_SIZE 2 -#define REG_OS_TM3CNT_H_PS_MASK 0x0003 - -#ifndef SDK_ASM -#define REG_OS_TM3CNT_H_FIELD(e, i, ch, ps) \ - (u16)( \ - ((u32)(e) << REG_OS_TM3CNT_H_E_SHIFT) | \ - ((u32)(i) << REG_OS_TM3CNT_H_I_SHIFT) | \ - ((u32)(ch) << REG_OS_TM3CNT_H_CH_SHIFT) | \ - ((u32)(ps) << REG_OS_TM3CNT_H_PS_SHIFT)) -#endif - -#define REG_OS_IME_IME_SHIFT 0 -#define REG_OS_IME_IME_SIZE 1 -#define REG_OS_IME_IME_MASK 0x0001 - -#ifndef SDK_ASM -#define REG_OS_IME_FIELD(ime) \ - (u16)( \ - ((u32)(ime) << REG_OS_IME_IME_SHIFT)) -#endif - -#define REG_OS_IE_WL_SHIFT 24 -#define REG_OS_IE_WL_SIZE 1 -#define REG_OS_IE_WL_MASK 0x01000000 - -#define REG_OS_IE_SPI_SHIFT 23 -#define REG_OS_IE_SPI_SIZE 1 -#define REG_OS_IE_SPI_MASK 0x00800000 - -#define REG_OS_IE_PM_SHIFT 22 -#define REG_OS_IE_PM_SIZE 1 -#define REG_OS_IE_PM_MASK 0x00400000 - -#define REG_OS_IE_MI_SHIFT 20 -#define REG_OS_IE_MI_SIZE 1 -#define REG_OS_IE_MI_MASK 0x00100000 - -#define REG_OS_IE_MC_SHIFT 19 -#define REG_OS_IE_MC_SIZE 1 -#define REG_OS_IE_MC_MASK 0x00080000 - -#define REG_OS_IE_IFN_SHIFT 18 -#define REG_OS_IE_IFN_SIZE 1 -#define REG_OS_IE_IFN_MASK 0x00040000 - -#define REG_OS_IE_IFE_SHIFT 17 -#define REG_OS_IE_IFE_SIZE 1 -#define REG_OS_IE_IFE_MASK 0x00020000 - -#define REG_OS_IE_A7_SHIFT 16 -#define REG_OS_IE_A7_SIZE 1 -#define REG_OS_IE_A7_MASK 0x00010000 - -#define REG_OS_IE_I_D_SHIFT 13 -#define REG_OS_IE_I_D_SIZE 1 -#define REG_OS_IE_I_D_MASK 0x00002000 - -#define REG_OS_IE_K_SHIFT 12 -#define REG_OS_IE_K_SIZE 1 -#define REG_OS_IE_K_MASK 0x00001000 - -#define REG_OS_IE_D3_SHIFT 11 -#define REG_OS_IE_D3_SIZE 1 -#define REG_OS_IE_D3_MASK 0x00000800 - -#define REG_OS_IE_D2_SHIFT 10 -#define REG_OS_IE_D2_SIZE 1 -#define REG_OS_IE_D2_MASK 0x00000400 - -#define REG_OS_IE_D1_SHIFT 9 -#define REG_OS_IE_D1_SIZE 1 -#define REG_OS_IE_D1_MASK 0x00000200 - -#define REG_OS_IE_D0_SHIFT 8 -#define REG_OS_IE_D0_SIZE 1 -#define REG_OS_IE_D0_MASK 0x00000100 - -#define REG_OS_IE_T3_SHIFT 6 -#define REG_OS_IE_T3_SIZE 1 -#define REG_OS_IE_T3_MASK 0x00000040 - -#define REG_OS_IE_T2_SHIFT 5 -#define REG_OS_IE_T2_SIZE 1 -#define REG_OS_IE_T2_MASK 0x00000020 - -#define REG_OS_IE_T1_SHIFT 4 -#define REG_OS_IE_T1_SIZE 1 -#define REG_OS_IE_T1_MASK 0x00000010 - -#define REG_OS_IE_T0_SHIFT 3 -#define REG_OS_IE_T0_SIZE 1 -#define REG_OS_IE_T0_MASK 0x00000008 - -#define REG_OS_IE_VE_SHIFT 2 -#define REG_OS_IE_VE_SIZE 1 -#define REG_OS_IE_VE_MASK 0x00000004 - -#define REG_OS_IE_HB_SHIFT 1 -#define REG_OS_IE_HB_SIZE 1 -#define REG_OS_IE_HB_MASK 0x00000002 - -#define REG_OS_IE_VB_SHIFT 0 -#define REG_OS_IE_VB_SIZE 1 -#define REG_OS_IE_VB_MASK 0x00000001 - -#ifndef SDK_ASM -#define REG_OS_IE_FIELD(wl, spi, pm, mi, mc, ifn, ife, a7, i_d, k, d3, d2, d1, d0, t3, t2, t1, t0, ve, hb, vb) \ - (u32)( \ - ((u32)(wl) << REG_OS_IE_WL_SHIFT) | \ - ((u32)(spi) << REG_OS_IE_SPI_SHIFT) | \ - ((u32)(pm) << REG_OS_IE_PM_SHIFT) | \ - ((u32)(mi) << REG_OS_IE_MI_SHIFT) | \ - ((u32)(mc) << REG_OS_IE_MC_SHIFT) | \ - ((u32)(ifn) << REG_OS_IE_IFN_SHIFT) | \ - ((u32)(ife) << REG_OS_IE_IFE_SHIFT) | \ - ((u32)(a7) << REG_OS_IE_A7_SHIFT) | \ - ((u32)(i_d) << REG_OS_IE_I_D_SHIFT) | \ - ((u32)(k) << REG_OS_IE_K_SHIFT) | \ - ((u32)(d3) << REG_OS_IE_D3_SHIFT) | \ - ((u32)(d2) << REG_OS_IE_D2_SHIFT) | \ - ((u32)(d1) << REG_OS_IE_D1_SHIFT) | \ - ((u32)(d0) << REG_OS_IE_D0_SHIFT) | \ - ((u32)(t3) << REG_OS_IE_T3_SHIFT) | \ - ((u32)(t2) << REG_OS_IE_T2_SHIFT) | \ - ((u32)(t1) << REG_OS_IE_T1_SHIFT) | \ - ((u32)(t0) << REG_OS_IE_T0_SHIFT) | \ - ((u32)(ve) << REG_OS_IE_VE_SHIFT) | \ - ((u32)(hb) << REG_OS_IE_HB_SHIFT) | \ - ((u32)(vb) << REG_OS_IE_VB_SHIFT)) -#endif - -#define REG_OS_IF_WL_SHIFT 24 -#define REG_OS_IF_WL_SIZE 1 -#define REG_OS_IF_WL_MASK 0x01000000 - -#define REG_OS_IF_SPI_SHIFT 23 -#define REG_OS_IF_SPI_SIZE 1 -#define REG_OS_IF_SPI_MASK 0x00800000 - -#define REG_OS_IF_PM_SHIFT 22 -#define REG_OS_IF_PM_SIZE 1 -#define REG_OS_IF_PM_MASK 0x00400000 - -#define REG_OS_IF_MI_SHIFT 20 -#define REG_OS_IF_MI_SIZE 1 -#define REG_OS_IF_MI_MASK 0x00100000 - -#define REG_OS_IF_MC_SHIFT 19 -#define REG_OS_IF_MC_SIZE 1 -#define REG_OS_IF_MC_MASK 0x00080000 - -#define REG_OS_IF_IFN_SHIFT 18 -#define REG_OS_IF_IFN_SIZE 1 -#define REG_OS_IF_IFN_MASK 0x00040000 - -#define REG_OS_IF_IFE_SHIFT 17 -#define REG_OS_IF_IFE_SIZE 1 -#define REG_OS_IF_IFE_MASK 0x00020000 - -#define REG_OS_IF_A7_SHIFT 16 -#define REG_OS_IF_A7_SIZE 1 -#define REG_OS_IF_A7_MASK 0x00010000 - -#define REG_OS_IF_I_D_SHIFT 13 -#define REG_OS_IF_I_D_SIZE 1 -#define REG_OS_IF_I_D_MASK 0x00002000 - -#define REG_OS_IF_K_SHIFT 12 -#define REG_OS_IF_K_SIZE 1 -#define REG_OS_IF_K_MASK 0x00001000 - -#define REG_OS_IF_D3_SHIFT 11 -#define REG_OS_IF_D3_SIZE 1 -#define REG_OS_IF_D3_MASK 0x00000800 - -#define REG_OS_IF_D2_SHIFT 10 -#define REG_OS_IF_D2_SIZE 1 -#define REG_OS_IF_D2_MASK 0x00000400 - -#define REG_OS_IF_D1_SHIFT 9 -#define REG_OS_IF_D1_SIZE 1 -#define REG_OS_IF_D1_MASK 0x00000200 - -#define REG_OS_IF_D0_SHIFT 8 -#define REG_OS_IF_D0_SIZE 1 -#define REG_OS_IF_D0_MASK 0x00000100 - -#define REG_OS_IF_T3_SHIFT 6 -#define REG_OS_IF_T3_SIZE 1 -#define REG_OS_IF_T3_MASK 0x00000040 - -#define REG_OS_IF_T2_SHIFT 5 -#define REG_OS_IF_T2_SIZE 1 -#define REG_OS_IF_T2_MASK 0x00000020 - -#define REG_OS_IF_T1_SHIFT 4 -#define REG_OS_IF_T1_SIZE 1 -#define REG_OS_IF_T1_MASK 0x00000010 - -#define REG_OS_IF_T0_SHIFT 3 -#define REG_OS_IF_T0_SIZE 1 -#define REG_OS_IF_T0_MASK 0x00000008 - -#define REG_OS_IF_VE_SHIFT 2 -#define REG_OS_IF_VE_SIZE 1 -#define REG_OS_IF_VE_MASK 0x00000004 - -#define REG_OS_IF_HB_SHIFT 1 -#define REG_OS_IF_HB_SIZE 1 -#define REG_OS_IF_HB_MASK 0x00000002 - -#define REG_OS_IF_VB_SHIFT 0 -#define REG_OS_IF_VB_SIZE 1 -#define REG_OS_IF_VB_MASK 0x00000001 - -#ifndef SDK_ASM -#define REG_OS_IF_FIELD(wl, spi, pm, mi, mc, ifn, ife, a7, i_d, k, d3, d2, d1, d0, t3, t2, t1, t0, ve, hb, vb) \ - (u32)( \ - ((u32)(wl) << REG_OS_IF_WL_SHIFT) | \ - ((u32)(spi) << REG_OS_IF_SPI_SHIFT) | \ - ((u32)(pm) << REG_OS_IF_PM_SHIFT) | \ - ((u32)(mi) << REG_OS_IF_MI_SHIFT) | \ - ((u32)(mc) << REG_OS_IF_MC_SHIFT) | \ - ((u32)(ifn) << REG_OS_IF_IFN_SHIFT) | \ - ((u32)(ife) << REG_OS_IF_IFE_SHIFT) | \ - ((u32)(a7) << REG_OS_IF_A7_SHIFT) | \ - ((u32)(i_d) << REG_OS_IF_I_D_SHIFT) | \ - ((u32)(k) << REG_OS_IF_K_SHIFT) | \ - ((u32)(d3) << REG_OS_IF_D3_SHIFT) | \ - ((u32)(d2) << REG_OS_IF_D2_SHIFT) | \ - ((u32)(d1) << REG_OS_IF_D1_SHIFT) | \ - ((u32)(d0) << REG_OS_IF_D0_SHIFT) | \ - ((u32)(t3) << REG_OS_IF_T3_SHIFT) | \ - ((u32)(t2) << REG_OS_IF_T2_SHIFT) | \ - ((u32)(t1) << REG_OS_IF_T1_SHIFT) | \ - ((u32)(t0) << REG_OS_IF_T0_SHIFT) | \ - ((u32)(ve) << REG_OS_IF_VE_SHIFT) | \ - ((u32)(hb) << REG_OS_IF_HB_SHIFT) | \ - ((u32)(vb) << REG_OS_IF_VB_SHIFT)) -#endif - -#define REG_OS_PAUSE_MOD_SHIFT 14 -#define REG_OS_PAUSE_MOD_SIZE 2 -#define REG_OS_PAUSE_MOD_MASK 0xc000 - -#define REG_OS_PAUSE_CHK_SHIFT 0 -#define REG_OS_PAUSE_CHK_SIZE 1 -#define REG_OS_PAUSE_CHK_MASK 0x0001 - -#ifndef SDK_ASM -#define REG_OS_PAUSE_FIELD(mod, chk) \ - (u16)( \ - ((u32)(mod) << REG_OS_PAUSE_MOD_SHIFT) | \ - ((u32)(chk) << REG_OS_PAUSE_CHK_SHIFT)) -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/hw/ARM7/ioreg_PAD.h b/subprojects/NitroSDK/include/nitro/hw/ARM7/ioreg_PAD.h deleted file mode 100644 index fb12e0eec4..0000000000 --- a/subprojects/NitroSDK/include/nitro/hw/ARM7/ioreg_PAD.h +++ /dev/null @@ -1,145 +0,0 @@ -#ifndef NITRO_HW_ARM7_IOREG_PAD_H_ -#define NITRO_HW_ARM7_IOREG_PAD_H_ - -#ifndef SDK_ASM -#include -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define REG_KEYINPUT_OFFSET 0x130 -#define REG_KEYINPUT_ADDR (HW_REG_BASE + REG_KEYINPUT_OFFSET) -#define reg_PAD_KEYINPUT (*( REGType16v *)REG_KEYINPUT_ADDR) - -#define REG_KEYCNT_OFFSET 0x132 -#define REG_KEYCNT_ADDR (HW_REG_BASE + REG_KEYCNT_OFFSET) -#define reg_PAD_KEYCNT (*( REGType16v *)REG_KEYCNT_ADDR) - -#define REG_PAD_KEYINPUT_L_SHIFT 9 -#define REG_PAD_KEYINPUT_L_SIZE 1 -#define REG_PAD_KEYINPUT_L_MASK 0x0200 - -#define REG_PAD_KEYINPUT_R_SHIFT 8 -#define REG_PAD_KEYINPUT_R_SIZE 1 -#define REG_PAD_KEYINPUT_R_MASK 0x0100 - -#define REG_PAD_KEYINPUT_DOWN_SHIFT 7 -#define REG_PAD_KEYINPUT_DOWN_SIZE 1 -#define REG_PAD_KEYINPUT_DOWN_MASK 0x0080 - -#define REG_PAD_KEYINPUT_UP_SHIFT 6 -#define REG_PAD_KEYINPUT_UP_SIZE 1 -#define REG_PAD_KEYINPUT_UP_MASK 0x0040 - -#define REG_PAD_KEYINPUT_LEFT_SHIFT 5 -#define REG_PAD_KEYINPUT_LEFT_SIZE 1 -#define REG_PAD_KEYINPUT_LEFT_MASK 0x0020 - -#define REG_PAD_KEYINPUT_RIGHT_SHIFT 4 -#define REG_PAD_KEYINPUT_RIGHT_SIZE 1 -#define REG_PAD_KEYINPUT_RIGHT_MASK 0x0010 - -#define REG_PAD_KEYINPUT_START_SHIFT 3 -#define REG_PAD_KEYINPUT_START_SIZE 1 -#define REG_PAD_KEYINPUT_START_MASK 0x0008 - -#define REG_PAD_KEYINPUT_SEL_SHIFT 2 -#define REG_PAD_KEYINPUT_SEL_SIZE 1 -#define REG_PAD_KEYINPUT_SEL_MASK 0x0004 - -#define REG_PAD_KEYINPUT_B_SHIFT 1 -#define REG_PAD_KEYINPUT_B_SIZE 1 -#define REG_PAD_KEYINPUT_B_MASK 0x0002 - -#define REG_PAD_KEYINPUT_A_SHIFT 0 -#define REG_PAD_KEYINPUT_A_SIZE 1 -#define REG_PAD_KEYINPUT_A_MASK 0x0001 - -#ifndef SDK_ASM -#define REG_PAD_KEYINPUT_FIELD(l, r, down, up, left, right, start, sel, b, a) \ - (u16)( \ - ((u32)(l) << REG_PAD_KEYINPUT_L_SHIFT) | \ - ((u32)(r) << REG_PAD_KEYINPUT_R_SHIFT) | \ - ((u32)(down) << REG_PAD_KEYINPUT_DOWN_SHIFT) | \ - ((u32)(up) << REG_PAD_KEYINPUT_UP_SHIFT) | \ - ((u32)(left) << REG_PAD_KEYINPUT_LEFT_SHIFT) | \ - ((u32)(right) << REG_PAD_KEYINPUT_RIGHT_SHIFT) | \ - ((u32)(start) << REG_PAD_KEYINPUT_START_SHIFT) | \ - ((u32)(sel) << REG_PAD_KEYINPUT_SEL_SHIFT) | \ - ((u32)(b) << REG_PAD_KEYINPUT_B_SHIFT) | \ - ((u32)(a) << REG_PAD_KEYINPUT_A_SHIFT)) -#endif - -#define REG_PAD_KEYCNT_LOGIC_SHIFT 15 -#define REG_PAD_KEYCNT_LOGIC_SIZE 1 -#define REG_PAD_KEYCNT_LOGIC_MASK 0x8000 - -#define REG_PAD_KEYCNT_INTR_SHIFT 14 -#define REG_PAD_KEYCNT_INTR_SIZE 1 -#define REG_PAD_KEYCNT_INTR_MASK 0x4000 - -#define REG_PAD_KEYCNT_L_SHIFT 9 -#define REG_PAD_KEYCNT_L_SIZE 1 -#define REG_PAD_KEYCNT_L_MASK 0x0200 - -#define REG_PAD_KEYCNT_R_SHIFT 8 -#define REG_PAD_KEYCNT_R_SIZE 1 -#define REG_PAD_KEYCNT_R_MASK 0x0100 - -#define REG_PAD_KEYCNT_DOWN_SHIFT 7 -#define REG_PAD_KEYCNT_DOWN_SIZE 1 -#define REG_PAD_KEYCNT_DOWN_MASK 0x0080 - -#define REG_PAD_KEYCNT_UP_SHIFT 6 -#define REG_PAD_KEYCNT_UP_SIZE 1 -#define REG_PAD_KEYCNT_UP_MASK 0x0040 - -#define REG_PAD_KEYCNT_LEFT_SHIFT 5 -#define REG_PAD_KEYCNT_LEFT_SIZE 1 -#define REG_PAD_KEYCNT_LEFT_MASK 0x0020 - -#define REG_PAD_KEYCNT_RIGHT_SHIFT 4 -#define REG_PAD_KEYCNT_RIGHT_SIZE 1 -#define REG_PAD_KEYCNT_RIGHT_MASK 0x0010 - -#define REG_PAD_KEYCNT_START_SHIFT 3 -#define REG_PAD_KEYCNT_START_SIZE 1 -#define REG_PAD_KEYCNT_START_MASK 0x0008 - -#define REG_PAD_KEYCNT_SEL_SHIFT 2 -#define REG_PAD_KEYCNT_SEL_SIZE 1 -#define REG_PAD_KEYCNT_SEL_MASK 0x0004 - -#define REG_PAD_KEYCNT_B_SHIFT 1 -#define REG_PAD_KEYCNT_B_SIZE 1 -#define REG_PAD_KEYCNT_B_MASK 0x0002 - -#define REG_PAD_KEYCNT_A_SHIFT 0 -#define REG_PAD_KEYCNT_A_SIZE 1 -#define REG_PAD_KEYCNT_A_MASK 0x0001 - -#ifndef SDK_ASM -#define REG_PAD_KEYCNT_FIELD(logic, intr, l, r, down, up, left, right, start, sel, b, a) \ - (u16)( \ - ((u32)(logic) << REG_PAD_KEYCNT_LOGIC_SHIFT) | \ - ((u32)(intr) << REG_PAD_KEYCNT_INTR_SHIFT) | \ - ((u32)(l) << REG_PAD_KEYCNT_L_SHIFT) | \ - ((u32)(r) << REG_PAD_KEYCNT_R_SHIFT) | \ - ((u32)(down) << REG_PAD_KEYCNT_DOWN_SHIFT) | \ - ((u32)(up) << REG_PAD_KEYCNT_UP_SHIFT) | \ - ((u32)(left) << REG_PAD_KEYCNT_LEFT_SHIFT) | \ - ((u32)(right) << REG_PAD_KEYCNT_RIGHT_SHIFT) | \ - ((u32)(start) << REG_PAD_KEYCNT_START_SHIFT) | \ - ((u32)(sel) << REG_PAD_KEYCNT_SEL_SHIFT) | \ - ((u32)(b) << REG_PAD_KEYCNT_B_SHIFT) | \ - ((u32)(a) << REG_PAD_KEYCNT_A_SHIFT)) -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/hw/ARM7/ioreg_PXI.h b/subprojects/NitroSDK/include/nitro/hw/ARM7/ioreg_PXI.h deleted file mode 100644 index bf007a8784..0000000000 --- a/subprojects/NitroSDK/include/nitro/hw/ARM7/ioreg_PXI.h +++ /dev/null @@ -1,108 +0,0 @@ -#ifndef NITRO_HW_ARM7_IOREG_PXI_H_ -#define NITRO_HW_ARM7_IOREG_PXI_H_ - -#ifndef SDK_ASM -#include -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define REG_MAINPINTF_OFFSET 0x180 -#define REG_MAINPINTF_ADDR (HW_REG_BASE + REG_MAINPINTF_OFFSET) -#define reg_PXI_MAINPINTF (*( REGType16v *)REG_MAINPINTF_ADDR) - -#define REG_MAINP_FIFO_CNT_OFFSET 0x184 -#define REG_MAINP_FIFO_CNT_ADDR (HW_REG_BASE + REG_MAINP_FIFO_CNT_OFFSET) -#define reg_PXI_MAINP_FIFO_CNT (*( REGType16v *)REG_MAINP_FIFO_CNT_ADDR) - -#define REG_SEND_FIFO_OFFSET 0x188 -#define REG_SEND_FIFO_ADDR (HW_REG_BASE + REG_SEND_FIFO_OFFSET) -#define reg_PXI_SEND_FIFO (*( REGType32v *)REG_SEND_FIFO_ADDR) - -#define REG_RECV_FIFO_OFFSET 0x100000 -#define REG_RECV_FIFO_ADDR (HW_REG_BASE + REG_RECV_FIFO_OFFSET) -#define reg_PXI_RECV_FIFO (*( REGType32v *)REG_RECV_FIFO_ADDR) - -#define REG_PXI_MAINPINTF_I_SHIFT 14 -#define REG_PXI_MAINPINTF_I_SIZE 1 -#define REG_PXI_MAINPINTF_I_MASK 0x4000 - -#define REG_PXI_MAINPINTF_IREQ_SHIFT 13 -#define REG_PXI_MAINPINTF_IREQ_SIZE 1 -#define REG_PXI_MAINPINTF_IREQ_MASK 0x2000 - -#define REG_PXI_MAINPINTF_A7STATUS_SHIFT 8 -#define REG_PXI_MAINPINTF_A7STATUS_SIZE 4 -#define REG_PXI_MAINPINTF_A7STATUS_MASK 0x0f00 - -#define REG_PXI_MAINPINTF_A9STATUS_SHIFT 0 -#define REG_PXI_MAINPINTF_A9STATUS_SIZE 4 -#define REG_PXI_MAINPINTF_A9STATUS_MASK 0x000f - -#ifndef SDK_ASM -#define REG_PXI_MAINPINTF_FIELD(i, ireq, a7status, a9status) \ - (u16)( \ - ((u32)(i) << REG_PXI_MAINPINTF_I_SHIFT) | \ - ((u32)(ireq) << REG_PXI_MAINPINTF_IREQ_SHIFT) | \ - ((u32)(a7status) << REG_PXI_MAINPINTF_A7STATUS_SHIFT) | \ - ((u32)(a9status) << REG_PXI_MAINPINTF_A9STATUS_SHIFT)) -#endif - -#define REG_PXI_MAINP_FIFO_CNT_E_SHIFT 15 -#define REG_PXI_MAINP_FIFO_CNT_E_SIZE 1 -#define REG_PXI_MAINP_FIFO_CNT_E_MASK 0x8000 - -#define REG_PXI_MAINP_FIFO_CNT_ERR_SHIFT 14 -#define REG_PXI_MAINP_FIFO_CNT_ERR_SIZE 1 -#define REG_PXI_MAINP_FIFO_CNT_ERR_MASK 0x4000 - -#define REG_PXI_MAINP_FIFO_CNT_RECV_RI_SHIFT 10 -#define REG_PXI_MAINP_FIFO_CNT_RECV_RI_SIZE 1 -#define REG_PXI_MAINP_FIFO_CNT_RECV_RI_MASK 0x0400 - -#define REG_PXI_MAINP_FIFO_CNT_RECV_FULL_SHIFT 9 -#define REG_PXI_MAINP_FIFO_CNT_RECV_FULL_SIZE 1 -#define REG_PXI_MAINP_FIFO_CNT_RECV_FULL_MASK 0x0200 - -#define REG_PXI_MAINP_FIFO_CNT_RECV_EMP_SHIFT 8 -#define REG_PXI_MAINP_FIFO_CNT_RECV_EMP_SIZE 1 -#define REG_PXI_MAINP_FIFO_CNT_RECV_EMP_MASK 0x0100 - -#define REG_PXI_MAINP_FIFO_CNT_SEND_CL_SHIFT 3 -#define REG_PXI_MAINP_FIFO_CNT_SEND_CL_SIZE 1 -#define REG_PXI_MAINP_FIFO_CNT_SEND_CL_MASK 0x0008 - -#define REG_PXI_MAINP_FIFO_CNT_SEND_TI_SHIFT 2 -#define REG_PXI_MAINP_FIFO_CNT_SEND_TI_SIZE 1 -#define REG_PXI_MAINP_FIFO_CNT_SEND_TI_MASK 0x0004 - -#define REG_PXI_MAINP_FIFO_CNT_SEND_FULL_SHIFT 1 -#define REG_PXI_MAINP_FIFO_CNT_SEND_FULL_SIZE 1 -#define REG_PXI_MAINP_FIFO_CNT_SEND_FULL_MASK 0x0002 - -#define REG_PXI_MAINP_FIFO_CNT_SEND_EMP_SHIFT 0 -#define REG_PXI_MAINP_FIFO_CNT_SEND_EMP_SIZE 1 -#define REG_PXI_MAINP_FIFO_CNT_SEND_EMP_MASK 0x0001 - -#ifndef SDK_ASM -#define REG_PXI_MAINP_FIFO_CNT_FIELD(e, err, recv_ri, recv_full, recv_emp, send_cl, send_ti, send_full, send_emp) \ - (u16)( \ - ((u32)(e) << REG_PXI_MAINP_FIFO_CNT_E_SHIFT) | \ - ((u32)(err) << REG_PXI_MAINP_FIFO_CNT_ERR_SHIFT) | \ - ((u32)(recv_ri) << REG_PXI_MAINP_FIFO_CNT_RECV_RI_SHIFT) | \ - ((u32)(recv_full) << REG_PXI_MAINP_FIFO_CNT_RECV_FULL_SHIFT) | \ - ((u32)(recv_emp) << REG_PXI_MAINP_FIFO_CNT_RECV_EMP_SHIFT) | \ - ((u32)(send_cl) << REG_PXI_MAINP_FIFO_CNT_SEND_CL_SHIFT) | \ - ((u32)(send_ti) << REG_PXI_MAINP_FIFO_CNT_SEND_TI_SHIFT) | \ - ((u32)(send_full) << REG_PXI_MAINP_FIFO_CNT_SEND_FULL_SHIFT) | \ - ((u32)(send_emp) << REG_PXI_MAINP_FIFO_CNT_SEND_EMP_SHIFT)) -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/hw/ARM7/ioreg_SND.h b/subprojects/NitroSDK/include/nitro/hw/ARM7/ioreg_SND.h deleted file mode 100644 index 6946297c43..0000000000 --- a/subprojects/NitroSDK/include/nitro/hw/ARM7/ioreg_SND.h +++ /dev/null @@ -1,492 +0,0 @@ -#ifndef NITRO_HW_ARM7_IOREG_SND_H_ -#define NITRO_HW_ARM7_IOREG_SND_H_ - -#ifndef SDK_ASM -#include -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define REG_POWCNT_OFFSET 0x304 -#define REG_POWCNT_ADDR (HW_REG_BASE + REG_POWCNT_OFFSET) -#define reg_SND_POWCNT (*( REGType16v *)REG_POWCNT_ADDR) - -#define REG_SOUND0CNT_OFFSET 0x400 -#define REG_SOUND0CNT_ADDR (HW_REG_BASE + REG_SOUND0CNT_OFFSET) -#define reg_SND_SOUND0CNT (*( REGType32v *)REG_SOUND0CNT_ADDR) - -#define REG_SOUND0CNT_VOL_16_OFFSET 0x400 -#define REG_SOUND0CNT_VOL_16_ADDR (HW_REG_BASE + REG_SOUND0CNT_VOL_16_OFFSET) -#define reg_SND_SOUND0CNT_VOL_16 (*( REGType16v *)REG_SOUND0CNT_VOL_16_ADDR) - -#define REG_SOUND0CNT_VOL_OFFSET 0x400 -#define REG_SOUND0CNT_VOL_ADDR (HW_REG_BASE + REG_SOUND0CNT_VOL_OFFSET) -#define reg_SND_SOUND0CNT_VOL (*( REGType8v *)REG_SOUND0CNT_VOL_ADDR) - -#define REG_SOUND0CNT_PAN_OFFSET 0x402 -#define REG_SOUND0CNT_PAN_ADDR (HW_REG_BASE + REG_SOUND0CNT_PAN_OFFSET) -#define reg_SND_SOUND0CNT_PAN (*( REGType8v *)REG_SOUND0CNT_PAN_ADDR) - -#define REG_SOUND0CNT_8_OFFSET 0x403 -#define REG_SOUND0CNT_8_ADDR (HW_REG_BASE + REG_SOUND0CNT_8_OFFSET) -#define reg_SND_SOUND0CNT_8 (*( REGType8v *)REG_SOUND0CNT_8_ADDR) - -#define REG_SOUND0SAD_OFFSET 0x404 -#define REG_SOUND0SAD_ADDR (HW_REG_BASE + REG_SOUND0SAD_OFFSET) -#define reg_SND_SOUND0SAD (*( REGType32v *)REG_SOUND0SAD_ADDR) - -#define REG_SOUND0TMR_OFFSET 0x408 -#define REG_SOUND0TMR_ADDR (HW_REG_BASE + REG_SOUND0TMR_OFFSET) -#define reg_SND_SOUND0TMR (*( REGType16v *)REG_SOUND0TMR_ADDR) - -#define REG_SOUND0RPT_PT_OFFSET 0x40a -#define REG_SOUND0RPT_PT_ADDR (HW_REG_BASE + REG_SOUND0RPT_PT_OFFSET) -#define reg_SND_SOUND0RPT_PT (*( REGType16v *)REG_SOUND0RPT_PT_ADDR) - -#define REG_SOUND0RPT_LEN_OFFSET 0x40c -#define REG_SOUND0RPT_LEN_ADDR (HW_REG_BASE + REG_SOUND0RPT_LEN_OFFSET) -#define reg_SND_SOUND0RPT_LEN (*( REGType32v *)REG_SOUND0RPT_LEN_ADDR) - -#define REG_SOUNDCNT_OFFSET 0x500 -#define REG_SOUNDCNT_ADDR (HW_REG_BASE + REG_SOUNDCNT_OFFSET) -#define reg_SND_SOUNDCNT (*( REGType16v *)REG_SOUNDCNT_ADDR) - -#define REG_SOUNDCNT_8_OFFSET 0x501 -#define REG_SOUNDCNT_8_ADDR (HW_REG_BASE + REG_SOUNDCNT_8_OFFSET) -#define reg_SND_SOUNDCNT_8 (*( REGType8v *)REG_SOUNDCNT_8_ADDR) - -#define REG_SOUNDCNT_VOL_OFFSET 0x500 -#define REG_SOUNDCNT_VOL_ADDR (HW_REG_BASE + REG_SOUNDCNT_VOL_OFFSET) -#define reg_SND_SOUNDCNT_VOL (*( REGType8v *)REG_SOUNDCNT_VOL_ADDR) - -#define REG_SNDCAPCNT_OFFSET 0x508 -#define REG_SNDCAPCNT_ADDR (HW_REG_BASE + REG_SNDCAPCNT_OFFSET) -#define reg_SND_SNDCAPCNT (*( REGType16v *)REG_SNDCAPCNT_ADDR) - -#define REG_SNDCAP0CNT_OFFSET 0x508 -#define REG_SNDCAP0CNT_ADDR (HW_REG_BASE + REG_SNDCAP0CNT_OFFSET) -#define reg_SND_SNDCAP0CNT (*( REGType8v *)REG_SNDCAP0CNT_ADDR) - -#define REG_SNDCAP1CNT_OFFSET 0x509 -#define REG_SNDCAP1CNT_ADDR (HW_REG_BASE + REG_SNDCAP1CNT_OFFSET) -#define reg_SND_SNDCAP1CNT (*( REGType8v *)REG_SNDCAP1CNT_ADDR) - -#define REG_SNDCAP0DAD_OFFSET 0x510 -#define REG_SNDCAP0DAD_ADDR (HW_REG_BASE + REG_SNDCAP0DAD_OFFSET) -#define reg_SND_SNDCAP0DAD (*( REGType32v *)REG_SNDCAP0DAD_ADDR) - -#define REG_SNDCAP0LEN_OFFSET 0x514 -#define REG_SNDCAP0LEN_ADDR (HW_REG_BASE + REG_SNDCAP0LEN_OFFSET) -#define reg_SND_SNDCAP0LEN (*( REGType16v *)REG_SNDCAP0LEN_ADDR) - -#define REG_SNDCAP1DAD_OFFSET 0x518 -#define REG_SNDCAP1DAD_ADDR (HW_REG_BASE + REG_SNDCAP1DAD_OFFSET) -#define reg_SND_SNDCAP1DAD (*( REGType32v *)REG_SNDCAP1DAD_ADDR) - -#define REG_SNDCAP1LEN_OFFSET 0x51c -#define REG_SNDCAP1LEN_ADDR (HW_REG_BASE + REG_SNDCAP1LEN_OFFSET) -#define reg_SND_SNDCAP1LEN (*( REGType16v *)REG_SNDCAP1LEN_ADDR) - -#define REG_SND_POWCNT_EWL_SHIFT 1 -#define REG_SND_POWCNT_EWL_SIZE 1 -#define REG_SND_POWCNT_EWL_MASK 0x0002 - -#define REG_SND_POWCNT_SPE_SHIFT 0 -#define REG_SND_POWCNT_SPE_SIZE 1 -#define REG_SND_POWCNT_SPE_MASK 0x0001 - -#ifndef SDK_ASM -#define REG_SND_POWCNT_FIELD(ewl, spe) \ - (u16)( \ - ((u32)(ewl) << REG_SND_POWCNT_EWL_SHIFT) | \ - ((u32)(spe) << REG_SND_POWCNT_SPE_SHIFT)) -#endif - -#define REG_SND_SOUND0CNT_E_SHIFT 31 -#define REG_SND_SOUND0CNT_E_SIZE 1 -#define REG_SND_SOUND0CNT_E_MASK 0x80000000 - -#define REG_SND_SOUND0CNT_FORMAT_SHIFT 29 -#define REG_SND_SOUND0CNT_FORMAT_SIZE 2 -#define REG_SND_SOUND0CNT_FORMAT_MASK 0x60000000 - -#define REG_SND_SOUND0CNT_REPEAT_SHIFT 27 -#define REG_SND_SOUND0CNT_REPEAT_SIZE 2 -#define REG_SND_SOUND0CNT_REPEAT_MASK 0x18000000 - -#define REG_SND_SOUND0CNT_DUTY_SHIFT 24 -#define REG_SND_SOUND0CNT_DUTY_SIZE 3 -#define REG_SND_SOUND0CNT_DUTY_MASK 0x07000000 - -#define REG_SND_SOUND0CNT_PAN_SHIFT 16 -#define REG_SND_SOUND0CNT_PAN_SIZE 7 -#define REG_SND_SOUND0CNT_PAN_MASK 0x007f0000 - -#define REG_SND_SOUND0CNT_HOLD_SHIFT 15 -#define REG_SND_SOUND0CNT_HOLD_SIZE 1 -#define REG_SND_SOUND0CNT_HOLD_MASK 0x00008000 - -#define REG_SND_SOUND0CNT_SHIFT_SHIFT 8 -#define REG_SND_SOUND0CNT_SHIFT_SIZE 2 -#define REG_SND_SOUND0CNT_SHIFT_MASK 0x00000300 - -#define REG_SND_SOUND0CNT_VOLUME_SHIFT 0 -#define REG_SND_SOUND0CNT_VOLUME_SIZE 7 -#define REG_SND_SOUND0CNT_VOLUME_MASK 0x0000007f - -#ifndef SDK_ASM -#define REG_SND_SOUND0CNT_FIELD(e, format, repeat, duty, pan, hold, shift, volume) \ - (u32)( \ - ((u32)(e) << REG_SND_SOUND0CNT_E_SHIFT) | \ - ((u32)(format) << REG_SND_SOUND0CNT_FORMAT_SHIFT) | \ - ((u32)(repeat) << REG_SND_SOUND0CNT_REPEAT_SHIFT) | \ - ((u32)(duty) << REG_SND_SOUND0CNT_DUTY_SHIFT) | \ - ((u32)(pan) << REG_SND_SOUND0CNT_PAN_SHIFT) | \ - ((u32)(hold) << REG_SND_SOUND0CNT_HOLD_SHIFT) | \ - ((u32)(shift) << REG_SND_SOUND0CNT_SHIFT_SHIFT) | \ - ((u32)(volume) << REG_SND_SOUND0CNT_VOLUME_SHIFT)) -#endif - -#define REG_SND_SOUND0CNT_VOL_16_HOLD_SHIFT 15 -#define REG_SND_SOUND0CNT_VOL_16_HOLD_SIZE 1 -#define REG_SND_SOUND0CNT_VOL_16_HOLD_MASK 0x8000 - -#define REG_SND_SOUND0CNT_VOL_16_SHIFT_SHIFT 8 -#define REG_SND_SOUND0CNT_VOL_16_SHIFT_SIZE 2 -#define REG_SND_SOUND0CNT_VOL_16_SHIFT_MASK 0x0300 - -#define REG_SND_SOUND0CNT_VOL_16_VOLUME_SHIFT 0 -#define REG_SND_SOUND0CNT_VOL_16_VOLUME_SIZE 7 -#define REG_SND_SOUND0CNT_VOL_16_VOLUME_MASK 0x007f - -#ifndef SDK_ASM -#define REG_SND_SOUND0CNT_VOL_16_FIELD(hold, shift, volume) \ - (u16)( \ - ((u32)(hold) << REG_SND_SOUND0CNT_VOL_16_HOLD_SHIFT) | \ - ((u32)(shift) << REG_SND_SOUND0CNT_VOL_16_SHIFT_SHIFT) | \ - ((u32)(volume) << REG_SND_SOUND0CNT_VOL_16_VOLUME_SHIFT)) -#endif - -#define REG_SND_SOUND0CNT_VOL_VOLUME_SHIFT 0 -#define REG_SND_SOUND0CNT_VOL_VOLUME_SIZE 7 -#define REG_SND_SOUND0CNT_VOL_VOLUME_MASK 0x7f - -#ifndef SDK_ASM -#define REG_SND_SOUND0CNT_VOL_FIELD(volume) \ - (u8)( \ - ((u32)(volume) << REG_SND_SOUND0CNT_VOL_VOLUME_SHIFT)) -#endif - -#define REG_SND_SOUND0CNT_PAN_PAN_SHIFT 0 -#define REG_SND_SOUND0CNT_PAN_PAN_SIZE 7 -#define REG_SND_SOUND0CNT_PAN_PAN_MASK 0x7f - -#ifndef SDK_ASM -#define REG_SND_SOUND0CNT_PAN_FIELD(pan) \ - (u8)( \ - ((u32)(pan) << REG_SND_SOUND0CNT_PAN_PAN_SHIFT)) -#endif - -#define REG_SND_SOUND0CNT_8_E_SHIFT 7 -#define REG_SND_SOUND0CNT_8_E_SIZE 1 -#define REG_SND_SOUND0CNT_8_E_MASK 0x80 - -#define REG_SND_SOUND0CNT_8_FORMAT_SHIFT 5 -#define REG_SND_SOUND0CNT_8_FORMAT_SIZE 2 -#define REG_SND_SOUND0CNT_8_FORMAT_MASK 0x60 - -#define REG_SND_SOUND0CNT_8_REPEAT_SHIFT 3 -#define REG_SND_SOUND0CNT_8_REPEAT_SIZE 2 -#define REG_SND_SOUND0CNT_8_REPEAT_MASK 0x18 - -#define REG_SND_SOUND0CNT_8_DUTY_SHIFT 0 -#define REG_SND_SOUND0CNT_8_DUTY_SIZE 3 -#define REG_SND_SOUND0CNT_8_DUTY_MASK 0x07 - -#ifndef SDK_ASM -#define REG_SND_SOUND0CNT_8_FIELD(e, format, repeat, duty) \ - (u8)( \ - ((u32)(e) << REG_SND_SOUND0CNT_8_E_SHIFT) | \ - ((u32)(format) << REG_SND_SOUND0CNT_8_FORMAT_SHIFT) | \ - ((u32)(repeat) << REG_SND_SOUND0CNT_8_REPEAT_SHIFT) | \ - ((u32)(duty) << REG_SND_SOUND0CNT_8_DUTY_SHIFT)) -#endif - -#define REG_SND_SOUND0SAD_SRC_SHIFT 0 -#define REG_SND_SOUND0SAD_SRC_SIZE 27 -#define REG_SND_SOUND0SAD_SRC_MASK 0x07ffffff - -#ifndef SDK_ASM -#define REG_SND_SOUND0SAD_FIELD(src) \ - (u32)( \ - ((u32)(src) << REG_SND_SOUND0SAD_SRC_SHIFT)) -#endif - -#define REG_SND_SOUND0TMR_TIMER_SHIFT 0 -#define REG_SND_SOUND0TMR_TIMER_SIZE 16 -#define REG_SND_SOUND0TMR_TIMER_MASK 0xffff - -#ifndef SDK_ASM -#define REG_SND_SOUND0TMR_FIELD(timer) \ - (u16)( \ - ((u32)(timer) << REG_SND_SOUND0TMR_TIMER_SHIFT)) -#endif - -#define REG_SND_SOUND0RPT_PT_POINT_SHIFT 0 -#define REG_SND_SOUND0RPT_PT_POINT_SIZE 16 -#define REG_SND_SOUND0RPT_PT_POINT_MASK 0xffff - -#ifndef SDK_ASM -#define REG_SND_SOUND0RPT_PT_FIELD(point) \ - (u16)( \ - ((u32)(point) << REG_SND_SOUND0RPT_PT_POINT_SHIFT)) -#endif - -#define REG_SND_SOUND0RPT_LEN_LEN_SHIFT 0 -#define REG_SND_SOUND0RPT_LEN_LEN_SIZE 22 -#define REG_SND_SOUND0RPT_LEN_LEN_MASK 0x003fffff - -#ifndef SDK_ASM -#define REG_SND_SOUND0RPT_LEN_FIELD(len) \ - (u32)( \ - ((u32)(len) << REG_SND_SOUND0RPT_LEN_LEN_SHIFT)) -#endif - -#define REG_SND_SOUNDCNT_E_SHIFT 15 -#define REG_SND_SOUNDCNT_E_SIZE 1 -#define REG_SND_SOUNDCNT_E_MASK 0x8000 - -#define REG_SND_SOUNDCNT_MIX_CH3_SHIFT 13 -#define REG_SND_SOUNDCNT_MIX_CH3_SIZE 1 -#define REG_SND_SOUNDCNT_MIX_CH3_MASK 0x2000 - -#define REG_SND_SOUNDCNT_MIX_CH1_SHIFT 12 -#define REG_SND_SOUNDCNT_MIX_CH1_SIZE 1 -#define REG_SND_SOUNDCNT_MIX_CH1_MASK 0x1000 - -#define REG_SND_SOUNDCNT_ROUT_SHIFT 10 -#define REG_SND_SOUNDCNT_ROUT_SIZE 2 -#define REG_SND_SOUNDCNT_ROUT_MASK 0x0c00 - -#define REG_SND_SOUNDCNT_LOUT_SHIFT 8 -#define REG_SND_SOUNDCNT_LOUT_SIZE 2 -#define REG_SND_SOUNDCNT_LOUT_MASK 0x0300 - -#define REG_SND_SOUNDCNT_VOLUME_SHIFT 0 -#define REG_SND_SOUNDCNT_VOLUME_SIZE 7 -#define REG_SND_SOUNDCNT_VOLUME_MASK 0x007f - -#ifndef SDK_ASM -#define REG_SND_SOUNDCNT_FIELD(e, mix_ch3, mix_ch1, rout, lout, volume) \ - (u16)( \ - ((u32)(e) << REG_SND_SOUNDCNT_E_SHIFT) | \ - ((u32)(mix_ch3) << REG_SND_SOUNDCNT_MIX_CH3_SHIFT) | \ - ((u32)(mix_ch1) << REG_SND_SOUNDCNT_MIX_CH1_SHIFT) | \ - ((u32)(rout) << REG_SND_SOUNDCNT_ROUT_SHIFT) | \ - ((u32)(lout) << REG_SND_SOUNDCNT_LOUT_SHIFT) | \ - ((u32)(volume) << REG_SND_SOUNDCNT_VOLUME_SHIFT)) -#endif - -#define REG_SND_SOUNDCNT_8_E_SHIFT 7 -#define REG_SND_SOUNDCNT_8_E_SIZE 1 -#define REG_SND_SOUNDCNT_8_E_MASK 0x80 - -#define REG_SND_SOUNDCNT_8_MIX_CH3_SHIFT 5 -#define REG_SND_SOUNDCNT_8_MIX_CH3_SIZE 1 -#define REG_SND_SOUNDCNT_8_MIX_CH3_MASK 0x20 - -#define REG_SND_SOUNDCNT_8_MIX_CH1_SHIFT 4 -#define REG_SND_SOUNDCNT_8_MIX_CH1_SIZE 1 -#define REG_SND_SOUNDCNT_8_MIX_CH1_MASK 0x10 - -#define REG_SND_SOUNDCNT_8_ROUT_SHIFT 2 -#define REG_SND_SOUNDCNT_8_ROUT_SIZE 2 -#define REG_SND_SOUNDCNT_8_ROUT_MASK 0x0c - -#define REG_SND_SOUNDCNT_8_LOUT_SHIFT 0 -#define REG_SND_SOUNDCNT_8_LOUT_SIZE 2 -#define REG_SND_SOUNDCNT_8_LOUT_MASK 0x03 - -#ifndef SDK_ASM -#define REG_SND_SOUNDCNT_8_FIELD(e, mix_ch3, mix_ch1, rout, lout) \ - (u8)( \ - ((u32)(e) << REG_SND_SOUNDCNT_8_E_SHIFT) | \ - ((u32)(mix_ch3) << REG_SND_SOUNDCNT_8_MIX_CH3_SHIFT) | \ - ((u32)(mix_ch1) << REG_SND_SOUNDCNT_8_MIX_CH1_SHIFT) | \ - ((u32)(rout) << REG_SND_SOUNDCNT_8_ROUT_SHIFT) | \ - ((u32)(lout) << REG_SND_SOUNDCNT_8_LOUT_SHIFT)) -#endif - -#define REG_SND_SOUNDCNT_VOL_VOLUME_SHIFT 0 -#define REG_SND_SOUNDCNT_VOL_VOLUME_SIZE 7 -#define REG_SND_SOUNDCNT_VOL_VOLUME_MASK 0x7f - -#ifndef SDK_ASM -#define REG_SND_SOUNDCNT_VOL_FIELD(volume) \ - (u8)( \ - ((u32)(volume) << REG_SND_SOUNDCNT_VOL_VOLUME_SHIFT)) -#endif - -#define REG_SND_SNDCAPCNT_CAP1_E_SHIFT 15 -#define REG_SND_SNDCAPCNT_CAP1_E_SIZE 1 -#define REG_SND_SNDCAPCNT_CAP1_E_MASK 0x8000 - -#define REG_SND_SNDCAPCNT_CAP1_FORMAT_SHIFT 11 -#define REG_SND_SNDCAPCNT_CAP1_FORMAT_SIZE 1 -#define REG_SND_SNDCAPCNT_CAP1_FORMAT_MASK 0x0800 - -#define REG_SND_SNDCAPCNT_CAP1_REPEAT_SHIFT 10 -#define REG_SND_SNDCAPCNT_CAP1_REPEAT_SIZE 1 -#define REG_SND_SNDCAPCNT_CAP1_REPEAT_MASK 0x0400 - -#define REG_SND_SNDCAPCNT_CAP1_IN_SHIFT 9 -#define REG_SND_SNDCAPCNT_CAP1_IN_SIZE 1 -#define REG_SND_SNDCAPCNT_CAP1_IN_MASK 0x0200 - -#define REG_SND_SNDCAPCNT_CAP1_OUT_SHIFT 8 -#define REG_SND_SNDCAPCNT_CAP1_OUT_SIZE 1 -#define REG_SND_SNDCAPCNT_CAP1_OUT_MASK 0x0100 - -#define REG_SND_SNDCAPCNT_CAP0_E_SHIFT 7 -#define REG_SND_SNDCAPCNT_CAP0_E_SIZE 1 -#define REG_SND_SNDCAPCNT_CAP0_E_MASK 0x0080 - -#define REG_SND_SNDCAPCNT_CAP0_FORMAT_SHIFT 3 -#define REG_SND_SNDCAPCNT_CAP0_FORMAT_SIZE 1 -#define REG_SND_SNDCAPCNT_CAP0_FORMAT_MASK 0x0008 - -#define REG_SND_SNDCAPCNT_CAP0_REPEAT_SHIFT 2 -#define REG_SND_SNDCAPCNT_CAP0_REPEAT_SIZE 1 -#define REG_SND_SNDCAPCNT_CAP0_REPEAT_MASK 0x0004 - -#define REG_SND_SNDCAPCNT_CAP0_IN_SHIFT 1 -#define REG_SND_SNDCAPCNT_CAP0_IN_SIZE 1 -#define REG_SND_SNDCAPCNT_CAP0_IN_MASK 0x0002 - -#define REG_SND_SNDCAPCNT_CAP0_OUT_SHIFT 0 -#define REG_SND_SNDCAPCNT_CAP0_OUT_SIZE 1 -#define REG_SND_SNDCAPCNT_CAP0_OUT_MASK 0x0001 - -#ifndef SDK_ASM -#define REG_SND_SNDCAPCNT_FIELD(cap1_e, cap1_format, cap1_repeat, cap1_in, cap1_out, cap0_e, cap0_format, cap0_repeat, cap0_in, cap0_out) \ - (u16)( \ - ((u32)(cap1_e) << REG_SND_SNDCAPCNT_CAP1_E_SHIFT) | \ - ((u32)(cap1_format) << REG_SND_SNDCAPCNT_CAP1_FORMAT_SHIFT) | \ - ((u32)(cap1_repeat) << REG_SND_SNDCAPCNT_CAP1_REPEAT_SHIFT) | \ - ((u32)(cap1_in) << REG_SND_SNDCAPCNT_CAP1_IN_SHIFT) | \ - ((u32)(cap1_out) << REG_SND_SNDCAPCNT_CAP1_OUT_SHIFT) | \ - ((u32)(cap0_e) << REG_SND_SNDCAPCNT_CAP0_E_SHIFT) | \ - ((u32)(cap0_format) << REG_SND_SNDCAPCNT_CAP0_FORMAT_SHIFT) | \ - ((u32)(cap0_repeat) << REG_SND_SNDCAPCNT_CAP0_REPEAT_SHIFT) | \ - ((u32)(cap0_in) << REG_SND_SNDCAPCNT_CAP0_IN_SHIFT) | \ - ((u32)(cap0_out) << REG_SND_SNDCAPCNT_CAP0_OUT_SHIFT)) -#endif - -#define REG_SND_SNDCAP0CNT_E_SHIFT 7 -#define REG_SND_SNDCAP0CNT_E_SIZE 1 -#define REG_SND_SNDCAP0CNT_E_MASK 0x80 - -#define REG_SND_SNDCAP0CNT_FORMAT_SHIFT 3 -#define REG_SND_SNDCAP0CNT_FORMAT_SIZE 1 -#define REG_SND_SNDCAP0CNT_FORMAT_MASK 0x08 - -#define REG_SND_SNDCAP0CNT_REPEAT_SHIFT 2 -#define REG_SND_SNDCAP0CNT_REPEAT_SIZE 1 -#define REG_SND_SNDCAP0CNT_REPEAT_MASK 0x04 - -#define REG_SND_SNDCAP0CNT_IN_SHIFT 1 -#define REG_SND_SNDCAP0CNT_IN_SIZE 1 -#define REG_SND_SNDCAP0CNT_IN_MASK 0x02 - -#define REG_SND_SNDCAP0CNT_OUT_SHIFT 0 -#define REG_SND_SNDCAP0CNT_OUT_SIZE 1 -#define REG_SND_SNDCAP0CNT_OUT_MASK 0x01 - -#ifndef SDK_ASM -#define REG_SND_SNDCAP0CNT_FIELD(e, format, repeat, in, out) \ - (u8)( \ - ((u32)(e) << REG_SND_SNDCAP0CNT_E_SHIFT) | \ - ((u32)(format) << REG_SND_SNDCAP0CNT_FORMAT_SHIFT) | \ - ((u32)(repeat) << REG_SND_SNDCAP0CNT_REPEAT_SHIFT) | \ - ((u32)(in) << REG_SND_SNDCAP0CNT_IN_SHIFT) | \ - ((u32)(out) << REG_SND_SNDCAP0CNT_OUT_SHIFT)) -#endif - -#define REG_SND_SNDCAP1CNT_E_SHIFT 7 -#define REG_SND_SNDCAP1CNT_E_SIZE 1 -#define REG_SND_SNDCAP1CNT_E_MASK 0x80 - -#define REG_SND_SNDCAP1CNT_FORMAT_SHIFT 3 -#define REG_SND_SNDCAP1CNT_FORMAT_SIZE 1 -#define REG_SND_SNDCAP1CNT_FORMAT_MASK 0x08 - -#define REG_SND_SNDCAP1CNT_REPEAT_SHIFT 2 -#define REG_SND_SNDCAP1CNT_REPEAT_SIZE 1 -#define REG_SND_SNDCAP1CNT_REPEAT_MASK 0x04 - -#define REG_SND_SNDCAP1CNT_IN_SHIFT 1 -#define REG_SND_SNDCAP1CNT_IN_SIZE 1 -#define REG_SND_SNDCAP1CNT_IN_MASK 0x02 - -#define REG_SND_SNDCAP1CNT_OUT_SHIFT 0 -#define REG_SND_SNDCAP1CNT_OUT_SIZE 1 -#define REG_SND_SNDCAP1CNT_OUT_MASK 0x01 - -#ifndef SDK_ASM -#define REG_SND_SNDCAP1CNT_FIELD(e, format, repeat, in, out) \ - (u8)( \ - ((u32)(e) << REG_SND_SNDCAP1CNT_E_SHIFT) | \ - ((u32)(format) << REG_SND_SNDCAP1CNT_FORMAT_SHIFT) | \ - ((u32)(repeat) << REG_SND_SNDCAP1CNT_REPEAT_SHIFT) | \ - ((u32)(in) << REG_SND_SNDCAP1CNT_IN_SHIFT) | \ - ((u32)(out) << REG_SND_SNDCAP1CNT_OUT_SHIFT)) -#endif - -#define REG_SND_SNDCAP0DAD_DEST_SHIFT 0 -#define REG_SND_SNDCAP0DAD_DEST_SIZE 27 -#define REG_SND_SNDCAP0DAD_DEST_MASK 0x07ffffff - -#ifndef SDK_ASM -#define REG_SND_SNDCAP0DAD_FIELD(dest) \ - (u32)( \ - ((u32)(dest) << REG_SND_SNDCAP0DAD_DEST_SHIFT)) -#endif - -#define REG_SND_SNDCAP0LEN_LEN_SHIFT 0 -#define REG_SND_SNDCAP0LEN_LEN_SIZE 16 -#define REG_SND_SNDCAP0LEN_LEN_MASK 0xffff - -#ifndef SDK_ASM -#define REG_SND_SNDCAP0LEN_FIELD(len) \ - (u16)( \ - ((u32)(len) << REG_SND_SNDCAP0LEN_LEN_SHIFT)) -#endif - -#define REG_SND_SNDCAP1DAD_DEST_SHIFT 0 -#define REG_SND_SNDCAP1DAD_DEST_SIZE 27 -#define REG_SND_SNDCAP1DAD_DEST_MASK 0x07ffffff - -#ifndef SDK_ASM -#define REG_SND_SNDCAP1DAD_FIELD(dest) \ - (u32)( \ - ((u32)(dest) << REG_SND_SNDCAP1DAD_DEST_SHIFT)) -#endif - -#define REG_SND_SNDCAP1LEN_LEN_SHIFT 0 -#define REG_SND_SNDCAP1LEN_LEN_SIZE 16 -#define REG_SND_SNDCAP1LEN_LEN_MASK 0xffff - -#ifndef SDK_ASM -#define REG_SND_SNDCAP1LEN_FIELD(len) \ - (u16)( \ - ((u32)(len) << REG_SND_SNDCAP1LEN_LEN_SHIFT)) -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/hw/ARM7/ioreg_SPI.h b/subprojects/NitroSDK/include/nitro/hw/ARM7/ioreg_SPI.h deleted file mode 100644 index d8a08a9810..0000000000 --- a/subprojects/NitroSDK/include/nitro/hw/ARM7/ioreg_SPI.h +++ /dev/null @@ -1,116 +0,0 @@ -#ifndef NITRO_HW_ARM7_IOREG_SPI_H_ -#define NITRO_HW_ARM7_IOREG_SPI_H_ - -#ifndef SDK_ASM -#include -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define REG_SPICNT_OFFSET 0x1c0 -#define REG_SPICNT_ADDR (HW_REG_BASE + REG_SPICNT_OFFSET) -#define reg_SPI_SPICNT (*( REGType16v *)REG_SPICNT_ADDR) - -#define REG_SPID_OFFSET 0x1c2 -#define REG_SPID_ADDR (HW_REG_BASE + REG_SPID_OFFSET) -#define reg_SPI_SPID (*( REGType16v *)REG_SPID_ADDR) - -#if !defined(SDK_TS) - -#define REG_SPI_SPICNT_E_SHIFT 15 -#define REG_SPI_SPICNT_E_SIZE 1 -#define REG_SPI_SPICNT_E_MASK 0x8000 - -#define REG_SPI_SPICNT_I_SHIFT 14 -#define REG_SPI_SPICNT_I_SIZE 1 -#define REG_SPI_SPICNT_I_MASK 0x4000 - -#define REG_SPI_SPICNT_SEL_SHIFT 13 -#define REG_SPI_SPICNT_SEL_SIZE 1 -#define REG_SPI_SPICNT_SEL_MASK 0x2000 - -#define REG_SPI_SPICNT_MODE_SHIFT 12 -#define REG_SPI_SPICNT_MODE_SIZE 1 -#define REG_SPI_SPICNT_MODE_MASK 0x1000 - -#define REG_SPI_SPICNT_BUSY_SHIFT 7 -#define REG_SPI_SPICNT_BUSY_SIZE 1 -#define REG_SPI_SPICNT_BUSY_MASK 0x0080 - -#define REG_SPI_SPICNT_BAUDRATE_SHIFT 0 -#define REG_SPI_SPICNT_BAUDRATE_SIZE 2 -#define REG_SPI_SPICNT_BAUDRATE_MASK 0x0003 - -#ifndef SDK_ASM -#define REG_SPI_SPICNT_FIELD(e, i, sel, mode, busy, baudrate) \ - (u16)( \ - ((u32)(e) << REG_SPI_SPICNT_E_SHIFT) | \ - ((u32)(i) << REG_SPI_SPICNT_I_SHIFT) | \ - ((u32)(sel) << REG_SPI_SPICNT_SEL_SHIFT) | \ - ((u32)(mode) << REG_SPI_SPICNT_MODE_SHIFT) | \ - ((u32)(busy) << REG_SPI_SPICNT_BUSY_SHIFT) | \ - ((u32)(baudrate) << REG_SPI_SPICNT_BAUDRATE_SHIFT)) -#endif - -#elif defined(SDK_TS) - -#define REG_SPI_SPICNT_E_SHIFT 15 -#define REG_SPI_SPICNT_E_SIZE 1 -#define REG_SPI_SPICNT_E_MASK 0x8000 - -#define REG_SPI_SPICNT_I_SHIFT 14 -#define REG_SPI_SPICNT_I_SIZE 1 -#define REG_SPI_SPICNT_I_MASK 0x4000 - -#define REG_SPI_SPICNT_MODE_SHIFT 11 -#define REG_SPI_SPICNT_MODE_SIZE 1 -#define REG_SPI_SPICNT_MODE_MASK 0x0800 - -#define REG_SPI_SPICNT_CLKMODE_SHIFT 10 -#define REG_SPI_SPICNT_CLKMODE_SIZE 1 -#define REG_SPI_SPICNT_CLKMODE_MASK 0x0400 - -#define REG_SPI_SPICNT_SEL_SHIFT 8 -#define REG_SPI_SPICNT_SEL_SIZE 2 -#define REG_SPI_SPICNT_SEL_MASK 0x0300 - -#define REG_SPI_SPICNT_BUSY_SHIFT 7 -#define REG_SPI_SPICNT_BUSY_SIZE 1 -#define REG_SPI_SPICNT_BUSY_MASK 0x0080 - -#define REG_SPI_SPICNT_BAUDRATE_SHIFT 0 -#define REG_SPI_SPICNT_BAUDRATE_SIZE 2 -#define REG_SPI_SPICNT_BAUDRATE_MASK 0x0003 - -#ifndef SDK_ASM -#define REG_SPI_SPICNT_FIELD(e, i, mode, clkmode, sel, busy, baudrate) \ - (u16)( \ - ((u32)(e) << REG_SPI_SPICNT_E_SHIFT) | \ - ((u32)(i) << REG_SPI_SPICNT_I_SHIFT) | \ - ((u32)(mode) << REG_SPI_SPICNT_MODE_SHIFT) | \ - ((u32)(clkmode) << REG_SPI_SPICNT_CLKMODE_SHIFT) | \ - ((u32)(sel) << REG_SPI_SPICNT_SEL_SHIFT) | \ - ((u32)(busy) << REG_SPI_SPICNT_BUSY_SHIFT) | \ - ((u32)(baudrate) << REG_SPI_SPICNT_BAUDRATE_SHIFT)) -#endif - -#endif - -#define REG_SPI_SPID_DATA_SHIFT 0 -#define REG_SPI_SPID_DATA_SIZE 8 -#define REG_SPI_SPID_DATA_MASK 0x00ff - -#ifndef SDK_ASM -#define REG_SPI_SPID_FIELD(data) \ - (u16)( \ - ((u32)(data) << REG_SPI_SPID_DATA_SHIFT)) -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/hw/ARM7/mmap_global.h b/subprojects/NitroSDK/include/nitro/hw/ARM7/mmap_global.h deleted file mode 100644 index 16cb2042fe..0000000000 --- a/subprojects/NitroSDK/include/nitro/hw/ARM7/mmap_global.h +++ /dev/null @@ -1,78 +0,0 @@ -#ifndef NITRO_ARM7_HW_MMAP_GLOBAL_H_ -#define NITRO_ARM7_HW_MMAP_GLOBAL_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#define HW_MAIN_MEM 0x02000000 -#define HW_MAIN_MEM_SIZE 0x00400000 -#define HW_MAIN_MEM_EX_SIZE 0x00800000 - -#define HW_MAIN_MEM_END (HW_MAIN_MEM + HW_MAIN_MEM_SIZE) -#define HW_MAIN_MEM_EX_END (HW_MAIN_MEM + HW_MAIN_MEM_EX_SIZE) - -#define HW_WRAM 0x037f8000 -#define HW_WRAM_END 0x03800000 -#define HW_WRAM_SIZE (HW_WRAM_END - HW_WRAM) - -#define HW_PRV_WRAM 0x03800000 - -#if defined(SDK_TEG) -#define HW_PRV_WRAM_END 0x03808000 -#else -#define HW_PRV_WRAM_END 0x03810000 -#endif -#define HW_PRV_WRAM_SIZE (HW_PRV_WRAM_END - HW_PRV_WRAM) - -#define HW_IOREG 0x04000000 -#define HW_IOREG_END 0x05000000 -#define HW_REG_BASE HW_IOREG - -#define HW_BG_PLTT 0x05000000 -#define HW_BG_PLTT_END 0x05000200 -#define HW_BG_PLTT_SIZE (HW_BG_PLTT_END - HW_BG_PLTT) - -#define HW_OBJ_PLTT 0x05000200 -#define HW_OBJ_PLTT_END 0x05000400 -#define HW_OBJ_PLTT_SIZE (HW_OBJ_PLTT_END - HW_OBJ_PLTT) - -#define HW_PLTT HW_BG_PLTT -#define HW_PLTT_END HW_OBJ_PLTT_END -#define HW_PLTT_SIZE (HW_PLTT_END - HW_PLTT) - -#define HW_EXT_WRAM 0x06000000 -#define HW_EXT_WRAM_END 0x06040000 -#define HW_EXT_WRAM_SIZE (HW_EXT_WRAM_END - HW_EXT_WRAM) - -#define HW_BG_VRAM 0x06000000 -#define HW_BG_VRAM_END 0x06080000 -#define HW_BG_VRAM_SIZE (HW_BG_VRAM_END - HW_BG_VRAM) - -#define HW_OBJ_VRAM 0x06400000 -#define HW_OBJ_VRAM_END 0x06440000 -#define HW_OBJ_VRAM_SIZE (HW_OBJ_VRAM_END - HW_OBJ_VRAM) - -#define HW_LCDC_VRAM 0x06800000 -#define HW_LCDC_VRAM_END 0x06898000 -#define HW_LCDC_VRAM_SIZE (HW_LCDC_VRAM_END - HW_LCDC_VRAM) - -#define HW_OAM 0x07000000 -#define HW_OAM_END 0x07000400 -#define HW_OAM_SIZE (HW_OAM_END - HW_OAM) - -#define HW_CTRDG_ROM 0x08000000 -#define HW_CTRDG_ROM_END 0x0a000000 -#define HW_CTRDG_RAM 0x0a000000 -#define HW_CTRDG_RAM_END 0x0a010000 - -#define HW_BIOS 0xffff0000 -#define HW_BIOS_END 0xffff8000 - -#define HW_RESET_VECTOR 0xffff0000 - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/hw/ARM7/mmap_main.h b/subprojects/NitroSDK/include/nitro/hw/ARM7/mmap_main.h deleted file mode 100644 index 9f69638111..0000000000 --- a/subprojects/NitroSDK/include/nitro/hw/ARM7/mmap_main.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef NITRO_HW_ARM7_MMAP_MAIN_H_ -#define NITRO_HW_ARM7_MMAP_MAIN_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#define HW_MAIN_MEM_SHARED_SIZE 0x001000 - -#ifdef SDK_TS -#define HW_MAIN_MEM_MAIN_SIZE 0x3E0000 -#else -#define HW_MAIN_MEM_MAIN_SIZE 0x380000 -#endif -#define HW_MAIN_MEM_SUB_SIZE (HW_MAIN_MEM_SIZE - HW_MAIN_MEM_MAIN_SIZE - HW_MAIN_MEM_SHARED_SIZE) - -#define HW_MAIN_MEM_MAIN (HW_MAIN_MEM) -#define HW_MAIN_MEM_MAIN_END (HW_MAIN_MEM + HW_MAIN_MEM_MAIN_SIZE) -#define HW_MAIN_MEM_SUB (HW_MAIN_MEM_MAIN_END + 0x400000) -#define HW_MAIN_MEM_SUB_END (HW_MAIN_MEM_SUB + HW_MAIN_MEM_SUB_SIZE) - -#define HW_MAIN_MEM_DEBUGGER_OFFSET 0x700000 -#define HW_MAIN_MEM_DEBUGGER_SIZE 0x080000 -#define HW_MAIN_MEM_DEBUGGER (HW_MAIN_MEM + HW_MAIN_MEM_DEBUGGER_OFFSET) -#define HW_MAIN_MEM_DEBUGGER_END (HW_MAIN_MEM_DEBUGGER + HW_MAIN_MEM_DEBUGGER_SIZE) - -#define HW_MAIN_MEM_SHARED (HW_MAIN_MEM_EX_END - HW_MAIN_MEM_SHARED_SIZE) -#define HW_MAIN_MEM_SHARED_END (HW_MAIN_MEM_EX_END - HW_MAIN_MEM_SYSTEM_SIZE) - -#define HW_MAIN_MEM_SYSTEM_END (HW_MAIN_MEM_EX_END) - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/hw/ARM7/mmap_wram.h b/subprojects/NitroSDK/include/nitro/hw/ARM7/mmap_wram.h deleted file mode 100644 index 4f36959bed..0000000000 --- a/subprojects/NitroSDK/include/nitro/hw/ARM7/mmap_wram.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef NITRO_ARM7_HW_MMAP_WRAM_H_ -#define NITRO_ARM7_HW_MMAP_WRAM_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#define HW_SVC_STACK_SIZE 0x40 - -#define HW_PRV_WRAM_SYSRV_SIZE 0x40 - -#define HW_PRV_WRAM_IRQ_STACK_END (HW_PRV_WRAM_SVC_STACK) -#define HW_PRV_WRAM_SVC_STACK (HW_PRV_WRAM_SVC_STACK_END - HW_SVC_STACK_SIZE) -#define HW_PRV_WRAM_SVC_STACK_END (HW_PRV_WRAM_SYSRV) - -#define HW_PRV_WRAM_RED_RESERVED (HW_PRV_WRAM + 0xfc00) -#define HW_PRV_WRAM_RED_RESERVED_END (HW_PRV_WRAM + 0xfc40) - -#define HW_PRV_WRAM_SYSRV (HW_PRV_WRAM + HW_PRV_WRAM_SIZE - HW_PRV_WRAM_SYSRV_SIZE) -#define HW_PRV_WRAM_SYSRV_OFS_EXCP_VECTOR 0x1c -#define HW_PRV_WRAM_SYSRV_OFS_DMA_CLEAR_BUF 0x20 -#define HW_PRV_WRAM_SYSRV_OFS_WM_RESERVED_0 0x30 -#define HW_PRV_WRAM_SYSRV_OFS_WM_RESERVED_1 0x34 -#define HW_PRV_WRAM_SYSRV_OFS_INTR_CHECK 0x38 -#define HW_PRV_WRAM_SYSRV_OFS_INTR_VECTOR 0x3c - -#define HW_EXCP_VECTOR_BUF (HW_PRV_WRAM_SYSRV + HW_PRV_WRAM_SYSRV_OFS_EXCP_VECTOR) - -#define HW_PRV_WRAM_DMA_CLEAR_DATA_BUF (HW_PRV_WRAM_SYSRV + HW_PRV_WRAM_SYSRV_OFS_DMA_CLEAR_BUF) - -#define HW_PRV_WRAM_MITSUMI_RESERVED_0 (HW_PRV_WRAM_SYSRV + HW_PRV_WRAM_SYSRV_OFS_WM_RESERVED_0) -#define HW_PRV_WRAM_MITSUMI_RESERVED_1 (HW_PRV_WRAM_SYSRV + HW_PRV_WRAM_SYSRV_OFS_WM_RESERVED_1) - -#define HW_INTR_CHECK_BUF (HW_PRV_WRAM_SYSRV + HW_PRV_WRAM_SYSRV_OFS_INTR_CHECK) -#define HW_INTR_VECTOR_BUF (HW_PRV_WRAM_SYSRV + HW_PRV_WRAM_SYSRV_OFS_INTR_VECTOR) - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/hw/ARM9/ioreg.h b/subprojects/NitroSDK/include/nitro/hw/ARM9/ioreg.h deleted file mode 100644 index 2460fc6e18..0000000000 --- a/subprojects/NitroSDK/include/nitro/hw/ARM9/ioreg.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef NITRO_HW_ARM9_IOREG_H_ -#define NITRO_HW_ARM9_IOREG_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/hw/ARM9/ioreg_CP.h b/subprojects/NitroSDK/include/nitro/hw/ARM9/ioreg_CP.h deleted file mode 100644 index 472b19c48c..0000000000 --- a/subprojects/NitroSDK/include/nitro/hw/ARM9/ioreg_CP.h +++ /dev/null @@ -1,124 +0,0 @@ -#ifndef NITRO_HW_ARM9_IOREG_CP_H_ -#define NITRO_HW_ARM9_IOREG_CP_H_ - -#ifndef SDK_ASM -#include -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define REG_DIVCNT_OFFSET 0x280 -#define REG_DIVCNT_ADDR (HW_REG_BASE + REG_DIVCNT_OFFSET) -#define reg_CP_DIVCNT (*( REGType16v *)REG_DIVCNT_ADDR) - -#define REG_DIV_NUMER_OFFSET 0x290 -#define REG_DIV_NUMER_ADDR (HW_REG_BASE + REG_DIV_NUMER_OFFSET) -#define reg_CP_DIV_NUMER (*( REGType64v *)REG_DIV_NUMER_ADDR) - -#define REG_DIV_NUMER_L_OFFSET 0x290 -#define REG_DIV_NUMER_L_ADDR (HW_REG_BASE + REG_DIV_NUMER_L_OFFSET) -#define reg_CP_DIV_NUMER_L (*( REGType32v *)REG_DIV_NUMER_L_ADDR) - -#define REG_DIV_NUMER_H_OFFSET 0x294 -#define REG_DIV_NUMER_H_ADDR (HW_REG_BASE + REG_DIV_NUMER_H_OFFSET) -#define reg_CP_DIV_NUMER_H (*( REGType32v *)REG_DIV_NUMER_H_ADDR) - -#define REG_DIV_DENOM_OFFSET 0x298 -#define REG_DIV_DENOM_ADDR (HW_REG_BASE + REG_DIV_DENOM_OFFSET) -#define reg_CP_DIV_DENOM (*( REGType64v *)REG_DIV_DENOM_ADDR) - -#define REG_DIV_DENOM_L_OFFSET 0x298 -#define REG_DIV_DENOM_L_ADDR (HW_REG_BASE + REG_DIV_DENOM_L_OFFSET) -#define reg_CP_DIV_DENOM_L (*( REGType32v *)REG_DIV_DENOM_L_ADDR) - -#define REG_DIV_DENOM_H_OFFSET 0x29c -#define REG_DIV_DENOM_H_ADDR (HW_REG_BASE + REG_DIV_DENOM_H_OFFSET) -#define reg_CP_DIV_DENOM_H (*( REGType32v *)REG_DIV_DENOM_H_ADDR) - -#define REG_DIV_RESULT_OFFSET 0x2a0 -#define REG_DIV_RESULT_ADDR (HW_REG_BASE + REG_DIV_RESULT_OFFSET) -#define reg_CP_DIV_RESULT (*( REGType64v *)REG_DIV_RESULT_ADDR) - -#define REG_DIV_RESULT_L_OFFSET 0x2a0 -#define REG_DIV_RESULT_L_ADDR (HW_REG_BASE + REG_DIV_RESULT_L_OFFSET) -#define reg_CP_DIV_RESULT_L (*( REGType32v *)REG_DIV_RESULT_L_ADDR) - -#define REG_DIV_RESULT_H_OFFSET 0x2a4 -#define REG_DIV_RESULT_H_ADDR (HW_REG_BASE + REG_DIV_RESULT_H_OFFSET) -#define reg_CP_DIV_RESULT_H (*( REGType32v *)REG_DIV_RESULT_H_ADDR) - -#define REG_DIVREM_RESULT_OFFSET 0x2a8 -#define REG_DIVREM_RESULT_ADDR (HW_REG_BASE + REG_DIVREM_RESULT_OFFSET) -#define reg_CP_DIVREM_RESULT (*( REGType64v *)REG_DIVREM_RESULT_ADDR) - -#define REG_DIVREM_RESULT_L_OFFSET 0x2a8 -#define REG_DIVREM_RESULT_L_ADDR (HW_REG_BASE + REG_DIVREM_RESULT_L_OFFSET) -#define reg_CP_DIVREM_RESULT_L (*( REGType32v *)REG_DIVREM_RESULT_L_ADDR) - -#define REG_DIVREM_RESULT_H_OFFSET 0x2ac -#define REG_DIVREM_RESULT_H_ADDR (HW_REG_BASE + REG_DIVREM_RESULT_H_OFFSET) -#define reg_CP_DIVREM_RESULT_H (*( REGType32v *)REG_DIVREM_RESULT_H_ADDR) - -#define REG_SQRTCNT_OFFSET 0x2b0 -#define REG_SQRTCNT_ADDR (HW_REG_BASE + REG_SQRTCNT_OFFSET) -#define reg_CP_SQRTCNT (*( REGType16v *)REG_SQRTCNT_ADDR) - -#define REG_SQRT_RESULT_OFFSET 0x2b4 -#define REG_SQRT_RESULT_ADDR (HW_REG_BASE + REG_SQRT_RESULT_OFFSET) -#define reg_CP_SQRT_RESULT (*( REGType32v *)REG_SQRT_RESULT_ADDR) - -#define REG_SQRT_PARAM_OFFSET 0x2b8 -#define REG_SQRT_PARAM_ADDR (HW_REG_BASE + REG_SQRT_PARAM_OFFSET) -#define reg_CP_SQRT_PARAM (*( REGType64v *)REG_SQRT_PARAM_ADDR) - -#define REG_SQRT_PARAM_L_OFFSET 0x2b8 -#define REG_SQRT_PARAM_L_ADDR (HW_REG_BASE + REG_SQRT_PARAM_L_OFFSET) -#define reg_CP_SQRT_PARAM_L (*( REGType32v *)REG_SQRT_PARAM_L_ADDR) - -#define REG_SQRT_PARAM_H_OFFSET 0x2bc -#define REG_SQRT_PARAM_H_ADDR (HW_REG_BASE + REG_SQRT_PARAM_H_OFFSET) -#define reg_CP_SQRT_PARAM_H (*( REGType32v *)REG_SQRT_PARAM_H_ADDR) - -#define REG_CP_DIVCNT_BUSY_SHIFT 15 -#define REG_CP_DIVCNT_BUSY_SIZE 1 -#define REG_CP_DIVCNT_BUSY_MASK 0x8000 - -#define REG_CP_DIVCNT_DIV0_SHIFT 14 -#define REG_CP_DIVCNT_DIV0_SIZE 1 -#define REG_CP_DIVCNT_DIV0_MASK 0x4000 - -#define REG_CP_DIVCNT_MODE_SHIFT 0 -#define REG_CP_DIVCNT_MODE_SIZE 2 -#define REG_CP_DIVCNT_MODE_MASK 0x0003 - -#ifndef SDK_ASM -#define REG_CP_DIVCNT_FIELD(busy, div0, mode) \ - (u16)( \ - ((u32)(busy) << REG_CP_DIVCNT_BUSY_SHIFT) | \ - ((u32)(div0) << REG_CP_DIVCNT_DIV0_SHIFT) | \ - ((u32)(mode) << REG_CP_DIVCNT_MODE_SHIFT)) -#endif - -#define REG_CP_SQRTCNT_BUSY_SHIFT 15 -#define REG_CP_SQRTCNT_BUSY_SIZE 1 -#define REG_CP_SQRTCNT_BUSY_MASK 0x8000 - -#define REG_CP_SQRTCNT_MODE_SHIFT 0 -#define REG_CP_SQRTCNT_MODE_SIZE 1 -#define REG_CP_SQRTCNT_MODE_MASK 0x0001 - -#ifndef SDK_ASM -#define REG_CP_SQRTCNT_FIELD(busy, mode) \ - (u16)( \ - ((u32)(busy) << REG_CP_SQRTCNT_BUSY_SHIFT) | \ - ((u32)(mode) << REG_CP_SQRTCNT_MODE_SHIFT)) -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/hw/ARM9/ioreg_EXI.h b/subprojects/NitroSDK/include/nitro/hw/ARM9/ioreg_EXI.h deleted file mode 100644 index b37b2b5a80..0000000000 --- a/subprojects/NitroSDK/include/nitro/hw/ARM9/ioreg_EXI.h +++ /dev/null @@ -1,69 +0,0 @@ -#ifndef NITRO_HW_ARM9_IOREG_EXI_H_ -#define NITRO_HW_ARM9_IOREG_EXI_H_ - -#ifndef SDK_ASM -#include -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define REG_SIODATA32_OFFSET 0x120 -#define REG_SIODATA32_ADDR (HW_REG_BASE + REG_SIODATA32_OFFSET) -#define reg_EXI_SIODATA32 (*( REGType32v *)REG_SIODATA32_ADDR) - -#define REG_SIOCNT_OFFSET 0x128 -#define REG_SIOCNT_ADDR (HW_REG_BASE + REG_SIOCNT_OFFSET) -#define reg_EXI_SIOCNT (*( REGType16v *)REG_SIOCNT_ADDR) - -#define REG_SIOSEL_OFFSET 0x12c -#define REG_SIOSEL_ADDR (HW_REG_BASE + REG_SIOSEL_OFFSET) -#define reg_EXI_SIOSEL (*( REGType16v *)REG_SIOSEL_ADDR) - -#define REG_EXI_SIODATA32_H_SHIFT 16 -#define REG_EXI_SIODATA32_H_SIZE 16 -#define REG_EXI_SIODATA32_H_MASK 0xffff0000 - -#define REG_EXI_SIODATA32_L_SHIFT 0 -#define REG_EXI_SIODATA32_L_SIZE 16 -#define REG_EXI_SIODATA32_L_MASK 0x0000ffff - -#ifndef SDK_ASM -#define REG_EXI_SIODATA32_FIELD(h, l) \ - (u32)( \ - ((u32)(h) << REG_EXI_SIODATA32_H_SHIFT) | \ - ((u32)(l) << REG_EXI_SIODATA32_L_SHIFT)) -#endif - -#define REG_EXI_SIOCNT_TSEND_SHIFT 3 -#define REG_EXI_SIOCNT_TSEND_SIZE 1 -#define REG_EXI_SIOCNT_TSEND_MASK 0x0008 - -#define REG_EXI_SIOCNT_TRECV_SHIFT 2 -#define REG_EXI_SIOCNT_TRECV_SIZE 1 -#define REG_EXI_SIOCNT_TRECV_MASK 0x0004 - -#ifndef SDK_ASM -#define REG_EXI_SIOCNT_FIELD(tsend, trecv) \ - (u16)( \ - ((u32)(tsend) << REG_EXI_SIOCNT_TSEND_SHIFT) | \ - ((u32)(trecv) << REG_EXI_SIOCNT_TRECV_SHIFT)) -#endif - -#define REG_EXI_SIOSEL_SEL_SHIFT 0 -#define REG_EXI_SIOSEL_SEL_SIZE 1 -#define REG_EXI_SIOSEL_SEL_MASK 0x0001 - -#ifndef SDK_ASM -#define REG_EXI_SIOSEL_FIELD(sel) \ - (u16)( \ - ((u32)(sel) << REG_EXI_SIOSEL_SEL_SHIFT)) -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/hw/ARM9/ioreg_G2.h b/subprojects/NitroSDK/include/nitro/hw/ARM9/ioreg_G2.h deleted file mode 100644 index 86d1315f32..0000000000 --- a/subprojects/NitroSDK/include/nitro/hw/ARM9/ioreg_G2.h +++ /dev/null @@ -1,869 +0,0 @@ -#ifndef NITRO_HW_ARM9_IOREG_G2_H_ -#define NITRO_HW_ARM9_IOREG_G2_H_ - -#ifndef SDK_ASM -#include -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define REG_BG0CNT_OFFSET 0x008 -#define REG_BG0CNT_ADDR (HW_REG_BASE + REG_BG0CNT_OFFSET) -#define reg_G2_BG0CNT (*( REGType16v *)REG_BG0CNT_ADDR) - -#define REG_BG1CNT_OFFSET 0x00a -#define REG_BG1CNT_ADDR (HW_REG_BASE + REG_BG1CNT_OFFSET) -#define reg_G2_BG1CNT (*( REGType16v *)REG_BG1CNT_ADDR) - -#define REG_BG2CNT_OFFSET 0x00c -#define REG_BG2CNT_ADDR (HW_REG_BASE + REG_BG2CNT_OFFSET) -#define reg_G2_BG2CNT (*( REGType16v *)REG_BG2CNT_ADDR) - -#define REG_BG3CNT_OFFSET 0x00e -#define REG_BG3CNT_ADDR (HW_REG_BASE + REG_BG3CNT_OFFSET) -#define reg_G2_BG3CNT (*( REGType16v *)REG_BG3CNT_ADDR) - -#define REG_BG0OFS_OFFSET 0x010 -#define REG_BG0OFS_ADDR (HW_REG_BASE + REG_BG0OFS_OFFSET) -#define reg_G2_BG0OFS (*( REGType32v *)REG_BG0OFS_ADDR) - -#define REG_BG0HOFS_OFFSET 0x010 -#define REG_BG0HOFS_ADDR (HW_REG_BASE + REG_BG0HOFS_OFFSET) -#define reg_G2_BG0HOFS (*( REGType16v *)REG_BG0HOFS_ADDR) - -#define REG_BG0VOFS_OFFSET 0x012 -#define REG_BG0VOFS_ADDR (HW_REG_BASE + REG_BG0VOFS_OFFSET) -#define reg_G2_BG0VOFS (*( REGType16v *)REG_BG0VOFS_ADDR) - -#define REG_BG1OFS_OFFSET 0x014 -#define REG_BG1OFS_ADDR (HW_REG_BASE + REG_BG1OFS_OFFSET) -#define reg_G2_BG1OFS (*( REGType32v *)REG_BG1OFS_ADDR) - -#define REG_BG1HOFS_OFFSET 0x014 -#define REG_BG1HOFS_ADDR (HW_REG_BASE + REG_BG1HOFS_OFFSET) -#define reg_G2_BG1HOFS (*( REGType16v *)REG_BG1HOFS_ADDR) - -#define REG_BG1VOFS_OFFSET 0x016 -#define REG_BG1VOFS_ADDR (HW_REG_BASE + REG_BG1VOFS_OFFSET) -#define reg_G2_BG1VOFS (*( REGType16v *)REG_BG1VOFS_ADDR) - -#define REG_BG2OFS_OFFSET 0x018 -#define REG_BG2OFS_ADDR (HW_REG_BASE + REG_BG2OFS_OFFSET) -#define reg_G2_BG2OFS (*( REGType32v *)REG_BG2OFS_ADDR) - -#define REG_BG2HOFS_OFFSET 0x018 -#define REG_BG2HOFS_ADDR (HW_REG_BASE + REG_BG2HOFS_OFFSET) -#define reg_G2_BG2HOFS (*( REGType16v *)REG_BG2HOFS_ADDR) - -#define REG_BG2VOFS_OFFSET 0x01a -#define REG_BG2VOFS_ADDR (HW_REG_BASE + REG_BG2VOFS_OFFSET) -#define reg_G2_BG2VOFS (*( REGType16v *)REG_BG2VOFS_ADDR) - -#define REG_BG3OFS_OFFSET 0x01c -#define REG_BG3OFS_ADDR (HW_REG_BASE + REG_BG3OFS_OFFSET) -#define reg_G2_BG3OFS (*( REGType32v *)REG_BG3OFS_ADDR) - -#define REG_BG3HOFS_OFFSET 0x01c -#define REG_BG3HOFS_ADDR (HW_REG_BASE + REG_BG3HOFS_OFFSET) -#define reg_G2_BG3HOFS (*( REGType16v *)REG_BG3HOFS_ADDR) - -#define REG_BG3VOFS_OFFSET 0x01e -#define REG_BG3VOFS_ADDR (HW_REG_BASE + REG_BG3VOFS_OFFSET) -#define reg_G2_BG3VOFS (*( REGType16v *)REG_BG3VOFS_ADDR) - -#define REG_BG2PA_OFFSET 0x020 -#define REG_BG2PA_ADDR (HW_REG_BASE + REG_BG2PA_OFFSET) -#define reg_G2_BG2PA (*( REGType16v *)REG_BG2PA_ADDR) - -#define REG_BG2PB_OFFSET 0x022 -#define REG_BG2PB_ADDR (HW_REG_BASE + REG_BG2PB_OFFSET) -#define reg_G2_BG2PB (*( REGType16v *)REG_BG2PB_ADDR) - -#define REG_BG2PC_OFFSET 0x024 -#define REG_BG2PC_ADDR (HW_REG_BASE + REG_BG2PC_OFFSET) -#define reg_G2_BG2PC (*( REGType16v *)REG_BG2PC_ADDR) - -#define REG_BG2PD_OFFSET 0x026 -#define REG_BG2PD_ADDR (HW_REG_BASE + REG_BG2PD_OFFSET) -#define reg_G2_BG2PD (*( REGType16v *)REG_BG2PD_ADDR) - -#define REG_BG2X_OFFSET 0x028 -#define REG_BG2X_ADDR (HW_REG_BASE + REG_BG2X_OFFSET) -#define reg_G2_BG2X (*( REGType32v *)REG_BG2X_ADDR) - -#define REG_BG2Y_OFFSET 0x02c -#define REG_BG2Y_ADDR (HW_REG_BASE + REG_BG2Y_OFFSET) -#define reg_G2_BG2Y (*( REGType32v *)REG_BG2Y_ADDR) - -#define REG_BG3PA_OFFSET 0x030 -#define REG_BG3PA_ADDR (HW_REG_BASE + REG_BG3PA_OFFSET) -#define reg_G2_BG3PA (*( REGType16v *)REG_BG3PA_ADDR) - -#define REG_BG3PB_OFFSET 0x032 -#define REG_BG3PB_ADDR (HW_REG_BASE + REG_BG3PB_OFFSET) -#define reg_G2_BG3PB (*( REGType16v *)REG_BG3PB_ADDR) - -#define REG_BG3PC_OFFSET 0x034 -#define REG_BG3PC_ADDR (HW_REG_BASE + REG_BG3PC_OFFSET) -#define reg_G2_BG3PC (*( REGType16v *)REG_BG3PC_ADDR) - -#define REG_BG3PD_OFFSET 0x036 -#define REG_BG3PD_ADDR (HW_REG_BASE + REG_BG3PD_OFFSET) -#define reg_G2_BG3PD (*( REGType16v *)REG_BG3PD_ADDR) - -#define REG_BG3X_OFFSET 0x038 -#define REG_BG3X_ADDR (HW_REG_BASE + REG_BG3X_OFFSET) -#define reg_G2_BG3X (*( REGType32v *)REG_BG3X_ADDR) - -#define REG_BG3Y_OFFSET 0x03c -#define REG_BG3Y_ADDR (HW_REG_BASE + REG_BG3Y_OFFSET) -#define reg_G2_BG3Y (*( REGType32v *)REG_BG3Y_ADDR) - -#define REG_WIN0H_OFFSET 0x040 -#define REG_WIN0H_ADDR (HW_REG_BASE + REG_WIN0H_OFFSET) -#define reg_G2_WIN0H (*( REGType16v *)REG_WIN0H_ADDR) - -#define REG_WIN1H_OFFSET 0x042 -#define REG_WIN1H_ADDR (HW_REG_BASE + REG_WIN1H_OFFSET) -#define reg_G2_WIN1H (*( REGType16v *)REG_WIN1H_ADDR) - -#define REG_WIN0V_OFFSET 0x044 -#define REG_WIN0V_ADDR (HW_REG_BASE + REG_WIN0V_OFFSET) -#define reg_G2_WIN0V (*( REGType16v *)REG_WIN0V_ADDR) - -#define REG_WIN1V_OFFSET 0x046 -#define REG_WIN1V_ADDR (HW_REG_BASE + REG_WIN1V_OFFSET) -#define reg_G2_WIN1V (*( REGType16v *)REG_WIN1V_ADDR) - -#define REG_WININ_OFFSET 0x048 -#define REG_WININ_ADDR (HW_REG_BASE + REG_WININ_OFFSET) -#define reg_G2_WININ (*( REGType16v *)REG_WININ_ADDR) - -#define REG_WINOUT_OFFSET 0x04a -#define REG_WINOUT_ADDR (HW_REG_BASE + REG_WINOUT_OFFSET) -#define reg_G2_WINOUT (*( REGType16v *)REG_WINOUT_ADDR) - -#define REG_MOSAIC_OFFSET 0x04c -#define REG_MOSAIC_ADDR (HW_REG_BASE + REG_MOSAIC_OFFSET) -#define reg_G2_MOSAIC (*( REGType16v *)REG_MOSAIC_ADDR) - -#define REG_BLDCNT_OFFSET 0x050 -#define REG_BLDCNT_ADDR (HW_REG_BASE + REG_BLDCNT_OFFSET) -#define reg_G2_BLDCNT (*( REGType16v *)REG_BLDCNT_ADDR) - -#define REG_BLDALPHA_OFFSET 0x052 -#define REG_BLDALPHA_ADDR (HW_REG_BASE + REG_BLDALPHA_OFFSET) -#define reg_G2_BLDALPHA (*( REGType16v *)REG_BLDALPHA_ADDR) - -#define REG_BLDY_OFFSET 0x054 -#define REG_BLDY_ADDR (HW_REG_BASE + REG_BLDY_OFFSET) -#define reg_G2_BLDY (*( REGType16v *)REG_BLDY_ADDR) - -#define REG_G2_BG0CNT_SCREENSIZE_SHIFT 14 -#define REG_G2_BG0CNT_SCREENSIZE_SIZE 2 -#define REG_G2_BG0CNT_SCREENSIZE_MASK 0xc000 - -#define REG_G2_BG0CNT_BGPLTTSLOT_SHIFT 13 -#define REG_G2_BG0CNT_BGPLTTSLOT_SIZE 1 -#define REG_G2_BG0CNT_BGPLTTSLOT_MASK 0x2000 - -#define REG_G2_BG0CNT_SCREENBASE_SHIFT 8 -#define REG_G2_BG0CNT_SCREENBASE_SIZE 5 -#define REG_G2_BG0CNT_SCREENBASE_MASK 0x1f00 - -#define REG_G2_BG0CNT_COLORMODE_SHIFT 7 -#define REG_G2_BG0CNT_COLORMODE_SIZE 1 -#define REG_G2_BG0CNT_COLORMODE_MASK 0x0080 - -#define REG_G2_BG0CNT_MOSAIC_SHIFT 6 -#define REG_G2_BG0CNT_MOSAIC_SIZE 1 -#define REG_G2_BG0CNT_MOSAIC_MASK 0x0040 - -#define REG_G2_BG0CNT_CHARBASE_SHIFT 2 -#define REG_G2_BG0CNT_CHARBASE_SIZE 4 -#define REG_G2_BG0CNT_CHARBASE_MASK 0x003c - -#define REG_G2_BG0CNT_PRIORITY_SHIFT 0 -#define REG_G2_BG0CNT_PRIORITY_SIZE 2 -#define REG_G2_BG0CNT_PRIORITY_MASK 0x0003 - -#ifndef SDK_ASM -#define REG_G2_BG0CNT_FIELD(screensize, bgplttslot, screenbase, colormode, mosaic, charbase, priority) \ - (u16)( \ - ((u32)(screensize) << REG_G2_BG0CNT_SCREENSIZE_SHIFT) | \ - ((u32)(bgplttslot) << REG_G2_BG0CNT_BGPLTTSLOT_SHIFT) | \ - ((u32)(screenbase) << REG_G2_BG0CNT_SCREENBASE_SHIFT) | \ - ((u32)(colormode) << REG_G2_BG0CNT_COLORMODE_SHIFT) | \ - ((u32)(mosaic) << REG_G2_BG0CNT_MOSAIC_SHIFT) | \ - ((u32)(charbase) << REG_G2_BG0CNT_CHARBASE_SHIFT) | \ - ((u32)(priority) << REG_G2_BG0CNT_PRIORITY_SHIFT)) -#endif - -#define REG_G2_BG1CNT_SCREENSIZE_SHIFT 14 -#define REG_G2_BG1CNT_SCREENSIZE_SIZE 2 -#define REG_G2_BG1CNT_SCREENSIZE_MASK 0xc000 - -#define REG_G2_BG1CNT_BGPLTTSLOT_SHIFT 13 -#define REG_G2_BG1CNT_BGPLTTSLOT_SIZE 1 -#define REG_G2_BG1CNT_BGPLTTSLOT_MASK 0x2000 - -#define REG_G2_BG1CNT_SCREENBASE_SHIFT 8 -#define REG_G2_BG1CNT_SCREENBASE_SIZE 5 -#define REG_G2_BG1CNT_SCREENBASE_MASK 0x1f00 - -#define REG_G2_BG1CNT_COLORMODE_SHIFT 7 -#define REG_G2_BG1CNT_COLORMODE_SIZE 1 -#define REG_G2_BG1CNT_COLORMODE_MASK 0x0080 - -#define REG_G2_BG1CNT_MOSAIC_SHIFT 6 -#define REG_G2_BG1CNT_MOSAIC_SIZE 1 -#define REG_G2_BG1CNT_MOSAIC_MASK 0x0040 - -#define REG_G2_BG1CNT_CHARBASE_SHIFT 2 -#define REG_G2_BG1CNT_CHARBASE_SIZE 4 -#define REG_G2_BG1CNT_CHARBASE_MASK 0x003c - -#define REG_G2_BG1CNT_PRIORITY_SHIFT 0 -#define REG_G2_BG1CNT_PRIORITY_SIZE 2 -#define REG_G2_BG1CNT_PRIORITY_MASK 0x0003 - -#ifndef SDK_ASM -#define REG_G2_BG1CNT_FIELD(screensize, bgplttslot, screenbase, colormode, mosaic, charbase, priority) \ - (u16)( \ - ((u32)(screensize) << REG_G2_BG1CNT_SCREENSIZE_SHIFT) | \ - ((u32)(bgplttslot) << REG_G2_BG1CNT_BGPLTTSLOT_SHIFT) | \ - ((u32)(screenbase) << REG_G2_BG1CNT_SCREENBASE_SHIFT) | \ - ((u32)(colormode) << REG_G2_BG1CNT_COLORMODE_SHIFT) | \ - ((u32)(mosaic) << REG_G2_BG1CNT_MOSAIC_SHIFT) | \ - ((u32)(charbase) << REG_G2_BG1CNT_CHARBASE_SHIFT) | \ - ((u32)(priority) << REG_G2_BG1CNT_PRIORITY_SHIFT)) -#endif - -#define REG_G2_BG2CNT_SCREENSIZE_SHIFT 14 -#define REG_G2_BG2CNT_SCREENSIZE_SIZE 2 -#define REG_G2_BG2CNT_SCREENSIZE_MASK 0xc000 - -#define REG_G2_BG2CNT_AREAOVER_SHIFT 13 -#define REG_G2_BG2CNT_AREAOVER_SIZE 1 -#define REG_G2_BG2CNT_AREAOVER_MASK 0x2000 - -#define REG_G2_BG2CNT_SCREENBASE_SHIFT 8 -#define REG_G2_BG2CNT_SCREENBASE_SIZE 5 -#define REG_G2_BG2CNT_SCREENBASE_MASK 0x1f00 - -#define REG_G2_BG2CNT_COLORMODE_SHIFT 7 -#define REG_G2_BG2CNT_COLORMODE_SIZE 1 -#define REG_G2_BG2CNT_COLORMODE_MASK 0x0080 - -#define REG_G2_BG2CNT_MOSAIC_SHIFT 6 -#define REG_G2_BG2CNT_MOSAIC_SIZE 1 -#define REG_G2_BG2CNT_MOSAIC_MASK 0x0040 - -#define REG_G2_BG2CNT_CHARBASE_SHIFT 2 -#define REG_G2_BG2CNT_CHARBASE_SIZE 4 -#define REG_G2_BG2CNT_CHARBASE_MASK 0x003c - -#define REG_G2_BG2CNT_PRIORITY_SHIFT 0 -#define REG_G2_BG2CNT_PRIORITY_SIZE 2 -#define REG_G2_BG2CNT_PRIORITY_MASK 0x0003 - -#ifndef SDK_ASM -#define REG_G2_BG2CNT_FIELD(screensize, areaover, screenbase, colormode, mosaic, charbase, priority) \ - (u16)( \ - ((u32)(screensize) << REG_G2_BG2CNT_SCREENSIZE_SHIFT) | \ - ((u32)(areaover) << REG_G2_BG2CNT_AREAOVER_SHIFT) | \ - ((u32)(screenbase) << REG_G2_BG2CNT_SCREENBASE_SHIFT) | \ - ((u32)(colormode) << REG_G2_BG2CNT_COLORMODE_SHIFT) | \ - ((u32)(mosaic) << REG_G2_BG2CNT_MOSAIC_SHIFT) | \ - ((u32)(charbase) << REG_G2_BG2CNT_CHARBASE_SHIFT) | \ - ((u32)(priority) << REG_G2_BG2CNT_PRIORITY_SHIFT)) -#endif - -#define REG_G2_BG3CNT_SCREENSIZE_SHIFT 14 -#define REG_G2_BG3CNT_SCREENSIZE_SIZE 2 -#define REG_G2_BG3CNT_SCREENSIZE_MASK 0xc000 - -#define REG_G2_BG3CNT_AREAOVER_SHIFT 13 -#define REG_G2_BG3CNT_AREAOVER_SIZE 1 -#define REG_G2_BG3CNT_AREAOVER_MASK 0x2000 - -#define REG_G2_BG3CNT_SCREENBASE_SHIFT 8 -#define REG_G2_BG3CNT_SCREENBASE_SIZE 5 -#define REG_G2_BG3CNT_SCREENBASE_MASK 0x1f00 - -#define REG_G2_BG3CNT_COLORMODE_SHIFT 7 -#define REG_G2_BG3CNT_COLORMODE_SIZE 1 -#define REG_G2_BG3CNT_COLORMODE_MASK 0x0080 - -#define REG_G2_BG3CNT_MOSAIC_SHIFT 6 -#define REG_G2_BG3CNT_MOSAIC_SIZE 1 -#define REG_G2_BG3CNT_MOSAIC_MASK 0x0040 - -#define REG_G2_BG3CNT_CHARBASE_SHIFT 2 -#define REG_G2_BG3CNT_CHARBASE_SIZE 4 -#define REG_G2_BG3CNT_CHARBASE_MASK 0x003c - -#define REG_G2_BG3CNT_PRIORITY_SHIFT 0 -#define REG_G2_BG3CNT_PRIORITY_SIZE 2 -#define REG_G2_BG3CNT_PRIORITY_MASK 0x0003 - -#ifndef SDK_ASM -#define REG_G2_BG3CNT_FIELD(screensize, areaover, screenbase, colormode, mosaic, charbase, priority) \ - (u16)( \ - ((u32)(screensize) << REG_G2_BG3CNT_SCREENSIZE_SHIFT) | \ - ((u32)(areaover) << REG_G2_BG3CNT_AREAOVER_SHIFT) | \ - ((u32)(screenbase) << REG_G2_BG3CNT_SCREENBASE_SHIFT) | \ - ((u32)(colormode) << REG_G2_BG3CNT_COLORMODE_SHIFT) | \ - ((u32)(mosaic) << REG_G2_BG3CNT_MOSAIC_SHIFT) | \ - ((u32)(charbase) << REG_G2_BG3CNT_CHARBASE_SHIFT) | \ - ((u32)(priority) << REG_G2_BG3CNT_PRIORITY_SHIFT)) -#endif - -#define REG_G2_BG0OFS_VOFFSET_SHIFT 16 -#define REG_G2_BG0OFS_VOFFSET_SIZE 9 -#define REG_G2_BG0OFS_VOFFSET_MASK 0x01ff0000 - -#define REG_G2_BG0OFS_HOFFSET_SHIFT 0 -#define REG_G2_BG0OFS_HOFFSET_SIZE 9 -#define REG_G2_BG0OFS_HOFFSET_MASK 0x000001ff - -#ifndef SDK_ASM -#define REG_G2_BG0OFS_FIELD(voffset, hoffset) \ - (u32)( \ - ((u32)(voffset) << REG_G2_BG0OFS_VOFFSET_SHIFT) | \ - ((u32)(hoffset) << REG_G2_BG0OFS_HOFFSET_SHIFT)) -#endif - -#define REG_G2_BG0HOFS_OFFSET_SHIFT 0 -#define REG_G2_BG0HOFS_OFFSET_SIZE 9 -#define REG_G2_BG0HOFS_OFFSET_MASK 0x01ff - -#ifndef SDK_ASM -#define REG_G2_BG0HOFS_FIELD(offset) \ - (u16)( \ - ((u32)(offset) << REG_G2_BG0HOFS_OFFSET_SHIFT)) -#endif - -#define REG_G2_BG0VOFS_OFFSET_SHIFT 0 -#define REG_G2_BG0VOFS_OFFSET_SIZE 9 -#define REG_G2_BG0VOFS_OFFSET_MASK 0x01ff - -#ifndef SDK_ASM -#define REG_G2_BG0VOFS_FIELD(offset) \ - (u16)( \ - ((u32)(offset) << REG_G2_BG0VOFS_OFFSET_SHIFT)) -#endif - -#define REG_G2_BG1OFS_VOFFSET_SHIFT 16 -#define REG_G2_BG1OFS_VOFFSET_SIZE 9 -#define REG_G2_BG1OFS_VOFFSET_MASK 0x01ff0000 - -#define REG_G2_BG1OFS_HOFFSET_SHIFT 0 -#define REG_G2_BG1OFS_HOFFSET_SIZE 9 -#define REG_G2_BG1OFS_HOFFSET_MASK 0x000001ff - -#ifndef SDK_ASM -#define REG_G2_BG1OFS_FIELD(voffset, hoffset) \ - (u32)( \ - ((u32)(voffset) << REG_G2_BG1OFS_VOFFSET_SHIFT) | \ - ((u32)(hoffset) << REG_G2_BG1OFS_HOFFSET_SHIFT)) -#endif - -#define REG_G2_BG1HOFS_OFFSET_SHIFT 0 -#define REG_G2_BG1HOFS_OFFSET_SIZE 9 -#define REG_G2_BG1HOFS_OFFSET_MASK 0x01ff - -#ifndef SDK_ASM -#define REG_G2_BG1HOFS_FIELD(offset) \ - (u16)( \ - ((u32)(offset) << REG_G2_BG1HOFS_OFFSET_SHIFT)) -#endif - -#define REG_G2_BG1VOFS_OFFSET_SHIFT 0 -#define REG_G2_BG1VOFS_OFFSET_SIZE 9 -#define REG_G2_BG1VOFS_OFFSET_MASK 0x01ff - -#ifndef SDK_ASM -#define REG_G2_BG1VOFS_FIELD(offset) \ - (u16)( \ - ((u32)(offset) << REG_G2_BG1VOFS_OFFSET_SHIFT)) -#endif - -#define REG_G2_BG2OFS_VOFFSET_SHIFT 16 -#define REG_G2_BG2OFS_VOFFSET_SIZE 9 -#define REG_G2_BG2OFS_VOFFSET_MASK 0x01ff0000 - -#define REG_G2_BG2OFS_HOFFSET_SHIFT 0 -#define REG_G2_BG2OFS_HOFFSET_SIZE 9 -#define REG_G2_BG2OFS_HOFFSET_MASK 0x000001ff - -#ifndef SDK_ASM -#define REG_G2_BG2OFS_FIELD(voffset, hoffset) \ - (u32)( \ - ((u32)(voffset) << REG_G2_BG2OFS_VOFFSET_SHIFT) | \ - ((u32)(hoffset) << REG_G2_BG2OFS_HOFFSET_SHIFT)) -#endif - -#define REG_G2_BG2HOFS_OFFSET_SHIFT 0 -#define REG_G2_BG2HOFS_OFFSET_SIZE 9 -#define REG_G2_BG2HOFS_OFFSET_MASK 0x01ff - -#ifndef SDK_ASM -#define REG_G2_BG2HOFS_FIELD(offset) \ - (u16)( \ - ((u32)(offset) << REG_G2_BG2HOFS_OFFSET_SHIFT)) -#endif - -#define REG_G2_BG2VOFS_OFFSET_SHIFT 0 -#define REG_G2_BG2VOFS_OFFSET_SIZE 9 -#define REG_G2_BG2VOFS_OFFSET_MASK 0x01ff - -#ifndef SDK_ASM -#define REG_G2_BG2VOFS_FIELD(offset) \ - (u16)( \ - ((u32)(offset) << REG_G2_BG2VOFS_OFFSET_SHIFT)) -#endif - -#define REG_G2_BG3OFS_VOFFSET_SHIFT 16 -#define REG_G2_BG3OFS_VOFFSET_SIZE 9 -#define REG_G2_BG3OFS_VOFFSET_MASK 0x01ff0000 - -#define REG_G2_BG3OFS_HOFFSET_SHIFT 0 -#define REG_G2_BG3OFS_HOFFSET_SIZE 9 -#define REG_G2_BG3OFS_HOFFSET_MASK 0x000001ff - -#ifndef SDK_ASM -#define REG_G2_BG3OFS_FIELD(voffset, hoffset) \ - (u32)( \ - ((u32)(voffset) << REG_G2_BG3OFS_VOFFSET_SHIFT) | \ - ((u32)(hoffset) << REG_G2_BG3OFS_HOFFSET_SHIFT)) -#endif - -#define REG_G2_BG3HOFS_OFFSET_SHIFT 0 -#define REG_G2_BG3HOFS_OFFSET_SIZE 9 -#define REG_G2_BG3HOFS_OFFSET_MASK 0x01ff - -#ifndef SDK_ASM -#define REG_G2_BG3HOFS_FIELD(offset) \ - (u16)( \ - ((u32)(offset) << REG_G2_BG3HOFS_OFFSET_SHIFT)) -#endif - -#define REG_G2_BG3VOFS_OFFSET_SHIFT 0 -#define REG_G2_BG3VOFS_OFFSET_SIZE 9 -#define REG_G2_BG3VOFS_OFFSET_MASK 0x01ff - -#ifndef SDK_ASM -#define REG_G2_BG3VOFS_FIELD(offset) \ - (u16)( \ - ((u32)(offset) << REG_G2_BG3VOFS_OFFSET_SHIFT)) -#endif - -#define REG_G2_BG2PA_S_SHIFT 15 -#define REG_G2_BG2PA_S_SIZE 1 -#define REG_G2_BG2PA_S_MASK 0x8000 - -#define REG_G2_BG2PA_INTEGER_DX_SHIFT 8 -#define REG_G2_BG2PA_INTEGER_DX_SIZE 7 -#define REG_G2_BG2PA_INTEGER_DX_MASK 0x7f00 - -#define REG_G2_BG2PA_DECIMAL_DX_SHIFT 0 -#define REG_G2_BG2PA_DECIMAL_DX_SIZE 8 -#define REG_G2_BG2PA_DECIMAL_DX_MASK 0x00ff - -#ifndef SDK_ASM -#define REG_G2_BG2PA_FIELD(s, integer_dx, decimal_dx) \ - (u16)( \ - ((u32)(s) << REG_G2_BG2PA_S_SHIFT) | \ - ((u32)(integer_dx) << REG_G2_BG2PA_INTEGER_DX_SHIFT) | \ - ((u32)(decimal_dx) << REG_G2_BG2PA_DECIMAL_DX_SHIFT)) -#endif - -#define REG_G2_BG2PB_S_SHIFT 15 -#define REG_G2_BG2PB_S_SIZE 1 -#define REG_G2_BG2PB_S_MASK 0x8000 - -#define REG_G2_BG2PB_INTEGER_DMX_SHIFT 8 -#define REG_G2_BG2PB_INTEGER_DMX_SIZE 7 -#define REG_G2_BG2PB_INTEGER_DMX_MASK 0x7f00 - -#define REG_G2_BG2PB_DECIMAL_DMX_SHIFT 0 -#define REG_G2_BG2PB_DECIMAL_DMX_SIZE 8 -#define REG_G2_BG2PB_DECIMAL_DMX_MASK 0x00ff - -#ifndef SDK_ASM -#define REG_G2_BG2PB_FIELD(s, integer_dmx, decimal_dmx) \ - (u16)( \ - ((u32)(s) << REG_G2_BG2PB_S_SHIFT) | \ - ((u32)(integer_dmx) << REG_G2_BG2PB_INTEGER_DMX_SHIFT) | \ - ((u32)(decimal_dmx) << REG_G2_BG2PB_DECIMAL_DMX_SHIFT)) -#endif - -#define REG_G2_BG2PC_S_SHIFT 15 -#define REG_G2_BG2PC_S_SIZE 1 -#define REG_G2_BG2PC_S_MASK 0x8000 - -#define REG_G2_BG2PC_INTEGER_DY_SHIFT 8 -#define REG_G2_BG2PC_INTEGER_DY_SIZE 7 -#define REG_G2_BG2PC_INTEGER_DY_MASK 0x7f00 - -#define REG_G2_BG2PC_DECIMAL_DY_SHIFT 0 -#define REG_G2_BG2PC_DECIMAL_DY_SIZE 8 -#define REG_G2_BG2PC_DECIMAL_DY_MASK 0x00ff - -#ifndef SDK_ASM -#define REG_G2_BG2PC_FIELD(s, integer_dy, decimal_dy) \ - (u16)( \ - ((u32)(s) << REG_G2_BG2PC_S_SHIFT) | \ - ((u32)(integer_dy) << REG_G2_BG2PC_INTEGER_DY_SHIFT) | \ - ((u32)(decimal_dy) << REG_G2_BG2PC_DECIMAL_DY_SHIFT)) -#endif - -#define REG_G2_BG2PD_S_SHIFT 15 -#define REG_G2_BG2PD_S_SIZE 1 -#define REG_G2_BG2PD_S_MASK 0x8000 - -#define REG_G2_BG2PD_INTEGER_DMY_SHIFT 8 -#define REG_G2_BG2PD_INTEGER_DMY_SIZE 7 -#define REG_G2_BG2PD_INTEGER_DMY_MASK 0x7f00 - -#define REG_G2_BG2PD_DECIMAL_DMY_SHIFT 0 -#define REG_G2_BG2PD_DECIMAL_DMY_SIZE 8 -#define REG_G2_BG2PD_DECIMAL_DMY_MASK 0x00ff - -#ifndef SDK_ASM -#define REG_G2_BG2PD_FIELD(s, integer_dmy, decimal_dmy) \ - (u16)( \ - ((u32)(s) << REG_G2_BG2PD_S_SHIFT) | \ - ((u32)(integer_dmy) << REG_G2_BG2PD_INTEGER_DMY_SHIFT) | \ - ((u32)(decimal_dmy) << REG_G2_BG2PD_DECIMAL_DMY_SHIFT)) -#endif - -#define REG_G2_BG2X_S_SHIFT 27 -#define REG_G2_BG2X_S_SIZE 1 -#define REG_G2_BG2X_S_MASK 0x08000000 - -#define REG_G2_BG2X_INTEGER_SX_SHIFT 8 -#define REG_G2_BG2X_INTEGER_SX_SIZE 19 -#define REG_G2_BG2X_INTEGER_SX_MASK 0x07ffff00 - -#define REG_G2_BG2X_DECIMAL_SX_SHIFT 0 -#define REG_G2_BG2X_DECIMAL_SX_SIZE 8 -#define REG_G2_BG2X_DECIMAL_SX_MASK 0x000000ff - -#ifndef SDK_ASM -#define REG_G2_BG2X_FIELD(s, integer_sx, decimal_sx) \ - (u32)( \ - ((u32)(s) << REG_G2_BG2X_S_SHIFT) | \ - ((u32)(integer_sx) << REG_G2_BG2X_INTEGER_SX_SHIFT) | \ - ((u32)(decimal_sx) << REG_G2_BG2X_DECIMAL_SX_SHIFT)) -#endif - -#define REG_G2_BG2Y_S_SHIFT 27 -#define REG_G2_BG2Y_S_SIZE 1 -#define REG_G2_BG2Y_S_MASK 0x08000000 - -#define REG_G2_BG2Y_INTEGER_SY_SHIFT 8 -#define REG_G2_BG2Y_INTEGER_SY_SIZE 19 -#define REG_G2_BG2Y_INTEGER_SY_MASK 0x07ffff00 - -#define REG_G2_BG2Y_DECIMAL_SY_SHIFT 0 -#define REG_G2_BG2Y_DECIMAL_SY_SIZE 8 -#define REG_G2_BG2Y_DECIMAL_SY_MASK 0x000000ff - -#ifndef SDK_ASM -#define REG_G2_BG2Y_FIELD(s, integer_sy, decimal_sy) \ - (u32)( \ - ((u32)(s) << REG_G2_BG2Y_S_SHIFT) | \ - ((u32)(integer_sy) << REG_G2_BG2Y_INTEGER_SY_SHIFT) | \ - ((u32)(decimal_sy) << REG_G2_BG2Y_DECIMAL_SY_SHIFT)) -#endif - -#define REG_G2_BG3PA_S_SHIFT 15 -#define REG_G2_BG3PA_S_SIZE 1 -#define REG_G2_BG3PA_S_MASK 0x8000 - -#define REG_G2_BG3PA_INTEGER_DX_SHIFT 8 -#define REG_G2_BG3PA_INTEGER_DX_SIZE 7 -#define REG_G2_BG3PA_INTEGER_DX_MASK 0x7f00 - -#define REG_G2_BG3PA_DECIMAL_DX_SHIFT 0 -#define REG_G2_BG3PA_DECIMAL_DX_SIZE 8 -#define REG_G2_BG3PA_DECIMAL_DX_MASK 0x00ff - -#ifndef SDK_ASM -#define REG_G2_BG3PA_FIELD(s, integer_dx, decimal_dx) \ - (u16)( \ - ((u32)(s) << REG_G2_BG3PA_S_SHIFT) | \ - ((u32)(integer_dx) << REG_G2_BG3PA_INTEGER_DX_SHIFT) | \ - ((u32)(decimal_dx) << REG_G2_BG3PA_DECIMAL_DX_SHIFT)) -#endif - -#define REG_G2_BG3PB_S_SHIFT 15 -#define REG_G2_BG3PB_S_SIZE 1 -#define REG_G2_BG3PB_S_MASK 0x8000 - -#define REG_G2_BG3PB_INTEGER_DMX_SHIFT 8 -#define REG_G2_BG3PB_INTEGER_DMX_SIZE 7 -#define REG_G2_BG3PB_INTEGER_DMX_MASK 0x7f00 - -#define REG_G2_BG3PB_DECIMAL_DMX_SHIFT 0 -#define REG_G2_BG3PB_DECIMAL_DMX_SIZE 8 -#define REG_G2_BG3PB_DECIMAL_DMX_MASK 0x00ff - -#ifndef SDK_ASM -#define REG_G2_BG3PB_FIELD(s, integer_dmx, decimal_dmx) \ - (u16)( \ - ((u32)(s) << REG_G2_BG3PB_S_SHIFT) | \ - ((u32)(integer_dmx) << REG_G2_BG3PB_INTEGER_DMX_SHIFT) | \ - ((u32)(decimal_dmx) << REG_G2_BG3PB_DECIMAL_DMX_SHIFT)) -#endif - -#define REG_G2_BG3PC_S_SHIFT 15 -#define REG_G2_BG3PC_S_SIZE 1 -#define REG_G2_BG3PC_S_MASK 0x8000 - -#define REG_G2_BG3PC_INTEGER_DY_SHIFT 8 -#define REG_G2_BG3PC_INTEGER_DY_SIZE 7 -#define REG_G2_BG3PC_INTEGER_DY_MASK 0x7f00 - -#define REG_G2_BG3PC_DECIMAL_DY_SHIFT 0 -#define REG_G2_BG3PC_DECIMAL_DY_SIZE 8 -#define REG_G2_BG3PC_DECIMAL_DY_MASK 0x00ff - -#ifndef SDK_ASM -#define REG_G2_BG3PC_FIELD(s, integer_dy, decimal_dy) \ - (u16)( \ - ((u32)(s) << REG_G2_BG3PC_S_SHIFT) | \ - ((u32)(integer_dy) << REG_G2_BG3PC_INTEGER_DY_SHIFT) | \ - ((u32)(decimal_dy) << REG_G2_BG3PC_DECIMAL_DY_SHIFT)) -#endif - -#define REG_G2_BG3PD_S_SHIFT 15 -#define REG_G2_BG3PD_S_SIZE 1 -#define REG_G2_BG3PD_S_MASK 0x8000 - -#define REG_G2_BG3PD_INTEGER_DMY_SHIFT 8 -#define REG_G2_BG3PD_INTEGER_DMY_SIZE 7 -#define REG_G2_BG3PD_INTEGER_DMY_MASK 0x7f00 - -#define REG_G2_BG3PD_DECIMAL_DMY_SHIFT 0 -#define REG_G2_BG3PD_DECIMAL_DMY_SIZE 8 -#define REG_G2_BG3PD_DECIMAL_DMY_MASK 0x00ff - -#ifndef SDK_ASM -#define REG_G2_BG3PD_FIELD(s, integer_dmy, decimal_dmy) \ - (u16)( \ - ((u32)(s) << REG_G2_BG3PD_S_SHIFT) | \ - ((u32)(integer_dmy) << REG_G2_BG3PD_INTEGER_DMY_SHIFT) | \ - ((u32)(decimal_dmy) << REG_G2_BG3PD_DECIMAL_DMY_SHIFT)) -#endif - -#define REG_G2_BG3X_S_SHIFT 27 -#define REG_G2_BG3X_S_SIZE 1 -#define REG_G2_BG3X_S_MASK 0x08000000 - -#define REG_G2_BG3X_INTEGER_SX_SHIFT 8 -#define REG_G2_BG3X_INTEGER_SX_SIZE 19 -#define REG_G2_BG3X_INTEGER_SX_MASK 0x07ffff00 - -#define REG_G2_BG3X_DECIMAL_SX_SHIFT 0 -#define REG_G2_BG3X_DECIMAL_SX_SIZE 8 -#define REG_G2_BG3X_DECIMAL_SX_MASK 0x000000ff - -#ifndef SDK_ASM -#define REG_G2_BG3X_FIELD(s, integer_sx, decimal_sx) \ - (u32)( \ - ((u32)(s) << REG_G2_BG3X_S_SHIFT) | \ - ((u32)(integer_sx) << REG_G2_BG3X_INTEGER_SX_SHIFT) | \ - ((u32)(decimal_sx) << REG_G2_BG3X_DECIMAL_SX_SHIFT)) -#endif - -#define REG_G2_BG3Y_S_SHIFT 27 -#define REG_G2_BG3Y_S_SIZE 1 -#define REG_G2_BG3Y_S_MASK 0x08000000 - -#define REG_G2_BG3Y_INTEGER_SY_SHIFT 8 -#define REG_G2_BG3Y_INTEGER_SY_SIZE 19 -#define REG_G2_BG3Y_INTEGER_SY_MASK 0x07ffff00 - -#define REG_G2_BG3Y_DECIMAL_SY_SHIFT 0 -#define REG_G2_BG3Y_DECIMAL_SY_SIZE 8 -#define REG_G2_BG3Y_DECIMAL_SY_MASK 0x000000ff - -#ifndef SDK_ASM -#define REG_G2_BG3Y_FIELD(s, integer_sy, decimal_sy) \ - (u32)( \ - ((u32)(s) << REG_G2_BG3Y_S_SHIFT) | \ - ((u32)(integer_sy) << REG_G2_BG3Y_INTEGER_SY_SHIFT) | \ - ((u32)(decimal_sy) << REG_G2_BG3Y_DECIMAL_SY_SHIFT)) -#endif - -#define REG_G2_WIN0H_LEFTX_SHIFT 8 -#define REG_G2_WIN0H_LEFTX_SIZE 8 -#define REG_G2_WIN0H_LEFTX_MASK 0xff00 - -#define REG_G2_WIN0H_RIGHTX_SHIFT 0 -#define REG_G2_WIN0H_RIGHTX_SIZE 8 -#define REG_G2_WIN0H_RIGHTX_MASK 0x00ff - -#ifndef SDK_ASM -#define REG_G2_WIN0H_FIELD(leftx, rightx) \ - (u16)( \ - ((u32)(leftx) << REG_G2_WIN0H_LEFTX_SHIFT) | \ - ((u32)(rightx) << REG_G2_WIN0H_RIGHTX_SHIFT)) -#endif - -#define REG_G2_WIN1H_LEFTX_SHIFT 8 -#define REG_G2_WIN1H_LEFTX_SIZE 8 -#define REG_G2_WIN1H_LEFTX_MASK 0xff00 - -#define REG_G2_WIN1H_RIGHTX_SHIFT 0 -#define REG_G2_WIN1H_RIGHTX_SIZE 8 -#define REG_G2_WIN1H_RIGHTX_MASK 0x00ff - -#ifndef SDK_ASM -#define REG_G2_WIN1H_FIELD(leftx, rightx) \ - (u16)( \ - ((u32)(leftx) << REG_G2_WIN1H_LEFTX_SHIFT) | \ - ((u32)(rightx) << REG_G2_WIN1H_RIGHTX_SHIFT)) -#endif - -#define REG_G2_WIN0V_UPY_SHIFT 8 -#define REG_G2_WIN0V_UPY_SIZE 8 -#define REG_G2_WIN0V_UPY_MASK 0xff00 - -#define REG_G2_WIN0V_DOWNY_SHIFT 0 -#define REG_G2_WIN0V_DOWNY_SIZE 8 -#define REG_G2_WIN0V_DOWNY_MASK 0x00ff - -#ifndef SDK_ASM -#define REG_G2_WIN0V_FIELD(upy, downy) \ - (u16)( \ - ((u32)(upy) << REG_G2_WIN0V_UPY_SHIFT) | \ - ((u32)(downy) << REG_G2_WIN0V_DOWNY_SHIFT)) -#endif - -#define REG_G2_WIN1V_UPY_SHIFT 8 -#define REG_G2_WIN1V_UPY_SIZE 8 -#define REG_G2_WIN1V_UPY_MASK 0xff00 - -#define REG_G2_WIN1V_DOWNY_SHIFT 0 -#define REG_G2_WIN1V_DOWNY_SIZE 8 -#define REG_G2_WIN1V_DOWNY_MASK 0x00ff - -#ifndef SDK_ASM -#define REG_G2_WIN1V_FIELD(upy, downy) \ - (u16)( \ - ((u32)(upy) << REG_G2_WIN1V_UPY_SHIFT) | \ - ((u32)(downy) << REG_G2_WIN1V_DOWNY_SHIFT)) -#endif - -#define REG_G2_WININ_WIN1IN_SHIFT 8 -#define REG_G2_WININ_WIN1IN_SIZE 6 -#define REG_G2_WININ_WIN1IN_MASK 0x3f00 - -#define REG_G2_WININ_WIN0IN_SHIFT 0 -#define REG_G2_WININ_WIN0IN_SIZE 6 -#define REG_G2_WININ_WIN0IN_MASK 0x003f - -#ifndef SDK_ASM -#define REG_G2_WININ_FIELD(win1in, win0in) \ - (u16)( \ - ((u32)(win1in) << REG_G2_WININ_WIN1IN_SHIFT) | \ - ((u32)(win0in) << REG_G2_WININ_WIN0IN_SHIFT)) -#endif - -#define REG_G2_WINOUT_OBJWININ_SHIFT 8 -#define REG_G2_WINOUT_OBJWININ_SIZE 6 -#define REG_G2_WINOUT_OBJWININ_MASK 0x3f00 - -#define REG_G2_WINOUT_WINOUT_SHIFT 0 -#define REG_G2_WINOUT_WINOUT_SIZE 6 -#define REG_G2_WINOUT_WINOUT_MASK 0x003f - -#ifndef SDK_ASM -#define REG_G2_WINOUT_FIELD(objwinin, winout) \ - (u16)( \ - ((u32)(objwinin) << REG_G2_WINOUT_OBJWININ_SHIFT) | \ - ((u32)(winout) << REG_G2_WINOUT_WINOUT_SHIFT)) -#endif - -#define REG_G2_MOSAIC_OBJVSIZE_SHIFT 12 -#define REG_G2_MOSAIC_OBJVSIZE_SIZE 4 -#define REG_G2_MOSAIC_OBJVSIZE_MASK 0xf000 - -#define REG_G2_MOSAIC_OBJHSIZE_SHIFT 8 -#define REG_G2_MOSAIC_OBJHSIZE_SIZE 4 -#define REG_G2_MOSAIC_OBJHSIZE_MASK 0x0f00 - -#define REG_G2_MOSAIC_BGVSIZE_SHIFT 4 -#define REG_G2_MOSAIC_BGVSIZE_SIZE 4 -#define REG_G2_MOSAIC_BGVSIZE_MASK 0x00f0 - -#define REG_G2_MOSAIC_BGHSIZE_SHIFT 0 -#define REG_G2_MOSAIC_BGHSIZE_SIZE 4 -#define REG_G2_MOSAIC_BGHSIZE_MASK 0x000f - -#ifndef SDK_ASM -#define REG_G2_MOSAIC_FIELD(objvsize, objhsize, bgvsize, bghsize) \ - (u16)( \ - ((u32)(objvsize) << REG_G2_MOSAIC_OBJVSIZE_SHIFT) | \ - ((u32)(objhsize) << REG_G2_MOSAIC_OBJHSIZE_SHIFT) | \ - ((u32)(bgvsize) << REG_G2_MOSAIC_BGVSIZE_SHIFT) | \ - ((u32)(bghsize) << REG_G2_MOSAIC_BGHSIZE_SHIFT)) -#endif - -#define REG_G2_BLDCNT_PLANE2_SHIFT 8 -#define REG_G2_BLDCNT_PLANE2_SIZE 6 -#define REG_G2_BLDCNT_PLANE2_MASK 0x3f00 - -#define REG_G2_BLDCNT_EFFECT_SHIFT 6 -#define REG_G2_BLDCNT_EFFECT_SIZE 2 -#define REG_G2_BLDCNT_EFFECT_MASK 0x00c0 - -#define REG_G2_BLDCNT_PLANE1_SHIFT 0 -#define REG_G2_BLDCNT_PLANE1_SIZE 6 -#define REG_G2_BLDCNT_PLANE1_MASK 0x003f - -#ifndef SDK_ASM -#define REG_G2_BLDCNT_FIELD(plane2, effect, plane1) \ - (u16)( \ - ((u32)(plane2) << REG_G2_BLDCNT_PLANE2_SHIFT) | \ - ((u32)(effect) << REG_G2_BLDCNT_EFFECT_SHIFT) | \ - ((u32)(plane1) << REG_G2_BLDCNT_PLANE1_SHIFT)) -#endif - -#define REG_G2_BLDALPHA_EVB_SHIFT 8 -#define REG_G2_BLDALPHA_EVB_SIZE 5 -#define REG_G2_BLDALPHA_EVB_MASK 0x1f00 - -#define REG_G2_BLDALPHA_EVA_SHIFT 0 -#define REG_G2_BLDALPHA_EVA_SIZE 5 -#define REG_G2_BLDALPHA_EVA_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G2_BLDALPHA_FIELD(evb, eva) \ - (u16)( \ - ((u32)(evb) << REG_G2_BLDALPHA_EVB_SHIFT) | \ - ((u32)(eva) << REG_G2_BLDALPHA_EVA_SHIFT)) -#endif - -#define REG_G2_BLDY_EVY_SHIFT 0 -#define REG_G2_BLDY_EVY_SIZE 5 -#define REG_G2_BLDY_EVY_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G2_BLDY_FIELD(evy) \ - (u16)( \ - ((u32)(evy) << REG_G2_BLDY_EVY_SHIFT)) -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/hw/ARM9/ioreg_G2S.h b/subprojects/NitroSDK/include/nitro/hw/ARM9/ioreg_G2S.h deleted file mode 100644 index f78cdc19ae..0000000000 --- a/subprojects/NitroSDK/include/nitro/hw/ARM9/ioreg_G2S.h +++ /dev/null @@ -1,869 +0,0 @@ -#ifndef NITRO_HW_ARM9_IOREG_G2S_H_ -#define NITRO_HW_ARM9_IOREG_G2S_H_ - -#ifndef SDK_ASM -#include -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define REG_DB_BG0CNT_OFFSET 0x1008 -#define REG_DB_BG0CNT_ADDR (HW_REG_BASE + REG_DB_BG0CNT_OFFSET) -#define reg_G2S_DB_BG0CNT (*( REGType16v *)REG_DB_BG0CNT_ADDR) - -#define REG_DB_BG1CNT_OFFSET 0x100a -#define REG_DB_BG1CNT_ADDR (HW_REG_BASE + REG_DB_BG1CNT_OFFSET) -#define reg_G2S_DB_BG1CNT (*( REGType16v *)REG_DB_BG1CNT_ADDR) - -#define REG_DB_BG2CNT_OFFSET 0x100c -#define REG_DB_BG2CNT_ADDR (HW_REG_BASE + REG_DB_BG2CNT_OFFSET) -#define reg_G2S_DB_BG2CNT (*( REGType16v *)REG_DB_BG2CNT_ADDR) - -#define REG_DB_BG3CNT_OFFSET 0x100e -#define REG_DB_BG3CNT_ADDR (HW_REG_BASE + REG_DB_BG3CNT_OFFSET) -#define reg_G2S_DB_BG3CNT (*( REGType16v *)REG_DB_BG3CNT_ADDR) - -#define REG_DB_BG0OFS_OFFSET 0x1010 -#define REG_DB_BG0OFS_ADDR (HW_REG_BASE + REG_DB_BG0OFS_OFFSET) -#define reg_G2S_DB_BG0OFS (*( REGType32v *)REG_DB_BG0OFS_ADDR) - -#define REG_DB_BG0HOFS_OFFSET 0x1010 -#define REG_DB_BG0HOFS_ADDR (HW_REG_BASE + REG_DB_BG0HOFS_OFFSET) -#define reg_G2S_DB_BG0HOFS (*( REGType16v *)REG_DB_BG0HOFS_ADDR) - -#define REG_DB_BG0VOFS_OFFSET 0x1012 -#define REG_DB_BG0VOFS_ADDR (HW_REG_BASE + REG_DB_BG0VOFS_OFFSET) -#define reg_G2S_DB_BG0VOFS (*( REGType16v *)REG_DB_BG0VOFS_ADDR) - -#define REG_DB_BG1OFS_OFFSET 0x1014 -#define REG_DB_BG1OFS_ADDR (HW_REG_BASE + REG_DB_BG1OFS_OFFSET) -#define reg_G2S_DB_BG1OFS (*( REGType32v *)REG_DB_BG1OFS_ADDR) - -#define REG_DB_BG1HOFS_OFFSET 0x1014 -#define REG_DB_BG1HOFS_ADDR (HW_REG_BASE + REG_DB_BG1HOFS_OFFSET) -#define reg_G2S_DB_BG1HOFS (*( REGType16v *)REG_DB_BG1HOFS_ADDR) - -#define REG_DB_BG1VOFS_OFFSET 0x1016 -#define REG_DB_BG1VOFS_ADDR (HW_REG_BASE + REG_DB_BG1VOFS_OFFSET) -#define reg_G2S_DB_BG1VOFS (*( REGType16v *)REG_DB_BG1VOFS_ADDR) - -#define REG_DB_BG2OFS_OFFSET 0x1018 -#define REG_DB_BG2OFS_ADDR (HW_REG_BASE + REG_DB_BG2OFS_OFFSET) -#define reg_G2S_DB_BG2OFS (*( REGType32v *)REG_DB_BG2OFS_ADDR) - -#define REG_DB_BG2HOFS_OFFSET 0x1018 -#define REG_DB_BG2HOFS_ADDR (HW_REG_BASE + REG_DB_BG2HOFS_OFFSET) -#define reg_G2S_DB_BG2HOFS (*( REGType16v *)REG_DB_BG2HOFS_ADDR) - -#define REG_DB_BG2VOFS_OFFSET 0x101a -#define REG_DB_BG2VOFS_ADDR (HW_REG_BASE + REG_DB_BG2VOFS_OFFSET) -#define reg_G2S_DB_BG2VOFS (*( REGType16v *)REG_DB_BG2VOFS_ADDR) - -#define REG_DB_BG3OFS_OFFSET 0x101c -#define REG_DB_BG3OFS_ADDR (HW_REG_BASE + REG_DB_BG3OFS_OFFSET) -#define reg_G2S_DB_BG3OFS (*( REGType32v *)REG_DB_BG3OFS_ADDR) - -#define REG_DB_BG3HOFS_OFFSET 0x101c -#define REG_DB_BG3HOFS_ADDR (HW_REG_BASE + REG_DB_BG3HOFS_OFFSET) -#define reg_G2S_DB_BG3HOFS (*( REGType16v *)REG_DB_BG3HOFS_ADDR) - -#define REG_DB_BG3VOFS_OFFSET 0x101e -#define REG_DB_BG3VOFS_ADDR (HW_REG_BASE + REG_DB_BG3VOFS_OFFSET) -#define reg_G2S_DB_BG3VOFS (*( REGType16v *)REG_DB_BG3VOFS_ADDR) - -#define REG_DB_BG2PA_OFFSET 0x1020 -#define REG_DB_BG2PA_ADDR (HW_REG_BASE + REG_DB_BG2PA_OFFSET) -#define reg_G2S_DB_BG2PA (*( REGType16v *)REG_DB_BG2PA_ADDR) - -#define REG_DB_BG2PB_OFFSET 0x1022 -#define REG_DB_BG2PB_ADDR (HW_REG_BASE + REG_DB_BG2PB_OFFSET) -#define reg_G2S_DB_BG2PB (*( REGType16v *)REG_DB_BG2PB_ADDR) - -#define REG_DB_BG2PC_OFFSET 0x1024 -#define REG_DB_BG2PC_ADDR (HW_REG_BASE + REG_DB_BG2PC_OFFSET) -#define reg_G2S_DB_BG2PC (*( REGType16v *)REG_DB_BG2PC_ADDR) - -#define REG_DB_BG2PD_OFFSET 0x1026 -#define REG_DB_BG2PD_ADDR (HW_REG_BASE + REG_DB_BG2PD_OFFSET) -#define reg_G2S_DB_BG2PD (*( REGType16v *)REG_DB_BG2PD_ADDR) - -#define REG_DB_BG2X_OFFSET 0x1028 -#define REG_DB_BG2X_ADDR (HW_REG_BASE + REG_DB_BG2X_OFFSET) -#define reg_G2S_DB_BG2X (*( REGType32v *)REG_DB_BG2X_ADDR) - -#define REG_DB_BG2Y_OFFSET 0x102c -#define REG_DB_BG2Y_ADDR (HW_REG_BASE + REG_DB_BG2Y_OFFSET) -#define reg_G2S_DB_BG2Y (*( REGType32v *)REG_DB_BG2Y_ADDR) - -#define REG_DB_BG3PA_OFFSET 0x1030 -#define REG_DB_BG3PA_ADDR (HW_REG_BASE + REG_DB_BG3PA_OFFSET) -#define reg_G2S_DB_BG3PA (*( REGType16v *)REG_DB_BG3PA_ADDR) - -#define REG_DB_BG3PB_OFFSET 0x1032 -#define REG_DB_BG3PB_ADDR (HW_REG_BASE + REG_DB_BG3PB_OFFSET) -#define reg_G2S_DB_BG3PB (*( REGType16v *)REG_DB_BG3PB_ADDR) - -#define REG_DB_BG3PC_OFFSET 0x1034 -#define REG_DB_BG3PC_ADDR (HW_REG_BASE + REG_DB_BG3PC_OFFSET) -#define reg_G2S_DB_BG3PC (*( REGType16v *)REG_DB_BG3PC_ADDR) - -#define REG_DB_BG3PD_OFFSET 0x1036 -#define REG_DB_BG3PD_ADDR (HW_REG_BASE + REG_DB_BG3PD_OFFSET) -#define reg_G2S_DB_BG3PD (*( REGType16v *)REG_DB_BG3PD_ADDR) - -#define REG_DB_BG3X_OFFSET 0x1038 -#define REG_DB_BG3X_ADDR (HW_REG_BASE + REG_DB_BG3X_OFFSET) -#define reg_G2S_DB_BG3X (*( REGType32v *)REG_DB_BG3X_ADDR) - -#define REG_DB_BG3Y_OFFSET 0x103c -#define REG_DB_BG3Y_ADDR (HW_REG_BASE + REG_DB_BG3Y_OFFSET) -#define reg_G2S_DB_BG3Y (*( REGType32v *)REG_DB_BG3Y_ADDR) - -#define REG_DB_WIN0H_OFFSET 0x1040 -#define REG_DB_WIN0H_ADDR (HW_REG_BASE + REG_DB_WIN0H_OFFSET) -#define reg_G2S_DB_WIN0H (*( REGType16v *)REG_DB_WIN0H_ADDR) - -#define REG_DB_WIN1H_OFFSET 0x1042 -#define REG_DB_WIN1H_ADDR (HW_REG_BASE + REG_DB_WIN1H_OFFSET) -#define reg_G2S_DB_WIN1H (*( REGType16v *)REG_DB_WIN1H_ADDR) - -#define REG_DB_WIN0V_OFFSET 0x1044 -#define REG_DB_WIN0V_ADDR (HW_REG_BASE + REG_DB_WIN0V_OFFSET) -#define reg_G2S_DB_WIN0V (*( REGType16v *)REG_DB_WIN0V_ADDR) - -#define REG_DB_WIN1V_OFFSET 0x1046 -#define REG_DB_WIN1V_ADDR (HW_REG_BASE + REG_DB_WIN1V_OFFSET) -#define reg_G2S_DB_WIN1V (*( REGType16v *)REG_DB_WIN1V_ADDR) - -#define REG_DB_WININ_OFFSET 0x1048 -#define REG_DB_WININ_ADDR (HW_REG_BASE + REG_DB_WININ_OFFSET) -#define reg_G2S_DB_WININ (*( REGType16v *)REG_DB_WININ_ADDR) - -#define REG_DB_WINOUT_OFFSET 0x104a -#define REG_DB_WINOUT_ADDR (HW_REG_BASE + REG_DB_WINOUT_OFFSET) -#define reg_G2S_DB_WINOUT (*( REGType16v *)REG_DB_WINOUT_ADDR) - -#define REG_DB_MOSAIC_OFFSET 0x104c -#define REG_DB_MOSAIC_ADDR (HW_REG_BASE + REG_DB_MOSAIC_OFFSET) -#define reg_G2S_DB_MOSAIC (*( REGType16v *)REG_DB_MOSAIC_ADDR) - -#define REG_DB_BLDCNT_OFFSET 0x1050 -#define REG_DB_BLDCNT_ADDR (HW_REG_BASE + REG_DB_BLDCNT_OFFSET) -#define reg_G2S_DB_BLDCNT (*( REGType16v *)REG_DB_BLDCNT_ADDR) - -#define REG_DB_BLDALPHA_OFFSET 0x1052 -#define REG_DB_BLDALPHA_ADDR (HW_REG_BASE + REG_DB_BLDALPHA_OFFSET) -#define reg_G2S_DB_BLDALPHA (*( REGType16v *)REG_DB_BLDALPHA_ADDR) - -#define REG_DB_BLDY_OFFSET 0x1054 -#define REG_DB_BLDY_ADDR (HW_REG_BASE + REG_DB_BLDY_OFFSET) -#define reg_G2S_DB_BLDY (*( REGType16v *)REG_DB_BLDY_ADDR) - -#define REG_G2S_DB_BG0CNT_SCREENSIZE_SHIFT 14 -#define REG_G2S_DB_BG0CNT_SCREENSIZE_SIZE 2 -#define REG_G2S_DB_BG0CNT_SCREENSIZE_MASK 0xc000 - -#define REG_G2S_DB_BG0CNT_BGPLTTSLOT_SHIFT 13 -#define REG_G2S_DB_BG0CNT_BGPLTTSLOT_SIZE 1 -#define REG_G2S_DB_BG0CNT_BGPLTTSLOT_MASK 0x2000 - -#define REG_G2S_DB_BG0CNT_SCREENBASE_SHIFT 8 -#define REG_G2S_DB_BG0CNT_SCREENBASE_SIZE 5 -#define REG_G2S_DB_BG0CNT_SCREENBASE_MASK 0x1f00 - -#define REG_G2S_DB_BG0CNT_COLORMODE_SHIFT 7 -#define REG_G2S_DB_BG0CNT_COLORMODE_SIZE 1 -#define REG_G2S_DB_BG0CNT_COLORMODE_MASK 0x0080 - -#define REG_G2S_DB_BG0CNT_MOSAIC_SHIFT 6 -#define REG_G2S_DB_BG0CNT_MOSAIC_SIZE 1 -#define REG_G2S_DB_BG0CNT_MOSAIC_MASK 0x0040 - -#define REG_G2S_DB_BG0CNT_CHARBASE_SHIFT 2 -#define REG_G2S_DB_BG0CNT_CHARBASE_SIZE 4 -#define REG_G2S_DB_BG0CNT_CHARBASE_MASK 0x003c - -#define REG_G2S_DB_BG0CNT_PRIORITY_SHIFT 0 -#define REG_G2S_DB_BG0CNT_PRIORITY_SIZE 2 -#define REG_G2S_DB_BG0CNT_PRIORITY_MASK 0x0003 - -#ifndef SDK_ASM -#define REG_G2S_DB_BG0CNT_FIELD(screensize, bgplttslot, screenbase, colormode, mosaic, charbase, priority) \ - (u16)( \ - ((u32)(screensize) << REG_G2S_DB_BG0CNT_SCREENSIZE_SHIFT) | \ - ((u32)(bgplttslot) << REG_G2S_DB_BG0CNT_BGPLTTSLOT_SHIFT) | \ - ((u32)(screenbase) << REG_G2S_DB_BG0CNT_SCREENBASE_SHIFT) | \ - ((u32)(colormode) << REG_G2S_DB_BG0CNT_COLORMODE_SHIFT) | \ - ((u32)(mosaic) << REG_G2S_DB_BG0CNT_MOSAIC_SHIFT) | \ - ((u32)(charbase) << REG_G2S_DB_BG0CNT_CHARBASE_SHIFT) | \ - ((u32)(priority) << REG_G2S_DB_BG0CNT_PRIORITY_SHIFT)) -#endif - -#define REG_G2S_DB_BG1CNT_SCREENSIZE_SHIFT 14 -#define REG_G2S_DB_BG1CNT_SCREENSIZE_SIZE 2 -#define REG_G2S_DB_BG1CNT_SCREENSIZE_MASK 0xc000 - -#define REG_G2S_DB_BG1CNT_BGPLTTSLOT_SHIFT 13 -#define REG_G2S_DB_BG1CNT_BGPLTTSLOT_SIZE 1 -#define REG_G2S_DB_BG1CNT_BGPLTTSLOT_MASK 0x2000 - -#define REG_G2S_DB_BG1CNT_SCREENBASE_SHIFT 8 -#define REG_G2S_DB_BG1CNT_SCREENBASE_SIZE 5 -#define REG_G2S_DB_BG1CNT_SCREENBASE_MASK 0x1f00 - -#define REG_G2S_DB_BG1CNT_COLORMODE_SHIFT 7 -#define REG_G2S_DB_BG1CNT_COLORMODE_SIZE 1 -#define REG_G2S_DB_BG1CNT_COLORMODE_MASK 0x0080 - -#define REG_G2S_DB_BG1CNT_MOSAIC_SHIFT 6 -#define REG_G2S_DB_BG1CNT_MOSAIC_SIZE 1 -#define REG_G2S_DB_BG1CNT_MOSAIC_MASK 0x0040 - -#define REG_G2S_DB_BG1CNT_CHARBASE_SHIFT 2 -#define REG_G2S_DB_BG1CNT_CHARBASE_SIZE 4 -#define REG_G2S_DB_BG1CNT_CHARBASE_MASK 0x003c - -#define REG_G2S_DB_BG1CNT_PRIORITY_SHIFT 0 -#define REG_G2S_DB_BG1CNT_PRIORITY_SIZE 2 -#define REG_G2S_DB_BG1CNT_PRIORITY_MASK 0x0003 - -#ifndef SDK_ASM -#define REG_G2S_DB_BG1CNT_FIELD(screensize, bgplttslot, screenbase, colormode, mosaic, charbase, priority) \ - (u16)( \ - ((u32)(screensize) << REG_G2S_DB_BG1CNT_SCREENSIZE_SHIFT) | \ - ((u32)(bgplttslot) << REG_G2S_DB_BG1CNT_BGPLTTSLOT_SHIFT) | \ - ((u32)(screenbase) << REG_G2S_DB_BG1CNT_SCREENBASE_SHIFT) | \ - ((u32)(colormode) << REG_G2S_DB_BG1CNT_COLORMODE_SHIFT) | \ - ((u32)(mosaic) << REG_G2S_DB_BG1CNT_MOSAIC_SHIFT) | \ - ((u32)(charbase) << REG_G2S_DB_BG1CNT_CHARBASE_SHIFT) | \ - ((u32)(priority) << REG_G2S_DB_BG1CNT_PRIORITY_SHIFT)) -#endif - -#define REG_G2S_DB_BG2CNT_SCREENSIZE_SHIFT 14 -#define REG_G2S_DB_BG2CNT_SCREENSIZE_SIZE 2 -#define REG_G2S_DB_BG2CNT_SCREENSIZE_MASK 0xc000 - -#define REG_G2S_DB_BG2CNT_AREAOVER_SHIFT 13 -#define REG_G2S_DB_BG2CNT_AREAOVER_SIZE 1 -#define REG_G2S_DB_BG2CNT_AREAOVER_MASK 0x2000 - -#define REG_G2S_DB_BG2CNT_SCREENBASE_SHIFT 8 -#define REG_G2S_DB_BG2CNT_SCREENBASE_SIZE 5 -#define REG_G2S_DB_BG2CNT_SCREENBASE_MASK 0x1f00 - -#define REG_G2S_DB_BG2CNT_COLORMODE_SHIFT 7 -#define REG_G2S_DB_BG2CNT_COLORMODE_SIZE 1 -#define REG_G2S_DB_BG2CNT_COLORMODE_MASK 0x0080 - -#define REG_G2S_DB_BG2CNT_MOSAIC_SHIFT 6 -#define REG_G2S_DB_BG2CNT_MOSAIC_SIZE 1 -#define REG_G2S_DB_BG2CNT_MOSAIC_MASK 0x0040 - -#define REG_G2S_DB_BG2CNT_CHARBASE_SHIFT 2 -#define REG_G2S_DB_BG2CNT_CHARBASE_SIZE 4 -#define REG_G2S_DB_BG2CNT_CHARBASE_MASK 0x003c - -#define REG_G2S_DB_BG2CNT_PRIORITY_SHIFT 0 -#define REG_G2S_DB_BG2CNT_PRIORITY_SIZE 2 -#define REG_G2S_DB_BG2CNT_PRIORITY_MASK 0x0003 - -#ifndef SDK_ASM -#define REG_G2S_DB_BG2CNT_FIELD(screensize, areaover, screenbase, colormode, mosaic, charbase, priority) \ - (u16)( \ - ((u32)(screensize) << REG_G2S_DB_BG2CNT_SCREENSIZE_SHIFT) | \ - ((u32)(areaover) << REG_G2S_DB_BG2CNT_AREAOVER_SHIFT) | \ - ((u32)(screenbase) << REG_G2S_DB_BG2CNT_SCREENBASE_SHIFT) | \ - ((u32)(colormode) << REG_G2S_DB_BG2CNT_COLORMODE_SHIFT) | \ - ((u32)(mosaic) << REG_G2S_DB_BG2CNT_MOSAIC_SHIFT) | \ - ((u32)(charbase) << REG_G2S_DB_BG2CNT_CHARBASE_SHIFT) | \ - ((u32)(priority) << REG_G2S_DB_BG2CNT_PRIORITY_SHIFT)) -#endif - -#define REG_G2S_DB_BG3CNT_SCREENSIZE_SHIFT 14 -#define REG_G2S_DB_BG3CNT_SCREENSIZE_SIZE 2 -#define REG_G2S_DB_BG3CNT_SCREENSIZE_MASK 0xc000 - -#define REG_G2S_DB_BG3CNT_AREAOVER_SHIFT 13 -#define REG_G2S_DB_BG3CNT_AREAOVER_SIZE 1 -#define REG_G2S_DB_BG3CNT_AREAOVER_MASK 0x2000 - -#define REG_G2S_DB_BG3CNT_SCREENBASE_SHIFT 8 -#define REG_G2S_DB_BG3CNT_SCREENBASE_SIZE 5 -#define REG_G2S_DB_BG3CNT_SCREENBASE_MASK 0x1f00 - -#define REG_G2S_DB_BG3CNT_COLORMODE_SHIFT 7 -#define REG_G2S_DB_BG3CNT_COLORMODE_SIZE 1 -#define REG_G2S_DB_BG3CNT_COLORMODE_MASK 0x0080 - -#define REG_G2S_DB_BG3CNT_MOSAIC_SHIFT 6 -#define REG_G2S_DB_BG3CNT_MOSAIC_SIZE 1 -#define REG_G2S_DB_BG3CNT_MOSAIC_MASK 0x0040 - -#define REG_G2S_DB_BG3CNT_CHARBASE_SHIFT 2 -#define REG_G2S_DB_BG3CNT_CHARBASE_SIZE 4 -#define REG_G2S_DB_BG3CNT_CHARBASE_MASK 0x003c - -#define REG_G2S_DB_BG3CNT_PRIORITY_SHIFT 0 -#define REG_G2S_DB_BG3CNT_PRIORITY_SIZE 2 -#define REG_G2S_DB_BG3CNT_PRIORITY_MASK 0x0003 - -#ifndef SDK_ASM -#define REG_G2S_DB_BG3CNT_FIELD(screensize, areaover, screenbase, colormode, mosaic, charbase, priority) \ - (u16)( \ - ((u32)(screensize) << REG_G2S_DB_BG3CNT_SCREENSIZE_SHIFT) | \ - ((u32)(areaover) << REG_G2S_DB_BG3CNT_AREAOVER_SHIFT) | \ - ((u32)(screenbase) << REG_G2S_DB_BG3CNT_SCREENBASE_SHIFT) | \ - ((u32)(colormode) << REG_G2S_DB_BG3CNT_COLORMODE_SHIFT) | \ - ((u32)(mosaic) << REG_G2S_DB_BG3CNT_MOSAIC_SHIFT) | \ - ((u32)(charbase) << REG_G2S_DB_BG3CNT_CHARBASE_SHIFT) | \ - ((u32)(priority) << REG_G2S_DB_BG3CNT_PRIORITY_SHIFT)) -#endif - -#define REG_G2S_DB_BG0OFS_VOFFSET_SHIFT 16 -#define REG_G2S_DB_BG0OFS_VOFFSET_SIZE 9 -#define REG_G2S_DB_BG0OFS_VOFFSET_MASK 0x01ff0000 - -#define REG_G2S_DB_BG0OFS_HOFFSET_SHIFT 0 -#define REG_G2S_DB_BG0OFS_HOFFSET_SIZE 9 -#define REG_G2S_DB_BG0OFS_HOFFSET_MASK 0x000001ff - -#ifndef SDK_ASM -#define REG_G2S_DB_BG0OFS_FIELD(voffset, hoffset) \ - (u32)( \ - ((u32)(voffset) << REG_G2S_DB_BG0OFS_VOFFSET_SHIFT) | \ - ((u32)(hoffset) << REG_G2S_DB_BG0OFS_HOFFSET_SHIFT)) -#endif - -#define REG_G2S_DB_BG0HOFS_OFFSET_SHIFT 0 -#define REG_G2S_DB_BG0HOFS_OFFSET_SIZE 9 -#define REG_G2S_DB_BG0HOFS_OFFSET_MASK 0x01ff - -#ifndef SDK_ASM -#define REG_G2S_DB_BG0HOFS_FIELD(offset) \ - (u16)( \ - ((u32)(offset) << REG_G2S_DB_BG0HOFS_OFFSET_SHIFT)) -#endif - -#define REG_G2S_DB_BG0VOFS_OFFSET_SHIFT 0 -#define REG_G2S_DB_BG0VOFS_OFFSET_SIZE 9 -#define REG_G2S_DB_BG0VOFS_OFFSET_MASK 0x01ff - -#ifndef SDK_ASM -#define REG_G2S_DB_BG0VOFS_FIELD(offset) \ - (u16)( \ - ((u32)(offset) << REG_G2S_DB_BG0VOFS_OFFSET_SHIFT)) -#endif - -#define REG_G2S_DB_BG1OFS_VOFFSET_SHIFT 16 -#define REG_G2S_DB_BG1OFS_VOFFSET_SIZE 9 -#define REG_G2S_DB_BG1OFS_VOFFSET_MASK 0x01ff0000 - -#define REG_G2S_DB_BG1OFS_HOFFSET_SHIFT 0 -#define REG_G2S_DB_BG1OFS_HOFFSET_SIZE 9 -#define REG_G2S_DB_BG1OFS_HOFFSET_MASK 0x000001ff - -#ifndef SDK_ASM -#define REG_G2S_DB_BG1OFS_FIELD(voffset, hoffset) \ - (u32)( \ - ((u32)(voffset) << REG_G2S_DB_BG1OFS_VOFFSET_SHIFT) | \ - ((u32)(hoffset) << REG_G2S_DB_BG1OFS_HOFFSET_SHIFT)) -#endif - -#define REG_G2S_DB_BG1HOFS_OFFSET_SHIFT 0 -#define REG_G2S_DB_BG1HOFS_OFFSET_SIZE 9 -#define REG_G2S_DB_BG1HOFS_OFFSET_MASK 0x01ff - -#ifndef SDK_ASM -#define REG_G2S_DB_BG1HOFS_FIELD(offset) \ - (u16)( \ - ((u32)(offset) << REG_G2S_DB_BG1HOFS_OFFSET_SHIFT)) -#endif - -#define REG_G2S_DB_BG1VOFS_OFFSET_SHIFT 0 -#define REG_G2S_DB_BG1VOFS_OFFSET_SIZE 9 -#define REG_G2S_DB_BG1VOFS_OFFSET_MASK 0x01ff - -#ifndef SDK_ASM -#define REG_G2S_DB_BG1VOFS_FIELD(offset) \ - (u16)( \ - ((u32)(offset) << REG_G2S_DB_BG1VOFS_OFFSET_SHIFT)) -#endif - -#define REG_G2S_DB_BG2OFS_VOFFSET_SHIFT 16 -#define REG_G2S_DB_BG2OFS_VOFFSET_SIZE 9 -#define REG_G2S_DB_BG2OFS_VOFFSET_MASK 0x01ff0000 - -#define REG_G2S_DB_BG2OFS_HOFFSET_SHIFT 0 -#define REG_G2S_DB_BG2OFS_HOFFSET_SIZE 9 -#define REG_G2S_DB_BG2OFS_HOFFSET_MASK 0x000001ff - -#ifndef SDK_ASM -#define REG_G2S_DB_BG2OFS_FIELD(voffset, hoffset) \ - (u32)( \ - ((u32)(voffset) << REG_G2S_DB_BG2OFS_VOFFSET_SHIFT) | \ - ((u32)(hoffset) << REG_G2S_DB_BG2OFS_HOFFSET_SHIFT)) -#endif - -#define REG_G2S_DB_BG2HOFS_OFFSET_SHIFT 0 -#define REG_G2S_DB_BG2HOFS_OFFSET_SIZE 9 -#define REG_G2S_DB_BG2HOFS_OFFSET_MASK 0x01ff - -#ifndef SDK_ASM -#define REG_G2S_DB_BG2HOFS_FIELD(offset) \ - (u16)( \ - ((u32)(offset) << REG_G2S_DB_BG2HOFS_OFFSET_SHIFT)) -#endif - -#define REG_G2S_DB_BG2VOFS_OFFSET_SHIFT 0 -#define REG_G2S_DB_BG2VOFS_OFFSET_SIZE 9 -#define REG_G2S_DB_BG2VOFS_OFFSET_MASK 0x01ff - -#ifndef SDK_ASM -#define REG_G2S_DB_BG2VOFS_FIELD(offset) \ - (u16)( \ - ((u32)(offset) << REG_G2S_DB_BG2VOFS_OFFSET_SHIFT)) -#endif - -#define REG_G2S_DB_BG3OFS_VOFFSET_SHIFT 16 -#define REG_G2S_DB_BG3OFS_VOFFSET_SIZE 9 -#define REG_G2S_DB_BG3OFS_VOFFSET_MASK 0x01ff0000 - -#define REG_G2S_DB_BG3OFS_HOFFSET_SHIFT 0 -#define REG_G2S_DB_BG3OFS_HOFFSET_SIZE 9 -#define REG_G2S_DB_BG3OFS_HOFFSET_MASK 0x000001ff - -#ifndef SDK_ASM -#define REG_G2S_DB_BG3OFS_FIELD(voffset, hoffset) \ - (u32)( \ - ((u32)(voffset) << REG_G2S_DB_BG3OFS_VOFFSET_SHIFT) | \ - ((u32)(hoffset) << REG_G2S_DB_BG3OFS_HOFFSET_SHIFT)) -#endif - -#define REG_G2S_DB_BG3HOFS_OFFSET_SHIFT 0 -#define REG_G2S_DB_BG3HOFS_OFFSET_SIZE 9 -#define REG_G2S_DB_BG3HOFS_OFFSET_MASK 0x01ff - -#ifndef SDK_ASM -#define REG_G2S_DB_BG3HOFS_FIELD(offset) \ - (u16)( \ - ((u32)(offset) << REG_G2S_DB_BG3HOFS_OFFSET_SHIFT)) -#endif - -#define REG_G2S_DB_BG3VOFS_OFFSET_SHIFT 0 -#define REG_G2S_DB_BG3VOFS_OFFSET_SIZE 9 -#define REG_G2S_DB_BG3VOFS_OFFSET_MASK 0x01ff - -#ifndef SDK_ASM -#define REG_G2S_DB_BG3VOFS_FIELD(offset) \ - (u16)( \ - ((u32)(offset) << REG_G2S_DB_BG3VOFS_OFFSET_SHIFT)) -#endif - -#define REG_G2S_DB_BG2PA_S_SHIFT 15 -#define REG_G2S_DB_BG2PA_S_SIZE 1 -#define REG_G2S_DB_BG2PA_S_MASK 0x8000 - -#define REG_G2S_DB_BG2PA_INTEGER_DX_SHIFT 8 -#define REG_G2S_DB_BG2PA_INTEGER_DX_SIZE 7 -#define REG_G2S_DB_BG2PA_INTEGER_DX_MASK 0x7f00 - -#define REG_G2S_DB_BG2PA_DECIMAL_DX_SHIFT 0 -#define REG_G2S_DB_BG2PA_DECIMAL_DX_SIZE 8 -#define REG_G2S_DB_BG2PA_DECIMAL_DX_MASK 0x00ff - -#ifndef SDK_ASM -#define REG_G2S_DB_BG2PA_FIELD(s, integer_dx, decimal_dx) \ - (u16)( \ - ((u32)(s) << REG_G2S_DB_BG2PA_S_SHIFT) | \ - ((u32)(integer_dx) << REG_G2S_DB_BG2PA_INTEGER_DX_SHIFT) | \ - ((u32)(decimal_dx) << REG_G2S_DB_BG2PA_DECIMAL_DX_SHIFT)) -#endif - -#define REG_G2S_DB_BG2PB_S_SHIFT 15 -#define REG_G2S_DB_BG2PB_S_SIZE 1 -#define REG_G2S_DB_BG2PB_S_MASK 0x8000 - -#define REG_G2S_DB_BG2PB_INTEGER_DMX_SHIFT 8 -#define REG_G2S_DB_BG2PB_INTEGER_DMX_SIZE 7 -#define REG_G2S_DB_BG2PB_INTEGER_DMX_MASK 0x7f00 - -#define REG_G2S_DB_BG2PB_DECIMAL_DMX_SHIFT 0 -#define REG_G2S_DB_BG2PB_DECIMAL_DMX_SIZE 8 -#define REG_G2S_DB_BG2PB_DECIMAL_DMX_MASK 0x00ff - -#ifndef SDK_ASM -#define REG_G2S_DB_BG2PB_FIELD(s, integer_dmx, decimal_dmx) \ - (u16)( \ - ((u32)(s) << REG_G2S_DB_BG2PB_S_SHIFT) | \ - ((u32)(integer_dmx) << REG_G2S_DB_BG2PB_INTEGER_DMX_SHIFT) | \ - ((u32)(decimal_dmx) << REG_G2S_DB_BG2PB_DECIMAL_DMX_SHIFT)) -#endif - -#define REG_G2S_DB_BG2PC_S_SHIFT 15 -#define REG_G2S_DB_BG2PC_S_SIZE 1 -#define REG_G2S_DB_BG2PC_S_MASK 0x8000 - -#define REG_G2S_DB_BG2PC_INTEGER_DY_SHIFT 8 -#define REG_G2S_DB_BG2PC_INTEGER_DY_SIZE 7 -#define REG_G2S_DB_BG2PC_INTEGER_DY_MASK 0x7f00 - -#define REG_G2S_DB_BG2PC_DECIMAL_DY_SHIFT 0 -#define REG_G2S_DB_BG2PC_DECIMAL_DY_SIZE 8 -#define REG_G2S_DB_BG2PC_DECIMAL_DY_MASK 0x00ff - -#ifndef SDK_ASM -#define REG_G2S_DB_BG2PC_FIELD(s, integer_dy, decimal_dy) \ - (u16)( \ - ((u32)(s) << REG_G2S_DB_BG2PC_S_SHIFT) | \ - ((u32)(integer_dy) << REG_G2S_DB_BG2PC_INTEGER_DY_SHIFT) | \ - ((u32)(decimal_dy) << REG_G2S_DB_BG2PC_DECIMAL_DY_SHIFT)) -#endif - -#define REG_G2S_DB_BG2PD_S_SHIFT 15 -#define REG_G2S_DB_BG2PD_S_SIZE 1 -#define REG_G2S_DB_BG2PD_S_MASK 0x8000 - -#define REG_G2S_DB_BG2PD_INTEGER_DMY_SHIFT 8 -#define REG_G2S_DB_BG2PD_INTEGER_DMY_SIZE 7 -#define REG_G2S_DB_BG2PD_INTEGER_DMY_MASK 0x7f00 - -#define REG_G2S_DB_BG2PD_DECIMAL_DMY_SHIFT 0 -#define REG_G2S_DB_BG2PD_DECIMAL_DMY_SIZE 8 -#define REG_G2S_DB_BG2PD_DECIMAL_DMY_MASK 0x00ff - -#ifndef SDK_ASM -#define REG_G2S_DB_BG2PD_FIELD(s, integer_dmy, decimal_dmy) \ - (u16)( \ - ((u32)(s) << REG_G2S_DB_BG2PD_S_SHIFT) | \ - ((u32)(integer_dmy) << REG_G2S_DB_BG2PD_INTEGER_DMY_SHIFT) | \ - ((u32)(decimal_dmy) << REG_G2S_DB_BG2PD_DECIMAL_DMY_SHIFT)) -#endif - -#define REG_G2S_DB_BG2X_S_SHIFT 27 -#define REG_G2S_DB_BG2X_S_SIZE 1 -#define REG_G2S_DB_BG2X_S_MASK 0x08000000 - -#define REG_G2S_DB_BG2X_INTEGER_SX_SHIFT 8 -#define REG_G2S_DB_BG2X_INTEGER_SX_SIZE 19 -#define REG_G2S_DB_BG2X_INTEGER_SX_MASK 0x07ffff00 - -#define REG_G2S_DB_BG2X_DECIMAL_SX_SHIFT 0 -#define REG_G2S_DB_BG2X_DECIMAL_SX_SIZE 8 -#define REG_G2S_DB_BG2X_DECIMAL_SX_MASK 0x000000ff - -#ifndef SDK_ASM -#define REG_G2S_DB_BG2X_FIELD(s, integer_sx, decimal_sx) \ - (u32)( \ - ((u32)(s) << REG_G2S_DB_BG2X_S_SHIFT) | \ - ((u32)(integer_sx) << REG_G2S_DB_BG2X_INTEGER_SX_SHIFT) | \ - ((u32)(decimal_sx) << REG_G2S_DB_BG2X_DECIMAL_SX_SHIFT)) -#endif - -#define REG_G2S_DB_BG2Y_S_SHIFT 27 -#define REG_G2S_DB_BG2Y_S_SIZE 1 -#define REG_G2S_DB_BG2Y_S_MASK 0x08000000 - -#define REG_G2S_DB_BG2Y_INTEGER_SY_SHIFT 8 -#define REG_G2S_DB_BG2Y_INTEGER_SY_SIZE 19 -#define REG_G2S_DB_BG2Y_INTEGER_SY_MASK 0x07ffff00 - -#define REG_G2S_DB_BG2Y_DECIMAL_SY_SHIFT 0 -#define REG_G2S_DB_BG2Y_DECIMAL_SY_SIZE 8 -#define REG_G2S_DB_BG2Y_DECIMAL_SY_MASK 0x000000ff - -#ifndef SDK_ASM -#define REG_G2S_DB_BG2Y_FIELD(s, integer_sy, decimal_sy) \ - (u32)( \ - ((u32)(s) << REG_G2S_DB_BG2Y_S_SHIFT) | \ - ((u32)(integer_sy) << REG_G2S_DB_BG2Y_INTEGER_SY_SHIFT) | \ - ((u32)(decimal_sy) << REG_G2S_DB_BG2Y_DECIMAL_SY_SHIFT)) -#endif - -#define REG_G2S_DB_BG3PA_S_SHIFT 15 -#define REG_G2S_DB_BG3PA_S_SIZE 1 -#define REG_G2S_DB_BG3PA_S_MASK 0x8000 - -#define REG_G2S_DB_BG3PA_INTEGER_DX_SHIFT 8 -#define REG_G2S_DB_BG3PA_INTEGER_DX_SIZE 7 -#define REG_G2S_DB_BG3PA_INTEGER_DX_MASK 0x7f00 - -#define REG_G2S_DB_BG3PA_DECIMAL_DX_SHIFT 0 -#define REG_G2S_DB_BG3PA_DECIMAL_DX_SIZE 8 -#define REG_G2S_DB_BG3PA_DECIMAL_DX_MASK 0x00ff - -#ifndef SDK_ASM -#define REG_G2S_DB_BG3PA_FIELD(s, integer_dx, decimal_dx) \ - (u16)( \ - ((u32)(s) << REG_G2S_DB_BG3PA_S_SHIFT) | \ - ((u32)(integer_dx) << REG_G2S_DB_BG3PA_INTEGER_DX_SHIFT) | \ - ((u32)(decimal_dx) << REG_G2S_DB_BG3PA_DECIMAL_DX_SHIFT)) -#endif - -#define REG_G2S_DB_BG3PB_S_SHIFT 15 -#define REG_G2S_DB_BG3PB_S_SIZE 1 -#define REG_G2S_DB_BG3PB_S_MASK 0x8000 - -#define REG_G2S_DB_BG3PB_INTEGER_DMX_SHIFT 8 -#define REG_G2S_DB_BG3PB_INTEGER_DMX_SIZE 7 -#define REG_G2S_DB_BG3PB_INTEGER_DMX_MASK 0x7f00 - -#define REG_G2S_DB_BG3PB_DECIMAL_DMX_SHIFT 0 -#define REG_G2S_DB_BG3PB_DECIMAL_DMX_SIZE 8 -#define REG_G2S_DB_BG3PB_DECIMAL_DMX_MASK 0x00ff - -#ifndef SDK_ASM -#define REG_G2S_DB_BG3PB_FIELD(s, integer_dmx, decimal_dmx) \ - (u16)( \ - ((u32)(s) << REG_G2S_DB_BG3PB_S_SHIFT) | \ - ((u32)(integer_dmx) << REG_G2S_DB_BG3PB_INTEGER_DMX_SHIFT) | \ - ((u32)(decimal_dmx) << REG_G2S_DB_BG3PB_DECIMAL_DMX_SHIFT)) -#endif - -#define REG_G2S_DB_BG3PC_S_SHIFT 15 -#define REG_G2S_DB_BG3PC_S_SIZE 1 -#define REG_G2S_DB_BG3PC_S_MASK 0x8000 - -#define REG_G2S_DB_BG3PC_INTEGER_DY_SHIFT 8 -#define REG_G2S_DB_BG3PC_INTEGER_DY_SIZE 7 -#define REG_G2S_DB_BG3PC_INTEGER_DY_MASK 0x7f00 - -#define REG_G2S_DB_BG3PC_DECIMAL_DY_SHIFT 0 -#define REG_G2S_DB_BG3PC_DECIMAL_DY_SIZE 8 -#define REG_G2S_DB_BG3PC_DECIMAL_DY_MASK 0x00ff - -#ifndef SDK_ASM -#define REG_G2S_DB_BG3PC_FIELD(s, integer_dy, decimal_dy) \ - (u16)( \ - ((u32)(s) << REG_G2S_DB_BG3PC_S_SHIFT) | \ - ((u32)(integer_dy) << REG_G2S_DB_BG3PC_INTEGER_DY_SHIFT) | \ - ((u32)(decimal_dy) << REG_G2S_DB_BG3PC_DECIMAL_DY_SHIFT)) -#endif - -#define REG_G2S_DB_BG3PD_S_SHIFT 15 -#define REG_G2S_DB_BG3PD_S_SIZE 1 -#define REG_G2S_DB_BG3PD_S_MASK 0x8000 - -#define REG_G2S_DB_BG3PD_INTEGER_DMY_SHIFT 8 -#define REG_G2S_DB_BG3PD_INTEGER_DMY_SIZE 7 -#define REG_G2S_DB_BG3PD_INTEGER_DMY_MASK 0x7f00 - -#define REG_G2S_DB_BG3PD_DECIMAL_DMY_SHIFT 0 -#define REG_G2S_DB_BG3PD_DECIMAL_DMY_SIZE 8 -#define REG_G2S_DB_BG3PD_DECIMAL_DMY_MASK 0x00ff - -#ifndef SDK_ASM -#define REG_G2S_DB_BG3PD_FIELD(s, integer_dmy, decimal_dmy) \ - (u16)( \ - ((u32)(s) << REG_G2S_DB_BG3PD_S_SHIFT) | \ - ((u32)(integer_dmy) << REG_G2S_DB_BG3PD_INTEGER_DMY_SHIFT) | \ - ((u32)(decimal_dmy) << REG_G2S_DB_BG3PD_DECIMAL_DMY_SHIFT)) -#endif - -#define REG_G2S_DB_BG3X_S_SHIFT 27 -#define REG_G2S_DB_BG3X_S_SIZE 1 -#define REG_G2S_DB_BG3X_S_MASK 0x08000000 - -#define REG_G2S_DB_BG3X_INTEGER_SX_SHIFT 8 -#define REG_G2S_DB_BG3X_INTEGER_SX_SIZE 19 -#define REG_G2S_DB_BG3X_INTEGER_SX_MASK 0x07ffff00 - -#define REG_G2S_DB_BG3X_DECIMAL_SX_SHIFT 0 -#define REG_G2S_DB_BG3X_DECIMAL_SX_SIZE 8 -#define REG_G2S_DB_BG3X_DECIMAL_SX_MASK 0x000000ff - -#ifndef SDK_ASM -#define REG_G2S_DB_BG3X_FIELD(s, integer_sx, decimal_sx) \ - (u32)( \ - ((u32)(s) << REG_G2S_DB_BG3X_S_SHIFT) | \ - ((u32)(integer_sx) << REG_G2S_DB_BG3X_INTEGER_SX_SHIFT) | \ - ((u32)(decimal_sx) << REG_G2S_DB_BG3X_DECIMAL_SX_SHIFT)) -#endif - -#define REG_G2S_DB_BG3Y_S_SHIFT 27 -#define REG_G2S_DB_BG3Y_S_SIZE 1 -#define REG_G2S_DB_BG3Y_S_MASK 0x08000000 - -#define REG_G2S_DB_BG3Y_INTEGER_SY_SHIFT 8 -#define REG_G2S_DB_BG3Y_INTEGER_SY_SIZE 19 -#define REG_G2S_DB_BG3Y_INTEGER_SY_MASK 0x07ffff00 - -#define REG_G2S_DB_BG3Y_DECIMAL_SY_SHIFT 0 -#define REG_G2S_DB_BG3Y_DECIMAL_SY_SIZE 8 -#define REG_G2S_DB_BG3Y_DECIMAL_SY_MASK 0x000000ff - -#ifndef SDK_ASM -#define REG_G2S_DB_BG3Y_FIELD(s, integer_sy, decimal_sy) \ - (u32)( \ - ((u32)(s) << REG_G2S_DB_BG3Y_S_SHIFT) | \ - ((u32)(integer_sy) << REG_G2S_DB_BG3Y_INTEGER_SY_SHIFT) | \ - ((u32)(decimal_sy) << REG_G2S_DB_BG3Y_DECIMAL_SY_SHIFT)) -#endif - -#define REG_G2S_DB_WIN0H_LEFTX_SHIFT 8 -#define REG_G2S_DB_WIN0H_LEFTX_SIZE 8 -#define REG_G2S_DB_WIN0H_LEFTX_MASK 0xff00 - -#define REG_G2S_DB_WIN0H_RIGHTX_SHIFT 0 -#define REG_G2S_DB_WIN0H_RIGHTX_SIZE 8 -#define REG_G2S_DB_WIN0H_RIGHTX_MASK 0x00ff - -#ifndef SDK_ASM -#define REG_G2S_DB_WIN0H_FIELD(leftx, rightx) \ - (u16)( \ - ((u32)(leftx) << REG_G2S_DB_WIN0H_LEFTX_SHIFT) | \ - ((u32)(rightx) << REG_G2S_DB_WIN0H_RIGHTX_SHIFT)) -#endif - -#define REG_G2S_DB_WIN1H_LEFTX_SHIFT 8 -#define REG_G2S_DB_WIN1H_LEFTX_SIZE 8 -#define REG_G2S_DB_WIN1H_LEFTX_MASK 0xff00 - -#define REG_G2S_DB_WIN1H_RIGHTX_SHIFT 0 -#define REG_G2S_DB_WIN1H_RIGHTX_SIZE 8 -#define REG_G2S_DB_WIN1H_RIGHTX_MASK 0x00ff - -#ifndef SDK_ASM -#define REG_G2S_DB_WIN1H_FIELD(leftx, rightx) \ - (u16)( \ - ((u32)(leftx) << REG_G2S_DB_WIN1H_LEFTX_SHIFT) | \ - ((u32)(rightx) << REG_G2S_DB_WIN1H_RIGHTX_SHIFT)) -#endif - -#define REG_G2S_DB_WIN0V_UPY_SHIFT 8 -#define REG_G2S_DB_WIN0V_UPY_SIZE 8 -#define REG_G2S_DB_WIN0V_UPY_MASK 0xff00 - -#define REG_G2S_DB_WIN0V_DOWNY_SHIFT 0 -#define REG_G2S_DB_WIN0V_DOWNY_SIZE 8 -#define REG_G2S_DB_WIN0V_DOWNY_MASK 0x00ff - -#ifndef SDK_ASM -#define REG_G2S_DB_WIN0V_FIELD(upy, downy) \ - (u16)( \ - ((u32)(upy) << REG_G2S_DB_WIN0V_UPY_SHIFT) | \ - ((u32)(downy) << REG_G2S_DB_WIN0V_DOWNY_SHIFT)) -#endif - -#define REG_G2S_DB_WIN1V_UPY_SHIFT 8 -#define REG_G2S_DB_WIN1V_UPY_SIZE 8 -#define REG_G2S_DB_WIN1V_UPY_MASK 0xff00 - -#define REG_G2S_DB_WIN1V_DOWNY_SHIFT 0 -#define REG_G2S_DB_WIN1V_DOWNY_SIZE 8 -#define REG_G2S_DB_WIN1V_DOWNY_MASK 0x00ff - -#ifndef SDK_ASM -#define REG_G2S_DB_WIN1V_FIELD(upy, downy) \ - (u16)( \ - ((u32)(upy) << REG_G2S_DB_WIN1V_UPY_SHIFT) | \ - ((u32)(downy) << REG_G2S_DB_WIN1V_DOWNY_SHIFT)) -#endif - -#define REG_G2S_DB_WININ_WIN1IN_SHIFT 8 -#define REG_G2S_DB_WININ_WIN1IN_SIZE 6 -#define REG_G2S_DB_WININ_WIN1IN_MASK 0x3f00 - -#define REG_G2S_DB_WININ_WIN0IN_SHIFT 0 -#define REG_G2S_DB_WININ_WIN0IN_SIZE 6 -#define REG_G2S_DB_WININ_WIN0IN_MASK 0x003f - -#ifndef SDK_ASM -#define REG_G2S_DB_WININ_FIELD(win1in, win0in) \ - (u16)( \ - ((u32)(win1in) << REG_G2S_DB_WININ_WIN1IN_SHIFT) | \ - ((u32)(win0in) << REG_G2S_DB_WININ_WIN0IN_SHIFT)) -#endif - -#define REG_G2S_DB_WINOUT_OBJWININ_SHIFT 8 -#define REG_G2S_DB_WINOUT_OBJWININ_SIZE 6 -#define REG_G2S_DB_WINOUT_OBJWININ_MASK 0x3f00 - -#define REG_G2S_DB_WINOUT_WINOUT_SHIFT 0 -#define REG_G2S_DB_WINOUT_WINOUT_SIZE 6 -#define REG_G2S_DB_WINOUT_WINOUT_MASK 0x003f - -#ifndef SDK_ASM -#define REG_G2S_DB_WINOUT_FIELD(objwinin, winout) \ - (u16)( \ - ((u32)(objwinin) << REG_G2S_DB_WINOUT_OBJWININ_SHIFT) | \ - ((u32)(winout) << REG_G2S_DB_WINOUT_WINOUT_SHIFT)) -#endif - -#define REG_G2S_DB_MOSAIC_OBJVSIZE_SHIFT 12 -#define REG_G2S_DB_MOSAIC_OBJVSIZE_SIZE 4 -#define REG_G2S_DB_MOSAIC_OBJVSIZE_MASK 0xf000 - -#define REG_G2S_DB_MOSAIC_OBJHSIZE_SHIFT 8 -#define REG_G2S_DB_MOSAIC_OBJHSIZE_SIZE 4 -#define REG_G2S_DB_MOSAIC_OBJHSIZE_MASK 0x0f00 - -#define REG_G2S_DB_MOSAIC_BGVSIZE_SHIFT 4 -#define REG_G2S_DB_MOSAIC_BGVSIZE_SIZE 4 -#define REG_G2S_DB_MOSAIC_BGVSIZE_MASK 0x00f0 - -#define REG_G2S_DB_MOSAIC_BGHSIZE_SHIFT 0 -#define REG_G2S_DB_MOSAIC_BGHSIZE_SIZE 4 -#define REG_G2S_DB_MOSAIC_BGHSIZE_MASK 0x000f - -#ifndef SDK_ASM -#define REG_G2S_DB_MOSAIC_FIELD(objvsize, objhsize, bgvsize, bghsize) \ - (u16)( \ - ((u32)(objvsize) << REG_G2S_DB_MOSAIC_OBJVSIZE_SHIFT) | \ - ((u32)(objhsize) << REG_G2S_DB_MOSAIC_OBJHSIZE_SHIFT) | \ - ((u32)(bgvsize) << REG_G2S_DB_MOSAIC_BGVSIZE_SHIFT) | \ - ((u32)(bghsize) << REG_G2S_DB_MOSAIC_BGHSIZE_SHIFT)) -#endif - -#define REG_G2S_DB_BLDCNT_PLANE2_SHIFT 8 -#define REG_G2S_DB_BLDCNT_PLANE2_SIZE 6 -#define REG_G2S_DB_BLDCNT_PLANE2_MASK 0x3f00 - -#define REG_G2S_DB_BLDCNT_EFFECT_SHIFT 6 -#define REG_G2S_DB_BLDCNT_EFFECT_SIZE 2 -#define REG_G2S_DB_BLDCNT_EFFECT_MASK 0x00c0 - -#define REG_G2S_DB_BLDCNT_PLANE1_SHIFT 0 -#define REG_G2S_DB_BLDCNT_PLANE1_SIZE 6 -#define REG_G2S_DB_BLDCNT_PLANE1_MASK 0x003f - -#ifndef SDK_ASM -#define REG_G2S_DB_BLDCNT_FIELD(plane2, effect, plane1) \ - (u16)( \ - ((u32)(plane2) << REG_G2S_DB_BLDCNT_PLANE2_SHIFT) | \ - ((u32)(effect) << REG_G2S_DB_BLDCNT_EFFECT_SHIFT) | \ - ((u32)(plane1) << REG_G2S_DB_BLDCNT_PLANE1_SHIFT)) -#endif - -#define REG_G2S_DB_BLDALPHA_EVB_SHIFT 8 -#define REG_G2S_DB_BLDALPHA_EVB_SIZE 5 -#define REG_G2S_DB_BLDALPHA_EVB_MASK 0x1f00 - -#define REG_G2S_DB_BLDALPHA_EVA_SHIFT 0 -#define REG_G2S_DB_BLDALPHA_EVA_SIZE 5 -#define REG_G2S_DB_BLDALPHA_EVA_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G2S_DB_BLDALPHA_FIELD(evb, eva) \ - (u16)( \ - ((u32)(evb) << REG_G2S_DB_BLDALPHA_EVB_SHIFT) | \ - ((u32)(eva) << REG_G2S_DB_BLDALPHA_EVA_SHIFT)) -#endif - -#define REG_G2S_DB_BLDY_EVY_SHIFT 0 -#define REG_G2S_DB_BLDY_EVY_SIZE 5 -#define REG_G2S_DB_BLDY_EVY_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G2S_DB_BLDY_FIELD(evy) \ - (u16)( \ - ((u32)(evy) << REG_G2S_DB_BLDY_EVY_SHIFT)) -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/hw/ARM9/ioreg_G3.h b/subprojects/NitroSDK/include/nitro/hw/ARM9/ioreg_G3.h deleted file mode 100644 index 30f8e232ed..0000000000 --- a/subprojects/NitroSDK/include/nitro/hw/ARM9/ioreg_G3.h +++ /dev/null @@ -1,1115 +0,0 @@ -#ifndef NITRO_HW_ARM9_IOREG_G3_H_ -#define NITRO_HW_ARM9_IOREG_G3_H_ - -#ifndef SDK_ASM -#include -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define REG_MTX_MODE_OFFSET 0x440 -#define REG_MTX_MODE_ADDR (HW_REG_BASE + REG_MTX_MODE_OFFSET) -#define reg_G3_MTX_MODE (*( REGType32v *)REG_MTX_MODE_ADDR) - -#define REG_MTX_PUSH_OFFSET 0x444 -#define REG_MTX_PUSH_ADDR (HW_REG_BASE + REG_MTX_PUSH_OFFSET) -#define reg_G3_MTX_PUSH (*( REGType32v *)REG_MTX_PUSH_ADDR) - -#define REG_MTX_POP_OFFSET 0x448 -#define REG_MTX_POP_ADDR (HW_REG_BASE + REG_MTX_POP_OFFSET) -#define reg_G3_MTX_POP (*( REGType32v *)REG_MTX_POP_ADDR) - -#define REG_MTX_STORE_OFFSET 0x44c -#define REG_MTX_STORE_ADDR (HW_REG_BASE + REG_MTX_STORE_OFFSET) -#define reg_G3_MTX_STORE (*( REGType32v *)REG_MTX_STORE_ADDR) - -#define REG_MTX_RESTORE_OFFSET 0x450 -#define REG_MTX_RESTORE_ADDR (HW_REG_BASE + REG_MTX_RESTORE_OFFSET) -#define reg_G3_MTX_RESTORE (*( REGType32v *)REG_MTX_RESTORE_ADDR) - -#define REG_MTX_IDENTITY_OFFSET 0x454 -#define REG_MTX_IDENTITY_ADDR (HW_REG_BASE + REG_MTX_IDENTITY_OFFSET) -#define reg_G3_MTX_IDENTITY (*( REGType32v *)REG_MTX_IDENTITY_ADDR) - -#define REG_MTX_LOAD_4x4_OFFSET 0x458 -#define REG_MTX_LOAD_4x4_ADDR (HW_REG_BASE + REG_MTX_LOAD_4x4_OFFSET) -#define reg_G3_MTX_LOAD_4x4 (*( REGType32v *)REG_MTX_LOAD_4x4_ADDR) - -#define REG_MTX_LOAD_4x3_OFFSET 0x45c -#define REG_MTX_LOAD_4x3_ADDR (HW_REG_BASE + REG_MTX_LOAD_4x3_OFFSET) -#define reg_G3_MTX_LOAD_4x3 (*( REGType32v *)REG_MTX_LOAD_4x3_ADDR) - -#define REG_MTX_MULT_4x4_OFFSET 0x460 -#define REG_MTX_MULT_4x4_ADDR (HW_REG_BASE + REG_MTX_MULT_4x4_OFFSET) -#define reg_G3_MTX_MULT_4x4 (*( REGType32v *)REG_MTX_MULT_4x4_ADDR) - -#define REG_MTX_MULT_4x3_OFFSET 0x464 -#define REG_MTX_MULT_4x3_ADDR (HW_REG_BASE + REG_MTX_MULT_4x3_OFFSET) -#define reg_G3_MTX_MULT_4x3 (*( REGType32v *)REG_MTX_MULT_4x3_ADDR) - -#define REG_MTX_MULT_3x3_OFFSET 0x468 -#define REG_MTX_MULT_3x3_ADDR (HW_REG_BASE + REG_MTX_MULT_3x3_OFFSET) -#define reg_G3_MTX_MULT_3x3 (*( REGType32v *)REG_MTX_MULT_3x3_ADDR) - -#define REG_MTX_SCALE_OFFSET 0x46c -#define REG_MTX_SCALE_ADDR (HW_REG_BASE + REG_MTX_SCALE_OFFSET) -#define reg_G3_MTX_SCALE (*( REGType32v *)REG_MTX_SCALE_ADDR) - -#define REG_MTX_TRANS_OFFSET 0x470 -#define REG_MTX_TRANS_ADDR (HW_REG_BASE + REG_MTX_TRANS_OFFSET) -#define reg_G3_MTX_TRANS (*( REGType32v *)REG_MTX_TRANS_ADDR) - -#define REG_COLOR_OFFSET 0x480 -#define REG_COLOR_ADDR (HW_REG_BASE + REG_COLOR_OFFSET) -#define reg_G3_COLOR (*( REGType32v *)REG_COLOR_ADDR) - -#define REG_NORMAL_OFFSET 0x484 -#define REG_NORMAL_ADDR (HW_REG_BASE + REG_NORMAL_OFFSET) -#define reg_G3_NORMAL (*( REGType32v *)REG_NORMAL_ADDR) - -#define REG_TEXCOORD_OFFSET 0x488 -#define REG_TEXCOORD_ADDR (HW_REG_BASE + REG_TEXCOORD_OFFSET) -#define reg_G3_TEXCOORD (*( REGType32v *)REG_TEXCOORD_ADDR) - -#define REG_VTX_16_OFFSET 0x48c -#define REG_VTX_16_ADDR (HW_REG_BASE + REG_VTX_16_OFFSET) -#define reg_G3_VTX_16 (*( REGType32v *)REG_VTX_16_ADDR) - -#define REG_VTX_10_OFFSET 0x490 -#define REG_VTX_10_ADDR (HW_REG_BASE + REG_VTX_10_OFFSET) -#define reg_G3_VTX_10 (*( REGType32v *)REG_VTX_10_ADDR) - -#define REG_VTX_XY_OFFSET 0x494 -#define REG_VTX_XY_ADDR (HW_REG_BASE + REG_VTX_XY_OFFSET) -#define reg_G3_VTX_XY (*( REGType32v *)REG_VTX_XY_ADDR) - -#define REG_VTX_XZ_OFFSET 0x498 -#define REG_VTX_XZ_ADDR (HW_REG_BASE + REG_VTX_XZ_OFFSET) -#define reg_G3_VTX_XZ (*( REGType32v *)REG_VTX_XZ_ADDR) - -#define REG_VTX_YZ_OFFSET 0x49c -#define REG_VTX_YZ_ADDR (HW_REG_BASE + REG_VTX_YZ_OFFSET) -#define reg_G3_VTX_YZ (*( REGType32v *)REG_VTX_YZ_ADDR) - -#define REG_VTX_DIFF_OFFSET 0x4a0 -#define REG_VTX_DIFF_ADDR (HW_REG_BASE + REG_VTX_DIFF_OFFSET) -#define reg_G3_VTX_DIFF (*( REGType32v *)REG_VTX_DIFF_ADDR) - -#define REG_POLYGON_ATTR_OFFSET 0x4a4 -#define REG_POLYGON_ATTR_ADDR (HW_REG_BASE + REG_POLYGON_ATTR_OFFSET) -#define reg_G3_POLYGON_ATTR (*( REGType32v *)REG_POLYGON_ATTR_ADDR) - -#define REG_TEXIMAGE_PARAM_OFFSET 0x4a8 -#define REG_TEXIMAGE_PARAM_ADDR (HW_REG_BASE + REG_TEXIMAGE_PARAM_OFFSET) -#define reg_G3_TEXIMAGE_PARAM (*( REGType32v *)REG_TEXIMAGE_PARAM_ADDR) - -#define REG_TEXPLTT_BASE_OFFSET 0x4ac -#define REG_TEXPLTT_BASE_ADDR (HW_REG_BASE + REG_TEXPLTT_BASE_OFFSET) -#define reg_G3_TEXPLTT_BASE (*( REGType32v *)REG_TEXPLTT_BASE_ADDR) - -#define REG_DIF_AMB_OFFSET 0x4c0 -#define REG_DIF_AMB_ADDR (HW_REG_BASE + REG_DIF_AMB_OFFSET) -#define reg_G3_DIF_AMB (*( REGType32v *)REG_DIF_AMB_ADDR) - -#define REG_SPE_EMI_OFFSET 0x4c4 -#define REG_SPE_EMI_ADDR (HW_REG_BASE + REG_SPE_EMI_OFFSET) -#define reg_G3_SPE_EMI (*( REGType32v *)REG_SPE_EMI_ADDR) - -#define REG_LIGHT_VECTOR_OFFSET 0x4c8 -#define REG_LIGHT_VECTOR_ADDR (HW_REG_BASE + REG_LIGHT_VECTOR_OFFSET) -#define reg_G3_LIGHT_VECTOR (*( REGType32v *)REG_LIGHT_VECTOR_ADDR) - -#define REG_LIGHT_COLOR_OFFSET 0x4cc -#define REG_LIGHT_COLOR_ADDR (HW_REG_BASE + REG_LIGHT_COLOR_OFFSET) -#define reg_G3_LIGHT_COLOR (*( REGType32v *)REG_LIGHT_COLOR_ADDR) - -#define REG_SHININESS_OFFSET 0x4d0 -#define REG_SHININESS_ADDR (HW_REG_BASE + REG_SHININESS_OFFSET) -#define reg_G3_SHININESS (*( REGType32v *)REG_SHININESS_ADDR) - -#define REG_BEGIN_VTXS_OFFSET 0x500 -#define REG_BEGIN_VTXS_ADDR (HW_REG_BASE + REG_BEGIN_VTXS_OFFSET) -#define reg_G3_BEGIN_VTXS (*( REGType32v *)REG_BEGIN_VTXS_ADDR) - -#define REG_END_VTXS_OFFSET 0x504 -#define REG_END_VTXS_ADDR (HW_REG_BASE + REG_END_VTXS_OFFSET) -#define reg_G3_END_VTXS (*( REGType32v *)REG_END_VTXS_ADDR) - -#define REG_SWAP_BUFFERS_OFFSET 0x540 -#define REG_SWAP_BUFFERS_ADDR (HW_REG_BASE + REG_SWAP_BUFFERS_OFFSET) -#define reg_G3_SWAP_BUFFERS (*( REGType32v *)REG_SWAP_BUFFERS_ADDR) - -#define REG_VIEWPORT_OFFSET 0x580 -#define REG_VIEWPORT_ADDR (HW_REG_BASE + REG_VIEWPORT_OFFSET) -#define reg_G3_VIEWPORT (*( REGType32v *)REG_VIEWPORT_ADDR) - -#define REG_BOX_TEST_OFFSET 0x5c0 -#define REG_BOX_TEST_ADDR (HW_REG_BASE + REG_BOX_TEST_OFFSET) -#define reg_G3_BOX_TEST (*( REGType32v *)REG_BOX_TEST_ADDR) - -#define REG_POS_TEST_OFFSET 0x5c4 -#define REG_POS_TEST_ADDR (HW_REG_BASE + REG_POS_TEST_OFFSET) -#define reg_G3_POS_TEST (*( REGType32v *)REG_POS_TEST_ADDR) - -#define REG_VEC_TEST_OFFSET 0x5c8 -#define REG_VEC_TEST_ADDR (HW_REG_BASE + REG_VEC_TEST_OFFSET) -#define reg_G3_VEC_TEST (*( REGType32v *)REG_VEC_TEST_ADDR) - -#define REG_G3_MTX_MODE_M_SHIFT 0 -#define REG_G3_MTX_MODE_M_SIZE 2 -#define REG_G3_MTX_MODE_M_MASK 0x00000003 - -#ifndef SDK_ASM -#define REG_G3_MTX_MODE_FIELD(m) \ - (u32)( \ - ((u32)(m) << REG_G3_MTX_MODE_M_SHIFT)) -#endif - -#define REG_G3_MTX_POP_S_SHIFT 5 -#define REG_G3_MTX_POP_S_SIZE 1 -#define REG_G3_MTX_POP_S_MASK 0x00000020 - -#define REG_G3_MTX_POP_INT_SHIFT 0 -#define REG_G3_MTX_POP_INT_SIZE 5 -#define REG_G3_MTX_POP_INT_MASK 0x0000001f - -#ifndef SDK_ASM -#define REG_G3_MTX_POP_FIELD(s, int) \ - (u32)( \ - ((u32)(s) << REG_G3_MTX_POP_S_SHIFT) | \ - ((u32)(int) << REG_G3_MTX_POP_INT_SHIFT)) -#endif - -#define REG_G3_MTX_STORE_INDEX_SHIFT 0 -#define REG_G3_MTX_STORE_INDEX_SIZE 5 -#define REG_G3_MTX_STORE_INDEX_MASK 0x0000001f - -#ifndef SDK_ASM -#define REG_G3_MTX_STORE_FIELD(index) \ - (u32)( \ - ((u32)(index) << REG_G3_MTX_STORE_INDEX_SHIFT)) -#endif - -#define REG_G3_MTX_RESTORE_INDEX_SHIFT 0 -#define REG_G3_MTX_RESTORE_INDEX_SIZE 5 -#define REG_G3_MTX_RESTORE_INDEX_MASK 0x0000001f - -#ifndef SDK_ASM -#define REG_G3_MTX_RESTORE_FIELD(index) \ - (u32)( \ - ((u32)(index) << REG_G3_MTX_RESTORE_INDEX_SHIFT)) -#endif - -#define REG_G3_MTX_LOAD_4x4_S_SHIFT 31 -#define REG_G3_MTX_LOAD_4x4_S_SIZE 1 -#define REG_G3_MTX_LOAD_4x4_S_MASK 0x80000000 - -#define REG_G3_MTX_LOAD_4x4_INTEGER_M44_SHIFT 12 -#define REG_G3_MTX_LOAD_4x4_INTEGER_M44_SIZE 19 -#define REG_G3_MTX_LOAD_4x4_INTEGER_M44_MASK 0x7ffff000 - -#define REG_G3_MTX_LOAD_4x4_DECIMAL_M44_SHIFT 0 -#define REG_G3_MTX_LOAD_4x4_DECIMAL_M44_SIZE 12 -#define REG_G3_MTX_LOAD_4x4_DECIMAL_M44_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3_MTX_LOAD_4x4_FIELD(s, integer_m44, decimal_m44) \ - (u32)( \ - ((u32)(s) << REG_G3_MTX_LOAD_4x4_S_SHIFT) | \ - ((u32)(integer_m44) << REG_G3_MTX_LOAD_4x4_INTEGER_M44_SHIFT) | \ - ((u32)(decimal_m44) << REG_G3_MTX_LOAD_4x4_DECIMAL_M44_SHIFT)) -#endif - -#define REG_G3_MTX_LOAD_4x3_S_SHIFT 31 -#define REG_G3_MTX_LOAD_4x3_S_SIZE 1 -#define REG_G3_MTX_LOAD_4x3_S_MASK 0x80000000 - -#define REG_G3_MTX_LOAD_4x3_INTEGER_M43_SHIFT 12 -#define REG_G3_MTX_LOAD_4x3_INTEGER_M43_SIZE 19 -#define REG_G3_MTX_LOAD_4x3_INTEGER_M43_MASK 0x7ffff000 - -#define REG_G3_MTX_LOAD_4x3_DECIMAL_M43_SHIFT 0 -#define REG_G3_MTX_LOAD_4x3_DECIMAL_M43_SIZE 12 -#define REG_G3_MTX_LOAD_4x3_DECIMAL_M43_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3_MTX_LOAD_4x3_FIELD(s, integer_m43, decimal_m43) \ - (u32)( \ - ((u32)(s) << REG_G3_MTX_LOAD_4x3_S_SHIFT) | \ - ((u32)(integer_m43) << REG_G3_MTX_LOAD_4x3_INTEGER_M43_SHIFT) | \ - ((u32)(decimal_m43) << REG_G3_MTX_LOAD_4x3_DECIMAL_M43_SHIFT)) -#endif - -#define REG_G3_MTX_MULT_4x4_S_SHIFT 31 -#define REG_G3_MTX_MULT_4x4_S_SIZE 1 -#define REG_G3_MTX_MULT_4x4_S_MASK 0x80000000 - -#define REG_G3_MTX_MULT_4x4_INTEGER_M44_SHIFT 12 -#define REG_G3_MTX_MULT_4x4_INTEGER_M44_SIZE 19 -#define REG_G3_MTX_MULT_4x4_INTEGER_M44_MASK 0x7ffff000 - -#define REG_G3_MTX_MULT_4x4_DECIMAL_M44_SHIFT 0 -#define REG_G3_MTX_MULT_4x4_DECIMAL_M44_SIZE 12 -#define REG_G3_MTX_MULT_4x4_DECIMAL_M44_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3_MTX_MULT_4x4_FIELD(s, integer_m44, decimal_m44) \ - (u32)( \ - ((u32)(s) << REG_G3_MTX_MULT_4x4_S_SHIFT) | \ - ((u32)(integer_m44) << REG_G3_MTX_MULT_4x4_INTEGER_M44_SHIFT) | \ - ((u32)(decimal_m44) << REG_G3_MTX_MULT_4x4_DECIMAL_M44_SHIFT)) -#endif - -#define REG_G3_MTX_MULT_4x3_S_SHIFT 31 -#define REG_G3_MTX_MULT_4x3_S_SIZE 1 -#define REG_G3_MTX_MULT_4x3_S_MASK 0x80000000 - -#define REG_G3_MTX_MULT_4x3_INTEGER_M43_SHIFT 12 -#define REG_G3_MTX_MULT_4x3_INTEGER_M43_SIZE 19 -#define REG_G3_MTX_MULT_4x3_INTEGER_M43_MASK 0x7ffff000 - -#define REG_G3_MTX_MULT_4x3_DECIMAL_M43_SHIFT 0 -#define REG_G3_MTX_MULT_4x3_DECIMAL_M43_SIZE 12 -#define REG_G3_MTX_MULT_4x3_DECIMAL_M43_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3_MTX_MULT_4x3_FIELD(s, integer_m43, decimal_m43) \ - (u32)( \ - ((u32)(s) << REG_G3_MTX_MULT_4x3_S_SHIFT) | \ - ((u32)(integer_m43) << REG_G3_MTX_MULT_4x3_INTEGER_M43_SHIFT) | \ - ((u32)(decimal_m43) << REG_G3_MTX_MULT_4x3_DECIMAL_M43_SHIFT)) -#endif - -#define REG_G3_MTX_MULT_3x3_S_SHIFT 31 -#define REG_G3_MTX_MULT_3x3_S_SIZE 1 -#define REG_G3_MTX_MULT_3x3_S_MASK 0x80000000 - -#define REG_G3_MTX_MULT_3x3_INTEGER_M33_SHIFT 12 -#define REG_G3_MTX_MULT_3x3_INTEGER_M33_SIZE 19 -#define REG_G3_MTX_MULT_3x3_INTEGER_M33_MASK 0x7ffff000 - -#define REG_G3_MTX_MULT_3x3_DECIMAL_M33_SHIFT 0 -#define REG_G3_MTX_MULT_3x3_DECIMAL_M33_SIZE 12 -#define REG_G3_MTX_MULT_3x3_DECIMAL_M33_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3_MTX_MULT_3x3_FIELD(s, integer_m33, decimal_m33) \ - (u32)( \ - ((u32)(s) << REG_G3_MTX_MULT_3x3_S_SHIFT) | \ - ((u32)(integer_m33) << REG_G3_MTX_MULT_3x3_INTEGER_M33_SHIFT) | \ - ((u32)(decimal_m33) << REG_G3_MTX_MULT_3x3_DECIMAL_M33_SHIFT)) -#endif - -#define REG_G3_MTX_SCALE_S_SHIFT 31 -#define REG_G3_MTX_SCALE_S_SIZE 1 -#define REG_G3_MTX_SCALE_S_MASK 0x80000000 - -#define REG_G3_MTX_SCALE_INTEGER_SCALE_SHIFT 12 -#define REG_G3_MTX_SCALE_INTEGER_SCALE_SIZE 19 -#define REG_G3_MTX_SCALE_INTEGER_SCALE_MASK 0x7ffff000 - -#define REG_G3_MTX_SCALE_DECIMAL_SCALE_SHIFT 0 -#define REG_G3_MTX_SCALE_DECIMAL_SCALE_SIZE 12 -#define REG_G3_MTX_SCALE_DECIMAL_SCALE_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3_MTX_SCALE_FIELD(s, integer_scale, decimal_scale) \ - (u32)( \ - ((u32)(s) << REG_G3_MTX_SCALE_S_SHIFT) | \ - ((u32)(integer_scale) << REG_G3_MTX_SCALE_INTEGER_SCALE_SHIFT) | \ - ((u32)(decimal_scale) << REG_G3_MTX_SCALE_DECIMAL_SCALE_SHIFT)) -#endif - -#define REG_G3_MTX_TRANS_S_SHIFT 31 -#define REG_G3_MTX_TRANS_S_SIZE 1 -#define REG_G3_MTX_TRANS_S_MASK 0x80000000 - -#define REG_G3_MTX_TRANS_INTEGER_TRANSLATE_SHIFT 12 -#define REG_G3_MTX_TRANS_INTEGER_TRANSLATE_SIZE 19 -#define REG_G3_MTX_TRANS_INTEGER_TRANSLATE_MASK 0x7ffff000 - -#define REG_G3_MTX_TRANS_DECIMAL_TRANSLATE_SHIFT 0 -#define REG_G3_MTX_TRANS_DECIMAL_TRANSLATE_SIZE 12 -#define REG_G3_MTX_TRANS_DECIMAL_TRANSLATE_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3_MTX_TRANS_FIELD(s, integer_translate, decimal_translate) \ - (u32)( \ - ((u32)(s) << REG_G3_MTX_TRANS_S_SHIFT) | \ - ((u32)(integer_translate) << REG_G3_MTX_TRANS_INTEGER_TRANSLATE_SHIFT) | \ - ((u32)(decimal_translate) << REG_G3_MTX_TRANS_DECIMAL_TRANSLATE_SHIFT)) -#endif - -#define REG_G3_COLOR_BLUE_SHIFT 10 -#define REG_G3_COLOR_BLUE_SIZE 5 -#define REG_G3_COLOR_BLUE_MASK 0x00007c00 - -#define REG_G3_COLOR_GREEN_SHIFT 5 -#define REG_G3_COLOR_GREEN_SIZE 5 -#define REG_G3_COLOR_GREEN_MASK 0x000003e0 - -#define REG_G3_COLOR_RED_SHIFT 0 -#define REG_G3_COLOR_RED_SIZE 5 -#define REG_G3_COLOR_RED_MASK 0x0000001f - -#ifndef SDK_ASM -#define REG_G3_COLOR_FIELD(blue, green, red) \ - (u32)( \ - ((u32)(blue) << REG_G3_COLOR_BLUE_SHIFT) | \ - ((u32)(green) << REG_G3_COLOR_GREEN_SHIFT) | \ - ((u32)(red) << REG_G3_COLOR_RED_SHIFT)) -#endif - -#define REG_G3_NORMAL_SZ_SHIFT 29 -#define REG_G3_NORMAL_SZ_SIZE 1 -#define REG_G3_NORMAL_SZ_MASK 0x20000000 - -#define REG_G3_NORMAL_NZ_SHIFT 20 -#define REG_G3_NORMAL_NZ_SIZE 9 -#define REG_G3_NORMAL_NZ_MASK 0x1ff00000 - -#define REG_G3_NORMAL_SY_SHIFT 19 -#define REG_G3_NORMAL_SY_SIZE 1 -#define REG_G3_NORMAL_SY_MASK 0x00080000 - -#define REG_G3_NORMAL_NY_SHIFT 10 -#define REG_G3_NORMAL_NY_SIZE 9 -#define REG_G3_NORMAL_NY_MASK 0x0007fc00 - -#define REG_G3_NORMAL_SX_SHIFT 9 -#define REG_G3_NORMAL_SX_SIZE 1 -#define REG_G3_NORMAL_SX_MASK 0x00000200 - -#define REG_G3_NORMAL_NX_SHIFT 0 -#define REG_G3_NORMAL_NX_SIZE 9 -#define REG_G3_NORMAL_NX_MASK 0x000001ff - -#ifndef SDK_ASM -#define REG_G3_NORMAL_FIELD(sz, nz, sy, ny, sx, nx) \ - (u32)( \ - ((u32)(sz) << REG_G3_NORMAL_SZ_SHIFT) | \ - ((u32)(nz) << REG_G3_NORMAL_NZ_SHIFT) | \ - ((u32)(sy) << REG_G3_NORMAL_SY_SHIFT) | \ - ((u32)(ny) << REG_G3_NORMAL_NY_SHIFT) | \ - ((u32)(sx) << REG_G3_NORMAL_SX_SHIFT) | \ - ((u32)(nx) << REG_G3_NORMAL_NX_SHIFT)) -#endif - -#define REG_G3_TEXCOORD_ST_SHIFT 31 -#define REG_G3_TEXCOORD_ST_SIZE 1 -#define REG_G3_TEXCOORD_ST_MASK 0x80000000 - -#define REG_G3_TEXCOORD_INTEGER_SHIFT 20 -#define REG_G3_TEXCOORD_INTEGER_SIZE 11 -#define REG_G3_TEXCOORD_INTEGER_MASK 0x7ff00000 - -#define REG_G3_TEXCOORD_DECIMAL_T_SHIFT 16 -#define REG_G3_TEXCOORD_DECIMAL_T_SIZE 4 -#define REG_G3_TEXCOORD_DECIMAL_T_MASK 0x000f0000 - -#define REG_G3_TEXCOORD_SS_SHIFT 15 -#define REG_G3_TEXCOORD_SS_SIZE 1 -#define REG_G3_TEXCOORD_SS_MASK 0x00008000 - -#define REG_G3_TEXCOORD_INTEGER_S_SHIFT 4 -#define REG_G3_TEXCOORD_INTEGER_S_SIZE 11 -#define REG_G3_TEXCOORD_INTEGER_S_MASK 0x00007ff0 - -#define REG_G3_TEXCOORD_DECIMAL_S_SHIFT 0 -#define REG_G3_TEXCOORD_DECIMAL_S_SIZE 4 -#define REG_G3_TEXCOORD_DECIMAL_S_MASK 0x0000000f - -#ifndef SDK_ASM -#define REG_G3_TEXCOORD_FIELD(st, integer, decimal_t, ss, integer_s, decimal_s) \ - (u32)( \ - ((u32)(st) << REG_G3_TEXCOORD_ST_SHIFT) | \ - ((u32)(integer) << REG_G3_TEXCOORD_INTEGER_SHIFT) | \ - ((u32)(decimal_t) << REG_G3_TEXCOORD_DECIMAL_T_SHIFT) | \ - ((u32)(ss) << REG_G3_TEXCOORD_SS_SHIFT) | \ - ((u32)(integer_s) << REG_G3_TEXCOORD_INTEGER_S_SHIFT) | \ - ((u32)(decimal_s) << REG_G3_TEXCOORD_DECIMAL_S_SHIFT)) -#endif - -#define REG_G3_VTX_16_SY_SHIFT 31 -#define REG_G3_VTX_16_SY_SIZE 1 -#define REG_G3_VTX_16_SY_MASK 0x80000000 - -#define REG_G3_VTX_16_INT_Y_SHIFT 28 -#define REG_G3_VTX_16_INT_Y_SIZE 3 -#define REG_G3_VTX_16_INT_Y_MASK 0x70000000 - -#define REG_G3_VTX_16_DECIMAL_Y_SHIFT 16 -#define REG_G3_VTX_16_DECIMAL_Y_SIZE 12 -#define REG_G3_VTX_16_DECIMAL_Y_MASK 0x0fff0000 - -#define REG_G3_VTX_16_SX_SHIFT 15 -#define REG_G3_VTX_16_SX_SIZE 1 -#define REG_G3_VTX_16_SX_MASK 0x00008000 - -#define REG_G3_VTX_16_INT_X_SHIFT 12 -#define REG_G3_VTX_16_INT_X_SIZE 3 -#define REG_G3_VTX_16_INT_X_MASK 0x00007000 - -#define REG_G3_VTX_16_DECIMAL_X_SHIFT 0 -#define REG_G3_VTX_16_DECIMAL_X_SIZE 12 -#define REG_G3_VTX_16_DECIMAL_X_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3_VTX_16_FIELD(sy, int_y, decimal_y, sx, int_x, decimal_x) \ - (u32)( \ - ((u32)(sy) << REG_G3_VTX_16_SY_SHIFT) | \ - ((u32)(int_y) << REG_G3_VTX_16_INT_Y_SHIFT) | \ - ((u32)(decimal_y) << REG_G3_VTX_16_DECIMAL_Y_SHIFT) | \ - ((u32)(sx) << REG_G3_VTX_16_SX_SHIFT) | \ - ((u32)(int_x) << REG_G3_VTX_16_INT_X_SHIFT) | \ - ((u32)(decimal_x) << REG_G3_VTX_16_DECIMAL_X_SHIFT)) -#endif - -#define REG_G3_VTX_10_SZ_SHIFT 29 -#define REG_G3_VTX_10_SZ_SIZE 1 -#define REG_G3_VTX_10_SZ_MASK 0x20000000 - -#define REG_G3_VTX_10_INT_Z_SHIFT 26 -#define REG_G3_VTX_10_INT_Z_SIZE 3 -#define REG_G3_VTX_10_INT_Z_MASK 0x1c000000 - -#define REG_G3_VTX_10_DECIMAL_Z_SHIFT 20 -#define REG_G3_VTX_10_DECIMAL_Z_SIZE 6 -#define REG_G3_VTX_10_DECIMAL_Z_MASK 0x03f00000 - -#define REG_G3_VTX_10_SY_SHIFT 19 -#define REG_G3_VTX_10_SY_SIZE 1 -#define REG_G3_VTX_10_SY_MASK 0x00080000 - -#define REG_G3_VTX_10_INT_Y_SHIFT 16 -#define REG_G3_VTX_10_INT_Y_SIZE 3 -#define REG_G3_VTX_10_INT_Y_MASK 0x00070000 - -#define REG_G3_VTX_10_DECIMAL_Y_SHIFT 10 -#define REG_G3_VTX_10_DECIMAL_Y_SIZE 6 -#define REG_G3_VTX_10_DECIMAL_Y_MASK 0x0000fc00 - -#define REG_G3_VTX_10_SX_SHIFT 9 -#define REG_G3_VTX_10_SX_SIZE 1 -#define REG_G3_VTX_10_SX_MASK 0x00000200 - -#define REG_G3_VTX_10_INT_X_SHIFT 6 -#define REG_G3_VTX_10_INT_X_SIZE 3 -#define REG_G3_VTX_10_INT_X_MASK 0x000001c0 - -#define REG_G3_VTX_10_DECIMAL_X_SHIFT 0 -#define REG_G3_VTX_10_DECIMAL_X_SIZE 6 -#define REG_G3_VTX_10_DECIMAL_X_MASK 0x0000003f - -#ifndef SDK_ASM -#define REG_G3_VTX_10_FIELD(sz, int_z, decimal_z, sy, int_y, decimal_y, sx, int_x, decimal_x) \ - (u32)( \ - ((u32)(sz) << REG_G3_VTX_10_SZ_SHIFT) | \ - ((u32)(int_z) << REG_G3_VTX_10_INT_Z_SHIFT) | \ - ((u32)(decimal_z) << REG_G3_VTX_10_DECIMAL_Z_SHIFT) | \ - ((u32)(sy) << REG_G3_VTX_10_SY_SHIFT) | \ - ((u32)(int_y) << REG_G3_VTX_10_INT_Y_SHIFT) | \ - ((u32)(decimal_y) << REG_G3_VTX_10_DECIMAL_Y_SHIFT) | \ - ((u32)(sx) << REG_G3_VTX_10_SX_SHIFT) | \ - ((u32)(int_x) << REG_G3_VTX_10_INT_X_SHIFT) | \ - ((u32)(decimal_x) << REG_G3_VTX_10_DECIMAL_X_SHIFT)) -#endif - -#define REG_G3_VTX_XY_SY_SHIFT 31 -#define REG_G3_VTX_XY_SY_SIZE 1 -#define REG_G3_VTX_XY_SY_MASK 0x80000000 - -#define REG_G3_VTX_XY_INT_Y_SHIFT 28 -#define REG_G3_VTX_XY_INT_Y_SIZE 3 -#define REG_G3_VTX_XY_INT_Y_MASK 0x70000000 - -#define REG_G3_VTX_XY_DECIMAL_Y_SHIFT 16 -#define REG_G3_VTX_XY_DECIMAL_Y_SIZE 12 -#define REG_G3_VTX_XY_DECIMAL_Y_MASK 0x0fff0000 - -#define REG_G3_VTX_XY_SX_SHIFT 15 -#define REG_G3_VTX_XY_SX_SIZE 1 -#define REG_G3_VTX_XY_SX_MASK 0x00008000 - -#define REG_G3_VTX_XY_INT_X_SHIFT 12 -#define REG_G3_VTX_XY_INT_X_SIZE 3 -#define REG_G3_VTX_XY_INT_X_MASK 0x00007000 - -#define REG_G3_VTX_XY_DECIMAL_X_SHIFT 0 -#define REG_G3_VTX_XY_DECIMAL_X_SIZE 12 -#define REG_G3_VTX_XY_DECIMAL_X_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3_VTX_XY_FIELD(sy, int_y, decimal_y, sx, int_x, decimal_x) \ - (u32)( \ - ((u32)(sy) << REG_G3_VTX_XY_SY_SHIFT) | \ - ((u32)(int_y) << REG_G3_VTX_XY_INT_Y_SHIFT) | \ - ((u32)(decimal_y) << REG_G3_VTX_XY_DECIMAL_Y_SHIFT) | \ - ((u32)(sx) << REG_G3_VTX_XY_SX_SHIFT) | \ - ((u32)(int_x) << REG_G3_VTX_XY_INT_X_SHIFT) | \ - ((u32)(decimal_x) << REG_G3_VTX_XY_DECIMAL_X_SHIFT)) -#endif - -#define REG_G3_VTX_XZ_SZ_SHIFT 31 -#define REG_G3_VTX_XZ_SZ_SIZE 1 -#define REG_G3_VTX_XZ_SZ_MASK 0x80000000 - -#define REG_G3_VTX_XZ_INT_Z_SHIFT 28 -#define REG_G3_VTX_XZ_INT_Z_SIZE 3 -#define REG_G3_VTX_XZ_INT_Z_MASK 0x70000000 - -#define REG_G3_VTX_XZ_DECIMAL_Z_SHIFT 16 -#define REG_G3_VTX_XZ_DECIMAL_Z_SIZE 12 -#define REG_G3_VTX_XZ_DECIMAL_Z_MASK 0x0fff0000 - -#define REG_G3_VTX_XZ_SX_SHIFT 15 -#define REG_G3_VTX_XZ_SX_SIZE 1 -#define REG_G3_VTX_XZ_SX_MASK 0x00008000 - -#define REG_G3_VTX_XZ_INT_X_SHIFT 12 -#define REG_G3_VTX_XZ_INT_X_SIZE 3 -#define REG_G3_VTX_XZ_INT_X_MASK 0x00007000 - -#define REG_G3_VTX_XZ_DECIMAL_X_SHIFT 0 -#define REG_G3_VTX_XZ_DECIMAL_X_SIZE 12 -#define REG_G3_VTX_XZ_DECIMAL_X_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3_VTX_XZ_FIELD(sz, int_z, decimal_z, sx, int_x, decimal_x) \ - (u32)( \ - ((u32)(sz) << REG_G3_VTX_XZ_SZ_SHIFT) | \ - ((u32)(int_z) << REG_G3_VTX_XZ_INT_Z_SHIFT) | \ - ((u32)(decimal_z) << REG_G3_VTX_XZ_DECIMAL_Z_SHIFT) | \ - ((u32)(sx) << REG_G3_VTX_XZ_SX_SHIFT) | \ - ((u32)(int_x) << REG_G3_VTX_XZ_INT_X_SHIFT) | \ - ((u32)(decimal_x) << REG_G3_VTX_XZ_DECIMAL_X_SHIFT)) -#endif - -#define REG_G3_VTX_YZ_SZ_SHIFT 31 -#define REG_G3_VTX_YZ_SZ_SIZE 1 -#define REG_G3_VTX_YZ_SZ_MASK 0x80000000 - -#define REG_G3_VTX_YZ_INT_Z_SHIFT 28 -#define REG_G3_VTX_YZ_INT_Z_SIZE 3 -#define REG_G3_VTX_YZ_INT_Z_MASK 0x70000000 - -#define REG_G3_VTX_YZ_DECIMAL_Z_SHIFT 16 -#define REG_G3_VTX_YZ_DECIMAL_Z_SIZE 12 -#define REG_G3_VTX_YZ_DECIMAL_Z_MASK 0x0fff0000 - -#define REG_G3_VTX_YZ_SY_SHIFT 15 -#define REG_G3_VTX_YZ_SY_SIZE 1 -#define REG_G3_VTX_YZ_SY_MASK 0x00008000 - -#define REG_G3_VTX_YZ_INT_Y_SHIFT 12 -#define REG_G3_VTX_YZ_INT_Y_SIZE 3 -#define REG_G3_VTX_YZ_INT_Y_MASK 0x00007000 - -#define REG_G3_VTX_YZ_DECIMAL_Y_SHIFT 0 -#define REG_G3_VTX_YZ_DECIMAL_Y_SIZE 12 -#define REG_G3_VTX_YZ_DECIMAL_Y_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3_VTX_YZ_FIELD(sz, int_z, decimal_z, sy, int_y, decimal_y) \ - (u32)( \ - ((u32)(sz) << REG_G3_VTX_YZ_SZ_SHIFT) | \ - ((u32)(int_z) << REG_G3_VTX_YZ_INT_Z_SHIFT) | \ - ((u32)(decimal_z) << REG_G3_VTX_YZ_DECIMAL_Z_SHIFT) | \ - ((u32)(sy) << REG_G3_VTX_YZ_SY_SHIFT) | \ - ((u32)(int_y) << REG_G3_VTX_YZ_INT_Y_SHIFT) | \ - ((u32)(decimal_y) << REG_G3_VTX_YZ_DECIMAL_Y_SHIFT)) -#endif - -#define REG_G3_VTX_DIFF_SZ_SHIFT 29 -#define REG_G3_VTX_DIFF_SZ_SIZE 1 -#define REG_G3_VTX_DIFF_SZ_MASK 0x20000000 - -#define REG_G3_VTX_DIFF_DECIMAL_Z_SHIFT 20 -#define REG_G3_VTX_DIFF_DECIMAL_Z_SIZE 9 -#define REG_G3_VTX_DIFF_DECIMAL_Z_MASK 0x1ff00000 - -#define REG_G3_VTX_DIFF_SY_SHIFT 19 -#define REG_G3_VTX_DIFF_SY_SIZE 1 -#define REG_G3_VTX_DIFF_SY_MASK 0x00080000 - -#define REG_G3_VTX_DIFF_DECIMAL_Y_SHIFT 10 -#define REG_G3_VTX_DIFF_DECIMAL_Y_SIZE 9 -#define REG_G3_VTX_DIFF_DECIMAL_Y_MASK 0x0007fc00 - -#define REG_G3_VTX_DIFF_SX_SHIFT 9 -#define REG_G3_VTX_DIFF_SX_SIZE 1 -#define REG_G3_VTX_DIFF_SX_MASK 0x00000200 - -#define REG_G3_VTX_DIFF_DECIMAL_X_SHIFT 0 -#define REG_G3_VTX_DIFF_DECIMAL_X_SIZE 9 -#define REG_G3_VTX_DIFF_DECIMAL_X_MASK 0x000001ff - -#ifndef SDK_ASM -#define REG_G3_VTX_DIFF_FIELD(sz, decimal_z, sy, decimal_y, sx, decimal_x) \ - (u32)( \ - ((u32)(sz) << REG_G3_VTX_DIFF_SZ_SHIFT) | \ - ((u32)(decimal_z) << REG_G3_VTX_DIFF_DECIMAL_Z_SHIFT) | \ - ((u32)(sy) << REG_G3_VTX_DIFF_SY_SHIFT) | \ - ((u32)(decimal_y) << REG_G3_VTX_DIFF_DECIMAL_Y_SHIFT) | \ - ((u32)(sx) << REG_G3_VTX_DIFF_SX_SHIFT) | \ - ((u32)(decimal_x) << REG_G3_VTX_DIFF_DECIMAL_X_SHIFT)) -#endif - -#define REG_G3_POLYGON_ATTR_ID_SHIFT 24 -#define REG_G3_POLYGON_ATTR_ID_SIZE 6 -#define REG_G3_POLYGON_ATTR_ID_MASK 0x3f000000 - -#define REG_G3_POLYGON_ATTR_ALPHA_SHIFT 16 -#define REG_G3_POLYGON_ATTR_ALPHA_SIZE 5 -#define REG_G3_POLYGON_ATTR_ALPHA_MASK 0x001f0000 - -#define REG_G3_POLYGON_ATTR_FE_SHIFT 15 -#define REG_G3_POLYGON_ATTR_FE_SIZE 1 -#define REG_G3_POLYGON_ATTR_FE_MASK 0x00008000 - -#define REG_G3_POLYGON_ATTR_DT_SHIFT 14 -#define REG_G3_POLYGON_ATTR_DT_SIZE 1 -#define REG_G3_POLYGON_ATTR_DT_MASK 0x00004000 - -#define REG_G3_POLYGON_ATTR_D1_SHIFT 13 -#define REG_G3_POLYGON_ATTR_D1_SIZE 1 -#define REG_G3_POLYGON_ATTR_D1_MASK 0x00002000 - -#define REG_G3_POLYGON_ATTR_FC_SHIFT 12 -#define REG_G3_POLYGON_ATTR_FC_SIZE 1 -#define REG_G3_POLYGON_ATTR_FC_MASK 0x00001000 - -#define REG_G3_POLYGON_ATTR_XL_SHIFT 11 -#define REG_G3_POLYGON_ATTR_XL_SIZE 1 -#define REG_G3_POLYGON_ATTR_XL_MASK 0x00000800 - -#define REG_G3_POLYGON_ATTR_FR_SHIFT 7 -#define REG_G3_POLYGON_ATTR_FR_SIZE 1 -#define REG_G3_POLYGON_ATTR_FR_MASK 0x00000080 - -#define REG_G3_POLYGON_ATTR_BK_SHIFT 6 -#define REG_G3_POLYGON_ATTR_BK_SIZE 1 -#define REG_G3_POLYGON_ATTR_BK_MASK 0x00000040 - -#define REG_G3_POLYGON_ATTR_PM_SHIFT 4 -#define REG_G3_POLYGON_ATTR_PM_SIZE 2 -#define REG_G3_POLYGON_ATTR_PM_MASK 0x00000030 - -#define REG_G3_POLYGON_ATTR_LE_SHIFT 0 -#define REG_G3_POLYGON_ATTR_LE_SIZE 4 -#define REG_G3_POLYGON_ATTR_LE_MASK 0x0000000f - -#ifndef SDK_ASM -#define REG_G3_POLYGON_ATTR_FIELD(id, alpha, fe, dt, d1, fc, xl, fr, bk, pm, le) \ - (u32)( \ - ((u32)(id) << REG_G3_POLYGON_ATTR_ID_SHIFT) | \ - ((u32)(alpha) << REG_G3_POLYGON_ATTR_ALPHA_SHIFT) | \ - ((u32)(fe) << REG_G3_POLYGON_ATTR_FE_SHIFT) | \ - ((u32)(dt) << REG_G3_POLYGON_ATTR_DT_SHIFT) | \ - ((u32)(d1) << REG_G3_POLYGON_ATTR_D1_SHIFT) | \ - ((u32)(fc) << REG_G3_POLYGON_ATTR_FC_SHIFT) | \ - ((u32)(xl) << REG_G3_POLYGON_ATTR_XL_SHIFT) | \ - ((u32)(fr) << REG_G3_POLYGON_ATTR_FR_SHIFT) | \ - ((u32)(bk) << REG_G3_POLYGON_ATTR_BK_SHIFT) | \ - ((u32)(pm) << REG_G3_POLYGON_ATTR_PM_SHIFT) | \ - ((u32)(le) << REG_G3_POLYGON_ATTR_LE_SHIFT)) -#endif - -#define REG_G3_TEXIMAGE_PARAM_TGEN_SHIFT 30 -#define REG_G3_TEXIMAGE_PARAM_TGEN_SIZE 2 -#define REG_G3_TEXIMAGE_PARAM_TGEN_MASK 0xc0000000 - -#define REG_G3_TEXIMAGE_PARAM_TR_SHIFT 29 -#define REG_G3_TEXIMAGE_PARAM_TR_SIZE 1 -#define REG_G3_TEXIMAGE_PARAM_TR_MASK 0x20000000 - -#define REG_G3_TEXIMAGE_PARAM_TEXFMT_SHIFT 26 -#define REG_G3_TEXIMAGE_PARAM_TEXFMT_SIZE 3 -#define REG_G3_TEXIMAGE_PARAM_TEXFMT_MASK 0x1c000000 - -#define REG_G3_TEXIMAGE_PARAM_T_SIZE_SHIFT 23 -#define REG_G3_TEXIMAGE_PARAM_T_SIZE_SIZE 3 -#define REG_G3_TEXIMAGE_PARAM_T_SIZE_MASK 0x03800000 - -#define REG_G3_TEXIMAGE_PARAM_V_SIZE_SHIFT 20 -#define REG_G3_TEXIMAGE_PARAM_V_SIZE_SIZE 3 -#define REG_G3_TEXIMAGE_PARAM_V_SIZE_MASK 0x00700000 - -#define REG_G3_TEXIMAGE_PARAM_FT_SHIFT 19 -#define REG_G3_TEXIMAGE_PARAM_FT_SIZE 1 -#define REG_G3_TEXIMAGE_PARAM_FT_MASK 0x00080000 - -#define REG_G3_TEXIMAGE_PARAM_FS_SHIFT 18 -#define REG_G3_TEXIMAGE_PARAM_FS_SIZE 1 -#define REG_G3_TEXIMAGE_PARAM_FS_MASK 0x00040000 - -#define REG_G3_TEXIMAGE_PARAM_RT_SHIFT 17 -#define REG_G3_TEXIMAGE_PARAM_RT_SIZE 1 -#define REG_G3_TEXIMAGE_PARAM_RT_MASK 0x00020000 - -#define REG_G3_TEXIMAGE_PARAM_RS_SHIFT 16 -#define REG_G3_TEXIMAGE_PARAM_RS_SIZE 1 -#define REG_G3_TEXIMAGE_PARAM_RS_MASK 0x00010000 - -#define REG_G3_TEXIMAGE_PARAM_TEX_ADDR_SHIFT 0 -#define REG_G3_TEXIMAGE_PARAM_TEX_ADDR_SIZE 16 -#define REG_G3_TEXIMAGE_PARAM_TEX_ADDR_MASK 0x0000ffff - -#ifndef SDK_ASM -#define REG_G3_TEXIMAGE_PARAM_FIELD(tgen, tr, texfmt, t_size, v_size, ft, fs, rt, rs, tex_addr) \ - (u32)( \ - ((u32)(tgen) << REG_G3_TEXIMAGE_PARAM_TGEN_SHIFT) | \ - ((u32)(tr) << REG_G3_TEXIMAGE_PARAM_TR_SHIFT) | \ - ((u32)(texfmt) << REG_G3_TEXIMAGE_PARAM_TEXFMT_SHIFT) | \ - ((u32)(t_size) << REG_G3_TEXIMAGE_PARAM_T_SIZE_SHIFT) | \ - ((u32)(v_size) << REG_G3_TEXIMAGE_PARAM_V_SIZE_SHIFT) | \ - ((u32)(ft) << REG_G3_TEXIMAGE_PARAM_FT_SHIFT) | \ - ((u32)(fs) << REG_G3_TEXIMAGE_PARAM_FS_SHIFT) | \ - ((u32)(rt) << REG_G3_TEXIMAGE_PARAM_RT_SHIFT) | \ - ((u32)(rs) << REG_G3_TEXIMAGE_PARAM_RS_SHIFT) | \ - ((u32)(tex_addr) << REG_G3_TEXIMAGE_PARAM_TEX_ADDR_SHIFT)) -#endif - -#define REG_G3_TEXPLTT_BASE_PLTT_BASE_SHIFT 0 -#define REG_G3_TEXPLTT_BASE_PLTT_BASE_SIZE 13 -#define REG_G3_TEXPLTT_BASE_PLTT_BASE_MASK 0x00001fff - -#ifndef SDK_ASM -#define REG_G3_TEXPLTT_BASE_FIELD(pltt_base) \ - (u32)( \ - ((u32)(pltt_base) << REG_G3_TEXPLTT_BASE_PLTT_BASE_SHIFT)) -#endif - -#define REG_G3_DIF_AMB_AMBIENT_BLUE_SHIFT 26 -#define REG_G3_DIF_AMB_AMBIENT_BLUE_SIZE 5 -#define REG_G3_DIF_AMB_AMBIENT_BLUE_MASK 0x7c000000 - -#define REG_G3_DIF_AMB_AMBIENT_GREEN_SHIFT 21 -#define REG_G3_DIF_AMB_AMBIENT_GREEN_SIZE 5 -#define REG_G3_DIF_AMB_AMBIENT_GREEN_MASK 0x03e00000 - -#define REG_G3_DIF_AMB_AMBIENT_RED_SHIFT 16 -#define REG_G3_DIF_AMB_AMBIENT_RED_SIZE 5 -#define REG_G3_DIF_AMB_AMBIENT_RED_MASK 0x001f0000 - -#define REG_G3_DIF_AMB_C_SHIFT 15 -#define REG_G3_DIF_AMB_C_SIZE 1 -#define REG_G3_DIF_AMB_C_MASK 0x00008000 - -#define REG_G3_DIF_AMB_DIFFUSE_BLUE_SHIFT 10 -#define REG_G3_DIF_AMB_DIFFUSE_BLUE_SIZE 5 -#define REG_G3_DIF_AMB_DIFFUSE_BLUE_MASK 0x00007c00 - -#define REG_G3_DIF_AMB_DIFFUSE_GREEN_SHIFT 5 -#define REG_G3_DIF_AMB_DIFFUSE_GREEN_SIZE 5 -#define REG_G3_DIF_AMB_DIFFUSE_GREEN_MASK 0x000003e0 - -#define REG_G3_DIF_AMB_DIFFUSE_RED_SHIFT 0 -#define REG_G3_DIF_AMB_DIFFUSE_RED_SIZE 5 -#define REG_G3_DIF_AMB_DIFFUSE_RED_MASK 0x0000001f - -#ifndef SDK_ASM -#define REG_G3_DIF_AMB_FIELD(ambient_blue, ambient_green, ambient_red, c, diffuse_blue, diffuse_green, diffuse_red) \ - (u32)( \ - ((u32)(ambient_blue) << REG_G3_DIF_AMB_AMBIENT_BLUE_SHIFT) | \ - ((u32)(ambient_green) << REG_G3_DIF_AMB_AMBIENT_GREEN_SHIFT) | \ - ((u32)(ambient_red) << REG_G3_DIF_AMB_AMBIENT_RED_SHIFT) | \ - ((u32)(c) << REG_G3_DIF_AMB_C_SHIFT) | \ - ((u32)(diffuse_blue) << REG_G3_DIF_AMB_DIFFUSE_BLUE_SHIFT) | \ - ((u32)(diffuse_green) << REG_G3_DIF_AMB_DIFFUSE_GREEN_SHIFT) | \ - ((u32)(diffuse_red) << REG_G3_DIF_AMB_DIFFUSE_RED_SHIFT)) -#endif - -#define REG_G3_SPE_EMI_EMISSION_BLUE_SHIFT 26 -#define REG_G3_SPE_EMI_EMISSION_BLUE_SIZE 5 -#define REG_G3_SPE_EMI_EMISSION_BLUE_MASK 0x7c000000 - -#define REG_G3_SPE_EMI_EMISSION_GREEN_SHIFT 21 -#define REG_G3_SPE_EMI_EMISSION_GREEN_SIZE 5 -#define REG_G3_SPE_EMI_EMISSION_GREEN_MASK 0x03e00000 - -#define REG_G3_SPE_EMI_EMISSION_RED_SHIFT 16 -#define REG_G3_SPE_EMI_EMISSION_RED_SIZE 5 -#define REG_G3_SPE_EMI_EMISSION_RED_MASK 0x001f0000 - -#define REG_G3_SPE_EMI_S_SHIFT 15 -#define REG_G3_SPE_EMI_S_SIZE 1 -#define REG_G3_SPE_EMI_S_MASK 0x00008000 - -#define REG_G3_SPE_EMI_SPECULAR_BLUE_SHIFT 10 -#define REG_G3_SPE_EMI_SPECULAR_BLUE_SIZE 5 -#define REG_G3_SPE_EMI_SPECULAR_BLUE_MASK 0x00007c00 - -#define REG_G3_SPE_EMI_SPECULAR_GREEN_SHIFT 5 -#define REG_G3_SPE_EMI_SPECULAR_GREEN_SIZE 5 -#define REG_G3_SPE_EMI_SPECULAR_GREEN_MASK 0x000003e0 - -#define REG_G3_SPE_EMI_SPECULAR_RED_SHIFT 0 -#define REG_G3_SPE_EMI_SPECULAR_RED_SIZE 5 -#define REG_G3_SPE_EMI_SPECULAR_RED_MASK 0x0000001f - -#ifndef SDK_ASM -#define REG_G3_SPE_EMI_FIELD(emission_blue, emission_green, emission_red, s, specular_blue, specular_green, specular_red) \ - (u32)( \ - ((u32)(emission_blue) << REG_G3_SPE_EMI_EMISSION_BLUE_SHIFT) | \ - ((u32)(emission_green) << REG_G3_SPE_EMI_EMISSION_GREEN_SHIFT) | \ - ((u32)(emission_red) << REG_G3_SPE_EMI_EMISSION_RED_SHIFT) | \ - ((u32)(s) << REG_G3_SPE_EMI_S_SHIFT) | \ - ((u32)(specular_blue) << REG_G3_SPE_EMI_SPECULAR_BLUE_SHIFT) | \ - ((u32)(specular_green) << REG_G3_SPE_EMI_SPECULAR_GREEN_SHIFT) | \ - ((u32)(specular_red) << REG_G3_SPE_EMI_SPECULAR_RED_SHIFT)) -#endif - -#define REG_G3_LIGHT_VECTOR_LNUM_SHIFT 30 -#define REG_G3_LIGHT_VECTOR_LNUM_SIZE 2 -#define REG_G3_LIGHT_VECTOR_LNUM_MASK 0xc0000000 - -#define REG_G3_LIGHT_VECTOR_SZ_SHIFT 29 -#define REG_G3_LIGHT_VECTOR_SZ_SIZE 1 -#define REG_G3_LIGHT_VECTOR_SZ_MASK 0x20000000 - -#define REG_G3_LIGHT_VECTOR_DECIMAL_Z_SHIFT 20 -#define REG_G3_LIGHT_VECTOR_DECIMAL_Z_SIZE 9 -#define REG_G3_LIGHT_VECTOR_DECIMAL_Z_MASK 0x1ff00000 - -#define REG_G3_LIGHT_VECTOR_SY_SHIFT 19 -#define REG_G3_LIGHT_VECTOR_SY_SIZE 1 -#define REG_G3_LIGHT_VECTOR_SY_MASK 0x00080000 - -#define REG_G3_LIGHT_VECTOR_DECIMAL_Y_SHIFT 10 -#define REG_G3_LIGHT_VECTOR_DECIMAL_Y_SIZE 9 -#define REG_G3_LIGHT_VECTOR_DECIMAL_Y_MASK 0x0007fc00 - -#define REG_G3_LIGHT_VECTOR_SX_SHIFT 9 -#define REG_G3_LIGHT_VECTOR_SX_SIZE 1 -#define REG_G3_LIGHT_VECTOR_SX_MASK 0x00000200 - -#define REG_G3_LIGHT_VECTOR_DECIMAL_X_SHIFT 0 -#define REG_G3_LIGHT_VECTOR_DECIMAL_X_SIZE 9 -#define REG_G3_LIGHT_VECTOR_DECIMAL_X_MASK 0x000001ff - -#ifndef SDK_ASM -#define REG_G3_LIGHT_VECTOR_FIELD(lnum, sz, decimal_z, sy, decimal_y, sx, decimal_x) \ - (u32)( \ - ((u32)(lnum) << REG_G3_LIGHT_VECTOR_LNUM_SHIFT) | \ - ((u32)(sz) << REG_G3_LIGHT_VECTOR_SZ_SHIFT) | \ - ((u32)(decimal_z) << REG_G3_LIGHT_VECTOR_DECIMAL_Z_SHIFT) | \ - ((u32)(sy) << REG_G3_LIGHT_VECTOR_SY_SHIFT) | \ - ((u32)(decimal_y) << REG_G3_LIGHT_VECTOR_DECIMAL_Y_SHIFT) | \ - ((u32)(sx) << REG_G3_LIGHT_VECTOR_SX_SHIFT) | \ - ((u32)(decimal_x) << REG_G3_LIGHT_VECTOR_DECIMAL_X_SHIFT)) -#endif - -#define REG_G3_LIGHT_COLOR_LNUM_SHIFT 30 -#define REG_G3_LIGHT_COLOR_LNUM_SIZE 2 -#define REG_G3_LIGHT_COLOR_LNUM_MASK 0xc0000000 - -#define REG_G3_LIGHT_COLOR_BLUE_SHIFT 10 -#define REG_G3_LIGHT_COLOR_BLUE_SIZE 5 -#define REG_G3_LIGHT_COLOR_BLUE_MASK 0x00007c00 - -#define REG_G3_LIGHT_COLOR_GREEN_SHIFT 5 -#define REG_G3_LIGHT_COLOR_GREEN_SIZE 5 -#define REG_G3_LIGHT_COLOR_GREEN_MASK 0x000003e0 - -#define REG_G3_LIGHT_COLOR_RED_SHIFT 0 -#define REG_G3_LIGHT_COLOR_RED_SIZE 5 -#define REG_G3_LIGHT_COLOR_RED_MASK 0x0000001f - -#ifndef SDK_ASM -#define REG_G3_LIGHT_COLOR_FIELD(lnum, blue, green, red) \ - (u32)( \ - ((u32)(lnum) << REG_G3_LIGHT_COLOR_LNUM_SHIFT) | \ - ((u32)(blue) << REG_G3_LIGHT_COLOR_BLUE_SHIFT) | \ - ((u32)(green) << REG_G3_LIGHT_COLOR_GREEN_SHIFT) | \ - ((u32)(red) << REG_G3_LIGHT_COLOR_RED_SHIFT)) -#endif - -#define REG_G3_SHININESS_SHININESS3_SHIFT 24 -#define REG_G3_SHININESS_SHININESS3_SIZE 8 -#define REG_G3_SHININESS_SHININESS3_MASK 0xff000000 - -#define REG_G3_SHININESS_SHININESS2_SHIFT 16 -#define REG_G3_SHININESS_SHININESS2_SIZE 8 -#define REG_G3_SHININESS_SHININESS2_MASK 0x00ff0000 - -#define REG_G3_SHININESS_SHININESS1_SHIFT 8 -#define REG_G3_SHININESS_SHININESS1_SIZE 8 -#define REG_G3_SHININESS_SHININESS1_MASK 0x0000ff00 - -#define REG_G3_SHININESS_SHININESS0_SHIFT 0 -#define REG_G3_SHININESS_SHININESS0_SIZE 8 -#define REG_G3_SHININESS_SHININESS0_MASK 0x000000ff - -#ifndef SDK_ASM -#define REG_G3_SHININESS_FIELD(shininess3, shininess2, shininess1, shininess0) \ - (u32)( \ - ((u32)(shininess3) << REG_G3_SHININESS_SHININESS3_SHIFT) | \ - ((u32)(shininess2) << REG_G3_SHININESS_SHININESS2_SHIFT) | \ - ((u32)(shininess1) << REG_G3_SHININESS_SHININESS1_SHIFT) | \ - ((u32)(shininess0) << REG_G3_SHININESS_SHININESS0_SHIFT)) -#endif - -#define REG_G3_BEGIN_VTXS_TYPE_SHIFT 0 -#define REG_G3_BEGIN_VTXS_TYPE_SIZE 2 -#define REG_G3_BEGIN_VTXS_TYPE_MASK 0x00000003 - -#ifndef SDK_ASM -#define REG_G3_BEGIN_VTXS_FIELD(type) \ - (u32)( \ - ((u32)(type) << REG_G3_BEGIN_VTXS_TYPE_SHIFT)) -#endif - -#define REG_G3_SWAP_BUFFERS_DP_SHIFT 1 -#define REG_G3_SWAP_BUFFERS_DP_SIZE 1 -#define REG_G3_SWAP_BUFFERS_DP_MASK 0x00000002 - -#define REG_G3_SWAP_BUFFERS_XS_SHIFT 0 -#define REG_G3_SWAP_BUFFERS_XS_SIZE 1 -#define REG_G3_SWAP_BUFFERS_XS_MASK 0x00000001 - -#ifndef SDK_ASM -#define REG_G3_SWAP_BUFFERS_FIELD(dp, xs) \ - (u32)( \ - ((u32)(dp) << REG_G3_SWAP_BUFFERS_DP_SHIFT) | \ - ((u32)(xs) << REG_G3_SWAP_BUFFERS_XS_SHIFT)) -#endif - -#define REG_G3_VIEWPORT_INTEGER_Y2_SHIFT 24 -#define REG_G3_VIEWPORT_INTEGER_Y2_SIZE 8 -#define REG_G3_VIEWPORT_INTEGER_Y2_MASK 0xff000000 - -#define REG_G3_VIEWPORT_INTEGER_X2_SHIFT 16 -#define REG_G3_VIEWPORT_INTEGER_X2_SIZE 8 -#define REG_G3_VIEWPORT_INTEGER_X2_MASK 0x00ff0000 - -#define REG_G3_VIEWPORT_INTEGER_Y1_SHIFT 8 -#define REG_G3_VIEWPORT_INTEGER_Y1_SIZE 8 -#define REG_G3_VIEWPORT_INTEGER_Y1_MASK 0x0000ff00 - -#define REG_G3_VIEWPORT_INTEGER_X1_SHIFT 0 -#define REG_G3_VIEWPORT_INTEGER_X1_SIZE 8 -#define REG_G3_VIEWPORT_INTEGER_X1_MASK 0x000000ff - -#ifndef SDK_ASM -#define REG_G3_VIEWPORT_FIELD(integer_y2, integer_x2, integer_y1, integer_x1) \ - (u32)( \ - ((u32)(integer_y2) << REG_G3_VIEWPORT_INTEGER_Y2_SHIFT) | \ - ((u32)(integer_x2) << REG_G3_VIEWPORT_INTEGER_X2_SHIFT) | \ - ((u32)(integer_y1) << REG_G3_VIEWPORT_INTEGER_Y1_SHIFT) | \ - ((u32)(integer_x1) << REG_G3_VIEWPORT_INTEGER_X1_SHIFT)) -#endif - -#define REG_G3_BOX_TEST_SY_SHIFT 31 -#define REG_G3_BOX_TEST_SY_SIZE 1 -#define REG_G3_BOX_TEST_SY_MASK 0x80000000 - -#define REG_G3_BOX_TEST_INT_Y_SHIFT 28 -#define REG_G3_BOX_TEST_INT_Y_SIZE 3 -#define REG_G3_BOX_TEST_INT_Y_MASK 0x70000000 - -#define REG_G3_BOX_TEST_DECIMAL_Y_SHIFT 16 -#define REG_G3_BOX_TEST_DECIMAL_Y_SIZE 12 -#define REG_G3_BOX_TEST_DECIMAL_Y_MASK 0x0fff0000 - -#define REG_G3_BOX_TEST_SX_SHIFT 15 -#define REG_G3_BOX_TEST_SX_SIZE 1 -#define REG_G3_BOX_TEST_SX_MASK 0x00008000 - -#define REG_G3_BOX_TEST_INT_X_SHIFT 12 -#define REG_G3_BOX_TEST_INT_X_SIZE 3 -#define REG_G3_BOX_TEST_INT_X_MASK 0x00007000 - -#define REG_G3_BOX_TEST_DECIMAL_X_SHIFT 0 -#define REG_G3_BOX_TEST_DECIMAL_X_SIZE 12 -#define REG_G3_BOX_TEST_DECIMAL_X_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3_BOX_TEST_FIELD(sy, int_y, decimal_y, sx, int_x, decimal_x) \ - (u32)( \ - ((u32)(sy) << REG_G3_BOX_TEST_SY_SHIFT) | \ - ((u32)(int_y) << REG_G3_BOX_TEST_INT_Y_SHIFT) | \ - ((u32)(decimal_y) << REG_G3_BOX_TEST_DECIMAL_Y_SHIFT) | \ - ((u32)(sx) << REG_G3_BOX_TEST_SX_SHIFT) | \ - ((u32)(int_x) << REG_G3_BOX_TEST_INT_X_SHIFT) | \ - ((u32)(decimal_x) << REG_G3_BOX_TEST_DECIMAL_X_SHIFT)) -#endif - -#define REG_G3_POS_TEST_SY_SHIFT 31 -#define REG_G3_POS_TEST_SY_SIZE 1 -#define REG_G3_POS_TEST_SY_MASK 0x80000000 - -#define REG_G3_POS_TEST_INT_Y_SHIFT 28 -#define REG_G3_POS_TEST_INT_Y_SIZE 3 -#define REG_G3_POS_TEST_INT_Y_MASK 0x70000000 - -#define REG_G3_POS_TEST_DECIMAL_Y_SHIFT 16 -#define REG_G3_POS_TEST_DECIMAL_Y_SIZE 12 -#define REG_G3_POS_TEST_DECIMAL_Y_MASK 0x0fff0000 - -#define REG_G3_POS_TEST_SX_SHIFT 15 -#define REG_G3_POS_TEST_SX_SIZE 1 -#define REG_G3_POS_TEST_SX_MASK 0x00008000 - -#define REG_G3_POS_TEST_INT_X_SHIFT 12 -#define REG_G3_POS_TEST_INT_X_SIZE 3 -#define REG_G3_POS_TEST_INT_X_MASK 0x00007000 - -#define REG_G3_POS_TEST_DECIMAL_X_SHIFT 0 -#define REG_G3_POS_TEST_DECIMAL_X_SIZE 12 -#define REG_G3_POS_TEST_DECIMAL_X_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3_POS_TEST_FIELD(sy, int_y, decimal_y, sx, int_x, decimal_x) \ - (u32)( \ - ((u32)(sy) << REG_G3_POS_TEST_SY_SHIFT) | \ - ((u32)(int_y) << REG_G3_POS_TEST_INT_Y_SHIFT) | \ - ((u32)(decimal_y) << REG_G3_POS_TEST_DECIMAL_Y_SHIFT) | \ - ((u32)(sx) << REG_G3_POS_TEST_SX_SHIFT) | \ - ((u32)(int_x) << REG_G3_POS_TEST_INT_X_SHIFT) | \ - ((u32)(decimal_x) << REG_G3_POS_TEST_DECIMAL_X_SHIFT)) -#endif - -#define REG_G3_VEC_TEST_SZ_SHIFT 29 -#define REG_G3_VEC_TEST_SZ_SIZE 1 -#define REG_G3_VEC_TEST_SZ_MASK 0x20000000 - -#define REG_G3_VEC_TEST_DECIMAL_Z_SHIFT 20 -#define REG_G3_VEC_TEST_DECIMAL_Z_SIZE 9 -#define REG_G3_VEC_TEST_DECIMAL_Z_MASK 0x1ff00000 - -#define REG_G3_VEC_TEST_SY_SHIFT 19 -#define REG_G3_VEC_TEST_SY_SIZE 1 -#define REG_G3_VEC_TEST_SY_MASK 0x00080000 - -#define REG_G3_VEC_TEST_DECIMAL_Y_SHIFT 10 -#define REG_G3_VEC_TEST_DECIMAL_Y_SIZE 9 -#define REG_G3_VEC_TEST_DECIMAL_Y_MASK 0x0007fc00 - -#define REG_G3_VEC_TEST_SX_SHIFT 9 -#define REG_G3_VEC_TEST_SX_SIZE 1 -#define REG_G3_VEC_TEST_SX_MASK 0x00000200 - -#define REG_G3_VEC_TEST_DECIMAL_X_SHIFT 0 -#define REG_G3_VEC_TEST_DECIMAL_X_SIZE 9 -#define REG_G3_VEC_TEST_DECIMAL_X_MASK 0x000001ff - -#ifndef SDK_ASM -#define REG_G3_VEC_TEST_FIELD(sz, decimal_z, sy, decimal_y, sx, decimal_x) \ - (u32)( \ - ((u32)(sz) << REG_G3_VEC_TEST_SZ_SHIFT) | \ - ((u32)(decimal_z) << REG_G3_VEC_TEST_DECIMAL_Z_SHIFT) | \ - ((u32)(sy) << REG_G3_VEC_TEST_SY_SHIFT) | \ - ((u32)(decimal_y) << REG_G3_VEC_TEST_DECIMAL_Y_SHIFT) | \ - ((u32)(sx) << REG_G3_VEC_TEST_SX_SHIFT) | \ - ((u32)(decimal_x) << REG_G3_VEC_TEST_DECIMAL_X_SHIFT)) -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/hw/ARM9/ioreg_G3X.h b/subprojects/NitroSDK/include/nitro/hw/ARM9/ioreg_G3X.h deleted file mode 100644 index 7b0c68457e..0000000000 --- a/subprojects/NitroSDK/include/nitro/hw/ARM9/ioreg_G3X.h +++ /dev/null @@ -1,3393 +0,0 @@ -#ifndef NITRO_HW_ARM9_IOREG_G3X_H_ -#define NITRO_HW_ARM9_IOREG_G3X_H_ - -#ifndef SDK_ASM -#include -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define REG_DISP3DCNT_OFFSET 0x060 -#define REG_DISP3DCNT_ADDR (HW_REG_BASE + REG_DISP3DCNT_OFFSET) -#define reg_G3X_DISP3DCNT (*( REGType16v *)REG_DISP3DCNT_ADDR) - -#define REG_RDLINES_COUNT_OFFSET 0x320 -#define REG_RDLINES_COUNT_ADDR (HW_REG_BASE + REG_RDLINES_COUNT_OFFSET) -#define reg_G3X_RDLINES_COUNT (*(const REGType16v *)REG_RDLINES_COUNT_ADDR) - -#define REG_EDGE_COLOR_0_OFFSET 0x330 -#define REG_EDGE_COLOR_0_ADDR (HW_REG_BASE + REG_EDGE_COLOR_0_OFFSET) -#define reg_G3X_EDGE_COLOR_0 (*( REGType32v *)REG_EDGE_COLOR_0_ADDR) - -#define REG_EDGE_COLOR_0_L_OFFSET 0x330 -#define REG_EDGE_COLOR_0_L_ADDR (HW_REG_BASE + REG_EDGE_COLOR_0_L_OFFSET) -#define reg_G3X_EDGE_COLOR_0_L (*( REGType16v *)REG_EDGE_COLOR_0_L_ADDR) - -#define REG_EDGE_COLOR_0_H_OFFSET 0x332 -#define REG_EDGE_COLOR_0_H_ADDR (HW_REG_BASE + REG_EDGE_COLOR_0_H_OFFSET) -#define reg_G3X_EDGE_COLOR_0_H (*( REGType16v *)REG_EDGE_COLOR_0_H_ADDR) - -#define REG_EDGE_COLOR_1_OFFSET 0x334 -#define REG_EDGE_COLOR_1_ADDR (HW_REG_BASE + REG_EDGE_COLOR_1_OFFSET) -#define reg_G3X_EDGE_COLOR_1 (*( REGType32v *)REG_EDGE_COLOR_1_ADDR) - -#define REG_EDGE_COLOR_1_L_OFFSET 0x334 -#define REG_EDGE_COLOR_1_L_ADDR (HW_REG_BASE + REG_EDGE_COLOR_1_L_OFFSET) -#define reg_G3X_EDGE_COLOR_1_L (*( REGType16v *)REG_EDGE_COLOR_1_L_ADDR) - -#define REG_EDGE_COLOR_1_H_OFFSET 0x336 -#define REG_EDGE_COLOR_1_H_ADDR (HW_REG_BASE + REG_EDGE_COLOR_1_H_OFFSET) -#define reg_G3X_EDGE_COLOR_1_H (*( REGType16v *)REG_EDGE_COLOR_1_H_ADDR) - -#define REG_EDGE_COLOR_2_OFFSET 0x338 -#define REG_EDGE_COLOR_2_ADDR (HW_REG_BASE + REG_EDGE_COLOR_2_OFFSET) -#define reg_G3X_EDGE_COLOR_2 (*( REGType32v *)REG_EDGE_COLOR_2_ADDR) - -#define REG_EDGE_COLOR_2_L_OFFSET 0x338 -#define REG_EDGE_COLOR_2_L_ADDR (HW_REG_BASE + REG_EDGE_COLOR_2_L_OFFSET) -#define reg_G3X_EDGE_COLOR_2_L (*( REGType16v *)REG_EDGE_COLOR_2_L_ADDR) - -#define REG_EDGE_COLOR_2_H_OFFSET 0x33a -#define REG_EDGE_COLOR_2_H_ADDR (HW_REG_BASE + REG_EDGE_COLOR_2_H_OFFSET) -#define reg_G3X_EDGE_COLOR_2_H (*( REGType16v *)REG_EDGE_COLOR_2_H_ADDR) - -#define REG_EDGE_COLOR_3_OFFSET 0x33c -#define REG_EDGE_COLOR_3_ADDR (HW_REG_BASE + REG_EDGE_COLOR_3_OFFSET) -#define reg_G3X_EDGE_COLOR_3 (*( REGType32v *)REG_EDGE_COLOR_3_ADDR) - -#define REG_EDGE_COLOR_3_L_OFFSET 0x33c -#define REG_EDGE_COLOR_3_L_ADDR (HW_REG_BASE + REG_EDGE_COLOR_3_L_OFFSET) -#define reg_G3X_EDGE_COLOR_3_L (*( REGType16v *)REG_EDGE_COLOR_3_L_ADDR) - -#define REG_EDGE_COLOR_3_H_OFFSET 0x33e -#define REG_EDGE_COLOR_3_H_ADDR (HW_REG_BASE + REG_EDGE_COLOR_3_H_OFFSET) -#define reg_G3X_EDGE_COLOR_3_H (*( REGType16v *)REG_EDGE_COLOR_3_H_ADDR) - -#define REG_ALPHA_TEST_REF_OFFSET 0x340 -#define REG_ALPHA_TEST_REF_ADDR (HW_REG_BASE + REG_ALPHA_TEST_REF_OFFSET) -#define reg_G3X_ALPHA_TEST_REF (*( REGType16v *)REG_ALPHA_TEST_REF_ADDR) - -#define REG_CLEAR_COLOR_OFFSET 0x350 -#define REG_CLEAR_COLOR_ADDR (HW_REG_BASE + REG_CLEAR_COLOR_OFFSET) -#define reg_G3X_CLEAR_COLOR (*( REGType32v *)REG_CLEAR_COLOR_ADDR) - -#define REG_CLEAR_DEPTH_OFFSET 0x354 -#define REG_CLEAR_DEPTH_ADDR (HW_REG_BASE + REG_CLEAR_DEPTH_OFFSET) -#define reg_G3X_CLEAR_DEPTH (*( REGType16v *)REG_CLEAR_DEPTH_ADDR) - -#define REG_CLRIMAGE_OFFSET_OFFSET 0x356 -#define REG_CLRIMAGE_OFFSET_ADDR (HW_REG_BASE + REG_CLRIMAGE_OFFSET_OFFSET) -#define reg_G3X_CLRIMAGE_OFFSET (*( REGType16v *)REG_CLRIMAGE_OFFSET_ADDR) - -#define REG_FOG_COLOR_OFFSET 0x358 -#define REG_FOG_COLOR_ADDR (HW_REG_BASE + REG_FOG_COLOR_OFFSET) -#define reg_G3X_FOG_COLOR (*( REGType32v *)REG_FOG_COLOR_ADDR) - -#define REG_FOG_OFFSET_OFFSET 0x35c -#define REG_FOG_OFFSET_ADDR (HW_REG_BASE + REG_FOG_OFFSET_OFFSET) -#define reg_G3X_FOG_OFFSET (*( REGType16v *)REG_FOG_OFFSET_ADDR) - -#define REG_FOG_TABLE_0_OFFSET 0x360 -#define REG_FOG_TABLE_0_ADDR (HW_REG_BASE + REG_FOG_TABLE_0_OFFSET) -#define reg_G3X_FOG_TABLE_0 (*( REGType32v *)REG_FOG_TABLE_0_ADDR) - -#define REG_FOG_TABLE_0_L_OFFSET 0x360 -#define REG_FOG_TABLE_0_L_ADDR (HW_REG_BASE + REG_FOG_TABLE_0_L_OFFSET) -#define reg_G3X_FOG_TABLE_0_L (*( REGType16v *)REG_FOG_TABLE_0_L_ADDR) - -#define REG_FOG_TABLE_0_H_OFFSET 0x362 -#define REG_FOG_TABLE_0_H_ADDR (HW_REG_BASE + REG_FOG_TABLE_0_H_OFFSET) -#define reg_G3X_FOG_TABLE_0_H (*( REGType16v *)REG_FOG_TABLE_0_H_ADDR) - -#define REG_FOG_TABLE_1_OFFSET 0x364 -#define REG_FOG_TABLE_1_ADDR (HW_REG_BASE + REG_FOG_TABLE_1_OFFSET) -#define reg_G3X_FOG_TABLE_1 (*( REGType32v *)REG_FOG_TABLE_1_ADDR) - -#define REG_FOG_TABLE_1_L_OFFSET 0x364 -#define REG_FOG_TABLE_1_L_ADDR (HW_REG_BASE + REG_FOG_TABLE_1_L_OFFSET) -#define reg_G3X_FOG_TABLE_1_L (*( REGType16v *)REG_FOG_TABLE_1_L_ADDR) - -#define REG_FOG_TABLE_1_H_OFFSET 0x366 -#define REG_FOG_TABLE_1_H_ADDR (HW_REG_BASE + REG_FOG_TABLE_1_H_OFFSET) -#define reg_G3X_FOG_TABLE_1_H (*( REGType16v *)REG_FOG_TABLE_1_H_ADDR) - -#define REG_FOG_TABLE_2_OFFSET 0x368 -#define REG_FOG_TABLE_2_ADDR (HW_REG_BASE + REG_FOG_TABLE_2_OFFSET) -#define reg_G3X_FOG_TABLE_2 (*( REGType32v *)REG_FOG_TABLE_2_ADDR) - -#define REG_FOG_TABLE_2_L_OFFSET 0x368 -#define REG_FOG_TABLE_2_L_ADDR (HW_REG_BASE + REG_FOG_TABLE_2_L_OFFSET) -#define reg_G3X_FOG_TABLE_2_L (*( REGType16v *)REG_FOG_TABLE_2_L_ADDR) - -#define REG_FOG_TABLE_2_H_OFFSET 0x36a -#define REG_FOG_TABLE_2_H_ADDR (HW_REG_BASE + REG_FOG_TABLE_2_H_OFFSET) -#define reg_G3X_FOG_TABLE_2_H (*( REGType16v *)REG_FOG_TABLE_2_H_ADDR) - -#define REG_FOG_TABLE_3_OFFSET 0x36c -#define REG_FOG_TABLE_3_ADDR (HW_REG_BASE + REG_FOG_TABLE_3_OFFSET) -#define reg_G3X_FOG_TABLE_3 (*( REGType32v *)REG_FOG_TABLE_3_ADDR) - -#define REG_FOG_TABLE_3_L_OFFSET 0x36c -#define REG_FOG_TABLE_3_L_ADDR (HW_REG_BASE + REG_FOG_TABLE_3_L_OFFSET) -#define reg_G3X_FOG_TABLE_3_L (*( REGType16v *)REG_FOG_TABLE_3_L_ADDR) - -#define REG_FOG_TABLE_3_H_OFFSET 0x36e -#define REG_FOG_TABLE_3_H_ADDR (HW_REG_BASE + REG_FOG_TABLE_3_H_OFFSET) -#define reg_G3X_FOG_TABLE_3_H (*( REGType16v *)REG_FOG_TABLE_3_H_ADDR) - -#define REG_FOG_TABLE_4_OFFSET 0x370 -#define REG_FOG_TABLE_4_ADDR (HW_REG_BASE + REG_FOG_TABLE_4_OFFSET) -#define reg_G3X_FOG_TABLE_4 (*( REGType32v *)REG_FOG_TABLE_4_ADDR) - -#define REG_FOG_TABLE_4_L_OFFSET 0x370 -#define REG_FOG_TABLE_4_L_ADDR (HW_REG_BASE + REG_FOG_TABLE_4_L_OFFSET) -#define reg_G3X_FOG_TABLE_4_L (*( REGType16v *)REG_FOG_TABLE_4_L_ADDR) - -#define REG_FOG_TABLE_4_H_OFFSET 0x372 -#define REG_FOG_TABLE_4_H_ADDR (HW_REG_BASE + REG_FOG_TABLE_4_H_OFFSET) -#define reg_G3X_FOG_TABLE_4_H (*( REGType16v *)REG_FOG_TABLE_4_H_ADDR) - -#define REG_FOG_TABLE_5_OFFSET 0x374 -#define REG_FOG_TABLE_5_ADDR (HW_REG_BASE + REG_FOG_TABLE_5_OFFSET) -#define reg_G3X_FOG_TABLE_5 (*( REGType32v *)REG_FOG_TABLE_5_ADDR) - -#define REG_FOG_TABLE_5_L_OFFSET 0x374 -#define REG_FOG_TABLE_5_L_ADDR (HW_REG_BASE + REG_FOG_TABLE_5_L_OFFSET) -#define reg_G3X_FOG_TABLE_5_L (*( REGType16v *)REG_FOG_TABLE_5_L_ADDR) - -#define REG_FOG_TABLE_5_H_OFFSET 0x376 -#define REG_FOG_TABLE_5_H_ADDR (HW_REG_BASE + REG_FOG_TABLE_5_H_OFFSET) -#define reg_G3X_FOG_TABLE_5_H (*( REGType16v *)REG_FOG_TABLE_5_H_ADDR) - -#define REG_FOG_TABLE_6_OFFSET 0x378 -#define REG_FOG_TABLE_6_ADDR (HW_REG_BASE + REG_FOG_TABLE_6_OFFSET) -#define reg_G3X_FOG_TABLE_6 (*( REGType32v *)REG_FOG_TABLE_6_ADDR) - -#define REG_FOG_TABLE_6_L_OFFSET 0x378 -#define REG_FOG_TABLE_6_L_ADDR (HW_REG_BASE + REG_FOG_TABLE_6_L_OFFSET) -#define reg_G3X_FOG_TABLE_6_L (*( REGType16v *)REG_FOG_TABLE_6_L_ADDR) - -#define REG_FOG_TABLE_6_H_OFFSET 0x37a -#define REG_FOG_TABLE_6_H_ADDR (HW_REG_BASE + REG_FOG_TABLE_6_H_OFFSET) -#define reg_G3X_FOG_TABLE_6_H (*( REGType16v *)REG_FOG_TABLE_6_H_ADDR) - -#define REG_FOG_TABLE_7_OFFSET 0x37c -#define REG_FOG_TABLE_7_ADDR (HW_REG_BASE + REG_FOG_TABLE_7_OFFSET) -#define reg_G3X_FOG_TABLE_7 (*( REGType32v *)REG_FOG_TABLE_7_ADDR) - -#define REG_FOG_TABLE_7_L_OFFSET 0x37c -#define REG_FOG_TABLE_7_L_ADDR (HW_REG_BASE + REG_FOG_TABLE_7_L_OFFSET) -#define reg_G3X_FOG_TABLE_7_L (*( REGType16v *)REG_FOG_TABLE_7_L_ADDR) - -#define REG_FOG_TABLE_7_H_OFFSET 0x37e -#define REG_FOG_TABLE_7_H_ADDR (HW_REG_BASE + REG_FOG_TABLE_7_H_OFFSET) -#define reg_G3X_FOG_TABLE_7_H (*( REGType16v *)REG_FOG_TABLE_7_H_ADDR) - -#define REG_TOON_TABLE_0_OFFSET 0x380 -#define REG_TOON_TABLE_0_ADDR (HW_REG_BASE + REG_TOON_TABLE_0_OFFSET) -#define reg_G3X_TOON_TABLE_0 (*( REGType32v *)REG_TOON_TABLE_0_ADDR) - -#define REG_TOON_TABLE_0_L_OFFSET 0x380 -#define REG_TOON_TABLE_0_L_ADDR (HW_REG_BASE + REG_TOON_TABLE_0_L_OFFSET) -#define reg_G3X_TOON_TABLE_0_L (*( REGType16v *)REG_TOON_TABLE_0_L_ADDR) - -#define REG_TOON_TABLE_0_H_OFFSET 0x382 -#define REG_TOON_TABLE_0_H_ADDR (HW_REG_BASE + REG_TOON_TABLE_0_H_OFFSET) -#define reg_G3X_TOON_TABLE_0_H (*( REGType16v *)REG_TOON_TABLE_0_H_ADDR) - -#define REG_TOON_TABLE_1_OFFSET 0x384 -#define REG_TOON_TABLE_1_ADDR (HW_REG_BASE + REG_TOON_TABLE_1_OFFSET) -#define reg_G3X_TOON_TABLE_1 (*( REGType32v *)REG_TOON_TABLE_1_ADDR) - -#define REG_TOON_TABLE_1_L_OFFSET 0x384 -#define REG_TOON_TABLE_1_L_ADDR (HW_REG_BASE + REG_TOON_TABLE_1_L_OFFSET) -#define reg_G3X_TOON_TABLE_1_L (*( REGType16v *)REG_TOON_TABLE_1_L_ADDR) - -#define REG_TOON_TABLE_1_H_OFFSET 0x386 -#define REG_TOON_TABLE_1_H_ADDR (HW_REG_BASE + REG_TOON_TABLE_1_H_OFFSET) -#define reg_G3X_TOON_TABLE_1_H (*( REGType16v *)REG_TOON_TABLE_1_H_ADDR) - -#define REG_TOON_TABLE_2_OFFSET 0x388 -#define REG_TOON_TABLE_2_ADDR (HW_REG_BASE + REG_TOON_TABLE_2_OFFSET) -#define reg_G3X_TOON_TABLE_2 (*( REGType32v *)REG_TOON_TABLE_2_ADDR) - -#define REG_TOON_TABLE_2_L_OFFSET 0x388 -#define REG_TOON_TABLE_2_L_ADDR (HW_REG_BASE + REG_TOON_TABLE_2_L_OFFSET) -#define reg_G3X_TOON_TABLE_2_L (*( REGType16v *)REG_TOON_TABLE_2_L_ADDR) - -#define REG_TOON_TABLE_2_H_OFFSET 0x38a -#define REG_TOON_TABLE_2_H_ADDR (HW_REG_BASE + REG_TOON_TABLE_2_H_OFFSET) -#define reg_G3X_TOON_TABLE_2_H (*( REGType16v *)REG_TOON_TABLE_2_H_ADDR) - -#define REG_TOON_TABLE_3_OFFSET 0x38c -#define REG_TOON_TABLE_3_ADDR (HW_REG_BASE + REG_TOON_TABLE_3_OFFSET) -#define reg_G3X_TOON_TABLE_3 (*( REGType32v *)REG_TOON_TABLE_3_ADDR) - -#define REG_TOON_TABLE_3_L_OFFSET 0x38c -#define REG_TOON_TABLE_3_L_ADDR (HW_REG_BASE + REG_TOON_TABLE_3_L_OFFSET) -#define reg_G3X_TOON_TABLE_3_L (*( REGType16v *)REG_TOON_TABLE_3_L_ADDR) - -#define REG_TOON_TABLE_3_H_OFFSET 0x38e -#define REG_TOON_TABLE_3_H_ADDR (HW_REG_BASE + REG_TOON_TABLE_3_H_OFFSET) -#define reg_G3X_TOON_TABLE_3_H (*( REGType16v *)REG_TOON_TABLE_3_H_ADDR) - -#define REG_TOON_TABLE_4_OFFSET 0x390 -#define REG_TOON_TABLE_4_ADDR (HW_REG_BASE + REG_TOON_TABLE_4_OFFSET) -#define reg_G3X_TOON_TABLE_4 (*( REGType32v *)REG_TOON_TABLE_4_ADDR) - -#define REG_TOON_TABLE_4_L_OFFSET 0x390 -#define REG_TOON_TABLE_4_L_ADDR (HW_REG_BASE + REG_TOON_TABLE_4_L_OFFSET) -#define reg_G3X_TOON_TABLE_4_L (*( REGType16v *)REG_TOON_TABLE_4_L_ADDR) - -#define REG_TOON_TABLE_4_H_OFFSET 0x392 -#define REG_TOON_TABLE_4_H_ADDR (HW_REG_BASE + REG_TOON_TABLE_4_H_OFFSET) -#define reg_G3X_TOON_TABLE_4_H (*( REGType16v *)REG_TOON_TABLE_4_H_ADDR) - -#define REG_TOON_TABLE_5_OFFSET 0x394 -#define REG_TOON_TABLE_5_ADDR (HW_REG_BASE + REG_TOON_TABLE_5_OFFSET) -#define reg_G3X_TOON_TABLE_5 (*( REGType32v *)REG_TOON_TABLE_5_ADDR) - -#define REG_TOON_TABLE_5_L_OFFSET 0x394 -#define REG_TOON_TABLE_5_L_ADDR (HW_REG_BASE + REG_TOON_TABLE_5_L_OFFSET) -#define reg_G3X_TOON_TABLE_5_L (*( REGType16v *)REG_TOON_TABLE_5_L_ADDR) - -#define REG_TOON_TABLE_5_H_OFFSET 0x396 -#define REG_TOON_TABLE_5_H_ADDR (HW_REG_BASE + REG_TOON_TABLE_5_H_OFFSET) -#define reg_G3X_TOON_TABLE_5_H (*( REGType16v *)REG_TOON_TABLE_5_H_ADDR) - -#define REG_TOON_TABLE_6_OFFSET 0x398 -#define REG_TOON_TABLE_6_ADDR (HW_REG_BASE + REG_TOON_TABLE_6_OFFSET) -#define reg_G3X_TOON_TABLE_6 (*( REGType32v *)REG_TOON_TABLE_6_ADDR) - -#define REG_TOON_TABLE_6_L_OFFSET 0x398 -#define REG_TOON_TABLE_6_L_ADDR (HW_REG_BASE + REG_TOON_TABLE_6_L_OFFSET) -#define reg_G3X_TOON_TABLE_6_L (*( REGType16v *)REG_TOON_TABLE_6_L_ADDR) - -#define REG_TOON_TABLE_6_H_OFFSET 0x39a -#define REG_TOON_TABLE_6_H_ADDR (HW_REG_BASE + REG_TOON_TABLE_6_H_OFFSET) -#define reg_G3X_TOON_TABLE_6_H (*( REGType16v *)REG_TOON_TABLE_6_H_ADDR) - -#define REG_TOON_TABLE_7_OFFSET 0x39c -#define REG_TOON_TABLE_7_ADDR (HW_REG_BASE + REG_TOON_TABLE_7_OFFSET) -#define reg_G3X_TOON_TABLE_7 (*( REGType32v *)REG_TOON_TABLE_7_ADDR) - -#define REG_TOON_TABLE_7_L_OFFSET 0x39c -#define REG_TOON_TABLE_7_L_ADDR (HW_REG_BASE + REG_TOON_TABLE_7_L_OFFSET) -#define reg_G3X_TOON_TABLE_7_L (*( REGType16v *)REG_TOON_TABLE_7_L_ADDR) - -#define REG_TOON_TABLE_7_H_OFFSET 0x39e -#define REG_TOON_TABLE_7_H_ADDR (HW_REG_BASE + REG_TOON_TABLE_7_H_OFFSET) -#define reg_G3X_TOON_TABLE_7_H (*( REGType16v *)REG_TOON_TABLE_7_H_ADDR) - -#define REG_TOON_TABLE_8_OFFSET 0x3a0 -#define REG_TOON_TABLE_8_ADDR (HW_REG_BASE + REG_TOON_TABLE_8_OFFSET) -#define reg_G3X_TOON_TABLE_8 (*( REGType32v *)REG_TOON_TABLE_8_ADDR) - -#define REG_TOON_TABLE_8_L_OFFSET 0x3a0 -#define REG_TOON_TABLE_8_L_ADDR (HW_REG_BASE + REG_TOON_TABLE_8_L_OFFSET) -#define reg_G3X_TOON_TABLE_8_L (*( REGType16v *)REG_TOON_TABLE_8_L_ADDR) - -#define REG_TOON_TABLE_8_H_OFFSET 0x3a2 -#define REG_TOON_TABLE_8_H_ADDR (HW_REG_BASE + REG_TOON_TABLE_8_H_OFFSET) -#define reg_G3X_TOON_TABLE_8_H (*( REGType16v *)REG_TOON_TABLE_8_H_ADDR) - -#define REG_TOON_TABLE_9_OFFSET 0x3a4 -#define REG_TOON_TABLE_9_ADDR (HW_REG_BASE + REG_TOON_TABLE_9_OFFSET) -#define reg_G3X_TOON_TABLE_9 (*( REGType32v *)REG_TOON_TABLE_9_ADDR) - -#define REG_TOON_TABLE_9_L_OFFSET 0x3a4 -#define REG_TOON_TABLE_9_L_ADDR (HW_REG_BASE + REG_TOON_TABLE_9_L_OFFSET) -#define reg_G3X_TOON_TABLE_9_L (*( REGType16v *)REG_TOON_TABLE_9_L_ADDR) - -#define REG_TOON_TABLE_9_H_OFFSET 0x3a6 -#define REG_TOON_TABLE_9_H_ADDR (HW_REG_BASE + REG_TOON_TABLE_9_H_OFFSET) -#define reg_G3X_TOON_TABLE_9_H (*( REGType16v *)REG_TOON_TABLE_9_H_ADDR) - -#define REG_TOON_TABLE_10_OFFSET 0x3a8 -#define REG_TOON_TABLE_10_ADDR (HW_REG_BASE + REG_TOON_TABLE_10_OFFSET) -#define reg_G3X_TOON_TABLE_10 (*( REGType32v *)REG_TOON_TABLE_10_ADDR) - -#define REG_TOON_TABLE_10_L_OFFSET 0x3a8 -#define REG_TOON_TABLE_10_L_ADDR (HW_REG_BASE + REG_TOON_TABLE_10_L_OFFSET) -#define reg_G3X_TOON_TABLE_10_L (*( REGType16v *)REG_TOON_TABLE_10_L_ADDR) - -#define REG_TOON_TABLE_10_H_OFFSET 0x3aa -#define REG_TOON_TABLE_10_H_ADDR (HW_REG_BASE + REG_TOON_TABLE_10_H_OFFSET) -#define reg_G3X_TOON_TABLE_10_H (*( REGType16v *)REG_TOON_TABLE_10_H_ADDR) - -#define REG_TOON_TABLE_11_OFFSET 0x3ac -#define REG_TOON_TABLE_11_ADDR (HW_REG_BASE + REG_TOON_TABLE_11_OFFSET) -#define reg_G3X_TOON_TABLE_11 (*( REGType32v *)REG_TOON_TABLE_11_ADDR) - -#define REG_TOON_TABLE_11_L_OFFSET 0x3ac -#define REG_TOON_TABLE_11_L_ADDR (HW_REG_BASE + REG_TOON_TABLE_11_L_OFFSET) -#define reg_G3X_TOON_TABLE_11_L (*( REGType16v *)REG_TOON_TABLE_11_L_ADDR) - -#define REG_TOON_TABLE_11_H_OFFSET 0x3ae -#define REG_TOON_TABLE_11_H_ADDR (HW_REG_BASE + REG_TOON_TABLE_11_H_OFFSET) -#define reg_G3X_TOON_TABLE_11_H (*( REGType16v *)REG_TOON_TABLE_11_H_ADDR) - -#define REG_TOON_TABLE_12_OFFSET 0x3b0 -#define REG_TOON_TABLE_12_ADDR (HW_REG_BASE + REG_TOON_TABLE_12_OFFSET) -#define reg_G3X_TOON_TABLE_12 (*( REGType32v *)REG_TOON_TABLE_12_ADDR) - -#define REG_TOON_TABLE_12_L_OFFSET 0x3b0 -#define REG_TOON_TABLE_12_L_ADDR (HW_REG_BASE + REG_TOON_TABLE_12_L_OFFSET) -#define reg_G3X_TOON_TABLE_12_L (*( REGType16v *)REG_TOON_TABLE_12_L_ADDR) - -#define REG_TOON_TABLE_12_H_OFFSET 0x3b2 -#define REG_TOON_TABLE_12_H_ADDR (HW_REG_BASE + REG_TOON_TABLE_12_H_OFFSET) -#define reg_G3X_TOON_TABLE_12_H (*( REGType16v *)REG_TOON_TABLE_12_H_ADDR) - -#define REG_TOON_TABLE_13_OFFSET 0x3b4 -#define REG_TOON_TABLE_13_ADDR (HW_REG_BASE + REG_TOON_TABLE_13_OFFSET) -#define reg_G3X_TOON_TABLE_13 (*( REGType32v *)REG_TOON_TABLE_13_ADDR) - -#define REG_TOON_TABLE_13_L_OFFSET 0x3b4 -#define REG_TOON_TABLE_13_L_ADDR (HW_REG_BASE + REG_TOON_TABLE_13_L_OFFSET) -#define reg_G3X_TOON_TABLE_13_L (*( REGType16v *)REG_TOON_TABLE_13_L_ADDR) - -#define REG_TOON_TABLE_13_H_OFFSET 0x3b6 -#define REG_TOON_TABLE_13_H_ADDR (HW_REG_BASE + REG_TOON_TABLE_13_H_OFFSET) -#define reg_G3X_TOON_TABLE_13_H (*( REGType16v *)REG_TOON_TABLE_13_H_ADDR) - -#define REG_TOON_TABLE_14_OFFSET 0x3b8 -#define REG_TOON_TABLE_14_ADDR (HW_REG_BASE + REG_TOON_TABLE_14_OFFSET) -#define reg_G3X_TOON_TABLE_14 (*( REGType32v *)REG_TOON_TABLE_14_ADDR) - -#define REG_TOON_TABLE_14_L_OFFSET 0x3b8 -#define REG_TOON_TABLE_14_L_ADDR (HW_REG_BASE + REG_TOON_TABLE_14_L_OFFSET) -#define reg_G3X_TOON_TABLE_14_L (*( REGType16v *)REG_TOON_TABLE_14_L_ADDR) - -#define REG_TOON_TABLE_14_H_OFFSET 0x3ba -#define REG_TOON_TABLE_14_H_ADDR (HW_REG_BASE + REG_TOON_TABLE_14_H_OFFSET) -#define reg_G3X_TOON_TABLE_14_H (*( REGType16v *)REG_TOON_TABLE_14_H_ADDR) - -#define REG_TOON_TABLE_15_OFFSET 0x3bc -#define REG_TOON_TABLE_15_ADDR (HW_REG_BASE + REG_TOON_TABLE_15_OFFSET) -#define reg_G3X_TOON_TABLE_15 (*( REGType32v *)REG_TOON_TABLE_15_ADDR) - -#define REG_TOON_TABLE_15_L_OFFSET 0x3bc -#define REG_TOON_TABLE_15_L_ADDR (HW_REG_BASE + REG_TOON_TABLE_15_L_OFFSET) -#define reg_G3X_TOON_TABLE_15_L (*( REGType16v *)REG_TOON_TABLE_15_L_ADDR) - -#define REG_TOON_TABLE_15_H_OFFSET 0x3be -#define REG_TOON_TABLE_15_H_ADDR (HW_REG_BASE + REG_TOON_TABLE_15_H_OFFSET) -#define reg_G3X_TOON_TABLE_15_H (*( REGType16v *)REG_TOON_TABLE_15_H_ADDR) - -#define REG_GXFIFO_OFFSET 0x400 -#define REG_GXFIFO_ADDR (HW_REG_BASE + REG_GXFIFO_OFFSET) -#define reg_G3X_GXFIFO (*( REGType32v *)REG_GXFIFO_ADDR) - -#define REG_GXSTAT_OFFSET 0x600 -#define REG_GXSTAT_ADDR (HW_REG_BASE + REG_GXSTAT_OFFSET) -#define reg_G3X_GXSTAT (*( REGType32v *)REG_GXSTAT_ADDR) - -#define REG_LISTRAM_COUNT_OFFSET 0x604 -#define REG_LISTRAM_COUNT_ADDR (HW_REG_BASE + REG_LISTRAM_COUNT_OFFSET) -#define reg_G3X_LISTRAM_COUNT (*(const REGType16v *)REG_LISTRAM_COUNT_ADDR) - -#define REG_VTXRAM_COUNT_OFFSET 0x606 -#define REG_VTXRAM_COUNT_ADDR (HW_REG_BASE + REG_VTXRAM_COUNT_OFFSET) -#define reg_G3X_VTXRAM_COUNT (*(const REGType16v *)REG_VTXRAM_COUNT_ADDR) - -#define REG_DISP_1DOT_DEPTH_OFFSET 0x610 -#define REG_DISP_1DOT_DEPTH_ADDR (HW_REG_BASE + REG_DISP_1DOT_DEPTH_OFFSET) -#define reg_G3X_DISP_1DOT_DEPTH (*( REGType16v *)REG_DISP_1DOT_DEPTH_ADDR) - -#define REG_POS_RESULT_X_OFFSET 0x620 -#define REG_POS_RESULT_X_ADDR (HW_REG_BASE + REG_POS_RESULT_X_OFFSET) -#define reg_G3X_POS_RESULT_X (*(const REGType32v *)REG_POS_RESULT_X_ADDR) - -#define REG_POS_RESULT_Y_OFFSET 0x624 -#define REG_POS_RESULT_Y_ADDR (HW_REG_BASE + REG_POS_RESULT_Y_OFFSET) -#define reg_G3X_POS_RESULT_Y (*(const REGType32v *)REG_POS_RESULT_Y_ADDR) - -#define REG_POS_RESULT_Z_OFFSET 0x628 -#define REG_POS_RESULT_Z_ADDR (HW_REG_BASE + REG_POS_RESULT_Z_OFFSET) -#define reg_G3X_POS_RESULT_Z (*(const REGType32v *)REG_POS_RESULT_Z_ADDR) - -#define REG_POS_RESULT_W_OFFSET 0x62c -#define REG_POS_RESULT_W_ADDR (HW_REG_BASE + REG_POS_RESULT_W_OFFSET) -#define reg_G3X_POS_RESULT_W (*(const REGType32v *)REG_POS_RESULT_W_ADDR) - -#define REG_VEC_RESULT_X_OFFSET 0x630 -#define REG_VEC_RESULT_X_ADDR (HW_REG_BASE + REG_VEC_RESULT_X_OFFSET) -#define reg_G3X_VEC_RESULT_X (*(const REGType16v *)REG_VEC_RESULT_X_ADDR) - -#define REG_VEC_RESULT_Y_OFFSET 0x632 -#define REG_VEC_RESULT_Y_ADDR (HW_REG_BASE + REG_VEC_RESULT_Y_OFFSET) -#define reg_G3X_VEC_RESULT_Y (*(const REGType16v *)REG_VEC_RESULT_Y_ADDR) - -#define REG_VEC_RESULT_Z_OFFSET 0x634 -#define REG_VEC_RESULT_Z_ADDR (HW_REG_BASE + REG_VEC_RESULT_Z_OFFSET) -#define reg_G3X_VEC_RESULT_Z (*(const REGType16v *)REG_VEC_RESULT_Z_ADDR) - -#define REG_CLIPMTX_RESULT_0_OFFSET 0x640 -#define REG_CLIPMTX_RESULT_0_ADDR (HW_REG_BASE + REG_CLIPMTX_RESULT_0_OFFSET) -#define reg_G3X_CLIPMTX_RESULT_0 (*(const REGType32v *)REG_CLIPMTX_RESULT_0_ADDR) - -#define REG_CLIPMTX_RESULT_1_OFFSET 0x644 -#define REG_CLIPMTX_RESULT_1_ADDR (HW_REG_BASE + REG_CLIPMTX_RESULT_1_OFFSET) -#define reg_G3X_CLIPMTX_RESULT_1 (*(const REGType32v *)REG_CLIPMTX_RESULT_1_ADDR) - -#define REG_CLIPMTX_RESULT_2_OFFSET 0x648 -#define REG_CLIPMTX_RESULT_2_ADDR (HW_REG_BASE + REG_CLIPMTX_RESULT_2_OFFSET) -#define reg_G3X_CLIPMTX_RESULT_2 (*(const REGType32v *)REG_CLIPMTX_RESULT_2_ADDR) - -#define REG_CLIPMTX_RESULT_3_OFFSET 0x64c -#define REG_CLIPMTX_RESULT_3_ADDR (HW_REG_BASE + REG_CLIPMTX_RESULT_3_OFFSET) -#define reg_G3X_CLIPMTX_RESULT_3 (*(const REGType32v *)REG_CLIPMTX_RESULT_3_ADDR) - -#define REG_CLIPMTX_RESULT_4_OFFSET 0x650 -#define REG_CLIPMTX_RESULT_4_ADDR (HW_REG_BASE + REG_CLIPMTX_RESULT_4_OFFSET) -#define reg_G3X_CLIPMTX_RESULT_4 (*(const REGType32v *)REG_CLIPMTX_RESULT_4_ADDR) - -#define REG_CLIPMTX_RESULT_5_OFFSET 0x654 -#define REG_CLIPMTX_RESULT_5_ADDR (HW_REG_BASE + REG_CLIPMTX_RESULT_5_OFFSET) -#define reg_G3X_CLIPMTX_RESULT_5 (*(const REGType32v *)REG_CLIPMTX_RESULT_5_ADDR) - -#define REG_CLIPMTX_RESULT_6_OFFSET 0x658 -#define REG_CLIPMTX_RESULT_6_ADDR (HW_REG_BASE + REG_CLIPMTX_RESULT_6_OFFSET) -#define reg_G3X_CLIPMTX_RESULT_6 (*(const REGType32v *)REG_CLIPMTX_RESULT_6_ADDR) - -#define REG_CLIPMTX_RESULT_7_OFFSET 0x65c -#define REG_CLIPMTX_RESULT_7_ADDR (HW_REG_BASE + REG_CLIPMTX_RESULT_7_OFFSET) -#define reg_G3X_CLIPMTX_RESULT_7 (*(const REGType32v *)REG_CLIPMTX_RESULT_7_ADDR) - -#define REG_CLIPMTX_RESULT_8_OFFSET 0x660 -#define REG_CLIPMTX_RESULT_8_ADDR (HW_REG_BASE + REG_CLIPMTX_RESULT_8_OFFSET) -#define reg_G3X_CLIPMTX_RESULT_8 (*(const REGType32v *)REG_CLIPMTX_RESULT_8_ADDR) - -#define REG_CLIPMTX_RESULT_9_OFFSET 0x664 -#define REG_CLIPMTX_RESULT_9_ADDR (HW_REG_BASE + REG_CLIPMTX_RESULT_9_OFFSET) -#define reg_G3X_CLIPMTX_RESULT_9 (*(const REGType32v *)REG_CLIPMTX_RESULT_9_ADDR) - -#define REG_CLIPMTX_RESULT_10_OFFSET 0x668 -#define REG_CLIPMTX_RESULT_10_ADDR (HW_REG_BASE + REG_CLIPMTX_RESULT_10_OFFSET) -#define reg_G3X_CLIPMTX_RESULT_10 (*(const REGType32v *)REG_CLIPMTX_RESULT_10_ADDR) - -#define REG_CLIPMTX_RESULT_11_OFFSET 0x66c -#define REG_CLIPMTX_RESULT_11_ADDR (HW_REG_BASE + REG_CLIPMTX_RESULT_11_OFFSET) -#define reg_G3X_CLIPMTX_RESULT_11 (*(const REGType32v *)REG_CLIPMTX_RESULT_11_ADDR) - -#define REG_CLIPMTX_RESULT_12_OFFSET 0x670 -#define REG_CLIPMTX_RESULT_12_ADDR (HW_REG_BASE + REG_CLIPMTX_RESULT_12_OFFSET) -#define reg_G3X_CLIPMTX_RESULT_12 (*(const REGType32v *)REG_CLIPMTX_RESULT_12_ADDR) - -#define REG_CLIPMTX_RESULT_13_OFFSET 0x674 -#define REG_CLIPMTX_RESULT_13_ADDR (HW_REG_BASE + REG_CLIPMTX_RESULT_13_OFFSET) -#define reg_G3X_CLIPMTX_RESULT_13 (*(const REGType32v *)REG_CLIPMTX_RESULT_13_ADDR) - -#define REG_CLIPMTX_RESULT_14_OFFSET 0x678 -#define REG_CLIPMTX_RESULT_14_ADDR (HW_REG_BASE + REG_CLIPMTX_RESULT_14_OFFSET) -#define reg_G3X_CLIPMTX_RESULT_14 (*(const REGType32v *)REG_CLIPMTX_RESULT_14_ADDR) - -#define REG_CLIPMTX_RESULT_15_OFFSET 0x67c -#define REG_CLIPMTX_RESULT_15_ADDR (HW_REG_BASE + REG_CLIPMTX_RESULT_15_OFFSET) -#define reg_G3X_CLIPMTX_RESULT_15 (*(const REGType32v *)REG_CLIPMTX_RESULT_15_ADDR) - -#define REG_VECMTX_RESULT_0_OFFSET 0x680 -#define REG_VECMTX_RESULT_0_ADDR (HW_REG_BASE + REG_VECMTX_RESULT_0_OFFSET) -#define reg_G3X_VECMTX_RESULT_0 (*(const REGType32v *)REG_VECMTX_RESULT_0_ADDR) - -#define REG_VECMTX_RESULT_1_OFFSET 0x684 -#define REG_VECMTX_RESULT_1_ADDR (HW_REG_BASE + REG_VECMTX_RESULT_1_OFFSET) -#define reg_G3X_VECMTX_RESULT_1 (*(const REGType32v *)REG_VECMTX_RESULT_1_ADDR) - -#define REG_VECMTX_RESULT_2_OFFSET 0x688 -#define REG_VECMTX_RESULT_2_ADDR (HW_REG_BASE + REG_VECMTX_RESULT_2_OFFSET) -#define reg_G3X_VECMTX_RESULT_2 (*(const REGType32v *)REG_VECMTX_RESULT_2_ADDR) - -#define REG_VECMTX_RESULT_3_OFFSET 0x68c -#define REG_VECMTX_RESULT_3_ADDR (HW_REG_BASE + REG_VECMTX_RESULT_3_OFFSET) -#define reg_G3X_VECMTX_RESULT_3 (*(const REGType32v *)REG_VECMTX_RESULT_3_ADDR) - -#define REG_VECMTX_RESULT_4_OFFSET 0x690 -#define REG_VECMTX_RESULT_4_ADDR (HW_REG_BASE + REG_VECMTX_RESULT_4_OFFSET) -#define reg_G3X_VECMTX_RESULT_4 (*(const REGType32v *)REG_VECMTX_RESULT_4_ADDR) - -#define REG_VECMTX_RESULT_5_OFFSET 0x694 -#define REG_VECMTX_RESULT_5_ADDR (HW_REG_BASE + REG_VECMTX_RESULT_5_OFFSET) -#define reg_G3X_VECMTX_RESULT_5 (*(const REGType32v *)REG_VECMTX_RESULT_5_ADDR) - -#define REG_VECMTX_RESULT_6_OFFSET 0x698 -#define REG_VECMTX_RESULT_6_ADDR (HW_REG_BASE + REG_VECMTX_RESULT_6_OFFSET) -#define reg_G3X_VECMTX_RESULT_6 (*(const REGType32v *)REG_VECMTX_RESULT_6_ADDR) - -#define REG_VECMTX_RESULT_7_OFFSET 0x69c -#define REG_VECMTX_RESULT_7_ADDR (HW_REG_BASE + REG_VECMTX_RESULT_7_OFFSET) -#define reg_G3X_VECMTX_RESULT_7 (*(const REGType32v *)REG_VECMTX_RESULT_7_ADDR) - -#define REG_VECMTX_RESULT_8_OFFSET 0x6a0 -#define REG_VECMTX_RESULT_8_ADDR (HW_REG_BASE + REG_VECMTX_RESULT_8_OFFSET) -#define reg_G3X_VECMTX_RESULT_8 (*(const REGType32v *)REG_VECMTX_RESULT_8_ADDR) - -#define REG_G3X_DISP3DCNT_PRI_SHIFT 14 -#define REG_G3X_DISP3DCNT_PRI_SIZE 1 -#define REG_G3X_DISP3DCNT_PRI_MASK 0x4000 - -#define REG_G3X_DISP3DCNT_GO_SHIFT 13 -#define REG_G3X_DISP3DCNT_GO_SIZE 1 -#define REG_G3X_DISP3DCNT_GO_MASK 0x2000 - -#define REG_G3X_DISP3DCNT_RO_SHIFT 12 -#define REG_G3X_DISP3DCNT_RO_SIZE 1 -#define REG_G3X_DISP3DCNT_RO_MASK 0x1000 - -#define REG_G3X_DISP3DCNT_FOG_SHIFT_SHIFT 8 -#define REG_G3X_DISP3DCNT_FOG_SHIFT_SIZE 4 -#define REG_G3X_DISP3DCNT_FOG_SHIFT_MASK 0x0f00 - -#define REG_G3X_DISP3DCNT_FME_SHIFT 7 -#define REG_G3X_DISP3DCNT_FME_SIZE 1 -#define REG_G3X_DISP3DCNT_FME_MASK 0x0080 - -#define REG_G3X_DISP3DCNT_FMOD_SHIFT 6 -#define REG_G3X_DISP3DCNT_FMOD_SIZE 1 -#define REG_G3X_DISP3DCNT_FMOD_MASK 0x0040 - -#define REG_G3X_DISP3DCNT_EME_SHIFT 5 -#define REG_G3X_DISP3DCNT_EME_SIZE 1 -#define REG_G3X_DISP3DCNT_EME_MASK 0x0020 - -#define REG_G3X_DISP3DCNT_AAE_SHIFT 4 -#define REG_G3X_DISP3DCNT_AAE_SIZE 1 -#define REG_G3X_DISP3DCNT_AAE_MASK 0x0010 - -#define REG_G3X_DISP3DCNT_ABE_SHIFT 3 -#define REG_G3X_DISP3DCNT_ABE_SIZE 1 -#define REG_G3X_DISP3DCNT_ABE_MASK 0x0008 - -#define REG_G3X_DISP3DCNT_ATE_SHIFT 2 -#define REG_G3X_DISP3DCNT_ATE_SIZE 1 -#define REG_G3X_DISP3DCNT_ATE_MASK 0x0004 - -#define REG_G3X_DISP3DCNT_THS_SHIFT 1 -#define REG_G3X_DISP3DCNT_THS_SIZE 1 -#define REG_G3X_DISP3DCNT_THS_MASK 0x0002 - -#define REG_G3X_DISP3DCNT_TME_SHIFT 0 -#define REG_G3X_DISP3DCNT_TME_SIZE 1 -#define REG_G3X_DISP3DCNT_TME_MASK 0x0001 - -#ifndef SDK_ASM -#define REG_G3X_DISP3DCNT_FIELD(pri, go, ro, fog_shift, fme, fmod, eme, aae, abe, ate, ths, tme) \ - (u16)( \ - ((u32)(pri) << REG_G3X_DISP3DCNT_PRI_SHIFT) | \ - ((u32)(go) << REG_G3X_DISP3DCNT_GO_SHIFT) | \ - ((u32)(ro) << REG_G3X_DISP3DCNT_RO_SHIFT) | \ - ((u32)(fog_shift) << REG_G3X_DISP3DCNT_FOG_SHIFT_SHIFT) | \ - ((u32)(fme) << REG_G3X_DISP3DCNT_FME_SHIFT) | \ - ((u32)(fmod) << REG_G3X_DISP3DCNT_FMOD_SHIFT) | \ - ((u32)(eme) << REG_G3X_DISP3DCNT_EME_SHIFT) | \ - ((u32)(aae) << REG_G3X_DISP3DCNT_AAE_SHIFT) | \ - ((u32)(abe) << REG_G3X_DISP3DCNT_ABE_SHIFT) | \ - ((u32)(ate) << REG_G3X_DISP3DCNT_ATE_SHIFT) | \ - ((u32)(ths) << REG_G3X_DISP3DCNT_THS_SHIFT) | \ - ((u32)(tme) << REG_G3X_DISP3DCNT_TME_SHIFT)) -#endif - -#define REG_G3X_RDLINES_COUNT_RENDERED_LINES_MIN_SHIFT 0 -#define REG_G3X_RDLINES_COUNT_RENDERED_LINES_MIN_SIZE 6 -#define REG_G3X_RDLINES_COUNT_RENDERED_LINES_MIN_MASK 0x003f - -#ifndef SDK_ASM -#define REG_G3X_RDLINES_COUNT_FIELD(rendered_lines_min) \ - (u16)( \ - ((u32)(rendered_lines_min) << REG_G3X_RDLINES_COUNT_RENDERED_LINES_MIN_SHIFT)) -#endif - -#define REG_G3X_EDGE_COLOR_0_BLUE1_SHIFT 26 -#define REG_G3X_EDGE_COLOR_0_BLUE1_SIZE 5 -#define REG_G3X_EDGE_COLOR_0_BLUE1_MASK 0x7c000000 - -#define REG_G3X_EDGE_COLOR_0_GREEN1_SHIFT 21 -#define REG_G3X_EDGE_COLOR_0_GREEN1_SIZE 5 -#define REG_G3X_EDGE_COLOR_0_GREEN1_MASK 0x03e00000 - -#define REG_G3X_EDGE_COLOR_0_RED1_SHIFT 16 -#define REG_G3X_EDGE_COLOR_0_RED1_SIZE 5 -#define REG_G3X_EDGE_COLOR_0_RED1_MASK 0x001f0000 - -#define REG_G3X_EDGE_COLOR_0_BLUE0_SHIFT 10 -#define REG_G3X_EDGE_COLOR_0_BLUE0_SIZE 5 -#define REG_G3X_EDGE_COLOR_0_BLUE0_MASK 0x00007c00 - -#define REG_G3X_EDGE_COLOR_0_GREEN0_SHIFT 5 -#define REG_G3X_EDGE_COLOR_0_GREEN0_SIZE 5 -#define REG_G3X_EDGE_COLOR_0_GREEN0_MASK 0x000003e0 - -#define REG_G3X_EDGE_COLOR_0_RED0_SHIFT 0 -#define REG_G3X_EDGE_COLOR_0_RED0_SIZE 5 -#define REG_G3X_EDGE_COLOR_0_RED0_MASK 0x0000001f - -#ifndef SDK_ASM -#define REG_G3X_EDGE_COLOR_0_FIELD(blue1, green1, red1, blue0, green0, red0) \ - (u32)( \ - ((u32)(blue1) << REG_G3X_EDGE_COLOR_0_BLUE1_SHIFT) | \ - ((u32)(green1) << REG_G3X_EDGE_COLOR_0_GREEN1_SHIFT) | \ - ((u32)(red1) << REG_G3X_EDGE_COLOR_0_RED1_SHIFT) | \ - ((u32)(blue0) << REG_G3X_EDGE_COLOR_0_BLUE0_SHIFT) | \ - ((u32)(green0) << REG_G3X_EDGE_COLOR_0_GREEN0_SHIFT) | \ - ((u32)(red0) << REG_G3X_EDGE_COLOR_0_RED0_SHIFT)) -#endif - -#define REG_G3X_EDGE_COLOR_0_L_BLUE0_SHIFT 10 -#define REG_G3X_EDGE_COLOR_0_L_BLUE0_SIZE 5 -#define REG_G3X_EDGE_COLOR_0_L_BLUE0_MASK 0x7c00 - -#define REG_G3X_EDGE_COLOR_0_L_GREEN0_SHIFT 5 -#define REG_G3X_EDGE_COLOR_0_L_GREEN0_SIZE 5 -#define REG_G3X_EDGE_COLOR_0_L_GREEN0_MASK 0x03e0 - -#define REG_G3X_EDGE_COLOR_0_L_RED0_SHIFT 0 -#define REG_G3X_EDGE_COLOR_0_L_RED0_SIZE 5 -#define REG_G3X_EDGE_COLOR_0_L_RED0_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G3X_EDGE_COLOR_0_L_FIELD(blue0, green0, red0) \ - (u16)( \ - ((u32)(blue0) << REG_G3X_EDGE_COLOR_0_L_BLUE0_SHIFT) | \ - ((u32)(green0) << REG_G3X_EDGE_COLOR_0_L_GREEN0_SHIFT) | \ - ((u32)(red0) << REG_G3X_EDGE_COLOR_0_L_RED0_SHIFT)) -#endif - -#define REG_G3X_EDGE_COLOR_0_H_BLUE1_SHIFT 10 -#define REG_G3X_EDGE_COLOR_0_H_BLUE1_SIZE 5 -#define REG_G3X_EDGE_COLOR_0_H_BLUE1_MASK 0x7c00 - -#define REG_G3X_EDGE_COLOR_0_H_GREEN1_SHIFT 5 -#define REG_G3X_EDGE_COLOR_0_H_GREEN1_SIZE 5 -#define REG_G3X_EDGE_COLOR_0_H_GREEN1_MASK 0x03e0 - -#define REG_G3X_EDGE_COLOR_0_H_RED1_SHIFT 0 -#define REG_G3X_EDGE_COLOR_0_H_RED1_SIZE 5 -#define REG_G3X_EDGE_COLOR_0_H_RED1_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G3X_EDGE_COLOR_0_H_FIELD(blue1, green1, red1) \ - (u16)( \ - ((u32)(blue1) << REG_G3X_EDGE_COLOR_0_H_BLUE1_SHIFT) | \ - ((u32)(green1) << REG_G3X_EDGE_COLOR_0_H_GREEN1_SHIFT) | \ - ((u32)(red1) << REG_G3X_EDGE_COLOR_0_H_RED1_SHIFT)) -#endif - -#define REG_G3X_EDGE_COLOR_1_BLUE3_SHIFT 26 -#define REG_G3X_EDGE_COLOR_1_BLUE3_SIZE 5 -#define REG_G3X_EDGE_COLOR_1_BLUE3_MASK 0x7c000000 - -#define REG_G3X_EDGE_COLOR_1_GREEN3_SHIFT 21 -#define REG_G3X_EDGE_COLOR_1_GREEN3_SIZE 5 -#define REG_G3X_EDGE_COLOR_1_GREEN3_MASK 0x03e00000 - -#define REG_G3X_EDGE_COLOR_1_RED3_SHIFT 16 -#define REG_G3X_EDGE_COLOR_1_RED3_SIZE 5 -#define REG_G3X_EDGE_COLOR_1_RED3_MASK 0x001f0000 - -#define REG_G3X_EDGE_COLOR_1_BLUE2_SHIFT 10 -#define REG_G3X_EDGE_COLOR_1_BLUE2_SIZE 5 -#define REG_G3X_EDGE_COLOR_1_BLUE2_MASK 0x00007c00 - -#define REG_G3X_EDGE_COLOR_1_GREEN2_SHIFT 5 -#define REG_G3X_EDGE_COLOR_1_GREEN2_SIZE 5 -#define REG_G3X_EDGE_COLOR_1_GREEN2_MASK 0x000003e0 - -#define REG_G3X_EDGE_COLOR_1_RED2_SHIFT 0 -#define REG_G3X_EDGE_COLOR_1_RED2_SIZE 5 -#define REG_G3X_EDGE_COLOR_1_RED2_MASK 0x0000001f - -#ifndef SDK_ASM -#define REG_G3X_EDGE_COLOR_1_FIELD(blue3, green3, red3, blue2, green2, red2) \ - (u32)( \ - ((u32)(blue3) << REG_G3X_EDGE_COLOR_1_BLUE3_SHIFT) | \ - ((u32)(green3) << REG_G3X_EDGE_COLOR_1_GREEN3_SHIFT) | \ - ((u32)(red3) << REG_G3X_EDGE_COLOR_1_RED3_SHIFT) | \ - ((u32)(blue2) << REG_G3X_EDGE_COLOR_1_BLUE2_SHIFT) | \ - ((u32)(green2) << REG_G3X_EDGE_COLOR_1_GREEN2_SHIFT) | \ - ((u32)(red2) << REG_G3X_EDGE_COLOR_1_RED2_SHIFT)) -#endif - -#define REG_G3X_EDGE_COLOR_1_L_BLUE2_SHIFT 10 -#define REG_G3X_EDGE_COLOR_1_L_BLUE2_SIZE 5 -#define REG_G3X_EDGE_COLOR_1_L_BLUE2_MASK 0x7c00 - -#define REG_G3X_EDGE_COLOR_1_L_GREEN2_SHIFT 5 -#define REG_G3X_EDGE_COLOR_1_L_GREEN2_SIZE 5 -#define REG_G3X_EDGE_COLOR_1_L_GREEN2_MASK 0x03e0 - -#define REG_G3X_EDGE_COLOR_1_L_RED2_SHIFT 0 -#define REG_G3X_EDGE_COLOR_1_L_RED2_SIZE 5 -#define REG_G3X_EDGE_COLOR_1_L_RED2_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G3X_EDGE_COLOR_1_L_FIELD(blue2, green2, red2) \ - (u16)( \ - ((u32)(blue2) << REG_G3X_EDGE_COLOR_1_L_BLUE2_SHIFT) | \ - ((u32)(green2) << REG_G3X_EDGE_COLOR_1_L_GREEN2_SHIFT) | \ - ((u32)(red2) << REG_G3X_EDGE_COLOR_1_L_RED2_SHIFT)) -#endif - -#define REG_G3X_EDGE_COLOR_1_H_BLUE3_SHIFT 10 -#define REG_G3X_EDGE_COLOR_1_H_BLUE3_SIZE 5 -#define REG_G3X_EDGE_COLOR_1_H_BLUE3_MASK 0x7c00 - -#define REG_G3X_EDGE_COLOR_1_H_GREEN3_SHIFT 5 -#define REG_G3X_EDGE_COLOR_1_H_GREEN3_SIZE 5 -#define REG_G3X_EDGE_COLOR_1_H_GREEN3_MASK 0x03e0 - -#define REG_G3X_EDGE_COLOR_1_H_RED3_SHIFT 0 -#define REG_G3X_EDGE_COLOR_1_H_RED3_SIZE 5 -#define REG_G3X_EDGE_COLOR_1_H_RED3_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G3X_EDGE_COLOR_1_H_FIELD(blue3, green3, red3) \ - (u16)( \ - ((u32)(blue3) << REG_G3X_EDGE_COLOR_1_H_BLUE3_SHIFT) | \ - ((u32)(green3) << REG_G3X_EDGE_COLOR_1_H_GREEN3_SHIFT) | \ - ((u32)(red3) << REG_G3X_EDGE_COLOR_1_H_RED3_SHIFT)) -#endif - -#define REG_G3X_EDGE_COLOR_2_BLUE5_SHIFT 26 -#define REG_G3X_EDGE_COLOR_2_BLUE5_SIZE 5 -#define REG_G3X_EDGE_COLOR_2_BLUE5_MASK 0x7c000000 - -#define REG_G3X_EDGE_COLOR_2_GREEN5_SHIFT 21 -#define REG_G3X_EDGE_COLOR_2_GREEN5_SIZE 5 -#define REG_G3X_EDGE_COLOR_2_GREEN5_MASK 0x03e00000 - -#define REG_G3X_EDGE_COLOR_2_RED5_SHIFT 16 -#define REG_G3X_EDGE_COLOR_2_RED5_SIZE 5 -#define REG_G3X_EDGE_COLOR_2_RED5_MASK 0x001f0000 - -#define REG_G3X_EDGE_COLOR_2_BLUE4_SHIFT 10 -#define REG_G3X_EDGE_COLOR_2_BLUE4_SIZE 5 -#define REG_G3X_EDGE_COLOR_2_BLUE4_MASK 0x00007c00 - -#define REG_G3X_EDGE_COLOR_2_GREEN4_SHIFT 5 -#define REG_G3X_EDGE_COLOR_2_GREEN4_SIZE 5 -#define REG_G3X_EDGE_COLOR_2_GREEN4_MASK 0x000003e0 - -#define REG_G3X_EDGE_COLOR_2_RED4_SHIFT 0 -#define REG_G3X_EDGE_COLOR_2_RED4_SIZE 5 -#define REG_G3X_EDGE_COLOR_2_RED4_MASK 0x0000001f - -#ifndef SDK_ASM -#define REG_G3X_EDGE_COLOR_2_FIELD(blue5, green5, red5, blue4, green4, red4) \ - (u32)( \ - ((u32)(blue5) << REG_G3X_EDGE_COLOR_2_BLUE5_SHIFT) | \ - ((u32)(green5) << REG_G3X_EDGE_COLOR_2_GREEN5_SHIFT) | \ - ((u32)(red5) << REG_G3X_EDGE_COLOR_2_RED5_SHIFT) | \ - ((u32)(blue4) << REG_G3X_EDGE_COLOR_2_BLUE4_SHIFT) | \ - ((u32)(green4) << REG_G3X_EDGE_COLOR_2_GREEN4_SHIFT) | \ - ((u32)(red4) << REG_G3X_EDGE_COLOR_2_RED4_SHIFT)) -#endif - -#define REG_G3X_EDGE_COLOR_2_L_BLUE4_SHIFT 10 -#define REG_G3X_EDGE_COLOR_2_L_BLUE4_SIZE 5 -#define REG_G3X_EDGE_COLOR_2_L_BLUE4_MASK 0x7c00 - -#define REG_G3X_EDGE_COLOR_2_L_GREEN4_SHIFT 5 -#define REG_G3X_EDGE_COLOR_2_L_GREEN4_SIZE 5 -#define REG_G3X_EDGE_COLOR_2_L_GREEN4_MASK 0x03e0 - -#define REG_G3X_EDGE_COLOR_2_L_RED4_SHIFT 0 -#define REG_G3X_EDGE_COLOR_2_L_RED4_SIZE 5 -#define REG_G3X_EDGE_COLOR_2_L_RED4_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G3X_EDGE_COLOR_2_L_FIELD(blue4, green4, red4) \ - (u16)( \ - ((u32)(blue4) << REG_G3X_EDGE_COLOR_2_L_BLUE4_SHIFT) | \ - ((u32)(green4) << REG_G3X_EDGE_COLOR_2_L_GREEN4_SHIFT) | \ - ((u32)(red4) << REG_G3X_EDGE_COLOR_2_L_RED4_SHIFT)) -#endif - -#define REG_G3X_EDGE_COLOR_2_H_BLUE5_SHIFT 10 -#define REG_G3X_EDGE_COLOR_2_H_BLUE5_SIZE 5 -#define REG_G3X_EDGE_COLOR_2_H_BLUE5_MASK 0x7c00 - -#define REG_G3X_EDGE_COLOR_2_H_GREEN5_SHIFT 5 -#define REG_G3X_EDGE_COLOR_2_H_GREEN5_SIZE 5 -#define REG_G3X_EDGE_COLOR_2_H_GREEN5_MASK 0x03e0 - -#define REG_G3X_EDGE_COLOR_2_H_RED5_SHIFT 0 -#define REG_G3X_EDGE_COLOR_2_H_RED5_SIZE 5 -#define REG_G3X_EDGE_COLOR_2_H_RED5_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G3X_EDGE_COLOR_2_H_FIELD(blue5, green5, red5) \ - (u16)( \ - ((u32)(blue5) << REG_G3X_EDGE_COLOR_2_H_BLUE5_SHIFT) | \ - ((u32)(green5) << REG_G3X_EDGE_COLOR_2_H_GREEN5_SHIFT) | \ - ((u32)(red5) << REG_G3X_EDGE_COLOR_2_H_RED5_SHIFT)) -#endif - -#define REG_G3X_EDGE_COLOR_3_BLUE7_SHIFT 26 -#define REG_G3X_EDGE_COLOR_3_BLUE7_SIZE 5 -#define REG_G3X_EDGE_COLOR_3_BLUE7_MASK 0x7c000000 - -#define REG_G3X_EDGE_COLOR_3_GREEN7_SHIFT 21 -#define REG_G3X_EDGE_COLOR_3_GREEN7_SIZE 5 -#define REG_G3X_EDGE_COLOR_3_GREEN7_MASK 0x03e00000 - -#define REG_G3X_EDGE_COLOR_3_RED7_SHIFT 16 -#define REG_G3X_EDGE_COLOR_3_RED7_SIZE 5 -#define REG_G3X_EDGE_COLOR_3_RED7_MASK 0x001f0000 - -#define REG_G3X_EDGE_COLOR_3_BLUE6_SHIFT 10 -#define REG_G3X_EDGE_COLOR_3_BLUE6_SIZE 5 -#define REG_G3X_EDGE_COLOR_3_BLUE6_MASK 0x00007c00 - -#define REG_G3X_EDGE_COLOR_3_GREEN6_SHIFT 5 -#define REG_G3X_EDGE_COLOR_3_GREEN6_SIZE 5 -#define REG_G3X_EDGE_COLOR_3_GREEN6_MASK 0x000003e0 - -#define REG_G3X_EDGE_COLOR_3_RED6_SHIFT 0 -#define REG_G3X_EDGE_COLOR_3_RED6_SIZE 5 -#define REG_G3X_EDGE_COLOR_3_RED6_MASK 0x0000001f - -#ifndef SDK_ASM -#define REG_G3X_EDGE_COLOR_3_FIELD(blue7, green7, red7, blue6, green6, red6) \ - (u32)( \ - ((u32)(blue7) << REG_G3X_EDGE_COLOR_3_BLUE7_SHIFT) | \ - ((u32)(green7) << REG_G3X_EDGE_COLOR_3_GREEN7_SHIFT) | \ - ((u32)(red7) << REG_G3X_EDGE_COLOR_3_RED7_SHIFT) | \ - ((u32)(blue6) << REG_G3X_EDGE_COLOR_3_BLUE6_SHIFT) | \ - ((u32)(green6) << REG_G3X_EDGE_COLOR_3_GREEN6_SHIFT) | \ - ((u32)(red6) << REG_G3X_EDGE_COLOR_3_RED6_SHIFT)) -#endif - -#define REG_G3X_EDGE_COLOR_3_L_BLUE6_SHIFT 10 -#define REG_G3X_EDGE_COLOR_3_L_BLUE6_SIZE 5 -#define REG_G3X_EDGE_COLOR_3_L_BLUE6_MASK 0x7c00 - -#define REG_G3X_EDGE_COLOR_3_L_GREEN6_SHIFT 5 -#define REG_G3X_EDGE_COLOR_3_L_GREEN6_SIZE 5 -#define REG_G3X_EDGE_COLOR_3_L_GREEN6_MASK 0x03e0 - -#define REG_G3X_EDGE_COLOR_3_L_RED6_SHIFT 0 -#define REG_G3X_EDGE_COLOR_3_L_RED6_SIZE 5 -#define REG_G3X_EDGE_COLOR_3_L_RED6_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G3X_EDGE_COLOR_3_L_FIELD(blue6, green6, red6) \ - (u16)( \ - ((u32)(blue6) << REG_G3X_EDGE_COLOR_3_L_BLUE6_SHIFT) | \ - ((u32)(green6) << REG_G3X_EDGE_COLOR_3_L_GREEN6_SHIFT) | \ - ((u32)(red6) << REG_G3X_EDGE_COLOR_3_L_RED6_SHIFT)) -#endif - -#define REG_G3X_EDGE_COLOR_3_H_BLUE7_SHIFT 10 -#define REG_G3X_EDGE_COLOR_3_H_BLUE7_SIZE 5 -#define REG_G3X_EDGE_COLOR_3_H_BLUE7_MASK 0x7c00 - -#define REG_G3X_EDGE_COLOR_3_H_GREEN7_SHIFT 5 -#define REG_G3X_EDGE_COLOR_3_H_GREEN7_SIZE 5 -#define REG_G3X_EDGE_COLOR_3_H_GREEN7_MASK 0x03e0 - -#define REG_G3X_EDGE_COLOR_3_H_RED7_SHIFT 0 -#define REG_G3X_EDGE_COLOR_3_H_RED7_SIZE 5 -#define REG_G3X_EDGE_COLOR_3_H_RED7_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G3X_EDGE_COLOR_3_H_FIELD(blue7, green7, red7) \ - (u16)( \ - ((u32)(blue7) << REG_G3X_EDGE_COLOR_3_H_BLUE7_SHIFT) | \ - ((u32)(green7) << REG_G3X_EDGE_COLOR_3_H_GREEN7_SHIFT) | \ - ((u32)(red7) << REG_G3X_EDGE_COLOR_3_H_RED7_SHIFT)) -#endif - -#define REG_G3X_ALPHA_TEST_REF_ALPHA_REFERENCE_SHIFT 0 -#define REG_G3X_ALPHA_TEST_REF_ALPHA_REFERENCE_SIZE 5 -#define REG_G3X_ALPHA_TEST_REF_ALPHA_REFERENCE_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G3X_ALPHA_TEST_REF_FIELD(alpha_reference) \ - (u16)( \ - ((u32)(alpha_reference) << REG_G3X_ALPHA_TEST_REF_ALPHA_REFERENCE_SHIFT)) -#endif - -#define REG_G3X_CLEAR_COLOR_POLYGONID_SHIFT 24 -#define REG_G3X_CLEAR_COLOR_POLYGONID_SIZE 6 -#define REG_G3X_CLEAR_COLOR_POLYGONID_MASK 0x3f000000 - -#define REG_G3X_CLEAR_COLOR_ALPHA_SHIFT 16 -#define REG_G3X_CLEAR_COLOR_ALPHA_SIZE 5 -#define REG_G3X_CLEAR_COLOR_ALPHA_MASK 0x001f0000 - -#define REG_G3X_CLEAR_COLOR_F_SHIFT 15 -#define REG_G3X_CLEAR_COLOR_F_SIZE 1 -#define REG_G3X_CLEAR_COLOR_F_MASK 0x00008000 - -#define REG_G3X_CLEAR_COLOR_BLUE_SHIFT 10 -#define REG_G3X_CLEAR_COLOR_BLUE_SIZE 5 -#define REG_G3X_CLEAR_COLOR_BLUE_MASK 0x00007c00 - -#define REG_G3X_CLEAR_COLOR_GREEN_SHIFT 5 -#define REG_G3X_CLEAR_COLOR_GREEN_SIZE 5 -#define REG_G3X_CLEAR_COLOR_GREEN_MASK 0x000003e0 - -#define REG_G3X_CLEAR_COLOR_RED_SHIFT 0 -#define REG_G3X_CLEAR_COLOR_RED_SIZE 5 -#define REG_G3X_CLEAR_COLOR_RED_MASK 0x0000001f - -#ifndef SDK_ASM -#define REG_G3X_CLEAR_COLOR_FIELD(polygonid, alpha, f, blue, green, red) \ - (u32)( \ - ((u32)(polygonid) << REG_G3X_CLEAR_COLOR_POLYGONID_SHIFT) | \ - ((u32)(alpha) << REG_G3X_CLEAR_COLOR_ALPHA_SHIFT) | \ - ((u32)(f) << REG_G3X_CLEAR_COLOR_F_SHIFT) | \ - ((u32)(blue) << REG_G3X_CLEAR_COLOR_BLUE_SHIFT) | \ - ((u32)(green) << REG_G3X_CLEAR_COLOR_GREEN_SHIFT) | \ - ((u32)(red) << REG_G3X_CLEAR_COLOR_RED_SHIFT)) -#endif - -#define REG_G3X_CLEAR_DEPTH_CLEARDEPTH_SHIFT 0 -#define REG_G3X_CLEAR_DEPTH_CLEARDEPTH_SIZE 15 -#define REG_G3X_CLEAR_DEPTH_CLEARDEPTH_MASK 0x7fff - -#ifndef SDK_ASM -#define REG_G3X_CLEAR_DEPTH_FIELD(cleardepth) \ - (u16)( \ - ((u32)(cleardepth) << REG_G3X_CLEAR_DEPTH_CLEARDEPTH_SHIFT)) -#endif - -#define REG_G3X_CLRIMAGE_OFFSET_OFFSETY_SHIFT 8 -#define REG_G3X_CLRIMAGE_OFFSET_OFFSETY_SIZE 8 -#define REG_G3X_CLRIMAGE_OFFSET_OFFSETY_MASK 0xff00 - -#define REG_G3X_CLRIMAGE_OFFSET_OFFSETX_SHIFT 0 -#define REG_G3X_CLRIMAGE_OFFSET_OFFSETX_SIZE 8 -#define REG_G3X_CLRIMAGE_OFFSET_OFFSETX_MASK 0x00ff - -#ifndef SDK_ASM -#define REG_G3X_CLRIMAGE_OFFSET_FIELD(offsety, offsetx) \ - (u16)( \ - ((u32)(offsety) << REG_G3X_CLRIMAGE_OFFSET_OFFSETY_SHIFT) | \ - ((u32)(offsetx) << REG_G3X_CLRIMAGE_OFFSET_OFFSETX_SHIFT)) -#endif - -#define REG_G3X_FOG_COLOR_FOG_ALPHA_SHIFT 16 -#define REG_G3X_FOG_COLOR_FOG_ALPHA_SIZE 5 -#define REG_G3X_FOG_COLOR_FOG_ALPHA_MASK 0x001f0000 - -#define REG_G3X_FOG_COLOR_FOG_BLUE_SHIFT 10 -#define REG_G3X_FOG_COLOR_FOG_BLUE_SIZE 5 -#define REG_G3X_FOG_COLOR_FOG_BLUE_MASK 0x00007c00 - -#define REG_G3X_FOG_COLOR_FOG_GREEN_SHIFT 5 -#define REG_G3X_FOG_COLOR_FOG_GREEN_SIZE 5 -#define REG_G3X_FOG_COLOR_FOG_GREEN_MASK 0x000003e0 - -#define REG_G3X_FOG_COLOR_FOG_RED_SHIFT 0 -#define REG_G3X_FOG_COLOR_FOG_RED_SIZE 5 -#define REG_G3X_FOG_COLOR_FOG_RED_MASK 0x0000001f - -#ifndef SDK_ASM -#define REG_G3X_FOG_COLOR_FIELD(fog_alpha, fog_blue, fog_green, fog_red) \ - (u32)( \ - ((u32)(fog_alpha) << REG_G3X_FOG_COLOR_FOG_ALPHA_SHIFT) | \ - ((u32)(fog_blue) << REG_G3X_FOG_COLOR_FOG_BLUE_SHIFT) | \ - ((u32)(fog_green) << REG_G3X_FOG_COLOR_FOG_GREEN_SHIFT) | \ - ((u32)(fog_red) << REG_G3X_FOG_COLOR_FOG_RED_SHIFT)) -#endif - -#define REG_G3X_FOG_OFFSET_FOG_OFFSET_SHIFT 0 -#define REG_G3X_FOG_OFFSET_FOG_OFFSET_SIZE 15 -#define REG_G3X_FOG_OFFSET_FOG_OFFSET_MASK 0x7fff - -#ifndef SDK_ASM -#define REG_G3X_FOG_OFFSET_FIELD(fog_offset) \ - (u16)( \ - ((u32)(fog_offset) << REG_G3X_FOG_OFFSET_FOG_OFFSET_SHIFT)) -#endif - -#define REG_G3X_FOG_TABLE_0_DENSITY3_SHIFT 24 -#define REG_G3X_FOG_TABLE_0_DENSITY3_SIZE 7 -#define REG_G3X_FOG_TABLE_0_DENSITY3_MASK 0x7f000000 - -#define REG_G3X_FOG_TABLE_0_DENSITY2_SHIFT 16 -#define REG_G3X_FOG_TABLE_0_DENSITY2_SIZE 7 -#define REG_G3X_FOG_TABLE_0_DENSITY2_MASK 0x007f0000 - -#define REG_G3X_FOG_TABLE_0_DENSITY1_SHIFT 8 -#define REG_G3X_FOG_TABLE_0_DENSITY1_SIZE 7 -#define REG_G3X_FOG_TABLE_0_DENSITY1_MASK 0x00007f00 - -#define REG_G3X_FOG_TABLE_0_DENSITY0_SHIFT 0 -#define REG_G3X_FOG_TABLE_0_DENSITY0_SIZE 7 -#define REG_G3X_FOG_TABLE_0_DENSITY0_MASK 0x0000007f - -#ifndef SDK_ASM -#define REG_G3X_FOG_TABLE_0_FIELD(density3, density2, density1, density0) \ - (u32)( \ - ((u32)(density3) << REG_G3X_FOG_TABLE_0_DENSITY3_SHIFT) | \ - ((u32)(density2) << REG_G3X_FOG_TABLE_0_DENSITY2_SHIFT) | \ - ((u32)(density1) << REG_G3X_FOG_TABLE_0_DENSITY1_SHIFT) | \ - ((u32)(density0) << REG_G3X_FOG_TABLE_0_DENSITY0_SHIFT)) -#endif - -#define REG_G3X_FOG_TABLE_0_L_DENSITY1_SHIFT 8 -#define REG_G3X_FOG_TABLE_0_L_DENSITY1_SIZE 7 -#define REG_G3X_FOG_TABLE_0_L_DENSITY1_MASK 0x7f00 - -#define REG_G3X_FOG_TABLE_0_L_DENSITY0_SHIFT 0 -#define REG_G3X_FOG_TABLE_0_L_DENSITY0_SIZE 7 -#define REG_G3X_FOG_TABLE_0_L_DENSITY0_MASK 0x007f - -#ifndef SDK_ASM -#define REG_G3X_FOG_TABLE_0_L_FIELD(density1, density0) \ - (u16)( \ - ((u32)(density1) << REG_G3X_FOG_TABLE_0_L_DENSITY1_SHIFT) | \ - ((u32)(density0) << REG_G3X_FOG_TABLE_0_L_DENSITY0_SHIFT)) -#endif - -#define REG_G3X_FOG_TABLE_0_H_DENSITY3_SHIFT 8 -#define REG_G3X_FOG_TABLE_0_H_DENSITY3_SIZE 7 -#define REG_G3X_FOG_TABLE_0_H_DENSITY3_MASK 0x7f00 - -#define REG_G3X_FOG_TABLE_0_H_DENSITY2_SHIFT 0 -#define REG_G3X_FOG_TABLE_0_H_DENSITY2_SIZE 7 -#define REG_G3X_FOG_TABLE_0_H_DENSITY2_MASK 0x007f - -#ifndef SDK_ASM -#define REG_G3X_FOG_TABLE_0_H_FIELD(density3, density2) \ - (u16)( \ - ((u32)(density3) << REG_G3X_FOG_TABLE_0_H_DENSITY3_SHIFT) | \ - ((u32)(density2) << REG_G3X_FOG_TABLE_0_H_DENSITY2_SHIFT)) -#endif - -#define REG_G3X_FOG_TABLE_1_DENSITY7_SHIFT 24 -#define REG_G3X_FOG_TABLE_1_DENSITY7_SIZE 7 -#define REG_G3X_FOG_TABLE_1_DENSITY7_MASK 0x7f000000 - -#define REG_G3X_FOG_TABLE_1_DENSITY6_SHIFT 16 -#define REG_G3X_FOG_TABLE_1_DENSITY6_SIZE 7 -#define REG_G3X_FOG_TABLE_1_DENSITY6_MASK 0x007f0000 - -#define REG_G3X_FOG_TABLE_1_DENSITY5_SHIFT 8 -#define REG_G3X_FOG_TABLE_1_DENSITY5_SIZE 7 -#define REG_G3X_FOG_TABLE_1_DENSITY5_MASK 0x00007f00 - -#define REG_G3X_FOG_TABLE_1_DENSITY4_SHIFT 0 -#define REG_G3X_FOG_TABLE_1_DENSITY4_SIZE 7 -#define REG_G3X_FOG_TABLE_1_DENSITY4_MASK 0x0000007f - -#ifndef SDK_ASM -#define REG_G3X_FOG_TABLE_1_FIELD(density7, density6, density5, density4) \ - (u32)( \ - ((u32)(density7) << REG_G3X_FOG_TABLE_1_DENSITY7_SHIFT) | \ - ((u32)(density6) << REG_G3X_FOG_TABLE_1_DENSITY6_SHIFT) | \ - ((u32)(density5) << REG_G3X_FOG_TABLE_1_DENSITY5_SHIFT) | \ - ((u32)(density4) << REG_G3X_FOG_TABLE_1_DENSITY4_SHIFT)) -#endif - -#define REG_G3X_FOG_TABLE_1_L_DENSITY5_SHIFT 8 -#define REG_G3X_FOG_TABLE_1_L_DENSITY5_SIZE 7 -#define REG_G3X_FOG_TABLE_1_L_DENSITY5_MASK 0x7f00 - -#define REG_G3X_FOG_TABLE_1_L_DENSITY4_SHIFT 0 -#define REG_G3X_FOG_TABLE_1_L_DENSITY4_SIZE 7 -#define REG_G3X_FOG_TABLE_1_L_DENSITY4_MASK 0x007f - -#ifndef SDK_ASM -#define REG_G3X_FOG_TABLE_1_L_FIELD(density5, density4) \ - (u16)( \ - ((u32)(density5) << REG_G3X_FOG_TABLE_1_L_DENSITY5_SHIFT) | \ - ((u32)(density4) << REG_G3X_FOG_TABLE_1_L_DENSITY4_SHIFT)) -#endif - -#define REG_G3X_FOG_TABLE_1_H_DENSITY7_SHIFT 8 -#define REG_G3X_FOG_TABLE_1_H_DENSITY7_SIZE 7 -#define REG_G3X_FOG_TABLE_1_H_DENSITY7_MASK 0x7f00 - -#define REG_G3X_FOG_TABLE_1_H_DENSITY6_SHIFT 0 -#define REG_G3X_FOG_TABLE_1_H_DENSITY6_SIZE 7 -#define REG_G3X_FOG_TABLE_1_H_DENSITY6_MASK 0x007f - -#ifndef SDK_ASM -#define REG_G3X_FOG_TABLE_1_H_FIELD(density7, density6) \ - (u16)( \ - ((u32)(density7) << REG_G3X_FOG_TABLE_1_H_DENSITY7_SHIFT) | \ - ((u32)(density6) << REG_G3X_FOG_TABLE_1_H_DENSITY6_SHIFT)) -#endif - -#define REG_G3X_FOG_TABLE_2_DENSITY11_SHIFT 24 -#define REG_G3X_FOG_TABLE_2_DENSITY11_SIZE 7 -#define REG_G3X_FOG_TABLE_2_DENSITY11_MASK 0x7f000000 - -#define REG_G3X_FOG_TABLE_2_DENSITY10_SHIFT 16 -#define REG_G3X_FOG_TABLE_2_DENSITY10_SIZE 7 -#define REG_G3X_FOG_TABLE_2_DENSITY10_MASK 0x007f0000 - -#define REG_G3X_FOG_TABLE_2_DENSITY9_SHIFT 8 -#define REG_G3X_FOG_TABLE_2_DENSITY9_SIZE 7 -#define REG_G3X_FOG_TABLE_2_DENSITY9_MASK 0x00007f00 - -#define REG_G3X_FOG_TABLE_2_DENSITY8_SHIFT 0 -#define REG_G3X_FOG_TABLE_2_DENSITY8_SIZE 7 -#define REG_G3X_FOG_TABLE_2_DENSITY8_MASK 0x0000007f - -#ifndef SDK_ASM -#define REG_G3X_FOG_TABLE_2_FIELD(density11, density10, density9, density8) \ - (u32)( \ - ((u32)(density11) << REG_G3X_FOG_TABLE_2_DENSITY11_SHIFT) | \ - ((u32)(density10) << REG_G3X_FOG_TABLE_2_DENSITY10_SHIFT) | \ - ((u32)(density9) << REG_G3X_FOG_TABLE_2_DENSITY9_SHIFT) | \ - ((u32)(density8) << REG_G3X_FOG_TABLE_2_DENSITY8_SHIFT)) -#endif - -#define REG_G3X_FOG_TABLE_2_L_DENSITY9_SHIFT 8 -#define REG_G3X_FOG_TABLE_2_L_DENSITY9_SIZE 7 -#define REG_G3X_FOG_TABLE_2_L_DENSITY9_MASK 0x7f00 - -#define REG_G3X_FOG_TABLE_2_L_DENSITY8_SHIFT 0 -#define REG_G3X_FOG_TABLE_2_L_DENSITY8_SIZE 7 -#define REG_G3X_FOG_TABLE_2_L_DENSITY8_MASK 0x007f - -#ifndef SDK_ASM -#define REG_G3X_FOG_TABLE_2_L_FIELD(density9, density8) \ - (u16)( \ - ((u32)(density9) << REG_G3X_FOG_TABLE_2_L_DENSITY9_SHIFT) | \ - ((u32)(density8) << REG_G3X_FOG_TABLE_2_L_DENSITY8_SHIFT)) -#endif - -#define REG_G3X_FOG_TABLE_2_H_DENSITY11_SHIFT 8 -#define REG_G3X_FOG_TABLE_2_H_DENSITY11_SIZE 7 -#define REG_G3X_FOG_TABLE_2_H_DENSITY11_MASK 0x7f00 - -#define REG_G3X_FOG_TABLE_2_H_DENSITY10_SHIFT 0 -#define REG_G3X_FOG_TABLE_2_H_DENSITY10_SIZE 7 -#define REG_G3X_FOG_TABLE_2_H_DENSITY10_MASK 0x007f - -#ifndef SDK_ASM -#define REG_G3X_FOG_TABLE_2_H_FIELD(density11, density10) \ - (u16)( \ - ((u32)(density11) << REG_G3X_FOG_TABLE_2_H_DENSITY11_SHIFT) | \ - ((u32)(density10) << REG_G3X_FOG_TABLE_2_H_DENSITY10_SHIFT)) -#endif - -#define REG_G3X_FOG_TABLE_3_DENSITY15_SHIFT 24 -#define REG_G3X_FOG_TABLE_3_DENSITY15_SIZE 7 -#define REG_G3X_FOG_TABLE_3_DENSITY15_MASK 0x7f000000 - -#define REG_G3X_FOG_TABLE_3_DENSITY14_SHIFT 16 -#define REG_G3X_FOG_TABLE_3_DENSITY14_SIZE 7 -#define REG_G3X_FOG_TABLE_3_DENSITY14_MASK 0x007f0000 - -#define REG_G3X_FOG_TABLE_3_DENSITY13_SHIFT 8 -#define REG_G3X_FOG_TABLE_3_DENSITY13_SIZE 7 -#define REG_G3X_FOG_TABLE_3_DENSITY13_MASK 0x00007f00 - -#define REG_G3X_FOG_TABLE_3_DENSITY12_SHIFT 0 -#define REG_G3X_FOG_TABLE_3_DENSITY12_SIZE 7 -#define REG_G3X_FOG_TABLE_3_DENSITY12_MASK 0x0000007f - -#ifndef SDK_ASM -#define REG_G3X_FOG_TABLE_3_FIELD(density15, density14, density13, density12) \ - (u32)( \ - ((u32)(density15) << REG_G3X_FOG_TABLE_3_DENSITY15_SHIFT) | \ - ((u32)(density14) << REG_G3X_FOG_TABLE_3_DENSITY14_SHIFT) | \ - ((u32)(density13) << REG_G3X_FOG_TABLE_3_DENSITY13_SHIFT) | \ - ((u32)(density12) << REG_G3X_FOG_TABLE_3_DENSITY12_SHIFT)) -#endif - -#define REG_G3X_FOG_TABLE_3_L_DENSITY13_SHIFT 8 -#define REG_G3X_FOG_TABLE_3_L_DENSITY13_SIZE 7 -#define REG_G3X_FOG_TABLE_3_L_DENSITY13_MASK 0x7f00 - -#define REG_G3X_FOG_TABLE_3_L_DENSITY12_SHIFT 0 -#define REG_G3X_FOG_TABLE_3_L_DENSITY12_SIZE 7 -#define REG_G3X_FOG_TABLE_3_L_DENSITY12_MASK 0x007f - -#ifndef SDK_ASM -#define REG_G3X_FOG_TABLE_3_L_FIELD(density13, density12) \ - (u16)( \ - ((u32)(density13) << REG_G3X_FOG_TABLE_3_L_DENSITY13_SHIFT) | \ - ((u32)(density12) << REG_G3X_FOG_TABLE_3_L_DENSITY12_SHIFT)) -#endif - -#define REG_G3X_FOG_TABLE_3_H_DENSITY15_SHIFT 8 -#define REG_G3X_FOG_TABLE_3_H_DENSITY15_SIZE 7 -#define REG_G3X_FOG_TABLE_3_H_DENSITY15_MASK 0x7f00 - -#define REG_G3X_FOG_TABLE_3_H_DENSITY14_SHIFT 0 -#define REG_G3X_FOG_TABLE_3_H_DENSITY14_SIZE 7 -#define REG_G3X_FOG_TABLE_3_H_DENSITY14_MASK 0x007f - -#ifndef SDK_ASM -#define REG_G3X_FOG_TABLE_3_H_FIELD(density15, density14) \ - (u16)( \ - ((u32)(density15) << REG_G3X_FOG_TABLE_3_H_DENSITY15_SHIFT) | \ - ((u32)(density14) << REG_G3X_FOG_TABLE_3_H_DENSITY14_SHIFT)) -#endif - -#define REG_G3X_FOG_TABLE_4_DENSITY19_SHIFT 24 -#define REG_G3X_FOG_TABLE_4_DENSITY19_SIZE 7 -#define REG_G3X_FOG_TABLE_4_DENSITY19_MASK 0x7f000000 - -#define REG_G3X_FOG_TABLE_4_DENSITY18_SHIFT 16 -#define REG_G3X_FOG_TABLE_4_DENSITY18_SIZE 7 -#define REG_G3X_FOG_TABLE_4_DENSITY18_MASK 0x007f0000 - -#define REG_G3X_FOG_TABLE_4_DENSITY17_SHIFT 8 -#define REG_G3X_FOG_TABLE_4_DENSITY17_SIZE 7 -#define REG_G3X_FOG_TABLE_4_DENSITY17_MASK 0x00007f00 - -#define REG_G3X_FOG_TABLE_4_DENSITY16_SHIFT 0 -#define REG_G3X_FOG_TABLE_4_DENSITY16_SIZE 7 -#define REG_G3X_FOG_TABLE_4_DENSITY16_MASK 0x0000007f - -#ifndef SDK_ASM -#define REG_G3X_FOG_TABLE_4_FIELD(density19, density18, density17, density16) \ - (u32)( \ - ((u32)(density19) << REG_G3X_FOG_TABLE_4_DENSITY19_SHIFT) | \ - ((u32)(density18) << REG_G3X_FOG_TABLE_4_DENSITY18_SHIFT) | \ - ((u32)(density17) << REG_G3X_FOG_TABLE_4_DENSITY17_SHIFT) | \ - ((u32)(density16) << REG_G3X_FOG_TABLE_4_DENSITY16_SHIFT)) -#endif - -#define REG_G3X_FOG_TABLE_4_L_DENSITY17_SHIFT 8 -#define REG_G3X_FOG_TABLE_4_L_DENSITY17_SIZE 7 -#define REG_G3X_FOG_TABLE_4_L_DENSITY17_MASK 0x7f00 - -#define REG_G3X_FOG_TABLE_4_L_DENSITY16_SHIFT 0 -#define REG_G3X_FOG_TABLE_4_L_DENSITY16_SIZE 7 -#define REG_G3X_FOG_TABLE_4_L_DENSITY16_MASK 0x007f - -#ifndef SDK_ASM -#define REG_G3X_FOG_TABLE_4_L_FIELD(density17, density16) \ - (u16)( \ - ((u32)(density17) << REG_G3X_FOG_TABLE_4_L_DENSITY17_SHIFT) | \ - ((u32)(density16) << REG_G3X_FOG_TABLE_4_L_DENSITY16_SHIFT)) -#endif - -#define REG_G3X_FOG_TABLE_4_H_DENSITY19_SHIFT 8 -#define REG_G3X_FOG_TABLE_4_H_DENSITY19_SIZE 7 -#define REG_G3X_FOG_TABLE_4_H_DENSITY19_MASK 0x7f00 - -#define REG_G3X_FOG_TABLE_4_H_DENSITY18_SHIFT 0 -#define REG_G3X_FOG_TABLE_4_H_DENSITY18_SIZE 7 -#define REG_G3X_FOG_TABLE_4_H_DENSITY18_MASK 0x007f - -#ifndef SDK_ASM -#define REG_G3X_FOG_TABLE_4_H_FIELD(density19, density18) \ - (u16)( \ - ((u32)(density19) << REG_G3X_FOG_TABLE_4_H_DENSITY19_SHIFT) | \ - ((u32)(density18) << REG_G3X_FOG_TABLE_4_H_DENSITY18_SHIFT)) -#endif - -#define REG_G3X_FOG_TABLE_5_DENSITY23_SHIFT 24 -#define REG_G3X_FOG_TABLE_5_DENSITY23_SIZE 7 -#define REG_G3X_FOG_TABLE_5_DENSITY23_MASK 0x7f000000 - -#define REG_G3X_FOG_TABLE_5_DENSITY22_SHIFT 16 -#define REG_G3X_FOG_TABLE_5_DENSITY22_SIZE 7 -#define REG_G3X_FOG_TABLE_5_DENSITY22_MASK 0x007f0000 - -#define REG_G3X_FOG_TABLE_5_DENSITY21_SHIFT 8 -#define REG_G3X_FOG_TABLE_5_DENSITY21_SIZE 7 -#define REG_G3X_FOG_TABLE_5_DENSITY21_MASK 0x00007f00 - -#define REG_G3X_FOG_TABLE_5_DENSITY20_SHIFT 0 -#define REG_G3X_FOG_TABLE_5_DENSITY20_SIZE 7 -#define REG_G3X_FOG_TABLE_5_DENSITY20_MASK 0x0000007f - -#ifndef SDK_ASM -#define REG_G3X_FOG_TABLE_5_FIELD(density23, density22, density21, density20) \ - (u32)( \ - ((u32)(density23) << REG_G3X_FOG_TABLE_5_DENSITY23_SHIFT) | \ - ((u32)(density22) << REG_G3X_FOG_TABLE_5_DENSITY22_SHIFT) | \ - ((u32)(density21) << REG_G3X_FOG_TABLE_5_DENSITY21_SHIFT) | \ - ((u32)(density20) << REG_G3X_FOG_TABLE_5_DENSITY20_SHIFT)) -#endif - -#define REG_G3X_FOG_TABLE_5_L_DENSITY21_SHIFT 8 -#define REG_G3X_FOG_TABLE_5_L_DENSITY21_SIZE 7 -#define REG_G3X_FOG_TABLE_5_L_DENSITY21_MASK 0x7f00 - -#define REG_G3X_FOG_TABLE_5_L_DENSITY20_SHIFT 0 -#define REG_G3X_FOG_TABLE_5_L_DENSITY20_SIZE 7 -#define REG_G3X_FOG_TABLE_5_L_DENSITY20_MASK 0x007f - -#ifndef SDK_ASM -#define REG_G3X_FOG_TABLE_5_L_FIELD(density21, density20) \ - (u16)( \ - ((u32)(density21) << REG_G3X_FOG_TABLE_5_L_DENSITY21_SHIFT) | \ - ((u32)(density20) << REG_G3X_FOG_TABLE_5_L_DENSITY20_SHIFT)) -#endif - -#define REG_G3X_FOG_TABLE_5_H_DENSITY23_SHIFT 8 -#define REG_G3X_FOG_TABLE_5_H_DENSITY23_SIZE 7 -#define REG_G3X_FOG_TABLE_5_H_DENSITY23_MASK 0x7f00 - -#define REG_G3X_FOG_TABLE_5_H_DENSITY22_SHIFT 0 -#define REG_G3X_FOG_TABLE_5_H_DENSITY22_SIZE 7 -#define REG_G3X_FOG_TABLE_5_H_DENSITY22_MASK 0x007f - -#ifndef SDK_ASM -#define REG_G3X_FOG_TABLE_5_H_FIELD(density23, density22) \ - (u16)( \ - ((u32)(density23) << REG_G3X_FOG_TABLE_5_H_DENSITY23_SHIFT) | \ - ((u32)(density22) << REG_G3X_FOG_TABLE_5_H_DENSITY22_SHIFT)) -#endif - -#define REG_G3X_FOG_TABLE_6_DENSITY27_SHIFT 24 -#define REG_G3X_FOG_TABLE_6_DENSITY27_SIZE 7 -#define REG_G3X_FOG_TABLE_6_DENSITY27_MASK 0x7f000000 - -#define REG_G3X_FOG_TABLE_6_DENSITY26_SHIFT 16 -#define REG_G3X_FOG_TABLE_6_DENSITY26_SIZE 7 -#define REG_G3X_FOG_TABLE_6_DENSITY26_MASK 0x007f0000 - -#define REG_G3X_FOG_TABLE_6_DENSITY25_SHIFT 8 -#define REG_G3X_FOG_TABLE_6_DENSITY25_SIZE 7 -#define REG_G3X_FOG_TABLE_6_DENSITY25_MASK 0x00007f00 - -#define REG_G3X_FOG_TABLE_6_DENSITY24_SHIFT 0 -#define REG_G3X_FOG_TABLE_6_DENSITY24_SIZE 7 -#define REG_G3X_FOG_TABLE_6_DENSITY24_MASK 0x0000007f - -#ifndef SDK_ASM -#define REG_G3X_FOG_TABLE_6_FIELD(density27, density26, density25, density24) \ - (u32)( \ - ((u32)(density27) << REG_G3X_FOG_TABLE_6_DENSITY27_SHIFT) | \ - ((u32)(density26) << REG_G3X_FOG_TABLE_6_DENSITY26_SHIFT) | \ - ((u32)(density25) << REG_G3X_FOG_TABLE_6_DENSITY25_SHIFT) | \ - ((u32)(density24) << REG_G3X_FOG_TABLE_6_DENSITY24_SHIFT)) -#endif - -#define REG_G3X_FOG_TABLE_6_L_DENSITY25_SHIFT 8 -#define REG_G3X_FOG_TABLE_6_L_DENSITY25_SIZE 7 -#define REG_G3X_FOG_TABLE_6_L_DENSITY25_MASK 0x7f00 - -#define REG_G3X_FOG_TABLE_6_L_DENSITY24_SHIFT 0 -#define REG_G3X_FOG_TABLE_6_L_DENSITY24_SIZE 7 -#define REG_G3X_FOG_TABLE_6_L_DENSITY24_MASK 0x007f - -#ifndef SDK_ASM -#define REG_G3X_FOG_TABLE_6_L_FIELD(density25, density24) \ - (u16)( \ - ((u32)(density25) << REG_G3X_FOG_TABLE_6_L_DENSITY25_SHIFT) | \ - ((u32)(density24) << REG_G3X_FOG_TABLE_6_L_DENSITY24_SHIFT)) -#endif - -#define REG_G3X_FOG_TABLE_6_H_DENSITY27_SHIFT 8 -#define REG_G3X_FOG_TABLE_6_H_DENSITY27_SIZE 7 -#define REG_G3X_FOG_TABLE_6_H_DENSITY27_MASK 0x7f00 - -#define REG_G3X_FOG_TABLE_6_H_DENSITY26_SHIFT 0 -#define REG_G3X_FOG_TABLE_6_H_DENSITY26_SIZE 7 -#define REG_G3X_FOG_TABLE_6_H_DENSITY26_MASK 0x007f - -#ifndef SDK_ASM -#define REG_G3X_FOG_TABLE_6_H_FIELD(density27, density26) \ - (u16)( \ - ((u32)(density27) << REG_G3X_FOG_TABLE_6_H_DENSITY27_SHIFT) | \ - ((u32)(density26) << REG_G3X_FOG_TABLE_6_H_DENSITY26_SHIFT)) -#endif - -#define REG_G3X_FOG_TABLE_7_DENSITY31_SHIFT 24 -#define REG_G3X_FOG_TABLE_7_DENSITY31_SIZE 7 -#define REG_G3X_FOG_TABLE_7_DENSITY31_MASK 0x7f000000 - -#define REG_G3X_FOG_TABLE_7_DENSITY30_SHIFT 16 -#define REG_G3X_FOG_TABLE_7_DENSITY30_SIZE 7 -#define REG_G3X_FOG_TABLE_7_DENSITY30_MASK 0x007f0000 - -#define REG_G3X_FOG_TABLE_7_DENSITY29_SHIFT 8 -#define REG_G3X_FOG_TABLE_7_DENSITY29_SIZE 7 -#define REG_G3X_FOG_TABLE_7_DENSITY29_MASK 0x00007f00 - -#define REG_G3X_FOG_TABLE_7_DENSITY28_SHIFT 0 -#define REG_G3X_FOG_TABLE_7_DENSITY28_SIZE 7 -#define REG_G3X_FOG_TABLE_7_DENSITY28_MASK 0x0000007f - -#ifndef SDK_ASM -#define REG_G3X_FOG_TABLE_7_FIELD(density31, density30, density29, density28) \ - (u32)( \ - ((u32)(density31) << REG_G3X_FOG_TABLE_7_DENSITY31_SHIFT) | \ - ((u32)(density30) << REG_G3X_FOG_TABLE_7_DENSITY30_SHIFT) | \ - ((u32)(density29) << REG_G3X_FOG_TABLE_7_DENSITY29_SHIFT) | \ - ((u32)(density28) << REG_G3X_FOG_TABLE_7_DENSITY28_SHIFT)) -#endif - -#define REG_G3X_FOG_TABLE_7_L_DENSITY29_SHIFT 8 -#define REG_G3X_FOG_TABLE_7_L_DENSITY29_SIZE 7 -#define REG_G3X_FOG_TABLE_7_L_DENSITY29_MASK 0x7f00 - -#define REG_G3X_FOG_TABLE_7_L_DENSITY28_SHIFT 0 -#define REG_G3X_FOG_TABLE_7_L_DENSITY28_SIZE 7 -#define REG_G3X_FOG_TABLE_7_L_DENSITY28_MASK 0x007f - -#ifndef SDK_ASM -#define REG_G3X_FOG_TABLE_7_L_FIELD(density29, density28) \ - (u16)( \ - ((u32)(density29) << REG_G3X_FOG_TABLE_7_L_DENSITY29_SHIFT) | \ - ((u32)(density28) << REG_G3X_FOG_TABLE_7_L_DENSITY28_SHIFT)) -#endif - -#define REG_G3X_FOG_TABLE_7_H_DENSITY31_SHIFT 8 -#define REG_G3X_FOG_TABLE_7_H_DENSITY31_SIZE 7 -#define REG_G3X_FOG_TABLE_7_H_DENSITY31_MASK 0x7f00 - -#define REG_G3X_FOG_TABLE_7_H_DENSITY30_SHIFT 0 -#define REG_G3X_FOG_TABLE_7_H_DENSITY30_SIZE 7 -#define REG_G3X_FOG_TABLE_7_H_DENSITY30_MASK 0x007f - -#ifndef SDK_ASM -#define REG_G3X_FOG_TABLE_7_H_FIELD(density31, density30) \ - (u16)( \ - ((u32)(density31) << REG_G3X_FOG_TABLE_7_H_DENSITY31_SHIFT) | \ - ((u32)(density30) << REG_G3X_FOG_TABLE_7_H_DENSITY30_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_0_BLUE1_SHIFT 26 -#define REG_G3X_TOON_TABLE_0_BLUE1_SIZE 5 -#define REG_G3X_TOON_TABLE_0_BLUE1_MASK 0x7c000000 - -#define REG_G3X_TOON_TABLE_0_GREEN1_SHIFT 21 -#define REG_G3X_TOON_TABLE_0_GREEN1_SIZE 5 -#define REG_G3X_TOON_TABLE_0_GREEN1_MASK 0x03e00000 - -#define REG_G3X_TOON_TABLE_0_RED1_SHIFT 16 -#define REG_G3X_TOON_TABLE_0_RED1_SIZE 5 -#define REG_G3X_TOON_TABLE_0_RED1_MASK 0x001f0000 - -#define REG_G3X_TOON_TABLE_0_BLUE0_SHIFT 10 -#define REG_G3X_TOON_TABLE_0_BLUE0_SIZE 5 -#define REG_G3X_TOON_TABLE_0_BLUE0_MASK 0x00007c00 - -#define REG_G3X_TOON_TABLE_0_GREEN0_SHIFT 5 -#define REG_G3X_TOON_TABLE_0_GREEN0_SIZE 5 -#define REG_G3X_TOON_TABLE_0_GREEN0_MASK 0x000003e0 - -#define REG_G3X_TOON_TABLE_0_RED0_SHIFT 0 -#define REG_G3X_TOON_TABLE_0_RED0_SIZE 5 -#define REG_G3X_TOON_TABLE_0_RED0_MASK 0x0000001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_0_FIELD(blue1, green1, red1, blue0, green0, red0) \ - (u32)( \ - ((u32)(blue1) << REG_G3X_TOON_TABLE_0_BLUE1_SHIFT) | \ - ((u32)(green1) << REG_G3X_TOON_TABLE_0_GREEN1_SHIFT) | \ - ((u32)(red1) << REG_G3X_TOON_TABLE_0_RED1_SHIFT) | \ - ((u32)(blue0) << REG_G3X_TOON_TABLE_0_BLUE0_SHIFT) | \ - ((u32)(green0) << REG_G3X_TOON_TABLE_0_GREEN0_SHIFT) | \ - ((u32)(red0) << REG_G3X_TOON_TABLE_0_RED0_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_0_L_BLUE0_SHIFT 10 -#define REG_G3X_TOON_TABLE_0_L_BLUE0_SIZE 5 -#define REG_G3X_TOON_TABLE_0_L_BLUE0_MASK 0x7c00 - -#define REG_G3X_TOON_TABLE_0_L_GREEN0_SHIFT 5 -#define REG_G3X_TOON_TABLE_0_L_GREEN0_SIZE 5 -#define REG_G3X_TOON_TABLE_0_L_GREEN0_MASK 0x03e0 - -#define REG_G3X_TOON_TABLE_0_L_RED0_SHIFT 0 -#define REG_G3X_TOON_TABLE_0_L_RED0_SIZE 5 -#define REG_G3X_TOON_TABLE_0_L_RED0_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_0_L_FIELD(blue0, green0, red0) \ - (u16)( \ - ((u32)(blue0) << REG_G3X_TOON_TABLE_0_L_BLUE0_SHIFT) | \ - ((u32)(green0) << REG_G3X_TOON_TABLE_0_L_GREEN0_SHIFT) | \ - ((u32)(red0) << REG_G3X_TOON_TABLE_0_L_RED0_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_0_H_BLUE1_SHIFT 10 -#define REG_G3X_TOON_TABLE_0_H_BLUE1_SIZE 5 -#define REG_G3X_TOON_TABLE_0_H_BLUE1_MASK 0x7c00 - -#define REG_G3X_TOON_TABLE_0_H_GREEN1_SHIFT 5 -#define REG_G3X_TOON_TABLE_0_H_GREEN1_SIZE 5 -#define REG_G3X_TOON_TABLE_0_H_GREEN1_MASK 0x03e0 - -#define REG_G3X_TOON_TABLE_0_H_RED1_SHIFT 0 -#define REG_G3X_TOON_TABLE_0_H_RED1_SIZE 5 -#define REG_G3X_TOON_TABLE_0_H_RED1_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_0_H_FIELD(blue1, green1, red1) \ - (u16)( \ - ((u32)(blue1) << REG_G3X_TOON_TABLE_0_H_BLUE1_SHIFT) | \ - ((u32)(green1) << REG_G3X_TOON_TABLE_0_H_GREEN1_SHIFT) | \ - ((u32)(red1) << REG_G3X_TOON_TABLE_0_H_RED1_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_1_BLUE3_SHIFT 26 -#define REG_G3X_TOON_TABLE_1_BLUE3_SIZE 5 -#define REG_G3X_TOON_TABLE_1_BLUE3_MASK 0x7c000000 - -#define REG_G3X_TOON_TABLE_1_GREEN3_SHIFT 21 -#define REG_G3X_TOON_TABLE_1_GREEN3_SIZE 5 -#define REG_G3X_TOON_TABLE_1_GREEN3_MASK 0x03e00000 - -#define REG_G3X_TOON_TABLE_1_RED3_SHIFT 16 -#define REG_G3X_TOON_TABLE_1_RED3_SIZE 5 -#define REG_G3X_TOON_TABLE_1_RED3_MASK 0x001f0000 - -#define REG_G3X_TOON_TABLE_1_BLUE2_SHIFT 10 -#define REG_G3X_TOON_TABLE_1_BLUE2_SIZE 5 -#define REG_G3X_TOON_TABLE_1_BLUE2_MASK 0x00007c00 - -#define REG_G3X_TOON_TABLE_1_GREEN2_SHIFT 5 -#define REG_G3X_TOON_TABLE_1_GREEN2_SIZE 5 -#define REG_G3X_TOON_TABLE_1_GREEN2_MASK 0x000003e0 - -#define REG_G3X_TOON_TABLE_1_RED2_SHIFT 0 -#define REG_G3X_TOON_TABLE_1_RED2_SIZE 5 -#define REG_G3X_TOON_TABLE_1_RED2_MASK 0x0000001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_1_FIELD(blue3, green3, red3, blue2, green2, red2) \ - (u32)( \ - ((u32)(blue3) << REG_G3X_TOON_TABLE_1_BLUE3_SHIFT) | \ - ((u32)(green3) << REG_G3X_TOON_TABLE_1_GREEN3_SHIFT) | \ - ((u32)(red3) << REG_G3X_TOON_TABLE_1_RED3_SHIFT) | \ - ((u32)(blue2) << REG_G3X_TOON_TABLE_1_BLUE2_SHIFT) | \ - ((u32)(green2) << REG_G3X_TOON_TABLE_1_GREEN2_SHIFT) | \ - ((u32)(red2) << REG_G3X_TOON_TABLE_1_RED2_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_1_L_BLUE2_SHIFT 10 -#define REG_G3X_TOON_TABLE_1_L_BLUE2_SIZE 5 -#define REG_G3X_TOON_TABLE_1_L_BLUE2_MASK 0x7c00 - -#define REG_G3X_TOON_TABLE_1_L_GREEN2_SHIFT 5 -#define REG_G3X_TOON_TABLE_1_L_GREEN2_SIZE 5 -#define REG_G3X_TOON_TABLE_1_L_GREEN2_MASK 0x03e0 - -#define REG_G3X_TOON_TABLE_1_L_RED2_SHIFT 0 -#define REG_G3X_TOON_TABLE_1_L_RED2_SIZE 5 -#define REG_G3X_TOON_TABLE_1_L_RED2_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_1_L_FIELD(blue2, green2, red2) \ - (u16)( \ - ((u32)(blue2) << REG_G3X_TOON_TABLE_1_L_BLUE2_SHIFT) | \ - ((u32)(green2) << REG_G3X_TOON_TABLE_1_L_GREEN2_SHIFT) | \ - ((u32)(red2) << REG_G3X_TOON_TABLE_1_L_RED2_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_1_H_BLUE3_SHIFT 10 -#define REG_G3X_TOON_TABLE_1_H_BLUE3_SIZE 5 -#define REG_G3X_TOON_TABLE_1_H_BLUE3_MASK 0x7c00 - -#define REG_G3X_TOON_TABLE_1_H_GREEN3_SHIFT 5 -#define REG_G3X_TOON_TABLE_1_H_GREEN3_SIZE 5 -#define REG_G3X_TOON_TABLE_1_H_GREEN3_MASK 0x03e0 - -#define REG_G3X_TOON_TABLE_1_H_RED3_SHIFT 0 -#define REG_G3X_TOON_TABLE_1_H_RED3_SIZE 5 -#define REG_G3X_TOON_TABLE_1_H_RED3_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_1_H_FIELD(blue3, green3, red3) \ - (u16)( \ - ((u32)(blue3) << REG_G3X_TOON_TABLE_1_H_BLUE3_SHIFT) | \ - ((u32)(green3) << REG_G3X_TOON_TABLE_1_H_GREEN3_SHIFT) | \ - ((u32)(red3) << REG_G3X_TOON_TABLE_1_H_RED3_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_2_BLUE5_SHIFT 26 -#define REG_G3X_TOON_TABLE_2_BLUE5_SIZE 5 -#define REG_G3X_TOON_TABLE_2_BLUE5_MASK 0x7c000000 - -#define REG_G3X_TOON_TABLE_2_GREEN5_SHIFT 21 -#define REG_G3X_TOON_TABLE_2_GREEN5_SIZE 5 -#define REG_G3X_TOON_TABLE_2_GREEN5_MASK 0x03e00000 - -#define REG_G3X_TOON_TABLE_2_RED5_SHIFT 16 -#define REG_G3X_TOON_TABLE_2_RED5_SIZE 5 -#define REG_G3X_TOON_TABLE_2_RED5_MASK 0x001f0000 - -#define REG_G3X_TOON_TABLE_2_BLUE4_SHIFT 10 -#define REG_G3X_TOON_TABLE_2_BLUE4_SIZE 5 -#define REG_G3X_TOON_TABLE_2_BLUE4_MASK 0x00007c00 - -#define REG_G3X_TOON_TABLE_2_GREEN4_SHIFT 5 -#define REG_G3X_TOON_TABLE_2_GREEN4_SIZE 5 -#define REG_G3X_TOON_TABLE_2_GREEN4_MASK 0x000003e0 - -#define REG_G3X_TOON_TABLE_2_RED4_SHIFT 0 -#define REG_G3X_TOON_TABLE_2_RED4_SIZE 5 -#define REG_G3X_TOON_TABLE_2_RED4_MASK 0x0000001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_2_FIELD(blue5, green5, red5, blue4, green4, red4) \ - (u32)( \ - ((u32)(blue5) << REG_G3X_TOON_TABLE_2_BLUE5_SHIFT) | \ - ((u32)(green5) << REG_G3X_TOON_TABLE_2_GREEN5_SHIFT) | \ - ((u32)(red5) << REG_G3X_TOON_TABLE_2_RED5_SHIFT) | \ - ((u32)(blue4) << REG_G3X_TOON_TABLE_2_BLUE4_SHIFT) | \ - ((u32)(green4) << REG_G3X_TOON_TABLE_2_GREEN4_SHIFT) | \ - ((u32)(red4) << REG_G3X_TOON_TABLE_2_RED4_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_2_L_BLUE4_SHIFT 10 -#define REG_G3X_TOON_TABLE_2_L_BLUE4_SIZE 5 -#define REG_G3X_TOON_TABLE_2_L_BLUE4_MASK 0x7c00 - -#define REG_G3X_TOON_TABLE_2_L_GREEN4_SHIFT 5 -#define REG_G3X_TOON_TABLE_2_L_GREEN4_SIZE 5 -#define REG_G3X_TOON_TABLE_2_L_GREEN4_MASK 0x03e0 - -#define REG_G3X_TOON_TABLE_2_L_RED4_SHIFT 0 -#define REG_G3X_TOON_TABLE_2_L_RED4_SIZE 5 -#define REG_G3X_TOON_TABLE_2_L_RED4_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_2_L_FIELD(blue4, green4, red4) \ - (u16)( \ - ((u32)(blue4) << REG_G3X_TOON_TABLE_2_L_BLUE4_SHIFT) | \ - ((u32)(green4) << REG_G3X_TOON_TABLE_2_L_GREEN4_SHIFT) | \ - ((u32)(red4) << REG_G3X_TOON_TABLE_2_L_RED4_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_2_H_BLUE5_SHIFT 10 -#define REG_G3X_TOON_TABLE_2_H_BLUE5_SIZE 5 -#define REG_G3X_TOON_TABLE_2_H_BLUE5_MASK 0x7c00 - -#define REG_G3X_TOON_TABLE_2_H_GREEN5_SHIFT 5 -#define REG_G3X_TOON_TABLE_2_H_GREEN5_SIZE 5 -#define REG_G3X_TOON_TABLE_2_H_GREEN5_MASK 0x03e0 - -#define REG_G3X_TOON_TABLE_2_H_RED5_SHIFT 0 -#define REG_G3X_TOON_TABLE_2_H_RED5_SIZE 5 -#define REG_G3X_TOON_TABLE_2_H_RED5_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_2_H_FIELD(blue5, green5, red5) \ - (u16)( \ - ((u32)(blue5) << REG_G3X_TOON_TABLE_2_H_BLUE5_SHIFT) | \ - ((u32)(green5) << REG_G3X_TOON_TABLE_2_H_GREEN5_SHIFT) | \ - ((u32)(red5) << REG_G3X_TOON_TABLE_2_H_RED5_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_3_BLUE7_SHIFT 26 -#define REG_G3X_TOON_TABLE_3_BLUE7_SIZE 5 -#define REG_G3X_TOON_TABLE_3_BLUE7_MASK 0x7c000000 - -#define REG_G3X_TOON_TABLE_3_GREEN7_SHIFT 21 -#define REG_G3X_TOON_TABLE_3_GREEN7_SIZE 5 -#define REG_G3X_TOON_TABLE_3_GREEN7_MASK 0x03e00000 - -#define REG_G3X_TOON_TABLE_3_RED7_SHIFT 16 -#define REG_G3X_TOON_TABLE_3_RED7_SIZE 5 -#define REG_G3X_TOON_TABLE_3_RED7_MASK 0x001f0000 - -#define REG_G3X_TOON_TABLE_3_BLUE6_SHIFT 10 -#define REG_G3X_TOON_TABLE_3_BLUE6_SIZE 5 -#define REG_G3X_TOON_TABLE_3_BLUE6_MASK 0x00007c00 - -#define REG_G3X_TOON_TABLE_3_GREEN6_SHIFT 5 -#define REG_G3X_TOON_TABLE_3_GREEN6_SIZE 5 -#define REG_G3X_TOON_TABLE_3_GREEN6_MASK 0x000003e0 - -#define REG_G3X_TOON_TABLE_3_RED6_SHIFT 0 -#define REG_G3X_TOON_TABLE_3_RED6_SIZE 5 -#define REG_G3X_TOON_TABLE_3_RED6_MASK 0x0000001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_3_FIELD(blue7, green7, red7, blue6, green6, red6) \ - (u32)( \ - ((u32)(blue7) << REG_G3X_TOON_TABLE_3_BLUE7_SHIFT) | \ - ((u32)(green7) << REG_G3X_TOON_TABLE_3_GREEN7_SHIFT) | \ - ((u32)(red7) << REG_G3X_TOON_TABLE_3_RED7_SHIFT) | \ - ((u32)(blue6) << REG_G3X_TOON_TABLE_3_BLUE6_SHIFT) | \ - ((u32)(green6) << REG_G3X_TOON_TABLE_3_GREEN6_SHIFT) | \ - ((u32)(red6) << REG_G3X_TOON_TABLE_3_RED6_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_3_L_BLUE6_SHIFT 10 -#define REG_G3X_TOON_TABLE_3_L_BLUE6_SIZE 5 -#define REG_G3X_TOON_TABLE_3_L_BLUE6_MASK 0x7c00 - -#define REG_G3X_TOON_TABLE_3_L_GREEN6_SHIFT 5 -#define REG_G3X_TOON_TABLE_3_L_GREEN6_SIZE 5 -#define REG_G3X_TOON_TABLE_3_L_GREEN6_MASK 0x03e0 - -#define REG_G3X_TOON_TABLE_3_L_RED6_SHIFT 0 -#define REG_G3X_TOON_TABLE_3_L_RED6_SIZE 5 -#define REG_G3X_TOON_TABLE_3_L_RED6_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_3_L_FIELD(blue6, green6, red6) \ - (u16)( \ - ((u32)(blue6) << REG_G3X_TOON_TABLE_3_L_BLUE6_SHIFT) | \ - ((u32)(green6) << REG_G3X_TOON_TABLE_3_L_GREEN6_SHIFT) | \ - ((u32)(red6) << REG_G3X_TOON_TABLE_3_L_RED6_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_3_H_BLUE7_SHIFT 10 -#define REG_G3X_TOON_TABLE_3_H_BLUE7_SIZE 5 -#define REG_G3X_TOON_TABLE_3_H_BLUE7_MASK 0x7c00 - -#define REG_G3X_TOON_TABLE_3_H_GREEN7_SHIFT 5 -#define REG_G3X_TOON_TABLE_3_H_GREEN7_SIZE 5 -#define REG_G3X_TOON_TABLE_3_H_GREEN7_MASK 0x03e0 - -#define REG_G3X_TOON_TABLE_3_H_RED7_SHIFT 0 -#define REG_G3X_TOON_TABLE_3_H_RED7_SIZE 5 -#define REG_G3X_TOON_TABLE_3_H_RED7_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_3_H_FIELD(blue7, green7, red7) \ - (u16)( \ - ((u32)(blue7) << REG_G3X_TOON_TABLE_3_H_BLUE7_SHIFT) | \ - ((u32)(green7) << REG_G3X_TOON_TABLE_3_H_GREEN7_SHIFT) | \ - ((u32)(red7) << REG_G3X_TOON_TABLE_3_H_RED7_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_4_BLUE9_SHIFT 26 -#define REG_G3X_TOON_TABLE_4_BLUE9_SIZE 5 -#define REG_G3X_TOON_TABLE_4_BLUE9_MASK 0x7c000000 - -#define REG_G3X_TOON_TABLE_4_GREEN9_SHIFT 21 -#define REG_G3X_TOON_TABLE_4_GREEN9_SIZE 5 -#define REG_G3X_TOON_TABLE_4_GREEN9_MASK 0x03e00000 - -#define REG_G3X_TOON_TABLE_4_RED9_SHIFT 16 -#define REG_G3X_TOON_TABLE_4_RED9_SIZE 5 -#define REG_G3X_TOON_TABLE_4_RED9_MASK 0x001f0000 - -#define REG_G3X_TOON_TABLE_4_BLUE8_SHIFT 10 -#define REG_G3X_TOON_TABLE_4_BLUE8_SIZE 5 -#define REG_G3X_TOON_TABLE_4_BLUE8_MASK 0x00007c00 - -#define REG_G3X_TOON_TABLE_4_GREEN8_SHIFT 5 -#define REG_G3X_TOON_TABLE_4_GREEN8_SIZE 5 -#define REG_G3X_TOON_TABLE_4_GREEN8_MASK 0x000003e0 - -#define REG_G3X_TOON_TABLE_4_RED8_SHIFT 0 -#define REG_G3X_TOON_TABLE_4_RED8_SIZE 5 -#define REG_G3X_TOON_TABLE_4_RED8_MASK 0x0000001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_4_FIELD(blue9, green9, red9, blue8, green8, red8) \ - (u32)( \ - ((u32)(blue9) << REG_G3X_TOON_TABLE_4_BLUE9_SHIFT) | \ - ((u32)(green9) << REG_G3X_TOON_TABLE_4_GREEN9_SHIFT) | \ - ((u32)(red9) << REG_G3X_TOON_TABLE_4_RED9_SHIFT) | \ - ((u32)(blue8) << REG_G3X_TOON_TABLE_4_BLUE8_SHIFT) | \ - ((u32)(green8) << REG_G3X_TOON_TABLE_4_GREEN8_SHIFT) | \ - ((u32)(red8) << REG_G3X_TOON_TABLE_4_RED8_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_4_L_BLUE8_SHIFT 10 -#define REG_G3X_TOON_TABLE_4_L_BLUE8_SIZE 5 -#define REG_G3X_TOON_TABLE_4_L_BLUE8_MASK 0x7c00 - -#define REG_G3X_TOON_TABLE_4_L_GREEN8_SHIFT 5 -#define REG_G3X_TOON_TABLE_4_L_GREEN8_SIZE 5 -#define REG_G3X_TOON_TABLE_4_L_GREEN8_MASK 0x03e0 - -#define REG_G3X_TOON_TABLE_4_L_RED8_SHIFT 0 -#define REG_G3X_TOON_TABLE_4_L_RED8_SIZE 5 -#define REG_G3X_TOON_TABLE_4_L_RED8_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_4_L_FIELD(blue8, green8, red8) \ - (u16)( \ - ((u32)(blue8) << REG_G3X_TOON_TABLE_4_L_BLUE8_SHIFT) | \ - ((u32)(green8) << REG_G3X_TOON_TABLE_4_L_GREEN8_SHIFT) | \ - ((u32)(red8) << REG_G3X_TOON_TABLE_4_L_RED8_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_4_H_BLUE9_SHIFT 10 -#define REG_G3X_TOON_TABLE_4_H_BLUE9_SIZE 5 -#define REG_G3X_TOON_TABLE_4_H_BLUE9_MASK 0x7c00 - -#define REG_G3X_TOON_TABLE_4_H_GREEN9_SHIFT 5 -#define REG_G3X_TOON_TABLE_4_H_GREEN9_SIZE 5 -#define REG_G3X_TOON_TABLE_4_H_GREEN9_MASK 0x03e0 - -#define REG_G3X_TOON_TABLE_4_H_RED9_SHIFT 0 -#define REG_G3X_TOON_TABLE_4_H_RED9_SIZE 5 -#define REG_G3X_TOON_TABLE_4_H_RED9_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_4_H_FIELD(blue9, green9, red9) \ - (u16)( \ - ((u32)(blue9) << REG_G3X_TOON_TABLE_4_H_BLUE9_SHIFT) | \ - ((u32)(green9) << REG_G3X_TOON_TABLE_4_H_GREEN9_SHIFT) | \ - ((u32)(red9) << REG_G3X_TOON_TABLE_4_H_RED9_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_5_BLUE11_SHIFT 26 -#define REG_G3X_TOON_TABLE_5_BLUE11_SIZE 5 -#define REG_G3X_TOON_TABLE_5_BLUE11_MASK 0x7c000000 - -#define REG_G3X_TOON_TABLE_5_GREEN11_SHIFT 21 -#define REG_G3X_TOON_TABLE_5_GREEN11_SIZE 5 -#define REG_G3X_TOON_TABLE_5_GREEN11_MASK 0x03e00000 - -#define REG_G3X_TOON_TABLE_5_RED11_SHIFT 16 -#define REG_G3X_TOON_TABLE_5_RED11_SIZE 5 -#define REG_G3X_TOON_TABLE_5_RED11_MASK 0x001f0000 - -#define REG_G3X_TOON_TABLE_5_BLUE10_SHIFT 10 -#define REG_G3X_TOON_TABLE_5_BLUE10_SIZE 5 -#define REG_G3X_TOON_TABLE_5_BLUE10_MASK 0x00007c00 - -#define REG_G3X_TOON_TABLE_5_GREEN10_SHIFT 5 -#define REG_G3X_TOON_TABLE_5_GREEN10_SIZE 5 -#define REG_G3X_TOON_TABLE_5_GREEN10_MASK 0x000003e0 - -#define REG_G3X_TOON_TABLE_5_RED10_SHIFT 0 -#define REG_G3X_TOON_TABLE_5_RED10_SIZE 5 -#define REG_G3X_TOON_TABLE_5_RED10_MASK 0x0000001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_5_FIELD(blue11, green11, red11, blue10, green10, red10) \ - (u32)( \ - ((u32)(blue11) << REG_G3X_TOON_TABLE_5_BLUE11_SHIFT) | \ - ((u32)(green11) << REG_G3X_TOON_TABLE_5_GREEN11_SHIFT) | \ - ((u32)(red11) << REG_G3X_TOON_TABLE_5_RED11_SHIFT) | \ - ((u32)(blue10) << REG_G3X_TOON_TABLE_5_BLUE10_SHIFT) | \ - ((u32)(green10) << REG_G3X_TOON_TABLE_5_GREEN10_SHIFT) | \ - ((u32)(red10) << REG_G3X_TOON_TABLE_5_RED10_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_5_L_BLUE10_SHIFT 10 -#define REG_G3X_TOON_TABLE_5_L_BLUE10_SIZE 5 -#define REG_G3X_TOON_TABLE_5_L_BLUE10_MASK 0x7c00 - -#define REG_G3X_TOON_TABLE_5_L_GREEN10_SHIFT 5 -#define REG_G3X_TOON_TABLE_5_L_GREEN10_SIZE 5 -#define REG_G3X_TOON_TABLE_5_L_GREEN10_MASK 0x03e0 - -#define REG_G3X_TOON_TABLE_5_L_RED10_SHIFT 0 -#define REG_G3X_TOON_TABLE_5_L_RED10_SIZE 5 -#define REG_G3X_TOON_TABLE_5_L_RED10_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_5_L_FIELD(blue10, green10, red10) \ - (u16)( \ - ((u32)(blue10) << REG_G3X_TOON_TABLE_5_L_BLUE10_SHIFT) | \ - ((u32)(green10) << REG_G3X_TOON_TABLE_5_L_GREEN10_SHIFT) | \ - ((u32)(red10) << REG_G3X_TOON_TABLE_5_L_RED10_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_5_H_BLUE11_SHIFT 10 -#define REG_G3X_TOON_TABLE_5_H_BLUE11_SIZE 5 -#define REG_G3X_TOON_TABLE_5_H_BLUE11_MASK 0x7c00 - -#define REG_G3X_TOON_TABLE_5_H_GREEN11_SHIFT 5 -#define REG_G3X_TOON_TABLE_5_H_GREEN11_SIZE 5 -#define REG_G3X_TOON_TABLE_5_H_GREEN11_MASK 0x03e0 - -#define REG_G3X_TOON_TABLE_5_H_RED11_SHIFT 0 -#define REG_G3X_TOON_TABLE_5_H_RED11_SIZE 5 -#define REG_G3X_TOON_TABLE_5_H_RED11_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_5_H_FIELD(blue11, green11, red11) \ - (u16)( \ - ((u32)(blue11) << REG_G3X_TOON_TABLE_5_H_BLUE11_SHIFT) | \ - ((u32)(green11) << REG_G3X_TOON_TABLE_5_H_GREEN11_SHIFT) | \ - ((u32)(red11) << REG_G3X_TOON_TABLE_5_H_RED11_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_6_BLUE13_SHIFT 26 -#define REG_G3X_TOON_TABLE_6_BLUE13_SIZE 5 -#define REG_G3X_TOON_TABLE_6_BLUE13_MASK 0x7c000000 - -#define REG_G3X_TOON_TABLE_6_GREEN13_SHIFT 21 -#define REG_G3X_TOON_TABLE_6_GREEN13_SIZE 5 -#define REG_G3X_TOON_TABLE_6_GREEN13_MASK 0x03e00000 - -#define REG_G3X_TOON_TABLE_6_RED13_SHIFT 16 -#define REG_G3X_TOON_TABLE_6_RED13_SIZE 5 -#define REG_G3X_TOON_TABLE_6_RED13_MASK 0x001f0000 - -#define REG_G3X_TOON_TABLE_6_BLUE12_SHIFT 10 -#define REG_G3X_TOON_TABLE_6_BLUE12_SIZE 5 -#define REG_G3X_TOON_TABLE_6_BLUE12_MASK 0x00007c00 - -#define REG_G3X_TOON_TABLE_6_GREEN12_SHIFT 5 -#define REG_G3X_TOON_TABLE_6_GREEN12_SIZE 5 -#define REG_G3X_TOON_TABLE_6_GREEN12_MASK 0x000003e0 - -#define REG_G3X_TOON_TABLE_6_RED12_SHIFT 0 -#define REG_G3X_TOON_TABLE_6_RED12_SIZE 5 -#define REG_G3X_TOON_TABLE_6_RED12_MASK 0x0000001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_6_FIELD(blue13, green13, red13, blue12, green12, red12) \ - (u32)( \ - ((u32)(blue13) << REG_G3X_TOON_TABLE_6_BLUE13_SHIFT) | \ - ((u32)(green13) << REG_G3X_TOON_TABLE_6_GREEN13_SHIFT) | \ - ((u32)(red13) << REG_G3X_TOON_TABLE_6_RED13_SHIFT) | \ - ((u32)(blue12) << REG_G3X_TOON_TABLE_6_BLUE12_SHIFT) | \ - ((u32)(green12) << REG_G3X_TOON_TABLE_6_GREEN12_SHIFT) | \ - ((u32)(red12) << REG_G3X_TOON_TABLE_6_RED12_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_6_L_BLUE12_SHIFT 10 -#define REG_G3X_TOON_TABLE_6_L_BLUE12_SIZE 5 -#define REG_G3X_TOON_TABLE_6_L_BLUE12_MASK 0x7c00 - -#define REG_G3X_TOON_TABLE_6_L_GREEN12_SHIFT 5 -#define REG_G3X_TOON_TABLE_6_L_GREEN12_SIZE 5 -#define REG_G3X_TOON_TABLE_6_L_GREEN12_MASK 0x03e0 - -#define REG_G3X_TOON_TABLE_6_L_RED12_SHIFT 0 -#define REG_G3X_TOON_TABLE_6_L_RED12_SIZE 5 -#define REG_G3X_TOON_TABLE_6_L_RED12_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_6_L_FIELD(blue12, green12, red12) \ - (u16)( \ - ((u32)(blue12) << REG_G3X_TOON_TABLE_6_L_BLUE12_SHIFT) | \ - ((u32)(green12) << REG_G3X_TOON_TABLE_6_L_GREEN12_SHIFT) | \ - ((u32)(red12) << REG_G3X_TOON_TABLE_6_L_RED12_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_6_H_BLUE13_SHIFT 10 -#define REG_G3X_TOON_TABLE_6_H_BLUE13_SIZE 5 -#define REG_G3X_TOON_TABLE_6_H_BLUE13_MASK 0x7c00 - -#define REG_G3X_TOON_TABLE_6_H_GREEN13_SHIFT 5 -#define REG_G3X_TOON_TABLE_6_H_GREEN13_SIZE 5 -#define REG_G3X_TOON_TABLE_6_H_GREEN13_MASK 0x03e0 - -#define REG_G3X_TOON_TABLE_6_H_RED13_SHIFT 0 -#define REG_G3X_TOON_TABLE_6_H_RED13_SIZE 5 -#define REG_G3X_TOON_TABLE_6_H_RED13_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_6_H_FIELD(blue13, green13, red13) \ - (u16)( \ - ((u32)(blue13) << REG_G3X_TOON_TABLE_6_H_BLUE13_SHIFT) | \ - ((u32)(green13) << REG_G3X_TOON_TABLE_6_H_GREEN13_SHIFT) | \ - ((u32)(red13) << REG_G3X_TOON_TABLE_6_H_RED13_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_7_BLUE15_SHIFT 26 -#define REG_G3X_TOON_TABLE_7_BLUE15_SIZE 5 -#define REG_G3X_TOON_TABLE_7_BLUE15_MASK 0x7c000000 - -#define REG_G3X_TOON_TABLE_7_GREEN15_SHIFT 21 -#define REG_G3X_TOON_TABLE_7_GREEN15_SIZE 5 -#define REG_G3X_TOON_TABLE_7_GREEN15_MASK 0x03e00000 - -#define REG_G3X_TOON_TABLE_7_RED15_SHIFT 16 -#define REG_G3X_TOON_TABLE_7_RED15_SIZE 5 -#define REG_G3X_TOON_TABLE_7_RED15_MASK 0x001f0000 - -#define REG_G3X_TOON_TABLE_7_BLUE14_SHIFT 10 -#define REG_G3X_TOON_TABLE_7_BLUE14_SIZE 5 -#define REG_G3X_TOON_TABLE_7_BLUE14_MASK 0x00007c00 - -#define REG_G3X_TOON_TABLE_7_GREEN14_SHIFT 5 -#define REG_G3X_TOON_TABLE_7_GREEN14_SIZE 5 -#define REG_G3X_TOON_TABLE_7_GREEN14_MASK 0x000003e0 - -#define REG_G3X_TOON_TABLE_7_RED14_SHIFT 0 -#define REG_G3X_TOON_TABLE_7_RED14_SIZE 5 -#define REG_G3X_TOON_TABLE_7_RED14_MASK 0x0000001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_7_FIELD(blue15, green15, red15, blue14, green14, red14) \ - (u32)( \ - ((u32)(blue15) << REG_G3X_TOON_TABLE_7_BLUE15_SHIFT) | \ - ((u32)(green15) << REG_G3X_TOON_TABLE_7_GREEN15_SHIFT) | \ - ((u32)(red15) << REG_G3X_TOON_TABLE_7_RED15_SHIFT) | \ - ((u32)(blue14) << REG_G3X_TOON_TABLE_7_BLUE14_SHIFT) | \ - ((u32)(green14) << REG_G3X_TOON_TABLE_7_GREEN14_SHIFT) | \ - ((u32)(red14) << REG_G3X_TOON_TABLE_7_RED14_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_7_L_BLUE14_SHIFT 10 -#define REG_G3X_TOON_TABLE_7_L_BLUE14_SIZE 5 -#define REG_G3X_TOON_TABLE_7_L_BLUE14_MASK 0x7c00 - -#define REG_G3X_TOON_TABLE_7_L_GREEN14_SHIFT 5 -#define REG_G3X_TOON_TABLE_7_L_GREEN14_SIZE 5 -#define REG_G3X_TOON_TABLE_7_L_GREEN14_MASK 0x03e0 - -#define REG_G3X_TOON_TABLE_7_L_RED14_SHIFT 0 -#define REG_G3X_TOON_TABLE_7_L_RED14_SIZE 5 -#define REG_G3X_TOON_TABLE_7_L_RED14_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_7_L_FIELD(blue14, green14, red14) \ - (u16)( \ - ((u32)(blue14) << REG_G3X_TOON_TABLE_7_L_BLUE14_SHIFT) | \ - ((u32)(green14) << REG_G3X_TOON_TABLE_7_L_GREEN14_SHIFT) | \ - ((u32)(red14) << REG_G3X_TOON_TABLE_7_L_RED14_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_7_H_BLUE15_SHIFT 10 -#define REG_G3X_TOON_TABLE_7_H_BLUE15_SIZE 5 -#define REG_G3X_TOON_TABLE_7_H_BLUE15_MASK 0x7c00 - -#define REG_G3X_TOON_TABLE_7_H_GREEN15_SHIFT 5 -#define REG_G3X_TOON_TABLE_7_H_GREEN15_SIZE 5 -#define REG_G3X_TOON_TABLE_7_H_GREEN15_MASK 0x03e0 - -#define REG_G3X_TOON_TABLE_7_H_RED15_SHIFT 0 -#define REG_G3X_TOON_TABLE_7_H_RED15_SIZE 5 -#define REG_G3X_TOON_TABLE_7_H_RED15_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_7_H_FIELD(blue15, green15, red15) \ - (u16)( \ - ((u32)(blue15) << REG_G3X_TOON_TABLE_7_H_BLUE15_SHIFT) | \ - ((u32)(green15) << REG_G3X_TOON_TABLE_7_H_GREEN15_SHIFT) | \ - ((u32)(red15) << REG_G3X_TOON_TABLE_7_H_RED15_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_8_BLUE17_SHIFT 26 -#define REG_G3X_TOON_TABLE_8_BLUE17_SIZE 5 -#define REG_G3X_TOON_TABLE_8_BLUE17_MASK 0x7c000000 - -#define REG_G3X_TOON_TABLE_8_GREEN17_SHIFT 21 -#define REG_G3X_TOON_TABLE_8_GREEN17_SIZE 5 -#define REG_G3X_TOON_TABLE_8_GREEN17_MASK 0x03e00000 - -#define REG_G3X_TOON_TABLE_8_RED17_SHIFT 16 -#define REG_G3X_TOON_TABLE_8_RED17_SIZE 5 -#define REG_G3X_TOON_TABLE_8_RED17_MASK 0x001f0000 - -#define REG_G3X_TOON_TABLE_8_BLUE16_SHIFT 10 -#define REG_G3X_TOON_TABLE_8_BLUE16_SIZE 5 -#define REG_G3X_TOON_TABLE_8_BLUE16_MASK 0x00007c00 - -#define REG_G3X_TOON_TABLE_8_GREEN16_SHIFT 5 -#define REG_G3X_TOON_TABLE_8_GREEN16_SIZE 5 -#define REG_G3X_TOON_TABLE_8_GREEN16_MASK 0x000003e0 - -#define REG_G3X_TOON_TABLE_8_RED16_SHIFT 0 -#define REG_G3X_TOON_TABLE_8_RED16_SIZE 5 -#define REG_G3X_TOON_TABLE_8_RED16_MASK 0x0000001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_8_FIELD(blue17, green17, red17, blue16, green16, red16) \ - (u32)( \ - ((u32)(blue17) << REG_G3X_TOON_TABLE_8_BLUE17_SHIFT) | \ - ((u32)(green17) << REG_G3X_TOON_TABLE_8_GREEN17_SHIFT) | \ - ((u32)(red17) << REG_G3X_TOON_TABLE_8_RED17_SHIFT) | \ - ((u32)(blue16) << REG_G3X_TOON_TABLE_8_BLUE16_SHIFT) | \ - ((u32)(green16) << REG_G3X_TOON_TABLE_8_GREEN16_SHIFT) | \ - ((u32)(red16) << REG_G3X_TOON_TABLE_8_RED16_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_8_L_BLUE16_SHIFT 10 -#define REG_G3X_TOON_TABLE_8_L_BLUE16_SIZE 5 -#define REG_G3X_TOON_TABLE_8_L_BLUE16_MASK 0x7c00 - -#define REG_G3X_TOON_TABLE_8_L_GREEN16_SHIFT 5 -#define REG_G3X_TOON_TABLE_8_L_GREEN16_SIZE 5 -#define REG_G3X_TOON_TABLE_8_L_GREEN16_MASK 0x03e0 - -#define REG_G3X_TOON_TABLE_8_L_RED16_SHIFT 0 -#define REG_G3X_TOON_TABLE_8_L_RED16_SIZE 5 -#define REG_G3X_TOON_TABLE_8_L_RED16_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_8_L_FIELD(blue16, green16, red16) \ - (u16)( \ - ((u32)(blue16) << REG_G3X_TOON_TABLE_8_L_BLUE16_SHIFT) | \ - ((u32)(green16) << REG_G3X_TOON_TABLE_8_L_GREEN16_SHIFT) | \ - ((u32)(red16) << REG_G3X_TOON_TABLE_8_L_RED16_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_8_H_BLUE17_SHIFT 10 -#define REG_G3X_TOON_TABLE_8_H_BLUE17_SIZE 5 -#define REG_G3X_TOON_TABLE_8_H_BLUE17_MASK 0x7c00 - -#define REG_G3X_TOON_TABLE_8_H_GREEN17_SHIFT 5 -#define REG_G3X_TOON_TABLE_8_H_GREEN17_SIZE 5 -#define REG_G3X_TOON_TABLE_8_H_GREEN17_MASK 0x03e0 - -#define REG_G3X_TOON_TABLE_8_H_RED17_SHIFT 0 -#define REG_G3X_TOON_TABLE_8_H_RED17_SIZE 5 -#define REG_G3X_TOON_TABLE_8_H_RED17_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_8_H_FIELD(blue17, green17, red17) \ - (u16)( \ - ((u32)(blue17) << REG_G3X_TOON_TABLE_8_H_BLUE17_SHIFT) | \ - ((u32)(green17) << REG_G3X_TOON_TABLE_8_H_GREEN17_SHIFT) | \ - ((u32)(red17) << REG_G3X_TOON_TABLE_8_H_RED17_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_9_BLUE19_SHIFT 26 -#define REG_G3X_TOON_TABLE_9_BLUE19_SIZE 5 -#define REG_G3X_TOON_TABLE_9_BLUE19_MASK 0x7c000000 - -#define REG_G3X_TOON_TABLE_9_GREEN19_SHIFT 21 -#define REG_G3X_TOON_TABLE_9_GREEN19_SIZE 5 -#define REG_G3X_TOON_TABLE_9_GREEN19_MASK 0x03e00000 - -#define REG_G3X_TOON_TABLE_9_RED19_SHIFT 16 -#define REG_G3X_TOON_TABLE_9_RED19_SIZE 5 -#define REG_G3X_TOON_TABLE_9_RED19_MASK 0x001f0000 - -#define REG_G3X_TOON_TABLE_9_BLUE18_SHIFT 10 -#define REG_G3X_TOON_TABLE_9_BLUE18_SIZE 5 -#define REG_G3X_TOON_TABLE_9_BLUE18_MASK 0x00007c00 - -#define REG_G3X_TOON_TABLE_9_GREEN18_SHIFT 5 -#define REG_G3X_TOON_TABLE_9_GREEN18_SIZE 5 -#define REG_G3X_TOON_TABLE_9_GREEN18_MASK 0x000003e0 - -#define REG_G3X_TOON_TABLE_9_RED18_SHIFT 0 -#define REG_G3X_TOON_TABLE_9_RED18_SIZE 5 -#define REG_G3X_TOON_TABLE_9_RED18_MASK 0x0000001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_9_FIELD(blue19, green19, red19, blue18, green18, red18) \ - (u32)( \ - ((u32)(blue19) << REG_G3X_TOON_TABLE_9_BLUE19_SHIFT) | \ - ((u32)(green19) << REG_G3X_TOON_TABLE_9_GREEN19_SHIFT) | \ - ((u32)(red19) << REG_G3X_TOON_TABLE_9_RED19_SHIFT) | \ - ((u32)(blue18) << REG_G3X_TOON_TABLE_9_BLUE18_SHIFT) | \ - ((u32)(green18) << REG_G3X_TOON_TABLE_9_GREEN18_SHIFT) | \ - ((u32)(red18) << REG_G3X_TOON_TABLE_9_RED18_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_9_L_BLUE18_SHIFT 10 -#define REG_G3X_TOON_TABLE_9_L_BLUE18_SIZE 5 -#define REG_G3X_TOON_TABLE_9_L_BLUE18_MASK 0x7c00 - -#define REG_G3X_TOON_TABLE_9_L_GREEN18_SHIFT 5 -#define REG_G3X_TOON_TABLE_9_L_GREEN18_SIZE 5 -#define REG_G3X_TOON_TABLE_9_L_GREEN18_MASK 0x03e0 - -#define REG_G3X_TOON_TABLE_9_L_RED18_SHIFT 0 -#define REG_G3X_TOON_TABLE_9_L_RED18_SIZE 5 -#define REG_G3X_TOON_TABLE_9_L_RED18_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_9_L_FIELD(blue18, green18, red18) \ - (u16)( \ - ((u32)(blue18) << REG_G3X_TOON_TABLE_9_L_BLUE18_SHIFT) | \ - ((u32)(green18) << REG_G3X_TOON_TABLE_9_L_GREEN18_SHIFT) | \ - ((u32)(red18) << REG_G3X_TOON_TABLE_9_L_RED18_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_9_H_BLUE19_SHIFT 10 -#define REG_G3X_TOON_TABLE_9_H_BLUE19_SIZE 5 -#define REG_G3X_TOON_TABLE_9_H_BLUE19_MASK 0x7c00 - -#define REG_G3X_TOON_TABLE_9_H_GREEN19_SHIFT 5 -#define REG_G3X_TOON_TABLE_9_H_GREEN19_SIZE 5 -#define REG_G3X_TOON_TABLE_9_H_GREEN19_MASK 0x03e0 - -#define REG_G3X_TOON_TABLE_9_H_RED19_SHIFT 0 -#define REG_G3X_TOON_TABLE_9_H_RED19_SIZE 5 -#define REG_G3X_TOON_TABLE_9_H_RED19_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_9_H_FIELD(blue19, green19, red19) \ - (u16)( \ - ((u32)(blue19) << REG_G3X_TOON_TABLE_9_H_BLUE19_SHIFT) | \ - ((u32)(green19) << REG_G3X_TOON_TABLE_9_H_GREEN19_SHIFT) | \ - ((u32)(red19) << REG_G3X_TOON_TABLE_9_H_RED19_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_10_BLUE21_SHIFT 26 -#define REG_G3X_TOON_TABLE_10_BLUE21_SIZE 5 -#define REG_G3X_TOON_TABLE_10_BLUE21_MASK 0x7c000000 - -#define REG_G3X_TOON_TABLE_10_GREEN21_SHIFT 21 -#define REG_G3X_TOON_TABLE_10_GREEN21_SIZE 5 -#define REG_G3X_TOON_TABLE_10_GREEN21_MASK 0x03e00000 - -#define REG_G3X_TOON_TABLE_10_RED21_SHIFT 16 -#define REG_G3X_TOON_TABLE_10_RED21_SIZE 5 -#define REG_G3X_TOON_TABLE_10_RED21_MASK 0x001f0000 - -#define REG_G3X_TOON_TABLE_10_BLUE20_SHIFT 10 -#define REG_G3X_TOON_TABLE_10_BLUE20_SIZE 5 -#define REG_G3X_TOON_TABLE_10_BLUE20_MASK 0x00007c00 - -#define REG_G3X_TOON_TABLE_10_GREEN20_SHIFT 5 -#define REG_G3X_TOON_TABLE_10_GREEN20_SIZE 5 -#define REG_G3X_TOON_TABLE_10_GREEN20_MASK 0x000003e0 - -#define REG_G3X_TOON_TABLE_10_RED20_SHIFT 0 -#define REG_G3X_TOON_TABLE_10_RED20_SIZE 5 -#define REG_G3X_TOON_TABLE_10_RED20_MASK 0x0000001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_10_FIELD(blue21, green21, red21, blue20, green20, red20) \ - (u32)( \ - ((u32)(blue21) << REG_G3X_TOON_TABLE_10_BLUE21_SHIFT) | \ - ((u32)(green21) << REG_G3X_TOON_TABLE_10_GREEN21_SHIFT) | \ - ((u32)(red21) << REG_G3X_TOON_TABLE_10_RED21_SHIFT) | \ - ((u32)(blue20) << REG_G3X_TOON_TABLE_10_BLUE20_SHIFT) | \ - ((u32)(green20) << REG_G3X_TOON_TABLE_10_GREEN20_SHIFT) | \ - ((u32)(red20) << REG_G3X_TOON_TABLE_10_RED20_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_10_L_BLUE20_SHIFT 10 -#define REG_G3X_TOON_TABLE_10_L_BLUE20_SIZE 5 -#define REG_G3X_TOON_TABLE_10_L_BLUE20_MASK 0x7c00 - -#define REG_G3X_TOON_TABLE_10_L_GREEN20_SHIFT 5 -#define REG_G3X_TOON_TABLE_10_L_GREEN20_SIZE 5 -#define REG_G3X_TOON_TABLE_10_L_GREEN20_MASK 0x03e0 - -#define REG_G3X_TOON_TABLE_10_L_RED20_SHIFT 0 -#define REG_G3X_TOON_TABLE_10_L_RED20_SIZE 5 -#define REG_G3X_TOON_TABLE_10_L_RED20_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_10_L_FIELD(blue20, green20, red20) \ - (u16)( \ - ((u32)(blue20) << REG_G3X_TOON_TABLE_10_L_BLUE20_SHIFT) | \ - ((u32)(green20) << REG_G3X_TOON_TABLE_10_L_GREEN20_SHIFT) | \ - ((u32)(red20) << REG_G3X_TOON_TABLE_10_L_RED20_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_10_H_BLUE21_SHIFT 10 -#define REG_G3X_TOON_TABLE_10_H_BLUE21_SIZE 5 -#define REG_G3X_TOON_TABLE_10_H_BLUE21_MASK 0x7c00 - -#define REG_G3X_TOON_TABLE_10_H_GREEN21_SHIFT 5 -#define REG_G3X_TOON_TABLE_10_H_GREEN21_SIZE 5 -#define REG_G3X_TOON_TABLE_10_H_GREEN21_MASK 0x03e0 - -#define REG_G3X_TOON_TABLE_10_H_RED21_SHIFT 0 -#define REG_G3X_TOON_TABLE_10_H_RED21_SIZE 5 -#define REG_G3X_TOON_TABLE_10_H_RED21_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_10_H_FIELD(blue21, green21, red21) \ - (u16)( \ - ((u32)(blue21) << REG_G3X_TOON_TABLE_10_H_BLUE21_SHIFT) | \ - ((u32)(green21) << REG_G3X_TOON_TABLE_10_H_GREEN21_SHIFT) | \ - ((u32)(red21) << REG_G3X_TOON_TABLE_10_H_RED21_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_11_BLUE23_SHIFT 26 -#define REG_G3X_TOON_TABLE_11_BLUE23_SIZE 5 -#define REG_G3X_TOON_TABLE_11_BLUE23_MASK 0x7c000000 - -#define REG_G3X_TOON_TABLE_11_GREEN23_SHIFT 21 -#define REG_G3X_TOON_TABLE_11_GREEN23_SIZE 5 -#define REG_G3X_TOON_TABLE_11_GREEN23_MASK 0x03e00000 - -#define REG_G3X_TOON_TABLE_11_RED23_SHIFT 16 -#define REG_G3X_TOON_TABLE_11_RED23_SIZE 5 -#define REG_G3X_TOON_TABLE_11_RED23_MASK 0x001f0000 - -#define REG_G3X_TOON_TABLE_11_BLUE22_SHIFT 10 -#define REG_G3X_TOON_TABLE_11_BLUE22_SIZE 5 -#define REG_G3X_TOON_TABLE_11_BLUE22_MASK 0x00007c00 - -#define REG_G3X_TOON_TABLE_11_GREEN22_SHIFT 5 -#define REG_G3X_TOON_TABLE_11_GREEN22_SIZE 5 -#define REG_G3X_TOON_TABLE_11_GREEN22_MASK 0x000003e0 - -#define REG_G3X_TOON_TABLE_11_RED22_SHIFT 0 -#define REG_G3X_TOON_TABLE_11_RED22_SIZE 5 -#define REG_G3X_TOON_TABLE_11_RED22_MASK 0x0000001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_11_FIELD(blue23, green23, red23, blue22, green22, red22) \ - (u32)( \ - ((u32)(blue23) << REG_G3X_TOON_TABLE_11_BLUE23_SHIFT) | \ - ((u32)(green23) << REG_G3X_TOON_TABLE_11_GREEN23_SHIFT) | \ - ((u32)(red23) << REG_G3X_TOON_TABLE_11_RED23_SHIFT) | \ - ((u32)(blue22) << REG_G3X_TOON_TABLE_11_BLUE22_SHIFT) | \ - ((u32)(green22) << REG_G3X_TOON_TABLE_11_GREEN22_SHIFT) | \ - ((u32)(red22) << REG_G3X_TOON_TABLE_11_RED22_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_11_L_BLUE22_SHIFT 10 -#define REG_G3X_TOON_TABLE_11_L_BLUE22_SIZE 5 -#define REG_G3X_TOON_TABLE_11_L_BLUE22_MASK 0x7c00 - -#define REG_G3X_TOON_TABLE_11_L_GREEN22_SHIFT 5 -#define REG_G3X_TOON_TABLE_11_L_GREEN22_SIZE 5 -#define REG_G3X_TOON_TABLE_11_L_GREEN22_MASK 0x03e0 - -#define REG_G3X_TOON_TABLE_11_L_RED22_SHIFT 0 -#define REG_G3X_TOON_TABLE_11_L_RED22_SIZE 5 -#define REG_G3X_TOON_TABLE_11_L_RED22_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_11_L_FIELD(blue22, green22, red22) \ - (u16)( \ - ((u32)(blue22) << REG_G3X_TOON_TABLE_11_L_BLUE22_SHIFT) | \ - ((u32)(green22) << REG_G3X_TOON_TABLE_11_L_GREEN22_SHIFT) | \ - ((u32)(red22) << REG_G3X_TOON_TABLE_11_L_RED22_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_11_H_BLUE23_SHIFT 10 -#define REG_G3X_TOON_TABLE_11_H_BLUE23_SIZE 5 -#define REG_G3X_TOON_TABLE_11_H_BLUE23_MASK 0x7c00 - -#define REG_G3X_TOON_TABLE_11_H_GREEN23_SHIFT 5 -#define REG_G3X_TOON_TABLE_11_H_GREEN23_SIZE 5 -#define REG_G3X_TOON_TABLE_11_H_GREEN23_MASK 0x03e0 - -#define REG_G3X_TOON_TABLE_11_H_RED23_SHIFT 0 -#define REG_G3X_TOON_TABLE_11_H_RED23_SIZE 5 -#define REG_G3X_TOON_TABLE_11_H_RED23_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_11_H_FIELD(blue23, green23, red23) \ - (u16)( \ - ((u32)(blue23) << REG_G3X_TOON_TABLE_11_H_BLUE23_SHIFT) | \ - ((u32)(green23) << REG_G3X_TOON_TABLE_11_H_GREEN23_SHIFT) | \ - ((u32)(red23) << REG_G3X_TOON_TABLE_11_H_RED23_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_12_BLUE25_SHIFT 26 -#define REG_G3X_TOON_TABLE_12_BLUE25_SIZE 5 -#define REG_G3X_TOON_TABLE_12_BLUE25_MASK 0x7c000000 - -#define REG_G3X_TOON_TABLE_12_GREEN25_SHIFT 21 -#define REG_G3X_TOON_TABLE_12_GREEN25_SIZE 5 -#define REG_G3X_TOON_TABLE_12_GREEN25_MASK 0x03e00000 - -#define REG_G3X_TOON_TABLE_12_RED25_SHIFT 16 -#define REG_G3X_TOON_TABLE_12_RED25_SIZE 5 -#define REG_G3X_TOON_TABLE_12_RED25_MASK 0x001f0000 - -#define REG_G3X_TOON_TABLE_12_BLUE24_SHIFT 10 -#define REG_G3X_TOON_TABLE_12_BLUE24_SIZE 5 -#define REG_G3X_TOON_TABLE_12_BLUE24_MASK 0x00007c00 - -#define REG_G3X_TOON_TABLE_12_GREEN24_SHIFT 5 -#define REG_G3X_TOON_TABLE_12_GREEN24_SIZE 5 -#define REG_G3X_TOON_TABLE_12_GREEN24_MASK 0x000003e0 - -#define REG_G3X_TOON_TABLE_12_RED24_SHIFT 0 -#define REG_G3X_TOON_TABLE_12_RED24_SIZE 5 -#define REG_G3X_TOON_TABLE_12_RED24_MASK 0x0000001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_12_FIELD(blue25, green25, red25, blue24, green24, red24) \ - (u32)( \ - ((u32)(blue25) << REG_G3X_TOON_TABLE_12_BLUE25_SHIFT) | \ - ((u32)(green25) << REG_G3X_TOON_TABLE_12_GREEN25_SHIFT) | \ - ((u32)(red25) << REG_G3X_TOON_TABLE_12_RED25_SHIFT) | \ - ((u32)(blue24) << REG_G3X_TOON_TABLE_12_BLUE24_SHIFT) | \ - ((u32)(green24) << REG_G3X_TOON_TABLE_12_GREEN24_SHIFT) | \ - ((u32)(red24) << REG_G3X_TOON_TABLE_12_RED24_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_12_L_BLUE24_SHIFT 10 -#define REG_G3X_TOON_TABLE_12_L_BLUE24_SIZE 5 -#define REG_G3X_TOON_TABLE_12_L_BLUE24_MASK 0x7c00 - -#define REG_G3X_TOON_TABLE_12_L_GREEN24_SHIFT 5 -#define REG_G3X_TOON_TABLE_12_L_GREEN24_SIZE 5 -#define REG_G3X_TOON_TABLE_12_L_GREEN24_MASK 0x03e0 - -#define REG_G3X_TOON_TABLE_12_L_RED24_SHIFT 0 -#define REG_G3X_TOON_TABLE_12_L_RED24_SIZE 5 -#define REG_G3X_TOON_TABLE_12_L_RED24_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_12_L_FIELD(blue24, green24, red24) \ - (u16)( \ - ((u32)(blue24) << REG_G3X_TOON_TABLE_12_L_BLUE24_SHIFT) | \ - ((u32)(green24) << REG_G3X_TOON_TABLE_12_L_GREEN24_SHIFT) | \ - ((u32)(red24) << REG_G3X_TOON_TABLE_12_L_RED24_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_12_H_BLUE25_SHIFT 10 -#define REG_G3X_TOON_TABLE_12_H_BLUE25_SIZE 5 -#define REG_G3X_TOON_TABLE_12_H_BLUE25_MASK 0x7c00 - -#define REG_G3X_TOON_TABLE_12_H_GREEN25_SHIFT 5 -#define REG_G3X_TOON_TABLE_12_H_GREEN25_SIZE 5 -#define REG_G3X_TOON_TABLE_12_H_GREEN25_MASK 0x03e0 - -#define REG_G3X_TOON_TABLE_12_H_RED25_SHIFT 0 -#define REG_G3X_TOON_TABLE_12_H_RED25_SIZE 5 -#define REG_G3X_TOON_TABLE_12_H_RED25_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_12_H_FIELD(blue25, green25, red25) \ - (u16)( \ - ((u32)(blue25) << REG_G3X_TOON_TABLE_12_H_BLUE25_SHIFT) | \ - ((u32)(green25) << REG_G3X_TOON_TABLE_12_H_GREEN25_SHIFT) | \ - ((u32)(red25) << REG_G3X_TOON_TABLE_12_H_RED25_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_13_BLUE27_SHIFT 26 -#define REG_G3X_TOON_TABLE_13_BLUE27_SIZE 5 -#define REG_G3X_TOON_TABLE_13_BLUE27_MASK 0x7c000000 - -#define REG_G3X_TOON_TABLE_13_GREEN27_SHIFT 21 -#define REG_G3X_TOON_TABLE_13_GREEN27_SIZE 5 -#define REG_G3X_TOON_TABLE_13_GREEN27_MASK 0x03e00000 - -#define REG_G3X_TOON_TABLE_13_RED27_SHIFT 16 -#define REG_G3X_TOON_TABLE_13_RED27_SIZE 5 -#define REG_G3X_TOON_TABLE_13_RED27_MASK 0x001f0000 - -#define REG_G3X_TOON_TABLE_13_BLUE26_SHIFT 10 -#define REG_G3X_TOON_TABLE_13_BLUE26_SIZE 5 -#define REG_G3X_TOON_TABLE_13_BLUE26_MASK 0x00007c00 - -#define REG_G3X_TOON_TABLE_13_GREEN26_SHIFT 5 -#define REG_G3X_TOON_TABLE_13_GREEN26_SIZE 5 -#define REG_G3X_TOON_TABLE_13_GREEN26_MASK 0x000003e0 - -#define REG_G3X_TOON_TABLE_13_RED26_SHIFT 0 -#define REG_G3X_TOON_TABLE_13_RED26_SIZE 5 -#define REG_G3X_TOON_TABLE_13_RED26_MASK 0x0000001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_13_FIELD(blue27, green27, red27, blue26, green26, red26) \ - (u32)( \ - ((u32)(blue27) << REG_G3X_TOON_TABLE_13_BLUE27_SHIFT) | \ - ((u32)(green27) << REG_G3X_TOON_TABLE_13_GREEN27_SHIFT) | \ - ((u32)(red27) << REG_G3X_TOON_TABLE_13_RED27_SHIFT) | \ - ((u32)(blue26) << REG_G3X_TOON_TABLE_13_BLUE26_SHIFT) | \ - ((u32)(green26) << REG_G3X_TOON_TABLE_13_GREEN26_SHIFT) | \ - ((u32)(red26) << REG_G3X_TOON_TABLE_13_RED26_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_13_L_BLUE26_SHIFT 10 -#define REG_G3X_TOON_TABLE_13_L_BLUE26_SIZE 5 -#define REG_G3X_TOON_TABLE_13_L_BLUE26_MASK 0x7c00 - -#define REG_G3X_TOON_TABLE_13_L_GREEN26_SHIFT 5 -#define REG_G3X_TOON_TABLE_13_L_GREEN26_SIZE 5 -#define REG_G3X_TOON_TABLE_13_L_GREEN26_MASK 0x03e0 - -#define REG_G3X_TOON_TABLE_13_L_RED26_SHIFT 0 -#define REG_G3X_TOON_TABLE_13_L_RED26_SIZE 5 -#define REG_G3X_TOON_TABLE_13_L_RED26_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_13_L_FIELD(blue26, green26, red26) \ - (u16)( \ - ((u32)(blue26) << REG_G3X_TOON_TABLE_13_L_BLUE26_SHIFT) | \ - ((u32)(green26) << REG_G3X_TOON_TABLE_13_L_GREEN26_SHIFT) | \ - ((u32)(red26) << REG_G3X_TOON_TABLE_13_L_RED26_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_13_H_BLUE27_SHIFT 10 -#define REG_G3X_TOON_TABLE_13_H_BLUE27_SIZE 5 -#define REG_G3X_TOON_TABLE_13_H_BLUE27_MASK 0x7c00 - -#define REG_G3X_TOON_TABLE_13_H_GREEN27_SHIFT 5 -#define REG_G3X_TOON_TABLE_13_H_GREEN27_SIZE 5 -#define REG_G3X_TOON_TABLE_13_H_GREEN27_MASK 0x03e0 - -#define REG_G3X_TOON_TABLE_13_H_RED27_SHIFT 0 -#define REG_G3X_TOON_TABLE_13_H_RED27_SIZE 5 -#define REG_G3X_TOON_TABLE_13_H_RED27_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_13_H_FIELD(blue27, green27, red27) \ - (u16)( \ - ((u32)(blue27) << REG_G3X_TOON_TABLE_13_H_BLUE27_SHIFT) | \ - ((u32)(green27) << REG_G3X_TOON_TABLE_13_H_GREEN27_SHIFT) | \ - ((u32)(red27) << REG_G3X_TOON_TABLE_13_H_RED27_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_14_BLUE29_SHIFT 26 -#define REG_G3X_TOON_TABLE_14_BLUE29_SIZE 5 -#define REG_G3X_TOON_TABLE_14_BLUE29_MASK 0x7c000000 - -#define REG_G3X_TOON_TABLE_14_GREEN29_SHIFT 21 -#define REG_G3X_TOON_TABLE_14_GREEN29_SIZE 5 -#define REG_G3X_TOON_TABLE_14_GREEN29_MASK 0x03e00000 - -#define REG_G3X_TOON_TABLE_14_RED29_SHIFT 16 -#define REG_G3X_TOON_TABLE_14_RED29_SIZE 5 -#define REG_G3X_TOON_TABLE_14_RED29_MASK 0x001f0000 - -#define REG_G3X_TOON_TABLE_14_BLUE28_SHIFT 10 -#define REG_G3X_TOON_TABLE_14_BLUE28_SIZE 5 -#define REG_G3X_TOON_TABLE_14_BLUE28_MASK 0x00007c00 - -#define REG_G3X_TOON_TABLE_14_GREEN28_SHIFT 5 -#define REG_G3X_TOON_TABLE_14_GREEN28_SIZE 5 -#define REG_G3X_TOON_TABLE_14_GREEN28_MASK 0x000003e0 - -#define REG_G3X_TOON_TABLE_14_RED28_SHIFT 0 -#define REG_G3X_TOON_TABLE_14_RED28_SIZE 5 -#define REG_G3X_TOON_TABLE_14_RED28_MASK 0x0000001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_14_FIELD(blue29, green29, red29, blue28, green28, red28) \ - (u32)( \ - ((u32)(blue29) << REG_G3X_TOON_TABLE_14_BLUE29_SHIFT) | \ - ((u32)(green29) << REG_G3X_TOON_TABLE_14_GREEN29_SHIFT) | \ - ((u32)(red29) << REG_G3X_TOON_TABLE_14_RED29_SHIFT) | \ - ((u32)(blue28) << REG_G3X_TOON_TABLE_14_BLUE28_SHIFT) | \ - ((u32)(green28) << REG_G3X_TOON_TABLE_14_GREEN28_SHIFT) | \ - ((u32)(red28) << REG_G3X_TOON_TABLE_14_RED28_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_14_L_BLUE28_SHIFT 10 -#define REG_G3X_TOON_TABLE_14_L_BLUE28_SIZE 5 -#define REG_G3X_TOON_TABLE_14_L_BLUE28_MASK 0x7c00 - -#define REG_G3X_TOON_TABLE_14_L_GREEN28_SHIFT 5 -#define REG_G3X_TOON_TABLE_14_L_GREEN28_SIZE 5 -#define REG_G3X_TOON_TABLE_14_L_GREEN28_MASK 0x03e0 - -#define REG_G3X_TOON_TABLE_14_L_RED28_SHIFT 0 -#define REG_G3X_TOON_TABLE_14_L_RED28_SIZE 5 -#define REG_G3X_TOON_TABLE_14_L_RED28_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_14_L_FIELD(blue28, green28, red28) \ - (u16)( \ - ((u32)(blue28) << REG_G3X_TOON_TABLE_14_L_BLUE28_SHIFT) | \ - ((u32)(green28) << REG_G3X_TOON_TABLE_14_L_GREEN28_SHIFT) | \ - ((u32)(red28) << REG_G3X_TOON_TABLE_14_L_RED28_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_14_H_BLUE29_SHIFT 10 -#define REG_G3X_TOON_TABLE_14_H_BLUE29_SIZE 5 -#define REG_G3X_TOON_TABLE_14_H_BLUE29_MASK 0x7c00 - -#define REG_G3X_TOON_TABLE_14_H_GREEN29_SHIFT 5 -#define REG_G3X_TOON_TABLE_14_H_GREEN29_SIZE 5 -#define REG_G3X_TOON_TABLE_14_H_GREEN29_MASK 0x03e0 - -#define REG_G3X_TOON_TABLE_14_H_RED29_SHIFT 0 -#define REG_G3X_TOON_TABLE_14_H_RED29_SIZE 5 -#define REG_G3X_TOON_TABLE_14_H_RED29_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_14_H_FIELD(blue29, green29, red29) \ - (u16)( \ - ((u32)(blue29) << REG_G3X_TOON_TABLE_14_H_BLUE29_SHIFT) | \ - ((u32)(green29) << REG_G3X_TOON_TABLE_14_H_GREEN29_SHIFT) | \ - ((u32)(red29) << REG_G3X_TOON_TABLE_14_H_RED29_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_15_BLUE31_SHIFT 26 -#define REG_G3X_TOON_TABLE_15_BLUE31_SIZE 5 -#define REG_G3X_TOON_TABLE_15_BLUE31_MASK 0x7c000000 - -#define REG_G3X_TOON_TABLE_15_GREEN31_SHIFT 21 -#define REG_G3X_TOON_TABLE_15_GREEN31_SIZE 5 -#define REG_G3X_TOON_TABLE_15_GREEN31_MASK 0x03e00000 - -#define REG_G3X_TOON_TABLE_15_RED31_SHIFT 16 -#define REG_G3X_TOON_TABLE_15_RED31_SIZE 5 -#define REG_G3X_TOON_TABLE_15_RED31_MASK 0x001f0000 - -#define REG_G3X_TOON_TABLE_15_BLUE30_SHIFT 10 -#define REG_G3X_TOON_TABLE_15_BLUE30_SIZE 5 -#define REG_G3X_TOON_TABLE_15_BLUE30_MASK 0x00007c00 - -#define REG_G3X_TOON_TABLE_15_GREEN30_SHIFT 5 -#define REG_G3X_TOON_TABLE_15_GREEN30_SIZE 5 -#define REG_G3X_TOON_TABLE_15_GREEN30_MASK 0x000003e0 - -#define REG_G3X_TOON_TABLE_15_RED30_SHIFT 0 -#define REG_G3X_TOON_TABLE_15_RED30_SIZE 5 -#define REG_G3X_TOON_TABLE_15_RED30_MASK 0x0000001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_15_FIELD(blue31, green31, red31, blue30, green30, red30) \ - (u32)( \ - ((u32)(blue31) << REG_G3X_TOON_TABLE_15_BLUE31_SHIFT) | \ - ((u32)(green31) << REG_G3X_TOON_TABLE_15_GREEN31_SHIFT) | \ - ((u32)(red31) << REG_G3X_TOON_TABLE_15_RED31_SHIFT) | \ - ((u32)(blue30) << REG_G3X_TOON_TABLE_15_BLUE30_SHIFT) | \ - ((u32)(green30) << REG_G3X_TOON_TABLE_15_GREEN30_SHIFT) | \ - ((u32)(red30) << REG_G3X_TOON_TABLE_15_RED30_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_15_L_BLUE30_SHIFT 10 -#define REG_G3X_TOON_TABLE_15_L_BLUE30_SIZE 5 -#define REG_G3X_TOON_TABLE_15_L_BLUE30_MASK 0x7c00 - -#define REG_G3X_TOON_TABLE_15_L_GREEN30_SHIFT 5 -#define REG_G3X_TOON_TABLE_15_L_GREEN30_SIZE 5 -#define REG_G3X_TOON_TABLE_15_L_GREEN30_MASK 0x03e0 - -#define REG_G3X_TOON_TABLE_15_L_RED30_SHIFT 0 -#define REG_G3X_TOON_TABLE_15_L_RED30_SIZE 5 -#define REG_G3X_TOON_TABLE_15_L_RED30_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_15_L_FIELD(blue30, green30, red30) \ - (u16)( \ - ((u32)(blue30) << REG_G3X_TOON_TABLE_15_L_BLUE30_SHIFT) | \ - ((u32)(green30) << REG_G3X_TOON_TABLE_15_L_GREEN30_SHIFT) | \ - ((u32)(red30) << REG_G3X_TOON_TABLE_15_L_RED30_SHIFT)) -#endif - -#define REG_G3X_TOON_TABLE_15_H_BLUE31_SHIFT 10 -#define REG_G3X_TOON_TABLE_15_H_BLUE31_SIZE 5 -#define REG_G3X_TOON_TABLE_15_H_BLUE31_MASK 0x7c00 - -#define REG_G3X_TOON_TABLE_15_H_GREEN31_SHIFT 5 -#define REG_G3X_TOON_TABLE_15_H_GREEN31_SIZE 5 -#define REG_G3X_TOON_TABLE_15_H_GREEN31_MASK 0x03e0 - -#define REG_G3X_TOON_TABLE_15_H_RED31_SHIFT 0 -#define REG_G3X_TOON_TABLE_15_H_RED31_SIZE 5 -#define REG_G3X_TOON_TABLE_15_H_RED31_MASK 0x001f - -#ifndef SDK_ASM -#define REG_G3X_TOON_TABLE_15_H_FIELD(blue31, green31, red31) \ - (u16)( \ - ((u32)(blue31) << REG_G3X_TOON_TABLE_15_H_BLUE31_SHIFT) | \ - ((u32)(green31) << REG_G3X_TOON_TABLE_15_H_GREEN31_SHIFT) | \ - ((u32)(red31) << REG_G3X_TOON_TABLE_15_H_RED31_SHIFT)) -#endif - -#define REG_G3X_GXSTAT_FI_SHIFT 30 -#define REG_G3X_GXSTAT_FI_SIZE 2 -#define REG_G3X_GXSTAT_FI_MASK 0xc0000000 - -#define REG_G3X_GXSTAT_B_SHIFT 27 -#define REG_G3X_GXSTAT_B_SIZE 1 -#define REG_G3X_GXSTAT_B_MASK 0x08000000 - -#define REG_G3X_GXSTAT_E_SHIFT 26 -#define REG_G3X_GXSTAT_E_SIZE 1 -#define REG_G3X_GXSTAT_E_MASK 0x04000000 - -#define REG_G3X_GXSTAT_H_SHIFT 25 -#define REG_G3X_GXSTAT_H_SIZE 1 -#define REG_G3X_GXSTAT_H_MASK 0x02000000 - -#define REG_G3X_GXSTAT_F_SHIFT 24 -#define REG_G3X_GXSTAT_F_SIZE 1 -#define REG_G3X_GXSTAT_F_MASK 0x01000000 - -#define REG_G3X_GXSTAT_FIFOCNT_SHIFT 16 -#define REG_G3X_GXSTAT_FIFOCNT_SIZE 8 -#define REG_G3X_GXSTAT_FIFOCNT_MASK 0x00ff0000 - -#define REG_G3X_GXSTAT_SE_SHIFT 15 -#define REG_G3X_GXSTAT_SE_SIZE 1 -#define REG_G3X_GXSTAT_SE_MASK 0x00008000 - -#define REG_G3X_GXSTAT_SB_SHIFT 14 -#define REG_G3X_GXSTAT_SB_SIZE 1 -#define REG_G3X_GXSTAT_SB_MASK 0x00004000 - -#define REG_G3X_GXSTAT_PJ_SHIFT 13 -#define REG_G3X_GXSTAT_PJ_SIZE 1 -#define REG_G3X_GXSTAT_PJ_MASK 0x00002000 - -#define REG_G3X_GXSTAT_PV_SHIFT 8 -#define REG_G3X_GXSTAT_PV_SIZE 5 -#define REG_G3X_GXSTAT_PV_MASK 0x00001f00 - -#define REG_G3X_GXSTAT_TR_SHIFT 1 -#define REG_G3X_GXSTAT_TR_SIZE 1 -#define REG_G3X_GXSTAT_TR_MASK 0x00000002 - -#define REG_G3X_GXSTAT_TB_SHIFT 0 -#define REG_G3X_GXSTAT_TB_SIZE 1 -#define REG_G3X_GXSTAT_TB_MASK 0x00000001 - -#ifndef SDK_ASM -#define REG_G3X_GXSTAT_FIELD(fi, b, e, h, f, fifocnt, se, sb, pj, pv, tr, tb) \ - (u32)( \ - ((u32)(fi) << REG_G3X_GXSTAT_FI_SHIFT) | \ - ((u32)(b) << REG_G3X_GXSTAT_B_SHIFT) | \ - ((u32)(e) << REG_G3X_GXSTAT_E_SHIFT) | \ - ((u32)(h) << REG_G3X_GXSTAT_H_SHIFT) | \ - ((u32)(f) << REG_G3X_GXSTAT_F_SHIFT) | \ - ((u32)(fifocnt) << REG_G3X_GXSTAT_FIFOCNT_SHIFT) | \ - ((u32)(se) << REG_G3X_GXSTAT_SE_SHIFT) | \ - ((u32)(sb) << REG_G3X_GXSTAT_SB_SHIFT) | \ - ((u32)(pj) << REG_G3X_GXSTAT_PJ_SHIFT) | \ - ((u32)(pv) << REG_G3X_GXSTAT_PV_SHIFT) | \ - ((u32)(tr) << REG_G3X_GXSTAT_TR_SHIFT) | \ - ((u32)(tb) << REG_G3X_GXSTAT_TB_SHIFT)) -#endif - -#define REG_G3X_LISTRAM_COUNT_RAMCNT_SHIFT 0 -#define REG_G3X_LISTRAM_COUNT_RAMCNT_SIZE 12 -#define REG_G3X_LISTRAM_COUNT_RAMCNT_MASK 0x0fff - -#ifndef SDK_ASM -#define REG_G3X_LISTRAM_COUNT_FIELD(ramcnt) \ - (u16)( \ - ((u32)(ramcnt) << REG_G3X_LISTRAM_COUNT_RAMCNT_SHIFT)) -#endif - -#define REG_G3X_VTXRAM_COUNT_VTXCNT_SHIFT 0 -#define REG_G3X_VTXRAM_COUNT_VTXCNT_SIZE 13 -#define REG_G3X_VTXRAM_COUNT_VTXCNT_MASK 0x1fff - -#ifndef SDK_ASM -#define REG_G3X_VTXRAM_COUNT_FIELD(vtxcnt) \ - (u16)( \ - ((u32)(vtxcnt) << REG_G3X_VTXRAM_COUNT_VTXCNT_SHIFT)) -#endif - -#define REG_G3X_DISP_1DOT_DEPTH_INTEGER_W_SHIFT 3 -#define REG_G3X_DISP_1DOT_DEPTH_INTEGER_W_SIZE 12 -#define REG_G3X_DISP_1DOT_DEPTH_INTEGER_W_MASK 0x7ff8 - -#define REG_G3X_DISP_1DOT_DEPTH_DECIMAL_W_SHIFT 0 -#define REG_G3X_DISP_1DOT_DEPTH_DECIMAL_W_SIZE 3 -#define REG_G3X_DISP_1DOT_DEPTH_DECIMAL_W_MASK 0x0007 - -#ifndef SDK_ASM -#define REG_G3X_DISP_1DOT_DEPTH_FIELD(integer_w, decimal_w) \ - (u16)( \ - ((u32)(integer_w) << REG_G3X_DISP_1DOT_DEPTH_INTEGER_W_SHIFT) | \ - ((u32)(decimal_w) << REG_G3X_DISP_1DOT_DEPTH_DECIMAL_W_SHIFT)) -#endif - -#define REG_G3X_POS_RESULT_X_SX_SHIFT 31 -#define REG_G3X_POS_RESULT_X_SX_SIZE 1 -#define REG_G3X_POS_RESULT_X_SX_MASK 0x80000000 - -#define REG_G3X_POS_RESULT_X_INTEGER_X_SHIFT 12 -#define REG_G3X_POS_RESULT_X_INTEGER_X_SIZE 19 -#define REG_G3X_POS_RESULT_X_INTEGER_X_MASK 0x7ffff000 - -#define REG_G3X_POS_RESULT_X_DECIMAL_X_SHIFT 0 -#define REG_G3X_POS_RESULT_X_DECIMAL_X_SIZE 12 -#define REG_G3X_POS_RESULT_X_DECIMAL_X_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3X_POS_RESULT_X_FIELD(sx, integer_x, decimal_x) \ - (u32)( \ - ((u32)(sx) << REG_G3X_POS_RESULT_X_SX_SHIFT) | \ - ((u32)(integer_x) << REG_G3X_POS_RESULT_X_INTEGER_X_SHIFT) | \ - ((u32)(decimal_x) << REG_G3X_POS_RESULT_X_DECIMAL_X_SHIFT)) -#endif - -#define REG_G3X_POS_RESULT_Y_SY_SHIFT 31 -#define REG_G3X_POS_RESULT_Y_SY_SIZE 1 -#define REG_G3X_POS_RESULT_Y_SY_MASK 0x80000000 - -#define REG_G3X_POS_RESULT_Y_INTEGER_Y_SHIFT 12 -#define REG_G3X_POS_RESULT_Y_INTEGER_Y_SIZE 19 -#define REG_G3X_POS_RESULT_Y_INTEGER_Y_MASK 0x7ffff000 - -#define REG_G3X_POS_RESULT_Y_DECIMAL_Y_SHIFT 0 -#define REG_G3X_POS_RESULT_Y_DECIMAL_Y_SIZE 12 -#define REG_G3X_POS_RESULT_Y_DECIMAL_Y_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3X_POS_RESULT_Y_FIELD(sy, integer_y, decimal_y) \ - (u32)( \ - ((u32)(sy) << REG_G3X_POS_RESULT_Y_SY_SHIFT) | \ - ((u32)(integer_y) << REG_G3X_POS_RESULT_Y_INTEGER_Y_SHIFT) | \ - ((u32)(decimal_y) << REG_G3X_POS_RESULT_Y_DECIMAL_Y_SHIFT)) -#endif - -#define REG_G3X_POS_RESULT_Z_SZ_SHIFT 31 -#define REG_G3X_POS_RESULT_Z_SZ_SIZE 1 -#define REG_G3X_POS_RESULT_Z_SZ_MASK 0x80000000 - -#define REG_G3X_POS_RESULT_Z_INTEGER_Z_SHIFT 12 -#define REG_G3X_POS_RESULT_Z_INTEGER_Z_SIZE 19 -#define REG_G3X_POS_RESULT_Z_INTEGER_Z_MASK 0x7ffff000 - -#define REG_G3X_POS_RESULT_Z_DECIMAL_Z_SHIFT 0 -#define REG_G3X_POS_RESULT_Z_DECIMAL_Z_SIZE 12 -#define REG_G3X_POS_RESULT_Z_DECIMAL_Z_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3X_POS_RESULT_Z_FIELD(sz, integer_z, decimal_z) \ - (u32)( \ - ((u32)(sz) << REG_G3X_POS_RESULT_Z_SZ_SHIFT) | \ - ((u32)(integer_z) << REG_G3X_POS_RESULT_Z_INTEGER_Z_SHIFT) | \ - ((u32)(decimal_z) << REG_G3X_POS_RESULT_Z_DECIMAL_Z_SHIFT)) -#endif - -#define REG_G3X_POS_RESULT_W_SW_SHIFT 31 -#define REG_G3X_POS_RESULT_W_SW_SIZE 1 -#define REG_G3X_POS_RESULT_W_SW_MASK 0x80000000 - -#define REG_G3X_POS_RESULT_W_INTEGER_W_SHIFT 12 -#define REG_G3X_POS_RESULT_W_INTEGER_W_SIZE 19 -#define REG_G3X_POS_RESULT_W_INTEGER_W_MASK 0x7ffff000 - -#define REG_G3X_POS_RESULT_W_DECIMAL_W_SHIFT 0 -#define REG_G3X_POS_RESULT_W_DECIMAL_W_SIZE 12 -#define REG_G3X_POS_RESULT_W_DECIMAL_W_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3X_POS_RESULT_W_FIELD(sw, integer_w, decimal_w) \ - (u32)( \ - ((u32)(sw) << REG_G3X_POS_RESULT_W_SW_SHIFT) | \ - ((u32)(integer_w) << REG_G3X_POS_RESULT_W_INTEGER_W_SHIFT) | \ - ((u32)(decimal_w) << REG_G3X_POS_RESULT_W_DECIMAL_W_SHIFT)) -#endif - -#define REG_G3X_VEC_RESULT_X_SX_SHIFT 15 -#define REG_G3X_VEC_RESULT_X_SX_SIZE 1 -#define REG_G3X_VEC_RESULT_X_SX_MASK 0x8000 - -#define REG_G3X_VEC_RESULT_X_INTEGER_X_SHIFT 12 -#define REG_G3X_VEC_RESULT_X_INTEGER_X_SIZE 3 -#define REG_G3X_VEC_RESULT_X_INTEGER_X_MASK 0x7000 - -#define REG_G3X_VEC_RESULT_X_DECIMAL_X_SHIFT 0 -#define REG_G3X_VEC_RESULT_X_DECIMAL_X_SIZE 12 -#define REG_G3X_VEC_RESULT_X_DECIMAL_X_MASK 0x0fff - -#ifndef SDK_ASM -#define REG_G3X_VEC_RESULT_X_FIELD(sx, integer_x, decimal_x) \ - (u16)( \ - ((u32)(sx) << REG_G3X_VEC_RESULT_X_SX_SHIFT) | \ - ((u32)(integer_x) << REG_G3X_VEC_RESULT_X_INTEGER_X_SHIFT) | \ - ((u32)(decimal_x) << REG_G3X_VEC_RESULT_X_DECIMAL_X_SHIFT)) -#endif - -#define REG_G3X_VEC_RESULT_Y_SY_SHIFT 15 -#define REG_G3X_VEC_RESULT_Y_SY_SIZE 1 -#define REG_G3X_VEC_RESULT_Y_SY_MASK 0x8000 - -#define REG_G3X_VEC_RESULT_Y_INTEGER_Y_SHIFT 12 -#define REG_G3X_VEC_RESULT_Y_INTEGER_Y_SIZE 3 -#define REG_G3X_VEC_RESULT_Y_INTEGER_Y_MASK 0x7000 - -#define REG_G3X_VEC_RESULT_Y_DECIMAL_Y_SHIFT 0 -#define REG_G3X_VEC_RESULT_Y_DECIMAL_Y_SIZE 12 -#define REG_G3X_VEC_RESULT_Y_DECIMAL_Y_MASK 0x0fff - -#ifndef SDK_ASM -#define REG_G3X_VEC_RESULT_Y_FIELD(sy, integer_y, decimal_y) \ - (u16)( \ - ((u32)(sy) << REG_G3X_VEC_RESULT_Y_SY_SHIFT) | \ - ((u32)(integer_y) << REG_G3X_VEC_RESULT_Y_INTEGER_Y_SHIFT) | \ - ((u32)(decimal_y) << REG_G3X_VEC_RESULT_Y_DECIMAL_Y_SHIFT)) -#endif - -#define REG_G3X_VEC_RESULT_Z_SZ_SHIFT 15 -#define REG_G3X_VEC_RESULT_Z_SZ_SIZE 1 -#define REG_G3X_VEC_RESULT_Z_SZ_MASK 0x8000 - -#define REG_G3X_VEC_RESULT_Z_INTEGER_Z_SHIFT 12 -#define REG_G3X_VEC_RESULT_Z_INTEGER_Z_SIZE 3 -#define REG_G3X_VEC_RESULT_Z_INTEGER_Z_MASK 0x7000 - -#define REG_G3X_VEC_RESULT_Z_DECIMAL_Z_SHIFT 0 -#define REG_G3X_VEC_RESULT_Z_DECIMAL_Z_SIZE 12 -#define REG_G3X_VEC_RESULT_Z_DECIMAL_Z_MASK 0x0fff - -#ifndef SDK_ASM -#define REG_G3X_VEC_RESULT_Z_FIELD(sz, integer_z, decimal_z) \ - (u16)( \ - ((u32)(sz) << REG_G3X_VEC_RESULT_Z_SZ_SHIFT) | \ - ((u32)(integer_z) << REG_G3X_VEC_RESULT_Z_INTEGER_Z_SHIFT) | \ - ((u32)(decimal_z) << REG_G3X_VEC_RESULT_Z_DECIMAL_Z_SHIFT)) -#endif - -#define REG_G3X_CLIPMTX_RESULT_0_S_SHIFT 31 -#define REG_G3X_CLIPMTX_RESULT_0_S_SIZE 1 -#define REG_G3X_CLIPMTX_RESULT_0_S_MASK 0x80000000 - -#define REG_G3X_CLIPMTX_RESULT_0_INTEGER_m0_SHIFT 12 -#define REG_G3X_CLIPMTX_RESULT_0_INTEGER_m0_SIZE 19 -#define REG_G3X_CLIPMTX_RESULT_0_INTEGER_m0_MASK 0x7ffff000 - -#define REG_G3X_CLIPMTX_RESULT_0_DECIMAL_m0_SHIFT 0 -#define REG_G3X_CLIPMTX_RESULT_0_DECIMAL_m0_SIZE 12 -#define REG_G3X_CLIPMTX_RESULT_0_DECIMAL_m0_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3X_CLIPMTX_RESULT_0_FIELD(s, integer_m0, decimal_m0) \ - (u32)( \ - ((u32)(s) << REG_G3X_CLIPMTX_RESULT_0_S_SHIFT) | \ - ((u32)(integer_m0) << REG_G3X_CLIPMTX_RESULT_0_INTEGER_m0_SHIFT) | \ - ((u32)(decimal_m0) << REG_G3X_CLIPMTX_RESULT_0_DECIMAL_m0_SHIFT)) -#endif - -#define REG_G3X_CLIPMTX_RESULT_1_S_SHIFT 31 -#define REG_G3X_CLIPMTX_RESULT_1_S_SIZE 1 -#define REG_G3X_CLIPMTX_RESULT_1_S_MASK 0x80000000 - -#define REG_G3X_CLIPMTX_RESULT_1_INTEGER_m1_SHIFT 12 -#define REG_G3X_CLIPMTX_RESULT_1_INTEGER_m1_SIZE 19 -#define REG_G3X_CLIPMTX_RESULT_1_INTEGER_m1_MASK 0x7ffff000 - -#define REG_G3X_CLIPMTX_RESULT_1_DECIMAL_m1_SHIFT 0 -#define REG_G3X_CLIPMTX_RESULT_1_DECIMAL_m1_SIZE 12 -#define REG_G3X_CLIPMTX_RESULT_1_DECIMAL_m1_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3X_CLIPMTX_RESULT_1_FIELD(s, integer_m1, decimal_m1) \ - (u32)( \ - ((u32)(s) << REG_G3X_CLIPMTX_RESULT_1_S_SHIFT) | \ - ((u32)(integer_m1) << REG_G3X_CLIPMTX_RESULT_1_INTEGER_m1_SHIFT) | \ - ((u32)(decimal_m1) << REG_G3X_CLIPMTX_RESULT_1_DECIMAL_m1_SHIFT)) -#endif - -#define REG_G3X_CLIPMTX_RESULT_2_S_SHIFT 31 -#define REG_G3X_CLIPMTX_RESULT_2_S_SIZE 1 -#define REG_G3X_CLIPMTX_RESULT_2_S_MASK 0x80000000 - -#define REG_G3X_CLIPMTX_RESULT_2_INTEGER_m2_SHIFT 12 -#define REG_G3X_CLIPMTX_RESULT_2_INTEGER_m2_SIZE 19 -#define REG_G3X_CLIPMTX_RESULT_2_INTEGER_m2_MASK 0x7ffff000 - -#define REG_G3X_CLIPMTX_RESULT_2_DECIMAL_m2_SHIFT 0 -#define REG_G3X_CLIPMTX_RESULT_2_DECIMAL_m2_SIZE 12 -#define REG_G3X_CLIPMTX_RESULT_2_DECIMAL_m2_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3X_CLIPMTX_RESULT_2_FIELD(s, integer_m2, decimal_m2) \ - (u32)( \ - ((u32)(s) << REG_G3X_CLIPMTX_RESULT_2_S_SHIFT) | \ - ((u32)(integer_m2) << REG_G3X_CLIPMTX_RESULT_2_INTEGER_m2_SHIFT) | \ - ((u32)(decimal_m2) << REG_G3X_CLIPMTX_RESULT_2_DECIMAL_m2_SHIFT)) -#endif - -#define REG_G3X_CLIPMTX_RESULT_3_S_SHIFT 31 -#define REG_G3X_CLIPMTX_RESULT_3_S_SIZE 1 -#define REG_G3X_CLIPMTX_RESULT_3_S_MASK 0x80000000 - -#define REG_G3X_CLIPMTX_RESULT_3_INTEGER_m3_SHIFT 12 -#define REG_G3X_CLIPMTX_RESULT_3_INTEGER_m3_SIZE 19 -#define REG_G3X_CLIPMTX_RESULT_3_INTEGER_m3_MASK 0x7ffff000 - -#define REG_G3X_CLIPMTX_RESULT_3_DECIMAL_m3_SHIFT 0 -#define REG_G3X_CLIPMTX_RESULT_3_DECIMAL_m3_SIZE 12 -#define REG_G3X_CLIPMTX_RESULT_3_DECIMAL_m3_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3X_CLIPMTX_RESULT_3_FIELD(s, integer_m3, decimal_m3) \ - (u32)( \ - ((u32)(s) << REG_G3X_CLIPMTX_RESULT_3_S_SHIFT) | \ - ((u32)(integer_m3) << REG_G3X_CLIPMTX_RESULT_3_INTEGER_m3_SHIFT) | \ - ((u32)(decimal_m3) << REG_G3X_CLIPMTX_RESULT_3_DECIMAL_m3_SHIFT)) -#endif - -#define REG_G3X_CLIPMTX_RESULT_4_S_SHIFT 31 -#define REG_G3X_CLIPMTX_RESULT_4_S_SIZE 1 -#define REG_G3X_CLIPMTX_RESULT_4_S_MASK 0x80000000 - -#define REG_G3X_CLIPMTX_RESULT_4_INTEGER_m4_SHIFT 12 -#define REG_G3X_CLIPMTX_RESULT_4_INTEGER_m4_SIZE 19 -#define REG_G3X_CLIPMTX_RESULT_4_INTEGER_m4_MASK 0x7ffff000 - -#define REG_G3X_CLIPMTX_RESULT_4_DECIMAL_m4_SHIFT 0 -#define REG_G3X_CLIPMTX_RESULT_4_DECIMAL_m4_SIZE 12 -#define REG_G3X_CLIPMTX_RESULT_4_DECIMAL_m4_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3X_CLIPMTX_RESULT_4_FIELD(s, integer_m4, decimal_m4) \ - (u32)( \ - ((u32)(s) << REG_G3X_CLIPMTX_RESULT_4_S_SHIFT) | \ - ((u32)(integer_m4) << REG_G3X_CLIPMTX_RESULT_4_INTEGER_m4_SHIFT) | \ - ((u32)(decimal_m4) << REG_G3X_CLIPMTX_RESULT_4_DECIMAL_m4_SHIFT)) -#endif - -#define REG_G3X_CLIPMTX_RESULT_5_S_SHIFT 31 -#define REG_G3X_CLIPMTX_RESULT_5_S_SIZE 1 -#define REG_G3X_CLIPMTX_RESULT_5_S_MASK 0x80000000 - -#define REG_G3X_CLIPMTX_RESULT_5_INTEGER_m5_SHIFT 12 -#define REG_G3X_CLIPMTX_RESULT_5_INTEGER_m5_SIZE 19 -#define REG_G3X_CLIPMTX_RESULT_5_INTEGER_m5_MASK 0x7ffff000 - -#define REG_G3X_CLIPMTX_RESULT_5_DECIMAL_m5_SHIFT 0 -#define REG_G3X_CLIPMTX_RESULT_5_DECIMAL_m5_SIZE 12 -#define REG_G3X_CLIPMTX_RESULT_5_DECIMAL_m5_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3X_CLIPMTX_RESULT_5_FIELD(s, integer_m5, decimal_m5) \ - (u32)( \ - ((u32)(s) << REG_G3X_CLIPMTX_RESULT_5_S_SHIFT) | \ - ((u32)(integer_m5) << REG_G3X_CLIPMTX_RESULT_5_INTEGER_m5_SHIFT) | \ - ((u32)(decimal_m5) << REG_G3X_CLIPMTX_RESULT_5_DECIMAL_m5_SHIFT)) -#endif - -#define REG_G3X_CLIPMTX_RESULT_6_S_SHIFT 31 -#define REG_G3X_CLIPMTX_RESULT_6_S_SIZE 1 -#define REG_G3X_CLIPMTX_RESULT_6_S_MASK 0x80000000 - -#define REG_G3X_CLIPMTX_RESULT_6_INTEGER_m6_SHIFT 12 -#define REG_G3X_CLIPMTX_RESULT_6_INTEGER_m6_SIZE 19 -#define REG_G3X_CLIPMTX_RESULT_6_INTEGER_m6_MASK 0x7ffff000 - -#define REG_G3X_CLIPMTX_RESULT_6_DECIMAL_m6_SHIFT 0 -#define REG_G3X_CLIPMTX_RESULT_6_DECIMAL_m6_SIZE 12 -#define REG_G3X_CLIPMTX_RESULT_6_DECIMAL_m6_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3X_CLIPMTX_RESULT_6_FIELD(s, integer_m6, decimal_m6) \ - (u32)( \ - ((u32)(s) << REG_G3X_CLIPMTX_RESULT_6_S_SHIFT) | \ - ((u32)(integer_m6) << REG_G3X_CLIPMTX_RESULT_6_INTEGER_m6_SHIFT) | \ - ((u32)(decimal_m6) << REG_G3X_CLIPMTX_RESULT_6_DECIMAL_m6_SHIFT)) -#endif - -#define REG_G3X_CLIPMTX_RESULT_7_S_SHIFT 31 -#define REG_G3X_CLIPMTX_RESULT_7_S_SIZE 1 -#define REG_G3X_CLIPMTX_RESULT_7_S_MASK 0x80000000 - -#define REG_G3X_CLIPMTX_RESULT_7_INTEGER_m7_SHIFT 12 -#define REG_G3X_CLIPMTX_RESULT_7_INTEGER_m7_SIZE 19 -#define REG_G3X_CLIPMTX_RESULT_7_INTEGER_m7_MASK 0x7ffff000 - -#define REG_G3X_CLIPMTX_RESULT_7_DECIMAL_m7_SHIFT 0 -#define REG_G3X_CLIPMTX_RESULT_7_DECIMAL_m7_SIZE 12 -#define REG_G3X_CLIPMTX_RESULT_7_DECIMAL_m7_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3X_CLIPMTX_RESULT_7_FIELD(s, integer_m7, decimal_m7) \ - (u32)( \ - ((u32)(s) << REG_G3X_CLIPMTX_RESULT_7_S_SHIFT) | \ - ((u32)(integer_m7) << REG_G3X_CLIPMTX_RESULT_7_INTEGER_m7_SHIFT) | \ - ((u32)(decimal_m7) << REG_G3X_CLIPMTX_RESULT_7_DECIMAL_m7_SHIFT)) -#endif - -#define REG_G3X_CLIPMTX_RESULT_8_S_SHIFT 31 -#define REG_G3X_CLIPMTX_RESULT_8_S_SIZE 1 -#define REG_G3X_CLIPMTX_RESULT_8_S_MASK 0x80000000 - -#define REG_G3X_CLIPMTX_RESULT_8_INTEGER_m8_SHIFT 12 -#define REG_G3X_CLIPMTX_RESULT_8_INTEGER_m8_SIZE 19 -#define REG_G3X_CLIPMTX_RESULT_8_INTEGER_m8_MASK 0x7ffff000 - -#define REG_G3X_CLIPMTX_RESULT_8_DECIMAL_m8_SHIFT 0 -#define REG_G3X_CLIPMTX_RESULT_8_DECIMAL_m8_SIZE 12 -#define REG_G3X_CLIPMTX_RESULT_8_DECIMAL_m8_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3X_CLIPMTX_RESULT_8_FIELD(s, integer_m8, decimal_m8) \ - (u32)( \ - ((u32)(s) << REG_G3X_CLIPMTX_RESULT_8_S_SHIFT) | \ - ((u32)(integer_m8) << REG_G3X_CLIPMTX_RESULT_8_INTEGER_m8_SHIFT) | \ - ((u32)(decimal_m8) << REG_G3X_CLIPMTX_RESULT_8_DECIMAL_m8_SHIFT)) -#endif - -#define REG_G3X_CLIPMTX_RESULT_9_S_SHIFT 31 -#define REG_G3X_CLIPMTX_RESULT_9_S_SIZE 1 -#define REG_G3X_CLIPMTX_RESULT_9_S_MASK 0x80000000 - -#define REG_G3X_CLIPMTX_RESULT_9_INTEGER_m9_SHIFT 12 -#define REG_G3X_CLIPMTX_RESULT_9_INTEGER_m9_SIZE 19 -#define REG_G3X_CLIPMTX_RESULT_9_INTEGER_m9_MASK 0x7ffff000 - -#define REG_G3X_CLIPMTX_RESULT_9_DECIMAL_m9_SHIFT 0 -#define REG_G3X_CLIPMTX_RESULT_9_DECIMAL_m9_SIZE 12 -#define REG_G3X_CLIPMTX_RESULT_9_DECIMAL_m9_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3X_CLIPMTX_RESULT_9_FIELD(s, integer_m9, decimal_m9) \ - (u32)( \ - ((u32)(s) << REG_G3X_CLIPMTX_RESULT_9_S_SHIFT) | \ - ((u32)(integer_m9) << REG_G3X_CLIPMTX_RESULT_9_INTEGER_m9_SHIFT) | \ - ((u32)(decimal_m9) << REG_G3X_CLIPMTX_RESULT_9_DECIMAL_m9_SHIFT)) -#endif - -#define REG_G3X_CLIPMTX_RESULT_10_S_SHIFT 31 -#define REG_G3X_CLIPMTX_RESULT_10_S_SIZE 1 -#define REG_G3X_CLIPMTX_RESULT_10_S_MASK 0x80000000 - -#define REG_G3X_CLIPMTX_RESULT_10_INTEGER_m10_SHIFT 12 -#define REG_G3X_CLIPMTX_RESULT_10_INTEGER_m10_SIZE 19 -#define REG_G3X_CLIPMTX_RESULT_10_INTEGER_m10_MASK 0x7ffff000 - -#define REG_G3X_CLIPMTX_RESULT_10_DECIMAL_m10_SHIFT 0 -#define REG_G3X_CLIPMTX_RESULT_10_DECIMAL_m10_SIZE 12 -#define REG_G3X_CLIPMTX_RESULT_10_DECIMAL_m10_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3X_CLIPMTX_RESULT_10_FIELD(s, integer_m10, decimal_m10) \ - (u32)( \ - ((u32)(s) << REG_G3X_CLIPMTX_RESULT_10_S_SHIFT) | \ - ((u32)(integer_m10) << REG_G3X_CLIPMTX_RESULT_10_INTEGER_m10_SHIFT) | \ - ((u32)(decimal_m10) << REG_G3X_CLIPMTX_RESULT_10_DECIMAL_m10_SHIFT)) -#endif - -#define REG_G3X_CLIPMTX_RESULT_11_S_SHIFT 31 -#define REG_G3X_CLIPMTX_RESULT_11_S_SIZE 1 -#define REG_G3X_CLIPMTX_RESULT_11_S_MASK 0x80000000 - -#define REG_G3X_CLIPMTX_RESULT_11_INTEGER_m11_SHIFT 12 -#define REG_G3X_CLIPMTX_RESULT_11_INTEGER_m11_SIZE 19 -#define REG_G3X_CLIPMTX_RESULT_11_INTEGER_m11_MASK 0x7ffff000 - -#define REG_G3X_CLIPMTX_RESULT_11_DECIMAL_m11_SHIFT 0 -#define REG_G3X_CLIPMTX_RESULT_11_DECIMAL_m11_SIZE 12 -#define REG_G3X_CLIPMTX_RESULT_11_DECIMAL_m11_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3X_CLIPMTX_RESULT_11_FIELD(s, integer_m11, decimal_m11) \ - (u32)( \ - ((u32)(s) << REG_G3X_CLIPMTX_RESULT_11_S_SHIFT) | \ - ((u32)(integer_m11) << REG_G3X_CLIPMTX_RESULT_11_INTEGER_m11_SHIFT) | \ - ((u32)(decimal_m11) << REG_G3X_CLIPMTX_RESULT_11_DECIMAL_m11_SHIFT)) -#endif - -#define REG_G3X_CLIPMTX_RESULT_12_S_SHIFT 31 -#define REG_G3X_CLIPMTX_RESULT_12_S_SIZE 1 -#define REG_G3X_CLIPMTX_RESULT_12_S_MASK 0x80000000 - -#define REG_G3X_CLIPMTX_RESULT_12_INTEGER_m12_SHIFT 12 -#define REG_G3X_CLIPMTX_RESULT_12_INTEGER_m12_SIZE 19 -#define REG_G3X_CLIPMTX_RESULT_12_INTEGER_m12_MASK 0x7ffff000 - -#define REG_G3X_CLIPMTX_RESULT_12_DECIMAL_m12_SHIFT 0 -#define REG_G3X_CLIPMTX_RESULT_12_DECIMAL_m12_SIZE 12 -#define REG_G3X_CLIPMTX_RESULT_12_DECIMAL_m12_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3X_CLIPMTX_RESULT_12_FIELD(s, integer_m12, decimal_m12) \ - (u32)( \ - ((u32)(s) << REG_G3X_CLIPMTX_RESULT_12_S_SHIFT) | \ - ((u32)(integer_m12) << REG_G3X_CLIPMTX_RESULT_12_INTEGER_m12_SHIFT) | \ - ((u32)(decimal_m12) << REG_G3X_CLIPMTX_RESULT_12_DECIMAL_m12_SHIFT)) -#endif - -#define REG_G3X_CLIPMTX_RESULT_13_S_SHIFT 31 -#define REG_G3X_CLIPMTX_RESULT_13_S_SIZE 1 -#define REG_G3X_CLIPMTX_RESULT_13_S_MASK 0x80000000 - -#define REG_G3X_CLIPMTX_RESULT_13_INTEGER_m13_SHIFT 12 -#define REG_G3X_CLIPMTX_RESULT_13_INTEGER_m13_SIZE 19 -#define REG_G3X_CLIPMTX_RESULT_13_INTEGER_m13_MASK 0x7ffff000 - -#define REG_G3X_CLIPMTX_RESULT_13_DECIMAL_m13_SHIFT 0 -#define REG_G3X_CLIPMTX_RESULT_13_DECIMAL_m13_SIZE 12 -#define REG_G3X_CLIPMTX_RESULT_13_DECIMAL_m13_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3X_CLIPMTX_RESULT_13_FIELD(s, integer_m13, decimal_m13) \ - (u32)( \ - ((u32)(s) << REG_G3X_CLIPMTX_RESULT_13_S_SHIFT) | \ - ((u32)(integer_m13) << REG_G3X_CLIPMTX_RESULT_13_INTEGER_m13_SHIFT) | \ - ((u32)(decimal_m13) << REG_G3X_CLIPMTX_RESULT_13_DECIMAL_m13_SHIFT)) -#endif - -#define REG_G3X_CLIPMTX_RESULT_14_S_SHIFT 31 -#define REG_G3X_CLIPMTX_RESULT_14_S_SIZE 1 -#define REG_G3X_CLIPMTX_RESULT_14_S_MASK 0x80000000 - -#define REG_G3X_CLIPMTX_RESULT_14_INTEGER_m14_SHIFT 12 -#define REG_G3X_CLIPMTX_RESULT_14_INTEGER_m14_SIZE 19 -#define REG_G3X_CLIPMTX_RESULT_14_INTEGER_m14_MASK 0x7ffff000 - -#define REG_G3X_CLIPMTX_RESULT_14_DECIMAL_m14_SHIFT 0 -#define REG_G3X_CLIPMTX_RESULT_14_DECIMAL_m14_SIZE 12 -#define REG_G3X_CLIPMTX_RESULT_14_DECIMAL_m14_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3X_CLIPMTX_RESULT_14_FIELD(s, integer_m14, decimal_m14) \ - (u32)( \ - ((u32)(s) << REG_G3X_CLIPMTX_RESULT_14_S_SHIFT) | \ - ((u32)(integer_m14) << REG_G3X_CLIPMTX_RESULT_14_INTEGER_m14_SHIFT) | \ - ((u32)(decimal_m14) << REG_G3X_CLIPMTX_RESULT_14_DECIMAL_m14_SHIFT)) -#endif - -#define REG_G3X_CLIPMTX_RESULT_15_S_SHIFT 31 -#define REG_G3X_CLIPMTX_RESULT_15_S_SIZE 1 -#define REG_G3X_CLIPMTX_RESULT_15_S_MASK 0x80000000 - -#define REG_G3X_CLIPMTX_RESULT_15_INTEGER_m15_SHIFT 12 -#define REG_G3X_CLIPMTX_RESULT_15_INTEGER_m15_SIZE 19 -#define REG_G3X_CLIPMTX_RESULT_15_INTEGER_m15_MASK 0x7ffff000 - -#define REG_G3X_CLIPMTX_RESULT_15_DECIMAL_m15_SHIFT 0 -#define REG_G3X_CLIPMTX_RESULT_15_DECIMAL_m15_SIZE 12 -#define REG_G3X_CLIPMTX_RESULT_15_DECIMAL_m15_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3X_CLIPMTX_RESULT_15_FIELD(s, integer_m15, decimal_m15) \ - (u32)( \ - ((u32)(s) << REG_G3X_CLIPMTX_RESULT_15_S_SHIFT) | \ - ((u32)(integer_m15) << REG_G3X_CLIPMTX_RESULT_15_INTEGER_m15_SHIFT) | \ - ((u32)(decimal_m15) << REG_G3X_CLIPMTX_RESULT_15_DECIMAL_m15_SHIFT)) -#endif - -#define REG_G3X_VECMTX_RESULT_0_S_SHIFT 31 -#define REG_G3X_VECMTX_RESULT_0_S_SIZE 1 -#define REG_G3X_VECMTX_RESULT_0_S_MASK 0x80000000 - -#define REG_G3X_VECMTX_RESULT_0_INTEGER_m0_SHIFT 12 -#define REG_G3X_VECMTX_RESULT_0_INTEGER_m0_SIZE 19 -#define REG_G3X_VECMTX_RESULT_0_INTEGER_m0_MASK 0x7ffff000 - -#define REG_G3X_VECMTX_RESULT_0_DECIMAL_m0_SHIFT 0 -#define REG_G3X_VECMTX_RESULT_0_DECIMAL_m0_SIZE 12 -#define REG_G3X_VECMTX_RESULT_0_DECIMAL_m0_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3X_VECMTX_RESULT_0_FIELD(s, integer_m0, decimal_m0) \ - (u32)( \ - ((u32)(s) << REG_G3X_VECMTX_RESULT_0_S_SHIFT) | \ - ((u32)(integer_m0) << REG_G3X_VECMTX_RESULT_0_INTEGER_m0_SHIFT) | \ - ((u32)(decimal_m0) << REG_G3X_VECMTX_RESULT_0_DECIMAL_m0_SHIFT)) -#endif - -#define REG_G3X_VECMTX_RESULT_1_S_SHIFT 31 -#define REG_G3X_VECMTX_RESULT_1_S_SIZE 1 -#define REG_G3X_VECMTX_RESULT_1_S_MASK 0x80000000 - -#define REG_G3X_VECMTX_RESULT_1_INTEGER_m1_SHIFT 12 -#define REG_G3X_VECMTX_RESULT_1_INTEGER_m1_SIZE 19 -#define REG_G3X_VECMTX_RESULT_1_INTEGER_m1_MASK 0x7ffff000 - -#define REG_G3X_VECMTX_RESULT_1_DECIMAL_m1_SHIFT 0 -#define REG_G3X_VECMTX_RESULT_1_DECIMAL_m1_SIZE 12 -#define REG_G3X_VECMTX_RESULT_1_DECIMAL_m1_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3X_VECMTX_RESULT_1_FIELD(s, integer_m1, decimal_m1) \ - (u32)( \ - ((u32)(s) << REG_G3X_VECMTX_RESULT_1_S_SHIFT) | \ - ((u32)(integer_m1) << REG_G3X_VECMTX_RESULT_1_INTEGER_m1_SHIFT) | \ - ((u32)(decimal_m1) << REG_G3X_VECMTX_RESULT_1_DECIMAL_m1_SHIFT)) -#endif - -#define REG_G3X_VECMTX_RESULT_2_S_SHIFT 31 -#define REG_G3X_VECMTX_RESULT_2_S_SIZE 1 -#define REG_G3X_VECMTX_RESULT_2_S_MASK 0x80000000 - -#define REG_G3X_VECMTX_RESULT_2_INTEGER_m2_SHIFT 12 -#define REG_G3X_VECMTX_RESULT_2_INTEGER_m2_SIZE 19 -#define REG_G3X_VECMTX_RESULT_2_INTEGER_m2_MASK 0x7ffff000 - -#define REG_G3X_VECMTX_RESULT_2_DECIMAL_m2_SHIFT 0 -#define REG_G3X_VECMTX_RESULT_2_DECIMAL_m2_SIZE 12 -#define REG_G3X_VECMTX_RESULT_2_DECIMAL_m2_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3X_VECMTX_RESULT_2_FIELD(s, integer_m2, decimal_m2) \ - (u32)( \ - ((u32)(s) << REG_G3X_VECMTX_RESULT_2_S_SHIFT) | \ - ((u32)(integer_m2) << REG_G3X_VECMTX_RESULT_2_INTEGER_m2_SHIFT) | \ - ((u32)(decimal_m2) << REG_G3X_VECMTX_RESULT_2_DECIMAL_m2_SHIFT)) -#endif - -#define REG_G3X_VECMTX_RESULT_3_S_SHIFT 31 -#define REG_G3X_VECMTX_RESULT_3_S_SIZE 1 -#define REG_G3X_VECMTX_RESULT_3_S_MASK 0x80000000 - -#define REG_G3X_VECMTX_RESULT_3_INTEGER_m3_SHIFT 12 -#define REG_G3X_VECMTX_RESULT_3_INTEGER_m3_SIZE 19 -#define REG_G3X_VECMTX_RESULT_3_INTEGER_m3_MASK 0x7ffff000 - -#define REG_G3X_VECMTX_RESULT_3_DECIMAL_m3_SHIFT 0 -#define REG_G3X_VECMTX_RESULT_3_DECIMAL_m3_SIZE 12 -#define REG_G3X_VECMTX_RESULT_3_DECIMAL_m3_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3X_VECMTX_RESULT_3_FIELD(s, integer_m3, decimal_m3) \ - (u32)( \ - ((u32)(s) << REG_G3X_VECMTX_RESULT_3_S_SHIFT) | \ - ((u32)(integer_m3) << REG_G3X_VECMTX_RESULT_3_INTEGER_m3_SHIFT) | \ - ((u32)(decimal_m3) << REG_G3X_VECMTX_RESULT_3_DECIMAL_m3_SHIFT)) -#endif - -#define REG_G3X_VECMTX_RESULT_4_S_SHIFT 31 -#define REG_G3X_VECMTX_RESULT_4_S_SIZE 1 -#define REG_G3X_VECMTX_RESULT_4_S_MASK 0x80000000 - -#define REG_G3X_VECMTX_RESULT_4_INTEGER_m4_SHIFT 12 -#define REG_G3X_VECMTX_RESULT_4_INTEGER_m4_SIZE 19 -#define REG_G3X_VECMTX_RESULT_4_INTEGER_m4_MASK 0x7ffff000 - -#define REG_G3X_VECMTX_RESULT_4_DECIMAL_m4_SHIFT 0 -#define REG_G3X_VECMTX_RESULT_4_DECIMAL_m4_SIZE 12 -#define REG_G3X_VECMTX_RESULT_4_DECIMAL_m4_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3X_VECMTX_RESULT_4_FIELD(s, integer_m4, decimal_m4) \ - (u32)( \ - ((u32)(s) << REG_G3X_VECMTX_RESULT_4_S_SHIFT) | \ - ((u32)(integer_m4) << REG_G3X_VECMTX_RESULT_4_INTEGER_m4_SHIFT) | \ - ((u32)(decimal_m4) << REG_G3X_VECMTX_RESULT_4_DECIMAL_m4_SHIFT)) -#endif - -#define REG_G3X_VECMTX_RESULT_5_S_SHIFT 31 -#define REG_G3X_VECMTX_RESULT_5_S_SIZE 1 -#define REG_G3X_VECMTX_RESULT_5_S_MASK 0x80000000 - -#define REG_G3X_VECMTX_RESULT_5_INTEGER_m5_SHIFT 12 -#define REG_G3X_VECMTX_RESULT_5_INTEGER_m5_SIZE 19 -#define REG_G3X_VECMTX_RESULT_5_INTEGER_m5_MASK 0x7ffff000 - -#define REG_G3X_VECMTX_RESULT_5_DECIMAL_m5_SHIFT 0 -#define REG_G3X_VECMTX_RESULT_5_DECIMAL_m5_SIZE 12 -#define REG_G3X_VECMTX_RESULT_5_DECIMAL_m5_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3X_VECMTX_RESULT_5_FIELD(s, integer_m5, decimal_m5) \ - (u32)( \ - ((u32)(s) << REG_G3X_VECMTX_RESULT_5_S_SHIFT) | \ - ((u32)(integer_m5) << REG_G3X_VECMTX_RESULT_5_INTEGER_m5_SHIFT) | \ - ((u32)(decimal_m5) << REG_G3X_VECMTX_RESULT_5_DECIMAL_m5_SHIFT)) -#endif - -#define REG_G3X_VECMTX_RESULT_6_S_SHIFT 31 -#define REG_G3X_VECMTX_RESULT_6_S_SIZE 1 -#define REG_G3X_VECMTX_RESULT_6_S_MASK 0x80000000 - -#define REG_G3X_VECMTX_RESULT_6_INTEGER_m6_SHIFT 12 -#define REG_G3X_VECMTX_RESULT_6_INTEGER_m6_SIZE 19 -#define REG_G3X_VECMTX_RESULT_6_INTEGER_m6_MASK 0x7ffff000 - -#define REG_G3X_VECMTX_RESULT_6_DECIMAL_m6_SHIFT 0 -#define REG_G3X_VECMTX_RESULT_6_DECIMAL_m6_SIZE 12 -#define REG_G3X_VECMTX_RESULT_6_DECIMAL_m6_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3X_VECMTX_RESULT_6_FIELD(s, integer_m6, decimal_m6) \ - (u32)( \ - ((u32)(s) << REG_G3X_VECMTX_RESULT_6_S_SHIFT) | \ - ((u32)(integer_m6) << REG_G3X_VECMTX_RESULT_6_INTEGER_m6_SHIFT) | \ - ((u32)(decimal_m6) << REG_G3X_VECMTX_RESULT_6_DECIMAL_m6_SHIFT)) -#endif - -#define REG_G3X_VECMTX_RESULT_7_S_SHIFT 31 -#define REG_G3X_VECMTX_RESULT_7_S_SIZE 1 -#define REG_G3X_VECMTX_RESULT_7_S_MASK 0x80000000 - -#define REG_G3X_VECMTX_RESULT_7_INTEGER_m7_SHIFT 12 -#define REG_G3X_VECMTX_RESULT_7_INTEGER_m7_SIZE 19 -#define REG_G3X_VECMTX_RESULT_7_INTEGER_m7_MASK 0x7ffff000 - -#define REG_G3X_VECMTX_RESULT_7_DECIMAL_m7_SHIFT 0 -#define REG_G3X_VECMTX_RESULT_7_DECIMAL_m7_SIZE 12 -#define REG_G3X_VECMTX_RESULT_7_DECIMAL_m7_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3X_VECMTX_RESULT_7_FIELD(s, integer_m7, decimal_m7) \ - (u32)( \ - ((u32)(s) << REG_G3X_VECMTX_RESULT_7_S_SHIFT) | \ - ((u32)(integer_m7) << REG_G3X_VECMTX_RESULT_7_INTEGER_m7_SHIFT) | \ - ((u32)(decimal_m7) << REG_G3X_VECMTX_RESULT_7_DECIMAL_m7_SHIFT)) -#endif - -#define REG_G3X_VECMTX_RESULT_8_S_SHIFT 31 -#define REG_G3X_VECMTX_RESULT_8_S_SIZE 1 -#define REG_G3X_VECMTX_RESULT_8_S_MASK 0x80000000 - -#define REG_G3X_VECMTX_RESULT_8_INTEGER_m8_SHIFT 12 -#define REG_G3X_VECMTX_RESULT_8_INTEGER_m8_SIZE 19 -#define REG_G3X_VECMTX_RESULT_8_INTEGER_m8_MASK 0x7ffff000 - -#define REG_G3X_VECMTX_RESULT_8_DECIMAL_m8_SHIFT 0 -#define REG_G3X_VECMTX_RESULT_8_DECIMAL_m8_SIZE 12 -#define REG_G3X_VECMTX_RESULT_8_DECIMAL_m8_MASK 0x00000fff - -#ifndef SDK_ASM -#define REG_G3X_VECMTX_RESULT_8_FIELD(s, integer_m8, decimal_m8) \ - (u32)( \ - ((u32)(s) << REG_G3X_VECMTX_RESULT_8_S_SHIFT) | \ - ((u32)(integer_m8) << REG_G3X_VECMTX_RESULT_8_INTEGER_m8_SHIFT) | \ - ((u32)(decimal_m8) << REG_G3X_VECMTX_RESULT_8_DECIMAL_m8_SHIFT)) -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/hw/ARM9/ioreg_GX.h b/subprojects/NitroSDK/include/nitro/hw/ARM9/ioreg_GX.h deleted file mode 100644 index 41ef20e69b..0000000000 --- a/subprojects/NitroSDK/include/nitro/hw/ARM9/ioreg_GX.h +++ /dev/null @@ -1,624 +0,0 @@ -#ifndef NITRO_HW_ARM9_IOREG_GX_H_ -#define NITRO_HW_ARM9_IOREG_GX_H_ - -#ifndef SDK_ASM -#include -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define REG_DISPCNT_OFFSET 0x000 -#define REG_DISPCNT_ADDR (HW_REG_BASE + REG_DISPCNT_OFFSET) -#define reg_GX_DISPCNT (*( REGType32v *)REG_DISPCNT_ADDR) - -#define REG_DISPSTAT_OFFSET 0x004 -#define REG_DISPSTAT_ADDR (HW_REG_BASE + REG_DISPSTAT_OFFSET) -#define reg_GX_DISPSTAT (*( REGType16v *)REG_DISPSTAT_ADDR) - -#define REG_VCOUNT_OFFSET 0x006 -#define REG_VCOUNT_ADDR (HW_REG_BASE + REG_VCOUNT_OFFSET) -#define reg_GX_VCOUNT (*( REGType16v *)REG_VCOUNT_ADDR) - -#define REG_DISPCAPCNT_OFFSET 0x064 -#define REG_DISPCAPCNT_ADDR (HW_REG_BASE + REG_DISPCAPCNT_OFFSET) -#define reg_GX_DISPCAPCNT (*( REGType32v *)REG_DISPCAPCNT_ADDR) - -#define REG_DISP_MMEM_FIFO_OFFSET 0x068 -#define REG_DISP_MMEM_FIFO_ADDR (HW_REG_BASE + REG_DISP_MMEM_FIFO_OFFSET) -#define reg_GX_DISP_MMEM_FIFO (*( REGType32v *)REG_DISP_MMEM_FIFO_ADDR) - -#define REG_DISP_MMEM_FIFO_L_OFFSET 0x068 -#define REG_DISP_MMEM_FIFO_L_ADDR (HW_REG_BASE + REG_DISP_MMEM_FIFO_L_OFFSET) -#define reg_GX_DISP_MMEM_FIFO_L (*( REGType16v *)REG_DISP_MMEM_FIFO_L_ADDR) - -#define REG_DISP_MMEM_FIFO_H_OFFSET 0x06a -#define REG_DISP_MMEM_FIFO_H_ADDR (HW_REG_BASE + REG_DISP_MMEM_FIFO_H_OFFSET) -#define reg_GX_DISP_MMEM_FIFO_H (*( REGType16v *)REG_DISP_MMEM_FIFO_H_ADDR) - -#define REG_MASTER_BRIGHT_OFFSET 0x06c -#define REG_MASTER_BRIGHT_ADDR (HW_REG_BASE + REG_MASTER_BRIGHT_OFFSET) -#define reg_GX_MASTER_BRIGHT (*( REGType16v *)REG_MASTER_BRIGHT_ADDR) - -#define REG_TVOUTCNT_OFFSET 0x070 -#define REG_TVOUTCNT_ADDR (HW_REG_BASE + REG_TVOUTCNT_OFFSET) -#define reg_GX_TVOUTCNT (*( REGType16v *)REG_TVOUTCNT_ADDR) - -#define REG_VRAMCNT_OFFSET 0x240 -#define REG_VRAMCNT_ADDR (HW_REG_BASE + REG_VRAMCNT_OFFSET) -#define reg_GX_VRAMCNT (*( REGType32v *)REG_VRAMCNT_ADDR) - -#define REG_VRAMCNT_A_OFFSET 0x240 -#define REG_VRAMCNT_A_ADDR (HW_REG_BASE + REG_VRAMCNT_A_OFFSET) -#define reg_GX_VRAMCNT_A (*( REGType8v *)REG_VRAMCNT_A_ADDR) - -#define REG_VRAMCNT_B_OFFSET 0x241 -#define REG_VRAMCNT_B_ADDR (HW_REG_BASE + REG_VRAMCNT_B_OFFSET) -#define reg_GX_VRAMCNT_B (*( REGType8v *)REG_VRAMCNT_B_ADDR) - -#define REG_VRAMCNT_C_OFFSET 0x242 -#define REG_VRAMCNT_C_ADDR (HW_REG_BASE + REG_VRAMCNT_C_OFFSET) -#define reg_GX_VRAMCNT_C (*( REGType8v *)REG_VRAMCNT_C_ADDR) - -#define REG_VRAMCNT_D_OFFSET 0x243 -#define REG_VRAMCNT_D_ADDR (HW_REG_BASE + REG_VRAMCNT_D_OFFSET) -#define reg_GX_VRAMCNT_D (*( REGType8v *)REG_VRAMCNT_D_ADDR) - -#define REG_WVRAMCNT_OFFSET 0x244 -#define REG_WVRAMCNT_ADDR (HW_REG_BASE + REG_WVRAMCNT_OFFSET) -#define reg_GX_WVRAMCNT (*( REGType32v *)REG_WVRAMCNT_ADDR) - -#define REG_VRAMCNT_E_OFFSET 0x244 -#define REG_VRAMCNT_E_ADDR (HW_REG_BASE + REG_VRAMCNT_E_OFFSET) -#define reg_GX_VRAMCNT_E (*( REGType8v *)REG_VRAMCNT_E_ADDR) - -#define REG_VRAMCNT_F_OFFSET 0x245 -#define REG_VRAMCNT_F_ADDR (HW_REG_BASE + REG_VRAMCNT_F_OFFSET) -#define reg_GX_VRAMCNT_F (*( REGType8v *)REG_VRAMCNT_F_ADDR) - -#define REG_VRAMCNT_G_OFFSET 0x246 -#define REG_VRAMCNT_G_ADDR (HW_REG_BASE + REG_VRAMCNT_G_OFFSET) -#define reg_GX_VRAMCNT_G (*( REGType8v *)REG_VRAMCNT_G_ADDR) - -#define REG_VRAMCNT_WRAM_OFFSET 0x247 -#define REG_VRAMCNT_WRAM_ADDR (HW_REG_BASE + REG_VRAMCNT_WRAM_OFFSET) -#define reg_GX_VRAMCNT_WRAM (*( REGType8v *)REG_VRAMCNT_WRAM_ADDR) - -#define REG_VRAM_HI_CNT_OFFSET 0x248 -#define REG_VRAM_HI_CNT_ADDR (HW_REG_BASE + REG_VRAM_HI_CNT_OFFSET) -#define reg_GX_VRAM_HI_CNT (*( REGType16v *)REG_VRAM_HI_CNT_ADDR) - -#define REG_VRAMCNT_H_OFFSET 0x248 -#define REG_VRAMCNT_H_ADDR (HW_REG_BASE + REG_VRAMCNT_H_OFFSET) -#define reg_GX_VRAMCNT_H (*( REGType8v *)REG_VRAMCNT_H_ADDR) - -#define REG_VRAMCNT_I_OFFSET 0x249 -#define REG_VRAMCNT_I_ADDR (HW_REG_BASE + REG_VRAMCNT_I_OFFSET) -#define reg_GX_VRAMCNT_I (*( REGType8v *)REG_VRAMCNT_I_ADDR) - -#define REG_POWCNT_OFFSET 0x304 -#define REG_POWCNT_ADDR (HW_REG_BASE + REG_POWCNT_OFFSET) -#define reg_GX_POWCNT (*( REGType16v *)REG_POWCNT_ADDR) - -#define REG_GX_DISPCNT_O_SHIFT 31 -#define REG_GX_DISPCNT_O_SIZE 1 -#define REG_GX_DISPCNT_O_MASK 0x80000000 - -#define REG_GX_DISPCNT_BG_SHIFT 30 -#define REG_GX_DISPCNT_BG_SIZE 1 -#define REG_GX_DISPCNT_BG_MASK 0x40000000 - -#define REG_GX_DISPCNT_BGSCREENOFFSET_SHIFT 27 -#define REG_GX_DISPCNT_BGSCREENOFFSET_SIZE 3 -#define REG_GX_DISPCNT_BGSCREENOFFSET_MASK 0x38000000 - -#define REG_GX_DISPCNT_BGCHAROFFSET_SHIFT 24 -#define REG_GX_DISPCNT_BGCHAROFFSET_SIZE 3 -#define REG_GX_DISPCNT_BGCHAROFFSET_MASK 0x07000000 - -#define REG_GX_DISPCNT_OH_SHIFT 23 -#define REG_GX_DISPCNT_OH_SIZE 1 -#define REG_GX_DISPCNT_OH_MASK 0x00800000 - -#define REG_GX_DISPCNT_EXOBJ_SHIFT 20 -#define REG_GX_DISPCNT_EXOBJ_SIZE 3 -#define REG_GX_DISPCNT_EXOBJ_MASK 0x00700000 - -#define REG_GX_DISPCNT_VRAM_SHIFT 18 -#define REG_GX_DISPCNT_VRAM_SIZE 2 -#define REG_GX_DISPCNT_VRAM_MASK 0x000c0000 - -#define REG_GX_DISPCNT_MODE_SHIFT 16 -#define REG_GX_DISPCNT_MODE_SIZE 2 -#define REG_GX_DISPCNT_MODE_MASK 0x00030000 - -#define REG_GX_DISPCNT_OW_SHIFT 15 -#define REG_GX_DISPCNT_OW_SIZE 1 -#define REG_GX_DISPCNT_OW_MASK 0x00008000 - -#define REG_GX_DISPCNT_W1_SHIFT 14 -#define REG_GX_DISPCNT_W1_SIZE 1 -#define REG_GX_DISPCNT_W1_MASK 0x00004000 - -#define REG_GX_DISPCNT_W0_SHIFT 13 -#define REG_GX_DISPCNT_W0_SIZE 1 -#define REG_GX_DISPCNT_W0_MASK 0x00002000 - -#define REG_GX_DISPCNT_DISPLAY_SHIFT 8 -#define REG_GX_DISPCNT_DISPLAY_SIZE 5 -#define REG_GX_DISPCNT_DISPLAY_MASK 0x00001f00 - -#define REG_GX_DISPCNT_BLANK_SHIFT 7 -#define REG_GX_DISPCNT_BLANK_SIZE 1 -#define REG_GX_DISPCNT_BLANK_MASK 0x00000080 - -#define REG_GX_DISPCNT_OBJMAP_SHIFT 4 -#define REG_GX_DISPCNT_OBJMAP_SIZE 3 -#define REG_GX_DISPCNT_OBJMAP_MASK 0x00000070 - -#define REG_GX_DISPCNT_BG02D3D_SHIFT 3 -#define REG_GX_DISPCNT_BG02D3D_SIZE 1 -#define REG_GX_DISPCNT_BG02D3D_MASK 0x00000008 - -#define REG_GX_DISPCNT_BGMODE_SHIFT 0 -#define REG_GX_DISPCNT_BGMODE_SIZE 3 -#define REG_GX_DISPCNT_BGMODE_MASK 0x00000007 - -#define REG_GX_DISPCNT_OBJMAP_CH_SHIFT 4 -#define REG_GX_DISPCNT_OBJMAP_CH_SIZE 1 -#define REG_GX_DISPCNT_OBJMAP_CH_MASK 0x00000010 - -#define REG_GX_DISPCNT_OBJMAP_BM_SHIFT 5 -#define REG_GX_DISPCNT_OBJMAP_BM_SIZE 2 -#define REG_GX_DISPCNT_OBJMAP_BM_MASK 0x00000060 - -#define REG_GX_DISPCNT_EXOBJ_CH_SHIFT 20 -#define REG_GX_DISPCNT_EXOBJ_CH_SIZE 2 -#define REG_GX_DISPCNT_EXOBJ_CH_MASK 0x00300000 - -#define REG_GX_DISPCNT_EXOBJ_BM_SHIFT 22 -#define REG_GX_DISPCNT_EXOBJ_BM_SIZE 1 -#define REG_GX_DISPCNT_EXOBJ_BM_MASK 0x00400000 - -#ifndef SDK_ASM -#define REG_GX_DISPCNT_FIELD(o, bg, bgscreenoffset, bgcharoffset, oh, exobj, vram, mode, ow, w1, w0, display, blank, objmap, bg02d3d, bgmode, objmap_ch, objmap_bm, exobj_ch, exobj_bm) \ - (u32)( \ - ((u32)(o) << REG_GX_DISPCNT_O_SHIFT) | \ - ((u32)(bg) << REG_GX_DISPCNT_BG_SHIFT) | \ - ((u32)(bgscreenoffset) << REG_GX_DISPCNT_BGSCREENOFFSET_SHIFT) | \ - ((u32)(bgcharoffset) << REG_GX_DISPCNT_BGCHAROFFSET_SHIFT) | \ - ((u32)(oh) << REG_GX_DISPCNT_OH_SHIFT) | \ - ((u32)(exobj) << REG_GX_DISPCNT_EXOBJ_SHIFT) | \ - ((u32)(vram) << REG_GX_DISPCNT_VRAM_SHIFT) | \ - ((u32)(mode) << REG_GX_DISPCNT_MODE_SHIFT) | \ - ((u32)(ow) << REG_GX_DISPCNT_OW_SHIFT) | \ - ((u32)(w1) << REG_GX_DISPCNT_W1_SHIFT) | \ - ((u32)(w0) << REG_GX_DISPCNT_W0_SHIFT) | \ - ((u32)(display) << REG_GX_DISPCNT_DISPLAY_SHIFT) | \ - ((u32)(blank) << REG_GX_DISPCNT_BLANK_SHIFT) | \ - ((u32)(objmap) << REG_GX_DISPCNT_OBJMAP_SHIFT) | \ - ((u32)(bg02d3d) << REG_GX_DISPCNT_BG02D3D_SHIFT) | \ - ((u32)(bgmode) << REG_GX_DISPCNT_BGMODE_SHIFT) | \ - ((u32)(objmap_ch) << REG_GX_DISPCNT_OBJMAP_CH_SHIFT) | \ - ((u32)(objmap_bm) << REG_GX_DISPCNT_OBJMAP_BM_SHIFT) | \ - ((u32)(exobj_ch) << REG_GX_DISPCNT_EXOBJ_CH_SHIFT) | \ - ((u32)(exobj_bm) << REG_GX_DISPCNT_EXOBJ_BM_SHIFT)) -#endif - -#define REG_GX_DISPSTAT_VCOUNTER_SHIFT 7 -#define REG_GX_DISPSTAT_VCOUNTER_SIZE 9 -#define REG_GX_DISPSTAT_VCOUNTER_MASK 0xff80 - -#define REG_GX_DISPSTAT_VQI_SHIFT 5 -#define REG_GX_DISPSTAT_VQI_SIZE 1 -#define REG_GX_DISPSTAT_VQI_MASK 0x0020 - -#define REG_GX_DISPSTAT_HBI_SHIFT 4 -#define REG_GX_DISPSTAT_HBI_SIZE 1 -#define REG_GX_DISPSTAT_HBI_MASK 0x0010 - -#define REG_GX_DISPSTAT_VBI_SHIFT 3 -#define REG_GX_DISPSTAT_VBI_SIZE 1 -#define REG_GX_DISPSTAT_VBI_MASK 0x0008 - -#define REG_GX_DISPSTAT_LYC_SHIFT 2 -#define REG_GX_DISPSTAT_LYC_SIZE 1 -#define REG_GX_DISPSTAT_LYC_MASK 0x0004 - -#define REG_GX_DISPSTAT_HBLK_SHIFT 1 -#define REG_GX_DISPSTAT_HBLK_SIZE 1 -#define REG_GX_DISPSTAT_HBLK_MASK 0x0002 - -#define REG_GX_DISPSTAT_VBLK_SHIFT 0 -#define REG_GX_DISPSTAT_VBLK_SIZE 1 -#define REG_GX_DISPSTAT_VBLK_MASK 0x0001 - -#ifndef SDK_ASM -#define REG_GX_DISPSTAT_FIELD(vcounter, vqi, hbi, vbi, lyc, hblk, vblk) \ - (u16)( \ - ((u32)(vcounter) << REG_GX_DISPSTAT_VCOUNTER_SHIFT) | \ - ((u32)(vqi) << REG_GX_DISPSTAT_VQI_SHIFT) | \ - ((u32)(hbi) << REG_GX_DISPSTAT_HBI_SHIFT) | \ - ((u32)(vbi) << REG_GX_DISPSTAT_VBI_SHIFT) | \ - ((u32)(lyc) << REG_GX_DISPSTAT_LYC_SHIFT) | \ - ((u32)(hblk) << REG_GX_DISPSTAT_HBLK_SHIFT) | \ - ((u32)(vblk) << REG_GX_DISPSTAT_VBLK_SHIFT)) -#endif - -#define REG_GX_VCOUNT_VCOUNTER_SHIFT 0 -#define REG_GX_VCOUNT_VCOUNTER_SIZE 9 -#define REG_GX_VCOUNT_VCOUNTER_MASK 0x01ff - -#ifndef SDK_ASM -#define REG_GX_VCOUNT_FIELD(vcounter) \ - (u16)( \ - ((u32)(vcounter) << REG_GX_VCOUNT_VCOUNTER_SHIFT)) -#endif - -#define REG_GX_DISPCAPCNT_E_SHIFT 31 -#define REG_GX_DISPCAPCNT_E_SIZE 1 -#define REG_GX_DISPCAPCNT_E_MASK 0x80000000 - -#define REG_GX_DISPCAPCNT_MOD_SHIFT 29 -#define REG_GX_DISPCAPCNT_MOD_SIZE 2 -#define REG_GX_DISPCAPCNT_MOD_MASK 0x60000000 - -#define REG_GX_DISPCAPCNT_COFS_SHIFT 26 -#define REG_GX_DISPCAPCNT_COFS_SIZE 2 -#define REG_GX_DISPCAPCNT_COFS_MASK 0x0c000000 - -#define REG_GX_DISPCAPCNT_SRCB_SHIFT 25 -#define REG_GX_DISPCAPCNT_SRCB_SIZE 1 -#define REG_GX_DISPCAPCNT_SRCB_MASK 0x02000000 - -#define REG_GX_DISPCAPCNT_SRCA_SHIFT 24 -#define REG_GX_DISPCAPCNT_SRCA_SIZE 1 -#define REG_GX_DISPCAPCNT_SRCA_MASK 0x01000000 - -#define REG_GX_DISPCAPCNT_WSIZE_SHIFT 20 -#define REG_GX_DISPCAPCNT_WSIZE_SIZE 2 -#define REG_GX_DISPCAPCNT_WSIZE_MASK 0x00300000 - -#define REG_GX_DISPCAPCNT_WOFS_SHIFT 18 -#define REG_GX_DISPCAPCNT_WOFS_SIZE 2 -#define REG_GX_DISPCAPCNT_WOFS_MASK 0x000c0000 - -#define REG_GX_DISPCAPCNT_DEST_SHIFT 16 -#define REG_GX_DISPCAPCNT_DEST_SIZE 2 -#define REG_GX_DISPCAPCNT_DEST_MASK 0x00030000 - -#define REG_GX_DISPCAPCNT_EVB_SHIFT 8 -#define REG_GX_DISPCAPCNT_EVB_SIZE 5 -#define REG_GX_DISPCAPCNT_EVB_MASK 0x00001f00 - -#define REG_GX_DISPCAPCNT_EVA_SHIFT 0 -#define REG_GX_DISPCAPCNT_EVA_SIZE 5 -#define REG_GX_DISPCAPCNT_EVA_MASK 0x0000001f - -#ifndef SDK_ASM -#define REG_GX_DISPCAPCNT_FIELD(e, mod, cofs, srcb, srca, wsize, wofs, dest, evb, eva) \ - (u32)( \ - ((u32)(e) << REG_GX_DISPCAPCNT_E_SHIFT) | \ - ((u32)(mod) << REG_GX_DISPCAPCNT_MOD_SHIFT) | \ - ((u32)(cofs) << REG_GX_DISPCAPCNT_COFS_SHIFT) | \ - ((u32)(srcb) << REG_GX_DISPCAPCNT_SRCB_SHIFT) | \ - ((u32)(srca) << REG_GX_DISPCAPCNT_SRCA_SHIFT) | \ - ((u32)(wsize) << REG_GX_DISPCAPCNT_WSIZE_SHIFT) | \ - ((u32)(wofs) << REG_GX_DISPCAPCNT_WOFS_SHIFT) | \ - ((u32)(dest) << REG_GX_DISPCAPCNT_DEST_SHIFT) | \ - ((u32)(evb) << REG_GX_DISPCAPCNT_EVB_SHIFT) | \ - ((u32)(eva) << REG_GX_DISPCAPCNT_EVA_SHIFT)) -#endif - -#define REG_GX_DISP_MMEM_FIFO_EVEN_SHIFT 0 -#define REG_GX_DISP_MMEM_FIFO_EVEN_SIZE 16 -#define REG_GX_DISP_MMEM_FIFO_EVEN_MASK 0x0000ffff - -#define REG_GX_DISP_MMEM_FIFO_ODD_SHIFT 16 -#define REG_GX_DISP_MMEM_FIFO_ODD_SIZE 16 -#define REG_GX_DISP_MMEM_FIFO_ODD_MASK 0xffff0000 - -#ifndef SDK_ASM -#define REG_GX_DISP_MMEM_FIFO_FIELD(even, odd) \ - (u32)( \ - ((u32)(even) << REG_GX_DISP_MMEM_FIFO_EVEN_SHIFT) | \ - ((u32)(odd) << REG_GX_DISP_MMEM_FIFO_ODD_SHIFT)) -#endif - -#define REG_GX_DISP_MMEM_FIFO_L_RED_SHIFT 0 -#define REG_GX_DISP_MMEM_FIFO_L_RED_SIZE 5 -#define REG_GX_DISP_MMEM_FIFO_L_RED_MASK 0x001f - -#define REG_GX_DISP_MMEM_FIFO_L_GREEN_SHIFT 5 -#define REG_GX_DISP_MMEM_FIFO_L_GREEN_SIZE 5 -#define REG_GX_DISP_MMEM_FIFO_L_GREEN_MASK 0x03e0 - -#define REG_GX_DISP_MMEM_FIFO_L_BLUE_SHIFT 10 -#define REG_GX_DISP_MMEM_FIFO_L_BLUE_SIZE 5 -#define REG_GX_DISP_MMEM_FIFO_L_BLUE_MASK 0x7c00 - -#ifndef SDK_ASM -#define REG_GX_DISP_MMEM_FIFO_L_FIELD(red, green, blue) \ - (u16)( \ - ((u32)(red) << REG_GX_DISP_MMEM_FIFO_L_RED_SHIFT) | \ - ((u32)(green) << REG_GX_DISP_MMEM_FIFO_L_GREEN_SHIFT) | \ - ((u32)(blue) << REG_GX_DISP_MMEM_FIFO_L_BLUE_SHIFT)) -#endif - -#define REG_GX_DISP_MMEM_FIFO_H_RED_SHIFT 0 -#define REG_GX_DISP_MMEM_FIFO_H_RED_SIZE 5 -#define REG_GX_DISP_MMEM_FIFO_H_RED_MASK 0x001f - -#define REG_GX_DISP_MMEM_FIFO_H_GREEN_SHIFT 5 -#define REG_GX_DISP_MMEM_FIFO_H_GREEN_SIZE 5 -#define REG_GX_DISP_MMEM_FIFO_H_GREEN_MASK 0x03e0 - -#define REG_GX_DISP_MMEM_FIFO_H_BLUE_SHIFT 10 -#define REG_GX_DISP_MMEM_FIFO_H_BLUE_SIZE 5 -#define REG_GX_DISP_MMEM_FIFO_H_BLUE_MASK 0x7c00 - -#ifndef SDK_ASM -#define REG_GX_DISP_MMEM_FIFO_H_FIELD(red, green, blue) \ - (u16)( \ - ((u32)(red) << REG_GX_DISP_MMEM_FIFO_H_RED_SHIFT) | \ - ((u32)(green) << REG_GX_DISP_MMEM_FIFO_H_GREEN_SHIFT) | \ - ((u32)(blue) << REG_GX_DISP_MMEM_FIFO_H_BLUE_SHIFT)) -#endif - -#define REG_GX_MASTER_BRIGHT_E_MOD_SHIFT 14 -#define REG_GX_MASTER_BRIGHT_E_MOD_SIZE 2 -#define REG_GX_MASTER_BRIGHT_E_MOD_MASK 0xc000 - -#define REG_GX_MASTER_BRIGHT_E_VALUE_SHIFT 0 -#define REG_GX_MASTER_BRIGHT_E_VALUE_SIZE 5 -#define REG_GX_MASTER_BRIGHT_E_VALUE_MASK 0x001f - -#ifndef SDK_ASM -#define REG_GX_MASTER_BRIGHT_FIELD(e_mod, e_value) \ - (u16)( \ - ((u32)(e_mod) << REG_GX_MASTER_BRIGHT_E_MOD_SHIFT) | \ - ((u32)(e_value) << REG_GX_MASTER_BRIGHT_E_VALUE_SHIFT)) -#endif - -#define REG_GX_TVOUTCNT_COMMAND3_SHIFT 8 -#define REG_GX_TVOUTCNT_COMMAND3_SIZE 4 -#define REG_GX_TVOUTCNT_COMMAND3_MASK 0x0f00 - -#define REG_GX_TVOUTCNT_COMMAND2_SHIFT 4 -#define REG_GX_TVOUTCNT_COMMAND2_SIZE 4 -#define REG_GX_TVOUTCNT_COMMAND2_MASK 0x00f0 - -#define REG_GX_TVOUTCNT_COMMAND_SHIFT 0 -#define REG_GX_TVOUTCNT_COMMAND_SIZE 4 -#define REG_GX_TVOUTCNT_COMMAND_MASK 0x000f - -#ifndef SDK_ASM -#define REG_GX_TVOUTCNT_FIELD(command3, command2, command) \ - (u16)( \ - ((u32)(command3) << REG_GX_TVOUTCNT_COMMAND3_SHIFT) | \ - ((u32)(command2) << REG_GX_TVOUTCNT_COMMAND2_SHIFT) | \ - ((u32)(command) << REG_GX_TVOUTCNT_COMMAND_SHIFT)) -#endif - -#define REG_GX_VRAMCNT_A_E_SHIFT 7 -#define REG_GX_VRAMCNT_A_E_SIZE 1 -#define REG_GX_VRAMCNT_A_E_MASK 0x80 - -#define REG_GX_VRAMCNT_A_OFS_SHIFT 3 -#define REG_GX_VRAMCNT_A_OFS_SIZE 2 -#define REG_GX_VRAMCNT_A_OFS_MASK 0x18 - -#define REG_GX_VRAMCNT_A_MST_SHIFT 0 -#define REG_GX_VRAMCNT_A_MST_SIZE 2 -#define REG_GX_VRAMCNT_A_MST_MASK 0x03 - -#ifndef SDK_ASM -#define REG_GX_VRAMCNT_A_FIELD(e, ofs, mst) \ - (u8)( \ - ((u32)(e) << REG_GX_VRAMCNT_A_E_SHIFT) | \ - ((u32)(ofs) << REG_GX_VRAMCNT_A_OFS_SHIFT) | \ - ((u32)(mst) << REG_GX_VRAMCNT_A_MST_SHIFT)) -#endif - -#define REG_GX_VRAMCNT_B_E_SHIFT 7 -#define REG_GX_VRAMCNT_B_E_SIZE 1 -#define REG_GX_VRAMCNT_B_E_MASK 0x80 - -#define REG_GX_VRAMCNT_B_OFS_SHIFT 3 -#define REG_GX_VRAMCNT_B_OFS_SIZE 2 -#define REG_GX_VRAMCNT_B_OFS_MASK 0x18 - -#define REG_GX_VRAMCNT_B_MST_SHIFT 0 -#define REG_GX_VRAMCNT_B_MST_SIZE 2 -#define REG_GX_VRAMCNT_B_MST_MASK 0x03 - -#ifndef SDK_ASM -#define REG_GX_VRAMCNT_B_FIELD(e, ofs, mst) \ - (u8)( \ - ((u32)(e) << REG_GX_VRAMCNT_B_E_SHIFT) | \ - ((u32)(ofs) << REG_GX_VRAMCNT_B_OFS_SHIFT) | \ - ((u32)(mst) << REG_GX_VRAMCNT_B_MST_SHIFT)) -#endif - -#define REG_GX_VRAMCNT_C_E_SHIFT 7 -#define REG_GX_VRAMCNT_C_E_SIZE 1 -#define REG_GX_VRAMCNT_C_E_MASK 0x80 - -#define REG_GX_VRAMCNT_C_OFS_SHIFT 3 -#define REG_GX_VRAMCNT_C_OFS_SIZE 2 -#define REG_GX_VRAMCNT_C_OFS_MASK 0x18 - -#define REG_GX_VRAMCNT_C_MST_SHIFT 0 -#define REG_GX_VRAMCNT_C_MST_SIZE 3 -#define REG_GX_VRAMCNT_C_MST_MASK 0x07 - -#ifndef SDK_ASM -#define REG_GX_VRAMCNT_C_FIELD(e, ofs, mst) \ - (u8)( \ - ((u32)(e) << REG_GX_VRAMCNT_C_E_SHIFT) | \ - ((u32)(ofs) << REG_GX_VRAMCNT_C_OFS_SHIFT) | \ - ((u32)(mst) << REG_GX_VRAMCNT_C_MST_SHIFT)) -#endif - -#define REG_GX_VRAMCNT_D_E_SHIFT 7 -#define REG_GX_VRAMCNT_D_E_SIZE 1 -#define REG_GX_VRAMCNT_D_E_MASK 0x80 - -#define REG_GX_VRAMCNT_D_OFS_SHIFT 3 -#define REG_GX_VRAMCNT_D_OFS_SIZE 2 -#define REG_GX_VRAMCNT_D_OFS_MASK 0x18 - -#define REG_GX_VRAMCNT_D_MST_SHIFT 0 -#define REG_GX_VRAMCNT_D_MST_SIZE 3 -#define REG_GX_VRAMCNT_D_MST_MASK 0x07 - -#ifndef SDK_ASM -#define REG_GX_VRAMCNT_D_FIELD(e, ofs, mst) \ - (u8)( \ - ((u32)(e) << REG_GX_VRAMCNT_D_E_SHIFT) | \ - ((u32)(ofs) << REG_GX_VRAMCNT_D_OFS_SHIFT) | \ - ((u32)(mst) << REG_GX_VRAMCNT_D_MST_SHIFT)) -#endif - -#define REG_GX_VRAMCNT_E_E_SHIFT 7 -#define REG_GX_VRAMCNT_E_E_SIZE 1 -#define REG_GX_VRAMCNT_E_E_MASK 0x80 - -#define REG_GX_VRAMCNT_E_MST_SHIFT 0 -#define REG_GX_VRAMCNT_E_MST_SIZE 3 -#define REG_GX_VRAMCNT_E_MST_MASK 0x07 - -#ifndef SDK_ASM -#define REG_GX_VRAMCNT_E_FIELD(e, mst) \ - (u8)( \ - ((u32)(e) << REG_GX_VRAMCNT_E_E_SHIFT) | \ - ((u32)(mst) << REG_GX_VRAMCNT_E_MST_SHIFT)) -#endif - -#define REG_GX_VRAMCNT_F_E_SHIFT 7 -#define REG_GX_VRAMCNT_F_E_SIZE 1 -#define REG_GX_VRAMCNT_F_E_MASK 0x80 - -#define REG_GX_VRAMCNT_F_OFS_SHIFT 3 -#define REG_GX_VRAMCNT_F_OFS_SIZE 2 -#define REG_GX_VRAMCNT_F_OFS_MASK 0x18 - -#define REG_GX_VRAMCNT_F_MST_SHIFT 0 -#define REG_GX_VRAMCNT_F_MST_SIZE 3 -#define REG_GX_VRAMCNT_F_MST_MASK 0x07 - -#ifndef SDK_ASM -#define REG_GX_VRAMCNT_F_FIELD(e, ofs, mst) \ - (u8)( \ - ((u32)(e) << REG_GX_VRAMCNT_F_E_SHIFT) | \ - ((u32)(ofs) << REG_GX_VRAMCNT_F_OFS_SHIFT) | \ - ((u32)(mst) << REG_GX_VRAMCNT_F_MST_SHIFT)) -#endif - -#define REG_GX_VRAMCNT_G_E_SHIFT 7 -#define REG_GX_VRAMCNT_G_E_SIZE 1 -#define REG_GX_VRAMCNT_G_E_MASK 0x80 - -#define REG_GX_VRAMCNT_G_OFS_SHIFT 3 -#define REG_GX_VRAMCNT_G_OFS_SIZE 2 -#define REG_GX_VRAMCNT_G_OFS_MASK 0x18 - -#define REG_GX_VRAMCNT_G_MST_SHIFT 0 -#define REG_GX_VRAMCNT_G_MST_SIZE 3 -#define REG_GX_VRAMCNT_G_MST_MASK 0x07 - -#ifndef SDK_ASM -#define REG_GX_VRAMCNT_G_FIELD(e, ofs, mst) \ - (u8)( \ - ((u32)(e) << REG_GX_VRAMCNT_G_E_SHIFT) | \ - ((u32)(ofs) << REG_GX_VRAMCNT_G_OFS_SHIFT) | \ - ((u32)(mst) << REG_GX_VRAMCNT_G_MST_SHIFT)) -#endif - -#define REG_GX_VRAMCNT_WRAM_BANK_SHIFT 0 -#define REG_GX_VRAMCNT_WRAM_BANK_SIZE 2 -#define REG_GX_VRAMCNT_WRAM_BANK_MASK 0x03 - -#ifndef SDK_ASM -#define REG_GX_VRAMCNT_WRAM_FIELD(bank) \ - (u8)( \ - ((u32)(bank) << REG_GX_VRAMCNT_WRAM_BANK_SHIFT)) -#endif - -#define REG_GX_VRAMCNT_H_E_SHIFT 7 -#define REG_GX_VRAMCNT_H_E_SIZE 1 -#define REG_GX_VRAMCNT_H_E_MASK 0x80 - -#define REG_GX_VRAMCNT_H_MST_SHIFT 0 -#define REG_GX_VRAMCNT_H_MST_SIZE 2 -#define REG_GX_VRAMCNT_H_MST_MASK 0x03 - -#ifndef SDK_ASM -#define REG_GX_VRAMCNT_H_FIELD(e, mst) \ - (u8)( \ - ((u32)(e) << REG_GX_VRAMCNT_H_E_SHIFT) | \ - ((u32)(mst) << REG_GX_VRAMCNT_H_MST_SHIFT)) -#endif - -#define REG_GX_VRAMCNT_I_E_SHIFT 7 -#define REG_GX_VRAMCNT_I_E_SIZE 1 -#define REG_GX_VRAMCNT_I_E_MASK 0x80 - -#define REG_GX_VRAMCNT_I_MST_SHIFT 0 -#define REG_GX_VRAMCNT_I_MST_SIZE 2 -#define REG_GX_VRAMCNT_I_MST_MASK 0x03 - -#ifndef SDK_ASM -#define REG_GX_VRAMCNT_I_FIELD(e, mst) \ - (u8)( \ - ((u32)(e) << REG_GX_VRAMCNT_I_E_SHIFT) | \ - ((u32)(mst) << REG_GX_VRAMCNT_I_MST_SHIFT)) -#endif - -#define REG_GX_POWCNT_GE_SHIFT 3 -#define REG_GX_POWCNT_GE_SIZE 1 -#define REG_GX_POWCNT_GE_MASK 0x0008 - -#define REG_GX_POWCNT_RE_SHIFT 2 -#define REG_GX_POWCNT_RE_SIZE 1 -#define REG_GX_POWCNT_RE_MASK 0x0004 - -#define REG_GX_POWCNT_E2DG_SHIFT 1 -#define REG_GX_POWCNT_E2DG_SIZE 1 -#define REG_GX_POWCNT_E2DG_MASK 0x0002 - -#define REG_GX_POWCNT_LCD_SHIFT 0 -#define REG_GX_POWCNT_LCD_SIZE 1 -#define REG_GX_POWCNT_LCD_MASK 0x0001 - -#define REG_GX_POWCNT_LCDB_SHIFT 8 -#define REG_GX_POWCNT_LCDB_SIZE 1 -#define REG_GX_POWCNT_LCDB_MASK 0x0100 - -#define REG_GX_POWCNT_E2DGB_SHIFT 9 -#define REG_GX_POWCNT_E2DGB_SIZE 1 -#define REG_GX_POWCNT_E2DGB_MASK 0x0200 - -#define REG_GX_POWCNT_DSEL_SHIFT 15 -#define REG_GX_POWCNT_DSEL_SIZE 1 -#define REG_GX_POWCNT_DSEL_MASK 0x8000 - -#ifndef SDK_ASM -#define REG_GX_POWCNT_FIELD(ge, re, e2dg, lcd, lcdb, e2dgb, dsel) \ - (u16)( \ - ((u32)(ge) << REG_GX_POWCNT_GE_SHIFT) | \ - ((u32)(re) << REG_GX_POWCNT_RE_SHIFT) | \ - ((u32)(e2dg) << REG_GX_POWCNT_E2DG_SHIFT) | \ - ((u32)(lcd) << REG_GX_POWCNT_LCD_SHIFT) | \ - ((u32)(lcdb) << REG_GX_POWCNT_LCDB_SHIFT) | \ - ((u32)(e2dgb) << REG_GX_POWCNT_E2DGB_SHIFT) | \ - ((u32)(dsel) << REG_GX_POWCNT_DSEL_SHIFT)) -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/hw/ARM9/ioreg_GXS.h b/subprojects/NitroSDK/include/nitro/hw/ARM9/ioreg_GXS.h deleted file mode 100644 index b32de284ae..0000000000 --- a/subprojects/NitroSDK/include/nitro/hw/ARM9/ioreg_GXS.h +++ /dev/null @@ -1,120 +0,0 @@ -#ifndef NITRO_HW_ARM9_IOREG_GXS_H_ -#define NITRO_HW_ARM9_IOREG_GXS_H_ - -#ifndef SDK_ASM -#include -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define REG_DB_DISPCNT_OFFSET 0x1000 -#define REG_DB_DISPCNT_ADDR (HW_REG_BASE + REG_DB_DISPCNT_OFFSET) -#define reg_GXS_DB_DISPCNT (*( REGType32v *)REG_DB_DISPCNT_ADDR) - -#define REG_DB_MASTER_BRIGHT_OFFSET 0x106c -#define REG_DB_MASTER_BRIGHT_ADDR (HW_REG_BASE + REG_DB_MASTER_BRIGHT_OFFSET) -#define reg_GXS_DB_MASTER_BRIGHT (*( REGType16v *)REG_DB_MASTER_BRIGHT_ADDR) - -#define REG_GXS_DB_DISPCNT_O_SHIFT 31 -#define REG_GXS_DB_DISPCNT_O_SIZE 1 -#define REG_GXS_DB_DISPCNT_O_MASK 0x80000000 - -#define REG_GXS_DB_DISPCNT_BG_SHIFT 30 -#define REG_GXS_DB_DISPCNT_BG_SIZE 1 -#define REG_GXS_DB_DISPCNT_BG_MASK 0x40000000 - -#define REG_GXS_DB_DISPCNT_OH_SHIFT 23 -#define REG_GXS_DB_DISPCNT_OH_SIZE 1 -#define REG_GXS_DB_DISPCNT_OH_MASK 0x00800000 - -#define REG_GXS_DB_DISPCNT_EXOBJ_SHIFT 20 -#define REG_GXS_DB_DISPCNT_EXOBJ_SIZE 2 -#define REG_GXS_DB_DISPCNT_EXOBJ_MASK 0x00300000 - -#define REG_GXS_DB_DISPCNT_MODE_SHIFT 16 -#define REG_GXS_DB_DISPCNT_MODE_SIZE 1 -#define REG_GXS_DB_DISPCNT_MODE_MASK 0x00010000 - -#define REG_GXS_DB_DISPCNT_OW_SHIFT 15 -#define REG_GXS_DB_DISPCNT_OW_SIZE 1 -#define REG_GXS_DB_DISPCNT_OW_MASK 0x00008000 - -#define REG_GXS_DB_DISPCNT_W1_SHIFT 14 -#define REG_GXS_DB_DISPCNT_W1_SIZE 1 -#define REG_GXS_DB_DISPCNT_W1_MASK 0x00004000 - -#define REG_GXS_DB_DISPCNT_W0_SHIFT 13 -#define REG_GXS_DB_DISPCNT_W0_SIZE 1 -#define REG_GXS_DB_DISPCNT_W0_MASK 0x00002000 - -#define REG_GXS_DB_DISPCNT_DISPLAY_SHIFT 8 -#define REG_GXS_DB_DISPCNT_DISPLAY_SIZE 5 -#define REG_GXS_DB_DISPCNT_DISPLAY_MASK 0x00001f00 - -#define REG_GXS_DB_DISPCNT_BLANK_SHIFT 7 -#define REG_GXS_DB_DISPCNT_BLANK_SIZE 1 -#define REG_GXS_DB_DISPCNT_BLANK_MASK 0x00000080 - -#define REG_GXS_DB_DISPCNT_OBJMAP_SHIFT 4 -#define REG_GXS_DB_DISPCNT_OBJMAP_SIZE 3 -#define REG_GXS_DB_DISPCNT_OBJMAP_MASK 0x00000070 - -#define REG_GXS_DB_DISPCNT_BGMODE_SHIFT 0 -#define REG_GXS_DB_DISPCNT_BGMODE_SIZE 3 -#define REG_GXS_DB_DISPCNT_BGMODE_MASK 0x00000007 - -#define REG_GXS_DB_DISPCNT_OBJMAP_CH_SHIFT 4 -#define REG_GXS_DB_DISPCNT_OBJMAP_CH_SIZE 1 -#define REG_GXS_DB_DISPCNT_OBJMAP_CH_MASK 0x00000010 - -#define REG_GXS_DB_DISPCNT_OBJMAP_BM_SHIFT 5 -#define REG_GXS_DB_DISPCNT_OBJMAP_BM_SIZE 2 -#define REG_GXS_DB_DISPCNT_OBJMAP_BM_MASK 0x00000060 - -#define REG_GXS_DB_DISPCNT_EXOBJ_CH_SHIFT 20 -#define REG_GXS_DB_DISPCNT_EXOBJ_CH_SIZE 2 -#define REG_GXS_DB_DISPCNT_EXOBJ_CH_MASK 0x00300000 - -#ifndef SDK_ASM -#define REG_GXS_DB_DISPCNT_FIELD(o, bg, oh, exobj, mode, ow, w1, w0, display, blank, objmap, bgmode, objmap_ch, objmap_bm, exobj_ch) \ - (u32)( \ - ((u32)(o) << REG_GXS_DB_DISPCNT_O_SHIFT) | \ - ((u32)(bg) << REG_GXS_DB_DISPCNT_BG_SHIFT) | \ - ((u32)(oh) << REG_GXS_DB_DISPCNT_OH_SHIFT) | \ - ((u32)(exobj) << REG_GXS_DB_DISPCNT_EXOBJ_SHIFT) | \ - ((u32)(mode) << REG_GXS_DB_DISPCNT_MODE_SHIFT) | \ - ((u32)(ow) << REG_GXS_DB_DISPCNT_OW_SHIFT) | \ - ((u32)(w1) << REG_GXS_DB_DISPCNT_W1_SHIFT) | \ - ((u32)(w0) << REG_GXS_DB_DISPCNT_W0_SHIFT) | \ - ((u32)(display) << REG_GXS_DB_DISPCNT_DISPLAY_SHIFT) | \ - ((u32)(blank) << REG_GXS_DB_DISPCNT_BLANK_SHIFT) | \ - ((u32)(objmap) << REG_GXS_DB_DISPCNT_OBJMAP_SHIFT) | \ - ((u32)(bgmode) << REG_GXS_DB_DISPCNT_BGMODE_SHIFT) | \ - ((u32)(objmap_ch) << REG_GXS_DB_DISPCNT_OBJMAP_CH_SHIFT) | \ - ((u32)(objmap_bm) << REG_GXS_DB_DISPCNT_OBJMAP_BM_SHIFT) | \ - ((u32)(exobj_ch) << REG_GXS_DB_DISPCNT_EXOBJ_CH_SHIFT)) -#endif - -#define REG_GXS_DB_MASTER_BRIGHT_E_MOD_SHIFT 14 -#define REG_GXS_DB_MASTER_BRIGHT_E_MOD_SIZE 2 -#define REG_GXS_DB_MASTER_BRIGHT_E_MOD_MASK 0xc000 - -#define REG_GXS_DB_MASTER_BRIGHT_E_VALUE_SHIFT 0 -#define REG_GXS_DB_MASTER_BRIGHT_E_VALUE_SIZE 5 -#define REG_GXS_DB_MASTER_BRIGHT_E_VALUE_MASK 0x001f - -#ifndef SDK_ASM -#define REG_GXS_DB_MASTER_BRIGHT_FIELD(e_mod, e_value) \ - (u16)( \ - ((u32)(e_mod) << REG_GXS_DB_MASTER_BRIGHT_E_MOD_SHIFT) | \ - ((u32)(e_value) << REG_GXS_DB_MASTER_BRIGHT_E_VALUE_SHIFT)) -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/hw/ARM9/ioreg_MI.h b/subprojects/NitroSDK/include/nitro/hw/ARM9/ioreg_MI.h deleted file mode 100644 index 36aa2230cf..0000000000 --- a/subprojects/NitroSDK/include/nitro/hw/ARM9/ioreg_MI.h +++ /dev/null @@ -1,549 +0,0 @@ -#ifndef NITRO_HW_ARM9_IOREG_MI_H_ -#define NITRO_HW_ARM9_IOREG_MI_H_ - -#ifndef SDK_ASM -#include -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define REG_DMA0SAD_OFFSET 0x0b0 -#define REG_DMA0SAD_ADDR (HW_REG_BASE + REG_DMA0SAD_OFFSET) -#define reg_MI_DMA0SAD (*( REGType32v *)REG_DMA0SAD_ADDR) - -#define REG_DMA0DAD_OFFSET 0x0b4 -#define REG_DMA0DAD_ADDR (HW_REG_BASE + REG_DMA0DAD_OFFSET) -#define reg_MI_DMA0DAD (*( REGType32v *)REG_DMA0DAD_ADDR) - -#define REG_DMA0CNT_OFFSET 0x0b8 -#define REG_DMA0CNT_ADDR (HW_REG_BASE + REG_DMA0CNT_OFFSET) -#define reg_MI_DMA0CNT (*( REGType32v *)REG_DMA0CNT_ADDR) - -#define REG_DMA1SAD_OFFSET 0x0bc -#define REG_DMA1SAD_ADDR (HW_REG_BASE + REG_DMA1SAD_OFFSET) -#define reg_MI_DMA1SAD (*( REGType32v *)REG_DMA1SAD_ADDR) - -#define REG_DMA1DAD_OFFSET 0x0c0 -#define REG_DMA1DAD_ADDR (HW_REG_BASE + REG_DMA1DAD_OFFSET) -#define reg_MI_DMA1DAD (*( REGType32v *)REG_DMA1DAD_ADDR) - -#define REG_DMA1CNT_OFFSET 0x0c4 -#define REG_DMA1CNT_ADDR (HW_REG_BASE + REG_DMA1CNT_OFFSET) -#define reg_MI_DMA1CNT (*( REGType32v *)REG_DMA1CNT_ADDR) - -#define REG_DMA2SAD_OFFSET 0x0c8 -#define REG_DMA2SAD_ADDR (HW_REG_BASE + REG_DMA2SAD_OFFSET) -#define reg_MI_DMA2SAD (*( REGType32v *)REG_DMA2SAD_ADDR) - -#define REG_DMA2DAD_OFFSET 0x0cc -#define REG_DMA2DAD_ADDR (HW_REG_BASE + REG_DMA2DAD_OFFSET) -#define reg_MI_DMA2DAD (*( REGType32v *)REG_DMA2DAD_ADDR) - -#define REG_DMA2CNT_OFFSET 0x0d0 -#define REG_DMA2CNT_ADDR (HW_REG_BASE + REG_DMA2CNT_OFFSET) -#define reg_MI_DMA2CNT (*( REGType32v *)REG_DMA2CNT_ADDR) - -#define REG_DMA3SAD_OFFSET 0x0d4 -#define REG_DMA3SAD_ADDR (HW_REG_BASE + REG_DMA3SAD_OFFSET) -#define reg_MI_DMA3SAD (*( REGType32v *)REG_DMA3SAD_ADDR) - -#define REG_DMA3DAD_OFFSET 0x0d8 -#define REG_DMA3DAD_ADDR (HW_REG_BASE + REG_DMA3DAD_OFFSET) -#define reg_MI_DMA3DAD (*( REGType32v *)REG_DMA3DAD_ADDR) - -#define REG_DMA3CNT_OFFSET 0x0dc -#define REG_DMA3CNT_ADDR (HW_REG_BASE + REG_DMA3CNT_OFFSET) -#define reg_MI_DMA3CNT (*( REGType32v *)REG_DMA3CNT_ADDR) - -#define REG_DMA0_CLR_DATA_OFFSET 0x0e0 -#define REG_DMA0_CLR_DATA_ADDR (HW_REG_BASE + REG_DMA0_CLR_DATA_OFFSET) -#define reg_MI_DMA0_CLR_DATA (*( REGType32v *)REG_DMA0_CLR_DATA_ADDR) - -#define REG_DMA1_CLR_DATA_OFFSET 0x0e4 -#define REG_DMA1_CLR_DATA_ADDR (HW_REG_BASE + REG_DMA1_CLR_DATA_OFFSET) -#define reg_MI_DMA1_CLR_DATA (*( REGType32v *)REG_DMA1_CLR_DATA_ADDR) - -#define REG_DMA2_CLR_DATA_OFFSET 0x0e8 -#define REG_DMA2_CLR_DATA_ADDR (HW_REG_BASE + REG_DMA2_CLR_DATA_OFFSET) -#define reg_MI_DMA2_CLR_DATA (*( REGType32v *)REG_DMA2_CLR_DATA_ADDR) - -#define REG_DMA3_CLR_DATA_OFFSET 0x0ec -#define REG_DMA3_CLR_DATA_ADDR (HW_REG_BASE + REG_DMA3_CLR_DATA_OFFSET) -#define reg_MI_DMA3_CLR_DATA (*( REGType32v *)REG_DMA3_CLR_DATA_ADDR) - -#define REG_MCCNT0_OFFSET 0x1a0 -#define REG_MCCNT0_ADDR (HW_REG_BASE + REG_MCCNT0_OFFSET) -#define reg_MI_MCCNT0 (*( REGType16v *)REG_MCCNT0_ADDR) - -#define REG_MCD0_OFFSET 0x1a2 -#define REG_MCD0_ADDR (HW_REG_BASE + REG_MCD0_OFFSET) -#define reg_MI_MCD0 (*( REGType16v *)REG_MCD0_ADDR) - -#define REG_MCD1_OFFSET 0x100010 -#define REG_MCD1_ADDR (HW_REG_BASE + REG_MCD1_OFFSET) -#define reg_MI_MCD1 (*( REGType32v *)REG_MCD1_ADDR) - -#define REG_MCCNT1_OFFSET 0x1a4 -#define REG_MCCNT1_ADDR (HW_REG_BASE + REG_MCCNT1_OFFSET) -#define reg_MI_MCCNT1 (*( REGType32v *)REG_MCCNT1_ADDR) - -#define REG_MCCMD0_OFFSET 0x1a8 -#define REG_MCCMD0_ADDR (HW_REG_BASE + REG_MCCMD0_OFFSET) -#define reg_MI_MCCMD0 (*( REGType32v *)REG_MCCMD0_ADDR) - -#define REG_MCCMD1_OFFSET 0x1ac -#define REG_MCCMD1_ADDR (HW_REG_BASE + REG_MCCMD1_OFFSET) -#define reg_MI_MCCMD1 (*( REGType32v *)REG_MCCMD1_ADDR) - -#define REG_EXMEMCNT_OFFSET 0x204 -#define REG_EXMEMCNT_ADDR (HW_REG_BASE + REG_EXMEMCNT_OFFSET) -#define reg_MI_EXMEMCNT (*( REGType16v *)REG_EXMEMCNT_ADDR) - -#define REG_MI_DMA0SAD_DMASRC_SHIFT 0 -#define REG_MI_DMA0SAD_DMASRC_SIZE 28 -#define REG_MI_DMA0SAD_DMASRC_MASK 0x0fffffff - -#ifndef SDK_ASM -#define REG_MI_DMA0SAD_FIELD(dmasrc) \ - (u32)( \ - ((u32)(dmasrc) << REG_MI_DMA0SAD_DMASRC_SHIFT)) -#endif - -#define REG_MI_DMA0DAD_DMADEST_SHIFT 0 -#define REG_MI_DMA0DAD_DMADEST_SIZE 28 -#define REG_MI_DMA0DAD_DMADEST_MASK 0x0fffffff - -#ifndef SDK_ASM -#define REG_MI_DMA0DAD_FIELD(dmadest) \ - (u32)( \ - ((u32)(dmadest) << REG_MI_DMA0DAD_DMADEST_SHIFT)) -#endif - -#define REG_MI_DMA0CNT_E_SHIFT 31 -#define REG_MI_DMA0CNT_E_SIZE 1 -#define REG_MI_DMA0CNT_E_MASK 0x80000000 - -#define REG_MI_DMA0CNT_I_SHIFT 30 -#define REG_MI_DMA0CNT_I_SIZE 1 -#define REG_MI_DMA0CNT_I_MASK 0x40000000 - -#define REG_MI_DMA0CNT_MODE_SHIFT 27 -#define REG_MI_DMA0CNT_MODE_SIZE 3 -#define REG_MI_DMA0CNT_MODE_MASK 0x38000000 - -#define REG_MI_DMA0CNT_SB_SHIFT 26 -#define REG_MI_DMA0CNT_SB_SIZE 1 -#define REG_MI_DMA0CNT_SB_MASK 0x04000000 - -#define REG_MI_DMA0CNT_CM_SHIFT 25 -#define REG_MI_DMA0CNT_CM_SIZE 1 -#define REG_MI_DMA0CNT_CM_MASK 0x02000000 - -#define REG_MI_DMA0CNT_SAR_SHIFT 23 -#define REG_MI_DMA0CNT_SAR_SIZE 2 -#define REG_MI_DMA0CNT_SAR_MASK 0x01800000 - -#define REG_MI_DMA0CNT_DAR_SHIFT 21 -#define REG_MI_DMA0CNT_DAR_SIZE 2 -#define REG_MI_DMA0CNT_DAR_MASK 0x00600000 - -#define REG_MI_DMA0CNT_WORDCNT_SHIFT 0 -#define REG_MI_DMA0CNT_WORDCNT_SIZE 21 -#define REG_MI_DMA0CNT_WORDCNT_MASK 0x001fffff - -#ifndef SDK_ASM -#define REG_MI_DMA0CNT_FIELD(e, i, mode, sb, cm, sar, dar, wordcnt) \ - (u32)( \ - ((u32)(e) << REG_MI_DMA0CNT_E_SHIFT) | \ - ((u32)(i) << REG_MI_DMA0CNT_I_SHIFT) | \ - ((u32)(mode) << REG_MI_DMA0CNT_MODE_SHIFT) | \ - ((u32)(sb) << REG_MI_DMA0CNT_SB_SHIFT) | \ - ((u32)(cm) << REG_MI_DMA0CNT_CM_SHIFT) | \ - ((u32)(sar) << REG_MI_DMA0CNT_SAR_SHIFT) | \ - ((u32)(dar) << REG_MI_DMA0CNT_DAR_SHIFT) | \ - ((u32)(wordcnt) << REG_MI_DMA0CNT_WORDCNT_SHIFT)) -#endif - -#define REG_MI_DMA1SAD_DMASRC_SHIFT 0 -#define REG_MI_DMA1SAD_DMASRC_SIZE 28 -#define REG_MI_DMA1SAD_DMASRC_MASK 0x0fffffff - -#ifndef SDK_ASM -#define REG_MI_DMA1SAD_FIELD(dmasrc) \ - (u32)( \ - ((u32)(dmasrc) << REG_MI_DMA1SAD_DMASRC_SHIFT)) -#endif - -#define REG_MI_DMA1DAD_DMADEST_SHIFT 0 -#define REG_MI_DMA1DAD_DMADEST_SIZE 28 -#define REG_MI_DMA1DAD_DMADEST_MASK 0x0fffffff - -#ifndef SDK_ASM -#define REG_MI_DMA1DAD_FIELD(dmadest) \ - (u32)( \ - ((u32)(dmadest) << REG_MI_DMA1DAD_DMADEST_SHIFT)) -#endif - -#define REG_MI_DMA1CNT_E_SHIFT 31 -#define REG_MI_DMA1CNT_E_SIZE 1 -#define REG_MI_DMA1CNT_E_MASK 0x80000000 - -#define REG_MI_DMA1CNT_I_SHIFT 30 -#define REG_MI_DMA1CNT_I_SIZE 1 -#define REG_MI_DMA1CNT_I_MASK 0x40000000 - -#define REG_MI_DMA1CNT_MODE_SHIFT 27 -#define REG_MI_DMA1CNT_MODE_SIZE 3 -#define REG_MI_DMA1CNT_MODE_MASK 0x38000000 - -#define REG_MI_DMA1CNT_SB_SHIFT 26 -#define REG_MI_DMA1CNT_SB_SIZE 1 -#define REG_MI_DMA1CNT_SB_MASK 0x04000000 - -#define REG_MI_DMA1CNT_CM_SHIFT 25 -#define REG_MI_DMA1CNT_CM_SIZE 1 -#define REG_MI_DMA1CNT_CM_MASK 0x02000000 - -#define REG_MI_DMA1CNT_SAR_SHIFT 23 -#define REG_MI_DMA1CNT_SAR_SIZE 2 -#define REG_MI_DMA1CNT_SAR_MASK 0x01800000 - -#define REG_MI_DMA1CNT_DAR_SHIFT 21 -#define REG_MI_DMA1CNT_DAR_SIZE 2 -#define REG_MI_DMA1CNT_DAR_MASK 0x00600000 - -#define REG_MI_DMA1CNT_WORDCNT_SHIFT 0 -#define REG_MI_DMA1CNT_WORDCNT_SIZE 21 -#define REG_MI_DMA1CNT_WORDCNT_MASK 0x001fffff - -#ifndef SDK_ASM -#define REG_MI_DMA1CNT_FIELD(e, i, mode, sb, cm, sar, dar, wordcnt) \ - (u32)( \ - ((u32)(e) << REG_MI_DMA1CNT_E_SHIFT) | \ - ((u32)(i) << REG_MI_DMA1CNT_I_SHIFT) | \ - ((u32)(mode) << REG_MI_DMA1CNT_MODE_SHIFT) | \ - ((u32)(sb) << REG_MI_DMA1CNT_SB_SHIFT) | \ - ((u32)(cm) << REG_MI_DMA1CNT_CM_SHIFT) | \ - ((u32)(sar) << REG_MI_DMA1CNT_SAR_SHIFT) | \ - ((u32)(dar) << REG_MI_DMA1CNT_DAR_SHIFT) | \ - ((u32)(wordcnt) << REG_MI_DMA1CNT_WORDCNT_SHIFT)) -#endif - -#define REG_MI_DMA2SAD_DMASRC_SHIFT 0 -#define REG_MI_DMA2SAD_DMASRC_SIZE 28 -#define REG_MI_DMA2SAD_DMASRC_MASK 0x0fffffff - -#ifndef SDK_ASM -#define REG_MI_DMA2SAD_FIELD(dmasrc) \ - (u32)( \ - ((u32)(dmasrc) << REG_MI_DMA2SAD_DMASRC_SHIFT)) -#endif - -#define REG_MI_DMA2DAD_DMADEST_SHIFT 0 -#define REG_MI_DMA2DAD_DMADEST_SIZE 28 -#define REG_MI_DMA2DAD_DMADEST_MASK 0x0fffffff - -#ifndef SDK_ASM -#define REG_MI_DMA2DAD_FIELD(dmadest) \ - (u32)( \ - ((u32)(dmadest) << REG_MI_DMA2DAD_DMADEST_SHIFT)) -#endif - -#define REG_MI_DMA2CNT_E_SHIFT 31 -#define REG_MI_DMA2CNT_E_SIZE 1 -#define REG_MI_DMA2CNT_E_MASK 0x80000000 - -#define REG_MI_DMA2CNT_I_SHIFT 30 -#define REG_MI_DMA2CNT_I_SIZE 1 -#define REG_MI_DMA2CNT_I_MASK 0x40000000 - -#define REG_MI_DMA2CNT_MODE_SHIFT 27 -#define REG_MI_DMA2CNT_MODE_SIZE 3 -#define REG_MI_DMA2CNT_MODE_MASK 0x38000000 - -#define REG_MI_DMA2CNT_SB_SHIFT 26 -#define REG_MI_DMA2CNT_SB_SIZE 1 -#define REG_MI_DMA2CNT_SB_MASK 0x04000000 - -#define REG_MI_DMA2CNT_CM_SHIFT 25 -#define REG_MI_DMA2CNT_CM_SIZE 1 -#define REG_MI_DMA2CNT_CM_MASK 0x02000000 - -#define REG_MI_DMA2CNT_SAR_SHIFT 23 -#define REG_MI_DMA2CNT_SAR_SIZE 2 -#define REG_MI_DMA2CNT_SAR_MASK 0x01800000 - -#define REG_MI_DMA2CNT_DAR_SHIFT 21 -#define REG_MI_DMA2CNT_DAR_SIZE 2 -#define REG_MI_DMA2CNT_DAR_MASK 0x00600000 - -#define REG_MI_DMA2CNT_WORDCNT_SHIFT 0 -#define REG_MI_DMA2CNT_WORDCNT_SIZE 21 -#define REG_MI_DMA2CNT_WORDCNT_MASK 0x001fffff - -#ifndef SDK_ASM -#define REG_MI_DMA2CNT_FIELD(e, i, mode, sb, cm, sar, dar, wordcnt) \ - (u32)( \ - ((u32)(e) << REG_MI_DMA2CNT_E_SHIFT) | \ - ((u32)(i) << REG_MI_DMA2CNT_I_SHIFT) | \ - ((u32)(mode) << REG_MI_DMA2CNT_MODE_SHIFT) | \ - ((u32)(sb) << REG_MI_DMA2CNT_SB_SHIFT) | \ - ((u32)(cm) << REG_MI_DMA2CNT_CM_SHIFT) | \ - ((u32)(sar) << REG_MI_DMA2CNT_SAR_SHIFT) | \ - ((u32)(dar) << REG_MI_DMA2CNT_DAR_SHIFT) | \ - ((u32)(wordcnt) << REG_MI_DMA2CNT_WORDCNT_SHIFT)) -#endif - -#define REG_MI_DMA3SAD_DMASRC_SHIFT 0 -#define REG_MI_DMA3SAD_DMASRC_SIZE 28 -#define REG_MI_DMA3SAD_DMASRC_MASK 0x0fffffff - -#ifndef SDK_ASM -#define REG_MI_DMA3SAD_FIELD(dmasrc) \ - (u32)( \ - ((u32)(dmasrc) << REG_MI_DMA3SAD_DMASRC_SHIFT)) -#endif - -#define REG_MI_DMA3DAD_DMADEST_SHIFT 0 -#define REG_MI_DMA3DAD_DMADEST_SIZE 28 -#define REG_MI_DMA3DAD_DMADEST_MASK 0x0fffffff - -#ifndef SDK_ASM -#define REG_MI_DMA3DAD_FIELD(dmadest) \ - (u32)( \ - ((u32)(dmadest) << REG_MI_DMA3DAD_DMADEST_SHIFT)) -#endif - -#define REG_MI_DMA3CNT_E_SHIFT 31 -#define REG_MI_DMA3CNT_E_SIZE 1 -#define REG_MI_DMA3CNT_E_MASK 0x80000000 - -#define REG_MI_DMA3CNT_I_SHIFT 30 -#define REG_MI_DMA3CNT_I_SIZE 1 -#define REG_MI_DMA3CNT_I_MASK 0x40000000 - -#define REG_MI_DMA3CNT_MODE_SHIFT 27 -#define REG_MI_DMA3CNT_MODE_SIZE 3 -#define REG_MI_DMA3CNT_MODE_MASK 0x38000000 - -#define REG_MI_DMA3CNT_SB_SHIFT 26 -#define REG_MI_DMA3CNT_SB_SIZE 1 -#define REG_MI_DMA3CNT_SB_MASK 0x04000000 - -#define REG_MI_DMA3CNT_CM_SHIFT 25 -#define REG_MI_DMA3CNT_CM_SIZE 1 -#define REG_MI_DMA3CNT_CM_MASK 0x02000000 - -#define REG_MI_DMA3CNT_SAR_SHIFT 23 -#define REG_MI_DMA3CNT_SAR_SIZE 2 -#define REG_MI_DMA3CNT_SAR_MASK 0x01800000 - -#define REG_MI_DMA3CNT_DAR_SHIFT 21 -#define REG_MI_DMA3CNT_DAR_SIZE 2 -#define REG_MI_DMA3CNT_DAR_MASK 0x00600000 - -#define REG_MI_DMA3CNT_WORDCNT_SHIFT 0 -#define REG_MI_DMA3CNT_WORDCNT_SIZE 21 -#define REG_MI_DMA3CNT_WORDCNT_MASK 0x001fffff - -#ifndef SDK_ASM -#define REG_MI_DMA3CNT_FIELD(e, i, mode, sb, cm, sar, dar, wordcnt) \ - (u32)( \ - ((u32)(e) << REG_MI_DMA3CNT_E_SHIFT) | \ - ((u32)(i) << REG_MI_DMA3CNT_I_SHIFT) | \ - ((u32)(mode) << REG_MI_DMA3CNT_MODE_SHIFT) | \ - ((u32)(sb) << REG_MI_DMA3CNT_SB_SHIFT) | \ - ((u32)(cm) << REG_MI_DMA3CNT_CM_SHIFT) | \ - ((u32)(sar) << REG_MI_DMA3CNT_SAR_SHIFT) | \ - ((u32)(dar) << REG_MI_DMA3CNT_DAR_SHIFT) | \ - ((u32)(wordcnt) << REG_MI_DMA3CNT_WORDCNT_SHIFT)) -#endif - -#define REG_MI_MCCNT0_E_SHIFT 15 -#define REG_MI_MCCNT0_E_SIZE 1 -#define REG_MI_MCCNT0_E_MASK 0x8000 - -#define REG_MI_MCCNT0_I_SHIFT 14 -#define REG_MI_MCCNT0_I_SIZE 1 -#define REG_MI_MCCNT0_I_MASK 0x4000 - -#define REG_MI_MCCNT0_SEL_SHIFT 13 -#define REG_MI_MCCNT0_SEL_SIZE 1 -#define REG_MI_MCCNT0_SEL_MASK 0x2000 - -#define REG_MI_MCCNT0_BUSY_SHIFT 7 -#define REG_MI_MCCNT0_BUSY_SIZE 1 -#define REG_MI_MCCNT0_BUSY_MASK 0x0080 - -#define REG_MI_MCCNT0_MODE_SHIFT 6 -#define REG_MI_MCCNT0_MODE_SIZE 1 -#define REG_MI_MCCNT0_MODE_MASK 0x0040 - -#define REG_MI_MCCNT0_BAUDRATE_SHIFT 0 -#define REG_MI_MCCNT0_BAUDRATE_SIZE 2 -#define REG_MI_MCCNT0_BAUDRATE_MASK 0x0003 - -#ifndef SDK_ASM -#define REG_MI_MCCNT0_FIELD(e, i, sel, busy, mode, baudrate) \ - (u16)( \ - ((u32)(e) << REG_MI_MCCNT0_E_SHIFT) | \ - ((u32)(i) << REG_MI_MCCNT0_I_SHIFT) | \ - ((u32)(sel) << REG_MI_MCCNT0_SEL_SHIFT) | \ - ((u32)(busy) << REG_MI_MCCNT0_BUSY_SHIFT) | \ - ((u32)(mode) << REG_MI_MCCNT0_MODE_SHIFT) | \ - ((u32)(baudrate) << REG_MI_MCCNT0_BAUDRATE_SHIFT)) -#endif - -#define REG_MI_MCD0_DATA_SHIFT 0 -#define REG_MI_MCD0_DATA_SIZE 8 -#define REG_MI_MCD0_DATA_MASK 0x00ff - -#ifndef SDK_ASM -#define REG_MI_MCD0_FIELD(data) \ - (u16)( \ - ((u32)(data) << REG_MI_MCD0_DATA_SHIFT)) -#endif - -#define REG_MI_MCCNT1_START_SHIFT 31 -#define REG_MI_MCCNT1_START_SIZE 1 -#define REG_MI_MCCNT1_START_MASK 0x80000000 - -#define REG_MI_MCCNT1_WR_SHIFT 30 -#define REG_MI_MCCNT1_WR_SIZE 1 -#define REG_MI_MCCNT1_WR_MASK 0x40000000 - -#define REG_MI_MCCNT1_CT_SHIFT 27 -#define REG_MI_MCCNT1_CT_SIZE 1 -#define REG_MI_MCCNT1_CT_MASK 0x08000000 - -#define REG_MI_MCCNT1_PC_SHIFT 24 -#define REG_MI_MCCNT1_PC_SIZE 3 -#define REG_MI_MCCNT1_PC_MASK 0x07000000 - -#define REG_MI_MCCNT1_RDY_SHIFT 23 -#define REG_MI_MCCNT1_RDY_SIZE 1 -#define REG_MI_MCCNT1_RDY_MASK 0x00800000 - -#define REG_MI_MCCNT1_L2_SHIFT 16 -#define REG_MI_MCCNT1_L2_SIZE 6 -#define REG_MI_MCCNT1_L2_MASK 0x003f0000 - -#define REG_MI_MCCNT1_L1_SHIFT 0 -#define REG_MI_MCCNT1_L1_SIZE 13 -#define REG_MI_MCCNT1_L1_MASK 0x00001fff - -#ifndef SDK_ASM -#define REG_MI_MCCNT1_FIELD(start, wr, ct, pc, rdy, l2, l1) \ - (u32)( \ - ((u32)(start) << REG_MI_MCCNT1_START_SHIFT) | \ - ((u32)(wr) << REG_MI_MCCNT1_WR_SHIFT) | \ - ((u32)(ct) << REG_MI_MCCNT1_CT_SHIFT) | \ - ((u32)(pc) << REG_MI_MCCNT1_PC_SHIFT) | \ - ((u32)(rdy) << REG_MI_MCCNT1_RDY_SHIFT) | \ - ((u32)(l2) << REG_MI_MCCNT1_L2_SHIFT) | \ - ((u32)(l1) << REG_MI_MCCNT1_L1_SHIFT)) -#endif - -#define REG_MI_MCCMD0_CMD3_SHIFT 24 -#define REG_MI_MCCMD0_CMD3_SIZE 8 -#define REG_MI_MCCMD0_CMD3_MASK 0xff000000 - -#define REG_MI_MCCMD0_CMD2_SHIFT 16 -#define REG_MI_MCCMD0_CMD2_SIZE 8 -#define REG_MI_MCCMD0_CMD2_MASK 0x00ff0000 - -#define REG_MI_MCCMD0_CMD1_SHIFT 8 -#define REG_MI_MCCMD0_CMD1_SIZE 8 -#define REG_MI_MCCMD0_CMD1_MASK 0x0000ff00 - -#define REG_MI_MCCMD0_CMD0_SHIFT 0 -#define REG_MI_MCCMD0_CMD0_SIZE 8 -#define REG_MI_MCCMD0_CMD0_MASK 0x000000ff - -#ifndef SDK_ASM -#define REG_MI_MCCMD0_FIELD(cmd3, cmd2, cmd1, cmd0) \ - (u32)( \ - ((u32)(cmd3) << REG_MI_MCCMD0_CMD3_SHIFT) | \ - ((u32)(cmd2) << REG_MI_MCCMD0_CMD2_SHIFT) | \ - ((u32)(cmd1) << REG_MI_MCCMD0_CMD1_SHIFT) | \ - ((u32)(cmd0) << REG_MI_MCCMD0_CMD0_SHIFT)) -#endif - -#define REG_MI_MCCMD1_CMD7_SHIFT 24 -#define REG_MI_MCCMD1_CMD7_SIZE 8 -#define REG_MI_MCCMD1_CMD7_MASK 0xff000000 - -#define REG_MI_MCCMD1_CMD6_SHIFT 16 -#define REG_MI_MCCMD1_CMD6_SIZE 8 -#define REG_MI_MCCMD1_CMD6_MASK 0x00ff0000 - -#define REG_MI_MCCMD1_CMD5_SHIFT 8 -#define REG_MI_MCCMD1_CMD5_SIZE 8 -#define REG_MI_MCCMD1_CMD5_MASK 0x0000ff00 - -#define REG_MI_MCCMD1_CMD4_SHIFT 0 -#define REG_MI_MCCMD1_CMD4_SIZE 8 -#define REG_MI_MCCMD1_CMD4_MASK 0x000000ff - -#ifndef SDK_ASM -#define REG_MI_MCCMD1_FIELD(cmd7, cmd6, cmd5, cmd4) \ - (u32)( \ - ((u32)(cmd7) << REG_MI_MCCMD1_CMD7_SHIFT) | \ - ((u32)(cmd6) << REG_MI_MCCMD1_CMD6_SHIFT) | \ - ((u32)(cmd5) << REG_MI_MCCMD1_CMD5_SHIFT) | \ - ((u32)(cmd4) << REG_MI_MCCMD1_CMD4_SHIFT)) -#endif - -#define REG_MI_EXMEMCNT_EP_SHIFT 15 -#define REG_MI_EXMEMCNT_EP_SIZE 1 -#define REG_MI_EXMEMCNT_EP_MASK 0x8000 - -#define REG_MI_EXMEMCNT_IFM_SHIFT 14 -#define REG_MI_EXMEMCNT_IFM_SIZE 1 -#define REG_MI_EXMEMCNT_IFM_MASK 0x4000 - -#define REG_MI_EXMEMCNT_MP_SHIFT 11 -#define REG_MI_EXMEMCNT_MP_SIZE 1 -#define REG_MI_EXMEMCNT_MP_MASK 0x0800 - -#define REG_MI_EXMEMCNT_CP_SHIFT 7 -#define REG_MI_EXMEMCNT_CP_SIZE 1 -#define REG_MI_EXMEMCNT_CP_MASK 0x0080 - -#define REG_MI_EXMEMCNT_PHI_SHIFT 5 -#define REG_MI_EXMEMCNT_PHI_SIZE 2 -#define REG_MI_EXMEMCNT_PHI_MASK 0x0060 - -#define REG_MI_EXMEMCNT_ROM2nd_SHIFT 4 -#define REG_MI_EXMEMCNT_ROM2nd_SIZE 1 -#define REG_MI_EXMEMCNT_ROM2nd_MASK 0x0010 - -#define REG_MI_EXMEMCNT_ROM1st_SHIFT 2 -#define REG_MI_EXMEMCNT_ROM1st_SIZE 2 -#define REG_MI_EXMEMCNT_ROM1st_MASK 0x000c - -#define REG_MI_EXMEMCNT_RAM_SHIFT 0 -#define REG_MI_EXMEMCNT_RAM_SIZE 2 -#define REG_MI_EXMEMCNT_RAM_MASK 0x0003 - -#ifndef SDK_ASM -#define REG_MI_EXMEMCNT_FIELD(ep, ifm, mp, cp, phi, rom2nd, rom1st, ram) \ - (u16)( \ - ((u32)(ep) << REG_MI_EXMEMCNT_EP_SHIFT) | \ - ((u32)(ifm) << REG_MI_EXMEMCNT_IFM_SHIFT) | \ - ((u32)(mp) << REG_MI_EXMEMCNT_MP_SHIFT) | \ - ((u32)(cp) << REG_MI_EXMEMCNT_CP_SHIFT) | \ - ((u32)(phi) << REG_MI_EXMEMCNT_PHI_SHIFT) | \ - ((u32)(rom2nd) << REG_MI_EXMEMCNT_ROM2nd_SHIFT) | \ - ((u32)(rom1st) << REG_MI_EXMEMCNT_ROM1st_SHIFT) | \ - ((u32)(ram) << REG_MI_EXMEMCNT_RAM_SHIFT)) -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/hw/ARM9/ioreg_OS.h b/subprojects/NitroSDK/include/nitro/hw/ARM9/ioreg_OS.h deleted file mode 100644 index 8215b3e3fc..0000000000 --- a/subprojects/NitroSDK/include/nitro/hw/ARM9/ioreg_OS.h +++ /dev/null @@ -1,425 +0,0 @@ -#ifndef NITRO_HW_ARM9_IOREG_OS_H_ -#define NITRO_HW_ARM9_IOREG_OS_H_ - -#ifndef SDK_ASM -#include -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define REG_TM0CNT_L_OFFSET 0x100 -#define REG_TM0CNT_L_ADDR (HW_REG_BASE + REG_TM0CNT_L_OFFSET) -#define reg_OS_TM0CNT_L (*( REGType16v *)REG_TM0CNT_L_ADDR) - -#define REG_TM0CNT_H_OFFSET 0x102 -#define REG_TM0CNT_H_ADDR (HW_REG_BASE + REG_TM0CNT_H_OFFSET) -#define reg_OS_TM0CNT_H (*( REGType16v *)REG_TM0CNT_H_ADDR) - -#define REG_TM1CNT_L_OFFSET 0x104 -#define REG_TM1CNT_L_ADDR (HW_REG_BASE + REG_TM1CNT_L_OFFSET) -#define reg_OS_TM1CNT_L (*( REGType16v *)REG_TM1CNT_L_ADDR) - -#define REG_TM1CNT_H_OFFSET 0x106 -#define REG_TM1CNT_H_ADDR (HW_REG_BASE + REG_TM1CNT_H_OFFSET) -#define reg_OS_TM1CNT_H (*( REGType16v *)REG_TM1CNT_H_ADDR) - -#define REG_TM2CNT_L_OFFSET 0x108 -#define REG_TM2CNT_L_ADDR (HW_REG_BASE + REG_TM2CNT_L_OFFSET) -#define reg_OS_TM2CNT_L (*( REGType16v *)REG_TM2CNT_L_ADDR) - -#define REG_TM2CNT_H_OFFSET 0x10a -#define REG_TM2CNT_H_ADDR (HW_REG_BASE + REG_TM2CNT_H_OFFSET) -#define reg_OS_TM2CNT_H (*( REGType16v *)REG_TM2CNT_H_ADDR) - -#define REG_TM3CNT_L_OFFSET 0x10c -#define REG_TM3CNT_L_ADDR (HW_REG_BASE + REG_TM3CNT_L_OFFSET) -#define reg_OS_TM3CNT_L (*( REGType16v *)REG_TM3CNT_L_ADDR) - -#define REG_TM3CNT_H_OFFSET 0x10e -#define REG_TM3CNT_H_ADDR (HW_REG_BASE + REG_TM3CNT_H_OFFSET) -#define reg_OS_TM3CNT_H (*( REGType16v *)REG_TM3CNT_H_ADDR) - -#define REG_IME_OFFSET 0x208 -#define REG_IME_ADDR (HW_REG_BASE + REG_IME_OFFSET) -#define reg_OS_IME (*( REGType16v *)REG_IME_ADDR) - -#define REG_IE_OFFSET 0x210 -#define REG_IE_ADDR (HW_REG_BASE + REG_IE_OFFSET) -#define reg_OS_IE (*( REGType32v *)REG_IE_ADDR) - -#define REG_IF_OFFSET 0x214 -#define REG_IF_ADDR (HW_REG_BASE + REG_IF_OFFSET) -#define reg_OS_IF (*( REGType32v *)REG_IF_ADDR) - -#define REG_PAUSE_OFFSET 0x300 -#define REG_PAUSE_ADDR (HW_REG_BASE + REG_PAUSE_OFFSET) -#define reg_OS_PAUSE (*( REGType16v *)REG_PAUSE_ADDR) - -#define REG_OS_TM0CNT_L_TIMER0CNT_SHIFT 0 -#define REG_OS_TM0CNT_L_TIMER0CNT_SIZE 16 -#define REG_OS_TM0CNT_L_TIMER0CNT_MASK 0xffff - -#ifndef SDK_ASM -#define REG_OS_TM0CNT_L_FIELD(timer0cnt) \ - (u16)( \ - ((u32)(timer0cnt) << REG_OS_TM0CNT_L_TIMER0CNT_SHIFT)) -#endif - -#define REG_OS_TM0CNT_H_E_SHIFT 7 -#define REG_OS_TM0CNT_H_E_SIZE 1 -#define REG_OS_TM0CNT_H_E_MASK 0x0080 - -#define REG_OS_TM0CNT_H_I_SHIFT 6 -#define REG_OS_TM0CNT_H_I_SIZE 1 -#define REG_OS_TM0CNT_H_I_MASK 0x0040 - -#define REG_OS_TM0CNT_H_PS_SHIFT 0 -#define REG_OS_TM0CNT_H_PS_SIZE 2 -#define REG_OS_TM0CNT_H_PS_MASK 0x0003 - -#ifndef SDK_ASM -#define REG_OS_TM0CNT_H_FIELD(e, i, ps) \ - (u16)( \ - ((u32)(e) << REG_OS_TM0CNT_H_E_SHIFT) | \ - ((u32)(i) << REG_OS_TM0CNT_H_I_SHIFT) | \ - ((u32)(ps) << REG_OS_TM0CNT_H_PS_SHIFT)) -#endif - -#define REG_OS_TM1CNT_L_TIMER1CNT_SHIFT 0 -#define REG_OS_TM1CNT_L_TIMER1CNT_SIZE 16 -#define REG_OS_TM1CNT_L_TIMER1CNT_MASK 0xffff - -#ifndef SDK_ASM -#define REG_OS_TM1CNT_L_FIELD(timer1cnt) \ - (u16)( \ - ((u32)(timer1cnt) << REG_OS_TM1CNT_L_TIMER1CNT_SHIFT)) -#endif - -#define REG_OS_TM1CNT_H_E_SHIFT 7 -#define REG_OS_TM1CNT_H_E_SIZE 1 -#define REG_OS_TM1CNT_H_E_MASK 0x0080 - -#define REG_OS_TM1CNT_H_I_SHIFT 6 -#define REG_OS_TM1CNT_H_I_SIZE 1 -#define REG_OS_TM1CNT_H_I_MASK 0x0040 - -#define REG_OS_TM1CNT_H_CH_SHIFT 2 -#define REG_OS_TM1CNT_H_CH_SIZE 1 -#define REG_OS_TM1CNT_H_CH_MASK 0x0004 - -#define REG_OS_TM1CNT_H_PS_SHIFT 0 -#define REG_OS_TM1CNT_H_PS_SIZE 2 -#define REG_OS_TM1CNT_H_PS_MASK 0x0003 - -#ifndef SDK_ASM -#define REG_OS_TM1CNT_H_FIELD(e, i, ch, ps) \ - (u16)( \ - ((u32)(e) << REG_OS_TM1CNT_H_E_SHIFT) | \ - ((u32)(i) << REG_OS_TM1CNT_H_I_SHIFT) | \ - ((u32)(ch) << REG_OS_TM1CNT_H_CH_SHIFT) | \ - ((u32)(ps) << REG_OS_TM1CNT_H_PS_SHIFT)) -#endif - -#define REG_OS_TM2CNT_L_TIMER2CNT_SHIFT 0 -#define REG_OS_TM2CNT_L_TIMER2CNT_SIZE 16 -#define REG_OS_TM2CNT_L_TIMER2CNT_MASK 0xffff - -#ifndef SDK_ASM -#define REG_OS_TM2CNT_L_FIELD(timer2cnt) \ - (u16)( \ - ((u32)(timer2cnt) << REG_OS_TM2CNT_L_TIMER2CNT_SHIFT)) -#endif - -#define REG_OS_TM2CNT_H_E_SHIFT 7 -#define REG_OS_TM2CNT_H_E_SIZE 1 -#define REG_OS_TM2CNT_H_E_MASK 0x0080 - -#define REG_OS_TM2CNT_H_I_SHIFT 6 -#define REG_OS_TM2CNT_H_I_SIZE 1 -#define REG_OS_TM2CNT_H_I_MASK 0x0040 - -#define REG_OS_TM2CNT_H_CH_SHIFT 2 -#define REG_OS_TM2CNT_H_CH_SIZE 1 -#define REG_OS_TM2CNT_H_CH_MASK 0x0004 - -#define REG_OS_TM2CNT_H_PS_SHIFT 0 -#define REG_OS_TM2CNT_H_PS_SIZE 2 -#define REG_OS_TM2CNT_H_PS_MASK 0x0003 - -#ifndef SDK_ASM -#define REG_OS_TM2CNT_H_FIELD(e, i, ch, ps) \ - (u16)( \ - ((u32)(e) << REG_OS_TM2CNT_H_E_SHIFT) | \ - ((u32)(i) << REG_OS_TM2CNT_H_I_SHIFT) | \ - ((u32)(ch) << REG_OS_TM2CNT_H_CH_SHIFT) | \ - ((u32)(ps) << REG_OS_TM2CNT_H_PS_SHIFT)) -#endif - -#define REG_OS_TM3CNT_L_TIMER2CNT_SHIFT 0 -#define REG_OS_TM3CNT_L_TIMER2CNT_SIZE 16 -#define REG_OS_TM3CNT_L_TIMER2CNT_MASK 0xffff - -#ifndef SDK_ASM -#define REG_OS_TM3CNT_L_FIELD(timer2cnt) \ - (u16)( \ - ((u32)(timer2cnt) << REG_OS_TM3CNT_L_TIMER2CNT_SHIFT)) -#endif - -#define REG_OS_TM3CNT_H_E_SHIFT 7 -#define REG_OS_TM3CNT_H_E_SIZE 1 -#define REG_OS_TM3CNT_H_E_MASK 0x0080 - -#define REG_OS_TM3CNT_H_I_SHIFT 6 -#define REG_OS_TM3CNT_H_I_SIZE 1 -#define REG_OS_TM3CNT_H_I_MASK 0x0040 - -#define REG_OS_TM3CNT_H_CH_SHIFT 2 -#define REG_OS_TM3CNT_H_CH_SIZE 1 -#define REG_OS_TM3CNT_H_CH_MASK 0x0004 - -#define REG_OS_TM3CNT_H_PS_SHIFT 0 -#define REG_OS_TM3CNT_H_PS_SIZE 2 -#define REG_OS_TM3CNT_H_PS_MASK 0x0003 - -#ifndef SDK_ASM -#define REG_OS_TM3CNT_H_FIELD(e, i, ch, ps) \ - (u16)( \ - ((u32)(e) << REG_OS_TM3CNT_H_E_SHIFT) | \ - ((u32)(i) << REG_OS_TM3CNT_H_I_SHIFT) | \ - ((u32)(ch) << REG_OS_TM3CNT_H_CH_SHIFT) | \ - ((u32)(ps) << REG_OS_TM3CNT_H_PS_SHIFT)) -#endif - -#define REG_OS_IME_IME_SHIFT 0 -#define REG_OS_IME_IME_SIZE 1 -#define REG_OS_IME_IME_MASK 0x0001 - -#ifndef SDK_ASM -#define REG_OS_IME_FIELD(ime) \ - (u16)( \ - ((u32)(ime) << REG_OS_IME_IME_SHIFT)) -#endif - -#define REG_OS_IE_GF_SHIFT 21 -#define REG_OS_IE_GF_SIZE 1 -#define REG_OS_IE_GF_MASK 0x00200000 - -#define REG_OS_IE_MI_SHIFT 20 -#define REG_OS_IE_MI_SIZE 1 -#define REG_OS_IE_MI_MASK 0x00100000 - -#define REG_OS_IE_MC_SHIFT 19 -#define REG_OS_IE_MC_SIZE 1 -#define REG_OS_IE_MC_MASK 0x00080000 - -#define REG_OS_IE_IFN_SHIFT 18 -#define REG_OS_IE_IFN_SIZE 1 -#define REG_OS_IE_IFN_MASK 0x00040000 - -#define REG_OS_IE_IFE_SHIFT 17 -#define REG_OS_IE_IFE_SIZE 1 -#define REG_OS_IE_IFE_MASK 0x00020000 - -#define REG_OS_IE_A7_SHIFT 16 -#define REG_OS_IE_A7_SIZE 1 -#define REG_OS_IE_A7_MASK 0x00010000 - -#define REG_OS_IE_I_D_SHIFT 13 -#define REG_OS_IE_I_D_SIZE 1 -#define REG_OS_IE_I_D_MASK 0x00002000 - -#define REG_OS_IE_K_SHIFT 12 -#define REG_OS_IE_K_SIZE 1 -#define REG_OS_IE_K_MASK 0x00001000 - -#define REG_OS_IE_D3_SHIFT 11 -#define REG_OS_IE_D3_SIZE 1 -#define REG_OS_IE_D3_MASK 0x00000800 - -#define REG_OS_IE_D2_SHIFT 10 -#define REG_OS_IE_D2_SIZE 1 -#define REG_OS_IE_D2_MASK 0x00000400 - -#define REG_OS_IE_D1_SHIFT 9 -#define REG_OS_IE_D1_SIZE 1 -#define REG_OS_IE_D1_MASK 0x00000200 - -#define REG_OS_IE_D0_SHIFT 8 -#define REG_OS_IE_D0_SIZE 1 -#define REG_OS_IE_D0_MASK 0x00000100 - -#define REG_OS_IE_T3_SHIFT 6 -#define REG_OS_IE_T3_SIZE 1 -#define REG_OS_IE_T3_MASK 0x00000040 - -#define REG_OS_IE_T2_SHIFT 5 -#define REG_OS_IE_T2_SIZE 1 -#define REG_OS_IE_T2_MASK 0x00000020 - -#define REG_OS_IE_T1_SHIFT 4 -#define REG_OS_IE_T1_SIZE 1 -#define REG_OS_IE_T1_MASK 0x00000010 - -#define REG_OS_IE_T0_SHIFT 3 -#define REG_OS_IE_T0_SIZE 1 -#define REG_OS_IE_T0_MASK 0x00000008 - -#define REG_OS_IE_VE_SHIFT 2 -#define REG_OS_IE_VE_SIZE 1 -#define REG_OS_IE_VE_MASK 0x00000004 - -#define REG_OS_IE_HB_SHIFT 1 -#define REG_OS_IE_HB_SIZE 1 -#define REG_OS_IE_HB_MASK 0x00000002 - -#define REG_OS_IE_VB_SHIFT 0 -#define REG_OS_IE_VB_SIZE 1 -#define REG_OS_IE_VB_MASK 0x00000001 - -#ifndef SDK_ASM -#define REG_OS_IE_FIELD(gf, mi, mc, ifn, ife, a7, i_d, k, d3, d2, d1, d0, t3, t2, t1, t0, ve, hb, vb) \ - (u32)( \ - ((u32)(gf) << REG_OS_IE_GF_SHIFT) | \ - ((u32)(mi) << REG_OS_IE_MI_SHIFT) | \ - ((u32)(mc) << REG_OS_IE_MC_SHIFT) | \ - ((u32)(ifn) << REG_OS_IE_IFN_SHIFT) | \ - ((u32)(ife) << REG_OS_IE_IFE_SHIFT) | \ - ((u32)(a7) << REG_OS_IE_A7_SHIFT) | \ - ((u32)(i_d) << REG_OS_IE_I_D_SHIFT) | \ - ((u32)(k) << REG_OS_IE_K_SHIFT) | \ - ((u32)(d3) << REG_OS_IE_D3_SHIFT) | \ - ((u32)(d2) << REG_OS_IE_D2_SHIFT) | \ - ((u32)(d1) << REG_OS_IE_D1_SHIFT) | \ - ((u32)(d0) << REG_OS_IE_D0_SHIFT) | \ - ((u32)(t3) << REG_OS_IE_T3_SHIFT) | \ - ((u32)(t2) << REG_OS_IE_T2_SHIFT) | \ - ((u32)(t1) << REG_OS_IE_T1_SHIFT) | \ - ((u32)(t0) << REG_OS_IE_T0_SHIFT) | \ - ((u32)(ve) << REG_OS_IE_VE_SHIFT) | \ - ((u32)(hb) << REG_OS_IE_HB_SHIFT) | \ - ((u32)(vb) << REG_OS_IE_VB_SHIFT)) -#endif - -#define REG_OS_IF_GF_SHIFT 21 -#define REG_OS_IF_GF_SIZE 1 -#define REG_OS_IF_GF_MASK 0x00200000 - -#define REG_OS_IF_MI_SHIFT 20 -#define REG_OS_IF_MI_SIZE 1 -#define REG_OS_IF_MI_MASK 0x00100000 - -#define REG_OS_IF_MC_SHIFT 19 -#define REG_OS_IF_MC_SIZE 1 -#define REG_OS_IF_MC_MASK 0x00080000 - -#define REG_OS_IF_IFN_SHIFT 18 -#define REG_OS_IF_IFN_SIZE 1 -#define REG_OS_IF_IFN_MASK 0x00040000 - -#define REG_OS_IF_IFE_SHIFT 17 -#define REG_OS_IF_IFE_SIZE 1 -#define REG_OS_IF_IFE_MASK 0x00020000 - -#define REG_OS_IF_A7_SHIFT 16 -#define REG_OS_IF_A7_SIZE 1 -#define REG_OS_IF_A7_MASK 0x00010000 - -#define REG_OS_IF_I_D_SHIFT 13 -#define REG_OS_IF_I_D_SIZE 1 -#define REG_OS_IF_I_D_MASK 0x00002000 - -#define REG_OS_IF_K_SHIFT 12 -#define REG_OS_IF_K_SIZE 1 -#define REG_OS_IF_K_MASK 0x00001000 - -#define REG_OS_IF_D3_SHIFT 11 -#define REG_OS_IF_D3_SIZE 1 -#define REG_OS_IF_D3_MASK 0x00000800 - -#define REG_OS_IF_D2_SHIFT 10 -#define REG_OS_IF_D2_SIZE 1 -#define REG_OS_IF_D2_MASK 0x00000400 - -#define REG_OS_IF_D1_SHIFT 9 -#define REG_OS_IF_D1_SIZE 1 -#define REG_OS_IF_D1_MASK 0x00000200 - -#define REG_OS_IF_D0_SHIFT 8 -#define REG_OS_IF_D0_SIZE 1 -#define REG_OS_IF_D0_MASK 0x00000100 - -#define REG_OS_IF_T3_SHIFT 6 -#define REG_OS_IF_T3_SIZE 1 -#define REG_OS_IF_T3_MASK 0x00000040 - -#define REG_OS_IF_T2_SHIFT 5 -#define REG_OS_IF_T2_SIZE 1 -#define REG_OS_IF_T2_MASK 0x00000020 - -#define REG_OS_IF_T1_SHIFT 4 -#define REG_OS_IF_T1_SIZE 1 -#define REG_OS_IF_T1_MASK 0x00000010 - -#define REG_OS_IF_T0_SHIFT 3 -#define REG_OS_IF_T0_SIZE 1 -#define REG_OS_IF_T0_MASK 0x00000008 - -#define REG_OS_IF_VE_SHIFT 2 -#define REG_OS_IF_VE_SIZE 1 -#define REG_OS_IF_VE_MASK 0x00000004 - -#define REG_OS_IF_HB_SHIFT 1 -#define REG_OS_IF_HB_SIZE 1 -#define REG_OS_IF_HB_MASK 0x00000002 - -#define REG_OS_IF_VB_SHIFT 0 -#define REG_OS_IF_VB_SIZE 1 -#define REG_OS_IF_VB_MASK 0x00000001 - -#ifndef SDK_ASM -#define REG_OS_IF_FIELD(gf, mi, mc, ifn, ife, a7, i_d, k, d3, d2, d1, d0, t3, t2, t1, t0, ve, hb, vb) \ - (u32)( \ - ((u32)(gf) << REG_OS_IF_GF_SHIFT) | \ - ((u32)(mi) << REG_OS_IF_MI_SHIFT) | \ - ((u32)(mc) << REG_OS_IF_MC_SHIFT) | \ - ((u32)(ifn) << REG_OS_IF_IFN_SHIFT) | \ - ((u32)(ife) << REG_OS_IF_IFE_SHIFT) | \ - ((u32)(a7) << REG_OS_IF_A7_SHIFT) | \ - ((u32)(i_d) << REG_OS_IF_I_D_SHIFT) | \ - ((u32)(k) << REG_OS_IF_K_SHIFT) | \ - ((u32)(d3) << REG_OS_IF_D3_SHIFT) | \ - ((u32)(d2) << REG_OS_IF_D2_SHIFT) | \ - ((u32)(d1) << REG_OS_IF_D1_SHIFT) | \ - ((u32)(d0) << REG_OS_IF_D0_SHIFT) | \ - ((u32)(t3) << REG_OS_IF_T3_SHIFT) | \ - ((u32)(t2) << REG_OS_IF_T2_SHIFT) | \ - ((u32)(t1) << REG_OS_IF_T1_SHIFT) | \ - ((u32)(t0) << REG_OS_IF_T0_SHIFT) | \ - ((u32)(ve) << REG_OS_IF_VE_SHIFT) | \ - ((u32)(hb) << REG_OS_IF_HB_SHIFT) | \ - ((u32)(vb) << REG_OS_IF_VB_SHIFT)) -#endif - -#define REG_OS_PAUSE_MOD_SHIFT 14 -#define REG_OS_PAUSE_MOD_SIZE 2 -#define REG_OS_PAUSE_MOD_MASK 0xc000 - -#define REG_OS_PAUSE_CHK_SHIFT 0 -#define REG_OS_PAUSE_CHK_SIZE 1 -#define REG_OS_PAUSE_CHK_MASK 0x0001 - -#ifndef SDK_ASM -#define REG_OS_PAUSE_FIELD(mod, chk) \ - (u16)( \ - ((u32)(mod) << REG_OS_PAUSE_MOD_SHIFT) | \ - ((u32)(chk) << REG_OS_PAUSE_CHK_SHIFT)) -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/hw/ARM9/ioreg_PAD.h b/subprojects/NitroSDK/include/nitro/hw/ARM9/ioreg_PAD.h deleted file mode 100644 index addae38ac9..0000000000 --- a/subprojects/NitroSDK/include/nitro/hw/ARM9/ioreg_PAD.h +++ /dev/null @@ -1,145 +0,0 @@ -#ifndef NITRO_HW_ARM9_IOREG_PAD_H_ -#define NITRO_HW_ARM9_IOREG_PAD_H_ - -#ifndef SDK_ASM -#include -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define REG_KEYINPUT_OFFSET 0x130 -#define REG_KEYINPUT_ADDR (HW_REG_BASE + REG_KEYINPUT_OFFSET) -#define reg_PAD_KEYINPUT (*(const REGType16v *)REG_KEYINPUT_ADDR) - -#define REG_KEYCNT_OFFSET 0x132 -#define REG_KEYCNT_ADDR (HW_REG_BASE + REG_KEYCNT_OFFSET) -#define reg_PAD_KEYCNT (*( REGType16v *)REG_KEYCNT_ADDR) - -#define REG_PAD_KEYINPUT_L_SHIFT 9 -#define REG_PAD_KEYINPUT_L_SIZE 1 -#define REG_PAD_KEYINPUT_L_MASK 0x0200 - -#define REG_PAD_KEYINPUT_R_SHIFT 8 -#define REG_PAD_KEYINPUT_R_SIZE 1 -#define REG_PAD_KEYINPUT_R_MASK 0x0100 - -#define REG_PAD_KEYINPUT_DOWN_SHIFT 7 -#define REG_PAD_KEYINPUT_DOWN_SIZE 1 -#define REG_PAD_KEYINPUT_DOWN_MASK 0x0080 - -#define REG_PAD_KEYINPUT_UP_SHIFT 6 -#define REG_PAD_KEYINPUT_UP_SIZE 1 -#define REG_PAD_KEYINPUT_UP_MASK 0x0040 - -#define REG_PAD_KEYINPUT_LEFT_SHIFT 5 -#define REG_PAD_KEYINPUT_LEFT_SIZE 1 -#define REG_PAD_KEYINPUT_LEFT_MASK 0x0020 - -#define REG_PAD_KEYINPUT_RIGHT_SHIFT 4 -#define REG_PAD_KEYINPUT_RIGHT_SIZE 1 -#define REG_PAD_KEYINPUT_RIGHT_MASK 0x0010 - -#define REG_PAD_KEYINPUT_START_SHIFT 3 -#define REG_PAD_KEYINPUT_START_SIZE 1 -#define REG_PAD_KEYINPUT_START_MASK 0x0008 - -#define REG_PAD_KEYINPUT_SEL_SHIFT 2 -#define REG_PAD_KEYINPUT_SEL_SIZE 1 -#define REG_PAD_KEYINPUT_SEL_MASK 0x0004 - -#define REG_PAD_KEYINPUT_B_SHIFT 1 -#define REG_PAD_KEYINPUT_B_SIZE 1 -#define REG_PAD_KEYINPUT_B_MASK 0x0002 - -#define REG_PAD_KEYINPUT_A_SHIFT 0 -#define REG_PAD_KEYINPUT_A_SIZE 1 -#define REG_PAD_KEYINPUT_A_MASK 0x0001 - -#ifndef SDK_ASM -#define REG_PAD_KEYINPUT_FIELD(l, r, down, up, left, right, start, sel, b, a) \ - (u16)( \ - ((u32)(l) << REG_PAD_KEYINPUT_L_SHIFT) | \ - ((u32)(r) << REG_PAD_KEYINPUT_R_SHIFT) | \ - ((u32)(down) << REG_PAD_KEYINPUT_DOWN_SHIFT) | \ - ((u32)(up) << REG_PAD_KEYINPUT_UP_SHIFT) | \ - ((u32)(left) << REG_PAD_KEYINPUT_LEFT_SHIFT) | \ - ((u32)(right) << REG_PAD_KEYINPUT_RIGHT_SHIFT) | \ - ((u32)(start) << REG_PAD_KEYINPUT_START_SHIFT) | \ - ((u32)(sel) << REG_PAD_KEYINPUT_SEL_SHIFT) | \ - ((u32)(b) << REG_PAD_KEYINPUT_B_SHIFT) | \ - ((u32)(a) << REG_PAD_KEYINPUT_A_SHIFT)) -#endif - -#define REG_PAD_KEYCNT_LOGIC_SHIFT 15 -#define REG_PAD_KEYCNT_LOGIC_SIZE 1 -#define REG_PAD_KEYCNT_LOGIC_MASK 0x8000 - -#define REG_PAD_KEYCNT_INTR_SHIFT 14 -#define REG_PAD_KEYCNT_INTR_SIZE 1 -#define REG_PAD_KEYCNT_INTR_MASK 0x4000 - -#define REG_PAD_KEYCNT_L_SHIFT 9 -#define REG_PAD_KEYCNT_L_SIZE 1 -#define REG_PAD_KEYCNT_L_MASK 0x0200 - -#define REG_PAD_KEYCNT_R_SHIFT 8 -#define REG_PAD_KEYCNT_R_SIZE 1 -#define REG_PAD_KEYCNT_R_MASK 0x0100 - -#define REG_PAD_KEYCNT_DOWN_SHIFT 7 -#define REG_PAD_KEYCNT_DOWN_SIZE 1 -#define REG_PAD_KEYCNT_DOWN_MASK 0x0080 - -#define REG_PAD_KEYCNT_UP_SHIFT 6 -#define REG_PAD_KEYCNT_UP_SIZE 1 -#define REG_PAD_KEYCNT_UP_MASK 0x0040 - -#define REG_PAD_KEYCNT_LEFT_SHIFT 5 -#define REG_PAD_KEYCNT_LEFT_SIZE 1 -#define REG_PAD_KEYCNT_LEFT_MASK 0x0020 - -#define REG_PAD_KEYCNT_RIGHT_SHIFT 4 -#define REG_PAD_KEYCNT_RIGHT_SIZE 1 -#define REG_PAD_KEYCNT_RIGHT_MASK 0x0010 - -#define REG_PAD_KEYCNT_START_SHIFT 3 -#define REG_PAD_KEYCNT_START_SIZE 1 -#define REG_PAD_KEYCNT_START_MASK 0x0008 - -#define REG_PAD_KEYCNT_SEL_SHIFT 2 -#define REG_PAD_KEYCNT_SEL_SIZE 1 -#define REG_PAD_KEYCNT_SEL_MASK 0x0004 - -#define REG_PAD_KEYCNT_B_SHIFT 1 -#define REG_PAD_KEYCNT_B_SIZE 1 -#define REG_PAD_KEYCNT_B_MASK 0x0002 - -#define REG_PAD_KEYCNT_A_SHIFT 0 -#define REG_PAD_KEYCNT_A_SIZE 1 -#define REG_PAD_KEYCNT_A_MASK 0x0001 - -#ifndef SDK_ASM -#define REG_PAD_KEYCNT_FIELD(logic, intr, l, r, down, up, left, right, start, sel, b, a) \ - (u16)( \ - ((u32)(logic) << REG_PAD_KEYCNT_LOGIC_SHIFT) | \ - ((u32)(intr) << REG_PAD_KEYCNT_INTR_SHIFT) | \ - ((u32)(l) << REG_PAD_KEYCNT_L_SHIFT) | \ - ((u32)(r) << REG_PAD_KEYCNT_R_SHIFT) | \ - ((u32)(down) << REG_PAD_KEYCNT_DOWN_SHIFT) | \ - ((u32)(up) << REG_PAD_KEYCNT_UP_SHIFT) | \ - ((u32)(left) << REG_PAD_KEYCNT_LEFT_SHIFT) | \ - ((u32)(right) << REG_PAD_KEYCNT_RIGHT_SHIFT) | \ - ((u32)(start) << REG_PAD_KEYCNT_START_SHIFT) | \ - ((u32)(sel) << REG_PAD_KEYCNT_SEL_SHIFT) | \ - ((u32)(b) << REG_PAD_KEYCNT_B_SHIFT) | \ - ((u32)(a) << REG_PAD_KEYCNT_A_SHIFT)) -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/hw/ARM9/ioreg_PXI.h b/subprojects/NitroSDK/include/nitro/hw/ARM9/ioreg_PXI.h deleted file mode 100644 index 0ac2558288..0000000000 --- a/subprojects/NitroSDK/include/nitro/hw/ARM9/ioreg_PXI.h +++ /dev/null @@ -1,108 +0,0 @@ -#ifndef NITRO_HW_ARM9_IOREG_PXI_H_ -#define NITRO_HW_ARM9_IOREG_PXI_H_ - -#ifndef SDK_ASM -#include -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define REG_SUBPINTF_OFFSET 0x180 -#define REG_SUBPINTF_ADDR (HW_REG_BASE + REG_SUBPINTF_OFFSET) -#define reg_PXI_SUBPINTF (*( REGType16v *)REG_SUBPINTF_ADDR) - -#define REG_SUBP_FIFO_CNT_OFFSET 0x184 -#define REG_SUBP_FIFO_CNT_ADDR (HW_REG_BASE + REG_SUBP_FIFO_CNT_OFFSET) -#define reg_PXI_SUBP_FIFO_CNT (*( REGType16v *)REG_SUBP_FIFO_CNT_ADDR) - -#define REG_SEND_FIFO_OFFSET 0x188 -#define REG_SEND_FIFO_ADDR (HW_REG_BASE + REG_SEND_FIFO_OFFSET) -#define reg_PXI_SEND_FIFO (*( REGType32v *)REG_SEND_FIFO_ADDR) - -#define REG_RECV_FIFO_OFFSET 0x100000 -#define REG_RECV_FIFO_ADDR (HW_REG_BASE + REG_RECV_FIFO_OFFSET) -#define reg_PXI_RECV_FIFO (*( REGType32v *)REG_RECV_FIFO_ADDR) - -#define REG_PXI_SUBPINTF_I_SHIFT 14 -#define REG_PXI_SUBPINTF_I_SIZE 1 -#define REG_PXI_SUBPINTF_I_MASK 0x4000 - -#define REG_PXI_SUBPINTF_IREQ_SHIFT 13 -#define REG_PXI_SUBPINTF_IREQ_SIZE 1 -#define REG_PXI_SUBPINTF_IREQ_MASK 0x2000 - -#define REG_PXI_SUBPINTF_A9STATUS_SHIFT 8 -#define REG_PXI_SUBPINTF_A9STATUS_SIZE 4 -#define REG_PXI_SUBPINTF_A9STATUS_MASK 0x0f00 - -#define REG_PXI_SUBPINTF_A7STATUS_SHIFT 0 -#define REG_PXI_SUBPINTF_A7STATUS_SIZE 4 -#define REG_PXI_SUBPINTF_A7STATUS_MASK 0x000f - -#ifndef SDK_ASM -#define REG_PXI_SUBPINTF_FIELD(i, ireq, a9status, a7status) \ - (u16)( \ - ((u32)(i) << REG_PXI_SUBPINTF_I_SHIFT) | \ - ((u32)(ireq) << REG_PXI_SUBPINTF_IREQ_SHIFT) | \ - ((u32)(a9status) << REG_PXI_SUBPINTF_A9STATUS_SHIFT) | \ - ((u32)(a7status) << REG_PXI_SUBPINTF_A7STATUS_SHIFT)) -#endif - -#define REG_PXI_SUBP_FIFO_CNT_E_SHIFT 15 -#define REG_PXI_SUBP_FIFO_CNT_E_SIZE 1 -#define REG_PXI_SUBP_FIFO_CNT_E_MASK 0x8000 - -#define REG_PXI_SUBP_FIFO_CNT_ERR_SHIFT 14 -#define REG_PXI_SUBP_FIFO_CNT_ERR_SIZE 1 -#define REG_PXI_SUBP_FIFO_CNT_ERR_MASK 0x4000 - -#define REG_PXI_SUBP_FIFO_CNT_RECV_RI_SHIFT 10 -#define REG_PXI_SUBP_FIFO_CNT_RECV_RI_SIZE 1 -#define REG_PXI_SUBP_FIFO_CNT_RECV_RI_MASK 0x0400 - -#define REG_PXI_SUBP_FIFO_CNT_RECV_FULL_SHIFT 9 -#define REG_PXI_SUBP_FIFO_CNT_RECV_FULL_SIZE 1 -#define REG_PXI_SUBP_FIFO_CNT_RECV_FULL_MASK 0x0200 - -#define REG_PXI_SUBP_FIFO_CNT_RECV_EMP_SHIFT 8 -#define REG_PXI_SUBP_FIFO_CNT_RECV_EMP_SIZE 1 -#define REG_PXI_SUBP_FIFO_CNT_RECV_EMP_MASK 0x0100 - -#define REG_PXI_SUBP_FIFO_CNT_SEND_CL_SHIFT 3 -#define REG_PXI_SUBP_FIFO_CNT_SEND_CL_SIZE 1 -#define REG_PXI_SUBP_FIFO_CNT_SEND_CL_MASK 0x0008 - -#define REG_PXI_SUBP_FIFO_CNT_SEND_TI_SHIFT 2 -#define REG_PXI_SUBP_FIFO_CNT_SEND_TI_SIZE 1 -#define REG_PXI_SUBP_FIFO_CNT_SEND_TI_MASK 0x0004 - -#define REG_PXI_SUBP_FIFO_CNT_SEND_FULL_SHIFT 1 -#define REG_PXI_SUBP_FIFO_CNT_SEND_FULL_SIZE 1 -#define REG_PXI_SUBP_FIFO_CNT_SEND_FULL_MASK 0x0002 - -#define REG_PXI_SUBP_FIFO_CNT_SEND_EMP_SHIFT 0 -#define REG_PXI_SUBP_FIFO_CNT_SEND_EMP_SIZE 1 -#define REG_PXI_SUBP_FIFO_CNT_SEND_EMP_MASK 0x0001 - -#ifndef SDK_ASM -#define REG_PXI_SUBP_FIFO_CNT_FIELD(e, err, recv_ri, recv_full, recv_emp, send_cl, send_ti, send_full, send_emp) \ - (u16)( \ - ((u32)(e) << REG_PXI_SUBP_FIFO_CNT_E_SHIFT) | \ - ((u32)(err) << REG_PXI_SUBP_FIFO_CNT_ERR_SHIFT) | \ - ((u32)(recv_ri) << REG_PXI_SUBP_FIFO_CNT_RECV_RI_SHIFT) | \ - ((u32)(recv_full) << REG_PXI_SUBP_FIFO_CNT_RECV_FULL_SHIFT) | \ - ((u32)(recv_emp) << REG_PXI_SUBP_FIFO_CNT_RECV_EMP_SHIFT) | \ - ((u32)(send_cl) << REG_PXI_SUBP_FIFO_CNT_SEND_CL_SHIFT) | \ - ((u32)(send_ti) << REG_PXI_SUBP_FIFO_CNT_SEND_TI_SHIFT) | \ - ((u32)(send_full) << REG_PXI_SUBP_FIFO_CNT_SEND_FULL_SHIFT) | \ - ((u32)(send_emp) << REG_PXI_SUBP_FIFO_CNT_SEND_EMP_SHIFT)) -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/hw/ARM9/mmap_global.h b/subprojects/NitroSDK/include/nitro/hw/ARM9/mmap_global.h deleted file mode 100644 index d6077b1124..0000000000 --- a/subprojects/NitroSDK/include/nitro/hw/ARM9/mmap_global.h +++ /dev/null @@ -1,98 +0,0 @@ -#ifndef NITRO_HW_MMAP_GLOBAL_H_ -#define NITRO_HW_MMAP_GLOBAL_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#define HW_ITCM_IMAGE 0x01000000 -#define HW_ITCM 0x01ff8000 -#define HW_ITCM_SIZE 0x8000 -#define HW_ITCM_END (HW_ITCM + HW_ITCM_SIZE) - -#ifndef SDK_ASM -#include -extern u32 SDK_AUTOLOAD_DTCM_START[]; -#define HW_DTCM ((u32)SDK_AUTOLOAD_DTCM_START) -#else -.extern SDK_AUTOLOAD_DTCM_START -#define HW_DTCM SDK_AUTOLOAD_DTCM_START -#endif -#define HW_DTCM_SIZE 0x4000 -#define HW_DTCM_END (HW_DTCM + HW_DTCM_SIZE) - -#define HW_MAIN_MEM 0x02000000 -#define HW_MAIN_MEM_SIZE 0x00400000 -#define HW_MAIN_MEM_EX_SIZE 0x00800000 -#define HW_MAIN_MEM_END (HW_MAIN_MEM + HW_MAIN_MEM_SIZE) -#define HW_MAIN_MEM_EX_END (HW_MAIN_MEM + HW_MAIN_MEM_EX_SIZE) - -#define HW_WRAM 0x037f8000 -#define HW_WRAM_END 0x03800000 -#define HW_WRAM_SIZE (HW_WRAM_END - HW_WRAM) - -#define HW_IOREG 0x04000000 -#define HW_IOREG_END 0x05000000 -#define HW_REG_BASE HW_IOREG - -#define HW_BG_PLTT 0x05000000 -#define HW_BG_PLTT_END 0x05000200 -#define HW_BG_PLTT_SIZE (HW_BG_PLTT_END - HW_BG_PLTT) -#define HW_OBJ_PLTT 0x05000200 -#define HW_OBJ_PLTT_END 0x05000400 -#define HW_OBJ_PLTT_SIZE (HW_OBJ_PLTT_END - HW_OBJ_PLTT) -#define HW_PLTT HW_BG_PLTT -#define HW_PLTT_END HW_OBJ_PLTT_END -#define HW_PLTT_SIZE (HW_PLTT_END - HW_PLTT) -#define HW_DB_BG_PLTT 0x05000400 -#define HW_DB_BG_PLTT_END 0x05000600 -#define HW_DB_BG_PLTT_SIZE (HW_DB_BG_PLTT_END - HW_DB_BG_PLTT) -#define HW_DB_OBJ_PLTT 0x05000600 -#define HW_DB_OBJ_PLTT_END 0x05000800 -#define HW_DB_OBJ_PLTT_SIZE (HW_DB_OBJ_PLTT_END - HW_DB_OBJ_PLTT) -#define HW_DB_PLTT HW_DB_BG_PLTT -#define HW_DB_PLTT_END HW_DB_OBJ_PLTT_END -#define HW_DB_PLTT_SIZE (HW_DB_PLTT_END - HW_DB_PLTT) -#define HW_BG_VRAM 0x06000000 -#define HW_BG_VRAM_END 0x06080000 -#define HW_BG_VRAM_SIZE (HW_BG_VRAM_END - HW_BG_VRAM) -#define HW_DB_BG_VRAM 0x06200000 -#define HW_DB_BG_VRAM_END 0x06220000 -#define HW_DB_BG_VRAM_SIZE (HW_DB_BG_VRAM_END - HW_DB_BG_VRAM) -#define HW_OBJ_VRAM 0x06400000 -#define HW_OBJ_VRAM_END 0x06440000 -#define HW_OBJ_VRAM_SIZE (HW_OBJ_VRAM_END - HW_OBJ_VRAM) -#define HW_DB_OBJ_VRAM 0x06600000 -#define HW_DB_OBJ_VRAM_END 0x06620000 -#define HW_DB_OBJ_VRAM_SIZE (HW_DB_OBJ_VRAM_END - HW_DB_OBJ_VRAM) -#define HW_LCDC_VRAM 0x06800000 -#ifdef SDK_TS -#define HW_LCDC_VRAM_END 0x068A4000 -#else -#define HW_LCDC_VRAM_END 0x06898000 -#endif -#define HW_LCDC_VRAM_SIZE (HW_LCDC_VRAM_END - HW_LCDC_VRAM) -#define HW_OAM 0x07000000 -#define HW_OAM_END 0x07000400 -#define HW_OAM_SIZE (HW_OAM_END - HW_OAM) -#define HW_DB_OAM 0x07000400 -#define HW_DB_OAM_END 0x07000800 -#define HW_DB_OAM_SIZE (HW_DB_OAM_END - HW_DB_OAM) - -#define HW_CTRDG_ROM 0x08000000 -#define HW_CTRDG_ROM_END 0x0a000000 -#define HW_CTRDG_RAM 0x0a000000 -#define HW_CTRDG_RAM_END 0x0a010000 - -#define HW_BIOS 0xffff0000 -#define HW_BIOS_END 0xffff8000 -#define HW_RESET_VECTOR 0xffff0000 - -#define HW_EXT_WRAM_ARM7 0x06000000 -#define HW_EXT_WRAM_ARM7_END 0x06040000 -#define HW_EXT_WRAM_ARM7_SIZE (HW_EXT_WRAM_ARM7_END - HW_EXT_WRAM_ARM7) -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/hw/ARM9/mmap_main.h b/subprojects/NitroSDK/include/nitro/hw/ARM9/mmap_main.h deleted file mode 100644 index 4e3b5fbf0d..0000000000 --- a/subprojects/NitroSDK/include/nitro/hw/ARM9/mmap_main.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef NITRO_HW_MMAP_MAIN_H_ -#define NITRO_HW_MMAP_MAIN_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#define HW_MAIN_MEM_SHARED_SIZE 0x001000 - -#ifdef SDK_TS -#define HW_MAIN_MEM_MAIN_SIZE 0x3E0000 -#else -#define HW_MAIN_MEM_MAIN_SIZE 0x380000 -#endif -#define HW_MAIN_MEM_SUB_SIZE (HW_MAIN_MEM_SIZE - HW_MAIN_MEM_MAIN_SIZE - HW_MAIN_MEM_SHARED_SIZE) - -#define HW_MAIN_MEM_MAIN (HW_MAIN_MEM) -#define HW_MAIN_MEM_MAIN_END (HW_MAIN_MEM + HW_MAIN_MEM_MAIN_SIZE) -#define HW_MAIN_MEM_SUB (HW_MAIN_MEM_MAIN_END + 0x400000) -#define HW_MAIN_MEM_SUB_END (HW_MAIN_MEM_SUB + HW_MAIN_MEM_SUB_SIZE) - -#define HW_MAIN_MEM_DEBUGGER_OFFSET 0x700000 -#define HW_MAIN_MEM_DEBUGGER_SIZE 0x080000 -#define HW_MAIN_MEM_DEBUGGER (HW_MAIN_MEM + HW_MAIN_MEM_DEBUGGER_OFFSET) -#define HW_MAIN_MEM_DEBUGGER_END (HW_MAIN_MEM_DEBUGGER + HW_MAIN_MEM_DEBUGGER_SIZE) - -#define HW_MAIN_MEM_SHARED (HW_MAIN_MEM_EX_END - HW_MAIN_MEM_SHARED_SIZE) -#define HW_MAIN_MEM_SHARED_END (HW_MAIN_MEM_EX_END - HW_MAIN_MEM_SYSTEM_SIZE) - -#define HW_MAIN_MEM_SYSTEM_END (HW_MAIN_MEM_EX_END) - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/hw/ARM9/mmap_tcm.h b/subprojects/NitroSDK/include/nitro/hw/ARM9/mmap_tcm.h deleted file mode 100644 index 945da5b9ac..0000000000 --- a/subprojects/NitroSDK/include/nitro/hw/ARM9/mmap_tcm.h +++ /dev/null @@ -1,58 +0,0 @@ -#ifndef NITRO_HW_MMAP_TCM_H_ -#define NITRO_HW_MMAP_TCM_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#define HW_SYS_AND_IRQ_STACK_SIZE_MAX (HW_DTCM_SIZE - HW_SVC_STACK_SIZE - HW_DTCM_SYSRV_SIZE) -#define HW_SVC_STACK_SIZE 0x40 - -#define HW_DTCM_SYSRV_SIZE 0x40 - -#ifndef SDK_ASM -#include - -typedef volatile struct { - u8 sys_and_irq_stack[HW_SYS_AND_IRQ_STACK_SIZE_MAX]; - u8 svc_stack[HW_SVC_STACK_SIZE]; - - u8 reserved[HW_DTCM_SYSRV_SIZE - 8]; - u32 intr_check; - void * intr_vector; -} OS_DTCM; -#endif - -#define HW_DTCM_SYS_STACK_DEFAULT (HW_DTCM) -#define HW_DTCM_IRQ_STACK_END (HW_DTCM_SVC_STACK) -#define HW_DTCM_SVC_STACK (HW_DTCM_SVC_STACK_END - HW_SVC_STACK_SIZE) -#define HW_DTCM_SVC_STACK_END (HW_DTCM + 0x00003fc0) - -#define HW_DTCM_SYSRV_OFS_DEBUGGER 0x00 -#define HW_DTCM_SYSRV_OFS_EXCP_VECTOR 0x1c -#define HW_DTCM_SYSRV_OFS_RESERVED 0x20 -#define HW_DTCM_SYSRV_OFS_INTR_CHECK 0x38 -#define HW_DTCM_SYSRV_OFS_INTR_VECTOR 0x3c - -#define HW_DTCM_SYSRV (HW_DTCM + 0x00003fc0) -#define HW_EXCP_VECTOR_BUF (HW_DTCM_SYSRV + HW_DTCM_SYSRV_OFS_EXCP_VECTOR) -#define HW_INTR_CHECK_BUF (HW_DTCM_SYSRV + HW_DTCM_SYSRV_OFS_INTR_CHECK) -#define HW_INTR_VECTOR_BUF (HW_DTCM_SYSRV + HW_DTCM_SYSRV_OFS_INTR_VECTOR) - -#ifdef SDK_CWBUG_VSNPRINTF - -#define HW_DTCM_STRING_SIZE 256 -#define HW_DTCM_STRING HW_DTCM -#endif - -#define HW_DTCM_ARENA_LO_DEFAULT HW_DTCM -#define HW_DTCM_ARENA_HI_DEFAULT HW_DTCM - -#define HW_ITCM_ARENA_LO_DEFAULT HW_ITCM -#define HW_ITCM_ARENA_HI_DEFAULT HW_ITCM_END - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/hw/ARM9/mmap_vram.h b/subprojects/NitroSDK/include/nitro/hw/ARM9/mmap_vram.h deleted file mode 100644 index 598e368bfa..0000000000 --- a/subprojects/NitroSDK/include/nitro/hw/ARM9/mmap_vram.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef NITRO_HW_MMAP_VRAM -#define NITRO_HW_MMAP_VRAM - -#ifdef __cplusplus -extern "C" { -#endif - -#define HW_VRAM_A_SIZE 0x20000 -#define HW_VRAM_B_SIZE 0x20000 -#define HW_VRAM_C_SIZE 0x20000 -#define HW_VRAM_D_SIZE 0x20000 -#define HW_VRAM_E_SIZE 0x10000 -#define HW_VRAM_F_SIZE 0x4000 -#define HW_VRAM_G_SIZE 0x4000 -#define HW_VRAM_H_SIZE 0x8000 -#define HW_VRAM_I_SIZE 0x4000 - -#define HW_LCDC_VRAM_A (HW_LCDC_VRAM) -#define HW_LCDC_VRAM_B (HW_LCDC_VRAM_A + HW_VRAM_A_SIZE) -#define HW_LCDC_VRAM_C (HW_LCDC_VRAM_B + HW_VRAM_B_SIZE) -#define HW_LCDC_VRAM_D (HW_LCDC_VRAM_C + HW_VRAM_C_SIZE) -#define HW_LCDC_VRAM_E (HW_LCDC_VRAM_D + HW_VRAM_D_SIZE) -#define HW_LCDC_VRAM_F (HW_LCDC_VRAM_E + HW_VRAM_E_SIZE) -#define HW_LCDC_VRAM_G (HW_LCDC_VRAM_F + HW_VRAM_F_SIZE) -#define HW_LCDC_VRAM_H (HW_LCDC_VRAM_G + HW_VRAM_G_SIZE) -#define HW_LCDC_VRAM_I (HW_LCDC_VRAM_H + HW_VRAM_H_SIZE) - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/hw/common/armArch.h b/subprojects/NitroSDK/include/nitro/hw/common/armArch.h deleted file mode 100644 index c8800ba5fa..0000000000 --- a/subprojects/NitroSDK/include/nitro/hw/common/armArch.h +++ /dev/null @@ -1,177 +0,0 @@ -#ifndef NITRO_HW_SYSTEMCONTROL_H_ -#define NITRO_HW_SYSTEMCONTROL_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#define HW_ICACHE_SIZE 0x2000 -#define HW_DCACHE_SIZE 0x1000 -#define HW_CACHE_LINE_SIZE 32 - -#define HW_SYSTEM_CLOCK 33514000 - -#define HW_CPU_CLOCK_ARM7 33513982 -#define HW_CPU_CLOCK_ARM9 67027964 - -#ifdef SDK_ARM7 -#define HW_CPU_CLOCK HW_CPU_CLOCK_ARM7 -#else -#define HW_CPU_CLOCK HW_CPU_CLOCK_ARM9 -#endif - -#define HW_PSR_CPU_MODE_MASK 0x1f - -#define HW_PSR_USER_MODE 0x10 -#define HW_PSR_FIQ_MODE 0x11 -#define HW_PSR_IRQ_MODE 0x12 -#define HW_PSR_SVC_MODE 0x13 -#define HW_PSR_ABORT_MODE 0x17 -#define HW_PSR_UNDEF_MODE 0x1b -#define HW_PSR_SYS_MODE 0x1f - -#define HW_PSR_ARM_STATE 0x0 -#define HW_PSR_THUMB_STATE 0x20 - -#define HW_PSR_FIQ_DISABLE 0x40 -#define HW_PSR_IRQ_DISABLE 0x80 -#define HW_PSR_IRQ_FIQ_DISABLE 0xc0 - -#define HW_PSR_Q_FLAG 0x08000000 -#define HW_PSR_V_FLAG 0x10000000 -#define HW_PSR_C_FLAG 0x20000000 -#define HW_PSR_Z_FLAG 0x40000000 -#define HW_PSR_N_FLAG 0x80000000 - -#define HW_C1_SB1_BITSET 0x00000078 - -#define HW_C1_ITCM_LOAD_MODE 0x00080000 -#define HW_C1_DTCM_LOAD_MODE 0x00020000 -#define HW_C1_ITCM_ENABLE 0x00040000 -#define HW_C1_DTCM_ENABLE 0x00010000 -#define HW_C1_LD_INTERWORK_DISABLE 0x00008000 -#define HW_C1_CACHE_ROUND_ROBIN 0x00004000 -#define HW_C1_CACHE_PSEUDO_RANDOM 0x00000000 -#define HW_C1_EXCEPT_VEC_UPPER 0x00002000 -#define HW_C1_EXCEPT_VEC_LOWER 0x00000000 -#define HW_C1_ICACHE_ENABLE 0x00001000 -#define HW_C1_DCACHE_ENABLE 0x00000004 -#define HW_C1_LITTLE_ENDIAN 0x00000000 -#define HW_C1_BIG_ENDIAN 0x00000080 -#define HW_C1_PROTECT_UNIT_ENABLE 0x00000001 - -#define HW_C1_ICACHE_ENABLE_SHIFT 12 -#define HW_C1_DCACHE_ENABLE_SHIFT 2 - -#define HW_C2_PR0_SFT 0 -#define HW_C2_PR1_SFT 1 -#define HW_C2_PR2_SFT 2 -#define HW_C2_PR3_SFT 3 -#define HW_C2_PR4_SFT 4 -#define HW_C2_PR5_SFT 5 -#define HW_C2_PR6_SFT 6 -#define HW_C2_PR7_SFT 7 - -#define HW_C3_PR0_SFT 0 -#define HW_C3_PR1_SFT 1 -#define HW_C3_PR2_SFT 2 -#define HW_C3_PR3_SFT 3 -#define HW_C3_PR4_SFT 4 -#define HW_C3_PR5_SFT 5 -#define HW_C3_PR6_SFT 6 -#define HW_C3_PR7_SFT 7 - -#define HW_C5_PERMIT_MASK 0xf - -#define HW_C5_PERMIT_NA 0 -#define HW_C5_PERMIT_RW 1 -#define HW_C5_PERMIT_RO 5 - -#define HW_C5_PR0_SFT 0 -#define HW_C5_PR1_SFT 4 -#define HW_C5_PR2_SFT 8 -#define HW_C5_PR3_SFT 12 -#define HW_C5_PR4_SFT 16 -#define HW_C5_PR5_SFT 20 -#define HW_C5_PR6_SFT 24 -#define HW_C5_PR7_SFT 28 - -#define HW_C6_PR_SIZE_MASK 0x0000003e -#define HW_C6_PR_BASE_MASK 0xfffff000 - -#define HW_C6_PR_SIZE_SHIFT 1 -#define HW_C6_PR_BASE_SHIFT 12 - -#define HW_C6_PR_ENABLE 1 -#define HW_C6_PR_DISABLE 0 - -#define HW_C6_PR_4KB 0x16 -#define HW_C6_PR_8KB 0x18 -#define HW_C6_PR_16KB 0x1a -#define HW_C6_PR_32KB 0x1c -#define HW_C6_PR_64KB 0x1e -#define HW_C6_PR_128KB 0x20 -#define HW_C6_PR_256KB 0x22 -#define HW_C6_PR_512KB 0x24 -#define HW_C6_PR_1MB 0x26 -#define HW_C6_PR_2MB 0x28 -#define HW_C6_PR_4MB 0x2a -#define HW_C6_PR_8MB 0x2c -#define HW_C6_PR_16MB 0x2e -#define HW_C6_PR_32MB 0x30 -#define HW_C6_PR_64MB 0x32 -#define HW_C6_PR_128MB 0x34 -#define HW_C6_PR_256MB 0x36 -#define HW_C6_PR_512MB 0x38 -#define HW_C6_PR_1GB 0x3a -#define HW_C6_PR_2GB 0x3c -#define HW_C6_PR_4GB 0x3e - -#define HW_C7_ICACHE_PREFCHP_MASK 0xffffffe0 - -#define HW_C7_ICACHE_INDEX_MASK 0x00000fe0 -#define HW_C7_DCACHE_INDEX_MASK 0x000003e0 -#define HW_C7_CACHE_SET_NO_MASK 0xc0000000 - -#define HW_C7_CACHE_INDEX_SHIFT 5 -#define HW_C7_CACHE_SET_NO_SHIFT 30 - -#define HW_C9_LOCKDOWN_SET_NO_MASK 0x00000003 - -#define HW_C9_LOCKDOWN_SET_NO_SHIFT 0 - -#define HW_C9_LOCKDOWN_LOAD_MODE 0x80000000 - -#define HW_C9_TCMR_SIZE_MASK 0x0000003e -#define HW_C9_TCMR_BASE_MASK 0xfffff000 - -#define HW_C9_TCMR_SIZE_SHIFT 1 -#define HW_C9_TCMR_BASE_SHIFT 12 - -#define HW_C9_TCMR_4KB 0x06 -#define HW_C9_TCMR_8KB 0x08 -#define HW_C9_TCMR_16KB 0x0a -#define HW_C9_TCMR_32KB 0x0c -#define HW_C9_TCMR_64KB 0x0e -#define HW_C9_TCMR_128KB 0x10 -#define HW_C9_TCMR_256KB 0x12 -#define HW_C9_TCMR_512KB 0x14 -#define HW_C9_TCMR_1MB 0x16 -#define HW_C9_TCMR_2MB 0x18 -#define HW_C9_TCMR_4MB 0x1a -#define HW_C9_TCMR_8MB 0x1c -#define HW_C9_TCMR_16MB 0x1e -#define HW_C9_TCMR_32MB 0x20 -#define HW_C9_TCMR_64MB 0x22 -#define HW_C9_TCMR_128MB 0x24 -#define HW_C9_TCMR_256MB 0x26 -#define HW_C9_TCMR_512MB 0x28 -#define HW_C9_TCMR_1GB 0x2a -#define HW_C9_TCMR_2GB 0x2c -#define HW_C9_TCMR_4GB 0x2e - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/hw/common/lcd.h b/subprojects/NitroSDK/include/nitro/hw/common/lcd.h deleted file mode 100644 index 3b6ab162ca..0000000000 --- a/subprojects/NitroSDK/include/nitro/hw/common/lcd.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef NITRO_HW_COMMON_LCD_H_ -#define NITRO_HW_COMMON_LCD_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#define HW_LCD_WIDTH 256 -#define HW_LCD_HBLANK 99 -#define HW_LCD_COLUMNS (HW_LCD_WIDTH + HW_LCD_HBLANK) - -#define HW_LCD_HEIGHT 192 -#define HW_LCD_VBLANK 71 -#define HW_LCD_LINES (HW_LCD_HEIGHT + HW_LCD_VBLANK) - -#define HW_LCD_CLOCK 33513982 -#define HW_LCD_CLOCK_PER_DOT 6 - -#define HW_LCD_H_CYCLE_NS ((u32)(1000000000ULL * HW_LCD_COLUMNS * HW_LCD_CLOCK_PER_DOT / HW_LCD_CLOCK)) -#define HW_LCD_H_CYCLE_US ((u32)(1000000ULL * HW_LCD_COLUMNS * HW_LCD_CLOCK_PER_DOT / HW_LCD_CLOCK)) -#define HW_LCD_H_CYCLE_MS ((u32)(1000ULL * HW_LCD_COLUMNS * HW_LCD_CLOCK_PER_DOT / HW_LCD_CLOCK) - -#define HW_LCD_V_CYCLE_NS ((u32)(1000000000ULL * HW_LCD_LINES * HW_LCD_COLUMNS * HW_LCD_CLOCK_PER_DOT / HW_LCD_CLOCK)) -#define HW_LCD_V_CYCLE_US ((u32)(1000000ULL * HW_LCD_LINES * HW_LCD_COLUMNS * HW_LCD_CLOCK_PER_DOT / HW_LCD_CLOCK)) -#define HW_LCD_V_CYCLE_MS ((u32)(1000ULL * HW_LCD_LINES * HW_LCD_COLUMNS * HW_LCD_CLOCK_PER_DOT / HW_LCD_CLOCK)) - -#define HW_LCD_LINES_CYCLE_NS(n) ((u32)(1000000000ULL * (n) * HW_LCD_COLUMNS * HW_LCD_CLOCK_PER_DOT / HW_LCD_CLOCK)) -#define HW_LCD_LINES_CYCLE_US(n) ((u32)(1000000ULL * (n) * HW_LCD_COLUMNS * HW_LCD_CLOCK_PER_DOT / HW_LCD_CLOCK)) -#define HW_LCD_LINES_CYCLE_MS(n) ((u32)(1000ULL * (n) * HW_LCD_COLUMNS * HW_LCD_CLOCK_PER_DOT / HW_LCD_CLOCK)) - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/hw/common/mmap_shared.h b/subprojects/NitroSDK/include/nitro/hw/common/mmap_shared.h deleted file mode 100644 index 0ecac82573..0000000000 --- a/subprojects/NitroSDK/include/nitro/hw/common/mmap_shared.h +++ /dev/null @@ -1,112 +0,0 @@ -#ifndef NITRO_HW_COMMON_MMAP_SHARED_H_ -#define NITRO_HW_COMMON_MMAP_SHARED_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#define HW_RED_RESERVED (HW_MAIN_MEM + 0x007ff800) -#define HW_RED_RESERVED_END (HW_MAIN_MEM + 0x007ffa00) - -#define HW_CARD_ROM_HEADER_SIZE 0x160 - -#define HW_DOWNLOAD_PARAMETER_SIZE 0x20 - -#define HW_SHARED_ARENA_LO_DEFAULT HW_MAIN_MEM_SHARED -#ifdef HW_RED_RESERVED -# define HW_SHARED_ARENA_HI_DEFAULT (HW_RED_RESERVED - HW_CARD_ROM_HEADER_SIZE - HW_DOWNLOAD_PARAMETER_SIZE) -#else -# define HW_SHARED_ARENA_HI_DEFAULT (HW_MAIN_MEM_SYSTEM - HW_CARD_ROM_HEADER_SIZE - HW_DOWNLOAD_PARAMETER_SIZE) -#endif - -#define HW_CARD_ROM_HEADER (HW_MAIN_MEM + 0x007ffa80) - -#define HW_DOWNLOAD_PARAMETER (HW_MAIN_MEM + 0x007ffbe0) - -#define HW_MAIN_MEM_SYSTEM_SIZE 0x400 -#define HW_MAIN_MEM_SYSTEM (HW_MAIN_MEM + 0x007ffc00) - -#define HW_BOOT_CHECK_INFO_BUF (HW_MAIN_MEM + 0x007ffc00) -#define HW_BOOT_CHECK_INFO_BUF_END (HW_MAIN_MEM + 0x007ffc20) - -#define HW_RESET_PARAMETER_BUF (HW_MAIN_MEM + 0x007ffc20) - -#define HW_ROM_BASE_OFFSET_BUF (HW_MAIN_MEM + 0x007ffc2c) -#define HW_ROM_BASE_OFFSET_BUF_END (HW_MAIN_MEM + 0x007ffc30) - -#define HW_CTRDG_MODULE_INFO_BUF (HW_MAIN_MEM + 0x007ffc30) -#define HW_CTRDG_MODULE_INFO_BUF_END (HW_MAIN_MEM + 0x007ffc3c) - -#define HW_VBLANK_COUNT_BUF (HW_MAIN_MEM + 0x007ffc3c) - -#define HW_WM_BOOT_BUF (HW_MAIN_MEM + 0x007ffc40) -#define HW_WM_BOOT_BUF_END (HW_MAIN_MEM + 0x007ffc80) - -#define HW_NVRAM_USER_INFO (HW_MAIN_MEM + 0x007ffc80) -#define HW_NVRAM_USER_INFO_END (HW_MAIN_MEM + 0x007ffd80) - -#define HW_BIOS_EXCP_STACK_MAIN (HW_MAIN_MEM + 0x007ffd80) -#define HW_BIOS_EXCP_STACK_MAIN_END (HW_MAIN_MEM + 0x007ffd9c) -#define HW_EXCP_VECTOR_MAIN (HW_MAIN_MEM + 0x007ffd9c) - -#define HW_ARENA_INFO_BUF (HW_MAIN_MEM + 0x007ffda0) -#define HW_REAL_TIME_CLOCK_BUF (HW_MAIN_MEM + 0x007ffde8) - -#define HW_DMA_CLEAR_DATA_BUF (HW_MAIN_MEM + 0x007ffdf0) -#define HW_DMA_CLEAR_DATA_BUF_END (HW_MAIN_MEM + 0x007ffe00) - -#define HW_ROM_HEADER_BUF (HW_MAIN_MEM + 0x007ffe00) -#define HW_ROM_HEADER_BUF_END (HW_MAIN_MEM + 0x007fff60) -#define HW_ISD_RESERVED (HW_MAIN_MEM + 0x007fff60) -#define HW_ISD_RESERVED_END (HW_MAIN_MEM + 0x007fff80) - -#define HW_PXI_SIGNAL_PARAM_ARM9 (HW_MAIN_MEM + 0x007fff80) -#define HW_PXI_SIGNAL_PARAM_ARM7 (HW_MAIN_MEM + 0x007fff84) -#define HW_PXI_HANDLE_CHECKER_ARM9 (HW_MAIN_MEM + 0x007fff88) -#define HW_PXI_HANDLE_CHECKER_ARM7 (HW_MAIN_MEM + 0x007fff8c) - -#define HW_MIC_LAST_ADDRESS (HW_MAIN_MEM + 0x007fff90) -#define HW_MIC_SAMPLING_DATA (HW_MAIN_MEM + 0x007fff94) - -#define HW_WM_CALLBACK_CONTROL (HW_MAIN_MEM + 0x007fff96) -#define HW_WM_RSSI_POOL (HW_MAIN_MEM + 0x007fff98) - -#define HW_SET_CTRDG_MODULE_INFO_ONCE (HW_MAIN_MEM + 0x007fff9a) -#define HW_IS_CTRDG_EXIST (HW_MAIN_MEM + 0x007fff9b) - -#define HW_COMPONENT_PARAM (HW_MAIN_MEM + 0x007fff9c) - -#define HW_THREADINFO_MAIN (HW_MAIN_MEM + 0x007fffa0) -#define HW_THREADINFO_SUB (HW_MAIN_MEM + 0x007fffa4) -#define HW_BUTTON_XY_BUF (HW_MAIN_MEM + 0x007fffa8) -#define HW_TOUCHPANEL_BUF (HW_MAIN_MEM + 0x007fffaa) -#define HW_AUTOLOAD_SYNC_BUF (HW_MAIN_MEM + 0x007fffae) - -#define HW_LOCK_ID_FLAG_MAIN (HW_MAIN_MEM + 0x007fffb0) -#define HW_LOCK_ID_FLAG_SUB (HW_MAIN_MEM + 0x007fffb8) - -#define HW_VRAM_C_LOCK_BUF (HW_MAIN_MEM + 0x007fffc0) -#define HW_VRAM_D_LOCK_BUF (HW_MAIN_MEM + 0x007fffc8) -#define HW_WRAM_BLOCK0_LOCK_BUF (HW_MAIN_MEM + 0x007fffd0) -#define HW_WRAM_BLOCK1_LOCK_BUF (HW_MAIN_MEM + 0x007fffd8) -#define HW_CARD_LOCK_BUF (HW_MAIN_MEM + 0x007fffe0) -#define HW_CTRDG_LOCK_BUF (HW_MAIN_MEM + 0x007fffe8) -#define HW_INIT_LOCK_BUF (HW_MAIN_MEM + 0x007ffff0) - -#define HW_MMEMCHECKER_MAIN (HW_MAIN_MEM + 0x007ffff8) -#define HW_MMEMCHECKER_SUB (HW_MAIN_MEM + 0x007ffffa) - -#define HW_CMD_AREA (HW_MAIN_MEM + 0x007ffffe) - -#define HW_SHARED_LOCK_BUF (HW_VRAM_C_LOCK_BUF) -#define HW_SHARED_LOCK_BUF_END (HW_INIT_LOCK_BUF + 8) - -#define HW_CHECK_DEBUGGER_SW 0x027ffc10 -#define HW_CHECK_DEBUGGER_BUF1 0x027ff814 -#define HW_CHECK_DEBUGGER_BUF2 0x027ffc14 - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/init/crt0.h b/subprojects/NitroSDK/include/nitro/init/crt0.h deleted file mode 100644 index c451f8a248..0000000000 --- a/subprojects/NitroSDK/include/nitro/init/crt0.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef NITRO_INIT_CRT0_H_ -#define NITRO_INIT_CRT0_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef SDK_ARM9 -void NitroMain(void); -void NitroStartUp(void); -#else -void NitroSpMain(void); -void NitroSpStartUp(void); -#define NitroMain(x) NitroSpMain(x) -#define NitroStartUp(x) NitroSpStartUp(x) -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/ioreg.h b/subprojects/NitroSDK/include/nitro/ioreg.h deleted file mode 100644 index 2786a26f2e..0000000000 --- a/subprojects/NitroSDK/include/nitro/ioreg.h +++ /dev/null @@ -1,5 +0,0 @@ -#ifdef SDK_ARM9 -#include -#else -#include -#endif diff --git a/subprojects/NitroSDK/include/nitro/itcm_begin.h b/subprojects/NitroSDK/include/nitro/itcm_begin.h deleted file mode 100644 index 9cc0eef2cd..0000000000 --- a/subprojects/NitroSDK/include/nitro/itcm_begin.h +++ /dev/null @@ -1,9 +0,0 @@ -#include - -#if defined(SDK_CW) || defined(__MWERKS__) -#pragma section ITCM begin -#elif defined(SDK_ADS) -TO BE DEFINED -#elif defined(SDK_GCC) -TO BE DEFINED -#endif diff --git a/subprojects/NitroSDK/include/nitro/itcm_end.h b/subprojects/NitroSDK/include/nitro/itcm_end.h deleted file mode 100644 index 2320f2a23e..0000000000 --- a/subprojects/NitroSDK/include/nitro/itcm_end.h +++ /dev/null @@ -1,7 +0,0 @@ -#if defined(SDK_CW) || defined(__MWERKS__) -#pragma section ITCM end -#elif defined(SDK_ADS) -TO BE DEFINED -#elif defined(SDK_GCC) -TO BE DEFINED -#endif diff --git a/subprojects/NitroSDK/include/nitro/math.h b/subprojects/NitroSDK/include/nitro/math.h deleted file mode 100644 index 961db03ee0..0000000000 --- a/subprojects/NitroSDK/include/nitro/math.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef NITRO_MATH_H_ -#define NITRO_MATH_H_ - -#include -#include -#include -#include - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/math/checksum.h b/subprojects/NitroSDK/include/nitro/math/checksum.h deleted file mode 100644 index 5693273f42..0000000000 --- a/subprojects/NitroSDK/include/nitro/math/checksum.h +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef NITRO_MATH_CHECKSUM_H_ -#define NITRO_MATH_CHECKSUM_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef u16 MATHChecksum16Context; -typedef MATHChecksum16Context MATHChecksum8Context; - -static inline void MATH_Checksum16Init (MATHChecksum16Context * context) -{ - *context = 0; -} - -void MATH_Checksum16Update(MATHChecksum16Context * context, const void * input, u32 length); - -static inline u16 MATH_Checksum16GetHash (MATHChecksum16Context * context) -{ - return (u16)(~(*context)); -} - -u16 MATH_CalcChecksum16(const void * data, u32 dataLength); - -static inline void MATH_Checksum8Init (MATHChecksum8Context * context) -{ - *context = 0; -} - -void MATH_Checksum8Update(MATHChecksum8Context * context, const void * input, u32 length); - -static inline u8 MATH_Checksum8GetHash (MATHChecksum8Context * context) -{ - u32 sum = *context; - sum = (sum >> 8) + (sum & 0xff); - sum += (sum >> 8); - - return (u8)(~sum); -} - -u8 MATH_CalcChecksum8(const void * data, u32 dataLength); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/math/crc.h b/subprojects/NitroSDK/include/nitro/math/crc.h deleted file mode 100644 index 720015a8da..0000000000 --- a/subprojects/NitroSDK/include/nitro/math/crc.h +++ /dev/null @@ -1,232 +0,0 @@ -#ifndef NITRO_MATH_CRC_H_ -#define NITRO_MATH_CRC_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define MATH_CRC8_STANDARD_POLY 0x07 -#define MATH_CRC8_STANDARD_INIT 0 - -#define MATH_CRC16_STANDARD_POLY 0xa001 -#define MATH_CRC16_STANDARD_INIT 0 -#define MATH_CRC16_CCITT_POLY 0x1021 -#define MATH_CRC16_CCITT_INIT 0xffff - -#define MATH_CRC32_STANDARD_POLY 0xedb88320 -#define MATH_CRC32_STANDARD_INIT 0xffffffff -#define MATH_CRC32_POSIX_POLY 0x04c11db7 -#define MATH_CRC32_POSIX_INIT 0 - -typedef u8 MATHCRC8Context; -typedef u16 MATHCRC16Context; -typedef u32 MATHCRC32Context; - -typedef struct MATHCRC8Table { - u8 table[256]; -} MATHCRC8Table; - -typedef struct MATHCRC16Table { - u16 table[256]; -} MATHCRC16Table; - -typedef struct MATHCRC32Table { - u32 table[256]; -} MATHCRC32Table; - -void MATHi_CRC8InitTable(MATHCRC8Table * table, u8 poly); - -void MATHi_CRC8InitTableRev(MATHCRC8Table * table, u8 poly); - -static inline void MATHi_CRC8Init (MATHCRC8Context * context, u8 init) -{ - *context = init; -} - -void - -MATHi_CRC8Update(const MATHCRC8Table * table, MATHCRC8Context * context, const void * input, - u32 length); - -static inline void MATHi_CRC8UpdateRev (const MATHCRC8Table * table, MATHCRC8Context * context, const void * input, - u32 length) -{ - MATHi_CRC8Update(table, context, input, length); -} - -static inline u8 MATHi_CRC8GetHash (MATHCRC8Context * context) -{ - return (u8) * context; -} - -static inline void MATH_CRC8InitTable (MATHCRC8Table * table) -{ - MATHi_CRC8InitTable(table, MATH_CRC8_STANDARD_POLY); -} - -static inline void MATH_CRC8Init (MATHCRC8Context * context) -{ - MATHi_CRC8Init(context, MATH_CRC8_STANDARD_INIT); -} - -static inline void MATH_CRC8Update (const MATHCRC8Table * table, MATHCRC8Context * context, const void * input, - u32 length) -{ - MATHi_CRC8Update(table, context, input, length); -} - -static inline u8 MATH_CRC8GetHash (MATHCRC8Context * context) -{ - return MATHi_CRC8GetHash(context); -} - -void MATHi_CRC16InitTable(MATHCRC16Table * table, u16 poly); - -void MATHi_CRC16InitTableRev(MATHCRC16Table * table, u16 poly); - -static inline void MATHi_CRC16Init (MATHCRC16Context * context, u16 init) -{ - *context = init; -} - -void - -MATHi_CRC16Update(const MATHCRC16Table * table, MATHCRC16Context * context, const void * input, - u32 length); - -void - -MATHi_CRC16UpdateRev(const MATHCRC16Table * table, MATHCRC16Context * context, const void * input, - u32 length); - -static inline u16 MATHi_CRC16GetHash (MATHCRC16Context * context) -{ - return (u16) * context; -} - -static inline void MATH_CRC16CCITTInitTable (MATHCRC16Table * table) -{ - MATHi_CRC16InitTable(table, MATH_CRC16_CCITT_POLY); -} - -static inline void MATH_CRC16CCITTInit (MATHCRC16Context * context) -{ - MATHi_CRC16Init(context, MATH_CRC16_CCITT_INIT); -} - -static inline void MATH_CRC16CCITTUpdate (const MATHCRC16Table * table, MATHCRC16Context * context, const void * input, - u32 length) -{ - MATHi_CRC16Update(table, context, input, length); -} - -static inline u16 MATH_CRC16CCITTGetHash (MATHCRC16Context * context) -{ - return MATHi_CRC16GetHash(context); -} - -static inline void MATH_CRC16InitTable (MATHCRC16Table * table) -{ - MATHi_CRC16InitTableRev(table, MATH_CRC16_STANDARD_POLY); -} - -static inline void MATH_CRC16Init (MATHCRC16Context * context) -{ - MATHi_CRC16Init(context, MATH_CRC16_STANDARD_INIT); -} - -static inline void MATH_CRC16Update (const MATHCRC16Table * table, MATHCRC16Context * context, const void * input, - u32 length) -{ - MATHi_CRC16UpdateRev(table, context, input, length); -} - -static inline u16 MATH_CRC16GetHash (MATHCRC16Context * context) -{ - return MATHi_CRC16GetHash(context); -} - -void MATHi_CRC32InitTable(MATHCRC32Table * table, u32 poly); - -void MATHi_CRC32InitTableRev(MATHCRC32Table * table, u32 poly); - -static inline void MATHi_CRC32Init (MATHCRC32Context * context, u32 init) -{ - *context = init; -} - -void - -MATHi_CRC32Update(const MATHCRC32Table * table, MATHCRC32Context * context, const void * input, - u32 length); - -void - -MATHi_CRC32UpdateRev(const MATHCRC32Table * table, MATHCRC32Context * context, const void * input, - u32 length); - -static inline u32 MATHi_CRC32GetHash (MATHCRC32Context * context) -{ - return (u32) * context; -} - -static inline void MATH_CRC32InitTable (MATHCRC32Table * table) -{ - MATHi_CRC32InitTableRev(table, MATH_CRC32_STANDARD_POLY); -} - -static inline void MATH_CRC32Init (MATHCRC32Context * context) -{ - MATHi_CRC32Init(context, MATH_CRC32_STANDARD_INIT); -} - -static inline void MATH_CRC32Update (const MATHCRC32Table * table, MATHCRC32Context * context, const void * input, - u32 length) -{ - MATHi_CRC32UpdateRev(table, context, input, length); -} - -static inline u32 MATH_CRC32GetHash (MATHCRC32Context * context) -{ - return (u32)(~MATHi_CRC32GetHash(context)); -} - -static inline void MATH_CRC32POSIXInitTable (MATHCRC32Table * table) -{ - MATHi_CRC32InitTable(table, MATH_CRC32_POSIX_POLY); -} - -static inline void MATH_CRC32POSIXInit (MATHCRC32Context * context) -{ - MATHi_CRC32Init(context, MATH_CRC32_POSIX_INIT); -} - -static inline void MATH_CRC32POSIXUpdate (const MATHCRC32Table * table, MATHCRC32Context * context, const void * input, - u32 length) -{ - MATHi_CRC32Update(table, context, input, length); -} - -static inline u32 MATH_CRC32POSIXGetHash (MATHCRC32Context * context) -{ - return (u32)(~MATHi_CRC32GetHash(context)); -} - -u8 MATH_CalcCRC8(const MATHCRC8Table * table, const void * data, u32 dataLength); - -u16 MATH_CalcCRC16(const MATHCRC16Table * table, const void * data, u32 dataLength); - -u16 MATH_CalcCRC16CCITT(const MATHCRC16Table * table, const void * data, u32 dataLength); - -u32 MATH_CalcCRC32(const MATHCRC32Table * table, const void * data, u32 dataLength); - -u32 MATH_CalcCRC32POSIX(const MATHCRC32Table * table, const void * data, u32 dataLength); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/math/dgt.h b/subprojects/NitroSDK/include/nitro/math/dgt.h deleted file mode 100644 index e38048d210..0000000000 --- a/subprojects/NitroSDK/include/nitro/math/dgt.h +++ /dev/null @@ -1,80 +0,0 @@ -#ifndef NITRO_MATH_DGT_H_ -#define NITRO_MATH_DGT_H_ - -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define MATH_MD5_DIGEST_SIZE DGT_HASH1_DIGEST_SIZE -#define MATH_SHA1_DIGEST_SIZE DGT_HASH2_DIGEST_SIZE - -#define MATH_MD5_BLOCK_SIZE DGT_HASH_BLOCK_SIZE -#define MATH_SHA1_BLOCK_SIZE DGT_HASH_BLOCK_SIZE - -typedef DGTHash1Context MATHMD5Context; -typedef DGTHash2Context MATHSHA1Context; - -static inline void MATH_MD5Init (MATHMD5Context * context) -{ - DGT_Hash1Reset(context); -} - -static inline void MATH_MD5Update (MATHMD5Context * context, const void * input, u32 length) -{ - DGT_Hash1SetSource(context, (u8 *)input, length); -} - -static inline void MATH_MD5GetHash (MATHMD5Context * context, void * digest) -{ - DGT_Hash1GetDigest_R((u8 *)digest, context); -} - -static inline void MATH_MD5GetDigest (MATHMD5Context * context, void * digest) -{ - MATH_MD5GetHash(context, digest); -} - -static inline void MATH_SHA1Init (MATHSHA1Context * context) -{ - DGT_Hash2Reset(context); -} - -static inline void MATH_SHA1Update (MATHSHA1Context * context, const void * input, u32 length) -{ - DGT_Hash2SetSource(context, (u8 *)input, length); -} - -static inline void MATH_SHA1GetHash (MATHSHA1Context * context, void * digest) -{ - DGT_Hash2GetDigest(context, (u8 *)digest); -} - -static inline void MATH_SHA1GetDigest (MATHSHA1Context * context, void * digest) -{ - MATH_SHA1GetHash(context, digest); -} - -void MATH_CalcMD5(void * digest, const void * data, u32 dataLength); - -void MATH_CalcSHA1(void * digest, const void * data, u32 dataLength); - -static inline void MATH_CalcHMACMD5 (void * digest, const void * data, u32 dataLength, const void * key, u32 keyLength) -{ - DGT_Hash1CalcHmac(digest, (void *)data, (int)dataLength, (void *)key, (int)keyLength); -} - -static inline void MATH_CalcHMACSHA1 (void * digest, const void * data, u32 dataLength, const void * key, u32 keyLength) -{ - DGT_Hash2CalcHmac(digest, (void *)data, (int)dataLength, (void *)key, (int)keyLength); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/math/fft.h b/subprojects/NitroSDK/include/nitro/math/fft.h deleted file mode 100644 index 1e902567c7..0000000000 --- a/subprojects/NitroSDK/include/nitro/math/fft.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef NITRO_MATH_FFT_H_ -#define NITRO_MATH_FFT_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -void MATH_MakeFFTSinTable(fx16 * sinTable, u32 nShift); - -void MATHi_FFT(fx32 * data, u32 nShift, const fx16 * sinTable); - -void MATHi_IFFT(fx32 * data, u32 nShift, const fx16 * sinTable); - -void MATH_FFT(fx32 * data, u32 nShift, const fx16 * sinTable); - -void MATH_IFFT(fx32 * data, u32 nShift, const fx16 * sinTable); - -void MATH_FFTReal(fx32 * data, u32 nShift, const fx16 * sinTable, const fx16 * sinTable2); - -void MATH_IFFTReal(fx32 * data, u32 nShift, const fx16 * sinTable, const fx16 * sinTable2); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/math/math.h b/subprojects/NitroSDK/include/nitro/math/math.h deleted file mode 100644 index 9db37f9644..0000000000 --- a/subprojects/NitroSDK/include/nitro/math/math.h +++ /dev/null @@ -1,111 +0,0 @@ -#ifndef NITRO_MATH_MATH_H_ -#define NITRO_MATH_MATH_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define MATH_ABS(a) (((a) < 0) ? (-(a)) : (a)) - -SDK_INLINE int MATH_IAbs (int a) -{ - return (a < 0) ? -a : a; -} - -#define MATH_CLAMP(x, low, high) (((x) > (high)) ? (high) : (((x) < (low)) ? (low) : (x))) - -#define MATH_MIN(a, b) (((a) <= (b)) ? (a) : (b)) - -SDK_INLINE int MATH_IMin (int a, int b) -{ - return (a <= b) ? a : b; -} - -#define MATH_MAX(a, b) (((a) >= (b)) ? (a) : (b)) - -SDK_INLINE int MATH_IMax (int a, int b) -{ - return (a >= b) ? a : b; -} - -#define MATH_ROUNDUP(x, base) (((x) + ((base) - 1)) & ~((base) - 1)) - -#define MATH_ROUNDDOWN(x, base) ((x) & ~((base) - 1)) - -#define MATH_ROUNDUP32(x) MATH_ROUNDUP(x, 32) - -#define MATH_ROUNDDOWN32(x) MATH_ROUNDDOWN(x, 32) - -u32 MATH_CountLeadingZerosFunc(u32 x); - -#if !defined(PLATFORM_INTRINSIC_FUNCTION_BIT_CLZ32) - -#ifdef SDK_ARM9 -#if defined(SDK_CW) || defined(__MWERKS__) -#pragma thumb off -SDK_INLINE u32 MATH_CountLeadingZerosInline (u32 x) -{ - asm - { - clz x, x - } - return x; -} - -#pragma thumb reset -#elif defined(SDK_ADS) -TO BE DEFINED -#elif defined(SDK_GCC) -TO BE DEFINED -#endif -#endif -#endif - -#ifndef MATH_CountLeadingZeros -#if defined(PLATFORM_INTRINSIC_FUNCTION_BIT_CLZ32) -#define MATH_CountLeadingZeros(x) PLATFORM_INTRINSIC_FUNCTION_BIT_CLZ32(x) -#elif defined(SDK_ARM9) && defined(SDK_CODE_ARM) -#define MATH_CountLeadingZeros(x) MATH_CountLeadingZerosInline(x) -#else -#define MATH_CountLeadingZeros(x) MATH_CountLeadingZerosFunc(x) -#endif -#endif - -#define MATH_CLZ(x) MATH_CountLeadingZeros(x) - -SDK_INLINE int MATH_ILog2 (u32 x) -{ - return (int)(31 - MATH_CountLeadingZeros(x)); -} - -u8 MATH_CountPopulation(u32 x); - -SDK_INLINE u32 MATH_CountTrailingZeros (u32 x) -{ - return (u32)(32 - MATH_CountLeadingZeros((u32)(~x & (x - 1)))); -} - -#define MATH_CTZ(x) MATH_CountTrailingZeros(x) - -SDK_INLINE u32 MATH_GetLeastSignificantBit (u32 x) -{ - return (u32)(x & -(s32)x); -} - -#define MATH_LSB(x) MATH_GetLeastSignificantBit(x) - -SDK_INLINE u32 MATH_GetMostSignificantBit (u32 x) -{ - return (u32)(x & ((s32)0x80000000 >> MATH_CountLeadingZeros(x))); -} - -#define MATH_MSB(x) MATH_GetMostSignificantBit(x) - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/math/qsort.h b/subprojects/NitroSDK/include/nitro/math/qsort.h deleted file mode 100644 index 9274fc29e2..0000000000 --- a/subprojects/NitroSDK/include/nitro/math/qsort.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef NITRO_MATH_QSORT_H_ -#define NITRO_MATH_QSORT_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include - -typedef s32 (* MATHCompareFunc) (void * elem1, void * elem2); - -static inline u32 MATH_QSortStackSize (u32 num) -{ - int tmp = MATH_ILog2(num); - - if (tmp <= 0) { - return sizeof(u32); - } else { - return (u32)((MATH_ILog2(num) + 1) * sizeof(u32) * 2); - } -} - -void MATH_QSort(void * head, u32 num, u32 width, MATHCompareFunc comp, void * stackBuf); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/math/rand.h b/subprojects/NitroSDK/include/nitro/math/rand.h deleted file mode 100644 index 63e3fcc416..0000000000 --- a/subprojects/NitroSDK/include/nitro/math/rand.h +++ /dev/null @@ -1,62 +0,0 @@ -#include - -#ifndef NITRO_MATH_RAND_H_ -#define NITRO_MATH_RAND_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct { - u64 x; - u64 mul; - u64 add; -} MATHRandContext32; - -typedef struct { - u32 x; - u32 mul; - u32 add; -} MATHRandContext16; - -static inline void MATH_InitRand32 (MATHRandContext32 * context, u64 seed) -{ - context->x = seed; - context->mul = (1566083941LL << 32) + 1812433253LL; - context->add = 2531011; -} - -static inline u32 MATH_Rand32 (MATHRandContext32 * context, u32 max) -{ - context->x = context->mul * context->x + context->add; - - if (max == 0) { - return (u32)(context->x >> 32); - } else { - return (u32)(((context->x >> 32) * max) >> 32); - } -} - -static inline void MATH_InitRand16 (MATHRandContext16 * context, u32 seed) -{ - context->x = seed; - context->mul = 1566083941LL; - context->add = 2531011; -} - -static inline u16 MATH_Rand16 (MATHRandContext16 * context, u16 max) -{ - context->x = context->mul * context->x + context->add; - - if (max == 0) { - return (u16)(context->x >> 16); - } else { - return (u16)(((context->x >> 16) * max) >> 16); - } -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/mb.h b/subprojects/NitroSDK/include/nitro/mb.h deleted file mode 100644 index e6b32b3a32..0000000000 --- a/subprojects/NitroSDK/include/nitro/mb.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef NITRO_MB_H_ -#define NITRO_MB_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/mb/mb.h b/subprojects/NitroSDK/include/nitro/mb/mb.h deleted file mode 100644 index 26dae03303..0000000000 --- a/subprojects/NitroSDK/include/nitro/mb/mb.h +++ /dev/null @@ -1,288 +0,0 @@ -#ifndef NITRO_MB_MB_H_ -#define NITRO_MB_MB_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include - -#define MB_MAX_CHILD WM_NUM_MAX_CHILD - -#define MB_FILENAME_SIZE_MAX (10) - -#define MB_MAX_FILE (16) - -#define MB_SYSTEM_BUF_SIZE (0xC000) - -#define MB_COMM_PARENT_SEND_MIN 256 -#define MB_COMM_PARENT_SEND_MAX 510 - -#define MB_COMM_PARENT_RECV_MIN 8 -#define MB_COMM_PARENT_RECV_MAX 16 - -#define MB_SEGMENT_BUFFER_MIN 0x10000 - -#define MB_SUCCESS MB_ERRCODE_SUCCESS - -#define MB_TGID_AUTO 0x10000 - -#define MB_ICON_COLOR_NUM 16 -#define MB_ICON_PALETTE_SIZE (MB_ICON_COLOR_NUM * 2) -#define MB_ICON_DATA_SIZE 512 -#define MB_GAME_NAME_LENGTH 48 -#define MB_GAME_INTRO_LENGTH 96 -#define MB_USER_NAME_LENGTH 10 -#define MB_MEMBER_MAX_NUM 15 -#define MB_FILE_NO_MAX_NUM 64 -#define MB_GAME_INFO_RECV_LIST_NUM 16 - -#define MB_TYPE_ILLEGAL 0 -#define MB_TYPE_NORMAL 1 -#define MB_TYPE_MULTIBOOT 2 - -#define MB_BSSDESC_SIZE (sizeof(MBParentBssDesc)) -#define MB_DOWNLOAD_PARAMETER_SIZE HW_DOWNLOAD_PARAMETER_SIZE - -typedef enum { - MB_COMM_PSTATE_NONE, - MB_COMM_PSTATE_INIT_COMPLETE, - MB_COMM_PSTATE_CONNECTED, - MB_COMM_PSTATE_DISCONNECTED, - MB_COMM_PSTATE_KICKED, - MB_COMM_PSTATE_REQ_ACCEPTED, - MB_COMM_PSTATE_SEND_PROCEED, - MB_COMM_PSTATE_SEND_COMPLETE, - MB_COMM_PSTATE_BOOT_REQUEST, - MB_COMM_PSTATE_BOOT_STARTABLE, - MB_COMM_PSTATE_REQUESTED, - MB_COMM_PSTATE_MEMBER_FULL, - MB_COMM_PSTATE_END, - MB_COMM_PSTATE_ERROR, - MB_COMM_PSTATE_WAIT_TO_SEND, - - MB_COMM_PSTATE_WM_EVENT = 0x80000000 -} MBCommPState; - -typedef enum { - MB_COMM_RESPONSE_REQUEST_KICK, - MB_COMM_RESPONSE_REQUEST_ACCEPT, - MB_COMM_RESPONSE_REQUEST_DOWNLOAD, - MB_COMM_RESPONSE_REQUEST_BOOT -} MBCommResponseRequestType; - -typedef void (* MBCommPStateCallback) (u16 child_aid, u32 status, void * arg); - -typedef struct { - u16 errcode; -} MBErrorStatus; - -typedef enum { - MB_ERRCODE_SUCCESS = 0, - - MB_ERRCODE_INVALID_PARAM, - MB_ERRCODE_INVALID_STATE, - - MB_ERRCODE_INVALID_DLFILEINFO, - MB_ERRCODE_INVALID_BLOCK_NO, - MB_ERRCODE_INVALID_BLOCK_NUM, - MB_ERRCODE_INVALID_FILE, - MB_ERRCODE_INVALID_RECV_ADDR, - - MB_ERRCODE_WM_FAILURE, - - MB_ERRCODE_FATAL, - - MB_ERRCODE_MAX -} MBErrCode; - -typedef struct { - const char * romFilePathp; - - u16 * gameNamep; - - u16 * gameIntroductionp; - - const char * iconCharPathp; - - const char * iconPalettePathp; - - u32 ggid; - - u8 maxPlayerNum; - u8 pad[3]; - - u8 userParam[MB_DOWNLOAD_PARAMETER_SIZE]; -} MBGameRegistry; - -typedef struct { - u16 palette[MB_ICON_COLOR_NUM]; - u16 data[MB_ICON_DATA_SIZE / 2]; -} MBIconInfo; - -typedef struct { - u8 favoriteColor : 4; - - u8 playerNo : 4; - - u8 nameLength; - - u16 name[MB_USER_NAME_LENGTH]; -} MBUserInfo; - -typedef struct { - u16 length; - u16 rssi; - u16 bssid[3]; - u16 ssidLength; - u8 ssid[32]; - u16 capaInfo; - struct { - u16 basic; - u16 support; - } rateSet; - u16 beaconPeriod; - u16 dtimPeriod; - u16 channel; - u16 cfpPeriod; - u16 cfpMaxDuration; -} MBParentBssDesc; - -typedef struct { - u16 boot_type; - MBParentBssDesc parent_bss_desc; -} MBParam; - -typedef struct { - u32 ggid; - MBUserInfo userinfo; - u16 version; - u8 fileid; - u8 pad[3]; -} MBCommRequestData; - -int MB_Init(void * work, const MBUserInfo * user, u32 ggid, u32 tgid, u32 dma); - -int MB_GetParentSystemBufSize(void); - -BOOL MB_SetParentCommSize(u16 sendSize); - -BOOL MB_SetParentCommParam(u16 sendSize, u16 maxChildren); - -u16 MB_GetTgid(void); - -void MB_End(void); - -void MB_EndToIdle(void); - -void MB_DisconnectChild(u16 aid); - -int MB_StartParent(int channel); - -int MB_StartParentFromIdle(int channel); - -u8 MB_CommGetChildrenNumber(void); - -const MBUserInfo * MB_CommGetChildUser(u16 child_aid); - -int MB_CommGetParentState(u16 child); - -void MB_CommSetParentStateCallback(MBCommPStateCallback callback); - -u32 MB_GetSegmentLength(FSFile * file); - -BOOL MB_ReadSegment(FSFile * file, void * buf, u32 len); - -BOOL MB_RegisterFile(const MBGameRegistry * game_reg, const void * buf); - -void * MB_UnregisterFile(const MBGameRegistry * game_reg); - -BOOL MB_CommResponseRequest(u16 child_aid, MBCommResponseRequestType ack); - -static inline BOOL MB_CommStartSending (u16 child_aid) -{ - return MB_CommResponseRequest(child_aid, MB_COMM_RESPONSE_REQUEST_DOWNLOAD); -} - -static inline BOOL MB_CommStartSendingAll (void) -{ - u8 child, num; - - for (num = 0, child = 1; child <= WM_NUM_MAX_CHILD; child++) { - if (TRUE == MB_CommStartSending(child)) { - num++; - } - } - - if (num == 0) { - return FALSE; - } - - return TRUE; -} - -BOOL MB_CommIsBootable(u16 child_aid); - -static inline BOOL MB_CommBootRequest (u16 child_aid) -{ - return MB_CommResponseRequest(child_aid, MB_COMM_RESPONSE_REQUEST_BOOT); -} - -static inline BOOL MB_CommBootRequestAll (void) -{ - u8 child, num; - - for (num = 0, child = 1; child <= WM_NUM_MAX_CHILD; child++) { - if (TRUE == MB_CommBootRequest(child)) { - num++; - } - } - - if (num == 0) { - return FALSE; - } - - return TRUE; -} - -u16 MB_GetGameEntryBitmap(const MBGameRegistry * game_reg); - -static inline const MBParam * MB_GetMultiBootParam (void) -{ - return (const MBParam *)HW_WM_BOOT_BUF; -} - -static inline BOOL MB_IsMultiBootChild (void) -{ - return MB_GetMultiBootParam()->boot_type == MB_TYPE_MULTIBOOT; -} - -static inline const MBParentBssDesc * MB_GetMultiBootParentBssDesc (void) -{ - return MB_IsMultiBootChild() ? &MB_GetMultiBootParam()->parent_bss_desc : NULL; -} - -static inline const u8 * MB_GetMultiBootDownloadParameter (void) -{ - return MB_IsMultiBootChild() ? (const u8 *)HW_DOWNLOAD_PARAMETER : NULL; -} - -void MB_ReadMultiBootParentBssDesc(WMBssDesc * p_desc, - u16 parent_max_size, u16 child_max_size, BOOL ks_flag, - BOOL cs_flag); - -void MB_SetLifeTime(u16 tableNumber, u16 camLifeTime, u16 frameLifeTime, u16 mpLifeTime); - -void MB_SetPowerSaveMode(BOOL enable); - -#define MB_StartParentEx(channel) SDK_ERR("MB_StartParentEx() is discontinued. please use MB_StartParentFromIdle()\n") -#define MB_EndEx() SDK_ERR("MB_EndEx() is discontinued. please use MB_EndToIdle()\n") - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/mb/mb_child.h b/subprojects/NitroSDK/include/nitro/mb/mb_child.h deleted file mode 100644 index 53dcb09952..0000000000 --- a/subprojects/NitroSDK/include/nitro/mb/mb_child.h +++ /dev/null @@ -1,47 +0,0 @@ -#ifndef NITRO_MB_MB_CHILD_H_ -#define NITRO_MB_MB_CHILD_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -typedef enum { - MB_COMM_CSTATE_NONE, - MB_COMM_CSTATE_INIT_COMPLETE, - MB_COMM_CSTATE_CONNECT, - MB_COMM_CSTATE_CONNECT_FAILED, - MB_COMM_CSTATE_DISCONNECTED_BY_PARENT, - MB_COMM_CSTATE_REQ_ENABLE, - MB_COMM_CSTATE_REQ_REFUSED, - MB_COMM_CSTATE_DLINFO_ACCEPTED, - MB_COMM_CSTATE_RECV_PROCEED, - MB_COMM_CSTATE_RECV_COMPLETE, - MB_COMM_CSTATE_BOOTREQ_ACCEPTED, - MB_COMM_CSTATE_BOOT_READY, - MB_COMM_CSTATE_CANCELED, - MB_COMM_CSTATE_CANCELLED = MB_COMM_CSTATE_CANCELED, - MB_COMM_CSTATE_AUTHENTICATION_FAILED, - MB_COMM_CSTATE_MEMBER_FULL, - MB_COMM_CSTATE_GAMEINFO_VALIDATED, - MB_COMM_CSTATE_GAMEINFO_INVALIDATED, - MB_COMM_CSTATE_GAMEINFO_LOST, - MB_COMM_CSTATE_GAMEINFO_LIST_FULL, - MB_COMM_CSTATE_ERROR, - - MB_COMM_CSTATE_FAKE_END, - - MB_COMM_CSTATE_WM_EVENT = 0x80000000 -} MBCommCState; - -#define MBCommCStateCallback MBCommCStateCallbackFunc - -typedef void (* MBCommCStateCallbackFunc) (u32 status, void * arg); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/mb/mb_fake_child.h b/subprojects/NitroSDK/include/nitro/mb/mb_fake_child.h deleted file mode 100644 index 745a3529c2..0000000000 --- a/subprojects/NitroSDK/include/nitro/mb/mb_fake_child.h +++ /dev/null @@ -1,54 +0,0 @@ -#ifndef NITRO_MB_MB_FAKE_CHILD_H_ -#define NITRO_MB_MB_FAKE_CHILD_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -#define MB_FAKE_WORK_SIZE (0x5f20) - -enum { - MB_FAKESCAN_PARENT_FOUND, - MB_FAKESCAN_PARENT_LOST, - MB_FAKESCAN_API_ERROR, - MB_FAKESCAN_END_SCAN, - MB_FAKESCAN_PARENT_BEACON -}; - -typedef struct { - u16 index; - u16 padding; - MBGameInfo * gameInfo; - WMBssDesc * bssDesc; -} MBFakeScanCallback; - -typedef struct { - u16 apiid; - u16 errcode; -} MBFakeScanErrorCallback; - -typedef void (* MBFakeScanCallbackFunc) (u16 type, void * arg); -typedef BOOL (* MBFakeCompareGGIDCallbackFunc) (WMStartScanCallback * arg, u32 defaultGGID); - -void MB_FakeInit(void * buf, const MBUserInfo * user); -void MB_FakeEnd(void); -u32 MB_FakeGetWorkSize(void); -void MB_FakeSetCStateCallback(MBCommCStateCallbackFunc callback); -void MB_FakeStartScanParent(MBFakeScanCallbackFunc callback, u32 ggid); -void MB_FakeEndScan(void); -BOOL MB_FakeEntryToParent(u16 index); -BOOL MB_FakeGetParentGameInfo(u16 index, MBGameInfo * pGameInfo); -BOOL MB_FakeGetParentBssDesc(u16 index, WMBssDesc * pBssDesc); -BOOL MB_FakeReadParentBssDesc(u16 index, WMBssDesc * pBssDesc, u16 parent_max_size, - u16 child_max_size, BOOL ks_flag, BOOL cs_flag); -void MB_FakeSetVerboseScanCallback(WMCallbackFunc callback); -void MB_FakeSetCompareGGIDCallback(MBFakeCompareGGIDCallbackFunc callback); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/mb/mb_gameinfo.h b/subprojects/NitroSDK/include/nitro/mb/mb_gameinfo.h deleted file mode 100644 index 8eff1271da..0000000000 --- a/subprojects/NitroSDK/include/nitro/mb/mb_gameinfo.h +++ /dev/null @@ -1,65 +0,0 @@ -#ifndef NITRO_MB_MB_GAMEINFO_H_ -#define NITRO_MB_MB_GAMEINFO_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -#define MB_USER_VOLAT_DATA_SIZE 8 - -typedef void (* MBSendVolatCallbackFunc) (u32 ggid); - -typedef struct MBGameInfoFixed { - MBIconInfo icon; - MBUserInfo parent; - u8 maxPlayerNum; - u8 pad[1]; - u16 gameName[MB_GAME_NAME_LENGTH]; - u16 gameIntroduction[MB_GAME_INTRO_LENGTH]; -} MBGameInfoFixed, MbGameInfoFixed; - -typedef struct MBGameInfoVolatile { - u8 nowPlayerNum; - u8 pad[1]; - u16 nowPlayerFlag; - u16 changePlayerFlag; - MBUserInfo member[MB_MEMBER_MAX_NUM]; - u8 userVolatData[MB_USER_VOLAT_DATA_SIZE]; -} MBGameInfoVolatile, MbGameInfoVolatile; - -typedef enum MbBeaconDataAttr { - MB_BEACON_DATA_ATTR_FIXED_NORMAL = 0, - MB_BEACON_DATA_ATTR_FIXED_NO_ICON, - MB_BEACON_DATA_ATTR_VOLAT -} MBBeaconDataAttr, MbBeaconDataAttr; - -typedef struct MBGameInfo { - MBGameInfoFixed fixed; - MBGameInfoVolatile volat; - u16 broadcastedPlayerFlag; - u8 dataAttr; - u8 seqNoFixed; - u8 seqNoVolat; - u8 fileNo; - u8 pad[2]; - u32 ggid; - struct MBGameInfo * nextp; -} MBGameInfo, MbGameInfo; - -enum { - MB_SEND_VOLAT_CALLBACK_TIMMING_BEFORE, - MB_SEND_VOLAT_CALLBACK_TIMMING_AFTER -}; - -void MB_SetSendVolatCallback(MBSendVolatCallbackFunc callback, u32 timming); -void MB_SetUserVolatData(u32 ggid, const u8 * userData, u32 size); -void * MB_GetUserVolatData(const WMGameInfo * gameInfo); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/memorymap.h b/subprojects/NitroSDK/include/nitro/memorymap.h deleted file mode 100644 index 22e80d70a1..0000000000 --- a/subprojects/NitroSDK/include/nitro/memorymap.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef NITRO_MEMORYMAP_H_ -#define NITRO_MEMORYMAP_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef SDK_ARM9 -#include -#include -#include -#include -#include -#include - -#else -#include -#include -#include -#include -#include -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/memorymap_sp.h b/subprojects/NitroSDK/include/nitro/memorymap_sp.h deleted file mode 100644 index fc319c9272..0000000000 --- a/subprojects/NitroSDK/include/nitro/memorymap_sp.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef SDK_ARM7 -#define SDK_ARM7 -#endif -#ifdef SDK_ARM9 -#undef SDK_ARM9 -#endif -#include diff --git a/subprojects/NitroSDK/include/nitro/mi.h b/subprojects/NitroSDK/include/nitro/mi.h deleted file mode 100644 index 25aa30c8dd..0000000000 --- a/subprojects/NitroSDK/include/nitro/mi.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef NITRO_MI_H_ -#define NITRO_MI_H_ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/mi/allocator.h b/subprojects/NitroSDK/include/nitro/mi/allocator.h deleted file mode 100644 index b4d98aac29..0000000000 --- a/subprojects/NitroSDK/include/nitro/mi/allocator.h +++ /dev/null @@ -1,48 +0,0 @@ -#ifndef NITRO_MI_ALLOCATOR_H_ -#define NITRO_MI_ALLOCATOR_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" -{ -#endif - -typedef void * (* MIAllocatorAllocFunction)(void * userdata, u32 length, u32 alignment); -typedef void (* MIAllocatorFreeFunction)(void * userdata, void * buffer); - -typedef struct MIAllocator { - void * userdata; - MIAllocatorAllocFunction Alloc; - MIAllocatorFreeFunction Free; -} MIAllocator; - -PLATFORM_ATTRIBUTE_INLINE -void MI_InitAllocator (MIAllocator * allocator, void * userdata, - MIAllocatorAllocFunction alloc, - MIAllocatorFreeFunction free) -{ - allocator->userdata = userdata; - allocator->Alloc = alloc; - allocator->Free = free; -} - -PLATFORM_ATTRIBUTE_INLINE -void * MI_CallAlloc (MIAllocator * allocator, u32 length, u32 alignment) -{ - return allocator->Alloc(allocator->userdata, length, alignment); -} - -PLATFORM_ATTRIBUTE_INLINE -void MI_CallFree (MIAllocator * allocator, void * buffer) -{ - allocator->Free(allocator->userdata, buffer); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/mi/byteAccess.h b/subprojects/NitroSDK/include/nitro/mi/byteAccess.h deleted file mode 100644 index ffc9c5e3e2..0000000000 --- a/subprojects/NitroSDK/include/nitro/mi/byteAccess.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef NITRO_MI_BYTEACCESS_H_ -#define NITRO_MI_BYTEACCESS_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#ifdef SDK_TEG -u8 MI_ReadByte(const void * address); -#else -static inline u8 MI_ReadByte (const void * address) -{ - return *(u8 *)address; -} -#endif - -#ifdef SDK_TEG -void MI_WriteByte(void * address, u8 value); -#else -static inline void MI_WriteByte (void * address, u8 value) -{ - *(u8 *)address = value; -} -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/mi/cache.h b/subprojects/NitroSDK/include/nitro/mi/cache.h deleted file mode 100644 index 7eb4e0ad9c..0000000000 --- a/subprojects/NitroSDK/include/nitro/mi/cache.h +++ /dev/null @@ -1,49 +0,0 @@ -#ifndef NITRO_MI_CACHE_H_ -#define NITRO_MI_CACHE_H_ - -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" -{ -#endif - -typedef struct MICachePage { - struct MICachePage * next; - u32 offset; - u8 * buffer; -} MICachePage; - -typedef struct MICache { - u32 pagewidth; - MICachePage * valid; - MICachePage * invalid; - MICachePage * loading; - int valid_total; - int invalid_total; - int loading_total; -} MICache; - -#define MI_CACHE_BUFFER_WORKSIZE(page, total) \ - ((sizeof(MICachePage) + (page)) * (total)) - -void MI_InitCache(MICache * cache, u32 page, void * buffer, u32 length); - -BOOL MI_ReadCache(MICache * cache, void * buffer, u32 offset, u32 length); - -void MI_LoadCache(MICache * cache, MIDevice * device); - -PLATFORM_ATTRIBUTE_INLINE -BOOL MI_IsCacheLoading (const MICache * cache) -{ - return (cache->loading != NULL); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/mi/card.h b/subprojects/NitroSDK/include/nitro/mi/card.h deleted file mode 100644 index f7b8ba9698..0000000000 --- a/subprojects/NitroSDK/include/nitro/mi/card.h +++ /dev/null @@ -1,49 +0,0 @@ -#ifndef NITRO_MI_CARD_H_ -#define NITRO_MI_CARD_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -void MIi_LockCard(void); -void MIi_UnlockCard(void); - -static inline u32 MI_ReadCardID (void) -{ - u32 ret; - MIi_LockCard(); - ret = CARDi_ReadRomID(); - MIi_UnlockCard(); - return ret; -} - -static inline void MIi_ReadCard (u32 dmaNo, const void * src, void * dst, u32 size) -{ - MIi_LockCard(); - - (void)dmaNo; - CARD_ReadRom((MI_DMA_MAX_NUM + 1), src, dst, size); - MIi_UnlockCard(); -} - -void MIi_ReadCardAsync(u32 dmaNo, const void * srcp, void * dstp, u32 size, - MIDmaCallback callback, void * arg); - -static inline BOOL MIi_TryWaitCard (void) -{ - return CARD_TryWaitRomAsync(); -} - -static inline void MIi_WaitCard (void) -{ - CARD_WaitRomAsync(); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/mi/compress.h b/subprojects/NitroSDK/include/nitro/mi/compress.h deleted file mode 100644 index 8ba913c7d6..0000000000 --- a/subprojects/NitroSDK/include/nitro/mi/compress.h +++ /dev/null @@ -1,43 +0,0 @@ -#ifndef NITRO_MI_COMPRESS_H_ -#define NITRO_MI_COMPRESS_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -u32 MI_CompressLZImpl(const u8 * srcp, u32 size, u8 * dstp, BOOL exFormat); -u32 MI_CompressLZFastImpl(const u8 * srcp, u32 size, u8 * dstp, u8 * work, BOOL exFormat); - -inline u32 MI_CompressLZ (const u8 * srcp, u32 size, u8 * dstp) -{ - return MI_CompressLZImpl(srcp, size, dstp, FALSE); -} -inline u32 MI_CompressLZEx (const u8 * srcp, u32 size, u8 * dstp) -{ - return MI_CompressLZImpl(srcp, size, dstp, TRUE); -} -inline u32 MI_CompressLZFast (const u8 * srcp, u32 size, u8 * dstp, u8 * work) -{ - return MI_CompressLZFastImpl(srcp, size, dstp, work, FALSE); -} -inline u32 MI_CompressLZExFast (const u8 * srcp, u32 size, u8 * dstp, u8 * work) -{ - return MI_CompressLZFastImpl(srcp, size, dstp, work, TRUE); -} - -#define MI_LZ_FAST_COMPRESS_WORK_SIZE ((4096 + 256 + 256) * sizeof(s16)) - -u32 MI_CompressRL(const u8 * srcp, u32 size, u8 * dstp); - -#define MI_HUFFMAN_COMPRESS_WORK_SIZE (12288 + 512 + 1536) - -u32 MI_CompressHuffman(const u8 * srcp, u32 size, u8 * dstp, u8 huffBitSize, u8 * work); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/mi/device.h b/subprojects/NitroSDK/include/nitro/mi/device.h deleted file mode 100644 index 5ef559e305..0000000000 --- a/subprojects/NitroSDK/include/nitro/mi/device.h +++ /dev/null @@ -1,48 +0,0 @@ -#ifndef NITRO_MI_DEVICE_H_ -#define NITRO_MI_DEVICE_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" -{ -#endif - -typedef int (* MIDeviceReadFunction)(void * userdata, void * buffer, u32 offset, u32 length); -typedef int (* MIDeviceWriteFunction)(void * userdata, const void * buffer, u32 offset, u32 length); - -typedef struct MIDevice { - void * userdata; - MIDeviceReadFunction Read; - MIDeviceWriteFunction Write; -} MIDevice; - -PLATFORM_ATTRIBUTE_INLINE -void MI_InitDevice (MIDevice * device, void * userdata, - MIDeviceReadFunction read, - MIDeviceWriteFunction write) -{ - device->userdata = userdata; - device->Read = read; - device->Write = write; -} - -PLATFORM_ATTRIBUTE_INLINE -int MI_ReadDevice (MIDevice * device, void * buffer, u32 offset, u32 length) -{ - return device->Read(device->userdata, buffer, offset, length); -} - -PLATFORM_ATTRIBUTE_INLINE -int MI_WriteDevice (MIDevice * device, const void * buffer, u32 offset, u32 length) -{ - return device->Write(device->userdata, buffer, offset, length); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/mi/dma.h b/subprojects/NitroSDK/include/nitro/mi/dma.h deleted file mode 100644 index bcae920154..0000000000 --- a/subprojects/NitroSDK/include/nitro/mi/dma.h +++ /dev/null @@ -1,202 +0,0 @@ -#ifndef NITRO_MI_DMA_H_ -#define NITRO_MI_DMA_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include - -#define MI_DMA_MAX_NUM 3 - -#define MI_DMA_ENABLE (1UL << REG_MI_DMA0CNT_E_SHIFT) -#define MI_DMA_IF_ENABLE (1UL << REG_MI_DMA0CNT_I_SHIFT) - -#ifdef SDK_ARM9 -# define MI_DMA_TIMING_MASK (REG_MI_DMA0CNT_MODE_MASK) -# define MI_DMA_TIMING_SHIFT (REG_MI_DMA0CNT_MODE_SHIFT) -# define MI_DMA_TIMING_IMM (0UL << REG_MI_DMA0CNT_MODE_SHIFT) -# define MI_DMA_TIMING_V_BLANK (1UL << REG_MI_DMA0CNT_MODE_SHIFT) -# define MI_DMA_TIMING_H_BLANK (2UL << REG_MI_DMA0CNT_MODE_SHIFT) -# define MI_DMA_TIMING_DISP (3UL << REG_MI_DMA0CNT_MODE_SHIFT) -# define MI_DMA_TIMING_DISP_MMEM (4UL << REG_MI_DMA0CNT_MODE_SHIFT) -# define MI_DMA_TIMING_CARD (5UL << REG_MI_DMA0CNT_MODE_SHIFT) -# define MI_DMA_TIMING_CARTRIDGE (6UL << REG_MI_DMA0CNT_MODE_SHIFT) -# define MI_DMA_TIMING_GXFIFO (7UL << REG_MI_DMA0CNT_MODE_SHIFT) -# define MIi_DMA_TIMING_ANY (u32)(~0) -#else -# define MI_DMA_TIMING_MASK (REG_MI_DMA0CNT_TIMING_MASK) -# define MI_DMA_TIMING_SHIFT (REG_MI_DMA0CNT_TIMING_SHIFT) -# define MI_DMA_TIMING_IMM (0UL << REG_MI_DMA0CNT_TIMING_SHIFT) -# define MI_DMA_TIMING_V_BLANK (1UL << REG_MI_DMA0CNT_TIMING_SHIFT) -# define MI_DMA_TIMING_CARD (2UL << REG_MI_DMA0CNT_TIMING_SHIFT) -# define MI_DMA_TIMING_WIRELESS (3UL << REG_MI_DMA0CNT_TIMING_SHIFT) -# define MI_DMA_TIMING_CARTRIDGE MI_DMA_TIMING_WIRELESS -#endif - -#define MI_DMA_16BIT_BUS (0UL << REG_MI_DMA0CNT_SB_SHIFT) -#define MI_DMA_32BIT_BUS (1UL << REG_MI_DMA0CNT_SB_SHIFT) - -#define MI_DMA_CONTINUOUS_OFF (0UL << REG_MI_DMA0CNT_CM_SHIFT) -#define MI_DMA_CONTINUOUS_ON (1UL << REG_MI_DMA0CNT_CM_SHIFT) - -#define MI_DMA_SRC_INC (0UL << REG_MI_DMA0CNT_SAR_SHIFT) -#define MI_DMA_SRC_DEC (1UL << REG_MI_DMA0CNT_SAR_SHIFT) -#define MI_DMA_SRC_FIX (2UL << REG_MI_DMA0CNT_SAR_SHIFT) -#define MI_DMA_DEST_INC (0UL << REG_MI_DMA0CNT_DAR_SHIFT) -#define MI_DMA_DEST_DEC (1UL << REG_MI_DMA0CNT_DAR_SHIFT) -#define MI_DMA_DEST_FIX (2UL << REG_MI_DMA0CNT_DAR_SHIFT) -#define MI_DMA_DEST_RELOAD (3UL << REG_MI_DMA0CNT_DAR_SHIFT) - -#define MI_DMA_COUNT_MASK (REG_MI_DMA0CNT_WORDCNT_MASK) -#define MI_DMA_COUNT_SHIFT (REG_MI_DMA0CNT_WORDCNT_SHIFT) - -#define MI_DMA_SINC_DINC_16 (MI_DMA_SRC_INC | MI_DMA_DEST_INC | MI_DMA_16BIT_BUS) -#define MI_DMA_SFIX_DINC_16 (MI_DMA_SRC_FIX | MI_DMA_DEST_INC | MI_DMA_16BIT_BUS) -#define MI_DMA_SINC_DFIX_16 (MI_DMA_SRC_INC | MI_DMA_DEST_FIX | MI_DMA_16BIT_BUS) -#define MI_DMA_SFIX_DFIX_16 (MI_DMA_SRC_FIX | MI_DMA_DEST_FIX | MI_DMA_16BIT_BUS) -#define MI_DMA_SINC_DINC_32 (MI_DMA_SRC_INC | MI_DMA_DEST_INC | MI_DMA_32BIT_BUS) -#define MI_DMA_SFIX_DINC_32 (MI_DMA_SRC_FIX | MI_DMA_DEST_INC | MI_DMA_32BIT_BUS) -#define MI_DMA_SINC_DFIX_32 (MI_DMA_SRC_INC | MI_DMA_DEST_FIX | MI_DMA_32BIT_BUS) -#define MI_DMA_SFIX_DFIX_32 (MI_DMA_SRC_FIX | MI_DMA_DEST_FIX | MI_DMA_32BIT_BUS) - -#define MI_DMA_IMM16ENABLE (MI_DMA_ENABLE | MI_DMA_TIMING_IMM | MI_DMA_16BIT_BUS) -#define MI_DMA_IMM32ENABLE (MI_DMA_ENABLE | MI_DMA_TIMING_IMM | MI_DMA_32BIT_BUS) - -#define MI_CNT_CLEAR16(size) (MI_DMA_IMM16ENABLE | MI_DMA_SRC_FIX | MI_DMA_DEST_INC | ((size) / 2)) -#define MI_CNT_CLEAR32(size) (MI_DMA_IMM32ENABLE | MI_DMA_SRC_FIX | MI_DMA_DEST_INC | ((size) / 4)) -#define MI_CNT_CLEAR16_IF(size) (MI_CNT_CLEAR16((size)) | MI_DMA_IF_ENABLE) -#define MI_CNT_CLEAR32_IF(size) (MI_CNT_CLEAR32((size)) | MI_DMA_IF_ENABLE) - -#define MI_CNT_COPY16(size) (MI_DMA_IMM16ENABLE | MI_DMA_SRC_INC | MI_DMA_DEST_INC | ((size) / 2)) -#define MI_CNT_COPY32(size) (MI_DMA_IMM32ENABLE | MI_DMA_SRC_INC | MI_DMA_DEST_INC | ((size) / 4)) -#define MI_CNT_COPY16_IF(size) (MI_CNT_COPY16((size)) | MI_DMA_IF_ENABLE) -#define MI_CNT_COPY32_IF(size) (MI_CNT_COPY32((size)) | MI_DMA_IF_ENABLE) - -#define MI_CNT_SEND16(size) (MI_DMA_IMM16ENABLE | MI_DMA_SRC_INC | MI_DMA_DEST_FIX | ((size) / 2)) -#define MI_CNT_SEND32(size) (MI_DMA_IMM32ENABLE | MI_DMA_SRC_INC | MI_DMA_DEST_FIX | ((size) / 4)) -#define MI_CNT_SEND16_IF(size) (MI_CNT_SEND16((size)) | MI_DMA_IF_ENABLE) -#define MI_CNT_SEND32_IF(size) (MI_CNT_SEND32((size)) | MI_DMA_IF_ENABLE) - -#ifdef SDK_ARM9 -# define MI_CNT_HBCOPY16(size) (MI_DMA_ENABLE | MI_DMA_TIMING_H_BLANK | MI_DMA_SRC_INC | MI_DMA_DEST_RELOAD | MI_DMA_CONTINUOUS_ON | MI_DMA_16BIT_BUS | ((size) / 2)) -# define MI_CNT_HBCOPY32(size) (MI_DMA_ENABLE | MI_DMA_TIMING_H_BLANK | MI_DMA_SRC_INC | MI_DMA_DEST_RELOAD | MI_DMA_CONTINUOUS_ON | MI_DMA_32BIT_BUS | ((size) / 4)) -# define MI_CNT_HBCOPY16_IF(size) (MI_CNT_HBCOPY16((size)) | MI_DMA_IF_ENABLE) -# define MI_CNT_HBCOPY32_IF(size) (MI_CNT_HBCOPY32((size)) | MI_DMA_IF_ENABLE) -#endif - -#define MI_CNT_VBCOPY16(size) (MI_DMA_ENABLE | MI_DMA_TIMING_V_BLANK | MI_DMA_SRC_INC | MI_DMA_DEST_INC | MI_DMA_16BIT_BUS | ((size) / 2)) -#define MI_CNT_VBCOPY32(size) (MI_DMA_ENABLE | MI_DMA_TIMING_V_BLANK | MI_DMA_SRC_INC | MI_DMA_DEST_INC | MI_DMA_32BIT_BUS | ((size) / 4)) -#define MI_CNT_VBCOPY16_IF(size) (MI_CNT_VBCOPY16((size)) | MI_DMA_IF_ENABLE) -#define MI_CNT_VBCOPY32_IF(size) (MI_CNT_VBCOPY32((size)) | MI_DMA_IF_ENABLE) - -#define MI_CNT_CARDRECV32(size) (MI_DMA_ENABLE | MI_DMA_TIMING_CARD | MI_DMA_SRC_FIX | MI_DMA_DEST_INC | MI_DMA_32BIT_BUS | ((size) / 4)) - -#ifdef SDK_ARM9 -# define MI_CNT_MMCOPY(size) (MI_DMA_ENABLE | MI_DMA_TIMING_DISP_MMEM | MI_DMA_SRC_INC | MI_DMA_DEST_FIX | MI_DMA_CONTINUOUS_ON | MI_DMA_32BIT_BUS | (4)) -#endif - -#ifdef SDK_ARM9 -# define MI_CNT_GXCOPY(size) (MI_DMA_ENABLE | MI_DMA_TIMING_GXFIFO | MI_DMA_SRC_INC | MI_DMA_DEST_FIX | MI_DMA_32BIT_BUS | ((size) / 4)) -# define MI_CNT_GXCOPY_IF(size) (MI_CNT_GXCOPY(size) | MI_DMA_IF_ENABLE) -#endif - -typedef void (* MIDmaCallback) (void *); - -void MI_DmaFill32(u32 dmaNo, void * dest, u32 data, u32 size); - -void MI_DmaCopy32(u32 dmaNo, const void * src, void * dest, u32 size); - -static inline void MI_DmaClear32 (u32 dmaNo, void * dest, u32 size) -{ - MI_DmaFill32(dmaNo, dest, 0, size); -} - -void MI_DmaSend32(u32 dmaNo, const void * src, volatile void * dest, u32 size); - -void MI_DmaFill16(u32 dmaNo, void * dest, u16 data, u32 size); - -void MI_DmaCopy16(u32 dmaNo, const void * src, void * dest, u32 size); - -static inline void MI_DmaClear16 (u32 dmaNo, void * dest, u32 size) -{ - MI_DmaFill16(dmaNo, dest, 0, size); -} - -void MI_DmaSend16(u32 dmaNo, const void * src, volatile void * dest, u32 size); - -void MI_DmaFill32Async(u32 dmaNo, void * dest, u32 data, u32 size, MIDmaCallback callback, - void * arg); - -void MI_DmaCopy32Async(u32 dmaNo, const void * src, void * dest, u32 size, MIDmaCallback callback, - void * arg); - -static inline void MI_DmaClear32Async (u32 dmaNo, void * dest, u32 size, MIDmaCallback callback, - void * arg) -{ - MI_DmaFill32Async(dmaNo, dest, 0, size, callback, arg); -} - -void MI_DmaSend32Async(u32 dmaNo, const void * src, volatile void * dest, u32 size, - MIDmaCallback callback, void * arg); - -void MI_DmaFill16Async(u32 dmaNo, void * dest, u16 data, u32 size, MIDmaCallback callback, - void * arg); - -void MI_DmaCopy16Async(u32 dmaNo, const void * src, void * dest, u32 size, MIDmaCallback callback, - void * arg); - -static inline void MI_DmaClear16Async (u32 dmaNo, void * dest, u32 size, MIDmaCallback callback, - void * arg) -{ - MI_DmaFill16Async(dmaNo, dest, 0, size, callback, arg); -} - -void MI_DmaSend16Async(u32 dmaNo, const void * src, volatile void * dest, u32 size, - MIDmaCallback callback, void * arg); - -void MI_HBlankDmaCopy32(u32 dmaNo, const void * src, void * dest, u32 size); - -void MI_HBlankDmaCopy16(u32 dmaNo, const void * src, void * dest, u32 size); - -void MI_HBlankDmaCopy32If(u32 dmaNo, const void * src, void * dest, u32 size); - -void MI_HBlankDmaCopy16If(u32 dmaNo, const void * src, void * dest, u32 size); - -void MI_VBlankDmaCopy32(u32 dmaNo, const void * src, void * dest, u32 size); - -void MI_VBlankDmaCopy16(u32 dmaNo, const void * src, void * dest, u32 size); - -void MI_VBlankDmaCopy32Async(u32 dmaNo, const void * src, void * dest, u32 size, - MIDmaCallback callback, void * arg); - -void MI_VBlankDmaCopy16Async(u32 dmaNo, const void * src, void * dest, u32 size, - MIDmaCallback callback, void * arg); - -void MIi_CardDmaCopy32(u32 dmaNo, const void * src, void * dest, u32 size); - -void MI_DispMemDmaCopy(u32 dmaNo, const void * src); - -void MI_SendGXCommand(u32 dmaNo, const void * src, u32 commandLength); - -void MI_SendGXCommandAsync(u32 dmaNo, const void * src, u32 commandLength, MIDmaCallback callback, - void * arg); - -void MI_SendGXCommandFast(u32 dmaNo, const void * src, u32 commandLength); - -void MI_SendGXCommandAsyncFast(u32 dmaNo, const void * src, u32 commandLength, - MIDmaCallback callback, void * arg); - -BOOL MI_IsDmaBusy(u32 dmaNo); - -void MI_WaitDma(u32 dmaNo); - -void MI_StopDma(u32 dmaNo); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/mi/endian.h b/subprojects/NitroSDK/include/nitro/mi/endian.h deleted file mode 100644 index 61a1b13320..0000000000 --- a/subprojects/NitroSDK/include/nitro/mi/endian.h +++ /dev/null @@ -1,130 +0,0 @@ -#ifndef NITRO_MI_ENDIAN_H_ -#define NITRO_MI_ENDIAN_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include - -#define MI_SwapEndian8(val) (u8)(val) - -#define MI_SwapEndian16(val) (u16)( \ - (((val) & 0xFF00UL) >> 8UL) | \ - (((val) & 0x00FFUL) << 8UL)) - -#define MI_SwapEndian32(val) (u32)( \ - (((val) & 0xFF000000UL) >> 24UL) | \ - (((val) & 0x00FF0000UL) >> 8UL) | \ - (((val) & 0x0000FF00UL) << 8UL) | \ - (((val) & 0x000000FFUL) << 24UL)) - -#if (PLATFORM_BYTES_ENDIAN == PLATFORM_ENDIAN_LITTLE) -#define MIi_SwapEndian8IfLE(val) MI_SwapEndian8(val) -#define MIi_SwapEndian16IfLE(val) MI_SwapEndian16(val) -#define MIi_SwapEndian32IfLE(val) MI_SwapEndian32(val) -#define MIi_SwapEndian8IfBE(val) (val) -#define MIi_SwapEndian16IfBE(val) (val) -#define MIi_SwapEndian32IfBE(val) (val) -#else -#define MIi_SwapEndian8IfLE(val) (val) -#define MIi_SwapEndian16IfLE(val) (val) -#define MIi_SwapEndian32IfLE(val) (val) -#define MIi_SwapEndian8IfBE(val) MI_SwapEndian8(val) -#define MIi_SwapEndian16IfBE(val) MI_SwapEndian16(val) -#define MIi_SwapEndian32IfBE(val) MI_SwapEndian32(val) -#endif - -#define MI_HToLE8(val) MIi_SwapEndian8IfBE(val) -#define MI_HToBE8(val) MIi_SwapEndian8IfLE(val) -#define MI_HToLE16(val) MIi_SwapEndian16IfBE(val) -#define MI_HToBE16(val) MIi_SwapEndian16IfLE(val) -#define MI_HToLE32(val) MIi_SwapEndian32IfBE(val) -#define MI_HToBE32(val) MIi_SwapEndian32IfLE(val) - -#define MI_LEToH8(val) MIi_SwapEndian8IfBE(val) -#define MI_BEToH8(val) MIi_SwapEndian8IfLE(val) -#define MI_LEToH16(val) MIi_SwapEndian16IfBE(val) -#define MI_BEToH16(val) MIi_SwapEndian16IfLE(val) -#define MI_LEToH32(val) MIi_SwapEndian32IfBE(val) -#define MI_BEToH32(val) MIi_SwapEndian32IfLE(val) - -SDK_INLINE u8 MI_LoadLE8 (const void * ptr) -{ - const u8 * src = (const u8 *)ptr; - return (u8)((src[0] << 0UL)); -} -SDK_INLINE u16 MI_LoadLE16 (const void * ptr) -{ - const u8 * src = (const u8 *)ptr; - return (u16)((src[0] << 0UL) | (src[1] << 8UL)); -} -SDK_INLINE u32 MI_LoadLE32 (const void * ptr) -{ - const u8 * src = (const u8 *)ptr; - return (u32)((src[0] << 0UL) | (src[1] << 8UL) | (src[2] << 16UL) | (src[3] << 24UL)); -} - -SDK_INLINE u8 MI_LoadBE8 (const void * ptr) -{ - const u8 * src = (const u8 *)ptr; - return (u8)((src[0] << 0UL)); -} -SDK_INLINE u16 MI_LoadBE16 (const void * ptr) -{ - const u8 * src = (const u8 *)ptr; - return (u16)((src[0] << 8UL) | (src[1] << 0UL)); -} -SDK_INLINE u32 MI_LoadBE32 (const void * ptr) -{ - const u8 * src = (const u8 *)ptr; - return (u32)((src[0] << 24UL) | (src[1] << 16UL) | (src[2] << 8UL) | (src[3] << 0UL)); -} - -SDK_INLINE void MI_StoreLE8 (void * ptr, u8 val) -{ - u8 * src = (u8 *)ptr; - src[0] = (u8)(val >> 0UL); -} -SDK_INLINE void MI_StoreLE16 (void * ptr, u16 val) -{ - u8 * src = (u8 *)ptr; - src[0] = (u8)(val >> 0UL); - src[1] = (u8)(val >> 8UL); -} -SDK_INLINE void MI_StoreLE32 (void * ptr, u32 val) -{ - u8 * src = (u8 *)ptr; - src[0] = (u8)(val >> 0UL); - src[1] = (u8)(val >> 8UL); - src[2] = (u8)(val >> 16UL); - src[3] = (u8)(val >> 24UL); -} - -SDK_INLINE void MI_StoreBE8 (void * ptr, u8 val) -{ - u8 * src = (u8 *)ptr; - src[0] = (u8)(val >> 0UL); -} -SDK_INLINE void MI_StoreBE16 (void * ptr, u16 val) -{ - u8 * src = (u8 *)ptr; - src[0] = (u8)(val >> 8UL); - src[1] = (u8)(val >> 0UL); -} -SDK_INLINE void MI_StoreBE32 (void * ptr, u32 val) -{ - u8 * src = (u8 *)ptr; - src[0] = (u8)(val >> 24UL); - src[1] = (u8)(val >> 16UL); - src[2] = (u8)(val >> 8UL); - src[3] = (u8)(val >> 0UL); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/mi/exMemory.h b/subprojects/NitroSDK/include/nitro/mi/exMemory.h deleted file mode 100644 index 4c245a4f52..0000000000 --- a/subprojects/NitroSDK/include/nitro/mi/exMemory.h +++ /dev/null @@ -1,293 +0,0 @@ -#ifndef NITRO_MI_EXMEMORY_H_ -#define NITRO_MI_EXMEMORY_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#ifdef SDK_ARM7 -#define reg_MI_EXMEMCNT reg_MI_EXMEMCNT_L - -#define REG_MI_EXMEMCNT_EP_SHIFT REG_MI_EXMEMCNT_L_EP_SHIFT -#define REG_MI_EXMEMCNT_EP_SIZE REG_MI_EXMEMCNT_L_EP_SIZE -#define REG_MI_EXMEMCNT_EP_MASK REG_MI_EXMEMCNT_L_EP_MASK - -#define REG_MI_EXMEMCNT_MP_SHIFT REG_MI_EXMEMCNT_L_MP_SHIFT -#define REG_MI_EXMEMCNT_MP_SIZE REG_MI_EXMEMCNT_L_MP_SIZE -#define REG_MI_EXMEMCNT_MP_MASK REG_MI_EXMEMCNT_L_MP_MASK - -#define REG_MI_EXMEMCNT_CP_SHIFT REG_MI_EXMEMCNT_L_CP_SHIFT -#define REG_MI_EXMEMCNT_CP_SIZE REG_MI_EXMEMCNT_L_CP_SIZE -#define REG_MI_EXMEMCNT_CP_MASK REG_MI_EXMEMCNT_L_CP_MASK - -#define REG_MI_EXMEMCNT_PHI_SHIFT REG_MI_EXMEMCNT_L_PHI_SHIFT -#define REG_MI_EXMEMCNT_PHI_SIZE REG_MI_EXMEMCNT_L_PHI_SIZE -#define REG_MI_EXMEMCNT_PHI_MASK REG_MI_EXMEMCNT_L_PHI_MASK - -#define REG_MI_EXMEMCNT_ROM2nd_SHIFT REG_MI_EXMEMCNT_L_ROM2nd_SHIFT -#define REG_MI_EXMEMCNT_ROM2nd_SIZE REG_MI_EXMEMCNT_L_ROM2nd_SIZE -#define REG_MI_EXMEMCNT_ROM2nd_MASK REG_MI_EXMEMCNT_L_ROM2nd_MASK - -#define REG_MI_EXMEMCNT_ROM1st_SHIFT REG_MI_EXMEMCNT_L_ROM1st_SHIFT -#define REG_MI_EXMEMCNT_ROM1st_SIZE REG_MI_EXMEMCNT_L_ROM1st_SIZE -#define REG_MI_EXMEMCNT_ROM1st_MASK REG_MI_EXMEMCNT_L_ROM1st_MASK - -#define REG_MI_EXMEMCNT_RAM_SHIFT REG_MI_EXMEMCNT_L_RAM_SHIFT -#define REG_MI_EXMEMCNT_RAM_SIZE REG_MI_EXMEMCNT_L_RAM_SIZE -#define REG_MI_EXMEMCNT_RAM_MASK REG_MI_EXMEMCNT_L_RAM_MASK -#endif - -typedef enum { - MI_PROCESSOR_ARM9 = 0, - MI_PROCESSOR_ARM7 = 1 -} MIProcessor; - -typedef enum { - MIi_PHI_CLOCK_LOW = 0, - MIi_PHI_CLOCK_4MHZ = 1, - MIi_PHI_CLOCK_8MHZ = 2, - MIi_PHI_CLOCK_16MHZ = 3 -} MIiPhiClock; - -typedef enum { - MI_CTRDG_ROMCYCLE1_10 = 0, - MI_CTRDG_ROMCYCLE1_8 = 1, - MI_CTRDG_ROMCYCLE1_6 = 2, - MI_CTRDG_ROMCYCLE1_18 = 3 -} MICartridgeRomCycle1st; - -typedef enum { - MI_CTRDG_ROMCYCLE2_6 = 0, - MI_CTRDG_ROMCYCLE2_4 = 1 -} MICartridgeRomCycle2nd; - -typedef enum { - MI_CTRDG_RAMCYCLE_10 = 0, - MI_CTRDG_RAMCYCLE_8 = 1, - MI_CTRDG_RAMCYCLE_6 = 2, - MI_CTRDG_RAMCYCLE_18 = 3 -} MICartridgeRamCycle; - -typedef enum { - MI_WMWAIT0_1_9 = 0, - MI_WMWAIT0_1_7 = 1, - MI_WMWAIT0_1_5 = 2, - MI_WMWAIT0_1_17 = 3 -} MIWMWait0_1; - -typedef enum { - MI_WMWAIT0_2_5 = 0, - MI_WMWAIT0_2_3 = 1 -} MIWMWait0_2; - -typedef enum { - MI_WMWAIT1_1_9 = 0, - MI_WMWAIT1_1_7 = 1, - MI_WMWAIT1_1_5 = 2, - MI_WMWAIT1_1_17 = 3 -} MIWMWait1_1; - -typedef enum { - MI_WMWAIT1_2_9 = 0, - MI_WMWAIT1_2_3 = 1 -} MIWMWait1_2; - -typedef enum { - MI_PHI_CLOCK_CARTRIDGE = 0, - MI_PHI_CLOCK_33MHZ = 1 -} MIPhiControl; - -#define MI_PROCESSOR_ASSERT(x) SDK_ASSERT((u32)x <= MI_PROCESSOR_ARM7) -#define MI_PHICLOCK_ASSERT(x) SDK_ASSERT((u32)x <= MIi_PHI_CLOCK_16MHZ) - -#define MI_ROMCYCLE1_ASSERT(x) SDK_ASSERT((u32)x <= MI_CTRDG_ROMCYCLE1_18) -#define MI_ROMCYCLE2_ASSERT(x) SDK_ASSERT((u32)x <= MI_CTRDG_ROMCYCLE2_4) -#define MI_RAMCYCLE_ASSERT(x) SDK_ASSERT((u32)x <= MI_CTRDG_RAMCYCLE_18) - -#define MI_WMWAIT0_1_ASSERT(x) SDK_ASSERT((u32)x <= MI_WMWAIT0_1_17) -#define MI_WMWAIT0_2_ASSERT(x) SDK_ASSERT((u32)x <= MI_WMWAIT0_2_3) -#define MI_WMWAIT1_1_ASSERT(x) SDK_ASSERT((u32)x <= MI_WMWAIT1_1_17) -#define MI_WMWAIT1_2_ASSERT(x) SDK_ASSERT((u32)x <= MI_WMWAIT1_2_3) - -#define MI_PHICONTROL_ASSERT(x) SDK_ASSERT((u32)x <= MI_PHI_CLOCK_33MHZ) - -#ifdef SDK_ARM9 -static inline void MI_SetMainMemoryPriority (MIProcessor proc) -{ - MI_PROCESSOR_ASSERT(proc); - reg_MI_EXMEMCNT = - (u16)((reg_MI_EXMEMCNT & ~REG_MI_EXMEMCNT_EP_MASK) | (proc << REG_MI_EXMEMCNT_EP_SHIFT)); -} -#endif - -static inline MIProcessor MI_GetMainMemoryPriority (void) -{ - return (MIProcessor)((reg_MI_EXMEMCNT & REG_MI_EXMEMCNT_EP_MASK) >> REG_MI_EXMEMCNT_EP_SHIFT); -} - -#ifdef SDK_ARM9 -static inline void MIi_SetCardProcessor (MIProcessor proc) -{ - MI_PROCESSOR_ASSERT(proc); - reg_MI_EXMEMCNT = - (u16)((reg_MI_EXMEMCNT & ~REG_MI_EXMEMCNT_MP_MASK) | (proc << REG_MI_EXMEMCNT_MP_SHIFT)); -} -#endif - -static inline MIProcessor MI_GetCardProcessor (void) -{ - return (MIProcessor)((reg_MI_EXMEMCNT & REG_MI_EXMEMCNT_MP_MASK) >> REG_MI_EXMEMCNT_MP_SHIFT); -} - -#ifdef SDK_ARM9 -static inline void MIi_SetCartridgeProcessor (MIProcessor proc) -{ - MI_PROCESSOR_ASSERT(proc); - reg_MI_EXMEMCNT = - (u16)((reg_MI_EXMEMCNT & ~REG_MI_EXMEMCNT_CP_MASK) | (proc << REG_MI_EXMEMCNT_CP_SHIFT)); -} -#endif - -static inline MIProcessor MI_GetCartridgeProcessor (void) -{ - return (MIProcessor)((reg_MI_EXMEMCNT & REG_MI_EXMEMCNT_CP_MASK) >> REG_MI_EXMEMCNT_CP_SHIFT); -} - -static inline void MIi_SetPhiClock (MIiPhiClock clock) -{ - MI_PHICLOCK_ASSERT(clock); - reg_MI_EXMEMCNT = - (u16)((reg_MI_EXMEMCNT & ~REG_MI_EXMEMCNT_PHI_MASK) | (clock << REG_MI_EXMEMCNT_PHI_SHIFT)); -} - -static inline MIiPhiClock MIi_GetPhiClock (void) -{ - return (MIiPhiClock)((reg_MI_EXMEMCNT & REG_MI_EXMEMCNT_PHI_MASK) >> - REG_MI_EXMEMCNT_PHI_SHIFT); -} - -static inline void MI_SetCartridgeRomCycle1st (MICartridgeRomCycle1st c1) -{ - MI_ROMCYCLE1_ASSERT(c1); - reg_MI_EXMEMCNT = - (u16)((reg_MI_EXMEMCNT & ~REG_MI_EXMEMCNT_ROM1st_MASK) | - (c1 << REG_MI_EXMEMCNT_ROM1st_SHIFT)); -} - -static inline MICartridgeRomCycle1st MI_GetCartridgeRomCycle1st (void) -{ - return (MICartridgeRomCycle1st)((reg_MI_EXMEMCNT & REG_MI_EXMEMCNT_ROM1st_MASK) >> - REG_MI_EXMEMCNT_ROM1st_SHIFT); -} - -static inline void MI_SetCartridgeRomCycle2nd (MICartridgeRomCycle2nd c2) -{ - MI_ROMCYCLE2_ASSERT(c2); - reg_MI_EXMEMCNT = - (u16)((reg_MI_EXMEMCNT & ~REG_MI_EXMEMCNT_ROM2nd_MASK) | - (c2 << REG_MI_EXMEMCNT_ROM2nd_SHIFT)); -} - -static inline MICartridgeRomCycle2nd MI_GetCartridgeRomCycle2nd (void) -{ - return (MICartridgeRomCycle2nd)((reg_MI_EXMEMCNT & REG_MI_EXMEMCNT_ROM2nd_MASK) >> - REG_MI_EXMEMCNT_ROM2nd_SHIFT); -} - -void MI_SetAgbCartridgeFastestRomCycle(MICartridgeRomCycle1st * prev1st, - MICartridgeRomCycle2nd * prev2nd); - -static inline void MI_SetCartridgeRamCycle (MICartridgeRamCycle c) -{ - MI_RAMCYCLE_ASSERT(c); - reg_MI_EXMEMCNT = - (u16)((reg_MI_EXMEMCNT & ~REG_MI_EXMEMCNT_RAM_MASK) | (c << REG_MI_EXMEMCNT_RAM_SHIFT)); -} - -static inline MICartridgeRamCycle MI_GetCartridgeRamCycle (void) -{ - return (MICartridgeRamCycle)((reg_MI_EXMEMCNT & REG_MI_EXMEMCNT_RAM_MASK) >> - REG_MI_EXMEMCNT_RAM_SHIFT); -} - -#ifdef SDK_ARM7 - -static inline void MI_SetWM0Wait1st (MIWMWait0_1 wait) -{ - MI_WMWAIT0_1_ASSERT(wait); - reg_MI_EXMEMCNT_H = - (u16)((reg_MI_EXMEMCNT_H & ~REG_MI_EXMEMCNT_H_WW0_1st_MASK) | - (wait << REG_MI_EXMEMCNT_H_WW0_1st_SHIFT)); -} - -static inline MIWMWait0_1 MI_GetWM0Wait1st (void) -{ - return (MIWMWait0_1)((reg_MI_EXMEMCNT_H & REG_MI_EXMEMCNT_H_WW0_1st_MASK) >> - REG_MI_EXMEMCNT_H_WW0_1st_SHIFT); -} - -static inline void MI_SetWM0Wait2nd (MIWMWait0_2 wait) -{ - MI_WMWAIT0_2_ASSERT(wait); - reg_MI_EXMEMCNT_H = - (u16)((reg_MI_EXMEMCNT_H & ~REG_MI_EXMEMCNT_H_WW0_2nd_MASK) | - (wait << REG_MI_EXMEMCNT_H_WW0_2nd_SHIFT)); -} - -static inline MIWMWait0_2 MI_GetWM0Wait2nd (void) -{ - return (MIWMWait0_2)((reg_MI_EXMEMCNT_H & REG_MI_EXMEMCNT_H_WW0_2nd_MASK) >> - REG_MI_EXMEMCNT_H_WW0_2nd_SHIFT); -} - -static inline void MI_SetWM1Wait1st (MIWMWait1_1 wait) -{ - MI_WMWAIT1_1_ASSERT(wait); - reg_MI_EXMEMCNT_H = - (u16)((reg_MI_EXMEMCNT_H & ~REG_MI_EXMEMCNT_H_WW1_1st_MASK) | - (wait << REG_MI_EXMEMCNT_H_WW1_1st_SHIFT)); -} - -static inline MIWMWait1_1 MI_GetWM1Wait1st (void) -{ - return (MIWMWait1_1)((reg_MI_EXMEMCNT_H & REG_MI_EXMEMCNT_H_WW1_1st_MASK) >> - REG_MI_EXMEMCNT_H_WW1_1st_SHIFT); -} - -static inline void MI_SetWM1Wait2nd (MIWMWait1_2 wait) -{ - MI_WMWAIT1_2_ASSERT(wait); - reg_MI_EXMEMCNT_H = - (u16)((reg_MI_EXMEMCNT_H & ~REG_MI_EXMEMCNT_H_WW1_2nd_MASK) | - (wait << REG_MI_EXMEMCNT_H_WW0_2nd_SHIFT)); -} - -static inline MIWMWait1_2 MI_GetWM1Wait2nd (void) -{ - return (MIWMWait1_2)((reg_MI_EXMEMCNT_H & REG_MI_EXMEMCNT_H_WW1_2nd_MASK) >> - REG_MI_EXMEMCNT_H_WW1_2nd_SHIFT); -} - -static inline void MI_SetPhiControl (MIPhiControl control) -{ - MI_PHICONTROL_ASSERT(control); - reg_MI_EXMEMCNT_H = - (u16)((reg_MI_EXMEMCNT_H & ~REG_MI_EXMEMCNT_H_PHI33M_MASK) | - (control << REG_MI_EXMEMCNT_H_PHI33M_SHIFT)); -} - -static inline MIPhiControl MI_GetPhiControl (void) -{ - return (MIPhiControl)((reg_MI_EXMEMCNT_H & REG_MI_EXMEMCNT_H_PHI33M_MASK) >> - REG_MI_EXMEMCNT_H_PHI33M_SHIFT); -} - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/mi/init.h b/subprojects/NitroSDK/include/nitro/mi/init.h deleted file mode 100644 index 74c508204f..0000000000 --- a/subprojects/NitroSDK/include/nitro/mi/init.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef NITRO_MI_INIT_H_ -#define NITRO_MI_INIT_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -void MI_Init(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/mi/memory.h b/subprojects/NitroSDK/include/nitro/mi/memory.h deleted file mode 100644 index 59da2b8d2d..0000000000 --- a/subprojects/NitroSDK/include/nitro/mi/memory.h +++ /dev/null @@ -1,139 +0,0 @@ -#ifndef NITRO_MI_MEMORY_H_ -#define NITRO_MI_MEMORY_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -void MIi_CpuClear16(u16 data, void * destp, u32 size); -void MIi_CpuCopy16(const void * srcp, void * destp, u32 size); -void MIi_CpuSend16(const void * srcp, volatile void * destp, u32 size); - -void MIi_CpuClear32(u32 data, void * destp, u32 size); -void MIi_CpuCopy32(const void * srcp, void * destp, u32 size); -void MIi_CpuSend32(const void * srcp, volatile void * destp, u32 size); - -void MIi_CpuClearFast(u32 data, void * destp, u32 size); -void MIi_CpuCopyFast(const void * srcp, void * destp, u32 size); - -static inline void MI_CpuFill32 (void * dest, u32 data, u32 size) -{ - SDK_ASSERTMSG((size & 3) == 0, "size & 3 must be 0"); - SDK_ASSERTMSG(((u32)dest & 3) == 0, "destination address must be in 4-byte alignment"); - - MIi_CpuClear32(data, dest, size); -} - -static inline void MI_CpuCopy32 (const void * src, void * dest, u32 size) -{ - SDK_ASSERTMSG((size & 3) == 0, "size & 3 must be 0"); - SDK_ASSERTMSG(((u32)src & 3) == 0, "source address must be in 4-byte alignment"); - SDK_ASSERTMSG(((u32)dest & 3) == 0, "destination address must be in 4-byte alignment"); - - MIi_CpuCopy32(src, dest, size); -} - -static inline void MI_CpuClear32 (void * dest, u32 size) -{ - MI_CpuFill32(dest, 0, size); -} - -static inline void MI_CpuSend32 (const void * src, volatile void * dest, u32 size) -{ - SDK_ASSERTMSG((size & 3) == 0, "size & 3 must be 0"); - SDK_ASSERTMSG(((u32)src & 3) == 0, "source address must be in 4-byte alignment"); - SDK_ASSERTMSG(((u32)dest & 3) == 0, "destination address must be in 4-byte alignment"); - - MIi_CpuSend32(src, dest, size); -} - -static inline void MI_CpuFill16 (void * dest, u16 data, u32 size) -{ - SDK_ASSERTMSG((size & 1) == 0, "size & 1 must be 0"); - SDK_ASSERTMSG(((u32)dest & 1) == 0, "source address must be in 2-byte alignment"); - - MIi_CpuClear16(data, dest, size); -} - -static inline void MI_CpuCopy16 (const void * src, void * dest, u32 size) -{ - SDK_ASSERTMSG((size & 1) == 0, "size & 1 must be 0"); - SDK_ASSERTMSG(((u32)src & 1) == 0, "source address must be in 2-byte alignment"); - SDK_ASSERTMSG(((u32)dest & 1) == 0, "destination address must be in 2-byte alignment"); - - MIi_CpuCopy16(src, dest, size); -} - -static inline void MI_CpuClear16 (void * dest, u32 size) -{ - MI_CpuFill16(dest, 0, size); -} - -static inline void MI_CpuSend16 (const void * src, volatile void * dest, u32 size) -{ - SDK_ASSERTMSG((size & 1) == 0, "size & 1 must be 0"); - SDK_ASSERTMSG(((u32)src & 1) == 0, "source address must be in 2-byte alignment"); - SDK_ASSERTMSG(((u32)dest & 1) == 0, "destination address must be in 2-byte alignment"); - - MIi_CpuSend16(src, dest, size); -} - -static inline void MI_CpuFillFast (void * dest, u32 data, u32 size) -{ - SDK_ASSERTMSG((size & 3) == 0, "size & 3 must be 0"); - SDK_ASSERTMSG(((u32)dest & 3) == 0, "source address must be in 4-byte alignment"); - - MIi_CpuClearFast(data, dest, size); -} - -static inline void MI_CpuCopyFast (const void * src, void * dest, u32 size) -{ - SDK_ASSERTMSG((size & 3) == 0, "size & 3 must be 0"); - SDK_ASSERTMSG(((u32)src & 3) == 0, "source address must be in 4-byte alignment"); - SDK_ASSERTMSG(((u32)dest & 3) == 0, "destination address must be in 4-byte alignment"); - - MIi_CpuCopyFast(src, dest, size); -} - -static inline void MI_CpuClearFast (void * dest, u32 size) -{ - MI_CpuFillFast(dest, 0, size); -} - -void MI_CpuFill8(void * dest, u8 data, u32 size); - -void MI_CpuCopy8(const void * src, void * dest, u32 size); - -static inline void MI_CpuClear8 (void * dest, u32 size) -{ - MI_CpuFill8(dest, 0, size); -} - -#ifndef SDK_ASM -#define MI_ReadWord(adrs) (*(vu32 *)(adrs)) -#endif - -#ifndef SDK_ASM -#define MI_WriteWord(adrs, val) do {(*(vu32 *)(adrs)) = (u32)(val);} while (0) -#endif - -void MI_Copy16B(register const void * pSrc, register void * pDest); -void MI_Copy32B(register const void * pSrc, register void * pDest); -void MI_Copy36B(register const void * pSrc, register void * pDest); -void MI_Copy48B(register const void * pSrc, register void * pDest); -void MI_Copy64B(register const void * pSrc, register void * pDest); -void MI_Copy128B(register const void * pSrc, register void * pDest); - -void MI_Zero32B(register void * pDest); -void MI_Zero36B(register void * pDest); -void MI_Zero48B(register void * pDest); -void MI_Zero64B(register void * pDest); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/mi/stream.h b/subprojects/NitroSDK/include/nitro/mi/stream.h deleted file mode 100644 index 488dd882a1..0000000000 --- a/subprojects/NitroSDK/include/nitro/mi/stream.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef NITRO_MI_STREAM_H_ -#define NITRO_MI_STREAM_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef s32 (* MIi_InitReadStreamCallback) (const u8 * devicep, void * ramp, const void * paramp); -typedef s32 (* MIi_TerminateReadStreamCallback) (const u8 * devicep); -typedef u8 (* MIi_ReadByteStreamCallback) (const u8 * devicep); -typedef u16 (* MIi_ReadShortStreamCallback) (const u8 * devicep); -typedef u32 (* MIi_ReadWordStreamCallback) (const u8 * devicep); - -typedef struct { - MIi_InitReadStreamCallback initStream; - MIi_TerminateReadStreamCallback terminateStream; - MIi_ReadByteStreamCallback readByteStream; - MIi_ReadShortStreamCallback readShortStream; - MIi_ReadWordStreamCallback readWordStream; -} MIReadStreamCallbacks; - -MIReadStreamCallbacks * MI_GetReadStreamFromMemoryCallbacks(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/mi/swap.h b/subprojects/NitroSDK/include/nitro/mi/swap.h deleted file mode 100644 index d352875c22..0000000000 --- a/subprojects/NitroSDK/include/nitro/mi/swap.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef NITRO_MI_SWAP_H_ -#define NITRO_MI_SWAP_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -u32 MI_SwapWord(u32 setData, volatile u32 * destp); - -u8 MI_SwapByte(u32 setData, volatile u8 * destp); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/mi/uncomp_stream.h b/subprojects/NitroSDK/include/nitro/mi/uncomp_stream.h deleted file mode 100644 index 79ba6adeb2..0000000000 --- a/subprojects/NitroSDK/include/nitro/mi/uncomp_stream.h +++ /dev/null @@ -1,64 +0,0 @@ -#ifndef NITRO_MI_UNCOMP_STREAM_H_ -#define NITRO_MI_UNCOMP_STREAM_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct { - u8 * destp; - s32 destCount; - u16 destTmp; - u8 destTmpCnt; - u8 flags; - u16 length; - u8 _padding[2]; -} MIUncompContextRL; - -typedef struct { - u8 * destp; - s32 destCount; - u32 length; - u16 destTmp; - u8 destTmpCnt; - u8 flags; - u8 flagIndex; - u8 lengthFlg; - u8 exFormat; - u8 _padding[1]; -} MIUncompContextLZ; - -typedef struct { - u8 * destp; - s32 destCount; - u8 * treep; - u32 srcTmp; - u32 destTmp; - s16 treeSize; - u8 srcTmpCnt; - u8 destTmpCnt; - u8 bitSize; - u8 _padding2[3]; - u8 tree[0x200]; -} MIUncompContextHuffman; - -void MI_InitUncompContextRL(MIUncompContextRL * context, u8 * dest, - const MICompressionHeader * header); -void MI_InitUncompContextLZ(MIUncompContextLZ * context, u8 * dest, - const MICompressionHeader * header); -void MI_InitUncompContextHuffman(MIUncompContextHuffman * context, u8 * dest, - const MICompressionHeader * header); - -s32 MI_ReadUncompRL8(MIUncompContextRL * context, const u8 * data, u32 len); -s32 MI_ReadUncompRL16(MIUncompContextRL * context, const u8 * data, u32 len); -s32 MI_ReadUncompLZ8(MIUncompContextLZ * context, const u8 * data, u32 len); -s32 MI_ReadUncompLZ16(MIUncompContextLZ * context, const u8 * data, u32 len); -s32 MI_ReadUncompHuffman(MIUncompContextHuffman * context, const u8 * data, u32 len); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/mi/uncompress.h b/subprojects/NitroSDK/include/nitro/mi/uncompress.h deleted file mode 100644 index 3a0d30b348..0000000000 --- a/subprojects/NitroSDK/include/nitro/mi/uncompress.h +++ /dev/null @@ -1,67 +0,0 @@ -#ifndef NITRO_MI_UNCOMPRESS_H_ -#define NITRO_MI_UNCOMPRESS_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -typedef enum { - MI_COMPRESSION_LZ = 0x10, - MI_COMPRESSION_HUFFMAN = 0x20, - MI_COMPRESSION_RL = 0x30, - MI_COMPRESSION_DIFF = 0x80, - - MI_COMPRESSION_TYPE_MASK = 0xf0, - MI_COMPRESSION_TYPE_EX_MASK = 0xff -} MICompressionType; - -typedef struct { - u32 compParam : 4; - u32 compType : 4; - u32 destSize : 24; -} MICompressionHeader; - -typedef struct { - u16 srcNum; - u16 srcBitNum : 8; - u16 destBitNum : 8; - u32 destOffset : 31; - u32 destOffset0_on : 1; -} MIUnpackBitsParam; - -void MI_UnpackBits(const void * srcp, void * destp, MIUnpackBitsParam * paramp); - -void MI_UncompressLZ8(const void * srcp, void * destp); - -void MI_UncompressLZ16(const void * srcp, void * destp); - -void MI_UncompressHuffman(const void * srcp, void * destp); - -void MI_UncompressRL8(const void * srcp, void * destp); - -void MI_UncompressRL16(const void * srcp, void * destp); - -void MI_UnfilterDiff8(const void * srcp, void * destp); - -void MI_UnfilterDiff16(const void * srcp, void * destp); - -static inline u32 MI_GetUncompressedSize (const void * srcp) -{ - return (*(u32 *)srcp >> 8); -} - -static inline MICompressionType MI_GetCompressionType (const void * srcp) -{ - return (MICompressionType)(*(u32 *)srcp & MI_COMPRESSION_TYPE_MASK); -} - -void MIi_UncompressBackward(void * bottom); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/mi/wram.h b/subprojects/NitroSDK/include/nitro/mi/wram.h deleted file mode 100644 index dbb091a4bb..0000000000 --- a/subprojects/NitroSDK/include/nitro/mi/wram.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef NITRO_MI_WRAM_H_ -#define NITRO_MI_WRAM_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#ifdef SDK_ARM9 -typedef enum { - MI_WRAM_ARM9_ALL = 0 << REG_GX_VRAMCNT_WRAM_BANK_SHIFT, - MI_WRAM_1616_1 = 1 << REG_GX_VRAMCNT_WRAM_BANK_SHIFT, - MI_WRAM_1616_2 = 2 << REG_GX_VRAMCNT_WRAM_BANK_SHIFT, - MI_WRAM_ARM7_ALL = 3 << REG_GX_VRAMCNT_WRAM_BANK_SHIFT -} MIWram; -#else -typedef enum { - MI_WRAM_ARM9_ALL = (REG_MI_WVRAMSTAT_WRAM_1_MASK | REG_MI_WVRAMSTAT_WRAM_0_MASK), - MI_WRAM_1616_1 = (REG_MI_WVRAMSTAT_WRAM_0_MASK), - MI_WRAM_1616_2 = (REG_MI_WVRAMSTAT_WRAM_1_MASK), - MI_WRAM_ARM7_ALL = 0 -} MIWram; -#endif - -#ifdef SDK_ARM9 -void MI_SetWramBank(MIWram cnt); -#endif - -MIWram MI_GetWramBank(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/misc.h b/subprojects/NitroSDK/include/nitro/misc.h deleted file mode 100644 index a5fae4b3b3..0000000000 --- a/subprojects/NitroSDK/include/nitro/misc.h +++ /dev/null @@ -1,199 +0,0 @@ -#ifndef NITRO_MISC_H_ -#define NITRO_MISC_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#ifdef __cplusplus -#define SDK_IFDEFCPP extern "C" { -#define SDK_ENDIFCPP } -#else -#define SDK_IFDEFCPP -#define SDK_ENDIFCPP -#endif - -#ifdef SDK_DEBUG -#ifndef SDK_ASSERT -#define SDK_ASSERT(exp) \ - (void)((exp) || (OSi_Panic(__FILE__, __LINE__, "Failed assertion " #exp), 0)) -#endif -#else -#ifndef SDK_ASSERT -#define SDK_ASSERT(exp) ((void)0) -#endif -#endif - -#define SDK_COMPILER_ASSERT(expr) \ - extern void sdk_compiler_assert ## __LINE__(char is[(expr) ? +1 : -1]) - -#ifdef SDK_DEBUG -#ifndef SDK_ASSERTMSG -#define SDK_ASSERTMSG(exp, ...) \ - (void)((exp) || (OSi_Panic(__FILE__, __LINE__, __VA_ARGS__), 0)) -#endif -#ifndef SDK_TASSERTMSG -#define SDK_TASSERTMSG(exp, ...) \ - (void)((exp) || (OSi_TPanic(__FILE__, __LINE__, __VA_ARGS__), 0)) -#endif -#else -#ifndef SDK_ASSERTMSG -#define SDK_ASSERTMSG(exp, ...) ((void)0) -#endif -#ifndef SDK_TASSERTMSG -#define SDK_TASSERTMSG(exp, ...) ((void)0) -#endif -#endif - -#ifdef SDK_DEBUG -#ifndef SDK_WARNING -#define SDK_WARNING(exp, ...) \ - (void)((exp) || (OSi_Warning(__FILE__, __LINE__, __VA_ARGS__), 0)) -#endif -#ifndef SDK_TWARNING -#define SDK_TWARNING(exp, ...) \ - (void)((exp) || (OSi_TWarning(__FILE__, __LINE__, __VA_ARGS__), 0)) -#endif -#else -#ifndef SDK_WARNING -#define SDK_WARNING(exp, ...) ((void)0) -#endif -#ifndef SDK_TWARNING -#define SDK_TWARNING(exp, ...) ((void)0) -#endif -#endif - -#ifdef SDK_DEBUG -#ifndef SDK_NULL_ASSERT -#define SDK_NULL_ASSERT(exp) \ - (void)(((exp) != NULL) || (OSi_Panic(__FILE__, __LINE__, "Pointer must not be NULL ("#exp ")"), 0)) -#endif -#else -#ifndef SDK_NULL_ASSERT -#define SDK_NULL_ASSERT(exp) ((void)0) -#endif -#endif - -#ifdef SDK_DEBUG -#ifndef SDK_MIN_ASSERT -#define SDK_MIN_ASSERT(exp, min) \ - (void)(((exp) >= (min)) || \ - (OSi_Panic(__FILE__, __LINE__, #exp " is out of bounds(%d)\n%d <= "#exp " not satisfied.", exp, min), 0)) -#endif -#else -#ifndef SDK_MIN_ASSERT -#define SDK_MIN_ASSERT(exp, min) ((void)0) -#endif -#endif - -#ifdef SDK_DEBUG -#ifndef SDK_MAX_ASSERT -#define SDK_MAX_ASSERT(exp, max) \ - (void)(((exp) <= (max)) || \ - (OSi_Panic(__FILE__, __LINE__, #exp " is out of bounds(%d)\n"#exp " <= %d not satisfied.", exp, max), 0)) -#endif -#else -#ifndef SDK_MAX_ASSERT -#define SDK_MAX_ASSERT(exp, max) ((void)0) -#endif -#endif - -#ifdef SDK_DEBUG -#ifndef SDK_MINMAX_ASSERT -#define SDK_MINMAX_ASSERT(exp, min, max) \ - (void)(((exp) >= (min) && (exp) <= (max)) || \ - (OSi_Panic(__FILE__, __LINE__, #exp " is out of bounds(%d)\n%d <= "#exp " <= %d not satisfied.", exp, min, max), 0)) -#endif -#else -#ifndef SDK_MINMAX_ASSERT -#define SDK_MINMAX_ASSERT(exp, min, max) ((void)0) -#endif -#endif - -#ifdef SDK_DEBUG -#ifndef SDK_FATAL_ERROR -#define SDK_FATAL_ERROR(...) \ - (void)(OSi_Panic(__FILE__, __LINE__, "Fatal Error\n"__VA_ARGS__), 0) -#endif -#ifndef SDK_TFATAL_ERROR -#define SDK_TFATAL_ERROR(...) \ - (void)(OSi_TPanic(__FILE__, __LINE__, "Fatal Error\n"__VA_ARGS__), 0) -#endif -#else -#ifndef SDK_FATAL_ERROR -#define SDK_FATAL_ERROR(...) ((void)0) -#endif -#ifndef SDK_TFATAL_ERROR -#define SDK_TFATAL_ERROR(...) ((void)0) -#endif -#endif - -#ifdef SDK_DEBUG -#ifndef SDK_INTERNAL_ERROR -#define SDK_INTERNAL_ERROR(...) \ - (void)(OSi_Panic(__FILE__, __LINE__, "SDK Internal error\nPlease e-mail to nintendo\n" __VA_ARGS__), 0) -#endif -#ifndef SDK_TINTERNAL_ERROR -#define SDK_TINTERNAL_ERROR(...) \ - (void)(OSi_TPanic(__FILE__, __LINE__, "SDK Internal error\nPlease e-mail to nintendo\n" __VA_ARGS__), 0) -#endif -#else -#ifndef SDK_INTERNAL_ERROR -#define SDK_INTERNAL_ERROR(...) ((void)0) -#endif -#ifndef SDK_TINTERNAL_ERROR -#define SDK_TINTERNAL_ERROR(...) ((void)0) -#endif -#endif - -#ifdef SDK_DEBUG -#ifndef SDK_ALIGN4_ASSERT -#define SDK_ALIGN4_ASSERT(exp) \ - (void)((((u32)(exp) & 3) == 0) || (OSi_Panic(__FILE__, __LINE__, "Alignment Error(0x%x)\n"#exp " must be aligned to 4 bytes boundary.", exp), 0)) -#endif -#else -#ifndef SDK_ALIGN4_ASSERT -#define SDK_ALIGN4_ASSERT(exp) ((void)0) -#endif -#endif - -#ifdef SDK_DEBUG -#ifndef SDK_ALIGN2_ASSERT -#define SDK_ALIGN2_ASSERT(exp) \ - (void)((((u32)(exp) & 1) == 0) || (OSi_Panic(__FILE__, __LINE__, "Alignment Error(0x%x)\n"#exp " must be aligned to 2 bytes boundary.", exp), 0)) -#endif -#else -#ifndef SDK_ALIGN2_ASSERT -#define SDK_ALIGN2_ASSERT(exp) ((void)0) -#endif -#endif - -void OSi_ReferSymbol(void * symbol); -#define SDK_REFER_SYMBOL(symbol) OSi_ReferSymbol((void *)(symbol)) - -#define SDK_MIDDLEWARE_STRING(vender, module) "[SDK+" vender ":" module "]" -#define SDK_DEFINE_MIDDLEWARE(id, vender, module) static char id [] = SDK_MIDDLEWARE_STRING(vender, module) -#define SDK_USING_MIDDLEWARE(id) SDK_REFER_SYMBOL(id) - -SDK_INLINE -void * OSi_AbortByUnsupportedRegister (const char * regname, const char * file, int line) -{ - (void)regname; - (void)file; - (void)line; - OSi_TPanic(file, line, " I/O register \"%s\" is unsupported on this platform!", regname); - return 0; -} -#define OS_UNSUPPORTED_REGADDR(reg) OSi_AbortByUnsupportedRegister(#reg, __FILE__, __LINE__) -#define OS_UNSUPPORTED_REG8(reg) *(REGType8 *)OSi_AbortByUnsupportedRegister(#reg, __FILE__, __LINE__) -#define OS_UNSUPPORTED_REG16(reg) *(REGType16 *)OSi_AbortByUnsupportedRegister(#reg, __FILE__, __LINE__) -#define OS_UNSUPPORTED_REG32(reg) *(REGType32 *)OSi_AbortByUnsupportedRegister(#reg, __FILE__, __LINE__) -#define OS_UNSUPPORTED_REG64(reg) *(REGType64 *)OSi_AbortByUnsupportedRegister(#reg, __FILE__, __LINE__) - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/os.h b/subprojects/NitroSDK/include/nitro/os.h deleted file mode 100644 index c10d44da2d..0000000000 --- a/subprojects/NitroSDK/include/nitro/os.h +++ /dev/null @@ -1,51 +0,0 @@ -#ifndef NITRO_OS_H_ -#define NITRO_OS_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#ifdef SDK_ARM9 -#include -#include -#include -#include -#include -#include -#include -#else -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/os/ARM9/argument.h b/subprojects/NitroSDK/include/nitro/os/ARM9/argument.h deleted file mode 100644 index 33431742b9..0000000000 --- a/subprojects/NitroSDK/include/nitro/os/ARM9/argument.h +++ /dev/null @@ -1,121 +0,0 @@ -#ifndef NITRO_OS_ARGUMENT_H_ -#define NITRO_OS_ARGUMENT_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef SDK_FINALROM -#define OS_NO_ARGUMENT TRUE -#endif - -#ifdef OS_ARGUMENT_FORCE_TO_BE_AVAILABLE -#ifdef OS_NO_ARGUMENT -#undef OS_NO_ARGUMENT -#endif -#endif - -#if (defined(SDK_WIN32) || defined(SDK_FROM_TOOL)) -#define SDK_ASSERT(exp) ((void)0) -#define SDK_ALIGN4_ASSERT(exp) ((void)0) -#define SDK_MINMAX_ASSERT(exp, min, max) ((void)0) -#define SDK_NULL_ASSERT(exp) ((void)0) - -#if (defined(_MSC_VER) && !defined(__cplusplus)) -#define inline __inline -#endif -#endif - -#define OS_ARGUMENT_BUFFER_SIZE 256 - -#define OS_ARGUMENT_ID_STRING ":$@$Argument$@$:" -#define OS_ARGUMENT_ID_STRING_BUFFER_SIZE 18 - -typedef struct OSArgumentBuffer { - char argMark[OS_ARGUMENT_ID_STRING_BUFFER_SIZE]; - u16 size; -#if defined(SDK_WIN32) || defined(SDK_FROM_TOOL) - char buffer[OS_ARGUMENT_BUFFER_SIZE]; -#else - const char buffer[OS_ARGUMENT_BUFFER_SIZE]; -#endif -} OSArgumentBuffer; - -#ifndef OS_NO_ARGUMENT -extern int OS_GetArgc(void); -#else -static inline int OS_GetArgc (void) -{ - return 0; -} -#endif - -#ifndef OS_NO_ARGUMENT -extern const char * OS_GetArgv(int n); -#else -static inline const char * OS_GetArgv (int n) -{ -#pragma unused(n) - return NULL; -} -#endif - -#ifndef OS_NO_ARGUMENT -int OS_GetOpt(const char * optstring); -#else -static inline int OS_GetOpt (const char * optstring) -{ -#pragma unused(optstring) - return -1; -} -#endif - -extern const char * OSi_OptArg; -extern int OSi_OptInd; -extern int OSi_OptOpt; - -static inline const char * OS_GetOptArg (void) -{ - return OSi_OptArg; -} -static inline int OS_GetOptInd (void) -{ - return OSi_OptInd; -} -static inline int OS_GetOptOpt (void) -{ - return OSi_OptOpt; -} - -#ifndef OS_NO_ARGUMENT -extern void OS_ConvertToArguments(const char * str, char cs, char * buffer, u32 bufSize); -#else -static inline void OS_ConvertToArguments (const char * str, char cs, char * buffer, u32 bufSize) -{ -#pragma unused(str, cs, buffer, bufSize) -} -#endif - -#ifndef OS_NO_ARGUMENT -extern void OS_SetArgumentBuffer(const char * buffer); -#else -static inline void OS_SetArgumentBuffer (const char * buffer) -{ -#pragma unused(buffer) -} -#endif - -#ifndef OS_NO_ARGUMENT -extern const char * OS_GetArgumentBuffer(void); -#else -static inline const char * OS_GetArgumentBuffer (void) -{ - return NULL; -} -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/os/ARM9/cache.h b/subprojects/NitroSDK/include/nitro/os/ARM9/cache.h deleted file mode 100644 index 06abfa231b..0000000000 --- a/subprojects/NitroSDK/include/nitro/os/ARM9/cache.h +++ /dev/null @@ -1,81 +0,0 @@ -#ifndef NITRO_OS_CACHE_H_ -#define NITRO_OS_CACHE_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -BOOL DC_Enable(); - -BOOL DC_Disable(); - -BOOL DC_Restore(BOOL enable); - -void DC_InvalidateAll(void); - -void DC_StoreAll(void); - -void DC_FlushAll(void); - -void DC_InvalidateRange(void * startAddr, u32 nBytes); - -void DC_StoreRange(const void * startAddr, u32 nBytes); - -void DC_FlushRange(const void * startAddr, u32 nBytes); - -void DC_TouchRange(const void * startAddr, u32 nBytes); - -void DC_LockdownRange(const void * startAddr, u32 nBytes); - -void DC_UnlockdownAll(void); - -void DC_Unlockdown(u32 num); - -void DC_WaitWriteBufferEmpty(void); - -static inline void DC_CleanAll (void) -{ - DC_StoreAll(); -} - -static inline void DC_CleanAndInvalidateAll (void) -{ - DC_FlushAll(); -} - -static inline void DC_CleanRange (const void * startAddr, u32 nBytes) -{ - DC_StoreRange(startAddr, nBytes); -} - -static inline void DC_CleanAndInvalidateRange (const void * startAddr, u32 nBytes) -{ - DC_FlushRange(startAddr, nBytes); -} - -BOOL IC_Enable(); - -BOOL IC_Disable(); - -BOOL IC_Restore(BOOL enable); - -void IC_InvalidateAll(void); - -void IC_InvalidateRange(void * startAddr, u32 nBytes); - -void IC_PrefetchRange(const void * startAddr, u32 nBytes); - -void IC_LockdownRange(const void * startAddr, u32 nBytes); - -void IC_Unlockdown(u32 num); - -void IC_UnlockdownAll(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/os/ARM9/china.h b/subprojects/NitroSDK/include/nitro/os/ARM9/china.h deleted file mode 100644 index c25a48507e..0000000000 --- a/subprojects/NitroSDK/include/nitro/os/ARM9/china.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef NITRO_OS_ARM9_CHINA_H_ -#define NITRO_OS_ARM9_CHINA_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#define OS_BURY_STRING_FORCHINA "[SDK+NINTENDO:FORCHINA]" -#define OS_BUSY_STRING_LEN_FORCHINA 23 - -void OS_InitChina(const char ** isbn); - -void OS_ShowAttentionChina(const char ** isbn); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/os/ARM9/protectionRegion.h b/subprojects/NitroSDK/include/nitro/os/ARM9/protectionRegion.h deleted file mode 100644 index b79e1cd284..0000000000 --- a/subprojects/NitroSDK/include/nitro/os/ARM9/protectionRegion.h +++ /dev/null @@ -1,158 +0,0 @@ -#ifndef NITRO_OS_PROTECTIONREGION_H_ -#define NITRO_OS_PROTECTIONREGION_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -#define OS_PR0_ACCESS_MASK (HW_C5_PERMIT_MASK << HW_C5_PR0_SFT) -#define OS_PR0_ACCESS_NA (HW_C5_PERMIT_NA << HW_C5_PR0_SFT) -#define OS_PR0_ACCESS_RW (HW_C5_PERMIT_RW << HW_C5_PR0_SFT) -#define OS_PR0_ACCESS_RO (HW_C5_PERMIT_RO << HW_C5_PR0_SFT) - -#define OS_PR1_ACCESS_MASK (HW_C5_PERMIT_MASK << HW_C5_PR1_SFT) -#define OS_PR1_ACCESS_NA (HW_C5_PERMIT_NA << HW_C5_PR1_SFT) -#define OS_PR1_ACCESS_RW (HW_C5_PERMIT_RW << HW_C5_PR1_SFT) -#define OS_PR1_ACCESS_RO (HW_C5_PERMIT_RO << HW_C5_PR1_SFT) - -#define OS_PR2_ACCESS_MASK (HW_C5_PERMIT_MASK << HW_C5_PR2_SFT) -#define OS_PR2_ACCESS_NA (HW_C5_PERMIT_NA << HW_C5_PR2_SFT) -#define OS_PR2_ACCESS_RW (HW_C5_PERMIT_RW << HW_C5_PR2_SFT) -#define OS_PR2_ACCESS_RO (HW_C5_PERMIT_RO << HW_C5_PR2_SFT) - -#define OS_PR3_ACCESS_MASK (HW_C5_PERMIT_MASK << HW_C5_PR3_SFT) -#define OS_PR3_ACCESS_NA (HW_C5_PERMIT_NA << HW_C5_PR3_SFT) -#define OS_PR3_ACCESS_RW (HW_C5_PERMIT_RW << HW_C5_PR3_SFT) -#define OS_PR3_ACCESS_RO (HW_C5_PERMIT_RO << HW_C5_PR3_SFT) - -#define OS_PR4_ACCESS_MASK (HW_C5_PERMIT_MASK << HW_C5_PR4_SFT) -#define OS_PR4_ACCESS_NA (HW_C5_PERMIT_NA << HW_C5_PR4_SFT) -#define OS_PR4_ACCESS_RW (HW_C5_PERMIT_RW << HW_C5_PR4_SFT) -#define OS_PR4_ACCESS_RO (HW_C5_PERMIT_RO << HW_C5_PR4_SFT) - -#define OS_PR5_ACCESS_MASK (HW_C5_PERMIT_MASK << HW_C5_PR5_SFT) -#define OS_PR5_ACCESS_NA (HW_C5_PERMIT_NA << HW_C5_PR5_SFT) -#define OS_PR5_ACCESS_RW (HW_C5_PERMIT_RW << HW_C5_PR5_SFT) -#define OS_PR5_ACCESS_RO (HW_C5_PERMIT_RO << HW_C5_PR5_SFT) - -#define OS_PR6_ACCESS_MASK (HW_C5_PERMIT_MASK << HW_C5_PR6_SFT) -#define OS_PR6_ACCESS_NA (HW_C5_PERMIT_NA << HW_C5_PR6_SFT) -#define OS_PR6_ACCESS_RW (HW_C5_PERMIT_RW << HW_C5_PR6_SFT) -#define OS_PR6_ACCESS_RO (HW_C5_PERMIT_RO << HW_C5_PR6_SFT) - -#define OS_PR7_ACCESS_MASK (HW_C5_PERMIT_MASK << HW_C5_PR7_SFT) -#define OS_PR7_ACCESS_NA (HW_C5_PERMIT_NA << HW_C5_PR7_SFT) -#define OS_PR7_ACCESS_RW (HW_C5_PERMIT_RW << HW_C5_PR7_SFT) -#define OS_PR7_ACCESS_RO (HW_C5_PERMIT_RO << HW_C5_PR7_SFT) - -void OS_EnableICacheForProtectionRegion(register u32 flags); -void OS_DisableICacheForProtectionRegion(register u32 flags); - -u32 OS_GetICacheEnableFlagsForProtectionRegion(void); - -void OS_SetIPermissionsForProtectionRegion(u32 setMask, u32 flags); - -u32 OS_GetIPermissionsForProtectionRegion(void); - -void OS_EnableDCacheForProtectionRegion(u32 flags); -void OS_DisableDCacheForProtectionRegion(u32 flags); - -u32 OS_GetDCacheEnableFlagsForProtectionRegion(u32 flags); - -void OS_SetDPermissionsForProtectionRegion(u32 setMask, u32 flags); - -u32 OS_GetDPermissionsForProtectionRegion(void); - -void OS_EnableWriteBufferForProtectionRegion(u32 flags); -void OS_DisableWriteBufferForProtectionRegion(u32 flags); - -u32 OS_GetWriteBufferEnableFlagsForProtectionRegion(u32 flags); - -typedef enum { - OSi_PR_BASE_MASK_4KB = 0xfffff000, - OSi_PR_BASE_MASK_8KB = 0xffffe000, - OSi_PR_BASE_MASK_16KB = 0xffffc000, - OSi_PR_BASE_MASK_32KB = 0xffff8000, - OSi_PR_BASE_MASK_64KB = 0xffff0000, - OSi_PR_BASE_MASK_128KB = 0xfffe0000, - OSi_PR_BASE_MASK_256KB = 0xfffc0000, - OSi_PR_BASE_MASK_512KB = 0xfff80000, - OSi_PR_BASE_MASK_1MB = 0xfff00000, - OSi_PR_BASE_MASK_2MB = 0xffe00000, - OSi_PR_BASE_MASK_4MB = 0xffc00000, - OSi_PR_BASE_MASK_8MB = 0xff800000, - OSi_PR_BASE_MASK_16MB = 0xff000000, - OSi_PR_BASE_MASK_32MB = 0xfe000000, - OSi_PR_BASE_MASK_64MB = 0xfc000000, - OSi_PR_BASE_MASK_128MB = 0xf8000000, - OSi_PR_BASE_MASK_256MB = 0xf0000000, - OSi_PR_BASE_MASK_512MB = 0xe0000000, - OSi_PR_BASE_MASK_1GB = 0xc0000000, - OSi_PR_BASE_MASK_2GB = 0x80000000, - OSi_PR_BASE_MASK_4GB = 0x00000000 -} OSiProtectionRegionBaseMask; - -static inline u32 OSi_CalcPRParam (u32 address, u32 size, OSiProtectionRegionBaseMask mask) -{ -#ifdef SDK_DEBUG - SDK_ASSERT((address & mask) == address); -#endif - return ((address & mask) | size); -} - -#define OS_SetProtectionRegion(regionNo, address, sizeStr) \ - OSi_SetPR ## regionNo ## _param(OSi_CalcPRParam(address, HW_C6_PR_ ## sizeStr, OSi_PR_BASE_MASK_ ## sizeStr) \ - | HW_C6_PR_ENABLE) - -#define OS_SetProtectionRegionParam(regionNo, param) OSi_SetPR ## regionNo ## _param(param) - -#define OSi_SetPR0_param(param) OS_SetProtectionRegion0(param) -#define OSi_SetPR1_param(param) OS_SetProtectionRegion1(param) -#define OSi_SetPR2_param(param) OS_SetProtectionRegion2(param) -#define OSi_SetPR3_param(param) OS_SetProtectionRegion3(param) -#define OSi_SetPR4_param(param) OS_SetProtectionRegion4(param) -#define OSi_SetPR5_param(param) OS_SetProtectionRegion5(param) -#define OSi_SetPR6_param(param) OS_SetProtectionRegion6(param) -#define OSi_SetPR7_param(param) OS_SetProtectionRegion7(param) - -void OS_SetProtectionRegion0(u32 param); -void OS_SetProtectionRegion1(u32 param); -void OS_SetProtectionRegion2(u32 param); -void OS_SetProtectionRegion3(u32 param); -void OS_SetProtectionRegion4(u32 param); -void OS_SetProtectionRegion5(u32 param); -void OS_SetProtectionRegion6(u32 param); -void OS_SetProtectionRegion7(u32 param); - -#define OS_GetProtectionRegionParam(regionNo) OSi_GetPR ## regionNo ## _param() - -#define OSi_GetPR0_param() OS_GetProtectionRegion0() -#define OSi_GetPR1_param() OS_GetProtectionRegion1() -#define OSi_GetPR2_param() OS_GetProtectionRegion2() -#define OSi_GetPR3_param() OS_GetProtectionRegion3() -#define OSi_GetPR4_param() OS_GetProtectionRegion4() -#define OSi_GetPR5_param() OS_GetProtectionRegion5() -#define OSi_GetPR6_param() OS_GetProtectionRegion6() -#define OSi_GetPR7_param() OS_GetProtectionRegion7() - -u32 OS_GetProtectionRegion0(void); -u32 OS_GetProtectionRegion1(void); -u32 OS_GetProtectionRegion2(void); -u32 OS_GetProtectionRegion3(void); -u32 OS_GetProtectionRegion4(void); -u32 OS_GetProtectionRegion5(void); -u32 OS_GetProtectionRegion6(void); -u32 OS_GetProtectionRegion7(void); - -#define OS_GetProtectionRegionAddress(regionNo) (OS_GetProtectionRegion(regionNo) & HW_C6_PR_BASE_MASK) - -#define OS_GetProtectionRegionSize(regionNo) (OS_GetProtectionRegion(regionNo) & HW_C6_PR_SIZE_MASK) - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/os/ARM9/protectionUnit.h b/subprojects/NitroSDK/include/nitro/os/ARM9/protectionUnit.h deleted file mode 100644 index d53c197218..0000000000 --- a/subprojects/NitroSDK/include/nitro/os/ARM9/protectionUnit.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef NITRO_OS_PROTECTIONUNIT_H_ -#define NITRO_OS_PROTECTIONUNIT_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -void OS_EnableProtectionUnit(void); - -void OS_DisableProtectionUnit(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/os/ARM9/tcm.h b/subprojects/NitroSDK/include/nitro/os/ARM9/tcm.h deleted file mode 100644 index 4db7c8a186..0000000000 --- a/subprojects/NitroSDK/include/nitro/os/ARM9/tcm.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef NITRO_OS_TCM_H_ -#define NITRO_OS_TCM_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -void OS_EnableITCM(void); - -void OS_DisableITCM(void); - -void OS_SetITCMParam(u32 param); - -u32 OS_GetITCMParam(void); - -static inline u32 OS_GetITCMAddress (void) -{ - return (u32)HW_ITCM; -} - -void OS_EnableDTCM(void); - -void OS_DisableDTCM(void); - -void OS_SetDTCMParam(u32 param); - -u32 OS_GetDTCMParam(void); - -void OS_SetDTCMAddress(u32 address); - -u32 OS_GetDTCMAddress(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/os/ARM9/vramExclusive.h b/subprojects/NitroSDK/include/nitro/os/ARM9/vramExclusive.h deleted file mode 100644 index a628be72cf..0000000000 --- a/subprojects/NitroSDK/include/nitro/os/ARM9/vramExclusive.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef NITRO_OS_ARM9_VRAMEXCLUSIVE_H_ -#define NITRO_OS_ARM9_VRAMEXCLUSIVE_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#define OS_VRAM_BANK_ID_A 0x0001 -#define OS_VRAM_BANK_ID_B 0x0002 -#define OS_VRAM_BANK_ID_C 0x0004 -#define OS_VRAM_BANK_ID_D 0x0008 -#define OS_VRAM_BANK_ID_E 0x0010 -#define OS_VRAM_BANK_ID_F 0x0020 -#define OS_VRAM_BANK_ID_G 0x0040 -#define OS_VRAM_BANK_ID_H 0x0080 -#define OS_VRAM_BANK_ID_I 0x0100 -#define OS_VRAM_BANK_ID_ALL 0x01ff - -#define OS_VRAM_BANK_KINDS 9 - -void OSi_InitVramExclusive(void); - -BOOL OSi_TryLockVram(u16 bank, u16 lockId); - -void OSi_UnlockVram(u16 bank, u16 lockId); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/os/common/alarm.h b/subprojects/NitroSDK/include/nitro/os/common/alarm.h deleted file mode 100644 index a190c52c50..0000000000 --- a/subprojects/NitroSDK/include/nitro/os/common/alarm.h +++ /dev/null @@ -1,58 +0,0 @@ -#ifndef NITRO_OS_ALARM_H_ -#define NITRO_OS_ALARM_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include - -typedef void (* OSAlarmHandler) (void *); - -struct OSiAlarm { - OSAlarmHandler handler; - void * arg; - - u32 tag; - OSTick fire; - OSAlarm * prev; - OSAlarm * next; - - OSTick period; - OSTick start; -}; - -void OS_InitAlarm(void); - -void OS_EndAlarm(void); - -BOOL OS_IsAlarmAvailable(void); - -void OS_CreateAlarm(OSAlarm * alarm); - -void OS_SetAlarm(OSAlarm * alarm, OSTick tick, OSAlarmHandler handler, void * arg); - -void OS_SetPeriodicAlarm(OSAlarm * alarm, OSTick start, OSTick period, OSAlarmHandler handler, - void * arg); - -void OS_SetAlarmTag(OSAlarm * alarm, u32 tag); - -void OS_CancelAlarm(OSAlarm * alarm); - -void OS_CancelAlarms(u32 tag); - -void OS_CancelAllAlarms(void); - -struct OSiAlarmQueue { - OSAlarm * head; - OSAlarm * tail; -}; -struct OSiAlarmQueue * OSi_GetAlarmQueue(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/os/common/alloc.h b/subprojects/NitroSDK/include/nitro/os/common/alloc.h deleted file mode 100644 index dc7838eb25..0000000000 --- a/subprojects/NitroSDK/include/nitro/os/common/alloc.h +++ /dev/null @@ -1,204 +0,0 @@ -#ifndef NITRO_OS_ALLOC_H_ -#define NITRO_OS_ALLOC_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef int OSHeapHandle; -typedef void (* OSAllocVisitor) (void * obj, u32 size); - -#define OS_CURRENT_HEAP_HANDLE ((OSHeapHandle) - 1) - -extern void * OS_InitAlloc(OSArenaId id, void * arenaStart, void * arenaEnd, int maxHeaps); - -extern void OS_ClearAlloc(OSArenaId id); - -extern OSHeapHandle OS_CreateHeap(OSArenaId id, void * start, void * end); - -extern void OS_DestroyHeap(OSArenaId id, OSHeapHandle heap); - -extern void OS_AddToHeap(OSArenaId id, OSHeapHandle heap, void * start, void * end); - -extern OSHeapHandle OS_SetCurrentHeap(OSArenaId id, OSHeapHandle heap); - -extern void * OS_AllocFromHeap(OSArenaId id, OSHeapHandle heap, u32 size); - -extern void * OS_AllocFixed(OSArenaId id, void ** rstart, void ** rend); - -extern void OS_FreeToHeap(OSArenaId id, OSHeapHandle heap, void * ptr); - -extern void OS_FreeAllToHeap(OSArenaId id, OSHeapHandle heap); - -extern s32 OS_CheckHeap(OSArenaId id, OSHeapHandle heap); - -extern void OS_DumpHeap(OSArenaId id, OSHeapHandle heap); - -extern u32 OS_ReferentSize(OSArenaId id, void * ptr); - -extern void OS_VisitAllocated(OSArenaId id, OSAllocVisitor visitor); - -extern u32 OSi_GetTotalAllocSize(OSArenaId id, OSHeapHandle heap, BOOL isHeadInclude); -static inline u32 OS_GetTotalAllocSize (OSArenaId id, OSHeapHandle heap) -{ - return OSi_GetTotalAllocSize(id, heap, FALSE); -} - -static inline u32 OS_GetTotalOccupiedSize (OSArenaId id, OSHeapHandle heap) -{ - return OSi_GetTotalAllocSize(id, heap, TRUE); -} - -extern u32 OS_GetTotalFreeSize(OSArenaId id, OSHeapHandle heap); - -extern u32 OS_GetMaxFreeSize(OSArenaId id, OSHeapHandle heap); - -extern void OS_ClearHeap(OSArenaId id, OSHeapHandle heap, void * start, void * end); - -static inline void * OS_AllocFromMain (u32 size) -{ - return OS_AllocFromHeap(OS_ARENA_MAIN, OS_CURRENT_HEAP_HANDLE, size); -} -static inline void OS_FreeToMain (void * ptr) -{ - OS_FreeToHeap(OS_ARENA_MAIN, OS_CURRENT_HEAP_HANDLE, ptr); -} -static inline void OS_FreeAllToMain (void) -{ - OS_FreeAllToHeap(OS_ARENA_MAIN, OS_CURRENT_HEAP_HANDLE); -} - -static inline void * OS_AllocFromSubPriv (u32 size) -{ - return OS_AllocFromHeap(OS_ARENA_MAIN_SUBPRIV, OS_CURRENT_HEAP_HANDLE, size); -} -static inline void OS_FreeToSubPriv (void * ptr) -{ - OS_FreeToHeap(OS_ARENA_MAIN_SUBPRIV, OS_CURRENT_HEAP_HANDLE, ptr); -} -static inline void OS_FreeAllToSubPriv (void) -{ - OS_FreeAllToHeap(OS_ARENA_MAIN_SUBPRIV, OS_CURRENT_HEAP_HANDLE); -} - -static inline void * OS_AllocFromMainEx (u32 size) -{ - return OS_AllocFromHeap(OS_ARENA_MAINEX, OS_CURRENT_HEAP_HANDLE, size); -} -static inline void OS_FreeToMainEx (void * ptr) -{ - OS_FreeToHeap(OS_ARENA_MAINEX, OS_CURRENT_HEAP_HANDLE, ptr); -} -static inline void OS_FreeAllToMainEx (void) -{ - OS_FreeAllToHeap(OS_ARENA_MAINEX, OS_CURRENT_HEAP_HANDLE); -} - -#ifdef SDK_ARM9 -static inline void * OS_AllocFromITCM (u32 size) -{ - return OS_AllocFromHeap(OS_ARENA_ITCM, OS_CURRENT_HEAP_HANDLE, size); -} -static inline void OS_FreeToITCM (void * ptr) -{ - OS_FreeToHeap(OS_ARENA_ITCM, OS_CURRENT_HEAP_HANDLE, ptr); -} -static inline void OS_FreeAllToITCM (void) -{ - OS_FreeAllToHeap(OS_ARENA_ITCM, OS_CURRENT_HEAP_HANDLE); -} -#endif - -#ifdef SDK_ARM9 -static inline void * OS_AllocFromDTCM (u32 size) -{ - return OS_AllocFromHeap(OS_ARENA_DTCM, OS_CURRENT_HEAP_HANDLE, size); -} -static inline void OS_FreeToDTCM (void * ptr) -{ - OS_FreeToHeap(OS_ARENA_DTCM, OS_CURRENT_HEAP_HANDLE, ptr); -} -static inline void OS_FreeAllToDTCM (void) -{ - OS_FreeAllToHeap(OS_ARENA_DTCM, OS_CURRENT_HEAP_HANDLE); -} -#endif - -static inline void * OS_AllocFromShared (u32 size) -{ - return OS_AllocFromHeap(OS_ARENA_SHARED, OS_CURRENT_HEAP_HANDLE, size); -} -static inline void OS_FreeToShared (void * ptr) -{ - OS_FreeToHeap(OS_ARENA_SHARED, OS_CURRENT_HEAP_HANDLE, ptr); -} -static inline void OS_FreeAllToShared (void) -{ - OS_FreeAllToHeap(OS_ARENA_SHARED, OS_CURRENT_HEAP_HANDLE); -} - -static inline void * OS_AllocFromWramMain (u32 size) -{ - return OS_AllocFromHeap(OS_ARENA_WRAM_MAIN, OS_CURRENT_HEAP_HANDLE, size); -} -static inline void OS_FreeToWramMain (void * ptr) -{ - OS_FreeToHeap(OS_ARENA_WRAM_MAIN, OS_CURRENT_HEAP_HANDLE, ptr); -} -static inline void OS_FreeAllToWramMain (void) -{ - OS_FreeAllToHeap(OS_ARENA_WRAM_MAIN, OS_CURRENT_HEAP_HANDLE); -} - -static inline void * OS_AllocFromWramSub (u32 size) -{ - return OS_AllocFromHeap(OS_ARENA_WRAM_SUB, OS_CURRENT_HEAP_HANDLE, size); -} -static inline void OS_FreeToWramSub (void * ptr) -{ - OS_FreeToHeap(OS_ARENA_WRAM_SUB, OS_CURRENT_HEAP_HANDLE, ptr); -} -static inline void OS_FreeAllToWramSub (void) -{ - OS_FreeAllToHeap(OS_ARENA_WRAM_SUB, OS_CURRENT_HEAP_HANDLE); -} - -static inline void * OS_AllocFromSubPrivWram (u32 size) -{ - return OS_AllocFromHeap(OS_ARENA_WRAM_SUBPRIV, OS_CURRENT_HEAP_HANDLE, size); -} -static inline void OS_FreeToSubPrivWram (void * ptr) -{ - OS_FreeToHeap(OS_ARENA_WRAM_SUBPRIV, OS_CURRENT_HEAP_HANDLE, ptr); -} -static inline void OS_FreeAllToSubPrivWram (void) -{ - OS_FreeAllToHeap(OS_ARENA_WRAM_SUBPRIV, OS_CURRENT_HEAP_HANDLE); -} - -#ifdef SDK_ARM9 -# define OS_Alloc(size) OS_AllocFromMain((size)) -#else -# define OS_Alloc(size) OS_AllocFromSubPriv((size)) -#endif - -#ifdef SDK_ARM9 -# define OS_Free(ptr) OS_FreeToMain((ptr)) -#else -# define OS_Free(ptr) OS_FreeToSubPriv((ptr)) -#endif - -#ifdef SDK_ARM9 -# define OS_FreeAll() OS_FreeAllToMain() -#else -# define OS_FreeAll() OS_FreeAllToSubPriv() -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/os/common/arena.h b/subprojects/NitroSDK/include/nitro/os/common/arena.h deleted file mode 100644 index a9c8cb347c..0000000000 --- a/subprojects/NitroSDK/include/nitro/os/common/arena.h +++ /dev/null @@ -1,323 +0,0 @@ -#ifndef NITRO_OS_ARENA_H_ -#define NITRO_OS_ARENA_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - OS_ARENA_MAIN = 0, - OS_ARENA_MAIN_SUBPRIV = 1, - OS_ARENA_MAINEX = 2, - OS_ARENA_ITCM = 3, - OS_ARENA_DTCM = 4, - OS_ARENA_SHARED = 5, - OS_ARENA_WRAM_MAIN = 6, - OS_ARENA_WRAM_SUB = 7, - OS_ARENA_WRAM_SUBPRIV = 8, - - OS_ARENA_MAX = 9 -} OSArenaId; - -typedef struct { - void * lo[OS_ARENA_MAX]; - void * hi[OS_ARENA_MAX]; - u16 initialized; - u8 padding[2]; -} OSArenaInfo; - -void OS_InitArena(void); - -#ifdef SDK_ARM9 -void OS_InitArenaEx(void); -#endif - -void * OS_GetArenaInfo(void); - -void * OS_GetArenaHi(OSArenaId id); -void * OS_GetArenaLo(OSArenaId id); - -void * OS_GetInitArenaHi(OSArenaId id); -void * OS_GetInitArenaLo(OSArenaId id); - -void OS_SetArenaHi(OSArenaId id, void * newHi); -void OS_SetArenaLo(OSArenaId id, void * newLo); - -void * OS_AllocFromArenaLo(OSArenaId id, u32 size, u32 align); - -void * OS_AllocFromArenaHi(OSArenaId id, u32 size, u32 align); - -static inline void OS_SetMainArenaHi (void * newHi) -{ - OS_SetArenaHi(OS_ARENA_MAIN, newHi); -} -static inline void OS_SetMainArenaLo (void * newLo) -{ - OS_SetArenaLo(OS_ARENA_MAIN, newLo); -} - -static inline void * OS_GetMainArenaHi (void) -{ - return OS_GetArenaHi(OS_ARENA_MAIN); -} -static inline void * OS_GetMainArenaLo (void) -{ - return OS_GetArenaLo(OS_ARENA_MAIN); -} - -static inline void * OS_AllocFromMainArenaLo (u32 size, u32 align) -{ - return OS_AllocFromArenaLo(OS_ARENA_MAIN, size, align); -} -static inline void * OS_AllocFromMainArenaHi (u32 size, u32 align) -{ - return OS_AllocFromArenaHi(OS_ARENA_MAIN, size, align); -} - -static inline void OS_SetSubPrivArenaHi (void * newHi) -{ - OS_SetArenaHi(OS_ARENA_MAIN_SUBPRIV, newHi); -} -static inline void OS_SetSubPrivArenaLo (void * newLo) -{ - OS_SetArenaLo(OS_ARENA_MAIN_SUBPRIV, newLo); -} - -static inline void * OS_GetSubPrivArenaHi (void) -{ - return OS_GetArenaHi(OS_ARENA_MAIN_SUBPRIV); -} -static inline void * OS_GetSubPrivArenaLo (void) -{ - return OS_GetArenaLo(OS_ARENA_MAIN_SUBPRIV); -} - -static inline void * OS_AllocFromSubPrivArenaLo (u32 size, u32 align) -{ - return OS_AllocFromArenaLo(OS_ARENA_MAIN_SUBPRIV, size, align); -} -static inline void * OS_AllocFromSubPrivArenaHi (u32 size, u32 align) -{ - return OS_AllocFromArenaHi(OS_ARENA_MAIN_SUBPRIV, size, align); -} - -static inline void OS_SetMainExArenaHi (void * newHi) -{ - OS_SetArenaHi(OS_ARENA_MAINEX, newHi); -} -static inline void OS_SetMainExArenaLo (void * newLo) -{ - OS_SetArenaLo(OS_ARENA_MAINEX, newLo); -} - -static inline void * OS_GetMainExArenaHi (void) -{ - return OS_GetArenaHi(OS_ARENA_MAINEX); -} -static inline void * OS_GetMainExArenaLo (void) -{ - return OS_GetArenaLo(OS_ARENA_MAINEX); -} - -static inline void * OS_AllocFromMainExArenaLo (u32 size, u32 align) -{ - return OS_AllocFromArenaLo(OS_ARENA_MAINEX, size, align); -} -static inline void * OS_AllocFromMainExArenaHi (u32 size, u32 align) -{ - return OS_AllocFromArenaHi(OS_ARENA_MAINEX, size, align); -} - -static inline void OS_SetITCMArenaHi (void * newHi) -{ - OS_SetArenaHi(OS_ARENA_ITCM, newHi); -} -static inline void OS_SetITCMArenaLo (void * newLo) -{ - OS_SetArenaLo(OS_ARENA_ITCM, newLo); -} - -static inline void * OS_GetITCMArenaHi (void) -{ - return OS_GetArenaHi(OS_ARENA_ITCM); -} -static inline void * OS_GetITCMArenaLo (void) -{ - return OS_GetArenaLo(OS_ARENA_ITCM); -} - -static inline void * OS_AllocFromITCMArenaLo (u32 size, u32 align) -{ - return OS_AllocFromArenaLo(OS_ARENA_ITCM, size, align); -} -static inline void * OS_AllocFromITCMArenaHi (u32 size, u32 align) -{ - return OS_AllocFromArenaHi(OS_ARENA_ITCM, size, align); -} - -static inline void OS_SetDTCMArenaHi (void * newHi) -{ - OS_SetArenaHi(OS_ARENA_DTCM, newHi); -} -static inline void OS_SetDTCMArenaLo (void * newLo) -{ - OS_SetArenaLo(OS_ARENA_DTCM, newLo); -} - -static inline void * OS_GetDTCMArenaHi (void) -{ - return OS_GetArenaHi(OS_ARENA_DTCM); -} -static inline void * OS_GetDTCMArenaLo (void) -{ - return OS_GetArenaLo(OS_ARENA_DTCM); -} - -static inline void * OS_AllocFromDTCMArenaLo (u32 size, u32 align) -{ - return OS_AllocFromArenaLo(OS_ARENA_DTCM, size, align); -} -static inline void * OS_AllocFromDTCMArenaHi (u32 size, u32 align) -{ - return OS_AllocFromArenaHi(OS_ARENA_DTCM, size, align); -} - -static inline void OS_SetSharedArenaHi (void * newHi) -{ - OS_SetArenaHi(OS_ARENA_SHARED, newHi); -} -static inline void OS_SetSharedArenaLo (void * newLo) -{ - OS_SetArenaLo(OS_ARENA_SHARED, newLo); -} - -static inline void * OS_GetSharedArenaHi (void) -{ - return OS_GetArenaHi(OS_ARENA_SHARED); -} -static inline void * OS_GetSharedArenaLo (void) -{ - return OS_GetArenaLo(OS_ARENA_SHARED); -} - -static inline void * OS_AllocFromSharedArenaLo (u32 size, u32 align) -{ - return OS_AllocFromArenaLo(OS_ARENA_SHARED, size, align); -} -static inline void * OS_AllocFromSharedArenaHi (u32 size, u32 align) -{ - return OS_AllocFromArenaHi(OS_ARENA_SHARED, size, align); -} - -static inline void OS_SetWramMainArenaHi (void * newHi) -{ - OS_SetArenaHi(OS_ARENA_WRAM_MAIN, newHi); -} -static inline void OS_SetWramMainArenaLo (void * newLo) -{ - OS_SetArenaLo(OS_ARENA_WRAM_MAIN, newLo); -} - -static inline void * OS_GetWramMainArenaHi (void) -{ - return OS_GetArenaHi(OS_ARENA_WRAM_MAIN); -} -static inline void * OS_GetWramMainArenaLo (void) -{ - return OS_GetArenaLo(OS_ARENA_WRAM_MAIN); -} - -static inline void * OS_AllocFromWramMainArenaLo (u32 size, u32 align) -{ - return OS_AllocFromArenaLo(OS_ARENA_WRAM_MAIN, size, align); -} -static inline void * OS_AllocFromWramMainArenaHi (u32 size, u32 align) -{ - return OS_AllocFromArenaHi(OS_ARENA_WRAM_MAIN, size, align); -} - -static inline void OS_SetWramSubArenaHi (void * newHi) -{ - OS_SetArenaHi(OS_ARENA_WRAM_SUB, newHi); -} -static inline void OS_SetWramSubArenaLo (void * newLo) -{ - OS_SetArenaLo(OS_ARENA_WRAM_SUB, newLo); -} - -static inline void * OS_GetWramSubArenaHi (void) -{ - return OS_GetArenaHi(OS_ARENA_WRAM_SUB); -} -static inline void * OS_GetWramSubArenaLo (void) -{ - return OS_GetArenaLo(OS_ARENA_WRAM_SUB); -} - -static inline void * OS_AllocFromWramSubArenaLo (u32 size, u32 align) -{ - return OS_AllocFromArenaLo(OS_ARENA_WRAM_SUB, size, align); -} -static inline void * OS_AllocFromWramSubArenaHi (u32 size, u32 align) -{ - return OS_AllocFromArenaHi(OS_ARENA_WRAM_SUB, size, align); -} - -static inline void OS_SetWramSubPrivArenaHi (void * newHi) -{ - OS_SetArenaHi(OS_ARENA_WRAM_SUBPRIV, newHi); -} -static inline void OS_SetWramSubPrivArenaLo (void * newLo) -{ - OS_SetArenaLo(OS_ARENA_WRAM_SUBPRIV, newLo); -} - -static inline void * OS_GetWramSubPrivArenaHi (void) -{ - return OS_GetArenaHi(OS_ARENA_WRAM_SUBPRIV); -} -static inline void * OS_GetWramSubPrivArenaLo (void) -{ - return OS_GetArenaLo(OS_ARENA_WRAM_SUBPRIV); -} - -static inline void * OS_AllocFromWramSubPrivArenaLo (u32 size, u32 align) -{ - return OS_AllocFromArenaLo(OS_ARENA_WRAM_SUBPRIV, size, align); -} -static inline void * OS_AllocFromWramSubPrivArenaHi (u32 size, u32 align) -{ - return OS_AllocFromArenaHi(OS_ARENA_WRAM_SUBPRIV, size, align); -} - -static inline void OS_InitArenaHi (OSArenaId id) -{ - OS_SetArenaHi((id), OS_GetInitArenaHi((OSArenaId)id)); -} - -static inline void OS_InitArenaLo (OSArenaId id) -{ - OS_SetArenaLo((id), OS_GetInitArenaLo(id)); -} - -static inline void OS_InitArenaHiAndLo (OSArenaId id) -{ - OS_InitArenaHi(id); - OS_InitArenaLo(id); -} - -#ifdef SDK_ARM9 - -void OS_EnableMainExArena(void); - -void OS_DisableMainExArena(void); -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/os/common/callTrace.h b/subprojects/NitroSDK/include/nitro/os/common/callTrace.h deleted file mode 100644 index 25a64045ba..0000000000 --- a/subprojects/NitroSDK/include/nitro/os/common/callTrace.h +++ /dev/null @@ -1,140 +0,0 @@ -#ifndef NITRO_OS_CALLTRACE_H_ -#define NITRO_OS_CALLTRACE_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#define OS_CALLTRACE_CHECK_OVERSTACK - -#define OS_CALLTRACE_RECORD_R0 -#define OS_CALLTRACE_RECORD_R1 -#define OS_CALLTRACE_RECORD_R2 -#define OS_CALLTRACE_RECORD_R3 - -#define OS_CALLTRACE_LEVEL_AVAILABLE - -typedef struct { - u32 name; - u32 returnAddress; - -#ifdef OS_CALLTRACE_LEVEL_AVAILABLE - u32 level; -#endif - -#ifdef OS_CALLTRACE_RECORD_R0 - u32 r0; -#endif -#ifdef OS_CALLTRACE_RECORD_R1 - u32 r1; -#endif -#ifdef OS_CALLTRACE_RECORD_R2 - u32 r2; -#endif -#ifdef OS_CALLTRACE_RECORD_R3 - u32 r3; -#endif -} OSCallTrace; - -#define OSi_SIZEOF_CALLTRACE sizeof(OSCallTrace) - -typedef struct { - OSCallTrace * current; - OSCallTrace * limit; - u16 enable; - u16 circular; -#ifdef OS_CALLTRACE_LEVEL_AVAILABLE - u32 level; -#endif - OSCallTrace array[1]; -} OSCallTraceInfo; - -#define OSi_TRACEINFO_SIZEOF_HEADERPART (sizeof(OSCallTraceInfo) - sizeof(OSCallTrace)) - -typedef enum { - OS_CALLTRACE_STACK = 0, - OS_CALLTRACE_LOG = 1 -} OSCallTraceMode; - -#ifndef OS_NO_CALLTRACE -void OS_InitCallTrace(void * buf, u32 size, OSCallTraceMode mode); -#else -static inline void OS_InitCallTrace (void *, u32, OSCallTraceMode) -{ -} -#endif - -#ifndef OS_NO_CALLTRACE -void OS_DumpCallTrace(void); -#else -static inline void OS_DumpCallTrace (void) -{ -} -#endif - -#ifndef OS_NO_CALLTRACE -int OS_CalcCallTraceLines(u32 size); -#else -static inline int OS_CalcCallTraceLines (u32) -{ - return 0; -} -#endif - -#ifndef OS_NO_CALLTRACE -u32 OS_CalcCallTraceBufferSize(int lines); -#else -static inline u32 OS_CalcCallTraceBufferSize (int) -{ - return 0; -} -#endif - -#ifndef OS_NO_CALLTRACE -void OS_ClearCallTraceBuffer(void); -#else -static inline void OS_ClearCallTraceBuffer (void) -{ -} -#endif - -#ifndef OS_NO_CALLTRACE -BOOL OS_EnableCallTrace(); -#else -static inline BOOL OS_EnableCallTrace () -{ - return FALSE; -} -#endif - -#ifndef OS_NO_CALLTRACE -BOOL OS_DisableCallTrace(); -#else -static inline BOOL OS_DisableCallTrace () -{ - return FALSE; -} -#endif - -#ifndef OS_NO_CALLTRACE -BOOL OS_RestoreCallTrace(BOOL enable); -#else -static inline BOOL OS_RestoreCallTrace (BOOL) -{ - return FALSE; -} -#endif - -#ifndef OS_NO_CALLTRACE -void OSi_SetCallTraceEntry(const char * name, u32 lr); -#else -static inline void OSi_SetCallTraceEntry(const char * name, u32 lr); -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/os/common/context.h b/subprojects/NitroSDK/include/nitro/os/common/context.h deleted file mode 100644 index 024a59f173..0000000000 --- a/subprojects/NitroSDK/include/nitro/os/common/context.h +++ /dev/null @@ -1,72 +0,0 @@ -#ifndef NITRO_OS_CONTEXT_H_ -#define NITRO_OS_CONTEXT_H_ - -#include -#ifdef SDK_ARM9 -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define SDK_CONTEXT_HAS_SP_SVC - -#define OS_CONTEXT_CPSR 0 -#define OS_CONTEXT_R0 4 -#define OS_CONTEXT_R1 8 -#define OS_CONTEXT_R2 12 -#define OS_CONTEXT_R3 16 -#define OS_CONTEXT_R4 20 -#define OS_CONTEXT_R5 24 -#define OS_CONTEXT_R6 28 -#define OS_CONTEXT_R7 32 -#define OS_CONTEXT_R8 36 -#define OS_CONTEXT_R9 40 -#define OS_CONTEXT_R10 44 -#define OS_CONTEXT_R11 48 -#define OS_CONTEXT_R12 52 -#define OS_CONTEXT_R13 56 -#define OS_CONTEXT_R14 60 -#define OS_CONTEXT_PC_PLUS4 64 - -#define OS_CONTEXT_SP OS_CONTEXT_R13 -#define OS_CONTEXT_LR OS_CONTEXT_R14 - -#ifdef SDK_CONTEXT_HAS_SP_SVC -#define OS_CONTEXT_R13_SVC 68 -#define OS_CONTEXT_SP_SVC OS_CONTEXT_R13_SVC -#endif - -#ifdef SDK_ARM9 -#ifdef SDK_CONTEXT_HAS_SP_SVC -#define OS_CONTEXT_CP_CONTEXT 72 -#else -#define OS_CONTEXT_CP_CONTEXT 68 -#endif -#endif - -typedef struct OSContext { - u32 cpsr; - u32 r[13]; - u32 sp; - u32 lr; - u32 pc_plus4; -#ifdef SDK_CONTEXT_HAS_SP_SVC - u32 sp_svc; -#endif -#ifdef SDK_ARM9 - CPContext cp_context; -#endif -} OSContext; - -void OS_InitContext(OSContext * context, u32 newpc, u32 newsp); -BOOL OS_SaveContext(OSContext * context); -void OS_LoadContext(OSContext * context); -void OS_DumpContext(OSContext * context); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/os/common/emulator.h b/subprojects/NitroSDK/include/nitro/os/common/emulator.h deleted file mode 100644 index 622b6d97bc..0000000000 --- a/subprojects/NitroSDK/include/nitro/os/common/emulator.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef NITRO_OS_EMULATOR_H_ -#define NITRO_OS_EMULATOR_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#define OSi_CONSOLE_NOT_DETECT 0xffffffff - -#define OS_CONSOLE_MASK 0xf0000000 -#define OS_CONSOLE_ENSATA 0x10000000 -#define OS_CONSOLE_ISEMULATOR 0x20000000 -#define OS_CONSOLE_ISDEBUGGER 0x40000000 -#define OS_CONSOLE_NITRO 0x80000000 - -#define OS_CONSOLE_DEV_MASK 0x03000000 -#define OS_CONSOLE_DEV_CARTRIDGE 0x01000000 -#define OS_CONSOLE_DEV_CARD 0x02000000 - -#define OS_CONSOLE_SIZE_MASK 0x00000003 -#define OS_CONSOLE_SIZE_4MB 0x00000001 -#define OS_CONSOLE_SIZE_8MB 0x00000002 - -BOOL OS_IsRunOnEmulator(void); - -u32 OS_GetConsoleType(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/os/common/entropy.h b/subprojects/NitroSDK/include/nitro/os/common/entropy.h deleted file mode 100644 index 8a2d3aca8b..0000000000 --- a/subprojects/NitroSDK/include/nitro/os/common/entropy.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef NITRO_OS_ENTROPY_H_ -#define NITRO_OS_ENTROPY_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include - -#define OS_LOW_ENTROPY_DATA_SIZE 32 - -void OS_GetLowEntropyData(u32 buffer[OS_LOW_ENTROPY_DATA_SIZE / sizeof(u32)]); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/os/common/exception.h b/subprojects/NitroSDK/include/nitro/os/common/exception.h deleted file mode 100644 index d5b65c14fa..0000000000 --- a/subprojects/NitroSDK/include/nitro/os/common/exception.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef NITRO_OS_EXCEPTION_H_ -#define NITRO_OS_EXCEPTION_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -typedef void (* OSExceptionHandler) (u32, void *); - -void OS_SetExceptionVectorUpper(void); - -void OS_SetExceptionVectorLower(void); - -void OS_InitException(void); - -void OS_SetUserExceptionHandler(OSExceptionHandler handler, void * arg); - -void OS_EnableUserExceptionHandlerOnDebugger(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/os/common/functionCost.h b/subprojects/NitroSDK/include/nitro/os/common/functionCost.h deleted file mode 100644 index 579be2b97f..0000000000 --- a/subprojects/NitroSDK/include/nitro/os/common/functionCost.h +++ /dev/null @@ -1,183 +0,0 @@ -#ifndef NITRO_OS_FUNCTIONCOST_H_ -#define NITRO_OS_FUNCTIONCOST_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#if defined(OS_PROFILE_AVAILABLE) && defined(OS_PROFILE_FUNCTION_COST) -#ifndef OS_NO_FUNCTIONCOST -#define OSi_FUNCTIONCOST_THREAD_INTERVAL -#endif -#endif - -#define OSi_FUNCTIONCOST_EXIT_TAG 0xffffffff - -typedef union { - struct { - u32 name; - u32 time; -#ifdef OSi_FUNCTIONCOST_THREAD_INTERVAL - u32 interval; -#endif - } entry; - struct { - u32 tag; - u32 time; -#ifdef OSi_FUNCTIONCOST_THREAD_INTERVAL - u32 interval; -#endif - } exit; -} OSFunctionCost; - -#define OSi_SIZEOF_FUNCTIONCOST sizeof(OSFunctionCost) - -typedef struct { - OSFunctionCost * current; - OSFunctionCost * limit; - u16 enable; - u16 padding; -#ifdef OSi_FUNCTIONCOST_THREAD_INTERVAL - u32 breakTime; -#endif - OSFunctionCost array[1]; -} OSFunctionCostInfo; - -#define OSi_COSTINFO_SIZEOF_HEADERPART (sizeof(OSFunctionCostInfo) - sizeof(OSFunctionCost)) - -typedef struct { - u32 name; - u32 count; - u64 time; -} OSFunctionCostStatistics; - -typedef struct { - u32 size; - OSFunctionCostStatistics * limit; - OSFunctionCostStatistics array[1]; -} OSFunctionCostStatisticsInfo; - -#define OSi_STATISTICS_SIZEOF_HEADERPART (sizeof(OSFunctionCostStatisticsInfo) - sizeof(OSFunctionCostStatistics)) -#define OSi_STATISTICS_LEAST_SIZE (OSi_STATISTICS_SIZEOF_HEADERPART + sizeof(OSFunctionCostStatistics)) - -#ifndef OS_NO_FUNCTIONCOST -void OS_InitFunctionCost(void * buf, u32 size); -#else -static inline void OS_InitFunctionCost (void *, u32) -{ -} -#endif - -#ifndef OS_NO_FUNCTIONCOST -int OS_CalcFunctionCostLines(u32 size); -#else -static inline int OS_CalcFunctionCostLines (u32) -{ - return 0; -} -#endif - -#ifndef OS_NO_FUNCTIONCOST -u32 OS_CalcFunctionCostBufferSize(int lines); -#else -static inline u32 OS_CalcFunctionCostBufferSize (int) -{ - return 0; -} -#endif - -#ifndef OS_NO_FUNCTIONCOST -BOOL OS_CheckFunctionCostBuffer(void * buf); -#else -static inline BOOL OS_CheckFunctionCostBuffer (void * buf) -{ -#pragma unused(buf) - return FALSE; -} -#endif - -#ifndef OS_NO_FUNCTIONCOST -extern void OSi_ClearThreadFunctionCostBuffer(OSThread * thread); -static inline void OS_ClearFunctionCostBuffer (void) -{ - OSi_ClearThreadFunctionCostBuffer(NULL); -} -#else -static inline void OS_ClearFunctionCostBuffer (void) -{ -} -#endif - -#ifndef OS_NO_FUNCTIONCOST -BOOL OS_EnableFunctionCost(); -#else -static inline BOOL OS_EnableFunctionCost () -{ - return FALSE; -} -#endif - -#ifndef OS_NO_FUNCTIONCOST -BOOL OS_DisableFunctionCost(); -#else -static inline BOOL OS_DisableFunctionCost () -{ - return FALSE; -} -#endif - -#ifndef OS_NO_FUNCTIONCOST -BOOL OS_RestoreFunctionCost(BOOL enable); -#else -static inline BOOL OS_RestoreFunctionCost (BOOL) -{ - return FALSE; -} -#endif - -#ifndef OS_NO_FUNCTIONCOST -void OS_InitStatistics(void * statBuf, u32 size); -#else -static inline void OS_InitStatistics (void *, u32) -{ -} -#endif - -#ifndef OS_NO_FUNCTIONCOST -void OS_CalcThreadStatistics(void * statBuf, OSThread * thread); -#else -static inline void OS_CalcThreadStatistics (void *, OSThread *) -{ -} -#endif - -static inline void OS_CalcStatistics (void * statBuf) -{ - OS_CalcThreadStatistics(statBuf, NULL); -} - -#ifndef OS_NO_FUNCTIONCOST -BOOL OS_CheckStatisticsBuffer(void * statBuf); -#else -static inline BOOL OS_CheckStatisticsBuffer (void * statBuf) -{ -#pragma unused(statBuf) - return FALSE; -} -#endif - -#ifndef OS_NO_FUNCTIONCOST -void OS_DumpStatistics(void * statBuf); -#else -static inline void OS_DumpStatistics (void *) -{ -} -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/os/common/init.h b/subprojects/NitroSDK/include/nitro/os/common/init.h deleted file mode 100644 index f61a7dd784..0000000000 --- a/subprojects/NitroSDK/include/nitro/os/common/init.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef NITRO_OS_INIT_H_ -#define NITRO_OS_INIT_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -void OS_Init(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/os/common/interrupt.h b/subprojects/NitroSDK/include/nitro/os/common/interrupt.h deleted file mode 100644 index 5984afeb4b..0000000000 --- a/subprojects/NitroSDK/include/nitro/os/common/interrupt.h +++ /dev/null @@ -1,195 +0,0 @@ -#ifndef NITRO_OS_INTERRUPT_H_ -#define NITRO_OS_INTERRUPT_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include -#include - -void OSi_EnterDmaCallback(u32 dmaNo, void (* callback)(void *), void * arg); -void OSi_EnterTimerCallback(u32 timerNo, void (* callback)(void *), void * arg); - -#define OS_IME_DISABLE (0UL << REG_OS_IME_IME_SHIFT) -#define OS_IME_ENABLE (1UL << REG_OS_IME_IME_SHIFT) - -#define OS_IE_V_BLANK (1UL << REG_OS_IE_VB_SHIFT) -#define OS_IE_H_BLANK (1UL << REG_OS_IE_HB_SHIFT) -#define OS_IE_V_COUNT (1UL << REG_OS_IE_VE_SHIFT) -#define OS_IE_TIMER0 (1UL << REG_OS_IE_T0_SHIFT) -#define OS_IE_TIMER1 (1UL << REG_OS_IE_T1_SHIFT) -#define OS_IE_TIMER2 (1UL << REG_OS_IE_T2_SHIFT) -#define OS_IE_TIMER3 (1UL << REG_OS_IE_T3_SHIFT) -#define OS_IE_SIO (1UL << 7) -#define OS_IE_DMA0 (1UL << REG_OS_IE_D0_SHIFT) -#define OS_IE_DMA1 (1UL << REG_OS_IE_D1_SHIFT) -#define OS_IE_DMA2 (1UL << REG_OS_IE_D2_SHIFT) -#define OS_IE_DMA3 (1UL << REG_OS_IE_D3_SHIFT) -#define OS_IE_KEY (1UL << REG_OS_IE_K_SHIFT) -#define OS_IE_CARTRIDGE (1UL << REG_OS_IE_I_D_SHIFT) -#define OS_IE_SUBP (1UL << REG_OS_IE_A7_SHIFT) -#define OS_IE_SPFIFO_SEND (1UL << REG_OS_IE_IFE_SHIFT) -#define OS_IE_SPFIFO_RECV (1UL << REG_OS_IE_IFN_SHIFT) -#define OS_IE_CARD_DATA (1UL << REG_OS_IE_MC_SHIFT) -#define OS_IE_CARD_IREQ (1UL << REG_OS_IE_MI_SHIFT) - -#ifdef SDK_ARM9 -#define OS_IE_GXFIFO (1UL << REG_OS_IE_GF_SHIFT) -#define OS_IRQ_TABLE_MAX 22 - -#else -#define OS_IE_POWERMAN (1UL << REG_OS_IE_PM_SHIFT) -#define OS_IE_SPI (1UL << REG_OS_IE_SPI_SHIFT) -#define OS_IE_WIRELESS (1UL << REG_OS_IE_WL_SHIFT) -#define OS_IRQ_TABLE_MAX 25 - -#define OS_IE_MAINP OS_IE_SUBP -#define OS_IE_MPFIFO_SEND OS_IE_SPFIFO_SEND -#define OS_IE_MPFIFO_RECV OS_IE_SPFIFO_RECV -#define REG_OS_IE_A9_SHIFT REG_OS_IE_A7_SHIFT -#endif - -#define OS_IE_FIFO_SEND OS_IE_SPFIFO_SEND -#define OS_IE_FIFO_RECV OS_IE_SPFIFO_RECV - -#define OS_IE_USER_FLAG0_SHIFT 31 -#define OS_IE_USER_FLAG1_SHIFT 30 -#define OS_IE_USER_FLAG0 (1UL << OS_IE_USER_FLAG0_SHIFT) -#define OS_IE_USER_FLAG1 (1UL << OS_IE_USER_FLAG1_SHIFT) - -#define OSi_IRQCALLBACK_NO_DMA0 0 -#define OSi_IRQCALLBACK_NO_DMA1 1 -#define OSi_IRQCALLBACK_NO_DMA2 2 -#define OSi_IRQCALLBACK_NO_DMA3 3 -#define OSi_IRQCALLBACK_NO_TIMER0 4 -#define OSi_IRQCALLBACK_NO_TIMER1 5 -#define OSi_IRQCALLBACK_NO_TIMER2 6 -#define OSi_IRQCALLBACK_NO_TIMER3 7 -#ifdef SDK_ARM7 -#define OSi_IRQCALLBACK_NO_VBLANK 8 -#endif -#ifdef SDK_ARM9 -#define OSi_IRQCALLBACK_NUM (7 + 1) -#else -#define OSi_IRQCALLBACK_NUM (8 + 1) -#endif - -#define OS_IRQ_MAIN_BUFFER_SIZE (0x200) - -typedef void (* OSIrqFunction) (void); - -typedef struct { - void (* func)(void *); - u32 enable; - void * arg; -} OSIrqCallbackInfo; - -#ifndef OSi_OSIRQMASK_DEFINED -typedef u32 OSIrqMask; -#define OSi_OSIRQMASK_DEFINED -#endif - -extern OSIrqFunction OS_IRQTable[]; - -extern OSIrqCallbackInfo OSi_IrqCallbackInfo[OSi_IRQCALLBACK_NUM]; - -void OS_IrqDummy(void); -void OS_IrqHandler(void); -void OS_IrqHandler_ThreadSwitch(void); - -static inline BOOL OS_EnableIrq (void) -{ - u16 prep = reg_OS_IME; - reg_OS_IME = OS_IME_ENABLE; - return (BOOL)prep; -} - -static inline BOOL OS_DisableIrq (void) -{ - u16 prep = reg_OS_IME; - reg_OS_IME = OS_IME_DISABLE; - return (BOOL)prep; -} - -static inline BOOL OS_RestoreIrq (BOOL enable) -{ - u16 prep = reg_OS_IME; - reg_OS_IME = (u16)enable; - return (BOOL)prep; -} - -OSIrqMask OS_SetIrqMask(OSIrqMask intr); - -static inline OSIrqMask OS_GetIrqMask (void) -{ - return reg_OS_IE; -} - -OSIrqMask OS_EnableIrqMask(OSIrqMask intr); - -OSIrqMask OS_DisableIrqMask(OSIrqMask intr); - -OSIrqMask OS_ResetRequestIrqMask(OSIrqMask intr); - -static inline OSIrqMask OS_GetRequestIrqMask (void) -{ - return reg_OS_IF; -} - -void OS_InitIrqTable(void); - -void OS_SetIrqFunction(OSIrqMask intrBit, OSIrqFunction function); - -OSIrqFunction OS_GetIrqFunction(OSIrqMask intrBit); - -static inline void OS_SetIrqCheckFlag (OSIrqMask intr) -{ - *(vu32 *)HW_INTR_CHECK_BUF |= (u32)intr; -} - -static inline void OS_ClearIrqCheckFlag (OSIrqMask intr) -{ - *(vu32 *)HW_INTR_CHECK_BUF &= (u32) ~intr; -} - -static inline OSIrqMask OS_GetIrqCheckFlag (void) -{ - return *(OSIrqMask *)HW_INTR_CHECK_BUF; -} - -void OS_WaitIrq(BOOL clear, OSIrqMask irqFlags); - -void OS_WaitAnyIrq(void); - -static inline vu32 OS_GetVBlankCount (void) -{ - return *(vu32 *)HW_VBLANK_COUNT_BUF; -} - -static inline void OSi_SetVBlankCount (u32 count) -{ - *(u32 *)HW_VBLANK_COUNT_BUF = count; -} - -extern void OS_SetIrqStackWarningOffset(u32 offset); - -extern OSStackStatus OS_GetIrqStackStatus(void); - -extern void OS_SetIrqStackChecker(void); - -void OSi_CheckIrqStack(char * file, int line); -#if !defined(SDK_FINALROM) && !defined(SDK_NO_MESSAGE) -#define OS_CheckIrqStack() OSi_CheckIrqStack(__FILE__, __LINE__); -#else -#define OS_CheckIrqStack() ((void)0) -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/os/common/message.h b/subprojects/NitroSDK/include/nitro/os/common/message.h deleted file mode 100644 index d27ff70e08..0000000000 --- a/subprojects/NitroSDK/include/nitro/os/common/message.h +++ /dev/null @@ -1,51 +0,0 @@ -#ifndef NITRO_OS_MESSAGE_H_ -#define NITRO_OS_MESSAGE_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct OSMessageQueue OSMessageQueue; -typedef void * OSMessage; - -#pragma warn_padding off -struct OSMessageQueue { - OSThreadQueue queueSend; - OSThreadQueue queueReceive; - OSMessage * msgArray; - s32 msgCount; - s32 firstIndex; - s32 usedCount; -}; -#pragma warn_padding reset - -#define OS_MESSAGE_NOBLOCK 0 -#define OS_MESSAGE_BLOCK 1 - -void OS_InitMessageQueue(OSMessageQueue * mq, OSMessage * msgArray, s32 msgCount); - -BOOL OS_SendMessage(OSMessageQueue * mq, OSMessage msg, s32 flags); - -BOOL OS_ReceiveMessage(OSMessageQueue * mq, OSMessage * msg, s32 flags); - -BOOL OS_JamMessage(OSMessageQueue * mq, OSMessage msg, s32 flags); - -BOOL OS_ReadMessage(OSMessageQueue * mq, OSMessage * msg, s32 flags); - -static inline s32 OS_GetMessageCount (OSMessageQueue * mq) -{ - SDK_ASSERT(mq); - return mq->msgCount; -} - -static inline BOOL OS_IsMessageQueueFull (OSMessageQueue * mq) -{ - SDK_ASSERT(mq); - return (mq->usedCount >= mq->msgCount); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/os/common/mutex.h b/subprojects/NitroSDK/include/nitro/os/common/mutex.h deleted file mode 100644 index 349e631b11..0000000000 --- a/subprojects/NitroSDK/include/nitro/os/common/mutex.h +++ /dev/null @@ -1,45 +0,0 @@ -#ifndef NITRO_OS_MUTEX_H_ -#define NITRO_OS_MUTEX_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include - -#ifndef SDK_THREAD_INFINITY -typedef struct OSMutex OSMutex; -#endif - -#pragma warn_padding off -struct OSMutex { - OSThreadQueue queue; - OSThread * thread; - s32 count; - -#ifndef SDK_THREAD_INFINITY - OSMutex * prev; - OSMutex * next; -#else - OSMutexLink link; -#endif -}; -#pragma warn_padding reset - -void OS_InitMutex(OSMutex * mutex); - -void OS_LockMutex(OSMutex * mutex); - -void OS_UnlockMutex(OSMutex * mutex); - -BOOL OS_TryLockMutex(OSMutex * mutex); - -void OSi_UnlockAllMutex(OSThread * thread); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/os/common/ownerInfo.h b/subprojects/NitroSDK/include/nitro/os/common/ownerInfo.h deleted file mode 100644 index bdc07c40d1..0000000000 --- a/subprojects/NitroSDK/include/nitro/os/common/ownerInfo.h +++ /dev/null @@ -1,110 +0,0 @@ -#ifndef NITRO_OS_COMMON_OWNERINFO_H_ -#define NITRO_OS_COMMON_OWNERINFO_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include -#include - -#include - -#define OS_FAVORITE_COLOR_GRAY 0x00 -#define OS_FAVORITE_COLOR_BROWN 0x01 -#define OS_FAVORITE_COLOR_RED 0x02 -#define OS_FAVORITE_COLOR_PINK 0x03 -#define OS_FAVORITE_COLOR_ORANGE 0x04 -#define OS_FAVORITE_COLOR_YELLOW 0x05 -#define OS_FAVORITE_COLOR_LIME_GREEN 0x06 -#define OS_FAVORITE_COLOR_GREEN 0x07 -#define OS_FAVORITE_COLOR_DARK_GREEN 0x08 -#define OS_FAVORITE_COLOR_SEA_GREEN 0x09 -#define OS_FAVORITE_COLOR_TURQUOISE 0x0A -#define OS_FAVORITE_COLOR_BLUE 0x0B -#define OS_FAVORITE_COLOR_DARK_BLUE 0x0C -#define OS_FAVORITE_COLOR_PURPLE 0x0D -#define OS_FAVORITE_COLOR_VIOLET 0x0E -#define OS_FAVORITE_COLOR_MAGENTA 0x0F -#define OS_FAVORITE_COLOR_BITMASK 0x0F -#define OS_FAVORITE_COLOR_MAX 0x10 - -#define OS_FAVORITE_COLOR_VALUE_GRAY GX_RGB(12, 16, 19) -#define OS_FAVORITE_COLOR_VALUE_BROWN GX_RGB(23, 9, 0) -#define OS_FAVORITE_COLOR_VALUE_RED GX_RGB(31, 0, 3) -#define OS_FAVORITE_COLOR_VALUE_PINK GX_RGB(31, 17, 31) -#define OS_FAVORITE_COLOR_VALUE_ORANGE GX_RGB(31, 18, 0) -#define OS_FAVORITE_COLOR_VALUE_YELLOW GX_RGB(30, 28, 0) -#define OS_FAVORITE_COLOR_VALUE_LIME_GREEN GX_RGB(21, 31, 0) -#define OS_FAVORITE_COLOR_VALUE_GREEN GX_RGB(0, 31, 0) -#define OS_FAVORITE_COLOR_VALUE_DARK_GREEN GX_RGB(0, 20, 7) -#define OS_FAVORITE_COLOR_VALUE_SEA_GREEN GX_RGB(9, 27, 17) -#define OS_FAVORITE_COLOR_VALUE_TURQUOISE GX_RGB(6, 23, 30) -#define OS_FAVORITE_COLOR_VALUE_BLUE GX_RGB(0, 11, 30) -#define OS_FAVORITE_COLOR_VALUE_DARK_BLUE GX_RGB(0, 0, 18) -#define OS_FAVORITE_COLOR_VALUE_PURPLE GX_RGB(17, 0, 26) -#define OS_FAVORITE_COLOR_VALUE_VIOLET GX_RGB(26, 0, 29) -#define OS_FAVORITE_COLOR_VALUE_MAGENTA GX_RGB(31, 0, 18) - -#ifdef SDK_TS -#if (SDK_TS_VERSION >= 200 || SDK_NVRAM_FORMAT >= 100) - -typedef enum OSLanguage { - OS_LANGUAGE_JAPANESE = NVRAM_CONFIG_LANG_JAPANESE, - OS_LANGUAGE_ENGLISH = NVRAM_CONFIG_LANG_ENGLISH, - OS_LANGUAGE_FRENCH = NVRAM_CONFIG_LANG_FRENCH, - OS_LANGUAGE_GERMAN = NVRAM_CONFIG_LANG_GERMAN, - OS_LANGUAGE_ITALIAN = NVRAM_CONFIG_LANG_ITALIAN, - OS_LANGUAGE_SPANISH = NVRAM_CONFIG_LANG_SPANISH, -#if (SDK_NVRAM_FORMAT >= 300) - OS_LANGUAGE_CHINESE = NVRAM_CONFIG_LANG_CHINESE, - OS_LANGUAGE_HANGUL = NVRAM_CONFIG_LANG_HANGUL, -#endif - OS_LANGUAGE_CODE_MAX = NVRAM_CONFIG_LANG_CODE_MAX -} OSLanguage; - -#define OS_OWNERINFO_NICKNAME_MAX NVRAM_CONFIG_NICKNAME_LENGTH -#define OS_OWNERINFO_COMMENT_MAX NVRAM_CONFIG_COMMENT_LENGTH - -typedef struct OSBirthday { - u8 month; - u8 day; -} OSBirthday; - -typedef struct OSOwnerInfo { - u8 language; - u8 favoriteColor; - OSBirthday birthday; - u16 nickName[OS_OWNERINFO_NICKNAME_MAX + 1]; - - u16 nickNameLength; - u16 comment[OS_OWNERINFO_COMMENT_MAX + 1]; - - u16 commentLength; -} OSOwnerInfo; - -void OS_GetOwnerInfo(OSOwnerInfo * info); - -#endif - -s64 OS_GetOwnerRtcOffset(void); - -#endif - -void OS_GetMacAddress(u8 * macAddress); - -const GXRgb * OS_GetFavoriteColorTable(void); - -static inline GXRgb OS_GetFavoriteColor (int index) -{ - return OS_GetFavoriteColorTable()[index & OS_FAVORITE_COLOR_BITMASK]; -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/os/common/printf.h b/subprojects/NitroSDK/include/nitro/os/common/printf.h deleted file mode 100644 index 3ed06dd3a4..0000000000 --- a/subprojects/NitroSDK/include/nitro/os/common/printf.h +++ /dev/null @@ -1,106 +0,0 @@ -#ifndef NITRO_OS_COMMON_PRINTF_H_ -#define NITRO_OS_COMMON_PRINTF_H_ - -#pragma warn_padding off -// #include -#include -#include -#pragma warn_padding reset -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define REG_EMU_CONSOLE_OUT 0x4fff000 -#define reg_OS_EMU_CONSOLE_OUT (*((REGType8v *)REG_EMU_CONSOLE_OUT)) - -#ifndef SDK_FINALROM -extern void (* OS_PutString) (const char * str); -#else -#define OS_PutString(x) ((void)0) -#endif - -int OS_SPrintf(char * dst, const char * fmt, ...); -int OS_VSPrintf(char * dst, const char * fmt, va_list vlist); -int OS_SNPrintf(char * dst, size_t len, const char * fmt, ...); -int OS_VSNPrintf(char * dst, size_t len, const char * fmt, va_list vlist); -int OS_VSNPrintfEx(char * dst, size_t len, const char * fmt, va_list vlist); - -#ifndef SDK_FINALROM -void OS_PutChar(char c); -void OS_VPrintf(const char * fmt, va_list vlist); -void OS_TVPrintf(const char * fmt, va_list vlist); -void OS_TVPrintfEx(const char * fmt, va_list vlist); -void OS_Printf(const char * fmt, ...); -void OS_TPrintf(const char * fmt, ...); -void OS_TPrintfEx(const char * fmt, ...); -#ifndef SDK_NO_MESSAGE -void OSi_Warning(const char * file, int line, const char * fmt, ...); -void OSi_TWarning(const char * file, int line, const char * fmt, ...); -void OSi_Panic(const char * file, int line, const char * fmt, ...); -void OSi_TPanic(const char * file, int line, const char * fmt, ...); -#else -void OS_Terminate(); -#define OSi_Warning(file, line, ...) ((void)0) -#define OSi_TWarning(file, line, ...) ((void)0) -#define OSi_Panic(file, line, ...) OS_Terminate() -#define OSi_TPanic(file, line, ...) OS_Terminate() -#endif - -#define OS_Warning(...) OSi_Warning(__FILE__, __LINE__, __VA_ARGS__); -#define OS_Panic(...) OSi_Panic(__FILE__, __LINE__, __VA_ARGS__); -#define OS_TWarning(...) OSi_TWarning(__FILE__, __LINE__, __VA_ARGS__); -#define OS_TPanic(...) OSi_TPanic(__FILE__, __LINE__, __VA_ARGS__); - -#else - -void OS_Terminate(); -#define OS_PutChar(...) ((void)0) -#define OS_VPrintf(fmt, ...) ((void)0) -#define OS_Printf(...) ((void)0) -#define OSi_Warning(file, line, ...) ((void)0) -#define OSi_Panic(file, line, ...) OS_Terminate() -#define OS_Warning(...) ((void)0) -#define OS_Panic(...) OS_Terminate() - -#define OS_TVPrintf(fmt, ...) ((void)0) -#define OS_TVPrintfEx(fmt, ...) ((void)0) -#define OS_TPrintf(...) ((void)0) -#define OS_TPrintfEx(...) ((void)0) -#define OSi_TWarning(file, line, ...) ((void)0) -#define OSi_TPanic(file, line, ...) OS_Terminate() -#define OS_TWarning(...) ((void)0) -#define OS_TPanic(...) OS_Terminate() -#endif - -typedef union { - u16 s; - char c[2]; -} OSPrintWChar; - -#define OS_PRINTSRV_BUFFERSIZE 1024 -#define OS_PRINTSRV_WCHARSIZE (OS_PRINTSRV_BUFFERSIZE / sizeof(OSPrintWChar)) - -typedef volatile struct { - u32 in; - u32 out; - OSPrintWChar buffer[OS_PRINTSRV_WCHARSIZE]; -} OSPrintServerBuffer; - -#ifdef SDK_ARM9 -#ifndef SDK_FINALROM -void OS_InitPrintServer(void); -void OS_PrintServer(void); -#else -#define OS_InitPrintServer() ((void)0) -#define OS_PrintServer() ((void)0) -#endif -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/os/common/profile.h b/subprojects/NitroSDK/include/nitro/os/common/profile.h deleted file mode 100644 index 2053c2db8e..0000000000 --- a/subprojects/NitroSDK/include/nitro/os/common/profile.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef NITRO_OS_PROFILE_H_ -#define NITRO_OS_PROFILE_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef SDK_PROFILE_CALLTRACE -# define OS_PROFILE_AVAILABLE -# define OS_PROFILE_CALL_TRACE -#endif - -#ifdef SDK_PROFILE_FUNCTIONCOST -# define OS_PROFILE_AVAILABLE -# define OS_PROFILE_FUNCTION_COST -#endif - -#ifdef OS_PROFILE_AVAILABLE - -#if defined(OS_PROFILE_CALL_TRACE) && defined(OS_PROFILE_FUNCTION_COST) -***ERROR: cannot specify both options of OS_PROFILE_CALL_TRACE and OS_PROFILE_FUNCTION_COST at a same -time. -#endif - -#ifdef SDK_FINALROM -# define OS_NO_CALLTRACE -# define OS_NO_FUNCTIONCOST -#endif -#endif - -void __PROFILE_ENTRY(void); -void __PROFILE_EXIT(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/os/common/reset.h b/subprojects/NitroSDK/include/nitro/os/common/reset.h deleted file mode 100644 index f698fc9984..0000000000 --- a/subprojects/NitroSDK/include/nitro/os/common/reset.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef NITRO_OS_RESET_H_ -#define NITRO_OS_RESET_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -void OS_InitReset(void); - -#ifdef SDK_ARM9 -void OS_ResetSystem(u32 parameter); -#else -void OS_ResetSystem(void); -#endif - -BOOL OS_IsResetOccurred(void); - -inline u32 OS_GetResetParameter (void) -{ - return (u32) * (u32 *)HW_RESET_PARAMETER_BUF; -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/os/common/spinLock.h b/subprojects/NitroSDK/include/nitro/os/common/spinLock.h deleted file mode 100644 index dc1ad26695..0000000000 --- a/subprojects/NitroSDK/include/nitro/os/common/spinLock.h +++ /dev/null @@ -1,68 +0,0 @@ -#ifndef NITRO_OS_SPINLOCK_H_ -#define NITRO_OS_SPINLOCK_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#define OS_UNLOCK_ID 0 -#define OS_MAINP_LOCKED_FLAG 0x40 -#define OS_MAINP_LOCK_ID_START 0x40 -#define OS_MAINP_LOCK_ID_END 0x6f -#define OS_MAINP_DBG_LOCK_ID 0x70 -#define OS_MAINP_SYSTEM_LOCK_ID 0x7f -#define OS_SUBP_LOCKED_FLAG 0x80 -#define OS_SUBP_LOCK_ID_START 0x80 -#define OS_SUBP_LOCK_ID_END 0xaf -#define OS_SUBP_DBG_LOCK_ID 0xb0 -#define OS_SUBP_SYSTEM_LOCK_ID 0xbf - -#define OS_LOCK_SUCCESS 0 -#define OS_LOCK_ERROR (-1) - -#define OS_UNLOCK_SUCCESS 0 -#define OS_UNLOCK_ERROR (-2) - -#define OS_LOCK_FREE 0 - -#define OS_LOCK_ID_ERROR (-3) - -typedef volatile struct OSLockWord { - u32 lockFlag; - u16 ownerID; - u16 extension; -} OSLockWord; - -void OS_InitLock(void); - -s32 OS_LockByWord(u16 lockID, OSLockWord * lockp, void (* ctrlFuncp)(void)); -s32 OS_LockCartridge(u16 lockID); -s32 OS_LockCard(u16 lockID); - -s32 OS_UnlockByWord(u16 lockID, OSLockWord * lockp, void (* ctrlFuncp)(void)); -s32 OS_UnlockCartridge(u16 lockID); -s32 OS_UnlockCard(u16 lockID); - -s32 OS_UnLockByWord(u16 lockID, OSLockWord * lockp, void (* ctrlFuncp)(void)); -s32 OS_UnLockCartridge(u16 lockID); -s32 OS_UnLockCard(u16 lockID); - -s32 OS_TryLockByWord(u16 lockID, OSLockWord * lockp, void (* crtlFuncp)(void)); -s32 OS_TryLockCartridge(u16 lockID); -s32 OS_TryLockCard(u16 lockID); - -u16 OS_ReadOwnerOfLockWord(OSLockWord * lockp); -#define OS_ReadOwnerOfLockCartridge() OS_ReadOwnerOfLockWord((OSLockWord *)HW_CTRDG_LOCK_BUF) -#define OS_ReadOwnerOfLockCard() OS_ReadOwnerOfLockWord((OSLockWord *)HW_CARD_LOCK_BUF) - -s32 OS_GetLockID(void); - -void OS_ReleaseLockID(u16 lockID); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/os/common/system.h b/subprojects/NitroSDK/include/nitro/os/common/system.h deleted file mode 100644 index 44811d6e7c..0000000000 --- a/subprojects/NitroSDK/include/nitro/os/common/system.h +++ /dev/null @@ -1,87 +0,0 @@ -#ifndef NITRO_OS_SYSTEM_H_ -#define NITRO_OS_SYSTEM_H_ - -#ifndef SDK_ASM -#include -#include -#endif - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef SDK_ASM -#define OS_EXIT_STRING_1 "*** Exit nitro program (status=" -#define OS_EXIT_STRING_2 "%d).\n" -#define OS_EXIT_STRING OS_EXIT_STRING_1 OS_EXIT_STRING_2 - -typedef enum { - OS_PROCMODE_USER = HW_PSR_USER_MODE, - OS_PROCMODE_FIQ = HW_PSR_FIQ_MODE, - OS_PROCMODE_IRQ = HW_PSR_IRQ_MODE, - OS_PROCMODE_SVC = HW_PSR_SVC_MODE, - OS_PROCMODE_ABORT = HW_PSR_ABORT_MODE, - OS_PROCMODE_UNDEF = HW_PSR_UNDEF_MODE, - OS_PROCMODE_SYS = HW_PSR_SYS_MODE -} OSProcMode; - -typedef enum { - OS_INTRMODE_IRQ_DISABLE = HW_PSR_IRQ_DISABLE, - OS_INTRMODE_IRQ_ENABLE = 0 -} OSIntrMode_Irq; - -typedef enum { - OS_INTRMODE_FIQ_DISABLE = HW_PSR_FIQ_DISABLE, - OS_INTRMODE_FIQ_ENABLE = 0 -} OSIntrMode_Fiq; - -typedef u32 OSIntrMode; - -extern OSIntrMode OS_EnableInterrupts(void); - -extern OSIntrMode OS_DisableInterrupts(void); - -extern OSIntrMode OS_RestoreInterrupts(OSIntrMode state); - -extern OSIntrMode OS_EnableInterrupts_IrqAndFiq(void); - -extern OSIntrMode OS_DisableInterrupts_IrqAndFiq(void); - -extern OSIntrMode OS_RestoreInterrupts_IrqAndFiq(OSIntrMode state); - -extern OSIntrMode_Irq OS_GetCpsrIrq(void); - -extern OSProcMode OS_GetProcMode(void); - -extern void OS_Terminate(void); - -#ifdef SDK_ARM9 -extern void OS_Halt(void); -#else -static inline void OS_Halt (void) -{ - SVC_Halt(); -} -#endif - -extern void OS_Exit(int status); - -extern void OS_SpinWait(u32 cycle); - -#ifndef OSi_OSIRQMASK_DEFINED -typedef u32 OSIrqMask; -#define OSi_OSIRQMASK_DEFINED -#endif -extern void OS_WaitInterrupt(BOOL clear, OSIrqMask irqFlags); - -extern void OS_WaitVBlankIntr(void); - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/os/common/systemCall.h b/subprojects/NitroSDK/include/nitro/os/common/systemCall.h deleted file mode 100644 index 44f3ea4334..0000000000 --- a/subprojects/NitroSDK/include/nitro/os/common/systemCall.h +++ /dev/null @@ -1,119 +0,0 @@ -#ifndef NITRO_OS_SYSTEMCALL_H_ -#define NITRO_OS_SYSTEMCALL_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef SDK_SVC_WAITVBLANK_COMPATIBLE -void SVC_WaitVBlankIntr(void); -#else -#define SVC_WaitVBlankIntr OS_WaitVBlankIntr -#endif - -void SVC_WaitByLoop(s32 count); - -void SVC_CpuSet(const void * srcp, void * destp, u32 dmaCntData); - -void SVC_CpuSetFast(const void * srcp, void * destp, u32 dmaCntData); - -#define SVC_CpuClear(data, destp, size, bit) \ - do { \ - vu ## bit tmp = (vu ## bit )(data); \ - SVC_CpuSet((u8 *)&(tmp), (u8 *)(destp), ( \ - MI_DMA_SRC_FIX | \ - MI_DMA_ ## bit ## BIT_BUS | ((size) / ((bit) / 8) & 0x1fffff))); \ - } while (0) - -#define SVC_CpuClearArray(data, destp, bit) \ - SVC_CpuClear(data, destp, sizeof(destp), bit) - -#define SVC_CpuCopy(srcp, destp, size, bit) \ - \ - SVC_CpuSet((u8 *)(srcp), (u8 *)(destp), ( \ - MI_DMA_SRC_INC | \ - MI_DMA_ ## bit ## BIT_BUS | ((size) / ((bit) / 8) & 0x1fffff))) - -#define SVC_CpuCopyArray(srcp, destp, bit) \ - SVC_CpuCopy(srcp, destp, sizeof(srcp), bit) - -#define SVC_CpuClearFast(data, destp, size) \ - do { \ - vu32 tmp = (vu32 )(data); \ - SVC_CpuSetFast((u8 *)&(tmp), (u8 *)(destp), ( \ - MI_DMA_SRC_FIX | ((size) / (32 / 8) & 0x1fffff))); \ - } while (0) - -#define SVC_CpuClearArrayFast(data, destp) \ - SVC_CpuClearFast(data, destp, sizeof(destp)) - -#define SVC_CpuCopyFast(srcp, destp, size) \ - \ - SVC_CpuSetFast((u8 *)(srcp), (u8 *)(destp), ( \ - MI_DMA_SRC_INC | ((size) / (32 / 8) & 0x1fffff))) - -#define SVC_CpuCopyArrayFast(srcp, destp) \ - SVC_CpuCopyFast(srcp, destp, sizeof(srcp)) - -void SVC_UnpackBits(const void * srcp, void * destp, const MIUnpackBitsParam * paramp); - -void SVC_UncompressLZ8(const void * srcp, void * destp); - -void SVC_UncompressRL8(const void * srcp, void * destp); - -#ifdef SDK_TS - -s32 SVC_UncompressLZ16FromDevice(const void * srcp, void * destp, const void * paramp, - const MIReadStreamCallbacks * callbacks); - -s32 SVC_UncompressRL16FromDevice(const void * srcp, void * destp, const void * paramp, - const MIReadStreamCallbacks * callbacks); - -s32 SVC_UncompressHuffmanFromDevice(const void * srcp, void * destp, u8 * tableBufp, - const MIReadStreamCallbacks * callbacks); - -u16 SVC_GetCRC16(u32 start, const void * datap, u32 size); - -BOOL SVC_IsMmemExpanded(void); - -#endif - -#if defined(SDK_ARM7) || (defined(SDK_ARM9) && defined(SDK_TS)) - -s32 SVC_Div(s32 number, s32 denom); - -s32 SVC_DivRem(s32 number, s32 denom); - -u16 SVC_Sqrt(u32 src); - -void SVC_Halt(void); - -#endif - -#ifdef SDK_ARM7 - -void SVC_Sleep(void); - -void SVC_SetSoundBias(s32 stepLoops); - -void SVC_ResetSoundBias(s32 stepLoops); - -#ifdef SDK_TS - -s16 SVC_GetSinTable(int index); -u16 SVC_GetPitchTable(int index); -u8 SVC_GetVolumeTable(int index); - -#endif - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/os/common/systemWork.h b/subprojects/NitroSDK/include/nitro/os/common/systemWork.h deleted file mode 100644 index d50e2dac7b..0000000000 --- a/subprojects/NitroSDK/include/nitro/os/common/systemWork.h +++ /dev/null @@ -1,68 +0,0 @@ -#ifndef NITRO_OS_COMMON_SYSTEMWORK_H_ -#define NITRO_OS_COMMON_SYSTEMWORK_H_ - -#if !(defined(SDK_WIN32) || defined(SDK_FROM_TOOL)) - -#ifndef SDK_ASM -#include - -#include - -#include -#include -#include - -typedef union { - u32 b32; - u16 b16; -} OSDmaClearSrc; -typedef struct { - u8 bootCheckInfo[0x20]; - u32 resetParameter; - u8 padding5[0x8]; - u32 romBaseOffset; - u8 cartridgeModuleInfo[12]; - u32 vblankCount; - u8 wmBootBuf[0x40]; - u8 nvramUserInfo[0x100]; - u8 isd_reserved1[0x20]; - u8 arenaInfo[0x48]; - u8 real_time_clock[8]; - u32 dmaClearBuf[4]; - u8 rom_header[0x160]; - u8 isd_reserved2[32]; - u32 pxiSignalParam[2]; - u32 pxiHandleChecker[2]; - u32 mic_last_address; - u16 mic_sampling_data; - u16 wm_callback_control; - u16 wm_rssi_pool; - u8 ctrdg_SetModuleInfoFlag; - u8 ctrdg_IsExisting; - u32 component_param; - OSThreadInfo * threadinfo_mainp; - OSThreadInfo * threadinfo_subp; - u16 button_XY; - u8 touch_panel[4]; - u16 autoloadSync; - u32 lockIDFlag_mainp[2]; - u32 lockIDFlag_subp[2]; - struct OSLockWord lock_VRAM_C; - struct OSLockWord lock_VRAM_D; - struct OSLockWord lock_WRAM_BLOCK0; - struct OSLockWord lock_WRAM_BLOCK1; - struct OSLockWord lock_CARD; - struct OSLockWord lock_CARTRIDGE; - struct OSLockWord lock_INIT; - u16 mmem_checker_mainp; - u16 mmem_checker_subp; - u8 padding4[2]; - u16 command_area; -} OSSystemWork; - -#define OS_GetSystemWork() ((OSSystemWork *)HW_MAIN_MEM_SYSTEM) -#endif - -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/os/common/thread.h b/subprojects/NitroSDK/include/nitro/os/common/thread.h deleted file mode 100644 index 4bcc8a4e00..0000000000 --- a/subprojects/NitroSDK/include/nitro/os/common/thread.h +++ /dev/null @@ -1,371 +0,0 @@ -#ifndef NITRO_OS_THREAD_H_ -#define NITRO_OS_THREAD_H_ - -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#if SDK_VERSION_MAJOR >= 3 -#define SDK_THREAD_INFINITY 1 -#endif - -#ifdef SDK_FINALROM - -#define OS_NO_CALLTRACE -#endif - -#ifndef SDK_THREAD_INFINITY - -#define OS_THREAD_MAX_NUM 16 -#endif - -#define OS_THREAD_LAUNCHER_PRIORITY 16 - -#define OS_THREAD_PRIORITY_MIN 0 -#define OS_THREAD_PRIORITY_MAX 31 - -typedef struct _OSThread OSThread; - -#ifdef SDK_THREAD_INFINITY -typedef struct _OSThreadQueue OSThreadQueue; -typedef struct _OSThreadLink OSThreadLink; -typedef struct _OSMutexQueue OSMutexQueue; -typedef struct _OSMutexLink OSMutexLink; -typedef struct OSMutex OSMutex; -#endif - -typedef struct OSiAlarm OSAlarm; - -#ifdef SDK_THREAD_INFINITY -struct _OSThreadQueue { - OSThread * head; - OSThread * tail; -}; - -struct _OSThreadLink { - OSThread * prev; - OSThread * next; -}; - -struct _OSMutexQueue { - OSMutex * head; - OSMutex * tail; -}; - -struct _OSMutexLink { - OSMutex * next; - OSMutex * prev; -}; - -#endif - -typedef enum { - OS_THREAD_STATE_WAITING = 0, - OS_THREAD_STATE_READY = 1, - OS_THREAD_STATE_TERMINATED = 2 -} OSThreadState; - -#ifndef SDK_THREAD_INFINITY - -#if (OS_THREAD_MAX_NUM <= 16) -typedef u16 OSThreadQueue; -#define OS_SIZEOF_OSTHREADQUEUE 16 -#elif (OS_THREAD_MAX_NUM <= 32) -typedef u32 OSThreadQueue; -#define OS_SIZEOF_OSTHREADQUEUE 32 -#else - Error: no bit field any more -#endif -#endif -#define OS_THREAD_SPECIFIC_MAX 3 -typedef void (* OSThreadDestructor) (void *); - -struct _OSThread { - OSContext context; - OSThreadState state; - OSThread * next; - u32 id; - u32 priority; - - void * profiler; - -#ifdef SDK_THREAD_INFINITY - OSThreadQueue * queue; - OSThreadLink link; -#endif - -#ifndef SDK_THREAD_INFINITY - void * mutex; - void * mutexQueueHead; - void * mutexQueueTail; -#else - OSMutex * mutex; - OSMutexQueue mutexQueue; -#endif - - u32 stackTop; - u32 stackBottom; - u32 stackWarningOffset; - -#ifndef SDK_THREAD_INFINITY - OSThreadQueue joinQueue; -#if OS_SIZEOF_OSTHREADQUEUE == 16 - u16 padding; -#endif -#else - OSThreadQueue joinQueue; - - void * specific[OS_THREAD_SPECIFIC_MAX]; - OSAlarm * alarmForSleep; - OSThreadDestructor destructor; - void * userParameter; - - int systemErrno; -#endif -}; - -typedef struct OSThreadInfo { - u16 isNeedRescheduling; -#ifndef SDK_THREAD_INFINITY - u16 max_entry; - u16 irqDepth; - u16 padding; -#else - u16 irqDepth; -#endif - OSThread * current; - OSThread * list; - void * switchCallback; -#ifndef SDK_THREAD_INFINITY - OSThread * entry[OS_THREAD_MAX_NUM]; -#endif -} OSThreadInfo; - -#ifndef SDK_THREAD_INFINITY -#define OS_THREADINFO_OFFSET_ISNEEDRESCHEDULING 0 -#define OS_THREADINFO_OFFSET_MAX_ENTRY 2 -#define OS_THREADINFO_OFFSET_IRQDEPTH 4 -#define OS_THREADINFO_OFFSET_PADDING 6 -#define OS_THREADINFO_OFFSET_CURRENT 8 -#define OS_THREADINFO_OFFSET_LIST 12 -#define OS_THREADINFO_OFFSET_SWITCHCALLBACK 16 -#define OS_THREADINFO_OFFSET_ENTRY 20 -#else -#define OS_THREADINFO_OFFSET_ISNEEDRESCHEDULING 0 -#define OS_THREADINFO_OFFSET_IRQDEPTH 2 -#define OS_THREADINFO_OFFSET_CURRENT 4 -#define OS_THREADINFO_OFFSET_LIST 8 -#define OS_THREADINFO_OFFSET_SWITCHCALLBACK 12 -#define OS_THREADINFO_OFFSET_ENTRY 16 -#endif - -#define OS_THREAD_OFFSET_CONTEXT 0 -#define OS_THREAD_OFFSET_STATE (sizeof(OSContext)) -#define OS_THREAD_OFFSET_NEXT (sizeof(OSContext) + sizeof(OSThreadState)) -#define OS_THREAD_OFFSET_ID (OS_THREAD_OFFSET_NEXT + sizeof(OSThread *)) - -typedef enum { - OS_STACK_NO_ERROR = 0, - OS_STACK_OVERFLOW = 1, - OS_STACK_ABOUT_TO_OVERFLOW = 2, - OS_STACK_UNDERFLOW = 3 -} OSStackStatus; - -typedef void (* OSSwitchThreadCallback) (OSThread * from, OSThread * to); - -void OSi_CheckStack(const char * file, int line, const OSThread * thread); -u32 OSi_GetSystemStackPointer(void); -u32 OSi_GetCurrentStackPointer(void); -OSThread * OSi_GetIdleThread(void); - -void OS_InitThread(void); - -BOOL OS_IsThreadAvailable(void); - -void OS_CreateThread(OSThread * thread, - void (* func)(void *), void * arg, void * stack, u32 stackSize, u32 prio); - -void OS_ExitThread(void); - -void OS_DestroyThread(OSThread * thread); - -#ifdef SDK_THREAD_INFINITY -void OS_KillThread(OSThread * thread, void * arg); -void OS_KillThreadWithPriority(OSThread * thread, void * arg, u32 prio); -#endif - -void OS_JoinThread(OSThread * thread); - -BOOL OS_IsThreadTerminated(const OSThread * thread); - -OSThread * OS_SelectThread(void); - -void OS_RescheduleThread(void); - -extern void OS_YieldThread(void); - -void OS_SleepThread(OSThreadQueue * queue); - -void OS_SleepThreadDirect(OSThread * thread, OSThreadQueue * queue); - -void OS_WakeupThread(OSThreadQueue * queue); - -void OS_WakeupThreadDirect(OSThread * thread); - -void OS_DumpThreadList(void); - -int OS_GetNumberOfThread(void); - -extern OSThreadInfo OSi_ThreadInfo; - -static inline OSThreadInfo * OS_GetThreadInfo (void) -{ - return &OSi_ThreadInfo; -} - -static inline u32 OS_GetMaxThreadId (void) -{ -#ifndef SDK_THREAD_INFINITY - return OS_GetThreadInfo()->max_entry; -#else - return 0x7fffffff; -#endif -} - -#ifndef SDK_THREAD_INFINITY -static inline OSThread * OS_GetThread (u32 id) -{ - SDK_ASSERTMSG(id < OS_THREAD_MAX_NUM, "Thread id illegal\n"); - return OS_GetThreadInfo()->entry[id]; -} -#else -extern OSThread * OS_GetThread(u32 id); -#endif - -static inline u32 OS_GetThreadId (const OSThread * thread) -{ - SDK_ASSERTMSG(thread, "null thread pointer."); - return thread->id; -} - -static inline OSThreadState OS_GetThreadState (const OSThread * thread) -{ - SDK_ASSERTMSG(thread, "null thread pointer."); - return thread->state; -} - -static inline OSContext * OS_GetThreadContext (const OSThread * thread) -{ - SDK_ASSERTMSG(thread, "null thread pointer."); - return (OSContext *)&thread->context; -} - -static inline BOOL OS_IsThreadRunnable (const OSThread * thread) -{ - return thread->state == OS_THREAD_STATE_READY; -} - -static inline void OS_InitThreadQueue (OSThreadQueue * queue) -{ -#ifndef SDK_THREAD_INFINITY - *queue = 0; -#else - queue->head = queue->tail = NULL; -#endif -} - -static inline OSThread * OS_GetCurrentThread (void) -{ - return OS_GetThreadInfo()->current; -} - -static inline void OS_SetCurrentThread (OSThread * thread) -{ - OS_GetThreadInfo()->current = thread; -} - -void OS_SetThreadStackWarningOffset(OSThread * thread, u32 offset); - -OSStackStatus OS_GetStackStatus(const OSThread * thread); - -#if !defined(SDK_FINALROM) && !defined(SDK_NO_MESSAGE) -#define OS_CheckStack(thread) OSi_CheckStack(__FILE__, __LINE__, (const OSThread *)thread); -#else -#define OS_CheckStack(thread) ((void)0) -#endif - -BOOL OS_SetThreadPriority(OSThread * thread, u32 prio); - -u32 OS_GetThreadPriority(const OSThread * thread); - -void OS_Sleep(u32 msec); - -OSSwitchThreadCallback OS_SetSwitchThreadCallback(OSSwitchThreadCallback callback); - -void OS_DumpThreadCallTrace(const OSThread * thread); - -u32 OS_DisableScheduler(void); - -u32 OS_EnableScheduler(void); - -#ifdef SDK_THREAD_INFINITY - -void OS_SetThreadDestructor(OSThread * thread, OSThreadDestructor dtor); - -OSThreadDestructor OS_GetThreadDestructor(const OSThread * thread); - -void OS_SetThreadParameter(OSThread * thread, void * parameter); - -void * OS_GetThreadParameter(const OSThread * thread); - -int OS_GetErrno(void); -#endif - -BOOL OS_IsThreadInList(const OSThread * thread); - -void OS_SetThreadDestructorStack(void * stack); - -#ifdef SDK_THREAD_INFINITY - -extern OSMutex * OSi_RemoveMutexLinkFromQueue(OSMutexQueue * queue); - -void OSi_SetSystemErrno(OSThread * thread, int errno); - -int OSi_GetSystemErrno(const OSThread * thread); - -#define OSi_SPECIFIC_CPS 0 - -static inline void OSi_SetSpecificData (OSThread * thread, int index, void * data) -{ - SDK_ASSERT(thread && 0 <= index && index < OS_THREAD_SPECIFIC_MAX); - thread->specific[index] = data; -} - -static inline void * OSi_GetSpecificData (const OSThread * thread, int index) -{ - SDK_ASSERT(thread && 0 <= index && index < OS_THREAD_SPECIFIC_MAX); - return thread->specific[index]; -} -#endif - -static inline OSThread * OS_GetThreadList (void) -{ - return OS_GetThreadInfo()->list; -} - -static inline OSThread * OS_GetNextThread (const OSThread * thread) -{ - SDK_ASSERT(thread); - return thread->next; -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/os/common/tick.h b/subprojects/NitroSDK/include/nitro/os/common/tick.h deleted file mode 100644 index 4f14cccf85..0000000000 --- a/subprojects/NitroSDK/include/nitro/os/common/tick.h +++ /dev/null @@ -1,53 +0,0 @@ -#ifndef NITRO_OS_TICK_H_ -#define NITRO_OS_TICK_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include - -typedef u64 OSTick; - -#define OS_SYSTEM_CLOCK HW_SYSTEM_CLOCK - -#define OSi_BOUND_SEC1 128154 -#define OSi_BOUND_SEC2 128 -#define OSi_BOUND_TICK1 67108 -#define OSi_BOUND_TICK2 67108863 - -#define OS_MicroSecondsToTicks(usec) ((OSTick)(((OS_SYSTEM_CLOCK / 1000) * (u64)(usec)) / 64 / 1000)) -#define OS_MicroSecondsToTicks32(usec) ((OSTick)(((OS_SYSTEM_CLOCK / 1000) * (u32)(usec)) / 64 / 1000)) - -#define OS_MilliSecondsToTicks(msec) ((OSTick)(((OS_SYSTEM_CLOCK / 1000) * (u64)(msec)) / 64)) -#define OS_MilliSecondsToTicks32(msec) ((OSTick)(((OS_SYSTEM_CLOCK / 1000) * (u32)(msec)) / 64)) - -#define OS_SecondsToTicks(sec) ((OSTick)((OS_SYSTEM_CLOCK * (u64)(sec)) / 64)) -#define OS_SecondsToTicks32(sec) ((OSTick)((OS_SYSTEM_CLOCK * (u32)(sec)) / 64)) - -#define OS_TicksToMicroSeconds(tick) (((u64)(tick) * 64 * 1000) / (OS_SYSTEM_CLOCK / 1000)) -#define OS_TicksToMicroSeconds32(tick) (((u32)(tick) * 64 * 1000) / (OS_SYSTEM_CLOCK / 1000)) - -#define OS_TicksToMilliSeconds(tick) (((u64)(tick) * 64) / (OS_SYSTEM_CLOCK / 1000)) -#define OS_TicksToMilliSeconds32(tick) (((u32)(tick) * 64) / (OS_SYSTEM_CLOCK / 1000)) - -#define OS_TicksToSeconds(tick) (((u64)(tick) * 64) / OS_SYSTEM_CLOCK) -#define OS_TicksToSeconds32(tick) (((u32)(tick) * 64) / OS_SYSTEM_CLOCK) - -void OS_InitTick(void); - -BOOL OS_IsTickAvailable(void); - -OSTick OS_GetTick(void); - -u16 OS_GetTickLo(void); - -void OS_SetTick(OSTick count); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/os/common/timer.h b/subprojects/NitroSDK/include/nitro/os/common/timer.h deleted file mode 100644 index 976fb1f89c..0000000000 --- a/subprojects/NitroSDK/include/nitro/os/common/timer.h +++ /dev/null @@ -1,69 +0,0 @@ -#ifndef NITRO_OS_TIMER_H_ -#define NITRO_OS_TIMER_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include - -typedef enum { - OS_TIMER_PRESCALER_1 = (0UL << REG_OS_TM0CNT_H_PS_SHIFT), - OS_TIMER_PRESCALER_64 = (1UL << REG_OS_TM0CNT_H_PS_SHIFT), - OS_TIMER_PRESCALER_256 = (2UL << REG_OS_TM0CNT_H_PS_SHIFT), - OS_TIMER_PRESCALER_1024 = (3UL << REG_OS_TM0CNT_H_PS_SHIFT) -} OSTimerPrescaler; - -typedef enum { - OS_TIMER_0 = 0, - OS_TIMER_1 = 1, - OS_TIMER_2 = 2, - OS_TIMER_3 = 3 -} OSTimer; - -typedef enum { - OS_TIMER32_01 = 0, - OS_TIMER32_12 = 1, - OS_TIMER32_23 = 2 -} OSTimer32; - -typedef enum { - OS_TIMER48_012 = 0, - OS_TIMER48_123 = 1 -} OSTimer48; - -static inline void OS_SetTimerCount (OSTimer id, u16 count) -{ - SDK_ASSERT(OS_TIMER_0 <= id && id <= OS_TIMER_3); - *((REGType16 *)((u32)REG_TM0CNT_L_ADDR + id * 4)) = count; -} - -static inline void OS_SetTimerControl (OSTimer id, u16 control) -{ - SDK_ASSERT(OS_TIMER_0 <= id && id <= OS_TIMER_3); - *((REGType16 *)((u32)REG_TM0CNT_H_ADDR + id * 4)) = control; -} - -void OS_StartTimer(OSTimer id, u16 count, OSTimerPrescaler preScale); - -void OS_StartTimer32(OSTimer32 id, u32 count, OSTimerPrescaler preScale); - -void OS_StartTimer48(OSTimer48 id, u64 count, OSTimerPrescaler preScale); - -void OS_StartTimer64(u64 count, OSTimerPrescaler preScale); - -void OS_StopTimer(OSTimer id); - -void OS_StopTimer32(OSTimer32 id); - -void OS_StopTimer48(OSTimer48 id); - -void OS_StopTimer64(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/os/common/valarm.h b/subprojects/NitroSDK/include/nitro/os/common/valarm.h deleted file mode 100644 index 07c10dcd84..0000000000 --- a/subprojects/NitroSDK/include/nitro/os/common/valarm.h +++ /dev/null @@ -1,68 +0,0 @@ -#ifndef NITRO_OS_VALARM_H_ -#define NITRO_OS_VALARM_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -typedef void (* OSVAlarmHandler) (void *); - -typedef struct OSiVAlarm OSVAlarm; -struct OSiVAlarm { - OSVAlarmHandler handler; - void * arg; - - u32 tag; - - u32 frame; - s16 fire; - - s16 delay; - - OSVAlarm * prev; - OSVAlarm * next; - - BOOL period; - - BOOL finish; - - BOOL canceled; -}; - -void OS_InitVAlarm(void); - -void OS_EndVAlarm(void); - -BOOL OS_IsVAlarmAvailable(void); - -void OS_CreateVAlarm(OSVAlarm * alarm); - -#define OS_VALARM_DELAY_MAX HW_LCD_LINES -void OS_SetVAlarm(OSVAlarm * alarm, s16 count, s16 delay, OSVAlarmHandler handler, void * arg); - -#define OSi_DELAYMARGIN 10 -static inline void OS_SetOneTimeVAlarm (OSVAlarm * alarm, s16 count, OSVAlarmHandler handler, - void * arg) -{ - OS_SetVAlarm(alarm, count, OSi_DELAYMARGIN, handler, arg); -} - -void OS_SetPeriodicVAlarm(OSVAlarm * alarm, s16 count, s16 delay, OSVAlarmHandler handler, - void * arg); - -void OS_SetVAlarmTag(OSVAlarm * alarm, u32 tag); - -void OS_CancelVAlarm(OSVAlarm * alarm); - -void OS_CancelVAlarms(u32 tag); - -void OS_CancelAllVAlarms(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/os_sp.h b/subprojects/NitroSDK/include/nitro/os_sp.h deleted file mode 100644 index 9a7b0af3c1..0000000000 --- a/subprojects/NitroSDK/include/nitro/os_sp.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef SDK_ARM7 -#define SDK_ARM7 -#endif -#ifdef SDK_ARM9 -#undef SDK_ARM9 -#endif -#include diff --git a/subprojects/NitroSDK/include/nitro/pad.h b/subprojects/NitroSDK/include/nitro/pad.h deleted file mode 100644 index 88dae60294..0000000000 --- a/subprojects/NitroSDK/include/nitro/pad.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef NITRO_PAD_H_ -#define NITRO_PAD_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#ifdef SDK_ARM9 -#else -#include -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/pad/ARM7/xyButton.h b/subprojects/NitroSDK/include/nitro/pad/ARM7/xyButton.h deleted file mode 100644 index 96bd82a913..0000000000 --- a/subprojects/NitroSDK/include/nitro/pad/ARM7/xyButton.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef NITRO_PAD_XYBUTTON_H_ -#define NITRO_PAD_XYBUTTON_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -extern BOOL PADi_XYButtonAvailable; - -BOOL PAD_InitXYButton(void); - -static inline BOOL PAD_IsXYButtonAvailable (void) -{ - return PADi_XYButtonAvailable; -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/pad/common/pad.h b/subprojects/NitroSDK/include/nitro/pad/common/pad.h deleted file mode 100644 index 77bd0decbb..0000000000 --- a/subprojects/NitroSDK/include/nitro/pad/common/pad.h +++ /dev/null @@ -1,76 +0,0 @@ -#ifndef NITRO_PAD_PAD_H_ -#define NITRO_PAD_PAD_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#ifdef SDK_ARM9 -#include -#else -#include -#endif - -#define PAD_PLUS_KEY_MASK 0x00f0 -#define PAD_BUTTON_MASK 0x2f0f -#define PAD_DEBUG_BUTTON_MASK 0x2000 -#define PAD_ALL_MASK 0x2fff -#define PAD_RCNTPORT_MASK 0x2c00 -#define PAD_KEYPORT_MASK 0x03ff - -#define PAD_DETECT_FOLD_MASK 0x8000 - -#define PAD_BUTTON_A 0x0001 -#define PAD_BUTTON_B 0x0002 -#define PAD_BUTTON_SELECT 0x0004 -#define PAD_BUTTON_START 0x0008 -#define PAD_KEY_RIGHT 0x0010 -#define PAD_KEY_LEFT 0x0020 -#define PAD_KEY_UP 0x0040 -#define PAD_KEY_DOWN 0x0080 -#define PAD_BUTTON_R 0x0100 -#define PAD_BUTTON_L 0x0200 -#define PAD_BUTTON_X 0x0400 -#define PAD_BUTTON_Y 0x0800 -#define PAD_BUTTON_DEBUG 0x2000 - -static inline u16 PAD_Read (void) -{ - return (u16)(((reg_PAD_KEYINPUT | *(vu16 *)HW_BUTTON_XY_BUF) ^ - (PAD_PLUS_KEY_MASK | PAD_BUTTON_MASK)) & (PAD_PLUS_KEY_MASK | PAD_BUTTON_MASK)); -} - -static inline BOOL PAD_DetectFold (void) -{ - return (BOOL)((*(vu16 *)HW_BUTTON_XY_BUF & PAD_DETECT_FOLD_MASK) >> 15); -} - -typedef enum { - PAD_LOGIC_OR = (0 << REG_PAD_KEYCNT_LOGIC_SHIFT), - PAD_LOGIC_AND = (1 << REG_PAD_KEYCNT_LOGIC_SHIFT), - - PAD_OR_INTR = PAD_LOGIC_OR, - PAD_AND_INTR = PAD_LOGIC_AND -} PADLogic; - -static inline void PADi_SetIrq (PADLogic logic, BOOL enable, u16 padMask) -{ - SDK_ASSERT(!(padMask & (~PAD_KEYPORT_MASK))); - reg_PAD_KEYCNT = (u16)(((u16)logic - | (enable ? REG_PAD_KEYCNT_INTR_MASK : 0) - | (PAD_KEYPORT_MASK & padMask))); -} - -static inline void PADi_ClearIrq (void) -{ - reg_PAD_KEYCNT = 0; -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/parent_begin.h b/subprojects/NitroSDK/include/nitro/parent_begin.h deleted file mode 100644 index 740839b4ec..0000000000 --- a/subprojects/NitroSDK/include/nitro/parent_begin.h +++ /dev/null @@ -1,9 +0,0 @@ -#include - -#if defined(SDK_CW) || defined(__MWERKS__) -#pragma section PARENT begin -#elif defined(SDK_ADS) -TO BE DEFINED -#elif defined(SDK_GCC) -TO BE DEFINED -#endif diff --git a/subprojects/NitroSDK/include/nitro/parent_end.h b/subprojects/NitroSDK/include/nitro/parent_end.h deleted file mode 100644 index e4ad3150da..0000000000 --- a/subprojects/NitroSDK/include/nitro/parent_end.h +++ /dev/null @@ -1,7 +0,0 @@ -#if defined(SDK_CW) || defined(__MWERKS__) -#pragma section PARENT end -#elif defined(SDK_ADS) -TO BE DEFINED -#elif defined(SDK_GCC) -TO BE DEFINED -#endif diff --git a/subprojects/NitroSDK/include/nitro/platform.h b/subprojects/NitroSDK/include/nitro/platform.h deleted file mode 100644 index 1f9776495e..0000000000 --- a/subprojects/NitroSDK/include/nitro/platform.h +++ /dev/null @@ -1,60 +0,0 @@ -#ifndef NITRO_PLATFORM_HEADER__ -#define NITRO_PLATFORM_HEADER__ - -#include - -#define PLATFORM_ENDIAN_BIG 0 -#define PLATFORM_ENDIAN_LITTLE 1 - -#define PLATFORM_BYTES_ENDIAN PLATFORM_ENDIAN_LITTLE - -#define PLATFORM_BYTES_ALIGN 1 - -#define PLATFORM_CACHE_SIZE 32 - -#define PLATFORM_ATTRIBUTE_CACHEALIGN ATTRIBUTE_ALIGN(32) - -#define PLATFORM_ENTER_CRITICALSECTION() OSIntrMode bak_interrupt_mode_ = OS_DisableInterrupts() - -#define PLATFORM_LEAVE_CRITICALSECTION() (void)OS_RestoreInterrupts(bak_interrupt_mode_) - -#if defined(SDK_CW) || defined(__MWERKS__) - -#define PLATFORM_BITFIELDS_ENDIAN PLATFORM_ENDIAN_LITTLE - -#define PLATFORM_COMPILER_ASSERT(expr) \ - extern void platform_compiler_assert ## __LINE__(char is[(expr) ? +1 : -1]) - -#define PLATFORM_STRUCT_PADDING_FOOTER - -#define PLATFORM_ATTRIBUTE_INLINE SDK_INLINE - -#else -# TO BE DEFINED -#endif - -typedef struct PLATFORM_LE8 { - unsigned char byte[1]; -} PLATFORM_STRUCT_PADDING_FOOTER PLATFORM_LE8; - -typedef struct PLATFORM_LE16 { - unsigned char byte[2]; -} PLATFORM_STRUCT_PADDING_FOOTER PLATFORM_LE16; - -typedef struct PLATFORM_LE32 { - unsigned char byte[4]; -} PLATFORM_STRUCT_PADDING_FOOTER PLATFORM_LE32; - -typedef struct PLATFORM_BE8 { - unsigned char byte[1]; -} PLATFORM_STRUCT_PADDING_FOOTER PLATFORM_BE8; - -typedef struct PLATFORM_BE16 { - unsigned char byte[2]; -} PLATFORM_STRUCT_PADDING_FOOTER PLATFORM_BE16; - -typedef struct PLATFORM_BE32 { - unsigned char byte[4]; -} PLATFORM_STRUCT_PADDING_FOOTER PLATFORM_BE32; - -#endif diff --git a/subprojects/NitroSDK/include/nitro/prc.h b/subprojects/NitroSDK/include/nitro/prc.h deleted file mode 100644 index 92ca2862a4..0000000000 --- a/subprojects/NitroSDK/include/nitro/prc.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef NITRO_PRC_H_ -#define NITRO_PRC_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -#include -#include -#include -#include - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/prc/algo_common.h b/subprojects/NitroSDK/include/nitro/prc/algo_common.h deleted file mode 100644 index f4ad5685a8..0000000000 --- a/subprojects/NitroSDK/include/nitro/prc/algo_common.h +++ /dev/null @@ -1,182 +0,0 @@ -#ifndef NITRO_PRC_ALGO_COMMON_H_ -#define NITRO_PRC_ALGO_COMMON_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include - -#define PRCi_ARRAY_SIZE(type, size, dummy) \ - sizeof(type) * (size) - -#define PRCi_ALLOC_ARRAY(dst, type, size, base, offset) \ - (dst) = (type *)((u8 *)(base) + (offset)); \ - (offset) += sizeof(type) * (size) - -#define PRC_RESAMPLE_DEFAULT_METHOD_COMMON PRC_RESAMPLE_METHOD_RECURSIVE -#define PRC_RESAMPLE_DEFAULT_THRESHOLD_COMMON 5 - -typedef struct PRCPrototypeDBParam_Common { - int dummy; -} PRCPrototypeDBParam_Common; - -typedef struct PRCInputPatternParam_Common { - union { - int normalizeSize; - int regularizeSize; - }; - PRCResampleMethod resampleMethod; - int resampleThreshold; -} PRCInputPatternParam_Common; - -typedef struct PRCiPatternData_Common { - u16 strokeCount; - u16 pointCount; - const PRCPoint * pointArray; - int * strokes; - int * strokeSizes; - fx32 * lineSegmentLengthArray; - fx16 * lineSegmentRatioToStrokeArray; - - u16 * lineSegmentAngleArray; - fx32 * strokeLengths; - fx16 * strokeRatios; - fx32 wholeLength; - PRCBoundingBox * strokeBoundingBoxes; - PRCBoundingBox wholeBoundingBox; -} PRCiPatternData_Common; - -typedef struct PRCiPatternBufferInfo_Common { - PRCPoint * pointArray; - int * strokes; - int * strokeSizes; - fx32 * lineSegmentLengthArray; - fx16 * lineSegmentRatioToStrokeArray; - - u16 * lineSegmentAngleArray; - fx32 * strokeLengths; - fx16 * strokeRatios; - PRCBoundingBox * strokeBoundingBoxes; -} PRCiPatternBufferInfo_Common; - -typedef struct PRCiPrototypeEntry_Common { - PRCiPatternData_Common data; - const PRCPrototypeEntry * entry; -} PRCiPrototypeEntry_Common; - -typedef struct PRCInputPattern_Common { - PRCiPatternData_Common data; - union { - int normalizeSize; - int regularizeSize; - }; - - void * buffer; - u32 bufferSize; -} PRCInputPattern_Common; - -typedef struct PRCiPrototypeListBufferInfo_Common { - PRCiPrototypeEntry_Common * patterns; - fx32 * lineSegmentLengthArray; - fx16 * lineSegmentRatioToStrokeArray; - - u16 * lineSegmentAngleArray; - int * strokeArray; - int * strokeSizeArray; - fx32 * strokeLengthArray; - fx16 * strokeRatioArray; - PRCBoundingBox * strokeBoundingBoxArray; -} PRCiPrototypeListBufferInfo_Common; - -typedef struct PRCPrototypeDB_Common { - PRCiPrototypeEntry_Common * patterns; - int patternCount; - - fx32 * lineSegmentLengthArray; - fx16 * lineSegmentRatioToStrokeArray; - - u16 * lineSegmentAngleArray; - int wholePointCount; - - int * strokeArray; - int * strokeSizeArray; - fx32 * strokeLengthArray; - fx16 * strokeRatioArray; - PRCBoundingBox * strokeBoundingBoxArray; - int wholeStrokeCount; - - int maxPointCount; - int maxStrokeCount; - - union { - int normalizeSize; - int regularizeSize; - }; - - const PRCPrototypeList * prototypeList; - void * buffer; - u32 bufferSize; -} PRCPrototypeDB_Common; - -static inline void PRC_Init_Common (void) -{ - PRCi_Init(); -} - -u32 - -PRC_GetPrototypeDBBufferSizeEx_Common(const PRCPrototypeList * prototypeList, - u32 kindMask, - BOOL ignoreDisabledEntries, - const PRCPrototypeDBParam_Common * param); - -u32 static inline PRC_GetPrototypeDBBufferSize_Common (const PRCPrototypeList * prototypeList) -{ - return PRC_GetPrototypeDBBufferSizeEx_Common(prototypeList, PRC_KIND_ALL, FALSE, NULL); -} - -BOOL - -PRC_InitPrototypeDBEx_Common(PRCPrototypeDB_Common * protoDB, - void * buffer, - const PRCPrototypeList * prototypeList, - u32 kindMask, - BOOL ignoreDisabledEntries, const PRCPrototypeDBParam_Common * param); - -static inline BOOL PRC_InitPrototypeDB_Common (PRCPrototypeDB_Common * protoDB, - void * buffer, const PRCPrototypeList * prototypeList) -{ - return PRC_InitPrototypeDBEx_Common(protoDB, buffer, prototypeList, PRC_KIND_ALL, FALSE, NULL); -} - -u32 PRC_GetInputPatternBufferSize_Common(int maxPointCount, int maxStrokeCount); - -BOOL - -PRC_InitInputPatternEx_Common(PRCInputPattern_Common * pattern, - void * buffer, - const PRCStrokes * strokes, - int maxPointCount, - int maxStrokeCount, const PRCInputPatternParam_Common * param); - -static inline BOOL PRC_InitInputPattern_Common (PRCInputPattern_Common * pattern, - void * buffer, - const PRCStrokes * strokes, int maxPointCount, int maxStrokeCount) -{ - return PRC_InitInputPatternEx_Common(pattern, buffer, strokes, maxPointCount, maxStrokeCount, - NULL); -} - -void PRC_GetInputPatternStrokes_Common(PRCStrokes * strokes, const PRCInputPattern_Common * input); - -void PRCi_PrintPatternData_Common(PRCiPatternData_Common * data); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/prc/algo_fine.h b/subprojects/NitroSDK/include/nitro/prc/algo_fine.h deleted file mode 100644 index c5e4e1f6cc..0000000000 --- a/subprojects/NitroSDK/include/nitro/prc/algo_fine.h +++ /dev/null @@ -1,271 +0,0 @@ -#ifndef NITRO_PRC_ALGO_FINE_H_ -#define NITRO_PRC_ALGO_FINE_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include -#include -#include - -#define PRC_LENGTH_FILTER_DEFAULT_THRESHOLD_FINE normalizeSize -#define PRC_LENGTH_FILTER_DEFAULT_RATIO_FINE 3 - -typedef PRCPrototypeDBParam_Common PRCPrototypeDBParam_Fine; - -typedef PRCInputPatternParam_Common PRCInputPatternParam_Fine; - -typedef PRCInputPattern_Common PRCInputPattern_Fine; - -typedef PRCPrototypeDB_Common PRCPrototypeDB_Fine; - -typedef struct PRCRecognizeParam_Fine { - int lengthFilterThreshold; - int lengthFilterRatio; -} PRCRecognizeParam_Fine; - -static inline void PRC_Init_Fine (void) -{ - PRC_Init_Common(); -} - -static inline u32 PRC_GetPrototypeDBBufferSize_Fine (const PRCPrototypeList * prototypeList) -{ - return PRC_GetPrototypeDBBufferSize_Common(prototypeList); -} - -static inline u32 PRC_GetPrototypeDBBufferSizeEx_Fine (const PRCPrototypeList * prototypeList, - u32 kindMask, - BOOL ignoreDisabledEntries, - const PRCPrototypeDBParam_Fine * param) -{ - return PRC_GetPrototypeDBBufferSizeEx_Common(prototypeList, kindMask, ignoreDisabledEntries, - param); -} - -static inline BOOL PRC_InitPrototypeDB_Fine (PRCPrototypeDB_Fine * protoDB, - void * buffer, const PRCPrototypeList * prototypeList) -{ - return PRC_InitPrototypeDB_Common(protoDB, buffer, prototypeList); -} - -static inline BOOL PRC_InitPrototypeDBEx_Fine (PRCPrototypeDB_Fine * protoDB, - void * buffer, - const PRCPrototypeList * prototypeList, - u32 kindMask, - BOOL ignoreDisabledEntries, const PRCPrototypeDBParam_Fine * param) -{ - return PRC_InitPrototypeDBEx_Common(protoDB, buffer, prototypeList, kindMask, - ignoreDisabledEntries, param); -} - -static inline u32 PRC_GetInputPatternBufferSize_Fine (int maxPointCount, int maxStrokeCount) -{ - return PRC_GetInputPatternBufferSize_Common(maxPointCount, maxStrokeCount); -} - -static inline BOOL PRC_InitInputPattern_Fine (PRCInputPattern_Fine * pattern, - void * buffer, - const PRCStrokes * strokes, int maxPointCount, int maxStrokeCount) -{ - return PRC_InitInputPattern_Common(pattern, buffer, strokes, maxPointCount, maxStrokeCount); -} - -static inline BOOL PRC_InitInputPatternEx_Fine (PRCInputPattern_Fine * pattern, - void * buffer, - const PRCStrokes * strokes, - int maxPointCount, - int maxStrokeCount, const PRCInputPatternParam_Fine * param) -{ - return PRC_InitInputPatternEx_Common(pattern, buffer, strokes, maxPointCount, maxStrokeCount, - param); -} - -u32 - -PRC_GetRecognitionBufferSizeEx_Fine(int maxPointCount, - int maxStrokeCount, - const PRCPrototypeDB_Fine * protoDB, - const PRCRecognizeParam_Fine * param); - -static inline u32 PRC_GetRecognitionBufferSize_Fine (int maxPointCount, - int maxStrokeCount, const PRCPrototypeDB_Fine * protoDB) -{ - return PRC_GetRecognitionBufferSizeEx_Fine(maxPointCount, maxStrokeCount, protoDB, NULL); -} - -int - -PRC_GetRecognizedEntriesEx_Fine(PRCPrototypeEntry ** resultEntries, - fx32 * resultScores, - int numRanking, - void * buffer, - const PRCInputPattern_Fine * input, - const PRCPrototypeDB_Fine * protoDB, - u32 kindMask, const PRCRecognizeParam_Fine * param); - -static inline int PRC_GetRecognizedEntries_Fine (PRCPrototypeEntry ** resultEntries, - fx32 * resultScores, - int numRanking, - void * buffer, - const PRCInputPattern_Fine * input, const PRCPrototypeDB_Fine * protoDB) -{ - return PRC_GetRecognizedEntriesEx_Fine(resultEntries, resultScores, numRanking, buffer, input, - protoDB, PRC_KIND_ALL, NULL); -} - -static inline fx32 PRC_GetRecognizedEntryEx_Fine (PRCPrototypeEntry ** resultEntry, - void * buffer, - const PRCInputPattern_Fine * input, - const PRCPrototypeDB_Fine * protoDB, - u32 kindMask, const PRCRecognizeParam_Fine * param) -{ - fx32 score; - (void)PRC_GetRecognizedEntriesEx_Fine(resultEntry, &score, 1, buffer, input, protoDB, kindMask, - param); - return score; -} - -static inline fx32 PRC_GetRecognizedEntry_Fine (PRCPrototypeEntry ** resultEntry, - void * buffer, - const PRCInputPattern_Fine * input, const PRCPrototypeDB_Fine * protoDB) -{ - return PRC_GetRecognizedEntryEx_Fine(resultEntry, buffer, input, protoDB, PRC_KIND_ALL, NULL); -} - -static inline void PRC_GetInputPatternStrokes_Fine (PRCStrokes * strokes, const PRCInputPattern_Fine * input) -{ - PRC_GetInputPatternStrokes_Common(strokes, input); -} - -#ifndef PRC_DEFAULT_ALGORITHM -#define PRC_DEFAULT_ALGORITHM "Fine" - -typedef PRCPrototypeDBParam_Fine PRCPrototypeDBParam; - -typedef PRCInputPatternParam_Fine PRCInputPatternParam; - -typedef PRCInputPattern_Fine PRCInputPattern; - -typedef PRCPrototypeDB_Fine PRCPrototypeDB; - -typedef PRCRecognizeParam_Fine PRCRecognizeParam; - -static inline void PRC_Init (void) -{ - PRC_Init_Fine(); -} - -static inline u32 PRC_GetPrototypeDBBufferSize (const PRCPrototypeList * prototypeList) -{ - return PRC_GetPrototypeDBBufferSize_Fine(prototypeList); -} - -static inline u32 PRC_GetPrototypeDBBufferSizeEx (const PRCPrototypeList * prototypeList, - u32 kindMask, - BOOL ignoreDisabledEntries, const PRCPrototypeDBParam * param) -{ - return PRC_GetPrototypeDBBufferSizeEx_Fine(prototypeList, kindMask, ignoreDisabledEntries, - param); -} - -static inline BOOL PRC_InitPrototypeDB (PRCPrototypeDB * protoDB, void * buffer, const PRCPrototypeList * prototypeList) -{ - return PRC_InitPrototypeDB_Fine(protoDB, buffer, prototypeList); -} - -static inline BOOL PRC_InitPrototypeDBEx (PRCPrototypeDB * protoDB, - void * buffer, - const PRCPrototypeList * prototypeList, - u32 kindMask, BOOL ignoreDisabledEntries, const PRCPrototypeDBParam * param) -{ - return PRC_InitPrototypeDBEx_Fine(protoDB, buffer, prototypeList, kindMask, - ignoreDisabledEntries, param); -} - -static inline u32 PRC_GetInputPatternBufferSize (int maxPointCount, int maxStrokeCount) -{ - return PRC_GetInputPatternBufferSize_Fine(maxPointCount, maxStrokeCount); -} - -static inline BOOL PRC_InitInputPattern (PRCInputPattern * pattern, - void * buffer, const PRCStrokes * strokes, int maxPointCount, int maxStrokeCount) -{ - return PRC_InitInputPattern_Fine(pattern, buffer, strokes, maxPointCount, maxStrokeCount); -} - -static inline BOOL PRC_InitInputPatternEx (PRCInputPattern * pattern, - void * buffer, - const PRCStrokes * strokes, - int maxPointCount, int maxStrokeCount, const PRCInputPatternParam * param) -{ - return PRC_InitInputPatternEx_Fine(pattern, buffer, strokes, maxPointCount, maxStrokeCount, - param); -} - -static inline u32 PRC_GetRecognitionBufferSize (int maxPointCount, - int maxStrokeCount, const PRCPrototypeDB_Fine * protoDB) -{ - return PRC_GetRecognitionBufferSize_Fine(maxPointCount, maxStrokeCount, protoDB); -} - -static inline u32 PRC_GetRecognitionBufferSizeEx (int maxPointCount, - int maxStrokeCount, - const PRCPrototypeDB_Fine * protoDB, - const PRCRecognizeParam_Fine * param) -{ - return PRC_GetRecognitionBufferSizeEx_Fine(maxPointCount, maxStrokeCount, protoDB, param); -} - -static inline fx32 PRC_GetRecognizedEntry (PRCPrototypeEntry ** resultEntry, - void * buffer, const PRCInputPattern * input, const PRCPrototypeDB * protoDB) -{ - return PRC_GetRecognizedEntry_Fine(resultEntry, buffer, input, protoDB); -} - -static inline fx32 PRC_GetRecognizedEntryEx (PRCPrototypeEntry ** resultEntry, - void * buffer, - const PRCInputPattern * input, - const PRCPrototypeDB * protoDB, - u32 kindMask, const PRCRecognizeParam * param) -{ - return PRC_GetRecognizedEntryEx_Fine(resultEntry, buffer, input, protoDB, kindMask, param); -} - -static inline int PRC_GetRecognizedEntries (PRCPrototypeEntry ** resultEntries, - fx32 * resultScores, - int numRanking, - void * buffer, const PRCInputPattern * input, const PRCPrototypeDB * protoDB) -{ - return PRC_GetRecognizedEntries_Fine(resultEntries, resultScores, numRanking, buffer, input, - protoDB); -} - -static inline int PRC_GetRecognizedEntriesEx (PRCPrototypeEntry ** resultEntries, - fx32 * resultScores, - int numRanking, - void * buffer, - const PRCInputPattern * input, - const PRCPrototypeDB * protoDB, - u32 kindMask, const PRCRecognizeParam * param) -{ - return PRC_GetRecognizedEntriesEx_Fine(resultEntries, resultScores, numRanking, buffer, input, - protoDB, kindMask, param); -} - -static inline void PRC_GetInputPatternStrokes (PRCStrokes * strokes, const PRCInputPattern * input) -{ - PRC_GetInputPatternStrokes_Fine(strokes, input); -} - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/prc/algo_light.h b/subprojects/NitroSDK/include/nitro/prc/algo_light.h deleted file mode 100644 index 947e3d00bd..0000000000 --- a/subprojects/NitroSDK/include/nitro/prc/algo_light.h +++ /dev/null @@ -1,269 +0,0 @@ -#ifndef NITRO_PRC_ALGO_LIGHT_H_ -#define NITRO_PRC_ALGO_LIGHT_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include -#include -#include - -typedef PRCPrototypeDBParam_Common PRCPrototypeDBParam_Light; - -typedef PRCInputPatternParam_Common PRCInputPatternParam_Light; - -typedef PRCInputPattern_Common PRCInputPattern_Light; - -typedef PRCPrototypeDB_Common PRCPrototypeDB_Light; - -typedef struct PRCRecognizeParam_Light { - int dummy; -} PRCRecognizeParam_Light; - -static inline void PRC_Init_Light (void) -{ - PRC_Init_Common(); -} - -static inline u32 PRC_GetPrototypeDBBufferSize_Light (const PRCPrototypeList * prototypeList) -{ - return PRC_GetPrototypeDBBufferSize_Common(prototypeList); -} - -static inline u32 PRC_GetPrototypeDBBufferSizeEx_Light (const PRCPrototypeList * prototypeList, - u32 kindMask, - BOOL ignoreDisabledEntries, - const PRCPrototypeDBParam_Light * param) -{ - return PRC_GetPrototypeDBBufferSizeEx_Common(prototypeList, kindMask, ignoreDisabledEntries, - param); -} - -static inline BOOL PRC_InitPrototypeDB_Light (PRCPrototypeDB_Light * protoDB, - void * buffer, const PRCPrototypeList * prototypeList) -{ - return PRC_InitPrototypeDB_Common(protoDB, buffer, prototypeList); -} - -static inline BOOL PRC_InitPrototypeDBEx_Light (PRCPrototypeDB_Light * protoDB, - void * buffer, - const PRCPrototypeList * prototypeList, - u32 kindMask, - BOOL ignoreDisabledEntries, const PRCPrototypeDBParam_Light * param) -{ - return PRC_InitPrototypeDBEx_Common(protoDB, buffer, prototypeList, kindMask, - ignoreDisabledEntries, param); -} - -static inline u32 PRC_GetInputPatternBufferSize_Light (int maxPointCount, int maxStrokeCount) -{ - return PRC_GetInputPatternBufferSize_Common(maxPointCount, maxStrokeCount); -} - -static inline BOOL PRC_InitInputPattern_Light (PRCInputPattern_Light * pattern, - void * buffer, - const PRCStrokes * strokes, int maxPointCount, int maxStrokeCount) -{ - return PRC_InitInputPattern_Common(pattern, buffer, strokes, maxPointCount, maxStrokeCount); -} - -static inline BOOL PRC_InitInputPatternEx_Light (PRCInputPattern_Light * pattern, - void * buffer, - const PRCStrokes * strokes, - int maxPointCount, - int maxStrokeCount, const PRCInputPatternParam_Light * param) -{ - return PRC_InitInputPatternEx_Common(pattern, buffer, strokes, maxPointCount, maxStrokeCount, - param); -} - -u32 - -PRC_GetRecognitionBufferSizeEx_Light(int maxPointCount, - int maxStrokeCount, - const PRCPrototypeDB_Light * protoDB, - const PRCRecognizeParam_Light * param); - -static inline u32 PRC_GetRecognitionBufferSize_Light (int maxPointCount, - int maxStrokeCount, const PRCPrototypeDB_Light * protoDB) -{ - return PRC_GetRecognitionBufferSizeEx_Light(maxPointCount, maxStrokeCount, protoDB, NULL); -} - -int - -PRC_GetRecognizedEntriesEx_Light(PRCPrototypeEntry ** resultEntries, - fx32 * resultScores, - int numRanking, - void * buffer, - const PRCInputPattern_Light * input, - const PRCPrototypeDB_Light * protoDB, - u32 kindMask, const PRCRecognizeParam_Light * param); - -static inline int PRC_GetRecognizedEntries_Light (PRCPrototypeEntry ** resultEntries, - fx32 * resultScores, - int numRanking, - void * buffer, - const PRCInputPattern_Light * input, - const PRCPrototypeDB_Light * protoDB) -{ - return PRC_GetRecognizedEntriesEx_Light(resultEntries, resultScores, numRanking, buffer, input, - protoDB, PRC_KIND_ALL, NULL); -} - -static inline fx32 PRC_GetRecognizedEntryEx_Light (PRCPrototypeEntry ** resultEntry, - void * buffer, - const PRCInputPattern_Light * input, - const PRCPrototypeDB_Light * protoDB, - u32 kindMask, const PRCRecognizeParam_Light * param) -{ - fx32 score; - (void)PRC_GetRecognizedEntriesEx_Light(resultEntry, &score, 1, buffer, input, protoDB, kindMask, - param); - return score; -} - -static inline fx32 PRC_GetRecognizedEntry_Light (PRCPrototypeEntry ** resultEntry, - void * buffer, - const PRCInputPattern_Light * input, - const PRCPrototypeDB_Light * protoDB) -{ - return PRC_GetRecognizedEntryEx_Light(resultEntry, buffer, input, protoDB, PRC_KIND_ALL, NULL); -} - -static inline void PRC_GetInputPatternStrokes_Light (PRCStrokes * strokes, const PRCInputPattern_Light * input) -{ - PRC_GetInputPatternStrokes_Common(strokes, input); -} - -#ifndef PRC_DEFAULT_ALGORITHM -#define PRC_DEFAULT_ALGORITHM "Light" - -typedef PRCPrototypeDBParam_Light PRCPrototypeDBParam; - -typedef PRCInputPatternParam_Light PRCInputPatternParam; - -typedef PRCInputPattern_Light PRCInputPattern; - -typedef PRCPrototypeDB_Light PRCPrototypeDB; - -typedef PRCRecognizeParam_Light PRCRecognizeParam; - -static inline void PRC_Init (void) -{ - PRC_Init_Light(); -} - -static inline u32 PRC_GetPrototypeDBBufferSize (const PRCPrototypeList * prototypeList) -{ - return PRC_GetPrototypeDBBufferSize_Light(prototypeList); -} - -static inline u32 PRC_GetPrototypeDBBufferSizeEx (const PRCPrototypeList * prototypeList, - u32 kindMask, - BOOL ignoreDisabledEntries, const PRCPrototypeDBParam * param) -{ - return PRC_GetPrototypeDBBufferSizeEx_Light(prototypeList, kindMask, ignoreDisabledEntries, - param); -} - -static inline BOOL PRC_InitPrototypeDB (PRCPrototypeDB * protoDB, void * buffer, const PRCPrototypeList * prototypeList) -{ - return PRC_InitPrototypeDB_Light(protoDB, buffer, prototypeList); -} - -static inline BOOL PRC_InitPrototypeDBEx (PRCPrototypeDB * protoDB, - void * buffer, - const PRCPrototypeList * prototypeList, - u32 kindMask, BOOL ignoreDisabledEntries, const PRCPrototypeDBParam * param) -{ - return PRC_InitPrototypeDBEx_Light(protoDB, buffer, prototypeList, kindMask, - ignoreDisabledEntries, param); -} - -static inline u32 PRC_GetInputPatternBufferSize (int maxPointCount, int maxStrokeCount) -{ - return PRC_GetInputPatternBufferSize_Light(maxPointCount, maxStrokeCount); -} - -static inline BOOL PRC_InitInputPattern (PRCInputPattern * pattern, - void * buffer, const PRCStrokes * strokes, int maxPointCount, int maxStrokeCount) -{ - return PRC_InitInputPattern_Light(pattern, buffer, strokes, maxPointCount, maxStrokeCount); -} - -static inline BOOL PRC_InitInputPatternEx (PRCInputPattern * pattern, - void * buffer, - const PRCStrokes * strokes, - int maxPointCount, int maxStrokeCount, const PRCInputPatternParam * param) -{ - return PRC_InitInputPatternEx_Light(pattern, buffer, strokes, maxPointCount, maxStrokeCount, - param); -} - -static inline u32 PRC_GetRecognitionBufferSize (int maxPointCount, - int maxStrokeCount, const PRCPrototypeDB_Light * protoDB) -{ - return PRC_GetRecognitionBufferSize_Light(maxPointCount, maxStrokeCount, protoDB); -} - -static inline u32 PRC_GetRecognitionBufferSizeEx (int maxPointCount, - int maxStrokeCount, - const PRCPrototypeDB_Light * protoDB, - const PRCRecognizeParam_Light * param) -{ - return PRC_GetRecognitionBufferSizeEx_Light(maxPointCount, maxStrokeCount, protoDB, param); -} - -static inline fx32 PRC_GetRecognizedEntry (PRCPrototypeEntry ** resultEntry, - void * buffer, const PRCInputPattern * input, const PRCPrototypeDB * protoDB) -{ - return PRC_GetRecognizedEntry_Light(resultEntry, buffer, input, protoDB); -} - -static inline fx32 PRC_GetRecognizedEntryEx (PRCPrototypeEntry ** resultEntry, - void * buffer, - const PRCInputPattern * input, - const PRCPrototypeDB * protoDB, - u32 kindMask, const PRCRecognizeParam * param) -{ - return PRC_GetRecognizedEntryEx_Light(resultEntry, buffer, input, protoDB, kindMask, param); -} - -static inline int PRC_GetRecognizedEntries (PRCPrototypeEntry ** resultEntries, - fx32 * resultScores, - int numRanking, - void * buffer, const PRCInputPattern * input, const PRCPrototypeDB * protoDB) -{ - return PRC_GetRecognizedEntries_Light(resultEntries, resultScores, numRanking, buffer, input, - protoDB); -} - -static inline int PRC_GetRecognizedEntriesEx (PRCPrototypeEntry ** resultEntries, - fx32 * resultScores, - int numRanking, - void * buffer, - const PRCInputPattern * input, - const PRCPrototypeDB * protoDB, - u32 kindMask, const PRCRecognizeParam * param) -{ - return PRC_GetRecognizedEntriesEx_Light(resultEntries, resultScores, numRanking, buffer, input, - protoDB, kindMask, param); -} - -static inline void PRC_GetInputPatternStrokes (PRCStrokes * strokes, const PRCInputPattern * input) -{ - PRC_GetInputPatternStrokes_Light(strokes, input); -} - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/prc/algo_standard.h b/subprojects/NitroSDK/include/nitro/prc/algo_standard.h deleted file mode 100644 index df32b7f4aa..0000000000 --- a/subprojects/NitroSDK/include/nitro/prc/algo_standard.h +++ /dev/null @@ -1,271 +0,0 @@ -#ifndef NITRO_PRC_ALGO_STANDARD_H_ -#define NITRO_PRC_ALGO_STANDARD_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include -#include -#include - -typedef PRCPrototypeDBParam_Common PRCPrototypeDBParam_Standard; - -typedef PRCInputPatternParam_Common PRCInputPatternParam_Standard; - -typedef PRCInputPattern_Common PRCInputPattern_Standard; - -typedef PRCPrototypeDB_Common PRCPrototypeDB_Standard; - -typedef struct PRCRecognizeParam_Standard { - int dummy; -} PRCRecognizeParam_Standard; - -static inline void PRC_Init_Standard (void) -{ - PRC_Init_Common(); -} - -static inline u32 PRC_GetPrototypeDBBufferSize_Standard (const PRCPrototypeList * prototypeList) -{ - return PRC_GetPrototypeDBBufferSize_Common(prototypeList); -} - -static inline u32 PRC_GetPrototypeDBBufferSizeEx_Standard (const PRCPrototypeList * prototypeList, - u32 kindMask, - BOOL ignoreDisabledEntries, - const PRCPrototypeDBParam_Standard * param) -{ - return PRC_GetPrototypeDBBufferSizeEx_Common(prototypeList, kindMask, ignoreDisabledEntries, - param); -} - -static inline BOOL PRC_InitPrototypeDB_Standard (PRCPrototypeDB_Standard * protoDB, - void * buffer, const PRCPrototypeList * prototypeList) -{ - return PRC_InitPrototypeDB_Common(protoDB, buffer, prototypeList); -} - -static inline BOOL PRC_InitPrototypeDBEx_Standard (PRCPrototypeDB_Standard * protoDB, - void * buffer, - const PRCPrototypeList * prototypeList, - u32 kindMask, - BOOL ignoreDisabledEntries, - const PRCPrototypeDBParam_Standard * param) -{ - return PRC_InitPrototypeDBEx_Common(protoDB, buffer, prototypeList, kindMask, - ignoreDisabledEntries, param); -} - -static inline u32 PRC_GetInputPatternBufferSize_Standard (int maxPointCount, int maxStrokeCount) -{ - return PRC_GetInputPatternBufferSize_Common(maxPointCount, maxStrokeCount); -} - -static inline BOOL PRC_InitInputPattern_Standard (PRCInputPattern_Standard * pattern, - void * buffer, - const PRCStrokes * strokes, int maxPointCount, int maxStrokeCount) -{ - return PRC_InitInputPattern_Common(pattern, buffer, strokes, maxPointCount, maxStrokeCount); -} - -static inline BOOL PRC_InitInputPatternEx_Standard (PRCInputPattern_Standard * pattern, - void * buffer, - const PRCStrokes * strokes, - int maxPointCount, - int maxStrokeCount, const PRCInputPatternParam_Standard * param) -{ - return PRC_InitInputPatternEx_Common(pattern, buffer, strokes, maxPointCount, maxStrokeCount, - param); -} - -u32 - -PRC_GetRecognitionBufferSizeEx_Standard(int maxPointCount, - int maxStrokeCount, - const PRCPrototypeDB_Standard * protoDB, - const PRCRecognizeParam_Standard * param); - -static inline u32 PRC_GetRecognitionBufferSize_Standard (int maxPointCount, - int maxStrokeCount, const PRCPrototypeDB_Standard * protoDB) -{ - return PRC_GetRecognitionBufferSizeEx_Standard(maxPointCount, maxStrokeCount, protoDB, NULL); -} - -int - -PRC_GetRecognizedEntriesEx_Standard(PRCPrototypeEntry ** resultEntries, - fx32 * resultScores, - int numRanking, - void * buffer, - const PRCInputPattern_Standard * input, - const PRCPrototypeDB_Standard * protoDB, - u32 kindMask, const PRCRecognizeParam_Standard * param); - -static inline int PRC_GetRecognizedEntries_Standard (PRCPrototypeEntry ** resultEntries, - fx32 * resultScores, - int numRanking, - void * buffer, - const PRCInputPattern_Standard * input, - const PRCPrototypeDB_Standard * protoDB) -{ - return PRC_GetRecognizedEntriesEx_Standard(resultEntries, resultScores, numRanking, buffer, - input, protoDB, PRC_KIND_ALL, NULL); -} - -static inline fx32 PRC_GetRecognizedEntryEx_Standard (PRCPrototypeEntry ** resultEntry, - void * buffer, - const PRCInputPattern_Standard * input, - const PRCPrototypeDB_Standard * protoDB, - u32 kindMask, const PRCRecognizeParam_Standard * param) -{ - fx32 score; - (void)PRC_GetRecognizedEntriesEx_Standard(resultEntry, &score, 1, buffer, input, protoDB, - kindMask, param); - return score; -} - -static inline fx32 PRC_GetRecognizedEntry_Standard (PRCPrototypeEntry ** resultEntry, - void * buffer, - const PRCInputPattern_Standard * input, - const PRCPrototypeDB_Standard * protoDB) -{ - return PRC_GetRecognizedEntryEx_Standard(resultEntry, buffer, input, protoDB, PRC_KIND_ALL, - NULL); -} - -static inline void PRC_GetInputPatternStrokes_Standard (PRCStrokes * strokes, const PRCInputPattern_Standard * input) -{ - PRC_GetInputPatternStrokes_Common(strokes, input); -} - -#ifndef PRC_DEFAULT_ALGORITHM -#define PRC_DEFAULT_ALGORITHM "Standard" - -typedef PRCPrototypeDBParam_Standard PRCPrototypeDBParam; - -typedef PRCInputPatternParam_Standard PRCInputPatternParam; - -typedef PRCInputPattern_Standard PRCInputPattern; - -typedef PRCPrototypeDB_Standard PRCPrototypeDB; - -typedef PRCRecognizeParam_Standard PRCRecognizeParam; - -static inline void PRC_Init (void) -{ - PRC_Init_Standard(); -} - -static inline u32 PRC_GetPrototypeDBBufferSize (const PRCPrototypeList * prototypeList) -{ - return PRC_GetPrototypeDBBufferSize_Standard(prototypeList); -} - -static inline u32 PRC_GetPrototypeDBBufferSizeEx (const PRCPrototypeList * prototypeList, - u32 kindMask, - BOOL ignoreDisabledEntries, const PRCPrototypeDBParam * param) -{ - return PRC_GetPrototypeDBBufferSizeEx_Standard(prototypeList, kindMask, ignoreDisabledEntries, - param); -} - -static inline BOOL PRC_InitPrototypeDB (PRCPrototypeDB * protoDB, void * buffer, const PRCPrototypeList * prototypeList) -{ - return PRC_InitPrototypeDB_Standard(protoDB, buffer, prototypeList); -} - -static inline BOOL PRC_InitPrototypeDBEx (PRCPrototypeDB * protoDB, - void * buffer, - const PRCPrototypeList * prototypeList, - u32 kindMask, BOOL ignoreDisabledEntries, const PRCPrototypeDBParam * param) -{ - return PRC_InitPrototypeDBEx_Standard(protoDB, buffer, prototypeList, kindMask, - ignoreDisabledEntries, param); -} - -static inline u32 PRC_GetInputPatternBufferSize (int maxPointCount, int maxStrokeCount) -{ - return PRC_GetInputPatternBufferSize_Standard(maxPointCount, maxStrokeCount); -} - -static inline BOOL PRC_InitInputPattern (PRCInputPattern * pattern, - void * buffer, const PRCStrokes * strokes, int maxPointCount, int maxStrokeCount) -{ - return PRC_InitInputPattern_Standard(pattern, buffer, strokes, maxPointCount, maxStrokeCount); -} - -static inline BOOL PRC_InitInputPatternEx (PRCInputPattern * pattern, - void * buffer, - const PRCStrokes * strokes, - int maxPointCount, int maxStrokeCount, const PRCInputPatternParam * param) -{ - return PRC_InitInputPatternEx_Standard(pattern, buffer, strokes, maxPointCount, maxStrokeCount, - param); -} - -static inline u32 PRC_GetRecognitionBufferSize (int maxPointCount, - int maxStrokeCount, const PRCPrototypeDB_Standard * protoDB) -{ - return PRC_GetRecognitionBufferSize_Standard(maxPointCount, maxStrokeCount, protoDB); -} - -static inline u32 PRC_GetRecognitionBufferSizeEx (int maxPointCount, - int maxStrokeCount, - const PRCPrototypeDB_Standard * protoDB, - const PRCRecognizeParam_Standard * param) -{ - return PRC_GetRecognitionBufferSizeEx_Standard(maxPointCount, maxStrokeCount, protoDB, param); -} - -static inline fx32 PRC_GetRecognizedEntry (PRCPrototypeEntry ** resultEntry, - void * buffer, const PRCInputPattern * input, const PRCPrototypeDB * protoDB) -{ - return PRC_GetRecognizedEntry_Standard(resultEntry, buffer, input, protoDB); -} - -static inline fx32 PRC_GetRecognizedEntryEx (PRCPrototypeEntry ** resultEntry, - void * buffer, - const PRCInputPattern * input, - const PRCPrototypeDB * protoDB, - u32 kindMask, const PRCRecognizeParam * param) -{ - return PRC_GetRecognizedEntryEx_Standard(resultEntry, buffer, input, protoDB, kindMask, param); -} - -static inline int PRC_GetRecognizedEntries (PRCPrototypeEntry ** resultEntries, - fx32 * resultScores, - int numRanking, - void * buffer, const PRCInputPattern * input, const PRCPrototypeDB * protoDB) -{ - return PRC_GetRecognizedEntries_Standard(resultEntries, resultScores, numRanking, buffer, input, - protoDB); -} - -static inline int PRC_GetRecognizedEntriesEx (PRCPrototypeEntry ** resultEntries, - fx32 * resultScores, - int numRanking, - void * buffer, - const PRCInputPattern * input, - const PRCPrototypeDB * protoDB, - u32 kindMask, const PRCRecognizeParam * param) -{ - return PRC_GetRecognizedEntriesEx_Standard(resultEntries, resultScores, numRanking, buffer, - input, protoDB, kindMask, param); -} - -static inline void PRC_GetInputPatternStrokes (PRCStrokes * strokes, const PRCInputPattern * input) -{ - PRC_GetInputPatternStrokes_Standard(strokes, input); -} - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/prc/algo_superfine.h b/subprojects/NitroSDK/include/nitro/prc/algo_superfine.h deleted file mode 100644 index 3ea9b6c0ec..0000000000 --- a/subprojects/NitroSDK/include/nitro/prc/algo_superfine.h +++ /dev/null @@ -1,275 +0,0 @@ -#ifndef NITRO_PRC_ALGO_SUPERFINE_H_ -#define NITRO_PRC_ALGO_SUPERFINE_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include -#include -#include - -#define PRC_LENGTH_FILTER_DEFAULT_THRESHOLD_SUPERFINE normalizeSize -#define PRC_LENGTH_FILTER_DEFAULT_RATIO_SUPERFINE 3 - -typedef PRCPrototypeDBParam_Common PRCPrototypeDBParam_Superfine; - -typedef PRCInputPatternParam_Common PRCInputPatternParam_Superfine; - -typedef PRCInputPattern_Common PRCInputPattern_Superfine; - -typedef PRCPrototypeDB_Common PRCPrototypeDB_Superfine; - -typedef struct PRCRecognizeParam_Superfine { - int lengthFilterThreshold; - int lengthFilterRatio; -} PRCRecognizeParam_Superfine; - -static inline void PRC_Init_Superfine (void) -{ - PRC_Init_Common(); -} - -static inline u32 PRC_GetPrototypeDBBufferSize_Superfine (const PRCPrototypeList * prototypeList) -{ - return PRC_GetPrototypeDBBufferSize_Common(prototypeList); -} - -static inline u32 PRC_GetPrototypeDBBufferSizeEx_Superfine (const PRCPrototypeList * prototypeList, - u32 kindMask, - BOOL ignoreDisabledEntries, - const PRCPrototypeDBParam_Superfine * param) -{ - return PRC_GetPrototypeDBBufferSizeEx_Common(prototypeList, kindMask, ignoreDisabledEntries, - param); -} - -static inline BOOL PRC_InitPrototypeDB_Superfine (PRCPrototypeDB_Superfine * protoDB, - void * buffer, const PRCPrototypeList * prototypeList) -{ - return PRC_InitPrototypeDB_Common(protoDB, buffer, prototypeList); -} - -static inline BOOL PRC_InitPrototypeDBEx_Superfine (PRCPrototypeDB_Superfine * protoDB, - void * buffer, - const PRCPrototypeList * prototypeList, - u32 kindMask, - BOOL ignoreDisabledEntries, - const PRCPrototypeDBParam_Superfine * param) -{ - return PRC_InitPrototypeDBEx_Common(protoDB, buffer, prototypeList, kindMask, - ignoreDisabledEntries, param); -} - -static inline u32 PRC_GetInputPatternBufferSize_Superfine (int maxPointCount, int maxStrokeCount) -{ - return PRC_GetInputPatternBufferSize_Common(maxPointCount, maxStrokeCount); -} - -static inline BOOL PRC_InitInputPattern_Superfine (PRCInputPattern_Superfine * pattern, - void * buffer, - const PRCStrokes * strokes, int maxPointCount, int maxStrokeCount) -{ - return PRC_InitInputPattern_Common(pattern, buffer, strokes, maxPointCount, maxStrokeCount); -} - -static inline BOOL PRC_InitInputPatternEx_Superfine (PRCInputPattern_Superfine * pattern, - void * buffer, - const PRCStrokes * strokes, - int maxPointCount, - int maxStrokeCount, const PRCInputPatternParam_Superfine * param) -{ - return PRC_InitInputPatternEx_Common(pattern, buffer, strokes, maxPointCount, maxStrokeCount, - param); -} - -u32 - -PRC_GetRecognitionBufferSizeEx_Superfine(int maxPointCount, - int maxStrokeCount, - const PRCPrototypeDB_Superfine * protoDB, - const PRCRecognizeParam_Superfine * param); - -static inline u32 PRC_GetRecognitionBufferSize_Superfine (int maxPointCount, - int maxStrokeCount, const PRCPrototypeDB_Superfine * protoDB) -{ - return PRC_GetRecognitionBufferSizeEx_Superfine(maxPointCount, maxStrokeCount, protoDB, NULL); -} - -int - -PRC_GetRecognizedEntriesEx_Superfine(PRCPrototypeEntry ** resultEntries, - fx32 * resultScores, - int numRanking, - void * buffer, - const PRCInputPattern_Superfine * input, - const PRCPrototypeDB_Superfine * protoDB, - u32 kindMask, const PRCRecognizeParam_Superfine * param); - -static inline int PRC_GetRecognizedEntries_Superfine (PRCPrototypeEntry ** resultEntries, - fx32 * resultScores, - int numRanking, - void * buffer, - const PRCInputPattern_Superfine * input, - const PRCPrototypeDB_Superfine * protoDB) -{ - return PRC_GetRecognizedEntriesEx_Superfine(resultEntries, resultScores, numRanking, buffer, - input, protoDB, PRC_KIND_ALL, NULL); -} - -static inline fx32 PRC_GetRecognizedEntryEx_Superfine (PRCPrototypeEntry ** resultEntry, - void * buffer, - const PRCInputPattern_Superfine * input, - const PRCPrototypeDB_Superfine * protoDB, - u32 kindMask, const PRCRecognizeParam_Superfine * param) -{ - fx32 score; - (void)PRC_GetRecognizedEntriesEx_Superfine(resultEntry, &score, 1, buffer, input, protoDB, - kindMask, param); - return score; -} - -static inline fx32 PRC_GetRecognizedEntry_Superfine (PRCPrototypeEntry ** resultEntry, - void * buffer, - const PRCInputPattern_Superfine * input, - const PRCPrototypeDB_Superfine * protoDB) -{ - return PRC_GetRecognizedEntryEx_Superfine(resultEntry, buffer, input, protoDB, PRC_KIND_ALL, - NULL); -} - -static inline void PRC_GetInputPatternStrokes_Superfine (PRCStrokes * strokes, const PRCInputPattern_Superfine * input) -{ - PRC_GetInputPatternStrokes_Common(strokes, input); -} - -#ifndef PRC_DEFAULT_ALGORITHM -#define PRC_DEFAULT_ALGORITHM "Superfine" - -typedef PRCPrototypeDBParam_Superfine PRCPrototypeDBParam; - -typedef PRCInputPatternParam_Superfine PRCInputPatternParam; - -typedef PRCInputPattern_Superfine PRCInputPattern; - -typedef PRCPrototypeDB_Superfine PRCPrototypeDB; - -typedef PRCRecognizeParam_Superfine PRCRecognizeParam; - -static inline void PRC_Init (void) -{ - PRC_Init_Superfine(); -} - -static inline u32 PRC_GetPrototypeDBBufferSize (const PRCPrototypeList * prototypeList) -{ - return PRC_GetPrototypeDBBufferSize_Superfine(prototypeList); -} - -static inline u32 PRC_GetPrototypeDBBufferSizeEx (const PRCPrototypeList * prototypeList, - u32 kindMask, - BOOL ignoreDisabledEntries, const PRCPrototypeDBParam * param) -{ - return PRC_GetPrototypeDBBufferSizeEx_Superfine(prototypeList, kindMask, ignoreDisabledEntries, - param); -} - -static inline BOOL PRC_InitPrototypeDB (PRCPrototypeDB * protoDB, void * buffer, const PRCPrototypeList * prototypeList) -{ - return PRC_InitPrototypeDB_Superfine(protoDB, buffer, prototypeList); -} - -static inline BOOL PRC_InitPrototypeDBEx (PRCPrototypeDB * protoDB, - void * buffer, - const PRCPrototypeList * prototypeList, - u32 kindMask, BOOL ignoreDisabledEntries, const PRCPrototypeDBParam * param) -{ - return PRC_InitPrototypeDBEx_Superfine(protoDB, buffer, prototypeList, kindMask, - ignoreDisabledEntries, param); -} - -static inline u32 PRC_GetInputPatternBufferSize (int maxPointCount, int maxStrokeCount) -{ - return PRC_GetInputPatternBufferSize_Superfine(maxPointCount, maxStrokeCount); -} - -static inline BOOL PRC_InitInputPattern (PRCInputPattern * pattern, - void * buffer, const PRCStrokes * strokes, int maxPointCount, int maxStrokeCount) -{ - return PRC_InitInputPattern_Superfine(pattern, buffer, strokes, maxPointCount, maxStrokeCount); -} - -static inline BOOL PRC_InitInputPatternEx (PRCInputPattern * pattern, - void * buffer, - const PRCStrokes * strokes, - int maxPointCount, int maxStrokeCount, const PRCInputPatternParam * param) -{ - return PRC_InitInputPatternEx_Superfine(pattern, buffer, strokes, maxPointCount, maxStrokeCount, - param); -} - -static inline u32 PRC_GetRecognitionBufferSize (int maxPointCount, - int maxStrokeCount, const PRCPrototypeDB_Superfine * protoDB) -{ - return PRC_GetRecognitionBufferSize_Superfine(maxPointCount, maxStrokeCount, protoDB); -} - -static inline u32 PRC_GetRecognitionBufferSizeEx (int maxPointCount, - int maxStrokeCount, - const PRCPrototypeDB_Superfine * protoDB, - const PRCRecognizeParam_Superfine * param) -{ - return PRC_GetRecognitionBufferSizeEx_Superfine(maxPointCount, maxStrokeCount, protoDB, param); -} - -static inline fx32 PRC_GetRecognizedEntry (PRCPrototypeEntry ** resultEntry, - void * buffer, const PRCInputPattern * input, const PRCPrototypeDB * protoDB) -{ - return PRC_GetRecognizedEntry_Superfine(resultEntry, buffer, input, protoDB); -} - -static inline fx32 PRC_GetRecognizedEntryEx (PRCPrototypeEntry ** resultEntry, - void * buffer, - const PRCInputPattern * input, - const PRCPrototypeDB * protoDB, - u32 kindMask, const PRCRecognizeParam * param) -{ - return PRC_GetRecognizedEntryEx_Superfine(resultEntry, buffer, input, protoDB, kindMask, param); -} - -static inline int PRC_GetRecognizedEntries (PRCPrototypeEntry ** resultEntries, - fx32 * resultScores, - int numRanking, - void * buffer, const PRCInputPattern * input, const PRCPrototypeDB * protoDB) -{ - return PRC_GetRecognizedEntries_Superfine(resultEntries, resultScores, numRanking, buffer, - input, protoDB); -} - -static inline int PRC_GetRecognizedEntriesEx (PRCPrototypeEntry ** resultEntries, - fx32 * resultScores, - int numRanking, - void * buffer, - const PRCInputPattern * input, - const PRCPrototypeDB * protoDB, - u32 kindMask, const PRCRecognizeParam * param) -{ - return PRC_GetRecognizedEntriesEx_Superfine(resultEntries, resultScores, numRanking, buffer, - input, protoDB, kindMask, param); -} - -static inline void PRC_GetInputPatternStrokes (PRCStrokes * strokes, const PRCInputPattern * input) -{ - PRC_GetInputPatternStrokes_Superfine(strokes, input); -} - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/prc/common.h b/subprojects/NitroSDK/include/nitro/prc/common.h deleted file mode 100644 index 75191f43da..0000000000 --- a/subprojects/NitroSDK/include/nitro/prc/common.h +++ /dev/null @@ -1,100 +0,0 @@ -#ifndef NITRO_PRC_COMMON_H_ -#define NITRO_PRC_COMMON_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -#include -#include -#include - -void PRCi_Init(void); - -void - -PRC_GetEntryStrokes(PRCStrokes * strokes, - const PRCPrototypeList * prototypeList, const PRCPrototypeEntry * entry); - -BOOL PRC_CopyStrokes(const PRCStrokes * srcStrokes, PRCStrokes * dstStrokes); - -static inline int PRC_GetEntryCode (const PRCPrototypeEntry * entry) -{ - return (entry != NULL) ? entry->code : -1; -} - -static inline void * PRC_GetEntryData (const PRCPrototypeEntry * entry) -{ - return (entry != NULL) ? entry->data : NULL; -} - -static inline void PRC_InitStrokes (PRCStrokes * strokes, PRCPoint * points, u32 size) -{ - SDK_ASSERT(strokes && points); - strokes->points = points; - strokes->capacity = size; - strokes->size = 0; -} - -static inline void PRC_AppendPoint (PRCStrokes * strokes, int x, int y) -{ - SDK_ASSERT(strokes); - SDK_ASSERT(strokes->size < strokes->capacity); - strokes->points[strokes->size].x = (s16)x; - strokes->points[strokes->size].y = (s16)y; - (strokes->size)++; -} - -static inline void PRC_AppendPenUpMarker (PRCStrokes * strokes) -{ - PRC_AppendPoint(strokes, PRC_PEN_UP_MARKER_X, PRC_PEN_UP_MARKER_Y); -} - -static inline void PRC_Clear (PRCStrokes * strokes) -{ - SDK_ASSERT(strokes); - strokes->size = 0; -} - -static inline BOOL PRC_IsFull (const PRCStrokes * strokes) -{ - SDK_ASSERT(strokes); - return strokes->size >= strokes->capacity; -} - -static inline BOOL PRC_IsEmpty (const PRCStrokes * strokes) -{ - SDK_ASSERT(strokes); - return strokes->size == 0; -} - -static inline int PRC_IsPenUpMarker (const PRCPoint * point) -{ - SDK_ASSERT(point); - - SDK_ASSERT((point->x != PRC_PEN_UP_MARKER_X) || (point->y == PRC_PEN_UP_MARKER_Y)); - return (point->x == PRC_PEN_UP_MARKER_X); -} - -static inline fx32 PRCi_CalcDistance (const PRCPoint * p1, const PRCPoint * p2) -{ - SDK_ASSERT(p1 && p2); - return (FX_Sqrt - (((p1->x - p2->x) * (p1->x - p2->x) + - (p1->y - p2->y) * (p1->y - p2->y)) << FX32_SHIFT)); -} - -static inline u16 PRCi_CalcAngle (const PRCPoint * from, const PRCPoint * to) -{ - SDK_ASSERT(from && to); - return ((u16)(FX_Atan2Idx(to->y - from->y, to->x - from->x))); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/prc/resample.h b/subprojects/NitroSDK/include/nitro/prc/resample.h deleted file mode 100644 index fbee540908..0000000000 --- a/subprojects/NitroSDK/include/nitro/prc/resample.h +++ /dev/null @@ -1,49 +0,0 @@ -#ifndef NITRO_PRC_RESAMPLE_H_ -#define NITRO_PRC_RESAMPLE_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include - -BOOL - -PRC_ResampleStrokes_None(u16 * selectedPoints, - int * pSelectedPointNum, - int maxPointCount, - int maxStrokeCount, - const PRCStrokes * strokes, int threshold, void * buffer); - -BOOL - -PRC_ResampleStrokes_Distance(u16 * selectedPoints, - int * pSelectedPointNum, - int maxPointCount, - int maxStrokeCount, - const PRCStrokes * strokes, int threshold, void * buffer); - -BOOL - -PRC_ResampleStrokes_Angle(u16 * selectedPoints, - int * pSelectedPointNum, - int maxPointCount, - int maxStrokeCount, - const PRCStrokes * strokes, int threshold, void * buffer); - -BOOL - -PRC_ResampleStrokes_Recursive(u16 * selectedPoints, - int * pSelectedPointNum, - int maxPointCount, - int maxStrokeCount, - const PRCStrokes * strokes, int threshold, void * buffer); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/prc/types.h b/subprojects/NitroSDK/include/nitro/prc/types.h deleted file mode 100644 index 2dd1d98462..0000000000 --- a/subprojects/NitroSDK/include/nitro/prc/types.h +++ /dev/null @@ -1,77 +0,0 @@ -#ifndef NITRO_PRC_TYPES_H_ -#define NITRO_PRC_TYPES_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include - -#define PRC_PEN_UP_MARKER_X (-1) -#define PRC_PEN_UP_MARKER_Y (-1) - -#define PRC_CODE_UNKNOWN (-1) - -#define PRC_KIND_ALL (0xffffffffU) - -#define PRC_LARGE_ENOUGH_X (512) -#define PRC_SMALL_ENOUGH_X (-512) -#define PRC_LARGE_ENOUGH_Y (512) -#define PRC_SMALL_ENOUGH_Y (-512) - -#define PRC_TINY_LENGTH (1) - -typedef struct PRCPoint { - s16 x; - s16 y; -} PRCPoint; - -typedef struct PRCBoundingBox { - s16 x1, y1; - s16 x2, y2; -} PRCBoundingBox; - -typedef struct PRCStrokes { - PRCPoint * points; - int size; - u32 capacity; -} PRCStrokes; - -typedef struct PRCPrototypeEntry { - BOOL enabled; - u32 kind; - u16 code; - fx16 correction; - void * data; - int pointIndex; - u16 pointCount; - u16 strokeCount; -} PRCPrototypeEntry; - -typedef struct PRCPrototypeList { - const PRCPrototypeEntry * entries; - int entrySize; - const PRCPoint * pointArray; - int pointArraySize; - - union { - int normalizeSize; - int regularizeSize; - }; -} PRCPrototypeList; - -typedef enum PRCResampleMethod { - PRC_RESAMPLE_METHOD_NONE = 0, - PRC_RESAMPLE_METHOD_DISTANCE, - PRC_RESAMPLE_METHOD_ANGLE, - PRC_RESAMPLE_METHOD_RECURSIVE, - PRC_RESAMPLE_METHOD_USER = 256 -} PRCResampleMethod; - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/pxi.h b/subprojects/NitroSDK/include/nitro/pxi.h deleted file mode 100644 index 105c7320bb..0000000000 --- a/subprojects/NitroSDK/include/nitro/pxi.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef NITRO_PXI_H_ -#define NITRO_PXI_H_ - -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef SDK_ARM9 -#else -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/pxi/common/compparam.h b/subprojects/NitroSDK/include/nitro/pxi/common/compparam.h deleted file mode 100644 index fddfb5cf12..0000000000 --- a/subprojects/NitroSDK/include/nitro/pxi/common/compparam.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef NITRO_PXI_COMMON_COMPPARAM_H_ -#define NITRO_PXI_COMMON_COMPPARAM_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -static inline void PXI_SetComponentParam (u32 param) -{ - MI_WriteWord(HW_COMPONENT_PARAM, param); -} - -static inline u32 PXI_GetComponentParam (void) -{ - return MI_ReadWord(HW_COMPONENT_PARAM); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/pxi/common/fifo.h b/subprojects/NitroSDK/include/nitro/pxi/common/fifo.h deleted file mode 100644 index c0ed72fa0b..0000000000 --- a/subprojects/NitroSDK/include/nitro/pxi/common/fifo.h +++ /dev/null @@ -1,96 +0,0 @@ -#ifndef NITRO_PXI_COMMON_FIFO_H_ -#define NITRO_PXI_COMMON_FIFO_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - PXI_FIFO_TAG_EX = 0, - PXI_FIFO_TAG_USER_0, - PXI_FIFO_TAG_USER_1, - PXI_FIFO_TAG_SYSTEM, - PXI_FIFO_TAG_NVRAM, - PXI_FIFO_TAG_RTC, - PXI_FIFO_TAG_TOUCHPANEL, - PXI_FIFO_TAG_SOUND, - PXI_FIFO_TAG_PM, - PXI_FIFO_TAG_MIC, - PXI_FIFO_TAG_WM, - PXI_FIFO_TAG_FS, - PXI_FIFO_TAG_OS, - PXI_FIFO_TAG_CTRDG, - PXI_FIFO_TAG_CARD, - PXI_FIFO_TAG_WVR, - PXI_FIFO_TAG_CTRDG_Ex, - PXI_FIFO_TAG_CTRDG_PHI, - - PXI_MAX_FIFO_TAG = 32 -} PXIFifoTag; - -#define PXI_FIFO_DEVICE_TEST PXI_FIFO_TAG_USR_0 -#define PXI_FIFO_DEVICE_FLASH PXI_FIFO_TAG_NVRAM -#define PXI_FIFO_DEVICE_RTC PXI_FIFO_TAG_RTC -#define PXI_FIFO_DEVICE_TOUCHPANEL PXI_FIFO_TAG_TOUCHPANEL -#define PXI_MAX_DEVICES PXI_MAX_FIFO_TAG - -typedef enum { - PXI_FIFO_SUCCESS = 0, - PXI_FIFO_FAIL_SEND_ERR = -1, - PXI_FIFO_FAIL_SEND_FULL = -2, - PXI_FIFO_FAIL_RECV_ERR = -3, - PXI_FIFO_FAIL_RECV_EMPTY = -4, - PXI_FIFO_NO_CALLBACK_ENTRY = -5 -} PXIFifoStatus; - -#define PXI_FIFOMESSAGE_BITSZ_TAG 5 -#define PXI_FIFOMESSAGE_BITSZ_ERR 1 -#define PXI_FIFOMESSAGE_BITSZ_DATA 26 -typedef union { - struct { - u32 tag : PXI_FIFOMESSAGE_BITSZ_TAG; - u32 err : PXI_FIFOMESSAGE_BITSZ_ERR; - u32 data : PXI_FIFOMESSAGE_BITSZ_DATA; - } e; - u32 raw; -} PXIFifoMessage; - -typedef void (* PXIFifoCallback) (PXIFifoTag tag, u32 data, BOOL err); -typedef void (* PXIFifoEmtpyCallback) (void); - -static inline BOOL PXI_IsFifoError (PXIFifoStatus status) -{ - return PXI_FIFO_SUCCESS == status; -} - -void PXI_InitFifo(void); - -void PXI_SetFifoRecvCallback(int fifotag, PXIFifoCallback callback); - -BOOL PXI_IsCallbackReady(int fifotag, PXIProc proc); - -static inline BOOL PXI_IsArm7CallbackReady (int fifotag) -{ - return PXI_IsCallbackReady(fifotag, PXI_PROC_ARM7); -} - -static inline BOOL PXI_IsArm9CallbackReady (int fifotag) -{ - return PXI_IsCallbackReady(fifotag, PXI_PROC_ARM9); -} - -void PXI_SetFifoSendCallback(PXIFifoEmtpyCallback callback); - -int PXI_SendWordByFifo(int fifotag, u32 data, BOOL err); - -void PXIi_HandlerRecvFifoNotEmpty(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/pxi/common/init.h b/subprojects/NitroSDK/include/nitro/pxi/common/init.h deleted file mode 100644 index 7969d0d39c..0000000000 --- a/subprojects/NitroSDK/include/nitro/pxi/common/init.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef NITRO_PXI_COMMON_INIT_H_ -#define NITRO_PXI_COMMON_INIT_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -void PXI_Init(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/pxi/common/regname.h b/subprojects/NitroSDK/include/nitro/pxi/common/regname.h deleted file mode 100644 index e414b37da4..0000000000 --- a/subprojects/NitroSDK/include/nitro/pxi/common/regname.h +++ /dev/null @@ -1,63 +0,0 @@ -#ifndef NITRO_PXI_COMMON_REGNAME_H_ -#define NITRO_PXI_COMMON_REGNAME_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - PXI_PROC_ARM9 = 0, - PXI_PROC_ARM7 = 1 -} PXIProc; - -#ifdef SDK_ARM9 - -#define PXI_PROC_ARM PXI_PROC_ARM9 - -#define reg_PXI_FIFO_CNT reg_PXI_SUBP_FIFO_CNT -#define REG_PXI_FIFO_CNT_ERR_MASK REG_PXI_SUBP_FIFO_CNT_ERR_MASK -#define REG_PXI_FIFO_CNT_SEND_CL_MASK REG_PXI_SUBP_FIFO_CNT_SEND_CL_MASK -#define REG_PXI_FIFO_CNT_SEND_FULL_MASK REG_PXI_SUBP_FIFO_CNT_SEND_FULL_MASK -#define REG_PXI_FIFO_CNT_SEND_TI_MASK REG_PXI_SUBP_FIFO_CNT_SEND_TI_MASK -#define REG_PXI_FIFO_CNT_RECV_RI_MASK REG_PXI_SUBP_FIFO_CNT_RECV_RI_MASK -#define REG_PXI_FIFO_CNT_RECV_EMP_MASK REG_PXI_SUBP_FIFO_CNT_RECV_EMP_MASK -#define REG_PXI_FIFO_CNT_E_MASK REG_PXI_SUBP_FIFO_CNT_E_MASK - -#define reg_PXI_INTF reg_PXI_SUBPINTF -#define REG_PXI_INTF_I_MASK REG_PXI_SUBPINTF_I_MASK -#define REG_PXI_INTF_IREQ_MASK REG_PXI_SUBPINTF_IREQ_MASK -#define REG_PXI_INTF_SEND_MASK REG_PXI_SUBPINTF_A9STATUS_MASK -#define REG_PXI_INTF_SEND_SHIFT REG_PXI_SUBPINTF_A9STATUS_SHIFT -#define REG_PXI_INTF_RECV_MASK REG_PXI_SUBPINTF_A7STATUS_MASK -#define REG_PXI_INTF_RECV_SHIFT REG_PXI_SUBPINTF_A7STATUS_SHIFT - -#else - -#define PXI_PROC_ARM PXI_PROC_ARM7 - -#define reg_PXI_FIFO_CNT reg_PXI_MAINP_FIFO_CNT -#define REG_PXI_FIFO_CNT_ERR_MASK REG_PXI_MAINP_FIFO_CNT_ERR_MASK -#define REG_PXI_FIFO_CNT_SEND_CL_MASK REG_PXI_MAINP_FIFO_CNT_SEND_CL_MASK -#define REG_PXI_FIFO_CNT_SEND_FULL_MASK REG_PXI_MAINP_FIFO_CNT_SEND_FULL_MASK -#define REG_PXI_FIFO_CNT_SEND_TI_MASK REG_PXI_MAINP_FIFO_CNT_SEND_TI_MASK -#define REG_PXI_FIFO_CNT_RECV_RI_MASK REG_PXI_MAINP_FIFO_CNT_RECV_RI_MASK -#define REG_PXI_FIFO_CNT_RECV_EMP_MASK REG_PXI_MAINP_FIFO_CNT_RECV_EMP_MASK -#define REG_PXI_FIFO_CNT_E_MASK REG_PXI_MAINP_FIFO_CNT_E_MASK - -#define reg_PXI_INTF reg_PXI_MAINPINTF -#define REG_PXI_INTF_I_MASK REG_PXI_MAINPINTF_I_MASK -#define REG_PXI_INTF_IREQ_MASK REG_PXI_MAINPINTF_IREQ_MASK -#define REG_PXI_INTF_SEND_MASK REG_PXI_MAINPINTF_A9STATUS_MASK -#define REG_PXI_INTF_SEND_SHIFT REG_PXI_MAINPINTF_A9STATUS_SHIFT -#define REG_PXI_INTF_RECV_MASK REG_PXI_MAINPINTF_A7STATUS_MASK -#define REG_PXI_INTF_RECV_SHIFT REG_PXI_MAINPINTF_A7STATUS_SHIFT - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/rtc.h b/subprojects/NitroSDK/include/nitro/rtc.h deleted file mode 100644 index c352bcc477..0000000000 --- a/subprojects/NitroSDK/include/nitro/rtc.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef NITRO_RTC_H_ -#define NITRO_RTC_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -#ifdef SDK_ARM7 - -#include -#include -#include - -#else - -#include -#include - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/rtc/ARM9/api.h b/subprojects/NitroSDK/include/nitro/rtc/ARM9/api.h deleted file mode 100644 index ed5214054f..0000000000 --- a/subprojects/NitroSDK/include/nitro/rtc/ARM9/api.h +++ /dev/null @@ -1,164 +0,0 @@ -#ifndef NITRO_RTC_ARM9_API_H_ -#define NITRO_RTC_ARM9_API_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include - -typedef enum RTCWeek { - RTC_WEEK_SUNDAY = 0, - RTC_WEEK_MONDAY, - RTC_WEEK_TUESDAY, - RTC_WEEK_WEDNESDAY, - RTC_WEEK_THURSDAY, - RTC_WEEK_FRIDAY, - RTC_WEEK_SATURDAY, - RTC_WEEK_MAX -} RTCWeek; - -typedef enum RTCAlarmChan { - RTC_ALARM_CHAN_1 = 0, - RTC_ALARM_CHAN_2, - RTC_ALARM_CHAN_MAX -} RTCAlarmChan; - -typedef enum RTCAlarmStatus { - RTC_ALARM_STATUS_OFF = 0, - RTC_ALARM_STATUS_ON, - RTC_ALARM_STATUS_MAX -} RTCAlarmStatus; - -#define RTC_ALARM_ENABLE_NONE 0x0000 -#define RTC_ALARM_ENABLE_WEEK 0x0001 -#define RTC_ALARM_ENABLE_HOUR 0x0002 -#define RTC_ALARM_ENABLE_MINUTE 0x0004 -#define RTC_ALARM_ENABLE_ALL (RTC_ALARM_ENABLE_WEEK | RTC_ALARM_ENABLE_HOUR | RTC_ALARM_ENABLE_MINUTE) - -typedef enum RTCResult { - RTC_RESULT_SUCCESS = 0, - RTC_RESULT_BUSY, - RTC_RESULT_ILLEGAL_PARAMETER, - RTC_RESULT_SEND_ERROR, - RTC_RESULT_INVALID_COMMAND, - RTC_RESULT_ILLEGAL_STATUS, - RTC_RESULT_FATAL_ERROR, - RTC_RESULT_MAX -} RTCResult; - -typedef void (* RTCCallback) (RTCResult result, void * arg); -typedef void (* RTCInterrupt) (void); - -typedef struct RTCDate { - u32 year; - u32 month; - u32 day; - RTCWeek week; -} RTCDate; - -typedef struct RTCTime { - u32 hour; - u32 minute; - u32 second; -} RTCTime; - -typedef struct RTCTimeEx { - s32 hour; - s32 minute; - s32 second; - s32 millisecond; -} RTCTimeEx; - -typedef struct RTCAlarmParam { - RTCWeek week; - u32 hour; - u32 minute; - u32 enable; -} RTCAlarmParam; - -void RTC_Init(void); - -RTCResult RTC_GetDate(RTCDate * date); - -RTCResult RTC_GetTime(RTCTime * time); - -RTCResult RTC_GetDateTime(RTCDate * date, RTCTime * time); - -RTCResult RTC_GetDateTimeExByTick(RTCDate * date, RTCTimeEx * time); - -RTCResult RTC_SetDate(const RTCDate * date); - -RTCResult RTC_SetTime(const RTCTime * time); - -RTCResult RTC_SetDateTime(const RTCDate * date, const RTCTime * time); - -RTCResult RTC_GetAlarmStatus(RTCAlarmChan chan, RTCAlarmStatus * status); - -RTCResult RTC_GetAlarmParam(RTCAlarmChan chan, RTCAlarmParam * param); - -RTCResult RTC_SetAlarmStatus(RTCAlarmChan chan, const RTCAlarmStatus * status); - -RTCResult RTC_SetAlarmParam(RTCAlarmChan chan, const RTCAlarmParam * param); - -RTCResult RTC_GetDateAsync(RTCDate * date, RTCCallback callback, void * arg); - -RTCResult RTC_GetTimeAsync(RTCTime * time, RTCCallback callback, void * arg); - -RTCResult RTC_GetDateTimeAsync(RTCDate * date, RTCTime * time, RTCCallback callback, void * arg); - -RTCResult RTC_SetDateAsync(const RTCDate * date, RTCCallback callback, void * arg); - -RTCResult RTC_SetTimeAsync(const RTCTime * time, RTCCallback callback, void * arg); - -RTCResult RTC_SetDateTimeAsync(const RTCDate * date, const RTCTime * time, RTCCallback callback, - void * arg); - -RTCResult RTC_GetAlarmStatusAsync(RTCAlarmChan chan, RTCAlarmStatus * status, RTCCallback callback, - void * arg); - -RTCResult RTC_GetAlarmParamAsync(RTCAlarmChan chan, RTCAlarmParam * param, RTCCallback callback, - void * arg); - -void RTC_SetAlarmInterrupt(RTCInterrupt interrupt); - -RTCResult RTC_SetAlarmStatusAsync(RTCAlarmChan chan, const RTCAlarmStatus * status, - RTCCallback callback, void * arg); - -RTCResult RTC_SetAlarmParamAsync(RTCAlarmChan chan, const RTCAlarmParam * param, - RTCCallback callback, void * arg); - -BOOL RTCi_ResetAsync(void); -BOOL RTCi_SetHourFormatAsync(void); -BOOL RTCi_ReadRawDateTimeAsync(void); -BOOL RTCi_WriteRawDateTimeAsync(void); -BOOL RTCi_ReadRawDateAsync(void); -BOOL RTCi_WriteRawDateAsync(void); -BOOL RTCi_ReadRawTimeAsync(void); -BOOL RTCi_WriteRawTimeAsync(void); -BOOL RTCi_ReadRawPulseAsync(void); -BOOL RTCi_WriteRawPulseAsync(void); -BOOL RTCi_ReadRawAlarm1Async(void); -BOOL RTCi_WriteRawAlarm1Async(void); -BOOL RTCi_ReadRawAlarm2Async(void); -BOOL RTCi_WriteRawAlarm2Async(void); -BOOL RTCi_ReadRawStatus1Async(void); -BOOL RTCi_WriteRawStatus1Async(void); -BOOL RTCi_ReadRawStatus2Async(void); -BOOL RTCi_WriteRawStatus2Async(void); -BOOL RTCi_ReadRawAdjustAsync(void); -BOOL RTCi_WriteRawAdjustAsync(void); -BOOL RTCi_ReadRawFreeAsync(void); -BOOL RTCi_WriteRawFreeAsync(void); -RTCResult RTCi_SetRegStatus2Async(const RTCRawStatus2 * status2, RTCCallback callback, void * arg); -RTCResult RTCi_SetRegAdjustAsync(const RTCRawAdjust * adjust, RTCCallback callback, void * arg); -RTCResult RTCi_SetRegAdjust(const RTCRawAdjust * Adjust); -RTCResult RTCi_SetRegStatus2(const RTCRawStatus2 * status2); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/rtc/ARM9/convert.h b/subprojects/NitroSDK/include/nitro/rtc/ARM9/convert.h deleted file mode 100644 index 27ad354bdf..0000000000 --- a/subprojects/NitroSDK/include/nitro/rtc/ARM9/convert.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef NITRO_RTC_ARM9_CONVERT_H_ -#define NITRO_RTC_ARM9_CONVERT_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -s32 RTC_ConvertDateToDay(const RTCDate * date); - -s32 RTCi_ConvertTimeToSecond(const RTCTime * time); - -s64 RTC_ConvertDateTimeToSecond(const RTCDate * date, const RTCTime * time); - -void RTC_ConvertDayToDate(RTCDate * date, s32 day); - -void RTCi_ConvertSecondToTime(RTCTime * time, s32 sec); - -void RTC_ConvertSecondToDateTime(RTCDate * date, RTCTime * time, s64 sec); - -RTCWeek RTC_GetDayOfWeek(RTCDate * date); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/rtc/common/fifo.h b/subprojects/NitroSDK/include/nitro/rtc/common/fifo.h deleted file mode 100644 index 97ac0d4073..0000000000 --- a/subprojects/NitroSDK/include/nitro/rtc/common/fifo.h +++ /dev/null @@ -1,51 +0,0 @@ -#ifndef NITRO_RTC_COMMON_FIFO_H_ -#define NITRO_RTC_COMMON_FIFO_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#define RTC_PXI_COMMAND_MASK 0x00007f00 -#define RTC_PXI_COMMAND_SHIFT 8 -#define RTC_PXI_RESULT_BIT_MASK 0x00008000 -#define RTC_PXI_RESULT_MASK 0x000000ff -#define RTC_PXI_RESULT_SHIFT 0 - -#define RTC_PXI_COMMAND_RESET 0x00 -#define RTC_PXI_COMMAND_SET_HOUR_FORMAT 0x01 -#define RTC_PXI_COMMAND_READ_DATETIME 0x10 -#define RTC_PXI_COMMAND_READ_DATE 0x11 -#define RTC_PXI_COMMAND_READ_TIME 0x12 -#define RTC_PXI_COMMAND_READ_PULSE 0x13 -#define RTC_PXI_COMMAND_READ_ALARM1 0x14 -#define RTC_PXI_COMMAND_READ_ALARM2 0x15 -#define RTC_PXI_COMMAND_READ_STATUS1 0x16 -#define RTC_PXI_COMMAND_READ_STATUS2 0x17 -#define RTC_PXI_COMMAND_READ_ADJUST 0x18 -#define RTC_PXI_COMMAND_READ_FREE 0x19 -#define RTC_PXI_COMMAND_WRITE_DATETIME 0x20 -#define RTC_PXI_COMMAND_WRITE_DATE 0x21 -#define RTC_PXI_COMMAND_WRITE_TIME 0x22 -#define RTC_PXI_COMMAND_WRITE_PULSE 0x23 -#define RTC_PXI_COMMAND_WRITE_ALARM1 0x24 -#define RTC_PXI_COMMAND_WRITE_ALARM2 0x25 -#define RTC_PXI_COMMAND_WRITE_STATUS1 0x26 -#define RTC_PXI_COMMAND_WRITE_STATUS2 0x27 -#define RTC_PXI_COMMAND_WRITE_ADJUST 0x28 -#define RTC_PXI_COMMAND_WRITE_FREE 0x29 -#define RTC_PXI_COMMAND_INTERRUPT 0x30 - -typedef enum RTCPxiResult { - RTC_PXI_RESULT_SUCCESS = 0, - RTC_PXI_RESULT_INVALID_COMMAND, - RTC_PXI_RESULT_ILLEGAL_STATUS, - RTC_PXI_RESULT_BUSY, - RTC_PXI_RESULT_FATAL_ERROR, - RTC_PXI_RESULT_MAX -} RTCPxiResult; - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/rtc/common/type.h b/subprojects/NitroSDK/include/nitro/rtc/common/type.h deleted file mode 100644 index 771b7a1be5..0000000000 --- a/subprojects/NitroSDK/include/nitro/rtc/common/type.h +++ /dev/null @@ -1,122 +0,0 @@ -#ifndef NITRO_RTC_COMMON_TYPE_H_ -#define NITRO_RTC_COMMON_TYPE_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#define RTC_INTERRUPT_MODE_NONE 0x0 -#define RTC_INTERRUPT_MODE_32kHz 0x8 -#define RTC_INTERRUPT_MODE_PULSE 0x1 -#define RTC_INTERRUPT_MODE_MINUTE_EDGE 0x2 -#define RTC_INTERRUPT_MODE_MINUTE_PULSE1 0x3 -#define RTC_INTERRUPT_MODE_ALARM 0x4 -#define RTC_INTERRUPT_MODE_MINUTE_PULSE2 0x7 - -#define RTC_INTERRUPT_MASK_32kHz 0x8 -#define RTC_INTERRUPT_MASK_PULSE 0xb -#define RTC_INTERRUPT_MASK_MINUTE_EDGE 0xb - -#define RTC_PULSE_DUTY_1HZ 0x01 -#define RTC_PULSE_DUTY_2HZ 0x02 -#define RTC_PULSE_DUTY_4HZ 0x04 -#define RTC_PULSE_DUTY_8HZ 0x08 -#define RTC_PULSE_DUTY_16HZ 0x10 - -typedef struct RTCRawDate { - u32 year : 8; - u32 month : 5; - u32 dummy0 : 3; - u32 day : 6; - u32 dummy1 : 2; - u32 week : 3; - u32 dummy2 : 5; -} RTCRawDate; - -typedef struct RTCRawTime { - u32 hour : 6; - u32 afternoon : 1; - u32 dummy0 : 1; - u32 minute : 7; - u32 dummy1 : 1; - u32 second : 7; - u32 dummy2 : 9; -} RTCRawTime; - -typedef struct RTCRawStatus1 { - u16 reset : 1; - u16 format : 1; - u16 dummy0 : 2; - u16 intr1 : 1; - u16 intr2 : 1; - u16 bld : 1; - u16 poc : 1; - u16 dummy1 : 8; -} RTCRawStatus1; - -typedef struct RTCRawStatus2 { - u16 intr_mode : 4; - u16 dummy0 : 2; - u16 intr2_mode : 1; - u16 test : 1; - u16 dummy1 : 8; -} RTCRawStatus2; - -typedef struct RTCRawAlarm { - u32 week : 3; - u32 dummy0 : 4; - u32 we : 1; - u32 hour : 6; - u32 afternoon : 1; - u32 he : 1; - u32 minute : 7; - u32 me : 1; - u32 dummy2 : 8; -} RTCRawAlarm; - -typedef struct RTCRawPulse { - u32 pulse : 5; - u32 dummy : 27; -} RTCRawPulse; - -typedef struct RTCRawAdjust { - u32 adjust : 8; - u32 dummy : 24; -} RTCRawAdjust; - -typedef struct RTCRawFree { - u32 free : 8; - u32 dummy : 24; -} RTCRawFree; - -typedef union RTCRawData { - struct { - RTCRawDate date; - RTCRawTime time; - } t; - - struct { - RTCRawStatus1 status1; - RTCRawStatus2 status2; - union { - RTCRawPulse pulse; - RTCRawAlarm alarm; - RTCRawAdjust adjust; - RTCRawFree free; - }; - } a; - - u32 words[2]; - - u16 halfs[4]; - - u8 bytes[8]; -} RTCRawData; - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/section.h b/subprojects/NitroSDK/include/nitro/section.h deleted file mode 100644 index 1cec687f38..0000000000 --- a/subprojects/NitroSDK/include/nitro/section.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef NITRO_SECTION_H_ -#define NITRO_SECTION_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#if defined(SDK_CW) || defined(__MWERKS__) -#ifdef SDK_ARM9 -#pragma define_section ITCM ".itcm" ".itcm.bss" abs32 RWX -#pragma define_section DTCM ".dtcm" ".dtcm.bss" abs32 RWX -#else -#pragma define_section WRAM ".wram" ".wram.bss" abs32 RWX -#endif -#pragma define_section PARENT ".parent" abs32 RWX -#pragma define_section VERSION ".version" abs32 RWX -#elif defined(SDK_PRODG) - -#elif defined(SDK_ADS) -TO BE DEFINED -#elif defined(SDK_GCC) -TO BE DEFINED -#endif -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/sinit.h b/subprojects/NitroSDK/include/nitro/sinit.h deleted file mode 100644 index 7c25581bb3..0000000000 --- a/subprojects/NitroSDK/include/nitro/sinit.h +++ /dev/null @@ -1,15 +0,0 @@ -#if defined(SDK_CW) || defined(__MWERKS__) - -static void NitroStaticInit(void); -#pragma define_section SINIT ".sinit" abs32 RWX -#pragma section SINIT begin -SDK_FORCE_EXPORT static void * NitroStaticInit_[] = {NitroStaticInit}; -#pragma section SINIT end - -#elif defined(SDK_ADS) - -TO BE DEFINED -#elif defined(SDK_GCC) - -TO BE DEFINED -#endif diff --git a/subprojects/NitroSDK/include/nitro/snd.h b/subprojects/NitroSDK/include/nitro/snd.h deleted file mode 100644 index 2492405cc9..0000000000 --- a/subprojects/NitroSDK/include/nitro/snd.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef NITRO_SND_H_ -#define NITRO_SND_H_ - -#if !(defined(SDK_WIN32) || defined(SDK_FROM_TOOL)) - -#include -#include -#include -#include - -#ifdef SDK_ARM9 - -#include - -#endif - -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/subprojects/NitroSDK/include/nitro/snd/ARM9/interface.h b/subprojects/NitroSDK/include/nitro/snd/ARM9/interface.h deleted file mode 100644 index 7e4cae5f99..0000000000 --- a/subprojects/NitroSDK/include/nitro/snd/ARM9/interface.h +++ /dev/null @@ -1,96 +0,0 @@ -#ifndef NITRO_SND_INTERFACE_H_ -#define NITRO_SND_INTERFACE_H_ - -#include -#include -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -struct SNDBankData; -struct SNDSharedWork; -struct SNDSpCallback; -struct SNDDriverInfo; - -void SND_StartSeq(int playerNo, const void * base, u32 offset, const struct SNDBankData * bank); -void SND_PrepareSeq(int playerNo, const void * base, u32 offset, const struct SNDBankData * bank); -void SND_StartPreparedSeq(int playerNo); -void SND_StopSeq(int playerNo); - -void SND_StopSeq(int playerNo); -void SND_PauseSeq(int playerNo, BOOL flag); - -void SND_SetPlayerTempoRatio(int playerNo, int ratio); -void SND_SetPlayerVolume(int playerNo, int volume); -void SND_SetPlayerChannelPriority(int playerNo, int prio); -void SND_SetPlayerLocalVariable(int playerNo, int varNo, s16 var); -void SND_SetPlayerGlobalVariable(int varNo, s16 var); - -void SND_SetTrackMute(int playerNo, u32 trackBitMask, BOOL flag); -void SND_SetTrackMuteEx(int playerNo, u32 trackBitMask, SNDSeqMute mute); -void SND_SetTrackVolume(int playerNo, u32 trackBitMask, int volume); -void SND_SetTrackPitch(int playerNo, u32 trackBitMask, int pitch); -void SND_SetTrackPan(int playerNo, u32 trackBitMask, int pan); -void SND_SetTrackPanRange(int playerNo, u32 trackBitMask, int panRange); -void SND_SetTrackModDepth(int playerNo, u32 trackBitMask, int depth); -void SND_SetTrackModSpeed(int playerNo, u32 trackBitMask, int speed); -void SND_SetTrackAllocatableChannel(int playerNo, u32 trackBitMask, u32 chBitMask); - -void SND_StartTimer(u32 chBitMask, u32 capBitMask, u32 alarmBitMask, u32 flags); -void SND_StopTimer(u32 chBitMask, u32 capBitMask, u32 alarmBitMask, u32 flags); - -void SND_LockChannel(u32 chBitMask, u32 flags); -void SND_UnlockChannel(u32 chBitMask, u32 flags); -void SND_StopUnlockedChannel(u32 chBitMask, u32 flags); - -void SND_SetupChannelPcm(int chNo, - SNDWaveFormat format, - const void * dataAddr, - SNDChannelLoop loop, - int loopStart, - int dataLen, int volume, SNDChannelDataShift shift, int timer, int pan); -void SND_SetupChannelPsg(int chNo, - SNDDuty duty, - int volume, SNDChannelDataShift shift, int timer, int pan); -void SND_SetupChannelNoise(int chNo, int volume, SNDChannelDataShift shift, int timer, int pan); - -void SND_SetChannelVolume(u32 chBitMask, int volume, SNDChannelDataShift shift); -void SND_SetChannelTimer(u32 chBitMask, int timer); -void SND_SetChannelPan(u32 chBitMask, int pan); - -void SND_SetupCapture(SNDCapture capture, - SNDCaptureFormat format, - void * buffer_p, - u32 length, BOOL loopFlag, SNDCaptureIn in, SNDCaptureOut out); - -void SND_SetupAlarm(int alarmNo, u32 tick, u32 period, SNDAlarmHandler handler, void * arg); - -void SND_SetMasterVolume(int volume); - -void SND_SetOutputSelector(SNDOutput left, - SNDOutput right, SNDChannelOut channel1, SNDChannelOut channel3); - -void SND_SetMasterPan(int pan); -void SND_ResetMasterPan(void); - -void SND_InvalidateSeqData(const void * start, const void * end); -void SND_InvalidateBankData(const void * start, const void * end); -void SND_InvalidateWaveData(const void * start, const void * end); - -void SND_ReadDriverInfo(struct SNDDriverInfo * info); - -void SNDi_SetPlayerParam(int playerNo, u32 offset, u32 data, int size); -void SNDi_SetTrackParam(int playerNo, u32 trackBitMask, u32 offset, u32 data, int size); -void SNDi_SkipSeq(int playerNo, u32 tick); -void SNDi_SetSurroundDecay(int decay); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/snd/common/alarm.h b/subprojects/NitroSDK/include/nitro/snd/common/alarm.h deleted file mode 100644 index dbe733153d..0000000000 --- a/subprojects/NitroSDK/include/nitro/snd/common/alarm.h +++ /dev/null @@ -1,57 +0,0 @@ -#ifndef NITRO_SND_COMMON_ALARM_H_ -#define NITRO_SND_COMMON_ALARM_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define SND_ALARM_NUM 8 -#define SND_ALARM_MIN 0 -#define SND_ALARM_MAX (SND_ALARM_NUM - 1) - -#define SND_ALARM_PRESCALER 32 - -typedef void (* SNDAlarmHandler) (void *); - -typedef struct SNDAlarm { - u8 enable; - u8 id; - u16 padding; - - struct { - OSTick tick; - OSTick period; - } setting; - - OSAlarm alarm; -} SNDAlarm; - -void SND_AlarmInit(void); - -#ifdef SDK_ARM7 - -void SND_SetupAlarm(int alarmNo, OSTick tick, OSTick period, int id); - -void SND_StartAlarm(int alarmNo); -void SND_StopAlarm(int alarmNo); - -#endif - -#ifdef SDK_ARM9 - -void SNDi_IncAlarmId(int alarmNo); - -u8 SNDi_SetAlarmHandler(int alarmNo, SNDAlarmHandler handler, void * arg); - -void SNDi_CallAlarmHandler(int alarmNo); - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/snd/common/bank.h b/subprojects/NitroSDK/include/nitro/snd/common/bank.h deleted file mode 100644 index fd7dc7f541..0000000000 --- a/subprojects/NitroSDK/include/nitro/snd/common/bank.h +++ /dev/null @@ -1,149 +0,0 @@ -#ifndef NITRO_SND_COMMON_BANK_H_ -#define NITRO_SND_COMMON_BANK_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define SND_INST_KEYSPLIT_MAX 8 - -#define SND_BANK_TO_WAVEARC_MAX 4 - -#define SND_BANK_DISABLE_RELEASE 255 - -struct SNDWaveArc; -struct SNDExChannel; - -typedef enum SNDInstType { - SND_INST_INVALID = 0, - - SND_INST_PCM = 0x01, - SND_INST_PSG, - SND_INST_NOISE, - SND_INST_DIRECTPCM, - SND_INST_NULL, - - SND_INST_DRUM_SET = 0x10, - SND_INST_KEY_SPLIT -} SNDInstType; - -#ifdef _MSC_VER -#pragma warning( disable : 4200 ) -#endif - -typedef struct SNDWaveArcLink { - struct SNDWaveArc * waveArc; - struct SNDWaveArcLink * next; -} SNDWaveArcLink; - -typedef struct SNDWaveArc { - struct SNDBinaryFileHeader fileHeader; - struct SNDBinaryBlockHeader blockHeader; - - struct SNDWaveArcLink * topLink; - u32 reserved[7]; - u32 waveCount; - u32 waveOffset[0]; -} SNDWaveArc; - -typedef struct SNDWaveData { - struct SNDWaveParam param; - u8 samples[0]; -} SNDWaveData; - -typedef struct SNDBankData { - struct SNDBinaryFileHeader fileHeader; - struct SNDBinaryBlockHeader blockHeader; - - struct SNDWaveArcLink waveArcLink[SND_BANK_TO_WAVEARC_MAX]; - u32 instCount; - u32 instOffset[0]; -} SNDBankData; - -typedef struct SNDInstParam { - u16 wave[2]; - u8 original_key; - u8 attack; - u8 decay; - u8 sustain; - u8 release; - u8 pan; -} SNDInstParam; - -typedef struct SNDInstData { - u8 type; - u8 padding_; - - struct SNDInstParam param; -} SNDInstData; - -typedef struct SNDKeySplit { - u8 key[SND_INST_KEYSPLIT_MAX]; - struct SNDInstData instOffset[0]; -} SNDKeySplit; - -typedef struct SNDDrumSet { - u8 min; - u8 max; - struct SNDInstData instOffset[0]; -} SNDDrumSet; - -typedef struct SNDInstPos { - u32 prgNo; - u32 index; -} SNDInstPos; - -#if defined(SDK_WIN32) || defined(SDK_FROM_TOOL) - -struct SNDBankDataCallback; -typedef BOOL (__stdcall * SNDReadInstDataFunc)(const struct SNDBankDataCallback * bank, int prgNo, - int key, struct SNDInstData * inst); - -typedef struct SNDBankDataCallback { - struct SNDBinaryFileHeader fileHeader; - struct SNDBinaryBlockHeader blockHeader; - - void * arg; - SNDReadInstDataFunc readInstDataFunc; -} SNDBankDataCallback; - -#endif - -#ifdef _MSC_VER -#pragma warning( default : 4200 ) -#endif - -void SND_AssignWaveArc(struct SNDBankData * bank, int index, struct SNDWaveArc * waveArc); -void SND_DestroyBank(struct SNDBankData * bank); -void SND_DestroyWaveArc(struct SNDWaveArc * waveArc); - -BOOL SND_ReadInstData(const struct SNDBankData * bank, int prgNo, int key, - struct SNDInstData * inst); -BOOL SND_WriteInstData(struct SNDBankData * bank, int prgNo, int key, - const struct SNDInstData * inst); - -struct SNDInstPos SND_GetFirstInstDataPos(const struct SNDBankData * bank); -BOOL SND_GetNextInstData(const struct SNDBankData * bank, struct SNDInstData * inst, - struct SNDInstPos * pos); - -u32 SND_GetWaveDataCount(const struct SNDWaveArc * waveArc); -void SND_SetWaveDataAddress(struct SNDWaveArc * waveArc, int index, const SNDWaveData * address); -const SNDWaveData * SND_GetWaveDataAddress(const struct SNDWaveArc * waveArc, int index); - -#ifdef SDK_ARM7 - -BOOL SND_NoteOn(struct SNDExChannel * ch_p, - int key, - int velocity, - s32 length, const struct SNDBankData * bank, const struct SNDInstData * inst); - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/snd/common/capture.h b/subprojects/NitroSDK/include/nitro/snd/common/capture.h deleted file mode 100644 index be51cfbcab..0000000000 --- a/subprojects/NitroSDK/include/nitro/snd/common/capture.h +++ /dev/null @@ -1,131 +0,0 @@ -#ifndef NITRO_SND_COMMON_CAPTURE_H_ -#define NITRO_SND_COMMON_CAPTURE_H_ - -#include - -#if !(defined(SDK_WIN32) || defined(SDK_FROM_TOOL)) -#ifdef SDK_ARM7 - -#include - -#endif -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define SND_CAPTURE_NUM 2 - -#ifndef SDK_TEG - -#define SND_CAPTURE_0_OUT_CHANNEL 1 -#define SND_CAPTURE_1_OUT_CHANNEL 3 - -#define SND_CAPTURE_0_IN_CHANNEL 0 -#define SND_CAPTURE_1_IN_CHANNEL 2 - -#define SND_CAPTURE_LEN_MAX 0xffff - -#else - -#define SND_CAPTURE_0_OUT_CHANNEL 3 -#define SND_CAPTURE_1_OUT_CHANNEL 1 - -#define SND_CAPTURE_0_IN_CHANNEL 2 -#define SND_CAPTURE_1_IN_CHANNEL 0 - -#define SND_CAPTURE_LEN_MAX 0x0fff - -#endif - -#define SND_CAPTURE_DAD_MASK 0x07fffffc - -#define SND_CAPTURE_REG_OFFSET 0x8 - -#ifndef SDK_TEG -typedef enum { - SND_CAPTURE_0, - SND_CAPTURE_1 -} SNDCapture; -#else -typedef enum { - SND_CAPTURE_1, - SND_CAPTURE_0 -} SNDCapture; -#endif - -typedef enum { - SND_CAPTURE_FORMAT_PCM16, - SND_CAPTURE_FORMAT_PCM8 -} SNDCaptureFormat; - -typedef enum { - SND_CAPTURE_REPEAT_YES, - SND_CAPTURE_REPEAT_NO -} SNDCaptureRepeat; - -typedef enum { - SND_CAPTURE_IN_MIXER, - SND_CAPTURE_IN_CHANNEL, - - SND_CAPTURE_IN_MIXER_L = SND_CAPTURE_IN_MIXER, - SND_CAPTURE_IN_MIXER_R = SND_CAPTURE_IN_MIXER, - SND_CAPTURE_IN_CHANNEL0 = SND_CAPTURE_IN_CHANNEL, - SND_CAPTURE_IN_CHANNEL2 = SND_CAPTURE_IN_CHANNEL -} SNDCaptureIn; - -typedef enum { - SND_CAPTURE_OUT_NORMAL, - SND_CAPTURE_OUT_CHANNEL_MIX, - - SND_CAPTURE_OUT_CHANNEL0_MIX = SND_CAPTURE_OUT_CHANNEL_MIX, - SND_CAPTURE_OUT_CHANNEL2_MIX = SND_CAPTURE_OUT_CHANNEL_MIX -} SNDCaptureOut; - -#ifdef SDK_ARM7 -#if !(defined(SDK_WIN32) || defined(SDK_FROM_TOOL)) - -static inline void SND_StartCapture (SNDCapture capture) -{ - REGType8v * reg = (REGType8v *)(REG_SNDCAP0CNT_ADDR + capture); - - *reg |= REG_SND_SNDCAP0CNT_E_MASK; -} - -static inline void SND_StartCaptureBoth (void) -{ - reg_SND_SNDCAPCNT |= REG_SND_SNDCAPCNT_CAP0_E_MASK | REG_SND_SNDCAPCNT_CAP1_E_MASK; -} - -static inline void SND_StopCapture (SNDCapture capture) -{ - (*(REGType8v *)(REG_SNDCAP0CNT_ADDR + capture)) = 0; -} - -#else - -void SND_StartCapture(SNDCapture capture); -void SND_StartCaptureBoth(void); -void SND_StopCapture(SNDCapture capture); - -#endif - -#endif - -#ifdef SDK_ARM7 - -void SND_SetupCapture(SNDCapture capture, - SNDCaptureFormat format, - void * buffer_addr, - int length, BOOL repeat, SNDCaptureIn in, SNDCaptureOut out); - -BOOL SND_IsCaptureActive(SNDCapture capture); - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/snd/common/channel.h b/subprojects/NitroSDK/include/nitro/snd/common/channel.h deleted file mode 100644 index a22d7bc524..0000000000 --- a/subprojects/NitroSDK/include/nitro/snd/common/channel.h +++ /dev/null @@ -1,207 +0,0 @@ -#ifndef NITRO_SND_COMMON_CHANNEL_H_ -#define NITRO_SND_COMMON_CHANNEL_H_ - -#include - -#if !(defined(SDK_WIN32) || defined(SDK_FROM_TOOL)) -#include -#include - -#ifdef SDK_ARM7 -#include -#endif - -#else - -#define HW_CPU_CLOCK_ARM7 33513982 - -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define SND_TIMER_CLOCK (HW_CPU_CLOCK_ARM7 / 2) - -#define SND_CHANNEL_NUM 16 -#define SND_CHANNEL_MIN 0 -#define SND_CHANNEL_MAX 15 - -#define SND_PSG_CHANNEL_MIN 8 -#define SND_PSG_CHANNEL_MAX 13 -#define SND_PSG_CHANNEL_NUM (SND_PSG_CHANNEL_MAX - SND_PSG_CHANNEL_MIN + 1) - -#define SND_NOISE_CHANNEL_MIN 14 -#define SND_NOISE_CHANNEL_MAX 15 -#define SND_NOISE_CHANNEL_NUM (SND_NOISE_CHANNEL_MAX - SND_NOISE_CHANNEL_MIN + 1) - -#define SND_CHANNEL_PAN_MIN 0 -#define SND_CHANNEL_PAN_CENTER 64 -#define SND_CHANNEL_PAN_MAX 0x7f - -#define SND_CHANNEL_VOLUME_MIN 0 -#define SND_CHANNEL_VOLUME_MAX 0x7f - -#define SND_CHANNEL_TIMER_MIN 0x10 -#define SND_CHANNEL_TIMER_MAX 0xffff - -#define SND_CHANNEL_LOOP_START_MAX 0xffff -#define SND_CHANNEL_LOOP_LEN_MAX 0x3fffff - -#define SND_CHANNEL_SAD_MASK 0x07fffffc - -#define SND_PCM_CHANNEL_MASK 0xffff -#define SND_PSG_CHANNEL_MASK 0x3f00 -#define SND_NOISE_CHANNEL_MASK 0xc000 -#define SND_CAPIN_CHANNEL_MASK 0x0005 -#define SND_CAPOUT_CHANNEL_MASK 0x000a - -#define SND_CHANNEL_STOP_HOLD (1 << 0) - -#define SND_CHANNEL_REG_OFFSET(ch) ((ch) << 4) - -#ifdef SDK_ARM9 - -#define REG_SND_SOUND0CNT_E_SHIFT 31 -#define REG_SND_SOUND0CNT_E_SIZE 1 -#define REG_SND_SOUND0CNT_E_MASK 0x80000000 - -#define REG_SND_SOUND0CNT_FORMAT_SHIFT 29 -#define REG_SND_SOUND0CNT_FORMAT_SIZE 2 -#define REG_SND_SOUND0CNT_FORMAT_MASK 0x60000000 - -#define REG_SND_SOUND0CNT_REPEAT_SHIFT 27 -#define REG_SND_SOUND0CNT_REPEAT_SIZE 2 -#define REG_SND_SOUND0CNT_REPEAT_MASK 0x18000000 - -#define REG_SND_SOUND0CNT_DUTY_SHIFT 24 -#define REG_SND_SOUND0CNT_DUTY_SIZE 3 -#define REG_SND_SOUND0CNT_DUTY_MASK 0x07000000 - -#define REG_SND_SOUND0CNT_PAN_SHIFT 16 -#define REG_SND_SOUND0CNT_PAN_SIZE 7 -#define REG_SND_SOUND0CNT_PAN_MASK 0x007f0000 - -#define REG_SND_SOUND0CNT_HOLD_SHIFT 15 -#define REG_SND_SOUND0CNT_HOLD_SIZE 1 -#define REG_SND_SOUND0CNT_HOLD_MASK 0x00008000 - -#define REG_SND_SOUND0CNT_SHIFT_SHIFT 8 -#define REG_SND_SOUND0CNT_SHIFT_SIZE 2 -#define REG_SND_SOUND0CNT_SHIFT_MASK 0x00000300 - -#define REG_SND_SOUND0CNT_VOLUME_SHIFT 0 -#define REG_SND_SOUND0CNT_VOLUME_SIZE 7 -#define REG_SND_SOUND0CNT_VOLUME_MASK 0x0000007f - -#endif - -typedef enum { - SND_CHANNEL_0, - SND_CHANNEL_1, - SND_CHANNEL_2, - SND_CHANNEL_3, - SND_CHANNEL_4, - SND_CHANNEL_5, - SND_CHANNEL_6, - SND_CHANNEL_7, - SND_CHANNEL_8, - SND_CHANNEL_9, - SND_CHANNEL_10, - SND_CHANNEL_11, - SND_CHANNEL_12, - SND_CHANNEL_13, - SND_CHANNEL_14, - SND_CHANNEL_15 -} SNDChannelId; - -typedef enum { - SND_WAVE_FORMAT_PCM8, - SND_WAVE_FORMAT_PCM16, - SND_WAVE_FORMAT_ADPCM, - SND_WAVE_FORMAT_PSG, - SND_WAVE_FORMAT_NOISE = SND_WAVE_FORMAT_PSG -} SNDWaveFormat; - -typedef enum { - SND_CHANNEL_LOOP_MANUAL, - SND_CHANNEL_LOOP_REPEAT, - SND_CHANNEL_LOOP_1SHOT -} SNDChannelLoop; - -#define SND_CHANNEL_LOOP_REPAET SND_CHANNEL_LOOP_REPEAT - -typedef enum { - SND_DUTY_1_8, - SND_DUTY_2_8, - SND_DUTY_3_8, - SND_DUTY_4_8, - SND_DUTY_5_8, - SND_DUTY_6_8, - SND_DUTY_7_8 -} SNDDuty; - -typedef enum { - SND_CHANNEL_DATASHIFT_NONE, - SND_CHANNEL_DATASHIFT_1BIT, - SND_CHANNEL_DATASHIFT_2BIT, - SND_CHANNEL_DATASHIFT_4BIT -} SNDChannelDataShift; - -#ifdef SDK_ARM7 -#if !(defined(SDK_WIN32) || defined(SDK_FROM_TOOL)) - -static inline void SND_StartChannel (int chNo) -{ - SDK_MINMAX_ASSERT(chNo, SND_CHANNEL_MIN, SND_CHANNEL_MAX); - - *((REGType8v *)(REG_SOUND0CNT_8_ADDR + SND_CHANNEL_REG_OFFSET(chNo))) - |= REG_SND_SOUND0CNT_8_E_MASK; -} - -#else - -void SND_StartChannel(int chNo); - -#endif - -#endif - -#ifdef SDK_ARM7 - -void SND_SetupChannelPcm(int chNo, - const void * dataaddr, - SNDWaveFormat format, - SNDChannelLoop loop, - int loopStart, - int loopLen, int volume, SNDChannelDataShift shift, int timer, int pan); -void SND_SetupChannelPsg(int chNo, - SNDDuty duty, - int volume, SNDChannelDataShift shift, int timer, int pan); -void SND_SetupChannelNoise(int chNo, int volume, SNDChannelDataShift shift, int timer, int pan); - -void SND_StopChannel(int chNo, s32 flags); - -void SND_SetChannelVolume(int chNo, int volume, SNDChannelDataShift shift); -void SND_SetChannelTimer(int chNo, int timer); -void SND_SetChannelPan(int chNo, int pan); - -BOOL SND_IsChannelActive(int chNo); - -void SND_SetMasterPan(int pan); - -u32 SND_GetChannelControl(int chNo); - -#endif - -#ifdef SDK_ARM7 - -void SNDi_SetSurroundDecay(int decay); - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/snd/common/command.h b/subprojects/NitroSDK/include/nitro/snd/common/command.h deleted file mode 100644 index 7579685362..0000000000 --- a/subprojects/NitroSDK/include/nitro/snd/common/command.h +++ /dev/null @@ -1,88 +0,0 @@ -#ifndef NITRO_SND_COMMON_COMMAND_H_ -#define NITRO_SND_COMMON_COMMAND_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define SND_COMMAND_NOBLOCK 0 -#define SND_COMMAND_BLOCK (1 << 0) -#define SND_COMMAND_IMMEDIATE (1 << 1) - -typedef enum SNDCommandID { - SND_COMMAND_START_SEQ, - SND_COMMAND_STOP_SEQ, - SND_COMMAND_PREPARE_SEQ, - SND_COMMAND_START_PREPARED_SEQ, - SND_COMMAND_PAUSE_SEQ, - SND_COMMAND_SKIP_SEQ, - SND_COMMAND_PLAYER_PARAM, - SND_COMMAND_TRACK_PARAM, - SND_COMMAND_MUTE_TRACK, - SND_COMMAND_ALLOCATABLE_CHANNEL, - SND_COMMAND_PLAYER_LOCAL_VAR, - SND_COMMAND_PLAYER_GLOBAL_VAR, - SND_COMMAND_START_TIMER, - SND_COMMAND_STOP_TIMER, - SND_COMMAND_SETUP_CHANNEL_PCM, - SND_COMMAND_SETUP_CHANNEL_PSG, - SND_COMMAND_SETUP_CHANNEL_NOISE, - SND_COMMAND_SETUP_CAPTURE, - SND_COMMAND_SETUP_ALARM, - SND_COMMAND_CHANNEL_TIMER, - SND_COMMAND_CHANNEL_VOLUME, - SND_COMMAND_CHANNEL_PAN, - SND_COMMAND_SURROUND_DECAY, - SND_COMMAND_MASTER_VOLUME, - SND_COMMAND_MASTER_PAN, - SND_COMMAND_OUTPUT_SELECTOR, - SND_COMMAND_LOCK_CHANNEL, - SND_COMMAND_UNLOCK_CHANNEL, - SND_COMMAND_STOP_UNLOCKED_CHANNEL, - SND_COMMAND_SHARED_WORK, - SND_COMMAND_INVALIDATE_SEQ, - SND_COMMAND_INVALIDATE_BANK, - SND_COMMAND_INVALIDATE_WAVE, - SND_COMMAND_READ_DRIVER_INFO -} SNDCommandID; - -typedef struct SNDCommand { - struct SNDCommand * next; - SNDCommandID id; - u32 arg[4]; -} SNDCommand; - -void SND_CommandInit(void); - -#ifdef SDK_ARM9 - -struct SNDCommand * SND_AllocCommand(u32 flags); -void SND_PushCommand(struct SNDCommand * command); - -const SNDCommand * SND_RecvCommandReply(u32 flags); - -BOOL SND_FlushCommand(u32 flags); - -void SND_WaitForCommandProc(u32 tag); -void SND_WaitForFreeCommand(int count); - -u32 SND_GetCurrentCommandTag(void); -BOOL SND_IsFinishedCommandTag(u32 tag); - -int SND_CountFreeCommand(void); -int SND_CountReservedCommand(void); -int SND_CountWaitingCommand(void); - -#else - -void SND_CommandProc(void); - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/snd/common/data.h b/subprojects/NitroSDK/include/nitro/snd/common/data.h deleted file mode 100644 index de8c67c723..0000000000 --- a/subprojects/NitroSDK/include/nitro/snd/common/data.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef NITRO_SND_COMMON_DATA_H_ -#define NITRO_SND_COMMON_DATA_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct SNDBinaryFileHeader { - char signature[4]; - u16 byteOrder; - u16 version; - u32 fileSize; - u16 headerSize; - u16 dataBlocks; -} SNDBinaryFileHeader; - -typedef struct SNDBinaryBlockHeader { - u32 kind; - u32 size; -} SNDBinaryBlockHeader; - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/snd/common/exchannel.h b/subprojects/NitroSDK/include/nitro/snd/common/exchannel.h deleted file mode 100644 index 44dc96bdb8..0000000000 --- a/subprojects/NitroSDK/include/nitro/snd/common/exchannel.h +++ /dev/null @@ -1,197 +0,0 @@ -#ifndef NITRO_SND_COMMON_EX_CHANNEL_H_ -#define NITRO_SND_COMMON_EX_CHANNEL_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define SND_EX_CHANNEL_PRIO_HIGHEST 255 -#define SND_EX_CHANNEL_PRIO_LOWEST 1 - -#define SND_EX_CHANNEL_RELEASE_PRIO 1 -#define SND_EX_CHANNEL_STOP_PRIO 0 - -#define SND_EX_CHANNEL_USER_PAN_MIN -128 -#define SND_EX_CHANNEL_USER_PAN_MAX 127 - -#define SND_EX_CHANNEL_ENV_DECAY_SHIFT 7 - -#define SND_EX_CHANNEL_UPDATE_START (0x01 << 0) -#define SND_EX_CHANNEL_UPDATE_STOP (0x01 << 1) -#define SND_EX_CHANNEL_UPDATE_TIMER (0x01 << 2) -#define SND_EX_CHANNEL_UPDATE_VOLUME (0x01 << 3) -#define SND_EX_CHANNEL_UPDATE_PAN (0x01 << 4) - -#define SND_LOCK_IMPLIED_ALLOC_CHANNEL (1 << 0) - -struct SNDExChannel; - -typedef enum SNDExChannelType { - SND_EX_CHANNEL_PCM, - SND_EX_CHANNEL_PSG, - SND_EX_CHANNEL_NOISE -} SNDExChannelType; - -typedef enum SNDExChannelCallbackStatus { - SND_EX_CHANNEL_CALLBACK_DROP, - SND_EX_CHANNEL_CALLBACK_FINISH -} SNDExChannelCallbackStatus; - -typedef enum SNDEnvStatus { - SND_ENV_ATTACK, - SND_ENV_DECAY, - SND_ENV_SUSTAIN, - SND_ENV_RELEASE -} SNDEnvStatus; - -typedef enum SNDLfoTarget { - SND_LFO_PITCH, - SND_LFO_VOLUME, - SND_LFO_PAN -} SNDLfoTarget; - -typedef void (* SNDExChannelCallback) (struct SNDExChannel * ch_p, - SNDExChannelCallbackStatus status, void * userData); - -#if !(defined(SDK_WIN32) || defined(SDK_FROM_TOOL)) - -typedef struct SNDWaveParam { - u8 format; - u8 loopflag; - u16 rate; - u16 timer; - u16 loopstart; - u32 looplen; -} SNDWaveParam; - -#else - -typedef struct SNDWaveParam { - u8 format; - u8 loopflag; - u16 rate; - u16 timer; - u32 loopstart; - u32 looplen; -} SNDWaveParam; - -#endif - -typedef struct SNDLfoParam { - u8 target; - u8 speed; - u8 depth; - u8 range; - u16 delay; -} SNDLfoParam; - -typedef struct SNDLfo { - struct SNDLfoParam param; - - u16 delay_counter; - u16 counter; -} SNDLfo; - -typedef struct SNDExChannel { - u8 myNo; - u8 type; - u8 env_status; - u8 active_flag : 1; - u8 start_flag : 1; - u8 auto_sweep : 1; - u8 sync_flag : 5; - - u8 pan_range; - u8 original_key; - s16 user_decay2; - - u8 key; - u8 velocity; - s8 init_pan; - s8 user_pan; - - s16 user_decay; - s16 user_pitch; - - s32 env_decay; - - s32 sweep_counter; - s32 sweep_length; - - u8 attack; - u8 sustain; - u16 decay; - u16 release; - - u8 prio; - u8 pan; - u16 volume; - u16 timer; - - struct SNDLfo lfo; - s16 sweep_pitch; - - s32 length; - - struct SNDWaveParam wave; - union { - const void * data; - SNDDuty duty; - }; - - SNDExChannelCallback callback; - void * callback_data; - - struct SNDExChannel * nextLink; -} SNDExChannel; - -#ifdef SDK_ARM7 - -void SND_ExChannelInit(void); -void SND_ExChannelMain(BOOL doPeriodicProc); -void SND_UpdateExChannel(void); - -struct SNDExChannel * SND_AllocExChannel(u32 chBitMask, - int prio, - BOOL strongRequest, - SNDExChannelCallback callback, void * callbackData); -void SND_FreeExChannel(struct SNDExChannel * ch_p); - -BOOL SND_StartExChannelPcm(SNDExChannel * ch_p, - const struct SNDWaveParam * wave, const void * data, s32 length); -BOOL SND_StartExChannelPsg(struct SNDExChannel * ch_p, SNDDuty duty, s32 length); -BOOL SND_StartExChannelNoise(struct SNDExChannel * ch_p, s32 length); - -void SND_ReleaseExChannel(struct SNDExChannel * ch_p); - -BOOL SND_IsExChannelActive(struct SNDExChannel * ch_p); - -void SND_InvalidateWave(const void * start, const void * end); - -s32 SND_UpdateExChannelEnvelope(SNDExChannel * ch_p, BOOL doPeriodicProc); - -void SND_SetExChannelAttack(struct SNDExChannel * ch_p, int attack); -void SND_SetExChannelDecay(struct SNDExChannel * ch_p, int decay); -void SND_SetExChannelSustain(struct SNDExChannel * ch_p, int sustain); -void SND_SetExChannelRelease(struct SNDExChannel * ch_p, int release); - -void SND_InitLfoParam(SNDLfoParam * lfo); -void SND_StartLfo(SNDLfo * lfo); -void SND_UpdateLfo(SNDLfo * lfo); -s32 SND_GetLfoValue(SNDLfo * lfo); - -void SND_LockChannel(u32 chBitMask, u32 flags); -void SND_UnlockChannel(u32 chBitMask, u32 flags); -void SND_StopUnlockedChannel(u32 chBitMask, u32 flags); -u32 SND_GetLockedChannel(u32 flags); - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/snd/common/global.h b/subprojects/NitroSDK/include/nitro/snd/common/global.h deleted file mode 100644 index 0626411e28..0000000000 --- a/subprojects/NitroSDK/include/nitro/snd/common/global.h +++ /dev/null @@ -1,45 +0,0 @@ -#ifndef NITRO_SND_COMMON_GLOBAL_H_ -#define NITRO_SND_COMMON_GLOBAL_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define SND_MASTER_VOLUME_MAX 0x7f - -typedef enum SNDChannelOut { - SND_CHANNEL_OUT_MIXER, - SND_CHANNEL_OUT_BYPASS -} SNDChannelOut; - -typedef enum SNDOutput { - SND_OUTPUT_MIXER, - SND_OUTPUT_CHANNEL1, - SND_OUTPUT_CHANNEL3, - SND_OUTPUT_CHANNEL1_3 -} SNDOutput; - -#ifdef SDK_ARM7 - -void SND_Enable(void); -void SND_Disable(void); - -void SND_Shutdown(void); - -void SND_BeginSleep(void); -void SND_EndSleep(void); - -void SND_SetMasterVolume(int volume); - -void SND_SetOutputSelector(SNDOutput left, - SNDOutput right, SNDChannelOut channel1, SNDChannelOut channel3); - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/snd/common/main.h b/subprojects/NitroSDK/include/nitro/snd/common/main.h deleted file mode 100644 index 0b7ac9ae2c..0000000000 --- a/subprojects/NitroSDK/include/nitro/snd/common/main.h +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef NITRO_SND_COMMON_MAIN_H_ -#define NITRO_SND_COMMON_MAIN_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define SND_PROC_INTERVAL 0xAA8 - -#define SND_MESSAGE_PERIODIC 1 -#define SND_MESSAGE_WAKEUP_THREAD 2 - -#ifdef SDK_ARM9 - -void SND_Init(void); - -#else - -void SND_Init(u32 threadPrio); - -void SND_CreateThread(u32 threadPrio); -BOOL SND_SetThreadPriority(u32 prio); - -void SND_InitIntervalTimer(void); -void SND_StartIntervalTimer(void); -void SND_StopIntervalTimer(void); -OSMessage SND_WaitForIntervalTimer(void); -BOOL SND_SendWakeupMessage(void); - -#endif - -void SNDi_LockMutex(void); -void SNDi_UnlockMutex(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/snd/common/midiplayer.h b/subprojects/NitroSDK/include/nitro/snd/common/midiplayer.h deleted file mode 100644 index 4e7baf1807..0000000000 --- a/subprojects/NitroSDK/include/nitro/snd/common/midiplayer.h +++ /dev/null @@ -1,79 +0,0 @@ -#ifndef NITRO_SND_COMMON_MIDI_PLAYER_H_ -#define NITRO_SND_COMMON_MIDI_PLAYER_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define SND_MIDI_TRACK_NUM 16 - -struct SNDBankData; - -typedef struct SNDMidiChannel { - struct SNDExChannel * chp; - u8 key; - u8 pad1; - u16 pad2; -} SNDMidiChannel; - -typedef struct SNDMidiTrack { - struct SNDMidiChannel channels[SND_CHANNEL_NUM]; - SNDLfoParam mod; - - s16 sweep_pitch; - - u16 prgNo; - s8 pitchbend; - - u8 porta_time; - u8 volume; - s8 pan; - u8 expression; - s8 transpose; - u8 prio; - u8 bendrange; - u8 porta_flag; - u8 porta_key; - u8 attack; - u8 decay; - u8 sustain; - u8 release; - - u8 rpnLSB; - u8 rpnMSB; - u8 nrpnLSB; - u8 nrpnMSB; - u8 rpn_flag; - u8 pad1; - u16 pad2; -} SNDMidiTrack; - -typedef struct SNDMidiPlayer { - const struct SNDBankData * bank; - SNDMidiTrack track[SND_MIDI_TRACK_NUM]; - - u8 main_volume; - u8 prio; - u16 pad; -} SNDMidiPlayer; - -#ifdef SDK_ARM7 - -void SND_MidiPlayerInit(SNDMidiPlayer * player); -void SND_MidiPlayerMain(SNDMidiPlayer * player); -void SND_MidiPlayerSetBank(SNDMidiPlayer * player, const struct SNDBankData * bank); -void SND_MidiPlayerProgramChange(SNDMidiPlayer * player, int channel, int prgNo); -void SND_MidiPlayerSendMessage(SNDMidiPlayer * player, u8 status, u8 data1, u8 data2); -void SND_MidiPlayerReset(SNDMidiPlayer * player); - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/snd/common/mml.h b/subprojects/NitroSDK/include/nitro/snd/common/mml.h deleted file mode 100644 index a369c9b010..0000000000 --- a/subprojects/NitroSDK/include/nitro/snd/common/mml.h +++ /dev/null @@ -1,72 +0,0 @@ -#ifndef NITRO_SND_COMMON_MML_H_ -#define NITRO_SND_COMMON_MML_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#define SND_MML_WAIT 0x80 -#define SND_MML_PRG 0x81 - -#define SND_MML_OPEN_TRACK 0x93 -#define SND_MML_JUMP 0x94 -#define SND_MML_CALL 0x95 - -#define SND_MML_RANDOM 0xa0 -#define SND_MML_VARIABLE 0xa1 -#define SND_MML_IF 0xa2 - -#define SND_MML_SETVAR 0xb0 -#define SND_MML_ADDVAR 0xb1 -#define SND_MML_SUBVAR 0xb2 -#define SND_MML_MULVAR 0xb3 -#define SND_MML_DIVVAR 0xb4 -#define SND_MML_SHIFTVAR 0xb5 -#define SND_MML_RANDVAR 0xb6 - -#define SND_MML_CMP_EQ 0xb8 -#define SND_MML_CMP_GE 0xb9 -#define SND_MML_CMP_GT 0xba -#define SND_MML_CMP_LE 0xbb -#define SND_MML_CMP_LT 0xbc -#define SND_MML_CMP_NE 0xbd - -#define SND_MML_PAN 0xc0 -#define SND_MML_VOLUME 0xc1 -#define SND_MML_MAIN_VOLUME 0xc2 -#define SND_MML_TRANSPOSE 0xc3 -#define SND_MML_PITCH_BEND 0xc4 -#define SND_MML_BEND_RANGE 0xc5 -#define SND_MML_PRIO 0xc6 -#define SND_MML_NOTE_WAIT 0xc7 -#define SND_MML_TIE 0xc8 -#define SND_MML_PORTA 0xc9 -#define SND_MML_MOD_DEPTH 0xca -#define SND_MML_MOD_SPEED 0xcb -#define SND_MML_MOD_TYPE 0xcc -#define SND_MML_MOD_RANGE 0xcd -#define SND_MML_PORTA_SW 0xce -#define SND_MML_PORTA_TIME 0xcf -#define SND_MML_ATTACK 0xd0 -#define SND_MML_DECAY 0xd1 -#define SND_MML_SUSTAIN 0xd2 -#define SND_MML_RELEASE 0xd3 -#define SND_MML_LOOP_START 0xd4 -#define SND_MML_VOLUME2 0xd5 -#define SND_MML_PRINTVAR 0xd6 -#define SND_MML_MUTE 0xd7 - -#define SND_MML_MOD_DELAY 0xe0 -#define SND_MML_TEMPO 0xe1 -#define SND_MML_SWEEP_PITCH 0xe3 - -#define SND_MML_LOOP_END 0xfc -#define SND_MML_RET 0xfd -#define SND_MML_ALLOC_TRACK 0xfe -#define SND_MML_FIN 0xff - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/snd/common/seq.h b/subprojects/NitroSDK/include/nitro/snd/common/seq.h deleted file mode 100644 index 01990d3aed..0000000000 --- a/subprojects/NitroSDK/include/nitro/snd/common/seq.h +++ /dev/null @@ -1,149 +0,0 @@ -#ifndef NITRO_SND_COMMON_SEQ_H_ -#define NITRO_SND_COMMON_SEQ_H_ - -#include - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define SND_PLAYER_NUM 16 -#define SND_PLAYER_MIN 0 -#define SND_PLAYER_MAX 15 - -#define SND_TRACK_NUM 32 -#define SND_TRACK_MIN 0 -#define SND_TRACK_MAX 31 - -#define SND_TRACK_NUM_PER_PLAYER 16 - -#define SND_INVALID_TRACK_INDEX 0xff - -#define SND_BASE_TEMPO 240 -#define SND_DEFAULT_TEMPO 120 - -#define SND_TRACK_CALL_STACK_DEPTH 3 - -#define SND_PLAYER_VARIABLE_NUM 16 -#define SND_GLOBAL_VARIABLE_NUM 16 - -typedef enum { - SND_SEQ_MUTE_OFF, - SND_SEQ_MUTE_NO_STOP, - SND_SEQ_MUTE_RELEASE, - SND_SEQ_MUTE_STOP -} SNDSeqMute; - -struct SNDBankData; - -typedef struct SNDPlayer { - u8 active_flag : 1; - u8 prepared_flag : 1; - u8 pause_flag : 1; - u8 pad_ : 5; - - u8 myNo; - u8 pad2_; - u8 pad3_; - - u8 prio; - u8 volume; - s16 extFader; - - u8 tracks[SND_TRACK_NUM_PER_PLAYER]; - - u16 tempo; - u16 tempo_ratio; - u16 tempo_counter; - u16 pad__; - - struct SNDBankData * bank; -} SNDPlayer; - -typedef struct SNDTrack { - u8 active_flag : 1; - u8 note_wait : 1; - u8 mute_flag : 1; - u8 tie_flag : 1; - u8 note_finish_wait : 1; - u8 porta_flag : 1; - u8 cmp_flag : 1; - u8 channel_mask_flag : 1; - - u8 pan_range; - - u16 prgNo; - - u8 volume; - u8 volume2; - s8 pitch_bend; - u8 bend_range; - - s8 pan; - s8 ext_pan; - s16 extFader; - s16 ext_pitch; - - u8 attack; - u8 decay; - u8 sustain; - u8 release; - - u8 prio; - s8 transpose; - u8 porta_key; - u8 porta_time; - s16 sweep_pitch; - - struct SNDLfoParam mod; - u16 channel_mask; - - s32 wait; - - const u8 * base; - const u8 * cur; - - const u8 * call_stack[SND_TRACK_CALL_STACK_DEPTH]; - u8 loop_count[SND_TRACK_CALL_STACK_DEPTH]; - u8 call_stack_depth; - - struct SNDExChannel * channel_list; -} SNDTrack; - -#ifdef SDK_ARM7 - -void SND_SeqInit(void); -void SND_SeqMain(BOOL doPeriodicProc); - -void SND_StartSeq(int playerNo, const void * seqBase, u32 seqOffset, struct SNDBankData * bank_p); -void SND_StopSeq(int playerNo); -void SND_PrepareSeq(int playerNo, const void * seqBase, u32 seqOffset, - struct SNDBankData * bank_p); -void SND_StartPreparedSeq(int playerNo); -void SND_PauseSeq(int playerNo, BOOL flag); -void SND_SkipSeq(int playerNo, u32 tick); - -void SND_SetTrackMute(int playerNo, u32 trackBitMask, SNDSeqMute mute); -void SND_SetTrackAllocatableChannel(int playerNo, u32 trackBitMask, u32 chBitMask); - -void SND_InvalidateSeq(const void * start, const void * end); -void SND_InvalidateBank(const void * start, const void * end); - -void SND_MmlPrintEnable(BOOL enble); - -#endif - -#ifdef SDK_ARM7 - -void SNDi_SetPlayerParam(int playerNo, u32 offset, u32 data, int size); -void SNDi_SetTrackParam(int playerNo, u32 trackBitMask, u32 offset, u32 data, int size); - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/snd/common/util.h b/subprojects/NitroSDK/include/nitro/snd/common/util.h deleted file mode 100644 index ba8a8de076..0000000000 --- a/subprojects/NitroSDK/include/nitro/snd/common/util.h +++ /dev/null @@ -1,76 +0,0 @@ -#ifndef NITRO_SND_COMMON_UTIL_H_ -#define NITRO_SND_COMMON_UTIL_H_ - -#include - -#if !(defined(SDK_WIN32) || defined(SDK_FROM_TOOL)) -#include -#else -#define SDK_MINMAX_ASSERT(exp, min, max) ((void)0) -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define SND_PITCH_DIVISION_BIT 6 -#define SND_PITCH_DIVISION_RANGE (1 << SND_PITCH_DIVISION_BIT) - -#define SND_PITCH_TABLE_SIZE (12 * SND_PITCH_DIVISION_RANGE) -#define SND_PITCH_TABLE_BIAS 0x10000 -#define SND_PITCH_TABLE_SHIFT 16 - -#define SND_VOLUME_DB_MIN (-723) -#define SND_VOLUME_DB_MAX 0 -#define SND_VOLUME_TABLE_SIZE (SND_VOLUME_DB_MAX - SND_VOLUME_DB_MIN + 1) - -#define SND_CALC_DECIBEL_SCALE_MAX 127 - -#define SND_DECIBEL_TABLE_SIZE 128 -#define SND_DECIBEL_SQUARE_TABLE_SIZE 128 - -#define SND_SIN_TABLE_SIZE 32 -#define SND_SIN_PERIOD (SND_SIN_TABLE_SIZE * 4) - -extern const s16 SNDi_DecibelTable[SND_DECIBEL_TABLE_SIZE]; -extern const s16 SNDi_DecibelSquareTable[SND_DECIBEL_SQUARE_TABLE_SIZE]; - -#ifndef _MSC_VER -static inline -#else -__inline -#endif -s16 SND_CalcDecibel (int scale) -{ - SDK_MINMAX_ASSERT(scale, 0, SND_CALC_DECIBEL_SCALE_MAX); - - return SNDi_DecibelTable[scale]; -} - -#ifndef _MSC_VER -static inline -#else -__inline -#endif -s16 SND_CalcDecibelSquare (int scale) -{ - SDK_MINMAX_ASSERT(scale, 0, SND_CALC_DECIBEL_SCALE_MAX); - - return SNDi_DecibelSquareTable[scale]; -} - -u16 SND_CalcTimer(int orgTimer, int pitch); -u16 SND_CalcChannelVolume(int dB); - -#ifdef SDK_ARM7 - -u16 SND_CalcRandom(void); -s8 SND_SinIdx(int index); - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/snd/common/work.h b/subprojects/NitroSDK/include/nitro/snd/common/work.h deleted file mode 100644 index ffdd3c6dec..0000000000 --- a/subprojects/NitroSDK/include/nitro/snd/common/work.h +++ /dev/null @@ -1,129 +0,0 @@ -#ifndef NITRO_SND_COMMON_WORK_H_ -#define NITRO_SND_COMMON_WORK_H_ - -#include -#include -#include - -#if !(defined(SDK_WIN32) || defined(SDK_FROM_TOOL)) -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define SND_DEFAULT_VARIABLE -1 - -typedef struct SNDWork { - SNDExChannel channel[SND_CHANNEL_NUM]; - SNDPlayer player[SND_PLAYER_NUM]; - SNDTrack track[SND_TRACK_NUM]; -#if !(defined(SDK_WIN32) || defined(SDK_FROM_TOOL)) - SNDAlarm alarm[SND_ALARM_NUM]; -#endif -} SNDWork; - -typedef struct SNDSharedWork { - vu32 finishCommandTag; - vu32 playerStatus; - vu16 channelStatus; - vu16 captureStatus; - vu32 padding[5]; - struct { - vs16 variable[SND_PLAYER_VARIABLE_NUM]; - vu32 tickCounter; - } player[SND_PLAYER_NUM]; - vs16 globalVariable[SND_GLOBAL_VARIABLE_NUM]; -} SNDSharedWork; - -typedef struct SNDSpReg { - u32 chCtrl[SND_CHANNEL_NUM]; -} SNDSpReg; - -typedef struct SNDDriverInfo { - SNDWork work; - u32 chCtrl[SND_CHANNEL_NUM]; - SNDWork * workAddress; - u32 lockedChannels; - u32 padding[6]; -} SNDDriverInfo; - -typedef struct SNDChannelInfo { - BOOL activeFlag : 1; - BOOL lockFlag : 1; - - u16 volume; - u8 pan; - u8 pad_; - - SNDEnvStatus envStatus; -} SNDChannelInfo; - -typedef struct SNDPlayerInfo { - BOOL activeFlag : 1; - BOOL pauseFlag : 1; - - u16 trackBitMask; - u16 tempo; - u8 volume; - u8 pad_; - u16 pad2_; -} SNDPlayerInfo; - -typedef struct SNDTrackInfo { - u16 prgNo; - u8 volume; - u8 volume2; - s8 pitchBend; - u8 bendRange; - u8 pan; - s8 transpose; - u8 pad_; - u8 chCount; - u8 channel[SND_CHANNEL_NUM]; -} SNDTrackInfo; - -extern SNDSharedWork * SNDi_SharedWork; - -#ifdef SDK_ARM7 - -extern SNDWork SNDi_Work; - -#endif - -s16 SND_GetPlayerLocalVariable(int playerNo, int varNo); -s16 SND_GetPlayerGlobalVariable(int varNo); -u32 SND_GetPlayerTickCounter(int playerNo); - -u32 SND_GetPlayerStatus(void); -u32 SND_GetChannelStatus(void); -u32 SND_GetCaptureStatus(void); - -BOOL SND_ReadChannelInfo(const SNDDriverInfo * driverInfo, int chNo, SNDChannelInfo * chInfo); -BOOL SND_ReadPlayerInfo(const SNDDriverInfo * driverInfo, int playerNo, - SNDPlayerInfo * playerInfo); -BOOL SND_ReadTrackInfo(const SNDDriverInfo * driverInfo, int playerNo, int trackNo, - SNDTrackInfo * trackInfo); - -#ifdef SDK_ARM7 - -void SND_SetPlayerLocalVariable(int playerNo, int varNo, s16 var); -void SND_SetPlayerGlobalVariable(int varNo, s16 var); -void SND_UpdateSharedWork(void); - -#endif - -u32 SNDi_GetFinishedCommandTag(void); - -#ifdef SDK_ARM9 - -void SNDi_InitSharedWork(SNDSharedWork * work); - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/snd_sp.h b/subprojects/NitroSDK/include/nitro/snd_sp.h deleted file mode 100644 index c7ace060c7..0000000000 --- a/subprojects/NitroSDK/include/nitro/snd_sp.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef SDK_ARM7 -#define SDK_ARM7 -#endif -#ifdef SDK_ARM9 -#undef SDK_ARM9 -#endif -#include diff --git a/subprojects/NitroSDK/include/nitro/spec.h b/subprojects/NitroSDK/include/nitro/spec.h deleted file mode 100644 index 42282f29bc..0000000000 --- a/subprojects/NitroSDK/include/nitro/spec.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef NITRO_SPEC_H_ -# define NITRO_SPEC_H_ - -# ifdef SDK_TS -# ifndef SDK_TS_VERSION -# define SDK_TS_VERSION 200 -# endif -# ifndef SDK_NVRAM_FORMAT -# define SDK_NVRAM_FORMAT 300 -# endif -# endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/spi.h b/subprojects/NitroSDK/include/nitro/spi.h deleted file mode 100644 index a474a20830..0000000000 --- a/subprojects/NitroSDK/include/nitro/spi.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef NITRO_SPI_H_ -#define NITRO_SPI_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -#ifdef SDK_ARM9 - -#include -#include -#include - -#else - -#include -#include - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/spi/ARM7/pm.h b/subprojects/NitroSDK/include/nitro/spi/ARM7/pm.h deleted file mode 100644 index af06faf1ec..0000000000 --- a/subprojects/NitroSDK/include/nitro/spi/ARM7/pm.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef NITRO_PM_ARM7_H_ -#define NITRO_PM_ARM7_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include -#include - -void PM_SetLEDPattern(PMLEDPattern pattern); - -PMLEDPattern PM_GetLEDPattern(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/spi/ARM7/spi.h b/subprojects/NitroSDK/include/nitro/spi/ARM7/spi.h deleted file mode 100644 index 8bfb222f3d..0000000000 --- a/subprojects/NitroSDK/include/nitro/spi/ARM7/spi.h +++ /dev/null @@ -1,145 +0,0 @@ -#ifndef NITRO_SPI_SPI_H_ -#define NITRO_SPI_SPI_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include - -typedef enum { - SPI_BAUDRATE_4MHZ = 0, - SPI_BAUDRATE_2MHZ = 1, - SPI_BAUDRATE_1MHZ = 2, - SPI_BAUDRATE_512KHZ = 3 -} SPIBaudRate; - -typedef enum { - SPI_TRANSMODE_1BYTE = 0, - SPI_TRANSMODE_CONTINUOUS = 1 -} SPITransMode; - -#ifdef SDK_TS -typedef enum { - SPI_CLKMODE_8CLK = 0, - SPI_CLKMODE_16CLK = 1 -} SPIClockMode; -#endif - -#ifdef SDK_TS -typedef enum { - SPI_COMMPARTNER_PMIC = 0, - SPI_COMMPARTNER_EEPROM = 1, - SPI_COMMPARTNER_TP = 2 -} SPICommPartner; - -#else -typedef enum { - SPI_COMMPARTNER_PMIC = 0, - SPI_COMMPARTNER_EEPROM = 1 -} SPICommPartner; - -#define SPI_COMMPARTNER_TP (SPI_COMMPARTNER_PMIC) -#endif - -#define SPI_COMMPARTNER_ASSERT(x) SDK_ASSERT((u32)x <= SPI_COMMPARTNER_EEPROM) -#define SPI_TRANSMODE_ASSERT(x) SDK_ASSERT((u32)x <= SPI_TRANSMODE_CONTINUOUS) -#define SPI_BAUDRATE_ASSERT(x) SDK_ASSERT((u32)x <= SPI_BAUDRATE_512KHZ) - -static inline BOOL SPI_Enable (void) -{ - BOOL pre = (reg_SPI_SPICNT & ~REG_SPI_SPICNT_E_MASK) >> REG_SPI_SPICNT_E_SHIFT; - reg_SPI_SPICNT = - (u16)((reg_SPI_SPICNT & ~REG_SPI_SPICNT_E_MASK) | (1UL << REG_SPI_SPICNT_E_SHIFT)); - return pre; -} - -static inline BOOL SPI_Disable (void) -{ - BOOL pre = (reg_SPI_SPICNT & ~REG_SPI_SPICNT_E_MASK) >> REG_SPI_SPICNT_E_SHIFT; - reg_SPI_SPICNT = (u16)((reg_SPI_SPICNT & ~REG_SPI_SPICNT_E_MASK)); - return pre; -} - -static inline BOOL SPI_Restore (BOOL flag) -{ - BOOL pre = (reg_SPI_SPICNT & ~REG_SPI_SPICNT_E_MASK) >> REG_SPI_SPICNT_E_SHIFT; - reg_SPI_SPICNT = - (u16)((reg_SPI_SPICNT & ~REG_SPI_SPICNT_E_MASK) | - (flag ? 1UL << REG_SPI_SPICNT_E_SHIFT : 0)); - return pre; -} - -static inline void SPI_SetInterrupt (BOOL e) -{ - reg_SPI_SPICNT = - (u16)((reg_SPI_SPICNT & REG_SPI_SPICNT_I_MASK) | (e ? 1UL << REG_SPI_SPICNT_I_SHIFT : 0)); -} - -static inline BOOL SPI_GetInterrupt (void) -{ - return (BOOL)((reg_SPI_SPICNT & REG_SPI_SPICNT_I_MASK) >> REG_SPI_SPICNT_I_SHIFT); -} - -static inline void SPI_SetCommPartner (SPICommPartner p) -{ - SPI_COMMPARTNER_ASSERT(p); - reg_SPI_SPICNT = - (u16)((reg_SPI_SPICNT & REG_SPI_SPICNT_SEL_MASK) | (p << REG_SPI_SPICNT_SEL_SHIFT)); -} - -static inline SPICommPartner SPI_GetCommPartner (void) -{ - return (SPICommPartner)((reg_SPI_SPICNT & REG_SPI_SPICNT_SEL_MASK) >> REG_SPI_SPICNT_SEL_SHIFT); -} - -static inline void SPI_SetTransMode (SPITransMode mode) -{ - SPI_TRANSMODE_ASSERT(mode); - reg_SPI_SPICNT = - (u16)((reg_SPI_SPICNT & REG_SPI_SPICNT_MODE_MASK) | (mode << REG_SPI_SPICNT_MODE_SHIFT)); -} - -static inline SPITransMode SPI_GetTransMode (void) -{ - return (SPITransMode)((reg_SPI_SPICNT & REG_SPI_SPICNT_MODE_MASK) >> REG_SPI_SPICNT_MODE_SHIFT); -} - -static inline BOOL SPI_IsBusy (void) -{ - return (BOOL)((reg_SPI_SPICNT & REG_SPI_SPICNT_BUSY_MASK) >> REG_SPI_SPICNT_BUSY_SHIFT); -} - -static inline void SPI_SetBaudRate (SPIBaudRate baud) -{ - SPI_BAUDRATE_ASSERT(baud); - reg_SPI_SPICNT = - (u16)((reg_SPI_SPICNT & REG_SPI_SPICNT_BAUDRATE_MASK) | - (baud << REG_SPI_SPICNT_BAUDRATE_SHIFT)); -} - -static inline SPIBaudRate SPI_GetBaudRate (void) -{ - return (SPIBaudRate)((reg_SPI_SPICNT & REG_SPI_SPICNT_BAUDRATE_MASK) >> - REG_SPI_SPICNT_BAUDRATE_SHIFT); -} - -static inline void SPI_SendData (u8 data) -{ - reg_SPI_SPID = (u16)data; -} - -static inline u8 SPI_GetData (void) -{ - return (u8)(reg_SPI_SPICNT & 0xff); -} - -void SPI_Init(u32 prio); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/spi/ARM9/mic.h b/subprojects/NitroSDK/include/nitro/spi/ARM9/mic.h deleted file mode 100644 index cbd47f6900..0000000000 --- a/subprojects/NitroSDK/include/nitro/spi/ARM9/mic.h +++ /dev/null @@ -1,77 +0,0 @@ -#ifndef NITRO_SPI_ARM9_MIC_H_ -#define NITRO_SPI_ARM9_MIC_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -typedef enum MICResult { - MIC_RESULT_SUCCESS = 0, - MIC_RESULT_BUSY, - MIC_RESULT_ILLEGAL_PARAMETER, - MIC_RESULT_SEND_ERROR, - MIC_RESULT_INVALID_COMMAND, - MIC_RESULT_ILLEGAL_STATUS, - MIC_RESULT_FATAL_ERROR, - MIC_RESULT_MAX -} MICResult; - -typedef enum MICSamplingType { - MIC_SAMPLING_TYPE_8BIT = 0, - MIC_SAMPLING_TYPE_12BIT, - MIC_SAMPLING_TYPE_SIGNED_8BIT, - MIC_SAMPLING_TYPE_SIGNED_12BIT, - MIC_SAMPLING_TYPE_12BIT_FILTER_OFF, - MIC_SAMPLING_TYPE_SIGNED_12BIT_FILTER_OFF, - MIC_SAMPLING_TYPE_MAX -} MICSamplingType; - -typedef enum MICSamplingRate { - MIC_SAMPLING_RATE_8K = (HW_CPU_CLOCK_ARM7 / 8000), - MIC_SAMPLING_RATE_11K = (HW_CPU_CLOCK_ARM7 / 11025), - MIC_SAMPLING_RATE_16K = (HW_CPU_CLOCK_ARM7 / 16000), - MIC_SAMPLING_RATE_22K = (HW_CPU_CLOCK_ARM7 / 22050), - MIC_SAMPLING_RATE_32K = (HW_CPU_CLOCK_ARM7 / 32000), - MIC_SAMPLING_RATE_LIMIT = 1024 -} MICSamplingRate; - -typedef void (* MICCallback) (MICResult result, void * arg); - -typedef struct MICAutoParam { - MICSamplingType type; - void * buffer; - u32 size; - u32 rate; - BOOL loop_enable; - MICCallback full_callback; - void * full_arg; -} MICAutoParam; - -void MIC_Init(void); - -MICResult MIC_DoSamplingAsync(MICSamplingType type, void * buf, MICCallback callback, void * arg); - -MICResult MIC_StartAutoSamplingAsync(const MICAutoParam * param, MICCallback callback, void * arg); - -MICResult MIC_StopAutoSamplingAsync(MICCallback callback, void * arg); - -MICResult MIC_AdjustAutoSamplingAsync(u32 rate, MICCallback callback, void * arg); - -void * MIC_GetLastSamplingAddress(void); - -MICResult MIC_DoSampling(MICSamplingType type, void * buf); - -MICResult MIC_StartAutoSampling(const MICAutoParam * param); - -MICResult MIC_StopAutoSampling(void); - -MICResult MIC_AdjustAutoSampling(u32 rate); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/spi/ARM9/pm.h b/subprojects/NitroSDK/include/nitro/spi/ARM9/pm.h deleted file mode 100644 index 2e9f71d79f..0000000000 --- a/subprojects/NitroSDK/include/nitro/spi/ARM9/pm.h +++ /dev/null @@ -1,177 +0,0 @@ -#ifndef NITRO_PM_ARM9_H_ -#define NITRO_PM_ARM9_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include -#include - -typedef void (* PMCallback) (u32 result, void * arg); - -typedef struct { - u16 flag; - u16 padding; - u16 * buffer; -} PMData16; - -typedef enum { - PM_LCD_TOP = 0, - PM_LCD_BOTTOM = 1, - PM_LCD_ALL = 2 -} PMLCDTarget; - -typedef enum { - PM_BACKLIGHT_OFF = 0, - PM_BACKLIGHT_ON = 1 -} PMBackLightSwitch; - -typedef enum { - PM_BATTERY_HIGH = 0, - PM_BATTERY_LOW = 1 -} PMBattery; - -typedef enum { - PM_AMP_OFF = 0, - PM_AMP_ON = 1 -} PMAmpSwitch; - -typedef enum { - PM_AMPGAIN_20 = 0, - PM_AMPGAIN_40 = 1, - PM_AMPGAIN_80 = 2, - PM_AMPGAIN_160 = 3, - PM_AMPGAIN_DEFAULT = PM_AMPGAIN_40 -} PMAmpGain; - -#define PM_GAINAMP_DEFAULT PM_AMPGAIN_DEFAULT - -typedef enum { - PM_LCD_POWER_OFF = 0, - PM_LCD_POWER_ON = 1 -} PMLCDPower; - -typedef void (* PMSleepCallback) (void *); - -typedef struct PMiSleepCallbackInfo PMSleepCallbackInfo; -struct PMiSleepCallbackInfo { - PMSleepCallback callback; - void * arg; - PMSleepCallbackInfo * next; -}; - -void PM_Init(void); - -u32 PM_SendUtilityCommandAsync(u32 number, PMCallback callback, void * arg); -u32 PM_SendUtilityCommand(u32 number); - -u32 PM_SetBackLightAsync(PMLCDTarget target, PMBackLightSwitch sw, PMCallback callback, - void * arg); -u32 PM_SetBackLight(PMLCDTarget target, PMBackLightSwitch status); - -u32 PM_ForceToPowerOffAsync(PMCallback callback, void * arg); -u32 PM_ForceToPowerOff(void); - -u32 PM_SetAmpAsync(PMAmpSwitch sw, PMCallback callback, void * arg); -u32 PM_SetAmp(PMAmpSwitch sw); - -u32 PM_SetAmpGainAsync(PMAmpGain gain, PMCallback callback, void * arg); -u32 PM_SetAmpGain(PMAmpGain gain); - -u32 PM_GetBattery(PMBattery * batteryBuf); - -u32 PM_GetBackLight(PMBackLightSwitch * top, PMBackLightSwitch * bottom); - -u32 PM_GetAmp(PMAmpSwitch * swBuf); - -u32 PM_GetAmpGain(PMAmpGain * gainBuf); - -void PM_GoSleepMode(PMWakeUpTrigger trigger, PMLogic logic, u16 keyPattern); - -static inline void PM_SetSleepCallbackInfo (PMSleepCallbackInfo * info, PMSleepCallback callback, - void * arg) -{ - info->callback = callback; - info->arg = arg; -} - -void PM_AppendPreSleepCallback(PMSleepCallbackInfo * info); - -void PM_PrependPreSleepCallback(PMSleepCallbackInfo * info); - -void PM_AppendPostSleepCallback(PMSleepCallbackInfo * info); - -void PM_PrependPostSleepCallback(PMSleepCallbackInfo * info); - -void PM_DeletePreSleepCallback(PMSleepCallbackInfo * info); - -void PM_DeletePostSleepCallback(PMSleepCallbackInfo * info); - -BOOL PM_SetLCDPower(PMLCDPower sw); - -PMLCDPower PM_GetLCDPower(void); - -u32 PMi_SendLEDPatternCommandAsync(PMLEDPattern pattern, PMCallback callback, void * arg); -u32 PMi_SendLEDPatternCommand(PMLEDPattern pattern); - -inline u32 PM_SetLEDPatternAsync (PMLEDPattern pattern, PMCallback callback, void * arg) -{ - return PMi_SendLEDPatternCommandAsync(pattern, callback, arg); -} -inline u32 PM_SetLEDPattern (PMLEDPattern pattern) -{ - return PMi_SendLEDPatternCommand(pattern); -} - -u32 PM_GetLEDPatternAsync(PMLEDPattern * patternBuf, PMCallback callback, void * arg); -u32 PM_GetLEDPattern(PMLEDPattern * patternBuf); - -typedef enum { - PM_SOUND_POWER_OFF = 0, - PM_SOUND_POWER_ON = 1 -} PMSoundPowerSwitch; - -typedef enum { - PM_SOUND_VOLUME_OFF = 0, - PM_SOUND_VOLUME_ON = 1 -} PMSoundVolumeSwitch; - -BOOL PMi_SetLCDPower(PMLCDPower sw, PMLEDStatus led, BOOL skip, BOOL isSync); - -u32 PMi_SetSoundPowerAsync(PMSoundPowerSwitch sw, PMCallback callback, void * arg); -u32 PMi_SetSoundPower(PMSoundPowerSwitch sw); - -u32 PMi_SetSoundVolumeAsync(PMSoundVolumeSwitch sw, PMCallback callback, void * arg); -u32 PMi_SetSoundVolume(PMSoundVolumeSwitch sw); - -u32 PMi_GetSoundPower(PMSoundPowerSwitch * swBuf); - -u32 PMi_GetSoundVolume(PMSoundVolumeSwitch * swBuf); - -void PMi_SendPxiData(u32 data); - -void PMi_CommonCallback(PXIFifoTag tag, u32 data, BOOL err); - -u32 PMi_SendSleepStart(u16 trigger, u16 keyIntrData); -u32 PMi_DisposeSleepEnd(void); - -u32 PMi_ReadRegisterAsync(u16 registerAddr, u16 * buffer, PMCallback callback, void * arg); -u32 PMi_ReadRegister(u16 registerAddr, u16 * buffer); - -u32 PMi_WriteRegisterAsync(u16 registerAddr, u16 data, PMCallback callback, void * arg); -u32 PMi_WriteRegister(u16 registerAddr, u16 data); - -u32 PMi_SetLEDAsync(PMLEDStatus status, PMCallback callback, void * arg); -u32 PMi_SetLED(PMLEDStatus status); - -u32 PMi_GetLCDOffCount(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/spi/ARM9/tp.h b/subprojects/NitroSDK/include/nitro/spi/ARM9/tp.h deleted file mode 100644 index 39c7876707..0000000000 --- a/subprojects/NitroSDK/include/nitro/spi/ARM9/tp.h +++ /dev/null @@ -1,135 +0,0 @@ -#ifndef NITRO_SPI_ARM9_TP_H_ -#define NITRO_SPI_ARM9_TP_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define TP_SAMPLING_FREQUENCY_MAX 16 - -#define TP_TOUCH_OFF 0 -#define TP_TOUCH_ON 1 - -#define TP_VALIDITY_VALID 0 -#define TP_VALIDITY_INVALID_X 1 -#define TP_VALIDITY_INVALID_Y 2 -#define TP_VALIDITY_INVALID_XY (TP_VALIDITY_INVALID_X | TP_VALIDITY_INVALID_Y) - -typedef enum { - TP_REQUEST_COMMAND_SAMPLING = 0x0, - TP_REQUEST_COMMAND_AUTO_ON = 0x1, - TP_REQUEST_COMMAND_AUTO_OFF = 0x2, - TP_REQUEST_COMMAND_SET_STABILITY = 0x3, - TP_REQUEST_COMMAND_AUTO_SAMPLING = 0x10 -} TPRequestCommand; - -typedef enum { - TP_REQUEST_COMMAND_FLAG_SAMPLING = 1 << TP_REQUEST_COMMAND_SAMPLING, - TP_REQUEST_COMMAND_FLAG_AUTO_ON = 1 << TP_REQUEST_COMMAND_AUTO_ON, - TP_REQUEST_COMMAND_FLAG_AUTO_OFF = 1 << TP_REQUEST_COMMAND_AUTO_OFF, - TP_REQUEST_COMMAND_FLAG_SET_STABILITY = 1 << TP_REQUEST_COMMAND_SET_STABILITY -} TPRequestCommandFlag; - -typedef enum { - TP_RESULT_SUCCESS = 0, - TP_RESULT_INVALID_PARAMETER, - TP_RESULT_ILLEGAL_STATUS, - TP_RESULT_EXCLUSIVE, - TP_RESULT_PXI_BUSY -} TPRequestResult; - -typedef enum { - TP_STATE_READY = 0, - TP_STATE_SAMPLING, - TP_STATE_AUTO_SAMPLING, - TP_STATE_AUTO_WAIT_END -} TPState; - -typedef struct { - u16 x; - u16 y; - u16 touch; - u16 validity; -} TPData; - -#define TP_CALIBRATE_DOT_SCALE_SHIFT 8 -#define TP_CALIBRATE_ORIGIN_SCALE_SHIFT 2 - -typedef struct NvTpData { - s16 x0; - s16 y0; - s16 xDotSize; - s16 yDotSize; -} TPCalibrateParam; - -typedef void (* TPRecvCallback) (TPRequestCommand command, TPRequestResult result, u16 index); - -void TP_Init(void); -void TP_SetCallback(TPRecvCallback callback); -void TP_SetCalibrateParam(const TPCalibrateParam * param); - -void TP_RequestSamplingAsync(void); -u32 TP_WaitRawResult(TPData * result); -u32 TP_WaitCalibratedResult(TPData * result); -u32 TP_GetCalibratedResult(TPData * result); -void TP_RequestAutoSamplingStartAsync(u16 vcount, u16 frequence, TPData samplingBufs[], - u16 bufSize); -void TP_RequestAutoSamplingStopAsync(void); -void TP_RequestSetStabilityAsync(u8 retry, u16 range); -void TP_WaitBusy(TPRequestCommandFlag command_flgs); -void TP_WaitAllBusy(void); -u32 TP_CheckBusy(TPRequestCommandFlag command_flgs); -u32 TP_CheckError(TPRequestCommandFlag command); - -void TP_GetLatestRawPointInAuto(TPData * result); -void TP_GetLatestCalibratedPointInAuto(TPData * result); -u16 TP_GetLatestIndexInAuto(void); -u32 TP_CalcCalibrateParam(TPCalibrateParam * calibrate, - u16 raw_x1, u16 raw_y1, - u16 dx1, u16 dy1, u16 raw_x2, u16 raw_y2, u16 dx2, u16 dy2); -BOOL TP_GetUserInfo(TPCalibrateParam * calibrate); -void TP_GetCalibratedPoint(TPData * disp, const TPData * raw); -void TP_GetUnCalibratedPoint(u16 * raw_x, u16 * raw_y, u16 dx, u16 dy); - -static inline u32 TP_RequestSetStability (u8 retry, u16 range) -{ - TP_RequestSetStabilityAsync(retry, range); - TP_WaitBusy(TP_REQUEST_COMMAND_FLAG_SET_STABILITY); - return TP_CheckError(TP_REQUEST_COMMAND_FLAG_SET_STABILITY); -} - -static inline u32 TP_RequestAutoSamplingStart (u16 vcount, u16 frequence, TPData samplingBufs[], - u16 bufSize) -{ - TP_RequestAutoSamplingStartAsync(vcount, frequence, samplingBufs, bufSize); - TP_WaitBusy(TP_REQUEST_COMMAND_FLAG_AUTO_ON); - return TP_CheckError(TP_REQUEST_COMMAND_FLAG_AUTO_ON); -} - -static inline u32 TP_RequestAutoSamplingStop (void) -{ - TP_RequestAutoSamplingStopAsync(); - TP_WaitBusy(TP_REQUEST_COMMAND_FLAG_AUTO_OFF); - return TP_CheckError(TP_REQUEST_COMMAND_FLAG_AUTO_OFF); -} - -static inline u32 TP_RequestRawSampling (TPData * result) -{ - TP_RequestSamplingAsync(); - return TP_WaitRawResult(result); -} - -static inline u32 TP_RequestCalibratedSampling (TPData * result) -{ - TP_RequestSamplingAsync(); - return TP_WaitCalibratedResult(result); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/spi/common/config.h b/subprojects/NitroSDK/include/nitro/spi/common/config.h deleted file mode 100644 index 4aa98f4a6b..0000000000 --- a/subprojects/NitroSDK/include/nitro/spi/common/config.h +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef NITRO_SPI_COMMON_CONFIG_H_ -#define NITRO_SPI_COMMON_CONFIG_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include - -#ifdef SDK_TS -#if (SDK_TS_VERSION >= 200 || SDK_NVRAM_FORMAT >= 100) -#if (SDK_NVRAM_FORMAT >= 300) -#include -#else -#include -#endif -#else -#include -#endif -#else -#include -#endif - -#ifdef SDK_TS -#undef NVRAM_CONFIG_CONST_ADDRESS -#else -#define NVRAM_CONFIG_CONST_ADDRESS -#endif - -#ifdef NVRAM_CONFIG_CONST_ADDRESS -#define NVRAM_CONFIG_DATA_ADDRESS_DUMMY 0x3fe00 -#else -#define NVRAM_CONFIG_DATA_OFFSET_ADDRESS 0x0020 -#define NVRAM_CONFIG_DATA_OFFSET_SIZE 2 -#define NVRAM_CONFIG_DATA_OFFSET_SHIFT 3 -#endif - -#define NVRAM_CONFIG_SAVE_COUNT_MAX 0x0080 -#define NVRAM_CONFIG_SAVE_COUNT_MASK 0x007f - -#define NVRAM_CONFIG_MACADDRESS_ADDRESS 0x00036 -#define NVRAM_CONFIG_ENABLECHANNEL_ADDRESS 0x0003c - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/spi/common/pm_common.h b/subprojects/NitroSDK/include/nitro/spi/common/pm_common.h deleted file mode 100644 index 6944a9e70c..0000000000 --- a/subprojects/NitroSDK/include/nitro/spi/common/pm_common.h +++ /dev/null @@ -1,144 +0,0 @@ -#ifndef NITRO_PM_COMMON_H_ -#define NITRO_PM_COMMON_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#ifdef SDK_ARM9 -#include -#else -#include -#endif - -#define REG_PMIC_CTL_ADDR 0 -#define REG_PMIC_STAT_ADDR 1 -#define REG_PMIC_OP_CTL_ADDR 2 -#define REG_PMIC_PGA_GAIN_ADDR 3 -#define REG_PMIC_BL_CTL_ADDR 4 -#define PMIC_REG_NUMS 5 - -#define PMIC_CTL_SND_PWR (1 << 0) -#define PMIC_CTL_SND_VOLCTRL (1 << 1) -#define PMIC_CTL_BKLT1 (1 << 2) -#define PMIC_CTL_BKLT2 (1 << 3) -#define PMIC_CTL_LED_SW (1 << 4) -#define PMIC_CTL_LED_SP (1 << 5) -#define PMIC_CTL_PWR_OFF (1 << 6) - -#define PMIC_STAT_VDET (1 << 0) - -#define PMIC_OP_CTL (1 << 0) - -#define PMIC_PGA_GAIN_SHIFT 0 -#define PMIC_PGA_GAIN_MASK (3 << PMIC_PGA_GAIN_SHIFT) - -#define PMIC_BL_CTL_BL_SHIFT 0 -#define PMIC_BL_CTL_BL_MASK (3 << PMIC_BL_CTL_BL_SHIFT) -#define PMIC_BL_CTL_ADPT_SW (1 << 2) -#define PMIC_BL_CTL_ADPT_DETECT (1 << 3) -#define PMIC_BL_CTL_VERSION (1 << 6) - -#define PMIC_REG_READ 1 -#define PMIC_REG_WRITE 0 -#define PMIC_REG_OP_SHIFT 7 -#define PMIC_REG_OP_MASK 1 - -enum { - PM_UTIL_DUMMY = 0, - PM_UTIL_LED_ON, - PM_UTIL_LED_BLINK_HIGH_SPEED, - PM_UTIL_LED_BLINK_LOW_SPEED, - PM_UTIL_LCD1_BACKLIGHT_ON, - PM_UTIL_LCD1_BACKLIGHT_OFF, - PM_UTIL_LCD2_BACKLIGHT_ON, - PM_UTIL_LCD2_BACKLIGHT_OFF, - PM_UTIL_LCD12_BACKLIGHT_ON, - PM_UTIL_LCD12_BACKLIGHT_OFF, - PM_UTIL_SOUND_POWER_ON, - PM_UTIL_SOUND_POWER_OFF, - PM_UTIL_SOUND_VOL_CTRL_ON, - PM_UTIL_SOUND_VOL_CTRL_OFF, - PM_UTIL_FORCE_POWER_OFF, - PM_UTIL_FORCE_POWER_ON -}; - -#define PM_BAUDRATE_4MHZ 0 -#define PM_BAUDRATE_2MHZ 1 -#define PM_BAUDRATE_1MHZ 2 -#define PM_BAUDRATE_512KHZ 3 - -#define PM_BAUDRATE_PMIC_DEFAULT PM_BAUDRATE_1MHZ - -#define PM_TRIGGER_KEY (1 << 0) -#define PM_TRIGGER_RTC_ALARM (1 << 1) -#define PM_TRIGGER_COVER_OPEN (1 << 2) -#define PM_TRIGGER_CARD (1 << 3) -#define PM_TRIGGER_CARTRIDGE (1 << 4) -typedef u32 PMWakeUpTrigger; - -#define PM_PAD_LOGIC_OR (0 << REG_PAD_KEYCNT_LOGIC_SHIFT) -#define PM_PAD_LOGIC_AND (1 << REG_PAD_KEYCNT_LOGIC_SHIFT) -typedef u32 PMLogic; - -#define PM_BACKLIGHT_RECOVER_TOP_SHIFT 5 -#define PM_BACKLIGHT_RECOVER_BOTTOM_SHIFT 6 -#define PM_BACKLIGHT_RECOVER_TOP_ON (1 << PM_BACKLIGHT_RECOVER_TOP_SHIFT) -#define PM_BACKLIGHT_RECOVER_TOP_OFF (0 << PM_BACKLIGHT_RECOVER_TOP_SHIFT) -#define PM_BACKLIGHT_RECOVER_BOTTOM_ON (1 << PM_BACKLIGHT_RECOVER_BOTTOM_SHIFT) -#define PM_BACKLIGHT_RECOVER_BOTTOM_OFF (0 << PM_BACKLIGHT_RECOVER_BOTTOM_SHIFT) - -typedef enum { - PM_LED_PATTERN_NONE = 0, - PM_LED_PATTERN_ON = 1, - PM_LED_PATTERN_BLINK_LOW = 2, - PM_LED_PATTERN_BLINK_HIGH = 3, - PM_LED_PATTERN_BLINK1 = 4, - PM_LED_PATTERN_BLINK2 = 5, - PM_LED_PATTERN_BLINK3 = 6, - PM_LED_PATTERN_BLINK4 = 7, - PM_LED_PATTERN_BLINK5 = 8, - PM_LED_PATTERN_BLINK6 = 9, - PM_LED_PATTERN_BLINK8 = 10, - PM_LED_PATTERN_BLINK10 = 11, - PM_LED_PATTERN_PATTERN1 = 12, - PM_LED_PATTERN_PATTERN2 = 13, - PM_LED_PATTERN_PATTERN3 = 14, - PM_LED_PATTERN_WIRELESS = 15 -} PMLEDPattern; - -#define PM_LED_PATTERN_MAX PM_LED_PATTERN_WIRELESS - -typedef enum { - PM_LED_NONE = 0, - PM_LED_ON = 1, - PM_LED_BLINK_LOW = 2, - PM_LED_BLINK_HIGH = 3 -} PMLEDStatus; - -#define PM_COMMAND_SHIFT 22 -#define PM_COMMAND_MASK 0x3c00000 - -#define PM_REG_OP_ADDR_SHIFT 16 -#define PM_REG_OP_ADDR_MASK 0x3f0000 - -#define PM_REG_OP_DATA_SHIFT 0 -#define PM_REG_OP_DATA_MASK 0xffff - -#define PM_READING -1 - -#define PM_SUCCESS 0 -#define PM_BUSY 1 -#define PM_INVALID_COMMAND 0xffff - -#define PM_RESULT_SUCCESS 0 -#define PM_RESULT_BUSY 1 -#define PM_RESULT_ERROR 2 - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/spi/common/type.h b/subprojects/NitroSDK/include/nitro/spi/common/type.h deleted file mode 100644 index 9c5b46e39e..0000000000 --- a/subprojects/NitroSDK/include/nitro/spi/common/type.h +++ /dev/null @@ -1,137 +0,0 @@ -#ifndef NITRO_SPI_COMMON_TYPE_H_ -#define NITRO_SPI_COMMON_TYPE_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#define SPI_PXI_START_BIT 0x02000000 -#define SPI_PXI_END_BIT 0x01000000 -#define SPI_PXI_INDEX_MASK 0x000f0000 -#define SPI_PXI_INDEX_SHIFT 16 -#define SPI_PXI_DATA_MASK 0x0000ffff -#define SPI_PXI_DATA_SHIFT 0 -#define SPI_PXI_RESULT_COMMAND_BIT 0x00008000 -#define SPI_PXI_RESULT_COMMAND_MASK 0x00007f00 -#define SPI_PXI_RESULT_COMMAND_SHIFT 8 -#define SPI_PXI_RESULT_DATA_MASK 0x000000ff -#define SPI_PXI_RESULT_DATA_SHIFT 0 -#define SPI_PXI_CONTINUOUS_PACKET_MAX 16 - -#define SPI_PXI_COMMAND_TP_SAMPLING 0x0000 -#define SPI_PXI_COMMAND_TP_AUTO_ON 0x0001 -#define SPI_PXI_COMMAND_TP_AUTO_OFF 0x0002 -#define SPI_PXI_COMMAND_TP_SETUP_STABILITY 0x0003 -#define SPI_PXI_COMMAND_TP_AUTO_SAMPLING 0x0010 - -#define SPI_PXI_COMMAND_NVRAM_WREN 0x0020 -#define SPI_PXI_COMMAND_NVRAM_WRDI 0x0021 -#define SPI_PXI_COMMAND_NVRAM_RDSR 0x0022 -#define SPI_PXI_COMMAND_NVRAM_READ 0x0023 -#define SPI_PXI_COMMAND_NVRAM_FAST_READ 0x0024 -#define SPI_PXI_COMMAND_NVRAM_PW 0x0025 -#define SPI_PXI_COMMAND_NVRAM_PP 0x0026 -#define SPI_PXI_COMMAND_NVRAM_PE 0x0027 -#define SPI_PXI_COMMAND_NVRAM_SE 0x0028 -#define SPI_PXI_COMMAND_NVRAM_DP 0x0029 -#define SPI_PXI_COMMAND_NVRAM_RDP 0x002a -#define SPI_PXI_COMMAND_NVRAM_CE 0x002b -#define SPI_PXI_COMMAND_NVRAM_RSI 0x002c -#define SPI_PXI_COMMAND_NVRAM_SR 0x002d - -#define SPI_PXI_COMMAND_MIC_SAMPLING 0x0040 -#define SPI_PXI_COMMAND_MIC_AUTO_ON 0x0041 -#define SPI_PXI_COMMAND_MIC_AUTO_OFF 0x0042 -#define SPI_PXI_COMMAND_MIC_AUTO_ADJUST 0x0043 -#define SPI_PXI_COMMAND_MIC_BUFFER_FULL 0x0051 - -#define SPI_PXI_COMMAND_PM_SYNC 0x0060 -#define SPI_PXI_COMMAND_PM_SLEEP_START 0x0061 -#define SPI_PXI_COMMAND_PM_SLEEP_END 0x0062 -#define SPI_PXI_COMMAND_PM_UTILITY 0x0063 -#define SPI_PXI_COMMAND_PM_REG_WRITE 0x0064 -#define SPI_PXI_COMMAND_PM_REG_READ 0x0065 -#define SPI_PXI_COMMAND_PM_SELF_BLINK 0x0066 -#define SPI_PXI_COMMAND_PM_GET_BLINK 0x0067 -#define SPI_PXI_COMMAND_PM_REG0VALUE 0x0070 -#define SPI_PXI_COMMAND_PM_REG1VALUE 0x0071 -#define SPI_PXI_COMMAND_PM_REG2VALUE 0x0072 -#define SPI_PXI_COMMAND_PM_REG3VALUE 0x0073 -#define SPI_PXI_COMMAND_PM_REG4VALUE 0x0074 - -#define SPI_PXI_RESULT_SUCCESS 0x0000 -#define SPI_PXI_RESULT_INVALID_COMMAND 0x0001 -#define SPI_PXI_RESULT_INVALID_PARAMETER 0x0002 -#define SPI_PXI_RESULT_ILLEGAL_STATUS 0x0003 -#define SPI_PXI_RESULT_EXCLUSIVE 0x0004 - -#define SPI_TP_SAMPLING_FREQUENCY_MAX 4 -#define SPI_TP_DEFAULT_STABILITY_RANGE 20 -#define SPI_TP_VALARM_TAG 0x54505641 - -#define SPI_NVRAM_PAGE_SIZE 256 -#define SPI_NVRAM_SECTOR_SIZE (SPI_NVRAM_PAGE_SIZE * 256) -#define SPI_NVRAM_ALL_SIZE (SPI_NVRAM_SECTOR_SIZE * 8) - -#define SPI_MIC_SAMPLING_TYPE_8BIT 0x0000 -#define SPI_MIC_SAMPLING_TYPE_12BIT 0x0001 -#define SPI_MIC_SAMPLING_TYPE_S8BIT 0x0002 -#define SPI_MIC_SAMPLING_TYPE_S12BIT 0x0003 -#define SPI_MIC_SAMPLING_TYPE_FILTER_ON 0x0000 -#define SPI_MIC_SAMPLING_TYPE_FILTER_OFF 0x0004 -#define SPI_MIC_SAMPLING_TYPE_ADMODE_MASK 0x0007 -#define SPI_MIC_SAMPLING_TYPE_BIT_MASK 0x0001 -#define SPI_MIC_SAMPLING_TYPE_SIGNED_MASK 0x0002 -#define SPI_MIC_SAMPLING_TYPE_FILTER_MASK 0x0004 - -#define SPI_MIC_SAMPLING_TYPE_LOOP_OFF 0x0000 -#define SPI_MIC_SAMPLING_TYPE_LOOP_ON 0x0010 -#define SPI_MIC_SAMPLING_TYPE_LOOP_MASK 0x0010 - -#define SPI_MIC_SAMPLING_TYPE_CORRECT_OFF 0x0000 -#define SPI_MIC_SAMPLING_TYPE_CORRECT_ON 0x0020 -#define SPI_MIC_SAMPLING_TYPE_CORRECT_MASK 0x0020 - -#define SPI_MIC_SAMPLING_TYPE_MIX_TP_OFF 0x0000 -#define SPI_MIC_SAMPLING_TYPE_MIX_TP_ON 0x0040 -#define SPI_MIC_SAMPLING_TYPE_MIX_TP_MASK 0x0040 - -typedef enum SPIDeviceType { - SPI_DEVICE_TYPE_TP = 0, - SPI_DEVICE_TYPE_NVRAM, - SPI_DEVICE_TYPE_MIC, - SPI_DEVICE_TYPE_PM, - SPI_DEVICE_TYPE_ARM7, - SPI_DEVICE_TYPE_MAX -} SPIDeviceType; - -typedef enum SPITpTouch { - SPI_TP_TOUCH_OFF = 0, - SPI_TP_TOUCH_ON -} SPITpTouch; - -typedef enum SPITpValidity { - SPI_TP_VALIDITY_VALID = 0, - SPI_TP_VALIDITY_INVALID_X, - SPI_TP_VALIDITY_INVALID_Y, - SPI_TP_VALIDITY_INVALID_XY -} SPITpValidity; - -typedef union SPITpData { - struct { - u32 x : 12; - u32 y : 12; - u32 touch : 1; - u32 validity : 2; - u32 dummy : 5; - } e; - u32 raw; - u8 bytes[4]; - u16 halfs[2]; -} SPITpData; - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/spi/common/userInfo_teg.h b/subprojects/NitroSDK/include/nitro/spi/common/userInfo_teg.h deleted file mode 100644 index 847d325529..0000000000 --- a/subprojects/NitroSDK/include/nitro/spi/common/userInfo_teg.h +++ /dev/null @@ -1,85 +0,0 @@ -#ifndef NITRO_SPI_COMMON_USERINFO_TEG_H_ -#define NITRO_SPI_COMMON_USERINFO_TEG_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#define NVRAM_CONFIG_DATA_VERSION 0 - -#define NVRAM_CONFIG_BOOT_GAME_LOG_NUM 8 -#define NVRAM_CONFIG_NICKNAME_LENGTH 8 - -#define NVRAM_CONFIG_LANG_JAPANESE 0 -#define NVRAM_CONFIG_LANG_ENGLISH 1 -#define NVRAM_CONFIG_LANG_FRENCH 2 -#define NVRAM_CONFIG_LANG_GERMAN 3 -#define NVRAM_CONFIG_LANG_ITALIAN 4 -#define NVRAM_CONFIG_LANG_SPANISH 5 -#define NVRAM_CONFIG_LANG_CODE_MAX 6 - -typedef struct NVRAMConfigNickname { - u16 name[NVRAM_CONFIG_NICKNAME_LENGTH]; - u16 length; - u16 padding; -} NVRAMConfigNickname; - -typedef enum NVRAMConfigSexCode { - NVRAM_CONFIG_SEX_MALE = 0, - NVRAM_CONFIG_SEX_FEMALE, - NVRAM_CONFIG_SEX_CODE_MAX -} NVRAMConfigSexCode; - -typedef enum NVRAMConfigBloodType { - NVRAM_CONFIG_BLOOD_A = 0, - NVRAM_CONFIG_BLOOD_B, - NVRAM_CONFIG_BLOOD_AB, - NVRAM_CONFIG_BLOOD_O, - NVRAM_CONFIG_BLOOD_TYPE_MAX -} NVRAMConfigBloodType; - -typedef struct NVRAMConfigDate { - u16 year; - u8 month; - u8 day; -} NVRAMConfigDate; - -typedef struct NVRAMConfigOwnerInfo { - NVRAMConfigNickname nickname; - NVRAMConfigSexCode sex; - NVRAMConfigBloodType bloodType; - NVRAMConfigDate birthday; -} NVRAMConfigOwnerInfo; - -typedef struct NVRAMConfigBootGameLog { - u32 gameCode[NVRAM_CONFIG_BOOT_GAME_LOG_NUM]; - u16 top; - u16 num; -} NVRAMConfigBootGameLog; - -typedef struct NVRAMConfigTpCData { - u16 calib_data[6]; -} NVRAMConfigTpCData; - -typedef struct NVRAMConfigData { - u8 version; - u8 timezone; - u16 agbLcd; - u32 rtcOffset; - u32 language; - NVRAMConfigOwnerInfo owner; - NVRAMConfigTpCData tp; - NVRAMConfigBootGameLog bootGameLog; -} NVRAMConfigData; - -typedef struct NVRAMConfig { - NVRAMConfigData ncd; - u16 saveCount; - u16 crc16; -} NVRAMConfig; - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/spi/common/userInfo_ts_0.h b/subprojects/NitroSDK/include/nitro/spi/common/userInfo_ts_0.h deleted file mode 100644 index 310d24c07d..0000000000 --- a/subprojects/NitroSDK/include/nitro/spi/common/userInfo_ts_0.h +++ /dev/null @@ -1,85 +0,0 @@ -#ifndef NITRO_SPI_COMMON_USERINFO_TS_0_H_ -#define NITRO_SPI_COMMON_USERINFO_TS_0_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#define NVRAM_CONFIG_DATA_VERSION 2 - -#define NVRAM_CONFIG_BOOT_GAME_LOG_NUM 8 -#define NVRAM_CONFIG_NICKNAME_LENGTH 8 - -#define NVRAM_CONFIG_LANG_JAPANESE 0 -#define NVRAM_CONFIG_LANG_ENGLISH 1 -#define NVRAM_CONFIG_LANG_FRENCH 2 -#define NVRAM_CONFIG_LANG_GERMAN 3 -#define NVRAM_CONFIG_LANG_ITALIAN 4 -#define NVRAM_CONFIG_LANG_SPANISH 5 -#define NVRAM_CONFIG_LANG_CODE_MAX 6 - -typedef struct NVRAMConfigNickname { - u16 name[NVRAM_CONFIG_NICKNAME_LENGTH]; - u16 length; - u16 padding; -} NVRAMConfigNickname; - -typedef enum NVRAMConfigSexCode { - NVRAM_CONFIG_SEX_MALE = 0, - NVRAM_CONFIG_SEX_FEMALE, - NVRAM_CONFIG_SEX_CODE_MAX -} NVRAMConfigSexCode; - -typedef enum NVRAMConfigBloodType { - NVRAM_CONFIG_BLOOD_A = 0, - NVRAM_CONFIG_BLOOD_B, - NVRAM_CONFIG_BLOOD_AB, - NVRAM_CONFIG_BLOOD_O, - NVRAM_CONFIG_BLOOD_TYPE_MAX -} NVRAMConfigBloodType; - -typedef struct NVRAMConfigDate { - u16 year; - u8 month; - u8 day; -} NVRAMConfigDate; - -typedef struct NVRAMConfigOwnerInfo { - NVRAMConfigNickname nickname; - NVRAMConfigSexCode sex; - NVRAMConfigBloodType bloodType; - NVRAMConfigDate birthday; -} NVRAMConfigOwnerInfo; - -typedef struct NVRAMConfigBootGameLog { - u32 gameCode[NVRAM_CONFIG_BOOT_GAME_LOG_NUM]; - u16 top; - u16 num; -} NVRAMConfigBootGameLog; - -typedef struct NVRAMConfigTpCData { - u16 calib_data[6]; -} NVRAMConfigTpCData; - -typedef struct NVRAMConfigData { - u8 version; - u8 timezone; - u16 agbLcd; - s64 rtcOffset; - u32 language; - NVRAMConfigOwnerInfo owner; - NVRAMConfigTpCData tp; - NVRAMConfigBootGameLog bootGameLog; -} NVRAMConfigData; - -typedef struct NVRAMConfig { - NVRAMConfigData ncd; - u16 saveCount; - u16 crc16; -} NVRAMConfig; - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/spi/common/userInfo_ts_200.h b/subprojects/NitroSDK/include/nitro/spi/common/userInfo_ts_200.h deleted file mode 100644 index be9fa768d5..0000000000 --- a/subprojects/NitroSDK/include/nitro/spi/common/userInfo_ts_200.h +++ /dev/null @@ -1,105 +0,0 @@ -#ifndef NITRO_SPI_COMMON_USERINFO_TS_200_H_ -#define NITRO_SPI_COMMON_USERINFO_TS_200_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#define NVRAM_CONFIG_DATA_VERSION 5 - -#define NVRAM_CONFIG_NICKNAME_LENGTH 10 -#define NVRAM_CONFIG_COMMENT_LENGTH 26 -#define NVRAM_CONFIG_FAVORITE_COLOR_MAX 16 - -#define NVRAM_CONFIG_LANG_JAPANESE 0 -#define NVRAM_CONFIG_LANG_ENGLISH 1 -#define NVRAM_CONFIG_LANG_FRENCH 2 -#define NVRAM_CONFIG_LANG_GERMAN 3 -#define NVRAM_CONFIG_LANG_ITALIAN 4 -#define NVRAM_CONFIG_LANG_SPANISH 5 -#define NVRAM_CONFIG_LANG_CODE_MAX 6 - -typedef struct NVRAMConfigDate { - u8 month; - u8 day; -} NVRAMConfigDate; - -typedef struct NVRAMConfigNickname { - u16 str[NVRAM_CONFIG_NICKNAME_LENGTH]; - u8 length; - u8 rsv; -} NVRAMConfigNickname; - -typedef struct NVRAMConfigComment { - u16 str[NVRAM_CONFIG_COMMENT_LENGTH]; - u8 length; - u8 rsv; -} NVRAMConfigComment; - -typedef struct NVRAMConfigOwnerInfo { - u8 favoriteColor : 4; - u8 rsv : 4; - NVRAMConfigDate birthday; - u8 pad; - NVRAMConfigNickname nickname; - NVRAMConfigComment comment; -} NVRAMConfigOwnerInfo; - -typedef struct NVRAMConfigAlarm { - u8 hour; - u8 minute; - u8 second; - u8 pad; - u16 enableWeek : 7; - u16 alarmOn : 1; - u16 rsv : 8; -} NVRAMConfigAlarm; - -typedef struct NVRAMConfigTpCalibData { - u16 raw_x1; - u16 raw_y1; - u8 dx1; - u8 dy1; - u16 raw_x2; - u16 raw_y2; - u8 dx2; - u8 dy2; -} NVRAMConfigTpCalibData; - -typedef struct NVRAMConfigOption { - u16 language : 3; - u16 agbLcd : 1; - u16 detectPullOutCardFlag : 1; - u16 detectPullOutCtrdgFlag : 1; - u16 autoBootFlag : 1; - u16 rsv : 4; - u16 input_favoriteColor : 1; - u16 input_tp : 1; - u16 input_language : 1; - u16 input_rtc : 1; - u16 input_nickname : 1; - u8 timezone; - u8 rtcClockAdjust; - s64 rtcOffset; -} NVRAMConfigOption; - -typedef struct NVRAMConfigData { - u8 version; - u8 pad; - NVRAMConfigOwnerInfo owner; - NVRAMConfigAlarm alarm; - NVRAMConfigTpCalibData tp; - NVRAMConfigOption option; -} NVRAMConfigData; - -typedef struct NVRAMConfig { - NVRAMConfigData ncd; - u16 saveCount; - u16 crc16; -} NVRAMConfig; - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/spi/common/userInfo_ts_300.h b/subprojects/NitroSDK/include/nitro/spi/common/userInfo_ts_300.h deleted file mode 100644 index 94293aee24..0000000000 --- a/subprojects/NitroSDK/include/nitro/spi/common/userInfo_ts_300.h +++ /dev/null @@ -1,149 +0,0 @@ -#ifndef NITRO_SPI_COMMON_USERINFO_TS_300_H_ -#define NITRO_SPI_COMMON_USERINFO_TS_300_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#define NVRAM_CONFIG_DATA_VERSION 5 -#define NVRAM_CONFIG_DATA_EX_VERSION 1 - -#define NVRAM_CONFIG_NICKNAME_LENGTH 10 -#define NVRAM_CONFIG_COMMENT_LENGTH 26 -#define NVRAM_CONFIG_FAVORITE_COLOR_MAX 16 - -#define NVRAM_CONFIG_IPL2_TYPE_ADDRESS 0x001d -#define NVRAM_CONFIG_IPL2_TYPE_SIZE 1 -#define NVRAM_CONFIG_IPL2_TYPE_NORMAL 0xff -#define NVRAM_CONFIG_IPL2_TYPE_EX_MASK 0x50 - -#define NVRAM_CONFIG_LANG_JAPANESE 0 -#define NVRAM_CONFIG_LANG_ENGLISH 1 -#define NVRAM_CONFIG_LANG_FRENCH 2 -#define NVRAM_CONFIG_LANG_GERMAN 3 -#define NVRAM_CONFIG_LANG_ITALIAN 4 -#define NVRAM_CONFIG_LANG_SPANISH 5 -#define NVRAM_CONFIG_LANG_CHINESE 6 -#define NVRAM_CONFIG_LANG_HANGUL 7 -#define NVRAM_CONFIG_LANG_CODE_MAX 8 - -#define NVRAM_CONFIG_LANG_BITMAP_NORMAL ((0x0001 << NVRAM_CONFIG_LANG_JAPANESE) \ - | (0x0001 << NVRAM_CONFIG_LANG_ENGLISH) \ - | (0x0001 << NVRAM_CONFIG_LANG_FRENCH) \ - | (0x0001 << NVRAM_CONFIG_LANG_GERMAN) \ - | (0x0001 << NVRAM_CONFIG_LANG_ITALIAN) \ - | (0x0001 << NVRAM_CONFIG_LANG_SPANISH)) - -#define NVRAM_CONFIG_LANG_BITMAP_CHINESE ((0x0001 << NVRAM_CONFIG_LANG_ENGLISH) \ - | (0x0001 << NVRAM_CONFIG_LANG_FRENCH) \ - | (0x0001 << NVRAM_CONFIG_LANG_GERMAN) \ - | (0x0001 << NVRAM_CONFIG_LANG_ITALIAN) \ - | (0x0001 << NVRAM_CONFIG_LANG_SPANISH) \ - | (0x0001 << NVRAM_CONFIG_LANG_CHINESE)) - -#define NVRAM_CONFIG_LANG_BITMAP_HANGUL ((0x0001 << NVRAM_CONFIG_LANG_JAPANESE) \ - | (0x0001 << NVRAM_CONFIG_LANG_ENGLISH) \ - | (0x0001 << NVRAM_CONFIG_LANG_FRENCH) \ - | (0x0001 << NVRAM_CONFIG_LANG_GERMAN) \ - | (0x0001 << NVRAM_CONFIG_LANG_SPANISH) \ - | (0x0001 << NVRAM_CONFIG_LANG_HANGUL)) - -typedef struct NVRAMConfigDate { - u8 month; - u8 day; -} NVRAMConfigDate; - -typedef struct NVRAMConfigNickname { - u16 str[NVRAM_CONFIG_NICKNAME_LENGTH]; - u8 length; - u8 rsv; -} NVRAMConfigNickname; - -typedef struct NVRAMConfigComment { - u16 str[NVRAM_CONFIG_COMMENT_LENGTH]; - u8 length; - u8 rsv; -} NVRAMConfigComment; - -typedef struct NVRAMConfigOwnerInfo { - u8 favoriteColor : 4; - u8 rsv : 4; - NVRAMConfigDate birthday; - u8 pad; - NVRAMConfigNickname nickname; - NVRAMConfigComment comment; -} NVRAMConfigOwnerInfo; - -typedef struct NVRAMConfigAlarm { - u8 hour; - u8 minute; - u8 second; - u8 pad; - u16 enableWeek : 7; - u16 alarmOn : 1; - u16 rsv : 8; -} NVRAMConfigAlarm; - -typedef struct NVRAMConfigTpCalibData { - u16 raw_x1; - u16 raw_y1; - u8 dx1; - u8 dy1; - u16 raw_x2; - u16 raw_y2; - u8 dx2; - u8 dy2; -} NVRAMConfigTpCalibData; - -typedef struct NVRAMConfigOption { - u16 language : 3; - u16 agbLcd : 1; - u16 detectPullOutCardFlag : 1; - u16 detectPullOutCtrdgFlag : 1; - u16 autoBootFlag : 1; - u16 rsv : 4; - u16 input_favoriteColor : 1; - u16 input_tp : 1; - u16 input_language : 1; - u16 input_rtc : 1; - u16 input_nickname : 1; - u8 timezone; - u8 rtcClockAdjust; - s64 rtcOffset; -} NVRAMConfigOption; - -typedef struct NVRAMConfigData { - u8 version; - u8 pad; - NVRAMConfigOwnerInfo owner; - NVRAMConfigAlarm alarm; - NVRAMConfigTpCalibData tp; - NVRAMConfigOption option; -} NVRAMConfigData; - -typedef struct NVRAMConfig { - NVRAMConfigData ncd; - u16 saveCount; - u16 crc16; -} NVRAMConfig; - -typedef struct NVRAMConfigDataEx { - u8 version; - u8 language; - u16 valid_language_bitmap; - u8 padding[256 - sizeof(NVRAMConfigData) - 4 - 4 - 2]; -} NVRAMConfigDataEx; - -typedef struct NVRAMConfigEx { - NVRAMConfigData ncd; - u16 saveCount; - u16 crc16; - NVRAMConfigDataEx ncd_ex; - u16 crc16_ex; -} NVRAMConfigEx; - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/std.h b/subprojects/NitroSDK/include/nitro/std.h deleted file mode 100644 index f4325ee697..0000000000 --- a/subprojects/NitroSDK/include/nitro/std.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef NITRO_STD_H_ -#define NITRO_STD_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/std/string.h b/subprojects/NitroSDK/include/nitro/std/string.h deleted file mode 100644 index 2960692d23..0000000000 --- a/subprojects/NitroSDK/include/nitro/std/string.h +++ /dev/null @@ -1,54 +0,0 @@ -#ifndef NITRO_STD_STRING_H_ -#define NITRO_STD_STRING_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -#define STD_StrCpy STD_CopyString -#define STD_StrLCpy STD_CopyLString -#define STD_StrStr STD_SearchString -#define STD_StrLen STD_GetStringLength -#define STD_StrCat STD_ConcatenateString -#define STD_StrCmp STD_CompareString -#define STD_StrNCmp STD_CompareNString -#define STD_StrLCmp STD_CompareLString - -extern char * STD_CopyString(char * destp, const char * srcp); - -extern int STD_CopyLStringZeroFill(char * destp, const char * srcp, int n); - -extern int STD_CopyLString(char * destp, const char * srcp, int siz); - -extern char * STD_SearchString(const char * srcp, const char * str); - -extern int STD_GetStringLength(const char * str); - -extern char * STD_ConcatenateString(char * str1, const char * str2); - -extern int STD_CompareString(const char * str1, const char * str2); - -extern int STD_CompareNString(const char * str1, const char * str2, int len); - -extern int STD_CompareLString(const char * str1, const char * str2); - -extern int STD_TSScanf(const char * src, const char * fmt, ...); - -extern int STD_TVSScanf(const char * src, const char * fmt, va_list vlist); - -extern int STD_TSPrintf(char * dst, const char * fmt, ...); - -extern int STD_TVSPrintf(char * dst, const char * fmt, va_list vlist); - -extern int STD_TSNPrintf(char * dst, size_t len, const char * fmt, ...); - -extern int STD_TVSNPrintf(char * dst, size_t len, const char * fmt, va_list vlist); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/std/unicode.h b/subprojects/NitroSDK/include/nitro/std/unicode.h deleted file mode 100644 index 5bf37a408b..0000000000 --- a/subprojects/NitroSDK/include/nitro/std/unicode.h +++ /dev/null @@ -1,62 +0,0 @@ -#ifndef NITRO_STD_UNICODE_H_ -#define NITRO_STD_UNICODE_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum STDResult { - STD_RESULT_SUCCESS, - STD_RESULT_ERROR, - STD_RESULT_INVALID_PARAM, - STD_RESULT_CONVERSION_FAILED -} STDResult; - -typedef STDResult (* STDConvertUnicodeCallback) (u16 * dst, int * dst_len, const char * src, - int * src_len); -typedef STDResult (* STDConvertSjisCallback) (char * dst, int * dst_len, const u16 * src, int * src_len); - -SDK_INLINE BOOL STD_IsSjisLeadByte (int c) -{ - return ((unsigned int)((((u8)c) ^ 0x20) - 0xA1) < 0x3C); -} - -SDK_INLINE BOOL STD_IsSjisTrailByte (int c) -{ - return (c != 0x7F) && ((u8)(c - 0x40) <= (0xFC - 0x40)); -} - -SDK_INLINE BOOL STD_IsSjisCharacter (const char * s) -{ - return STD_IsSjisLeadByte(s[0]) && STD_IsSjisTrailByte(s[1]); -} - -STDResult STD_ConvertStringSjisToUnicode(u16 * dst, int * dst_len, - const char * src, int * src_len, - STDConvertUnicodeCallback callback); - -SDK_INLINE int STD_ConvertCharSjisToUnicode (u16 * dst, const char * src) -{ - int src_len = STD_IsSjisCharacter(src) ? 2 : 1; - int dst_len = 1; - STDResult ret = STD_ConvertStringSjisToUnicode(dst, &dst_len, src, &src_len, NULL); - return (ret == STD_RESULT_SUCCESS) ? dst_len : -1; -} - -STDResult STD_ConvertStringUnicodeToSjis(char * dst, int * dst_len, - const u16 * src, int * src_len, - STDConvertSjisCallback callback); - -SDK_INLINE int STD_ConvertCharUnicodeToSjis (char * dst, u16 src) -{ - int src_len = 1; - int dst_len = 2; - STDResult ret = STD_ConvertStringUnicodeToSjis(dst, &dst_len, &src, &src_len, NULL); - return (ret == STD_RESULT_SUCCESS) ? dst_len : -1; -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/types.h b/subprojects/NitroSDK/include/nitro/types.h deleted file mode 100644 index ef579a39a3..0000000000 --- a/subprojects/NitroSDK/include/nitro/types.h +++ /dev/null @@ -1,112 +0,0 @@ -#ifndef NITRO_TYPES_H_ -#define NITRO_TYPES_H_ - -#ifdef __MWERKS__ -#pragma enumsalwaysint on -#endif - -#define SDK_LITTLE_ENDIAN -#define SDK_IS_LITTLE_ENDIAN 1 -#define SDK_IS_BIG_ENDIAN 0 - -#ifdef SDK_ASM -#else - -#ifdef __cplusplus -extern "C" { -#endif - -typedef unsigned char u8; -typedef unsigned short int u16; -typedef unsigned long u32; - -#ifdef SDK_HAS_NO_LONG_LONG_INT_ -typedef unsigned __int64 u64; -#else -typedef unsigned long long int u64; -#endif - -typedef signed char s8; -typedef signed short int s16; -typedef signed long s32; - -#ifdef SDK_HAS_NO_LONG_LONG_INT_ -typedef signed __int64 s64; -#else -typedef signed long long int s64; -#endif - -typedef volatile u8 vu8; -typedef volatile u16 vu16; -typedef volatile u32 vu32; -typedef volatile u64 vu64; - -typedef volatile s8 vs8; -typedef volatile s16 vs16; -typedef volatile s32 vs32; -typedef volatile s64 vs64; - -typedef float f32; -typedef volatile f32 vf32; - -typedef u8 REGType8; -typedef u16 REGType16; -typedef u32 REGType32; -typedef u64 REGType64; - -typedef vu8 REGType8v; -typedef vu16 REGType16v; -typedef vu32 REGType32v; -typedef vu64 REGType64v; - -#ifndef SDK_BOOL_ALREADY_DEFINED_ -#ifndef BOOL -typedef int BOOL; -#endif -#endif - -#ifndef TRUE - -#define TRUE 1 -#endif - -#ifndef FALSE -#define FALSE 0 -#endif - -// already defined in an MSL header -#ifndef NULL -#ifdef __cplusplus -#define NULL 0 -#else -#define NULL ((void *)0) -#endif -#endif - -#if defined(SDK_CW) || defined(__MWERKS__) -#ifndef ATTRIBUTE_ALIGN -#define ATTRIBUTE_ALIGN(num) __attribute__ ((aligned(num))) -#endif -#endif - -#if defined(SDK_CW) || defined(__MWERKS__) -#define SDK_WEAK_SYMBOL __declspec(weak) -#elif defined(SDK_PRODG) -#define SDK_WEAK_SYMBOL -#endif - -#ifdef SDK_CW_FORCE_EXPORT_SUPPORT -#define SDK_FORCE_EXPORT __declspec(force_export) -#else -#define SDK_FORCE_EXPORT -#endif - -#ifdef __cplusplus -} -#endif -#endif - -#define SDK_INLINE static inline -#define SDK_DECL_INLINE static - -#endif diff --git a/subprojects/NitroSDK/include/nitro/utest.h b/subprojects/NitroSDK/include/nitro/utest.h deleted file mode 100644 index 499eb3f95b..0000000000 --- a/subprojects/NitroSDK/include/nitro/utest.h +++ /dev/null @@ -1,124 +0,0 @@ -#ifndef NITRO_UTEST_H__ -#define NITRO_UTEST_H__ -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef SDK_ARM9 - -#include -#include - -typedef void (* UTiCallback) (void); - -typedef struct UTiModule_ { - char * filename; - char * testname; - UTiCallback callback; - UTiCallback callback_begin; - UTiCallback callback_end; -} UTiModule; - -typedef enum UTiResult_ { - UT_RESULT_OK = 1, - UT_RESULT_NG = 0, - UT_RESULT_UNTESTED = -1 -} UTiResult; - -extern UTiResult UTi_Result; - -static inline void UTi_SetResult (UTiResult r) -{ - UTi_Result = r; -} -static inline UTiResult UTi_GetResult (void) -{ - return UTi_Result; -} - -void UTi_Main(int, UTiModule *); -void UTi_Printf(const char *, ...); -void UTi_PrintfWithFloat(const char *, ...); -void UTi_PutString(const char * str); -void UTi_ClearMessage(void); -char * UTi_GetMessage(void); -void UTi_SetMessage(const char *, int, const char *, ...); -void UTi_SetMessageWithFloat(const char *, int, const char *, ...); - -#define UT_ASSERTMESSAGE_MAXLEN 1024 - -void UTi_Assert(const char *, int, const char *, int); -void UTi_AssertEq(const char *, int, const char *, int, const char *, int); -void UTi_AssertNe(const char *, int, const char *, int, const char *, int); - -#define UT_Assert(ex) UTi_Assert(__FILE__, __LINE__, #ex, (int)(ex)) -#define UT_AssertEq(ex1, ex2) UTi_AssertEq(__FILE__, __LINE__, #ex1, (int)(ex1), #ex2, (int)(ex2)) -#define UT_AssertNe(ex1, ex2) UTi_AssertNe(__FILE__, __LINE__, #ex1, (int)(ex1), #ex2, (int)(ex2)) - -void UTi_AssertMemEq(const char * file, int line, - const char * exp_str1, const void * exp_ptr1, - const char * exp_str2, const void * exp_ptr2, int exp_len); -void UTi_AssertMemNe(const char * file, int line, - const char * exp_str1, const void * exp_ptr1, - const char * exp_str2, const void * exp_ptr2, int exp_len); - -#define UT_AssertMemPtrEq(ex1, ex2, len) \ - UTi_AssertMemEq(__FILE__, __LINE__, #ex1, (const void *)(ex1), #ex2, (const void *)(ex2), (int)(len)) -#define UT_AssertMemPtrNe(ex1, ex2, len) \ - UTi_AssertMemNe(__FILE__, __LINE__, #ex1, (const void *)(ex1), #ex2, (const void *)(ex2), (int)(len)) -#define UT_AssertMemEq(ex1, ex2) \ - UTi_AssertMemEq(__FILE__, __LINE__, #ex1, (const void *)&(ex1), #ex2, (const void *)&(ex2), sizeof(ex1)) -#define UT_AssertMemNe(ex1, ex2) \ - UTi_AssertMemNe(__FILE__, __LINE__, #ex1, (const void *)&(ex1), #ex2, (const void *)&(ex2), sizeof(ex1)) - -void UTi_AssertAsserted(const char *, int, const char *, int); -void UTi_AssertNotAsserted(const char *, int, const char *, int); - -int UTi_MemCmp(const void * ptr1, const void * ptr2, int len); - -#ifdef SDK_DEBUG -extern OSContext UTi_AssertContext; -extern void (* OSi_FuncTerminate) (void); -void UTi_Terminate(void); - -#define UT_AssertAsserted(ex) \ - { \ - int __n; \ - OSi_FuncTerminate = UTi_Terminate; \ - __n = OS_SaveContext(&UTi_AssertContext); \ - if (!__n) (void) (ex); \ - UTi_AssertAsserted(__FILE__, __LINE__, #ex, __n); \ - OSi_FuncTerminate = OS_Terminate; \ - } -#define UT_AssertNotAsserted(ex) \ - { \ - int __n; \ - OSi_FuncTerminate = UTi_Terminate; \ - __n = OS_SaveContext(&UTi_AssertContext); \ - if (!__n) (void) (ex); \ - UTi_AssertNotAsserted(__FILE__, __LINE__, #ex, __n); \ - OSi_FuncTerminate = OS_Terminate; \ - } -#else -#define UT_AssertAsserted(ex) ((void)0) -#define UT_AssertNotAsserted(ex) ((void)0) -#endif - -#else - -#define UT_Assert(ex) ((void)0) -#define UT_AssertEq(ex1, ex2) ((void)0) -#define UT_AssertNe(ex1, ex2) ((void)0) -#define UT_AssertMemPtrEq(ex1, ex2, len) ((void)0) -#define UT_AssertMemPtrNe(ex1, ex2, len) ((void)0) -#define UT_AssertMemEq(ex1, ex2) ((void)0) -#define UT_AssertMemNe(ex1, ex2) ((void)0) -#define UT_AssertAsserted(ex) ((void)0) -#define UT_AssertNotAsserted(ex) ((void)0) - -#endif - -#ifdef __cplusplus -} -#endif -#endif diff --git a/subprojects/NitroSDK/include/nitro/version.h b/subprojects/NitroSDK/include/nitro/version.h deleted file mode 100644 index ab804d364d..0000000000 --- a/subprojects/NitroSDK/include/nitro/version.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef NITROSDK_VERSION_H_ -#define NITROSDK_VERSION_H_ -#define SDK_VERSION_DATE 20080118 -#define SDK_VERSION_TIME 1051 -#define SDK_VERSION_MAJOR 4 -#define SDK_VERSION_MINOR 2 -#define SDK_VERSION_RELSTEP 30001 -#define SDK_BUILDVER_CW_CC 3.0 -#define SDK_BUILDVER_CW_LD 2.0 -#define SDK_BUILDNUM_CW_CC 127 -#define SDK_BUILDNUM_CW_LD 85 -#if 0 -NITRO_VERSION_DATE_AND_TIME = 08011 8 1051 - NITRO_VERSION_DATE = 20080118 - NITRO_VERSION_TIME = 1051 - NITRO_VERSION_MAJOR = 4 - NITRO_VERSION_MINOR = 2 - NITRO_VERSION_RELSTEP = 30001 - NITRO_VERSION_BUILDVER_CW_CC = 3.0 - NITRO_VERSION_BUILDVER_CW_LD = 2.0 - NITRO_VERSION_BUILDNUM_CW_CC = 127 - NITRO_VERSION_BUILDNUM_CW_LD = 85 -# -# RELSTEP PR1=10100 PR2=10200 ... -# RC1 =20100 RC2=20200 ... -# RELEASE =30000 -# -#endif - -#ifndef SDK_VERSION_NUMBER -#define SDK_VERSION_NUMBER(major, minor, relstep) \ - (((major) << 24) | ((minor) << 16) | ((relstep) << 0)) -#define SDK_CURRENT_VERSION_NUMBER \ - SDK_VERSION_NUMBER(SDK_VERSION_MAJOR, SDK_VERSION_MINOR, SDK_VERSION_RELSTEP) -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/version_begin.h b/subprojects/NitroSDK/include/nitro/version_begin.h deleted file mode 100644 index a98a9609d2..0000000000 --- a/subprojects/NitroSDK/include/nitro/version_begin.h +++ /dev/null @@ -1,9 +0,0 @@ -#include - -#if defined(SDK_CW) || defined(__MWERKS__) -#pragma section VERSION begin -#elif defined(SDK_ADS) -TO BE DEFINED -#elif defined(SDK_GCC) -TO BE DEFINED -#endif diff --git a/subprojects/NitroSDK/include/nitro/version_end.h b/subprojects/NitroSDK/include/nitro/version_end.h deleted file mode 100644 index 4fa7d8179a..0000000000 --- a/subprojects/NitroSDK/include/nitro/version_end.h +++ /dev/null @@ -1,7 +0,0 @@ -#if defined(SDK_CW) || defined(__MWERKS__) -#pragma section VERSION end -#elif defined(SDK_ADS) -TO BE DEFINED -#elif defined(SDK_GCC) -TO BE DEFINED -#endif diff --git a/subprojects/NitroSDK/include/nitro/vib.h b/subprojects/NitroSDK/include/nitro/vib.h deleted file mode 100644 index 5f4862d45c..0000000000 --- a/subprojects/NitroSDK/include/nitro/vib.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef NITROSDK_VIB_H_ -#define NITROSDK_VIB_H_ - -#ifdef SDK_ARM9 -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/vib/vib_system.h b/subprojects/NitroSDK/include/nitro/vib/vib_system.h deleted file mode 100644 index cc37151107..0000000000 --- a/subprojects/NitroSDK/include/nitro/vib/vib_system.h +++ /dev/null @@ -1,44 +0,0 @@ -#ifndef PULSE_VIB_H -#define PULSE_VIB_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define VIB_PULSE_NUM_MAX 6 - -#define VIB_ON_TIME_MAX 15 - -#define VIB_REST_TIME_MIN 15 - -typedef struct { - u32 pulse_num; - u32 rest_time; - u32 on_time[VIB_PULSE_NUM_MAX]; - u32 off_time[VIB_PULSE_NUM_MAX]; - u32 repeat_num; -} VIBPulseState; - -typedef void (* VIBCartridgePulloutCallback) (void); - -extern BOOL VIB_Init(void); - -extern void VIB_End(void); - -extern void VIB_StartPulse(const VIBPulseState * state); - -extern void VIB_StopPulse(void); - -extern BOOL VIB_IsExecuting(void); - -extern void VIB_SetCartridgePulloutCallback(VIBCartridgePulloutCallback func); - -extern BOOL VIB_IsCartridgeEnabled(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/wbt.h b/subprojects/NitroSDK/include/nitro/wbt.h deleted file mode 100644 index cc764ee206..0000000000 --- a/subprojects/NitroSDK/include/nitro/wbt.h +++ /dev/null @@ -1,231 +0,0 @@ -#ifndef NITRO_WBT_H__ -#define NITRO_WBT_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -typedef void (* WBTCallback) (void *); - -#define WBT_NUM_MAX_BLOCK_INFO_ID 1000 - -#define WBT_BLOCK_ID_MIN WBT_NUM_MAX_BLOCK_INFO_ID - -#define WBT_PACKET_SIZE_MIN 14 - -#define WBT_USER_ID_LEN 32 - -#define WBT_SIZE_USER_DATA 9 - -typedef s16 WBTResult; -#define WBT_RESULT_SUCCESS 0 -#define WBT_RESULT_ERROR_TIMEOUT 1 -#define WBT_RESULT_ERROR_UNKNOWN_USER_COMMAND 2 -#define WBT_RESULT_ERROR_UNKNOWN_PACKET_COMMAND 3 -#define WBT_RESULT_ERROR_PARSE_INVALID 4 -#define WBT_RESULT_ERROR_RECV_BUFFER_OVERFLOW 5 -#define WBT_RESULT_ERROR_SAVE_FAILURE 6 - -typedef enum { - WBT_CMD_REQ_NONE = 0, - WBT_CMD_REQ_WAIT, - WBT_CMD_REQ_SYNC, - WBT_CMD_RES_SYNC, - WBT_CMD_REQ_GET_BLOCK, - WBT_CMD_RES_GET_BLOCK, - WBT_CMD_REQ_GET_BLOCKINFO, - WBT_CMD_RES_GET_BLOCKINFO, - WBT_CMD_REQ_GET_BLOCK_DONE, - WBT_CMD_RES_GET_BLOCK_DONE, - WBT_CMD_REQ_USER_DATA, - WBT_CMD_RES_USER_DATA, - WBT_CMD_SYSTEM_CALLBACK, - WBT_CMD_PREPARE_SEND_DATA, - WBT_CMD_REQ_ERROR, - WBT_CMD_RES_ERROR, - WBT_CMD_CANCEL -} WBTCommandType; - -#define WBT_PACKET_BITMAP_SIZE(block_size, packet_size) \ - (((((block_size) + ((packet_size) - WBT_PACKET_SIZE_MIN) - 1) / ((packet_size) - WBT_PACKET_SIZE_MIN)) + 31) / sizeof(u32)) * sizeof(u32) - -#define WBT_NUM_OF_AID (WBT_AID_CHILD_LAST + 1) -#define WBT_AID_PARENT 0 -#define WBT_AID_CHILD_FIRST 1 -#define WBT_AID_CHILD_LAST (WBT_AID_CHILD_FIRST + 15 - 1) -#define WBT_AIDBIT_ALL ((WBTAidBitmap)0xffff) -#define WBT_AIDBIT_PARENT ((WBTAidBitmap)1) -#define WBT_AIDBIT_CHILD_ALL ((WBTAidBitmap)0xfffe) -#define WBT_AIDBIT_CHILD_1 ((WBTAidBitmap)(1 << 1)) -#define WBT_AIDBIT_CHILD_2 ((WBTAidBitmap)(1 << 2)) -#define WBT_AIDBIT_CHILD_3 ((WBTAidBitmap)(1 << 3)) -#define WBT_AIDBIT_CHILD_4 ((WBTAidBitmap)(1 << 4)) -#define WBT_AIDBIT_CHILD_5 ((WBTAidBitmap)(1 << 5)) -#define WBT_AIDBIT_CHILD_6 ((WBTAidBitmap)(1 << 6)) -#define WBT_AIDBIT_CHILD_7 ((WBTAidBitmap)(1 << 7)) -#define WBT_AIDBIT_CHILD_8 ((WBTAidBitmap)(1 << 8)) -#define WBT_AIDBIT_CHILD_9 ((WBTAidBitmap)(1 << 9)) -#define WBT_AIDBIT_CHILD_10 ((WBTAidBitmap)(1 << 10)) -#define WBT_AIDBIT_CHILD_11 ((WBTAidBitmap)(1 << 11)) -#define WBT_AIDBIT_CHILD_12 ((WBTAidBitmap)(1 << 12)) -#define WBT_AIDBIT_CHILD_13 ((WBTAidBitmap)(1 << 13)) -#define WBT_AIDBIT_CHILD_14 ((WBTAidBitmap)(1 << 14)) -#define WBT_AIDBIT_CHILD_15 ((WBTAidBitmap)(1 << 15)) - -typedef u8 WBTPacketCommand; -typedef u8 WBTCommandCounter; -typedef u32 WBTBlockId; -typedef u16 WBTAidBitmap; -typedef s8 WBTPermission; -typedef s32 WBTBlockSeqNo; -typedef s16 WBTBlockNumEntry; -typedef s16 WBTPacketSize; -typedef s32 WBTBlockSize; -#define WBT_BLOCK_LIST_TYPE_COMMON 0 -#define WBT_BLOCK_LIST_TYPE_USER 1 -#define WBT_SIZE_COMMAND sizeof(WBTPacketCommand) -#define WBT_SIZE_TARGET_BITMAP sizeof(WBTAidBitmap) -#define WBT_SIZE_BLOCK_ID sizeof(WBTBlockId) -#define WBT_SIZE_BLOCK_SEQ_NO sizeof(WBTBlockseqNo) -#define WBT_SIZE_BLOCK_NUM_ENTRY sizeof(WBTBlockNumEntry) -#define WBT_SIZE_PERMISSION sizeof(WBTPermission) - -typedef struct { - u32 id; - s32 block_size; - u8 user_id[WBT_USER_ID_LEN]; -} WBTBlockInfo; - -typedef struct WBTBlockInfoList { - WBTBlockInfo data_info; - struct WBTBlockInfoList * next; - void * data_ptr; - WBTAidBitmap permission_bmp; - u16 block_type; -} WBTBlockInfoList; - -typedef struct { - WBTBlockInfo * block_info[WBT_NUM_OF_AID]; -} WBTBlockInfoTable; - -typedef struct { - u32 * packet_bitmap[WBT_NUM_OF_AID]; -} WBTPacketBitmapTable; - -typedef struct { - u8 * recv_buf[WBT_NUM_OF_AID]; -} WBTRecvBufTable; - -typedef struct { - WBTBlockNumEntry num_of_list; - s16 peer_packet_size; - s16 my_packet_size; - u16 pad1; - u32 padd2[2]; -} WBTRequestSyncCallback; - -typedef struct { - u32 block_id; -} WBTGetBlockDoneCallback; - -typedef struct { - u32 block_id; - s32 block_seq_no; - void * data_ptr; - s16 own_packet_size; - u16 padd; -} WBTPrepareSendDataCallback; - -typedef struct { - u8 data[WBT_SIZE_USER_DATA]; - u8 size; - u8 padd[3]; -} WBTRecvUserDataCallback; - -typedef struct { - u32 block_id; - u32 recv_data_size; - WBTRecvBufTable recv_buf_table; - WBTPacketBitmapTable pkt_bmp_table; -} WBTGetBlockCallback; - -typedef struct { - WBTCommandType command; - WBTCommandType event; - u16 target_bmp; - u16 peer_bmp; - WBTCommandCounter my_cmd_counter; - WBTCommandCounter peer_cmd_counter; - WBTResult result; - WBTCallback callback; - union { - WBTRequestSyncCallback sync; - WBTGetBlockDoneCallback blockdone; - WBTPrepareSendDataCallback prepare_send_data; - WBTRecvUserDataCallback user_data; - WBTGetBlockCallback get; - }; -} WBTCommand; - -void WBT_InitParent(int send_packet_size, int recv_packet_size, WBTCallback callback); - -void WBT_InitChild(WBTCallback callback); - -void WBT_End(void); - -int WBT_AidbitmapToAid(u16 abmp); - -static inline u16 WBT_AidToAidbitmap (int aid) -{ - return (u16)(1 << aid); -} - -int WBT_GetOwnAid(void); - -int WBT_CalcPacketbitmapSize(int block_size); - -BOOL WBT_GetCurrentDownloadProgress(u32 block_id, int aid, int * current_count, int * total_count); - -int WBT_NumOfRegisteredBlock(void); - -BOOL WBT_RegisterBlock(WBTBlockInfoList * block_info_list, u32 block_id, - const void * user_id, const void * data_ptr, int data_size, - u16 permission_bmp); - -WBTBlockInfoList * WBT_UnregisterBlock(u32 block_id); - -void WBT_PrintBTList(void); - -BOOL WBT_SetPacketSize(int send_packet_size, int recv_packet_size); - -int WBT_MpParentSendHook(void * sendbuf, int send_size); - -void WBT_MpParentRecvHook(const void * recv_buf, int recv_size, int aid); - -void WBT_SetOwnAid(int aid); - -int WBT_MpChildSendHook(void * sendbuf, int send_size); - -void WBT_MpChildRecvHook(const void * recv_buf, int recv_size); - -BOOL WBT_RequestSync(u16 target, WBTCallback callback); - -BOOL WBT_GetBlockInfo(u16 target, int index, - WBTBlockInfoTable * block_info_table, WBTCallback callback); - -BOOL WBT_GetBlock(u16 target, u32 block_id, - WBTRecvBufTable * recv_buf_table, u32 recv_size, - WBTPacketBitmapTable * p_bmp_table, WBTCallback callback); - -BOOL WBT_PutUserData(u16 target, const void * user_data, int size, WBTCallback callback); - -BOOL WBT_CancelCurrentCommand(u16 target); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/wbt/context.h b/subprojects/NitroSDK/include/nitro/wbt/context.h deleted file mode 100644 index 7376297853..0000000000 --- a/subprojects/NitroSDK/include/nitro/wbt/context.h +++ /dev/null @@ -1,351 +0,0 @@ -#ifndef NITRO_WBT_CONTEXT_H_ -#define NITRO_WBT_CONTEXT_H_ - -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct WBTPacketRequestSyncFormat { - PLATFORM_LE16 peer_packet; - PLATFORM_LE16 own_packet; -} PLATFORM_STRUCT_PADDING_FOOTER WBTPacketRequestSyncFormat; - -typedef struct WBTPacketResponseSyncFormat { - PLATFORM_LE16 block_total; - PLATFORM_LE16 peer_packet; - PLATFORM_LE16 own_packet; -} PLATFORM_STRUCT_PADDING_FOOTER WBTPacketResponseSyncFormat; - -typedef struct WBTPacketRequestUserDataFormat { - PLATFORM_LE8 length; - PLATFORM_LE8 buffer[WBT_SIZE_USER_DATA]; -} WBTPacketRequestUserDataFormat; - -typedef struct WBTPacketRequestGetBlockDoneFormat { - PLATFORM_LE32 id; -} WBTPacketRequestGetBlockDoneFormat; - -typedef struct WBTPacketResponseGetBlockDoneFormat { - PLATFORM_LE32 id; -} WBTPacketResponseGetBlockDoneFormat; - -typedef struct WBTPacketRequestGetBlockFormat { - PLATFORM_LE32 id; - PLATFORM_LE32 index; -} WBTPacketRequestGetBlockFormat; - -typedef struct WBTPacketResponseGetBlockFormat { - PLATFORM_LE32 id; - PLATFORM_LE32 index; -} WBTPacketResponseGetBlockFormat; - -typedef struct WBTPacketHeaderFormat { - PLATFORM_LE8 command; - PLATFORM_LE16 bitmap; - PLATFORM_LE8 counter; -} PLATFORM_STRUCT_PADDING_FOOTER WBTPacketHeaderFormat; - -typedef struct WBTPacketFormat { - WBTPacketHeaderFormat header; - - union { - u8 argument[10]; - WBTPacketRequestSyncFormat req_sync; - WBTPacketResponseSyncFormat res_sync; - WBTPacketRequestUserDataFormat req_userdata; - WBTPacketRequestGetBlockDoneFormat req_getblock_done; - WBTPacketResponseGetBlockDoneFormat res_getblock_done; - WBTPacketRequestGetBlockFormat req_getblock; - WBTPacketResponseGetBlockFormat res_getblock; - u8 for_compiler[10]; - } PLATFORM_STRUCT_PADDING_FOOTER; -} PLATFORM_STRUCT_PADDING_FOOTER WBTPacketFormat; - -PLATFORM_COMPILER_ASSERT(sizeof(WBTPacketHeaderFormat) == 4); -PLATFORM_COMPILER_ASSERT(sizeof(WBTPacketRequestSyncFormat) == 4); -PLATFORM_COMPILER_ASSERT(sizeof(WBTPacketResponseSyncFormat) == 6); -PLATFORM_COMPILER_ASSERT(sizeof(WBTPacketRequestUserDataFormat) == 10); -PLATFORM_COMPILER_ASSERT(sizeof(WBTPacketRequestGetBlockDoneFormat) == 4); -PLATFORM_COMPILER_ASSERT(sizeof(WBTPacketResponseGetBlockDoneFormat) == 4); -PLATFORM_COMPILER_ASSERT(sizeof(WBTPacketRequestGetBlockFormat) == 8); -PLATFORM_COMPILER_ASSERT(sizeof(WBTPacketResponseGetBlockFormat) == 8); -PLATFORM_COMPILER_ASSERT(sizeof(WBTPacketFormat) == 14); - -struct WBTContext; -struct WBTCommandList; - -typedef void (* WBTEventCallback)(void *, WBTCommand *); - -typedef struct WBTCommandList { - struct WBTCommandList * next; - WBTCommand command; - WBTEventCallback callback; -} WBTCommandList; - -typedef struct WBTRecvToken { - u8 token_command; - u8 token_peer_cmd_counter; - u8 last_peer_cmd_counter; - - u8 dummy[1]; - - u32 token_block_id; - s32 token_block_seq_no; -} WBTRecvToken; - -typedef struct WBTPacketBitmap { - s32 length; - void * buffer; - s32 count; - s32 total; - u32 * bitmap; - s32 current; -} WBTPacketBitmap; - -typedef struct WBTContext { - WBTCommandList * command; - WBTCommandList * command_pool; - - void * userdata; - WBTEventCallback callback; - - WBTCommand system_cmd; - - struct { - WBTRecvToken recv_token; - WBTPacketBitmap pkt_bmp; - } peer_param[16]; - - int my_aid; - s16 peer_data_packet_size; - s16 my_data_packet_size; - WBTBlockInfoList * list; - u8 my_command_counter; - u8 padding[3]; - int last_target_aid; - - u32 last_block_id; - s32 last_seq_no_1; - s32 last_seq_no_2; - - int req_bitmap; - - u32 binfo_bitmap[16][MATH_ROUNDUP(sizeof(WBTBlockInfo), sizeof(u32)) / sizeof(u32)]; -} WBTContext; - -void WBT_InitContext(WBTContext * work, void * userdata, WBTEventCallback callback); - -PLATFORM_ATTRIBUTE_INLINE -void WBT_StartParent (WBTContext * work, int own, int peer) -{ - SDK_MIN_ASSERT(own, WBT_PACKET_SIZE_MIN); - SDK_MIN_ASSERT(peer, WBT_PACKET_SIZE_MIN); - work->my_aid = 0; - work->my_data_packet_size = (s16)(own - WBT_PACKET_SIZE_MIN); - work->peer_data_packet_size = (s16)(peer - WBT_PACKET_SIZE_MIN); -} - -PLATFORM_ATTRIBUTE_INLINE -void WBT_StartChild (WBTContext * work, int aid) -{ - work->my_data_packet_size = 0; - work->peer_data_packet_size = 0; - work->my_aid = aid; -} - -void WBT_ResetContext(WBTContext * work, WBTEventCallback callback); - -int WBT_CallPacketSendHook(WBTContext * work, void * buffer, int length, BOOL is_parent); - -void WBT_CallPacketRecvHook(WBTContext * work, int aid, const void * buffer, int length); - -PLATFORM_ATTRIBUTE_INLINE -void * WBT_GetUserData (const WBTContext * work) -{ - return work->userdata; -} - -PLATFORM_ATTRIBUTE_INLINE -int WBT_GetAid (const WBTContext * work) -{ - return work->my_aid; -} - -PLATFORM_ATTRIBUTE_INLINE -int WBT_GetOwnPacketLength (const WBTContext * work) -{ - return work->my_data_packet_size; -} - -PLATFORM_ATTRIBUTE_INLINE -int WBT_GetPeerPacketLength (const WBTContext * work) -{ - return work->peer_data_packet_size; -} - -PLATFORM_ATTRIBUTE_INLINE -int WBT_GetParentPacketLength (const WBTContext * work) -{ - return (work->my_aid == 0) ? work->my_data_packet_size : work->peer_data_packet_size; -} - -int WBT_GetRegisteredCount(const WBTContext * work); - -PLATFORM_ATTRIBUTE_INLINE -WBTCommandList * WBT_GetCurrentCommandList (const WBTContext * work) -{ - return work->command; -} - -PLATFORM_ATTRIBUTE_INLINE -WBTCommand * WBT_GetCurrentCommand (const WBTContext * work) -{ - WBTCommandList * list = work->command; - return list ? &list->command : NULL; -} - -int WBT_GetBitmapLength(const WBTContext * work, int length); - -PLATFORM_ATTRIBUTE_INLINE -void WBT_AddCommandPool (WBTContext * work, WBTCommandList * list, int count) -{ - while (--count >= 0) { - list->next = work->command_pool; - work->command_pool = list++; - } -} - -PLATFORM_ATTRIBUTE_INLINE -WBTCommandList * WBT_AllocCommandList (WBTContext * work) -{ - WBTCommandList * list = work->command_pool; - if (list) { - work->command_pool = list->next; - list->next = NULL; - } - return list; -} - -BOOL WBT_SetPacketLength(WBTContext * work, int own, int peer); - -PLATFORM_ATTRIBUTE_INLINE -void WBT_CreateCommandSYNC (WBTContext * work, WBTCommandList * list) -{ - (void)work; - list->command.command = WBT_CMD_REQ_SYNC; -} - -PLATFORM_ATTRIBUTE_INLINE -void WBT_CreateCommandINFO (WBTContext * work, WBTCommandList * list, - int index, const WBTBlockInfoTable * buffer_table) -{ - WBTGetBlockCallback * arg = &list->command.get; - arg->block_id = (u32)index; - arg->recv_data_size = sizeof(WBTBlockInfo); - { - int i; - for (i = 0; i < 16; ++i) { - arg->pkt_bmp_table.packet_bitmap[i] = work->binfo_bitmap[i]; - arg->recv_buf_table.recv_buf[i] = (u8 *)buffer_table->block_info[i]; - } - } - list->command.command = WBT_CMD_REQ_GET_BLOCKINFO; -} - -PLATFORM_ATTRIBUTE_INLINE -void WBT_CreateCommandGET (WBTContext * work, WBTCommandList * list, - u32 id, u32 length, - const WBTRecvBufTable * buffer_table, - WBTPacketBitmapTable * bitmap_table) -{ - WBTGetBlockCallback * arg = &list->command.get; - (void)work; - arg->block_id = id; - arg->recv_data_size = length; - arg->recv_buf_table = *buffer_table; - arg->pkt_bmp_table = *bitmap_table; - list->command.command = WBT_CMD_REQ_GET_BLOCK; -} - -PLATFORM_ATTRIBUTE_INLINE -void WBT_CreateCommandMSG (WBTContext * work, WBTCommandList * list, - const void * buffer, u32 length) -{ - WBTRecvUserDataCallback * arg = &list->command.user_data; - (void)work; - SDK_MINMAX_ASSERT(length, 0, WBT_SIZE_USER_DATA); - arg->size = (u8)length; - MI_CpuCopy8(buffer, arg->data, length); - list->command.command = WBT_CMD_REQ_USER_DATA; -} - -void WBT_PostCommand(WBTContext * work, WBTCommandList * list, u16 bitmap, - WBTEventCallback callback); - -PLATFORM_ATTRIBUTE_INLINE -BOOL WBT_PostCommandSYNC (WBTContext * context, int bitmap, WBTEventCallback callback) -{ - WBTCommandList * list = WBT_AllocCommandList(context); - if (list) { - WBT_CreateCommandSYNC(context, list); - WBT_PostCommand(context, list, (u16)bitmap, callback); - } - return (list != NULL); -} - -PLATFORM_ATTRIBUTE_INLINE -BOOL WBT_PostCommandINFO (WBTContext * context, int bitmap, WBTEventCallback callback, - int index, const WBTBlockInfoTable * buffer_table) -{ - WBTCommandList * list = WBT_AllocCommandList(context); - if (list) { - WBT_CreateCommandINFO(context, list, index, buffer_table); - WBT_PostCommand(context, list, (u16)bitmap, callback); - } - return (list != NULL); -} - -PLATFORM_ATTRIBUTE_INLINE -BOOL WBT_PostCommandGET (WBTContext * context, int bitmap, WBTEventCallback callback, - u32 id, u32 length, const WBTRecvBufTable * buffer_table, - WBTPacketBitmapTable * bitmap_table) -{ - WBTCommandList * list = WBT_AllocCommandList(context); - if (list) { - WBT_CreateCommandGET(context, list, id, length, buffer_table, bitmap_table); - WBT_PostCommand(context, list, (u16)bitmap, callback); - } - return (list != NULL); -} - -PLATFORM_ATTRIBUTE_INLINE -BOOL WBT_PostCommandMSG (WBTContext * context, int bitmap, WBTEventCallback callback, - const void * buffer, u32 length) -{ - WBTCommandList * list = WBT_AllocCommandList(context); - if (list) { - WBT_CreateCommandMSG(context, list, buffer, length); - WBT_PostCommand(context, list, (u16)bitmap, callback); - } - return (list != NULL); -} - -int WBT_CancelCommand(WBTContext * work, int bitmap); - -void WBT_GetDownloadProgress(const WBTContext * work, u32 id, int aid, int * current, int * total); - -void WBT_RegisterBlockInfo(WBTContext * work, WBTBlockInfoList * list, u32 id, - const void * userinfo, const void * buffer, int length); - -WBTBlockInfoList * WBT_UnregisterBlockInfo(WBTContext * work, u32 id); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/wfs.h b/subprojects/NitroSDK/include/nitro/wfs.h deleted file mode 100644 index c5d814e9a3..0000000000 --- a/subprojects/NitroSDK/include/nitro/wfs.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef NITRO_WFS_H_ -#define NITRO_WFS_H_ - -#include -#include -#include - -#endif diff --git a/subprojects/NitroSDK/include/nitro/wfs/client.h b/subprojects/NitroSDK/include/nitro/wfs/client.h deleted file mode 100644 index 9e4191c01c..0000000000 --- a/subprojects/NitroSDK/include/nitro/wfs/client.h +++ /dev/null @@ -1,84 +0,0 @@ -#ifndef NITRO_WFS_CLIENT_H_ -#define NITRO_WFS_CLIENT_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" -{ -#endif - -#define WFS_FILE_SIZE_MAX (4 * 1024 * 1024) - -struct WFSClientContext; -typedef void (* WFSRequestClientReadDoneCallback)(struct WFSClientContext * context, BOOL succeeded, void * arg); - -typedef struct WFSClientContext { - void * userdata; - WFSEventCallback callback; - MIAllocator * allocator; - u32 fat_ready : 1; - u32 flags : 31; - - WBTContext wbt[1]; - WBTCommandList wbt_list[2]; - WBTRecvBufTable recv_buf_table; - WBTPacketBitmapTable recv_buf_packet_bmp_table; - WBTBlockInfoTable block_info_table; - WBTBlockInfo block_info[16]; - - u32 * recv_pkt_bmp_buf; - u32 max_file_size; - - WFSTableFormat table[1]; - - u32 block_id; - CARDRomRegion request_region; - void * request_buffer; - WFSRequestClientReadDoneCallback request_callback; - void * request_argument; - u8 padding[12]; -} WFSClientContext; - -void WFS_InitClient(WFSClientContext * context, - void * userdata, WFSEventCallback callback, - MIAllocator * allocator); - -void WFS_StartClient(WFSClientContext * context, const WFSPeerInfo * peer); - -void WFS_EndClient(WFSClientContext * context); - -void WFS_CallClientConnectHook(WFSClientContext * context, const WFSPeerInfo * peer); - -void WFS_CallClientDisconnectHook(WFSClientContext * context, const WFSPeerInfo * peer); - -void WFS_CallClientPacketSendHook(WFSClientContext * context, WFSPacketBuffer * packet); - -void WFS_CallClientPacketRecvHook(WFSClientContext * context, const WFSPacketBuffer * packet); - -PLATFORM_ATTRIBUTE_INLINE -BOOL WFS_IsClientReady (const WFSClientContext * context) -{ - return context->fat_ready ? TRUE : FALSE; -} - -PLATFORM_ATTRIBUTE_INLINE -const WFSTableFormat * WFS_GetTableFormat (const WFSClientContext * context) -{ - return WFS_IsClientReady(context) ? context->table : NULL; -} - -void WFS_RequestClientRead(WFSClientContext * context, void * buffer, u32 offset, - u32 length, WFSRequestClientReadDoneCallback callback, - void * arg); - -void WFS_GetClientReadProgress(WFSClientContext * context, int * current, int * total); - -void WFS_ReplaceRomArchive(WFSClientContext * context); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/wfs/format.h b/subprojects/NitroSDK/include/nitro/wfs/format.h deleted file mode 100644 index 4a8e2bbd31..0000000000 --- a/subprojects/NitroSDK/include/nitro/wfs/format.h +++ /dev/null @@ -1,171 +0,0 @@ -#ifndef NITRO_WFS_FORMAT_H_ -#define NITRO_WFS_FORMAT_H_ - -#include -#include -#include - -#include - -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" -{ -#endif - -#if defined(WFS_DEBUG_OUTPUT_ON) && !defined(SDK_FINALROM) -#define WFS_DEBUG_OUTPUT(formats) \ - OS_TPrintf("WFS| "); \ - OS_TPrintf formats; \ - OS_TPrintf("\n") -#else -#define WFS_DEBUG_OUTPUT(...) (void)0 -#endif - -#define WFS_MSG_LOCK_REQ 0 -#define WFS_MSG_LOCK_ACK 1 - -#define WFS_MSG_UNLOCK_REQ 2 -#define WFS_MSG_UNLOCK_ACK 3 - -#define WFS_LOCKED_BLOCK_INDEX 0x10001U -#define WFS_TABLE_BLOCK_INDEX 0x20000U - -typedef enum WFSTableRegionType { - WFS_TABLE_REGION_FAT, - WFS_TABLE_REGION_FNT, - WFS_TABLE_REGION_OV9, - WFS_TABLE_REGION_OV7, - WFS_TABLE_REGION_MAX -} WFSTableRegionType; - -typedef enum WFSEventType { - WFS_EVENT_SERVER_SEGMENT_REQUEST, - WFS_EVENT_CLIENT_READY -} WFSEventType; - -#if (PLATFORM_BYTES_ENDIAN == PLATFORM_ENDIAN_LITTLE) -#define MI_LEToH32_BITFIELD(width, value) MI_LEToH32(value) -#define MI_HToLE32_BITFIELD(width, value) MI_HToLE32(value) -#else -#define MI_LEToH32_BITFIELD(width, value) (u32)(MI_LEToH32(value << (32 - width))) -#define MI_HToLE32_BITFIELD(width, value) (u32)(MI_HToLE32(value) >> (32 - width)) -#endif - -typedef struct WFSFATFormat { - u32 top; - u32 bottom; -} PLATFORM_STRUCT_PADDING_FOOTER -WFSFATFormat; - -typedef struct WFSOVLFormat { - u32 id; - u8 * ram_address; - u32 ram_size; - u32 bss_size; - void (*sinit_init); - void (*sinit_init_end); - u32 file_id; -#if (PLATFORM_BITFIELDS_ENDIAN == PLATFORM_ENDIAN_LITTLE) - u32 compressed : 24; - u32 flag : 8; -#else - u32 flag : 8; - u32 compressed : 24; -#endif -} PLATFORM_STRUCT_PADDING_FOOTER -WFSOVLFormat; - -typedef struct WFSTableFormat { - u32 origin; - u8 * buffer; - u32 length; - CARDRomRegion region[WFS_TABLE_REGION_MAX]; -} PLATFORM_STRUCT_PADDING_FOOTER -WFSTableFormat; - -typedef struct WFSMessageFormat { -#if (PLATFORM_BITFIELDS_ENDIAN == PLATFORM_ENDIAN_LITTLE) - u32 type : 4; - u32 packet_hi : 4; -#else - u32 packet_hi : 4; - u32 type : 4; -#endif - u32 arg2 : 24; - u32 arg1; - u8 packet_lo; - u8 reserved[3]; -} PLATFORM_STRUCT_PADDING_FOOTER -WFSMessageFormat; - -PLATFORM_COMPILER_ASSERT(sizeof(WFSFATFormat) == 8); -PLATFORM_COMPILER_ASSERT(sizeof(WFSOVLFormat) == 32); -PLATFORM_COMPILER_ASSERT(sizeof(WFSMessageFormat) == 12); - -typedef void (* WFSEventCallback)(void * context, WFSEventType, void * argument); - -typedef struct WFSPacketBuffer { - u8 * buffer; - int length; - int bitmap; -} WFSPacketBuffer; - -typedef struct WFSPeerInfo { - int aid; - u8 mac[6]; - u8 padding[2]; -} WFSPeerInfo; - -BOOL WFS_LoadTable(WFSTableFormat * table, MIAllocator * allocator, - MIDevice * device, u32 fatbase, u32 overlay); - -void WFS_ParseTable(WFSTableFormat * table); - -PLATFORM_ATTRIBUTE_INLINE -BOOL WFS_SendMessage (WBTContext * context, WBTEventCallback callback, int bitmap, - int type, u32 arg1, u32 arg2) -{ - WFSMessageFormat message; - int packet = WBT_GetParentPacketLength(context) + WBT_PACKET_SIZE_MIN; - message.type = (u8)type; - message.arg1 = MI_HToLE32(arg1); - message.arg2 = MI_HToLE32_BITFIELD(24, arg2); - message.packet_hi = (u8)(packet >> 8); - message.packet_lo = (u8)(packet >> 0); - return WBT_PostCommandMSG(context, (u16)bitmap, callback, &message, WBT_SIZE_USER_DATA); -} -PLATFORM_ATTRIBUTE_INLINE -BOOL WFS_SendMessageLOCK_REQ (WBTContext * context, WBTEventCallback callback, int bitmap, - u32 offset, u32 length) -{ - return WFS_SendMessage(context, callback, bitmap, WFS_MSG_LOCK_REQ, offset, length); -} -PLATFORM_ATTRIBUTE_INLINE -BOOL WFS_SendMessageLOCK_ACK (WBTContext * context, WBTEventCallback callback, int bitmap, - u32 id) -{ - return WFS_SendMessage(context, callback, bitmap, WFS_MSG_LOCK_ACK, id, (u32)(id != 0)); -} -PLATFORM_ATTRIBUTE_INLINE -BOOL WFS_SendMessageUNLOCK_REQ (WBTContext * context, WBTEventCallback callback, int bitmap, - u32 id) -{ - return WFS_SendMessage(context, callback, bitmap, WFS_MSG_UNLOCK_REQ, id, TRUE); -} -PLATFORM_ATTRIBUTE_INLINE -BOOL WFS_SendMessageUNLOCK_ACK (WBTContext * context, WBTEventCallback callback, int bitmap, - u32 id) -{ - return WFS_SendMessage(context, callback, bitmap, WFS_MSG_UNLOCK_ACK, id, (u32)(id != 0)); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/wfs/server.h b/subprojects/NitroSDK/include/nitro/wfs/server.h deleted file mode 100644 index a1585462dd..0000000000 --- a/subprojects/NitroSDK/include/nitro/wfs/server.h +++ /dev/null @@ -1,106 +0,0 @@ -#ifndef NITRO_WFS_SERVER_H_ -#define NITRO_WFS_SERVER_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" -{ -#endif - -#define WFS_LOCK_HANDLE_MAX 15 - -typedef struct WFSSegmentBuffer { - u32 offset; - u32 length; - void * buffer; -} WFSSegmentBuffer; - -typedef struct WFSLockInfo { - WBTBlockInfoList info; - int ref; - u32 offset; - u32 length; - u32 ack_seq; -} WFSLockInfo; - -typedef struct WFSServerContext { - void * userdata; - WFSEventCallback callback; - - void * thread_work; - void (* thread_hook)(void * thread, void * argument); - - int use_bitmap; - WFSLockInfo list[WFS_LOCK_HANDLE_MAX]; - - WFSTableFormat table[1]; - WBTBlockInfoList table_info[1]; - MIAllocator * allocator; - - int all_bitmap; - int busy_bitmap; - int sync_bitmap; - int ack_bitmap; - WFSMessageFormat recv_msg[16]; - - BOOL is_changing; - int new_packet; - int deny_bitmap; - - u8 cache_hit_buf[512]; - WBTContext wbt[1]; - WBTCommandList wbt_list[2]; - BOOL msg_busy; -} WFSServerContext; - -void WFS_InitServer(WFSServerContext * context, - void * userdata, WFSEventCallback callback, - MIAllocator * allocator, int packet); - -void WFS_EndServer(WFSServerContext * context); - -BOOL WFS_RegisterServerTable(WFSServerContext * context, - MIDevice * device, u32 fatbase, u32 overlay); - -void WFS_CallServerConnectHook(WFSServerContext * context, const WFSPeerInfo * peer); - -void WFS_CallServerDisconnectHook(WFSServerContext * context, const WFSPeerInfo * peer); - -void WFS_CallServerPacketSendHook(WFSServerContext * context, WFSPacketBuffer * packet); - -void WFS_CallServerPacketRecvHook(WFSServerContext * context, const WFSPacketBuffer * packet); - -PLATFORM_ATTRIBUTE_INLINE -int WFS_GetServerConnectedBitmap (const WFSServerContext * context) -{ - return context->all_bitmap; -} - -PLATFORM_ATTRIBUTE_INLINE -int WFS_GetServerBusyBitmap (const WFSServerContext * context) -{ - return context->busy_bitmap; -} - -PLATFORM_ATTRIBUTE_INLINE -int WFS_GetServerSyncBitmap (const WFSServerContext * context) -{ - return context->sync_bitmap; -} - -int WFS_GetServerPacketLength(const WFSServerContext * context); - -void WFS_SetServerPacketLength(WFSServerContext * context, int length); - -void WFS_SetServerSync(WFSServerContext * context, int bitmap); - -BOOL WFS_ExecuteRomServerThread(WFSServerContext * context, FSFile * file, BOOL sharedFS); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/wm.h b/subprojects/NitroSDK/include/nitro/wm.h deleted file mode 100644 index 7a4762cfa6..0000000000 --- a/subprojects/NitroSDK/include/nitro/wm.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef NITRO_WM_H_ -#define NITRO_WM_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#ifdef SDK_ARM7 - -#include - -#else - -#include - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/wm/ARM9/wm_api.h b/subprojects/NitroSDK/include/nitro/wm/ARM9/wm_api.h deleted file mode 100644 index fb8dd2d2bd..0000000000 --- a/subprojects/NitroSDK/include/nitro/wm/ARM9/wm_api.h +++ /dev/null @@ -1,304 +0,0 @@ -#ifndef NITRO_WM_ARM9_WM_API_H_ -#define NITRO_WM_ARM9_WM_API_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#define WM_DEFAULT_BEACON_PERIOD 200 -#define WM_DEFAULT_SCAN_PERIOD 30 -#define WM_MAX_MP_PACKET_TIME 5600 - -WMErrCode WM_Init(void * wmSysBuf, u16 dmaNo); - -WMErrCode WM_Finish(void); - -WMErrCode WM_Enable(WMCallbackFunc callback); - -WMErrCode WM_EnableForListening(WMCallbackFunc callback, BOOL blink); - -WMErrCode WMi_EnableEx(WMCallbackFunc callback, u32 miscFlags); - -WMErrCode WM_Disable(WMCallbackFunc callback); - -WMErrCode WM_PowerOn(WMCallbackFunc callback); - -WMErrCode WM_PowerOff(WMCallbackFunc callback); - -WMErrCode WM_Initialize(void * wmSysBuf, WMCallbackFunc callback, u16 dmaNo); - -WMErrCode WM_InitializeForListening(void * wmSysBuf, WMCallbackFunc callback, u16 dmaNo, BOOL blink); - -WMErrCode WMi_InitializeEx(void * wmSysBuf, WMCallbackFunc callback, u16 dmaNo, u32 miscFlags); - -WMErrCode WM_SetIndCallback(WMCallbackFunc callback); - -WMErrCode WM_SetPortCallback(u16 port, WMCallbackFunc callback, void * arg); - -WMErrCode WM_Reset(WMCallbackFunc callback); - -WMErrCode WM_End(WMCallbackFunc callback); - -WMErrCode WM_ReadStatus(WMStatus * statusBuf); - -WMErrCode WM_SetParentParameter(WMCallbackFunc callback, const WMParentParam * pparaBuf); - -WMErrCode WMi_StartParentEx(WMCallbackFunc callback, BOOL powerSave); - -WMErrCode WM_StartParent(WMCallbackFunc callback); - -WMErrCode WM_EndParent(WMCallbackFunc callback); - -WMErrCode WM_StartScan(WMCallbackFunc callback, const WMScanParam * param); - -WMErrCode WM_StartScanEx(WMCallbackFunc callback, const WMScanExParam * param); - -WMErrCode WM_EndScan(WMCallbackFunc callback); - -WMErrCode WM_StartConnectEx(WMCallbackFunc callback, const WMBssDesc * pInfo, const u8 * ssid, - BOOL powerSave, u16 authMode); - -static inline WMErrCode WM_StartConnect (WMCallbackFunc callback, const WMBssDesc * pInfo, const u8 * ssid) -{ - return WM_StartConnectEx(callback, pInfo, ssid, TRUE, WM_AUTHMODE_OPEN_SYSTEM); -} - -WMErrCode WM_Disconnect(WMCallbackFunc callback, u16 aid); - -WMErrCode WM_DisconnectChildren(WMCallbackFunc callback, u16 aidBitmap); - -int WM_GetMPSendBufferSize(void); - -int WM_GetMPReceiveBufferSize(void); - -WMErrCode WM_StartMPEx(WMCallbackFunc callback, - u16 * recvBuf, - u16 recvBufSize, - u16 * sendBuf, - u16 sendBufSize, - u16 mpFreq, - u16 defaultRetryCount, - BOOL minPollBmpMode, - BOOL singlePacketMode, BOOL fixFreqMode, BOOL ignoreFatalError); - -WMErrCode WM_StartMP(WMCallbackFunc callback, - u16 * recvBuf, u16 recvBufSize, u16 * sendBuf, u16 sendBufSize, u16 mpFreq); - -WMErrCode WM_SetMPParameter(WMCallbackFunc callback, const WMMPParam * param); - -WMErrCode WM_SetMPChildSize(WMCallbackFunc callback, u16 childSize); - -WMErrCode WM_SetMPParentSize(WMCallbackFunc callback, u16 parentSize); - -WMErrCode WM_SetMPFrequency(WMCallbackFunc callback, u16 mpFreq); - -WMErrCode WM_SetMPInterval(WMCallbackFunc callback, u16 parentInterval, u16 childInterval); - -WMErrCode WM_SetMPTiming(WMCallbackFunc callback, u16 parentVCount, u16 childVCount); - -WMErrCode WM_SetMPDataToPortEx(WMCallbackFunc callback, - void * arg, - const u16 * sendData, - u16 sendDataSize, u16 destBitmap, u16 port, u16 prio); - -static inline WMErrCode WM_SetMPDataToPort (WMCallbackFunc callback, const u16 * sendData, u16 sendDataSize, u16 destBitmap, - u16 port, u16 prio) -{ - return WM_SetMPDataToPortEx(callback, NULL, sendData, sendDataSize, destBitmap, port, prio); -} - -static inline WMErrCode WM_SetMPData (WMCallbackFunc callback, const u16 * sendData, u16 sendDataSize, u16 tmptt, u16 pollbmp) -{ -#pragma unused( tmptt ) - return WM_SetMPDataToPortEx(callback, NULL, sendData, sendDataSize, pollbmp, WM_PORT_RAWDATA, - WM_PRIORITY_NORMAL); -} - -WMErrCode WM_EndMP(WMCallbackFunc callback); - -WMErrCode WM_StartDCF(WMCallbackFunc callback, WMDcfRecvBuf * recvBuf, u16 recvBufSize); - -WMErrCode WM_SetDCFData(WMCallbackFunc callback, - const u8 * destAdr, const u16 * sendData, u16 sendDataSize); - -WMErrCode WM_EndDCF(WMCallbackFunc callback); - -WMErrCode WM_SetWEPKey(WMCallbackFunc callback, u16 wepmode, const u16 * wepkey); - -WMErrCode WM_SetWEPKeyEx(WMCallbackFunc callback, u16 wepmode, u16 wepkeyid, const u8 * wepkey); - -WMMpRecvData * WM_ReadMPData(const WMMpRecvHeader * header, u16 aid); - -WMErrCode WM_StartDataSharing(WMDataSharingInfo * dsInfo, - u16 port, u16 aidBitmap, u16 dataLength, BOOL doubleMode); - -WMErrCode WM_EndDataSharing(WMDataSharingInfo * dsInfo); - -WMErrCode WM_StepDataSharing(WMDataSharingInfo * dsInfo, - const u16 * sendData, WMDataSet * receiveData); - -u16 * WM_GetSharedDataAddress(WMDataSharingInfo * dsInfo, WMDataSet * receiveData, u16 aid); - -WMErrCode WM_StartKeySharing(WMKeySetBuf * buf, u16 port); - -WMErrCode WM_EndKeySharing(WMKeySetBuf * buf); - -WMErrCode WM_GetKeySet(WMKeySetBuf * buf, WMKeySet * keySet); - -WMErrCode WM_SetGameInfo(WMCallbackFunc callback, - const u16 * userGameInfo, u16 userGameInfoSize, - u32 ggid, u16 tgid, u8 attr); - -WMErrCode WM_SetBeaconIndication(WMCallbackFunc callback, u16 flag); - -#ifdef WM_ENABLE_TESTMODE - -WMErrCode WM_StartTestMode(WMCallbackFunc callback, u16 signal, u16 rate, u16 channel); - -WMErrCode WM_StopTestMode(WMCallbackFunc callback); - -WMErrCode WM_StartTestRxMode(WMCallbackFunc callback, u16 channel); - -WMErrCode WM_StopTestRxMode(WMCallbackFunc callback); - -#endif - -WMErrCode WM_SetLifeTime(WMCallbackFunc callback, - u16 tableNumber, u16 camLifeTime, u16 frameLifeTime, u16 mpLifeTime); - -WMErrCode WM_MeasureChannel(WMCallbackFunc callback, - u16 ccaMode, u16 edThreshold, u16 channel, u16 measureTime); - -WMErrCode WM_InitWirelessCounter(WMCallbackFunc callback); - -WMErrCode WM_GetWirelessCounter(WMCallbackFunc callback); - -u16 WM_GetAllowedChannel(void); - -#ifdef WM_PRECALC_ALLOWEDCHANNEL - -BOOL WM_IsExistAllowedChannel(void); -#endif - -WMErrCode WM_SetEntry(WMCallbackFunc callback, BOOL enabled); - -WMLinkLevel WM_GetLinkLevel(void); - -WMErrCode WMi_SetBeaconPeriod(WMCallbackFunc callback, u16 beaconPeriod); - -u16 WM_GetDispersionBeaconPeriod(void); - -u16 WM_GetDispersionScanPeriod(void); - -WMOtherElements WM_GetOtherElements(WMBssDesc * bssDesc); - -u16 WM_GetNextTgid(void); - -WMErrCode WM_SetPowerSaveMode(WMCallbackFunc callback, BOOL powerSave); - -BOOL WMi_IsMP(void); - -u16 WM_GetAID(void); - -u16 WM_GetConnectedAIDs(void); - -u16 WMi_GetMPReadyAIDs(void); - -void WMi_DebugPrintSendQueue(WMPortSendQueue * queue); -void WMi_DebugPrintAllSendQueue(void); -const WMStatus * WMi_GetStatusAddress(void); -BOOL WMi_CheckMpPacketTimeRequired(u16 parentSize, u16 childSize, u8 childs); - -#define WM_SIZE_MP_PARENT_RECEIVE_BUFFER(childMaxSize, maxEntry, ksFlag) \ - (((sizeof(WMMpRecvHeader) - sizeof(WMMpRecvData) + \ - ((sizeof(WMMpRecvData) + (childMaxSize) + WM_HEADER_CHILD_MAX_SIZE - 2 + 2 + ((ksFlag) ? WM_SIZE_KS_CHILD_DATA + WM_SIZE_MP_CHILD_PADDING : 0)) * (maxEntry)) \ - + 31) & ~0x1f) * 2) - -#define WM_SIZE_MP_CHILD_RECEIVE_BUFFER(parentMaxSize, ksFlag) \ - (((sizeof(WMMpRecvBuf) + (parentMaxSize) + WM_HEADER_PARENT_MAX_SIZE - 4 + ((ksFlag) ? WM_SIZE_KS_PARENT_DATA + WM_SIZE_MP_PARENT_PADDING : 0) + 31) & ~0x1f) * 2) - -#define WM_SIZE_MP_PARENT_SEND_BUFFER(parentMaxSize, ksFlag) \ - (((parentMaxSize) + WM_HEADER_PARENT_MAX_SIZE + ((ksFlag) ? WM_SIZE_KS_PARENT_DATA + WM_SIZE_MP_PARENT_PADDING : 0) + 31) & ~0x1f) - -#define WM_SIZE_MP_CHILD_SEND_BUFFER(childMaxSize, ksFlag) \ - (((childMaxSize) + WM_HEADER_CHILD_MAX_SIZE + ((ksFlag) ? WM_SIZE_KS_CHILD_DATA + WM_SIZE_MP_CHILD_PADDING : 0) + 31) & ~0x1f) - -#define WM_SIZE_DCF_CHILD_SEND_BUFFER(childMaxSize) \ - (((childMaxSize) + WM_SIZE_MADATA_HEADER + 31) & ~0x1f) - -#define WM_SIZE_CHILD_SEND_BUFFER WM_SIZE_MP_CHILD_SEND_BUFFER -#define WM_SIZE_CHILD_RECEIVE_BUFFER WM_SIZE_MP_CHILD_RECEIVE_BUFFER -#define WM_SIZE_PARENT_SEND_BUFFER WM_SIZE_MP_PARENT_SEND_BUFFER -#define WM_SIZE_PARENT_RECEIVE_BUFFER WM_SIZE_MP_PARENT_RECEIVE_BUFFER - -static inline void WM_ConvGgid32to16 (u32 * src, u16 * dst) -{ - dst[0] = (u16)(*src & 0x0000ffff); - dst[1] = (u16)(*src >> 16); -} - -static inline void WM_ConvGgid16to32 (u16 * src, u32 * dst) -{ - *dst = ((u32)src[1] << 16) | src[0]; -} - -static inline BOOL WM_IsBssidEqual (const u8 * idp1, const u8 * idp2) -{ - return ((*idp1 == *idp2) && - (*(idp1 + 1) == *(idp2 + 1)) && - (*(idp1 + 2) == *(idp2 + 2)) && - (*(idp1 + 3) == *(idp2 + 3)) && - (*(idp1 + 4) == *(idp2 + 4)) && (*(idp1 + 5) == *(idp2 + 5))); -} - -static inline BOOL WM_IsBssidEqual16 (const u8 * idp1, const u8 * idp2) -{ - SDK_ALIGN2_ASSERT(idp1); - SDK_ALIGN2_ASSERT(idp2); - - return ((*(u16 *)idp1 == *(u16 *)idp2) && - (*(u16 *)(idp1 + 2) == *(u16 *)(idp2 + 2)) && - (*(u16 *)(idp1 + 4) == *(u16 *)(idp2 + 4))); -} - -static inline void WM_CopyBssid (const u8 * src, u8 * dst) -{ - *dst = *src; - *(dst + 1) = *(src + 1); - *(dst + 2) = *(src + 2); - *(dst + 3) = *(src + 3); - *(dst + 4) = *(src + 4); - *(dst + 5) = *(src + 5); -} - -static inline void WM_CopyBssid16 (const u8 * src, u8 * dst) -{ - SDK_ALIGN2_ASSERT(src); - SDK_ALIGN2_ASSERT(dst); - - *(u16 *)dst = *(u16 *)src; - *(u16 *)(dst + 2) = *(u16 *)(src + 2); - *(u16 *)(dst + 4) = *(u16 *)(src + 4); -} - -static inline BOOL WM_IsValidGameInfo (const WMGameInfo * gameInfo, u16 gameInfoLength) -{ - return (gameInfoLength >= WM_GAMEINFO_LENGTH_MIN - && gameInfo->magicNumber == WM_GAMEINFO_MAGIC_NUMBER); -} - -static inline BOOL WM_IsValidGameBeacon (const WMBssDesc * bssDesc) -{ - return WM_IsValidGameInfo(&bssDesc->gameInfo, bssDesc->gameInfoLength); -} - -static inline BOOL WMi_IsDisconnectReasonFromMyself (u16 reason) -{ - return (reason >= WM_DISCONNECT_REASON_FROM_MYSELF); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/wm/common/wm.h b/subprojects/NitroSDK/include/nitro/wm/common/wm.h deleted file mode 100644 index e1604bf9be..0000000000 --- a/subprojects/NitroSDK/include/nitro/wm/common/wm.h +++ /dev/null @@ -1,1173 +0,0 @@ -#ifndef NITRO_WM_COMMON_WM_H_ -#define NITRO_WM_COMMON_WM_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include - -#undef WM_GAMEINFO_TYPE_OLD - -#if (SDK_VERSION_WL >= 15600) -#ifdef SDK_TEG -#undef WM_PRECALC_ALLOWEDCHANNEL -#else -#define WM_PRECALC_ALLOWEDCHANNEL -#endif -#else -#undef WM_PRECALC_ALLOWEDCHANNEL -#endif - -#define WM_SSID_MASK_CUSTOMIZE 1 - -typedef enum WMApiid { - WM_APIID_INITIALIZE = 0, - WM_APIID_RESET, - WM_APIID_END, - - WM_APIID_ENABLE, - WM_APIID_DISABLE, - WM_APIID_POWER_ON, - WM_APIID_POWER_OFF, - - WM_APIID_SET_P_PARAM, - WM_APIID_START_PARENT, - WM_APIID_END_PARENT, - WM_APIID_START_SCAN, - WM_APIID_END_SCAN, - WM_APIID_START_CONNECT, - WM_APIID_DISCONNECT, - WM_APIID_START_MP, - WM_APIID_SET_MP_DATA, - WM_APIID_END_MP, - WM_APIID_START_DCF, - WM_APIID_SET_DCF_DATA, - WM_APIID_END_DCF, - WM_APIID_SET_WEPKEY, - WM_APIID_START_KS, - WM_APIID_END_KS, - WM_APIID_GET_KEYSET, - WM_APIID_SET_GAMEINFO, - WM_APIID_SET_BEACON_IND, - WM_APIID_START_TESTMODE, - WM_APIID_STOP_TESTMODE, - WM_APIID_VALARM_MP, - WM_APIID_SET_LIFETIME, - WM_APIID_MEASURE_CHANNEL, - WM_APIID_INIT_W_COUNTER, - WM_APIID_GET_W_COUNTER, - WM_APIID_SET_ENTRY, - WM_APIID_AUTO_DEAUTH, - WM_APIID_SET_MP_PARAMETER, - WM_APIID_SET_BEACON_PERIOD, - WM_APIID_AUTO_DISCONNECT, - WM_APIID_START_SCAN_EX, - WM_APIID_SET_WEPKEY_EX, - WM_APIID_SET_PS_MODE, - WM_APIID_START_TESTRXMODE, - WM_APIID_STOP_TESTRXMODE, - - WM_APIID_KICK_MP_PARENT, - WM_APIID_KICK_MP_CHILD, - WM_APIID_KICK_MP_RESUME, - - WM_APIID_ASYNC_KIND_MAX, - - WM_APIID_INDICATION = 128, - WM_APIID_PORT_SEND, - WM_APIID_PORT_RECV, - WM_APIID_READ_STATUS, - - WM_APIID_UNKNOWN = 255 -} WMApiid; - -#define WM_API_REQUEST_ACCEPTED 0x8000 - -#define WM_WEPMODE_NO 0 -#define WM_WEPMODE_40BIT 1 -#define WM_WEPMODE_104BIT 2 -#define WM_WEPMODE_128BIT 3 - -#define WM_AUTHMODE_OPEN_SYSTEM 0 -#define WM_AUTHMODE_SHARED_KEY 1 - -#define WM_SCANTYPE_ACTIVE 0 -#define WM_SCANTYPE_PASSIVE 1 - -#if WM_SSID_MASK_CUSTOMIZE -#define WM_SCANTYPE_ACTIVE_CUSTOM 2 -#define WM_SCANTYPE_PASSIVE_CUSTOM 3 -#endif - -#define WM_NUM_MAX_CHILD 15 -#define WM_NUM_MAX_AP_AID 2007 - -#define WM_NUM_OF_PORT 16 -#define WM_NUM_OF_SEQ_PORT 8 -typedef enum WMPort { - WM_PORT_RAWDATA = 0, - WM_PORT_BT = 1, - WM_PORT_RESERVE_02 = 2, - WM_PORT_RESERVE_03 = 3, - - WM_PORT_RESERVE_10 = 8, - WM_PORT_RESERVE_11 = 9, - WM_PORT_RESERVE_12 = 10, - WM_PORT_RESERVE_13 = 11 -} WMPort; - -#define WM_SEND_QUEUE_NUM 32 -#define WM_SEND_QUEUE_END ((u16)0xffff) -#define WM_PRIORITY_LEVEL 4 -typedef enum WMPriorityLevel { - WM_PRIORITY_URGENT = 0, - WM_PRIORITY_HIGH, - WM_PRIORITY_NORMAL, - WM_PRIORITY_LOW -} WMPriorityLevel; - -#define WM_VALARM_COUNT_CHILD_MP 240 -#define WM_VALARM_COUNT_PARENT_MP 260 -#define WM_VALARM_COUNT_RANGE_TOP 220 -#define WM_VALARM_COUNT_RANGE_BOTTOM 190 - -#define WM_MP_FREQ_CONT 16 -#define WM_MP_COUNT_LIMIT 256 -#define WM_DEFAULT_MP_FREQ_LIMIT 6 -#define WM_DEFAULT_MP_PARENT_INTERVAL 1000 -#define WM_DEFAULT_MP_CHILD_INTERVAL 0 - -#define WM_SIZE_BSSID 6 -#define WM_SIZE_SSID 32 - -#define WM_SIZE_GAMEINFO 128 - -#define WM_SIZE_SCAN_EX_BUF 1024 - -#define WM_GAMEINFO_LENGTH_MIN 16 -#define WM_GAMEINFO_MAGIC_NUMBER 0x0001 -#define WM_GAMEINFO_VERSION_NUMBER 1 -#define WM_GAMEINFO_PLATFORM_ID_NITRO 0 -#define WM_GAMEINFO_PLATFORM_ID_REVOLUTION 8 -#define WM_SIZE_SYSTEM_GAMEINFO 16 -#define WM_SIZE_USER_GAMEINFO 112 - -#define WM_SIZE_SCAN_PARAM 32 - -#define WM_PARENT_PARAM_SIZE 64 -#define WM_SIZE_USERNAME 8 -#define WM_SIZE_GAMENAME 16 -#define WM_SIZE_GGID 4 - -#define WM_SIZE_WL_VERSION 8 -#define WM_SIZE_BBP_VERSION 4 -#define WM_SIZE_MACADDR 6 -#define WM_SIZE_WEPKEY 80 - -#define WM_SIZE_CHILD_SSID 24 - -#if (SDK_VERSION_WL >= 21100) -#define WM_SIZE_MP_DATA_MAX 512 -#else -#define WM_SIZE_MP_DATA_MAX 508 -#endif - -#define WM_SIZE_MADATA_HEADER 44 - -#define WM_SIZE_MP_PARENT_PADDING (WM_HEADER_SIZE + WM_HEADER_PARENT_MAX_SIZE) - -#define WM_SIZE_MP_CHILD_PADDING (WM_HEADER_SIZE + WM_HEADER_CHILD_MAX_SIZE) - -#define WM_SIZE_DS_PARENT_HEADER 4 -#define WM_SIZE_KS_PARENT_DATA (2 * 16 + WM_SIZE_DS_PARENT_HEADER) -#define WM_SIZE_KS_CHILD_DATA 2 - -#define WM_ATTR_ENTRY_SHIFT 0 -#define WM_ATTR_MB_SHIFT 1 -#define WM_ATTR_KS_SHIFT 2 -#define WM_ATTR_CS_SHIFT 3 - -#define WM_ATTR_FLAG_ENTRY (1 << WM_ATTR_ENTRY_SHIFT) -#define WM_ATTR_FLAG_MB (1 << WM_ATTR_MB_SHIFT) -#define WM_ATTR_FLAG_KS (1 << WM_ATTR_KS_SHIFT) -#define WM_ATTR_FLAG_CS (1 << WM_ATTR_CS_SHIFT) - -#define WM_EXCEPTION_CB_MASK 0x0001 - -#define WM_HEADER_SIZE 2 - -#define WM_HEADER_KS 0x4000 -#define WM_HEADER_VSYNC 0x8000 - -#define WM_HEADER_PARENT_MAX_SIZE 4 - -#define WM_HEADER_CHILD_MAX_SIZE 2 - -#define WM_HEADER_PORT_MASK 0x0f00 -#define WM_HEADER_PORT_SHIFT 8 -#define WM_HEADER_SEQ_FLAG 0x0800 -#define WM_HEADER_DEST_BITMAP 0x1000 -#define WM_HEADER_LENGTH_MASK 0x00ff -#define WM_HEADER_LENGTH_SCALE 2 - -#define WM_SEQ_PORT_FLAG 0x0008 -#define WM_SEQ_PORT_MASK 0x0007 - -#define WM_HEADER_SEQ_RETRY 0x8000 -#define WM_HEADER_SEQ_NUM_MASK 0x7fff - -#define WM_PACKED_PACKET_MAX 128 - -typedef enum WMErrCode { - WM_ERRCODE_SUCCESS = 0, - WM_ERRCODE_FAILED = 1, - WM_ERRCODE_OPERATING = 2, - WM_ERRCODE_ILLEGAL_STATE = 3, - WM_ERRCODE_WM_DISABLE = 4, - WM_ERRCODE_NO_KEYSET = 5, - WM_ERRCODE_NO_DATASET = 5, - WM_ERRCODE_INVALID_PARAM = 6, - WM_ERRCODE_NO_CHILD = 7, - WM_ERRCODE_FIFO_ERROR = 8, - WM_ERRCODE_TIMEOUT = 9, - WM_ERRCODE_SEND_QUEUE_FULL = 10, - WM_ERRCODE_NO_ENTRY = 11, - WM_ERRCODE_OVER_MAX_ENTRY = 12, - WM_ERRCODE_INVALID_POLLBITMAP = 13, - WM_ERRCODE_NO_DATA = 14, - WM_ERRCODE_SEND_FAILED = 15, - - WM_ERRCODE_DCF_TEST, - WM_ERRCODE_WL_INVALID_PARAM, - WM_ERRCODE_WL_LENGTH_ERR, - - WM_ERRCODE_FLASH_ERROR, - WM_ERRCODE_MAX -} WMErrCode; - -typedef enum WMStateCode { - WM_STATECODE_PARENT_START = 0, - WM_STATECODE_BEACON_SENT = 2, - - WM_STATECODE_SCAN_START = 3, - WM_STATECODE_PARENT_NOT_FOUND = 4, - WM_STATECODE_PARENT_FOUND = 5, - - WM_STATECODE_CONNECT_START = 6, - WM_STATECODE_BEACON_LOST = 8, - - WM_STATECODE_CONNECTED = 7, - WM_STATECODE_CHILD_CONNECTED = 7, - WM_STATECODE_DISCONNECTED = 9, - WM_STATECODE_DISCONNECTED_FROM_MYSELF = 26, - - WM_STATECODE_MP_START = 10, - WM_STATECODE_MPEND_IND = 11, - WM_STATECODE_MP_IND = 12, - WM_STATECODE_MPACK_IND = 13, - - WM_STATECODE_DCF_START = 14, - WM_STATECODE_DCF_IND = 15, - - WM_STATECODE_BEACON_RECV = 16, - WM_STATECODE_DISASSOCIATE = 17, - WM_STATECODE_REASSOCIATE = 18, - WM_STATECODE_AUTHENTICATE = 19, - - WM_STATECODE_PORT_INIT = 25, - WM_STATECODE_PORT_SEND = 20, - WM_STATECODE_PORT_RECV = 21, - - WM_STATECODE_FIFO_ERROR = 22, - WM_STATECODE_INFORMATION = 23, - WM_STATECODE_UNKNOWN = 24, - - WM_STATECODE_MAX = 27 -} WMStateCode; - -typedef enum WMState { - WM_STATE_READY = 0, - WM_STATE_STOP, - WM_STATE_IDLE, - WM_STATE_CLASS1, - WM_STATE_TESTMODE, - WM_STATE_SCAN, - WM_STATE_CONNECT, - WM_STATE_PARENT, - WM_STATE_CHILD, - WM_STATE_MP_PARENT, - WM_STATE_MP_CHILD, - WM_STATE_DCF_CHILD, - WM_STATE_TESTMODE_RX, - WM_STATE_MAX -} WMState; - -typedef enum WMLinkLevel { - WM_LINK_LEVEL_0 = 0, - WM_LINK_LEVEL_1, - WM_LINK_LEVEL_2, - WM_LINK_LEVEL_3, - WM_LINK_LEVEL_MAX -} WMLinkLevel; - -typedef enum WMDataSharingState { - WM_DS_STATE_READY = 0, - WM_DS_STATE_START, - WM_DS_STATE_PAUSING, - WM_DS_STATE_PAUSED, - WM_DS_STATE_RETRY_SEND, - WM_DS_STATE_ERROR -} WMDataSharingState; - -typedef enum WMDisconnectReason { - WM_DISCONNECT_REASON_RESERVED = 0, - WM_DISCONNECT_REASON_UNSPECIFIED = 1, - WM_DISCONNECT_REASON_PREV_AUTH_INVALID = 2, - WM_DISCONNECT_REASON_DEAUTH_LEAVING = 3, - WM_DISCONNECT_REASON_INACTIVE = 4, - WM_DISCONNECT_REASON_UNABLE_HANDLE = 5, - WM_DISCONNECT_REASON_RX_CLASS2_FROM_NONAUTH_STA = 6, - WM_DISCONNECT_REASON_RX_CLASS3_FROM_NONASSOC_STA = 7, - WM_DISCONNECT_REASON_DISASSOC_LEAVING = 8, - WM_DISCONNECT_REASON_ASSOC_STA_NOTAUTHED = 9, - - WM_DISCONNECT_REASON_NO_ENTRY = 19, - - WM_DISCONNECT_REASON_MP_LIFETIME = 0x8001, - WM_DISCONNECT_REASON_TGID_CHANGED = 0x8002, - WM_DISCONNECT_REASON_FATAL_ERROR = 0x8003, - - WM_DISCONNECT_REASON_FROM_MYSELF = 0xf001 -} WMDisconnectReason; - -typedef enum WMInfoCode { - WM_INFOCODE_NONE = 0, - WM_INFOCODE_FATAL_ERROR -} WMInfoCode; - -#define WM_MP_PARAM_MIN_FREQUENCY 0x0001 -#define WM_MP_PARAM_FREQUENCY 0x0002 -#define WM_MP_PARAM_MAX_FREQUENCY 0x0004 -#define WM_MP_PARAM_PARENT_SIZE 0x0008 -#define WM_MP_PARAM_CHILD_SIZE 0x0010 -#define WM_MP_PARAM_PARENT_INTERVAL 0x0020 -#define WM_MP_PARAM_CHILD_INTERVAL 0x0040 -#define WM_MP_PARAM_PARENT_VCOUNT 0x0080 -#define WM_MP_PARAM_CHILD_VCOUNT 0x0100 -#define WM_MP_PARAM_DEFAULT_RETRY_COUNT 0x0200 -#define WM_MP_PARAM_MIN_POLL_BMP_MODE 0x0400 -#define WM_MP_PARAM_SINGLE_PACKET_MODE 0x0800 -#define WM_MP_PARAM_IGNORE_FATAL_ERROR_MODE 0x1000 -#define WM_MP_PARAM_IGNORE_SIZE_PRECHECK_MODE 0x2000 - -#define WM_MP_PARAM_MUST_SET_BEFORE_MP (WM_MP_PARAM_MIN_POLL_BMP_MODE | WM_MP_PARAM_SINGLE_PACKET_MODE | WM_MP_PARAM_IGNORE_SIZE_PRECHECK_MODE) - -#define WM_MP_TMP_PARAM_MIN_FREQUENCY 0x0001 -#define WM_MP_TMP_PARAM_FREQUENCY 0x0002 -#define WM_MP_TMP_PARAM_MAX_FREQUENCY 0x0004 -#define WM_MP_TMP_PARAM_DEFAULT_RETRY_COUNT 0x0200 -#define WM_MP_TMP_PARAM_MIN_POLL_BMP_MODE 0x0400 -#define WM_MP_TMP_PARAM_SINGLE_PACKET_MODE 0x0800 -#define WM_MP_TMP_PARAM_IGNORE_FATAL_ERROR_MODE 0x1000 - -#define WM_MP_PARAM_INTERVAL_MAX 10000 - -#define WM_MISC_FLAG_LISTEN_ONLY 0x0001 -#define WM_MISC_FLAG_NO_BLINK 0x0002 - -typedef void (* WMcallbackFunc) (void * arg); -typedef void (* WMCallbackFunc) (void * arg); - -#define WM_ARM9WM_BUF_SIZE 512 -#define WM_ARM7WM_BUF_SIZE (256 + 512) -#define WM_STATUS_BUF_SIZE 2048 -#define WM_FIFO_BUF_SIZE 256 - -#define WM_SYSTEM_BUF_SIZE (WM_ARM9WM_BUF_SIZE + WM_ARM7WM_BUF_SIZE + WM_STATUS_BUF_SIZE + WM_FIFO_BUF_SIZE + WM_FIFO_BUF_SIZE) -#define WM_BSS_DESC_SIZE 192 - -#define WM_DCF_MAX_SIZE 1508 -#define WM_KEYSET_SIZE 36 -#define WM_KEYDATA_SIZE 2 - -#define WM_DS_HEADER_SIZE 4 - -#ifdef WM_DS_DATA_SIZE_252 -#define WM_DS_DATA_SIZE 252 -#else -#define WM_DS_DATA_SIZE 508 - -#endif - -#define WM_DS_DATASET_NUM 4 -#define WM_DS_INFO_SIZE (sizeof(WMDataSharingInfo)) - -#define WM_SCAN_EX_PARENT_MAX 16 -#define WM_SCAN_OTHER_ELEMENT_MAX 16 - -typedef struct WMDataSet { - u16 aidBitmap; - u16 receivedBitmap; - u16 data[WM_DS_DATA_SIZE / sizeof(u16)]; -} WMDataSet; - -typedef struct WMDataSharingInfo { - WMDataSet ds[WM_DS_DATASET_NUM]; - u16 seqNum[WM_DS_DATASET_NUM]; - u16 writeIndex; - u16 sendIndex; - u16 readIndex; - u16 aidBitmap; - u16 dataLength; - u16 stationNumber; - u16 dataSetLength; - u16 port; - u16 doubleMode; - u16 currentSeqNum; - u16 state; - u16 reserved[1]; -} WMDataSharingInfo; - -typedef struct WMKeySet { - u16 seqNum; - u16 rsv; - u16 key[16]; -} WMKeySet, WMkeySet; - -typedef WMDataSharingInfo WMKeySetBuf, WMkeySetBuf; - -typedef struct { - u16 next; - u16 port; - u16 destBitmap; - u16 restBitmap; - u16 sentBitmap; - u16 sendingBitmap; - u16 padding; - u16 size; - u16 seqNo; - u16 retryCount; - const u16 * data; - WMCallbackFunc callback; - void * arg; -} WMPortSendQueueData; - -typedef struct { - u16 head; - u16 tail; -} WMPortSendQueue; - -typedef struct WMMpRecvBuf { - u16 rsv1[3]; - u16 length; - - u16 rsv2[1]; - u16 ackTimeStamp; - u16 timeStamp; - u16 rate_rssi; - u16 rsv3[2]; - - u16 rsv4[2]; - u8 destAdrs[6]; - u8 srcAdrs[6]; - u16 rsv5[3]; - u16 seqCtrl; - - u16 txop; - u16 bitmap; - u16 wmHeader; - u16 data[2]; -} WMMpRecvBuf, WMmpRecvBuf; - -typedef struct WMMpRecvData { - u16 length; - u16 rate_rssi; - u16 aid; - u16 noResponse; - u16 wmHeader; - u16 cdata[1]; -} WMMpRecvData, WMmpRecvData; - -typedef struct WMMpRecvHeader { - u16 bitmap; -#if SDK_VERSION_WL >= 20500 - u16 errBitmap; -#endif - u16 count; - u16 length; - u16 txCount; - WMMpRecvData data[1]; -} WMMpRecvHeader, WMmpRecvHeader; - -typedef struct WMDcfRecvBuf { - u16 frameID; - u16 rsv1[2]; - u16 length; - - u16 rsv2[3]; - u16 rate_rssi; - u16 rsv3[4]; - u8 destAdrs[6]; - u8 srcAdrs[6]; - u16 rsv4[4]; - - u16 data[2]; -} WMDcfRecvBuf, WMdcfRecvBuf; - -typedef struct WMParentParam { - u16 * userGameInfo; - u16 userGameInfoLength; - u16 padding; - - u32 ggid; - u16 tgid; - u16 entryFlag; - u16 maxEntry; - u16 multiBootFlag; - u16 KS_Flag; - u16 CS_Flag; - u16 beaconPeriod; - u16 rsv1[WM_SIZE_USERNAME / sizeof(u16)]; - u16 rsv2[WM_SIZE_GAMENAME / sizeof(u16)]; - u16 channel; - u16 parentMaxSize; - u16 childMaxSize; - - u16 rsv[4]; -} WMParentParam, WMpparam; - -typedef struct WMGameInfo { - u16 magicNumber; - u8 ver; - u8 platform; - u32 ggid; - u16 tgid; - u8 userGameInfoLength; - union { - u8 gameNameCount_attribute; - u8 attribute; - }; - u16 parentMaxSize; - u16 childMaxSize; - union { - u16 userGameInfo[WM_SIZE_USER_GAMEINFO / sizeof(u16)]; - struct { - u16 userName[WM_SIZE_USERNAME / sizeof(u16)]; - u16 gameName[WM_SIZE_GAMENAME / sizeof(u16)]; - u16 padd1[44]; - } old_type; - }; -} WMGameInfo, WMgameInfo; - -#if SDK_VERSION_WL < 17100 -typedef struct WMBssDesc { - u16 length; - u16 rssi; - u8 bssid[WM_SIZE_BSSID]; - u16 ssidLength; - u8 ssid[WM_SIZE_SSID]; - u16 capaInfo; - struct { - u16 basic; - u16 support; - } rateSet; - u16 beaconPeriod; - u16 dtimPeriod; - u16 channel; - u16 cfpPeriod; - u16 cfpMaxDuration; - u16 gameInfoLength; - WMGameInfo gameInfo; - u16 rsv; -} WMBssDesc, WMbssDesc; -#else -typedef struct WMBssDesc { - u16 length; - u16 rssi; - u8 bssid[WM_SIZE_BSSID]; - u16 ssidLength; - u8 ssid[WM_SIZE_SSID]; - u16 capaInfo; - struct { - u16 basic; - u16 support; - } rateSet; - u16 beaconPeriod; - u16 dtimPeriod; - u16 channel; - u16 cfpPeriod; - u16 cfpMaxDuration; - u16 gameInfoLength; - u16 otherElementCount; - WMGameInfo gameInfo; -} WMBssDesc, WMbssDesc; -#endif - -typedef struct WMOtherElements { - u8 count; - u8 rsv[3]; - struct { - u8 id; - u8 length; - u8 rsv[2]; - u8 * body; - } element[WM_SCAN_OTHER_ELEMENT_MAX]; -} WMOtherElements; - -typedef struct WMScanParam { - WMBssDesc * scanBuf; - u16 channel; - u16 maxChannelTime; - u8 bssid[WM_SIZE_BSSID]; - u16 rsv[9]; -} WMScanParam, WMscanParam; - -typedef struct WMScanExParam { - WMBssDesc * scanBuf; - u16 scanBufSize; - u16 channelList; - u16 maxChannelTime; - u8 bssid[WM_SIZE_BSSID]; - u16 scanType; - u16 ssidLength; - u8 ssid[WM_SIZE_SSID]; -#if WM_SSID_MASK_CUSTOMIZE - u16 ssidMatchLength; - u16 rsv2[7]; -#else - u16 rsv2[8]; -#endif -} WMScanExParam, WMscanExParam; - -typedef struct WMMPParam { - u32 mask; - - u16 minFrequency; - u16 frequency; - u16 maxFrequency; - u16 parentSize; - u16 childSize; - u16 parentInterval; - u16 childInterval; - u16 parentVCount; - u16 childVCount; - u16 defaultRetryCount; - u8 minPollBmpMode; - u8 singlePacketMode; - u8 ignoreFatalErrorMode; - u8 ignoreSizePrecheckMode; -} WMMPParam; - -typedef struct WMMPTmpParam { - u32 mask; - - u16 minFrequency; - u16 frequency; - u16 maxFrequency; - u16 defaultRetryCount; - u8 minPollBmpMode; - u8 singlePacketMode; - u8 ignoreFatalErrorMode; - u8 reserved[1]; -} WMMPTmpParam; - -typedef struct WMStatus { - u16 state; - u16 BusyApiid; - - BOOL apiBusy; - BOOL scan_continue; - BOOL mp_flag; - BOOL dcf_flag; - BOOL ks_flag; - BOOL dcf_sendFlag; - BOOL VSyncFlag; - - u8 wlVersion[WM_SIZE_WL_VERSION]; - u16 macVersion; - u16 rfVersion; - u16 bbpVersion[WM_SIZE_BBP_VERSION / sizeof(u16)]; - - u16 mp_parentSize; - u16 mp_childSize; - u16 mp_parentMaxSize; - u16 mp_childMaxSize; - u16 mp_sendSize; - u16 mp_recvSize; - u16 mp_maxSendSize; - u16 mp_maxRecvSize; - u16 mp_parentVCount; - u16 mp_childVCount; - u16 mp_parentInterval; - u16 mp_childInterval; - - OSTick mp_parentIntervalTick; - OSTick mp_childIntervalTick; - - u16 mp_minFreq; - u16 mp_freq; - u16 mp_maxFreq; - - u16 mp_vsyncOrderedFlag; - u16 mp_vsyncFlag; - s16 mp_count; - s16 mp_limitCount; - u16 mp_resumeFlag; - u16 mp_prevPollBitmap; - u16 mp_prevWmHeader; - u16 mp_prevTxop; - u16 mp_prevDataLength; - u16 mp_recvBufSel; - u16 mp_recvBufSize; - WMMpRecvBuf * mp_recvBuf[2]; - u32 * mp_sendBuf; - u16 mp_sendBufSize; - - u16 mp_ackTime; - u16 mp_waitAckFlag; - - u16 mp_readyBitmap; - - u16 mp_newFrameFlag; - u16 mp_setDataFlag; - u16 mp_sentDataFlag; - u16 mp_bufferEmptyFlag; - u16 mp_isPolledFlag; - - u16 mp_minPollBmpMode; - u16 mp_singlePacketMode; - u8 reserved_c[2]; - u16 mp_defaultRetryCount; - u16 mp_ignoreFatalErrorMode; - u16 mp_ignoreSizePrecheckMode; - - u16 mp_pingFlag; - u16 mp_pingCounter; - - u8 dcf_destAdr[WM_SIZE_MACADDR]; - u16 * dcf_sendData; - u16 dcf_sendSize; - u16 dcf_recvBufSel; - WMDcfRecvBuf * dcf_recvBuf[2]; - u16 dcf_recvBufSize; - - u16 curr_tgid; - - u16 linkLevel; - u16 minRssi; - u16 rssiCounter; - - u16 beaconIndicateFlag; - u16 wepKeyId; - u16 pwrMgtMode; - u32 miscFlags; - - u16 VSyncBitmap; - u16 valarm_queuedFlag; - - u32 v_tsf; - u32 v_tsf_bak; - u32 v_remain; - u16 valarm_counter; - - u8 reserved_e[2]; - - u8 MacAddress[WM_SIZE_MACADDR]; - u16 mode; - - WMParentParam pparam; - u8 childMacAddress[WM_NUM_MAX_CHILD][WM_SIZE_MACADDR]; - u16 child_bitmap; - - WMBssDesc * pInfoBuf; - u16 aid; - u8 parentMacAddress[WM_SIZE_MACADDR]; - u16 scan_channel; - - u8 reserved_f[4]; - - u16 wepMode; - BOOL wep_flag; - u16 wepKey[WM_SIZE_WEPKEY / sizeof(u16)]; - - u16 rate; - u16 preamble; - - u16 tmptt; - u16 retryLimit; - - u16 enableChannel; - - u16 allowedChannel; - - u16 portSeqNo[WM_NUM_MAX_CHILD + 1][WM_NUM_OF_SEQ_PORT]; - - WMPortSendQueueData sendQueueData[WM_SEND_QUEUE_NUM]; - WMPortSendQueue sendQueueFreeList; - WMPortSendQueue sendQueue[WM_PRIORITY_LEVEL]; - WMPortSendQueue readyQueue[WM_PRIORITY_LEVEL]; - OSMutex sendQueueMutex; - BOOL sendQueueInUse; - - OSTick mp_lastRecvTick[1 + WM_NUM_MAX_CHILD]; - OSTick mp_lifeTimeTick; - - u16 mp_current_minFreq; - u16 mp_current_freq; - u16 mp_current_maxFreq; - u16 mp_current_minPollBmpMode; - u16 mp_current_singlePacketMode; - u16 mp_current_defaultRetryCount; - u16 mp_current_ignoreFatalErrorMode; - u8 reserved_g[2]; -} WMStatus, WMstatus; - -typedef struct WMArm7Buf { - WMStatus * status; - - u8 reserved_a[4]; - u32 * fifo7to9; - - u8 reserved_b[4]; - - WMBssDesc connectPInfo; - - u32 requestBuf[512 / sizeof(u32)]; -} WMArm7Buf, WMarm7Buf; - -#define WM_NUM_OF_CALLBACK (WM_APIID_ASYNC_KIND_MAX - 2) - -typedef struct WMArm9Buf { - WMArm7Buf * WM7; - WMStatus * status; - u32 * indbuf; - u32 * fifo9to7; - u32 * fifo7to9; - - u16 dmaNo; - u16 scanOnlyFlag; - - WMCallbackFunc CallbackTable[WM_NUM_OF_CALLBACK]; - WMCallbackFunc indCallback; - - WMCallbackFunc portCallbackTable[WM_NUM_OF_PORT]; - void * portCallbackArgument[WM_NUM_OF_PORT]; - u32 connectedAidBitmap; - u16 myAid; - - u8 reserved1[WM_ARM9WM_BUF_SIZE - - (20 + 4 + 4 * WM_NUM_OF_CALLBACK + 4 + (4 + 4) * WM_NUM_OF_PORT + 6)]; -} WMArm9Buf, WMarm9Buf; - -typedef struct WMStartScanReq { - u16 apiid; - u16 channel; - WMBssDesc * scanBuf; - u16 maxChannelTime; - u8 bssid[WM_SIZE_BSSID]; -} WMStartScanReq, WMstartScanReq; - -typedef struct WMStartScanExReq { - u16 apiid; - u16 channelList; - WMBssDesc * scanBuf; - u16 scanBufSize; - u16 maxChannelTime; - u8 bssid[WM_SIZE_BSSID]; - u16 scanType; - u16 ssidLength; - u8 ssid[WM_SIZE_SSID]; -#if WM_SSID_MASK_CUSTOMIZE - u16 ssidMatchLength; - u16 rsv[2]; -#else - u16 rsv[3]; -#endif -} WMStartScanExReq, WMstartScanExReq; - -typedef struct WMStartConnectReq { - u16 apiid; - u16 reserved; - WMBssDesc * pInfo; - u8 ssid[WM_SIZE_CHILD_SSID]; - BOOL powerSave; - u16 reserved2; - u16 authMode; -} WMStartConnectReq, WMstartConnectReq; - -typedef struct WMMeasureChannelReq { - u16 apiid; - u16 ccaMode; - u16 edThreshold; - u16 channel; - u16 measureTime; -} WMMeasureChannelReq, WMmeasureChannelReq; - -typedef struct WMSetMPParameterReq { - u16 apiid; - u16 reserved; - - WMMPParam param; -} WMSetMPParameterReq; - -typedef struct WMStartMPReq { - u16 apiid; - u16 rsv1; - u32 * recvBuf; - u32 recvBufSize; - u32 * sendBuf; - u32 sendBufSize; - - WMMPParam param; - WMMPTmpParam tmpParam; -} WMStartMPReq; - -typedef struct WMStartTestModeReq { - u16 apiid; - u16 control; - u16 signal; - u16 rate; - u16 channel; -} WMStartTestModeReq, WMstartTestModeReq; - -typedef struct WMStartTestRxModeReq { - u16 apiid; - u16 channel; -} WMStartTestRxModeReq, WMstartTestRxModeReq; - -typedef struct WMCallback { - u16 apiid; - u16 errcode; - u16 wlCmdID; - u16 wlResult; -} WMCallback; - -typedef struct WMStartParentCallback { - u16 apiid; - u16 errcode; - u16 wlCmdID; - u16 wlResult; - u16 state; - u8 macAddress[WM_SIZE_MACADDR]; - u16 aid; - u16 reason; - u8 ssid[WM_SIZE_CHILD_SSID]; - u16 parentSize; - u16 childSize; -} WMStartParentCallback, WMstartParentCallback; - -typedef struct WMStartScanCallback { - u16 apiid; - u16 errcode; - u16 wlCmdID; - u16 wlResult; - u16 state; - u8 macAddress[WM_SIZE_MACADDR]; - u16 channel; - u16 linkLevel; - u16 ssidLength; - u16 ssid[WM_SIZE_SSID / sizeof(u16)]; - u16 gameInfoLength; - WMGameInfo gameInfo; -} WMStartScanCallback, WMstartScanCallback; - -typedef struct WMStartScanExCallback { - u16 apiid; - u16 errcode; - u16 wlCmdID; - u16 wlResult; - u16 state; - u16 channelList; - u8 reserved[2]; - u16 bssDescCount; - WMBssDesc * bssDesc[WM_SCAN_EX_PARENT_MAX]; - u16 linkLevel[WM_SCAN_EX_PARENT_MAX]; -} WMStartScanExCallback, WMstartScanExCallback; - -typedef struct WMStartConnectCallback { - u16 apiid; - u16 errcode; - u16 wlCmdID; - u16 wlResult; - u16 state; - u16 aid; - u16 reason; - u16 wlStatus; - u8 macAddress[WM_SIZE_MACADDR]; - u16 parentSize; - u16 childSize; -} WMStartConnectCallback, WMstartConnectCallback; - -typedef struct WMDisconnectCallback { - u16 apiid; - u16 errcode; - u16 wlCmdID; - u16 wlResult; - u16 tryBitmap; - u16 disconnectedBitmap; -} WMDisconnectCallback; - -typedef struct WMSetMPParameterCallback { - u16 apiid; - u16 errcode; - u32 mask; - WMMPParam oldParam; -} WMSetMPParameterCallback; - -typedef struct WMStartMPCallback { - u16 apiid; - u16 errcode; - u16 state; - u8 reserved[2]; - WMMpRecvBuf * recvBuf; - - u16 timeStamp; - u16 rate_rssi; - u8 destAdrs[6]; - u8 srcAdrs[6]; - u16 seqNum; - u16 tmptt; - u16 pollbmp; - u16 reserved2; -} WMStartMPCallback, WMstartMPCallback; - -typedef struct WMStartDCFCallback { - u16 apiid; - u16 errcode; - u16 state; - u8 reserved[2]; - WMDcfRecvBuf * recvBuf; -} WMStartDCFCallback, WMstartDCFCallback; - -typedef struct WMMeasureChannelCallback { - u16 apiid; - u16 errcode; - u16 wlCmdID; - u16 wlResult; - u16 channel; - u16 ccaBusyRatio; -} WMMeasureChannelCallback, WMmeasureChannelCallback; - -typedef struct WMGetWirelessCounterCallback { - u16 apiid; - u16 errcode; - u16 wlCmdID; - u16 wlResult; - u32 TX_Success; - u32 TX_Failed; - u32 TX_Retry; - u32 TX_AckError; - u32 TX_Unicast; - u32 TX_Multicast; - u32 TX_WEP; - u32 TX_Beacon; - u32 RX_RTS; - u32 RX_Fragment; - u32 RX_Unicast; - u32 RX_Multicast; - u32 RX_WEP; - u32 RX_Beacon; - u32 RX_FCSError; - u32 RX_DuplicateError; - u32 RX_MPDuplicateError; - u32 RX_ICVError; - u32 RX_FrameCtrlError; - u32 RX_LengthError; - u32 RX_PLCPError; - u32 RX_BufferOverflowError; - u32 RX_PathError; - u32 RX_RateError; - u32 RX_FCSOK; - u32 TX_MP; - u32 TX_KeyData; - u32 TX_NullKey; - u32 RX_MP; - u32 RX_MPACK; - u32 MPKeyResponseError[15]; -} WMGetWirelessCounterCallback, WMgetWirelessCounterCallback; - -typedef struct WMIndCallback { - u16 apiid; - u16 errcode; - u16 state; - u16 reason; -} WMIndCallback, WMindCallback; - -typedef struct WMPortSendCallback { - u16 apiid; - u16 errcode; - u16 wlCmdID; - u16 wlResult; - u16 state; - u16 port; - u16 destBitmap; - u16 restBitmap; - u16 sentBitmap; - u16 rsv; - const u16 * data; - union { - u16 size; - u16 length; - }; - u16 seqNo; - WMCallbackFunc callback; - void * arg; - u16 maxSendDataSize; - u16 maxRecvDataSize; -} WMPortSendCallback; - -typedef struct WMPortRecvCallback { - u16 apiid; - u16 errcode; - u16 state; - u16 port; - WMMpRecvBuf * recvBuf; - u16 * data; - u16 length; - u16 aid; - u8 macAddress[WM_SIZE_MACADDR]; - u16 seqNo; - void * arg; - u16 myAid; - u16 connectedAidBitmap; - u8 ssid[WM_SIZE_CHILD_SSID]; - u16 reason; - u16 rsv; - u16 maxSendDataSize; - u16 maxRecvDataSize; -} WMPortRecvCallback; - -typedef struct WMBeaconRecvIndCallback { - u16 apiid; - u16 errcode; - u16 state; - u16 tgid; - u16 wmstate; - u16 gameInfoLength; - WMGameInfo gameInfo; -} WMBeaconRecvIndCallback; - -typedef struct WMStartTestModeCallback { - u16 apiid; - u16 errcode; - u32 RFadr5; - u32 RFadr6; - u16 PllLockCheck; - u16 RFMDflag; -} WMStartTestModeCallback; - -typedef struct WMStopTestRxModeCallback { - u16 apiid; - u16 errcode; - u32 fcsOk; - u32 fcsErr; -} WMStopTestRxModeCallback; - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/wram_begin.h b/subprojects/NitroSDK/include/nitro/wram_begin.h deleted file mode 100644 index 6cc75726b6..0000000000 --- a/subprojects/NitroSDK/include/nitro/wram_begin.h +++ /dev/null @@ -1,9 +0,0 @@ -#include - -#if defined(SDK_CW) || defined(__MWERKS__) -#pragma section WRAM begin -#elif defined(SDK_ADS) -TO BE DEFINED -#elif defined(SDK_GCC) -TO BE DEFINED -#endif diff --git a/subprojects/NitroSDK/include/nitro/wram_end.h b/subprojects/NitroSDK/include/nitro/wram_end.h deleted file mode 100644 index fc963cf899..0000000000 --- a/subprojects/NitroSDK/include/nitro/wram_end.h +++ /dev/null @@ -1,7 +0,0 @@ -#if defined(SDK_CW) || defined(__MWERKS__) -#pragma section WRAM end -#elif defined(SDK_ADS) -TO BE DEFINED -#elif defined(SDK_GCC) -TO BE DEFINED -#endif diff --git a/subprojects/NitroSDK/include/nitro/wvr.h b/subprojects/NitroSDK/include/nitro/wvr.h deleted file mode 100644 index e6aa36c64b..0000000000 --- a/subprojects/NitroSDK/include/nitro/wvr.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef NITRO_WVR_H_ -#define NITRO_WVR_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef SDK_ARM9 - -#include -#include - -#else - -#include -#include - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/wvr/ARM9/wvr.h b/subprojects/NitroSDK/include/nitro/wvr/ARM9/wvr.h deleted file mode 100644 index 5fe4a1258a..0000000000 --- a/subprojects/NitroSDK/include/nitro/wvr/ARM9/wvr.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef NITRO_WVR_ARM9_WVR_H_ -#define NITRO_WVR_ARM9_WVR_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -typedef void (* WVRCallbackFunc) (void * arg, WVRResult result); - -WVRResult WVR_StartUpAsync(GXVRamARM7 vram, WVRCallbackFunc callback, void * arg); - -WVRResult WVR_TerminateAsync(WVRCallbackFunc callback, void * arg); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro/wvr/common/wvr_common.h b/subprojects/NitroSDK/include/nitro/wvr/common/wvr_common.h deleted file mode 100644 index d3556c599d..0000000000 --- a/subprojects/NitroSDK/include/nitro/wvr/common/wvr_common.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef NITRO_WVR_COMMON_WVR_COMMON_H_ -#define NITRO_WVR_COMMON_WVR_COMMON_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum WVRResult { - WVR_RESULT_SUCCESS = 0, - WVR_RESULT_OPERATING, - WVR_RESULT_DISABLE, - WVR_RESULT_INVALID_PARAM, - WVR_RESULT_FIFO_ERROR, - WVR_RESULT_ILLEGAL_STATUS, - WVR_RESULT_VRAM_LOCKED, - WVR_RESULT_FATAL_ERROR, - - WVR_RESULT_MAX -} WVRResult; - -#define WVR_PXI_COMMAND_STARTUP 0x00010000 -#define WVR_PXI_COMMAND_TERMINATE 0x00020000 - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro_sp.h b/subprojects/NitroSDK/include/nitro_sp.h deleted file mode 100644 index c8f8ec5fc7..0000000000 --- a/subprojects/NitroSDK/include/nitro_sp.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef SDK_ARM7 -#define SDK_ARM7 -#endif -#ifdef SDK_ARM9 -#undef SDK_ARM9 -#endif -#include diff --git a/subprojects/NitroSDK/include/nitro_win32.h b/subprojects/NitroSDK/include/nitro_win32.h deleted file mode 100644 index 22c3f9b4d0..0000000000 --- a/subprojects/NitroSDK/include/nitro_win32.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef NITRO_WIN32_H_ -#define NITRO_WIN32_H_ - -#ifndef SDK_FROM_TOOL -#define SDK_FROM_TOOL -#endif - -#ifndef SDK_WIN32 -#define SDK_WIN32 -#endif - -#ifndef SDK_HAS_LONG_LONG_INT -#define SDK_HAS_NO_LONG_LONG_INT_ -#endif - -#ifndef SDK_ARM7 -#define SDK_ARM9 -#endif - -#ifdef _MSC_VER -#pragma warning(disable:4201) -#endif - -#include - -#include -#include - -#include -#include - -#include - -#ifdef _MSC_VER -#pragma warning(default:4201) -#endif - -#endif diff --git a/subprojects/NitroSDK/include/nitro_wl/common/version_wl.h b/subprojects/NitroSDK/include/nitro_wl/common/version_wl.h deleted file mode 100644 index 85c8b74595..0000000000 --- a/subprojects/NitroSDK/include/nitro_wl/common/version_wl.h +++ /dev/null @@ -1,3 +0,0 @@ -#ifndef SDK_VERSION_WL -#define SDK_VERSION_WL 28300 -#endif diff --git a/subprojects/NitroSDK/include/pch/nitro_pch.h b/subprojects/NitroSDK/include/pch/nitro_pch.h deleted file mode 100644 index d137e55f35..0000000000 --- a/subprojects/NitroSDK/include/pch/nitro_pch.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef NITRO_PCH_H_ -#define NITRO_PCH_H_ - -#include - -#endif // NITRO_H_ diff --git a/subprojects/NitroSDK/libraries/card/meson.build b/subprojects/NitroSDK/libraries/card/meson.build deleted file mode 100644 index c061ddf199..0000000000 --- a/subprojects/NitroSDK/libraries/card/meson.build +++ /dev/null @@ -1,21 +0,0 @@ -libcard_srcs = files( - 'src/card_common.c', - 'src/card_spi.c', - 'src/card_backup.c', - 'src/card_rom.c', - 'src/card_request.c', - 'src/card_pullout.c', -) - -libcard_internal_includes = include_directories('src/include') - -libcard = static_library('card', - sources: [libcard_srcs, fx_const_h], - c_args: [c_args, sdk_args], - include_directories: [public_includes, libcard_internal_includes], - nasm_args: asm_args, - c_pch: nitro_pch, - pic: false -) - -nitrosdk_libs += libcard diff --git a/subprojects/NitroSDK/libraries/card/src/card_backup.c b/subprojects/NitroSDK/libraries/card/src/card_backup.c deleted file mode 100644 index b47db58bd0..0000000000 --- a/subprojects/NitroSDK/libraries/card/src/card_backup.c +++ /dev/null @@ -1,278 +0,0 @@ -#include -#include "include/card_spi.h" -#include "include/card_common.h" - -#if defined(SDK_ARM9) - -#include -SDK_DEFINE_MIDDLEWARE(cardi_backup_assert, "NINTENDO", "BACKUP"); -#include -#define SDK_USING_BACKUP() SDK_USING_MIDDLEWARE(cardi_backup_assert) - -static void CARDi_RequestStreamCommandCore (CARDiCommon * p) { - const int req_type = p->req_type; - const int req_mode = p->req_mode; - const int retry_count = p->req_retry; - u32 size = sizeof(p->backup_cache_page_buf); - - SDK_USING_BACKUP(); - - if (req_type == CARD_REQ_ERASE_SECTOR_BACKUP) { - size = CARD_GetBackupSectorSize(); - } else if (req_type == CARD_REQ_ERASE_SUBSECTOR_BACKUP) { - size = cardi_common.cmd->spec.subsect_size; - } - do{ - const u32 len = (size < p->len) ? size : p->len; - p->cmd->len = len; - - if ((p->flag & CARD_STAT_CANCEL) != 0) { - p->flag &= ~CARD_STAT_CANCEL; - p->cmd->result = CARD_RESULT_CANCELED; - break; - } - switch (req_mode) { - case CARD_REQUEST_MODE_RECV: - - DC_InvalidateRange(p->backup_cache_page_buf, len); - p->cmd->src = (u32)p->src; - p->cmd->dst = (u32)p->backup_cache_page_buf; - break; - case CARD_REQUEST_MODE_SEND: - case CARD_REQUEST_MODE_SEND_VERIFY: - - MI_CpuCopy8((const void *)p->src, p->backup_cache_page_buf, len); - DC_FlushRange(p->backup_cache_page_buf, len); - DC_WaitWriteBufferEmpty(); - p->cmd->src = (u32)p->backup_cache_page_buf; - p->cmd->dst = (u32)p->dst; - break; - case CARD_REQUEST_MODE_SPECIAL: - - p->cmd->src = (u32)p->src; - p->cmd->dst = (u32)p->dst; - break; - } - - if (!CARDi_Request(p, req_type, retry_count)) { - break; - } - - if (req_mode == CARD_REQUEST_MODE_SEND_VERIFY) { - if (!CARDi_Request(p, CARD_REQ_VERIFY_BACKUP, 1)) { - break; - } - } else if (req_mode == CARD_REQUEST_MODE_RECV) { - MI_CpuCopy8(p->backup_cache_page_buf, (void *)p->dst, len); - } - p->src += len; - p->dst += len; - p->len -= len; - }while (p->len > 0); - CARDi_EndTask(p, TRUE); -} - -static void CARDi_RequestWriteSectorCommandCore (CARDiCommon * p) { - const u32 sector_size = CARD_GetBackupSectorSize(); - SDK_USING_BACKUP(); - - if ((((u32)p->dst | p->len) & (sector_size - 1)) != 0) { - p->flag &= ~CARD_STAT_CANCEL; - p->cmd->result = CARD_RESULT_INVALID_PARAM; - } else { - for (; p->len > 0; p->len -= sector_size) { - u32 len = sector_size; - - if ((p->flag & CARD_STAT_CANCEL) != 0) { - p->flag &= ~CARD_STAT_CANCEL; - p->cmd->result = CARD_RESULT_CANCELED; - break; - } - - p->cmd->dst = (u32)p->dst; - p->cmd->len = len; - if (!CARDi_Request(p, CARD_REQ_ERASE_SECTOR_BACKUP, 1)) { - break; - } - while (len > 0) { - const u32 page = sizeof(p->backup_cache_page_buf); - - if ((p->flag & CARD_STAT_CANCEL) != 0) { - p->flag &= ~CARD_STAT_CANCEL; - p->cmd->result = CARD_RESULT_CANCELED; - break; - } - - MI_CpuCopy8((const void *)p->src, p->backup_cache_page_buf, page); - DC_FlushRange(p->backup_cache_page_buf, page); - DC_WaitWriteBufferEmpty(); - p->cmd->src = (u32)p->backup_cache_page_buf; - p->cmd->dst = (u32)p->dst; - p->cmd->len = page; - if (!CARDi_Request(p, CARD_REQ_PROGRAM_BACKUP, CARD_RETRY_COUNT_MAX)) { - break; - } - - if (p->req_mode == CARD_REQUEST_MODE_SEND_VERIFY) { - if (!CARDi_Request(p, CARD_REQ_VERIFY_BACKUP, 1)) { - break; - } - } - p->src += page; - p->dst += page; - len -= page; - } - } - } - CARDi_EndTask(p, TRUE); -} - -BOOL CARDi_RequestStreamCommand (u32 src, u32 dst, u32 len, MIDmaCallback callback, void * arg, BOOL is_async, CARDRequest req_type, int req_retry, CARDRequestMode req_mode) { - CARDiCommon * const p = &cardi_common; - - SDK_USING_BACKUP(); - - SDK_ASSERT(CARD_IsAvailable()); - SDK_ASSERT(CARD_GetCurrentBackupType() != CARD_BACKUP_TYPE_NOT_USE); - SDK_ASSERTMSG( - CARDi_GetTargetMode() == CARD_TARGET_BACKUP, - "[CARD] current locking target is not backup." - ); - - CARDi_WaitTask(p, callback, arg); - p->src = src; - p->dst = dst; - p->len = len; - p->req_type = req_type; - p->req_retry = req_retry; - p->req_mode = req_mode; - if (is_async) { - CARDi_SetTask(CARDi_RequestStreamCommandCore); - return TRUE; - } else { - cardi_common.cur_th = OS_GetCurrentThread(); - CARDi_RequestStreamCommandCore(p); - return (p->cmd->result == CARD_RESULT_SUCCESS); - } -} - -int CARDi_AccessStatus (CARDRequest command, u8 value) { - CARDiCommon * const p = &cardi_common; - - SDK_USING_BACKUP(); - - SDK_ASSERT(CARD_IsAvailable()); - SDK_ASSERT(CARD_GetCurrentBackupType() != CARD_BACKUP_TYPE_NOT_USE); - SDK_ASSERTMSG( - CARDi_GetTargetMode() == CARD_TARGET_BACKUP, - "[CARD] current locking target is not backup." - ); - - CARDi_WaitTask(p, NULL, NULL); - cardi_common.cur_th = OS_GetCurrentThread(); - p->backup_cache_page_buf[0] = value; - DC_FlushRange(p->backup_cache_page_buf, 1); - p->cmd->src = (u32)p->backup_cache_page_buf; - p->cmd->dst = (u32)p->backup_cache_page_buf; - (void)CARDi_Request(p, command, 1); - DC_InvalidateRange(p->backup_cache_page_buf, 1); - CARDi_EndTask(p, TRUE); - return (p->cmd->result == CARD_RESULT_SUCCESS) ? p->backup_cache_page_buf[0] : -1; -} - -BOOL CARDi_RequestWriteSectorCommand (u32 src, u32 dst, u32 len, BOOL verify, MIDmaCallback callback, void * arg, BOOL is_async) { - CARDiCommon * const p = &cardi_common; - - SDK_USING_BACKUP(); - - SDK_ASSERT(CARD_IsAvailable()); - SDK_ASSERT(CARD_GetCurrentBackupType() != CARD_BACKUP_TYPE_NOT_USE); - SDK_ASSERTMSG( - CARDi_GetTargetMode() == CARD_TARGET_BACKUP, - "[CARD] current locking target is not backup." - ); - - CARDi_WaitTask(p, callback, arg); - p->src = src; - p->dst = dst; - p->len = len; - p->req_mode = verify ? CARD_REQUEST_MODE_SEND_VERIFY : CARD_REQUEST_MODE_SEND; - if (is_async) { - CARDi_SetTask(CARDi_RequestWriteSectorCommandCore); - return TRUE; - } else { - cardi_common.cur_th = OS_GetCurrentThread(); - CARDi_RequestWriteSectorCommandCore(p); - return (p->cmd->result == CARD_RESULT_SUCCESS); - } -} - -CARDBackupType CARD_GetCurrentBackupType (void) { - SDK_ASSERT(CARD_IsAvailable()); - - return cardi_common.cmd->type; -} - -u32 CARD_GetBackupTotalSize (void) { - SDK_ASSERT(CARD_IsAvailable()); - - return cardi_common.cmd->spec.total_size; -} - -u32 CARD_GetBackupSectorSize (void) { - SDK_ASSERT(CARD_IsAvailable()); - - return cardi_common.cmd->spec.sect_size; -} - -u32 CARD_GetBackupPageSize (void) { - SDK_ASSERT(CARD_IsAvailable()); - - return cardi_common.cmd->spec.page_size; -} - -BOOL CARD_IdentifyBackup (CARDBackupType type) { - CARDiCommon * const p = &cardi_common; - - SDK_USING_BACKUP(); - if (type == CARD_BACKUP_TYPE_NOT_USE) { - OS_TPanic("cannot specify CARD_BACKUP_TYPE_NOT_USE."); - } - - SDK_ASSERT(CARD_IsAvailable()); - - SDK_ASSERTMSG( - (CARDi_GetTargetMode() == CARD_TARGET_BACKUP), - "CARD_IdentifyBackup() must be called with CARD locked by CARD_LockBackup()!" - ); - - CARD_CheckEnabled(); - - CARDi_WaitTask(p, NULL, NULL); - CARDi_IdentifyBackupCore(type); - cardi_common.cur_th = OS_GetCurrentThread(); - (void)CARDi_Request(p, CARD_REQ_IDENTIFY, 1); - - p->cmd->src = 0; - p->cmd->dst = (u32)p->backup_cache_page_buf; - p->cmd->len = 1; - (void)CARDi_Request(p, CARD_REQ_READ_BACKUP, 1); - CARDi_EndTask(p, TRUE); - return (p->cmd->result == CARD_RESULT_SUCCESS); -} - -BOOL CARD_WaitBackupAsync (void) { - return CARDi_WaitAsync(); -} - -BOOL CARD_TryWaitBackupAsync (void) { - return CARDi_TryWaitAsync(); -} - -void CARD_CancelBackupAsync (void) { - OSIntrMode bak_cpsr = OS_DisableInterrupts(); - cardi_common.flag |= CARD_STAT_CANCEL; - (void)OS_RestoreInterrupts(bak_cpsr); -} - -#endif diff --git a/subprojects/NitroSDK/libraries/card/src/card_common.c b/subprojects/NitroSDK/libraries/card/src/card_common.c deleted file mode 100644 index a73c3c1507..0000000000 --- a/subprojects/NitroSDK/libraries/card/src/card_common.c +++ /dev/null @@ -1,235 +0,0 @@ -#include -#include - -#include "include/card_common.h" -#include "include/card_spi.h" - -CARDiCommon cardi_common ATTRIBUTE_ALIGN(32); -static CARDiCommandArg cardi_arg ATTRIBUTE_ALIGN(32); - -static u8 cardi_thread_stack[0x400] ATTRIBUTE_ALIGN(4); - -static void CARDi_LockResource(CARDiOwner owner, CARDTargetMode target); -static void CARDi_UnlockResource(CARDiOwner owner, CARDTargetMode target); - -void CARDi_SetTask (void (* task)(CARDiCommon *)) -{ - CARDiCommon * const p = &cardi_common; - - (void)OS_SetThreadPriority(p->thread, p->priority); - - p->cur_th = p->thread; - p->task_func = task; - p->flag |= CARD_STAT_TASK; - OS_WakeupThreadDirect(p->thread); -} - -static void CARDi_LockResource (CARDiOwner owner, CARDTargetMode target) -{ - CARDiCommon * const p = &cardi_common; - OSIntrMode bak_psr = OS_DisableInterrupts(); - if (p->lock_owner == owner) { - if (p->lock_target != target) { - OS_TPanic("card-lock : can not reuse same ID for locking without unlocking!"); - } - } else { - while (p->lock_owner != OS_LOCK_ID_ERROR) { - OS_SleepThread(p->lock_queue); - } - p->lock_owner = owner; - p->lock_target = target; - } - ++p->lock_ref; - p->cmd->result = CARD_RESULT_SUCCESS; - (void)OS_RestoreInterrupts(bak_psr); -} - -static void CARDi_UnlockResource (CARDiOwner owner, CARDTargetMode target) -{ - CARDiCommon * p = &cardi_common; - OSIntrMode bak_psr = OS_DisableInterrupts(); - if ((p->lock_owner != owner) || !p->lock_ref) { - OS_Panic("card-unlock : specified ID for unlocking is not locking one!"); - } else { - if (p->lock_target != target) { - OS_Panic("card-unlock : locking target and unlocking one are different!"); - } - if (!--p->lock_ref) { - p->lock_owner = OS_LOCK_ID_ERROR; - p->lock_target = CARD_TARGET_NONE; - OS_WakeupThread(p->lock_queue); - } - } - p->cmd->result = CARD_RESULT_SUCCESS; - (void)OS_RestoreInterrupts(bak_psr); -} - -void CARDi_InitCommon (void) -{ - CARDiCommon * p = &cardi_common; - - p->lock_owner = OS_LOCK_ID_ERROR; - p->lock_ref = 0; - p->lock_target = CARD_TARGET_NONE; - -#if defined(SDK_ARM9) - p->cmd = &cardi_arg; - MI_CpuFillFast(&cardi_arg, 0x00, sizeof(cardi_arg)); - DC_FlushRange(&cardi_arg, sizeof(cardi_arg)); -#else - p->cmd = NULL; - p->recv_step = 0; -#endif - -#if defined(SDK_ARM9) - p->flush_threshold_ic = 0xFFFFFFFF; - p->flush_threshold_dc = 0xFFFFFFFF; -#endif - -#if !defined(SDK_SMALL_BUILD) && defined(SDK_ARM9) - if (!MB_IsMultiBootChild()) { - MI_CpuCopy8((const void *)HW_ROM_HEADER_BUF, (void *)HW_CARD_ROM_HEADER, - HW_CARD_ROM_HEADER_SIZE); - } -#endif - -#if !defined(SDK_NO_THREAD) - OS_InitThreadQueue(p->lock_queue); - OS_InitThreadQueue(p->busy_q); - p->priority = CARD_THREAD_PRIORITY_DEFAULT; - OS_CreateThread(p->thread, - CARDi_TaskThread, NULL, - cardi_thread_stack + sizeof(cardi_thread_stack), - sizeof(cardi_thread_stack), p->priority); - OS_WakeupThreadDirect(p->thread); -#endif - - PXI_SetFifoRecvCallback(PXI_FIFO_TAG_FS, CARDi_OnFifoRecv); - - if (!MB_IsMultiBootChild()) { - CARD_Enable(TRUE); - } -} - -static BOOL CARDi_EnableFlag = FALSE; - -BOOL CARD_IsEnabled (void) -{ - return CARDi_EnableFlag; -} - -void CARD_CheckEnabled (void) -{ - if (!CARD_IsEnabled()) { - OS_Panic("NITRO-CARD permission denied"); - } -} - -void CARD_Enable (BOOL enable) -{ - CARDi_EnableFlag = enable; -} - -BOOL CARDi_WaitAsync (void) -{ - CARDiCommon * const p = &cardi_common; - SDK_ASSERT(CARD_IsAvailable()); - - { - OSIntrMode bak_psr = OS_DisableInterrupts(); - while ((p->flag & CARD_STAT_BUSY) != 0) { - OS_SleepThread(p->busy_q); - } - (void)OS_RestoreInterrupts(bak_psr); - } - return (p->cmd->result == CARD_RESULT_SUCCESS); -} - -BOOL CARDi_TryWaitAsync (void) -{ - CARDiCommon * const p = &cardi_common; - SDK_ASSERT(CARD_IsAvailable()); - - return !(p->flag & CARD_STAT_BUSY); -} - -CARDResult CARD_GetResultCode (void) -{ - CARDiCommon * const p = &cardi_common; - SDK_ASSERT(CARD_IsAvailable()); - - return p->cmd->result; -} - -void CARD_LockRom (u16 lock_id) -{ - SDK_ASSERT(CARD_IsAvailable()); - - CARDi_LockResource(lock_id, CARD_TARGET_ROM); - -#if defined(SDK_TEG) - if (!CARDi_IsTrueRom()) { - (void)OS_LockCartridge(lock_id); - } else -#endif - { - (void)OS_LockCard(lock_id); - } -} - -void CARD_UnlockRom (u16 lock_id) -{ - SDK_ASSERT(CARD_IsAvailable()); - SDK_ASSERT(cardi_common.lock_target == CARD_TARGET_ROM); - -#if defined(SDK_TEG) - if (!CARDi_IsTrueRom()) { - (void)OS_UnLockCartridge(lock_id); - } else -#endif - { - (void)OS_UnlockCard(lock_id); - } - - CARDi_UnlockResource(lock_id, CARD_TARGET_ROM); -} - -void CARD_LockBackup (u16 lock_id) -{ - SDK_ASSERT(CARD_IsAvailable()); - - CARDi_LockResource(lock_id, CARD_TARGET_BACKUP); - -#if defined(SDK_ARM7) - (void)OS_LockCard(lock_id); -#endif -} - -void CARD_UnlockBackup (u16 lock_id) -{ - SDK_ASSERT(CARD_IsAvailable()); - SDK_ASSERT(cardi_common.lock_target == CARD_TARGET_BACKUP); - - if (!CARD_TryWaitBackupAsync()) { - OS_TWarning("called CARD_UnlockBackup() during backup asynchronous operation. (force to wait)\n"); - (void)CARD_WaitBackupAsync(); - } - -#if defined(SDK_ARM7) - (void)OS_UnlockCard(lock_id); -#endif - - CARDi_UnlockResource(lock_id, CARD_TARGET_BACKUP); -} - -void CARD_SetCacheFlushThreshold (u32 icache, u32 dcache) -{ -#if defined(SDK_ARM9) - SDK_ASSERT(CARD_IsAvailable()); - cardi_common.flush_threshold_ic = icache; - cardi_common.flush_threshold_dc = dcache; -#else - (void)icache; - (void)dcache; -#endif -} diff --git a/subprojects/NitroSDK/libraries/card/src/card_pullout.c b/subprojects/NitroSDK/libraries/card/src/card_pullout.c deleted file mode 100644 index c4f2a00bc6..0000000000 --- a/subprojects/NitroSDK/libraries/card/src/card_pullout.c +++ /dev/null @@ -1,116 +0,0 @@ -#include -#include - -static CARDPulledOutCallback CARD_UserCallback; -static BOOL CARDi_IsPulledOutFlag = FALSE; - -static void CARDi_PulledOutCallback(PXIFifoTag tag, u32 data, BOOL err); -static void CARDi_SendtoPxi(u32 data, u32 wait); - -void CARD_InitPulledOutCallback (void) -{ - PXI_Init(); - PXI_SetFifoRecvCallback(PXI_FIFO_TAG_CARD, CARDi_PulledOutCallback); - - CARD_UserCallback = NULL; -} - -static void CARDi_PulledOutCallback (PXIFifoTag tag, u32 data, BOOL err) -{ -#pragma unused(tag, err) - - u32 command = data & CARD_PXI_COMMAND_MASK; - - if (command == CARD_PXI_COMMAND_PULLED_OUT) - { - if (CARDi_IsPulledOutFlag == FALSE) - { - BOOL isTerminateImm = TRUE; - CARDi_IsPulledOutFlag = TRUE; - - if (CARD_UserCallback) - { - isTerminateImm = CARD_UserCallback(); - } - - if (isTerminateImm) - { - CARD_TerminateForPulledOut(); - } - } - } - else - { -#ifndef SDK_FINALROM - OS_Panic("illegal card pxi command."); -#else - OS_Panic(""); -#endif - } -} - -void CARD_SetPulledOutCallback (CARDPulledOutCallback callback) -{ - CARD_UserCallback = callback; -} - -BOOL CARD_IsPulledOut (void) -{ - return CARDi_IsPulledOutFlag; -} - -void CARD_TerminateForPulledOut (void) -{ -#ifndef SDK_TEG - BOOL should_be_halt = TRUE; - - MI_StopDma(0); - MI_StopDma(1); - MI_StopDma(2); - MI_StopDma(3); - - if (PAD_DetectFold()) - { - u32 res; - while ((res = PM_ForceToPowerOff()) == SPI_PXI_RESULT_EXCLUSIVE) - { - OS_SpinWait(HW_CPU_CLOCK_ARM9 / 100); - } - if (res == PM_RESULT_SUCCESS) - { - should_be_halt = FALSE; - } - } - if (should_be_halt) - { - CARDi_SendtoPxi(CARD_PXI_COMMAND_TERMINATE, 1); - } -#endif - - OS_Terminate(); -} - -void CARDi_CheckPulledOutCore (u32 id) -{ - vu32 iplCardID = *(vu32 *)((*(u16 *)HW_CHECK_DEBUGGER_SW == 0) ? HW_RED_RESERVED : HW_BOOT_CHECK_INFO_BUF); - - if (id != (u32)iplCardID) - { - OSIntrMode bak_cpsr = OS_DisableInterrupts(); - CARDi_PulledOutCallback(PXI_FIFO_TAG_CARD, CARD_PXI_COMMAND_PULLED_OUT, FALSE); - (void)OS_RestoreInterrupts(bak_cpsr); - } -} - -void CARD_CheckPulledOut (void) -{ - CARDi_CheckPulledOutCore(CARDi_ReadRomID()); -} - -static void CARDi_SendtoPxi (u32 data, u32 wait) -{ - while (PXI_SendWordByFifo(PXI_FIFO_TAG_CARD, data, FALSE) != PXI_FIFO_SUCCESS) - { - SVC_WaitByLoop((s32)wait); - } -} diff --git a/subprojects/NitroSDK/libraries/card/src/card_request.c b/subprojects/NitroSDK/libraries/card/src/card_request.c deleted file mode 100644 index 21e0e4a74f..0000000000 --- a/subprojects/NitroSDK/libraries/card/src/card_request.c +++ /dev/null @@ -1,69 +0,0 @@ -#if defined(SDK_ARM9) - -#include - -#include "include/card_common.h" -#include "include/card_spi.h" - -void CARDi_OnFifoRecv (PXIFifoTag tag, u32 data, BOOL err) { -#pragma unused(data) - if ((tag == PXI_FIFO_TAG_FS) && err) { - CARDiCommon * const p = &cardi_common; - - SDK_ASSERT(data == CARD_REQ_ACK); - p->flag &= ~CARD_STAT_REQ; - OS_WakeupThreadDirect(p->cur_th); - } -} - -void CARDi_TaskThread (void * arg) { - CARDiCommon * const p = &cardi_common; - (void)arg; - - for (;;) { - OSIntrMode bak_psr = OS_DisableInterrupts(); - while ((p->flag & CARD_STAT_TASK) == 0) { - OS_SleepThread(NULL); - } - (void)OS_RestoreInterrupts(bak_psr); - (*p->task_func) (p); - } -} - -BOOL CARDi_Request (CARDiCommon * p, int req_type, int retry_count) { - if ((p->flag & CARD_STAT_INIT_CMD) == 0) { - p->flag |= CARD_STAT_INIT_CMD; - while (!PXI_IsCallbackReady(PXI_FIFO_TAG_FS, PXI_PROC_ARM7)) { - OS_SpinWait(100); - } - - (void)CARDi_Request(p, CARD_REQ_INIT, 1); - } - - DC_FlushRange(p->cmd, sizeof(*p->cmd)); - DC_WaitWriteBufferEmpty(); - - do { - p->command = req_type; - p->flag |= CARD_STAT_REQ; - CARDi_SendPxi((u32)req_type); - - switch (req_type) { - case CARD_REQ_INIT: - CARDi_SendPxi((u32)p->cmd); - break; - } - { - OSIntrMode bak_psr = OS_DisableInterrupts(); - while ((p->flag & CARD_STAT_REQ) != 0) { - OS_SleepThread(NULL); - } - (void)OS_RestoreInterrupts(bak_psr); - } - DC_InvalidateRange(p->cmd, sizeof(*p->cmd)); - } while ((p->cmd->result == CARD_RESULT_TIMEOUT) && (--retry_count > 0)); - - return (p->cmd->result == CARD_RESULT_SUCCESS); -} - -#endif diff --git a/subprojects/NitroSDK/libraries/card/src/card_rom.c b/subprojects/NitroSDK/libraries/card/src/card_rom.c deleted file mode 100644 index 93d3cdd385..0000000000 --- a/subprojects/NitroSDK/libraries/card/src/card_rom.c +++ /dev/null @@ -1,314 +0,0 @@ - -#include - -#include "include/card_common.h" -#include "include/card_rom.h" - -CARDRomStat rom_stat ATTRIBUTE_ALIGN(32); - -extern u32 cardi_rom_base; -u32 cardi_rom_base; -u32 cardi_rom_header_addr = HW_ROM_HEADER_BUF; - -SDK_COMPILER_ASSERT(sizeof(rom_stat) % 32 == 0); - -static inline BOOL CARDi_OnReadPageDirect (CARDRomStat * arg) { - CARDiCommon * p = &cardi_common; - (void)arg; - p->src += CARD_ROM_PAGE_SIZE; - p->dst += CARD_ROM_PAGE_SIZE; - p->len -= CARD_ROM_PAGE_SIZE; - return (p->len > 0); -} - -static BOOL CARDi_ReadFromCache (CARDRomStat * p) { - CARDiCommon * c = &cardi_common; - const u32 cur_page = CARD_ALIGN_HI_BIT(c->src); - if (cur_page == (u32)p->cache_page) { - const u32 mod = c->src - cur_page; - u32 len = CARD_ROM_PAGE_SIZE - mod; - if (len > c->len) { - len = c->len; - } - MI_CpuCopy8(p->cache_buf + mod, (void *)c->dst, len); - c->src += len; - c->dst += len; - c->len -= len; - } - return (c->len > 0); -} - -#if defined(SDK_TS) || defined(SDK_ARM7) - -static void CARDi_SetRomOp (u32 cmd1, u32 cmd2) { - while ((*(vu32 *)REG_CARDCNT & CARD_START) != 0) { - ; - } - - *(vu8 *)REG_CARD_MASTER_CNT = CARDMST_SEL_ROM | CARDMST_ENABLE | CARDMST_IF_ENABLE; - { - vu8 * const p_cmd = (vu8 *)REG_CARD_CMD; - p_cmd[0] = (u8)(cmd1 >> (8 * 3)); - p_cmd[1] = (u8)(cmd1 >> (8 * 2)); - p_cmd[2] = (u8)(cmd1 >> (8 * 1)); - p_cmd[3] = (u8)(cmd1 >> (8 * 0)); - p_cmd[4] = (u8)(cmd2 >> (8 * 3)); - p_cmd[5] = (u8)(cmd2 >> (8 * 2)); - p_cmd[6] = (u8)(cmd2 >> (8 * 1)); - p_cmd[7] = (u8)(cmd2 >> (8 * 0)); - } -} - -static inline void CARDi_SetRomOpReadPage1 (u32 src) { - CARDi_SetRomOp((u32)(MROMOP_G_READ_PAGE | (src >> 8)), (u32)(src << 24)); -} - -static void CARDi_SetCardDma (void) { - CARDiCommon * const c = &cardi_common; - CARDRomStat * const p = &rom_stat; - - MIi_CardDmaCopy32(c->dma, (const void *)REG_CARD_DATA, (void *)c->dst, CARD_ROM_PAGE_SIZE); - - CARDi_SetRomOpReadPage1(c->src); - *(vu32 *)REG_CARDCNT = p->ctrl; -} - -static void CARDi_OnReadCard (void) { - CARDRomStat * const p = &rom_stat; - CARDiCommon * const c = &cardi_common; - MI_StopDma(c->dma); - if (!CARDi_OnReadPageDirect(p)) { - (void)OS_DisableIrqMask(OS_IE_CARD_DATA); - (void)OS_ResetRequestIrqMask(OS_IE_CARD_DATA); - CARDi_ReadEnd(); - } else { - CARDi_SetCardDma(); - } -} - -BOOL CARDi_TryReadCardDma (CARDRomStat * p) -#if defined(SDK_TS) -{ - CARDiCommon * const c = &cardi_common; - const u32 dst = c->dst; - u32 len = c->len; - - const BOOL is_async = !(dst & 31) && - (c->dma <= MI_DMA_MAX_NUM) && - !CARDi_IsInTcm(dst, len) && - !CARD_ALIGN_LO_BIT(c->src | len) && - (len > 0); - p->ctrl = CARDi_GetRomFlag(CARD_COMMAND_PAGE); - if (is_async) { - OSIntrMode bak_psr = OS_DisableInterrupts(); -#if defined(SDK_ARM9) - - if (len < c->flush_threshold_ic) { - IC_InvalidateRange((void *)dst, len); - } else { - IC_InvalidateAll(); - } - if (len < c->flush_threshold_dc) { - u32 pos = dst; - u32 mod = (dst & (HW_CACHE_LINE_SIZE - 1)); - if (mod) { - pos -= mod; - DC_StoreRange((void *)(pos), HW_CACHE_LINE_SIZE); - DC_StoreRange((void *)(pos + len), HW_CACHE_LINE_SIZE); - len += HW_CACHE_LINE_SIZE; - } - DC_InvalidateRange((void *)pos, len); - DC_WaitWriteBufferEmpty(); - } else { - DC_FlushAll(); - } -#endif - (void)OS_SetIrqFunction(OS_IE_CARD_DATA, CARDi_OnReadCard); - (void)OS_ResetRequestIrqMask(OS_IE_CARD_DATA); - (void)OS_EnableIrqMask(OS_IE_CARD_DATA); - (void)OS_RestoreInterrupts(bak_psr); - CARDi_SetCardDma(); - } - return is_async; -} -#else -{ - (void)p; - return FALSE; -} -#endif - -void CARDi_ReadCard (CARDRomStat * p) { -#if defined(SDK_ARM9) \ - || (defined(SDK_ARM7) && defined(SDK_ARM7_READROM_SUPPORT)) - - CARDiCommon * const c = &cardi_common; - for (;;) { - const u32 len = CARD_ROM_PAGE_SIZE; - u32 src = CARD_ALIGN_HI_BIT(c->src); - u32 dst; - - if ((src != c->src) || ((c->dst & 3) != 0) || (c->len < len)) { - dst = (u32)p->cache_buf; - p->cache_page = (void *)src; - } else { - dst = c->dst; - } - - CARDi_SetRomOpReadPage1(src); - { - u32 pos = 0; - *(vu32 *)REG_CARDCNT = p->ctrl; - for (;;) { - const u32 ctrl = *(vu32 *)REG_CARDCNT; - if ((ctrl & CARD_DATA_READY) != 0) { - u32 data = *(vu32 *)REG_CARD_DATA; - if (pos * sizeof(u32) < len) { - ((u32 *)dst)[pos++] = data; - } - } - if (!(ctrl & CARD_START)) { - break; - } - } - } - - if (dst == c->dst) { - if (!CARDi_OnReadPageDirect(p)) { - break; - } - } else { - if (!CARDi_ReadFromCache(p)) { - break; - } - } - } -#else -#pragma unused(p) -#endif -} - -u32 CARDi_ReadRomIDCore (void) { - CARDi_SetRomOp(MROMOP_G_READ_ID, 0); - *(vu32 *)REG_CARDCNT = (u32)(CARDi_GetRomFlag(CARD_COMMAND_ID) & ~CARD_LATENCY1_MASK); - while (!(*(vu32 *)REG_CARDCNT & CARD_DATA_READY)) { - } - return *(vu32 *)REG_CARD_DATA; -} - -#endif - -#if defined(SDK_ARM7) && defined(SDK_ARM7_READROM_SUPPORT) - -void CARDi_ReadRomCore (const void * src, void * dst, u32 len) { - CARDRomStat * const p = &rom_stat; - CARDiCommon * const c = &cardi_common; - - c->dma = (MI_DMA_MAX_NUM + 1); - c->src = (u32)src; - c->dst = (u32)dst; - c->len = (u32)len; - c->callback = NULL; - c->callback_arg = NULL; - p->ctrl = CARDi_GetRomFlag(CARD_COMMAND_PAGE); - cardi_common.cur_th = OS_GetCurrentThread(); - CARDi_ReadCard(p); -} - -#endif - -#if defined(SDK_TS) - -u32 CARDi_ReadRomID (void) { - CARDRomStat * const p = &rom_stat; - CARDiCommon * const c = &cardi_common; - - u32 ret = 0; - - SDK_ASSERT(CARD_IsAvailable()); - SDK_ASSERTMSG(CARDi_GetTargetMode() == CARD_TARGET_ROM, "must be locked by CARD_LockRom()"); - - CARDi_WaitTask(c, NULL, NULL); - - ret = CARDi_ReadRomIDCore(); - CARDi_ReadEnd(); - return ret; -} -#endif - -static void CARDi_ReadRomSyncCore (CARDiCommon * c) { - CARDRomStat * const p = &rom_stat; - (void)c; - - if (CARDi_ReadFromCache(p)) { - (*p->read_func) (p); - } - CARDi_ReadEnd(); -} - -void CARDi_ReadRom (u32 dma, const void * src, void * dst, u32 len, MIDmaCallback callback, void * arg, BOOL is_async) { - CARDRomStat * const p = &rom_stat; - CARDiCommon * const c = &cardi_common; - - SDK_ASSERT(CARD_IsAvailable()); - SDK_ASSERT(CARDi_GetTargetMode() == CARD_TARGET_ROM); - SDK_ASSERTMSG((dma != 0), "cannot specify DMA channel 0"); - - CARD_CheckEnabled(); - - CARDi_WaitTask(c, callback, arg); - - c->dma = dma; - c->src = (u32)((u32)src + cardi_rom_base); - c->dst = (u32)dst; - c->len = (u32)len; - if (dma <= MI_DMA_MAX_NUM) { - MI_StopDma(dma); - } - - if (CARDi_TryReadCardDma(p)) { - if (!is_async) { - CARD_WaitRomAsync(); - } - } else if (is_async) { - CARDi_SetTask(CARDi_ReadRomSyncCore); - } else { - c->cur_th = OS_GetCurrentThread(); - CARDi_ReadRomSyncCore(c); - } -} - -void CARD_Init (void) { - CARDiCommon * const p = &cardi_common; - - if (!p->flag) { - p->flag = CARD_STAT_INIT; - p->src = p->dst = p->len = 0; - p->dma = (u32) ~0; - p->callback = NULL; - p->callback_arg = NULL; - - cardi_rom_base = 0; - - CARDi_InitCommon(); - - rom_stat.read_func = CARDi_GetRomAccessor(); - -#if !defined(SDK_SMALL_BUILD) - - CARD_InitPulledOutCallback(); -#endif - } -} - -void CARD_WaitRomAsync (void) { - (void)CARDi_WaitAsync(); -} - -BOOL CARD_TryWaitRomAsync (void) { - return CARDi_TryWaitAsync(); -} - -void(*CARDi_GetRomAccessor(void)) (CARDRomStat *) { - return CARDi_ReadCard; -} diff --git a/subprojects/NitroSDK/libraries/card/src/card_spi.c b/subprojects/NitroSDK/libraries/card/src/card_spi.c deleted file mode 100644 index f95d66e2b1..0000000000 --- a/subprojects/NitroSDK/libraries/card/src/card_spi.c +++ /dev/null @@ -1,497 +0,0 @@ - -#include - -#include "include/card_common.h" -#include "include/card_spi.h" - -#define MCCNT0_SPI_CLK_MASK 0x0003 -#define MCCNT0_SPI_CLK_4M 0x0000 -#define MCCNT0_SPI_CLK_2M 0x0001 -#define MCCNT0_SPI_CLK_1M 0x0002 -#define MCCNT0_SPI_CLK_524K 0x0003 -#define MCCNT0_SPI_BUSY 0x0080 -#define MMCNT0_SEL_MASK 0x2000 -#define MMCNT0_SEL_CARD 0x0000 -#define MMCNT0_SEL_SPI 0x2000 -#define MCCNT0_INT_MASK 0x4000 -#define MCCNT0_INT_ON 0x4000 -#define MCCNT0_INT_OFF 0x0000 -#define MCCNT0_MASTER_MASK 0x8000 -#define MCCNT0_MASTER_ON 0x8000 -#define MCCNT0_MASTER_OFF 0x0000 - -typedef struct { - u32 rest_comm; - u32 src; - u32 dst; - BOOL cmp; -} CARDiParam; - -static CARDiParam cardi_param; - -static BOOL CARDi_CommandCheckBusy(void); -static void CARDi_CommArray(const void * src, void * dst, u32 n, void (*func) (CARDiParam *)); -static void CARDi_CommReadCore(CARDiParam * p); -static void CARDi_CommWriteCore(CARDiParam * p); -static void CARDi_CommVerifyCore(CARDiParam * p); - -SDK_INLINE void CARDi_CommArrayRead (void * dst, u32 len) { - CARDi_CommArray(NULL, dst, len, CARDi_CommReadCore); -} - -SDK_INLINE void CARDi_CommArrayWrite (const void * src, u32 len) { - CARDi_CommArray(src, NULL, len, CARDi_CommWriteCore); -} - -SDK_INLINE void CARDi_CommArrayVerify (const void * src, u32 len) { - CARDi_CommArray(src, NULL, len, CARDi_CommVerifyCore); -} - -SDK_INLINE void CARDi_EnableSpi (u32 cont) { - const u16 ctrl = (u16)(MCCNT0_MASTER_ON | - MCCNT0_INT_OFF | MMCNT0_SEL_SPI | MCCNT0_SPI_CLK_4M | cont); - reg_MI_MCCNT0 = ctrl; -} - -SDK_INLINE void CARDi_WaitBusy (void) { - while ((reg_MI_MCCNT0 & MCCNT0_SPI_BUSY) != 0) { - } -} - -static void CARDi_CommandBegin (int len) { - cardi_param.rest_comm = (u32)len; -} - -static void CARDi_CommandEnd (u32 force_wait, u32 timeout) { - if (force_wait + timeout > 0) { - if (force_wait > 0) { - OS_Sleep(force_wait); - } - if (timeout > 0) { - int rest = (int)(timeout - force_wait); - while (!CARDi_CommandCheckBusy() && (rest > 0)) { - int interval = (rest < 5) ? rest : 5; - OS_Sleep((u32)interval); - rest -= interval; - } - } - - if (!CARDi_CommandCheckBusy()) { - cardi_common.cmd->result = CARD_RESULT_TIMEOUT; - } - } -} - -u8 CARDi_CommandReadStatus (void) { - const u8 buf = COMM_READ_STATUS; - u8 dst; - CARDi_CommandBegin(1 + 1); - CARDi_CommArrayWrite(&buf, 1); - CARDi_CommArrayRead(&dst, 1); - CARDi_CommandEnd(0, 0); - return dst; -} - -static BOOL CARDi_CommandCheckBusy (void) { - return ((CARDi_CommandReadStatus() & COMM_STATUS_WIP_BIT) == 0); -} - -static BOOL CARDi_WaitPrevCommand (void) { - CARDi_CommandEnd(0, 50); - - if (cardi_common.cmd->result == CARD_RESULT_TIMEOUT) { - cardi_common.cmd->result = CARD_RESULT_NO_RESPONSE; - return FALSE; - } - return TRUE; -} - -void CARDi_CommArray (const void * src, void * dst, u32 len, void (*func) (CARDiParam *)) { - CARDiParam * const p = &cardi_param; - p->src = (u32)src; - p->dst = (u32)dst; - CARDi_EnableSpi(CSPI_CONTINUOUS_ON); - for (; len > 0; --len) { - if (!--p->rest_comm) { - CARDi_EnableSpi(CSPI_CONTINUOUS_OFF); - } - CARDi_WaitBusy(); - (*func) (p); - } - if (!p->rest_comm) { - reg_MI_MCCNT0 = (u16)(MCCNT0_MASTER_OFF | MCCNT0_INT_OFF); - } -} - -void CARDi_CommReadCore (CARDiParam * p) { - reg_MI_MCD0 = 0; - CARDi_WaitBusy(); - MI_WriteByte((void *)p->dst, (u8)reg_MI_MCD0); - ++p->dst; -} - -void CARDi_CommWriteCore (CARDiParam * p) { - vu16 tmp; - reg_MI_MCD0 = (u16)MI_ReadByte((void *)p->src); - ++p->src; - CARDi_WaitBusy(); - tmp = reg_MI_MCD0; -} - -void CARDi_CommVerifyCore (CARDiParam * p) { - reg_MI_MCD0 = 0; - CARDi_WaitBusy(); - - if ((u8)reg_MI_MCD0 != MI_ReadByte((void *)p->src)) { - p->cmp = FALSE; - if (p->rest_comm > 1) { - p->rest_comm = 1; - } - } - ++p->src; -} - -static void CARDi_WriteEnable (void) { - static const u8 arg[1] = {COMM_WRITE_ENABLE, }; - CARDi_CommandBegin(sizeof(arg)); - CARDi_CommArrayWrite(arg, sizeof(arg)); - CARDi_CommandEnd(0, 0); -} - -static void CARDi_SendSpiAddressingCommand (u32 addr, u32 mode) { - const u32 width = cardi_common.cmd->spec.addr_width; - u32 addr_cmd; - switch (width) { - case 1: - - addr_cmd = (u32)(mode | ((addr >> 5) & 0x8) | ((addr & 0xFF) << 8)); - break; - case 2: - addr_cmd = (u32)(mode | (addr & 0xFF00) | ((addr & 0xFF) << 16)); - break; - case 3: - addr_cmd = (u32)(mode | - ((addr >> 8) & 0xFF00) | ((addr & 0xFF00) << 8) | ((addr & 0xFF) << 24)); - break; - default: - SDK_ASSERT(FALSE); - break; - } - CARDi_CommArrayWrite(&addr_cmd, (u32)(1 + width)); -} - -void CARDi_InitStatusRegister (void) { - const u8 stat = cardi_common.cmd->spec.initial_status; - if (stat != 0xFF) { - static BOOL status_checked = FALSE; - if (!status_checked) { - if (CARDi_CommandReadStatus() != stat) { - CARDi_SetWriteProtectCore(stat); - } - status_checked = TRUE; - } - } -} - -void CARDi_IdentifyBackupCore (CARDBackupType type) { - { - CARDiCommandArg * const p = cardi_common.cmd; - - MI_CpuFill8(&p->spec, 0, sizeof(p->spec)); - p->type = type; - p->spec.caps = (CARD_BACKUP_CAPS_AVAILABLE | CARD_BACKUP_CAPS_READ_STATUS); - if (type != CARD_BACKUP_TYPE_NOT_USE) { - const u32 size = (u32)(1 << ((type >> CARD_BACKUP_TYPE_SIZEBIT_SHIFT) & - CARD_BACKUP_TYPE_SIZEBIT_MASK)); - const int device = - ((type >> CARD_BACKUP_TYPE_DEVICE_SHIFT) & CARD_BACKUP_TYPE_DEVICE_MASK); - const int vender = - ((type >> CARD_BACKUP_TYPE_VENDER_SHIFT) & CARD_BACKUP_TYPE_VENDER_MASK); - - p->spec.total_size = size; - - p->spec.initial_status = 0xFF; - if (device == CARD_BACKUP_TYPE_DEVICE_EEPROM) { - switch (size) { - default: - goto invalid_type; - case 0x000200: - p->spec.page_size = 0x10; - p->spec.addr_width = 1; - p->spec.program_page = 5; - p->spec.initial_status = 0xF0; - break; - case 0x002000: - p->spec.page_size = 0x0020; - p->spec.addr_width = 2; - p->spec.program_page = 5; - p->spec.initial_status = 0x00; - break; - case 0x010000: - p->spec.page_size = 0x0080; - p->spec.addr_width = 2; - p->spec.program_page = 10; - p->spec.initial_status = 0x00; - break; - } - p->spec.sect_size = p->spec.page_size; - p->spec.caps |= CARD_BACKUP_CAPS_READ; - p->spec.caps |= CARD_BACKUP_CAPS_PROGRAM; - p->spec.caps |= CARD_BACKUP_CAPS_VERIFY; - p->spec.caps |= CARD_BACKUP_CAPS_WRITE_STATUS; - } else if (device == CARD_BACKUP_TYPE_DEVICE_FLASH) { - switch (size) { - default: - goto invalid_type; - case 0x040000: - case 0x080000: - case 0x100000: - p->spec.write_page = 25; - p->spec.write_page_total = 300; - p->spec.erase_page = 300; - p->spec.erase_sector = 5000; - p->spec.caps |= CARD_BACKUP_CAPS_WRITE; - p->spec.caps |= CARD_BACKUP_CAPS_ERASE_PAGE; - break; - case 0x200000: - p->spec.write_page = 23; - p->spec.write_page_total = 300; - p->spec.erase_sector = 500; - p->spec.erase_sector_total = 5000; - p->spec.erase_chip = 10000; - p->spec.erase_chip_total = 60000; - p->spec.initial_status = 0x00; - p->spec.caps |= CARD_BACKUP_CAPS_WRITE; - p->spec.caps |= CARD_BACKUP_CAPS_ERASE_PAGE; - p->spec.caps |= CARD_BACKUP_CAPS_ERASE_CHIP; - p->spec.caps |= CARD_BACKUP_CAPS_WRITE_STATUS; - break; - case 0x400000: - p->spec.erase_sector = 600; - p->spec.erase_sector_total = 3000; - p->spec.erase_subsector = 70; - p->spec.erase_subsector_total = 150; - p->spec.erase_chip = 23000; - p->spec.erase_chip_total = 800000; - p->spec.initial_status = 0x00; - p->spec.subsect_size = 0x1000; - p->spec.caps |= CARD_BACKUP_CAPS_ERASE_SUBSECTOR; - p->spec.caps |= CARD_BACKUP_CAPS_ERASE_CHIP; - p->spec.caps |= CARD_BACKUP_CAPS_WRITE_STATUS; - break; - case 0x800000: - if (vender == 0) { - p->spec.erase_sector = 1000; - p->spec.erase_sector_total = 3000; - p->spec.erase_chip = 68000; - p->spec.erase_chip_total = 160000; - p->spec.initial_status = 0x00; - p->spec.caps |= CARD_BACKUP_CAPS_ERASE_CHIP; - p->spec.caps |= CARD_BACKUP_CAPS_WRITE_STATUS; - } else if (vender == 1) { - p->spec.erase_sector = 1000; - p->spec.erase_sector_total = 3000; - p->spec.erase_chip = 68000; - p->spec.erase_chip_total = 160000; - p->spec.initial_status = 0x84; - p->spec.caps |= CARD_BACKUP_CAPS_ERASE_CHIP; - p->spec.caps |= CARD_BACKUP_CAPS_WRITE_STATUS; - } - break; - } - p->spec.sect_size = 0x010000; - p->spec.page_size = 0x0100; - p->spec.addr_width = 3; - p->spec.program_page = 5; - p->spec.caps |= CARD_BACKUP_CAPS_READ; - p->spec.caps |= CARD_BACKUP_CAPS_PROGRAM; - p->spec.caps |= CARD_BACKUP_CAPS_VERIFY; - p->spec.caps |= CARD_BACKUP_CAPS_ERASE_SECTOR; - } else if (device == CARD_BACKUP_TYPE_DEVICE_FRAM) { - switch (size) { - default: - goto invalid_type; - case 0x002000: - case 0x008000: - break; - } - p->spec.page_size = size; - p->spec.sect_size = size; - p->spec.addr_width = 2; - p->spec.initial_status = 0x00; - p->spec.caps |= CARD_BACKUP_CAPS_READ; - p->spec.caps |= CARD_BACKUP_CAPS_PROGRAM; - p->spec.caps |= CARD_BACKUP_CAPS_VERIFY; - p->spec.caps |= CARD_BACKUP_CAPS_WRITE_STATUS; - } else { - invalid_type: - p->type = CARD_BACKUP_TYPE_NOT_USE; - p->spec.total_size = 0; - cardi_common.cmd->result = CARD_RESULT_UNSUPPORTED; - return; - } - } - } -} - -void CARDi_ReadBackupCore (u32 src, void * dst, u32 len) { - if (CARDi_WaitPrevCommand()) { - CARDiCommandArg * const cmd = cardi_common.cmd; - - CARDi_CommandBegin((int)(1 + cmd->spec.addr_width + len)); - CARDi_SendSpiAddressingCommand(src, COMM_READ_ARRAY); - CARDi_CommArrayRead(dst, len); - CARDi_CommandEnd(0, 0); - } -} - -void CARDi_ProgramBackupCore (u32 dst, const void * src, u32 len) { - if (CARDi_WaitPrevCommand()) { - CARDiCommandArg * const cmd = cardi_common.cmd; - - const u32 page = cmd->spec.page_size; - while (len > 0) { - const u32 mod = (u32)(dst & (page - 1)); - u32 size = page - mod; - if (size > len) { - size = len; - } - CARDi_WriteEnable(); - CARDi_CommandBegin((int)(1 + cmd->spec.addr_width + size)); - CARDi_SendSpiAddressingCommand(dst, COMM_PROGRAM_PAGE); - CARDi_CommArrayWrite(src, size); - CARDi_CommandEnd(cmd->spec.program_page, 0); - if (cmd->result != CARD_RESULT_SUCCESS) { - break; - } - src = (const void *)((u32)src + size); - dst += size; - len -= size; - } - } -} - -void CARDi_WriteBackupCore (u32 dst, const void * src, u32 len) { - if (CARDi_WaitPrevCommand()) { - CARDiCommandArg * const cmd = cardi_common.cmd; - - const u32 page = cmd->spec.page_size; - while (len > 0) { - const u32 mod = (u32)(dst & (page - 1)); - u32 size = page - mod; - if (size > len) { - size = len; - } - CARDi_WriteEnable(); - CARDi_CommandBegin((int)(1 + cmd->spec.addr_width + size)); - CARDi_SendSpiAddressingCommand(dst, COMM_PAGE_WRITE); - CARDi_CommArrayWrite(src, size); - CARDi_CommandEnd(cmd->spec.write_page, cmd->spec.write_page_total); - if (cmd->result != CARD_RESULT_SUCCESS) { - break; - } - src = (const void *)((u32)src + size); - dst += size; - len -= size; - } - } -} - -void CARDi_VerifyBackupCore (u32 dst, const void * src, u32 len) { - if (CARDi_WaitPrevCommand()) { - CARDiCommandArg * const cmd = cardi_common.cmd; - - cardi_param.cmp = TRUE; - CARDi_CommandBegin((int)(1 + cmd->spec.addr_width + len)); - CARDi_SendSpiAddressingCommand(dst, COMM_READ_ARRAY); - CARDi_CommArrayVerify(src, len); - CARDi_CommandEnd(0, 0); - if ((cmd->result == CARD_RESULT_SUCCESS) && !cardi_param.cmp) { - cmd->result = CARD_RESULT_FAILURE; - } - } -} - -void CARDi_EraseBackupSectorCore (u32 dst, u32 len) { - CARDiCommandArg * const cmd = cardi_common.cmd; - const u32 sector = cmd->spec.sect_size; - - if (((dst | len) & (sector - 1)) != 0) { - cmd->result = CARD_RESULT_INVALID_PARAM; - } else if (CARDi_WaitPrevCommand()) { - while (len > 0) { - CARDi_WriteEnable(); - CARDi_CommandBegin((int)(1 + cmd->spec.addr_width + 0)); - CARDi_SendSpiAddressingCommand(dst, COMM_SECTOR_ERASE); - CARDi_CommandEnd(cmd->spec.erase_sector, cmd->spec.erase_sector_total); - if (cmd->result != CARD_RESULT_SUCCESS) { - break; - } - dst += sector; - len -= sector; - } - } -} - -void CARDi_EraseBackupSubSectorCore (u32 dst, u32 len) { - CARDiCommandArg * const cmd = cardi_common.cmd; - const u32 sector = cmd->spec.subsect_size; - - if (((dst | len) & (sector - 1)) != 0) { - cmd->result = CARD_RESULT_INVALID_PARAM; - } else if (CARDi_WaitPrevCommand()) { - while (len > 0) { - CARDi_WriteEnable(); - CARDi_CommandBegin((int)(1 + cmd->spec.addr_width + 0)); - CARDi_SendSpiAddressingCommand(dst, COMM_SUBSECTOR_ERASE); - CARDi_CommandEnd(cmd->spec.erase_subsector, cmd->spec.erase_subsector_total); - if (cmd->result != CARD_RESULT_SUCCESS) { - break; - } - dst += sector; - len -= sector; - } - } -} - -void CARDi_EraseChipCore (void) { - if (CARDi_WaitPrevCommand()) { - CARDiCommandArg * const cmd = cardi_common.cmd; - static const u8 arg[1] = {COMM_CHIP_ERASE, }; - CARDi_WriteEnable(); - CARDi_CommandBegin(sizeof(arg)); - CARDi_CommArrayWrite(arg, sizeof(arg)); - CARDi_CommandEnd(cmd->spec.erase_chip, cmd->spec.erase_chip_total); - } -} - -void CARDi_SetWriteProtectCore (u16 stat) { - if (CARDi_WaitPrevCommand()) { - CARDiCommandArg * const cmd = cardi_common.cmd; - int retry_count = 10; - u8 arg[2]; - arg[0] = COMM_WRITE_STATUS; - arg[1] = (u8)stat; - do{ - CARDi_WriteEnable(); - CARDi_CommandBegin(1 + 1); - CARDi_CommArrayWrite(&arg, sizeof(arg)); - CARDi_CommandEnd(5, 0); - }while ((cmd->result == CARD_RESULT_TIMEOUT) && (--retry_count > 0)); - } -} - -#if 0 - -static void CARDi_ReadIdCore (void) { - cardi_common.cmd->result = CARD_RESULT_UNSUPPORTED; -} - -static void CARDi_ErasePageCore (u32 dst) { - CARDi_WriteEnable(); - CARDi_CommandBegin(1 + cardi_common.cmd->spec.addr_width + 0); - CARDi_SendSpiAddressingCommand(dst, COMM_PAGE_ERASE); - CARDi_CommandEnd(cardi_common.cmd->spec.erase_page, 0); -} - -#endif diff --git a/subprojects/NitroSDK/libraries/card/src/include/card_common.h b/subprojects/NitroSDK/libraries/card/src/include/card_common.h deleted file mode 100644 index a3e2f28fe6..0000000000 --- a/subprojects/NitroSDK/libraries/card/src/include/card_common.h +++ /dev/null @@ -1,199 +0,0 @@ -#ifndef __NITRO_CARD_COMMON_H__ -#define __NITRO_CARD_COMMON_H__ - -#include -#include - -#define COUNT_OF_(array) (sizeof(array) / sizeof(*array)) - -#define BIT_MASK(n) ((1 << (n)) - 1) -#define ALIGN_MASK(a) ((a) - 1) -#define ALIGN_BYTE(n, a) (((u32)(n) + ALIGN_MASK(a)) & ~ALIGN_MASK(a)) -#define CARD_ALIGN_HI_BIT(n) (((u32)(n)) & ~ALIGN_MASK(CARD_ROM_PAGE_SIZE)) -#define CARD_ALIGN_LO_BIT(n) (((u32)(n)) & ALIGN_MASK(CARD_ROM_PAGE_SIZE)) - -enum { - CARD_STAT_INIT = (1 << 0), - CARD_STAT_INIT_CMD = (1 << 1), - CARD_STAT_BUSY = (1 << 2), - CARD_STAT_TASK = (1 << 3), - CARD_STAT_RECV = (1 << 4), - CARD_STAT_REQ = (1 << 5), - CARD_STAT_CANCEL = (1 << 6) -}; - -typedef enum { - CARD_TARGET_NONE, - CARD_TARGET_ROM, - CARD_TARGET_BACKUP -} CARDTargetMode; - -#define CARD_BACKUP_CAPS_AVAILABLE (u32)(CARD_BACKUP_CAPS_READ - 1) -#define CARD_BACKUP_CAPS_READ (u32)(1 << CARD_REQ_READ_BACKUP) -#define CARD_BACKUP_CAPS_WRITE (u32)(1 << CARD_REQ_WRITE_BACKUP) -#define CARD_BACKUP_CAPS_PROGRAM (u32)(1 << CARD_REQ_PROGRAM_BACKUP) -#define CARD_BACKUP_CAPS_VERIFY (u32)(1 << CARD_REQ_VERIFY_BACKUP) -#define CARD_BACKUP_CAPS_ERASE_PAGE (u32)(1 << CARD_REQ_ERASE_PAGE_BACKUP) -#define CARD_BACKUP_CAPS_ERASE_SECTOR (u32)(1 << CARD_REQ_ERASE_SECTOR_BACKUP) -#define CARD_BACKUP_CAPS_ERASE_CHIP (u32)(1 << CARD_REQ_ERASE_CHIP_BACKUP) -#define CARD_BACKUP_CAPS_READ_STATUS (u32)(1 << CARD_REQ_READ_STATUS) -#define CARD_BACKUP_CAPS_WRITE_STATUS (u32)(1 << CARD_REQ_WRITE_STATUS) -#define CARD_BACKUP_CAPS_ERASE_SUBSECTOR (u32)(1 << CARD_REQ_ERASE_SUBSECTOR_BACKUP) - -typedef s32 CARDiOwner; - -typedef struct CARDiCommandArg { - CARDResult result; - CARDBackupType type; - u32 id; - u32 src; - u32 dst; - u32 len; - - struct { - u32 total_size; - u32 sect_size; - u32 subsect_size; - u32 page_size; - u32 addr_width; - - u32 program_page; - u32 write_page; - u32 write_page_total; - u32 erase_chip; - u32 erase_chip_total; - u32 erase_sector; - u32 erase_sector_total; - u32 erase_subsector; - u32 erase_subsector_total; - u32 erase_page; - - u8 initial_status; - u8 padding1[3]; - u32 caps; - u8 padding2[4]; - } spec; -} CARDiCommandArg; - -typedef struct CARDiCommon { - CARDiCommandArg * cmd; - - int command; -#if defined(SDK_ARM7) - u32 recv_step; -#endif - - volatile CARDiOwner lock_owner; - volatile int lock_ref; -#ifndef SDK_THREAD_INFINITY - OSThreadQueue lock_queue[4 / sizeof(OSThreadQueue)]; -#else - OSThreadQueue lock_queue[1]; -#endif - CARDTargetMode lock_target; - - u32 src; - u32 dst; - u32 len; - u32 dma; - CARDRequest req_type; - int req_retry; - CARDRequestMode req_mode; - MIDmaCallback callback; - void * callback_arg; - void (* task_func)(struct CARDiCommon *); - - OSThread thread[1]; - OSThread * cur_th; - - u32 priority; -#ifndef SDK_THREAD_INFINITY - OSThreadQueue busy_q[4 / sizeof(OSThreadQueue)]; -#else - OSThreadQueue busy_q[1]; -#endif - - volatile u32 flag; - -#if defined(SDK_ARM9) - u32 flush_threshold_ic; - u32 flush_threshold_dc; -#endif - -#ifndef SDK_THREAD_INFINITY - u8 dummy[20]; -#endif - - u8 backup_cache_page_buf[256] ATTRIBUTE_ALIGN(32); -} CARDiCommon; - -SDK_COMPILER_ASSERT(sizeof(CARDiCommandArg) % 32 == 0); - -SDK_COMPILER_ASSERT(sizeof(CARDiCommon) % 32 == 0); - -extern CARDiCommon cardi_common; - -static inline void CARDi_SendPxi (u32 data) -{ - while (PXI_SendWordByFifo(PXI_FIFO_TAG_FS, data, TRUE) < 0) { - ; - } -} - -void CARDi_OnFifoRecv(PXIFifoTag tag, u32 data, BOOL err); - -static inline CARDTargetMode CARDi_GetTargetMode (void) -{ - return cardi_common.lock_target; -} - -BOOL CARDi_WaitAsync(void); - -BOOL CARDi_TryWaitAsync(void); - -static inline void CARDi_WaitTask (CARDiCommon * p, MIDmaCallback callback, void * callback_arg) -{ - OSIntrMode bak_psr = OS_DisableInterrupts(); - while ((p->flag & CARD_STAT_BUSY) != 0) { - OS_SleepThread(p->busy_q); - } - p->flag |= CARD_STAT_BUSY; - p->callback = callback; - p->callback_arg = callback_arg; - (void)OS_RestoreInterrupts(bak_psr); -} - -void CARDi_SetTask(void (* task)(CARDiCommon *)); - -static inline void CARDi_EndTask (CARDiCommon * p, BOOL is_own_task) -{ - const MIDmaCallback func = p->callback; - void * const arg = p->callback_arg; - - { - OSIntrMode bak_psr = OS_DisableInterrupts(); - - p->flag &= ~(CARD_STAT_BUSY | CARD_STAT_TASK | CARD_STAT_CANCEL); - OS_WakeupThread(p->busy_q); - if ((p->flag & CARD_STAT_RECV) != 0) { - OS_WakeupThreadDirect(p->thread); - } - (void)OS_RestoreInterrupts(bak_psr); - } - - if (is_own_task && func) { - (*func)(arg); - } -} - -void CARDi_TaskThread(void * arg); - -void CARDi_InitCommon(void); - -#if defined(SDK_ARM9) - -BOOL CARDi_Request(CARDiCommon * p, int req_type, int retry_max); - -#endif - -#endif diff --git a/subprojects/NitroSDK/libraries/card/src/include/card_rom.h b/subprojects/NitroSDK/libraries/card/src/include/card_rom.h deleted file mode 100644 index 79c812ac55..0000000000 --- a/subprojects/NitroSDK/libraries/card/src/include/card_rom.h +++ /dev/null @@ -1,107 +0,0 @@ -#if !defined(NITRO_LIBRARIES_CARD_ROM_H__) -#define NITRO_LIBRARIES_CARD_ROM_H__ - -#include - -#include "card_common.h" - -#if defined(SDK_TEG) -#define SDK_ARM7_READROM_SUPPORT -#endif - -#define REG_CARD_MASTER_CNT (HW_REG_BASE + 0x1A1) -#define REG_CARDCNT (HW_REG_BASE + 0x1A4) -#define REG_CARD_CMD (HW_REG_BASE + 0x1A8) -#define REG_CARD_DATA (HW_REG_BASE + 0x100010) - -#define CARDMST_SEL_ROM 0x00 -#define CARDMST_IF_ENABLE 0x40 -#define CARDMST_ENABLE 0x80 - -#define CARD_DATA_READY 0x00800000 -#define CARD_COMMAND_PAGE 0x01000000 -#define CARD_COMMAND_ID 0x07000000 -#define CARD_COMMAND_MASK 0x07000000 -#define CARD_RESET_HI 0x20000000 -#define CARD_RESET_LO 0x00000000 -#define CARD_ACCESS_MODE 0x40000000 -#define CARD_READ_MODE 0x00000000 -#define CARD_WRITE_MODE 0x40000000 -#define CARD_START 0x80000000 -#define CARD_LATENCY1_MASK 0x00001FFF - -#define MROMOP_G_READ_ID 0xB8000000 -#define MROMOP_G_READ_PAGE 0xB7000000 - -typedef struct CARDRomStat { - void (* read_func) (struct CARDRomStat *); - u32 ctrl; - u8 * cache_page; - u32 dummy[5]; - u8 cache_buf[CARD_ROM_PAGE_SIZE]; -} CARDRomStat; - -SDK_COMPILER_ASSERT(sizeof(CARDRomStat) % 32 == 0); - -extern CARDRomStat rom_stat; -extern u32 cardi_rom_header_addr; - -static inline BOOL CARDi_IsInTcm (u32 buf, u32 len) { -#if defined(SDK_ARM9) - const u32 i = OS_GetITCMAddress(); - const u32 d = OS_GetDTCMAddress(); - return - ((i < buf + len) && (i + HW_ITCM_SIZE > buf)) || - ((d < buf + len) && (d + HW_DTCM_SIZE > buf)); -#else -#pragma unused(buf) -#pragma unused(len) - return FALSE; -#endif -} - -static inline u32 CARDi_GetRomFlag (u32 flag) { - const u32 rom_ctrl = *(vu32 *)(cardi_rom_header_addr + 0x60); - return (u32)((rom_ctrl & ~CARD_COMMAND_MASK) | flag | - CARD_READ_MODE | CARD_START | CARD_RESET_HI); -} - -void CARDi_CheckPulledOutCore(u32 id); - -#if defined(SDK_TS) || defined(SDK_ARM7) - -u32 CARDi_ReadRomIDCore(void); - -#endif - -static inline void CARDi_ReadEnd (void) { - CARDiCommon * const p = &cardi_common; -#ifdef SDK_ARM9 - - CARDi_CheckPulledOutCore(CARDi_ReadRomIDCore()); -#endif - p->cmd->result = CARD_RESULT_SUCCESS; - CARDi_EndTask(p, TRUE); -} - -#if defined(SDK_ARM7) - -void CARDi_ReadRomCore(const void * src, void * dst, u32 len); - -#endif - -void(*CARDi_GetRomAccessor(void)) (CARDRomStat *); - -void CARDi_ReadCard(CARDRomStat * p); - -BOOL CARDi_TryReadCardDma(CARDRomStat * p); - -#if defined(SDK_TEG) - -void CARDi_ReadCartridge(CARDRomStat * p); - -void CARDi_ReadPxi(CARDRomStat * p); - -#endif - -#endif diff --git a/subprojects/NitroSDK/libraries/card/src/include/card_spi.h b/subprojects/NitroSDK/libraries/card/src/include/card_spi.h deleted file mode 100644 index 1653ff5127..0000000000 --- a/subprojects/NitroSDK/libraries/card/src/include/card_spi.h +++ /dev/null @@ -1,52 +0,0 @@ -#ifndef __NITRO_CARD_SPI_H__ -#define __NITRO_CARD_SPI_H__ - -#define CSPI_CONTINUOUS_ON 0x0040 -#define CSPI_CONTINUOUS_OFF 0x0000 - -#define COMM_WRITE_STATUS 0x01 -#define COMM_PROGRAM_PAGE 0x02 -#define COMM_READ_ARRAY 0x03 -#define COMM_WRITE_DISABLE 0x04 -#define COMM_READ_STATUS 0x05 -#define COMM_WRITE_ENABLE 0x06 - -#define COMM_PAGE_WRITE 0x0A -#define COMM_PAGE_ERASE 0xDB -#define COMM_SECTOR_ERASE 0xD8 -#define COMM_SUBSECTOR_ERASE 0x20 -#define COMM_CHIP_ERASE 0xC7 -#define CARDFLASH_READ_BYTES_FAST 0x0B -#define CARDFLASH_DEEP_POWDOWN 0xB9 -#define CARDFLASH_WAKEUP 0xAB - -#define COMM_STATUS_WIP_BIT 0x01 -#define COMM_STATUS_WEL_BIT 0x02 -#define COMM_STATUS_BP0_BIT 0x04 -#define COMM_STATUS_BP1_BIT 0x08 -#define COMM_STATUS_BP2_BIT 0x10 -#define COMM_STATUS_WPBEN_BIT 0x80 - -void CARDi_InitStatusRegister(void); - -void CARDi_IdentifyBackupCore(CARDBackupType type); - -u8 CARDi_CommandReadStatus(void); - -void CARDi_ReadBackupCore(u32 src, void * dst, u32 len); - -void CARDi_ProgramBackupCore(u32 dst, const void * src, u32 len); - -void CARDi_WriteBackupCore(u32 dst, const void * src, u32 len); - -void CARDi_VerifyBackupCore(u32 dst, const void * src, u32 len); - -void CARDi_EraseBackupSectorCore(u32 dst, u32 len); - -void CARDi_EraseBackupSubSectorCore(u32 dst, u32 len); - -void CARDi_EraseChipCore(void); - -void CARDi_SetWriteProtectCore(u16 stat); - -#endif diff --git a/subprojects/NitroSDK/libraries/cp/meson.build b/subprojects/NitroSDK/libraries/cp/meson.build deleted file mode 100644 index 0368791e84..0000000000 --- a/subprojects/NitroSDK/libraries/cp/meson.build +++ /dev/null @@ -1,11 +0,0 @@ -libcp_srcs = files('src/cp_context.c') - -libcp = static_library('cp', - sources: [libcp_srcs, fx_const_h], - c_args: [c_args, sdk_args], - include_directories: public_includes, - c_pch: nitro_pch, - pic: false -) - -nitrosdk_libs += libcp diff --git a/subprojects/NitroSDK/libraries/cp/src/cp_context.c b/subprojects/NitroSDK/libraries/cp/src/cp_context.c deleted file mode 100644 index 4b8bd7a635..0000000000 --- a/subprojects/NitroSDK/libraries/cp/src/cp_context.c +++ /dev/null @@ -1,47 +0,0 @@ -#include - -#if defined(SDK_TCM_APPLY) && defined(SDK_ARM9) -#include -#endif -#include - -asm void CP_SaveContext (register CPContext * context) { - ldr r1, = REG_DIV_NUMER_ADDR - stmfd sp !, {r4} - ldmia r1, {r2 - r4, r12} - stmia r0 !, {r2 - r4, r12} - ldrh r12, [r1, #REG_DIVCNT_OFFSET - REG_DIV_NUMER_OFFSET] - add r1, r1, #REG_SQRT_PARAM_OFFSET - REG_DIV_NUMER_OFFSET - ldmia r1, {r2 - r3} - stmia r0 !, {r2 - r3} - and r12, r12, #REG_CP_DIVCNT_MODE_MASK - ldrh r2, [r1, #REG_SQRTCNT_OFFSET - REG_SQRT_PARAM_OFFSET] - strh r12, [r0] - and r2, r2, #REG_CP_SQRTCNT_MODE_MASK - strh r2, [r0, #2] - ldmfd sp !, {r4} - bx lr -} - -asm void CPi_RestoreContext (register const CPContext * context) { - stmfd sp !, {r4} - ldr r1, = REG_DIV_NUMER_ADDR - ldmia r0, {r2 - r4, r12} - stmia r1, {r2 - r4, r12} - ldrh r2, [r0, #CPContext.div_mode] - ldrh r3, [r0, #CPContext.sqrt_mode] - strh r2, [r1, #REG_DIVCNT_OFFSET - REG_DIV_NUMER_OFFSET] - strh r3, [r1, #REG_SQRTCNT_OFFSET - REG_DIV_NUMER_OFFSET] - add r0, r0, #CPContext.sqrt - add r1, r1, #REG_SQRT_PARAM_OFFSET - REG_DIV_NUMER_OFFSET - ldmia r0, {r2 - r3} - stmia r1, {r2 - r3} - ldmfd sp !, {r4} - bx lr -} - -#include - -#if defined(SDK_TCM_APPLY) && defined(SDK_ARM9) -#include -#endif diff --git a/subprojects/NitroSDK/libraries/ctrdg/meson.build b/subprojects/NitroSDK/libraries/ctrdg/meson.build deleted file mode 100644 index 0f1d6331e4..0000000000 --- a/subprojects/NitroSDK/libraries/ctrdg/meson.build +++ /dev/null @@ -1,25 +0,0 @@ -libctrdg_srcs = files( - 'src/ctrdg.c', - 'src/ctrdg_proc.c', - 'src/ctrdg_backup.c', - 'src/ctrdg_flash_common.c', - 'src/ctrdg_flash_AT29LV512.c', - 'src/ctrdg_flash_LE26FV10N1TS-10.c', - 'src/ctrdg_flash_LE39FW512.c', - 'src/ctrdg_flash_MX29L010.c', - 'src/ctrdg_flash_MX29L512.c', - 'src/ctrdg_sram.c', - 'src/ctrdg_task.c' -) - -libctrdg_internal_includes = include_directories('src/include') - -libctrdg = static_library('ctrdg', - sources: [libctrdg_srcs, fx_const_h], - c_args: [c_args, sdk_args], - include_directories: [public_includes, libctrdg_internal_includes], - c_pch: nitro_pch, - pic: false -) - -nitrosdk_libs += libctrdg diff --git a/subprojects/NitroSDK/libraries/ctrdg/src/ctrdg.c b/subprojects/NitroSDK/libraries/ctrdg/src/ctrdg.c deleted file mode 100644 index e83307b24c..0000000000 --- a/subprojects/NitroSDK/libraries/ctrdg/src/ctrdg.c +++ /dev/null @@ -1,393 +0,0 @@ -#include -#include "include/ctrdg_work.h" -#include - -CTRDGWork CTRDGi_Work; - -static BOOL CTRDGi_EnableFlag = FALSE; - -void CTRDGi_InitCommon (void) { - SVC_CpuClear(0, &CTRDGi_Work, sizeof(CTRDGi_Work), 32); - - CTRDGi_Work.lockID = (u16)OS_GetLockID(); -} - -BOOL CTRDG_IsBitID (u8 bitID) { - return (CTRDG_IsExisting() && CTRDGi_IsBitIDAtInit(bitID)); -} - -BOOL CTRDGi_IsBitIDAtInit (u8 bitID) { - BOOL retval = FALSE; - - CTRDGModuleInfo * cip = CTRDGi_GetModuleInfoAddr(); - - if (cip->moduleID.raw != 0xffff && cip->moduleID.raw != 0x0000 && ~cip->moduleID.bitID & bitID) { - retval = TRUE; - } - - return retval; -} - -BOOL CTRDG_IsNumberID (u8 numberID) { - return (CTRDG_IsExisting() && CTRDGi_IsNumberIDAtInit(numberID)); -} - -BOOL CTRDGi_IsNumberIDAtInit (u8 numberID) { - BOOL retval = FALSE; - - CTRDGModuleInfo * cip = CTRDGi_GetModuleInfoAddr(); - - if (cip->moduleID.raw != 0xffff && cip->moduleID.raw != 0x0000) { - if (cip->moduleID.numberID == numberID) { - retval = TRUE; - } else if (!cip->moduleID.disableExLsiID) { - if (cip->exLsiID[0] == numberID - || cip->exLsiID[1] == numberID || cip->exLsiID[2] == numberID) { - retval = TRUE; - } - } - } - - return retval; -} - -BOOL CTRDG_IsAgbCartridge (void) { - return (CTRDG_IsExisting() && CTRDGi_IsAgbCartridgeAtInit()); -} - -BOOL CTRDG_IsOptionCartridge (void) { - return (CTRDG_IsExisting() && !CTRDGi_IsAgbCartridgeAtInit()); -} - -BOOL CTRDGi_IsAgbCartridgeAtInit (void) { - CTRDGModuleInfo * cip = CTRDGi_GetModuleInfoAddr(); - - return cip->isAgbCartridge; -} - -u32 CTRDG_GetAgbGameCode (void) { - u32 retval = FALSE; - - if (CTRDG_IsExisting()) { - retval = CTRDGi_GetAgbGameCodeAtInit(); - } - - return retval; -} - -u32 CTRDGi_GetAgbGameCodeAtInit (void) { - CTRDGModuleInfo * cip = CTRDGi_GetModuleInfoAddr(); - u32 retval = FALSE; - - if (CTRDGi_IsAgbCartridgeAtInit()) { - retval = cip->gameCode; - } - - return retval; -} - -u16 CTRDG_GetAgbMakerCode (void) { - u16 retval = FALSE; - - if (CTRDG_IsExisting()) { - retval = CTRDGi_GetAgbMakerCodeAtInit(); - } - - return retval; -} - -u16 CTRDGi_GetAgbMakerCodeAtInit (void) { - CTRDGModuleInfo * cip = CTRDGi_GetModuleInfoAddr(); - u16 retval = FALSE; - - if (CTRDGi_IsAgbCartridgeAtInit()) { - retval = cip->makerCode; - } - - return retval; -} - -BOOL CTRDG_IsPulledOut (void) { - CTRDGModuleInfo * cip = CTRDGi_GetModuleInfoAddr(); - - if (cip->moduleID.raw == 0xffff) { - return FALSE; - } - - if (!cip->detectPullOut) { - (void)CTRDG_IsExisting(); - } - - return cip->detectPullOut; -} - -BOOL CTRDG_IsAgbCartridgePulledOut (void) { - return (CTRDG_IsPulledOut() && CTRDGi_IsAgbCartridgeAtInit()); -} - -BOOL CTRDG_IsOptionCartridgePulledOut (void) { - return (CTRDG_IsPulledOut() && !CTRDGi_IsAgbCartridgeAtInit()); -} - -BOOL CTRDG_IsExisting (void) { - BOOL retval = TRUE; - CTRDGLockByProc lockInfo; - - CTRDGHeader * chp = CTRDGi_GetHeaderAddr(); - CTRDGModuleInfo * cip = CTRDGi_GetModuleInfoAddr(); - - if (cip->moduleID.raw == 0xffff) { - return FALSE; - } - - if (cip->detectPullOut == TRUE) { - return FALSE; - } -#if defined(SDK_ARM7) - - if (CTRDGi_LockByProcessor(CTRDGi_Work.lockID, &lockInfo) == FALSE) { - (void)OS_RestoreInterrupts(lockInfo.irq); - return TRUE; - } -#else - - CTRDGi_LockByProcessor(CTRDGi_Work.lockID, &lockInfo); -#endif - - { - CTRDGRomCycle rc; - u8 isRomCode; - - CTRDGi_ChangeLatestAccessCycle(&rc); - isRomCode = chp->isRomCode; - - if ((isRomCode == CTRDG_IS_ROM_CODE && cip->moduleID.raw != chp->moduleID) - || (isRomCode != CTRDG_IS_ROM_CODE && cip->moduleID.raw != *CTRDGi_GetModuleIDImageAddr()) - || ((cip->gameCode != chp->gameCode) && cip->isAgbCartridge)) { - cip->detectPullOut = TRUE; - retval = FALSE; - } - - CTRDGi_RestoreAccessCycle(&rc); - } - - CTRDGi_UnlockByProcessor(CTRDGi_Work.lockID, &lockInfo); - - return retval; -} - -void CTRDGi_ChangeLatestAccessCycle (CTRDGRomCycle * r) { - r->c1 = MI_GetCartridgeRomCycle1st(); - r->c2 = MI_GetCartridgeRomCycle2nd(); - - MI_SetCartridgeRomCycle1st(MI_CTRDG_ROMCYCLE1_18); - MI_SetCartridgeRomCycle2nd(MI_CTRDG_ROMCYCLE2_6); -} - -void CTRDGi_RestoreAccessCycle (CTRDGRomCycle * r) { - MI_SetCartridgeRomCycle1st(r->c1); - MI_SetCartridgeRomCycle2nd(r->c2); -} - -#if defined(SDK_ARM7) -BOOL CTRDGi_LockByProcessor (u16 lockID, CTRDGLockByProc * info) -#else -void CTRDGi_LockByProcessor (u16 lockID, CTRDGLockByProc * info) -#endif -{ - while (1) { - info->irq = OS_DisableInterrupts(); - - if (((info->locked = OS_ReadOwnerOfLockCartridge() & CTRDG_LOCKED_BY_MYPROC_FLAG) != 0) - || (OS_TryLockCartridge(lockID) == OS_LOCK_SUCCESS)) { -#if defined(SDK_ARM7) - return TRUE; -#else - break; -#endif - } -#if defined(SDK_ARM7) - return FALSE; -#endif - (void)OS_RestoreInterrupts(info->irq); - - SVC_WaitByLoop(1); - } -} - -void CTRDGi_UnlockByProcessor (u16 lockID, CTRDGLockByProc * info) { - if (!info->locked) { - (void)OS_UnLockCartridge(lockID); - } - - (void)OS_RestoreInterrupts(info->irq); -} - -void CTRDGi_SendtoPxi (u32 data) { - while (PXI_SendWordByFifo(PXI_FIFO_TAG_CTRDG, data, FALSE) != PXI_FIFO_SUCCESS) { - SVC_WaitByLoop(1); - } -} - -BOOL CTRDG_DmaCopy16 (u32 dmaNo, const void * src, void * dest, u32 size) { - return CTRDGi_CopyCommon(dmaNo, src, dest, size, CTRDGi_FORWARD_DMA16); -} -BOOL CTRDG_DmaCopy32 (u32 dmaNo, const void * src, void * dest, u32 size) { - return CTRDGi_CopyCommon(dmaNo, src, dest, size, CTRDGi_FORWARD_DMA32); -} - -BOOL CTRDG_CpuCopy8 (const void * src, void * dest, u32 size) { - if (HW_CTRDG_ROM <= (u32)dest && (u32)dest < HW_CTRDG_RAM_END) { - return CTRDGi_CopyCommon( - 0, (const void *)dest, (void *)src, size, - CTRDGi_FORWARD_CPU8 - ); - } else { - return CTRDGi_CopyCommon(0, src, dest, size, CTRDGi_FORWARD_CPU8); - } -} -BOOL CTRDG_CpuCopy16 (const void * src, void * dest, u32 size) { - return CTRDGi_CopyCommon(0, src, dest, size, CTRDGi_FORWARD_CPU16); -} -BOOL CTRDG_CpuCopy32 (const void * src, void * dest, u32 size) { - return CTRDGi_CopyCommon(0, src, dest, size, CTRDGi_FORWARD_CPU32); -} - -BOOL CTRDGi_CopyCommon (u32 dmaNo, const void * src, void * dest, u32 size, u32 forwardType) { - if (!CTRDG_IsExisting()) { - return FALSE; - } - - CTRDG_CheckEnabled(); - - (void)OS_LockCartridge(CTRDGi_Work.lockID); - - if ((forwardType & CTRDGi_FORWARD_TYPE_MASK) == CTRDGi_FORWARD_TYPE_DMA) { - MI_StopDma(dmaNo); - DC_FlushRange(dest, size); - } - - switch (forwardType) { - case CTRDGi_FORWARD_DMA16: - MI_DmaCopy16(dmaNo, src, dest, size); - break; - case CTRDGi_FORWARD_DMA32: - MI_DmaCopy32(dmaNo, src, dest, size); - break; - case CTRDGi_FORWARD_CPU16: - MI_CpuCopy16(src, dest, size); - break; - case CTRDGi_FORWARD_CPU32: - MI_CpuCopy32(src, dest, size); - break; - - case CTRDGi_FORWARD_CPU8: - { - int n; - u8 * dest8 = (u8 *)dest; - u8 * src8 = (u8 *)src; - for (n = 0; n < size; n++) { - *dest8++ = *src8++; - } - } - break; - } - - (void)OS_UnLockCartridge(CTRDGi_Work.lockID); - - if (!CTRDG_IsExisting()) { - return FALSE; - } - - return TRUE; -} - -BOOL CTRDG_Read8 (const u8 * address, u8 * rdata) { - return CTRDGi_AccessCommon((void *)address, 0, rdata, CTRDGi_ACCESS_READ8); -} -BOOL CTRDG_Read16 (const u16 * address, u16 * rdata) { - return CTRDGi_AccessCommon((void *)address, 0, rdata, CTRDGi_ACCESS_READ16); -} -BOOL CTRDG_Read32 (const u32 * address, u32 * rdata) { - return CTRDGi_AccessCommon((void *)address, 0, rdata, CTRDGi_ACCESS_READ32); -} - -BOOL CTRDG_Write8 (u8 * address, u8 data) { - return CTRDGi_AccessCommon(address, data, 0, CTRDGi_ACCESS_WRITE8); -} -BOOL CTRDG_Write16 (u16 * address, u16 data) { - return CTRDGi_AccessCommon(address, data, 0, CTRDGi_ACCESS_WRITE16); -} -BOOL CTRDG_Write32 (u32 * address, u32 data) { - return CTRDGi_AccessCommon(address, data, 0, CTRDGi_ACCESS_WRITE32); -} - -BOOL CTRDGi_AccessCommon (void * address, u32 data, void * rdata, u32 accessType) { - if (!CTRDG_IsExisting()) { - return FALSE; - } - - CTRDG_CheckEnabled(); - - (void)OS_LockCartridge(CTRDGi_Work.lockID); - - switch (accessType) { - case CTRDGi_ACCESS_READ8: - if (rdata) { - *(u8 *)rdata = *(u8 *)address; - } - break; - case CTRDGi_ACCESS_READ16: - if (rdata) { - *(u16 *)rdata = *(u16 *)address; - } - break; - case CTRDGi_ACCESS_READ32: - if (rdata) { - *(u32 *)rdata = *(u32 *)address; - } - break; - case CTRDGi_ACCESS_WRITE8: - *(u8 *)address = (u8)data; - break; - case CTRDGi_ACCESS_WRITE16: - *(u16 *)address = (u16)data; - break; - case CTRDGi_ACCESS_WRITE32: - *(u32 *)address = (u32)data; - break; - } - - (void)OS_UnLockCartridge(CTRDGi_Work.lockID); - - if (!CTRDG_IsExisting()) { - return FALSE; - } - - return TRUE; -} - -BOOL CTRDG_IsEnabled (void) { - return CTRDGi_EnableFlag; -} - -void CTRDG_Enable (BOOL enable) { - OSIntrMode bak_cpsr = OS_DisableInterrupts(); - CTRDGi_EnableFlag = enable; -#if defined(SDK_ARM9) - if (!CTRDG_IsOptionCartridge()) { - u32 acc = (u32)(enable ? OS_PR3_ACCESS_RW : OS_PR3_ACCESS_RO); - (void)OS_SetDPermissionsForProtectionRegion(OS_PR3_ACCESS_MASK, acc); - } -#endif - (void)OS_RestoreInterrupts(bak_cpsr); -} - -void CTRDG_CheckEnabled (void) { -#ifdef SDK_ARM9 - if (!CTRDG_IsOptionCartridge() && !CTRDG_IsEnabled()) { - OS_TPanic - ("cartridge permission denied. (you must call CTRDG_Enable() under the guideline.)"); - } -#endif -} diff --git a/subprojects/NitroSDK/libraries/ctrdg/src/ctrdg_backup.c b/subprojects/NitroSDK/libraries/ctrdg/src/ctrdg_backup.c deleted file mode 100644 index 67e636f65c..0000000000 --- a/subprojects/NitroSDK/libraries/ctrdg/src/ctrdg_backup.c +++ /dev/null @@ -1,84 +0,0 @@ -#include - -extern const CTRDGiFlashTypePlus defaultFlash1M; -extern const CTRDGiFlashTypePlus MX29L010; -extern const CTRDGiFlashTypePlus LE26FV10N1TS_10; - -extern const CTRDGiFlashTypePlus defaultFlash512; -extern const CTRDGiFlashTypePlus LE39FW512; -extern const CTRDGiFlashTypePlus AT29LV512_lib; -extern const CTRDGiFlashTypePlus MN63F805MNP; - -extern u16 ctrdgi_flash_lock_id; -extern u16 ctrdgi_sram_lock_id; - -static const u8 AgbLib1MFlash_ver[] = "AGBFLASH1M_V102"; -static const u8 AgbLibFlash_ver[] = "AGBFLASH512_V131"; - -static const CTRDGiFlashTypePlus * const flash1M_list[] = { - &MX29L010, - &LE26FV10N1TS_10, - &defaultFlash1M, -}; - -static const CTRDGiFlashTypePlus * const flash512_list[] = { - &LE39FW512, - &AT29LV512_lib, - &MN63F805MNP, - &defaultFlash512, -}; - -static const u16 readidtime[] = { - 20, -}; - -u16 CTRDG_IdentifyAgbBackup (CTRDGBackupType type) { - u16 result = 1; - u16 flashID; - const CTRDGiFlashTypePlus * const * flp; - MICartridgeRamCycle ram_cycle; - - if (type == CTRDG_BACKUP_TYPE_FLASH_512K || type == CTRDG_BACKUP_TYPE_FLASH_1M) { - ctrdgi_flash_lock_id = (u16)OS_GetLockID(); - - (void)OS_LockCartridge(ctrdgi_flash_lock_id); - - ram_cycle = MI_GetCartridgeRamCycle(); - MI_SetCartridgeRamCycle(MI_CTRDG_RAMCYCLE_18); - - ctrdgi_fl_maxtime = readidtime; - flashID = CTRDGi_ReadFlashID(); - if (type == CTRDG_BACKUP_TYPE_FLASH_512K) { - flp = flash512_list; - } - if (type == CTRDG_BACKUP_TYPE_FLASH_1M) { - flp = flash1M_list; - } - - MI_SetCartridgeRamCycle(ram_cycle); - - (void)OS_UnlockCartridge(ctrdgi_flash_lock_id); - - result = 1; - while ((*flp)->type.makerID != 0x00) { - if ((flashID & 0xff) == *(u16 *)&((*flp)->type.makerID)) { - result = 0; - break; - } - flp++; - } - CTRDGi_WriteAgbFlashSector = (*flp)->CTRDGi_WriteAgbFlashSector; - CTRDGi_EraseAgbFlashChip = (*flp)->CTRDGi_EraseAgbFlashChip; - CTRDGi_EraseAgbFlashSector = (*flp)->CTRDGi_EraseAgbFlashSector; - CTRDGi_WriteAgbFlashSectorAsync = (*flp)->CTRDGi_WriteAgbFlashSectorAsync; - CTRDGi_EraseAgbFlashChipAsync = (*flp)->CTRDGi_EraseAgbFlashChipAsync; - CTRDGi_EraseAgbFlashSectorAsync = (*flp)->CTRDGi_EraseAgbFlashSectorAsync; - CTRDGi_PollingSR = (*flp)->CTRDGi_PollingSR; - ctrdgi_fl_maxtime = (*flp)->maxtime; - AgbFlash = &(*flp)->type; - } else if (type == CTRDG_BACKUP_TYPE_SRAM) { - ctrdgi_sram_lock_id = (u16)OS_GetLockID(); - result = 0; - } - return result; -} diff --git a/subprojects/NitroSDK/libraries/ctrdg/src/ctrdg_flash_AT29LV512.c b/subprojects/NitroSDK/libraries/ctrdg/src/ctrdg_flash_AT29LV512.c deleted file mode 100644 index 0ba71bc222..0000000000 --- a/subprojects/NitroSDK/libraries/ctrdg/src/ctrdg_flash_AT29LV512.c +++ /dev/null @@ -1,329 +0,0 @@ -#include - -#define CTRDG_BACKUP_COM_ADR1 (CTRDG_AGB_FLASH_ADR + 0x00005555) -#define CTRDG_BACKUP_COM_ADR2 (CTRDG_AGB_FLASH_ADR + 0x00002aaa) - -#define FLASH_LOG_SECTOR_COUNT 16 -#define FLASH_SECTOR_LOG_TO_PHYS 32 -#define FLASH_SECTOR_LOG_TO_PHYS_SHIFT 5 - -extern u16 CTRDGi_PollingSR512kCOMMON(u16 phase, u8 * adr, u16 lastData); - -extern u16 ctrdgi_flash_lock_id; -extern BOOL ctrdgi_backup_irq; - -u16 CTRDGi_EraseFlashChipAT(void); -u16 CTRDGi_EraseFlashSectorAT(u16 p_secNo); -u16 CTRDGi_EraseFlash4KBAT(u16 l_secNo); -u16 CTRDGi_WriteFlashSectorAT(u16 p_secNo, u8 * src); -u16 CTRDGi_WriteFlash4KBAT(u16 l_secNo, u8 * src); - -u32 CTRDGi_EraseFlashChipCoreAT(CTRDGTaskInfo * arg); -u32 CTRDGi_EraseFlash4KBCoreAT(CTRDGTaskInfo * arg); -u32 CTRDGi_WriteFlash4KBCoreAT(CTRDGTaskInfo * arg); -u32 CTRDGi_EraseFlashSectorCoreAT(CTRDGTaskInfo * arg); -u32 CTRDGi_WriteFlashSectorCoreAT(CTRDGTaskInfo * arg); - -void CTRDGi_EraseFlashChipAsyncAT(CTRDG_TASK_FUNC callback); -void CTRDGi_EraseFlash4KBAsyncAT(u16 secNo, CTRDG_TASK_FUNC callback); -void CTRDGi_WriteFlash4KBAsyncAT(u16 secNo, u8 * src, CTRDG_TASK_FUNC callback); -void CTRDGi_EraseFlashSectorAsyncAT(u16 secNo, CTRDG_TASK_FUNC callback); -void CTRDGi_WriteFlashSectorAsyncAT(u16 secNo, u8 * src, CTRDG_TASK_FUNC callback); - -static const u16 atMaxTime[] = { - 10, - 40, - 0, - 40, -}; - -const CTRDGiFlashTypePlus AT29LV512_lib = { - CTRDGi_WriteFlash4KBAT, - CTRDGi_EraseFlashChipAT, - CTRDGi_EraseFlash4KBAT, - CTRDGi_WriteFlash4KBAsyncAT, - CTRDGi_EraseFlashChipAsyncAT, - CTRDGi_EraseFlash4KBAsyncAT, - CTRDGi_PollingSR512kCOMMON, - atMaxTime, - { - 0x00010000, - {0x00001000, 12, 16, 0}, - - {MI_CTRDG_RAMCYCLE_18, MI_CTRDG_RAMCYCLE_18}, - 0x1f, - 0x3d, - }, -}; - -const CTRDGiFlashTypePlus AT29LV512_org = { - CTRDGi_WriteFlashSectorAT, - CTRDGi_EraseFlashChipAT, - CTRDGi_EraseFlashSectorAT, - CTRDGi_WriteFlashSectorAsyncAT, - CTRDGi_EraseFlashChipAsyncAT, - CTRDGi_EraseFlashSectorAsyncAT, - CTRDGi_PollingSR512kCOMMON, - atMaxTime, - { - 0x00010000, - {0x00000080, 7, 512, 0}, - - {MI_CTRDG_RAMCYCLE_18, MI_CTRDG_RAMCYCLE_18}, - 0x1f, - 0x3d, - }, -}; - -u32 CTRDGi_EraseFlashChipCoreAT (CTRDGTaskInfo * arg) { - MICartridgeRamCycle ram_cycle; - u32 result; - (void)arg; - - (void)OS_LockCartridge(ctrdgi_flash_lock_id); - - ram_cycle = MI_GetCartridgeRamCycle(); - MI_SetCartridgeRamCycle(AgbFlash->agbWait[0]); - - ctrdgi_backup_irq = OS_DisableIrq(); - - *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0xaa; - *(vu8 *)CTRDG_BACKUP_COM_ADR2 = 0x55; - *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0x80; - *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0xaa; - *(vu8 *)CTRDG_BACKUP_COM_ADR2 = 0x55; - *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0x10; - - (void)OS_RestoreIrq(ctrdgi_backup_irq); - - result = CTRDGi_PollingSR(CTRDG_BACKUP_PHASE_CHIP_ERASE, (u8 *)CTRDG_AGB_FLASH_ADR, 0xff); - - MI_SetCartridgeRamCycle(ram_cycle); - - (void)OS_UnlockCartridge(ctrdgi_flash_lock_id); - - return result; -} - -u32 CTRDGi_EraseFlashSectorCoreAT (CTRDGTaskInfo * arg) { - u32 i; - u8 * dst; - BOOL shlet_ime; - MICartridgeRamCycle ram_cycle; - u32 result; - CTRDGTaskInfo p = *arg; - u16 p_secNo = p.sec_num; - - dst = (u8 *)(CTRDG_AGB_FLASH_ADR + (p_secNo << AT29LV512_org.type.sector.shift)); - - (void)OS_LockCartridge(ctrdgi_flash_lock_id); - - ram_cycle = MI_GetCartridgeRamCycle(); - MI_SetCartridgeRamCycle(AgbFlash->agbWait[0]); - - shlet_ime = OS_DisableIrq(); - - *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0xaa; - *(vu8 *)CTRDG_BACKUP_COM_ADR2 = 0x55; - *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0xa0; - for (i = AT29LV512_org.type.sector.size; i > 0; i--) { - *dst++ = 0xff; - } - dst--; - - (void)OS_RestoreIrq(shlet_ime); - - result = CTRDGi_PollingSR(CTRDG_BACKUP_PHASE_PROGRAM, dst, 0xff); - if (result) { - result = (u16)((result & 0xff00) | CTRDG_BACKUP_PHASE_SECTOR_ERASE); - } - - MI_SetCartridgeRamCycle(ram_cycle); - - (void)OS_UnlockCartridge(ctrdgi_flash_lock_id); - - return result; -} - -u32 CTRDGi_EraseFlash4KBCoreAT (CTRDGTaskInfo * arg) { - u32 result; - u16 i, p_secNo, retry; - CTRDGTaskInfo p = *arg; - u16 l_secNo = p.sec_num; - - if (l_secNo >= FLASH_LOG_SECTOR_COUNT) { - return CTRDG_BACKUP_RESULT_ERROR | CTRDG_BACKUP_PHASE_PARAMETER_CHECK; - } - - p_secNo = (u16)(l_secNo << FLASH_SECTOR_LOG_TO_PHYS_SHIFT); - for (i = 0; i < FLASH_SECTOR_LOG_TO_PHYS; i++) { - retry = 2; - while (retry) { - result = CTRDGi_EraseFlashSectorAT(p_secNo); - if (result == 0) { - break; - } - retry--; - } - p_secNo++; - if (result) { - break; - } - } - - return result; -} - -u32 CTRDGi_WriteFlashSectorCoreAT (CTRDGTaskInfo * arg) { - u32 i; - u8 * dst; - BOOL shlet_ime; - MICartridgeRamCycle ram_cycle; - u32 result; - CTRDGTaskInfo p = *arg; - u16 p_secNo = p.sec_num; - u8 * src = p.data; - - (void)OS_LockCartridge(ctrdgi_flash_lock_id); - - ram_cycle = MI_GetCartridgeRamCycle(); - MI_SetCartridgeRamCycle(AgbFlash->agbWait[0]); - - dst = (u8 *)(CTRDG_AGB_FLASH_ADR + (p_secNo << AT29LV512_org.type.sector.shift)); - - shlet_ime = OS_DisableIrq(); - - *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0xaa; - *(vu8 *)CTRDG_BACKUP_COM_ADR2 = 0x55; - *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0xa0; - for (i = AT29LV512_org.type.sector.size; i > 0; i--) { - *dst++ = *src++; - } - dst--; - src--; - - (void)OS_RestoreIrq(shlet_ime); - - result = CTRDGi_PollingSR(CTRDG_BACKUP_PHASE_PROGRAM, dst, *src); - - MI_SetCartridgeRamCycle(ram_cycle); - - (void)OS_UnlockCartridge(ctrdgi_flash_lock_id); - - return result; -} - -u32 CTRDGi_WriteFlash4KBCoreAT (CTRDGTaskInfo * arg) { - u32 result; - u16 p_secNo, retry; - CTRDGTaskInfo p = *arg; - u16 l_secNo = p.sec_num; - u8 * src = p.data; - - if (l_secNo >= FLASH_LOG_SECTOR_COUNT) { - return CTRDG_BACKUP_RESULT_ERROR | CTRDG_BACKUP_PHASE_PARAMETER_CHECK; - } - - p_secNo = (u16)(l_secNo << FLASH_SECTOR_LOG_TO_PHYS_SHIFT); - ctrdg_flash_remainder = (u16)(AT29LV512_lib.type.sector.size); - while (ctrdg_flash_remainder) { - retry = 2; - while (retry) { - result = CTRDGi_WriteFlashSectorAT(p_secNo, src); - if (result == 0) { - break; - } - retry--; - } - if (result) { - break; - } - ctrdg_flash_remainder -= AT29LV512_org.type.sector.size; - src += AT29LV512_org.type.sector.size; - p_secNo++; - } - - return result; -} - -u16 CTRDGi_EraseFlashChipAT (void) { - u16 result; - CTRDGTaskInfo p; - result = (u16)CTRDGi_EraseFlashChipCoreAT(&p); - - return result; -} - -u16 CTRDGi_EraseFlash4KBAT (u16 l_secNo) { - u16 result; - CTRDGTaskInfo p; - p.sec_num = l_secNo; - result = (u16)CTRDGi_EraseFlash4KBCoreAT(&p); - - return result; -} - -u16 CTRDGi_WriteFlash4KBAT (u16 l_secNo, u8 * src) { - u16 result; - CTRDGTaskInfo p; - p.sec_num = l_secNo; - p.data = src; - result = (u16)CTRDGi_WriteFlash4KBCoreAT(&p); - - return result; -} - -void CTRDGi_EraseFlashChipAsyncAT (CTRDG_TASK_FUNC callback) { - CTRDGTaskInfo p; - - CTRDGi_SetTask(&p, CTRDGi_EraseFlashChipCoreAT, callback); -} - -void CTRDGi_EraseFlash4KBAsyncAT (u16 l_secNo, CTRDG_TASK_FUNC callback) { - CTRDGTaskInfo p; - - p.sec_num = l_secNo; - CTRDGi_SetTask(&p, CTRDGi_EraseFlash4KBCoreAT, callback); -} - -void CTRDGi_WriteFlash4KBAsyncAT (u16 l_secNo, u8 * src, CTRDG_TASK_FUNC callback) { - CTRDGTaskInfo p; - - p.sec_num = l_secNo; - p.data = src; - CTRDGi_SetTask(&p, CTRDGi_WriteFlash4KBCoreAT, callback); -} - -u16 CTRDGi_EraseFlashSectorAT (u16 p_secNo) { - u16 result; - CTRDGTaskInfo p; - p.sec_num = p_secNo; - result = (u16)CTRDGi_EraseFlashSectorCoreAT(&p); - - return result; -} - -u16 CTRDGi_WriteFlashSectorAT (u16 p_secNo, u8 * src) { - u16 result; - CTRDGTaskInfo p; - p.sec_num = p_secNo; - p.data = src; - result = (u16)CTRDGi_WriteFlashSectorCoreAT(&p); - - return result; -} - -void CTRDGi_EraseFlashSectorAsyncAT (u16 p_secNo, CTRDG_TASK_FUNC callback) { - CTRDGTaskInfo p; - - p.sec_num = p_secNo; - CTRDGi_SetTask(&p, CTRDGi_EraseFlashSectorCoreAT, callback); -} - -void CTRDGi_WriteFlashSectorAsyncAT (u16 p_secNo, u8 * src, CTRDG_TASK_FUNC callback) { - CTRDGTaskInfo p; - - p.sec_num = p_secNo; - p.data = src; - CTRDGi_SetTask(&p, CTRDGi_WriteFlashSectorCoreAT, callback); -} diff --git a/subprojects/NitroSDK/libraries/ctrdg/src/ctrdg_flash_LE26FV10N1TS-10.c b/subprojects/NitroSDK/libraries/ctrdg/src/ctrdg_flash_LE26FV10N1TS-10.c deleted file mode 100644 index 19eaf46945..0000000000 --- a/subprojects/NitroSDK/libraries/ctrdg/src/ctrdg_flash_LE26FV10N1TS-10.c +++ /dev/null @@ -1,36 +0,0 @@ -#include - -extern u16 CTRDGi_PollingSR1MCOMMON(u16 phase, u8 * adr, u16 lastData); - -extern u16 CTRDGi_EraseFlashChipMX(void); -extern u16 CTRDGi_EraseFlashSectorMX(u16 secNo); -extern u16 CTRDGi_WriteFlashSectorMX(u16 secNo, u8 * src); -extern void CTRDGi_EraseFlashChipAsyncMX(CTRDG_TASK_FUNC callback); -extern void CTRDGi_EraseFlashSectorAsyncMX(u16 secNo, CTRDG_TASK_FUNC callback); -extern void CTRDGi_WriteFlashSectorAsyncMX(u16 secNo, u8 * src, CTRDG_TASK_FUNC callback); - -static const u16 LeMaxTime[] = { - 10, - 10, - 2000, - 5000, -}; - -const CTRDGiFlashTypePlus LE26FV10N1TS_10 = { - CTRDGi_WriteFlashSectorMX, - CTRDGi_EraseFlashChipMX, - CTRDGi_EraseFlashSectorMX, - CTRDGi_WriteFlashSectorAsyncMX, - CTRDGi_EraseFlashChipAsyncMX, - CTRDGi_EraseFlashSectorAsyncMX, - CTRDGi_PollingSR1MCOMMON, - LeMaxTime, - { - 0x00020000, - {0x00001000, 12, 32, 0}, - - {MI_CTRDG_RAMCYCLE_18, MI_CTRDG_RAMCYCLE_8}, - 0x62, - 0x13, - }, -}; diff --git a/subprojects/NitroSDK/libraries/ctrdg/src/ctrdg_flash_LE39FW512.c b/subprojects/NitroSDK/libraries/ctrdg/src/ctrdg_flash_LE39FW512.c deleted file mode 100644 index 988aa08e5d..0000000000 --- a/subprojects/NitroSDK/libraries/ctrdg/src/ctrdg_flash_LE39FW512.c +++ /dev/null @@ -1,294 +0,0 @@ -#include - -#define CTRDG_BACKUP_COM_ADR1 (CTRDG_AGB_FLASH_ADR + 0x00005555) -#define CTRDG_BACKUP_COM_ADR2 (CTRDG_AGB_FLASH_ADR + 0x00002aaa) - -#define FLASH_LOG_SECTOR_COUNT 16 - -#define ERASE_RETRY_MAX 0x50 - -extern const CTRDGFlashType * AgbFlash; -extern u16 CTRDGi_PollingSR512kCOMMON(u16 phase, u8 * adr, u16 lastData); - -extern u16 ctrdgi_flash_lock_id; -extern BOOL ctrdgi_backup_irq; - -u16 CTRDGi_EraseFlashChipLE(void); -u16 CTRDGi_EraseFlashSectorLE(u16 secNo); -u16 CTRDGi_ProgramFlashByteLE(u8 * src, u8 * dst); -u16 CTRDGi_WriteFlashSectorLE(u16 secNo, u8 * src); -u32 CTRDGi_VerifyFlashCoreFF(u8 * adr); -u32 CTRDGi_VerifyFlashErase(u8 * tgt, u32 (*func_p) (u8 *)); -u32 CTRDGi_EraseFlashChipCoreLE(CTRDGTaskInfo * arg); -u32 CTRDGi_EraseFlashSectorCoreLE(CTRDGTaskInfo * arg); -u32 CTRDGi_WriteFlashSectorCoreLE(CTRDGTaskInfo * arg); - -void CTRDGi_EraseFlashChipAsyncLE(CTRDG_TASK_FUNC callback); -void CTRDGi_EraseFlashSectorAsyncLE(u16 secNo, CTRDG_TASK_FUNC callback); -void CTRDGi_WriteFlashSectorAsyncLE(u16 secNo, u8 * src, CTRDG_TASK_FUNC callback); - -static const u16 leMaxTime[] = { - 10, - 10, - 40, - 200, -}; - -const CTRDGiFlashTypePlus defaultFlash512 = { - CTRDGi_WriteFlashSectorLE, - CTRDGi_EraseFlashChipLE, - CTRDGi_EraseFlashSectorLE, - CTRDGi_WriteFlashSectorAsyncLE, - CTRDGi_EraseFlashChipAsyncLE, - CTRDGi_EraseFlashSectorAsyncLE, - CTRDGi_PollingSR512kCOMMON, - leMaxTime, - { - 0x00010000, - {0x00001000, 12, 16, 0}, - - {MI_CTRDG_RAMCYCLE_8, MI_CTRDG_RAMCYCLE_6}, - 0x00, - 0x00, - }, -}; - -const CTRDGiFlashTypePlus LE39FW512 = { - CTRDGi_WriteFlashSectorLE, - CTRDGi_EraseFlashChipLE, - CTRDGi_EraseFlashSectorLE, - CTRDGi_WriteFlashSectorAsyncLE, - CTRDGi_EraseFlashChipAsyncLE, - CTRDGi_EraseFlashSectorAsyncLE, - CTRDGi_PollingSR512kCOMMON, - leMaxTime, - { - 0x00010000, - {0x00001000, 12, 16, 0}, - - {MI_CTRDG_RAMCYCLE_8, MI_CTRDG_RAMCYCLE_6}, - 0xbf, - 0xd4, - }, -}; - -u32 CTRDGi_EraseFlashChipCoreLE (CTRDGTaskInfo * arg) { - MICartridgeRamCycle ram_cycle; - u32 result; - (void)arg; - - (void)OS_LockCartridge(ctrdgi_flash_lock_id); - - ram_cycle = MI_GetCartridgeRamCycle(); - MI_SetCartridgeRamCycle(AgbFlash->agbWait[0]); - - ctrdgi_backup_irq = OS_DisableIrq(); - - *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0xaa; - *(vu8 *)CTRDG_BACKUP_COM_ADR2 = 0x55; - *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0x80; - *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0xaa; - *(vu8 *)CTRDG_BACKUP_COM_ADR2 = 0x55; - *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0x10; - - (void)OS_RestoreIrq(ctrdgi_backup_irq); - - result = CTRDGi_PollingSR(CTRDG_BACKUP_PHASE_CHIP_ERASE, (u8 *)CTRDG_AGB_FLASH_ADR, 0xff); - - MI_SetCartridgeRamCycle(ram_cycle); - - (void)OS_UnlockCartridge(ctrdgi_flash_lock_id); - return result; -} - -u32 CTRDGi_EraseFlashSectorCoreLE (CTRDGTaskInfo * arg) { - u8 * adr; - - MICartridgeRamCycle ram_cycle; - u32 result; - CTRDGTaskInfo p = *arg; - u16 secNo = p.sec_num; - - if (secNo >= FLASH_LOG_SECTOR_COUNT) { - return CTRDG_BACKUP_RESULT_ERROR | CTRDG_BACKUP_PHASE_PARAMETER_CHECK; - } - - (void)OS_LockCartridge(ctrdgi_flash_lock_id); - - ram_cycle = MI_GetCartridgeRamCycle(); - MI_SetCartridgeRamCycle(AgbFlash->agbWait[0]); - - adr = (u8 *)(CTRDG_AGB_FLASH_ADR + (secNo << AgbFlash->sector.shift)); - - ctrdgi_backup_irq = OS_DisableIrq(); - - *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0xaa; - *(vu8 *)CTRDG_BACKUP_COM_ADR2 = 0x55; - *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0x80; - *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0xaa; - *(vu8 *)CTRDG_BACKUP_COM_ADR2 = 0x55; - *(vu8 *)adr = 0x30; - - (void)OS_RestoreIrq(ctrdgi_backup_irq); - - result = CTRDGi_PollingSR(CTRDG_BACKUP_PHASE_SECTOR_ERASE, adr, 0xff); - - MI_SetCartridgeRamCycle(ram_cycle); - - (void)OS_UnlockCartridge(ctrdgi_flash_lock_id); - - return result; -} - -u16 CTRDGi_ProgramFlashByteLE (u8 * src, u8 * dst) { - u16 result; - *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0xaa; - *(vu8 *)CTRDG_BACKUP_COM_ADR2 = 0x55; - *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0xa0; - *dst = *src; - - result = CTRDGi_PollingSR(CTRDG_BACKUP_PHASE_PROGRAM, dst, *src); - return result; -} - -u32 CTRDGi_WriteFlashSectorCoreLE (CTRDGTaskInfo * arg) { - u8 * tgt; - u16 retry, add_erase, j; - MICartridgeRamCycle ram_cycle; - u32 result; - CTRDGTaskInfo p = *arg; - u16 secNo = p.sec_num; - u8 * src = p.data; - - if (secNo >= FLASH_LOG_SECTOR_COUNT) { - return CTRDG_BACKUP_RESULT_ERROR | CTRDG_BACKUP_PHASE_PARAMETER_CHECK; - } - - tgt = (u8 *)(CTRDG_AGB_FLASH_ADR + (secNo << AgbFlash->sector.shift)); - - retry = 0; - - while (1) { - result = CTRDGi_EraseFlashSectorLE(secNo); - if (result == 0) { - result = (u16)CTRDGi_VerifyFlashErase(tgt, CTRDGi_VerifyFlashCoreFF); - if (result == 0) { - break; - } - } - if (retry++ == ERASE_RETRY_MAX) { - return result; - } - } - - add_erase = 1; - if (retry > 0) { - add_erase = 6; - } - for (j = 1; j <= add_erase; j++) { - (void)CTRDGi_EraseFlashSectorLE(secNo); - } - - (void)OS_LockCartridge(ctrdgi_flash_lock_id); - - ram_cycle = MI_GetCartridgeRamCycle(); - MI_SetCartridgeRamCycle(AgbFlash->agbWait[0]); - - ctrdg_flash_remainder = (u16)AgbFlash->sector.size; - ctrdgi_backup_irq = OS_DisableIrq(); - while (ctrdg_flash_remainder) { - result = CTRDGi_ProgramFlashByteLE(src, tgt); - if (result) { - break; - } - ctrdg_flash_remainder--; - src++; - tgt++; - } - (void)OS_RestoreIrq(ctrdgi_backup_irq); - - MI_SetCartridgeRamCycle(ram_cycle); - - (void)OS_UnlockCartridge(ctrdgi_flash_lock_id); - - return result; -} - -u32 CTRDGi_VerifyFlashCoreFF (u8 * adr) { - u32 count; - for (count = AgbFlash->sector.size; count > 0; count--) { - if (*adr++ != 0xff) { - break; - } - } - return count; -} - -u32 CTRDGi_VerifyFlashErase (u8 * tgt, u32 (*func_p) (u8 *)) { - u32 result; - MICartridgeRamCycle ram_cycle; - - (void)OS_LockCartridge(ctrdgi_flash_lock_id); - - ram_cycle = MI_GetCartridgeRamCycle(); - MI_SetCartridgeRamCycle(AgbFlash->agbWait[0]); - - result = 0; - if (func_p(tgt)) { - result = (CTRDG_BACKUP_RESULT_ERROR | CTRDG_BACKUP_PHASE_VERIFY_ERASE); - } - - MI_SetCartridgeRamCycle(ram_cycle); - - (void)OS_UnlockCartridge(ctrdgi_flash_lock_id); - - return result; -} - -u16 CTRDGi_EraseFlashChipLE (void) { - u16 result; - CTRDGTaskInfo p; - result = (u16)CTRDGi_EraseFlashChipCoreLE(&p); - - return result; -} - -u16 CTRDGi_EraseFlashSectorLE (u16 secNo) { - u16 result; - CTRDGTaskInfo p; - p.sec_num = secNo; - result = (u16)CTRDGi_EraseFlashSectorCoreLE(&p); - - return result; -} - -u16 CTRDGi_WriteFlashSectorLE (u16 secNo, u8 * src) { - u16 result; - CTRDGTaskInfo p; - p.sec_num = secNo; - p.data = src; - result = (u16)CTRDGi_WriteFlashSectorCoreLE(&p); - - return result; -} - -void CTRDGi_EraseFlashChipAsyncLE (CTRDG_TASK_FUNC callback) { - CTRDGTaskInfo p; - - CTRDGi_SetTask(&p, CTRDGi_EraseFlashChipCoreLE, callback); -} - -void CTRDGi_EraseFlashSectorAsyncLE (u16 secNo, CTRDG_TASK_FUNC callback) { - CTRDGTaskInfo p; - - p.sec_num = secNo; - CTRDGi_SetTask(&p, CTRDGi_EraseFlashSectorCoreLE, callback); -} - -void CTRDGi_WriteFlashSectorAsyncLE (u16 secNo, u8 * src, CTRDG_TASK_FUNC callback) { - CTRDGTaskInfo p; - - p.sec_num = secNo; - p.data = src; - CTRDGi_SetTask(&p, CTRDGi_WriteFlashSectorCoreLE, callback); -} diff --git a/subprojects/NitroSDK/libraries/ctrdg/src/ctrdg_flash_MX29L010.c b/subprojects/NitroSDK/libraries/ctrdg/src/ctrdg_flash_MX29L010.c deleted file mode 100644 index ca1bfe928b..0000000000 --- a/subprojects/NitroSDK/libraries/ctrdg/src/ctrdg_flash_MX29L010.c +++ /dev/null @@ -1,342 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - -#include - - -extern u16 CTRDGi_PollingSR1MCOMMON(u16 phase, u8 *adr, u16 lastData); - - -u16 CTRDGi_EraseFlashChipMX(void); -u16 CTRDGi_EraseFlashSectorMX(u16 secNo); -u16 CTRDGi_WriteFlashSectorMX(u16 secNo, u8 *src); - -u32 CTRDGi_EraseFlashChipCoreMX(CTRDGTaskInfo * arg); -u32 CTRDGi_EraseFlashSectorCoreMX(CTRDGTaskInfo * arg); -u32 CTRDGi_WriteFlashSectorCoreMX(CTRDGTaskInfo * arg); - -void CTRDGi_EraseFlashChipAsyncMX(CTRDG_TASK_FUNC callback); -void CTRDGi_EraseFlashSectorAsyncMX(u16 secNo, CTRDG_TASK_FUNC callback); -void CTRDGi_WriteFlashSectorAsyncMX(u16 secNo, u8 *src, CTRDG_TASK_FUNC callback); - - -static const u16 MxMaxTime[] = { - 10, - 10, - 2000, - 2000, -}; - -const CTRDGiFlashTypePlus MX29L010 = { - CTRDGi_WriteFlashSectorMX, - CTRDGi_EraseFlashChipMX, - CTRDGi_EraseFlashSectorMX, - CTRDGi_WriteFlashSectorAsyncMX, - CTRDGi_EraseFlashChipAsyncMX, - CTRDGi_EraseFlashSectorAsyncMX, - CTRDGi_PollingSR1MCOMMON, - MxMaxTime, - { - - - 0x00020000, - {0x00001000, 12, 32, 0}, - - - - - {MI_CTRDG_RAMCYCLE_18, MI_CTRDG_RAMCYCLE_8}, - 0xc2, - 0x09, - }, -}; - -const CTRDGiFlashTypePlus defaultFlash1M = { - CTRDGi_WriteFlashSectorMX, - CTRDGi_EraseFlashChipMX, - CTRDGi_EraseFlashSectorMX, - CTRDGi_WriteFlashSectorAsyncMX, - CTRDGi_EraseFlashChipAsyncMX, - CTRDGi_EraseFlashSectorAsyncMX, - CTRDGi_PollingSR1MCOMMON, - MxMaxTime, - { - - - 0x00020000, - {0x00001000, 12, 32, 0}, - - - - - {MI_CTRDG_RAMCYCLE_18, MI_CTRDG_RAMCYCLE_8}, - 0x00, - 0x00, - }, -}; - - -extern u16 ctrdgi_flash_lock_id; -extern BOOL ctrdgi_backup_irq; - - - - - - -u32 CTRDGi_EraseFlashChipCoreMX(CTRDGTaskInfo * arg) -{ - - - - - MICartridgeRamCycle ram_cycle; - u32 result; - (void)arg; - - - (void)OS_LockCartridge(ctrdgi_flash_lock_id); - - ram_cycle = MI_GetCartridgeRamCycle(); - MI_SetCartridgeRamCycle(AgbFlash->agbWait[0]); - - - ctrdgi_backup_irq = OS_DisableIrq(); - - *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0xaa; - *(vu8 *)CTRDG_BACKUP_COM_ADR2 = 0x55; - *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0x80; - *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0xaa; - *(vu8 *)CTRDG_BACKUP_COM_ADR2 = 0x55; - *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0x10; - - - - - - - (void)OS_RestoreIrq(ctrdgi_backup_irq); - - result = CTRDGi_PollingSR(CTRDG_BACKUP_PHASE_CHIP_ERASE, (u8 *)CTRDG_AGB_FLASH_ADR, 0xff); - - - - MI_SetCartridgeRamCycle(ram_cycle); - - (void)OS_UnlockCartridge(ctrdgi_flash_lock_id); - - return result; -} - -u32 CTRDGi_EraseFlashSectorCoreMX(CTRDGTaskInfo * arg) -{ - u8 *adr; - u16 retry; - MICartridgeRamCycle ram_cycle; - u32 result; - CTRDGTaskInfo p = *arg; - u16 secNo = p.sec_num; - - if (secNo >= AgbFlash->sector.count) - return CTRDG_BACKUP_RESULT_ERROR | CTRDG_BACKUP_PHASE_PARAMETER_CHECK; - - - (void)OS_LockCartridge(ctrdgi_flash_lock_id); - - ram_cycle = MI_GetCartridgeRamCycle(); - MI_SetCartridgeRamCycle(AgbFlash->agbWait[0]); - - - CTRDGi_SetFlashBankMx((u16)(secNo >> 4)); - secNo &= 0x0f; - - retry = 0; - - erase_again: - - adr = (u8 *)(CTRDG_AGB_FLASH_ADR + (secNo << AgbFlash->sector.shift)); - ctrdgi_backup_irq = OS_DisableIrq(); - - *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0xaa; - *(vu8 *)CTRDG_BACKUP_COM_ADR2 = 0x55; - *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0x80; - *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0xaa; - *(vu8 *)CTRDG_BACKUP_COM_ADR2 = 0x55; - *(vu8 *)adr = 0x30; - - - - - - - (void)OS_RestoreIrq(ctrdgi_backup_irq); - - result = CTRDGi_PollingSR(CTRDG_BACKUP_PHASE_SECTOR_ERASE, adr, 0xff); - if (((result & (CTRDG_BACKUP_RESULT_ERROR | CTRDG_BACKUP_RESULT_Q5TIMEOUT)) != 0) && - (retry == 0)) - { - retry++; - goto erase_again; - } - - - MI_SetCartridgeRamCycle(ram_cycle); - - (void)OS_UnlockCartridge(ctrdgi_flash_lock_id); - - - return result; -} - -static u16 CTRDGi_ProgramFlashByteMX(u8 *src, u8 *dst) -{ - u16 result; - - - - - *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0xaa; - *(vu8 *)CTRDG_BACKUP_COM_ADR2 = 0x55; - *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0xa0; - *dst = *src; - - result = CTRDGi_PollingSR(CTRDG_BACKUP_PHASE_PROGRAM, dst, *src); - - - - - return result; -} - -u32 CTRDGi_WriteFlashSectorCoreMX(CTRDGTaskInfo * arg) -{ - u8 *tgt; - - MICartridgeRamCycle ram_cycle; - u32 result; - CTRDGTaskInfo p = *arg; - u16 secNo = p.sec_num; - u8 *src = p.data; - - if (secNo >= AgbFlash->sector.count) - return CTRDG_BACKUP_RESULT_ERROR | CTRDG_BACKUP_PHASE_PARAMETER_CHECK; - - - result = CTRDGi_EraseFlashSectorMX(secNo); - if (result) - { - return result; - } - - - (void)OS_LockCartridge(ctrdgi_flash_lock_id); - - ram_cycle = MI_GetCartridgeRamCycle(); - MI_SetCartridgeRamCycle(AgbFlash->agbWait[0]); - - - - - CTRDGi_SetFlashBankMx((u16)(secNo >> 4)); - secNo &= 0x0f; - - - - ctrdg_flash_remainder = (u16)AgbFlash->sector.size; - tgt = (u8 *)(CTRDG_AGB_FLASH_ADR + (secNo << AgbFlash->sector.shift)); - ctrdgi_backup_irq = OS_DisableIrq(); - while (ctrdg_flash_remainder) - { - result = CTRDGi_ProgramFlashByteMX(src, tgt); - if (result) - break; - ctrdg_flash_remainder--; - src++; - tgt++; - } - (void)OS_RestoreIrq(ctrdgi_backup_irq); - - - MI_SetCartridgeRamCycle(ram_cycle); - - (void)OS_UnlockCartridge(ctrdgi_flash_lock_id); - - return result; -} - -u16 CTRDGi_EraseFlashChipMX(void) -{ - u16 result; - CTRDGTaskInfo p; - result = (u16)CTRDGi_EraseFlashChipCoreMX(&p); - - return result; -} - -u16 CTRDGi_EraseFlashSectorMX(u16 secNo) -{ - u16 result; - CTRDGTaskInfo p; - p.sec_num = secNo; - result = (u16)CTRDGi_EraseFlashSectorCoreMX(&p); - - return result; -} - -u16 CTRDGi_WriteFlashSectorMX(u16 secNo, u8 *src) -{ - u16 result; - CTRDGTaskInfo p; - p.sec_num = secNo; - p.data = src; - result = (u16)CTRDGi_WriteFlashSectorCoreMX(&p); - - return result; -} - -void CTRDGi_EraseFlashChipAsyncMX(CTRDG_TASK_FUNC callback) -{ - CTRDGTaskInfo p; - - CTRDGi_SetTask(&p, CTRDGi_EraseFlashChipCoreMX, callback); -} - -void CTRDGi_EraseFlashSectorAsyncMX(u16 secNo, CTRDG_TASK_FUNC callback) -{ - CTRDGTaskInfo p; - - p.sec_num = secNo; - CTRDGi_SetTask(&p, CTRDGi_EraseFlashSectorCoreMX, callback); -} - -void CTRDGi_WriteFlashSectorAsyncMX(u16 secNo, u8 *src, CTRDG_TASK_FUNC callback) -{ - CTRDGTaskInfo p; - - p.sec_num = secNo; - p.data = src; - CTRDGi_SetTask(&p, CTRDGi_WriteFlashSectorCoreMX, callback); -} diff --git a/subprojects/NitroSDK/libraries/ctrdg/src/ctrdg_flash_MX29L512.c b/subprojects/NitroSDK/libraries/ctrdg/src/ctrdg_flash_MX29L512.c deleted file mode 100644 index 94d3801b66..0000000000 --- a/subprojects/NitroSDK/libraries/ctrdg/src/ctrdg_flash_MX29L512.c +++ /dev/null @@ -1,100 +0,0 @@ -#include - -extern u16 CTRDGi_PollingSR512kCOMMON(u16 phase, u8 * adr, u16 lastData); -extern u16 CTRDGi_EraseFlashChipLE(void); -extern u16 CTRDGi_EraseFlashSectorLE(u16 secNo); -extern u16 CTRDGi_ProgramFlashByteLE(u8 * src, u8 * dst); -extern void CTRDGi_EraseFlashChipAsyncLE(CTRDG_TASK_FUNC callback); -extern void CTRDGi_EraseFlashSectorAsyncLE(u16 secNo, CTRDG_TASK_FUNC callback); -extern void CTRDGi_WriteFlashSectorAsyncLE(u16 secNo, u8 * src, CTRDG_TASK_FUNC callback); - -extern u16 ctrdgi_flash_lock_id; - -u16 CTRDGi_WriteFlashSectorMX5(u16 secNo, u8 * src); -u32 CTRDGi_WriteFlashSectorCoreMX5(CTRDGTaskInfo * arg); -void CTRDGi_WriteFlashSectorAsyncMX5(u16 secNo, u8 * src, CTRDG_TASK_FUNC callback); - -static const u16 PaMaxTime[] = { - 10, - 10, - 500, - 500, -}; - -const CTRDGiFlashTypePlus MN63F805MNP = { - CTRDGi_WriteFlashSectorMX5, - CTRDGi_EraseFlashChipLE, - CTRDGi_EraseFlashSectorLE, - CTRDGi_WriteFlashSectorAsyncMX5, - CTRDGi_EraseFlashChipAsyncLE, - CTRDGi_EraseFlashSectorAsyncLE, - CTRDGi_PollingSR512kCOMMON, - PaMaxTime, - { - 0x00010000, - {0x00001000, 12, 16, 0}, - - {MI_CTRDG_RAMCYCLE_10, MI_CTRDG_RAMCYCLE_6}, - 0x32, - 0x1b, - }, -}; - -u32 CTRDGi_WriteFlashSectorCoreMX5 (CTRDGTaskInfo * arg) { - u8 * tgt; - MICartridgeRamCycle ram_cycle; - u32 result; - CTRDGTaskInfo p = *arg; - u16 secNo = p.sec_num; - u8 * src = p.data; - - if (secNo >= AgbFlash->sector.count) { - return CTRDG_BACKUP_RESULT_ERROR | CTRDG_BACKUP_PHASE_PARAMETER_CHECK; - } - - result = CTRDGi_EraseFlashSectorLE(secNo); - if (result) { - return result; - } - - (void)OS_LockCartridge(ctrdgi_flash_lock_id); - - ram_cycle = MI_GetCartridgeRamCycle(); - MI_SetCartridgeRamCycle(AgbFlash->agbWait[0]); - - ctrdg_flash_remainder = (u16)AgbFlash->sector.size; - tgt = (u8 *)(CTRDG_AGB_FLASH_ADR + (secNo << AgbFlash->sector.shift)); - while (ctrdg_flash_remainder) { - result = CTRDGi_ProgramFlashByteLE(src, tgt); - if (result) { - break; - } - ctrdg_flash_remainder--; - src++; - tgt++; - } - - MI_SetCartridgeRamCycle(ram_cycle); - - (void)OS_UnlockCartridge(ctrdgi_flash_lock_id); - - return result; -} - -u16 CTRDGi_WriteFlashSectorMX5 (u16 secNo, u8 * src) { - u16 result; - CTRDGTaskInfo p; - p.sec_num = secNo; - p.data = src; - result = (u16)CTRDGi_WriteFlashSectorCoreMX5(&p); - - return result; -} - -void CTRDGi_WriteFlashSectorAsyncMX5 (u16 secNo, u8 * src, CTRDG_TASK_FUNC callback) { - CTRDGTaskInfo p; - - p.sec_num = secNo; - p.data = src; - CTRDGi_SetTask(&p, CTRDGi_WriteFlashSectorCoreMX5, callback); -} diff --git a/subprojects/NitroSDK/libraries/ctrdg/src/ctrdg_flash_common.c b/subprojects/NitroSDK/libraries/ctrdg/src/ctrdg_flash_common.c deleted file mode 100644 index 2b5a5dd6fd..0000000000 --- a/subprojects/NitroSDK/libraries/ctrdg/src/ctrdg_flash_common.c +++ /dev/null @@ -1,345 +0,0 @@ -#include - -u32 CTRDGi_ReadAgbFlashCore(CTRDGTaskInfo * arg); -u32 CTRDGi_VerifyAgbFlashCore(CTRDGTaskInfo * arg); -u32 CTRDGi_WriteAndVerifyAgbFlashSectorCore(CTRDGTaskInfo * arg); -u32 CTRDGi_WriteAndVerifyAgbFlashSectorCore(CTRDGTaskInfo * arg); -u8 CTRDGi_ReadSrFunc(u8 * adr); - -u16 ctrdg_flash_remainder; - -const CTRDGFlashType * AgbFlash; -u16 (*CTRDGi_WriteAgbFlashSector) (u16 secNo, u8 * src); -u16 (*CTRDGi_EraseAgbFlashChip) (void); -u16 (*CTRDGi_EraseAgbFlashSector) (u16 sec_num); -void (*CTRDGi_WriteAgbFlashSectorAsync) (u16 secNo, u8 * src, CTRDG_TASK_FUNC callback); -void (*CTRDGi_EraseAgbFlashChipAsync) (CTRDG_TASK_FUNC callback); -void (*CTRDGi_EraseAgbFlashSectorAsync) (u16 sec_num, CTRDG_TASK_FUNC callback); -u16 (*CTRDGi_PollingSR) (u16 phase, u8 * adr, u16 lastData); -const u16(*ctrdgi_fl_maxtime); - -OSTick start_tick, timeout_tick; - -u16 ctrdgi_flash_lock_id; -BOOL ctrdgi_backup_irq; - -vu16 ctrdgi_timeoutFlag; - -void CTRDGi_SetFlashBankMx (u16 bank) { - *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0xaa; - *(vu8 *)CTRDG_BACKUP_COM_ADR2 = 0x55; - *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0xb0; - *(vu8 *)CTRDG_AGB_FLASH_ADR = (u8)bank; -} - -u16 CTRDGi_ReadFlashID (void) { - u16 flashID; - - ctrdgi_backup_irq = OS_DisableIrq(); - - *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0xaa; - *(vu8 *)CTRDG_BACKUP_COM_ADR2 = 0x55; - *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0x90; - - (void)OS_RestoreIrq(ctrdgi_backup_irq); - - StartFlashTimer(0); - while (!ctrdgi_timeoutFlag) { - CheckFlashTimer(); - } - ; - - flashID = (u16)(CTRDGi_ReadSrFunc((u8 *)CTRDG_BACKUP_DEVICE_ID_ADR) << 8); - flashID |= CTRDGi_ReadSrFunc((u8 *)CTRDG_BACKUP_VENDER_ID_ADR); - - ctrdgi_backup_irq = OS_DisableIrq(); - - *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0xaa; - *(vu8 *)CTRDG_BACKUP_COM_ADR2 = 0x55; - *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0xf0; - - *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0xf0; - - (void)OS_RestoreIrq(ctrdgi_backup_irq); - - StartFlashTimer(0); - while (!ctrdgi_timeoutFlag) { - CheckFlashTimer(); - } - ; - - return flashID; -} - -void StartFlashTimer (u16 phase) { - ctrdgi_timeoutFlag = FALSE; - - timeout_tick = (u64) * (ctrdgi_fl_maxtime + phase); - start_tick = OS_GetTick(); -} - -void CheckFlashTimer (void) { - OSTick current_tick, process_tick, process_time; - - current_tick = OS_GetTick(); - process_tick = current_tick - start_tick; - process_time = OS_TicksToMilliSeconds(process_tick); - if (timeout_tick <= process_time) { - ctrdgi_timeoutFlag = TRUE; - } -} - -u8 CTRDGi_ReadSrFunc (u8 * adr) { - return *adr; -} - -u16 CTRDGi_PollingSR512kCOMMON (u16 phase, u8 * adr, u16 lastData) { - u16 poll; - u16 result; - - result = CTRDG_BACKUP_RESULT_OK; - StartFlashTimer(phase); - while (1) { - poll = CTRDGi_ReadSrFunc(adr); - if (poll == lastData) { - break; - } - if (ctrdgi_timeoutFlag) { - if (CTRDGi_ReadSrFunc(adr) == lastData) { - break; - } else { - if (AgbFlash->makerID == 0xc2) { - *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0xf0; - } - result = (u16)(CTRDG_BACKUP_RESULT_ERROR | CTRDG_BACKUP_RESULT_TIMEOUT | phase); - break; - } - } - } - if (!CTRDG_IsExisting()) { - result = CTRDG_BACKUP_RESULT_PULLEDOUT; - } - - return result; -} - -u16 CTRDGi_PollingSR1MCOMMON (u16 phase, u8 * adr, u16 lastData) { - u16 poll; - u16 result; - - result = CTRDG_BACKUP_RESULT_OK; - StartFlashTimer(phase); - while (1) { - CheckFlashTimer(); - poll = CTRDGi_ReadSrFunc(adr); - - if (poll == lastData) { - break; - } else { - if ((poll & 0x20) != 0) { - if (CTRDGi_ReadSrFunc(adr) == lastData) { - break; - } else { - *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0xf0; - result = - (u16)(CTRDG_BACKUP_RESULT_ERROR | CTRDG_BACKUP_RESULT_Q5TIMEOUT | phase); - break; - } - } - } - if (ctrdgi_timeoutFlag) { - if (CTRDGi_ReadSrFunc(adr) == lastData) { - break; - } else { - *(vu8 *)CTRDG_BACKUP_COM_ADR1 = 0xf0; - result = (u16)(CTRDG_BACKUP_RESULT_ERROR | CTRDG_BACKUP_RESULT_TIMEOUT | phase); - break; - } - } - } - if (!CTRDG_IsExisting()) { - result = CTRDG_BACKUP_RESULT_PULLEDOUT; - } - - return result; -} - -u32 CTRDGi_ReadAgbFlashCore (CTRDGTaskInfo * arg) { - u8 * src; - MICartridgeRamCycle ram_cycle; - CTRDGTaskInfo p = *arg; - u16 sec_num = p.sec_num; - u32 offset = p.offset; - u8 * dst = p.dst; - u32 size = p.size; - - (void)OS_LockCartridge(ctrdgi_flash_lock_id); - - ram_cycle = MI_GetCartridgeRamCycle(); - MI_SetCartridgeRamCycle(MI_CTRDG_RAMCYCLE_18); - - if (AgbFlash->romSize == 0x00020000) { - CTRDGi_SetFlashBankMx((u16)(sec_num >> 4)); - sec_num &= 0x0f; - } - - src = (u8 *)(CTRDG_AGB_FLASH_ADR + (sec_num << AgbFlash->sector.shift) + offset); - - while (size--) { - *dst++ = *src++; - } - - MI_SetCartridgeRamCycle(ram_cycle); - - (void)OS_UnlockCartridge(ctrdgi_flash_lock_id); - - return 0; -} - -static u32 CTRDGi_VerifyFlashSectorCore (u8 * src, u8 * tgt, u32 size) { - while (size--) { - if (*tgt++ != *src++) { - return (u32)tgt - 1; - } - } - return 0; -} - -u32 CTRDGi_VerifyAgbFlashCore (CTRDGTaskInfo * arg) { - u8 * tgt; - u32 result; - MICartridgeRamCycle ram_cycle; - CTRDGTaskInfo p = *arg; - u16 sec_num = p.sec_num; - u8 * src = p.data; - u32 size = p.size; - - (void)OS_LockCartridge(ctrdgi_flash_lock_id); - - ram_cycle = MI_GetCartridgeRamCycle(); - MI_SetCartridgeRamCycle(MI_CTRDG_RAMCYCLE_18); - - if (AgbFlash->romSize == 0x00020000) { - CTRDGi_SetFlashBankMx((u16)(sec_num >> 4)); - sec_num &= 0x0f; - } - - tgt = (u8 *)(CTRDG_AGB_FLASH_ADR + (sec_num << AgbFlash->sector.shift)); - result = CTRDGi_VerifyFlashSectorCore(src, tgt, size); - - MI_SetCartridgeRamCycle(ram_cycle); - - (void)OS_UnlockCartridge(ctrdgi_flash_lock_id); - return result; -} - -u32 CTRDGi_WriteAndVerifyAgbFlashSectorCore (CTRDGTaskInfo * arg) { - u16 retry; - u32 result; - CTRDGTaskInfo p = *arg; - u16 sec_num = p.sec_num; - u32 offset = p.offset; - u8 * src = p.data; - u32 verifysize = p.size; - - retry = 0; - while (retry < CTRDG_AGB_FLASH_RETRY_MAX) { - result = (u32)CTRDG_WriteAgbFlashSector(sec_num, src); - if (result == 0) { - result = CTRDG_VerifyAgbFlash(sec_num, src, verifysize); - if (result == 0) { - break; - } - } - retry++; - } - return result; -} - -void CTRDG_ReadAgbFlash (u16 sec_num, u32 offset, u8 * dst, u32 size) { - CTRDGTaskInfo p; - p.sec_num = sec_num; - p.offset = offset; - p.dst = dst; - p.size = size; - - (void)CTRDGi_ReadAgbFlashCore(&p); -} - -u16 CTRDG_EraseAgbFlashChip (void) { - u16 result = (*CTRDGi_EraseAgbFlashChip) (); - - return result; -} - -u16 CTRDG_EraseAgbFlashSector (u16 secNo) { - u16 result = (*CTRDGi_EraseAgbFlashSector) (secNo); - - return result; -} - -u16 CTRDG_WriteAgbFlashSector (u16 secNo, u8 * src) { - u16 result = (*CTRDGi_WriteAgbFlashSector) (secNo, src); - - return result; -} - -u32 CTRDG_VerifyAgbFlash (u16 sec_num, u8 * src, u32 size) { - u32 result; - CTRDGTaskInfo p; - p.sec_num = sec_num; - p.data = src; - p.size = size; - result = CTRDGi_VerifyAgbFlashCore(&p); - - return result; -} - -u32 CTRDG_WriteAndVerifyAgbFlash (u16 sec_num, u8 * src, u32 verifysize) { - u32 result; - CTRDGTaskInfo p; - p.sec_num = sec_num; - p.data = src; - p.size = verifysize; - result = CTRDGi_WriteAndVerifyAgbFlashSectorCore(&p); - - return result; -} - -void CTRDG_ReadAgbFlashAsync (u16 sec_num, u32 offset, u8 * dst, u32 size, CTRDG_TASK_FUNC callback) { - CTRDGTaskInfo p; - p.sec_num = sec_num; - p.offset = offset; - p.dst = dst; - p.size = size; - - CTRDGi_SetTask(&p, CTRDGi_ReadAgbFlashCore, callback); -} - -void CTRDG_EraseAgbFlashChipAsync (CTRDG_TASK_FUNC callback) { - (*CTRDGi_EraseAgbFlashChipAsync) (callback); -} - -void CTRDG_EraseAgbFlashSectorAsync (u16 secNo, CTRDG_TASK_FUNC callback) { - (*CTRDGi_EraseAgbFlashSectorAsync) (secNo, callback); -} - -void CTRDG_WriteAgbFlashSectorAsync (u16 secNo, u8 * src, CTRDG_TASK_FUNC callback) { - (*CTRDGi_WriteAgbFlashSectorAsync) (secNo, src, callback); -} - -void CTRDG_VerifyAgbFlashAsync (u16 sec_num, u8 * src, u32 size, CTRDG_TASK_FUNC callback) { - CTRDGTaskInfo p; - p.sec_num = sec_num; - p.data = src; - p.size = size; - CTRDGi_SetTask(&p, CTRDGi_VerifyAgbFlashCore, callback); -} - -void CTRDG_WriteAndVerifyAgbFlashAsync (u16 sec_num, u8 * src, u32 verifysize, CTRDG_TASK_FUNC callback) { - CTRDGTaskInfo p; - p.sec_num = sec_num; - p.data = src; - p.size = verifysize; - CTRDGi_SetTask(&p, CTRDGi_WriteAndVerifyAgbFlashSectorCore, callback); -} diff --git a/subprojects/NitroSDK/libraries/ctrdg/src/ctrdg_proc.c b/subprojects/NitroSDK/libraries/ctrdg/src/ctrdg_proc.c deleted file mode 100644 index f89e44af42..0000000000 --- a/subprojects/NitroSDK/libraries/ctrdg/src/ctrdg_proc.c +++ /dev/null @@ -1,237 +0,0 @@ -#include -#include "include/ctrdg_work.h" - -extern void CTRDGi_InitCommon(void); -extern void CTRDGi_SendtoPxi(u32 data); - -static void CTRDGi_CallbackForInitModuleInfo(PXIFifoTag tag, u32 data, BOOL err); -static void CTRDGi_PulledOutCallback(PXIFifoTag tag, u32 data, BOOL err); -static void CTRDGi_CallbackForSetPhi(PXIFifoTag tag, u32 data, BOOL err); - -extern CTRDGWork CTRDGi_Work; - -static int CTRDGi_Lock = FALSE; - -CTRDGPulledOutCallback CTRDG_UserCallback = NULL; - -static BOOL isCartridgePullOut = FALSE; -static BOOL skipCheck = FALSE; -static BOOL ctrdg_already_pullout = FALSE; - -void CTRDG_Init (void) { - static BOOL isInitialized; - - if (isInitialized) { - return; - } - isInitialized = TRUE; - - CTRDGi_InitCommon(); - - ctrdg_already_pullout = FALSE; - -#ifndef SDK_SMALL_BUILD - - PXI_Init(); - while (!PXI_IsCallbackReady(PXI_FIFO_TAG_CTRDG, PXI_PROC_ARM7)) { - } - PXI_SetFifoRecvCallback(PXI_FIFO_TAG_CTRDG, CTRDGi_CallbackForInitModuleInfo); - - CTRDGi_InitModuleInfo(); - - PXI_SetFifoRecvCallback(PXI_FIFO_TAG_CTRDG, NULL); - PXI_SetFifoRecvCallback(PXI_FIFO_TAG_CTRDG, CTRDGi_PulledOutCallback); - - CTRDG_UserCallback = NULL; - - { - static CTRDGiTaskWork CTRDGTaskList; - CTRDGi_InitTaskThread(&CTRDGTaskList); - } - - PXI_SetFifoRecvCallback(PXI_FIFO_TAG_CTRDG_PHI, CTRDGi_CallbackForSetPhi); - -#if defined(SDK_ARM9) - CTRDG_Enable(FALSE); -#endif -#endif -} - -static CTRDGHeader headerBuf ATTRIBUTE_ALIGN(32); - -void CTRDGi_InitModuleInfo (void) { -#ifndef SDK_SMALL_BUILD - - static BOOL isInitialized; - CTRDGLockByProc lockInfo; - OSIrqMask lastIE; - BOOL lastIME; - - if (isInitialized) { - return; - } - isInitialized = TRUE; - - if (!(reg_OS_PAUSE & REG_OS_PAUSE_CHK_MASK)) { - return; - } - - lastIE = OS_SetIrqMask(OS_IE_SPFIFO_RECV); - lastIME = OS_EnableIrq(); - - CTRDGi_LockByProcessor(CTRDGi_Work.lockID, &lockInfo); - - { - MIProcessor proc = MI_GetMainMemoryPriority(); - CTRDGRomCycle rc; - - CTRDGi_ChangeLatestAccessCycle(&rc); - - MI_SetMainMemoryPriority(MI_PROCESSOR_ARM9); - - DC_InvalidateRange(&((u8 *)&headerBuf)[0x80], sizeof(headerBuf) - 0x80); - MI_DmaCopy16( - 1, (void *)(HW_CTRDG_ROM + 0x80), - &((u8 *)&headerBuf)[0x80], sizeof(headerBuf) - 0x80 - ); - - MI_SetMainMemoryPriority(proc); - - CTRDGi_RestoreAccessCycle(&rc); - } - - CTRDGi_UnlockByProcessor(CTRDGi_Work.lockID, &lockInfo); - - if ((*(u8 *)HW_IS_CTRDG_EXIST) || !(*(u8 *)HW_SET_CTRDG_MODULE_INFO_ONCE)) { - int i; - CTRDGHeader * chb = &headerBuf; - CTRDGModuleInfo * cip = CTRDGi_GetModuleInfoAddr(); - - cip->moduleID.raw = chb->moduleID; - for (i = 0; i < 3; i++) { - cip->exLsiID[i] = chb->exLsiID[i]; - } - cip->makerCode = chb->makerCode; - cip->gameCode = chb->gameCode; - - *(u8 *)HW_IS_CTRDG_EXIST = (u8)((CTRDG_IsExisting())? 1 : 0); - - (*(u8 *)HW_SET_CTRDG_MODULE_INFO_ONCE) = TRUE; - } - - MI_CpuCopy32( - (void *)CTRDG_SYSROM9_NINLOGO_ADR, &headerBuf.nintendoLogo, - sizeof(headerBuf.nintendoLogo) - ); - DC_FlushAll(); - - CTRDGi_SendtoPxi( - CTRDG_PXI_COMMAND_INIT_MODULE_INFO | - (((u32) & headerBuf - HW_MAIN_MEM) >> 5) << CTRDG_PXI_COMMAND_PARAM_SHIFT - ); - - while (CTRDGi_Work.subpInitialized != TRUE) { - SVC_WaitByLoop(1); - } - - (void)OS_RestoreIrq(lastIME); - (void)OS_SetIrqMask(lastIE); - -#endif -} - -static void CTRDGi_CallbackForInitModuleInfo (PXIFifoTag tag, u32 data, BOOL err) { -#pragma unused( tag, err ) - - if ((data & CTRDG_PXI_COMMAND_MASK) == CTRDG_PXI_COMMAND_INIT_MODULE_INFO) { - CTRDGi_Work.subpInitialized = TRUE; - } else { -#ifndef SDK_FINALROM - OS_Panic("illegal Cartridge pxi command."); -#else - OS_Panic(""); -#endif - } -} - -static void CTRDGi_PulledOutCallback (PXIFifoTag tag, u32 data, BOOL err) { -#pragma unused( tag, err ) - - if ((data & CTRDG_PXI_COMMAND_MASK) == CTRDG_PXI_COMMAND_PULLED_OUT) { - if (ctrdg_already_pullout == FALSE) { - BOOL isTerminateImm = FALSE; - - if (CTRDG_UserCallback) { - isTerminateImm = CTRDG_UserCallback(); - } - - if (isTerminateImm) { - CTRDG_TerminateForPulledOut(); - } - - ctrdg_already_pullout = TRUE; - } - } else { - OS_Printf(">>>tag[%x] data[%x] err[%x]\n", tag, data, err); -#ifndef SDK_FINALROM - OS_Panic("illegal Cartridge pxi command."); -#else - OS_Panic(""); -#endif - } -} - -void CTRDG_SetPulledOutCallback (CTRDGPulledOutCallback callback) { - CTRDG_UserCallback = callback; -} - -void CTRDG_TerminateForPulledOut (void) { - CTRDGi_SendtoPxi(CTRDG_PXI_COMMAND_TERMINATE); - - OS_Terminate(); -} - -void CTRDG_SendToARM7 (void * arg) { - (void)PXI_SendWordByFifo(PXI_FIFO_TAG_CTRDG_Ex, (u32)arg, FALSE); -} - -void CTRDG_CheckPulledOut (void) { - if (skipCheck || isCartridgePullOut) { - return; - } - - isCartridgePullOut = CTRDG_IsPulledOut(); - - if (!CTRDG_IsExisting()) { - if (!isCartridgePullOut) { - skipCheck = TRUE; - return; - } - } - - if (isCartridgePullOut) { - CTRDGi_PulledOutCallback(PXI_FIFO_TAG_CTRDG, CTRDG_PXI_COMMAND_PULLED_OUT, NULL); - } -} - -void CTRDG_SetPhiClock (CTRDGPhiClock clock) { - u32 data = ((u32)clock << CTRDG_PXI_COMMAND_PARAM_SHIFT) | CTRDG_PXI_COMMAND_SET_PHI; - - SDK_ASSERT((u32)clock <= CTRDG_PHI_CLOCK_16MHZ); - - MIi_SetPhiClock((MIiPhiClock)clock); - - CTRDGi_Lock = TRUE; - while (PXI_SendWordByFifo(PXI_FIFO_TAG_CTRDG_PHI, data, FALSE) != PXI_FIFO_SUCCESS) { - SVC_WaitByLoop(1); - } - - while (CTRDGi_Lock) { - SVC_WaitByLoop(1); - } -} - -static void CTRDGi_CallbackForSetPhi (PXIFifoTag tag, u32 data, BOOL err) { -#pragma unused(tag, data, err) - CTRDGi_Lock = FALSE; -} diff --git a/subprojects/NitroSDK/libraries/ctrdg/src/ctrdg_sram.c b/subprojects/NitroSDK/libraries/ctrdg/src/ctrdg_sram.c deleted file mode 100644 index 9026fe44de..0000000000 --- a/subprojects/NitroSDK/libraries/ctrdg/src/ctrdg_sram.c +++ /dev/null @@ -1,191 +0,0 @@ -#include - -u32 CTRDGi_ReadAgbSramCore(CTRDGTaskInfo * arg); -u32 CTRDGi_WriteAgbSramCore(CTRDGTaskInfo * arg); -u32 CTRDGi_VerifyAgbSramCore(CTRDGTaskInfo * arg); -u32 CTRDGi_WriteAndVerifyAgbSramCore(CTRDGTaskInfo * arg); - -u16 ctrdgi_sram_lock_id; - -static const u8 AgbLibSram_ver[] = "AGBSRAM_V113"; - -u32 CTRDGi_ReadAgbSramCore (CTRDGTaskInfo * arg) { - u8 * src_pt, * dst_pt; - MICartridgeRamCycle ram_cycle; - CTRDGTaskInfo p = *arg; - u32 src = p.offset; - void * dst = p.dst; - u32 size = p.size; - static BOOL flag = FALSE; - - (void)OS_LockCartridge(ctrdgi_sram_lock_id); - - ram_cycle = MI_GetCartridgeRamCycle(); - MI_SetCartridgeRamCycle(MI_CTRDG_RAMCYCLE_18); - - src_pt = (u8 *)src; - dst_pt = (u8 *)dst; - while (size--) { - *dst_pt++ = *src_pt++; - } - - MI_SetCartridgeRamCycle(ram_cycle); - - (void)OS_UnlockCartridge(ctrdgi_sram_lock_id); - - return 0; -} - -u32 CTRDGi_WriteAgbSramCore (CTRDGTaskInfo * arg) { - u8 * src_pt, * dst_pt; - MICartridgeRamCycle ram_cycle; - CTRDGTaskInfo p = *arg; - u32 dst = p.offset; - const void * src = p.data; - u32 size = p.size; - - (void)OS_LockCartridge(ctrdgi_sram_lock_id); - - ram_cycle = MI_GetCartridgeRamCycle(); - MI_SetCartridgeRamCycle(MI_CTRDG_RAMCYCLE_18); - - src_pt = (u8 *)src; - dst_pt = (u8 *)dst; - while (size--) { - *dst_pt++ = *src_pt++; - } - - MI_SetCartridgeRamCycle(ram_cycle); - - (void)OS_UnlockCartridge(ctrdgi_sram_lock_id); - - return 0; -} - -u32 CTRDGi_VerifyAgbSramCore (CTRDGTaskInfo * arg) { - u8 * tgt_pt, * src_pt; - u32 result; - MICartridgeRamCycle ram_cycle; - CTRDGTaskInfo p = *arg; - u32 tgt = p.offset; - const void * src = p.data; - u32 size = p.size; - - (void)OS_LockCartridge(ctrdgi_sram_lock_id); - - ram_cycle = MI_GetCartridgeRamCycle(); - MI_SetCartridgeRamCycle(MI_CTRDG_RAMCYCLE_18); - - result = 0; - tgt_pt = (u8 *)tgt; - src_pt = (u8 *)src; - while (size--) { - if (*tgt_pt++ != *src_pt++) { - result = (u32)tgt_pt - 1; - break; - } - } - - MI_SetCartridgeRamCycle(ram_cycle); - - (void)OS_UnlockCartridge(ctrdgi_sram_lock_id); - - return result; -} - -u32 CTRDGi_WriteAndVerifyAgbSramCore (CTRDGTaskInfo * arg) { - u8 retry; - u32 result; - CTRDGTaskInfo p = *arg; - u32 dst = p.offset; - const void * src = p.data; - u32 size = p.size; - - retry = 0; - while (retry < CTRDG_AGB_SRAM_RETRY_MAX) { - CTRDG_WriteAgbSram(dst, src, size); - result = CTRDG_VerifyAgbSram(dst, src, size); - if (result == 0) { - break; - } - retry++; - } - return result; -} - -void CTRDG_ReadAgbSram (u32 src, void * dst, u32 size) { - CTRDGTaskInfo p; - p.offset = src; - p.dst = (u8 *)dst; - p.size = size; - - (void)CTRDGi_ReadAgbSramCore(&p); -} - -void CTRDG_WriteAgbSram (u32 dst, const void * src, u32 size) { - CTRDGTaskInfo p; - p.data = (u8 *)src; - p.offset = dst; - p.size = size; - - (void)CTRDGi_WriteAgbSramCore(&p); -} - -u32 CTRDG_VerifyAgbSram (u32 tgt, const void * src, u32 size) { - u32 result; - CTRDGTaskInfo p; - p.data = (u8 *)src; - p.offset = tgt; - p.size = size; - - result = CTRDGi_VerifyAgbSramCore(&p); - - return result; -} - -u32 CTRDG_WriteAndVerifyAgbSram (u32 dst, const void * src, u32 size) { - u32 result; - CTRDGTaskInfo p; - p.data = (u8 *)src; - p.offset = dst; - p.size = size; - - result = CTRDGi_WriteAndVerifyAgbSramCore(&p); - - return result; -} -void CTRDG_ReadAgbSramAsync (u32 src, void * dst, u32 size, CTRDG_TASK_FUNC callback) { - CTRDGTaskInfo p; - p.offset = src; - p.dst = (u8 *)dst; - p.size = size; - - CTRDGi_SetTask(&p, CTRDGi_ReadAgbSramCore, callback); -} - -void CTRDG_WriteAgbSramAsync (u32 dst, const void * src, u32 size, CTRDG_TASK_FUNC callback) { - CTRDGTaskInfo p; - p.data = (u8 *)src; - p.offset = dst; - p.size = size; - - CTRDGi_SetTask(&p, CTRDGi_WriteAgbSramCore, callback); -} - -void CTRDG_VerifyAgbSramAsync (u32 tgt, const void * src, u32 size, CTRDG_TASK_FUNC callback) { - CTRDGTaskInfo p; - p.data = (u8 *)src; - p.offset = tgt; - p.size = size; - - CTRDGi_SetTask(&p, CTRDGi_VerifyAgbSramCore, callback); -} - -void CTRDG_WriteAndVerifyAgbSramAsync (u32 dst, const void * src, u32 size, CTRDG_TASK_FUNC callback) { - CTRDGTaskInfo p; - p.data = (u8 *)src; - p.offset = dst; - p.size = size; - - CTRDGi_SetTask(&p, CTRDGi_WriteAndVerifyAgbSramCore, callback); -} diff --git a/subprojects/NitroSDK/libraries/ctrdg/src/ctrdg_task.c b/subprojects/NitroSDK/libraries/ctrdg/src/ctrdg_task.c deleted file mode 100644 index 891f002953..0000000000 --- a/subprojects/NitroSDK/libraries/ctrdg/src/ctrdg_task.c +++ /dev/null @@ -1,144 +0,0 @@ -#include - -static CTRDGiTaskWork * ctrdgi_task_work = NULL; -static CTRDGTaskInfo ctrdgi_task_list; - -static void CTRDGi_TaskThread(void * arg); - -u64 ctrdg_task_stack[CTRDG_TASK_STACK_SIZE / sizeof(u64)]; - -void CTRDGi_InitTaskThread (void * p_work) { - OSIntrMode bak_cpsr = OS_DisableInterrupts(); - - if (!ctrdgi_task_work) { - CTRDGiTaskWork * const p = (CTRDGiTaskWork *)p_work; - - SDK_ASSERT(OS_IsThreadAvailable()); - - ctrdgi_task_work = p; - - CTRDGi_InitTaskInfo(&p->end_task); - - CTRDGi_InitTaskInfo(&ctrdgi_task_list); - - p->list = NULL; - - OS_CreateThread( - p->th, CTRDGi_TaskThread, p, - ctrdg_task_stack + CTRDG_TASK_STACK_SIZE / sizeof(u64), - CTRDG_TASK_STACK_SIZE, CTRDG_TASK_PRIORITY_DEFAULT - ); - OS_WakeupThreadDirect(p->th); - } - - (void)OS_RestoreInterrupts(bak_cpsr); -} - -BOOL CTRDGi_IsTaskAvailable (void) { - return (ctrdgi_task_work != NULL); -} - -void CTRDGi_InitTaskInfo (CTRDGTaskInfo * pt) { - SDK_ASSERT(pt != NULL); - MI_CpuClear8(pt, sizeof(*pt)); -} - -BOOL CTRDGi_IsTaskBusy (volatile const CTRDGTaskInfo * pt) { - return pt->busy != FALSE; -} - -static void CTRDGi_TaskThread (void * arg) { - CTRDGiTaskWork * const p = (CTRDGiTaskWork *)arg; - - for (;;) { - CTRDGTaskInfo trg; - MI_CpuClear8(&trg, sizeof(CTRDGTaskInfo)); - - { - OSIntrMode bak_cpsr = OS_DisableInterrupts(); - - while (!p->list) { - OS_SleepThread(NULL); - } - - trg = *p->list; - - (void)OS_RestoreInterrupts(bak_cpsr); - } - - if (trg.task) { - trg.result = (u32)(*trg.task) (&trg); - } - - { - OSIntrMode bak_cpsr = OS_DisableInterrupts(); - - CTRDG_TASK_FUNC callback = trg.callback; - - ctrdgi_task_list.busy = FALSE; - - if (callback) { - (void)(*callback) (&trg); - } - - if (ctrdgi_task_work == NULL) { - break; - } - - p->list = NULL; - - (void)OS_RestoreInterrupts(bak_cpsr); - } - } - OS_TPrintf("task-thread end.\n"); - OS_ExitThread(); - return; -} - -void CTRDGi_SetTask (CTRDGTaskInfo * pt, CTRDG_TASK_FUNC task, CTRDG_TASK_FUNC callback) { - CTRDGiTaskWork * const p_work = ctrdgi_task_work; - - SDK_ASSERT(pt != NULL); - SDK_ASSERT(CTRDGi_IsTaskAvailable()); - - if (!CTRDGi_IsTaskAvailable()) { - OS_TPanic("CTRDGi_SetTask() failed! (task-thread is not available now)"); - } - - if (ctrdgi_task_list.busy) { - OS_TPanic("CTRDGi_SetTask() failed! (specified structure is busy)"); - } - - { - OSIntrMode bak_cpsr = OS_DisableInterrupts(); - pt->busy = TRUE; - pt->task = task; - pt->callback = callback; - - if (pt == &p_work->end_task) { - ctrdgi_task_work = NULL; - } - - ctrdgi_task_list = *pt; - - p_work->list = &ctrdgi_task_list; - OS_WakeupThreadDirect(p_work->th); - - (void)OS_RestoreInterrupts(bak_cpsr); - } -} - -void CTRDGi_EndTaskThread (CTRDG_TASK_FUNC callback) { - OSIntrMode bak_cpsr = OS_DisableInterrupts(); - if (CTRDGi_IsTaskAvailable()) { - (void)CTRDGi_SetTask(&ctrdgi_task_work->end_task, NULL, callback); - } - (void)OS_RestoreInterrupts(bak_cpsr); -} - -void CTRDG_SetTaskThreadPriority (u32 priority) { - if (ctrdgi_task_work) { - CTRDGiTaskWork * const p = ctrdgi_task_work; - (void)OS_SetThreadPriority(p->th, priority); - } -} diff --git a/subprojects/NitroSDK/libraries/ctrdg/src/include/ctrdg_work.h b/subprojects/NitroSDK/libraries/ctrdg/src/include/ctrdg_work.h deleted file mode 100644 index 54159485f3..0000000000 --- a/subprojects/NitroSDK/libraries/ctrdg/src/include/ctrdg_work.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef NITRO_LIBRARY_CTRDG_WORK_H_ -#define NITRO_LIBRARY_CTRDG_WORK_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct CTRDGWork { - vu16 subpInitialized; - u16 lockID; -} CTRDGWork; - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/libraries/dgt/asm/hash1.s b/subprojects/NitroSDK/libraries/dgt/asm/hash1.s deleted file mode 100644 index fee950d1b5..0000000000 --- a/subprojects/NitroSDK/libraries/dgt/asm/hash1.s +++ /dev/null @@ -1,447 +0,0 @@ - .include "macros/function.inc" - .include "include/hash1.inc" - - - - .text - - - arm_func_start DGT_Hash1Reset -DGT_Hash1Reset: ; 0x020C8C08 - ldr r2, _020C8C38 ; =0x67452301 - ldr r1, _020C8C3C ; =0xEFCDAB89 - str r2, [r0, #0] - ldr r2, _020C8C40 ; =0x98BADCFE - str r1, [r0, #4] - ldr r1, _020C8C44 ; =0x10325476 - str r2, [r0, #8] - str r1, [r0, #0xc] - mov r1, #0 - str r1, [r0, #0x10] - str r1, [r0, #0x14] - bx lr - ; .align 2, 0 -_020C8C38: .word 0x67452301 -_020C8C3C: .word 0xEFCDAB89 -_020C8C40: .word 0x98BADCFE -_020C8C44: .word 0x10325476 - arm_func_end DGT_Hash1Reset - - arm_func_start DGT_Hash1SetSource -DGT_Hash1SetSource: ; 0x020C8C48 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - mov r6, r0 - ldr r3, [r6, #0x10] - mov r4, r2 - and ip, r3, #0x3f - ldr r0, [r6, #0x14] - adds r3, r3, r4 - str r3, [r6, #0x10] - adc r0, r0, #0 - rsb r7, ip, #0x40 - mov r5, r1 - str r0, [r6, #0x14] - cmp r7, r4 - bls _020C8C9C - cmp r4, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - add r1, r6, #0x18 - mov r0, r5 - add r1, r1, ip - bl MI_CpuCopy8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_020C8C9C: - add r1, r6, #0x18 - mov r0, r5 - mov r2, r7 - add r1, r1, ip - bl MI_CpuCopy8 - mov r0, r6 - bl ProcessBlock - sub r4, r4, r7 - mov r8, r4, lsr #6 - cmp r8, #0 - add r7, r5, r7 - ble _020C8CF8 - mov r5, #0x40 -_020C8CD0: - mov r0, r7 - mov r2, r5 - add r1, r6, #0x18 - bl MI_CpuCopy8 - mov r0, r6 - add r7, r7, #0x40 - bl ProcessBlock - sub r8, r8, #1 - cmp r8, #0 - bgt _020C8CD0 -_020C8CF8: - ands r2, r4, #0x3f - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, r7 - add r1, r6, #0x18 - bl MI_CpuCopy8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end DGT_Hash1SetSource - - arm_func_start DGT_Hash1GetDigest_R -DGT_Hash1GetDigest_R: ; 0x020C8D10 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r4, r1 - ldr r1, [r4, #0x14] - ldr r3, [r4, #0x10] - mov r5, r0 - mov r6, r1, lsl #3 - ldr r1, _020C8DC4 ; =0x02101170 - mov r0, r4 - mov r2, #1 - orr r6, r6, r3, lsr #29 - mov r7, r3, lsl #3 - bl DGT_Hash1SetSource - ldr r0, [r4, #0x10] - mov r1, #0 - and r3, r0, #0x3f - rsb r2, r3, #0x40 - cmp r2, #8 - bhs _020C8D74 - add r0, r4, #0x18 - add r0, r0, r3 - bl MI_CpuFill8 - mov r0, r4 - bl ProcessBlock - mov r3, #0 - mov r2, #0x40 -_020C8D74: - cmp r2, #8 - bls _020C8D90 - add r0, r4, #0x18 - add r0, r0, r3 - sub r2, r2, #8 - mov r1, #0 - bl MI_CpuFill8 -_020C8D90: - str r7, [r4, #0x50] - mov r0, r4 - str r6, [r4, #0x54] - bl ProcessBlock - mov r0, r4 - mov r1, r5 - mov r2, #0x10 - bl MI_CpuCopy8 - mov r0, r4 - mov r1, #0 - mov r2, #0x58 - bl MI_CpuFill8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_020C8DC4: .word Unk_02101170 - arm_func_end DGT_Hash1GetDigest_R - - arm_func_start ProcessBlock -ProcessBlock: ; 0x020C8DC8 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldmia r0, {r2, r3, ip, lr} - add r4, r0, #0x18 - ldr r5, _020C9174 ; =0x02101234 - mov r7, r4 - mov r8, #0 -_020C8DE0: - mvn r1, r3 - and r6, r3, ip - and r1, r1, lr - orr r1, r6, r1 - ldr r6, [r7, #0] - add r1, r2, r1 - ldr r2, [r5, #0] - add r1, r6, r1 - add r2, r2, r1 - mov r1, r2, lsr #0x19 - orr r1, r1, r2, lsl #7 - add r2, r3, r1 - mvn r1, r2 - and r6, r2, r3 - and r1, r1, ip - orr r1, r6, r1 - ldr r6, [r7, #4] - add r1, lr, r1 - ldr sb, [r5, #4] - add r1, r6, r1 - add r6, sb, r1 - mov r1, r6, lsr #0x14 - orr r1, r1, r6, lsl #12 - add lr, r2, r1 - mvn r1, lr - and r6, lr, r2 - and r1, r1, r3 - orr r1, r6, r1 - ldr sb, [r7, #8] - add r6, ip, r1 - ldr r1, [r7, #0xc] - add sb, sb, r6 - ldr sl, [r5, #8] - ldr r6, [r5, #0xc] - add sl, sl, sb - mov sb, sl, lsr #0xf - orr sb, sb, sl, lsl #17 - add ip, lr, sb - add r5, r5, #0x10 - add r7, r7, #0x10 - and sl, ip, lr - mvn sb, ip - and sb, sb, r2 - orr sb, sl, sb - add r3, r3, sb - add r1, r1, r3 - add r3, r6, r1 - mov r1, r3, lsr #0xa - orr r1, r1, r3, lsl #22 - add r3, ip, r1 - add r8, r8, #1 - cmp r8, #4 - blt _020C8DE0 - ldr r1, _020C9178 ; =0x02101174 - mov r6, #0 -_020C8EBC: - mvn r7, lr - ldr sb, [r1] - and r8, r3, lr - and r7, ip, r7 - orr r7, r8, r7 - ldr r8, [r4, sb, lsl #2] - add r2, r2, r7 - ldr r7, [r5, #0] - add r2, r8, r2 - add r7, r7, r2 - mov r2, r7, lsr #0x1b - orr r2, r2, r7, lsl #5 - add r2, r3, r2 - mvn r8, ip - ldr r7, [r1, #4] - and sb, r2, ip - and r8, r3, r8 - orr sl, sb, r8 - mvn r8, r3 - ldr sb, [r1, #8] - ldr fp, [r4, r7, lsl #2] - add r7, lr, sl - add r7, fp, r7 - ldr sl, [r5, #4] - ldr sb, [r4, sb, lsl #2] - add sl, sl, r7 - ldr r7, [r1, #0xc] - and r8, r2, r8 - ldr r7, [r4, r7, lsl #2] - mov fp, sl, lsr #0x17 - orr sl, fp, sl, lsl #9 - add lr, r2, sl - ldr sl, [r5, #8] - and fp, lr, r3 - orr r8, fp, r8 - add r8, ip, r8 - add r8, sb, r8 - add sb, sl, r8 - mov r8, sb, lsr #0x12 - orr r8, r8, sb, lsl #14 - add ip, lr, r8 - mvn r8, r2 - and sb, lr, r8 - ldr r8, [r5, #0xc] - add r5, r5, #0x10 - add r1, r1, #0x10 - and sl, ip, r2 - orr sb, sl, sb - add r3, r3, sb - add r3, r7, r3 - add r7, r8, r3 - mov r3, r7, lsr #0xc - orr r3, r3, r7, lsl #20 - add r3, ip, r3 - add r6, r6, #1 - cmp r6, #4 - blt _020C8EBC - mov r6, #0 -_020C8FA4: - ldr r8, [r1] - eor r7, r3, ip - eor r7, lr, r7 - ldr r8, [r4, r8, lsl #2] - add r2, r2, r7 - ldr r7, [r5, #0] - add r2, r8, r2 - add r7, r7, r2 - mov r2, r7, lsr #0x1c - orr r2, r2, r7, lsl #4 - add r2, r3, r2 - ldr r8, [r1, #4] - eor r7, r2, r3 - eor r7, ip, r7 - ldr r8, [r4, r8, lsl #2] - add r7, lr, r7 - ldr sb, [r1, #8] - ldr sl, [r5, #4] - add r7, r8, r7 - add r8, sl, r7 - mov r7, r8, lsr #0x15 - orr r7, r7, r8, lsl #11 - add lr, r2, r7 - eor r8, lr, r2 - ldr r7, [r1, #0xc] - ldr sb, [r4, sb, lsl #2] - eor r8, r3, r8 - add r8, ip, r8 - add sb, sb, r8 - ldr sl, [r5, #8] - ldr r8, [r4, r7, lsl #2] - add sb, sl, sb - mov r7, sb, lsr #0x10 - orr r7, r7, sb, lsl #16 - add ip, lr, r7 - eor r7, ip, lr - eor r7, r2, r7 - add r3, r3, r7 - add r3, r8, r3 - ldr r7, [r5, #0xc] - add r5, r5, #0x10 - add r7, r7, r3 - add r1, r1, #0x10 - mov r3, r7, lsr #9 - orr r3, r3, r7, lsl #23 - add r3, ip, r3 - add r6, r6, #1 - cmp r6, #4 - blt _020C8FA4 - mov r8, #0 -_020C906C: - mvn r6, lr - ldr r7, [r1, #0] - orr r6, r3, r6 - eor r6, ip, r6 - ldr r7, [r4, r7, lsl #2] - add r2, r2, r6 - ldr r6, [r5, #0] - add r2, r7, r2 - add r6, r6, r2 - mov r2, r6, lsr #0x1a - orr r2, r2, r6, lsl #6 - add r2, r3, r2 - mvn r6, ip - ldr sb, [r1, #4] - orr r6, r2, r6 - eor r7, r3, r6 - ldr r6, [r1, #8] - ldr sb, [r4, sb, lsl #2] - add r7, lr, r7 - ldr sl, [r5, #4] - add r7, sb, r7 - add sb, sl, r7 - mov r7, sb, lsr #0x16 - orr sb, r7, sb, lsl #10 - ldr r7, [r1, #0xc] - add lr, r2, sb - mvn sb, r3 - ldr r6, [r4, r6, lsl #2] - orr sb, lr, sb - eor sb, r2, sb - add sb, ip, sb - add sb, r6, sb - ldr sl, [r5, #8] - ldr r6, [r4, r7, lsl #2] - add sb, sl, sb - mov r7, sb, lsr #0x11 - orr sb, r7, sb, lsl #15 - ldr r7, [r5, #0xc] - add ip, lr, sb - add r5, r5, #0x10 - add r1, r1, #0x10 - mvn sb, r2 - orr sb, ip, sb - eor sb, lr, sb - add r3, r3, sb - add r3, r6, r3 - add r6, r7, r3 - mov r3, r6, lsr #0xb - orr r3, r3, r6, lsl #21 - add r3, ip, r3 - add r8, r8, #1 - cmp r8, #4 - blt _020C906C - ldr r1, [r0, #0] - add r1, r1, r2 - str r1, [r0, #0] - ldr r1, [r0, #4] - add r1, r1, r3 - str r1, [r0, #4] - ldr r1, [r0, #8] - add r1, r1, ip - str r1, [r0, #8] - ldr r1, [r0, #0xc] - add r1, r1, lr - str r1, [r0, #0xc] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_020C9174: .word Unk_02101234 -_020C9178: .word Unk_02101174 - arm_func_end ProcessBlock - - .data - - - .global Unk_02101170 -Unk_02101170: ; 0x02101170 - .word 0x80 - - .global Unk_02101174 -Unk_02101174: ; 0x02101174 - .word 0x1 - .word 0x6 - .word 0xB - .word 0x0 - .word 0x5 - .word 0xA - .word 0xF - .word 0x4 - .word 0x9 - .word 0xE - .word 0x3 - .word 0x8 - .word 0xD - .word 0x2 - .word 0x7 - .word 0xC - .word 0x5 - .word 0x8 - .word 0xB - .word 0xE - .word 0x1 - .word 0x4 - .word 0x7 - .word 0xA - .word 0xD - .word 0x0 - .word 0x3 - .word 0x6 - .word 0x9 - .word 0xC - .word 0xF - .word 0x2 - .word 0x0 - .word 0x7 - .word 0xE - .word 0x5 - .word 0xC - .word 0x3 - .word 0xA - .word 0x1 - .word 0x8 - .word 0xF - .word 0x6 - .word 0xD - .word 0x4 - .word 0xB - .word 0x2 - .word 0x9 - - .global Unk_02101234 -Unk_02101234: ; 0x02101234 - .incbin "incbin/hash1.bin", 0x0, 0x100 - diff --git a/subprojects/NitroSDK/libraries/dgt/asm/hash2.s b/subprojects/NitroSDK/libraries/dgt/asm/hash2.s deleted file mode 100644 index 5801c4f4fd..0000000000 --- a/subprojects/NitroSDK/libraries/dgt/asm/hash2.s +++ /dev/null @@ -1,404 +0,0 @@ - .include "macros/function.inc" - .include "include/hash2.inc" - - - - .text - - - arm_func_start DGT_Hash2Reset -DGT_Hash2Reset: ; 0x020C917C - ldr r1, _020C91B8 ; =0x67452301 - ldr r2, _020C91BC ; =0xEFCDAB89 - str r1, [r0, #0] - ldr r1, _020C91C0 ; =0x98BADCFE - str r2, [r0, #4] - ldr r2, _020C91C4 ; =0x10325476 - str r1, [r0, #8] - ldr r1, _020C91C8 ; =0xC3D2E1F0 - str r2, [r0, #0xc] - str r1, [r0, #0x10] - mov r1, #0 - str r1, [r0, #0x14] - str r1, [r0, #0x18] - str r1, [r0, #0x1c] - bx lr - ; .align 2, 0 -_020C91B8: .word 0x67452301 -_020C91BC: .word 0xEFCDAB89 -_020C91C0: .word 0x98BADCFE -_020C91C4: .word 0x10325476 -_020C91C8: .word 0xC3D2E1F0 - arm_func_end DGT_Hash2Reset - - arm_func_start DGT_Hash2SetSource -DGT_Hash2SetSource: ; 0x020C91CC - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - movs r8, r2 - mov sb, r1 - add r6, sl, #0x20 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [sl, #0x14] - add r1, r0, r8, lsl #3 - cmp r1, r0 - ldrlo r0, [sl, #0x18] - addlo r0, r0, #1 - strlo r0, [sl, #0x18] - ldr r0, [sl, #0x18] - add r0, r0, r8, lsr #29 - str r0, [sl, #0x18] - str r1, [sl, #0x14] - ldr r1, [sl, #0x1c] - cmp r1, #0 - beq _020C9284 - add r0, r1, r8 - cmp r0, #0x40 - blo _020C9264 - rsb r4, r1, #0x40 - mov r0, sb - mov r2, r4 - add r1, r6, r1 - bl MI_CpuCopy8 - ldr r1, _020C931C ; =0x02101338 - mov r0, sl - ldr r3, [r1, #0] - mov r1, r6 - mov r2, #0x40 - sub r8, r8, r4 - add sb, sb, r4 - blx r3 - mov r0, #0 - str r0, [sl, #0x1c] - b _020C9284 -_020C9264: - mov r0, sb - mov r2, r8 - add r1, r6, r1 - bl MI_CpuCopy8 - ldr r0, [sl, #0x1c] - add r0, r0, r8 - str r0, [sl, #0x1c] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_020C9284: - cmp r8, #0x40 - blo _020C92FC - bic r7, r8, #0x3f - tst sb, #3 - sub r8, r8, r7 - bne _020C92BC - ldr r1, _020C931C ; =0x02101338 - mov r0, sl - ldr r3, [r1, #0] - mov r1, sb - mov r2, r7 - blx r3 - add sb, sb, r7 - b _020C92FC -_020C92BC: - mov r5, #0x40 - ldr r4, _020C931C ; =0x02101338 - mov fp, r5 -_020C92C8: - mov r0, sb - mov r1, r6 - mov r2, r5 - bl MI_CpuCopy8 - ldr r3, [r4, #0] - mov r0, sl - mov r1, r6 - add sb, sb, #0x40 - mov r2, fp - blx r3 - sub r7, r7, #0x40 - cmp r7, #0 - bgt _020C92C8 -_020C92FC: - str r8, [sl, #0x1c] - cmp r8, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, sb - mov r1, r6 - mov r2, r8 - bl MI_CpuCopy8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_020C931C: .word Unk_02101338 - arm_func_end DGT_Hash2SetSource - - arm_func_start DGT_Hash2GetDigest -DGT_Hash2GetDigest: ; 0x020C9320 - stmfd sp!, {r0, r1, r2, r3} - stmfd sp!, {r4, r5, r6, lr} - ldr r0, [sp, #0x10] - mov r6, r1 - ldr r3, [r0, #0x1c] - add r4, r0, #0x20 - tst r3, #3 - mov r2, r3, asr #2 - moveq r0, #0 - streq r0, [r4, r2, lsl #2] - ldr r1, [sp, #0x10] - mov r0, #0x80 - add r5, r1, #0x20 - strb r0, [r5, r3] - add r3, r3, #1 - tst r3, #3 - beq _020C9378 - mov r0, #0 -_020C9368: - strb r0, [r5, r3] - add r3, r3, #1 - tst r3, #3 - bne _020C9368 -_020C9378: - ldr r0, [sp, #0x10] - add r2, r2, #1 - ldr r0, [r0, #0x1c] - cmp r0, #0x38 - blt _020C93C4 - cmp r2, #0x10 - bge _020C93A8 - mov r0, #0 -_020C9398: - str r0, [r4, r2, lsl #2] - add r2, r2, #1 - cmp r2, #0x10 - blt _020C9398 -_020C93A8: - ldr r1, _020C9518 ; =0x02101338 - ldr r0, [sp, #0x10] - ldr r3, [r1, #0] - mov r1, r4 - mov r2, #0x40 - blx r3 - mov r2, #0 -_020C93C4: - cmp r2, #0xe - bge _020C93E0 - mov r0, #0 -_020C93D0: - str r0, [r4, r2, lsl #2] - add r2, r2, #1 - cmp r2, #0xe - blt _020C93D0 -_020C93E0: - ldr r0, [sp, #0x10] - ldr r3, _020C9518 ; =0x02101338 - ldr r2, [r0, #0x14] - mov r1, r4 - strb r2, [r5, #0x3f] - mov r0, r2, lsr #8 - strb r0, [r5, #0x3e] - mov r0, r2, lsr #0x10 - strb r0, [r5, #0x3d] - mov r0, r2, lsr #0x18 - strb r0, [r5, #0x3c] - ldr r0, [sp, #0x10] - mov r2, #0x40 - ldr r4, [r0, #0x18] - strb r4, [r5, #0x3b] - mov r0, r4, lsr #8 - strb r0, [r5, #0x3a] - mov r0, r4, lsr #0x10 - strb r0, [r5, #0x39] - mov r0, r4, lsr #0x18 - strb r0, [r5, #0x38] - ldr r0, [sp, #0x10] - ldr r3, [r3, #0] - blx r3 - ldr r0, [sp, #0x10] - ldr r1, [r0, #0] - mov r0, r1, lsr #0x18 - strb r0, [r6] - mov r0, r1, lsr #0x10 - strb r0, [r6, #1] - mov r0, r1, lsr #8 - strb r0, [r6, #2] - strb r1, [r6, #3] - ldr r0, [sp, #0x10] - ldr r1, [r0, #4] - mov r0, r1, lsr #0x18 - strb r0, [r6, #4] - mov r0, r1, lsr #0x10 - strb r0, [r6, #5] - mov r0, r1, lsr #8 - strb r0, [r6, #6] - strb r1, [r6, #7] - ldr r0, [sp, #0x10] - ldr r1, [r0, #8] - mov r0, r1, lsr #0x18 - strb r0, [r6, #8] - mov r0, r1, lsr #0x10 - strb r0, [r6, #9] - mov r0, r1, lsr #8 - strb r0, [r6, #0xa] - strb r1, [r6, #0xb] - ldr r0, [sp, #0x10] - ldr r1, [r0, #0xc] - mov r0, r1, lsr #0x18 - strb r0, [r6, #0xc] - mov r0, r1, lsr #0x10 - strb r0, [r6, #0xd] - mov r0, r1, lsr #8 - strb r0, [r6, #0xe] - strb r1, [r6, #0xf] - ldr r0, [sp, #0x10] - ldr r1, [r0, #0x10] - mov r0, r1, lsr #0x18 - strb r0, [r6, #0x10] - mov r0, r1, lsr #0x10 - strb r0, [r6, #0x11] - mov r0, r1, lsr #8 - strb r0, [r6, #0x12] - strb r1, [r6, #0x13] - ldr r3, [sp, #0x10] - mov r0, #0 - add r1, sp, #0x10 - mov r2, #4 - str r0, [r3, #0x1c] - bl MIi_CpuClear32 - ldmia sp!, {r4, r5, r6, lr} - add sp, sp, #0x10 - bx lr - ; .align 2, 0 -_020C9518: .word Unk_02101338 - arm_func_end DGT_Hash2GetDigest - - arm_func_start DGT_Hash2CalcHmac -DGT_Hash2CalcHmac: ; 0x020C951C - stmfd sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0xa0 - ldr lr, _020C95A0 ; =0x020FE4E8 - add ip, sp, #8 - mov r8, r0 - mov r7, r1 - mov r6, r2 - mov r5, r3 - mov r4, ip - ldmia lr!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - ldmia lr, {r0, r1, r2} - stmia ip, {r0, r1, r2} - add lr, sp, #0x38 - add ip, sp, #0x24 - str lr, [sp, #0x10] - ldr lr, _020C95A4 ; =DGT_Hash2Reset - str ip, [sp, #0x14] - ldr ip, _020C95A8 ; =DGT_Hash2SetSource - str lr, [sp, #0x18] - ldr lr, _020C95AC ; =DGT_Hash2GetDigest - str ip, [sp, #0x1c] - ldr ip, [sp, #0xb8] - str lr, [sp, #0x20] - str ip, [sp] - mov r3, r5 - mov r0, r8 - mov r1, r7 - mov r2, r6 - str r4, [sp, #4] - bl HmacCalc - add sp, sp, #0xa0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_020C95A0: .word Unk_020FE4E8 -_020C95A4: .word DGT_Hash2Reset -_020C95A8: .word DGT_Hash2SetSource -_020C95AC: .word DGT_Hash2GetDigest - arm_func_end DGT_Hash2CalcHmac - - .rodata - - - .global Unk_020FE4E8 -Unk_020FE4E8: ; 0x020FE4E8 - .word 0x14 - .word 0x40 - .word 0x0 - .word 0x0 - .word 0x0 - .word 0x0 - .word 0x0 - - .global Unk_020FE504 -Unk_020FE504: ; 0x020FE504 - .word 0x14 - .word 0x40 - .word 0x0 - .word 0x0 - .word 0x0 - .word 0x0 - .word 0x0 - - .global Unk_020FE520 -Unk_020FE520: ; 0x020FE520 - .word 0x14 - .word 0x40 - .word 0x0 - .word 0x0 - .word 0x0 - .word 0x0 - .word 0x0 - - - - .data - - - .global Unk_02101334 -Unk_02101334: ; 0x02101334 - .word 0x61 - - .global Unk_02101338 -Unk_02101338: ; 0x02101338 - .word DGTi_hash2_arm4_small - - .global Unk_0210133C -Unk_0210133C: ; 0x0210133C - .word Unk_021013A0 - .word Unk_021013B8 - .word Unk_02101370 - .word Unk_02101388 - - .global Unk_0210134C -Unk_0210134C: ; 0x0210134C - .word Unk_0210136C - .word Unk_021013D0 - .word Unk_02101334 - .word Unk_0210140C - - .global Unk_0210135C -Unk_0210135C: ; 0x0210135C - .word 0x1 - .word 0x1 - .word 0xF4240 - .word 0xA - - .global Unk_0210136C -Unk_0210136C: ; 0x0210136C - .incbin "incbin/hash2.bin", 0x0, 0x4 - - .global Unk_02101370 -Unk_02101370: ; 0x02101370 - .incbin "incbin/hash2.bin", 0x4, 0x1C - 0x4 - - .global Unk_02101388 -Unk_02101388: ; 0x02101388 - .incbin "incbin/hash2.bin", 0x1C, 0x34 - 0x1C - - .global Unk_021013A0 -Unk_021013A0: ; 0x021013A0 - .incbin "incbin/hash2.bin", 0x34, 0x4C - 0x34 - - .global Unk_021013B8 -Unk_021013B8: ; 0x021013B8 - .incbin "incbin/hash2.bin", 0x4C, 0x64 - 0x4C - - .global Unk_021013D0 -Unk_021013D0: ; 0x021013D0 - .incbin "incbin/hash2.bin", 0x64, 0xA0 - 0x64 - - .global Unk_0210140C -Unk_0210140C: ; 0x0210140C - .incbin "incbin/hash2.bin", 0xA0, 0x41 - diff --git a/subprojects/NitroSDK/libraries/dgt/asm/hmac.s b/subprojects/NitroSDK/libraries/dgt/asm/hmac.s deleted file mode 100644 index ff71b64a59..0000000000 --- a/subprojects/NitroSDK/libraries/dgt/asm/hmac.s +++ /dev/null @@ -1,130 +0,0 @@ - .include "macros/function.inc" - - - - .text - - - arm_func_start HmacCalc -HmacCalc: ; 0x020C95B0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0xc0 - ldr r5, [sp, #0xe0] - ldr r4, [sp, #0xe4] - mov r8, r1 - movs sb, r0 - mov r7, r2 - cmpne r8, #0 - mov r6, r3 - cmpne r7, #0 - cmpne r6, #0 - cmpne r5, #0 - cmpne r4, #0 - addeq sp, sp, #0xc0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldr r0, [r4, #4] - cmp r5, r0 - ble _020C9630 - ldr r0, [r4, #8] - ldr r1, [r4, #0x10] - blx r1 - ldr r0, [r4, #8] - ldr r3, [r4, #0x14] - mov r1, r6 - mov r2, r5 - blx r3 - ldr r0, [r4, #8] - ldr r2, [r4, #0x18] - add r1, sp, #0x80 - blx r2 - ldr r5, [r4, #0] - add r6, sp, #0x80 -_020C9630: - cmp r5, #0 - mov r2, #0 - ble _020C9658 - add r1, sp, #0x40 -_020C9640: - ldrb r0, [r6, r2] - add r2, r2, #1 - cmp r2, r5 - eor r0, r0, #0x36 - strb r0, [r1], #1 - blt _020C9640 -_020C9658: - ldr r0, [r4, #4] - cmp r2, r0 - bge _020C9684 - add r0, sp, #0x40 - add r3, r0, r2 - mov r1, #0x36 -_020C9670: - strb r1, [r3], #1 - ldr r0, [r4, #4] - add r2, r2, #1 - cmp r2, r0 - blt _020C9670 -_020C9684: - ldr r0, [r4, #8] - ldr r1, [r4, #0x10] - blx r1 - ldr r0, [r4, #8] - ldr r2, [r4, #4] - ldr r3, [r4, #0x14] - add r1, sp, #0x40 - blx r3 - ldr r0, [r4, #8] - ldr r3, [r4, #0x14] - mov r1, r8 - mov r2, r7 - blx r3 - ldr r0, [r4, #8] - ldr r1, [r4, #0xc] - ldr r2, [r4, #0x18] - blx r2 - cmp r5, #0 - mov r3, #0 - ble _020C96F0 - add r1, sp, #0 -_020C96D8: - ldrb r0, [r6, r3] - add r3, r3, #1 - cmp r3, r5 - eor r0, r0, #0x5c - strb r0, [r1], #1 - blt _020C96D8 -_020C96F0: - ldr r0, [r4, #4] - cmp r3, r0 - bge _020C971C - add r0, sp, #0 - add r2, r0, r3 - mov r1, #0x5c -_020C9708: - strb r1, [r2], #1 - ldr r0, [r4, #4] - add r3, r3, #1 - cmp r3, r0 - blt _020C9708 -_020C971C: - ldr r0, [r4, #8] - ldr r1, [r4, #0x10] - blx r1 - ldr r0, [r4, #8] - ldr r2, [r4, #4] - ldr r3, [r4, #0x14] - add r1, sp, #0 - blx r3 - ldr r0, [r4, #8] - ldr r1, [r4, #0xc] - ldr r2, [r4, #0] - ldr r3, [r4, #0x14] - blx r3 - ldr r0, [r4, #8] - ldr r2, [r4, #0x18] - mov r1, sb - blx r2 - add sp, sp, #0xc0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ; .align 2, 0 - arm_func_end HmacCalc \ No newline at end of file diff --git a/subprojects/NitroSDK/libraries/dgt/asm/incbin/hash1.bin b/subprojects/NitroSDK/libraries/dgt/asm/incbin/hash1.bin deleted file mode 100644 index 6c11c85124..0000000000 Binary files a/subprojects/NitroSDK/libraries/dgt/asm/incbin/hash1.bin and /dev/null differ diff --git a/subprojects/NitroSDK/libraries/dgt/asm/incbin/hash2.bin b/subprojects/NitroSDK/libraries/dgt/asm/incbin/hash2.bin deleted file mode 100644 index f6f27ffc91..0000000000 Binary files a/subprojects/NitroSDK/libraries/dgt/asm/incbin/hash2.bin and /dev/null differ diff --git a/subprojects/NitroSDK/libraries/dgt/asm/include/hash1.inc b/subprojects/NitroSDK/libraries/dgt/asm/include/hash1.inc deleted file mode 100644 index e68989259b..0000000000 --- a/subprojects/NitroSDK/libraries/dgt/asm/include/hash1.inc +++ /dev/null @@ -1,4 +0,0 @@ -.public MI_CpuFill8 -.public MI_CpuCopy8 -.public DGT_Hash1SetSource -.public ProcessBlock diff --git a/subprojects/NitroSDK/libraries/dgt/asm/include/hash2.inc b/subprojects/NitroSDK/libraries/dgt/asm/include/hash2.inc deleted file mode 100644 index cfc49466f4..0000000000 --- a/subprojects/NitroSDK/libraries/dgt/asm/include/hash2.inc +++ /dev/null @@ -1,7 +0,0 @@ -.public MIi_CpuClear32 -.public MI_CpuCopy8 -.public DGT_Hash2Reset -.public DGT_Hash2SetSource -.public DGT_Hash2GetDigest -.public DGTi_hash2_arm4_small -.public HmacCalc diff --git a/subprojects/NitroSDK/libraries/dgt/asm/macros/function.inc b/subprojects/NitroSDK/libraries/dgt/asm/macros/function.inc deleted file mode 100644 index f71cc4ccae..0000000000 --- a/subprojects/NitroSDK/libraries/dgt/asm/macros/function.inc +++ /dev/null @@ -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 \ No newline at end of file diff --git a/subprojects/NitroSDK/libraries/dgt/asm/sha1s-arm4cw.s b/subprojects/NitroSDK/libraries/dgt/asm/sha1s-arm4cw.s deleted file mode 100644 index b1862727d7..0000000000 --- a/subprojects/NitroSDK/libraries/dgt/asm/sha1s-arm4cw.s +++ /dev/null @@ -1,180 +0,0 @@ - .include "macros/function.inc" - - - .text - -_020C9768: .word 0x00FF00FF -_020C976C: .word 0x5A827999 -_020C9770: .word 0x6ED9EBA1 -_020C9774: .word 0x8F1BBCDC -_020C9778: .word 0xCA62C1D6 - - arm_func_start DGTi_hash2_arm4_small -DGTi_hash2_arm4_small: ; 0x020C977C - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, ip, lr} - ldmia r0, {r3, sb, sl, fp, ip} - sub sp, sp, #0x84 - str r2, [sp, #0x80] -_020C978C: - ldr r8, _020C976C ; =0x5A827999 - ldr r7, _020C9768 ; =0x00FF00FF - mov r6, sp - mov r5, #0 -_020C979C: - ldr r4, [r1, #0], #4 - add r2, r8, ip - add r2, r2, r3, ror #27 - and lr, r4, r7 - and r4, r7, r4, ror #24 - orr r4, r4, lr, ror #8 - str r4, [r6, #0x40] - str r4, [r6, #0], #4 - add r2, r2, r4 - eor r4, sl, fp - and r4, r4, sb - eor r4, r4, fp - add r2, r2, r4 - mov sb, sb, ror #2 - mov ip, fp - mov fp, sl - mov sl, sb - mov sb, r3 - mov r3, r2 - add r5, r5, #4 - cmp r5, #0x40 - blt _020C979C - mov r7, #0 - mov r6, sp -_020C97FC: - ldr r2, [r6, #0] - ldr r5, [r6, #8] - ldr r4, [r6, #0x20] - ldr lr, [r6, #0x34] - eor r2, r2, r5 - eor r4, r4, lr - eor r2, r2, r4 - mov r2, r2, ror #0x1f - str r2, [r6, #0x40] - str r2, [r6, #0], #4 - add r2, r2, ip - add r2, r2, r8 - add r2, r2, r3, ror #27 - eor r4, sl, fp - and r4, r4, sb - eor r4, r4, fp - add r2, r2, r4 - mov sb, sb, ror #2 - mov ip, fp - mov fp, sl - mov sl, sb - mov sb, r3 - mov r3, r2 - add r7, r7, #4 - cmp r7, #0x10 - blt _020C97FC - ldr r8, _020C9770 ; =0x6ED9EBA1 - mov r7, #0 -_020C986C: - ldr r2, [r6, #0] - ldr r4, [r6, #8] - ldr lr, [r6, #0x20] - ldr r5, [r6, #0x34] - eor r2, r2, r4 - eor lr, lr, r5 - eor r2, r2, lr - mov r2, r2, ror #0x1f - str r2, [r6, #0x40] - str r2, [r6, #0], #4 - add r2, r2, ip - add r2, r2, r8 - add r2, r2, r3, ror #27 - eor lr, sb, sl - eor lr, lr, fp - add r2, r2, lr - mov sb, sb, ror #2 - mov ip, fp - mov fp, sl - mov sl, sb - mov sb, r3 - mov r3, r2 - add r7, r7, #1 - cmp r7, #0xc - moveq r6, sp - cmp r7, #0x14 - blt _020C986C - ldr r8, _020C9774 ; =0x8F1BBCDC - mov r7, #0 -_020C98E0: - ldr r2, [r6, #0] - ldr lr, [r6, #8] - ldr r5, [r6, #0x20] - ldr r4, [r6, #0x34] - eor r2, r2, lr - eor r5, r5, r4 - eor r2, r2, r5 - mov r2, r2, ror #0x1f - str r2, [r6, #0x40] - str r2, [r6, #0], #4 - add r2, r2, ip - add r2, r2, r8 - add r2, r2, r3, ror #27 - orr r5, sb, sl - and r5, r5, fp - and r4, sb, sl - orr r5, r5, r4 - add r2, r2, r5 - mov sb, sb, ror #2 - mov ip, fp - mov fp, sl - mov sl, sb - mov sb, r3 - mov r3, r2 - add r7, r7, #1 - cmp r7, #8 - moveq r6, sp - cmp r7, #0x14 - blt _020C98E0 - ldr r8, _020C9778 ; =0xCA62C1D6 - mov r7, #0 -_020C995C: - ldr r2, [r6, #0] - ldr r5, [r6, #8] - ldr r4, [r6, #0x20] - ldr lr, [r6, #0x34] - eor r2, r2, r5 - eor r4, r4, lr - eor r2, r2, r4 - mov r2, r2, ror #0x1f - str r2, [r6, #0x40] - str r2, [r6, #0], #4 - add r2, r2, ip - add r2, r2, r8 - add r2, r2, r3, ror #27 - eor r4, sb, sl - eor r4, r4, fp - add r2, r2, r4 - mov sb, sb, ror #2 - mov ip, fp - mov fp, sl - mov sl, sb - mov sb, r3 - mov r3, r2 - add r7, r7, #1 - cmp r7, #4 - moveq r6, sp - cmp r7, #0x14 - blt _020C995C - ldmia r0, {r2, r4, r6, r7, lr} - add r3, r3, r2 - add sb, sb, r4 - add sl, sl, r6 - add fp, fp, r7 - add ip, ip, lr - stmia r0, {r3, sb, sl, fp, ip} - ldr lr, [sp, #0x80] - subs lr, lr, #0x40 - str lr, [sp, #0x80] - bgt _020C978C - add sp, sp, #0x84 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, ip, pc} - arm_func_end DGTi_hash2_arm4_small \ No newline at end of file diff --git a/subprojects/NitroSDK/libraries/dgt/meson.build b/subprojects/NitroSDK/libraries/dgt/meson.build deleted file mode 100644 index f1df5904f0..0000000000 --- a/subprojects/NitroSDK/libraries/dgt/meson.build +++ /dev/null @@ -1,16 +0,0 @@ -libdgt_srcs = files( - 'asm/hash1.s', - 'asm/hash2.s', - 'asm/hmac.s', - 'asm/sha1s-arm4cw.s' -) - -libdgt = static_library('dgt', - sources: libdgt_srcs, - c_args: [c_args, sdk_args], - nasm_args: asm_args, - include_directories: public_includes, - pic: false -) - -nitrosdk_libs += libdgt diff --git a/subprojects/NitroSDK/libraries/fs/meson.build b/subprojects/NitroSDK/libraries/fs/meson.build deleted file mode 100644 index aff6bf3d5f..0000000000 --- a/subprojects/NitroSDK/libraries/fs/meson.build +++ /dev/null @@ -1,20 +0,0 @@ -libfs_srcs = files( - 'src/fs_command.c', - 'src/fs_command_default.c', - 'src/fs_archive.c', - 'src/fs_file.c', - 'src/fs_rom.c', - 'src/fs_overlay.c' -) - -libfs_internal_includes = include_directories('src/include') - -libfs = static_library('fs', - sources: [libfs_srcs, fx_const_h], - c_args: [c_args, sdk_args], - include_directories: [public_includes, libfs_internal_includes], - c_pch: nitro_pch, - pic: false -) - -nitrosdk_libs += libfs diff --git a/subprojects/NitroSDK/libraries/fs/src/fs_archive.c b/subprojects/NitroSDK/libraries/fs/src/fs_archive.c deleted file mode 100644 index 6bd542ab53..0000000000 --- a/subprojects/NitroSDK/libraries/fs/src/fs_archive.c +++ /dev/null @@ -1,502 +0,0 @@ - -#include -#include -#include - -#include "include/util.h" -#include "include/command.h" - -#if defined(FS_IMPLEMENT) - -static FSArchive * arc_list = NULL; - -FSDirPos current_dir_pos; - -static u32 FSi_GetPackedName (const char * name, int name_len) { - u32 ret = 0; - if (name_len <= FS_ARCHIVE_NAME_LEN_MAX) { - int i = 0; - for (; i < name_len; ++i) { - u32 c = (u32)MI_ReadByte(name + i); - if (!c) { - break; - } - c = (u32)(c - 'A'); - if (c <= (u32)('Z' - 'A')) { - c = (u32)(c + 'a'); - } else { - c = (u32)(c + 'A'); - } - ret |= (u32)(c << (i * 8)); - } - } - return ret; -} - -static FSResult FSi_ReadMemCallback (FSArchive * p_arc, void * dst, u32 pos, u32 size) { - MI_CpuCopy8((const void *)FS_GetArchiveOffset(p_arc, pos), dst, size); - return FS_RESULT_SUCCESS; -} - -static FSResult FSi_WriteMemCallback (FSArchive * p_arc, const void * src, u32 pos, u32 size) { - MI_CpuCopy8(src, (void *)FS_GetArchiveOffset(p_arc, pos), size); - return FS_RESULT_SUCCESS; -} - -static FSResult FSi_ReadMemoryCore (FSArchive * p_arc, void * dst, u32 pos, u32 size) { - (void)p_arc; - MI_CpuCopy8((const void *)pos, dst, size); - return FS_RESULT_SUCCESS; -} - -FSFile * FSi_NextCommand (FSArchive * p_arc) { - OSIntrMode bak_psr = OS_DisableInterrupts(); - - if (FSi_IsArchiveCanceling(p_arc)) { - FSFile * p, * q; - p_arc->flag &= ~FS_ARCHIVE_FLAG_CANCELING; - for (p = p_arc->list.next; p; p = q) { - q = p->link.next; - if (FS_IsCanceling(p)) { - if (p_arc->list.next == p) { - p_arc->list.next = q; - } - FSi_ReleaseCommand(p, FS_RESULT_CANCELED); - if (!q) { - q = p_arc->list.next; - } - } - } - } - - if (!FSi_IsArchiveSuspending(p_arc) && !FS_IsArchiveSuspended(p_arc) && p_arc->list.next) { - FSFile * p_file = p_arc->list.next; - const BOOL is_start = !FSi_IsArchiveRunning(p_arc); - if (is_start) { - p_arc->flag |= FS_ARCHIVE_FLAG_RUNNING; - } - (void)OS_RestoreInterrupts(bak_psr); - if (is_start) { - if ((p_arc->proc_flag & FS_ARCHIVE_PROC_ACTIVATE) != 0) { - (void)(*p_arc->proc) (p_file, FS_COMMAND_ACTIVATE); - } - } - bak_psr = OS_DisableInterrupts(); - p_file->stat |= FS_FILE_STATUS_OPERATING; - - if (FS_IsFileSyncMode(p_file)) { - OS_WakeupThread(p_file->queue); - (void)OS_RestoreInterrupts(bak_psr); - return NULL; - } else { - (void)OS_RestoreInterrupts(bak_psr); - return p_file; - } - } - - if (FSi_IsArchiveRunning(p_arc)) { - p_arc->flag &= ~FS_ARCHIVE_FLAG_RUNNING; - if ((p_arc->proc_flag & FS_ARCHIVE_PROC_IDLE) != 0) { - FSFile tmp; - FS_InitFile(&tmp); - tmp.arc = p_arc; - - (void)(*p_arc->proc) (&tmp, FS_COMMAND_IDLE); - } - } - - if (FSi_IsArchiveSuspending(p_arc)) { - p_arc->flag &= ~FS_ARCHIVE_FLAG_SUSPENDING; - p_arc->flag |= FS_ARCHIVE_FLAG_SUSPEND; - OS_WakeupThread(&p_arc->stat_q); - } - (void)OS_RestoreInterrupts(bak_psr); - - return NULL; -} - -void FSi_ExecuteAsyncCommand (FSFile * p_file) { - FSArchive * const p_arc = p_file->arc; - while (p_file) { - OSIntrMode bak_psr = OS_DisableInterrupts(); - - p_file->stat |= FS_FILE_STATUS_OPERATING; - if (FS_IsFileSyncMode(p_file)) { - OS_WakeupThread(p_file->queue); - (void)OS_RestoreInterrupts(bak_psr); - break; - } else { - p_file->stat |= FS_FILE_STATUS_ASYNC; - } - (void)OS_RestoreInterrupts(bak_psr); - - if (FSi_TranslateCommand(p_file, p_file->command) == FS_RESULT_PROC_ASYNC) { - break; - } - - p_file = FSi_NextCommand(p_arc); - } -} - -BOOL FSi_ExecuteSyncCommand (FSFile * p_file) { - FSFile * p_target; - FSResult ret = FSi_TranslateCommand(p_file, p_file->command); - FSi_ReleaseCommand(p_file, ret); - p_target = FSi_NextCommand(p_file->arc); - if (p_target) { - FSi_ExecuteAsyncCommand(p_target); - } - return FS_IsSucceeded(p_file); -} - -BOOL FSi_SendCommand (FSFile * p_file, FSCommandType command) { - FSArchive * const p_arc = p_file->arc; - const int bit = (1 << command); - - p_file->command = command; - p_file->error = FS_RESULT_BUSY; - p_file->stat |= FS_FILE_STATUS_BUSY; - - { - OSIntrMode bak_psr = OS_DisableInterrupts(); - - if (p_arc->flag & FS_ARCHIVE_FLAG_UNLOADING) { - FSi_ReleaseCommand(p_file, FS_RESULT_CANCELED); - (void)OS_RestoreInterrupts(bak_psr); - return FALSE; - } - - if ((bit & FS_ARCHIVE_PROC_SYNC) != 0) { - p_file->stat |= FS_FILE_STATUS_SYNC; - } - FSi_AppendToList(p_file, (FSFile *)&p_arc->list); - - if (!FS_IsArchiveSuspended(p_arc) && !FSi_IsArchiveRunning(p_arc)) { - p_arc->flag |= FS_ARCHIVE_FLAG_RUNNING; - (void)OS_RestoreInterrupts(bak_psr); - - if ((p_arc->proc_flag & FS_ARCHIVE_PROC_ACTIVATE) != 0) { - (void)(*p_arc->proc) (p_file, FS_COMMAND_ACTIVATE); - } - - bak_psr = OS_DisableInterrupts(); - p_file->stat |= FS_FILE_STATUS_OPERATING; - if (!FS_IsFileSyncMode(p_file)) { - (void)OS_RestoreInterrupts(bak_psr); - FSi_ExecuteAsyncCommand(p_file); - return TRUE; - } - (void)OS_RestoreInterrupts(bak_psr); - } else if (!FS_IsFileSyncMode(p_file)) { - (void)OS_RestoreInterrupts(bak_psr); - return TRUE; - } else { - do{ - OS_SleepThread(p_file->queue); - }while (!(p_file->stat & FS_FILE_STATUS_OPERATING)); - (void)OS_RestoreInterrupts(bak_psr); - } - } - - return FSi_ExecuteSyncCommand(p_file); -} - -void FSi_EndArchive (void) { - OSIntrMode bak_psr = OS_DisableInterrupts(); - FSArchive * volatile * p_list = &arc_list; - for (;;) { - FSArchive * p_arc = arc_list; - if (!p_arc) { - break; - } - arc_list = arc_list->next; - (void)FS_UnloadArchive(p_arc); - FS_ReleaseArchiveName(p_arc); - } - (void)OS_RestoreInterrupts(bak_psr); -} - -void FS_InitArchive (FSArchive * p_arc) { - FS_ASSERT_ARG(p_arc, FALSE); - MI_CpuClear8(p_arc, sizeof(FSArchive)); -#if !defined(SDK_NO_THREAD) - OS_InitThreadQueue(&p_arc->sync_q); - OS_InitThreadQueue(&p_arc->stat_q); -#endif -} - -FSArchive * FS_FindArchive (const char * name, int name_len) { - u32 pack = FSi_GetPackedName(name, name_len); - OSIntrMode bak_psr = OS_DisableInterrupts(); - FSArchive * p_arc = arc_list; - while (p_arc && (p_arc->name.pack != pack)) { - p_arc = p_arc->next; - } - (void)OS_RestoreInterrupts(bak_psr); - - return p_arc; -} - -BOOL FS_RegisterArchiveName (FSArchive * p_arc, const char * name, u32 name_len) { - FS_ASSERT_INIT(FALSE); - FS_ASSERT_ARG(p_arc && name, FALSE); - FS_ASSERT_ARC_FREE(p_arc, FALSE); - - { - BOOL ret = FALSE; - OSIntrMode bak_intr = OS_DisableInterrupts(); - if (!FS_FindArchive(name, (s32)name_len)) { - FSArchive * p_tail = arc_list; - if (!p_tail) { - arc_list = p_arc; - current_dir_pos.arc = p_arc; - current_dir_pos.pos = 0; - current_dir_pos.index = 0; - current_dir_pos.own_id = 0; - } else { - while (p_tail->next) { - p_tail = p_tail->next; - } - p_tail->next = p_arc; - p_arc->prev = p_tail; - } - p_arc->name.pack = FSi_GetPackedName(name, (s32)name_len); - p_arc->flag |= FS_ARCHIVE_FLAG_REGISTER; - ret = TRUE; - } - (void)OS_RestoreInterrupts(bak_intr); - return ret; - } -} - -void FS_ReleaseArchiveName (FSArchive * p_arc) { - FS_ASSERT_INIT(void); - FS_ASSERT_ARG(p_arc, void); - FS_ASSERT_ARC_NOT_ROM(p_arc, void); - if (p_arc->name.pack) { - OSIntrMode bak_psr = OS_DisableInterrupts(); - - if (p_arc->next) { - p_arc->next->prev = p_arc->prev; - } - if (p_arc->prev) { - p_arc->prev->next = p_arc->next; - } - p_arc->name.pack = 0; - p_arc->next = p_arc->prev = NULL; - p_arc->flag &= ~FS_ARCHIVE_FLAG_REGISTER; - - if (current_dir_pos.arc == p_arc) { - current_dir_pos.arc = arc_list; - current_dir_pos.pos = 0; - current_dir_pos.index = 0; - current_dir_pos.own_id = 0; - } - (void)OS_RestoreInterrupts(bak_psr); - } -} - -BOOL FS_LoadArchive (FSArchive * p_arc, u32 base, u32 fat, u32 fat_size, u32 fnt, u32 fnt_size, FS_ARCHIVE_READ_FUNC read_func, FS_ARCHIVE_WRITE_FUNC write_func) { - FS_ASSERT_INIT(FALSE); - FS_ASSERT_ARG(p_arc, FALSE); - FS_ASSERT_ARC_UNLOADED(p_arc, FALSE); - - p_arc->base = base; - p_arc->fat_size = fat_size; - p_arc->fat = p_arc->fat_bak = fat; - p_arc->fnt_size = fnt_size; - p_arc->fnt = p_arc->fnt_bak = fnt; - - p_arc->read_func = read_func ? read_func : FSi_ReadMemCallback; - p_arc->write_func = write_func ? write_func : FSi_WriteMemCallback; - - p_arc->table_func = p_arc->read_func; - p_arc->load_mem = NULL; - - p_arc->flag |= FS_ARCHIVE_FLAG_LOADED; - return TRUE; -} - -BOOL FS_UnloadArchive (FSArchive * p_arc) { - FS_ASSERT_INIT(FALSE); - FS_ASSERT_ARG(p_arc, FALSE); - - { - OSIntrMode bak_psr = OS_DisableInterrupts(); - - if (FS_IsArchiveLoaded(p_arc)) { - if (FS_IsArchiveTableLoaded(p_arc)) { - OS_TWarning( - "memory may leak. preloaded-table of archive \"%s\" (0x%08X)", - p_arc->name.ptr, p_arc->load_mem - ); - } - { - FSFile * p, * q; - - BOOL bak_state = FS_SuspendArchive(p_arc); - - p_arc->flag |= FS_ARCHIVE_FLAG_UNLOADING; - for (p = p_arc->list.next; p; p = q) { - q = p->link.next; - FSi_ReleaseCommand(p, FS_RESULT_CANCELED); - } - p_arc->list.next = NULL; - - if (bak_state) { - (void)FS_ResumeArchive(p_arc); - } - } - - p_arc->base = 0; - p_arc->fat = 0; - p_arc->fat_size = 0; - p_arc->fnt = 0; - p_arc->fnt_size = 0; - p_arc->fat_bak = p_arc->fnt_bak = 0; - p_arc->flag &= ~(FS_ARCHIVE_FLAG_CANCELING | - FS_ARCHIVE_FLAG_LOADED | FS_ARCHIVE_FLAG_UNLOADING); - } - (void)OS_RestoreInterrupts(bak_psr); - } - return TRUE; -} - -u32 FS_LoadArchiveTables (FSArchive * p_arc, void * p_mem, u32 max_size) { - FS_ASSERT_INIT(0); - FS_ASSERT_ARG(p_arc, 0); - - { - u32 total_size = ALIGN_BYTE(p_arc->fat_size + p_arc->fnt_size + 32, 32); - if (total_size <= max_size) { - u8 * p_cache = (u8 *)ALIGN_BYTE((u32)p_mem, 32); - FSFile tmp; - FS_InitFile(&tmp); - - if (FS_OpenFileDirect(&tmp, p_arc, p_arc->fat, p_arc->fat + p_arc->fat_size, (u32) ~0)) { - if (FS_ReadFile(&tmp, p_cache, (s32)p_arc->fat_size) < 0) { - MI_CpuFill8(p_cache, 0x00, p_arc->fat_size); - } - (void)FS_CloseFile(&tmp); - } - p_arc->fat = (u32)p_cache; - p_cache += p_arc->fat_size; - - if (FS_OpenFileDirect(&tmp, p_arc, p_arc->fnt, p_arc->fnt + p_arc->fnt_size, (u32) ~0)) { - if (FS_ReadFile(&tmp, p_cache, (s32)p_arc->fnt_size) < 0) { - MI_CpuFill8(p_cache, 0x00, p_arc->fnt_size); - } - (void)FS_CloseFile(&tmp); - } - p_arc->fnt = (u32)p_cache; - - p_arc->load_mem = p_mem; - - p_arc->table_func = FSi_ReadMemoryCore; - p_arc->flag |= FS_ARCHIVE_FLAG_TABLE_LOAD; - } - return total_size; - } -} - -void * FS_UnloadArchiveTables (FSArchive * p_arc) { - FS_ASSERT_INIT(0); - FS_ASSERT_ARG(p_arc, 0); - - { - void * ret = NULL; - if (FS_IsArchiveLoaded(p_arc)) { - BOOL bak_stat = FS_SuspendArchive(p_arc); - if (FS_IsArchiveTableLoaded(p_arc)) { - p_arc->flag &= ~FS_ARCHIVE_FLAG_TABLE_LOAD; - ret = p_arc->load_mem; - p_arc->load_mem = NULL; - p_arc->fat = p_arc->fat_bak; - p_arc->fnt = p_arc->fnt_bak; - p_arc->table_func = p_arc->read_func; - } - if (bak_stat) { - (void)FS_ResumeArchive(p_arc); - } - } - return ret; - } -} - -BOOL FS_SuspendArchive (FSArchive * p_arc) { - FS_ASSERT_INIT(0); - FS_ASSERT_ARG(p_arc, 0); - - { - OSIntrMode bak_psr = OS_DisableInterrupts(); - const BOOL bak_stat = !FS_IsArchiveSuspended(p_arc); - if (bak_stat) { - if (FSi_IsArchiveRunning(p_arc)) { - p_arc->flag |= FS_ARCHIVE_FLAG_SUSPENDING; - do{ - OS_SleepThread(&p_arc->stat_q); - }while (FSi_IsArchiveSuspending(p_arc)); - } else { - p_arc->flag |= FS_ARCHIVE_FLAG_SUSPEND; - } - } - (void)OS_RestoreInterrupts(bak_psr); - return bak_stat; - } -} - -BOOL FS_ResumeArchive (FSArchive * p_arc) { - FS_ASSERT_INIT(0); - FS_ASSERT_ARG(p_arc, 0); - - { - FSFile * p_target = NULL; - - OSIntrMode bak_irq = OS_DisableInterrupts(); - const BOOL bak_stat = !FS_IsArchiveSuspended(p_arc); - if (!bak_stat) { - p_arc->flag &= ~FS_ARCHIVE_FLAG_SUSPEND; - - p_target = FSi_NextCommand(p_arc); - } - (void)OS_RestoreInterrupts(bak_irq); - if (p_target) { - FSi_ExecuteAsyncCommand(p_target); - } - return bak_stat; - } -} - -void FS_SetArchiveProc (struct FSArchive * p_arc, FS_ARCHIVE_PROC_FUNC proc, u32 flags) { - if (!flags) { - proc = NULL; - } else if (!proc) { - flags = 0; - } - p_arc->proc = proc; - p_arc->proc_flag = flags; -} - -void FS_NotifyArchiveAsyncEnd (FSArchive * p_arc, FSResult ret) { - if (FSi_IsArchiveAsync(p_arc)) { - FSFile * p_file = p_arc->list.next; - p_arc->flag &= ~FS_ARCHIVE_FLAG_IS_ASYNC; - FSi_ReleaseCommand(p_file, ret); - - p_file = FSi_NextCommand(p_arc); - if (p_file) { - FSi_ExecuteAsyncCommand(p_file); - } - } else { - FSFile * p_file = p_arc->list.next; - OSIntrMode bak_psr = OS_DisableInterrupts(); - p_file->error = ret; - p_arc->flag &= ~FS_ARCHIVE_FLAG_IS_SYNC; -#if !defined(SDK_NO_THREAD) - OS_WakeupThread(&p_arc->sync_q); -#endif - (void)OS_RestoreInterrupts(bak_psr); - } -} - -#endif diff --git a/subprojects/NitroSDK/libraries/fs/src/fs_command.c b/subprojects/NitroSDK/libraries/fs/src/fs_command.c deleted file mode 100644 index 06c4b6bc1c..0000000000 --- a/subprojects/NitroSDK/libraries/fs/src/fs_command.c +++ /dev/null @@ -1,78 +0,0 @@ -#include - -#include "include/util.h" -#include "include/command.h" - -#if defined(FS_IMPLEMENT) - -void FSi_ReleaseCommand (FSFile * p_file, FSResult ret) { - SDK_ASSERT(FS_IsBusy(p_file)); - { - OSIntrMode bak_psr = OS_DisableInterrupts(); - FSi_CutFromList(p_file); - p_file->stat &= ~(FS_FILE_STATUS_CANCEL | FS_FILE_STATUS_BUSY | - FS_FILE_STATUS_SYNC | FS_FILE_STATUS_ASYNC | FS_FILE_STATUS_OPERATING); - p_file->error = ret; - OS_WakeupThread(p_file->queue); - (void)OS_RestoreInterrupts(bak_psr); - } -} - -FSResult FSi_TranslateCommand (FSFile * p_file, FSCommandType command) { - FSResult ret; - - FSArchive * const p_arc = p_file->arc; - const int bit = (1 << command); - - if (FS_IsFileSyncMode(p_file)) { - p_arc->flag |= FS_ARCHIVE_FLAG_IS_SYNC; - } else { - p_arc->flag |= FS_ARCHIVE_FLAG_IS_ASYNC; - } - - if ((p_arc->proc_flag & bit) != 0) { - switch (ret = (*p_arc->proc) (p_file, command)) { - case FS_RESULT_SUCCESS: - case FS_RESULT_FAILURE: - case FS_RESULT_UNSUPPORTED: - - p_file->error = ret; - break; - case FS_RESULT_PROC_ASYNC: - - break; - case FS_RESULT_PROC_UNKNOWN: - - ret = FS_RESULT_PROC_DEFAULT; - p_arc->proc_flag &= ~bit; - break; - } - } else { - ret = FS_RESULT_PROC_DEFAULT; - } - - if (ret == FS_RESULT_PROC_DEFAULT) { - ret = (*fsi_default_command[command]) (p_file); - } - - if (ret == FS_RESULT_PROC_ASYNC) { - if (FS_IsFileSyncMode(p_file)) { - OSIntrMode bak_psr = OS_DisableInterrupts(); - while (FSi_IsArchiveSync(p_arc)) { - OS_SleepThread(&p_arc->sync_q); - } - ret = p_file->error; - (void)OS_RestoreInterrupts(bak_psr); - } - } else if (!FS_IsFileSyncMode(p_file)) { - p_arc->flag &= ~FS_ARCHIVE_FLAG_IS_ASYNC; - FSi_ReleaseCommand(p_file, ret); - } else { - p_arc->flag &= ~FS_ARCHIVE_FLAG_IS_SYNC; - p_file->error = ret; - } - - return ret; -} - -#endif diff --git a/subprojects/NitroSDK/libraries/fs/src/fs_command_default.c b/subprojects/NitroSDK/libraries/fs/src/fs_command_default.c deleted file mode 100644 index 4ac3acf7c2..0000000000 --- a/subprojects/NitroSDK/libraries/fs/src/fs_command_default.c +++ /dev/null @@ -1,454 +0,0 @@ -#include - -#include "include/util.h" -#include "include/command.h" - -#if defined(FS_IMPLEMENT) - -typedef struct { - FSArchive * arc; - u32 pos; -} FSiSyncReadParam; - -static FSResult FSi_ReadFileCommand(FSFile * p_file); -static FSResult FSi_WriteFileCommand(FSFile * p_file); -static FSResult FSi_SeekDirCommand(FSFile * p_dir); -static FSResult FSi_ReadDirCommand(FSFile * p_dir); -static FSResult FSi_FindPathCommand(FSFile * p_dir); -static FSResult FSi_GetPathCommand(FSFile * p_file); -static FSResult FSi_OpenFileFastCommand(FSFile * p_file); -static FSResult FSi_OpenFileDirectCommand(FSFile * p_file); -static FSResult FSi_CloseFileCommand(FSFile * p_file); - -FSResult (*const (fsi_default_command[])) (FSFile *) = { - FSi_ReadFileCommand, - FSi_WriteFileCommand, - FSi_SeekDirCommand, - FSi_ReadDirCommand, - FSi_FindPathCommand, - FSi_GetPathCommand, - FSi_OpenFileFastCommand, - FSi_OpenFileDirectCommand, - FSi_CloseFileCommand -}; - -int FSi_StrNICmp (const char * str1, const char * str2, u32 len) { - int i; - for (i = 0; i < len; ++i) { - u32 c = (u32)(MI_ReadByte(str1 + i) - 'A'); - u32 d = (u32)(MI_ReadByte(str2 + i) - 'A'); - if (c <= 'Z' - 'A') { - c += 'a' - 'A'; - } - if (d <= 'Z' - 'A') { - d += 'a' - 'A'; - } - if (c != d) { - return (int)(c - d); - } - } - return 0; -} - -static FSResult FSi_ReadTable (FSiSyncReadParam * p, void * dst, u32 len) { - FSResult result; - FSArchive * const p_arc = p->arc; - - p_arc->flag |= FS_ARCHIVE_FLAG_IS_SYNC; - result = (*p_arc->table_func) (p_arc, dst, p->pos, len); - switch (result) { - case FS_RESULT_SUCCESS: - case FS_RESULT_FAILURE: - p_arc->flag &= ~FS_ARCHIVE_FLAG_IS_SYNC; - break; - case FS_RESULT_PROC_ASYNC: -#if !defined(SDK_NO_THREAD) - { - OSIntrMode bak_psr = OS_DisableInterrupts(); - while (FSi_IsArchiveSync(p_arc)) { - OS_SleepThread(&p_arc->sync_q); - } - (void)OS_RestoreInterrupts(bak_psr); - } -#else - while (FSi_IsArchiveSync(p_arc)) { - ; - } -#endif - result = p_arc->list.next->error; - break; - } - p->pos += len; - return result; -} - -static void FSi_SeekDirDirect (FSFile * p_dir, u32 id) { - p_dir->stat |= FS_FILE_STATUS_SYNC; - p_dir->arg.seekdir.pos.arc = p_dir->arc; - p_dir->arg.seekdir.pos.pos = 0; - p_dir->arg.seekdir.pos.index = 0; - p_dir->arg.seekdir.pos.own_id = (u16)id; - (void)FSi_TranslateCommand(p_dir, FS_COMMAND_SEEKDIR); -} - -static FSResult FSi_ReadFileCommand (FSFile * p_file) { - FSArchive * const p_arc = p_file->arc; - const u32 pos = p_file->prop.file.pos; - const u32 len = p_file->arg.readfile.len; - void * const dst = p_file->arg.readfile.dst; - p_file->prop.file.pos += len; - return (*p_arc->read_func) (p_arc, dst, pos, len); -} - -static FSResult FSi_WriteFileCommand (FSFile * p_file) { - FSArchive * const p_arc = p_file->arc; - const u32 pos = p_file->prop.file.pos; - const u32 len = p_file->arg.writefile.len; - const void * const src = p_file->arg.writefile.src; - p_file->prop.file.pos += len; - return (*p_arc->write_func) (p_arc, src, pos, len); -} - -static FSResult FSi_SeekDirCommand (FSFile * p_dir) { - FSResult result; - FSArchive * const p_arc = p_dir->arc; - const FSDirPos * const arg = &p_dir->arg.seekdir.pos; - - FSArchiveFNT fnt_entry; - FSiSyncReadParam param; - param.arc = p_arc; - param.pos = p_arc->fnt + arg->own_id * sizeof(fnt_entry); - result = FSi_ReadTable(¶m, &fnt_entry, sizeof(fnt_entry)); - if (result == FS_RESULT_SUCCESS) { - p_dir->prop.dir.pos = *arg; - - if ((arg->index == 0) && (arg->pos == 0)) { - p_dir->prop.dir.pos.index = fnt_entry.index; - p_dir->prop.dir.pos.pos = p_arc->fnt + fnt_entry.start; - } - p_dir->prop.dir.parent = (u32)(fnt_entry.parent & BIT_MASK(12)); - } - return result; -} - -static FSResult FSi_ReadDirCommand (FSFile * p_dir) { - FSResult result; - FSDirEntry * p_entry = p_dir->arg.readdir.p_entry; - u8 len; - - FSiSyncReadParam param; - param.arc = p_dir->arc; - param.pos = p_dir->prop.dir.pos.pos; - - result = FSi_ReadTable(¶m, &len, sizeof(len)); - if (result != FS_RESULT_SUCCESS) { - return result; - } - p_entry->name_len = (u32)(len & BIT_MASK(7)); - p_entry->is_directory = (u32)((len >> 7) & 1); - - if (p_entry->name_len == 0) { - result = FS_RESULT_FAILURE; - return result; - } - - if (!p_dir->arg.readdir.skip_string) { - result = FSi_ReadTable(¶m, p_entry->name, p_entry->name_len); - if (result != FS_RESULT_SUCCESS) { - return result; - } - MI_WriteByte((u8 *)p_entry->name + p_entry->name_len, (u8)'\0'); - } else { - param.pos += p_entry->name_len; - } - - if (p_entry->is_directory) { - u16 id; - result = FSi_ReadTable(¶m, &id, sizeof(id)); - if (result != FS_RESULT_SUCCESS) { - return result; - } - p_entry->dir_id.arc = p_dir->arc; - p_entry->dir_id.own_id = (u16)(id & BIT_MASK(12)); - p_entry->dir_id.index = 0; - p_entry->dir_id.pos = 0; - } else { - p_entry->file_id.arc = p_dir->arc; - p_entry->file_id.file_id = p_dir->prop.dir.pos.index; - ++p_dir->prop.dir.pos.index; - } - - p_dir->prop.dir.pos.pos = param.pos; - - return result; -} - -static FSResult FSi_FindPathCommand (FSFile * p_dir) { - const char * path = p_dir->arg.findpath.path; - const BOOL is_dir = p_dir->arg.findpath.find_directory; - - p_dir->arg.seekdir.pos = p_dir->arg.findpath.pos; - (void)FSi_TranslateCommand(p_dir, FS_COMMAND_SEEKDIR); - for (; MI_ReadByte(path); path += (MI_ReadByte(path) ? 1 : 0)) { - u32 is_directory; - int name_len = 0; - while ((is_directory = MI_ReadByte(path + name_len)), - (is_directory && !FSi_IsSlash(is_directory))) { - ++name_len; - } - if (is_directory || is_dir) { - is_directory = 1; - } - - if (name_len == 0) { - return FS_RESULT_FAILURE; - } else if (MI_ReadByte(path) == '.') { - if (name_len == 1) { - path += 1; - continue; - } else if ((name_len == 2) & (MI_ReadByte(path + 1) == '.')) { - if (p_dir->prop.dir.pos.own_id != 0) { - FSi_SeekDirDirect(p_dir, p_dir->prop.dir.parent); - } - path += 2; - continue; - } - } - - if (name_len > FS_FILE_NAME_MAX) { - return FS_RESULT_FAILURE; - } else { - FSDirEntry etr; - p_dir->arg.readdir.p_entry = &etr; - p_dir->arg.readdir.skip_string = FALSE; - for (;;) { - if (FSi_TranslateCommand(p_dir, FS_COMMAND_READDIR) != FS_RESULT_SUCCESS) { - return FS_RESULT_FAILURE; - } - - if ((is_directory != etr.is_directory) || - (name_len != etr.name_len) || FSi_StrNICmp(path, etr.name, (u32)name_len)) { - continue; - } - - if (is_directory) { - path += name_len; - p_dir->arg.seekdir.pos = etr.dir_id; - (void)FSi_TranslateCommand(p_dir, FS_COMMAND_SEEKDIR); - break; - } else if (is_dir) { - return FS_RESULT_FAILURE; - } else { - *p_dir->arg.findpath.result.file = etr.file_id; - return FS_RESULT_SUCCESS; - } - } - } - } - - if (!is_dir) { - return FS_RESULT_FAILURE; - } - - *p_dir->arg.findpath.result.dir = p_dir->prop.dir.pos; - return FS_RESULT_SUCCESS; -} - -static FSResult FSi_GetPathCommand (FSFile * p_file) { - FSArchive * const p_arc = p_file->arc; - - FSGetPathInfo * p_info = &p_file->arg.getpath; - - FSDirEntry entry; - FSFile tmp; - u32 dir_id; - u32 file_id; - u32 id; - u32 len; - - enum - { INVALID_ID = 0x10000 }; - - FS_InitFile(&tmp); - tmp.arc = p_file->arc; - - if (FS_IsDir(p_file)) { - dir_id = p_file->prop.dir.pos.own_id; - file_id = INVALID_ID; - } else { - file_id = p_file->prop.file.own_id; - if (p_info->total_len != 0) { - dir_id = p_info->dir_id; - } else { - u32 pos = 0; - u32 num_dir = 0; - dir_id = INVALID_ID; - do{ - FSi_SeekDirDirect(&tmp, pos); - if (!pos) { - num_dir = tmp.prop.dir.parent; - } - - tmp.arg.readdir.p_entry = &entry; - tmp.arg.readdir.skip_string = TRUE; - while (FSi_TranslateCommand(&tmp, FS_COMMAND_READDIR) == FS_RESULT_SUCCESS) { - if (!entry.is_directory && (entry.file_id.file_id == file_id)) { - dir_id = tmp.prop.dir.pos.own_id; - break; - } - } - }while ((dir_id == INVALID_ID) && (++pos < num_dir)); - } - } - - if (dir_id == INVALID_ID) { - p_info->total_len = 0; - return FS_RESULT_FAILURE; - } - - if (p_info->total_len == 0) { - len = 0; - - if (p_arc->name.pack <= 0x000000FF) { - len += 1; - } else if (p_arc->name.pack <= 0x0000FF00) { - len += 2; - } else { - len += 3; - } - len += 1 + 1; - - if (file_id != INVALID_ID) { - len += entry.name_len; - } - - id = dir_id; - if (id != 0) { - FSi_SeekDirDirect(&tmp, id); - do{ - FSi_SeekDirDirect(&tmp, tmp.prop.dir.parent); - tmp.arg.readdir.p_entry = &entry; - tmp.arg.readdir.skip_string = TRUE; - while (FSi_TranslateCommand(&tmp, FS_COMMAND_READDIR) == FS_RESULT_SUCCESS) { - if (entry.is_directory && (entry.dir_id.own_id == id)) { - len += entry.name_len + 1; - break; - } - } - id = tmp.prop.dir.pos.own_id; - }while (id != 0); - } - - p_info->total_len = (u16)(len + 1); - p_info->dir_id = (u16)dir_id; - } - - if (!p_info->buf) { - return FS_RESULT_SUCCESS; - } - - if (p_info->buf_len < p_info->total_len) { - return FS_RESULT_FAILURE; - } else { - u8 * dst = p_info->buf; - u32 total = p_info->total_len; - u32 pos = 0; - - if (p_arc->name.pack <= 0x000000FF) { - len = 1; - } else if (p_arc->name.pack <= 0x0000FF00) { - len = 2; - } else { - len = 3; - } - MI_CpuCopy8(p_arc->name.ptr, dst + pos, len); - pos += len; - MI_CpuCopy8(":/", dst + pos, 2); - pos += 2; - - id = dir_id; - FSi_SeekDirDirect(&tmp, id); - if (file_id != INVALID_ID) { - tmp.arg.readdir.p_entry = &entry; - tmp.arg.readdir.skip_string = FALSE; - while (FSi_TranslateCommand(&tmp, FS_COMMAND_READDIR) == FS_RESULT_SUCCESS) { - if (!entry.is_directory && (entry.file_id.file_id == file_id)) { - break; - } - } - len = entry.name_len + 1; - MI_CpuCopy8(entry.name, dst + total - len, len); - total -= len; - } else { - MI_WriteByte(dst + total - 1, '\0'); - total -= 1; - } - - if (id != 0) { - do{ - FSi_SeekDirDirect(&tmp, tmp.prop.dir.parent); - tmp.arg.readdir.p_entry = &entry; - tmp.arg.readdir.skip_string = FALSE; - - MI_WriteByte(dst + total - 1, '/'); - total -= 1; - - while (FSi_TranslateCommand(&tmp, FS_COMMAND_READDIR) == FS_RESULT_SUCCESS) { - if (entry.is_directory && (entry.dir_id.own_id == id)) { - len = entry.name_len; - MI_CpuCopy8(entry.name, dst + total - len, len); - total -= len; - break; - } - } - id = tmp.prop.dir.pos.own_id; - }while (id != 0); - } - SDK_ASSERT(pos == total); - } - - return FS_RESULT_SUCCESS; -} - -static FSResult FSi_OpenFileFastCommand (FSFile * p_file) { - FSResult result; - FSArchive * const p_arc = p_file->arc; - const FSFileID * p_id = &p_file->arg.openfilefast.id; - const u32 index = p_id->file_id; - - { - u32 pos = (u32)(index * sizeof(FSArchiveFAT)); - if (pos >= p_arc->fat_size) { - result = FS_RESULT_FAILURE; - } else { - FSArchiveFAT fat; - FSiSyncReadParam param; - param.arc = p_arc; - param.pos = p_arc->fat + pos; - result = FSi_ReadTable(¶m, &fat, sizeof(fat)); - if (result == FS_RESULT_SUCCESS) { - p_file->arg.openfiledirect.top = fat.top; - p_file->arg.openfiledirect.bottom = fat.bottom; - p_file->arg.openfiledirect.index = index; - result = FSi_TranslateCommand(p_file, FS_COMMAND_OPENFILEDIRECT); - } - } - } - return result; -} - -static FSResult FSi_OpenFileDirectCommand (FSFile * p_file) { - p_file->prop.file.top = p_file->arg.openfiledirect.top; - p_file->prop.file.pos = p_file->arg.openfiledirect.top; - p_file->prop.file.bottom = p_file->arg.openfiledirect.bottom; - p_file->prop.file.own_id = p_file->arg.openfiledirect.index; - - return FS_RESULT_SUCCESS; -} - -static FSResult FSi_CloseFileCommand (FSFile * p_file) { - (void)p_file; - return FS_RESULT_SUCCESS; -} - -#endif diff --git a/subprojects/NitroSDK/libraries/fs/src/fs_file.c b/subprojects/NitroSDK/libraries/fs/src/fs_file.c deleted file mode 100644 index 345d8c2ef4..0000000000 --- a/subprojects/NitroSDK/libraries/fs/src/fs_file.c +++ /dev/null @@ -1,471 +0,0 @@ -#include -#include -#include -#include - -#include "include/rom.h" -#include "include/util.h" -#include "include/command.h" - -#if !defined(SDK_FINALROM) - -const char * fsi_assert_fs_format = "[file-system] %s.\n"; -const char * fsi_assert_is_init = "not initialized"; -const char * fsi_assert_is_file = "invalid file-handle"; -const char * fsi_assert_is_dir = "invalid directory-handle"; -const char * fsi_assert_is_handle = "neither file-handle nor directory-handle"; -const char * fsi_assert_is_idle = "specified file-handle is busy"; -const char * fsi_assert_is_empty = "specified file-handle is already opened"; -const char * fsi_assert_is_valid_arg = "invalid argument parameter"; -const char * fsi_assert_is_valid_dma_channel = "cannot specify DMA channel 0"; -const char * fsi_assert_irq_enabled = "not IRQ-enabled"; - -const char * fsi_assert_arc_free = "archive is still now registered"; -const char * fsi_assert_arc_unloaded = "archive is still now loaded"; -const char * fsi_assert_arc_not_rom = "cannot modify \"rom\" archive"; - -#endif - -static BOOL is_init = FALSE; - -void FS_Init (u32 default_dma_no) { -#if defined(FS_IMPLEMENT) - FS_ASSERT_DMA_CHANNEL(default_dma_no, void); - if (!is_init) { - is_init = TRUE; - - FSi_InitRom(default_dma_no); - } - -#else -#pragma unused(default_dma_no) - CARD_Init(); -#endif -} - -BOOL FS_IsAvailable (void) { - return is_init; -} - -void FS_End (void) { - OSIntrMode bak_psr = OS_DisableInterrupts(); - - if (is_init) { -#if defined(FS_IMPLEMENT) - FSi_EndArchive(); - OS_ReleaseLockID((u16)fsi_card_lock_id); -#endif - is_init = FALSE; - } - - (void)OS_RestoreInterrupts(bak_psr); -} - -#if defined(FS_IMPLEMENT) - -void FS_InitFile (FSFile * p_file) { - FS_ASSERT_ARG(p_file, void); - p_file->link.next = p_file->link.prev = NULL; -#if !defined(SDK_NO_THREAD) - OS_InitThreadQueue(p_file->queue); -#endif - p_file->arc = NULL; - p_file->command = FS_COMMAND_INVALID; - p_file->stat = 0; -} - -static BOOL FSi_FindPath (FSFile * p_dir, const char * path, FSFileID * p_file_id, FSDirPos * p_dir_pos) { - FSDirPos pos; - - FS_ASSERT_ARG(p_dir && path, FALSE); - FS_ASSERT_IRQ_ENABLED(-1); - - if (FSi_IsSlash(MI_ReadByte(path))) { - pos.arc = current_dir_pos.arc; - pos.own_id = 0; - pos.pos = 0; - pos.index = 0; - ++path; - } else { - int i; - - pos = current_dir_pos; - for (i = 0; i <= FS_ARCHIVE_NAME_LEN_MAX; ++i) { - u32 c = MI_ReadByte(path + i); - if (!c || FSi_IsSlash(c)) { - break; - } else if (c == ':') { - FSArchive * const p_arc = FS_FindArchive(path, i); - if (!p_arc) { - OS_Warning("[file-system] " "archive \"%*s\" is not found.", i, path); - return FALSE; - } else if (!FS_IsArchiveLoaded(p_arc)) { - OS_Warning( - "[file-system] " - "archive \"%*s\" is registered, but not loaded yet.", i, path - ); - return FALSE; - } - - pos.arc = p_arc; - pos.pos = 0; - pos.index = 0; - pos.own_id = 0; - path += i + 1; - if (FSi_IsSlash(MI_ReadByte(path))) { - ++path; - } - break; - } - } - } - - p_dir->arc = pos.arc; - p_dir->arg.findpath.path = path; - p_dir->arg.findpath.pos = pos; - if (p_dir_pos) { - p_dir->arg.findpath.find_directory = TRUE; - p_dir->arg.findpath.result.dir = p_dir_pos; - } else { - p_dir->arg.findpath.find_directory = FALSE; - p_dir->arg.findpath.result.file = p_file_id; - } - return FSi_SendCommand(p_dir, FS_COMMAND_FINDPATH); -} - -static s32 FSi_ReadFileCore (FSFile * p_file, void * dst, s32 len, BOOL async) { - FS_ASSERT_INIT(-1); - FS_ASSERT_ARG(p_file && dst && (len >= 0), -1); - FS_ASSERT_FILE(p_file, -1); - FS_ASSERT_IDLE(p_file, -1); - - { - const s32 pos = (s32)p_file->prop.file.pos; - const s32 rest = (s32)p_file->prop.file.bottom - pos; - const u32 org = (u32)len; - if (len > rest) { - len = rest; - } - if (len < 0) { - len = 0; - } - p_file->arg.readfile.dst = dst; - p_file->arg.readfile.len_org = org; - p_file->arg.readfile.len = (u32)(len); - if (!async) { - p_file->stat |= FS_FILE_STATUS_SYNC; - } - (void)FSi_SendCommand(p_file, FS_COMMAND_READFILE); - if (!async) { - if (FS_WaitAsync(p_file)) { - len = (s32)p_file->prop.file.pos - pos; - } else { - len = -1; - } - } - } - return len; -} - -static s32 FSi_WriteFileCore (FSFile * p_file, const void * src, s32 len, BOOL async) { - FS_ASSERT_INIT(-1); - FS_ASSERT_ARG(p_file && src && (len >= 0), -1); - FS_ASSERT_FILE(p_file, -1); - FS_ASSERT_IDLE(p_file, -1); - - { - const s32 pos = (s32)p_file->prop.file.pos; - const s32 rest = (s32)p_file->prop.file.bottom - pos; - const u32 org = (u32)len; - if (len > rest) { - len = rest; - } - if (len < 0) { - len = 0; - } - p_file->arg.writefile.src = src; - p_file->arg.writefile.len_org = org; - p_file->arg.writefile.len = (u32)(len); - if (!async) { - p_file->stat |= FS_FILE_STATUS_SYNC; - } - (void)FSi_SendCommand(p_file, FS_COMMAND_WRITEFILE); - if (!async) { - if (FS_WaitAsync(p_file)) { - len = (s32)p_file->prop.file.pos - pos; - } else { - len = -1; - } - } - } - - return len; -} - -BOOL FS_ConvertPathToFileID (FSFileID * p_file_id, const char * path) { - FS_ASSERT_INIT(FALSE); - FS_ASSERT_ARG(p_file_id && path, FALSE); - FS_ASSERT_IRQ_ENABLED(FALSE); - - { - FSFile dir; - FS_InitFile(&dir); - if (!FSi_FindPath(&dir, path, p_file_id, NULL)) { - return FALSE; - } - } - return TRUE; -} - -BOOL FS_OpenFileDirect (FSFile * p_file, FSArchive * p_arc, u32 image_top, u32 image_bottom, u32 file_index) { - FS_ASSERT_INIT(FALSE); - FS_ASSERT_ARG(p_file && p_arc, FALSE); - FS_ASSERT_EMPTY(p_file, FALSE); - FS_ASSERT_IRQ_ENABLED(FALSE); - - { - p_file->arc = p_arc; - p_file->arg.openfiledirect.index = file_index; - p_file->arg.openfiledirect.top = image_top; - p_file->arg.openfiledirect.bottom = image_bottom; - if (!FSi_SendCommand(p_file, FS_COMMAND_OPENFILEDIRECT)) { - return FALSE; - } - p_file->stat |= FS_FILE_STATUS_IS_FILE; - p_file->stat &= ~FS_FILE_STATUS_IS_DIR; - } - return TRUE; -} - -BOOL FS_OpenFileFast (FSFile * p_file, FSFileID file_id) { - FS_ASSERT_INIT(FALSE); - FS_ASSERT_ARG(p_file, FALSE); - FS_ASSERT_EMPTY(p_file, FALSE); - FS_ASSERT_IRQ_ENABLED(FALSE); - - { - if (!file_id.arc) { - return FALSE; - } - p_file->arc = file_id.arc; - p_file->arg.openfilefast.id = file_id; - if (!FSi_SendCommand(p_file, FS_COMMAND_OPENFILEFAST)) { - return FALSE; - } - p_file->stat |= FS_FILE_STATUS_IS_FILE; - p_file->stat &= ~FS_FILE_STATUS_IS_DIR; - } - return TRUE; -} - -BOOL FS_OpenFile (FSFile * p_file, const char * path) { - FSFileID id; - return (FS_ConvertPathToFileID(&id, path) && FS_OpenFileFast(p_file, id)); -} - -BOOL FS_CloseFile (FSFile * p_file) { - FS_ASSERT_INIT(FALSE); - FS_ASSERT_ARG(p_file, FALSE); - FS_ASSERT_FILE(p_file, FALSE); - FS_ASSERT_IRQ_ENABLED(FALSE); - - if (!FSi_SendCommand(p_file, FS_COMMAND_CLOSEFILE)) { - return FALSE; - } - p_file->arc = NULL; - p_file->command = FS_COMMAND_INVALID; - p_file->stat &= ~(FS_FILE_STATUS_IS_FILE | FS_FILE_STATUS_IS_DIR); - return TRUE; -} - -BOOL FS_GetPathName (FSFile * p_file, char * buf, u32 len) { - FS_ASSERT_INIT(FALSE); - FS_ASSERT_HANDLE(p_file, FALSE); - FS_ASSERT_IRQ_ENABLED(FALSE); - - if (p_file->command != FS_COMMAND_GETPATH) { - p_file->arg.getpath.total_len = 0; - p_file->arg.getpath.dir_id = 0; - } - p_file->arg.getpath.buf = (u8 *)buf; - p_file->arg.getpath.buf_len = len; - return FSi_SendCommand(p_file, FS_COMMAND_GETPATH); -} - -s32 FS_GetPathLength (FSFile * p_file) { - return FS_GetPathName(p_file, NULL, 0) ? p_file->arg.getpath.total_len : -1; -} - -BOOL FS_WaitAsync (FSFile * p_file) { - FS_ASSERT_INIT(FALSE); - FS_ASSERT_ARG(p_file, FALSE); - FS_ASSERT_IRQ_ENABLED(-1); - -#if !defined(SDK_NO_THREAD) - { - BOOL is_owner = FALSE; - OSIntrMode bak_psr = OS_DisableInterrupts(); - if (FS_IsBusy(p_file)) { - is_owner = !(p_file->stat & (FS_FILE_STATUS_SYNC | FS_FILE_STATUS_OPERATING)); - if (is_owner) { - p_file->stat |= FS_FILE_STATUS_SYNC; - do{ - OS_SleepThread(p_file->queue); - }while (!(p_file->stat & FS_FILE_STATUS_OPERATING)); - } else { - do{ - OS_SleepThread(p_file->queue); - }while (FS_IsBusy(p_file)); - } - } - (void)OS_RestoreInterrupts(bak_psr); - - if (is_owner) { - return FSi_ExecuteSyncCommand(p_file); - } - } -#else - while (FS_IsBusy(p_file)) { - ; - } -#endif - - return FS_IsSucceeded(p_file); -} - -void FS_CancelFile (FSFile * p_file) { - FS_ASSERT_INIT(FALSE); - FS_ASSERT_ARG(p_file, FALSE); - - { - OSIntrMode bak_psr = OS_DisableInterrupts(); - if (FS_IsBusy(p_file)) { - p_file->stat |= FS_FILE_STATUS_CANCEL; - p_file->arc->flag |= FS_ARCHIVE_FLAG_CANCELING; - } - (void)OS_RestoreInterrupts(bak_psr); - } -} - -s32 FS_ReadFileAsync (FSFile * p_file, void * dst, s32 len) { - return FSi_ReadFileCore(p_file, dst, len, TRUE); -} - -s32 FS_ReadFile (FSFile * p_file, void * dst, s32 len) { - FS_ASSERT_IRQ_ENABLED(-1); - return FSi_ReadFileCore(p_file, dst, len, FALSE); -} - -s32 FS_WriteFileAsync (FSFile * p_file, const void * src, s32 len) { - return FSi_WriteFileCore(p_file, src, len, TRUE); -} - -s32 FS_WriteFile (FSFile * p_file, const void * src, s32 len) { - FS_ASSERT_IRQ_ENABLED(-1); - return FSi_WriteFileCore(p_file, src, len, FALSE); -} - -BOOL FS_SeekFile (FSFile * p_file, s32 offset, FSSeekFileMode origin) { - FS_ASSERT_INIT(FALSE); - FS_ASSERT_ARG(p_file, FALSE); - FS_ASSERT_FILE(p_file, FALSE); - - { - switch (origin) { - case FS_SEEK_SET: - offset += p_file->prop.file.top; - break; - case FS_SEEK_CUR: - offset += p_file->prop.file.pos; - break; - case FS_SEEK_END: - offset += p_file->prop.file.bottom; - break; - default: - FS_ASSERT_ARG(FALSE, FALSE); - return FALSE; - } - if (offset < (s32)p_file->prop.file.top) { - offset = (s32)p_file->prop.file.top; - } - if (offset > (s32)p_file->prop.file.bottom) { - offset = (s32)p_file->prop.file.bottom; - } - p_file->prop.file.pos = (u32)offset; - } - - return TRUE; -} - -BOOL FS_SeekDir (FSFile * p_dir, const FSDirPos * p_pos) { - FS_ASSERT_INIT(FALSE); - FS_ASSERT_ARG(p_dir && p_pos->arc && p_pos, FALSE); - FS_ASSERT_IRQ_ENABLED(-1); - - p_dir->arc = p_pos->arc; - p_dir->arg.seekdir.pos = *p_pos; - if (!FSi_SendCommand(p_dir, FS_COMMAND_SEEKDIR)) { - return FALSE; - } - p_dir->stat |= FS_FILE_STATUS_IS_DIR; - return TRUE; -} - -BOOL FS_ReadDir (FSFile * p_dir, FSDirEntry * p_entry) { - FS_ASSERT_INIT(FALSE); - FS_ASSERT_ARG(p_dir && p_entry, FALSE); - FS_ASSERT_DIR(p_dir, FALSE); - FS_ASSERT_IRQ_ENABLED(-1); - - p_dir->arg.readdir.p_entry = p_entry; - p_dir->arg.readdir.skip_string = FALSE; - return FSi_SendCommand(p_dir, FS_COMMAND_READDIR); -} - -BOOL FS_FindDir (FSFile * p_dir, const char * path) { - FSDirPos pos; - if (!FSi_FindPath(p_dir, path, NULL, &pos)) { - return FALSE; - } - return FS_SeekDir(p_dir, &pos); -} - -BOOL FS_ChangeDir (const char * path) { - FSDirPos pos; - FSFile dir; - FS_InitFile(&dir); - if (!FSi_FindPath(&dir, path, NULL, &pos)) { - return FALSE; - } - current_dir_pos = pos; - return TRUE; -} - -BOOL FS_TellDir (const FSFile * p_dir, FSDirPos * p_pos) { - FS_ASSERT_INIT(FALSE); - FS_ASSERT_ARG(p_dir && p_pos, FALSE); - FS_ASSERT_DIR(p_dir, FALSE); - - { - *p_pos = p_dir->prop.dir.pos; - return TRUE; - } -} - -BOOL FS_RewindDir (FSFile * p_dir) { - FS_ASSERT_INIT(FALSE); - FS_ASSERT_ARG(p_dir, FALSE); - FS_ASSERT_DIR(p_dir, FALSE); - FS_ASSERT_IRQ_ENABLED(-1); - - { - FSDirPos pos; - pos.arc = p_dir->arc; - pos.own_id = p_dir->prop.dir.pos.own_id; - pos.pos = 0; - pos.index = 0; - return FS_SeekDir(p_dir, &pos); - } -} - -#endif diff --git a/subprojects/NitroSDK/libraries/fs/src/fs_overlay.c b/subprojects/NitroSDK/libraries/fs/src/fs_overlay.c deleted file mode 100644 index d63ae5f672..0000000000 --- a/subprojects/NitroSDK/libraries/fs/src/fs_overlay.c +++ /dev/null @@ -1,455 +0,0 @@ -#include -#include -#include -#include -#include -#include - -#include "include/util.h" -#include "include/rom.h" -#include "include/mw_dtor.h" - -typedef enum { - OVERLAYPROC_ARM9, - OVERLAYPROC_ARM7 -} OVERLAYPROC; - -int _ISDbgLib_RegistOverlayInfo(OVERLAYPROC nProc, u32 nAddrRAM, u32 nAddrROM, u32 nSize); -int _ISDbgLib_UnregistOverlayInfo(OVERLAYPROC nProc, u32 nAddrRAM, u32 nSize); - -#define FS_OVERLAY_FLAG_COMP 0x0001 -#define FS_OVERLAY_FLAG_AUTH 0x0002 -#define FS_OVERLAY_DIGEST_SIZE DGT_HASH2_DIGEST_SIZE - -#if defined(SDK_TS) -extern u8 SDK_OVERLAYTABLE_DIGEST[]; -extern u8 SDK_OVERLAY_DIGEST[]; -extern u8 SDK_OVERLAY_DIGEST_END[]; -#endif - -static const u8 fsi_def_digest_key[64] = { - 0x21, 0x06, 0xc0, 0xde, - 0xba, 0x98, 0xce, 0x3f, - 0xa6, 0x92, 0xe3, 0x9d, - 0x46, 0xf2, 0xed, 0x01, - - 0x76, 0xe3, 0xcc, 0x08, - 0x56, 0x23, 0x63, 0xfa, - 0xca, 0xd4, 0xec, 0xdf, - 0x9a, 0x62, 0x78, 0x34, - - 0x8f, 0x6d, 0x63, 0x3c, - 0xfe, 0x22, 0xca, 0x92, - 0x20, 0x88, 0x97, 0x23, - 0xd2, 0xcf, 0xae, 0xc2, - - 0x32, 0x67, 0x8d, 0xfe, - 0xca, 0x83, 0x64, 0x98, - 0xac, 0xfd, 0x3e, 0x37, - 0x87, 0x46, 0x58, 0x24, -}; - -static const void * fsi_digest_key_ptr = fsi_def_digest_key; -static int fsi_digest_key_len = sizeof(fsi_def_digest_key); - -#if !defined(SDK_TEG) || !defined(SDK_ARM9) -#define FS_NEED_CARD 1 -#endif - -static u32 FSi_GetOverlayBinarySize (const FSOverlayInfo * p_ovi) { - u32 size = (((p_ovi->header.flag & FS_OVERLAY_FLAG_COMP) != 0) - ? p_ovi->header.compressed : p_ovi->header.ram_size); - return size; -} - -void FS_ClearOverlayImage (FSOverlayInfo * p_ovi) { - u8 * const addr = FS_GetOverlayAddress(p_ovi); - const u32 image_size = FS_GetOverlayImageSize(p_ovi); - const u32 total_size = FS_GetOverlayTotalSize(p_ovi); -#if defined(SDK_ARM9) - IC_InvalidateRange(addr, total_size); - DC_InvalidateRange(addr, total_size); -#endif - MI_CpuFill8(addr + image_size, 0, total_size - image_size); -} - -#if defined(FS_IMPLEMENT) - -FSFileID FS_GetOverlayFileID (const FSOverlayInfo * p_ovi) { - FSFileID ret; - ret.arc = &fsi_arc_rom; - ret.file_id = p_ovi->header.file_id; - return ret; -} - -BOOL FSi_LoadOverlayInfoCore (FSOverlayInfo * p_ovi, MIProcessor target, FSOverlayID id, FSArchive * p_arc, u32 offset_arm9, u32 len_arm9, u32 offset_arm7, u32 len_arm7) { - CARDRomRegion pr[1]; - u32 pos; - - if (target == MI_PROCESSOR_ARM9) { - pr->offset = offset_arm9; - pr->length = len_arm9; - } else { - pr->offset = offset_arm7; - pr->length = len_arm7; - } - - pos = (u32)id * sizeof(FSOverlayInfoHeader); - if (pos >= pr->length) { - return FALSE; - } else { - FSFile file[1]; - FS_InitFile(file); - if (!FS_OpenFileDirect(file, p_arc, pr->offset + pos, pr->offset + pr->length, (u32) ~0)) { - return FALSE; - } else { - if (FS_ReadFile(file, p_ovi, sizeof(FSOverlayInfoHeader)) != - sizeof(FSOverlayInfoHeader)) { - (void)FS_CloseFile(file); - return FALSE; - } - (void)FS_CloseFile(file); - p_ovi->target = target; - - if (!FS_OpenFileFast(file, FS_GetOverlayFileID(p_ovi))) { - return FALSE; - } else { - p_ovi->file_pos.offset = FS_GetFileImageTop(file); - p_ovi->file_pos.length = FS_GetLength(file); - (void)FS_CloseFile(file); - } - } - } - return TRUE; -} - -BOOL FS_LoadOverlayInfo (FSOverlayInfo * p_ovi, MIProcessor target, FSOverlayID id) { - CARDRomRegion * const pr = (target == MI_PROCESSOR_ARM9) ? &fsi_ovt9 : &fsi_ovt7; - - if (pr->offset) { - const u32 pos = (u32)id * sizeof(FSOverlayInfoHeader); - if (pos >= pr->length) { - return FALSE; - } else { - MI_CpuCopy8((const void *)(pr->offset + pos), p_ovi, sizeof(FSOverlayInfoHeader)); - p_ovi->target = target; - - { - FSFile file[1]; - FS_InitFile(file); - if (!FS_OpenFileFast(file, FS_GetOverlayFileID(p_ovi))) { - return FALSE; - } else { - p_ovi->file_pos.offset = FS_GetFileImageTop(file); - p_ovi->file_pos.length = FS_GetLength(file); - (void)FS_CloseFile(file); - } - } - return TRUE; - } - } else { - const CARDRomRegion * const p_ovt9 = CARD_GetRomRegionOVT(MI_PROCESSOR_ARM9); - const CARDRomRegion * const p_ovt7 = CARD_GetRomRegionOVT(MI_PROCESSOR_ARM7); - return FSi_LoadOverlayInfoCore( - p_ovi, target, id, - &fsi_arc_rom, - p_ovt9->offset, p_ovt9->length, - p_ovt7->offset, p_ovt7->length - ); - } -} - -BOOL FS_LoadOverlayImageAsync (FSOverlayInfo * p_ovi, FSFile * p_file) { - FS_InitFile(p_file); - if (!FS_OpenFileFast(p_file, FS_GetOverlayFileID(p_ovi))) { - return FALSE; - } else { - s32 size = (s32)FSi_GetOverlayBinarySize(p_ovi); - FS_ClearOverlayImage(p_ovi); - if (FS_ReadFileAsync(p_file, FS_GetOverlayAddress(p_ovi), size) != size) { - (void)FS_CloseFile(p_file); - return FALSE; - } - } - return TRUE; -} - -BOOL FS_LoadOverlayImage (FSOverlayInfo * p_ovi) { - FSFile p_file[1]; - - FS_InitFile(p_file); - if (!FS_OpenFileFast(p_file, FS_GetOverlayFileID(p_ovi))) { - return FALSE; - } else { - s32 size = (s32)FSi_GetOverlayBinarySize(p_ovi); - FS_ClearOverlayImage(p_ovi); - if (FS_ReadFile(p_file, FS_GetOverlayAddress(p_ovi), size) != size) { - (void)FS_CloseFile(p_file); - return FALSE; - } - } - (void)FS_CloseFile(p_file); - return TRUE; -} - -#endif - -static BOOL FSi_CompareDigest (const u8 * spec_digest, void * src, int len) { - int i; - u8 digest[FS_OVERLAY_DIGEST_SIZE]; - u8 digest_key[64]; - - MI_CpuClear8(digest, sizeof(digest)); - MI_CpuCopy8(fsi_digest_key_ptr, digest_key, (u32)fsi_digest_key_len); - DGT_Hash2CalcHmac(digest, src, len, digest_key, fsi_digest_key_len); - for (i = 0; i < sizeof(digest); i += sizeof(u32)) { - if (*(const u32 *)(digest + i) != *(const u32 *)(spec_digest + i)) { - break; - } - } - return (i == sizeof(digest)); -} - -void FS_StartOverlay (FSOverlayInfo * p_ovi) { - u32 rare_size = FSi_GetOverlayBinarySize(p_ovi); - -#ifndef SDK_TEG - - if (MB_IsMultiBootChild()) { - BOOL ret = FALSE; - - if ((p_ovi->header.flag & FS_OVERLAY_FLAG_AUTH) != 0) { - const u32 odt_max = - (u32)((SDK_OVERLAY_DIGEST_END - SDK_OVERLAY_DIGEST) / FS_OVERLAY_DIGEST_SIZE); - if (p_ovi->header.id < odt_max) { - const u8 * spec_digest = (SDK_OVERLAY_DIGEST + - FS_OVERLAY_DIGEST_SIZE * p_ovi->header.id); - ret = FSi_CompareDigest(spec_digest, p_ovi->header.ram_address, (int)rare_size); - } - } - if (!ret) { - MI_CpuClear8(p_ovi->header.ram_address, rare_size); - OS_TPanic("FS_StartOverlay() failed! (invalid overlay-segment data)"); - return; - } - } -#endif - -#ifndef SDK_ARM7 - - if ((p_ovi->header.flag & FS_OVERLAY_FLAG_COMP) != 0) { - MIi_UncompressBackward(p_ovi->header.ram_address + rare_size); - } - DC_FlushRange(FS_GetOverlayAddress(p_ovi), FS_GetOverlayImageSize(p_ovi)); -#endif - -#if !defined(SDK_FINALROM) - - (void)_ISDbgLib_RegistOverlayInfo( - (p_ovi->target == MI_PROCESSOR_ARM9) - ? OVERLAYPROC_ARM9 : OVERLAYPROC_ARM7, - (u32)FS_GetOverlayAddress(p_ovi), - p_ovi->file_pos.offset, FS_GetOverlayImageSize(p_ovi) - ); -#endif - - { - FSOverlayInitFunc * p = p_ovi->header.sinit_init; - FSOverlayInitFunc * q = p_ovi->header.sinit_init_end; - for (; p < q; ++p) { - if (*p) { - (**p) (); - } - } - } -} - -void FS_EndOverlay (FSOverlayInfo * p_ovi) { - for (;;) { - MWiDestructorChain * head = NULL, * tail = NULL; - const u32 region_top = (u32)FS_GetOverlayAddress(p_ovi); - const u32 region_bottom = region_top + FS_GetOverlayTotalSize(p_ovi); - - { - OSIntrMode bak_psr = OS_DisableInterrupts(); - MWiDestructorChain * prev = NULL; - MWiDestructorChain * base = __global_destructor_chain; - MWiDestructorChain * p = base; - while (p) { - MWiDestructorChain * next = p->next; - const u32 dtor = (u32)p->dtor; - const u32 obj = (u32)p->obj; - if (((obj == 0) && (dtor >= region_top) && (dtor < region_bottom)) || - ((obj >= region_top) && (obj < region_bottom))) { - if (!tail) { - head = p; - } else { - tail->next = p; - } - if (base == p) { - base = __global_destructor_chain = next; - } - tail = p, p->next = NULL; - if (prev) { - prev->next = next; - } - } else { - prev = p; - } - p = next; - } - (void)OS_RestoreInterrupts(bak_psr); - } - - if (!head) { - break; - } - - do{ - MWiDestructorChain * next = head->next; - if (head->dtor) { - (*head->dtor) (head->obj); - } - head = next; - }while (head); - } - -#if !defined(SDK_FINALROM) - (void)_ISDbgLib_UnregistOverlayInfo( - (p_ovi->target == - MI_PROCESSOR_ARM9) ? OVERLAYPROC_ARM9 : OVERLAYPROC_ARM7, - (u32)FS_GetOverlayAddress(p_ovi), - FS_GetOverlayImageSize(p_ovi) - ); -#endif -} - -BOOL FS_UnloadOverlayImage (FSOverlayInfo * p_ovi) { - FS_EndOverlay(p_ovi); - return TRUE; -} - -#if defined(FS_IMPLEMENT) - -BOOL FS_LoadOverlay (MIProcessor target, FSOverlayID id) { - FS_ASSERT_INIT(FALSE); - - { - FSOverlayInfo ovi; - if (!FS_LoadOverlayInfo(&ovi, target, id) || !FS_LoadOverlayImage(&ovi)) { - return FALSE; - } - FS_StartOverlay(&ovi); - } - return TRUE; -} - -BOOL FS_UnloadOverlay (MIProcessor target, FSOverlayID id) { - FS_ASSERT_INIT(FALSE); - - { - FSOverlayInfo ovi; - if (!FS_LoadOverlayInfo(&ovi, target, id) || !FS_UnloadOverlayImage(&ovi)) { - return FALSE; - } - } - return TRUE; -} - -#else - -static void FSi_ReadRomDirect (const void * src, void * dst, u32 len) { -#if !defined(SDK_TS) - if (src >= (const void *)HW_CTRDG_ROM) { - (void)OS_LockCartridge((u16)fsi_card_lock_id); - MI_CpuCopy32(src, dst, len); - (void)OS_UnlockCartridge((u16)fsi_card_lock_id); - } else -#endif - { - (void)CARD_LockRom((u16)fsi_card_lock_id); - CARD_ReadRom(FS_DMA_NOT_USE, src, dst, len); - (void)CARD_UnlockRom((u16)fsi_card_lock_id); - } -} - -BOOL FS_LoadOverlay (MIProcessor target, FSOverlayID id) { - FS_ASSERT_INIT(FALSE); - - { - const u8 * const base = (const u8 *) - (((OS_GetConsoleType() & OS_CONSOLE_DEV_CARD) != 0) ? 0x00000000 : HW_CTRDG_ROM); - - const CARDRomRegion * fat = CARD_GetRomRegionFAT(); - - const CARDRomRegion * ovt = CARD_GetRomRegionOVT(target); - - FSOverlayInfo ovi; - FSArchiveFAT fat_info; - - u32 pos, index; - - index = (u32)id; - pos = index * sizeof(FSOverlayInfoHeader); - if (pos >= ovt->length) { - return FALSE; - } - FSi_ReadRomDirect(base + ovt->offset + pos, &ovi, sizeof(FSOverlayInfoHeader)); - ovi.target = target; - - index = ovi.header.file_id; - pos = index * sizeof(FSArchiveFAT); - if (pos >= fat->length) { - return FALSE; - } - FSi_ReadRomDirect(base + fat->offset + pos, &fat_info, sizeof(FSArchiveFAT)); - - FS_ClearOverlayImage(&ovi); - FSi_ReadRomDirect( - base + fat_info.top, - ovi.header.ram_address, fat_info.bottom - fat_info.top - ); - - (void)_ISDbgLib_RegistOverlayInfo( - (ovi.target == - MI_PROCESSOR_ARM9) ? OVERLAYPROC_ARM9 : OVERLAYPROC_ARM7, - (u32)FS_GetOverlayAddress(&ovi), - (u32)(base + fat_info.top), FS_GetOverlayImageSize(&ovi) - ); - - FS_StartOverlay(&ovi); - } - - return TRUE; -} - -BOOL FS_UnloadOverlay (MIProcessor target, FSOverlayID id) { - FS_ASSERT_INIT(FALSE); - (void)target; - (void)id; - return TRUE; -} - -#endif - -void FS_AttachOverlayTable (MIProcessor target, const void * ptr, u32 len) { -#ifdef SDK_TS - if ((ptr != NULL) && (target == MI_PROCESSOR_ARM9)) { - int bak_ovt_mode = DGT_SetOverlayTableMode(TRUE); - if (!FSi_CompareDigest((const u8 *)SDK_OVERLAYTABLE_DIGEST, (void *)ptr, (int)len)) { - OS_TPanic("FS_AttachOverlayTable() failed! (invalid overlay-table data)"); - } - (void)DGT_SetOverlayTableMode(bak_ovt_mode); - } -#endif - - { - CARDRomRegion * const pr = (target == MI_PROCESSOR_ARM9) ? &fsi_ovt9 : &fsi_ovt7; - OSIntrMode bak_psr = OS_DisableInterrupts(); - - pr->offset = (u32)ptr; - pr->length = len; - - (void)OS_RestoreInterrupts(bak_psr); - } -} diff --git a/subprojects/NitroSDK/libraries/fs/src/fs_rom.c b/subprojects/NitroSDK/libraries/fs/src/fs_rom.c deleted file mode 100644 index a09e0543cc..0000000000 --- a/subprojects/NitroSDK/libraries/fs/src/fs_rom.c +++ /dev/null @@ -1,155 +0,0 @@ -#include - -#include "include/util.h" -#include "include/rom.h" - -#if defined(FS_IMPLEMENT) - -static u32 fsi_default_dma_no; - -s32 fsi_card_lock_id; - -CARDRomRegion fsi_ovt9; -CARDRomRegion fsi_ovt7; - -FSArchive fsi_arc_rom; - -#endif - -#if defined(FS_IMPLEMENT) - -static void FSi_OnRomReadDone (void * p_arc) { - FS_NotifyArchiveAsyncEnd( - (FSArchive *)p_arc, - CARD_IsPulledOut()? FS_RESULT_ERROR : FS_RESULT_SUCCESS - ); -} - -static FSResult FSi_ReadRomCallback (FSArchive * p_arc, void * dst, u32 src, u32 len) { - CARD_ReadRomAsync(fsi_default_dma_no, (const void *)src, dst, len, FSi_OnRomReadDone, p_arc); - - return FS_RESULT_PROC_ASYNC; -} - -static FSResult FSi_WriteDummyCallback (FSArchive * p_arc, const void * src, u32 dst, u32 len) { - (void)p_arc; - (void)src; - (void)dst; - (void)len; - return FS_RESULT_FAILURE; -} - -static FSResult FSi_RomArchiveProc (FSFile * p_file, FSCommandType cmd) { - (void)p_file; - - switch (cmd) { - case FS_COMMAND_ACTIVATE: - CARD_LockRom((u16)fsi_card_lock_id); - return FS_RESULT_SUCCESS; - - case FS_COMMAND_IDLE: - CARD_UnlockRom((u16)fsi_card_lock_id); - return FS_RESULT_SUCCESS; - - case FS_COMMAND_WRITEFILE: - return FS_RESULT_UNSUPPORTED; - - default: - return FS_RESULT_PROC_UNKNOWN; - } -} - -static FSResult FSi_ReadDummyCallback (FSArchive * p_arc, void * dst, u32 src, u32 len) { - (void)p_arc; - (void)dst; - (void)src; - (void)len; - return FS_RESULT_FAILURE; -} - -static FSResult FSi_EmptyArchiveProc (FSFile * p_file, FSCommandType cmd) { - (void)p_file; - (void)cmd; - return FS_RESULT_UNSUPPORTED; -} - -void FSi_InitRom (u32 default_dma_no) { - fsi_default_dma_no = default_dma_no; - fsi_card_lock_id = OS_GetLockID(); - fsi_ovt9.offset = 0; - fsi_ovt9.length = 0; - fsi_ovt7.offset = 0; - fsi_ovt7.length = 0; - - CARD_Init(); - - FS_InitArchive(&fsi_arc_rom); - (void)FS_RegisterArchiveName(&fsi_arc_rom, "rom", 3); - - if (MB_IsMultiBootChild()) { - fsi_ovt9.offset = (u32) ~0; - fsi_ovt9.length = 0; - fsi_ovt7.offset = (u32) ~0; - fsi_ovt7.length = 0; - - FS_SetArchiveProc(&fsi_arc_rom, FSi_EmptyArchiveProc, (u32)FS_ARCHIVE_PROC_ALL); - (void)FS_LoadArchive( - &fsi_arc_rom, 0x00000000, - 0, 0, 0, 0, FSi_ReadDummyCallback, FSi_WriteDummyCallback - ); - } else { - const CARDRomRegion * const fnt = CARD_GetRomRegionFNT(); - const CARDRomRegion * const fat = CARD_GetRomRegionFAT(); - - FS_SetArchiveProc( - &fsi_arc_rom, FSi_RomArchiveProc, - FS_ARCHIVE_PROC_WRITEFILE | - FS_ARCHIVE_PROC_ACTIVATE | FS_ARCHIVE_PROC_IDLE - ); - - if ((fnt->offset == 0xFFFFFFFF) || (fnt->offset == 0x00000000) || - (fat->offset == 0xFFFFFFFF) || (fat->offset == 0x00000000)) { - OS_Warning("file-system : no MAKEROM-information in rom header."); - } else { - (void)FS_LoadArchive( - &fsi_arc_rom, 0x00000000, - fat->offset, fat->length, - fnt->offset, fnt->length, - FSi_ReadRomCallback, FSi_WriteDummyCallback - ); - } - } -} - -u32 FS_GetDefaultDMA (void) { - return fsi_default_dma_no; -} - -u32 FS_SetDefaultDMA (u32 dma_no) { - FS_ASSERT_DMA_CHANNEL(dma_no, fsi_default_dma_no); - { - OSIntrMode bak_psr = OS_DisableInterrupts(); - u32 bak_dma_no = fsi_default_dma_no; -#if defined(FS_IMPLEMENT) - BOOL bak_stat = FS_SuspendArchive(&fsi_arc_rom); -#endif - fsi_default_dma_no = dma_no; -#if defined(FS_IMPLEMENT) - if (bak_stat) { - (void)FS_ResumeArchive(&fsi_arc_rom); - } -#endif - (void)OS_RestoreInterrupts(bak_psr); - return bak_dma_no; - } -} - -u32 FS_TryLoadTable (void * p_mem, u32 size) { - return FS_LoadArchiveTables(&fsi_arc_rom, p_mem, size); -} - -BOOL FS_CreateFileFromRom (FSFile * p_file, u32 offset, u32 size) { - return FS_OpenFileDirect(p_file, &fsi_arc_rom, offset, offset + size, 0xFFFF); -} - -#endif diff --git a/subprojects/NitroSDK/libraries/fs/src/include/command.h b/subprojects/NitroSDK/libraries/fs/src/include/command.h deleted file mode 100644 index 202743dfe5..0000000000 --- a/subprojects/NitroSDK/libraries/fs/src/include/command.h +++ /dev/null @@ -1,26 +0,0 @@ -#if !defined(NITRO_FS_COMMAND_H_) -#define NITRO_FS_COMMAND_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -extern FSResult(*const (fsi_default_command[])) (FSFile *); -extern FSDirPos current_dir_pos; -int FSi_StrNICmp(const char * str1, const char * str2, u32 len); -BOOL FSi_SendCommand(FSFile * p_file, FSCommandType command); -FSResult FSi_TranslateCommand(FSFile * p_file, FSCommandType command); -void FSi_ReleaseCommand(FSFile * p_file, FSResult ret); -FSFile * FSi_NextCommand(FSArchive * p_arc); -void FSi_ExecuteAsyncCommand(FSFile * p_file); -BOOL FSi_ExecuteSyncCommand(FSFile * p_file); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/libraries/fs/src/include/mw_dtor.h b/subprojects/NitroSDK/libraries/fs/src/include/mw_dtor.h deleted file mode 100644 index 854f20a437..0000000000 --- a/subprojects/NitroSDK/libraries/fs/src/include/mw_dtor.h +++ /dev/null @@ -1,27 +0,0 @@ -#if !defined(NITRO_FS_MW_DTOR_H_) -#define NITRO_FS_MW_DTOR_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef void (* MWI_DESTRUCTOR_FUNC) (void *); - -typedef struct MWiDestructorChain { - struct MWiDestructorChain * next; - MWI_DESTRUCTOR_FUNC dtor; - void * obj; -} MWiDestructorChain; - -extern MWiDestructorChain * __global_destructor_chain; - -void __register_global_object(void * obj, MWI_DESTRUCTOR_FUNC dtor, MWiDestructorChain * chain); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/libraries/fs/src/include/rom.h b/subprojects/NitroSDK/libraries/fs/src/include/rom.h deleted file mode 100644 index ba0ea2b76e..0000000000 --- a/subprojects/NitroSDK/libraries/fs/src/include/rom.h +++ /dev/null @@ -1,30 +0,0 @@ -#if !defined(NITRO_FS_ROM_H_) -#define NITRO_FS_ROM_H_ - -#include -#include -#include -#include - -extern s32 fsi_card_lock_id; - -extern CARDRomRegion fsi_ovt9; -extern CARDRomRegion fsi_ovt7; - -#if defined(FS_IMPLEMENT) - -extern FSArchive fsi_arc_rom; -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -void FSi_InitRom(u32 default_dma_no); -BOOL FSi_LoadOverlayInfoCore(FSOverlayInfo * p_ovi, MIProcessor target, FSOverlayID id, FSArchive * p_arc, u32 offset_arm9, u32 len_arm9, u32 offset_arm7, u32 len_arm7); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/libraries/fs/src/include/util.h b/subprojects/NitroSDK/libraries/fs/src/include/util.h deleted file mode 100644 index 54b914e5a9..0000000000 --- a/subprojects/NitroSDK/libraries/fs/src/include/util.h +++ /dev/null @@ -1,155 +0,0 @@ -#if !defined(NITRO_FS_UTIL_H_) -#define NITRO_FS_UTIL_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#if !defined(SDK_ARM7) || defined(SDK_ARM7FS) -#define FS_IMPLEMENT -#endif - -#define BIT_MASK(n) ((1 << (n)) - 1) -#define ALIGN_MASK(a) ((a) - 1) -#define ALIGN_BYTE(n, a) (((u32)(n) + ALIGN_MASK(a)) & ~ALIGN_MASK(a)) - -#if !defined(SDK_FINALROM) - -extern const char * fsi_assert_fs_format; -extern const char * fsi_assert_is_init; -extern const char * fsi_assert_is_valid_arg; -extern const char * fsi_assert_is_valid_dma_channel; -extern const char * fsi_assert_is_empty; -extern const char * fsi_assert_is_handle; -extern const char * fsi_assert_is_file; -extern const char * fsi_assert_is_dir; -extern const char * fsi_assert_is_idle; -extern const char * fsi_assert_irq_enabled; - -extern const char * fsi_assert_arc_free; -extern const char * fsi_assert_arc_unloaded; -extern const char * fsi_assert_arc_not_rom; - -#define FS_ASSERT_INIT(ret) \ - if (!FS_IsAvailable()) OS_TPanic(fsi_assert_fs_format, fsi_assert_is_init) - -#define FS_ASSERT_ARG(e, ret) \ - if (!(e)) OS_TPanic(fsi_assert_fs_format, fsi_assert_is_valid_arg) - -#define FS_ASSERT_DMA_CHANNEL(dma, ret) \ - if (dma == 0) OS_TPanic(fsi_assert_fs_format, fsi_assert_is_valid_dma_channel) - -#define FS_ASSERT_EMPTY(p_file, ret) \ - if (FS_IsFile(p_file)) OS_TPanic(fsi_assert_fs_format, fsi_assert_is_empty) - -#define FS_ASSERT_HANDLE(p_file, ret) \ - if (!FS_IsFile(p_file) && !FS_IsDir(p_file)) OS_TPanic(fsi_assert_fs_format, fsi_assert_is_handle) - -#define FS_ASSERT_FILE(p_file, ret) \ - if (!FS_IsFile(p_file)) OS_TPanic(fsi_assert_fs_format, fsi_assert_is_file) - -#define FS_ASSERT_DIR(p_file, ret) \ - if (!FS_IsDir(p_file)) OS_TPanic(fsi_assert_fs_format, fsi_assert_is_dir) - -#define FS_ASSERT_IDLE(p_file, ret) \ - if (FS_IsBusy(p_file)) OS_TPanic(fsi_assert_fs_format, fsi_assert_is_idle) - -#define FS_ASSERT_IRQ_ENABLED(ret) \ - if (OS_GetProcMode() == OS_PROCMODE_IRQ) \ - OS_TPanic(fsi_assert_fs_format, fsi_assert_irq_enabled) - -#define FS_ASSERT_ARC_FREE(p_arc, ret) \ - if (p_arc->name.pack) OS_TPanic(fsi_assert_fs_format, fsi_assert_arc_free) - -#define FS_ASSERT_ARC_UNLOADED(p_arc, ret) \ - if (FS_IsArchiveLoaded(p_arc)) OS_TPanic(fsi_assert_fs_format, fsi_assert_arc_unloaded) - -#define FS_ASSERT_ARC_NOT_ROM(p_arc, ret) \ - if (p_arc == arc_list) OS_TPanic(fsi_assert_fs_format, fsi_assert_arc_not_rom) - -#else - -#define FS_ASSERT_INIT(ret) -#define FS_ASSERT_ARG(e, ret) -#define FS_ASSERT_DMA_CHANNEL(dma, ret) - -#define FS_ASSERT_EMPTY(p_file, ret) -#define FS_ASSERT_HANDLE(p_file, ret) -#define FS_ASSERT_FILE(p_file, ret) -#define FS_ASSERT_DIR(p_file, ret) -#define FS_ASSERT_IDLE(p_file, ret) -#define FS_ASSERT_IRQ_ENABLED(ret) - -#define FS_ASSERT_ARC_FREE(p_file, ret) -#define FS_ASSERT_ARC_UNLOADED(p_file, ret) -#define FS_ASSERT_ARC_NOT_ROM(p_file, ret) - -#endif - -#if defined(FS_IMPLEMENT) - -static inline void FSi_CutFromListCore (FSFileLink * trg) { - FSFile * const pr = trg->prev; - FSFile * const nx = trg->next; - if (pr) { - pr->link.next = nx; - } - if (nx) { - nx->link.prev = pr; - } -} - -static inline void FSi_CutFromList (FSFile * elem) { - FSFileLink * const trg = &elem->link; - FSi_CutFromListCore(trg); - trg->next = trg->prev = NULL; -} - -static inline void FSi_AppendToList (FSFile * elem, FSFile * list) { - FSFileLink * const trg = &elem->link; - FSi_CutFromListCore(trg); - { - while (list->link.next) { - list = list->link.next; - } - list->link.next = elem; - trg->prev = list; - trg->next = NULL; - } -} - -#endif - -static inline BOOL FSi_IsSlash (u32 c) { - return (c == '/') || (c == '\\'); -} - -static inline BOOL FSi_IsArchiveRunning (const volatile FSArchive * p_arc) { - return ((p_arc->flag & FS_ARCHIVE_FLAG_RUNNING) != 0); -} - -static inline BOOL FSi_IsArchiveCanceling (const volatile FSArchive * p_arc) { - return ((p_arc->flag & FS_ARCHIVE_FLAG_CANCELING) != 0); -} - -static inline BOOL FSi_IsArchiveSuspending (const volatile FSArchive * p_arc) { - return ((p_arc->flag & FS_ARCHIVE_FLAG_SUSPENDING) != 0); -} - -static inline BOOL FSi_IsArchiveAsync (const volatile FSArchive * p_arc) { - return ((p_arc->flag & FS_ARCHIVE_FLAG_IS_ASYNC) != 0); -} - -static inline BOOL FSi_IsArchiveSync (const volatile FSArchive * p_arc) { - return ((p_arc->flag & FS_ARCHIVE_FLAG_IS_SYNC) != 0); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/libraries/fx/meson.build b/subprojects/NitroSDK/libraries/fx/meson.build deleted file mode 100644 index fe05d2f54d..0000000000 --- a/subprojects/NitroSDK/libraries/fx/meson.build +++ /dev/null @@ -1,22 +0,0 @@ -libfx_srcs = files( - 'src/fx_sincos.c', - 'src/fx_mtx22.c', - 'src/fx_mtx33.c', - 'src/fx_mtx43.c', - 'src/fx_mtx44.c', - 'src/fx_cp.c', - 'src/fx_vec.c', - 'src/fx_trig.c', - 'src/fx_atanidx.c', - 'src/fx.c' -) - -libfx = static_library('fx', - sources: [libfx_srcs, fx_const_h], - c_args: [c_args, sdk_args], - include_directories: [public_includes], - c_pch: nitro_pch, - pic: false -) - -nitrosdk_libs += libfx diff --git a/subprojects/NitroSDK/libraries/fx/src/fx.c b/subprojects/NitroSDK/libraries/fx/src/fx.c deleted file mode 100644 index 92168ac743..0000000000 --- a/subprojects/NitroSDK/libraries/fx/src/fx.c +++ /dev/null @@ -1,104 +0,0 @@ -#include -#include -#include - -#ifdef __MWERKS__ -# if !defined(_MSL_USE_INLINE) && __option(dont_inline) -# define _MSL_USE_INLINE 0 -# endif -#endif - -#include - -#define SDK_FX_INIT_2PI (4096 * 2) -#define SDK_FX_INIT_PI_2 (4096 * 2 / 4) -#define SDK_FX_INIT_PI (4096 * 2 / 2) - -void FX_Init () { - SDK_ASSERT(2 == sizeof(fx16)); - SDK_ASSERT(4 == sizeof(fx32)); - SDK_ASSERT(8 == sizeof(fx64)); - SDK_ASSERT(8 == sizeof(fx64c)); - SDK_ASSERT(6 == sizeof(VecFx16)); - SDK_ASSERT(12 == sizeof(VecFx32)); - - SDK_ASSERT(64 == sizeof(MtxFx44)); - SDK_ASSERT(48 == sizeof(MtxFx43)); - SDK_ASSERT(36 == sizeof(MtxFx33)); - SDK_ASSERT(16 == sizeof(MtxFx22)); - -#ifdef SDK_FX_DYNAMIC_TABLE -#if 1 - - fx64c idx, ss; - fx32 rad; - fx16 s; - int i; - - for (idx = 0, i = 0; i <= 4096 / 4; idx += (FX64C_TWOPI_65536 * (65536 / 4096)), ++i) { - rad = (fx32)((idx + 0x80000LL) >> 20); - ss = FX_SinFx64c(rad); - s = (fx16)((ss + 0x80000LL) >> 20); - - FX_SinCosTable_[i * 2] = s; - if (i != 0) { - FX_SinCosTable_[SDK_FX_INIT_2PI - i * 2] = (fx16) - s; - } - FX_SinCosTable_[SDK_FX_INIT_PI - i * 2] = s; - FX_SinCosTable_[SDK_FX_INIT_PI + i * 2] = (fx16) - s; - } - - FX_SinCosTable_[1] = FX16_ONE; - - for (i = 1; i <= SDK_FX_INIT_PI_2; ++i) { - FX_SinCosTable_[i * 2 + 1] = FX_SinCosTable_[SDK_FX_INIT_PI_2 + i * 2]; - FX_SinCosTable_[SDK_FX_INIT_2PI - i * 2 + 1] = FX_SinCosTable_[i * 2 + 1]; - } -#else - - int i; - f32 rad; - fx16 s; - for (i = 0; i <= 4096 / 4; ++i) { - rad = (f32)((3.14159265358979323846 * 2 / 4096) * i); - s = (fx16)FX_F32_TO_FX32(sinf(rad)); - FX_SinCosTable_[i * 2] = s; - if (i != 0) { - FX_SinCosTable_[SDK_FX_INIT_2PI - i * 2] = (fx16) - s; - } - FX_SinCosTable_[SDK_FX_INIT_PI - i * 2] = s; - FX_SinCosTable_[SDK_FX_INIT_PI + i * 2] = (fx16) - s; - } - - FX_SinCosTable_[1] = FX16_ONE; - - for (i = 1; i <= SDK_FX_INIT_PI_2; ++i) { - FX_SinCosTable_[i * 2 + 1] = FX_SinCosTable_[SDK_FX_INIT_PI_2 + i * 2]; - FX_SinCosTable_[SDK_FX_INIT_2PI - i * 2 + 1] = FX_SinCosTable_[i * 2 + 1]; - } -#endif -#endif -} - -#include - -fx32 FX_MulFunc (fx32 v1, fx32 v2) { - return FX32_CAST(((s64)(v1) * v2 + 0x800LL) >> FX32_SHIFT); -} - -fx32 FX_Mul32x64cFunc (fx32 v32, fx64c v64c) { - fx64c tmp = v64c * v32 + 0x80000000LL; - return FX32_CAST(tmp >> FX64C_SHIFT); -} - -#include - -fx32 FX_Modf (fx32 x, fx32 * iPtr) { - if (x >= 0) { - *iPtr = (x & FX32_INT_MASK); - return (x & FX32_DEC_MASK); - } else { - *iPtr = -((-x) & FX32_INT_MASK); - return -((-x) & FX32_DEC_MASK); - } -} diff --git a/subprojects/NitroSDK/libraries/fx/src/fx_atanidx.c b/subprojects/NitroSDK/libraries/fx/src/fx_atanidx.c deleted file mode 100644 index f8e616bac6..0000000000 --- a/subprojects/NitroSDK/libraries/fx/src/fx_atanidx.c +++ /dev/null @@ -1,245 +0,0 @@ -#include -#include -#include - -const fx16 FX_AtanIdxTable_[128 + 1] = { - (u16)0, - (u16)81, - (u16)163, - (u16)244, - (u16)326, - (u16)407, - (u16)489, - (u16)570, - (u16)651, - (u16)732, - (u16)813, - (u16)894, - (u16)975, - (u16)1056, - (u16)1136, - (u16)1217, - (u16)1297, - (u16)1377, - (u16)1457, - (u16)1537, - (u16)1617, - (u16)1696, - (u16)1775, - (u16)1854, - (u16)1933, - (u16)2012, - (u16)2090, - (u16)2168, - (u16)2246, - (u16)2324, - (u16)2401, - (u16)2478, - (u16)2555, - (u16)2632, - (u16)2708, - (u16)2784, - (u16)2860, - (u16)2935, - (u16)3010, - (u16)3085, - (u16)3159, - (u16)3233, - (u16)3307, - (u16)3380, - (u16)3453, - (u16)3526, - (u16)3599, - (u16)3670, - (u16)3742, - (u16)3813, - (u16)3884, - (u16)3955, - (u16)4025, - (u16)4095, - (u16)4164, - (u16)4233, - (u16)4302, - (u16)4370, - (u16)4438, - (u16)4505, - (u16)4572, - (u16)4639, - (u16)4705, - (u16)4771, - (u16)4836, - (u16)4901, - (u16)4966, - (u16)5030, - (u16)5094, - (u16)5157, - (u16)5220, - (u16)5282, - (u16)5344, - (u16)5406, - (u16)5467, - (u16)5528, - (u16)5589, - (u16)5649, - (u16)5708, - (u16)5768, - (u16)5826, - (u16)5885, - (u16)5943, - (u16)6000, - (u16)6058, - (u16)6114, - (u16)6171, - (u16)6227, - (u16)6282, - (u16)6337, - (u16)6392, - (u16)6446, - (u16)6500, - (u16)6554, - (u16)6607, - (u16)6660, - (u16)6712, - (u16)6764, - (u16)6815, - (u16)6867, - (u16)6917, - (u16)6968, - (u16)7018, - (u16)7068, - (u16)7117, - (u16)7166, - (u16)7214, - (u16)7262, - (u16)7310, - (u16)7358, - (u16)7405, - (u16)7451, - (u16)7498, - (u16)7544, - (u16)7589, - (u16)7635, - (u16)7679, - (u16)7724, - (u16)7768, - (u16)7812, - (u16)7856, - (u16)7899, - (u16)7942, - (u16)7984, - (u16)8026, - (u16)8068, - (u16)8110, - (u16)8151, - (u16)8192 -}; - -u16 FX_AtanIdx (fx32 x) { - if (x >= 0) { - if (x > FX32_ONE) { - return (u16)(16384 - FX_AtanIdxTable_[FX_Inv(x) >> 5]); - } else if (x < FX32_ONE) { - return (u16)FX_AtanIdxTable_[x >> 5]; - } else { - return (u16)8192; - } - } else { - if (x < -FX32_ONE) { - return (u16)(-16384 + FX_AtanIdxTable_[FX_Inv(-x) >> 5]); - } else if (x > -FX32_ONE) { - return (u16) - FX_AtanIdxTable_[-x >> 5]; - } else { - return (u16) - 8192; - } - } -} - -u16 FX_Atan2Idx (fx32 y, fx32 x) { - fx32 a, b; - int c; - int sgn; - - if (y > 0) { - if (x > 0) { - if (x > y) { - a = y; - b = x; - c = 0; - sgn = 1; - } else if (x < y) { - a = x; - b = y; - c = 16384; - sgn = 0; - } else { - return (u16)8192; - } - } else if (x < 0) { - x = -x; - if (x < y) { - a = x; - b = y; - c = 16384; - sgn = 1; - } else if (x > y) { - a = y; - b = x; - c = 32768; - sgn = 0; - } else { - return (u16)24576; - } - } else { - return (u16)16384; - } - } else if (y < 0) { - y = -y; - if (x < 0) { - x = -x; - if (x > y) { - a = y; - b = x; - c = -32768; - sgn = 1; - } else if (x < y) { - a = x; - b = y; - c = -16384; - sgn = 0; - } else { - return (u16) - 24576; - } - } else if (x > 0) { - if (x < y) { - a = x; - b = y; - c = -16384; - sgn = 1; - } else if (x > y) { - a = y; - b = x; - c = 0; - sgn = 0; - } else { - return (u16) - 8192; - } - } else { - return (u16) - 16384; - } - } else { - if (x >= 0) { - return 0; - } else { - return (u16)32768; - } - } - - if (b == 0) { - return 0; - } - if (sgn) { - return (u16)(c + FX_AtanIdxTable_[FX_Div(a, b) >> 5]); - } else { - return (u16)(c - FX_AtanIdxTable_[FX_Div(a, b) >> 5]); - } -} diff --git a/subprojects/NitroSDK/libraries/fx/src/fx_cp.c b/subprojects/NitroSDK/libraries/fx/src/fx_cp.c deleted file mode 100644 index 6dd6eecb10..0000000000 --- a/subprojects/NitroSDK/libraries/fx/src/fx_cp.c +++ /dev/null @@ -1,119 +0,0 @@ -#include -#include -#include - -#define FX_DIV_SHIFT (32 - FX32_SHIFT) -#define FX_DIV_1_2 (1 << (FX_DIV_SHIFT - 1)) - -#define FX_SQRT_SHIFT ((32 + FX32_SHIFT) / 2 - FX32_SHIFT) -#define FX_SQRT_1_2 (1 << (FX_SQRT_SHIFT - 1)) - -#define FX_INVSQRT_SHIFT \ - (FX64C_SHIFT + ((32 + FX32_SHIFT) / 2 - FX32_SHIFT)) -#define FX_INVSQRT_1_2 (1LL << (FX_INVSQRT_SHIFT - 1)) - -fx32 FX_Div (fx32 numer, fx32 denom) { - FX_DivAsync(numer, denom); - return FX_GetDivResult(); -} - -fx64c FX_DivFx64c (fx32 numer, fx32 denom) { - FX_DivAsync(numer, denom); - return (fx64c)CP_GetDivResult64(); -} - -fx32 FX_Inv (fx32 denom) { - FX_InvAsync(denom); - return FX_GetDivResult(); -} - -fx64c FX_InvFx64c (fx32 denom) { - FX_InvAsync(denom); - return (fx64c)CP_GetDivResult64(); -} - -fx32 FX_Sqrt (fx32 x) { - SDK_ASSERT(!CP_IsSqrtBusy()); - if (x > 0) { - CP_SetSqrt64((u64)x << 32); - return FX_GetSqrtResult(); - } else { - return 0; - } -} - -fx32 FX_InvSqrt (fx32 x) { - if (x > 0) { - fx64c inv_x; - s64 sqrt_x; - s64 tmp; - - FX_InvAsync(x); - FX_SqrtAsync(x); - - inv_x = FX_GetInvResultFx64c(); - sqrt_x = CP_GetSqrtResult32(); - tmp = inv_x * sqrt_x; - return (fx32)((tmp + FX_INVSQRT_1_2) >> FX_INVSQRT_SHIFT); - } else { - return 0; - } -} - -fx64c FX_GetDivResultFx64c (void) { - return (fx64c)CP_GetDivResult64(); -} - -fx32 FX_GetDivResult (void) { - return (fx32)((CP_GetDivResult64() + FX_DIV_1_2) >> FX_DIV_SHIFT); -} - -void FX_InvAsync (fx32 denom) { - SDK_ASSERT(!CP_IsDivBusy()); - FX_DIVISION_BY_ZERO(FX32_ONE, denom); - - CP_SetDiv64_32((u64)FX32_ONE << 32, (u32)denom); -} - -void FX_SqrtAsync (fx32 x) { - SDK_ASSERT(!CP_IsSqrtBusy()); - if (x > 0) { - CP_SetSqrt64((u64)x << 32); - } else { - CP_SetSqrt64(0); - } -} - -void FX_SqrtAsyncImm (fx32 x) { - SDK_ASSERT(!CP_IsSqrtBusy()); - if (x > 0) { - CP_SetSqrtImm64((u64)x << 32); - } else { - CP_SetSqrtImm64(0); - } -} - -fx32 FX_GetSqrtResult (void) { - return (fx32)((CP_GetSqrtResult32() + FX_SQRT_1_2) >> FX_SQRT_SHIFT); -} - -void FX_DivAsync (fx32 numer, fx32 denom) { - SDK_ASSERT(!CP_IsDivBusy()); - FX_DIVISION_BY_ZERO(numer, denom); - - CP_SetDiv64_32((u64)numer << 32, (u32)denom); -} - -s32 FX_DivS32 (s32 a, s32 b) { - SDK_ASSERT(!CP_IsDivBusy()); - FX_DIVISION_BY_ZERO(a, b); - CP_SetDiv32_32((u32)a, (u32)b); - return CP_GetDivResult32(); -} - -s32 FX_ModS32 (s32 a, s32 b) { - SDK_ASSERT(!CP_IsDivBusy()); - FX_DIVISION_BY_ZERO(a, b); - CP_SetDiv32_32((u32)a, (u32)b); - return CP_GetDivRemainder32(); -} diff --git a/subprojects/NitroSDK/libraries/fx/src/fx_mtx22.c b/subprojects/NitroSDK/libraries/fx/src/fx_mtx22.c deleted file mode 100644 index f956cfdeba..0000000000 --- a/subprojects/NitroSDK/libraries/fx/src/fx_mtx22.c +++ /dev/null @@ -1,133 +0,0 @@ -#include -#include -#include - -inline fx32 mul64 (fx64 x, fx32 y) { - return (fx32)((x * y) >> FX32_SHIFT); -} - -#include - -asm void MTX_Identity22_ (register MtxFx22 * pDst) { - mov r1, #0 - mov r2, #4096 - mov r3, #0 - stmia r0 !, {r2, r3} - stmia r0 !, {r1, r2} - bx lr -} - -asm void MTX_Transpose22_ (const register MtxFx22 * pSrc, register MtxFx22 * pDst) { - stmfd sp !, {r4} - ldmia r0, {r2 - r4, r12} - stmia r1 !, {r2, r4} - stmia r1 !, {r3, r12} - ldmfd sp !, {r4} - bx lr -} - -#include - -asm void MTX_Scale22_ (register MtxFx22 * pDst, register fx32 x, register fx32 y) { - stmia r0 !, {r1} - mov r1, #0 - str r2, [r0, #8] - mov r2, #0 - stmia r0 !, {r1, r2} - bx lr -} - -asm void MTX_Rot22_ (register MtxFx22 * pDst, register fx32 sinVal, register fx32 cosVal) { - str r2, [r0, #0] - str r1, [r0, #4] - neg r1, r1 - str r1, [r0, #8] - str r2, [r0, #12] - bx lr -} - -#include - -void MTX_ScaleApply22 (const MtxFx22 * pSrc, MtxFx22 * pDst, fx32 x, fx32 y) { - fx64 v; - - SDK_NULL_ASSERT(pSrc); - SDK_NULL_ASSERT(pDst); - - v = (fx64)x; - pDst->_00 = mul64(v, pSrc->_00); - pDst->_01 = mul64(v, pSrc->_01); - - v = (fx64)y; - pDst->_10 = mul64(v, pSrc->_10); - pDst->_11 = mul64(v, pSrc->_11); -} - -int MTX_Inverse22 (const MtxFx22 * pSrc, MtxFx22 * pDst) { - MtxFx22 tmp; - MtxFx22 * p; - fx32 det; - - SDK_NULL_ASSERT(pSrc); - SDK_NULL_ASSERT(pDst); - - if (pSrc == pDst) { - p = &tmp; - } else { - p = pDst; - } - - det = (fx32)(((fx64)pSrc->_00 * pSrc->_11 - - (fx64)pSrc->_01 * pSrc->_10 + (fx64)(FX32_ONE >> 1)) >> FX32_SHIFT); - - if (0 == det) { - return -1; - } - - FX_InvAsync(det); - - det = FX_GetDivResult(); - - p->_00 = (fx32)(((fx64)det * pSrc->_11) >> FX32_SHIFT); - p->_01 = -(fx32)(((fx64)det * pSrc->_01) >> FX32_SHIFT); - - p->_10 = -(fx32)(((fx64)det * pSrc->_10) >> FX32_SHIFT); - p->_11 = (fx32)(((fx64)det * pSrc->_00) >> FX32_SHIFT); - - if (p == &tmp) { - MI_Copy16B(&tmp, pDst); - } - return 0; -} - -void MTX_Concat22 (const MtxFx22 * a, const MtxFx22 * b, MtxFx22 * ab) { - MtxFx22 tmp; - MtxFx22 * p; - - register fx32 x, y; - - SDK_NULL_ASSERT(a); - SDK_NULL_ASSERT(b); - SDK_NULL_ASSERT(ab); - - if (ab == b) { - p = &tmp; - } else { - p = ab; - } - - x = a->_00; - y = a->_01; - - p->_00 = (fx32)(((fx64)x * b->_00 + (fx64)y * b->_10) >> FX32_SHIFT); - p->_01 = (fx32)(((fx64)x * b->_01 + (fx64)y * b->_11) >> FX32_SHIFT); - - x = a->_10; - y = a->_11; - p->_10 = (fx32)(((fx64)x * b->_00 + (fx64)y * b->_10) >> FX32_SHIFT); - p->_11 = (fx32)(((fx64)x * b->_01 + (fx64)y * b->_11) >> FX32_SHIFT); - - if (p == &tmp) { - *ab = tmp; - } -} diff --git a/subprojects/NitroSDK/libraries/fx/src/fx_mtx33.c b/subprojects/NitroSDK/libraries/fx/src/fx_mtx33.c deleted file mode 100644 index 1669b526f5..0000000000 --- a/subprojects/NitroSDK/libraries/fx/src/fx_mtx33.c +++ /dev/null @@ -1,331 +0,0 @@ -#include -#include -#include -#include - -inline fx32 mul64 (fx64 x, fx32 y) { - return (fx32)((x * y) >> FX32_SHIFT); -} - -asm void MTX_Identity33_ (register MtxFx33 * pDst) { - mov r2, #4096 - str r2, [r0, #32] - mov r3, #0 - stmia r0 !, {r2, r3} - mov r1, #0 - stmia r0 !, {r1, r3} - stmia r0 !, {r2, r3} - stmia r0 !, {r1, r3} - bx lr -} - -asm void MTX_Copy33To43_ (const register MtxFx33 * pSrc, register MtxFx43 * pDst) { - ldmia r0 !, {r2 - r3, r12} - stmia r1 !, {r2 - r3, r12} - ldmia r0 !, {r2 - r3, r12} - stmia r1 !, {r2 - r3, r12} - ldmia r0 !, {r2 - r3, r12} - stmia r1 !, {r2 - r3, r12} - mov r2, #0 - str r2, [r1, #0] - str r2, [r1, #4] - str r2, [r1, #8] - bx lr -} - -asm void MTX_Copy33To44_ (const register MtxFx33 * pSrc, register MtxFx44 * pDst) { - stmfd sp !, {r4} - mov r12, #0 - ldmia r0 !, {r2 - r4} - stmia r1 !, {r2 - r4, r12} - ldmia r0 !, {r2 - r4} - stmia r1 !, {r2 - r4, r12} - ldmia r0 !, {r2 - r4} - stmia r1 !, {r2 - r4, r12} - mov r2, #4096 - str r12, [r1, #0] - str r12, [r1, #4] - str r12, [r1, #8] - str r2, [r1, #12] - ldmfd sp !, {r4} - bx lr -} - -asm void MTX_Transpose33_ (const register MtxFx33 * pSrc, register MtxFx33 * pDst) { - stmfd sp !, {r4 - r9} - ldmia r0, {r2 - r9, r12} - stmia r1 !, {r2, r5, r8} - stmia r1 !, {r3, r6, r9} - stmia r1 !, {r4, r7, r12} - ldmfd sp !, {r4 - r9} - bx lr -} - -#include - -asm void MTX_Scale33_ (register MtxFx33 * pDst, register fx32 x, register fx32 y, register fx32 z) { - stmia r0 !, {r1} - mov r1, #0 - str r3, [r0, #28] - mov r3, #0 - stmia r0 !, {r1, r3} - stmia r0 !, {r1, r2, r3} - mov r2, #0 - stmia r0 !, {r1, r3} - bx lr -} - -#include - -void MTX_ScaleApply33 (const MtxFx33 * pSrc, MtxFx33 * pDst, fx32 x, fx32 y, fx32 z) { - fx64 v; - - SDK_NULL_ASSERT(pSrc); - SDK_NULL_ASSERT(pDst); - - v = (fx64)x; - pDst->_00 = mul64(v, pSrc->_00); - pDst->_01 = mul64(v, pSrc->_01); - pDst->_02 = mul64(v, pSrc->_02); - - v = (fx64)y; - pDst->_10 = mul64(v, pSrc->_10); - pDst->_11 = mul64(v, pSrc->_11); - pDst->_12 = mul64(v, pSrc->_12); - - v = (fx64)z; - pDst->_20 = mul64(v, pSrc->_20); - pDst->_21 = mul64(v, pSrc->_21); - pDst->_22 = mul64(v, pSrc->_22); -} - -#include -asm void MTX_RotX33_ (register MtxFx33 * pDst, register fx32 sinVal, register fx32 cosVal) { - mov r3, #1 - lsl r3, r3, #12 - str r3, [r0, #0] - mov r3, #0 - str r3, [r0, #4] - str r3, [r0, #8] - str r3, [r0, #12] - str r2, [r0, #16] - str r1, [r0, #20] - str r3, [r0, #24] - neg r1, r1 - str r1, [r0, #28] - str r2, [r0, #32] - bx lr -} - -#include -#include - -asm void MTX_RotY33_ (register MtxFx33 * pDst, register fx32 sinVal, register fx32 cosVal) { - str r2, [r0, #0] - str r2, [r0, #32] - mov r3, #0 - str r3, [r0, #4] - str r3, [r0, #12] - str r3, [r0, #20] - str r3, [r0, #28] - neg r2, r1 - mov r3, #1 - lsl r3, r3, #12 - str r1, [r0, #24] - str r2, [r0, #8] - str r3, [r0, #16] - bx lr -} - -#include -#include - -asm void MTX_RotZ33_ (register MtxFx33 * pDst, register fx32 sinVal, register fx32 cosVal) { - stmia r0 !, {r2} - mov r3, #0 - stmia r0 !, {r1, r3} - neg r1, r1 - stmia r0 !, {r1, r2} - mov r1, #1 - lsl r1, r1, #12 - str r3, [r0, #0] - str r3, [r0, #4] - str r3, [r0, #8] - str r1, [r0, #12] - bx lr -} - -#include - -void MTX_RotAxis33 (MtxFx33 * pDst, const VecFx32 * vec, fx32 sinVal, fx32 cosVal) { - fx64 t, ss, cc, xx, yy, zz; - fx32 t01; - fx32 s2; - SDK_NULL_ASSERT(pDst); - SDK_NULL_ASSERT(vec); - - t = (fx64)(FX32_ONE - (fx32)cosVal); - ss = (fx64)sinVal; - cc = (fx64)cosVal; - xx = (fx64)vec->x; - yy = (fx64)vec->y; - zz = (fx64)vec->z; - - t01 = (fx32)((xx * xx * t) >> (FX64_SHIFT + FX64_SHIFT)); - pDst->_00 = t01 + cosVal; - - t01 = (fx32)((yy * yy * t) >> (FX64_SHIFT + FX64_SHIFT)); - pDst->_11 = t01 + cosVal; - - t01 = (fx32)((zz * zz * t) >> (FX64_SHIFT + FX64_SHIFT)); - pDst->_22 = t01 + cosVal; - - t01 = (fx32)((t * xx * yy) >> (FX64_SHIFT + FX64_SHIFT)); - s2 = (fx32)((ss * zz) >> FX64_SHIFT); - pDst->_01 = t01 + s2; - pDst->_10 = t01 - s2; - - t01 = (fx32)((t * xx * zz) >> (FX64_SHIFT + FX64_SHIFT)); - s2 = (fx32)((ss * yy) >> FX64_SHIFT); - pDst->_02 = t01 - s2; - pDst->_20 = t01 + s2; - - t01 = (fx32)((t * yy * zz) >> (FX64_SHIFT + FX64_SHIFT)); - s2 = (fx32)((ss * xx) >> FX64_SHIFT); - pDst->_12 = t01 + s2; - pDst->_21 = t01 - s2; -} - -int MTX_Inverse33 (const MtxFx33 * pSrc, MtxFx33 * pDst) { - MtxFx33 tmp; - MtxFx33 * p; - fx32 det; - fx32 det00, det10, det20; - fx32 tmp01, tmp02, tmp11, tmp12; - fx32 tmp21, tmp22; - - SDK_NULL_ASSERT(pSrc); - SDK_NULL_ASSERT(pDst); - - if (pSrc == pDst) { - p = &tmp; - } else { - p = pDst; - } - - det00 = (fx32)(((fx64)pSrc->_11 * pSrc->_22 - - (fx64)pSrc->_12 * pSrc->_21 + (fx64)(FX32_ONE >> 1)) >> FX32_SHIFT); - det10 = (fx32)(((fx64)pSrc->_10 * pSrc->_22 - - (fx64)pSrc->_12 * pSrc->_20 + (fx64)(FX32_ONE >> 1)) >> FX32_SHIFT); - det20 = (fx32)(((fx64)pSrc->_10 * pSrc->_21 - - (fx64)pSrc->_11 * pSrc->_20 + (fx64)(FX32_ONE >> 1)) >> FX32_SHIFT); - - det = (fx32)(((fx64)pSrc->_00 * det00 - - (fx64)pSrc->_01 * det10 + - (fx64)pSrc->_02 * det20 + (fx64)(FX32_ONE >> 1)) >> FX32_SHIFT); - if (0 == det) { - return -1; - } - - FX_InvAsync(det); - - tmp01 = (fx32)(((fx64)pSrc->_01 * pSrc->_22 - (fx64)pSrc->_21 * pSrc->_02) >> FX32_SHIFT); - tmp02 = (fx32)(((fx64)pSrc->_01 * pSrc->_12 - (fx64)pSrc->_11 * pSrc->_02) >> FX32_SHIFT); - tmp11 = (fx32)(((fx64)pSrc->_00 * pSrc->_22 - (fx64)pSrc->_20 * pSrc->_02) >> FX32_SHIFT); - tmp12 = (fx32)(((fx64)pSrc->_00 * pSrc->_12 - (fx64)pSrc->_10 * pSrc->_02) >> FX32_SHIFT); - - det = FX_GetDivResult(); - p->_00 = (fx32)(((fx64)det * det00) >> FX32_SHIFT); - p->_01 = -(fx32)(((fx64)det * tmp01) >> FX32_SHIFT); - p->_02 = (fx32)(((fx64)det * tmp02) >> FX32_SHIFT); - - p->_10 = -(fx32)(((fx64)det * det10) >> FX32_SHIFT); - p->_11 = (fx32)(((fx64)det * tmp11) >> FX32_SHIFT); - p->_12 = -(fx32)(((fx64)det * tmp12) >> FX32_SHIFT); - - p->_20 = (fx32)(((fx64)det * det20) >> FX32_SHIFT); - - tmp21 = (fx32)(((fx64)pSrc->_00 * pSrc->_21 - (fx64)pSrc->_20 * pSrc->_01) >> FX32_SHIFT); - p->_21 = -(fx32)(((fx64)det * tmp21) >> FX32_SHIFT); - - tmp22 = (fx32)(((fx64)pSrc->_00 * pSrc->_11 - (fx64)pSrc->_10 * pSrc->_01) >> FX32_SHIFT); - p->_22 = (fx32)(((fx64)det * tmp22) >> FX32_SHIFT); - - if (p == &tmp) { - MI_Copy36B(&tmp, pDst); - } - return 0; -} - -void MTX_Concat33 (const MtxFx33 * a, const MtxFx33 * b, MtxFx33 * ab) { - MtxFx33 tmp; - MtxFx33 * p; - - register fx32 x, y, z; - register fx32 xx, yy, zz; - - SDK_NULL_ASSERT(a); - SDK_NULL_ASSERT(b); - SDK_NULL_ASSERT(ab); - - if (ab == b) { - p = &tmp; - } else { - p = ab; - } - - x = a->_00; - y = a->_01; - z = a->_02; - - p->_00 = (fx32)(((fx64)x * b->_00 + (fx64)y * b->_10 + (fx64)z * b->_20) >> FX32_SHIFT); - p->_01 = (fx32)(((fx64)x * b->_01 + (fx64)y * b->_11 + (fx64)z * b->_21) >> FX32_SHIFT); - - xx = b->_02; - yy = b->_12; - zz = b->_22; - - p->_02 = (fx32)(((fx64)x * xx + (fx64)y * yy + (fx64)z * zz) >> FX32_SHIFT); - - x = a->_10; - y = a->_11; - z = a->_12; - - p->_12 = (fx32)(((fx64)x * xx + (fx64)y * yy + (fx64)z * zz) >> FX32_SHIFT); - p->_11 = (fx32)(((fx64)x * b->_01 + (fx64)y * b->_11 + (fx64)z * b->_21) >> FX32_SHIFT); - - xx = b->_00; - yy = b->_10; - zz = b->_20; - - p->_10 = (fx32)(((fx64)x * xx + (fx64)y * yy + (fx64)z * zz) >> FX32_SHIFT); - - x = a->_20; - y = a->_21; - z = a->_22; - - p->_20 = (fx32)(((fx64)x * xx + (fx64)y * yy + (fx64)z * zz) >> FX32_SHIFT); - p->_21 = (fx32)(((fx64)x * b->_01 + (fx64)y * b->_11 + (fx64)z * b->_21) >> FX32_SHIFT); - p->_22 = (fx32)(((fx64)x * b->_02 + (fx64)y * b->_12 + (fx64)z * b->_22) >> FX32_SHIFT); - - if (p == &tmp) { - *ab = tmp; - } -} - -void MTX_MultVec33 (const VecFx32 * vec, const MtxFx33 * m, VecFx32 * dst) { - register fx32 x, y, z; - SDK_NULL_ASSERT(vec); - SDK_NULL_ASSERT(m); - SDK_NULL_ASSERT(dst); - - x = vec->x; - y = vec->y; - z = vec->z; - - dst->x = (fx32)(((fx64)x * m->_00 + (fx64)y * m->_10 + (fx64)z * m->_20) >> FX32_SHIFT); - dst->y = (fx32)(((fx64)x * m->_01 + (fx64)y * m->_11 + (fx64)z * m->_21) >> FX32_SHIFT); - dst->z = (fx32)(((fx64)x * m->_02 + (fx64)y * m->_12 + (fx64)z * m->_22) >> FX32_SHIFT); -} - -#include diff --git a/subprojects/NitroSDK/libraries/fx/src/fx_mtx43.c b/subprojects/NitroSDK/libraries/fx/src/fx_mtx43.c deleted file mode 100644 index 71ca170902..0000000000 --- a/subprojects/NitroSDK/libraries/fx/src/fx_mtx43.c +++ /dev/null @@ -1,350 +0,0 @@ -#include -#include -#include -#include -#include -#include - -asm void MTX_Identity43_ (register MtxFx43 * pDst) { - mov r2, #4096 - mov r3, #0 - stmia r0 !, {r2, r3} - mov r1, #0 - stmia r0 !, {r1, r3} - stmia r0 !, {r2, r3} - stmia r0 !, {r1, r3} - stmia r0 !, {r2, r3} - stmia r0 !, {r1, r3} - bx lr -} - -asm void MTX_Copy43To44_ (register const MtxFx43 * pSrc, register MtxFx44 * pDst) { - stmfd sp !, {r4} - mov r12, #0 - ldmia r0 !, {r2 - r4} - stmia r1 !, {r2 - r4, r12} - ldmia r0 !, {r2 - r4} - stmia r1 !, {r2 - r4, r12} - ldmia r0 !, {r2 - r4} - stmia r1 !, {r2 - r4, r12} - mov r12, #4096 - ldmia r0 !, {r2 - r4} - stmia r1 !, {r2 - r4, r12} - ldmfd sp !, {r4} - bx lr -} - -asm void MTX_Transpose43_ (register const MtxFx43 * pSrc, register MtxFx43 * pDst) { - stmfd sp !, {r4 - r9} - ldmia r0, {r2 - r9, r12} - stmia r1 !, {r2, r5, r8} - stmia r1 !, {r3, r6, r9} - stmia r1 !, {r4, r7, r12} - mov r0, #0 - str r0, [r1, #0] - str r0, [r1, #4] - str r0, [r1, #8] - ldmfd sp !, {r4 - r9} - bx lr -} - -void MTX_TransApply43 (const MtxFx43 * pSrc, MtxFx43 * pDst, fx32 x, fx32 y, fx32 z) { - SDK_NULL_ASSERT(pSrc); - SDK_NULL_ASSERT(pDst); - - if (pSrc != pDst) { - MI_Copy36B(pSrc, pDst); - } - { - fx64 xx = x; - fx64 yy = y; - fx64 zz = z; - - pDst->_30 = pSrc->_30 + (fx32)((xx * pSrc->_00 + yy * pSrc->_10 + zz * pSrc->_20) >> FX32_SHIFT); - pDst->_31 = pSrc->_31 + (fx32)((xx * pSrc->_01 + yy * pSrc->_11 + zz * pSrc->_21) >> FX32_SHIFT); - pDst->_32 = pSrc->_32 + (fx32)((xx * pSrc->_02 + yy * pSrc->_12 + zz * pSrc->_22) >> FX32_SHIFT); - } -} - -#include - -asm void MTX_Scale43_ (register MtxFx43 * pDst, register fx32 x, register fx32 y, register fx32 z) { - stmia r0 !, {r1} - mov r1, #0 - str r3, [r0, #28] - mov r3, #0 - stmia r0 !, {r1, r3} - stmia r0 !, {r1, r2, r3} - mov r2, #0 - stmia r0 !, {r1, r3} - add r0, #4 - stmia r0 !, {r1, r2, r3} - bx lr -} - -#include - -void MTX_ScaleApply43 (const MtxFx43 * pSrc, MtxFx43 * pDst, fx32 x, fx32 y, fx32 z) { - MTX_ScaleApply33((const MtxFx33 *)pSrc, (MtxFx33 *)pDst, x, y, z); - - pDst->_30 = pSrc->_30; - pDst->_31 = pSrc->_31; - pDst->_32 = pSrc->_32; -} - -#include - -asm void MTX_RotX43_ (register MtxFx43 * pDst, register fx32 sinVal, register fx32 cosVal) { - str r1, [r0, #20] - neg r1, r1 - str r1, [r0, #28] - mov r1, #1 - lsl r1, r1, #12 - stmia r0 !, {r1} - mov r3, #0 - mov r1, #0 - stmia r0 !, {r1, r3} - stmia r0 !, {r1, r2} - str r1, [r0, #4] - add r0, #12 - stmia r0 !, {r2, r3} - stmia r0 !, {r1, r3} - bx lr -} - -#include -#include - -asm void MTX_RotY43_ (register MtxFx43 * pDst, register fx32 sinVal, register fx32 cosVal) { - str r1, [r0, #24] - mov r3, #0 - stmia r0 !, {r2, r3} - neg r1, r1 - stmia r0 !, {r1, r3} - mov r1, #1 - lsl r1, r1, #12 - stmia r0 !, {r1, r3} - add r0, #4 - mov r1, #0 - stmia r0 !, {r1, r2, r3} - stmia r0 !, {r1, r3} - bx lr -} - -#include -#include - -asm void MTX_RotZ43_ (register MtxFx43 * pDst, register fx32 sinVal, register fx32 cosVal) { - stmia r0 !, {r2} - mov r3, #0 - stmia r0 !, {r1, r3} - neg r1, r1 - stmia r0 !, {r1, r2, r3} - mov r1, #0 - mov r2, #0 - mov r3, #1 - lsl r3, r3, #12 - stmia r0 !, {r1, r2, r3} - mov r3, #0 - stmia r0 !, {r1, r2, r3} - bx lr -} - -#include - -void MTX_RotAxis43 (MtxFx43 * pDst, const VecFx32 * vec, fx32 sinVal, fx32 cosVal) { - MTX_RotAxis33((MtxFx33 *)pDst, vec, sinVal, cosVal); - pDst->_30 = 0; - pDst->_31 = 0; - pDst->_32 = 0; -} - -int MTX_Inverse43 (const MtxFx43 * pSrc, MtxFx43 * pDst) { - MtxFx43 tmp; - MtxFx43 * p; - fx32 det; - fx32 det00, det10, det20; - fx32 tmp01, tmp02, tmp11, tmp12; - fx32 tmp21, tmp22; - - SDK_NULL_ASSERT(pSrc); - SDK_NULL_ASSERT(pDst); - - if (pSrc == pDst) { - p = &tmp; - } else { - p = pDst; - } - - det00 = (fx32)(((fx64)pSrc->_11 * pSrc->_22 - - (fx64)pSrc->_12 * pSrc->_21 + (fx64)(FX32_ONE >> 1)) >> FX32_SHIFT); - det10 = (fx32)(((fx64)pSrc->_10 * pSrc->_22 - - (fx64)pSrc->_12 * pSrc->_20 + (fx64)(FX32_ONE >> 1)) >> FX32_SHIFT); - det20 = (fx32)(((fx64)pSrc->_10 * pSrc->_21 - - (fx64)pSrc->_11 * pSrc->_20 + (fx64)(FX32_ONE >> 1)) >> FX32_SHIFT); - - det = (fx32)(((fx64)pSrc->_00 * det00 - - (fx64)pSrc->_01 * det10 + - (fx64)pSrc->_02 * det20 + (fx64)(FX32_ONE >> 1)) >> FX32_SHIFT); - if (0 == det) { - return -1; - } - - FX_InvAsync(det); - - tmp01 = (fx32)(((fx64)pSrc->_01 * pSrc->_22 - (fx64)pSrc->_21 * pSrc->_02) >> FX32_SHIFT); - tmp02 = (fx32)(((fx64)pSrc->_01 * pSrc->_12 - (fx64)pSrc->_11 * pSrc->_02) >> FX32_SHIFT); - tmp11 = (fx32)(((fx64)pSrc->_00 * pSrc->_22 - (fx64)pSrc->_20 * pSrc->_02) >> FX32_SHIFT); - tmp12 = (fx32)(((fx64)pSrc->_00 * pSrc->_12 - (fx64)pSrc->_10 * pSrc->_02) >> FX32_SHIFT); - - det = FX_GetDivResult(); - p->_00 = (fx32)(((fx64)det * det00) >> FX32_SHIFT); - p->_01 = -(fx32)(((fx64)det * tmp01) >> FX32_SHIFT); - p->_02 = (fx32)(((fx64)det * tmp02) >> FX32_SHIFT); - - p->_10 = -(fx32)(((fx64)det * det10) >> FX32_SHIFT); - p->_11 = (fx32)(((fx64)det * tmp11) >> FX32_SHIFT); - p->_12 = -(fx32)(((fx64)det * tmp12) >> FX32_SHIFT); - - p->_20 = (fx32)(((fx64)det * det20) >> FX32_SHIFT); - - tmp21 = (fx32)(((fx64)pSrc->_00 * pSrc->_21 - (fx64)pSrc->_20 * pSrc->_01) >> FX32_SHIFT); - p->_21 = -(fx32)(((fx64)det * tmp21) >> FX32_SHIFT); - - tmp22 = (fx32)(((fx64)pSrc->_00 * pSrc->_11 - (fx64)pSrc->_10 * pSrc->_01) >> FX32_SHIFT); - p->_22 = (fx32)(((fx64)det * tmp22) >> FX32_SHIFT); - - p->_30 = -(fx32)(((fx64)p->_00 * pSrc->_30 + - (fx64)p->_10 * pSrc->_31 + (fx64)p->_20 * pSrc->_32) >> FX32_SHIFT); - - p->_31 = -(fx32)(((fx64)p->_01 * pSrc->_30 + - (fx64)p->_11 * pSrc->_31 + (fx64)p->_21 * pSrc->_32) >> FX32_SHIFT); - - p->_32 = -(fx32)(((fx64)p->_02 * pSrc->_30 + - (fx64)p->_12 * pSrc->_31 + (fx64)p->_22 * pSrc->_32) >> FX32_SHIFT); - - if (p == &tmp) { - MI_Copy48B(&tmp, pDst); - } - return 0; -} - -void MTX_Concat43 (const MtxFx43 * a, const MtxFx43 * b, MtxFx43 * ab) { - MtxFx43 tmp; - MtxFx43 * p; - - register fx32 x, y, z; - register fx32 xx, yy, zz; - - SDK_NULL_ASSERT(a); - SDK_NULL_ASSERT(b); - SDK_NULL_ASSERT(ab); - - if (ab == b) { - p = &tmp; - } else { - p = ab; - } - - x = a->_00; - y = a->_01; - z = a->_02; - - p->_00 = (fx32)(((fx64)x * b->_00 + (fx64)y * b->_10 + (fx64)z * b->_20) >> FX32_SHIFT); - p->_01 = (fx32)(((fx64)x * b->_01 + (fx64)y * b->_11 + (fx64)z * b->_21) >> FX32_SHIFT); - - xx = b->_02; - yy = b->_12; - zz = b->_22; - - p->_02 = (fx32)(((fx64)x * xx + (fx64)y * yy + (fx64)z * zz) >> FX32_SHIFT); - - x = a->_10; - y = a->_11; - z = a->_12; - - p->_12 = (fx32)(((fx64)x * xx + (fx64)y * yy + (fx64)z * zz) >> FX32_SHIFT); - p->_11 = (fx32)(((fx64)x * b->_01 + (fx64)y * b->_11 + (fx64)z * b->_21) >> FX32_SHIFT); - - xx = b->_00; - yy = b->_10; - zz = b->_20; - - p->_10 = (fx32)(((fx64)x * xx + (fx64)y * yy + (fx64)z * zz) >> FX32_SHIFT); - - x = a->_20; - y = a->_21; - z = a->_22; - - p->_20 = (fx32)(((fx64)x * xx + (fx64)y * yy + (fx64)z * zz) >> FX32_SHIFT); - p->_21 = (fx32)(((fx64)x * b->_01 + (fx64)y * b->_11 + (fx64)z * b->_21) >> FX32_SHIFT); - xx = b->_02; - yy = b->_12; - zz = b->_22; - - p->_22 = (fx32)(((fx64)x * xx + (fx64)y * yy + (fx64)z * zz) >> FX32_SHIFT); - - x = a->_30; - y = a->_31; - z = a->_32; - - p->_32 = (fx32)((((fx64)x * xx + (fx64)y * yy + (fx64)z * zz) >> FX32_SHIFT) + b->_32); - p->_31 = - (fx32)((((fx64)x * b->_01 + (fx64)y * b->_11 + (fx64)z * b->_21) >> FX32_SHIFT) + b->_31); - p->_30 = - (fx32)((((fx64)x * b->_00 + (fx64)y * b->_10 + (fx64)z * b->_20) >> FX32_SHIFT) + b->_30); - - if (p == &tmp) { - *ab = tmp; - } -} - -void MTX_MultVec43 (const VecFx32 * vec, const MtxFx43 * m, VecFx32 * dst) { - register fx32 x, y, z; - SDK_NULL_ASSERT(vec); - SDK_NULL_ASSERT(m); - SDK_NULL_ASSERT(dst); - - x = vec->x; - y = vec->y; - z = vec->z; - - dst->x = (fx32)(((fx64)x * m->_00 + (fx64)y * m->_10 + (fx64)z * m->_20) >> FX32_SHIFT); - dst->x += m->_30; - - dst->y = (fx32)(((fx64)x * m->_01 + (fx64)y * m->_11 + (fx64)z * m->_21) >> FX32_SHIFT); - dst->y += m->_31; - - dst->z = (fx32)(((fx64)x * m->_02 + (fx64)y * m->_12 + (fx64)z * m->_22) >> FX32_SHIFT); - dst->z += m->_32; -} - -void MTX_LookAt (const VecFx32 * camPos, const VecFx32 * camUp, const VecFx32 * target, MtxFx43 * mtx) { - VecFx32 vLook, vRight, vUp; - - SDK_NULL_ASSERT(camPos); - SDK_NULL_ASSERT(camUp); - SDK_NULL_ASSERT(target); - SDK_NULL_ASSERT(mtx); - - vLook.x = camPos->x - target->x; - vLook.y = camPos->y - target->y; - vLook.z = camPos->z - target->z; - VEC_Normalize(&vLook, &vLook); - VEC_CrossProduct(camUp, &vLook, &vRight); - VEC_Normalize(&vRight, &vRight); - VEC_CrossProduct(&vLook, &vRight, &vUp); - - mtx->_00 = vRight.x; - mtx->_01 = vUp.x; - mtx->_02 = vLook.x; - mtx->_10 = vRight.y; - mtx->_11 = vUp.y; - mtx->_12 = vLook.y; - mtx->_20 = vRight.z; - mtx->_21 = vUp.z; - mtx->_22 = vLook.z; - mtx->_30 = -VEC_DotProduct(camPos, &vRight); - mtx->_31 = -VEC_DotProduct(camPos, &vUp); - mtx->_32 = -VEC_DotProduct(camPos, &vLook); -} diff --git a/subprojects/NitroSDK/libraries/fx/src/fx_mtx44.c b/subprojects/NitroSDK/libraries/fx/src/fx_mtx44.c deleted file mode 100644 index 439092c86a..0000000000 --- a/subprojects/NitroSDK/libraries/fx/src/fx_mtx44.c +++ /dev/null @@ -1,513 +0,0 @@ -#include -#include -#include -#include -#include - -inline fx32 mul64 (fx64 x, fx32 y) { - return (fx32)((x * y) >> FX32_SHIFT); -} - -asm void MTX_Identity44_ (register MtxFx44 * pDst) { - mov r2, #4096 - mov r3, #0 - stmia r0 !, {r2, r3} - mov r1, #0 - stmia r0 !, {r1, r3} - stmia r0 !, {r1, r2, r3} - stmia r0 !, {r1, r3} - stmia r0 !, {r1, r2, r3} - stmia r0 !, {r1, r3} - stmia r0 !, {r1, r2} - bx lr -} - -asm void MTX_Copy44To33_ (register const MtxFx44 * pSrc, register MtxFx33 * pDst) { - ldmia r0 !, {r2 - r3, r12} - add r0, r0, #4 - stmia r1 !, {r2 - r3, r12} - ldmia r0 !, {r2 - r3, r12} - add r0, r0, #4 - stmia r1 !, {r2 - r3, r12} - ldmia r0 !, {r2 - r3, r12} - add r0, r0, #4 - stmia r1 !, {r2 - r3, r12} - bx lr -} - -asm void MTX_Copy44To43_ (register const MtxFx44 * pSrc, register MtxFx43 * pDst) { - ldmia r0 !, {r2 - r3, r12} - add r0, r0, #4 - stmia r1 !, {r2 - r3, r12} - ldmia r0 !, {r2 - r3, r12} - add r0, r0, #4 - stmia r1 !, {r2 - r3, r12} - ldmia r0 !, {r2 - r3, r12} - add r0, r0, #4 - stmia r1 !, {r2 - r3, r12} - ldmia r0 !, {r2 - r3, r12} - add r0, r0, #4 - stmia r1 !, {r2 - r3, r12} - bx lr -} - -void MTX_TransApply44 (const MtxFx44 * pSrc, MtxFx44 * pDst, fx32 x, fx32 y, fx32 z) { - SDK_NULL_ASSERT(pSrc); - SDK_NULL_ASSERT(pDst); - - if (pSrc != pDst) { - MI_Copy48B(pSrc, pDst); - } - { - fx64 xx = x; - fx64 yy = y; - fx64 zz = z; - - pDst->_30 = - pSrc->_30 + (fx32)((xx * pSrc->_00 + yy * pSrc->_10 + zz * pSrc->_20) >> FX32_SHIFT); - pDst->_31 = - pSrc->_31 + (fx32)((xx * pSrc->_01 + yy * pSrc->_11 + zz * pSrc->_21) >> FX32_SHIFT); - pDst->_32 = - pSrc->_32 + (fx32)((xx * pSrc->_02 + yy * pSrc->_12 + zz * pSrc->_22) >> FX32_SHIFT); - pDst->_33 = - pSrc->_33 + (fx32)((xx * pSrc->_03 + yy * pSrc->_13 + zz * pSrc->_23) >> FX32_SHIFT); - } -} - -asm void MTX_Transpose44_ (register const MtxFx44 * pSrc, register MtxFx44 * pDst) { - stmfd sp !, {r4 - r11} - ldr r12, [r0, #48] - ldmia r0 !, {r2 - r11} - stmia r1 !, {r2, r6, r10, r12} - ldr r12, [r0, #12] - stmia r1 !, {r3, r7, r11, r12} - ldmia r0, {r10 - r11} - ldr r12, [r0, #16] - stmia r1 !, {r4, r8, r10, r12} - ldr r12, [r0, #20] - stmia r1 !, {r5, r9, r11, r12} - ldmfd sp !, {r4 - r11} - bx lr -} - -#include - -asm void MTX_Scale44_ (register MtxFx44 * pDst, register fx32 x, register fx32 y, register fx32 z) { - stmia r0 !, {r1} - mov r1, #0 - str r2, [r0, #16] - mov r2, #0 - stmia r0 !, {r1, r2} - stmia r0 !, {r1, r2} - add r0, r0, #4 - stmia r0 !, {r1, r2} - stmia r0 !, {r1, r2, r3} - stmia r0 !, {r1, r2} - mov r3, #1 - lsl r3, r3, #12 - stmia r0 !, {r1, r2} - str r3, [r0, #0] - bx lr -} - -#include - -void MTX_ScaleApply44 (const MtxFx44 * pSrc, MtxFx44 * pDst, fx32 x, fx32 y, fx32 z) { - fx64 v; - - SDK_NULL_ASSERT(pSrc); - SDK_NULL_ASSERT(pDst); - - v = (fx64)x; - pDst->_00 = mul64(v, pSrc->_00); - pDst->_01 = mul64(v, pSrc->_01); - pDst->_02 = mul64(v, pSrc->_02); - pDst->_03 = mul64(v, pSrc->_03); - - v = (fx64)y; - pDst->_10 = mul64(v, pSrc->_10); - pDst->_11 = mul64(v, pSrc->_11); - pDst->_12 = mul64(v, pSrc->_12); - pDst->_13 = mul64(v, pSrc->_13); - - v = (fx64)z; - pDst->_20 = mul64(v, pSrc->_20); - pDst->_21 = mul64(v, pSrc->_21); - pDst->_22 = mul64(v, pSrc->_22); - pDst->_23 = mul64(v, pSrc->_23); - - if (pSrc != pDst) { - register fx32 t1, t2; - t1 = pSrc->_30; - t2 = pSrc->_31; - pDst->_30 = t1; - pDst->_31 = t2; - - t1 = pSrc->_32; - t2 = pSrc->_33; - pDst->_32 = t1; - pDst->_33 = t2; - } -} - -#include - -asm void MTX_RotX44_ (register MtxFx44 * pDst, register fx32 sinVal, register fx32 cosVal) { - str r2, [r0, #20] - str r2, [r0, #40] - str r1, [r0, #24] - neg r1, r1 - str r1, [r0, #36] - mov r1, #1 - mov r2, #0 - lsl r1, r1, #12 - mov r3, #0 - stmia r0 !, {r1, r2, r3} - stmia r0 !, {r2, r3} - add r0, #8 - stmia r0 !, {r2, r3} - add r0, #8 - stmia r0 !, {r2, r3} - stmia r0 !, {r2, r3} - str r1, [r0, #0] - bx lr -} - -#include -#include - -asm void MTX_RotY44_ (register MtxFx44 * pDst, register fx32 sinVal, register fx32 cosVal) { - str r2, [r0, #0] - str r2, [r0, #40] - str r1, [r0, #32] - neg r1, r1 - str r1, [r0, #8] - mov r3, #1 - mov r1, #0 - lsl r3, r3, #12 - mov r2, #0 - str r2, [r0, #4] - add r0, #12 - stmia r0 !, {r1, r2, r3} - stmia r0 !, {r1, r2} - str r2, [r0, #4] - add r0, #12 - stmia r0 !, {r1, r2} - stmia r0 !, {r1, r2, r3} - bx lr -} - -#include -#include - -asm void MTX_RotZ44_ (register MtxFx44 * pDst, register fx32 sinVal, register fx32 cosVal) { - str r2, [r0, #0] - str r2, [r0, #20] - str r1, [r0, #4] - neg r1, r1 - str r1, [r0, #16] - mov r3, #1 - mov r1, #0 - lsl r3, r3, #12 - mov r2, #0 - add r0, #8 - stmia r0 !, {r1, r2} - add r0, #8 - stmia r0 !, {r1, r2} - stmia r0 !, {r1, r2, r3} - stmia r0 !, {r1, r2} - stmia r0 !, {r1, r2, r3} - bx lr -} - -#include - -void MTX_RotAxis44 (MtxFx44 * pDst, const VecFx32 * vec, fx32 sinVal, fx32 cosVal) { - fx64 t, ss, cc, xx, yy, zz; - fx32 t01; - fx32 s2; - SDK_NULL_ASSERT(pDst); - SDK_NULL_ASSERT(vec); - - t = (fx64)(FX32_ONE - cosVal); - ss = (fx64)sinVal; - cc = (fx64)cosVal; - xx = (fx64)vec->x; - yy = (fx64)vec->y; - zz = (fx64)vec->z; - - t01 = (fx32)((xx * xx * t) >> (FX64_SHIFT + FX64_SHIFT)); - pDst->_00 = t01 + cosVal; - - t01 = (fx32)((yy * yy * t) >> (FX64_SHIFT + FX64_SHIFT)); - pDst->_11 = t01 + cosVal; - - t01 = (fx32)((zz * zz * t) >> (FX64_SHIFT + FX64_SHIFT)); - pDst->_22 = t01 + cosVal; - - t01 = (fx32)((t * xx * yy) >> (FX64_SHIFT + FX64_SHIFT)); - s2 = (fx32)((ss * zz) >> FX64_SHIFT); - pDst->_01 = t01 + s2; - pDst->_10 = t01 - s2; - - t01 = (fx32)((t * xx * zz) >> (FX64_SHIFT + FX64_SHIFT)); - s2 = (fx32)((ss * yy) >> FX64_SHIFT); - pDst->_02 = t01 - s2; - pDst->_20 = t01 + s2; - - t01 = (fx32)((t * yy * zz) >> (FX64_SHIFT + FX64_SHIFT)); - s2 = (fx32)((ss * xx) >> FX64_SHIFT); - pDst->_12 = t01 + s2; - pDst->_21 = t01 - s2; - - pDst->_03 = pDst->_13 = pDst->_23 = pDst->_30 = pDst->_31 = pDst->_32 = 0; - pDst->_33 = FX32_ONE; -} - -void MTX_Concat44 (const MtxFx44 * a, const MtxFx44 * b, MtxFx44 * ab) { - MtxFx44 tmp; - MtxFx44 * p; - - register fx32 x, y, z, w; - register fx32 xx, yy, zz, ww; - - SDK_NULL_ASSERT(a); - SDK_NULL_ASSERT(b); - SDK_NULL_ASSERT(ab); - - if (ab == b) { - p = &tmp; - } else { - p = ab; - } - - x = a->_00; - y = a->_01; - z = a->_02; - w = a->_03; - - p->_00 = - (fx32)(((fx64)x * b->_00 + (fx64)y * b->_10 + (fx64)z * b->_20 + - (fx64)w * b->_30) >> FX32_SHIFT); - p->_01 = - (fx32)(((fx64)x * b->_01 + (fx64)y * b->_11 + (fx64)z * b->_21 + - (fx64)w * b->_31) >> FX32_SHIFT); - p->_03 = - (fx32)(((fx64)x * b->_03 + (fx64)y * b->_13 + (fx64)z * b->_23 + - (fx64)w * b->_33) >> FX32_SHIFT); - - xx = b->_02; - yy = b->_12; - zz = b->_22; - ww = b->_32; - - p->_02 = (fx32)(((fx64)x * xx + (fx64)y * yy + (fx64)z * zz + (fx64)w * ww) >> FX32_SHIFT); - - x = a->_10; - y = a->_11; - z = a->_12; - w = a->_13; - - p->_12 = (fx32)(((fx64)x * xx + (fx64)y * yy + (fx64)z * zz + (fx64)w * ww) >> FX32_SHIFT); - p->_11 = - (fx32)(((fx64)x * b->_01 + (fx64)y * b->_11 + (fx64)z * b->_21 + - (fx64)w * b->_31) >> FX32_SHIFT); - p->_13 = - (fx32)(((fx64)x * b->_03 + (fx64)y * b->_13 + (fx64)z * b->_23 + - (fx64)w * b->_33) >> FX32_SHIFT); - - xx = b->_00; - yy = b->_10; - zz = b->_20; - ww = b->_30; - - p->_10 = (fx32)(((fx64)x * xx + (fx64)y * yy + (fx64)z * zz + (fx64)w * ww) >> FX32_SHIFT); - - x = a->_20; - y = a->_21; - z = a->_22; - w = a->_23; - - p->_20 = (fx32)(((fx64)x * xx + (fx64)y * yy + (fx64)z * zz + (fx64)w * ww) >> FX32_SHIFT); - p->_21 = - (fx32)(((fx64)x * b->_01 + (fx64)y * b->_11 + (fx64)z * b->_21 + - (fx64)w * b->_31) >> FX32_SHIFT); - p->_23 = - (fx32)(((fx64)x * b->_03 + (fx64)y * b->_13 + (fx64)z * b->_23 + - (fx64)w * b->_33) >> FX32_SHIFT); - - xx = b->_02; - yy = b->_12; - zz = b->_22; - ww = b->_32; - - p->_22 = (fx32)(((fx64)x * xx + (fx64)y * yy + (fx64)z * zz + (fx64)w * ww) >> FX32_SHIFT); - - x = a->_30; - y = a->_31; - z = a->_32; - w = a->_33; - - p->_32 = (fx32)(((fx64)x * xx + (fx64)y * yy + (fx64)z * zz + (fx64)w * ww) >> FX32_SHIFT); - p->_31 = - (fx32)(((fx64)x * b->_01 + (fx64)y * b->_11 + (fx64)z * b->_21 + - (fx64)w * b->_31) >> FX32_SHIFT); - p->_30 = - (fx32)(((fx64)x * b->_00 + (fx64)y * b->_10 + (fx64)z * b->_20 + - (fx64)w * b->_30) >> FX32_SHIFT); - p->_33 = - (fx32)(((fx64)x * b->_03 + (fx64)y * b->_13 + (fx64)z * b->_23 + - (fx64)w * b->_33) >> FX32_SHIFT); - - if (p == &tmp) { - *ab = tmp; - } -} - -void MTX_FrustumW (fx32 t, fx32 b, fx32 l, fx32 r, fx32 n, fx32 f, fx32 scaleW, MtxFx44 * mtx) { - fx64c inv1, inv2; - fx32 dblN; - - SDK_NULL_ASSERT(mtx); - SDK_ASSERTMSG(t != b, "MTX_Frustum: 't' and 'b' clipping planes are equal."); - SDK_ASSERTMSG(l != r, "MTX_Frustum: 'l' and 'r' clipping planes are equal."); - SDK_ASSERTMSG(n != f, "MTX_Frustum: 'n' and 'f' clipping planes are equal."); - - SDK_MINMAX_ASSERT(f, -0x10000 * FX32_ONE, 0x10000 * FX32_ONE - 1); - SDK_MINMAX_ASSERT(n, -0x10000 * FX32_ONE, 0x10000 * FX32_ONE - 1); - - { - FX_InvAsync(r - l); - mtx->_01 = 0; - mtx->_02 = 0; - mtx->_03 = 0; - mtx->_10 = 0; - mtx->_12 = 0; - mtx->_13 = 0; - mtx->_23 = -scaleW; - mtx->_30 = 0; - mtx->_31 = 0; - mtx->_33 = 0; - dblN = n << 1; - inv1 = FX_GetInvResultFx64c(); - } - { - FX_InvAsyncImm(t - b); - if (scaleW != FX32_ONE) { - inv1 = (inv1 * scaleW) / FX32_ONE; - } - mtx->_00 = FX_Mul32x64c(dblN, inv1); - inv2 = FX_GetInvResultFx64c(); - } - { - FX_InvAsyncImm(n - f); - if (scaleW != FX32_ONE) { - inv2 = (inv2 * scaleW) / FX32_ONE; - } - mtx->_11 = FX_Mul32x64c(dblN, inv2); - mtx->_20 = FX_Mul32x64c(r + l, inv1); - mtx->_21 = FX_Mul32x64c(t + b, inv2); - inv1 = FX_GetInvResultFx64c(); - } - if (scaleW != FX32_ONE) { - inv1 = (inv1 * scaleW) / FX32_ONE; - } - mtx->_22 = FX_Mul32x64c(f + n, inv1); - mtx->_32 = FX_Mul32x64c(FX_Mul(dblN, f), inv1); -} - -void MTX_PerspectiveW (fx32 fovySin, fx32 fovyCos, fx32 aspect, fx32 n, fx32 f, fx32 scaleW, MtxFx44 * mtx) { - fx32 one_tan; - fx64 t; - - SDK_NULL_ASSERT(mtx); - SDK_ASSERTMSG(fovySin > 0 && fovySin < FX32_ONE, "G3_Perspective: sine of fovy out of range."); - SDK_ASSERTMSG( - fovyCos > -FX32_ONE - && fovyCos < FX32_ONE, "G3_Perspective: cosine of fovy out of range." - ); - SDK_ASSERTMSG(aspect != 0, "G3_Perspective: aspect is 0."); - - SDK_MINMAX_ASSERT(f, -0x10000 * FX32_ONE, 0x10000 * FX32_ONE - 1); - SDK_MINMAX_ASSERT(n, -0x10000 * FX32_ONE, 0x10000 * FX32_ONE - 1); - - one_tan = FX_Div((fx32)fovyCos, (fx32)fovySin); - FX_InvAsyncImm(n - f); - if (scaleW != FX32_ONE) { - one_tan = (one_tan * scaleW) / FX32_ONE; - } - mtx->_01 = 0; - mtx->_02 = 0; - mtx->_03 = 0; - mtx->_10 = 0; - mtx->_11 = one_tan; - mtx->_12 = 0; - mtx->_13 = 0; - mtx->_20 = 0; - mtx->_21 = 0; - mtx->_23 = -scaleW; - mtx->_30 = 0; - mtx->_31 = 0; - mtx->_33 = 0; - t = FX_GetInvResultFx64c(); - FX_DivAsyncImm(one_tan, aspect); - if (scaleW != FX32_ONE) { - t = (t * scaleW) / FX32_ONE; - } - mtx->_22 = FX_Mul32x64c(f + n, t); - mtx->_32 = FX_Mul32x64c(FX_Mul(n << 1, f), t); - mtx->_00 = FX_GetDivResult(); -} - -void MTX_OrthoW (fx32 t, fx32 b, fx32 l, fx32 r, fx32 n, fx32 f, fx32 scaleW, MtxFx44 * mtx) { - fx64c inv1, inv2, inv3; - - SDK_NULL_ASSERT(mtx); - SDK_ASSERTMSG(t != b, "G3_Ortho: 't' and 'b' clipping planes are equal."); - SDK_ASSERTMSG(l != r, "G3_Ortho: 'l' and 'r' clipping planes are equal."); - SDK_ASSERTMSG(n != f, "G3_Ortho: 'n' and 'f' clipping planes are equal."); - - SDK_MINMAX_ASSERT(f, -0x10000 * FX32_ONE, 0x10000 * FX32_ONE - 1); - SDK_MINMAX_ASSERT(n, -0x10000 * FX32_ONE, 0x10000 * FX32_ONE - 1); - - { - FX_InvAsync(r - l); - mtx->_01 = 0; - mtx->_02 = 0; - mtx->_03 = 0; - mtx->_10 = 0; - mtx->_12 = 0; - mtx->_13 = 0; - mtx->_20 = 0; - mtx->_21 = 0; - mtx->_23 = 0; - mtx->_33 = scaleW; - inv1 = FX_GetInvResultFx64c(); - } - { - FX_InvAsyncImm(t - b); - if (scaleW != FX32_ONE) { - inv1 = (inv1 * scaleW) / FX32_ONE; - } - mtx->_00 = FX_Mul32x64c(FX32_ONE * 2, inv1); - inv2 = FX_GetInvResultFx64c(); - } - { - FX_InvAsyncImm(n - f); - if (scaleW != FX32_ONE) { - inv2 = (inv2 * scaleW) / FX32_ONE; - } - mtx->_11 = FX_Mul32x64c(FX32_ONE * 2, inv2); - inv3 = FX_GetInvResultFx64c(); - } - - if (scaleW != FX32_ONE) { - inv3 = (inv3 * scaleW) / FX32_ONE; - } - mtx->_22 = FX_Mul32x64c(FX32_ONE * 2, inv3); - mtx->_30 = FX_Mul32x64c(-r - l, inv1); - mtx->_31 = FX_Mul32x64c(-t - b, inv2); - mtx->_32 = FX_Mul32x64c(f + n, inv3); -} - -#include diff --git a/subprojects/NitroSDK/libraries/fx/src/fx_sincos.c b/subprojects/NitroSDK/libraries/fx/src/fx_sincos.c deleted file mode 100644 index 0066dbcb29..0000000000 --- a/subprojects/NitroSDK/libraries/fx/src/fx_sincos.c +++ /dev/null @@ -1,4107 +0,0 @@ -#include - -#ifdef SDK_FX_DYNAMIC_TABLE - -fx16 FX_SinCosTable_[4096 * 2]; - -#else - -const fx16 FX_SinCosTable_[4096 * 2] = { - (fx16)0x0000, (fx16)0x1000, - (fx16)0x0006, (fx16)0x1000, - (fx16)0x000d, (fx16)0x1000, - (fx16)0x0013, (fx16)0x1000, - (fx16)0x0019, (fx16)0x1000, - (fx16)0x001f, (fx16)0x1000, - (fx16)0x0026, (fx16)0x1000, - (fx16)0x002c, (fx16)0x1000, - (fx16)0x0032, (fx16)0x1000, - (fx16)0x0039, (fx16)0x1000, - (fx16)0x003f, (fx16)0x1000, - (fx16)0x0045, (fx16)0x0fff, - (fx16)0x004b, (fx16)0x0fff, - (fx16)0x0052, (fx16)0x0fff, - (fx16)0x0058, (fx16)0x0fff, - (fx16)0x005e, (fx16)0x0fff, - (fx16)0x0065, (fx16)0x0fff, - (fx16)0x006b, (fx16)0x0fff, - (fx16)0x0071, (fx16)0x0ffe, - (fx16)0x0077, (fx16)0x0ffe, - (fx16)0x007e, (fx16)0x0ffe, - (fx16)0x0084, (fx16)0x0ffe, - (fx16)0x008a, (fx16)0x0ffe, - (fx16)0x0090, (fx16)0x0ffd, - (fx16)0x0097, (fx16)0x0ffd, - (fx16)0x009d, (fx16)0x0ffd, - (fx16)0x00a3, (fx16)0x0ffd, - (fx16)0x00aa, (fx16)0x0ffc, - (fx16)0x00b0, (fx16)0x0ffc, - (fx16)0x00b6, (fx16)0x0ffc, - (fx16)0x00bc, (fx16)0x0ffc, - (fx16)0x00c3, (fx16)0x0ffb, - (fx16)0x00c9, (fx16)0x0ffb, - (fx16)0x00cf, (fx16)0x0ffb, - (fx16)0x00d6, (fx16)0x0ffa, - (fx16)0x00dc, (fx16)0x0ffa, - (fx16)0x00e2, (fx16)0x0ffa, - (fx16)0x00e8, (fx16)0x0ff9, - (fx16)0x00ef, (fx16)0x0ff9, - (fx16)0x00f5, (fx16)0x0ff9, - (fx16)0x00fb, (fx16)0x0ff8, - (fx16)0x0101, (fx16)0x0ff8, - (fx16)0x0108, (fx16)0x0ff8, - (fx16)0x010e, (fx16)0x0ff7, - (fx16)0x0114, (fx16)0x0ff7, - (fx16)0x011b, (fx16)0x0ff6, - (fx16)0x0121, (fx16)0x0ff6, - (fx16)0x0127, (fx16)0x0ff5, - (fx16)0x012d, (fx16)0x0ff5, - (fx16)0x0134, (fx16)0x0ff4, - (fx16)0x013a, (fx16)0x0ff4, - (fx16)0x0140, (fx16)0x0ff3, - (fx16)0x0146, (fx16)0x0ff3, - (fx16)0x014d, (fx16)0x0ff2, - (fx16)0x0153, (fx16)0x0ff2, - (fx16)0x0159, (fx16)0x0ff1, - (fx16)0x015f, (fx16)0x0ff1, - (fx16)0x0166, (fx16)0x0ff0, - (fx16)0x016c, (fx16)0x0ff0, - (fx16)0x0172, (fx16)0x0fef, - (fx16)0x0178, (fx16)0x0fef, - (fx16)0x017f, (fx16)0x0fee, - (fx16)0x0185, (fx16)0x0fed, - (fx16)0x018b, (fx16)0x0fed, - (fx16)0x0191, (fx16)0x0fec, - (fx16)0x0198, (fx16)0x0fec, - (fx16)0x019e, (fx16)0x0feb, - (fx16)0x01a4, (fx16)0x0fea, - (fx16)0x01aa, (fx16)0x0fea, - (fx16)0x01b1, (fx16)0x0fe9, - (fx16)0x01b7, (fx16)0x0fe8, - (fx16)0x01bd, (fx16)0x0fe8, - (fx16)0x01c3, (fx16)0x0fe7, - (fx16)0x01ca, (fx16)0x0fe6, - (fx16)0x01d0, (fx16)0x0fe6, - (fx16)0x01d6, (fx16)0x0fe5, - (fx16)0x01dc, (fx16)0x0fe4, - (fx16)0x01e3, (fx16)0x0fe3, - (fx16)0x01e9, (fx16)0x0fe3, - (fx16)0x01ef, (fx16)0x0fe2, - (fx16)0x01f5, (fx16)0x0fe1, - (fx16)0x01fc, (fx16)0x0fe0, - (fx16)0x0202, (fx16)0x0fe0, - (fx16)0x0208, (fx16)0x0fdf, - (fx16)0x020e, (fx16)0x0fde, - (fx16)0x0215, (fx16)0x0fdd, - (fx16)0x021b, (fx16)0x0fdc, - (fx16)0x0221, (fx16)0x0fdc, - (fx16)0x0227, (fx16)0x0fdb, - (fx16)0x022d, (fx16)0x0fda, - (fx16)0x0234, (fx16)0x0fd9, - (fx16)0x023a, (fx16)0x0fd8, - (fx16)0x0240, (fx16)0x0fd7, - (fx16)0x0246, (fx16)0x0fd6, - (fx16)0x024d, (fx16)0x0fd5, - (fx16)0x0253, (fx16)0x0fd5, - (fx16)0x0259, (fx16)0x0fd4, - (fx16)0x025f, (fx16)0x0fd3, - (fx16)0x0265, (fx16)0x0fd2, - (fx16)0x026c, (fx16)0x0fd1, - (fx16)0x0272, (fx16)0x0fd0, - (fx16)0x0278, (fx16)0x0fcf, - (fx16)0x027e, (fx16)0x0fce, - (fx16)0x0284, (fx16)0x0fcd, - (fx16)0x028b, (fx16)0x0fcc, - (fx16)0x0291, (fx16)0x0fcb, - (fx16)0x0297, (fx16)0x0fca, - (fx16)0x029d, (fx16)0x0fc9, - (fx16)0x02a3, (fx16)0x0fc8, - (fx16)0x02aa, (fx16)0x0fc7, - (fx16)0x02b0, (fx16)0x0fc6, - (fx16)0x02b6, (fx16)0x0fc5, - (fx16)0x02bc, (fx16)0x0fc4, - (fx16)0x02c2, (fx16)0x0fc3, - (fx16)0x02c9, (fx16)0x0fc2, - (fx16)0x02cf, (fx16)0x0fc0, - (fx16)0x02d5, (fx16)0x0fbf, - (fx16)0x02db, (fx16)0x0fbe, - (fx16)0x02e1, (fx16)0x0fbd, - (fx16)0x02e8, (fx16)0x0fbc, - (fx16)0x02ee, (fx16)0x0fbb, - (fx16)0x02f4, (fx16)0x0fba, - (fx16)0x02fa, (fx16)0x0fb8, - (fx16)0x0300, (fx16)0x0fb7, - (fx16)0x0306, (fx16)0x0fb6, - (fx16)0x030d, (fx16)0x0fb5, - (fx16)0x0313, (fx16)0x0fb4, - (fx16)0x0319, (fx16)0x0fb3, - (fx16)0x031f, (fx16)0x0fb1, - (fx16)0x0325, (fx16)0x0fb0, - (fx16)0x032b, (fx16)0x0faf, - (fx16)0x0332, (fx16)0x0fae, - (fx16)0x0338, (fx16)0x0fac, - (fx16)0x033e, (fx16)0x0fab, - (fx16)0x0344, (fx16)0x0faa, - (fx16)0x034a, (fx16)0x0fa8, - (fx16)0x0350, (fx16)0x0fa7, - (fx16)0x0356, (fx16)0x0fa6, - (fx16)0x035d, (fx16)0x0fa5, - (fx16)0x0363, (fx16)0x0fa3, - (fx16)0x0369, (fx16)0x0fa2, - (fx16)0x036f, (fx16)0x0fa1, - (fx16)0x0375, (fx16)0x0f9f, - (fx16)0x037b, (fx16)0x0f9e, - (fx16)0x0381, (fx16)0x0f9c, - (fx16)0x0388, (fx16)0x0f9b, - (fx16)0x038e, (fx16)0x0f9a, - (fx16)0x0394, (fx16)0x0f98, - (fx16)0x039a, (fx16)0x0f97, - (fx16)0x03a0, (fx16)0x0f95, - (fx16)0x03a6, (fx16)0x0f94, - (fx16)0x03ac, (fx16)0x0f93, - (fx16)0x03b2, (fx16)0x0f91, - (fx16)0x03b9, (fx16)0x0f90, - (fx16)0x03bf, (fx16)0x0f8e, - (fx16)0x03c5, (fx16)0x0f8d, - (fx16)0x03cb, (fx16)0x0f8b, - (fx16)0x03d1, (fx16)0x0f8a, - (fx16)0x03d7, (fx16)0x0f88, - (fx16)0x03dd, (fx16)0x0f87, - (fx16)0x03e3, (fx16)0x0f85, - (fx16)0x03e9, (fx16)0x0f84, - (fx16)0x03ef, (fx16)0x0f82, - (fx16)0x03f6, (fx16)0x0f81, - (fx16)0x03fc, (fx16)0x0f7f, - (fx16)0x0402, (fx16)0x0f7d, - (fx16)0x0408, (fx16)0x0f7c, - (fx16)0x040e, (fx16)0x0f7a, - (fx16)0x0414, (fx16)0x0f79, - (fx16)0x041a, (fx16)0x0f77, - (fx16)0x0420, (fx16)0x0f76, - (fx16)0x0426, (fx16)0x0f74, - (fx16)0x042c, (fx16)0x0f72, - (fx16)0x0432, (fx16)0x0f71, - (fx16)0x0438, (fx16)0x0f6f, - (fx16)0x043e, (fx16)0x0f6d, - (fx16)0x0444, (fx16)0x0f6c, - (fx16)0x044b, (fx16)0x0f6a, - (fx16)0x0451, (fx16)0x0f68, - (fx16)0x0457, (fx16)0x0f67, - (fx16)0x045d, (fx16)0x0f65, - (fx16)0x0463, (fx16)0x0f63, - (fx16)0x0469, (fx16)0x0f61, - (fx16)0x046f, (fx16)0x0f60, - (fx16)0x0475, (fx16)0x0f5e, - (fx16)0x047b, (fx16)0x0f5c, - (fx16)0x0481, (fx16)0x0f5a, - (fx16)0x0487, (fx16)0x0f59, - (fx16)0x048d, (fx16)0x0f57, - (fx16)0x0493, (fx16)0x0f55, - (fx16)0x0499, (fx16)0x0f53, - (fx16)0x049f, (fx16)0x0f51, - (fx16)0x04a5, (fx16)0x0f50, - (fx16)0x04ab, (fx16)0x0f4e, - (fx16)0x04b1, (fx16)0x0f4c, - (fx16)0x04b7, (fx16)0x0f4a, - (fx16)0x04bd, (fx16)0x0f48, - (fx16)0x04c3, (fx16)0x0f46, - (fx16)0x04c9, (fx16)0x0f45, - (fx16)0x04cf, (fx16)0x0f43, - (fx16)0x04d5, (fx16)0x0f41, - (fx16)0x04db, (fx16)0x0f3f, - (fx16)0x04e1, (fx16)0x0f3d, - (fx16)0x04e7, (fx16)0x0f3b, - (fx16)0x04ed, (fx16)0x0f39, - (fx16)0x04f3, (fx16)0x0f37, - (fx16)0x04f9, (fx16)0x0f35, - (fx16)0x04ff, (fx16)0x0f33, - (fx16)0x0505, (fx16)0x0f31, - (fx16)0x050b, (fx16)0x0f2f, - (fx16)0x0511, (fx16)0x0f2d, - (fx16)0x0517, (fx16)0x0f2b, - (fx16)0x051d, (fx16)0x0f29, - (fx16)0x0523, (fx16)0x0f27, - (fx16)0x0529, (fx16)0x0f25, - (fx16)0x052f, (fx16)0x0f23, - (fx16)0x0534, (fx16)0x0f21, - (fx16)0x053a, (fx16)0x0f1f, - (fx16)0x0540, (fx16)0x0f1d, - (fx16)0x0546, (fx16)0x0f1b, - (fx16)0x054c, (fx16)0x0f19, - (fx16)0x0552, (fx16)0x0f17, - (fx16)0x0558, (fx16)0x0f15, - (fx16)0x055e, (fx16)0x0f13, - (fx16)0x0564, (fx16)0x0f11, - (fx16)0x056a, (fx16)0x0f0e, - (fx16)0x0570, (fx16)0x0f0c, - (fx16)0x0576, (fx16)0x0f0a, - (fx16)0x057c, (fx16)0x0f08, - (fx16)0x0581, (fx16)0x0f06, - (fx16)0x0587, (fx16)0x0f04, - (fx16)0x058d, (fx16)0x0f02, - (fx16)0x0593, (fx16)0x0eff, - (fx16)0x0599, (fx16)0x0efd, - (fx16)0x059f, (fx16)0x0efb, - (fx16)0x05a5, (fx16)0x0ef9, - (fx16)0x05ab, (fx16)0x0ef7, - (fx16)0x05b1, (fx16)0x0ef4, - (fx16)0x05b6, (fx16)0x0ef2, - (fx16)0x05bc, (fx16)0x0ef0, - (fx16)0x05c2, (fx16)0x0eee, - (fx16)0x05c8, (fx16)0x0eeb, - (fx16)0x05ce, (fx16)0x0ee9, - (fx16)0x05d4, (fx16)0x0ee7, - (fx16)0x05da, (fx16)0x0ee4, - (fx16)0x05df, (fx16)0x0ee2, - (fx16)0x05e5, (fx16)0x0ee0, - (fx16)0x05eb, (fx16)0x0edd, - (fx16)0x05f1, (fx16)0x0edb, - (fx16)0x05f7, (fx16)0x0ed9, - (fx16)0x05fd, (fx16)0x0ed6, - (fx16)0x0602, (fx16)0x0ed4, - (fx16)0x0608, (fx16)0x0ed2, - (fx16)0x060e, (fx16)0x0ecf, - (fx16)0x0614, (fx16)0x0ecd, - (fx16)0x061a, (fx16)0x0ecb, - (fx16)0x061f, (fx16)0x0ec8, - (fx16)0x0625, (fx16)0x0ec6, - (fx16)0x062b, (fx16)0x0ec3, - (fx16)0x0631, (fx16)0x0ec1, - (fx16)0x0637, (fx16)0x0ebf, - (fx16)0x063c, (fx16)0x0ebc, - (fx16)0x0642, (fx16)0x0eba, - (fx16)0x0648, (fx16)0x0eb7, - (fx16)0x064e, (fx16)0x0eb5, - (fx16)0x0654, (fx16)0x0eb2, - (fx16)0x0659, (fx16)0x0eb0, - (fx16)0x065f, (fx16)0x0ead, - (fx16)0x0665, (fx16)0x0eab, - (fx16)0x066b, (fx16)0x0ea8, - (fx16)0x0670, (fx16)0x0ea6, - (fx16)0x0676, (fx16)0x0ea3, - (fx16)0x067c, (fx16)0x0ea1, - (fx16)0x0682, (fx16)0x0e9e, - (fx16)0x0687, (fx16)0x0e9b, - (fx16)0x068d, (fx16)0x0e99, - (fx16)0x0693, (fx16)0x0e96, - (fx16)0x0699, (fx16)0x0e94, - (fx16)0x069e, (fx16)0x0e91, - (fx16)0x06a4, (fx16)0x0e8f, - (fx16)0x06aa, (fx16)0x0e8c, - (fx16)0x06af, (fx16)0x0e89, - (fx16)0x06b5, (fx16)0x0e87, - (fx16)0x06bb, (fx16)0x0e84, - (fx16)0x06c1, (fx16)0x0e81, - (fx16)0x06c6, (fx16)0x0e7f, - (fx16)0x06cc, (fx16)0x0e7c, - (fx16)0x06d2, (fx16)0x0e79, - (fx16)0x06d7, (fx16)0x0e77, - (fx16)0x06dd, (fx16)0x0e74, - (fx16)0x06e3, (fx16)0x0e71, - (fx16)0x06e8, (fx16)0x0e6f, - (fx16)0x06ee, (fx16)0x0e6c, - (fx16)0x06f4, (fx16)0x0e69, - (fx16)0x06f9, (fx16)0x0e66, - (fx16)0x06ff, (fx16)0x0e64, - (fx16)0x0705, (fx16)0x0e61, - (fx16)0x070a, (fx16)0x0e5e, - (fx16)0x0710, (fx16)0x0e5b, - (fx16)0x0715, (fx16)0x0e59, - (fx16)0x071b, (fx16)0x0e56, - (fx16)0x0721, (fx16)0x0e53, - (fx16)0x0726, (fx16)0x0e50, - (fx16)0x072c, (fx16)0x0e4d, - (fx16)0x0732, (fx16)0x0e4b, - (fx16)0x0737, (fx16)0x0e48, - (fx16)0x073d, (fx16)0x0e45, - (fx16)0x0742, (fx16)0x0e42, - (fx16)0x0748, (fx16)0x0e3f, - (fx16)0x074e, (fx16)0x0e3c, - (fx16)0x0753, (fx16)0x0e3a, - (fx16)0x0759, (fx16)0x0e37, - (fx16)0x075e, (fx16)0x0e34, - (fx16)0x0764, (fx16)0x0e31, - (fx16)0x076a, (fx16)0x0e2e, - (fx16)0x076f, (fx16)0x0e2b, - (fx16)0x0775, (fx16)0x0e28, - (fx16)0x077a, (fx16)0x0e25, - (fx16)0x0780, (fx16)0x0e22, - (fx16)0x0785, (fx16)0x0e1f, - (fx16)0x078b, (fx16)0x0e1c, - (fx16)0x0790, (fx16)0x0e19, - (fx16)0x0796, (fx16)0x0e16, - (fx16)0x079b, (fx16)0x0e13, - (fx16)0x07a1, (fx16)0x0e10, - (fx16)0x07a6, (fx16)0x0e0d, - (fx16)0x07ac, (fx16)0x0e0a, - (fx16)0x07b2, (fx16)0x0e07, - (fx16)0x07b7, (fx16)0x0e04, - (fx16)0x07bd, (fx16)0x0e01, - (fx16)0x07c2, (fx16)0x0dfe, - (fx16)0x07c8, (fx16)0x0dfb, - (fx16)0x07cd, (fx16)0x0df8, - (fx16)0x07d2, (fx16)0x0df5, - (fx16)0x07d8, (fx16)0x0df2, - (fx16)0x07dd, (fx16)0x0def, - (fx16)0x07e3, (fx16)0x0dec, - (fx16)0x07e8, (fx16)0x0de9, - (fx16)0x07ee, (fx16)0x0de6, - (fx16)0x07f3, (fx16)0x0de3, - (fx16)0x07f9, (fx16)0x0ddf, - (fx16)0x07fe, (fx16)0x0ddc, - (fx16)0x0804, (fx16)0x0dd9, - (fx16)0x0809, (fx16)0x0dd6, - (fx16)0x080e, (fx16)0x0dd3, - (fx16)0x0814, (fx16)0x0dd0, - (fx16)0x0819, (fx16)0x0dcc, - (fx16)0x081f, (fx16)0x0dc9, - (fx16)0x0824, (fx16)0x0dc6, - (fx16)0x082a, (fx16)0x0dc3, - (fx16)0x082f, (fx16)0x0dc0, - (fx16)0x0834, (fx16)0x0dbc, - (fx16)0x083a, (fx16)0x0db9, - (fx16)0x083f, (fx16)0x0db6, - (fx16)0x0845, (fx16)0x0db3, - (fx16)0x084a, (fx16)0x0db0, - (fx16)0x084f, (fx16)0x0dac, - (fx16)0x0855, (fx16)0x0da9, - (fx16)0x085a, (fx16)0x0da6, - (fx16)0x085f, (fx16)0x0da2, - (fx16)0x0865, (fx16)0x0d9f, - (fx16)0x086a, (fx16)0x0d9c, - (fx16)0x086f, (fx16)0x0d99, - (fx16)0x0875, (fx16)0x0d95, - (fx16)0x087a, (fx16)0x0d92, - (fx16)0x087f, (fx16)0x0d8f, - (fx16)0x0885, (fx16)0x0d8b, - (fx16)0x088a, (fx16)0x0d88, - (fx16)0x088f, (fx16)0x0d85, - (fx16)0x0895, (fx16)0x0d81, - (fx16)0x089a, (fx16)0x0d7e, - (fx16)0x089f, (fx16)0x0d7a, - (fx16)0x08a5, (fx16)0x0d77, - (fx16)0x08aa, (fx16)0x0d74, - (fx16)0x08af, (fx16)0x0d70, - (fx16)0x08b4, (fx16)0x0d6d, - (fx16)0x08ba, (fx16)0x0d69, - (fx16)0x08bf, (fx16)0x0d66, - (fx16)0x08c4, (fx16)0x0d62, - (fx16)0x08c9, (fx16)0x0d5f, - (fx16)0x08cf, (fx16)0x0d5c, - (fx16)0x08d4, (fx16)0x0d58, - (fx16)0x08d9, (fx16)0x0d55, - (fx16)0x08de, (fx16)0x0d51, - (fx16)0x08e4, (fx16)0x0d4e, - (fx16)0x08e9, (fx16)0x0d4a, - (fx16)0x08ee, (fx16)0x0d47, - (fx16)0x08f3, (fx16)0x0d43, - (fx16)0x08f8, (fx16)0x0d40, - (fx16)0x08fe, (fx16)0x0d3c, - (fx16)0x0903, (fx16)0x0d39, - (fx16)0x0908, (fx16)0x0d35, - (fx16)0x090d, (fx16)0x0d32, - (fx16)0x0912, (fx16)0x0d2e, - (fx16)0x0918, (fx16)0x0d2a, - (fx16)0x091d, (fx16)0x0d27, - (fx16)0x0922, (fx16)0x0d23, - (fx16)0x0927, (fx16)0x0d20, - (fx16)0x092c, (fx16)0x0d1c, - (fx16)0x0931, (fx16)0x0d18, - (fx16)0x0937, (fx16)0x0d15, - (fx16)0x093c, (fx16)0x0d11, - (fx16)0x0941, (fx16)0x0d0e, - (fx16)0x0946, (fx16)0x0d0a, - (fx16)0x094b, (fx16)0x0d06, - (fx16)0x0950, (fx16)0x0d03, - (fx16)0x0955, (fx16)0x0cff, - (fx16)0x095a, (fx16)0x0cfb, - (fx16)0x095f, (fx16)0x0cf8, - (fx16)0x0965, (fx16)0x0cf4, - (fx16)0x096a, (fx16)0x0cf0, - (fx16)0x096f, (fx16)0x0ced, - (fx16)0x0974, (fx16)0x0ce9, - (fx16)0x0979, (fx16)0x0ce5, - (fx16)0x097e, (fx16)0x0ce1, - (fx16)0x0983, (fx16)0x0cde, - (fx16)0x0988, (fx16)0x0cda, - (fx16)0x098d, (fx16)0x0cd6, - (fx16)0x0992, (fx16)0x0cd2, - (fx16)0x0997, (fx16)0x0ccf, - (fx16)0x099c, (fx16)0x0ccb, - (fx16)0x09a1, (fx16)0x0cc7, - (fx16)0x09a6, (fx16)0x0cc3, - (fx16)0x09ab, (fx16)0x0cc0, - (fx16)0x09b0, (fx16)0x0cbc, - (fx16)0x09b5, (fx16)0x0cb8, - (fx16)0x09ba, (fx16)0x0cb4, - (fx16)0x09bf, (fx16)0x0cb0, - (fx16)0x09c4, (fx16)0x0cac, - (fx16)0x09c9, (fx16)0x0ca9, - (fx16)0x09ce, (fx16)0x0ca5, - (fx16)0x09d3, (fx16)0x0ca1, - (fx16)0x09d8, (fx16)0x0c9d, - (fx16)0x09dd, (fx16)0x0c99, - (fx16)0x09e2, (fx16)0x0c95, - (fx16)0x09e7, (fx16)0x0c91, - (fx16)0x09ec, (fx16)0x0c8e, - (fx16)0x09f1, (fx16)0x0c8a, - (fx16)0x09f6, (fx16)0x0c86, - (fx16)0x09fb, (fx16)0x0c82, - (fx16)0x09ff, (fx16)0x0c7e, - (fx16)0x0a04, (fx16)0x0c7a, - (fx16)0x0a09, (fx16)0x0c76, - (fx16)0x0a0e, (fx16)0x0c72, - (fx16)0x0a13, (fx16)0x0c6e, - (fx16)0x0a18, (fx16)0x0c6a, - (fx16)0x0a1d, (fx16)0x0c66, - (fx16)0x0a22, (fx16)0x0c62, - (fx16)0x0a26, (fx16)0x0c5e, - (fx16)0x0a2b, (fx16)0x0c5a, - (fx16)0x0a30, (fx16)0x0c56, - (fx16)0x0a35, (fx16)0x0c52, - (fx16)0x0a3a, (fx16)0x0c4e, - (fx16)0x0a3f, (fx16)0x0c4a, - (fx16)0x0a44, (fx16)0x0c46, - (fx16)0x0a48, (fx16)0x0c42, - (fx16)0x0a4d, (fx16)0x0c3e, - (fx16)0x0a52, (fx16)0x0c3a, - (fx16)0x0a57, (fx16)0x0c36, - (fx16)0x0a5c, (fx16)0x0c32, - (fx16)0x0a60, (fx16)0x0c2e, - (fx16)0x0a65, (fx16)0x0c2a, - (fx16)0x0a6a, (fx16)0x0c26, - (fx16)0x0a6f, (fx16)0x0c22, - (fx16)0x0a73, (fx16)0x0c1e, - (fx16)0x0a78, (fx16)0x0c19, - (fx16)0x0a7d, (fx16)0x0c15, - (fx16)0x0a82, (fx16)0x0c11, - (fx16)0x0a86, (fx16)0x0c0d, - (fx16)0x0a8b, (fx16)0x0c09, - (fx16)0x0a90, (fx16)0x0c05, - (fx16)0x0a95, (fx16)0x0c01, - (fx16)0x0a99, (fx16)0x0bfc, - (fx16)0x0a9e, (fx16)0x0bf8, - (fx16)0x0aa3, (fx16)0x0bf4, - (fx16)0x0aa7, (fx16)0x0bf0, - (fx16)0x0aac, (fx16)0x0bec, - (fx16)0x0ab1, (fx16)0x0be8, - (fx16)0x0ab5, (fx16)0x0be3, - (fx16)0x0aba, (fx16)0x0bdf, - (fx16)0x0abf, (fx16)0x0bdb, - (fx16)0x0ac3, (fx16)0x0bd7, - (fx16)0x0ac8, (fx16)0x0bd2, - (fx16)0x0acd, (fx16)0x0bce, - (fx16)0x0ad1, (fx16)0x0bca, - (fx16)0x0ad6, (fx16)0x0bc6, - (fx16)0x0adb, (fx16)0x0bc1, - (fx16)0x0adf, (fx16)0x0bbd, - (fx16)0x0ae4, (fx16)0x0bb9, - (fx16)0x0ae8, (fx16)0x0bb5, - (fx16)0x0aed, (fx16)0x0bb0, - (fx16)0x0af2, (fx16)0x0bac, - (fx16)0x0af6, (fx16)0x0ba8, - (fx16)0x0afb, (fx16)0x0ba3, - (fx16)0x0aff, (fx16)0x0b9f, - (fx16)0x0b04, (fx16)0x0b9b, - (fx16)0x0b08, (fx16)0x0b97, - (fx16)0x0b0d, (fx16)0x0b92, - (fx16)0x0b11, (fx16)0x0b8e, - (fx16)0x0b16, (fx16)0x0b89, - (fx16)0x0b1b, (fx16)0x0b85, - (fx16)0x0b1f, (fx16)0x0b81, - (fx16)0x0b24, (fx16)0x0b7c, - (fx16)0x0b28, (fx16)0x0b78, - (fx16)0x0b2d, (fx16)0x0b74, - (fx16)0x0b31, (fx16)0x0b6f, - (fx16)0x0b36, (fx16)0x0b6b, - (fx16)0x0b3a, (fx16)0x0b66, - (fx16)0x0b3e, (fx16)0x0b62, - (fx16)0x0b43, (fx16)0x0b5e, - (fx16)0x0b47, (fx16)0x0b59, - (fx16)0x0b4c, (fx16)0x0b55, - (fx16)0x0b50, (fx16)0x0b50, - (fx16)0x0b55, (fx16)0x0b4c, - (fx16)0x0b59, (fx16)0x0b47, - (fx16)0x0b5e, (fx16)0x0b43, - (fx16)0x0b62, (fx16)0x0b3e, - (fx16)0x0b66, (fx16)0x0b3a, - (fx16)0x0b6b, (fx16)0x0b36, - (fx16)0x0b6f, (fx16)0x0b31, - (fx16)0x0b74, (fx16)0x0b2d, - (fx16)0x0b78, (fx16)0x0b28, - (fx16)0x0b7c, (fx16)0x0b24, - (fx16)0x0b81, (fx16)0x0b1f, - (fx16)0x0b85, (fx16)0x0b1b, - (fx16)0x0b89, (fx16)0x0b16, - (fx16)0x0b8e, (fx16)0x0b11, - (fx16)0x0b92, (fx16)0x0b0d, - (fx16)0x0b97, (fx16)0x0b08, - (fx16)0x0b9b, (fx16)0x0b04, - (fx16)0x0b9f, (fx16)0x0aff, - (fx16)0x0ba3, (fx16)0x0afb, - (fx16)0x0ba8, (fx16)0x0af6, - (fx16)0x0bac, (fx16)0x0af2, - (fx16)0x0bb0, (fx16)0x0aed, - (fx16)0x0bb5, (fx16)0x0ae8, - (fx16)0x0bb9, (fx16)0x0ae4, - (fx16)0x0bbd, (fx16)0x0adf, - (fx16)0x0bc1, (fx16)0x0adb, - (fx16)0x0bc6, (fx16)0x0ad6, - (fx16)0x0bca, (fx16)0x0ad1, - (fx16)0x0bce, (fx16)0x0acd, - (fx16)0x0bd2, (fx16)0x0ac8, - (fx16)0x0bd7, (fx16)0x0ac3, - (fx16)0x0bdb, (fx16)0x0abf, - (fx16)0x0bdf, (fx16)0x0aba, - (fx16)0x0be3, (fx16)0x0ab5, - (fx16)0x0be8, (fx16)0x0ab1, - (fx16)0x0bec, (fx16)0x0aac, - (fx16)0x0bf0, (fx16)0x0aa7, - (fx16)0x0bf4, (fx16)0x0aa3, - (fx16)0x0bf8, (fx16)0x0a9e, - (fx16)0x0bfc, (fx16)0x0a99, - (fx16)0x0c01, (fx16)0x0a95, - (fx16)0x0c05, (fx16)0x0a90, - (fx16)0x0c09, (fx16)0x0a8b, - (fx16)0x0c0d, (fx16)0x0a86, - (fx16)0x0c11, (fx16)0x0a82, - (fx16)0x0c15, (fx16)0x0a7d, - (fx16)0x0c19, (fx16)0x0a78, - (fx16)0x0c1e, (fx16)0x0a73, - (fx16)0x0c22, (fx16)0x0a6f, - (fx16)0x0c26, (fx16)0x0a6a, - (fx16)0x0c2a, (fx16)0x0a65, - (fx16)0x0c2e, (fx16)0x0a60, - (fx16)0x0c32, (fx16)0x0a5c, - (fx16)0x0c36, (fx16)0x0a57, - (fx16)0x0c3a, (fx16)0x0a52, - (fx16)0x0c3e, (fx16)0x0a4d, - (fx16)0x0c42, (fx16)0x0a48, - (fx16)0x0c46, (fx16)0x0a44, - (fx16)0x0c4a, (fx16)0x0a3f, - (fx16)0x0c4e, (fx16)0x0a3a, - (fx16)0x0c52, (fx16)0x0a35, - (fx16)0x0c56, (fx16)0x0a30, - (fx16)0x0c5a, (fx16)0x0a2b, - (fx16)0x0c5e, (fx16)0x0a26, - (fx16)0x0c62, (fx16)0x0a22, - (fx16)0x0c66, (fx16)0x0a1d, - (fx16)0x0c6a, (fx16)0x0a18, - (fx16)0x0c6e, (fx16)0x0a13, - (fx16)0x0c72, (fx16)0x0a0e, - (fx16)0x0c76, (fx16)0x0a09, - (fx16)0x0c7a, (fx16)0x0a04, - (fx16)0x0c7e, (fx16)0x09ff, - (fx16)0x0c82, (fx16)0x09fb, - (fx16)0x0c86, (fx16)0x09f6, - (fx16)0x0c8a, (fx16)0x09f1, - (fx16)0x0c8e, (fx16)0x09ec, - (fx16)0x0c91, (fx16)0x09e7, - (fx16)0x0c95, (fx16)0x09e2, - (fx16)0x0c99, (fx16)0x09dd, - (fx16)0x0c9d, (fx16)0x09d8, - (fx16)0x0ca1, (fx16)0x09d3, - (fx16)0x0ca5, (fx16)0x09ce, - (fx16)0x0ca9, (fx16)0x09c9, - (fx16)0x0cac, (fx16)0x09c4, - (fx16)0x0cb0, (fx16)0x09bf, - (fx16)0x0cb4, (fx16)0x09ba, - (fx16)0x0cb8, (fx16)0x09b5, - (fx16)0x0cbc, (fx16)0x09b0, - (fx16)0x0cc0, (fx16)0x09ab, - (fx16)0x0cc3, (fx16)0x09a6, - (fx16)0x0cc7, (fx16)0x09a1, - (fx16)0x0ccb, (fx16)0x099c, - (fx16)0x0ccf, (fx16)0x0997, - (fx16)0x0cd2, (fx16)0x0992, - (fx16)0x0cd6, (fx16)0x098d, - (fx16)0x0cda, (fx16)0x0988, - (fx16)0x0cde, (fx16)0x0983, - (fx16)0x0ce1, (fx16)0x097e, - (fx16)0x0ce5, (fx16)0x0979, - (fx16)0x0ce9, (fx16)0x0974, - (fx16)0x0ced, (fx16)0x096f, - (fx16)0x0cf0, (fx16)0x096a, - (fx16)0x0cf4, (fx16)0x0965, - (fx16)0x0cf8, (fx16)0x095f, - (fx16)0x0cfb, (fx16)0x095a, - (fx16)0x0cff, (fx16)0x0955, - (fx16)0x0d03, (fx16)0x0950, - (fx16)0x0d06, (fx16)0x094b, - (fx16)0x0d0a, (fx16)0x0946, - (fx16)0x0d0e, (fx16)0x0941, - (fx16)0x0d11, (fx16)0x093c, - (fx16)0x0d15, (fx16)0x0937, - (fx16)0x0d18, (fx16)0x0931, - (fx16)0x0d1c, (fx16)0x092c, - (fx16)0x0d20, (fx16)0x0927, - (fx16)0x0d23, (fx16)0x0922, - (fx16)0x0d27, (fx16)0x091d, - (fx16)0x0d2a, (fx16)0x0918, - (fx16)0x0d2e, (fx16)0x0912, - (fx16)0x0d32, (fx16)0x090d, - (fx16)0x0d35, (fx16)0x0908, - (fx16)0x0d39, (fx16)0x0903, - (fx16)0x0d3c, (fx16)0x08fe, - (fx16)0x0d40, (fx16)0x08f8, - (fx16)0x0d43, (fx16)0x08f3, - (fx16)0x0d47, (fx16)0x08ee, - (fx16)0x0d4a, (fx16)0x08e9, - (fx16)0x0d4e, (fx16)0x08e4, - (fx16)0x0d51, (fx16)0x08de, - (fx16)0x0d55, (fx16)0x08d9, - (fx16)0x0d58, (fx16)0x08d4, - (fx16)0x0d5c, (fx16)0x08cf, - (fx16)0x0d5f, (fx16)0x08c9, - (fx16)0x0d62, (fx16)0x08c4, - (fx16)0x0d66, (fx16)0x08bf, - (fx16)0x0d69, (fx16)0x08ba, - (fx16)0x0d6d, (fx16)0x08b4, - (fx16)0x0d70, (fx16)0x08af, - (fx16)0x0d74, (fx16)0x08aa, - (fx16)0x0d77, (fx16)0x08a5, - (fx16)0x0d7a, (fx16)0x089f, - (fx16)0x0d7e, (fx16)0x089a, - (fx16)0x0d81, (fx16)0x0895, - (fx16)0x0d85, (fx16)0x088f, - (fx16)0x0d88, (fx16)0x088a, - (fx16)0x0d8b, (fx16)0x0885, - (fx16)0x0d8f, (fx16)0x087f, - (fx16)0x0d92, (fx16)0x087a, - (fx16)0x0d95, (fx16)0x0875, - (fx16)0x0d99, (fx16)0x086f, - (fx16)0x0d9c, (fx16)0x086a, - (fx16)0x0d9f, (fx16)0x0865, - (fx16)0x0da2, (fx16)0x085f, - (fx16)0x0da6, (fx16)0x085a, - (fx16)0x0da9, (fx16)0x0855, - (fx16)0x0dac, (fx16)0x084f, - (fx16)0x0db0, (fx16)0x084a, - (fx16)0x0db3, (fx16)0x0845, - (fx16)0x0db6, (fx16)0x083f, - (fx16)0x0db9, (fx16)0x083a, - (fx16)0x0dbc, (fx16)0x0834, - (fx16)0x0dc0, (fx16)0x082f, - (fx16)0x0dc3, (fx16)0x082a, - (fx16)0x0dc6, (fx16)0x0824, - (fx16)0x0dc9, (fx16)0x081f, - (fx16)0x0dcc, (fx16)0x0819, - (fx16)0x0dd0, (fx16)0x0814, - (fx16)0x0dd3, (fx16)0x080e, - (fx16)0x0dd6, (fx16)0x0809, - (fx16)0x0dd9, (fx16)0x0804, - (fx16)0x0ddc, (fx16)0x07fe, - (fx16)0x0ddf, (fx16)0x07f9, - (fx16)0x0de3, (fx16)0x07f3, - (fx16)0x0de6, (fx16)0x07ee, - (fx16)0x0de9, (fx16)0x07e8, - (fx16)0x0dec, (fx16)0x07e3, - (fx16)0x0def, (fx16)0x07dd, - (fx16)0x0df2, (fx16)0x07d8, - (fx16)0x0df5, (fx16)0x07d2, - (fx16)0x0df8, (fx16)0x07cd, - (fx16)0x0dfb, (fx16)0x07c8, - (fx16)0x0dfe, (fx16)0x07c2, - (fx16)0x0e01, (fx16)0x07bd, - (fx16)0x0e04, (fx16)0x07b7, - (fx16)0x0e07, (fx16)0x07b2, - (fx16)0x0e0a, (fx16)0x07ac, - (fx16)0x0e0d, (fx16)0x07a6, - (fx16)0x0e10, (fx16)0x07a1, - (fx16)0x0e13, (fx16)0x079b, - (fx16)0x0e16, (fx16)0x0796, - (fx16)0x0e19, (fx16)0x0790, - (fx16)0x0e1c, (fx16)0x078b, - (fx16)0x0e1f, (fx16)0x0785, - (fx16)0x0e22, (fx16)0x0780, - (fx16)0x0e25, (fx16)0x077a, - (fx16)0x0e28, (fx16)0x0775, - (fx16)0x0e2b, (fx16)0x076f, - (fx16)0x0e2e, (fx16)0x076a, - (fx16)0x0e31, (fx16)0x0764, - (fx16)0x0e34, (fx16)0x075e, - (fx16)0x0e37, (fx16)0x0759, - (fx16)0x0e3a, (fx16)0x0753, - (fx16)0x0e3c, (fx16)0x074e, - (fx16)0x0e3f, (fx16)0x0748, - (fx16)0x0e42, (fx16)0x0742, - (fx16)0x0e45, (fx16)0x073d, - (fx16)0x0e48, (fx16)0x0737, - (fx16)0x0e4b, (fx16)0x0732, - (fx16)0x0e4d, (fx16)0x072c, - (fx16)0x0e50, (fx16)0x0726, - (fx16)0x0e53, (fx16)0x0721, - (fx16)0x0e56, (fx16)0x071b, - (fx16)0x0e59, (fx16)0x0715, - (fx16)0x0e5b, (fx16)0x0710, - (fx16)0x0e5e, (fx16)0x070a, - (fx16)0x0e61, (fx16)0x0705, - (fx16)0x0e64, (fx16)0x06ff, - (fx16)0x0e66, (fx16)0x06f9, - (fx16)0x0e69, (fx16)0x06f4, - (fx16)0x0e6c, (fx16)0x06ee, - (fx16)0x0e6f, (fx16)0x06e8, - (fx16)0x0e71, (fx16)0x06e3, - (fx16)0x0e74, (fx16)0x06dd, - (fx16)0x0e77, (fx16)0x06d7, - (fx16)0x0e79, (fx16)0x06d2, - (fx16)0x0e7c, (fx16)0x06cc, - (fx16)0x0e7f, (fx16)0x06c6, - (fx16)0x0e81, (fx16)0x06c1, - (fx16)0x0e84, (fx16)0x06bb, - (fx16)0x0e87, (fx16)0x06b5, - (fx16)0x0e89, (fx16)0x06af, - (fx16)0x0e8c, (fx16)0x06aa, - (fx16)0x0e8f, (fx16)0x06a4, - (fx16)0x0e91, (fx16)0x069e, - (fx16)0x0e94, (fx16)0x0699, - (fx16)0x0e96, (fx16)0x0693, - (fx16)0x0e99, (fx16)0x068d, - (fx16)0x0e9b, (fx16)0x0687, - (fx16)0x0e9e, (fx16)0x0682, - (fx16)0x0ea1, (fx16)0x067c, - (fx16)0x0ea3, (fx16)0x0676, - (fx16)0x0ea6, (fx16)0x0670, - (fx16)0x0ea8, (fx16)0x066b, - (fx16)0x0eab, (fx16)0x0665, - (fx16)0x0ead, (fx16)0x065f, - (fx16)0x0eb0, (fx16)0x0659, - (fx16)0x0eb2, (fx16)0x0654, - (fx16)0x0eb5, (fx16)0x064e, - (fx16)0x0eb7, (fx16)0x0648, - (fx16)0x0eba, (fx16)0x0642, - (fx16)0x0ebc, (fx16)0x063c, - (fx16)0x0ebf, (fx16)0x0637, - (fx16)0x0ec1, (fx16)0x0631, - (fx16)0x0ec3, (fx16)0x062b, - (fx16)0x0ec6, (fx16)0x0625, - (fx16)0x0ec8, (fx16)0x061f, - (fx16)0x0ecb, (fx16)0x061a, - (fx16)0x0ecd, (fx16)0x0614, - (fx16)0x0ecf, (fx16)0x060e, - (fx16)0x0ed2, (fx16)0x0608, - (fx16)0x0ed4, (fx16)0x0602, - (fx16)0x0ed6, (fx16)0x05fd, - (fx16)0x0ed9, (fx16)0x05f7, - (fx16)0x0edb, (fx16)0x05f1, - (fx16)0x0edd, (fx16)0x05eb, - (fx16)0x0ee0, (fx16)0x05e5, - (fx16)0x0ee2, (fx16)0x05df, - (fx16)0x0ee4, (fx16)0x05da, - (fx16)0x0ee7, (fx16)0x05d4, - (fx16)0x0ee9, (fx16)0x05ce, - (fx16)0x0eeb, (fx16)0x05c8, - (fx16)0x0eee, (fx16)0x05c2, - (fx16)0x0ef0, (fx16)0x05bc, - (fx16)0x0ef2, (fx16)0x05b6, - (fx16)0x0ef4, (fx16)0x05b1, - (fx16)0x0ef7, (fx16)0x05ab, - (fx16)0x0ef9, (fx16)0x05a5, - (fx16)0x0efb, (fx16)0x059f, - (fx16)0x0efd, (fx16)0x0599, - (fx16)0x0eff, (fx16)0x0593, - (fx16)0x0f02, (fx16)0x058d, - (fx16)0x0f04, (fx16)0x0587, - (fx16)0x0f06, (fx16)0x0581, - (fx16)0x0f08, (fx16)0x057c, - (fx16)0x0f0a, (fx16)0x0576, - (fx16)0x0f0c, (fx16)0x0570, - (fx16)0x0f0e, (fx16)0x056a, - (fx16)0x0f11, (fx16)0x0564, - (fx16)0x0f13, (fx16)0x055e, - (fx16)0x0f15, (fx16)0x0558, - (fx16)0x0f17, (fx16)0x0552, - (fx16)0x0f19, (fx16)0x054c, - (fx16)0x0f1b, (fx16)0x0546, - (fx16)0x0f1d, (fx16)0x0540, - (fx16)0x0f1f, (fx16)0x053a, - (fx16)0x0f21, (fx16)0x0534, - (fx16)0x0f23, (fx16)0x052f, - (fx16)0x0f25, (fx16)0x0529, - (fx16)0x0f27, (fx16)0x0523, - (fx16)0x0f29, (fx16)0x051d, - (fx16)0x0f2b, (fx16)0x0517, - (fx16)0x0f2d, (fx16)0x0511, - (fx16)0x0f2f, (fx16)0x050b, - (fx16)0x0f31, (fx16)0x0505, - (fx16)0x0f33, (fx16)0x04ff, - (fx16)0x0f35, (fx16)0x04f9, - (fx16)0x0f37, (fx16)0x04f3, - (fx16)0x0f39, (fx16)0x04ed, - (fx16)0x0f3b, (fx16)0x04e7, - (fx16)0x0f3d, (fx16)0x04e1, - (fx16)0x0f3f, (fx16)0x04db, - (fx16)0x0f41, (fx16)0x04d5, - (fx16)0x0f43, (fx16)0x04cf, - (fx16)0x0f45, (fx16)0x04c9, - (fx16)0x0f46, (fx16)0x04c3, - (fx16)0x0f48, (fx16)0x04bd, - (fx16)0x0f4a, (fx16)0x04b7, - (fx16)0x0f4c, (fx16)0x04b1, - (fx16)0x0f4e, (fx16)0x04ab, - (fx16)0x0f50, (fx16)0x04a5, - (fx16)0x0f51, (fx16)0x049f, - (fx16)0x0f53, (fx16)0x0499, - (fx16)0x0f55, (fx16)0x0493, - (fx16)0x0f57, (fx16)0x048d, - (fx16)0x0f59, (fx16)0x0487, - (fx16)0x0f5a, (fx16)0x0481, - (fx16)0x0f5c, (fx16)0x047b, - (fx16)0x0f5e, (fx16)0x0475, - (fx16)0x0f60, (fx16)0x046f, - (fx16)0x0f61, (fx16)0x0469, - (fx16)0x0f63, (fx16)0x0463, - (fx16)0x0f65, (fx16)0x045d, - (fx16)0x0f67, (fx16)0x0457, - (fx16)0x0f68, (fx16)0x0451, - (fx16)0x0f6a, (fx16)0x044b, - (fx16)0x0f6c, (fx16)0x0444, - (fx16)0x0f6d, (fx16)0x043e, - (fx16)0x0f6f, (fx16)0x0438, - (fx16)0x0f71, (fx16)0x0432, - (fx16)0x0f72, (fx16)0x042c, - (fx16)0x0f74, (fx16)0x0426, - (fx16)0x0f76, (fx16)0x0420, - (fx16)0x0f77, (fx16)0x041a, - (fx16)0x0f79, (fx16)0x0414, - (fx16)0x0f7a, (fx16)0x040e, - (fx16)0x0f7c, (fx16)0x0408, - (fx16)0x0f7d, (fx16)0x0402, - (fx16)0x0f7f, (fx16)0x03fc, - (fx16)0x0f81, (fx16)0x03f6, - (fx16)0x0f82, (fx16)0x03ef, - (fx16)0x0f84, (fx16)0x03e9, - (fx16)0x0f85, (fx16)0x03e3, - (fx16)0x0f87, (fx16)0x03dd, - (fx16)0x0f88, (fx16)0x03d7, - (fx16)0x0f8a, (fx16)0x03d1, - (fx16)0x0f8b, (fx16)0x03cb, - (fx16)0x0f8d, (fx16)0x03c5, - (fx16)0x0f8e, (fx16)0x03bf, - (fx16)0x0f90, (fx16)0x03b9, - (fx16)0x0f91, (fx16)0x03b2, - (fx16)0x0f93, (fx16)0x03ac, - (fx16)0x0f94, (fx16)0x03a6, - (fx16)0x0f95, (fx16)0x03a0, - (fx16)0x0f97, (fx16)0x039a, - (fx16)0x0f98, (fx16)0x0394, - (fx16)0x0f9a, (fx16)0x038e, - (fx16)0x0f9b, (fx16)0x0388, - (fx16)0x0f9c, (fx16)0x0381, - (fx16)0x0f9e, (fx16)0x037b, - (fx16)0x0f9f, (fx16)0x0375, - (fx16)0x0fa1, (fx16)0x036f, - (fx16)0x0fa2, (fx16)0x0369, - (fx16)0x0fa3, (fx16)0x0363, - (fx16)0x0fa5, (fx16)0x035d, - (fx16)0x0fa6, (fx16)0x0356, - (fx16)0x0fa7, (fx16)0x0350, - (fx16)0x0fa8, (fx16)0x034a, - (fx16)0x0faa, (fx16)0x0344, - (fx16)0x0fab, (fx16)0x033e, - (fx16)0x0fac, (fx16)0x0338, - (fx16)0x0fae, (fx16)0x0332, - (fx16)0x0faf, (fx16)0x032b, - (fx16)0x0fb0, (fx16)0x0325, - (fx16)0x0fb1, (fx16)0x031f, - (fx16)0x0fb3, (fx16)0x0319, - (fx16)0x0fb4, (fx16)0x0313, - (fx16)0x0fb5, (fx16)0x030d, - (fx16)0x0fb6, (fx16)0x0306, - (fx16)0x0fb7, (fx16)0x0300, - (fx16)0x0fb8, (fx16)0x02fa, - (fx16)0x0fba, (fx16)0x02f4, - (fx16)0x0fbb, (fx16)0x02ee, - (fx16)0x0fbc, (fx16)0x02e8, - (fx16)0x0fbd, (fx16)0x02e1, - (fx16)0x0fbe, (fx16)0x02db, - (fx16)0x0fbf, (fx16)0x02d5, - (fx16)0x0fc0, (fx16)0x02cf, - (fx16)0x0fc2, (fx16)0x02c9, - (fx16)0x0fc3, (fx16)0x02c2, - (fx16)0x0fc4, (fx16)0x02bc, - (fx16)0x0fc5, (fx16)0x02b6, - (fx16)0x0fc6, (fx16)0x02b0, - (fx16)0x0fc7, (fx16)0x02aa, - (fx16)0x0fc8, (fx16)0x02a3, - (fx16)0x0fc9, (fx16)0x029d, - (fx16)0x0fca, (fx16)0x0297, - (fx16)0x0fcb, (fx16)0x0291, - (fx16)0x0fcc, (fx16)0x028b, - (fx16)0x0fcd, (fx16)0x0284, - (fx16)0x0fce, (fx16)0x027e, - (fx16)0x0fcf, (fx16)0x0278, - (fx16)0x0fd0, (fx16)0x0272, - (fx16)0x0fd1, (fx16)0x026c, - (fx16)0x0fd2, (fx16)0x0265, - (fx16)0x0fd3, (fx16)0x025f, - (fx16)0x0fd4, (fx16)0x0259, - (fx16)0x0fd5, (fx16)0x0253, - (fx16)0x0fd5, (fx16)0x024d, - (fx16)0x0fd6, (fx16)0x0246, - (fx16)0x0fd7, (fx16)0x0240, - (fx16)0x0fd8, (fx16)0x023a, - (fx16)0x0fd9, (fx16)0x0234, - (fx16)0x0fda, (fx16)0x022d, - (fx16)0x0fdb, (fx16)0x0227, - (fx16)0x0fdc, (fx16)0x0221, - (fx16)0x0fdc, (fx16)0x021b, - (fx16)0x0fdd, (fx16)0x0215, - (fx16)0x0fde, (fx16)0x020e, - (fx16)0x0fdf, (fx16)0x0208, - (fx16)0x0fe0, (fx16)0x0202, - (fx16)0x0fe0, (fx16)0x01fc, - (fx16)0x0fe1, (fx16)0x01f5, - (fx16)0x0fe2, (fx16)0x01ef, - (fx16)0x0fe3, (fx16)0x01e9, - (fx16)0x0fe3, (fx16)0x01e3, - (fx16)0x0fe4, (fx16)0x01dc, - (fx16)0x0fe5, (fx16)0x01d6, - (fx16)0x0fe6, (fx16)0x01d0, - (fx16)0x0fe6, (fx16)0x01ca, - (fx16)0x0fe7, (fx16)0x01c3, - (fx16)0x0fe8, (fx16)0x01bd, - (fx16)0x0fe8, (fx16)0x01b7, - (fx16)0x0fe9, (fx16)0x01b1, - (fx16)0x0fea, (fx16)0x01aa, - (fx16)0x0fea, (fx16)0x01a4, - (fx16)0x0feb, (fx16)0x019e, - (fx16)0x0fec, (fx16)0x0198, - (fx16)0x0fec, (fx16)0x0191, - (fx16)0x0fed, (fx16)0x018b, - (fx16)0x0fed, (fx16)0x0185, - (fx16)0x0fee, (fx16)0x017f, - (fx16)0x0fef, (fx16)0x0178, - (fx16)0x0fef, (fx16)0x0172, - (fx16)0x0ff0, (fx16)0x016c, - (fx16)0x0ff0, (fx16)0x0166, - (fx16)0x0ff1, (fx16)0x015f, - (fx16)0x0ff1, (fx16)0x0159, - (fx16)0x0ff2, (fx16)0x0153, - (fx16)0x0ff2, (fx16)0x014d, - (fx16)0x0ff3, (fx16)0x0146, - (fx16)0x0ff3, (fx16)0x0140, - (fx16)0x0ff4, (fx16)0x013a, - (fx16)0x0ff4, (fx16)0x0134, - (fx16)0x0ff5, (fx16)0x012d, - (fx16)0x0ff5, (fx16)0x0127, - (fx16)0x0ff6, (fx16)0x0121, - (fx16)0x0ff6, (fx16)0x011b, - (fx16)0x0ff7, (fx16)0x0114, - (fx16)0x0ff7, (fx16)0x010e, - (fx16)0x0ff8, (fx16)0x0108, - (fx16)0x0ff8, (fx16)0x0101, - (fx16)0x0ff8, (fx16)0x00fb, - (fx16)0x0ff9, (fx16)0x00f5, - (fx16)0x0ff9, (fx16)0x00ef, - (fx16)0x0ff9, (fx16)0x00e8, - (fx16)0x0ffa, (fx16)0x00e2, - (fx16)0x0ffa, (fx16)0x00dc, - (fx16)0x0ffa, (fx16)0x00d6, - (fx16)0x0ffb, (fx16)0x00cf, - (fx16)0x0ffb, (fx16)0x00c9, - (fx16)0x0ffb, (fx16)0x00c3, - (fx16)0x0ffc, (fx16)0x00bc, - (fx16)0x0ffc, (fx16)0x00b6, - (fx16)0x0ffc, (fx16)0x00b0, - (fx16)0x0ffc, (fx16)0x00aa, - (fx16)0x0ffd, (fx16)0x00a3, - (fx16)0x0ffd, (fx16)0x009d, - (fx16)0x0ffd, (fx16)0x0097, - (fx16)0x0ffd, (fx16)0x0090, - (fx16)0x0ffe, (fx16)0x008a, - (fx16)0x0ffe, (fx16)0x0084, - (fx16)0x0ffe, (fx16)0x007e, - (fx16)0x0ffe, (fx16)0x0077, - (fx16)0x0ffe, (fx16)0x0071, - (fx16)0x0fff, (fx16)0x006b, - (fx16)0x0fff, (fx16)0x0065, - (fx16)0x0fff, (fx16)0x005e, - (fx16)0x0fff, (fx16)0x0058, - (fx16)0x0fff, (fx16)0x0052, - (fx16)0x0fff, (fx16)0x004b, - (fx16)0x0fff, (fx16)0x0045, - (fx16)0x1000, (fx16)0x003f, - (fx16)0x1000, (fx16)0x0039, - (fx16)0x1000, (fx16)0x0032, - (fx16)0x1000, (fx16)0x002c, - (fx16)0x1000, (fx16)0x0026, - (fx16)0x1000, (fx16)0x001f, - (fx16)0x1000, (fx16)0x0019, - (fx16)0x1000, (fx16)0x0013, - (fx16)0x1000, (fx16)0x000d, - (fx16)0x1000, (fx16)0x0006, - (fx16)0x1000, (fx16)0x0000, - (fx16)0x1000, (fx16)0xfffa, - (fx16)0x1000, (fx16)0xfff3, - (fx16)0x1000, (fx16)0xffed, - (fx16)0x1000, (fx16)0xffe7, - (fx16)0x1000, (fx16)0xffe1, - (fx16)0x1000, (fx16)0xffda, - (fx16)0x1000, (fx16)0xffd4, - (fx16)0x1000, (fx16)0xffce, - (fx16)0x1000, (fx16)0xffc7, - (fx16)0x1000, (fx16)0xffc1, - (fx16)0x0fff, (fx16)0xffbb, - (fx16)0x0fff, (fx16)0xffb5, - (fx16)0x0fff, (fx16)0xffae, - (fx16)0x0fff, (fx16)0xffa8, - (fx16)0x0fff, (fx16)0xffa2, - (fx16)0x0fff, (fx16)0xff9b, - (fx16)0x0fff, (fx16)0xff95, - (fx16)0x0ffe, (fx16)0xff8f, - (fx16)0x0ffe, (fx16)0xff89, - (fx16)0x0ffe, (fx16)0xff82, - (fx16)0x0ffe, (fx16)0xff7c, - (fx16)0x0ffe, (fx16)0xff76, - (fx16)0x0ffd, (fx16)0xff70, - (fx16)0x0ffd, (fx16)0xff69, - (fx16)0x0ffd, (fx16)0xff63, - (fx16)0x0ffd, (fx16)0xff5d, - (fx16)0x0ffc, (fx16)0xff56, - (fx16)0x0ffc, (fx16)0xff50, - (fx16)0x0ffc, (fx16)0xff4a, - (fx16)0x0ffc, (fx16)0xff44, - (fx16)0x0ffb, (fx16)0xff3d, - (fx16)0x0ffb, (fx16)0xff37, - (fx16)0x0ffb, (fx16)0xff31, - (fx16)0x0ffa, (fx16)0xff2a, - (fx16)0x0ffa, (fx16)0xff24, - (fx16)0x0ffa, (fx16)0xff1e, - (fx16)0x0ff9, (fx16)0xff18, - (fx16)0x0ff9, (fx16)0xff11, - (fx16)0x0ff9, (fx16)0xff0b, - (fx16)0x0ff8, (fx16)0xff05, - (fx16)0x0ff8, (fx16)0xfeff, - (fx16)0x0ff8, (fx16)0xfef8, - (fx16)0x0ff7, (fx16)0xfef2, - (fx16)0x0ff7, (fx16)0xfeec, - (fx16)0x0ff6, (fx16)0xfee5, - (fx16)0x0ff6, (fx16)0xfedf, - (fx16)0x0ff5, (fx16)0xfed9, - (fx16)0x0ff5, (fx16)0xfed3, - (fx16)0x0ff4, (fx16)0xfecc, - (fx16)0x0ff4, (fx16)0xfec6, - (fx16)0x0ff3, (fx16)0xfec0, - (fx16)0x0ff3, (fx16)0xfeba, - (fx16)0x0ff2, (fx16)0xfeb3, - (fx16)0x0ff2, (fx16)0xfead, - (fx16)0x0ff1, (fx16)0xfea7, - (fx16)0x0ff1, (fx16)0xfea1, - (fx16)0x0ff0, (fx16)0xfe9a, - (fx16)0x0ff0, (fx16)0xfe94, - (fx16)0x0fef, (fx16)0xfe8e, - (fx16)0x0fef, (fx16)0xfe88, - (fx16)0x0fee, (fx16)0xfe81, - (fx16)0x0fed, (fx16)0xfe7b, - (fx16)0x0fed, (fx16)0xfe75, - (fx16)0x0fec, (fx16)0xfe6f, - (fx16)0x0fec, (fx16)0xfe68, - (fx16)0x0feb, (fx16)0xfe62, - (fx16)0x0fea, (fx16)0xfe5c, - (fx16)0x0fea, (fx16)0xfe56, - (fx16)0x0fe9, (fx16)0xfe4f, - (fx16)0x0fe8, (fx16)0xfe49, - (fx16)0x0fe8, (fx16)0xfe43, - (fx16)0x0fe7, (fx16)0xfe3d, - (fx16)0x0fe6, (fx16)0xfe36, - (fx16)0x0fe6, (fx16)0xfe30, - (fx16)0x0fe5, (fx16)0xfe2a, - (fx16)0x0fe4, (fx16)0xfe24, - (fx16)0x0fe3, (fx16)0xfe1d, - (fx16)0x0fe3, (fx16)0xfe17, - (fx16)0x0fe2, (fx16)0xfe11, - (fx16)0x0fe1, (fx16)0xfe0b, - (fx16)0x0fe0, (fx16)0xfe04, - (fx16)0x0fe0, (fx16)0xfdfe, - (fx16)0x0fdf, (fx16)0xfdf8, - (fx16)0x0fde, (fx16)0xfdf2, - (fx16)0x0fdd, (fx16)0xfdeb, - (fx16)0x0fdc, (fx16)0xfde5, - (fx16)0x0fdc, (fx16)0xfddf, - (fx16)0x0fdb, (fx16)0xfdd9, - (fx16)0x0fda, (fx16)0xfdd3, - (fx16)0x0fd9, (fx16)0xfdcc, - (fx16)0x0fd8, (fx16)0xfdc6, - (fx16)0x0fd7, (fx16)0xfdc0, - (fx16)0x0fd6, (fx16)0xfdba, - (fx16)0x0fd5, (fx16)0xfdb3, - (fx16)0x0fd5, (fx16)0xfdad, - (fx16)0x0fd4, (fx16)0xfda7, - (fx16)0x0fd3, (fx16)0xfda1, - (fx16)0x0fd2, (fx16)0xfd9b, - (fx16)0x0fd1, (fx16)0xfd94, - (fx16)0x0fd0, (fx16)0xfd8e, - (fx16)0x0fcf, (fx16)0xfd88, - (fx16)0x0fce, (fx16)0xfd82, - (fx16)0x0fcd, (fx16)0xfd7c, - (fx16)0x0fcc, (fx16)0xfd75, - (fx16)0x0fcb, (fx16)0xfd6f, - (fx16)0x0fca, (fx16)0xfd69, - (fx16)0x0fc9, (fx16)0xfd63, - (fx16)0x0fc8, (fx16)0xfd5d, - (fx16)0x0fc7, (fx16)0xfd56, - (fx16)0x0fc6, (fx16)0xfd50, - (fx16)0x0fc5, (fx16)0xfd4a, - (fx16)0x0fc4, (fx16)0xfd44, - (fx16)0x0fc3, (fx16)0xfd3e, - (fx16)0x0fc2, (fx16)0xfd37, - (fx16)0x0fc0, (fx16)0xfd31, - (fx16)0x0fbf, (fx16)0xfd2b, - (fx16)0x0fbe, (fx16)0xfd25, - (fx16)0x0fbd, (fx16)0xfd1f, - (fx16)0x0fbc, (fx16)0xfd18, - (fx16)0x0fbb, (fx16)0xfd12, - (fx16)0x0fba, (fx16)0xfd0c, - (fx16)0x0fb8, (fx16)0xfd06, - (fx16)0x0fb7, (fx16)0xfd00, - (fx16)0x0fb6, (fx16)0xfcfa, - (fx16)0x0fb5, (fx16)0xfcf3, - (fx16)0x0fb4, (fx16)0xfced, - (fx16)0x0fb3, (fx16)0xfce7, - (fx16)0x0fb1, (fx16)0xfce1, - (fx16)0x0fb0, (fx16)0xfcdb, - (fx16)0x0faf, (fx16)0xfcd5, - (fx16)0x0fae, (fx16)0xfcce, - (fx16)0x0fac, (fx16)0xfcc8, - (fx16)0x0fab, (fx16)0xfcc2, - (fx16)0x0faa, (fx16)0xfcbc, - (fx16)0x0fa8, (fx16)0xfcb6, - (fx16)0x0fa7, (fx16)0xfcb0, - (fx16)0x0fa6, (fx16)0xfcaa, - (fx16)0x0fa5, (fx16)0xfca3, - (fx16)0x0fa3, (fx16)0xfc9d, - (fx16)0x0fa2, (fx16)0xfc97, - (fx16)0x0fa1, (fx16)0xfc91, - (fx16)0x0f9f, (fx16)0xfc8b, - (fx16)0x0f9e, (fx16)0xfc85, - (fx16)0x0f9c, (fx16)0xfc7f, - (fx16)0x0f9b, (fx16)0xfc78, - (fx16)0x0f9a, (fx16)0xfc72, - (fx16)0x0f98, (fx16)0xfc6c, - (fx16)0x0f97, (fx16)0xfc66, - (fx16)0x0f95, (fx16)0xfc60, - (fx16)0x0f94, (fx16)0xfc5a, - (fx16)0x0f93, (fx16)0xfc54, - (fx16)0x0f91, (fx16)0xfc4e, - (fx16)0x0f90, (fx16)0xfc47, - (fx16)0x0f8e, (fx16)0xfc41, - (fx16)0x0f8d, (fx16)0xfc3b, - (fx16)0x0f8b, (fx16)0xfc35, - (fx16)0x0f8a, (fx16)0xfc2f, - (fx16)0x0f88, (fx16)0xfc29, - (fx16)0x0f87, (fx16)0xfc23, - (fx16)0x0f85, (fx16)0xfc1d, - (fx16)0x0f84, (fx16)0xfc17, - (fx16)0x0f82, (fx16)0xfc11, - (fx16)0x0f81, (fx16)0xfc0a, - (fx16)0x0f7f, (fx16)0xfc04, - (fx16)0x0f7d, (fx16)0xfbfe, - (fx16)0x0f7c, (fx16)0xfbf8, - (fx16)0x0f7a, (fx16)0xfbf2, - (fx16)0x0f79, (fx16)0xfbec, - (fx16)0x0f77, (fx16)0xfbe6, - (fx16)0x0f76, (fx16)0xfbe0, - (fx16)0x0f74, (fx16)0xfbda, - (fx16)0x0f72, (fx16)0xfbd4, - (fx16)0x0f71, (fx16)0xfbce, - (fx16)0x0f6f, (fx16)0xfbc8, - (fx16)0x0f6d, (fx16)0xfbc2, - (fx16)0x0f6c, (fx16)0xfbbc, - (fx16)0x0f6a, (fx16)0xfbb5, - (fx16)0x0f68, (fx16)0xfbaf, - (fx16)0x0f67, (fx16)0xfba9, - (fx16)0x0f65, (fx16)0xfba3, - (fx16)0x0f63, (fx16)0xfb9d, - (fx16)0x0f61, (fx16)0xfb97, - (fx16)0x0f60, (fx16)0xfb91, - (fx16)0x0f5e, (fx16)0xfb8b, - (fx16)0x0f5c, (fx16)0xfb85, - (fx16)0x0f5a, (fx16)0xfb7f, - (fx16)0x0f59, (fx16)0xfb79, - (fx16)0x0f57, (fx16)0xfb73, - (fx16)0x0f55, (fx16)0xfb6d, - (fx16)0x0f53, (fx16)0xfb67, - (fx16)0x0f51, (fx16)0xfb61, - (fx16)0x0f50, (fx16)0xfb5b, - (fx16)0x0f4e, (fx16)0xfb55, - (fx16)0x0f4c, (fx16)0xfb4f, - (fx16)0x0f4a, (fx16)0xfb49, - (fx16)0x0f48, (fx16)0xfb43, - (fx16)0x0f46, (fx16)0xfb3d, - (fx16)0x0f45, (fx16)0xfb37, - (fx16)0x0f43, (fx16)0xfb31, - (fx16)0x0f41, (fx16)0xfb2b, - (fx16)0x0f3f, (fx16)0xfb25, - (fx16)0x0f3d, (fx16)0xfb1f, - (fx16)0x0f3b, (fx16)0xfb19, - (fx16)0x0f39, (fx16)0xfb13, - (fx16)0x0f37, (fx16)0xfb0d, - (fx16)0x0f35, (fx16)0xfb07, - (fx16)0x0f33, (fx16)0xfb01, - (fx16)0x0f31, (fx16)0xfafb, - (fx16)0x0f2f, (fx16)0xfaf5, - (fx16)0x0f2d, (fx16)0xfaef, - (fx16)0x0f2b, (fx16)0xfae9, - (fx16)0x0f29, (fx16)0xfae3, - (fx16)0x0f27, (fx16)0xfadd, - (fx16)0x0f25, (fx16)0xfad7, - (fx16)0x0f23, (fx16)0xfad1, - (fx16)0x0f21, (fx16)0xfacc, - (fx16)0x0f1f, (fx16)0xfac6, - (fx16)0x0f1d, (fx16)0xfac0, - (fx16)0x0f1b, (fx16)0xfaba, - (fx16)0x0f19, (fx16)0xfab4, - (fx16)0x0f17, (fx16)0xfaae, - (fx16)0x0f15, (fx16)0xfaa8, - (fx16)0x0f13, (fx16)0xfaa2, - (fx16)0x0f11, (fx16)0xfa9c, - (fx16)0x0f0e, (fx16)0xfa96, - (fx16)0x0f0c, (fx16)0xfa90, - (fx16)0x0f0a, (fx16)0xfa8a, - (fx16)0x0f08, (fx16)0xfa84, - (fx16)0x0f06, (fx16)0xfa7f, - (fx16)0x0f04, (fx16)0xfa79, - (fx16)0x0f02, (fx16)0xfa73, - (fx16)0x0eff, (fx16)0xfa6d, - (fx16)0x0efd, (fx16)0xfa67, - (fx16)0x0efb, (fx16)0xfa61, - (fx16)0x0ef9, (fx16)0xfa5b, - (fx16)0x0ef7, (fx16)0xfa55, - (fx16)0x0ef4, (fx16)0xfa4f, - (fx16)0x0ef2, (fx16)0xfa4a, - (fx16)0x0ef0, (fx16)0xfa44, - (fx16)0x0eee, (fx16)0xfa3e, - (fx16)0x0eeb, (fx16)0xfa38, - (fx16)0x0ee9, (fx16)0xfa32, - (fx16)0x0ee7, (fx16)0xfa2c, - (fx16)0x0ee4, (fx16)0xfa26, - (fx16)0x0ee2, (fx16)0xfa21, - (fx16)0x0ee0, (fx16)0xfa1b, - (fx16)0x0edd, (fx16)0xfa15, - (fx16)0x0edb, (fx16)0xfa0f, - (fx16)0x0ed9, (fx16)0xfa09, - (fx16)0x0ed6, (fx16)0xfa03, - (fx16)0x0ed4, (fx16)0xf9fe, - (fx16)0x0ed2, (fx16)0xf9f8, - (fx16)0x0ecf, (fx16)0xf9f2, - (fx16)0x0ecd, (fx16)0xf9ec, - (fx16)0x0ecb, (fx16)0xf9e6, - (fx16)0x0ec8, (fx16)0xf9e1, - (fx16)0x0ec6, (fx16)0xf9db, - (fx16)0x0ec3, (fx16)0xf9d5, - (fx16)0x0ec1, (fx16)0xf9cf, - (fx16)0x0ebf, (fx16)0xf9c9, - (fx16)0x0ebc, (fx16)0xf9c4, - (fx16)0x0eba, (fx16)0xf9be, - (fx16)0x0eb7, (fx16)0xf9b8, - (fx16)0x0eb5, (fx16)0xf9b2, - (fx16)0x0eb2, (fx16)0xf9ac, - (fx16)0x0eb0, (fx16)0xf9a7, - (fx16)0x0ead, (fx16)0xf9a1, - (fx16)0x0eab, (fx16)0xf99b, - (fx16)0x0ea8, (fx16)0xf995, - (fx16)0x0ea6, (fx16)0xf990, - (fx16)0x0ea3, (fx16)0xf98a, - (fx16)0x0ea1, (fx16)0xf984, - (fx16)0x0e9e, (fx16)0xf97e, - (fx16)0x0e9b, (fx16)0xf979, - (fx16)0x0e99, (fx16)0xf973, - (fx16)0x0e96, (fx16)0xf96d, - (fx16)0x0e94, (fx16)0xf967, - (fx16)0x0e91, (fx16)0xf962, - (fx16)0x0e8f, (fx16)0xf95c, - (fx16)0x0e8c, (fx16)0xf956, - (fx16)0x0e89, (fx16)0xf951, - (fx16)0x0e87, (fx16)0xf94b, - (fx16)0x0e84, (fx16)0xf945, - (fx16)0x0e81, (fx16)0xf93f, - (fx16)0x0e7f, (fx16)0xf93a, - (fx16)0x0e7c, (fx16)0xf934, - (fx16)0x0e79, (fx16)0xf92e, - (fx16)0x0e77, (fx16)0xf929, - (fx16)0x0e74, (fx16)0xf923, - (fx16)0x0e71, (fx16)0xf91d, - (fx16)0x0e6f, (fx16)0xf918, - (fx16)0x0e6c, (fx16)0xf912, - (fx16)0x0e69, (fx16)0xf90c, - (fx16)0x0e66, (fx16)0xf907, - (fx16)0x0e64, (fx16)0xf901, - (fx16)0x0e61, (fx16)0xf8fb, - (fx16)0x0e5e, (fx16)0xf8f6, - (fx16)0x0e5b, (fx16)0xf8f0, - (fx16)0x0e59, (fx16)0xf8eb, - (fx16)0x0e56, (fx16)0xf8e5, - (fx16)0x0e53, (fx16)0xf8df, - (fx16)0x0e50, (fx16)0xf8da, - (fx16)0x0e4d, (fx16)0xf8d4, - (fx16)0x0e4b, (fx16)0xf8ce, - (fx16)0x0e48, (fx16)0xf8c9, - (fx16)0x0e45, (fx16)0xf8c3, - (fx16)0x0e42, (fx16)0xf8be, - (fx16)0x0e3f, (fx16)0xf8b8, - (fx16)0x0e3c, (fx16)0xf8b2, - (fx16)0x0e3a, (fx16)0xf8ad, - (fx16)0x0e37, (fx16)0xf8a7, - (fx16)0x0e34, (fx16)0xf8a2, - (fx16)0x0e31, (fx16)0xf89c, - (fx16)0x0e2e, (fx16)0xf896, - (fx16)0x0e2b, (fx16)0xf891, - (fx16)0x0e28, (fx16)0xf88b, - (fx16)0x0e25, (fx16)0xf886, - (fx16)0x0e22, (fx16)0xf880, - (fx16)0x0e1f, (fx16)0xf87b, - (fx16)0x0e1c, (fx16)0xf875, - (fx16)0x0e19, (fx16)0xf870, - (fx16)0x0e16, (fx16)0xf86a, - (fx16)0x0e13, (fx16)0xf865, - (fx16)0x0e10, (fx16)0xf85f, - (fx16)0x0e0d, (fx16)0xf85a, - (fx16)0x0e0a, (fx16)0xf854, - (fx16)0x0e07, (fx16)0xf84e, - (fx16)0x0e04, (fx16)0xf849, - (fx16)0x0e01, (fx16)0xf843, - (fx16)0x0dfe, (fx16)0xf83e, - (fx16)0x0dfb, (fx16)0xf838, - (fx16)0x0df8, (fx16)0xf833, - (fx16)0x0df5, (fx16)0xf82e, - (fx16)0x0df2, (fx16)0xf828, - (fx16)0x0def, (fx16)0xf823, - (fx16)0x0dec, (fx16)0xf81d, - (fx16)0x0de9, (fx16)0xf818, - (fx16)0x0de6, (fx16)0xf812, - (fx16)0x0de3, (fx16)0xf80d, - (fx16)0x0ddf, (fx16)0xf807, - (fx16)0x0ddc, (fx16)0xf802, - (fx16)0x0dd9, (fx16)0xf7fc, - (fx16)0x0dd6, (fx16)0xf7f7, - (fx16)0x0dd3, (fx16)0xf7f2, - (fx16)0x0dd0, (fx16)0xf7ec, - (fx16)0x0dcc, (fx16)0xf7e7, - (fx16)0x0dc9, (fx16)0xf7e1, - (fx16)0x0dc6, (fx16)0xf7dc, - (fx16)0x0dc3, (fx16)0xf7d6, - (fx16)0x0dc0, (fx16)0xf7d1, - (fx16)0x0dbc, (fx16)0xf7cc, - (fx16)0x0db9, (fx16)0xf7c6, - (fx16)0x0db6, (fx16)0xf7c1, - (fx16)0x0db3, (fx16)0xf7bb, - (fx16)0x0db0, (fx16)0xf7b6, - (fx16)0x0dac, (fx16)0xf7b1, - (fx16)0x0da9, (fx16)0xf7ab, - (fx16)0x0da6, (fx16)0xf7a6, - (fx16)0x0da2, (fx16)0xf7a1, - (fx16)0x0d9f, (fx16)0xf79b, - (fx16)0x0d9c, (fx16)0xf796, - (fx16)0x0d99, (fx16)0xf791, - (fx16)0x0d95, (fx16)0xf78b, - (fx16)0x0d92, (fx16)0xf786, - (fx16)0x0d8f, (fx16)0xf781, - (fx16)0x0d8b, (fx16)0xf77b, - (fx16)0x0d88, (fx16)0xf776, - (fx16)0x0d85, (fx16)0xf771, - (fx16)0x0d81, (fx16)0xf76b, - (fx16)0x0d7e, (fx16)0xf766, - (fx16)0x0d7a, (fx16)0xf761, - (fx16)0x0d77, (fx16)0xf75b, - (fx16)0x0d74, (fx16)0xf756, - (fx16)0x0d70, (fx16)0xf751, - (fx16)0x0d6d, (fx16)0xf74c, - (fx16)0x0d69, (fx16)0xf746, - (fx16)0x0d66, (fx16)0xf741, - (fx16)0x0d62, (fx16)0xf73c, - (fx16)0x0d5f, (fx16)0xf737, - (fx16)0x0d5c, (fx16)0xf731, - (fx16)0x0d58, (fx16)0xf72c, - (fx16)0x0d55, (fx16)0xf727, - (fx16)0x0d51, (fx16)0xf722, - (fx16)0x0d4e, (fx16)0xf71c, - (fx16)0x0d4a, (fx16)0xf717, - (fx16)0x0d47, (fx16)0xf712, - (fx16)0x0d43, (fx16)0xf70d, - (fx16)0x0d40, (fx16)0xf708, - (fx16)0x0d3c, (fx16)0xf702, - (fx16)0x0d39, (fx16)0xf6fd, - (fx16)0x0d35, (fx16)0xf6f8, - (fx16)0x0d32, (fx16)0xf6f3, - (fx16)0x0d2e, (fx16)0xf6ee, - (fx16)0x0d2a, (fx16)0xf6e8, - (fx16)0x0d27, (fx16)0xf6e3, - (fx16)0x0d23, (fx16)0xf6de, - (fx16)0x0d20, (fx16)0xf6d9, - (fx16)0x0d1c, (fx16)0xf6d4, - (fx16)0x0d18, (fx16)0xf6cf, - (fx16)0x0d15, (fx16)0xf6c9, - (fx16)0x0d11, (fx16)0xf6c4, - (fx16)0x0d0e, (fx16)0xf6bf, - (fx16)0x0d0a, (fx16)0xf6ba, - (fx16)0x0d06, (fx16)0xf6b5, - (fx16)0x0d03, (fx16)0xf6b0, - (fx16)0x0cff, (fx16)0xf6ab, - (fx16)0x0cfb, (fx16)0xf6a6, - (fx16)0x0cf8, (fx16)0xf6a1, - (fx16)0x0cf4, (fx16)0xf69b, - (fx16)0x0cf0, (fx16)0xf696, - (fx16)0x0ced, (fx16)0xf691, - (fx16)0x0ce9, (fx16)0xf68c, - (fx16)0x0ce5, (fx16)0xf687, - (fx16)0x0ce1, (fx16)0xf682, - (fx16)0x0cde, (fx16)0xf67d, - (fx16)0x0cda, (fx16)0xf678, - (fx16)0x0cd6, (fx16)0xf673, - (fx16)0x0cd2, (fx16)0xf66e, - (fx16)0x0ccf, (fx16)0xf669, - (fx16)0x0ccb, (fx16)0xf664, - (fx16)0x0cc7, (fx16)0xf65f, - (fx16)0x0cc3, (fx16)0xf65a, - (fx16)0x0cc0, (fx16)0xf655, - (fx16)0x0cbc, (fx16)0xf650, - (fx16)0x0cb8, (fx16)0xf64b, - (fx16)0x0cb4, (fx16)0xf646, - (fx16)0x0cb0, (fx16)0xf641, - (fx16)0x0cac, (fx16)0xf63c, - (fx16)0x0ca9, (fx16)0xf637, - (fx16)0x0ca5, (fx16)0xf632, - (fx16)0x0ca1, (fx16)0xf62d, - (fx16)0x0c9d, (fx16)0xf628, - (fx16)0x0c99, (fx16)0xf623, - (fx16)0x0c95, (fx16)0xf61e, - (fx16)0x0c91, (fx16)0xf619, - (fx16)0x0c8e, (fx16)0xf614, - (fx16)0x0c8a, (fx16)0xf60f, - (fx16)0x0c86, (fx16)0xf60a, - (fx16)0x0c82, (fx16)0xf605, - (fx16)0x0c7e, (fx16)0xf601, - (fx16)0x0c7a, (fx16)0xf5fc, - (fx16)0x0c76, (fx16)0xf5f7, - (fx16)0x0c72, (fx16)0xf5f2, - (fx16)0x0c6e, (fx16)0xf5ed, - (fx16)0x0c6a, (fx16)0xf5e8, - (fx16)0x0c66, (fx16)0xf5e3, - (fx16)0x0c62, (fx16)0xf5de, - (fx16)0x0c5e, (fx16)0xf5da, - (fx16)0x0c5a, (fx16)0xf5d5, - (fx16)0x0c56, (fx16)0xf5d0, - (fx16)0x0c52, (fx16)0xf5cb, - (fx16)0x0c4e, (fx16)0xf5c6, - (fx16)0x0c4a, (fx16)0xf5c1, - (fx16)0x0c46, (fx16)0xf5bc, - (fx16)0x0c42, (fx16)0xf5b8, - (fx16)0x0c3e, (fx16)0xf5b3, - (fx16)0x0c3a, (fx16)0xf5ae, - (fx16)0x0c36, (fx16)0xf5a9, - (fx16)0x0c32, (fx16)0xf5a4, - (fx16)0x0c2e, (fx16)0xf5a0, - (fx16)0x0c2a, (fx16)0xf59b, - (fx16)0x0c26, (fx16)0xf596, - (fx16)0x0c22, (fx16)0xf591, - (fx16)0x0c1e, (fx16)0xf58d, - (fx16)0x0c19, (fx16)0xf588, - (fx16)0x0c15, (fx16)0xf583, - (fx16)0x0c11, (fx16)0xf57e, - (fx16)0x0c0d, (fx16)0xf57a, - (fx16)0x0c09, (fx16)0xf575, - (fx16)0x0c05, (fx16)0xf570, - (fx16)0x0c01, (fx16)0xf56b, - (fx16)0x0bfc, (fx16)0xf567, - (fx16)0x0bf8, (fx16)0xf562, - (fx16)0x0bf4, (fx16)0xf55d, - (fx16)0x0bf0, (fx16)0xf559, - (fx16)0x0bec, (fx16)0xf554, - (fx16)0x0be8, (fx16)0xf54f, - (fx16)0x0be3, (fx16)0xf54b, - (fx16)0x0bdf, (fx16)0xf546, - (fx16)0x0bdb, (fx16)0xf541, - (fx16)0x0bd7, (fx16)0xf53d, - (fx16)0x0bd2, (fx16)0xf538, - (fx16)0x0bce, (fx16)0xf533, - (fx16)0x0bca, (fx16)0xf52f, - (fx16)0x0bc6, (fx16)0xf52a, - (fx16)0x0bc1, (fx16)0xf525, - (fx16)0x0bbd, (fx16)0xf521, - (fx16)0x0bb9, (fx16)0xf51c, - (fx16)0x0bb5, (fx16)0xf518, - (fx16)0x0bb0, (fx16)0xf513, - (fx16)0x0bac, (fx16)0xf50e, - (fx16)0x0ba8, (fx16)0xf50a, - (fx16)0x0ba3, (fx16)0xf505, - (fx16)0x0b9f, (fx16)0xf501, - (fx16)0x0b9b, (fx16)0xf4fc, - (fx16)0x0b97, (fx16)0xf4f8, - (fx16)0x0b92, (fx16)0xf4f3, - (fx16)0x0b8e, (fx16)0xf4ef, - (fx16)0x0b89, (fx16)0xf4ea, - (fx16)0x0b85, (fx16)0xf4e5, - (fx16)0x0b81, (fx16)0xf4e1, - (fx16)0x0b7c, (fx16)0xf4dc, - (fx16)0x0b78, (fx16)0xf4d8, - (fx16)0x0b74, (fx16)0xf4d3, - (fx16)0x0b6f, (fx16)0xf4cf, - (fx16)0x0b6b, (fx16)0xf4ca, - (fx16)0x0b66, (fx16)0xf4c6, - (fx16)0x0b62, (fx16)0xf4c2, - (fx16)0x0b5e, (fx16)0xf4bd, - (fx16)0x0b59, (fx16)0xf4b9, - (fx16)0x0b55, (fx16)0xf4b4, - (fx16)0x0b50, (fx16)0xf4b0, - (fx16)0x0b4c, (fx16)0xf4ab, - (fx16)0x0b47, (fx16)0xf4a7, - (fx16)0x0b43, (fx16)0xf4a2, - (fx16)0x0b3e, (fx16)0xf49e, - (fx16)0x0b3a, (fx16)0xf49a, - (fx16)0x0b36, (fx16)0xf495, - (fx16)0x0b31, (fx16)0xf491, - (fx16)0x0b2d, (fx16)0xf48c, - (fx16)0x0b28, (fx16)0xf488, - (fx16)0x0b24, (fx16)0xf484, - (fx16)0x0b1f, (fx16)0xf47f, - (fx16)0x0b1b, (fx16)0xf47b, - (fx16)0x0b16, (fx16)0xf477, - (fx16)0x0b11, (fx16)0xf472, - (fx16)0x0b0d, (fx16)0xf46e, - (fx16)0x0b08, (fx16)0xf469, - (fx16)0x0b04, (fx16)0xf465, - (fx16)0x0aff, (fx16)0xf461, - (fx16)0x0afb, (fx16)0xf45d, - (fx16)0x0af6, (fx16)0xf458, - (fx16)0x0af2, (fx16)0xf454, - (fx16)0x0aed, (fx16)0xf450, - (fx16)0x0ae8, (fx16)0xf44b, - (fx16)0x0ae4, (fx16)0xf447, - (fx16)0x0adf, (fx16)0xf443, - (fx16)0x0adb, (fx16)0xf43f, - (fx16)0x0ad6, (fx16)0xf43a, - (fx16)0x0ad1, (fx16)0xf436, - (fx16)0x0acd, (fx16)0xf432, - (fx16)0x0ac8, (fx16)0xf42e, - (fx16)0x0ac3, (fx16)0xf429, - (fx16)0x0abf, (fx16)0xf425, - (fx16)0x0aba, (fx16)0xf421, - (fx16)0x0ab5, (fx16)0xf41d, - (fx16)0x0ab1, (fx16)0xf418, - (fx16)0x0aac, (fx16)0xf414, - (fx16)0x0aa7, (fx16)0xf410, - (fx16)0x0aa3, (fx16)0xf40c, - (fx16)0x0a9e, (fx16)0xf408, - (fx16)0x0a99, (fx16)0xf404, - (fx16)0x0a95, (fx16)0xf3ff, - (fx16)0x0a90, (fx16)0xf3fb, - (fx16)0x0a8b, (fx16)0xf3f7, - (fx16)0x0a86, (fx16)0xf3f3, - (fx16)0x0a82, (fx16)0xf3ef, - (fx16)0x0a7d, (fx16)0xf3eb, - (fx16)0x0a78, (fx16)0xf3e7, - (fx16)0x0a73, (fx16)0xf3e2, - (fx16)0x0a6f, (fx16)0xf3de, - (fx16)0x0a6a, (fx16)0xf3da, - (fx16)0x0a65, (fx16)0xf3d6, - (fx16)0x0a60, (fx16)0xf3d2, - (fx16)0x0a5c, (fx16)0xf3ce, - (fx16)0x0a57, (fx16)0xf3ca, - (fx16)0x0a52, (fx16)0xf3c6, - (fx16)0x0a4d, (fx16)0xf3c2, - (fx16)0x0a48, (fx16)0xf3be, - (fx16)0x0a44, (fx16)0xf3ba, - (fx16)0x0a3f, (fx16)0xf3b6, - (fx16)0x0a3a, (fx16)0xf3b2, - (fx16)0x0a35, (fx16)0xf3ae, - (fx16)0x0a30, (fx16)0xf3aa, - (fx16)0x0a2b, (fx16)0xf3a6, - (fx16)0x0a26, (fx16)0xf3a2, - (fx16)0x0a22, (fx16)0xf39e, - (fx16)0x0a1d, (fx16)0xf39a, - (fx16)0x0a18, (fx16)0xf396, - (fx16)0x0a13, (fx16)0xf392, - (fx16)0x0a0e, (fx16)0xf38e, - (fx16)0x0a09, (fx16)0xf38a, - (fx16)0x0a04, (fx16)0xf386, - (fx16)0x09ff, (fx16)0xf382, - (fx16)0x09fb, (fx16)0xf37e, - (fx16)0x09f6, (fx16)0xf37a, - (fx16)0x09f1, (fx16)0xf376, - (fx16)0x09ec, (fx16)0xf372, - (fx16)0x09e7, (fx16)0xf36f, - (fx16)0x09e2, (fx16)0xf36b, - (fx16)0x09dd, (fx16)0xf367, - (fx16)0x09d8, (fx16)0xf363, - (fx16)0x09d3, (fx16)0xf35f, - (fx16)0x09ce, (fx16)0xf35b, - (fx16)0x09c9, (fx16)0xf357, - (fx16)0x09c4, (fx16)0xf354, - (fx16)0x09bf, (fx16)0xf350, - (fx16)0x09ba, (fx16)0xf34c, - (fx16)0x09b5, (fx16)0xf348, - (fx16)0x09b0, (fx16)0xf344, - (fx16)0x09ab, (fx16)0xf340, - (fx16)0x09a6, (fx16)0xf33d, - (fx16)0x09a1, (fx16)0xf339, - (fx16)0x099c, (fx16)0xf335, - (fx16)0x0997, (fx16)0xf331, - (fx16)0x0992, (fx16)0xf32e, - (fx16)0x098d, (fx16)0xf32a, - (fx16)0x0988, (fx16)0xf326, - (fx16)0x0983, (fx16)0xf322, - (fx16)0x097e, (fx16)0xf31f, - (fx16)0x0979, (fx16)0xf31b, - (fx16)0x0974, (fx16)0xf317, - (fx16)0x096f, (fx16)0xf313, - (fx16)0x096a, (fx16)0xf310, - (fx16)0x0965, (fx16)0xf30c, - (fx16)0x095f, (fx16)0xf308, - (fx16)0x095a, (fx16)0xf305, - (fx16)0x0955, (fx16)0xf301, - (fx16)0x0950, (fx16)0xf2fd, - (fx16)0x094b, (fx16)0xf2fa, - (fx16)0x0946, (fx16)0xf2f6, - (fx16)0x0941, (fx16)0xf2f2, - (fx16)0x093c, (fx16)0xf2ef, - (fx16)0x0937, (fx16)0xf2eb, - (fx16)0x0931, (fx16)0xf2e8, - (fx16)0x092c, (fx16)0xf2e4, - (fx16)0x0927, (fx16)0xf2e0, - (fx16)0x0922, (fx16)0xf2dd, - (fx16)0x091d, (fx16)0xf2d9, - (fx16)0x0918, (fx16)0xf2d6, - (fx16)0x0912, (fx16)0xf2d2, - (fx16)0x090d, (fx16)0xf2ce, - (fx16)0x0908, (fx16)0xf2cb, - (fx16)0x0903, (fx16)0xf2c7, - (fx16)0x08fe, (fx16)0xf2c4, - (fx16)0x08f8, (fx16)0xf2c0, - (fx16)0x08f3, (fx16)0xf2bd, - (fx16)0x08ee, (fx16)0xf2b9, - (fx16)0x08e9, (fx16)0xf2b6, - (fx16)0x08e4, (fx16)0xf2b2, - (fx16)0x08de, (fx16)0xf2af, - (fx16)0x08d9, (fx16)0xf2ab, - (fx16)0x08d4, (fx16)0xf2a8, - (fx16)0x08cf, (fx16)0xf2a4, - (fx16)0x08c9, (fx16)0xf2a1, - (fx16)0x08c4, (fx16)0xf29e, - (fx16)0x08bf, (fx16)0xf29a, - (fx16)0x08ba, (fx16)0xf297, - (fx16)0x08b4, (fx16)0xf293, - (fx16)0x08af, (fx16)0xf290, - (fx16)0x08aa, (fx16)0xf28c, - (fx16)0x08a5, (fx16)0xf289, - (fx16)0x089f, (fx16)0xf286, - (fx16)0x089a, (fx16)0xf282, - (fx16)0x0895, (fx16)0xf27f, - (fx16)0x088f, (fx16)0xf27b, - (fx16)0x088a, (fx16)0xf278, - (fx16)0x0885, (fx16)0xf275, - (fx16)0x087f, (fx16)0xf271, - (fx16)0x087a, (fx16)0xf26e, - (fx16)0x0875, (fx16)0xf26b, - (fx16)0x086f, (fx16)0xf267, - (fx16)0x086a, (fx16)0xf264, - (fx16)0x0865, (fx16)0xf261, - (fx16)0x085f, (fx16)0xf25e, - (fx16)0x085a, (fx16)0xf25a, - (fx16)0x0855, (fx16)0xf257, - (fx16)0x084f, (fx16)0xf254, - (fx16)0x084a, (fx16)0xf250, - (fx16)0x0845, (fx16)0xf24d, - (fx16)0x083f, (fx16)0xf24a, - (fx16)0x083a, (fx16)0xf247, - (fx16)0x0834, (fx16)0xf244, - (fx16)0x082f, (fx16)0xf240, - (fx16)0x082a, (fx16)0xf23d, - (fx16)0x0824, (fx16)0xf23a, - (fx16)0x081f, (fx16)0xf237, - (fx16)0x0819, (fx16)0xf234, - (fx16)0x0814, (fx16)0xf230, - (fx16)0x080e, (fx16)0xf22d, - (fx16)0x0809, (fx16)0xf22a, - (fx16)0x0804, (fx16)0xf227, - (fx16)0x07fe, (fx16)0xf224, - (fx16)0x07f9, (fx16)0xf221, - (fx16)0x07f3, (fx16)0xf21d, - (fx16)0x07ee, (fx16)0xf21a, - (fx16)0x07e8, (fx16)0xf217, - (fx16)0x07e3, (fx16)0xf214, - (fx16)0x07dd, (fx16)0xf211, - (fx16)0x07d8, (fx16)0xf20e, - (fx16)0x07d2, (fx16)0xf20b, - (fx16)0x07cd, (fx16)0xf208, - (fx16)0x07c8, (fx16)0xf205, - (fx16)0x07c2, (fx16)0xf202, - (fx16)0x07bd, (fx16)0xf1ff, - (fx16)0x07b7, (fx16)0xf1fc, - (fx16)0x07b2, (fx16)0xf1f9, - (fx16)0x07ac, (fx16)0xf1f6, - (fx16)0x07a6, (fx16)0xf1f3, - (fx16)0x07a1, (fx16)0xf1f0, - (fx16)0x079b, (fx16)0xf1ed, - (fx16)0x0796, (fx16)0xf1ea, - (fx16)0x0790, (fx16)0xf1e7, - (fx16)0x078b, (fx16)0xf1e4, - (fx16)0x0785, (fx16)0xf1e1, - (fx16)0x0780, (fx16)0xf1de, - (fx16)0x077a, (fx16)0xf1db, - (fx16)0x0775, (fx16)0xf1d8, - (fx16)0x076f, (fx16)0xf1d5, - (fx16)0x076a, (fx16)0xf1d2, - (fx16)0x0764, (fx16)0xf1cf, - (fx16)0x075e, (fx16)0xf1cc, - (fx16)0x0759, (fx16)0xf1c9, - (fx16)0x0753, (fx16)0xf1c6, - (fx16)0x074e, (fx16)0xf1c4, - (fx16)0x0748, (fx16)0xf1c1, - (fx16)0x0742, (fx16)0xf1be, - (fx16)0x073d, (fx16)0xf1bb, - (fx16)0x0737, (fx16)0xf1b8, - (fx16)0x0732, (fx16)0xf1b5, - (fx16)0x072c, (fx16)0xf1b3, - (fx16)0x0726, (fx16)0xf1b0, - (fx16)0x0721, (fx16)0xf1ad, - (fx16)0x071b, (fx16)0xf1aa, - (fx16)0x0715, (fx16)0xf1a7, - (fx16)0x0710, (fx16)0xf1a5, - (fx16)0x070a, (fx16)0xf1a2, - (fx16)0x0705, (fx16)0xf19f, - (fx16)0x06ff, (fx16)0xf19c, - (fx16)0x06f9, (fx16)0xf19a, - (fx16)0x06f4, (fx16)0xf197, - (fx16)0x06ee, (fx16)0xf194, - (fx16)0x06e8, (fx16)0xf191, - (fx16)0x06e3, (fx16)0xf18f, - (fx16)0x06dd, (fx16)0xf18c, - (fx16)0x06d7, (fx16)0xf189, - (fx16)0x06d2, (fx16)0xf187, - (fx16)0x06cc, (fx16)0xf184, - (fx16)0x06c6, (fx16)0xf181, - (fx16)0x06c1, (fx16)0xf17f, - (fx16)0x06bb, (fx16)0xf17c, - (fx16)0x06b5, (fx16)0xf179, - (fx16)0x06af, (fx16)0xf177, - (fx16)0x06aa, (fx16)0xf174, - (fx16)0x06a4, (fx16)0xf171, - (fx16)0x069e, (fx16)0xf16f, - (fx16)0x0699, (fx16)0xf16c, - (fx16)0x0693, (fx16)0xf16a, - (fx16)0x068d, (fx16)0xf167, - (fx16)0x0687, (fx16)0xf165, - (fx16)0x0682, (fx16)0xf162, - (fx16)0x067c, (fx16)0xf15f, - (fx16)0x0676, (fx16)0xf15d, - (fx16)0x0670, (fx16)0xf15a, - (fx16)0x066b, (fx16)0xf158, - (fx16)0x0665, (fx16)0xf155, - (fx16)0x065f, (fx16)0xf153, - (fx16)0x0659, (fx16)0xf150, - (fx16)0x0654, (fx16)0xf14e, - (fx16)0x064e, (fx16)0xf14b, - (fx16)0x0648, (fx16)0xf149, - (fx16)0x0642, (fx16)0xf146, - (fx16)0x063c, (fx16)0xf144, - (fx16)0x0637, (fx16)0xf141, - (fx16)0x0631, (fx16)0xf13f, - (fx16)0x062b, (fx16)0xf13d, - (fx16)0x0625, (fx16)0xf13a, - (fx16)0x061f, (fx16)0xf138, - (fx16)0x061a, (fx16)0xf135, - (fx16)0x0614, (fx16)0xf133, - (fx16)0x060e, (fx16)0xf131, - (fx16)0x0608, (fx16)0xf12e, - (fx16)0x0602, (fx16)0xf12c, - (fx16)0x05fd, (fx16)0xf12a, - (fx16)0x05f7, (fx16)0xf127, - (fx16)0x05f1, (fx16)0xf125, - (fx16)0x05eb, (fx16)0xf123, - (fx16)0x05e5, (fx16)0xf120, - (fx16)0x05df, (fx16)0xf11e, - (fx16)0x05da, (fx16)0xf11c, - (fx16)0x05d4, (fx16)0xf119, - (fx16)0x05ce, (fx16)0xf117, - (fx16)0x05c8, (fx16)0xf115, - (fx16)0x05c2, (fx16)0xf112, - (fx16)0x05bc, (fx16)0xf110, - (fx16)0x05b6, (fx16)0xf10e, - (fx16)0x05b1, (fx16)0xf10c, - (fx16)0x05ab, (fx16)0xf109, - (fx16)0x05a5, (fx16)0xf107, - (fx16)0x059f, (fx16)0xf105, - (fx16)0x0599, (fx16)0xf103, - (fx16)0x0593, (fx16)0xf101, - (fx16)0x058d, (fx16)0xf0fe, - (fx16)0x0587, (fx16)0xf0fc, - (fx16)0x0581, (fx16)0xf0fa, - (fx16)0x057c, (fx16)0xf0f8, - (fx16)0x0576, (fx16)0xf0f6, - (fx16)0x0570, (fx16)0xf0f4, - (fx16)0x056a, (fx16)0xf0f2, - (fx16)0x0564, (fx16)0xf0ef, - (fx16)0x055e, (fx16)0xf0ed, - (fx16)0x0558, (fx16)0xf0eb, - (fx16)0x0552, (fx16)0xf0e9, - (fx16)0x054c, (fx16)0xf0e7, - (fx16)0x0546, (fx16)0xf0e5, - (fx16)0x0540, (fx16)0xf0e3, - (fx16)0x053a, (fx16)0xf0e1, - (fx16)0x0534, (fx16)0xf0df, - (fx16)0x052f, (fx16)0xf0dd, - (fx16)0x0529, (fx16)0xf0db, - (fx16)0x0523, (fx16)0xf0d9, - (fx16)0x051d, (fx16)0xf0d7, - (fx16)0x0517, (fx16)0xf0d5, - (fx16)0x0511, (fx16)0xf0d3, - (fx16)0x050b, (fx16)0xf0d1, - (fx16)0x0505, (fx16)0xf0cf, - (fx16)0x04ff, (fx16)0xf0cd, - (fx16)0x04f9, (fx16)0xf0cb, - (fx16)0x04f3, (fx16)0xf0c9, - (fx16)0x04ed, (fx16)0xf0c7, - (fx16)0x04e7, (fx16)0xf0c5, - (fx16)0x04e1, (fx16)0xf0c3, - (fx16)0x04db, (fx16)0xf0c1, - (fx16)0x04d5, (fx16)0xf0bf, - (fx16)0x04cf, (fx16)0xf0bd, - (fx16)0x04c9, (fx16)0xf0bb, - (fx16)0x04c3, (fx16)0xf0ba, - (fx16)0x04bd, (fx16)0xf0b8, - (fx16)0x04b7, (fx16)0xf0b6, - (fx16)0x04b1, (fx16)0xf0b4, - (fx16)0x04ab, (fx16)0xf0b2, - (fx16)0x04a5, (fx16)0xf0b0, - (fx16)0x049f, (fx16)0xf0af, - (fx16)0x0499, (fx16)0xf0ad, - (fx16)0x0493, (fx16)0xf0ab, - (fx16)0x048d, (fx16)0xf0a9, - (fx16)0x0487, (fx16)0xf0a7, - (fx16)0x0481, (fx16)0xf0a6, - (fx16)0x047b, (fx16)0xf0a4, - (fx16)0x0475, (fx16)0xf0a2, - (fx16)0x046f, (fx16)0xf0a0, - (fx16)0x0469, (fx16)0xf09f, - (fx16)0x0463, (fx16)0xf09d, - (fx16)0x045d, (fx16)0xf09b, - (fx16)0x0457, (fx16)0xf099, - (fx16)0x0451, (fx16)0xf098, - (fx16)0x044b, (fx16)0xf096, - (fx16)0x0444, (fx16)0xf094, - (fx16)0x043e, (fx16)0xf093, - (fx16)0x0438, (fx16)0xf091, - (fx16)0x0432, (fx16)0xf08f, - (fx16)0x042c, (fx16)0xf08e, - (fx16)0x0426, (fx16)0xf08c, - (fx16)0x0420, (fx16)0xf08a, - (fx16)0x041a, (fx16)0xf089, - (fx16)0x0414, (fx16)0xf087, - (fx16)0x040e, (fx16)0xf086, - (fx16)0x0408, (fx16)0xf084, - (fx16)0x0402, (fx16)0xf083, - (fx16)0x03fc, (fx16)0xf081, - (fx16)0x03f6, (fx16)0xf07f, - (fx16)0x03ef, (fx16)0xf07e, - (fx16)0x03e9, (fx16)0xf07c, - (fx16)0x03e3, (fx16)0xf07b, - (fx16)0x03dd, (fx16)0xf079, - (fx16)0x03d7, (fx16)0xf078, - (fx16)0x03d1, (fx16)0xf076, - (fx16)0x03cb, (fx16)0xf075, - (fx16)0x03c5, (fx16)0xf073, - (fx16)0x03bf, (fx16)0xf072, - (fx16)0x03b9, (fx16)0xf070, - (fx16)0x03b2, (fx16)0xf06f, - (fx16)0x03ac, (fx16)0xf06d, - (fx16)0x03a6, (fx16)0xf06c, - (fx16)0x03a0, (fx16)0xf06b, - (fx16)0x039a, (fx16)0xf069, - (fx16)0x0394, (fx16)0xf068, - (fx16)0x038e, (fx16)0xf066, - (fx16)0x0388, (fx16)0xf065, - (fx16)0x0381, (fx16)0xf064, - (fx16)0x037b, (fx16)0xf062, - (fx16)0x0375, (fx16)0xf061, - (fx16)0x036f, (fx16)0xf05f, - (fx16)0x0369, (fx16)0xf05e, - (fx16)0x0363, (fx16)0xf05d, - (fx16)0x035d, (fx16)0xf05b, - (fx16)0x0356, (fx16)0xf05a, - (fx16)0x0350, (fx16)0xf059, - (fx16)0x034a, (fx16)0xf058, - (fx16)0x0344, (fx16)0xf056, - (fx16)0x033e, (fx16)0xf055, - (fx16)0x0338, (fx16)0xf054, - (fx16)0x0332, (fx16)0xf052, - (fx16)0x032b, (fx16)0xf051, - (fx16)0x0325, (fx16)0xf050, - (fx16)0x031f, (fx16)0xf04f, - (fx16)0x0319, (fx16)0xf04d, - (fx16)0x0313, (fx16)0xf04c, - (fx16)0x030d, (fx16)0xf04b, - (fx16)0x0306, (fx16)0xf04a, - (fx16)0x0300, (fx16)0xf049, - (fx16)0x02fa, (fx16)0xf048, - (fx16)0x02f4, (fx16)0xf046, - (fx16)0x02ee, (fx16)0xf045, - (fx16)0x02e8, (fx16)0xf044, - (fx16)0x02e1, (fx16)0xf043, - (fx16)0x02db, (fx16)0xf042, - (fx16)0x02d5, (fx16)0xf041, - (fx16)0x02cf, (fx16)0xf040, - (fx16)0x02c9, (fx16)0xf03e, - (fx16)0x02c2, (fx16)0xf03d, - (fx16)0x02bc, (fx16)0xf03c, - (fx16)0x02b6, (fx16)0xf03b, - (fx16)0x02b0, (fx16)0xf03a, - (fx16)0x02aa, (fx16)0xf039, - (fx16)0x02a3, (fx16)0xf038, - (fx16)0x029d, (fx16)0xf037, - (fx16)0x0297, (fx16)0xf036, - (fx16)0x0291, (fx16)0xf035, - (fx16)0x028b, (fx16)0xf034, - (fx16)0x0284, (fx16)0xf033, - (fx16)0x027e, (fx16)0xf032, - (fx16)0x0278, (fx16)0xf031, - (fx16)0x0272, (fx16)0xf030, - (fx16)0x026c, (fx16)0xf02f, - (fx16)0x0265, (fx16)0xf02e, - (fx16)0x025f, (fx16)0xf02d, - (fx16)0x0259, (fx16)0xf02c, - (fx16)0x0253, (fx16)0xf02b, - (fx16)0x024d, (fx16)0xf02b, - (fx16)0x0246, (fx16)0xf02a, - (fx16)0x0240, (fx16)0xf029, - (fx16)0x023a, (fx16)0xf028, - (fx16)0x0234, (fx16)0xf027, - (fx16)0x022d, (fx16)0xf026, - (fx16)0x0227, (fx16)0xf025, - (fx16)0x0221, (fx16)0xf024, - (fx16)0x021b, (fx16)0xf024, - (fx16)0x0215, (fx16)0xf023, - (fx16)0x020e, (fx16)0xf022, - (fx16)0x0208, (fx16)0xf021, - (fx16)0x0202, (fx16)0xf020, - (fx16)0x01fc, (fx16)0xf020, - (fx16)0x01f5, (fx16)0xf01f, - (fx16)0x01ef, (fx16)0xf01e, - (fx16)0x01e9, (fx16)0xf01d, - (fx16)0x01e3, (fx16)0xf01d, - (fx16)0x01dc, (fx16)0xf01c, - (fx16)0x01d6, (fx16)0xf01b, - (fx16)0x01d0, (fx16)0xf01a, - (fx16)0x01ca, (fx16)0xf01a, - (fx16)0x01c3, (fx16)0xf019, - (fx16)0x01bd, (fx16)0xf018, - (fx16)0x01b7, (fx16)0xf018, - (fx16)0x01b1, (fx16)0xf017, - (fx16)0x01aa, (fx16)0xf016, - (fx16)0x01a4, (fx16)0xf016, - (fx16)0x019e, (fx16)0xf015, - (fx16)0x0198, (fx16)0xf014, - (fx16)0x0191, (fx16)0xf014, - (fx16)0x018b, (fx16)0xf013, - (fx16)0x0185, (fx16)0xf013, - (fx16)0x017f, (fx16)0xf012, - (fx16)0x0178, (fx16)0xf011, - (fx16)0x0172, (fx16)0xf011, - (fx16)0x016c, (fx16)0xf010, - (fx16)0x0166, (fx16)0xf010, - (fx16)0x015f, (fx16)0xf00f, - (fx16)0x0159, (fx16)0xf00f, - (fx16)0x0153, (fx16)0xf00e, - (fx16)0x014d, (fx16)0xf00e, - (fx16)0x0146, (fx16)0xf00d, - (fx16)0x0140, (fx16)0xf00d, - (fx16)0x013a, (fx16)0xf00c, - (fx16)0x0134, (fx16)0xf00c, - (fx16)0x012d, (fx16)0xf00b, - (fx16)0x0127, (fx16)0xf00b, - (fx16)0x0121, (fx16)0xf00a, - (fx16)0x011b, (fx16)0xf00a, - (fx16)0x0114, (fx16)0xf009, - (fx16)0x010e, (fx16)0xf009, - (fx16)0x0108, (fx16)0xf008, - (fx16)0x0101, (fx16)0xf008, - (fx16)0x00fb, (fx16)0xf008, - (fx16)0x00f5, (fx16)0xf007, - (fx16)0x00ef, (fx16)0xf007, - (fx16)0x00e8, (fx16)0xf007, - (fx16)0x00e2, (fx16)0xf006, - (fx16)0x00dc, (fx16)0xf006, - (fx16)0x00d6, (fx16)0xf006, - (fx16)0x00cf, (fx16)0xf005, - (fx16)0x00c9, (fx16)0xf005, - (fx16)0x00c3, (fx16)0xf005, - (fx16)0x00bc, (fx16)0xf004, - (fx16)0x00b6, (fx16)0xf004, - (fx16)0x00b0, (fx16)0xf004, - (fx16)0x00aa, (fx16)0xf004, - (fx16)0x00a3, (fx16)0xf003, - (fx16)0x009d, (fx16)0xf003, - (fx16)0x0097, (fx16)0xf003, - (fx16)0x0090, (fx16)0xf003, - (fx16)0x008a, (fx16)0xf002, - (fx16)0x0084, (fx16)0xf002, - (fx16)0x007e, (fx16)0xf002, - (fx16)0x0077, (fx16)0xf002, - (fx16)0x0071, (fx16)0xf002, - (fx16)0x006b, (fx16)0xf001, - (fx16)0x0065, (fx16)0xf001, - (fx16)0x005e, (fx16)0xf001, - (fx16)0x0058, (fx16)0xf001, - (fx16)0x0052, (fx16)0xf001, - (fx16)0x004b, (fx16)0xf001, - (fx16)0x0045, (fx16)0xf001, - (fx16)0x003f, (fx16)0xf000, - (fx16)0x0039, (fx16)0xf000, - (fx16)0x0032, (fx16)0xf000, - (fx16)0x002c, (fx16)0xf000, - (fx16)0x0026, (fx16)0xf000, - (fx16)0x001f, (fx16)0xf000, - (fx16)0x0019, (fx16)0xf000, - (fx16)0x0013, (fx16)0xf000, - (fx16)0x000d, (fx16)0xf000, - (fx16)0x0006, (fx16)0xf000, - (fx16)0x0000, (fx16)0xf000, - (fx16)0xfffa, (fx16)0xf000, - (fx16)0xfff3, (fx16)0xf000, - (fx16)0xffed, (fx16)0xf000, - (fx16)0xffe7, (fx16)0xf000, - (fx16)0xffe1, (fx16)0xf000, - (fx16)0xffda, (fx16)0xf000, - (fx16)0xffd4, (fx16)0xf000, - (fx16)0xffce, (fx16)0xf000, - (fx16)0xffc7, (fx16)0xf000, - (fx16)0xffc1, (fx16)0xf000, - (fx16)0xffbb, (fx16)0xf001, - (fx16)0xffb5, (fx16)0xf001, - (fx16)0xffae, (fx16)0xf001, - (fx16)0xffa8, (fx16)0xf001, - (fx16)0xffa2, (fx16)0xf001, - (fx16)0xff9b, (fx16)0xf001, - (fx16)0xff95, (fx16)0xf001, - (fx16)0xff8f, (fx16)0xf002, - (fx16)0xff89, (fx16)0xf002, - (fx16)0xff82, (fx16)0xf002, - (fx16)0xff7c, (fx16)0xf002, - (fx16)0xff76, (fx16)0xf002, - (fx16)0xff70, (fx16)0xf003, - (fx16)0xff69, (fx16)0xf003, - (fx16)0xff63, (fx16)0xf003, - (fx16)0xff5d, (fx16)0xf003, - (fx16)0xff56, (fx16)0xf004, - (fx16)0xff50, (fx16)0xf004, - (fx16)0xff4a, (fx16)0xf004, - (fx16)0xff44, (fx16)0xf004, - (fx16)0xff3d, (fx16)0xf005, - (fx16)0xff37, (fx16)0xf005, - (fx16)0xff31, (fx16)0xf005, - (fx16)0xff2a, (fx16)0xf006, - (fx16)0xff24, (fx16)0xf006, - (fx16)0xff1e, (fx16)0xf006, - (fx16)0xff18, (fx16)0xf007, - (fx16)0xff11, (fx16)0xf007, - (fx16)0xff0b, (fx16)0xf007, - (fx16)0xff05, (fx16)0xf008, - (fx16)0xfeff, (fx16)0xf008, - (fx16)0xfef8, (fx16)0xf008, - (fx16)0xfef2, (fx16)0xf009, - (fx16)0xfeec, (fx16)0xf009, - (fx16)0xfee5, (fx16)0xf00a, - (fx16)0xfedf, (fx16)0xf00a, - (fx16)0xfed9, (fx16)0xf00b, - (fx16)0xfed3, (fx16)0xf00b, - (fx16)0xfecc, (fx16)0xf00c, - (fx16)0xfec6, (fx16)0xf00c, - (fx16)0xfec0, (fx16)0xf00d, - (fx16)0xfeba, (fx16)0xf00d, - (fx16)0xfeb3, (fx16)0xf00e, - (fx16)0xfead, (fx16)0xf00e, - (fx16)0xfea7, (fx16)0xf00f, - (fx16)0xfea1, (fx16)0xf00f, - (fx16)0xfe9a, (fx16)0xf010, - (fx16)0xfe94, (fx16)0xf010, - (fx16)0xfe8e, (fx16)0xf011, - (fx16)0xfe88, (fx16)0xf011, - (fx16)0xfe81, (fx16)0xf012, - (fx16)0xfe7b, (fx16)0xf013, - (fx16)0xfe75, (fx16)0xf013, - (fx16)0xfe6f, (fx16)0xf014, - (fx16)0xfe68, (fx16)0xf014, - (fx16)0xfe62, (fx16)0xf015, - (fx16)0xfe5c, (fx16)0xf016, - (fx16)0xfe56, (fx16)0xf016, - (fx16)0xfe4f, (fx16)0xf017, - (fx16)0xfe49, (fx16)0xf018, - (fx16)0xfe43, (fx16)0xf018, - (fx16)0xfe3d, (fx16)0xf019, - (fx16)0xfe36, (fx16)0xf01a, - (fx16)0xfe30, (fx16)0xf01a, - (fx16)0xfe2a, (fx16)0xf01b, - (fx16)0xfe24, (fx16)0xf01c, - (fx16)0xfe1d, (fx16)0xf01d, - (fx16)0xfe17, (fx16)0xf01d, - (fx16)0xfe11, (fx16)0xf01e, - (fx16)0xfe0b, (fx16)0xf01f, - (fx16)0xfe04, (fx16)0xf020, - (fx16)0xfdfe, (fx16)0xf020, - (fx16)0xfdf8, (fx16)0xf021, - (fx16)0xfdf2, (fx16)0xf022, - (fx16)0xfdeb, (fx16)0xf023, - (fx16)0xfde5, (fx16)0xf024, - (fx16)0xfddf, (fx16)0xf024, - (fx16)0xfdd9, (fx16)0xf025, - (fx16)0xfdd3, (fx16)0xf026, - (fx16)0xfdcc, (fx16)0xf027, - (fx16)0xfdc6, (fx16)0xf028, - (fx16)0xfdc0, (fx16)0xf029, - (fx16)0xfdba, (fx16)0xf02a, - (fx16)0xfdb3, (fx16)0xf02b, - (fx16)0xfdad, (fx16)0xf02b, - (fx16)0xfda7, (fx16)0xf02c, - (fx16)0xfda1, (fx16)0xf02d, - (fx16)0xfd9b, (fx16)0xf02e, - (fx16)0xfd94, (fx16)0xf02f, - (fx16)0xfd8e, (fx16)0xf030, - (fx16)0xfd88, (fx16)0xf031, - (fx16)0xfd82, (fx16)0xf032, - (fx16)0xfd7c, (fx16)0xf033, - (fx16)0xfd75, (fx16)0xf034, - (fx16)0xfd6f, (fx16)0xf035, - (fx16)0xfd69, (fx16)0xf036, - (fx16)0xfd63, (fx16)0xf037, - (fx16)0xfd5d, (fx16)0xf038, - (fx16)0xfd56, (fx16)0xf039, - (fx16)0xfd50, (fx16)0xf03a, - (fx16)0xfd4a, (fx16)0xf03b, - (fx16)0xfd44, (fx16)0xf03c, - (fx16)0xfd3e, (fx16)0xf03d, - (fx16)0xfd37, (fx16)0xf03e, - (fx16)0xfd31, (fx16)0xf040, - (fx16)0xfd2b, (fx16)0xf041, - (fx16)0xfd25, (fx16)0xf042, - (fx16)0xfd1f, (fx16)0xf043, - (fx16)0xfd18, (fx16)0xf044, - (fx16)0xfd12, (fx16)0xf045, - (fx16)0xfd0c, (fx16)0xf046, - (fx16)0xfd06, (fx16)0xf048, - (fx16)0xfd00, (fx16)0xf049, - (fx16)0xfcfa, (fx16)0xf04a, - (fx16)0xfcf3, (fx16)0xf04b, - (fx16)0xfced, (fx16)0xf04c, - (fx16)0xfce7, (fx16)0xf04d, - (fx16)0xfce1, (fx16)0xf04f, - (fx16)0xfcdb, (fx16)0xf050, - (fx16)0xfcd5, (fx16)0xf051, - (fx16)0xfcce, (fx16)0xf052, - (fx16)0xfcc8, (fx16)0xf054, - (fx16)0xfcc2, (fx16)0xf055, - (fx16)0xfcbc, (fx16)0xf056, - (fx16)0xfcb6, (fx16)0xf058, - (fx16)0xfcb0, (fx16)0xf059, - (fx16)0xfcaa, (fx16)0xf05a, - (fx16)0xfca3, (fx16)0xf05b, - (fx16)0xfc9d, (fx16)0xf05d, - (fx16)0xfc97, (fx16)0xf05e, - (fx16)0xfc91, (fx16)0xf05f, - (fx16)0xfc8b, (fx16)0xf061, - (fx16)0xfc85, (fx16)0xf062, - (fx16)0xfc7f, (fx16)0xf064, - (fx16)0xfc78, (fx16)0xf065, - (fx16)0xfc72, (fx16)0xf066, - (fx16)0xfc6c, (fx16)0xf068, - (fx16)0xfc66, (fx16)0xf069, - (fx16)0xfc60, (fx16)0xf06b, - (fx16)0xfc5a, (fx16)0xf06c, - (fx16)0xfc54, (fx16)0xf06d, - (fx16)0xfc4e, (fx16)0xf06f, - (fx16)0xfc47, (fx16)0xf070, - (fx16)0xfc41, (fx16)0xf072, - (fx16)0xfc3b, (fx16)0xf073, - (fx16)0xfc35, (fx16)0xf075, - (fx16)0xfc2f, (fx16)0xf076, - (fx16)0xfc29, (fx16)0xf078, - (fx16)0xfc23, (fx16)0xf079, - (fx16)0xfc1d, (fx16)0xf07b, - (fx16)0xfc17, (fx16)0xf07c, - (fx16)0xfc11, (fx16)0xf07e, - (fx16)0xfc0a, (fx16)0xf07f, - (fx16)0xfc04, (fx16)0xf081, - (fx16)0xfbfe, (fx16)0xf083, - (fx16)0xfbf8, (fx16)0xf084, - (fx16)0xfbf2, (fx16)0xf086, - (fx16)0xfbec, (fx16)0xf087, - (fx16)0xfbe6, (fx16)0xf089, - (fx16)0xfbe0, (fx16)0xf08a, - (fx16)0xfbda, (fx16)0xf08c, - (fx16)0xfbd4, (fx16)0xf08e, - (fx16)0xfbce, (fx16)0xf08f, - (fx16)0xfbc8, (fx16)0xf091, - (fx16)0xfbc2, (fx16)0xf093, - (fx16)0xfbbc, (fx16)0xf094, - (fx16)0xfbb5, (fx16)0xf096, - (fx16)0xfbaf, (fx16)0xf098, - (fx16)0xfba9, (fx16)0xf099, - (fx16)0xfba3, (fx16)0xf09b, - (fx16)0xfb9d, (fx16)0xf09d, - (fx16)0xfb97, (fx16)0xf09f, - (fx16)0xfb91, (fx16)0xf0a0, - (fx16)0xfb8b, (fx16)0xf0a2, - (fx16)0xfb85, (fx16)0xf0a4, - (fx16)0xfb7f, (fx16)0xf0a6, - (fx16)0xfb79, (fx16)0xf0a7, - (fx16)0xfb73, (fx16)0xf0a9, - (fx16)0xfb6d, (fx16)0xf0ab, - (fx16)0xfb67, (fx16)0xf0ad, - (fx16)0xfb61, (fx16)0xf0af, - (fx16)0xfb5b, (fx16)0xf0b0, - (fx16)0xfb55, (fx16)0xf0b2, - (fx16)0xfb4f, (fx16)0xf0b4, - (fx16)0xfb49, (fx16)0xf0b6, - (fx16)0xfb43, (fx16)0xf0b8, - (fx16)0xfb3d, (fx16)0xf0ba, - (fx16)0xfb37, (fx16)0xf0bb, - (fx16)0xfb31, (fx16)0xf0bd, - (fx16)0xfb2b, (fx16)0xf0bf, - (fx16)0xfb25, (fx16)0xf0c1, - (fx16)0xfb1f, (fx16)0xf0c3, - (fx16)0xfb19, (fx16)0xf0c5, - (fx16)0xfb13, (fx16)0xf0c7, - (fx16)0xfb0d, (fx16)0xf0c9, - (fx16)0xfb07, (fx16)0xf0cb, - (fx16)0xfb01, (fx16)0xf0cd, - (fx16)0xfafb, (fx16)0xf0cf, - (fx16)0xfaf5, (fx16)0xf0d1, - (fx16)0xfaef, (fx16)0xf0d3, - (fx16)0xfae9, (fx16)0xf0d5, - (fx16)0xfae3, (fx16)0xf0d7, - (fx16)0xfadd, (fx16)0xf0d9, - (fx16)0xfad7, (fx16)0xf0db, - (fx16)0xfad1, (fx16)0xf0dd, - (fx16)0xfacc, (fx16)0xf0df, - (fx16)0xfac6, (fx16)0xf0e1, - (fx16)0xfac0, (fx16)0xf0e3, - (fx16)0xfaba, (fx16)0xf0e5, - (fx16)0xfab4, (fx16)0xf0e7, - (fx16)0xfaae, (fx16)0xf0e9, - (fx16)0xfaa8, (fx16)0xf0eb, - (fx16)0xfaa2, (fx16)0xf0ed, - (fx16)0xfa9c, (fx16)0xf0ef, - (fx16)0xfa96, (fx16)0xf0f2, - (fx16)0xfa90, (fx16)0xf0f4, - (fx16)0xfa8a, (fx16)0xf0f6, - (fx16)0xfa84, (fx16)0xf0f8, - (fx16)0xfa7f, (fx16)0xf0fa, - (fx16)0xfa79, (fx16)0xf0fc, - (fx16)0xfa73, (fx16)0xf0fe, - (fx16)0xfa6d, (fx16)0xf101, - (fx16)0xfa67, (fx16)0xf103, - (fx16)0xfa61, (fx16)0xf105, - (fx16)0xfa5b, (fx16)0xf107, - (fx16)0xfa55, (fx16)0xf109, - (fx16)0xfa4f, (fx16)0xf10c, - (fx16)0xfa4a, (fx16)0xf10e, - (fx16)0xfa44, (fx16)0xf110, - (fx16)0xfa3e, (fx16)0xf112, - (fx16)0xfa38, (fx16)0xf115, - (fx16)0xfa32, (fx16)0xf117, - (fx16)0xfa2c, (fx16)0xf119, - (fx16)0xfa26, (fx16)0xf11c, - (fx16)0xfa21, (fx16)0xf11e, - (fx16)0xfa1b, (fx16)0xf120, - (fx16)0xfa15, (fx16)0xf123, - (fx16)0xfa0f, (fx16)0xf125, - (fx16)0xfa09, (fx16)0xf127, - (fx16)0xfa03, (fx16)0xf12a, - (fx16)0xf9fe, (fx16)0xf12c, - (fx16)0xf9f8, (fx16)0xf12e, - (fx16)0xf9f2, (fx16)0xf131, - (fx16)0xf9ec, (fx16)0xf133, - (fx16)0xf9e6, (fx16)0xf135, - (fx16)0xf9e1, (fx16)0xf138, - (fx16)0xf9db, (fx16)0xf13a, - (fx16)0xf9d5, (fx16)0xf13d, - (fx16)0xf9cf, (fx16)0xf13f, - (fx16)0xf9c9, (fx16)0xf141, - (fx16)0xf9c4, (fx16)0xf144, - (fx16)0xf9be, (fx16)0xf146, - (fx16)0xf9b8, (fx16)0xf149, - (fx16)0xf9b2, (fx16)0xf14b, - (fx16)0xf9ac, (fx16)0xf14e, - (fx16)0xf9a7, (fx16)0xf150, - (fx16)0xf9a1, (fx16)0xf153, - (fx16)0xf99b, (fx16)0xf155, - (fx16)0xf995, (fx16)0xf158, - (fx16)0xf990, (fx16)0xf15a, - (fx16)0xf98a, (fx16)0xf15d, - (fx16)0xf984, (fx16)0xf15f, - (fx16)0xf97e, (fx16)0xf162, - (fx16)0xf979, (fx16)0xf165, - (fx16)0xf973, (fx16)0xf167, - (fx16)0xf96d, (fx16)0xf16a, - (fx16)0xf967, (fx16)0xf16c, - (fx16)0xf962, (fx16)0xf16f, - (fx16)0xf95c, (fx16)0xf171, - (fx16)0xf956, (fx16)0xf174, - (fx16)0xf951, (fx16)0xf177, - (fx16)0xf94b, (fx16)0xf179, - (fx16)0xf945, (fx16)0xf17c, - (fx16)0xf93f, (fx16)0xf17f, - (fx16)0xf93a, (fx16)0xf181, - (fx16)0xf934, (fx16)0xf184, - (fx16)0xf92e, (fx16)0xf187, - (fx16)0xf929, (fx16)0xf189, - (fx16)0xf923, (fx16)0xf18c, - (fx16)0xf91d, (fx16)0xf18f, - (fx16)0xf918, (fx16)0xf191, - (fx16)0xf912, (fx16)0xf194, - (fx16)0xf90c, (fx16)0xf197, - (fx16)0xf907, (fx16)0xf19a, - (fx16)0xf901, (fx16)0xf19c, - (fx16)0xf8fb, (fx16)0xf19f, - (fx16)0xf8f6, (fx16)0xf1a2, - (fx16)0xf8f0, (fx16)0xf1a5, - (fx16)0xf8eb, (fx16)0xf1a7, - (fx16)0xf8e5, (fx16)0xf1aa, - (fx16)0xf8df, (fx16)0xf1ad, - (fx16)0xf8da, (fx16)0xf1b0, - (fx16)0xf8d4, (fx16)0xf1b3, - (fx16)0xf8ce, (fx16)0xf1b5, - (fx16)0xf8c9, (fx16)0xf1b8, - (fx16)0xf8c3, (fx16)0xf1bb, - (fx16)0xf8be, (fx16)0xf1be, - (fx16)0xf8b8, (fx16)0xf1c1, - (fx16)0xf8b2, (fx16)0xf1c4, - (fx16)0xf8ad, (fx16)0xf1c6, - (fx16)0xf8a7, (fx16)0xf1c9, - (fx16)0xf8a2, (fx16)0xf1cc, - (fx16)0xf89c, (fx16)0xf1cf, - (fx16)0xf896, (fx16)0xf1d2, - (fx16)0xf891, (fx16)0xf1d5, - (fx16)0xf88b, (fx16)0xf1d8, - (fx16)0xf886, (fx16)0xf1db, - (fx16)0xf880, (fx16)0xf1de, - (fx16)0xf87b, (fx16)0xf1e1, - (fx16)0xf875, (fx16)0xf1e4, - (fx16)0xf870, (fx16)0xf1e7, - (fx16)0xf86a, (fx16)0xf1ea, - (fx16)0xf865, (fx16)0xf1ed, - (fx16)0xf85f, (fx16)0xf1f0, - (fx16)0xf85a, (fx16)0xf1f3, - (fx16)0xf854, (fx16)0xf1f6, - (fx16)0xf84e, (fx16)0xf1f9, - (fx16)0xf849, (fx16)0xf1fc, - (fx16)0xf843, (fx16)0xf1ff, - (fx16)0xf83e, (fx16)0xf202, - (fx16)0xf838, (fx16)0xf205, - (fx16)0xf833, (fx16)0xf208, - (fx16)0xf82e, (fx16)0xf20b, - (fx16)0xf828, (fx16)0xf20e, - (fx16)0xf823, (fx16)0xf211, - (fx16)0xf81d, (fx16)0xf214, - (fx16)0xf818, (fx16)0xf217, - (fx16)0xf812, (fx16)0xf21a, - (fx16)0xf80d, (fx16)0xf21d, - (fx16)0xf807, (fx16)0xf221, - (fx16)0xf802, (fx16)0xf224, - (fx16)0xf7fc, (fx16)0xf227, - (fx16)0xf7f7, (fx16)0xf22a, - (fx16)0xf7f2, (fx16)0xf22d, - (fx16)0xf7ec, (fx16)0xf230, - (fx16)0xf7e7, (fx16)0xf234, - (fx16)0xf7e1, (fx16)0xf237, - (fx16)0xf7dc, (fx16)0xf23a, - (fx16)0xf7d6, (fx16)0xf23d, - (fx16)0xf7d1, (fx16)0xf240, - (fx16)0xf7cc, (fx16)0xf244, - (fx16)0xf7c6, (fx16)0xf247, - (fx16)0xf7c1, (fx16)0xf24a, - (fx16)0xf7bb, (fx16)0xf24d, - (fx16)0xf7b6, (fx16)0xf250, - (fx16)0xf7b1, (fx16)0xf254, - (fx16)0xf7ab, (fx16)0xf257, - (fx16)0xf7a6, (fx16)0xf25a, - (fx16)0xf7a1, (fx16)0xf25e, - (fx16)0xf79b, (fx16)0xf261, - (fx16)0xf796, (fx16)0xf264, - (fx16)0xf791, (fx16)0xf267, - (fx16)0xf78b, (fx16)0xf26b, - (fx16)0xf786, (fx16)0xf26e, - (fx16)0xf781, (fx16)0xf271, - (fx16)0xf77b, (fx16)0xf275, - (fx16)0xf776, (fx16)0xf278, - (fx16)0xf771, (fx16)0xf27b, - (fx16)0xf76b, (fx16)0xf27f, - (fx16)0xf766, (fx16)0xf282, - (fx16)0xf761, (fx16)0xf286, - (fx16)0xf75b, (fx16)0xf289, - (fx16)0xf756, (fx16)0xf28c, - (fx16)0xf751, (fx16)0xf290, - (fx16)0xf74c, (fx16)0xf293, - (fx16)0xf746, (fx16)0xf297, - (fx16)0xf741, (fx16)0xf29a, - (fx16)0xf73c, (fx16)0xf29e, - (fx16)0xf737, (fx16)0xf2a1, - (fx16)0xf731, (fx16)0xf2a4, - (fx16)0xf72c, (fx16)0xf2a8, - (fx16)0xf727, (fx16)0xf2ab, - (fx16)0xf722, (fx16)0xf2af, - (fx16)0xf71c, (fx16)0xf2b2, - (fx16)0xf717, (fx16)0xf2b6, - (fx16)0xf712, (fx16)0xf2b9, - (fx16)0xf70d, (fx16)0xf2bd, - (fx16)0xf708, (fx16)0xf2c0, - (fx16)0xf702, (fx16)0xf2c4, - (fx16)0xf6fd, (fx16)0xf2c7, - (fx16)0xf6f8, (fx16)0xf2cb, - (fx16)0xf6f3, (fx16)0xf2ce, - (fx16)0xf6ee, (fx16)0xf2d2, - (fx16)0xf6e8, (fx16)0xf2d6, - (fx16)0xf6e3, (fx16)0xf2d9, - (fx16)0xf6de, (fx16)0xf2dd, - (fx16)0xf6d9, (fx16)0xf2e0, - (fx16)0xf6d4, (fx16)0xf2e4, - (fx16)0xf6cf, (fx16)0xf2e8, - (fx16)0xf6c9, (fx16)0xf2eb, - (fx16)0xf6c4, (fx16)0xf2ef, - (fx16)0xf6bf, (fx16)0xf2f2, - (fx16)0xf6ba, (fx16)0xf2f6, - (fx16)0xf6b5, (fx16)0xf2fa, - (fx16)0xf6b0, (fx16)0xf2fd, - (fx16)0xf6ab, (fx16)0xf301, - (fx16)0xf6a6, (fx16)0xf305, - (fx16)0xf6a1, (fx16)0xf308, - (fx16)0xf69b, (fx16)0xf30c, - (fx16)0xf696, (fx16)0xf310, - (fx16)0xf691, (fx16)0xf313, - (fx16)0xf68c, (fx16)0xf317, - (fx16)0xf687, (fx16)0xf31b, - (fx16)0xf682, (fx16)0xf31f, - (fx16)0xf67d, (fx16)0xf322, - (fx16)0xf678, (fx16)0xf326, - (fx16)0xf673, (fx16)0xf32a, - (fx16)0xf66e, (fx16)0xf32e, - (fx16)0xf669, (fx16)0xf331, - (fx16)0xf664, (fx16)0xf335, - (fx16)0xf65f, (fx16)0xf339, - (fx16)0xf65a, (fx16)0xf33d, - (fx16)0xf655, (fx16)0xf340, - (fx16)0xf650, (fx16)0xf344, - (fx16)0xf64b, (fx16)0xf348, - (fx16)0xf646, (fx16)0xf34c, - (fx16)0xf641, (fx16)0xf350, - (fx16)0xf63c, (fx16)0xf354, - (fx16)0xf637, (fx16)0xf357, - (fx16)0xf632, (fx16)0xf35b, - (fx16)0xf62d, (fx16)0xf35f, - (fx16)0xf628, (fx16)0xf363, - (fx16)0xf623, (fx16)0xf367, - (fx16)0xf61e, (fx16)0xf36b, - (fx16)0xf619, (fx16)0xf36f, - (fx16)0xf614, (fx16)0xf372, - (fx16)0xf60f, (fx16)0xf376, - (fx16)0xf60a, (fx16)0xf37a, - (fx16)0xf605, (fx16)0xf37e, - (fx16)0xf601, (fx16)0xf382, - (fx16)0xf5fc, (fx16)0xf386, - (fx16)0xf5f7, (fx16)0xf38a, - (fx16)0xf5f2, (fx16)0xf38e, - (fx16)0xf5ed, (fx16)0xf392, - (fx16)0xf5e8, (fx16)0xf396, - (fx16)0xf5e3, (fx16)0xf39a, - (fx16)0xf5de, (fx16)0xf39e, - (fx16)0xf5da, (fx16)0xf3a2, - (fx16)0xf5d5, (fx16)0xf3a6, - (fx16)0xf5d0, (fx16)0xf3aa, - (fx16)0xf5cb, (fx16)0xf3ae, - (fx16)0xf5c6, (fx16)0xf3b2, - (fx16)0xf5c1, (fx16)0xf3b6, - (fx16)0xf5bc, (fx16)0xf3ba, - (fx16)0xf5b8, (fx16)0xf3be, - (fx16)0xf5b3, (fx16)0xf3c2, - (fx16)0xf5ae, (fx16)0xf3c6, - (fx16)0xf5a9, (fx16)0xf3ca, - (fx16)0xf5a4, (fx16)0xf3ce, - (fx16)0xf5a0, (fx16)0xf3d2, - (fx16)0xf59b, (fx16)0xf3d6, - (fx16)0xf596, (fx16)0xf3da, - (fx16)0xf591, (fx16)0xf3de, - (fx16)0xf58d, (fx16)0xf3e2, - (fx16)0xf588, (fx16)0xf3e7, - (fx16)0xf583, (fx16)0xf3eb, - (fx16)0xf57e, (fx16)0xf3ef, - (fx16)0xf57a, (fx16)0xf3f3, - (fx16)0xf575, (fx16)0xf3f7, - (fx16)0xf570, (fx16)0xf3fb, - (fx16)0xf56b, (fx16)0xf3ff, - (fx16)0xf567, (fx16)0xf404, - (fx16)0xf562, (fx16)0xf408, - (fx16)0xf55d, (fx16)0xf40c, - (fx16)0xf559, (fx16)0xf410, - (fx16)0xf554, (fx16)0xf414, - (fx16)0xf54f, (fx16)0xf418, - (fx16)0xf54b, (fx16)0xf41d, - (fx16)0xf546, (fx16)0xf421, - (fx16)0xf541, (fx16)0xf425, - (fx16)0xf53d, (fx16)0xf429, - (fx16)0xf538, (fx16)0xf42e, - (fx16)0xf533, (fx16)0xf432, - (fx16)0xf52f, (fx16)0xf436, - (fx16)0xf52a, (fx16)0xf43a, - (fx16)0xf525, (fx16)0xf43f, - (fx16)0xf521, (fx16)0xf443, - (fx16)0xf51c, (fx16)0xf447, - (fx16)0xf518, (fx16)0xf44b, - (fx16)0xf513, (fx16)0xf450, - (fx16)0xf50e, (fx16)0xf454, - (fx16)0xf50a, (fx16)0xf458, - (fx16)0xf505, (fx16)0xf45d, - (fx16)0xf501, (fx16)0xf461, - (fx16)0xf4fc, (fx16)0xf465, - (fx16)0xf4f8, (fx16)0xf469, - (fx16)0xf4f3, (fx16)0xf46e, - (fx16)0xf4ef, (fx16)0xf472, - (fx16)0xf4ea, (fx16)0xf477, - (fx16)0xf4e5, (fx16)0xf47b, - (fx16)0xf4e1, (fx16)0xf47f, - (fx16)0xf4dc, (fx16)0xf484, - (fx16)0xf4d8, (fx16)0xf488, - (fx16)0xf4d3, (fx16)0xf48c, - (fx16)0xf4cf, (fx16)0xf491, - (fx16)0xf4ca, (fx16)0xf495, - (fx16)0xf4c6, (fx16)0xf49a, - (fx16)0xf4c2, (fx16)0xf49e, - (fx16)0xf4bd, (fx16)0xf4a2, - (fx16)0xf4b9, (fx16)0xf4a7, - (fx16)0xf4b4, (fx16)0xf4ab, - (fx16)0xf4b0, (fx16)0xf4b0, - (fx16)0xf4ab, (fx16)0xf4b4, - (fx16)0xf4a7, (fx16)0xf4b9, - (fx16)0xf4a2, (fx16)0xf4bd, - (fx16)0xf49e, (fx16)0xf4c2, - (fx16)0xf49a, (fx16)0xf4c6, - (fx16)0xf495, (fx16)0xf4ca, - (fx16)0xf491, (fx16)0xf4cf, - (fx16)0xf48c, (fx16)0xf4d3, - (fx16)0xf488, (fx16)0xf4d8, - (fx16)0xf484, (fx16)0xf4dc, - (fx16)0xf47f, (fx16)0xf4e1, - (fx16)0xf47b, (fx16)0xf4e5, - (fx16)0xf477, (fx16)0xf4ea, - (fx16)0xf472, (fx16)0xf4ef, - (fx16)0xf46e, (fx16)0xf4f3, - (fx16)0xf469, (fx16)0xf4f8, - (fx16)0xf465, (fx16)0xf4fc, - (fx16)0xf461, (fx16)0xf501, - (fx16)0xf45d, (fx16)0xf505, - (fx16)0xf458, (fx16)0xf50a, - (fx16)0xf454, (fx16)0xf50e, - (fx16)0xf450, (fx16)0xf513, - (fx16)0xf44b, (fx16)0xf518, - (fx16)0xf447, (fx16)0xf51c, - (fx16)0xf443, (fx16)0xf521, - (fx16)0xf43f, (fx16)0xf525, - (fx16)0xf43a, (fx16)0xf52a, - (fx16)0xf436, (fx16)0xf52f, - (fx16)0xf432, (fx16)0xf533, - (fx16)0xf42e, (fx16)0xf538, - (fx16)0xf429, (fx16)0xf53d, - (fx16)0xf425, (fx16)0xf541, - (fx16)0xf421, (fx16)0xf546, - (fx16)0xf41d, (fx16)0xf54b, - (fx16)0xf418, (fx16)0xf54f, - (fx16)0xf414, (fx16)0xf554, - (fx16)0xf410, (fx16)0xf559, - (fx16)0xf40c, (fx16)0xf55d, - (fx16)0xf408, (fx16)0xf562, - (fx16)0xf404, (fx16)0xf567, - (fx16)0xf3ff, (fx16)0xf56b, - (fx16)0xf3fb, (fx16)0xf570, - (fx16)0xf3f7, (fx16)0xf575, - (fx16)0xf3f3, (fx16)0xf57a, - (fx16)0xf3ef, (fx16)0xf57e, - (fx16)0xf3eb, (fx16)0xf583, - (fx16)0xf3e7, (fx16)0xf588, - (fx16)0xf3e2, (fx16)0xf58d, - (fx16)0xf3de, (fx16)0xf591, - (fx16)0xf3da, (fx16)0xf596, - (fx16)0xf3d6, (fx16)0xf59b, - (fx16)0xf3d2, (fx16)0xf5a0, - (fx16)0xf3ce, (fx16)0xf5a4, - (fx16)0xf3ca, (fx16)0xf5a9, - (fx16)0xf3c6, (fx16)0xf5ae, - (fx16)0xf3c2, (fx16)0xf5b3, - (fx16)0xf3be, (fx16)0xf5b8, - (fx16)0xf3ba, (fx16)0xf5bc, - (fx16)0xf3b6, (fx16)0xf5c1, - (fx16)0xf3b2, (fx16)0xf5c6, - (fx16)0xf3ae, (fx16)0xf5cb, - (fx16)0xf3aa, (fx16)0xf5d0, - (fx16)0xf3a6, (fx16)0xf5d5, - (fx16)0xf3a2, (fx16)0xf5da, - (fx16)0xf39e, (fx16)0xf5de, - (fx16)0xf39a, (fx16)0xf5e3, - (fx16)0xf396, (fx16)0xf5e8, - (fx16)0xf392, (fx16)0xf5ed, - (fx16)0xf38e, (fx16)0xf5f2, - (fx16)0xf38a, (fx16)0xf5f7, - (fx16)0xf386, (fx16)0xf5fc, - (fx16)0xf382, (fx16)0xf601, - (fx16)0xf37e, (fx16)0xf605, - (fx16)0xf37a, (fx16)0xf60a, - (fx16)0xf376, (fx16)0xf60f, - (fx16)0xf372, (fx16)0xf614, - (fx16)0xf36f, (fx16)0xf619, - (fx16)0xf36b, (fx16)0xf61e, - (fx16)0xf367, (fx16)0xf623, - (fx16)0xf363, (fx16)0xf628, - (fx16)0xf35f, (fx16)0xf62d, - (fx16)0xf35b, (fx16)0xf632, - (fx16)0xf357, (fx16)0xf637, - (fx16)0xf354, (fx16)0xf63c, - (fx16)0xf350, (fx16)0xf641, - (fx16)0xf34c, (fx16)0xf646, - (fx16)0xf348, (fx16)0xf64b, - (fx16)0xf344, (fx16)0xf650, - (fx16)0xf340, (fx16)0xf655, - (fx16)0xf33d, (fx16)0xf65a, - (fx16)0xf339, (fx16)0xf65f, - (fx16)0xf335, (fx16)0xf664, - (fx16)0xf331, (fx16)0xf669, - (fx16)0xf32e, (fx16)0xf66e, - (fx16)0xf32a, (fx16)0xf673, - (fx16)0xf326, (fx16)0xf678, - (fx16)0xf322, (fx16)0xf67d, - (fx16)0xf31f, (fx16)0xf682, - (fx16)0xf31b, (fx16)0xf687, - (fx16)0xf317, (fx16)0xf68c, - (fx16)0xf313, (fx16)0xf691, - (fx16)0xf310, (fx16)0xf696, - (fx16)0xf30c, (fx16)0xf69b, - (fx16)0xf308, (fx16)0xf6a1, - (fx16)0xf305, (fx16)0xf6a6, - (fx16)0xf301, (fx16)0xf6ab, - (fx16)0xf2fd, (fx16)0xf6b0, - (fx16)0xf2fa, (fx16)0xf6b5, - (fx16)0xf2f6, (fx16)0xf6ba, - (fx16)0xf2f2, (fx16)0xf6bf, - (fx16)0xf2ef, (fx16)0xf6c4, - (fx16)0xf2eb, (fx16)0xf6c9, - (fx16)0xf2e8, (fx16)0xf6cf, - (fx16)0xf2e4, (fx16)0xf6d4, - (fx16)0xf2e0, (fx16)0xf6d9, - (fx16)0xf2dd, (fx16)0xf6de, - (fx16)0xf2d9, (fx16)0xf6e3, - (fx16)0xf2d6, (fx16)0xf6e8, - (fx16)0xf2d2, (fx16)0xf6ee, - (fx16)0xf2ce, (fx16)0xf6f3, - (fx16)0xf2cb, (fx16)0xf6f8, - (fx16)0xf2c7, (fx16)0xf6fd, - (fx16)0xf2c4, (fx16)0xf702, - (fx16)0xf2c0, (fx16)0xf708, - (fx16)0xf2bd, (fx16)0xf70d, - (fx16)0xf2b9, (fx16)0xf712, - (fx16)0xf2b6, (fx16)0xf717, - (fx16)0xf2b2, (fx16)0xf71c, - (fx16)0xf2af, (fx16)0xf722, - (fx16)0xf2ab, (fx16)0xf727, - (fx16)0xf2a8, (fx16)0xf72c, - (fx16)0xf2a4, (fx16)0xf731, - (fx16)0xf2a1, (fx16)0xf737, - (fx16)0xf29e, (fx16)0xf73c, - (fx16)0xf29a, (fx16)0xf741, - (fx16)0xf297, (fx16)0xf746, - (fx16)0xf293, (fx16)0xf74c, - (fx16)0xf290, (fx16)0xf751, - (fx16)0xf28c, (fx16)0xf756, - (fx16)0xf289, (fx16)0xf75b, - (fx16)0xf286, (fx16)0xf761, - (fx16)0xf282, (fx16)0xf766, - (fx16)0xf27f, (fx16)0xf76b, - (fx16)0xf27b, (fx16)0xf771, - (fx16)0xf278, (fx16)0xf776, - (fx16)0xf275, (fx16)0xf77b, - (fx16)0xf271, (fx16)0xf781, - (fx16)0xf26e, (fx16)0xf786, - (fx16)0xf26b, (fx16)0xf78b, - (fx16)0xf267, (fx16)0xf791, - (fx16)0xf264, (fx16)0xf796, - (fx16)0xf261, (fx16)0xf79b, - (fx16)0xf25e, (fx16)0xf7a1, - (fx16)0xf25a, (fx16)0xf7a6, - (fx16)0xf257, (fx16)0xf7ab, - (fx16)0xf254, (fx16)0xf7b1, - (fx16)0xf250, (fx16)0xf7b6, - (fx16)0xf24d, (fx16)0xf7bb, - (fx16)0xf24a, (fx16)0xf7c1, - (fx16)0xf247, (fx16)0xf7c6, - (fx16)0xf244, (fx16)0xf7cc, - (fx16)0xf240, (fx16)0xf7d1, - (fx16)0xf23d, (fx16)0xf7d6, - (fx16)0xf23a, (fx16)0xf7dc, - (fx16)0xf237, (fx16)0xf7e1, - (fx16)0xf234, (fx16)0xf7e7, - (fx16)0xf230, (fx16)0xf7ec, - (fx16)0xf22d, (fx16)0xf7f2, - (fx16)0xf22a, (fx16)0xf7f7, - (fx16)0xf227, (fx16)0xf7fc, - (fx16)0xf224, (fx16)0xf802, - (fx16)0xf221, (fx16)0xf807, - (fx16)0xf21d, (fx16)0xf80d, - (fx16)0xf21a, (fx16)0xf812, - (fx16)0xf217, (fx16)0xf818, - (fx16)0xf214, (fx16)0xf81d, - (fx16)0xf211, (fx16)0xf823, - (fx16)0xf20e, (fx16)0xf828, - (fx16)0xf20b, (fx16)0xf82e, - (fx16)0xf208, (fx16)0xf833, - (fx16)0xf205, (fx16)0xf838, - (fx16)0xf202, (fx16)0xf83e, - (fx16)0xf1ff, (fx16)0xf843, - (fx16)0xf1fc, (fx16)0xf849, - (fx16)0xf1f9, (fx16)0xf84e, - (fx16)0xf1f6, (fx16)0xf854, - (fx16)0xf1f3, (fx16)0xf85a, - (fx16)0xf1f0, (fx16)0xf85f, - (fx16)0xf1ed, (fx16)0xf865, - (fx16)0xf1ea, (fx16)0xf86a, - (fx16)0xf1e7, (fx16)0xf870, - (fx16)0xf1e4, (fx16)0xf875, - (fx16)0xf1e1, (fx16)0xf87b, - (fx16)0xf1de, (fx16)0xf880, - (fx16)0xf1db, (fx16)0xf886, - (fx16)0xf1d8, (fx16)0xf88b, - (fx16)0xf1d5, (fx16)0xf891, - (fx16)0xf1d2, (fx16)0xf896, - (fx16)0xf1cf, (fx16)0xf89c, - (fx16)0xf1cc, (fx16)0xf8a2, - (fx16)0xf1c9, (fx16)0xf8a7, - (fx16)0xf1c6, (fx16)0xf8ad, - (fx16)0xf1c4, (fx16)0xf8b2, - (fx16)0xf1c1, (fx16)0xf8b8, - (fx16)0xf1be, (fx16)0xf8be, - (fx16)0xf1bb, (fx16)0xf8c3, - (fx16)0xf1b8, (fx16)0xf8c9, - (fx16)0xf1b5, (fx16)0xf8ce, - (fx16)0xf1b3, (fx16)0xf8d4, - (fx16)0xf1b0, (fx16)0xf8da, - (fx16)0xf1ad, (fx16)0xf8df, - (fx16)0xf1aa, (fx16)0xf8e5, - (fx16)0xf1a7, (fx16)0xf8eb, - (fx16)0xf1a5, (fx16)0xf8f0, - (fx16)0xf1a2, (fx16)0xf8f6, - (fx16)0xf19f, (fx16)0xf8fb, - (fx16)0xf19c, (fx16)0xf901, - (fx16)0xf19a, (fx16)0xf907, - (fx16)0xf197, (fx16)0xf90c, - (fx16)0xf194, (fx16)0xf912, - (fx16)0xf191, (fx16)0xf918, - (fx16)0xf18f, (fx16)0xf91d, - (fx16)0xf18c, (fx16)0xf923, - (fx16)0xf189, (fx16)0xf929, - (fx16)0xf187, (fx16)0xf92e, - (fx16)0xf184, (fx16)0xf934, - (fx16)0xf181, (fx16)0xf93a, - (fx16)0xf17f, (fx16)0xf93f, - (fx16)0xf17c, (fx16)0xf945, - (fx16)0xf179, (fx16)0xf94b, - (fx16)0xf177, (fx16)0xf951, - (fx16)0xf174, (fx16)0xf956, - (fx16)0xf171, (fx16)0xf95c, - (fx16)0xf16f, (fx16)0xf962, - (fx16)0xf16c, (fx16)0xf967, - (fx16)0xf16a, (fx16)0xf96d, - (fx16)0xf167, (fx16)0xf973, - (fx16)0xf165, (fx16)0xf979, - (fx16)0xf162, (fx16)0xf97e, - (fx16)0xf15f, (fx16)0xf984, - (fx16)0xf15d, (fx16)0xf98a, - (fx16)0xf15a, (fx16)0xf990, - (fx16)0xf158, (fx16)0xf995, - (fx16)0xf155, (fx16)0xf99b, - (fx16)0xf153, (fx16)0xf9a1, - (fx16)0xf150, (fx16)0xf9a7, - (fx16)0xf14e, (fx16)0xf9ac, - (fx16)0xf14b, (fx16)0xf9b2, - (fx16)0xf149, (fx16)0xf9b8, - (fx16)0xf146, (fx16)0xf9be, - (fx16)0xf144, (fx16)0xf9c4, - (fx16)0xf141, (fx16)0xf9c9, - (fx16)0xf13f, (fx16)0xf9cf, - (fx16)0xf13d, (fx16)0xf9d5, - (fx16)0xf13a, (fx16)0xf9db, - (fx16)0xf138, (fx16)0xf9e1, - (fx16)0xf135, (fx16)0xf9e6, - (fx16)0xf133, (fx16)0xf9ec, - (fx16)0xf131, (fx16)0xf9f2, - (fx16)0xf12e, (fx16)0xf9f8, - (fx16)0xf12c, (fx16)0xf9fe, - (fx16)0xf12a, (fx16)0xfa03, - (fx16)0xf127, (fx16)0xfa09, - (fx16)0xf125, (fx16)0xfa0f, - (fx16)0xf123, (fx16)0xfa15, - (fx16)0xf120, (fx16)0xfa1b, - (fx16)0xf11e, (fx16)0xfa21, - (fx16)0xf11c, (fx16)0xfa26, - (fx16)0xf119, (fx16)0xfa2c, - (fx16)0xf117, (fx16)0xfa32, - (fx16)0xf115, (fx16)0xfa38, - (fx16)0xf112, (fx16)0xfa3e, - (fx16)0xf110, (fx16)0xfa44, - (fx16)0xf10e, (fx16)0xfa4a, - (fx16)0xf10c, (fx16)0xfa4f, - (fx16)0xf109, (fx16)0xfa55, - (fx16)0xf107, (fx16)0xfa5b, - (fx16)0xf105, (fx16)0xfa61, - (fx16)0xf103, (fx16)0xfa67, - (fx16)0xf101, (fx16)0xfa6d, - (fx16)0xf0fe, (fx16)0xfa73, - (fx16)0xf0fc, (fx16)0xfa79, - (fx16)0xf0fa, (fx16)0xfa7f, - (fx16)0xf0f8, (fx16)0xfa84, - (fx16)0xf0f6, (fx16)0xfa8a, - (fx16)0xf0f4, (fx16)0xfa90, - (fx16)0xf0f2, (fx16)0xfa96, - (fx16)0xf0ef, (fx16)0xfa9c, - (fx16)0xf0ed, (fx16)0xfaa2, - (fx16)0xf0eb, (fx16)0xfaa8, - (fx16)0xf0e9, (fx16)0xfaae, - (fx16)0xf0e7, (fx16)0xfab4, - (fx16)0xf0e5, (fx16)0xfaba, - (fx16)0xf0e3, (fx16)0xfac0, - (fx16)0xf0e1, (fx16)0xfac6, - (fx16)0xf0df, (fx16)0xfacc, - (fx16)0xf0dd, (fx16)0xfad1, - (fx16)0xf0db, (fx16)0xfad7, - (fx16)0xf0d9, (fx16)0xfadd, - (fx16)0xf0d7, (fx16)0xfae3, - (fx16)0xf0d5, (fx16)0xfae9, - (fx16)0xf0d3, (fx16)0xfaef, - (fx16)0xf0d1, (fx16)0xfaf5, - (fx16)0xf0cf, (fx16)0xfafb, - (fx16)0xf0cd, (fx16)0xfb01, - (fx16)0xf0cb, (fx16)0xfb07, - (fx16)0xf0c9, (fx16)0xfb0d, - (fx16)0xf0c7, (fx16)0xfb13, - (fx16)0xf0c5, (fx16)0xfb19, - (fx16)0xf0c3, (fx16)0xfb1f, - (fx16)0xf0c1, (fx16)0xfb25, - (fx16)0xf0bf, (fx16)0xfb2b, - (fx16)0xf0bd, (fx16)0xfb31, - (fx16)0xf0bb, (fx16)0xfb37, - (fx16)0xf0ba, (fx16)0xfb3d, - (fx16)0xf0b8, (fx16)0xfb43, - (fx16)0xf0b6, (fx16)0xfb49, - (fx16)0xf0b4, (fx16)0xfb4f, - (fx16)0xf0b2, (fx16)0xfb55, - (fx16)0xf0b0, (fx16)0xfb5b, - (fx16)0xf0af, (fx16)0xfb61, - (fx16)0xf0ad, (fx16)0xfb67, - (fx16)0xf0ab, (fx16)0xfb6d, - (fx16)0xf0a9, (fx16)0xfb73, - (fx16)0xf0a7, (fx16)0xfb79, - (fx16)0xf0a6, (fx16)0xfb7f, - (fx16)0xf0a4, (fx16)0xfb85, - (fx16)0xf0a2, (fx16)0xfb8b, - (fx16)0xf0a0, (fx16)0xfb91, - (fx16)0xf09f, (fx16)0xfb97, - (fx16)0xf09d, (fx16)0xfb9d, - (fx16)0xf09b, (fx16)0xfba3, - (fx16)0xf099, (fx16)0xfba9, - (fx16)0xf098, (fx16)0xfbaf, - (fx16)0xf096, (fx16)0xfbb5, - (fx16)0xf094, (fx16)0xfbbc, - (fx16)0xf093, (fx16)0xfbc2, - (fx16)0xf091, (fx16)0xfbc8, - (fx16)0xf08f, (fx16)0xfbce, - (fx16)0xf08e, (fx16)0xfbd4, - (fx16)0xf08c, (fx16)0xfbda, - (fx16)0xf08a, (fx16)0xfbe0, - (fx16)0xf089, (fx16)0xfbe6, - (fx16)0xf087, (fx16)0xfbec, - (fx16)0xf086, (fx16)0xfbf2, - (fx16)0xf084, (fx16)0xfbf8, - (fx16)0xf083, (fx16)0xfbfe, - (fx16)0xf081, (fx16)0xfc04, - (fx16)0xf07f, (fx16)0xfc0a, - (fx16)0xf07e, (fx16)0xfc11, - (fx16)0xf07c, (fx16)0xfc17, - (fx16)0xf07b, (fx16)0xfc1d, - (fx16)0xf079, (fx16)0xfc23, - (fx16)0xf078, (fx16)0xfc29, - (fx16)0xf076, (fx16)0xfc2f, - (fx16)0xf075, (fx16)0xfc35, - (fx16)0xf073, (fx16)0xfc3b, - (fx16)0xf072, (fx16)0xfc41, - (fx16)0xf070, (fx16)0xfc47, - (fx16)0xf06f, (fx16)0xfc4e, - (fx16)0xf06d, (fx16)0xfc54, - (fx16)0xf06c, (fx16)0xfc5a, - (fx16)0xf06b, (fx16)0xfc60, - (fx16)0xf069, (fx16)0xfc66, - (fx16)0xf068, (fx16)0xfc6c, - (fx16)0xf066, (fx16)0xfc72, - (fx16)0xf065, (fx16)0xfc78, - (fx16)0xf064, (fx16)0xfc7f, - (fx16)0xf062, (fx16)0xfc85, - (fx16)0xf061, (fx16)0xfc8b, - (fx16)0xf05f, (fx16)0xfc91, - (fx16)0xf05e, (fx16)0xfc97, - (fx16)0xf05d, (fx16)0xfc9d, - (fx16)0xf05b, (fx16)0xfca3, - (fx16)0xf05a, (fx16)0xfcaa, - (fx16)0xf059, (fx16)0xfcb0, - (fx16)0xf058, (fx16)0xfcb6, - (fx16)0xf056, (fx16)0xfcbc, - (fx16)0xf055, (fx16)0xfcc2, - (fx16)0xf054, (fx16)0xfcc8, - (fx16)0xf052, (fx16)0xfcce, - (fx16)0xf051, (fx16)0xfcd5, - (fx16)0xf050, (fx16)0xfcdb, - (fx16)0xf04f, (fx16)0xfce1, - (fx16)0xf04d, (fx16)0xfce7, - (fx16)0xf04c, (fx16)0xfced, - (fx16)0xf04b, (fx16)0xfcf3, - (fx16)0xf04a, (fx16)0xfcfa, - (fx16)0xf049, (fx16)0xfd00, - (fx16)0xf048, (fx16)0xfd06, - (fx16)0xf046, (fx16)0xfd0c, - (fx16)0xf045, (fx16)0xfd12, - (fx16)0xf044, (fx16)0xfd18, - (fx16)0xf043, (fx16)0xfd1f, - (fx16)0xf042, (fx16)0xfd25, - (fx16)0xf041, (fx16)0xfd2b, - (fx16)0xf040, (fx16)0xfd31, - (fx16)0xf03e, (fx16)0xfd37, - (fx16)0xf03d, (fx16)0xfd3e, - (fx16)0xf03c, (fx16)0xfd44, - (fx16)0xf03b, (fx16)0xfd4a, - (fx16)0xf03a, (fx16)0xfd50, - (fx16)0xf039, (fx16)0xfd56, - (fx16)0xf038, (fx16)0xfd5d, - (fx16)0xf037, (fx16)0xfd63, - (fx16)0xf036, (fx16)0xfd69, - (fx16)0xf035, (fx16)0xfd6f, - (fx16)0xf034, (fx16)0xfd75, - (fx16)0xf033, (fx16)0xfd7c, - (fx16)0xf032, (fx16)0xfd82, - (fx16)0xf031, (fx16)0xfd88, - (fx16)0xf030, (fx16)0xfd8e, - (fx16)0xf02f, (fx16)0xfd94, - (fx16)0xf02e, (fx16)0xfd9b, - (fx16)0xf02d, (fx16)0xfda1, - (fx16)0xf02c, (fx16)0xfda7, - (fx16)0xf02b, (fx16)0xfdad, - (fx16)0xf02b, (fx16)0xfdb3, - (fx16)0xf02a, (fx16)0xfdba, - (fx16)0xf029, (fx16)0xfdc0, - (fx16)0xf028, (fx16)0xfdc6, - (fx16)0xf027, (fx16)0xfdcc, - (fx16)0xf026, (fx16)0xfdd3, - (fx16)0xf025, (fx16)0xfdd9, - (fx16)0xf024, (fx16)0xfddf, - (fx16)0xf024, (fx16)0xfde5, - (fx16)0xf023, (fx16)0xfdeb, - (fx16)0xf022, (fx16)0xfdf2, - (fx16)0xf021, (fx16)0xfdf8, - (fx16)0xf020, (fx16)0xfdfe, - (fx16)0xf020, (fx16)0xfe04, - (fx16)0xf01f, (fx16)0xfe0b, - (fx16)0xf01e, (fx16)0xfe11, - (fx16)0xf01d, (fx16)0xfe17, - (fx16)0xf01d, (fx16)0xfe1d, - (fx16)0xf01c, (fx16)0xfe24, - (fx16)0xf01b, (fx16)0xfe2a, - (fx16)0xf01a, (fx16)0xfe30, - (fx16)0xf01a, (fx16)0xfe36, - (fx16)0xf019, (fx16)0xfe3d, - (fx16)0xf018, (fx16)0xfe43, - (fx16)0xf018, (fx16)0xfe49, - (fx16)0xf017, (fx16)0xfe4f, - (fx16)0xf016, (fx16)0xfe56, - (fx16)0xf016, (fx16)0xfe5c, - (fx16)0xf015, (fx16)0xfe62, - (fx16)0xf014, (fx16)0xfe68, - (fx16)0xf014, (fx16)0xfe6f, - (fx16)0xf013, (fx16)0xfe75, - (fx16)0xf013, (fx16)0xfe7b, - (fx16)0xf012, (fx16)0xfe81, - (fx16)0xf011, (fx16)0xfe88, - (fx16)0xf011, (fx16)0xfe8e, - (fx16)0xf010, (fx16)0xfe94, - (fx16)0xf010, (fx16)0xfe9a, - (fx16)0xf00f, (fx16)0xfea1, - (fx16)0xf00f, (fx16)0xfea7, - (fx16)0xf00e, (fx16)0xfead, - (fx16)0xf00e, (fx16)0xfeb3, - (fx16)0xf00d, (fx16)0xfeba, - (fx16)0xf00d, (fx16)0xfec0, - (fx16)0xf00c, (fx16)0xfec6, - (fx16)0xf00c, (fx16)0xfecc, - (fx16)0xf00b, (fx16)0xfed3, - (fx16)0xf00b, (fx16)0xfed9, - (fx16)0xf00a, (fx16)0xfedf, - (fx16)0xf00a, (fx16)0xfee5, - (fx16)0xf009, (fx16)0xfeec, - (fx16)0xf009, (fx16)0xfef2, - (fx16)0xf008, (fx16)0xfef8, - (fx16)0xf008, (fx16)0xfeff, - (fx16)0xf008, (fx16)0xff05, - (fx16)0xf007, (fx16)0xff0b, - (fx16)0xf007, (fx16)0xff11, - (fx16)0xf007, (fx16)0xff18, - (fx16)0xf006, (fx16)0xff1e, - (fx16)0xf006, (fx16)0xff24, - (fx16)0xf006, (fx16)0xff2a, - (fx16)0xf005, (fx16)0xff31, - (fx16)0xf005, (fx16)0xff37, - (fx16)0xf005, (fx16)0xff3d, - (fx16)0xf004, (fx16)0xff44, - (fx16)0xf004, (fx16)0xff4a, - (fx16)0xf004, (fx16)0xff50, - (fx16)0xf004, (fx16)0xff56, - (fx16)0xf003, (fx16)0xff5d, - (fx16)0xf003, (fx16)0xff63, - (fx16)0xf003, (fx16)0xff69, - (fx16)0xf003, (fx16)0xff70, - (fx16)0xf002, (fx16)0xff76, - (fx16)0xf002, (fx16)0xff7c, - (fx16)0xf002, (fx16)0xff82, - (fx16)0xf002, (fx16)0xff89, - (fx16)0xf002, (fx16)0xff8f, - (fx16)0xf001, (fx16)0xff95, - (fx16)0xf001, (fx16)0xff9b, - (fx16)0xf001, (fx16)0xffa2, - (fx16)0xf001, (fx16)0xffa8, - (fx16)0xf001, (fx16)0xffae, - (fx16)0xf001, (fx16)0xffb5, - (fx16)0xf001, (fx16)0xffbb, - (fx16)0xf000, (fx16)0xffc1, - (fx16)0xf000, (fx16)0xffc7, - (fx16)0xf000, (fx16)0xffce, - (fx16)0xf000, (fx16)0xffd4, - (fx16)0xf000, (fx16)0xffda, - (fx16)0xf000, (fx16)0xffe1, - (fx16)0xf000, (fx16)0xffe7, - (fx16)0xf000, (fx16)0xffed, - (fx16)0xf000, (fx16)0xfff3, - (fx16)0xf000, (fx16)0xfffa, - (fx16)0xf000, (fx16)0x0000, - (fx16)0xf000, (fx16)0x0006, - (fx16)0xf000, (fx16)0x000d, - (fx16)0xf000, (fx16)0x0013, - (fx16)0xf000, (fx16)0x0019, - (fx16)0xf000, (fx16)0x001f, - (fx16)0xf000, (fx16)0x0026, - (fx16)0xf000, (fx16)0x002c, - (fx16)0xf000, (fx16)0x0032, - (fx16)0xf000, (fx16)0x0039, - (fx16)0xf000, (fx16)0x003f, - (fx16)0xf001, (fx16)0x0045, - (fx16)0xf001, (fx16)0x004b, - (fx16)0xf001, (fx16)0x0052, - (fx16)0xf001, (fx16)0x0058, - (fx16)0xf001, (fx16)0x005e, - (fx16)0xf001, (fx16)0x0065, - (fx16)0xf001, (fx16)0x006b, - (fx16)0xf002, (fx16)0x0071, - (fx16)0xf002, (fx16)0x0077, - (fx16)0xf002, (fx16)0x007e, - (fx16)0xf002, (fx16)0x0084, - (fx16)0xf002, (fx16)0x008a, - (fx16)0xf003, (fx16)0x0090, - (fx16)0xf003, (fx16)0x0097, - (fx16)0xf003, (fx16)0x009d, - (fx16)0xf003, (fx16)0x00a3, - (fx16)0xf004, (fx16)0x00aa, - (fx16)0xf004, (fx16)0x00b0, - (fx16)0xf004, (fx16)0x00b6, - (fx16)0xf004, (fx16)0x00bc, - (fx16)0xf005, (fx16)0x00c3, - (fx16)0xf005, (fx16)0x00c9, - (fx16)0xf005, (fx16)0x00cf, - (fx16)0xf006, (fx16)0x00d6, - (fx16)0xf006, (fx16)0x00dc, - (fx16)0xf006, (fx16)0x00e2, - (fx16)0xf007, (fx16)0x00e8, - (fx16)0xf007, (fx16)0x00ef, - (fx16)0xf007, (fx16)0x00f5, - (fx16)0xf008, (fx16)0x00fb, - (fx16)0xf008, (fx16)0x0101, - (fx16)0xf008, (fx16)0x0108, - (fx16)0xf009, (fx16)0x010e, - (fx16)0xf009, (fx16)0x0114, - (fx16)0xf00a, (fx16)0x011b, - (fx16)0xf00a, (fx16)0x0121, - (fx16)0xf00b, (fx16)0x0127, - (fx16)0xf00b, (fx16)0x012d, - (fx16)0xf00c, (fx16)0x0134, - (fx16)0xf00c, (fx16)0x013a, - (fx16)0xf00d, (fx16)0x0140, - (fx16)0xf00d, (fx16)0x0146, - (fx16)0xf00e, (fx16)0x014d, - (fx16)0xf00e, (fx16)0x0153, - (fx16)0xf00f, (fx16)0x0159, - (fx16)0xf00f, (fx16)0x015f, - (fx16)0xf010, (fx16)0x0166, - (fx16)0xf010, (fx16)0x016c, - (fx16)0xf011, (fx16)0x0172, - (fx16)0xf011, (fx16)0x0178, - (fx16)0xf012, (fx16)0x017f, - (fx16)0xf013, (fx16)0x0185, - (fx16)0xf013, (fx16)0x018b, - (fx16)0xf014, (fx16)0x0191, - (fx16)0xf014, (fx16)0x0198, - (fx16)0xf015, (fx16)0x019e, - (fx16)0xf016, (fx16)0x01a4, - (fx16)0xf016, (fx16)0x01aa, - (fx16)0xf017, (fx16)0x01b1, - (fx16)0xf018, (fx16)0x01b7, - (fx16)0xf018, (fx16)0x01bd, - (fx16)0xf019, (fx16)0x01c3, - (fx16)0xf01a, (fx16)0x01ca, - (fx16)0xf01a, (fx16)0x01d0, - (fx16)0xf01b, (fx16)0x01d6, - (fx16)0xf01c, (fx16)0x01dc, - (fx16)0xf01d, (fx16)0x01e3, - (fx16)0xf01d, (fx16)0x01e9, - (fx16)0xf01e, (fx16)0x01ef, - (fx16)0xf01f, (fx16)0x01f5, - (fx16)0xf020, (fx16)0x01fc, - (fx16)0xf020, (fx16)0x0202, - (fx16)0xf021, (fx16)0x0208, - (fx16)0xf022, (fx16)0x020e, - (fx16)0xf023, (fx16)0x0215, - (fx16)0xf024, (fx16)0x021b, - (fx16)0xf024, (fx16)0x0221, - (fx16)0xf025, (fx16)0x0227, - (fx16)0xf026, (fx16)0x022d, - (fx16)0xf027, (fx16)0x0234, - (fx16)0xf028, (fx16)0x023a, - (fx16)0xf029, (fx16)0x0240, - (fx16)0xf02a, (fx16)0x0246, - (fx16)0xf02b, (fx16)0x024d, - (fx16)0xf02b, (fx16)0x0253, - (fx16)0xf02c, (fx16)0x0259, - (fx16)0xf02d, (fx16)0x025f, - (fx16)0xf02e, (fx16)0x0265, - (fx16)0xf02f, (fx16)0x026c, - (fx16)0xf030, (fx16)0x0272, - (fx16)0xf031, (fx16)0x0278, - (fx16)0xf032, (fx16)0x027e, - (fx16)0xf033, (fx16)0x0284, - (fx16)0xf034, (fx16)0x028b, - (fx16)0xf035, (fx16)0x0291, - (fx16)0xf036, (fx16)0x0297, - (fx16)0xf037, (fx16)0x029d, - (fx16)0xf038, (fx16)0x02a3, - (fx16)0xf039, (fx16)0x02aa, - (fx16)0xf03a, (fx16)0x02b0, - (fx16)0xf03b, (fx16)0x02b6, - (fx16)0xf03c, (fx16)0x02bc, - (fx16)0xf03d, (fx16)0x02c2, - (fx16)0xf03e, (fx16)0x02c9, - (fx16)0xf040, (fx16)0x02cf, - (fx16)0xf041, (fx16)0x02d5, - (fx16)0xf042, (fx16)0x02db, - (fx16)0xf043, (fx16)0x02e1, - (fx16)0xf044, (fx16)0x02e8, - (fx16)0xf045, (fx16)0x02ee, - (fx16)0xf046, (fx16)0x02f4, - (fx16)0xf048, (fx16)0x02fa, - (fx16)0xf049, (fx16)0x0300, - (fx16)0xf04a, (fx16)0x0306, - (fx16)0xf04b, (fx16)0x030d, - (fx16)0xf04c, (fx16)0x0313, - (fx16)0xf04d, (fx16)0x0319, - (fx16)0xf04f, (fx16)0x031f, - (fx16)0xf050, (fx16)0x0325, - (fx16)0xf051, (fx16)0x032b, - (fx16)0xf052, (fx16)0x0332, - (fx16)0xf054, (fx16)0x0338, - (fx16)0xf055, (fx16)0x033e, - (fx16)0xf056, (fx16)0x0344, - (fx16)0xf058, (fx16)0x034a, - (fx16)0xf059, (fx16)0x0350, - (fx16)0xf05a, (fx16)0x0356, - (fx16)0xf05b, (fx16)0x035d, - (fx16)0xf05d, (fx16)0x0363, - (fx16)0xf05e, (fx16)0x0369, - (fx16)0xf05f, (fx16)0x036f, - (fx16)0xf061, (fx16)0x0375, - (fx16)0xf062, (fx16)0x037b, - (fx16)0xf064, (fx16)0x0381, - (fx16)0xf065, (fx16)0x0388, - (fx16)0xf066, (fx16)0x038e, - (fx16)0xf068, (fx16)0x0394, - (fx16)0xf069, (fx16)0x039a, - (fx16)0xf06b, (fx16)0x03a0, - (fx16)0xf06c, (fx16)0x03a6, - (fx16)0xf06d, (fx16)0x03ac, - (fx16)0xf06f, (fx16)0x03b2, - (fx16)0xf070, (fx16)0x03b9, - (fx16)0xf072, (fx16)0x03bf, - (fx16)0xf073, (fx16)0x03c5, - (fx16)0xf075, (fx16)0x03cb, - (fx16)0xf076, (fx16)0x03d1, - (fx16)0xf078, (fx16)0x03d7, - (fx16)0xf079, (fx16)0x03dd, - (fx16)0xf07b, (fx16)0x03e3, - (fx16)0xf07c, (fx16)0x03e9, - (fx16)0xf07e, (fx16)0x03ef, - (fx16)0xf07f, (fx16)0x03f6, - (fx16)0xf081, (fx16)0x03fc, - (fx16)0xf083, (fx16)0x0402, - (fx16)0xf084, (fx16)0x0408, - (fx16)0xf086, (fx16)0x040e, - (fx16)0xf087, (fx16)0x0414, - (fx16)0xf089, (fx16)0x041a, - (fx16)0xf08a, (fx16)0x0420, - (fx16)0xf08c, (fx16)0x0426, - (fx16)0xf08e, (fx16)0x042c, - (fx16)0xf08f, (fx16)0x0432, - (fx16)0xf091, (fx16)0x0438, - (fx16)0xf093, (fx16)0x043e, - (fx16)0xf094, (fx16)0x0444, - (fx16)0xf096, (fx16)0x044b, - (fx16)0xf098, (fx16)0x0451, - (fx16)0xf099, (fx16)0x0457, - (fx16)0xf09b, (fx16)0x045d, - (fx16)0xf09d, (fx16)0x0463, - (fx16)0xf09f, (fx16)0x0469, - (fx16)0xf0a0, (fx16)0x046f, - (fx16)0xf0a2, (fx16)0x0475, - (fx16)0xf0a4, (fx16)0x047b, - (fx16)0xf0a6, (fx16)0x0481, - (fx16)0xf0a7, (fx16)0x0487, - (fx16)0xf0a9, (fx16)0x048d, - (fx16)0xf0ab, (fx16)0x0493, - (fx16)0xf0ad, (fx16)0x0499, - (fx16)0xf0af, (fx16)0x049f, - (fx16)0xf0b0, (fx16)0x04a5, - (fx16)0xf0b2, (fx16)0x04ab, - (fx16)0xf0b4, (fx16)0x04b1, - (fx16)0xf0b6, (fx16)0x04b7, - (fx16)0xf0b8, (fx16)0x04bd, - (fx16)0xf0ba, (fx16)0x04c3, - (fx16)0xf0bb, (fx16)0x04c9, - (fx16)0xf0bd, (fx16)0x04cf, - (fx16)0xf0bf, (fx16)0x04d5, - (fx16)0xf0c1, (fx16)0x04db, - (fx16)0xf0c3, (fx16)0x04e1, - (fx16)0xf0c5, (fx16)0x04e7, - (fx16)0xf0c7, (fx16)0x04ed, - (fx16)0xf0c9, (fx16)0x04f3, - (fx16)0xf0cb, (fx16)0x04f9, - (fx16)0xf0cd, (fx16)0x04ff, - (fx16)0xf0cf, (fx16)0x0505, - (fx16)0xf0d1, (fx16)0x050b, - (fx16)0xf0d3, (fx16)0x0511, - (fx16)0xf0d5, (fx16)0x0517, - (fx16)0xf0d7, (fx16)0x051d, - (fx16)0xf0d9, (fx16)0x0523, - (fx16)0xf0db, (fx16)0x0529, - (fx16)0xf0dd, (fx16)0x052f, - (fx16)0xf0df, (fx16)0x0534, - (fx16)0xf0e1, (fx16)0x053a, - (fx16)0xf0e3, (fx16)0x0540, - (fx16)0xf0e5, (fx16)0x0546, - (fx16)0xf0e7, (fx16)0x054c, - (fx16)0xf0e9, (fx16)0x0552, - (fx16)0xf0eb, (fx16)0x0558, - (fx16)0xf0ed, (fx16)0x055e, - (fx16)0xf0ef, (fx16)0x0564, - (fx16)0xf0f2, (fx16)0x056a, - (fx16)0xf0f4, (fx16)0x0570, - (fx16)0xf0f6, (fx16)0x0576, - (fx16)0xf0f8, (fx16)0x057c, - (fx16)0xf0fa, (fx16)0x0581, - (fx16)0xf0fc, (fx16)0x0587, - (fx16)0xf0fe, (fx16)0x058d, - (fx16)0xf101, (fx16)0x0593, - (fx16)0xf103, (fx16)0x0599, - (fx16)0xf105, (fx16)0x059f, - (fx16)0xf107, (fx16)0x05a5, - (fx16)0xf109, (fx16)0x05ab, - (fx16)0xf10c, (fx16)0x05b1, - (fx16)0xf10e, (fx16)0x05b6, - (fx16)0xf110, (fx16)0x05bc, - (fx16)0xf112, (fx16)0x05c2, - (fx16)0xf115, (fx16)0x05c8, - (fx16)0xf117, (fx16)0x05ce, - (fx16)0xf119, (fx16)0x05d4, - (fx16)0xf11c, (fx16)0x05da, - (fx16)0xf11e, (fx16)0x05df, - (fx16)0xf120, (fx16)0x05e5, - (fx16)0xf123, (fx16)0x05eb, - (fx16)0xf125, (fx16)0x05f1, - (fx16)0xf127, (fx16)0x05f7, - (fx16)0xf12a, (fx16)0x05fd, - (fx16)0xf12c, (fx16)0x0602, - (fx16)0xf12e, (fx16)0x0608, - (fx16)0xf131, (fx16)0x060e, - (fx16)0xf133, (fx16)0x0614, - (fx16)0xf135, (fx16)0x061a, - (fx16)0xf138, (fx16)0x061f, - (fx16)0xf13a, (fx16)0x0625, - (fx16)0xf13d, (fx16)0x062b, - (fx16)0xf13f, (fx16)0x0631, - (fx16)0xf141, (fx16)0x0637, - (fx16)0xf144, (fx16)0x063c, - (fx16)0xf146, (fx16)0x0642, - (fx16)0xf149, (fx16)0x0648, - (fx16)0xf14b, (fx16)0x064e, - (fx16)0xf14e, (fx16)0x0654, - (fx16)0xf150, (fx16)0x0659, - (fx16)0xf153, (fx16)0x065f, - (fx16)0xf155, (fx16)0x0665, - (fx16)0xf158, (fx16)0x066b, - (fx16)0xf15a, (fx16)0x0670, - (fx16)0xf15d, (fx16)0x0676, - (fx16)0xf15f, (fx16)0x067c, - (fx16)0xf162, (fx16)0x0682, - (fx16)0xf165, (fx16)0x0687, - (fx16)0xf167, (fx16)0x068d, - (fx16)0xf16a, (fx16)0x0693, - (fx16)0xf16c, (fx16)0x0699, - (fx16)0xf16f, (fx16)0x069e, - (fx16)0xf171, (fx16)0x06a4, - (fx16)0xf174, (fx16)0x06aa, - (fx16)0xf177, (fx16)0x06af, - (fx16)0xf179, (fx16)0x06b5, - (fx16)0xf17c, (fx16)0x06bb, - (fx16)0xf17f, (fx16)0x06c1, - (fx16)0xf181, (fx16)0x06c6, - (fx16)0xf184, (fx16)0x06cc, - (fx16)0xf187, (fx16)0x06d2, - (fx16)0xf189, (fx16)0x06d7, - (fx16)0xf18c, (fx16)0x06dd, - (fx16)0xf18f, (fx16)0x06e3, - (fx16)0xf191, (fx16)0x06e8, - (fx16)0xf194, (fx16)0x06ee, - (fx16)0xf197, (fx16)0x06f4, - (fx16)0xf19a, (fx16)0x06f9, - (fx16)0xf19c, (fx16)0x06ff, - (fx16)0xf19f, (fx16)0x0705, - (fx16)0xf1a2, (fx16)0x070a, - (fx16)0xf1a5, (fx16)0x0710, - (fx16)0xf1a7, (fx16)0x0715, - (fx16)0xf1aa, (fx16)0x071b, - (fx16)0xf1ad, (fx16)0x0721, - (fx16)0xf1b0, (fx16)0x0726, - (fx16)0xf1b3, (fx16)0x072c, - (fx16)0xf1b5, (fx16)0x0732, - (fx16)0xf1b8, (fx16)0x0737, - (fx16)0xf1bb, (fx16)0x073d, - (fx16)0xf1be, (fx16)0x0742, - (fx16)0xf1c1, (fx16)0x0748, - (fx16)0xf1c4, (fx16)0x074e, - (fx16)0xf1c6, (fx16)0x0753, - (fx16)0xf1c9, (fx16)0x0759, - (fx16)0xf1cc, (fx16)0x075e, - (fx16)0xf1cf, (fx16)0x0764, - (fx16)0xf1d2, (fx16)0x076a, - (fx16)0xf1d5, (fx16)0x076f, - (fx16)0xf1d8, (fx16)0x0775, - (fx16)0xf1db, (fx16)0x077a, - (fx16)0xf1de, (fx16)0x0780, - (fx16)0xf1e1, (fx16)0x0785, - (fx16)0xf1e4, (fx16)0x078b, - (fx16)0xf1e7, (fx16)0x0790, - (fx16)0xf1ea, (fx16)0x0796, - (fx16)0xf1ed, (fx16)0x079b, - (fx16)0xf1f0, (fx16)0x07a1, - (fx16)0xf1f3, (fx16)0x07a6, - (fx16)0xf1f6, (fx16)0x07ac, - (fx16)0xf1f9, (fx16)0x07b2, - (fx16)0xf1fc, (fx16)0x07b7, - (fx16)0xf1ff, (fx16)0x07bd, - (fx16)0xf202, (fx16)0x07c2, - (fx16)0xf205, (fx16)0x07c8, - (fx16)0xf208, (fx16)0x07cd, - (fx16)0xf20b, (fx16)0x07d2, - (fx16)0xf20e, (fx16)0x07d8, - (fx16)0xf211, (fx16)0x07dd, - (fx16)0xf214, (fx16)0x07e3, - (fx16)0xf217, (fx16)0x07e8, - (fx16)0xf21a, (fx16)0x07ee, - (fx16)0xf21d, (fx16)0x07f3, - (fx16)0xf221, (fx16)0x07f9, - (fx16)0xf224, (fx16)0x07fe, - (fx16)0xf227, (fx16)0x0804, - (fx16)0xf22a, (fx16)0x0809, - (fx16)0xf22d, (fx16)0x080e, - (fx16)0xf230, (fx16)0x0814, - (fx16)0xf234, (fx16)0x0819, - (fx16)0xf237, (fx16)0x081f, - (fx16)0xf23a, (fx16)0x0824, - (fx16)0xf23d, (fx16)0x082a, - (fx16)0xf240, (fx16)0x082f, - (fx16)0xf244, (fx16)0x0834, - (fx16)0xf247, (fx16)0x083a, - (fx16)0xf24a, (fx16)0x083f, - (fx16)0xf24d, (fx16)0x0845, - (fx16)0xf250, (fx16)0x084a, - (fx16)0xf254, (fx16)0x084f, - (fx16)0xf257, (fx16)0x0855, - (fx16)0xf25a, (fx16)0x085a, - (fx16)0xf25e, (fx16)0x085f, - (fx16)0xf261, (fx16)0x0865, - (fx16)0xf264, (fx16)0x086a, - (fx16)0xf267, (fx16)0x086f, - (fx16)0xf26b, (fx16)0x0875, - (fx16)0xf26e, (fx16)0x087a, - (fx16)0xf271, (fx16)0x087f, - (fx16)0xf275, (fx16)0x0885, - (fx16)0xf278, (fx16)0x088a, - (fx16)0xf27b, (fx16)0x088f, - (fx16)0xf27f, (fx16)0x0895, - (fx16)0xf282, (fx16)0x089a, - (fx16)0xf286, (fx16)0x089f, - (fx16)0xf289, (fx16)0x08a5, - (fx16)0xf28c, (fx16)0x08aa, - (fx16)0xf290, (fx16)0x08af, - (fx16)0xf293, (fx16)0x08b4, - (fx16)0xf297, (fx16)0x08ba, - (fx16)0xf29a, (fx16)0x08bf, - (fx16)0xf29e, (fx16)0x08c4, - (fx16)0xf2a1, (fx16)0x08c9, - (fx16)0xf2a4, (fx16)0x08cf, - (fx16)0xf2a8, (fx16)0x08d4, - (fx16)0xf2ab, (fx16)0x08d9, - (fx16)0xf2af, (fx16)0x08de, - (fx16)0xf2b2, (fx16)0x08e4, - (fx16)0xf2b6, (fx16)0x08e9, - (fx16)0xf2b9, (fx16)0x08ee, - (fx16)0xf2bd, (fx16)0x08f3, - (fx16)0xf2c0, (fx16)0x08f8, - (fx16)0xf2c4, (fx16)0x08fe, - (fx16)0xf2c7, (fx16)0x0903, - (fx16)0xf2cb, (fx16)0x0908, - (fx16)0xf2ce, (fx16)0x090d, - (fx16)0xf2d2, (fx16)0x0912, - (fx16)0xf2d6, (fx16)0x0918, - (fx16)0xf2d9, (fx16)0x091d, - (fx16)0xf2dd, (fx16)0x0922, - (fx16)0xf2e0, (fx16)0x0927, - (fx16)0xf2e4, (fx16)0x092c, - (fx16)0xf2e8, (fx16)0x0931, - (fx16)0xf2eb, (fx16)0x0937, - (fx16)0xf2ef, (fx16)0x093c, - (fx16)0xf2f2, (fx16)0x0941, - (fx16)0xf2f6, (fx16)0x0946, - (fx16)0xf2fa, (fx16)0x094b, - (fx16)0xf2fd, (fx16)0x0950, - (fx16)0xf301, (fx16)0x0955, - (fx16)0xf305, (fx16)0x095a, - (fx16)0xf308, (fx16)0x095f, - (fx16)0xf30c, (fx16)0x0965, - (fx16)0xf310, (fx16)0x096a, - (fx16)0xf313, (fx16)0x096f, - (fx16)0xf317, (fx16)0x0974, - (fx16)0xf31b, (fx16)0x0979, - (fx16)0xf31f, (fx16)0x097e, - (fx16)0xf322, (fx16)0x0983, - (fx16)0xf326, (fx16)0x0988, - (fx16)0xf32a, (fx16)0x098d, - (fx16)0xf32e, (fx16)0x0992, - (fx16)0xf331, (fx16)0x0997, - (fx16)0xf335, (fx16)0x099c, - (fx16)0xf339, (fx16)0x09a1, - (fx16)0xf33d, (fx16)0x09a6, - (fx16)0xf340, (fx16)0x09ab, - (fx16)0xf344, (fx16)0x09b0, - (fx16)0xf348, (fx16)0x09b5, - (fx16)0xf34c, (fx16)0x09ba, - (fx16)0xf350, (fx16)0x09bf, - (fx16)0xf354, (fx16)0x09c4, - (fx16)0xf357, (fx16)0x09c9, - (fx16)0xf35b, (fx16)0x09ce, - (fx16)0xf35f, (fx16)0x09d3, - (fx16)0xf363, (fx16)0x09d8, - (fx16)0xf367, (fx16)0x09dd, - (fx16)0xf36b, (fx16)0x09e2, - (fx16)0xf36f, (fx16)0x09e7, - (fx16)0xf372, (fx16)0x09ec, - (fx16)0xf376, (fx16)0x09f1, - (fx16)0xf37a, (fx16)0x09f6, - (fx16)0xf37e, (fx16)0x09fb, - (fx16)0xf382, (fx16)0x09ff, - (fx16)0xf386, (fx16)0x0a04, - (fx16)0xf38a, (fx16)0x0a09, - (fx16)0xf38e, (fx16)0x0a0e, - (fx16)0xf392, (fx16)0x0a13, - (fx16)0xf396, (fx16)0x0a18, - (fx16)0xf39a, (fx16)0x0a1d, - (fx16)0xf39e, (fx16)0x0a22, - (fx16)0xf3a2, (fx16)0x0a26, - (fx16)0xf3a6, (fx16)0x0a2b, - (fx16)0xf3aa, (fx16)0x0a30, - (fx16)0xf3ae, (fx16)0x0a35, - (fx16)0xf3b2, (fx16)0x0a3a, - (fx16)0xf3b6, (fx16)0x0a3f, - (fx16)0xf3ba, (fx16)0x0a44, - (fx16)0xf3be, (fx16)0x0a48, - (fx16)0xf3c2, (fx16)0x0a4d, - (fx16)0xf3c6, (fx16)0x0a52, - (fx16)0xf3ca, (fx16)0x0a57, - (fx16)0xf3ce, (fx16)0x0a5c, - (fx16)0xf3d2, (fx16)0x0a60, - (fx16)0xf3d6, (fx16)0x0a65, - (fx16)0xf3da, (fx16)0x0a6a, - (fx16)0xf3de, (fx16)0x0a6f, - (fx16)0xf3e2, (fx16)0x0a73, - (fx16)0xf3e7, (fx16)0x0a78, - (fx16)0xf3eb, (fx16)0x0a7d, - (fx16)0xf3ef, (fx16)0x0a82, - (fx16)0xf3f3, (fx16)0x0a86, - (fx16)0xf3f7, (fx16)0x0a8b, - (fx16)0xf3fb, (fx16)0x0a90, - (fx16)0xf3ff, (fx16)0x0a95, - (fx16)0xf404, (fx16)0x0a99, - (fx16)0xf408, (fx16)0x0a9e, - (fx16)0xf40c, (fx16)0x0aa3, - (fx16)0xf410, (fx16)0x0aa7, - (fx16)0xf414, (fx16)0x0aac, - (fx16)0xf418, (fx16)0x0ab1, - (fx16)0xf41d, (fx16)0x0ab5, - (fx16)0xf421, (fx16)0x0aba, - (fx16)0xf425, (fx16)0x0abf, - (fx16)0xf429, (fx16)0x0ac3, - (fx16)0xf42e, (fx16)0x0ac8, - (fx16)0xf432, (fx16)0x0acd, - (fx16)0xf436, (fx16)0x0ad1, - (fx16)0xf43a, (fx16)0x0ad6, - (fx16)0xf43f, (fx16)0x0adb, - (fx16)0xf443, (fx16)0x0adf, - (fx16)0xf447, (fx16)0x0ae4, - (fx16)0xf44b, (fx16)0x0ae8, - (fx16)0xf450, (fx16)0x0aed, - (fx16)0xf454, (fx16)0x0af2, - (fx16)0xf458, (fx16)0x0af6, - (fx16)0xf45d, (fx16)0x0afb, - (fx16)0xf461, (fx16)0x0aff, - (fx16)0xf465, (fx16)0x0b04, - (fx16)0xf469, (fx16)0x0b08, - (fx16)0xf46e, (fx16)0x0b0d, - (fx16)0xf472, (fx16)0x0b11, - (fx16)0xf477, (fx16)0x0b16, - (fx16)0xf47b, (fx16)0x0b1b, - (fx16)0xf47f, (fx16)0x0b1f, - (fx16)0xf484, (fx16)0x0b24, - (fx16)0xf488, (fx16)0x0b28, - (fx16)0xf48c, (fx16)0x0b2d, - (fx16)0xf491, (fx16)0x0b31, - (fx16)0xf495, (fx16)0x0b36, - (fx16)0xf49a, (fx16)0x0b3a, - (fx16)0xf49e, (fx16)0x0b3e, - (fx16)0xf4a2, (fx16)0x0b43, - (fx16)0xf4a7, (fx16)0x0b47, - (fx16)0xf4ab, (fx16)0x0b4c, - (fx16)0xf4b0, (fx16)0x0b50, - (fx16)0xf4b4, (fx16)0x0b55, - (fx16)0xf4b9, (fx16)0x0b59, - (fx16)0xf4bd, (fx16)0x0b5e, - (fx16)0xf4c2, (fx16)0x0b62, - (fx16)0xf4c6, (fx16)0x0b66, - (fx16)0xf4ca, (fx16)0x0b6b, - (fx16)0xf4cf, (fx16)0x0b6f, - (fx16)0xf4d3, (fx16)0x0b74, - (fx16)0xf4d8, (fx16)0x0b78, - (fx16)0xf4dc, (fx16)0x0b7c, - (fx16)0xf4e1, (fx16)0x0b81, - (fx16)0xf4e5, (fx16)0x0b85, - (fx16)0xf4ea, (fx16)0x0b89, - (fx16)0xf4ef, (fx16)0x0b8e, - (fx16)0xf4f3, (fx16)0x0b92, - (fx16)0xf4f8, (fx16)0x0b97, - (fx16)0xf4fc, (fx16)0x0b9b, - (fx16)0xf501, (fx16)0x0b9f, - (fx16)0xf505, (fx16)0x0ba3, - (fx16)0xf50a, (fx16)0x0ba8, - (fx16)0xf50e, (fx16)0x0bac, - (fx16)0xf513, (fx16)0x0bb0, - (fx16)0xf518, (fx16)0x0bb5, - (fx16)0xf51c, (fx16)0x0bb9, - (fx16)0xf521, (fx16)0x0bbd, - (fx16)0xf525, (fx16)0x0bc1, - (fx16)0xf52a, (fx16)0x0bc6, - (fx16)0xf52f, (fx16)0x0bca, - (fx16)0xf533, (fx16)0x0bce, - (fx16)0xf538, (fx16)0x0bd2, - (fx16)0xf53d, (fx16)0x0bd7, - (fx16)0xf541, (fx16)0x0bdb, - (fx16)0xf546, (fx16)0x0bdf, - (fx16)0xf54b, (fx16)0x0be3, - (fx16)0xf54f, (fx16)0x0be8, - (fx16)0xf554, (fx16)0x0bec, - (fx16)0xf559, (fx16)0x0bf0, - (fx16)0xf55d, (fx16)0x0bf4, - (fx16)0xf562, (fx16)0x0bf8, - (fx16)0xf567, (fx16)0x0bfc, - (fx16)0xf56b, (fx16)0x0c01, - (fx16)0xf570, (fx16)0x0c05, - (fx16)0xf575, (fx16)0x0c09, - (fx16)0xf57a, (fx16)0x0c0d, - (fx16)0xf57e, (fx16)0x0c11, - (fx16)0xf583, (fx16)0x0c15, - (fx16)0xf588, (fx16)0x0c19, - (fx16)0xf58d, (fx16)0x0c1e, - (fx16)0xf591, (fx16)0x0c22, - (fx16)0xf596, (fx16)0x0c26, - (fx16)0xf59b, (fx16)0x0c2a, - (fx16)0xf5a0, (fx16)0x0c2e, - (fx16)0xf5a4, (fx16)0x0c32, - (fx16)0xf5a9, (fx16)0x0c36, - (fx16)0xf5ae, (fx16)0x0c3a, - (fx16)0xf5b3, (fx16)0x0c3e, - (fx16)0xf5b8, (fx16)0x0c42, - (fx16)0xf5bc, (fx16)0x0c46, - (fx16)0xf5c1, (fx16)0x0c4a, - (fx16)0xf5c6, (fx16)0x0c4e, - (fx16)0xf5cb, (fx16)0x0c52, - (fx16)0xf5d0, (fx16)0x0c56, - (fx16)0xf5d5, (fx16)0x0c5a, - (fx16)0xf5da, (fx16)0x0c5e, - (fx16)0xf5de, (fx16)0x0c62, - (fx16)0xf5e3, (fx16)0x0c66, - (fx16)0xf5e8, (fx16)0x0c6a, - (fx16)0xf5ed, (fx16)0x0c6e, - (fx16)0xf5f2, (fx16)0x0c72, - (fx16)0xf5f7, (fx16)0x0c76, - (fx16)0xf5fc, (fx16)0x0c7a, - (fx16)0xf601, (fx16)0x0c7e, - (fx16)0xf605, (fx16)0x0c82, - (fx16)0xf60a, (fx16)0x0c86, - (fx16)0xf60f, (fx16)0x0c8a, - (fx16)0xf614, (fx16)0x0c8e, - (fx16)0xf619, (fx16)0x0c91, - (fx16)0xf61e, (fx16)0x0c95, - (fx16)0xf623, (fx16)0x0c99, - (fx16)0xf628, (fx16)0x0c9d, - (fx16)0xf62d, (fx16)0x0ca1, - (fx16)0xf632, (fx16)0x0ca5, - (fx16)0xf637, (fx16)0x0ca9, - (fx16)0xf63c, (fx16)0x0cac, - (fx16)0xf641, (fx16)0x0cb0, - (fx16)0xf646, (fx16)0x0cb4, - (fx16)0xf64b, (fx16)0x0cb8, - (fx16)0xf650, (fx16)0x0cbc, - (fx16)0xf655, (fx16)0x0cc0, - (fx16)0xf65a, (fx16)0x0cc3, - (fx16)0xf65f, (fx16)0x0cc7, - (fx16)0xf664, (fx16)0x0ccb, - (fx16)0xf669, (fx16)0x0ccf, - (fx16)0xf66e, (fx16)0x0cd2, - (fx16)0xf673, (fx16)0x0cd6, - (fx16)0xf678, (fx16)0x0cda, - (fx16)0xf67d, (fx16)0x0cde, - (fx16)0xf682, (fx16)0x0ce1, - (fx16)0xf687, (fx16)0x0ce5, - (fx16)0xf68c, (fx16)0x0ce9, - (fx16)0xf691, (fx16)0x0ced, - (fx16)0xf696, (fx16)0x0cf0, - (fx16)0xf69b, (fx16)0x0cf4, - (fx16)0xf6a1, (fx16)0x0cf8, - (fx16)0xf6a6, (fx16)0x0cfb, - (fx16)0xf6ab, (fx16)0x0cff, - (fx16)0xf6b0, (fx16)0x0d03, - (fx16)0xf6b5, (fx16)0x0d06, - (fx16)0xf6ba, (fx16)0x0d0a, - (fx16)0xf6bf, (fx16)0x0d0e, - (fx16)0xf6c4, (fx16)0x0d11, - (fx16)0xf6c9, (fx16)0x0d15, - (fx16)0xf6cf, (fx16)0x0d18, - (fx16)0xf6d4, (fx16)0x0d1c, - (fx16)0xf6d9, (fx16)0x0d20, - (fx16)0xf6de, (fx16)0x0d23, - (fx16)0xf6e3, (fx16)0x0d27, - (fx16)0xf6e8, (fx16)0x0d2a, - (fx16)0xf6ee, (fx16)0x0d2e, - (fx16)0xf6f3, (fx16)0x0d32, - (fx16)0xf6f8, (fx16)0x0d35, - (fx16)0xf6fd, (fx16)0x0d39, - (fx16)0xf702, (fx16)0x0d3c, - (fx16)0xf708, (fx16)0x0d40, - (fx16)0xf70d, (fx16)0x0d43, - (fx16)0xf712, (fx16)0x0d47, - (fx16)0xf717, (fx16)0x0d4a, - (fx16)0xf71c, (fx16)0x0d4e, - (fx16)0xf722, (fx16)0x0d51, - (fx16)0xf727, (fx16)0x0d55, - (fx16)0xf72c, (fx16)0x0d58, - (fx16)0xf731, (fx16)0x0d5c, - (fx16)0xf737, (fx16)0x0d5f, - (fx16)0xf73c, (fx16)0x0d62, - (fx16)0xf741, (fx16)0x0d66, - (fx16)0xf746, (fx16)0x0d69, - (fx16)0xf74c, (fx16)0x0d6d, - (fx16)0xf751, (fx16)0x0d70, - (fx16)0xf756, (fx16)0x0d74, - (fx16)0xf75b, (fx16)0x0d77, - (fx16)0xf761, (fx16)0x0d7a, - (fx16)0xf766, (fx16)0x0d7e, - (fx16)0xf76b, (fx16)0x0d81, - (fx16)0xf771, (fx16)0x0d85, - (fx16)0xf776, (fx16)0x0d88, - (fx16)0xf77b, (fx16)0x0d8b, - (fx16)0xf781, (fx16)0x0d8f, - (fx16)0xf786, (fx16)0x0d92, - (fx16)0xf78b, (fx16)0x0d95, - (fx16)0xf791, (fx16)0x0d99, - (fx16)0xf796, (fx16)0x0d9c, - (fx16)0xf79b, (fx16)0x0d9f, - (fx16)0xf7a1, (fx16)0x0da2, - (fx16)0xf7a6, (fx16)0x0da6, - (fx16)0xf7ab, (fx16)0x0da9, - (fx16)0xf7b1, (fx16)0x0dac, - (fx16)0xf7b6, (fx16)0x0db0, - (fx16)0xf7bb, (fx16)0x0db3, - (fx16)0xf7c1, (fx16)0x0db6, - (fx16)0xf7c6, (fx16)0x0db9, - (fx16)0xf7cc, (fx16)0x0dbc, - (fx16)0xf7d1, (fx16)0x0dc0, - (fx16)0xf7d6, (fx16)0x0dc3, - (fx16)0xf7dc, (fx16)0x0dc6, - (fx16)0xf7e1, (fx16)0x0dc9, - (fx16)0xf7e7, (fx16)0x0dcc, - (fx16)0xf7ec, (fx16)0x0dd0, - (fx16)0xf7f2, (fx16)0x0dd3, - (fx16)0xf7f7, (fx16)0x0dd6, - (fx16)0xf7fc, (fx16)0x0dd9, - (fx16)0xf802, (fx16)0x0ddc, - (fx16)0xf807, (fx16)0x0ddf, - (fx16)0xf80d, (fx16)0x0de3, - (fx16)0xf812, (fx16)0x0de6, - (fx16)0xf818, (fx16)0x0de9, - (fx16)0xf81d, (fx16)0x0dec, - (fx16)0xf823, (fx16)0x0def, - (fx16)0xf828, (fx16)0x0df2, - (fx16)0xf82e, (fx16)0x0df5, - (fx16)0xf833, (fx16)0x0df8, - (fx16)0xf838, (fx16)0x0dfb, - (fx16)0xf83e, (fx16)0x0dfe, - (fx16)0xf843, (fx16)0x0e01, - (fx16)0xf849, (fx16)0x0e04, - (fx16)0xf84e, (fx16)0x0e07, - (fx16)0xf854, (fx16)0x0e0a, - (fx16)0xf85a, (fx16)0x0e0d, - (fx16)0xf85f, (fx16)0x0e10, - (fx16)0xf865, (fx16)0x0e13, - (fx16)0xf86a, (fx16)0x0e16, - (fx16)0xf870, (fx16)0x0e19, - (fx16)0xf875, (fx16)0x0e1c, - (fx16)0xf87b, (fx16)0x0e1f, - (fx16)0xf880, (fx16)0x0e22, - (fx16)0xf886, (fx16)0x0e25, - (fx16)0xf88b, (fx16)0x0e28, - (fx16)0xf891, (fx16)0x0e2b, - (fx16)0xf896, (fx16)0x0e2e, - (fx16)0xf89c, (fx16)0x0e31, - (fx16)0xf8a2, (fx16)0x0e34, - (fx16)0xf8a7, (fx16)0x0e37, - (fx16)0xf8ad, (fx16)0x0e3a, - (fx16)0xf8b2, (fx16)0x0e3c, - (fx16)0xf8b8, (fx16)0x0e3f, - (fx16)0xf8be, (fx16)0x0e42, - (fx16)0xf8c3, (fx16)0x0e45, - (fx16)0xf8c9, (fx16)0x0e48, - (fx16)0xf8ce, (fx16)0x0e4b, - (fx16)0xf8d4, (fx16)0x0e4d, - (fx16)0xf8da, (fx16)0x0e50, - (fx16)0xf8df, (fx16)0x0e53, - (fx16)0xf8e5, (fx16)0x0e56, - (fx16)0xf8eb, (fx16)0x0e59, - (fx16)0xf8f0, (fx16)0x0e5b, - (fx16)0xf8f6, (fx16)0x0e5e, - (fx16)0xf8fb, (fx16)0x0e61, - (fx16)0xf901, (fx16)0x0e64, - (fx16)0xf907, (fx16)0x0e66, - (fx16)0xf90c, (fx16)0x0e69, - (fx16)0xf912, (fx16)0x0e6c, - (fx16)0xf918, (fx16)0x0e6f, - (fx16)0xf91d, (fx16)0x0e71, - (fx16)0xf923, (fx16)0x0e74, - (fx16)0xf929, (fx16)0x0e77, - (fx16)0xf92e, (fx16)0x0e79, - (fx16)0xf934, (fx16)0x0e7c, - (fx16)0xf93a, (fx16)0x0e7f, - (fx16)0xf93f, (fx16)0x0e81, - (fx16)0xf945, (fx16)0x0e84, - (fx16)0xf94b, (fx16)0x0e87, - (fx16)0xf951, (fx16)0x0e89, - (fx16)0xf956, (fx16)0x0e8c, - (fx16)0xf95c, (fx16)0x0e8f, - (fx16)0xf962, (fx16)0x0e91, - (fx16)0xf967, (fx16)0x0e94, - (fx16)0xf96d, (fx16)0x0e96, - (fx16)0xf973, (fx16)0x0e99, - (fx16)0xf979, (fx16)0x0e9b, - (fx16)0xf97e, (fx16)0x0e9e, - (fx16)0xf984, (fx16)0x0ea1, - (fx16)0xf98a, (fx16)0x0ea3, - (fx16)0xf990, (fx16)0x0ea6, - (fx16)0xf995, (fx16)0x0ea8, - (fx16)0xf99b, (fx16)0x0eab, - (fx16)0xf9a1, (fx16)0x0ead, - (fx16)0xf9a7, (fx16)0x0eb0, - (fx16)0xf9ac, (fx16)0x0eb2, - (fx16)0xf9b2, (fx16)0x0eb5, - (fx16)0xf9b8, (fx16)0x0eb7, - (fx16)0xf9be, (fx16)0x0eba, - (fx16)0xf9c4, (fx16)0x0ebc, - (fx16)0xf9c9, (fx16)0x0ebf, - (fx16)0xf9cf, (fx16)0x0ec1, - (fx16)0xf9d5, (fx16)0x0ec3, - (fx16)0xf9db, (fx16)0x0ec6, - (fx16)0xf9e1, (fx16)0x0ec8, - (fx16)0xf9e6, (fx16)0x0ecb, - (fx16)0xf9ec, (fx16)0x0ecd, - (fx16)0xf9f2, (fx16)0x0ecf, - (fx16)0xf9f8, (fx16)0x0ed2, - (fx16)0xf9fe, (fx16)0x0ed4, - (fx16)0xfa03, (fx16)0x0ed6, - (fx16)0xfa09, (fx16)0x0ed9, - (fx16)0xfa0f, (fx16)0x0edb, - (fx16)0xfa15, (fx16)0x0edd, - (fx16)0xfa1b, (fx16)0x0ee0, - (fx16)0xfa21, (fx16)0x0ee2, - (fx16)0xfa26, (fx16)0x0ee4, - (fx16)0xfa2c, (fx16)0x0ee7, - (fx16)0xfa32, (fx16)0x0ee9, - (fx16)0xfa38, (fx16)0x0eeb, - (fx16)0xfa3e, (fx16)0x0eee, - (fx16)0xfa44, (fx16)0x0ef0, - (fx16)0xfa4a, (fx16)0x0ef2, - (fx16)0xfa4f, (fx16)0x0ef4, - (fx16)0xfa55, (fx16)0x0ef7, - (fx16)0xfa5b, (fx16)0x0ef9, - (fx16)0xfa61, (fx16)0x0efb, - (fx16)0xfa67, (fx16)0x0efd, - (fx16)0xfa6d, (fx16)0x0eff, - (fx16)0xfa73, (fx16)0x0f02, - (fx16)0xfa79, (fx16)0x0f04, - (fx16)0xfa7f, (fx16)0x0f06, - (fx16)0xfa84, (fx16)0x0f08, - (fx16)0xfa8a, (fx16)0x0f0a, - (fx16)0xfa90, (fx16)0x0f0c, - (fx16)0xfa96, (fx16)0x0f0e, - (fx16)0xfa9c, (fx16)0x0f11, - (fx16)0xfaa2, (fx16)0x0f13, - (fx16)0xfaa8, (fx16)0x0f15, - (fx16)0xfaae, (fx16)0x0f17, - (fx16)0xfab4, (fx16)0x0f19, - (fx16)0xfaba, (fx16)0x0f1b, - (fx16)0xfac0, (fx16)0x0f1d, - (fx16)0xfac6, (fx16)0x0f1f, - (fx16)0xfacc, (fx16)0x0f21, - (fx16)0xfad1, (fx16)0x0f23, - (fx16)0xfad7, (fx16)0x0f25, - (fx16)0xfadd, (fx16)0x0f27, - (fx16)0xfae3, (fx16)0x0f29, - (fx16)0xfae9, (fx16)0x0f2b, - (fx16)0xfaef, (fx16)0x0f2d, - (fx16)0xfaf5, (fx16)0x0f2f, - (fx16)0xfafb, (fx16)0x0f31, - (fx16)0xfb01, (fx16)0x0f33, - (fx16)0xfb07, (fx16)0x0f35, - (fx16)0xfb0d, (fx16)0x0f37, - (fx16)0xfb13, (fx16)0x0f39, - (fx16)0xfb19, (fx16)0x0f3b, - (fx16)0xfb1f, (fx16)0x0f3d, - (fx16)0xfb25, (fx16)0x0f3f, - (fx16)0xfb2b, (fx16)0x0f41, - (fx16)0xfb31, (fx16)0x0f43, - (fx16)0xfb37, (fx16)0x0f45, - (fx16)0xfb3d, (fx16)0x0f46, - (fx16)0xfb43, (fx16)0x0f48, - (fx16)0xfb49, (fx16)0x0f4a, - (fx16)0xfb4f, (fx16)0x0f4c, - (fx16)0xfb55, (fx16)0x0f4e, - (fx16)0xfb5b, (fx16)0x0f50, - (fx16)0xfb61, (fx16)0x0f51, - (fx16)0xfb67, (fx16)0x0f53, - (fx16)0xfb6d, (fx16)0x0f55, - (fx16)0xfb73, (fx16)0x0f57, - (fx16)0xfb79, (fx16)0x0f59, - (fx16)0xfb7f, (fx16)0x0f5a, - (fx16)0xfb85, (fx16)0x0f5c, - (fx16)0xfb8b, (fx16)0x0f5e, - (fx16)0xfb91, (fx16)0x0f60, - (fx16)0xfb97, (fx16)0x0f61, - (fx16)0xfb9d, (fx16)0x0f63, - (fx16)0xfba3, (fx16)0x0f65, - (fx16)0xfba9, (fx16)0x0f67, - (fx16)0xfbaf, (fx16)0x0f68, - (fx16)0xfbb5, (fx16)0x0f6a, - (fx16)0xfbbc, (fx16)0x0f6c, - (fx16)0xfbc2, (fx16)0x0f6d, - (fx16)0xfbc8, (fx16)0x0f6f, - (fx16)0xfbce, (fx16)0x0f71, - (fx16)0xfbd4, (fx16)0x0f72, - (fx16)0xfbda, (fx16)0x0f74, - (fx16)0xfbe0, (fx16)0x0f76, - (fx16)0xfbe6, (fx16)0x0f77, - (fx16)0xfbec, (fx16)0x0f79, - (fx16)0xfbf2, (fx16)0x0f7a, - (fx16)0xfbf8, (fx16)0x0f7c, - (fx16)0xfbfe, (fx16)0x0f7d, - (fx16)0xfc04, (fx16)0x0f7f, - (fx16)0xfc0a, (fx16)0x0f81, - (fx16)0xfc11, (fx16)0x0f82, - (fx16)0xfc17, (fx16)0x0f84, - (fx16)0xfc1d, (fx16)0x0f85, - (fx16)0xfc23, (fx16)0x0f87, - (fx16)0xfc29, (fx16)0x0f88, - (fx16)0xfc2f, (fx16)0x0f8a, - (fx16)0xfc35, (fx16)0x0f8b, - (fx16)0xfc3b, (fx16)0x0f8d, - (fx16)0xfc41, (fx16)0x0f8e, - (fx16)0xfc47, (fx16)0x0f90, - (fx16)0xfc4e, (fx16)0x0f91, - (fx16)0xfc54, (fx16)0x0f93, - (fx16)0xfc5a, (fx16)0x0f94, - (fx16)0xfc60, (fx16)0x0f95, - (fx16)0xfc66, (fx16)0x0f97, - (fx16)0xfc6c, (fx16)0x0f98, - (fx16)0xfc72, (fx16)0x0f9a, - (fx16)0xfc78, (fx16)0x0f9b, - (fx16)0xfc7f, (fx16)0x0f9c, - (fx16)0xfc85, (fx16)0x0f9e, - (fx16)0xfc8b, (fx16)0x0f9f, - (fx16)0xfc91, (fx16)0x0fa1, - (fx16)0xfc97, (fx16)0x0fa2, - (fx16)0xfc9d, (fx16)0x0fa3, - (fx16)0xfca3, (fx16)0x0fa5, - (fx16)0xfcaa, (fx16)0x0fa6, - (fx16)0xfcb0, (fx16)0x0fa7, - (fx16)0xfcb6, (fx16)0x0fa8, - (fx16)0xfcbc, (fx16)0x0faa, - (fx16)0xfcc2, (fx16)0x0fab, - (fx16)0xfcc8, (fx16)0x0fac, - (fx16)0xfcce, (fx16)0x0fae, - (fx16)0xfcd5, (fx16)0x0faf, - (fx16)0xfcdb, (fx16)0x0fb0, - (fx16)0xfce1, (fx16)0x0fb1, - (fx16)0xfce7, (fx16)0x0fb3, - (fx16)0xfced, (fx16)0x0fb4, - (fx16)0xfcf3, (fx16)0x0fb5, - (fx16)0xfcfa, (fx16)0x0fb6, - (fx16)0xfd00, (fx16)0x0fb7, - (fx16)0xfd06, (fx16)0x0fb8, - (fx16)0xfd0c, (fx16)0x0fba, - (fx16)0xfd12, (fx16)0x0fbb, - (fx16)0xfd18, (fx16)0x0fbc, - (fx16)0xfd1f, (fx16)0x0fbd, - (fx16)0xfd25, (fx16)0x0fbe, - (fx16)0xfd2b, (fx16)0x0fbf, - (fx16)0xfd31, (fx16)0x0fc0, - (fx16)0xfd37, (fx16)0x0fc2, - (fx16)0xfd3e, (fx16)0x0fc3, - (fx16)0xfd44, (fx16)0x0fc4, - (fx16)0xfd4a, (fx16)0x0fc5, - (fx16)0xfd50, (fx16)0x0fc6, - (fx16)0xfd56, (fx16)0x0fc7, - (fx16)0xfd5d, (fx16)0x0fc8, - (fx16)0xfd63, (fx16)0x0fc9, - (fx16)0xfd69, (fx16)0x0fca, - (fx16)0xfd6f, (fx16)0x0fcb, - (fx16)0xfd75, (fx16)0x0fcc, - (fx16)0xfd7c, (fx16)0x0fcd, - (fx16)0xfd82, (fx16)0x0fce, - (fx16)0xfd88, (fx16)0x0fcf, - (fx16)0xfd8e, (fx16)0x0fd0, - (fx16)0xfd94, (fx16)0x0fd1, - (fx16)0xfd9b, (fx16)0x0fd2, - (fx16)0xfda1, (fx16)0x0fd3, - (fx16)0xfda7, (fx16)0x0fd4, - (fx16)0xfdad, (fx16)0x0fd5, - (fx16)0xfdb3, (fx16)0x0fd5, - (fx16)0xfdba, (fx16)0x0fd6, - (fx16)0xfdc0, (fx16)0x0fd7, - (fx16)0xfdc6, (fx16)0x0fd8, - (fx16)0xfdcc, (fx16)0x0fd9, - (fx16)0xfdd3, (fx16)0x0fda, - (fx16)0xfdd9, (fx16)0x0fdb, - (fx16)0xfddf, (fx16)0x0fdc, - (fx16)0xfde5, (fx16)0x0fdc, - (fx16)0xfdeb, (fx16)0x0fdd, - (fx16)0xfdf2, (fx16)0x0fde, - (fx16)0xfdf8, (fx16)0x0fdf, - (fx16)0xfdfe, (fx16)0x0fe0, - (fx16)0xfe04, (fx16)0x0fe0, - (fx16)0xfe0b, (fx16)0x0fe1, - (fx16)0xfe11, (fx16)0x0fe2, - (fx16)0xfe17, (fx16)0x0fe3, - (fx16)0xfe1d, (fx16)0x0fe3, - (fx16)0xfe24, (fx16)0x0fe4, - (fx16)0xfe2a, (fx16)0x0fe5, - (fx16)0xfe30, (fx16)0x0fe6, - (fx16)0xfe36, (fx16)0x0fe6, - (fx16)0xfe3d, (fx16)0x0fe7, - (fx16)0xfe43, (fx16)0x0fe8, - (fx16)0xfe49, (fx16)0x0fe8, - (fx16)0xfe4f, (fx16)0x0fe9, - (fx16)0xfe56, (fx16)0x0fea, - (fx16)0xfe5c, (fx16)0x0fea, - (fx16)0xfe62, (fx16)0x0feb, - (fx16)0xfe68, (fx16)0x0fec, - (fx16)0xfe6f, (fx16)0x0fec, - (fx16)0xfe75, (fx16)0x0fed, - (fx16)0xfe7b, (fx16)0x0fed, - (fx16)0xfe81, (fx16)0x0fee, - (fx16)0xfe88, (fx16)0x0fef, - (fx16)0xfe8e, (fx16)0x0fef, - (fx16)0xfe94, (fx16)0x0ff0, - (fx16)0xfe9a, (fx16)0x0ff0, - (fx16)0xfea1, (fx16)0x0ff1, - (fx16)0xfea7, (fx16)0x0ff1, - (fx16)0xfead, (fx16)0x0ff2, - (fx16)0xfeb3, (fx16)0x0ff2, - (fx16)0xfeba, (fx16)0x0ff3, - (fx16)0xfec0, (fx16)0x0ff3, - (fx16)0xfec6, (fx16)0x0ff4, - (fx16)0xfecc, (fx16)0x0ff4, - (fx16)0xfed3, (fx16)0x0ff5, - (fx16)0xfed9, (fx16)0x0ff5, - (fx16)0xfedf, (fx16)0x0ff6, - (fx16)0xfee5, (fx16)0x0ff6, - (fx16)0xfeec, (fx16)0x0ff7, - (fx16)0xfef2, (fx16)0x0ff7, - (fx16)0xfef8, (fx16)0x0ff8, - (fx16)0xfeff, (fx16)0x0ff8, - (fx16)0xff05, (fx16)0x0ff8, - (fx16)0xff0b, (fx16)0x0ff9, - (fx16)0xff11, (fx16)0x0ff9, - (fx16)0xff18, (fx16)0x0ff9, - (fx16)0xff1e, (fx16)0x0ffa, - (fx16)0xff24, (fx16)0x0ffa, - (fx16)0xff2a, (fx16)0x0ffa, - (fx16)0xff31, (fx16)0x0ffb, - (fx16)0xff37, (fx16)0x0ffb, - (fx16)0xff3d, (fx16)0x0ffb, - (fx16)0xff44, (fx16)0x0ffc, - (fx16)0xff4a, (fx16)0x0ffc, - (fx16)0xff50, (fx16)0x0ffc, - (fx16)0xff56, (fx16)0x0ffc, - (fx16)0xff5d, (fx16)0x0ffd, - (fx16)0xff63, (fx16)0x0ffd, - (fx16)0xff69, (fx16)0x0ffd, - (fx16)0xff70, (fx16)0x0ffd, - (fx16)0xff76, (fx16)0x0ffe, - (fx16)0xff7c, (fx16)0x0ffe, - (fx16)0xff82, (fx16)0x0ffe, - (fx16)0xff89, (fx16)0x0ffe, - (fx16)0xff8f, (fx16)0x0ffe, - (fx16)0xff95, (fx16)0x0fff, - (fx16)0xff9b, (fx16)0x0fff, - (fx16)0xffa2, (fx16)0x0fff, - (fx16)0xffa8, (fx16)0x0fff, - (fx16)0xffae, (fx16)0x0fff, - (fx16)0xffb5, (fx16)0x0fff, - (fx16)0xffbb, (fx16)0x0fff, - (fx16)0xffc1, (fx16)0x1000, - (fx16)0xffc7, (fx16)0x1000, - (fx16)0xffce, (fx16)0x1000, - (fx16)0xffd4, (fx16)0x1000, - (fx16)0xffda, (fx16)0x1000, - (fx16)0xffe1, (fx16)0x1000, - (fx16)0xffe7, (fx16)0x1000, - (fx16)0xffed, (fx16)0x1000, - (fx16)0xfff3, (fx16)0x1000, - (fx16)0xfffa, (fx16)0x1000 -}; -#endif diff --git a/subprojects/NitroSDK/libraries/fx/src/fx_trig.c b/subprojects/NitroSDK/libraries/fx/src/fx_trig.c deleted file mode 100644 index c6753d0062..0000000000 --- a/subprojects/NitroSDK/libraries/fx/src/fx_trig.c +++ /dev/null @@ -1,106 +0,0 @@ -#include -#include - -#define SDK_FOUR_PI ((fx64c)0x0000000145f306ddLL) - -#define SDK_SINCOEFF_1 ((u64)3373259426LL) -#define SDK_SINCOEFF_2 ((u64)346799334LL) -#define SDK_SINCOEFF_3 ((u64)132467588LL) -#define SDK_SINCOEFF_4 ((u64)63079804LL) -#define SDK_SINCOEFF_5 ((u64)36796552LL) - -#define SDK_COSCOEFF_1 ((u64)1324675879LL) -#define SDK_COSCOEFF_2 ((u64)220779313LL) -#define SDK_COSCOEFF_3 ((u64)88311725LL) -#define SDK_COSCOEFF_4 ((u64)47309853LL) - -static u64 FX_SinFx64c_internal(u64 y); -static u64 FX_CosFx64c_internal(u64 y); - -#include - -static u64 FX_SinFx64c_internal (u64 y) { - u64 tmp; - u64 yy; - if (y == 0x100000000LL) { - return (u64)FX64C_SQRT1_2; - } - yy = y * y >> 32; - - tmp = FX64C_ONE - (SDK_SINCOEFF_5 * yy >> 32); - tmp = FX64C_ONE - ((SDK_SINCOEFF_4 * yy >> 32) * tmp >> 32); - tmp = FX64C_ONE - ((SDK_SINCOEFF_3 * yy >> 32) * tmp >> 32); - tmp = SDK_SINCOEFF_1 - ((SDK_SINCOEFF_2 * yy >> 32) * tmp >> 32); - - return tmp * y >> 32; -} - -static u64 FX_CosFx64c_internal (u64 y) { - u64 tmp; - u64 yy; - if (y == 0x100000000LL) { - return (u64)FX64C_SQRT1_2; - } - yy = y * y >> 32; - - tmp = FX64C_ONE - (SDK_COSCOEFF_4 * yy >> 32); - tmp = FX64C_ONE - ((SDK_COSCOEFF_3 * yy >> 32) * tmp >> 32); - tmp = FX64C_ONE - ((SDK_COSCOEFF_2 * yy >> 32) * tmp >> 32); - tmp = FX64C_ONE - ((SDK_COSCOEFF_1 * yy >> 32) * tmp >> 32); - - return tmp; -} - -#include - -fx64c FX_SinFx64c (fx32 rad) { - fx64c y; - fx64c rval; - int n; - - if (rad < 0) { - return -FX_SinFx64c(-rad); - } - y = (fx64c)((SDK_FOUR_PI * rad) >> 12); - n = (int)(y >> 32); - y = y & 0xffffffff; - - if (n & 1) { - y = 0x100000000LL - y; - } - if ((n + 1) & 2) { - rval = (fx64c)FX_CosFx64c_internal((u64)y); - } else { - rval = (fx64c)FX_SinFx64c_internal((u64)y); - } - if ((n & 7) > 3) { - rval = -rval; - } - return rval; -} - -fx64c FX_CosFx64c (fx32 rad) { - fx64c y; - fx64c rval; - int n; - - if (rad < 0) { - return FX_CosFx64c(-rad); - } - y = (fx64c)((SDK_FOUR_PI * rad) >> 12); - n = (int)(y >> 32); - y = y & 0xffffffff; - - if (n & 1) { - y = 0x100000000LL - y; - } - if ((n + 1) & 2) { - rval = (fx64c)FX_SinFx64c_internal((u64)y); - } else { - rval = (fx64c)FX_CosFx64c_internal((u64)y); - } - if (((n + 2) & 7) > 3) { - rval = -rval; - } - return rval; -} diff --git a/subprojects/NitroSDK/libraries/fx/src/fx_vec.c b/subprojects/NitroSDK/libraries/fx/src/fx_vec.c deleted file mode 100644 index 1f3536c7be..0000000000 --- a/subprojects/NitroSDK/libraries/fx/src/fx_vec.c +++ /dev/null @@ -1,258 +0,0 @@ -#include -#include -#include -#include -#include - -void VEC_Add (const VecFx32 * a, const VecFx32 * b, VecFx32 * ab) { - SDK_NULL_ASSERT(a); - SDK_NULL_ASSERT(b); - SDK_NULL_ASSERT(ab); - - ab->x = a->x + b->x; - ab->y = a->y + b->y; - ab->z = a->z + b->z; -} - -void VEC_Subtract (const VecFx32 * a, const VecFx32 * b, VecFx32 * ab) { - SDK_NULL_ASSERT(a); - SDK_NULL_ASSERT(b); - SDK_NULL_ASSERT(ab); - - ab->x = a->x - b->x; - ab->y = a->y - b->y; - ab->z = a->z - b->z; -} - -void VEC_Fx16Add (const VecFx16 * a, const VecFx16 * b, VecFx16 * ab) { - SDK_NULL_ASSERT(a); - SDK_NULL_ASSERT(b); - SDK_NULL_ASSERT(ab); - - ab->x = (fx16)(a->x + b->x); - ab->y = (fx16)(a->y + b->y); - ab->z = (fx16)(a->z + b->z); -} - -void VEC_Fx16Subtract (const VecFx16 * a, const VecFx16 * b, VecFx16 * ab) { - SDK_NULL_ASSERT(a); - SDK_NULL_ASSERT(b); - SDK_NULL_ASSERT(ab); - - ab->x = (fx16)(a->x - b->x); - ab->y = (fx16)(a->y - b->y); - ab->z = (fx16)(a->z - b->z); -} - -#include - -fx32 VEC_DotProduct (const VecFx32 * a, const VecFx32 * b) { - SDK_NULL_ASSERT(a); - SDK_NULL_ASSERT(b); - return (fx32)(((fx64)a->x * b->x + - (fx64)a->y * b->y + (fx64)a->z * b->z + (1 << (FX64_SHIFT - 1))) >> FX64_SHIFT); -} - -fx32 VEC_Fx16DotProduct (const VecFx16 * a, const VecFx16 * b) { - fx32 tmp1, tmp2; - SDK_NULL_ASSERT(a); - SDK_NULL_ASSERT(b); - - tmp1 = (a->x * b->x) + (a->y * b->y); - tmp2 = (a->z * b->z) + (1 << (FX64_SHIFT - 1)); - return (fx32)(((fx64)tmp1 + tmp2) >> FX64_SHIFT); -} - -void VEC_CrossProduct (const VecFx32 * a, const VecFx32 * b, VecFx32 * axb) { - fx32 x, y, z; - SDK_NULL_ASSERT(a); - SDK_NULL_ASSERT(b); - SDK_NULL_ASSERT(axb); - - x = (fx32)(((fx64)a->y * b->z - (fx64)a->z * b->y + (1 << (FX64_SHIFT - 1))) >> FX64_SHIFT); - - y = (fx32)(((fx64)a->z * b->x - (fx64)a->x * b->z + (1 << (FX64_SHIFT - 1))) >> FX64_SHIFT); - - z = (fx32)(((fx64)a->x * b->y - (fx64)a->y * b->x + (1 << (FX64_SHIFT - 1))) >> FX32_SHIFT); - - axb->x = x; - axb->y = y; - axb->z = z; -} - -void VEC_Fx16CrossProduct (const VecFx16 * a, const VecFx16 * b, VecFx16 * axb) { - fx32 x, y, z; - SDK_NULL_ASSERT(a); - SDK_NULL_ASSERT(b); - SDK_NULL_ASSERT(axb); - - x = ((a->y * b->z - a->z * b->y + (FX16_ONE >> 1)) >> FX16_SHIFT); - y = ((a->z * b->x - a->x * b->z + (FX16_ONE >> 1)) >> FX16_SHIFT); - z = ((a->x * b->y - a->y * b->x + (FX16_ONE >> 1)) >> FX16_SHIFT); - - SDK_WARNING( - x <= FX16_MAX && x >= FX16_MIN && - y <= FX16_MAX && y >= FX16_MIN && - z <= FX16_MAX && z >= FX16_MIN, - "VEC_Fx16CrossProduct: Overflow (0x%x, 0x%x, 0x%x) x (0x%x, 0x%x, 0x%x).", - a->x, a->y, a->z, b->x, b->y, b->z - ); - - axb->x = (fx16)x; - axb->y = (fx16)y; - axb->z = (fx16)z; -} - -fx32 VEC_Mag (const VecFx32 * pSrc) { - fx64 t; - fx32 rval; - - SDK_NULL_ASSERT(pSrc); - SDK_ASSERT(!CP_IsSqrtBusy()); - - t = (fx64)pSrc->x * pSrc->x; - t += (fx64)pSrc->y * pSrc->y; - t += (fx64)pSrc->z * pSrc->z; - - t <<= 2; - - CP_SetSqrt64((u64)t); - rval = ((fx32)CP_GetSqrtResult32() + 1) >> 1; - return rval; -} - -fx32 VEC_Fx16Mag (const VecFx16 * pSrc) { - fx64 t; - fx32 rval; - - SDK_NULL_ASSERT(pSrc); - SDK_ASSERT(!CP_IsSqrtBusy()); - - t = pSrc->x * pSrc->x; - t += pSrc->y * pSrc->y; - t += pSrc->z * pSrc->z; - - t <<= 2; - - CP_SetSqrt64((u64)t); - rval = ((fx32)CP_GetSqrtResult32() + 1) >> 1; - return rval; -} - -void VEC_Normalize (const VecFx32 * pSrc, VecFx32 * pDst) { - fx64 t; - s32 sqrt; - - SDK_NULL_ASSERT(pSrc); - SDK_NULL_ASSERT(pDst); - SDK_ASSERT(!CP_IsDivBusy() && !CP_IsSqrtBusy()); - - t = (fx64)pSrc->x * pSrc->x; - t += (fx64)pSrc->y * pSrc->y; - t += (fx64)pSrc->z * pSrc->z; - SDK_ASSERTMSG(t > 0, "*pSrc is (0, 0, 0)"); - - SDK_WARNING(1LL << (FX32_SHIFT + FX32_SHIFT + FX64C_SHIFT) >= (u64)t, "*pSrc is too large!"); - - CP_SetDiv64_64(1LL << (FX32_SHIFT + FX32_SHIFT + FX64C_SHIFT), (u64)t); - CP_SetSqrt64((u64)(t << 2)); - - sqrt = (s32)CP_GetSqrtResult32(); - t = CP_GetDivResult64(); - - t = t * sqrt; - pDst->x = (fx32)((t * pSrc->x + (1LL << (32 + FX32_SHIFT))) >> (32 + FX32_SHIFT + 1)); - pDst->y = (fx32)((t * pSrc->y + (1LL << (32 + FX32_SHIFT))) >> (32 + FX32_SHIFT + 1)); - pDst->z = (fx32)((t * pSrc->z + (1LL << (32 + FX32_SHIFT))) >> (32 + FX32_SHIFT + 1)); -} - -void VEC_Fx16Normalize (const VecFx16 * pSrc, VecFx16 * pDst) { - fx64 t; - s32 sqrt; - - SDK_NULL_ASSERT(pSrc); - SDK_NULL_ASSERT(pDst); - SDK_ASSERT(!CP_IsDivBusy() && !CP_IsSqrtBusy()); - - t = pSrc->x * pSrc->x; - t += pSrc->y * pSrc->y; - t += pSrc->z * pSrc->z; - SDK_ASSERTMSG(t > 0, "*pSrc is (0, 0, 0)"); - - CP_SetDiv64_64(1LL << (FX32_SHIFT + FX32_SHIFT + FX64C_SHIFT), (u64)t); - CP_SetSqrt64((u64)(t << 2)); - - sqrt = (s32)CP_GetSqrtResult32(); - t = CP_GetDivResult64(); - - t = t * sqrt; - pDst->x = (fx16)((t * pSrc->x + (1LL << (32 + FX32_SHIFT))) >> (32 + FX32_SHIFT + 1)); - pDst->y = (fx16)((t * pSrc->y + (1LL << (32 + FX32_SHIFT))) >> (32 + FX32_SHIFT + 1)); - pDst->z = (fx16)((t * pSrc->z + (1LL << (32 + FX32_SHIFT))) >> (32 + FX32_SHIFT + 1)); -} - -void VEC_MultAdd (fx32 a, const VecFx32 * v1, const VecFx32 * v2, VecFx32 * pDest) { - SDK_NULL_ASSERT(v1); - SDK_NULL_ASSERT(v2); - SDK_NULL_ASSERT(pDest); - - pDest->x = v2->x + (fx32)(((fx64)a * v1->x) >> FX32_SHIFT); - pDest->y = v2->y + (fx32)(((fx64)a * v1->y) >> FX32_SHIFT); - pDest->z = v2->z + (fx32)(((fx64)a * v1->z) >> FX32_SHIFT); -} - -void VEC_MultSubtract (fx32 a, const VecFx32 * v1, const VecFx32 * v2, VecFx32 * pDest) { - SDK_NULL_ASSERT(v1); - SDK_NULL_ASSERT(v2); - SDK_NULL_ASSERT(pDest); - - pDest->x = -v2->x + (fx32)(((fx64)a * v1->x) >> FX32_SHIFT); - pDest->y = -v2->y + (fx32)(((fx64)a * v1->y) >> FX32_SHIFT); - pDest->z = -v2->z + (fx32)(((fx64)a * v1->z) >> FX32_SHIFT); -} - -fx32 VEC_Distance (const VecFx32 * v1, const VecFx32 * v2) { - fx64 tmp; - fx32 diff; - - SDK_NULL_ASSERT(v1); - SDK_NULL_ASSERT(v2); - - diff = v1->x - v2->x; - tmp = (fx64)diff * diff; - - diff = v1->y - v2->y; - tmp += (fx64)diff * diff; - - diff = v1->z - v2->z; - tmp += (fx64)diff * diff; - - tmp <<= 2; - CP_SetSqrt64((u64)tmp); - - return ((fx32)CP_GetSqrtResult32() + 1) >> 1; -} - -fx32 VEC_Fx16Distance (const VecFx16 * v1, const VecFx16 * v2) { - fx64 tmp; - fx32 diff; - - SDK_NULL_ASSERT(v1); - SDK_NULL_ASSERT(v2); - - diff = v1->x - v2->x; - tmp = diff * diff; - - diff = v1->y - v2->y; - tmp += diff * diff; - - diff = v1->z - v2->z; - tmp += diff * diff; - - tmp <<= 2; - CP_SetSqrt64((u64)tmp); - - return ((fx32)CP_GetSqrtResult32() + 1) >> 1; -} - -#include diff --git a/subprojects/NitroSDK/libraries/gx/meson.build b/subprojects/NitroSDK/libraries/gx/meson.build deleted file mode 100644 index b4ca6cf812..0000000000 --- a/subprojects/NitroSDK/libraries/gx/meson.build +++ /dev/null @@ -1,27 +0,0 @@ -libgx_srcs = files( - 'src/gx.c', - 'src/gxstate.c', - 'src/gx_vramcnt.c', - 'src/gx_bgcnt.c', - 'src/g2.c', - 'src/g3b.c', - 'src/g3imm.c', - 'src/g3x.c', - 'src/g3_util.c', - 'src/gx_load2d.c', - 'src/gx_load3d.c', - 'src/g3.c', - 'src/gxasm.c' -) - -libgx_internal_includes = include_directories('src/include') - -libgx = static_library('gx', - sources: [libgx_srcs, fx_const_h], - c_args: [c_args, sdk_args], - include_directories: [public_includes, libgx_internal_includes], - c_pch: nitro_pch, - pic: false -) - -nitrosdk_libs += libgx diff --git a/subprojects/NitroSDK/libraries/gx/src/g2.c b/subprojects/NitroSDK/libraries/gx/src/g2.c deleted file mode 100644 index 6c8306a6e6..0000000000 --- a/subprojects/NitroSDK/libraries/gx/src/g2.c +++ /dev/null @@ -1,102 +0,0 @@ -#include -#include -#include - -void G2x_SetBGyAffine_ (u32 addr, const MtxFx22 * mtx, int centerX, int centerY, int x1, int y1) { - s32 dx, dy; - fx32 x2, y2; - - SDK_NULL_ASSERT(mtx); - SDK_MINMAX_ASSERT(mtx->_00, -128 * FX32_ONE, 128 * FX32_ONE - 1); - SDK_MINMAX_ASSERT(mtx->_01, -128 * FX32_ONE, 128 * FX32_ONE - 1); - SDK_MINMAX_ASSERT(mtx->_10, -128 * FX32_ONE, 128 * FX32_ONE - 1); - SDK_MINMAX_ASSERT(mtx->_11, -128 * FX32_ONE, 128 * FX32_ONE - 1); - - *((vu32 *)addr + 0) = (u32)((u16)(s16)(mtx->_00 >> 4) | (u16)(s16)(mtx->_01 >> 4) << 16); - - *((vu32 *)addr + 1) = (u32)((u16)(s16)(mtx->_10 >> 4) | (u16)(s16)(mtx->_11 >> 4) << 16); - - dx = x1 - centerX; - dy = y1 - centerY; - - x2 = mtx->_00 * dx + mtx->_01 * dy + (centerX << FX32_SHIFT); - y2 = mtx->_10 * dx + mtx->_11 * dy + (centerY << FX32_SHIFT); - - *((vu32 *)addr + 2) = (u32)(x2 >> 4); - *((vu32 *)addr + 3) = (u32)(y2 >> 4); -} - -#include - -typedef enum { - G2_BLENDTYPE_NONE = 0x0000, - G2_BLENDTYPE_ALPHA = 0x0040, - G2_BLENDTYPE_FADEIN = 0x0080, - G2_BLENDTYPE_FADEOUT = 0x00c0 -} G2_BLENDTYPE; - -void G2x_SetBlendAlpha_ (u32 addr, int plane1, int plane2, int ev1, int ev2) { - SDK_MINMAX_ASSERT(plane1, 0, 0x20 - 1); - SDK_MINMAX_ASSERT(plane2, 0, 0x40 - 1); - SDK_MINMAX_ASSERT(ev1, 0, 31); - SDK_MINMAX_ASSERT(ev2, 0, 31); - - *((vu32 *)addr + 0) = - (u32)((G2_BLENDTYPE_ALPHA | plane1 | plane2 << 8) | ((ev1 | ev2 << 8) << 16)); -} - -void G2x_SetBlendBrightness_ (u32 addr, int plane, int brightness) { - SDK_MINMAX_ASSERT(brightness, -31, 31); - SDK_MINMAX_ASSERT(plane, 0, 0x40 - 1); - - if (brightness < 0) { - *((vu16 *)addr + 0) = (u16)(G2_BLENDTYPE_FADEOUT | plane); - - *((vu16 *)addr + 2) = (u16) - brightness; - } else { - *((vu16 *)addr + 0) = (u16)(G2_BLENDTYPE_FADEIN | plane); - - *((vu16 *)addr + 2) = (u16)brightness; - } -} - -void G2x_SetBlendBrightnessExt_ (u32 addr, int plane1, int plane2, int ev1, int ev2, int brightness) { - SDK_MINMAX_ASSERT(brightness, -31, 31); - SDK_MINMAX_ASSERT(plane1, 0, 0x40 - 1); - SDK_MINMAX_ASSERT(plane2, 0, 0x40 - 1); - SDK_MINMAX_ASSERT(ev1, 0, 31); - SDK_MINMAX_ASSERT(ev2, 0, 31); - - *((vu16 *)addr + 1) = (u16)(ev1 | (ev2 << 8)); - - if (brightness < 0) { - *((vu16 *)addr + 0) = (u16)(G2_BLENDTYPE_FADEOUT | plane1 | (plane2 << 8)); - - *((vu16 *)addr + 2) = (u16) - brightness; - } else { - *((vu16 *)addr + 0) = (u16)(G2_BLENDTYPE_FADEIN | plane1 | (plane2 << 8)); - - *((vu16 *)addr + 2) = (u16)brightness; - } -} - -void G2x_ChangeBlendBrightness_ (u32 addr, int brightness) { - u16 tmp; - SDK_MINMAX_ASSERT(brightness, -31, 31); - - tmp = *((vu16 *)addr + 0); - - if (brightness < 0) { - if (G2_BLENDTYPE_FADEIN == (tmp & REG_G2_BLDCNT_EFFECT_MASK)) { - *((vu16 *)addr + 0) = (u16)((tmp & ~REG_G2_BLDCNT_EFFECT_MASK) | G2_BLENDTYPE_FADEOUT); - } - - *((vu16 *)addr + 2) = (u16) - brightness; - } else { - if (G2_BLENDTYPE_FADEOUT == (tmp & REG_G2_BLDCNT_EFFECT_MASK)) { - *((vu16 *)addr + 0) = (u16)((tmp & ~REG_G2_BLDCNT_EFFECT_MASK) | G2_BLENDTYPE_FADEIN); - } - - *((vu16 *)addr + 2) = (u16)brightness; - } -} diff --git a/subprojects/NitroSDK/libraries/gx/src/g3.c b/subprojects/NitroSDK/libraries/gx/src/g3.c deleted file mode 100644 index ce9e514697..0000000000 --- a/subprojects/NitroSDK/libraries/gx/src/g3.c +++ /dev/null @@ -1,53 +0,0 @@ -#include - -void G3_BeginMakeDL (GXDLInfo * info, void * ptr, u32 length) { - SDK_ALIGN4_ASSERT(ptr); - SDK_ALIGN4_ASSERT(length); - - info->length = length; - info->bottom = (u32 *)ptr; - info->curr_cmd = (u8 *)ptr; - info->curr_param = (u32 *)ptr + 1; - info->param0_cmd_flg = FALSE; -} - -#include - -u32 G3_EndMakeDL (GXDLInfo * info) { - u32 sz; - if ((u8 *)info->bottom == info->curr_cmd) { - return 0; - } - - switch ((u32)info->curr_cmd & 3) { - case 0: - SDK_ASSERT((u32)info->bottom < (u32)info->curr_cmd); - return (u32)((u32)info->curr_cmd - (u32)info->bottom); - case 1: - *info->curr_cmd++ = 0; - case 2: - *info->curr_cmd++ = 0; - case 3: - *info->curr_cmd++ = 0; - } - ; - - if (info->param0_cmd_flg) { - *(u32 *)(info->curr_param++) = 0; - info->param0_cmd_flg = FALSE; - } - - info->curr_cmd = (u8 *)info->curr_param; - - SDK_ASSERT((u32)info->bottom < (u32)info->curr_cmd); - SDK_ASSERTMSG( - ((u32)info->curr_cmd - (u32)info->bottom <= info->length), - "Buffer overflow ! : Current DL buffer doesn't have enough capacity for new commands\n" - ); - - sz = (u32)((u32)info->curr_cmd - (u32)info->bottom); - - return sz; -} - -#include diff --git a/subprojects/NitroSDK/libraries/gx/src/g3_util.c b/subprojects/NitroSDK/libraries/gx/src/g3_util.c deleted file mode 100644 index 8ea5da141e..0000000000 --- a/subprojects/NitroSDK/libraries/gx/src/g3_util.c +++ /dev/null @@ -1,308 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -void G3i_FrustumW_ (fx32 t, fx32 b, fx32 l, fx32 r, fx32 n, fx32 f, fx32 scaleW, BOOL draw, MtxFx44 * mtx) { - MtxFx44 tmp[1]; - if (mtx == NULL) { - mtx = tmp; - } - MTX_FrustumW(t, b, l, r, n, f, scaleW, mtx); - if (draw) { - G3_MtxMode(GX_MTXMODE_PROJECTION); - G3_LoadMtx44(mtx); - } -} - -void G3i_PerspectiveW_ (fx32 fovySin, fx32 fovyCos, fx32 aspect, fx32 n, fx32 f, fx32 scaleW, BOOL draw, MtxFx44 * mtx) { - MtxFx44 tmp[1]; - if (mtx == NULL) { - mtx = tmp; - } - MTX_PerspectiveW(fovySin, fovyCos, aspect, n, f, scaleW, mtx); - if (draw) { - G3_MtxMode(GX_MTXMODE_PROJECTION); - G3_LoadMtx44(mtx); - } -} - -void G3i_OrthoW_ (fx32 t, fx32 b, fx32 l, fx32 r, fx32 n, fx32 f, fx32 scaleW, BOOL draw, MtxFx44 * mtx) { - MtxFx44 tmp[1]; - if (mtx == NULL) { - mtx = tmp; - } - MTX_OrthoW(t, b, l, r, n, f, scaleW, mtx); - if (draw) { - G3_MtxMode(GX_MTXMODE_PROJECTION); - G3_LoadMtx44(mtx); - } -} - -void G3i_LookAt_ (const VecFx32 * camPos, const VecFx32 * camUp, const VecFx32 * target, BOOL draw, MtxFx43 * mtx) { - MtxFx43 tmp[1]; - if (mtx == NULL) { - mtx = tmp; - } - MTX_LookAt(camPos, camUp, target, mtx); - if (draw) { - G3_MtxMode(GX_MTXMODE_POSITION_VECTOR); - G3_LoadMtx43(mtx); - } -} - -void G3_RotX (fx32 s, fx32 c) { - vs32 * p = (vs32 *)®_G3_MTX_MULT_3x3; - - SDK_MINMAX_ASSERT(s, -FX32_ONE, FX32_ONE); - SDK_MINMAX_ASSERT(c, -FX32_ONE, FX32_ONE); - - *p = FX32_ONE; - *p = 0; - *p = 0; - *p = 0; - *p = c; - *p = s; - *p = 0; - *p = -s; - *p = c; -} - -void G3_RotY (fx32 s, fx32 c) { - vs32 * p = (vs32 *)®_G3_MTX_MULT_3x3; - - SDK_MINMAX_ASSERT(s, -FX32_ONE, FX32_ONE); - SDK_MINMAX_ASSERT(c, -FX32_ONE, FX32_ONE); - - *p = c; - *p = 0; - *p = -s; - *p = 0; - *p = FX32_ONE; - *p = 0; - *p = s; - *p = 0; - *p = c; -} - -void G3_RotZ (fx32 s, fx32 c) { - vs32 * p = (vs32 *)®_G3_MTX_MULT_3x3; - - SDK_MINMAX_ASSERT(s, -FX32_ONE, FX32_ONE); - SDK_MINMAX_ASSERT(c, -FX32_ONE, FX32_ONE); - - *p = c; - *p = s; - *p = 0; - *p = -s; - *p = c; - *p = 0; - *p = 0; - *p = 0; - *p = FX32_ONE; -} - -void G3_LoadTexMtxTexCoord (const MtxFx44 * mtx) { - vs32 * p = (vs32 *)®_G3_MTX_LOAD_4x4; - SDK_NULL_ASSERT(mtx); - G3_MtxMode(GX_MTXMODE_TEXTURE); - - *p = mtx->_00; - *p = mtx->_01; - *p = mtx->_02; - *p = mtx->_03; - *p = mtx->_10; - *p = mtx->_11; - *p = mtx->_12; - *p = mtx->_13; - *p = mtx->_20 << 4; - *p = mtx->_21 << 4; - *p = mtx->_22 << 4; - *p = mtx->_23 << 4; - *p = mtx->_30 << 4; - *p = mtx->_31 << 4; - *p = mtx->_32 << 4; - *p = mtx->_33 << 4; -} - -static void G3xx_LoadTexMtxTexCoord_ (u32 * param, const MtxFx44 * mtx) { -#if 1 - MI_Copy32B(&mtx->_00, (void *)(param + 2)); -#else - *(param + 2) = (u32)(mtx->_00); - *(param + 3) = (u32)(mtx->_01); - *(param + 4) = (u32)(mtx->_02); - *(param + 5) = (u32)(mtx->_03); - *(param + 6) = (u32)(mtx->_10); - *(param + 7) = (u32)(mtx->_11); - *(param + 8) = (u32)(mtx->_12); - *(param + 9) = (u32)(mtx->_13); -#endif - *(param + 10) = (u32)(mtx->_20 << 4); - *(param + 11) = (u32)(mtx->_21 << 4); - *(param + 12) = (u32)(mtx->_22 << 4); - *(param + 13) = (u32)(mtx->_23 << 4); - *(param + 14) = (u32)(mtx->_30 << 4); - *(param + 15) = (u32)(mtx->_31 << 4); - *(param + 16) = (u32)(mtx->_32 << 4); - *(param + 17) = (u32)(mtx->_33 << 4); -} - -void G3BS_LoadTexMtxTexCoord (GXDLInfo * info, const MtxFx44 * mtx) { - SDK_NULL_ASSERT(mtx); - SDK_NULL_ASSERT(info); - - *(u32 *)info->curr_cmd = (u32)G3OP_MTX_MODE; - *info->curr_param = (u32)(GX_MTXMODE_TEXTURE << REG_G3_MTX_MODE_M_SHIFT); - *(info->curr_param + 1) = (u32)G3OP_MTX_LOAD_4x4; - - G3xx_LoadTexMtxTexCoord_(info->curr_param, mtx); -} - -#include -void G3CS_LoadTexMtxTexCoord (GXDLInfo * info, const MtxFx44 * mtx) { - SDK_NULL_ASSERT(info); - SDK_NULL_ASSERT(mtx); - - switch ((u32)info->curr_cmd & 3) { - case 0: - - break; - case 1: - *info->curr_cmd++ = 0; - case 2: - *info->curr_cmd++ = 0; - case 3: - *info->curr_cmd++ = 0; - ++info->curr_param; - } - ; - - *(u32 *)info->curr_cmd = (G3OP_MTX_LOAD_4x4 << 8) | G3OP_MTX_MODE; - *info->curr_param = (u32)(GX_MTXMODE_TEXTURE << REG_G3_MTX_MODE_M_SHIFT); - *(info->curr_param + 1) = (u32)G3OP_MTX_LOAD_4x4; - - G3xx_LoadTexMtxTexCoord_(info->curr_param, mtx); -} - -#include - -void G3_LoadTexMtxEnv (const MtxFx44 * mtx) { - vs32 * p = (vs32 *)®_G3_MTX_LOAD_4x4; - SDK_NULL_ASSERT(mtx); - G3_MtxMode(GX_MTXMODE_TEXTURE); - - *p = mtx->_00 << 4; - *p = mtx->_01 << 4; - *p = mtx->_02 << 4; - *p = mtx->_03 << 4; - *p = mtx->_10 << 4; - *p = mtx->_11 << 4; - *p = mtx->_12 << 4; - *p = mtx->_13 << 4; - *p = mtx->_20 << 4; - *p = mtx->_21 << 4; - *p = mtx->_22 << 4; - *p = mtx->_23 << 4; - *p = mtx->_30; - *p = mtx->_31; - *p = mtx->_32; - *p = mtx->_33; -} - -void G3BS_LoadTexMtxEnv (GXDLInfo * info, const MtxFx44 * mtx) { - SDK_NULL_ASSERT(info); - SDK_NULL_ASSERT(mtx); - - *(u32 *)info->curr_cmd = (u32)G3OP_MTX_MODE; - *info->curr_param = (u32)(GX_MTXMODE_TEXTURE << REG_G3_MTX_MODE_M_SHIFT); - *(info->curr_param + 1) = (u32)G3OP_MTX_LOAD_4x4; - - *(info->curr_param + 2) = (u32)(mtx->_00 << 4); - *(info->curr_param + 3) = (u32)(mtx->_01 << 4); - *(info->curr_param + 4) = (u32)(mtx->_02 << 4); - *(info->curr_param + 5) = (u32)(mtx->_03 << 4); - *(info->curr_param + 6) = (u32)(mtx->_10 << 4); - *(info->curr_param + 7) = (u32)(mtx->_11 << 4); - *(info->curr_param + 8) = (u32)(mtx->_12 << 4); - *(info->curr_param + 9) = (u32)(mtx->_13 << 4); - *(info->curr_param + 10) = (u32)(mtx->_20 << 4); - *(info->curr_param + 11) = (u32)(mtx->_21 << 4); - *(info->curr_param + 12) = (u32)(mtx->_22 << 4); - *(info->curr_param + 13) = (u32)(mtx->_23 << 4); - *(info->curr_param + 14) = (u32)mtx->_30; - *(info->curr_param + 15) = (u32)mtx->_31; - *(info->curr_param + 16) = (u32)mtx->_32; - *(info->curr_param + 17) = (u32)mtx->_33; -} - -#include -void G3CS_LoadTexMtxEnv (GXDLInfo * info, const MtxFx44 * mtx) { - SDK_NULL_ASSERT(info); - SDK_NULL_ASSERT(mtx); - - switch ((u32)info->curr_cmd & 3) { - case 0: - - break; - case 1: - *info->curr_cmd++ = 0; - case 2: - *info->curr_cmd++ = 0; - case 3: - *info->curr_cmd++ = 0; - ++info->curr_param; - } - ; - - *(u32 *)info->curr_cmd = (G3OP_MTX_LOAD_4x4 << 8) | G3OP_MTX_MODE; - *info->curr_param = (u32)(GX_MTXMODE_TEXTURE << REG_G3_MTX_MODE_M_SHIFT); - *(info->curr_param + 1) = (u32)G3OP_MTX_LOAD_4x4; - - *(info->curr_param + 2) = (u32)(mtx->_00 << 4); - *(info->curr_param + 3) = (u32)(mtx->_01 << 4); - *(info->curr_param + 4) = (u32)(mtx->_02 << 4); - *(info->curr_param + 5) = (u32)(mtx->_03 << 4); - *(info->curr_param + 6) = (u32)(mtx->_10 << 4); - *(info->curr_param + 7) = (u32)(mtx->_11 << 4); - *(info->curr_param + 8) = (u32)(mtx->_12 << 4); - *(info->curr_param + 9) = (u32)(mtx->_13 << 4); - *(info->curr_param + 10) = (u32)(mtx->_20 << 4); - *(info->curr_param + 11) = (u32)(mtx->_21 << 4); - *(info->curr_param + 12) = (u32)(mtx->_22 << 4); - *(info->curr_param + 13) = (u32)(mtx->_23 << 4); - *(info->curr_param + 14) = (u32)(mtx->_30); - *(info->curr_param + 15) = (u32)(mtx->_31); - *(info->curr_param + 16) = (u32)(mtx->_32); - *(info->curr_param + 17) = (u32)(mtx->_33); -} - -#include - -void G3B_LoadTexMtxTexCoord (GXDLInfo * info, const MtxFx44 * mtx) { - G3BS_LoadTexMtxTexCoord(info, mtx); - G3B_UpdateGXDLInfo(info, G3OP_MTX_MODE_NPARAMS + G3OP_MTX_LOAD_4x4_NPARAMS + 1); -} - -void G3C_LoadTexMtxTexCoord (GXDLInfo * info, const MtxFx44 * mtx) { - G3CS_LoadTexMtxTexCoord(info, mtx); - info->curr_param += G3OP_MTX_MODE_NPARAMS + G3OP_MTX_LOAD_4x4_NPARAMS + 1; - info->curr_cmd += 2; -} - -void G3B_LoadTexMtxEnv (GXDLInfo * info, const MtxFx44 * mtx) { - G3BS_LoadTexMtxEnv(info, mtx); - G3B_UpdateGXDLInfo(info, G3OP_MTX_MODE_NPARAMS + G3OP_MTX_LOAD_4x4_NPARAMS + 1); -} - -void G3C_LoadTexMtxEnv (GXDLInfo * info, const MtxFx44 * mtx) { - G3CS_LoadTexMtxEnv(info, mtx); - info->curr_param += G3OP_MTX_MODE_NPARAMS + G3OP_MTX_LOAD_4x4_NPARAMS + 1; - info->curr_cmd += 2; -} diff --git a/subprojects/NitroSDK/libraries/gx/src/g3b.c b/subprojects/NitroSDK/libraries/gx/src/g3b.c deleted file mode 100644 index 97ca3201d7..0000000000 --- a/subprojects/NitroSDK/libraries/gx/src/g3b.c +++ /dev/null @@ -1,427 +0,0 @@ -#ifdef SDK_WIN32 -#include -#else -#include -#include -#include - -#include "include/gxasm.h" -#endif - -void G3BS_DirectN (GXDLInfo * info, int op, int nParams, const u32 * params) { - SDK_NULL_ASSERT(info); - SDK_NULL_ASSERT(params); - SDK_NULL_ASSERT(info->curr_param); - SDK_ALIGN4_ASSERT(info->curr_cmd); - SDK_ASSERT(op >= 0 && op < 0x100); - - *(u32 *)info->curr_cmd = (u32)op; - - while (--nParams >= 0) { - *(info->curr_param + nParams) = *(params + nParams); - } -} - -void G3BS_LoadMtx44 (GXDLInfo * info, const MtxFx44 * m) { - SDK_NULL_ASSERT(info); - SDK_NULL_ASSERT(m); - SDK_NULL_ASSERT(info->curr_param); - SDK_ALIGN4_ASSERT(info->curr_cmd); - - *(u32 *)info->curr_cmd = G3OP_MTX_LOAD_4x4; - -#ifndef SDK_WIN32 - MI_Copy64B(&m->_00, (void *)info->curr_param); -#else - *(info->curr_param + 0) = (u32)m->_00; - *(info->curr_param + 1) = (u32)m->_01; - *(info->curr_param + 2) = (u32)m->_02; - *(info->curr_param + 3) = (u32)m->_03; - - *(info->curr_param + 4) = (u32)m->_10; - *(info->curr_param + 5) = (u32)m->_11; - *(info->curr_param + 6) = (u32)m->_12; - *(info->curr_param + 7) = (u32)m->_13; - - *(info->curr_param + 8) = (u32)m->_20; - *(info->curr_param + 9) = (u32)m->_21; - *(info->curr_param + 10) = (u32)m->_22; - *(info->curr_param + 11) = (u32)m->_23; - - *(info->curr_param + 12) = (u32)m->_30; - *(info->curr_param + 13) = (u32)m->_31; - *(info->curr_param + 14) = (u32)m->_32; - *(info->curr_param + 15) = (u32)m->_33; -#endif -} - -void G3BS_LoadMtx43 (GXDLInfo * info, const MtxFx43 * m) { - SDK_NULL_ASSERT(info); - SDK_NULL_ASSERT(m); - SDK_NULL_ASSERT(info->curr_param); - SDK_ALIGN4_ASSERT(info->curr_cmd); - - *(u32 *)info->curr_cmd = G3OP_MTX_LOAD_4x3; -#ifndef SDK_WIN32 - MI_Copy48B(&m->_00, (void *)info->curr_param); -#else - *(info->curr_param + 0) = (u32)m->_00; - *(info->curr_param + 1) = (u32)m->_01; - *(info->curr_param + 2) = (u32)m->_02; - - *(info->curr_param + 3) = (u32)m->_10; - *(info->curr_param + 4) = (u32)m->_11; - *(info->curr_param + 5) = (u32)m->_12; - - *(info->curr_param + 6) = (u32)m->_20; - *(info->curr_param + 7) = (u32)m->_21; - *(info->curr_param + 8) = (u32)m->_22; - - *(info->curr_param + 9) = (u32)m->_30; - *(info->curr_param + 10) = (u32)m->_31; - *(info->curr_param + 11) = (u32)m->_32; -#endif -} - -void G3BS_MultMtx44 (GXDLInfo * info, const MtxFx44 * m) { - SDK_NULL_ASSERT(info); - SDK_NULL_ASSERT(m); - SDK_NULL_ASSERT(info->curr_param); - SDK_ALIGN4_ASSERT(info->curr_cmd); - - *(u32 *)info->curr_cmd = G3OP_MTX_MULT_4x4; -#ifndef SDK_WIN32 - MI_Copy64B(&m->_00, (void *)info->curr_param); -#else - *(info->curr_param + 0) = (u32)m->_00; - *(info->curr_param + 1) = (u32)m->_01; - *(info->curr_param + 2) = (u32)m->_02; - *(info->curr_param + 3) = (u32)m->_03; - - *(info->curr_param + 4) = (u32)m->_10; - *(info->curr_param + 5) = (u32)m->_11; - *(info->curr_param + 6) = (u32)m->_12; - *(info->curr_param + 7) = (u32)m->_13; - - *(info->curr_param + 8) = (u32)m->_20; - *(info->curr_param + 9) = (u32)m->_21; - *(info->curr_param + 10) = (u32)m->_22; - *(info->curr_param + 11) = (u32)m->_23; - - *(info->curr_param + 12) = (u32)m->_30; - *(info->curr_param + 13) = (u32)m->_31; - *(info->curr_param + 14) = (u32)m->_32; - *(info->curr_param + 15) = (u32)m->_33; -#endif -} - -void G3BS_MultMtx43 (GXDLInfo * info, const MtxFx43 * m) { - SDK_NULL_ASSERT(info); - SDK_NULL_ASSERT(m); - SDK_NULL_ASSERT(info->curr_param); - SDK_ALIGN4_ASSERT(info->curr_cmd); - - *(u32 *)info->curr_cmd = G3OP_MTX_MULT_4x3; -#ifndef SDK_WIN32 - MI_Copy48B(&m->_00, (void *)info->curr_param); -#else - *(info->curr_param + 0) = (u32)m->_00; - *(info->curr_param + 1) = (u32)m->_01; - *(info->curr_param + 2) = (u32)m->_02; - - *(info->curr_param + 3) = (u32)m->_10; - *(info->curr_param + 4) = (u32)m->_11; - *(info->curr_param + 5) = (u32)m->_12; - - *(info->curr_param + 6) = (u32)m->_20; - *(info->curr_param + 7) = (u32)m->_21; - *(info->curr_param + 8) = (u32)m->_22; - - *(info->curr_param + 9) = (u32)m->_30; - *(info->curr_param + 10) = (u32)m->_31; - *(info->curr_param + 11) = (u32)m->_32; -#endif -} - -void G3BS_MultMtx33 (GXDLInfo * info, const MtxFx33 * m) { - SDK_NULL_ASSERT(info); - SDK_NULL_ASSERT(m); - SDK_NULL_ASSERT(info->curr_param); - SDK_ALIGN4_ASSERT(info->curr_cmd); - - *(u32 *)info->curr_cmd = G3OP_MTX_MULT_3x3; -#ifndef SDK_WIN32 - MI_Copy36B(&m->_00, (void *)info->curr_param); -#else - *(info->curr_param + 0) = (u32)m->_00; - *(info->curr_param + 1) = (u32)m->_01; - *(info->curr_param + 2) = (u32)m->_02; - - *(info->curr_param + 3) = (u32)m->_10; - *(info->curr_param + 4) = (u32)m->_11; - *(info->curr_param + 5) = (u32)m->_12; - - *(info->curr_param + 6) = (u32)m->_20; - *(info->curr_param + 7) = (u32)m->_21; - *(info->curr_param + 8) = (u32)m->_22; -#endif -} - -void G3BS_MultTransMtx33 (GXDLInfo * info, const MtxFx33 * mtx, const VecFx32 * trans) { - SDK_NULL_ASSERT(info); - SDK_NULL_ASSERT(mtx); - SDK_NULL_ASSERT(trans); - SDK_NULL_ASSERT(info->curr_param); - SDK_ALIGN4_ASSERT(info->curr_cmd); - - *(u32 *)info->curr_cmd = G3OP_MTX_MULT_4x3; -#ifndef SDK_WIN32 - MI_Copy36B(&mtx->_00, (void *)info->curr_param); - MI_CpuCopy32(trans, (u32 *)info->curr_param + 9, sizeof(VecFx32)); -#else - *((u32 *)info->curr_param + 0) = (u32)mtx->_00; - *((u32 *)info->curr_param + 1) = (u32)mtx->_01; - *((u32 *)info->curr_param + 2) = (u32)mtx->_02; - - *((u32 *)info->curr_param + 3) = (u32)mtx->_10; - *((u32 *)info->curr_param + 4) = (u32)mtx->_11; - *((u32 *)info->curr_param + 5) = (u32)mtx->_12; - - *((u32 *)info->curr_param + 6) = (u32)mtx->_20; - *((u32 *)info->curr_param + 7) = (u32)mtx->_21; - *((u32 *)info->curr_param + 8) = (u32)mtx->_22; - - *((u32 *)info->curr_param + 9) = trans->x; - *((u32 *)info->curr_param + 10) = trans->y; - *((u32 *)info->curr_param + 11) = trans->z; -#endif -} - -void G3B_Direct0 (GXDLInfo * info, int op) { - G3BS_Direct0(info, op); - G3B_UpdateGXDLInfo(info, 0); -} - -void G3B_Direct1 (GXDLInfo * info, int op, u32 param0) { - G3BS_Direct1(info, op, param0); - G3B_UpdateGXDLInfo(info, 1); -} - -void G3B_Direct2 (GXDLInfo * info, int op, u32 param0, u32 param1) { - G3BS_Direct2(info, op, param0, param1); - G3B_UpdateGXDLInfo(info, 2); -} - -void G3B_Direct3 (GXDLInfo * info, int op, u32 param0, u32 param1, u32 param2) { - G3BS_Direct3(info, op, param0, param1, param2); - G3B_UpdateGXDLInfo(info, 3); -} - -void G3B_DirectN (GXDLInfo * info, int op, int nParams, const u32 * params) { - G3BS_DirectN(info, op, nParams, params); - G3B_UpdateGXDLInfo(info, nParams); -} - -void G3B_Nop (GXDLInfo * info) { - G3BS_Nop(info); - G3B_UpdateGXDLInfo(info, G3OP_NOP_NPARAMS); -} - -void G3B_MtxMode (GXDLInfo * info, GXMtxMode mode) { - G3BS_MtxMode(info, mode); - G3B_UpdateGXDLInfo(info, G3OP_MTX_MODE_NPARAMS); -} - -void G3B_PushMtx (GXDLInfo * info) { - G3BS_PushMtx(info); - G3B_UpdateGXDLInfo(info, G3OP_MTX_PUSH_NPARAMS); -} - -void G3B_PopMtx (GXDLInfo * info, int num) { - G3BS_PopMtx(info, num); - G3B_UpdateGXDLInfo(info, G3OP_MTX_POP_NPARAMS); -} - -void G3B_StoreMtx (GXDLInfo * info, int num) { - G3BS_StoreMtx(info, num); - G3B_UpdateGXDLInfo(info, G3OP_MTX_STORE_NPARAMS); -} - -void G3B_RestoreMtx (GXDLInfo * info, int num) { - G3BS_RestoreMtx(info, num); - G3B_UpdateGXDLInfo(info, G3OP_MTX_RESTORE_NPARAMS); -} - -void G3B_Identity (GXDLInfo * info) { - G3BS_Identity(info); - G3B_UpdateGXDLInfo(info, G3OP_MTX_IDENTITY_NPARAMS); -} - -void G3B_LoadMtx44 (GXDLInfo * info, const MtxFx44 * m) { - G3BS_LoadMtx44(info, m); - G3B_UpdateGXDLInfo(info, G3OP_MTX_LOAD_4x4_NPARAMS); -} - -void G3B_LoadMtx43 (GXDLInfo * info, const MtxFx43 * m) { - G3BS_LoadMtx43(info, m); - G3B_UpdateGXDLInfo(info, G3OP_MTX_LOAD_4x3_NPARAMS); -} - -void G3B_MultMtx44 (GXDLInfo * info, const MtxFx44 * m) { - G3BS_MultMtx44(info, m); - G3B_UpdateGXDLInfo(info, G3OP_MTX_MULT_4x4_NPARAMS); -} - -void G3B_MultMtx43 (GXDLInfo * info, const MtxFx43 * m) { - G3BS_MultMtx43(info, m); - G3B_UpdateGXDLInfo(info, G3OP_MTX_MULT_4x3_NPARAMS); -} - -void G3B_MultMtx33 (GXDLInfo * info, const MtxFx33 * m) { - G3BS_MultMtx33(info, m); - G3B_UpdateGXDLInfo(info, G3OP_MTX_MULT_3x3_NPARAMS); -} - -void G3B_MultTransMtx33 (GXDLInfo * info, const MtxFx33 * mtx, const VecFx32 * trans) { - G3BS_MultTransMtx33(info, mtx, trans); - G3B_UpdateGXDLInfo(info, G3OP_MTX_MULT_4x3_NPARAMS); -} - -void G3B_Scale (GXDLInfo * info, fx32 x, fx32 y, fx32 z) { - G3BS_Scale(info, x, y, z); - G3B_UpdateGXDLInfo(info, G3OP_MTX_SCALE_NPARAMS); -} - -void G3B_Translate (GXDLInfo * info, fx32 x, fx32 y, fx32 z) { - G3BS_Translate(info, x, y, z); - G3B_UpdateGXDLInfo(info, G3OP_MTX_TRANS_NPARAMS); -} - -void G3B_Color (GXDLInfo * info, GXRgb rgb) { - G3BS_Color(info, rgb); - G3B_UpdateGXDLInfo(info, G3OP_COLOR_NPARAMS); -} - -void G3B_Normal (GXDLInfo * info, fx16 x, fx16 y, fx16 z) { - G3BS_Normal(info, x, y, z); - G3B_UpdateGXDLInfo(info, G3OP_NORMAL_NPARAMS); -} - -void G3B_TexCoord (GXDLInfo * info, fx32 s, fx32 t) { - G3BS_TexCoord(info, s, t); - G3B_UpdateGXDLInfo(info, G3OP_TEXCOORD_NPARAMS); -} - -void G3B_Vtx (GXDLInfo * info, fx16 x, fx16 y, fx16 z) { - G3BS_Vtx(info, x, y, z); - G3B_UpdateGXDLInfo(info, G3OP_VTX_16_NPARAMS); -} - -void G3B_Vtx10 (GXDLInfo * info, fx16 x, fx16 y, fx16 z) { - G3BS_Vtx10(info, x, y, z); - G3B_UpdateGXDLInfo(info, G3OP_VTX_10_NPARAMS); -} - -void G3B_VtxXY (GXDLInfo * info, fx16 x, fx16 y) { - G3BS_VtxXY(info, x, y); - G3B_UpdateGXDLInfo(info, G3OP_VTX_XY_NPARAMS); -} - -void G3B_VtxXZ (GXDLInfo * info, fx16 x, fx16 z) { - G3BS_VtxXZ(info, x, z); - G3B_UpdateGXDLInfo(info, G3OP_VTX_XZ_NPARAMS); -} - -void G3B_VtxYZ (GXDLInfo * info, fx16 y, fx16 z) { - G3BS_VtxYZ(info, y, z); - G3B_UpdateGXDLInfo(info, G3OP_VTX_YZ_NPARAMS); -} - -void G3B_VtxDiff (GXDLInfo * info, fx16 x, fx16 y, fx16 z) { - G3BS_VtxDiff(info, x, y, z); - G3B_UpdateGXDLInfo(info, G3OP_VTX_DIFF_NPARAMS); -} - -void G3B_PolygonAttr (GXDLInfo * info, int light, GXPolygonMode polyMode, GXCull cullMode, int polygonID, int alpha, int misc) { - G3BS_PolygonAttr(info, light, polyMode, cullMode, polygonID, alpha, misc); - G3B_UpdateGXDLInfo(info, G3OP_POLYGON_ATTR_NPARAMS); -} - -void G3B_TexImageParam (GXDLInfo * info, GXTexFmt texFmt, GXTexGen texGen, GXTexSizeS s, GXTexSizeT t, GXTexRepeat repeat, GXTexFlip flip, GXTexPlttColor0 pltt0, u32 addr) { - G3BS_TexImageParam(info, texFmt, texGen, s, t, repeat, flip, pltt0, addr); - - G3B_UpdateGXDLInfo(info, G3OP_TEXIMAGE_PARAM_NPARAMS); -} - -void G3B_TexPlttBase (GXDLInfo * info, u32 addr, GXTexFmt texfmt) { - G3BS_TexPlttBase(info, addr, texfmt); - - G3B_UpdateGXDLInfo(info, G3OP_TEXPLTT_BASE_NPARAMS); -} - -void G3B_MaterialColorDiffAmb (GXDLInfo * info, GXRgb diffuse, GXRgb ambient, BOOL IsSetVtxColor) { - G3BS_MaterialColorDiffAmb(info, diffuse, ambient, IsSetVtxColor); - - G3B_UpdateGXDLInfo(info, G3OP_DIF_AMB_NPARAMS); -} - -void G3B_MaterialColorSpecEmi (GXDLInfo * info, GXRgb specular, GXRgb emission, BOOL IsShininess) { - G3BS_MaterialColorSpecEmi(info, specular, emission, IsShininess); - - G3B_UpdateGXDLInfo(info, G3OP_SPE_EMI_NPARAMS); -} - -void G3B_LightVector (GXDLInfo * info, GXLightId lightID, fx16 x, fx16 y, fx16 z) { - G3BS_LightVector(info, lightID, x, y, z); - - G3B_UpdateGXDLInfo(info, G3OP_LIGHT_VECTOR_NPARAMS); -} - -void G3B_LightColor (GXDLInfo * info, GXLightId lightID, GXRgb rgb) { - G3BS_LightColor(info, lightID, rgb); - - G3B_UpdateGXDLInfo(info, G3OP_LIGHT_COLOR_NPARAMS); -} - -void G3B_Shininess (GXDLInfo * info, const u32 * table) { - G3BS_Shininess(info, table); - G3B_UpdateGXDLInfo(info, G3OP_SHININESS_NPARAMS); -} - -void G3B_Begin (GXDLInfo * info, GXBegin primitive) { - G3BS_Begin(info, primitive); - G3B_UpdateGXDLInfo(info, G3OP_BEGIN_NPARAMS); -} - -void G3B_End (GXDLInfo * info) { - G3BS_End(info); - G3B_UpdateGXDLInfo(info, G3OP_END_NPARAMS); -} - -void G3B_SwapBuffers (GXDLInfo * info, GXSortMode am, GXBufferMode zw) { - G3BS_SwapBuffers(info, am, zw); - G3B_UpdateGXDLInfo(info, G3OP_SWAP_BUFFERS_NPARAMS); -} - -void G3B_ViewPort (GXDLInfo * info, int x1, int y1, int x2, int y2) { - G3BS_ViewPort(info, x1, y1, x2, y2); - G3B_UpdateGXDLInfo(info, G3OP_VIEWPORT_NPARAMS); -} - -void G3B_BoxTest (GXDLInfo * info, const GXBoxTestParam * box) { - G3BS_BoxTest(info, box); - - G3B_UpdateGXDLInfo(info, G3OP_BOX_TEST_NPARAMS); -} - -void G3B_PositionTest (GXDLInfo * info, fx16 x, fx16 y, fx16 z) { - G3BS_PositionTest(info, x, y, z); - - G3B_UpdateGXDLInfo(info, G3OP_POS_TEST_NPARAMS); -} - -void G3B_VectorTest (GXDLInfo * info, fx16 x, fx16 y, fx16 z) { - G3BS_VectorTest(info, x, y, z); - - G3B_UpdateGXDLInfo(info, G3OP_VEC_TEST_NPARAMS); -} diff --git a/subprojects/NitroSDK/libraries/gx/src/g3imm.c b/subprojects/NitroSDK/libraries/gx/src/g3imm.c deleted file mode 100644 index 3fa00bb455..0000000000 --- a/subprojects/NitroSDK/libraries/gx/src/g3imm.c +++ /dev/null @@ -1,57 +0,0 @@ -#include -#include - -#include "include/gxasm.h" - -void G3_LoadMtx44 (const MtxFx44 * m) { - SDK_NULL_ASSERT(m); - - reg_G3X_GXFIFO = G3OP_MTX_LOAD_4x4; - GX_SendFifo64B(&m->_00, (void *)®_G3X_GXFIFO); -} - -void G3_LoadMtx43 (const MtxFx43 * m) { - SDK_NULL_ASSERT(m); - - reg_G3X_GXFIFO = G3OP_MTX_LOAD_4x3; - GX_SendFifo48B(&m->_00, (void *)®_G3X_GXFIFO); -} - -void G3_MultMtx44 (const MtxFx44 * m) { - SDK_NULL_ASSERT(m); - - reg_G3X_GXFIFO = G3OP_MTX_MULT_4x4; - GX_SendFifo64B(&m->_00, (void *)®_G3X_GXFIFO); -} - -void G3_MultMtx43 (const MtxFx43 * m) { - SDK_NULL_ASSERT(m); - - reg_G3X_GXFIFO = G3OP_MTX_MULT_4x3; - GX_SendFifo48B(&m->_00, (void *)®_G3X_GXFIFO); -} - -void G3_MultMtx33 (const MtxFx33 * m) { - SDK_NULL_ASSERT(m); - - reg_G3X_GXFIFO = G3OP_MTX_MULT_3x3; - GX_SendFifo36B(&m->_00, (void *)®_G3X_GXFIFO); -} - -void G3_Shininess (const u32 * table) { - SDK_NULL_ASSERT(table); - - reg_G3X_GXFIFO = G3OP_SHININESS; - GX_SendFifo128B(&table[0], (void *)®_G3X_GXFIFO); -} - -void G3_MultTransMtx33 (const MtxFx33 * mtx, const VecFx32 * trans) { - SDK_NULL_ASSERT(mtx); - SDK_NULL_ASSERT(trans); - - reg_G3X_GXFIFO = G3OP_MTX_MULT_4x3; - GX_SendFifo36B(&mtx->_00, (void *)®_G3X_GXFIFO); - reg_G3X_GXFIFO = (u32)trans->x; - reg_G3X_GXFIFO = (u32)trans->y; - reg_G3X_GXFIFO = (u32)trans->z; -} diff --git a/subprojects/NitroSDK/libraries/gx/src/g3x.c b/subprojects/NitroSDK/libraries/gx/src/g3x.c deleted file mode 100644 index 8f6497b5e5..0000000000 --- a/subprojects/NitroSDK/libraries/gx/src/g3x.c +++ /dev/null @@ -1,392 +0,0 @@ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "include/gxasm.h" - -static asm void GXi_NopClearFifo128_(register void * pDest); - -void G3X_Init () { -#ifdef SDK_DEBUG - { - GXPower power = GX_GetPower(); - SDK_WARNING(power & GX_POWER_RE, "GX_POWER_RE is off now, registers for it not initialized."); - SDK_WARNING(power & GX_POWER_GE, "GX_POWER_GE is off now, registers for it not initialized."); - } -#endif - - G3X_ClearFifo(); - G3_End(); - - while (G3X_IsGeometryBusy()) { - } - - reg_G3X_DISP3DCNT = 0; - reg_G3X_GXSTAT = 0; - - reg_G2_BG0OFS = 0; - - G3X_ResetListRamOverflow(); - G3X_ResetLineBufferUnderflow(); - G3X_SetShading(GX_SHADING_TOON); - G3X_AntiAlias(TRUE); - G3X_AlphaTest(FALSE, 0); - - G3X_ResetMtxStackOverflow(); - - G3X_SetFifoIntrCond(GX_FIFOINTR_COND_EMPTY); - - G3X_InitMtxStack(); - - reg_G3X_CLEAR_COLOR = 0; - reg_G3X_CLEAR_DEPTH = 0x7fff; - - reg_G3X_CLRIMAGE_OFFSET = 0; - - reg_G3X_FOG_COLOR = 0; - - reg_G3X_FOG_OFFSET = 0; - - G2_SetBG0Priority(0); - - G3X_InitTable(); - - G3_PolygonAttr(GX_LIGHTMASK_NONE, GX_POLYGONMODE_MODULATE, GX_CULL_BACK, 0, 31, GX_POLYGON_ATTR_MISC_NONE); - - G3_TexImageParam( - GX_TEXFMT_NONE, - - GX_TEXGEN_NONE, - GX_TEXSIZE_S8, GX_TEXSIZE_T8, GX_TEXREPEAT_NONE, GX_TEXFLIP_NONE, GX_TEXPLTTCOLOR0_USE, 0 - ); - - G3_Direct1(G3OP_TEXPLTT_BASE, 0); -} - -void G3X_Reset () { -#ifdef SDK_DEBUG - { - GXPower power = GX_GetPower(); - SDK_WARNING( - power & GX_POWER_RE, - "GX_POWER_RE is off now, registers for it not initialized." - ); - SDK_WARNING( - power & GX_POWER_GE, - "GX_POWER_GE is off now, registers for it not initialized." - ); - } -#endif - - while (G3X_IsGeometryBusy()) { - } - - G3X_ResetMtxStackOverflow(); - G3X_ResetListRamOverflow(); - G3X_ResetLineBufferUnderflow(); - - G3X_ResetMtxStack(); - - G3_PolygonAttr( - GX_LIGHTMASK_NONE, GX_POLYGONMODE_MODULATE, GX_CULL_BACK, 0, 31, - GX_POLYGON_ATTR_MISC_NONE - ); - - G3_TexImageParam( - GX_TEXFMT_NONE, - GX_TEXGEN_NONE, - GX_TEXSIZE_S8, GX_TEXSIZE_T8, GX_TEXREPEAT_NONE, GX_TEXFLIP_NONE, - GX_TEXPLTTCOLOR0_USE, 0 - ); - - G3_Direct1(G3OP_TEXPLTT_BASE, 0); -} - -void G3X_ClearFifo (void) { - GXi_NopClearFifo128_((void *)®_G3X_GXFIFO); - - while (G3X_IsGeometryBusy()) { - } -} - -void G3X_InitMtxStack () { - s32 levelPV; - s32 levelPJ; -#ifdef SDK_DEBUG - { - GXPower power = GX_GetPower(); - SDK_WARNING( - power & GX_POWER_GE, - "GX_POWER_GE is off now, registers for it not initialized." - ); - } -#endif - G3X_ResetMtxStackOverflow(); - - while (G3X_GetMtxStackLevelPV(&levelPV)) { - ; - } - while (G3X_GetMtxStackLevelPJ(&levelPJ)) { - ; - } - - G3_MtxMode(GX_MTXMODE_TEXTURE); - G3_Identity(); - - G3_MtxMode(GX_MTXMODE_PROJECTION); - if (levelPJ != 0) { - G3_PopMtx(levelPJ); - } - G3_Identity(); - - G3_MtxMode(GX_MTXMODE_POSITION_VECTOR); - G3_PopMtx(levelPV); - G3_Identity(); -} - -void G3X_ResetMtxStack () { - s32 levelPV; - s32 levelPJ; -#ifdef SDK_DEBUG - { - GXPower power = GX_GetPower(); - SDK_WARNING(power & GX_POWER_GE, "GX_POWER_GE is off now, registers for it not changes."); - } -#endif - G3X_ResetMtxStackOverflow(); - - while (G3X_GetMtxStackLevelPV(&levelPV)) { - ; - } - while (G3X_GetMtxStackLevelPJ(&levelPJ)) { - ; - } - - G3_MtxMode(GX_MTXMODE_TEXTURE); - G3_Identity(); - - G3_MtxMode(GX_MTXMODE_PROJECTION); - if (levelPJ != 0) { - G3_PopMtx(levelPJ); - } - - G3_MtxMode(GX_MTXMODE_POSITION_VECTOR); - G3_PopMtx(levelPV); - G3_Identity(); -} - -void G3X_SetFog (BOOL enable, GXFogBlend fogMode, GXFogSlope fogSlope, int fogOffset) { - if (enable) { - SDK_MINMAX_ASSERT(fogOffset, 0, 0x7fff); - SDK_MINMAX_ASSERT(fogSlope, GX_FOGSLOPE_0x8000, GX_FOGSLOPE_0x0020); - SDK_ASSERT(GX_FOGBLEND_COLOR_ALPHA == fogMode || GX_FOGBLEND_ALPHA == fogMode); - - reg_G3X_FOG_OFFSET = (u16)fogOffset; - - reg_G3X_DISP3DCNT = (u16)((reg_G3X_DISP3DCNT & - ~(REG_G3X_DISP3DCNT_FOG_SHIFT_MASK - | REG_G3X_DISP3DCNT_FMOD_MASK - | REG_G3X_DISP3DCNT_RO_MASK - | REG_G3X_DISP3DCNT_GO_MASK)) - | ((fogSlope << REG_G3X_DISP3DCNT_FOG_SHIFT_SHIFT) - | (fogMode << REG_G3X_DISP3DCNT_FMOD_SHIFT) - | (REG_G3X_DISP3DCNT_FME_MASK))); - } else { - reg_G3X_DISP3DCNT &= (u16) ~(REG_G3X_DISP3DCNT_FME_MASK - | REG_G3X_DISP3DCNT_RO_MASK | REG_G3X_DISP3DCNT_GO_MASK); - } -} - -int G3X_GetClipMtx (MtxFx44 * m) { - SDK_NULL_ASSERT(m); - - if (G3X_IsGeometryBusy()) { - return -1; - } else { - MI_Copy64B((void *)REG_CLIPMTX_RESULT_0_ADDR, &m->_00); - return 0; - } -} - -int G3X_GetVectorMtx (MtxFx33 * m) { - SDK_NULL_ASSERT(m); - - if (G3X_IsGeometryBusy()) { - return -1; - } else { - MI_Copy36B((void *)(REG_VECMTX_RESULT_0_ADDR), &m->_00); - return 0; - } -} - -void G3X_SetEdgeColorTable (const GXRgb * rgb_8) { - SDK_NULL_ASSERT(rgb_8); - MI_CpuCopy16(rgb_8, (void *)REG_EDGE_COLOR_0_L_ADDR, 16); -} - -void G3X_SetFogTable (const u32 * fogTable) { - SDK_NULL_ASSERT(fogTable); - MI_Copy32B(&fogTable[0], (void *)REG_FOG_TABLE_0_ADDR); -} - -void G3X_SetToonTable (const GXRgb * rgb_32) { - SDK_NULL_ASSERT(rgb_32); - MI_CpuCopy16(rgb_32, (void *)REG_TOON_TABLE_0_L_ADDR, 64); -} - -void G3X_SetClearColor (GXRgb rgb, int alpha, int depth, int polygonID, BOOL fog) { - u32 val; - GX_POLYGONID_ASSERT(polygonID); - GX_ALPHA_ASSERT(alpha); - GXRGB_ASSERT(rgb); - GX_DEPTH_ASSERT(depth); - - val = (u32)(rgb | (alpha << REG_G3X_CLEAR_COLOR_ALPHA_SHIFT) | - (polygonID << REG_G3X_CLEAR_COLOR_POLYGONID_SHIFT)); - if (fog) { - val |= REG_G3X_CLEAR_COLOR_F_MASK; - } - - reg_G3X_CLEAR_COLOR = val; - reg_G3X_CLEAR_DEPTH = (u16)depth; -} - -void G3X_InitTable () { - int i; - - if (GXi_DmaId != GX_DMA_NOT_USE) { - MI_DmaFill32Async(GXi_DmaId, (void *)REG_EDGE_COLOR_0_L_ADDR, 0, 16, NULL, NULL); - MI_DmaFill32(GXi_DmaId, (void *)REG_FOG_TABLE_0_ADDR, 0, 96); - } else { - MI_CpuFill32((void *)REG_EDGE_COLOR_0_L_ADDR, 0, 16); - MI_CpuFill32((void *)REG_FOG_TABLE_0_ADDR, 0, 96); - } - - for (i = 0; i < 32; ++i) { - reg_G3_SHININESS = 0; - } -} - -int G3X_GetMtxStackLevelPV (s32 * level) { - SDK_NULL_ASSERT(level); - if (reg_G3X_GXSTAT & REG_G3X_GXSTAT_SB_MASK) { - return -1; - } else { - *level = (s32)((reg_G3X_GXSTAT & REG_G3X_GXSTAT_PV_MASK) >> REG_G3X_GXSTAT_PV_SHIFT); - return 0; - } -} - -int G3X_GetMtxStackLevelPJ (s32 * level) { - SDK_NULL_ASSERT(level); - if (reg_G3X_GXSTAT & REG_G3X_GXSTAT_SB_MASK) { - return -1; - } else { - *level = (s32)((reg_G3X_GXSTAT & REG_G3X_GXSTAT_PJ_MASK) >> REG_G3X_GXSTAT_PJ_SHIFT); - return 0; - } -} - -void G3X_SetDisp1DotDepth (fx32 w) { - SDK_MINMAX_ASSERT(w, 0, FX32_ONE * 0x1000 - 1); - reg_G3X_DISP_1DOT_DEPTH = (u16)((w >> 9) & 0x7fff); -} - -int G3X_GetBoxTestResult (s32 * in) { - SDK_NULL_ASSERT(in); - if (reg_G3X_GXSTAT & REG_G3X_GXSTAT_TB_MASK) { - return -1; - } else { - *in = (s32)(reg_G3X_GXSTAT & REG_G3X_GXSTAT_TR_MASK); - return 0; - } -} - -int G3X_GetPositionTestResult (VecFx32 * vec, fx32 * w) { - SDK_NULL_ASSERT(vec); - SDK_NULL_ASSERT(w); - - if (reg_G3X_GXSTAT & REG_G3X_GXSTAT_TB_MASK) { - return -1; - } else { - vec->x = (fx32)reg_G3X_POS_RESULT_X; - vec->y = (fx32)reg_G3X_POS_RESULT_Y; - vec->z = (fx32)reg_G3X_POS_RESULT_Z; - *w = (fx32)reg_G3X_POS_RESULT_W; - return 0; - } -} - -int G3X_GetVectorTestResult (fx16 * vec) { - SDK_NULL_ASSERT(vec); - if (reg_G3X_GXSTAT & REG_G3X_GXSTAT_TB_MASK) { - return -1; - } else { - *(vec + 0) = (fx16)reg_G3X_VEC_RESULT_X; - *(vec + 1) = (fx16)reg_G3X_VEC_RESULT_Y; - *(vec + 2) = (fx16)reg_G3X_VEC_RESULT_Z; - return 0; - } -} - -void G3X_SetHOffset (int hOffset) { - SDK_WARNING( - (reg_GX_DISPCNT & REG_GX_DISPCNT_BG02D3D_MASK) != 0, - "BG0 is in 2D mode now. call \'G2_SetBG0Offset\'\n" - ); - SDK_ASSERT(hOffset >= -256 && hOffset <= 255); - - reg_G2_BG0OFS = (u32)hOffset; -} - -#include - -static asm void GXi_NopClearFifo128_ (register void * pDest) { - mov r1, #0 - mov r2, #0 - mov r3, #0 - mov r12, #0 - stmia r0, {r1 - r3, r12} - stmia r0, {r1 - r3, r12} - stmia r0, {r1 - r3, r12} - stmia r0, {r1 - r3, r12} - stmia r0, {r1 - r3, r12} - stmia r0, {r1 - r3, r12} - stmia r0, {r1 - r3, r12} - stmia r0, {r1 - r3, r12} - stmia r0, {r1 - r3, r12} - stmia r0, {r1 - r3, r12} - stmia r0, {r1 - r3, r12} - stmia r0, {r1 - r3, r12} - stmia r0, {r1 - r3, r12} - stmia r0, {r1 - r3, r12} - stmia r0, {r1 - r3, r12} - stmia r0, {r1 - r3, r12} - stmia r0, {r1 - r3, r12} - stmia r0, {r1 - r3, r12} - stmia r0, {r1 - r3, r12} - stmia r0, {r1 - r3, r12} - stmia r0, {r1 - r3, r12} - stmia r0, {r1 - r3, r12} - stmia r0, {r1 - r3, r12} - stmia r0, {r1 - r3, r12} - stmia r0, {r1 - r3, r12} - stmia r0, {r1 - r3, r12} - stmia r0, {r1 - r3, r12} - stmia r0, {r1 - r3, r12} - stmia r0, {r1 - r3, r12} - stmia r0, {r1 - r3, r12} - stmia r0, {r1 - r3, r12} - stmia r0, {r1 - r3, r12} - bx lr -} - -#include diff --git a/subprojects/NitroSDK/libraries/gx/src/gx.c b/subprojects/NitroSDK/libraries/gx/src/gx.c deleted file mode 100644 index 7c1258f51f..0000000000 --- a/subprojects/NitroSDK/libraries/gx/src/gx.c +++ /dev/null @@ -1,323 +0,0 @@ - -#include -#include - -#include "include/gxstate.h" - -#ifdef SDK_ARM9 -#include -#endif - -#ifdef SDK_TEG_WA_VBLANK -#include -static void GXi_TEGWorkAround(void *); -#endif - -u32 GXi_DmaId = GX_DEFAULT_DMAID; - -#ifdef SDK_ARM9 -vu16 GXi_VRamLockId = 0; -#endif - -void GX_Init () { - const u16 bg_mtx_elem_one = 1 << 8; - - reg_GX_POWCNT |= (1 << REG_GX_POWCNT_DSEL_SHIFT); - GX_SetPower(GX_POWER_ALL); - GXi_PowerLCD(TRUE); - GX_InitGXState(); - -#ifdef SDK_ARM9 - { - s32 lockResult; - - while (GXi_VRamLockId == 0) { - lockResult = OS_GetLockID(); - if (lockResult == OS_LOCK_ID_ERROR) { - OS_Panic("Could not get lock ID for VRAM exclusive.\n"); - } - GXi_VRamLockId = (u16)lockResult; - } - } -#endif - -#if 1 - - reg_GX_DISPSTAT = 0; - reg_GX_DISPCNT = 0; - if (GXi_DmaId != GX_DMA_NOT_USE) { - MI_DmaFill32( - GXi_DmaId, (void *)REG_BG0CNT_ADDR, 0, - REG_DISP_MMEM_FIFO_ADDR - REG_BG0CNT_ADDR - ); - reg_GX_MASTER_BRIGHT = 0; - - MI_DmaFill32( - GXi_DmaId, (void *)REG_DB_DISPCNT_ADDR, 0, - REG_DB_MASTER_BRIGHT_ADDR - REG_DB_DISPCNT_ADDR + 4 - ); - } else { - MI_CpuFill32((void *)REG_BG0CNT_ADDR, 0, REG_DISP_MMEM_FIFO_ADDR - REG_BG0CNT_ADDR); - reg_GX_MASTER_BRIGHT = 0; - - MI_CpuFill32( - (void *)REG_DB_DISPCNT_ADDR, 0, - REG_DB_MASTER_BRIGHT_ADDR - REG_DB_DISPCNT_ADDR + 4 - ); - } - - reg_G2_BG2PA = bg_mtx_elem_one; - reg_G2_BG2PD = bg_mtx_elem_one; - reg_G2_BG3PA = bg_mtx_elem_one; - reg_G2_BG3PD = bg_mtx_elem_one; - reg_G2S_DB_BG2PA = bg_mtx_elem_one; - reg_G2S_DB_BG2PD = bg_mtx_elem_one; - reg_G2S_DB_BG3PA = bg_mtx_elem_one; - reg_G2S_DB_BG3PD = bg_mtx_elem_one; - -#else - - reg_GX_DISPSTAT = 0; - reg_GX_DISPCNT = 0; - - reg_GX_DISPCAPCNT = 0; - - reg_G2_BG0CNT = 0; - reg_G2_BG1CNT = 0; - reg_G2_BG2CNT = 0; - reg_G2_BG3CNT = 0; - - reg_G2_BG0OFS = 0; - reg_G2_BG1OFS = 0; - reg_G2_BG2OFS = 0; - reg_G2_BG3OFS = 0; - - reg_G2_BG2X = 0; - reg_G2_BG2Y = 0; - reg_G2_BG3X = 0; - reg_G2_BG3Y = 0; - reg_G2_BG2PA = bg_mtx_elem_one; - reg_G2_BG2PB = 0; - reg_G2_BG2PC = 0; - reg_G2_BG2PD = bg_mtx_elem_one; - reg_G2_BG3PA = bg_mtx_elem_one; - reg_G2_BG3PB = 0; - reg_G2_BG3PC = 0; - reg_G2_BG3PD = bg_mtx_elem_one; - - reg_G2_WININ = 0; - reg_G2_WINOUT = 0; - reg_G2_WIN0H = 0; - reg_G2_WIN1H = 0; - reg_G2_WIN0V = 0; - reg_G2_WIN1V = 0; - - reg_G2_MOSAIC = 0; - - reg_G2_BLDCNT = 0; - reg_G2_BLDALPHA = 0; - reg_G2_BLDY = 0; - - reg_GX_MASTER_BRIGHT = 0; - - reg_GXS_DB_DISPCNT = 0; - - reg_G2S_DB_BG0CNT = 0; - reg_G2S_DB_BG1CNT = 0; - reg_G2S_DB_BG2CNT = 0; - reg_G2S_DB_BG3CNT = 0; - - reg_G2S_DB_BG0OFS = 0; - reg_G2S_DB_BG1OFS = 0; - reg_G2S_DB_BG2OFS = 0; - reg_G2S_DB_BG3OFS = 0; - - reg_G2S_DB_BG2X = 0; - reg_G2S_DB_BG2Y = 0; - reg_G2S_DB_BG3X = 0; - reg_G2S_DB_BG3Y = 0; - reg_G2S_DB_BG2PA = bg_mtx_elem_one; - reg_G2S_DB_BG2PB = 0; - reg_G2S_DB_BG2PC = 0; - reg_G2S_DB_BG2PD = bg_mtx_elem_one; - reg_G2S_DB_BG3PA = bg_mtx_elem_one; - reg_G2S_DB_BG3PB = 0; - reg_G2S_DB_BG3PC = 0; - reg_G2S_DB_BG3PD = bg_mtx_elem_one; - - reg_G2S_DB_WININ = 0; - reg_G2S_DB_WINOUT = 0; - reg_G2S_DB_WIN0H = 0; - reg_G2S_DB_WIN1H = 0; - reg_G2S_DB_WIN0V = 0; - reg_G2S_DB_WIN1V = 0; - - reg_G2S_DB_MOSAIC = 0; - - reg_G2S_DB_BLDCNT = 0; - reg_G2S_DB_BLDALPHA = 0; - reg_G2S_DB_BLDY = 0; - - reg_GXS_DB_MASTER_BRIGHT = 0; -#endif - -#ifdef SDK_TEG_WA_VBLANK - - if (!OS_IsRunOnEmulator()) { - static OSVAlarm va; - static BOOL initialized = FALSE; - if (!initialized) { - OS_InitVAlarm(); - OS_CreateVAlarm(&va); - OS_SetPeriodicVAlarm(&va, 190, (203 - 190), GXi_TEGWorkAround, NULL); - initialized = TRUE; - } - } -#endif -} - -#ifdef SDK_TEG_WA_VBLANK - -static void GXi_TEGWorkAround (void *) { - while (GX_GetVCount() < 203) { - } -} -#endif - -void GX_SetVCountEqVal (s32 val) { - SDK_MINMAX_ASSERT(val, 0, 262); - reg_GX_DISPSTAT = (u16)((reg_GX_DISPSTAT & (REG_GX_DISPSTAT_VBLK_MASK | - REG_GX_DISPSTAT_HBLK_MASK | - REG_GX_DISPSTAT_LYC_MASK | - REG_GX_DISPSTAT_VBI_MASK | - REG_GX_DISPSTAT_HBI_MASK | - REG_GX_DISPSTAT_VQI_MASK)) | - ((val & 0xff) << 8) | ((val & 0x100) >> 1)); -} - -s32 GX_HBlankIntr (BOOL enable) { - s32 rval = (reg_GX_DISPSTAT & REG_GX_DISPSTAT_HBI_MASK); - if (enable) { - reg_GX_DISPSTAT |= REG_GX_DISPSTAT_HBI_MASK; - } else { - reg_GX_DISPSTAT &= ~REG_GX_DISPSTAT_HBI_MASK; - } - return rval; -} - -s32 GX_VBlankIntr (BOOL enable) { - s32 rval = (reg_GX_DISPSTAT & REG_GX_DISPSTAT_VBI_MASK); - if (enable) { - reg_GX_DISPSTAT |= REG_GX_DISPSTAT_VBI_MASK; - } else { - reg_GX_DISPSTAT &= ~REG_GX_DISPSTAT_VBI_MASK; - } - return rval; -} - -static u16 sDispMode = 0; -static u16 sIsDispOn = TRUE; - -BOOL GX_IsDispOn (void) { - return sIsDispOn; -} - -void GX_DispOff (void) { - u32 tmp = reg_GX_DISPCNT; - - sIsDispOn = FALSE; - sDispMode = (u16)((tmp & REG_GX_DISPCNT_MODE_MASK) >> REG_GX_DISPCNT_MODE_SHIFT); - - reg_GX_DISPCNT = tmp & ~REG_GX_DISPCNT_MODE_MASK; -} - -void GX_DispOn (void) { - sIsDispOn = TRUE; - if (sDispMode != (u16)GX_DISPMODE_OFF) { - reg_GX_DISPCNT = - ((reg_GX_DISPCNT & ~REG_GX_DISPCNT_MODE_MASK) | - (sDispMode << REG_GX_DISPCNT_MODE_SHIFT)); - } else { - reg_GX_DISPCNT = ((reg_GX_DISPCNT | (GX_DISPMODE_GRAPHICS << REG_GX_DISPCNT_MODE_SHIFT))); - } -} - -void GX_SetGraphicsMode (GXDispMode dispMode, GXBGMode bgMode, GXBG0As bg0_2d3d) { - u32 cnt = reg_GX_DISPCNT; - - GX_DISPMODE_ASSERT(dispMode); - SDK_WARNING( - dispMode != GX_DISPMODE_OFF, - "A parameter GX_DISPMODE_OFF is obsolete. Use GX_DispOff() instead." - ); - - sDispMode = (u16)dispMode; - if (!sIsDispOn) { - dispMode = GX_DISPMODE_OFF; - } - - GX_BGMODE_ASSERT(bgMode); - GX_BG0_AS_ASSERT(bg0_2d3d); - cnt &= ~(REG_GX_DISPCNT_BGMODE_MASK | - REG_GX_DISPCNT_BG02D3D_MASK | REG_GX_DISPCNT_MODE_MASK | REG_GX_DISPCNT_VRAM_MASK); - - reg_GX_DISPCNT = (u32)(cnt | - (dispMode << REG_GX_DISPCNT_MODE_SHIFT) | - (bgMode << REG_GX_DISPCNT_BGMODE_SHIFT) | (bg0_2d3d << - REG_GX_DISPCNT_BG02D3D_SHIFT)); - - if (sDispMode == GX_DISPMODE_OFF) { - sIsDispOn = FALSE; - } -} - -void GXS_SetGraphicsMode (GXBGMode bgMode) { - reg_GXS_DB_DISPCNT = ((reg_GXS_DB_DISPCNT & ~REG_GXS_DB_DISPCNT_BGMODE_MASK) | - (bgMode << REG_GXS_DB_DISPCNT_BGMODE_SHIFT)); -} - -void GXx_SetMasterBrightness_ (vu16 * reg, int brightness) { - SDK_MINMAX_ASSERT(brightness, -16, 16); - - if (brightness == 0) { - *reg = 0; - } else if (brightness > 0) { - *reg = (u16)((1 << REG_GX_MASTER_BRIGHT_E_MOD_SHIFT) | brightness); - } else { - *reg = (u16)((2 << REG_GX_MASTER_BRIGHT_E_MOD_SHIFT) | (-brightness)); - } -} - -int GXx_GetMasterBrightness_ (vu16 * reg) { - u16 mode = (u16)(*reg & REG_GX_MASTER_BRIGHT_E_MOD_MASK); - - if (mode == 0) { - return 0; - } else if (mode == (1 << REG_GX_MASTER_BRIGHT_E_MOD_SHIFT)) { - return *reg & REG_GX_MASTER_BRIGHT_E_VALUE_MASK; - } else if (mode == (2 << REG_GX_MASTER_BRIGHT_E_MOD_SHIFT)) { - return -(*reg & REG_GX_MASTER_BRIGHT_E_VALUE_MASK); - } else { - OS_TWarning("Illegal MasterBright mode!\n"); - return 0; - } -} - -u32 GX_SetDefaultDMA (u32 dma_no) { - u32 previous = GXi_DmaId; - OSIntrMode enabled; - - SDK_ASSERT((dma_no <= MI_DMA_MAX_NUM) || (dma_no == GX_DMA_NOT_USE)); - - if (GXi_DmaId != GX_DMA_NOT_USE) { - MI_WaitDma(GXi_DmaId); - } - - enabled = OS_DisableInterrupts(); - - GXi_DmaId = dma_no; - - (void)OS_RestoreInterrupts(enabled); - - return previous; -} diff --git a/subprojects/NitroSDK/libraries/gx/src/gx_bgcnt.c b/subprojects/NitroSDK/libraries/gx/src/gx_bgcnt.c deleted file mode 100644 index 178092bbe9..0000000000 --- a/subprojects/NitroSDK/libraries/gx/src/gx_bgcnt.c +++ /dev/null @@ -1,268 +0,0 @@ -#include -#include - -static inline int getBGScreenOffset_ (void) { - return (int)(0x10000 * ((reg_GX_DISPCNT & REG_GX_DISPCNT_BGSCREENOFFSET_MASK) >> - REG_GX_DISPCNT_BGSCREENOFFSET_SHIFT)); -} - -static inline int getBGCharOffset_ (void) { - return (int)(0x10000 * ((reg_GX_DISPCNT & REG_GX_DISPCNT_BGCHAROFFSET_MASK) >> - REG_GX_DISPCNT_BGCHAROFFSET_SHIFT)); -} - -void * G2_GetBG0ScrPtr (void) { - int baseBlock = 0x800 * ((reg_G2_BG0CNT & REG_G2_BG0CNT_SCREENBASE_MASK) >> - REG_G2_BG0CNT_SCREENBASE_SHIFT); - - return (void *)(HW_BG_VRAM + getBGScreenOffset_() + baseBlock); -} - -void * G2S_GetBG0ScrPtr (void) { - int baseBlock = 0x800 * ((reg_G2S_DB_BG0CNT & REG_G2S_DB_BG0CNT_SCREENBASE_MASK) >> - REG_G2S_DB_BG0CNT_SCREENBASE_SHIFT); - - return (void *)(HW_DB_BG_VRAM + baseBlock); -} - -void * G2_GetBG1ScrPtr (void) { - int baseBlock = 0x800 * ((reg_G2_BG1CNT & REG_G2_BG1CNT_SCREENBASE_MASK) >> - REG_G2_BG1CNT_SCREENBASE_SHIFT); - - return (void *)(HW_BG_VRAM + getBGScreenOffset_() + baseBlock); -} - -void * G2S_GetBG1ScrPtr (void) { - int baseBlock = 0x800 * ((reg_G2S_DB_BG1CNT & REG_G2S_DB_BG1CNT_SCREENBASE_MASK) - >> REG_G2S_DB_BG1CNT_SCREENBASE_SHIFT); - - return (void *)(HW_DB_BG_VRAM + baseBlock); -} - -#include -void * G2_GetBG2ScrPtr (void) { - GXBGMode bgMode = (GXBGMode)((reg_GX_DISPCNT & REG_GX_DISPCNT_BGMODE_MASK) >> - REG_GX_DISPCNT_BGMODE_SHIFT); - u32 bg = reg_G2_BG2CNT; - int offset = getBGScreenOffset_(); - u32 blockID = (bg & REG_G2_BG2CNT_SCREENBASE_MASK) >> REG_G2_BG2CNT_SCREENBASE_SHIFT; - - switch (bgMode) { - case GX_BGMODE_0: - case GX_BGMODE_1: - case GX_BGMODE_2: - case GX_BGMODE_3: - case GX_BGMODE_4: - - return (void *)(HW_BG_VRAM + offset + 0x800 * blockID); - break; - case GX_BGMODE_5: - - if (bg & REG_G2_BG2CNT_COLORMODE_MASK) { - return (void *)(HW_BG_VRAM + 0x4000 * blockID); - } else { - return (void *)(HW_BG_VRAM + offset + 0x800 * blockID); - } - break; - case GX_BGMODE_6: - - return (void *)HW_BG_VRAM; - break; - default: - SDK_INTERNAL_ERROR("unknown BGMODE 0x%x", bgMode); - return NULL; - break; - } -} - -#include - -void * G2S_GetBG2ScrPtr (void) { - GXBGMode bgMode = (GXBGMode)((reg_GXS_DB_DISPCNT & REG_GXS_DB_DISPCNT_BGMODE_MASK) >> - REG_GXS_DB_DISPCNT_BGMODE_SHIFT); - u32 bg = reg_G2S_DB_BG2CNT; - u32 blockID = - (bg & REG_G2S_DB_BG2CNT_SCREENBASE_MASK) >> REG_G2S_DB_BG2CNT_SCREENBASE_SHIFT; - - switch (bgMode) { - case GX_BGMODE_0: - case GX_BGMODE_1: - case GX_BGMODE_2: - case GX_BGMODE_3: - case GX_BGMODE_4: - - return (void *)(HW_DB_BG_VRAM + 0x800 * blockID); - break; - case GX_BGMODE_5: - - if (bg & REG_G2S_DB_BG2CNT_COLORMODE_MASK) { - return (void *)(HW_DB_BG_VRAM + 0x4000 * blockID); - } else { - return (void *)(HW_DB_BG_VRAM + 0x800 * blockID); - } - break; - case GX_BGMODE_6: - return NULL; - break; - default: - SDK_INTERNAL_ERROR("unknown BGMODE 0x%x", bgMode); - return NULL; - break; - } -} - -#include -void * G2_GetBG3ScrPtr (void) { - GXBGMode bgMode = (GXBGMode)((reg_GX_DISPCNT & REG_GX_DISPCNT_BGMODE_MASK) >> - REG_GX_DISPCNT_BGMODE_SHIFT); - u32 bg = reg_G2_BG3CNT; - int offset = getBGScreenOffset_(); - u32 blockID = (bg & REG_G2_BG3CNT_SCREENBASE_MASK) >> REG_G2_BG3CNT_SCREENBASE_SHIFT; - - switch (bgMode) { - case GX_BGMODE_0: - case GX_BGMODE_1: - case GX_BGMODE_2: - - return (void *)(HW_BG_VRAM + offset + 0x800 * blockID); - break; - case GX_BGMODE_3: - case GX_BGMODE_4: - case GX_BGMODE_5: - - if (bg & REG_G2_BG3CNT_COLORMODE_MASK) { - return (void *)(HW_BG_VRAM + 0x4000 * blockID); - } else { - return (void *)(HW_BG_VRAM + offset + 0x800 * blockID); - } - break; - case GX_BGMODE_6: - return NULL; - break; - default: - SDK_INTERNAL_ERROR("unknown BGMODE 0x%x", bgMode); - return NULL; - break; - } -} - -#include - -void * G2S_GetBG3ScrPtr (void) { - GXBGMode bgMode = (GXBGMode)((reg_GXS_DB_DISPCNT & REG_GXS_DB_DISPCNT_BGMODE_MASK) >> - REG_GXS_DB_DISPCNT_BGMODE_SHIFT); - u32 bg = reg_G2S_DB_BG3CNT; - u32 blockID = - (bg & REG_G2S_DB_BG3CNT_SCREENBASE_MASK) >> REG_G2S_DB_BG3CNT_SCREENBASE_SHIFT; - - switch (bgMode) { - case GX_BGMODE_0: - case GX_BGMODE_1: - case GX_BGMODE_2: - - return (void *)(HW_DB_BG_VRAM + 0x800 * blockID); - break; - case GX_BGMODE_3: - case GX_BGMODE_4: - case GX_BGMODE_5: - - if (bg & REG_G2S_DB_BG3CNT_COLORMODE_MASK) { - return (void *)(HW_DB_BG_VRAM + 0x4000 * blockID); - } else { - return (void *)(HW_DB_BG_VRAM + 0x800 * blockID); - } - break; - case GX_BGMODE_6: - return NULL; - break; - default: - SDK_INTERNAL_ERROR("unknown BGMODE 0x%x", bgMode); - return NULL; - break; - } -} - -void * G2_GetBG0CharPtr (void) { - int baseBlock = 0x4000 * ((reg_G2_BG0CNT & REG_G2_BG0CNT_CHARBASE_MASK) >> - REG_G2_BG0CNT_CHARBASE_SHIFT); - - return (void *)(HW_BG_VRAM + getBGCharOffset_() + baseBlock); -} - -void * G2S_GetBG0CharPtr (void) { - int baseBlock = 0x4000 * ((reg_G2S_DB_BG0CNT & REG_G2S_DB_BG0CNT_CHARBASE_MASK) >> - REG_G2S_DB_BG0CNT_CHARBASE_SHIFT); - - return (void *)(HW_DB_BG_VRAM + baseBlock); -} - -void * G2_GetBG1CharPtr (void) { - int baseBlock = 0x4000 * ((reg_G2_BG1CNT & REG_G2_BG1CNT_CHARBASE_MASK) >> - REG_G2_BG1CNT_CHARBASE_SHIFT); - - return (void *)(HW_BG_VRAM + getBGCharOffset_() + baseBlock); -} - -void * G2S_GetBG1CharPtr (void) { - int baseBlock = 0x4000 * ((reg_G2S_DB_BG1CNT & REG_G2S_DB_BG1CNT_CHARBASE_MASK) >> - REG_G2S_DB_BG1CNT_CHARBASE_SHIFT); - - return (void *)(HW_DB_BG_VRAM + baseBlock); -} - -void * G2_GetBG2CharPtr (void) { - GXBGMode bgMode = (GXBGMode)((reg_GX_DISPCNT & REG_GX_DISPCNT_BGMODE_MASK) >> - REG_GX_DISPCNT_BGMODE_SHIFT); - u32 bg = reg_G2_BG2CNT; - - if (bgMode < 5 || !(bg & REG_G2_BG2CNT_COLORMODE_MASK)) { - int offset = getBGCharOffset_(); - u32 blockID = (bg & REG_G2_BG2CNT_CHARBASE_MASK) >> REG_G2_BG2CNT_CHARBASE_SHIFT; - - return (void *)(HW_BG_VRAM + offset + 0x4000 * blockID); - } else { - return NULL; - } -} - -void * G2S_GetBG2CharPtr (void) { - GXBGMode bgMode = (GXBGMode)((reg_GXS_DB_DISPCNT & REG_GXS_DB_DISPCNT_BGMODE_MASK) >> - REG_GXS_DB_DISPCNT_BGMODE_SHIFT); - u32 bg = reg_G2S_DB_BG2CNT; - if (bgMode < 5 || !(bg & REG_G2S_DB_BG2CNT_COLORMODE_MASK)) { - u32 blockID = - (bg & REG_G2S_DB_BG2CNT_CHARBASE_MASK) >> REG_G2S_DB_BG2CNT_CHARBASE_SHIFT; - - return (void *)(HW_DB_BG_VRAM + 0x4000 * blockID); - } else { - return NULL; - } -} - -void * G2_GetBG3CharPtr (void) { - GXBGMode bgMode = (GXBGMode)((reg_GX_DISPCNT & REG_GX_DISPCNT_BGMODE_MASK) >> - REG_GX_DISPCNT_BGMODE_SHIFT); - u32 bg = reg_G2_BG3CNT; - if (bgMode < 3 || (bgMode < 6 && !(bg & REG_G2_BG2CNT_COLORMODE_MASK))) { - u32 blockID = (bg & REG_G2_BG3CNT_CHARBASE_MASK) >> REG_G2_BG3CNT_CHARBASE_SHIFT; - int offset = getBGCharOffset_(); - - return (void *)(HW_BG_VRAM + offset + 0x4000 * blockID); - } else { - return NULL; - } -} - -void * G2S_GetBG3CharPtr (void) { - GXBGMode bgMode = (GXBGMode)((reg_GXS_DB_DISPCNT & REG_GXS_DB_DISPCNT_BGMODE_MASK) >> - REG_GXS_DB_DISPCNT_BGMODE_SHIFT); - u32 bg = reg_G2S_DB_BG3CNT; - if (bgMode < 3 || (bgMode < 6 && !(bg & REG_G2S_DB_BG2CNT_COLORMODE_MASK))) { - u32 blockID = - (bg & REG_G2S_DB_BG3CNT_CHARBASE_MASK) >> REG_G2S_DB_BG3CNT_CHARBASE_SHIFT; - - return (void *)(HW_DB_BG_VRAM + 0x4000 * blockID); - } else { - return NULL; - } -} diff --git a/subprojects/NitroSDK/libraries/gx/src/gx_load2d.c b/subprojects/NitroSDK/libraries/gx/src/gx_load2d.c deleted file mode 100644 index fdb7b5616f..0000000000 --- a/subprojects/NitroSDK/libraries/gx/src/gx_load2d.c +++ /dev/null @@ -1,515 +0,0 @@ -#include -#include -#include -#include -#include - -#include "include/gxstate.h" -#include "include/gxdma.h" - -void GX_LoadBGPltt (const void * pSrc, u32 offset, u32 szByte) { - SDK_NULL_ASSERT(pSrc); - SDK_ASSERT(offset + szByte <= HW_BG_PLTT_SIZE); - SDK_ALIGN2_ASSERT(offset); - SDK_ALIGN2_ASSERT(szByte); - - GXi_DmaCopy16(GXi_DmaId, pSrc, (void *)(HW_BG_PLTT + offset), szByte); -} - -void GXS_LoadBGPltt (const void * pSrc, u32 offset, u32 szByte) { - SDK_NULL_ASSERT(pSrc); - SDK_ASSERT(offset + szByte <= HW_DB_BG_PLTT_SIZE); - SDK_ALIGN2_ASSERT(offset); - SDK_ALIGN2_ASSERT(szByte); - - GXi_DmaCopy16(GXi_DmaId, pSrc, (void *)(HW_DB_BG_PLTT + offset), szByte); -} - -void GX_LoadOBJPltt (const void * pSrc, u32 offset, u32 szByte) { - SDK_NULL_ASSERT(pSrc); - SDK_ASSERT(offset + szByte <= HW_OBJ_PLTT_SIZE); - SDK_ALIGN2_ASSERT(offset); - SDK_ALIGN2_ASSERT(szByte); - - GXi_DmaCopy16(GXi_DmaId, pSrc, (void *)(HW_OBJ_PLTT + offset), szByte); -} - -void GXS_LoadOBJPltt (const void * pSrc, u32 offset, u32 szByte) { - SDK_NULL_ASSERT(pSrc); - SDK_ASSERT(offset + szByte <= HW_DB_OBJ_PLTT_SIZE); - SDK_ALIGN2_ASSERT(offset); - SDK_ALIGN2_ASSERT(szByte); - - GXi_DmaCopy16(GXi_DmaId, pSrc, (void *)(HW_DB_OBJ_PLTT + offset), szByte); -} - -void GX_LoadOAM (const void * pSrc, u32 offset, u32 szByte) { - SDK_NULL_ASSERT(pSrc); - SDK_ASSERT(offset + szByte <= HW_OAM_SIZE); - SDK_ALIGN4_ASSERT(offset); - SDK_ALIGN4_ASSERT(szByte); - - GXi_DmaCopy32(GXi_DmaId, pSrc, (void *)(HW_OAM + offset), szByte); -} - -void GXS_LoadOAM (const void * pSrc, u32 offset, u32 szByte) { - SDK_NULL_ASSERT(pSrc); - SDK_ASSERT(offset + szByte <= HW_DB_OAM_SIZE); - SDK_ALIGN4_ASSERT(offset); - SDK_ALIGN4_ASSERT(szByte); - - GXi_DmaCopy32(GXi_DmaId, pSrc, (void *)(HW_DB_OAM + offset), szByte); -} - -void GX_LoadOBJ (const void * pSrc, u32 offset, u32 szByte) { - u32 ptr; - SDK_NULL_ASSERT(pSrc); - SDK_ALIGN4_ASSERT(offset); - SDK_ALIGN4_ASSERT(szByte); - ptr = (u32)G2_GetOBJCharPtr(); - - GX_RegionCheck_OBJ(ptr + offset, ptr + offset + szByte); - - GXi_DmaCopy32(GXi_DmaId, pSrc, (void *)(ptr + offset), szByte); -} - -void GXS_LoadOBJ (const void * pSrc, u32 offset, u32 szByte) { - u32 ptr; - SDK_NULL_ASSERT(pSrc); - SDK_ALIGN4_ASSERT(offset); - SDK_ALIGN4_ASSERT(szByte); - - ptr = (u32)G2S_GetOBJCharPtr(); - - GX_RegionCheck_SubOBJ(ptr + offset, ptr + offset + szByte); - - GXi_DmaCopy32(GXi_DmaId, pSrc, (void *)(ptr + offset), szByte); -} - -void GX_LoadBG0Scr (const void * pSrc, u32 offset, u32 szByte) { - u32 ptr; - SDK_NULL_ASSERT(pSrc); - SDK_ALIGN2_ASSERT(offset); - SDK_ALIGN2_ASSERT(szByte); - ptr = (u32)G2_GetBG0ScrPtr(); - - GX_RegionCheck_BG(ptr + offset, ptr + offset + szByte); - - GXi_DmaCopy16(GXi_DmaId, pSrc, (void *)(ptr + offset), szByte); -} - -void GXS_LoadBG0Scr (const void * pSrc, u32 offset, u32 szByte) { - u32 ptr; - SDK_NULL_ASSERT(pSrc); - SDK_ALIGN2_ASSERT(offset); - SDK_ALIGN2_ASSERT(szByte); - ptr = (u32)G2S_GetBG0ScrPtr(); - - GX_RegionCheck_SubBG(ptr + offset, ptr + offset + szByte); - - GXi_DmaCopy16(GXi_DmaId, pSrc, (void *)(ptr + offset), szByte); -} - -void GX_LoadBG1Scr (const void * pSrc, u32 offset, u32 szByte) { - u32 ptr; - SDK_NULL_ASSERT(pSrc); - SDK_ALIGN2_ASSERT(offset); - SDK_ALIGN2_ASSERT(szByte); - - ptr = (u32)G2_GetBG1ScrPtr(); - - GX_RegionCheck_BG(ptr + offset, ptr + offset + szByte); - - GXi_DmaCopy16(GXi_DmaId, pSrc, (void *)(ptr + offset), szByte); -} - -void GXS_LoadBG1Scr (const void * pSrc, u32 offset, u32 szByte) { - u32 ptr; - SDK_NULL_ASSERT(pSrc); - SDK_ALIGN2_ASSERT(offset); - SDK_ALIGN2_ASSERT(szByte); - - ptr = (u32)G2S_GetBG1ScrPtr(); - - GX_RegionCheck_SubBG(ptr + offset, ptr + offset + szByte); - - GXi_DmaCopy16(GXi_DmaId, pSrc, (void *)(ptr + offset), szByte); -} - -void GX_LoadBG2Scr (const void * pSrc, u32 offset, u32 szByte) { - u32 ptr; - SDK_NULL_ASSERT(pSrc); - SDK_ALIGN2_ASSERT(offset); - SDK_ALIGN2_ASSERT(szByte); - ptr = (u32)G2_GetBG2ScrPtr(); - - GX_RegionCheck_BG(ptr + offset, ptr + offset + szByte); - - GXi_DmaCopy16(GXi_DmaId, pSrc, (void *)(ptr + offset), szByte); -} - -void GXS_LoadBG2Scr (const void * pSrc, u32 offset, u32 szByte) { - u32 ptr; - SDK_NULL_ASSERT(pSrc); - SDK_ALIGN2_ASSERT(offset); - SDK_ALIGN2_ASSERT(szByte); - - ptr = (u32)G2S_GetBG2ScrPtr(); - - GX_RegionCheck_SubBG(ptr + offset, ptr + offset + szByte); - - GXi_DmaCopy16(GXi_DmaId, pSrc, (void *)(ptr + offset), szByte); -} - -void GX_LoadBG3Scr (const void * pSrc, u32 offset, u32 szByte) { - u32 ptr; - SDK_NULL_ASSERT(pSrc); - SDK_ALIGN2_ASSERT(offset); - SDK_ALIGN2_ASSERT(szByte); - - ptr = (u32)G2_GetBG3ScrPtr(); - - GX_RegionCheck_BG(ptr + offset, ptr + offset + szByte); - - GXi_DmaCopy16(GXi_DmaId, pSrc, (void *)(ptr + offset), szByte); -} - -void GXS_LoadBG3Scr (const void * pSrc, u32 offset, u32 szByte) { - u32 ptr; - SDK_NULL_ASSERT(pSrc); - SDK_ALIGN2_ASSERT(offset); - SDK_ALIGN2_ASSERT(szByte); - - ptr = (u32)G2S_GetBG3ScrPtr(); - - GX_RegionCheck_SubBG(ptr + offset, ptr + offset + szByte); - - GXi_DmaCopy16(GXi_DmaId, pSrc, (void *)(ptr + offset), szByte); -} - -void GX_LoadBG0Char (const void * pSrc, u32 offset, u32 szByte) { - u32 ptr; - SDK_NULL_ASSERT(pSrc); - SDK_ALIGN4_ASSERT(offset); - SDK_ALIGN4_ASSERT(szByte); - - ptr = (u32)G2_GetBG0CharPtr(); - - GX_RegionCheck_BG(ptr + offset, ptr + offset + szByte); - - GXi_DmaCopy32(GXi_DmaId, pSrc, (void *)(ptr + offset), szByte); -} - -void GXS_LoadBG0Char (const void * pSrc, u32 offset, u32 szByte) { - u32 ptr; - SDK_NULL_ASSERT(pSrc); - SDK_ALIGN4_ASSERT(offset); - SDK_ALIGN4_ASSERT(szByte); - - ptr = (u32)G2S_GetBG0CharPtr(); - - GX_RegionCheck_SubBG(ptr + offset, ptr + offset + szByte); - - GXi_DmaCopy32(GXi_DmaId, pSrc, (void *)(ptr + offset), szByte); -} - -void GX_LoadBG1Char (const void * pSrc, u32 offset, u32 szByte) { - u32 ptr; - SDK_NULL_ASSERT(pSrc); - SDK_ALIGN4_ASSERT(offset); - SDK_ALIGN4_ASSERT(szByte); - - ptr = (u32)G2_GetBG1CharPtr(); - - GX_RegionCheck_BG(ptr + offset, ptr + offset + szByte); - - GXi_DmaCopy32(GXi_DmaId, pSrc, (void *)(ptr + offset), szByte); -} - -void GXS_LoadBG1Char (const void * pSrc, u32 offset, u32 szByte) { - u32 ptr; - SDK_NULL_ASSERT(pSrc); - SDK_ALIGN4_ASSERT(offset); - SDK_ALIGN4_ASSERT(szByte); - - ptr = (u32)G2S_GetBG1CharPtr(); - - GX_RegionCheck_SubBG(ptr + offset, ptr + offset + szByte); - - GXi_DmaCopy32(GXi_DmaId, pSrc, (void *)(ptr + offset), szByte); -} - -void GX_LoadBG2Char (const void * pSrc, u32 offset, u32 szByte) { - u32 ptr; - SDK_NULL_ASSERT(pSrc); - SDK_ALIGN4_ASSERT(offset); - SDK_ALIGN4_ASSERT(szByte); - - ptr = (u32)G2_GetBG2CharPtr(); - - GX_RegionCheck_BG(ptr + offset, ptr + offset + szByte); - - GXi_DmaCopy32(GXi_DmaId, pSrc, (void *)(ptr + offset), szByte); -} - -void GXS_LoadBG2Char (const void * pSrc, u32 offset, u32 szByte) { - u32 ptr; - SDK_NULL_ASSERT(pSrc); - SDK_ALIGN4_ASSERT(offset); - SDK_ALIGN4_ASSERT(szByte); - - ptr = (u32)G2S_GetBG2CharPtr(); - - GX_RegionCheck_SubBG(ptr + offset, ptr + offset + szByte); - - GXi_DmaCopy32(GXi_DmaId, pSrc, (void *)(ptr + offset), szByte); -} - -void GX_LoadBG3Char (const void * pSrc, u32 offset, u32 szByte) { - u32 ptr; - SDK_NULL_ASSERT(pSrc); - SDK_ALIGN4_ASSERT(offset); - SDK_ALIGN4_ASSERT(szByte); - - ptr = (u32)G2_GetBG3CharPtr(); - - GX_RegionCheck_BG(ptr + offset, ptr + offset + szByte); - - GXi_DmaCopy32(GXi_DmaId, pSrc, (void *)(ptr + offset), szByte); -} - -void GXS_LoadBG3Char (const void * pSrc, u32 offset, u32 szByte) { - u32 ptr; - SDK_NULL_ASSERT(pSrc); - SDK_ALIGN4_ASSERT(offset); - SDK_ALIGN4_ASSERT(szByte); - - ptr = (u32)G2S_GetBG3CharPtr(); - - GX_RegionCheck_SubBG(ptr + offset, ptr + offset + szByte); - - GXi_DmaCopy32(GXi_DmaId, pSrc, (void *)(ptr + offset), szByte); -} - -static GXVRamBGExtPltt sBGExtPltt = (GXVRamBGExtPltt)(0); -static u32 sBGExtPlttLCDCBlk = 0; -static u32 sBGExtPlttLCDCOffset = 0; - -void GX_BeginLoadBGExtPltt () { - SDK_ASSERT(0 == sBGExtPltt && 0 == sBGExtPlttLCDCBlk && 0 == sBGExtPlttLCDCOffset); - - sBGExtPltt = GX_ResetBankForBGExtPltt(); - - switch (sBGExtPltt) { - case GX_VRAM_BGEXTPLTT_0123_E: - sBGExtPlttLCDCBlk = HW_LCDC_VRAM_E; - sBGExtPlttLCDCOffset = 0; - break; - - case GX_VRAM_BGEXTPLTT_23_G: - sBGExtPlttLCDCBlk = HW_LCDC_VRAM_G; - sBGExtPlttLCDCOffset = 0x4000; - break; - - case GX_VRAM_BGEXTPLTT_0123_FG: - case GX_VRAM_BGEXTPLTT_01_F: - sBGExtPlttLCDCBlk = HW_LCDC_VRAM_F; - sBGExtPlttLCDCOffset = 0; - break; - - case GX_VRAM_BGEXTPLTT_NONE: - break; - - default: - SDK_INTERNAL_ERROR("unknown case 0x%x", sBGExtPltt); - break; - } -} - -void GX_LoadBGExtPltt (const void * pSrc, u32 destSlotAddr, u32 szByte) { - SDK_NULL_ASSERT(pSrc); - SDK_ASSERT(sBGExtPltt != GX_VRAM_BGEXTPLTT_NONE); - SDK_ASSERT(sBGExtPlttLCDCBlk != 0); - SDK_ALIGN4_ASSERT(szByte); - SDK_ALIGN4_ASSERT(destSlotAddr); - SDK_ALIGN4_ASSERT(pSrc); - -#ifdef SDK_DEBUG - switch (sBGExtPltt) { - case GX_VRAM_BGEXTPLTT_0123_E: - case GX_VRAM_BGEXTPLTT_0123_FG: - SDK_ASSERTMSG( - destSlotAddr + szByte <= 0x8000, - "Illegal address/size specified(0x%5x->0x%5x)", - destSlotAddr, destSlotAddr + szByte - ); - break; - - case GX_VRAM_BGEXTPLTT_23_G: - SDK_ASSERTMSG( - destSlotAddr + szByte <= 0x8000, - "Illegal address/size specified(0x%5x->0x%5x)", - destSlotAddr, destSlotAddr + szByte - ); - SDK_ASSERTMSG( - destSlotAddr >= 0x4000, - "BGExtPltt 0x0000 - 0x4000 not available(0x%5x->0x%5x)", - destSlotAddr, destSlotAddr + szByte - ); - break; - - case GX_VRAM_BGEXTPLTT_01_F: - SDK_ASSERTMSG( - destSlotAddr + szByte <= 0x4000, - "BGExtPltt 0x4000 - 0x8000 not available(0x%5x->0x%5x)", - destSlotAddr, destSlotAddr + szByte - ); - break; - - default: - SDK_INTERNAL_ERROR("unknown case 0x%x", sBGExtPltt); - break; - } -#endif - GXi_DmaCopy32Async( - GXi_DmaId, - pSrc, - (void *)(sBGExtPlttLCDCBlk + destSlotAddr - sBGExtPlttLCDCOffset), - szByte, NULL, NULL - ); -} - -void GX_EndLoadBGExtPltt () { - GXi_WaitDma(GXi_DmaId); - - GX_SetBankForBGExtPltt(sBGExtPltt); - - sBGExtPltt = (GXVRamBGExtPltt)0; - sBGExtPlttLCDCBlk = 0; - sBGExtPlttLCDCOffset = 0; -} - -static GXVRamOBJExtPltt sOBJExtPltt = (GXVRamOBJExtPltt)(0); -static u32 sOBJExtPlttLCDCBlk = 0; - -void GX_BeginLoadOBJExtPltt () { - SDK_ASSERT(0 == sOBJExtPltt && 0 == sOBJExtPlttLCDCBlk); - - sOBJExtPltt = GX_ResetBankForOBJExtPltt(); - - switch (sOBJExtPltt) { - case GX_VRAM_OBJEXTPLTT_0_F: - sOBJExtPlttLCDCBlk = HW_LCDC_VRAM_F; - break; - - case GX_VRAM_OBJEXTPLTT_0_G: - sOBJExtPlttLCDCBlk = HW_LCDC_VRAM_G; - break; - - case GX_VRAM_OBJEXTPLTT_NONE: - break; - - default: - SDK_INTERNAL_ERROR("unknown case 0x%x", sOBJExtPltt); - break; - } - ; -} - -void GX_LoadOBJExtPltt (const void * pSrc, u32 destSlotAddr, u32 szByte) { - SDK_NULL_ASSERT(pSrc); - SDK_ASSERT(GX_VRAM_OBJEXTPLTT_NONE != sOBJExtPltt); - SDK_ASSERT(0 != sOBJExtPlttLCDCBlk); - SDK_ALIGN4_ASSERT(szByte); - SDK_ALIGN4_ASSERT(pSrc); - SDK_ALIGN4_ASSERT(destSlotAddr); - SDK_ASSERT(destSlotAddr + szByte <= 0x2000); - - GXi_DmaCopy32Async( - GXi_DmaId, - pSrc, (void *)(sOBJExtPlttLCDCBlk + destSlotAddr), szByte, NULL, NULL - ); -} - -void GX_EndLoadOBJExtPltt () { - GXi_WaitDma(GXi_DmaId); - - GX_SetBankForOBJExtPltt(sOBJExtPltt); - - sOBJExtPltt = (GXVRamOBJExtPltt)0; - sOBJExtPlttLCDCBlk = 0; -} - -static GXVRamSubBGExtPltt sSubBGExtPltt = (GXVRamSubBGExtPltt)(0); - -void GXS_BeginLoadBGExtPltt () { - SDK_ASSERT(0 == sSubBGExtPltt); - - sSubBGExtPltt = GX_ResetBankForSubBGExtPltt(); - - SDK_ASSERTMSG(GX_VRAM_SUB_BGEXTPLTT_0123_H == sSubBGExtPltt, "Sub BGExtPltt not allocated"); -} - -void GXS_LoadBGExtPltt (const void * pSrc, u32 destSlotAddr, u32 szByte) { - SDK_NULL_ASSERT(pSrc); - SDK_ASSERT(GX_VRAM_SUB_BGEXTPLTT_0123_H == sSubBGExtPltt); - SDK_ALIGN4_ASSERT(pSrc); - SDK_ALIGN4_ASSERT(destSlotAddr); - SDK_ALIGN4_ASSERT(szByte); - - SDK_ASSERTMSG( - destSlotAddr + szByte <= 0x8000, - "Illegal address/size specified(0x%5x->0x%5x)", - destSlotAddr, destSlotAddr + szByte - ); - - GXi_DmaCopy32Async( - GXi_DmaId, - pSrc, (void *)(HW_LCDC_VRAM_H + destSlotAddr), szByte, NULL, NULL - ); -} - -void GXS_EndLoadBGExtPltt () { - GXi_WaitDma(GXi_DmaId); - - GX_SetBankForSubBGExtPltt(sSubBGExtPltt); - - sSubBGExtPltt = (GXVRamSubBGExtPltt)0; -} - -static GXVRamSubOBJExtPltt sSubOBJExtPltt = (GXVRamSubOBJExtPltt)(0); - -void GXS_BeginLoadOBJExtPltt () { - SDK_ASSERT(0 == sSubOBJExtPltt); - - sSubOBJExtPltt = GX_ResetBankForSubOBJExtPltt(); - - SDK_ASSERTMSG(GX_VRAM_SUB_OBJEXTPLTT_0_I == sSubOBJExtPltt, "Sub OBJExtPltt not allocated"); -} - -void GXS_LoadOBJExtPltt (const void * pSrc, u32 destSlotAddr, u32 szByte) { - SDK_NULL_ASSERT(pSrc); - SDK_ASSERT(GX_VRAM_SUB_OBJEXTPLTT_0_I == sSubOBJExtPltt); - SDK_ALIGN4_ASSERT(pSrc); - SDK_ALIGN4_ASSERT(destSlotAddr); - SDK_ALIGN4_ASSERT(szByte); - - SDK_ASSERTMSG( - destSlotAddr + szByte <= 0x2000, - "Illegal address/size specified(0x%5x->0x%5x)", - destSlotAddr, destSlotAddr + szByte - ); - - GXi_DmaCopy32Async( - GXi_DmaId, - pSrc, (void *)(HW_LCDC_VRAM_I + destSlotAddr), szByte, NULL, NULL - ); -} - -void GXS_EndLoadOBJExtPltt () { - GXi_WaitDma(GXi_DmaId); - - GX_SetBankForSubOBJExtPltt(sSubOBJExtPltt); - - sSubOBJExtPltt = (GXVRamSubOBJExtPltt)0; -} diff --git a/subprojects/NitroSDK/libraries/gx/src/gx_load3d.c b/subprojects/NitroSDK/libraries/gx/src/gx_load3d.c deleted file mode 100644 index c4b17e954b..0000000000 --- a/subprojects/NitroSDK/libraries/gx/src/gx_load3d.c +++ /dev/null @@ -1,413 +0,0 @@ -#include -#include -#include -#include - -#include "include/gxstate.h" -#include "include/gxdma.h" - -static u32 sTexLCDCBlk1 = 0; -static u32 sSzTexBlk1 = 0; -static u32 sTexLCDCBlk2 = 0; -static GXVRamTex sTex = (GXVRamTex)(0); - -static const struct { - u16 blk1; - u16 blk2; - u16 szBlk1; -} sTexStartAddrTable[16] = { - { - 0, 0, 0 - } - , - { - (u16)(HW_LCDC_VRAM_A >> 12), 0, 0 - } - , - { - (u16)(HW_LCDC_VRAM_B >> 12), 0, 0 - } - , - { - (u16)(HW_LCDC_VRAM_A >> 12), 0, 0 - } - , - { - (u16)(HW_LCDC_VRAM_C >> 12), 0, 0 - } - , - { - (u16)(HW_LCDC_VRAM_A >> 12), (u16)(HW_LCDC_VRAM_C >> 12), (u16)(HW_VRAM_A_SIZE >> 12) - } - , - { - (u16)(HW_LCDC_VRAM_B >> 12), 0, 0 - } - , - { - (u16)(HW_LCDC_VRAM_A >> 12), 0, 0 - } - , - { - (u16)(HW_LCDC_VRAM_D >> 12), 0, 0 - } - , - { - (u16)(HW_LCDC_VRAM_A >> 12), (u16)(HW_LCDC_VRAM_D >> 12), (u16)(HW_VRAM_A_SIZE >> 12) - } - , - { - (u16)(HW_LCDC_VRAM_B >> 12), (u16)(HW_LCDC_VRAM_D >> 12), (u16)(HW_VRAM_B_SIZE >> 12) - } - , - { - (u16)(HW_LCDC_VRAM_A >> 12), - (u16)(HW_LCDC_VRAM_D >> 12), (u16)((HW_VRAM_A_SIZE + HW_VRAM_B_SIZE) >> 12) - } - , - { - (u16)(HW_LCDC_VRAM_C >> 12), 0, 0 - } - , - { - (u16)(HW_LCDC_VRAM_A >> 12), (u16)(HW_LCDC_VRAM_C >> 12), (u16)(HW_VRAM_A_SIZE >> 12) - } - , - { - (u16)(HW_LCDC_VRAM_B >> 12), 0, 0 - } - , - { - (u16)(HW_LCDC_VRAM_A >> 12), 0, 0 - } - , -}; - -void GX_LoadTexEx (GXVRamTex tex, const void * pSrc, u32 destSlotAddr, u32 szByte) { - u32 base1, base2, szBlk1; - void * pLCDC; - - SDK_ALIGN4_ASSERT(szByte); - SDK_ALIGN4_ASSERT(destSlotAddr); - SDK_ALIGN4_ASSERT(pSrc); - SDK_ASSERTMSG( - (GX_GetBankForLCDC() & tex) == tex, - "Banks specified by tex must be on LCDC space." - ); - GX_VRAM_TEX_ASSERT(tex); - - base1 = (u32)(sTexStartAddrTable[tex].blk1 << 12); - base2 = (u32)(sTexStartAddrTable[tex].blk2 << 12); - szBlk1 = (u32)(sTexStartAddrTable[tex].szBlk1 << 12); - - SDK_ASSERT(0 != base1); - - GX_RegionCheck_Tex(tex, destSlotAddr, destSlotAddr + szByte); - - if (0 == base2) { - pLCDC = (void *)(base1 + destSlotAddr); - } else { - if (destSlotAddr + szByte < szBlk1) { - pLCDC = (void *)(base1 + destSlotAddr); - } else if (destSlotAddr >= szBlk1) { - pLCDC = (void *)(base2 + destSlotAddr - szBlk1); - } else { - void * pLCDC2 = (void *)base2; - u32 sz = szBlk1 - destSlotAddr; - pLCDC = (void *)(base1 + destSlotAddr); - - GXi_DmaCopy32(GXi_DmaId, pSrc, pLCDC, sz); - GXi_DmaCopy32Async( - GXi_DmaId, - (void *)((u8 *)pSrc + sz), pLCDC2, szByte - sz, NULL, NULL - ); - return; - } - } - - GXi_DmaCopy32Async(GXi_DmaId, pSrc, pLCDC, szByte, NULL, NULL); -} - -void GX_BeginLoadTex () { -#if 1 - SDK_ASSERT(0 == sTex && 0 == sTexLCDCBlk1 && 0 == sSzTexBlk1 && 0 == sTexLCDCBlk2); - - sTex = GX_ResetBankForTex(); - - GX_VRAM_TEX_ASSERT(sTex); - - sTexLCDCBlk1 = (u32)(sTexStartAddrTable[sTex].blk1 << 12); - sTexLCDCBlk2 = (u32)(sTexStartAddrTable[sTex].blk2 << 12); - sSzTexBlk1 = (u32)(sTexStartAddrTable[sTex].szBlk1 << 12); - -#else - SDK_ASSERT(sTex == 0 && sTexLCDCBlk1 == 0 && sSzTexBlk1 == 0 && sTexLCDCBlk2 == 0); - - sTex = GX_ResetBankForTex(); - - switch (sTex) { - case GX_VRAM_TEX_01_AC: - case GX_VRAM_TEX_012_ACD: - sTexLCDCBlk2 = HW_LCDC_VRAM_C; - sSzTexBlk1 = HW_VRAM_A_SIZE; - - case GX_VRAM_TEX_0_A: - case GX_VRAM_TEX_01_AB: - case GX_VRAM_TEX_012_ABC: - case GX_VRAM_TEX_0123_ABCD: - sTexLCDCBlk1 = HW_LCDC_VRAM_A; - break; - - case GX_VRAM_TEX_01_BD: - sTexLCDCBlk2 = HW_LCDC_VRAM_D; - sSzTexBlk1 = HW_VRAM_B_SIZE; - - case GX_VRAM_TEX_0_B: - case GX_VRAM_TEX_01_BC: - case GX_VRAM_TEX_012_BCD: - sTexLCDCBlk1 = HW_LCDC_VRAM_B; - break; - - case GX_VRAM_TEX_0_C: - case GX_VRAM_TEX_01_CD: - sTexLCDCBlk1 = HW_LCDC_VRAM_C; - break; - - case GX_VRAM_TEX_0_D: - sTexLCDCBlk1 = HW_LCDC_VRAM_D; - break; - - case GX_VRAM_TEX_01_AD: - sTexLCDCBlk1 = HW_LCDC_VRAM_A; - sTexLCDCBlk2 = HW_LCDC_VRAM_D; - sSzTexBlk1 = HW_VRAM_A_SIZE; - break; - - case GX_VRAM_TEX_012_ABD: - sTexLCDCBlk1 = HW_LCDC_VRAM_A; - sTexLCDCBlk2 = HW_LCDC_VRAM_D; - sSzTexBlk1 = HW_VRAM_A_SIZE + HW_VRAM_B_SIZE; - break; - - case GX_VRAM_TEX_NONE: - break; - - default: - SDK_INTERNAL_ERROR("unknown case 0x%x", sTex); - break; - } - ; -#endif -} - -void GX_LoadTex (const void * pSrc, u32 destSlotAddr, u32 szByte) { - void * pLCDC; - SDK_NULL_ASSERT(pSrc); - - SDK_ASSERT(GX_VRAM_TEX_NONE != sTex); - SDK_ASSERT(0 != sTexLCDCBlk1); - SDK_ALIGN4_ASSERT(szByte); - SDK_ALIGN4_ASSERT(destSlotAddr); - SDK_ALIGN4_ASSERT(pSrc); - - GX_RegionCheck_Tex(sTex, destSlotAddr, destSlotAddr + szByte); - - if (0 == sTexLCDCBlk2) { - pLCDC = (void *)(sTexLCDCBlk1 + destSlotAddr); - } else { - if (destSlotAddr + szByte < sSzTexBlk1) { - pLCDC = (void *)(sTexLCDCBlk1 + destSlotAddr); - } else if (destSlotAddr >= sSzTexBlk1) { - pLCDC = (void *)(sTexLCDCBlk2 + destSlotAddr - sSzTexBlk1); - } else { - void * pLCDC2 = (void *)sTexLCDCBlk2; - u32 sz = sSzTexBlk1 - destSlotAddr; - pLCDC = (void *)(sTexLCDCBlk1 + destSlotAddr); - - GXi_DmaCopy32(GXi_DmaId, pSrc, pLCDC, sz); - GXi_DmaCopy32Async( - GXi_DmaId, - (void *)((u8 *)pSrc + sz), pLCDC2, szByte - sz, NULL, NULL - ); - return; - } - } - - GXi_DmaCopy32Async(GXi_DmaId, pSrc, pLCDC, szByte, NULL, NULL); -} - -void GX_EndLoadTex () { - GXi_WaitDma(GXi_DmaId); - - GX_SetBankForTex(sTex); - - sTexLCDCBlk1 = sTexLCDCBlk2 = sSzTexBlk1 = 0; - sTex = (GXVRamTex)0; -} - -static GXVRamTexPltt sTexPltt = (GXVRamTexPltt)(0); -static u32 sTexPlttLCDCBlk = 0; - -static const u16 sTexPlttStartAddrTable[8] = { - 0, - (u16)(HW_LCDC_VRAM_E >> 12), - (u16)(HW_LCDC_VRAM_F >> 12), - (u16)(HW_LCDC_VRAM_E >> 12), - (u16)(HW_LCDC_VRAM_G >> 12), - 0, - (u16)(HW_LCDC_VRAM_F >> 12), - (u16)(HW_LCDC_VRAM_E >> 12) -}; - -void GX_LoadTexPlttEx (GXVRamTexPltt texPltt, const void * pSrc, u32 destSlotAddr, u32 szByte) { - u32 base; - SDK_ASSERTMSG( - (GX_GetBankForLCDC() & texPltt) == texPltt, - "Banks specified by texPltt must be on LCDC space." - ); - - GX_VRAM_TEXPLTT_ASSERT(texPltt); - base = (u32)(sTexPlttStartAddrTable[texPltt >> 4] << 12); - - SDK_NULL_ASSERT(pSrc); - SDK_ASSERT(0 != base); - SDK_ALIGN4_ASSERT(destSlotAddr); - SDK_ALIGN4_ASSERT(szByte); - SDK_ALIGN4_ASSERT(pSrc); - - GX_RegionCheck_TexPltt(texPltt, destSlotAddr, destSlotAddr + szByte); - - GXi_DmaCopy32Async(GXi_DmaId, pSrc, (void *)(base + destSlotAddr), szByte, NULL, NULL); -} - -void GX_BeginLoadTexPltt () { -#if 1 - SDK_ASSERT(0 == sTexPltt && 0 == sTexPlttLCDCBlk); - - sTexPltt = GX_ResetBankForTexPltt(); - - GX_VRAM_TEXPLTT_ASSERT(sTexPltt); - sTexPlttLCDCBlk = (u32)(sTexPlttStartAddrTable[sTexPltt >> 4] << 12); -#else - SDK_ASSERT(sTexPltt == 0 && sTexPlttLCDCBlk == 0); - - sTexPltt = GX_ResetBankForTexPltt(); - - switch (sTexPltt) { - case GX_VRAM_TEXPLTT_0_F: - case GX_VRAM_TEXPLTT_01_FG: - sTexPlttLCDCBlk = HW_LCDC_VRAM_F; - break; - case GX_VRAM_TEXPLTT_0_G: - sTexPlttLCDCBlk = HW_LCDC_VRAM_G; - break; - case GX_VRAM_TEXPLTT_0123_E: - case GX_VRAM_TEXPLTT_01234_EF: - case GX_VRAM_TEXPLTT_012345_EFG: - sTexPlttLCDCBlk = HW_LCDC_VRAM_E; - break; - case GX_VRAM_TEXPLTT_NONE: - break; - default: - SDK_INTERNAL_ERROR("unknown case 0x%x", sTexPltt); - break; - } -#endif -} - -void GX_LoadTexPltt (const void * pSrc, u32 destSlotAddr, u32 szByte) { - SDK_NULL_ASSERT(pSrc); - SDK_ASSERT(GX_VRAM_TEXPLTT_NONE != sTexPltt); - SDK_ASSERT(0 != sTexPlttLCDCBlk); - SDK_ALIGN4_ASSERT(destSlotAddr); - SDK_ALIGN4_ASSERT(szByte); - SDK_ALIGN4_ASSERT(pSrc); - - GX_RegionCheck_TexPltt(sTexPltt, destSlotAddr, destSlotAddr + szByte); - - GXi_DmaCopy32Async( - GXi_DmaId, - pSrc, (void *)(sTexPlttLCDCBlk + destSlotAddr), szByte, NULL, NULL - ); -} - -void GX_EndLoadTexPltt () { - GXi_WaitDma(GXi_DmaId); - - GX_SetBankForTexPltt(sTexPltt); - - sTexPltt = (GXVRamTexPltt)0; - sTexPlttLCDCBlk = 0; -} - -static GXVRamClearImage sClrImg = (GXVRamClearImage)(0); -static u32 sClrImgLCDCBlk = 0; - -void GX_BeginLoadClearImage () { - SDK_ASSERT(0 == sClrImg && 0 == sClrImgLCDCBlk); - - sClrImg = GX_ResetBankForClearImage(); - - switch (sClrImg) { - case GX_VRAM_CLEARIMAGE_256_AB: - case GX_VRAM_CLEARDEPTH_128_B: - sClrImgLCDCBlk = HW_LCDC_VRAM_A; - break; - - case GX_VRAM_CLEARIMAGE_256_CD: - case GX_VRAM_CLEARDEPTH_128_D: - sClrImgLCDCBlk = HW_LCDC_VRAM_C; - break; - - case GX_VRAM_CLEARDEPTH_128_A: - sClrImgLCDCBlk = HW_LCDC_VRAM_A - 0x20000; - break; - - case GX_VRAM_CLEARDEPTH_128_C: - sClrImgLCDCBlk = HW_LCDC_VRAM_C - 0x20000; - break; - - case GX_VRAM_CLEARIMAGE_NONE: - break; - - default: - SDK_INTERNAL_ERROR("unknown case 0x%x", sClrImg); - break; - } -} - -void GX_LoadClearImageColor (const void * pSrc, u32 szByte) { - SDK_NULL_ASSERT(pSrc); - SDK_ASSERT(GX_VRAM_CLEARIMAGE_256_AB == sClrImg || GX_VRAM_CLEARIMAGE_256_CD == sClrImg); - SDK_ASSERT(0 != sClrImgLCDCBlk); - SDK_ALIGN4_ASSERT(szByte); - SDK_ALIGN4_ASSERT(pSrc); - SDK_ASSERT(szByte <= 0x20000); - - GXi_DmaCopy32Async(GXi_DmaId, pSrc, (void *)(sClrImgLCDCBlk), szByte, NULL, NULL); -} - -void GX_LoadClearImageDepth (const void * pSrc, u32 szByte) { - SDK_NULL_ASSERT(pSrc); - SDK_ASSERT(GX_VRAM_CLEARIMAGE_NONE != sClrImg); - SDK_ASSERT(0 != sClrImgLCDCBlk); - SDK_ALIGN4_ASSERT(szByte); - SDK_ALIGN4_ASSERT(pSrc); - SDK_ASSERT(szByte <= 0x20000); - - GXi_DmaCopy32Async( - GXi_DmaId, - pSrc, - (void *)(sClrImgLCDCBlk + 0x20000), - szByte, NULL, NULL - ); -} - -void GX_EndLoadClearImage () { - GXi_WaitDma(GXi_DmaId); - - GX_SetBankForClearImage(sClrImg); - - sClrImg = (GXVRamClearImage)0; - sClrImgLCDCBlk = 0; -} diff --git a/subprojects/NitroSDK/libraries/gx/src/gx_vramcnt.c b/subprojects/NitroSDK/libraries/gx/src/gx_vramcnt.c deleted file mode 100644 index 81aab4bf07..0000000000 --- a/subprojects/NitroSDK/libraries/gx/src/gx_vramcnt.c +++ /dev/null @@ -1,1722 +0,0 @@ -#include -#include -#include -#include - -#include "include/gxstate.h" - -typedef enum { - GX_VRAMCNT_A_DISABLE = 0, - GX_VRAMCNT_A_LCDC_0x06800000 = - (0 << REG_GX_VRAMCNT_A_MST_SHIFT) | (0 << REG_GX_VRAMCNT_A_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_A_E_SHIFT), - GX_VRAMCNT_A_BG_0x06000000 = - (1 << REG_GX_VRAMCNT_A_MST_SHIFT) | (0 << REG_GX_VRAMCNT_A_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_A_E_SHIFT), - GX_VRAMCNT_A_BG_0x06020000 = - (1 << REG_GX_VRAMCNT_A_MST_SHIFT) | (1 << REG_GX_VRAMCNT_A_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_A_E_SHIFT), - GX_VRAMCNT_A_BG_0x06040000 = - (1 << REG_GX_VRAMCNT_A_MST_SHIFT) | (2 << REG_GX_VRAMCNT_A_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_A_E_SHIFT), - GX_VRAMCNT_A_BG_0x06060000 = - (1 << REG_GX_VRAMCNT_A_MST_SHIFT) | (3 << REG_GX_VRAMCNT_A_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_A_E_SHIFT), - GX_VRAMCNT_A_OBJ_0x06400000 = - (2 << REG_GX_VRAMCNT_A_MST_SHIFT) | (0 << REG_GX_VRAMCNT_A_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_A_E_SHIFT), - GX_VRAMCNT_A_OBJ_0x06420000 = - (2 << REG_GX_VRAMCNT_A_MST_SHIFT) | (1 << REG_GX_VRAMCNT_A_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_A_E_SHIFT), - GX_VRAMCNT_A_TEX_0 = - (3 << REG_GX_VRAMCNT_A_MST_SHIFT) | (0 << REG_GX_VRAMCNT_A_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_A_E_SHIFT), - GX_VRAMCNT_A_TEX_1 = - (3 << REG_GX_VRAMCNT_A_MST_SHIFT) | (1 << REG_GX_VRAMCNT_A_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_A_E_SHIFT), - GX_VRAMCNT_A_TEX_2 = - (3 << REG_GX_VRAMCNT_A_MST_SHIFT) | (2 << REG_GX_VRAMCNT_A_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_A_E_SHIFT), - GX_VRAMCNT_A_TEX_3 = - (3 << REG_GX_VRAMCNT_A_MST_SHIFT) | (3 << REG_GX_VRAMCNT_A_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_A_E_SHIFT) -} GX_VRAMCNT_A; - -typedef enum { - GX_VRAMCNT_B_DISABLE = 0, - GX_VRAMCNT_B_LCDC_0x06820000 = - (0 << REG_GX_VRAMCNT_B_MST_SHIFT) | (0 << REG_GX_VRAMCNT_B_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_B_E_SHIFT), - GX_VRAMCNT_B_BG_0x06000000 = - (1 << REG_GX_VRAMCNT_B_MST_SHIFT) | (0 << REG_GX_VRAMCNT_B_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_B_E_SHIFT), - GX_VRAMCNT_B_BG_0x06020000 = - (1 << REG_GX_VRAMCNT_B_MST_SHIFT) | (1 << REG_GX_VRAMCNT_B_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_B_E_SHIFT), - GX_VRAMCNT_B_BG_0x06040000 = - (1 << REG_GX_VRAMCNT_B_MST_SHIFT) | (2 << REG_GX_VRAMCNT_B_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_B_E_SHIFT), - GX_VRAMCNT_B_BG_0x06060000 = - (1 << REG_GX_VRAMCNT_B_MST_SHIFT) | (3 << REG_GX_VRAMCNT_B_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_B_E_SHIFT), - GX_VRAMCNT_B_OBJ_0x06400000 = - (2 << REG_GX_VRAMCNT_B_MST_SHIFT) | (0 << REG_GX_VRAMCNT_B_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_B_E_SHIFT), - GX_VRAMCNT_B_OBJ_0x06420000 = - (2 << REG_GX_VRAMCNT_B_MST_SHIFT) | (1 << REG_GX_VRAMCNT_B_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_B_E_SHIFT), - GX_VRAMCNT_B_TEX_0 = - (3 << REG_GX_VRAMCNT_B_MST_SHIFT) | (0 << REG_GX_VRAMCNT_B_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_B_E_SHIFT), - GX_VRAMCNT_B_TEX_1 = - (3 << REG_GX_VRAMCNT_B_MST_SHIFT) | (1 << REG_GX_VRAMCNT_B_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_B_E_SHIFT), - GX_VRAMCNT_B_TEX_2 = - (3 << REG_GX_VRAMCNT_B_MST_SHIFT) | (2 << REG_GX_VRAMCNT_B_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_B_E_SHIFT), - GX_VRAMCNT_B_TEX_3 = - (3 << REG_GX_VRAMCNT_B_MST_SHIFT) | (3 << REG_GX_VRAMCNT_B_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_B_E_SHIFT) -} GX_VRAMCNT_B; - -typedef enum { - GX_VRAMCNT_C_DISABLE = 0, - GX_VRAMCNT_C_LCDC_0x06840000 = - (0 << REG_GX_VRAMCNT_C_MST_SHIFT) | (0 << REG_GX_VRAMCNT_C_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_C_E_SHIFT), - GX_VRAMCNT_C_BG_0x06000000 = - (1 << REG_GX_VRAMCNT_C_MST_SHIFT) | (0 << REG_GX_VRAMCNT_C_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_C_E_SHIFT), - GX_VRAMCNT_C_BG_0x06020000 = - (1 << REG_GX_VRAMCNT_C_MST_SHIFT) | (1 << REG_GX_VRAMCNT_C_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_C_E_SHIFT), - GX_VRAMCNT_C_BG_0x06040000 = - (1 << REG_GX_VRAMCNT_C_MST_SHIFT) | (2 << REG_GX_VRAMCNT_C_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_C_E_SHIFT), - GX_VRAMCNT_C_BG_0x06060000 = - (1 << REG_GX_VRAMCNT_C_MST_SHIFT) | (3 << REG_GX_VRAMCNT_C_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_C_E_SHIFT), - GX_VRAMCNT_C_ARM7_0x06000000 = - (2 << REG_GX_VRAMCNT_C_MST_SHIFT) | (0 << REG_GX_VRAMCNT_C_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_C_E_SHIFT), - GX_VRAMCNT_C_ARM7_0x06020000 = - (2 << REG_GX_VRAMCNT_C_MST_SHIFT) | (1 << REG_GX_VRAMCNT_C_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_C_E_SHIFT), - GX_VRAMCNT_C_TEX_0 = - (3 << REG_GX_VRAMCNT_C_MST_SHIFT) | (0 << REG_GX_VRAMCNT_C_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_C_E_SHIFT), - GX_VRAMCNT_C_TEX_1 = - (3 << REG_GX_VRAMCNT_C_MST_SHIFT) | (1 << REG_GX_VRAMCNT_C_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_C_E_SHIFT), - GX_VRAMCNT_C_TEX_2 = - (3 << REG_GX_VRAMCNT_C_MST_SHIFT) | (2 << REG_GX_VRAMCNT_C_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_C_E_SHIFT), - GX_VRAMCNT_C_TEX_3 = - (3 << REG_GX_VRAMCNT_C_MST_SHIFT) | (3 << REG_GX_VRAMCNT_C_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_C_E_SHIFT), - GX_VRAMCNT_C_SUBBG_0x06200000 = - (4 << REG_GX_VRAMCNT_C_MST_SHIFT) | (1 << REG_GX_VRAMCNT_C_E_SHIFT) -} GX_VRAMCNT_C; - -typedef enum { - GX_VRAMCNT_D_DISABLE = 0, - GX_VRAMCNT_D_LCDC_0x06860000 = - (0 << REG_GX_VRAMCNT_D_MST_SHIFT) | (0 << REG_GX_VRAMCNT_D_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_D_E_SHIFT), - GX_VRAMCNT_D_BG_0x06000000 = - (1 << REG_GX_VRAMCNT_D_MST_SHIFT) | (0 << REG_GX_VRAMCNT_D_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_D_E_SHIFT), - GX_VRAMCNT_D_BG_0x06020000 = - (1 << REG_GX_VRAMCNT_D_MST_SHIFT) | (1 << REG_GX_VRAMCNT_D_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_D_E_SHIFT), - GX_VRAMCNT_D_BG_0x06040000 = - (1 << REG_GX_VRAMCNT_D_MST_SHIFT) | (2 << REG_GX_VRAMCNT_D_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_D_E_SHIFT), - GX_VRAMCNT_D_BG_0x06060000 = - (1 << REG_GX_VRAMCNT_D_MST_SHIFT) | (3 << REG_GX_VRAMCNT_D_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_D_E_SHIFT), - GX_VRAMCNT_D_ARM7_0x06000000 = - (2 << REG_GX_VRAMCNT_D_MST_SHIFT) | (0 << REG_GX_VRAMCNT_D_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_D_E_SHIFT), - GX_VRAMCNT_D_ARM7_0x06020000 = - (2 << REG_GX_VRAMCNT_D_MST_SHIFT) | (1 << REG_GX_VRAMCNT_D_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_D_E_SHIFT), - GX_VRAMCNT_D_TEX_0 = - (3 << REG_GX_VRAMCNT_D_MST_SHIFT) | (0 << REG_GX_VRAMCNT_D_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_D_E_SHIFT), - GX_VRAMCNT_D_TEX_1 = - (3 << REG_GX_VRAMCNT_D_MST_SHIFT) | (1 << REG_GX_VRAMCNT_D_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_D_E_SHIFT), - GX_VRAMCNT_D_TEX_2 = - (3 << REG_GX_VRAMCNT_D_MST_SHIFT) | (2 << REG_GX_VRAMCNT_D_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_D_E_SHIFT), - GX_VRAMCNT_D_TEX_3 = - (3 << REG_GX_VRAMCNT_D_MST_SHIFT) | (3 << REG_GX_VRAMCNT_D_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_D_E_SHIFT), - GX_VRAMCNT_D_SUBOBJ_0x06600000 = - (4 << REG_GX_VRAMCNT_D_MST_SHIFT) | (1 << REG_GX_VRAMCNT_D_E_SHIFT) -} GX_VRAMCNT_D; - -typedef enum { - GX_VRAMCNT_E_DISABLE = 0, - GX_VRAMCNT_E_LCDC_0x06880000 = - (0 << REG_GX_VRAMCNT_E_MST_SHIFT) | (1 << REG_GX_VRAMCNT_E_E_SHIFT), - GX_VRAMCNT_E_BG_0x06000000 = - (1 << REG_GX_VRAMCNT_E_MST_SHIFT) | (1 << REG_GX_VRAMCNT_E_E_SHIFT), - GX_VRAMCNT_E_OBJ_0x06400000 = - (2 << REG_GX_VRAMCNT_E_MST_SHIFT) | (1 << REG_GX_VRAMCNT_E_E_SHIFT), - GX_VRAMCNT_E_TEXPLTT_0123 = (3 << REG_GX_VRAMCNT_E_MST_SHIFT) | (1 << REG_GX_VRAMCNT_E_E_SHIFT), - GX_VRAMCNT_E_BGEXTPLTT_0123 = - (4 << REG_GX_VRAMCNT_E_MST_SHIFT) | (1 << REG_GX_VRAMCNT_E_E_SHIFT) -} GX_VRAMCNT_E; - -typedef enum { - GX_VRAMCNT_F_DISABLE = 0, - GX_VRAMCNT_F_LCDC_0x06890000 = - (0 << REG_GX_VRAMCNT_F_MST_SHIFT) | (0 << REG_GX_VRAMCNT_F_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_F_E_SHIFT), - GX_VRAMCNT_F_BG_0x06000000 = - (1 << REG_GX_VRAMCNT_F_MST_SHIFT) | (0 << REG_GX_VRAMCNT_F_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_F_E_SHIFT), - GX_VRAMCNT_F_BG_0x06004000 = - (1 << REG_GX_VRAMCNT_F_MST_SHIFT) | (1 << REG_GX_VRAMCNT_F_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_F_E_SHIFT), - GX_VRAMCNT_F_BG_0x06010000 = - (1 << REG_GX_VRAMCNT_F_MST_SHIFT) | (2 << REG_GX_VRAMCNT_F_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_F_E_SHIFT), - GX_VRAMCNT_F_BG_0x06014000 = - (1 << REG_GX_VRAMCNT_F_MST_SHIFT) | (3 << REG_GX_VRAMCNT_F_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_F_E_SHIFT), - GX_VRAMCNT_F_OBJ_0x06400000 = - (2 << REG_GX_VRAMCNT_F_MST_SHIFT) | (0 << REG_GX_VRAMCNT_F_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_F_E_SHIFT), - GX_VRAMCNT_F_OBJ_0x06404000 = - (2 << REG_GX_VRAMCNT_F_MST_SHIFT) | (1 << REG_GX_VRAMCNT_F_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_F_E_SHIFT), - GX_VRAMCNT_F_OBJ_0x06410000 = - (2 << REG_GX_VRAMCNT_F_MST_SHIFT) | (2 << REG_GX_VRAMCNT_F_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_F_E_SHIFT), - GX_VRAMCNT_F_OBJ_0x06414000 = - (2 << REG_GX_VRAMCNT_F_MST_SHIFT) | (3 << REG_GX_VRAMCNT_F_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_F_E_SHIFT), - GX_VRAMCNT_F_TEXPLTT_0 = - (3 << REG_GX_VRAMCNT_F_MST_SHIFT) | (0 << REG_GX_VRAMCNT_F_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_F_E_SHIFT), - GX_VRAMCNT_F_TEXPLTT_1 = - (3 << REG_GX_VRAMCNT_F_MST_SHIFT) | (1 << REG_GX_VRAMCNT_F_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_F_E_SHIFT), - GX_VRAMCNT_F_TEXPLTT_4 = - (3 << REG_GX_VRAMCNT_F_MST_SHIFT) | (2 << REG_GX_VRAMCNT_F_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_F_E_SHIFT), - GX_VRAMCNT_F_TEXPLTT_5 = - (3 << REG_GX_VRAMCNT_F_MST_SHIFT) | (3 << REG_GX_VRAMCNT_F_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_F_E_SHIFT), - GX_VRAMCNT_F_BGEXTPLTT_01 = - (4 << REG_GX_VRAMCNT_F_MST_SHIFT) | (0 << REG_GX_VRAMCNT_F_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_F_E_SHIFT), - GX_VRAMCNT_F_BGEXTPLTT_23 = - (4 << REG_GX_VRAMCNT_F_MST_SHIFT) | (1 << REG_GX_VRAMCNT_F_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_F_E_SHIFT), - GX_VRAMCNT_F_OBJEXTPLTT = - (5 << REG_GX_VRAMCNT_F_MST_SHIFT) | (0 << REG_GX_VRAMCNT_F_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_F_E_SHIFT) -} GX_VRAMCNT_F; - -typedef enum { - GX_VRAMCNT_G_DISABLE = 0, - GX_VRAMCNT_G_LCDC_0x06894000 = - (0 << REG_GX_VRAMCNT_G_MST_SHIFT) | (0 << REG_GX_VRAMCNT_G_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_G_E_SHIFT), - GX_VRAMCNT_G_BG_0x06000000 = - (1 << REG_GX_VRAMCNT_G_MST_SHIFT) | (0 << REG_GX_VRAMCNT_G_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_G_E_SHIFT), - GX_VRAMCNT_G_BG_0x06004000 = - (1 << REG_GX_VRAMCNT_G_MST_SHIFT) | (1 << REG_GX_VRAMCNT_G_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_G_E_SHIFT), - GX_VRAMCNT_G_BG_0x06010000 = - (1 << REG_GX_VRAMCNT_G_MST_SHIFT) | (2 << REG_GX_VRAMCNT_G_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_G_E_SHIFT), - GX_VRAMCNT_G_BG_0x06014000 = - (1 << REG_GX_VRAMCNT_G_MST_SHIFT) | (3 << REG_GX_VRAMCNT_G_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_G_E_SHIFT), - GX_VRAMCNT_G_OBJ_0x06400000 = - (2 << REG_GX_VRAMCNT_G_MST_SHIFT) | (0 << REG_GX_VRAMCNT_G_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_G_E_SHIFT), - GX_VRAMCNT_G_OBJ_0x06404000 = - (2 << REG_GX_VRAMCNT_G_MST_SHIFT) | (1 << REG_GX_VRAMCNT_G_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_G_E_SHIFT), - GX_VRAMCNT_G_OBJ_0x06410000 = - (2 << REG_GX_VRAMCNT_G_MST_SHIFT) | (2 << REG_GX_VRAMCNT_G_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_G_E_SHIFT), - GX_VRAMCNT_G_OBJ_0x06414000 = - (2 << REG_GX_VRAMCNT_G_MST_SHIFT) | (3 << REG_GX_VRAMCNT_G_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_G_E_SHIFT), - GX_VRAMCNT_G_TEXPLTT_0 = - (3 << REG_GX_VRAMCNT_G_MST_SHIFT) | (0 << REG_GX_VRAMCNT_G_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_G_E_SHIFT), - GX_VRAMCNT_G_TEXPLTT_1 = - (3 << REG_GX_VRAMCNT_G_MST_SHIFT) | (1 << REG_GX_VRAMCNT_G_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_G_E_SHIFT), - GX_VRAMCNT_G_TEXPLTT_4 = - (3 << REG_GX_VRAMCNT_G_MST_SHIFT) | (2 << REG_GX_VRAMCNT_G_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_G_E_SHIFT), - GX_VRAMCNT_G_TEXPLTT_5 = - (3 << REG_GX_VRAMCNT_G_MST_SHIFT) | (3 << REG_GX_VRAMCNT_G_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_G_E_SHIFT), - GX_VRAMCNT_G_BGEXTPLTT_01 = - (4 << REG_GX_VRAMCNT_G_MST_SHIFT) | (0 << REG_GX_VRAMCNT_G_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_G_E_SHIFT), - GX_VRAMCNT_G_BGEXTPLTT_23 = - (4 << REG_GX_VRAMCNT_G_MST_SHIFT) | (1 << REG_GX_VRAMCNT_G_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_G_E_SHIFT), - GX_VRAMCNT_G_OBJEXTPLTT = - (5 << REG_GX_VRAMCNT_G_MST_SHIFT) | (0 << REG_GX_VRAMCNT_G_OFS_SHIFT) | (1 << - REG_GX_VRAMCNT_G_E_SHIFT) -} GX_VRAMCNT_G; - -typedef enum { - GX_VRAMCNT_H_DISABLE = 0, - GX_VRAMCNT_H_LCDC_0x06898000 = - (0 << REG_GX_VRAMCNT_H_MST_SHIFT) | (1 << REG_GX_VRAMCNT_H_E_SHIFT), - GX_VRAMCNT_H_SUBBG_0x06200000 = - (1 << REG_GX_VRAMCNT_H_MST_SHIFT) | (1 << REG_GX_VRAMCNT_H_E_SHIFT), - GX_VRAMCNT_H_SUBBGEXTPLTT_0123 = - (2 << REG_GX_VRAMCNT_H_MST_SHIFT) | (1 << REG_GX_VRAMCNT_H_E_SHIFT) -} GX_VRAMCNT_H; - -typedef enum { - GX_VRAMCNT_I_DISABLE = 0, - GX_VRAMCNT_I_LCDC_0x068A0000 = - (0 << REG_GX_VRAMCNT_I_MST_SHIFT) | (1 << REG_GX_VRAMCNT_I_E_SHIFT), - GX_VRAMCNT_I_SUBBG_0x06208000 = - (1 << REG_GX_VRAMCNT_I_MST_SHIFT) | (1 << REG_GX_VRAMCNT_I_E_SHIFT), - GX_VRAMCNT_I_SUBOBJ_0x06600000 = - (2 << REG_GX_VRAMCNT_I_MST_SHIFT) | (1 << REG_GX_VRAMCNT_I_E_SHIFT), - GX_VRAMCNT_I_SUBOBJEXTPLTT = (3 << REG_GX_VRAMCNT_I_MST_SHIFT) | (1 << REG_GX_VRAMCNT_I_E_SHIFT) -} GX_VRAMCNT_I; - -#ifdef SDK_CW_WARNOFF_SAFESTRB -#include -#endif - -static void GX_VRAMCNT_SetLCDC_ (int lcdc) { - if (lcdc & GX_VRAM_LCDC_A) { - reg_GX_VRAMCNT_A = (u8)GX_VRAMCNT_A_LCDC_0x06800000; - } - if (lcdc & GX_VRAM_LCDC_B) { - reg_GX_VRAMCNT_B = (u8)GX_VRAMCNT_B_LCDC_0x06820000; - } - if (lcdc & GX_VRAM_LCDC_C) { - reg_GX_VRAMCNT_C = (u8)GX_VRAMCNT_C_LCDC_0x06840000; - } - if (lcdc & GX_VRAM_LCDC_D) { - reg_GX_VRAMCNT_D = (u8)GX_VRAMCNT_D_LCDC_0x06860000; - } - if (lcdc & GX_VRAM_LCDC_E) { - reg_GX_VRAMCNT_E = (u8)GX_VRAMCNT_E_LCDC_0x06880000; - } - if (lcdc & GX_VRAM_LCDC_F) { - reg_GX_VRAMCNT_F = (u8)GX_VRAMCNT_F_LCDC_0x06890000; - } - if (lcdc & GX_VRAM_LCDC_G) { - reg_GX_VRAMCNT_G = (u8)GX_VRAMCNT_G_LCDC_0x06894000; - } - if (lcdc & GX_VRAM_LCDC_H) { - reg_GX_VRAMCNT_H = (u8)GX_VRAMCNT_H_LCDC_0x06898000; - } - if (lcdc & GX_VRAM_LCDC_I) { - reg_GX_VRAMCNT_I = (u8)GX_VRAMCNT_I_LCDC_0x068A0000; - } -} - -static inline void GX_VRAMCNT_SetBG_ (GXVRamBG bg) { - switch (bg) { - case GX_VRAM_BG_128_D: - reg_GX_VRAMCNT_D = (u8)GX_VRAMCNT_D_BG_0x06000000; - break; - - case GX_VRAM_BG_256_CD: - reg_GX_VRAMCNT_D = (u8)GX_VRAMCNT_D_BG_0x06020000; - - case GX_VRAM_BG_128_C: - reg_GX_VRAMCNT_C = (u8)GX_VRAMCNT_C_BG_0x06000000; - break; - - case GX_VRAM_BG_384_BCD: - reg_GX_VRAMCNT_D = (u8)GX_VRAMCNT_D_BG_0x06040000; - - case GX_VRAM_BG_256_BC: - reg_GX_VRAMCNT_C = (u8)GX_VRAMCNT_C_BG_0x06020000; - - case GX_VRAM_BG_128_B: - reg_GX_VRAMCNT_B = (u8)GX_VRAMCNT_B_BG_0x06000000; - break; - - case GX_VRAM_BG_512_ABCD: - reg_GX_VRAMCNT_D = (u8)GX_VRAMCNT_D_BG_0x06060000; - - case GX_VRAM_BG_384_ABC: - reg_GX_VRAMCNT_C = (u8)GX_VRAMCNT_C_BG_0x06040000; - - case GX_VRAM_BG_256_AB: - reg_GX_VRAMCNT_B = (u8)GX_VRAMCNT_B_BG_0x06020000; - - case GX_VRAM_BG_128_A: - reg_GX_VRAMCNT_A = (u8)GX_VRAMCNT_A_BG_0x06000000; - - case GX_VRAM_BG_NONE: - break; - - case GX_VRAM_BG_384_ABD: - reg_GX_VRAMCNT_A = (u8)GX_VRAMCNT_A_BG_0x06000000; - reg_GX_VRAMCNT_B = (u8)GX_VRAMCNT_B_BG_0x06020000; - reg_GX_VRAMCNT_D = (u8)GX_VRAMCNT_D_BG_0x06040000; - break; - - case GX_VRAM_BG_384_ACD: - reg_GX_VRAMCNT_D = (u8)GX_VRAMCNT_D_BG_0x06040000; - - case GX_VRAM_BG_256_AC: - reg_GX_VRAMCNT_A = (u8)GX_VRAMCNT_A_BG_0x06000000; - reg_GX_VRAMCNT_C = (u8)GX_VRAMCNT_C_BG_0x06020000; - break; - - case GX_VRAM_BG_256_AD: - reg_GX_VRAMCNT_A = (u8)GX_VRAMCNT_A_BG_0x06000000; - reg_GX_VRAMCNT_D = (u8)GX_VRAMCNT_D_BG_0x06020000; - break; - - case GX_VRAM_BG_256_BD: - reg_GX_VRAMCNT_B = (u8)GX_VRAMCNT_B_BG_0x06000000; - reg_GX_VRAMCNT_D = (u8)GX_VRAMCNT_D_BG_0x06020000; - break; - - case GX_VRAM_BG_96_EFG: - reg_GX_VRAMCNT_G = (u8)GX_VRAMCNT_G_BG_0x06014000; - - case GX_VRAM_BG_80_EF: - reg_GX_VRAMCNT_F = (u8)GX_VRAMCNT_F_BG_0x06010000; - - case GX_VRAM_BG_64_E: - reg_GX_VRAMCNT_E = (u8)GX_VRAMCNT_E_BG_0x06000000; - break; - - case GX_VRAM_BG_80_EG: - reg_GX_VRAMCNT_G = (u8)GX_VRAMCNT_G_BG_0x06010000; - reg_GX_VRAMCNT_E = (u8)GX_VRAMCNT_E_BG_0x06000000; - break; - - case GX_VRAM_BG_32_FG: - reg_GX_VRAMCNT_G = (u8)GX_VRAMCNT_G_BG_0x06004000; - - case GX_VRAM_BG_16_F: - reg_GX_VRAMCNT_F = (u8)GX_VRAMCNT_F_BG_0x06000000; - break; - - case GX_VRAM_BG_16_G: - reg_GX_VRAMCNT_G = (u8)GX_VRAMCNT_G_BG_0x06000000; - break; - - default: - SDK_INTERNAL_ERROR("unknown GXVRamBG, 0x%x specified.", bg); - break; - } -} - -static inline void GX_VRAMCNT_SetBGEx1_ (GXVRamBG bg) { - switch (bg) { - case GX_VRAM_BG_96_EFG: - reg_GX_VRAMCNT_G = (u8)GX_VRAMCNT_G_BG_0x06014000; - - case GX_VRAM_BG_80_EF: - reg_GX_VRAMCNT_F = (u8)GX_VRAMCNT_F_BG_0x06010000; - - case GX_VRAM_BG_64_E: - reg_GX_VRAMCNT_E = (u8)GX_VRAMCNT_E_BG_0x06000000; - break; - - case GX_VRAM_BG_80_EG: - reg_GX_VRAMCNT_G = (u8)GX_VRAMCNT_G_BG_0x06010000; - reg_GX_VRAMCNT_E = (u8)GX_VRAMCNT_E_BG_0x06000000; - break; - - case GX_VRAM_BG_32_FG: - reg_GX_VRAMCNT_G = (u8)GX_VRAMCNT_G_BG_0x06004000; - - case GX_VRAM_BG_16_F: - reg_GX_VRAMCNT_F = (u8)GX_VRAMCNT_F_BG_0x06000000; - break; - - case GX_VRAM_BG_16_G: - reg_GX_VRAMCNT_G = (u8)GX_VRAMCNT_G_BG_0x06000000; - break; - - default: - SDK_INTERNAL_ERROR("unknown GXVRamBG, 0x%x specified.", bg); - break; - } -} - -static inline void GX_VRAMCNT_SetBGEx2_ (GXVRamBG bg) { - switch (bg) { - case GX_VRAM_BG_128_D: - reg_GX_VRAMCNT_D = (u8)GX_VRAMCNT_D_BG_0x06020000; - break; - - case GX_VRAM_BG_256_CD: - reg_GX_VRAMCNT_D = (u8)GX_VRAMCNT_D_BG_0x06040000; - - case GX_VRAM_BG_128_C: - reg_GX_VRAMCNT_C = (u8)GX_VRAMCNT_C_BG_0x06020000; - break; - - case GX_VRAM_BG_384_BCD: - reg_GX_VRAMCNT_D = (u8)GX_VRAMCNT_D_BG_0x06060000; - - case GX_VRAM_BG_256_BC: - reg_GX_VRAMCNT_C = (u8)GX_VRAMCNT_C_BG_0x06040000; - - case GX_VRAM_BG_128_B: - reg_GX_VRAMCNT_B = (u8)GX_VRAMCNT_B_BG_0x06020000; - break; - - case GX_VRAM_BG_384_ABC: - reg_GX_VRAMCNT_C = (u8)GX_VRAMCNT_C_BG_0x06060000; - - case GX_VRAM_BG_256_AB: - reg_GX_VRAMCNT_B = (u8)GX_VRAMCNT_B_BG_0x06040000; - - case GX_VRAM_BG_128_A: - reg_GX_VRAMCNT_A = (u8)GX_VRAMCNT_A_BG_0x06020000; - - case GX_VRAM_BG_NONE: - break; - - case GX_VRAM_BG_384_ABD: - reg_GX_VRAMCNT_A = (u8)GX_VRAMCNT_A_BG_0x06020000; - reg_GX_VRAMCNT_B = (u8)GX_VRAMCNT_B_BG_0x06040000; - reg_GX_VRAMCNT_D = (u8)GX_VRAMCNT_D_BG_0x06060000; - break; - - case GX_VRAM_BG_384_ACD: - reg_GX_VRAMCNT_D = (u8)GX_VRAMCNT_D_BG_0x06060000; - - case GX_VRAM_BG_256_AC: - reg_GX_VRAMCNT_A = (u8)GX_VRAMCNT_A_BG_0x06020000; - reg_GX_VRAMCNT_C = (u8)GX_VRAMCNT_C_BG_0x06040000; - break; - - case GX_VRAM_BG_256_AD: - reg_GX_VRAMCNT_A = (u8)GX_VRAMCNT_A_BG_0x06020000; - reg_GX_VRAMCNT_D = (u8)GX_VRAMCNT_D_BG_0x06040000; - break; - - case GX_VRAM_BG_256_BD: - reg_GX_VRAMCNT_B = (u8)GX_VRAMCNT_B_BG_0x06020000; - reg_GX_VRAMCNT_D = (u8)GX_VRAMCNT_D_BG_0x06040000; - break; - - default: - SDK_INTERNAL_ERROR("unknown GXVRamBG, 0x%x specified.", bg); - break; - } -} - -static inline void GX_VRAMCNT_SetOBJ_ (GXVRamOBJ obj) { - switch (obj) { - case GX_VRAM_OBJ_256_AB: - reg_GX_VRAMCNT_B = (u8)GX_VRAMCNT_B_OBJ_0x06420000; - - case GX_VRAM_OBJ_128_A: - reg_GX_VRAMCNT_A = (u8)GX_VRAMCNT_A_OBJ_0x06400000; - - case GX_VRAM_OBJ_NONE: - break; - - case GX_VRAM_OBJ_128_B: - reg_GX_VRAMCNT_B = (u8)GX_VRAMCNT_B_OBJ_0x06400000; - break; - - case GX_VRAM_OBJ_96_EFG: - reg_GX_VRAMCNT_G = (u8)GX_VRAMCNT_G_OBJ_0x06414000; - - case GX_VRAM_OBJ_80_EF: - reg_GX_VRAMCNT_F = (u8)GX_VRAMCNT_F_OBJ_0x06410000; - - case GX_VRAM_OBJ_64_E: - reg_GX_VRAMCNT_E = (u8)GX_VRAMCNT_E_OBJ_0x06400000; - break; - - case GX_VRAM_OBJ_80_EG: - reg_GX_VRAMCNT_G = (u8)GX_VRAMCNT_G_OBJ_0x06410000; - reg_GX_VRAMCNT_E = (u8)GX_VRAMCNT_E_OBJ_0x06400000; - break; - - case GX_VRAM_OBJ_32_FG: - reg_GX_VRAMCNT_G = (u8)GX_VRAMCNT_G_OBJ_0x06404000; - - case GX_VRAM_OBJ_16_F: - reg_GX_VRAMCNT_F = (u8)GX_VRAMCNT_F_OBJ_0x06400000; - break; - - case GX_VRAM_OBJ_16_G: - reg_GX_VRAMCNT_G = (u8)GX_VRAMCNT_G_OBJ_0x06400000; - break; - - default: - SDK_INTERNAL_ERROR("unknown GXVRamOBJ, 0x%x specified.", obj); - break; - } -} - -static inline void GX_VRAMCNT_SetARM7_ (GXVRamARM7 arm7) { - switch (arm7) { - case GX_VRAM_ARM7_256_CD: - reg_GX_VRAMCNT_D = (u8)GX_VRAMCNT_D_ARM7_0x06020000; - reg_GX_VRAMCNT_C = (u8)GX_VRAMCNT_C_ARM7_0x06000000; - break; - case GX_VRAM_ARM7_128_C: - reg_GX_VRAMCNT_C = (u8)GX_VRAMCNT_C_ARM7_0x06000000; - break; - case GX_VRAM_ARM7_128_D: - reg_GX_VRAMCNT_D = (u8)GX_VRAMCNT_D_ARM7_0x06000000; - - case GX_VRAM_ARM7_NONE: - break; - - default: - SDK_INTERNAL_ERROR("unknown GXVRamARM7, 0x%x specified.", arm7); - break; - } -} - -static inline void texOn_ () { - reg_G3X_DISP3DCNT = (u16)((reg_G3X_DISP3DCNT & - ~(REG_G3X_DISP3DCNT_RO_MASK | REG_G3X_DISP3DCNT_GO_MASK)) | - REG_G3X_DISP3DCNT_TME_MASK); -} - -static inline void texOff_ () { - reg_G3X_DISP3DCNT &= (u16) ~(REG_G3X_DISP3DCNT_TME_MASK | - REG_G3X_DISP3DCNT_RO_MASK | REG_G3X_DISP3DCNT_GO_MASK); -} - -static inline void GX_VRAMCNT_SetTEX_ (GXVRamTex tex) { - if (tex == GX_VRAM_TEX_NONE) { - texOff_(); - return; - } - texOn_(); - - switch (tex) { - case GX_VRAM_TEX_01_AC: - reg_GX_VRAMCNT_A = (u8)GX_VRAMCNT_A_TEX_0; - reg_GX_VRAMCNT_C = (u8)GX_VRAMCNT_C_TEX_1; - break; - - case GX_VRAM_TEX_01_AD: - reg_GX_VRAMCNT_A = (u8)GX_VRAMCNT_A_TEX_0; - reg_GX_VRAMCNT_D = (u8)GX_VRAMCNT_D_TEX_1; - break; - - case GX_VRAM_TEX_01_BD: - reg_GX_VRAMCNT_B = (u8)GX_VRAMCNT_B_TEX_0; - reg_GX_VRAMCNT_D = (u8)GX_VRAMCNT_D_TEX_1; - break; - - case GX_VRAM_TEX_012_ABD: - reg_GX_VRAMCNT_A = (u8)GX_VRAMCNT_A_TEX_0; - reg_GX_VRAMCNT_B = (u8)GX_VRAMCNT_B_TEX_1; - reg_GX_VRAMCNT_D = (u8)GX_VRAMCNT_D_TEX_2; - break; - - case GX_VRAM_TEX_012_ACD: - reg_GX_VRAMCNT_A = (u8)GX_VRAMCNT_A_TEX_0; - reg_GX_VRAMCNT_C = (u8)GX_VRAMCNT_C_TEX_1; - reg_GX_VRAMCNT_D = (u8)GX_VRAMCNT_D_TEX_2; - break; - - case GX_VRAM_TEX_0_D: - reg_GX_VRAMCNT_D = (u8)GX_VRAMCNT_D_TEX_0; - break; - - case GX_VRAM_TEX_01_CD: - reg_GX_VRAMCNT_D = (u8)GX_VRAMCNT_D_TEX_1; - - case GX_VRAM_TEX_0_C: - reg_GX_VRAMCNT_C = (u8)GX_VRAMCNT_C_TEX_0; - break; - - case GX_VRAM_TEX_012_BCD: - reg_GX_VRAMCNT_D = (u8)GX_VRAMCNT_D_TEX_2; - - case GX_VRAM_TEX_01_BC: - reg_GX_VRAMCNT_C = (u8)GX_VRAMCNT_C_TEX_1; - - case GX_VRAM_TEX_0_B: - reg_GX_VRAMCNT_B = (u8)GX_VRAMCNT_B_TEX_0; - break; - - case GX_VRAM_TEX_0123_ABCD: - reg_GX_VRAMCNT_D = (u8)GX_VRAMCNT_D_TEX_3; - - case GX_VRAM_TEX_012_ABC: - reg_GX_VRAMCNT_C = (u8)GX_VRAMCNT_C_TEX_2; - - case GX_VRAM_TEX_01_AB: - reg_GX_VRAMCNT_B = (u8)GX_VRAMCNT_B_TEX_1; - - case GX_VRAM_TEX_0_A: - reg_GX_VRAMCNT_A = (u8)GX_VRAMCNT_A_TEX_0; - break; - default: - SDK_INTERNAL_ERROR("unknown GXVRamTex, 0x%x specified.", tex); - break; - } -} - -static inline void clearImageOn_ () { - reg_G3X_DISP3DCNT |= REG_G3X_DISP3DCNT_PRI_MASK; -} - -static inline void clearImageOff_ () { - reg_G3X_DISP3DCNT &= ~REG_G3X_DISP3DCNT_PRI_MASK; -} - -static inline void GX_VRAMCNT_SetCLRIMG_ (GXVRamClearImage clrImg) { - switch (clrImg) { - case GX_VRAM_CLEARIMAGE_256_AB: - reg_GX_VRAMCNT_A = (u8)GX_VRAMCNT_A_TEX_2; - - case GX_VRAM_CLEARDEPTH_128_B: - reg_GX_VRAMCNT_B = (u8)GX_VRAMCNT_B_TEX_3; - clearImageOn_(); - break; - - case GX_VRAM_CLEARIMAGE_256_CD: - reg_GX_VRAMCNT_C = (u8)GX_VRAMCNT_C_TEX_2; - - case GX_VRAM_CLEARDEPTH_128_D: - reg_GX_VRAMCNT_D = (u8)GX_VRAMCNT_D_TEX_3; - clearImageOn_(); - break; - - case GX_VRAM_CLEARIMAGE_NONE: - clearImageOff_(); - break; - - case GX_VRAM_CLEARDEPTH_128_A: - reg_GX_VRAMCNT_A = (u8)GX_VRAMCNT_A_TEX_3; - clearImageOn_(); - break; - - case GX_VRAM_CLEARDEPTH_128_C: - reg_GX_VRAMCNT_C = (u8)GX_VRAMCNT_C_TEX_3; - clearImageOn_(); - break; - - default: - SDK_INTERNAL_ERROR("unknown GXVRamClearImage, 0x%x specified.", clrImg); - break; - } -} - -static inline void GX_VRAMCNT_SetTEXPLTT_ (GXVRamTexPltt texPltt) { - switch (texPltt) { - case GX_VRAM_TEXPLTT_01_FG: - reg_GX_VRAMCNT_G = (u8)GX_VRAMCNT_G_TEXPLTT_1; - - case GX_VRAM_TEXPLTT_0_F: - reg_GX_VRAMCNT_F = (u8)GX_VRAMCNT_F_TEXPLTT_0; - break; - - case GX_VRAM_TEXPLTT_0_G: - reg_GX_VRAMCNT_G = (u8)GX_VRAMCNT_G_TEXPLTT_0; - break; - - case GX_VRAM_TEXPLTT_012345_EFG: - reg_GX_VRAMCNT_G = (u8)GX_VRAMCNT_G_TEXPLTT_5; - - case GX_VRAM_TEXPLTT_01234_EF: - reg_GX_VRAMCNT_F = (u8)GX_VRAMCNT_F_TEXPLTT_4; - - case GX_VRAM_TEXPLTT_0123_E: - reg_GX_VRAMCNT_E = (u8)GX_VRAMCNT_E_TEXPLTT_0123; - break; - - case GX_VRAM_TEXPLTT_NONE: - break; - - default: - SDK_INTERNAL_ERROR("unknown GXVRamTexPltt, 0x%x specified.", texPltt); - break; - } -} - -static inline void bgExtPlttOn_ () { - reg_GX_DISPCNT |= REG_GX_DISPCNT_BG_MASK; -} - -static inline void bgExtPlttOff_ () { - reg_GX_DISPCNT &= ~REG_GX_DISPCNT_BG_MASK; -} - -static inline void GX_VRAMCNT_SetBGEXTPLTT_ (GXVRamBGExtPltt bgExtPltt) { - switch (bgExtPltt) { - case GX_VRAM_BGEXTPLTT_0123_E: - bgExtPlttOn_(); - reg_GX_VRAMCNT_E = (u8)GX_VRAMCNT_E_BGEXTPLTT_0123; - break; - - case GX_VRAM_BGEXTPLTT_23_G: - bgExtPlttOn_(); - reg_GX_VRAMCNT_G = (u8)GX_VRAMCNT_G_BGEXTPLTT_23; - break; - - case GX_VRAM_BGEXTPLTT_0123_FG: - reg_GX_VRAMCNT_G = (u8)GX_VRAMCNT_G_BGEXTPLTT_23; - - case GX_VRAM_BGEXTPLTT_01_F: - reg_GX_VRAMCNT_F = (u8)GX_VRAMCNT_F_BGEXTPLTT_01; - bgExtPlttOn_(); - break; - - case GX_VRAM_BGEXTPLTT_NONE: - bgExtPlttOff_(); - break; - - default: - SDK_INTERNAL_ERROR("unknown GXVRamBGExtPltt, 0x%x specified.", bgExtPltt); - break; - } -} - -static inline void objExtPlttOn_ () { - reg_GX_DISPCNT |= REG_GX_DISPCNT_O_MASK; -} - -static inline void objExtPlttOff_ () { - reg_GX_DISPCNT &= ~REG_GX_DISPCNT_O_MASK; -} - -static inline void GX_VRAMCNT_SetOBJEXTPLTT_ (GXVRamOBJExtPltt objExtPltt) { - switch (objExtPltt) { - case GX_VRAM_OBJEXTPLTT_0_F: - objExtPlttOn_(); - reg_GX_VRAMCNT_F = (u8)GX_VRAMCNT_F_OBJEXTPLTT; - break; - - case GX_VRAM_OBJEXTPLTT_0_G: - objExtPlttOn_(); - reg_GX_VRAMCNT_G = (u8)GX_VRAMCNT_G_OBJEXTPLTT; - break; - - case GX_VRAM_OBJEXTPLTT_NONE: - objExtPlttOff_(); - break; - - default: - SDK_INTERNAL_ERROR("unknown GXVRamOBJExtPltt, 0x%x specified.", objExtPltt); - break; - } -} - -static inline void GX_VRAMCNT_SetSubBG_ (GXVRamSubBG bg) { - switch (bg) { - case GX_VRAM_SUB_BG_128_C: - reg_GX_VRAMCNT_C = GX_VRAMCNT_C_SUBBG_0x06200000; - break; - - case GX_VRAM_SUB_BG_48_HI: - reg_GX_VRAMCNT_I = GX_VRAMCNT_I_SUBBG_0x06208000; - - case GX_VRAM_SUB_BG_32_H: - reg_GX_VRAMCNT_H = GX_VRAMCNT_H_SUBBG_0x06200000; - break; - - case GX_VRAM_SUB_BG_NONE: - break; - - default: - SDK_INTERNAL_ERROR("unknown GXVRamSubBG, 0x%x specified.", bg); - break; - } -} - -static inline void GX_VRAMCNT_SetSubOBJ_ (GXVRamSubOBJ obj) { - switch (obj) { - case GX_VRAM_SUB_OBJ_128_D: - reg_GX_VRAMCNT_D = GX_VRAMCNT_D_SUBOBJ_0x06600000; - break; - - case GX_VRAM_SUB_OBJ_16_I: - reg_GX_VRAMCNT_I = GX_VRAMCNT_I_SUBOBJ_0x06600000; - break; - - case GX_VRAM_SUB_OBJ_NONE: - break; - - default: - SDK_INTERNAL_ERROR("unknown GXVRamSubOBJ, 0x%x specified.", obj); - break; - } -} - -static inline void subBGExtPlttOn_ () { - reg_GXS_DB_DISPCNT |= REG_GXS_DB_DISPCNT_BG_MASK; -} - -static inline void subBGExtPlttOff_ () { - reg_GXS_DB_DISPCNT &= ~REG_GXS_DB_DISPCNT_BG_MASK; -} - -static inline void GX_VRAMCNT_SetSubBGExtPltt_ (GXVRamSubBGExtPltt bgExtPltt) { - switch (bgExtPltt) { - case GX_VRAM_SUB_BGEXTPLTT_0123_H: - subBGExtPlttOn_(); - reg_GX_VRAMCNT_H = GX_VRAMCNT_H_SUBBGEXTPLTT_0123; - break; - - case GX_VRAM_SUB_BGEXTPLTT_NONE: - subBGExtPlttOff_(); - break; - - default: - SDK_INTERNAL_ERROR("unknown GXVRamSubBGExtPltt, 0x%x specified.", bgExtPltt); - break; - } -} - -static inline void subOBJExtPlttOn_ () { - reg_GXS_DB_DISPCNT |= REG_GXS_DB_DISPCNT_O_MASK; -} - -static inline void subOBJExtPlttOff_ () { - reg_GXS_DB_DISPCNT &= ~REG_GXS_DB_DISPCNT_O_MASK; -} - -static inline void GX_VRAMCNT_SetSubOBJExtPltt_ (GXVRamSubOBJExtPltt objExtPltt) { - switch (objExtPltt) { - case GX_VRAM_SUB_OBJEXTPLTT_0_I: - subOBJExtPlttOn_(); - reg_GX_VRAMCNT_I = GX_VRAMCNT_I_SUBOBJEXTPLTT; - break; - - case GX_VRAM_SUB_OBJEXTPLTT_NONE: - subOBJExtPlttOff_(); - break; - } -} - -extern vu16 GXi_VRamLockId; - -static void GxCheckExclusive (u16 vramMap) { - if (!OSi_TryLockVram(vramMap, GXi_VRamLockId)) { - OS_Panic("VRAM bank is locked by another library.\n"); - } -} - -static inline void GxSetBankForBG (GXVRamBG bg) { - GX_VRAM_BG_ASSERT(bg); - - gGXState.vramCnt.lcdc = (u16)(~bg & (gGXState.vramCnt.lcdc | gGXState.vramCnt.bg)); - gGXState.vramCnt.bg = bg; - - GX_StateCheck_VRAMCnt(); - - GX_VRAMCNT_SetBG_(bg); - GX_VRAMCNT_SetLCDC_(gGXState.vramCnt.lcdc); -} - -void GX_SetBankForBG (GXVRamBG bg) { -#ifndef SDK_FINALROM - GxCheckExclusive((u16)bg); -#endif - GxSetBankForBG(bg); -} - -BOOL GX_TrySetBankForBG (GXVRamBG bg) { - if (!OSi_TryLockVram((u16)bg, GXi_VRamLockId)) { - return FALSE; - } - GxSetBankForBG(bg); - return TRUE; -} - -static void GxSetBankForBGEx (GXVRamBG bg1, GXVRamBG bg2) { - GX_VRAM_BG_ASSERT_EX_1(bg1); - GX_VRAM_BG_ASSERT_EX_2(bg2); - - gGXState.vramCnt.lcdc = (u16)(~(bg1 | bg2) & (gGXState.vramCnt.lcdc | gGXState.vramCnt.bg)); - gGXState.vramCnt.bg = (u16)(bg1 | bg2); - - GX_StateCheck_VRAMCnt(); - - GX_VRAMCNT_SetBGEx1_(bg1); - GX_VRAMCNT_SetBGEx2_(bg2); - GX_VRAMCNT_SetLCDC_(gGXState.vramCnt.lcdc); -} - -void GX_SetBankForBGEx (GXVRamBG bg1, GXVRamBG bg2) { -#ifndef SDK_FINALROM - GxCheckExclusive((u16)(bg1 | bg2)); -#endif - GxSetBankForBGEx(bg1, bg2); -} - -BOOL GX_TrySetBankForBGEx (GXVRamBG bg1, GXVRamBG bg2) { - if (!OSi_TryLockVram((u16)(bg1 | bg2), GXi_VRamLockId)) { - return FALSE; - } - GxSetBankForBGEx(bg1, bg2); - return TRUE; -} - -static inline void GxSetBankForOBJ (GXVRamOBJ obj) { - GX_VRAM_OBJ_ASSERT(obj); - - gGXState.vramCnt.lcdc = (u16)(~obj & (gGXState.vramCnt.lcdc | gGXState.vramCnt.obj)); - gGXState.vramCnt.obj = obj; - - GX_StateCheck_VRAMCnt(); - - GX_VRAMCNT_SetOBJ_(obj); - GX_VRAMCNT_SetLCDC_(gGXState.vramCnt.lcdc); -} - -void GX_SetBankForOBJ (GXVRamOBJ obj) { -#ifndef SDK_FINALROM - GxCheckExclusive((u16)obj); -#endif - GxSetBankForOBJ(obj); -} - -BOOL GX_TrySetBankForOBJ (GXVRamOBJ obj) { - if (!OSi_TryLockVram((u16)obj, GXi_VRamLockId)) { - return FALSE; - } - GxSetBankForOBJ(obj); - return TRUE; -} - -static inline void GxSetBankForBGExtPltt (GXVRamBGExtPltt bgExtPltt) { - GX_VRAM_BGEXTPLTT_ASSERT(bgExtPltt); - - gGXState.vramCnt.lcdc = - (u16)(~bgExtPltt & (gGXState.vramCnt.lcdc | gGXState.vramCnt.bgExtPltt)); - gGXState.vramCnt.bgExtPltt = bgExtPltt; - - GX_StateCheck_VRAMCnt(); - - GX_VRAMCNT_SetBGEXTPLTT_(bgExtPltt); - GX_VRAMCNT_SetLCDC_(gGXState.vramCnt.lcdc); -} - -void GX_SetBankForBGExtPltt (GXVRamBGExtPltt bgExtPltt) { -#ifndef SDK_FINALROM - GxCheckExclusive((u16)bgExtPltt); -#endif - GxSetBankForBGExtPltt(bgExtPltt); -} - -BOOL GX_TrySetBankForBGExtPltt (GXVRamBGExtPltt bgExtPltt) { - if (!OSi_TryLockVram((u16)bgExtPltt, GXi_VRamLockId)) { - return FALSE; - } - GxSetBankForBGExtPltt(bgExtPltt); - return TRUE; -} - -static inline void GxSetBankForOBJExtPltt (GXVRamOBJExtPltt objExtPltt) { - GX_VRAM_OBJEXTPLTT_ASSERT(objExtPltt); - - gGXState.vramCnt.lcdc = - (u16)(~objExtPltt & (gGXState.vramCnt.lcdc | gGXState.vramCnt.objExtPltt)); - gGXState.vramCnt.objExtPltt = objExtPltt; - - GX_StateCheck_VRAMCnt(); - - GX_VRAMCNT_SetOBJEXTPLTT_(objExtPltt); - GX_VRAMCNT_SetLCDC_(gGXState.vramCnt.lcdc); -} - -void GX_SetBankForOBJExtPltt (GXVRamOBJExtPltt objExtPltt) { -#ifndef SDK_FINALROM - GxCheckExclusive((u16)objExtPltt); -#endif - GxSetBankForOBJExtPltt(objExtPltt); -} - -BOOL GX_TrySetBankForOBJExtPltt (GXVRamOBJExtPltt objExtPltt) { - if (!OSi_TryLockVram((u16)objExtPltt, GXi_VRamLockId)) { - return FALSE; - } - GxSetBankForOBJExtPltt(objExtPltt); - return TRUE; -} - -static inline void GxSetBankForTex (GXVRamTex tex) { - GX_VRAM_TEX_ASSERT(tex); - - gGXState.vramCnt.lcdc = (u16)(~tex & (gGXState.vramCnt.lcdc | gGXState.vramCnt.tex)); - gGXState.vramCnt.tex = tex; - - GX_StateCheck_VRAMCnt(); - - GX_VRAMCNT_SetTEX_(tex); - GX_VRAMCNT_SetLCDC_(gGXState.vramCnt.lcdc); -} - -void GX_SetBankForTex (GXVRamTex tex) { -#ifndef SDK_FINALROM - GxCheckExclusive((u16)tex); -#endif - GxSetBankForTex(tex); -} - -BOOL GX_TrySetBankForTex (GXVRamTex tex) { - if (!OSi_TryLockVram((u16)tex, GXi_VRamLockId)) { - return FALSE; - } - GxSetBankForTex(tex); - return TRUE; -} - -static inline void GxSetBankForTexPltt (GXVRamTexPltt texPltt) { - GX_VRAM_TEXPLTT_ASSERT(texPltt); - - gGXState.vramCnt.lcdc = (u16)(~texPltt & (gGXState.vramCnt.lcdc | gGXState.vramCnt.texPltt)); - gGXState.vramCnt.texPltt = texPltt; - - GX_StateCheck_VRAMCnt(); - - GX_VRAMCNT_SetTEXPLTT_(texPltt); - GX_VRAMCNT_SetLCDC_(gGXState.vramCnt.lcdc); -} - -void GX_SetBankForTexPltt (GXVRamTexPltt texPltt) { -#ifndef SDK_FINALROM - GxCheckExclusive((u16)texPltt); -#endif - GxSetBankForTexPltt(texPltt); -} - -BOOL GX_TrySetBankForTexPltt (GXVRamTexPltt texPltt) { - if (!OSi_TryLockVram((u16)texPltt, GXi_VRamLockId)) { - return FALSE; - } - GxSetBankForTexPltt(texPltt); - return TRUE; -} - -static inline void GxSetBankForClearImage (GXVRamClearImage clrImg) { - GX_VRAM_CLRIMG_ASSERT(clrImg); - - gGXState.vramCnt.lcdc = (u16)(~clrImg & (gGXState.vramCnt.lcdc | gGXState.vramCnt.clrImg)); - gGXState.vramCnt.clrImg = clrImg; - - GX_StateCheck_VRAMCnt(); - - GX_VRAMCNT_SetCLRIMG_(clrImg); - GX_VRAMCNT_SetLCDC_(gGXState.vramCnt.lcdc); -} - -void GX_SetBankForClearImage (GXVRamClearImage clrImg) { -#ifndef SDK_FINALROM - GxCheckExclusive((u16)clrImg); -#endif - GxSetBankForClearImage(clrImg); -} - -BOOL GX_TrySetBankForClearImage (GXVRamClearImage clrImg) { - if (!OSi_TryLockVram((u16)clrImg, GXi_VRamLockId)) { - return FALSE; - } - GxSetBankForClearImage(clrImg); - return TRUE; -} - -static inline void GxSetBankForARM7 (GXVRamARM7 arm7) { - GX_VRAM_ARM7_ASSERT(arm7); - - gGXState.vramCnt.lcdc = (u16)(~arm7 & (gGXState.vramCnt.lcdc | gGXState.vramCnt.arm7)); - gGXState.vramCnt.arm7 = arm7; - - GX_StateCheck_VRAMCnt(); - - GX_VRAMCNT_SetARM7_(arm7); - GX_VRAMCNT_SetLCDC_(gGXState.vramCnt.lcdc); -} - -void GX_SetBankForARM7 (GXVRamARM7 arm7) { -#ifndef SDK_FINALROM - GxCheckExclusive((u16)arm7); -#endif - GxSetBankForARM7(arm7); -} - -BOOL GX_TrySetBankForARM7 (GXVRamARM7 arm7) { - if (!OSi_TryLockVram((u16)arm7, GXi_VRamLockId)) { - return FALSE; - } - GxSetBankForARM7(arm7); - return TRUE; -} - -static inline void GxSetBankForLCDC (int lcdc) { - GX_VRAM_LCDC_ASSERT(lcdc); - - gGXState.vramCnt.lcdc |= lcdc; - - GX_StateCheck_VRAMCnt(); - - GX_VRAMCNT_SetLCDC_(lcdc); -} - -void GX_SetBankForLCDC (int lcdc) { -#ifndef SDK_FINALROM - GxCheckExclusive((u16)lcdc); -#endif - GxSetBankForLCDC(lcdc); -} - -BOOL GX_TrySetBankForLCDC (int lcdc) { - if (!OSi_TryLockVram((u16)lcdc, GXi_VRamLockId)) { - return FALSE; - } - GxSetBankForLCDC(lcdc); - return TRUE; -} - -static inline void GxSetBankForSubBG (GXVRamSubBG sub_bg) { - GX_VRAM_SUB_BG_ASSERT(sub_bg); - - gGXState.vramCnt.lcdc = (u16)(~sub_bg & (gGXState.vramCnt.lcdc | gGXState.vramCnt.sub_bg)); - gGXState.vramCnt.sub_bg = sub_bg; - - GX_StateCheck_VRAMCnt(); - - GX_VRAMCNT_SetSubBG_(sub_bg); - GX_VRAMCNT_SetLCDC_(gGXState.vramCnt.lcdc); -} - -void GX_SetBankForSubBG (GXVRamSubBG sub_bg) { -#ifndef SDK_FINALROM - GxCheckExclusive((u16)sub_bg); -#endif - GxSetBankForSubBG(sub_bg); -} - -BOOL GX_TrySetBankForSubBG (GXVRamSubBG sub_bg) { - if (!OSi_TryLockVram((u16)sub_bg, GXi_VRamLockId)) { - return FALSE; - } - GxSetBankForSubBG(sub_bg); - return TRUE; -} - -static inline void GxSetBankForSubOBJ (GXVRamSubOBJ sub_obj) { - GX_VRAM_SUB_OBJ_ASSERT(sub_obj); - - gGXState.vramCnt.lcdc = (u16)(~sub_obj & (gGXState.vramCnt.lcdc | gGXState.vramCnt.sub_obj)); - gGXState.vramCnt.sub_obj = sub_obj; - - GX_StateCheck_VRAMCnt(); - - GX_VRAMCNT_SetSubOBJ_(sub_obj); - GX_VRAMCNT_SetLCDC_(gGXState.vramCnt.lcdc); -} - -void GX_SetBankForSubOBJ (GXVRamSubOBJ sub_obj) { -#ifndef SDK_FINALROM - GxCheckExclusive((u16)sub_obj); -#endif - GxSetBankForSubOBJ(sub_obj); -} - -BOOL GX_TrySetBankForSubOBJ (GXVRamSubOBJ sub_obj) { - if (!OSi_TryLockVram((u16)sub_obj, GXi_VRamLockId)) { - return FALSE; - } - GxSetBankForSubOBJ(sub_obj); - return TRUE; -} - -static inline void GxSetBankForSubBGExtPltt (GXVRamSubBGExtPltt sub_bgExtPltt) { - GX_VRAM_SUB_BGEXTPLTT_ASSERT(sub_bgExtPltt); - - gGXState.vramCnt.lcdc = - (u16)(~sub_bgExtPltt & (gGXState.vramCnt.lcdc | gGXState.vramCnt.sub_bgExtPltt)); - gGXState.vramCnt.sub_bgExtPltt = sub_bgExtPltt; - - GX_StateCheck_VRAMCnt(); - - GX_VRAMCNT_SetSubBGExtPltt_(sub_bgExtPltt); - GX_VRAMCNT_SetLCDC_(gGXState.vramCnt.lcdc); -} - -void GX_SetBankForSubBGExtPltt (GXVRamSubBGExtPltt sub_bgExtPltt) { -#ifndef SDK_FINALROM - GxCheckExclusive((u16)sub_bgExtPltt); -#endif - GxSetBankForSubBGExtPltt(sub_bgExtPltt); -} - -BOOL GX_TrySetBankForSubBGExtPltt (GXVRamSubBGExtPltt sub_bgExtPltt) { - if (!OSi_TryLockVram((u16)sub_bgExtPltt, GXi_VRamLockId)) { - return FALSE; - } - GxSetBankForSubBGExtPltt(sub_bgExtPltt); - return TRUE; -} - -static inline void GxSetBankForSubOBJExtPltt (GXVRamSubOBJExtPltt sub_objExtPltt) { - GX_VRAM_SUB_OBJEXTPLTT_ASSERT(sub_objExtPltt); - - gGXState.vramCnt.lcdc = - (u16)(~sub_objExtPltt & (gGXState.vramCnt.lcdc | gGXState.vramCnt.sub_objExtPltt)); - gGXState.vramCnt.sub_objExtPltt = sub_objExtPltt; - - GX_StateCheck_VRAMCnt(); - - GX_VRAMCNT_SetSubOBJExtPltt_(sub_objExtPltt); - GX_VRAMCNT_SetLCDC_(gGXState.vramCnt.lcdc); -} - -void GX_SetBankForSubOBJExtPltt (GXVRamSubOBJExtPltt sub_objExtPltt) { -#ifndef SDK_FINALROM - GxCheckExclusive((u16)sub_objExtPltt); -#endif - GxSetBankForSubOBJExtPltt(sub_objExtPltt); -} - -BOOL GX_TrySetBankForSubOBJExtPltt (GXVRamSubOBJExtPltt sub_objExtPltt) { - if (!OSi_TryLockVram((u16)sub_objExtPltt, GXi_VRamLockId)) { - return FALSE; - } - GxSetBankForSubOBJExtPltt(sub_objExtPltt); - return TRUE; -} - -#ifdef SDK_CW_WARNOFF_SAFESTRB -#include -#endif - -static int resetBankForX_ (u16 * g3bit) { - int rval = *g3bit; - *g3bit = 0; - - gGXState.vramCnt.lcdc |= rval; - GX_VRAMCNT_SetLCDC_(rval); - - return rval; -} - -GXVRamBG GX_ResetBankForBG () { -#ifndef SDK_FINALROM - if (!OSi_TryLockVram((u16)gGXState.vramCnt.bg, GXi_VRamLockId)) { - return GX_VRAM_BG_NONE; - } -#endif - return (GXVRamBG)resetBankForX_(&gGXState.vramCnt.bg); -} - -GXVRamOBJ GX_ResetBankForOBJ () { -#ifndef SDK_FINALROM - if (!OSi_TryLockVram((u16)gGXState.vramCnt.obj, GXi_VRamLockId)) { - return GX_VRAM_OBJ_NONE; - } -#endif - return (GXVRamOBJ)resetBankForX_(&gGXState.vramCnt.obj); -} - -GXVRamBGExtPltt GX_ResetBankForBGExtPltt () { -#ifndef SDK_FINALROM - if (!OSi_TryLockVram((u16)gGXState.vramCnt.bgExtPltt, GXi_VRamLockId)) { - return GX_VRAM_BGEXTPLTT_NONE; - } -#endif - bgExtPlttOff_(); - return (GXVRamBGExtPltt)resetBankForX_(&gGXState.vramCnt.bgExtPltt); -} - -GXVRamOBJExtPltt GX_ResetBankForOBJExtPltt () { -#ifndef SDK_FINALROM - if (!OSi_TryLockVram((u16)gGXState.vramCnt.objExtPltt, GXi_VRamLockId)) { - return GX_VRAM_OBJEXTPLTT_NONE; - } -#endif - objExtPlttOff_(); - return (GXVRamOBJExtPltt)resetBankForX_(&gGXState.vramCnt.objExtPltt); -} - -GXVRamTex GX_ResetBankForTex () { -#ifndef SDK_FINALROM - if (!OSi_TryLockVram((u16)gGXState.vramCnt.tex, GXi_VRamLockId)) { - return GX_VRAM_TEX_NONE; - } -#endif - return (GXVRamTex)resetBankForX_(&gGXState.vramCnt.tex); -} - -GXVRamTexPltt GX_ResetBankForTexPltt () { -#ifndef SDK_FINALROM - if (!OSi_TryLockVram((u16)gGXState.vramCnt.texPltt, GXi_VRamLockId)) { - return GX_VRAM_TEXPLTT_NONE; - } -#endif - return (GXVRamTexPltt)resetBankForX_(&gGXState.vramCnt.texPltt); -} - -GXVRamClearImage GX_ResetBankForClearImage () { -#ifndef SDK_FINALROM - if (!OSi_TryLockVram((u16)gGXState.vramCnt.clrImg, GXi_VRamLockId)) { - return GX_VRAM_CLEARIMAGE_NONE; - } -#endif - return (GXVRamClearImage)resetBankForX_(&gGXState.vramCnt.clrImg); -} - -GXVRamARM7 GX_ResetBankForARM7 () { -#ifndef SDK_FINALROM - if (!OSi_TryLockVram((u16)gGXState.vramCnt.arm7, GXi_VRamLockId)) { - return GX_VRAM_ARM7_NONE; - } -#endif - return (GXVRamARM7)resetBankForX_(&gGXState.vramCnt.arm7); -} - -GXVRamSubBG GX_ResetBankForSubBG () { -#ifndef SDK_FINALROM - if (!OSi_TryLockVram((u16)gGXState.vramCnt.sub_bg, GXi_VRamLockId)) { - return GX_VRAM_SUB_BG_NONE; - } -#endif - return (GXVRamSubBG)resetBankForX_(&gGXState.vramCnt.sub_bg); -} - -GXVRamSubOBJ GX_ResetBankForSubOBJ () { -#ifndef SDK_FINALROM - if (!OSi_TryLockVram((u16)gGXState.vramCnt.sub_obj, GXi_VRamLockId)) { - return GX_VRAM_SUB_OBJ_NONE; - } -#endif - return (GXVRamSubOBJ)resetBankForX_(&gGXState.vramCnt.sub_obj); -} - -GXVRamSubBGExtPltt GX_ResetBankForSubBGExtPltt () { -#ifndef SDK_FINALROM - if (!OSi_TryLockVram((u16)gGXState.vramCnt.sub_bgExtPltt, GXi_VRamLockId)) { - return GX_VRAM_SUB_BGEXTPLTT_NONE; - } -#endif - subBGExtPlttOff_(); - return (GXVRamSubBGExtPltt)resetBankForX_(&gGXState.vramCnt.sub_bgExtPltt); -} - -GXVRamSubOBJExtPltt GX_ResetBankForSubOBJExtPltt () { -#ifndef SDK_FINALROM - if (!OSi_TryLockVram((u16)gGXState.vramCnt.sub_objExtPltt, GXi_VRamLockId)) { - return GX_VRAM_SUB_OBJEXTPLTT_NONE; - } -#endif - subOBJExtPlttOff_(); - return (GXVRamSubOBJExtPltt)resetBankForX_(&gGXState.vramCnt.sub_objExtPltt); -} - -#ifdef SDK_CW_WARNOFF_SAFESTRB -#include -#endif -static int disableBankForX_ (u16 * g3bit) { - int rval = *g3bit; - *g3bit = 0; - - if (rval & GX_VRAM_LCDC_A) { - reg_GX_VRAMCNT_A = 0; - } - if (rval & GX_VRAM_LCDC_B) { - reg_GX_VRAMCNT_B = 0; - } - if (rval & GX_VRAM_LCDC_C) { - reg_GX_VRAMCNT_C = 0; - } - if (rval & GX_VRAM_LCDC_D) { - reg_GX_VRAMCNT_D = 0; - } - if (rval & GX_VRAM_LCDC_E) { - reg_GX_VRAMCNT_E = 0; - } - if (rval & GX_VRAM_LCDC_F) { - reg_GX_VRAMCNT_F = 0; - } - if (rval & GX_VRAM_LCDC_G) { - reg_GX_VRAMCNT_G = 0; - } - if (rval & GX_VRAM_LCDC_H) { - reg_GX_VRAMCNT_H = 0; - } - if (rval & GX_VRAM_LCDC_I) { - reg_GX_VRAMCNT_I = 0; - } - - OSi_UnlockVram((u16)rval, GXi_VRamLockId); - - return rval; -} - -#ifdef SDK_CW_WARNOFF_SAFESTRB -#include -#endif - -GXVRamBG GX_DisableBankForBG () { -#ifndef SDK_FINALROM - if (!OSi_TryLockVram((u16)gGXState.vramCnt.bg, GXi_VRamLockId)) { - return GX_VRAM_BG_NONE; - } -#endif - return (GXVRamBG)disableBankForX_(&gGXState.vramCnt.bg); -} - -GXVRamOBJ GX_DisableBankForOBJ () { -#ifndef SDK_FINALROM - if (!OSi_TryLockVram((u16)gGXState.vramCnt.obj, GXi_VRamLockId)) { - return GX_VRAM_OBJ_NONE; - } -#endif - return (GXVRamOBJ)disableBankForX_(&gGXState.vramCnt.obj); -} - -GXVRamBGExtPltt GX_DisableBankForBGExtPltt () { -#ifndef SDK_FINALROM - if (!OSi_TryLockVram((u16)gGXState.vramCnt.bgExtPltt, GXi_VRamLockId)) { - return GX_VRAM_BGEXTPLTT_NONE; - } -#endif - bgExtPlttOff_(); - return (GXVRamBGExtPltt)disableBankForX_(&gGXState.vramCnt.bgExtPltt); -} - -GXVRamOBJExtPltt GX_DisableBankForOBJExtPltt () { -#ifndef SDK_FINALROM - if (!OSi_TryLockVram((u16)gGXState.vramCnt.objExtPltt, GXi_VRamLockId)) { - return GX_VRAM_OBJEXTPLTT_NONE; - } -#endif - objExtPlttOff_(); - return (GXVRamOBJExtPltt)disableBankForX_(&gGXState.vramCnt.objExtPltt); -} - -GXVRamTex GX_DisableBankForTex () { -#ifndef SDK_FINALROM - if (!OSi_TryLockVram((u16)gGXState.vramCnt.tex, GXi_VRamLockId)) { - return GX_VRAM_TEX_NONE; - } -#endif - return (GXVRamTex)disableBankForX_(&gGXState.vramCnt.tex); -} - -GXVRamTexPltt GX_DisableBankForTexPltt () { -#ifndef SDK_FINALROM - if (!OSi_TryLockVram((u16)gGXState.vramCnt.texPltt, GXi_VRamLockId)) { - return GX_VRAM_TEXPLTT_NONE; - } -#endif - return (GXVRamTexPltt)disableBankForX_(&gGXState.vramCnt.texPltt); -} - -GXVRamClearImage GX_DisableBankForClearImage () { -#ifndef SDK_FINALROM - if (!OSi_TryLockVram((u16)gGXState.vramCnt.clrImg, GXi_VRamLockId)) { - return GX_VRAM_CLEARIMAGE_NONE; - } -#endif - return (GXVRamClearImage)disableBankForX_(&gGXState.vramCnt.clrImg); -} - -GXVRamARM7 GX_DisableBankForARM7 () { -#ifndef SDK_FINALROM - if (!OSi_TryLockVram((u16)gGXState.vramCnt.arm7, GXi_VRamLockId)) { - return GX_VRAM_ARM7_NONE; - } -#endif - return (GXVRamARM7)disableBankForX_(&gGXState.vramCnt.arm7); -} - -GXVRamLCDC GX_DisableBankForLCDC () { -#ifndef SDK_FINALROM - if (!OSi_TryLockVram((u16)gGXState.vramCnt.lcdc, GXi_VRamLockId)) { - return GX_VRAM_LCDC_NONE; - } -#endif - return (GXVRamLCDC)disableBankForX_(&gGXState.vramCnt.lcdc); -} - -GXVRamSubBG GX_DisableBankForSubBG () { -#ifndef SDK_FINALROM - if (!OSi_TryLockVram((u16)gGXState.vramCnt.sub_bg, GXi_VRamLockId)) { - return GX_VRAM_SUB_BG_NONE; - } -#endif - return (GXVRamSubBG)disableBankForX_(&gGXState.vramCnt.sub_bg); -} - -GXVRamSubOBJ GX_DisableBankForSubOBJ () { -#ifndef SDK_FINALROM - if (!OSi_TryLockVram((u16)gGXState.vramCnt.sub_obj, GXi_VRamLockId)) { - return GX_VRAM_SUB_OBJ_NONE; - } -#endif - return (GXVRamSubOBJ)disableBankForX_(&gGXState.vramCnt.sub_obj); -} - -GXVRamSubBGExtPltt GX_DisableBankForSubBGExtPltt () { -#ifndef SDK_FINALROM - if (!OSi_TryLockVram((u16)gGXState.vramCnt.sub_bgExtPltt, GXi_VRamLockId)) { - return GX_VRAM_SUB_BGEXTPLTT_NONE; - } -#endif - subBGExtPlttOff_(); - return (GXVRamSubBGExtPltt)disableBankForX_(&gGXState.vramCnt.sub_bgExtPltt); -} - -GXVRamSubOBJExtPltt GX_DisableBankForSubOBJExtPltt () { -#ifndef SDK_FINALROM - if (!OSi_TryLockVram((u16)gGXState.vramCnt.sub_objExtPltt, GXi_VRamLockId)) { - return GX_VRAM_SUB_OBJEXTPLTT_NONE; - } -#endif - subOBJExtPlttOff_(); - return (GXVRamSubOBJExtPltt)disableBankForX_(&gGXState.vramCnt.sub_objExtPltt); -} - -GXVRamBG GX_GetBankForBG () { - return (GXVRamBG)gGXState.vramCnt.bg; -} - -GXVRamOBJ GX_GetBankForOBJ () { - return (GXVRamOBJ)gGXState.vramCnt.obj; -} - -GXVRamBGExtPltt GX_GetBankForBGExtPltt () { - return (GXVRamBGExtPltt)gGXState.vramCnt.bgExtPltt; -} - -GXVRamOBJExtPltt GX_GetBankForOBJExtPltt () { - return (GXVRamOBJExtPltt)gGXState.vramCnt.objExtPltt; -} - -GXVRamTex GX_GetBankForTex () { - return (GXVRamTex)gGXState.vramCnt.tex; -} - -GXVRamTexPltt GX_GetBankForTexPltt () { - return (GXVRamTexPltt)gGXState.vramCnt.texPltt; -} - -GXVRamClearImage GX_GetBankForClearImage () { - return (GXVRamClearImage)gGXState.vramCnt.clrImg; -} - -GXVRamARM7 GX_GetBankForARM7 () { - return (GXVRamARM7)gGXState.vramCnt.arm7; -} - -GXVRamLCDC GX_GetBankForLCDC () { - return (GXVRamLCDC)gGXState.vramCnt.lcdc; -} - -GXVRamSubBG GX_GetBankForSubBG () { - return (GXVRamSubBG)gGXState.vramCnt.sub_bg; -} - -GXVRamSubOBJ GX_GetBankForSubOBJ () { - return (GXVRamSubOBJ)gGXState.vramCnt.sub_obj; -} - -GXVRamSubBGExtPltt GX_GetBankForSubBGExtPltt () { - return (GXVRamSubBGExtPltt)gGXState.vramCnt.sub_bgExtPltt; -} - -GXVRamSubOBJExtPltt GX_GetBankForSubOBJExtPltt () { - return (GXVRamSubOBJExtPltt)gGXState.vramCnt.sub_objExtPltt; -} - -static u32 GX_GetSizeOfX_ (u32 bit) { - u32 size = 0; - if (bit & GX_VRAM_LCDC_A) { - size += HW_VRAM_A_SIZE; - } - if (bit & GX_VRAM_LCDC_B) { - size += HW_VRAM_B_SIZE; - } - if (bit & GX_VRAM_LCDC_C) { - size += HW_VRAM_C_SIZE; - } - if (bit & GX_VRAM_LCDC_D) { - size += HW_VRAM_D_SIZE; - } - if (bit & GX_VRAM_LCDC_E) { - size += HW_VRAM_E_SIZE; - } - if (bit & GX_VRAM_LCDC_F) { - size += HW_VRAM_F_SIZE; - } - if (bit & GX_VRAM_LCDC_G) { - size += HW_VRAM_G_SIZE; - } - if (bit & GX_VRAM_LCDC_H) { - size += HW_VRAM_H_SIZE; - } - if (bit & GX_VRAM_LCDC_I) { - size += HW_VRAM_I_SIZE; - } - return size; -} - -u32 GX_GetSizeOfBG (void) { - return GX_GetSizeOfX_(gGXState.vramCnt.bg); -} - -u32 GX_GetSizeOfOBJ (void) { - return GX_GetSizeOfX_(gGXState.vramCnt.obj); -} - -u32 GX_GetSizeOfBGExtPltt (void) { - return GX_GetSizeOfX_(gGXState.vramCnt.bgExtPltt); -} - -u32 GX_GetSizeOfOBJExtPltt (void) { - return GX_GetSizeOfX_(gGXState.vramCnt.objExtPltt); -} - -u32 GX_GetSizeOfTex (void) { - return GX_GetSizeOfX_(gGXState.vramCnt.tex); -} - -u32 GX_GetSizeOfTexPltt (void) { - return GX_GetSizeOfX_(gGXState.vramCnt.texPltt); -} - -u32 GX_GetSizeOfClearImage (void) { - return GX_GetSizeOfX_(gGXState.vramCnt.clrImg); -} - -u32 GX_GetSizeOfSubBG (void) { - return GX_GetSizeOfX_(gGXState.vramCnt.sub_bg); -} - -u32 GX_GetSizeOfSubOBJ (void) { - return GX_GetSizeOfX_(gGXState.vramCnt.sub_obj); -} - -u32 GX_GetSizeOfSubBGExtPltt (void) { - return GX_GetSizeOfX_(gGXState.vramCnt.sub_bgExtPltt); -} - -u32 GX_GetSizeOfSubOBJExtPltt (void) { - return GX_GetSizeOfX_(gGXState.vramCnt.sub_objExtPltt); -} - -u32 GX_GetSizeOfARM7 (void) { - return GX_GetSizeOfX_(gGXState.vramCnt.arm7); -} diff --git a/subprojects/NitroSDK/libraries/gx/src/gxasm.c b/subprojects/NitroSDK/libraries/gx/src/gxasm.c deleted file mode 100644 index 9d445318d3..0000000000 --- a/subprojects/NitroSDK/libraries/gx/src/gxasm.c +++ /dev/null @@ -1,81 +0,0 @@ -#include - -#include "include/gxasm.h" - -asm void GX_SendFifo48B (register const void * pSrc, register void * pDest) { - ldmia r0 !, {r2, r3, r12} - stmia r1, {r2, r3, r12} - ldmia r0 !, {r2, r3, r12} - stmia r1, {r2, r3, r12} - ldmia r0 !, {r2, r3, r12} - stmia r1, {r2, r3, r12} - ldmia r0 !, {r2, r3, r12} - stmia r1, {r2, r3, r12} - bx lr -} - -asm void GX_SendFifo64B (register const void * pSrc, register void * pDest) { -#ifdef SDK_TEG - ldmia r0 !, {r2, r3, r12} - stmia r1, {r2, r3, r12} - ldmia r0 !, {r2, r3, r12} - stmia r1, {r2, r3, r12} - ldmia r0 !, {r2, r3, r12} - stmia r1, {r2, r3, r12} - ldmia r0 !, {r2, r3, r12} - stmia r1, {r2, r3, r12} - ldmia r0 !, {r2, r3, r12} - stmia r1, {r2, r3, r12} - ldmia r0 !, {r2} - stmia r1, {r2} - bx lr -#else - stmfd sp !, {r4 - r8} - ldmia r0 !, {r2 - r8, r12} - stmia r1, {r2 - r8, r12} - ldmia r0 !, {r2 - r8, r12} - stmia r1, {r2 - r8, r12} - ldmfd sp !, {r4 - r8} - bx lr -#endif -} - -asm void GX_SendFifo128B (register const void * pSrc, register void * pDest) { -#ifdef SDK_TEG - ldmia r0 !, {r2, r3, r12} - stmia r1, {r2, r3, r12} - ldmia r0 !, {r2, r3, r12} - stmia r1, {r2, r3, r12} - ldmia r0 !, {r2, r3, r12} - stmia r1, {r2, r3, r12} - ldmia r0 !, {r2, r3, r12} - stmia r1, {r2, r3, r12} - ldmia r0 !, {r2, r3, r12} - stmia r1, {r2, r3, r12} - ldmia r0 !, {r2, r3, r12} - stmia r1, {r2, r3, r12} - ldmia r0 !, {r2, r3, r12} - stmia r1, {r2, r3, r12} - ldmia r0 !, {r2, r3, r12} - stmia r1, {r2, r3, r12} - ldmia r0 !, {r2, r3, r12} - stmia r1, {r2, r3, r12} - ldmia r0 !, {r2, r3, r12} - stmia r1, {r2, r3, r12} - ldmia r0 !, {r2, r3} - stmia r1, {r2, r3} - bx lr -#else - stmfd sp !, {r4 - r8} - ldmia r0 !, {r2 - r8, r12} - stmia r1, {r2 - r8, r12} - ldmia r0 !, {r2 - r8, r12} - stmia r1, {r2 - r8, r12} - ldmia r0 !, {r2 - r8, r12} - stmia r1, {r2 - r8, r12} - ldmia r0 !, {r2 - r8, r12} - stmia r1, {r2 - r8, r12} - ldmfd sp !, {r4 - r8} - bx lr -#endif -} diff --git a/subprojects/NitroSDK/libraries/gx/src/gxstate.c b/subprojects/NitroSDK/libraries/gx/src/gxstate.c deleted file mode 100644 index 8682a03573..0000000000 --- a/subprojects/NitroSDK/libraries/gx/src/gxstate.c +++ /dev/null @@ -1,444 +0,0 @@ -#include "include/gxstate.h" - -#include - -GX_State gGXState; - -#ifdef SDK_CW_WARNOFF_SAFESTRB -#include -#endif -void GX_InitGXState () { - gGXState.vramCnt.lcdc = 0; - gGXState.vramCnt.bg = 0; - gGXState.vramCnt.obj = 0; - gGXState.vramCnt.arm7 = 0; - gGXState.vramCnt.tex = 0; - gGXState.vramCnt.texPltt = 0; - gGXState.vramCnt.clrImg = 0; - gGXState.vramCnt.bgExtPltt = 0; - gGXState.vramCnt.objExtPltt = 0; - - gGXState.vramCnt.sub_bg = 0; - gGXState.vramCnt.sub_obj = 0; - gGXState.vramCnt.sub_bgExtPltt = 0; - gGXState.vramCnt.sub_objExtPltt = 0; - - reg_GX_VRAMCNT = 0; - *((u8 *)®_GX_WVRAMCNT + 0) = 0; - *((u8 *)®_GX_WVRAMCNT + 1) = 0; - *((u8 *)®_GX_WVRAMCNT + 2) = 0; - reg_GX_VRAM_HI_CNT = 0; -} - -#ifdef SDK_CW_WARNOFF_SAFESTRB -#include -#endif - -#define SDK_CONFLICT_ASSERT(a, b, name1, name2) \ - SDK_ASSERTMSG( \ - !(a & b), \ - "VRAM Bank conflicts between "#name1 " and "#name2 " (0x%02x, 0x%02x)\n", \ - a, b \ - ) - -#define SDK_CONFLICT_CHECK(val, bank) \ - if (val & bank) goto SDK_VRAMCNT_ERROR; else val |= bank - -#ifdef SDK_DEBUG - -void GX_StateCheck_VRAMCnt_ () { - GX_VRAMCnt_ * p = &gGXState.vramCnt; - u16 tmp = p->lcdc; - SDK_CONFLICT_CHECK(tmp, p->bg); - SDK_CONFLICT_CHECK(tmp, p->obj); - SDK_CONFLICT_CHECK(tmp, p->arm7); - SDK_CONFLICT_CHECK(tmp, p->tex); - SDK_CONFLICT_CHECK(tmp, p->texPltt); - SDK_CONFLICT_CHECK(tmp, p->clrImg); - SDK_CONFLICT_CHECK(tmp, p->bgExtPltt); - SDK_CONFLICT_CHECK(tmp, p->objExtPltt); - SDK_CONFLICT_CHECK(tmp, p->sub_bg); - SDK_CONFLICT_CHECK(tmp, p->sub_obj); - SDK_CONFLICT_CHECK(tmp, p->sub_bgExtPltt); - SDK_CONFLICT_CHECK(tmp, p->sub_objExtPltt); - return; - - SDK_VRAMCNT_ERROR: - SDK_CONFLICT_ASSERT(p->lcdc, p->bg, LCDC, BG); - SDK_CONFLICT_ASSERT(p->lcdc, p->obj, LCDC, OBJ); - SDK_CONFLICT_ASSERT(p->lcdc, p->arm7, LCDC, ARM7); - SDK_CONFLICT_ASSERT(p->lcdc, p->tex, LCDC, Tex); - SDK_CONFLICT_ASSERT(p->lcdc, p->texPltt, LCDC, TEXPltt); - SDK_CONFLICT_ASSERT(p->lcdc, p->clrImg, LCDC, ClearImage); - SDK_CONFLICT_ASSERT(p->lcdc, p->bgExtPltt, LCDC, BGExtPltt); - SDK_CONFLICT_ASSERT(p->lcdc, p->objExtPltt, LCDC, OBJExtPltt); - SDK_CONFLICT_ASSERT(p->lcdc, p->sub_bg, LCDC, SubBG); - SDK_CONFLICT_ASSERT(p->lcdc, p->sub_obj, LCDC, SubOBJ); - SDK_CONFLICT_ASSERT(p->lcdc, p->sub_bgExtPltt, LCDC, SubBGExtPltt); - SDK_CONFLICT_ASSERT(p->lcdc, p->sub_objExtPltt, LCDC, SubOBJExtPltt); - - SDK_CONFLICT_ASSERT(p->bg, p->obj, BG, OBJ); - SDK_CONFLICT_ASSERT(p->bg, p->arm7, BG, ARM7); - SDK_CONFLICT_ASSERT(p->bg, p->tex, BG, Tex); - SDK_CONFLICT_ASSERT(p->bg, p->texPltt, BG, TexPltt); - SDK_CONFLICT_ASSERT(p->bg, p->clrImg, BG, ClearImage); - SDK_CONFLICT_ASSERT(p->bg, p->bgExtPltt, BG, BGExtPltt); - SDK_CONFLICT_ASSERT(p->bg, p->objExtPltt, BG, OBJExtPltt); - SDK_CONFLICT_ASSERT(p->bg, p->sub_bg, BG, SubBG); - SDK_CONFLICT_ASSERT(p->bg, p->sub_obj, BG, SubOBJ); - SDK_CONFLICT_ASSERT(p->bg, p->sub_bgExtPltt, BG, SubBGExtPltt); - SDK_CONFLICT_ASSERT(p->bg, p->sub_objExtPltt, BG, SubOBJExtPltt); - - SDK_CONFLICT_ASSERT(p->obj, p->arm7, OBJ, ARM7); - SDK_CONFLICT_ASSERT(p->obj, p->tex, OBJ, Tex); - SDK_CONFLICT_ASSERT(p->obj, p->texPltt, OBJ, TexPltt); - SDK_CONFLICT_ASSERT(p->obj, p->clrImg, OBJ, ClearImage); - SDK_CONFLICT_ASSERT(p->obj, p->bgExtPltt, OBJ, BGExtPltt); - SDK_CONFLICT_ASSERT(p->obj, p->objExtPltt, OBJ, OBJExtPltt); - SDK_CONFLICT_ASSERT(p->obj, p->sub_bg, OBJ, SubBG); - SDK_CONFLICT_ASSERT(p->obj, p->sub_obj, OBJ, SubOBJ); - SDK_CONFLICT_ASSERT(p->obj, p->sub_bgExtPltt, OBJ, SubBGExtPltt); - SDK_CONFLICT_ASSERT(p->obj, p->sub_objExtPltt, OBJ, SubOBJExtPltt); - - SDK_CONFLICT_ASSERT(p->arm7, p->tex, ARM7, Tex); - SDK_CONFLICT_ASSERT(p->arm7, p->texPltt, ARM7, TexPltt); - SDK_CONFLICT_ASSERT(p->arm7, p->clrImg, ARM7, ClearImage); - SDK_CONFLICT_ASSERT(p->arm7, p->bgExtPltt, ARM7, BGExtPltt); - SDK_CONFLICT_ASSERT(p->arm7, p->objExtPltt, ARM7, OBJExtPltt); - SDK_CONFLICT_ASSERT(p->arm7, p->sub_bg, ARM7, SubBG); - SDK_CONFLICT_ASSERT(p->arm7, p->sub_obj, ARM7, SubOBJ); - SDK_CONFLICT_ASSERT(p->arm7, p->sub_bgExtPltt, ARM7, SubBGExtPltt); - SDK_CONFLICT_ASSERT(p->arm7, p->sub_objExtPltt, ARM7, SubOBJExtPltt); - - SDK_CONFLICT_ASSERT(p->tex, p->texPltt, Tex, TexPltt); - SDK_CONFLICT_ASSERT(p->tex, p->clrImg, Tex, ClearImage); - SDK_CONFLICT_ASSERT(p->tex, p->bgExtPltt, Tex, BGExtPltt); - SDK_CONFLICT_ASSERT(p->tex, p->objExtPltt, Tex, OBJExtPltt); - SDK_CONFLICT_ASSERT(p->tex, p->sub_bg, Tex, SubBG); - SDK_CONFLICT_ASSERT(p->tex, p->sub_obj, Tex, SubOBJ); - SDK_CONFLICT_ASSERT(p->tex, p->sub_bgExtPltt, Tex, SubBGExtPltt); - SDK_CONFLICT_ASSERT(p->tex, p->sub_objExtPltt, Tex, SubOBJExtPltt); - - SDK_CONFLICT_ASSERT(p->texPltt, p->clrImg, TexPltt, ClearImage); - SDK_CONFLICT_ASSERT(p->texPltt, p->bgExtPltt, TexPltt, BGExtPltt); - SDK_CONFLICT_ASSERT(p->texPltt, p->objExtPltt, TexPltt, OBJExtPltt); - SDK_CONFLICT_ASSERT(p->texPltt, p->sub_bg, TexPltt, SubBG); - SDK_CONFLICT_ASSERT(p->texPltt, p->sub_obj, TexPltt, SubOBJ); - SDK_CONFLICT_ASSERT(p->texPltt, p->sub_bgExtPltt, TexPltt, SubBGExtPltt); - SDK_CONFLICT_ASSERT(p->texPltt, p->sub_objExtPltt, TexPltt, SubOBJExtPltt); - - SDK_CONFLICT_ASSERT(p->clrImg, p->bgExtPltt, ClearImage, BGExtPltt); - SDK_CONFLICT_ASSERT(p->clrImg, p->objExtPltt, ClearImage, OBJExtPltt); - SDK_CONFLICT_ASSERT(p->clrImg, p->sub_bg, ClearImage, SubBG); - SDK_CONFLICT_ASSERT(p->clrImg, p->sub_obj, ClearImage, SubOBJ); - SDK_CONFLICT_ASSERT(p->clrImg, p->sub_bgExtPltt, ClearImage, SubBGExtPltt); - SDK_CONFLICT_ASSERT(p->clrImg, p->sub_objExtPltt, ClearImage, SubOBJExtPltt); - - SDK_CONFLICT_ASSERT(p->bgExtPltt, p->objExtPltt, BGExtPltt, OBJExtPltt); - SDK_CONFLICT_ASSERT(p->bgExtPltt, p->sub_bg, BGExtPltt, SubBG); - SDK_CONFLICT_ASSERT(p->bgExtPltt, p->sub_obj, BGExtPltt, SubOBJ); - SDK_CONFLICT_ASSERT(p->bgExtPltt, p->sub_bgExtPltt, BGExtPltt, SubBGExtPltt); - SDK_CONFLICT_ASSERT(p->bgExtPltt, p->sub_objExtPltt, BGExtPltt, SubOBJExtPltt); - - SDK_CONFLICT_ASSERT(p->objExtPltt, p->sub_bg, OBJExtPltt, SubBG); - SDK_CONFLICT_ASSERT(p->objExtPltt, p->sub_obj, OBJExtPltt, SubOBJ); - SDK_CONFLICT_ASSERT(p->objExtPltt, p->sub_bgExtPltt, OBJExtPltt, SubBGExtPltt); - SDK_CONFLICT_ASSERT(p->objExtPltt, p->sub_objExtPltt, OBJExtPltt, SubOBJExtPltt); - - SDK_CONFLICT_ASSERT(p->sub_bg, p->sub_obj, SubBG, SubOBJ); - SDK_CONFLICT_ASSERT(p->sub_bg, p->sub_bgExtPltt, SubBG, SubBGExtPltt); - SDK_CONFLICT_ASSERT(p->sub_bg, p->sub_objExtPltt, SubBG, SubOBJExtPltt); - - SDK_CONFLICT_ASSERT(p->sub_obj, p->sub_bgExtPltt, SubOBJ, SubBGExtPltt); - SDK_CONFLICT_ASSERT(p->sub_obj, p->sub_objExtPltt, SubOBJ, SubOBJExtPltt); - - SDK_CONFLICT_ASSERT(p->sub_bgExtPltt, p->sub_objExtPltt, SubBGExtPltt, SubOBJExtPltt); -} - -#define SDK_REGION_ASSERT(name, r1, r2, d1, d2) \ - SDK_ASSERTMSG( \ - ((r1) <= (d1)) && ((r2) >= (d2)), \ - "Region allocated to "#name " is (0x%08x -> 0x%08x),\n" \ - "access occured (0x%08x -> 0x%08x).", r1, r2, d1, d2 \ - ) - -#define SDK_REGION_ASSERT_EX(name, r1, r2, r3, r4, d1, d2) \ - SDK_ASSERTMSG( \ - (((r1) <= (d1)) && ((r2) >= (d2))) || (((r3) <= (d1)) && ((r4) >= (d2))), \ - "Region allocated to "#name " is (0x%08x -> 0x%08x, 0x%08x -> 0x%08x),\n" \ - "access occured (0x%08x -> 0x%08x).", r1, r2, r3, r4, d1, d2 \ - ) - -void GX_RegionCheck_OBJ_ (u32 first, u32 last) { - switch (gGXState.vramCnt.obj) { - case GX_VRAM_OBJ_NONE: - SDK_REGION_ASSERT(OBJ, HW_OBJ_VRAM, HW_OBJ_VRAM, first, last); - break; - - case GX_VRAM_OBJ_16_F: - case GX_VRAM_OBJ_16_G: - SDK_REGION_ASSERT(OBJ, HW_OBJ_VRAM, HW_OBJ_VRAM + HW_VRAM_F_SIZE, first, last); - break; - case GX_VRAM_OBJ_32_FG: - SDK_REGION_ASSERT( - OBJ, HW_OBJ_VRAM, - HW_OBJ_VRAM + HW_VRAM_F_SIZE + HW_VRAM_G_SIZE, first, last - ); - break; - case GX_VRAM_OBJ_64_E: - SDK_REGION_ASSERT(OBJ, HW_OBJ_VRAM, HW_OBJ_VRAM + HW_VRAM_E_SIZE, first, last); - break; - case GX_VRAM_OBJ_80_EF: - SDK_REGION_ASSERT( - OBJ, HW_OBJ_VRAM, - HW_OBJ_VRAM + HW_VRAM_E_SIZE + HW_VRAM_F_SIZE, first, last - ); - break; - case GX_VRAM_OBJ_80_EG: - SDK_REGION_ASSERT( - OBJ, HW_OBJ_VRAM, - HW_OBJ_VRAM + HW_VRAM_E_SIZE + HW_VRAM_G_SIZE, first, last - ); - break; - case GX_VRAM_OBJ_96_EFG: - SDK_REGION_ASSERT( - OBJ, HW_OBJ_VRAM, - HW_OBJ_VRAM + HW_VRAM_E_SIZE + HW_VRAM_F_SIZE + HW_VRAM_G_SIZE, - first, last - ); - break; - - case GX_VRAM_OBJ_128_A: - case GX_VRAM_OBJ_128_B: - SDK_REGION_ASSERT(OBJ, HW_OBJ_VRAM, HW_OBJ_VRAM + HW_VRAM_A_SIZE, first, last); - break; - case GX_VRAM_OBJ_256_AB: - SDK_REGION_ASSERT( - OBJ, HW_OBJ_VRAM, - HW_OBJ_VRAM + HW_VRAM_A_SIZE + HW_VRAM_B_SIZE, first, last - ); - break; - default: - SDK_INTERNAL_ERROR("unknown case 0x%x", gGXState.vramCnt.obj); - break; - } -} - -void GX_RegionCheck_BG_ (u32 first, u32 last) { - u16 vram_abcd; - u16 vram_efg; - u32 abcd_size, efg_size; - - SDK_ASSERT( - HW_VRAM_A_SIZE == HW_VRAM_B_SIZE && - HW_VRAM_A_SIZE == HW_VRAM_C_SIZE && HW_VRAM_A_SIZE == HW_VRAM_D_SIZE - ); - - if (gGXState.vramCnt.bg & (GX_VRAM_H | GX_VRAM_I)) { - SDK_INTERNAL_ERROR("unknown case 0x%x", gGXState.vramCnt.bg); - return; - } - - vram_abcd = (u16)(gGXState.vramCnt.bg & GX_VRAM_BG_512_ABCD); - vram_efg = (u16)(gGXState.vramCnt.bg & GX_VRAM_BG_96_EFG); - - switch (vram_efg) { - case GX_VRAM_BG_NONE: - efg_size = 0; - break; - case GX_VRAM_BG_16_F: - case GX_VRAM_BG_16_G: - efg_size = HW_VRAM_F_SIZE; - break; - case GX_VRAM_BG_32_FG: - efg_size = HW_VRAM_F_SIZE + HW_VRAM_G_SIZE; - break; - case GX_VRAM_BG_64_E: - efg_size = HW_VRAM_E_SIZE; - break; - case GX_VRAM_BG_80_EF: - case GX_VRAM_BG_80_EG: - efg_size = HW_VRAM_E_SIZE + HW_VRAM_F_SIZE; - break; - case GX_VRAM_BG_96_EFG: - efg_size = HW_VRAM_E_SIZE + HW_VRAM_F_SIZE + HW_VRAM_G_SIZE; - break; - } - - switch (vram_abcd) { - case GX_VRAM_BG_NONE: - abcd_size = 0; - break; - case GX_VRAM_BG_128_A: - case GX_VRAM_BG_128_B: - case GX_VRAM_BG_128_C: - case GX_VRAM_BG_128_D: - abcd_size = HW_VRAM_A_SIZE; - break; - case GX_VRAM_BG_256_AB: - case GX_VRAM_BG_256_BC: - case GX_VRAM_BG_256_CD: - case GX_VRAM_BG_256_AC: - case GX_VRAM_BG_256_AD: - case GX_VRAM_BG_256_BD: - abcd_size = HW_VRAM_A_SIZE + HW_VRAM_B_SIZE; - break; - case GX_VRAM_BG_384_ABC: - case GX_VRAM_BG_384_BCD: - case GX_VRAM_BG_384_ABD: - case GX_VRAM_BG_384_ACD: - abcd_size = HW_VRAM_A_SIZE + HW_VRAM_B_SIZE + HW_VRAM_C_SIZE; - break; - case GX_VRAM_BG_512_ABCD: - abcd_size = HW_VRAM_A_SIZE + HW_VRAM_B_SIZE + HW_VRAM_C_SIZE + HW_VRAM_D_SIZE; - break; - } - - if (vram_abcd && vram_efg) { - if (vram_abcd == GX_VRAM_BG_512_ABCD) { - SDK_INTERNAL_ERROR("unknown case 0x%x", gGXState.vramCnt.bg); - return; - } - - SDK_REGION_ASSERT_EX( - BG, HW_BG_VRAM, HW_BG_VRAM + efg_size, - HW_BG_VRAM + HW_VRAM_A_SIZE, HW_BG_VRAM + HW_VRAM_A_SIZE + abcd_size, - first, last - ); - } else if (vram_abcd) { - SDK_REGION_ASSERT(BG, HW_BG_VRAM, HW_BG_VRAM + abcd_size, first, last); - } else { - SDK_REGION_ASSERT(BG, HW_BG_VRAM, HW_BG_VRAM + efg_size, first, last); - } -} - -void GX_RegionCheck_SubOBJ_ (u32 first, u32 last) { - switch (gGXState.vramCnt.sub_obj) { - case GX_VRAM_SUB_OBJ_NONE: - SDK_REGION_ASSERT(SubOBJ, HW_DB_OBJ_VRAM, HW_DB_OBJ_VRAM, first, last); - break; - case GX_VRAM_SUB_OBJ_128_D: - SDK_REGION_ASSERT(SubOBJ, HW_DB_OBJ_VRAM, HW_DB_OBJ_VRAM + HW_VRAM_D_SIZE, first, last); - break; - case GX_VRAM_SUB_OBJ_16_I: - SDK_REGION_ASSERT(SubOBJ, HW_DB_OBJ_VRAM, HW_DB_OBJ_VRAM + HW_VRAM_I_SIZE, first, last); - break; - } -} - -void GX_RegionCheck_SubBG_ (u32 first, u32 last) { - switch (gGXState.vramCnt.sub_bg) { - case GX_VRAM_SUB_BG_NONE: - SDK_REGION_ASSERT(SubBG, HW_DB_BG_VRAM, HW_DB_BG_VRAM, first, last); - break; - case GX_VRAM_SUB_BG_128_C: - SDK_REGION_ASSERT(SubBG, HW_DB_BG_VRAM, HW_DB_BG_VRAM + HW_VRAM_C_SIZE, first, last); - break; - case GX_VRAM_SUB_BG_32_H: - SDK_REGION_ASSERT(SubBG, HW_DB_BG_VRAM, HW_DB_BG_VRAM + HW_VRAM_H_SIZE, first, last); - break; - case GX_VRAM_SUB_BG_48_HI: - SDK_REGION_ASSERT( - SubBG, HW_DB_BG_VRAM, - HW_DB_BG_VRAM + HW_VRAM_H_SIZE + HW_VRAM_I_SIZE, first, last - ); - break; - default: - SDK_INTERNAL_ERROR("unknown case 0x%x", gGXState.vramCnt.sub_bg); - break; - } -} - -void GX_RegionCheck_TexPltt_ (GXVRamTexPltt texPltt, u32 first, u32 last) { -#if defined(SDK_NO_MESSAGE) -#pragma unused(first) -#endif - switch (texPltt) { - case GX_VRAM_TEXPLTT_0_F: - case GX_VRAM_TEXPLTT_0_G: - SDK_ASSERTMSG( - last <= 0x04000, - "Texture pallete 0x04000-0x18000 not available(0x%5x->0x%5x)", first, last - ); - break; - - case GX_VRAM_TEXPLTT_01_FG: - SDK_ASSERTMSG( - last <= 0x08000, - "Texture pallete 0x08000-0x18000 not available(0x%5x->0x%5x)", first, last - ); - break; - - case GX_VRAM_TEXPLTT_0123_E: - SDK_ASSERTMSG( - last <= 0x10000, - "Texture pallete 0x10000-0x18000 not available(0x%5x->0x%5x)", first, last - ); - break; - - case GX_VRAM_TEXPLTT_01234_EF: - SDK_ASSERTMSG( - last <= 0x14000, - "Texture pallete 0x14000-0x18000 not available(0x%5x->0x%5x)", first, last - ); - break; - - case GX_VRAM_TEXPLTT_012345_EFG: - SDK_ASSERTMSG(last <= 0x18000, "Illegal Address/size specified(0x%5x->0x%5x)", first, last); - break; - - default: - SDK_INTERNAL_ERROR("unknown case 0x%x", texPltt); - break; - } -} - -void GX_RegionCheck_Tex_ (GXVRamTex tex, u32 first, u32 last) { -#if defined(SDK_NO_MESSAGE) -#pragma unused(first) -#endif - switch (tex) { - case GX_VRAM_TEX_0_A: - case GX_VRAM_TEX_0_B: - case GX_VRAM_TEX_0_C: - case GX_VRAM_TEX_0_D: - SDK_ASSERTMSG( - last <= 0x20000, - "Texture slot 0x20000-0x80000 not available(0x%5x->0x%5x)", first, last - ); - break; - - case GX_VRAM_TEX_01_AB: - case GX_VRAM_TEX_01_BC: - case GX_VRAM_TEX_01_CD: - case GX_VRAM_TEX_01_AC: - case GX_VRAM_TEX_01_AD: - case GX_VRAM_TEX_01_BD: - SDK_ASSERTMSG( - last <= 0x40000, - "Texture slot 0x40000-0x80000 not available(0x%5x->0x%5x)", first, last - ); - break; - - case GX_VRAM_TEX_012_ABC: - case GX_VRAM_TEX_012_BCD: - case GX_VRAM_TEX_012_ABD: - case GX_VRAM_TEX_012_ACD: - SDK_ASSERTMSG( - last <= 0x60000, - "Texture slot 0x60000-0x80000 not available(0x%5x->0x%5x)", first, last - ); - break; - - case GX_VRAM_TEX_0123_ABCD: - SDK_ASSERTMSG(last <= 0x80000, "Illegal Address/size specified(0x%5x->0x%5x)", first, last); - break; - - default: - SDK_INTERNAL_ERROR("unknown case 0x%x", tex); - break; - } - ; -} - -#endif diff --git a/subprojects/NitroSDK/libraries/gx/src/include/gxasm.h b/subprojects/NitroSDK/libraries/gx/src/include/gxasm.h deleted file mode 100644 index b245f2b310..0000000000 --- a/subprojects/NitroSDK/libraries/gx/src/include/gxasm.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef NITRO_GXASM_H_ -#define NITRO_GXASM_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -void GX_SendFifo36B(register const void * pSrc, register void * pDest); -void GX_SendFifo48B(register const void * pSrc, register void * pDest); -void GX_SendFifo64B(register const void * pSrc, register void * pDest); -void GX_SendFifo128B(register const void * pSrc, register void * pDest); - -static inline void GX_SendFifo36B (register const void * pSrc, register void * pDest) { - MI_Copy36B(pSrc, pDest); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/libraries/gx/src/include/gxdma.h b/subprojects/NitroSDK/libraries/gx/src/include/gxdma.h deleted file mode 100644 index 78b4fdc74d..0000000000 --- a/subprojects/NitroSDK/libraries/gx/src/include/gxdma.h +++ /dev/null @@ -1,53 +0,0 @@ -#ifndef NITRO_GXDMA_H_ -#define NITRO_GXDMA_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -static void GXi_DmaCopy32(u32 dmaNo, const void * src, void * dest, u32 size); -static void GXi_DmaCopy16(u32 dmaNo, const void * src, void * dest, u32 size); -static void GXi_DmaCopy32Async(u32 dmaNo, const void * src, void * dest, u32 size, MIDmaCallback callback, void * arg); -static void GXi_WaitDma(u32 dmaNo); - -#define GX_CPU_FASTER32_SIZE 48 -#define GX_CPU_FASTER16_SIZE 28 - -static inline void GXi_DmaCopy32 (u32 dmaNo, const void * src, void * dest, u32 size) { - if (dmaNo != GX_DMA_NOT_USE && size > GX_CPU_FASTER32_SIZE) { - MI_DmaCopy32(dmaNo, src, dest, size); - } else { - MI_CpuCopy32(src, dest, size); - } -} - -static inline void GXi_DmaCopy16 (u32 dmaNo, const void * src, void * dest, u32 size) { - if (dmaNo != GX_DMA_NOT_USE && size > GX_CPU_FASTER16_SIZE) { - MI_DmaCopy16(dmaNo, src, dest, size); - } else { - MI_CpuCopy16(src, dest, size); - } -} - -static inline void GXi_DmaCopy32Async (u32 dmaNo, const void * src, void * dest, u32 size, MIDmaCallback callback, void * arg) { - if (dmaNo != GX_DMA_NOT_USE) { - MI_DmaCopy32Async(dmaNo, src, dest, size, callback, arg); - } else { - MI_CpuCopy32(src, dest, size); - } -} - -static inline void GXi_WaitDma (u32 dmaNo) { - if (dmaNo != GX_DMA_NOT_USE) { - MI_WaitDma(dmaNo); - } -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/libraries/gx/src/include/gxstate.h b/subprojects/NitroSDK/libraries/gx/src/include/gxstate.h deleted file mode 100644 index a900a45a9e..0000000000 --- a/subprojects/NitroSDK/libraries/gx/src/include/gxstate.h +++ /dev/null @@ -1,109 +0,0 @@ -#ifndef NITRO_GXSTATE_H_ -#define NITRO_GXSTATE_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct { - u16 lcdc; - u16 bg; - u16 obj; - u16 arm7; - u16 tex; - u16 texPltt; - u16 clrImg; - u16 bgExtPltt; - u16 objExtPltt; - u16 sub_bg; - u16 sub_obj; - u16 sub_bgExtPltt; - u16 sub_objExtPltt; -} GX_VRAMCnt_; - -typedef struct { - GX_VRAMCnt_ vramCnt; -} GX_State; - -extern GX_State gGXState; - -void GX_InitGXState(); - -#ifdef SDK_DEBUG -void GX_StateCheck_VRAMCnt_(); -void GX_RegionCheck_BG_(u32 first, u32 last); -void GX_RegionCheck_OBJ_(u32 first, u32 last); -void GX_RegionCheck_SubBG_(u32 first, u32 last); -void GX_RegionCheck_SubOBJ_(u32 first, u32 last); -void GX_RegionCheck_Tex_(GXVRamTex tex, u32 first, u32 last); -void GX_RegionCheck_TexPltt_(GXVRamTexPltt texPltt, u32 first, u32 last); -#endif - -#ifdef SDK_DEBUG -static inline void GX_StateCheck_VRAMCnt () { - GX_StateCheck_VRAMCnt_(); -} - -static inline void GX_RegionCheck_BG (u32 first, u32 last) { - GX_RegionCheck_BG_(first, last); -} - -static inline void GX_RegionCheck_OBJ (u32 first, u32 last) { - GX_RegionCheck_OBJ_(first, last); -} - -static inline void GX_RegionCheck_SubBG (u32 first, u32 last) { - GX_RegionCheck_SubBG_(first, last); -} - -static inline void GX_RegionCheck_SubOBJ (u32 first, u32 last) { - GX_RegionCheck_SubOBJ_(first, last); -} - -static inline void GX_RegionCheck_Tex (GXVRamTex tex, u32 first, u32 last) { - GX_RegionCheck_Tex_(tex, first, last); -} - -static inline void GX_RegionCheck_TexPltt (GXVRamTexPltt texPltt, u32 first, u32 last) { - GX_RegionCheck_TexPltt_(texPltt, first, last); -} - -#else -static inline void GX_StateCheck_VRAMCnt (void) { - return; -} - -static inline void GX_RegionCheck_BG (u32, u32) { - return; -} - -static inline void GX_RegionCheck_OBJ (u32, u32) { - return; -} - -static inline void GX_RegionCheck_SubBG (u32, u32) { - return; -} - -static inline void GX_RegionCheck_SubOBJ (u32, u32) { - return; -} - -static inline void GX_RegionCheck_Tex (GXVRamTex, u32, u32) { - return; -} - -static inline void GX_RegionCheck_TexPltt (GXVRamTexPltt, u32, u32) { - return; -} - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/libraries/init/meson.build b/subprojects/NitroSDK/libraries/init/meson.build deleted file mode 100644 index bdf3716905..0000000000 --- a/subprojects/NitroSDK/libraries/init/meson.build +++ /dev/null @@ -1,13 +0,0 @@ -crt0_src = files('src/crt0.c') - -# Build dummy lib so that we can compile crt0.c -dummy_crt0 = static_library('dummycrt0', - sources: [crt0_src, fx_const_h], - c_args: [c_args, sdk_args], - include_directories: [public_includes], - c_pch: nitro_pch, - pic: false -) - -# Extract crt0.o -crt0_obj = dummy_crt0.extract_all_objects(recursive: true) \ No newline at end of file diff --git a/subprojects/NitroSDK/libraries/init/src/crt0.c b/subprojects/NitroSDK/libraries/init/src/crt0.c deleted file mode 100644 index 7c5fb73295..0000000000 --- a/subprojects/NitroSDK/libraries/init/src/crt0.c +++ /dev/null @@ -1,394 +0,0 @@ -#include -#include - -extern void NitroMain(void); -extern void OS_IrqHandler(void); -static void do_autoload(void); -static void init_cp15(void); -void _start(void); -static void INITi_CpuClear32(register u32 data, register void * destp, register u32 size); -extern void * const _start_ModuleParams[]; -void _start_AutoloadDoneCallback(void * argv[]); - -extern void __call_static_initializers(void); -extern void _fp_init(void); - -extern void SDK_IRQ_STACKSIZE(void); -extern void SDK_AUTOLOAD_START(void); -extern void SDK_AUTOLOAD_LIST(void); -extern void SDK_AUTOLOAD_LIST_END(void); -extern void SDK_STATIC_BSS_START(void); -extern void SDK_STATIC_BSS_END(void); - -#include -#define SDK_VERSION_ID ((u32)SDK_VERSION_MAJOR << 24 | \ - (u32)SDK_VERSION_MINOR << 16 | \ - (u32)SDK_VERSION_RELSTEP) - -#define SDK_NITROCODE_LE 0x2106c0de -#define SDK_NITROCODE_BE 0xdec00621 - -#define INITi_HW_DTCM SDK_AUTOLOAD_DTCM_START - -SDK_WEAK_SYMBOL asm void _start (void) { - mov r12, #HW_REG_BASE - str r12, [r12, #REG_IME_OFFSET] - @wait_vcount_0: - ldrh r0, [r12, #REG_VCOUNT_OFFSET] - cmp r0, #0 - bne @wait_vcount_0 - bl init_cp15 - mov r0, #HW_PSR_SVC_MODE - msr cpsr_c, r0 - ldr r0, = INITi_HW_DTCM - add r0, r0, #0x3fc0 - mov sp, r0 - mov r0, #HW_PSR_IRQ_MODE - msr cpsr_c, r0 - ldr r0, = INITi_HW_DTCM - add r0, r0, #0x3fc0 - sub r0, r0, #HW_SVC_STACK_SIZE - sub sp, r0, #4 - tst sp, #4 - beq @do_sub - b @skip_sub - @do_sub: - sub sp, sp, #4 - @skip_sub: - ldr r1, = SDK_IRQ_STACKSIZE - sub r1, r0, r1 - mov r0, #HW_PSR_SYS_MODE - msr cpsr_csfx, r0 - sub sp, r1, #4 - mov r0, #0 - ldr r1, = INITi_HW_DTCM - mov r2, #HW_DTCM_SIZE - bl INITi_CpuClear32 - mov r0, #0 - ldr r1, = HW_PLTT - mov r2, #HW_PLTT_SIZE - bl INITi_CpuClear32 - mov r0, #0x0200 - ldr r1, = HW_OAM - mov r2, #HW_OAM_SIZE - bl INITi_CpuClear32 - ldr r1, = _start_ModuleParams - ldr r0, [r1, #20] - bl MIi_UncompressBackward - bl do_autoload - ldr r0, = _start_ModuleParams - ldr r1, [r0, #12] - ldr r2, [r0, #16] - mov r3, r1 - mov r0, #0 - @1: cmp r1, r2 - bcc @do_str - b @skip_str - @do_str: - str r0, [r1], #4 - @skip_str: - bcc @1 - bic r1, r3, #HW_CACHE_LINE_SIZE - 1 - @cacheflush: - mcr p15, 0, r0, c7, c10, 4 - mcr p15, 0, r1, c7, c5, 1 - mcr p15, 0, r1, c7, c14, 1 - add r1, r1, #HW_CACHE_LINE_SIZE - cmp r1, r2 - blt @cacheflush - ldr r1, = HW_COMPONENT_PARAM - str r0, [r1, #0] - ldr r1, = INITi_HW_DTCM - add r1, r1, #0x3fc0 - add r1, r1, #HW_DTCM_SYSRV_OFS_INTR_VECTOR - ldr r0, = OS_IrqHandler - str r0, [r1, #0] -#ifndef SDK_NOINIT - bl _fp_init - bl NitroStartUp - bl __call_static_initializers -#endif - ldr r1, = NitroMain - ldr lr, = HW_RESET_VECTOR - tst sp, #4 - bne @subne1 - b @subne2 - @subne1: - sub sp, sp, #4 - @subne2: - bx r1 -} - -static asm void INITi_CpuClear32 (register u32 data, register void * destp, register u32 size) { - add r12, r1, r2 - @20: - cmp r1, r12 - blt @stmltia1 - b @stmltia2 - @stmltia1: - stmia r1 !, {r0} - @stmltia2: - blt @20 - bx lr -} - -void * const _start_ModuleParams[] = { - (void *)SDK_AUTOLOAD_LIST, - (void *)SDK_AUTOLOAD_LIST_END, - (void *)SDK_AUTOLOAD_START, - (void *)SDK_STATIC_BSS_START, - (void *)SDK_STATIC_BSS_END, - (void *)0, - (void *)SDK_VERSION_ID, - (void *)SDK_NITROCODE_BE, - (void *)SDK_NITROCODE_LE, -}; - -asm void MIi_UncompressBackward (register void * bottom) { -#define data r0 -#define inp_top r1 -#define outp r2 -#define inp r3 -#define outp_save r4 -#define flag r5 -#define count8 r6 -#define index r7 -#define len r12 - cmp bottom, #0 - beq @exit - stmfd sp !, {r4 - r7} - ldmdb bottom, {r1 - r2} - add outp, bottom, outp - sub inp, bottom, inp_top, LSR #24 - bic inp_top, inp_top, #0xff000000 - sub inp_top, bottom, inp_top - mov outp_save, outp - @loop: - cmp inp, inp_top - ble @end_loop - ldrb flag, [inp, #- 1] ! - mov count8, #8 - @loop8: - subs count8, count8, #1 - blt @loop - tst flag, #0x80 - bne @blockcopy - @bytecopy: - ldrb data, [inp, #- 1] ! -#ifdef SDK_TEG - sub outp, outp, #1 - swpb data, data, [outp] -#else - strb data, [outp, #- 1] ! -#endif - b @joinhere - @blockcopy: - ldrb len, [inp, #- 1] ! - ldrb index, [inp, #- 1] ! - orr index, index, len, LSL #8 - bic index, index, #0xf000 - add index, index, #0x0002 - add len, len, #0x0020 - @patterncopy: - ldrb data, [outp, index] -#ifdef SDK_TEG - sub outp, outp, #1 - swpb data, data, [outp] -#else - strb data, [outp, #- 1] ! -#endif - subs len, len, #0x0010 - bge @patterncopy - - @joinhere: - cmp inp, inp_top - mov flag, flag, LSL #1 - bgt @loop8 - @end_loop: - mov r0, #0 - bic inp, inp_top, #HW_CACHE_LINE_SIZE - 1 - @cacheflush: - mcr p15, 0, r0, c7, c10, 4 - mcr p15, 0, inp, c7, c5, 1 - mcr p15, 0, inp, c7, c14, 1 - add inp, inp, #HW_CACHE_LINE_SIZE - cmp inp, outp_save - blt @cacheflush - ldmfd sp !, {r4 - r7} - @exit bx lr -} - -static asm void do_autoload (void) { -#define ptable r0 -#define infop r1 -#define infop_end r2 -#define src r3 -#define dest r4 -#define dest_begin r5 -#define dest_end r6 -#define tmp r7 - ldr ptable, = _start_ModuleParams - ldr infop, [ptable, #0] - ldr infop_end, [ptable, #4] - ldr src, [ptable, #8] - @2: - cmp infop, infop_end - beq @skipout - ldr dest_begin, [infop], #4 - ldr tmp, [infop], #4 - add dest_end, dest_begin, tmp - mov dest, dest_begin - @1: - cmp dest, dest_end - bmi @ldrmi1 - b @ldrmi2 - @ldrmi1: - ldr tmp, [src], #4 - @ldrmi2: - bmi @strmi1 - b @strmi2 - @strmi1: - str tmp, [dest], #4 - @strmi2: - bmi @1 - ldr tmp, [infop], #4 - add dest_end, dest, tmp - mov tmp, #0 - @3: - cmp dest, dest_end - bcc @strcc1 - b @strcc2 - @strcc1: - str tmp, [dest], #4 - @strcc2: - bcc @3 - bic dest, dest_begin, #HW_CACHE_LINE_SIZE - 1 - @cacheflush: - mcr p15, 0, tmp, c7, c10, 4 - mcr p15, 0, dest, c7, c5, 1 - mcr p15, 0, dest, c7, c14, 1 - add dest, dest, #HW_CACHE_LINE_SIZE - cmp dest, dest_end - blt @cacheflush - b @2 - @skipout: - b _start_AutoloadDoneCallback -} - -SDK_WEAK_SYMBOL asm void _start_AutoloadDoneCallback (void * argv[]) { - bx lr -} - -static asm void init_cp15 (void) { - mrc p15, 0, r0, c1, c0, 0 - ldr r1, = HW_C1_ICACHE_ENABLE | HW_C1_DCACHE_ENABLE \ - | HW_C1_ITCM_ENABLE | HW_C1_DTCM_ENABLE \ - | HW_C1_ITCM_LOAD_MODE | HW_C1_DTCM_LOAD_MODE \ - | HW_C1_LD_INTERWORK_DISABLE \ - | HW_C1_PROTECT_UNIT_ENABLE - bic r0, r0, r1 - mcr p15, 0, r0, c1, c0, 0 - mov r0, #0 - mcr p15, 0, r0, c7, c5, 0 - mcr p15, 0, r0, c7, c6, 0 - mcr p15, 0, r0, c7, c10, 4 - -#define SET_PROTECTION_A(id, adr, siz) ldr r0, = (adr | HW_C6_PR_ ## siz | HW_C6_PR_ENABLE) -#define SET_PROTECTION_B(id, adr, siz) mcr p15, 0, r0, c6, id, 0 -#define REGION_BIT(a, b, c, d, e, f, g, h) (((a) << 0) | ((b) << 1) | ((c) << 2) | ((d) << 3) | ((e) << 4) | ((f) << 5) | ((g) << 6) | ((h) << 7)) -#define REGION_ACC(a, b, c, d, e, f, g, h) (((a) << 0) | ((b) << 4) | ((c) << 8) | ((d) << 12) | ((e) << 16) | ((f) << 20) | ((g) << 24) | ((h) << 28)) -#define NA 0 -#define RW 1 -#define RO 5 - - SET_PROTECTION_A(c0, HW_IOREG, 64MB) - SET_PROTECTION_B(c0, HW_IOREG, 64MB) - - SET_PROTECTION_A(c1, HW_MAIN_MEM_MAIN, 8MB) - SET_PROTECTION_B(c1, HW_MAIN_MEM_MAIN, 8MB) - -#if HW_MAIN_MEM_SUB_SIZE + HW_MAIN_MEM_SHARED_SIZE == 0x1000 - SET_PROTECTION_A(c2, HW_MAIN_MEM_SUB, 4KB) - SET_PROTECTION_B(c2, HW_MAIN_MEM_SUB, 4KB) -#elif HW_MAIN_MEM_SUB_SIZE + HW_MAIN_MEM_SHARED_SIZE == 0x2000 - SET_PROTECTION_A(c2, HW_MAIN_MEM_SUB, 8KB) - SET_PROTECTION_B(c2, HW_MAIN_MEM_SUB, 8KB) -#elif HW_MAIN_MEM_SUB_SIZE + HW_MAIN_MEM_SHARED_SIZE == 0x4000 - SET_PROTECTION_A(c2, HW_MAIN_MEM_SUB, 16KB) - SET_PROTECTION_B(c2, HW_MAIN_MEM_SUB, 16KB) -#elif HW_MAIN_MEM_SUB_SIZE + HW_MAIN_MEM_SHARED_SIZE == 0x8000 - SET_PROTECTION_A(c2, HW_MAIN_MEM_SUB, 32KB) - SET_PROTECTION_B(c2, HW_MAIN_MEM_SUB, 32KB) -#elif HW_MAIN_MEM_SUB_SIZE + HW_MAIN_MEM_SHARED_SIZE == 0x10000 - SET_PROTECTION_A(c2, HW_MAIN_MEM_SUB, 64KB) - SET_PROTECTION_B(c2, HW_MAIN_MEM_SUB, 64KB) -#elif HW_MAIN_MEM_SUB_SIZE + HW_MAIN_MEM_SHARED_SIZE == 0x20000 - SET_PROTECTION_A(c2, HW_MAIN_MEM_SUB, 128KB) - SET_PROTECTION_B(c2, HW_MAIN_MEM_SUB, 128KB) -#elif HW_MAIN_MEM_SUB_SIZE + HW_MAIN_MEM_SHARED_SIZE == 0x40000 - SET_PROTECTION_A(c2, HW_MAIN_MEM_SUB, 256KB) - SET_PROTECTION_B(c2, HW_MAIN_MEM_SUB, 256KB) -#elif HW_MAIN_MEM_SUB_SIZE + HW_MAIN_MEM_SHARED_SIZE == 0x80000 - SET_PROTECTION_A(c2, HW_MAIN_MEM_SUB, 512KB) - SET_PROTECTION_B(c2, HW_MAIN_MEM_SUB, 512KB) -#elif HW_MAIN_MEM_SUB_SIZE + HW_MAIN_MEM_SHARED_SIZE == 0x100000 - SET_PROTECTION_A(c2, HW_MAIN_MEM_SUB, 1MB) - SET_PROTECTION_B(c2, HW_MAIN_MEM_SUB, 1MB) -#elif HW_MAIN_MEM_SUB_SIZE + HW_MAIN_MEM_SHARED_SIZE == 0x200000 - SET_PROTECTION_A(c2, HW_MAIN_MEM_SUB, 2MB) - SET_PROTECTION_B(c2, HW_MAIN_MEM_SUB, 2MB) -#else -#pragma message(ERROR: Size unmatch HW_MAIN_MEM_SUB_SIZE) -#endif - - SET_PROTECTION_A(c3, HW_CTRDG_ROM, 128MB) - SET_PROTECTION_B(c3, HW_CTRDG_ROM, 128MB) - - ldr r0, = SDK_AUTOLOAD_DTCM_START - orr r0, r0, #HW_C6_PR_16KB - orr r0, r0, #HW_C6_PR_ENABLE - SET_PROTECTION_B(c4, HW_DTCM, 16KB) - - SET_PROTECTION_A(c5, HW_ITCM_IMAGE, 16MB) - SET_PROTECTION_B(c5, HW_ITCM_IMAGE, 16MB) - - SET_PROTECTION_A(c6, HW_BIOS, 32KB) - SET_PROTECTION_B(c6, HW_BIOS, 32KB) - - SET_PROTECTION_A(c7, HW_MAIN_MEM_SHARED, 4KB) - SET_PROTECTION_B(c7, HW_MAIN_MEM_SHARED, 4KB) - -#if HW_MAIN_MEM_SHARED_SIZE != 0x1000 -#pragma message(ERROR: Size unmatch HW_MAIN_MEM_SHARED_SIZE) -#endif - mov r0, #HW_C9_TCMR_32MB - mcr p15, 0, r0, c9, c1, 1 - ldr r0, = INITi_HW_DTCM - orr r0, r0, #HW_C9_TCMR_16KB - mcr p15, 0, r0, c9, c1, 0 - mov r0, #REGION_BIT(0, 1, 0, 0, 0, 0, 1, 0) - mcr p15, 0, r0, c2, c0, 1 - mov r0, #REGION_BIT(0, 1, 0, 0, 0, 0, 1, 0) - mcr p15, 0, r0, c2, c0, 0 - mov r0, #REGION_BIT(0, 1, 0, 0, 0, 0, 0, 0) - mcr p15, 0, r0, c3, c0, 0 - ldr r0, = REGION_ACC(RW, RW, NA, NA, NA, RW, RO, NA) - mcr p15, 0, r0, c5, c0, 3 - ldr r0, = REGION_ACC(RW, RW, NA, RW, RW, RW, RO, RW) - mcr p15, 0, r0, c5, c0, 2 - mrc p15, 0, r0, c1, c0, 0 - ldr r1, = HW_C1_ICACHE_ENABLE | HW_C1_DCACHE_ENABLE | HW_C1_CACHE_ROUND_ROBIN \ - | HW_C1_ITCM_ENABLE | HW_C1_DTCM_ENABLE \ - | HW_C1_SB1_BITSET | HW_C1_EXCEPT_VEC_UPPER \ - | HW_C1_PROTECT_UNIT_ENABLE - orr r0, r0, r1 - mcr p15, 0, r0, c1, c0, 0 - bx lr -} - -SDK_WEAK_SYMBOL void NitroStartUp (void) { -} - -void OSi_ReferSymbol (void * symbol) { -#pragma unused(symbol) -} diff --git a/subprojects/NitroSDK/libraries/math/meson.build b/subprojects/NitroSDK/libraries/math/meson.build deleted file mode 100644 index a2ddfa1899..0000000000 --- a/subprojects/NitroSDK/libraries/math/meson.build +++ /dev/null @@ -1,15 +0,0 @@ -libmath_srcs = files( - 'src/math.c', - 'src/dgt.c', - 'src/crc.c' -) - -libmath = static_library('math', - sources: [libmath_srcs, fx_const_h], - c_args: [c_args, sdk_args], - include_directories: [public_includes], - c_pch: nitro_pch, - pic: false -) - -nitrosdk_libs += libmath diff --git a/subprojects/NitroSDK/libraries/math/src/crc.c b/subprojects/NitroSDK/libraries/math/src/crc.c deleted file mode 100644 index 47870a86ce..0000000000 --- a/subprojects/NitroSDK/libraries/math/src/crc.c +++ /dev/null @@ -1,214 +0,0 @@ -#include - -void MATHi_CRC8InitTable (MATHCRC8Table * table, u8 poly) { - u32 r; - u32 i, j; - u8 * t = table->table; - - for (i = 0; i < 256; i++) { - r = i; - for (j = 0; j < 8; j++) { - if (r & 0x80) { - r = (r << 1) ^ poly; - } else { - r <<= 1; - } - } - t[i] = (u8)r; - } -} - -void MATHi_CRC8InitTableRev (MATHCRC8Table * table, u8 poly) { - u32 r; - u32 i, j; - u8 * t = table->table; - - for (i = 0; i < 256; i++) { - r = i; - for (j = 0; j < 8; j++) { - if (r & 1) { - r = (r >> 1) ^ poly; - } else { - r >>= 1; - } - } - t[i] = (u8)r; - } -} - -void MATHi_CRC8Update (const MATHCRC8Table * table, MATHCRC8Context * context, const void * input, u32 length) { - u32 r; - u32 i; - const u8 * t = table->table; - u8 * data = (u8 *)input; - - r = (u32) * context; - for (i = 0; i < length; i++) { - r = t[(r ^ *data) & 0xff]; - data++; - } - *context = (MATHCRC8Context)r; -} - -void MATHi_CRC16InitTable (MATHCRC16Table * table, u16 poly) { - u32 r; - u32 i, j; - u16 * t = table->table; - - for (i = 0; i < 256; i++) { - r = i << 8; - for (j = 0; j < 8; j++) { - if (r & 0x8000) { - r = (r << 1) ^ poly; - } else { - r <<= 1; - } - } - t[i] = (u16)r; - } -} - -void MATHi_CRC16InitTableRev (MATHCRC16Table * table, u16 poly) { - u32 r; - u32 i, j; - u16 * t = table->table; - - for (i = 0; i < 256; i++) { - r = i; - for (j = 0; j < 8; j++) { - if (r & 1) { - r = (r >> 1) ^ poly; - } else { - r >>= 1; - } - } - t[i] = (u16)r; - } -} - -void MATHi_CRC16Update (const MATHCRC16Table * table, MATHCRC16Context * context, const void * input, u32 length) { - u32 r; - u32 i; - const u16 * t = table->table; - u8 * data = (u8 *)input; - - r = (u32) * context; - for (i = 0; i < length; i++) { - r = (r << 8) ^ t[((r >> 8) ^ *data) & 0xff]; - data++; - } - *context = (MATHCRC16Context)r; -} - -void MATHi_CRC16UpdateRev (const MATHCRC16Table * table, MATHCRC16Context * context, const void * input, u32 length) { - u32 r; - u32 i; - const u16 * t = table->table; - u8 * data = (u8 *)input; - - r = (u32) * context; - for (i = 0; i < length; i++) { - r = (r >> 8) ^ t[(r ^ *data) & 0xff]; - data++; - } - *context = (MATHCRC16Context)r; -} - -void MATHi_CRC32InitTable (MATHCRC32Table * table, u32 poly) { - u32 r; - u32 i, j; - u32 * t = table->table; - - for (i = 0; i < 256; i++) { - r = i << 24; - for (j = 0; j < 8; j++) { - if (r & 0x80000000U) { - r = (r << 1) ^ poly; - } else { - r <<= 1; - } - } - t[i] = r; - } -} - -void MATHi_CRC32InitTableRev (MATHCRC32Table * table, u32 poly) { - u32 r; - u32 i, j; - u32 * t = table->table; - - for (i = 0; i < 256; i++) { - r = i; - for (j = 0; j < 8; j++) { - if (r & 1) { - r = (r >> 1) ^ poly; - } else { - r >>= 1; - } - } - t[i] = r; - } -} - -void MATHi_CRC32Update (const MATHCRC32Table * table, MATHCRC32Context * context, const void * input, u32 length) { - u32 r; - u32 i; - const u32 * t = table->table; - u8 * data = (u8 *)input; - - r = (u32) * context; - for (i = 0; i < length; i++) { - r = (r << 8) ^ t[((r >> 24) ^ *data) & 0xff]; - data++; - } - *context = (MATHCRC32Context)r; -} - -void MATHi_CRC32UpdateRev (const MATHCRC32Table * table, MATHCRC32Context * context, const void * input, u32 length) { - u32 r; - u32 i; - const u32 * t = table->table; - u8 * data = (u8 *)input; - - r = (u32) * context; - for (i = 0; i < length; i++) { - r = (r >> 8) ^ t[(r ^ *data) & 0xff]; - data++; - } - *context = (MATHCRC32Context)r; -} - -u8 MATH_CalcCRC8 (const MATHCRC8Table * table, const void * data, u32 dataLength) { - MATHCRC8Context context; - MATH_CRC8Init(&context); - MATH_CRC8Update(table, &context, data, dataLength); - return MATH_CRC8GetHash(&context); -} - -u16 MATH_CalcCRC16 (const MATHCRC16Table * table, const void * data, u32 dataLength) { - MATHCRC16Context context; - MATH_CRC16Init(&context); - MATH_CRC16Update(table, &context, data, dataLength); - return MATH_CRC16GetHash(&context); -} - -u16 MATH_CalcCRC16CCITT (const MATHCRC16Table * table, const void * data, u32 dataLength) { - MATHCRC16Context context; - MATH_CRC16CCITTInit(&context); - MATH_CRC16CCITTUpdate(table, &context, data, dataLength); - return MATH_CRC16CCITTGetHash(&context); -} - -u32 MATH_CalcCRC32 (const MATHCRC32Table * table, const void * data, u32 dataLength) { - MATHCRC32Context context; - MATH_CRC32Init(&context); - MATH_CRC32Update(table, &context, data, dataLength); - return MATH_CRC32GetHash(&context); -} - -u32 MATH_CalcCRC32POSIX (const MATHCRC32Table * table, const void * data, u32 dataLength) { - MATHCRC32Context context; - MATH_CRC32POSIXInit(&context); - MATH_CRC32POSIXUpdate(table, &context, data, dataLength); - return MATH_CRC32POSIXGetHash(&context); -} diff --git a/subprojects/NitroSDK/libraries/math/src/dgt.c b/subprojects/NitroSDK/libraries/math/src/dgt.c deleted file mode 100644 index af316539ac..0000000000 --- a/subprojects/NitroSDK/libraries/math/src/dgt.c +++ /dev/null @@ -1,15 +0,0 @@ -#include - -void MATH_CalcMD5 (void * digest, const void * data, u32 dataLength) { - MATHMD5Context context; - MATH_MD5Init(&context); - MATH_MD5Update(&context, data, dataLength); - MATH_MD5GetHash(&context, digest); -} - -void MATH_CalcSHA1 (void * digest, const void * data, u32 dataLength) { - MATHSHA1Context context; - MATH_SHA1Init(&context); - MATH_SHA1Update(&context, data, dataLength); - MATH_SHA1GetHash(&context, digest); -} diff --git a/subprojects/NitroSDK/libraries/math/src/math.c b/subprojects/NitroSDK/libraries/math/src/math.c deleted file mode 100644 index 5100bdfe1f..0000000000 --- a/subprojects/NitroSDK/libraries/math/src/math.c +++ /dev/null @@ -1,67 +0,0 @@ -#include - -#if defined(SDK_ARM9) && (defined(SDK_CW) || defined(__MWERKS__)) - -#pragma thumb off -u32 MATH_CountLeadingZerosFunc (u32 x) { - asm - { - clz x, x - } - return x; -} -#pragma thumb reset - -#else - -u32 MATH_CountLeadingZerosFunc (u32 x) { - u32 y; - u32 n = 32; - - y = x >> 16; - if (y != 0) { - n -= 16; - x = y; - } - y = x >> 8; - if (y != 0) { - n -= 8; - x = y; - } - y = x >> 4; - if (y != 0) { - n -= 4; - x = y; - } - y = x >> 2; - if (y != 0) { - n -= 2; - x = y; - } - y = x >> 1; - if (y != 0) { - n -= 2; - } else { - n -= x; - } - - return n; -} - -#endif - -u8 MATH_CountPopulation (u32 x) { - x -= ((x >> 1) & 0x55555555); - - x = (x & 0x33333333) + ((x >> 2) & 0x33333333); - - x += (x >> 4); - - x &= 0x0f0f0f0f; - - x += (x >> 8); - - x += (x >> 16); - - return (u8)x; -} diff --git a/subprojects/NitroSDK/libraries/mb/meson.build b/subprojects/NitroSDK/libraries/mb/meson.build deleted file mode 100644 index 622c5efa24..0000000000 --- a/subprojects/NitroSDK/libraries/mb/meson.build +++ /dev/null @@ -1,22 +0,0 @@ -libmb_srcs = files( - 'src/mb_parent.c', - 'src/mb_fileinfo.c', - 'src/mb_common.c', - 'src/mb_gameinfo.c', - 'src/mb_wm_base.c', - 'src/mb_cache.c', - 'src/mb_task.c', - 'src/mb_block.c' -) - -libmb_internal_includes = include_directories('src/include') - -libmb = static_library('mb', - sources: [libmb_srcs, fx_const_h], - c_args: [c_args, sdk_args], - include_directories: [public_includes, libmb_internal_includes], - c_pch: nitro_pch, - pic: false -) - -nitrosdk_libs += libmb diff --git a/subprojects/NitroSDK/libraries/mb/src/include/mb_block.h b/subprojects/NitroSDK/libraries/mb/src/include/mb_block.h deleted file mode 100644 index 7d068e89f7..0000000000 --- a/subprojects/NitroSDK/libraries/mb/src/include/mb_block.h +++ /dev/null @@ -1,58 +0,0 @@ -#ifndef _MB_BLOCK_H_ -#define _MB_BLOCK_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include - -#include "mb_common.h" - -typedef struct { - u8 type; - u8 pad1[1]; - u16 fid; - u16 seqno; -} MBCommParentBlockHeader; - -typedef struct { - u8 type; - u8 pad1[1]; - union { - struct { - u16 req; - u8 reserved[MB_COMM_CALC_REQ_DATA_PIECE_SIZE(MB_COMM_P_RECVLEN_MAX)]; - } data; - - struct { - u8 piece; - - u8 data[MB_COMM_CALC_REQ_DATA_PIECE_SIZE(MB_COMM_P_RECVLEN_MAX)]; - u8 pad2[1]; - } req_data; - }; -} MBCommChildBlockHeader; - -typedef struct { - u32 data_buf[MB_MAX_CHILD][MB_COMM_CALC_REQ_DATA_BUF_SIZE(MB_COMM_P_RECVLEN_MAX) / - sizeof(u32) + 1]; - u32 data_bmp[MB_MAX_CHILD]; -} MbRequestPieceBuf; - -void MBi_SetChildMPMaxSize(u16 childMaxSize); -void MBi_SetParentPieceBuffer(MbRequestPieceBuf * buf); -void MBi_ClearParentPieceBuffer(u16 child_aid); -u8 * MBi_MakeParentSendBuffer(const MBCommParentBlockHeader * hdr, u8 * sendbuf); -u8 * MBi_SetRecvBufferFromChild(const u8 * recvbuf, MBCommChildBlockHeader * hdr, u16 child_id); -u8 * MBi_MakeChildSendBuffer(const MBCommChildBlockHeader * hdr, u8 * sendbuf); -u8 MBi_SendRequestDataPiece(u8 * pData, const MBCommRequestData * pReq); -u8 * MBi_SetRecvBufferFromParent(MBCommParentBlockHeader * hdr, const u8 * recvbuf); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/libraries/mb/src/include/mb_cache.h b/subprojects/NitroSDK/libraries/mb/src/include/mb_cache.h deleted file mode 100644 index 0eeb580b85..0000000000 --- a/subprojects/NitroSDK/libraries/mb/src/include/mb_cache.h +++ /dev/null @@ -1,44 +0,0 @@ -#if !defined(NITRO_MB_CACHE_H_) -#define NITRO_MB_CACHE_H_ - -#if defined(__cplusplus) -extern "C" -{ -#endif - -#define MB_CACHE_INFO_MAX 4 - -#define MB_CACHE_STATE_EMPTY 0 -#define MB_CACHE_STATE_BUSY 1 -#define MB_CACHE_STATE_READY 2 -#define MB_CACHE_STATE_LOCKED 3 - -typedef struct { - u32 src; - u32 len; - u8 * ptr; - u32 state; -} MBiCacheInfo; - -typedef struct { - u32 lifetime; - u32 recent; - MBiCacheInfo * p_list; - u32 size; - char arc_name[FS_ARCHIVE_NAME_LEN_MAX + 1]; - u32 arc_name_len; - FSArchive * arc_pointer; - u8 reserved[32 - FS_ARCHIVE_NAME_LEN_MAX - 1 - sizeof(u32) - sizeof(FSArchive *)]; - MBiCacheInfo list[MB_CACHE_INFO_MAX]; -} MBiCacheList; - -void MBi_InitCache(MBiCacheList * pl); -void MBi_AttachCacheBuffer(MBiCacheList * pl, u32 src, u32 len, void * ptr, u32 state); -BOOL MBi_ReadFromCache(MBiCacheList * pl, u32 src, void * dst, u32 len); -BOOL MBi_TryLoadCache(MBiCacheList * pl, u32 src, u32 len); - -#if defined(__cplusplus) -} -#endif - -#endif diff --git a/subprojects/NitroSDK/libraries/mb/src/include/mb_child.h b/subprojects/NitroSDK/libraries/mb/src/include/mb_child.h deleted file mode 100644 index d111bbdff9..0000000000 --- a/subprojects/NitroSDK/libraries/mb/src/include/mb_child.h +++ /dev/null @@ -1,49 +0,0 @@ -#ifndef _MB_CHILD_H_ -#define _MB_CHILD_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include "mb_fileinfo.h" -#include "mb_gameinfo.h" - -#define MB_CHILD_SYSTEM_BUF_SIZE (0x6000) - -#define MB_MAX_SEND_BUFFER_SIZE (0x400) -#define MB_MAX_RECV_BUFFER_SIZE (0x80) - -#define MB_LOAD_AREA_LO (HW_MAIN_MEM) -#define MB_LOAD_AREA_HI (HW_MAIN_MEM + 0x002c0000) -#define MB_LOAD_MAX_SIZE (MB_LOAD_AREA_HI - MB_LOAD_AREA_LO) - -#define MB_ARM7_STATIC_RECV_BUFFER MB_LOAD_AREA_HI -#define MB_ARM7_STATIC_RECV_BUFFER_END (HW_MAIN_MEM + 0x00300000) -#define MB_ARM7_STATIC_RECV_BUFFER_SIZE (MB_ARM7_STATIC_RECV_BUFFER_END - MB_LOAD_AREA_HI) -#define MB_ARM7_STATIC_LOAD_AREA_HI (MB_LOAD_AREA_HI + MB_ARM7_STATIC_RECV_BUFFER_SIZE) -#define MB_ARM7_STATIC_LOAD_WRAM_MAX_SIZE (0x18000 - 0x1000) - -#define MB_BSSDESC_ADDRESS (HW_MAIN_MEM + 0x003fe800) - -#define MB_DOWNLOAD_FILEINFO_ADDRESS (MB_BSSDESC_ADDRESS + ((( MB_BSSDESC_SIZE )+(32) - 1) & ~((32) - 1))) - -#define MB_CARD_ROM_HEADER_ADDRESS (MB_DOWNLOAD_FILEINFO_ADDRESS + ((( MB_DOWNLOAD_FILEINFO_SIZE )+(32) - 1) & ~((32) - 1))) - -#define MB_ROM_HEADER_ADDRESS HW_ROM_HEADER_BUF - -int MB_StartChild(void); -int MB_GetChildSystemBufSize(void); -void MB_CommSetChildStateCallback(MBCommCStateCallbackFunc callback); -int MB_CommGetChildState(void); -BOOL MB_CommStartDownload(void); -u16 MB_GetChildProgressPercentage(void); -int MB_CommDownloadRequest(int index); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/libraries/mb/src/include/mb_common.h b/subprojects/NitroSDK/libraries/mb/src/include/mb_common.h deleted file mode 100644 index 6dab622163..0000000000 --- a/subprojects/NitroSDK/libraries/mb/src/include/mb_common.h +++ /dev/null @@ -1,72 +0,0 @@ -#ifndef __MB_COMMON_H__ -#define __MB_COMMON_H__ - -#ifdef PRINT_DEBUG -#define MB_COMM_TYPE_OUTPUT MBi_comm_type_output -#define MB_COMM_WMEVENT_OUTPUT MBi_comm_wmevent_output -#else -#define MB_COMM_TYPE_OUTPUT(...) ((void)0) -#define MB_COMM_WMEVENT_OUTPUT(...) ((void)0) -#endif - -#define MB_COMM_P_SENDLEN_DEFAULT (256) -#define MB_COMM_P_RECVLEN_DEFAULT (8) - -#define MB_COMM_P_SENDLEN_MAX MB_COMM_PARENT_SEND_MAX -#define MB_COMM_P_RECVLEN_MAX MB_COMM_PARENT_RECV_MAX - -#define MB_COMM_P_SENDLEN_MIN (sizeof(MBDownloadFileInfo)) -#define MB_COMM_P_RECVLEN_MIN MB_COMM_PARENT_RECV_MIN - -#define MB_COMM_REQ_DATA_SIZE (29) - -#define MB_COMM_CALC_REQ_DATA_PIECE_SIZE(__P_RECVLEN__) (( __P_RECVLEN__ )-2) -#define MB_COMM_CALC_REQ_DATA_PIECE_NUM(__P_RECVLEN__) \ - ((MB_COMM_REQ_DATA_SIZE + 1) / (MB_COMM_CALC_REQ_DATA_PIECE_SIZE(__P_RECVLEN__))) -#define MB_COMM_CALC_REQ_DATA_BUF_SIZE(__P_RECVLEN__) (MB_COMM_REQ_DATA_SIZE + 1) - -#define MB_COMM_PARENT_HEADER_SIZE (6) -#define MB_COMM_CHILD_HEADER_SIZE (8) - -#define MB_COMM_CALC_BLOCK_SIZE(__P_SENDLEN__) (( __P_SENDLEN__ )-MB_COMM_PARENT_HEADER_SIZE) - -#define MB_SENDFUNC_STATE_ERR (WM_ERRCODE_MAX + 1) - -typedef enum MBCommType { - MB_COMM_TYPE_DUMMY = 0, - - MB_COMM_TYPE_PARENT_SENDSTART, - MB_COMM_TYPE_PARENT_KICKREQ, - MB_COMM_TYPE_PARENT_DL_FILEINFO, - MB_COMM_TYPE_PARENT_DATA, - MB_COMM_TYPE_PARENT_BOOTREQ, - MB_COMM_TYPE_PARENT_MEMBER_FULL, - MB_COMM_TYPE_CHILD_FILEREQ, - MB_COMM_TYPE_CHILD_ACCEPT_FILEINFO, - MB_COMM_TYPE_CHILD_CONTINUE, - MB_COMM_TYPE_CHILD_STOPREQ, - MB_COMM_TYPE_CHILD_BOOTREQ_ACCEPTED -} MBCommType; - -typedef enum MBCommUserReq { - MB_COMM_USER_REQ_NONE = 0, - MB_COMM_USER_REQ_DL_START, - MB_COMM_USER_REQ_SEND_START, - MB_COMM_USER_REQ_ACCEPT, - MB_COMM_USER_REQ_KICK, - MB_COMM_USER_REQ_BOOT -} MBCommUserReq; - -typedef struct { - u16 apiid; - u16 errcode; -} MBErrorCallback; - -void MBi_BlockHeaderBegin(u8 type, u32 * sendbuf); -int MBi_BlockHeaderEnd(int body_len, u16 pollbmp, u32 * sendbuf); -u16 MBi_calc_cksum(const u16 * buf, int length); -void MBi_DebugPrint(const char * file, int line, const char * func, const char * fmt, ...); -void MBi_comm_type_output(u16 type); -void MBi_comm_wmevent_output(u16 type, void * arg); - -#endif diff --git a/subprojects/NitroSDK/libraries/mb/src/include/mb_fileinfo.h b/subprojects/NitroSDK/libraries/mb/src/include/mb_fileinfo.h deleted file mode 100644 index f4c347f458..0000000000 --- a/subprojects/NitroSDK/libraries/mb/src/include/mb_fileinfo.h +++ /dev/null @@ -1,66 +0,0 @@ -#ifndef __MB_FILEINFO_H__ -#define __MB_FILEINFO_H__ - -#include -#include - -#define MB_DL_SEGMENT_NUM (3) -#define MB_DOWNLOAD_FILEINFO_SIZE (sizeof(MBDownloadFileInfo)) - -#define MB_AUTHCODE_SIZE (136) - -#define ROM_HEADER_SIZE_FULL (0x160) - -typedef enum MbSegmentType { - MB_SEG_ARM9STATIC = 0, - MB_SEG_ARM7STATIC, - MB_SEG_ROMHEADER -} MbSegmentType; - -typedef struct MbDownloadFileInfoHeader { - u32 arm9EntryAddr; - u32 arm7EntryAddr; - u32 padding; -} MbDownloadFileInfoHeader; - -typedef struct MbSegmentInfo { - u32 recv_addr; - u32 load_addr; - u32 size; - u32 target : 1; - u32 rsv : 31; -} MbSegmentInfo; - -typedef struct { - MbDownloadFileInfoHeader header; - MbSegmentInfo seg[MB_DL_SEGMENT_NUM]; - u32 auth_code[MB_AUTHCODE_SIZE / sizeof(u32)]; - u32 reserved[32 / sizeof(u32)]; -} MBDownloadFileInfo; - -typedef struct { - u32 seg_src_offset[MB_DL_SEGMENT_NUM]; - u16 seg_head_blockno[MB_DL_SEGMENT_NUM]; - u16 block_num; -} MB_BlockInfoTable; - -typedef struct { - u32 child_address; - u32 size; - u32 offset; - u8 segment_no; - u8 pad[3]; -} MB_BlockInfo; - -extern const MbSegmentType MBi_defaultLoadSegList[MB_DL_SEGMENT_NUM]; - -static inline MbSegmentInfo * MBi_GetSegmentInfo (MbDownloadFileInfoHeader * mdfi, int i) { - return ((MbSegmentInfo *)(mdfi + 1)) + i; -} - -BOOL MBi_MakeBlockInfoTable(MB_BlockInfoTable * table, MbDownloadFileInfoHeader * mdfi); -BOOL MBi_get_blockinfo(MB_BlockInfo * bi, MB_BlockInfoTable * table, u32 block, MbDownloadFileInfoHeader * mdfi); -u16 MBi_get_blocknum(MB_BlockInfoTable * table); -BOOL MBi_IsAbleToRecv(u8 segment_no, u32 address, u32 size); - -#endif diff --git a/subprojects/NitroSDK/libraries/mb/src/include/mb_gameinfo.h b/subprojects/NitroSDK/libraries/mb/src/include/mb_gameinfo.h deleted file mode 100644 index fb3e112f41..0000000000 --- a/subprojects/NitroSDK/libraries/mb/src/include/mb_gameinfo.h +++ /dev/null @@ -1,82 +0,0 @@ -#ifndef MB_GAME_INFO_H_ -#define MB_GAME_INFO_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include - -#define MB_GAMEINFO_PARENT_FLAG (0x0001) -#define MB_GAMEINFO_CHILD_FLAG(__child_aid__) (1 << (__child_aid__)) - -typedef struct MBGameInfoRecvList { - MBGameInfo gameInfo; - WMBssDesc bssDesc; - u32 getFlagmentFlag; - u32 allFlagmentFlag; - u16 getPlayerFlag; - s16 lifetimeCount; - u16 linkLevel; - u8 beaconNo; - u8 sameBeaconRecvCount; -} MBGameInfoRecvList, MbGameInfoRecvList; - -typedef struct MbBeaconRecvStatus { - u16 usingGameInfoFlag; - u16 usefulGameInfoFlag; - - u16 validGameInfoFlag; - u16 nowScanTargetFlag; - s16 nowLockTimeCount; - s16 notFoundLockTargetCount; - u16 scanCountUnit; - u8 pad[2]; - MBGameInfoRecvList list[MB_GAME_INFO_RECV_LIST_NUM]; -} MbBeaconRecvStatus; - -typedef enum MbBeaconMsg { - MB_BC_MSG_GINFO_VALIDATED = 1, - MB_BC_MSG_GINFO_INVALIDATED, - MB_BC_MSG_GINFO_LOST, - MB_BC_MSG_GINFO_LIST_FULL, - MB_BC_MSG_GINFO_BEACON -} MbBeaconMsg; - -typedef void (* MBBeaconMsgCallback) (MbBeaconMsg msg, MBGameInfoRecvList * gInfop, int index); - -typedef void (* MbScanLockFunc) (u8 * macAddress); -typedef void (* MbScanUnlockFunc) (void); - -void MB_InitSendGameInfoStatus(void); -void MBi_MakeGameInfo(MBGameInfo * gameInfop, const MBGameRegistry * mbGameRegp, const MBUserInfo * parent); -void MB_UpdateGameInfoMember(MBGameInfo * gameInfop, const MBUserInfo * member, u16 nowPlayerFlag, u16 changePlayerFlag); -void MB_AddGameInfo(MBGameInfo * newGameInfop); -BOOL MB_DeleteGameInfo(MBGameInfo * gameInfop); -void MB_SendGameInfoBeacon(u32 ggid, u16 tgid, u8 attribute); -void MBi_SetBeaconRecvStatusBufferDefault(void); -void MBi_SetBeaconRecvStatusBuffer(MbBeaconRecvStatus * buf); -void MB_InitRecvGameInfoStatus(void); -BOOL MB_RecvGameInfoBeacon(MBBeaconMsgCallback Callbackp, u16 linkLevel, WMBssDesc * bssDescp); -void MB_CountGameInfoLifetime(MBBeaconMsgCallback Callbackp, BOOL found_parent); -void MBi_SetScanLockFunc(MbScanLockFunc lockFunc, MbScanUnlockFunc unlockFunc); -MBGameInfoRecvList * MB_GetGameInfoRecvList(int index); -const MbBeaconRecvStatus * MB_GetBeaconRecvStatus(void); -void MB_DeleteRecvGameInfo(int index); -void MB_DeleteRecvGameInfoWithoutBssdesc(int index); - -#if defined(MB_CHANGE_TO_UNICODE) - -void MBi_ExSJIS_BEtoUTF16_LE(u8 * sjisp, u16 * unip, u16 length); -void MBi_ExUTF16_LEtoSJIS_BE(u8 * sjisp, u16 * unip, u16 length); -void MBi_CheckSJIS_BEtoUTF16_LE(void); - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/libraries/mb/src/include/mb_private.h b/subprojects/NitroSDK/libraries/mb/src/include/mb_private.h deleted file mode 100644 index 631b6158ba..0000000000 --- a/subprojects/NitroSDK/libraries/mb/src/include/mb_private.h +++ /dev/null @@ -1,128 +0,0 @@ -#ifndef _MB_PRIVATE_H_ -#define _MB_PRIVATE_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#if !defined(NITRO_FINALROM) - -#endif - -#define CALLBACK_WM_STATE 0 - -#include -#include -#include - -#include "mb_wm_base.h" -#include "mb_common.h" -#include "mb_block.h" -#include "mb_rom_header.h" -#include "mb_gameinfo.h" -#include "mb_fileinfo.h" -#include "mb_child.h" -#include "mb_cache.h" -#include "mb_task.h" - -#ifdef PRINT_DEBUG -#define MB_OUTPUT(...) OS_TPrintf(__VA_ARGS__) -#define MB_DEBUG_OUTPUT(...) MBi_DebugPrint(__FILE__, __LINE__, __FUNCTION__, __VA_ARGS__) - -#else -#define MB_OUTPUT(...) ((void)0) -#define MB_DEBUG_OUTPUT(...) ((void)0) -#endif - -#define MB_IPL_VERSION (0x0001) -#define MB_MAX_BLOCK 12288 - -#define MB_NUM_PARENT_INFORMATIONS 16 - -#define MB_SCAN_TIME_NORMAL 10 -#define MB_SCAN_TIME_LOCKING 220 - -typedef struct MB_CommCommonWork { - u32 sendbuf[MB_MAX_SEND_BUFFER_SIZE / sizeof(u32)] ATTRIBUTE_ALIGN(32); - u32 recvbuf[MB_MAX_RECV_BUFFER_SIZE * MB_MAX_CHILD * 2 / sizeof(u32)] ATTRIBUTE_ALIGN(32); - MBUserInfo user; - u16 isMbInitialized; - int block_size_max; - BOOL start_mp_busy; - BOOL is_started_ex; - u8 padding[28]; -} MB_CommCommonWork; - -typedef struct MB_CommPWork { - MB_CommCommonWork common; - - MBUserInfo childUser[MB_MAX_CHILD] ATTRIBUTE_ALIGN(4); - u16 childversion[MB_MAX_CHILD]; - u32 childggid[MB_MAX_CHILD]; - MBCommPStateCallback parent_callback; - int p_comm_state[MB_MAX_CHILD]; - u8 file_num; - u8 cur_fileid; - s8 fileid_of_child[MB_MAX_CHILD]; - u8 child_num; - u16 child_entry_bmp; - MbRequestPieceBuf req_data_buf; - u16 req2child[MB_MAX_CHILD]; - MBUserInfo childUserBuf; - - struct { - MBDownloadFileInfo dl_fileinfo; - MBGameInfo game_info; - MB_BlockInfoTable blockinfo_table; - MBGameRegistry * game_reg; - void * src_adr; - u16 currentb; - u16 nextb; - u16 pollbmp; - u16 gameinfo_child_bmp; - u16 gameinfo_changed_bmp; - u8 active; - u8 update; - - MBiCacheList * cache_list; - u32 * card_mapping; - } fileinfo[MB_MAX_FILE]; - - BOOL useWvrFlag; - u8 padding2[20]; - - u8 task_work[2 * 1024]; - MBiTaskInfo cur_task; -} MB_CommPWork; - -typedef struct MB_CommCWork { - MB_CommCommonWork common; - - WMBssDesc bssDescbuf ATTRIBUTE_ALIGN(32); - MBDownloadFileInfo dl_fileinfo; - MBCommCStateCallbackFunc child_callback; - int c_comm_state; - int connectTargetNo; - u8 fileid; - u8 _padding1[1]; - u16 user_req; - u16 got_block; - u16 total_block; - u8 recvflag[MB_MAX_BLOCK / 8]; - MB_BlockInfoTable blockinfo_table; - int last_recv_seq_no; - u8 boot_end_flag; - u8 _padding2[15]; -} MB_CommCWork; - -extern MB_CommCommonWork * mbc; - -#define pPwork ((MB_CommPWork *)mbc) - -#define pCwork ((MB_CommCWork *)mbc) - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/libraries/mb/src/include/mb_rom_header.h b/subprojects/NitroSDK/libraries/mb/src/include/mb_rom_header.h deleted file mode 100644 index 4f518c39dc..0000000000 --- a/subprojects/NitroSDK/libraries/mb/src/include/mb_rom_header.h +++ /dev/null @@ -1,56 +0,0 @@ -#ifndef _ROM_HEADER_H_ -#define _ROM_HEADER_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -typedef struct { - char title_name[12]; - u32 game_code; - u16 maker_code; - u8 machine_code; - u8 rom_type; - u8 rom_size; - u8 reserved_A[9]; - u8 soft_version; - u8 comp_arm9_boot_area : 1; - u8 comp_arm7_boot_area : 1; - u8 inspectCard : 1; - u8 disableClearMemoryPad : 1; - u8 : 0; - u32 main_rom_offset; - void * main_entry_address; - void * main_ram_address; - u32 main_size; - u32 sub_rom_offset; - void * sub_entry_address; - void * sub_ram_address; - u32 sub_size; - u32 fnt_offset; - u32 fnt_size; - u32 fat_offset; - u32 fat_size; - u32 main_ovt_offset; - u32 main_ovt_size; - u32 sub_ovt_offset; - u32 sub_ovt_size; - u8 reserved_A2[32]; - u32 own_size; - u8 reserved_B[60]; - u8 nintendo_logo[0x9c]; - u16 nintendo_logo_crc16; - u16 header_crc16; - u8 reserved_C[32]; -} RomHeader; - -#define GetRomHeaderAddr() ((RomHeader *)HW_ROM_HEADER_BUF) - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/libraries/mb/src/include/mb_task.h b/subprojects/NitroSDK/libraries/mb/src/include/mb_task.h deleted file mode 100644 index 1bfee289cb..0000000000 --- a/subprojects/NitroSDK/libraries/mb/src/include/mb_task.h +++ /dev/null @@ -1,41 +0,0 @@ -#if !defined(NITRO_MB_TASK_H_) -#define NITRO_MB_TASK_H_ - -#if defined(__cplusplus) -extern "C" -{ -#endif - -#define MB_TASK_PRIORITY_ABOVE (OS_THREAD_PRIORITY_MAX + 1) - -#define MB_TASK_PRIORITY_BELOW (OS_THREAD_PRIORITY_MAX + 2) - -#define MB_TASK_PRIORITY_NORMAL (OS_THREAD_PRIORITY_MAX + 3) - -#define MB_TASK_WORK_MIN (sizeof(OSThread) + 256) - -struct MBiTaskInfo_tag; - -typedef void (* MB_TASK_FUNC) (struct MBiTaskInfo_tag *); - -typedef struct MBiTaskInfo_tag { - struct MBiTaskInfo_tag * next; - u32 busy : 1; - u32 priority : 31; - MB_TASK_FUNC task; - MB_TASK_FUNC callback; - u32 param[4]; -} MBiTaskInfo; - -void MBi_InitTaskThread(void * p_work, u32 size); -BOOL MBi_IsTaskAvailable(void); -void MBi_InitTaskInfo(MBiTaskInfo * pt); -BOOL MBi_IsTaskBusy(volatile const MBiTaskInfo * pt); -void MBi_SetTask(MBiTaskInfo * pt, MB_TASK_FUNC task, MB_TASK_FUNC callback, u32 priority); -void MBi_EndTaskThread(MB_TASK_FUNC callback); - -#if defined(__cplusplus) -} -#endif - -#endif diff --git a/subprojects/NitroSDK/libraries/mb/src/include/mb_wm_base.h b/subprojects/NitroSDK/libraries/mb/src/include/mb_wm_base.h deleted file mode 100644 index c63debd70f..0000000000 --- a/subprojects/NitroSDK/libraries/mb/src/include/mb_wm_base.h +++ /dev/null @@ -1,142 +0,0 @@ -#ifndef MB_WM_BASE_H_ -#define MB_WM_BASE_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -#define MB_NUM_PARENT_INFORMATIONS 16 - -#define MB_MAX_SEND_BUFFER_SIZE (0x400) - -#define MB_MODE_PARENT 1 -#define MB_MODE_CHILD 2 - -#define MB_CALLBACK_CHILD_CONNECTED 0 -#define MB_CALLBACK_CHILD_DISCONNECTED 1 -#define MB_CALLBACK_MP_PARENT_SENT 2 -#define MB_CALLBACK_MP_PARENT_RECV 3 -#define MB_CALLBACK_PARENT_FOUND 4 -#define MB_CALLBACK_PARENT_NOT_FOUND 5 -#define MB_CALLBACK_CONNECTED_TO_PARENT 6 -#define MB_CALLBACK_DISCONNECTED 7 -#define MB_CALLBACK_MP_CHILD_SENT 8 -#define MB_CALLBACK_MP_CHILD_RECV 9 -#define MB_CALLBACK_DISCONNECTED_FROM_PARENT 10 -#define MB_CALLBACK_CONNECT_FAILED 11 -#define MB_CALLBACK_DCF_CHILD_SENT 12 -#define MB_CALLBACK_DCF_CHILD_SENT_ERR 13 -#define MB_CALLBACK_DCF_CHILD_RECV 14 -#define MB_CALLBACK_DISCONNECT_COMPLETE 15 -#define MB_CALLBACK_DISCONNECT_FAILED 16 -#define MB_CALLBACK_END_COMPLETE 17 -#define MB_CALLBACK_MP_CHILD_SENT_ERR 18 -#define MB_CALLBACK_MP_PARENT_SENT_ERR 19 -#define MB_CALLBACK_MP_STARTED 20 -#define MB_CALLBACK_INIT_COMPLETE 21 -#define MB_CALLBACK_END_MP_COMPLETE 22 -#define MB_CALLBACK_SET_GAMEINFO_COMPLETE 23 -#define MB_CALLBACK_SET_GAMEINFO_FAILED 24 -#define MB_CALLBACK_MP_SEND_ENABLE 25 -#define MB_CALLBACK_PARENT_STARTED 26 -#define MB_CALLBACK_BEACON_LOST 27 -#define MB_CALLBACK_BEACON_SENT 28 -#define MB_CALLBACK_BEACON_RECV 29 -#define MB_CALLBACK_MP_SEND_DISABLE 30 -#define MB_CALLBACK_DISASSOCIATE 31 -#define MB_CALLBACK_REASSOCIATE 32 -#define MB_CALLBACK_AUTHENTICATE 33 -#define MB_CALLBACK_SET_LIFETIME 34 -#define MB_CALLBACK_DCF_STARTED 35 -#define MB_CALLBACK_DCF_SENT 36 -#define MB_CALLBACK_DCF_SENT_ERR 37 -#define MB_CALLBACK_DCF_RECV 38 -#define MB_CALLBACK_DCF_END 39 -#define MB_CALLBACK_MPACK_IND 40 -#define MB_CALLBACK_MP_CHILD_SENT_TIMEOUT 41 -#define MB_CALLBACK_SEND_QUEUE_FULL_ERR 42 - -#define MB_CALLBACK_API_ERROR 255 -#define MB_CALLBACK_ERROR 256 - -typedef struct ParentInfo { - union { - WMBssDesc parentInfo[1]; - u8 parentInfo_area[WM_BSS_DESC_SIZE] ATTRIBUTE_ALIGN(32); - }; - WMStartScanCallback scan_data; - u8 reserved1[8]; -} ParentInfo; - -typedef void (* MBCallbackFunc) (u16 type, void * arg); - -typedef struct { - union { - WMParentParam parentParam; - u8 parentParam_area[WM_PARENT_PARAM_SIZE] ATTRIBUTE_ALIGN(32); - }; - u16 sendBuf[MB_MAX_SEND_BUFFER_SIZE / sizeof(u16)] ATTRIBUTE_ALIGN(32); - union { - WMBssDesc parentInfoBuf; - u8 parentInfoBuf_area[WM_BSS_DESC_SIZE] ATTRIBUTE_ALIGN(32); - }; - u16 p_sendlen; - u16 p_recvlen; - WMMpRecvBuf * recvBuf; - void (* callback_ptr) (void * arg); - u8 mpBusy; - u8 mbIsStarted; - u8 reserved0[10]; - u16 sendBufSize; - u16 recvBufSize; - MBCallbackFunc callback; - const WMBssDesc * pInfo; - u16 mode; - u16 endReq; - u16 mpStarted; - u16 child_bitmap; - u16 contSend; - u8 reserved1[2]; - u8 uname[WM_SIZE_USERNAME] ATTRIBUTE_ALIGN(4); - u8 gname[WM_SIZE_GAMENAME] ATTRIBUTE_ALIGN(4); - u16 currentTgid; - u8 reserved2[22]; - u16 userGameInfo[((WM_SIZE_USER_GAMEINFO + 32) & ~(32 - 1)) / - sizeof(u16)] ATTRIBUTE_ALIGN(32); - struct { - u16 found_parent_count; - u16 my_aid; - BOOL scanning_flag; - BOOL scan_channel_flag; - int last_found_parent_no; - u8 reserved8[16]; - ParentInfo parent_info[MB_NUM_PARENT_INFORMATIONS]; - }; -} MBiParam; - -int MBi_GetLastFountParent(void); -WMBssDesc * MBi_GetParentBssDesc(int parent); -void MBi_SetMaxScanTime(u16 time); -int MBi_SendMP(const void * buf, int len, int pollbmp); -int MBi_GetSendBufSize(void); -int MBi_GetRecvBufSize(void); -int MBi_CommConnectToParent(const WMBssDesc * bssDescp); -u32 MBi_GetGgid(void); -u16 MBi_GetTgid(void); -u8 MBi_GetAttribute(void); -int MBi_RestartScan(void); -int MBi_GetScanChannel(void); -u16 MBi_GetAid(void); -BOOL MBi_IsStarted(void); -int MBi_CommEnd(void); -void MBi_CommParentCallback(u16 type, void * arg); -void MBi_CommChildCallback(u16 type, void * arg); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/libraries/mb/src/mb_block.c b/subprojects/NitroSDK/libraries/mb/src/mb_block.c deleted file mode 100644 index c6fef555e2..0000000000 --- a/subprojects/NitroSDK/libraries/mb/src/mb_block.c +++ /dev/null @@ -1,229 +0,0 @@ - -#include - -#include "mb_common.h" -#include "mb_block.h" -#include "mb_private.h" - -static u8 * MBi_ReceiveRequestDataPiece(const MBCommChildBlockHeader * hdr, u16 child); -static BOOL IsGetAllRequestData(u16 child); - -static struct { - int size; - int num; - int bufSize; -} req_data_piece; - -static u8 req_data_piece_idx = 0; - -static MbRequestPieceBuf * req_buf; - -void MBi_SetChildMPMaxSize (u16 childMaxSize) { - req_data_piece.size = MB_COMM_CALC_REQ_DATA_PIECE_SIZE(childMaxSize); - req_data_piece.num = MB_COMM_CALC_REQ_DATA_PIECE_NUM(childMaxSize); - req_data_piece.bufSize = MB_COMM_CALC_REQ_DATA_BUF_SIZE(childMaxSize); -} - -void MBi_SetParentPieceBuffer (MbRequestPieceBuf * buf) { - req_buf = buf; - MI_CpuClear8(req_buf, sizeof(MbRequestPieceBuf)); -} - -void MBi_ClearParentPieceBuffer (u16 child_aid) { - if (req_buf == NULL) { - return; - } - - MI_CpuClear8( - req_buf->data_buf[child_aid - 1], - MB_COMM_CALC_REQ_DATA_BUF_SIZE(req_data_piece.bufSize) - ); - req_buf->data_bmp[child_aid - 1] = 0; -} - -u8 * MBi_MakeParentSendBuffer (const MBCommParentBlockHeader * hdr, u8 * sendbuf) { - u8 * ptr = sendbuf; - - *ptr++ = hdr->type; - - switch (hdr->type) { - case MB_COMM_TYPE_PARENT_SENDSTART: - break; - case MB_COMM_TYPE_PARENT_KICKREQ: - break; - case MB_COMM_TYPE_PARENT_DL_FILEINFO: - break; - case MB_COMM_TYPE_PARENT_DATA: - *ptr++ = (u8)(0x00ff & hdr->fid); - *ptr++ = (u8)((0xff00 & hdr->fid) >> 8); - *ptr++ = (u8)(0x00ff & hdr->seqno); - *ptr++ = (u8)((0xff00 & hdr->seqno) >> 8); - break; - case MB_COMM_TYPE_PARENT_BOOTREQ: - break; - case MB_COMM_TYPE_PARENT_MEMBER_FULL: - break; - default: - return NULL; - } - - return ptr; -} - -u8 * MBi_SetRecvBufferFromChild (const u8 * recvbuf, MBCommChildBlockHeader * hdr, u16 child_id) { - u8 * ptr = (u8 *)recvbuf; - - hdr->type = *ptr++; - - switch (hdr->type) { - case MB_COMM_TYPE_CHILD_FILEREQ: - - if (IsGetAllRequestData(child_id)) { - return (u8 *)req_buf->data_buf[child_id - 1]; - } - - hdr->req_data.piece = *ptr++; - if (hdr->req_data.piece > req_data_piece.num) { - return NULL; - } - MI_CpuCopy8(ptr, hdr->req_data.data, (u32)req_data_piece.size); - ptr = MBi_ReceiveRequestDataPiece(hdr, child_id); - break; - case MB_COMM_TYPE_CHILD_ACCEPT_FILEINFO: - hdr->data.req = (u16)(0x00ff & (*ptr++)); - hdr->data.req |= (((u16)(*ptr++) << 8) & 0xff00); - break; - case MB_COMM_TYPE_CHILD_CONTINUE: - hdr->data.req = (u16)(0x00ff & (*ptr++)); - hdr->data.req |= (((u16)(*ptr++) << 8) & 0xff00); - MI_CpuCopy8(ptr, hdr->data.reserved, (u32)req_data_piece.size); - ptr += req_data_piece.size; - break; - default: - return NULL; - } - - return ptr; -} - -static u8 * MBi_ReceiveRequestDataPiece (const MBCommChildBlockHeader * hdr, u16 child) { - u8 piece; - u8 * ptr; - - if (req_buf == NULL) { - return NULL; - } - - piece = hdr->req_data.piece; - - if (piece > req_data_piece.num) { - return NULL; - } - - ptr = ((u8 *)req_buf->data_buf[child - 1]) + (piece * req_data_piece.size); - - MI_CpuCopy8(&hdr->req_data.data[0], ptr, (u32)req_data_piece.size); - - req_buf->data_bmp[child - 1] |= (1 << piece); - - MB_DEBUG_OUTPUT( - " %02x %02x %02x %02x %02x %02x\n", ptr[0], ptr[1], ptr[2], ptr[3], ptr[4], - ptr[5] - ); - - if (IsGetAllRequestData(child)) { - return (u8 *)req_buf->data_buf[child - 1]; - } - - return NULL; -} - -static BOOL IsGetAllRequestData (u16 child) { - u16 i; - - for (i = 0; i < req_data_piece.num; i++) { - if ((req_buf->data_bmp[child - 1] & (1 << i)) == 0) { - return FALSE; - } - } - - return TRUE; -} - -u8 * MBi_MakeChildSendBuffer (const MBCommChildBlockHeader * hdr, u8 * sendbuf) { - u8 * pbuf = sendbuf; - - *pbuf++ = hdr->type; - switch (hdr->type) { - case MB_COMM_TYPE_CHILD_FILEREQ: - *pbuf++ = hdr->req_data.piece; - if (hdr->req_data.piece > req_data_piece.num) { - return NULL; - } - - MI_CpuCopy8((void *)(hdr->req_data.data), (void *)pbuf, (u32)req_data_piece.size); - pbuf += req_data_piece.size; - break; - case MB_COMM_TYPE_CHILD_ACCEPT_FILEINFO: - break; - case MB_COMM_TYPE_CHILD_CONTINUE: - *pbuf++ = (u8)(0x00ff & hdr->data.req); - *pbuf++ = (u8)((0xff00 & hdr->data.req) >> 8); - MI_CpuCopy8((void *)(hdr->data.reserved), (void *)pbuf, (u32)req_data_piece.size); - pbuf += req_data_piece.size; - break; - case MB_COMM_TYPE_CHILD_STOPREQ: - break; - case MB_COMM_TYPE_CHILD_BOOTREQ_ACCEPTED: - break; - default: - return NULL; - } - - return pbuf; -} - -u8 MBi_SendRequestDataPiece (u8 * pData, const MBCommRequestData * pReq) { - const u8 * ptr = (u8 *)pReq; - - req_data_piece_idx = (u8)((req_data_piece_idx + 1) % req_data_piece.num); - MB_DEBUG_OUTPUT("req_data piece : %d\n", req_data_piece_idx); - - MI_CpuCopy8( - (void *)&ptr[req_data_piece_idx * req_data_piece.size], - pData, (u32)req_data_piece.size - ); - - MB_DEBUG_OUTPUT( - " %02x %02x %02x %02x %02x %02x\n", pData[0], pData[1], pData[2], pData[3], - pData[4], pData[5] - ); - - return req_data_piece_idx; -} - -u8 * MBi_SetRecvBufferFromParent (MBCommParentBlockHeader * hdr, const u8 * recvbuf) { - hdr->type = *recvbuf++; - - switch (hdr->type) { - case MB_COMM_TYPE_PARENT_SENDSTART: - break; - case MB_COMM_TYPE_PARENT_KICKREQ: - break; - case MB_COMM_TYPE_PARENT_DL_FILEINFO: - break; - case MB_COMM_TYPE_PARENT_DATA: - hdr->fid = (u16)(*recvbuf++); - hdr->fid |= ((u16)(*recvbuf++) << 8); - hdr->seqno = (u16)(*recvbuf++); - hdr->seqno |= ((u16)(*recvbuf++) << 8); - break; - case MB_COMM_TYPE_PARENT_BOOTREQ: - break; - case MB_COMM_TYPE_PARENT_MEMBER_FULL: - break; - default: - return NULL; - } - return (u8 *)recvbuf; -} diff --git a/subprojects/NitroSDK/libraries/mb/src/mb_cache.c b/subprojects/NitroSDK/libraries/mb/src/mb_cache.c deleted file mode 100644 index 9b96a76236..0000000000 --- a/subprojects/NitroSDK/libraries/mb/src/mb_cache.c +++ /dev/null @@ -1,72 +0,0 @@ -#include - -#include "mb_cache.h" - -void MBi_InitCache (MBiCacheList * pl) { - MI_CpuClear8(pl, sizeof(*pl)); -} - -void MBi_AttachCacheBuffer (MBiCacheList * pl, u32 src, u32 len, void * ptr, u32 state) { - OSIntrMode bak_cpsr = OS_DisableInterrupts(); - { - MBiCacheInfo * pi = pl->list; - for (;; ++pi) { - if (pi >= &pl->list[MB_CACHE_INFO_MAX]) { - OS_TPanic("MBi_AttachCacheBuffer() failed! (over maximum count)"); - } - if (pi->state == MB_CACHE_STATE_EMPTY) { - pi->src = src; - pi->len = len; - pi->ptr = (u8 *)ptr; - pi->state = state; - break; - } - } - } - (void)OS_RestoreInterrupts(bak_cpsr); -} - -BOOL MBi_ReadFromCache (MBiCacheList * pl, u32 src, void * dst, u32 len) { - BOOL ret = FALSE; - OSIntrMode bak_cpsr = OS_DisableInterrupts(); - { - const MBiCacheInfo * pi = pl->list; - for (; pi < &pl->list[MB_CACHE_INFO_MAX]; ++pi) { - if (pi->state >= MB_CACHE_STATE_READY) { - const int ofs = (int)(src - pi->src); - if ((ofs >= 0) && (ofs + len <= pi->len)) { - MI_CpuCopy8(pi->ptr + ofs, dst, len); - pl->lifetime = 0; - ret = TRUE; - break; - } - } - } - } - (void)OS_RestoreInterrupts(bak_cpsr); - return ret; -} - -BOOL MBi_TryLoadCache (MBiCacheList * pl, u32 src, u32 len) { - BOOL ret = FALSE; - OSIntrMode bak_cpsr = OS_DisableInterrupts(); - { - MBiCacheInfo * trg = NULL; - MBiCacheInfo * pi = pl->list; - for (; pi < &pl->list[MB_CACHE_INFO_MAX]; ++pi) { - if (pi->state == MB_CACHE_STATE_READY) { - if (!trg || (trg->src > pi->src)) { - trg = pi; - } - } - } - - if (trg) { - (void)src; - (void)len; - } - OS_TPanic("reload-system is not yet!"); - } - (void)OS_RestoreInterrupts(bak_cpsr); - return ret; -} diff --git a/subprojects/NitroSDK/libraries/mb/src/mb_common.c b/subprojects/NitroSDK/libraries/mb/src/mb_common.c deleted file mode 100644 index e251413f0a..0000000000 --- a/subprojects/NitroSDK/libraries/mb/src/mb_common.c +++ /dev/null @@ -1,153 +0,0 @@ -#include "mb_private.h" - -#define MY_ROUND(n, a) (((u32)(n) + (a) - 1) & ~((a) - 1)) - -#define MB_PARENT_WORK_SIZE_MIN (32 + sizeof(MBiParam) + 32 + sizeof(MB_CommPWork) + 32 + WM_SYSTEM_BUF_SIZE) -#define MB_CHILD_WORK_SIZE_MIN (32 + sizeof(MBiParam) + 32 + sizeof(MB_CommCWork) + 32 + WM_SYSTEM_BUF_SIZE) - -SDK_COMPILER_ASSERT(MB_PARENT_WORK_SIZE_MIN <= MB_SYSTEM_BUF_SIZE); -SDK_COMPILER_ASSERT(MB_CHILD_WORK_SIZE_MIN <= MB_CHILD_SYSTEM_BUF_SIZE); - -void MBi_BlockHeaderBegin (u8 type, u32 * sendbuf) { - u8 * p = (u8 *)sendbuf; - p[0] = type; -} - -int MBi_BlockHeaderEnd (int body_len, u16 pollbmp, u32 * sendbuf) { - DC_FlushRange(sendbuf, MY_ROUND(body_len, 32)); - DC_WaitWriteBufferEmpty(); - - MB_DEBUG_OUTPUT("SEND (BMP:%04x)", pollbmp); - MB_COMM_TYPE_OUTPUT(((u8 *)sendbuf)[0]); - - return MBi_SendMP(sendbuf, body_len, pollbmp); -} - -int MB_GetParentSystemBufSize (void) { - return MB_PARENT_WORK_SIZE_MIN; -} - -int MB_GetChildSystemBufSize (void) { - return MB_CHILD_WORK_SIZE_MIN; -} - -u16 MBi_calc_cksum (const u16 * buf, int length) { - u32 sum; - int nwords = length >> 1; - for (sum = 0; nwords > 0; nwords--) { - sum += *buf++; - } - - sum = (sum >> 16) + (sum & 0xffff); - sum += (sum >> 16); - return (u16)(sum ^ 0xffff); -} - -#ifdef PRINT_DEBUG - -void MBi_DebugPrint (const char * file, int line, const char * func, const char * fmt, ...) { - va_list vlist; - - OS_TPrintf("func: %s [%s:%d]:\n", func, file, line); - - va_start(vlist, fmt); - OS_TVPrintf(fmt, vlist); - va_end(vlist); - - OS_TPrintf("\n"); -} - -void MBi_comm_type_output (u16 type) { - enum - { MB_TYPE_STRING_NUM = 12 }; - static const char * const mb_type_string[MB_TYPE_STRING_NUM] = { - "MB_COMM_TYPE_DUMMY", - - "MB_COMM_TYPE_PARENT_SENDSTART", - "MB_COMM_TYPE_PARENT_KICKREQ", - "MB_COMM_TYPE_PARENT_DL_FILEINFO", - "MB_COMM_TYPE_PARENT_DATA", - "MB_COMM_TYPE_PARENT_BOOTREQ", - "MB_COMM_TYPE_PARENT_MEMBER_FULL", - - "MB_COMM_TYPE_CHILD_FILEREQ", - "MB_COMM_TYPE_CHILD_ACCEPT_FILEINFO", - "MB_COMM_TYPE_CHILD_CONTINUE", - "MB_COMM_TYPE_CHILD_STOPREQ", - "MB_COMM_TYPE_CHILD_BOOTREQ_ACCEPTED", - }; - if (type >= MB_TYPE_STRING_NUM) { - MB_OUTPUT("TYPE: unknown\n"); - return; - } - MB_OUTPUT("TYPE: %s\n", mb_type_string[type]); -} - -void MBi_comm_wmevent_output (u16 type, void * arg) { - enum - { MB_CB_STRING_NUM = 43 }; - static const char * const mb_cb_string[MB_CB_STRING_NUM + 2] = { - "MB_CALLBACK_CHILD_CONNECTED", - "MB_CALLBACK_CHILD_DISCONNECTED", - "MB_CALLBACK_MP_PARENT_SENT", - "MB_CALLBACK_MP_PARENT_RECV", - "MB_CALLBACK_PARENT_FOUND", - "MB_CALLBACK_PARENT_NOT_FOUND", - "MB_CALLBACK_CONNECTED_TO_PARENT", - "MB_CALLBACK_DISCONNECTED", - "MB_CALLBACK_MP_CHILD_SENT", - "MB_CALLBACK_MP_CHILD_RECV", - "MB_CALLBACK_DISCONNECTED_FROM_PARENT", - "MB_CALLBACK_CONNECT_FAILED", - "MB_CALLBACK_DCF_CHILD_SENT", - "MB_CALLBACK_DCF_CHILD_SENT_ERR", - "MB_CALLBACK_DCF_CHILD_RECV", - "MB_CALLBACK_DISCONNECT_COMPLETE", - "MB_CALLBACK_DISCONNECT_FAILED", - "MB_CALLBACK_END_COMPLETE", - "MB_CALLBACK_MP_CHILD_SENT_ERR", - "MB_CALLBACK_MP_PARENT_SENT_ERR", - "MB_CALLBACK_MP_STARTED", - "MB_CALLBACK_INIT_COMPLETE", - "MB_CALLBACK_END_MP_COMPLETE", - "MB_CALLBACK_SET_GAMEINFO_COMPLETE", - "MB_CALLBACK_SET_GAMEINFO_FAILED", - "MB_CALLBACK_MP_SEND_ENABLE", - "MB_CALLBACK_PARENT_STARTED", - "MB_CALLBACK_BEACON_LOST", - "MB_CALLBACK_BEACON_SENT", - "MB_CALLBACK_BEACON_RECV", - "MB_CALLBACK_MP_SEND_DISABLE", - "MB_CALLBACK_DISASSOCIATE", - "MB_CALLBACK_REASSOCIATE", - "MB_CALLBACK_AUTHENTICATE", - "MB_CALLBACK_SET_LIFETIME", - "MB_CALLBACK_DCF_STARTED", - "MB_CALLBACK_DCF_SENT", - "MB_CALLBACK_DCF_SENT_ERR", - "MB_CALLBACK_DCF_RECV", - "MB_CALLBACK_DCF_END", - "MB_CALLBACK_MPACK_IND", - "MB_CALLBACK_MP_CHILD_SENT_TIMEOUT", - "MB_CALLBACK_SEND_QUEUE_FULL_ERR", - "MB_CALLBACK_API_ERROR", - "MB_CALLBACK_ERROR", - }; - - if (type == MB_CALLBACK_API_ERROR) { - type = MB_CB_STRING_NUM; - } else if (type == MB_CALLBACK_ERROR) { - type = MB_CB_STRING_NUM + 1; - } else if (type >= MB_CB_STRING_NUM) { - MB_OUTPUT("EVENTTYPE: unknown\n"); - return; - } - - MB_OUTPUT("EVENTTYPE:%s\n", mb_cb_string[type]); - if (arg) { - MB_OUTPUT("\tAPPID:%04x ERRCODE:%04x\n", ((u16 *)arg)[0], ((u16 *)arg)[1]); - MB_OUTPUT("\twlCmd:%04x wlResult:%04x\n", ((u16 *)arg)[2], ((u16 *)arg)[3]); - } -} - -#endif diff --git a/subprojects/NitroSDK/libraries/mb/src/mb_fileinfo.c b/subprojects/NitroSDK/libraries/mb/src/mb_fileinfo.c deleted file mode 100644 index 43fc6fb02f..0000000000 --- a/subprojects/NitroSDK/libraries/mb/src/mb_fileinfo.c +++ /dev/null @@ -1,693 +0,0 @@ -#include "mb_private.h" - -#define MB_CACHE_PAGE_SIZE (17 * 1024) - -SDK_COMPILER_ASSERT( - ROM_HEADER_SIZE_FULL + - MB_AUTHCODE_SIZE + - sizeof(MBiCacheList) + - sizeof(u32) * 4 + MB_CACHE_PAGE_SIZE * 3 <= MB_SEGMENT_BUFFER_MIN -); - -const MbSegmentType MBi_defaultLoadSegList[MB_DL_SEGMENT_NUM] = { - MB_SEG_ROMHEADER, - MB_SEG_ARM9STATIC, - MB_SEG_ARM7STATIC, -}; - -#define MB_SEGMENT_HEADER_MIN 0x4000 -#define MB_SEGMENT_HEADER_MAX 0x8000 - -static const CARDRomRegion mbi_seg_header_default[] = { - {0x4000, 0x1000, }, - {0x7000, 0x1000, }, - {0, 0}, -}; -static const CARDRomRegion * mbi_seg_header = mbi_seg_header_default; - -typedef struct { - u32 rom_src; - u32 mem_src; - u32 mem_dst; - u32 len; -} MBiSegmentHeaderInfo; - -static void MBi_MakeDownloadFileInfo(MbDownloadFileInfoHeader * mbdlFileInfop, const void * buf); -static void MBi_SetSegmentInfo(const RomHeader * mbRomHeaderp, const MbSegmentType * loadSegListp, MbSegmentInfo * seg_infop, u32 * child_recv_buff_addr); -static void MBi_ReadSegmentHeader(const MBiSegmentHeaderInfo * p, u32 top, u32 bottom, BOOL clean); -static BOOL IsAbleToLoad(u8 segment_no, u32 address, u32 size); - -u32 MB_GetSegmentLength (FSFile * file) { - enum - { ROM_HEADER_SIZE_SMALL = 0x60 }; - u8 rom[ROM_HEADER_SIZE_SMALL]; - const RomHeader * p = NULL; - - u32 ret = 0; - - SDK_ASSERT(!file || FS_IsFile(file)); - - if (file) { - const u32 bak_pos = FS_GetPosition(file); - - if (FS_ReadFile(file, &rom, sizeof(rom)) >= sizeof(rom)) { - p = (const RomHeader *)rom; - } - - (void)FS_SeekFile(file, (int)bak_pos, FS_SEEK_SET); - } else { - p = (const RomHeader *)HW_ROM_HEADER_BUF; - } - if (p) { - ret = (u32)(ROM_HEADER_SIZE_FULL + - MB_AUTHCODE_SIZE + - sizeof(MBiCacheList) + - sizeof(u32) * 4 + - p->main_size + - p->sub_size - ); - if (ret < MB_SEGMENT_BUFFER_MIN) { - ret = MB_SEGMENT_BUFFER_MIN; - } - } - return ret; -} - -BOOL MB_ReadSegment (FSFile * file, void * buf, u32 len) { - BOOL ret = FALSE; - SDK_ASSERT(!file || FS_IsFile(file)); - - if (len >= ROM_HEADER_SIZE_FULL + 4) { - BOOL is_own_binary = FALSE; - - u32 rest = len; - u8 * dst = (u8 *)buf; - u32 bak_pos; - FSFile own_bin[1]; - u32 own_size; - RomHeader * p_rom; - - MBiCacheList * p_cache = NULL; - u32 * p_map = NULL; - - p_rom = (RomHeader *)dst; - dst += ROM_HEADER_SIZE_FULL, rest -= ROM_HEADER_SIZE_FULL; - - if (file) { - bak_pos = FS_GetPosition(file); - if (FS_ReadFile(file, p_rom, ROM_HEADER_SIZE_FULL) < ROM_HEADER_SIZE_FULL) { - rest = 0; - } - own_size = p_rom->own_size; - if (!own_size) { - own_size = 16 * 1024 * 1024; - } - } else { - const RomHeader * mem_rom = (RomHeader *)HW_ROM_HEADER_BUF; - own_size = mem_rom->own_size; - if (!own_size) { - own_size = 16 * 1024 * 1024; - } - is_own_binary = TRUE; - - FS_InitFile(own_bin); - (void)FS_OpenFileDirect( - own_bin, - FS_FindArchive("rom", 3), 0, (u32)(own_size + MB_AUTHCODE_SIZE), - (u32) ~0 - ); - file = own_bin; - bak_pos = FS_GetPosition(file); - - MI_CpuCopy8(mem_rom, p_rom, ROM_HEADER_SIZE_FULL); - - *(u32 *)((u32)p_rom + 0x60) |= 0x00406000; - } - - if (rest >= MB_AUTHCODE_SIZE) { - (void)FS_SeekFile(file, (int)(bak_pos + own_size), FS_SEEK_SET); - (void)FS_ReadFile(file, dst, MB_AUTHCODE_SIZE); - dst += MB_AUTHCODE_SIZE, rest -= MB_AUTHCODE_SIZE; - } else { - rest = 0; - } - - if (rest >= sizeof(MBiCacheList)) { - p_cache = (MBiCacheList *)dst; - MBi_InitCache(p_cache); - dst += sizeof(MBiCacheList), rest -= sizeof(MBiCacheList); - - MBi_AttachCacheBuffer(p_cache, 0, ROM_HEADER_SIZE_FULL, p_rom, MB_CACHE_STATE_LOCKED); - - { - FSArchive * p_arc = FS_GetAttachedArchive(file); - int i = 0; - while ((i < FS_ARCHIVE_NAME_LEN_MAX) && p_arc->name.ptr[i]) { - ++i; - } - MI_CpuCopy8(p_arc->name.ptr, p_cache->arc_name, (u32)i); - p_cache->arc_name_len = (u32)i; - p_cache->arc_pointer = p_arc; - } - } else { - rest = 0; - } - - if (rest >= sizeof(u32) * 4) { - p_map = (u32 *)dst; - p_map[0] = 0; - p_map[1] = FS_GetFileImageTop(file) + bak_pos + p_rom->main_rom_offset; - p_map[2] = FS_GetFileImageTop(file) + bak_pos + p_rom->sub_rom_offset; - dst += sizeof(u32) * 4, rest -= sizeof(u32) * 4; - } else { - rest = 0; - } - - if (rest >= p_rom->main_size + p_rom->sub_size) { - const u32 base = FS_GetFileImageTop(file); - (void)FS_SeekFile(file, (int)(p_map[1] - base), FS_SEEK_SET); - (void)FS_ReadFile(file, dst, (int)p_rom->main_size); - MBi_AttachCacheBuffer(p_cache, p_map[1], p_rom->main_size, dst, MB_CACHE_STATE_LOCKED); - dst += p_rom->main_size, rest -= p_rom->main_size; - (void)FS_SeekFile(file, (int)(p_map[2] - base), FS_SEEK_SET); - (void)FS_ReadFile(file, dst, (int)p_rom->sub_size); - MBi_AttachCacheBuffer(p_cache, p_map[2], p_rom->sub_size, dst, MB_CACHE_STATE_LOCKED); - dst += p_rom->sub_size, rest -= p_rom->sub_size; - - ret = TRUE; - } else if (rest >= MB_CACHE_PAGE_SIZE * 3) { - const u32 base = FS_GetFileImageTop(file); - u32 offset = p_map[1]; - - (void)FS_SeekFile(file, (int)(offset - base), FS_SEEK_SET); - (void)FS_ReadFile(file, dst, MB_CACHE_PAGE_SIZE); - MBi_AttachCacheBuffer(p_cache, offset, MB_CACHE_PAGE_SIZE, dst, MB_CACHE_STATE_LOCKED); - dst += MB_CACHE_PAGE_SIZE, rest -= MB_CACHE_PAGE_SIZE; - offset += MB_CACHE_PAGE_SIZE; - - (void)FS_SeekFile(file, (int)(offset - base), FS_SEEK_SET); - (void)FS_ReadFile(file, dst, MB_CACHE_PAGE_SIZE); - MBi_AttachCacheBuffer(p_cache, offset, MB_CACHE_PAGE_SIZE, dst, MB_CACHE_STATE_READY); - dst += MB_CACHE_PAGE_SIZE, rest -= MB_CACHE_PAGE_SIZE; - offset += MB_CACHE_PAGE_SIZE; - - (void)FS_SeekFile(file, (int)(offset - base), FS_SEEK_SET); - (void)FS_ReadFile(file, dst, MB_CACHE_PAGE_SIZE); - MBi_AttachCacheBuffer(p_cache, offset, MB_CACHE_PAGE_SIZE, dst, MB_CACHE_STATE_READY); - dst += MB_CACHE_PAGE_SIZE, rest -= MB_CACHE_PAGE_SIZE; - - ret = TRUE; - } - - (void)FS_SeekFile(file, (int)bak_pos, FS_SEEK_SET); - - if (is_own_binary) { - (void)FS_CloseFile(own_bin); - if (ret) { - const CARDRomRegion * p_header = mbi_seg_header; - MBiSegmentHeaderInfo info; - info.rom_src = p_rom->main_rom_offset; - info.mem_src = (u32)((u32)p_rom->main_ram_address - p_rom->main_rom_offset); - info.mem_dst = (u32)((u32)p_cache->list[1].ptr - p_rom->main_rom_offset); - info.len = len; - - MBi_ReadSegmentHeader(&info, MB_SEGMENT_HEADER_MIN, MB_SEGMENT_HEADER_MAX, TRUE); - - for (; p_header->length != 0; ++p_header) { - MBi_ReadSegmentHeader( - &info, - p_header->offset, - (u32)(p_header->offset + p_header->length), FALSE - ); - } - { - extern u32 _start_AutoloadDoneCallback[1]; - u8 * dst = (u8 *)p_cache->list[1].ptr; - dst += ((u32) & _start_AutoloadDoneCallback - (u32)p_rom->main_ram_address); - *(u32 *)dst = 0xE12FFF1E; - } - } - } - - if (ret) { - DC_FlushRange(buf, len); - } - } - - return ret; -} - -static void MBi_ReadSegmentHeader (const MBiSegmentHeaderInfo * p, u32 top, u32 bottom, BOOL clean) { - if (top < MB_SEGMENT_HEADER_MIN) { - top = MB_SEGMENT_HEADER_MIN; - } - if (bottom > MB_SEGMENT_HEADER_MAX) { - bottom = MB_SEGMENT_HEADER_MAX; - } - - if (top < p->rom_src) { - top = p->rom_src; - } - if (bottom > p->rom_src + p->len) { - bottom = p->rom_src + p->len; - } - - if (top < bottom) { - if (clean) { - MI_CpuClear8((void *)(p->mem_dst + top), (u32)(bottom - top)); - } else { - MI_CpuCopy8( - (const void *)(p->mem_src + top), - (void *)(p->mem_dst + top), (u32)(bottom - top) - ); - } - } -} - -BOOL MB_RegisterFile (const MBGameRegistry * game_reg, const void * buf) { - MbDownloadFileInfoHeader * mdfi; - static u8 update = 0; - u8 * appname = (u8 *)game_reg->gameNamep; - u8 fileID = 0xff, i; - - OSIntrMode enabled = OS_DisableInterrupts(); - - if (!MBi_IsStarted()) { - OS_TWarning("MB has not started yet. Cannot Register File\n"); - (void)OS_RestoreInterrupts(enabled); - return FALSE; - } - - if (pPwork->file_num + 1 > MB_MAX_FILE) { - OS_TWarning("The number of registered files has exceeded.\n"); - (void)OS_RestoreInterrupts(enabled); - return FALSE; - } - - for (i = 0; i < MB_MAX_FILE; i++) { - if (pPwork->fileinfo[i].game_reg == (MBGameRegistry *)game_reg) { - MB_DEBUG_OUTPUT("Already Registered \"%s\"\n", game_reg->gameNamep); - (void)OS_RestoreInterrupts(enabled); - return FALSE; - } - - if (pPwork->fileinfo[i].active == 0) { - fileID = i; - break; - } - } - - if (i == MB_MAX_FILE) { - OS_TWarning("Too many Files! \"%s\"\n", game_reg->gameNamep); - (void)OS_RestoreInterrupts(enabled); - return FALSE; - } - - pPwork->fileinfo[fileID].game_reg = (MBGameRegistry *)game_reg; - - mdfi = &pPwork->fileinfo[fileID].dl_fileinfo.header; - - MBi_MakeDownloadFileInfo(mdfi, buf); - - MI_CpuCopy8( - game_reg->userParam, - ((MBDownloadFileInfo *)mdfi)->reserved, HW_DOWNLOAD_PARAMETER_SIZE - ); - - if (FALSE == MBi_MakeBlockInfoTable(&pPwork->fileinfo[fileID].blockinfo_table, mdfi)) { - OS_TWarning("Cannot make block information!\n"); - (void)OS_RestoreInterrupts(enabled); - return FALSE; - } - - MBi_MakeGameInfo(&pPwork->fileinfo[fileID].game_info, game_reg, &pPwork->common.user); - - pPwork->fileinfo[fileID].game_info.fileNo = fileID; - - MB_AddGameInfo(&pPwork->fileinfo[fileID].game_info); - - pPwork->fileinfo[fileID].game_info.seqNoFixed = update++; - - pPwork->fileinfo[fileID].gameinfo_child_bmp = MB_GAMEINFO_PARENT_FLAG; - - pPwork->fileinfo[fileID].src_adr = (u32 *)buf; - - pPwork->fileinfo[fileID].cache_list = (MBiCacheList *) - ((u32)buf + ROM_HEADER_SIZE_FULL + MB_AUTHCODE_SIZE); - pPwork->fileinfo[fileID].card_mapping = (u32 *) - ((u32)buf + ROM_HEADER_SIZE_FULL + MB_AUTHCODE_SIZE + sizeof(MBiCacheList)); - - if (pPwork->fileinfo[fileID].cache_list->list[3].state != MB_CACHE_STATE_EMPTY) { - if (!MBi_IsTaskAvailable()) { - MBi_InitTaskInfo(&pPwork->cur_task); - MBi_InitTaskThread(pPwork->task_work, sizeof(pPwork->task_work)); - } - } - - pPwork->fileinfo[fileID].active = 1; - - pPwork->file_num++; - - MB_DEBUG_OUTPUT("Register Game \"%s\"\n", game_reg->gameNamep); - - (void)OS_RestoreInterrupts(enabled); - - return TRUE; -} - -void * MB_UnregisterFile (const MBGameRegistry * game_reg) { - u8 fileID, i; - void * ret_bufp; - OSIntrMode enabled = OS_DisableInterrupts(); - - for (i = 0; i < MB_MAX_FILE; i++) { - if (pPwork->fileinfo[i].game_reg == (MBGameRegistry *)game_reg) { - fileID = i; - break; - } - } - - if (fileID != pPwork->fileinfo[fileID].game_info.fileNo) { - OS_TWarning("Registerd File ID does not correspond with File ID in Registry List.\n"); - (void)OS_RestoreInterrupts(enabled); - return NULL; - } - - if (i == MB_MAX_FILE) { - OS_TWarning("Cannot find corresponding GameRegistry\n"); - (void)OS_RestoreInterrupts(enabled); - return NULL; - } - - if (FALSE == MB_DeleteGameInfo(&pPwork->fileinfo[fileID].game_info)) { - OS_TWarning( - "Cannot delete GameInfo %s\n", - pPwork->fileinfo[fileID].game_info.fixed.gameName - ); - (void)OS_RestoreInterrupts(enabled); - return NULL; - } - - ret_bufp = pPwork->fileinfo[fileID].src_adr; - - pPwork->fileinfo[fileID].active = 0; - - MI_CpuClear16(&pPwork->fileinfo[fileID], sizeof(pPwork->fileinfo[0])); - - pPwork->file_num--; - - MB_DEBUG_OUTPUT("Delete Game \"%s\"\n", game_reg->gameNamep); - - (void)OS_RestoreInterrupts(enabled); - - return ret_bufp; -} - -static void MBi_MakeDownloadFileInfo (MbDownloadFileInfoHeader * mbdlFileInfop, const void * buf) { - const RomHeader * mbRomHeaderp; - const MbSegmentType * loadSegListp; - MbSegmentInfo * seg_infop; - int seg_num; - const u16 * auth_code; - u32 child_recv_buff_addr = MB_ARM7_STATIC_RECV_BUFFER; - - mbRomHeaderp = (const RomHeader *)buf; - auth_code = (const u16 *)((u32)buf + ROM_HEADER_SIZE_FULL); - - mbdlFileInfop->arm9EntryAddr = (u32)mbRomHeaderp->main_entry_address; - mbdlFileInfop->arm7EntryAddr = (u32)mbRomHeaderp->sub_entry_address; - seg_infop = (MbSegmentInfo *)(mbdlFileInfop + 1); - loadSegListp = MBi_defaultLoadSegList; - MB_DEBUG_OUTPUT("\t recv_adr load_adr size rom_adr (base)\n"); - - for (seg_num = 0; seg_num < MB_DL_SEGMENT_NUM; seg_num++) { - MB_DEBUG_OUTPUT("\t SEG%2d : ", seg_num); - MBi_SetSegmentInfo(mbRomHeaderp, loadSegListp, seg_infop, &child_recv_buff_addr); - seg_infop++; - loadSegListp++; - } - - { - MBDownloadFileInfo * pMdfi = (MBDownloadFileInfo *)mbdlFileInfop; - MI_CpuCopy8(auth_code, &pMdfi->auth_code[0], MB_AUTHCODE_SIZE); - } -} - -static void MBi_SetSegmentInfo (const RomHeader * mbRomHeaderp, const MbSegmentType * loadSegListp, MbSegmentInfo * seg_infop, u32 * child_recv_buff_addr) { - CARDRomRegion * romRegp; - - switch (*loadSegListp) { - case MB_SEG_ARM9STATIC: - romRegp = (CARDRomRegion *)(&mbRomHeaderp->main_ram_address); - - if (((u32)romRegp->offset >= MB_LOAD_AREA_LO) - && ((u32)romRegp->offset < MB_LOAD_AREA_HI) - && (((u32)romRegp->offset + romRegp->length) <= MB_LOAD_AREA_HI)) { - seg_infop->size = romRegp->length; - seg_infop->load_addr = (u32)romRegp->offset; - - seg_infop->recv_addr = seg_infop->load_addr; - seg_infop->target = MI_PROCESSOR_ARM9; - MB_DEBUG_OUTPUT("arm9 static :"); - } else { - OS_Panic( - "ARM9 boot code out of the load area. : addr = %x size = %x\n", - (u32)romRegp->offset, romRegp->length - ); - } - break; - - case MB_SEG_ARM7STATIC: - { - BOOL error_flag = FALSE; - BOOL reload_flag = FALSE; - u32 load_last_addr; - - romRegp = (CARDRomRegion *)(&mbRomHeaderp->sub_ram_address); - load_last_addr = (u32)((u32)romRegp->offset + romRegp->length); - - if (((u32)romRegp->offset >= MB_LOAD_AREA_LO) - && ((u32)romRegp->offset < MB_BSSDESC_ADDRESS)) { - if (load_last_addr <= MB_ARM7_STATIC_LOAD_AREA_HI) { - } else if ((load_last_addr < MB_BSSDESC_ADDRESS) - && (romRegp->length <= MB_ARM7_STATIC_RECV_BUFFER_SIZE)) { - reload_flag = TRUE; - } else { - error_flag = TRUE; - } - } else if (((u32)romRegp->offset >= HW_WRAM) - && ((u32)romRegp->offset < HW_WRAM + MB_ARM7_STATIC_LOAD_WRAM_MAX_SIZE)) { - if (load_last_addr <= (HW_WRAM + MB_ARM7_STATIC_LOAD_WRAM_MAX_SIZE)) { - reload_flag = TRUE; - } else { - error_flag = TRUE; - } - } else { - error_flag = TRUE; - } - - if (error_flag == TRUE) { - OS_Panic( - "ARM7 boot code out of the load area. : addr = %x size = %x\n", - (u32)romRegp->offset, romRegp->length - ); - } - - { - seg_infop->size = romRegp->length; - seg_infop->load_addr = (u32)romRegp->offset; - if (!reload_flag) { - seg_infop->recv_addr = seg_infop->load_addr; - } else { - seg_infop->recv_addr = *child_recv_buff_addr; - *child_recv_buff_addr += seg_infop->size; - } - } - - seg_infop->target = MI_PROCESSOR_ARM7; - MB_DEBUG_OUTPUT("arm7 static :"); - } - break; - - case MB_SEG_ROMHEADER: - seg_infop->size = ROM_HEADER_SIZE_FULL; - seg_infop->load_addr = (u32)MB_ROM_HEADER_ADDRESS; - seg_infop->recv_addr = seg_infop->load_addr; - - seg_infop->target = MI_PROCESSOR_ARM9; - MB_DEBUG_OUTPUT("rom header :"); - break; - } - - MB_DEBUG_OUTPUT( - " %8x %8x %8x %8x\n", - seg_infop->recv_addr, seg_infop->load_addr, - seg_infop->size, - (*loadSegListp == MB_SEG_ROMHEADER) ? 0 : *((u32 *)romRegp - 2) - ); -} - -BOOL MBi_MakeBlockInfoTable (MB_BlockInfoTable * table, MbDownloadFileInfoHeader * mdfi) { - u16 * seg_headB = table->seg_head_blockno; - u32 * seg_src = table->seg_src_offset; - u8 i; - u32 src_ofs = 0; - - if (!mdfi) { - return FALSE; - } - - for (i = 0; i < MB_DL_SEGMENT_NUM; ++i) { - MbSegmentInfo * si = MBi_GetSegmentInfo(mdfi, i); - seg_src[i] = src_ofs; - src_ofs += si->size; - } - - seg_headB[0] = 0; - - for (i = 0; i < MB_DL_SEGMENT_NUM; ++i) { - MbSegmentInfo * si = MBi_GetSegmentInfo(mdfi, i); - u16 next_block_head = - (u16)(seg_headB[i] + (u16)((si->size + mbc->block_size_max - 1) / mbc->block_size_max)); - - if (FALSE == IsAbleToLoad(i, si->load_addr, si->size)) { - return FALSE; - } - - if (i < MB_DL_SEGMENT_NUM - 1) { - seg_headB[i + 1] = next_block_head; - } else { - table->block_num = next_block_head; - } - } - - return TRUE; -} - -BOOL MBi_get_blockinfo (MB_BlockInfo * bi, MB_BlockInfoTable * table, u32 block, MbDownloadFileInfoHeader * mdfi) { - s8 i; - u32 seg_block, block_adr_offset; - - if (block >= table->block_num) { - return FALSE; - } - - for (i = MB_DL_SEGMENT_NUM - 1; i >= 0; i--) { - if (block >= table->seg_head_blockno[i]) { - break; - } - } - - if (i < 0) { - return FALSE; - } - - seg_block = block - table->seg_head_blockno[i]; - block_adr_offset = seg_block * mbc->block_size_max; - - { - MbSegmentInfo * si = MBi_GetSegmentInfo(mdfi, i); - bi->size = si->size - block_adr_offset; - if (bi->size > mbc->block_size_max) { - bi->size = (u32)mbc->block_size_max; - } - bi->offset = (u32)(block_adr_offset + table->seg_src_offset[i]); - bi->child_address = (u32)(block_adr_offset + (u32)(si->recv_addr)); - bi->segment_no = (u8)i; - } - - MB_DEBUG_OUTPUT("blockNo:%d \n", block); - MB_DEBUG_OUTPUT( - "Segment %d [block:%d offset(%08x) destination(%08x) size(%04x)]\n", - i, seg_block, bi->offset, bi->child_address, bi->size - ); - - return TRUE; -} - -u16 MBi_get_blocknum (MB_BlockInfoTable * table) { - SDK_ASSERT(table != 0); - return table->block_num; -} - -BOOL MBi_IsAbleToRecv (u8 segment_no, u32 address, u32 size) { - MbSegmentType seg_type; - - SDK_ASSERT(segment_no < MB_DL_SEGMENT_NUM); - - seg_type = MBi_defaultLoadSegList[segment_no]; - - switch (seg_type) { - case MB_SEG_ROMHEADER: - if (address >= MB_ROM_HEADER_ADDRESS - && address + size <= MB_ROM_HEADER_ADDRESS + ROM_HEADER_SIZE_FULL) { - return TRUE; - } - break; - - case MB_SEG_ARM9STATIC: - if (address >= MB_LOAD_AREA_LO && address + size <= MB_LOAD_AREA_HI) { - return TRUE; - } - break; - - case MB_SEG_ARM7STATIC: - - if (address >= MB_ARM7_STATIC_RECV_BUFFER - && address + size <= MB_ARM7_STATIC_RECV_BUFFER_END) { - return TRUE; - } else if (address >= MB_LOAD_AREA_LO && address + size <= MB_ARM7_STATIC_RECV_BUFFER_END) { - return TRUE; - } - break; - - default: - return FALSE; - } - - return FALSE; -} - -static BOOL IsAbleToLoad (u8 segment_no, u32 address, u32 size) { - MbSegmentType seg_type; - - SDK_ASSERT(segment_no < MB_DL_SEGMENT_NUM); - - seg_type = MBi_defaultLoadSegList[segment_no]; - - switch (seg_type) { - case MB_SEG_ROMHEADER: - case MB_SEG_ARM9STATIC: - return MBi_IsAbleToRecv(segment_no, address, size); - - case MB_SEG_ARM7STATIC: - - if (address >= MB_LOAD_AREA_LO && address < MB_BSSDESC_ADDRESS) { - u32 end_adr = address + size; - - if (MB_ARM7_STATIC_RECV_BUFFER_END > address - && MB_ARM7_STATIC_RECV_BUFFER_END < end_adr) { - return FALSE; - } else if (end_adr <= MB_ARM7_STATIC_LOAD_AREA_HI) { - return TRUE; - } else if (end_adr < MB_BSSDESC_ADDRESS && size <= MB_ARM7_STATIC_RECV_BUFFER_SIZE) { - return TRUE; - } else { - return FALSE; - } - } else if (address >= HW_WRAM && address < HW_WRAM + MB_ARM7_STATIC_LOAD_WRAM_MAX_SIZE) { - u32 end_adr = address + size; - if (end_adr <= (HW_WRAM + MB_ARM7_STATIC_LOAD_WRAM_MAX_SIZE)) { - return TRUE; - } else { - return FALSE; - } - } - break; - - default: - return FALSE; - } - - return FALSE; -} diff --git a/subprojects/NitroSDK/libraries/mb/src/mb_gameinfo.c b/subprojects/NitroSDK/libraries/mb/src/mb_gameinfo.c deleted file mode 100644 index 51901c0616..0000000000 --- a/subprojects/NitroSDK/libraries/mb/src/mb_gameinfo.c +++ /dev/null @@ -1,1421 +0,0 @@ -#include - -#include "mb_gameinfo.h" -#include "mb_common.h" -#include "mb_private.h" - -#define MB_GAME_INFO_LIFETIME_SEC 60 -#define MB_SCAN_LOCK_SEC 8 -#define MB_SAME_BEACON_RECV_MAX_COUNT 3 - -#define MB_BEACON_DATA_SIZE (WM_SIZE_USER_GAMEINFO - 8) -#define MB_BEACON_FIXED_DATA_SIZE (MB_BEACON_DATA_SIZE - 6) -#define MB_BEACON_VOLAT_DATA_SIZE (MB_BEACON_DATA_SIZE - 8) -#define MB_SEND_MEMBER_MAX_NUM (MB_BEACON_VOLAT_DATA_SIZE / sizeof(MBUserInfo)) - -#define FIXED_NORMAL_SIZE sizeof(MBGameInfoFixed) -#define FIXED_NO_ICON_SIZE (sizeof(MBGameInfoFixed) - sizeof(MBIconInfo)) -#define FIXED_FLAGMENT_MAX(size) ((size / MB_BEACON_FIXED_DATA_SIZE) + (size % MB_BEACON_FIXED_DATA_SIZE ? 1 : 0)) - -#define MB_LIFETIME_MAX_COUNT (MB_GAME_INFO_LIFETIME_SEC * 1000 / MB_SCAN_TIME_NORMAL + 1) -#define MB_LOCKTIME_MAX_COUNT (MB_SCAN_LOCK_SEC * 1000 / MB_SCAN_TIME_NORMAL + 1) - -#define MB_SCAN_COUNT_UNIT_NORMAL (1) -#define MB_SCAN_COUNT_UNIT_LOCKING (MB_SCAN_TIME_LOCKING / MB_SCAN_TIME_NORMAL) - -typedef enum MbBeaconState { - MB_BEACON_STATE_STOP = 0, - MB_BEACON_STATE_READY, - MB_BEACON_STATE_FIXED_START, - MB_BEACON_STATE_FIXED, - MB_BEACON_STATE_VOLAT_START, - MB_BEACON_STATE_VOLAT, - MB_BEACON_STATE_NEXT_GAME -} MbBeaconState; - -typedef struct MbBeacon { - u32 ggid; - u8 dataAttr : 2; - u8 fileNo : 6; - u8 seqNoFixed; - u8 seqNoVolat; - u8 beaconNo; - - union { - struct { - u16 sum; - u8 flagmentNo; - u8 flagmentMaxNum; - u8 size; - u8 rsv; - u8 data[MB_BEACON_FIXED_DATA_SIZE]; - } fixed; - struct { - u16 sum; - u8 nowPlayerNum; - u8 pad[1]; - u16 nowPlayerFlag; - u16 changePlayerFlag; - MBUserInfo member[MB_SEND_MEMBER_MAX_NUM]; - u8 userVolatData[MB_USER_VOLAT_DATA_SIZE]; - } volat; - } data; -} MbBeacon; - -typedef struct MbBeaconSendStatus { - MBGameInfo * gameInfoListTop; - MBGameInfo * nowGameInfop; - u8 * srcp; - u8 state; - u8 seqNoFixed; - u8 seqNoVolat; - u8 flagmentNo; - u8 flagmentMaxNum; - u8 beaconNo; - u8 pad[2]; -} MbBeaconSendStatus; - -static BOOL MBi_ReadIconInfo(const char * filePathp, MBIconInfo * iconp, BOOL char_flag); -static void MBi_ClearSendStatus(void); -static BOOL MBi_ReadyBeaconSendStatus(void); -static void MBi_InitSendFixedBeacon(void); -static void MBi_SendFixedBeacon(u32 ggid, u16 tgid, u8 attribute); -static void MBi_InitSendVolatBeacon(void); -static void MBi_SendVolatBeacon(u32 ggid, u16 tgid, u8 attribute); - -static BOOL MBi_CheckMBParent(WMBssDesc * bssDescp); -static void MBi_SetSSIDToBssDesc(WMBssDesc * bssDescp, u32 ggid); -static int MBi_GetStoreElement(WMBssDesc * bssDescp, MBBeaconMsgCallback Callbackp); -static void MBi_CheckCompleteGameInfoFlagments(int index, MBBeaconMsgCallback Callbackp); -static void MBi_AnalyzeBeacon(WMBssDesc * bssDescp, int index, u16 linkLevel); -static void MBi_CheckTGID(WMBssDesc * bssDescp, int inex); -static void MBi_CheckSeqNoFixed(int index); -static void MBi_CheckSeqNoVolat(int index); -static void MBi_InvalidateGameInfoBssID(u8 * bssidp); -static void MBi_RecvFixedBeacon(int index); -static void MBi_RecvVolatBeacon(int index); - -static void MBi_LockScanTarget(int index); -static void MBi_UnlockScanTarget(void); -static int mystrlen(u16 * str); - -static MbBeaconSendStatus mbss; - -static MbBeaconRecvStatus mbrs; -static MbBeaconRecvStatus * mbrsp = NULL; - -static MbScanLockFunc sLockFunc = NULL; -static MbScanUnlockFunc sUnlockFunc = NULL; - -static MbBeacon bsendBuff ATTRIBUTE_ALIGN(32); -static MbBeacon * brecvBuffp; -static WMBssDesc bssDescbuf ATTRIBUTE_ALIGN(32); - -static MBSendVolatCallbackFunc sSendVolatCallback = NULL; -static u32 sSendVolatCallbackTimming; - -const MbBeaconRecvStatus * MB_GetBeaconRecvStatus (void) { - return mbrsp; -} - -void MBi_SetBeaconRecvStatusBufferDefault (void) { - mbrsp = &mbrs; -} - -void MBi_SetBeaconRecvStatusBuffer (MbBeaconRecvStatus * buf) { - mbrsp = buf; -} - -void MBi_SetScanLockFunc (MbScanLockFunc lock, MbScanUnlockFunc unlock) { - sLockFunc = lock; - sUnlockFunc = unlock; -} - -void MBi_MakeGameInfo (MBGameInfo * gameInfop, const MBGameRegistry * mbGameRegp, const MBUserInfo * parent) { - BOOL icon_disable; - - MI_CpuClear16(gameInfop, sizeof(MBGameInfo)); - - gameInfop->dataAttr = MB_BEACON_DATA_ATTR_FIXED_NORMAL; - icon_disable = !MBi_ReadIconInfo(mbGameRegp->iconCharPathp, &gameInfop->fixed.icon, TRUE); - icon_disable |= !MBi_ReadIconInfo(mbGameRegp->iconPalettePathp, &gameInfop->fixed.icon, FALSE); - - if (icon_disable) { - gameInfop->dataAttr = MB_BEACON_DATA_ATTR_FIXED_NO_ICON; - MI_CpuClearFast(&gameInfop->fixed.icon, sizeof(MBIconInfo)); - } - - gameInfop->ggid = mbGameRegp->ggid; - - if (parent != NULL) { - MI_CpuCopy16(parent, &gameInfop->fixed.parent, sizeof(MBUserInfo)); - } - - gameInfop->fixed.maxPlayerNum = mbGameRegp->maxPlayerNum; - - { - int len; - -#if defined(MB_CHANGE_TO_UNICODE) -#define COPY_GAME_INFO_STRING MBi_ExSJIS_BEtoUTF16_LE -#else -#define COPY_GAME_INFO_STRING MI_CpuCopy16 -#endif - - len = mystrlen(mbGameRegp->gameNamep) << 1; - COPY_GAME_INFO_STRING((u8 *)mbGameRegp->gameNamep, gameInfop->fixed.gameName, (u16)len); - - len = MB_GAME_INTRO_LENGTH * 2; - COPY_GAME_INFO_STRING( - (u8 *)mbGameRegp->gameIntroductionp, - gameInfop->fixed.gameIntroduction, (u16)len - ); - } - - gameInfop->volat.nowPlayerNum = 1; - gameInfop->volat.nowPlayerFlag = 0x0001; - gameInfop->broadcastedPlayerFlag = 0x0001; -} - -static BOOL MBi_ReadIconInfo (const char * filePathp, MBIconInfo * iconp, BOOL char_flag) { - FSFile file; - s32 size = char_flag ? MB_ICON_DATA_SIZE : MB_ICON_PALETTE_SIZE; - u16 * dstp = char_flag ? iconp->data : iconp->palette; - - if (filePathp == NULL) { - return FALSE; - } - - FS_InitFile(&file); - - if (FS_OpenFile(&file, filePathp) == FALSE) { - MB_DEBUG_OUTPUT("\t%s : file open error.\n", filePathp); - return FALSE; - } else if ((u32)size != FS_GetLength(&file)) { - MB_DEBUG_OUTPUT("\t%s : different file size.\n", filePathp); - (void)FS_CloseFile(&file); - return FALSE; - } - - (void)FS_ReadFile(&file, dstp, size); - (void)FS_CloseFile(&file); - return TRUE; -} - -void MB_UpdateGameInfoMember (MBGameInfo * gameInfop, const MBUserInfo * member, u16 nowPlayerFlag, u16 changePlayerFlag) { - int i; - u8 playerNum = 1; - - MI_CpuCopy16(member, &gameInfop->volat.member[0], sizeof(MBUserInfo) * MB_MEMBER_MAX_NUM); - - for (i = 0; i < MB_MEMBER_MAX_NUM; i++) { - if (nowPlayerFlag & (0x0002 << i)) { - playerNum++; - } - } - gameInfop->volat.nowPlayerNum = playerNum; - gameInfop->volat.nowPlayerFlag = (u16)(nowPlayerFlag | 0x0001); - gameInfop->volat.changePlayerFlag = changePlayerFlag; - gameInfop->seqNoVolat++; -} - -static int mystrlen (u16 * str) { - int len = 0; - while (*str++) { - len++; - } - return len; -} - -void MB_AddGameInfo (MBGameInfo * newGameInfop) { - MBGameInfo * gInfop = mbss.gameInfoListTop; - - if (!gInfop) { - mbss.gameInfoListTop = newGameInfop; - } else { - while (gInfop->nextp != NULL) { - gInfop = gInfop->nextp; - } - gInfop->nextp = newGameInfop; - } - newGameInfop->nextp = NULL; -} - -BOOL MB_DeleteGameInfo (MBGameInfo * gameInfop) { - MBGameInfo * gInfop = mbss.gameInfoListTop; - MBGameInfo * before; - - while (gInfop != NULL) { - if (gInfop != gameInfop) { - before = gInfop; - gInfop = gInfop->nextp; - continue; - } - - if ((u32)gInfop == (u32)mbss.gameInfoListTop) { - mbss.gameInfoListTop = mbss.gameInfoListTop->nextp; - } else { - before->nextp = gInfop->nextp; - } - - if ((u32)gameInfop == (u32)mbss.nowGameInfop) { - mbss.nowGameInfop = NULL; - if (!MBi_ReadyBeaconSendStatus()) { - mbss.state = MB_BEACON_STATE_READY; - } - } - return TRUE; - } - - return FALSE; -} - -void MB_InitSendGameInfoStatus (void) { - mbss.gameInfoListTop = NULL; - mbss.nowGameInfop = NULL; - mbss.state = MB_BEACON_STATE_READY; - sSendVolatCallback = NULL; - MBi_ClearSendStatus(); -} - -static void MBi_ClearSendStatus (void) { - mbss.seqNoFixed = 0; - mbss.seqNoVolat = 0; - mbss.flagmentNo = 0; - mbss.flagmentMaxNum = 0; - mbss.beaconNo = 0; -} - -void MB_SendGameInfoBeacon (u32 ggid, u16 tgid, u8 attribute) { - while (1) { - switch (mbss.state) { - case MB_BEACON_STATE_STOP: - case MB_BEACON_STATE_READY: - if (!MBi_ReadyBeaconSendStatus()) { - return; - } - break; - case MB_BEACON_STATE_FIXED_START: - MBi_InitSendFixedBeacon(); - break; - case MB_BEACON_STATE_FIXED: - MBi_SendFixedBeacon(ggid, tgid, attribute); - return; - case MB_BEACON_STATE_VOLAT_START: - MBi_InitSendVolatBeacon(); - break; - case MB_BEACON_STATE_VOLAT: - MBi_SendVolatBeacon(ggid, tgid, attribute); - return; - case MB_BEACON_STATE_NEXT_GAME: - break; - } - } -} - -static BOOL MBi_ReadyBeaconSendStatus (void) { - MBGameInfo * nextGameInfop; - - if (!mbss.gameInfoListTop) { - (void)WM_SetGameInfo( - NULL, (u16 *)&bsendBuff, WM_SIZE_USER_GAMEINFO, MBi_GetGgid(), - MBi_GetTgid(), WM_ATTR_FLAG_CS - ); - return FALSE; - } - - if (!mbss.nowGameInfop || !mbss.nowGameInfop->nextp) { - nextGameInfop = mbss.gameInfoListTop; - } else { - nextGameInfop = mbss.nowGameInfop->nextp; - } - - mbss.nowGameInfop = nextGameInfop; - - MBi_ClearSendStatus(); - mbss.seqNoVolat = mbss.nowGameInfop->seqNoVolat; - - mbss.state = MB_BEACON_STATE_FIXED_START; - - return TRUE; -} - -static void MBi_InitSendFixedBeacon (void) { - if (mbss.state != MB_BEACON_STATE_FIXED_START) { - return; - } - - if (mbss.nowGameInfop->dataAttr == MB_BEACON_DATA_ATTR_FIXED_NORMAL) { - mbss.flagmentMaxNum = FIXED_FLAGMENT_MAX(FIXED_NORMAL_SIZE); - mbss.srcp = (u8 *)&mbss.nowGameInfop->fixed; - } else { - mbss.flagmentMaxNum = FIXED_FLAGMENT_MAX(FIXED_NO_ICON_SIZE); - mbss.srcp = (u8 *)&mbss.nowGameInfop->fixed.parent; - } - mbss.state = MB_BEACON_STATE_FIXED; -} - -static void MBi_SendFixedBeacon (u32 ggid, u16 tgid, u8 attribute) { - u32 lastAddr = (u32)mbss.nowGameInfop + sizeof(MBGameInfoFixed); - - if ((u32)mbss.srcp + MB_BEACON_FIXED_DATA_SIZE <= lastAddr) { - bsendBuff.data.fixed.size = MB_BEACON_FIXED_DATA_SIZE; - } else { - bsendBuff.data.fixed.size = (u8)(lastAddr - (u32)mbss.srcp); - MI_CpuClear16( - (void *)((u8 *)bsendBuff.data.fixed.data + bsendBuff.data.fixed.size), - (u32)(MB_BEACON_FIXED_DATA_SIZE - bsendBuff.data.fixed.size) - ); - } - - MB_DEBUG_OUTPUT("send flagment= %2d adr = 0x%x\n", mbss.flagmentNo, mbss.srcp); - MI_CpuCopy16(mbss.srcp, bsendBuff.data.fixed.data, bsendBuff.data.fixed.size); - bsendBuff.data.fixed.flagmentNo = mbss.flagmentNo; - bsendBuff.data.fixed.flagmentMaxNum = mbss.flagmentMaxNum; - bsendBuff.dataAttr = mbss.nowGameInfop->dataAttr; - bsendBuff.seqNoFixed = mbss.nowGameInfop->seqNoFixed; - bsendBuff.seqNoVolat = mbss.seqNoVolat; - bsendBuff.ggid = mbss.nowGameInfop->ggid; - bsendBuff.fileNo = mbss.nowGameInfop->fileNo; - bsendBuff.beaconNo = mbss.beaconNo++; - bsendBuff.data.fixed.sum = 0; - bsendBuff.data.fixed.sum = MBi_calc_cksum((u16 *)&bsendBuff.data, MB_BEACON_DATA_SIZE); - - mbss.flagmentNo++; - if (mbss.flagmentNo < mbss.flagmentMaxNum) { - mbss.srcp += MB_BEACON_FIXED_DATA_SIZE; - } else { - mbss.state = MB_BEACON_STATE_VOLAT_START; - } - - (void)WM_SetGameInfo( - NULL, (u16 *)&bsendBuff, WM_SIZE_USER_GAMEINFO, ggid, tgid, - (u8)(attribute | WM_ATTR_FLAG_MB | WM_ATTR_FLAG_ENTRY) - ); -} - -static void MBi_InitSendVolatBeacon (void) { - mbss.nowGameInfop->broadcastedPlayerFlag = 0x0001; - mbss.seqNoVolat = mbss.nowGameInfop->seqNoVolat; - mbss.state = MB_BEACON_STATE_VOLAT; -} - -static void MBi_SendVolatBeacon (u32 ggid, u16 tgid, u8 attribute) { - int i; - int setPlayerNum; - u16 remainPlayerFlag; - - if (mbss.seqNoVolat != mbss.nowGameInfop->seqNoVolat) { - MBi_InitSendVolatBeacon(); - } - - bsendBuff.dataAttr = MB_BEACON_DATA_ATTR_VOLAT; - bsendBuff.seqNoFixed = mbss.nowGameInfop->seqNoFixed; - bsendBuff.seqNoVolat = mbss.seqNoVolat; - bsendBuff.ggid = mbss.nowGameInfop->ggid; - bsendBuff.fileNo = mbss.nowGameInfop->fileNo; - bsendBuff.beaconNo = mbss.beaconNo++; - - bsendBuff.data.volat.nowPlayerNum = mbss.nowGameInfop->volat.nowPlayerNum; - bsendBuff.data.volat.nowPlayerFlag = mbss.nowGameInfop->volat.nowPlayerFlag; - bsendBuff.data.volat.changePlayerFlag = mbss.nowGameInfop->volat.changePlayerFlag; - - if (sSendVolatCallbackTimming == MB_SEND_VOLAT_CALLBACK_TIMMING_BEFORE - && sSendVolatCallback != NULL) { - sSendVolatCallback(mbss.nowGameInfop->ggid); - } - - for (i = 0; i < MB_USER_VOLAT_DATA_SIZE; i++) { - bsendBuff.data.volat.userVolatData[i] = mbss.nowGameInfop->volat.userVolatData[i]; - } - - MB_DEBUG_OUTPUT("send PlayerFlag = %x\n", mbss.nowGameInfop->volat.nowPlayerFlag); - - MI_CpuClear16(&bsendBuff.data.volat.member[0], sizeof(MBUserInfo) * MB_SEND_MEMBER_MAX_NUM); - setPlayerNum = 0; - remainPlayerFlag = - (u16)(mbss.nowGameInfop->broadcastedPlayerFlag ^ mbss.nowGameInfop->volat.nowPlayerFlag); - for (i = 0; i < MB_MEMBER_MAX_NUM; i++) { - if ((remainPlayerFlag & (0x0002 << i)) == 0) { - continue; - } - - MB_DEBUG_OUTPUT(" member %d set.\n", i); - - MI_CpuCopy16( - &mbss.nowGameInfop->volat.member[i], - &bsendBuff.data.volat.member[setPlayerNum], sizeof(MBUserInfo) - ); - mbss.nowGameInfop->broadcastedPlayerFlag |= 0x0002 << i; - if (++setPlayerNum == MB_SEND_MEMBER_MAX_NUM) { - break; - } - } - if (setPlayerNum < MB_SEND_MEMBER_MAX_NUM) { - bsendBuff.data.volat.member[setPlayerNum].playerNo = 0; - } - - bsendBuff.data.volat.sum = 0; - bsendBuff.data.volat.sum = MBi_calc_cksum((u16 *)&bsendBuff.data, MB_BEACON_DATA_SIZE); - - if (mbss.nowGameInfop->broadcastedPlayerFlag == mbss.nowGameInfop->volat.nowPlayerFlag) { - mbss.state = MB_BEACON_STATE_READY; - } - - (void)WM_SetGameInfo( - NULL, (u16 *)&bsendBuff, WM_SIZE_USER_GAMEINFO, ggid, tgid, - (u8)(attribute | WM_ATTR_FLAG_MB | WM_ATTR_FLAG_ENTRY) - ); - - if (sSendVolatCallbackTimming == MB_SEND_VOLAT_CALLBACK_TIMMING_AFTER - && sSendVolatCallback != NULL) { - sSendVolatCallback(mbss.nowGameInfop->ggid); - } -} - -void MB_InitRecvGameInfoStatus (void) { - MI_CpuClearFast(mbrsp, sizeof(MbBeaconRecvStatus)); - - mbrsp->scanCountUnit = MB_SCAN_COUNT_UNIT_NORMAL; -} - -BOOL MB_RecvGameInfoBeacon (MBBeaconMsgCallback Callbackp, u16 linkLevel, WMBssDesc * bssDescp) { - int index; - - if (!MBi_CheckMBParent(bssDescp)) { - return FALSE; - } - - MI_CpuCopy16(bssDescp, &bssDescbuf, sizeof(WMBssDesc)); - - bssDescp = &bssDescbuf; - - brecvBuffp = (MbBeacon *)bssDescp->gameInfo.userGameInfo; - - if (MBi_calc_cksum((u16 *)&brecvBuffp->data, MB_BEACON_DATA_SIZE)) { - MB_DEBUG_OUTPUT("Beacon checksum error!\n"); - return FALSE; - } - - index = MBi_GetStoreElement(bssDescp, Callbackp); - if (index < 0) { - return FALSE; - } - MB_DEBUG_OUTPUT("GameInfo Index:%6d\n", index); - - MBi_AnalyzeBeacon(bssDescp, index, linkLevel); - - MBi_CheckCompleteGameInfoFlagments(index, Callbackp); - - return TRUE; -} - -static BOOL MBi_CheckMBParent (WMBssDesc * bssDescp) { - if ((bssDescp->gameInfo.magicNumber != WM_GAMEINFO_MAGIC_NUMBER) - || !(bssDescp->gameInfo.attribute & WM_ATTR_FLAG_MB)) { - MB_DEBUG_OUTPUT( - "not MB parent : %x%x\n", - *(u16 *)(&bssDescp->bssid[4]), *(u32 *)bssDescp->bssid - ); - return FALSE; - } else { - MB_DEBUG_OUTPUT( - "MB parent : %x%x", - *(u16 *)(&bssDescp->bssid[4]), *(u32 *)bssDescp->bssid - ); - return TRUE; - } -} - -static void MBi_SetSSIDToBssDesc (WMBssDesc * bssDescp, u32 ggid) { - bssDescp->ssidLength = 32; - ((u16 *)bssDescp->ssid)[0] = (u16)(ggid & 0x0000ffff); - ((u16 *)bssDescp->ssid)[1] = (u16)((ggid & 0xffff0000) >> 16); - ((u16 *)bssDescp->ssid)[2] = bssDescp->gameInfo.tgid; -} - -static int MBi_GetStoreElement (WMBssDesc * bssDescp, MBBeaconMsgCallback Callbackp) { - int i; - - for (i = 0; i < MB_GAME_INFO_RECV_LIST_NUM; i++) { - MBGameInfoRecvList * info = &mbrsp->list[i]; - - if ((mbrsp->usingGameInfoFlag & (0x01 << i)) == 0) { - continue; - } - - if (info->gameInfo.ggid != brecvBuffp->ggid) { - continue; - } - - if (!WM_IsBssidEqual(info->bssDesc.bssid, bssDescp->bssid)) { - continue; - } - - if (mbrsp->list[i].gameInfo.fileNo != brecvBuffp->fileNo) { - continue; - } - - if (!(mbrsp->validGameInfoFlag & (0x01 << i))) { - MBi_LockScanTarget(i); - } - return i; - } - - for (i = 0; i < MB_GAME_INFO_RECV_LIST_NUM; i++) { - if (mbrsp->usingGameInfoFlag & (0x01 << i)) { - continue; - } - - MI_CpuCopy16(bssDescp, &mbrsp->list[i].bssDesc, sizeof(WMBssDesc)); - - mbrsp->list[i].gameInfo.seqNoFixed = brecvBuffp->seqNoFixed; - mbrsp->usingGameInfoFlag |= (u16)(0x01 << i); - - MB_DEBUG_OUTPUT("\n"); - - MBi_LockScanTarget(i); - return i; - } - - if (Callbackp != NULL) { - Callbackp(MB_BC_MSG_GINFO_LIST_FULL, NULL, 0); - } - return -1; -} - -static void MBi_CheckCompleteGameInfoFlagments (int index, MBBeaconMsgCallback Callbackp) { - MBGameInfoRecvList * info = &mbrsp->list[index]; - - if (Callbackp != NULL) { - Callbackp(MB_BC_MSG_GINFO_BEACON, info, index); - } - if ((info->getFlagmentFlag == info->allFlagmentFlag) && (info->getFlagmentFlag) - && (info->gameInfo.volat.nowPlayerFlag) - && (info->getPlayerFlag == info->gameInfo.volat.nowPlayerFlag)) { - if (mbrsp->validGameInfoFlag & (0x01 << index)) { - return; - } - mbrsp->validGameInfoFlag |= 0x01 << index; - mbrsp->usefulGameInfoFlag |= 0x01 << index; - MBi_UnlockScanTarget(); - MB_DEBUG_OUTPUT("validated ParentInfo = %d\n", index); - if (Callbackp != NULL) { - Callbackp(MB_BC_MSG_GINFO_VALIDATED, info, index); - } - } else { - if ((mbrsp->validGameInfoFlag & (0x01 << index)) == 0) { - return; - } - mbrsp->validGameInfoFlag ^= (0x01 << index); - MB_DEBUG_OUTPUT("Invaldated ParentInfo = %d\n", index); - if (Callbackp != NULL) { - Callbackp(MB_BC_MSG_GINFO_INVALIDATED, info, index); - } - } -} - -void MB_CountGameInfoLifetime (MBBeaconMsgCallback Callbackp, BOOL found_parent) { - int i; - BOOL unlock = FALSE; - - for (i = 0; i < MB_GAME_INFO_RECV_LIST_NUM; i++) { - MBGameInfoRecvList * info = &mbrsp->list[i]; - u16 mask = (u16)(0x0001 << i); - if ((mbrsp->usingGameInfoFlag & mask) == 0) { - continue; - } - - info->lifetimeCount -= mbrsp->scanCountUnit; - if (info->lifetimeCount >= 0) { - continue; - } - info->lifetimeCount = 0; - if (mbrsp->validGameInfoFlag & mask) { - if (Callbackp != NULL) { - Callbackp(MB_BC_MSG_GINFO_LOST, info, i); - } - } - if (mbrsp->nowScanTargetFlag & mask) { - unlock = TRUE; - } - mbrsp->usingGameInfoFlag &= ~mask; - MB_DeleteRecvGameInfo(i); - MB_DEBUG_OUTPUT("gameInfo %2d : lifetime end.\n", i); - } - - if (mbrsp->nowScanTargetFlag && mbrsp->nowLockTimeCount > 0) { - mbrsp->nowLockTimeCount -= mbrsp->scanCountUnit; - if (mbrsp->nowLockTimeCount < 0) { - MB_DEBUG_OUTPUT("scan lock time up!\n"); - unlock = TRUE; - } else if (!found_parent) { - if (++mbrsp->notFoundLockTargetCount > 4) { - MB_DEBUG_OUTPUT("scan lock target not found!\n"); - unlock = TRUE; - } - } else { - mbrsp->notFoundLockTargetCount = 0; - } - } - - if (unlock) { - mbrsp->nowLockTimeCount = 0; - MBi_UnlockScanTarget(); - } -} - -static void MBi_AnalyzeBeacon (WMBssDesc * bssDescp, int index, u16 linkLevel) { - MBi_CheckTGID(bssDescp, index); - MBi_CheckSeqNoFixed(index); - MBi_CheckSeqNoVolat(index); - - { - MBGameInfoRecvList * info = &mbrsp->list[index]; - - if (info->beaconNo == brecvBuffp->beaconNo) { - if (++info->sameBeaconRecvCount > MB_SAME_BEACON_RECV_MAX_COUNT) { - info->lifetimeCount = 0; - MB_OUTPUT("The parent broadcast same beacon.: %d\n", index); - MBi_InvalidateGameInfoBssID(&info->bssDesc.bssid[0]); - return; - } - } else { - info->sameBeaconRecvCount = 0; - } - - info->beaconNo = brecvBuffp->beaconNo; - info->lifetimeCount = MB_LIFETIME_MAX_COUNT; - info->gameInfo.ggid = brecvBuffp->ggid; - info->gameInfo.fileNo = brecvBuffp->fileNo; - info->linkLevel = linkLevel; - - MBi_SetSSIDToBssDesc(&info->bssDesc, info->gameInfo.ggid); - } - - if (brecvBuffp->dataAttr == MB_BEACON_DATA_ATTR_VOLAT) { - MBi_RecvVolatBeacon(index); - } else { - MBi_RecvFixedBeacon(index); - } -} - -static void MBi_CheckTGID (WMBssDesc * bssDescp, int index) { - if (mbrsp->list[index].bssDesc.gameInfo.tgid == bssDescp->gameInfo.tgid) { - return; - } - - MB_DEBUG_OUTPUT( - "\ntgid updated! : %x%x", *(u16 *)(&bssDescp->bssid[4]), - *(u32 *)bssDescp->bssid - ); - MB_DeleteRecvGameInfoWithoutBssdesc(index); - MI_CpuCopy16(bssDescp, &mbrsp->list[index].bssDesc, sizeof(WMBssDesc)); - - MBi_LockScanTarget(index); -} - -static void MBi_CheckSeqNoFixed (int index) { - if (mbrsp->list[index].gameInfo.seqNoFixed == brecvBuffp->seqNoFixed) { - return; - } - - MB_DEBUG_OUTPUT("\n seqNoFixed updated!"); - MB_DeleteRecvGameInfoWithoutBssdesc(index); - MBi_LockScanTarget(index); - mbrsp->list[index].gameInfo.seqNoFixed = brecvBuffp->seqNoFixed; -} - -static void MBi_CheckSeqNoVolat (int index) { - MBGameInfoRecvList * grecvp = &mbrsp->list[index]; - - if (mbrsp->list[index].gameInfo.seqNoVolat != brecvBuffp->seqNoVolat) { - MB_DEBUG_OUTPUT("\n seqNoVolat updated!"); - MBi_LockScanTarget(index); - } -} - -static void MBi_InvalidateGameInfoBssID (u8 * bssidp) { - int i; - for (i = 0; i < MB_GAME_INFO_RECV_LIST_NUM; i++) { - if ((mbrsp->usingGameInfoFlag & (0x01 << i)) == 0) { - continue; - } - - if (!WM_IsBssidEqual(bssidp, mbrsp->list[i].bssDesc.bssid)) { - continue; - } - - mbrsp->list[i].lifetimeCount = 0; - MB_OUTPUT("The parent broadcast same beacon.: %d\n", i); - } -} - -static void MBi_RecvFixedBeacon (int index) { - MBGameInfoRecvList * grecvp = &mbrsp->list[index]; - u32 lastAddr = (u32) & grecvp->gameInfo + sizeof(MBGameInfoFixed); - u8 * dstp; - - if (grecvp->gameInfo.seqNoFixed == brecvBuffp->seqNoFixed) { - if (grecvp->getFlagmentFlag & (0x01 << brecvBuffp->data.fixed.flagmentNo)) { - return; - } - } - - if (brecvBuffp->dataAttr == MB_BEACON_DATA_ATTR_FIXED_NORMAL) { - dstp = (u8 *)&grecvp->gameInfo.fixed; - } else { - dstp = (u8 *)&grecvp->gameInfo.fixed.parent; - } - dstp += MB_BEACON_FIXED_DATA_SIZE * brecvBuffp->data.fixed.flagmentNo; - - if ((u32)dstp + brecvBuffp->data.fixed.size > lastAddr) { - MB_DEBUG_OUTPUT("recv beacon gInfoFixed Buffer over!\n"); - - return; - } - - MB_DEBUG_OUTPUT("recv flagment= %2d adr = 0x%x", brecvBuffp->data.fixed.flagmentNo, dstp); - MI_CpuCopy16(brecvBuffp->data.fixed.data, dstp, brecvBuffp->data.fixed.size); - grecvp->gameInfo.dataAttr = brecvBuffp->dataAttr; - grecvp->getFlagmentFlag |= 0x01 << brecvBuffp->data.fixed.flagmentNo; - grecvp->allFlagmentFlag = (u32)((0x01 << brecvBuffp->data.fixed.flagmentMaxNum) - 1); - MB_DEBUG_OUTPUT( - "\t now flagment = 0x%x \t all flagment = 0x%x\n", - grecvp->getFlagmentFlag, grecvp->allFlagmentFlag - ); -} - -static void MBi_RecvVolatBeacon (int index) { - int i; - MBGameInfoRecvList * grecvp = &mbrsp->list[index]; - - for (i = 0; i < MB_USER_VOLAT_DATA_SIZE; i++) { - grecvp->gameInfo.volat.userVolatData[i] = brecvBuffp->data.volat.userVolatData[i]; - } - MI_CpuCopy16(brecvBuffp, &grecvp->bssDesc.gameInfo.userGameInfo, WM_SIZE_USER_GAMEINFO); - - if (grecvp->gameInfo.seqNoVolat != brecvBuffp->seqNoVolat) { - if ((u8)(grecvp->gameInfo.seqNoVolat + 1) == brecvBuffp->seqNoVolat) { - for (i = 0; i < MB_MEMBER_MAX_NUM; i++) { - if (brecvBuffp->data.volat.changePlayerFlag & (0x02 << i)) { - MI_CpuClear16(&grecvp->gameInfo.volat.member[i], sizeof(MBUserInfo)); - } - } - grecvp->getPlayerFlag &= ~brecvBuffp->data.volat.changePlayerFlag; - mbrsp->validGameInfoFlag &= ~(0x0001 << index); - } else { - MI_CpuClear16( - &grecvp->gameInfo.volat.member[0], - sizeof(MBUserInfo) * MB_MEMBER_MAX_NUM - ); - grecvp->getPlayerFlag = 0; - mbrsp->validGameInfoFlag &= ~(0x0001 << index); - } - grecvp->gameInfo.seqNoVolat = brecvBuffp->seqNoVolat; - } else if (grecvp->getPlayerFlag == brecvBuffp->data.volat.nowPlayerFlag) { - return; - } - - grecvp->gameInfo.volat.nowPlayerNum = brecvBuffp->data.volat.nowPlayerNum; - grecvp->gameInfo.volat.nowPlayerFlag = brecvBuffp->data.volat.nowPlayerFlag; - grecvp->gameInfo.volat.changePlayerFlag = brecvBuffp->data.volat.changePlayerFlag; - grecvp->getPlayerFlag |= 0x0001; - - for (i = 0; i < MB_SEND_MEMBER_MAX_NUM; i++) { - int playerNo = (int)brecvBuffp->data.volat.member[i].playerNo; - if (playerNo == 0) { - continue; - } - MB_DEBUG_OUTPUT("member %d recv.\n", playerNo); - MI_CpuCopy16( - &brecvBuffp->data.volat.member[i], - &grecvp->gameInfo.volat.member[playerNo - 1], sizeof(MBUserInfo) - ); - grecvp->getPlayerFlag |= 0x01 << playerNo; - } -} - -static void MBi_LockScanTarget (int index) { - if (mbrsp->nowScanTargetFlag) { - return; - } - - if (sLockFunc != NULL) { - sLockFunc(mbrsp->list[index].bssDesc.bssid); - } - mbrsp->scanCountUnit = MB_SCAN_COUNT_UNIT_LOCKING; - - mbrsp->nowScanTargetFlag = (u16)(0x01 << index); - mbrsp->nowLockTimeCount = MB_LOCKTIME_MAX_COUNT; - MB_DEBUG_OUTPUT( - "scan target locked. : %x %x %x %x %x %x\n", - mbrsp->list[index].bssDesc.bssid[0], - mbrsp->list[index].bssDesc.bssid[1], - mbrsp->list[index].bssDesc.bssid[2], - mbrsp->list[index].bssDesc.bssid[3], - mbrsp->list[index].bssDesc.bssid[4], mbrsp->list[index].bssDesc.bssid[5] - ); -} - -static void MBi_UnlockScanTarget (void) { - if (mbrsp->nowScanTargetFlag == 0) { - return; - } - - if (sUnlockFunc != NULL) { - sUnlockFunc(); - } - mbrsp->scanCountUnit = MB_SCAN_COUNT_UNIT_NORMAL; - mbrsp->nowScanTargetFlag = 0; - mbrsp->notFoundLockTargetCount = 0; - - MB_DEBUG_OUTPUT(" unlock target\n"); -} - -void MB_DeleteRecvGameInfo (int index) { - mbrsp->usefulGameInfoFlag &= ~(0x0001 << index); - mbrsp->validGameInfoFlag &= ~(0x0001 << index); - MI_CpuClear16(&mbrsp->list[index], sizeof(MBGameInfoRecvList)); -} - -void MB_DeleteRecvGameInfoWithoutBssdesc (int index) { - mbrsp->usefulGameInfoFlag &= ~(0x0001 << index); - mbrsp->validGameInfoFlag &= ~(0x0001 << index); - mbrsp->list[index].getFlagmentFlag = 0; - mbrsp->list[index].allFlagmentFlag = 0; - mbrsp->list[index].getPlayerFlag = 0; - mbrsp->list[index].linkLevel = 0; - MI_CpuClear16(&(mbrsp->list[index].gameInfo), sizeof(MBGameInfo)); -} - -MBGameInfoRecvList * MB_GetGameInfoRecvList (int index) { - if ((mbrsp->usefulGameInfoFlag & (0x01 << index)) == 0) { - return NULL; - } - - return &mbrsp->list[index]; -} - -void MB_SetSendVolatCallback (MBSendVolatCallbackFunc callback, u32 timming) { - OSIntrMode enabled = OS_DisableInterrupts(); - - sSendVolatCallback = callback; - sSendVolatCallbackTimming = timming; - - (void)OS_RestoreInterrupts(enabled); -} - -void MB_SetUserVolatData (u32 ggid, const u8 * userData, u32 size) { - MBGameInfo * gameInfo; - - SDK_ASSERT(size <= MB_USER_VOLAT_DATA_SIZE); - SDK_NULL_ASSERT(userData); - - gameInfo = mbss.gameInfoListTop; - if (gameInfo == NULL) { - return; - } - - while (gameInfo->ggid != ggid) { - if (gameInfo == NULL) { - return; - } - gameInfo = gameInfo->nextp; - } - - { - u32 i; - - OSIntrMode enabled = OS_DisableInterrupts(); - - for (i = 0; i < size; i++) { - gameInfo->volat.userVolatData[i] = userData[i]; - } - - (void)OS_RestoreInterrupts(enabled); - } -} - -void * MB_GetUserVolatData (const WMGameInfo * gameInfo) { - MbBeacon * beacon; - - SDK_NULL_ASSERT(gameInfo); - - if (!(gameInfo->attribute & WM_ATTR_FLAG_MB)) { - return NULL; - } - - beacon = (MbBeacon *)(gameInfo->userGameInfo); - - if (beacon->dataAttr != MB_BEACON_DATA_ATTR_VOLAT) { - return NULL; - } - - return beacon->data.volat.userVolatData; -} - -#if defined(MB_CHANGE_TO_UNICODE) - -#define SJIS_HIGHER_CODE1_MIN 0x81 -#define SJIS_HIGHER_CODE1_MAX 0x9F -#define SJIS_HIGHER_CODE2_MIN 0xE0 -#define SJIS_HIGHER_CODE2_MAX 0xFC - -#define TBL8140_ELEM_NUM 0xbd -#define TBL849f_ELEM_NUM 0x20 - -typedef struct SjisUtf16Pare { - u16 sjis; - u16 unicode; -} SjisUtf16Pare; - -static u16 SearchUnicodeTable(u16 unicode, SjisUtf16Pare * tblp, int elem_num); - -static const SjisUtf16Pare tblSJIS_UTF16_8140[TBL8140_ELEM_NUM]; -static const SjisUtf16Pare tblSJIS_UTF16_849f[TBL849f_ELEM_NUM]; - -void MBi_ExSJIS_BEtoUTF16_LE (u8 * sjisp, u16 * unip, u16 length) { - u16 code; - - while ((*sjisp) && (length-- > 0)) { - if (((*sjisp >= SJIS_HIGHER_CODE1_MIN) && (*sjisp <= SJIS_HIGHER_CODE1_MAX)) - || ((*sjisp >= SJIS_HIGHER_CODE2_MIN) && (*sjisp <= SJIS_HIGHER_CODE2_MAX))) { - code = (u16)((u16) * sjisp++ << 8); - code |= (u16) * sjisp++; - } else { - code = (u16) * sjisp++; - } - - if (code == 0x005c) { - *unip = 0x00a5; - } else if (code == 0x007e) { - *unip = 0x203e; - } else if ((code == 0x000d) || (code == 0x000a)) { - *unip = code; - } else if ((code >= 0x0020) && (code < 0x007e)) { - *unip = code; - } else if ((code >= 0x00a1) && (code <= 0x00df)) { - *unip = (u16)((code - 0x00a1) + 0xff61); - } else if ((code >= 0x8140) && (code <= 0x81fc)) { - *unip = tblSJIS_UTF16_8140[code - 0x8140].unicode; - } else if ((code >= 0x824f) && (code <= 0x8258)) { - *unip = (u16)((code - 0x824f) + 0xff10); - } else if ((code >= 0x8260) && (code <= 0x8279)) { - *unip = (u16)((code - 0x8260) + 0xff21); - } else if ((code >= 0x8281) && (code <= 0x829a)) { - *unip = (u16)((code - 0x8281) + 0xff41); - } else if ((code >= 0x829f) && (code <= 0x82f1)) { - *unip = (u16)((code - 0x829f) + 0x3041); - } else if ((code >= 0x8340) && (code <= 0x8396)) { - *unip = (u16)((code - 0x8340) + 0x30a1); - if (code == 0x837f) { - *unip = 0x3000; - } else if (code > 0x837f) { - (*unip)--; - } - } else if ((code >= 0x839f) && (code <= 0x83b6)) { - *unip = (u16)((code - 0x839f) + 0x0391); - if (code >= 0x83b0) { - (*unip)++; - } - } else if ((code >= 0x83bf) && (code <= 0x83d6)) { - *unip = (u16)((code - 0x83bf) + 0x03b1); - if (code >= 0x83d0) { - (*unip)++; - } - } else if ((code >= 0x8440) && (code <= 0x8460)) { - *unip = (u16)((code - 0x8440) + 0x0410); - if (code == 0x8446) { - *unip = 0x0401; - } else if (code > 0x8446) { - (*unip)--; - } - } else if ((code >= 0x8470) && (code <= 0x8491)) { - *unip = (u16)((code - 0x8470) + 0x0430); - if (code == 0x8476) { - *unip = 0x0451; - } else if (code == 0x847f) { - *unip = 0x3000; - } else if (code > 0x8476) { - (*unip)--; - if (code > 0x847f) { - (*unip)--; - } - } - } else if ((code >= 0x849f) && (code <= 0x84be)) { - *unip = tblSJIS_UTF16_849f[code - 0x849f].unicode; - } else { - *unip = 0x3000; - } - - unip++; - } -} - -void MBi_ExUTF16_LEtoSJIS_BE (u8 * sjisp, u16 * unip, u16 length) { - u16 code, sjis_le; - - while ((*unip) && (length-- > 0)) { - code = *unip++; - sjis_le = 0; - - if (code == 0x00a5) { - sjis_le = 0x005c; - } else if (code == 0x005c) { - sjis_le = 0x815f; - } else if (code == 0x203e) { - sjis_le = 0x007e; - } else if ((code == 0x000d) || (code == 0x000a)) { - sjis_le = code; - } else if ((code >= 0x0020) && (code < 0x007e)) { - sjis_le = code; - } else if ((code >= 0x00a2) && (code <= 0x00f7)) { - sjis_le = - SearchUnicodeTable( - code, (SjisUtf16Pare *)&tblSJIS_UTF16_8140[0xc], - 0x81f7 - 0x814c - ); - } else if ((code >= 0xff61) && (code <= 0xff9f)) { - sjis_le = (u16)((code - 0xff61) + 0x00a1); - } else if (code == 0x4edd) { - sjis_le = 0x8157; - } else if ((code >= 0xff01) && (code <= 0xffe5)) { - if ((code >= 0xff10) && (code <= 0xff19)) { - sjis_le = (u16)((code - 0xff10) + 0x824f); - } else if ((code >= 0xff21) && (code <= 0xff3a)) { - sjis_le = (u16)((code - 0xff21) + 0x8260); - } else if ((code >= 0xff41) && (code <= 0xff5a)) { - sjis_le = (u16)((code - 0xff41) + 0x8281); - } else { - sjis_le = - SearchUnicodeTable( - code, (SjisUtf16Pare *)&tblSJIS_UTF16_8140[3], - 0x8197 - 0x8143 - ); - } - } else if ((code >= 0x3000) && (code <= 0x30fe)) { - if ((code >= 0x3041) && (code <= 0x3093)) { - sjis_le = (u16)((code - 0x3041) + 0x829f); - } else if ((code >= 0x30a1) && (code <= 0x30f6)) { - sjis_le = (u16)((code - 0x30a1) + 0x8340); - if (code >= 0x30e0) { - (sjis_le)++; - } - } else { - sjis_le = - SearchUnicodeTable( - code, (SjisUtf16Pare *)&tblSJIS_UTF16_8140[0], - 0x81ac - 0x8140 - ); - } - } else if ((code >= 0x0391) && (code <= 0x03a9)) { - sjis_le = (u16)((code - 0x0391) + 0x839f); - if (code >= 0x03a3) { - (sjis_le)--; - } - } else if ((code >= 0x03b1) && (code <= 0x03c9)) { - sjis_le = (u16)((code - 0x03b1) + 0x83bf); - if (code >= 0x03c3) { - (sjis_le)--; - } - } else if (code == 0x0401) { - sjis_le = 0x8446; - } else if ((code >= 0x0410) && (code <= 0x042f)) { - sjis_le = (u16)((code - 0x0410) + 0x8440); - if (code >= 0x0416) { - (sjis_le)++; - } - } else if ((code >= 0x0430) && (code <= 0x044f)) { - sjis_le = (u16)((code - 0x0430) + 0x8470); - if (code >= 0x0436) { - (sjis_le)++; - if (code >= 0x043e) { - (sjis_le)++; - } - } - } else if (code == 0x0451) { - sjis_le = 0x8476; - } else if ((code >= 0x2500) && (code <= 0x254b)) { - sjis_le = - SearchUnicodeTable(code, (SjisUtf16Pare *)&tblSJIS_UTF16_849f, TBL849f_ELEM_NUM); - } else if (((code >= 0x2010) && (code <= 0x2312)) || ((code >= 0x25a0) && (code <= 0x266f))) { - sjis_le = - SearchUnicodeTable( - code, (SjisUtf16Pare *)&tblSJIS_UTF16_8140[0x815c - 0x8140], - 0x81fc - 0x815c - ); - } else { - sjis_le = 0x8140; - } - - if (sjis_le & 0xff00) { - *sjisp++ = (u8)(sjis_le >> 8); - } - *sjisp++ = (u8)(sjis_le); - } -} - -static u16 SearchUnicodeTable (u16 unicode, SjisUtf16Pare * tblp, int elem_num) { - elem_num++; - while (elem_num--) { - if (tblp->unicode == unicode) { - return tblp->sjis; - } - tblp++; - } - return 0x8140; -} - -void MBi_CheckSJIS_BEtoUTF16_LE (void) { - u16 sjis, sjis_be, rev_sjis, sjis_le; - u16 unicode; - - for (sjis = 0; sjis < 0x00ff; sjis++) { - unicode = 0; - rev_sjis = 0; - MBi_ExSJIS_BEtoUTF16_LE((u8 *)&sjis, &unicode, 1); - MBi_ExUTF16_LEtoSJIS_BE((u8 *)&rev_sjis, &unicode, 1); - sjis_le = (u16)((rev_sjis >> 8) | (rev_sjis << 8)); - MB_DEBUG_OUTPUT("0x%x\t-> 0x%x\t-> 0x%x\n", sjis, unicode, sjis_le); - } - - for (sjis = 0x8140; sjis < 0x84ff; sjis++) { - unicode = 0; - rev_sjis = 0; - sjis_be = (u16)((sjis >> 8) | (sjis << 8)); - MBi_ExSJIS_BEtoUTF16_LE((u8 *)&sjis_be, &unicode, 1); - MBi_ExUTF16_LEtoSJIS_BE((u8 *)&rev_sjis, &unicode, 1); - sjis_le = (u16)((rev_sjis >> 8) | (rev_sjis << 8)); - MB_DEBUG_OUTPUT("0x%x\t-> 0x%x\t-> 0x%x\n", sjis, unicode, sjis_le); - } -} - -static const SjisUtf16Pare tblSJIS_UTF16_8140[TBL8140_ELEM_NUM] = { - {0x8140, 0x3000}, - {0x8141, 0x3001}, - {0x8142, 0x3002}, - {0x8143, 0xFF0C}, - {0x8144, 0xFF0E}, - {0x8145, 0x30FB}, - {0x8146, 0xFF1A}, - {0x8147, 0xFF1B}, - {0x8148, 0xFF1F}, - {0x8149, 0xFF01}, - {0x814A, 0x309B}, - {0x814B, 0x309C}, - {0x814C, 0x00B4}, - {0x814D, 0xFF40}, - {0x814E, 0x00A8}, - {0x814F, 0xFF3E}, - {0x8150, 0xFFE3}, - {0x8151, 0xFF3F}, - {0x8152, 0x30FD}, - {0x8153, 0x30FE}, - {0x8154, 0x309D}, - {0x8155, 0x309E}, - {0x8156, 0x3003}, - {0x8157, 0x4EDD}, - {0x8158, 0x3005}, - {0x8159, 0x3006}, - {0x815A, 0x3007}, - {0x815B, 0x30FC}, - {0x815C, 0x2015}, - {0x815D, 0x2010}, - {0x815E, 0xFF0F}, - {0x815F, 0x005C}, - {0x8160, 0x301C}, - {0x8161, 0x2016}, - {0x8162, 0xFF5C}, - {0x8163, 0x2026}, - {0x8164, 0x2025}, - {0x8165, 0x2018}, - {0x8166, 0x2019}, - {0x8167, 0x201C}, - {0x8168, 0x201D}, - {0x8169, 0xFF08}, - {0x816A, 0xFF09}, - {0x816B, 0x3014}, - {0x816C, 0x3015}, - {0x816D, 0xFF3B}, - {0x816E, 0xFF3D}, - {0x816F, 0xFF5B}, - {0x8170, 0xFF5D}, - {0x8171, 0x3008}, - {0x8172, 0x3009}, - {0x8173, 0x300A}, - {0x8174, 0x300B}, - {0x8175, 0x300C}, - {0x8176, 0x300D}, - {0x8177, 0x300E}, - {0x8178, 0x300F}, - {0x8179, 0x3010}, - {0x817A, 0x3011}, - {0x817B, 0xFF0B}, - {0x817C, 0x2212}, - {0x817D, 0x00B1}, - {0x817E, 0x00D7}, - {0x817F, 0x3000}, - {0x8180, 0x00F7}, - {0x8181, 0xFF1D}, - {0x8182, 0x2260}, - {0x8183, 0xFF1C}, - {0x8184, 0xFF1E}, - {0x8185, 0x2266}, - {0x8186, 0x2267}, - {0x8187, 0x221E}, - {0x8188, 0x2234}, - {0x8189, 0x2642}, - {0x818A, 0x2640}, - {0x818B, 0x00B0}, - {0x818C, 0x2032}, - {0x818D, 0x2033}, - {0x818E, 0x2103}, - {0x818F, 0xFFE5}, - {0x8190, 0xFF04}, - {0x8191, 0x00A2}, - {0x8192, 0x00A3}, - {0x8193, 0xFF05}, - {0x8194, 0xFF03}, - {0x8195, 0xFF06}, - {0x8196, 0xFF0A}, - {0x8197, 0xFF20}, - {0x8198, 0x00A7}, - {0x8199, 0x2606}, - {0x819A, 0x2605}, - {0x819B, 0x25CB}, - {0x819C, 0x25CF}, - {0x819D, 0x25CE}, - {0x819E, 0x25C7}, - {0x819F, 0x25C6}, - {0x81A0, 0x25A1}, - {0x81A1, 0x25A0}, - {0x81A2, 0x25B3}, - {0x81A3, 0x25B2}, - {0x81A4, 0x25BD}, - {0x81A5, 0x25BC}, - {0x81A6, 0x203B}, - {0x81A7, 0x3012}, - {0x81A8, 0x2192}, - {0x81A9, 0x2190}, - {0x81AA, 0x2191}, - {0x81AB, 0x2193}, - {0x81AC, 0x3013}, - {0x81AD, 0x3000}, - {0x81AE, 0x3000}, - {0x81AF, 0x3000}, - {0x81B0, 0x3000}, - {0x81B1, 0x3000}, - {0x81B2, 0x3000}, - {0x81B3, 0x3000}, - {0x81B4, 0x3000}, - {0x81B5, 0x3000}, - {0x81B6, 0x3000}, - {0x81B7, 0x3000}, - {0x81B8, 0x2208}, - {0x81B9, 0x220B}, - {0x81BA, 0x2286}, - {0x81BB, 0x2287}, - {0x81BC, 0x2282}, - {0x81BD, 0x2283}, - {0x81BE, 0x222A}, - {0x81BF, 0x2229}, - {0x81C0, 0x3000}, - {0x81C1, 0x3000}, - {0x81C2, 0x3000}, - {0x81C3, 0x3000}, - {0x81C4, 0x3000}, - {0x81C5, 0x3000}, - {0x81C6, 0x3000}, - {0x81C7, 0x3000}, - {0x81C8, 0x2227}, - {0x81C9, 0x2228}, - {0x81CA, 0x00AC}, - {0x81CB, 0x21D2}, - {0x81CC, 0x21D4}, - {0x81CD, 0x2200}, - {0x81CE, 0x2203}, - {0x81CF, 0x3000}, - {0x81D0, 0x3000}, - {0x81D1, 0x3000}, - {0x81D2, 0x3000}, - {0x81D3, 0x3000}, - {0x81D4, 0x3000}, - {0x81D5, 0x3000}, - {0x81D6, 0x3000}, - {0x81D7, 0x3000}, - {0x81D8, 0x3000}, - {0x81D9, 0x3000}, - {0x81DA, 0x2220}, - {0x81DB, 0x22A5}, - {0x81DC, 0x2312}, - {0x81DD, 0x2202}, - {0x81DE, 0x2207}, - {0x81DF, 0x2261}, - {0x81E0, 0x2252}, - {0x81E1, 0x226A}, - {0x81E2, 0x226B}, - {0x81E3, 0x221A}, - {0x81E4, 0x223D}, - {0x81E5, 0x221D}, - {0x81E6, 0x2235}, - {0x81E7, 0x222B}, - {0x81E8, 0x222C}, - {0x81E9, 0x3000}, - {0x81EA, 0x3000}, - {0x81EB, 0x3000}, - {0x81EC, 0x3000}, - {0x81EE, 0x3000}, - {0x81EE, 0x3000}, - {0x81EF, 0x3000}, - {0x81F0, 0x212B}, - {0x81F1, 0x2030}, - {0x81F2, 0x266F}, - {0x81F3, 0x266D}, - {0x81F4, 0x266A}, - {0x81F5, 0x2020}, - {0x81F6, 0x2021}, - {0x81F7, 0x00B6}, - {0x81F8, 0x3000}, - {0x81F9, 0x3000}, - {0x81FA, 0x3000}, - {0x81FB, 0x3000}, - {0x81FC, 0x25EF}, -}; - -static const SjisUtf16Pare tblSJIS_UTF16_849f[TBL849f_ELEM_NUM] = { - {0x849F, 0x2500}, - {0x84A0, 0x2502}, - {0x84A1, 0x250C}, - {0x84A2, 0x2510}, - {0x84A3, 0x2518}, - {0x84A4, 0x2514}, - {0x84A5, 0x251C}, - {0x84A6, 0x252C}, - {0x84A7, 0x2524}, - {0x84A8, 0x2534}, - {0x84A9, 0x253C}, - {0x84AA, 0x2501}, - {0x84AB, 0x2503}, - {0x84AC, 0x250F}, - {0x84AD, 0x2513}, - {0x84AE, 0x251B}, - {0x84AF, 0x2517}, - {0x84B0, 0x2523}, - {0x84B1, 0x2533}, - {0x84B2, 0x252B}, - {0x84B3, 0x253B}, - {0x84B4, 0x254B}, - {0x84B5, 0x2520}, - {0x84B6, 0x252F}, - {0x84B7, 0x2528}, - {0x84B8, 0x2537}, - {0x84B9, 0x253F}, - {0x84BA, 0x251D}, - {0x84BB, 0x2530}, - {0x84BC, 0x2525}, - {0x84BD, 0x2538}, - {0x84BE, 0x2542}, -}; - -#endif diff --git a/subprojects/NitroSDK/libraries/mb/src/mb_parent.c b/subprojects/NitroSDK/libraries/mb/src/mb_parent.c deleted file mode 100644 index ad37ea9009..0000000000 --- a/subprojects/NitroSDK/libraries/mb/src/mb_parent.c +++ /dev/null @@ -1,804 +0,0 @@ -#include "mb_private.h" - -#define MB_SEND_THRESHOLD 2 - -static int any_recv_bitmap = 0; - -static void MBi_CommChangeParentState(u16 child, int state, void * arg); -static void MBi_CommChangeParentStateCallbackOnly(u16 child, int state, void * arg); -static void MBi_CommParentRecvDataPerChild(void * arg, u16 child); -static void MBi_CommParentRecvData(void * arg); -static int MBi_CommParentSendMsg(u8 type, u16 pollbmp); -static int MBi_CommParentSendDLFileInfo(void); -static int MBi_CommParentSendBlock(void); -static int MBi_CommParentSendData(void); -static void MBi_calc_sendblock(u8 file_id); -static u16 MBi_calc_nextsendblock(u16 next_block, u16 next_block_req); - -static inline u16 max(u16 a, u16 b); -static BOOL IsChildAidValid(u16 child_aid); -static void MBi_CommCallParentError(u16 aid, u16 errcode); - -void MB_CommSetParentStateCallback (MBCommPStateCallback callback) { - OSIntrMode enabled; - - SDK_ASSERT(pPwork != 0); - - enabled = OS_DisableInterrupts(); - - pPwork->parent_callback = callback; - - (void)OS_RestoreInterrupts(enabled); -} - -int MB_CommGetParentState (u16 child_aid) { - if (pPwork && IsChildAidValid(child_aid)) { - return pPwork->p_comm_state[child_aid - 1]; - } - return 0; -} - -const MBUserInfo * MB_CommGetChildUser (u16 child_aid) { - OSIntrMode enabled = OS_DisableInterrupts(); - - if (pPwork && IsChildAidValid(child_aid)) { - MI_CpuCopy8(&pPwork->childUser[child_aid - 1], &pPwork->childUserBuf, sizeof(MBUserInfo)); - (void)OS_RestoreInterrupts(enabled); - return &pPwork->childUserBuf; - } - (void)OS_RestoreInterrupts(enabled); - return NULL; -} - -u8 MB_CommGetChildrenNumber (void) { - if (pPwork) { - return pPwork->child_num; - } - return 0; -} - -u16 MB_GetGameEntryBitmap (const MBGameRegistry * game_reg) { - int i; - for (i = 0; i < MB_MAX_FILE; i++) { - if ((pPwork->fileinfo[i].active) && ((u32)pPwork->fileinfo[i].game_reg == (u32)game_reg)) { - return pPwork->fileinfo[i].gameinfo_child_bmp; - } - } - return 0; -} - -BOOL MB_CommIsBootable (u16 child_aid) { - SDK_ASSERT(pPwork != NULL); - - if (pPwork && IsChildAidValid(child_aid)) { - if (pPwork->p_comm_state[child_aid - 1] == MB_COMM_PSTATE_SEND_COMPLETE) { - return TRUE; - } - } - return FALSE; -} - -BOOL MB_CommResponseRequest (u16 child_aid, MBCommResponseRequestType ack) { - u16 req; - int state; - OSIntrMode enabled; - - SDK_ASSERT(pPwork != NULL); - - enabled = OS_DisableInterrupts(); - - switch (ack) { - case MB_COMM_RESPONSE_REQUEST_KICK: - state = MB_COMM_PSTATE_REQUESTED; - req = MB_COMM_USER_REQ_KICK; - break; - case MB_COMM_RESPONSE_REQUEST_ACCEPT: - state = MB_COMM_PSTATE_REQUESTED; - req = MB_COMM_USER_REQ_ACCEPT; - break; - - case MB_COMM_RESPONSE_REQUEST_DOWNLOAD: - state = MB_COMM_PSTATE_WAIT_TO_SEND; - req = MB_COMM_USER_REQ_SEND_START; - break; - - case MB_COMM_RESPONSE_REQUEST_BOOT: - state = MB_COMM_PSTATE_SEND_COMPLETE; - req = MB_COMM_USER_REQ_BOOT; - break; - default: - (void)OS_RestoreInterrupts(enabled); - return FALSE; - } - - if (pPwork && IsChildAidValid(child_aid)) { - if (pPwork->p_comm_state[child_aid - 1] == state) { - pPwork->req2child[child_aid - 1] = req; - (void)OS_RestoreInterrupts(enabled); - return TRUE; - } - } - - (void)OS_RestoreInterrupts(enabled); - - return FALSE; -} - -static void MBi_CommChangeParentState (u16 child, int state, void * arg) { - SDK_ASSERT(pPwork && child >= 0 && child <= WM_NUM_MAX_CHILD); - - if (IsChildAidValid(child)) { - pPwork->p_comm_state[child - 1] = state; - } - - MBi_CommChangeParentStateCallbackOnly(child, state, arg); -} - -static void MBi_CommChangeParentStateCallbackOnly (u16 child, int state, void * arg) { - if (pPwork->parent_callback) { - (*pPwork->parent_callback) (child, (u32)state, arg); - } -} - -void MBi_CommParentCallback (u16 type, void * arg) { - MB_COMM_WMEVENT_OUTPUT(type, arg); - - switch (type) { - case MB_CALLBACK_INIT_COMPLETE: - - MBi_CommChangeParentState(0, MB_COMM_PSTATE_INIT_COMPLETE, arg); - break; - - case MB_CALLBACK_END_COMPLETE: - - break; - - case MB_CALLBACK_CHILD_CONNECTED: - { - WMstartParentCallback * sparg = (WMstartParentCallback *)arg; - - if (sparg->aid == 0) { - break; - } - - if (sparg->aid >= 16) { - OS_TWarning("Connected Illegal AID No. ---> %2d\n", sparg->aid); - break; - } - - MB_DEBUG_OUTPUT("child %d connected to get bootimage!\n", sparg->aid); - - MBi_CommChangeParentState(sparg->aid, MB_COMM_PSTATE_CONNECTED, arg); - } - break; - - case MB_CALLBACK_CHILD_DISCONNECTED: - { - WMstartParentCallback * sparg = (WMstartParentCallback *)arg; - - if (sparg->aid == 0) { - break; - } - - if (sparg->aid >= 16) { - OS_TWarning("Disconnected Illegal AID No. ---> %2d\n", sparg->aid); - break; - } - - MB_DEBUG_OUTPUT("child %d disconnected \n", sparg->aid); - - pPwork->childversion[sparg->aid - 1] = 0; - MI_CpuClear8(&pPwork->childggid[sparg->aid - 1], sizeof(u32)); - MI_CpuClear8(&pPwork->childUser[sparg->aid - 1], sizeof(MBUserInfo)); - - MBi_ClearParentPieceBuffer(sparg->aid); - - pPwork->req2child[sparg->aid - 1] = MB_COMM_USER_REQ_NONE; - - if (pPwork->fileid_of_child[sparg->aid - 1] != -1) { - u8 fileID = (u8)pPwork->fileid_of_child[sparg->aid - 1]; - u16 nowChildFlag = pPwork->fileinfo[fileID].gameinfo_child_bmp; - u16 child = sparg->aid; - - pPwork->fileinfo[fileID].gameinfo_child_bmp &= ~(MB_GAMEINFO_CHILD_FLAG(child)); - pPwork->fileinfo[fileID].gameinfo_changed_bmp |= MB_GAMEINFO_CHILD_FLAG(child); - pPwork->fileid_of_child[child - 1] = -1; - pPwork->fileinfo[fileID].pollbmp &= ~(0x0001 << (child)); - - MB_DEBUG_OUTPUT("Update Member (AID:%2d)\n", child); - } - - if (pPwork->child_entry_bmp & (0x0001 << (sparg->aid))) { - pPwork->child_num--; - pPwork->child_entry_bmp &= ~(0x0001 << (sparg->aid)); - } - - if (pPwork->p_comm_state[sparg->aid - 1] == MB_COMM_PSTATE_BOOT_REQUEST) { - MBi_CommChangeParentState(sparg->aid, MB_COMM_PSTATE_BOOT_STARTABLE, NULL); - } - - MBi_CommChangeParentState(sparg->aid, MB_COMM_PSTATE_DISCONNECTED, arg); - pPwork->p_comm_state[sparg->aid - 1] = MB_COMM_PSTATE_NONE; - } - break; - - case MB_CALLBACK_MP_PARENT_RECV: - MBi_CommParentRecvData(arg); - break; - - case MB_CALLBACK_MP_SEND_ENABLE: - (void)MBi_CommParentSendData(); - break; - - case MB_CALLBACK_BEACON_SENT: - { - u8 i; - - for (i = 0; i < MB_MAX_FILE; i++) { - if (pPwork->fileinfo[i].active && pPwork->fileinfo[i].gameinfo_changed_bmp) { - MB_UpdateGameInfoMember( - &pPwork->fileinfo[i].game_info, - &pPwork->childUser[0], - pPwork->fileinfo[i].gameinfo_child_bmp, - pPwork->fileinfo[i].gameinfo_changed_bmp - ); - - pPwork->fileinfo[i].gameinfo_changed_bmp = 0; - } - } - } - - MB_SendGameInfoBeacon(MBi_GetGgid(), MBi_GetTgid(), MBi_GetAttribute()); - break; - - case MB_CALLBACK_API_ERROR: - - { - u16 apiid, errcode; - - apiid = ((u16 *)arg)[0]; - errcode = ((u16 *)arg)[1]; - - switch (errcode) { - case WM_ERRCODE_INVALID_PARAM: - case WM_ERRCODE_FAILED: - case WM_ERRCODE_WM_DISABLE: - case WM_ERRCODE_NO_DATASET: - case WM_ERRCODE_FIFO_ERROR: - case WM_ERRCODE_TIMEOUT: - MBi_CommCallParentError(0, MB_ERRCODE_FATAL); - break; - case WM_ERRCODE_OPERATING: - case WM_ERRCODE_ILLEGAL_STATE: - case WM_ERRCODE_NO_CHILD: - case WM_ERRCODE_OVER_MAX_ENTRY: - case WM_ERRCODE_NO_ENTRY: - case WM_ERRCODE_INVALID_POLLBITMAP: - case WM_ERRCODE_NO_DATA: - case WM_ERRCODE_SEND_QUEUE_FULL: - case WM_ERRCODE_SEND_FAILED: - default: - MBi_CommCallParentError(0, MB_ERRCODE_WM_FAILURE); - break; - } - } - break; - case MB_CALLBACK_ERROR: - { - WMCallback * pWmcb = (WMCallback *)arg; - switch (pWmcb->apiid) { - case WM_APIID_INITIALIZE: - case WM_APIID_SET_LIFETIME: - case WM_APIID_SET_P_PARAM: - case WM_APIID_SET_BEACON_IND: - case WM_APIID_START_PARENT: - case WM_APIID_START_MP: - case WM_APIID_SET_MP_DATA: - case WM_APIID_START_DCF: - case WM_APIID_SET_DCF_DATA: - case WM_APIID_DISCONNECT: - case WM_APIID_START_KS: - - MBi_CommCallParentError(0, MB_ERRCODE_FATAL); - break; - case WM_APIID_RESET: - case WM_APIID_END: - default: - - MBi_CommCallParentError(0, MB_ERRCODE_WM_FAILURE); - break; - } - } - break; - } - -#if (CALLBACK_WM_STATE == 1) - MBi_CommChangeParentState(0, (u32)(MB_COMM_PSTATE_WM_EVENT | type), arg); -#endif - - if (type == MB_CALLBACK_END_COMPLETE) { - MBCommPStateCallback tmpCb = pPwork->parent_callback; - - MI_CpuClearFast(pPwork, sizeof(MB_CommPWork)); - pPwork = NULL; - if (tmpCb) { - (*tmpCb) (0, MB_COMM_PSTATE_END, NULL); - } - } -} - -static void MBi_CommParentRecvDataPerChild (void * arg, u16 child) { - MBCommChildBlockHeader hd; - int state; - u8 * p_data; - - if (child == 0 || child > WM_NUM_MAX_CHILD) { - return; - } - - p_data = MBi_SetRecvBufferFromChild((u8 *)&((WMMpRecvData *)arg)->cdata[0], &hd, child); - - state = pPwork->p_comm_state[child - 1]; - - MB_DEBUG_OUTPUT("RECV (CHILD:%2d)", child); - MB_COMM_TYPE_OUTPUT(hd.type); - - switch (hd.type) { - case MB_COMM_TYPE_CHILD_FILEREQ: - { - if (state == MB_COMM_PSTATE_CONNECTED) { - MBCommRequestData req_data; - - if (p_data == NULL) { - break; - } - - MI_CpuCopy8(p_data, &req_data, MB_COMM_REQ_DATA_SIZE); - - pPwork->childggid[child - 1] = req_data.ggid; - pPwork->childversion[child - 1] = req_data.version; - MB_DEBUG_OUTPUT("Child [%2d] MB_IPL_VERSION : %04x\n", child, req_data.version); - MI_CpuCopy8(&req_data.userinfo, &pPwork->childUser[child - 1], sizeof(MBUserInfo)); - pPwork->childUser[child - 1].playerNo = child; - - MBi_CommChangeParentState(child, MB_COMM_PSTATE_REQUESTED, &req_data.userinfo); - } - - if (state == MB_COMM_PSTATE_REQUESTED) { - u8 i, entry_num = 0; - u8 fileid = ((MBCommRequestData *)p_data)->fileid; - - if (fileid >= MB_MAX_FILE - || pPwork->fileinfo[fileid].active == 0 - || pPwork->childggid[child - 1] != pPwork->fileinfo[fileid].game_reg->ggid) { - pPwork->req2child[child - 1] = MB_COMM_USER_REQ_KICK; - } else { - for (i = 0; i < WM_NUM_MAX_CHILD + 1; i++) { - if (pPwork->fileinfo[fileid].gameinfo_child_bmp & (0x0001 << i)) { - entry_num++; - } - } - - if (entry_num >= pPwork->fileinfo[fileid].game_reg->maxPlayerNum) { - MB_DEBUG_OUTPUT("Member full (AID:%2d)\n", child); - - pPwork->req2child[child - 1] = MB_COMM_USER_REQ_NONE; - MBi_CommChangeParentState(child, MB_COMM_PSTATE_MEMBER_FULL, NULL); - break; - } - } - - switch (pPwork->req2child[child - 1]) { - case MB_COMM_USER_REQ_ACCEPT: - { - if (0 == (pPwork->child_entry_bmp & (0x0001 << (child)))) { - pPwork->child_num++; - pPwork->child_entry_bmp |= (0x0001 << (child)); - pPwork->fileid_of_child[child - 1] = (s8)fileid; - - pPwork->fileinfo[fileid].gameinfo_child_bmp |= - MB_GAMEINFO_CHILD_FLAG(child); - pPwork->fileinfo[fileid].gameinfo_changed_bmp |= - MB_GAMEINFO_CHILD_FLAG(child); - MB_DEBUG_OUTPUT("Update Member (AID:%2d)\n", child); - pPwork->req2child[child - 1] = MB_COMM_USER_REQ_NONE; - - MBi_CommChangeParentState(child, MB_COMM_PSTATE_REQ_ACCEPTED, NULL); - } - } - break; - - case MB_COMM_USER_REQ_KICK: - MB_DEBUG_OUTPUT("Kick (AID:%2d)\n", child); - pPwork->req2child[child - 1] = MB_COMM_USER_REQ_NONE; - MBi_CommChangeParentState(child, MB_COMM_PSTATE_KICKED, NULL); - break; - } - } - } - break; - - case MB_COMM_TYPE_CHILD_ACCEPT_FILEINFO: - - if (state == MB_COMM_PSTATE_REQ_ACCEPTED) { - MBi_CommChangeParentState(child, MB_COMM_PSTATE_WAIT_TO_SEND, NULL); - } else if (state == MB_COMM_PSTATE_WAIT_TO_SEND) { - if (pPwork->req2child[child - 1] == MB_COMM_USER_REQ_SEND_START) { - u8 fid = (u8)pPwork->fileid_of_child[child - 1]; - pPwork->fileinfo[fid].pollbmp |= (0x0001 << (child)); - pPwork->fileinfo[fid].currentb = 0; - - pPwork->req2child[child - 1] = MB_COMM_USER_REQ_NONE; - MBi_CommChangeParentState(child, MB_COMM_PSTATE_SEND_PROCEED, NULL); - } - } - break; - - case MB_COMM_TYPE_CHILD_CONTINUE: - if (state == MB_COMM_PSTATE_SEND_PROCEED) { - u8 fileid = (u8)pPwork->fileid_of_child[child - 1]; - - if (fileid == (u8) - 1) { - break; - } - - SDK_ASSERT(fileid < MB_MAX_FILE); - SDK_ASSERT(pPwork->fileinfo[fileid].pollbmp); - - pPwork->fileinfo[fileid].nextb = - MBi_calc_nextsendblock(pPwork->fileinfo[fileid].nextb, hd.data.req); - any_recv_bitmap |= (1 << fileid); - } - break; - - case MB_COMM_TYPE_CHILD_STOPREQ: - if (state == MB_COMM_PSTATE_SEND_PROCEED) { - u8 fileid = (u8)pPwork->fileid_of_child[child - 1]; - - if (fileid == (u8) - 1) { - break; - } - - SDK_ASSERT(fileid < MB_MAX_FILE); - - pPwork->fileinfo[fileid].pollbmp &= ~(0x0001 << (child)); - - MBi_CommChangeParentState(child, MB_COMM_PSTATE_SEND_COMPLETE, NULL); - } else if (state == MB_COMM_PSTATE_SEND_COMPLETE) { - if (pPwork->req2child[child - 1] == MB_COMM_USER_REQ_BOOT) { - pPwork->req2child[child - 1] = MB_COMM_USER_REQ_NONE; - MBi_CommChangeParentState(child, MB_COMM_PSTATE_BOOT_REQUEST, NULL); - break; - } - } - break; - - case MB_COMM_TYPE_CHILD_BOOTREQ_ACCEPTED: - if (state == MB_COMM_PSTATE_BOOT_REQUEST) { - break; - } - - break; - - default: - break; - } -} - -static void MBi_CommParentRecvData (void * arg) { - WMmpRecvHeader * mpHeader = (WMmpRecvHeader *)arg; - - u16 i; - WMmpRecvData * datap; - - for (i = 0; i < MB_MAX_FILE; i++) { - if (pPwork->fileinfo[i].active) { - pPwork->fileinfo[i].nextb = 0; - } - } - any_recv_bitmap = 0; - - for (i = 1; i <= WM_NUM_MAX_CHILD; ++i) { - datap = WM_ReadMPData(mpHeader, (u16)i); - - if (datap != NULL) { - if (datap->length == 0xffff) { - } else if (datap->length != 0) { - MBi_CommParentRecvDataPerChild(datap, i); - } - } - } -} - -static int MBi_CommParentSendMsg (u8 type, u16 pollbmp) { - MBCommParentBlockHeader hd; - - hd.type = type; - - (void)MBi_MakeParentSendBuffer(&hd, (u8 *)pPwork->common.sendbuf); - return MBi_BlockHeaderEnd(MB_COMM_PARENT_HEADER_SIZE, pollbmp, pPwork->common.sendbuf); -} - -static int MBi_CommParentSendDLFileInfo (void) { - MBCommParentBlockHeader hd; - u8 * databuf = ((u8 *)pPwork->common.sendbuf) + MB_COMM_PARENT_HEADER_SIZE; - u16 child; - u8 i, fid; - s8 send_candidate_fid = -1; - static s8 prev_fid = -1; - u8 file_req_num[MB_MAX_FILE]; - u16 pollbmp = 0; - - MI_CpuClear8(&file_req_num[0], sizeof(u8) * MB_MAX_FILE); - - for (child = 1; child <= WM_NUM_MAX_CHILD; child++) { - if (pPwork->p_comm_state[child - 1] == MB_COMM_PSTATE_REQ_ACCEPTED) { - ++(file_req_num[pPwork->fileid_of_child[child - 1]]); - } - } - - fid = (u8)prev_fid; - - for (i = 0; i < MB_MAX_FILE; i++) { -#if 1 - fid = (u8)((fid + 1) % MB_MAX_FILE); - - if (pPwork->fileinfo[fid].active && file_req_num[fid] > 0) { - send_candidate_fid = (s8)fid; - break; - } - -#else - if (pPwork->fileinfo[i].active) { - if (file_req_num[i] > 0) { - if (send_candidate_fid == -1 || file_req_num[i] > file_req_num[send_candidate_fid]) { - send_candidate_fid = i; - } - } - } -#endif - } - - if (send_candidate_fid == -1) { - return MB_SENDFUNC_STATE_ERR; - } - - prev_fid = send_candidate_fid; - - for (child = 1; child <= WM_NUM_MAX_CHILD; child++) { - if (pPwork->p_comm_state[child - 1] == MB_COMM_PSTATE_REQ_ACCEPTED - && pPwork->fileid_of_child[child - 1] == send_candidate_fid) { - pollbmp |= (1 << child); - } - } - - MB_DEBUG_OUTPUT("DLinfo No %2d Pollbmp %04x\n", send_candidate_fid, pollbmp); - - hd.type = MB_COMM_TYPE_PARENT_DL_FILEINFO; - hd.fid = send_candidate_fid; - - databuf = MBi_MakeParentSendBuffer(&hd, (u8 *)pPwork->common.sendbuf); - if (databuf) { - MI_CpuCopy8( - &pPwork->fileinfo[send_candidate_fid].dl_fileinfo, - databuf, sizeof(MBDownloadFileInfo) - ); - } - - return MBi_BlockHeaderEnd( - sizeof(MBDownloadFileInfo) + MB_COMM_PARENT_HEADER_SIZE, pollbmp, - pPwork->common.sendbuf - ); -} - -static void MBi_ReloadCache (MBiTaskInfo * p_task) { - MBiCacheInfo * const p_info = (MBiCacheInfo *)p_task->param[0]; - MBiCacheList * const p_list = (MBiCacheList *)p_task->param[1]; - FSFile file[1]; - FSArchive * arc; - arc = FS_FindArchive(p_list->arc_name, (int)p_list->arc_name_len); - if (!arc) { - arc = p_list->arc_pointer; - } - - FS_InitFile(file); - - if (FS_OpenFileDirect( - file, - arc, - p_info->src, p_info->src + p_info->len, (u32) ~0 - )) { - if (FS_ReadFile(file, p_info->ptr, (int)p_info->len) == p_info->len) { - p_info->state = MB_CACHE_STATE_READY; - } - (void)FS_CloseFile(file); - } - - if (p_info->state != MB_CACHE_STATE_READY) { - p_info->src = 0; - p_info->state = MB_CACHE_STATE_READY; - } -} - -static int MBi_CommParentSendBlock (void) { - MBCommParentBlockHeader hd; - u8 * databuf; - u8 i; - MB_BlockInfo bi; - - if (pPwork->file_num == 0) { - return MB_SENDFUNC_STATE_ERR; - } - - for (i = 0; i < MB_MAX_FILE; i++) { - pPwork->cur_fileid = (u8)((pPwork->cur_fileid + 1) % MB_MAX_FILE); - if (pPwork->fileinfo[pPwork->cur_fileid].active - && pPwork->fileinfo[pPwork->cur_fileid].pollbmp) { - MB_DEBUG_OUTPUT("Send File ID:%2d\n", pPwork->cur_fileid); - break; - } - } - if (i == MB_MAX_FILE) { - return MB_SENDFUNC_STATE_ERR; - } - - MBi_calc_sendblock(pPwork->cur_fileid); - - if (!MBi_get_blockinfo( - &bi, - &pPwork->fileinfo[pPwork->cur_fileid].blockinfo_table, - pPwork->fileinfo[pPwork->cur_fileid].currentb, - &pPwork->fileinfo[pPwork->cur_fileid].dl_fileinfo.header - )) { - return MB_SENDFUNC_STATE_ERR; - } - - hd.type = MB_COMM_TYPE_PARENT_DATA; - hd.fid = pPwork->cur_fileid; - hd.seqno = pPwork->fileinfo[pPwork->cur_fileid].currentb; - databuf = MBi_MakeParentSendBuffer(&hd, (u8 *)pPwork->common.sendbuf); - - { - u32 card_addr = (u32)(bi.offset - - pPwork->fileinfo[pPwork->cur_fileid].blockinfo_table. - seg_src_offset[bi.segment_no] + - pPwork->fileinfo[pPwork->cur_fileid].card_mapping[bi.segment_no]); - - MBiCacheList * const pl = pPwork->fileinfo[pPwork->cur_fileid].cache_list; - if (!MBi_ReadFromCache(pl, card_addr, databuf, bi.size)) { - MBiTaskInfo * const p_task = &pPwork->cur_task; - if (!MBi_IsTaskBusy(p_task)) { - if (pl->lifetime) { - --pl->lifetime; - } else { - MBiCacheInfo * pi = pl->list; - MBiCacheInfo * trg = NULL; - int i; - for (i = 0; i < MB_CACHE_INFO_MAX; ++i) { - if (pi[i].state == MB_CACHE_STATE_READY) { - if (!trg || (trg->src > pi[i].src)) { - trg = &pi[i]; - } - } - } - if (!trg) { - OS_TPanic("cache-list is invalid! (all the pages are locked)"); - } - pl->lifetime = 2; - trg->state = MB_CACHE_STATE_BUSY; - trg->src = (card_addr & ~31); - p_task->param[0] = (u32)trg; - p_task->param[1] = (u32)pl; - MBi_SetTask(p_task, MBi_ReloadCache, NULL, 4); - } - } - return MB_SENDFUNC_STATE_ERR; - } - } - - return MBi_BlockHeaderEnd( - (int)(bi.size + MB_COMM_PARENT_HEADER_SIZE), - pPwork->fileinfo[pPwork->cur_fileid].pollbmp, pPwork->common.sendbuf - ); -} - -static int MBi_CommParentSendData (void) { - struct bitmap { - u16 connected; - u16 req; - u16 kick; - u16 boot; - u16 mem_full; - }; - struct bitmap bmp; - u16 child; - int errcode; - - MI_CpuClear16(&bmp, sizeof(struct bitmap)); - - for (child = 1; child <= WM_NUM_MAX_CHILD; child++) { - switch (pPwork->p_comm_state[child - 1]) { - case MB_COMM_PSTATE_CONNECTED: - bmp.connected |= (1 << child); - break; - - case MB_COMM_PSTATE_REQ_ACCEPTED: - bmp.req |= (1 << child); - break; - - case MB_COMM_PSTATE_KICKED: - bmp.kick |= (1 << child); - break; - - case MB_COMM_PSTATE_SEND_PROCEED: - break; - - case MB_COMM_PSTATE_BOOT_REQUEST: - bmp.boot |= (1 << child); - break; - - case MB_COMM_PSTATE_MEMBER_FULL: - bmp.mem_full |= (1 << child); - break; - - default: - break; - } - } - - if (bmp.boot) { - errcode = MBi_CommParentSendMsg(MB_COMM_TYPE_PARENT_BOOTREQ, bmp.boot); - } else if (bmp.connected) { - errcode = MBi_CommParentSendMsg(MB_COMM_TYPE_PARENT_SENDSTART, bmp.connected); - } else if (bmp.mem_full) { - errcode = MBi_CommParentSendMsg(MB_COMM_TYPE_PARENT_MEMBER_FULL, bmp.mem_full); - } else if (bmp.kick) { - errcode = MBi_CommParentSendMsg(MB_COMM_TYPE_PARENT_KICKREQ, bmp.kick); - } else if (bmp.req) { - errcode = MBi_CommParentSendDLFileInfo(); - } else { - errcode = MBi_CommParentSendBlock(); - } - - if (MB_SENDFUNC_STATE_ERR == errcode) { - errcode = MBi_CommParentSendMsg(MB_COMM_TYPE_DUMMY, 0xffff); - } - - return errcode; -} - -static void MBi_calc_sendblock (u8 file_id) { - if ((any_recv_bitmap & (1 << file_id)) == 0) { - return; - } - - if (pPwork->fileinfo[file_id].active && pPwork->fileinfo[file_id].pollbmp) { - if (pPwork->fileinfo[file_id].nextb <= pPwork->fileinfo[file_id].currentb && - pPwork->fileinfo[file_id].currentb <= - pPwork->fileinfo[file_id].nextb + MB_SEND_THRESHOLD) { - pPwork->fileinfo[file_id].currentb++; - } else { - pPwork->fileinfo[file_id].currentb = pPwork->fileinfo[file_id].nextb; - } - MB_DEBUG_OUTPUT("**FILE %2d SendBlock %d\n", file_id, pPwork->fileinfo[file_id].currentb); - } -} - -static u16 MBi_calc_nextsendblock (u16 next_block, u16 next_block_req) { - return max(next_block_req, next_block); -} - -static inline u16 max (u16 a, u16 b) { - return (a > b) ? a : b; -} - -static BOOL IsChildAidValid (u16 child_aid) { - return (child_aid >= 1 && child_aid <= WM_NUM_MAX_CHILD) ? TRUE : FALSE; -} - -static void MBi_CommCallParentError (u16 aid, u16 errcode) { - MBErrorStatus e_stat; - e_stat.errcode = errcode; - - MBi_CommChangeParentStateCallbackOnly(aid, MB_COMM_PSTATE_ERROR, &e_stat); -} diff --git a/subprojects/NitroSDK/libraries/mb/src/mb_task.c b/subprojects/NitroSDK/libraries/mb/src/mb_task.c deleted file mode 100644 index ed8767329f..0000000000 --- a/subprojects/NitroSDK/libraries/mb/src/mb_task.c +++ /dev/null @@ -1,178 +0,0 @@ -#include - -#include "mb_task.h" - -typedef struct { - OSThread th[1]; - MBiTaskInfo * volatile list; - MBiTaskInfo end_task; -} MBiTaskWork; - -static MBiTaskWork * mbi_task_work = NULL; - -static void MBi_TaskThread (void * arg) { - MBiTaskWork * const p = (MBiTaskWork *)arg; - for (;;) { - MBiTaskInfo * trg = NULL; - - { - OSIntrMode bak_cpsr = OS_DisableInterrupts(); - - while (!p->list) { - (void)OS_SetThreadPriority(p->th, OS_THREAD_PRIORITY_MIN); - OS_SleepThread(NULL); - } - trg = p->list; - p->list = p->list->next; - (void)OS_SetThreadPriority(p->th, trg->priority); - (void)OS_RestoreInterrupts(bak_cpsr); - } - - if (trg->task) { - (*trg->task) (trg); - } - - { - OSIntrMode bak_cpsr = OS_DisableInterrupts(); - MB_TASK_FUNC callback = trg->callback; - - const u32 cur_priority = OS_GetThreadPriority(p->th); - u32 new_priority; - if (!p->list) { - new_priority = OS_THREAD_PRIORITY_MIN; - } else if (cur_priority < p->list->priority) { - new_priority = p->list->priority; - } else { - new_priority = cur_priority; - } - if (new_priority != cur_priority) { - (void)OS_SetThreadPriority(p->th, new_priority); - } - trg->next = NULL; - trg->busy = FALSE; - if (callback) { - (*callback) (trg); - } - - if (trg == &p->end_task) { - break; - } - (void)OS_RestoreInterrupts(bak_cpsr); - } - } - OS_TPrintf("task-thread end.\n"); - OS_ExitThread(); - return; -} - -void MBi_InitTaskThread (void * p_work, u32 size) { - OSIntrMode bak_cpsr = OS_DisableInterrupts(); - if (!mbi_task_work) { - MBiTaskWork * const p = (MBiTaskWork *)p_work; - - SDK_ASSERT(size >= MB_TASK_WORK_MIN); - SDK_ASSERT(OS_IsThreadAvailable()); - - mbi_task_work = p; - MBi_InitTaskInfo(&p->end_task); - p->list = NULL; - size = (u32)((size - sizeof(MBiTaskWork)) & ~3); - OS_CreateThread( - p->th, MBi_TaskThread, p, - (u8 *)(p + 1) + size, size, OS_THREAD_PRIORITY_MIN - ); - OS_WakeupThreadDirect(p->th); - } - (void)OS_RestoreInterrupts(bak_cpsr); -} - -BOOL MBi_IsTaskAvailable (void) { - return (mbi_task_work != NULL); -} - -void MBi_InitTaskInfo (MBiTaskInfo * pt) { - SDK_ASSERT(pt != NULL); - MI_CpuClear8(pt, sizeof(*pt)); -} - -BOOL MBi_IsTaskBusy (volatile const MBiTaskInfo * pt) { - return pt->busy != FALSE; -} - -void MBi_SetTask (MBiTaskInfo * pt, MB_TASK_FUNC task, MB_TASK_FUNC callback, u32 priority) { - MBiTaskWork * const p_work = mbi_task_work; - - SDK_ASSERT(pt != NULL); - - if (!MBi_IsTaskAvailable()) { - OS_TWarning("MBi_SetTask() ignored... (task-thread is not available now)"); - return; - } - if (pt->busy) { - OS_TWarning("MBi_SetTask() ignored... (specified structure is busy)"); - return; - } - - if (priority > OS_THREAD_PRIORITY_MAX) { - const u32 cur_priority = OS_GetThreadPriority(p_work->th); - if (priority == MB_TASK_PRIORITY_ABOVE) { - priority = (u32)((cur_priority > OS_THREAD_PRIORITY_MIN) ? - (cur_priority - 1) : OS_THREAD_PRIORITY_MIN); - } else if (priority == MB_TASK_PRIORITY_BELOW) { - priority = (u32)((cur_priority < OS_THREAD_PRIORITY_MAX) ? - (cur_priority + 1) : OS_THREAD_PRIORITY_MAX); - } else if (priority == MB_TASK_PRIORITY_NORMAL) { - priority = cur_priority; - } else { - priority = OS_THREAD_PRIORITY_MAX; - } - } - - { - OSIntrMode bak_cpsr = OS_DisableInterrupts(); - pt->busy = TRUE; - pt->priority = priority; - pt->task = task; - pt->callback = callback; - - if (!p_work->list) { - if (pt == &p_work->end_task) { - mbi_task_work = NULL; - } - - p_work->list = pt; - OS_WakeupThreadDirect(p_work->th); - } else { - MBiTaskInfo * pos = p_work->list; - - if (pt == &p_work->end_task) { - while (pos->next) { - pos = pos->next; - } - pos->next = pt; - - mbi_task_work = NULL; - } else { - if (pos->priority > priority) { - p_work->list = pt; - pt->next = pos; - } else { - while (pos->next && (pos->next->priority <= priority)) { - pos = pos->next; - } - pt->next = pos->next; - pos->next = pt; - } - } - } - (void)OS_RestoreInterrupts(bak_cpsr); - } -} - -void MBi_EndTaskThread (MB_TASK_FUNC callback) { - OSIntrMode bak_cpsr = OS_DisableInterrupts(); - if (MBi_IsTaskAvailable()) { - MBi_SetTask(&mbi_task_work->end_task, NULL, callback, OS_THREAD_PRIORITY_MIN); - } - (void)OS_RestoreInterrupts(bak_cpsr); -} diff --git a/subprojects/NitroSDK/libraries/mb/src/mb_wm_base.c b/subprojects/NitroSDK/libraries/mb/src/mb_wm_base.c deleted file mode 100644 index 23ed136044..0000000000 --- a/subprojects/NitroSDK/libraries/mb/src/mb_wm_base.c +++ /dev/null @@ -1,1298 +0,0 @@ -#include "mb_private.h" - -SDK_COMPILER_ASSERT( - 32 + sizeof(MBiParam) + 32 + sizeof(MB_CommPWork) + 32 + WM_SYSTEM_BUF_SIZE <= - MB_SYSTEM_BUF_SIZE -); -SDK_COMPILER_ASSERT( - 32 + sizeof(MBiParam) + 32 + sizeof(MB_CommCWork) + 32 + WM_SYSTEM_BUF_SIZE <= - MB_CHILD_SYSTEM_BUF_SIZE -); - -#define WL_HEADER_LENGTH_P 48 -#define WM_HEADER_LENGTH 2 -#define WL_HEADER_LENGTH_T 8 -#define WL_HEADER_LENGTH_C 8 - -#define WM_CalcChildSendBufSize(_pInfo_) (u16)(WM_SIZE_MP_CHILD_SEND_BUFFER(((WMGameInfo *)(&(((WMBssDesc *)(_pInfo_))->gameInfo)))->childMaxSize, FALSE)) -#define WM_CalcChildRecvBufSize(_pInfo_) (u16)(WM_SIZE_MP_CHILD_RECEIVE_BUFFER(((WMGameInfo *)(&(((WMBssDesc *)(_pInfo_))->gameInfo)))->parentMaxSize, FALSE)) - -#define WM_CalcParentSendBufSize(_libParam_) (u16)(WM_SIZE_MP_PARENT_SEND_BUFFER(((MBiParam *)(_libParam_))->parentParam.parentMaxSize, FALSE)) -#define WM_CalcParentRecvBufSize(_libParam_) (u16)(WM_SIZE_MP_PARENT_RECEIVE_BUFFER(((MBiParam *)(_libParam_))->parentParam.childMaxSize, WM_NUM_MAX_CHILD, FALSE)) - -#define MB_BEACON_PERIOD_DEFAULT (200) - -#define NO_LIFETIME 0 -#if (NO_LIFETIME == 1) -#define FRAME_LIFE_TIME 0xFFFF -#define CAM_LIFE_TIME 0xFFFF -#define MP_LIFE_TIME 0xFFFF -#else - -#define FRAME_LIFE_TIME 5 -#define CAM_LIFE_TIME 40 -#define MP_LIFE_TIME 40 -#endif - -#define TABLE_NO 0xFFFF - -static u16 mbi_life_table_no = TABLE_NO; -static u16 mbi_life_frame = FRAME_LIFE_TIME; -static u16 mbi_life_cam = CAM_LIFE_TIME; -static u16 mbi_life_mp = MP_LIFE_TIME; -static BOOL mbi_power_save_mode = TRUE; - -static void MBi_ScanLock(u8 * macAddr); -static void MBi_ScanUnlock(void); - -static void MBi_CheckWmErrcode(u16 apiid, int errcode); -static void MBi_ParentCallback(void * arg); - -static MBiParam * p_mbi_param; -static u16 WM_DMA_NO; - -static u8 * wmBuf; - -MB_CommCommonWork * mbc = NULL; - -static WMscanParam scanParam ATTRIBUTE_ALIGN(32); - -static BOOL changeScanChannel (WMscanParam * p) { - u16 channel_bmp, channel, i; - - channel_bmp = WM_GetAllowedChannel(); - - if (channel_bmp == 0) { - OS_TWarning("No Available Scan channel\n"); - return FALSE; - } - - for (i = 0, channel = p->channel; - i < 16; i++, channel = (u16)((channel == 16) ? 1 : channel + 1)) { - if ((channel_bmp & (1 << (channel - 1))) == 0) { - continue; - } - - if (p->channel != channel) { - p->channel = channel; - break; - } - } - - return TRUE; -} - -void MB_SetLifeTime (u16 tableNumber, u16 camLifeTime, u16 frameLifeTime, u16 mpLifeTime) { - mbi_life_table_no = tableNumber; - mbi_life_cam = camLifeTime; - mbi_life_frame = frameLifeTime; - mbi_life_mp = mpLifeTime; -} - -void MB_SetPowerSaveMode (BOOL enable) { - mbi_power_save_mode = enable; -} - -static inline int conv_errcode (int errcode) { - return (errcode == WM_ERRCODE_OPERATING) ? WM_ERRCODE_SUCCESS : errcode; -} - -static BOOL MBi_IsSendEnabled (void) { - return (p_mbi_param->mpStarted == 1) && - (p_mbi_param->mpBusy == 0) && - (p_mbi_param->endReq == 0) && (p_mbi_param->child_bitmap != 0); -} - -static void MBi_OnInitializeDone (void) { - int errcode; - - errcode = WM_SetIndCallback(MBi_ParentCallback); - MBi_CheckWmErrcode(WM_APIID_INDICATION, errcode); - errcode = WM_SetLifeTime( - MBi_ParentCallback, mbi_life_table_no, - mbi_life_cam, mbi_life_frame, mbi_life_mp - ); - MBi_CheckWmErrcode(WM_APIID_SET_LIFETIME, errcode); -} - -static inline void MbWaitForWvr (u32 cycles) { - u32 child_cnt = 0; - u32 i; - - for (i = 0; i < MB_MAX_CHILD; i++) { - if (pPwork->p_comm_state[i] != MB_COMM_PSTATE_NONE) { - if (++child_cnt >= 2) { - break; - } - } - } - - if (child_cnt == 1) { - OS_SpinWait(cycles); - } -} - -static void MBi_EndCommon (void * arg) { - p_mbi_param->mbIsStarted = 0; - mbc->isMbInitialized = 0; - if (p_mbi_param->callback) { - p_mbi_param->callback(MB_CALLBACK_END_COMPLETE, arg); - } -} - -static void MBi_ParentCallback (void * arg) { - int errcode; - WMCallback * buf = (WMCallback *)arg; - - switch (buf->apiid) { - case WM_APIID_INITIALIZE: - { - if (buf->errcode != WM_ERRCODE_SUCCESS) { - p_mbi_param->callback(MB_CALLBACK_ERROR, arg); - return; - } - MBi_OnInitializeDone(); - } - break; - - case WM_APIID_SET_LIFETIME: - { - if (buf->errcode != WM_ERRCODE_SUCCESS) { - p_mbi_param->callback(MB_CALLBACK_ERROR, arg); - return; - } - - errcode = WM_SetParentParameter(MBi_ParentCallback, &p_mbi_param->parentParam); - MBi_CheckWmErrcode(WM_APIID_SET_P_PARAM, errcode); - } - break; - - case WM_APIID_SET_P_PARAM: - { - p_mbi_param->callback(MB_CALLBACK_INIT_COMPLETE, arg); - - errcode = WM_SetBeaconIndication(MBi_ParentCallback, 1); - MBi_CheckWmErrcode(WM_APIID_SET_BEACON_IND, errcode); - } - break; - - case WM_APIID_SET_BEACON_IND: - if (!p_mbi_param->endReq) { - if (buf->errcode != WM_ERRCODE_SUCCESS) { - p_mbi_param->callback(MB_CALLBACK_ERROR, arg); - return; - } - - errcode = WMi_StartParentEx(MBi_ParentCallback, mbi_power_save_mode); - MBi_CheckWmErrcode(WM_APIID_START_PARENT, errcode); - } else { - if (buf->errcode != WM_ERRCODE_SUCCESS) { - p_mbi_param->endReq = 0; - p_mbi_param->callback(MB_CALLBACK_ERROR, arg); - } else { - MBi_EndCommon(arg); - } - } - break; - - case WM_APIID_START_PARENT: - { - WMstartParentCallback * callback = (WMstartParentCallback *)arg; - - if (callback->errcode != WM_ERRCODE_SUCCESS) { - p_mbi_param->callback(MB_CALLBACK_ERROR, arg); - return; - } - - switch (callback->state) { - case WM_STATECODE_PARENT_START: - p_mbi_param->child_bitmap = 0; - p_mbi_param->mpStarted = 0; - break; - case WM_STATECODE_CHILD_CONNECTED: - - if (p_mbi_param->endReq == 1) { - break; - } - - p_mbi_param->child_bitmap |= (0x1 << callback->aid); - p_mbi_param->callback(MB_CALLBACK_CHILD_CONNECTED, arg); - - if ((p_mbi_param->mpStarted == 0) && (!mbc->start_mp_busy)) { - mbc->start_mp_busy = TRUE; - errcode = WM_StartMPEx( - MBi_ParentCallback, (u16 *)p_mbi_param->recvBuf, p_mbi_param->recvBufSize, (u16 *)p_mbi_param->sendBuf, p_mbi_param->sendBufSize, (u16)(p_mbi_param->contSend ? 0 : 1), 0, - FALSE, FALSE, 1, - TRUE - ); - MBi_CheckWmErrcode(WM_APIID_START_MP, errcode); - } else { - if (MBi_IsSendEnabled()) { - p_mbi_param->callback(MB_CALLBACK_MP_SEND_ENABLE, NULL); - } - } - break; - - case WM_STATECODE_DISCONNECTED: - p_mbi_param->child_bitmap &= ~(0x1 << callback->aid); - p_mbi_param->callback(MB_CALLBACK_CHILD_DISCONNECTED, arg); - break; - - case WM_STATECODE_DISCONNECTED_FROM_MYSELF: - - break; - - case WM_STATECODE_BEACON_SENT: - - if (p_mbi_param->endReq == 1) { - break; - } - - p_mbi_param->callback(MB_CALLBACK_BEACON_SENT, arg); - break; - - default: - p_mbi_param->callback(MB_CALLBACK_ERROR, arg); - break; - } - } - break; - - case WM_APIID_START_MP: - { - WMstartMPCallback * callback = (WMstartMPCallback *)arg; - mbc->start_mp_busy = FALSE; - switch (callback->state) { - case WM_STATECODE_MP_START: - - p_mbi_param->mpStarted = 1; - { - if (p_mbi_param->endReq == 0) { - p_mbi_param->callback(MB_CALLBACK_MP_SEND_ENABLE, NULL); - } - } - break; - - case WM_STATECODE_MPEND_IND: - - p_mbi_param->callback(MB_CALLBACK_MP_PARENT_RECV, (void *)(callback->recvBuf)); - break; - - default: - p_mbi_param->callback(MB_CALLBACK_ERROR, arg); - break; - } - break; - } - break; - - case WM_APIID_SET_MP_DATA: - { - if (pPwork->useWvrFlag) { - MbWaitForWvr(13000); - } - p_mbi_param->mpBusy = 0; - if (buf->errcode == WM_ERRCODE_SUCCESS) { - p_mbi_param->callback(MB_CALLBACK_MP_PARENT_SENT, arg); - if (p_mbi_param->endReq == 0) { - p_mbi_param->callback(MB_CALLBACK_MP_SEND_ENABLE, NULL); - } - } else if (buf->errcode == WM_ERRCODE_SEND_QUEUE_FULL) { - p_mbi_param->callback(MB_CALLBACK_SEND_QUEUE_FULL_ERR, arg); - } else { - p_mbi_param->callback(MB_CALLBACK_MP_PARENT_SENT_ERR, arg); - if (p_mbi_param->endReq == 0) { - p_mbi_param->callback(MB_CALLBACK_MP_SEND_ENABLE, NULL); - } - } - } - break; - - case WM_APIID_RESET: - if (!mbc->is_started_ex) { - if (buf->errcode != WM_ERRCODE_SUCCESS) { - p_mbi_param->endReq = 0; - p_mbi_param->callback(MB_CALLBACK_ERROR, arg); - } else { - p_mbi_param->child_bitmap = 0; - p_mbi_param->mpStarted = 0; - errcode = WM_End(MBi_ParentCallback); - MBi_CheckWmErrcode(WM_APIID_END, errcode); - } - } else { - (void)WM_SetPortCallback(WM_PORT_BT, NULL, NULL); - (void)WM_SetIndCallback(NULL); - if (buf->errcode != WM_ERRCODE_SUCCESS) { - p_mbi_param->endReq = 0; - p_mbi_param->callback(MB_CALLBACK_ERROR, arg); - } else { - errcode = WM_SetBeaconIndication(MBi_ParentCallback, 0); - MBi_CheckWmErrcode(WM_APIID_SET_BEACON_IND, errcode); - } - } - break; - case WM_APIID_END: - { - if (buf->errcode != WM_ERRCODE_SUCCESS) { - p_mbi_param->endReq = 0; - p_mbi_param->callback(MB_CALLBACK_ERROR, arg); - } else { - MBi_EndCommon(arg); - } - } - break; - - case WM_APIID_DISCONNECT: - { - WMDisconnectCallback * callback = (WMDisconnectCallback *)arg; - - if (buf->errcode != WM_ERRCODE_SUCCESS) { - return; - } - - p_mbi_param->child_bitmap &= ~(callback->disconnectedBitmap); - } - break; - - case WM_APIID_INDICATION: - { - WMindCallback * cb = (WMindCallback *)arg; - switch (cb->state) { - case WM_STATECODE_BEACON_RECV: - p_mbi_param->callback(MB_CALLBACK_BEACON_RECV, arg); - break; - case WM_STATECODE_DISASSOCIATE: - p_mbi_param->callback(MB_CALLBACK_DISASSOCIATE, arg); - break; - case WM_STATECODE_REASSOCIATE: - p_mbi_param->callback(MB_CALLBACK_REASSOCIATE, arg); - break; - case WM_STATECODE_AUTHENTICATE: - p_mbi_param->callback(MB_CALLBACK_AUTHENTICATE, arg); - break; - - case WM_STATECODE_FIFO_ERROR: - OS_TPanic("FIFO Error\n"); - break; - case WM_STATECODE_INFORMATION: - - break; - } - } - break; - - default: - p_mbi_param->callback(MB_CALLBACK_ERROR, arg); - break; - } -} - -static void MBi_ChildPortCallback (void * arg) { - WMPortRecvCallback * cb = (WMPortRecvCallback *)arg; - - if (cb->errcode != WM_ERRCODE_SUCCESS) { - return; - } - - switch (cb->state) { - case WM_STATECODE_PORT_RECV: - - p_mbi_param->callback(MB_CALLBACK_MP_CHILD_RECV, (void *)(arg)); - break; - case WM_STATECODE_CONNECTED: - - break; - case WM_STATECODE_PORT_INIT: - case WM_STATECODE_DISCONNECTED: - case WM_STATECODE_DISCONNECTED_FROM_MYSELF: - break; - } -} - -static void MBi_ChildCallback (void * arg) { - WMCallback * buf = (WMCallback *)arg; - MBiParam * const p_param = p_mbi_param; - int errcode; - - switch (buf->apiid) { - case WM_APIID_INITIALIZE: - { - if (buf->errcode != WM_ERRCODE_SUCCESS) { - p_param->callback(MB_CALLBACK_ERROR, arg); - return; - } - - p_param->callback(MB_CALLBACK_INIT_COMPLETE, arg); - - errcode = - WM_SetLifeTime( - MBi_ChildCallback, mbi_life_table_no, mbi_life_cam, mbi_life_frame, - mbi_life_mp - ); - MBi_CheckWmErrcode(WM_APIID_SET_LIFETIME, errcode); - } - break; - - case WM_APIID_SET_LIFETIME: - { - if (buf->errcode != WM_ERRCODE_SUCCESS) { - p_param->callback(MB_CALLBACK_ERROR, arg); - return; - } - - scanParam.scanBuf = &p_param->parentInfoBuf; - if (scanParam.channel == 0) { - scanParam.channel = 1; - } - if (scanParam.maxChannelTime == 0) { - scanParam.maxChannelTime = 200; - } - scanParam.bssid[0] = 0xff; - scanParam.bssid[1] = 0xff; - scanParam.bssid[2] = 0xff; - scanParam.bssid[3] = 0xff; - scanParam.bssid[4] = 0xff; - scanParam.bssid[5] = 0xff; - p_param->scanning_flag = TRUE; - p_param->scan_channel_flag = TRUE; - errcode = WM_StartScan(MBi_ChildCallback, &scanParam); - MBi_CheckWmErrcode(WM_APIID_START_SCAN, errcode); - } - break; - - case WM_APIID_START_SCAN: - { - WMstartScanCallback * callback = (WMstartScanCallback *)arg; - - if (callback->errcode != WM_ERRCODE_SUCCESS) { - p_param->callback(MB_CALLBACK_ERROR, arg); - return; - } - - switch (callback->state) { - case WM_STATECODE_SCAN_START: - break; - - case WM_STATECODE_PARENT_FOUND: - - { - WMstartScanCallback * buf = (WMstartScanCallback *)arg; - ParentInfo * p = &p_param->parent_info[0]; - - int i; - for (i = 0; i < p_param->found_parent_count; ++i) { - if (WM_IsBssidEqual(buf->macAddress, p[i].scan_data.macAddress)) { - p[i].scan_data.gameInfoLength = buf->gameInfoLength; - p[i].scan_data.gameInfo = buf->gameInfo; - DC_InvalidateRange( - p_param->parent_info[i].parentInfo, - WM_BSS_DESC_SIZE - ); - MI_DmaCopy16( - WM_DMA_NO, &p_param->parentInfoBuf, - p_param->parent_info[i].parentInfo, WM_BSS_DESC_SIZE - ); - p_param->last_found_parent_no = i; - goto scan_end; - } - } - - if (i < MB_NUM_PARENT_INFORMATIONS) { - p_param->found_parent_count = (u16)(i + 1); - - MI_CpuCopy16(buf, &p[i].scan_data, sizeof(p[i].scan_data)); - DC_InvalidateRange(p_param->parent_info[i].parentInfo, WM_BSS_DESC_SIZE); - MI_DmaCopy16( - WM_DMA_NO, &p_param->parentInfoBuf, - p_param->parent_info[i].parentInfo, WM_BSS_DESC_SIZE - ); - p_param->last_found_parent_no = i; - } - } - scan_end: - p_param->callback(MB_CALLBACK_PARENT_FOUND, arg); - if (!p_param->scanning_flag) { - return; - } - - if (p_param->scan_channel_flag) { - if (FALSE == changeScanChannel(&scanParam)) { - (void)MBi_CommEnd(); - } - } - errcode = WM_StartScan(MBi_ChildCallback, &scanParam); - MBi_CheckWmErrcode(WM_APIID_START_SCAN, errcode); - break; - - case WM_STATECODE_PARENT_NOT_FOUND: - p_param->callback(MB_CALLBACK_PARENT_NOT_FOUND, arg); - if (!p_param->scanning_flag) { - return; - } - - if (p_param->scan_channel_flag) { - if (FALSE == changeScanChannel(&scanParam)) { - (void)MBi_CommEnd(); - } - } - errcode = WM_StartScan(MBi_ChildCallback, &scanParam); - MBi_CheckWmErrcode(WM_APIID_START_SCAN, errcode); - break; - - default: - p_param->callback(MB_CALLBACK_ERROR, arg); - break; - } - } - break; - - case WM_APIID_END_SCAN: - { - if (buf->errcode != WM_ERRCODE_SUCCESS) { - p_param->callback(MB_CALLBACK_ERROR, arg); - return; - } - - errcode = WM_StartConnect(MBi_ChildCallback, p_param->pInfo, NULL); - MBi_CheckWmErrcode(WM_APIID_START_CONNECT, errcode); - } - break; - - case WM_APIID_START_CONNECT: - { - WMstartConnectCallback * callback = (WMstartConnectCallback *)arg; - - if (callback->errcode != WM_ERRCODE_SUCCESS) { - p_param->found_parent_count = 0; - - p_param->callback(MB_CALLBACK_CONNECT_FAILED, arg); - return; - } - - switch (callback->state) { - case WM_STATECODE_CONNECT_START: - p_param->child_bitmap = 0; - p_param->mpStarted = 1; - break; - - case WM_STATECODE_CONNECTED: - p_param->my_aid = (u16)callback->aid; - p_param->callback(MB_CALLBACK_CONNECTED_TO_PARENT, arg); - p_param->child_bitmap = 1; - - errcode = WM_SetPortCallback(WM_PORT_BT, MBi_ChildPortCallback, NULL); - - if (errcode != WM_ERRCODE_SUCCESS) { - break; - } - - errcode = WM_StartMPEx( - MBi_ChildCallback, (u16 *)p_param->recvBuf, p_param->recvBufSize, (u16 *)p_param->sendBuf, p_param->sendBufSize, (u16)(p_param->contSend ? 0 : 1), 0, - FALSE, FALSE, 1, - TRUE - ); - MBi_CheckWmErrcode(WM_APIID_START_MP, errcode); - break; - - case WM_STATECODE_DISCONNECTED: - p_param->callback(MB_CALLBACK_DISCONNECTED_FROM_PARENT, arg); - p_param->child_bitmap = 0; - p_param->mpStarted = 0; - break; - - case WM_STATECODE_DISCONNECTED_FROM_MYSELF: - - break; - - default: - p_param->callback(MB_CALLBACK_ERROR, arg); - break; - } - } - break; - - case WM_APIID_START_MP: - { - WMstartMPCallback * callback = (WMstartMPCallback *)arg; - - switch (callback->state) { - case WM_STATECODE_MP_START: - p_param->mpStarted = 1; - { - if (MBi_IsSendEnabled()) { - p_param->callback(MB_CALLBACK_MP_SEND_ENABLE, NULL); - } - } - break; - - case WM_STATECODE_MP_IND: - if (callback->errcode == WM_ERRCODE_INVALID_POLLBITMAP) { - } else { - } - break; - - case WM_STATECODE_MPACK_IND: - { - } - break; - - default: - p_param->callback(MB_CALLBACK_ERROR, arg); - break; - } - } - break; - - case WM_APIID_SET_MP_DATA: - { - p_param->mpBusy = 0; - if (buf->errcode == WM_ERRCODE_SUCCESS) { - p_param->callback(MB_CALLBACK_MP_CHILD_SENT, arg); - } else if (buf->errcode == WM_ERRCODE_TIMEOUT) { - p_param->callback(MB_CALLBACK_MP_CHILD_SENT_TIMEOUT, arg); - } else { - p_param->callback(MB_CALLBACK_MP_CHILD_SENT_ERR, arg); - } - - if (p_mbi_param->endReq == 0) { - p_param->callback(MB_CALLBACK_MP_SEND_ENABLE, NULL); - } - } - break; - - case WM_APIID_RESET: - { - if (buf->errcode != WM_ERRCODE_SUCCESS) { - p_param->endReq = 0; - p_param->callback(MB_CALLBACK_ERROR, arg); - return; - } - p_mbi_param->child_bitmap = 0; - p_mbi_param->mpStarted = 0; - - errcode = WM_End(MBi_ChildCallback); - MBi_CheckWmErrcode(WM_APIID_END, errcode); - } - break; - - case WM_APIID_END: - { - if (buf->errcode != WM_ERRCODE_SUCCESS) { - p_param->endReq = 0; - p_param->callback(MB_CALLBACK_ERROR, arg); - return; - } - MBi_EndCommon(arg); - } - break; - - case WM_APIID_START_KS: - { - if (MBi_IsSendEnabled()) { - p_param->callback(MB_CALLBACK_MP_SEND_ENABLE, NULL); - } - } - break; - - case WM_APIID_INDICATION: - { - WMindCallback * cb = (WMindCallback *)arg; - switch (cb->state) { - case WM_STATECODE_FIFO_ERROR: - OS_TPanic("FIFO Error\n"); - break; - case WM_STATECODE_INFORMATION: - - break; - } - } - break; - default: - p_param->callback(MB_CALLBACK_ERROR, arg); - break; - } -} - -static u32 MBi_GetBeaconPeriodDispersion (void) { - u8 mac[6]; - u32 ret; - s32 i; - - OS_GetMacAddress(mac); - for (i = 0, ret = 0; i < 6; i++) { - ret += mac[i]; - } - ret += OS_GetVBlankCount(); - ret *= 7; - return (ret % 20); -} - -int MB_Init (void * work, const MBUserInfo * user, u32 ggid, u32 tgid, u32 dma) { - SDK_ASSERT(user != NULL); - SDK_ASSERT(work != NULL); - SDK_ASSERT((dma < 4)); - SDK_ASSERT(user->nameLength <= MB_USER_NAME_LENGTH); - - if (mbc && mbc->isMbInitialized) { - return MB_ERRCODE_INVALID_STATE; - } else { - MBiParam * const p_parm = (MBiParam *)((((u32)work) + 0x1F) & ~0x1F); - MB_CommCommonWork * const p_com = - (MB_CommCommonWork *)((((u32)p_parm) + sizeof(*p_parm) + 0x1F) & ~0x1F); - OSIntrMode enabled; - - if (tgid == MB_TGID_AUTO) { - tgid = WM_GetNextTgid(); - } - - enabled = OS_DisableInterrupts(); - - mbi_life_table_no = TABLE_NO; - mbi_life_frame = FRAME_LIFE_TIME; - mbi_life_cam = CAM_LIFE_TIME; - mbi_life_mp = MP_LIFE_TIME; - mbi_power_save_mode = TRUE; - - WM_DMA_NO = (u16)dma; - p_mbi_param = p_parm; - mbc = p_com; - MI_CpuClear32(p_parm, sizeof(*p_parm)); - MI_CpuClear16(p_com, sizeof(*p_com)); - - { - int i; - static const u16 * game = L"multiboot"; - u16 * c; - c = (u16 *)p_parm->uname; - for (i = 0; i < user->nameLength; ++i) { - *c++ = user->name[i]; - } - c = (u16 *)p_parm->gname; - for (i = 0; i < WM_SIZE_GAMENAME; ++i) { - if (*game == 0) { - break; - } - *c++ = *game++; - } - MI_CpuCopy8(user, &p_com->user, sizeof(MBUserInfo)); - if (user->nameLength < MB_USER_NAME_LENGTH) { - p_com->user.name[user->nameLength] = 0; - } - } - - { - p_parm->p_sendlen = MB_COMM_P_SENDLEN_DEFAULT; - p_parm->p_recvlen = MB_COMM_P_RECVLEN_DEFAULT; - - p_parm->sendBufSize = 0; - p_parm->recvBufSize = 0; - - p_parm->contSend = 1; - - p_parm->recvBuf = (WMmpRecvBuf *)p_com->recvbuf; - - { - WMParentParam * const p_parent = &p_parm->parentParam; - - p_parent->entryFlag = 0; - p_parent->multiBootFlag = 0; - p_parent->CS_Flag = 1; - p_parent->KS_Flag = 0; - - p_parent->ggid = ggid; - p_parent->tgid = (u16)tgid; - p_parent->beaconPeriod = - (u16)(MB_BEACON_PERIOD_DEFAULT + MBi_GetBeaconPeriodDispersion()); - p_parent->maxEntry = 15; - } - } - - p_parm->mpBusy = 0; - p_parm->mbIsStarted = 0; - p_com->isMbInitialized = 1; - - p_com->start_mp_busy = FALSE; - - (void)OS_RestoreInterrupts(enabled); - } - - return MB_ERRCODE_SUCCESS; -} - -#define MP_USEC_TIME_LIMIT (5600) - -static BOOL MBi_IsCommSizeValid (u16 sendSize, u16 recvSize, u16 entry_num) { - int usec; - - SDK_ASSERT(entry_num > 0 && entry_num <= 15); - - if (sendSize > MB_COMM_P_SENDLEN_MAX || sendSize < MB_COMM_P_SENDLEN_MIN) { - OS_TWarning( - "MB Parent send buffer size is out of the range.[%3d - %3d Bytes]\n", - MB_COMM_P_SENDLEN_MIN, MB_COMM_P_SENDLEN_MAX - ); - return FALSE; - } - - if (recvSize > MB_COMM_P_RECVLEN_MAX || recvSize < MB_COMM_P_RECVLEN_MIN) { - OS_TWarning - ( - "MB Parent receive buffer size per child is out of the range.[%3d - %3d Bytes]\n", - MB_COMM_P_RECVLEN_MIN, MB_COMM_P_RECVLEN_MAX - ); - return FALSE; - } - - usec = 330 + 4 * (sendSize + 38) + entry_num * (112 + 4 * (recvSize + 32)); - - if (usec >= MP_USEC_TIME_LIMIT) { - OS_TWarning( - "These send receive sizes require lower than %4dusec\n" - "it exceeds %4d usec\n", MP_USEC_TIME_LIMIT, usec - ); - return FALSE; - } - - return TRUE; -} - -BOOL MB_SetParentCommParam (u16 sendSize, u16 maxChildren) { - OSIntrMode enabled = OS_DisableInterrupts(); - - if (p_mbi_param->mbIsStarted) { - OS_TWarning("MB has Already started\n"); - - (void)OS_RestoreInterrupts(enabled); - return FALSE; - } - - if (FALSE == MBi_IsCommSizeValid(sendSize, MB_COMM_P_RECVLEN_DEFAULT, maxChildren)) { - OS_TWarning("MP data sizes have not changed\n"); - - (void)OS_RestoreInterrupts(enabled); - return FALSE; - } - - p_mbi_param->parentParam.maxEntry = maxChildren; - - p_mbi_param->p_sendlen = sendSize; - p_mbi_param->p_recvlen = MB_COMM_P_RECVLEN_DEFAULT; - - (void)OS_RestoreInterrupts(enabled); - - return TRUE; -} - -BOOL MB_SetParentCommSize (u16 sendSize) { - OSIntrMode enabled = OS_DisableInterrupts(); - BOOL ret; - - ret = MB_SetParentCommParam(sendSize, p_mbi_param->parentParam.maxEntry); - - (void)OS_RestoreInterrupts(enabled); - - return ret; -} - -u16 MB_GetTgid (void) { - return p_mbi_param->parentParam.tgid; -} - -static int MBi_StartCommon (void) { - int errcode; - - p_mbi_param->mpStarted = 0; - p_mbi_param->child_bitmap = 0; - p_mbi_param->endReq = 0; - p_mbi_param->currentTgid = 0; - MBi_SetMaxScanTime(MB_SCAN_TIME_NORMAL); - - if (!mbc->is_started_ex) { - do{ - errcode = WM_Initialize(wmBuf, p_mbi_param->callback_ptr, WM_DMA_NO); - }while (errcode == WM_ERRCODE_WM_DISABLE); - if (errcode != WM_ERRCODE_OPERATING) { - OS_TWarning("WM_Initialize failed!\n"); - return MB_ERRCODE_WM_FAILURE; - } else { - (void)WM_SetIndCallback(p_mbi_param->callback_ptr); - p_mbi_param->mbIsStarted = 1; - return MB_ERRCODE_SUCCESS; - } - } else { - (void)WM_SetIndCallback(p_mbi_param->callback_ptr); - p_mbi_param->mbIsStarted = 1; - MBi_OnInitializeDone(); - return MB_ERRCODE_SUCCESS; - } -} - -static int MBi_StartParentCore (int channel) { - int i, ret; - MBCommPStateCallback cb_tmp; - OSIntrMode enabled; - - enabled = OS_DisableInterrupts(); - - p_mbi_param->parentParam.channel = (u16)channel; - wmBuf = (u8 *)((((u32)mbc) + sizeof(MB_CommPWork) + 31) & ~31); - - cb_tmp = pPwork->parent_callback; - - MI_CpuClear16( - (void *)((u32)pPwork + sizeof(MB_CommCommonWork)), - sizeof(MB_CommPWork) - sizeof(MB_CommCommonWork) - ); - MB_CommSetParentStateCallback(cb_tmp); - - mbc->block_size_max = MB_COMM_CALC_BLOCK_SIZE(p_mbi_param->p_sendlen); - - MBi_SetChildMPMaxSize(p_mbi_param->p_recvlen); - MBi_SetParentPieceBuffer(&pPwork->req_data_buf); - - for (i = 0; i < MB_MAX_CHILD; i++) { - pPwork->p_comm_state[i] = MB_COMM_PSTATE_NONE; - pPwork->fileid_of_child[i] = -1; - } - pPwork->file_num = 0; - - MI_CpuClear16(&pPwork->fileinfo[0], sizeof(pPwork->fileinfo)); - MI_CpuClear8(&pPwork->req2child[0], sizeof(pPwork->req2child)); - - p_mbi_param->mode = MB_MODE_PARENT; - p_mbi_param->callback = MBi_CommParentCallback; - p_mbi_param->callback_ptr = MBi_ParentCallback; - - p_mbi_param->parentParam.parentMaxSize = p_mbi_param->p_sendlen; - p_mbi_param->sendBufSize = WM_CalcParentSendBufSize(p_mbi_param); - - p_mbi_param->parentParam.childMaxSize = p_mbi_param->p_recvlen; - p_mbi_param->recvBufSize = WM_CalcParentRecvBufSize(p_mbi_param); - - OS_TPrintf("Parent sendSize : %4d\n", p_mbi_param->parentParam.parentMaxSize); - OS_TPrintf("Parent recvSize : %4d\n", p_mbi_param->parentParam.childMaxSize); - OS_TPrintf("Parent sendBufSize : %4d\n", p_mbi_param->sendBufSize); - OS_TPrintf("Parent recvBufSize : %4d\n", p_mbi_param->recvBufSize); - - MB_InitSendGameInfoStatus(); - - ret = MBi_StartCommon(); - - (void)OS_RestoreInterrupts(enabled); - - pPwork->useWvrFlag = PXI_IsCallbackReady(PXI_FIFO_TAG_WVR, PXI_PROC_ARM7); - - return ret; -} - -int MB_StartParent (int channel) { - mbc->is_started_ex = FALSE; - return MBi_StartParentCore(channel); -} - -int MB_StartParentFromIdle (int channel) { - mbc->is_started_ex = TRUE; - return MBi_StartParentCore(channel); -} - -int MB_StartChild (void) { - int ret; - MBCommCStateCallbackFunc cb_tmp; - OSIntrMode enabled; - - enabled = OS_DisableInterrupts(); - - mbc->is_started_ex = FALSE; - - wmBuf = (u8 *)((((u32)mbc) + sizeof(MB_CommCWork) + 31) & ~31); - - cb_tmp = pCwork->child_callback; - - MI_CpuClear16( - (void *)((u32)pCwork + sizeof(MB_CommCommonWork)), - sizeof(MB_CommCWork) - sizeof(MB_CommCommonWork) - ); - MB_CommSetChildStateCallback(cb_tmp); - - pCwork->c_comm_state = MB_COMM_CSTATE_NONE; - - p_mbi_param->mode = MB_MODE_CHILD; - p_mbi_param->callback = MBi_CommChildCallback; - p_mbi_param->callback_ptr = MBi_ChildCallback; - - p_mbi_param->scanning_flag = FALSE; - p_mbi_param->scan_channel_flag = TRUE; - p_mbi_param->last_found_parent_no = -1; - - MBi_SetBeaconRecvStatusBufferDefault(); - MBi_SetScanLockFunc(MBi_ScanLock, MBi_ScanUnlock); - MB_InitRecvGameInfoStatus(); - - ret = MBi_StartCommon(); - - (void)OS_RestoreInterrupts(enabled); - - return ret; -} - -static int MBi_CallReset (void) { - int errcode; - errcode = WM_Reset(p_mbi_param->callback_ptr); - MBi_CheckWmErrcode(WM_APIID_RESET, errcode); - return conv_errcode(errcode); -} - -static void MBi_OnReset (MBiTaskInfo * p_task) { - (void)p_task; - (void)MBi_CallReset(); -} - -int MBi_CommEnd (void) { - int ret = WM_ERRCODE_FAILED; - OSIntrMode enabled = OS_DisableInterrupts(); - - if (!p_mbi_param->mbIsStarted) { - MBi_EndCommon(NULL); - } else if (p_mbi_param->endReq == 0) { - p_mbi_param->scanning_flag = FALSE; - p_mbi_param->endReq = 1; - - if (MBi_IsTaskAvailable()) { - MBi_EndTaskThread(MBi_OnReset); - ret = WM_ERRCODE_SUCCESS; - } else { - ret = MBi_CallReset(); - } - } - - (void)OS_RestoreInterrupts(enabled); - - return ret; -} - -void MB_End (void) { - OSIntrMode enabled = OS_DisableInterrupts(); - - if (mbc->is_started_ex) { - OS_TPanic("MB_End called after MB_StartParentFromIdle! (please call MB_EndToIdle)"); - } - - (void)MBi_CommEnd(); - - (void)OS_RestoreInterrupts(enabled); -} - -void MB_EndToIdle (void) { - OSIntrMode enabled = OS_DisableInterrupts(); - - if (!mbc->is_started_ex) { - OS_TPanic("MB_EndToIdle called after MB_StartParent! (please call MB_End)"); - } - - (void)MBi_CommEnd(); - - (void)OS_RestoreInterrupts(enabled); -} - -void MB_DisconnectChild (u16 aid) { - SDK_NULL_ASSERT(pPwork); - SDK_ASSERT(p_mbi_param->endReq != 1); - - if (WM_Disconnect(MBi_ParentCallback, aid) != WM_ERRCODE_OPERATING) { - OS_TWarning("MB_DisconnectChild failed disconnect child %d\n", aid); - } - - if (aid == 0 || aid >= 16) { - OS_TWarning("Disconnected Illegal AID No. ---> %2d\n", aid); - return; - } - - pPwork->childversion[aid - 1] = 0; - MI_CpuClear8(&pPwork->childggid[aid - 1], sizeof(u32)); - MI_CpuClear8(&pPwork->childUser[aid - 1], sizeof(MBUserInfo)); - - MBi_ClearParentPieceBuffer(aid); - - pPwork->req2child[aid - 1] = MB_COMM_USER_REQ_NONE; - - if (pPwork->fileid_of_child[aid - 1] != -1) { - u8 fileID = (u8)pPwork->fileid_of_child[aid - 1]; - u16 nowChildFlag = pPwork->fileinfo[fileID].gameinfo_child_bmp; - u16 child = aid; - - pPwork->fileinfo[fileID].gameinfo_child_bmp &= ~(MB_GAMEINFO_CHILD_FLAG(child)); - pPwork->fileinfo[fileID].gameinfo_changed_bmp |= MB_GAMEINFO_CHILD_FLAG(child); - pPwork->fileid_of_child[child - 1] = -1; - pPwork->fileinfo[fileID].pollbmp &= ~(0x0001 << child); - - MB_DEBUG_OUTPUT("Update Member (AID:%2d)\n", child); - } - - if (pPwork->child_entry_bmp & (0x0001 << aid)) { - pPwork->child_num--; - pPwork->child_entry_bmp &= ~(0x0001 << aid); - } - pPwork->p_comm_state[aid - 1] = MB_COMM_PSTATE_NONE; -} - -int MBi_GetLastFountParent (void) { - return p_mbi_param->last_found_parent_no; -} - -WMBssDesc * MBi_GetParentBssDesc (int id) { - return p_mbi_param->parent_info[id].parentInfo; -} - -static void MBi_ScanLock (u8 * macAddr) { - scanParam.maxChannelTime = MB_SCAN_TIME_LOCKING; - p_mbi_param->scan_channel_flag = FALSE; - WM_CopyBssid(macAddr, scanParam.bssid); -} - -static void MBi_ScanUnlock (void) { - static const u8 bss_fill[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; - - scanParam.maxChannelTime = MB_SCAN_TIME_NORMAL; - p_mbi_param->scan_channel_flag = TRUE; - WM_CopyBssid(bss_fill, scanParam.bssid); -} - -void MBi_SetMaxScanTime (u16 time) { - scanParam.maxChannelTime = time; -} - -static int MBi_SetMPData (WMCallbackFunc callback, const u16 * sendData, u16 sendDataSize, u16 tmptt, u16 pollbmp) { -#pragma unused( tmptt ) - int errcode; - errcode = - WM_SetMPDataToPort(callback, sendData, sendDataSize, pollbmp, WM_PORT_BT, WM_PRIORITY_LOW); - MBi_CheckWmErrcode(WM_APIID_SET_MP_DATA, errcode); - return errcode; -} - -int MBi_SendMP (const void * buf, int len, int pollbmp) { - int errcode; - - u16 size = (u16)len; - u16 pollbitmap = (u16)pollbmp; - - if ((p_mbi_param->mpStarted == 0) || (p_mbi_param->endReq == 1)) { - return WM_ERRCODE_FAILED; - } - - switch (p_mbi_param->mode) { - case MB_MODE_PARENT: - errcode = MBi_SetMPData( - p_mbi_param->callback_ptr, (u16 *)buf, size, - (u16)((!p_mbi_param->contSend) ? 1000 : 0), pollbitmap - ); - - if (errcode == WM_ERRCODE_OPERATING) { - p_mbi_param->mpBusy = 1; - } - - return conv_errcode(errcode); - - case MB_MODE_CHILD: - errcode = MBi_SetMPData(MBi_ChildCallback, (u16 *)buf, size, 0, pollbitmap); - - if (errcode == WM_ERRCODE_OPERATING) { - p_mbi_param->mpBusy = 1; - } - - return conv_errcode(errcode); - - default: - return WM_ERRCODE_FAILED; - } -} - -int MBi_GetSendBufSize (void) { - return (int)p_mbi_param->sendBufSize; -} - -int MBi_GetRecvBufSize (void) { - return (int)p_mbi_param->recvBufSize; -} - -int MBi_CommConnectToParent (const WMBssDesc * bssDescp) { - WMgameInfo * gameInfo; - int errcode; - SDK_ASSERT(bssDescp != 0); - - gameInfo = (WMgameInfo *)(&(bssDescp->gameInfo)); - p_mbi_param->p_sendlen = gameInfo->parentMaxSize; - p_mbi_param->p_recvlen = gameInfo->childMaxSize; - - mbc->block_size_max = MB_COMM_CALC_BLOCK_SIZE(p_mbi_param->p_sendlen); - - MBi_SetChildMPMaxSize(p_mbi_param->p_recvlen); - - OS_TPrintf("\trecv size : %d\n", p_mbi_param->p_sendlen); - OS_TPrintf("\tsend size : %d\n", p_mbi_param->p_recvlen); - OS_TPrintf("\tblock size: %d\n", mbc->block_size_max); - - p_mbi_param->recvBufSize = (u16)WM_CalcChildRecvBufSize(bssDescp); - p_mbi_param->sendBufSize = (u16)WM_CalcChildSendBufSize(bssDescp); - p_mbi_param->pInfo = bssDescp; - p_mbi_param->currentTgid = ((WMGameInfo *)&(bssDescp->gameInfo))->tgid; - p_mbi_param->scanning_flag = FALSE; - - errcode = WM_EndScan(p_mbi_param->callback_ptr); - MBi_CheckWmErrcode(WM_APIID_END_SCAN, errcode); - return conv_errcode(errcode); -} - -u32 MBi_GetGgid (void) { - return p_mbi_param->parentParam.ggid; -} - -u16 MBi_GetTgid (void) { - return (p_mbi_param->parentParam.tgid); -} - -u8 MBi_GetAttribute (void) { - return ((u8)(((p_mbi_param->parentParam.entryFlag) ? WM_ATTR_FLAG_ENTRY : 0) | - ((p_mbi_param->parentParam.multiBootFlag) ? WM_ATTR_FLAG_MB : 0) | - ((p_mbi_param->parentParam.KS_Flag) ? WM_ATTR_FLAG_KS : 0) | - ((p_mbi_param->parentParam.CS_Flag) ? WM_ATTR_FLAG_CS : 0) - )); -} - -int MBi_RestartScan (void) { - int errcode; - - p_mbi_param->scanning_flag = TRUE; - - if (p_mbi_param->scan_channel_flag) { - if (FALSE == changeScanChannel(&scanParam)) { - (void)MBi_CommEnd(); - } - } - - errcode = WM_StartScan(MBi_ChildCallback, &scanParam); - MBi_CheckWmErrcode(WM_APIID_START_SCAN, errcode); - return conv_errcode(errcode); -} - -int MBi_GetScanChannel (void) { - return scanParam.channel; -} - -u16 MBi_GetAid (void) { - return p_mbi_param->my_aid; -} - -BOOL MBi_IsStarted (void) { - return (p_mbi_param->mbIsStarted == 1) ? TRUE : FALSE; -} - -static void MBi_CheckWmErrcode (u16 apiid, int errcode) { - u16 arg[2]; - - if (errcode != WM_ERRCODE_OPERATING && errcode != WM_ERRCODE_SUCCESS) { - arg[0] = apiid; - arg[1] = (u16)errcode; - p_mbi_param->callback(MB_CALLBACK_API_ERROR, arg); - } -} diff --git a/subprojects/NitroSDK/libraries/mb/src/meson.build b/subprojects/NitroSDK/libraries/mb/src/meson.build deleted file mode 100644 index 8b13789179..0000000000 --- a/subprojects/NitroSDK/libraries/mb/src/meson.build +++ /dev/null @@ -1 +0,0 @@ - diff --git a/subprojects/NitroSDK/libraries/meson.build b/subprojects/NitroSDK/libraries/meson.build deleted file mode 100644 index ae032b3ba0..0000000000 --- a/subprojects/NitroSDK/libraries/meson.build +++ /dev/null @@ -1,19 +0,0 @@ -subdir('card') -subdir('cp') -subdir('ctrdg') -subdir('dgt') -subdir('fs') -subdir('fx') -subdir('gx') -subdir('init') -subdir('math') -subdir('mb') -subdir('mi') -subdir('os') -subdir('pxi') -subdir('rtc') -subdir('snd') -subdir('spi') -subdir('std') -subdir('wm') -subdir('wvr') diff --git a/subprojects/NitroSDK/libraries/mi/meson.build b/subprojects/NitroSDK/libraries/mi/meson.build deleted file mode 100644 index 36de22f0d0..0000000000 --- a/subprojects/NitroSDK/libraries/mi/meson.build +++ /dev/null @@ -1,23 +0,0 @@ -libmi_srcs = files( - 'src/mi_wram.c', - 'src/mi_dma.c', - 'src/mi_dma_hblank.c', - 'src/mi_dma_gxcommand.c', - 'src/mi_memory.c', - 'src/mi_swap.c', - 'src/mi_uncompress.c', - 'src/mi_dma_card.c', - 'src/mi_init.c' -) - -libmi_internal_includes = include_directories('src/include') - -libmi = static_library('mi', - sources: [libmi_srcs, fx_const_h], - c_args: [c_args, sdk_args], - include_directories: [public_includes, libmi_internal_includes], - c_pch: nitro_pch, - pic: false -) - -nitrosdk_libs += libmi diff --git a/subprojects/NitroSDK/libraries/mi/src/include/mi_dma.h b/subprojects/NitroSDK/libraries/mi/src/include/mi_dma.h deleted file mode 100644 index 21eb649c06..0000000000 --- a/subprojects/NitroSDK/libraries/mi/src/include/mi_dma.h +++ /dev/null @@ -1,182 +0,0 @@ -#ifndef NITRO_COMMON_MI_DMA_H_ -#define NITRO_COMMON_MI_DMA_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#ifdef SDK_ARM9 -# ifdef SDK_TS -# define MIi_DMA_CLEAR_DATA_BUF REG_DMA0_CLR_DATA_ADDR -# else -# define MIi_DMA_CLEAR_DATA_BUF HW_DMA_CLEAR_DATA_BUF -# endif -#else -# define MIi_DMA_CLEAR_DATA_BUF HW_PRV_WRAM_DMA_CLEAR_DATA_BUF -#endif - -typedef union { - u32 b32; - u16 b16; -} MIiDmaClearSrc; - -#ifdef SDK_ARM9 - -void MIi_DmaSetParams(u32 dmaNo, u32 src, u32 dest, u32 ctrl); -void MIi_DmaSetParams_wait(u32 dmaNo, u32 src, u32 dest, u32 ctrl); -void MIi_DmaSetParams_noInt(u32 dmaNo, u32 src, u32 dest, u32 ctrl); -void MIi_DmaSetParams_wait_noInt(u32 dmaNo, u32 src, u32 dest, u32 ctrl); - -#else -static inline void MIi_DmaSetParams (u32 dmaNo, u32 src, u32 dest, u32 ctrl) { - OSIntrMode enabled = OS_DisableInterrupts(); - vu32 * p = (vu32 *)((u32)REG_DMA0SAD_ADDR + dmaNo * 12); - *p = (vu32)src; - *(p + 1) = (vu32)dest; - *(p + 2) = (vu32)ctrl; - (void)OS_RestoreInterrupts(enabled); -} - -static inline void MIi_DmaSetParams_wait (u32 dmaNo, u32 src, u32 dest, u32 ctrl) { - OSIntrMode enabled = OS_DisableInterrupts(); - vu32 * p = (vu32 *)((u32)REG_DMA0SAD_ADDR + dmaNo * 12); - *p = (vu32)src; - *(p + 1) = (vu32)dest; - *(p + 2) = (vu32)ctrl; - - { - u32 dummy = reg_MI_DMA0SAD; - } - - (void)OS_RestoreInterrupts(enabled); -} - -static inline void MIi_DmaSetParams_noInt (u32 dmaNo, u32 src, u32 dest, u32 ctrl) { - vu32 * p = (vu32 *)((u32)REG_DMA0SAD_ADDR + dmaNo * 12); - *p = (vu32)src; - *(p + 1) = (vu32)dest; - *(p + 2) = (vu32)ctrl; -} - -static inline void MIi_DmaSetParams_wait_noInt (u32 dmaNo, u32 src, u32 dest, u32 ctrl) { - vu32 * p = (vu32 *)((u32)REG_DMA0SAD_ADDR + dmaNo * 12); - *p = (vu32)src; - *(p + 1) = (vu32)dest; - *(p + 2) = (vu32)ctrl; - - { - u32 dummy = reg_MI_DMA0SAD; - } -} -#endif - -static inline void MIi_DmaSetParams_src32 (u32 dmaNo, u32 data, u32 dest, u32 ctrl) { - OSIntrMode enabled = OS_DisableInterrupts(); - - MIiDmaClearSrc * srcp = (MIiDmaClearSrc *)((u32)MIi_DMA_CLEAR_DATA_BUF + dmaNo * 4); - srcp->b32 = data; - MIi_DmaSetParams_noInt(dmaNo, (u32)srcp, dest, ctrl); - - (void)OS_RestoreInterrupts(enabled); -} - -static inline void MIi_DmaSetParams_src16 (u32 dmaNo, u16 data, u32 dest, u32 ctrl) { - OSIntrMode enabled = OS_DisableInterrupts(); - - MIiDmaClearSrc * srcp = (MIiDmaClearSrc *)((u32)MIi_DMA_CLEAR_DATA_BUF + dmaNo * 4); - srcp->b16 = data; - MIi_DmaSetParams_noInt(dmaNo, (u32)srcp, dest, ctrl); - - (void)OS_RestoreInterrupts(enabled); -} - -static inline void MIi_DmaSetParams_wait_src32 (u32 dmaNo, u32 data, u32 dest, u32 ctrl) { - OSIntrMode enabled = OS_DisableInterrupts(); - - MIiDmaClearSrc * srcp = (MIiDmaClearSrc *)((u32)MIi_DMA_CLEAR_DATA_BUF + dmaNo * 4); - srcp->b32 = data; - MIi_DmaSetParams_wait_noInt(dmaNo, (u32)srcp, dest, ctrl); - - (void)OS_RestoreInterrupts(enabled); -} - -static inline void MIi_DmaSetParams_wait_src16 (u32 dmaNo, u16 data, u32 dest, u32 ctrl) { - OSIntrMode enabled = OS_DisableInterrupts(); - - MIiDmaClearSrc * srcp = (MIiDmaClearSrc *)((u32)MIi_DMA_CLEAR_DATA_BUF + dmaNo * 4); - srcp->b16 = data; - MIi_DmaSetParams_wait_noInt(dmaNo, (u32)srcp, dest, ctrl); - - (void)OS_RestoreInterrupts(enabled); -} - -extern void OSi_EnterDmaCallback(u32 dmaNo, MIDmaCallback callback, void * arg); - -static inline void MIi_CallCallback (MIDmaCallback callback, void * arg) { - if (callback) { - (callback)(arg); - } -} - -#define MIi_Wait_BeforeDMA(dmaCntp, dmaNo) \ - do { \ - dmaCntp = &((vu32 *)REG_DMA0SAD_ADDR)[dmaNo * 3 + 2]; \ - MIi_ASSERT_DMANO(dmaNo); \ - while (*dmaCntp & REG_MI_DMA0CNT_E_MASK) {} \ - }while (0) - -#define MIi_Wait_AfterDMA(dmaCntp) \ - do { \ - while (*dmaCntp & REG_MI_DMA0CNT_E_MASK) {} \ - }while (0) - -#define MIi_ASSERT_DMANO(dmaNo) SDK_ASSERTMSG((dmaNo) <= MI_DMA_MAX_NUM, "illegal DMA No.") -#define MIi_ASSERT_MUL2(size) SDK_ASSERTMSG(((size) & 1) == 0, "size & 1 must be 0") -#define MIi_ASSERT_MUL4(size) SDK_ASSERTMSG(((size) & 3) == 0, "size & 3 must be 0") -#define MIi_ASSERT_SRC_ALIGN512(src) SDK_ASSERTMSG(((u32)(src) & 511) == 0, "source address must be in 512-byte alignment") -#define MIi_ASSERT_SRC_ALIGN4(src) SDK_ASSERTMSG(((u32)(src) & 3) == 0, "source address must be in 4-byte alignment") -#define MIi_ASSERT_SRC_ALIGN2(src) SDK_ASSERTMSG(((u32)(src) & 1) == 0, "source address must be in 2-byte alignment") -#define MIi_ASSERT_DEST_ALIGN4(dest) SDK_ASSERTMSG(((u32)(dest) & 3) == 0, "destination address must be in 4-byte alignment") -#define MIi_ASSERT_DEST_ALIGN2(dest) SDK_ASSERTMSG(((u32)(dest) & 1) == 0, "destination address must be in 2-byte alignment") - -#ifdef SDK_ARM9 -# define MIi_ASSERT_SIZE(dmaNo, size) SDK_ASSERTMSG((size) <= 0x1fffff, "size too large"); -#else -# define MIi_ASSERT_SIZE(dmaNo, size) \ - do{ \ - if (dmaNo <= 2) \ - { \ - SDK_ASSERTMSG((size) <= 0x3fff, "size too large"); \ - } \ - else \ - { \ - SDK_ASSERTMSG((size) <= 0xffff, "size too large"); \ - } \ - } while (0) -#endif - -#if defined(SDK_ARM9) && defined(SDK_DEBUG) -void MIi_CheckAddressInTCM(u32 addr, u32 size); -#define MIi_WARNING_ADDRINTCM(addr, size) MIi_CheckAddressInTCM((u32)addr, (u32)size) -#else -#define MIi_WARNING_ADDRINTCM(addr, size) ((void)0) -#endif - -#ifdef SDK_ARM9 -void MIi_CheckAnotherAutoDMA(u32 dmaNo, u32 dmaType); -#endif - -void MIi_CheckDma0SourceAddress(u32 dmaNo, u32 src, u32 size, u32 dir); - -#define MIi_DUMMY_DMA_NO 0 -#define MIi_DUMMY_SRC 0 -#define MIi_DUMMY_DEST 0 -#define MIi_DUMMY_CNT (MI_DMA_ENABLE | MI_DMA_SRC_FIX | MI_DMA_DEST_FIX | MI_DMA_16BIT_BUS | 1) - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/libraries/mi/src/mi_dma.c b/subprojects/NitroSDK/libraries/mi/src/mi_dma.c deleted file mode 100644 index 0f0e74ce8e..0000000000 --- a/subprojects/NitroSDK/libraries/mi/src/mi_dma.c +++ /dev/null @@ -1,474 +0,0 @@ -#include - -#include "include/mi_dma.h" - -#ifdef SDK_ARM9 -#include - -void MIi_DmaSetParams (u32 dmaNo, u32 src, u32 dest, u32 ctrl) { - OSIntrMode enabled = OS_DisableInterrupts(); - vu32 * p = (vu32 *)((u32)REG_DMA0SAD_ADDR + dmaNo * 12); - *p = (vu32)src; - *(p + 1) = (vu32)dest; - *(p + 2) = (vu32)ctrl; - (void)OS_RestoreInterrupts(enabled); -} - -void MIi_DmaSetParams_wait (u32 dmaNo, u32 src, u32 dest, u32 ctrl) { - OSIntrMode enabled = OS_DisableInterrupts(); - vu32 * p = (vu32 *)((u32)REG_DMA0SAD_ADDR + dmaNo * 12); - *p = (vu32)src; - *(p + 1) = (vu32)dest; - *(p + 2) = (vu32)ctrl; - - { - u32 dummy = reg_MI_DMA0SAD; - } - { - u32 dummy = reg_MI_DMA0SAD; - } - - if (dmaNo == MIi_DUMMY_DMA_NO) { - *p = (vu32)MIi_DUMMY_SRC; - *(p + 1) = (vu32)MIi_DUMMY_DEST; - *(p + 2) = (vu32)MIi_DUMMY_CNT; - } - - (void)OS_RestoreInterrupts(enabled); -} - -void MIi_DmaSetParams_noInt (u32 dmaNo, u32 src, u32 dest, u32 ctrl) { - vu32 * p = (vu32 *)((u32)REG_DMA0SAD_ADDR + dmaNo * 12); - *p = (vu32)src; - *(p + 1) = (vu32)dest; - *(p + 2) = (vu32)ctrl; -} - -void MIi_DmaSetParams_wait_noInt (u32 dmaNo, u32 src, u32 dest, u32 ctrl) { - vu32 * p = (vu32 *)((u32)REG_DMA0SAD_ADDR + dmaNo * 12); - *p = (vu32)src; - *(p + 1) = (vu32)dest; - *(p + 2) = (vu32)ctrl; - - { - u32 dummy = reg_MI_DMA0SAD; - } - { - u32 dummy = reg_MI_DMA0SAD; - } - - if (dmaNo == MIi_DUMMY_DMA_NO) { - *p = (vu32)MIi_DUMMY_SRC; - *(p + 1) = (vu32)MIi_DUMMY_DEST; - *(p + 2) = (vu32)MIi_DUMMY_CNT; - } - - { - u32 dummy = reg_MI_DMA0SAD; - } - { - u32 dummy = reg_MI_DMA0SAD; - } -} - -#include -#endif - -void MI_DmaFill32 (u32 dmaNo, void * dest, u32 data, u32 size) { - vu32 * dmaCntp; - - MIi_ASSERT_DMANO(dmaNo); - MIi_ASSERT_MUL4(size); - MIi_ASSERT_SIZE(dmaNo, size / 4); - MIi_ASSERT_DEST_ALIGN4(dest); - MIi_WARNING_ADDRINTCM(dest, size); - - if (size == 0) { - return; - } - - MIi_Wait_BeforeDMA(dmaCntp, dmaNo); - MIi_DmaSetParams_wait_src32(dmaNo, data, (u32)dest, MI_CNT_CLEAR32(size)); - MIi_Wait_AfterDMA(dmaCntp); -} - -void MI_DmaCopy32 (u32 dmaNo, const void * src, void * dest, u32 size) { - vu32 * dmaCntp; - - MIi_ASSERT_DMANO(dmaNo); - MIi_ASSERT_MUL4(size); - MIi_ASSERT_SIZE(dmaNo, size / 4); - MIi_ASSERT_SRC_ALIGN4(src); - MIi_ASSERT_DEST_ALIGN4(dest); - MIi_WARNING_ADDRINTCM(src, size); - MIi_WARNING_ADDRINTCM(dest, size); - - MIi_CheckDma0SourceAddress(dmaNo, (u32)src, size, MI_DMA_SRC_INC); - - if (size == 0) { - return; - } - - MIi_Wait_BeforeDMA(dmaCntp, dmaNo); - MIi_DmaSetParams_wait(dmaNo, (u32)src, (u32)dest, MI_CNT_COPY32(size)); - MIi_Wait_AfterDMA(dmaCntp); -} - -void MI_DmaSend32 (u32 dmaNo, const void * src, volatile void * dest, u32 size) { - vu32 * dmaCntp; - - MIi_ASSERT_DMANO(dmaNo); - MIi_ASSERT_MUL4(size); - MIi_ASSERT_SIZE(dmaNo, size / 4); - MIi_ASSERT_SRC_ALIGN4(src); - MIi_ASSERT_DEST_ALIGN4(dest); - MIi_WARNING_ADDRINTCM(src, size); - MIi_WARNING_ADDRINTCM(dest, size); - - MIi_CheckDma0SourceAddress(dmaNo, (u32)src, size, MI_DMA_SRC_INC); - - if (size == 0) { - return; - } - - MIi_Wait_BeforeDMA(dmaCntp, dmaNo); - MIi_DmaSetParams_wait(dmaNo, (u32)src, (u32)dest, MI_CNT_SEND32(size)); - MIi_Wait_AfterDMA(dmaCntp); -} - -void MI_DmaFill16 (u32 dmaNo, void * dest, u16 data, u32 size) { - vu32 * dmaCntp; - - MIi_ASSERT_DMANO(dmaNo); - MIi_ASSERT_MUL2(size); - MIi_ASSERT_SIZE(dmaNo, size / 2); - MIi_ASSERT_DEST_ALIGN2(dest); - MIi_WARNING_ADDRINTCM(dest, size); - - if (size == 0) { - return; - } - - MIi_Wait_BeforeDMA(dmaCntp, dmaNo); - MIi_DmaSetParams_wait_src32(dmaNo, data, (u32)dest, MI_CNT_CLEAR16(size)); - MIi_Wait_AfterDMA(dmaCntp); -} - -void MI_DmaCopy16 (u32 dmaNo, const void * src, void * dest, u32 size) { - vu32 * dmaCntp; - - MIi_ASSERT_DMANO(dmaNo); - MIi_ASSERT_MUL2(size); - MIi_ASSERT_SIZE(dmaNo, size / 2); - MIi_ASSERT_SRC_ALIGN2(src); - MIi_ASSERT_DEST_ALIGN2(dest); - MIi_WARNING_ADDRINTCM(src, size); - MIi_WARNING_ADDRINTCM(dest, size); - - if (size == 0) { - return; - } - - MIi_CheckDma0SourceAddress(dmaNo, (u32)src, size, MI_DMA_SRC_INC); - - MIi_Wait_BeforeDMA(dmaCntp, dmaNo); - MIi_DmaSetParams_wait(dmaNo, (u32)src, (u32)dest, MI_CNT_COPY16(size)); - MIi_Wait_AfterDMA(dmaCntp); -} - -void MI_DmaSend16 (u32 dmaNo, const void * src, volatile void * dest, u32 size) { - vu32 * dmaCntp; - - MIi_ASSERT_DMANO(dmaNo); - MIi_ASSERT_MUL2(size); - MIi_ASSERT_SIZE(dmaNo, size / 2); - MIi_ASSERT_SRC_ALIGN2(src); - MIi_ASSERT_DEST_ALIGN2(dest); - MIi_WARNING_ADDRINTCM(src, size); - MIi_WARNING_ADDRINTCM(dest, size); - - if (size == 0) { - return; - } - - MIi_CheckDma0SourceAddress(dmaNo, (u32)src, size, MI_DMA_SRC_INC); - - MIi_Wait_BeforeDMA(dmaCntp, dmaNo); - MIi_DmaSetParams_wait(dmaNo, (u32)src, (u32)dest, MI_CNT_SEND16(size)); - MIi_Wait_AfterDMA(dmaCntp); -} - -void MI_DmaFill32Async (u32 dmaNo, void * dest, u32 data, u32 size, MIDmaCallback callback, void * arg) { - MIi_ASSERT_DMANO(dmaNo); - MIi_ASSERT_MUL4(size); - MIi_ASSERT_SIZE(dmaNo, size / 4); - MIi_ASSERT_DEST_ALIGN4(dest); - MIi_WARNING_ADDRINTCM(dest, size); - - if (size == 0) { - MIi_CallCallback(callback, arg); - } else { - MI_WaitDma(dmaNo); - - if (callback) { - OSi_EnterDmaCallback(dmaNo, callback, arg); - MIi_DmaSetParams_src32(dmaNo, data, (u32)dest, MI_CNT_CLEAR32_IF(size)); - } else { - MIi_DmaSetParams_src32(dmaNo, data, (u32)dest, MI_CNT_CLEAR32(size)); - } - } -} - -void MI_DmaCopy32Async (u32 dmaNo, const void * src, void * dest, u32 size, MIDmaCallback callback, void * arg) { - MIi_ASSERT_DMANO(dmaNo); - MIi_ASSERT_MUL4(size); - MIi_ASSERT_SIZE(dmaNo, size / 4); - MIi_ASSERT_SRC_ALIGN4(src); - MIi_ASSERT_DEST_ALIGN4(dest); - MIi_WARNING_ADDRINTCM(src, size); - MIi_WARNING_ADDRINTCM(dest, size); - - MIi_CheckDma0SourceAddress(dmaNo, (u32)src, size, MI_DMA_SRC_INC); - - if (size == 0) { - MIi_CallCallback(callback, arg); - } else { - MI_WaitDma(dmaNo); - - if (callback) { - OSi_EnterDmaCallback(dmaNo, callback, arg); - MIi_DmaSetParams(dmaNo, (u32)src, (u32)dest, MI_CNT_COPY32_IF(size)); - } else { - MIi_DmaSetParams(dmaNo, (u32)src, (u32)dest, MI_CNT_COPY32(size)); - } - } -} - -void MI_DmaSend32Async (u32 dmaNo, const void * src, volatile void * dest, u32 size, MIDmaCallback callback, void * arg) { - MIi_ASSERT_DMANO(dmaNo); - MIi_ASSERT_MUL4(size); - MIi_ASSERT_SIZE(dmaNo, size / 4); - MIi_ASSERT_SRC_ALIGN4(src); - MIi_ASSERT_DEST_ALIGN4(dest); - MIi_WARNING_ADDRINTCM(src, size); - MIi_WARNING_ADDRINTCM(dest, size); - - MIi_CheckDma0SourceAddress(dmaNo, (u32)src, size, MI_DMA_SRC_INC); - - if (size == 0) { - MIi_CallCallback(callback, arg); - } else { - MI_WaitDma(dmaNo); - - if (callback) { - OSi_EnterDmaCallback(dmaNo, callback, arg); - MIi_DmaSetParams(dmaNo, (u32)src, (u32)dest, MI_CNT_SEND32_IF(size)); - } else { - MIi_DmaSetParams(dmaNo, (u32)src, (u32)dest, MI_CNT_SEND32(size)); - } - } -} - -void MI_DmaFill16Async (u32 dmaNo, void * dest, u16 data, u32 size, MIDmaCallback callback, void * arg) { - MIi_ASSERT_DMANO(dmaNo); - MIi_ASSERT_MUL2(size); - MIi_ASSERT_SIZE(dmaNo, size / 2); - MIi_ASSERT_DEST_ALIGN2(dest); - MIi_WARNING_ADDRINTCM(dest, size); - - if (size == 0) { - MIi_CallCallback(callback, arg); - } else { - MI_WaitDma(dmaNo); - - if (callback) { - OSi_EnterDmaCallback(dmaNo, callback, arg); - MIi_DmaSetParams_src32(dmaNo, data, (u32)dest, MI_CNT_CLEAR16_IF(size)); - } else { - MIi_DmaSetParams_src32(dmaNo, data, (u32)dest, MI_CNT_CLEAR16(size)); - } - } -} - -void MI_DmaCopy16Async (u32 dmaNo, const void * src, void * dest, u32 size, MIDmaCallback callback, void * arg) { - MIi_ASSERT_DMANO(dmaNo); - MIi_ASSERT_MUL2(size); - MIi_ASSERT_SIZE(dmaNo, size / 2); - MIi_ASSERT_SRC_ALIGN2(src); - MIi_ASSERT_DEST_ALIGN2(dest); - MIi_WARNING_ADDRINTCM(src, size); - MIi_WARNING_ADDRINTCM(dest, size); - - MIi_CheckDma0SourceAddress(dmaNo, (u32)src, size, MI_DMA_SRC_INC); - - if (size == 0) { - MIi_CallCallback(callback, arg); - } else { - MI_WaitDma(dmaNo); - - if (callback) { - OSi_EnterDmaCallback(dmaNo, callback, arg); - MIi_DmaSetParams(dmaNo, (u32)src, (u32)dest, MI_CNT_COPY16_IF(size)); - } else { - MIi_DmaSetParams(dmaNo, (u32)src, (u32)dest, MI_CNT_COPY16(size)); - } - } -} - -void MI_DmaSend16Async (u32 dmaNo, const void * src, volatile void * dest, u32 size, MIDmaCallback callback, void * arg) { - MIi_ASSERT_DMANO(dmaNo); - MIi_ASSERT_MUL2(size); - MIi_ASSERT_SIZE(dmaNo, size / 2); - MIi_ASSERT_SRC_ALIGN2(src); - MIi_ASSERT_DEST_ALIGN2(dest); - MIi_WARNING_ADDRINTCM(src, size); - MIi_WARNING_ADDRINTCM(dest, size); - - MIi_CheckDma0SourceAddress(dmaNo, (u32)src, size, MI_DMA_SRC_INC); - - if (size == 0) { - MIi_CallCallback(callback, arg); - } else { - MI_WaitDma(dmaNo); - - if (callback) { - OSi_EnterDmaCallback(dmaNo, callback, arg); - MIi_DmaSetParams(dmaNo, (u32)src, (u32)dest, MI_CNT_SEND16_IF(size)); - } else { - MIi_DmaSetParams(dmaNo, (u32)src, (u32)dest, MI_CNT_SEND16(size)); - } - } -} - -BOOL MI_IsDmaBusy (u32 dmaNo) { - vu32 * dmaCntp = &((vu32 *)REG_DMA0SAD_ADDR)[dmaNo * 3 + 2]; - - MIi_ASSERT_DMANO(dmaNo); - return (BOOL)((*(vu32 *)dmaCntp & REG_MI_DMA0CNT_E_MASK) >> REG_MI_DMA0CNT_E_SHIFT); -} - -void MI_WaitDma (u32 dmaNo) { - OSIntrMode enabled = OS_DisableInterrupts(); - vu32 * dmaCntp = &((vu32 *)REG_DMA0SAD_ADDR)[dmaNo * 3 + 2]; - - MIi_ASSERT_DMANO(dmaNo); - while (*dmaCntp & REG_MI_DMA0CNT_E_MASK) { - } - - if (dmaNo == MIi_DUMMY_DMA_NO) { - vu32 * p = (vu32 *)((u32)REG_DMA0SAD_ADDR + dmaNo * 12); - *p = (vu32)MIi_DUMMY_SRC; - *(p + 1) = (vu32)MIi_DUMMY_DEST; - *(p + 2) = (vu32)MIi_DUMMY_CNT; - } - - (void)OS_RestoreInterrupts(enabled); -} - -void MI_StopDma (u32 dmaNo) { - OSIntrMode enabled = OS_DisableInterrupts(); - vu16 * dmaCntp = &((vu16 *)REG_DMA0SAD_ADDR)[dmaNo * 6 + 5]; - - MIi_ASSERT_DMANO(dmaNo); - - *dmaCntp &= ~((MI_DMA_TIMING_MASK | MI_DMA_CONTINUOUS_ON) >> 16); - *dmaCntp &= ~(MI_DMA_ENABLE >> 16); - - { - s32 dummy = dmaCntp[0]; - } - { - s32 dummy = dmaCntp[0]; - } - - if (dmaNo == MIi_DUMMY_DMA_NO) { - vu32 * p = (vu32 *)((u32)REG_DMA0SAD_ADDR + dmaNo * 12); - *p = (vu32)MIi_DUMMY_SRC; - *(p + 1) = (vu32)MIi_DUMMY_DEST; - *(p + 2) = (vu32)MIi_DUMMY_CNT; - } - - (void)OS_RestoreInterrupts(enabled); -} - -#ifdef SDK_ARM9 - -void MIi_CheckAnotherAutoDMA (u32 dmaNo, u32 dmaType) { - int n; - u32 dmaCnt; - u32 timing; - - for (n = 0; n < MI_DMA_MAX_NUM; n++) { - if (n == dmaNo) { - continue; - } - - dmaCnt = *(REGType32v *)(REG_DMA0CNT_ADDR + n * 12); - - if ((dmaCnt & MI_DMA_ENABLE) == 0) { - continue; - } - - timing = dmaCnt & MI_DMA_TIMING_MASK; - - if (timing == dmaType - || (timing == MI_DMA_TIMING_V_BLANK && dmaType == MI_DMA_TIMING_H_BLANK) - || (timing == MI_DMA_TIMING_H_BLANK && dmaType == MI_DMA_TIMING_V_BLANK)) { - continue; - } - - if (timing == MI_DMA_TIMING_DISP - || timing == MI_DMA_TIMING_DISP_MMEM - || timing == MI_DMA_TIMING_CARD - || timing == MI_DMA_TIMING_CARTRIDGE - || timing == MI_DMA_TIMING_GXFIFO - || timing == MI_DMA_TIMING_V_BLANK || timing == MI_DMA_TIMING_H_BLANK) { - OS_Panic("cannot start auto DMA at the same time."); - } - } -} - -#endif - -void MIi_CheckDma0SourceAddress (u32 dmaNo, u32 src, u32 size, u32 dir) { - if (dmaNo == 0) { - u32 addStart; - u32 addEnd; - - addStart = src & 0xff000000; - - switch (dir) { - case MI_DMA_SRC_INC: - addEnd = src + size; - break; - case MI_DMA_SRC_DEC: - addEnd = src - size; - break; - default: - addEnd = src; - break; - } - addEnd &= 0xff000000; - - if (addStart == 0x04000000 || addStart >= 0x08000000 || - addEnd == 0x04000000 || addEnd >= 0x08000000) { - OS_Panic("illegal DMA0 source address."); - } - } -} - -#if defined(SDK_ARM9) && defined(SDK_DEBUG) -void MIi_CheckAddressInTCM (u32 addr, u32 size) { - u32 itcm = HW_ITCM; - u32 dtcm = OS_GetDTCMAddress(); - - SDK_WARNING( - itcm >= addr + size - || addr >= itcm + HW_ITCM_SIZE, "intend to do DMA in ITCM area (%x)", addr - ); - SDK_WARNING( - dtcm >= addr + size - || addr >= dtcm + HW_DTCM_SIZE, "intend to do DMA in DTCM area (%x)", addr - ); -} -#endif diff --git a/subprojects/NitroSDK/libraries/mi/src/mi_dma_card.c b/subprojects/NitroSDK/libraries/mi/src/mi_dma_card.c deleted file mode 100644 index 5e968bf5d6..0000000000 --- a/subprojects/NitroSDK/libraries/mi/src/mi_dma_card.c +++ /dev/null @@ -1,30 +0,0 @@ -#include - -#include "include/mi_dma.h" - -void MIi_CardDmaCopy32 (u32 dmaNo, const void * src, void * dest, u32 size) { - vu32 * dmaCntp; - - MIi_ASSERT_DMANO(dmaNo); - MIi_ASSERT_DEST_ALIGN4(dest); - - MIi_ASSERT_SRC_ALIGN512(size); - MIi_WARNING_ADDRINTCM(dest, size); - (void)size; - -#ifdef SDK_ARM9 - MIi_CheckAnotherAutoDMA(dmaNo, MIi_DMA_TIMING_ANY); -#endif - - MIi_CheckDma0SourceAddress(dmaNo, (u32)src, size, MI_DMA_SRC_FIX); - - if (size == 0) { - return; - } - - MIi_Wait_BeforeDMA(dmaCntp, dmaNo); - MIi_DmaSetParams( - dmaNo, (u32)src, (u32)dest, - (u32)(MI_CNT_CARDRECV32(4) | MI_DMA_CONTINUOUS_ON) - ); -} diff --git a/subprojects/NitroSDK/libraries/mi/src/mi_dma_gxcommand.c b/subprojects/NitroSDK/libraries/mi/src/mi_dma_gxcommand.c deleted file mode 100644 index 40b699e9e8..0000000000 --- a/subprojects/NitroSDK/libraries/mi/src/mi_dma_gxcommand.c +++ /dev/null @@ -1,191 +0,0 @@ -#ifdef SDK_ARM9 -#include - -#include "include/mi_dma.h" - -#define MIi_GX_LENGTH_ONCE (118 * sizeof(u32)) - -typedef struct { - volatile BOOL isBusy; - u32 dmaNo; - u32 src; - u32 length; - MIDmaCallback callback; - void * arg; - GXFifoIntrCond fifoCond; - void (* fifoFunc) (void); -} MIiGXDmaParams; - -static MIiGXDmaParams MIi_GXDmaParams = {FALSE}; - -static void MIi_FIFOCallback(void); -static void MIi_DMACallback(void *); -static void MIi_DMAFastCallback(void *); - -#include - -void MI_SendGXCommand (u32 dmaNo, const void * src, u32 commandLength) { - vu32 * dmaCntp; - u32 leftLength = commandLength; - u32 currentSrc = (u32)src; - - MIi_ASSERT_DMANO(dmaNo); - MIi_ASSERT_SRC_ALIGN4(src); - MIi_WARNING_ADDRINTCM(src, commandLength); - - if (leftLength == 0) { - return; - } - - MIi_CheckDma0SourceAddress(dmaNo, (u32)src, commandLength, MI_DMA_SRC_INC); - - MIi_Wait_BeforeDMA(dmaCntp, dmaNo); - while (leftLength > 0) { - u32 length = (leftLength > MIi_GX_LENGTH_ONCE) ? MIi_GX_LENGTH_ONCE : leftLength; - MIi_DmaSetParams(dmaNo, currentSrc, (u32)REG_GXFIFO_ADDR, MI_CNT_SEND32(length)); - leftLength -= length; - currentSrc += length; - } - MIi_Wait_AfterDMA(dmaCntp); -} - -#include - -void MI_SendGXCommandAsync (u32 dmaNo, const void * src, u32 commandLength, MIDmaCallback callback, void * arg) { - MIi_ASSERT_DMANO(dmaNo); - MIi_ASSERT_SRC_ALIGN4(src); - MIi_WARNING_ADDRINTCM(src, commandLength); - - if (commandLength == 0) { - MIi_CallCallback(callback, arg); - return; - } - - while (MIi_GXDmaParams.isBusy) { - } - - while (!(G3X_GetCommandFifoStatus() & GX_FIFOSTAT_UNDERHALF)) { - } - - MIi_GXDmaParams.isBusy = TRUE; - MIi_GXDmaParams.dmaNo = dmaNo; - MIi_GXDmaParams.src = (u32)src; - MIi_GXDmaParams.length = commandLength; - MIi_GXDmaParams.callback = callback; - MIi_GXDmaParams.arg = arg; - - MIi_CheckDma0SourceAddress(dmaNo, (u32)src, commandLength, MI_DMA_SRC_INC); - - MI_WaitDma(dmaNo); - { - OSIntrMode enabled = OS_DisableInterrupts(); - - MIi_GXDmaParams.fifoCond = - (GXFifoIntrCond)((reg_G3X_GXSTAT & REG_G3X_GXSTAT_FI_MASK) >> REG_G3X_GXSTAT_FI_SHIFT); - MIi_GXDmaParams.fifoFunc = OS_GetIrqFunction(OS_IE_GXFIFO); - - G3X_SetFifoIntrCond(GX_FIFOINTR_COND_UNDERHALF); - OS_SetIrqFunction(OS_IE_GXFIFO, MIi_FIFOCallback); - (void)OS_EnableIrqMask(OS_IE_GXFIFO); - - MIi_FIFOCallback(); - - (void)OS_RestoreInterrupts(enabled); - } -} - -static void MIi_FIFOCallback (void) { - u32 length; - u32 src; - - if (MIi_GXDmaParams.length == 0) { - return; - } - - length = - (MIi_GXDmaParams.length >= - MIi_GX_LENGTH_ONCE) ? MIi_GX_LENGTH_ONCE : MIi_GXDmaParams.length; - src = MIi_GXDmaParams.src; - - MIi_GXDmaParams.length -= length; - MIi_GXDmaParams.src += length; - - if (MIi_GXDmaParams.length == 0) { - OSi_EnterDmaCallback(MIi_GXDmaParams.dmaNo, MIi_DMACallback, NULL); - MIi_DmaSetParams( - MIi_GXDmaParams.dmaNo, src, (u32)REG_GXFIFO_ADDR, - MI_CNT_SEND32_IF(length) - ); - (void)OS_ResetRequestIrqMask(OS_IE_GXFIFO); - } else { - MIi_DmaSetParams(MIi_GXDmaParams.dmaNo, src, (u32)REG_GXFIFO_ADDR, MI_CNT_SEND32(length)); - (void)OS_ResetRequestIrqMask(OS_IE_GXFIFO); - } -} - -static void MIi_DMACallback (void *) { - (void)OS_DisableIrqMask(OS_IE_GXFIFO); - - G3X_SetFifoIntrCond(MIi_GXDmaParams.fifoCond); - OS_SetIrqFunction(OS_IE_GXFIFO, MIi_GXDmaParams.fifoFunc); - - MIi_GXDmaParams.isBusy = FALSE; - - MIi_CallCallback(MIi_GXDmaParams.callback, MIi_GXDmaParams.arg); -} - -#include - -void MI_SendGXCommandFast (u32 dmaNo, const void * src, u32 commandLength) { - vu32 * dmaCntp; - - MIi_ASSERT_DMANO(dmaNo); - MIi_ASSERT_SRC_ALIGN4(src); - MIi_WARNING_ADDRINTCM(src, commandLength); - - if (commandLength == 0) { - return; - } - - MIi_Wait_BeforeDMA(dmaCntp, dmaNo); - MIi_DmaSetParams(dmaNo, (u32)src, (u32)REG_GXFIFO_ADDR, MI_CNT_GXCOPY(commandLength)); - MIi_Wait_AfterDMA(dmaCntp); -} - -#include - -void MI_SendGXCommandAsyncFast (u32 dmaNo, const void * src, u32 commandLength, MIDmaCallback callback, void * arg) { - MIi_ASSERT_DMANO(dmaNo); - MIi_ASSERT_SRC_ALIGN4(src); - MIi_WARNING_ADDRINTCM(src, commandLength); - - if (commandLength == 0) { - MIi_CallCallback(callback, arg); - return; - } - - while (MIi_GXDmaParams.isBusy) { - } - - MIi_GXDmaParams.isBusy = TRUE; - MIi_GXDmaParams.dmaNo = dmaNo; - MIi_GXDmaParams.callback = callback; - MIi_GXDmaParams.arg = arg; - - MIi_CheckAnotherAutoDMA(dmaNo, MI_DMA_TIMING_GXFIFO); - - MIi_CheckDma0SourceAddress(dmaNo, (u32)src, commandLength, MI_DMA_SRC_INC); - - MI_WaitDma(dmaNo); - - OSi_EnterDmaCallback(dmaNo, MIi_DMAFastCallback, NULL); - MIi_DmaSetParams(dmaNo, (u32)src, (u32)REG_GXFIFO_ADDR, MI_CNT_GXCOPY_IF(commandLength)); -} - -static void MIi_DMAFastCallback (void *) { - MIi_GXDmaParams.isBusy = FALSE; - - MIi_CallCallback(MIi_GXDmaParams.callback, MIi_GXDmaParams.arg); -} - -#endif diff --git a/subprojects/NitroSDK/libraries/mi/src/mi_dma_hblank.c b/subprojects/NitroSDK/libraries/mi/src/mi_dma_hblank.c deleted file mode 100644 index 4eee57de1c..0000000000 --- a/subprojects/NitroSDK/libraries/mi/src/mi_dma_hblank.c +++ /dev/null @@ -1,73 +0,0 @@ -#ifdef SDK_ARM9 -#include - -#include "include/mi_dma.h" - -void MI_HBlankDmaCopy32 (u32 dmaNo, const void * src, void * dest, u32 size) { - MIi_ASSERT_DMANO(dmaNo); - MIi_ASSERT_SRC_ALIGN4(src); - MIi_ASSERT_DEST_ALIGN4(dest); - MIi_WARNING_ADDRINTCM(src, size); - MIi_WARNING_ADDRINTCM(dest, size); - - MIi_CheckAnotherAutoDMA(dmaNo, MI_DMA_TIMING_H_BLANK); - MIi_CheckDma0SourceAddress(dmaNo, (u32)src, size, MI_DMA_SRC_INC); - if (size == 0) { - return; - } - - MI_WaitDma(dmaNo); - MIi_DmaSetParams(dmaNo, (u32)src, (u32)dest, MI_CNT_HBCOPY32(size)); -} - -void MI_HBlankDmaCopy16 (u32 dmaNo, const void * src, void * dest, u32 size) { - MIi_ASSERT_DMANO(dmaNo); - MIi_ASSERT_SRC_ALIGN2(src); - MIi_ASSERT_DEST_ALIGN2(dest); - MIi_WARNING_ADDRINTCM(src, size); - MIi_WARNING_ADDRINTCM(dest, size); - - MIi_CheckAnotherAutoDMA(dmaNo, MI_DMA_TIMING_H_BLANK); - MIi_CheckDma0SourceAddress(dmaNo, (u32)src, size, MI_DMA_SRC_INC); - if (size == 0) { - return; - } - - MI_WaitDma(dmaNo); - MIi_DmaSetParams(dmaNo, (u32)src, (u32)dest, MI_CNT_HBCOPY16(size)); -} - -void MI_HBlankDmaCopy32If (u32 dmaNo, const void * src, void * dest, u32 size) { - MIi_ASSERT_DMANO(dmaNo); - MIi_ASSERT_SRC_ALIGN4(src); - MIi_ASSERT_DEST_ALIGN4(dest); - MIi_WARNING_ADDRINTCM(src, size); - MIi_WARNING_ADDRINTCM(dest, size); - - MIi_CheckAnotherAutoDMA(dmaNo, MI_DMA_TIMING_H_BLANK); - MIi_CheckDma0SourceAddress(dmaNo, (u32)src, size, MI_DMA_SRC_INC); - if (size == 0) { - return; - } - - MI_WaitDma(dmaNo); - MIi_DmaSetParams(dmaNo, (u32)src, (u32)dest, MI_CNT_HBCOPY32_IF(size)); -} - -void MI_HBlankDmaCopy16If (u32 dmaNo, const void * src, void * dest, u32 size) { - MIi_ASSERT_DMANO(dmaNo); - MIi_ASSERT_SRC_ALIGN2(src); - MIi_ASSERT_DEST_ALIGN2(dest); - MIi_WARNING_ADDRINTCM(src, size); - MIi_WARNING_ADDRINTCM(dest, size); - - MIi_CheckAnotherAutoDMA(dmaNo, MI_DMA_TIMING_H_BLANK); - MIi_CheckDma0SourceAddress(dmaNo, (u32)src, size, MI_DMA_SRC_INC); - if (size == 0) { - return; - } - - MI_WaitDma(dmaNo); - MIi_DmaSetParams(dmaNo, (u32)src, (u32)dest, MI_CNT_HBCOPY16_IF(size)); -} -#endif diff --git a/subprojects/NitroSDK/libraries/mi/src/mi_init.c b/subprojects/NitroSDK/libraries/mi/src/mi_init.c deleted file mode 100644 index 9cdfcba7fe..0000000000 --- a/subprojects/NitroSDK/libraries/mi/src/mi_init.c +++ /dev/null @@ -1,8 +0,0 @@ -#include - -void MI_Init (void) { -#ifdef SDK_ARM9 - MI_SetWramBank(MI_WRAM_ARM7_ALL); -#endif - MI_StopDma(0); -} diff --git a/subprojects/NitroSDK/libraries/mi/src/mi_memory.c b/subprojects/NitroSDK/libraries/mi/src/mi_memory.c deleted file mode 100644 index 74b45e1c3d..0000000000 --- a/subprojects/NitroSDK/libraries/mi/src/mi_memory.c +++ /dev/null @@ -1,676 +0,0 @@ -#include -#include - -#define HALFW_CONDAL 0xe0000000 -#define HALFW_CONDNE 0x10000000 -#define HALFW_CONDEQ 0x00000000 - -#define HALFW_OFF_PL 0x00800000 -#define HALFW_OFF_MI 0x00000000 -#define HALFW_LOAD 0x00100000 -#define HALFW_STORE 0x00000000 -#define HALFW_RN(n) ((n) << 16) -#define HALFW_RD(n) ((n) << 12) - -#define HALFW_DEF1 0x004000B0 -#define HALFW_DEF2 0x014000B0 - -#define HALFW_IMM(n) (((n) & 0xf) | (((n) & 0xf0) << 4)) - -#define HALFW_DCD(cond, d, n, offset, sign, ldst, def) \ - dcd(def) | (cond) | (sign) | (ldst) | HALFW_RN(n) | HALFW_RD(d) | HALFW_IMM(offset) - -#define LDRH_AD1(cond, d, n, offset) \ - HALFW_DCD(cond, d, n, offset, HALFW_OFF_PL, HALFW_LOAD, HALFW_DEF1) - -#define LDRH_AD2(cond, d, n, offset) \ - HALFW_DCD(cond, d, n, offset, HALFW_OFF_PL, HALFW_LOAD, HALFW_DEF2) - -#define LDRH_AD3(cond, d, n, offset) \ - HALFW_DCD(cond, d, n, offset, HALFW_OFF_MI, HALFW_LOAD, HALFW_DEF1) - -#define LDRH_AD4(cond, d, n, offset) \ - HALFW_DCD(cond, d, n, offset, HALFW_OFF_MI, HALFW_LOAD, HALFW_DEF2) - -#define STRH_AD1(cond, d, n, offset) \ - HALFW_DCD(cond, d, n, offset, HALFW_OFF_PL, HALFW_STORE, HALFW_DEF1) - -#define STRH_AD2(cond, d, n, offset) \ - HALFW_DCD(cond, d, n, offset, HALFW_OFF_PL, HALFW_STORE, HALFW_DEF2) - -#define STRH_AD3(cond, d, n, offset) \ - HALFW_DCD(cond, d, n, offset, HALFW_OFF_MI, HALFW_STORE, HALFW_DEF1) - -#define STRH_AD4(cond, d, n, offset) \ - HALFW_DCD(cond, d, n, offset, HALFW_OFF_MI, HALFW_STORE, HALFW_DEF2) - -#include - -asm void MIi_CpuClear16 (register u16 data, register void * destp, register u32 size) { - mov r3, #0 - @00 : - cmp r3, r2 - blt @strlth1 - b @strlth2 - @strlth1: - strh r0, [r1, r3] - @strlth2: - blt @addlt1 - b @addlt2 - @addlt1: - add r3, r3, #2 - @addlt2: - blt @00 - bx lr -} - -asm void MIi_CpuCopy16 (register const void * srcp, register void * destp, register u32 size) { - mov r12, #0 - @10 : - cmp r12, r2 -#ifndef CW_BUG_FOR_LDRH_AND_STRH - blt @ldrlth1 - b @ldrlth2 - @ldrlth1: - ldrh r3, [r0, r12] - @ldrlth2: -#else - dcd 0xb19030bc -#endif -#ifndef CW_BUG_FOR_LDRH_AND_STRH - blt @strlth1 - b @strlth2 - @strlth1: - strh r3, [r1, r12] - @strlth2: -#else - dcd 0xb18130bc -#endif - blt @addlt1 - b @addlt2 - @addlt1: - add r12, r12, #2 - @addlt2: - blt @10 - bx lr -} - -asm void MIi_CpuSend16 (register const void * srcp, register volatile void * destp, register u32 size) { - mov r12, #0 - @11 : - cmp r12, r2 -#ifndef CW_BUG_FOR_LDRH_AND_STRH - blt @ldrlth1 - b @ldrlth2 - @ldrlth1: - ldrh r3, [r0, r12] - @ldrlth2: -#else - dcd 0xb19030bc -#endif - blt @strlth1 - b @strlth2 - @strlth1: - strh r3, [r1, #0] - @strlth2: - blt @addlt1 - b @addlt2 - @addlt1: - add r12, r12, #2 - @addlt2: - blt @11 - bx lr -} - -asm void MIi_CpuClear32 (register u32 data, register void * destp, register u32 size) { - add r12, r1, r2 - - @20 : - cmp r1, r12 - blt @stmltia1 - b @stmltia2 - @stmltia1: - stmia r1 !, {r0} - @stmltia2: - blt @20 - bx lr -} - -asm void MIi_CpuCopy32 (register const void * srcp, register void * destp, register u32 size) { - add r12, r1, r2 - - @30 : - cmp r1, r12 - blt @ldmltia1 - b @ldmltia2 - @ldmltia1: - ldmia r0 !, {r2} - @ldmltia2: - blt @stmltia1 - b @stmltia2 - @stmltia1: - stmia r1 !, {r2} - @stmltia2: - blt @30 - bx lr -} - -asm void MIi_CpuSend32 (register const void * srcp, volatile void * destp, u32 size) { - add r12, r0, r2 - - @31 : - cmp r0, r12 - blt @ldmltia1 - b @ldmltia2 - @ldmltia1: - ldmia r0 !, {r2} - @ldmltia2: - blt @strlt1 - b @strlt2 - @strlt1: - str r2, [r1] - @strlt2: - blt @31 - bx lr -} - -asm void MIi_CpuClearFast (register u32 data, register void * destp, register u32 size) { - stmfd sp !, {r4 - r9} - add r9, r1, r2 - mov r12, r2, lsr #5 - add r12, r1, r12, lsl #5 - mov r2, r0 - mov r3, r2 - mov r4, r2 - mov r5, r2 - mov r6, r2 - mov r7, r2 - mov r8, r2 - @40 : - cmp r1, r12 - blt @stmltia1 - b @stmltia2 - @stmltia1: - stmia r1 !, {r0, r2 - r8} - @stmltia2: - blt @40 - @41: - cmp r1, r9 - blt @stmltia3 - b @stmltia4 - @stmltia3: - stmia r1 !, {r0} - @stmltia4: - blt @41 - ldmfd sp !, {r4 - r9} - bx lr -} - -asm void MIi_CpuCopyFast (register const void * srcp, register void * destp, register u32 size) { - stmfd sp !, {r4 - r10} - add r10, r1, r2 - mov r12, r2, lsr #5 - add r12, r1, r12, lsl #5 - @50 : - cmp r1, r12 - blt @ldmltia1 - b @ldmltia2 - @ldmltia1: - ldmia r0 !, {r2 - r9} - @ldmltia2: - blt @stmltia1 - b @stmltia2 - @stmltia1: - stmia r1 !, {r2 - r9} - @stmltia2: - blt @50 - @51 : - cmp r1, r10 - blt @ldmltia3 - b @ldmltia4 - @ldmltia3: - ldmia r0 !, {r2} - @ldmltia4: - blt @stmltia3 - b @stmltia4 - @stmltia3: - stmia r1 !, {r2} - @stmltia4: - blt @51 - ldmfd sp !, {r4 - r10} - bx lr -} - -asm void MI_Copy16B (register const void * pSrc, register void * pDest) { - ldmia r0 !, {r2, r3, r12} - stmia r1 !, {r2, r3, r12} - ldmia r0 !, {r2} - stmia r1 !, {r2} - bx lr -} - -asm void MI_Copy32B (register const void * pSrc, register void * pDest) { - ldmia r0 !, {r2, r3, r12} - stmia r1 !, {r2, r3, r12} - ldmia r0 !, {r2, r3, r12} - stmia r1 !, {r2, r3, r12} - ldmia r0 !, {r2, r3} - stmia r1 !, {r2, r3} - bx lr -} - -asm void MI_Copy36B (register const void * pSrc, register void * pDest) { - ldmia r0 !, {r2, r3, r12} - stmia r1 !, {r2, r3, r12} - ldmia r0 !, {r2, r3, r12} - stmia r1 !, {r2, r3, r12} - ldmia r0 !, {r2, r3, r12} - stmia r1 !, {r2, r3, r12} - bx lr -} - -asm void MI_Copy48B (register const void * pSrc, register void * pDest) { - ldmia r0 !, {r2, r3, r12} - stmia r1 !, {r2, r3, r12} - ldmia r0 !, {r2, r3, r12} - stmia r1 !, {r2, r3, r12} - ldmia r0 !, {r2, r3, r12} - stmia r1 !, {r2, r3, r12} - ldmia r0 !, {r2, r3, r12} - stmia r1 !, {r2, r3, r12} - bx lr -} - -asm void MI_Copy64B (register const void * pSrc, register void * pDest) { - ldmia r0 !, {r2, r3, r12} - stmia r1 !, {r2, r3, r12} - ldmia r0 !, {r2, r3, r12} - stmia r1 !, {r2, r3, r12} - ldmia r0 !, {r2, r3, r12} - stmia r1 !, {r2, r3, r12} - ldmia r0 !, {r2, r3, r12} - stmia r1 !, {r2, r3, r12} - ldmia r0, {r0, r2, r3, r12} - stmia r1 !, {r0, r2, r3, r12} - bx lr -} - -asm void MI_Copy128B (register const void * pSrc, register void * pDest) { - stmfd sp !, {r4} - ldmia r0 !, {r2, r3, r4, r12} - stmia r1 !, {r2, r3, r4, r12} - ldmia r0 !, {r2, r3, r4, r12} - stmia r1 !, {r2, r3, r4, r12} - ldmia r0 !, {r2, r3, r4, r12} - stmia r1 !, {r2, r3, r4, r12} - ldmia r0 !, {r2, r3, r4, r12} - stmia r1 !, {r2, r3, r4, r12} - ldmia r0 !, {r2, r3, r4, r12} - stmia r1 !, {r2, r3, r4, r12} - ldmia r0 !, {r2, r3, r4, r12} - stmia r1 !, {r2, r3, r4, r12} - ldmia r0 !, {r2, r3, r4, r12} - stmia r1 !, {r2, r3, r4, r12} - ldmia r0 !, {r2, r3, r4, r12} - stmia r1 !, {r2, r3, r4, r12} - ldmfd sp !, {r4} - bx lr -} - -#ifdef SDK_SMALL_BUILD -asm void MI_CpuFill8 (register void * dstp, register u8 data, register u32 size) { - mov r12, #0 - @1 : - cmp r12, r2 - strltb r1, [r0, r12] - addlt r12, r12, #1 - blt @1 - bx lr -} -#else -asm void MI_CpuFill8 (register void * dstp, register u8 data, register u32 size) { - cmp r2, #0 - beq @bxeq1 - b @bxeq2 - @bxeq1: - bx lr - @bxeq2: - tst r0, #1 - beq @_1 -#ifndef CW_BUG_FOR_LDRH_AND_STRH - ldrh r12, [r0, #- 1] -#else - LDRH_AD4(HALFW_CONDAL, 12, 0, 1) -#endif - and r12, r12, #0x00FF - orr r3, r12, r1, lsl #8 -#ifndef CW_BUG_FOR_LDRH_AND_STRH - strh r3, [r0, #- 1] -#else - STRH_AD4(HALFW_CONDAL, 3, 0, 1) -#endif - add r0, r0, #1 - subs r2, r2, #1 - beq @bxeq3 - b @bxeq4 - @bxeq3: - bx lr - @bxeq4: - @_1: - cmp r2, #2 - bcc @_6 - orr r1, r1, r1, lsl #8 - tst r0, #2 - beq @_8 -#ifndef CW_BUG_FOR_LDRH_AND_STRH - strh r1, [r0], #2 -#else - STRH_AD1(HALFW_CONDAL, 1, 0, 2) -#endif - subs r2, r2, #2 - beq @bxeq5 - b @bxeq6 - @bxeq5: - bx lr - @bxeq6: - @_8: - orr r1, r1, r1, lsl #16 - bics r3, r2, #3 - beq @_10 - sub r2, r2, r3 - add r12, r3, r0 - @_9: - str r1, [r0], #4 - cmp r0, r12 - bcc @_9 - @_10: - tst r2, #2 -#ifndef CW_BUG_FOR_LDRH_AND_STRH - bne @strneh1 - b @strneh2 - @strneh1: - strh r1, [r0], #2 - @strneh2: -#else - STRH_AD1(HALFW_CONDNE, 1, 0, 2) -#endif - @_6: - tst r2, #1 - beq @bxeq7 - b @bxeq8 - @bxeq7: - bx lr - @bxeq8: -#ifndef CW_BUG_FOR_LDRH_AND_STRH - ldrh r3, [r0] -#else - LDRH_AD2(HALFW_CONDAL, 3, 0, 0) -#endif - and r3, r3, #0xFF00 - and r1, r1, #0x00FF - orr r1, r1, r3 -#ifndef CW_BUG_FOR_LDRH_AND_STRH - strh r1, [r0] -#else - STRH_AD2(HALFW_CONDAL, 1, 0, 0) -#endif - bx lr -} -#endif - -#ifdef SDK_SMALL_BUILD -asm void MI_CpuCopy8 (register const void * srcp, register void * dstp, register u32 size) { - mov r12, #0 - @1 : - cmp r12, r2 - ldrltb r3, [r0, r12] - strltb r3, [r1, r12] - addlt r12, r12, #1 - blt @1 - bx lr -} -#else -asm void MI_CpuCopy8 (register const void * srcp, register void * dstp, register u32 size) { - cmp r2, #0 - beq @bxeq1 - b @bxeq2 - @bxeq1: - bx lr - @bxeq2: - tst r1, #1 - beq @_1 -#ifndef CW_BUG_FOR_LDRH_AND_STRH - ldrh r12, [r1, #- 1] -#else - LDRH_AD4(HALFW_CONDAL, 12, 1, 1) -#endif - and r12, r12, #0x00FF - tst r0, #1 -#ifndef CW_BUG_FOR_LDRH_AND_STRH - bne @ldrneh1 - b @ldrneh2 - @ldrneh1: - ldrh r3, [r0, #- 1] - @ldrneh2: -#else - LDRH_AD4(HALFW_CONDNE, 3, 0, 1) -#endif - bne @movne1 - b @movne2 - @movne1: - mov r3, r3, lsr #8 - @movne2: -#ifndef CW_BUG_FOR_LDRH_AND_STRH - beq @ldreqh1 - b @ldreqh2 - @ldreqh1: - ldrh r3, [r0] - @ldreqh2: -#else - LDRH_AD2(HALFW_CONDEQ, 3, 0, 0) -#endif - orr r3, r12, r3, lsl #8 -#ifndef CW_BUG_FOR_LDRH_AND_STRH - strh r3, [r1, #- 1] -#else - STRH_AD4(HALFW_CONDAL, 3, 1, 1) -#endif - add r0, r0, #1 - add r1, r1, #1 - subs r2, r2, #1 - beq @bxeq3 - b @bxeq4 - @bxeq3: - bx lr - @bxeq4: - @_1: - eor r12, r1, r0 - tst r12, #1 - beq @_2 - bic r0, r0, #1 -#ifndef CW_BUG_FOR_LDRH_AND_STRH - ldrh r12, [r0], #2 -#else - LDRH_AD1(HALFW_CONDAL, 12, 0, 2) -#endif - mov r3, r12, lsr #8 - subs r2, r2, #2 - bcc @_3 - @_4: -#ifndef CW_BUG_FOR_LDRH_AND_STRH - ldrh r12, [r0], #2 -#else - LDRH_AD1(HALFW_CONDAL, 12, 0, 2) -#endif - orr r12, r3, r12, lsl #8 -#ifndef CW_BUG_FOR_LDRH_AND_STRH - strh r12, [r1], #2 -#else - STRH_AD1(HALFW_CONDAL, 12, 1, 2) -#endif - mov r3, r12, lsr #16 - subs r2, r2, #2 - bcs @_4 - @_3: - tst r2, #1 - beq @bxeq5 - b @bxeq6 - @bxeq5: - bx lr - @bxeq6: -#ifndef CW_BUG_FOR_LDRH_AND_STRH - ldrh r12, [r1] -#else - LDRH_AD2(HALFW_CONDAL, 12, 1, 0) -#endif - and r12, r12, #0xFF00 - orr r12, r12, r3 -#ifndef CW_BUG_FOR_LDRH_AND_STRH - strh r12, [r1] -#else - STRH_AD2(HALFW_CONDAL, 12, 1, 0) -#endif - bx lr - @_2: - tst r12, #2 - beq @_5 - bics r3, r2, #1 - beq @_6 - sub r2, r2, r3 - add r12, r3, r1 - @_7: -#ifndef CW_BUG_FOR_LDRH_AND_STRH - ldrh r3, [r0], #2 -#else - LDRH_AD1(HALFW_CONDAL, 3, 0, 2) -#endif -#ifndef CW_BUG_FOR_LDRH_AND_STRH - strh r3, [r1], #2 -#else - STRH_AD1(HALFW_CONDAL, 3, 1, 2) -#endif - cmp r1, r12 - bcc @_7 - b @_6 - @_5: - cmp r2, #2 - bcc @_6 - tst r1, #2 - beq @_8 -#ifndef CW_BUG_FOR_LDRH_AND_STRH - ldrh r3, [r0], #2 -#else - LDRH_AD1(HALFW_CONDAL, 3, 0, 2) -#endif -#ifndef CW_BUG_FOR_LDRH_AND_STRH - strh r3, [r1], #2 -#else - STRH_AD1(HALFW_CONDAL, 3, 1, 2) -#endif - subs r2, r2, #2 - beq @bxeq7 - b @bxeq8 - @bxeq7: - bx lr - @bxeq8: - @_8: - bics r3, r2, #3 - beq @_10 - sub r2, r2, r3 - add r12, r3, r1 - @_9: - ldr r3, [r0], #4 - str r3, [r1], #4 - cmp r1, r12 - bcc @_9 - @_10: - tst r2, #2 -#ifndef CW_BUG_FOR_LDRH_AND_STRH - bne @ldrneh3 - b @ldrneh4 - @ldrneh3: - ldrh r3, [r0], #2 - @ldrneh4: - bne @strneh1 - b @strneh2 - @strneh1: - strh r3, [r1], #2 - @strneh2: -#else - LDRH_AD1(HALFW_CONDNE, 3, 0, 2) - STRH_AD1(HALFW_CONDNE, 3, 1, 2) -#endif - @_6: - tst r2, #1 - beq @bxeq9 - b @bxeq10 - @bxeq9: - bx lr - @bxeq10: -#ifndef CW_BUG_FOR_LDRH_AND_STRH - ldrh r2, [r1] - ldrh r0, [r0] -#else - LDRH_AD2(HALFW_CONDAL, 2, 1, 0) - LDRH_AD2(HALFW_CONDAL, 0, 0, 0) -#endif - and r2, r2, #0xFF00 - and r0, r0, #0x00FF - orr r0, r2, r0 -#ifndef CW_BUG_FOR_LDRH_AND_STRH - strh r0, [r1] -#else - STRH_AD2(HALFW_CONDAL, 0, 1, 0) -#endif - bx lr -} -#endif - -#include -#include - -asm void MI_Zero32B (register void * pDest) { - mov r1, #0 - mov r2, #0 - stmia r0 !, {r1, r2} - mov r3, #0 - stmia r0 !, {r1, r2, r3} - stmia r0 !, {r1, r2, r3} - bx lr -} - -asm void MI_Zero36B (register void * pDest) { - mov r1, #0 - mov r2, #0 - mov r3, #0 - stmia r0 !, {r1, r2, r3} - stmia r0 !, {r1, r2, r3} - stmia r0 !, {r1, r2, r3} - bx lr -} - -asm void MI_Zero48B (register void * pDest) { - mov r1, #0 - mov r2, #0 - mov r3, #0 - stmia r0 !, {r1, r2, r3} - stmia r0 !, {r1, r2, r3} - stmia r0 !, {r1, r2, r3} - stmia r0 !, {r1, r2, r3} - bx lr -} - -asm void MI_Zero64B (register void * pDest) { - mov r1, #0 - mov r2, #0 - stmia r0 !, {r1, r2} - mov r3, #0 - stmia r0 !, {r1, r2} - stmia r0 !, {r1, r2, r3} - stmia r0 !, {r1, r2, r3} - stmia r0 !, {r1, r2, r3} - stmia r0 !, {r1, r2, r3} - bx lr -} - -#include diff --git a/subprojects/NitroSDK/libraries/mi/src/mi_swap.c b/subprojects/NitroSDK/libraries/mi/src/mi_swap.c deleted file mode 100644 index 357b8f04c9..0000000000 --- a/subprojects/NitroSDK/libraries/mi/src/mi_swap.c +++ /dev/null @@ -1,15 +0,0 @@ -#include -#include -#include - -asm u32 MI_SwapWord (register u32 setData, register vu32 * destp) { - swp r0, r0, [r1] - bx lr -} - -asm u8 MI_SwapByte (register u32 setData, register vu8 * destp) { - swpb r0, r0, [r1] - bx lr -} - -#include diff --git a/subprojects/NitroSDK/libraries/mi/src/mi_uncompress.c b/subprojects/NitroSDK/libraries/mi/src/mi_uncompress.c deleted file mode 100644 index 01b5e2424b..0000000000 --- a/subprojects/NitroSDK/libraries/mi/src/mi_uncompress.c +++ /dev/null @@ -1,483 +0,0 @@ -#include -#include -#include - -asm void MI_UnpackBits (register const void * srcp, register void * destp, register MIUnpackBitsParam * paramp) { - stmfd sp !, {r4 - r11, lr} - sub sp, sp, #4 - ldrh r7, [r2, #0] - @00: ldrb r6, [r2, #2] - rsb r10, r6, #8 - mov r14, #0 - ldr r11, [r2, #4] - mov r8, r11, lsr #31 - ldr r11, [r2, #4] - mov r11, r11, lsl #1 - mov r11, r11, lsr #1 - str r11, [sp, #0] - ldrb r2, [r2, #3] - mov r3, #0 - @01: subs r7, r7, #1 - blt @06 - mov r11, #0xff - mov r5, r11, asr r10 - ldrb r9, [r0], #1 - mov r4, #0 - @02: cmp r4, #8 - bge @01 - and r11, r9, r5 - movs r12, r11, lsr r4 - cmpeq r8, #0 - beq @04 - @03: ldr r11, [sp, #0] - add r12, r12, r11 - @04: orr r14, r14, r12, lsl r3 - add r3, r3, r2 - cmp r3, #0x20 - blt @05 - str r14, [r1], #4 - mov r14, #0 - mov r3, #0 - @05: mov r5, r5, lsl r6 - add r4, r4, r6 - b @02 - @06: add sp, sp, #4 - ldmfd sp !, {r4 - r11, lr} - bx lr -} - -asm void MI_UncompressLZ8 (register const void * srcp, register void * destp) { - stmfd sp !, {r4 - r7, lr} - ldr r5, [r0], #4 - mov r2, r5, lsr #8 - mov r7, #0 - tst r5, #0x0F - bne @movne1 - b @movne2 - @movne1: - mov r7, #1 - @movne2: - @21: cmp r2, #0 - ble @26 - ldrb r14, [r0], #1 - mov r4, #8 - @22: subs r4, r4, #1 - blt @21 - tst r14, #0x80 - bne @23 - ldrb r6, [r0], #1 - swpb r6, r6, [r1] - add r1, r1, #1 - sub r2, r2, #1 - b @25 - @23: ldrb r5, [r0, #0] - cmp r7, #0 - beq @moveq3 - b @moveq4 - @moveq3: - mov r6, #3 - @moveq4: - beq @23_2 - tst r5, #0xE0 - bne @movne5 - b @movne6 - @movne5: - mov r6, #1 - @movne6: - bne @23_2 - add r0, r0, #1 - and r6, r5, #0xf - mov r6, r6, lsl #4 - tst r5, #0x10 - beq @23_1 - mov r6, r6, lsl #8 - ldrb r5, [r0], #1 - add r6, r6, r5, lsl #4 - add r6, r6, #0x100 - @23_1: - add r6, r6, #0x11 - ldrb r5, [r0, #0] - @23_2: - add r3, r6, r5, asr #4 - add r0, r0, #1 - and r5, r5, #0xf - mov r12, r5, lsl #8 - ldrb r6, [r0], #1 - orr r5, r6, r12 - add r12, r5, #1 - sub r2, r2, r3 - @24: ldrb r5, [r1, -r12] - swpb r5, r5, [r1] - add r1, r1, #1 - subs r3, r3, #1 - bgt @24 - @25: cmp r2, #0 - bgt @movgt7 - b @movgt8 - @movgt7: - mov r14, r14, lsl #1 - @movgt8: - bgt @22 - b @21 - @26: ldmfd sp !, {r4 - r7, lr} - bx lr -} - -asm void MI_UncompressLZ16 (register const void * srcp, register void * destp) { - stmfd sp !, {r4 - r11, lr} - mov r3, #0 - ldr r8, [r0], #4 - mov r10, r8, lsr #8 - mov r2, #0 - mov r11, #0 - tst r8, #0x0F - bne @movne1 - b @movne2 - @movne1: - mov r11, #1 - @movne2: - @31: cmp r10, #0 - ble @36 - ldrb r6, [r0], #1 - mov r7, #8 - @32: subs r7, r7, #1 - blt @31 - tst r6, #0x80 - bne @33 - ldrb r9, [r0], #1 - orr r3, r3, r9, lsl r2 - sub r10, r10, #1 - eors r2, r2, #8 -#ifndef CW_BUG_FOR_LDRH_AND_STRH - beq @streqh3 - b @streqh4 - @streqh3: - strh r3, [r1], #2 - @streqh4: -#else - dcd 0x00c130b2 -#endif - beq @moveq5 - b @moveq6 - @moveq5: - mov r3, #0 - @moveq6: - b @35 - @33: ldrb r9, [r0, #0] - cmp r11, #0 - beq @moveq7 - b @moveq8 - @moveq7: - mov r8, #3 - @moveq8: - beq @33_2 - tst r9, #0xE0 - bne @movne9 - b @movne10 - @movne9: - mov r8, #1 - @movne10: - bne @33_2 - add r0, r0, #1 - and r8, r9, #0xf - mov r8, r8, lsl #4 - tst r9, #0x10 - beq @33_1 - mov r8, r8, lsl #8 - ldrb r9, [r0], #1 - add r8, r8, r9, lsl #4 - add r8, r8, #0x100 - @33_1: - add r8, r8, #0x11 - ldrb r9, [r0, #0] - @33_2: - add r5, r8, r9, asr #4 - ldrb r9, [r0], #1 - and r8, r9, #0xf - mov r4, r8, lsl #8 - ldrb r9, [r0], #1 - orr r8, r9, r4 - add r4, r8, #1 - rsb r8, r2, #8 - and r9, r4, #1 - eor r14, r8, r9, lsl #3 - sub r10, r10, r5 - @34: eor r14, r14, #8 - rsb r8, r2, #8 - add r8, r4, r8, lsr #3 - mov r8, r8, lsr #1 - mov r8, r8, lsl #1 -#ifndef CW_BUG_FOR_LDRH_AND_STRH - ldrh r9, [r1, -r8] -#else - dcd 0xe11190b8 -#endif - mov r8, #0xff - and r8, r9, r8, lsl r14 - mov r8, r8, asr r14 - orr r3, r3, r8, lsl r2 - eors r2, r2, #8 -#ifndef CW_BUG_FOR_LDRH_AND_STRH - beq @streqh11 - b @streqh12 - @streqh11: - strh r3, [r1], #2 - @streqh12: -#else - dcd 0x00c130b2 -#endif - beq @moveq13 - b @moveq14 - @moveq13: - mov r3, #0 - @moveq14: - subs r5, r5, #1 - bgt @34 - @35: cmp r10, #0 - bgt @movgt15 - b @movgt16 - @movgt15: - mov r6, r6, lsl #1 - @movgt16: - bgt @32 - b @31 - @36: ldmfd sp !, {r4 - r11, lr} - bx lr -} - -asm void MI_UncompressHuffman (register const void * srcp, register void * destp) { - stmfd sp !, {r4 - r11, lr} - sub sp, sp, #4 - add r2, r0, #4 - add r7, r2, #1 - ldrb r10, [r0, #0] - and r4, r10, #0xf - mov r3, #0 - mov r14, #0 - and r10, r4, #7 - add r11, r10, #4 - str r11, [sp, #0] - ldr r10, [r0, #0] - mov r12, r10, lsr #8 - ldrb r10, [r2, #0] - add r10, r10, #1 - add r0, r2, r10, lsl #1 - mov r2, r7 - @11: cmp r12, #0 - ble @14 - mov r8, #32 - ldr r5, [r0], #4 - @12: subs r8, r8, #1 - blt @11 - mov r10, #1 - and r9, r10, r5, lsr #31 - ldrb r6, [r2, #0] - mov r6, r6, lsl r9 - mov r10, r2, lsr #1 - mov r10, r10, lsl #1 - ldrb r11, [r2, #0] - and r11, r11, #0x3f - add r11, r11, #1 - add r10, r10, r11, lsl #1 - add r2, r10, r9 - tst r6, #0x80 - beq @13 - mov r3, r3, lsr r4 - ldrb r10, [r2, #0] - rsb r11, r4, #32 - orr r3, r3, r10, lsl r11 - mov r2, r7 - add r14, r14, #1 - ldr r11, [sp, #0] - cmp r14, r11 - beq @streq1 - b @streq2 - @streq1: - str r3, [r1], #4 - @streq2: - beq @subeq3 - b @subeq4 - @subeq3: - sub r12, r12, #4 - @subeq4: - beq @moveq5 - b @moveq6 - @moveq5: - mov r14, #0 - @moveq6: - @13: cmp r12, #0 - bgt @movgt7 - b @movgt8 - @movgt7: - mov r5, r5, lsl #1 - @movgt8: - bgt @12 - b @11 - @14: add sp, sp, #4 - ldmfd sp !, {r4 - r11, lr} - bx lr -} - -asm void MI_UncompressRL8 (register const void * srcp, register void * destp) { - stmfd sp !, {r4, r5, r7} - ldmia r0 !, {r3} - mov r7, r3, lsr #8 - @41: cmp r7, #0 - ble @45 - ldrb r4, [r0], #1 - ands r2, r4, #0x7f - tst r4, #0x80 - bne @43 - add r2, r2, #1 - sub r7, r7, r2 - @42: ldrb r3, [r0], #1 - swpb r3, r3, [r1] - add r1, r1, #1 - subs r2, r2, #1 - bgt @42 - b @41 - @43: add r2, r2, #3 - sub r7, r7, r2 - ldrb r5, [r0], #1 - @44: swpb r4, r5, [r1] - add r1, r1, #1 - subs r2, r2, #1 - bgt @44 - b @41 - @45: ldmfd sp !, {r4, r5, r7} - bx lr -} - -#include - -asm void MI_UncompressRL16 (register const void * srcp, register void * destp) { - push {r4 - r7} - sub sp, #0xc - mov r7, #0 - ldmia r0 !, {r3} - lsr r5, r3, #8 - mov r4, #0 - @51: cmp r5, #0 - ble @57 - ldrb r3, [r0, #0] - str r3, [sp, #4] - add r0, #1 - ldr r3, [sp, #4] - lsl r2, r3, #25 - lsr r2, r2, #25 - ldr r6, [sp, #4] - lsr r3, r6, #8 - bcs @54 - add r2, #1 - sub r5, r5, r2 - @52: ldrb r6, [r0, #0] - lsl r6, r4 - orr r7, r6 - add r0, #1 - mov r3, #8 - eor r4, r3 - bne @53 - strh r7, [r1, #0] - add r1, #2 - mov r7, #0 - @53: sub r2, r2, #1 - bgt @52 - b @51 - @54: add r2, #3 - sub r5, r5, r2 - ldrb r6, [r0, #0] - str r6, [sp, #8] - add r0, #1 - @55: ldr r6, [sp, #8] - lsl r6, r4 - orr r7, r6 - mov r3, #8 - eor r4, r3 - bne @56 - strh r7, [r1, #0] - add r1, #2 - mov r7, #0 - @56: sub r2, r2, #1 - bgt @55 - b @51 - @57: add sp, #0xc - pop {r4 - r7} - bx lr -} - -#include - -asm void MI_UnfilterDiff8 (register const void * srcp, register void * destp) { - stmfd sp !, {r4} - ldmia r0, {r2} - mov r3, #0 - and r4, r2, #0xF - mov r2, r2, lsr #8 - cmp r4, #1 - bne @63 - @61 - add r0, r0, #3 - sub r1, r1, #1 - @62 - ldrb r4, [r0, #1] ! - subs r2, r2, #1 - add r3, r3, r4 - strb r3, [r1, #1] ! - bgt @62 - b @65 - @63 - add r0, r0, #2 - sub r1, r1, #2 - @64 - ldrh r4, [r0, #2] ! - subs r2, r2, #2 - add r3, r3, r4 - strh r3, [r1, #2] ! - bgt @64 - @65 - ldmfd sp !, {r4} - bx lr -} - -asm void MI_UnfilterDiff16 (register const void * srcp, register void * destp) { - stmfd sp !, {r4, r5} - ldmia r0, {r2} - mov r3, #0 - and r4, r2, #0xF - mov r2, r2, lsr #8 - cmp r4, #1 - bne @63 - @61 - add r0, r0, #2 - sub r1, r1, #2 - @62 - ldrh r4, [r0, #2] ! - sub r2, r2, #2 - add r3, r3, r4 - and r5, r3, #0xFF - add r3, r3, r4, lsr #8 - add r5, r5, r3, lsl #8 - strh r5, [r1, #2] ! - cmp r2, #1 - bgt @62 - bne @65 - ldrh r4, [r0, #2] ! - add r3, r3, r4 - and r5, r3, #0xFF - strh r5, [r1, #2] ! - b @65 - @63 - add r0, r0, #2 - sub r1, r1, #2 - @64 - ldrh r4, [r0, #2] ! - subs r2, r2, #2 - add r3, r3, r4 - strh r3, [r1, #2] ! - bgt @64 - @65 - ldmfd sp !, {r4, r5} - bx lr -} - -#include diff --git a/subprojects/NitroSDK/libraries/mi/src/mi_wram.c b/subprojects/NitroSDK/libraries/mi/src/mi_wram.c deleted file mode 100644 index 26c0564fc7..0000000000 --- a/subprojects/NitroSDK/libraries/mi/src/mi_wram.c +++ /dev/null @@ -1,34 +0,0 @@ -#include -#include - -#define MIi_WRAM_ASSERT(x) \ - SDK_ASSERT( \ - (x) == MI_WRAM_ARM9_ALL || \ - (x) == MI_WRAM_1616_1 || \ - (x) == MI_WRAM_1616_2 || \ - (x) == MI_WRAM_ARM7_ALL \ - ) - -#ifdef SDK_ARM9 - -#ifdef SDK_CW_WARNOFF_SAFESTRB -#include -#endif -void MI_SetWramBank (MIWram cnt) { - MIi_WRAM_ASSERT(cnt); - reg_GX_VRAMCNT_WRAM = (u8)cnt; -} - -#ifdef SDK_CW_WARNOFF_SAFESTRB -#include -#endif - -#endif - -MIWram MI_GetWramBank (void) { -#ifdef SDK_ARM9 - return (MIWram)(reg_GX_VRAMCNT_WRAM & MI_WRAM_ARM9_ALL); -#else - return (MIWram)(reg_GX_WVRAMSTAT & MI_WRAM_ARM9_ALL); -#endif -} diff --git a/subprojects/NitroSDK/libraries/os/meson.build b/subprojects/NitroSDK/libraries/os/meson.build deleted file mode 100644 index 3e1cb05554..0000000000 --- a/subprojects/NitroSDK/libraries/os/meson.build +++ /dev/null @@ -1,40 +0,0 @@ -libos_srcs = files( - 'src/os_irqHandler.c', - 'src/os_irqTable.c', - 'src/os_interrupt.c', - 'src/os_spinLock.c', - 'src/os_printf.c', - 'src/os_thread.c', - 'src/os_context.c', - 'src/os_emulator.c', - 'src/os_message.c', - 'src/os_mutex.c', - 'src/os_cache.c', - 'src/os_init.c', - 'src/os_arena.c', - 'src/os_alloc.c', - 'src/os_tcm.c', - 'src/os_protectionUnit.c', - 'src/os_protectionRegion.c', - 'src/os_exception.c', - 'src/os_timer.c', - 'src/os_tick.c', - 'src/os_alarm.c', - 'src/os_valarm.c', - 'src/os_system.c', - 'src/os_reset.c', - 'src/os_ownerInfo.c', - 'src/os_vramExclusive.c', - 'src/os_entropy.c', - 'src/os_terminate_proc.c' -) - -libos = static_library('os', - sources: libos_srcs, - c_args: [c_args, sdk_args], - nasm_args: asm_args, - include_directories: public_includes, - pic: false -) - -nitrosdk_libs += libos diff --git a/subprojects/NitroSDK/libraries/os/src/os_alarm.c b/subprojects/NitroSDK/libraries/os/src/os_alarm.c deleted file mode 100644 index a2ca58997d..0000000000 --- a/subprojects/NitroSDK/libraries/os/src/os_alarm.c +++ /dev/null @@ -1,360 +0,0 @@ -#include - -#define OSi_ALARM_TIMERCONTROL (REG_OS_TM0CNT_H_E_MASK | REG_OS_TM0CNT_H_I_MASK | OS_TIMER_PRESCALER_64) - -#define OSi_ALARM_TIMER OS_TIMER_1 - -#define OSi_ALARM_IE_TIMER OS_IE_TIMER1 - -static u16 OSi_UseAlarm = FALSE; - -static struct OSiAlarmQueue OSi_AlarmQueue; - -u16 OSi_IsTimerReserved(int timerNum); -void OSi_SetTimerReserved(int timerNum); -void OSi_UnsetTimerReserved(int timerNum); - -static void OSi_SetTimer(OSAlarm *alarm); -static void OSi_InsertAlarm(OSAlarm *alarm, OSTick fire); - -static void OSi_AlarmHandler(void *arg); -static void OSi_ArrangeTimer(void); - -static void OSi_SetTimer (OSAlarm *alarm) -{ - s64 delta; - OSTick tick = OS_GetTick(); - u16 timerCount; - - OS_SetTimerControl(OSi_ALARM_TIMER, 0); - - delta = (s64)(alarm->fire - tick); - - OSi_EnterTimerCallback(OSi_ALARM_TIMER, OSi_AlarmHandler, NULL); - - if (delta < 0) { - timerCount = (u16) ~1; - } else if (delta < 0x10000) { - timerCount = (u16)(~delta); - } else { - timerCount = 0; - } - - OS_SetTimerCount((OSTimer)OSi_ALARM_TIMER, timerCount); - OS_SetTimerControl(OSi_ALARM_TIMER, (u16)OSi_ALARM_TIMERCONTROL); - - (void)OS_EnableIrqMask(OSi_ALARM_IE_TIMER); -} - -void OS_InitAlarm (void) -{ - if (!OSi_UseAlarm) { - OSi_UseAlarm = TRUE; - - SDK_ASSERTMSG(OS_IsTickAvailable(), "OS_InitAlarm: alarm system needs of tick system."); - - SDK_ASSERT(!OSi_IsTimerReserved(OSi_ALARM_TIMER)); - OSi_SetTimerReserved(OSi_ALARM_TIMER); - - OSi_AlarmQueue.head = NULL; - OSi_AlarmQueue.tail = NULL; - - (void)OS_DisableIrqMask(OSi_ALARM_IE_TIMER); - } -} - -void OS_EndAlarm (void) -{ - OSIntrMode enabled; - - SDK_ASSERT(OSi_UseAlarm); - enabled = OS_DisableInterrupts(); - - if (OSi_UseAlarm) { - SDK_ASSERTMSG(!OSi_AlarmQueue.head, - "OS_EndAlarm: Cannot end alarm system while using alarm."); - - SDK_ASSERT(OSi_IsTimerReserved(OSi_ALARM_TIMER)); - OSi_UnsetTimerReserved(OSi_ALARM_TIMER); - - OSi_UseAlarm = FALSE; - } - - (void)OS_RestoreInterrupts(enabled); -} - -BOOL OS_IsAlarmAvailable (void) -{ - return OSi_UseAlarm; -} - -void OS_CreateAlarm (OSAlarm *alarm) -{ - SDK_ASSERT(OSi_UseAlarm); - SDK_ASSERT(alarm); - - alarm->handler = 0; - alarm->tag = 0; -} - -static void OSi_InsertAlarm (OSAlarm *alarm, OSTick fire) -{ - OSAlarm *prev; - OSAlarm *next; - - if (alarm->period > 0) { - OSTick tick = OS_GetTick(); - - fire = alarm->start; - if (alarm->start < tick) { - fire += alarm->period * ((tick - alarm->start) / alarm->period + 1); - } - } - - alarm->fire = fire; - - for (next = OSi_AlarmQueue.head; next; next = next->next) { - - if ((s64)(fire - next->fire) >= 0) { - continue; - } - - alarm->prev = next->prev; - next->prev = alarm; - alarm->next = next; - prev = alarm->prev; - if (prev) { - prev->next = alarm; - } else { - OSi_AlarmQueue.head = alarm; - OSi_SetTimer(alarm); - } - - return; - } - - alarm->next = 0; - prev = OSi_AlarmQueue.tail; - OSi_AlarmQueue.tail = alarm; - alarm->prev = prev; - if (prev) { - prev->next = alarm; - } else { - OSi_AlarmQueue.head = OSi_AlarmQueue.tail = alarm; - OSi_SetTimer(alarm); - } -} - -void OS_SetAlarm (OSAlarm *alarm, OSTick tick, OSAlarmHandler handler, void *arg) -{ - OSIntrMode enabled; - - SDK_ASSERT(OSi_UseAlarm); - SDK_ASSERTMSG(handler, "OS_SetAlarm: handler must not be NULL."); - if (!alarm || alarm->handler) { -#ifndef SDK_FINALROM - OS_Panic("alarm could be already used."); -#else - OS_Panic(""); -#endif - } - - enabled = OS_DisableInterrupts(); - - alarm->period = 0; - - alarm->handler = handler; - alarm->arg = arg; - - OSi_InsertAlarm(alarm, OS_GetTick() + tick); - - (void)OS_RestoreInterrupts(enabled); -} - -void OS_SetPeriodicAlarm (OSAlarm *alarm, OSTick start, OSTick period, OSAlarmHandler handler, - void *arg) -{ - u32 enabled; - - SDK_ASSERT(OSi_UseAlarm); - SDK_ASSERTMSG(handler, "OS_SetPeriodicAlarm: handler must not be NULL\n"); - SDK_ASSERTMSG(period > 0, "OS_SetPeriodicAlarm: bad period specified."); - if (!alarm || alarm->handler) { -#ifndef SDK_FINALROM - OS_Panic("alarm could be already used."); -#else - OS_Panic(""); -#endif - } - - enabled = OS_DisableInterrupts(); - - alarm->period = period; - alarm->start = start; - - alarm->handler = handler; - alarm->arg = arg; - - OSi_InsertAlarm(alarm, 0); - - (void)OS_RestoreInterrupts(enabled); -} - -void OS_CancelAlarm (OSAlarm *alarm) -{ - OSAlarm *next; - u32 enabled; - - SDK_ASSERT(OSi_UseAlarm); - SDK_ASSERT(alarm); - - enabled = OS_DisableInterrupts(); - - if (alarm->handler == NULL) { - (void)OS_RestoreInterrupts(enabled); - return; - } - - next = alarm->next; - if (next == NULL) { - OSi_AlarmQueue.tail = alarm->prev; - } else { - next->prev = alarm->prev; - } - - if (alarm->prev) { - alarm->prev->next = next; - } else { - OSi_AlarmQueue.head = next; - if (next) { - OSi_SetTimer(next); - } - } - - alarm->handler = NULL; - alarm->period = 0; - - (void)OS_RestoreInterrupts(enabled); -} - -#include -asm void OSi_AlarmHandler ( void *arg ) -{ - stmfd sp !, {r0, lr} - bl OSi_ArrangeTimer - ldmfd sp !, {r0, lr} - bx lr -} -#include - -static void OSi_ArrangeTimer (void) -{ - OSTick tick; - OSAlarm *alarm; - OSAlarm *next; - OSAlarmHandler handler; - - OS_SetTimerControl(OSi_ALARM_TIMER, 0); - - (void)OS_DisableIrqMask(OSi_ALARM_IE_TIMER); - - OS_SetIrqCheckFlag(OSi_ALARM_IE_TIMER); - - tick = OS_GetTick(); - alarm = OSi_AlarmQueue.head; - - if (alarm == NULL) { - return; - } - - if (tick < alarm->fire) { - OSi_SetTimer(alarm); - return; - } - - next = alarm->next; - OSi_AlarmQueue.head = next; - - if (next == NULL) { - OSi_AlarmQueue.tail = NULL; - } else { - next->prev = NULL; - } - - handler = alarm->handler; - - if (alarm->period == 0) { - alarm->handler = NULL; - } - - if (handler) { - (handler) (alarm->arg); - } - - if (alarm->period > 0) { - alarm->handler = handler; - OSi_InsertAlarm(alarm, 0); - } - - if (OSi_AlarmQueue.head) { - OSi_SetTimer(OSi_AlarmQueue.head); - } -} - -void OS_SetAlarmTag (OSAlarm *alarm, u32 tag) -{ - SDK_ASSERT(OSi_UseAlarm); - SDK_ASSERT(alarm); - SDK_ASSERTMSG(tag > 0, "OS_SetAlarmTag: Tag must be >0."); - - alarm->tag = tag; -} - -void OS_CancelAlarms (u32 tag) -{ - u32 enabled; - OSAlarm *alarm; - OSAlarm *next; - - SDK_ASSERT(OSi_UseAlarm); - SDK_ASSERTMSG(tag > 0, "OSCancelAlarms: Tag must be >0."); - - if (tag == 0) { - return; - } - - enabled = OS_DisableInterrupts(); - - for (alarm = OSi_AlarmQueue.head, next = alarm ? alarm->next : NULL; - alarm; alarm = next, next = alarm ? alarm->next : NULL) { - if (alarm->tag == tag) { - - OS_CancelAlarm(alarm); - } - } - - (void)OS_RestoreInterrupts(enabled); -} - -void OS_CancelAllAlarms (void) -{ - u32 enabled; - OSAlarm *alarm; - OSAlarm *next; - - SDK_ASSERT(OSi_UseAlarm); - enabled = OS_DisableInterrupts(); - - for (alarm = OSi_AlarmQueue.head, next = alarm ? alarm->next : NULL; - alarm; alarm = next, next = alarm ? alarm->next : NULL) { - - OS_CancelAlarm(alarm); - } - - (void)OS_RestoreInterrupts(enabled); -} - -struct OSiAlarmQueue *OSi_GetAlarmQueue (void) -{ - return &OSi_AlarmQueue; -} \ No newline at end of file diff --git a/subprojects/NitroSDK/libraries/os/src/os_alloc.c b/subprojects/NitroSDK/libraries/os/src/os_alloc.c deleted file mode 100644 index b4b0a3d7d0..0000000000 --- a/subprojects/NitroSDK/libraries/os/src/os_alloc.c +++ /dev/null @@ -1,1079 +0,0 @@ -#include -#include - -#define OS_ERR_ALLOCFROMHEAP_NOHEAP "OS_AllocFromHeap(): heap is not initialized." -#define OS_ERR_ALLOCFROMHEAP_INVSIZE "OS_AllocFromHeap(): invalid size." -#define OS_ERR_ALLOCFROMHEAP_INVHEAP "OS_AllocFromHeap(): invalid heap handle." -#define OS_ERR_ALLOCFROMHEAP_BROKENHEAP "OS_AllocFromHeap(): heap is broken." -#define OS_ERR_ALLOCFIXED_NOHEAP "OS_AllocFixed(): heap is not initialized." -#define OS_ERR_ALLOCFIXED_INVRANGE "OS_AllocFixed(): invalid range." -#define OS_ERR_FREETOHEAP_NOHEAP "OS_FreeToHeap(): heap is not initialized." -#define OS_ERR_FREETOHEAP_INVPTR "OS_FreeToHeap(): invalid pointer." -#define OS_ERR_FREETOHEAP_INVHEAP "OS_FreeToHeap(): invalid heap handle." -#define OS_ERR_SETCURRENTHEAP_NOHEAP "OS_SetCurrentHeap(): heap is not initialized." -#define OS_ERR_SETCURRENTHEAP_INVHEAP "OS_SetCurrentHeap(): invalid heap handle." -#define OS_ERR_INITALLOC_INVNUMHEAPS "OS_InitAlloc(): invalid number of heaps." -#define OS_ERR_INITALLOC_INVRANGE "OS_InitAlloc(): invalid range." -#define OS_ERR_INITALLOC_INSRANGE "OS_InitAlloc(): too small range." -#define OS_ERR_CLEARALLOC_INVID "OS_ClearAlloc(): invalid arena id." -#define OS_ERR_CREATEHEAP_NOHEAP "OS_CreateHeap(): heap is not initialized." -#define OS_ERR_CREATEHEAP_INVRANGE "OS_CreateHeap(): invalid range." -#define OS_ERR_CREATEHEAP_INSRANGE "OS_CreateHeap(): too small range." -#define OS_ERR_DESTROYHEAP_NOHEAP "OS_DestroyHeap(): heap is not initialized." -#define OS_ERR_DESTROYHEAP_INVHEAP "OS_DestroyHeap(): invalid heap handle." -#define OS_ERR_ADDTOHEAP_NOHEAP "OS_AddToHeap(): heap is not initialized." -#define OS_ERR_ADDTOHEAP_INVHEAP "OS_AddToHeap(): invalid heap handle." -#define OS_ERR_ADDTOHEAP_INVRANGE "OS_AddToHeap(): invalid range." -#define OS_ERR_ADDTOHEAP_INSRANGE "OS_AddToHeap(): too small range." -#define OS_ERR_REFERENT_NOHEAP "OS_ReferentSize(): heap is not initialized." -#define OS_ERR_REFERENT_INVPTR "OS_ReferentSize(): invalid pointer." -#define OS_ERR_DUMPHEAP_NOHEAP "OS_DumpHeap(): heap is not initialized." -#define OS_ERR_DUMPHEAP_INVHEAP "OS_DumpHeap(): invalid heap handle." -#define OS_ERR_DUMPHEAP_BROKENHEAP "OS_DumpHeap(): heap is broken." -#define OS_ERR_ALLOCFROMHEAP_INVID "OS_AllocFromHeap(): illegal arena id." -#define OS_ERR_ALLOCFROMHEAP_NOINFO "OS_AllocFromHeap(): heap not initialized." -#define OS_ERR_ALLOCFIXED_INVID "OS_AllocFixed(): illegal arena id." -#define OS_ERR_ALLOCFIXED_NOINFO "OS_AllocFixed(): heap not initialized." -#define OS_ERR_FREETOHEAP_INVID "OS_FreeToHeap(): illegal arena id." -#define OS_ERR_FREETOHEAP_NOINFO "OS_FreeToHeap(): heap not initialized." -#define OS_ERR_SETCURRENTHEAP_INVID "OS_SetCurrentHeap(): illegal arena id." -#define OS_ERR_SETCURRENTHEAP_NOINFO "OS_SetCurrentHeap(): heap not initialized." -#define OS_ERR_INITALLOC_INVID "OS_SetInitAlloc(): illegal arena id." -#define OS_ERR_INITALLOC_INVINFO "OS_SetInitAlloc(): heap already initialized." -#define OS_ERR_CREATEHEAP_INVID "OS_CreateHeap(): illegal arena id." -#define OS_ERR_CREATEHEAP_NOINFO "OS_CreateHeap(): heap not initialized." -#define OS_ERR_DESTROYHEAP_INVID "OS_DestroyHeap(): illegal arena id." -#define OS_ERR_DESTROYHEAP_NOINFO "OS_DestroyHeap(): heap not initialized." -#define OS_ERR_ADDTOHEAP_INVID "OS_AddToHeap(): illegal arena id." -#define OS_ERR_ADDTOHEAP_NOINFO "OS_AddToHeap(): heap not initialized." -#define OS_ERR_CHECKHEAP_INVID "OS_CheckHeap(): illegal arena id." -#define OS_ERR_CHECKHEAP_NOINFO "OS_CheckHeap(): heap not initialized." -#define OS_ERR_REFERENTSIZE_INVID "OS_ReferentSize(): illegal arena id." -#define OS_ERR_REFERENTSIZE_NOINFO "OS_ReferrentSize(): heap not initialized." -#define OS_ERR_DUMPHEAP_INVID "OS_DumpHeap(): illegal arena id." -#define OS_ERR_DUMPHEAP_NOINFO "OS_DumpHeap(): heap not initialized." -#define OS_ERR_VISITALLOCATED_INVID "OS_VisitAllocated(): illegal arena id." -#define OS_ERR_VISITALLOCATED_NOINFO "OS_VisitAllocated(): heap not initialized." - -#define OFFSET(n, a) (((u32) (n)) & ((a) - 1)) -#define TRUNC(n, a) (((u32) (n)) & ~((a) - 1)) -#define ROUND(n, a) (((u32) (n) + (a) - 1) & ~((a) - 1)) - -#define ALIGNMENT 32 -#define MINOBJSIZE (HEADERSIZE + ALIGNMENT) -#define HEADERSIZE ROUND(sizeof(Cell), ALIGNMENT) - -#define InRange(targ, a, b) \ - ((u32)(a) <= (u32)(targ) && (u32)(targ) < (u32)(b)) - -#define RangeOverlap(aStart, aEnd, bStart, bEnd) \ - ((u32)(bStart) <= (u32)(aStart) && (u32)(aStart) < (u32)(bEnd) || \ - (u32)(bStart) < (u32)(aEnd) && (u32)(aEnd) <= (u32)(bEnd)) - -#define RangeSubset(aStart, aEnd, bStart, bEnd) \ - ((u32)(bStart) <= (u32)(aStart) && (u32)(aEnd) <= (u32)(bEnd)) - -typedef struct Cell Cell; -typedef struct HeapDesc HeapDesc; - -struct Cell { - Cell *prev; - Cell *next; - long size; -#ifdef SDK_DEBUG - HeapDesc *hd; - long requested; -#endif -}; - -struct HeapDesc { - long size; - Cell *free; - Cell *allocated; -#ifdef SDK_DEBUG - u32 paddingBytes; - u32 headerBytes; - u32 payloadBytes; -#endif -}; - -typedef struct { - volatile OSHeapHandle currentHeap; - int numHeaps; - void *arenaStart; - void *arenaEnd; - HeapDesc *heapArray; -} OSHeapInfo; - -void *OSiHeapInfo[OS_ARENA_MAX] = { - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL -}; - -static Cell *DLAddFront (Cell *list, Cell *cell) -{ - cell->next = list; - cell->prev = NULL; - if (list) { - list->prev = cell; - } - return cell; -} - -static Cell *DLLookup (Cell *list, Cell *cell) -{ - for (; list; list = list->next) { - if (list == cell) { - return list; - } - } - return NULL; -} - -static Cell *DLExtract (Cell *list, Cell *cell) -{ - if (cell->next) { - cell->next->prev = cell->prev; - } - - if (cell->prev == NULL) { - return cell->next; - } else { - cell->prev->next = cell->next; - return list; - } -} - -static Cell *DLInsert (Cell *list, Cell *cell) -{ - Cell *prev; - Cell *next; - - for (next = list, prev = NULL; next; prev = next, next = next->next) { - if (cell <= next) { - break; - } - } - - cell->next = next; - cell->prev = prev; - if (next) { - next->prev = cell; - if ((char *)cell + cell->size == (char *)next) { - - cell->size += next->size; - cell->next = next = next->next; - if (next) { - next->prev = cell; - } - } - } - if (prev) { - prev->next = cell; - if ((char *)prev + prev->size == (char *)cell) { - - prev->size += cell->size; - prev->next = next; - if (next) { - next->prev = prev; - } - } - return list; - } else { - return cell; - } -} - -static BOOL DLOverlap (Cell *list, void *start, void *end) -{ - Cell *cell; - - for (cell = list; cell; cell = cell->next) { - if (RangeOverlap(cell, (char *)cell + cell->size, start, end)) { - return TRUE; - } - } - return FALSE; -} - -static long DLSize (Cell *list) -{ - Cell *cell; - long size = 0; - - for (cell = list; cell; cell = cell->next) { - size += cell->size; - } - return size; -} - -void *OS_AllocFromHeap (OSArenaId id, OSHeapHandle heap, u32 size) -{ - OSHeapInfo *heapInfo; - HeapDesc *hd; - Cell *cell; - Cell *newCell; - long leftoverSize; - OSIntrMode enabled = OS_DisableInterrupts(); - -#ifdef SDK_DEBUG - long requested = (long)size; -#endif - - SDK_ASSERTMSG(id < OS_ARENA_MAX, OS_ERR_ALLOCFROMHEAP_INVID); - SDK_ASSERTMSG(OSiHeapInfo[id], OS_ERR_ALLOCFROMHEAP_NOINFO); - heapInfo = OSiHeapInfo[id]; - - if (!heapInfo) { - (void)OS_RestoreInterrupts(enabled); - return NULL; - } - - if (heap < 0) { - heap = heapInfo->currentHeap; - } - - SDK_ASSERTMSG(heapInfo->heapArray, OS_ERR_ALLOCFROMHEAP_NOHEAP); - SDK_ASSERTMSG(0 < ((long)size), OS_ERR_ALLOCFROMHEAP_INVSIZE); - SDK_ASSERTMSG(0 <= heap && heap < heapInfo->numHeaps, OS_ERR_ALLOCFROMHEAP_INVHEAP); - SDK_ASSERTMSG(0 <= heapInfo->heapArray[heap].size, OS_ERR_ALLOCFROMHEAP_INVHEAP); - - hd = &heapInfo->heapArray[heap]; - - size += HEADERSIZE; - size = ROUND(size, ALIGNMENT); - - for (cell = hd->free; cell != NULL; cell = cell->next) { - if ((long)size <= cell->size) { - break; - } - } - - if (cell == NULL) { -#ifdef SDK_DEBUG - OS_Printf("OS_AllocFromHeap: Warning- failed to allocate %d bytes\n", size); -#endif - (void)OS_RestoreInterrupts(enabled); - return NULL; - } - - SDK_ASSERTMSG(OFFSET(cell, ALIGNMENT) == 0, OS_ERR_ALLOCFROMHEAP_BROKENHEAP); - SDK_ASSERTMSG(cell->hd == NULL, OS_ERR_ALLOCFROMHEAP_BROKENHEAP); - - leftoverSize = cell->size - (long)size; - if (leftoverSize < MINOBJSIZE) { - - hd->free = DLExtract(hd->free, cell); - } else { - cell->size = (long)size; - newCell = (Cell *) ((char *)cell + size); - newCell->size = leftoverSize; -#ifdef SDK_DEBUG - newCell->hd = NULL; -#endif - newCell->prev = cell->prev; - newCell->next = cell->next; - - if (newCell->next != NULL) { - newCell->next->prev = newCell; - } - - if (newCell->prev != NULL) { - newCell->prev->next = newCell; - } else { - SDK_ASSERTMSG(hd->free == cell, OS_ERR_ALLOCFROMHEAP_BROKENHEAP); - hd->free = newCell; - } - } - - hd->allocated = DLAddFront(hd->allocated, cell); - -#ifdef SDK_DEBUG - cell->hd = hd; - cell->requested = requested; - hd->headerBytes += HEADERSIZE; - hd->paddingBytes += cell->size - (HEADERSIZE + requested); - hd->payloadBytes += requested; -#endif - - (void)OS_RestoreInterrupts(enabled); - - return (void *)((char *)cell + HEADERSIZE); -} - -void *OS_AllocFixed (OSArenaId id, void **rstart, void **rend) -{ - OSHeapInfo *heapInfo; - OSHeapHandle i; - Cell *cell; - Cell *newCell; - HeapDesc *hd; - void *start = (void *)TRUNC(*rstart, ALIGNMENT); - void *end = (void *)ROUND(*rend, ALIGNMENT); - OSIntrMode enabled = OS_DisableInterrupts(); - - SDK_ASSERTMSG(id < OS_ARENA_MAX, OS_ERR_ALLOCFIXED_INVID); - SDK_ASSERTMSG(OSiHeapInfo[id], OS_ERR_ALLOCFIXED_NOINFO); - heapInfo = OSiHeapInfo[id]; - - SDK_ASSERTMSG(heapInfo->heapArray, OS_ERR_ALLOCFIXED_NOHEAP); - SDK_ASSERTMSG(start < end, OS_ERR_ALLOCFIXED_INVRANGE); - SDK_ASSERTMSG(RangeSubset(start, end, heapInfo->arenaStart, heapInfo->arenaEnd), - OS_ERR_ALLOCFIXED_INVRANGE); - - for (i = 0; i < heapInfo->numHeaps; i++) { - hd = &heapInfo->heapArray[i]; - if (hd->size < 0) { - continue; - } - - if (DLOverlap(hd->allocated, start, end)) { -#ifdef SDK_DEBUG - OS_Printf("OS_AllocFixed: Warning - failed to allocate from %p to %p\n", start, end); -#endif - (void)OS_RestoreInterrupts(enabled); - return NULL; - } - } - - for (i = 0; i < heapInfo->numHeaps; i++) { - hd = &heapInfo->heapArray[i]; - - if (hd->size < 0) { - continue; - } - - for (cell = hd->free; cell; cell = cell->next) { - void *cellEnd = (char *)cell + cell->size; - - if ((char *)cellEnd <= (char *)start) { - continue; - } - - if ((char *)end <= (char *)cell) { - break; - } - - if (InRange(cell, (char *)start - HEADERSIZE, end) && - InRange((char *)cellEnd, start, (char *)end + MINOBJSIZE)) { - if ((char *)cell < (char *)start) - start = (void *)cell; - if ((char *)end < (char *)cellEnd) - end = (void *)cellEnd; - - hd->free = DLExtract(hd->free, cell); - hd->size -= cell->size; - continue; - } - - if (InRange(cell, (char *)start - HEADERSIZE, end)) { - if ((char *)cell < (char *)start) { - start = (void *)cell; - } - - SDK_ASSERT(MINOBJSIZE <= (char *)cellEnd - (char *)end); - newCell = (Cell *) end; - newCell->size = (char *)cellEnd - (char *)end; -#ifdef SDK_DEBUG - newCell->hd = NULL; -#endif - newCell->next = cell->next; - if (newCell->next) { - newCell->next->prev = newCell; - } - newCell->prev = cell->prev; - if (newCell->prev) { - newCell->prev->next = newCell; - } else { - hd->free = newCell; - } - hd->size -= (char *)end - (char *)cell; - break; - } - - if (InRange((char *)cellEnd, start, (char *)end + MINOBJSIZE)) { - if ((char *)end < (char *)cellEnd) { - end = (void *)cellEnd; - } - - SDK_ASSERT(MINOBJSIZE <= (char *)start - (char *)cell); - hd->size -= (char *)cellEnd - (char *)start; - cell->size = (char *)start - (char *)cell; - continue; - } - - SDK_ASSERT(MINOBJSIZE <= (char *)cellEnd - (char *)end); - newCell = (Cell *) end; - newCell->size = (char *)cellEnd - (char *)end; -#ifdef SDK_DEBUG - newCell->hd = NULL; -#endif - newCell->next = cell->next; - if (newCell->next) { - newCell->next->prev = newCell; - } - newCell->prev = cell; - cell->next = newCell; - cell->size = (char *)start - (char *)cell; - hd->size -= (char *)end - (char *)start; - break; - } - SDK_ASSERT(0 <= hd->size); - } - - SDK_ASSERT(OFFSET(start, ALIGNMENT) == 0); - SDK_ASSERT(OFFSET(end, ALIGNMENT) == 0); - SDK_ASSERT(start < end); - *rstart = start; - *rend = end; - - (void)OS_RestoreInterrupts(enabled); - return *rstart; -} - -void OS_FreeToHeap (OSArenaId id, OSHeapHandle heap, void *ptr) -{ - OSHeapInfo *heapInfo; - HeapDesc *hd; - Cell *cell; - - OSIntrMode enabled = OS_DisableInterrupts(); - - SDK_ASSERTMSG(id < OS_ARENA_MAX, OS_ERR_FREETOHEAP_INVID); - SDK_ASSERTMSG(OSiHeapInfo[id], OS_ERR_FREETOHEAP_NOINFO); - heapInfo = OSiHeapInfo[id]; - - if (heap < 0) { - heap = heapInfo->currentHeap; - } - - SDK_ASSERTMSG(heapInfo->heapArray, OS_ERR_FREETOHEAP_NOHEAP); - SDK_ASSERTMSG(InRange - (ptr, (char *)heapInfo->arenaStart + HEADERSIZE, (char *)heapInfo->arenaEnd), - OS_ERR_FREETOHEAP_INVPTR); - SDK_ASSERTMSG(OFFSET(ptr, ALIGNMENT) == 0, OS_ERR_FREETOHEAP_INVPTR); - SDK_ASSERTMSG(0 <= heapInfo->heapArray[heap].size, OS_ERR_FREETOHEAP_INVHEAP); - - cell = (Cell *) ((char *)ptr - HEADERSIZE); - hd = &heapInfo->heapArray[heap]; - - SDK_ASSERTMSG(cell->hd == hd, OS_ERR_FREETOHEAP_INVPTR); - SDK_ASSERTMSG(DLLookup(hd->allocated, cell), OS_ERR_FREETOHEAP_INVPTR); - -#ifdef SDK_DEBUG - cell->hd = NULL; - hd->headerBytes -= HEADERSIZE; - hd->paddingBytes -= cell->size - (HEADERSIZE + cell->requested); - hd->payloadBytes -= cell->requested; -#endif - - hd->allocated = DLExtract(hd->allocated, cell); - hd->free = DLInsert(hd->free, cell); - - (void)OS_RestoreInterrupts(enabled); -} - -void OS_FreeAllToHeap (OSArenaId id, OSHeapHandle heap) -{ - OSHeapInfo *heapInfo; - HeapDesc *hd; - Cell *cell; - - OSIntrMode enabled = OS_DisableInterrupts(); - - SDK_ASSERTMSG(id < OS_ARENA_MAX, OS_ERR_FREETOHEAP_INVID); - SDK_ASSERTMSG(OSiHeapInfo[id], OS_ERR_FREETOHEAP_NOINFO); - heapInfo = OSiHeapInfo[id]; - - if (heap < 0) { - heap = heapInfo->currentHeap; - } - - SDK_ASSERTMSG(heapInfo->heapArray, "heap not initialized"); - SDK_ASSERTMSG(0 <= heapInfo->heapArray[heap].size, "invalid heap handle"); - - hd = &heapInfo->heapArray[heap]; - while ((cell = hd->allocated) != NULL) { - SDK_ASSERT(cell->hd == hd); - SDK_ASSERT(DLLookup(hd->allocated, cell)); - -#ifdef SDK_DEBUG - cell->hd = NULL; - hd->headerBytes -= HEADERSIZE; - hd->paddingBytes -= cell->size - (HEADERSIZE + cell->requested); - hd->payloadBytes -= cell->requested; -#endif - - hd->allocated = DLExtract(hd->allocated, cell); - hd->free = DLInsert(hd->free, cell); - } - - (void)OS_RestoreInterrupts(enabled); -} - -OSHeapHandle OS_SetCurrentHeap (OSArenaId id, OSHeapHandle heap) -{ - OSHeapInfo *heapInfo; - OSHeapHandle prev; - OSIntrMode enabled = OS_DisableInterrupts(); - - SDK_ASSERTMSG(id < OS_ARENA_MAX, OS_ERR_SETCURRENTHEAP_INVID); - SDK_ASSERTMSG(OSiHeapInfo[id], OS_ERR_SETCURRENTHEAP_NOINFO); - heapInfo = OSiHeapInfo[id]; - - SDK_ASSERTMSG(heapInfo->heapArray, OS_ERR_SETCURRENTHEAP_NOHEAP); - SDK_ASSERTMSG(0 <= heap && heap < heapInfo->numHeaps, OS_ERR_SETCURRENTHEAP_INVHEAP); - SDK_ASSERTMSG(0 <= heapInfo->heapArray[heap].size, OS_ERR_SETCURRENTHEAP_INVHEAP); - prev = heapInfo->currentHeap; - heapInfo->currentHeap = heap; - - (void)OS_RestoreInterrupts(enabled); - return prev; -} - -void *OS_InitAlloc (OSArenaId id, void *arenaStart, void *arenaEnd, int maxHeaps) -{ - OSHeapInfo *heapInfo; - u32 arraySize; - OSHeapHandle i; - OSIntrMode enabled = OS_DisableInterrupts(); - - SDK_ASSERTMSG(id < OS_ARENA_MAX, OS_ERR_INITALLOC_INVID); - SDK_ASSERTMSG(OSiHeapInfo[id] == NULL, OS_ERR_INITALLOC_INVINFO); - - SDK_ASSERTMSG(0 < maxHeaps, OS_ERR_INITALLOC_INVNUMHEAPS); - SDK_ASSERTMSG((char *)arenaStart < (char *)arenaEnd, OS_ERR_INITALLOC_INVRANGE); - SDK_ASSERTMSG(maxHeaps <= ((char *)arenaEnd - (char *)arenaStart) / sizeof(HeapDesc), - OS_ERR_INITALLOC_INSRANGE); - - heapInfo = arenaStart; - OSiHeapInfo[id] = heapInfo; - - arraySize = sizeof(HeapDesc) * maxHeaps; - heapInfo->heapArray = (void *)((u32)arenaStart + sizeof(OSHeapInfo)); - heapInfo->numHeaps = maxHeaps; - - for (i = 0; i < heapInfo->numHeaps; i++) { - HeapDesc *hd = &heapInfo->heapArray[i]; - - hd->size = -1; - hd->free = hd->allocated = NULL; -#ifdef SDK_DEBUG - hd->paddingBytes = hd->headerBytes = hd->payloadBytes = 0; -#endif - } - - heapInfo->currentHeap = -1; - - arenaStart = (void *)((char *)heapInfo->heapArray + arraySize); - arenaStart = (void *)ROUND(arenaStart, ALIGNMENT); - - heapInfo->arenaStart = arenaStart; - heapInfo->arenaEnd = (void *)TRUNC(arenaEnd, ALIGNMENT); - SDK_ASSERTMSG(MINOBJSIZE <= (char *)heapInfo->arenaEnd - (char *)heapInfo->arenaStart, - OS_ERR_INITALLOC_INSRANGE); - - (void)OS_RestoreInterrupts(enabled); - return heapInfo->arenaStart; -} - -void OS_ClearAlloc (OSArenaId id) -{ - SDK_ASSERTMSG(id < OS_ARENA_MAX, OS_ERR_CLEARALLOC_INVID); - OSiHeapInfo[id] = NULL; -} - -OSHeapHandle OS_CreateHeap (OSArenaId id, void *start, void *end) -{ - OSHeapInfo *heapInfo; - OSHeapHandle heap; - HeapDesc *hd; - Cell *cell; - - OSIntrMode enabled = OS_DisableInterrupts(); - - SDK_ASSERTMSG(id < OS_ARENA_MAX, OS_ERR_CREATEHEAP_INVID); - SDK_ASSERTMSG(OSiHeapInfo[id], OS_ERR_CREATEHEAP_NOINFO); - heapInfo = OSiHeapInfo[id]; - - SDK_ASSERTMSG(heapInfo->heapArray, OS_ERR_CREATEHEAP_NOHEAP); - SDK_ASSERTMSG(start < end, OS_ERR_CREATEHEAP_INVRANGE); - start = (void *)ROUND(start, ALIGNMENT); - end = (void *)TRUNC(end, ALIGNMENT); - SDK_ASSERTMSG(start < end, OS_ERR_CREATEHEAP_INVRANGE); - SDK_ASSERTMSG(RangeSubset(start, end, heapInfo->arenaStart, heapInfo->arenaEnd), - OS_ERR_CREATEHEAP_INVRANGE); - SDK_ASSERTMSG(MINOBJSIZE <= (char *)end - (char *)start, OS_ERR_CREATEHEAP_INSRANGE); - -#ifdef SDK_DEBUG - for (heap = 0; heap < heapInfo->numHeaps; heap++) { - if (heapInfo->heapArray[heap].size < 0) { - continue; - } - SDK_ASSERTMSG(!DLOverlap(heapInfo->heapArray[heap].free, start, end), - OS_ERR_CREATEHEAP_INVRANGE); - SDK_ASSERTMSG(!DLOverlap(heapInfo->heapArray[heap].allocated, start, end), - OS_ERR_CREATEHEAP_INVRANGE); - } -#endif - - for (heap = 0; heap < heapInfo->numHeaps; heap++) { - hd = &heapInfo->heapArray[heap]; - if (hd->size < 0) { - hd->size = (char *)end - (char *)start; - - cell = (Cell *) start; - cell->prev = NULL; - cell->next = NULL; - cell->size = hd->size; -#ifdef SDK_DEBUG - cell->hd = NULL; -#endif - - hd->free = cell; - hd->allocated = 0; -#ifdef SDK_DEBUG - hd->paddingBytes = hd->headerBytes = hd->payloadBytes = 0; -#endif - - (void)OS_RestoreInterrupts(enabled); - return heap; - } - } - -#ifdef SDK_DEBUG - OS_Printf("OS_CreateHeap: Warning - Failed to find free heap descriptor."); -#endif - - (void)OS_RestoreInterrupts(enabled); - return -1; -} - -void OS_DestroyHeap (OSArenaId id, OSHeapHandle heap) -{ - OSHeapInfo *heapInfo; - HeapDesc *hd; -#ifdef SDK_DEBUG - long size; -#endif - OSIntrMode enabled = OS_DisableInterrupts(); - - SDK_ASSERTMSG(id < OS_ARENA_MAX, OS_ERR_DESTROYHEAP_INVID); - SDK_ASSERTMSG(OSiHeapInfo[id], OS_ERR_DESTROYHEAP_NOINFO); - heapInfo = OSiHeapInfo[id]; - - SDK_ASSERTMSG(heapInfo->heapArray, OS_ERR_DESTROYHEAP_NOHEAP); - SDK_ASSERTMSG(0 <= heap && heap < heapInfo->numHeaps, OS_ERR_DESTROYHEAP_INVHEAP); - SDK_ASSERTMSG(0 <= heapInfo->heapArray[heap].size, OS_ERR_DESTROYHEAP_INVHEAP); - - hd = &heapInfo->heapArray[heap]; - -#ifdef SDK_DEBUG - - size = DLSize(hd->free); - if (hd->size != size) { - OS_Printf("OS_DestroyHeap(%d): Warning - free list size %d, heap size %d\n", heap, size, - hd->size); - } -#endif - - hd->size = -1; - hd->free = hd->allocated = NULL; - -#ifdef SDK_DEBUG - hd->paddingBytes = hd->headerBytes = hd->payloadBytes = 0; - if (heapInfo->currentHeap == heap) { - heapInfo->currentHeap = -1; - } -#endif - - (void)OS_RestoreInterrupts(enabled); -} - -void OS_AddToHeap (OSArenaId id, OSHeapHandle heap, void *start, void *end) -{ - OSHeapInfo *heapInfo; - HeapDesc *hd; - Cell *cell; -#ifdef SDK_DEBUG - OSHeapHandle i; -#endif - OSIntrMode enabled = OS_DisableInterrupts(); - - SDK_ASSERTMSG(id < OS_ARENA_MAX, OS_ERR_ADDTOHEAP_INVID); - SDK_ASSERTMSG(OSiHeapInfo[id], OS_ERR_ADDTOHEAP_NOINFO); - heapInfo = OSiHeapInfo[id]; - - SDK_ASSERTMSG(heapInfo->heapArray, OS_ERR_ADDTOHEAP_NOHEAP); - SDK_ASSERTMSG(0 <= heap && heap < heapInfo->numHeaps, OS_ERR_ADDTOHEAP_INVHEAP); - SDK_ASSERTMSG(0 <= heapInfo->heapArray[heap].size, OS_ERR_ADDTOHEAP_INVHEAP); - - hd = &heapInfo->heapArray[heap]; - - SDK_ASSERTMSG(start < end, OS_ERR_ADDTOHEAP_INVRANGE); - start = (void *)ROUND(start, ALIGNMENT); - end = (void *)TRUNC(end, ALIGNMENT); - SDK_ASSERTMSG(MINOBJSIZE <= (char *)end - (char *)start, OS_ERR_ADDTOHEAP_INSRANGE); - SDK_ASSERTMSG(RangeSubset(start, end, heapInfo->arenaStart, heapInfo->arenaEnd), - OS_ERR_ADDTOHEAP_INVRANGE); - -#ifdef SDK_DEBUG - - for (i = 0; i < heapInfo->numHeaps; i++) { - if (heapInfo->heapArray[i].size < 0) { - continue; - } - SDK_ASSERTMSG(!DLOverlap(heapInfo->heapArray[i].free, start, end), - OS_ERR_ADDTOHEAP_INVRANGE); - SDK_ASSERTMSG(!DLOverlap(heapInfo->heapArray[i].allocated, start, end), - OS_ERR_ADDTOHEAP_INVRANGE); - } -#endif - - cell = (Cell *) start; - cell->size = (char *)end - (char *)start; -#ifdef SDK_DEBUG - cell->hd = NULL; -#endif - - hd->size += cell->size; - hd->free = DLInsert(hd->free, cell); - - (void)OS_RestoreInterrupts(enabled); -} - -#ifndef SDK_NO_MESSAGE -#define OSi_CHECK( exp ) \ - do \ - { \ - if ( !(exp)) \ - { \ - OS_Printf( "OS_CheckHeap: Failed " #exp " in %d\n", __LINE__ ); \ - goto exit_OS_CheckHeap; \ - } \ - } while (0) -#else -#define OSi_CHECK( exp ) \ - do \ - { \ - if ( !(exp)) \ - { \ - goto exit_OS_CheckHeap; \ - } \ - } while (0) -#endif - -s32 OS_CheckHeap (OSArenaId id, OSHeapHandle heap) -{ - OSHeapInfo *heapInfo; - HeapDesc *hd; - Cell *cell; - long total = 0; - long free = 0; - long retValue = -1; - OSIntrMode enabled = OS_DisableInterrupts(); - - SDK_ASSERTMSG(id < OS_ARENA_MAX, OS_ERR_CHECKHEAP_INVID); - SDK_ASSERTMSG(OSiHeapInfo[id], OS_ERR_CHECKHEAP_NOINFO); - heapInfo = OSiHeapInfo[id]; - - if (heap == OS_CURRENT_HEAP_HANDLE) { - heap = heapInfo->currentHeap; - } - SDK_ASSERT(heap >= 0); - - OSi_CHECK(heapInfo->heapArray); - OSi_CHECK(0 <= heap && heap < heapInfo->numHeaps); - - hd = &heapInfo->heapArray[heap]; - OSi_CHECK(0 <= hd->size); - - OSi_CHECK(hd->allocated == NULL || hd->allocated->prev == NULL); - for (cell = hd->allocated; cell; cell = cell->next) { - OSi_CHECK(InRange(cell, heapInfo->arenaStart, heapInfo->arenaEnd)); - OSi_CHECK(OFFSET(cell, ALIGNMENT) == 0); - OSi_CHECK(cell->next == NULL || cell->next->prev == cell); - OSi_CHECK(MINOBJSIZE <= cell->size); - OSi_CHECK(OFFSET(cell->size, ALIGNMENT) == 0); - - total += cell->size; - OSi_CHECK(0 < total && total <= hd->size); - -#ifdef SDK_DEBUG - OSi_CHECK(cell->hd == hd); - OSi_CHECK(HEADERSIZE + cell->requested <= cell->size); -#endif - } - - OSi_CHECK(hd->free == NULL || hd->free->prev == NULL); - for (cell = hd->free; cell; cell = cell->next) { - OSi_CHECK(InRange(cell, heapInfo->arenaStart, heapInfo->arenaEnd)); - OSi_CHECK(OFFSET(cell, ALIGNMENT) == 0); - OSi_CHECK(cell->next == NULL || cell->next->prev == cell); - OSi_CHECK(MINOBJSIZE <= cell->size); - OSi_CHECK(OFFSET(cell->size, ALIGNMENT) == 0); - OSi_CHECK(cell->next == NULL || (char *)cell + cell->size < (char *)cell->next); - - total += cell->size; - free += cell->size - HEADERSIZE; - OSi_CHECK(0 < total && total <= hd->size); - -#ifdef SDK_DEBUG - OSi_CHECK(cell->hd == NULL); -#endif - } - - OSi_CHECK(total == hd->size); - retValue = free; - -exit_OS_CheckHeap: - (void)OS_RestoreInterrupts(enabled); - return retValue; -} - -u32 OS_ReferentSize (OSArenaId id, void *ptr) -{ - OSHeapInfo *heapInfo; - Cell *cell; - OSIntrMode enabled = OS_DisableInterrupts(); - - SDK_ASSERTMSG(id < OS_ARENA_MAX, OS_ERR_REFERENTSIZE_INVID); - SDK_ASSERTMSG(OSiHeapInfo[id], OS_ERR_REFERENTSIZE_NOINFO); - heapInfo = OSiHeapInfo[id]; - - SDK_ASSERTMSG(heapInfo->heapArray, OS_ERR_REFERENT_NOHEAP); - SDK_ASSERTMSG(InRange - (ptr, (char *)heapInfo->arenaStart + HEADERSIZE, (char *)heapInfo->arenaEnd), - OS_ERR_REFERENT_INVPTR); - SDK_ASSERTMSG(OFFSET(ptr, ALIGNMENT) == 0, OS_ERR_REFERENT_INVPTR); - - cell = (Cell *) ((char *)ptr - HEADERSIZE); - - SDK_ASSERTMSG(cell->hd, OS_ERR_REFERENT_INVPTR); - SDK_ASSERTMSG(((char *)cell->hd - (char *)heapInfo->heapArray) % sizeof(HeapDesc) == 0, - OS_ERR_REFERENT_INVPTR); - SDK_ASSERTMSG(heapInfo->heapArray <= cell->hd - && cell->hd < &heapInfo->heapArray[heapInfo->numHeaps], OS_ERR_REFERENT_INVPTR); - SDK_ASSERTMSG(0 <= cell->hd->size, OS_ERR_REFERENT_INVPTR); - SDK_ASSERTMSG(DLLookup(cell->hd->allocated, cell), OS_ERR_REFERENT_INVPTR); - - (void)OS_RestoreInterrupts(enabled); - return (u32)(cell->size - HEADERSIZE); -} - -void OS_DumpHeap (OSArenaId id, OSHeapHandle heap) -{ -#ifndef SDK_FINALROM - OSHeapInfo *heapInfo; - HeapDesc *hd; - Cell *cell; - OSIntrMode enabled = OS_DisableInterrupts(); - - OS_Printf("\nOS_DumpHeap(%d):\n", heap); - - SDK_ASSERTMSG(id < OS_ARENA_MAX, OS_ERR_DUMPHEAP_INVID); - SDK_ASSERTMSG(OSiHeapInfo[id], OS_ERR_DUMPHEAP_NOINFO); - heapInfo = OSiHeapInfo[id]; - - SDK_ASSERTMSG(heapInfo && heapInfo->heapArray, OS_ERR_DUMPHEAP_NOHEAP); - - if (heap < 0) { - heap = heapInfo->currentHeap; - } - SDK_ASSERTMSG(0 <= heap && heap < heapInfo->numHeaps, OS_ERR_DUMPHEAP_INVHEAP); - - hd = &heapInfo->heapArray[heap]; - if (hd->size < 0) { - OS_Printf("--------Inactive\n"); - return; - } - - SDK_ASSERTMSG(0 <= OS_CheckHeap(id, heap), OS_ERR_DUMPHEAP_BROKENHEAP); - -#ifdef SDK_DEBUG - OS_Printf("padding %d/(%f%%) header %d/(%f%%) payload %d/(%f%%)\n", - hd->paddingBytes, 100.0 * hd->paddingBytes / hd->size, - hd->headerBytes, 100.0 * hd->headerBytes / hd->size, - hd->payloadBytes, 100.0 * hd->payloadBytes / hd->size); -#endif - - OS_Printf("addr\tsize\tend\tprev\tnext\n"); - OS_Printf("--------Allocated\n"); - SDK_ASSERTMSG(hd->allocated == NULL || hd->allocated->prev == NULL, OS_ERR_DUMPHEAP_BROKENHEAP); - for (cell = hd->allocated; cell; cell = cell->next) { - OS_Printf("%x\t%d\t%x\t%x\t%x\n", - cell, cell->size, (char *)cell + cell->size, cell->prev, cell->next); - } - - OS_Printf("--------Free\n"); - for (cell = hd->free; cell; cell = cell->next) { - OS_Printf("%x\t%d\t%x\t%x\t%x\n", - cell, cell->size, (char *)cell + cell->size, cell->prev, cell->next); - } - - (void)OS_RestoreInterrupts(enabled); -#else - -#pragma unused( id, heap ) - -#endif -} - -void OS_VisitAllocated (OSArenaId id, OSAllocVisitor visitor) -{ - OSHeapInfo *heapInfo; - u32 heap; - Cell *cell; - - OSIntrMode enabled = OS_DisableInterrupts(); - - SDK_ASSERTMSG(id < OS_ARENA_MAX, OS_ERR_VISITALLOCATED_INVID); - SDK_ASSERTMSG(OSiHeapInfo[id], OS_ERR_VISITALLOCATED_NOINFO); - heapInfo = OSiHeapInfo[id]; - - for (heap = 0; heap < heapInfo->numHeaps; heap++) { - if (heapInfo->heapArray[heap].size >= 0) { - for (cell = heapInfo->heapArray[heap].allocated; cell; cell = cell->next) { - visitor((void *)((u8 *)cell + HEADERSIZE), (u32)(cell->size - HEADERSIZE)); - } - } - } - - (void)OS_RestoreInterrupts(enabled); -} - -u32 OSi_GetTotalAllocSize (OSArenaId id, OSHeapHandle heap, BOOL isHeadInclude) -{ - OSHeapInfo *heapInfo; - Cell *cell; - u32 sum = 0; - OSIntrMode enabled = OS_DisableInterrupts(); - - SDK_ASSERT(id < OS_ARENA_MAX); - heapInfo = OSiHeapInfo[id]; - SDK_ASSERT(heapInfo); - SDK_ASSERT(heap < heapInfo->numHeaps); - - if (heap < 0) { - heap = heapInfo->currentHeap; - } - - if (isHeadInclude) { - for (cell = heapInfo->heapArray[heap].allocated; cell; cell = cell->next) { - sum += (u32)(cell->size); - } - } else { - for (cell = heapInfo->heapArray[heap].allocated; cell; cell = cell->next) { - sum += (u32)(cell->size - HEADERSIZE); - } - } - - (void)OS_RestoreInterrupts(enabled); - - return sum; -} - -u32 OS_GetTotalFreeSize (OSArenaId id, OSHeapHandle heap) -{ - OSHeapInfo *heapInfo; - Cell *cell; - u32 sum = 0; - OSIntrMode enabled = OS_DisableInterrupts(); - - SDK_ASSERT(id < OS_ARENA_MAX); - heapInfo = OSiHeapInfo[id]; - SDK_ASSERT(heapInfo); - SDK_ASSERT(heap < heapInfo->numHeaps); - - if (heap < 0) { - heap = heapInfo->currentHeap; - } - - for (cell = heapInfo->heapArray[heap].free; cell; cell = cell->next) { - sum += (u32)(cell->size - HEADERSIZE); - } - - (void)OS_RestoreInterrupts(enabled); - - return sum; -} - -u32 OS_GetMaxFreeSize (OSArenaId id, OSHeapHandle heap) -{ - OSHeapInfo *heapInfo; - Cell *cell; - u32 candidate = 0; - OSIntrMode enabled = OS_DisableInterrupts(); - - SDK_ASSERT(id < OS_ARENA_MAX); - heapInfo = OSiHeapInfo[id]; - SDK_ASSERT(heapInfo); - SDK_ASSERT(heap < heapInfo->numHeaps); - - if (heap < 0) { - heap = heapInfo->currentHeap; - } - - for (cell = heapInfo->heapArray[heap].free; cell; cell = cell->next) { - u32 size = (u32)(cell->size - HEADERSIZE); - if (size > candidate) { - candidate = size; - } - } - - (void)OS_RestoreInterrupts(enabled); - - return candidate; -} - -void OS_ClearHeap (OSArenaId id, OSHeapHandle heap, void *start, void *end) -{ - OSHeapInfo *heapInfo; - HeapDesc *hd; - Cell *cell; - - OSIntrMode enabled = OS_DisableInterrupts(); - - SDK_ASSERTMSG(id < OS_ARENA_MAX, "invalid id"); - - heapInfo = OSiHeapInfo[id]; - - SDK_ASSERTMSG(heapInfo && heapInfo->heapArray, "heap not initialized"); - SDK_ASSERTMSG(start < end, "invalid range"); - start = (void *)ROUND(start, ALIGNMENT); - end = (void *)TRUNC(end, ALIGNMENT); - SDK_ASSERTMSG(start < end, "invalid range"); - SDK_ASSERTMSG(RangeSubset(start, end, heapInfo->arenaStart, heapInfo->arenaEnd), - "invalid range"); - SDK_ASSERTMSG(MINOBJSIZE <= (char *)end - (char *)start, "too small range"); - - if (heap < 0) { - heap = heapInfo->currentHeap; - } - - hd = &heapInfo->heapArray[heap]; - hd->size = (char *)end - (char *)start; - - cell = (Cell *) start; - cell->prev = NULL; - cell->next = NULL; - cell->size = hd->size; -#ifdef SDK_DEBUG - cell->hd = NULL; -#endif - - hd->free = cell; - hd->allocated = 0; -#ifdef SDK_DEBUG - hd->paddingBytes = hd->headerBytes = hd->payloadBytes = 0; -#endif - - (void)OS_RestoreInterrupts(enabled); -} \ No newline at end of file diff --git a/subprojects/NitroSDK/libraries/os/src/os_arena.c b/subprojects/NitroSDK/libraries/os/src/os_arena.c deleted file mode 100644 index dc1d59dcd8..0000000000 --- a/subprojects/NitroSDK/libraries/os/src/os_arena.c +++ /dev/null @@ -1,382 +0,0 @@ -#include - -#define OSi_TRUNC(n, a) (((u32) (n)) & ~((a) - 1)) -#define OSi_ROUND(n, a) (((u32) (n) + (a) - 1) & ~((a) - 1)) - -#define OS_ERR_GETARENAHI_INIT "OS_GetArenaHi: init in advance" -#define OS_ERR_GETARENAHI_INVALID "OS_GetArenaHi: invalid arena (hi (u32)HW_PRV_WRAM) { - sysStackLo = (u32)SDK_WRAM_ARENA_LO; - } - - if (OSi_SYS_STACKSIZE == 0) { - - } else if (OSi_SYS_STACKSIZE < 0) { - sysStackLo -= OSi_SYS_STACKSIZE; - } else { - sysStackLo = irqStackLo - OSi_SYS_STACKSIZE; - } - SDK_ASSERT((u32)HW_PRV_WRAM <= sysStackLo && sysStackLo < irqStackLo); - return (void *)sysStackLo; - } -#endif - default: - SDK_WARNING(0, "Bad arena id"); - } - - return NULL; -} - -void *OS_GetInitArenaLo (OSArenaId id) -{ - SDK_ASSERT(OSi_Initialized); - SDK_ARENAID_ASSERT(id); - - switch (id) { -#ifdef SDK_ARM9 - case OS_ARENA_MAIN: - return (void *)OSi_MAIN_ARENA_LO_DEFAULT; - case OS_ARENA_MAINEX: - if (!OSi_MainExArenaEnabled || - ((OS_GetConsoleType() & OS_CONSOLE_SIZE_MASK) == OS_CONSOLE_SIZE_4MB)) { - return (void *)0; - } else { - return (void *)OSi_MAINEX_ARENA_LO_DEFAULT; - } - case OS_ARENA_ITCM: - return (void *)OSi_ITCM_ARENA_LO_DEFAULT; - case OS_ARENA_DTCM: - return (void *)OSi_DTCM_ARENA_LO_DEFAULT; - case OS_ARENA_SHARED: - return (void *)HW_SHARED_ARENA_LO_DEFAULT; - case OS_ARENA_WRAM_MAIN: - return (void *)OSi_WRAM_MAIN_ARENA_LO_DEFAULT; -#else - case OS_ARENA_MAIN_SUBPRIV: - return (void *)OSi_MAIN_SUBPRIV_ARENA_LO_DEFAULT; - case OS_ARENA_WRAM_SUB: - { - u32 wramSubLo = OSi_WRAM_SUB_ARENA_LO_DEFAULT; - if ((u32)HW_WRAM_END < (u32)wramSubLo) { - wramSubLo = (u32)HW_WRAM_END; - } - return (void *)wramSubLo; - } - case OS_ARENA_WRAM_SUBPRIV: - { - u32 privWramLo = OSi_WRAM_SUBPRIV_ARENA_LO_DEFAULT; - if ((u32)SDK_WRAM_ARENA_LO > (u32)privWramLo) { - privWramLo = (u32)SDK_WRAM_ARENA_LO; - } - return (void *)privWramLo; - } -#endif - default: - SDK_WARNING(0, "Bad arena id"); - } - - return NULL; -} - -void OS_SetArenaHi (OSArenaId id, void *newHi) -{ - SDK_ASSERT(OSi_Initialized); - SDK_ARENAID_ASSERT(id); - - OSi_GetArenaInfo().hi[id] = newHi; -} - -void OS_SetArenaLo (OSArenaId id, void *newLo) -{ - SDK_ASSERT(OSi_Initialized); - SDK_ARENAID_ASSERT(id); - - OSi_GetArenaInfo().lo[id] = newLo; -} - -void *OS_AllocFromArenaLo (OSArenaId id, u32 size, u32 align) -{ - void *ptr; - u8 *arenaLo; - - ptr = OS_GetArenaLo(id); - if (!ptr) { - return NULL; - } - - arenaLo = ptr = (void *)OSi_ROUND(ptr, align); - arenaLo += size; - arenaLo = (u8 *)OSi_ROUND(arenaLo, align); - - if (arenaLo > OS_GetArenaHi(id)) { - return NULL; - } - - OS_SetArenaLo(id, arenaLo); - - return ptr; -} - -void *OS_AllocFromArenaHi (OSArenaId id, u32 size, u32 align) -{ - void *ptr; - u8 *arenaHi; - - arenaHi = OS_GetArenaHi(id); - if (!arenaHi) { - return NULL; - } - - arenaHi = (u8 *)OSi_TRUNC(arenaHi, align); - arenaHi -= size; - arenaHi = ptr = (void *)OSi_TRUNC(arenaHi, align); - - if (arenaHi < OS_GetArenaLo(id)) { - return NULL; - } - - OS_SetArenaHi(id, arenaHi); - - return ptr; -} - -#ifdef SDK_ARM9 - -void OS_EnableMainExArena (void) -{ - SDK_ASSERT(!OSi_Initialized); - - OSi_MainExArenaEnabled = TRUE; -} - -void OS_DisableMainExArena (void) -{ - SDK_ASSERT(!OSi_Initialized); - - OSi_MainExArenaEnabled = FALSE; -} -#endif \ No newline at end of file diff --git a/subprojects/NitroSDK/libraries/os/src/os_cache.c b/subprojects/NitroSDK/libraries/os/src/os_cache.c deleted file mode 100644 index 8756a9afbc..0000000000 --- a/subprojects/NitroSDK/libraries/os/src/os_cache.c +++ /dev/null @@ -1,321 +0,0 @@ -#include -#include - -#define SDK_AVOID_FLUSH - -asm BOOL DC_Enable (void) -{ - mrc p15, 0, r1, c1, c0, 0 - and r0, r1, #HW_C1_DCACHE_ENABLE - mov r0, r0, LSR #HW_C1_DCACHE_ENABLE_SHIFT - orr r1, r1, #HW_C1_DCACHE_ENABLE - mcr p15, 0, r1, c1, c0, 0 - bx lr -} - -asm BOOL DC_Disable (void) -{ - mrc p15, 0, r1, c1, c0, 0 - and r0, r1, #HW_C1_DCACHE_ENABLE - mov r0, r0, LSR #HW_C1_DCACHE_ENABLE_SHIFT - bic r1, r1, #HW_C1_DCACHE_ENABLE - mcr p15, 0, r1, c1, c0, 0 - bx lr -} - -asm BOOL DC_Restore (register BOOL enable) -{ - cmp r0, #0 - moveq r2, #0 - movne r2, #HW_C1_DCACHE_ENABLE - mrc p15, 0, r1, c1, c0, 0 - and r0, r1, #HW_C1_DCACHE_ENABLE - mov r0, r0, LSR #HW_C1_DCACHE_ENABLE_SHIFT - bic r1, r1, #HW_C1_DCACHE_ENABLE - orr r1, r1, r2 - mcr p15, 0, r1, c1, c0, 0 - bx lr -} - -asm void DC_InvalidateAll (void) -{ - mov r0, #0 - mcr p15, 0, r0, c7, c6, 0 - bx lr -} - -asm void DC_StoreAll (void) -{ - mov r1, #0 - - @1: - mov r0, #0 - - @2: - orr r2, r1, r0 - mcr p15, 0, r2, c7, c10, 2 - add r0, r0, #HW_CACHE_LINE_SIZE - cmp r0, #HW_DCACHE_SIZE / 4 - blt @2 - add r1, r1, #1 << HW_C7_CACHE_SET_NO_SHIFT - cmp r1, #0 - bne @1 - bx lr -} - -asm void DC_FlushAll (void) -{ - mov r12, #0 - mov r1, #0 - - @1: - mov r0, #0 - - @2: - orr r2, r1, r0 - mcr p15, 0, r12, c7, c10, 4 - mcr p15, 0, r2, c7, c14, 2 - add r0, r0, #HW_CACHE_LINE_SIZE - cmp r0, #HW_DCACHE_SIZE / 4 - blt @2 - add r1, r1, #1 << HW_C7_CACHE_SET_NO_SHIFT - cmp r1, #0 - bne @1 - bx lr -} - -asm void DC_InvalidateRange (register void *startAddr, register u32 nBytes) -{ - add r1, r1, r0 - bic r0, r0, #HW_CACHE_LINE_SIZE - 1 - - @1: - mcr p15, 0, r0, c7, c6, 1 - add r0, r0, #HW_CACHE_LINE_SIZE - cmp r0, r1 - blt @1 - bx lr -} - -asm void DC_StoreRange (register const void *startAddr, register u32 nBytes) -{ - add r1, r1, r0 - bic r0, r0, #HW_CACHE_LINE_SIZE - 1 - - @1 : - mcr p15, 0, r0, c7, c10, 1 - add r0, r0, #HW_CACHE_LINE_SIZE - cmp r0, r1 - blt @1 - bx lr -} - -asm void DC_FlushRange (register const void *startAddr, register u32 nBytes) -{ - mov r12, #0 - add r1, r1, r0 - bic r0, r0, #HW_CACHE_LINE_SIZE - 1 - - @1: - mcr p15, 0, r12, c7, c10, 4 - mcr p15, 0, r0, c7, c14, 1 - add r0, r0, #HW_CACHE_LINE_SIZE - cmp r0, r1 - blt @1 - bx lr -} - -asm void DC_TouchRange (register const void *startAddr, register u32 nBytes) -{ - add r1, r1, r0 - bic r0, r0, #HW_CACHE_LINE_SIZE - 1 - - @1: - pld[r0] - add r0, r0, #HW_CACHE_LINE_SIZE - cmp r0, r1 - blt @1 - bx lr -} - -asm void DC_LockdownRange (register const void *startAddr, register u32 nBytes) -{ - add r1, r1, r0 - bic r0, r0, #HW_CACHE_LINE_SIZE - 1 - mrc p15, 0, r3, c9, c0, 0 - and r3, r3, #HW_C9_LOCKDOWN_SET_NO_MASK - cmp r3, #3 - mvneq r0, #0 - bxeq lr - stmfd sp !, { lr, r0, r1 } - ldr r0, = OS_DisableInterrupts - blx r0 - mov r2, r0 - ldmfd sp !, { lr, r0, r1 } - orr r3, r3, #HW_C9_LOCKDOWN_LOAD_MODE - mcr p15, 0, r3, c9, c0, 0 - - @111 : - mcr p15, 0, r0, c7, c14, 1 - ldr r12, [r0] - add r0, r0, #HW_CACHE_LINE_SIZE - cmp r0, r1 - blt @111 - add r3, r3, #1 - bic r0, r3, #HW_C9_LOCKDOWN_LOAD_MODE - mcr p15, 0, r3, c9, c0, 0 - stmfd sp !, { lr } - mov r0, r2 - ldr r1, = OS_RestoreInterrupts - blx r1 - ldmfd sp !, { lr } - bx lr -} - -asm void DC_UnlockdownAll (void) -{ - mov r3, #0 - mcr p15, 0, r3, c9, c0, 0 - bx lr -} - -asm void DC_Unlockdown (register u32 num) -{ - mrc p15, 0, r3, c9, c0, 0 - and r3, r3, #HW_C9_LOCKDOWN_SET_NO_MASK - subs r3, r3, r0 - movmi r3, #0 - mcr p15, 0, r3, c9, c0, 0 - bx lr -} - -asm void DC_WaitWriteBufferEmpty (void) -{ - mov r0, #0 - mcr p15, 0, r0, c7, c10, 4 - bx lr -} - -asm BOOL IC_Enable (void) -{ - mrc p15, 0, r1, c1, c0, 0 - and r0, r1, #HW_C1_ICACHE_ENABLE - mov r0, r0, LSR #HW_C1_ICACHE_ENABLE_SHIFT - orr r1, r1, #HW_C1_ICACHE_ENABLE - mcr p15, 0, r1, c1, c0, 0 - bx lr -} - -asm BOOL IC_Disable (void) -{ - mrc p15, 0, r1, c1, c0, 0 - and r0, r1, #HW_C1_ICACHE_ENABLE - mov r0, r0, LSR #HW_C1_ICACHE_ENABLE_SHIFT - bic r1, r1, #HW_C1_ICACHE_ENABLE - mcr p15, 0, r1, c1, c0, 0 - bx lr -} - -asm BOOL IC_Restore (register BOOL enable) -{ - cmp r0, #0 - moveq r2, #0 - movne r2, #HW_C1_ICACHE_ENABLE - mrc p15, 0, r1, c1, c0, 0 - and r0, r1, #HW_C1_ICACHE_ENABLE - mov r0, r0, LSR #HW_C1_ICACHE_ENABLE_SHIFT - bic r1, r1, #HW_C1_ICACHE_ENABLE - orr r1, r1, r2 - mcr p15, 0, r1, c1, c0, 0 - bx lr -} - -asm void IC_InvalidateAll (void) -{ - mov r0, #0 - mcr p15, 0, r0, c7, c5, 0 - bx lr -} - -asm void IC_InvalidateRange (register void *startAddr, register u32 nBytes) -{ - add r1, r1, r0 - bic r0, r0, #HW_CACHE_LINE_SIZE - 1 - - @1: - mcr p15, 0, r0, c7, c5, 1 - add r0, r0, #HW_CACHE_LINE_SIZE - cmp r0, r1 - blt @1 - bx lr -} - -asm void IC_PrefetchRange (register const void *startAddr, register u32 nBytes) -{ - add r1, r1, r0 - bic r0, r0, #HW_CACHE_LINE_SIZE - 1 - - @1: - mcr p15, 0, r0, c7, c13, 1 - add r0, r0, #HW_CACHE_LINE_SIZE - cmp r0, r1 - blt @1 - bx lr -} - -#include - -asm void IC_LockdownRange (register const void *startAddr, register u32 nBytes) -{ - add r1, r1, r0 - bic r0, r0, #HW_CACHE_LINE_SIZE - 1 - mrc p15, 0, r3, c9, c0, 1 - and r3, r3, #HW_C9_LOCKDOWN_SET_NO_MASK - cmp r3, #3 - mvneq r0, #0 - bxeq lr - stmfd sp !, { lr, r0, r1 } - ldr r0, = OS_DisableInterrupts - blx r0 - mov r2, r0 - ldmfd sp !, { lr, r0, r1 } - orr r3, r3, #HW_C9_LOCKDOWN_LOAD_MODE - mcr p15, 0, r3, c9, c0, 1 - - @1: - mcr p15, 0, r0, c7, c5, 1 - mcr p15, 0, r0, c7, c13, 1 - add r0, r0, #HW_CACHE_LINE_SIZE - cmp r0, r1 - blt @1 - add r3, r3, #1 - bic r0, r3, #HW_C9_LOCKDOWN_LOAD_MODE - mcr p15, 0, r3, c9, c0, 1 - stmfd sp !, { lr } - mov r0, r2 - ldr r1, = OS_RestoreInterrupts - blx r1 - ldmfd sp !, { lr } - bx lr -} - -#include - -asm void IC_UnlockdownAll (void) -{ - mov r3, #0 - mcr p15, 0, r3, c9, c0, 1 - bx lr -} - -asm void IC_Unlockdown (register u32 num) -{ - mrc p15, 0, r3, c9, c0, 1 - and r3, r3, #HW_C9_LOCKDOWN_SET_NO_MASK - subs r3, r3, r0 - movmi r3, #0 - mcr p15, 0, r3, c9, c0, 1 - bx lr -} - -#include \ No newline at end of file diff --git a/subprojects/NitroSDK/libraries/os/src/os_context.c b/subprojects/NitroSDK/libraries/os/src/os_context.c deleted file mode 100644 index 1a61ba7588..0000000000 --- a/subprojects/NitroSDK/libraries/os/src/os_context.c +++ /dev/null @@ -1,143 +0,0 @@ -#include -#include - -#ifdef SDK_ARM9 -#include -#endif - -#include -asm void OS_InitContext (register OSContext *context, register u32 newpc, register u32 newsp) -{ - add newpc, newpc, #4 - str newpc, [context, #OS_CONTEXT_PC_PLUS4] - -#ifdef SDK_CONTEXT_HAS_SP_SVC - str newsp, [context, #OS_CONTEXT_SP_SVC] - sub newsp, newsp, #HW_SVC_STACK_SIZE -#endif - tst newsp, #4 - bne @subne1 - b @subne2 -@subne1: - sub newsp, newsp, #4 -@subne2: - str newsp, [context, #OS_CONTEXT_SP] - ands r1, newpc, #1 - bne @movne1 - b @movne2 -@movne1: - mov r1, #HW_PSR_SYS_MODE | HW_PSR_THUMB_STATE -@movne2: - beq @moveq1 - b @moveq2 -@moveq1: - mov r1, #HW_PSR_SYS_MODE | HW_PSR_ARM_STATE -@moveq2: - str r1, [context, #OS_CONTEXT_CPSR] - mov r1, #0 - str r1, [context, #OS_CONTEXT_R0] - str r1, [context, #OS_CONTEXT_R1] - str r1, [context, #OS_CONTEXT_R2] - str r1, [context, #OS_CONTEXT_R3] - str r1, [context, #OS_CONTEXT_R4] - str r1, [context, #OS_CONTEXT_R5] - str r1, [context, #OS_CONTEXT_R6] - str r1, [context, #OS_CONTEXT_R7] - str r1, [context, #OS_CONTEXT_R8] - str r1, [context, #OS_CONTEXT_R9] - str r1, [context, #OS_CONTEXT_R10] - str r1, [context, #OS_CONTEXT_R11] - str r1, [context, #OS_CONTEXT_R12] - str r1, [context, #OS_CONTEXT_LR] - bx lr -} - -#if defined(SDK_TCM_APPLY) && defined(SDK_ARM9) -#include -#endif - -asm BOOL OS_SaveContext (register OSContext *context) -{ -#if defined(SDK_ARM9) - stmfd sp !, { lr, r0 } - add r0, r0, #OS_CONTEXT_CP_CONTEXT - ldr r1, = CP_SaveContext - blx r1 - ldmfd sp !, { lr, r0 } -#endif - add r1, r0, #OS_CONTEXT_CPSR - mrs r2, cpsr - str r2, [r1], #OS_CONTEXT_R0 - OS_CONTEXT_CPSR - -#ifdef SDK_CONTEXT_HAS_SP_SVC - mov r0, #HW_PSR_SVC_MODE | HW_PSR_IRQ_DISABLE | HW_PSR_FIQ_DISABLE | HW_PSR_ARM_STATE - msr cpsr_c, r0 - str sp, [r1, #OS_CONTEXT_SP_SVC - OS_CONTEXT_R0] - msr cpsr_c, r2 -#endif - mov r0, #1 - stmia r1, {r0 - r14} - add r0, pc, #8 - str r0, [r1, #OS_CONTEXT_PC_PLUS4 - OS_CONTEXT_R0] - mov r0, #0 - bx lr -} - -#define OFFSETOF(x, y) (int)(&(((x *)0)->y)) - -asm void OS_LoadContext (register OSContext *context) -{ -#if OS_CONTEXT_CPSR != 0 -#pragma message(has changed!!!) - add r0, r0, #OS_CONTEXT_CPSR -#endif - -#if defined(SDK_ARM9) - stmfd sp !, { lr, r0 } - add r0, r0, #OS_CONTEXT_CP_CONTEXT - ldr r1, = CPi_RestoreContext - blx r1 - ldmfd sp !, { lr, r0 } -#endif - mrs r1, cpsr - bic r1, r1, #HW_PSR_CPU_MODE_MASK - orr r1, r1, #HW_PSR_SVC_MODE | HW_PSR_IRQ_DISABLE | HW_PSR_FIQ_DISABLE - msr cpsr_c, r1 - ldr r1, [r0], #OS_CONTEXT_R0 - OS_CONTEXT_CPSR - msr spsr_fsxc, r1 -#ifdef SDK_CONTEXT_HAS_SP_SVC - ldr sp, [r0, #OS_CONTEXT_SP_SVC - OS_CONTEXT_R0] -#endif - ldr lr, [r0, #OS_CONTEXT_PC_PLUS4 - OS_CONTEXT_R0] - ldmia r0, { r0 - r14 }^ - nop - subs pc, lr, #4 -} -#if defined(SDK_TCM_APPLY) && defined(SDK_ARM9) -#include -#endif - -#include - -void OS_DumpContext (OSContext *context) -{ -#ifndef SDK_FINALROM - s32 i; - - OS_Printf("context=%08x\n", context); - if (context) { - OS_Printf("CPSR %08x\n", context->cpsr); - for (i = 0; i < 13; i++) { - OS_Printf("R%02d %08x\n", i, context->r[i]); - } - OS_Printf("SP %08x\n", context->sp); - OS_Printf("LR %08x\n", context->lr); - OS_Printf("PC+4 %08x\n", context->pc_plus4); -#ifdef SDK_CONTEXT_HAS_SP_SVC - OS_Printf("SPsvc %08x\n", context->sp_svc); -#endif - } -#else - (void)context; -#endif -} \ No newline at end of file diff --git a/subprojects/NitroSDK/libraries/os/src/os_emulator.c b/subprojects/NitroSDK/libraries/os/src/os_emulator.c deleted file mode 100644 index 308fd28a49..0000000000 --- a/subprojects/NitroSDK/libraries/os/src/os_emulator.c +++ /dev/null @@ -1,113 +0,0 @@ -#include - -#ifdef SDK_ARM9 -#define OSi_CURPROC_LOCKED_FLAG OS_MAINP_LOCKED_FLAG -#else -#define OSi_CURPROC_LOCKED_FLAG OS_SUBP_LOCKED_FLAG -#endif - -static u32 OSi_ConsoleTypeCache = OSi_CONSOLE_NOT_DETECT; - -u32 OSi_GetDeviceType(void); -BOOL OSi_IsRunOnDebugger(void); - -BOOL OS_IsRunOnEmulator (void) -{ -#ifdef SDK_ARM9 -#ifndef SDK_FINALROM - static int onEmu = -1; - u32 val; - OSIntrMode intr; - - if (onEmu == -1) { - intr = OS_DisableInterrupts(); - { - (*(REGType32v *)REG_CLIPMTX_RESULT_0_ADDR) = 0x2468ace0; - - val = *(vu16 *)REG_VCOUNT_ADDR & 0x1ffU; - - if (val == 270) { - *(vu32 *)0x4fff010 = 0x13579bdf; - *(vu32 *)0x4fff010 = 0xfdb97531; - onEmu = TRUE; - } else { - onEmu = FALSE; - } - } - (void)OS_RestoreInterrupts(intr); - } - return (BOOL)onEmu; -#else - return FALSE; -#endif - -#else - return FALSE; -#endif -} - -u32 OS_GetConsoleType (void) -{ -#if defined(SDK_FINALROM) || defined(SDK_SMALL_BUILD) - OSi_ConsoleTypeCache = OS_CONSOLE_NITRO | OS_CONSOLE_DEV_CARD | OS_CONSOLE_SIZE_4MB; - -#else - if (OSi_ConsoleTypeCache == OSi_CONSOLE_NOT_DETECT) { - u32 type = OSi_GetDeviceType(); - - if (OS_IsRunOnEmulator()) { - type |= OS_CONSOLE_ENSATA; - } else if (OSi_IsRunOnDebugger()) { - type |= OS_CONSOLE_ISDEBUGGER; - } else if (type & OS_CONSOLE_DEV_CARTRIDGE) { - type |= OS_CONSOLE_ISEMULATOR; - } else { - type |= OS_CONSOLE_NITRO; - } - - type |= *(u16 *)HW_MMEMCHECKER_SUB; - - OSi_ConsoleTypeCache = type; - } -#endif - - return OSi_ConsoleTypeCache; -} - -u32 OSi_GetDeviceType (void) -{ - BOOL checked = FALSE; - u16 lockId = (u16)OS_GetLockID(); - u32 result = 0; - - do { - s32 ret = OS_LOCK_ERROR; - OSIntrMode enabled = OS_DisableInterrupts(); - - if ((OS_ReadOwnerOfLockCartridge() & OSi_CURPROC_LOCKED_FLAG) - || ((ret = (s32)OS_TryLockCartridge(lockId)) == OS_LOCK_SUCCESS)) { - - result = - (u32)(((((vu32 *)HW_CTRDG_ROM)[0] == (u32)'TNIN') && - (((vu32 *)HW_CTRDG_ROM)[1] == (u32)'ODNE')) ? - OS_CONSOLE_DEV_CARTRIDGE : OS_CONSOLE_DEV_CARD); - - if (ret == OS_LOCK_SUCCESS) { - (void)OS_UnlockCartridge(lockId); - checked = TRUE; - } - } - - (void)OS_RestoreInterrupts(enabled); - } while (!checked); - - return result; -} - -BOOL OSi_IsRunOnDebugger (void) -{ - u16 *checkAddress = (u16 *)((*(u16 *)HW_CHECK_DEBUGGER_SW == - 0) ? HW_CHECK_DEBUGGER_BUF1 : HW_CHECK_DEBUGGER_BUF2); - - return (*checkAddress == 1) ? TRUE : FALSE; -} \ No newline at end of file diff --git a/subprojects/NitroSDK/libraries/os/src/os_entropy.c b/subprojects/NitroSDK/libraries/os/src/os_entropy.c deleted file mode 100644 index 7120fcc94a..0000000000 --- a/subprojects/NitroSDK/libraries/os/src/os_entropy.c +++ /dev/null @@ -1,23 +0,0 @@ -#include -#include - -extern vu64 OSi_TickCounter; - -void OS_GetLowEntropyData (u32 buffer[OS_LOW_ENTROPY_DATA_SIZE / sizeof(u32)]) -{ - const OSSystemWork *work = OS_GetSystemWork(); - const u8 *macAddress = - (u8 *)((u32)(work->nvramUserInfo) + ((sizeof(NVRAMConfig) + 3) & ~0x00000003)); - - buffer[0] = (u32)((GX_GetVCount() << 16) | OS_GetTickLo()); - buffer[1] = (u32)(*(u16 *)(macAddress + 4) << 16) ^ (u32)(OSi_TickCounter); - buffer[2] = (u32)(OSi_TickCounter >> 32) ^ *(u32 *)macAddress ^ work->vblankCount; -#ifdef reg_G3X_GXSTAT - buffer[2] ^= reg_G3X_GXSTAT; -#endif - buffer[3] = *(u32 *)(&work->real_time_clock[0]); - buffer[4] = *(u32 *)(&work->real_time_clock[4]); - buffer[5] = (((u32)work->mic_sampling_data) << 16) ^ work->mic_last_address; - buffer[6] = (u32)((*(u16 *)(&work->touch_panel[0]) << 16) | *(u16 *)(&work->touch_panel[2])); - buffer[7] = (u32)((work->wm_rssi_pool << 16) | (reg_PAD_KEYINPUT | *(vu16 *)HW_BUTTON_XY_BUF)); -} \ No newline at end of file diff --git a/subprojects/NitroSDK/libraries/os/src/os_exception.c b/subprojects/NitroSDK/libraries/os/src/os_exception.c deleted file mode 100644 index 984f396329..0000000000 --- a/subprojects/NitroSDK/libraries/os/src/os_exception.c +++ /dev/null @@ -1,314 +0,0 @@ -#include -#include -#include - -#ifdef SDK_ARM9 -#define OSi_ExPrintf OS_Printf - -#else -#define OSi_ExPrintf OS_Printf -#endif - -static asm void OSi_ExceptionHandler(void); -static asm void OSi_GetAndDisplayContext(void); -static asm void OSi_SetExContext(void); -static void OSi_DisplayExContext(void); - -typedef struct { - OSContext context; - u32 cp15; - u32 spsr; - u32 exinfo; - u32 debug[4]; -} OSiExContext; - -static OSiExContext OSi_ExContext; - -static OSExceptionHandler OSi_UserExceptionHandler; -static void *OSi_UserExceptionHandlerArg; - -static void *OSi_DebuggerHandler = NULL; - -#include -asm void OS_SetExceptionVectorUpper (void) -{ - mrc p15, 0, r0, c1, c0, 0 - orr r0, r0, #HW_C1_EXCEPT_VEC_UPPER - mcr p15, 0, r0, c1, c0, 0 - bx lr -} - -asm void OS_SetExceptionVectorLower (void) -{ - mrc p15, 0, r0, c1, c0, 0 - bic r0, r0, #HW_C1_EXCEPT_VEC_UPPER - mcr p15, 0, r0, c1, c0, 0 - bx lr -} -#include - -#define HW_EXCP_VECTOR_BUF_FOR_DEBUGGER 0x027ffd9c - -void OS_InitException (void) -{ - if (0x2600000 <= *(u32 *)HW_EXCP_VECTOR_BUF_FOR_DEBUGGER - && *(u32 *)HW_EXCP_VECTOR_BUF_FOR_DEBUGGER < 0x2800000) { - OSi_DebuggerHandler = *(void **)HW_EXCP_VECTOR_BUF_FOR_DEBUGGER; - } else { - OSi_DebuggerHandler = NULL; - } - - if (!OSi_DebuggerHandler) { - *(u32 *)(HW_EXCP_VECTOR_BUF_FOR_DEBUGGER) = (u32)OSi_ExceptionHandler; - *(u32 *)(HW_EXCP_VECTOR_BUF) = (u32)OSi_ExceptionHandler; - } - - OSi_UserExceptionHandler = NULL; -} - -#if defined(SDK_ARM9) - -#include -static u32 OSi_ExceptionHookStack[8]; -asm static void OSi_DebuggerExceptionHook (void) -{ - ldr r12, = OSi_ExceptionHookStack - stmia r12, {r0 - r4, sp, lr} - mrs r4, CPSR - mrs r0, CPSR - and r0, r0, #0x1f - teq r0, #0x17 - beq user_exception - teq r0, #0x1b - bne user_exception_end -is_und: - bic r0, sp, #1 - ldr r1, [r0, #4] - ldr r0, [r0, #12] - tst r1, #0x20 - beq is_und_arm -is_und_thumb: - bic r0, r0, #1 - ldrh r0, [r0, #- 2] - ldr r1, = 0x0000EFFF - cmp r0, r1 - beq user_exception_end - ldr r1, = 0x0000DEFE - cmp r0, r1 - beq user_exception_end - ldr r1, = 0x0000BE00 - cmp r0, r1 - beq user_exception_end - b user_exception -is_und_arm: - bic r0, r0, #3 - ldr r0, [r0, #- 4] - ldr r1, = 0xE7FFFFFF - cmp r0, r1 - beq user_exception_end - ldr r1, = 0xE7FDDEFE - cmp r0, r1 - beq user_exception_end - ldr r1, = 0xE6000010 - cmp r0, r1 - beq user_exception_end - b user_exception -user_exception: - ldmia r12, {r0 - r1} - ldr r12, = HW_ITCM_END - stmfd r12 !, {r0 - r3, sp, lr} - and r0, sp, #1 - mov sp, r12 - bl OSi_GetAndDisplayContext - ldmfd sp !, {r0 - r3, r12, lr} - mov sp, r12 -user_exception_end: - msr CPSR_cxsf, r4 - ldr r12, = OSi_ExceptionHookStack - ldmia r12, {r0 - r4, sp, lr} - ldr r12, = OSi_DebuggerHandler - ldr r12, [r12] - cmp r12, #0 - bxne r12 - bx lr -} -#include - -void OS_EnableUserExceptionHandlerOnDebugger (void) -{ - if (OSi_DebuggerHandler) { - *(u32 *)(HW_EXCP_VECTOR_BUF_FOR_DEBUGGER) = (u32)OSi_DebuggerExceptionHook; - } -} -#endif - -void OS_SetUserExceptionHandler (OSExceptionHandler handler, void *arg) -{ - OSi_UserExceptionHandler = handler; - OSi_UserExceptionHandlerArg = arg; -} - -#include -asm void OSi_ExceptionHandler (void) -{ - ldr r12, = OSi_DebuggerHandler - ldr r12, [r12] - cmp r12, #0 - bne @movne1 - b @movne2 -@movne1: - mov lr, pc -@movne2: - bne @bxne1 - b @bxne2 -@bxne1: - bx r12 -@bxne2: - -#ifdef SDK_ARM9 - ldr r12, = HW_ITCM_END -#else - ldr r12, = 0x3806000 -#endif - stmfd r12 !, {r0 - r3, sp, lr} - and r0, sp, #1 - mov sp, r12 - mrs r1, CPSR - and r1, r1, #0x1f - teq r1, #0x17 - bne @10 - bl OSi_GetAndDisplayContext - b usr_return - - @10: - teq r1, #0x1b - bne usr_return - bl OSi_GetAndDisplayContext - -usr_return: - ldr r12, = OSi_DebuggerHandler - ldr r12, [r12] - cmp r12, #0 - @1: beq @1 - @2: - mov r0, r0 - b @2 - ldmfd sp !, {r0 - r3, r12, lr} - mov sp, r12 - bx lr -} - -static asm void OSi_GetAndDisplayContext (void) -{ - stmfd sp !, {r0, lr} - bl OSi_SetExContext - bl OSi_DisplayExContext - ldmfd sp !, {r0, lr} - bx lr -} - -static asm void OSi_SetExContext (void) -{ - ldr r1, = OSi_ExContext; - mrs r2, CPSR - str r2, [r1, #OSiExContext.debug[1]] - str r0, [r1, #OSiExContext.exinfo] - ldr r0, [r12, #0] - str r0, [r1, #OS_CONTEXT_R0] - ldr r0, [r12, #4] - str r0, [r1, #OS_CONTEXT_R1] - ldr r0, [r12, #8] - str r0, [r1, #OS_CONTEXT_R2] - ldr r0, [r12, #12] - str r0, [r1, #OS_CONTEXT_R3] - ldr r2, [r12, #16] - bic r2, r2, #1 - add r0, r1, #OS_CONTEXT_R4 - stmia r0, {r4 - r11} - str r12, [r1, #OSiExContext.debug[0]] - -#ifdef SDK_ARM9 - ldr r0, [r2, #0] - str r0, [r1, #OSiExContext.cp15] - ldr r3, [r2, #4] - str r3, [r1, #OS_CONTEXT_CPSR] - ldr r0, [r2, #8] - str r0, [r1, #OS_CONTEXT_R12] - ldr r0, [r2, #12] - str r0, [r1, #OS_CONTEXT_PC_PLUS4] -#else - mov r0, #0 - str r0, [r1, #OSiExContext.cp15] - ldr r3, [r2, #0] - str r3, [r1, #OS_CONTEXT_CPSR] - ldr r0, [r2, #4] - str r0, [r1, #OS_CONTEXT_R12] - ldr r0, [r2, #8] - str r0, [r1, #OS_CONTEXT_PC_PLUS4] -#endif - mrs r0, CPSR - orr r3, r3, #0x80 - bic r3, r3, #0x20 - msr CPSR_cxsf, r3 - str sp, [r1, #OS_CONTEXT_R13] - str lr, [r1, #OS_CONTEXT_R14] - mrs r2, SPSR - str r2, [r1, #OSiExContext.debug[3]] - msr CPSR_cxsf, r0 - bx lr -} - -static void OSi_DisplayExContext (void) -{ -#ifndef SDK_FINALROM - int i; - - OSi_ExPrintf("**** Exception Occurred ****\n"); - - for (i = 0; i < 13; i++) { - OSi_ExPrintf("R%02d=%08X %c", i, OSi_ExContext.context.r[i], ((i & 3) == 3) ? '\n' : ' '); - } - OSi_ExPrintf("SP =%08X ", OSi_ExContext.context.sp); - OSi_ExPrintf("LR =%08X ", OSi_ExContext.context.lr); - OSi_ExPrintf("PC =%08X\n", OSi_ExContext.context.pc_plus4); - -#ifdef SDK_ARM9 - OSi_ExPrintf(" CPSR=%08X SPSR=%08X CP15=%08X\n", - OSi_ExContext.context.cpsr, OSi_ExContext.spsr, OSi_ExContext.cp15); -#else - OSi_ExPrintf(" CPSR=%08X SPSR=%08X\n", OSi_ExContext.context.cpsr, OSi_ExContext.spsr); -#endif - OSi_ExPrintf("\n\n"); -#endif - if (OSi_UserExceptionHandler) { - asm { - mrs r2, CPSR - mov r0, sp - ldr r1, = 0x9f - msr CPSR_cxsf, r1 - mov r1, sp - mov sp, r0 - stmfd sp !, {r1, r2} -#ifdef SDK_ARM9 - bl OS_EnableProtectionUnit -#endif - ldr r0, = OSi_ExContext - ldr r1, = OSi_UserExceptionHandlerArg - ldr r1, [r1] - ldr r12, = OSi_UserExceptionHandler - ldr r12, [r12] - ldr lr, = @1 - bx r12 - @1: -#ifdef SDK_ARM9 - bl OS_DisableProtectionUnit -#endif - ldmfd sp !, {r1, r2} - mov sp, r1 - msr CPSR_cxsf, r2 - - } - } -} - -#include \ No newline at end of file diff --git a/subprojects/NitroSDK/libraries/os/src/os_init.c b/subprojects/NitroSDK/libraries/os/src/os_init.c deleted file mode 100644 index 80a0f25bbb..0000000000 --- a/subprojects/NitroSDK/libraries/os/src/os_init.c +++ /dev/null @@ -1,92 +0,0 @@ -#include -#include -#include -#include - -#ifndef SDK_TEG -#include -#endif - -#include -static asm void OSi_WaitVCount0 (void) -{ - mov r12, #HW_REG_BASE - ldr r1, [r12, #REG_IME_OFFSET] - str r12, [r12, #REG_IME_OFFSET] - -@wait_vcount_0: - ldrh r0, [r12, #REG_VCOUNT_OFFSET] - cmp r0, #0 - bne @wait_vcount_0 - str r1, [r12, #REG_IME_OFFSET] - bx lr -} - -#include - -#pragma profile off -void OS_Init (void) -{ -#ifdef SDK_ARM9 - SDK_ASSERT((u32) & (OS_GetSystemWork()->command_area) == HW_CMD_AREA); -#ifdef SDK_ENABLE_ARM7_PRINT - OS_InitPrintServer(); -#endif - OS_InitArena(); - PXI_Init(); - OS_InitLock(); - OS_InitArenaEx(); - OS_InitIrqTable(); - OS_SetIrqStackChecker(); - OS_InitException(); - MI_Init(); - OS_InitVAlarm(); - OSi_InitVramExclusive(); - -#ifndef SDK_NO_THREAD - OS_InitThread(); -#endif - -#ifndef SDK_SMALL_BUILD - OS_InitReset(); -#endif - -#ifndef SDK_TEG - CTRDG_Init(); -#endif - -#ifndef SDK_SMALL_BUILD - CARD_Init(); -#endif - -#ifndef SDK_TEG - PM_Init(); -#endif - OSi_WaitVCount0(); -#else - OS_InitArena(); - PXI_Init(); - OS_InitLock(); - OS_InitIrqTable(); - -#define SDK_EXCEPTION_BUG -#ifndef SDK_EXCEPTION_BUG - OS_InitException(); -#endif - - OS_InitTick(); - OS_InitAlarm(); - OS_InitThread(); - -#ifndef SDK_SMALL_BUILD - OS_InitReset(); -#endif - -#ifndef SDK_TEG - CTRDG_Init(); -#endif - -#endif -} - -#pragma profile reset \ No newline at end of file diff --git a/subprojects/NitroSDK/libraries/os/src/os_interrupt.c b/subprojects/NitroSDK/libraries/os/src/os_interrupt.c deleted file mode 100644 index 703fba58e9..0000000000 --- a/subprojects/NitroSDK/libraries/os/src/os_interrupt.c +++ /dev/null @@ -1,216 +0,0 @@ -#include - -extern OSThreadQueue OSi_IrqThreadQueue; - -void OS_InitIrqTable (void) -{ - OS_InitThreadQueue(&OSi_IrqThreadQueue); - -#ifdef SDK_ARM7 - OSi_SetVBlankCount(0); -#endif -} - -void OS_SetIrqFunction (OSIrqMask intrBit, OSIrqFunction function) -{ - int i; - OSIrqCallbackInfo *info; - - for (i = 0; i < OS_IRQ_TABLE_MAX; i++) { - if (intrBit & 1) { - info = NULL; - - if (REG_OS_IE_D0_SHIFT <= i && i <= REG_OS_IE_D3_SHIFT) { - info = &OSi_IrqCallbackInfo[i - REG_OS_IE_D0_SHIFT]; - } else if (REG_OS_IE_T0_SHIFT <= i && i <= REG_OS_IE_T3_SHIFT) { - info = &OSi_IrqCallbackInfo[i - REG_OS_IE_T0_SHIFT + OSi_IRQCALLBACK_NO_TIMER0]; - } -#ifdef SDK_ARM7 - else if (REG_OS_IE_VB_SHIFT == i) { - info = &OSi_IrqCallbackInfo[OSi_IRQCALLBACK_NO_VBLANK]; - } -#endif - else { - OS_IRQTable[i] = function; - } - - if (info) { - info->func = (void (*)(void *)) function; - info->arg = 0; - info->enable = TRUE; - } - - } - intrBit >>= 1; - } -} - -OSIrqFunction OS_GetIrqFunction (OSIrqMask intrBit) -{ - int i; - OSIrqFunction *funcPtr = &OS_IRQTable[0]; - - for (i = 0; i < OS_IRQ_TABLE_MAX; i++) { - if (intrBit & 1) { - if (REG_OS_IE_D0_SHIFT <= i && i <= REG_OS_IE_D3_SHIFT) { - return (void (*)(void)) OSi_IrqCallbackInfo[i - REG_OS_IE_D0_SHIFT].func; - } else if (REG_OS_IE_T0_SHIFT <= i && i <= REG_OS_IE_T3_SHIFT) { - return (void (*)(void)) OSi_IrqCallbackInfo[i - REG_OS_IE_T0_SHIFT + - OSi_IRQCALLBACK_NO_TIMER0].func; - } -#ifdef SDK_ARM7 - else if (REG_OS_IE_VB_SHIFT == i) { - return (void (*)(void)) OSi_IrqCallbackInfo[OSi_IRQCALLBACK_NO_VBLANK].func; - } -#endif - - return *funcPtr; - } - intrBit >>= 1; - funcPtr++; - } - return 0; -} - -void OSi_EnterDmaCallback (u32 dmaNo, void (*callback)(void *), void *arg) -{ - OSIrqMask imask = (1UL << (REG_OS_IE_D0_SHIFT + dmaNo)); - - OSi_IrqCallbackInfo[dmaNo].func = callback; - OSi_IrqCallbackInfo[dmaNo].arg = arg; - OSi_IrqCallbackInfo[dmaNo].enable = OS_EnableIrqMask(imask) & imask; -} - -void OSi_EnterTimerCallback (u32 timerNo, void (*callback)(void *), void *arg) -{ - OSIrqMask imask = (1UL << (REG_OS_IE_T0_SHIFT + timerNo)); - - OSi_IrqCallbackInfo[timerNo + 4].func = callback; - OSi_IrqCallbackInfo[timerNo + 4].arg = arg; - - (void)OS_EnableIrqMask(imask); - OSi_IrqCallbackInfo[timerNo + 4].enable = TRUE; -} - -#if defined(SDK_TCM_APPLY) && defined(SDK_ARM9) -#include -#endif - -OSIrqMask OS_SetIrqMask (OSIrqMask intr) -{ - BOOL ime = OS_DisableIrq(); - OSIrqMask prep = reg_OS_IE; - reg_OS_IE = intr; - (void)OS_RestoreIrq(ime); - return prep; -} - -OSIrqMask OS_EnableIrqMask (OSIrqMask intr) -{ - BOOL ime = OS_DisableIrq(); - OSIrqMask prep = reg_OS_IE; - reg_OS_IE = prep | intr; - (void)OS_RestoreIrq(ime); - return prep; -} - -OSIrqMask OS_DisableIrqMask (OSIrqMask intr) -{ - BOOL ime = OS_DisableIrq(); - OSIrqMask prep = reg_OS_IE; - reg_OS_IE = prep & ~intr; - (void)OS_RestoreIrq(ime); - return prep; -} - -OSIrqMask OS_ResetRequestIrqMask (OSIrqMask intr) -{ - BOOL ime = OS_DisableIrq(); - OSIrqMask prep = reg_OS_IF; - reg_OS_IF = intr; - (void)OS_RestoreIrq(ime); - return prep; -} - -#if defined(SDK_TCM_APPLY) && defined(SDK_ARM9) - #include -#endif - -extern void SDK_IRQ_STACKSIZE(void); - -#ifdef SDK_ARM9 - #define OSi_IRQ_STACK_TOP (HW_DTCM_SVC_STACK - ((s32)SDK_IRQ_STACKSIZE)) - #define OSi_IRQ_STACK_BOTTOM HW_DTCM_SVC_STACK -#else - #define OSi_IRQ_STACK_TOP (HW_PRV_WRAM_IRQ_STACK_END - ((s32)SDK_IRQ_STACKSIZE)) - #define OSi_IRQ_STACK_BOTTOM HW_PRV_WRAM_IRQ_STACK_END -#endif - -#ifdef SDK_ARM9 - #define OSi_IRQ_STACK_CHECKNUM_BOTTOM 0xfddb597dUL - #define OSi_IRQ_STACK_CHECKNUM_TOP 0x7bf9dd5bUL - #define OSi_IRQ_STACK_CHECKNUM_WARN 0x597dfbd9UL -#else - #define OSi_IRQ_STACK_CHECKNUM_BOTTOM 0xd73bfdf7UL - #define OSi_IRQ_STACK_CHECKNUM_TOP 0xfbdd37bbUL - #define OSi_IRQ_STACK_CHECKNUM_WARN 0xbdf7db3dUL -#endif - -static u32 OSi_IrqStackWarningOffset = 0; - -void OS_SetIrqStackChecker (void) -{ - *(u32 *)(OSi_IRQ_STACK_BOTTOM - sizeof(u32)) = OSi_IRQ_STACK_CHECKNUM_BOTTOM; - *(u32 *)(OSi_IRQ_STACK_TOP) = OSi_IRQ_STACK_CHECKNUM_TOP; -} - -void OS_SetIrqStackWarningOffset (u32 offset) -{ - SDK_ASSERTMSG((offset & 3) == 0, "Offset must be aligned by 4"); - SDK_ASSERTMSG(offset > 0, "Cannot set warning level to stack top."); - SDK_ASSERTMSG(offset < ((u32)SDK_IRQ_STACKSIZE), "Cannot set warning level over stack bottom."); - - OSi_IrqStackWarningOffset = offset; - - if (offset != 0) { - *(u32 *)(OSi_IRQ_STACK_TOP + offset) = OSi_IRQ_STACK_CHECKNUM_WARN; - } -} - -OSStackStatus OS_GetIrqStackStatus (void) -{ - - if (*(u32 *)(OSi_IRQ_STACK_TOP) != OSi_IRQ_STACK_CHECKNUM_TOP) { - return OS_STACK_OVERFLOW; - } else if (OSi_IrqStackWarningOffset - && *(u32 *)(OSi_IRQ_STACK_TOP + OSi_IrqStackWarningOffset) != - OSi_IRQ_STACK_CHECKNUM_WARN) { - return OS_STACK_ABOUT_TO_OVERFLOW; - } else if (*(u32 *)(OSi_IRQ_STACK_BOTTOM - sizeof(u32)) != OSi_IRQ_STACK_CHECKNUM_BOTTOM) { - return OS_STACK_UNDERFLOW; - } else { - return OS_STACK_NO_ERROR; - } -} - -static char *OSi_CheckIrqStack_mesg[] = { - "overflow", "about to overflow", "underflow" -}; - -#ifndef SDK_FINALROM -#ifndef SDK_NO_MESSAGE -void OSi_CheckIrqStack (char *file, int line) -{ - OSStackStatus st = OS_GetIrqStackStatus(); - - if (st == OS_STACK_NO_ERROR) { - return; - } - - OSi_Panic(file, line, "irq stack %s.\nirq stack area: %08x-%08x, warning offset: %x", - OSi_CheckIrqStack_mesg[(int)st - 1], - OSi_IRQ_STACK_TOP, OSi_IRQ_STACK_BOTTOM, OSi_IrqStackWarningOffset); - -} -#endif -#endif \ No newline at end of file diff --git a/subprojects/NitroSDK/libraries/os/src/os_irqHandler.c b/subprojects/NitroSDK/libraries/os/src/os_irqHandler.c deleted file mode 100644 index d64432296a..0000000000 --- a/subprojects/NitroSDK/libraries/os/src/os_irqHandler.c +++ /dev/null @@ -1,298 +0,0 @@ -#include -#include -#include -#include -#include - -#ifdef SDK_ARM9 -#include -#include -#else -#include -#include -#endif - -#ifdef SDK_ARM9 -#include -#endif - -#ifndef SDK_THREAD_INFINITY -OSThreadQueue OSi_IrqThreadQueue = 0; -#else -OSThreadQueue OSi_IrqThreadQueue = { NULL, NULL }; -#endif - -#ifdef SDK_ARM9 -#include -#include -#endif - -asm void OS_IrqHandler (void) -{ -#ifdef SDK_NO_THREAD -#else - stmfd sp !, { lr } -#endif - mov r12, #HW_REG_BASE - add r12, r12, #REG_IE_OFFSET - ldr r1, [r12, #REG_IME_ADDR - REG_IE_ADDR] - cmp r1, #0 -#ifdef SDK_NO_THREAD - beq @bxeq1 - b @bxeq2 -@bxeq1: - bx lr -@bxeq2: -#else - beq @ldmeqfd3 - b @ldmeqfd4 -@ldmeqfd3: - ldmfd sp !, { pc } -@ldmeqfd4: -#endif - ldmia r12, { r1 - r2 } - ands r1, r1, r2 - -#ifdef SDK_NO_THREAD - beq @bxeq5 - b @bxeq6 -@bxeq5: - bx lr -@bxeq6: -#else - beq @ldmeqfd7 - b @ldmeqfd8 -@ldmeqfd7: - ldmfd sp !, { pc } -@ldmeqfd8: -#endif - -#if defined(SDK_ARM9) && !defined(SDK_CWBUG_PROC_OPT) - mov r3, #1 << 31 - @1 : clz r0, r1 - bics r1, r1, r3, LSR r0 - bne @1 - mov r1, r3, LSR r0 - str r1, [r12, #REG_IF_ADDR - REG_IE_ADDR] - rsbs r0, r0, #31 - -#else - mov r3, #1 - mov r0, #0 - @1: ands r2, r1, r3, LSL r0 - beq @addeq9 - b @addeq10 -@addeq9: - add r0, r0, #1 -@addeq10: - beq @1 - str r2, [r12, #REG_IF_ADDR - REG_IE_ADDR] -#endif - -#ifdef SDK_DEBUG - cmp r0, #OS_IRQ_TABLE_MAX - @2: bge @2 -#endif - ldr r1, = OS_IRQTable - ldr r0, [r1, r0, LSL #2] - -#ifdef SDK_NO_THREAD - bx r0 -#else - ldr lr, = OS_IrqHandler_ThreadSwitch - bx r0 -#endif -} - -asm void OS_IrqHandler_ThreadSwitch (void) -{ -#ifdef SDK_NO_THREAD -#else -#ifndef SDK_THREAD_INFINITY - ldr r12, = OSi_IrqThreadQueue -#if (OS_THREAD_MAX_NUM <= 16) - ldrh r3, [r12] - mov r0, #0 - cmp r3, #0 - beq @thread_switch - strh r0, [r12] -#else - ldr r3, [r12] - mov r0, #0 - cmp r3, #0 - beq @thread_switch - str r0, [r12] -#endif - ldr r12, = OSi_ThreadInfo - mov r1, #1 - strh r1, [r12, #OS_THREADINFO_OFFSET_ISNEEDRESCHEDULING] - ldr r12, [r12, #OS_THREADINFO_OFFSET_LIST] - mov r2, #OS_THREAD_STATE_READY - @1 : - cmp r12, #0 - beq @thread_switch - ldr r0, [r12, #OS_THREAD_OFFSET_ID] - tst r3, r1, LSL r0 - bne @strne1 - b @strne2 -@strne1: - str r2, [r12, #OS_THREAD_OFFSET_STATE] -@strne2: - ldr r12, [r12, #OS_THREAD_OFFSET_NEXT] - b @1 -#else - ldr r12, = OSi_IrqThreadQueue - mov r3, #0 - ldr r12, [r12, #OSThreadQueue.head] - mov r2, #OS_THREAD_STATE_READY - cmp r12, #0 - beq @thread_switch - @1: str r2, [r12, #OSThread.state] - str r3, [r12, #OSThread.queue] - str r3, [r12, #OSThread.link.prev] - ldr r0, [r12, #OSThread.link.next] - str r3, [r12, #OSThread.link.next] - mov r12, r0 - cmp r12, #0 - bne @1 - ldr r12, = OSi_IrqThreadQueue - str r3, [r12, #OSThreadQueue.head] - str r3, [r12, #OSThreadQueue.tail] - ldr r12, = OSi_ThreadInfo - mov r1, #1 - strh r1, [r12, #OS_THREADINFO_OFFSET_ISNEEDRESCHEDULING] -#endif - -@thread_switch: - ldr r12, = OSi_ThreadInfo - ldrh r1, [r12, #OS_THREADINFO_OFFSET_ISNEEDRESCHEDULING] - cmp r1, #0 - beq @ldreq3 - b @ldreq4 -@ldreq3: - ldr pc, [sp], #4 -@ldreq4: - mov r1, #0 - strh r1, [r12, #OS_THREADINFO_OFFSET_ISNEEDRESCHEDULING] - mov r3, #HW_PSR_IRQ_MODE | HW_PSR_FIQ_DISABLE | HW_PSR_IRQ_DISABLE | HW_PSR_ARM_STATE - msr cpsr_c, r3 - add r2, r12, #OS_THREADINFO_OFFSET_LIST - ldr r1, [r2] - @11 : - cmp r1, #0 - bne @ldrneh5 - b @ldrneh6 -@ldrneh5: - ldrh r0, [r1, #OS_THREAD_OFFSET_STATE] -@ldrneh6: - bne @cmpne7 - b @cmpne8 -@cmpne7: - cmp r0, #OS_THREAD_STATE_READY -@cmpne8: - bne @ldrne9 - b @ldrne10 -@ldrne9: - ldr r1, [r1, #OS_THREAD_OFFSET_NEXT] -@ldrne10: - bne @11 - cmp r1, #0 - bne @12 - -_dont_switched_: - mov r3, #HW_PSR_IRQ_MODE | HW_PSR_IRQ_DISABLE | HW_PSR_ARM_STATE - msr cpsr_c, r3 - ldr pc, [sp], #4 - - @12 : - ldr r0, [r12, #OS_THREADINFO_OFFSET_CURRENT] - cmp r1, r0 - beq _dont_switched_ - ldr r3, [r12, #OS_THREADINFO_OFFSET_SWITCHCALLBACK] - cmp r3, #0 - beq @13 - stmfd sp !, { r0, r1, r12 } - mov lr, pc - bx r3 - ldmfd sp !, { r0, r1, r12 } - - @13: - str r1, [r12, #OS_THREADINFO_OFFSET_CURRENT] - mrs r2, SPSR - str r2, [r0, #OS_THREAD_OFFSET_CONTEXT] ! - -#if defined(SDK_ARM9) - stmfd sp !, { r0, r1 } - add r0, r0, #OS_THREAD_OFFSET_CONTEXT - add r0, r0, #OS_CONTEXT_CP_CONTEXT - ldr r1, = CP_SaveContext - blx r1 - ldmfd sp !, { r0, r1 } -#endif - ldmib sp !, { r2, r3 } - stmib r0 !, { r2, r3 } - ldmib sp !, { r2, r3, r12, r14 } - stmib r0 !, { r2 - r14 }^ - stmib r0 !, { r14 } -#ifdef SDK_CONTEXT_HAS_SP_SVC - mov r3, #HW_PSR_SVC_MODE | HW_PSR_FIQ_DISABLE | HW_PSR_IRQ_DISABLE | HW_PSR_ARM_STATE - msr cpsr_c, r3 - stmib r0 !, { sp } -#endif - -#if defined(SDK_ARM9) - stmfd sp !, { r1 } - add r0, r1, #OS_THREAD_OFFSET_CONTEXT - add r0, r0, #OS_CONTEXT_CP_CONTEXT - ldr r1, = CPi_RestoreContext - blx r1 - ldmfd sp !, { r1 } -#endif - -#ifdef SDK_CONTEXT_HAS_SP_SVC - ldr sp, [r1, #OS_THREAD_OFFSET_CONTEXT + OS_CONTEXT_SP_SVC] - mov r3, #HW_PSR_IRQ_MODE | HW_PSR_FIQ_DISABLE | HW_PSR_IRQ_DISABLE | HW_PSR_ARM_STATE - msr cpsr_c, r3 -#endif - ldr r2, [r1, #OS_THREAD_OFFSET_CONTEXT] ! - msr SPSR, r2 - ldr r14, [r1, #OS_CONTEXT_PC_PLUS4 - OS_CONTEXT_CPSR] - ldmib r1, { r0 - r14 }^ - nop - stmda sp !, { r0 - r3, r12, r14 } - ldmfd sp !, { pc } -#endif -} - -#ifdef SDK_ARM9 -#include -#endif - -void OS_WaitIrq (BOOL clear, OSIrqMask irqFlags) -{ -#ifdef SDK_NO_THREAD - OS_WaitInterrupt(clear, irqFlags); - -#else - OSIntrMode enabled = OS_DisableInterrupts(); - - if (clear) { - (void)OS_ClearIrqCheckFlag(irqFlags); - } - - (void)OS_RestoreInterrupts(enabled); - - while (!(OS_GetIrqCheckFlag() & irqFlags)) { - OS_SleepThread(&OSi_IrqThreadQueue); - } -#endif -} - -void OS_WaitAnyIrq (void) -{ -#ifdef SDK_NO_THREAD - OS_Halt(); -#else - OS_SleepThread(&OSi_IrqThreadQueue); -#endif -} \ No newline at end of file diff --git a/subprojects/NitroSDK/libraries/os/src/os_irqTable.c b/subprojects/NitroSDK/libraries/os/src/os_irqTable.c deleted file mode 100644 index 91a9900542..0000000000 --- a/subprojects/NitroSDK/libraries/os/src/os_irqTable.c +++ /dev/null @@ -1,173 +0,0 @@ -#include - -void OSi_IrqCallback(int dmaNo); -void OSi_IrqTimer0(void); -void OSi_IrqTimer1(void); -void OSi_IrqTimer2(void); -void OSi_IrqTimer3(void); -void OSi_IrqDma0(void); -void OSi_IrqDma1(void); -void OSi_IrqDma2(void); -void OSi_IrqDma3(void); - -#ifdef SDK_ARM7 -void OSi_IrqVBlank(void); -#endif - -#ifdef SDK_ARM9 -#include -#endif -OSIrqFunction OS_IRQTable[OS_IRQ_TABLE_MAX] = { -#ifdef SDK_ARM9 - OS_IrqDummy, -#else - OSi_IrqVBlank, -#endif - OS_IrqDummy, - OS_IrqDummy, - OSi_IrqTimer0, - OSi_IrqTimer1, - OSi_IrqTimer2, - OSi_IrqTimer3, - OS_IrqDummy, - OSi_IrqDma0, - OSi_IrqDma1, - OSi_IrqDma2, - OSi_IrqDma3, - OS_IrqDummy, - OS_IrqDummy, - OS_IrqDummy, - OS_IrqDummy, - OS_IrqDummy, - OS_IrqDummy, - OS_IrqDummy, - OS_IrqDummy, - OS_IrqDummy, -#ifdef SDK_ARM9 - OS_IrqDummy, -#else - OS_IrqDummy, - OS_IrqDummy, - OS_IrqDummy, - OS_IrqDummy -#endif -}; -#ifdef SDK_ARM9 -#include -#endif - -#if defined(SDK_TCM_APPLY) && defined(SDK_ARM9) -#include -#endif - -OSIrqCallbackInfo OSi_IrqCallbackInfo[OSi_IRQCALLBACK_NUM] = { - { NULL, 0, 0, }, - { NULL, 0, 0, }, - { NULL, 0, 0, }, - { NULL, 0, 0, }, - { NULL, 0, 0, }, - { NULL, 0, 0, }, - { NULL, 0, 0, }, - { NULL, 0, 0, }, -#ifdef SDK_ARM7 - {NULL, 0, 0, } -#endif -}; - -static u16 OSi_IrqCallbackInfoIndex[OSi_IRQCALLBACK_NUM] = { - REG_OS_IE_D0_SHIFT, REG_OS_IE_D1_SHIFT, REG_OS_IE_D2_SHIFT, REG_OS_IE_D3_SHIFT, - REG_OS_IE_T0_SHIFT, REG_OS_IE_T1_SHIFT, REG_OS_IE_T2_SHIFT, REG_OS_IE_T3_SHIFT, -#ifdef SDK_ARM7 - REG_OS_IE_VB_SHIFT -#endif -}; -#if defined(SDK_TCM_APPLY) && defined(SDK_ARM9) -#include -#endif - -#if defined(SDK_TCM_APPLY) && defined(SDK_ARM9) -#include -#endif - -void OS_IrqDummy (void) -{ - -} - -void OSi_IrqCallback (int index) -{ - OSIrqMask imask = (1UL << OSi_IrqCallbackInfoIndex[index]); - void (*callback) (void *) = OSi_IrqCallbackInfo[index].func; - - OSi_IrqCallbackInfo[index].func = NULL; - - if (callback) { - (callback) (OSi_IrqCallbackInfo[index].arg); - } - - OS_SetIrqCheckFlag(imask); - - if (!OSi_IrqCallbackInfo[index].enable) { - (void)OS_DisableIrqMask(imask); - } -} - -void OSi_IrqDma0 (void) -{ - OSi_IrqCallback(OSi_IRQCALLBACK_NO_DMA0); -} - -void OSi_IrqDma1 (void) -{ - OSi_IrqCallback(OSi_IRQCALLBACK_NO_DMA1); -} - -void OSi_IrqDma2 (void) -{ - OSi_IrqCallback(OSi_IRQCALLBACK_NO_DMA2); -} - -void OSi_IrqDma3 (void) -{ - OSi_IrqCallback(OSi_IRQCALLBACK_NO_DMA3); -} - -void OSi_IrqTimer0 (void) -{ - OSi_IrqCallback(OSi_IRQCALLBACK_NO_TIMER0); -} - -void OSi_IrqTimer1 (void) -{ - OSi_IrqCallback(OSi_IRQCALLBACK_NO_TIMER1); -} - -void OSi_IrqTimer2 (void) -{ - OSi_IrqCallback(OSi_IRQCALLBACK_NO_TIMER2); -} - -void OSi_IrqTimer3 (void) -{ - OSi_IrqCallback(OSi_IRQCALLBACK_NO_TIMER3); -} - -#if defined(SDK_TCM_APPLY) && defined(SDK_ARM9) -#include -#endif - -#ifdef SDK_ARM7 -void OSi_IrqVBlank (void) -{ - void (*callback) (void) = - (void (*)(void)) OSi_IrqCallbackInfo[OSi_IRQCALLBACK_NO_VBLANK].func; - - (*(u32 *)HW_VBLANK_COUNT_BUF)++; - - if (callback) { - (callback) (); - } - - OS_SetIrqCheckFlag(1UL << REG_OS_IE_VB_SHIFT); -} -#endif \ No newline at end of file diff --git a/subprojects/NitroSDK/libraries/os/src/os_message.c b/subprojects/NitroSDK/libraries/os/src/os_message.c deleted file mode 100644 index cecbdd0bec..0000000000 --- a/subprojects/NitroSDK/libraries/os/src/os_message.c +++ /dev/null @@ -1,113 +0,0 @@ -#include -#include - -void OS_InitMessageQueue (OSMessageQueue *mq, OSMessage *msgArray, s32 msgCount) -{ - OS_InitThreadQueue(&mq->queueSend); - OS_InitThreadQueue(&mq->queueReceive); - mq->msgArray = msgArray; - mq->msgCount = msgCount; - mq->firstIndex = 0; - mq->usedCount = 0; -} - -BOOL OS_SendMessage (OSMessageQueue *mq, OSMessage msg, s32 flags) -{ - OSIntrMode enabled; - s32 lastIndex; - - enabled = OS_DisableInterrupts(); - - while (mq->msgCount <= mq->usedCount) { - if (!(flags & OS_MESSAGE_BLOCK)) { - (void)OS_RestoreInterrupts(enabled); - return FALSE; - } else { - OS_SleepThread(&mq->queueSend); - } - } - - lastIndex = (mq->firstIndex + mq->usedCount) % mq->msgCount; - mq->msgArray[lastIndex] = msg; - mq->usedCount++; - - OS_WakeupThread(&mq->queueReceive); - - (void)OS_RestoreInterrupts(enabled); - return TRUE; -} - -BOOL OS_ReceiveMessage (OSMessageQueue *mq, OSMessage *msg, s32 flags) -{ - OSIntrMode enabled; - - enabled = OS_DisableInterrupts(); - - while (mq->usedCount == 0) { - if (!(flags & OS_MESSAGE_BLOCK)) { - (void)OS_RestoreInterrupts(enabled); - return FALSE; - } else { - OS_SleepThread(&mq->queueReceive); - } - } - - if (msg != NULL) { - *msg = mq->msgArray[mq->firstIndex]; - } - mq->firstIndex = (mq->firstIndex + 1) % mq->msgCount; - mq->usedCount--; - - OS_WakeupThread(&mq->queueSend); - - (void)OS_RestoreInterrupts(enabled); - return TRUE; -} - -BOOL OS_JamMessage (OSMessageQueue *mq, OSMessage msg, s32 flags) -{ - OSIntrMode enabled; - - enabled = OS_DisableInterrupts(); - - while (mq->msgCount <= mq->usedCount) { - if (!(flags & OS_MESSAGE_BLOCK)) { - (void)OS_RestoreInterrupts(enabled); - return FALSE; - } else { - OS_SleepThread(&mq->queueSend); - } - } - - mq->firstIndex = (mq->firstIndex + mq->msgCount - 1) % mq->msgCount; - mq->msgArray[mq->firstIndex] = msg; - mq->usedCount++; - - OS_WakeupThread(&mq->queueReceive); - - (void)OS_RestoreInterrupts(enabled); - return TRUE; -} - -BOOL OS_ReadMessage (OSMessageQueue *mq, OSMessage *msg, s32 flags) -{ - OSIntrMode enabled; - - enabled = OS_DisableInterrupts(); - - while (mq->usedCount == 0) { - if (!(flags & OS_MESSAGE_BLOCK)) { - (void)OS_RestoreInterrupts(enabled); - return FALSE; - } else { - OS_SleepThread(&mq->queueReceive); - } - } - - if (msg != NULL) { - *msg = mq->msgArray[mq->firstIndex]; - } - - (void)OS_RestoreInterrupts(enabled); - return TRUE; -} \ No newline at end of file diff --git a/subprojects/NitroSDK/libraries/os/src/os_mutex.c b/subprojects/NitroSDK/libraries/os/src/os_mutex.c deleted file mode 100644 index 6527fcc227..0000000000 --- a/subprojects/NitroSDK/libraries/os/src/os_mutex.c +++ /dev/null @@ -1,227 +0,0 @@ -#include -#include - -void OSi_EnqueueTail(OSThread *thread, OSMutex *mutex); -void OSi_DequeueItem(OSThread *thread, OSMutex *mutex); -OSMutex *OSi_DequeueHead(OSThread *thread); - -void OS_InitMutex (OSMutex *mutex) -{ - SDK_ASSERT(mutex); - - OS_InitThreadQueue(&mutex->queue); - mutex->thread = NULL; - mutex->count = 0; -} - -void OS_LockMutex (OSMutex *mutex) -{ - OSIntrMode saved; - OSThread *currentThread; - OSThread *ownerThread; - - SDK_ASSERT(mutex); - - saved = OS_DisableInterrupts(); - currentThread = OS_GetCurrentThread(); - - for (;;) { - ownerThread = ((volatile OSMutex *)mutex)->thread; - - if (ownerThread == NULL) { - mutex->thread = currentThread; - mutex->count++; - OSi_EnqueueTail(currentThread, mutex); - break; - } else if (ownerThread == currentThread) { - mutex->count++; - break; - } else { - currentThread->mutex = mutex; - OS_SleepThread(&mutex->queue); - currentThread->mutex = NULL; - } - } - - (void)OS_RestoreInterrupts(saved); -} - -void OS_UnlockMutex (OSMutex *mutex) -{ - OSIntrMode saved; - OSThread *currentThread; - - SDK_ASSERT(mutex); - - saved = OS_DisableInterrupts(); - currentThread = OS_GetCurrentThread(); - - if (mutex->thread == currentThread && --mutex->count == 0) { - OSi_DequeueItem(currentThread, mutex); - mutex->thread = NULL; - - OS_WakeupThread(&mutex->queue); - } - - (void)OS_RestoreInterrupts(saved); -} - -void OSi_UnlockAllMutex (OSThread *thread) -{ - OSMutex *mutex; - - SDK_ASSERT(thread); - -#ifndef SDK_THREAD_INFINITY - while (thread->mutexQueueHead) { - mutex = OSi_DequeueHead(thread); - SDK_ASSERT(mutex->thread == thread); - - mutex->count = 0; - mutex->thread = NULL; - OS_WakeupThread(&(mutex->queue)); - } -#else - while (thread->mutexQueue.head) { - mutex = OSi_RemoveMutexLinkFromQueue(&thread->mutexQueue); - - SDK_ASSERT(mutex->thread == thread); - mutex->count = 0; - mutex->thread = NULL; - OS_WakeupThread(&mutex->queue); - - } -#endif -} - -BOOL OS_TryLockMutex (OSMutex *mutex) -{ - OSIntrMode saved; - OSThread *currentThread; - BOOL locked; - - SDK_ASSERT(mutex); - - saved = OS_DisableInterrupts(); - currentThread = OS_GetCurrentThread(); - - if (mutex->thread == NULL) { - mutex->thread = currentThread; - mutex->count++; - OSi_EnqueueTail(currentThread, mutex); - locked = TRUE; - } else if (mutex->thread == currentThread) { - mutex->count++; - locked = TRUE; - } else { - locked = FALSE; - } - - (void)OS_RestoreInterrupts(saved); - return locked; -} - -void OSi_EnqueueTail (OSThread *thread, OSMutex *mutex) -{ -#ifndef SDK_THREAD_INFINITY - OSMutex *prev = thread->mutexQueueTail; - - SDK_ASSERT(thread && mutex); - - if (!prev) { - thread->mutexQueueHead = mutex; - } else { - prev->next = mutex; - } - - mutex->prev = prev; - mutex->next = NULL; - thread->mutexQueueTail = mutex; -#else - OSMutex *prev = thread->mutexQueue.tail; - - SDK_ASSERT(thread && mutex); - - if (!prev) { - thread->mutexQueue.head = mutex; - } else { - prev->link.next = mutex; - } - - mutex->link.prev = prev; - mutex->link.next = NULL; - thread->mutexQueue.tail = mutex; -#endif -} - -void OSi_DequeueItem (OSThread *thread, OSMutex *mutex) -{ -#ifndef SDK_THREAD_INFINITY - OSMutex *next = mutex->next; - OSMutex *prev = mutex->prev; - - SDK_ASSERT(thread && mutex); - - if (!next) { - thread->mutexQueueTail = prev; - } else { - next->prev = prev; - } - - if (!prev) { - thread->mutexQueueHead = next; - } else { - prev->next = next; - } -#else - OSMutex *next = mutex->link.next; - OSMutex *prev = mutex->link.prev; - - SDK_ASSERT(thread && mutex); - - if (!next) { - thread->mutexQueue.tail = prev; - } else { - next->link.prev = prev; - } - - if (!prev) { - thread->mutexQueue.head = next; - } else { - prev->link.next = next; - } -#endif -} - -OSMutex *OSi_DequeueHead (OSThread *thread) -{ -#ifndef SDK_THREAD_INFINITY - OSMutex *mutex = thread->mutexQueueHead; - OSMutex *next = mutex->next; - - SDK_ASSERT(thread); - - if (!next) { - thread->mutexQueueTail = NULL; - } else { - next->prev = NULL; - } - - thread->mutexQueueHead = next; -#else - OSMutex *mutex = thread->mutexQueue.head; - OSMutex *next = mutex->link.next; - - SDK_ASSERT(thread); - - if (!next) { - thread->mutexQueue.tail = NULL; - } else { - next->link.prev = NULL; - } - - thread->mutexQueue.head = next; -#endif - - return mutex; -} \ No newline at end of file diff --git a/subprojects/NitroSDK/libraries/os/src/os_ownerInfo.c b/subprojects/NitroSDK/libraries/os/src/os_ownerInfo.c deleted file mode 100644 index 338f2e431e..0000000000 --- a/subprojects/NitroSDK/libraries/os/src/os_ownerInfo.c +++ /dev/null @@ -1,71 +0,0 @@ -#include -#include - -void OS_GetMacAddress (u8 *macAddress) -{ - u8 *src; - - src = - (u8 *)((u32)(OS_GetSystemWork()->nvramUserInfo) + - ((sizeof(NVRAMConfig) + 3) & ~0x00000003)); - MI_CpuCopy8(src, macAddress, 6); -} - -#ifdef SDK_TS -#if (SDK_TS_VERSION >= 200 || SDK_NVRAM_FORMAT >= 100) - -void OS_GetOwnerInfo (OSOwnerInfo *info) -{ - NVRAMConfig *src; - - src = (NVRAMConfig *)(OS_GetSystemWork()->nvramUserInfo); - info->language = (u8)(src->ncd.option.language); - info->favoriteColor = (u8)(src->ncd.owner.favoriteColor); - info->birthday.month = (u8)(src->ncd.owner.birthday.month); - info->birthday.day = (u8)(src->ncd.owner.birthday.day); - info->nickNameLength = (u16)(src->ncd.owner.nickname.length); - info->commentLength = (u16)(src->ncd.owner.comment.length); - MI_CpuCopy16(src->ncd.owner.nickname.str, - info->nickName, OS_OWNERINFO_NICKNAME_MAX * sizeof(u16)); - MI_CpuCopy16(src->ncd.owner.comment.str, info->comment, OS_OWNERINFO_COMMENT_MAX * sizeof(u16)); - info->nickName[OS_OWNERINFO_NICKNAME_MAX] = 0; - info->comment[OS_OWNERINFO_COMMENT_MAX] = 0; -} - -#endif - -s64 OS_GetOwnerRtcOffset (void) -{ - NVRAMConfig *src = (NVRAMConfig *)(OS_GetSystemWork()->nvramUserInfo); - -#if (SDK_TS_VERSION >= 200 || SDK_NVRAM_FORMAT >= 100) - return src->ncd.option.rtcOffset; -#else - return src->ncd.rtcOffset; -#endif -} - -#endif - -const GXRgb *OS_GetFavoriteColorTable (void) -{ - static const GXRgb col_table[OS_FAVORITE_COLOR_MAX] = { - OS_FAVORITE_COLOR_VALUE_GRAY, - OS_FAVORITE_COLOR_VALUE_BROWN, - OS_FAVORITE_COLOR_VALUE_RED, - OS_FAVORITE_COLOR_VALUE_PINK, - OS_FAVORITE_COLOR_VALUE_ORANGE, - OS_FAVORITE_COLOR_VALUE_YELLOW, - OS_FAVORITE_COLOR_VALUE_LIME_GREEN, - OS_FAVORITE_COLOR_VALUE_GREEN, - OS_FAVORITE_COLOR_VALUE_DARK_GREEN, - OS_FAVORITE_COLOR_VALUE_SEA_GREEN, - OS_FAVORITE_COLOR_VALUE_TURQUOISE, - OS_FAVORITE_COLOR_VALUE_BLUE, - OS_FAVORITE_COLOR_VALUE_DARK_BLUE, - OS_FAVORITE_COLOR_VALUE_PURPLE, - OS_FAVORITE_COLOR_VALUE_VIOLET, - OS_FAVORITE_COLOR_VALUE_MAGENTA, - }; - return col_table; -} \ No newline at end of file diff --git a/subprojects/NitroSDK/libraries/os/src/os_printf.c b/subprojects/NitroSDK/libraries/os/src/os_printf.c deleted file mode 100644 index a6795472cd..0000000000 --- a/subprojects/NitroSDK/libraries/os/src/os_printf.c +++ /dev/null @@ -1,885 +0,0 @@ -#include - -#ifdef SDK_LINK_ISD -# pragma warn_extracomma off -# include -# pragma warn_extracomma reset -#else -void ISDPrint(const char *); -#endif - -#ifndef SDK_FINALROM -static char common_buffer[256]; -#endif - -#if !defined(SDK_FINALROM) && defined(SDK_NO_MESSAGE) -#undef OSi_Warning -#undef OSi_TWarning -#undef OSi_Panic -#undef OSi_TPanic -void OSi_Warning(const char *file, int line, const char *fmt, ...); -void OSi_TWarning(const char *file, int line, const char *fmt, ...); -void OSi_Panic(const char *file, int line, const char *fmt, ...); -void OSi_TPanic(const char *file, int line, const char *fmt, ...); -#endif - -#ifndef SDK_FINALROM -SDK_WEAK_SYMBOL void OS_PutChar (char c) -{ - char str[2]; - - str[0] = c; - str[1] = '\0'; - - OS_PutString(str); -} -#endif - -static void OS_PutStringInit(const char *str); - -#ifndef SDK_FINALROM -static void OS_PutStringAris(const char *str); -static void OS_PutStringISD(const char *str); -#ifdef SDK_ARM7 -static void OS_PutStringPrnSrv(const char *str); -#endif -#endif - -#ifndef SDK_FINALROM -void (*OS_PutString) (const char *str) = OS_PutStringInit; -#endif - -static void OS_PutStringInit (const char *str) -{ -#ifndef SDK_FINALROM - OSIntrMode intr = OS_DisableInterrupts(); - -#ifdef SDK_ARM9 - if (OS_IsRunOnEmulator()) { - OS_PutString = OS_PutStringAris; - } else -#endif - { -#ifdef SDK_ARM7 - OS_PutString = OS_PutStringPrnSrv; -#else - OS_PutString = OS_PutStringISD; -#endif - } - - OS_PutString(str); - - (void)OS_RestoreInterrupts(intr); - -#else - (void)str; -#endif -} - -#ifndef SDK_FINALROM -#ifdef SDK_CW_WARNOFF_SAFESTRB -#include -#endif -static void OS_PutStringAris (const char *str) -{ - char c; - - while ('\0' != (c = *str)) { - reg_OS_EMU_CONSOLE_OUT = (u8)c; - str++; - } -} - -#ifdef SDK_CW_WARNOFF_SAFESTRB -#include -#endif -#endif - -#ifndef SDK_FINALROM -static void OS_PutStringISD (const char *str) -{ - OS_InitLock(); - - OS_PutString = ISDPrint; - OS_PutString(str); -} -#endif - -#ifndef SDK_FINALROM -#if defined(SDK_ARM9) || defined(SDK_USE_VSNPRINTF) -SDK_WEAK_SYMBOL void OS_VPrintf (const char *fmt, va_list vlist) -{ - (void)vsnprintf(common_buffer, sizeof(common_buffer), fmt, vlist); - OS_PutString(common_buffer); -} -#else -SDK_WEAK_SYMBOL void OS_VPrintf (const char *fmt, va_list vlist) -{ - OS_TVPrintf(fmt, vlist); -} -#endif -SDK_WEAK_SYMBOL void OS_TVPrintf (const char *fmt, va_list vlist) -{ - (void)OS_VSNPrintf(common_buffer, sizeof(common_buffer), fmt, vlist); - OS_PutString(common_buffer); -} -SDK_WEAK_SYMBOL void OS_TVPrintfEx (const char *fmt, va_list vlist) -{ - (void)OS_VSNPrintfEx(common_buffer, sizeof(common_buffer), fmt, vlist); - OS_PutString(common_buffer); -} -#endif - -#ifndef SDK_FINALROM -SDK_WEAK_SYMBOL void OS_Printf (const char *fmt, ...) -{ - va_list vlist; - - va_start(vlist, fmt); - OS_VPrintf(fmt, vlist); - va_end(vlist); -} - -SDK_WEAK_SYMBOL void OS_TPrintf (const char *fmt, ...) -{ - va_list vlist; - - va_start(vlist, fmt); - OS_TVPrintf(fmt, vlist); - va_end(vlist); -} - -SDK_WEAK_SYMBOL void OS_TPrintfEx (const char *fmt, ...) -{ - va_list vlist; - - va_start(vlist, fmt); - OS_TVPrintfEx(fmt, vlist); - va_end(vlist); -} -#endif - -#ifndef SDK_FINALROM -SDK_WEAK_SYMBOL void OSi_Warning (const char *file, int line, const char *fmt, ...) -{ - va_list vlist; - - va_start(vlist, fmt); - OS_Printf("%s:%d Warning:", file, line); - OS_VPrintf(fmt, vlist); - OS_Printf("\n"); - va_end(vlist); -} - -SDK_WEAK_SYMBOL void OSi_TWarning (const char *file, int line, const char *fmt, ...) -{ - va_list vlist; - - va_start(vlist, fmt); - OS_TPrintf("%s:%d Warning:", file, line); - OS_TVPrintf(fmt, vlist); - OS_TPrintf("\n"); - va_end(vlist); -} -#endif - -#ifndef SDK_FINALROM -void (*OSi_FuncTerminate) (void) = OS_Terminate; - -SDK_WEAK_SYMBOL void OSi_Panic (const char *file, int line, const char *fmt, ...) -{ - va_list vlist; - - va_start(vlist, fmt); - (void)OS_DisableInterrupts(); - OS_Printf("%s:%d Panic:", file, line); - OS_VPrintf(fmt, vlist); - OS_Printf("\n"); - OSi_FuncTerminate(); -} - -SDK_WEAK_SYMBOL void OSi_TPanic (const char *file, int line, const char *fmt, ...) -{ - va_list vlist; - - va_start(vlist, fmt); - (void)OS_DisableInterrupts(); - OS_TPrintf("%s:%d Panic:", file, line); - OS_TVPrintf(fmt, vlist); - OS_TPrintf("\n"); - OSi_FuncTerminate(); -} -#endif - -#ifdef SDK_ARM9 -#ifndef SDK_FINALROM -void OS_InitPrintServer (void) -{ - OSPrintServerBuffer *p; - - OS_InitArena(); - p = OS_AllocFromSharedArenaHi(sizeof(OSPrintServerBuffer), 4); - p->in = p->out = 0UL; - PXI_SetComponentParam((u32)p); -} -#endif -#endif - -#ifdef SDK_ARM9 -#ifndef SDK_FINALROM -#include -void OS_PrintServer (void) -{ - OSPrintServerBuffer *p; - register OSPrintWChar word; - - u32 in, out; - int i; - - p = (OSPrintServerBuffer *)PXI_GetComponentParam(); - - if (!p) { - return; - } - - out = p->out; - in = p->in; - - while (in != out) { - i = 0; - - while (in != out && i < sizeof(common_buffer) - 3) { - word.s = p->buffer[out].s; - if (word.c[0]) { - common_buffer[i++] = word.c[0]; - - if (word.c[1]) { - common_buffer[i++] = word.c[1]; - } - } - out++; - if (out >= OS_PRINTSRV_WCHARSIZE) - out = 0; - } - common_buffer[i] = '\0'; - OS_PutString(common_buffer); - } - - p->out = out; -} - -#include -#endif -#endif - -#ifdef SDK_ARM7 -static void OS_PutStringPrnSrv (const char *str) -{ -#ifndef SDK_FINALROM - OSPrintServerBuffer *p; - register OSPrintWChar word; - - u32 in, in_tmp, out; - u32 isOdd; - - p = (OSPrintServerBuffer *)PXI_GetComponentParam(); - in = p->in; - out = p->out; - isOdd = ((u32)str) & 1; - - while (1) { - in_tmp = in + 1; - if (in_tmp >= OS_PRINTSRV_WCHARSIZE) - in_tmp = 0; - if (out == in_tmp) - break; - - if (isOdd) { - p->buffer[in].s = word.s = (u16)((*(u16 *)(str - 1)) & 0xff00); - str++; - isOdd = 0UL; - if (!word.c[1]) - break; - in = in_tmp; - } else { - p->buffer[in].s = word.s = *(u16 *)str; - str += 2; - if (!word.c[0]) - break; - in = in_tmp; - if (!word.c[1]) - break; - } - } - p->in = in; -#else - (void)str; -#endif -} -#endif - -#if defined(SDK_CW_WARNOFF_SAFESTRB) -#include -#endif - -typedef struct dst_string_tag { - size_t len; - char *cur; - char *base; -} -dst_string; - -static void string_put_char (dst_string *p, char c) -{ - if (p->len > 0) - *p->cur = c, --p->len; - ++p->cur; -} - -static void string_fill_char (dst_string *p, char c, int n) -{ - if (n > 0) { - size_t i, k = p->len; - if (k > (size_t) n) - k = (size_t) n; - for (i = 0; i < k; ++i) - p->cur[i] = c; - p->len -= k; - p->cur += n; - } -} - -static void string_put_string (dst_string *p, const char *s, int n) -{ - if (n > 0) { - size_t i, k = p->len; - if (k > (size_t) n) - k = (size_t) n; - for (i = 0; i < k; ++i) - p->cur[i] = s[i]; - p->len -= k; - p->cur += n; - } -} - -SDK_WEAK_SYMBOL int OS_SPrintf (char *dst, const char *fmt, ...) -{ - int ret; - va_list va; - va_start(va, fmt); - ret = OS_VSPrintf(dst, fmt, va); - va_end(va); - return ret; -} - -SDK_WEAK_SYMBOL int OS_VSPrintf (char *dst, const char *fmt, va_list vlist) -{ - return OS_VSNPrintf(dst, 0x7FFFFFFF, fmt, vlist); -} - -SDK_WEAK_SYMBOL int OS_SNPrintf (char *dst, size_t len, const char *fmt, ...) -{ - int ret; - va_list va; - va_start(va, fmt); - ret = OS_VSNPrintf(dst, len, fmt, va); - va_end(va); - return ret; -} - -SDK_WEAK_SYMBOL int OS_VSNPrintf (char *dst, size_t len, const char *fmt, va_list vlist) -{ - return STD_TVSNPrintf(dst, len, fmt, vlist); -} - -SDK_WEAK_SYMBOL int OS_VSNPrintfEx (char *dst, size_t len, const char *fmt, va_list vlist) -{ - char buf[24]; - int n_buf; - char prefix[2]; - int n_prefix; - - const char *s = fmt; - - dst_string str; - str.len = len, str.cur = str.base = dst; - - while (*s) { - if ((unsigned int)(((unsigned char)*s ^ 0x20) - 0xA1) < 0x3C) { - - string_put_char(&str, *s++); - if (*s) - string_put_char(&str, *s++); - } else if (*s != '%') { - - string_put_char(&str, *s++); - } else { - - enum { - flag_blank = 000001, - flag_plus = 000002, - flag_sharp = 000004, - flag_minus = 000010, - flag_zero = 000020, - flag_l1 = 000040, - flag_h1 = 000100, - flag_l2 = 000200, - flag_h2 = 000400, - flag_unsigned = 010000, - flag_binary = 020000, - flag_colon = 040000, - flag_end - }; - int flag = 0, width = 0, precision = -1, radix = 10; - char hex_char = 'a' - 10; - const char *p_start = s; - - for (;;) { - switch (*++s) { - case '+': - if (s[-1] != ' ') - break; - flag |= flag_plus; - continue; - case ' ': - flag |= flag_blank; - continue; - case '-': - flag |= flag_minus; - continue; - case '0': - flag |= flag_zero; - continue; - case ':': - flag |= flag_colon; - continue; - } - break; - } - - if (*s == '*') { - ++s, width = va_arg(vlist, int); - if (width < 0) - width = -width, flag |= flag_minus; - } else { - while ((*s >= '0') && (*s <= '9')) - width = (width * 10) + *s++ - '0'; - } - - if (*s == '.') { - ++s, precision = 0; - if (*s == '*') { - ++s, precision = va_arg(vlist, int); - if (precision < 0) - precision = -1; - } else { - while ((*s >= '0') && (*s <= '9')) - precision = (precision * 10) + *s++ - '0'; - } - } - - switch (*s) { - case 'h': - if (*++s != 'h') - flag |= flag_h1; - else - ++s, flag |= flag_h2; - break; - case 'l': - if (*++s != 'l') - flag |= flag_l1; - else - ++s, flag |= flag_l2; - break; - } - - switch (*s) { - case 'd': - case 'i': - goto put_integer; - case 'o': - radix = 8; - flag |= flag_unsigned; - goto put_integer; - case 'u': - flag |= flag_unsigned; - goto put_integer; - case 'X': - hex_char = 'A' - 10; - goto put_hexadecimal; - case 'x': - goto put_hexadecimal; - case 'p': - - flag |= flag_sharp; - precision = 8; - goto put_hexadecimal; - - case 'C': - flag |= flag_l1; - case 'c': - if (precision >= 0) - goto put_invalid; - { - int c = va_arg(vlist, int); - width -= 1; - if (flag & flag_minus) { - if (flag & flag_l1) { - char dst[2]; - - if (STD_ConvertCharUnicodeToSjis(dst, (u16)c) == 1) { - string_put_char(&str, dst[0]); - } else { - string_put_string(&str, dst, 2); - } - } else { - string_put_char(&str, (char)c); - } - string_fill_char(&str, ' ', width); - } else { - char pad = (char)((flag & flag_zero) ? '0' : ' '); - string_fill_char(&str, pad, width); - - if (flag & flag_l1) { - char dst[2]; - - if (STD_ConvertCharUnicodeToSjis(dst, (u16)c) == 1) { - string_put_char(&str, dst[0]); - } else { - string_put_string(&str, dst, 2); - } - } else { - string_put_char(&str, (char)c); - } - } - ++s; - } - break; - - case 'S': - flag |= flag_l1; - case 's': - { - int n_buf = 0; - const char *p_buf = va_arg(vlist, const char *); - - if (precision < 0) { - while (p_buf[n_buf]) { - if (flag & flag_l1) { - n_buf += 2; - } else { - ++n_buf; - } - } - } else { - while ((n_buf < precision) && p_buf[n_buf]) { - if (flag & flag_l1) { - n_buf += 2; - } else { - ++n_buf; - } - } - } - if (flag & flag_l1) { - n_buf /= 2; - } - width -= n_buf; - if (flag & flag_minus) { - if (flag & flag_l1) { - u16 *w_buf = (u16 *)p_buf; - char dst[2]; - - while (n_buf--) { - if (STD_ConvertCharUnicodeToSjis(dst, *w_buf) == 1) { - string_put_char(&str, dst[0]); - } else { - string_put_string(&str, dst, 2); - } - w_buf++; - } - } else { - string_put_string(&str, p_buf, n_buf); - } - string_fill_char(&str, ' ', width); - } else { - char pad = (char)((flag & flag_zero) ? '0' : ' '); - string_fill_char(&str, pad, width); - - if (flag & flag_l1) { - u16 *w_buf = (u16 *)p_buf; - char dst[2]; - - while (n_buf--) { - if (STD_ConvertCharUnicodeToSjis(dst, *w_buf) == 1) { - string_put_char(&str, dst[0]); - } else { - string_put_string(&str, dst, 2); - } - w_buf++; - } - } else { - string_put_string(&str, p_buf, n_buf); - } - } - ++s; - } - break; - - case 'B': - hex_char = 'A' - 10; - case 'b': - { - int n_buf = width; - int count = 0; - char c = 0; - char *p_buf = va_arg(vlist, char *); - - if (n_buf <= 0) { - n_buf = 1; - } - width = 0; - - if (flag & flag_minus) { - while (1) { - - char left_char, right_char; - int left = ((p_buf[count] & 0xF0) >> 4); - int right = (p_buf[count] & 0x0F); - - left_char = (char)((left < 10) ? (left + '0') : (left + hex_char)); - right_char = (char)((right < 10) ? (right + '0') : (right + hex_char)); - - string_put_char(&str, left_char); - string_put_char(&str, right_char); - - count++; - - if (count >= n_buf) - break; - - if (count == precision) { - string_put_char(&str, '\n'); - } else if (flag & flag_colon) { - string_put_char(&str, ':'); - } else if (flag & flag_blank) { - string_put_char(&str, ' '); - } - } - string_fill_char(&str, ' ', width); - } else { - char pad = (char)((flag & flag_zero) ? '0' : ' '); - string_fill_char(&str, pad, width); - - while (1) { - char left_char, right_char; - int left = ((p_buf[count] & 0xF0) >> 4); - int right = (p_buf[count] & 0x0F); - - left_char = (char)((left < 10) ? (left + '0') : (left + hex_char)); - right_char = (char)((right < 10) ? (right + '0') : (right + hex_char)); - - string_put_char(&str, left_char); - string_put_char(&str, right_char); - - count++; - - if (count >= n_buf) - break; - - if (count == precision) { - string_put_char(&str, '\n'); - } else if (flag & flag_colon) { - string_put_char(&str, ':'); - } - if (flag & flag_blank) { - string_put_char(&str, ' '); - } - } - } - ++s; - } - break; - - case 'n': - { - int pos = str.cur - str.base; - if (flag & flag_h2) - ; - else if (flag & flag_h1) - *va_arg(vlist, signed short *) = (signed short)pos; - else if (flag & flag_l2) - *va_arg(vlist, u64 *) = (u64)pos; - else - *va_arg(vlist, signed int *) = (signed int)pos; - } - ++s; - break; - - case '%': - if (p_start + 1 != s) - goto put_invalid; - string_put_char(&str, *s++); - break; - - default: - goto put_invalid; - -put_invalid: - string_put_string(&str, p_start, s - p_start); - break; - -put_hexadecimal: - radix = 16; - flag |= flag_unsigned; -put_integer: - { - u64 val = 0; - n_prefix = 0; - - if (flag & flag_minus) - flag &= ~flag_zero; - if (precision < 0) - precision = 1; - else - flag &= ~flag_zero; - - if (flag & flag_unsigned) { - if (flag & flag_h2) - val = va_arg(vlist, unsigned char); - else if (flag & flag_h1) - val = va_arg(vlist, unsigned short); - else if (flag & flag_l2) - val = va_arg(vlist, u64); - else - val = va_arg(vlist, unsigned long); - flag &= ~(flag_plus | flag_blank); - if (flag & flag_sharp) { - if (radix == 16) { - if (val != 0) { - prefix[0] = (char)(hex_char + (10 + 'x' - 'a')); - prefix[1] = '0'; - n_prefix = 2; - } - } else if (radix == 8) { - prefix[0] = '0'; - n_prefix = 1; - } - } - } else { - if (flag & flag_h2) - val = va_arg(vlist, char); - else if (flag & flag_h1) - val = va_arg(vlist, short); - else if (flag & flag_l2) - val = va_arg(vlist, u64); - else - val = va_arg(vlist, long); - if ((val >> 32) & 0x80000000) { - val = ~val + 1; - prefix[0] = '-'; - n_prefix = 1; - } else { - if (val || precision) { - if (flag & flag_plus) { - prefix[0] = '+'; - n_prefix = 1; - } else if (flag & flag_blank) { - prefix[0] = ' '; - n_prefix = 1; - } - } - } - } - n_buf = 0; - switch (radix) { - case 8: - while (val != 0) { - int d = (int)(val & 0x07); - val >>= 3; - buf[n_buf++] = (char)(d + '0'); - } - break; - case 10: - if ((val >> 32) == 0) { -#if defined(SDK_CW) || defined(__MWERKS__) -#pragma optimize_for_size off -#endif - u32 v = (u32)val; - while (v != 0) { - - u32 r = v / 10; - int d = (int)(v - (r * 10)); - v = r; - buf[n_buf++] = (char)(d + '0'); - } - } else { - while (val != 0) { - u64 r = val / 10; - int d = (int)(val - (r * 10)); - val = r; - buf[n_buf++] = (char)(d + '0'); - } - } - break; - case 16: - while (val != 0) { - int d = (int)(val & 0x0f); - val >>= 4; - buf[n_buf++] = (char)((d < 10) ? (d + '0') : (d + hex_char)); - } - break; - } - if ((n_prefix > 0) && (prefix[0] == '0')) { - n_prefix = 0; - buf[n_buf++] = '0'; - } - } - goto put_to_stream; - -put_to_stream: - { - int n_pad = precision - n_buf; - if (flag & flag_zero) { - if (n_pad < width - n_buf - n_prefix) - n_pad = width - n_buf - n_prefix; - } - if (n_pad > 0) - width -= n_pad; - width -= n_prefix + n_buf; - if (!(flag & flag_minus)) - string_fill_char(&str, ' ', width); - while (n_prefix > 0) - string_put_char(&str, prefix[--n_prefix]); - string_fill_char(&str, '0', n_pad); - while (n_buf > 0) - string_put_char(&str, buf[--n_buf]); - if (flag & flag_minus) - string_fill_char(&str, ' ', width); - ++s; - } - break; - } - } - } - - if (str.len > 0) - *str.cur = '\0'; - else if (len > 0) - str.base[len - 1] = '\0'; - return str.cur - str.base; -} - -#if defined(SDK_CW_WARNOFF_SAFESTRB) -#include -#endif - -#ifdef SDK_FINALROM -#ifdef OS_Printf -#undef OS_Printf -#endif -void OS_Printf(const char *fmt, ...); -void OS_Printf (const char *fmt, ...) -{ -#pragma unused( fmt ) -} -#endif \ No newline at end of file diff --git a/subprojects/NitroSDK/libraries/os/src/os_protectionRegion.c b/subprojects/NitroSDK/libraries/os/src/os_protectionRegion.c deleted file mode 100644 index c457ff7153..0000000000 --- a/subprojects/NitroSDK/libraries/os/src/os_protectionRegion.c +++ /dev/null @@ -1,196 +0,0 @@ -#include -#include - -asm void OS_EnableICacheForProtectionRegion (register u32 flags) -{ - mrc p15, 0, r1, c2, c0, 1 - orr r1, r1, r0 - mcr p15, 0, r1, c2, c0, 1 - bx lr -} - -asm void OS_DisableICacheForProtectionRegion (register u32 flags) -{ - mrc p15, 0, r1, c2, c0, 1 - bic r1, r1, r0 - mcr p15, 0, r1, c2, c0, 1 - bx lr -} - -asm u32 OS_GetICacheEnableFlagsForProtectionRegion (void) -{ - mrc p15, 0, r0, c2, c0, 1 - bx lr -} - -asm void OS_SetIPermissionsForProtectionRegion (register u32 setMask, register u32 flags) -{ - mrc p15, 0, r2, c5, c0, 3 - bic r2, r2, r0 - orr r2, r2, r1 - mcr p15, 0, r2, c5, c0, 3 - bx lr -} - -asm u32 OS_GetIPermissionsForProtectionRegion (void) -{ - mrc p15, 0, r0, c5, c0, 3 - bx lr -} - -asm void OS_EnableDCacheForProtectionRegion (register u32 flags) -{ - mrc p15, 0, r1, c2, c0, 0 - orr r1, r1, r0 - mcr p15, 0, r1, c2, c0, 0 - bx lr -} - -asm void OS_DisableDCacheForProtectionRegion (register u32 flags) -{ - mrc p15, 0, r1, c2, c0, 0 - bic r1, r1, r0 - mcr p15, 0, r1, c2, c0, 0 - bx lr -} - -asm u32 OS_GetDCacheEnableFlagsForProtectionRegion (register u32 flags) -{ - mrc p15, 0, r0, c2, c0, 0 - bx lr -} - -asm void OS_SetDPermissionsForProtectionRegion (register u32 setMask, register u32 flags) -{ - mrc p15, 0, r2, c5, c0, 2 - bic r2, r2, r0 - orr r2, r2, r1 - mcr p15, 0, r2, c5, c0, 2 - bx lr -} - -asm u32 OS_GetDPermissionsForProtectionRegion (void) -{ - mrc p15, 0, r0, c5, c0, 2 - bx lr -} - -asm void OS_EnableWriteBufferForProtectionRegion (register u32 flags) -{ - mrc p15, 0, r1, c3, c0, 0 - orr r1, r1, r0 - mcr p15, 0, r1, c3, c0, 0 - bx lr -} - -asm void OS_DisableWriteBufferForProtectionRegion (register u32 flags) -{ - mrc p15, 0, r1, c3, c0, 0 - bic r1, r1, r0 - mcr p15, 0, r1, c3, c0, 0 - bx lr -} - -asm u32 OS_GetWriteBufferEnableFlagsForProtectionRegion (register u32 flags) -{ - mrc p15, 0, r0, c3, c0, 0 - bx lr -} - -asm void OS_SetProtectionRegion0 (u32 param) -{ - mcr p15, 0, r0, c6, c0, 0 - bx lr -} - -asm void OS_SetProtectionRegion1 (u32 param) -{ - mcr p15, 0, r0, c6, c1, 0 - bx lr -} - -asm void OS_SetProtectionRegion2 (u32 param) -{ - mcr p15, 0, r0, c6, c2, 0 - bx lr -} - -asm void OS_SetProtectionRegion3 (u32 param) -{ - mcr p15, 0, r0, c6, c3, 0 - bx lr -} - -asm void OS_SetProtectionRegion4 (u32 param) -{ - mcr p15, 0, r0, c6, c4, 0 - bx lr -} - -asm void OS_SetProtectionRegion5 (u32 param) -{ - mcr p15, 0, r0, c6, c5, 0 - bx lr -} - -asm void OS_SetProtectionRegion6 (u32 param) -{ - mcr p15, 0, r0, c6, c6, 0 - bx lr -} - -asm void OS_SetProtectionRegion7 (u32 param) -{ - mcr p15, 0, r0, c6, c7, 0 - bx lr -} - -asm u32 OS_GetProtectionRegion0 (void) -{ - mrc p15, 0, r0, c6, c0, 0 - bx lr -} - -asm u32 OS_GetProtectionRegion1 (void) -{ - mrc p15, 0, r0, c6, c1, 0 - bx lr -} - -asm u32 OS_GetProtectionRegion2 (void) -{ - mrc p15, 0, r0, c6, c2, 0 - bx lr -} - -asm u32 OS_GetProtectionRegion3 (void) -{ - mrc p15, 0, r0, c6, c3, 0 - bx lr -} - -asm u32 OS_GetProtectionRegion4 (void) -{ - mrc p15, 0, r0, c6, c4, 0 - bx lr -} - -asm u32 OS_GetProtectionRegion5 (void) -{ - mrc p15, 0, r0, c6, c5, 0 - bx lr -} - -asm u32 OS_GetProtectionRegion6 (void) -{ - mrc p15, 0, r0, c6, c6, 0 - bx lr -} - -asm u32 OS_GetProtectionRegion7 (void) -{ - mrc p15, 0, r0, c6, c7, 0 - bx lr -} - -#include \ No newline at end of file diff --git a/subprojects/NitroSDK/libraries/os/src/os_protectionUnit.c b/subprojects/NitroSDK/libraries/os/src/os_protectionUnit.c deleted file mode 100644 index b7a4ac3afa..0000000000 --- a/subprojects/NitroSDK/libraries/os/src/os_protectionUnit.c +++ /dev/null @@ -1,20 +0,0 @@ -#include -#include - -asm void OS_EnableProtectionUnit (void) -{ - mrc p15, 0, r0, c1, c0, 0 - orr r0, r0, #HW_C1_PROTECT_UNIT_ENABLE - mcr p15, 0, r0, c1, c0, 0 - bx lr -} - -asm void OS_DisableProtectionUnit (void) -{ - mrc p15, 0, r0, c1, c0, 0 - bic r0, r0, #HW_C1_PROTECT_UNIT_ENABLE - mcr p15, 0, r0, c1, c0, 0 - bx lr -} - -#include \ No newline at end of file diff --git a/subprojects/NitroSDK/libraries/os/src/os_reset.c b/subprojects/NitroSDK/libraries/os/src/os_reset.c deleted file mode 100644 index 9545f25c55..0000000000 --- a/subprojects/NitroSDK/libraries/os/src/os_reset.c +++ /dev/null @@ -1,398 +0,0 @@ -#include -#include -#include -#include - -#include - -extern void SDK_IRQ_STACKSIZE(void); - -#define OS_PXI_COMMAND_RESET 0x10 - -#define OS_PXI_COMMAND_MASK 0x00007f00 -#define OS_PXI_COMMAND_SHIFT 8 -#define OS_PXI_DATA_MASK 0x000000ff -#define OS_PXI_DATA_SHIFT 0 - -#ifdef SDK_ARM9 -#define OSi_HW_DTCM SDK_AUTOLOAD_DTCM_START -#endif - -#ifdef SDK_ARM9 -static void OSi_CpuClear32(register u32 data, register void *destp, register u32 size); -static void OSi_ReloadRomData(void); -static void OSi_ReadCardRom32(u32 src, void *dst, int len); -#endif - -static void OSi_CommonCallback(PXIFifoTag tag, u32 data, BOOL err); -static void OSi_DoResetSystem(void); -static void OSi_DoBoot(void); -static void OSi_SendToPxi(u16 data); - -static u16 OSi_IsInitReset = FALSE; -static vu16 OSi_IsResetOccurred = FALSE; - -void OS_InitReset (void) -{ - if (OSi_IsInitReset) { - return; - } - OSi_IsInitReset = TRUE; - -#ifdef SDK_ARM9 - - PXI_Init(); - while (!PXI_IsCallbackReady(PXI_FIFO_TAG_OS, PXI_PROC_ARM7)) { - } -#endif - - PXI_SetFifoRecvCallback(PXI_FIFO_TAG_OS, OSi_CommonCallback); -} - -BOOL OS_IsResetOccurred (void) -{ - return OSi_IsResetOccurred; -} - -static void OSi_CommonCallback (PXIFifoTag tag, u32 data, BOOL err) -{ -#pragma unused( tag, err ) - u16 command; - u16 commandArg; - - command = (u16)((data & OS_PXI_COMMAND_MASK) >> OS_PXI_COMMAND_SHIFT); - commandArg = (u16)((data & OS_PXI_DATA_MASK) >> OS_PXI_DATA_SHIFT); - -#ifdef SDK_ARM9 - if (command == OS_PXI_COMMAND_RESET) { - OSi_IsResetOccurred = TRUE; - } else { -#ifndef SDK_FINALROM - OS_Panic("unknown command"); -#else - OS_Panic(""); -#endif - } - -#else - if (command == OS_PXI_COMMAND_RESET) { - OSi_IsResetOccurred = TRUE; - } else { -#ifndef SDK_FINALROM - OS_Panic("unknown command"); -#else - OS_Panic(""); -#endif - } -#endif -} - -static void OSi_SendToPxi (u16 data) -{ - u32 pxi_send_data; - - pxi_send_data = ((u32)data) << OS_PXI_COMMAND_SHIFT; - while (PXI_SendWordByFifo(PXI_FIFO_TAG_OS, pxi_send_data, FALSE) != PXI_FIFO_SUCCESS) { - } -} - -#define RESET_HW_DTCM_IRQ_STACK_END SDK_AUTOLOAD_DTCM_START + 0x00003fc0 - HW_SVC_STACK_SIZE - -#ifdef SDK_ARM9 -void OS_ResetSystem (u32 parameter) -{ - - if (MB_IsMultiBootChild()) { -#ifndef SDK_FINALROM - OS_Panic("cannot reset from MB child"); -#else - OS_Panic(""); -#endif - } - - { - u16 id = (u16)OS_GetLockID(); - CARD_LockRom(id); - } - - MI_StopDma(0); - MI_StopDma(1); - MI_StopDma(2); - MI_StopDma(3); - - (void)OS_SetIrqMask(OS_IE_FIFO_RECV); - (void)OS_ResetRequestIrqMask(0xffffffff); - - *(u32 *)HW_RESET_PARAMETER_BUF = parameter; - - OSi_SendToPxi(OS_PXI_COMMAND_RESET); - - asm - { - - ldr r0, = RESET_HW_DTCM_IRQ_STACK_END; - ldr r1, = SDK_IRQ_STACKSIZE; - sub r0, r0, r1; - mov sp, r0; - - bl OSi_DoResetSystem; - } - -} - -#else -void OS_ResetSystem (void) -{ - MI_StopDma(0); - MI_StopDma(1); - MI_StopDma(2); - MI_StopDma(3); - - (void)OS_SetIrqMask(OS_IE_FIFO_RECV); - (void)OS_ResetRequestIrqMask(0xffffffff); - - SND_Shutdown(); - - OSi_SendToPxi(OS_PXI_COMMAND_RESET); - OSi_DoResetSystem(); -} -#endif - -#ifdef SDK_ARM9 -#include -static void OSi_DoResetSystem (void) -{ - while (!(vu16)OSi_IsResetOccurred) { - } - - reg_OS_IME = 0; - - OSi_ReloadRomData(); - - OSi_DoBoot(); -} - -#include - -#else -#include -static void OSi_DoResetSystem (void) -{ - reg_OS_IME = 0; - OSi_DoBoot(); -} - -#include -#endif - -#ifdef SDK_ARM9 -#include -asm void OSi_DoBoot (void) -{ - mov r12, #HW_REG_BASE - str r12, [r12, #REG_IME_OFFSET] - ldr r1, = OSi_HW_DTCM - add r1, r1, #0x3fc0 - add r1, r1, #HW_DTCM_SYSRV_OFS_INTR_VECTOR - mov r0, #0 - str r0, [r1, #0] - ldr r1, = REG_SUBPINTF_ADDR - @1: - ldrh r0, [r1] - and r0, r0, #0x000f - cmp r0, #0x0001 - bne @1 - mov r0, #0x0100 - strh r0, [r1] - mov r0, #0 - ldr r3, = HW_EXCP_VECTOR_MAIN - ldr r4, [r3] - ldr r1, = HW_BIOS_EXCP_STACK_MAIN - mov r2, #0x80 - bl OSi_CpuClear32 - str r4, [r3] - ldr r1, = HW_PXI_SIGNAL_PARAM_ARM9 - mov r2, #0x18 - bl OSi_CpuClear32 - ldr r1, = HW_WM_RSSI_POOL - strh r0, [r1] - ldr r1, = HW_COMPONENT_PARAM - mov r2, #0x64 - bl OSi_CpuClear32 - ldr r1, = REG_SUBPINTF_ADDR - @2: - ldrh r0, [r1] - and r0, r0, #0x000f - cmp r0, #0x0001 - beq @2 - mov r0, #0 - strh r0, [r1] - ldr r3, = HW_ROM_HEADER_BUF - ldr r12, [r3, #0x24] - mov lr, r12 - ldr r11, = HW_PXI_SIGNAL_PARAM_ARM9 - ldmia r11, {r0 - r10} - mov r11, #0 - bx r12 -} - -#include -#else -#include -asm void OSi_DoBoot (void) -{ - mov r12, #HW_REG_BASE - str r12, [r12, #REG_IME_OFFSET] - ldr r1, = HW_INTR_VECTOR_BUF - mov r0, #0 - str r0, [r1, #0] - ldr r1, = REG_MAINPINTF_ADDR - mov r0, #0x0100 - strh r0, [r1] - @1: - ldrh r0, [r1] - and r0, r0, #0x000f - cmp r0, #0x0001 - bne @1 - ldr r1, = REG_MAINPINTF_ADDR - mov r0, #0 - strh r0, [r1] - @2 : - ldrh r0, [r1] - cmp r0, #0x0001 - beq @2 - ldr r3, = HW_ROM_HEADER_BUF - ldr r12, [r3, #0x34] - mov lr, r12 - mov r0, #0 - mov r1, #0 - mov r2, #0 - mov r3, #0 - bx r12 -} -#include -#endif - -#ifdef SDK_ARM9 -#include - -static asm void OSi_CpuClear32 (register u32 data, register void *destp, register u32 size) -{ - add r12, r1, r2 - @1: - cmp r1, r12 - blt @stmltia1 - b @stmltia2 -@stmltia1: - stmia r1 !, {r0} -@stmltia2: - blt @1 - bx lr -} - -static void OSi_ReloadRomData (void) -{ - u32 p = (u32)HW_ROM_HEADER_BUF; - const u32 rom_base = *(u32 *)HW_ROM_BASE_OFFSET_BUF; - - if (rom_base >= 0x8000) - OSi_ReadCardRom32(rom_base, (void *)p, 0x160); - - { - u32 src_arm9 = *(u32 *)(p + 0x20); - u32 dst_arm9 = *(u32 *)(p + 0x28); - u32 len_arm9 = *(u32 *)(p + 0x2c); - u32 src_arm7 = *(u32 *)(p + 0x30); - u32 dst_arm7 = *(u32 *)(p + 0x38); - u32 len_arm7 = *(u32 *)(p + 0x3c); - - { - OSIntrMode bak_cpsr = OS_DisableInterrupts(); - DC_StoreAll(); - DC_InvalidateAll(); - (void)OS_RestoreInterrupts(bak_cpsr); - } - IC_InvalidateAll(); - DC_WaitWriteBufferEmpty(); - - src_arm9 += rom_base; - src_arm7 += rom_base; - - if (src_arm9 < 0x8000) { - u32 diff = 0x8000 - src_arm9; - src_arm9 = 0x8000; - dst_arm9 += diff; - len_arm9 -= diff; - } - OSi_ReadCardRom32(src_arm9, (void *)dst_arm9, (int)len_arm9); - - OSi_ReadCardRom32(src_arm7, (void *)dst_arm7, (int)len_arm7); - } -} - -static void OSi_ReadCardRom32 (u32 src, void *dst, int len) -{ - vu8 *const reg_CARD_MASTERCNT = (vu8 *)(HW_REG_BASE + 0x1a1); - vu8 *const reg_CARD_CMD = (vu8 *)(HW_REG_BASE + 0x1a8); - vu32 *const reg_CARD_CNT = (vu32 *)(HW_REG_BASE + 0x1a4); - vu32 *const reg_CARD_DATA = (vu32 *)(HW_REG_BASE + 0x100010); - vu32 *const hdr_GAME_BUF = (vu32 *)(HW_ROM_HEADER_BUF + 0x60); - - enum { - CARD_MASTER_SELECT_ROM = 0x00, - CARD_MASTER_ENABLE = 0x80, - CARD_CMD_READ_PAGE = 0xb7, - CARD_CTRL_CMD_MASK = 0x07000000, - CARD_CTRL_CMD_PAGE = 0x01000000, - CARD_CTRL_READ = 0x00000000, - CARD_CTRL_RESET_HI = 0x20000000, - CARD_CTRL_START = 0x80000000, - CARD_CTRL_READY = 0x00800000, - CARD_ENUM_END - }; - - const u32 ctrl_start = (u32)((*hdr_GAME_BUF & ~CARD_CTRL_CMD_MASK) - | (CARD_CTRL_CMD_PAGE | CARD_CTRL_READ - | CARD_CTRL_START | CARD_CTRL_RESET_HI)); - - int pos = -(int)(src & (512 - 1)); - - while ((*reg_CARD_CNT & CARD_CTRL_START) != 0) { - } - *reg_CARD_MASTERCNT = (u32)(CARD_MASTER_SELECT_ROM | CARD_MASTER_ENABLE); - - for (src = (u32)(src + pos); pos < len; src += 512) { - - reg_CARD_CMD[0] = (u8)(CARD_CMD_READ_PAGE); - reg_CARD_CMD[1] = (u8)(src >> 24); - reg_CARD_CMD[2] = (u8)(src >> 16); - reg_CARD_CMD[3] = (u8)(src >> 8); - reg_CARD_CMD[4] = (u8)(src >> 0); - reg_CARD_CMD[5] = (u8)(0); - reg_CARD_CMD[6] = (u8)(0); - reg_CARD_CMD[7] = (u8)(0); - - *reg_CARD_CNT = ctrl_start; - for (;;) { - u32 ctrl = *reg_CARD_CNT; - - if ((ctrl & CARD_CTRL_READY) != 0) { - - const u32 data = *reg_CARD_DATA; - - if ((pos >= 0) && (pos < len)) { - *(u32 *)((u32)dst + pos) = data; - } - - pos += sizeof(u32); - } - - if (!(ctrl & CARD_CTRL_START)) { - break; - } - } - } -} - -#include -#endif \ No newline at end of file diff --git a/subprojects/NitroSDK/libraries/os/src/os_spinLock.c b/subprojects/NitroSDK/libraries/os/src/os_spinLock.c deleted file mode 100644 index dc54fd9379..0000000000 --- a/subprojects/NitroSDK/libraries/os/src/os_spinLock.c +++ /dev/null @@ -1,451 +0,0 @@ -#include - -void _ISDbgLib_Initialize(void); -void _ISDbgLib_AllocateEmualtor(void); -void _ISDbgLib_FreeEmulator(void); -s32 OS_LockByWord_IrqAndFiq(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp)(void)); -s32 OS_UnlockByWord_IrqAndFiq(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp)(void)); -s32 OS_TryLockByWord_IrqAndFiq(u16 lockID, OSLockWord *lockp, void (*crtlFuncp)(void)); -static s32 OSi_DoLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp)(void), BOOL disableFiq); -static s32 OSi_DoUnlockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp)(void), BOOL disableFIQ); -static s32 OSi_DoTryLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp)(void), BOOL disableFIQ); -static void OSi_AllocateCartridgeBus(void); -static void OSi_FreeCartridgeBus(void); -static void OSi_AllocateCardBus(void); -static void OSi_FreeCardBus(void); -static void OSi_WaitByLoop(void); - -#ifdef SDK_ARM9 -#define OSi_ASSERT_ID(id) SDK_ASSERTMSG(id >= OS_MAINP_LOCK_ID_START && id <= OS_MAINP_SYSTEM_LOCK_ID, \ - "lock ID %d is out of bounds", id) -#else -#define OSi_ASSERT_ID(id) SDK_ASSERTMSG(id >= OS_SUBP_LOCK_ID_START && id <= OS_SUBP_SYSTEM_LOCK_ID, \ - "lock ID %d is out of bounds", id) -#endif - -#define OSi_LOCKID_INITIAL_FLAG_0 0xffffffff -#define OSi_LOCKID_INITIAL_FLAG_1 0xffff0000 - -#ifdef SDK_ARM9 -#define OSi_ANYP_LOCK_ID_FLAG HW_LOCK_ID_FLAG_MAIN -#define OSi_ANYP_LOCK_ID_START OS_MAINP_LOCK_ID_START -#else -#define OSi_ANYP_LOCK_ID_FLAG HW_LOCK_ID_FLAG_SUB -#define OSi_ANYP_LOCK_ID_START OS_SUBP_LOCK_ID_START -#endif - -static inline void OSi_WaitByLoop (void) -{ - SVC_WaitByLoop(0x1000 / 4); -} - -void OS_InitLock (void) -{ - static BOOL isInitialized = FALSE; - OSLockWord *lockp; - - if (isInitialized) - return; - isInitialized = TRUE; - - lockp = (OSLockWord *)HW_INIT_LOCK_BUF; - -#ifdef SDK_ARM9 - { - lockp->lockFlag = 0; - (void)OS_LockByWord(OS_MAINP_SYSTEM_LOCK_ID - 1, lockp, NULL); - - while (lockp->extension != 0) { - OSi_WaitByLoop(); - } - - ((u32 *)OSi_ANYP_LOCK_ID_FLAG)[0] = OSi_LOCKID_INITIAL_FLAG_0; - ((u32 *)OSi_ANYP_LOCK_ID_FLAG)[1] = OSi_LOCKID_INITIAL_FLAG_1; - - MI_CpuClear32((void *)HW_SHARED_LOCK_BUF, HW_CTRDG_LOCK_BUF - HW_SHARED_LOCK_BUF); - MIi_SetCardProcessor(MI_PROCESSOR_ARM7); - MIi_SetCartridgeProcessor(MI_PROCESSOR_ARM7); - -#ifndef SDK_FINALROM - _ISDbgLib_Initialize(); -#endif - - (void)OS_UnlockByWord(OS_MAINP_SYSTEM_LOCK_ID - 1, lockp, NULL); - (void)OS_LockByWord(OS_MAINP_SYSTEM_LOCK_ID, lockp, NULL); - } - -#else - { - lockp->extension = 0; - while (lockp->ownerID != OS_MAINP_SYSTEM_LOCK_ID) { - OSi_WaitByLoop(); - } - -#ifndef SDK_FINALROM - _ISDbgLib_Initialize(); -#endif - - ((u32 *)OSi_ANYP_LOCK_ID_FLAG)[0] = OSi_LOCKID_INITIAL_FLAG_0; - ((u32 *)OSi_ANYP_LOCK_ID_FLAG)[1] = OSi_LOCKID_INITIAL_FLAG_1; - - lockp->extension = OS_SUBP_SYSTEM_LOCK_ID; - } -#endif -} - -static s32 OSi_DoLockByWord (u16 lockID, OSLockWord *lockp, void (*ctrlFuncp)(void), - BOOL disableFiq) -{ - s32 lastLockFlag; - - while ((lastLockFlag = - OSi_DoTryLockByWord(lockID, lockp, ctrlFuncp, disableFiq)) > OS_LOCK_SUCCESS) { - OSi_WaitByLoop(); - } - - return lastLockFlag; -} - -s32 OS_LockByWord (u16 lockID, OSLockWord *lockp, void (*ctrlFuncp)(void)) -{ - return OSi_DoLockByWord(lockID, lockp, ctrlFuncp, FALSE); -} - -s32 OS_LockByWord_IrqAndFiq (u16 lockID, OSLockWord *lockp, void (*ctrlFuncp)(void)) -{ - return OSi_DoLockByWord(lockID, lockp, ctrlFuncp, TRUE); -} - -static s32 OSi_DoUnlockByWord (u16 lockID, OSLockWord *lockp, void (*ctrlFuncp)(void), - BOOL disableFIQ) -{ - OSIntrMode lastInterrupts; - - OSi_ASSERT_ID(lockID); - - if (lockID != lockp->ownerID) { - return OS_UNLOCK_ERROR; - } - - lastInterrupts = (disableFIQ) ? OS_DisableInterrupts_IrqAndFiq() : OS_DisableInterrupts(); - - lockp->ownerID = 0; - if (ctrlFuncp) { - ctrlFuncp(); - } - lockp->lockFlag = 0; - - if (disableFIQ) { - (void)OS_RestoreInterrupts_IrqAndFiq(lastInterrupts); - } else { - (void)OS_RestoreInterrupts(lastInterrupts); - } - - return OS_UNLOCK_SUCCESS; -} - -s32 OS_UnlockByWord (u16 lockID, OSLockWord *lockp, void (*ctrlFuncp)(void)) -{ - return OSi_DoUnlockByWord(lockID, lockp, ctrlFuncp, FALSE); -} - -s32 OS_UnLockByWord (u16 lockID, OSLockWord *lockp, void (*ctrlFuncp)(void)) -{ - return OSi_DoUnlockByWord(lockID, lockp, ctrlFuncp, FALSE); -} - -s32 OS_UnlockByWord_IrqAndFiq (u16 lockID, OSLockWord *lockp, void (*ctrlFuncp)(void)) -{ - return OSi_DoUnlockByWord(lockID, lockp, ctrlFuncp, TRUE); -} - -static s32 OSi_DoTryLockByWord (u16 lockID, OSLockWord *lockp, void (*ctrlFuncp)(void), - BOOL disableFIQ) -{ - s32 lastLockFlag; - OSIntrMode lastInterrupts; - - OSi_ASSERT_ID(lockID); - - lastInterrupts = (disableFIQ) ? OS_DisableInterrupts_IrqAndFiq() : OS_DisableInterrupts(); - - lastLockFlag = (s32)MI_SwapWord(lockID, &lockp->lockFlag); - - if (lastLockFlag == OS_LOCK_SUCCESS) { - if (ctrlFuncp) { - ctrlFuncp(); - } - lockp->ownerID = lockID; - } - - if (disableFIQ) { - (void)OS_RestoreInterrupts_IrqAndFiq(lastInterrupts); - } else { - (void)OS_RestoreInterrupts(lastInterrupts); - } - - return lastLockFlag; -} - -s32 OS_TryLockByWord (u16 lockID, OSLockWord *lockp, void (*ctrlFuncp)(void)) -{ - return OSi_DoTryLockByWord(lockID, lockp, ctrlFuncp, FALSE); -} - -s32 OS_TryLockByWord_IrqAndFiq (u16 lockID, OSLockWord *lockp, void (*ctrlFuncp)(void)) -{ - return OSi_DoTryLockByWord(lockID, lockp, ctrlFuncp, TRUE); -} - -s32 OS_LockCartridge (u16 lockID) -{ - s32 lastLockFlag; - - OSi_ASSERT_ID(lockID); - - lastLockFlag = - OSi_DoLockByWord(lockID, (OSLockWord *)HW_CTRDG_LOCK_BUF, OSi_AllocateCartridgeBus, TRUE); - -#ifndef SDK_FINALROM - _ISDbgLib_AllocateEmualtor(); -#endif - - return lastLockFlag; -} - -s32 OS_UnlockCartridge (u16 lockID) -{ - s32 lastLockFlag; - - OSi_ASSERT_ID(lockID); - -#ifndef SDK_FINALROM - _ISDbgLib_FreeEmulator(); -#endif - - lastLockFlag = - OSi_DoUnlockByWord(lockID, (OSLockWord *)HW_CTRDG_LOCK_BUF, OSi_FreeCartridgeBus, TRUE); - - return lastLockFlag; -} - -asm s32 OS_UnLockCartridge (u16 lockID) -{ - ldr r1, = OS_UnlockCartridge - bx r1 -} - -s32 OS_TryLockCartridge (u16 lockID) -{ - s32 lastLockFlag; - - lastLockFlag = - OSi_DoTryLockByWord(lockID, (OSLockWord *)HW_CTRDG_LOCK_BUF, OSi_AllocateCartridgeBus, - TRUE); - -#ifndef SDK_FINALROM - if (lastLockFlag == OS_LOCK_SUCCESS) { - _ISDbgLib_AllocateEmualtor(); - } -#endif - - return lastLockFlag; -} - -static void OSi_AllocateCartridgeBus (void) -{ -#ifdef SDK_ARM9 - MIi_SetCartridgeProcessor(MI_PROCESSOR_ARM9); -#endif -} - -static void OSi_FreeCartridgeBus (void) -{ -#ifdef SDK_ARM9 - MIi_SetCartridgeProcessor(MI_PROCESSOR_ARM7); -#endif -} - -#if defined(SDK_TEG) - -static u32 osi_card_lock = OS_LOCK_ID_ERROR; - -static s32 OSi_LockCardID (u16 lockID, BOOL blocking) -{ - s32 ret = OS_LOCK_ID_ERROR; - for (;;) { - OSIntrMode bak_psr = OS_DisableInterrupts(); - ret = osi_card_lock; - if (ret == OS_LOCK_ID_ERROR) { - osi_card_lock = lockID; - ret = OS_LOCK_SUCCESS; - } - (void)OS_RestoreInterrupts(bak_psr); - if ((ret != OS_LOCK_SUCCESS) && blocking) { - OSi_WaitByLoop(); - continue; - } - break; - } - return ret; -} - -static s32 OSi_UnlockCardID (u16 lockID) -{ - if (osi_card_lock != lockID) - return OS_UNLOCK_ERROR; - osi_card_lock = OS_LOCK_ID_ERROR; - return OS_UNLOCK_SUCCESS; -} - -#endif - -s32 OS_LockCard (u16 lockID) -{ - OSi_ASSERT_ID(lockID); - -#if defined(SDK_TEG) - return OSi_LockCardID(lockID, TRUE); -#else - return OS_LockByWord(lockID, (OSLockWord *)HW_CARD_LOCK_BUF, OSi_AllocateCardBus); -#endif -} - -s32 OS_UnlockCard (u16 lockID) -{ - OSi_ASSERT_ID(lockID); - -#if defined(SDK_TEG) - return OSi_UnlockCardID(lockID); -#else - return OS_UnlockByWord(lockID, (OSLockWord *)HW_CARD_LOCK_BUF, OSi_FreeCardBus); -#endif -} - -asm s32 OS_UnLockCard (u16 lockID) -{ - ldr r1, = OS_UnlockCard - bx r1 -} - -s32 OS_TryLockCard (u16 lockID) -{ -#if defined(SDK_TEG) - return OSi_LockCardID(lockID, FALSE); -#else - return OS_TryLockByWord(lockID, (OSLockWord *)HW_CARD_LOCK_BUF, OSi_AllocateCardBus); -#endif -} - -static void OSi_AllocateCardBus (void) -{ -#ifdef SDK_ARM9 - MIi_SetCardProcessor(MI_PROCESSOR_ARM9); -#endif -} - -static void OSi_FreeCardBus (void) -{ -#ifdef SDK_ARM9 - MIi_SetCardProcessor(MI_PROCESSOR_ARM7); -#endif -} - -u16 OS_ReadOwnerOfLockWord (OSLockWord *lockp) -{ - return lockp->ownerID; -} - -#include -asm s32 OS_GetLockID (void) -{ - ldr r3, = OSi_ANYP_LOCK_ID_FLAG - ldr r1, [r3, #0] - -#ifdef SDK_ARM9 - clz r2, r1 -#else - mov r2, #0 - mov r0, #0x80000000 -_lp1: - tst r1, r0 - bne _ex1 - add r2, r2, #1 - cmp r2, #32 - beq _ex1 - mov r0, r0, lsr #1 - b _lp1 -_ex1: -#endif - cmp r2, #32 - bne @movne1 - b @movne2 -@movne1: - mov r0, #OSi_ANYP_LOCK_ID_START -@movne2: - bne _1 - add r3, r3, #4 - ldr r1, [r3, #0] -#ifdef SDK_ARM9 - clz r2, r1 -#else - mov r2, #0 - mov r0, #0x80000000 -_lp2: - tst r1, r0 - bne _ex2 - add r2, r2, #1 - cmp r2, #32 - beq _ex2 - mov r0, r0, lsr #1 - b _lp2 -_ex2: -#endif - cmp r2, #32 - ldr r0, = OS_LOCK_ID_ERROR - beq @bxeq1 - b @bxeq2 -@bxeq1: - bx lr -@bxeq2: - mov r0, #OSi_ANYP_LOCK_ID_START + 32 -_1: - add r0, r0, r2 - mov r1, #0x80000000 - mov r1, r1, lsr r2 - ldr r2, [r3, #0] - bic r2, r2, r1 - str r2, [r3, #0] - bx lr -} - -asm void OS_ReleaseLockID (register u16 lockID) -{ -#pragma unused( lockID ) - - ldr r3, = OSi_ANYP_LOCK_ID_FLAG - cmp r0, #OSi_ANYP_LOCK_ID_START + 32 - bpl @addpl1 - b @addpl2 -@addpl1: - add r3, r3, #4 -@addpl2: - bpl @subpl1 - b @subpl2 -@subpl1: - sub r0, r0, #OSi_ANYP_LOCK_ID_START + 32 -@subpl2: - bmi @submi1 - b @submi2 -@submi1: - sub r0, r0, #OSi_ANYP_LOCK_ID_START -@submi2: - mov r1, #0x80000000 - mov r1, r1, lsr r0 - ldr r2, [r3, #0] - orr r2, r2, r1 - str r2, [r3, #0] - bx lr -} - -#include \ No newline at end of file diff --git a/subprojects/NitroSDK/libraries/os/src/os_system.c b/subprojects/NitroSDK/libraries/os/src/os_system.c deleted file mode 100644 index 04bab6b877..0000000000 --- a/subprojects/NitroSDK/libraries/os/src/os_system.c +++ /dev/null @@ -1,120 +0,0 @@ -#include -#include - -asm OSIntrMode OS_EnableInterrupts (void) -{ - mrs r0, cpsr - bic r1, r0, #HW_PSR_IRQ_DISABLE - msr cpsr_c, r1 - and r0, r0, #HW_PSR_IRQ_DISABLE - bx lr -} - -asm OSIntrMode OS_DisableInterrupts (void) -{ - mrs r0, cpsr - orr r1, r0, #HW_PSR_IRQ_DISABLE - msr cpsr_c, r1 - and r0, r0, #HW_PSR_IRQ_DISABLE - bx lr -} - -asm OSIntrMode OS_RestoreInterrupts (register OSIntrMode state) -{ - mrs r1, cpsr - bic r2, r1, #HW_PSR_IRQ_DISABLE - orr r2, r2, r0 - msr cpsr_c, r2 - and r0, r1, #HW_PSR_IRQ_DISABLE - bx lr -} - -asm OSIntrMode OS_EnableInterrupts_IrqAndFiq (void) -{ - mrs r0, cpsr - bic r1, r0, #HW_PSR_IRQ_FIQ_DISABLE - msr cpsr_c, r1 - and r0, r0, #HW_PSR_IRQ_FIQ_DISABLE - bx lr -} - -asm OSIntrMode OS_DisableInterrupts_IrqAndFiq (void) -{ - mrs r0, cpsr - orr r1, r0, #HW_PSR_IRQ_FIQ_DISABLE - msr cpsr_c, r1 - and r0, r0, #HW_PSR_IRQ_FIQ_DISABLE - bx lr -} - -asm OSIntrMode OS_RestoreInterrupts_IrqAndFiq (register OSIntrMode state) -{ - mrs r1, cpsr - bic r2, r1, #HW_PSR_IRQ_FIQ_DISABLE - orr r2, r2, r0 - msr cpsr_c, r2 - and r0, r1, #HW_PSR_IRQ_FIQ_DISABLE - bx lr -} - -asm OSIntrMode_Irq OS_GetCpsrIrq (void) -{ - mrs r0, cpsr - and r0, r0, #HW_PSR_IRQ_DISABLE - bx lr -} - -asm OSProcMode OS_GetProcMode (void) -{ - mrs r0, cpsr - and r0, r0, #HW_PSR_CPU_MODE_MASK - bx lr -} - -#include - -#ifdef SDK_ARM9 -#include -asm void OS_SpinWait (u32 cycle) -{ -_1: subs r0, r0, #4 - bcs _1 - bx lr -} -#include -#else -void OS_SpinWait (u32 cycle) -{ - SVC_WaitByLoop((s32)cycle / 4); -} -#endif - -void OS_WaitInterrupt (BOOL clear, OSIrqMask irqFlags) -{ - OSIntrMode cpsrIrq = OS_DisableInterrupts(); - BOOL ime = OS_EnableIrq(); - - if (clear) { - (void)OS_ClearIrqCheckFlag(irqFlags); - } - - while (!(OS_GetIrqCheckFlag() & irqFlags)) { - OS_Halt(); - (void)OS_EnableInterrupts(); - (void)OS_DisableInterrupts(); - } - - (void)OS_ClearIrqCheckFlag(irqFlags); - (void)OS_RestoreIrq(ime); - (void)OS_RestoreInterrupts(cpsrIrq); -} - -void OS_WaitVBlankIntr (void) -{ - SVC_WaitByLoop(1); -#if defined(SDK_ENABLE_ARM7_PRINT) && defined(SDK_ARM9) - - OS_PrintServer(); -#endif - OS_WaitIrq(TRUE, OS_IE_V_BLANK); -} \ No newline at end of file diff --git a/subprojects/NitroSDK/libraries/os/src/os_tcm.c b/subprojects/NitroSDK/libraries/os/src/os_tcm.c deleted file mode 100644 index 8eb15a7c00..0000000000 --- a/subprojects/NitroSDK/libraries/os/src/os_tcm.c +++ /dev/null @@ -1,88 +0,0 @@ -#include -#include - -asm void OS_EnableITCM (void) -{ - mrc p15, 0, r0, c1, c0, 0 - orr r0, r0, #HW_C1_ITCM_ENABLE - mcr p15, 0, r0, c1, c0, 0 - bx lr -} - -asm void OS_DisableITCM (void) -{ - mrc p15, 0, r0, c1, c0, 0 - bic r0, r0, #HW_C1_ITCM_ENABLE - mcr p15, 0, r0, c1, c0, 0 - bx lr -} - -asm void OS_SetITCMParam (register u32 param) -{ - and r0, r0, #HW_C9_TCMR_SIZE_MASK - mcr p15, 0, r0, c9, c1, 1 - bx lr -} - -asm u32 OS_GetITCMParam (void) -{ - mrc p15, 0, r0, c9, c1, 1 - and r0, r0, #HW_C9_TCMR_SIZE_MASK - bx lr -} - -asm void OS_EnableDTCM (void) -{ - mrc p15, 0, r0, c1, c0, 0 - orr r0, r0, #HW_C1_DTCM_ENABLE - mcr p15, 0, r0, c1, c0, 0 - bx lr -} - -asm void OS_DisableDTCM (void) -{ - mrc p15, 0, r0, c1, c0, 0 - bic r0, r0, #HW_C1_DTCM_ENABLE - mcr p15, 0, r0, c1, c0, 0 - bx lr -} - -asm void OS_SetDTCMParam (register u32 param) -{ - ldr r1, = HW_C9_TCMR_BASE_MASK | HW_C9_TCMR_SIZE_MASK - and r0, r0, r1 - mcr p15, 0, r0, c9, c1, 0 - bx lr -} - -asm u32 OS_GetDTCMParam (void) -{ - mrc p15, 0, r0, c9, c1, 0 - ldr r1, = HW_C9_TCMR_BASE_MASK | HW_C9_TCMR_SIZE_MASK - and r0, r0, r1 - bx lr -} - -#define OSi_TCM_REGION_SIZE_MASK HW_C9_TCMR_SIZE_MASK -#define OSi_TCM_REGION_BASE_MASK HW_C9_TCMR_BASE_MASK - -asm void OS_SetDTCMAddress (register u32 address) -{ - mrc p15, 0, r2, c9, c1, 0 - and r2, r2, #OSi_TCM_REGION_SIZE_MASK - ldr r1, = OSi_TCM_REGION_BASE_MASK - and r0, r0, r1 - orr r0, r0, r2 - mcr p15, 0, r0, c9, c1, 0 - bx lr -} - -asm u32 OS_GetDTCMAddress (void) -{ - mrc p15, 0, r0, c9, c1, 0 - ldr r1, = OSi_TCM_REGION_BASE_MASK - and r0, r0, r1 - bx lr -} - -#include \ No newline at end of file diff --git a/subprojects/NitroSDK/libraries/os/src/os_terminate_proc.c b/subprojects/NitroSDK/libraries/os/src/os_terminate_proc.c deleted file mode 100644 index 1c6a991139..0000000000 --- a/subprojects/NitroSDK/libraries/os/src/os_terminate_proc.c +++ /dev/null @@ -1,28 +0,0 @@ -#include - -SDK_WEAK_SYMBOL void OS_Terminate (void) -{ - while (1) { - (void)OS_DisableInterrupts(); - OS_Halt(); - } -} - -#include -SDK_WEAK_SYMBOL asm void OS_Halt (void) -{ - mov r0, #0 - mcr p15, 0, r0, c7, c0, 4 - bx lr -} -#include - -SDK_WEAK_SYMBOL void OS_Exit (int status) -{ -#ifdef SDK_FINALROM -#pragma unused( status ) -#endif - (void)OS_DisableInterrupts(); - OS_Printf("\n" OS_EXIT_STRING, status); - OS_Terminate(); -} \ No newline at end of file diff --git a/subprojects/NitroSDK/libraries/os/src/os_thread.c b/subprojects/NitroSDK/libraries/os/src/os_thread.c deleted file mode 100644 index 087321671c..0000000000 --- a/subprojects/NitroSDK/libraries/os/src/os_thread.c +++ /dev/null @@ -1,1293 +0,0 @@ -#include -#include -#include - -extern void SDK_SYS_STACKSIZE(void); -extern void SDK_IRQ_STACKSIZE(void); -#define OSi_SYS_STACKSIZE ((s32)SDK_SYS_STACKSIZE) -#define OSi_IRQ_STACKSIZE ((s32)SDK_IRQ_STACKSIZE) - -#ifdef SDK_ARM9 - #define OSi_STACK_CHECKNUM_BOTTOM 0xfddb597dUL - #define OSi_STACK_CHECKNUM_TOP 0x7bf9dd5bUL - #define OSi_STACK_CHECKNUM_WARN 0x597dfbd9UL -#else - #define OSi_STACK_CHECKNUM_BOTTOM 0xd73bfdf7UL - #define OSi_STACK_CHECKNUM_TOP 0xfbdd37bbUL - #define OSi_STACK_CHECKNUM_WARN 0xbdf7db3dUL -#endif - -#ifdef SDK_ARM9 -extern void SDK_SECTION_ARENA_DTCM_START(void); -void SDK_AUTOLOAD_DTCM_END(void); - #define OSi_LAUNCHER_STACK_LO_DEFAULT SDK_SECTION_ARENA_DTCM_START - #define OSi_LAUNCHER_STACK_HI_MAX (HW_DTCM_SVC_STACK - OSi_IRQ_STACKSIZE) - #define OSi_LAUNCHER_STACK_BOTTOM (HW_DTCM_SVC_STACK - OSi_IRQ_STACKSIZE) -#else - #define OSi_LAUNCHER_STACK_LO_DEFAULT HW_WRAM - #define OSi_LAUNCHER_STACK_HI_MAX (HW_PRV_WRAM_IRQ_STACK_END - OSi_IRQ_STACKSIZE) - #define OSi_LAUNCHER_STACK_BOTTOM (HW_PRV_WRAM_IRQ_STACK_END - OSi_IRQ_STACKSIZE) -#endif - -#ifdef SDK_CONTEXT_HAS_SP_SVC -#define OSi_IDLE_CHECKNUM_SIZE (sizeof(u32) * 2 + HW_SVC_STACK_SIZE) -#else -#define OSi_IDLE_CHECKNUM_SIZE (sizeof(u32) * 2) -#endif - -#ifdef SDK_ARM9 -#define OSi_IDLE_SVC_SIZE (sizeof(u32) * 32) -#else -#define OSi_IDLE_SVC_SIZE (sizeof(u32) * 16) -#endif - -#define OSi_IDLE_THREAD_STACK_SIZE (OSi_IDLE_CHECKNUM_SIZE + OSi_IDLE_SVC_SIZE) - -OSThread OSi_LauncherThread; -OSThread OSi_IdleThread; - -OSThreadInfo OSi_ThreadInfo; - -OSThread **OSi_CurrentThreadPtr; -#define OSi_GetCurrentThread() (*OSi_CurrentThreadPtr) - -BOOL OSi_IsThreadInitialized = FALSE; - -u32 OSi_IdleThreadStack[OSi_IDLE_THREAD_STACK_SIZE / sizeof(u32)]; - -void *OSi_SystemCallbackInSwitchThread = NULL; - -u32 OSi_RescheduleCount = 0; - -#ifdef SDK_THREAD_INFINITY -static int OSi_ThreadIdCount = 0; -#endif - -void *OSi_StackForDestructor = NULL; - -#ifndef SDK_THREAD_INFINITY -static int OSi_SearchFreeEntry(void); -#endif -static void OSi_CancelThreadAlarmForSleep(OSThread *thread); -static void OSi_InsertThreadToList(OSThread *thread); -static void OSi_RemoveThreadFromList(OSThread *thread); -static void OSi_SleepAlarmCallback(void *arg); -static void OSi_IdleThreadProc(void *); -void OSi_SetSystemCallbackInSwitchThread(void *callback); - -static void OSi_ExitThread_ArgSpecified(OSThread *thread, void *arg); -static void OSi_ExitThread(void *arg); -static void OSi_ExitThread_Destroy(void); - -static void OSi_RescheduleThread(void); - -#ifdef SDK_THREAD_INFINITY - -static int OSi_GetUnusedThreadId (void) -{ - ++OSi_ThreadIdCount; - SDK_ASSERT(OSi_ThreadIdCount > 0); - return OSi_ThreadIdCount; -} -#endif - -#ifdef SDK_THREAD_INFINITY - -static void OSi_InsertLinkToQueue (OSThreadQueue *queue, OSThread *thread) -{ - OSThread *next = queue->head; - - while (next && next->priority <= thread->priority) { - if (next == thread) { - return; - } - next = next->link.next; - } - - if (!next) { - OSThread *prev = queue->tail; - - if (!prev) { - queue->head = thread; - } else { - prev->link.next = thread; - } - - thread->link.prev = prev; - thread->link.next = NULL; - queue->tail = thread; - } else { - OSThread *prev = next->link.prev; - - if (!prev) { - queue->head = thread; - } else { - prev->link.next = thread; - } - - thread->link.prev = prev; - thread->link.next = next; - next->link.prev = thread; - } -} - -static OSThread *OSi_RemoveLinkFromQueue (OSThreadQueue *queue) -{ - OSThread *t = queue->head; - - if (t) { - OSThread *next = t->link.next; - - queue->head = next; - - if (next) { - next->link.prev = NULL; - } else { - queue->tail = NULL; - t->queue = NULL; - } - } - - return t; -} - -static OSThread *OSi_RemoveSpecifiedLinkFromQueue (OSThreadQueue *queue, OSThread *thread) -{ - OSThread *t = queue->head; - OSThread *next; - OSThread *prev; - - while (t) { - next = t->link.next; - - if (t == thread) { - prev = t->link.prev; - - if (queue->head == t) { - queue->head = next; - } else { - prev->link.next = next; - } - - if (queue->tail == t) { - queue->tail = prev; - } else { - next->link.prev = prev; - } - - break; - } - - t = next; - } - - return t; -} - -OSMutex *OSi_RemoveMutexLinkFromQueue (OSMutexQueue *queue) -{ - OSMutex *t = queue->head; - - if (t) { - OSMutex *next = t->link.next; - - queue->head = next; - - if (next) { - next->link.prev = NULL; - } else { - queue->tail = NULL; - } - } - - return t; -} - -#endif - -void OSi_SetSystemCallbackInSwitchThread (void *callback) -{ - OSi_SystemCallbackInSwitchThread = callback; -} - -#ifndef SDK_THREAD_INFINITY - -static int OSi_SearchFreeEntry (void) -{ - int i; - - for (i = 0; i < OS_THREAD_MAX_NUM; i++) { - if (!OSi_ThreadInfo.entry[i]) { - return i; - } - } - return -1; -} -#endif - -static void OSi_InsertThreadToList (OSThread *thread) -{ - OSThread *t = OSi_ThreadInfo.list; - OSThread *pre = NULL; - - while (t && t->priority < thread->priority) { - pre = t; - t = t->next; - } - - if (!pre) { - thread->next = OSi_ThreadInfo.list; - OSi_ThreadInfo.list = thread; - } else { - thread->next = pre->next; - pre->next = thread; - } -} - -static void OSi_RemoveThreadFromList (OSThread *thread) -{ - OSThread *t = OSi_ThreadInfo.list; - OSThread *pre = NULL; - - while (t && t != thread) { - pre = t; - t = t->next; - } - - SDK_ASSERTMSG(t, "Cannot remove thread from list."); - - if (!pre) { - OSi_ThreadInfo.list = thread->next; - } else { - pre->next = thread->next; - } -} - -static void OSi_RescheduleThread (void) -{ - if (OSi_RescheduleCount <= 0) { - OSThreadInfo *info = &OSi_ThreadInfo; - if (info->irqDepth > 0 || OS_GetProcMode() == OS_PROCMODE_IRQ) { - - info->isNeedRescheduling = TRUE; - } else { - OSThread *currentThread, *nextThread; - currentThread = OSi_GetCurrentThread(); - nextThread = OS_SelectThread(); - - if (currentThread == nextThread || !nextThread) { - return; - } - - if (currentThread->state != OS_THREAD_STATE_TERMINATED - && OS_SaveContext(¤tThread->context)) { - return; - } - - if (OSi_SystemCallbackInSwitchThread) { - ((OSSwitchThreadCallback)OSi_SystemCallbackInSwitchThread)(currentThread, - nextThread); - } - - if (info->switchCallback) { - ((OSSwitchThreadCallback)info->switchCallback)(currentThread, nextThread); - } - - OS_SetCurrentThread(nextThread); - OS_LoadContext(&nextThread->context); - - } - } -} - -void OS_InitThread (void) -{ - void *stackLo; -#ifndef SDK_THREAD_INFINITY - int i; -#endif - - if (OSi_IsThreadInitialized) { - return; - } - OSi_IsThreadInitialized = TRUE; - -#ifndef SDK_THREAD_INFINITY - - for (i = 0; i < OS_THREAD_MAX_NUM; i++) { - OSi_ThreadInfo.entry[i] = NULL; - } -#endif - - OSi_CurrentThreadPtr = &(OSi_ThreadInfo.current); - - OSi_LauncherThread.priority = OS_THREAD_LAUNCHER_PRIORITY; - OSi_LauncherThread.id = 0; - OSi_LauncherThread.state = OS_THREAD_STATE_READY; - OSi_LauncherThread.next = NULL; - - OSi_LauncherThread.profiler = NULL; - -#ifndef SDK_THREAD_INFINITY - OSi_ThreadInfo.entry[0] = &OSi_LauncherThread; -#endif - OSi_ThreadInfo.list = &OSi_LauncherThread; - - OS_SetCurrentThread(&OSi_LauncherThread); - - stackLo = (OSi_SYS_STACKSIZE <= 0) ? - (void *)((u32)OSi_LAUNCHER_STACK_LO_DEFAULT - OSi_SYS_STACKSIZE) : - (void *)((u32)OSi_LAUNCHER_STACK_HI_MAX - OSi_SYS_STACKSIZE); - SDK_ASSERT((u32)OSi_LAUNCHER_STACK_LO_DEFAULT <= (u32)stackLo - && (u32)stackLo <= (u32)OSi_LAUNCHER_STACK_HI_MAX); - - OSi_LauncherThread.stackBottom = (u32)OSi_LAUNCHER_STACK_BOTTOM; - OSi_LauncherThread.stackTop = (u32)stackLo; - OSi_LauncherThread.stackWarningOffset = 0; - - *(u32 *)(OSi_LauncherThread.stackBottom - sizeof(u32)) = OSi_STACK_CHECKNUM_BOTTOM; - *(u32 *)OSi_LauncherThread.stackTop = OSi_STACK_CHECKNUM_TOP; - - OS_InitThreadQueue(&OSi_LauncherThread.joinQueue); - -#ifndef SDK_THREAD_INFINITY - - OSi_ThreadInfo.max_entry = OS_THREAD_MAX_NUM; -#endif - - OSi_ThreadInfo.isNeedRescheduling = FALSE; - OSi_ThreadInfo.irqDepth = 0; - SDK_ASSERTMSG(OSi_IRQ_STACKSIZE > 0, "IRQ STACKSIZE must be >0"); - -#ifdef SDK_ARM9 - OS_GetSystemWork()->threadinfo_mainp = &OSi_ThreadInfo; -#else - OS_GetSystemWork()->threadinfo_subp = &OSi_ThreadInfo; -#endif - - (void)OS_SetSwitchThreadCallback(NULL); - -#ifdef SDK_ARM9 - OS_CreateThread(&OSi_IdleThread, - OSi_IdleThreadProc, - (void *)NULL, - OSi_IdleThreadStack + OSi_IDLE_THREAD_STACK_SIZE / sizeof(u32), - OSi_IDLE_THREAD_STACK_SIZE, - OS_THREAD_PRIORITY_MAX); - OSi_IdleThread.priority = OS_THREAD_PRIORITY_MAX + 1; - OSi_IdleThread.state = OS_THREAD_STATE_READY; -#endif -} - -asm BOOL OS_IsThreadAvailable (void) -{ - ldr r0, = OSi_IsThreadInitialized - ldr r0, [r0, #0] - bx lr -} - -void OS_CreateThread (OSThread *thread, void (*func)(void *), void *arg, void *stack, u32 stackSize, u32 prio) -{ -#define STACK_ALIGN 4 - OSIntrMode enable; - int index; - - SDK_ASSERTMSG(OSi_GetCurrentThread(), "thread system were not initialized"); - SDK_ASSERTMSG(OS_THREAD_PRIORITY_MIN <= prio - && prio <= OS_THREAD_PRIORITY_MAX, "invalid priority"); - SDK_ASSERTMSG(stackSize % STACK_ALIGN == 0, "stack size must be aligned by %d", STACK_ALIGN); - SDK_ASSERTMSG((u32)stack % STACK_ALIGN == 0, "stack must be aligned by %d", STACK_ALIGN); - - enable = OS_DisableInterrupts(); - -#ifndef SDK_THREAD_INFINITY - if ((index = OSi_SearchFreeEntry()) < 0) { - SDK_ASSERTMSG(index >= 0, "OS_CreateThread: thread entry not allocated"); - (void)OS_RestoreInterrupts(enable); - return; - } -#else - index = OSi_GetUnusedThreadId(); -#endif - - thread->priority = prio; - thread->id = (u32)index; - thread->state = OS_THREAD_STATE_WAITING; - thread->profiler = NULL; - -#ifndef SDK_THREAD_INFINITY - OSi_ThreadInfo.entry[index] = thread; -#endif - OSi_InsertThreadToList(thread); - - thread->stackBottom = (u32)stack; - thread->stackTop = (u32)stack - stackSize; - thread->stackWarningOffset = 0; - - *(u32 *)(thread->stackBottom - sizeof(u32)) = OSi_STACK_CHECKNUM_BOTTOM; - *(u32 *)thread->stackTop = OSi_STACK_CHECKNUM_TOP; - - OS_InitThreadQueue(&thread->joinQueue); - OS_InitContext(&thread->context, (u32)func, (u32)stack - sizeof(u32)); - - thread->context.r[0] = (u32)arg; - thread->context.lr = (u32)OS_ExitThread; - - MI_CpuClear32((void *)((u32)stack - stackSize + sizeof(u32)), stackSize - sizeof(u32) * 2); - - thread->mutex = NULL; -#ifndef SDK_THREAD_INFINITY - thread->mutexQueueHead = NULL; - thread->mutexQueueTail = NULL; -#else - thread->mutexQueue.head = NULL; - thread->mutexQueue.tail = NULL; -#endif - -#ifdef SDK_THREAD_INFINITY - OS_SetThreadDestructor(thread, NULL); -#endif - -#ifdef SDK_THREAD_INFINITY - thread->queue = NULL; - thread->link.prev = thread->link.next = NULL; - MI_CpuClear32(&thread->specific[0], sizeof(void *) * OS_THREAD_SPECIFIC_MAX); -#endif - thread->alarmForSleep = NULL; - (void)OS_RestoreInterrupts(enable); -} - -void OS_ExitThread (void) -{ - (void)OS_DisableInterrupts(); - -#ifdef SDK_THREAD_INFINITY - OSi_ExitThread_ArgSpecified(OS_GetCurrentThread(), 0); -#else - OSi_ExitThread_Destroy(); -#endif -} - -#ifdef SDK_THREAD_INFINITY - -static void OSi_ExitThread_ArgSpecified (OSThread *thread, void *arg) -{ - if (OSi_StackForDestructor) { - OS_InitContext(&thread->context, (u32)OSi_ExitThread, (u32)OSi_StackForDestructor); - thread->context.r[0] = (u32)arg; - thread->context.cpsr |= HW_PSR_IRQ_DISABLE; - thread->state = OS_THREAD_STATE_READY; - OS_LoadContext(&thread->context); - - } else { - OSi_ExitThread(arg); - } -} -#endif - -#ifdef SDK_THREAD_INFINITY -static void OSi_ExitThread (void *arg) -{ - OSThread *currentThread = OSi_GetCurrentThread(); - OSThreadDestructor destructor; - - SDK_ASSERT(currentThread); - - destructor = currentThread->destructor; - if (destructor) { - currentThread->destructor = NULL; - destructor(arg); - (void)OS_DisableInterrupts(); - } - - OSi_ExitThread_Destroy(); -} -#endif - -static void OSi_ExitThread_Destroy (void) -{ - OSThread *currentThread = OSi_GetCurrentThread(); - SDK_ASSERT(currentThread); - -#ifdef SDK_THREAD_INFINITY - (void)OS_DisableScheduler(); -#endif - -#ifndef SDK_THREAD_INFINITY - SDK_ASSERT(OSi_ThreadInfo.entry[currentThread->id] == currentThread); -#endif - - OSi_UnlockAllMutex(currentThread); - - if (currentThread->queue) { - (void)OSi_RemoveSpecifiedLinkFromQueue(currentThread->queue, currentThread); - } - - OSi_RemoveThreadFromList(currentThread); - -#ifndef SDK_THREAD_INFINITY - OSi_ThreadInfo.entry[currentThread->id] = NULL; -#endif - currentThread->state = OS_THREAD_STATE_TERMINATED; - -#ifndef SDK_THREAD_INFINITY - OS_WakeupThread(¤tThread->joinQueue); -#else - OS_WakeupThread(¤tThread->joinQueue); -#endif - -#ifdef SDK_THREAD_INFINITY - (void)OS_EnableScheduler(); -#endif - - OS_RescheduleThread(); - OS_Terminate(); -} - -static vu32 exitThreadStatus = 0; - -static void exitThreadFunc (void *arg) -{ - exitThreadStatus = 1; - (void)arg; -} - -void UTEST_OS_ExitThread(void); - -void UTEST_OS_ExitThread (void) -{ - OSThread thread; - u32 stack[1024]; - - OS_Init(); - OS_InitThread(); - - OS_CreateThread(&thread, - exitThreadFunc, - NULL, - stack + 1024, sizeof(stack), OS_GetThreadPriority(OS_GetCurrentThread()) - 1); - OS_WakeupThreadDirect(&thread); - OS_JoinThread(&thread); - UT_AssertEq(exitThreadStatus, 1); -} - -void OS_DestroyThread (OSThread *thread) -{ - OSIntrMode enabled = OS_DisableInterrupts(); - - SDK_ASSERT(thread); - - if (OS_GetCurrentThread() == thread) { - OSi_ExitThread_Destroy(); - } - -#ifdef SDK_THREAD_INFINITY - (void)OS_DisableScheduler(); -#endif - - OSi_UnlockAllMutex(thread); - OSi_CancelThreadAlarmForSleep(thread); - - if (thread->queue) { - (void)OSi_RemoveSpecifiedLinkFromQueue(thread->queue, thread); - } - - OSi_RemoveThreadFromList(thread); - -#ifndef SDK_THREAD_INFINITY - OSi_ThreadInfo.entry[thread->id] = NULL; -#endif - thread->state = OS_THREAD_STATE_TERMINATED; - - OS_WakeupThread(&thread->joinQueue); - -#ifdef SDK_THREAD_INFINITY - (void)OS_EnableScheduler(); -#endif - (void)OS_RestoreInterrupts(enabled); - - OS_RescheduleThread(); -} - -#ifdef SDK_THREAD_INFINITY - -static inline void OSi_KillThreadWithPriority(OSThread *thread, void *arg, u32 prio); -static inline void OSi_KillThreadWithPriority (OSThread *thread, void *arg, u32 prio) -{ - SDK_ASSERT(thread); - - { - u32 stack = (OSi_StackForDestructor) ? (u32)OSi_StackForDestructor : thread->stackBottom - sizeof(u32); - OS_InitContext(&thread->context, (u32)OSi_ExitThread, stack); - } - thread->context.r[0] = (u32)arg; - thread->context.cpsr |= HW_PSR_IRQ_DISABLE; - - thread->state = OS_THREAD_STATE_READY; - - (void)OS_DisableScheduler(); - (void)OS_SetThreadPriority(thread, prio); - (void)OS_EnableScheduler(); -} - -void OS_KillThread (OSThread *thread, void *arg) -{ - OS_KillThreadWithPriority(thread, arg, OS_GetThreadPriority(thread)); -} - -void OS_KillThreadWithPriority (OSThread *thread, void *arg, u32 prio) -{ - OSIntrMode enabled = OS_DisableInterrupts(); - - if (thread == OS_GetCurrentThread()) { - OSi_ExitThread_ArgSpecified(thread, arg); - - } - - OSi_CancelThreadAlarmForSleep(thread); - OSi_KillThreadWithPriority(thread, arg, prio); - OSi_RescheduleThread(); - - (void)OS_RestoreInterrupts(enabled); -} - -void UTEST_OS_KillThread_1(void); -void UTEST_OS_KillThread_1 (void) -{ - OSThread thread; - OSThread *t = &thread; - u32 flag; - - OS_Init(); - OS_InitThread(); - - t->stackBottom = 0x6789abcd; - t->state = OS_THREAD_STATE_TERMINATED; - OSi_KillThreadWithPriority(t, (void *)0x12345678, 16); - - UT_AssertEq(t->context.pc_plus4, (u32)OSi_ExitThread + 4); - UT_AssertEq(t->context.r[0], (u32)0x12345678); - flag = ((u32)OS_ExitThread & 1) ? (u32)HW_PSR_THUMB_STATE : (u32)HW_PSR_ARM_STATE; - UT_AssertEq(t->context.cpsr, (u32)HW_PSR_IRQ_DISABLE | HW_PSR_SYS_MODE | flag); - UT_AssertEq(t->context.sp, (u32)0x6789abcd - HW_SVC_STACK_SIZE); - - UT_AssertEq(t->state, OS_THREAD_STATE_READY); - UT_AssertAsserted(OSi_KillThreadWithPriority(0, 0, 16)); -} - -static vu32 killThreadStatus = 0; - -static void killThreadDtor (void *arg) -{ - killThreadStatus = 666; - (void)arg; -} - -static void killThreadFunc (void *arg) -{ - OS_SetThreadDestructor(OS_GetCurrentThread(), killThreadDtor); - - killThreadStatus = 1; - while (1) { - OS_SleepThread(NULL); - killThreadStatus++; - } - (void)arg; -} - -void UTEST_OS_KillThread_2(void); -void UTEST_OS_KillThread_2 (void) -{ - OSThread thread; - u32 stack[1024]; - - OS_Init(); - OS_InitThread(); - - OS_CreateThread(&thread, - killThreadFunc, - NULL, - stack + 1024, sizeof(stack), OS_GetThreadPriority(OS_GetCurrentThread()) - 1); - UT_AssertEq(killThreadStatus, 0); - - OS_WakeupThreadDirect(&thread); - UT_AssertEq(killThreadStatus, 1); - UT_AssertEq(thread.destructor, killThreadDtor); - - OS_WakeupThreadDirect(&thread); - UT_AssertEq(killThreadStatus, 2); - - OS_KillThread(&thread, 0); - OS_JoinThread(&thread); - UT_AssertEq(killThreadStatus, 666); -} - -#endif - -static void OSi_CancelThreadAlarmForSleep (OSThread *thread) -{ - OSAlarm *alarm = thread->alarmForSleep; - - if (alarm) { - OS_CancelAlarm(alarm); - } -} - -void OS_JoinThread (OSThread *thread) -{ - OSIntrMode enabled = OS_DisableInterrupts(); - - SDK_ASSERT(thread); - - if (thread->state != OS_THREAD_STATE_TERMINATED) { - OS_SleepThread(&thread->joinQueue); - } - - (void)OS_RestoreInterrupts(enabled); -} - -BOOL OS_IsThreadTerminated (const OSThread *thread) -{ - return (thread->state == OS_THREAD_STATE_TERMINATED) ? TRUE : FALSE; -} - -void OS_SleepThreadDirect (OSThread *thread, OSThreadQueue *queue) -{ - SDK_ASSERT(thread); - SDK_ASSERT(thread->state != OS_THREAD_STATE_TERMINATED); - - { - OSIntrMode bak_intr = OS_DisableInterrupts(); - if (queue) { -#ifndef SDK_THREAD_INFINITY - *queue |= (OSThreadQueue)(1UL << thread->id); -#else - thread->queue = queue; - OSi_InsertLinkToQueue(queue, thread); -#endif - } - thread->state = OS_THREAD_STATE_WAITING; - OSi_RescheduleThread(); - (void)OS_RestoreInterrupts(bak_intr); - } -} - -void OS_SleepThread (OSThreadQueue *queue) -{ - OSIntrMode enable; - OSThread *currentThread; - - enable = OS_DisableInterrupts(); -#ifndef SDK_THREAD_INFINITY - { - currentThread = OSi_GetCurrentThread(); - SDK_ASSERT(currentThread); - - if (queue) { - *queue |= (OSThreadQueue)(1UL << currentThread->id); - } - - currentThread->state = OS_THREAD_STATE_WAITING; - OSi_RescheduleThread(); - } -#else - { - currentThread = OSi_GetCurrentThread(); - SDK_ASSERT(currentThread); - - if (queue) { - currentThread->queue = queue; - OSi_InsertLinkToQueue(queue, currentThread); - } - - currentThread->state = OS_THREAD_STATE_WAITING; - OSi_RescheduleThread(); - } -#endif - (void)OS_RestoreInterrupts(enable); - -} - -void OS_WakeupThread (OSThreadQueue *queue) -{ - OSIntrMode enable; -#ifndef SDK_THREAD_INFINITY - u32 mask; -#else - BOOL isNeedRescheduling = FALSE; -#endif - SDK_ASSERT(queue); - enable = OS_DisableInterrupts(); - -#ifndef SDK_THREAD_INFINITY - mask = (u32) * queue; - if (mask) { - - OSThread *t = OSi_ThreadInfo.list; - while (t) { - if (mask & (1UL << t->id)) { - t->state = OS_THREAD_STATE_READY; - } - - t = t->next; - } - - OS_InitThreadQueue(queue); - OSi_RescheduleThread(); - } -#else - if (queue->head) { - while (queue->head) { - OSThread *thread = OSi_RemoveLinkFromQueue(queue); - - thread->state = OS_THREAD_STATE_READY; - thread->queue = NULL; - thread->link.prev = thread->link.next = NULL; - } - - OS_InitThreadQueue(queue); - OSi_RescheduleThread(); - } -#endif - - (void)OS_RestoreInterrupts(enable); -} - -void OS_WakeupThreadDirect (OSThread *thread) -{ - OSIntrMode enable; - - SDK_ASSERT(thread); - SDK_ASSERT(thread->state != OS_THREAD_STATE_TERMINATED); - enable = OS_DisableInterrupts(); - { - thread->state = OS_THREAD_STATE_READY; - OSi_RescheduleThread(); - - } - (void)OS_RestoreInterrupts(enable); -} - -OSThread *OS_SelectThread (void) -{ - OSThread *t = OSi_ThreadInfo.list; - - while (t && !OS_IsThreadRunnable(t)) { - t = t->next; - } - - return t; -} - -void OS_RescheduleThread (void) -{ - OSIntrMode bak_intr = OS_DisableInterrupts(); - OSi_RescheduleThread(); - (void)OS_RestoreInterrupts(bak_intr); -} - -void OS_YieldThread (void) -{ - OSThread *current = OS_GetCurrentThread(); - OSThread *pre = NULL; - OSThread *lastThread = NULL; - int samePriorityThread = 0; - OSIntrMode enable = OS_DisableInterrupts(); - - { - OSThread *t = OSi_ThreadInfo.list; - OSThread *tPre = NULL; - - while (t) { - if (t == current) { - pre = tPre; - } - - if (current->priority == t->priority) { - lastThread = t; - samePriorityThread++; - } - - tPre = t; - t = t->next; - } - } - - if (samePriorityThread <= 1 || lastThread == current) { - (void)OS_RestoreInterrupts(enable); - return; - } - - if (!pre) { - OSi_ThreadInfo.list = current->next; - } else { - pre->next = current->next; - } - - current->next = lastThread->next; - lastThread->next = current; - - OSi_RescheduleThread(); - - (void)OS_RestoreInterrupts(enable); -} - -void OS_DumpThreadList (void) -{ -#ifndef SDK_FINALROM -#ifndef SDK_THREAD_INFINITY - int i; -#endif - - OS_Printf("----------------\n"); - OS_Printf("thread list top %08x\n", OSi_ThreadInfo.list); - -#ifndef SDK_THREAD_INFINITY - OS_Printf("No: address prio next\n"); - for (i = 0; i < OS_THREAD_MAX_NUM; i++) { - OSThread *thread = OSi_ThreadInfo.entry[i]; - OS_Printf("%02d: %08x %5d %08x\n", i, thread, (thread) ? thread->priority : 0, - (thread) ? thread->next : 0); - } -#else - - OS_Printf("Id: address prio next st queue.h queue.t link.p link.n\n"); - { - OSThread *thread = OSi_ThreadInfo.list; - while (thread) { - - OS_Printf("%02d: %08x %5d %08x %d %8x %8x %8x %8x\n", thread->id, thread, - thread->priority, thread->next, thread->state, - (thread->queue) ? thread->queue->head : (OSThread *)1, - (thread->queue) ? thread->queue->tail : (OSThread *)1, thread->link.prev, - thread->link.next); - thread = thread->next; - - } - } -#endif -#endif -} - -int OS_GetNumberOfThread (void) -{ - int threads = 0; - -#ifndef SDK_THREAD_INFINITY - int i; - - for (i = 0; i < OS_THREAD_MAX_NUM; i++) { - if (OSi_ThreadInfo.entry[i]) { - threads++; - } - } -#else - OSThread *thread = OSi_ThreadInfo.list; - while (thread) { - threads++; - thread = thread->next; - } -#endif - - return threads; -} - -OSStackStatus OS_GetStackStatus (const OSThread *thread) -{ - if (*(u32 *)(thread->stackTop) != OSi_STACK_CHECKNUM_TOP) { - return OS_STACK_OVERFLOW; - } else if (thread->stackWarningOffset - && *(u32 *)(thread->stackTop + thread->stackWarningOffset) != OSi_STACK_CHECKNUM_WARN) { - return OS_STACK_ABOUT_TO_OVERFLOW; - } else if (*(u32 *)(thread->stackBottom - sizeof(u32)) != OSi_STACK_CHECKNUM_BOTTOM) { - return OS_STACK_UNDERFLOW; - } else { - return OS_STACK_NO_ERROR; - } -} - -static char *OSi_CheckStack_mesg[] = { - "overflow", "about to overflow", "underflow" -}; - -#ifndef SDK_FINALROM -#ifndef SDK_NO_MESSAGE -void OSi_CheckStack (const char *file, int line, const OSThread *thread) -{ - OSStackStatus st; - - if ((st = OS_GetStackStatus(thread)) == OS_STACK_NO_ERROR) { - return; - } - - OSi_Panic(file, line, " stack %x(id:%d) %s.\nstack area: %08x-%08x, warning offset: %x", - thread, - thread->id, - OSi_CheckStack_mesg[(int)st - 1], - thread->stackTop, thread->stackBottom, thread->stackWarningOffset); - -} -#endif -#endif - -static u32 OSi_SystemStackBuffer; - -#include -asm u32 OSi_GetSystemStackPointer (void) -{ - ldr r0, = OSi_SystemStackBuffer - stmia r0, { sp } ^ - ldr r0, [r0] - bx lr -} -#include - -asm u32 OSi_GetCurrentStackPointer (void) -{ - mov r0, sp - bx lr -} - -void OS_SetThreadStackWarningOffset (OSThread *thread, u32 offset) -{ - SDK_ASSERTMSG((offset & 3) == 0, "Offset must be aligned by 4"); - SDK_ASSERTMSG(offset > 0, "Cannot set warning level to stack top."); - SDK_ASSERTMSG(OS_GetThreadContext(thread)->sp > thread->stackTop + offset, - "Cannot set warning level below current sp."); - - thread->stackWarningOffset = offset; - - if (offset != 0) { - *(u32 *)(thread->stackTop + offset) = OSi_STACK_CHECKNUM_WARN; - } -} - -BOOL OS_SetThreadPriority (OSThread *thread, u32 prio) -{ - OSThread *t = OSi_ThreadInfo.list; - OSThread *pre = NULL; - OSIntrMode enable; - - SDK_ASSERTMSG(OS_THREAD_PRIORITY_MIN <= prio - && prio <= OS_THREAD_PRIORITY_MAX, "invalid priority"); - SDK_ASSERTMSG(thread != &OSi_IdleThread, "cannot change idle thread priority."); - - enable = OS_DisableInterrupts(); - - while (t && t != thread) { - pre = t; - t = t->next; - } - - if (!t || t == &OSi_IdleThread) { - (void)OS_RestoreInterrupts(enable); - return FALSE; - } - - if (t->priority != prio) { - - if (!pre) { - OSi_ThreadInfo.list = thread->next; - } else { - pre->next = thread->next; - } - - thread->priority = prio; - - OSi_InsertThreadToList(thread); - OSi_RescheduleThread(); - } - - (void)OS_RestoreInterrupts(enable); - return TRUE; -} - -u32 OS_GetThreadPriority (const OSThread *thread) -{ - SDK_ASSERTMSG(thread, "OS_GetThreadPriority: bad thread"); - return thread->priority; -} - -void OS_Sleep (u32 msec) -{ - OSAlarm alarm; - - SDK_ASSERTMSG(OS_IsTickAvailable() - && OS_IsAlarmAvailable(), "OS_Sleep: need to start Tick and Alarm beforehand."); - SDK_ASSERTMSG(OSi_IsThreadInitialized, "OS_Sleep: thread system not initialized."); - - OS_CreateAlarm(&alarm); - { - OSThread *volatile p_thread = OSi_GetCurrentThread(); - OSIntrMode bak_cpsr = OS_DisableInterrupts(); - - p_thread->alarmForSleep = &alarm; - - OS_SetAlarm(&alarm, OS_MilliSecondsToTicks(msec), &OSi_SleepAlarmCallback, - (void *)&p_thread); - while (p_thread != NULL) { - OS_SleepThread(NULL); - } - (void)OS_RestoreInterrupts(bak_cpsr); - } -} - -static void OSi_SleepAlarmCallback (void *arg) -{ - OSThread **pp_thread = (OSThread **)arg; - OSThread *p_thread = *pp_thread; - *pp_thread = NULL; - - p_thread->alarmForSleep = NULL; - - OS_WakeupThreadDirect(p_thread); -} - -OSSwitchThreadCallback OS_SetSwitchThreadCallback (OSSwitchThreadCallback callback) -{ - OSSwitchThreadCallback prev; - OSIntrMode enabled; - - enabled = OS_DisableInterrupts(); - prev = OSi_ThreadInfo.switchCallback; - OSi_ThreadInfo.switchCallback = callback; - - (void)OS_RestoreInterrupts(enabled); - return prev; -} - -static void OSi_IdleThreadProc (void *) -{ - (void)OS_EnableInterrupts(); - while (1) { - OS_Halt(); - } - -} - -OSThread *OSi_GetIdleThread (void) -{ - OSThread *t = NULL; - if (OSi_IsThreadInitialized) { - t = &OSi_IdleThread; - } - return t; -} - -u32 OS_DisableScheduler (void) -{ - OSIntrMode enabled = OS_DisableInterrupts(); - u32 count; - - if (OSi_RescheduleCount < (u32)(0 - 1)) { - count = OSi_RescheduleCount++; - } - (void)OS_RestoreInterrupts(enabled); - - return count; -} - -u32 OS_EnableScheduler (void) -{ - OSIntrMode enabled = OS_DisableInterrupts(); - u32 count = 0; - - if (OSi_RescheduleCount > 0) { - count = OSi_RescheduleCount--; - } - (void)OS_RestoreInterrupts(enabled); - - return count; -} - -#ifdef SDK_THREAD_INFINITY - -OSThread *OS_GetThread (u32 id) -{ - OSThread *retval = NULL; - OSThread *t = OSi_ThreadInfo.list; - - while (t) { - if (t->id == id) { - retval = t; - break; - } - - t = t->next; - } - - return retval; -} -#endif - -#ifdef SDK_THREAD_INFINITY - -void OS_SetThreadDestructor (OSThread *thread, OSThreadDestructor dtor) -{ - SDK_ASSERT(thread); - thread->destructor = dtor; -} - -OSThreadDestructor OS_GetThreadDestructor (const OSThread *thread) -{ - SDK_ASSERT(thread); - return thread->destructor; -} - -void OS_SetThreadParameter (OSThread *thread, void *parameter) -{ - SDK_ASSERT(thread); - thread->userParameter = parameter; -} - -void *OS_GetThreadParameter (const OSThread *thread) -{ - SDK_ASSERT(thread); - return thread->userParameter; -} - -void OSi_SetSystemErrno (OSThread *thread, int errno) -{ - SDK_ASSERT(thread); - thread->systemErrno = errno; -} - -int OSi_GetSystemErrno (const OSThread *thread) -{ - SDK_ASSERT(thread); - return thread->systemErrno; -} - -int OS_GetErrno (void) -{ - OSThread *thread = OSi_GetCurrentThread(); - return OSi_GetSystemErrno(thread); -} -#endif - -BOOL OS_IsThreadInList (const OSThread *thread) -{ - BOOL r = FALSE; - OSThread *t = OSi_ThreadInfo.list; - OSIntrMode enabled = OS_DisableInterrupts(); - - while (t) { - if (t == thread) { - r = TRUE; - break; - } - - t = t->next; - } - - (void)OS_RestoreInterrupts(enabled); - return r; -} - -void OS_SetThreadDestructorStack (void *stack) -{ - SDK_ASSERT(stack); - SDK_ASSERT((u32)stack % STACK_ALIGN == 0); - - OSi_StackForDestructor = stack; -} \ No newline at end of file diff --git a/subprojects/NitroSDK/libraries/os/src/os_tick.c b/subprojects/NitroSDK/libraries/os/src/os_tick.c deleted file mode 100644 index 6360577358..0000000000 --- a/subprojects/NitroSDK/libraries/os/src/os_tick.c +++ /dev/null @@ -1,129 +0,0 @@ -#include - -#define OSi_TICK_TIMERCONTROL (REG_OS_TM0CNT_H_E_MASK | REG_OS_TM0CNT_H_I_MASK | OS_TIMER_PRESCALER_64) - -#define OSi_TICK_TIMER OS_TIMER_0 - -#define OSi_TICK_IE_TIMER OS_IE_TIMER0 - -static u16 OSi_UseTick = FALSE; - -vu64 OSi_TickCounter; - -BOOL OSi_NeedResetTimer = FALSE; - -extern u16 OSi_IsTimerReserved(int timerNum); -extern void OSi_SetTimerReserved(int timerNum); - -static void OSi_CountUpTick(void); -u32 OSi_GetTick_noProfile(void); - -void OS_InitTick (void) -{ - if (!OSi_UseTick) { - OSi_UseTick = TRUE; - - SDK_ASSERT(!OSi_IsTimerReserved(OSi_TICK_TIMER)); - OSi_SetTimerReserved(OSi_TICK_TIMER); - - OSi_TickCounter = 0; - OS_SetTimerControl(OSi_TICK_TIMER, 0); - OS_SetTimerCount((OSTimer)OSi_TICK_TIMER, (u16)0); - OS_SetTimerControl(OSi_TICK_TIMER, (u16)OSi_TICK_TIMERCONTROL); - - OS_SetIrqFunction(OSi_TICK_IE_TIMER, OSi_CountUpTick); - - (void)OS_EnableIrqMask(OSi_TICK_IE_TIMER); - - OSi_NeedResetTimer = FALSE; - } -} - -BOOL OS_IsTickAvailable (void) -{ - return OSi_UseTick; -} - -static void OSi_CountUpTick (void) -{ - OSi_TickCounter++; - - if (OSi_NeedResetTimer) { - OS_SetTimerControl(OSi_TICK_TIMER, 0); - OS_SetTimerCount((OSTimer)OSi_TICK_TIMER, (u16)0); - OS_SetTimerControl(OSi_TICK_TIMER, (u16)OSi_TICK_TIMERCONTROL); - - OSi_NeedResetTimer = FALSE; - } - - OSi_EnterTimerCallback(OSi_TICK_TIMER, (void (*)(void *)) OSi_CountUpTick, 0); -} - -OSTick OS_GetTick (void) -{ - vu16 countL; - vu64 countH; - - OSIntrMode prev = OS_DisableInterrupts(); - SDK_ASSERT(OSi_UseTick); - - countL = *(REGType16 *)((u32)REG_TM0CNT_L_ADDR + OSi_TICK_TIMER * 4); - countH = OSi_TickCounter & 0xffffffffffffULL; - - if (reg_OS_IF & OSi_TICK_IE_TIMER && !(countL & 0x8000)) { - countH++; - } - - (void)OS_RestoreInterrupts(prev); - - return (countH << 16) | countL; -} - -#pragma profile off -u32 OSi_GetTick_noProfile (void) -{ - vu16 countL; - vu16 countH; - - OSIntrMode prev = OS_DisableInterrupts(); - SDK_ASSERT(OSi_UseTick); - - countL = *(REGType16 *)((u32)REG_TM0CNT_L_ADDR + OSi_TICK_TIMER * 4); - countH = (u16)OSi_TickCounter; - - if (reg_OS_IF & OSi_TICK_IE_TIMER && !(countL & 0x8000)) { - countH++; - } - - (void)OS_RestoreInterrupts(prev); - - return (u32)(countH << 16) | countL; -} - -#pragma profile reset - -u16 OS_GetTickLo (void) -{ - SDK_ASSERT(OSi_UseTick); - return *(REGType16 *)((u32)REG_TM0CNT_L_ADDR + OSi_TICK_TIMER * 4); -} - -void OS_SetTick (OSTick count) -{ - OSIntrMode prev; - - SDK_ASSERT(OSi_UseTick); - prev = OS_DisableInterrupts(); - - reg_OS_IF = OSi_TICK_IE_TIMER; - - OSi_NeedResetTimer = TRUE; - - OSi_TickCounter = (u64)(count >> 16); - - OS_SetTimerControl(OSi_TICK_TIMER, 0); - OS_SetTimerCount((OSTimer)OSi_TICK_TIMER, (u16)(count & 0xffff)); - OS_SetTimerControl(OSi_TICK_TIMER, (u16)OSi_TICK_TIMERCONTROL); - - (void)OS_RestoreInterrupts(prev); -} \ No newline at end of file diff --git a/subprojects/NitroSDK/libraries/os/src/os_timer.c b/subprojects/NitroSDK/libraries/os/src/os_timer.c deleted file mode 100644 index c1e42d9c6d..0000000000 --- a/subprojects/NitroSDK/libraries/os/src/os_timer.c +++ /dev/null @@ -1,143 +0,0 @@ -#include - -#define REG_OS_TMCNT_H_E_MASK REG_OS_TM0CNT_H_E_MASK -#define REG_OS_TMCNT_H_I_MASK REG_OS_TM0CNT_H_I_MASK -#define REG_OS_TMCNT_H_CH_MASK REG_OS_TM1CNT_H_CH_MASK - -static u16 OSi_TimerReserved = 0; - -#define OSi_TIMER_RESERVED_0 1 -#define OSi_TIMER_RESERVED_1 2 -#define OSi_TIMER_RESERVED_2 4 -#define OSi_TIMER_RESERVED_3 8 - -u16 OSi_IsTimerReserved(int timerNum); -void OSi_SetTimerReserved(int timerNum); -void OSi_UnsetTimerReserved(int timerNum); - -u16 OSi_IsTimerReserved (int timerNum) -{ - return (u16)(OSi_TimerReserved & (1 << timerNum)); -} - -void OSi_SetTimerReserved (int timerNum) -{ - OSi_TimerReserved |= (1 << timerNum); -} - -void OSi_UnsetTimerReserved (int timerNum) -{ - OSi_TimerReserved &= ~(1 << timerNum); -} - -void OS_StartTimer (OSTimer id, u16 count, OSTimerPrescaler preScale) -{ - SDK_ASSERT(OS_TIMER_0 <= id && id <= OS_TIMER_3); - SDK_ASSERT(OS_TIMER_PRESCALER_1 <= preScale && preScale <= OS_TIMER_PRESCALER_1024); - - SDK_ASSERT(!OSi_IsTimerReserved(id)); - - OS_SetTimerCount(id, (u16) ~count); - OS_SetTimerControl(id, (u16)(REG_OS_TMCNT_H_E_MASK | REG_OS_TMCNT_H_I_MASK | preScale)); -} - -void OS_StartTimer32 (OSTimer32 id, u32 count, OSTimerPrescaler preScale) -{ - SDK_ASSERT(OS_TIMER32_01 <= id && id <= OS_TIMER32_23); - SDK_ASSERT(OS_TIMER_PRESCALER_1 <= preScale && preScale <= OS_TIMER_PRESCALER_1024); - - SDK_ASSERT(!OSi_IsTimerReserved(id)); - SDK_ASSERT(!OSi_IsTimerReserved(id + 1)); - - OS_SetTimerCount((OSTimer)((int)id + 1), (u16)((~count >> 16) & 0xffff)); - OS_SetTimerCount((OSTimer)id, (u16)(~count & 0xffff)); - - OS_SetTimerControl((OSTimer)((int)id + 1), - REG_OS_TMCNT_H_E_MASK | REG_OS_TMCNT_H_I_MASK | REG_OS_TMCNT_H_CH_MASK); - OS_SetTimerControl((OSTimer)id, (u16)(REG_OS_TMCNT_H_E_MASK | preScale)); -} - -void OS_StartTimer48 (OSTimer48 id, u64 count, OSTimerPrescaler preScale) -{ - SDK_ASSERT(OS_TIMER48_012 <= id && id <= OS_TIMER48_123); - SDK_ASSERT(OS_TIMER_PRESCALER_1 <= preScale && preScale <= OS_TIMER_PRESCALER_1024); - - SDK_ASSERT(!OSi_IsTimerReserved(id)); - SDK_ASSERT(!OSi_IsTimerReserved(id + 1)); - SDK_ASSERT(!OSi_IsTimerReserved(id + 2)); - - OS_SetTimerCount((OSTimer)((int)id + 2), (u16)((~count >> 32) & 0xffff)); - OS_SetTimerCount((OSTimer)((int)id + 1), (u16)((~count >> 16) & 0xffff)); - OS_SetTimerCount((OSTimer)id, (u16)(~count & 0xffff)); - - OS_SetTimerControl((OSTimer)((int)id + 2), - REG_OS_TMCNT_H_E_MASK | REG_OS_TMCNT_H_I_MASK | REG_OS_TMCNT_H_CH_MASK); - OS_SetTimerControl((OSTimer)((int)id + 1), REG_OS_TMCNT_H_E_MASK | REG_OS_TMCNT_H_CH_MASK); - OS_SetTimerControl((OSTimer)id, (u16)(REG_OS_TMCNT_H_E_MASK | preScale)); -} - -void OS_StartTimer64 (u64 count, OSTimerPrescaler preScale) -{ - SDK_ASSERT(OS_TIMER_PRESCALER_1 <= preScale && preScale <= OS_TIMER_PRESCALER_1024); - - SDK_ASSERT(!OSi_IsTimerReserved(OS_TIMER_0)); - SDK_ASSERT(!OSi_IsTimerReserved(OS_TIMER_1)); - SDK_ASSERT(!OSi_IsTimerReserved(OS_TIMER_2)); - SDK_ASSERT(!OSi_IsTimerReserved(OS_TIMER_3)); - - OS_SetTimerCount(OS_TIMER_3, (u16)((~count >> 48) & 0xffff)); - OS_SetTimerCount(OS_TIMER_2, (u16)((~count >> 32) & 0xffff)); - OS_SetTimerCount(OS_TIMER_1, (u16)((~count >> 16) & 0xffff)); - OS_SetTimerCount(OS_TIMER_0, (u16)(~count & 0xffff)); - - OS_SetTimerControl(OS_TIMER_3, - REG_OS_TMCNT_H_E_MASK | REG_OS_TMCNT_H_I_MASK | REG_OS_TMCNT_H_CH_MASK); - OS_SetTimerControl(OS_TIMER_2, REG_OS_TMCNT_H_E_MASK | REG_OS_TMCNT_H_CH_MASK); - OS_SetTimerControl(OS_TIMER_1, REG_OS_TMCNT_H_E_MASK | REG_OS_TMCNT_H_CH_MASK); - OS_SetTimerControl(OS_TIMER_0, (u16)(REG_OS_TMCNT_H_E_MASK | preScale)); -} - -void OS_StopTimer (OSTimer id) -{ - SDK_ASSERT(OS_TIMER_0 <= id && id <= OS_TIMER_3); - SDK_ASSERT(!OSi_IsTimerReserved(id)); - - OS_SetTimerControl(id, 0); -} - -void OS_StopTimer32 (OSTimer32 id) -{ - SDK_ASSERT(OS_TIMER32_01 <= id && id <= OS_TIMER32_23); - - SDK_ASSERT(!OSi_IsTimerReserved(id)); - SDK_ASSERT(!OSi_IsTimerReserved(id + 1)); - - OS_StopTimer((OSTimer)((int)id + 1)); - OS_StopTimer((OSTimer)id); -} - -void OS_StopTimer48 (OSTimer48 id) -{ - SDK_ASSERT(OS_TIMER48_012 <= id && id <= OS_TIMER48_123); - - SDK_ASSERT(!OSi_IsTimerReserved(id)); - SDK_ASSERT(!OSi_IsTimerReserved(id + 1)); - SDK_ASSERT(!OSi_IsTimerReserved(id + 2)); - - OS_StopTimer((OSTimer)((int)id + 2)); - OS_StopTimer((OSTimer)((int)id + 1)); - OS_StopTimer((OSTimer)id); -} - -void OS_StopTimer64 (void) -{ - SDK_ASSERT(!OSi_IsTimerReserved(OS_TIMER_0)); - SDK_ASSERT(!OSi_IsTimerReserved(OS_TIMER_1)); - SDK_ASSERT(!OSi_IsTimerReserved(OS_TIMER_2)); - SDK_ASSERT(!OSi_IsTimerReserved(OS_TIMER_3)); - - OS_StopTimer(OS_TIMER_3); - OS_StopTimer(OS_TIMER_2); - OS_StopTimer(OS_TIMER_1); - OS_StopTimer(OS_TIMER_0); -} \ No newline at end of file diff --git a/subprojects/NitroSDK/libraries/os/src/os_valarm.c b/subprojects/NitroSDK/libraries/os/src/os_valarm.c deleted file mode 100644 index 7c711215c0..0000000000 --- a/subprojects/NitroSDK/libraries/os/src/os_valarm.c +++ /dev/null @@ -1,447 +0,0 @@ -#include - -#define OSi_VHIGHT HW_LCD_LINES - -#define OSi_VALARM_LATER 0 -#define OSi_VALARM_NOW 1 -#define OSi_VALARM_TIMEOUT 2 - -static struct OSiVAlarmQueue { - OSVAlarm *head; - OSVAlarm *tail; -} -OSi_VAlarmQueue; - -static u16 OSi_UseVAlarm = FALSE; - -static s32 OSi_VFrameCount; -static s32 OSi_PreviousVCount; - -static void OSi_InsertVAlarm(OSVAlarm *alarm); -static void OSi_SetNextVAlarm(OSVAlarm *alarm); -static void OSi_AppendVAlarm(OSVAlarm *alarm); -static void OSi_VAlarmHandler(void *arg); -static int OSi_CompareVCount(OSVAlarm *alarm, s32 currentVCount, s32 currentVFrame); -static s32 OSi_GetVFrame(s32 vcount); - -static int OSi_VCountArr (int count) -{ - while (count < 0) { - count += OSi_VHIGHT; - } - while (count >= OSi_VHIGHT) { - count -= OSi_VHIGHT; - } - return count; -} - -#define OSi_VCountSub(a, b) OSi_VCountArr((int)((a) - (b))) - -#define OSi_IsNearVCount(a, b, c) ((OSi_VCountSub((a), (c)) < OSi_VCountSub((b), (c)))? TRUE: FALSE) - -void OS_InitVAlarm (void) -{ - if (!OSi_UseVAlarm) { - OSi_UseVAlarm = TRUE; - - OSi_VAlarmQueue.head = NULL; - OSi_VAlarmQueue.tail = NULL; - - (void)OS_DisableIrqMask(OS_IE_V_COUNT); - - OSi_VFrameCount = 0; - OSi_PreviousVCount = 0; - } -} - -void OS_EndVAlarm (void) -{ - OSIntrMode enabled; - - SDK_ASSERT(OSi_UseVAlarm); - enabled = OS_DisableInterrupts(); - - if (OSi_UseVAlarm) { - SDK_ASSERTMSG(!OSi_VAlarmQueue.head, - "OS_EndVAlarm: Cannot end v-alarm system while using v-alarm."); - OSi_UseVAlarm = FALSE; - } - - (void)OS_RestoreInterrupts(enabled); -} - -BOOL OS_IsVAlarmAvailable (void) -{ - return OSi_UseVAlarm; -} - -static void OSi_InsertVAlarm (OSVAlarm *alarm) -{ - OSVAlarm *prev; - OSVAlarm *next; - - for (next = OSi_VAlarmQueue.head; next; next = next->next) { - - if ((next->frame < alarm->frame) || - (next->frame == alarm->frame) && (next->fire <= alarm->fire)) { - continue; - } - - prev = next->prev; - - alarm->prev = prev; - alarm->next = next; - - next->prev = alarm; - - if (prev) { - prev->next = alarm; - } else { - OSi_VAlarmQueue.head = alarm; - OSi_SetNextVAlarm(alarm); - } - - return; - } - - OSi_AppendVAlarm(alarm); -} - -static void OSi_AppendVAlarm (OSVAlarm *alarm) -{ - OSVAlarm *prev = OSi_VAlarmQueue.tail; - - alarm->prev = prev; - alarm->next = NULL; - - OSi_VAlarmQueue.tail = alarm; - - if (prev) { - prev->next = alarm; - } else { - OSi_VAlarmQueue.head = alarm; - OSi_SetNextVAlarm(alarm); - } -} - -static void OSi_DetachVAlarm (OSVAlarm *alarm) -{ - OSVAlarm *prev; - OSVAlarm *next; - - if (!alarm) { - return; - } - - prev = alarm->prev; - next = alarm->next; - - if (next) { - next->prev = prev; - } else { - OSi_VAlarmQueue.tail = prev; - } - - if (prev) { - prev->next = next; - } else { - OSi_VAlarmQueue.head = next; - } -} - -void OS_CreateVAlarm (OSVAlarm *alarm) -{ - SDK_ASSERT(OSi_UseVAlarm); - SDK_ASSERT(alarm); - - alarm->handler = 0; - alarm->tag = 0; - - alarm->finish = FALSE; -} - -void OS_SetVAlarm (OSVAlarm *alarm, s16 count, s16 delay, OSVAlarmHandler handler, void *arg) -{ - OSIntrMode enabled = OS_DisableInterrupts(); - s32 currentVCount; - s32 currentVFrame; - - SDK_ASSERT(OSi_UseVAlarm); - SDK_ASSERTMSG(handler, "OS_SetVAlarm: handler must not be NULL."); - if (!alarm || alarm->handler) { -#ifndef SDK_FINALROM - OS_Panic("v-alarm could be already used."); -#else - OS_Panic(""); -#endif - } - - currentVCount = GX_GetVCount(); - currentVFrame = OSi_GetVFrame(currentVCount); - - alarm->period = FALSE; - - alarm->fire = count; - alarm->frame = (u32)((count > currentVCount) ? currentVFrame : (currentVFrame + 1)); - - alarm->delay = delay; - - alarm->handler = handler; - alarm->arg = arg; - - alarm->canceled = FALSE; - - OSi_InsertVAlarm(alarm); - - (void)OS_RestoreInterrupts(enabled); -} - -void OS_SetPeriodicVAlarm (OSVAlarm *alarm, s16 count, s16 delay, OSVAlarmHandler handler, void *arg) -{ - OSIntrMode enabled = OS_DisableInterrupts(); - s32 currentVCount; - s32 currentVFrame; - - SDK_ASSERT(OSi_UseVAlarm); - SDK_ASSERTMSG(handler, "OS_SetPeriodicVAlarm: handler must not be NULL\n"); - SDK_ASSERTMSG(0 <= delay - && delay <= OSi_VHIGHT, - "OS_SetPeriodicVAlarm: illegal permissible range of delay."); - if (!alarm || alarm->handler) { -#ifndef SDK_FINALROM - OS_Panic("v-alarm could be already used."); -#else - OS_Panic(""); -#endif - } - - currentVCount = GX_GetVCount(); - currentVFrame = OSi_GetVFrame(currentVCount); - - alarm->period = TRUE; - - alarm->fire = count; - alarm->frame = (u32)((count > currentVCount) ? currentVFrame : (currentVFrame + 1)); - - alarm->delay = delay; - - alarm->handler = handler; - alarm->arg = arg; - - alarm->canceled = FALSE; - - OSi_InsertVAlarm(alarm); - - (void)OS_RestoreInterrupts(enabled); -} - -static void OSi_SetNextVAlarm (OSVAlarm *alarm) -{ - - OS_SetIrqFunction(OS_IE_V_COUNT, (void (*)()) OSi_VAlarmHandler); - - GX_SetVCountEqVal(alarm->fire); - - GX_VCountEqIntr(TRUE); - (void)OS_EnableIrqMask(OS_IE_V_COUNT); -} - -void OS_SetVAlarmTag (OSVAlarm *alarm, u32 tag) -{ -#ifdef SDK_DEBUG - SDK_ASSERT(OSi_UseVAlarm); - SDK_ASSERT(alarm); - SDK_ASSERTMSG(tag > 0, "OSSetVAlarmTag: Tag must be >0."); -#else - if (tag == 0) { - OS_Panic(""); - } -#endif - - if (alarm) { - alarm->tag = tag; - } -} - -void OS_CancelVAlarm (OSVAlarm *alarm) -{ - OSIntrMode enabled = OS_DisableInterrupts();; - - SDK_ASSERT(OSi_UseVAlarm); - SDK_ASSERT(alarm); - - alarm->canceled = TRUE; - if (alarm->handler == NULL) { - (void)OS_RestoreInterrupts(enabled); - return; - } - - OSi_DetachVAlarm(alarm); - - alarm->handler = NULL; - - (void)OS_RestoreInterrupts(enabled); -} - -void OS_CancelAllVAlarms (void) -{ - OSIntrMode enabled; - OSVAlarm *alarm; - OSVAlarm *next; - - SDK_ASSERT(OSi_UseVAlarm); - enabled = OS_DisableInterrupts(); - - for (alarm = OSi_VAlarmQueue.head, next = alarm ? alarm->next : NULL; - alarm; alarm = next, next = alarm ? alarm->next : NULL) { - - OS_CancelVAlarm(alarm); - } - - (void)OS_RestoreInterrupts(enabled); -} - -void OS_CancelVAlarms (u32 tag) -{ - OSIntrMode enabled = OS_DisableInterrupts(); - OSVAlarm *alarm; - OSVAlarm *next; - -#ifdef SDK_DEBUG - SDK_ASSERT(OSi_UseVAlarm); - SDK_ASSERTMSG(tag > 0, "OSCancelVAlarms: Tag must be >0."); -#else - if (tag == 0) { - OS_Panic(""); - } -#endif - - for (alarm = OSi_VAlarmQueue.head, next = alarm ? alarm->next : NULL; - alarm; alarm = next, next = alarm ? alarm->next : NULL) { - if (alarm->tag == tag) { - - OS_CancelVAlarm(alarm); - } - } - - (void)OS_RestoreInterrupts(enabled); -} - -static void OSi_VAlarmHandler (void *) -{ - OSVAlarm *alarm; - OSVAlarmHandler handler; - int check; - s32 currentVCount; - s32 currentVFrame; - - (void)OS_DisableIrqMask(OS_IE_V_COUNT); - GX_VCountEqIntr(FALSE); - - OS_SetIrqCheckFlag(OS_IE_V_COUNT); - - currentVCount = GX_GetVCountEqVal(); - currentVFrame = OSi_GetVFrame(currentVCount - 1); - - while (NULL != (alarm = OSi_VAlarmQueue.head)) { - - currentVCount = GX_GetVCount(); - currentVFrame = OSi_GetVFrame(currentVCount); - - check = OSi_CompareVCount(alarm, currentVFrame, currentVCount); - -#ifdef DEBUGPRINT - OS_Printf("[%d:%d %d] %d %d check=%d \n", - alarm->arg, alarm->frame, alarm->fire, currentVFrame, currentVCount, check); -#endif - - switch (check) { - case OSi_VALARM_LATER: - - OSi_SetNextVAlarm(alarm); - - if (alarm->fire != GX_GetVCount() || alarm->frame != currentVFrame) { - return; - } - - (void)OS_DisableIrqMask(OS_IE_V_COUNT); - GX_VCountEqIntr(FALSE); - (void)OS_ResetRequestIrqMask(OS_IE_V_COUNT); - - case OSi_VALARM_NOW: - - handler = alarm->handler; - OSi_DetachVAlarm(alarm); - alarm->handler = NULL; - - if (handler) { - (handler) (alarm->arg); - } - - if (alarm->period && !alarm->canceled) { - alarm->handler = handler; - alarm->frame = (u32)OSi_VFrameCount + 1; - OSi_InsertVAlarm(alarm); - } - break; - - case OSi_VALARM_TIMEOUT: - - OSi_DetachVAlarm(alarm); - alarm->frame = (u32)OSi_VFrameCount + 1; - OSi_InsertVAlarm(alarm); - break; - - } - } -} - -static int OSi_CompareVCount (OSVAlarm *alarm, s32 currentVFrame, s32 currentVCount) -{ - s32 delayVFrame; - s32 delayVCount; - - delayVFrame = currentVFrame - (s32)alarm->frame; - delayVCount = currentVCount - (s32)alarm->fire; - - if (delayVFrame < 0 || (delayVFrame == 0 && delayVCount < 0)) { - return OSi_VALARM_LATER; - } - - if (delayVCount < 0) { - delayVCount += OSi_VHIGHT; - } - - return (delayVCount <= alarm->delay) ? OSi_VALARM_NOW : OSi_VALARM_TIMEOUT; -} - -static s32 OSi_GetVFrame (s32 vcount) -{ - OSIntrMode enabled = OS_DisableInterrupts(); - - if (vcount < OSi_PreviousVCount) { - OSi_VFrameCount++; - } - OSi_PreviousVCount = vcount; - - (void)OS_RestoreInterrupts(enabled); - return OSi_VFrameCount; -} - -void OS_DumpVAlarm(void); -void OS_DumpVAlarm (void) -{ - OSIntrMode enabled = OS_DisableInterrupts(); - OSVAlarm *alarm; - OSVAlarm *next; - - OS_Printf("---------------- current vcount = %d\n", (s16)GX_GetVCount()); - for (alarm = OSi_VAlarmQueue.head; alarm; alarm = next) { - next = alarm->next; - - OS_Printf("%08x fire=%d:%d delay=%d arg=%2d prev=%08x next=%08x\n", alarm, - alarm->frame, alarm->fire, alarm->delay, alarm->arg, alarm->prev, alarm->next); - } - - (void)OS_RestoreInterrupts(enabled); -} \ No newline at end of file diff --git a/subprojects/NitroSDK/libraries/os/src/os_vramExclusive.c b/subprojects/NitroSDK/libraries/os/src/os_vramExclusive.c deleted file mode 100644 index 42bebf49a1..0000000000 --- a/subprojects/NitroSDK/libraries/os/src/os_vramExclusive.c +++ /dev/null @@ -1,81 +0,0 @@ -#include -#include - -static u32 OSi_vramExclusive; -static u16 OSi_vramLockId[OS_VRAM_BANK_KINDS]; - -#include -static asm u32 -OsCountZeroBits (u32 bitmap) -{ - clz r0, r0 - bx lr -} - -#include - -void OSi_InitVramExclusive (void) -{ - s32 i; - - OSi_vramExclusive = 0x0000; - for(i = 0 ; i < OS_VRAM_BANK_KINDS ; i++) { - OSi_vramLockId[i] = 0; - } -} - -BOOL OSi_TryLockVram (u16 bank, u16 lockId) -{ - u32 workMap; - s32 zeroBits; - OSIntrMode enabled = OS_DisableInterrupts(); - - workMap = (u32)(bank & OSi_vramExclusive); - while (TRUE) { - zeroBits = (s32)(31 - OsCountZeroBits(workMap)); - if (zeroBits < 0) { - break; - } - workMap &= ~(0x00000001 << zeroBits); - if (OSi_vramLockId[zeroBits] != lockId) { - (void)OS_RestoreInterrupts(enabled); - return FALSE; - } - } - - workMap = (u32)(bank & OS_VRAM_BANK_ID_ALL); - while (TRUE) { - zeroBits = (s32)(31 - OsCountZeroBits(workMap)); - if (zeroBits < 0) { - break; - } - workMap &= ~(0x00000001 << zeroBits); - OSi_vramLockId[zeroBits] = lockId; - OSi_vramExclusive |= (0x00000001 << zeroBits); - } - - (void)OS_RestoreInterrupts(enabled); - return TRUE; -} - -void OSi_UnlockVram (u16 bank, u16 lockId) -{ - u32 workMap; - s32 zeroBits; - OSIntrMode enabled = OS_DisableInterrupts(); - - workMap = (u32)(bank & OSi_vramExclusive & OS_VRAM_BANK_ID_ALL); - while (TRUE) { - zeroBits = (s32)(31 - OsCountZeroBits((u32)workMap)); - if (zeroBits < 0) { - break; - } - workMap &= ~(0x00000001 << zeroBits); - if (OSi_vramLockId[zeroBits] == lockId) { - OSi_vramLockId[zeroBits] = 0; - OSi_vramExclusive &= ~(0x00000001 << zeroBits); - } - } - - (void)OS_RestoreInterrupts(enabled); -} \ No newline at end of file diff --git a/subprojects/NitroSDK/libraries/pxi/meson.build b/subprojects/NitroSDK/libraries/pxi/meson.build deleted file mode 100644 index 20fc4400c2..0000000000 --- a/subprojects/NitroSDK/libraries/pxi/meson.build +++ /dev/null @@ -1,14 +0,0 @@ -libpxi_srcs = files( - 'src/pxi_init.c', - 'src/pxi_fifo.c' -) - -libpxi = static_library('pxi', - sources: [libpxi_srcs, fx_const_h], - c_args: [c_args, sdk_args], - include_directories: [public_includes], - c_pch: nitro_pch, - pic: false -) - -nitrosdk_libs += libpxi diff --git a/subprojects/NitroSDK/libraries/pxi/src/pxi_fifo.c b/subprojects/NitroSDK/libraries/pxi/src/pxi_fifo.c deleted file mode 100644 index cea72288d7..0000000000 --- a/subprojects/NitroSDK/libraries/pxi/src/pxi_fifo.c +++ /dev/null @@ -1,210 +0,0 @@ -#include - -static u16 FifoCtrlInit = 0; -static PXIFifoCallback FifoRecvCallbackTable[PXI_MAX_FIFO_TAG]; - -static inline PXIFifoStatus PXIi_GetFromFifo(u32 * data_buf); -static inline PXIFifoStatus PXIi_SetToFifo(u32 data); - -void PXI_InitFifo (void) { - int i; - OSIntrMode enabled; - OSSystemWork * p = OS_GetSystemWork(); - - enabled = OS_DisableInterrupts(); - - if (!FifoCtrlInit) { - FifoCtrlInit = TRUE; - - p->pxiHandleChecker[PXI_PROC_ARM] = 0UL; - - for (i = 0; i < PXI_MAX_FIFO_TAG; i++) { - FifoRecvCallbackTable[i] = NULL; - } - - reg_PXI_FIFO_CNT = - (REG_PXI_FIFO_CNT_SEND_CL_MASK | - REG_PXI_FIFO_CNT_RECV_RI_MASK | REG_PXI_FIFO_CNT_E_MASK | REG_PXI_FIFO_CNT_ERR_MASK); - - (void)OS_ResetRequestIrqMask(OS_IE_FIFO_RECV); - (void)OS_SetIrqFunction(OS_IE_FIFO_RECV, PXIi_HandlerRecvFifoNotEmpty); - (void)OS_EnableIrqMask(OS_IE_FIFO_RECV); - -#ifndef SDK_FINALROM - - if (OS_IsRunOnEmulator()) { - reg_PXI_INTF = 0x100; - } else -#endif -#ifdef SDK_ARM7 - { - for (i = 8; i >= 0; i--) { - reg_PXI_INTF = (u16)(i << 8); - OS_SpinWait(1000); - - if ((reg_PXI_INTF & 15) != i) { - i = 8; - } - } - } -#else - { - int timeout; - s32 c; - - for (i = 0;; i++) { - c = reg_PXI_INTF & 15; - reg_PXI_INTF = (u16)(c << 8); - - if (c == 0 && i > 4) { - break; - } - - for (timeout = 1000; (reg_PXI_INTF & 15) == c; timeout--) { - if (timeout == 0) { - i = 0; - break; - } - } - } - } -#endif - } - (void)OS_RestoreInterrupts(enabled); -} - -void PXI_SetFifoRecvCallback (int fifotag, PXIFifoCallback callback) { - OSIntrMode enabled; - OSSystemWork * p = OS_GetSystemWork(); - - SDK_WARNING( - callback == NULL || - FifoRecvCallbackTable[fifotag] == NULL || - FifoRecvCallbackTable[fifotag] == callback, - "Fifo Callback overridden [fifotag=%d]\n", fifotag - ); - - enabled = OS_DisableInterrupts(); - - FifoRecvCallbackTable[fifotag] = callback; - if (callback) { - p->pxiHandleChecker[PXI_PROC_ARM] |= (1UL << fifotag); - } else { - p->pxiHandleChecker[PXI_PROC_ARM] &= ~(1UL << fifotag); - } - (void)OS_RestoreInterrupts(enabled); -} - -BOOL PXI_IsCallbackReady (int fifotag, PXIProc proc) { - OSSystemWork * p = OS_GetSystemWork(); - - return (p->pxiHandleChecker[proc] & (1UL << fifotag)) ? TRUE : FALSE; -} - -void PXI_SetFifoSendCallback (PXIFifoEmtpyCallback callback) { - OSIntrMode enabled; - - enabled = OS_DisableInterrupts(); - - (void)OS_SetIrqFunction(OS_IE_FIFO_SEND, callback); - (void)OS_EnableIrqMask(OS_IE_FIFO_SEND); - - reg_PXI_FIFO_CNT |= REG_PXI_FIFO_CNT_SEND_TI_MASK; - - (void)OS_RestoreInterrupts(enabled); -} - -int PXI_SendWordByFifo (int fifotag, u32 data, BOOL err) { - PXIFifoMessage fifomsg; - - SDK_ASSERTMSG(0 <= fifotag && fifotag < PXI_MAX_FIFO_TAG, "[FifoTag] out of range"); - SDK_ASSERTMSG(data < (1UL << PXI_FIFOMESSAGE_BITSZ_DATA), "[data] out of range"); - - fifomsg.e.tag = (PXIFifoTag)fifotag; - fifomsg.e.err = (u32)err; - fifomsg.e.data = data; - - return PXIi_SetToFifo(fifomsg.raw); -} - -static inline PXIFifoStatus PXIi_SetToFifo (u32 data) { - OSIntrMode enabled; - - if (reg_PXI_FIFO_CNT & REG_PXI_FIFO_CNT_ERR_MASK) { - reg_PXI_FIFO_CNT |= (REG_PXI_FIFO_CNT_E_MASK | REG_PXI_FIFO_CNT_ERR_MASK); - return PXI_FIFO_FAIL_SEND_ERR; - } - - enabled = OS_DisableInterrupts(); - if (reg_PXI_FIFO_CNT & REG_PXI_FIFO_CNT_SEND_FULL_MASK) { - (void)OS_RestoreInterrupts(enabled); - return PXI_FIFO_FAIL_SEND_FULL; - } - - reg_PXI_SEND_FIFO = data; - (void)OS_RestoreInterrupts(enabled); - return PXI_FIFO_SUCCESS; -} - -static inline PXIFifoStatus PXIi_GetFromFifo (u32 * data_buf) { - OSIntrMode enabled; - - if (reg_PXI_FIFO_CNT & REG_PXI_FIFO_CNT_ERR_MASK) { - reg_PXI_FIFO_CNT |= (REG_PXI_FIFO_CNT_E_MASK | REG_PXI_FIFO_CNT_ERR_MASK); - return PXI_FIFO_FAIL_RECV_ERR; - } - - enabled = OS_DisableInterrupts(); - if (reg_PXI_FIFO_CNT & REG_PXI_FIFO_CNT_RECV_EMP_MASK) { - (void)OS_RestoreInterrupts(enabled); - return PXI_FIFO_FAIL_RECV_EMPTY; - } - - *data_buf = reg_PXI_RECV_FIFO; - (void)OS_RestoreInterrupts(enabled); - - return PXI_FIFO_SUCCESS; -} - -static void PXIi_HandlerSendFifoEmpty (void) { -} - -#ifdef SDK_CW_WA_OPT_BLX -#pragma optimization_level 1 -#endif - -void PXIi_HandlerRecvFifoNotEmpty (void) { - PXIFifoMessage fifomsg; - PXIFifoStatus ret_code; - PXIFifoTag tag; - - while (1) { - ret_code = PXIi_GetFromFifo(&fifomsg.raw); - - if (ret_code == PXI_FIFO_FAIL_RECV_EMPTY) { - break; - } - if (ret_code == PXI_FIFO_FAIL_RECV_ERR) { - continue; - } - - tag = (PXIFifoTag)fifomsg.e.tag; - - if (tag) { - if (FifoRecvCallbackTable[tag]) { - (FifoRecvCallbackTable[tag]) (tag, fifomsg.e.data, (BOOL)fifomsg.e.err); - } else { - if (fifomsg.e.err) { - } else { - fifomsg.e.err = TRUE; - (void)PXIi_SetToFifo(fifomsg.raw); - } - } - } else { - } - } -} - -#ifdef SDK_CW_WA_OPT_BLX -#pragma optimization_level 4 -#endif diff --git a/subprojects/NitroSDK/libraries/pxi/src/pxi_init.c b/subprojects/NitroSDK/libraries/pxi/src/pxi_init.c deleted file mode 100644 index 1d75d309b4..0000000000 --- a/subprojects/NitroSDK/libraries/pxi/src/pxi_init.c +++ /dev/null @@ -1,19 +0,0 @@ -#include -#include - -#ifndef SDK_FINALROM -#ifdef SDK_ARM9 -#include -SDK_DEFINE_MIDDLEWARE(checkString, "NINTENDO", "DEBUG"); -#include -#endif -#endif - -void PXI_Init (void) { -#ifndef SDK_FINALROM -#ifdef SDK_ARM9 - SDK_USING_MIDDLEWARE(checkString); -#endif -#endif - PXI_InitFifo(); -} diff --git a/subprojects/NitroSDK/libraries/rtc/meson.build b/subprojects/NitroSDK/libraries/rtc/meson.build deleted file mode 100644 index 4a76b09c31..0000000000 --- a/subprojects/NitroSDK/libraries/rtc/meson.build +++ /dev/null @@ -1,15 +0,0 @@ -librtc_srcs = files( - 'src/external.c', - 'src/internal.c', - 'src/convert.c', -) - -librtc = static_library('rtc', - sources: [librtc_srcs, fx_const_h], - c_args: [c_args, sdk_args], - include_directories: [public_includes], - c_pch: nitro_pch, - pic: false -) - -nitrosdk_libs += librtc diff --git a/subprojects/NitroSDK/libraries/rtc/src/convert.c b/subprojects/NitroSDK/libraries/rtc/src/convert.c deleted file mode 100644 index 1534d2e32c..0000000000 --- a/subprojects/NitroSDK/libraries/rtc/src/convert.c +++ /dev/null @@ -1,145 +0,0 @@ - -#include -#include - -static s32 sDayOfYear[12] = {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334}; - -static inline BOOL RTCi_IsLeapYear (u32 year) { - return !((year & 0x03)); -} - -s32 RTC_ConvertDateToDay (const RTCDate * date) { - s32 dayNum; - - if (date->year >= 100 - || (date->month < 1) || (date->month > 12) - || (date->day < 1) || (date->day > 31) - || (date->week >= RTC_WEEK_MAX) || (date->month < 1) || (date->month > 12)) { - return -1; - } - - dayNum = (s32)(date->day - 1); - dayNum += sDayOfYear[date->month - 1]; - if ((date->month >= 3) && RTCi_IsLeapYear(date->year)) { - dayNum++; - } - - dayNum += date->year * 365; - - dayNum += (date->year + 3) / 4; - - return dayNum; -} - -s32 RTCi_ConvertTimeToSecond (const RTCTime * time) { - return (s32)((time->hour * 60 + time->minute) * 60 + time->second); -} - -s64 RTC_ConvertDateTimeToSecond (const RTCDate * date, const RTCTime * time) { - s32 day, sec; - day = RTC_ConvertDateToDay(date); - if (day == -1) { - return -1; - } - sec = RTCi_ConvertTimeToSecond(time); - if (sec == -1) { - return -1; - } - return ((s64)day) * (60 * 60 * 24) + sec; -} - -void RTC_ConvertDayToDate (RTCDate * date, s32 day) { - u32 year; - s32 month; - - if (day < 0) { - day = 0; - } - if (day > 36524) { - day = 36524; - } - - date->week = (RTCWeek)((day + 6) % 7); - - for (year = 0; year < 99; year++) { - s32 prev = day; - day -= (RTCi_IsLeapYear(year)) ? 366 : 365; - if (day < 0) { - day = prev; - break; - } - } - if (day > 365) { - day = 365; - } - - date->year = year; - - if (RTCi_IsLeapYear(year)) { - if (day < 31 + 29) { - if (day < 31) { - month = 1; - } else { - month = 2; - day -= 31; - } - date->month = (u32)month; - date->day = (u32)(day + 1); - return; - } else { - day--; - } - } - - for (month = 11; month >= 0; month--) { - if (day >= sDayOfYear[month]) { - date->month = (u32)(month + 1); - date->day = (u32)(day - sDayOfYear[month] + 1); - return; - } - } - - SDK_ASSERT("Internal Error."); -} - -void RTCi_ConvertSecondToTime (RTCTime * time, s32 sec) { - if (sec < 0) { - sec = 0; - } - if (sec > 86399) { - sec = 86399; - } - - time->second = (u32)(sec % 60); - sec /= 60; - time->minute = (u32)(sec % 60); - sec /= 60; - time->hour = (u32)sec; -} - -void RTC_ConvertSecondToDateTime (RTCDate * date, RTCTime * time, s64 sec) { - if (sec < 0) { - sec = 0; - } else if (sec > 3155759999) { - sec = 3155759999; - } - RTCi_ConvertSecondToTime(time, (s32)(sec % 86400)); - RTC_ConvertDayToDate(date, (s32)(sec / 86400)); -} - -RTCWeek RTC_GetDayOfWeek (RTCDate * date) { - int cent; - int year = (int)(2000 + date->year); - int month = (int)date->month; - int day = (int)date->day; - - month -= 2; - if (month < 1) { - month += 12; - --year; - } - - cent = year / 100; - year %= 100; - return (RTCWeek)(((26 * month - 2) / 10 + day + year + year / 4 + cent / 4 + 5 * cent) % 7); -} diff --git a/subprojects/NitroSDK/libraries/rtc/src/external.c b/subprojects/NitroSDK/libraries/rtc/src/external.c deleted file mode 100644 index 20c503cf44..0000000000 --- a/subprojects/NitroSDK/libraries/rtc/src/external.c +++ /dev/null @@ -1,990 +0,0 @@ -#include -#include - -typedef enum RTCLock { - RTC_LOCK_OFF = 0, - RTC_LOCK_ON, - RTC_LOCK_MAX -} RTCLock; - -typedef enum RTCSequence { - RTC_SEQ_GET_DATE = 0, - RTC_SEQ_GET_TIME, - RTC_SEQ_GET_DATETIME, - RTC_SEQ_SET_DATE, - RTC_SEQ_SET_TIME, - RTC_SEQ_SET_DATETIME, - RTC_SEQ_GET_ALARM1_STATUS, - RTC_SEQ_GET_ALARM2_STATUS, - RTC_SEQ_GET_ALARM_PARAM, - RTC_SEQ_SET_ALARM1_STATUS, - RTC_SEQ_SET_ALARM2_STATUS, - RTC_SEQ_SET_ALARM1_PARAM, - RTC_SEQ_SET_ALARM2_PARAM, - RTC_SEQ_SET_HOUR_FORMAT, - RTC_SEQ_SET_REG_STATUS2, - RTC_SEQ_SET_REG_ADJUST, - RTC_SEQ_MAX -} RTCSequence; - -typedef struct RTCWork { - u32 lock; - RTCCallback callback; - void * buffer[2]; - void * callbackArg; - u32 sequence; - u32 index; - RTCInterrupt interrupt; - RTCResult commonResult; -} RTCWork; - -static u16 rtcInitialized; -static RTCWork rtcWork; -static u16 rtcTickInitialized; -static OSTick rtcInitialTotalTicks; - -static void RtcCommonCallback(PXIFifoTag tag, u32 data, BOOL err); -static u32 RtcBCD2HEX(u32 bcd); -static u32 RtcHEX2BCD(u32 hex); -static BOOL RtcCheckAlarmParam(const RTCAlarmParam * param); -static RTCRawAlarm RtcMakeAlarmParam(const RTCAlarmParam * param); -static BOOL RtcCheckDate(const RTCDate * date, RTCRawDate * raw); -static BOOL RtcCheckTime(const RTCTime * time, RTCRawTime * raw); -static void RtcGetResultCallback(RTCResult result, void * arg); -static void RtcWaitBusy(void); -static RTCResult RtcTickInit(void); -static void RtcConvertTickToDateTimeEx(RTCDate * date, RTCTimeEx * time, OSTick tick); - -void RTC_Init (void) { - if (rtcInitialized) { - return; - } - rtcInitialized = 1; - - rtcWork.lock = RTC_LOCK_OFF; - rtcWork.callback = NULL; - rtcWork.interrupt = NULL; - rtcWork.buffer[0] = NULL; - rtcWork.buffer[1] = NULL; - - PXI_Init(); - while (!PXI_IsCallbackReady(PXI_FIFO_TAG_RTC, PXI_PROC_ARM7)) { - } - - PXI_SetFifoRecvCallback(PXI_FIFO_TAG_RTC, RtcCommonCallback); -} - -RTCResult RTC_GetDateAsync (RTCDate * date, RTCCallback callback, void * arg) { - OSIntrMode enabled; - - SDK_ASSERT(date != NULL); - SDK_ASSERT(callback != NULL); - - enabled = OS_DisableInterrupts(); - if (rtcWork.lock != RTC_LOCK_OFF) { - (void)OS_RestoreInterrupts(enabled); - return RTC_RESULT_BUSY; - } - rtcWork.lock = RTC_LOCK_ON; - (void)OS_RestoreInterrupts(enabled); - - rtcWork.sequence = RTC_SEQ_GET_DATE; - rtcWork.index = 0; - rtcWork.buffer[0] = (void *)date; - rtcWork.callback = callback; - rtcWork.callbackArg = arg; - if (RTCi_ReadRawDateAsync()) { - return RTC_RESULT_SUCCESS; - } else { - return RTC_RESULT_SEND_ERROR; - } -} - -RTCResult RTC_GetDate (RTCDate * date) { - rtcWork.commonResult = RTC_GetDateAsync(date, RtcGetResultCallback, NULL); - if (rtcWork.commonResult == RTC_RESULT_SUCCESS) { - RtcWaitBusy(); - } - return rtcWork.commonResult; -} - -RTCResult RTC_GetTimeAsync (RTCTime * time, RTCCallback callback, void * arg) { - OSIntrMode enabled; - - SDK_NULL_ASSERT(time); - SDK_NULL_ASSERT(callback); - - enabled = OS_DisableInterrupts(); - if (rtcWork.lock != RTC_LOCK_OFF) { - (void)OS_RestoreInterrupts(enabled); - return RTC_RESULT_BUSY; - } - rtcWork.lock = RTC_LOCK_ON; - (void)OS_RestoreInterrupts(enabled); - - rtcWork.sequence = RTC_SEQ_GET_TIME; - rtcWork.index = 0; - rtcWork.buffer[0] = (void *)time; - rtcWork.callback = callback; - rtcWork.callbackArg = arg; - if (RTCi_ReadRawTimeAsync()) { - return RTC_RESULT_SUCCESS; - } else { - return RTC_RESULT_SEND_ERROR; - } -} - -RTCResult RTC_GetTime (RTCTime * time) { - rtcWork.commonResult = RTC_GetTimeAsync(time, RtcGetResultCallback, NULL); - if (rtcWork.commonResult == RTC_RESULT_SUCCESS) { - RtcWaitBusy(); - } - return rtcWork.commonResult; -} - -RTCResult RTC_GetDateTimeAsync (RTCDate * date, RTCTime * time, RTCCallback callback, void * arg) { - OSIntrMode enabled; - - SDK_NULL_ASSERT(date); - SDK_NULL_ASSERT(time); - SDK_NULL_ASSERT(callback); - - enabled = OS_DisableInterrupts(); - if (rtcWork.lock != RTC_LOCK_OFF) { - (void)OS_RestoreInterrupts(enabled); - return RTC_RESULT_BUSY; - } - rtcWork.lock = RTC_LOCK_ON; - (void)OS_RestoreInterrupts(enabled); - - rtcWork.sequence = RTC_SEQ_GET_DATETIME; - rtcWork.index = 0; - rtcWork.buffer[0] = (void *)date; - rtcWork.buffer[1] = (void *)time; - rtcWork.callback = callback; - rtcWork.callbackArg = arg; - if (RTCi_ReadRawDateTimeAsync()) { - return RTC_RESULT_SUCCESS; - } else { - return RTC_RESULT_SEND_ERROR; - } -} - -RTCResult RTC_GetDateTime (RTCDate * date, RTCTime * time) { - rtcWork.commonResult = RTC_GetDateTimeAsync(date, time, RtcGetResultCallback, NULL); - if (rtcWork.commonResult == RTC_RESULT_SUCCESS) { - RtcWaitBusy(); - } - return rtcWork.commonResult; -} - -RTCResult RTC_GetDateTimeExByTick (RTCDate * date, RTCTimeEx * time) { - RTCResult result; - OSTick totalTicks; - - if (!rtcTickInitialized) { - result = RtcTickInit(); - } else { - result = RTC_RESULT_SUCCESS; - } - - SDK_ASSERT(OS_IsTickAvailable()); - - totalTicks = OS_GetTick() + rtcInitialTotalTicks; - - RtcConvertTickToDateTimeEx(date, time, totalTicks); - - return result; -} - -RTCResult RTC_SetDateAsync (const RTCDate * date, RTCCallback callback, void * arg) { - OSIntrMode enabled; - - SDK_NULL_ASSERT(date); - SDK_NULL_ASSERT(callback); - - if (!RtcCheckDate(date, &(((RTCRawData *)(OS_GetSystemWork()->real_time_clock))->t.date))) { - return RTC_RESULT_ILLEGAL_PARAMETER; - } - - enabled = OS_DisableInterrupts(); - if (rtcWork.lock != RTC_LOCK_OFF) { - (void)OS_RestoreInterrupts(enabled); - return RTC_RESULT_BUSY; - } - rtcWork.lock = RTC_LOCK_ON; - (void)OS_RestoreInterrupts(enabled); - - rtcWork.sequence = RTC_SEQ_SET_DATE; - rtcWork.index = 0; - rtcWork.callback = callback; - rtcWork.callbackArg = arg; - if (RTCi_WriteRawDateAsync()) { - return RTC_RESULT_SUCCESS; - } else { - return RTC_RESULT_SEND_ERROR; - } -} - -RTCResult RTC_SetDate (const RTCDate * date) { - rtcWork.commonResult = RTC_SetDateAsync(date, RtcGetResultCallback, NULL); - if (rtcWork.commonResult == RTC_RESULT_SUCCESS) { - RtcWaitBusy(); - } - return rtcWork.commonResult; -} - -RTCResult RTC_SetTimeAsync (const RTCTime * time, RTCCallback callback, void * arg) { - OSIntrMode enabled; - - SDK_NULL_ASSERT(time); - SDK_NULL_ASSERT(callback); - - if (!RtcCheckTime(time, &(((RTCRawData *)(OS_GetSystemWork()->real_time_clock))->t.time))) { - return RTC_RESULT_ILLEGAL_PARAMETER; - } - - enabled = OS_DisableInterrupts(); - if (rtcWork.lock != RTC_LOCK_OFF) { - (void)OS_RestoreInterrupts(enabled); - return RTC_RESULT_BUSY; - } - rtcWork.lock = RTC_LOCK_ON; - (void)OS_RestoreInterrupts(enabled); - - rtcWork.sequence = RTC_SEQ_SET_TIME; - rtcWork.index = 0; - rtcWork.callback = callback; - rtcWork.callbackArg = arg; - if (RTCi_WriteRawTimeAsync()) { - return RTC_RESULT_SUCCESS; - } else { - return RTC_RESULT_SEND_ERROR; - } -} - -RTCResult RTC_SetTime (const RTCTime * time) { - rtcWork.commonResult = RTC_SetTimeAsync(time, RtcGetResultCallback, NULL); - if (rtcWork.commonResult == RTC_RESULT_SUCCESS) { - RtcWaitBusy(); - } - return rtcWork.commonResult; -} - -RTCResult RTC_SetDateTimeAsync (const RTCDate * date, const RTCTime * time, RTCCallback callback, void * arg) { - OSIntrMode enabled; - - SDK_NULL_ASSERT(date); - SDK_NULL_ASSERT(time); - SDK_NULL_ASSERT(callback); - - if (!RtcCheckDate(date, &(((RTCRawData *)(OS_GetSystemWork()->real_time_clock))->t.date))) { - return RTC_RESULT_ILLEGAL_PARAMETER; - } - if (!RtcCheckTime(time, &(((RTCRawData *)(OS_GetSystemWork()->real_time_clock))->t.time))) { - return RTC_RESULT_ILLEGAL_PARAMETER; - } - - enabled = OS_DisableInterrupts(); - if (rtcWork.lock != RTC_LOCK_OFF) { - (void)OS_RestoreInterrupts(enabled); - return RTC_RESULT_BUSY; - } - rtcWork.lock = RTC_LOCK_ON; - (void)OS_RestoreInterrupts(enabled); - - rtcWork.sequence = RTC_SEQ_SET_DATETIME; - rtcWork.index = 0; - rtcWork.callback = callback; - rtcWork.callbackArg = arg; - if (RTCi_WriteRawDateTimeAsync()) { - return RTC_RESULT_SUCCESS; - } else { - return RTC_RESULT_SEND_ERROR; - } -} - -RTCResult RTC_SetDateTime (const RTCDate * date, const RTCTime * time) { - rtcWork.commonResult = RTC_SetDateTimeAsync(date, time, RtcGetResultCallback, NULL); - if (rtcWork.commonResult == RTC_RESULT_SUCCESS) { - RtcWaitBusy(); - } - return rtcWork.commonResult; -} - -RTCResult RTCi_SetRegStatus2Async (const RTCRawStatus2 * status2, RTCCallback callback, void * arg) { - OSIntrMode enabled; - - SDK_NULL_ASSERT(status2); - SDK_NULL_ASSERT(callback); - - ((RTCRawData *)(OS_GetSystemWork()->real_time_clock))->a.status2.intr_mode = status2->intr_mode; - ((RTCRawData *)(OS_GetSystemWork()->real_time_clock))->a.status2.intr2_mode = - status2->intr2_mode; - ((RTCRawData *)(OS_GetSystemWork()->real_time_clock))->a.status2.test = status2->test; - - enabled = OS_DisableInterrupts(); - if (rtcWork.lock != RTC_LOCK_OFF) { - (void)OS_RestoreInterrupts(enabled); - return RTC_RESULT_BUSY; - } - rtcWork.lock = RTC_LOCK_ON; - (void)OS_RestoreInterrupts(enabled); - - rtcWork.sequence = RTC_SEQ_SET_REG_STATUS2; - rtcWork.index = 0; - rtcWork.callback = callback; - rtcWork.callbackArg = arg; - if (RTCi_WriteRawStatus2Async()) { - return RTC_RESULT_SUCCESS; - } else { - return RTC_RESULT_SEND_ERROR; - } -} - -RTCResult RTCi_SetRegStatus2 (const RTCRawStatus2 * status2) { - rtcWork.commonResult = RTCi_SetRegStatus2Async(status2, RtcGetResultCallback, NULL); - if (rtcWork.commonResult == RTC_RESULT_SUCCESS) { - RtcWaitBusy(); - } - return rtcWork.commonResult; -} - -RTCResult RTCi_SetRegAdjustAsync (const RTCRawAdjust * adjust, RTCCallback callback, void * arg) { - OSIntrMode enabled; - - SDK_NULL_ASSERT(adjust); - SDK_NULL_ASSERT(callback); - - ((RTCRawData *)(OS_GetSystemWork()->real_time_clock))->a.adjust.adjust = adjust->adjust; - - enabled = OS_DisableInterrupts(); - if (rtcWork.lock != RTC_LOCK_OFF) { - (void)OS_RestoreInterrupts(enabled); - return RTC_RESULT_BUSY; - } - rtcWork.lock = RTC_LOCK_ON; - (void)OS_RestoreInterrupts(enabled); - - rtcWork.sequence = RTC_SEQ_SET_REG_ADJUST; - rtcWork.index = 0; - rtcWork.callback = callback; - rtcWork.callbackArg = arg; - if (RTCi_WriteRawAdjustAsync()) { - return RTC_RESULT_SUCCESS; - } else { - return RTC_RESULT_SEND_ERROR; - } -} - -RTCResult RTCi_SetRegAdjust (const RTCRawAdjust * Adjust) { - rtcWork.commonResult = RTCi_SetRegAdjustAsync(Adjust, RtcGetResultCallback, NULL); - if (rtcWork.commonResult == RTC_RESULT_SUCCESS) { - RtcWaitBusy(); - } - return rtcWork.commonResult; -} - -RTCResult RTC_GetAlarmStatusAsync (RTCAlarmChan chan, RTCAlarmStatus * status, RTCCallback callback, void * arg) { - OSIntrMode enabled; - - SDK_NULL_ASSERT(status); - SDK_NULL_ASSERT(callback); - - if (chan >= RTC_ALARM_CHAN_MAX) { - return RTC_RESULT_ILLEGAL_PARAMETER; - } - - enabled = OS_DisableInterrupts(); - if (rtcWork.lock != RTC_LOCK_OFF) { - (void)OS_RestoreInterrupts(enabled); - return RTC_RESULT_BUSY; - } - rtcWork.lock = RTC_LOCK_ON; - (void)OS_RestoreInterrupts(enabled); - - switch (chan) { - case RTC_ALARM_CHAN_1: - rtcWork.sequence = RTC_SEQ_GET_ALARM1_STATUS; - break; - case RTC_ALARM_CHAN_2: - rtcWork.sequence = RTC_SEQ_GET_ALARM2_STATUS; - break; - } - rtcWork.index = 0; - rtcWork.buffer[0] = (void *)status; - rtcWork.callback = callback; - rtcWork.callbackArg = arg; - if (RTCi_ReadRawStatus2Async()) { - return RTC_RESULT_SUCCESS; - } else { - return RTC_RESULT_SEND_ERROR; - } -} - -RTCResult RTC_GetAlarmStatus (RTCAlarmChan chan, RTCAlarmStatus * status) { - rtcWork.commonResult = RTC_GetAlarmStatusAsync(chan, status, RtcGetResultCallback, NULL); - if (rtcWork.commonResult == RTC_RESULT_SUCCESS) { - RtcWaitBusy(); - } - return rtcWork.commonResult; -} - -RTCResult RTC_GetAlarmParamAsync (RTCAlarmChan chan, RTCAlarmParam * param, RTCCallback callback, void * arg) { - OSIntrMode enabled; - - SDK_NULL_ASSERT(param); - SDK_NULL_ASSERT(callback); - - if (chan >= RTC_ALARM_CHAN_MAX) { - return RTC_RESULT_ILLEGAL_PARAMETER; - } - - enabled = OS_DisableInterrupts(); - if (rtcWork.lock != RTC_LOCK_OFF) { - (void)OS_RestoreInterrupts(enabled); - return RTC_RESULT_BUSY; - } - rtcWork.lock = RTC_LOCK_ON; - (void)OS_RestoreInterrupts(enabled); - - rtcWork.sequence = RTC_SEQ_GET_ALARM_PARAM; - rtcWork.index = 0; - rtcWork.buffer[0] = (void *)param; - rtcWork.callback = callback; - rtcWork.callbackArg = arg; - if (chan == RTC_ALARM_CHAN_1) { - if (RTCi_ReadRawAlarm1Async()) { - return RTC_RESULT_SUCCESS; - } else { - return RTC_RESULT_SEND_ERROR; - } - } - if (RTCi_ReadRawAlarm2Async()) { - return RTC_RESULT_SUCCESS; - } else { - return RTC_RESULT_SEND_ERROR; - } -} - -RTCResult RTC_GetAlarmParam (RTCAlarmChan chan, RTCAlarmParam * param) { - rtcWork.commonResult = RTC_GetAlarmParamAsync(chan, param, RtcGetResultCallback, NULL); - if (rtcWork.commonResult == RTC_RESULT_SUCCESS) { - RtcWaitBusy(); - } - return rtcWork.commonResult; -} - -void RTC_SetAlarmInterrupt (RTCInterrupt interrupt) { - rtcWork.interrupt = interrupt; -} - -RTCResult RTC_SetAlarmStatusAsync (RTCAlarmChan chan, const RTCAlarmStatus * status, RTCCallback callback, void * arg) { - OSIntrMode enabled; - - SDK_NULL_ASSERT(status); - SDK_NULL_ASSERT(callback); - - if (chan >= RTC_ALARM_CHAN_MAX) { - return RTC_RESULT_ILLEGAL_PARAMETER; - } - if (*status > RTC_ALARM_STATUS_ON) { - return RTC_RESULT_ILLEGAL_PARAMETER; - } - - enabled = OS_DisableInterrupts(); - if (rtcWork.lock != RTC_LOCK_OFF) { - (void)OS_RestoreInterrupts(enabled); - return RTC_RESULT_BUSY; - } - rtcWork.lock = RTC_LOCK_ON; - (void)OS_RestoreInterrupts(enabled); - - switch (chan) { - case RTC_ALARM_CHAN_1: - rtcWork.sequence = RTC_SEQ_SET_ALARM1_STATUS; - break; - case RTC_ALARM_CHAN_2: - rtcWork.sequence = RTC_SEQ_SET_ALARM2_STATUS; - break; - } - rtcWork.index = 0; - rtcWork.buffer[0] = (void *)status; - rtcWork.callback = callback; - rtcWork.callbackArg = arg; - if (RTCi_ReadRawStatus2Async()) { - return RTC_RESULT_SUCCESS; - } else { - return RTC_RESULT_SEND_ERROR; - } -} - -RTCResult RTC_SetAlarmStatus (RTCAlarmChan chan, const RTCAlarmStatus * status) { - rtcWork.commonResult = RTC_SetAlarmStatusAsync(chan, status, RtcGetResultCallback, NULL); - if (rtcWork.commonResult == RTC_RESULT_SUCCESS) { - RtcWaitBusy(); - } - return rtcWork.commonResult; -} - -RTCResult RTC_SetAlarmParamAsync (RTCAlarmChan chan, const RTCAlarmParam * param, RTCCallback callback, void * arg) { - OSIntrMode enabled; - RTCRawAlarm * pAlarm = &(((RTCRawData *)(OS_GetSystemWork()->real_time_clock))->a.alarm); - BOOL result = FALSE; - - SDK_NULL_ASSERT(param); - SDK_NULL_ASSERT(callback); - - if (chan >= RTC_ALARM_CHAN_MAX) { - return RTC_RESULT_ILLEGAL_PARAMETER; - } - if (!RtcCheckAlarmParam(param)) { - return RTC_RESULT_ILLEGAL_PARAMETER; - } - - enabled = OS_DisableInterrupts(); - if (rtcWork.lock != RTC_LOCK_OFF) { - (void)OS_RestoreInterrupts(enabled); - return RTC_RESULT_BUSY; - } - rtcWork.lock = RTC_LOCK_ON; - (void)OS_RestoreInterrupts(enabled); - - rtcWork.index = 0; - rtcWork.callback = callback; - rtcWork.callbackArg = arg; - ((RTCRawData *)(OS_GetSystemWork()->real_time_clock))->a.alarm = RtcMakeAlarmParam(param); - - switch (chan) { - case RTC_ALARM_CHAN_1: - - rtcWork.sequence = RTC_SEQ_SET_ALARM1_PARAM; - result = RTCi_WriteRawAlarm1Async(); - break; - case RTC_ALARM_CHAN_2: - - rtcWork.sequence = RTC_SEQ_SET_ALARM2_PARAM; - result = RTCi_WriteRawAlarm2Async(); - break; - } - if (result) { - return RTC_RESULT_SUCCESS; - } - return RTC_RESULT_SEND_ERROR; -} - -RTCResult RTC_SetAlarmParam (RTCAlarmChan chan, const RTCAlarmParam * param) { - rtcWork.commonResult = RTC_SetAlarmParamAsync(chan, param, RtcGetResultCallback, NULL); - if (rtcWork.commonResult == RTC_RESULT_SUCCESS) { - RtcWaitBusy(); - } - return rtcWork.commonResult; -} - -static void RtcCommonCallback (PXIFifoTag tag, u32 data, BOOL err) { -#pragma unused( tag ) - - RTCResult result; - RTCPxiResult pxiresult; - u8 command; - RTCCallback cb; - - if (err) { - if (rtcWork.index) { - rtcWork.index = 0; - } - if (rtcWork.lock != RTC_LOCK_OFF) { - rtcWork.lock = RTC_LOCK_OFF; - } - if (rtcWork.callback) { - cb = rtcWork.callback; - rtcWork.callback = NULL; - cb(RTC_RESULT_FATAL_ERROR, rtcWork.callbackArg); - } - return; - } - - command = (u8)((data & RTC_PXI_COMMAND_MASK) >> RTC_PXI_COMMAND_SHIFT); - pxiresult = (RTCPxiResult)((data & RTC_PXI_RESULT_MASK) >> RTC_PXI_RESULT_SHIFT); - - if (command == RTC_PXI_COMMAND_INTERRUPT) { - if (rtcWork.interrupt) { - rtcWork.interrupt(); - } - return; - } - - if (pxiresult == RTC_PXI_RESULT_SUCCESS) { - result = RTC_RESULT_SUCCESS; - switch (rtcWork.sequence) { - case RTC_SEQ_GET_DATE: - { - RTCDate * pDst = (RTCDate *)(rtcWork.buffer[0]); - RTCRawDate * pSrc = &(((RTCRawData *)(OS_GetSystemWork()->real_time_clock))->t.date); - - pDst->year = RtcBCD2HEX(pSrc->year); - pDst->month = RtcBCD2HEX(pSrc->month); - pDst->day = RtcBCD2HEX(pSrc->day); - pDst->week = RTC_GetDayOfWeek(pDst); - } - break; - - case RTC_SEQ_GET_TIME: - { - RTCTime * pDst = (RTCTime *)(rtcWork.buffer[0]); - RTCRawTime * pSrc = &(((RTCRawData *)(OS_GetSystemWork()->real_time_clock))->t.time); - - pDst->hour = RtcBCD2HEX(pSrc->hour); - pDst->minute = RtcBCD2HEX(pSrc->minute); - pDst->second = RtcBCD2HEX(pSrc->second); - } - break; - - case RTC_SEQ_GET_DATETIME: - { - RTCDate * pDst = (RTCDate *)(rtcWork.buffer[0]); - RTCRawDate * pSrc = &(((RTCRawData *)(OS_GetSystemWork()->real_time_clock))->t.date); - - pDst->year = RtcBCD2HEX(*(u32 *)pSrc & 0x000000ff); - pDst->month = RtcBCD2HEX(pSrc->month); - pDst->day = RtcBCD2HEX(pSrc->day); - pDst->week = RTC_GetDayOfWeek(pDst); - } - { - RTCTime * pDst = (RTCTime *)(rtcWork.buffer[1]); - RTCRawTime * pSrc = &(((RTCRawData *)(OS_GetSystemWork()->real_time_clock))->t.time); - - pDst->hour = RtcBCD2HEX(pSrc->hour); - pDst->minute = RtcBCD2HEX(pSrc->minute); - pDst->second = RtcBCD2HEX(pSrc->second); - } - break; - - case RTC_SEQ_SET_DATE: - case RTC_SEQ_SET_TIME: - case RTC_SEQ_SET_DATETIME: - - break; - - case RTC_SEQ_GET_ALARM1_STATUS: - { - RTCAlarmStatus * pDst = (RTCAlarmStatus *)(rtcWork.buffer[0]); - RTCRawStatus2 * pSrc = - &(((RTCRawData *)(OS_GetSystemWork()->real_time_clock))->a.status2); - - switch (pSrc->intr_mode) { - case RTC_INTERRUPT_MODE_ALARM: - *pDst = RTC_ALARM_STATUS_ON; - break; - default: - *pDst = RTC_ALARM_STATUS_OFF; - } - } - break; - - case RTC_SEQ_GET_ALARM2_STATUS: - { - RTCAlarmStatus * pDst = (RTCAlarmStatus *)(rtcWork.buffer[0]); - RTCRawStatus2 * pSrc = - &(((RTCRawData *)(OS_GetSystemWork()->real_time_clock))->a.status2); - - if (pSrc->intr2_mode) { - *pDst = RTC_ALARM_STATUS_ON; - } else { - *pDst = RTC_ALARM_STATUS_OFF; - } - } - break; - - case RTC_SEQ_GET_ALARM_PARAM: - { - RTCAlarmParam * pDst = (RTCAlarmParam *)(rtcWork.buffer[0]); - RTCRawAlarm * pSrc = - &(((RTCRawData *)(OS_GetSystemWork()->real_time_clock))->a.alarm); - - pDst->week = (RTCWeek)(pSrc->week); - pDst->hour = RtcBCD2HEX(pSrc->hour); - pDst->minute = RtcBCD2HEX(pSrc->minute); - pDst->enable = RTC_ALARM_ENABLE_NONE; - if (pSrc->we) { - pDst->enable += RTC_ALARM_ENABLE_WEEK; - } - if (pSrc->he) { - pDst->enable += RTC_ALARM_ENABLE_HOUR; - } - if (pSrc->me) { - pDst->enable += RTC_ALARM_ENABLE_MINUTE; - } - } - break; - - case RTC_SEQ_SET_ALARM1_STATUS: - if (rtcWork.index == 0) { - RTCRawStatus2 * pSrc = - &(((RTCRawData *)(OS_GetSystemWork()->real_time_clock))->a.status2); - - if (*(RTCAlarmStatus *)(rtcWork.buffer[0]) == RTC_ALARM_STATUS_ON) { - if (pSrc->intr_mode != RTC_INTERRUPT_MODE_ALARM) { - rtcWork.index++; - pSrc->intr_mode = RTC_INTERRUPT_MODE_ALARM; - if (!RTCi_WriteRawStatus2Async()) { - rtcWork.index = 0; - result = RTC_RESULT_SEND_ERROR; - } - } - } else { - if (pSrc->intr_mode != RTC_INTERRUPT_MODE_NONE) { - rtcWork.index++; - pSrc->intr_mode = RTC_INTERRUPT_MODE_NONE; - if (!RTCi_WriteRawStatus2Async()) { - rtcWork.index = 0; - result = RTC_RESULT_SEND_ERROR; - } - } - } - } else { - rtcWork.index = 0; - } - break; - - case RTC_SEQ_SET_ALARM2_STATUS: - if (rtcWork.index == 0) { - RTCRawStatus2 * pSrc = - &(((RTCRawData *)(OS_GetSystemWork()->real_time_clock))->a.status2); - - if (*(RTCAlarmStatus *)(rtcWork.buffer[0]) == RTC_ALARM_STATUS_ON) { - if (!pSrc->intr2_mode) { - rtcWork.index++; - pSrc->intr2_mode = 1; - if (!RTCi_WriteRawStatus2Async()) { - rtcWork.index = 0; - result = RTC_RESULT_SEND_ERROR; - } - } - } else { - if (pSrc->intr2_mode) { - rtcWork.index++; - pSrc->intr2_mode = 0; - if (!RTCi_WriteRawStatus2Async()) { - rtcWork.index = 0; - result = RTC_RESULT_SEND_ERROR; - } - } - } - } else { - rtcWork.index = 0; - } - break; - - case RTC_SEQ_SET_ALARM1_PARAM: - - case RTC_SEQ_SET_ALARM2_PARAM: - - case RTC_SEQ_SET_HOUR_FORMAT: - - case RTC_SEQ_SET_REG_STATUS2: - - case RTC_SEQ_SET_REG_ADJUST: - - break; - - default: - result = RTC_RESULT_INVALID_COMMAND; - rtcWork.index = 0; - } - } else { - rtcWork.index = 0; - - switch (pxiresult) { - case RTC_PXI_RESULT_INVALID_COMMAND: - result = RTC_RESULT_INVALID_COMMAND; - break; - case RTC_PXI_RESULT_ILLEGAL_STATUS: - result = RTC_RESULT_ILLEGAL_STATUS; - break; - case RTC_PXI_RESULT_BUSY: - result = RTC_RESULT_BUSY; - break; - case RTC_PXI_RESULT_FATAL_ERROR: - default: - result = RTC_RESULT_FATAL_ERROR; - } - } - - if (rtcWork.index == 0) { - if (rtcWork.lock != RTC_LOCK_OFF) { - rtcWork.lock = RTC_LOCK_OFF; - } - - if (rtcWork.callback) { - cb = rtcWork.callback; - rtcWork.callback = NULL; - cb(result, rtcWork.callbackArg); - } - } -} - -static u32 RtcBCD2HEX (u32 bcd) { - u32 hex = 0; - s32 i; - s32 w; - - for (i = 0; i < 8; i++) { - if (((bcd >> (i * 4)) & 0x0000000f) >= 0x0a) { - return hex; - } - } - - for (i = 0, w = 1; i < 8; i++, w *= 10) { - hex += (((bcd >> (i * 4)) & 0x0000000f) * w); - } - return hex; -} - -static u32 RtcHEX2BCD (u32 hex) { - u32 bcd = 0; - s32 i; - u32 w; - - if (hex > 99999999) { - return 0; - } - - for (i = 0, w = hex; i < 8; i++) { - bcd += ((w % 10) << (i * 4)); - w /= 10; - } - return bcd; -} - -static BOOL RtcCheckAlarmParam (const RTCAlarmParam * param) { - if (param->week >= RTC_WEEK_MAX) { - return FALSE; - } - if (param->hour >= 24) { - return FALSE; - } - if (param->minute >= 60) { - return FALSE; - } - if (param->enable & ~RTC_ALARM_ENABLE_ALL) { - return FALSE; - } - return TRUE; -} - -static RTCRawAlarm RtcMakeAlarmParam (const RTCAlarmParam * param) { - RTCRawAlarm dst; - - *((u32 *)(&dst)) = 0; - - if (!RtcCheckAlarmParam(param)) { - return dst; - } - - dst.week = (u32)(param->week); - - if (param->hour >= 12) { - dst.afternoon = 1; - } - dst.hour = RtcHEX2BCD(param->hour); - - dst.minute = RtcHEX2BCD(param->minute); - - if (param->enable & RTC_ALARM_ENABLE_WEEK) { - dst.we = 1; - } - if (param->enable & RTC_ALARM_ENABLE_HOUR) { - dst.he = 1; - } - if (param->enable & RTC_ALARM_ENABLE_MINUTE) { - dst.me = 1; - } - - return dst; -} - -static BOOL RtcCheckDate (const RTCDate * date, RTCRawDate * raw) { - if (date->year >= 100) { - return FALSE; - } - if ((date->month < 1) || (date->month > 12)) { - return FALSE; - } - if ((date->day < 1) || (date->day > 31)) { - return FALSE; - } - if (date->week >= RTC_WEEK_MAX) { - return FALSE; - } - - *(u32 *)raw = RtcHEX2BCD(date->year); - raw->month = RtcHEX2BCD(date->month); - raw->day = RtcHEX2BCD(date->day); - raw->week = (u32)(date->week); - return TRUE; -} - -static BOOL RtcCheckTime (const RTCTime * time, RTCRawTime * raw) { - if (time->hour >= 24) { - return FALSE; - } - if (time->minute >= 60) { - return FALSE; - } - if (time->second >= 60) { - return FALSE; - } - - if (time->hour >= 12) { - raw->afternoon = 1; - } else { - raw->afternoon = 0; - } - raw->hour = RtcHEX2BCD(time->hour); - raw->minute = RtcHEX2BCD(time->minute); - raw->second = RtcHEX2BCD(time->second); - - return TRUE; -} - -static void RtcGetResultCallback (RTCResult result, void * arg) { -#pragma unused( arg ) - - rtcWork.commonResult = result; -} - -static void RtcConvertTickToDateTimeEx (RTCDate * date, RTCTimeEx * time, OSTick tick) { - RTC_ConvertSecondToDateTime(date, (RTCTime *)time, (s64)OS_TicksToSeconds(tick)); - - time->millisecond = (s32)(OS_TicksToMilliSeconds(tick) % 1000); -} - -static RTCResult RtcTickInit (void) { - RTCDate currentDate; - RTCTime currentTime; - s64 totalSeconds; - RTCResult result; - - SDK_ASSERT(OS_IsTickAvailable()); - - result = RTC_GetDateTime(¤tDate, ¤tTime); - totalSeconds = RTC_ConvertDateTimeToSecond(¤tDate, ¤tTime); - - rtcInitialTotalTicks = OS_SecondsToTicks(totalSeconds) - OS_GetTick(); - rtcTickInitialized = TRUE; - - return result; -} - -#include - -static asm void RtcWaitBusy (void) { - ldr r12, = rtcWork.lock - loop: - ldr r0, [r12, #0] - cmp r0, #RTC_LOCK_ON - beq loop - bx lr -} -#include diff --git a/subprojects/NitroSDK/libraries/rtc/src/internal.c b/subprojects/NitroSDK/libraries/rtc/src/internal.c deleted file mode 100644 index 337884f6c1..0000000000 --- a/subprojects/NitroSDK/libraries/rtc/src/internal.c +++ /dev/null @@ -1,102 +0,0 @@ -#include -#include - -static BOOL RtcSendPxiCommand(u32 command); - -BOOL RTCi_ResetAsync (void) { - return RtcSendPxiCommand(RTC_PXI_COMMAND_RESET); -} - -BOOL RTCi_SetHourFormatAsync (void) { - return RtcSendPxiCommand(RTC_PXI_COMMAND_SET_HOUR_FORMAT); -} - -BOOL RTCi_ReadRawDateTimeAsync (void) { - return RtcSendPxiCommand(RTC_PXI_COMMAND_READ_DATETIME); -} - -BOOL RTCi_WriteRawDateTimeAsync (void) { - return RtcSendPxiCommand(RTC_PXI_COMMAND_WRITE_DATETIME); -} - -BOOL RTCi_ReadRawDateAsync (void) { - return RtcSendPxiCommand(RTC_PXI_COMMAND_READ_DATE); -} - -BOOL RTCi_WriteRawDateAsync (void) { - return RtcSendPxiCommand(RTC_PXI_COMMAND_WRITE_DATE); -} - -BOOL RTCi_ReadRawTimeAsync (void) { - return RtcSendPxiCommand(RTC_PXI_COMMAND_READ_TIME); -} - -BOOL RTCi_WriteRawTimeAsync (void) { - return RtcSendPxiCommand(RTC_PXI_COMMAND_WRITE_TIME); -} - -BOOL RTCi_ReadRawPulseAsync (void) { - return RtcSendPxiCommand(RTC_PXI_COMMAND_READ_PULSE); -} - -BOOL RTCi_WriteRawPulseAsync (void) { - return RtcSendPxiCommand(RTC_PXI_COMMAND_WRITE_PULSE); -} - -BOOL RTCi_ReadRawAlarm1Async (void) { - return RtcSendPxiCommand(RTC_PXI_COMMAND_READ_ALARM1); -} - -BOOL RTCi_WriteRawAlarm1Async (void) { - return RtcSendPxiCommand(RTC_PXI_COMMAND_WRITE_ALARM1); -} - -BOOL RTCi_ReadRawAlarm2Async (void) { - return RtcSendPxiCommand(RTC_PXI_COMMAND_READ_ALARM2); -} - -BOOL RTCi_WriteRawAlarm2Async (void) { - return RtcSendPxiCommand(RTC_PXI_COMMAND_WRITE_ALARM2); -} - -BOOL RTCi_ReadRawStatus1Async (void) { - return RtcSendPxiCommand(RTC_PXI_COMMAND_READ_STATUS1); -} - -BOOL RTCi_WriteRawStatus1Async (void) { - return RtcSendPxiCommand(RTC_PXI_COMMAND_WRITE_STATUS1); -} - -BOOL RTCi_ReadRawStatus2Async (void) { - return RtcSendPxiCommand(RTC_PXI_COMMAND_READ_STATUS2); -} - -BOOL RTCi_WriteRawStatus2Async (void) { - return RtcSendPxiCommand(RTC_PXI_COMMAND_WRITE_STATUS2); -} - -BOOL RTCi_ReadRawAdjustAsync (void) { - return RtcSendPxiCommand(RTC_PXI_COMMAND_READ_ADJUST); -} - -BOOL RTCi_WriteRawAdjustAsync (void) { - return RtcSendPxiCommand(RTC_PXI_COMMAND_WRITE_ADJUST); -} - -BOOL RTCi_ReadRawFreeAsync (void) { - return RtcSendPxiCommand(RTC_PXI_COMMAND_READ_FREE); -} - -BOOL RTCi_WriteRawFreeAsync (void) { - return RtcSendPxiCommand(RTC_PXI_COMMAND_WRITE_FREE); -} - -static BOOL RtcSendPxiCommand (u32 command) { - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_RTC, - ((command << RTC_PXI_COMMAND_SHIFT) & RTC_PXI_COMMAND_MASK), 0 - )) { - return FALSE; - } - return TRUE; -} diff --git a/subprojects/NitroSDK/libraries/snd/meson.build b/subprojects/NitroSDK/libraries/snd/meson.build deleted file mode 100644 index 8f581464ea..0000000000 --- a/subprojects/NitroSDK/libraries/snd/meson.build +++ /dev/null @@ -1,19 +0,0 @@ -libsnd_srcs = files( - 'src/snd_interface.c', - 'src/snd_main.c', - 'src/snd_command.c', - 'src/snd_alarm.c', - 'src/snd_work.c', - 'src/snd_util.c', - 'src/snd_bank.c' -) - -libsnd = static_library('snd', - sources: [libsnd_srcs, fx_const_h], - c_args: [c_args, sdk_args], - include_directories: [public_includes], - c_pch: nitro_pch, - pic: false -) - -nitrosdk_libs += libsnd diff --git a/subprojects/NitroSDK/libraries/snd/src/snd_alarm.c b/subprojects/NitroSDK/libraries/snd/src/snd_alarm.c deleted file mode 100644 index de83e0160e..0000000000 --- a/subprojects/NitroSDK/libraries/snd/src/snd_alarm.c +++ /dev/null @@ -1,163 +0,0 @@ -#include -#include -#include - -#ifdef SDK_ARM9 - -typedef struct AlarmCallbackInfo { - void (* func) (void *); - void * arg; - u8 id; - u8 pad; - u16 pad2; -} AlarmCallbackInfo; - -#endif - -#ifdef SDK_ARM9 -static AlarmCallbackInfo sCallbackTable[SND_ALARM_NUM]; -#endif - -#ifdef SDK_ARM7 -static void AlarmHandler(void * arg); -#endif - -#ifdef SDK_ARM9 -void SND_AlarmInit (void) { - int alarmNo; - - for (alarmNo = 0; alarmNo < SND_ALARM_NUM; alarmNo++) { - AlarmCallbackInfo * info; - - info = &sCallbackTable[alarmNo]; - - info->func = NULL; - info->arg = NULL; - info->id = 0; - } -} -#else -void SND_AlarmInit (void) { - int alarmNo; - - for (alarmNo = 0; alarmNo < SND_ALARM_NUM; alarmNo++) { - SNDi_Work.alarm[alarmNo].enable = FALSE; - SNDi_Work.alarm[alarmNo].id = 0; - } -} - -void SND_SetupAlarm (int alarmNo, OSTick tick, OSTick period, int id) { - SNDAlarm * alarm; - - SDK_MINMAX_ASSERT(alarmNo, SND_ALARM_MIN, SND_ALARM_MAX); - SDK_MINMAX_ASSERT(id, 0x00, 0xff); - - alarm = &SNDi_Work.alarm[alarmNo]; - - if (alarm->enable) { - OS_CancelAlarm(&alarm->alarm); - alarm->enable = FALSE; - } - - alarm->setting.tick = tick; - alarm->setting.period = period; - alarm->id = (u8)id; -} - -void SND_StartAlarm (int alarmNo) { - OSTick tick; - OSTick period; - SNDAlarm * alarm; - void * arg; - - SDK_MINMAX_ASSERT(alarmNo, SND_ALARM_MIN, SND_ALARM_MAX); - - alarm = &SNDi_Work.alarm[alarmNo]; - - if (alarm->enable) { - OS_CancelAlarm(&alarm->alarm); - alarm->enable = FALSE; - } - - tick = alarm->setting.tick; - period = alarm->setting.period; - arg = (void *)((alarm->id << 8) | alarmNo); - - OS_CreateAlarm(&alarm->alarm); - - if (period == 0) { - OS_SetAlarm(&alarm->alarm, tick, AlarmHandler, arg); - } else { - OS_SetPeriodicAlarm(&alarm->alarm, OS_GetTick() + tick, period, AlarmHandler, arg); - } - - alarm->enable = TRUE; -} - -void SND_StopAlarm (int alarmNo) { - SNDAlarm * alarm; - - SDK_MINMAX_ASSERT(alarmNo, SND_ALARM_MIN, SND_ALARM_MAX); - - alarm = &SNDi_Work.alarm[alarmNo]; - - if (!alarm->enable) { - return; - } - - OS_CancelAlarm(&alarm->alarm); - - alarm->id++; - alarm->enable = FALSE; -} -#endif - -#ifdef SDK_ARM7 -static void AlarmHandler (void * arg) { - while (PXI_SendWordByFifo(PXI_FIFO_TAG_SOUND, (u32)arg, FALSE) < 0) { - } -} -#endif - -#ifdef SDK_ARM9 -void SNDi_IncAlarmId (int alarmNo) { - AlarmCallbackInfo * info; - - SDK_MINMAX_ASSERT(alarmNo, SND_ALARM_MIN, SND_ALARM_MAX); - - info = &sCallbackTable[alarmNo]; - - info->id++; -} - -u8 SNDi_SetAlarmHandler (int alarmNo, SNDAlarmHandler handler, void * arg) { - AlarmCallbackInfo * info; - - SDK_MINMAX_ASSERT(alarmNo, SND_ALARM_MIN, SND_ALARM_MAX); - - info = &sCallbackTable[alarmNo]; - - info->func = handler; - info->arg = arg; - info->id++; - - return info->id; -} - -void SNDi_CallAlarmHandler (int msg) { - AlarmCallbackInfo * info; - int alarmNo = msg & 0xff; - int id = (msg >> 8) & 0xff; - - SDK_MINMAX_ASSERT(alarmNo, SND_ALARM_MIN, SND_ALARM_MAX); - - info = &sCallbackTable[alarmNo]; - - if (id == info->id) { - if (info->func != NULL) { - info->func(info->arg); - } - } -} - -#endif diff --git a/subprojects/NitroSDK/libraries/snd/src/snd_bank.c b/subprojects/NitroSDK/libraries/snd/src/snd_bank.c deleted file mode 100644 index 7a92064b1c..0000000000 --- a/subprojects/NitroSDK/libraries/snd/src/snd_bank.c +++ /dev/null @@ -1,531 +0,0 @@ -#include - -#ifndef SDK_FROM_TOOL - -#include -#include -#include - -#else -#define SDK_ASSERT(exp) ((void)0) -#define SDK_NULL_ASSERT(exp) ((void)0) -#define SDK_MINMAX_ASSERT(exp, min, max) ((void)0) - -#define SNDi_LockMutex() ((void)0) -#define SNDi_UnlockMutex() ((void)0) - -static u8 MI_ReadByte (const void * address) { - return *(u8 *)address; -} - -#define HW_MAIN_MEM 0x02000000 - -#ifdef _MSC_VER -#pragma warning( disable : 4018 ) -#pragma warning( disable : 4311 ) -#pragma warning( disable : 4312 ) -#endif - -#endif - -static const SNDWaveData * GetWaveData(const SNDBankData * bank, int waveArcNo, int waveIndex); - -void SND_AssignWaveArc (SNDBankData * bank, int index, SNDWaveArc * waveArc) { - SNDWaveArcLink * next; - SNDWaveArcLink * prev; - - SDK_NULL_ASSERT(bank); - SDK_NULL_ASSERT(waveArc); -#ifdef SDK_ARM9 - SDK_ASSERTMSG(((u32)bank & 0x1f) == 0, "bank address must be aligned 32 bytes boundary."); - SDK_ASSERTMSG(((u32)waveArc & 0x1f) == 0, "waveArc address must be aligned 32 bytes boundary."); -#endif - SDK_MINMAX_ASSERT(index, 0, SND_BANK_TO_WAVEARC_MAX - 1); - - SNDi_LockMutex(); - - if (bank->waveArcLink[index].waveArc != NULL) { - if (waveArc == bank->waveArcLink[index].waveArc) { - SNDi_UnlockMutex(); - return; - } - - if (&bank->waveArcLink[index] == bank->waveArcLink[index].waveArc->topLink) { - bank->waveArcLink[index].waveArc->topLink = bank->waveArcLink[index].next; - -#ifdef SDK_ARM9 - DC_StoreRange(bank->waveArcLink[index].waveArc, sizeof(SNDWaveArc)); -#endif - } else { - prev = bank->waveArcLink[index].waveArc->topLink; - while (prev != NULL) { - if (&bank->waveArcLink[index] == prev->next) { - break; - } - prev = prev->next; - } - SDK_NULL_ASSERT(prev); - prev->next = bank->waveArcLink[index].next; - -#ifdef SDK_ARM9 - DC_StoreRange(prev, sizeof(SNDWaveArcLink)); -#endif - } - } - - next = waveArc->topLink; - waveArc->topLink = &bank->waveArcLink[index]; - bank->waveArcLink[index].next = next; - bank->waveArcLink[index].waveArc = waveArc; - - SNDi_UnlockMutex(); - -#ifdef SDK_ARM9 - DC_StoreRange(bank, sizeof(SNDBankData)); - DC_StoreRange(waveArc, sizeof(SNDWaveArc)); -#endif -} - -void SND_DestroyBank (SNDBankData * bank) { - SNDWaveArc * waveArc; - SNDWaveArcLink * prev; - int i; - - SDK_NULL_ASSERT(bank); -#ifdef SDK_ARM9 - SDK_ASSERTMSG(((u32)bank & 0x1f) == 0, "bank address must be aligned 32 bytes boundary."); -#endif - - SNDi_LockMutex(); - - for (i = 0; i < SND_BANK_TO_WAVEARC_MAX; i++) { - waveArc = bank->waveArcLink[i].waveArc; - if (waveArc == NULL) { - continue; - } - - if (&bank->waveArcLink[i] == waveArc->topLink) { - waveArc->topLink = bank->waveArcLink[i].next; - -#ifdef SDK_ARM9 - DC_StoreRange(waveArc, sizeof(SNDWaveArc)); -#endif - } else { - prev = waveArc->topLink; - while (prev != NULL) { - if (&bank->waveArcLink[i] == prev->next) { - break; - } - prev = prev->next; - } - SDK_NULL_ASSERT(prev); - prev->next = bank->waveArcLink[i].next; - -#ifdef SDK_ARM9 - DC_StoreRange(prev, sizeof(SNDWaveArcLink)); -#endif - } - } - - SNDi_UnlockMutex(); -} - -void SND_DestroyWaveArc (SNDWaveArc * waveArc) { - SNDWaveArcLink * link; - SNDWaveArcLink * next; - - SDK_NULL_ASSERT(waveArc); -#ifdef SDK_ARM9 - SDK_ASSERTMSG(((u32)waveArc & 0x1f) == 0, "waveArc address must be aligned 32 bytes boundary."); -#endif - - SNDi_LockMutex(); - - link = waveArc->topLink; - while (link != NULL) { - next = link->next; - - link->waveArc = NULL; - link->next = NULL; - -#ifdef SDK_ARM9 - DC_StoreRange(link, sizeof(SNDWaveArcLink)); -#endif - link = next; - } - - SNDi_UnlockMutex(); -} - -BOOL SND_ReadInstData (const SNDBankData * bank, int prgNo, int key, SNDInstData * inst) { - u32 instOffset; - - SDK_NULL_ASSERT(bank); - SDK_NULL_ASSERT(inst); - - if (prgNo < 0) { - return FALSE; - } - -#ifdef SDK_FROM_TOOL - if (bank->fileHeader.signature[0] == 'S' && - bank->fileHeader.signature[1] == 'B' && - bank->fileHeader.signature[2] == 'C' && bank->fileHeader.signature[3] == 'B') { - const SNDBankDataCallback * bankcb = (const SNDBankDataCallback *)bank; - return bankcb->readInstDataFunc(bankcb, prgNo, key, inst); - } -#endif - - SNDi_LockMutex(); - - if (prgNo >= bank->instCount) { - SNDi_UnlockMutex(); - return FALSE; - } - - instOffset = bank->instOffset[prgNo]; - inst->type = (u8)(instOffset & 0xff); - instOffset >>= 8; - - switch (inst->type) { - case SND_INST_PCM: - case SND_INST_PSG: - case SND_INST_NOISE: - case SND_INST_DIRECTPCM: - case SND_INST_NULL: - { - const SNDInstParam * param = (const SNDInstParam *)((u8 *)bank + instOffset); - - inst->param = *param; - break; - } - - case SND_INST_DRUM_SET: - { - const SNDDrumSet * drumSet = (const SNDDrumSet *)((u8 *)bank + instOffset); - u8 min = MI_ReadByte(&drumSet->min); - u8 max = MI_ReadByte(&drumSet->max); - - if (key < min || key > max) { - SNDi_UnlockMutex(); - return FALSE; - } - - *inst = drumSet->instOffset[key - min]; - break; - } - - case SND_INST_KEY_SPLIT: - { - int index = 0; - const SNDKeySplit * keySplit = (const SNDKeySplit *)((u8 *)bank + instOffset); - - while (key > MI_ReadByte(&keySplit->key[index])) { - index++; - if (index >= SND_INST_KEYSPLIT_MAX) { - SNDi_UnlockMutex(); - return FALSE; - } - } - - *inst = keySplit->instOffset[index]; - break; - } - - case SND_INST_INVALID: - default: - SNDi_UnlockMutex(); - return FALSE; - } - - SNDi_UnlockMutex(); - - return TRUE; -} - -BOOL SND_WriteInstData (SNDBankData * bank, int prgNo, int key, const struct SNDInstData * inst) { - u32 instOffset; - u8 type; - - SDK_NULL_ASSERT(bank); - SDK_NULL_ASSERT(inst); - - if (prgNo < 0) { - return FALSE; - } - - SNDi_LockMutex(); - if (prgNo >= bank->instCount) { - SNDi_UnlockMutex(); - return FALSE; - } - - instOffset = bank->instOffset[prgNo]; - type = (u8)(instOffset & 0xff); - instOffset >>= 8; - - switch (type) { - case SND_INST_PCM: - case SND_INST_PSG: - case SND_INST_NOISE: - case SND_INST_DIRECTPCM: - case SND_INST_NULL: - { - SNDInstParam * param = (SNDInstParam *)((u8 *)bank + instOffset); - - bank->instOffset[prgNo] = (instOffset << 8) | inst->type; - *param = inst->param; - break; - } - - case SND_INST_DRUM_SET: - { - SNDDrumSet * drumSet = (SNDDrumSet *)((u8 *)bank + instOffset); - u8 min = MI_ReadByte(&drumSet->min); - u8 max = MI_ReadByte(&drumSet->max); - - if (key < min || key > max) { - SNDi_UnlockMutex(); - return FALSE; - } - - drumSet->instOffset[key - min] = *inst; - break; - } - - case SND_INST_KEY_SPLIT: - { - int index = 0; - SNDKeySplit * keySplit = (SNDKeySplit *)((u8 *)bank + instOffset); - - while (key > MI_ReadByte(&keySplit->key[index])) { - index++; - if (index >= SND_INST_KEYSPLIT_MAX) { - SNDi_UnlockMutex(); - return FALSE; - } - } - - keySplit->instOffset[index] = *inst; - break; - } - - case SND_INST_INVALID: - default: - SNDi_UnlockMutex(); - return FALSE; - } - - SNDi_UnlockMutex(); - -#ifdef SDK_ARM9 - DC_StoreRange(bank, bank->fileHeader.fileSize); -#endif - - return TRUE; -} - -SNDInstPos SND_GetFirstInstDataPos (const SNDBankData * bank) { - SNDInstPos pos; - - SDK_NULL_ASSERT(bank); - - (void)bank; - - pos.prgNo = 0; - pos.index = 0; - - return pos; -} - -BOOL SND_GetNextInstData (const SNDBankData * bank, SNDInstData * inst, SNDInstPos * pos) { - SDK_NULL_ASSERT(bank); - SDK_NULL_ASSERT(inst); - SDK_NULL_ASSERT(pos); - - for (; pos->prgNo < bank->instCount; pos->prgNo++, pos->index = 0) { - u32 instOffset = bank->instOffset[pos->prgNo]; - inst->type = (u8)(instOffset & 0xff); - instOffset >>= 8; - - switch (inst->type) { - case SND_INST_PCM: - case SND_INST_PSG: - case SND_INST_NOISE: - case SND_INST_DIRECTPCM: - case SND_INST_NULL: - { - const SNDInstParam * param = (const SNDInstParam *)((u8 *)bank + instOffset); - inst->param = *param; - pos->prgNo++; - return TRUE; - } - - case SND_INST_DRUM_SET: - { - const SNDDrumSet * drumSet = (const SNDDrumSet *)((u8 *)bank + instOffset); - for (; pos->index < drumSet->max - drumSet->min + 1; pos->index++) { - *inst = drumSet->instOffset[pos->index]; - pos->index++; - return TRUE; - } - break; - } - - case SND_INST_KEY_SPLIT: - { - const SNDKeySplit * keySplit = (const SNDKeySplit *)((u8 *)bank + instOffset); - for (; pos->index < SND_INST_KEYSPLIT_MAX; pos->index++) { - if (keySplit->key[pos->index] == 0) { - break; - } - *inst = keySplit->instOffset[pos->index]; - pos->index++; - return TRUE; - } - break; - } - - default: - break; - } - } - - return FALSE; -} - -u32 SND_GetWaveDataCount (const struct SNDWaveArc * waveArc) { - SDK_NULL_ASSERT(waveArc); - - return waveArc->waveCount; -} - -void SND_SetWaveDataAddress (SNDWaveArc * waveArc, int index, const SNDWaveData * address) { - SDK_NULL_ASSERT(waveArc); - SDK_MINMAX_ASSERT(index, 0, waveArc->waveCount); - SDK_ASSERT(address == NULL || address >= (void *)HW_MAIN_MEM); - - SNDi_LockMutex(); - - waveArc->waveOffset[index] = (u32)address; - -#ifdef SDK_ARM9 - DC_StoreRange(&waveArc->waveOffset[index], sizeof(u32)); -#endif - - SNDi_UnlockMutex(); -} - -const SNDWaveData * SND_GetWaveDataAddress (const SNDWaveArc * waveArc, int index) { - const SNDWaveData * wave; - u32 offset; - - SDK_NULL_ASSERT(waveArc); - SDK_MINMAX_ASSERT(index, 0, waveArc->waveCount); - - SNDi_LockMutex(); - - offset = waveArc->waveOffset[index]; - - if (offset != 0) { - if (offset < HW_MAIN_MEM) { - wave = (const SNDWaveData *)((u8 *)waveArc + offset); - } else { - wave = (const SNDWaveData *)offset; - } - } else { - wave = NULL; - } - - SNDi_UnlockMutex(); - - return wave; -} - -#ifdef SDK_ARM7 - -BOOL SND_NoteOn (SNDExChannel * ch_p, int key, int velocity, s32 length, const SNDBankData * bank, const SNDInstData * inst) { - const SNDWaveData * wave_data; - int release; - BOOL result; - - SDK_NULL_ASSERT(ch_p); - SDK_MINMAX_ASSERT(key, 0, 127); - SDK_MINMAX_ASSERT(velocity, 0, 127); - SDK_NULL_ASSERT(inst); - - release = inst->param.release; - if (inst->param.release == SND_BANK_DISABLE_RELEASE) { - length = -1; - release = 0; - } - - switch (inst->type) { - case SND_INST_PCM: - case SND_INST_DIRECTPCM: - if (inst->type == SND_INST_PCM) { - wave_data = GetWaveData(bank, inst->param.wave[1], inst->param.wave[0]); - } else { - wave_data = (const SNDWaveData *)(inst->param.wave[1] << 16 | inst->param.wave[0]); - } - - if (wave_data != NULL) { - result = SND_StartExChannelPcm(ch_p, &wave_data->param, wave_data->samples, length); - } else { - result = FALSE; - } - break; - - case SND_INST_PSG: - result = SND_StartExChannelPsg(ch_p, (SNDDuty)inst->param.wave[0], length); - break; - - case SND_INST_NOISE: - result = SND_StartExChannelNoise(ch_p, length); - break; - - default: - result = FALSE; - break; - } - - if (!result) { - return FALSE; - } - - ch_p->key = (u8)key; - ch_p->original_key = inst->param.original_key; - ch_p->velocity = (u8)velocity; - - SND_SetExChannelAttack(ch_p, inst->param.attack); - SND_SetExChannelDecay(ch_p, inst->param.decay); - SND_SetExChannelSustain(ch_p, inst->param.sustain); - SND_SetExChannelRelease(ch_p, release); - - ch_p->init_pan = (s8)(inst->param.pan - 64); - - return TRUE; -} - -#endif - -#ifdef SDK_ARM7 - -static const SNDWaveData * GetWaveData (const SNDBankData * bank, int waveArcNo, int waveIndex) { - const SNDWaveArc * arc; - - SDK_MINMAX_ASSERT(waveArcNo, 0, SND_BANK_TO_WAVEARC_MAX - 1); - - arc = bank->waveArcLink[waveArcNo].waveArc; - - if (arc == NULL) { - return NULL; - } - if (waveIndex >= arc->waveCount) { - return NULL; - } - - return SND_GetWaveDataAddress(arc, waveIndex); -} - -#endif diff --git a/subprojects/NitroSDK/libraries/snd/src/snd_command.c b/subprojects/NitroSDK/libraries/snd/src/snd_command.c deleted file mode 100644 index 015d8ec32b..0000000000 --- a/subprojects/NitroSDK/libraries/snd/src/snd_command.c +++ /dev/null @@ -1,838 +0,0 @@ -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#define SND_COMMAND_NUM 256 - -#define SND_PXI_FIFO_MESSAGE_BUFSIZE 8 - -#define SND_MSG_REQUEST_COMMAND_PROC 0 - -#define UNPACK_COMMAND(arg, shift, bit) (((arg) >> (shift)) & ((1 << (bit)) - 1)) - -#ifdef SDK_ARM9 - -static SNDCommand sCommandArray[SND_COMMAND_NUM] ATTRIBUTE_ALIGN(32); -static SNDCommand * sFreeList; -static SNDCommand * sFreeListEnd; - -static SNDCommand * sReserveList; -static SNDCommand * sReserveListEnd; - -static SNDCommand * sWaitingCommandListQueue[SND_PXI_FIFO_MESSAGE_BUFSIZE + 1]; -static int sWaitingCommandListQueueRead; -static int sWaitingCommandListQueueWrite; - -static int sWaitingCommandListCount; - -static u32 sCurrentTag; -static u32 sFinishedTag; - -static SNDSharedWork sSharedWork ATTRIBUTE_ALIGN(32); - -#else - -static OSMessage sCommandMesgBuffer[SND_PXI_FIFO_MESSAGE_BUFSIZE]; -static OSMessageQueue sCommandMesgQueue; - -#endif - -static void PxiFifoCallback(PXIFifoTag tag, u32 data, BOOL err); -static void InitPXI(void); - -#ifdef SDK_ARM9 -static void RequestCommandProc(void); -static SNDCommand * AllocCommand(void); -static BOOL IsCommandAvailable(void); -#else -static void SetChannelTimer(u32 chBitMask, int timer); -static void SetChannelVolume(u32 chBitMask, int volume, SNDChannelDataShift shift); -static void SetChannelPan(u32 chBitMask, int pan); -static void StartTimer(u32 chBitMask, u32 capBitMask, u32 alarmBitMask, u32 flags); -static void StopTimer(u32 chBitMask, u32 capBitMask, u32 alarmBitMask, u32 flags); -static void ReadDriverInfo(SNDDriverInfo * info); -#endif - -void SND_CommandInit (void) { -#ifdef SDK_ARM9 - SNDCommand * command; - int i; -#endif - -#ifdef SDK_ARM7 - OS_InitMessageQueue(&sCommandMesgQueue, sCommandMesgBuffer, SND_PXI_FIFO_MESSAGE_BUFSIZE); -#endif - - InitPXI(); - -#ifdef SDK_ARM9 - - sFreeList = &sCommandArray[0]; - for (i = 0; i < SND_COMMAND_NUM - 1; i++) { - sCommandArray[i].next = &sCommandArray[i + 1]; - } - sCommandArray[SND_COMMAND_NUM - 1].next = NULL; - sFreeListEnd = &sCommandArray[SND_COMMAND_NUM - 1]; - - sReserveList = NULL; - sReserveListEnd = NULL; - - sWaitingCommandListCount = 0; - - sWaitingCommandListQueueRead = 0; - sWaitingCommandListQueueWrite = 0; - - sCurrentTag = 1; - sFinishedTag = 0; - - SNDi_SharedWork = &sSharedWork; - SNDi_InitSharedWork(SNDi_SharedWork); - - command = SND_AllocCommand(SND_COMMAND_BLOCK); - if (command != NULL) { - command->id = SND_COMMAND_SHARED_WORK; - command->arg[0] = (u32)SNDi_SharedWork; - - SND_PushCommand(command); - (void)SND_FlushCommand(SND_COMMAND_BLOCK); - } - -#else - - SNDi_SharedWork = NULL; - -#endif -} - -#ifdef SDK_ARM9 - -const SNDCommand * SND_RecvCommandReply (u32 flags) { - OSIntrMode bak_psr = OS_DisableInterrupts(); - SNDCommand * commandList; - SNDCommand * commandListEnd; - - if (flags & SND_COMMAND_BLOCK) { - while (sFinishedTag == SNDi_GetFinishedCommandTag()) { - (void)OS_RestoreInterrupts(bak_psr); - OS_SpinWait(100); - bak_psr = OS_DisableInterrupts(); - } - } else { - if (sFinishedTag == SNDi_GetFinishedCommandTag()) { - (void)OS_RestoreInterrupts(bak_psr); - return NULL; - } - } - - commandList = sWaitingCommandListQueue[sWaitingCommandListQueueRead]; - sWaitingCommandListQueueRead++; - if (sWaitingCommandListQueueRead > SND_PXI_FIFO_MESSAGE_BUFSIZE) { - sWaitingCommandListQueueRead = 0; - } - - commandListEnd = commandList; - while (commandListEnd->next != NULL) { - commandListEnd = commandListEnd->next; - } - - if (sFreeListEnd != NULL) { - sFreeListEnd->next = commandList; - } else { - sFreeList = commandList; - } - sFreeListEnd = commandListEnd; - - sWaitingCommandListCount--; - sFinishedTag++; - - (void)OS_RestoreInterrupts(bak_psr); - return commandList; -} - -SNDCommand * SND_AllocCommand (u32 flags) { - SNDCommand * command; - - if (!IsCommandAvailable()) { - return NULL; - } - - command = AllocCommand(); - if (command != NULL) { - return command; - } - - if ((flags & SND_COMMAND_BLOCK) == 0) { - return NULL; - } - - if (SND_CountWaitingCommand() > 0) { - while (SND_RecvCommandReply(SND_COMMAND_NOBLOCK) != NULL) { - } - - command = AllocCommand(); - if (command != NULL) { - return command; - } - } else { - (void)SND_FlushCommand(SND_COMMAND_BLOCK); - } - - RequestCommandProc(); - - do{ - (void)SND_RecvCommandReply(SND_COMMAND_BLOCK); - command = AllocCommand(); - } while (command == NULL); - - return command; -} - -void SND_PushCommand (struct SNDCommand * command) { - OSIntrMode bak_psr; - - SDK_NULL_ASSERT(command); - - bak_psr = OS_DisableInterrupts(); - - if (sReserveListEnd == NULL) { - sReserveList = command; - sReserveListEnd = command; - } else { - sReserveListEnd->next = command; - sReserveListEnd = command; - } - - command->next = NULL; - - (void)OS_RestoreInterrupts(bak_psr); -} - -BOOL SND_FlushCommand (u32 flags) { - OSIntrMode bak_psr = OS_DisableInterrupts(); - - if (sReserveList == NULL) { - (void)OS_RestoreInterrupts(bak_psr); - return TRUE; - } - - if (sWaitingCommandListCount >= SND_PXI_FIFO_MESSAGE_BUFSIZE) { - if ((flags & SND_COMMAND_BLOCK) == 0) { - (void)OS_RestoreInterrupts(bak_psr); - return FALSE; - } - - do{ - (void)SND_RecvCommandReply(SND_COMMAND_BLOCK); - } while (sWaitingCommandListCount >= SND_PXI_FIFO_MESSAGE_BUFSIZE); - - if (sReserveList == NULL) { - (void)OS_RestoreInterrupts(bak_psr); - return TRUE; - } - } - - DC_FlushRange(sCommandArray, sizeof(sCommandArray)); - if (PXI_SendWordByFifo(PXI_FIFO_TAG_SOUND, (u32)sReserveList, FALSE) < 0) { - if ((flags & SND_COMMAND_BLOCK) == 0) { - (void)OS_RestoreInterrupts(bak_psr); - return FALSE; - } - - while (sWaitingCommandListCount >= SND_PXI_FIFO_MESSAGE_BUFSIZE || - PXI_SendWordByFifo(PXI_FIFO_TAG_SOUND, (u32)sReserveList, FALSE) < 0) { - (void)OS_RestoreInterrupts(bak_psr); - (void)SND_RecvCommandReply(SND_COMMAND_NOBLOCK); - bak_psr = OS_DisableInterrupts(); - - DC_FlushRange(sCommandArray, sizeof(sCommandArray)); - - if (sReserveList == NULL) { - (void)OS_RestoreInterrupts(bak_psr); - return TRUE; - } - } - } - - sWaitingCommandListQueue[sWaitingCommandListQueueWrite] = sReserveList; - sWaitingCommandListQueueWrite++; - if (sWaitingCommandListQueueWrite > SND_PXI_FIFO_MESSAGE_BUFSIZE) { - sWaitingCommandListQueueWrite = 0; - } - - sReserveList = NULL; - sReserveListEnd = NULL; - - sWaitingCommandListCount++; - sCurrentTag++; - - (void)OS_RestoreInterrupts(bak_psr); - - if (flags & SND_COMMAND_IMMEDIATE) { - RequestCommandProc(); - } - - return TRUE; -} - -void SND_WaitForCommandProc (u32 tag) { - if (SND_IsFinishedCommandTag(tag)) { - return; - } - - while (SND_RecvCommandReply(SND_COMMAND_NOBLOCK) != NULL) { - } - if (SND_IsFinishedCommandTag(tag)) { - return; - } - - RequestCommandProc(); - - while (!SND_IsFinishedCommandTag(tag)) { - (void)SND_RecvCommandReply(SND_COMMAND_BLOCK); - } -} - -void SND_WaitForFreeCommand (int count) { - int freeCount = SND_CountFreeCommand(); - - SDK_MAX_ASSERT(count, SND_COMMAND_NUM); - - if (freeCount >= count) { - return; - } - - if (freeCount + SND_CountWaitingCommand() >= count) { - while (SND_RecvCommandReply(SND_COMMAND_NOBLOCK) != NULL) { - } - - if (SND_CountFreeCommand() >= count) { - return; - } - } else { - (void)SND_FlushCommand(SND_COMMAND_BLOCK); - } - - RequestCommandProc(); - - do{ - (void)SND_RecvCommandReply(SND_COMMAND_BLOCK); - } while (SND_CountFreeCommand() < count); -} - -u32 SND_GetCurrentCommandTag (void) { - OSIntrMode bak_psr = OS_DisableInterrupts(); - u32 tag; - - if (sReserveList == NULL) { - tag = sFinishedTag; - } else { - tag = sCurrentTag; - } - - (void)OS_RestoreInterrupts(bak_psr); - return tag; -} - -BOOL SND_IsFinishedCommandTag (u32 tag) { - OSIntrMode bak_psr = OS_DisableInterrupts(); - BOOL result; - - if (tag > sFinishedTag) { - if (tag - sFinishedTag < 0x80000000) { - result = FALSE; - } else { - result = TRUE; - } - } else { - if (sFinishedTag - tag < 0x80000000) { - result = TRUE; - } else { - result = FALSE; - } - } - - (void)OS_RestoreInterrupts(bak_psr); - return result; -} - -int SND_CountFreeCommand (void) { - OSIntrMode bak_psr = OS_DisableInterrupts(); - SNDCommand * command; - int count = 0; - - command = sFreeList; - while (command != NULL) { - ++count; - command = command->next; - } - - (void)OS_RestoreInterrupts(bak_psr); - return count; -} - -int SND_CountReservedCommand (void) { - OSIntrMode bak_psr = OS_DisableInterrupts(); - SNDCommand * command; - int count = 0; - - command = sReserveList; - while (command != NULL) { - ++count; - command = command->next; - } - - (void)OS_RestoreInterrupts(bak_psr); - return count; -} - -int SND_CountWaitingCommand (void) { - int freeCount = SND_CountFreeCommand(); - int reservedCount = SND_CountReservedCommand(); - - return SND_COMMAND_NUM - freeCount - reservedCount; -} - -#else - -void SND_CommandProc (void) { - OSMessage message; - const SNDCommand * command_p; - SNDCommand command; - - while (OS_ReceiveMessage(&sCommandMesgQueue, &message, OS_MESSAGE_NOBLOCK)) { - command_p = (const SNDCommand *)message; - - while (command_p != NULL) { - command = *command_p; - - switch (command.id) { - case SND_COMMAND_START_SEQ: - SND_StartSeq( - (int)command.arg[0], - (const void *)command.arg[1], - command.arg[2], (struct SNDBankData *)command.arg[3] - ); - break; - - case SND_COMMAND_STOP_SEQ: - SND_StopSeq((int)command.arg[0]); - break; - - case SND_COMMAND_PREPARE_SEQ: - SND_PrepareSeq( - (int)command.arg[0], - (const void *)command.arg[1], - command.arg[2], (struct SNDBankData *)command.arg[3] - ); - break; - - case SND_COMMAND_START_PREPARED_SEQ: - SND_StartPreparedSeq((int)command.arg[0]); - break; - - case SND_COMMAND_PAUSE_SEQ: - SND_PauseSeq((int)command.arg[0], (BOOL)command.arg[1]); - break; - - case SND_COMMAND_SKIP_SEQ: - SND_SkipSeq((int)command.arg[0], (u32)command.arg[1]); - break; - - case SND_COMMAND_PLAYER_PARAM: - SNDi_SetPlayerParam( - (int)command.arg[0], - command.arg[1], command.arg[2], (int)command.arg[3] - ); - break; - - case SND_COMMAND_TRACK_PARAM: - SNDi_SetTrackParam( - (int)UNPACK_COMMAND(command.arg[0], 0, 24), - command.arg[1], - command.arg[2], - command.arg[3], (int)UNPACK_COMMAND(command.arg[0], 24, 8) - ); - break; - - case SND_COMMAND_MUTE_TRACK: - SND_SetTrackMute((int)command.arg[0], command.arg[1], (SNDSeqMute)command.arg[2]); - break; - - case SND_COMMAND_ALLOCATABLE_CHANNEL: - SND_SetTrackAllocatableChannel((int)command.arg[0], command.arg[1], command.arg[2]); - break; - - case SND_COMMAND_PLAYER_LOCAL_VAR: - SND_SetPlayerLocalVariable( - (int)command.arg[0], - (int)command.arg[1], (s16)command.arg[2] - ); - break; - - case SND_COMMAND_PLAYER_GLOBAL_VAR: - SND_SetPlayerGlobalVariable((int)command.arg[0], (s16)command.arg[1]); - break; - - case SND_COMMAND_START_TIMER: - StartTimer(command.arg[0], command.arg[1], command.arg[2], command.arg[3]); - break; - - case SND_COMMAND_STOP_TIMER: - StopTimer(command.arg[0], command.arg[1], command.arg[2], command.arg[3]); - break; - - case SND_COMMAND_SETUP_CAPTURE: - SND_SetupCapture( - (SNDCapture)UNPACK_COMMAND(command.arg[2], 31, 1), - (SNDCaptureFormat)UNPACK_COMMAND(command.arg[2], 30, 1), - (void *)command.arg[0], - (int)command.arg[1], - (BOOL)UNPACK_COMMAND(command.arg[2], 29, 1), - (SNDCaptureIn)UNPACK_COMMAND(command.arg[2], 28, 1), - (SNDCaptureOut)UNPACK_COMMAND(command.arg[2], 27, 1) - ); - break; - - case SND_COMMAND_SETUP_ALARM: - SND_SetupAlarm( - (int)command.arg[0], - (OSTick)command.arg[1], (OSTick)command.arg[2], (int)command.arg[3] - ); - break; - - case SND_COMMAND_CHANNEL_TIMER: - SetChannelTimer((u32)command.arg[0], (int)command.arg[1]); - break; - - case SND_COMMAND_CHANNEL_VOLUME: - SetChannelVolume( - (u32)command.arg[0], - (int)command.arg[1], (SNDChannelDataShift)command.arg[2] - ); - break; - - case SND_COMMAND_CHANNEL_PAN: - SetChannelPan((u32)command.arg[0], (int)command.arg[1]); - break; - - case SND_COMMAND_SETUP_CHANNEL_PCM: - SND_SetupChannelPcm( - (int)UNPACK_COMMAND(command.arg[0], 0, 16), - (const void *)UNPACK_COMMAND(command.arg[1], 0, 27), - (SNDWaveFormat)UNPACK_COMMAND(command.arg[3], 24, 2), - (SNDChannelLoop)UNPACK_COMMAND(command.arg[3], 26, 2), - (int)UNPACK_COMMAND(command.arg[3], 0, 16), - (int)UNPACK_COMMAND(command.arg[2], 0, 22), - (int)UNPACK_COMMAND(command.arg[2], 24, 7), - (SNDChannelDataShift)UNPACK_COMMAND(command.arg[2], 22, 2), - (int)UNPACK_COMMAND(command.arg[0], 16, 16), - (int)UNPACK_COMMAND(command.arg[3], 16, 7) - ); - break; - - case SND_COMMAND_SETUP_CHANNEL_PSG: - SND_SetupChannelPsg( - (int)command.arg[0], - (SNDDuty)command.arg[3], - (int)UNPACK_COMMAND(command.arg[1], 0, 7), - (SNDChannelDataShift)UNPACK_COMMAND(command.arg[1], 8, 2), - (int)UNPACK_COMMAND(command.arg[2], 8, 16), - (int)UNPACK_COMMAND(command.arg[2], 0, 7) - ); - break; - - case SND_COMMAND_SETUP_CHANNEL_NOISE: - SND_SetupChannelNoise( - (int)command.arg[0], - (int)UNPACK_COMMAND(command.arg[1], 0, 7), - (SNDChannelDataShift)UNPACK_COMMAND(command.arg[1], 8, 2), - (int)UNPACK_COMMAND(command.arg[2], 8, 16), - (int)UNPACK_COMMAND(command.arg[2], 0, 7) - ); - break; - - case SND_COMMAND_SURROUND_DECAY: - SNDi_SetSurroundDecay((int)command.arg[0]); - break; - - case SND_COMMAND_MASTER_VOLUME: - SND_SetMasterVolume((int)command.arg[0]); - break; - - case SND_COMMAND_MASTER_PAN: - SND_SetMasterPan((int)command.arg[0]); - break; - - case SND_COMMAND_OUTPUT_SELECTOR: - SND_SetOutputSelector( - (SNDOutput)command.arg[0], - (SNDOutput)command.arg[1], - (SNDChannelOut)command.arg[2], (SNDChannelOut)command.arg[3] - ); - break; - - case SND_COMMAND_LOCK_CHANNEL: - SND_LockChannel(command.arg[0], command.arg[1]); - break; - - case SND_COMMAND_UNLOCK_CHANNEL: - SND_UnlockChannel(command.arg[0], command.arg[1]); - break; - - case SND_COMMAND_STOP_UNLOCKED_CHANNEL: - SND_StopUnlockedChannel(command.arg[0], command.arg[1]); - break; - - case SND_COMMAND_INVALIDATE_SEQ: - SND_InvalidateSeq((const void *)command.arg[0], (const void *)command.arg[1]); - break; - - case SND_COMMAND_INVALIDATE_BANK: - SND_InvalidateBank((const void *)command.arg[0], (const void *)command.arg[1]); - break; - - case SND_COMMAND_INVALIDATE_WAVE: - SND_InvalidateWave((const void *)command.arg[0], (const void *)command.arg[1]); - break; - - case SND_COMMAND_SHARED_WORK: - SNDi_SharedWork = (SNDSharedWork *)command.arg[0]; - break; - - case SND_COMMAND_READ_DRIVER_INFO: - ReadDriverInfo((SNDDriverInfo *)command.arg[0]); - break; - } - - command_p = command.next; - } - - SDK_NULL_ASSERT(SNDi_SharedWork); - SNDi_SharedWork->finishCommandTag++; - } -} - -#endif - -static void PxiFifoCallback (PXIFifoTag tag, u32 data, BOOL) { - OSIntrMode enabled; - BOOL result; - -#ifdef SDK_DEBUG - SDK_ASSERT(tag == PXI_FIFO_TAG_SOUND); -#else -#pragma unused( tag ) -#endif - - enabled = OS_DisableInterrupts(); - -#ifdef SDK_ARM9 - -#pragma unused( result ) - SNDi_CallAlarmHandler((int)data); - -#else - - if (data >= HW_MAIN_MEM) { - result = OS_SendMessage(&sCommandMesgQueue, (OSMessage)data, OS_MESSAGE_NOBLOCK); - SDK_ASSERTMSG(result, "Failed OS_SendMessage"); - } else { - switch (data) { - case SND_MSG_REQUEST_COMMAND_PROC: - { - (void)SND_SendWakeupMessage(); - break; - } - } - } - -#endif - - (void)OS_RestoreInterrupts(enabled); -} - -static void InitPXI (void) { - PXI_SetFifoRecvCallback(PXI_FIFO_TAG_SOUND, PxiFifoCallback); - -#ifdef SDK_ARM9 - if (IsCommandAvailable()) { - while (!PXI_IsCallbackReady(PXI_FIFO_TAG_SOUND, PXI_PROC_ARM7)) { - OS_SpinWait(100); - } - } -#endif -} - -#ifdef SDK_ARM9 - -static void RequestCommandProc (void) { - while (PXI_SendWordByFifo(PXI_FIFO_TAG_SOUND, SND_MSG_REQUEST_COMMAND_PROC, FALSE) < 0) { - } -} - -static SNDCommand * AllocCommand (void) { - OSIntrMode bak_psr = OS_DisableInterrupts(); - SNDCommand * command; - - if (sFreeList == NULL) { - (void)OS_RestoreInterrupts(bak_psr); - return NULL; - } - - command = sFreeList; - sFreeList = sFreeList->next; - - if (sFreeList == NULL) { - sFreeListEnd = NULL; - } - - (void)OS_RestoreInterrupts(bak_psr); - return command; -} - -static BOOL IsCommandAvailable (void) { - OSIntrMode prev_mode; - u32 res; - - if (!OS_IsRunOnEmulator()) { - return TRUE; - } - - prev_mode = OS_DisableInterrupts(); - - *(vu32 *)0x4fff200 = 0x10; - res = *(vu32 *)0x4fff200; - - (void)OS_RestoreInterrupts(prev_mode); - - return res ? TRUE : FALSE; -} - -#else - -static void SetChannelTimer (u32 chBitMask, int timer) { - int ch; - - for (ch = 0; ch < SND_CHANNEL_NUM && chBitMask != 0; ch++, chBitMask >>= 1) { - if ((chBitMask & 0x01) == 0) { - continue; - } - SND_SetChannelTimer(ch, timer); - } -} - -static void SetChannelVolume (u32 chBitMask, int volume, SNDChannelDataShift shift) { - int ch; - - for (ch = 0; ch < SND_CHANNEL_NUM && chBitMask != 0; ch++, chBitMask >>= 1) { - if ((chBitMask & 0x01) == 0) { - continue; - } - SND_SetChannelVolume(ch, volume, shift); - } -} - -static void SetChannelPan (u32 chBitMask, int pan) { - int ch; - - for (ch = 0; ch < SND_CHANNEL_NUM && chBitMask != 0; ch++, chBitMask >>= 1) { - if ((chBitMask & 0x01) == 0) { - continue; - } - SND_SetChannelPan(ch, pan); - } -} - -static void StartTimer (u32 chBitMask, u32 capBitMask, u32 alarmBitMask, u32) { - OSIntrMode enabled; - int i; - - enabled = OS_DisableInterrupts(); - - for (i = 0; i < SND_CHANNEL_NUM && chBitMask != 0; i++, chBitMask >>= 1) { - if ((chBitMask & 0x01) == 0) { - continue; - } - SND_StartChannel(i); - } - - if (capBitMask & (1 << SND_CAPTURE_0)) { - if (capBitMask & (1 << SND_CAPTURE_1)) { - SND_StartCaptureBoth(); - } else { - SND_StartCapture(SND_CAPTURE_0); - } - } else if (capBitMask & (1 << SND_CAPTURE_1)) { - SND_StartCapture(SND_CAPTURE_1); - } - - for (i = 0; i < SND_ALARM_NUM && alarmBitMask != 0; i++, alarmBitMask >>= 1) { - if ((alarmBitMask & 0x01) == 0) { - continue; - } - SND_StartAlarm(i); - } - - (void)OS_RestoreInterrupts(enabled); - - SND_UpdateSharedWork(); -} - -static void StopTimer (u32 chBitMask, u32 capBitMask, u32 alarmBitMask, u32 flags) { - OSIntrMode enabled; - int i; - - enabled = OS_DisableInterrupts(); - - for (i = 0; i < SND_ALARM_NUM && alarmBitMask != 0; i++, alarmBitMask >>= 1) { - if ((alarmBitMask & 0x01) == 0) { - continue; - } - SND_StopAlarm(i); - } - - for (i = 0; i < SND_CHANNEL_NUM && chBitMask != 0; i++, chBitMask >>= 1) { - if ((chBitMask & 0x01) == 0) { - continue; - } - SND_StopChannel(i, (s32)flags); - } - - if (capBitMask & (1 << SND_CAPTURE_0)) { - SND_StopCapture(SND_CAPTURE_0); - } - if (capBitMask & (1 << SND_CAPTURE_1)) { - SND_StopCapture(SND_CAPTURE_1); - } - - (void)OS_RestoreInterrupts(enabled); - - SND_UpdateSharedWork(); -} - -static void ReadDriverInfo (SNDDriverInfo * info) { - int ch; - - MI_CpuCopy32(&SNDi_Work, &info->work, sizeof(SNDi_Work)); - - info->workAddress = &SNDi_Work; - - for (ch = 0; ch < SND_CHANNEL_NUM; ch++) { - info->chCtrl[ch] = SND_GetChannelControl(ch); - } - - info->lockedChannels = SND_GetLockedChannel(0); -} - -#endif diff --git a/subprojects/NitroSDK/libraries/snd/src/snd_interface.c b/subprojects/NitroSDK/libraries/snd/src/snd_interface.c deleted file mode 100644 index 766d54c8a6..0000000000 --- a/subprojects/NitroSDK/libraries/snd/src/snd_interface.c +++ /dev/null @@ -1,311 +0,0 @@ -#include - -#include -#include -#include -#include - -#define PushCommand(c, a0, a1, a2, a3) PushCommand_impl((c), (u32)(a0), (u32)(a1), (u32)(a2), (u32)(a3)) - -#define GetOffset(type, member) ((u32)(&((type *)0)->member)) -#define GetSize(type, member) (sizeof(((type *)0)->member)) - -static void PushCommand_impl(SNDCommandID command, u32 arg0, u32 arg1, u32 arg2, u32 arg3); - -void SND_StartSeq (int playerNo, const void * base, u32 offset, const struct SNDBankData * bank) { - SDK_MINMAX_ASSERT(playerNo, SND_PLAYER_MIN, SND_PLAYER_MAX); - SDK_NULL_ASSERT(base); - SDK_NULL_ASSERT(bank); - - PushCommand(SND_COMMAND_START_SEQ, playerNo, base, offset, bank); -} - -void SND_StopSeq (int playerNo) { - SDK_MINMAX_ASSERT(playerNo, SND_PLAYER_MIN, SND_PLAYER_MAX); - - PushCommand(SND_COMMAND_STOP_SEQ, playerNo, 0, 0, 0); -} - -void SND_PrepareSeq (int playerNo, const void * base, u32 offset, const struct SNDBankData * bank) { - SDK_MINMAX_ASSERT(playerNo, SND_PLAYER_MIN, SND_PLAYER_MAX); - SDK_NULL_ASSERT(base); - SDK_NULL_ASSERT(bank); - - PushCommand(SND_COMMAND_PREPARE_SEQ, playerNo, base, offset, bank); -} - -void SND_StartPreparedSeq (int playerNo) { - SDK_MINMAX_ASSERT(playerNo, SND_PLAYER_MIN, SND_PLAYER_MAX); - - PushCommand(SND_COMMAND_START_PREPARED_SEQ, playerNo, 0, 0, 0); -} - -void SND_PauseSeq (int playerNo, BOOL flag) { - SDK_MINMAX_ASSERT(playerNo, SND_PLAYER_MIN, SND_PLAYER_MAX); - - PushCommand(SND_COMMAND_PAUSE_SEQ, playerNo, flag, 0, 0); -} - -void SND_SetPlayerTempoRatio (int playerNo, int ratio) { - SDK_MINMAX_ASSERT(playerNo, SND_PLAYER_MIN, SND_PLAYER_MAX); - SDK_MIN_ASSERT(ratio, 1); - - SNDi_SetPlayerParam( - playerNo, - GetOffset(SNDPlayer, tempo_ratio), - (u32)ratio, GetSize(SNDPlayer, tempo_ratio) - ); -} - -void SND_SetPlayerVolume (int playerNo, int volume) { - SDK_MINMAX_ASSERT(playerNo, SND_PLAYER_MIN, SND_PLAYER_MAX); - SDK_MINMAX_ASSERT(volume, -32768, 0); - - SNDi_SetPlayerParam( - playerNo, - GetOffset(SNDPlayer, extFader), (u32)volume, GetSize(SNDPlayer, extFader) - ); -} - -void SND_SetPlayerChannelPriority (int playerNo, int prio) { - SDK_MINMAX_ASSERT(playerNo, SND_PLAYER_MIN, SND_PLAYER_MAX); - SDK_MINMAX_ASSERT(prio, 0, 127); - - SNDi_SetPlayerParam(playerNo, GetOffset(SNDPlayer, prio), (u32)prio, GetSize(SNDPlayer, prio)); -} - -void SND_SetPlayerLocalVariable (int playerNo, int varNo, s16 var) { - SDK_MINMAX_ASSERT(playerNo, SND_PLAYER_MIN, SND_PLAYER_MAX); - SDK_MINMAX_ASSERT(varNo, 0, SND_PLAYER_VARIABLE_NUM - 1); - - PushCommand(SND_COMMAND_PLAYER_LOCAL_VAR, playerNo, varNo, var, 0); -} - -void SND_SetPlayerGlobalVariable (int varNo, s16 var) { - SDK_MINMAX_ASSERT(varNo, 0, SND_GLOBAL_VARIABLE_NUM - 1); - - PushCommand(SND_COMMAND_PLAYER_GLOBAL_VAR, varNo, var, 0, 0); -} - -void SND_SetTrackVolume (int playerNo, u32 trackBitMask, int volume) { - SDK_MINMAX_ASSERT(playerNo, SND_PLAYER_MIN, SND_PLAYER_MAX); - SDK_MINMAX_ASSERT(volume, -32768, 0); - - SNDi_SetTrackParam( - playerNo, trackBitMask, - GetOffset(SNDTrack, extFader), (u32)volume, GetSize(SNDTrack, extFader) - ); -} - -void SND_SetTrackPitch (int playerNo, u32 trackBitMask, int pitch) { - SDK_MINMAX_ASSERT(playerNo, SND_PLAYER_MIN, SND_PLAYER_MAX); - SDK_MINMAX_ASSERT(pitch, -32768, 32767); - - SNDi_SetTrackParam( - playerNo, trackBitMask, - GetOffset(SNDTrack, ext_pitch), (u32)pitch, GetSize(SNDTrack, ext_pitch) - ); -} - -void SND_SetTrackPan (int playerNo, u32 trackBitMask, int pan) { - SDK_MINMAX_ASSERT(playerNo, SND_PLAYER_MIN, SND_PLAYER_MAX); - SDK_MINMAX_ASSERT(pan, -128, 127); - - SNDi_SetTrackParam( - playerNo, trackBitMask, - GetOffset(SNDTrack, ext_pan), (u32)pan, GetSize(SNDTrack, ext_pan) - ); -} - -void SND_SetTrackPanRange (int playerNo, u32 trackBitMask, int panRange) { - SDK_MINMAX_ASSERT(playerNo, SND_PLAYER_MIN, SND_PLAYER_MAX); - SDK_MINMAX_ASSERT(panRange, 0, 127); - - SNDi_SetTrackParam( - playerNo, trackBitMask, - GetOffset(SNDTrack, pan_range), (u32)panRange, GetSize(SNDTrack, pan_range) - ); -} - -void SND_SetTrackModDepth (int playerNo, u32 trackBitMask, int depth) { - SDK_MINMAX_ASSERT(playerNo, SND_PLAYER_MIN, SND_PLAYER_MAX); - SDK_MINMAX_ASSERT(depth, 0, 255); - - SNDi_SetTrackParam( - playerNo, trackBitMask, - GetOffset(SNDTrack, mod.depth), (u32)depth, GetSize(SNDTrack, mod.depth) - ); -} - -void SND_SetTrackModSpeed (int playerNo, u32 trackBitMask, int speed) { - SDK_MINMAX_ASSERT(playerNo, SND_PLAYER_MIN, SND_PLAYER_MAX); - SDK_MINMAX_ASSERT(speed, 0, 255); - - SNDi_SetTrackParam( - playerNo, trackBitMask, - GetOffset(SNDTrack, mod.speed), (u32)speed, GetSize(SNDTrack, mod.speed) - ); -} - -void SND_SetTrackAllocatableChannel (int playerNo, u32 trackBitMask, u32 chBitMask) { - SDK_MINMAX_ASSERT(playerNo, SND_PLAYER_MIN, SND_PLAYER_MAX); - SDK_MINMAX_ASSERT(chBitMask, 0, 0xffff); - - PushCommand(SND_COMMAND_ALLOCATABLE_CHANNEL, playerNo, trackBitMask, chBitMask, 0); -} - -void SND_StartTimer (u32 chBitMask, u32 capBitMask, u32 alarmBitMask, u32 flags) { - PushCommand(SND_COMMAND_START_TIMER, chBitMask, capBitMask, alarmBitMask, flags); -} - -void SND_StopTimer (u32 chBitMask, u32 capBitMask, u32 alarmBitMask, u32 flags) { - int alarmNo; - u32 mask = alarmBitMask; - - for (alarmNo = 0; alarmNo < SND_ALARM_NUM && mask != 0; alarmNo++, mask >>= 1) { - if ((mask & 0x01) == 0) { - continue; - } - SNDi_IncAlarmId(alarmNo); - } - - PushCommand(SND_COMMAND_STOP_TIMER, chBitMask, capBitMask, alarmBitMask, flags); -} - -void SND_SetupCapture (SNDCapture capture, SNDCaptureFormat format, void * buffer_p, u32 length, BOOL loopFlag, SNDCaptureIn in, SNDCaptureOut out) { - PushCommand( - SND_COMMAND_SETUP_CAPTURE, - buffer_p, - length, capture << 31 | format << 30 | loopFlag << 29 | in << 28 | out << 27, 0 - ); -} - -void SND_SetupAlarm (int alarmNo, u32 tick, u32 period, SNDAlarmHandler handler, void * arg) { - u8 id = SNDi_SetAlarmHandler( - alarmNo, - handler, - arg - ); - - PushCommand(SND_COMMAND_SETUP_ALARM, alarmNo, tick, period, id); -} - -void SND_SetTrackMute (int playerNo, u32 trackBitMask, BOOL flag) { - PushCommand( - SND_COMMAND_MUTE_TRACK, playerNo, trackBitMask, - flag ? SND_SEQ_MUTE_STOP : SND_SEQ_MUTE_OFF, 0 - ); -} - -void SND_SetTrackMuteEx (int playerNo, u32 trackBitMask, SNDSeqMute mute) { - PushCommand(SND_COMMAND_MUTE_TRACK, playerNo, trackBitMask, mute, 0); -} - -void SND_StopUnlockedChannel (u32 chBitMask, u32 flags) { - PushCommand(SND_COMMAND_STOP_UNLOCKED_CHANNEL, chBitMask, flags, 0, 0); -} - -void SND_LockChannel (u32 chBitMask, u32 flags) { - PushCommand(SND_COMMAND_LOCK_CHANNEL, chBitMask, flags, 0, 0); -} - -void SND_UnlockChannel (u32 chBitMask, u32 flags) { - PushCommand(SND_COMMAND_UNLOCK_CHANNEL, chBitMask, flags, 0, 0); -} - -void SND_SetChannelTimer (u32 chBitMask, int timer) { - PushCommand(SND_COMMAND_CHANNEL_TIMER, chBitMask, timer, 0, 0); -} - -void SND_SetChannelVolume (u32 chBitMask, int volume, SNDChannelDataShift shift) { - PushCommand(SND_COMMAND_CHANNEL_VOLUME, chBitMask, volume, shift, 0); -} - -void SND_SetChannelPan (u32 chBitMask, int pan) { - PushCommand(SND_COMMAND_CHANNEL_PAN, chBitMask, pan, 0, 0); -} - -void SND_SetupChannelPcm (int chNo, SNDWaveFormat format, const void * dataaddr, SNDChannelLoop loop, int loopStart, int loopLen, int volume, SNDChannelDataShift shift, int timer, int pan) { - PushCommand( - SND_COMMAND_SETUP_CHANNEL_PCM, - timer << 16 | chNo, - dataaddr, - volume << 24 | shift << 22 | loopLen, - loop << 26 | format << 24 | pan << 16 | loopStart - ); -} - -void SND_SetupChannelPsg (int chNo, SNDDuty duty, int volume, SNDChannelDataShift shift, int timer, int pan) { - PushCommand(SND_COMMAND_SETUP_CHANNEL_PSG, chNo, shift << 8 | volume, timer << 8 | pan, duty); -} - -void SND_SetupChannelNoise (int chNo, int volume, SNDChannelDataShift shift, int timer, int pan) { - PushCommand(SND_COMMAND_SETUP_CHANNEL_NOISE, chNo, shift << 8 | volume, timer << 8 | pan, 0); -} - -void SND_InvalidateSeqData (const void * start, const void * end) { - PushCommand(SND_COMMAND_INVALIDATE_SEQ, start, end, 0, 0); -} - -void SND_InvalidateBankData (const void * start, const void * end) { - PushCommand(SND_COMMAND_INVALIDATE_BANK, start, end, 0, 0); -} - -void SND_InvalidateWaveData (const void * start, const void * end) { - PushCommand(SND_COMMAND_INVALIDATE_WAVE, start, end, 0, 0); -} - -void SND_SetMasterVolume (int volume) { - PushCommand(SND_COMMAND_MASTER_VOLUME, volume, 0, 0, 0); -} - -void SND_SetOutputSelector (SNDOutput left, SNDOutput right, SNDChannelOut channel1, SNDChannelOut channel3) { - PushCommand(SND_COMMAND_OUTPUT_SELECTOR, left, right, channel1, channel3); -} - -void SND_SetMasterPan (int pan) { - SDK_MINMAX_ASSERT(pan, SND_CHANNEL_PAN_MIN, SND_CHANNEL_PAN_MAX); - - PushCommand(SND_COMMAND_MASTER_PAN, pan, 0, 0, 0); -} - -void SND_ResetMasterPan (void) { - PushCommand(SND_COMMAND_MASTER_PAN, -1, 0, 0, 0); -} - -void SND_ReadDriverInfo (struct SNDDriverInfo * info) { - PushCommand(SND_COMMAND_READ_DRIVER_INFO, info, 0, 0, 0); -} - -void SNDi_SetPlayerParam (int playerNo, u32 offset, u32 data, int size) { - PushCommand(SND_COMMAND_PLAYER_PARAM, playerNo, offset, data, size); -} - -void SNDi_SetTrackParam (int playerNo, u32 trackBitMask, u32 offset, u32 data, int size) { - PushCommand(SND_COMMAND_TRACK_PARAM, size << 24 | playerNo, trackBitMask, offset, data); -} - -void SNDi_SetSurroundDecay (int decay) { - PushCommand(SND_COMMAND_SURROUND_DECAY, decay, 0, 0, 0); -} - -void SNDi_SkipSeq (int playerNo, u32 tick) { - SDK_MINMAX_ASSERT(playerNo, SND_PLAYER_MIN, SND_PLAYER_MAX); - - PushCommand(SND_COMMAND_SKIP_SEQ, playerNo, tick, 0, 0); -} - -static void PushCommand_impl (SNDCommandID id, u32 arg0, u32 arg1, u32 arg2, u32 arg3) { - SNDCommand * command = SND_AllocCommand(SND_COMMAND_BLOCK); - if (command == NULL) { - return; - } - - command->id = id; - command->arg[0] = arg0; - command->arg[1] = arg1; - command->arg[2] = arg2; - command->arg[3] = arg3; - - SND_PushCommand(command); -} diff --git a/subprojects/NitroSDK/libraries/snd/src/snd_main.c b/subprojects/NitroSDK/libraries/snd/src/snd_main.c deleted file mode 100644 index 3c71420e12..0000000000 --- a/subprojects/NitroSDK/libraries/snd/src/snd_main.c +++ /dev/null @@ -1,184 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef SDK_ARM7 - -#define SND_THREAD_STACK_SIZE 1024 -#define SND_THREAD_MESSAGE_BUFSIZE 8 - -#define SND_ALARM_COUNT_P1 0x10000 - -#endif - -#ifdef SDK_ARM9 - -static OSMutex sSndMutex; - -#else - -static OSThread sndThread; -static u64 sndStack[SND_THREAD_STACK_SIZE / sizeof(u64)]; -static OSAlarm sndAlarm; -static OSMessageQueue sndMesgQueue; -static OSMessage sndMesgBuffer[SND_THREAD_MESSAGE_BUFSIZE]; - -#endif - -#ifdef SDK_ARM7 - -static void SndThread(void * arg); -static void SndAlarmCallback(void * arg); - -#endif - -#ifdef SDK_ARM9 - -void SND_Init (void) { - { - static BOOL initialized = FALSE; - if (initialized) { - return; - } - initialized = TRUE; - } - - OS_InitMutex(&sSndMutex); - SND_CommandInit(); - SND_AlarmInit(); -} - -#else - -void SND_Init (u32 threadPrio) { - { - static BOOL initialized = FALSE; - if (initialized) { - return; - } - initialized = TRUE; - } - - SND_CommandInit(); - - SND_CreateThread(threadPrio); -} - -void SND_CreateThread (u32 threadPrio) { - OS_CreateThread( - &sndThread, - SndThread, - NULL, - sndStack + SND_THREAD_STACK_SIZE / sizeof(u64), - SND_THREAD_STACK_SIZE, threadPrio - ); - OS_WakeupThreadDirect(&sndThread); -} - -BOOL SND_SetThreadPriority (u32 prio) { - return OS_SetThreadPriority(&sndThread, prio); -} - -void SND_InitIntervalTimer (void) { - OS_InitMessageQueue(&sndMesgQueue, sndMesgBuffer, SND_THREAD_MESSAGE_BUFSIZE); - - OS_CreateAlarm(&sndAlarm); -} - -void SND_StartIntervalTimer (void) { - OS_SetPeriodicAlarm( - &sndAlarm, - OS_GetTick() + SND_ALARM_COUNT_P1, - SND_PROC_INTERVAL, &SndAlarmCallback, NULL - ); -} - -void SND_StopIntervalTimer (void) { - OS_CancelAlarm(&sndAlarm); -} - -OSMessage SND_WaitForIntervalTimer (void) { - OSMessage message; - - (void)OS_ReceiveMessage(&sndMesgQueue, &message, OS_MESSAGE_BLOCK); - - return message; -} - -BOOL SND_SendWakeupMessage (void) { - return OS_SendMessage(&sndMesgQueue, (OSMessage)SND_MESSAGE_WAKEUP_THREAD, OS_MESSAGE_NOBLOCK); -} - -#endif - -void SNDi_LockMutex (void) { -#ifdef SDK_ARM9 - OS_LockMutex(&sSndMutex); -#endif -} - -void SNDi_UnlockMutex (void) { -#ifdef SDK_ARM9 - OS_UnlockMutex(&sSndMutex); -#endif -} - -#ifdef SDK_ARM7 - -static void SndAlarmCallback (void *) { - if (!OS_SendMessage(&sndMesgQueue, (OSMessage)SND_MESSAGE_PERIODIC, OS_MESSAGE_NOBLOCK)) { - OS_PutString("Failed sound alarm OS_SendMessage\n"); - } -} - -static void SndThread (void *) { - SND_InitIntervalTimer(); - SND_ExChannelInit(); - SND_SeqInit(); - SND_AlarmInit(); - SND_Enable(); - SND_SetOutputSelector( - SND_OUTPUT_MIXER, - SND_OUTPUT_MIXER, SND_CHANNEL_OUT_MIXER, SND_CHANNEL_OUT_MIXER - ); - SND_SetMasterVolume(SND_MASTER_VOLUME_MAX); - - SND_StartIntervalTimer(); - - while (1) { - OSMessage message; - BOOL doPeriodicProc = FALSE; - - message = SND_WaitForIntervalTimer(); - - switch ((u32)message) { - case SND_MESSAGE_PERIODIC: - doPeriodicProc = TRUE; - break; - case SND_MESSAGE_WAKEUP_THREAD: - break; - } - - SND_UpdateExChannel(); - - SND_CommandProc(); - - SND_SeqMain(doPeriodicProc); - SND_ExChannelMain(doPeriodicProc); - - SND_UpdateSharedWork(); - - (void)SND_CalcRandom(); - } - - SND_Disable(); - SND_StopIntervalTimer(); -} - -#endif diff --git a/subprojects/NitroSDK/libraries/snd/src/snd_util.c b/subprojects/NitroSDK/libraries/snd/src/snd_util.c deleted file mode 100644 index d7f358f217..0000000000 --- a/subprojects/NitroSDK/libraries/snd/src/snd_util.c +++ /dev/null @@ -1,354 +0,0 @@ -#include -#include - -#ifndef SDK_FROM_TOOL -#include -#endif - -#define SND_VOLUME_SHIFT_2_MIN -240 -#define SND_VOLUME_SHIFT_1_MIN -120 -#define SND_VOLUME_SHIFT_0_MIN -60 - -#if defined(SDK_TS) && defined(SDK_ARM7) -#define SND_USE_SYSTEM_ROM_TABLE -#endif - -#ifndef SND_USE_SYSTEM_ROM_TABLE - -static const u16 PitchTable[SND_PITCH_TABLE_SIZE] = { - 0x0000, 0x003b, 0x0076, 0x00b2, 0x00ed, 0x0128, 0x0164, 0x019f, - 0x01db, 0x0217, 0x0252, 0x028e, 0x02ca, 0x0305, 0x0341, 0x037d, - 0x03b9, 0x03f5, 0x0431, 0x046e, 0x04aa, 0x04e6, 0x0522, 0x055f, - 0x059b, 0x05d8, 0x0614, 0x0651, 0x068d, 0x06ca, 0x0707, 0x0743, - 0x0780, 0x07bd, 0x07fa, 0x0837, 0x0874, 0x08b1, 0x08ef, 0x092c, - 0x0969, 0x09a7, 0x09e4, 0x0a21, 0x0a5f, 0x0a9c, 0x0ada, 0x0b18, - 0x0b56, 0x0b93, 0x0bd1, 0x0c0f, 0x0c4d, 0x0c8b, 0x0cc9, 0x0d07, - 0x0d45, 0x0d84, 0x0dc2, 0x0e00, 0x0e3f, 0x0e7d, 0x0ebc, 0x0efa, - - 0x0f39, 0x0f78, 0x0fb6, 0x0ff5, 0x1034, 0x1073, 0x10b2, 0x10f1, - 0x1130, 0x116f, 0x11ae, 0x11ee, 0x122d, 0x126c, 0x12ac, 0x12eb, - 0x132b, 0x136b, 0x13aa, 0x13ea, 0x142a, 0x146a, 0x14a9, 0x14e9, - 0x1529, 0x1569, 0x15aa, 0x15ea, 0x162a, 0x166a, 0x16ab, 0x16eb, - 0x172c, 0x176c, 0x17ad, 0x17ed, 0x182e, 0x186f, 0x18b0, 0x18f0, - 0x1931, 0x1972, 0x19b3, 0x19f5, 0x1a36, 0x1a77, 0x1ab8, 0x1afa, - 0x1b3b, 0x1b7d, 0x1bbe, 0x1c00, 0x1c41, 0x1c83, 0x1cc5, 0x1d07, - 0x1d48, 0x1d8a, 0x1dcc, 0x1e0e, 0x1e51, 0x1e93, 0x1ed5, 0x1f17, - - 0x1f5a, 0x1f9c, 0x1fdf, 0x2021, 0x2064, 0x20a6, 0x20e9, 0x212c, - 0x216f, 0x21b2, 0x21f5, 0x2238, 0x227b, 0x22be, 0x2301, 0x2344, - 0x2388, 0x23cb, 0x240e, 0x2452, 0x2496, 0x24d9, 0x251d, 0x2561, - 0x25a4, 0x25e8, 0x262c, 0x2670, 0x26b4, 0x26f8, 0x273d, 0x2781, - 0x27c5, 0x280a, 0x284e, 0x2892, 0x28d7, 0x291c, 0x2960, 0x29a5, - 0x29ea, 0x2a2f, 0x2a74, 0x2ab9, 0x2afe, 0x2b43, 0x2b88, 0x2bcd, - 0x2c13, 0x2c58, 0x2c9d, 0x2ce3, 0x2d28, 0x2d6e, 0x2db4, 0x2df9, - 0x2e3f, 0x2e85, 0x2ecb, 0x2f11, 0x2f57, 0x2f9d, 0x2fe3, 0x302a, - - 0x3070, 0x30b6, 0x30fd, 0x3143, 0x318a, 0x31d0, 0x3217, 0x325e, - 0x32a5, 0x32ec, 0x3332, 0x3379, 0x33c1, 0x3408, 0x344f, 0x3496, - 0x34dd, 0x3525, 0x356c, 0x35b4, 0x35fb, 0x3643, 0x368b, 0x36d3, - 0x371a, 0x3762, 0x37aa, 0x37f2, 0x383a, 0x3883, 0x38cb, 0x3913, - 0x395c, 0x39a4, 0x39ed, 0x3a35, 0x3a7e, 0x3ac6, 0x3b0f, 0x3b58, - 0x3ba1, 0x3bea, 0x3c33, 0x3c7c, 0x3cc5, 0x3d0e, 0x3d58, 0x3da1, - 0x3dea, 0x3e34, 0x3e7d, 0x3ec7, 0x3f11, 0x3f5a, 0x3fa4, 0x3fee, - 0x4038, 0x4082, 0x40cc, 0x4116, 0x4161, 0x41ab, 0x41f5, 0x4240, - - 0x428a, 0x42d5, 0x431f, 0x436a, 0x43b5, 0x4400, 0x444b, 0x4495, - 0x44e1, 0x452c, 0x4577, 0x45c2, 0x460d, 0x4659, 0x46a4, 0x46f0, - 0x473b, 0x4787, 0x47d3, 0x481e, 0x486a, 0x48b6, 0x4902, 0x494e, - 0x499a, 0x49e6, 0x4a33, 0x4a7f, 0x4acb, 0x4b18, 0x4b64, 0x4bb1, - 0x4bfe, 0x4c4a, 0x4c97, 0x4ce4, 0x4d31, 0x4d7e, 0x4dcb, 0x4e18, - 0x4e66, 0x4eb3, 0x4f00, 0x4f4e, 0x4f9b, 0x4fe9, 0x5036, 0x5084, - 0x50d2, 0x5120, 0x516e, 0x51bc, 0x520a, 0x5258, 0x52a6, 0x52f4, - 0x5343, 0x5391, 0x53e0, 0x542e, 0x547d, 0x54cc, 0x551a, 0x5569, - - 0x55b8, 0x5607, 0x5656, 0x56a5, 0x56f4, 0x5744, 0x5793, 0x57e2, - 0x5832, 0x5882, 0x58d1, 0x5921, 0x5971, 0x59c1, 0x5a10, 0x5a60, - 0x5ab0, 0x5b01, 0x5b51, 0x5ba1, 0x5bf1, 0x5c42, 0x5c92, 0x5ce3, - 0x5d34, 0x5d84, 0x5dd5, 0x5e26, 0x5e77, 0x5ec8, 0x5f19, 0x5f6a, - 0x5fbb, 0x600d, 0x605e, 0x60b0, 0x6101, 0x6153, 0x61a4, 0x61f6, - 0x6248, 0x629a, 0x62ec, 0x633e, 0x6390, 0x63e2, 0x6434, 0x6487, - 0x64d9, 0x652c, 0x657e, 0x65d1, 0x6624, 0x6676, 0x66c9, 0x671c, - 0x676f, 0x67c2, 0x6815, 0x6869, 0x68bc, 0x690f, 0x6963, 0x69b6, - - 0x6a0a, 0x6a5e, 0x6ab1, 0x6b05, 0x6b59, 0x6bad, 0x6c01, 0x6c55, - 0x6caa, 0x6cfe, 0x6d52, 0x6da7, 0x6dfb, 0x6e50, 0x6ea4, 0x6ef9, - 0x6f4e, 0x6fa3, 0x6ff8, 0x704d, 0x70a2, 0x70f7, 0x714d, 0x71a2, - 0x71f7, 0x724d, 0x72a2, 0x72f8, 0x734e, 0x73a4, 0x73fa, 0x7450, - 0x74a6, 0x74fc, 0x7552, 0x75a8, 0x75ff, 0x7655, 0x76ac, 0x7702, - 0x7759, 0x77b0, 0x7807, 0x785e, 0x78b4, 0x790c, 0x7963, 0x79ba, - 0x7a11, 0x7a69, 0x7ac0, 0x7b18, 0x7b6f, 0x7bc7, 0x7c1f, 0x7c77, - 0x7ccf, 0x7d27, 0x7d7f, 0x7dd7, 0x7e2f, 0x7e88, 0x7ee0, 0x7f38, - - 0x7f91, 0x7fea, 0x8042, 0x809b, 0x80f4, 0x814d, 0x81a6, 0x81ff, - 0x8259, 0x82b2, 0x830b, 0x8365, 0x83be, 0x8418, 0x8472, 0x84cb, - 0x8525, 0x857f, 0x85d9, 0x8633, 0x868e, 0x86e8, 0x8742, 0x879d, - 0x87f7, 0x8852, 0x88ac, 0x8907, 0x8962, 0x89bd, 0x8a18, 0x8a73, - 0x8ace, 0x8b2a, 0x8b85, 0x8be0, 0x8c3c, 0x8c97, 0x8cf3, 0x8d4f, - 0x8dab, 0x8e07, 0x8e63, 0x8ebf, 0x8f1b, 0x8f77, 0x8fd4, 0x9030, - 0x908c, 0x90e9, 0x9146, 0x91a2, 0x91ff, 0x925c, 0x92b9, 0x9316, - 0x9373, 0x93d1, 0x942e, 0x948c, 0x94e9, 0x9547, 0x95a4, 0x9602, - - 0x9660, 0x96be, 0x971c, 0x977a, 0x97d8, 0x9836, 0x9895, 0x98f3, - 0x9952, 0x99b0, 0x9a0f, 0x9a6e, 0x9acd, 0x9b2c, 0x9b8b, 0x9bea, - 0x9c49, 0x9ca8, 0x9d08, 0x9d67, 0x9dc7, 0x9e26, 0x9e86, 0x9ee6, - 0x9f46, 0x9fa6, 0xa006, 0xa066, 0xa0c6, 0xa127, 0xa187, 0xa1e8, - 0xa248, 0xa2a9, 0xa30a, 0xa36b, 0xa3cc, 0xa42d, 0xa48e, 0xa4ef, - 0xa550, 0xa5b2, 0xa613, 0xa675, 0xa6d6, 0xa738, 0xa79a, 0xa7fc, - 0xa85e, 0xa8c0, 0xa922, 0xa984, 0xa9e7, 0xaa49, 0xaaac, 0xab0e, - 0xab71, 0xabd4, 0xac37, 0xac9a, 0xacfd, 0xad60, 0xadc3, 0xae27, - - 0xae8a, 0xaeed, 0xaf51, 0xafb5, 0xb019, 0xb07c, 0xb0e0, 0xb145, - 0xb1a9, 0xb20d, 0xb271, 0xb2d6, 0xb33a, 0xb39f, 0xb403, 0xb468, - 0xb4cd, 0xb532, 0xb597, 0xb5fc, 0xb662, 0xb6c7, 0xb72c, 0xb792, - 0xb7f7, 0xb85d, 0xb8c3, 0xb929, 0xb98f, 0xb9f5, 0xba5b, 0xbac1, - 0xbb28, 0xbb8e, 0xbbf5, 0xbc5b, 0xbcc2, 0xbd29, 0xbd90, 0xbdf7, - 0xbe5e, 0xbec5, 0xbf2c, 0xbf94, 0xbffb, 0xc063, 0xc0ca, 0xc132, - 0xc19a, 0xc202, 0xc26a, 0xc2d2, 0xc33a, 0xc3a2, 0xc40b, 0xc473, - 0xc4dc, 0xc544, 0xc5ad, 0xc616, 0xc67f, 0xc6e8, 0xc751, 0xc7bb, - - 0xc824, 0xc88d, 0xc8f7, 0xc960, 0xc9ca, 0xca34, 0xca9e, 0xcb08, - 0xcb72, 0xcbdc, 0xcc47, 0xccb1, 0xcd1b, 0xcd86, 0xcdf1, 0xce5b, - 0xcec6, 0xcf31, 0xcf9c, 0xd008, 0xd073, 0xd0de, 0xd14a, 0xd1b5, - 0xd221, 0xd28d, 0xd2f8, 0xd364, 0xd3d0, 0xd43d, 0xd4a9, 0xd515, - 0xd582, 0xd5ee, 0xd65b, 0xd6c7, 0xd734, 0xd7a1, 0xd80e, 0xd87b, - 0xd8e9, 0xd956, 0xd9c3, 0xda31, 0xda9e, 0xdb0c, 0xdb7a, 0xdbe8, - 0xdc56, 0xdcc4, 0xdd32, 0xdda0, 0xde0f, 0xde7d, 0xdeec, 0xdf5b, - 0xdfc9, 0xe038, 0xe0a7, 0xe116, 0xe186, 0xe1f5, 0xe264, 0xe2d4, - - 0xe343, 0xe3b3, 0xe423, 0xe493, 0xe503, 0xe573, 0xe5e3, 0xe654, - 0xe6c4, 0xe735, 0xe7a5, 0xe816, 0xe887, 0xe8f8, 0xe969, 0xe9da, - 0xea4b, 0xeabc, 0xeb2e, 0xeb9f, 0xec11, 0xec83, 0xecf5, 0xed66, - 0xedd9, 0xee4b, 0xeebd, 0xef2f, 0xefa2, 0xf014, 0xf087, 0xf0fa, - 0xf16d, 0xf1e0, 0xf253, 0xf2c6, 0xf339, 0xf3ad, 0xf420, 0xf494, - 0xf507, 0xf57b, 0xf5ef, 0xf663, 0xf6d7, 0xf74c, 0xf7c0, 0xf834, - 0xf8a9, 0xf91e, 0xf992, 0xfa07, 0xfa7c, 0xfaf1, 0xfb66, 0xfbdc, - 0xfc51, 0xfcc7, 0xfd3c, 0xfdb2, 0xfe28, 0xfe9e, 0xff14, 0xff8a -}; - -static const u8 VolumeTable[SND_VOLUME_TABLE_SIZE] = { - 0x00, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, - 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, - 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, - 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, - 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, - 0x07, 0x07, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x09, 0x09, 0x09, 0x09, - 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0a, 0x0a, 0x0a, 0x0a, - 0x0a, 0x0a, 0x0a, 0x0a, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, - 0x0b, 0x0b, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, - 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0e, 0x0e, 0x0e, 0x0e, - 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x11, 0x11, 0x11, 0x11, 0x11, 0x12, - 0x12, 0x12, 0x12, 0x12, 0x13, 0x13, 0x13, 0x13, 0x14, 0x14, - 0x14, 0x14, 0x14, 0x15, 0x15, 0x15, 0x15, 0x16, 0x16, 0x16, - 0x16, 0x17, 0x17, 0x17, 0x18, 0x18, 0x18, 0x18, 0x19, 0x19, - 0x19, 0x19, 0x1a, 0x1a, 0x1a, 0x1b, 0x1b, 0x1b, 0x1c, 0x1c, - 0x1c, 0x1d, 0x1d, 0x1d, 0x1e, 0x1e, 0x1e, 0x1f, 0x1f, 0x1f, - 0x20, 0x20, 0x20, 0x21, 0x21, 0x22, 0x22, 0x22, 0x23, 0x23, - 0x24, 0x24, 0x24, 0x25, 0x25, 0x26, 0x26, 0x27, 0x27, 0x27, - 0x28, 0x28, 0x29, 0x29, 0x2a, 0x2a, 0x2b, 0x2b, 0x2c, 0x2c, - 0x2d, 0x2d, 0x2e, 0x2e, 0x2f, 0x2f, 0x30, 0x31, 0x31, 0x32, - 0x32, 0x33, 0x33, 0x34, 0x35, 0x35, 0x36, 0x36, 0x37, 0x38, - 0x38, 0x39, 0x3a, 0x3a, 0x3b, 0x3c, 0x3c, 0x3d, 0x3e, 0x3f, - 0x3f, 0x40, 0x41, 0x42, 0x42, 0x43, 0x44, 0x45, 0x45, 0x46, - 0x47, 0x48, 0x49, 0x4a, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, - 0x50, 0x51, 0x52, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, - 0x59, 0x5a, 0x5b, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, - 0x64, 0x65, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6d, 0x6e, 0x6f, - 0x71, 0x72, 0x73, 0x75, 0x76, 0x77, 0x79, 0x7a, 0x7b, 0x7d, - 0x7e, 0x7f, 0x20, 0x21, 0x21, 0x21, 0x22, 0x22, 0x23, 0x23, - 0x23, 0x24, 0x24, 0x25, 0x25, 0x26, 0x26, 0x26, 0x27, 0x27, - 0x28, 0x28, 0x29, 0x29, 0x2a, 0x2a, 0x2b, 0x2b, 0x2c, 0x2c, - 0x2d, 0x2d, 0x2e, 0x2e, 0x2f, 0x2f, 0x30, 0x30, 0x31, 0x31, - 0x32, 0x33, 0x33, 0x34, 0x34, 0x35, 0x36, 0x36, 0x37, 0x37, - 0x38, 0x39, 0x39, 0x3a, 0x3b, 0x3b, 0x3c, 0x3d, 0x3e, 0x3e, - 0x3f, 0x40, 0x40, 0x41, 0x42, 0x43, 0x43, 0x44, 0x45, 0x46, - 0x47, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4d, 0x4e, - 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, - 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x62, 0x63, - 0x64, 0x65, 0x66, 0x67, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6f, - 0x70, 0x71, 0x73, 0x74, 0x75, 0x77, 0x78, 0x79, 0x7b, 0x7c, - 0x7e, 0x7e, 0x40, 0x41, 0x42, 0x43, 0x43, 0x44, 0x45, 0x46, - 0x47, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4c, 0x4d, 0x4e, - 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, - 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, - 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6b, 0x6c, 0x6d, 0x6e, - 0x70, 0x71, 0x72, 0x74, 0x75, 0x76, 0x78, 0x79, 0x7b, 0x7c, - 0x7d, 0x7e, 0x40, 0x41, 0x42, 0x42, 0x43, 0x44, 0x45, 0x46, - 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4b, 0x4c, 0x4d, 0x4e, - 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, - 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, - 0x63, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6c, 0x6d, 0x6e, - 0x6f, 0x71, 0x72, 0x73, 0x75, 0x76, 0x77, 0x79, 0x7a, 0x7c, - 0x7d, 0x7e, 0x7f -}; -#endif - -const s16 SNDi_DecibelTable[SND_DECIBEL_TABLE_SIZE] = { - -32768, -421, -361, -325, -300, -281, -265, -252, - -240, -230, -221, -212, -205, -198, -192, -186, - -180, -175, -170, -165, -161, -156, -152, -148, - -145, -141, -138, -134, -131, -128, -125, -122, - -120, -117, -114, -112, -110, -107, -105, -103, - -100, -98, -96, -94, -92, -90, -88, -86, - -85, -83, -81, -79, -78, -76, -74, -73, - -71, -70, -68, -67, -65, -64, -62, -61, - -60, -58, -57, -56, -54, -53, -52, -51, - -49, -48, -47, -46, -45, -43, -42, -41, - -40, -39, -38, -37, -36, -35, -34, -33, - -32, -31, -30, -29, -28, -27, -26, -25, - -24, -23, -23, -22, -21, -20, -19, -18, - -17, -17, -16, -15, -14, -13, -12, -12, - -11, -10, -9, -9, -8, -7, -6, -6, - -5, -4, -3, -3, -2, -1, -1, 0 -}; - -const s16 SNDi_DecibelSquareTable[SND_DECIBEL_SQUARE_TABLE_SIZE] = { - -32768, -722, -721, -651, -601, -562, -530, -503, - -480, -460, -442, -425, -410, -396, -383, -371, - -360, -349, -339, -330, -321, -313, -305, -297, - -289, -282, -276, -269, -263, -257, -251, -245, - -239, -234, -229, -224, -219, -214, -210, -205, - -201, -196, -192, -188, -184, -180, -176, -173, - -169, -165, -162, -158, -155, -152, -149, -145, - -142, -139, -136, -133, -130, -127, -125, -122, - -119, -116, -114, -111, -109, -106, -103, -101, - -99, -96, -94, -91, -89, -87, -85, -82, - -80, -78, -76, -74, -72, -70, -68, -66, - -64, -62, -60, -58, -56, -54, -52, -50, - -49, -47, -45, -43, -42, -40, -38, -36, - -35, -33, -31, -30, -28, -27, -25, -23, - -22, -20, -19, -17, -16, -14, -13, -11, - -10, -8, -7, -6, -4, -3, -1, 0 -}; - -#ifdef SDK_ARM7 - -static const s8 SinTable[SND_SIN_TABLE_SIZE + 1] = { - 0, 6, 12, 19, 25, 31, 37, 43, - 49, 54, 60, 65, 71, 76, 81, 85, - 90, 94, 98, 102, 106, 109, 112, 115, - 117, 120, 122, 123, 125, 126, 126, 127, - 127 -}; - -#endif - -u16 SND_CalcTimer (int base_timer, int pitch_) { - u64 timer; - int shift = 0; - int pitch = -pitch_; - - while (pitch < 0) { - shift--; - pitch += SND_PITCH_TABLE_SIZE; - } - while (pitch >= SND_PITCH_TABLE_SIZE) { - shift++; - pitch -= SND_PITCH_TABLE_SIZE; - } - -#ifdef SND_USE_SYSTEM_ROM_TABLE - timer = SVC_GetPitchTable(pitch); -#else - timer = PitchTable[pitch]; -#endif - - timer += SND_PITCH_TABLE_BIAS; - timer *= base_timer; - - shift -= SND_PITCH_TABLE_SHIFT; - if (shift <= 0) { - timer >>= -shift; - } else if (shift < 32) { - const u64 mask = (0xffffffffffffffff << (32 - shift)); - if (timer & mask) { - return SND_CHANNEL_TIMER_MAX; - } else { - timer <<= shift; - } - } else { - return SND_CHANNEL_TIMER_MAX; - } - - if (timer < SND_CHANNEL_TIMER_MIN) { - timer = SND_CHANNEL_TIMER_MIN; - } else if (timer > SND_CHANNEL_TIMER_MAX) { - timer = SND_CHANNEL_TIMER_MAX; - } - - return (u16)timer; -} - -u16 SND_CalcChannelVolume (int dB) { - SNDChannelDataShift shift; - u8 volume; - - if (dB < SND_VOLUME_DB_MIN) { - dB = SND_VOLUME_DB_MIN; - } else if (dB > SND_VOLUME_DB_MAX) { - dB = SND_VOLUME_DB_MAX; - } - -#ifdef SND_USE_SYSTEM_ROM_TABLE - volume = SVC_GetVolumeTable(dB - SND_VOLUME_DB_MIN); -#else - volume = VolumeTable[dB - SND_VOLUME_DB_MIN]; -#endif - - if (dB < SND_VOLUME_SHIFT_2_MIN) { - shift = SND_CHANNEL_DATASHIFT_4BIT; - } else if (dB < SND_VOLUME_SHIFT_1_MIN) { - shift = SND_CHANNEL_DATASHIFT_2BIT; - } else if (dB < SND_VOLUME_SHIFT_0_MIN) { - shift = SND_CHANNEL_DATASHIFT_1BIT; - } else { - shift = SND_CHANNEL_DATASHIFT_NONE; - } - - return (u16)(shift << 8 | volume); -} - -#ifdef SDK_ARM7 - -s8 SND_SinIdx (int index) { - SDK_MINMAX_ASSERT(index, 0, SND_SIN_PERIOD - 1); - - if (index < SND_SIN_TABLE_SIZE) { - return SinTable[index]; - } - if (index < SND_SIN_TABLE_SIZE * 2) { - return SinTable[SND_SIN_TABLE_SIZE - (index - SND_SIN_TABLE_SIZE)]; - } - if (index < SND_SIN_TABLE_SIZE * 3) { - return (s8)(-SinTable[index - SND_SIN_TABLE_SIZE * 2]); - } - return (s8)(-SinTable[SND_SIN_TABLE_SIZE - (index - SND_SIN_TABLE_SIZE * 3)]); -} - -u16 SND_CalcRandom (void) { - static u32 u = 0x12345678; - u = u * 1664525 + 1013904223; - return (u16)(u >> 16); -} - -#endif diff --git a/subprojects/NitroSDK/libraries/snd/src/snd_work.c b/subprojects/NitroSDK/libraries/snd/src/snd_work.c deleted file mode 100644 index 605bd27c10..0000000000 --- a/subprojects/NitroSDK/libraries/snd/src/snd_work.c +++ /dev/null @@ -1,393 +0,0 @@ -#include - -#ifndef SDK_FROM_TOOL - -#else - -#define REG_SND_SOUND0CNT_E_SHIFT 31 -#define REG_SND_SOUND0CNT_E_SIZE 1 -#define REG_SND_SOUND0CNT_E_MASK 0x80000000 - -#define REG_SND_SOUND0CNT_FORMAT_SHIFT 29 -#define REG_SND_SOUND0CNT_FORMAT_SIZE 2 -#define REG_SND_SOUND0CNT_FORMAT_MASK 0x60000000 - -#define REG_SND_SOUND0CNT_REPEAT_SHIFT 27 -#define REG_SND_SOUND0CNT_REPEAT_SIZE 2 -#define REG_SND_SOUND0CNT_REPEAT_MASK 0x18000000 - -#define REG_SND_SOUND0CNT_DUTY_SHIFT 24 -#define REG_SND_SOUND0CNT_DUTY_SIZE 3 -#define REG_SND_SOUND0CNT_DUTY_MASK 0x07000000 - -#define REG_SND_SOUND0CNT_PAN_SHIFT 16 -#define REG_SND_SOUND0CNT_PAN_SIZE 7 -#define REG_SND_SOUND0CNT_PAN_MASK 0x007f0000 - -#define REG_SND_SOUND0CNT_HOLD_SHIFT 15 -#define REG_SND_SOUND0CNT_HOLD_SIZE 1 -#define REG_SND_SOUND0CNT_HOLD_MASK 0x00008000 - -#define REG_SND_SOUND0CNT_SHIFT_SHIFT 8 -#define REG_SND_SOUND0CNT_SHIFT_SIZE 2 -#define REG_SND_SOUND0CNT_SHIFT_MASK 0x00000300 - -#define REG_SND_SOUND0CNT_VOLUME_SHIFT 0 -#define REG_SND_SOUND0CNT_VOLUME_SIZE 7 -#define REG_SND_SOUND0CNT_VOLUME_MASK 0x0000007f - -#define SDK_ASSERT(exp) ((void)0) -#define SDK_NULL_ASSERT(exp) ((void)0) -#define SDK_MINMAX_ASSERT(exp, min, max) ((void)0) - -#endif - -SNDSharedWork * SNDi_SharedWork; - -#ifdef SDK_ARM7 - -SNDWork SNDi_Work; - -#endif - -static const void * ConvAddr(const void * p, const void * baseFrom, const void * baseTo); - -#ifndef _MSC_VER -static inline -#else -__inline -#endif -const void * ConvAddr (const void * p, const void * baseFrom, const void * baseTo) { - if (p == NULL) { - return NULL; - } - return (const char *)baseTo + ((const char *)p - (const char *)baseFrom); -} - -u32 SND_GetPlayerStatus (void) { - SDK_NULL_ASSERT(SNDi_SharedWork); - -#ifdef SDK_ARM9 - DC_InvalidateRange( - (void *)&SNDi_SharedWork->playerStatus, - sizeof(SNDi_SharedWork->playerStatus) - ); -#endif - - return SNDi_SharedWork->playerStatus; -} - -u32 SND_GetChannelStatus (void) { - SDK_NULL_ASSERT(SNDi_SharedWork); - -#ifdef SDK_ARM9 - DC_InvalidateRange( - (void *)&SNDi_SharedWork->channelStatus, - sizeof(SNDi_SharedWork->channelStatus) - ); -#endif - - return SNDi_SharedWork->channelStatus; -} - -u32 SND_GetCaptureStatus (void) { - SDK_NULL_ASSERT(SNDi_SharedWork); - -#ifdef SDK_ARM9 - DC_InvalidateRange( - (void *)&SNDi_SharedWork->captureStatus, - sizeof(SNDi_SharedWork->captureStatus) - ); -#endif - - return SNDi_SharedWork->captureStatus; -} - -u32 SND_GetPlayerTickCounter (int playerNo) { - SDK_NULL_ASSERT(SNDi_SharedWork); - SDK_MINMAX_ASSERT(playerNo, SND_PLAYER_MIN, SND_PLAYER_MAX); - -#ifdef SDK_ARM9 - DC_InvalidateRange( - (void *)&SNDi_SharedWork->player[playerNo].tickCounter, - sizeof(SNDi_SharedWork->player[playerNo].tickCounter) - ); -#endif - - return SNDi_SharedWork->player[playerNo].tickCounter; -} - -s16 SND_GetPlayerLocalVariable (int playerNo, int varNo) { - SDK_NULL_ASSERT(SNDi_SharedWork); - SDK_MINMAX_ASSERT(playerNo, SND_PLAYER_MIN, SND_PLAYER_MAX); - SDK_MINMAX_ASSERT(varNo, 0, SND_PLAYER_VARIABLE_NUM - 1); - -#ifdef SDK_ARM9 - DC_InvalidateRange( - (void *)&SNDi_SharedWork->player[playerNo].variable[varNo], - sizeof(SNDi_SharedWork->player[playerNo].variable[varNo]) - ); -#endif - - return SNDi_SharedWork->player[playerNo].variable[varNo]; -} - -s16 SND_GetPlayerGlobalVariable (int varNo) { - SDK_NULL_ASSERT(SNDi_SharedWork); - SDK_MINMAX_ASSERT(varNo, 0, SND_GLOBAL_VARIABLE_NUM - 1); - -#ifdef SDK_ARM9 - DC_InvalidateRange( - (void *)&SNDi_SharedWork->globalVariable[varNo], - sizeof(SNDi_SharedWork->globalVariable[varNo]) - ); -#endif - - return SNDi_SharedWork->globalVariable[varNo]; -} - -BOOL SND_ReadChannelInfo (const SNDDriverInfo * driverInfo, int chNo, SNDChannelInfo * chInfo) { - u32 lockedChannel; - - SDK_NULL_ASSERT(driverInfo); - SDK_NULL_ASSERT(chInfo); - - if (chNo < SND_CHANNEL_MIN || SND_CHANNEL_MAX < chNo) { - return FALSE; - } - - lockedChannel = driverInfo->lockedChannels; - chInfo->lockFlag = (lockedChannel & (1 << chNo)) ? TRUE : FALSE; - - if (chInfo->lockFlag) { - const u32 chCtrl = driverInfo->chCtrl[chNo]; - - chInfo->activeFlag = (chCtrl & REG_SND_SOUND0CNT_E_MASK) ? TRUE : FALSE; - - { - const u8 volume = - (u8)((chCtrl & REG_SND_SOUND0CNT_VOLUME_MASK) >> REG_SND_SOUND0CNT_VOLUME_SHIFT); - const SNDChannelDataShift shift = - (SNDChannelDataShift)((chCtrl & REG_SND_SOUND0CNT_SHIFT_MASK) >> - REG_SND_SOUND0CNT_SHIFT_SHIFT); - - chInfo->volume = volume; - chInfo->volume <<= 4; - switch (shift) { - case SND_CHANNEL_DATASHIFT_NONE: - break; - case SND_CHANNEL_DATASHIFT_1BIT: - chInfo->volume >>= 1; - break; - case SND_CHANNEL_DATASHIFT_2BIT: - chInfo->volume >>= 2; - break; - case SND_CHANNEL_DATASHIFT_4BIT: - chInfo->volume >>= 4; - break; - } - } - - chInfo->pan = (u8)((chCtrl & REG_SND_SOUND0CNT_PAN_MASK) >> REG_SND_SOUND0CNT_PAN_SHIFT); - } else { - const SNDExChannel * chp = &driverInfo->work.channel[chNo]; - SDK_NULL_ASSERT(chp); - - chInfo->activeFlag = chp->active_flag; - chInfo->envStatus = (SNDEnvStatus)(chp->env_status); - - { - const u8 volume = (u8)(chp->volume & 0xff); - const SNDChannelDataShift shift = (SNDChannelDataShift)(chp->volume >> 8); - - chInfo->volume = volume; - chInfo->volume <<= 4; - switch (shift) { - case SND_CHANNEL_DATASHIFT_NONE: - break; - case SND_CHANNEL_DATASHIFT_1BIT: - chInfo->volume >>= 1; - break; - case SND_CHANNEL_DATASHIFT_2BIT: - chInfo->volume >>= 2; - break; - case SND_CHANNEL_DATASHIFT_4BIT: - chInfo->volume >>= 4; - break; - } - } - - chInfo->pan = chp->pan; - } - - return TRUE; -} - -BOOL SND_ReadPlayerInfo (const SNDDriverInfo * driverInfo, int playerNo, SNDPlayerInfo * playerInfo) { - const SNDPlayer * player; - int trackNo; - - SDK_NULL_ASSERT(driverInfo); - SDK_NULL_ASSERT(playerInfo); - - if (playerNo < SND_PLAYER_MIN || SND_PLAYER_MAX < playerNo) { - return FALSE; - } - - player = &driverInfo->work.player[playerNo]; - SDK_NULL_ASSERT(player); - - playerInfo->trackBitMask = 0; - for (trackNo = 0; trackNo < SND_TRACK_NUM_PER_PLAYER; trackNo++) { - if (player->tracks[trackNo] != SND_INVALID_TRACK_INDEX) { - playerInfo->trackBitMask |= (1 << trackNo); - } - } - - playerInfo->activeFlag = player->active_flag; - playerInfo->pauseFlag = player->pause_flag; - playerInfo->tempo = player->tempo; - playerInfo->volume = player->volume; - - return TRUE; -} - -BOOL SND_ReadTrackInfo (const SNDDriverInfo * driverInfo, int playerNo, int trackNo, SNDTrackInfo * trackInfo) { - const SNDPlayer * player; - const SNDTrack * track; - u8 trackID; - - SDK_NULL_ASSERT(driverInfo); - SDK_NULL_ASSERT(trackInfo); - - if (playerNo < SND_PLAYER_MIN || SND_PLAYER_MAX < playerNo) { - return FALSE; - } - if (trackNo < 0 || SND_TRACK_NUM_PER_PLAYER - 1 < trackNo) { - return FALSE; - } - - player = &driverInfo->work.player[playerNo]; - SDK_NULL_ASSERT(player); - - trackID = player->tracks[trackNo]; - if (trackID == SND_INVALID_TRACK_INDEX) { - return FALSE; - } - - track = &driverInfo->work.track[trackID]; - SDK_NULL_ASSERT(track); - - trackInfo->prgNo = track->prgNo; - trackInfo->volume = track->volume; - trackInfo->volume2 = track->volume2; - trackInfo->pitchBend = track->pitch_bend; - trackInfo->bendRange = track->bend_range; - trackInfo->pan = (u8)(track->pan + SND_CHANNEL_PAN_CENTER); - trackInfo->transpose = track->transpose; - - { - const SNDExChannel * chp = - (const SNDExChannel *)ConvAddr( - track->channel_list, driverInfo->workAddress, - &driverInfo->work - ); - - trackInfo->chCount = 0; - while (chp != NULL) { - trackInfo->channel[trackInfo->chCount] = chp->myNo; - trackInfo->chCount++; - - chp = - (const SNDExChannel *)ConvAddr( - chp->nextLink, driverInfo->workAddress, - &driverInfo->work - ); - } - } - - return TRUE; -} - -#ifdef SDK_ARM7 - -void SND_SetPlayerLocalVariable (int playerNo, int varNo, s16 var) { - SDK_NULL_ASSERT(SNDi_SharedWork); - SDK_MINMAX_ASSERT(playerNo, SND_PLAYER_MIN, SND_PLAYER_MAX); - SDK_MINMAX_ASSERT(varNo, 0, SND_PLAYER_VARIABLE_NUM - 1); - - SNDi_SharedWork->player[playerNo].variable[varNo] = var; -} - -void SND_SetPlayerGlobalVariable (int varNo, s16 var) { - SDK_NULL_ASSERT(SNDi_SharedWork); - SDK_MINMAX_ASSERT(varNo, 0, SND_GLOBAL_VARIABLE_NUM - 1); - - SNDi_SharedWork->globalVariable[varNo] = var; -} - -void SND_UpdateSharedWork (void) { - u16 channelStatus = 0; - u16 captureStatus = 0; - int chNo; - - if (SNDi_SharedWork == NULL) { - return; - } - - for (chNo = 0; chNo < SND_CHANNEL_NUM; chNo++) { - if (SND_IsChannelActive(chNo)) { - channelStatus |= (1 << chNo); - } - } - - if (SND_IsCaptureActive(SND_CAPTURE_0)) { - captureStatus |= (1 << 0); - } - if (SND_IsCaptureActive(SND_CAPTURE_1)) { - captureStatus |= (1 << 1); - } - - SNDi_SharedWork->channelStatus = channelStatus; - SNDi_SharedWork->captureStatus = captureStatus; -} - -#endif - -u32 SNDi_GetFinishedCommandTag (void) { - SDK_NULL_ASSERT(SNDi_SharedWork); - -#ifdef SDK_ARM9 - DC_InvalidateRange( - (void *)&SNDi_SharedWork->finishCommandTag, - sizeof(SNDi_SharedWork->finishCommandTag) - ); -#endif - - return SNDi_SharedWork->finishCommandTag; -} - -#ifdef SDK_ARM9 - -void SNDi_InitSharedWork (SNDSharedWork * work) { - int playerNo, variableNo; - - work->playerStatus = 0; - work->channelStatus = 0; - work->captureStatus = 0; - work->finishCommandTag = 0; - - for (playerNo = 0; playerNo < SND_PLAYER_NUM; playerNo++) { - work->player[playerNo].tickCounter = 0; - for (variableNo = 0; variableNo < SND_PLAYER_VARIABLE_NUM; variableNo++) { - work->player[playerNo].variable[variableNo] = SND_DEFAULT_VARIABLE; - } - } - for (variableNo = 0; variableNo < SND_GLOBAL_VARIABLE_NUM; variableNo++) { - work->globalVariable[variableNo] = SND_DEFAULT_VARIABLE; - } - - DC_FlushRange(work, sizeof(SNDSharedWork)); -} - -#endif diff --git a/subprojects/NitroSDK/libraries/spi/meson.build b/subprojects/NitroSDK/libraries/spi/meson.build deleted file mode 100644 index 2e79015f16..0000000000 --- a/subprojects/NitroSDK/libraries/spi/meson.build +++ /dev/null @@ -1,17 +0,0 @@ -libspi_srcs = files( - 'src/tp.c', - 'src/mic.c', - 'src/pm.c' -) - -libspi_internal_includes = include_directories('src/include') - -libspi = static_library('spi', - sources: [libspi_srcs, fx_const_h], - c_args: [c_args, sdk_args], - include_directories: [public_includes, libspi_internal_includes], - c_pch: nitro_pch, - pic: false -) - -nitrosdk_libs += libspi diff --git a/subprojects/NitroSDK/libraries/spi/src/include/spi.h b/subprojects/NitroSDK/libraries/spi/src/include/spi.h deleted file mode 100644 index 3c1198e78f..0000000000 --- a/subprojects/NitroSDK/libraries/spi/src/include/spi.h +++ /dev/null @@ -1,523 +0,0 @@ -#ifndef LIBRARIES_SPI_H_ -#define LIBRARIES_SPI_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef SDK_ARM9 - -static inline BOOL SPI_TpSamplingNow (void) { - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_TOUCHPANEL, - SPI_PXI_START_BIT | - SPI_PXI_END_BIT | - (0 << SPI_PXI_INDEX_SHIFT) | (SPI_PXI_COMMAND_TP_SAMPLING << 8), 0 - )) { - return FALSE; - } - - return TRUE; -} - -static inline BOOL SPI_TpAutoSamplingOn (u16 vCount, u8 frequency) { - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_TOUCHPANEL, - SPI_PXI_START_BIT | - (0 << SPI_PXI_INDEX_SHIFT) | - (SPI_PXI_COMMAND_TP_AUTO_ON << 8) | (u32)frequency, 0 - )) { - return FALSE; - } - - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_TOUCHPANEL, - SPI_PXI_END_BIT | (1 << SPI_PXI_INDEX_SHIFT) | (u32)vCount, 0 - )) { - return FALSE; - } - - return TRUE; -} - -static inline BOOL SPI_TpAutoSamplingOff (void) { - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_TOUCHPANEL, - SPI_PXI_START_BIT | - SPI_PXI_END_BIT | - (0 << SPI_PXI_INDEX_SHIFT) | (SPI_PXI_COMMAND_TP_AUTO_OFF << 8), 0 - )) { - return FALSE; - } - - return TRUE; -} - -static inline BOOL SPI_TpSetupStability (u16 range) { - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_TOUCHPANEL, - SPI_PXI_START_BIT | - SPI_PXI_END_BIT | - (0 << SPI_PXI_INDEX_SHIFT) | - (SPI_PXI_COMMAND_TP_SETUP_STABILITY << 8) | (u32)range, 0 - )) { - return FALSE; - } - - return TRUE; -} - -static inline BOOL SPI_NvramWriteEnable (void) { - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_NVRAM, - SPI_PXI_START_BIT | - SPI_PXI_END_BIT | - (0 << SPI_PXI_INDEX_SHIFT) | (SPI_PXI_COMMAND_NVRAM_WREN << 8), 0 - )) { - return FALSE; - } - - return TRUE; -} - -static inline BOOL SPI_NvramWriteDisable (void) { - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_NVRAM, - SPI_PXI_START_BIT | - SPI_PXI_END_BIT | - (0 << SPI_PXI_INDEX_SHIFT) | (SPI_PXI_COMMAND_NVRAM_WRDI << 8), 0 - )) { - return FALSE; - } - - return TRUE; -} - -static inline BOOL SPI_NvramReadStatusRegister (u8 * pData) { - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_NVRAM, - SPI_PXI_START_BIT | - (0 << SPI_PXI_INDEX_SHIFT) | - (SPI_PXI_COMMAND_NVRAM_RDSR << 8) | ((u32)pData >> 24), 0 - )) { - return FALSE; - } - - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_NVRAM, - (1 << SPI_PXI_INDEX_SHIFT) | (((u32)pData >> 8) & 0x0000ffff), 0 - )) { - return FALSE; - } - - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_NVRAM, - SPI_PXI_END_BIT | - (2 << SPI_PXI_INDEX_SHIFT) | (((u32)pData << 8) & 0x0000ff00), 0 - )) { - return FALSE; - } - - return TRUE; -} - -static inline BOOL SPI_NvramReadDataBytes (u32 address, u32 size, u8 * pData) { - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_NVRAM, - SPI_PXI_START_BIT | - (0 << SPI_PXI_INDEX_SHIFT) | - (SPI_PXI_COMMAND_NVRAM_READ << 8) | - ((address >> 16) & 0x000000ff), 0 - )) { - return FALSE; - } - - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_NVRAM, - (1 << SPI_PXI_INDEX_SHIFT) | (address & 0x0000ffff), 0 - )) { - return FALSE; - } - - if (0 > PXI_SendWordByFifo(PXI_FIFO_TAG_NVRAM, (2 << SPI_PXI_INDEX_SHIFT) | (size >> 16), 0)) { - return FALSE; - } - - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_NVRAM, - (3 << SPI_PXI_INDEX_SHIFT) | (size & 0x0000ffff), 0 - )) { - return FALSE; - } - - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_NVRAM, - (4 << SPI_PXI_INDEX_SHIFT) | ((u32)pData >> 16), 0 - )) { - return FALSE; - } - - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_NVRAM, - SPI_PXI_END_BIT | - (5 << SPI_PXI_INDEX_SHIFT) | ((u32)pData & 0x0000ffff), 0 - )) { - return FALSE; - } - - return TRUE; -} - -static inline BOOL SPI_NvramReadHigherSpeed (u32 address, u32 size, u8 * pData) { - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_NVRAM, - SPI_PXI_START_BIT | - (0 << SPI_PXI_INDEX_SHIFT) | - (SPI_PXI_COMMAND_NVRAM_FAST_READ << 8) | - ((address >> 16) & 0x000000ff), 0 - )) { - return FALSE; - } - - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_NVRAM, - (1 << SPI_PXI_INDEX_SHIFT) | (address & 0x0000ffff), 0 - )) { - return FALSE; - } - - if (0 > PXI_SendWordByFifo(PXI_FIFO_TAG_NVRAM, (2 << SPI_PXI_INDEX_SHIFT) | (size >> 16), 0)) { - return FALSE; - } - - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_NVRAM, - (3 << SPI_PXI_INDEX_SHIFT) | (size & 0x0000ffff), 0 - )) { - return FALSE; - } - - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_NVRAM, - (4 << SPI_PXI_INDEX_SHIFT) | ((u32)pData >> 16), 0 - )) { - return FALSE; - } - - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_NVRAM, - SPI_PXI_END_BIT | - (5 << SPI_PXI_INDEX_SHIFT) | ((u32)pData & 0x0000ffff), 0 - )) { - return FALSE; - } - - return TRUE; -} - -static inline BOOL SPI_NvramPageWrite (u32 address, u16 size, const u8 * pData) { - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_NVRAM, - SPI_PXI_START_BIT | - (0 << SPI_PXI_INDEX_SHIFT) | - (SPI_PXI_COMMAND_NVRAM_PW << 8) | ((address >> 16) & 0x000000ff), 0 - )) { - return FALSE; - } - - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_NVRAM, - (1 << SPI_PXI_INDEX_SHIFT) | (address & 0x0000ffff), 0 - )) { - return FALSE; - } - - if (0 > PXI_SendWordByFifo(PXI_FIFO_TAG_NVRAM, (2 << SPI_PXI_INDEX_SHIFT) | (u32)size, 0)) { - return FALSE; - } - - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_NVRAM, - (3 << SPI_PXI_INDEX_SHIFT) | ((u32)pData >> 16), 0 - )) { - return FALSE; - } - - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_NVRAM, - SPI_PXI_END_BIT | - (4 << SPI_PXI_INDEX_SHIFT) | ((u32)pData & 0x0000ffff), 0 - )) { - return FALSE; - } - - return TRUE; -} - -static inline BOOL SPI_NvramPageProgram (u32 address, u16 size, const u8 * pData) { - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_NVRAM, - SPI_PXI_START_BIT | - (0 << SPI_PXI_INDEX_SHIFT) | - (SPI_PXI_COMMAND_NVRAM_PP << 8) | ((address >> 16) & 0x000000ff), 0 - )) { - return FALSE; - } - - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_NVRAM, - (1 << SPI_PXI_INDEX_SHIFT) | (address & 0x0000ffff), 0 - )) { - return FALSE; - } - - if (0 > PXI_SendWordByFifo(PXI_FIFO_TAG_NVRAM, (2 << SPI_PXI_INDEX_SHIFT) | (u32)size, 0)) { - return FALSE; - } - - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_NVRAM, - (3 << SPI_PXI_INDEX_SHIFT) | ((u32)pData >> 16), 0 - )) { - return FALSE; - } - - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_NVRAM, - SPI_PXI_END_BIT | - (4 << SPI_PXI_INDEX_SHIFT) | ((u32)pData & 0x0000ffff), 0 - )) { - return FALSE; - } - - return TRUE; -} - -static inline BOOL SPI_NvramPageErase (u32 address) { - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_NVRAM, - SPI_PXI_START_BIT | - (0 << SPI_PXI_INDEX_SHIFT) | - (SPI_PXI_COMMAND_NVRAM_PE << 8) | ((address >> 16) & 0x000000ff), 0 - )) { - return FALSE; - } - - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_NVRAM, - SPI_PXI_END_BIT | - (1 << SPI_PXI_INDEX_SHIFT) | (address & 0x0000ffff), 0 - )) { - return FALSE; - } - - return TRUE; -} - -static inline BOOL SPI_NvramSectorErase (u32 address) { - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_NVRAM, - SPI_PXI_START_BIT | - (0 << SPI_PXI_INDEX_SHIFT) | - (SPI_PXI_COMMAND_NVRAM_SE << 8) | ((address >> 16) & 0x000000ff), 0 - )) { - return FALSE; - } - - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_NVRAM, - SPI_PXI_END_BIT | - (1 << SPI_PXI_INDEX_SHIFT) | (address & 0x0000ffff), 0 - )) { - return FALSE; - } - - return TRUE; -} - -#if 0 - -static inline BOOL SPI_NvramPowerDown (void) { - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_NVRAM, - SPI_PXI_START_BIT | - SPI_PXI_END_BIT | - (0 << SPI_PXI_INDEX_SHIFT) | (SPI_PXI_COMMAND_NVRAM_DP << 8), 0 - )) { - return FALSE; - } - - return TRUE; -} - -static inline BOOL SPI_NvramReleasePowerDown (void) { - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_NVRAM, - SPI_PXI_START_BIT | - SPI_PXI_END_BIT | - (0 << SPI_PXI_INDEX_SHIFT) | (SPI_PXI_COMMAND_NVRAM_RDP << 8), 0 - )) { - return FALSE; - } - - return TRUE; -} -#endif - -static inline BOOL SPI_NvramChipErase (void) { - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_NVRAM, - SPI_PXI_START_BIT | - SPI_PXI_END_BIT | - (0 << SPI_PXI_INDEX_SHIFT) | (SPI_PXI_COMMAND_NVRAM_CE << 8), 0 - )) { - return FALSE; - } - - return TRUE; -} - -static inline BOOL SPI_NvramReadSiliconId (u8 * pData) { - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_NVRAM, - SPI_PXI_START_BIT | - (0 << SPI_PXI_INDEX_SHIFT) | - (SPI_PXI_COMMAND_NVRAM_RSI << 8) | ((u32)pData >> 24), 0 - )) { - return FALSE; - } - - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_NVRAM, - (1 << SPI_PXI_INDEX_SHIFT) | (((u32)pData >> 8) & 0x0000ffff), 0 - )) { - return FALSE; - } - - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_NVRAM, - SPI_PXI_END_BIT | - (2 << SPI_PXI_INDEX_SHIFT) | (((u32)pData << 8) & 0x0000ff00), 0 - )) { - return FALSE; - } - - return TRUE; -} - -static inline BOOL SPI_NvramSoftwareReset (void) { - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_NVRAM, - SPI_PXI_START_BIT | - SPI_PXI_END_BIT | - (0 << SPI_PXI_INDEX_SHIFT) | (SPI_PXI_COMMAND_NVRAM_SR << 8), 0 - )) { - return FALSE; - } - - return TRUE; -} - -static inline BOOL SPI_MicSamplingNow (u8 type) { - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_MIC, - SPI_PXI_START_BIT | - SPI_PXI_END_BIT | - (0 << SPI_PXI_INDEX_SHIFT) | - (SPI_PXI_COMMAND_MIC_SAMPLING << 8) | (u32)type, 0 - )) { - return FALSE; - } - - return TRUE; -} - -static inline BOOL SPI_MicAutoSamplingOn (void * pData, u32 size, u32 span, u8 adMode, BOOL loopMode, BOOL correct) { - u8 temp; - - switch (adMode) { - case SPI_MIC_SAMPLING_TYPE_8BIT: - case SPI_MIC_SAMPLING_TYPE_12BIT: - temp = adMode; - break; - default: - return FALSE; - } - if (loopMode) { - temp |= (u8)SPI_MIC_SAMPLING_TYPE_LOOP_ON; - } - if (correct) { - temp |= (u8)SPI_MIC_SAMPLING_TYPE_CORRECT_ON; - } - - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_MIC, - SPI_PXI_START_BIT | - (0 << SPI_PXI_INDEX_SHIFT) | - (SPI_PXI_COMMAND_MIC_AUTO_ON << 8) | (u32)temp, 0 - )) { - return FALSE; - } - - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_MIC, - (1 << SPI_PXI_INDEX_SHIFT) | ((u32)pData >> 16), 0 - )) { - return FALSE; - } - - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_MIC, - (2 << SPI_PXI_INDEX_SHIFT) | ((u32)pData & 0x0000ffff), 0 - )) { - return FALSE; - } - - if (0 > PXI_SendWordByFifo(PXI_FIFO_TAG_MIC, (3 << SPI_PXI_INDEX_SHIFT) | (size >> 16), 0)) { - return FALSE; - } - - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_MIC, - (4 << SPI_PXI_INDEX_SHIFT) | (size & 0x0000ffff), 0 - )) { - return FALSE; - } - - if (0 > PXI_SendWordByFifo(PXI_FIFO_TAG_MIC, (5 << SPI_PXI_INDEX_SHIFT) | (span >> 16), 0)) { - return FALSE; - } - - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_MIC, - SPI_PXI_END_BIT | - (6 << SPI_PXI_INDEX_SHIFT) | (span & 0x0000ffff), 0 - )) { - return FALSE; - } - - return TRUE; -} - -static inline BOOL SPI_MicAutoSamplingOff (void) { - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_MIC, - SPI_PXI_START_BIT | - SPI_PXI_END_BIT | - (0 << SPI_PXI_INDEX_SHIFT) | (SPI_PXI_COMMAND_MIC_AUTO_OFF << 8), 0 - )) { - return FALSE; - } - - return TRUE; -} - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/libraries/spi/src/mic.c b/subprojects/NitroSDK/libraries/spi/src/mic.c deleted file mode 100644 index 86ed2d2a40..0000000000 --- a/subprojects/NitroSDK/libraries/spi/src/mic.c +++ /dev/null @@ -1,431 +0,0 @@ -#include - -typedef enum MICLock { - MIC_LOCK_OFF = 0, - MIC_LOCK_ON, - MIC_LOCK_MAX -} MICLock; - -typedef struct MICWork { - MICLock lock; - MICCallback callback; - void * callbackArg; - MICResult commonResult; - MICCallback full; - void * fullArg; - void * dst_buf; -} MICWork; - -static u16 micInitialized; -static MICWork micWork; - -static void MicCommonCallback(PXIFifoTag tag, u32 data, BOOL err); -static BOOL MicDoSampling(u16 type); -static BOOL MicStartAutoSampling(void * buf, u32 size, u32 span, u8 flags); -static BOOL MicStopAutoSampling(void); -static BOOL MicAdjustAutoSampling(u32 span); -static void MicGetResultCallback(MICResult result, void * arg); -static void MicWaitBusy(void); - -void MIC_Init (void) { - if (micInitialized) { - return; - } - micInitialized = 1; - - micWork.lock = MIC_LOCK_OFF; - micWork.callback = NULL; - - PXI_Init(); - while (!PXI_IsCallbackReady(PXI_FIFO_TAG_MIC, PXI_PROC_ARM7)) { - } - - OS_GetSystemWork()->mic_last_address = 0; - - PXI_SetFifoRecvCallback(PXI_FIFO_TAG_MIC, MicCommonCallback); -} - -MICResult MIC_DoSamplingAsync (MICSamplingType type, void * buf, MICCallback callback, void * arg) { - OSIntrMode enabled; - u16 wtype; - - SDK_NULL_ASSERT(buf); - SDK_NULL_ASSERT(callback); - - if (type >= MIC_SAMPLING_TYPE_MAX) { - return MIC_RESULT_ILLEGAL_PARAMETER; - } - switch (type) { - case MIC_SAMPLING_TYPE_8BIT: - wtype = SPI_MIC_SAMPLING_TYPE_8BIT; - break; - case MIC_SAMPLING_TYPE_12BIT: - wtype = SPI_MIC_SAMPLING_TYPE_12BIT; - break; - case MIC_SAMPLING_TYPE_SIGNED_8BIT: - wtype = SPI_MIC_SAMPLING_TYPE_S8BIT; - break; - case MIC_SAMPLING_TYPE_SIGNED_12BIT: - wtype = SPI_MIC_SAMPLING_TYPE_S12BIT; - break; - default: - return MIC_RESULT_ILLEGAL_PARAMETER; - } - - enabled = OS_DisableInterrupts(); - if (micWork.lock != MIC_LOCK_OFF) { - (void)OS_RestoreInterrupts(enabled); - return MIC_RESULT_BUSY; - } - micWork.lock = MIC_LOCK_ON; - (void)OS_RestoreInterrupts(enabled); - - micWork.callback = callback; - micWork.callbackArg = arg; - micWork.dst_buf = buf; - if (MicDoSampling(wtype)) { - return MIC_RESULT_SUCCESS; - } - return MIC_RESULT_SEND_ERROR; -} - -MICResult MIC_DoSampling (MICSamplingType type, void * buf) { - micWork.commonResult = MIC_DoSamplingAsync(type, buf, MicGetResultCallback, NULL); - if (micWork.commonResult == MIC_RESULT_SUCCESS) { - MicWaitBusy(); - } - return micWork.commonResult; -} - -MICResult MIC_StartAutoSamplingAsync (const MICAutoParam * param, MICCallback callback, void * arg) { - OSIntrMode enabled; - u8 flags; - - SDK_NULL_ASSERT(callback); - SDK_NULL_ASSERT(param->buffer); - - { - if ((u32)(param->buffer) & 0x01f) { -#ifdef SDK_DEBUG - OS_TWarning("Parameter param->buffer must be 32-byte aligned.\n"); -#endif - return MIC_RESULT_ILLEGAL_PARAMETER; - } - - if (param->size & 0x01f) { -#ifdef SDK_DEBUG - OS_TWarning("Parameter param->size must be a multiple of 32-byte.\n"); -#endif - return MIC_RESULT_ILLEGAL_PARAMETER; - } - - if (param->size <= 0) { - return MIC_RESULT_ILLEGAL_PARAMETER; - } - - if (param->rate < MIC_SAMPLING_RATE_LIMIT) { - return MIC_RESULT_ILLEGAL_PARAMETER; - } - - switch (param->type) { - case MIC_SAMPLING_TYPE_8BIT: - flags = SPI_MIC_SAMPLING_TYPE_8BIT; - break; - case MIC_SAMPLING_TYPE_12BIT: - flags = SPI_MIC_SAMPLING_TYPE_12BIT; - break; - case MIC_SAMPLING_TYPE_SIGNED_8BIT: - flags = SPI_MIC_SAMPLING_TYPE_S8BIT; - break; - case MIC_SAMPLING_TYPE_SIGNED_12BIT: - flags = SPI_MIC_SAMPLING_TYPE_S12BIT; - break; - case MIC_SAMPLING_TYPE_12BIT_FILTER_OFF: - flags = (SPI_MIC_SAMPLING_TYPE_12BIT | SPI_MIC_SAMPLING_TYPE_FILTER_OFF); - break; - case MIC_SAMPLING_TYPE_SIGNED_12BIT_FILTER_OFF: - flags = (SPI_MIC_SAMPLING_TYPE_S12BIT | SPI_MIC_SAMPLING_TYPE_FILTER_OFF); - break; - default: - return MIC_RESULT_ILLEGAL_PARAMETER; - } - - if (param->loop_enable) { - flags = (u8)(flags | SPI_MIC_SAMPLING_TYPE_LOOP_ON); - } else { - flags = (u8)(flags | SPI_MIC_SAMPLING_TYPE_LOOP_OFF); - } - - flags = (u8)(flags | SPI_MIC_SAMPLING_TYPE_CORRECT_OFF); - } - - enabled = OS_DisableInterrupts(); - if (micWork.lock != MIC_LOCK_OFF) { - (void)OS_RestoreInterrupts(enabled); - return MIC_RESULT_BUSY; - } - micWork.lock = MIC_LOCK_ON; - (void)OS_RestoreInterrupts(enabled); - - micWork.callback = callback; - micWork.callbackArg = arg; - micWork.full = param->full_callback; - micWork.fullArg = param->full_arg; - if (MicStartAutoSampling(param->buffer, param->size, param->rate, flags)) { - return MIC_RESULT_SUCCESS; - } - return MIC_RESULT_SEND_ERROR; -} - -MICResult MIC_StartAutoSampling (const MICAutoParam * param) { - micWork.commonResult = MIC_StartAutoSamplingAsync(param, MicGetResultCallback, NULL); - if (micWork.commonResult == MIC_RESULT_SUCCESS) { - MicWaitBusy(); - } - return micWork.commonResult; -} - -MICResult MIC_StopAutoSamplingAsync (MICCallback callback, void * arg) { - OSIntrMode enabled; - - SDK_NULL_ASSERT(callback); - - enabled = OS_DisableInterrupts(); - if (micWork.lock != MIC_LOCK_OFF) { - (void)OS_RestoreInterrupts(enabled); - return MIC_RESULT_BUSY; - } - micWork.lock = MIC_LOCK_ON; - (void)OS_RestoreInterrupts(enabled); - - micWork.callback = callback; - micWork.callbackArg = arg; - if (MicStopAutoSampling()) { - return MIC_RESULT_SUCCESS; - } - return MIC_RESULT_SEND_ERROR; -} - -MICResult MIC_StopAutoSampling (void) { - micWork.commonResult = MIC_StopAutoSamplingAsync(MicGetResultCallback, NULL); - if (micWork.commonResult == MIC_RESULT_SUCCESS) { - MicWaitBusy(); - } - return micWork.commonResult; -} - -MICResult MIC_AdjustAutoSamplingAsync (u32 rate, MICCallback callback, void * arg) { - OSIntrMode enabled; - - SDK_NULL_ASSERT(callback); - - if (rate < MIC_SAMPLING_RATE_LIMIT) { - return MIC_RESULT_ILLEGAL_PARAMETER; - } - - enabled = OS_DisableInterrupts(); - if (micWork.lock != MIC_LOCK_OFF) { - (void)OS_RestoreInterrupts(enabled); - return MIC_RESULT_BUSY; - } - micWork.lock = MIC_LOCK_ON; - (void)OS_RestoreInterrupts(enabled); - - micWork.callback = callback; - micWork.callbackArg = arg; - if (MicAdjustAutoSampling(rate)) { - return MIC_RESULT_SUCCESS; - } - return MIC_RESULT_SEND_ERROR; -} - -MICResult MIC_AdjustAutoSampling (u32 rate) { - micWork.commonResult = MIC_AdjustAutoSamplingAsync(rate, MicGetResultCallback, NULL); - if (micWork.commonResult == MIC_RESULT_SUCCESS) { - MicWaitBusy(); - } - return micWork.commonResult; -} - -void * MIC_GetLastSamplingAddress (void) { - return (void *)(OS_GetSystemWork()->mic_last_address); -} - -static void MicCommonCallback (PXIFifoTag tag, u32 data, BOOL err) { -#pragma unused( tag ) - - u16 command; - u16 pxiresult; - MICResult result; - MICCallback cb; - - if (err) { - if (micWork.lock != MIC_LOCK_OFF) { - micWork.lock = MIC_LOCK_OFF; - } - if (micWork.callback) { - cb = micWork.callback; - micWork.callback = NULL; - cb(MIC_RESULT_FATAL_ERROR, micWork.callbackArg); - } - } - - command = (u16)((data & SPI_PXI_RESULT_COMMAND_MASK) >> SPI_PXI_RESULT_COMMAND_SHIFT); - pxiresult = (u16)((data & SPI_PXI_RESULT_DATA_MASK) >> SPI_PXI_RESULT_DATA_SHIFT); - - switch (pxiresult) { - case SPI_PXI_RESULT_SUCCESS: - result = MIC_RESULT_SUCCESS; - break; - case SPI_PXI_RESULT_INVALID_COMMAND: - result = MIC_RESULT_INVALID_COMMAND; - break; - case SPI_PXI_RESULT_INVALID_PARAMETER: - result = MIC_RESULT_ILLEGAL_PARAMETER; - break; - case SPI_PXI_RESULT_ILLEGAL_STATUS: - result = MIC_RESULT_ILLEGAL_STATUS; - break; - case SPI_PXI_RESULT_EXCLUSIVE: - result = MIC_RESULT_BUSY; - break; - default: - result = MIC_RESULT_FATAL_ERROR; - } - - if (command == SPI_PXI_COMMAND_MIC_BUFFER_FULL) { - if (micWork.full) { - micWork.full(result, micWork.fullArg); - } - } else { - if (command == SPI_PXI_COMMAND_MIC_SAMPLING) { - if (micWork.dst_buf) { - *(u16 *)(micWork.dst_buf) = OS_GetSystemWork()->mic_sampling_data; - } - } - - if (micWork.lock != MIC_LOCK_OFF) { - micWork.lock = MIC_LOCK_OFF; - } - - if (micWork.callback) { - cb = micWork.callback; - micWork.callback = NULL; - cb(result, micWork.callbackArg); - } - } -} - -static BOOL MicDoSampling (u16 type) { - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_MIC, - SPI_PXI_START_BIT | - SPI_PXI_END_BIT | - (0 << SPI_PXI_INDEX_SHIFT) | - (SPI_PXI_COMMAND_MIC_SAMPLING << 8) | (u32)type, 0 - )) { - return FALSE; - } - - return TRUE; -} - -static BOOL MicStartAutoSampling (void * buf, u32 size, u32 span, u8 flags) { - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_MIC, - SPI_PXI_START_BIT | - (0 << SPI_PXI_INDEX_SHIFT) | - (SPI_PXI_COMMAND_MIC_AUTO_ON << 8) | (u32)flags, 0 - )) { - return FALSE; - } - - if (0 > PXI_SendWordByFifo(PXI_FIFO_TAG_MIC, (1 << SPI_PXI_INDEX_SHIFT) | ((u32)buf >> 16), 0)) { - return FALSE; - } - - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_MIC, - (2 << SPI_PXI_INDEX_SHIFT) | ((u32)buf & 0x0000ffff), 0 - )) { - return FALSE; - } - - if (0 > PXI_SendWordByFifo(PXI_FIFO_TAG_MIC, (3 << SPI_PXI_INDEX_SHIFT) | (size >> 16), 0)) { - return FALSE; - } - - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_MIC, - (4 << SPI_PXI_INDEX_SHIFT) | (size & 0x0000ffff), 0 - )) { - return FALSE; - } - - if (0 > PXI_SendWordByFifo(PXI_FIFO_TAG_MIC, (5 << SPI_PXI_INDEX_SHIFT) | (span >> 16), 0)) { - return FALSE; - } - - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_MIC, - SPI_PXI_END_BIT | - (6 << SPI_PXI_INDEX_SHIFT) | (span & 0x0000ffff), 0 - )) { - return FALSE; - } - return TRUE; -} - -static BOOL MicStopAutoSampling (void) { - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_MIC, - SPI_PXI_START_BIT | - SPI_PXI_END_BIT | - (0 << SPI_PXI_INDEX_SHIFT) | (SPI_PXI_COMMAND_MIC_AUTO_OFF << 8), 0 - )) { - return FALSE; - } - return TRUE; -} - -static BOOL MicAdjustAutoSampling (u32 span) { - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_MIC, - SPI_PXI_START_BIT | - (0 << SPI_PXI_INDEX_SHIFT) | - (SPI_PXI_COMMAND_MIC_AUTO_ADJUST << 8), 0 - )) { - return FALSE; - } - - if (0 > PXI_SendWordByFifo(PXI_FIFO_TAG_MIC, (1 << SPI_PXI_INDEX_SHIFT) | (span >> 16), 0)) { - return FALSE; - } - - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_MIC, - SPI_PXI_END_BIT | - (2 << SPI_PXI_INDEX_SHIFT) | (span & 0x0000ffff), 0 - )) { - return FALSE; - } - return TRUE; -} - -static void MicGetResultCallback (MICResult result, void * arg) { -#pragma unused( arg ) - - micWork.commonResult = result; -} - -#include - -static asm void MicWaitBusy (void) { - ldr r12, = micWork.lock - loop: - ldr r0, [r12, #0] - cmp r0, #MIC_LOCK_ON - beq loop - bx lr -} -#include diff --git a/subprojects/NitroSDK/libraries/spi/src/pm.c b/subprojects/NitroSDK/libraries/spi/src/pm.c deleted file mode 100644 index 0fab59b9e3..0000000000 --- a/subprojects/NitroSDK/libraries/spi/src/pm.c +++ /dev/null @@ -1,856 +0,0 @@ -#include -#include -#include -#include -#include -#include - -typedef struct { - BOOL lock; - PMCallback callback; - void * callbackArg; - void * work; -} PMiWork; - -#define PMi_LCD_POWER_WAIT_MSEC 150 -#define PMi_LCD_POWER_WAIT_TICK (OS_MilliSecondsToTicks(PMi_LCD_POWER_WAIT_MSEC) * (64 * 2)) -#define PMi_LCD_SLEEP_WAIT_MSEC 110 -#define PMi_LCD_SLEEP_WAIT_TICK (OS_MilliSecondsToTicks(PMi_LCD_SLEEP_WAIT_MSEC) * (64 * 2)) - -#define PMi_STAT_BATTERY_MASK 1 - -#define PMi_SetCallback(callback, arg) \ - do { \ - PMi_Work.callback = (callback); \ - PMi_Work.callbackArg = (arg); \ - } while (0) - -inline u32 PMi_MakeData1 (u32 bit, u32 seq, u32 command, u32 data) { - return (bit) | ((seq) << SPI_PXI_INDEX_SHIFT) | ((command) << 8) | ((data) & 0xff); -} - -inline u32 PMi_MakeData2 (u32 bit, u32 seq, u32 data) { - return (bit) | ((seq) << SPI_PXI_INDEX_SHIFT) | ((data) & 0xffff); -} - -BOOL PMi_Lock(void); - -void PMi_WaitBusy(void); - -void PMi_DummyCallback(u32 result, void * arg); - -void PMi_PrependList(PMSleepCallbackInfo * * listp, PMSleepCallbackInfo * info); -void PMi_AppendList(PMSleepCallbackInfo * * listp, PMSleepCallbackInfo * info); -void PMi_DeleteList(PMSleepCallbackInfo * * listp, PMSleepCallbackInfo * info); -void PMi_ExecuteList(PMSleepCallbackInfo * listp); - -static PMCallback PMi_Callback; -static u16 PMi_IsInit = FALSE; -static PMiWork PMi_Work; -static PMData16 PMi_RegisterBuffer[PMIC_REG_NUMS]; -static volatile BOOL PMi_SyncFlag; -static volatile BOOL PMi_SleepEndFlag; - -static OSMutex PMi_Mutex; - -static u32 PMi_LCDCount; - -static PMSleepCallbackInfo * PMi_PreSleepCallbackList = NULL; -static PMSleepCallbackInfo * PMi_PostSleepCallbackList = NULL; - -static u32 PMi_SetAmp(PMAmpSwitch status); -static PMAmpSwitch sAmpSwitch = PM_AMP_OFF; - -static BOOL PMi_Lock (void) { - OSIntrMode enabled = OS_DisableInterrupts(); - if (PMi_Work.lock) { - (void)OS_RestoreInterrupts(enabled); - return FALSE; - } - PMi_Work.lock = TRUE; - (void)OS_RestoreInterrupts(enabled); - - return TRUE; -} - -extern void PXIi_HandlerRecvFifoNotEmpty(void); - -static void PMi_WaitBusy (void) { - volatile BOOL * p = &PMi_Work.lock; - - while (*p) { - if (OS_GetCpsrIrq() == OS_INTRMODE_IRQ_DISABLE) { - PXIi_HandlerRecvFifoNotEmpty(); - } - } -} - -static void PMi_DummyCallback (u32 result, void * arg) { - *(u32 *)arg = result; -} - -static void PMi_CallCallbackAndUnlock (u32 result) { - PMCallback callback; - void * arg; - - callback = PMi_Work.callback; - arg = PMi_Work.callbackArg; - - if (PMi_Work.lock) { - PMi_Work.lock = FALSE; - } - - if (callback) { - PMi_Work.callback = NULL; - (callback)(result, arg); - } -} - -void PM_Init (void) { - int i; - - if (PMi_IsInit) { - return; - } - PMi_IsInit = TRUE; - - PMi_Work.lock = FALSE; - PMi_Work.callback = NULL; - - PXI_Init(); - while (!PXI_IsCallbackReady(PXI_FIFO_TAG_PM, PXI_PROC_ARM7)) { - } - - PXI_SetFifoRecvCallback(PXI_FIFO_TAG_PM, PMi_CommonCallback); - - for (i = 0; i < PMIC_REG_NUMS; i++) { - PMi_RegisterBuffer[i].flag = FALSE; - } - - OS_InitMutex(&PMi_Mutex); - - PMi_LCDCount = OS_GetVBlankCount(); -} - -void PMi_CommonCallback (PXIFifoTag tag, u32 data, BOOL err) { -#pragma unused( tag ) - - u16 command; - u16 pxiResult; - - if (err) { - PMi_CallCallbackAndUnlock(PM_RESULT_ERROR); - return; - } - - command = (u16)((data & SPI_PXI_RESULT_COMMAND_MASK) >> SPI_PXI_RESULT_COMMAND_SHIFT); - pxiResult = (u16)((data & SPI_PXI_RESULT_DATA_MASK) >> SPI_PXI_RESULT_DATA_SHIFT); - - if (SPI_PXI_COMMAND_PM_REG0VALUE <= command && command <= SPI_PXI_COMMAND_PM_REG4VALUE) { - int num = (int)(command - SPI_PXI_COMMAND_PM_REG0VALUE); - u16 value = (u16)(pxiResult & 0xff); - u16 * buffer = PMi_RegisterBuffer[num].buffer; - - if (buffer) { - *buffer = value; - } - PMi_RegisterBuffer[num].flag = TRUE; - pxiResult = PM_RESULT_SUCCESS; - } else if (command == SPI_PXI_COMMAND_PM_SYNC) { - PMi_SyncFlag = TRUE; - } else if (command == SPI_PXI_COMMAND_PM_SLEEP_END) { - PMi_SleepEndFlag = TRUE; - } else if (command == SPI_PXI_COMMAND_PM_GET_BLINK) { - if (PMi_Work.work) { - *(u32 *)PMi_Work.work = pxiResult; - } - pxiResult = PM_RESULT_SUCCESS; - } - - PMi_CallCallbackAndUnlock(pxiResult); -} - -u32 PMi_SendSleepStart (u16 trigger, u16 keyIntrData) { - u32 pxi_send_data; - - if (!PMi_Lock()) { - return PM_BUSY; - } - - PMi_SyncFlag = 0; - pxi_send_data = - PMi_MakeData1(SPI_PXI_START_BIT | SPI_PXI_END_BIT, 0, SPI_PXI_COMMAND_PM_SYNC, 0); - PMi_SendPxiData(pxi_send_data); - - while (PMi_SyncFlag == 0) { - } - PMi_SyncFlag = 0; - PMi_SleepEndFlag = 0; - - (void)PMi_SetLCDPower(PM_LCD_POWER_OFF, PM_LED_BLINK_LOW, FALSE, TRUE); - - pxi_send_data = PMi_MakeData1(SPI_PXI_START_BIT, 0, SPI_PXI_COMMAND_PM_SLEEP_START, trigger); - PMi_SendPxiData(pxi_send_data); - - pxi_send_data = PMi_MakeData2(SPI_PXI_END_BIT, 1, keyIntrData); - PMi_SendPxiData(pxi_send_data); - - return PM_SUCCESS; -} - -u32 PM_SendUtilityCommandAsync (u32 number, PMCallback callback, void * arg) { - u32 pxi_send_data; - - if (!PMi_Lock()) { - return PM_BUSY; - } - PMi_SetCallback(callback, arg); - - pxi_send_data = PMi_MakeData1(SPI_PXI_START_BIT, 0, SPI_PXI_COMMAND_PM_UTILITY, number >> 16); - PMi_SendPxiData(pxi_send_data); - - pxi_send_data = PMi_MakeData2(SPI_PXI_END_BIT, 1, number); - PMi_SendPxiData(pxi_send_data); - - return PM_SUCCESS; -} - -u32 PM_SendUtilityCommand (u32 number) { - u32 commandResult; - u32 sendResult = PM_SendUtilityCommandAsync(number, PMi_DummyCallback, &commandResult); - if (sendResult == PM_SUCCESS) { - PMi_WaitBusy(); - return commandResult; - } - return sendResult; -} - -u32 PMi_ReadRegisterAsync (u16 registerAddr, u16 * buffer, PMCallback callback, void * arg) { - u32 pxi_send_data; - - if (!PMi_Lock()) { - return PM_BUSY; - } - PMi_SetCallback(callback, arg); - - PMi_RegisterBuffer[registerAddr].flag = FALSE; - PMi_RegisterBuffer[registerAddr].buffer = buffer; - - pxi_send_data = - PMi_MakeData1( - SPI_PXI_START_BIT | SPI_PXI_END_BIT, 0, SPI_PXI_COMMAND_PM_REG_READ, - registerAddr - ); - PMi_SendPxiData(pxi_send_data); - - return PM_SUCCESS; -} - -u32 PMi_ReadRegister (u16 registerAddr, u16 * buffer) { - u32 commandResult; - u32 sendResult = - PMi_ReadRegisterAsync(registerAddr, buffer, PMi_DummyCallback, &commandResult); - if (sendResult == PM_SUCCESS) { - PMi_WaitBusy(); - return commandResult; - } - return sendResult; -} - -u32 PMi_WriteRegisterAsync (u16 registerAddr, u16 data, PMCallback callback, void * arg) { - u32 pxi_send_data; - - if (!PMi_Lock()) { - return PM_BUSY; - } - PMi_SetCallback(callback, arg); - - pxi_send_data = PMi_MakeData1(SPI_PXI_START_BIT, 0, SPI_PXI_COMMAND_PM_REG_WRITE, registerAddr); - PMi_SendPxiData(pxi_send_data); - - pxi_send_data = PMi_MakeData2(SPI_PXI_END_BIT, 1, data); - PMi_SendPxiData(pxi_send_data); - - return PM_SUCCESS; -} - -u32 PMi_WriteRegister (u16 registerAddr, u16 data) { - u32 commandResult; - u32 sendResult = - PMi_WriteRegisterAsync(registerAddr, data, PMi_DummyCallback, &commandResult); - if (sendResult == PM_SUCCESS) { - PMi_WaitBusy(); - return commandResult; - } - return sendResult; -} - -u32 PMi_SetLEDAsync (PMLEDStatus status, PMCallback callback, void * arg) { - u32 command; - - switch (status) { - case PM_LED_ON: - command = PM_UTIL_LED_ON; - break; - case PM_LED_BLINK_HIGH: - command = PM_UTIL_LED_BLINK_HIGH_SPEED; - break; - case PM_LED_BLINK_LOW: - command = PM_UTIL_LED_BLINK_LOW_SPEED; - break; - default: - command = 0; - } - - return (command) ? PM_SendUtilityCommandAsync(command, callback, arg) : PM_INVALID_COMMAND; -} - -u32 PMi_SetLED (PMLEDStatus status) { - u32 commandResult; - u32 sendResult = PMi_SetLEDAsync(status, PMi_DummyCallback, &commandResult); - if (sendResult == PM_SUCCESS) { - PMi_WaitBusy(); - return commandResult; - } - return sendResult; -} - -u32 PM_SetBackLightAsync (PMLCDTarget target, PMBackLightSwitch sw, PMCallback callback, void * arg) { - u32 command = 0; - - if (target == PM_LCD_TOP) { - if (sw == PM_BACKLIGHT_ON) { - command = PM_UTIL_LCD2_BACKLIGHT_ON; - } - if (sw == PM_BACKLIGHT_OFF) { - command = PM_UTIL_LCD2_BACKLIGHT_OFF; - } - } else if (target == PM_LCD_BOTTOM) { - if (sw == PM_BACKLIGHT_ON) { - command = PM_UTIL_LCD1_BACKLIGHT_ON; - } - if (sw == PM_BACKLIGHT_OFF) { - command = PM_UTIL_LCD1_BACKLIGHT_OFF; - } - } else if (target == PM_LCD_ALL) { - if (sw == PM_BACKLIGHT_ON) { - command = PM_UTIL_LCD12_BACKLIGHT_ON; - } - if (sw == PM_BACKLIGHT_OFF) { - command = PM_UTIL_LCD12_BACKLIGHT_OFF; - } - } - - return (command) ? PM_SendUtilityCommandAsync(command, callback, arg) : PM_INVALID_COMMAND; -} - -u32 PM_SetBackLight (PMLCDTarget target, PMBackLightSwitch sw) { - u32 commandResult; - u32 sendResult = PM_SetBackLightAsync(target, sw, PMi_DummyCallback, &commandResult); - if (sendResult == PM_SUCCESS) { - PMi_WaitBusy(); - return commandResult; - } - return sendResult; -} - -u32 PMi_SetSoundPowerAsync (PMSoundPowerSwitch sw, PMCallback callback, void * arg) { - u32 command; - - switch (sw) { - case PM_SOUND_POWER_ON: - command = PM_UTIL_SOUND_POWER_ON; - break; - case PM_SOUND_POWER_OFF: - command = PM_UTIL_SOUND_POWER_OFF; - break; - default: - command = 0; - } - - return (command) ? PM_SendUtilityCommandAsync(command, callback, arg) : PM_INVALID_COMMAND; -} - -u32 PMi_SetSoundPower (PMSoundPowerSwitch sw) { - u32 commandResult; - u32 sendResult = PMi_SetSoundPowerAsync(sw, PMi_DummyCallback, &commandResult); - if (sendResult == PM_SUCCESS) { - PMi_WaitBusy(); - return commandResult; - } - return sendResult; -} - -u32 PMi_SetSoundVolumeAsync (PMSoundVolumeSwitch sw, PMCallback callback, void * arg) { - u32 command; - - switch (sw) { - case PM_SOUND_VOLUME_ON: - command = PM_UTIL_SOUND_VOL_CTRL_ON; - break; - case PM_SOUND_VOLUME_OFF: - command = PM_UTIL_SOUND_VOL_CTRL_OFF; - break; - default: - command = 0; - } - - return (command) ? PM_SendUtilityCommandAsync(command, callback, arg) : PM_INVALID_COMMAND; -} - -u32 PMi_SetSoundVolume (PMSoundVolumeSwitch sw) { - u32 commandResult; - u32 sendResult = PMi_SetSoundVolumeAsync(sw, PMi_DummyCallback, &commandResult); - if (sendResult == PM_SUCCESS) { - PMi_WaitBusy(); - return commandResult; - } - return sendResult; -} - -u32 PM_ForceToPowerOffAsync (PMCallback callback, void * arg) { - PMLCDPower LCDResult; - PMBackLightSwitch top; - PMBackLightSwitch bottom; - - OS_SpinWait(PMi_LCD_POWER_WAIT_TICK); - LCDResult = PM_GetLCDPower(); - if (LCDResult != PM_LCD_POWER_ON) { - (void)PM_GetBackLight(&top, &bottom); - if (top != PM_BACKLIGHT_OFF) { - (void)PM_SetBackLight(PM_LCD_TOP, PM_BACKLIGHT_OFF); - } - if (bottom != PM_BACKLIGHT_OFF) { - (void)PM_SetBackLight(PM_LCD_BOTTOM, PM_BACKLIGHT_OFF); - } - - while (!PM_SetLCDPower(PM_LCD_POWER_ON)) { - OS_SpinWait(PMi_LCD_POWER_WAIT_TICK); - } - } - - return PM_SendUtilityCommandAsync(PM_UTIL_FORCE_POWER_OFF, callback, arg); -} - -u32 PM_ForceToPowerOff (void) { - u32 commandResult; - u32 sendResult = PM_ForceToPowerOffAsync(PMi_DummyCallback, &commandResult); - if (sendResult == PM_SUCCESS) { - PMi_WaitBusy(); - return commandResult; - } - return sendResult; -} - -u32 PM_SetAmpAsync (PMAmpSwitch status, PMCallback callback, void * arg) { - return PMi_WriteRegisterAsync(REG_PMIC_OP_CTL_ADDR, (u16)status, callback, arg); -} - -u32 PM_SetAmp (PMAmpSwitch status) { - sAmpSwitch = status; - return PMi_SetAmp(status); -} - -static u32 PMi_SetAmp (PMAmpSwitch status) { - if (PM_GetLCDPower()) { - return PMi_WriteRegister(REG_PMIC_OP_CTL_ADDR, (u16)status); - } else { - return PM_RESULT_SUCCESS; - } -} - -u32 PM_SetAmpGainAsync (PMAmpGain status, PMCallback callback, void * arg) { - return PMi_WriteRegisterAsync(REG_PMIC_PGA_GAIN_ADDR, (u16)status, callback, arg); -} - -u32 PM_SetAmpGain (PMAmpGain status) { - return PMi_WriteRegister(REG_PMIC_PGA_GAIN_ADDR, (u16)status); -} - -u32 PM_GetBattery (PMBattery * batteryBuf) { - u16 reg; - u32 result; - - if ((result = PMi_ReadRegister(REG_PMIC_STAT_ADDR, ®)) == PM_SUCCESS) { - if (batteryBuf) { - *batteryBuf = - (PMBattery)(reg & PMi_STAT_BATTERY_MASK) ? PM_BATTERY_LOW : PM_BATTERY_HIGH; - } - } - - return result; -} - -u32 PM_GetBackLight (PMBackLightSwitch * top, PMBackLightSwitch * bottom) { - u16 reg; - u32 result; - - if ((result = PMi_ReadRegister(REG_PMIC_CTL_ADDR, ®)) == PM_SUCCESS) { - if (top) { - *top = (reg & PMIC_CTL_BKLT2) ? PM_BACKLIGHT_ON : PM_BACKLIGHT_OFF; - } - if (bottom) { - *bottom = (reg & PMIC_CTL_BKLT1) ? PM_BACKLIGHT_ON : PM_BACKLIGHT_OFF; - } - } - - return result; -} - -u32 PMi_GetSoundPower (PMSoundPowerSwitch * swBuf) { - u16 reg; - u32 result; - - if ((result = PMi_ReadRegister(REG_PMIC_CTL_ADDR, ®)) == PM_SUCCESS) { - if (swBuf) { - *swBuf = (reg & PMIC_CTL_SND_PWR) ? PM_SOUND_POWER_ON : PM_SOUND_POWER_OFF; - } - } - - return result; -} - -u32 PMi_GetSoundVolume (PMSoundVolumeSwitch * swBuf) { - u16 reg; - u32 result; - - if ((result = PMi_ReadRegister(REG_PMIC_CTL_ADDR, ®)) == PM_SUCCESS) { - if (swBuf) { - *swBuf = (reg & PMIC_CTL_SND_VOLCTRL) ? PM_SOUND_VOLUME_ON : PM_SOUND_VOLUME_OFF; - } - } - - return result; -} - -u32 PM_GetAmp (PMAmpSwitch * swBuf) { - u16 reg; - u32 result; - - if ((result = PMi_ReadRegister(REG_PMIC_OP_CTL_ADDR, ®)) == PM_SUCCESS) { - if (swBuf) { - *swBuf = (PMAmpSwitch)reg; - } - } - - return result; -} - -u32 PM_GetAmpGain (PMAmpGain * gainBuf) { - u16 reg; - u32 result; - - if ((result = PMi_ReadRegister(REG_PMIC_PGA_GAIN_ADDR, ®)) == PM_SUCCESS) { - if (gainBuf) { - *gainBuf = (PMAmpGain)reg; - } - } - - return result; -} - -void PMi_SendPxiData (u32 data) { - while (PXI_SendWordByFifo(PXI_FIFO_TAG_PM, data, FALSE) != PXI_FIFO_SUCCESS) { - } -} - -void PM_GoSleepMode (PMWakeUpTrigger trigger, PMLogic logic, u16 keyPattern) { - BOOL prepIrq; - OSIntrMode prepIntrMode; - OSIrqMask prepIntrMask; - BOOL powerOffFlag = FALSE; - - PMBackLightSwitch preTop; - PMBackLightSwitch preBottom; - - u32 preGX; - u32 preGXS; - PMLCDPower preLCDPower; - - PMi_ExecuteList(PMi_PreSleepCallbackList); - - prepIrq = OS_DisableIrq(); - prepIntrMode = OS_DisableInterrupts(); - prepIntrMask = OS_DisableIrqMask((1 << OS_IRQ_TABLE_MAX) - 1); - - { - OSIntrMode intr = OS_IE_FIFO_RECV | (OS_IsTickAvailable()? OS_IE_TIMER0: 0); - (void)OS_SetIrqMask(intr); - } - (void)OS_RestoreInterrupts(prepIntrMode); - (void)OS_EnableIrq(); - - if (trigger & PM_TRIGGER_CARD) { - if (MB_IsMultiBootChild()) { - trigger &= ~PM_TRIGGER_CARD; - } - } - - if (trigger & PM_TRIGGER_CARTRIDGE) { - if (!CTRDG_IsExisting()) { - trigger &= ~PM_TRIGGER_CARTRIDGE; - } - } - - preGX = reg_GX_DISPCNT; - preGXS = reg_GXS_DB_DISPCNT; - preLCDPower = PM_GetLCDPower(); - - (void)PM_GetBackLight(&preTop, &preBottom); - (void)PM_SetBackLight(PM_LCD_ALL, PM_BACKLIGHT_OFF); - - { - vu32 vcount = OS_GetVBlankCount(); - while (vcount == OS_GetVBlankCount()) { - } - vcount = OS_GetVBlankCount(); - - reg_GX_DISPCNT = reg_GX_DISPCNT & ~REG_GX_DISPCNT_MODE_MASK; - GXS_DispOff(); - - while (vcount == OS_GetVBlankCount()) { - } - vcount = OS_GetVBlankCount(); - while (vcount == OS_GetVBlankCount()) { - } - } - - { - u16 param; - param = (u16)(trigger - | preTop << PM_BACKLIGHT_RECOVER_TOP_SHIFT - | preBottom << PM_BACKLIGHT_RECOVER_BOTTOM_SHIFT); - while (PMi_SendSleepStart(param, (u16)(logic | keyPattern)) != PM_SUCCESS) { - } - } - - OS_Halt(); - - if ((trigger & PM_TRIGGER_CARD) && (OS_GetRequestIrqMask() & OS_IE_CARD_IREQ)) { - powerOffFlag = TRUE; - } - - if (!powerOffFlag) { - if (preLCDPower == PM_LCD_POWER_ON) { - (void)PMi_SetLCDPower(PM_LCD_POWER_ON, PM_LED_ON, TRUE, TRUE); - } else { - (void)PMi_SetLED(PM_LED_ON); - } - - reg_GX_DISPCNT = preGX; - reg_GXS_DB_DISPCNT = preGXS; - } - - OS_SpinWait(PMi_LCD_SLEEP_WAIT_TICK); - - (void)OS_DisableInterrupts(); - (void)OS_SetIrqMask(prepIntrMask); - (void)OS_RestoreInterrupts(prepIntrMode); - (void)OS_RestoreIrq(prepIrq); - - if (powerOffFlag) { - (void)PM_ForceToPowerOff(); - } - - PMi_ExecuteList(PMi_PostSleepCallbackList); -} - -#define PMi_WAIT_FRAME 7 - -BOOL PMi_SetLCDPower (PMLCDPower sw, PMLEDStatus led, BOOL skip, BOOL isSync) { - switch (sw) { - case PM_LCD_POWER_ON: - - if (!skip && OS_GetVBlankCount() - PMi_LCDCount <= PMi_WAIT_FRAME) { - return FALSE; - } - - if (led != PM_LED_NONE) { - if (isSync) { - (void)PMi_SetLED(led); - } else { - (void)PMi_SetLEDAsync(led, NULL, NULL); - } - } - - (void)GXi_PowerLCD(TRUE); - - (void)PMi_SetAmp(sAmpSwitch); - break; - - case PM_LCD_POWER_OFF: - - (void)PMi_SetAmp(PM_AMP_OFF); - (void)GXi_PowerLCD(FALSE); - - PMi_LCDCount = OS_GetVBlankCount(); - - if (led != PM_LED_NONE) { - if (isSync) { - (void)PMi_SetLED(led); - } else { - (void)PMi_SetLEDAsync(led, NULL, NULL); - } - } - break; - - default: - - break; - } - - return TRUE; -} - -BOOL PM_SetLCDPower (PMLCDPower sw) { - if (sw != PM_LCD_POWER_ON) { - sw = PM_LCD_POWER_OFF; - } - return PMi_SetLCDPower(sw, PM_LED_NONE, FALSE, TRUE); -} - -PMLCDPower PM_GetLCDPower (void) { - return (reg_GX_POWCNT & REG_GX_POWCNT_LCD_MASK) ? PM_LCD_POWER_ON : PM_LCD_POWER_OFF; -} - -u32 PMi_GetLCDOffCount (void) { - return PMi_LCDCount; -} - -u32 PMi_SendLEDPatternCommandAsync (PMLEDPattern pattern, PMCallback callback, void * arg) { - u32 pxi_send_data; - - if (!PMi_Lock()) { - return PM_BUSY; - } - PMi_SetCallback(callback, arg); - - pxi_send_data = - PMi_MakeData1( - SPI_PXI_START_BIT | SPI_PXI_END_BIT, 0, SPI_PXI_COMMAND_PM_SELF_BLINK, - pattern - ); - PMi_SendPxiData(pxi_send_data); - - return PM_SUCCESS; -} - -u32 PMi_SendLEDPatternCommand (PMLEDPattern pattern) { - u32 commandResult; - u32 sendResult = PMi_SendLEDPatternCommandAsync(pattern, PMi_DummyCallback, &commandResult); - if (sendResult == PM_SUCCESS) { - PMi_WaitBusy(); - return commandResult; - } - return sendResult; -} - -u32 PM_GetLEDPatternAsync (PMLEDPattern * patternBuf, PMCallback callback, void * arg) { - u32 pxi_send_data; - - if (!PMi_Lock()) { - return PM_BUSY; - } - PMi_SetCallback(callback, arg); - PMi_Work.work = (void *)patternBuf; - - pxi_send_data = - PMi_MakeData1(SPI_PXI_START_BIT | SPI_PXI_END_BIT, 0, SPI_PXI_COMMAND_PM_GET_BLINK, 0); - PMi_SendPxiData(pxi_send_data); - - return PM_SUCCESS; -} - -u32 PM_GetLEDPattern (PMLEDPattern * patternBuf) { - u32 commandResult; - u32 sendResult = PM_GetLEDPatternAsync(patternBuf, PMi_DummyCallback, &commandResult); - if (sendResult == PM_SUCCESS) { - PMi_WaitBusy(); - return commandResult; - } - return sendResult; -} - -void PMi_PrependList (PMSleepCallbackInfo * * listp, PMSleepCallbackInfo * info) { - if (!listp) { - return; - } - - info->next = *listp; - *listp = info; -} - -void PMi_AppendList (PMSleepCallbackInfo * * listp, PMSleepCallbackInfo * info) { - if (!listp) { - return; - } - - if (!*listp) { - info->next = NULL; - *listp = info; - } else { - PMSleepCallbackInfo * p = *listp; - while (p->next) { - p = p->next; - } - - info->next = p->next; - p->next = info; - } -} - -void PMi_DeleteList (PMSleepCallbackInfo * * listp, PMSleepCallbackInfo * info) { - PMSleepCallbackInfo * p = *listp; - PMSleepCallbackInfo * pre; - - if (!listp) { - return; - } - - pre = p = *listp; - while (p) { - if (p == info) { - if (p == pre) { - *listp = p->next; - } else { - pre->next = p->next; - } - break; - } - - pre = p; - p = p->next; - } -} - -void PMi_ExecuteList (PMSleepCallbackInfo * listp) { - while (listp) { - (listp->callback) (listp->arg); - - listp = listp->next; - } -} - -void PM_AppendPreSleepCallback (PMSleepCallbackInfo * info) { - PMi_AppendList(&PMi_PreSleepCallbackList, info); -} - -void PM_PrependPreSleepCallback (PMSleepCallbackInfo * info) { - PMi_PrependList(&PMi_PreSleepCallbackList, info); -} - -void PM_AppendPostSleepCallback (PMSleepCallbackInfo * info) { - PMi_AppendList(&PMi_PostSleepCallbackList, info); -} - -void PM_PrependPostSleepCallback (PMSleepCallbackInfo * info) { - PMi_PrependList(&PMi_PostSleepCallbackList, info); -} - -void PM_DeletePreSleepCallback (PMSleepCallbackInfo * info) { - PMi_DeleteList(&PMi_PreSleepCallbackList, info); -} - -void PM_DeletePostSleepCallback (PMSleepCallbackInfo * info) { - PMi_DeleteList(&PMi_PostSleepCallbackList, info); -} diff --git a/subprojects/NitroSDK/libraries/spi/src/tp.c b/subprojects/NitroSDK/libraries/spi/src/tp.c deleted file mode 100644 index a0988cf2e7..0000000000 --- a/subprojects/NitroSDK/libraries/spi/src/tp.c +++ /dev/null @@ -1,693 +0,0 @@ -#include -#include -#include - -#include "include/spi.h" - -#define TP_RAW_MAX 0x1000 -#define TP_CALIBRATE_DOT_INV_SCALE_SHIFT (28 - TP_CALIBRATE_DOT_SCALE_SHIFT) -#define TP_CALIBRATE_DOT2ORIGIN_SCALE_SHIFT (TP_CALIBRATE_DOT_SCALE_SHIFT - TP_CALIBRATE_ORIGIN_SCALE_SHIFT) - -static void TPi_TpCallback(PXIFifoTag tag, u32 data, BOOL err); - -typedef struct { - s32 x0; - s32 xDotSize; - s32 xDotSizeInv; - - s32 y0; - s32 yDotSize; - s32 yDotSizeInv; -} TPiCalibrateParam; - -#pragma warn_padding off -static struct { - TPRecvCallback callback; - TPData buf; - u16 index; - u16 frequence; - TPData * samplingBufs; - u16 bufSize; - - TPiCalibrateParam calibrate; - u16 calibrate_flg; - - vu16 state; - vu16 err_flg; - vu16 command_flg; -} tpState; -#pragma warn_padding reset - -static inline BOOL TPi_SamplingNow (void) { - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_TOUCHPANEL, - SPI_PXI_START_BIT - | SPI_PXI_END_BIT - | (0 << SPI_PXI_INDEX_SHIFT) - | (SPI_PXI_COMMAND_TP_SAMPLING << 8), 0 - )) { - return FALSE; - } - - return TRUE; -} - -static inline BOOL TPi_AutoSamplingOn (u16 vCount, u8 frequency) { - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_TOUCHPANEL, - SPI_PXI_START_BIT - | (0 << SPI_PXI_INDEX_SHIFT) - | (SPI_PXI_COMMAND_TP_AUTO_ON << 8) | (u32)frequency, 0 - )) { - return FALSE; - } - - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_TOUCHPANEL, - SPI_PXI_END_BIT | (1 << SPI_PXI_INDEX_SHIFT) | (u32)vCount, 0 - )) { - return FALSE; - } - - return TRUE; -} - -static inline BOOL TPi_AutoSamplingOff (void) { - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_TOUCHPANEL, - SPI_PXI_START_BIT - | SPI_PXI_END_BIT - | (0 << SPI_PXI_INDEX_SHIFT) - | (SPI_PXI_COMMAND_TP_AUTO_OFF << 8), 0 - )) { - return FALSE; - } - - return TRUE; -} - -static inline BOOL TPi_SetupStability (u16 range) { - if (0 > PXI_SendWordByFifo( - PXI_FIFO_TAG_TOUCHPANEL, - SPI_PXI_START_BIT - | SPI_PXI_END_BIT - | (0 << SPI_PXI_INDEX_SHIFT) - | (SPI_PXI_COMMAND_TP_SETUP_STABILITY << 8) | (u32)range, 0 - )) { - return FALSE; - } - - return TRUE; -} - -static inline void TPi_CopyTpFromSystemWork (TPData * result) { - SPITpData spi_tp; - - spi_tp.halfs[0] = *(u16 *)(&(OS_GetSystemWork()->touch_panel[0])); - spi_tp.halfs[1] = *(u16 *)(&(OS_GetSystemWork()->touch_panel[2])); - - result->x = (u16)spi_tp.e.x; - result->y = (u16)spi_tp.e.y; - result->touch = (u8)spi_tp.e.touch; - result->validity = (u8)spi_tp.e.validity; -} - -static inline void TPi_ErrorAtPxi (TPRequestCommand command) { - tpState.err_flg |= (1 << command); - - if (tpState.callback) { - (tpState.callback) (command, TP_RESULT_PXI_BUSY, 0); - } -} - -static void TPi_TpCallback (PXIFifoTag tag, u32 data, BOOL err) { -#pragma unused(tag) - - u16 result; - u16 command; - - result = (u16)(data & SPI_PXI_DATA_MASK); - command = (u16)((result & 0x7f00) >> 8); - - if (err) { - TPi_ErrorAtPxi((TPRequestCommand)command); - return; - } - - if (command == SPI_PXI_COMMAND_TP_AUTO_SAMPLING) { - tpState.index++; - if (tpState.index >= tpState.bufSize) { - tpState.index = 0; - } - - TPi_CopyTpFromSystemWork(&tpState.samplingBufs[tpState.index]); - - if (tpState.callback) { - (tpState.callback) ((TPRequestCommand)command, TP_RESULT_SUCCESS, (u8)tpState.index); - } - return; - } - - if (!(data & SPI_PXI_END_BIT)) { - return; - } - - SDK_ASSERT(result & 0x8000); - - switch ((u8)(result & 0x00ff)) { - case SPI_PXI_RESULT_SUCCESS: - - switch (command) { - case SPI_PXI_COMMAND_TP_SAMPLING: - - TPi_CopyTpFromSystemWork(&tpState.buf); - tpState.state = TP_STATE_READY; - break; - - case SPI_PXI_COMMAND_TP_AUTO_ON: - tpState.state = TP_STATE_AUTO_SAMPLING; - break; - - case SPI_PXI_COMMAND_TP_AUTO_OFF: - tpState.state = TP_STATE_READY; - break; - } - - tpState.command_flg &= ~(1 << command); - - if (tpState.callback) { - (tpState.callback) ((TPRequestCommand)command, TP_RESULT_SUCCESS, 0); - } - break; - - case SPI_PXI_RESULT_EXCLUSIVE: - result = TP_RESULT_EXCLUSIVE; - goto common; - - case SPI_PXI_RESULT_INVALID_PARAMETER: - result = TP_RESULT_INVALID_PARAMETER; - goto common; - - case SPI_PXI_RESULT_ILLEGAL_STATUS: - result = TP_RESULT_ILLEGAL_STATUS; - - common: - - tpState.err_flg |= (1 << command); - tpState.command_flg &= ~(1 << command); - - if (tpState.callback) { - (tpState.callback) ((TPRequestCommand)command, (TPRequestResult)(result & 0xff), 0); - } - break; - - case SPI_PXI_RESULT_INVALID_COMMAND: - default: - - OS_Panic("Get illegal TP command from ARM7!\n"); - return; - } -} - -void TP_Init (void) { - static u16 initial = FALSE; - - if (initial) { - return; - } - initial = TRUE; - - PXI_Init(); - - tpState.index = 0; - tpState.callback = NULL; - tpState.samplingBufs = NULL; - tpState.state = TP_STATE_READY; - tpState.calibrate_flg = FALSE; - tpState.command_flg = 0; - tpState.err_flg = 0; - - while (!PXI_IsCallbackReady(PXI_FIFO_TAG_TOUCHPANEL, PXI_PROC_ARM7)) { - } - - PXI_SetFifoRecvCallback(PXI_FIFO_TAG_TOUCHPANEL, TPi_TpCallback); -} - -BOOL TP_GetUserInfo (TPCalibrateParam * calibrate) { - NVRAMConfig * info = (NVRAMConfig *)(OS_GetSystemWork()->nvramUserInfo); - - u16 x1, y1, x2, y2, dx1, dy1, dx2, dy2; - - SDK_NULL_ASSERT(calibrate); - -#if (defined(SDK_TS) && (SDK_TS_VERSION >= 200 || SDK_NVRAM_FORMAT >= 100)) - x1 = info->ncd.tp.raw_x1; - y1 = info->ncd.tp.raw_y1; - dx1 = (u16)(info->ncd.tp.dx1); - dy1 = (u16)(info->ncd.tp.dy1); - x2 = info->ncd.tp.raw_x2; - y2 = info->ncd.tp.raw_y2; - dx2 = (u16)(info->ncd.tp.dx2); - dy2 = (u16)(info->ncd.tp.dy2); -#else - x1 = *(u16 *)(&(info->ncd.tp.calib_data[0])); - y1 = *(u16 *)(&(info->ncd.tp.calib_data[1])); - dy1 = (u16)(*(u16 *)(&(info->ncd.tp.calib_data[2])) >> 8); - dx1 = MI_ReadByte((u8 *)(&(info->ncd.tp.calib_data[2]))); - x2 = *(u16 *)(&(info->ncd.tp.calib_data[3])); - y2 = *(u16 *)(&(info->ncd.tp.calib_data[4])); - dy2 = (u16)(*(u16 *)(&(info->ncd.tp.calib_data[5])) >> 8); - dx2 = MI_ReadByte((u8 *)(&(info->ncd.tp.calib_data[5]))); -#endif - - if ((x1 == 0 && x2 == 0 && y1 == 0 && y2 == 0) || - (TP_CalcCalibrateParam(calibrate, x1, y1, dx1, dy1, x2, y2, dx2, dy2) != 0)) { - calibrate->x0 = 0; - calibrate->y0 = 0; - calibrate->xDotSize = 0; - calibrate->yDotSize = 0; - return TRUE; - } - return TRUE; -} - -void TP_SetCalibrateParam (const TPCalibrateParam * param) { - OSIntrMode enabled; - - if (param == NULL) { - tpState.calibrate_flg = FALSE; - return; - } - - enabled = OS_DisableInterrupts(); - - if (param->xDotSize != 0) { - CP_SetDiv32_32(0x10000000, (u32)param->xDotSize); - - tpState.calibrate.x0 = param->x0; - tpState.calibrate.xDotSize = param->xDotSize; - tpState.calibrate.xDotSizeInv = (s32)CP_GetDivResult32(); - } else { - tpState.calibrate.x0 = 0; - tpState.calibrate.xDotSize = 0; - tpState.calibrate.xDotSizeInv = 0; - } - - if (param->yDotSize != 0) { - CP_SetDiv32_32(0x10000000, (u32)param->yDotSize); - - tpState.calibrate.y0 = param->y0; - tpState.calibrate.yDotSize = param->yDotSize; - tpState.calibrate.yDotSizeInv = (s32)CP_GetDivResult32(); - } else { - tpState.calibrate.y0 = 0; - tpState.calibrate.yDotSize = 0; - tpState.calibrate.yDotSizeInv = 0; - } - - (void)OS_RestoreInterrupts(enabled); - - tpState.calibrate_flg = TRUE; -} - -void TP_SetCallback (TPRecvCallback callback) { - OSIntrMode enabled; - - enabled = OS_DisableInterrupts(); - tpState.callback = callback; - (void)OS_RestoreInterrupts(enabled); -} - -void TP_RequestSamplingAsync (void) { - OSIntrMode enabled; - - SDK_ASSERT(!(tpState.command_flg & TP_REQUEST_COMMAND_FLAG_SAMPLING)); - - enabled = OS_DisableInterrupts(); - - if (TPi_SamplingNow() == FALSE) { - (void)OS_RestoreInterrupts(enabled); - TPi_ErrorAtPxi(TP_REQUEST_COMMAND_SAMPLING); - return; - } - tpState.command_flg |= TP_REQUEST_COMMAND_FLAG_SAMPLING; - tpState.err_flg &= ~TP_REQUEST_COMMAND_FLAG_SAMPLING; - - (void)OS_RestoreInterrupts(enabled); -} - -u32 TP_WaitRawResult (TPData * result) { - SDK_NULL_ASSERT(result); - - TP_WaitBusy(TP_REQUEST_COMMAND_FLAG_SAMPLING); - - if (tpState.err_flg & TP_REQUEST_COMMAND_FLAG_SAMPLING) { - return 1; - } - - *result = tpState.buf; - return 0; -} - -u32 TP_GetCalibratedResult (TPData * result) { - SDK_NULL_ASSERT(result); - - if (tpState.err_flg & TP_REQUEST_COMMAND_FLAG_SAMPLING) { - return 1; - } - - *result = tpState.buf; - TP_GetCalibratedPoint(result, result); - return 0; -} - -u32 TP_WaitCalibratedResult (TPData * result) { - TP_WaitBusy(TP_REQUEST_COMMAND_FLAG_SAMPLING); - return TP_GetCalibratedResult(result); -} - -void TP_RequestAutoSamplingStartAsync (u16 vcount, u16 frequence, TPData samplingBufs[], u16 bufSize) { - u32 i; - OSIntrMode enabled; - - SDK_NULL_ASSERT(samplingBufs); - SDK_ASSERT(vcount < HW_LCD_LINES); - SDK_ASSERT(frequence != 0 && frequence <= SPI_TP_SAMPLING_FREQUENCY_MAX); - SDK_ASSERT(tpState.state == TP_STATE_READY); - SDK_ASSERT(!(tpState.command_flg & TP_REQUEST_COMMAND_FLAG_AUTO_ON)); - SDK_ASSERT(bufSize != 0); - - tpState.samplingBufs = samplingBufs; - tpState.index = 0; - tpState.frequence = frequence; - tpState.bufSize = bufSize; - - for (i = 0; i < bufSize; i++) { - tpState.samplingBufs[i].touch = TP_TOUCH_OFF; - } - - enabled = OS_DisableInterrupts(); - - if ((u8)TPi_AutoSamplingOn(vcount, (u8)frequence) == FALSE) { - (void)OS_RestoreInterrupts(enabled); - TPi_ErrorAtPxi(TP_REQUEST_COMMAND_AUTO_ON); - return; - } - tpState.command_flg |= TP_REQUEST_COMMAND_FLAG_AUTO_ON; - tpState.err_flg &= ~TP_REQUEST_COMMAND_FLAG_AUTO_ON; - - (void)OS_RestoreInterrupts(enabled); -} - -void TP_RequestAutoSamplingStopAsync (void) { - OSIntrMode enabled; - - SDK_ASSERT(tpState.state == TP_STATE_AUTO_SAMPLING); - SDK_ASSERT(!(tpState.command_flg & TP_REQUEST_COMMAND_FLAG_AUTO_OFF)); - - enabled = OS_DisableInterrupts(); - - if (TPi_AutoSamplingOff() == FALSE) { - (void)OS_RestoreInterrupts(enabled); - TPi_ErrorAtPxi(TP_REQUEST_COMMAND_AUTO_OFF); - return; - } - - tpState.command_flg |= TP_REQUEST_COMMAND_FLAG_AUTO_OFF; - tpState.err_flg &= ~TP_REQUEST_COMMAND_FLAG_AUTO_OFF; - - (void)OS_RestoreInterrupts(enabled); -} - -void TP_RequestSetStabilityAsync (u8 retry, u16 range) { -#pragma unused( retry ) - OSIntrMode enabled; - - SDK_ASSERT(range != 0); - SDK_ASSERT(range < 255); - - enabled = OS_DisableInterrupts(); - - if (TPi_SetupStability(range) == FALSE) { - (void)OS_RestoreInterrupts(enabled); - TPi_ErrorAtPxi(TP_REQUEST_COMMAND_SET_STABILITY); - return; - } - tpState.command_flg |= TP_REQUEST_COMMAND_FLAG_SET_STABILITY; - tpState.err_flg &= ~TP_REQUEST_COMMAND_FLAG_SET_STABILITY; - - (void)OS_RestoreInterrupts(enabled); -} - -void TP_GetLatestRawPointInAuto (TPData * result) { - s32 i, curr_index; - TPData * tp; - - SDK_NULL_ASSERT(result); - SDK_NULL_ASSERT(tpState.samplingBufs); - - result->validity = TP_VALIDITY_INVALID_XY; - - curr_index = tpState.index; - - if (tpState.frequence == 1 || tpState.bufSize == 1) { - *result = tpState.samplingBufs[curr_index]; - return; - } - - for (i = 0; i < tpState.frequence && i < tpState.bufSize - 1; i++) { - s32 index; - - index = curr_index - i; - if (index < 0) { - index += tpState.bufSize; - } - - tp = &tpState.samplingBufs[index]; - - if (!tp->touch) { - *result = *tp; - return; - } - - if (result->validity & TP_VALIDITY_INVALID_X) { - if (!(tp->validity & TP_VALIDITY_INVALID_X)) { - result->x = tp->x; - if (i != 0) { - result->validity &= ~TP_VALIDITY_INVALID_X; - } - } - } - - if (result->validity & TP_VALIDITY_INVALID_Y) { - if (!(tp->validity & TP_VALIDITY_INVALID_Y)) { - result->y = tp->y; - if (i != 0) { - result->validity &= ~TP_VALIDITY_INVALID_Y; - } - } - } - - if (result->validity == TP_VALIDITY_VALID) { - result->touch = TP_TOUCH_ON; - return; - } - } - - result->touch = TP_TOUCH_ON; - return; -} - -void TP_GetLatestCalibratedPointInAuto (TPData * result) { - SDK_NULL_ASSERT(result); - - TP_GetLatestRawPointInAuto(result); - - TP_GetCalibratedPoint(result, result); -} - -u16 TP_GetLatestIndexInAuto (void) { - return tpState.index; -} - -u32 TP_CalcCalibrateParam (TPCalibrateParam * calibrate, u16 raw_x1, u16 raw_y1, u16 dx1, u16 dy1, u16 raw_x2, u16 raw_y2, u16 dx2, u16 dy2) { - s32 rx_width, dx_width, ry_width, dy_width; - s32 tmp32; - OSIntrMode enabled; - -#define IN_S16_RANGE(x) ((x) < 0x8000 && (x) >= -0x8000) - - SDK_NULL_ASSERT(calibrate); - - if (raw_x1 >= TP_RAW_MAX || raw_y1 >= TP_RAW_MAX || raw_x2 >= TP_RAW_MAX - || raw_y2 >= TP_RAW_MAX) { - return 1; - } - if (dx1 >= GX_LCD_SIZE_X || dx2 >= GX_LCD_SIZE_X || dy1 >= GX_LCD_SIZE_Y - || dy2 >= GX_LCD_SIZE_Y) { - return 1; - } - if (dx1 == dx2 || dy1 == dy2 || raw_x1 == raw_x2 || raw_y1 == raw_y2) { - return 1; - } - - rx_width = raw_x1 - raw_x2; - dx_width = dx1 - dx2; - - enabled = OS_DisableInterrupts(); - - CP_SetDiv32_32(((u32)rx_width) << TP_CALIBRATE_DOT_SCALE_SHIFT, (u32)dx_width); - - ry_width = raw_y1 - raw_y2; - dy_width = dy1 - dy2; - - tmp32 = CP_GetDivResult32(); - CP_SetDiv32_32(((u32)ry_width) << TP_CALIBRATE_DOT_SCALE_SHIFT, (u32)dy_width); - - if (!IN_S16_RANGE(tmp32)) { - (void)OS_RestoreInterrupts(enabled); - return 1; - } - calibrate->xDotSize = (s16)tmp32; - tmp32 = (s16)((((s32)(raw_x1 + raw_x2) << TP_CALIBRATE_DOT_SCALE_SHIFT) - - ((s32)(dx1 + dx2) * calibrate->xDotSize)) >> (TP_CALIBRATE_DOT_SCALE_SHIFT - - TP_CALIBRATE_ORIGIN_SCALE_SHIFT + - 1)); - if (!IN_S16_RANGE(tmp32)) { - (void)OS_RestoreInterrupts(enabled); - return 1; - } - calibrate->x0 = (s16)tmp32; - - tmp32 = CP_GetDivResult32(); - (void)OS_RestoreInterrupts(enabled); - - if (!IN_S16_RANGE(tmp32)) { - return 1; - } - calibrate->yDotSize = (s16)tmp32; - tmp32 = (s16)((((s32)(raw_y1 + raw_y2) << TP_CALIBRATE_DOT_SCALE_SHIFT) - - ((s32)(dy1 + dy2) * calibrate->yDotSize)) >> (TP_CALIBRATE_DOT_SCALE_SHIFT - - TP_CALIBRATE_ORIGIN_SCALE_SHIFT + - 1)); - if (!IN_S16_RANGE(tmp32)) { - return 1; - } - calibrate->y0 = (s16)tmp32; - - return 0; -} - -void TP_GetCalibratedPoint (TPData * disp, const TPData * raw) { - TPiCalibrateParam * cal; - - enum - { MAX_X = GX_LCD_SIZE_X - 1, MAX_Y = GX_LCD_SIZE_Y - 1 }; - - SDK_NULL_ASSERT(disp); - SDK_NULL_ASSERT(raw); - SDK_NULL_ASSERT(tpState.calibrate_flg); - - if (!tpState.calibrate_flg) { - *disp = *raw; - return; - } - - cal = &tpState.calibrate; - - disp->touch = raw->touch; - disp->validity = raw->validity; - - if (raw->touch == 0) { - disp->x = 0; - disp->y = 0; - return; - } - - disp->x = - (u16)((((u64)(raw->x << TP_CALIBRATE_ORIGIN_SCALE_SHIFT) - - cal->x0) * cal->xDotSizeInv) >> (TP_CALIBRATE_DOT_INV_SCALE_SHIFT + - TP_CALIBRATE_ORIGIN_SCALE_SHIFT)); - - if ((s16)disp->x < 0) { - disp->x = 0; - } else if ((s16)disp->x > MAX_X) { - disp->x = MAX_X; - } - - disp->y = - (u16)((((u64)(raw->y << TP_CALIBRATE_ORIGIN_SCALE_SHIFT) - - cal->y0) * cal->yDotSizeInv) >> (TP_CALIBRATE_DOT_INV_SCALE_SHIFT + - TP_CALIBRATE_ORIGIN_SCALE_SHIFT)); - - if ((s16)disp->y < 0) { - disp->y = 0; - } else if ((s16)disp->y > MAX_Y) { - disp->y = MAX_Y; - } -} - -void TP_GetUnCalibratedPoint (u16 * raw_x, u16 * raw_y, u16 dx, u16 dy) { - TPiCalibrateParam * cal; - - SDK_NULL_ASSERT(raw_x); - SDK_NULL_ASSERT(raw_y); - SDK_ASSERT(tpState.calibrate_flg); - - if (!tpState.calibrate_flg) { - *raw_x = dx; - *raw_y = dy; - return; - } - - cal = &tpState.calibrate; - - *raw_x = - (u16)((((s32)(dx * cal->xDotSize) >> TP_CALIBRATE_DOT2ORIGIN_SCALE_SHIFT) + - (s32)cal->x0) >> TP_CALIBRATE_ORIGIN_SCALE_SHIFT); - *raw_y = - (u16)((((s32)(dy * cal->yDotSize) >> TP_CALIBRATE_DOT2ORIGIN_SCALE_SHIFT) + - (s32)cal->y0) >> TP_CALIBRATE_ORIGIN_SCALE_SHIFT); -} - -void TP_WaitBusy (TPRequestCommandFlag command_flgs) { -#ifdef SDK_DEBUG - if (!(tpState.command_flg & command_flgs)) { - return; - } -#endif - - SDK_ASSERT(OS_GetCpsrIrq() == OS_INTRMODE_IRQ_ENABLE); - SDK_ASSERT(reg_OS_IME == 1); - SDK_ASSERT(OS_GetIrqMask() & OS_IE_SPFIFO_RECV); - - while (tpState.command_flg & command_flgs) { - } - - return; -} - -void TP_WaitAllBusy (void) { -#ifdef SDK_DEBUG - if (!tpState.command_flg) { - return; - } -#endif - - SDK_ASSERT(OS_GetCpsrIrq() == OS_INTRMODE_IRQ_ENABLE); - SDK_ASSERT(reg_OS_IME == 1); - SDK_ASSERT(OS_GetIrqMask() & OS_IE_SPFIFO_RECV); - - while (tpState.command_flg) { - } - - return; -} - -u32 TP_CheckBusy (TPRequestCommandFlag command_flgs) { - return (u32)(tpState.command_flg & command_flgs); -} - -u32 TP_CheckError (TPRequestCommandFlag command_flgs) { - return (u32)(tpState.err_flg & command_flgs); -} diff --git a/subprojects/NitroSDK/libraries/std/meson.build b/subprojects/NitroSDK/libraries/std/meson.build deleted file mode 100644 index 9fd20f6295..0000000000 --- a/subprojects/NitroSDK/libraries/std/meson.build +++ /dev/null @@ -1,13 +0,0 @@ -libstd_srcs = files( - 'src/std_string.c', - 'src/std_sprintf.c' -) - -libstd = static_library('std', - sources: libstd_srcs, - c_args: [c_args, sdk_args], - include_directories: public_includes, - pic: false -) - -nitrosdk_libs += libstd diff --git a/subprojects/NitroSDK/libraries/std/src/std_sprintf.c b/subprojects/NitroSDK/libraries/std/src/std_sprintf.c deleted file mode 100644 index e56463ad87..0000000000 --- a/subprojects/NitroSDK/libraries/std/src/std_sprintf.c +++ /dev/null @@ -1,444 +0,0 @@ -#include - -typedef struct dst_string_tag -{ - size_t len; - char *cur; - char *base; -} dst_string; - -static void string_put_char (dst_string * p, char c) -{ - if (p->len > 0) - *p->cur = c, --p->len; - ++p->cur; -} - -static void string_fill_char (dst_string * p, char c, int n) -{ - if (n > 0) - { - size_t i, k = p->len; - if (k > (size_t) n) - k = (size_t) n; - for (i = 0; i < k; ++i) - p->cur[i] = c; - p->len -= k; - p->cur += n; - } -} - -static void string_put_string (dst_string * p, const char *s, int n) -{ - if (n > 0) - { - size_t i, k = p->len; - if (k > (size_t) n) - k = (size_t) n; - for (i = 0; i < k; ++i) - p->cur[i] = s[i]; - p->len -= k; - p->cur += n; - } -} - -SDK_WEAK_SYMBOL int STD_TSPrintf (char *dst, const char *fmt, ...) -{ - int ret; - va_list vlist; - va_start(vlist, fmt); - ret = STD_TVSNPrintf(dst, 0x7FFFFFFF, fmt, vlist); - va_end(vlist); - return ret; -} - -SDK_WEAK_SYMBOL int STD_TVSPrintf (char *dst, const char *fmt, va_list vlist) -{ - return STD_TVSNPrintf(dst, 0x7FFFFFFF, fmt, vlist); -} - -SDK_WEAK_SYMBOL int STD_TSNPrintf (char *dst, size_t len, const char *fmt, ...) -{ - int ret; - va_list vlist; - va_start(vlist, fmt); - ret = STD_TVSNPrintf(dst, len, fmt, vlist); - va_end(vlist); - return ret; -} - -SDK_WEAK_SYMBOL int STD_TVSNPrintf (char *dst, size_t len, const char *fmt, va_list vlist) -{ - char buf[24]; - int n_buf; - char prefix[2]; - int n_prefix; - - const char *s = fmt; - - dst_string str; - str.len = len, str.cur = str.base = dst; - - while (*s) - { - if ((unsigned int)(((unsigned char)*s ^ 0x20) - 0xA1) < 0x3C) - { - string_put_char(&str, *s++); - if (*s) - string_put_char(&str, *s++); - } - else if (*s != '%') - { - string_put_char(&str, *s++); - } - else - { - enum - { - flag_blank = 000001, - flag_plus = 000002, - flag_sharp = 000004, - flag_minus = 000010, - flag_zero = 000020, - flag_l1 = 000040, - flag_h1 = 000100, - flag_l2 = 000200, - flag_h2 = 000400, - flag_unsigned = 010000, - flag_end - }; - int flag = 0, width = 0, precision = -1, radix = 10; - char hex_char = 'a' - 10; - const char *p_start = s; - - for (;;) - { - switch (*++s) { - case '+': - if (s[-1] != ' ') - break; - flag |= flag_plus; - continue; - case ' ': - flag |= flag_blank; - continue; - case '-': - flag |= flag_minus; - continue; - case '0': - flag |= flag_zero; - continue; - } - break; - } - - if (*s == '*') - { - ++s, width = va_arg(vlist, int); - if (width < 0) - width = -width, flag |= flag_minus; - } - else - { - while ((*s >= '0') && (*s <= '9')) - width = (width * 10) + *s++ - '0'; - } - - if (*s == '.') - { - ++s, precision = 0; - if (*s == '*') - { - ++s, precision = va_arg(vlist, int); - if (precision < 0) - precision = -1; - } - else - { - while ((*s >= '0') && (*s <= '9')) - precision = (precision * 10) + *s++ - '0'; - } - } - - switch (*s) { - case 'h': - if (*++s != 'h') - flag |= flag_h1; - else - ++s, flag |= flag_h2; - break; - case 'l': - if (*++s != 'l') - flag |= flag_l1; - else - ++s, flag |= flag_l2; - break; - } - - switch (*s) { - case 'd': - case 'i': - goto put_integer; - case 'o': - radix = 8; - flag |= flag_unsigned; - goto put_integer; - case 'u': - flag |= flag_unsigned; - goto put_integer; - case 'X': - hex_char = 'A' - 10; - goto put_hexadecimal; - case 'x': - goto put_hexadecimal; - case 'p': - flag |= flag_sharp; - precision = 8; - goto put_hexadecimal; - case 'c': - if (precision >= 0) - goto put_invalid; - { - int c = va_arg(vlist, int); - width -= 1; - if (flag & flag_minus) - { - string_put_char(&str, (char)c); - string_fill_char(&str, ' ', width); - } - else - { - char pad = (char)((flag & flag_zero) ? '0' : ' '); - string_fill_char(&str, pad, width); - string_put_char(&str, (char)c); - } - ++s; - } - break; - - case 's': - { - int n_buf = 0; - const char *p_buf = va_arg(vlist, const char *); - if (precision < 0) - { - while (p_buf[n_buf]) - ++n_buf; - } - else - { - while ((n_buf < precision) && p_buf[n_buf]) - ++n_buf; - } - width -= n_buf; - if (flag & flag_minus) - { - string_put_string(&str, p_buf, n_buf); - string_fill_char(&str, ' ', width); - } - else - { - char pad = (char)((flag & flag_zero) ? '0' : ' '); - string_fill_char(&str, pad, width); - string_put_string(&str, p_buf, n_buf); - } - ++s; - } - break; - - case 'n': - { - int pos = str.cur - str.base; - if (flag & flag_h2) - ; - else if (flag & flag_h1) - *va_arg(vlist, signed short *) = (signed short)pos; - else if (flag & flag_l2) - *va_arg(vlist, u64 *) = (u64)pos; - else - *va_arg(vlist, signed int *) = (signed int)pos; - } - ++s; - break; - - case '%': - if (p_start + 1 != s) - goto put_invalid; - string_put_char(&str, *s++); - break; - - default: - goto put_invalid; - - put_invalid: - string_put_string(&str, p_start, s - p_start); - break; - - put_hexadecimal: - radix = 16; - flag |= flag_unsigned; - put_integer: - { - u64 val = 0; - n_prefix = 0; - - if (flag & flag_minus) - flag &= ~flag_zero; - if (precision < 0) - precision = 1; - else - flag &= ~flag_zero; - - if (flag & flag_unsigned) - { - if (flag & flag_h2) - val = va_arg(vlist, unsigned char); - else if (flag & flag_h1) - val = va_arg(vlist, unsigned short); - else if (flag & flag_l2) - val = va_arg(vlist, u64); - else - val = va_arg(vlist, unsigned long); - flag &= ~(flag_plus | flag_blank); - if (flag & flag_sharp) - { - if (radix == 16) - { - if (val != 0) - { - prefix[0] = (char)(hex_char + (10 + 'x' - 'a')); - prefix[1] = '0'; - n_prefix = 2; - } - } - else if (radix == 8) - { - prefix[0] = '0'; - n_prefix = 1; - } - } - } - else - { - if (flag & flag_h2) - val = va_arg(vlist, char); - else if (flag & flag_h1) - val = va_arg(vlist, short); - else if (flag & flag_l2) - val = va_arg(vlist, u64); - else - val = va_arg(vlist, long); - if ((val >> 32) & 0x80000000) - { - val = ~val + 1; - prefix[0] = '-'; - n_prefix = 1; - } - else - { - if (val || precision) - { - if (flag & flag_plus) - { - prefix[0] = '+'; - n_prefix = 1; - } - else if (flag & flag_blank) - { - prefix[0] = ' '; - n_prefix = 1; - } - } - } - } - n_buf = 0; - switch (radix) - { - case 8: - while (val != 0) - { - int d = (int)(val & 0x07); - val >>= 3; - buf[n_buf++] = (char)(d + '0'); - } - break; - case 10: - if ((val >> 32) == 0) - { -#if defined(SDK_CW) || defined(__MWERKS__) -#pragma optimize_for_size off -#endif - u32 v = (u32)val; - while (v != 0) - { - u32 r = v / 10; - int d = (int)(v - (r * 10)); - v = r; - buf[n_buf++] = (char)(d + '0'); - } - } - else - { - while (val != 0) - { - u64 r = val / 10; - int d = (int)(val - (r * 10)); - val = r; - buf[n_buf++] = (char)(d + '0'); - } - } - break; - case 16: - while (val != 0) - { - int d = (int)(val & 0x0f); - val >>= 4; - buf[n_buf++] = (char)((d < 10) ? (d + '0') : (d + hex_char)); - } - break; - } - if ((n_prefix > 0) && (prefix[0] == '0')) - { - n_prefix = 0; - buf[n_buf++] = '0'; - } - } - goto put_to_stream; - - put_to_stream: - { - int n_pad = precision - n_buf; - if (flag & flag_zero) - { - if (n_pad < width - n_buf - n_prefix) - n_pad = width - n_buf - n_prefix; - } - if (n_pad > 0) - width -= n_pad; - width -= n_prefix + n_buf; - if (!(flag & flag_minus)) - string_fill_char(&str, ' ', width); - while (n_prefix > 0) - string_put_char(&str, prefix[--n_prefix]); - string_fill_char(&str, '0', n_pad); - while (n_buf > 0) - string_put_char(&str, buf[--n_buf]); - if (flag & flag_minus) - string_fill_char(&str, ' ', width); - ++s; - } - break; - } - } - } - - if (str.len > 0) - { - *str.cur = '\0'; - } - else if (len > 0) - { - str.base[len - 1] = '\0'; - } - return str.cur - str.base; -} diff --git a/subprojects/NitroSDK/libraries/std/src/std_string.c b/subprojects/NitroSDK/libraries/std/src/std_string.c deleted file mode 100644 index 13abe8dea7..0000000000 --- a/subprojects/NitroSDK/libraries/std/src/std_string.c +++ /dev/null @@ -1,599 +0,0 @@ -#include - -char * STD_CopyString (char *destp, const char *srcp) -{ - char * retval = destp; - - SDK_ASSERT(destp && srcp); - - while (*srcp) - { - *destp++ = (char)*srcp++; - } - *destp = '\0'; - - return retval; -} - -int STD_CopyLStringZeroFill (char *destp, const char *srcp, int n) -{ - int i; - const char *s = srcp; - - SDK_ASSERT(destp && srcp && n >= 0); - - for (i = 0; i < n - 1; i++) - { - destp[i] = (char)*s; - if (*s) - { - s++; - } - } - destp[i] = '\0'; - - return STD_GetStringLength(srcp); -} - -int STD_CopyLString (char *destp, const char *srcp, int siz) -{ - int i; - const char *s = srcp; - - SDK_ASSERT(destp && srcp && siz >= 0); - - for (i = 0; i < siz - 1; i++) - { - destp[i] = (char)*s; - if (*s) - { - s++; - } - else - { - break; - } - } - - if ((i >= siz - 1) && (siz != 0)) - { - destp[i] = '\0'; - } - - return STD_GetStringLength(srcp); -} - -char * STD_SearchString (const char *srcp, const char *str) -{ - int i; - int n; - - SDK_ASSERT(srcp && str); - - for (i = 0; srcp[i]; i++) - { - n = 0; - while (str[n] && srcp[i + n] == str[n]) - { - n++; - } - - if (str[n] == '\0') - { - return (char *)&srcp[i]; - } - } - - return NULL; -} - -int STD_GetStringLength (const char *str) -{ - int n = 0; - while (str[n]) - { - n++; - } - return n; -} - -char * STD_ConcatenateString (char *str1, const char *str2) -{ - int n = STD_GetStringLength(str1); - (void)STD_CopyString(&str1[n], str2); - return str1; -} - -int STD_CompareString (const char *str1, const char *str2) -{ - while (*str1 == *str2 && *str1) - { - str1++; - str2++; - } - return (*str1 - *str2); -} - -int STD_CompareNString (const char *str1, const char *str2, int len) -{ - if (len) - { - int i; - for (i = 0; i < len; ++i) - { - int c = (int)(MI_ReadByte(str1 + i)); - int d = (int)(MI_ReadByte(str2 + i)); - if (c != d) - { - return (int)(c - d); - } - } - } - return 0; -} - -int STD_CompareLString (const char *str1, const char *str2) -{ - return STD_CompareNString(str1, str2, STD_GetStringLength(str2)); -} - -SDK_WEAK_SYMBOL int STD_TSScanf (const char *src, const char *fmt, ...) -{ - int ret; - va_list va; - va_start(va, fmt); - ret = STD_TVSScanf(src, fmt, va); - va_end(va); - return ret; -} - -static BOOL STDi_IsSpace (int c) -{ - return (c == '\f') || (c == '\n') || (c == '\r') || (c == '\t') || (c == '\v') || (c == ' '); -} - -inline static u32 STDi_GetBitset (const u32 *bitset, u32 i) -{ - const u32 pos = (u32)(i >> 5UL); - const u32 bit = (u32)(i & 31UL); - return ((bitset[pos] >> bit) & 1UL); -} - -inline static void STDi_SetBitset (u32 *bitset, u32 i) -{ - const u32 pos = (i >> 5UL); - const u32 bit = (i & 31UL); - bitset[pos] |= (1UL << bit); -} - -static void STDi_FillBitset (u32 *bitset, u32 a, u32 b) -{ - while (a < b) - { - const u32 pos = (u32)(a >> 5UL); - const u32 bit = (u32)(a & 31UL); - u32 mask = (~0UL << bit); - a = (pos + 1UL) * 32UL; - if (a > b) - { - mask &= (u32)((1UL << (b & 31UL)) - 1UL); - } - bitset[pos] |= mask; - } -} - -SDK_WEAK_SYMBOL int STD_TVSScanf (const char *src, const char *fmt, va_list vlist) -{ - const char *src_base = src; - BOOL matched = FALSE; - int stored = 0; - - while (*fmt) - { - char c = *fmt; - - if (STDi_IsSpace(c)) - { - while (STDi_IsSpace(*fmt)) - { - ++fmt; - } - while (STDi_IsSpace(*src)) - { - ++src; - } - continue; - } - - else if (c != '%') - { - if (c != *src) - { - break; - } - - if ((unsigned int)(((unsigned char)c ^ 0x20) - 0xA1) < 0x3C) - { - if (c != *++src) - { - break; - } - } - ++src; - ++fmt; - } - - else if (fmt[1] == '%') - { - if (c != *src) - { - break; - } - fmt += 2; - } - - else - { - enum - { - flag_plus = 000002, - flag_minus = 000010, - flag_l1 = 000040, - flag_h1 = 000100, - flag_l2 = 000200, - flag_h2 = 000400, - flag_unsigned = 010000, - flag_ignored = 020000, - flag_end - }; - u64 val = 0; - int flag = 0, width = 0, radix = 10; - int digit; - - c = *++fmt; - if (c == '*') - { - flag |= flag_ignored; - c = *++fmt; - } - - while ((c >= '0') && (c <= '9')) - { - width = (width * 10) + c - '0'; - c = *++fmt; - } - - switch (c) - { - case 'h': - c = *++fmt; - if (c != 'h') - { - flag |= flag_h1; - } - else - flag |= flag_h2, c = *++fmt; - break; - case 'l': - c = *++fmt; - if (c != 'l') - flag |= flag_l1; - else - flag |= flag_l2, c = *++fmt; - break; - } - - switch (c) { - case 'd': - radix = 10; - goto get_integer; - case 'i': - radix = -1; - goto get_integer; - case 'o': - radix = 8; - goto get_integer; - case 'u': - radix = 10; - flag |= flag_unsigned; - goto get_integer; - case 'X': - case 'x': - case 'p': - radix = 16; - flag |= flag_unsigned; - goto get_integer; - case 's': - case 'c': - goto store_string; - case '[': - goto store_char_class; - case 'n': - if (!(flag & flag_ignored)) - { - --stored; - } - val = src - src_base; - c = *++fmt; - goto store_integer; - } - - invalid: - break; - - get_integer: - ++fmt; - c = *src; - - while (STDi_IsSpace(c)) - { - c = *++src; - } - - for (;; c = *++src) - { - if (c == '+') - { - flag |= flag_plus; - } - else if (c == '-') - { - if ((flag & flag_unsigned) != 0) - { - - } - flag |= flag_minus; - } - else - { - break; - } - } - - if (radix == -1) - { - if (c != '0') - { - radix = 10; - } - else if ((src[1] == 'x') || (src[1] == 'X')) - { - radix = 16; - } - else - { - radix = 8; - } - } - - if ((radix == 16) && (c == '0') && ((src[1] == 'x') || (src[1] == 'X'))) - { - src += 2; - c = *src; - } - - if (width == 0) - { - width = 0x7FFFFFFF; - } - for (digit = 0; digit < width; ++digit) - { - u32 d = (u32)(c - '0'); - if (d >= 10) - { - d -= (u32)('a' - '0'); - if (d < 6) - { - d += 10; - } - else - { - d -= (u32)('A' - 'a'); - if (d < 6) - { - d += 10; - } - } - } - if (d >= radix) - { - break; - } - c = *++src; - val = val * radix + d; - } - - if (digit == 0) - { - break; - } - - if (flag & flag_minus) - { - val = (u64)(val * -1); - } - - matched = TRUE; - store_integer: - - if (!(flag & flag_ignored)) - { - ++stored; - if (flag & flag_h2) - { - *va_arg(vlist, u8 *) = (u8)val; - } - else if (flag & flag_h1) - { - *va_arg(vlist, u16 *) = (u16)val; - } - else if (flag & flag_l2) - { - *va_arg(vlist, u64 *) = (u64)val; - } - else - { - *va_arg(vlist, u32 *) = (u32)val; - } - } - continue; - - store_string: - { - char *dst = NULL; - ++fmt; - - matched = TRUE; - if (!(flag & flag_ignored)) - { - ++stored; - dst = va_arg(vlist, char *); - } - - if (c == 's') - { - if (width == 0) - { - width = 0x7FFFFFFF; - } - for (c = *src; STDi_IsSpace(c); c = *++src) - { - } - for (; c && !STDi_IsSpace(c) && (width > 0); --width, c = *++src) - { - if (dst) - { - *dst++ = c; - } - } - if (dst) - { - *dst++ = '\0'; - } - } - else - { - if (width == 0) - { - width = 1; - } - for (c = *src; c && (width > 0); --width, c = *++src) - { - if (dst) - { - *dst++ = c; - } - } - if (dst && (width > 0)) - { - *dst++ = '\0'; - } - } - } - continue; - - store_char_class: - ++fmt; - - { - char *dst = NULL; - - u32 bitset[256 / (8 * sizeof(u32))]; - u32 matchcond = 1; - u32 from = 0; - BOOL in_range = FALSE; - MI_CpuFill32(bitset, 0x00000000UL, sizeof(bitset)); - if (*fmt == '^') - { - matchcond = 0; - ++fmt; - } - - if (*fmt == ']') - { - STDi_SetBitset(bitset, (u8)*fmt); - ++fmt; - } - - for (;; ++fmt) - { - if (!*fmt || (*fmt == ']')) - { - if (in_range) - { - STDi_SetBitset(bitset, from); - STDi_SetBitset(bitset, (u32)'-'); - } - if (*fmt == ']') - { - ++fmt; - } - break; - } - - else if (!in_range) - { - if ((from != 0) && (*fmt == '-')) - { - in_range = TRUE; - } - else - { - STDi_SetBitset(bitset, (u8)*fmt); - from = (u8)*fmt; - } - } - - else - { - u32 to = (u8)*fmt; - - if (from > to) - { - STDi_SetBitset(bitset, from); - STDi_SetBitset(bitset, (u32)'-'); - STDi_SetBitset(bitset, to); - } - - else - { - STDi_FillBitset(bitset, from, to + 1UL); - } - in_range = FALSE; - from = 0; - } - } - - matched = TRUE; - if (!(flag & flag_ignored)) - { - ++stored; - dst = va_arg(vlist, char *); - } - if (width == 0) - { - width = 0x7FFFFFFF; - } - for (c = *src; c && (width > 0); --width, c = *++src) - { - if (STDi_GetBitset(bitset, (u8)c) != matchcond) - { - break; - } - if (dst) - { - *dst++ = c; - } - } - if (dst) - { - *dst++ = '\0'; - } - } - continue; - - } - } - - return (*src || matched) ? stored : -1; -} diff --git a/subprojects/NitroSDK/libraries/wm/meson.build b/subprojects/NitroSDK/libraries/wm/meson.build deleted file mode 100644 index b1dad5a398..0000000000 --- a/subprojects/NitroSDK/libraries/wm/meson.build +++ /dev/null @@ -1,23 +0,0 @@ -libwm_srcs = files( - 'src/wm_system.c', - 'src/wm_sync.c', - 'src/wm_standard.c', - 'src/wm_mp.c', - 'src/wm_dcf.c', - 'src/wm_ds.c', - 'src/wm_ks.c', - 'src/wm_etc.c' -) - -libwm_internal_includes = include_directories('src/include') - -libwm = static_library('wm', - sources: [libwm_srcs, fx_const_h], - c_args: [c_args, sdk_args], - nasm_args: asm_args, - include_directories: [public_includes, libwm_internal_includes], - c_pch: nitro_pch, - pic: false -) - -nitrosdk_libs += libwm diff --git a/subprojects/NitroSDK/libraries/wm/src/include/wm_arm9_private.h b/subprojects/NitroSDK/libraries/wm/src/include/wm_arm9_private.h deleted file mode 100644 index ee41301af3..0000000000 --- a/subprojects/NitroSDK/libraries/wm/src/include/wm_arm9_private.h +++ /dev/null @@ -1,93 +0,0 @@ -#ifndef LIBRARIES_WM_ARM9_WM_ARM9_PRIVATE_H__ -#define LIBRARIES_WM_ARM9_WM_ARM9_PRIVATE_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -#include "wm_private.h" - -#define WM_GET_ALLOWED_CHANNEL_BEFORE_INIT 0x8000 - -#define WM_CHECK_RESULT(res) \ - if ((res) != WM_ERRCODE_SUCCESS) \ - { \ - return (res); \ - } - -#ifdef WM_DEBUG_DATASHARING -#define WM_DPRINTF_DATASHARING WMi_Printf -#else -#define WM_DPRINTF_DATASHARING(...) ((void)0) -#endif -#ifdef WM_DEBUG_CALLBACK -#define WM_DPRINTF_CALLBACK WMi_Printf -#else -#define WM_DPRINTF_CALLBACK(...) ((void)0) -#endif -#ifdef WM_DEBUG_AIDBITMAP -#define WM_DPRINTF_AIDBITMAP WMi_Printf -#else -#define WM_DPRINTF_AIDBITMAP(...) ((void)0) -#endif - -#define WMi_LOG(cat, msg) \ - do {s32 _SDK_WM_vcount = GX_GetVCount(); (void)WMi_Printf("%02x:%03d| " cat msg "\n", ((OS_GetVBlankCount() + (_SDK_WM_vcount < 192)) & 0xff), _SDK_WM_vcount);} while (FALSE) - -#define WMi_LOGF(cat, msg, ...) \ - do {s32 _SDK_WM_vcount = GX_GetVCount(); (void)WMi_Printf("%02x:%03d| " cat msg "\n", ((OS_GetVBlankCount() + (_SDK_WM_vcount < 192)) & 0xff), _SDK_WM_vcount, __VA_ARGS__);} while (FALSE) - -#define WM_LOG(msg) WMi_LOG("", msg) -#define WM_LOGF(msg, ...) WMi_LOGF("", msg, __VA_ARGS__) - -#ifdef WM_DEBUG -#define WM_DLOG WM_LOG -#define WM_DLOGF WM_LOGF -#else -#define WM_DLOG(...) ((void)0) -#define WM_DLOGF(...) ((void)0) -#endif -#ifdef WM_DEBUG_DATASHARING -#define WM_DLOG_DATASHARING(msg) WMi_LOG("[DS]", msg); -#define WM_DLOGF_DATASHARING(msg, ...) WMi_LOGF("[DS]", msg, __VA_ARGS__); -#else -#define WM_DLOG_DATASHARING(...) ((void)0) -#define WM_DLOGF_DATASHARING(...) ((void)0) -#endif -#ifdef WM_DEBUG_CALLBACK -#define WM_DLOG_CALLBACK WM_LOG -#define WM_DLOGF_CALLBACK WM_LOGF -#define WM_DLOGF2_CALLBACK(from, msg, ...) \ - do {s32 _SDK_WM_vcount = GX_GetVCount(); (void)WMi_Printf("%02x:%03d-%03d| " msg "\n", ((OS_GetVBlankCount() + (_SDK_WM_vcount < 192)) & 0xff), from, _SDK_WM_vcount, __VA_ARGS__);} while (FALSE) - -#else -#define WM_DLOG_CALLBACK(...) ((void)0) -#define WM_DLOGF_CALLBACK(...) ((void)0) -#define WM_DLOGF2_CALLBACK(...) ((void)0) -#endif -#ifdef WM_DEBUG_AIDBITMAP -#define WM_DLOG_AIDBITMAP(msg) WMi_LOG("[AID]", msg); -#define WM_DLOGF_AIDBITMAP(msg, ...) WMi_LOGF("[AID]", msg, __VA_ARGS__); -#else -#define WM_DLOG_AIDBITMAP(...) ((void)0) -#define WM_DLOGF_AIDBITMAP(...) ((void)0) -#endif - -void WMi_SetCallbackTable(WMApiid id, WMCallbackFunc callback); -WMErrCode WMi_SendCommand(WMApiid id, u16 paramNum, ...); -WMErrCode WMi_SendCommandDirect(void * data, u32 length); -WMArm9Buf * WMi_GetSystemWork(void); -WMErrCode WMi_CheckStateEx(s32 paramNum, ...); -WMErrCode WMi_CheckInitialized(void); -WMErrCode WMi_CheckIdle(void); -WMErrCode WMi_StartMP(WMCallbackFunc callback, u16 * recvBuf, u16 recvBufSize, u16 * sendBuf, u16 sendBufSize, WMMPTmpParam * tmpParam); - -static inline WMErrCode WMi_CheckState (u32 state) { - return WMi_CheckStateEx(1, state); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSDK/libraries/wm/src/include/wm_private.h b/subprojects/NitroSDK/libraries/wm/src/include/wm_private.h deleted file mode 100644 index f9cc43aa92..0000000000 --- a/subprojects/NitroSDK/libraries/wm/src/include/wm_private.h +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -#ifndef LIBRARIES_WM_PRIVATE_H_ -#define LIBRARIES_WM_PRIVATE_H_ - -#ifdef __cplusplus -extern "C" { -#endif - - - - -#include - -#ifdef SDK_ARM7 -#include -#endif - - - - - - - - - - - - - - -#ifdef SDK_DEBUG -#define WM_WARNING(...) \ - ( (void) ( WMi_Warning(__FILE__, __LINE__, __VA_ARGS__) ) ) -#else -#define WM_WARNING(...) ((void) 0) -#endif - -#ifdef WM_DEBUG -#define WM_ASSERT(exp) \ - ( (void) ( (exp) || (WMi_Warning(__FILE__, __LINE__, "Failed assertion " #exp), 0) ) ) -#define WM_ASSERTMSG(exp, ...) \ - ( (void) ( (exp) || (WMi_Warning(__FILE__, __LINE__, __VA_ARGS__), 0) ) ) -#define WM_DPRINTF WMi_Printf -#else -#define WM_ASSERT(exp) ((void) 0) -#define WM_ASSERTMSG(...) ((void) 0) -#define WM_DPRINTF(...) ((void) 0) -#endif - -#ifndef SDK_FINALROM -#define WMi_Printf OS_TPrintf -#define WMi_Warning OSi_TWarning -#else -#define WMi_Printf(...) ((void) 0) -#define WMi_Warning(...) ((void) 0) -#endif - - - - -#ifdef __cplusplus -} -#endif - -#endif - - - - diff --git a/subprojects/NitroSDK/libraries/wm/src/wm_dcf.c b/subprojects/NitroSDK/libraries/wm/src/wm_dcf.c deleted file mode 100644 index 2e1f4444f4..0000000000 --- a/subprojects/NitroSDK/libraries/wm/src/wm_dcf.c +++ /dev/null @@ -1,96 +0,0 @@ -#include - -#include "wm_arm9_private.h" - -WMErrCode WM_StartDCF (WMCallbackFunc callback, WMDcfRecvBuf * recvBuf, u16 recvBufSize) { - WMErrCode result; - WMArm9Buf * p = WMi_GetSystemWork(); - - result = WMi_CheckState(WM_STATE_CHILD); - WM_CHECK_RESULT(result); - - DC_InvalidateRange(&(p->status->dcf_flag), 4); - if (p->status->dcf_flag == TRUE) { - WM_WARNING("Already DCF mode. So can't start DCF again.\n"); - return WM_ERRCODE_ILLEGAL_STATE; - } - - if (recvBufSize < 16) { - WM_WARNING("Parameter \"recvBufSize\" must not be less than %d.\n", 16); - return WM_ERRCODE_INVALID_PARAM; - } - if (recvBuf == NULL) { - WM_WARNING("Parameter \"recvBuf\" must not be NULL.\n"); - return WM_ERRCODE_INVALID_PARAM; - } - if ((u32)recvBuf & 0x01f) { - WM_WARNING("Parameter \"recvBuf\" is not 32-byte aligned.\n"); - } - - DC_StoreRange(recvBuf, recvBufSize); - - WMi_SetCallbackTable(WM_APIID_START_DCF, callback); - - result = WMi_SendCommand(WM_APIID_START_DCF, 2, (u32)recvBuf, (u32)recvBufSize); - WM_CHECK_RESULT(result); - - return WM_ERRCODE_OPERATING; -} - -WMErrCode WM_SetDCFData (WMCallbackFunc callback, const u8 * destAdr, const u16 * sendData, u16 sendDataSize) { - WMErrCode result; - WMArm9Buf * p = WMi_GetSystemWork(); - u32 wMac[2]; - - result = WMi_CheckState(WM_STATE_DCF_CHILD); - WM_CHECK_RESULT(result); - - DC_InvalidateRange(&(p->status->dcf_flag), 4); - if (p->status->dcf_flag == FALSE) { - WM_WARNING("It is not DCF mode now.\n"); - return WM_ERRCODE_ILLEGAL_STATE; - } - - if (sendDataSize > WM_DCF_MAX_SIZE) { - WM_WARNING("Parameter \"sendDataSize\" is over %d.\n", WM_DCF_MAX_SIZE); - return WM_ERRCODE_INVALID_PARAM; - } - if ((u32)sendData & 0x01f) { - WM_WARNING("Parameter \"sendData\" is not 32-byte aligned.\n"); - } - - DC_StoreRange((void *)sendData, sendDataSize); - - WMi_SetCallbackTable(WM_APIID_SET_DCF_DATA, callback); - - MI_CpuCopy8(destAdr, wMac, 6); - - result = WMi_SendCommand( - WM_APIID_SET_DCF_DATA, 4, - (u32)wMac[0], (u32)wMac[1], (u32)sendData, (u32)sendDataSize - ); - WM_CHECK_RESULT(result); - - return WM_ERRCODE_OPERATING; -} - -WMErrCode WM_EndDCF (WMCallbackFunc callback) { - WMErrCode result; - WMArm9Buf * p = WMi_GetSystemWork(); - - result = WMi_CheckState(WM_STATE_DCF_CHILD); - WM_CHECK_RESULT(result); - - DC_InvalidateRange(&(p->status->dcf_flag), 4); - if (p->status->dcf_flag == FALSE) { - WM_WARNING("It is not DCF mode now.\n"); - return WM_ERRCODE_ILLEGAL_STATE; - } - - WMi_SetCallbackTable(WM_APIID_END_DCF, callback); - - result = WMi_SendCommand(WM_APIID_END_DCF, 0); - WM_CHECK_RESULT(result); - - return WM_ERRCODE_OPERATING; -} diff --git a/subprojects/NitroSDK/libraries/wm/src/wm_ds.c b/subprojects/NitroSDK/libraries/wm/src/wm_ds.c deleted file mode 100644 index e596208938..0000000000 --- a/subprojects/NitroSDK/libraries/wm/src/wm_ds.c +++ /dev/null @@ -1,612 +0,0 @@ -#include - -#include "wm_arm9_private.h" - -static void WmDataSharingSetDataCallback(void * callback); -static void WmDataSharingReceiveCallback_Parent(void * callback); -static void WmDataSharingReceiveCallback_Child(void * callback); -static void WmDataSharingReceiveData(WMDataSharingInfo * dsInfo, u16 aid, u16 * data); -static void WmDataSharingSendDataSet(WMDataSharingInfo * dsInfo, BOOL delayed); -static u16 * WmGetSharedDataAddress(WMDataSharingInfo * dsInfo, u32 aidBitmap, u16 * receiveBuf, u32 aid); - -static inline u16 WmDataSharingGetNextIndex (u32 index) { - return (u16)((index + 1) % WM_DS_DATASET_NUM); -} - -static inline u16 WmDataSharingGetPrevIndex (u32 index) { - return (u16)((index + WM_DS_DATASET_NUM - 1) % WM_DS_DATASET_NUM); -} - -WMErrCode WM_StartDataSharing (WMDataSharingInfo * dsInfo, u16 port, u16 aidBitmap, u16 dataLength, BOOL doubleMode) { - WMErrCode result; - int aid; - u16 connectedAIDs = 0x0001; - - result = WMi_CheckStateEx(2, WM_STATE_MP_PARENT, WM_STATE_MP_CHILD); - WM_CHECK_RESULT(result); - - if (dsInfo == NULL) { - WM_WARNING("Parameter \"dsInfo\" must not be NULL.\n"); - return WM_ERRCODE_INVALID_PARAM; - } - if (port >= WM_NUM_OF_PORT) { - WM_WARNING("Parameter \"port\" must be less than %d.\n", WM_NUM_OF_PORT); - return WM_ERRCODE_INVALID_PARAM; - } - if ((u32)dsInfo & 0x01f) { - WM_WARNING("Parameter \"dsInfo\" is not 32-byte aligned.\n"); - } - if (aidBitmap == 0) { - WM_WARNING("Parameter \"aidBitmap\" must not be 0.\n"); - return WM_ERRCODE_INVALID_PARAM; - } - - aid = WM_GetAID(); - if (aid == 0) { - connectedAIDs = WM_GetConnectedAIDs(); - } - - MI_CpuClearFast(dsInfo, sizeof(WMDataSharingInfo)); - dsInfo->writeIndex = 0; - dsInfo->sendIndex = 0; - dsInfo->readIndex = 0; - dsInfo->dataLength = dataLength; - dsInfo->port = port; - dsInfo->aidBitmap = 0; - dsInfo->doubleMode = (u16)((doubleMode) ? TRUE : FALSE); - - aidBitmap |= (1 << aid); - dsInfo->aidBitmap = aidBitmap; - - { - u16 count = MATH_CountPopulation(aidBitmap); - dsInfo->stationNumber = count; - dsInfo->dataSetLength = (u16)(dataLength * count); - - if (dsInfo->dataSetLength > WM_DS_DATA_SIZE) { - dsInfo->aidBitmap = 0; - WM_WARNING( - "Total size of sharing data must be less than or equal to %d bytes.\n", - WM_DS_DATA_SIZE - ); - return WM_ERRCODE_INVALID_PARAM; - } - dsInfo->dataSetLength += 4; - } - - dsInfo->state = WM_DS_STATE_START; - - if (aid == 0) { - int i; - - for (i = 0; i < WM_DS_DATASET_NUM; i++) { - dsInfo->ds[i].aidBitmap = (u16)(dsInfo->aidBitmap & (connectedAIDs | 0x0001)); - } - - (void)WM_SetPortCallback(port, WmDataSharingReceiveCallback_Parent, (void *)dsInfo); - - for (i = 0; i < ((dsInfo->doubleMode == TRUE) ? 2 : 1); i++) { - int res; - - dsInfo->writeIndex = WmDataSharingGetNextIndex(dsInfo->writeIndex); - res = - WM_SetMPDataToPortEx( - WmDataSharingSetDataCallback, dsInfo, (u16 *)&dsInfo->ds[i], - dsInfo->dataSetLength, - (u16)(dsInfo->aidBitmap & connectedAIDs), dsInfo->port, - WM_PRIORITY_HIGH - ); - if (res == WM_ERRCODE_NO_CHILD) { - dsInfo->seqNum[i] = 0xffff; - dsInfo->sendIndex = WmDataSharingGetNextIndex(dsInfo->sendIndex); - } else { - if (res != WM_ERRCODE_SUCCESS && res != WM_ERRCODE_OPERATING) { - WM_WARNING("WM_SetMPDataToPort failed during data-sharing. errcode=%x\n", res); - dsInfo->state = WM_DS_STATE_ERROR; - return WM_ERRCODE_FAILED; - } - } - } - } else { - dsInfo->sendIndex = (u16)(WM_DS_DATASET_NUM - 1); - (void)WM_SetPortCallback(port, WmDataSharingReceiveCallback_Child, (void *)dsInfo); - } - - return WM_ERRCODE_SUCCESS; -} - -WMErrCode WM_EndDataSharing (WMDataSharingInfo * dsInfo) { - if (dsInfo == NULL) { - WM_WARNING("Parameter \"dsInfo\" must not be NULL.\n"); - return WM_ERRCODE_INVALID_PARAM; - } - - if (dsInfo->aidBitmap == 0) { - WM_WARNING("It is not data-sharing mode now.\n"); - return WM_ERRCODE_ILLEGAL_STATE; - } - - (void)WM_SetPortCallback(dsInfo->port, NULL, NULL); - dsInfo->aidBitmap = 0; - dsInfo->state = WM_DS_STATE_READY; - - return WM_ERRCODE_SUCCESS; -} - -WMErrCode WM_StepDataSharing (WMDataSharingInfo * dsInfo, const u16 * sendData, WMDataSet * receiveData) { - WMErrCode result; - u16 aid; - u16 connectedAIDs; - u16 state; - - result = WMi_CheckStateEx(2, WM_STATE_MP_PARENT, WM_STATE_MP_CHILD); - WM_CHECK_RESULT(result); - - if (dsInfo == NULL) { - WM_WARNING("Parameter \"dsInfo\" must not be NULL.\n"); - return WM_ERRCODE_INVALID_PARAM; - } - if (sendData == NULL) { - WM_WARNING("Parameter \"sendData\" must not be NULL.\n"); - return WM_ERRCODE_INVALID_PARAM; - } - if (receiveData == NULL) { - WM_WARNING("Parameter \"receiveData\" must not be NULL.\n"); - return WM_ERRCODE_INVALID_PARAM; - } - - aid = WM_GetAID(); - if (aid == 0) { - connectedAIDs = WM_GetConnectedAIDs(); - } - - state = dsInfo->state; - if (state == WM_DS_STATE_ERROR) { - WM_WARNING("An error occurred during data-sharing.\n"); - return WM_ERRCODE_FAILED; - } - if (state != WM_DS_STATE_START && state != WM_DS_STATE_RETRY_SEND) { - WM_WARNING("It is not data-sharing mode now.\n"); - return WM_ERRCODE_ILLEGAL_STATE; - } - - result = WM_ERRCODE_NO_DATASET; - - if (aid == 0) { - BOOL sendFlag = FALSE; - BOOL delayed = FALSE; - - if (state == WM_DS_STATE_RETRY_SEND) { - int res; - int oldWI; - dsInfo->state = WM_DS_STATE_START; - - WM_DLOG_DATASHARING("send queue was full. do retry."); - - oldWI = WmDataSharingGetPrevIndex(dsInfo->writeIndex); - res = - WM_SetMPDataToPortEx( - WmDataSharingSetDataCallback, dsInfo, - (u16 *)&dsInfo->ds[oldWI], dsInfo->dataSetLength, - (u16)(dsInfo->aidBitmap & connectedAIDs), dsInfo->port, - WM_PRIORITY_HIGH - ); - if (res == WM_ERRCODE_NO_CHILD) { - WM_DLOGF_DATASHARING( - "sent ds : write: %d, read: %d, send: %d\n", - dsInfo->writeIndex, dsInfo->readIndex, dsInfo->sendIndex - ); - dsInfo->seqNum[oldWI] = 0xffff; - dsInfo->sendIndex = WmDataSharingGetNextIndex(dsInfo->sendIndex); - } else { - if (res != WM_ERRCODE_SUCCESS && res != WM_ERRCODE_OPERATING) { - WM_WARNING("WM_SetMPDataToPort failed during data-sharing. errcode=%x\n", res); - dsInfo->state = WM_DS_STATE_ERROR; - return WM_ERRCODE_FAILED; - } - } - } - - if (dsInfo->readIndex != dsInfo->sendIndex) { - WM_DLOGF_DATASHARING( - "read ds : write: %d, read: %d, send: %d, seq#: %d", - dsInfo->writeIndex, dsInfo->readIndex, dsInfo->sendIndex, - dsInfo->seqNum[dsInfo->readIndex] - ); - - dsInfo->ds[dsInfo->readIndex].aidBitmap |= 0x0001; - MI_CpuCopy16(&dsInfo->ds[dsInfo->readIndex], receiveData, sizeof(WMDataSet)); - dsInfo->currentSeqNum = dsInfo->seqNum[dsInfo->readIndex]; - dsInfo->readIndex = WmDataSharingGetNextIndex(dsInfo->readIndex); - - sendFlag = TRUE; - result = WM_ERRCODE_SUCCESS; - if (dsInfo->doubleMode == FALSE && connectedAIDs != 0 - && dsInfo->ds[dsInfo->writeIndex].aidBitmap == 0x0001) { - delayed = TRUE; - } else { - delayed = FALSE; - } - } - - WmDataSharingSendDataSet(dsInfo, FALSE); - - if (sendFlag) { - WM_DLOGF_DATASHARING( - "send data : write: %d, read: %d, send: %d", dsInfo->writeIndex, - dsInfo->readIndex, dsInfo->sendIndex - ); - - WmDataSharingReceiveData(dsInfo, 0, (u16 *)sendData); - - if (dsInfo->doubleMode == FALSE) { - WmDataSharingSendDataSet(dsInfo, delayed); - } - } - } else { - BOOL sendFlag = FALSE; - - if (state == WM_DS_STATE_RETRY_SEND) { - sendFlag = TRUE; - dsInfo->state = WM_DS_STATE_START; - WM_DLOG_DATASHARING("send queue was full. do retry."); - } else { - if (dsInfo->readIndex != dsInfo->writeIndex) { - if (!(dsInfo->ds[dsInfo->readIndex].aidBitmap & 0x0001)) { - dsInfo->ds[dsInfo->readIndex].aidBitmap |= 0x0001; - } else { - WM_DLOGF_DATASHARING( - "read ds : write: %d, read: %d, send: %d, seq#: %d", - dsInfo->writeIndex, dsInfo->readIndex, dsInfo->sendIndex, - dsInfo->seqNum[dsInfo->readIndex] - ); - MI_CpuCopy16(&dsInfo->ds[dsInfo->readIndex], receiveData, sizeof(WMDataSet)); - dsInfo->currentSeqNum = dsInfo->seqNum[dsInfo->readIndex]; - dsInfo->readIndex = WmDataSharingGetNextIndex(dsInfo->readIndex); - - sendFlag = TRUE; - result = WM_ERRCODE_SUCCESS; - } - } - } - - if (sendFlag) { - int res; - - u16 * buf = (u16 *)(((u8 *)&dsInfo->ds[dsInfo->sendIndex]) + 32); - - WM_DLOGF_DATASHARING( - "send data : write: %d, read: %d, send: %d", dsInfo->writeIndex, - dsInfo->readIndex, dsInfo->sendIndex - ); - - MI_CpuCopy16(sendData, buf, dsInfo->dataLength); - res = - WM_SetMPDataToPortEx( - WmDataSharingSetDataCallback, dsInfo, buf, dsInfo->dataLength, - dsInfo->aidBitmap, dsInfo->port, WM_PRIORITY_HIGH - ); - dsInfo->sendIndex = WmDataSharingGetNextIndex(dsInfo->sendIndex); - if (res != WM_ERRCODE_OPERATING && res != WM_ERRCODE_SUCCESS) { - WM_WARNING("WM_SetMPDataToPort failed during data-sharing. errcode=%x\n", res); - dsInfo->state = WM_DS_STATE_ERROR; - result = WM_ERRCODE_FAILED; - } - } - } - - return result; -} - -static void WmDataSharingSetDataCallback (void * callback) { - WMArm9Buf * p = WMi_GetSystemWork(); - WMPortSendCallback * cb_Port = (WMPortSendCallback *)callback; - WMDataSharingInfo * dsInfo; - u16 aid; - - dsInfo = (WMDataSharingInfo *)(p->portCallbackArgument[cb_Port->port]); - if ((p->portCallbackTable[cb_Port->port] != WmDataSharingReceiveCallback_Parent - && p->portCallbackTable[cb_Port->port] != WmDataSharingReceiveCallback_Child) - || dsInfo == NULL || dsInfo != (WMDataSharingInfo *)(cb_Port->arg)) { - WM_WARNING("data-sharing has already terminated."); - return; - } - - aid = WM_GetAID(); - - if (cb_Port->errcode == WM_ERRCODE_SUCCESS) { - if (aid == 0) { - WM_DLOGF_DATASHARING( - "sent ds : write: %d, read: %d, send: %d", dsInfo->writeIndex, - dsInfo->readIndex, dsInfo->sendIndex - ); - - dsInfo->seqNum[dsInfo->sendIndex] = (u16)(cb_Port->seqNo >> 1); - dsInfo->sendIndex = WmDataSharingGetNextIndex(dsInfo->sendIndex); - } else { - WM_DLOGF_DATASHARING( - "sent data : write: %d, read: %d, send: %d", dsInfo->writeIndex, - dsInfo->readIndex, dsInfo->sendIndex - ); - } - } else { - if (cb_Port->errcode == WM_ERRCODE_SEND_QUEUE_FULL) { - if (aid != 0) { - dsInfo->sendIndex = WmDataSharingGetPrevIndex(dsInfo->sendIndex); - } - dsInfo->state = WM_DS_STATE_RETRY_SEND; - WM_DLOG_DATASHARING("send queue is full. will retry."); - } else { - WM_WARNING( - "WM_SetMPDataToPort failed during data-sharing. errcode=%x\n", - cb_Port->errcode - ); - dsInfo->state = WM_DS_STATE_ERROR; - } - } -} - -static void WmDataSharingReceiveCallback_Parent (void * callback) { - WMPortRecvCallback * cb_Port = (WMPortRecvCallback *)callback; - WMDataSharingInfo * dsInfo = (WMDataSharingInfo *)cb_Port->arg; - - if (dsInfo == NULL) { - WM_WARNING("data-sharing has already terminated."); - return; - } - - if (cb_Port->errcode == WM_ERRCODE_SUCCESS) { - switch (cb_Port->state) { - case WM_STATECODE_PORT_RECV: - - WmDataSharingReceiveData(dsInfo, cb_Port->aid, cb_Port->data); - WmDataSharingSendDataSet(dsInfo, FALSE); - break; - - case WM_STATECODE_CONNECTED: - WmDataSharingSendDataSet(dsInfo, FALSE); - break; - - case WM_STATECODE_DISCONNECTED: - case WM_STATECODE_DISCONNECTED_FROM_MYSELF: - { - u32 aidBit; - u32 writeIndex; - OSIntrMode enabled; - aidBit = 1U << cb_Port->aid; - enabled = OS_DisableInterrupts(); - writeIndex = dsInfo->writeIndex; - dsInfo->ds[writeIndex].aidBitmap &= ~aidBit; - if (dsInfo->doubleMode == TRUE) { - dsInfo->ds[WmDataSharingGetNextIndex(writeIndex)].aidBitmap &= ~aidBit; - } - (void)OS_RestoreInterrupts(enabled); - WmDataSharingSendDataSet(dsInfo, FALSE); - if (dsInfo->doubleMode == TRUE) { - WmDataSharingSendDataSet(dsInfo, FALSE); - } - } - break; - - case WM_STATECODE_PORT_INIT: - break; - } - } else { - WM_WARNING( - "An unknown receiving error occured during data-sharing. errcode=%x\n", - cb_Port->errcode - ); - dsInfo->state = WM_DS_STATE_ERROR; - } -} - -static void WmDataSharingReceiveCallback_Child (void * callback) { - WMPortRecvCallback * cb_Port = (WMPortRecvCallback *)callback; - WMDataSharingInfo * dsInfo = (WMDataSharingInfo *)cb_Port->arg; - - if (dsInfo == NULL) { - WM_WARNING("data-sharing has already terminated."); - return; - } - - if (cb_Port->errcode == WM_ERRCODE_SUCCESS) { - switch (cb_Port->state) { - case WM_STATECODE_PORT_RECV: - { - u32 length; - u32 aid; - u32 aidBitmap; - WMDataSet * dataSet; - - WM_DLOGF_DATASHARING( - "recv ds : write: %d, read: %d, send: %d", - dsInfo->writeIndex, dsInfo->readIndex, dsInfo->sendIndex - ); - - dataSet = (WMDataSet *)(cb_Port->data); - aidBitmap = dataSet->aidBitmap; - length = cb_Port->length; - aid = WM_GetAID(); - - if (length != dsInfo->dataSetLength) { - WM_WARNING( - "received DataSharing data size(%d) != dsInfo->dataSetLength(%d)\n", - length, dsInfo->dataSetLength - ); - if (length > sizeof(WMDataSet)) { - WM_WARNING("received DataSharing data exceeds sizeof(WMDataSet)\n"); - length = sizeof(WMDataSet); - } - } -#ifdef SDK_DEBUG - if (aidBitmap & ~(dsInfo->aidBitmap)) { - WM_WARNING("received aidBitmap(%x) has too many members.\n", aidBitmap); - } -#endif - if (length >= 4 && (aidBitmap & (1 << aid))) { - MI_CpuCopy16(dataSet, &dsInfo->ds[dsInfo->writeIndex], length); - dsInfo->seqNum[dsInfo->writeIndex] = (u16)(cb_Port->seqNo >> 1); - dsInfo->writeIndex = WmDataSharingGetNextIndex(dsInfo->writeIndex); - } - } - break; - case WM_STATECODE_PORT_INIT: - case WM_STATECODE_CONNECTED: - case WM_STATECODE_DISCONNECTED: - case WM_STATECODE_DISCONNECTED_FROM_MYSELF: - break; - } - } else { - WM_WARNING( - "An unknown receiving error occured during data-sharing. errcode=%x\n", - cb_Port->errcode - ); - dsInfo->state = WM_DS_STATE_ERROR; - } -} - -static void WmDataSharingReceiveData (WMDataSharingInfo * dsInfo, u16 aid, u16 * data) { - u16 aidBit = (u16)(1 << aid); - - WM_DLOGF_DATASHARING( - "recv data%d: write: %d, read: %d, send: %d", aid, dsInfo->writeIndex, - dsInfo->readIndex, dsInfo->sendIndex - ); - - if (dsInfo->aidBitmap & aidBit) { - u16 * buf; - u16 writeIndex; - OSIntrMode enabled; - - if (!(dsInfo->ds[dsInfo->writeIndex].aidBitmap & aidBit)) { - if (dsInfo->doubleMode == TRUE) { - WM_DLOGF_DATASHARING("[DS] received two DS packets from aid %d", aid); - - writeIndex = WmDataSharingGetNextIndex(dsInfo->writeIndex); - if (!(dsInfo->ds[writeIndex].aidBitmap & aidBit)) { - OS_Warning( - "received too many DataSharing packets from aid %d. discarded.\n", - aid - ); - return; - } - } else { - OS_Warning("received too many DataSharing packets from aid %d. discarded.\n", aid); - return; - } - } else { - writeIndex = dsInfo->writeIndex; - } - - buf = WmGetSharedDataAddress(dsInfo, dsInfo->aidBitmap, dsInfo->ds[writeIndex].data, aid); - if (data != NULL) { - MI_CpuCopy16(data, buf, dsInfo->dataLength); - } else { - MI_CpuClear16(buf, dsInfo->dataLength); - } - - enabled = OS_DisableInterrupts(); - - dsInfo->ds[writeIndex].aidBitmap &= ~aidBit; - - dsInfo->ds[writeIndex].receivedBitmap |= aidBit; - (void)OS_RestoreInterrupts(enabled); - } -} - -void WmDataSharingSendDataSet (WMDataSharingInfo * dsInfo, BOOL delayed) { - OSIntrMode enabled; - - enabled = OS_DisableInterrupts(); - - if (dsInfo->ds[dsInfo->writeIndex].aidBitmap == 0) { - u16 newWI, oldWI, resetWI; - WMErrCode res; - u16 connectedAIDs; - - WM_DLOGF_DATASHARING( - "send ds : write: %d, read: %d, send: %d", dsInfo->writeIndex, - dsInfo->readIndex, dsInfo->sendIndex - ); - - connectedAIDs = WM_GetConnectedAIDs(); - oldWI = dsInfo->writeIndex; - newWI = WmDataSharingGetNextIndex(oldWI); - if (dsInfo->doubleMode == TRUE) { - resetWI = WmDataSharingGetNextIndex(newWI); - } else { - resetWI = newWI; - } - SDK_ASSERT(newWI != dsInfo->readIndex && resetWI != dsInfo->readIndex); - - MI_CpuClear16(&dsInfo->ds[resetWI], sizeof(WMDataSet)); - dsInfo->ds[resetWI].aidBitmap = (u16)(dsInfo->aidBitmap & (connectedAIDs | 0x0001)); - dsInfo->writeIndex = newWI; - dsInfo->ds[oldWI].aidBitmap = dsInfo->aidBitmap; - if (delayed == TRUE) { - dsInfo->ds[oldWI].aidBitmap &= ~0x0001; - } - (void)OS_RestoreInterrupts(enabled); - res = - WM_SetMPDataToPortEx( - WmDataSharingSetDataCallback, dsInfo, (u16 *)&dsInfo->ds[oldWI], - dsInfo->dataSetLength, (u16)(dsInfo->aidBitmap & connectedAIDs), - dsInfo->port, WM_PRIORITY_HIGH - ); - if (res == WM_ERRCODE_NO_CHILD) { - WM_DLOGF_DATASHARING( - "sent ds : write: %d, read: %d, send: %d", dsInfo->writeIndex, - dsInfo->readIndex, dsInfo->sendIndex - ); - - dsInfo->seqNum[oldWI] = 0xffff; - dsInfo->sendIndex = WmDataSharingGetNextIndex(dsInfo->sendIndex); - } else { - if (res != WM_ERRCODE_SUCCESS && res != WM_ERRCODE_OPERATING) { - WM_WARNING("WM_SetMPDataToPort failed during data-sharing. errcode=%x\n", res); - dsInfo->state = WM_DS_STATE_ERROR; - } - } - } else { - (void)OS_RestoreInterrupts(enabled); - } -} - -u16 * WM_GetSharedDataAddress (WMDataSharingInfo * dsInfo, WMDataSet * receiveData, u16 aid) { - u32 aidBitmap = receiveData->aidBitmap; - u32 receivedBitmap = receiveData->receivedBitmap; - u32 aidBit = (1U << aid); - - if (dsInfo == NULL) { - WM_WARNING("Parameter \"dsInfo\" must not be NULL.\n"); - return NULL; - } - - if (receiveData == NULL) { - WM_WARNING("Parameter \"receiveData\" must not be NULL.\n"); - return NULL; - } - - if (!(aidBitmap & aidBit)) { - return NULL; - } - - if (!(receivedBitmap & aidBit)) { - return NULL; - } - - return WmGetSharedDataAddress(dsInfo, aidBitmap, receiveData->data, aid); -} - -u16 * WmGetSharedDataAddress (WMDataSharingInfo * dsInfo, u32 aidBitmap, u16 * receiveBuf, u32 aid) { - u32 mask; - u32 count; - u32 offset; - - mask = (0x0001U << aid) - 1U; - aidBitmap &= mask; - count = MATH_CountPopulation(aidBitmap); - offset = dsInfo->dataLength * count; - - return (u16 *)(((u8 *)receiveBuf) + offset); -} diff --git a/subprojects/NitroSDK/libraries/wm/src/wm_etc.c b/subprojects/NitroSDK/libraries/wm/src/wm_etc.c deleted file mode 100644 index 272274ffda..0000000000 --- a/subprojects/NitroSDK/libraries/wm/src/wm_etc.c +++ /dev/null @@ -1,314 +0,0 @@ -#include - -#include "wm_arm9_private.h" - -#define WM_SIZE_TEMP_USR_GAME_INFO_BUF 128 - -static u32 tmpUserGameInfoBuf[WM_SIZE_TEMP_USR_GAME_INFO_BUF / sizeof(u32)] ATTRIBUTE_ALIGN(32); - -#ifdef WM_ENABLE_TESTMODE - -WMErrCode WM_StartTestMode (WMCallbackFunc callback, u16 signal, u16 rate, u16 channel) { - WMErrCode result; - - result = WMi_CheckState(WM_STATE_IDLE); - WM_CHECK_RESULT(result); - - WMi_SetCallbackTable(WM_APIID_START_TESTMODE, callback); - - { - WMStartTestModeReq Req; - - Req.apiid = WM_APIID_START_TESTMODE; - Req.signal = signal; - Req.rate = rate; - Req.channel = channel; - - result = WMi_SendCommandDirect(&Req, sizeof(Req)); - if (result != WM_ERRCODE_SUCCESS) { - return result; - } - } - - return WM_ERRCODE_OPERATING; -} - -WMErrCode WM_StopTestMode (WMCallbackFunc callback) { - WMErrCode result; - - result = WMi_CheckState(WM_STATE_TESTMODE); - WM_CHECK_RESULT(result); - - WMi_SetCallbackTable(WM_APIID_STOP_TESTMODE, callback); - - result = WMi_SendCommand(WM_APIID_STOP_TESTMODE, 0); - WM_CHECK_RESULT(result); - - return WM_ERRCODE_OPERATING; -} - -WMErrCode WM_StartTestRxMode (WMCallbackFunc callback, u16 channel) { - WMErrCode result; - - result = WMi_CheckState(WM_STATE_IDLE); - WM_CHECK_RESULT(result); - - WMi_SetCallbackTable(WM_APIID_START_TESTRXMODE, callback); - - { - WMStartTestRxModeReq Req; - - Req.apiid = WM_APIID_START_TESTRXMODE; - Req.channel = channel; - - result = WMi_SendCommandDirect(&Req, sizeof(Req)); - if (result != WM_ERRCODE_SUCCESS) { - return result; - } - } - - return WM_ERRCODE_OPERATING; -} - -WMErrCode WM_StopTestRxMode (WMCallbackFunc callback) { - WMErrCode result; - - result = WMi_CheckState(WM_STATE_TESTMODE_RX); - WM_CHECK_RESULT(result); - - WMi_SetCallbackTable(WM_APIID_STOP_TESTRXMODE, callback); - - result = WMi_SendCommand(WM_APIID_STOP_TESTRXMODE, 0); - WM_CHECK_RESULT(result); - - return WM_ERRCODE_OPERATING; -} -#endif - -WMErrCode WM_SetWEPKey (WMCallbackFunc callback, u16 wepmode, const u16 * wepkey) { - WMErrCode result; - - result = WMi_CheckIdle(); - WM_CHECK_RESULT(result); - - if (wepmode > 3) { - WM_WARNING("Parameter \"wepmode\" must be less than %d.\n", 3); - return WM_ERRCODE_INVALID_PARAM; - } - - if (wepmode != WM_WEPMODE_NO) { - if (wepkey == NULL) { - WM_WARNING("Parameter \"wepkey\" must not be NULL.\n"); - return WM_ERRCODE_INVALID_PARAM; - } - if ((u32)wepkey & 0x01f) { - WM_WARNING("Parameter \"wepkey\" is not 32-byte aligned.\n"); - } - - DC_StoreRange((void *)wepkey, WM_SIZE_WEPKEY); - } - - WMi_SetCallbackTable(WM_APIID_SET_WEPKEY, callback); - - result = WMi_SendCommand(WM_APIID_SET_WEPKEY, 2, (u32)wepmode, (u32)wepkey); - WM_CHECK_RESULT(result); - - return WM_ERRCODE_OPERATING; -} - -WMErrCode WM_SetWEPKeyEx (WMCallbackFunc callback, u16 wepmode, u16 wepkeyid, const u8 * wepkey) { - WMErrCode result; - - result = WMi_CheckIdle(); - WM_CHECK_RESULT(result); - - if (wepmode > 3) { - WM_WARNING("Parameter \"wepmode\" must be less than %d.\n", 3); - return WM_ERRCODE_INVALID_PARAM; - } - - if (wepmode != WM_WEPMODE_NO) { - if (wepkey == NULL) { - WM_WARNING("Parameter \"wepkey\" must not be NULL.\n"); - return WM_ERRCODE_INVALID_PARAM; - } - if (wepkeyid > 3) { - WM_WARNING("Parameter \"wepkeyid\" must be less than %d.\n", 3); - } - if ((u32)wepkey & 0x01f) { - WM_WARNING("Parameter \"wepkey\" is not 32-byte aligned.\n"); - } - - DC_StoreRange((void *)wepkey, WM_SIZE_WEPKEY); - } - - WMi_SetCallbackTable(WM_APIID_SET_WEPKEY_EX, callback); - - result = WMi_SendCommand(WM_APIID_SET_WEPKEY_EX, 3, (u32)wepmode, (u32)wepkey, (u32)wepkeyid); - WM_CHECK_RESULT(result); - - return WM_ERRCODE_OPERATING; -} - -WMErrCode WM_SetGameInfo (WMCallbackFunc callback, const u16 * userGameInfo, u16 userGameInfoSize, u32 ggid, u16 tgid, u8 attr) { - WMErrCode result; - - result = WMi_CheckStateEx(2, WM_STATE_PARENT, WM_STATE_MP_PARENT); - WM_CHECK_RESULT(result); - - if (userGameInfo == NULL) { - WM_WARNING("Parameter \"userGameInfo\" must not be NULL.\n"); - return WM_ERRCODE_INVALID_PARAM; - } - if (userGameInfoSize > WM_SIZE_USER_GAMEINFO) { - WM_WARNING("Parameter \"userGameInfoSize\" must be less than %d.\n", WM_SIZE_USER_GAMEINFO); - return WM_ERRCODE_INVALID_PARAM; - } - - MI_CpuCopy16((void *)userGameInfo, (void *)tmpUserGameInfoBuf, userGameInfoSize); - DC_StoreRange((void *)tmpUserGameInfoBuf, userGameInfoSize); - - WMi_SetCallbackTable(WM_APIID_SET_GAMEINFO, callback); - - result = WMi_SendCommand( - WM_APIID_SET_GAMEINFO, 5, - (u32)tmpUserGameInfoBuf, - (u32)userGameInfoSize, (u32)ggid, (u32)tgid, (u32)attr - ); - if (result != WM_ERRCODE_SUCCESS) { - return result; - } - - return WM_ERRCODE_OPERATING; -} - -WMErrCode WM_SetBeaconIndication (WMCallbackFunc callback, u16 flag) { - WMErrCode result; - - result = WMi_CheckIdle(); - WM_CHECK_RESULT(result); - - if ((0 != flag) && (1 != flag)) { - WM_WARNING("Parameter \"flag\" must be \"0\" of \"1\".\n"); - return WM_ERRCODE_INVALID_PARAM; - } - - WMi_SetCallbackTable(WM_APIID_SET_BEACON_IND, callback); - - result = WMi_SendCommand(WM_APIID_SET_BEACON_IND, 1, (u32)flag); - WM_CHECK_RESULT(result); - - return WM_ERRCODE_OPERATING; -} - -WMErrCode WM_SetLifeTime (WMCallbackFunc callback, u16 tableNumber, u16 camLifeTime, u16 frameLifeTime, u16 mpLifeTime) { - WMErrCode result; - - result = WMi_CheckIdle(); - WM_CHECK_RESULT(result); - - WMi_SetCallbackTable(WM_APIID_SET_LIFETIME, callback); - - result = WMi_SendCommand( - WM_APIID_SET_LIFETIME, 4, - (u32)tableNumber, - (u32)camLifeTime, (u32)frameLifeTime, (u32)mpLifeTime - ); - WM_CHECK_RESULT(result); - - return WM_ERRCODE_OPERATING; -} - -WMErrCode WM_MeasureChannel (WMCallbackFunc callback, u16 ccaMode, u16 edThreshold, u16 channel, u16 measureTime) { - WMErrCode result; - WMArm9Buf * p = WMi_GetSystemWork(); - - result = WMi_CheckState(WM_STATE_IDLE); - WM_CHECK_RESULT(result); - - WMi_SetCallbackTable(WM_APIID_MEASURE_CHANNEL, callback); - - { - WMMeasureChannelReq Req; - - Req.apiid = WM_APIID_MEASURE_CHANNEL; - Req.ccaMode = ccaMode; - Req.edThreshold = edThreshold; - Req.channel = channel; - Req.measureTime = measureTime; - - result = WMi_SendCommandDirect(&Req, sizeof(Req)); - WM_CHECK_RESULT(result); - } - return WM_ERRCODE_OPERATING; -} - -WMErrCode WM_InitWirelessCounter (WMCallbackFunc callback) { - WMErrCode result; - - result = WMi_CheckIdle(); - WM_CHECK_RESULT(result); - - WMi_SetCallbackTable(WM_APIID_INIT_W_COUNTER, callback); - - result = WMi_SendCommand(WM_APIID_INIT_W_COUNTER, 0); - WM_CHECK_RESULT(result); - - return WM_ERRCODE_OPERATING; -} - -WMErrCode WM_GetWirelessCounter (WMCallbackFunc callback) { - WMErrCode result; - - result = WMi_CheckIdle(); - WM_CHECK_RESULT(result); - - WMi_SetCallbackTable(WM_APIID_GET_W_COUNTER, callback); - - result = WMi_SendCommand(WM_APIID_GET_W_COUNTER, 0); - WM_CHECK_RESULT(result); - - return WM_ERRCODE_OPERATING; -} - -WMErrCode WM_SetEntry (WMCallbackFunc callback, BOOL enabled) { - WMErrCode result; - - result = WMi_CheckStateEx(2, WM_STATE_PARENT, WM_STATE_MP_PARENT); - WM_CHECK_RESULT(result); - - WMi_SetCallbackTable(WM_APIID_SET_ENTRY, callback); - - result = WMi_SendCommand(WM_APIID_SET_ENTRY, 1, (u32)enabled); - WM_CHECK_RESULT(result); - - return WM_ERRCODE_OPERATING; -} - -WMErrCode WMi_SetBeaconPeriod (WMCallbackFunc callback, u16 beaconPeriod) { - WMErrCode result; - - result = WMi_CheckStateEx(2, WM_STATE_PARENT, WM_STATE_MP_PARENT); - WM_CHECK_RESULT(result); - - WMi_SetCallbackTable(WM_APIID_SET_BEACON_PERIOD, callback); - - result = WMi_SendCommand(WM_APIID_SET_BEACON_PERIOD, 1, (u32)beaconPeriod); - WM_CHECK_RESULT(result); - - return WM_ERRCODE_OPERATING; -} - -WMErrCode WM_SetPowerSaveMode (WMCallbackFunc callback, BOOL powerSave) { - WMErrCode result; - - result = WMi_CheckState(WM_STATE_DCF_CHILD); - WM_CHECK_RESULT(result); - - WMi_SetCallbackTable(WM_APIID_SET_PS_MODE, callback); - - result = WMi_SendCommand(WM_APIID_SET_PS_MODE, 1, (u32)powerSave); - WM_CHECK_RESULT(result); - - return WM_ERRCODE_OPERATING; -} diff --git a/subprojects/NitroSDK/libraries/wm/src/wm_ks.c b/subprojects/NitroSDK/libraries/wm/src/wm_ks.c deleted file mode 100644 index 65eaff092d..0000000000 --- a/subprojects/NitroSDK/libraries/wm/src/wm_ks.c +++ /dev/null @@ -1,42 +0,0 @@ -#include - -#include "wm_arm9_private.h" - -WMErrCode WM_StartKeySharing (WMKeySetBuf * buf, u16 port) { - return WM_StartDataSharing(buf, port, 0xffff, WM_KEYDATA_SIZE, TRUE); -} - -WMErrCode WM_EndKeySharing (WMKeySetBuf * buf) { - return WM_EndDataSharing(buf); -} - -WMErrCode WM_GetKeySet (WMKeySetBuf * buf, WMKeySet * keySet) { - WMErrCode result; - u16 sendData[WM_KEYDATA_SIZE / sizeof(u16)]; - WMDataSet ds; - WMArm9Buf * p = WMi_GetSystemWork(); - - { - sendData[0] = (u16)PAD_Read(); - result = WM_StepDataSharing(buf, sendData, &ds); - if (result == WM_ERRCODE_SUCCESS) { - keySet->seqNum = buf->currentSeqNum; - - { - u16 iAid; - for (iAid = 0; iAid < 16; iAid++) { - u16 * keyData; - keyData = WM_GetSharedDataAddress(buf, &ds, iAid); - if (keyData != NULL) { - keySet->key[iAid] = keyData[0]; - } else { - keySet->key[iAid] = 0; - } - } - } - return WM_ERRCODE_SUCCESS; - } else { - return result; - } - } -} diff --git a/subprojects/NitroSDK/libraries/wm/src/wm_mp.c b/subprojects/NitroSDK/libraries/wm/src/wm_mp.c deleted file mode 100644 index b5203a9f31..0000000000 --- a/subprojects/NitroSDK/libraries/wm/src/wm_mp.c +++ /dev/null @@ -1,296 +0,0 @@ -#include - -#include "wm_arm9_private.h" - -WMErrCode WMi_StartMP (WMCallbackFunc callback, u16 * recvBuf, u16 recvBufSize, u16 * sendBuf, u16 sendBufSize, WMMPTmpParam * tmpParam) { - WMErrCode result; - WMArm9Buf * p = WMi_GetSystemWork(); - WMStatus * status = p->status; - - result = WMi_CheckStateEx(2, WM_STATE_PARENT, WM_STATE_CHILD); - WM_CHECK_RESULT(result); - - DC_InvalidateRange(&(status->aid), 2); - DC_InvalidateRange(&(status->pwrMgtMode), 2); - if (status->aid != 0 && status->pwrMgtMode != 1) { - WM_WARNING("Could not start MP. Power save mode is illegal.\n"); - return WM_ERRCODE_ILLEGAL_STATE; - } - - DC_InvalidateRange(&(status->mp_flag), 4); - if (status->mp_flag == TRUE) { - WM_WARNING("Already started MP protocol. So can't execute request.\n"); - return WM_ERRCODE_ILLEGAL_STATE; - } - - if ((recvBufSize & 0x3f) != 0) { - WM_WARNING("Parameter \"recvBufSize\" is not a multiple of 64.\n"); - return WM_ERRCODE_INVALID_PARAM; - } - if ((sendBufSize & 0x1f) != 0) { - WM_WARNING("Parameter \"sendBufSize\" is not a multiple of 32.\n"); - return WM_ERRCODE_INVALID_PARAM; - } - if ((u32)recvBuf & 0x01f) { - WM_WARNING("Parameter \"recvBuf\" is not 32-byte aligned.\n"); - } - if ((u32)sendBuf & 0x01f) { - WM_WARNING("Parameter \"sendBuf\" is not 32-byte aligned.\n"); - } - - DC_InvalidateRange( - &(status->mp_ignoreSizePrecheckMode), - sizeof(status->mp_ignoreSizePrecheckMode) - ); - if (status->mp_ignoreSizePrecheckMode == FALSE) { - if (recvBufSize < WM_GetMPReceiveBufferSize()) { - WM_WARNING("Parameter \"recvBufSize\" is not enough size.\n"); - return WM_ERRCODE_INVALID_PARAM; - } - if (sendBufSize < WM_GetMPSendBufferSize()) { - WM_WARNING("Parameter \"sendBufSize\" is not enough size.\n"); - return WM_ERRCODE_INVALID_PARAM; - } -#ifndef SDK_FINALROM - - DC_InvalidateRange(&(status->state), 2); - if (status->state == WM_STATE_PARENT) { - DC_InvalidateRange(&(status->pparam), sizeof(WMParentParam)); - (void)WMi_CheckMpPacketTimeRequired( - status->pparam.parentMaxSize, - status->pparam.childMaxSize, - (u8)(status->pparam.maxEntry) - ); - } -#endif - } - - WMi_SetCallbackTable(WM_APIID_START_MP, callback); - - { - WMStartMPReq Req; - - MI_CpuClear32(&Req, sizeof(Req)); - - Req.apiid = WM_APIID_START_MP; - Req.recvBuf = (u32 *)recvBuf; - Req.recvBufSize = (u32)(recvBufSize / 2); - Req.sendBuf = (u32 *)sendBuf; - Req.sendBufSize = (u32)sendBufSize; - - MI_CpuClear32(&Req.param, sizeof(Req.param)); - MI_CpuCopy32(tmpParam, &Req.tmpParam, sizeof(Req.tmpParam)); - - result = WMi_SendCommandDirect(&Req, sizeof(Req)); - WM_CHECK_RESULT(result); - } - - return WM_ERRCODE_OPERATING; -} - -WMErrCode WM_StartMPEx (WMCallbackFunc callback, u16 * recvBuf, u16 recvBufSize, u16 * sendBuf, u16 sendBufSize, u16 mpFreq, u16 defaultRetryCount, BOOL minPollBmpMode, BOOL singlePacketMode, BOOL fixFreqMode, BOOL ignoreFatalError) { - WMMPTmpParam tmpParam; - - MI_CpuClear32(&tmpParam, sizeof(tmpParam)); - - tmpParam.mask = WM_MP_TMP_PARAM_MIN_FREQUENCY | WM_MP_TMP_PARAM_FREQUENCY | WM_MP_TMP_PARAM_DEFAULT_RETRY_COUNT - | WM_MP_TMP_PARAM_MIN_POLL_BMP_MODE | WM_MP_TMP_PARAM_SINGLE_PACKET_MODE | - WM_MP_TMP_PARAM_IGNORE_FATAL_ERROR_MODE; - tmpParam.minFrequency = mpFreq; - tmpParam.frequency = mpFreq; - tmpParam.defaultRetryCount = defaultRetryCount; - tmpParam.minPollBmpMode = (u8)minPollBmpMode; - tmpParam.singlePacketMode = (u8)singlePacketMode; - tmpParam.ignoreFatalErrorMode = (u8)ignoreFatalError; - - if (fixFreqMode != FALSE && mpFreq != 0) { - tmpParam.mask |= WM_MP_TMP_PARAM_MAX_FREQUENCY; - tmpParam.maxFrequency = mpFreq; - } - - return WMi_StartMP(callback, recvBuf, recvBufSize, sendBuf, sendBufSize, &tmpParam); -} - -WMErrCode WM_StartMP (WMCallbackFunc callback, u16 * recvBuf, u16 recvBufSize, u16 * sendBuf, u16 sendBufSize, u16 mpFreq) { - WMMPTmpParam tmpParam; - - MI_CpuClear32(&tmpParam, sizeof(tmpParam)); - - tmpParam.mask = WM_MP_TMP_PARAM_FREQUENCY | WM_MP_TMP_PARAM_MIN_FREQUENCY; - tmpParam.minFrequency = mpFreq; - tmpParam.frequency = mpFreq; - - return WMi_StartMP(callback, recvBuf, recvBufSize, sendBuf, sendBufSize, &tmpParam); -} - -WMErrCode WM_SetMPParameter (WMCallbackFunc callback, const WMMPParam * param) { - WMErrCode result; - WMArm9Buf * p = WMi_GetSystemWork(); - - result = WMi_CheckInitialized(); - WM_CHECK_RESULT(result); - - WMi_SetCallbackTable(WM_APIID_SET_MP_PARAMETER, callback); - - { - WMSetMPParameterReq Req; - - MI_CpuClear32(&Req, sizeof(Req)); - - Req.apiid = WM_APIID_SET_MP_PARAMETER; - MI_CpuCopy32(param, &Req.param, sizeof(Req.param)); - - result = WMi_SendCommandDirect(&Req, sizeof(Req)); - WM_CHECK_RESULT(result); - } - - return WM_ERRCODE_OPERATING; -} - -WMErrCode WM_SetMPChildSize (WMCallbackFunc callback, u16 childSize) { - WMMPParam param; - - MI_CpuClear32(¶m, sizeof(param)); - param.mask = WM_MP_PARAM_CHILD_SIZE; - param.childSize = childSize; - - return WM_SetMPParameter(callback, ¶m); -} - -WMErrCode WM_SetMPParentSize (WMCallbackFunc callback, u16 parentSize) { - WMMPParam param; - - MI_CpuClear32(¶m, sizeof(param)); - param.mask = WM_MP_PARAM_PARENT_SIZE; - param.parentSize = parentSize; - - return WM_SetMPParameter(callback, ¶m); -} - -WMErrCode WM_SetMPFrequency (WMCallbackFunc callback, u16 mpFreq) { - WMMPParam param; - - MI_CpuClear32(¶m, sizeof(param)); - param.mask = WM_MP_PARAM_FREQUENCY | WM_MP_PARAM_MIN_FREQUENCY; - param.minFrequency = mpFreq; - param.frequency = mpFreq; - - return WM_SetMPParameter(callback, ¶m); -} - -WMErrCode WM_SetMPInterval (WMCallbackFunc callback, u16 parentInterval, u16 childInterval) { - WMMPParam param; - - MI_CpuClear32(¶m, sizeof(param)); - param.mask = WM_MP_PARAM_PARENT_INTERVAL | WM_MP_PARAM_CHILD_INTERVAL; - param.parentInterval = parentInterval; - param.childInterval = childInterval; - - return WM_SetMPParameter(callback, ¶m); -} - -WMErrCode WM_SetMPTiming (WMCallbackFunc callback, u16 parentVCount, u16 childVCount) { - WMMPParam param; - - MI_CpuClear32(¶m, sizeof(param)); - param.mask = WM_MP_PARAM_PARENT_VCOUNT | WM_MP_PARAM_CHILD_VCOUNT; - param.parentVCount = parentVCount; - param.childVCount = childVCount; - - return WM_SetMPParameter(callback, ¶m); -} - -WMErrCode WM_SetMPDataToPortEx (WMCallbackFunc callback, void * arg, const u16 * sendData, u16 sendDataSize, u16 destBitmap, u16 port, u16 prio) { - WMErrCode result; - BOOL isParent; - u16 mpReadyBitmap = 0x0001; - u16 childBitmap = 0x0001; - WMArm9Buf * p = WMi_GetSystemWork(); - WMStatus * status = p->status; - - result = WMi_CheckStateEx(2, WM_STATE_MP_PARENT, WM_STATE_MP_CHILD); - WM_CHECK_RESULT(result); - - DC_InvalidateRange(&(status->aid), 2); - isParent = (status->aid == 0) ? TRUE : FALSE; - if (isParent == TRUE) { - DC_InvalidateRange(&(status->child_bitmap), 2); - childBitmap = status->child_bitmap; - DC_InvalidateRange(&(status->mp_readyBitmap), 2); - mpReadyBitmap = status->mp_readyBitmap; - } - - if (sendData == NULL) { - WM_WARNING("Parameter \"sendData\" must not be NULL.\n"); - return WM_ERRCODE_INVALID_PARAM; - } - if (childBitmap == 0) { - WM_WARNING("There is no child connected.\n"); - return WM_ERRCODE_NO_CHILD; - } - if ((u32)sendData & 0x01f) { - WM_WARNING("Parameter \"sendData\" is not 32-byte aligned.\n"); - } - DC_InvalidateRange(&(status->mp_sendBuf), 2); - if ((void *)sendData == (void *)status->mp_sendBuf) { - WM_WARNING - ("Parameter \"sendData\" must not be equal to the WM_StartMP argument \"sendBuf\".\n"); - return WM_ERRCODE_INVALID_PARAM; - } - - if (sendDataSize > WM_SIZE_MP_DATA_MAX) { - WM_WARNING("Parameter \"sendDataSize\" is over limit.\n"); - return WM_ERRCODE_INVALID_PARAM; - } - - if (sendDataSize == 0) { - WM_WARNING("Parameter \"sendDataSize\" must not be 0.\n"); - return WM_ERRCODE_INVALID_PARAM; - } - -#ifndef SDK_FINALROM - - DC_InvalidateRange(&(status->mp_current_minPollBmpMode), 2); - if (isParent && status->mp_current_minPollBmpMode) { - DC_InvalidateRange(&(status->pparam), sizeof(WMParentParam)); - (void)WMi_CheckMpPacketTimeRequired( - status->pparam.parentMaxSize, - status->pparam.childMaxSize, - (u8)MATH_CountPopulation((u32)destBitmap) - ); - } -#endif - - DC_StoreRange((void *)sendData, sendDataSize); - - result = WMi_SendCommand( - WM_APIID_SET_MP_DATA, 7, - (u32)sendData, - (u32)sendDataSize, - (u32)destBitmap, (u32)port, (u32)prio, (u32)callback, (u32)arg - ); - WM_CHECK_RESULT(result); - - return WM_ERRCODE_OPERATING; -} - -WMErrCode WM_EndMP (WMCallbackFunc callback) { - WMErrCode result; - WMArm9Buf * p = WMi_GetSystemWork(); - - result = WMi_CheckStateEx(2, WM_STATE_MP_PARENT, WM_STATE_MP_CHILD); - WM_CHECK_RESULT(result); - - DC_InvalidateRange(&(p->status->mp_flag), 4); - if (p->status->mp_flag == FALSE) { - WM_WARNING("It is not MP mode now.\n"); - return WM_ERRCODE_ILLEGAL_STATE; - } - - WMi_SetCallbackTable(WM_APIID_END_MP, callback); - - result = WMi_SendCommand(WM_APIID_END_MP, 0); - WM_CHECK_RESULT(result); - - return WM_ERRCODE_OPERATING; -} diff --git a/subprojects/NitroSDK/libraries/wm/src/wm_standard.c b/subprojects/NitroSDK/libraries/wm/src/wm_standard.c deleted file mode 100644 index 2dbc2c5396..0000000000 --- a/subprojects/NitroSDK/libraries/wm/src/wm_standard.c +++ /dev/null @@ -1,491 +0,0 @@ -#include - -#include "wm_arm9_private.h" - -static BOOL WmCheckParentParameter(const WMParentParam * param); - -WMErrCode WM_Enable (WMCallbackFunc callback) { - return WMi_EnableEx(callback, 0); -} - -WMErrCode WM_EnableForListening (WMCallbackFunc callback, BOOL blink) { - u32 miscFlags = WM_MISC_FLAG_LISTEN_ONLY; - - if (!blink) { - miscFlags |= WM_MISC_FLAG_NO_BLINK; - } - - return WMi_EnableEx(callback, miscFlags); -} - -WMErrCode WMi_EnableEx (WMCallbackFunc callback, u32 miscFlags) { - WMErrCode result; - - result = WMi_CheckState(WM_STATE_READY); - WM_CHECK_RESULT(result); - - WMi_SetCallbackTable(WM_APIID_ENABLE, callback); - - { - WMArm9Buf * p = WMi_GetSystemWork(); - - result = WMi_SendCommand( - WM_APIID_ENABLE, 4, - (u32)(p->WM7), (u32)(p->status), (u32)(p->fifo7to9), miscFlags - ); - WM_CHECK_RESULT(result); - } - - return WM_ERRCODE_OPERATING; -} - -WMErrCode WM_Disable (WMCallbackFunc callback) { - WMErrCode result; - - result = WMi_CheckState(WM_STATE_STOP); - WM_CHECK_RESULT(result); - - WMi_SetCallbackTable(WM_APIID_DISABLE, callback); - - result = WMi_SendCommand(WM_APIID_DISABLE, 0); - WM_CHECK_RESULT(result); - - return WM_ERRCODE_OPERATING; -} - -WMErrCode WM_PowerOn (WMCallbackFunc callback) { - WMErrCode result; - - result = WMi_CheckState(WM_STATE_STOP); - WM_CHECK_RESULT(result); - - WMi_SetCallbackTable(WM_APIID_POWER_ON, callback); - - result = WMi_SendCommand(WM_APIID_POWER_ON, 0); - WM_CHECK_RESULT(result); - - return WM_ERRCODE_OPERATING; -} - -WMErrCode WM_PowerOff (WMCallbackFunc callback) { - WMErrCode result; - - result = WMi_CheckState(WM_STATE_IDLE); - WM_CHECK_RESULT(result); - - WMi_SetCallbackTable(WM_APIID_POWER_OFF, callback); - - result = WMi_SendCommand(WM_APIID_POWER_OFF, 0); - WM_CHECK_RESULT(result); - - return WM_ERRCODE_OPERATING; -} - -WMErrCode WM_Initialize (void * wmSysBuf, WMCallbackFunc callback, u16 dmaNo) { - return WMi_InitializeEx(wmSysBuf, callback, dmaNo, 0); -} - -WMErrCode WM_InitializeForListening (void * wmSysBuf, WMCallbackFunc callback, u16 dmaNo, BOOL blink) { - u32 miscFlags = WM_MISC_FLAG_LISTEN_ONLY; - - if (!blink) { - miscFlags |= WM_MISC_FLAG_NO_BLINK; - } - - return WMi_InitializeEx(wmSysBuf, callback, dmaNo, miscFlags); -} - -WMErrCode WMi_InitializeEx (void * wmSysBuf, WMCallbackFunc callback, u16 dmaNo, u32 miscFlags) { - WMErrCode result; - - result = WM_Init(wmSysBuf, dmaNo); - WM_CHECK_RESULT(result); - - WMi_SetCallbackTable(WM_APIID_INITIALIZE, callback); - - { - WMArm9Buf * p = WMi_GetSystemWork(); - - result = WMi_SendCommand( - WM_APIID_INITIALIZE, 4, - (u32)(p->WM7), (u32)(p->status), (u32)(p->fifo7to9), miscFlags - ); - WM_CHECK_RESULT(result); - } - - return WM_ERRCODE_OPERATING; -} - -WMErrCode WM_Reset (WMCallbackFunc callback) { - WMErrCode result; - - result = WMi_CheckIdle(); - WM_CHECK_RESULT(result); - - WMi_SetCallbackTable(WM_APIID_RESET, callback); - - result = WMi_SendCommand(WM_APIID_RESET, 0); - WM_CHECK_RESULT(result); - - return WM_ERRCODE_OPERATING; -} - -WMErrCode WM_End (WMCallbackFunc callback) { - WMErrCode result; - - result = WMi_CheckState(WM_STATE_IDLE); - WM_CHECK_RESULT(result); - - WMi_SetCallbackTable(WM_APIID_END, callback); - - result = WMi_SendCommand(WM_APIID_END, 0); - WM_CHECK_RESULT(result); - - return WM_ERRCODE_OPERATING; -} - -WMErrCode WM_SetParentParameter (WMCallbackFunc callback, const WMParentParam * pparaBuf) { - WMErrCode result; - - result = WMi_CheckState(WM_STATE_IDLE); - WM_CHECK_RESULT(result); - - if (pparaBuf == NULL) { - WM_WARNING("Parameter \"pparaBuf\" must not be NULL.\n"); - return WM_ERRCODE_INVALID_PARAM; - } - if ((u32)pparaBuf & 0x01f) { - WM_WARNING("Parameter \"pparaBuf\" is not 32-byte aligned.\n"); - } - if (pparaBuf->userGameInfoLength > 0) { - if (pparaBuf->userGameInfo == NULL) { - WM_WARNING("Parameter \"pparaBuf->userGameInfo\" must not be NULL.\n"); - return WM_ERRCODE_INVALID_PARAM; - } - if ((u32)(pparaBuf->userGameInfo) & 0x01f) { - WM_WARNING("Parameter \"pparaBuf->userGameInfo\" is not 32-byte aligned.\n"); - } - } - - if ((pparaBuf->parentMaxSize + - (pparaBuf->KS_Flag ? WM_SIZE_KS_PARENT_DATA + WM_SIZE_MP_PARENT_PADDING : 0) > - WM_SIZE_MP_DATA_MAX) - || (pparaBuf->childMaxSize + - (pparaBuf->KS_Flag ? WM_SIZE_KS_CHILD_DATA + WM_SIZE_MP_CHILD_PADDING : 0) > - WM_SIZE_MP_DATA_MAX)) { - WM_WARNING("Transfer data size is over %d byte.\n", WM_SIZE_MP_DATA_MAX); - return WM_ERRCODE_INVALID_PARAM; - } - (void)WmCheckParentParameter(pparaBuf); - - WMi_SetCallbackTable(WM_APIID_SET_P_PARAM, callback); - - DC_StoreRange((void *)pparaBuf, WM_PARENT_PARAM_SIZE); - if (pparaBuf->userGameInfoLength > 0) { - DC_StoreRange(pparaBuf->userGameInfo, pparaBuf->userGameInfoLength); - } - - result = WMi_SendCommand(WM_APIID_SET_P_PARAM, 1, (u32)pparaBuf); - WM_CHECK_RESULT(result); - - return WM_ERRCODE_OPERATING; -} - -static BOOL WmCheckParentParameter (const WMParentParam * param) { - if (param->userGameInfoLength > WM_SIZE_USER_GAMEINFO) { - OS_TWarning("User gameInfo length must be less than %d .\n", WM_SIZE_USER_GAMEINFO); - return FALSE; - } - - if ((param->beaconPeriod < 10) || (param->beaconPeriod > 1000)) { - OS_TWarning("Beacon send period must be between 10 and 1000 .\n"); - return FALSE; - } - - if ((param->channel < 1) || (param->channel > 14)) { - OS_TWarning("Channel must be between 1 and 14 .\n"); - return FALSE; - } - return TRUE; -} - -WMErrCode WMi_StartParentEx (WMCallbackFunc callback, BOOL powerSave) { - WMErrCode result; - - result = WMi_CheckState(WM_STATE_IDLE); - WM_CHECK_RESULT(result); - - { - WMArm9Buf * w9b = WMi_GetSystemWork(); -#ifdef WM_DEBUG - if (w9b->connectedAidBitmap != 0) { - WM_DPRINTF( - "Warning: connectedAidBitmap should be 0, but %04x", - w9b->connectedAidBitmap - ); - } -#endif - w9b->myAid = 0; - w9b->connectedAidBitmap = 0; - } - - WMi_SetCallbackTable(WM_APIID_START_PARENT, callback); - - result = WMi_SendCommand(WM_APIID_START_PARENT, 1, (u32)powerSave); - WM_CHECK_RESULT(result); - - return WM_ERRCODE_OPERATING; -} - -WMErrCode WM_StartParent (WMCallbackFunc callback) { - return WMi_StartParentEx(callback, TRUE); -} - -WMErrCode WM_EndParent (WMCallbackFunc callback) { - WMErrCode result; - - result = WMi_CheckState(WM_STATE_PARENT); - WM_CHECK_RESULT(result); - - WMi_SetCallbackTable(WM_APIID_END_PARENT, callback); - - result = WMi_SendCommand(WM_APIID_END_PARENT, 0); - WM_CHECK_RESULT(result); - - return WM_ERRCODE_OPERATING; -} - -WMErrCode WM_StartScan (WMCallbackFunc callback, const WMScanParam * param) { - WMErrCode result; - - result = WMi_CheckStateEx(3, WM_STATE_IDLE, WM_STATE_CLASS1, WM_STATE_SCAN); - WM_CHECK_RESULT(result); - - if (param == NULL) { - WM_WARNING("Parameter \"param\" must not be NULL.\n"); - return WM_ERRCODE_INVALID_PARAM; - } - if (param->scanBuf == NULL) { - WM_WARNING("Parameter \"param->scanBuf\" must not be NULL.\n"); - return WM_ERRCODE_INVALID_PARAM; - } - if ((param->channel < 1) || (param->channel > 14)) { - WM_WARNING("Parameter \"param->channel\" must be between 1 and 14.\n"); - return WM_ERRCODE_INVALID_PARAM; - } - if ((u32)(param->scanBuf) & 0x01f) { - WM_WARNING("Parameter \"param->scanBuf\" is not 32-byte aligned.\n"); - } - - WMi_SetCallbackTable(WM_APIID_START_SCAN, callback); - - { - WMStartScanReq Req; - - Req.apiid = WM_APIID_START_SCAN; - Req.channel = param->channel; - Req.scanBuf = param->scanBuf; - Req.maxChannelTime = param->maxChannelTime; - Req.bssid[0] = param->bssid[0]; - Req.bssid[1] = param->bssid[1]; - Req.bssid[2] = param->bssid[2]; - Req.bssid[3] = param->bssid[3]; - Req.bssid[4] = param->bssid[4]; - Req.bssid[5] = param->bssid[5]; - result = WMi_SendCommandDirect(&Req, sizeof(Req)); - WM_CHECK_RESULT(result); - } - - return WM_ERRCODE_OPERATING; -} - -WMErrCode WM_StartScanEx (WMCallbackFunc callback, const WMScanExParam * param) { - WMErrCode result; - - result = WMi_CheckStateEx(3, WM_STATE_IDLE, WM_STATE_CLASS1, WM_STATE_SCAN); - WM_CHECK_RESULT(result); - - if (param == NULL) { - WM_WARNING("Parameter \"param\" must not be NULL.\n"); - return WM_ERRCODE_INVALID_PARAM; - } - if (param->scanBuf == NULL) { - WM_WARNING("Parameter \"param->scanBuf\" must not be NULL.\n"); - return WM_ERRCODE_INVALID_PARAM; - } - if (param->scanBufSize > WM_SIZE_SCAN_EX_BUF) { - WM_WARNING - ("Parameter \"param->scanBufSize\" must be less than or equal to WM_SIZE_SCAN_EX_BUF.\n"); - return WM_ERRCODE_INVALID_PARAM; - } - if ((u32)(param->scanBuf) & 0x01f) { - WM_WARNING("Parameter \"param->scanBuf\" is not 32-byte aligned.\n"); - } - if (param->ssidLength > WM_SIZE_SSID) { - WM_WARNING("Parameter \"param->ssidLength\" must be less than or equal to WM_SIZE_SSID.\n"); - return WM_ERRCODE_INVALID_PARAM; - } - if (param->scanType != WM_SCANTYPE_ACTIVE && param->scanType != WM_SCANTYPE_PASSIVE - && param->scanType != WM_SCANTYPE_ACTIVE_CUSTOM - && param->scanType != WM_SCANTYPE_PASSIVE_CUSTOM) { - WM_WARNING - ("Parameter \"param->scanType\" must be WM_SCANTYPE_PASSIVE or WM_SCANTYPE_ACTIVE.\n"); - return WM_ERRCODE_INVALID_PARAM; - } - if ((param->scanType == WM_SCANTYPE_ACTIVE_CUSTOM - || param->scanType == WM_SCANTYPE_PASSIVE_CUSTOM) && param->ssidMatchLength > WM_SIZE_SSID) { - WM_WARNING - ("Parameter \"param->ssidMatchLength\" must be less than or equal to WM_SIZE_SSID.\n"); - return WM_ERRCODE_INVALID_PARAM; - } - - WMi_SetCallbackTable(WM_APIID_START_SCAN_EX, callback); - - { - WMStartScanExReq Req; - - Req.apiid = WM_APIID_START_SCAN_EX; - Req.channelList = param->channelList; - Req.scanBuf = param->scanBuf; - Req.scanBufSize = param->scanBufSize; - Req.maxChannelTime = param->maxChannelTime; - MI_CpuCopy8(param->bssid, Req.bssid, WM_SIZE_MACADDR); - Req.scanType = param->scanType; - Req.ssidMatchLength = param->ssidMatchLength; - Req.ssidLength = param->ssidLength; - MI_CpuCopy8(param->ssid, Req.ssid, WM_SIZE_SSID); - - result = WMi_SendCommandDirect(&Req, sizeof(Req)); - WM_CHECK_RESULT(result); - } - - return WM_ERRCODE_OPERATING; -} - -WMErrCode WM_EndScan (WMCallbackFunc callback) { - WMErrCode result; - - result = WMi_CheckState(WM_STATE_SCAN); - WM_CHECK_RESULT(result); - - WMi_SetCallbackTable(WM_APIID_END_SCAN, callback); - - result = WMi_SendCommand(WM_APIID_END_SCAN, 0); - WM_CHECK_RESULT(result); - - return WM_ERRCODE_OPERATING; -} - -WMErrCode WM_StartConnectEx (WMCallbackFunc callback, const WMBssDesc * pInfo, const u8 * ssid, BOOL powerSave, const u16 authMode) { - WMErrCode result; - - result = WMi_CheckState(WM_STATE_IDLE); - WM_CHECK_RESULT(result); - - if (pInfo == NULL) { - WM_WARNING("Parameter \"pInfo\" must not be NULL.\n"); - return WM_ERRCODE_INVALID_PARAM; - } - if ((u32)pInfo & 0x01f) { - WM_WARNING("Parameter \"pInfo\" is not 32-byte aligned.\n"); - } - if ((authMode != WM_AUTHMODE_OPEN_SYSTEM) && (authMode != WM_AUTHMODE_SHARED_KEY)) { - WM_WARNING - ("Parameter \"authMode\" must be WM_AUTHMODE_OPEN_SYSTEM or WM_AUTHMODE_SHARED_KEY.\n"); - } - - DC_StoreRange((void *)pInfo, (u32)(pInfo->length * 2)); - - { - WMArm9Buf * w9b = WMi_GetSystemWork(); -#ifdef WM_DEBUG - if (w9b->connectedAidBitmap != 0) { - WM_DPRINTF( - "Warning: connectedAidBitmap should be 0, but %04x", - w9b->connectedAidBitmap - ); - } -#endif - w9b->myAid = 0; - w9b->connectedAidBitmap = 0; - } - - WMi_SetCallbackTable(WM_APIID_START_CONNECT, callback); - - { - WMStartConnectReq Req; - - Req.apiid = WM_APIID_START_CONNECT; - Req.pInfo = (WMBssDesc *)pInfo; - if (ssid != NULL) { - MI_CpuCopy8(ssid, Req.ssid, WM_SIZE_CHILD_SSID); - } else { - MI_CpuClear8(Req.ssid, WM_SIZE_CHILD_SSID); - } - Req.powerSave = powerSave; - Req.authMode = authMode; - - result = WMi_SendCommandDirect(&Req, sizeof(Req)); - WM_CHECK_RESULT(result); - } - - return WM_ERRCODE_OPERATING; -} - -WMErrCode WM_Disconnect (WMCallbackFunc callback, u16 aid) { - WMErrCode result; - WMArm9Buf * p = WMi_GetSystemWork(); - - result = WMi_CheckStateEx( - 5, - WM_STATE_PARENT, WM_STATE_MP_PARENT, - WM_STATE_CHILD, WM_STATE_MP_CHILD, WM_STATE_DCF_CHILD - ); - WM_CHECK_RESULT(result); - - if ( - (p->status->state == WM_STATE_PARENT) || (p->status->state == WM_STATE_MP_PARENT)) { - if ((aid < 1) || (aid > WM_NUM_MAX_CHILD)) { - WM_WARNING("Parameter \"aid\" must be between 1 and %d.\n", WM_NUM_MAX_CHILD); - return WM_ERRCODE_INVALID_PARAM; - } - DC_InvalidateRange(&(p->status->child_bitmap), 2); - if (!(p->status->child_bitmap & (0x0001 << aid))) { - WM_WARNING("There is no child that have aid %d.\n", aid); - return WM_ERRCODE_NO_CHILD; - } - } else { - if (aid != 0) { - WM_WARNING("Now child mode , so aid must be 0.\n"); - return WM_ERRCODE_INVALID_PARAM; - } - } - - WMi_SetCallbackTable(WM_APIID_DISCONNECT, callback); - - result = WMi_SendCommand(WM_APIID_DISCONNECT, 1, (u32)(0x0001 << aid)); - WM_CHECK_RESULT(result); - - return WM_ERRCODE_OPERATING; -} - -WMErrCode WM_DisconnectChildren (WMCallbackFunc callback, u16 aidBitmap) { - WMErrCode result; - WMArm9Buf * p = WMi_GetSystemWork(); - - result = WMi_CheckStateEx(2, WM_STATE_PARENT, WM_STATE_MP_PARENT); - WM_CHECK_RESULT(result); - - DC_InvalidateRange(&(p->status->child_bitmap), 2); - if (!(p->status->child_bitmap & aidBitmap & 0xfffe)) { - WM_WARNING("There is no child that is included in \"aidBitmap\" %04x_.\n", aidBitmap); - return WM_ERRCODE_NO_CHILD; - } - - WMi_SetCallbackTable(WM_APIID_DISCONNECT, callback); - - result = WMi_SendCommand(WM_APIID_DISCONNECT, 1, (u32)aidBitmap); - WM_CHECK_RESULT(result); - - return WM_ERRCODE_OPERATING; -} diff --git a/subprojects/NitroSDK/libraries/wm/src/wm_sync.c b/subprojects/NitroSDK/libraries/wm/src/wm_sync.c deleted file mode 100644 index f27942f422..0000000000 --- a/subprojects/NitroSDK/libraries/wm/src/wm_sync.c +++ /dev/null @@ -1,348 +0,0 @@ -#include - -#include "wm_arm9_private.h" - -WMErrCode WM_SetIndCallback (WMCallbackFunc callback) { - WMErrCode result; - OSIntrMode e; - - e = OS_DisableInterrupts(); - - result = WMi_CheckInitialized(); - if (result != WM_ERRCODE_SUCCESS) { - (void)OS_RestoreInterrupts(e); - return result; - } - - WMi_GetSystemWork()->indCallback = callback; - - (void)OS_RestoreInterrupts(e); - - return WM_ERRCODE_SUCCESS; -} - -WMErrCode WM_SetPortCallback (u16 port, WMCallbackFunc callback, void * arg) { - WMErrCode result; - OSIntrMode e; - WMPortRecvCallback cb_Port; - -#ifdef SDK_DEBUG - if (port >= WM_NUM_OF_PORT) { - WM_WARNING("Parameter \"port\" must be less than 16.\n"); - return WM_ERRCODE_INVALID_PARAM; - } -#endif - - if (callback != NULL) { - MI_CpuClear8(&cb_Port, sizeof(WMPortRecvCallback)); - cb_Port.apiid = WM_APIID_PORT_RECV; - cb_Port.errcode = WM_ERRCODE_SUCCESS; - cb_Port.state = WM_STATECODE_PORT_INIT; - cb_Port.port = port; - cb_Port.recvBuf = NULL; - cb_Port.data = NULL; - cb_Port.length = 0; - cb_Port.seqNo = 0xffff; - cb_Port.arg = arg; - cb_Port.aid = 0; - OS_GetMacAddress(cb_Port.macAddress); - } - - e = OS_DisableInterrupts(); - - result = WMi_CheckInitialized(); - if (result != WM_ERRCODE_SUCCESS) { - (void)OS_RestoreInterrupts(e); - return result; - } - - { - WMArm9Buf * p = WMi_GetSystemWork(); - - p->portCallbackTable[port] = callback; - p->portCallbackArgument[port] = arg; - } - - if (callback != NULL) { - cb_Port.connectedAidBitmap = WM_GetConnectedAIDs(); - cb_Port.myAid = WM_GetAID(); - (*callback) ((void *)&cb_Port); - } - - (void)OS_RestoreInterrupts(e); - - return WM_ERRCODE_SUCCESS; -} - -WMErrCode WM_ReadStatus (WMStatus * statusBuf) { - WMErrCode result; - WMArm9Buf * p = WMi_GetSystemWork(); - - result = WMi_CheckInitialized(); - WM_CHECK_RESULT(result); - - if (statusBuf == NULL) { - WM_WARNING("Parameter \"statusBuf\" must not be NULL.\n"); - return WM_ERRCODE_INVALID_PARAM; - } - - DC_InvalidateRange(p->status, sizeof(WMStatus)); - MI_CpuCopyFast(p->status, statusBuf, sizeof(WMStatus)); - - return WM_ERRCODE_SUCCESS; -} - -int WM_GetMPSendBufferSize (void) { - WMErrCode result; - int maxSendSize; - WMArm9Buf * p = WMi_GetSystemWork(); - - result = WMi_CheckStateEx(2, WM_STATE_PARENT, WM_STATE_CHILD); - if (result != WM_ERRCODE_SUCCESS) { - return 0; - } - - DC_InvalidateRange(&(p->status->mp_flag), 4); - if (p->status->mp_flag == TRUE) { - WM_WARNING("Already started MP protocol. So can't execute request.\n"); - return 0; - } - - DC_InvalidateRange(&(p->status->mp_maxSendSize), 4); - maxSendSize = p->status->mp_maxSendSize; - - return ((maxSendSize + 31) & ~0x1f); -} - -int WM_GetMPReceiveBufferSize (void) { - WMErrCode result; - BOOL isParent; - int maxReceiveSize; - int maxEntry; - WMArm9Buf * p = WMi_GetSystemWork(); - - result = WMi_CheckStateEx(2, WM_STATE_PARENT, WM_STATE_CHILD); - if (result != WM_ERRCODE_SUCCESS) { - return 0; - } - - DC_InvalidateRange(&(p->status->mp_flag), 4); - if (p->status->mp_flag == TRUE) { - WM_WARNING("Already started MP protocol. So can't execute request.\n"); - return 0; - } - - DC_InvalidateRange(&(p->status->aid), 2); - isParent = (p->status->aid == 0) ? TRUE : FALSE; - DC_InvalidateRange(&(p->status->mp_maxRecvSize), 2); - maxReceiveSize = p->status->mp_maxRecvSize; - if (isParent == TRUE) { - DC_InvalidateRange(&(p->status->pparam.maxEntry), 2); - maxEntry = p->status->pparam.maxEntry; - return (int)((sizeof(WMmpRecvHeader) - sizeof(WMmpRecvData) + - ((sizeof(WMmpRecvData) + maxReceiveSize - 2 + 2) * maxEntry) - + 31) & ~0x1f) * 2; - } else { - return (int)((sizeof(WMMpRecvBuf) + maxReceiveSize - 4 + 31) & ~0x1f) * 2; - } -} - -WMMpRecvData * WM_ReadMPData (const WMMpRecvHeader * header, u16 aid) { - int i; - WMErrCode result; - WMMpRecvData * recvdata_p[WM_NUM_MAX_CHILD]; - WMArm9Buf * p = WMi_GetSystemWork(); - - result = WMi_CheckInitialized(); - if (result != WM_ERRCODE_SUCCESS) { - return NULL; - } - - if ((aid < 1) || (aid > WM_NUM_MAX_CHILD)) { - WM_WARNING("Parameter \"aid\" must be between 1 and %d.\n", WM_NUM_MAX_CHILD); - return NULL; - } - - DC_InvalidateRange(&(p->status->child_bitmap), 2); - if (0 == (p->status->child_bitmap & (0x0001 << aid))) { - return NULL; - } - - if (header->count == 0) { - return NULL; - } - - recvdata_p[0] = (WMMpRecvData *)(header->data); - - i = 0; - do{ - if (recvdata_p[i]->aid == aid) { - return recvdata_p[i]; - } - - ++i; - recvdata_p[i] = (WMMpRecvData *)((u32)(recvdata_p[i - 1]) + header->length); - }while (i < header->count); - - return NULL; -} - -u16 WM_GetAllowedChannel (void) { -#ifdef WM_PRECALC_ALLOWEDCHANNEL - WMErrCode result; - - result = WMi_CheckInitialized(); - if (result != WM_ERRCODE_SUCCESS) { - return WM_GET_ALLOWED_CHANNEL_BEFORE_INIT; - } - - return *((u16 *)((u32)(OS_GetSystemWork()->nvramUserInfo) + - ((sizeof(NVRAMConfig) + 3) & ~0x00000003) + 6)); -#else - WMErrCode result; - WMArm9Buf * p = WMi_GetSystemWork(); - - result = WMi_CheckIdle(); - if (result != WM_ERRCODE_SUCCESS) { - return WM_GET_ALLOWED_CHANNEL_BEFORE_INIT; - } - - DC_InvalidateRange(&(p->status->allowedChannel), 2); - return p->status->allowedChannel; -#endif -} - -#ifdef WM_PRECALC_ALLOWEDCHANNEL - -BOOL WM_IsExistAllowedChannel (void) { - u16 allowedChannel; - - allowedChannel = *((u16 *)((u32)(OS_GetSystemWork()->nvramUserInfo) + - ((sizeof(NVRAMConfig) + 3) & ~0x00000003) + 6)); - if (allowedChannel) { - return TRUE; - } - return FALSE; -} -#endif - -WMLinkLevel WM_GetLinkLevel (void) { - WMErrCode result; - WMArm9Buf * p = WMi_GetSystemWork(); - - result = WMi_CheckInitialized(); - if (result != WM_ERRCODE_SUCCESS) { - return WM_LINK_LEVEL_0; - } - - DC_InvalidateRange(&(p->status->state), 2); - switch (p->status->state) { - case WM_STATE_MP_PARENT: - - DC_InvalidateRange(&(p->status->child_bitmap), 2); - if (p->status->child_bitmap == 0) { - return WM_LINK_LEVEL_0; - } - case WM_STATE_MP_CHILD: - case WM_STATE_DCF_CHILD: - - DC_InvalidateRange(&(p->status->linkLevel), 2); - return (WMLinkLevel)(p->status->linkLevel); - } - - return WM_LINK_LEVEL_0; -} - -u16 WM_GetDispersionBeaconPeriod (void) { - u8 mac[6]; - u16 ret; - s32 i; - - OS_GetMacAddress(mac); - for (i = 0, ret = 0; i < 6; i++) { - ret += mac[i]; - } - ret += OS_GetVBlankCount(); - ret *= 7; - return (u16)(WM_DEFAULT_BEACON_PERIOD + (ret % 20)); -} - -u16 WM_GetDispersionScanPeriod (void) { - u8 mac[6]; - u16 ret; - s32 i; - - OS_GetMacAddress(mac); - for (i = 0, ret = 0; i < 6; i++) { - ret += mac[i]; - } - ret += OS_GetVBlankCount(); - ret *= 13; - return (u16)(WM_DEFAULT_SCAN_PERIOD + (ret % 10)); -} - -WMOtherElements WM_GetOtherElements (WMBssDesc * bssDesc) { - WMOtherElements elems; - u8 * p_elem; - int i; - u8 curr_elem_len; - u8 elems_len; - u8 elems_len_counter; - - if (bssDesc->gameInfoLength != 0) { - elems.count = 0; - return elems; - } - - elems.count = (u8)(bssDesc->otherElementCount); - if (elems.count == 0) { - return elems; - } - - if (elems.count > WM_SCAN_OTHER_ELEMENT_MAX) { - elems.count = WM_SCAN_OTHER_ELEMENT_MAX; - } - - p_elem = (u8 *)&(bssDesc->gameInfo); - - elems_len = (u8)((bssDesc->length * sizeof(u16)) - 64); - elems_len_counter = 0; - - for (i = 0; i < elems.count; ++i) { - elems.element[i].id = p_elem[0]; - elems.element[i].length = p_elem[1]; - elems.element[i].body = (u8 *)&(p_elem[2]); - - curr_elem_len = (u8)(elems.element[i].length + 2); - elems_len_counter += curr_elem_len; - - if (elems_len_counter > elems_len) { - WM_WARNING("Elements length error.\n"); - elems.count = 0; - return elems; - } - - p_elem = (u8 *)(p_elem + curr_elem_len); - } - - return elems; -} - -u16 WM_GetNextTgid (void) { - enum - { TGID_DEFAULT = (1 << 16) }; - static u32 tgid_bak = (u32)TGID_DEFAULT; - - if (tgid_bak == (u32)TGID_DEFAULT) { - RTCTime rt[1]; - RTC_Init(); - if (RTC_GetTime(rt) == RTC_RESULT_SUCCESS) { - tgid_bak = (u16)(rt->second + (rt->minute << 8)); - } else { - OS_Warning("failed to get RTC-data to create unique TGID!\n"); - } - } - - tgid_bak = (u16)(tgid_bak + 1); - return (u16)tgid_bak; -} diff --git a/subprojects/NitroSDK/libraries/wm/src/wm_system.c b/subprojects/NitroSDK/libraries/wm/src/wm_system.c deleted file mode 100644 index 6377606657..0000000000 --- a/subprojects/NitroSDK/libraries/wm/src/wm_system.c +++ /dev/null @@ -1,774 +0,0 @@ -#include - -#include "wm_arm9_private.h" - -#define WM_BUF_MSG_NUM 10 - -static u16 wmInitialized = 0; -static WMArm9Buf *wm9buf; -static u32 fifoBuf[WM_BUF_MSG_NUM][WM_FIFO_BUF_SIZE / sizeof(u32)] ATTRIBUTE_ALIGN(32); -static OSMessageQueue bufMsgQ; -static OSMessage bufMsg[WM_BUF_MSG_NUM]; - -static void WmReceiveFifo(PXIFifoTag tag, u32 fifo_buf_adr, BOOL err); -static void WmClearFifoRecvFlag(void); -static WMErrCode WmInitCore(void *wmSysBuf, u16 dmaNo, u32 bufSize); -static u32 *WmGetCommandBuffer4Arm7(void); - -WMErrCode WM_Init (void *wmSysBuf, u16 dmaNo) -{ - WMErrCode result; - result = WmInitCore(wmSysBuf, dmaNo, WM_SYSTEM_BUF_SIZE); - if (result != WM_ERRCODE_SUCCESS) - { - return result; - } - wm9buf->scanOnlyFlag = FALSE; - return result; -} - -WMErrCode WMi_InitForScan(void *wmSysBuf, u16 dmaNo); - -WMErrCode WMi_InitForScan (void *wmSysBuf, u16 dmaNo) -{ -#define WM_STATUS_BUF_SIZE_FOR_SCAN 768 -#define WM_ARM9WM_BUF_SIZE_FOR_SCAN 320 -#define WM_SYSTEM_BUF_SIZE_FOR_SCAN (WM_ARM9WM_BUF_SIZE_FOR_SCAN + WM_ARM7WM_BUF_SIZE + WM_STATUS_BUF_SIZE_FOR_SCAN + WM_FIFO_BUF_SIZE + WM_FIFO_BUF_SIZE) - - WMErrCode result; - result = WmInitCore(wmSysBuf, dmaNo, WM_SYSTEM_BUF_SIZE_FOR_SCAN); - if (result != WM_ERRCODE_SUCCESS) - { - return result; - } - wm9buf = (WMArm9Buf *)wmSysBuf; - wm9buf->WM7 = (WMArm7Buf *)((u32)wm9buf + WM_ARM9WM_BUF_SIZE_FOR_SCAN); - wm9buf->status = (WMStatus *)((u32)(wm9buf->WM7) + WM_ARM7WM_BUF_SIZE); - wm9buf->fifo9to7 = (u32 *)((u32)(wm9buf->status) + WM_STATUS_BUF_SIZE_FOR_SCAN); - wm9buf->fifo7to9 = (u32 *)((u32)(wm9buf->fifo9to7) + WM_FIFO_BUF_SIZE); - wm9buf->dmaNo = dmaNo; - wm9buf->scanOnlyFlag = TRUE; - - return result; -} - -static WMErrCode WmInitCore (void *wmSysBuf, u16 dmaNo, u32 bufSize) -{ - OSIntrMode e; - - SDK_COMPILER_ASSERT(sizeof(WMArm9Buf) <= WM_ARM9WM_BUF_SIZE); - SDK_COMPILER_ASSERT(sizeof(WMArm7Buf) <= WM_ARM7WM_BUF_SIZE); - SDK_COMPILER_ASSERT(sizeof(WMStatus) <= WM_STATUS_BUF_SIZE); - - e = OS_DisableInterrupts(); - - if (wmInitialized) - { - (void)OS_RestoreInterrupts(e); - return WM_ERRCODE_ILLEGAL_STATE; - } - - if (wmSysBuf == NULL) - { - WM_WARNING("Parameter \"wmSysBuf\" must not be NULL.\n"); - (void)OS_RestoreInterrupts(e); - return WM_ERRCODE_INVALID_PARAM; - } - - if (dmaNo > MI_DMA_MAX_NUM) - { - WM_WARNING("Parameter \"dmaNo\" is over %d.\n", MI_DMA_MAX_NUM); - (void)OS_RestoreInterrupts(e); - return WM_ERRCODE_INVALID_PARAM; - } - - if ((u32)wmSysBuf & 0x01f) - { - WM_WARNING("Parameter \"wmSysBuf\" must be 32-byte aligned.\n"); - (void)OS_RestoreInterrupts(e); - return WM_ERRCODE_INVALID_PARAM; - } - - PXI_Init(); - if (!PXI_IsCallbackReady(PXI_FIFO_TAG_WM, PXI_PROC_ARM7)) - { - WM_WARNING("WM library on ARM7 side is not ready yet.\n"); - (void)OS_RestoreInterrupts(e); - return WM_ERRCODE_WM_DISABLE; - } - - DC_InvalidateRange(wmSysBuf, bufSize); - - MI_DmaClear32(dmaNo, wmSysBuf, bufSize); - wm9buf = (WMArm9Buf *)wmSysBuf; - wm9buf->WM7 = (WMArm7Buf *)((u32)wm9buf + WM_ARM9WM_BUF_SIZE); - wm9buf->status = (WMStatus *)((u32)(wm9buf->WM7) + WM_ARM7WM_BUF_SIZE); - wm9buf->fifo9to7 = (u32 *)((u32)(wm9buf->status) + WM_STATUS_BUF_SIZE); - wm9buf->fifo7to9 = (u32 *)((u32)(wm9buf->fifo9to7) + WM_FIFO_BUF_SIZE); - - WmClearFifoRecvFlag(); - - wm9buf->dmaNo = dmaNo; - wm9buf->connectedAidBitmap = 0x0000; - wm9buf->myAid = 0; - - { - s32 i; - - for (i = 0; i < WM_NUM_OF_PORT; i++) - { - wm9buf->portCallbackTable[i] = NULL; - wm9buf->portCallbackArgument[i] = NULL; - } - } - - { - s32 i; - - OS_InitMessageQueue(&bufMsgQ, bufMsg, WM_BUF_MSG_NUM); - for (i = 0; i < WM_BUF_MSG_NUM; i++) - { - *((u16 *)(fifoBuf[i])) = WM_API_REQUEST_ACCEPTED; - DC_StoreRange(fifoBuf[i], 2); - (void)OS_SendMessage(&bufMsgQ, fifoBuf[i], OS_MESSAGE_BLOCK); - } - } - - PXI_SetFifoRecvCallback(PXI_FIFO_TAG_WM, WmReceiveFifo); - - wmInitialized = 1; - (void)OS_RestoreInterrupts(e); - return WM_ERRCODE_SUCCESS; -} - -WMErrCode WM_Finish (void) -{ - OSIntrMode e; - WMErrCode result; - - e = OS_DisableInterrupts(); - - result = WMi_CheckInitialized(); - if (result != WM_ERRCODE_SUCCESS) - { - (void)OS_RestoreInterrupts(e); - return WM_ERRCODE_ILLEGAL_STATE; - } - - result = WMi_CheckState(WM_STATE_READY); - WM_CHECK_RESULT(result); - - WmClearFifoRecvFlag(); - PXI_SetFifoRecvCallback(PXI_FIFO_TAG_WM, NULL); - wm9buf = 0; - - wmInitialized = 0; - (void)OS_RestoreInterrupts(e); - return WM_ERRCODE_SUCCESS; -} - -void WMi_SetCallbackTable (WMApiid id, WMCallbackFunc callback) -{ - SDK_NULL_ASSERT(wm9buf); - wm9buf->CallbackTable[id] = callback; -} - -u32 * WmGetCommandBuffer4Arm7 (void) -{ - u32 * tmpAddr; - - if (FALSE == OS_ReceiveMessage(&bufMsgQ, (OSMessage *)&tmpAddr, OS_MESSAGE_NOBLOCK)) - { - return NULL; - } - - DC_InvalidateRange(tmpAddr, 2); - if ((*((u16 *)tmpAddr) & WM_API_REQUEST_ACCEPTED) == 0) - { - (void)OS_JamMessage(&bufMsgQ, tmpAddr, OS_MESSAGE_BLOCK); - return NULL; - } - - return tmpAddr; -} - -WMErrCode WMi_SendCommand (WMApiid id, u16 paramNum, ...) -{ - va_list vlist; - s32 i; - int result; - u32 *tmpAddr; - - SDK_NULL_ASSERT(wm9buf); - - tmpAddr = WmGetCommandBuffer4Arm7(); - if (tmpAddr == NULL) - { - return WM_ERRCODE_FIFO_ERROR; - } - - *(u16 *)tmpAddr = (u16)id; - - va_start(vlist, paramNum); - for (i = 0; i < paramNum; i++) - { - tmpAddr[i + 1] = va_arg(vlist, u32); - } - va_end(vlist); - - DC_StoreRange(tmpAddr, WM_FIFO_BUF_SIZE); - - result = PXI_SendWordByFifo(PXI_FIFO_TAG_WM, (u32)tmpAddr, FALSE); - - (void)OS_SendMessage(&bufMsgQ, tmpAddr, OS_MESSAGE_BLOCK); - - if (result < 0) - { - WM_WARNING("Failed to send command through FIFO.\n"); - return WM_ERRCODE_FIFO_ERROR; - } - - return WM_ERRCODE_OPERATING; -} - -WMErrCode WMi_SendCommandDirect (void *data, u32 length) -{ - int result; - u32 * tmpAddr; - - SDK_NULL_ASSERT(wm9buf); - SDK_ASSERT(length <= WM_FIFO_BUF_SIZE); - - tmpAddr = WmGetCommandBuffer4Arm7(); - if (tmpAddr == NULL) - { - return WM_ERRCODE_FIFO_ERROR; - } - - MI_CpuCopy8(data, tmpAddr, length); - DC_StoreRange(tmpAddr, length); - - result = PXI_SendWordByFifo(PXI_FIFO_TAG_WM, (u32)tmpAddr, FALSE); - - (void)OS_SendMessage(&bufMsgQ, tmpAddr, OS_MESSAGE_BLOCK); - - if (result < 0) - { - WM_WARNING("Failed to send command through FIFO.\n"); - return WM_ERRCODE_FIFO_ERROR; - } - - return WM_ERRCODE_OPERATING; -} - -WMArm9Buf * WMi_GetSystemWork (void) -{ - return wm9buf; -} - -WMErrCode WMi_CheckInitialized (void) -{ - if (!wmInitialized) - { - WM_WARNING("WM library is not initialized yet.\n"); - return WM_ERRCODE_ILLEGAL_STATE; - } - return WM_ERRCODE_SUCCESS; -} - -WMErrCode WMi_CheckIdle (void) -{ - WMErrCode result; - - result = WMi_CheckInitialized(); - WM_CHECK_RESULT(result); - - DC_InvalidateRange(&(wm9buf->status->state), 2); - if ((wm9buf->status->state == WM_STATE_READY) || (wm9buf->status->state == WM_STATE_STOP)) - { - WM_WARNING("WM state is \"%d\" now. So can't execute request.\n", wm9buf->status->state); - return WM_ERRCODE_ILLEGAL_STATE; - } - - return WM_ERRCODE_SUCCESS; -} - -WMErrCode WMi_CheckStateEx (s32 paramNum, ...) -{ - WMErrCode result; - u16 now; - u32 temp; - va_list vlist; - - result = WMi_CheckInitialized(); - WM_CHECK_RESULT(result); - - DC_InvalidateRange(&(wm9buf->status->state), 2); - now = wm9buf->status->state; - - result = WM_ERRCODE_ILLEGAL_STATE; - va_start(vlist, paramNum); - for (; paramNum; paramNum--) - { - temp = va_arg(vlist, u32); - if (temp == now) - { - result = WM_ERRCODE_SUCCESS; - } - } - va_end(vlist); - - if (result == WM_ERRCODE_ILLEGAL_STATE) - { - WM_WARNING("WM state is \"%d\" now. So can't execute request.\n", now); - } - - return result; -} - -static void WmReceiveFifo (PXIFifoTag tag, u32 fifo_buf_adr, BOOL err) -{ -#pragma unused(tag) - - WMCallback *callback_p = (WMCallback *)fifo_buf_adr; - WMArm9Buf *w9b = wm9buf; -#ifdef WM_DEBUG_CALLBACK - int beginVcount = GX_GetVCount(); -#endif - - if (err) - return; - - DC_InvalidateRange(w9b->fifo7to9, WM_FIFO_BUF_SIZE); - if (!w9b->scanOnlyFlag) - { - DC_InvalidateRange(w9b->status, WM_STATUS_BUF_SIZE); - } - - if ((u32)callback_p != (u32)(w9b->fifo7to9)) - { - DC_InvalidateRange(callback_p, WM_FIFO_BUF_SIZE); - } - - if (callback_p->apiid >= WM_NUM_OF_CALLBACK) - { - if (callback_p->apiid == WM_APIID_INDICATION) - { -#if SDK_VERSION_WL >= 21000 - if (callback_p->errcode == WM_ERRCODE_FLASH_ERROR) - { - OS_Terminate(); - } -#endif - if (w9b->indCallback != NULL) - { - w9b->indCallback((void *)callback_p); - } - } - else if (callback_p->apiid == WM_APIID_PORT_RECV) - { - WMPortRecvCallback *cb_Port = (WMPortRecvCallback *)callback_p; - SDK_ASSERT(cb_Port->port < 16); - - if (w9b->portCallbackTable[cb_Port->port] != NULL) - { - cb_Port->arg = w9b->portCallbackArgument[cb_Port->port]; - cb_Port->connectedAidBitmap = (u16)w9b->connectedAidBitmap; - DC_InvalidateRange(cb_Port->recvBuf, w9b->status->mp_recvBufSize); - (w9b->portCallbackTable[cb_Port->port]) ((void *)cb_Port); - } -#ifdef WM_DEBUG - else - { - WM_DPRINTF("Warning: no callback function on port %d { %04x %04x ... }\n", - cb_Port->port, cb_Port->data[0], cb_Port->data[1]); - } -#endif - } - else if (callback_p->apiid == WM_APIID_PORT_SEND) - { - - WMPortSendCallback *cb_Port = (WMPortSendCallback *)callback_p; - callback_p->apiid = WM_APIID_SET_MP_DATA; - if (cb_Port->callback != NULL) - { - (cb_Port->callback) ((void *)cb_Port); - } - } - else - { - OS_Printf("ARM9: no callback function\n"); - } - } - else - { - if (callback_p->apiid == WM_APIID_START_MP) - { - WMStartMPCallback *cb_StartMP = (WMStartMPCallback *)callback_p; - if (cb_StartMP->state == WM_STATECODE_MPEND_IND - || cb_StartMP->state == WM_STATECODE_MP_IND) - { - if (cb_StartMP->errcode == WM_ERRCODE_SUCCESS) - { - DC_InvalidateRange(cb_StartMP->recvBuf, w9b->status->mp_recvBufSize); - } - } - } - - if (callback_p->apiid == WM_APIID_END) - { - if (callback_p->errcode == WM_ERRCODE_SUCCESS) - { - WMCallbackFunc cb = w9b->CallbackTable[callback_p->apiid]; - - (void)WM_Finish(); - if (cb != NULL) - { - cb((void *)callback_p); - } - - WM_DLOGF_CALLBACK("Cb[%x]", callback_p->apiid); - - return; - } - } - - if (NULL != w9b->CallbackTable[callback_p->apiid]) - { - (w9b->CallbackTable[callback_p->apiid]) ((void *)callback_p); - - if (!wmInitialized) - { - return; - } - } - - if (callback_p->apiid == WM_APIID_START_PARENT - || callback_p->apiid == WM_APIID_START_CONNECT) - { - u16 state, aid, myAid, reason; - u8 *macAddress; - u8 *ssid; - u16 parentSize, childSize; - - if (callback_p->apiid == WM_APIID_START_PARENT) - { - WMStartParentCallback *cb = (WMStartParentCallback *)callback_p; - state = cb->state; - aid = cb->aid; - myAid = 0; - macAddress = cb->macAddress; - ssid = cb->ssid; - reason = cb->reason; - parentSize = cb->parentSize; - childSize = cb->childSize; - } - else if (callback_p->apiid == WM_APIID_START_CONNECT) - { - WMStartConnectCallback *cb = (WMStartConnectCallback *)callback_p; - state = cb->state; - aid = 0; - myAid = cb->aid; - macAddress = cb->macAddress; - ssid = NULL; - reason = cb->reason; - parentSize = cb->parentSize; - childSize = cb->childSize; - } - if (state == WM_STATECODE_CONNECTED || - state == WM_STATECODE_DISCONNECTED - || state == WM_STATECODE_DISCONNECTED_FROM_MYSELF) - { - - static WMPortRecvCallback cb_Port; - u16 iPort; - - - if (state == WM_STATECODE_CONNECTED) - { -#ifdef WM_DEBUG - if (w9b->connectedAidBitmap & (1 << aid)) - { - WM_DPRINTF("Warning: someone is connecting to connected aid: %d (%04x)", - aid, w9b->connectedAidBitmap); - } -#endif - WM_DLOGF_AIDBITMAP("aid(%d) connected: %04x -> %04x", aid, - w9b->connectedAidBitmap, - w9b->connectedAidBitmap | (1 << aid)); - w9b->connectedAidBitmap |= (1 << aid); - } - else - { -#ifdef WM_DEBUG - if (!(w9b->connectedAidBitmap & (1 << aid))) - { - WM_DPRINTF - ("Warning: someone is disconnecting to disconnected aid: %d (%04x)", - aid, w9b->connectedAidBitmap); - } -#endif - WM_DLOGF_AIDBITMAP("aid(%d) disconnected: %04x -> %04x", aid, - w9b->connectedAidBitmap, - w9b->connectedAidBitmap & ~(1 << aid)); - w9b->connectedAidBitmap &= ~(1 << aid); - } - w9b->myAid = myAid; - - MI_CpuClear8(&cb_Port, sizeof(WMPortRecvCallback)); - cb_Port.apiid = WM_APIID_PORT_RECV; - cb_Port.errcode = WM_ERRCODE_SUCCESS; - cb_Port.state = state; - cb_Port.recvBuf = NULL; - cb_Port.data = NULL; - cb_Port.length = 0; - cb_Port.aid = aid; - cb_Port.myAid = myAid; - cb_Port.connectedAidBitmap = (u16)w9b->connectedAidBitmap; - cb_Port.seqNo = 0xffff; - cb_Port.reason = reason; - MI_CpuCopy8(macAddress, cb_Port.macAddress, WM_SIZE_MACADDR); - if (ssid != NULL) - { - MI_CpuCopy16(ssid, cb_Port.ssid, WM_SIZE_CHILD_SSID); - } - else - { - MI_CpuClear16(cb_Port.ssid, WM_SIZE_CHILD_SSID); - } - cb_Port.maxSendDataSize = (myAid == 0) ? parentSize : childSize; - cb_Port.maxRecvDataSize = (myAid == 0) ? childSize : parentSize; - - - for (iPort = 0; iPort < WM_NUM_OF_PORT; iPort++) - { - cb_Port.port = iPort; - if (w9b->portCallbackTable[iPort] != NULL) - { - cb_Port.arg = w9b->portCallbackArgument[iPort]; - (w9b->portCallbackTable[iPort]) ((void *)&cb_Port); - } - } - } - } - } - - DC_InvalidateRange(w9b->fifo7to9, WM_FIFO_BUF_SIZE); - WmClearFifoRecvFlag(); - - if ((u32)callback_p != (u32)(w9b->fifo7to9)) - { - callback_p->apiid |= WM_API_REQUEST_ACCEPTED; - DC_StoreRange(callback_p, WM_FIFO_BUF_SIZE); - } - - WM_DLOGF2_CALLBACK(beginVcount, "[CB](%x)", callback_p->apiid); - - return; -} - -static void WmClearFifoRecvFlag (void) -{ - if (OS_GetSystemWork()->wm_callback_control & WM_EXCEPTION_CB_MASK) - { - OS_GetSystemWork()->wm_callback_control &= ~WM_EXCEPTION_CB_MASK; - } -} - -void WMi_DebugPrintSendQueue (WMPortSendQueue *queue) -{ - WMstatus *status = wm9buf->status; - WMPortSendQueueData *queueData; - u16 index; - - DC_InvalidateRange(wm9buf->status, WM_STATUS_BUF_SIZE); - queueData = status->sendQueueData; - - OS_Printf("head = %d, tail = %d, ", queue->head, queue->tail); - if (queue->tail != WM_SEND_QUEUE_END) - { - OS_Printf("%s", (queueData[queue->tail].next == WM_SEND_QUEUE_END) ? "valid" : "invalid"); - } - OS_Printf("\n"); - for (index = queue->head; index != WM_SEND_QUEUE_END; index = queueData[index].next) - { - WMPortSendQueueData *data = &(queueData[index]); - - OS_Printf("queueData[%d] -> %d { port=%d, destBitmap=%x, size=%d } \n", index, data->next, - data->port, data->destBitmap, data->size); - } - -} - -void WMi_DebugPrintAllSendQueue (void) -{ - WMstatus *status = wm9buf->status; - DC_InvalidateRange(wm9buf->status, WM_STATUS_BUF_SIZE); - OS_Printf("== ready queue [2]\n"); - OS_Printf(" head: %d, tail: %d\n", status->readyQueue[2].head, status->readyQueue[2].tail); -} - -const WMStatus * WMi_GetStatusAddress (void) -{ - if (WMi_CheckInitialized() != WM_ERRCODE_SUCCESS) - { - return NULL; - } - - return wm9buf->status; -} - -BOOL WMi_CheckMpPacketTimeRequired (u16 parentSize, u16 childSize, u8 childs) -{ - s32 mp_time; - mp_time = (( - 96 - + (24 - + 4 - + 2 - + parentSize + 4 - + 4 - ) * 4 - ) + ( - (10 - + 96 - + (24 - + 2 - + childSize + 2 - + 4 - ) * 4 - + 6 - ) * childs) + ( - 10 - + 96 - + (24 - + 4 - + 4 - ) * 4 - )); - - if (mp_time > WM_MAX_MP_PACKET_TIME) - { - OS_TWarning - ("It is required %dus to transfer each MP packet.\nThat should not exceed %dus.\n", - mp_time, WM_MAX_MP_PACKET_TIME); - return FALSE; - } - return TRUE; -} - -BOOL WMi_IsMP (void) -{ - WMStatus *status; - BOOL isMP; - OSIntrMode e; - -#ifdef SDK_DEBUG - if (WMi_CheckInitialized() != WM_ERRCODE_SUCCESS) - { - return FALSE; - } -#endif - - e = OS_DisableInterrupts(); - - if (wm9buf != NULL) - { - status = wm9buf->status; - DC_InvalidateRange(&(status->mp_flag), 4); - isMP = status->mp_flag; - } - else - { - isMP = FALSE; - } - - (void)OS_RestoreInterrupts(e); - return isMP; -} - -u16 WM_GetAID (void) -{ - u16 myAid; - OSIntrMode e; - -#ifdef SDK_DEBUG - if (WMi_CheckInitialized() != WM_ERRCODE_SUCCESS) - { - return 0; - } -#endif - - e = OS_DisableInterrupts(); - - if (wm9buf != NULL) - { - myAid = wm9buf->myAid; - } - else - { - myAid = 0; - } - - (void)OS_RestoreInterrupts(e); - return myAid; -} - -u16 WM_GetConnectedAIDs (void) -{ - u32 connectedAidBitmap; - OSIntrMode e; - -#ifdef SDK_DEBUG - - if (WMi_CheckInitialized() != WM_ERRCODE_SUCCESS) - { - return 0; - } -#endif - - e = OS_DisableInterrupts(); - - if (wm9buf != NULL) - { - connectedAidBitmap = wm9buf->connectedAidBitmap; - } - else - { - connectedAidBitmap = 0; - } - - (void)OS_RestoreInterrupts(e); - return (u16)connectedAidBitmap; -} - -u16 WMi_GetMPReadyAIDs (void) -{ - WMStatus *status; - u16 mpReadyAidBitmap; - OSIntrMode e; - -#ifdef SDK_DEBUG - if (WMi_CheckInitialized() != WM_ERRCODE_SUCCESS) - { - return FALSE; - } -#endif - - e = OS_DisableInterrupts(); - - if (wm9buf != NULL) - { - status = wm9buf->status; - DC_InvalidateRange(&(status->mp_readyBitmap), 2); - mpReadyAidBitmap = status->mp_readyBitmap; - } - else - { - mpReadyAidBitmap = FALSE; - } - - - (void)OS_RestoreInterrupts(e); - return mpReadyAidBitmap; -} diff --git a/subprojects/NitroSDK/libraries/wvr/meson.build b/subprojects/NitroSDK/libraries/wvr/meson.build deleted file mode 100644 index e4a259e8d9..0000000000 --- a/subprojects/NitroSDK/libraries/wvr/meson.build +++ /dev/null @@ -1,11 +0,0 @@ -libwvr_srcs = files('src/wvr.c') - -libwvr = static_library('wvr', - sources: [libwvr_srcs, fx_const_h], - c_args: [c_args, sdk_args], - include_directories: [public_includes], - c_pch: nitro_pch, - pic: false -) - -nitrosdk_libs += libwvr diff --git a/subprojects/NitroSDK/libraries/wvr/src/wvr.c b/subprojects/NitroSDK/libraries/wvr/src/wvr.c deleted file mode 100644 index 113c62fc7f..0000000000 --- a/subprojects/NitroSDK/libraries/wvr/src/wvr.c +++ /dev/null @@ -1,187 +0,0 @@ -#include -#include -#include -#include -#include -#include - -static void WvrReceiveCallback(PXIFifoTag tag, u32 data, BOOL err); -static void WvrDummyAsyncCallback(void * arg, WVRResult result); - -static WVRCallbackFunc wvrCallback = NULL; -static void * wvrArg = NULL; -static vu16 wvrVRam = 0; -static vu16 wvrLockId = 0; - -WVRResult WVR_StartUpAsync (GXVRamARM7 vram, WVRCallbackFunc callback, void * arg) { - OSIntrMode e; - - PXI_Init(); - if (!PXI_IsCallbackReady(PXI_FIFO_TAG_WVR, PXI_PROC_ARM7)) { - return WVR_RESULT_DISABLE; - } - - while (wvrLockId == 0) { - s32 result = OS_GetLockID(); - - if (result == OS_LOCK_ID_ERROR) { - return WVR_RESULT_FATAL_ERROR; - } - wvrLockId = (u16)result; - } - - e = OS_DisableInterrupts(); - - if (wvrCallback != NULL) { - (void)OS_RestoreInterrupts(e); - return WVR_RESULT_ILLEGAL_STATUS; - } - - if (wvrVRam) { - (void)OS_RestoreInterrupts(e); - return WVR_RESULT_ILLEGAL_STATUS; - } - switch (vram) { - case GX_VRAM_ARM7_128_C: - - if (!OSi_TryLockVram(OS_VRAM_BANK_ID_C, wvrLockId)) { - (void)OS_RestoreInterrupts(e); - return WVR_RESULT_VRAM_LOCKED; - } - wvrVRam = OS_VRAM_BANK_ID_C; - - reg_GX_VRAMCNT_C = ((2 << REG_GX_VRAMCNT_C_MST_SHIFT) | - (0 << REG_GX_VRAMCNT_C_OFS_SHIFT) | (1 << REG_GX_VRAMCNT_C_E_SHIFT)); - break; - case GX_VRAM_ARM7_128_D: - - if (!OSi_TryLockVram(OS_VRAM_BANK_ID_D, wvrLockId)) { - (void)OS_RestoreInterrupts(e); - return WVR_RESULT_VRAM_LOCKED; - } - wvrVRam = OS_VRAM_BANK_ID_D; - - reg_GX_VRAMCNT_D = ((2 << REG_GX_VRAMCNT_D_MST_SHIFT) | - (0 << REG_GX_VRAMCNT_D_OFS_SHIFT) | (1 << REG_GX_VRAMCNT_D_E_SHIFT)); - break; - case GX_VRAM_ARM7_256_CD: - - if (!OSi_TryLockVram((OS_VRAM_BANK_ID_C | OS_VRAM_BANK_ID_D), wvrLockId)) { - (void)OS_RestoreInterrupts(e); - return WVR_RESULT_VRAM_LOCKED; - } - wvrVRam = OS_VRAM_BANK_ID_C | OS_VRAM_BANK_ID_D; - - reg_GX_VRAMCNT_C = ((2 << REG_GX_VRAMCNT_C_MST_SHIFT) | - (0 << REG_GX_VRAMCNT_C_OFS_SHIFT) | (1 << REG_GX_VRAMCNT_C_E_SHIFT)); - reg_GX_VRAMCNT_D = ((2 << REG_GX_VRAMCNT_D_MST_SHIFT) | - (1 << REG_GX_VRAMCNT_D_OFS_SHIFT) | (1 << REG_GX_VRAMCNT_D_E_SHIFT)); - break; - default: - (void)OS_RestoreInterrupts(e); - return WVR_RESULT_INVALID_PARAM; - } - - if (!PXI_IsCallbackReady(PXI_FIFO_TAG_WVR, PXI_PROC_ARM9)) { - PXI_SetFifoRecvCallback(PXI_FIFO_TAG_WVR, WvrReceiveCallback); - } - - if (callback == NULL) { - wvrCallback = WvrDummyAsyncCallback; - } else { - wvrCallback = callback; - } - wvrArg = arg; - - if (0 > PXI_SendWordByFifo(PXI_FIFO_TAG_WVR, WVR_PXI_COMMAND_STARTUP, FALSE)) { - OSi_UnlockVram(wvrVRam, wvrLockId); - wvrVRam = 0; - wvrCallback = NULL; - (void)OS_RestoreInterrupts(e); - return WVR_RESULT_FIFO_ERROR; - } - - (void)OS_RestoreInterrupts(e); - return WVR_RESULT_OPERATING; -} - -WVRResult WVR_TerminateAsync (WVRCallbackFunc callback, void * arg) { - OSIntrMode e; - - PXI_Init(); - if (!PXI_IsCallbackReady(PXI_FIFO_TAG_WVR, PXI_PROC_ARM7)) { - return WVR_RESULT_DISABLE; - } - - e = OS_DisableInterrupts(); - - if (wvrCallback != NULL) { - (void)OS_RestoreInterrupts(e); - return WVR_RESULT_ILLEGAL_STATUS; - } - - if (!PXI_IsCallbackReady(PXI_FIFO_TAG_WVR, PXI_PROC_ARM9)) { - PXI_SetFifoRecvCallback(PXI_FIFO_TAG_WVR, WvrReceiveCallback); - } - - if (callback == NULL) { - wvrCallback = WvrDummyAsyncCallback; - } else { - wvrCallback = callback; - } - wvrArg = arg; - - if (0 > PXI_SendWordByFifo(PXI_FIFO_TAG_WVR, WVR_PXI_COMMAND_TERMINATE, FALSE)) { - wvrCallback = NULL; - (void)OS_RestoreInterrupts(e); - return WVR_RESULT_FIFO_ERROR; - } - - (void)OS_RestoreInterrupts(e); - return WVR_RESULT_OPERATING; -} - -static void WvrReceiveCallback (PXIFifoTag tag, u32 data, BOOL err) { -#pragma unused( tag , err ) - - WVRCallbackFunc cb = wvrCallback; - void * cbArg = wvrArg; - WVRResult result = (WVRResult)(data & 0x000000ff); - - switch (data & 0xffff0000) { - case WVR_PXI_COMMAND_STARTUP: - switch (result) { - case WVR_RESULT_FATAL_ERROR: - - if ((wvrVRam != 0) && (wvrLockId != 0)) { - OSi_UnlockVram(wvrVRam, wvrLockId); - wvrVRam = 0; - } - break; - } - break; - case WVR_PXI_COMMAND_TERMINATE: - switch (result) { - case WVR_RESULT_SUCCESS: - - if ((wvrVRam != 0) && (wvrLockId != 0)) { - OSi_UnlockVram(wvrVRam, wvrLockId); - wvrVRam = 0; - } - break; - } - - PXI_SetFifoRecvCallback(PXI_FIFO_TAG_WVR, NULL); - break; - } - - if (cb != NULL) { - wvrCallback = NULL; - wvrArg = NULL; - cb(cbArg, result); - } -} - -static void WvrDummyAsyncCallback (void * arg, WVRResult result) { -#pragma unused( arg , result ) -} diff --git a/subprojects/NitroSDK/meson.build b/subprojects/NitroSDK/meson.build deleted file mode 100644 index e88e7c74e2..0000000000 --- a/subprojects/NitroSDK/meson.build +++ /dev/null @@ -1,62 +0,0 @@ -project('NitroSDK', ['c', 'nasm']) - -# Compiler flags -c_args = [ - '-wrap:ver', '2.0/sp1p2', - '-O4,p', - '-proc', 'arm946e', - '-enum', 'int', - '-lang', 'c99', - '-Cpp_exceptions', 'off', - '-gccext,on', - '-msgstyle', 'gcc', - '-ipa', 'file', - '-interworking', - '-inline', 'on,noauto', - '-char', 'signed', - '-nosyspath', - '-stdinc' -] - -asm_args = [ - '-proc', 'arm5TE', - '-gccinc' -] - -sdk_args = [ - '-DSDK_CW_FORCE_EXPORT_SUPPORT', - '-DSDK_TS', - '-DSDK_4M', - '-DSDK_ARM9', - '-DSDK_CW', - '-DSDK_FINALROM', - '-DSDK_CODE_ARM', - '-DNNS_FINALROM' -] - -# Public includes -public_includes = [include_directories('include')] -nitro_pch = meson.current_source_dir() / 'include/pch/nitro_pch.h' - -# arm7 components -subdir('components') - -# spec files -subdir('specfiles') - -# Generated headers -subdir('autogen') -public_includes += include_directories('autogen') - -# Libraries -nitrosdk_libs = [] -subdir('libraries') - -# Own dependency for consumers -nitrosdk_dep = declare_dependency( - compile_args: sdk_args, - include_directories: public_includes, - link_with: nitrosdk_libs, - objects: crt0_obj, - sources: fx_const_h -) \ No newline at end of file diff --git a/subprojects/NitroSDK/specfiles/ARM9-TS.lcf.template b/subprojects/NitroSDK/specfiles/ARM9-TS.lcf.template deleted file mode 100644 index 64b8b83886..0000000000 --- a/subprojects/NitroSDK/specfiles/ARM9-TS.lcf.template +++ /dev/null @@ -1,591 +0,0 @@ -MEMORY -{ - (RWX) : ORIGIN = , LENGTH = 0x0 > - - (RWX) : ORIGIN = , LENGTH = 0x0 >> - - binary.AUTOLOAD_INFO (RWX) : ORIGIN = 0, LENGTH = 0x0 >> - binary.STATIC_FOOTER (RWX) : ORIGIN = 0, LENGTH = 0x0 >> - - (RW) : ORIGIN = AFTER(), LENGTH = 0x0 > - (RW) : ORIGIN = AFTER(), LENGTH = 0x0 > - - (RWXO): ORIGIN = , LENGTH = 0x0 > - - dummy.MAIN_EX (RW) : ORIGIN = 0x023e0000, LENGTH = 0x0 - arena.MAIN (RW) : ORIGIN = AFTER(,), LENGTH = 0x0 - arena.MAIN_EX (RW) : ORIGIN = AFTER(dummy.MAIN_EX,), LENGTH = 0x0 - arena.ITCM (RW) : ORIGIN = AFTER(ITCM,), LENGTH = 0x0 - arena.DTCM (RW) : ORIGIN = AFTER(DTCM,), LENGTH = 0x0 - binary.MODULE_FILES (RW) : ORIGIN = 0x0, LENGTH = 0x0 > component.files - check.ITCM (RWX) : ORIGIN = 0x0, LENGTH = 0x08000 > itcm.check - check.DTCM (RW) : ORIGIN = 0x0, LENGTH = 0x04000 > dtcm.check -} - -FORCE_ACTIVE -{ - SVC_SoftReset -} - -KEEP_SECTION -{ - .sinit -} - -SECTIONS -{ - ############################ STATIC ################################# - .: - { - ALIGNALL(4); . = ALIGN(32); # Fit to cache line - - - - # - # TEXT BLOCK: READ ONLY - # - SDK_STATIC_START =.; - SDK_STATIC_TEXT_START =.; - #:::::::::: text/rodata - libsyscall.a (.text) - src_crt0.c.o (.text) - src_crt0.c.o (.rodata) - - - - - OBJECT(NitroMain,*) - - - - - - - . = ALIGN(4); - * (.exception) - . = ALIGN(4); - SDK_STATIC_ETABLE_START =.; - EXCEPTION - SDK_STATIC_ETABLE_END =.; - . = ALIGN(4); - - - - - - - . = ALIGN(4); - - - - - - - . = ALIGN(4); - - SDK_STATIC_SINIT_START =.; - #:::::::::: ctor - - - - - - - - - - - - - - - - - - - - - - - - - - - WRITEW 0; - #:::::::::: ctor - SDK_STATIC_SINIT_END =.; - - #:::::::::: text/rodata - . = ALIGN(32); - SDK_STATIC_TEXT_END =.; - - # - # DATA BLOCK: READ WRITE - # - SDK_STATIC_DATA_START =.; - #:::::::::: data - - - - - - - . = ALIGN(4); - - - - - - - . = ALIGN(4); - SDK_OVERLAY_DIGEST =.; - # NO DIGEST - SDK_OVERLAY_DIGEST_END =.; - #:::::::::: data - . = ALIGN(32); - SDK_STATIC_DATA_END =.; - SDK_STATIC_END =.; - - SDK_STATIC_TEXT_SIZE = SDK_STATIC_TEXT_END - SDK_STATIC_TEXT_START; - SDK_STATIC_DATA_SIZE = SDK_STATIC_DATA_END - SDK_STATIC_DATA_START; - SDK_STATIC_SIZE = SDK_STATIC_END - SDK_STATIC_START; - __sinit__ = SDK_STATIC_SINIT_START; # for static initializer - __exception_table_start__ = SDK_STATIC_ETABLE_START; # for exception table - __exception_table_end__ = SDK_STATIC_ETABLE_END; # for exception table - } > - - ..bss: - { - ALIGNALL(4); . = ALIGN(32); - - - - # - # BSS BLOCK - # - SDK_STATIC_BSS_START =.; - #:::::::::: bss - - - - - - - . = ALIGN(4); - - - - - - - . = ALIGN(4); - #:::::::::: bss - . = ALIGN(32); - SDK_STATIC_BSS_END = .; - SDK_STATIC_BSS_SIZE = SDK_STATIC_BSS_END - SDK_STATIC_BSS_START; - - } >> - - - ############################ AUTOLOADS ############################## - SDK_AUTOLOAD.ITCM.START = 0x01ff8000; - SDK_AUTOLOAD.ITCM.END = SDK_AUTOLOAD.ITCM.START; - SDK_AUTOLOAD.ITCM.BSS_END = SDK_AUTOLOAD.ITCM.START; - SDK_AUTOLOAD.ITCM.SIZE = 0; - SDK_AUTOLOAD.ITCM.BSS_SIZE = 0; - SDK_AUTOLOAD.DTCM.START = 0x027e0000; - SDK_AUTOLOAD.DTCM.END = SDK_AUTOLOAD.DTCM.START; - SDK_AUTOLOAD.DTCM.BSS_END = SDK_AUTOLOAD.DTCM.START; - SDK_AUTOLOAD.DTCM.SIZE = 0; - SDK_AUTOLOAD.DTCM.BSS_SIZE = 0; - SDK_AUTOLOAD_START = SDK_STATIC_END; - SDK_AUTOLOAD_SIZE = 0; - SDK_AUTOLOAD_NUMBER = ; - - - .: - { - ALIGNALL(4); . = ALIGN(32); - - - - # - # TEXT BLOCK: READ ONLY - # - SDK_AUTOLOAD__ID =; - SDK_AUTOLOAD..ID =; - SDK_AUTOLOAD..START =.; - SDK_AUTOLOAD..TEXT_START =.; - #:::::::::: text/rodata - - - - - - - . = ALIGN(4); - - - - - - - . = ALIGN(4); - - - - - - - . = ALIGN(4); - - - - - - - . = ALIGN(4); - #:::::::::: text/rodata - SDK_AUTOLOAD..TEXT_END =.; - - # - # DATA BLOCK: READ WRITE BLOCK - # - SDK_AUTOLOAD..DATA_START =.; - #:::::::::: data - - - - - - - . = ALIGN(4); - - - - - - - . = ALIGN(4); - - - - - - - . = ALIGN(4); - #:::::::::: data - . = ALIGN(32); - SDK_AUTOLOAD..DATA_END =.; - SDK_AUTOLOAD..END =.; - - SDK_AUTOLOAD..TEXT_SIZE = SDK_AUTOLOAD..TEXT_END - SDK_AUTOLOAD..TEXT_START; - SDK_AUTOLOAD..DATA_SIZE = SDK_AUTOLOAD..DATA_END - SDK_AUTOLOAD..DATA_START; - SDK_AUTOLOAD..SIZE = SDK_AUTOLOAD..END - SDK_AUTOLOAD..START; - SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SDK_AUTOLOAD..SIZE; - - } > - - ..bss: - { - ALIGNALL(4); . = ALIGN(32); - - - - # - # BSS BLOCK - # - SDK_AUTOLOAD..BSS_START = .; - #:::::::::: bss - - - - - - - . = ALIGN(4); - - - - - - - . = ALIGN(4); - - - - - - - . = ALIGN(4); - - - - - - - . = ALIGN(4); - #:::::::::: bss - . = ALIGN(32); - SDK_AUTOLOAD..BSS_END = .; - - SDK_AUTOLOAD..BSS_SIZE = SDK_AUTOLOAD..BSS_END - SDK_AUTOLOAD..BSS_START; - - } >> - - - - SDK_AUTOLOAD_ITCM_START = SDK_AUTOLOAD.ITCM.START; - SDK_AUTOLOAD_ITCM_END = SDK_AUTOLOAD.ITCM.END; - SDK_AUTOLOAD_ITCM_BSS_END = SDK_AUTOLOAD.ITCM.BSS_END; - SDK_AUTOLOAD_ITCM_SIZE = SDK_AUTOLOAD.ITCM.SIZE; - SDK_AUTOLOAD_ITCM_BSS_SIZE = SDK_AUTOLOAD.ITCM.BSS_SIZE; - SDK_AUTOLOAD_DTCM_START = SDK_AUTOLOAD.DTCM.START; - SDK_AUTOLOAD_DTCM_END = SDK_AUTOLOAD.DTCM.END; - SDK_AUTOLOAD_DTCM_BSS_END = SDK_AUTOLOAD.DTCM.BSS_END; - SDK_AUTOLOAD_DTCM_SIZE = SDK_AUTOLOAD.DTCM.SIZE; - SDK_AUTOLOAD_DTCM_BSS_SIZE = SDK_AUTOLOAD.DTCM.BSS_SIZE; - - ############################ AUTOLOAD_INFO ########################## - .binary.AUTOLOAD_INFO: - { - - WRITEW ADDR(.); - WRITEW SDK_AUTOLOAD..SIZE; - WRITEW SDK_AUTOLOAD..BSS_SIZE; - - } > binary.AUTOLOAD_INFO - - SDK_AUTOLOAD_LIST = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE; - SDK_AUTOLOAD_LIST_END = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE + SIZEOF(.binary.AUTOLOAD_INFO); - SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SIZEOF(.binary.AUTOLOAD_INFO); - - ############################ STATIC_FOOTER ########################## - .binary.STATIC_FOOTER: - { - WRITEW 0xdec00621; # LE(0x2106C0DE) = NITRO CODE - WRITEW _start_ModuleParams - ADDR(.); - WRITEW 0; # NO DIGEST - } > binary.STATIC_FOOTER - - ############################ OVERLAYS ############################### - SDK_OVERLAY_NUMBER = ; - - - .: - { - ALIGNALL(4); . = ALIGN(32); - - - - # - # TEXT BLOCK: READ ONLY - # - SDK_OVERLAY__ID =; ### SEGMENT OVERLAY ID - SDK_OVERLAY..ID =; - SDK_OVERLAY..START =.; - SDK_OVERLAY..TEXT_START =.; - #:::::::::: text/rodata - - - - - - - . = ALIGN(4); - - - - - - - . = ALIGN(4); - - - - - - - . = ALIGN(4); - SDK_OVERLAY..SINIT_START =.; - #:::::::::: ctor - - - - - - - - - - - - - WRITEW 0; - #:::::::::: ctor - SDK_OVERLAY..SINIT_END =.; - - #:::::::::: text/rodata - . = ALIGN(32); - SDK_OVERLAY..TEXT_END =.; - - # - # DATA BLOCK: READ WRITE - # - SDK_OVERLAY..DATA_START =.; - #:::::::::: data - - - - - - - . = ALIGN(4); - - - - - - - . = ALIGN(4); - #:::::::::: data - . = ALIGN(32); - SDK_OVERLAY..DATA_END =.; - SDK_OVERLAY..END =.; - - SDK_OVERLAY..TEXT_SIZE = SDK_OVERLAY..TEXT_END - SDK_OVERLAY..TEXT_START; - SDK_OVERLAY..DATA_SIZE = SDK_OVERLAY..DATA_END - SDK_OVERLAY..DATA_START; - SDK_OVERLAY..SIZE = SDK_OVERLAY..END - SDK_OVERLAY..START; - - } > - - ..bss: - { - ALIGNALL(4); . = ALIGN(32); - - - - # - # BSS BLOCK - # - SDK_OVERLAY..BSS_START = .; - #:::::::::: bss - - - - - - - . = ALIGN(4); - - - - - - - . = ALIGN(4); - #:::::::::: bss - . = ALIGN(32); - SDK_OVERLAY..BSS_END = .; - - SDK_OVERLAY..BSS_SIZE = SDK_OVERLAY..BSS_END - SDK_OVERLAY..BSS_START; - - } >> - - - - ############################ MAIN EX ################################## - # MAIN EX Area - .dummy.MAIN_EX: - { - . = ALIGN(32); - } > dummy.MAIN_EX - - ############################ ARENA ################################## - .arena.MAIN: - { - . = ALIGN(32); - SDK_SECTION_ARENA_START =.; - } > arena.MAIN - - .arena.MAIN_EX: - { - . = ALIGN(32); - SDK_SECTION_ARENA_EX_START =.; - } > arena.MAIN_EX - - .arena.ITCM: - { - . = ALIGN(32); - SDK_SECTION_ARENA_ITCM_START =.; - } > arena.ITCM - - .arena.DTCM: - { - . = ALIGN(32); - SDK_SECTION_ARENA_DTCM_START =.; - } > arena.DTCM - - ############################ OVERLAYDEFS ############################ - .: - { - ### module information - WRITEW ADDR(.); # load address - WRITEW _start; # entry address - WRITEW SDK_STATIC_SIZE + SDK_AUTOLOAD_SIZE; # size of module - WRITEW _start_AutoloadDoneCallback; # callback autoload done - - ### overlay filename - - WRITES (""); # Overlay - - - } > - - - ############################ OVERLAYTABLE ########################### - .: - { - - # Overlay - WRITEW ; # overlay ID - WRITEW ADDR(.); # load address - WRITEW SDK_OVERLAY..SIZE; # size of module - WRITEW SDK_OVERLAY..BSS_SIZE; # size of bss - WRITEW SDK_OVERLAY..SINIT_START; # start address of static init - WRITEW SDK_OVERLAY..SINIT_END; # end address of static init - WRITEW ; # ROM file ID - WRITEW 0; # Reserved - - - - } > - - - ############################ OTHERS ################################# - SDK_MAIN_ARENA_LO = SDK_SECTION_ARENA_START; - SDK_IRQ_STACKSIZE = ; # allocated in DTCM - SDK_SYS_STACKSIZE = ; # when 0 means all remains of DTCM - - # Module filelist - .binary.MODULE_FILES: - { - WRITES (""); - WRITES (""); - WRITES (""); - } > binary.MODULE_FILES - - # ITCM/DTCM size checker => check AUTOLOAD_ITCM/DTCM - .check.ITCM: - { - . = . + SDK_AUTOLOAD_ITCM_SIZE + SDK_AUTOLOAD_ITCM_BSS_SIZE; - } > check.ITCM - - SDK_SYS_STACKSIZE_SIGN = (SDK_SYS_STACKSIZE < 0x80000000) * 2 - 1; - .check.DTCM: - { - . = . + SDK_AUTOLOAD_DTCM_SIZE + SDK_AUTOLOAD_DTCM_BSS_SIZE; - . = . + SDK_IRQ_STACKSIZE + SDK_SYS_STACKSIZE * SDK_SYS_STACKSIZE_SIGN; - } > check.DTCM - -} diff --git a/subprojects/NitroSDK/specfiles/meson.build b/subprojects/NitroSDK/specfiles/meson.build deleted file mode 100644 index efd6d159aa..0000000000 --- a/subprojects/NitroSDK/specfiles/meson.build +++ /dev/null @@ -1 +0,0 @@ -main_lcf_template = files('ARM9-TS.lcf.template') diff --git a/subprojects/NitroSystem.wrap b/subprojects/NitroSystem.wrap new file mode 100644 index 0000000000..7c2605d1d4 --- /dev/null +++ b/subprojects/NitroSystem.wrap @@ -0,0 +1,8 @@ +[wrap-git] +url = https://github.com/Nomura-RH/NitroSystem.git +revision = head +depth = 1 +directory = NitroSystem-071126.1 + +[provide] +dependency_names = NitroSystem \ No newline at end of file diff --git a/subprojects/NitroSystem/include/nnsys.h b/subprojects/NitroSystem/include/nnsys.h deleted file mode 100644 index 87d465238e..0000000000 --- a/subprojects/NitroSystem/include/nnsys.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef NNSYS_H_ -#define NNSYS_H_ - -#include -#include -#include -#include -#include -#include - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/fnd.h b/subprojects/NitroSystem/include/nnsys/fnd.h deleted file mode 100644 index 9e4bfd548c..0000000000 --- a/subprojects/NitroSystem/include/nnsys/fnd.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef NNS_FND_H_ -#define NNS_FND_H_ - -#include -#include -#include -#include -#include -#include - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/fnd/allocator.h b/subprojects/NitroSystem/include/nnsys/fnd/allocator.h deleted file mode 100644 index 76de97fce0..0000000000 --- a/subprojects/NitroSystem/include/nnsys/fnd/allocator.h +++ /dev/null @@ -1,65 +0,0 @@ -#ifndef NNS_FND_ALLOCATOR_H_ -#define NNS_FND_ALLOCATOR_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct NNSFndAllocator NNSFndAllocator; - -typedef void * (* NNSFndFuncAllocatorAlloc)( - NNSFndAllocator * pAllocator, - u32 size); - -typedef void (* NNSFndFuncAllocatorFree)( - NNSFndAllocator * pAllocator, - void * memBlock); - -typedef struct NNSFndAllocatorFunc NNSFndAllocatorFunc; - -struct NNSFndAllocatorFunc { - NNSFndFuncAllocatorAlloc pfAlloc; - NNSFndFuncAllocatorFree pfFree; -}; - -struct NNSFndAllocator { - NNSFndAllocatorFunc const * pFunc; - void * pHeap; - u32 heapParam1; - u32 heapParam2; -}; - -void * NNS_FndAllocFromAllocator( - NNSFndAllocator * pAllocator, - u32 size); - -void NNS_FndFreeToAllocator( - NNSFndAllocator * pAllocator, - void * memBlock); - -void NNS_FndInitAllocatorForExpHeap( - NNSFndAllocator * pAllocator, - NNSFndHeapHandle heap, - int alignment); - -void NNS_FndInitAllocatorForFrmHeap( - NNSFndAllocator * pAllocator, - NNSFndHeapHandle heap, - int alignment); - -void NNS_FndInitAllocatorForUnitHeap( - NNSFndAllocator * pAllocator, - NNSFndHeapHandle heap); - -void NNS_FndInitAllocatorForSDKHeap( - NNSFndAllocator * pAllocator, - OSArenaId id, - OSHeapHandle heap); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/fnd/archive.h b/subprojects/NitroSystem/include/nnsys/fnd/archive.h deleted file mode 100644 index 531f594725..0000000000 --- a/subprojects/NitroSystem/include/nnsys/fnd/archive.h +++ /dev/null @@ -1,64 +0,0 @@ -#ifndef NNS_FND_ARCHIVE_H_ -#define NNS_FND_ARCHIVE_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct { - u32 fileTop; - u32 fileBottom; -} NNSiFndArchiveFatEntry; - -typedef struct { - u32 blockType; - u32 blockSize; - u16 numFiles; - u16 reserved; - NNSiFndArchiveFatEntry fatEntries[1]; -} NNSiFndArchiveFatData; - -typedef struct { - u32 signature; - u16 byteOrder; - u16 version; - u32 fileSize; - u16 headerSize; - u16 dataBlocks; -} NNSiFndArchiveHeader; - -typedef struct { - FSArchive fsArchive; - NNSiFndArchiveHeader * arcBinary; - NNSiFndArchiveFatData * fatData; - u32 fileImage; -} NNSFndArchive; - -BOOL NNS_FndMountArchive( - NNSFndArchive * archive, - const char * arcName, - void * arcBinary); - -BOOL NNS_FndUnmountArchive( - NNSFndArchive * archive); - -void * NNS_FndGetArchiveFileByName( - const char * path); - -void * NNS_FndGetArchiveFileByIndex( - NNSFndArchive * archive, - u32 index); - -BOOL NNS_FndOpenArchiveFileByIndex( - FSFile * file, - NNSFndArchive * archive, - u32 index); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/fnd/config.h b/subprojects/NitroSystem/include/nnsys/fnd/config.h deleted file mode 100644 index 3f0d2348a7..0000000000 --- a/subprojects/NitroSystem/include/nnsys/fnd/config.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef NNS_FND_CONFIG_H_ -#define NNS_FND_CONFIG_H_ - -#include - -#define NNS_FND_INLINE NNS_INLINE - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/fnd/expheap.h b/subprojects/NitroSystem/include/nnsys/fnd/expheap.h deleted file mode 100644 index f28c1fdcfd..0000000000 --- a/subprojects/NitroSystem/include/nnsys/fnd/expheap.h +++ /dev/null @@ -1,151 +0,0 @@ -#ifndef NNS_FND_EXPHEAP_H_ -#define NNS_FND_EXPHEAP_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -enum { - NNS_FND_EXPHEAP_ALLOC_DIR_FRONT, - NNS_FND_EXPHEAP_ALLOC_DIR_REAR -}; - -enum { - NNS_FND_EXPHEAP_ALLOC_MODE_FIRST, - - NNS_FND_EXPHEAP_ALLOC_MODE_NEAR -}; - -typedef struct NNSiFndExpHeapMBlockHead NNSiFndExpHeapMBlockHead; - -struct NNSiFndExpHeapMBlockHead { - u16 signature; - u16 attribute; - - u32 blockSize; - - NNSiFndExpHeapMBlockHead * pMBHeadPrev; - NNSiFndExpHeapMBlockHead * pMBHeadNext; -}; - -typedef struct NNSiFndExpMBlockList NNSiFndExpMBlockList; - -struct NNSiFndExpMBlockList { - NNSiFndExpHeapMBlockHead * head; - NNSiFndExpHeapMBlockHead * tail; -}; - -typedef struct NNSiFndExpHeapHead NNSiFndExpHeapHead; - -struct NNSiFndExpHeapHead { - NNSiFndExpMBlockList mbFreeList; - NNSiFndExpMBlockList mbUsedList; - - u16 groupID; - u16 feature; -}; - -typedef void (* NNSFndHeapVisitor)( - void * memBlock, - NNSFndHeapHandle heap, - u32 userParam); - -#define NNS_FndCreateExpHeap(startAddress, size) \ - NNS_FndCreateExpHeapEx(startAddress, size, 0) - -#define NNS_FndAllocFromExpHeap(heap, size) \ - NNS_FndAllocFromExpHeapEx(heap, size, NNS_FND_HEAP_DEFAULT_ALIGNMENT) - -#define NNS_FndGetAllocatableSizeForExpHeap(heap) \ - NNS_FndGetAllocatableSizeForExpHeapEx(heap, NNS_FND_HEAP_DEFAULT_ALIGNMENT) - -#if !defined(NNS_FINALROM) - -void NNSi_FndDumpExpHeap( - NNSFndHeapHandle heap); - -#endif - -NNSFndHeapHandle NNS_FndCreateExpHeapEx( - void * startAddress, - u32 size, - u16 optFlag); - -void NNS_FndDestroyExpHeap( - NNSFndHeapHandle heap); - -void * NNS_FndAllocFromExpHeapEx( - NNSFndHeapHandle heap, - u32 size, - int alignment); - -u32 NNS_FndResizeForMBlockExpHeap( - NNSFndHeapHandle heap, - void * memBlock, - u32 size); - -void NNS_FndFreeToExpHeap( - NNSFndHeapHandle heap, - void * memBlock); - -u32 NNS_FndGetTotalFreeSizeForExpHeap( - NNSFndHeapHandle heap); - -u32 NNS_FndGetAllocatableSizeForExpHeapEx( - NNSFndHeapHandle heap, - int alignment); - -u16 NNS_FndSetAllocModeForExpHeap( - NNSFndHeapHandle heap, - u16 mode); - -u16 NNS_FndGetAllocModeForExpHeap( - NNSFndHeapHandle heap); - -u16 NNS_FndSetGroupIDForExpHeap( - NNSFndHeapHandle heap, - u16 groupID); - -u16 NNS_FndGetGroupIDForExpHeap( - NNSFndHeapHandle heap); - -void NNS_FndVisitAllocatedForExpHeap( - NNSFndHeapHandle heap, - NNSFndHeapVisitor visitor, - u32 userParam); - -u32 NNS_FndGetSizeForMBlockExpHeap( - const void * memBlock); - -u16 NNS_FndGetGroupIDForMBlockExpHeap( - const void * memBlock); - -u16 NNS_FndGetAllocDirForMBlockExpHeap( - const void * memBlock); - -#if defined(NNS_FINALROM) - - #define NNS_FndCheckExpHeap(heap, optFlag) (TRUE) - - #define NNS_FndCheckForMBlockExpHeap(memBlock, heap, optFlag) (TRUE) - -#else - -BOOL NNS_FndCheckExpHeap( - NNSFndHeapHandle heap, - u32 optFlag); - -BOOL NNS_FndCheckForMBlockExpHeap( - const void * memBlock, - NNSFndHeapHandle heap, - u32 optFlag); - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/fnd/frameheap.h b/subprojects/NitroSystem/include/nnsys/fnd/frameheap.h deleted file mode 100644 index 9face1f170..0000000000 --- a/subprojects/NitroSystem/include/nnsys/fnd/frameheap.h +++ /dev/null @@ -1,95 +0,0 @@ -#ifndef NNS_FND_FRAMEHEAP_H_ -#define NNS_FND_FRAMEHEAP_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define NNS_FND_FRMHEAP_FREE_HEAD (1 << 0) -#define NNS_FND_FRMHEAP_FREE_TAIL (1 << 1) -#define NNS_FND_FRMHEAP_FREE_ALL (NNS_FND_FRMHEAP_FREE_HEAD | NNS_FND_FRMHEAP_FREE_TAIL) - -typedef struct NNSiFndFrmHeapState NNSiFndFrmHeapState; - -struct NNSiFndFrmHeapState { - u32 tagName; - void * headAllocator; - void * tailAllocator; - NNSiFndFrmHeapState * pPrevState; -}; - -typedef struct NNSiFndFrmHeapHead NNSiFndFrmHeapHead; - -struct NNSiFndFrmHeapHead { - void * headAllocator; - void * tailAllocator; - - NNSiFndFrmHeapState * pState; -}; - -#define NNS_FndCreateFrmHeap(startAddress, size) \ - NNS_FndCreateFrmHeapEx(startAddress, size, 0) - -#define NNS_FndAllocFromFrmHeap(heap, size) \ - NNS_FndAllocFromFrmHeapEx(heap, size, NNS_FND_HEAP_DEFAULT_ALIGNMENT) - -#define NNS_FndGetAllocatableSizeForFrmHeap(heap) \ - NNS_FndGetAllocatableSizeForFrmHeapEx(heap, NNS_FND_HEAP_DEFAULT_ALIGNMENT) - -void * NNSi_FndGetFreeStartForFrmHeap( - NNSFndHeapHandle heap); - -void * NNSi_FndGetFreeEndForFrmHeap( - NNSFndHeapHandle heap); - -#if !defined(NNS_FINALROM) - -void NNSi_FndDumpFrmHeap( - NNSFndHeapHandle heap); - -#endif - -NNSFndHeapHandle NNS_FndCreateFrmHeapEx( - void * startAddress, - u32 size, - u16 optFlag); - -void NNS_FndDestroyFrmHeap( - NNSFndHeapHandle heap); - -void * NNS_FndAllocFromFrmHeapEx( - NNSFndHeapHandle heap, - u32 size, - int alignment); - -void NNS_FndFreeToFrmHeap( - NNSFndHeapHandle heap, - int mode); - -u32 NNS_FndGetAllocatableSizeForFrmHeapEx( - NNSFndHeapHandle heap, - int alignment); - -BOOL NNS_FndRecordStateForFrmHeap( - NNSFndHeapHandle heap, - u32 tagName); - -BOOL NNS_FndFreeByStateToFrmHeap( - NNSFndHeapHandle heap, - u32 tagName); - -u32 NNS_FndAdjustFrmHeap( - NNSFndHeapHandle heap); - -u32 NNS_FndResizeForMBlockFrmHeap( - NNSFndHeapHandle heap, - void * memBlock, - u32 newSize); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/fnd/heapcommon.h b/subprojects/NitroSystem/include/nnsys/fnd/heapcommon.h deleted file mode 100644 index c2c4155484..0000000000 --- a/subprojects/NitroSystem/include/nnsys/fnd/heapcommon.h +++ /dev/null @@ -1,86 +0,0 @@ -#ifndef NNS_FND_HEAPCOMMON_H_ -#define NNS_FND_HEAPCOMMON_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define NNS_FND_HEAP_INVALID_HANDLE NULL - -#define NNS_FND_HEAP_DEFAULT_ALIGNMENT 4 - -#define NNSI_EXPHEAP_SIGNATURE ('EXPH') - -#define NNSI_FRMHEAP_SIGNATURE ('FRMH') - -#define NNSI_UNTHEAP_SIGNATURE ('UNTH') - -#define NNS_FND_HEAP_OPT_0_CLEAR (1 << 0) - -#define NNS_FND_HEAP_OPT_DEBUG_FILL (1 << 1) - -#define NNS_FND_HEAP_ERROR_PRINT (1 << 0) - -enum { - NNS_FND_HEAP_FILL_NOUSE, - NNS_FND_HEAP_FILL_ALLOC, - NNS_FND_HEAP_FILL_FREE, - - NNS_FND_HEAP_FILL_MAX -}; - -typedef struct NNSiFndHeapHead NNSiFndHeapHead; - -struct NNSiFndHeapHead { - u32 signature; - - NNSFndLink link; - NNSFndList childList; - - void * heapStart; - void * heapEnd; - - u32 attribute; -}; - -typedef NNSiFndHeapHead * NNSFndHeapHandle; - -#define NNS_FndGetHeapStartAddress(heap) \ - ((void *)(heap)) - -#define NNS_FndGetHeapEndAddress(heap) \ - (((NNSiFndHeapHead *)(heap))->heapEnd) - -NNSFndHeapHandle NNS_FndFindContainHeap( - const void * memBlock); - -#if defined(NNS_FINALROM) - #define NNS_FndDumpHeap(heap) ((void)0) -#else -void NNS_FndDumpHeap( - NNSFndHeapHandle heap); -#endif - -#if defined(NNS_FINALROM) - #define NNS_FndSetFillValForHeap(type, val) (0) -#else -u32 NNS_FndSetFillValForHeap( - int type, - u32 val); -#endif - -#if defined(NNS_FINALROM) - #define NNS_FndGetFillValForHeap(type) (0) -#else -u32 NNS_FndGetFillValForHeap( - int type); -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/fnd/list.h b/subprojects/NitroSystem/include/nnsys/fnd/list.h deleted file mode 100644 index 570031dbf3..0000000000 --- a/subprojects/NitroSystem/include/nnsys/fnd/list.h +++ /dev/null @@ -1,63 +0,0 @@ -#ifndef NNS_FND_LIST_H_ -#define NNS_FND_LIST_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct { - void * prevObject; - void * nextObject; -} NNSFndLink; - -typedef struct { - void * headObject; - void * tailObject; - u16 numObjects; - u16 offset; -} NNSFndList; - -#define NNS_FND_INIT_LIST(list, structName, linkName) \ - NNS_FndInitList(list, offsetof(structName, linkName)) - -void NNS_FndInitList( - NNSFndList * list, - u16 offset); - -void NNS_FndAppendListObject( - NNSFndList * list, - void * object); - -void NNS_FndPrependListObject( - NNSFndList * list, - void * object); - -void NNS_FndInsertListObject( - NNSFndList * list, - void * target, - void * object); - -void NNS_FndRemoveListObject( - NNSFndList * list, - void * object); - -void * NNS_FndGetNextListObject( - NNSFndList * list, - void * object); - -void * NNS_FndGetPrevListObject( - NNSFndList * list, - void * object); - -void * NNS_FndGetNthListObject( - NNSFndList * list, - u16 index); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/fnd/unitheap.h b/subprojects/NitroSystem/include/nnsys/fnd/unitheap.h deleted file mode 100644 index bb7ed7d4a9..0000000000 --- a/subprojects/NitroSystem/include/nnsys/fnd/unitheap.h +++ /dev/null @@ -1,71 +0,0 @@ -#ifndef NNS_FND_UNITHEAP_H_ -#define NNS_FND_UNITHEAP_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct NNSiFndUntHeapMBlockHead NNSiFndUntHeapMBlockHead; - -struct NNSiFndUntHeapMBlockHead { - NNSiFndUntHeapMBlockHead * pMBlkHdNext; -}; - -typedef struct NNSiFndUntMBlockList NNSiFndUntMBlockList; - -struct NNSiFndUntMBlockList { - NNSiFndUntHeapMBlockHead * head; -}; - -typedef struct NNSiFndUntHeapHead NNSiFndUntHeapHead; - -struct NNSiFndUntHeapHead { - NNSiFndUntMBlockList mbFreeList; - u32 mBlkSize; -}; - -#define NNS_FndCreateUnitHeap(startAddress, heapSize, memBlockSize) \ - NNS_FndCreateUnitHeapEx(startAddress, heapSize, memBlockSize, NNS_FND_HEAP_DEFAULT_ALIGNMENT, 0) - -#define NNS_FndGetMemBlockSizeForUnitHeap(heap) \ - (((const NNSiFndUntHeapHead *)((const u8 *)((const void *)(heap)) + sizeof(NNSiFndHeapHead)))->mBlkSize) - -#if !defined(NNS_FINALROM) - -void NNSi_FndDumpUnitHeap( - NNSFndHeapHandle heap); - -#endif - -NNSFndHeapHandle NNS_FndCreateUnitHeapEx( - void * startAddress, - u32 heapSize, - u32 memBlockSize, - int alignment, - u16 optFlag); - -void NNS_FndDestroyUnitHeap( - NNSFndHeapHandle heap); - -void * NNS_FndAllocFromUnitHeap( - NNSFndHeapHandle heap); - -void NNS_FndFreeToUnitHeap( - NNSFndHeapHandle heap, - void * memBlock); - -u32 NNS_FndCountFreeBlockForUnitHeap( - NNSFndHeapHandle heap); - -u32 NNS_FndCalcHeapSizeForUnitHeap( - u32 memBlockSize, - u32 memBlockNum, - int alignment); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d.h b/subprojects/NitroSystem/include/nnsys/g2d.h deleted file mode 100644 index 3102be6d25..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef NNS_G2D_H_ -#define NNS_G2D_H_ - -#include -#include - -#include -#include -#include -#include -#include -#include - -#include - -#include - -#include -#include -#include -#include - -#include - -#include -#include -#include - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/fmt/g2d_Anim_data.h b/subprojects/NitroSystem/include/nnsys/g2d/fmt/g2d_Anim_data.h deleted file mode 100644 index 29dabdefd6..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/fmt/g2d_Anim_data.h +++ /dev/null @@ -1,242 +0,0 @@ -#ifndef NNS_G2D_ANIM_DATA_H_ -#define NNS_G2D_ANIM_DATA_H_ - -#include -#include - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define NNS_G2D_BINFILE_SIG_CELLANIM (u32)'NANR' -#define NNS_G2D_BINFILE_SIG_MULTICELLANIM (u32)'NMAR' - -#define NNS_G2D_BLKSIG_ANIMBANK (u32)'ABNK' -#define NNS_G2D_USEREXBLK_ANMATTR (u32)'UAAT' - -#define NNS_G2D_BINFILE_EXT_CELLANIM "NANR" -#define NNS_G2D_BINFILE_EXT_MULTICELLANIM "NMAR" - -#define NNS_G2D_NANR_MAJOR_VER 1 -#define NNS_G2D_NANR_MINOR_VER 0 - -#define NNS_G2D_ANIMTYPE_SHIFT 16 -#define NNS_G2D_ANIMTYPE_MASK 0xFF00 -#define NNS_G2D_ANIMELEM_MASK 0x00FF - -typedef enum NNSG2dAnimationType { - NNS_G2D_ANIMATIONTYPE_INVALID = 0x0, - NNS_G2D_ANIMATIONTYPE_CELL, - NNS_G2D_ANIMATIONTYPE_MULTICELLLOCATION, - NNS_G2D_ANIMATIONTYPE_MAX -} NNSG2dAnimationType; - -typedef enum NNSG2dAnimationElement { - NNS_G2D_ANIMELEMENT_INDEX = 0x0, - NNS_G2D_ANIMELEMENT_INDEX_SRT, - NNS_G2D_ANIMELEMENT_INDEX_T, - NNS_G2D_ANIMELEMENT_MAX -} NNSG2dAnimationElement; - -typedef enum NNSG2dAnimationPlayMode { - NNS_G2D_ANIMATIONPLAYMODE_INVALID = 0x0, - NNS_G2D_ANIMATIONPLAYMODE_FORWARD, - NNS_G2D_ANIMATIONPLAYMODE_FORWARD_LOOP, - NNS_G2D_ANIMATIONPLAYMODE_REVERSE, - NNS_G2D_ANIMATIONPLAYMODE_REVERSE_LOOP, - NNS_G2D_ANIMATIONPLAYMODE_MAX -} NNSG2dAnimationPlayMode; - -typedef u16 NNSG2dAnimData; - -typedef struct NNSG2dAnimDataSRT { - u16 index; - - u16 rotZ; - - fx32 sx; - fx32 sy; - - s16 px; - s16 py; -} NNSG2dAnimDataSRT; - -typedef struct NNSG2dAnimDataT { - u16 index; - u16 pad_; - - s16 px; - s16 py; -} NNSG2dAnimDataT; - -typedef struct NNSG2dAnimFrameData { - void * pContent; - u16 frames; - u16 pad16; -} NNSG2dAnimFrameData; - -typedef struct NNSG2dAnimSequenceData { - u16 numFrames; - u16 loopStartFrameIdx; - - u32 animType; - - NNSG2dAnimationPlayMode playMode; - NNSG2dAnimFrameData * pAnmFrameArray; -} NNSG2dAnimSequenceData; - -typedef struct NNSG2dAnimBankData { - u16 numSequences; - u16 numTotalFrames; - NNSG2dAnimSequenceData * pSequenceArrayHead; - NNSG2dAnimFrameData * pFrameArrayHead; - void * pAnimContents; - void * pStringBank; - void * pExtendedData; -} NNSG2dAnimBankData; - -typedef struct NNSG2dAnimBankDataBlock { - NNSG2dBinaryBlockHeader blockHeader; - NNSG2dAnimBankData animBankData; -} NNSG2dAnimBankDataBlock; - -typedef struct NNSG2dUserExAnimFrameAttr { - u32 * pAttr; -} NNSG2dUserExAnimFrameAttr; - -typedef struct NNSG2dUserExAnimSequenceAttr { - u16 numFrames; - u16 pad16; - u32 * pAttr; - NNSG2dUserExAnimFrameAttr * pAnmFrmAttrArray; -} NNSG2dUserExAnimSequenceAttr; - -typedef struct NNSG2dUserExAnimAttrBank { - u16 numSequences; - u16 numAttribute; - NNSG2dUserExAnimSequenceAttr * pAnmSeqAttrArray; -} NNSG2dUserExAnimAttrBank; - -NNS_G2D_INLINE u32 NNSi_G2dMakeAnimType (NNSG2dAnimationType animType, NNSG2dAnimationElement elmType) -{ - return (u32)animType << NNS_G2D_ANIMTYPE_SHIFT | ((u32)elmType & NNS_G2D_ANIMELEM_MASK); -} - -NNS_G2D_INLINE NNSG2dAnimationType NNSi_G2dGetAnimSequenceAnimType (u32 animType) -{ - return (NNSG2dAnimationType)(animType >> NNS_G2D_ANIMTYPE_SHIFT); -} - -NNS_G2D_INLINE NNSG2dAnimationElement NNSi_G2dGetAnimSequenceElementType (u32 animType) -{ - return (NNSG2dAnimationElement)(animType & NNS_G2D_ANIMELEM_MASK); -} - -NNS_G2D_INLINE NNSG2dAnimationType NNS_G2dGetAnimSequenceAnimType (const NNSG2dAnimSequenceData * pAnimSeq) -{ - return NNSi_G2dGetAnimSequenceAnimType(pAnimSeq->animType); -} - -NNS_G2D_INLINE NNSG2dAnimationElement NNS_G2dGetAnimSequenceElementType (const NNSG2dAnimSequenceData * pAnimSeq) -{ - return NNSi_G2dGetAnimSequenceElementType(pAnimSeq->animType); -} - -NNS_G2D_INLINE u32 NNS_G2dCalcAnimSequenceTotalVideoFrames -( - const NNSG2dAnimSequenceData * pAnimSeq -) -{ - u32 i; - u32 total = 0; - - for (i = 0; i < pAnimSeq->numFrames; i++) { - total += pAnimSeq->pAnmFrameArray[i].frames; - } - return total; -} - -#ifndef NNS_FROM_TOOL -NNS_G2D_INLINE u16 NNS_G2dGetAnimSequenceIndex -( - const NNSG2dAnimBankData * pAnimBank, - const NNSG2dAnimSequenceData * pAnimSeq -) -{ - return (u16)( - ((u32)pAnimSeq - (u32)pAnimBank->pSequenceArrayHead) - / (u32)sizeof(NNSG2dAnimSequenceData)); -} -#else - -#endif - -NNS_G2D_INLINE const NNSG2dUserExAnimAttrBank * NNS_G2dGetUserExAnimAttrBank (const NNSG2dAnimBankData * pAnimBank) -{ - const NNSG2dUserExDataBlock * pBlk - = NNSi_G2dGetUserExDataBlkByID(pAnimBank->pExtendedData, - NNS_G2D_USEREXBLK_ANMATTR); - - if (pBlk != NULL) { - return (const NNSG2dUserExAnimAttrBank *)(pBlk + 1); - } else { - return NULL; - } -} - -NNS_G2D_INLINE const NNSG2dUserExAnimSequenceAttr * NNS_G2dGetUserExAnimSequenceAttr -( - const NNSG2dUserExAnimAttrBank * pAnimAttrBank, - u16 idx -) -{ - NNS_G2D_NULL_ASSERT(pAnimAttrBank); - - if (idx < pAnimAttrBank->numSequences) { - return &pAnimAttrBank->pAnmSeqAttrArray[idx]; - } else { - return NULL; - } -} - -NNS_G2D_INLINE const NNSG2dUserExAnimFrameAttr * NNS_G2dGetUserExAnimFrameAttr -( - const NNSG2dUserExAnimSequenceAttr * pAnimSeqAttr, - u16 idx -) -{ - NNS_G2D_NULL_ASSERT(pAnimSeqAttr); - - if (pAnimSeqAttr->numFrames) { - return &pAnimSeqAttr->pAnmFrmAttrArray[idx]; - } else { - return NULL; - } -} - -NNS_G2D_INLINE u32 NNS_G2dGetUserExAnimSeqAttrValue -( - const NNSG2dUserExAnimSequenceAttr * pAnimSeqAttr -) -{ - NNS_G2D_NULL_ASSERT(pAnimSeqAttr); - return pAnimSeqAttr->pAttr[0]; -} - -NNS_G2D_INLINE u32 NNS_G2dGetUserExAnimFrmAttrValue -( - const NNSG2dUserExAnimFrameAttr * pFrmAttr -) -{ - NNS_G2D_NULL_ASSERT(pFrmAttr); - return pFrmAttr->pAttr[0]; -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/fmt/g2d_Cell_data.h b/subprojects/NitroSystem/include/nnsys/g2d/fmt/g2d_Cell_data.h deleted file mode 100644 index 2053de3f2f..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/fmt/g2d_Cell_data.h +++ /dev/null @@ -1,271 +0,0 @@ -#ifndef NNS_G2D_CELL_DATA_H_ -#define NNS_G2D_CELL_DATA_H_ - -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define NNS_G2D_BINFILE_SIG_CELL (u32)'NCER' -#define NNS_G2D_BLKSIG_CELLBANK (u32)'CEBK' - -#define NNS_G2D_USEREXBLK_CELLATTR (u32)'UCAT' - -#define NNS_G2D_BINFILE_EXT_CELL "NCER" - -#define NNS_G2D_CELL_FLIP_H_SHIFT (0 + 8) -#define NNS_G2D_CELL_FLIP_V_SHIFT (1 + 8) -#define NNS_G2D_CELL_FLIP_HV_SHIFT (2 + 8) - -#define NNS_G2D_CELL_HAS_BR_SHIFT (3 + 8) - -#define NNS_G2D_CELL_BS_R_MASK 0x3F -#define NNS_G2D_CELL_BS_R_OFFSET (2) -#define NNS_G2D_CELL_BS_R_SHIFT (0) - -#ifndef NNS_G2D_LIMIT_CELL_X_128 - #define NNS_G2D_CELL_MAX_X 255 -#else - #define NNS_G2D_CELL_MAX_X 127 -#endif - -#define NNS_G2D_CELL_MAX_Y 127 - -#define NNS_G2D_CELLBK_ATTR_CELLWITHBR 0x1 - -#define NNS_G2D_NCER_MAJOR_VER 1 -#define NNS_G2D_NCER_MINOR_VER 0 - -#define NNS_G2dGetSizeReqiredVramTransferCellDataBank NNS_G2dGetSizeRequiredVramTransferCellDataBank - -typedef struct NNSG2dCellVramTransferData { - u32 srcDataOffset; - u32 szByte; -} NNSG2dCellVramTransferData; - -typedef struct NNSG2dVramTransferData { - u32 szByteMax; - NNSG2dCellVramTransferData * pCellTransferDataArray; -} NNSG2dVramTransferData; - -typedef struct NNSG2dCellOAMAttrData { - u16 attr0; - u16 attr1; - u16 attr2; -} NNSG2dCellOAMAttrData; - -typedef struct NNSG2dCellBoundingRectS16 { - s16 maxX; - s16 maxY; - s16 minX; - s16 minY; -} NNSG2dCellBoundingRectS16; - -typedef struct NNSG2dCellData { - u16 numOAMAttrs; - u16 cellAttr; - - NNSG2dCellOAMAttrData * pOamAttrArray; -} NNSG2dCellData; - -typedef struct NNSG2dCellDataWithBR { - NNSG2dCellData cellData; - NNSG2dCellBoundingRectS16 boundingRect; -} NNSG2dCellDataWithBR; - -typedef struct NNSG2dCellDataBank { - u16 numCells; - u16 cellBankAttr; - NNSG2dCellData * pCellDataArrayHead; - NNSG2dCharacterDataMapingType mappingMode; - - NNSG2dVramTransferData * pVramTransferData; - - void * pStringBank; - void * pExtendedData; -} NNSG2dCellDataBank; - -typedef struct NNSG2dCellDataBankBlock { - NNSG2dBinaryBlockHeader blockHeader; - NNSG2dCellDataBank cellDataBank; -} NNSG2dCellDataBankBlock; - -typedef struct NNSG2dUserExCellAttr { - u32 * pAttr; -} NNSG2dUserExCellAttr; - -typedef struct NNSG2dUserExCellAttrBank { - u16 numCells; - u16 numAttribute; - NNSG2dUserExCellAttr * pCellAttrArray; -} NNSG2dUserExCellAttrBank; - -NNS_G2D_INLINE void NNSi_G2dSetCellBankHasBR (NNSG2dCellDataBank * pCellBank) -{ - NNS_G2D_NULL_ASSERT(pCellBank); - pCellBank->cellBankAttr |= NNS_G2D_CELLBK_ATTR_CELLWITHBR; -} - -NNS_G2D_INLINE BOOL NNSi_G2dCellBankHasBR (const NNSG2dCellDataBank * pCellBank) -{ - return (BOOL)(pCellBank->cellBankAttr & NNS_G2D_CELLBK_ATTR_CELLWITHBR); -} - -NNS_G2D_INLINE u16 NNSi_G2dSetCellAttrFlipFlag (BOOL bH, BOOL bV, BOOL bHV) -{ - return (u16)((bH << NNS_G2D_CELL_FLIP_H_SHIFT) | - (bV << NNS_G2D_CELL_FLIP_V_SHIFT) | - (bHV << NNS_G2D_CELL_FLIP_HV_SHIFT)); -} - -NNS_G2D_INLINE u16 NNSi_G2dSetCellAttrHasBR (BOOL bHasBR) -{ - return (u16)(bHasBR << NNS_G2D_CELL_HAS_BR_SHIFT); -} - -NNS_G2D_INLINE BOOL NNSi_G2dIsCellFlipH (const NNSG2dCellData * pCell) -{ - return (BOOL)((pCell->cellAttr >> NNS_G2D_CELL_FLIP_H_SHIFT) & 0x1); -} - -NNS_G2D_INLINE BOOL NNSi_G2dIsCellFlipV (const NNSG2dCellData * pCell) -{ - return (BOOL)((pCell->cellAttr >> NNS_G2D_CELL_FLIP_V_SHIFT) & 0x1); -} - -NNS_G2D_INLINE BOOL NNSi_G2dIsCellFlipHV (const NNSG2dCellData * pCell) -{ - return (BOOL)((pCell->cellAttr >> NNS_G2D_CELL_FLIP_HV_SHIFT) & 0x1); -} - -NNS_G2D_INLINE BOOL NNS_G2dCellHasBR (const NNSG2dCellData * pCell) -{ - return (BOOL)((pCell->cellAttr >> NNS_G2D_CELL_HAS_BR_SHIFT) & 0x1); -} - -NNS_G2D_INLINE BOOL NNSi_G2dCellHasBR (const NNSG2dCellData * pCell) -{ - return NNS_G2dCellHasBR(pCell); -} - -NNS_G2D_INLINE const NNSG2dCellBoundingRectS16 * NNS_G2dGetCellBoundingRect (const NNSG2dCellData * pCell) -{ - const NNSG2dCellDataWithBR * pBR = ( const NNSG2dCellDataWithBR * )pCell; - return &pBR->boundingRect; -} - -NNS_G2D_INLINE void NNSi_G2dSetCellBoundingSphereR (NNSG2dCellData * pCell, u8 R) -{ - if ((R & 0x3) != 0) { - R += 0x1 << NNS_G2D_CELL_BS_R_OFFSET; - R &= ~0x3; - } - - R = (u8)(R >> NNS_G2D_CELL_BS_R_OFFSET); - pCell->cellAttr |= ((R & NNS_G2D_CELL_BS_R_MASK) << NNS_G2D_CELL_BS_R_SHIFT); -} - -NNS_G2D_INLINE u8 NNS_G2dGetCellBoundingSphereR (const NNSG2dCellData * pCell) -{ - u8 R = (u8)((pCell->cellAttr >> NNS_G2D_CELL_BS_R_SHIFT) & NNS_G2D_CELL_BS_R_MASK); - return (u8)(R << NNS_G2D_CELL_BS_R_OFFSET); -} - -NNS_G2D_INLINE u8 NNSi_G2dGetCellBoundingSphereR (const NNSG2dCellData * pCell) -{ - return NNS_G2dGetCellBoundingSphereR(pCell); -} - -NNS_G2D_INLINE BOOL NNS_G2dCellDataBankHasVramTransferData (const NNSG2dCellDataBank * pCellBank) -{ - return (BOOL)(pCellBank->pVramTransferData != NULL); -} - -NNS_G2D_INLINE u32 NNS_G2dGetSizeRequiredVramTransferCellDataBank (const NNSG2dCellDataBank * pCellBank) -{ - if (NNS_G2dCellDataBankHasVramTransferData(pCellBank)) { - const NNSG2dVramTransferData * pData = pCellBank->pVramTransferData; - - return pData->szByteMax; - } - - return 0; -} - -NNS_G2D_INLINE const NNSG2dCellVramTransferData * NNSi_G2dGetCellVramTransferData (const NNSG2dCellDataBank * pCellBank, u16 cellIdx) -{ - const NNSG2dVramTransferData * pTransferData = pCellBank->pVramTransferData; - - return &pTransferData->pCellTransferDataArray[cellIdx]; -} - -NNS_G2D_INLINE const NNSG2dUserExCellAttrBank * NNS_G2dGetUserExCellAttrBankFromCellBank (const NNSG2dCellDataBank * pCellBank) -{ - const NNSG2dUserExDataBlock * pBlk - = NNSi_G2dGetUserExDataBlkByID(pCellBank->pExtendedData, - NNS_G2D_USEREXBLK_CELLATTR); - - if (pBlk != NULL) { - return (const NNSG2dUserExCellAttrBank *)(pBlk + 1); - } else { - return NULL; - } -} - -NNS_G2D_INLINE const NNSG2dUserExCellAttr * NNS_G2dGetUserExCellAttr -( - const NNSG2dUserExCellAttrBank * pCellAttrBank, - u16 idx -) -{ - if (idx < pCellAttrBank->numCells) { - return &pCellAttrBank->pCellAttrArray[idx]; - } else { - return NULL; - } -} - -NNS_G2D_INLINE const u32 NNS_G2dGetUserExCellAttrValue -( - const NNSG2dUserExCellAttr * pCellAttr -) -{ - return pCellAttr->pAttr[0]; -} - -NNS_G2D_INLINE void NNS_G2dCopyCellAsOamAttr (const NNSG2dCellData * pCell, u16 idx, GXOamAttr * pDst) -{ - { - const NNSG2dCellOAMAttrData * pSrc = pCell->pOamAttrArray + idx; - - pDst->attr0 = pSrc->attr0; - pDst->attr1 = pSrc->attr1; - pDst->attr2 = pSrc->attr2; - } -} - -NNS_G2D_INLINE s16 NNS_G2dRepeatXinCellSpace (s16 srcX) -{ - if (srcX > NNS_G2D_CELL_MAX_X) { - srcX |= 0xFF00; - } - return srcX; -} - -NNS_G2D_INLINE s16 NNS_G2dRepeatYinCellSpace (s16 srcY) -{ - if (srcY > NNS_G2D_CELL_MAX_Y) { - srcY |= 0xFF00; - } - return srcY; -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/fmt/g2d_Character_data.h b/subprojects/NitroSystem/include/nnsys/g2d/fmt/g2d_Character_data.h deleted file mode 100644 index ac0def6aa0..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/fmt/g2d_Character_data.h +++ /dev/null @@ -1,155 +0,0 @@ -#ifndef NNS_G2D_CHARACTER_DATA_H_ -#define NNS_G2D_CHARACTER_DATA_H_ - -#include - -#ifndef SDK_ARM9 -#define SDK_ARM9 - #include -#undef SDK_ARM9 -#endif - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define NNS_G2D_BINFILE_SIG_CHARACTERDATA (u32)'NCGR' - -#define NNS_G2D_BINFILE_SIG_PALETTEDATA (u32)'NCLR' -#define NNS_G2D_BINFILE_SIG_PALETTEDATA_OLD (u32)'NCPR' - -#define NNS_G2D_BINBLK_SIG_CHARACTERDATA (u32)'CHAR' -#define NNS_G2D_BINBLK_SIG_CHAR_POSITION (u32)'CPOS' - -#define NNS_G2D_BINBLK_SIG_PALETTEDATA (u32)'PLTT' -#define NNS_G2D_BINBLK_SIG_PALETTECOMPINFO (u32)'PCMP' - -#define NNS_G2D_BINFILE_EXT_CHARACTERDATA "NCGR" -#define NNS_G2D_BINFILE_EXT_CHARACTERDATA_BMP "NCBR" -#define NNS_G2D_BINFILE_EXT_PALETTEDATA "NCLR" - -#define NNS_G2D_NCGR_MAJOR_VER (u8)1 -#define NNS_G2D_NCGR_MINOR_VER (u8)1 - -#define NNS_G2D_NCLR_MAJOR_VER (u8)1 -#define NNS_G2D_NCLR_MINOR_VER (u8)0 - -#define NNS_G2D_1D_MAPPING_CHAR_SIZE (u16)0xFFFF - -#define NNS_G2D_CHARACTER_FMT_MASK 0xFF -#define NNS_G2D_VRAMTRANSFERDATA_FLAG_MASK 0x1 -#define NNS_G2D_CHARACTER_FMT_SHIFT 0 -#define NNS_G2D_VRAMTRANSFERDATA_FLAG_SHIFT 8 - -typedef enum NNSG2dCharacterPixelFmt { - NNS_G2D_CHARACTER_PIXELFMT_16, - NNS_G2D_CHARACTER_PIXELFMT_256, - NNS_G2D_CHARACTER_PIXELFMT_MAX -} NNSG2dCharacterPixelFmt; - -typedef enum NNSG2dCharacterFmt { - NNS_G2D_CHARACTER_FMT_CHAR, - NNS_G2D_CHARACTER_FMT_BMP, - NNS_G2D_CHARACTER_FMT_MAX -} NNSG2dCharacterFmt; - -typedef enum NNSG2dCharacterDataMapingType { - NNS_G2D_CHARACTERMAPING_1D_32, - NNS_G2D_CHARACTERMAPING_1D_64, - NNS_G2D_CHARACTERMAPING_1D_128, - NNS_G2D_CHARACTERMAPING_1D_256, - NNS_G2D_CHARACTERMAPING_2D, - NNS_G2D_CHARACTERMAPING_MAX -} NNSG2dCharacterDataMapingType; - -typedef enum NNSG2dPaletteFmt { - NNS_G2D_NNSG2DPALETTEFMT_16X16, - NNS_G2D_NNSG2DPALETTEFMT_256X1, - NNS_G2D_NNSG2DPALETTEFMT_256X16, - NNS_G2D_NNSG2DPALETTEFMT_MAX -} NNSG2dPaletteFmt; - -typedef struct NNSG2dPaletteCompressInfo { - u16 numPalette; - u16 pad16; - void * pPlttIdxTbl; -} NNSG2dPaletteCompressInfo; - -typedef struct NNSG2dPaletteData { - GXTexFmt fmt; - BOOL bExtendedPlt; - - u32 szByte; - void * pRawData; -} NNSG2dPaletteData; - -typedef struct NNSG2dPaletteCompressDataBlock { - NNSG2dBinaryBlockHeader blockHeader; - NNSG2dPaletteCompressInfo plttCmpInfo; -} NNSG2dPaletteCompressDataBlock; - -typedef struct NNSG2dPaletteDataBlock { - NNSG2dBinaryBlockHeader blockHeader; - NNSG2dPaletteData paletteData; -} NNSG2dPaletteDataBlock; - -typedef struct NNSG2dCharacterData { - u16 H; - u16 W; - - GXTexFmt pixelFmt; - - GXOBJVRamModeChar mapingType; - u32 characterFmt; - - u32 szByte; - void * pRawData; -} NNSG2dCharacterData; - -typedef struct NNSG2dCharacterDataBlock { - NNSG2dBinaryBlockHeader blockHeader; - NNSG2dCharacterData characterData; -} NNSG2dCharacterDataBlock; - -typedef struct NNSG2dCharacterPosInfo { - u16 srcPosX; - u16 srcPosY; - u16 srcW; - u16 srcH; -} NNSG2dCharacterPosInfo; - -typedef struct NNSG2dCharacterPosInfoBlock { - NNSG2dBinaryBlockHeader blockHeader; - NNSG2dCharacterPosInfo posInfo; -} NNSG2dCharacterPosInfoBlock; - -NNS_G2D_INLINE u32 NNSi_G2dPackCharacterFmtData -( - NNSG2dCharacterFmt charFmt, - BOOL bVramTransferData -) -{ - return (u32)((charFmt << NNS_G2D_CHARACTER_FMT_SHIFT) | - (bVramTransferData << NNS_G2D_VRAMTRANSFERDATA_FLAG_SHIFT)); -} - -NNS_G2D_INLINE NNSG2dCharacterFmt NNSi_G2dGetCharacterFmtType (u32 characterFmt) -{ - return (NNSG2dCharacterFmt) - (NNS_G2D_CHARACTER_FMT_MASK & (characterFmt >> NNS_G2D_CHARACTER_FMT_SHIFT)); -} - -NNS_G2D_INLINE BOOL NNSi_G2dIsCharacterVramTransfered (u32 characterFmt) -{ - return (BOOL) - (NNS_G2D_VRAMTRANSFERDATA_FLAG_MASK & (characterFmt >> NNS_G2D_VRAMTRANSFERDATA_FLAG_SHIFT)); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/fmt/g2d_Common_data.h b/subprojects/NitroSystem/include/nnsys/g2d/fmt/g2d_Common_data.h deleted file mode 100644 index e3ebb88ee6..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/fmt/g2d_Common_data.h +++ /dev/null @@ -1,93 +0,0 @@ -#ifndef NNS_G2D_COMMON_DATA_H_ -#define NNS_G2D_COMMON_DATA_H_ - -#include -#include - -#ifdef NNS_FROM_TOOL -#ifndef NNS_G2D_ASSERT - #include - #define NNS_G2D_ASSERT(x) assert((x)) - #define NNS_G2D_ASSERTMSG(x, y) assert((x)) - #define NNS_G2D_NULL_ASSERT(x) assert(NULL != (x)) - #define NNS_G2D_MINMAX_ASSERT(x, min, max) assert(((x) >= (min)) && ((x) <= (max))) -#endif - -#if (defined(_MSC_VER) && !defined(__cplusplus)) -#define inline __inline -#endif - -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define NNS_G2D_DUMMY_DATA8 (u8)0xCC -#define NNS_G2D_DUMMY_DATA16 (u16)0xBEEF -#define NNS_G2D_DUMMY_DATA32 (u32)0xDEADBEEF -#define NNS_G2D_DUMMY_PTR (u32)0x00000000 - -#define NNS_G2D_BLKSIG_NAMELABEL (u32)('LABL') -#define NNS_G2D_BLKSIG_USEREXT (u32)('UEXT') - -#define NNS_G2D_BIGENDIAN_BITMARK 0xfffe -#define NNS_G2D_LITTLEENDIAN_BITMARK 0xfeff - -typedef struct NNSG2dBinaryFileHeader { - u32 signature; - u16 byteOrder; - u16 version; - u32 fileSize; - u16 headerSize; - u16 dataBlocks; -} NNSG2dBinaryFileHeader; - -typedef struct NNSG2dBinaryBlockHeader { - u32 kind; - u32 size; -} NNSG2dBinaryBlockHeader; - -typedef struct NNSG2dUserExDataBlock { - u32 blkTypeID; - u32 blkSize; -} NNSG2dUserExDataBlock; - -NNS_G2D_INLINE BOOL NNS_G2dIsPad16Valid (u16 pad16) -{ - return (NNS_G2D_DUMMY_DATA16 == pad16) ? TRUE : FALSE; -} - -NNS_G2D_INLINE BOOL NNS_G2dIsPad32Valid (u32 pad32) -{ - return (NNS_G2D_DUMMY_DATA32 == pad32) ? TRUE : FALSE; -} - -NNS_G2D_INLINE u16 NNS_G2dMakeVersionData (u8 majorVer, u8 minorVer) -{ - return (u16)((u16)majorVer << 8 | ((u16)minorVer & 0x00FF)); -} - -NNS_G2D_INLINE const NNSG2dUserExDataBlock * NNSi_G2dGetUserExDataBlkByID -( - const void * pExtendData, - u32 blkTypeID -) -{ - if (pExtendData != NULL) { - const NNSG2dUserExDataBlock * pBlk = (const NNSG2dUserExDataBlock *)pExtendData; - - if (pBlk->blkTypeID == blkTypeID) { - return pBlk; - } - - pBlk = (const NNSG2dUserExDataBlock *)((const u8 *)pBlk + pBlk->blkSize); - } - return NULL; -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/fmt/g2d_Entity_data.h b/subprojects/NitroSystem/include/nnsys/g2d/fmt/g2d_Entity_data.h deleted file mode 100644 index b45b48a51b..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/fmt/g2d_Entity_data.h +++ /dev/null @@ -1,56 +0,0 @@ -#ifndef NNS_G2D_ENTITY_DATA_H_ -#define NNS_G2D_ENTITY_DATA_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define NNS_G2D_BINFILE_SIG_ENTITY (u32)'NENR' -#define NNS_G2D_BLKSIG_ENTITYBANK (u32)'ENBK' - -#define NNS_G2D_BINFILE_EXT_ENTITY "NENR" - -#define NNS_G2D_NENR_MAJOR_VER 1 -#define NNS_G2D_NENR_MINOR_VER 0 - -typedef enum NNSG2dEntityType { - NNS_G2D_ENTITYTYPE_INVALID = 0, - NNS_G2D_ENTITYTYPE_CELL, - NNS_G2D_ENTITYTYPE_MULTICELL, - NNS_G2D_ENTITYTYPE_MAX -} NNSG2dEntityType; - -typedef struct NNSG2dEntityAnimData { - u16 numAnimSequence; - u16 pad16; - u16 * pAnimSequenceIdxArray; -} NNSG2dEntityAnimData; - -typedef struct NNSG2dEntityData { - NNSG2dEntityAnimData animData; - NNSG2dEntityType type; -} NNSG2dEntityData; - -typedef struct NNSG2dEntityDataBank { - u16 numEntityDatas; - u16 pad16; - NNSG2dEntityData * pEntityDataArray; - u16 * pAnimSequenceIdxArray; - void * pStringBank; - void * pExtendedData; -} NNSG2dEntityDataBank; - -typedef struct NNSG2dEntityDataBankBlock { - NNSG2dBinaryBlockHeader blockHeader; - NNSG2dEntityDataBank entityDataBank; -} NNSG2dEntityDataBankBlock; - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/fmt/g2d_Font_data.h b/subprojects/NitroSystem/include/nnsys/g2d/fmt/g2d_Font_data.h deleted file mode 100644 index 18e9340178..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/fmt/g2d_Font_data.h +++ /dev/null @@ -1,157 +0,0 @@ -#ifndef NNS_G2D_FONT_DATA_H_ -#define NNS_G2D_FONT_DATA_H_ - -#include - -#ifdef _MSC_VER - #pragma warning( disable: 4200 ) - #pragma warning( disable: 4201 ) -#endif - -#ifndef SDK_ARM9 - #include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define NNS_G2D_BINFILE_SIG_FONTDATA (u32)'NFTR' - -#define NNS_G2D_BINBLK_SIG_FINFDATA (u32)'FINF' -#define NNS_G2D_BINBLK_SIG_CGLPDATA (u32)'CGLP' -#define NNS_G2D_BINBLK_SIG_TGLPDATA (u32)'TGLP' -#define NNS_G2D_BINBLK_SIG_TCLPDATA (u32)'TCLP' -#define NNS_G2D_BINBLK_SIG_CWDHDATA (u32)'CWDH' -#define NNS_G2D_BINBLK_SIG_CMAPDATA (u32)'CMAP' - -#define NNS_G2D_BINFILE_EXT_FONTDATA "NFTR" - -#define NNS_G2D_NFTR_MAJOR_VER (u8)1 -#define NNS_G2D_NFTR_MINOR_VER (u8)1 - -#define NNS_G2D_NFTR_VER (u16)((NNS_G2D_NFTR_MAJOR_VER << 8) | NNS_G2D_NFTR_MINOR_VER) - -typedef enum NNSG2dFontType { - NNS_G2D_FONTTYPE_GLYPH, - NNS_G2D_NUM_OF_FONTTYPE -} NNSG2dFontType; - -typedef enum NNSG2dFontEncoding { - NNS_G2D_FONT_ENCODING_UTF8, - NNS_G2D_FONT_ENCODING_UTF16, - NNS_G2D_FONT_ENCODING_SJIS, - NNS_G2D_FONT_ENCODING_CP1252, - NNS_G2D_NUM_OF_ENCODING -} NNSG2dFontEncoding; - -typedef enum NNSG2dFontMappingMethod { - NNS_G2D_MAPMETHOD_DIRECT, - NNS_G2D_MAPMETHOD_TABLE, - NNS_G2D_MAPMETHOD_SCAN, - NNS_G2D_NUM_OF_MAPMETHOD -} NNSG2dFontMappingMethod; - -typedef enum NNSG2dFontGlyphFlag { - NNS_G2D_FONT_FLAG_TBRL = (1 << 0), - NNS_G2D_FONT_FLAG_ROT_0 = (0 << 1), - NNS_G2D_FONT_FLAG_ROT_90 = (1 << 1), - NNS_G2D_FONT_FLAG_ROT_180 = (2 << 1), - NNS_G2D_FONT_FLAG_ROT_270 = (3 << 1), - NNS_G2D_FONT_FLAG_ROT_MASK = (3 << 1) -} NNSG2dFontGlyphFlag; - -typedef struct NNSG2dCharWidths { - s8 left; - u8 glyphWidth; - s8 charWidth; -} NNSG2dCharWidths; - -typedef struct NNSG2dCMapScanEntry { - u16 ccode; - u16 index; -} NNSG2dCMapScanEntry; - -typedef struct NNSG2dCMapInfoScan { - u16 num; - NNSG2dCMapScanEntry entries[]; -} NNSG2dCMapInfoScan; - -typedef struct NNSG2dFontGlyph { - u8 cellWidth; - u8 cellHeight; - u16 cellSize; - s8 baselinePos; - u8 maxCharWidth; - u8 bpp; - u8 flags; - - u8 glyphTable[]; -} NNSG2dFontGlyph; - -typedef struct NNSG2dFontWidth { - u16 indexBegin; - u16 indexEnd; - struct NNSG2dFontWidth * pNext; - NNSG2dCharWidths widthTable[]; -} NNSG2dFontWidth; - -typedef struct NNSG2dFontCodeMap { - u16 ccodeBegin; - u16 ccodeEnd; - u16 mappingMethod; - u16 reserved; - struct NNSG2dFontCodeMap * pNext; - u16 mapInfo[]; -} NNSG2dFontCodeMap; - -typedef struct NNSG2dFontInformation { - u8 fontType; - s8 linefeed; - u16 alterCharIndex; - NNSG2dCharWidths defaultWidth; - u8 encoding; - NNSG2dFontGlyph * pGlyph; - NNSG2dFontWidth * pWidth; - NNSG2dFontCodeMap * pMap; -} NNSG2dFontInformation; - -typedef struct NNSG2dFontInformationBlock { - NNSG2dBinaryBlockHeader blockHeader; - NNSG2dFontInformation blockBody; -} NNSG2dFontInformationBlock; - -typedef struct NNSG2dFontGlyphBlock { - NNSG2dBinaryBlockHeader blockHeader; - NNSG2dFontGlyph blockBody; -} NNSG2dFontGlyphBlock; - -typedef struct NNSG2dFontWidthBlock { - NNSG2dBinaryBlockHeader blockHeader; - NNSG2dFontWidth blockBody; -} NNSG2dFontWidthBlock; - -typedef struct NNSG2dFontCodeMapBlock { - NNSG2dBinaryBlockHeader blockHeader; - NNSG2dFontCodeMap blockBody; -} NNSG2dFontCodeMapBlock; - -#ifdef NNS_G2D_FONT_USE_OLD_RESOURCE - -#define NNS_G2D_NFTR_PREV_MAJOR_VER (u8)1 -#define NNS_G2D_NFTR_PREV_MINOR_VER (u8)0 - -#define NNS_G2D_NFTR_PREV_VER (u16)((NNS_G2D_NFTR_PREV_MAJOR_VER << 8) | NNS_G2D_NFTR_PREV_MINOR_VER) - -#endif - -#ifdef __cplusplus -} -#endif - -#ifdef _MSC_VER - #pragma warning( default: 4200 ) - #pragma warning( default: 4201 ) -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/fmt/g2d_MultiCell_data.h b/subprojects/NitroSystem/include/nnsys/g2d/fmt/g2d_MultiCell_data.h deleted file mode 100644 index c03d3c3123..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/fmt/g2d_MultiCell_data.h +++ /dev/null @@ -1,140 +0,0 @@ -#ifndef NNS_G2D_MULTICELL_DATA_H_ -#define NNS_G2D_MULTICELL_DATA_H_ - -#include -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define NNS_G2D_BINFILE_EXT_MULTICELL "NMCR" - -#define NNS_G2D_BINFILE_SIG_MULTICELL (u32)'NMCR' -#define NNS_G2D_BLKSIG_MULTICELLBANK (u32)'MCBK' - -#define NNS_G2D_NMCR_MAJOR_VER (u8)1 -#define NNS_G2D_NMCR_MINOR_VER (u8)0 - -#define NNS_G2D_MCNODE_PLAYMODE_MASK 0x0F -#define NNS_G2D_MCNODE_PLAYMODE_SHIFT 0 -#define NNS_G2D_MCNODE_VISIBILITY_SHIFT 5 -#define NNS_G2D_MCNODE_CELLANIMIDX_SHIFT 8 -#define NNS_G2D_MCNODE_CELLANIMIDX_MASK 0xFF00 - -typedef enum NNSG2dMCAnimationPlayMode { - NNS_G2D_MCANIM_PLAYMODE_RESET = 0, - NNS_G2D_MCANIM_PLAYMODE_CONTINUE = 1, - NNS_G2D_MCANIM_PLAYMODE_PAUSE = 2, - NNS_G2D_MCANIM_PLAYMODE_MAX -} NNSG2dMCAnimationPlayMode; - -typedef struct NNSG2dMultiCellHierarchyData { - u16 animSequenceIdx; - s16 posX; - s16 posY; - - u16 nodeAttr; -} NNSG2dMultiCellHierarchyData; - -typedef struct NNSG2dMultiCellData { - u16 numNodes; - - u16 numCellAnim; - NNSG2dMultiCellHierarchyData * pHierDataArray; -} NNSG2dMultiCellData; - -typedef struct NNSG2dMultiCellDataBank { - u16 numMultiCellData; - u16 pad16; - NNSG2dMultiCellData * pMultiCellDataArray; - NNSG2dMultiCellHierarchyData * pHierarchyDataArray; - void * pStringBank; - void * pExtendedData; -} NNSG2dMultiCellDataBank; - -typedef struct NNSG2dMultiCellDataBankBlock { - NNSG2dBinaryBlockHeader blockHeader; - NNSG2dMultiCellDataBank multiCellDataBank; -} NNSG2dMultiCellDataBankBlock; - -typedef struct NNSG2dUserExMultiCellAttr { - u32 * pAttr; -} NNSG2dUserExMultiCellAttr; - -typedef struct NNSG2dUserExMultiCellAttrBank { - u16 numMultiCells; - u16 numAttribute; - NNSG2dUserExMultiCellAttr * pMCAttrArray; -} NNSG2dUserExMultiCellAttrBank; - -NNS_G2D_INLINE void NNSi_G2dSetMultiCellNodeAttribute -( - NNSG2dMCAnimationPlayMode mode, - int bVisibility, - u16 * pDstAttr -) -{ - *pDstAttr = (u16)(((mode & NNS_G2D_MCNODE_PLAYMODE_MASK) << NNS_G2D_MCNODE_PLAYMODE_SHIFT) | - ((bVisibility & 0x1) << NNS_G2D_MCNODE_VISIBILITY_SHIFT)); -} - -NNS_G2D_INLINE BOOL NNSi_G2dIsMultiCellNodeVisible -( - const NNSG2dMultiCellHierarchyData * pNode -) -{ - return (BOOL)((pNode->nodeAttr >> NNS_G2D_MCNODE_VISIBILITY_SHIFT) & 0x1); -} - -NNS_G2D_INLINE NNSG2dMCAnimationPlayMode NNSi_G2dGetMultiCellNodePlayMode -( - const NNSG2dMultiCellHierarchyData * pNode -) -{ - const NNSG2dMCAnimationPlayMode mode - = (NNSG2dMCAnimationPlayMode)((pNode->nodeAttr >> NNS_G2D_MCNODE_PLAYMODE_SHIFT) & - NNS_G2D_MCNODE_PLAYMODE_MASK); - - return mode; -} - -NNS_G2D_INLINE void NNSi_G2dSetMC2NodeCellAinmIdx -( - NNSG2dMultiCellHierarchyData * pNodeData, - u8 idx -) -{ - pNodeData->nodeAttr &= ~NNS_G2D_MCNODE_CELLANIMIDX_MASK; - pNodeData->nodeAttr |= idx << NNS_G2D_MCNODE_CELLANIMIDX_SHIFT; -} - -NNS_G2D_INLINE u16 NNSi_G2dGetMC2NodeCellAinmIdx -( - const NNSG2dMultiCellHierarchyData * pNodeData -) -{ - return (u16)((NNS_G2D_MCNODE_CELLANIMIDX_MASK & pNodeData->nodeAttr) >> NNS_G2D_MCNODE_CELLANIMIDX_SHIFT); -} - -NNS_G2D_INLINE const NNSG2dUserExCellAttrBank * NNS_G2dGetUserExCellAttrBankFromMCBank (const NNSG2dMultiCellDataBank * pMCBank) -{ - const NNSG2dUserExDataBlock * pBlk - = NNSi_G2dGetUserExDataBlkByID(pMCBank->pExtendedData, - NNS_G2D_USEREXBLK_CELLATTR); - - if (pBlk != NULL) { - return (const NNSG2dUserExCellAttrBank *)(pBlk + 1); - } else { - return NULL; - } -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/fmt/g2d_Oam_data.h b/subprojects/NitroSystem/include/nnsys/g2d/fmt/g2d_Oam_data.h deleted file mode 100644 index bb58bccd8f..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/fmt/g2d_Oam_data.h +++ /dev/null @@ -1,104 +0,0 @@ -#ifndef NNS_G2D_OAM_DATA_H_ -#define NNS_G2D_OAM_DATA_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define NNS_G2D_OAM_AFFINE_IDX_NONE 0xFFFE - -typedef struct objSize { - u16 x; - u16 y; -} objSize; - -#ifdef NNS_FROM_TOOL - #define NNS_G2D_OBJSIZE_TBL_STATIC static -#else - #define NNS_G2D_OBJSIZE_TBL_STATIC -extern const u16 NNSi_objSizeHTbl[3][4]; -extern const u16 NNSi_objSizeWTbl[3][4]; -#endif - -#define NNS_G2D_DEFINE_NNSI_OBJSIZEWTBL \ - NNS_G2D_OBJSIZE_TBL_STATIC \ - const u16 NNSi_objSizeWTbl[3][4] = \ - { \ - { \ - 8, \ - 16, \ - 32, \ - 64 \ - }, \ - { \ - 16, \ - 32, \ - 32, \ - 64 \ - }, \ - { \ - 8, \ - 8, \ - 16, \ - 32 \ - } \ - } \ - -#define NNS_G2D_DEFINE_NNSI_OBJSIZEHTBL \ - NNS_G2D_OBJSIZE_TBL_STATIC \ - const u16 NNSi_objSizeHTbl[3][4] = \ - { \ - { \ - 8, \ - 16, \ - 32, \ - 64, \ - }, \ - { \ - 8, \ - 8, \ - 16, \ - 32, \ - }, \ - { \ - 16, \ - 32, \ - 32, \ - 64 \ - } \ - } \ - -NNS_G2D_INLINE GXOamShape NNS_G2dGetOAMSize (const GXOamAttr * oamAttr) -{ - const GXOamShape result = (GXOamShape)((GX_OAM_ATTR01_SHAPE_MASK | GX_OAM_ATTR01_SIZE_MASK) & oamAttr->attr01); - - return result; -} - -NNS_G2D_INLINE int NNS_G2dGetOamSizeX (const GXOamShape * oamShape) -{ -#ifdef NNS_FROM_TOOL - NNS_G2D_DEFINE_NNSI_OBJSIZEWTBL; -#endif - return NNSi_objSizeWTbl[(*oamShape & GX_OAM_ATTR01_SHAPE_MASK) >> GX_OAM_ATTR01_SHAPE_SHIFT] - [(*oamShape & GX_OAM_ATTR01_SIZE_MASK) >> GX_OAM_ATTR01_SIZE_SHIFT]; -} - -NNS_G2D_INLINE int NNS_G2dGetOamSizeY (const GXOamShape * oamShape) -{ -#ifdef NNS_FROM_TOOL - NNS_G2D_DEFINE_NNSI_OBJSIZEHTBL; -#endif - - return NNSi_objSizeHTbl[(*oamShape & GX_OAM_ATTR01_SHAPE_MASK) >> GX_OAM_ATTR01_SHAPE_SHIFT] - [(*oamShape & GX_OAM_ATTR01_SIZE_MASK) >> GX_OAM_ATTR01_SIZE_SHIFT]; -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/fmt/g2d_SRTControl_data.h b/subprojects/NitroSystem/include/nnsys/g2d/fmt/g2d_SRTControl_data.h deleted file mode 100644 index b2ef4665d4..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/fmt/g2d_SRTControl_data.h +++ /dev/null @@ -1,47 +0,0 @@ -#ifndef NNS_G2D_SRTCONTROL_DATA_H_ -#define NNS_G2D_SRTCONTROL_DATA_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - NNS_G2D_SRTCONTROLTYPE_INVALID, - NNS_G2D_SRTCONTROLTYPE_SRT, - NNS_G2D_SRTCONTROLTYPE_MTX2D, - NNS_G2D_SRTCONTROLTYPE_MTX3D, - NNS_G2D_SRTCONTROLTYPE_MAX -} NNSG2dSRTControlType; - -typedef enum NNSG2dAffineEnable { - NNS_G2D_AFFINEENABLE_NONE = 0x00, - NNS_G2D_AFFINEENABLE_SCALE = 0x02, - NNS_G2D_AFFINEENABLE_ROTATE = 0x04, - NNS_G2D_AFFINEENABLE_TRANS = 0x08, - NNS_G2D_AFFINEENABLE_MAX = 0x10 -} NNSG2dAffineEnable; - -typedef union { - struct { - NNSG2dFVec2 scale; - NNSG2dSVec2 trans; - u16 rotZ; - u16 SRT_EnableFlag; - }; - - MtxFx32 mtx; -} NNSG2dSRTData; - -typedef struct { - NNSG2dSRTControlType type; - NNSG2dSRTData srtData; -} NNSG2dSRTControl; - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/fmt/g2d_Screen_data.h b/subprojects/NitroSystem/include/nnsys/g2d/fmt/g2d_Screen_data.h deleted file mode 100644 index 89280bfb62..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/fmt/g2d_Screen_data.h +++ /dev/null @@ -1,58 +0,0 @@ -#ifndef NNS_G2D_SCREEN_DATA_H_ -#define NNS_G2D_SCREEN_DATA_H_ - -#include -#include - -#ifndef SDK_ARM9 - #include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define NNS_G2D_BINFILE_SIG_SCRDATA (u32)'NSCR' - -#define NNS_G2D_BINBLK_SIG_SCRDATA (u32)'SCRN' - -#define NNS_G2D_BINFILE_EXT_SCRDATA "NSCR" - -#define NNS_G2D_NSCR_MAJOR_VER (u8)1 -#define NNS_G2D_NSCR_MINOR_VER (u8)0 - -#define NNS_G2D_NSCR_VER (u16)((NNS_G2D_NSCR_MAJOR_VER << 8) | NNS_G2D_NSCR_MINOR_VER) - -typedef enum NNSG2dColorMode { - NNS_G2D_SCREENCOLORMODE_16x16, - NNS_G2D_SCREENCOLORMODE_256x1, - NNS_G2D_SCREENCOLORMODE_256x16 -} NNSG2dColorMode; - -typedef enum NNSG2dScreenFormat { - NNS_G2D_SCREENFORMAT_TEXT, - NNS_G2D_SCREENFORMAT_AFFINE, - NNS_G2D_SCREENFORMAT_AFFINEEXT, - NNS_G2D_SCREENFORMAT_PLTBMP, - NNS_G2D_SCREENFORMAT_DCBMP -} NNSG2dScreenFormat; - -typedef struct NNSG2dScreenData { - u16 screenWidth; - u16 screenHeight; - u16 colorMode; - u16 screenFormat; - u32 szByte; - u32 rawData[1]; -} NNSG2dScreenData; - -typedef struct NNSG2dScreenDataBlock { - NNSG2dBinaryBlockHeader blockHeader; - NNSG2dScreenData screenData; -} NNSG2dScreenDataBlock; - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/fmt/g2d_Vec_data.h b/subprojects/NitroSystem/include/nnsys/g2d/fmt/g2d_Vec_data.h deleted file mode 100644 index 27e525efcc..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/fmt/g2d_Vec_data.h +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef NNS_G2D_VEC_DATA_H_ -#define NNS_G2D_VEC_DATA_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct NNSG2dSVec2 { - s16 x; - s16 y; -} NNSG2dSVec2; - -typedef struct NNSG2dFVec2 { - fx32 x; - fx32 y; -} NNSG2dFVec2; - -#ifdef SDK_ADS -typedef struct { - fx32 _00, _01; - fx32 _10, _11; - fx32 _20, _21; -} MtxFx32; -#else -typedef union { - struct { - fx32 _00, _01; - fx32 _10, _11; - fx32 _20, _21; - }; - fx32 m[3][2]; - fx32 a[6]; -} MtxFx32; -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/g2d_Animation.h b/subprojects/NitroSystem/include/nnsys/g2d/g2d_Animation.h deleted file mode 100644 index 292587a72b..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/g2d_Animation.h +++ /dev/null @@ -1,218 +0,0 @@ -#ifndef NNS_G2D_ANIMATION_H_ -#define NNS_G2D_ANIMATION_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define NNS_G2dGetCurrentElement NNS_G2dGetAnimCtrlCurrentElement -#define NNS_G2dGetNextElement NNS_G2dGetAnimCtrlNextElement -#define NNS_G2dGetNormalizedTime NNS_G2dGetAnimCtrlNormalizedTime -#define NNS_G2dSetCallBackFunctor NNS_G2dSetAnimCtrlCallBackFunctor -#define NNS_G2dSetCallBackFunctorAtAnimFrame NNS_G2dSetAnimCtrlCallBackFunctorAtAnimFrame -#define NNS_G2dGetAnimSpeed NNS_G2dGetAnimCtrlSpeed -#define NNS_G2dSetAnimSpeed NNS_G2dSetAnimCtrlSpeed -#define NNS_G2dResetAnimationState NNS_G2dResetAnimCtrlState -#define NNS_G2dInitCallBackFunctor NNS_G2dInitAnimCallBackFunctor - -#define NNS_G2dBindAnimController NNS_G2dBindAnimCtrl -#define NNS_G2dGetAnimControllerType NNS_G2dGetAnimCtrlType -#define NNS_G2dInitAnimController NNS_G2dInitAnimCtrl -#define NNS_G2dInitAnimControllerCallBackFunctor NNS_G2dInitAnimCtrlCallBackFunctor -#define NNS_G2dIsAnimControllerActive NNS_G2dIsAnimCtrlActive -#define NNS_G2dStartAnimController NNS_G2dStartAnimCtrl -#define NNS_G2dStopAnimController NNS_G2dStopAnimCtrl -#define NNS_G2dTickAnimController NNS_G2dTickAnimCtrl - -#define NNS_G2D_ASSERT_ANIMATIONTYPE_VALID(val) \ - NNS_G2D_MINMAX_ASSERT(val, NNS_G2D_ANIMATIONTYPE_CELL, NNS_G2D_ANIMATIONTYPE_MULTICELLLOCATION) - -typedef NNSG2dAnimFrameData NNSG2dAnimFrame; - -typedef NNSG2dAnimSequenceData NNSG2dAnimSequence; - -typedef void (* NNSG2dAnmCallBackPtr)(u32 data, fx32 currentFrame); - -typedef enum NNSG2dAnmCallbackType { - NNS_G2D_ANMCALLBACKTYPE_NONE = 0, - NNS_G2D_ANMCALLBACKTYPE_LAST_FRM, - NNS_G2D_ANMCALLBACKTYPE_SPEC_FRM, - NNS_G2D_ANMCALLBACKTYPE_EVER_FRM, - AnmCallbackType_MAX -} NNSG2dAnmCallbackType; - -typedef struct NNSG2dCallBackFunctor { - NNSG2dAnmCallbackType type; - u32 param; - NNSG2dAnmCallBackPtr pFunc; - u16 frameIdx; - u16 pad16_; -} NNSG2dCallBackFunctor, NNSG2dAnimCallBackFunctor; - -typedef struct NNSG2dAnimController { - const NNSG2dAnimFrame * pCurrent; - const NNSG2dAnimFrame * pActiveCurrent; - - BOOL bReverse; - BOOL bActive; - - fx32 currentTime; - fx32 speed; - - NNSG2dAnimationPlayMode overriddenPlayMode; - - const NNSG2dAnimSequence * pAnimSequence; - NNSG2dAnimCallBackFunctor callbackFunctor; -} NNSG2dAnimController; - -void NNSi_G2dCallbackFuncHandling -( - const NNSG2dCallBackFunctor * pFunctor, - u16 currentFrameIdx -); - -BOOL NNS_G2dTickAnimCtrl -( - NNSG2dAnimController * pAnimCtrl, - fx32 frames -); - -BOOL NNS_G2dSetAnimCtrlCurrentFrame -( - NNSG2dAnimController * pAnimCtrl, - u16 index -); - -BOOL NNS_G2dSetAnimCtrlCurrentFrameNoResetCurrentTime -( - NNSG2dAnimController * pAnimCtrl, - u16 index -); - -u16 NNS_G2dGetAnimCtrlCurrentFrame -( - const NNSG2dAnimController * pAnimCtrl -); - -void NNS_G2dInitAnimCtrl -( - NNSG2dAnimController * pAnimCtrl -); - -void NNS_G2dInitAnimCtrlCallBackFunctor -( - NNSG2dAnimController * pAnimCtrl -); - -void NNS_G2dInitAnimCallBackFunctor -( - NNSG2dAnimCallBackFunctor * pCallBack -); - -void NNS_G2dResetAnimCtrlState -( - NNSG2dAnimController * pAnimCtrl -); - -void NNS_G2dBindAnimCtrl -( - NNSG2dAnimController * pAnimCtrl, - const NNSG2dAnimSequence * pAnimSequence -); - -void * NNS_G2dGetAnimCtrlCurrentElement(NNSG2dAnimController * pAnimCtrl); -void * NNS_G2dGetAnimCtrlNextElement(NNSG2dAnimController * pAnimCtrl); -fx32 NNS_G2dGetAnimCtrlNormalizedTime(NNSG2dAnimController * pAnimCtrl); - -void NNS_G2dSetAnimCtrlCallBackFunctor -( - NNSG2dAnimController * pAnimCtrl, - NNSG2dAnmCallbackType type, - u32 param, - NNSG2dAnmCallBackPtr pFunc -); - -void NNS_G2dSetAnimCtrlCallBackFunctorAtAnimFrame -( - NNSG2dAnimController * pAnimCtrl, - u32 param, - NNSG2dAnmCallBackPtr pFunc, - u16 frameIdx -); - -BOOL NNSi_G2dIsAnimCtrlLoopAnim(const NNSG2dAnimController * pAnimCtrl); - -static NNSG2dAnimationType NNS_G2dGetAnimCtrlType -( - const NNSG2dAnimController * pAnimCtrl -); - -static void NNS_G2dSetAnimCtrlSpeed -( - NNSG2dAnimController * pAnimCtrl, - fx32 speed -); - -static fx32 NNS_G2dGetAnimCtrlSpeed -( - const NNSG2dAnimController * pAnimCtrl -); - -static void NNS_G2dStartAnimCtrl -( - NNSG2dAnimController * pAnimCtrl -); - -static void NNS_G2dStopAnimCtrl -( - NNSG2dAnimController * pAnimCtrl -); - -static BOOL NNS_G2dIsAnimCtrlActive -( - const NNSG2dAnimController * pAnimCtrl -); - -static void NNS_G2dSetAnimCtrlPlayModeOverridden -( - NNSG2dAnimController * pAnimCtrl, - NNSG2dAnimationPlayMode playMode -); - -static void NNS_G2dResetAnimCtrlPlayModeOverridden -( - NNSG2dAnimController * pAnimCtrl -); - -static fx32 NNS_G2dGetAnimCtrlCurrentTime -( - const NNSG2dAnimController * pAnimCtrl -); - -static void NNS_G2dSetAnimCtrlCurrentTime -( - NNSG2dAnimController * pAnimCtrl, - fx32 time -); - -static u16 NNS_G2dGetAnimCtrlCurrentElemIdxVal -( - const NNSG2dAnimController * pAnimCtrl -); - -static const NNSG2dAnimSequence * -NNS_G2dGetAnimCtrlCurrentAnimSequence -( - const NNSG2dAnimController * pAnimCtrl -); - -#ifdef __cplusplus -} -#endif - -#include -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/g2d_Animation_inline.h b/subprojects/NitroSystem/include/nnsys/g2d/g2d_Animation_inline.h deleted file mode 100644 index e21b172977..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/g2d_Animation_inline.h +++ /dev/null @@ -1,136 +0,0 @@ -#ifndef NNS_G2D_ANIMATION_INLINE_H_ -#define NNS_G2D_ANIMATION_INLINE_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -NNS_G2D_INLINE NNSG2dAnimationType NNS_G2dGetAnimCtrlType -( - const NNSG2dAnimController * pAnimCtrl -) -{ - NNS_G2D_NULL_ASSERT(pAnimCtrl); - if (pAnimCtrl->pAnimSequence != NULL) { - return NNS_G2dGetAnimSequenceAnimType(pAnimCtrl->pAnimSequence); - } else { - return NNS_G2D_ANIMATIONTYPE_MAX; - } -} - -NNS_G2D_INLINE void NNS_G2dSetAnimCtrlSpeed -( - NNSG2dAnimController * pAnimCtrl, - fx32 speed -) -{ - NNS_G2D_NULL_ASSERT(pAnimCtrl); - pAnimCtrl->speed = speed; -} - -NNS_G2D_INLINE fx32 NNS_G2dGetAnimCtrlSpeed -( - const NNSG2dAnimController * pAnimCtrl -) -{ - NNS_G2D_NULL_ASSERT(pAnimCtrl); - return pAnimCtrl->speed; -} - -NNS_G2D_INLINE void NNS_G2dStartAnimCtrl -( - NNSG2dAnimController * pAnimCtrl -) -{ - NNS_G2D_NULL_ASSERT(pAnimCtrl); - pAnimCtrl->bActive = TRUE; -} - -NNS_G2D_INLINE void NNS_G2dStopAnimCtrl -( - NNSG2dAnimController * pAnimCtrl -) -{ - NNS_G2D_NULL_ASSERT(pAnimCtrl); - pAnimCtrl->bActive = FALSE; -} - -NNS_G2D_INLINE BOOL NNS_G2dIsAnimCtrlActive -( - const NNSG2dAnimController * pAnimCtrl -) -{ - NNS_G2D_NULL_ASSERT(pAnimCtrl); - return pAnimCtrl->bActive; -} - -NNS_G2D_INLINE void NNS_G2dSetAnimCtrlPlayModeOverridden -( - NNSG2dAnimController * pAnimCtrl, - NNSG2dAnimationPlayMode playMode -) -{ - NNS_G2D_NULL_ASSERT(pAnimCtrl); - NNS_G2D_MINMAX_ASSERT(playMode, NNS_G2D_ANIMATIONPLAYMODE_FORWARD, - NNS_G2D_ANIMATIONPLAYMODE_REVERSE_LOOP); - - pAnimCtrl->overriddenPlayMode = playMode; -} - -NNS_G2D_INLINE void NNS_G2dResetAnimCtrlPlayModeOverridden -( - NNSG2dAnimController * pAnimCtrl -) -{ - NNS_G2D_NULL_ASSERT(pAnimCtrl); - pAnimCtrl->overriddenPlayMode = NNS_G2D_ANIMATIONPLAYMODE_INVALID; -} - -NNS_G2D_INLINE fx32 NNS_G2dGetAnimCtrlCurrentTime -( - const NNSG2dAnimController * pAnimCtrl -) -{ - NNS_G2D_NULL_ASSERT(pAnimCtrl); - return pAnimCtrl->currentTime; -} - -NNS_G2D_INLINE void NNS_G2dSetAnimCtrlCurrentTime -( - NNSG2dAnimController * pAnimCtrl, - fx32 time -) -{ - NNS_G2D_NULL_ASSERT(pAnimCtrl); - pAnimCtrl->currentTime = time; -} - -NNS_G2D_INLINE u16 NNS_G2dGetAnimCtrlCurrentElemIdxVal -( - const NNSG2dAnimController * pAnimCtrl -) -{ - NNS_G2D_NULL_ASSERT(pAnimCtrl); - - { - const NNSG2dAnimData * pAnmRes - = (const NNSG2dAnimData *)pAnimCtrl->pCurrent->pContent; - - return (*pAnmRes); - } -} - -NNS_G2D_INLINE const NNSG2dAnimSequence * NNS_G2dGetAnimCtrlCurrentAnimSequence -( - const NNSG2dAnimController * pAnimCtrl -) -{ - NNS_G2D_NULL_ASSERT(pAnimCtrl); - return pAnimCtrl->pAnimSequence; -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/g2d_CellAnimation.h b/subprojects/NitroSystem/include/nnsys/g2d/g2d_CellAnimation.h deleted file mode 100644 index 1eb476b9d4..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/g2d_CellAnimation.h +++ /dev/null @@ -1,123 +0,0 @@ -#ifndef NNS_G2D_CELLANIMATION_H_ -#define NNS_G2D_CELLANIMATION_H_ - -#include -#include -#include -#include -#include - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define NNS_G2dSetCellAnimSpeed NNS_G2dSetCellAnimationSpeed -#define NNS_G2dGetCellAnimAnimCtrl NNS_G2dGetCellAnimationAnimCtrl -#define NNS_G2dInitializeCellAnimation NNS_G2dInitCellAnimation -#define NNS_G2dInitializeCellAnimationVramTransfered NNS_G2dInitCellAnimationVramTransfered - -typedef NNSG2dAnimSequence NNSG2dCellAnimSequence; -typedef NNSG2dAnimBankData NNSG2dCellAnimBankData; - -typedef struct NNSG2dCellAnimation { - NNSG2dAnimController animCtrl; - const NNSG2dCellData * pCurrentCell; - const NNSG2dCellDataBank * pCellDataBank; - - u32 cellTransferStateHandle; - - NNSG2dSRTControl srtCtrl; -} NNSG2dCellAnimation; - -void NNS_G2dInitCellAnimation(NNSG2dCellAnimation * pCellAnim, const NNSG2dAnimSequence * pAnimSeq, const NNSG2dCellDataBank * pCellDataBank); -void NNS_G2dInitCellAnimationVramTransfered -( - NNSG2dCellAnimation * pCellAnim, - const NNSG2dAnimSequence * pAnimSeq, - const NNSG2dCellDataBank * pCellBank, - u32 vramSettingHandle, - u32 dstAddr3D, - u32 dstAddr2DMain, - u32 dstAddr2DSub, - const void * pSrcNCGR, - const void * pSrcNCBR, - u32 szSrcData -); - -void NNS_G2dSetCellAnimationSequence(NNSG2dCellAnimation * pCellAnim, const NNSG2dAnimSequence * pAnimSeq); -void NNS_G2dSetCellAnimationSequenceNoReset(NNSG2dCellAnimation * pCellAnim, const NNSG2dAnimSequence * pAnimSeq); - -void NNS_G2dTickCellAnimation(NNSG2dCellAnimation * pCellAnim, fx32 frames); -void NNS_G2dSetCellAnimationCurrentFrame(NNSG2dCellAnimation * pCellAnim, u16 frameIndex); -void NNS_G2dRestartCellAnimation -( - NNSG2dCellAnimation * pCellAnim -); - -void NNS_G2dSetCellAnimationSpeed -( - NNSG2dCellAnimation * pCellAnim, - fx32 speed -); - -u16 NNS_G2dMakeCellToOams -( - GXOamAttr * pDstOams, - u16 numDstOam, - const NNSG2dCellData * pCell, - const MtxFx22 * pMtxSR, - const NNSG2dFVec2 * pBaseTrans, - u16 affineIndex, - BOOL bDoubleAffine -); - -NNS_G2D_INLINE NNSG2dAnimController * NNS_G2dGetCellAnimationAnimCtrl -( - NNSG2dCellAnimation * pCellAnim -) -{ - NNS_G2D_NULL_ASSERT(pCellAnim); - return &pCellAnim->animCtrl; -} - -NNS_G2D_INLINE const NNSG2dCellData * NNS_G2dGetCellAnimationCurrentCell -( - const NNSG2dCellAnimation * pCellAnim -) -{ - NNS_G2D_NULL_ASSERT(pCellAnim); - return pCellAnim->pCurrentCell; -} - -NNS_G2D_INLINE BOOL NNSi_G2dIsCellAnimVramTransferHandleValid (const NNSG2dCellAnimation * pCellAnim) -{ - return (BOOL)(pCellAnim->cellTransferStateHandle - != NNS_G2D_INVALID_CELL_TRANSFER_STATE_HANDLE); -} - -NNS_G2D_INLINE BOOL NNSi_G2dIsVramTransferCellAnim (const NNSG2dCellAnimation * pCellAnim) -{ - return NNSi_G2dIsCellAnimVramTransferHandleValid(pCellAnim); -} - -NNS_G2D_INLINE void NNSi_G2dSetCellAnimVramTransferHandle (NNSG2dCellAnimation * pCellAnim, u32 handle) -{ - NNS_G2D_NULL_ASSERT(pCellAnim); - NNS_G2D_ASSERT(handle != NNS_G2D_INVALID_CELL_TRANSFER_STATE_HANDLE); - - pCellAnim->cellTransferStateHandle = handle; -} - -NNS_G2D_INLINE u32 NNSi_G2dGetCellAnimVramTransferHandle (const NNSG2dCellAnimation * pCellAnim) -{ - NNS_G2D_NULL_ASSERT(pCellAnim); - return pCellAnim->cellTransferStateHandle; -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/g2d_CellTransferManager.h b/subprojects/NitroSystem/include/nnsys/g2d/g2d_CellTransferManager.h deleted file mode 100644 index 94b51683ff..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/g2d_CellTransferManager.h +++ /dev/null @@ -1,129 +0,0 @@ -#ifndef NNS_G2D_CELL_TRANSFER_MANAGER_H_ -#define NNS_G2D_CELL_TRANSFER_MANAGER_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#define NNS_G2D_INVALID_CELL_TRANSFER_STATE_HANDLE (u32)0xFFFFFFFF - -typedef BOOL (* VramTransferTaskRegisterFuncPtr)(NNS_GFD_DST_TYPE type, - u32 dstAddr, - void * pSrc, - u32 szByte); - -typedef struct NNSG2dCellTransferState { - NNSG2dVRamLocation dstVramLocation; - u32 szDst; - - const void * pSrcNCGR; - const void * pSrcNCBR; - u32 szSrcData; - BOOL bActive; - - u32 bDrawn; - - u32 bTransferRequested; - - u32 srcOffset; - u32 szByte; -} NNSG2dCellTransferState; - -void -NNS_G2dInitCellTransferStateManager -( - NNSG2dCellTransferState * pCellStateArray, - u32 numCellState, - VramTransferTaskRegisterFuncPtr pTaskRegisterFunc -); - -u32 -NNS_G2dGetNewCellTransferStateHandle(); -void -NNS_G2dFreeCellTransferStateHandle(u32 handle); - -void NNS_G2dUpdateCellTransferStateManager(); - -void NNS_G2dSetCellTransferStateRequested -( - u32 handle, - u32 srcOffset, - u32 szByte -); - -NNSG2dCellTransferState * -NNSi_G2dGetCellTransferState -( - u32 handle -); - -void NNSi_G2dInitCellTransferState -( - u32 handle, - - u32 dstAddr3D, - u32 dstAddr2DMain, - u32 dstAddr2DSub, - u32 szDst, - - const void * pSrcNCGR, - const void * pSrcNCBR, - u32 szSrcData -); - -NNS_G2D_INLINE void NNSi_G2dSetCellTransferStateRequestFlag (NNSG2dCellTransferState * pState, NNS_G2D_VRAM_TYPE type, BOOL flag) -{ - pState->bTransferRequested = (pState->bTransferRequested & ~(0x1 << type)) | (flag << type); -} - -NNS_G2D_INLINE void NNSi_G2dSetVramTransferRequestFlag (u32 handle, NNS_G2D_VRAM_TYPE type, BOOL flag) -{ - NNSG2dCellTransferState * pState = NNSi_G2dGetCellTransferState(handle); - - NNSi_G2dSetCellTransferStateRequestFlag(pState, type, flag); -} - -NNS_G2D_INLINE BOOL NNSi_G2dGetCellTransferStateRequestFlag (const NNSG2dCellTransferState * pState, NNS_G2D_VRAM_TYPE type) -{ - return (BOOL)(pState->bTransferRequested & (0x1 << type)); -} - -NNS_G2D_INLINE BOOL NNSi_G2dGetVramTransferRequestFlag (u32 handle, NNS_G2D_VRAM_TYPE type) -{ - const NNSG2dCellTransferState * pState = NNSi_G2dGetCellTransferState(handle); - return NNSi_G2dGetCellTransferStateRequestFlag(pState, type); -} - -NNS_G2D_INLINE void NNSi_G2dSetCellTransferStateCellDrawnFlag (NNSG2dCellTransferState * pState, NNS_G2D_VRAM_TYPE type, BOOL flag) -{ - pState->bDrawn = (pState->bDrawn & ~(0x1 << type)) | (flag << type); -} - -NNS_G2D_INLINE void NNSi_G2dSetVramTransferCellDrawnFlag (u32 handle, NNS_G2D_VRAM_TYPE type, BOOL flag) -{ - NNSG2dCellTransferState * pState = NNSi_G2dGetCellTransferState(handle); - NNSi_G2dSetCellTransferStateCellDrawnFlag(pState, type, flag); -} - -NNS_G2D_INLINE BOOL NNSi_G2dGetCellTransferStateCellDrawnFlag (const NNSG2dCellTransferState * pState, NNS_G2D_VRAM_TYPE type) -{ - return (BOOL)(pState->bDrawn & (0x1 << type)); -} - -NNS_G2D_INLINE BOOL NNSi_G2dGetVramTransferCellDrawnFlag (u32 handle, NNS_G2D_VRAM_TYPE type) -{ - const NNSG2dCellTransferState * pState = NNSi_G2dGetCellTransferState(handle); - return NNSi_G2dGetCellTransferStateCellDrawnFlag(pState, type); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/g2d_CharCanvas.h b/subprojects/NitroSystem/include/nnsys/g2d/g2d_CharCanvas.h deleted file mode 100644 index dee14af7f4..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/g2d_CharCanvas.h +++ /dev/null @@ -1,335 +0,0 @@ -#ifndef G2D_CHARCANVAS_H_ -#define G2D_CHARCANVAS_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define NNS_G2D_CHARCANVAS_ASSERT(pCC) \ - NNS_G2D_ASSERTMSG( \ - NNS_G2D_IS_VALID_POINTER(pCC) \ - && (0 < (pCC)->areaWidth) \ - && (0 < (pCC)->areaHeight) \ - && (((pCC)->dstBpp == 4) || ((pCC)->dstBpp == 8)) \ - && NNS_G2D_IS_VALID_POINTER((pCC)->charBase) \ - && NNS_G2D_IS_ALIGNED((pCC)->charBase, 4) \ - && NNS_G2D_IS_VALID_POINTER((pCC)->vtable) \ - && NNS_G2D_IS_VALID_POINTER((pCC)->vtable->pDrawGlyph) \ - && NNS_G2D_IS_VALID_POINTER((pCC)->vtable->pClear) \ - && NNS_G2D_IS_VALID_POINTER((pCC)->vtable->pClearArea) \ - , "Illegal NNSG2dCharCanvas.") - -#define NNS_G2D_COLORMODE_ASSERT(cmode) \ - NNS_G2D_ASSERTMSG( \ - (cmode) == NNS_G2D_CHARA_COLORMODE_16 \ - || (cmode) == NNS_G2D_CHARA_COLORMODE_256 \ - , "Illegal Color Mode(=%d)", (cmode)) - -#define NNS_G2D_OBJVRAMMODE_ASSERT(vmode) \ - NNS_G2D_ASSERTMSG( \ - (vmode) == NNS_G2D_OBJVRAMMODE_32K \ - || (vmode) == NNS_G2D_OBJVRAMMODE_64K \ - || (vmode) == NNS_G2D_OBJVRAMMODE_128K \ - || (vmode) == NNS_G2D_OBJVRAMMODE_256K \ - , "Illegal VRAM Mode(=%d)", (vmode)) - -#define NNS_G2D_TEXT_BG_WIDTH_ASSERT(width) \ - NNS_G2D_ASSERTMSG( \ - (width) == NNS_G2D_TEXT_BG_WIDTH_256 \ - || (width) == NNS_G2D_TEXT_BG_WIDTH_512 \ - , "Illegal Text BG Width(=%d).", (width)) - -#define NNS_G2D_AFFINE_BG_WIDTH_ASSERT(width) \ - NNS_G2D_ASSERTMSG( \ - (width) == NNS_G2D_AFFINE_BG_WIDTH_128 \ - || (width) == NNS_G2D_AFFINE_BG_WIDTH_256 \ - || (width) == NNS_G2D_AFFINE_BG_WIDTH_512 \ - || (width) == NNS_G2D_AFFINE_BG_WIDTH_1024 \ - , "Illegal Affine BG Width(=%d).", (width)) - -#define NNS_G2D_256x16PLTT_BG_WIDTH_ASSERT(width) \ - NNS_G2D_ASSERTMSG( \ - (width) == NNS_G2D_256x16PLTT_BG_WIDTH_128 \ - || (width) == NNS_G2D_256x16PLTT_BG_WIDTH_256 \ - || (width) == NNS_G2D_256x16PLTT_BG_WIDTH_512 \ - || (width) == NNS_G2D_256x16PLTT_BG_WIDTH_1024 \ - , "Illegal 256x16Pltt BG Width(=%d).", (width)) - -typedef enum NNSG2dTextBGWidth { - NNS_G2D_TEXT_BG_WIDTH_256 = 32, - NNS_G2D_TEXT_BG_WIDTH_512 = 64 -} NNSG2dTextBGWidth; - -typedef enum NNSG2dAffineBGWidth { - NNS_G2D_AFFINE_BG_WIDTH_128 = 16, - NNS_G2D_AFFINE_BG_WIDTH_256 = 32, - NNS_G2D_AFFINE_BG_WIDTH_512 = 64, - NNS_G2D_AFFINE_BG_WIDTH_1024 = 128 -} NNSG2dAffineBGWidth; - -typedef enum NNSG2d256x16PlttBGWidth { - NNS_G2D_256x16PLTT_BG_WIDTH_128 = 16, - NNS_G2D_256x16PLTT_BG_WIDTH_256 = 32, - NNS_G2D_256x16PLTT_BG_WIDTH_512 = 64, - NNS_G2D_256x16PLTT_BG_WIDTH_1024 = 128 -} NNSG2d256x16PlttBGWidth; - -typedef enum NNSG2dCharaColorMode { - NNS_G2D_CHARA_COLORMODE_16 = 4, - NNS_G2D_CHARA_COLORMODE_256 = 8 -} NNSG2dCharaColorMode; - -typedef enum NNSG2dOBJVramMode { - NNS_G2D_OBJVRAMMODE_32K = 0, - NNS_G2D_OBJVRAMMODE_64K = 1, - NNS_G2D_OBJVRAMMODE_128K = 2, - NNS_G2D_OBJVRAMMODE_256K = 3 -} NNSG2dOBJVramMode; - -struct NNSG2dCharCanvas; - -typedef void (* NNSiG2dDrawGlyphFunc)( - const struct NNSG2dCharCanvas * pCC, - const NNSG2dFont * pFont, - int x, - int y, - int cl, - const NNSG2dGlyph * pGlyph -); - -typedef void (* NNSiG2dClearFunc)( - const struct NNSG2dCharCanvas * pCC, - int cl -); - -typedef void (* NNSiG2dClearAreaFunc)( - const struct NNSG2dCharCanvas * pCC, - int cl, - int x, - int y, - int w, - int h -); - -typedef struct NNSiG2dCharCanvasVTable { - NNSiG2dDrawGlyphFunc pDrawGlyph; - NNSiG2dClearFunc pClear; - NNSiG2dClearAreaFunc pClearArea; -} NNSiG2dCharCanvasVTable; - -typedef struct NNSG2dCharCanvas { - u8 * charBase; - int areaWidth; - int areaHeight; - u8 dstBpp; - u8 reserved[3]; - u32 param; - const NNSiG2dCharCanvasVTable * vtable; -} NNSG2dCharCanvas; - -void NNS_G2dMapScrToCharText( - void * scnBase, - int areaWidth, - int areaHeight, - int areaLeft, - int areaTop, - NNSG2dTextBGWidth scnWidth, - int charNo, - int cplt -); - -void NNS_G2dMapScrToCharAffine( - void * areaBase, - int areaWidth, - int areaHeight, - NNSG2dAffineBGWidth scnWidth, - int charNo -); - -void NNS_G2dMapScrToChar256x16Pltt( - void * areaBase, - int areaWidth, - int areaHeight, - NNSG2d256x16PlttBGWidth scnWidth, - int charNo, - int cplt -); - -int NNSi_G2dCalcRequiredOBJ( - int areaWidth, - int areaHeight -); - -NNS_G2D_INLINE int NNS_G2dCalcRequiredOBJ1D ( - int areaWidth, - int areaHeight -) -{ - return NNSi_G2dCalcRequiredOBJ(areaWidth, areaHeight); -} - -NNS_G2D_INLINE int NNS_G2dCalcRequiredOBJ2DRect ( - int areaWidth, - int areaHeight -) -{ - return NNSi_G2dCalcRequiredOBJ(areaWidth, areaHeight); -} - -int NNS_G2dArrangeOBJ1D( - GXOamAttr * oam, - int areaWidth, - int areaHeight, - int x, - int y, - GXOamColorMode color, - int charName, - NNSG2dOBJVramMode vramMode -); - -int NNS_G2dArrangeOBJ2DRect( - GXOamAttr * oam, - int areaWidth, - int areaHeight, - int x, - int y, - GXOamColorMode color, - int charName -); - -int NNS_G2dCharCanvasDrawChar( - const NNSG2dCharCanvas * pCC, - const NNSG2dFont * pFont, - int x, - int y, - int cl, - u16 ccode -); - -NNS_G2D_INLINE void NNS_G2dCharCanvasDrawGlyph ( - const NNSG2dCharCanvas * pCC, - const NNSG2dFont * pFont, - int x, - int y, - int cl, - const NNSG2dGlyph * pGlyph -) -{ - NNS_G2D_CHARCANVAS_ASSERT(pCC); - pCC->vtable->pDrawGlyph(pCC, pFont, x, y, cl, pGlyph); -} - -NNS_G2D_INLINE void NNS_G2dCharCanvasClear ( - const NNSG2dCharCanvas * pCC, - int cl -) -{ - NNS_G2D_CHARCANVAS_ASSERT(pCC); - pCC->vtable->pClear(pCC, cl); -} - -NNS_G2D_INLINE void NNS_G2dCharCanvasClearArea ( - const NNSG2dCharCanvas * pCC, - int cl, - int x, - int y, - int w, - int h -) -{ - NNS_G2D_CHARCANVAS_ASSERT(pCC); - pCC->vtable->pClearArea(pCC, cl, x, y, w, h); -} - -void NNS_G2dCharCanvasInitForBG( - NNSG2dCharCanvas * pCC, - void * charBase, - int areaWidth, - int areaHeight, - NNSG2dCharaColorMode colorMode -); - -void NNS_G2dCharCanvasInitForOBJ1D( - NNSG2dCharCanvas * pCC, - void * charBase, - int areaWidth, - int areaHeight, - NNSG2dCharaColorMode colorMode -); - -void NNS_G2dCharCanvasInitForOBJ2DRect( - NNSG2dCharCanvas * pCC, - void * charBase, - int areaWidth, - int areaHeight, - NNSG2dCharaColorMode colorMode -); - -void NNS_G2dCharCanvasMakeCell1D( - NNSG2dCellData * pCell, - const NNSG2dCharCanvas * pCC, - int x, - int y, - int priority, - GXOamMode mode, - BOOL mosaic, - GXOamEffect effect, - GXOamColorMode color, - int charName, - int cParam, - NNSG2dOBJVramMode vramMode, - BOOL makeBR -); - -void NNS_G2dCharCanvasMakeCell2DRect( - NNSG2dCellData * pCell, - const NNSG2dCharCanvas * pCC, - int x, - int y, - int priority, - GXOamMode mode, - BOOL mosaic, - GXOamEffect effect, - GXOamColorMode color, - int charName, - int cParam, - BOOL makeBR -); - -NNS_G2D_INLINE size_t NNSi_G2dCharCanvasCalcCellDataSize ( - const NNSG2dCharCanvas * pCC, - BOOL makeBR -) -{ - const int numObj = NNSi_G2dCalcRequiredOBJ(pCC->areaWidth, pCC->areaHeight); - const size_t oamSize = sizeof(NNSG2dCellOAMAttrData) * numObj; - const size_t brSize = makeBR ? sizeof(NNSG2dCellBoundingRectS16) : 0; - - return sizeof(NNSG2dCellData) + brSize + oamSize; -} - -NNS_G2D_INLINE size_t NNS_G2dCharCanvasCalcCellDataSize1D ( - const NNSG2dCharCanvas * pCC, - BOOL makeBR -) -{ - return NNSi_G2dCharCanvasCalcCellDataSize(pCC, makeBR); -} - -NNS_G2D_INLINE size_t NNS_G2dCharCanvasCalcCellDataSize2DRect ( - const NNSG2dCharCanvas * pCC, - BOOL makeBR -) -{ - return NNSi_G2dCharCanvasCalcCellDataSize(pCC, makeBR); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/g2d_CullingUtility.h b/subprojects/NitroSystem/include/nnsys/g2d/g2d_CullingUtility.h deleted file mode 100644 index 6afa193032..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/g2d_CullingUtility.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef NNS_G2D_CULLINGUTILITY_H_ -#define NNS_G2D_CULLINGUTILITY_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -BOOL NNS_G2dIsInViewCircle(const NNSG2dFVec2 * pvUL, const NNSG2dFVec2 * pvSize, const NNSG2dFVec2 * pos, fx32 boundingR); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/g2d_Data.h b/subprojects/NitroSystem/include/nnsys/g2d/g2d_Data.h deleted file mode 100644 index fee90c57d1..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/g2d_Data.h +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef NNS_G2D_DATA_H_ -#define NNS_G2D_DATA_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define NNS_G2D_UNPACK_OFFSET_PTR(ptr, baseOffs) (ptr) = (void *)((u32)(ptr) + (u32)baseOffs) - -#ifdef SDK_FINALROM - -#ifdef __SNC__ -#define NNS_G2D_DEBUG_FUNC_DECL_BEGIN static inline -#else -#define NNS_G2D_DEBUG_FUNC_DECL_BEGIN NNS_G2D_INLINE -#endif -#define NNS_G2D_DEBUG_FUNC_DECL_END {} - -#else - -#define NNS_G2D_DEBUG_FUNC_DECL_BEGIN -#define NNS_G2D_DEBUG_FUNC_DECL_END ; - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/g2d_Entity.h b/subprojects/NitroSystem/include/nnsys/g2d/g2d_Entity.h deleted file mode 100644 index b21b1d7e96..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/g2d_Entity.h +++ /dev/null @@ -1,63 +0,0 @@ -#ifndef NNS_G2D_ENTITY2_H_ -#define NNS_G2D_ENTITY2_H_ - -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define NNS_G2dInitializeEntity NNS_G2dInitEntity -#define NNS_G2dSetCurrentAnimation NNS_G2dSetEntityCurrentAnimation - -#define NNS_G2D_ASSERT_ENTITY_VALID(entity) \ - NNS_G2D_ASSERTMSG(NNS_G2dIsEntityValid((entity)), "A Invalid Entity instance was detected."); - -typedef struct NNSG2dEntity { - void * pDrawStuff; - const NNSG2dEntityData * pEntityData; - const NNSG2dAnimBankData * pAnimDataBank; - u16 currentSequenceIdx; - u16 pad16_; - - NNSG2dPaletteSwapTable * pPaletteTbl; -} NNSG2dEntity; - -void NNS_G2dInitEntity -( - NNSG2dEntity * pEntity, - void * pDrawStuff, - const NNSG2dEntityData * pEntityData, - const NNSG2dAnimBankData * pAnimDataBank -); -void NNS_G2dSetEntityCurrentAnimation(NNSG2dEntity * pEntity, u16 idx); - -void NNS_G2dSetEntityPaletteTable(NNSG2dEntity * pEntity, NNSG2dPaletteSwapTable * pPlttTbl); -void NNS_G2dResetEntityPaletteTable(NNSG2dEntity * pEntity); -BOOL NNS_G2dIsEntityPaletteTblEnable(const NNSG2dEntity * pEntity); - -void NNS_G2dTickEntity(NNSG2dEntity * pEntity, fx32 dt); -void NNS_G2dSetEntityCurrentFrame -( - NNSG2dEntity * pEntity, - u16 frameIndex -); - -void NNS_G2dSetEntitySpeed -( - NNSG2dEntity * pEntity, - fx32 speed -); - -BOOL NNS_G2dIsEntityValid(NNSG2dEntity * pEntity); - -NNSG2dAnimController * NNS_G2dGetEntityAnimCtrl(NNSG2dEntity * pEntity); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/g2d_Font.h b/subprojects/NitroSystem/include/nnsys/g2d/g2d_Font.h deleted file mode 100644 index 10de66f6c3..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/g2d_Font.h +++ /dev/null @@ -1,306 +0,0 @@ -#ifndef G2D_FONT_H_ -#define G2D_FONT_H_ - -#include -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define NNS_G2D_FONT_ASSERT(pFont) \ - NNS_G2D_ASSERTMSG( \ - ((pFont) != NULL) \ - && (*(((u32 *)((pFont)->pRes)) - 2) == NNS_G2D_BINBLK_SIG_FINFDATA) \ - && ((pFont)->pRes->pGlyph != NULL) \ - && NNS_G2D_IS_VALID_POINTER((pFont)->cbCharSpliter) \ - , "invalid NNSG2dFont data") - -#define NNS_G2D_GLYPH_ASSERT(pGlyph) \ - NNS_G2D_ASSERTMSG( \ - ((pGlyph) != NULL) \ - && ((pGlyph)->image != NULL) \ - , "invalid NNSG2dGlyph data") \ - -#define NNS_G2D_FONT_MAX_GLYPH_INDEX(pFont) \ - ((*((u32 *)(pFont)->pRes->pGlyph - 1) - sizeof(*((pFont)->pRes->pGlyph))) \ - / (pFont)->pRes->pGlyph->cellSize) \ - -#define NNS_G2D_GLYPH_INDEX_NOT_FOUND 0xFFFF - -typedef struct NNSG2dFont { - NNSG2dFontInformation * pRes; - NNSiG2dSplitCharCallback cbCharSpliter; -} NNSG2dFont; - -typedef struct NNSG2dGlyph { - const NNSG2dCharWidths * pWidths; - const u8 * image; -} NNSG2dGlyph; - -typedef struct NNSG2dTextRect { - int width; - int height; -} NNSG2dTextRect; - -void NNS_G2dFontInitAuto(NNSG2dFont * pFont, void * pNftrFile); -void NNS_G2dFontInitUTF8(NNSG2dFont * pFont, void * pNftrFile); -void NNS_G2dFontInitUTF16(NNSG2dFont * pFont, void * pNftrFile); -void NNS_G2dFontInitShiftJIS(NNSG2dFont * pFont, void * pNftrFile); -void NNS_G2dFontInitCP1252(NNSG2dFont * pFont, void * pNftrFile); - -u16 NNS_G2dFontFindGlyphIndex(const NNSG2dFont * pFont, u16 c); - -const NNSG2dCharWidths * NNS_G2dFontGetCharWidthsFromIndex( - const NNSG2dFont * pFont, u16 idx); - -NNS_G2D_INLINE NNSG2dFontType NNS_G2dFontGetType (const NNSG2dFont * pFont) -{ - NNS_G2D_FONT_ASSERT(pFont); - return (NNSG2dFontType)pFont->pRes->fontType; -} - -NNS_G2D_INLINE s8 NNS_G2dFontGetLineFeed (const NNSG2dFont * pFont) -{ - NNS_G2D_FONT_ASSERT(pFont); - return pFont->pRes->linefeed; -} - -NNS_G2D_INLINE u16 NNS_G2dFontGetAlternateGlyphIndex (const NNSG2dFont * pFont) -{ - NNS_G2D_FONT_ASSERT(pFont); - return pFont->pRes->alterCharIndex; -} - -NNS_G2D_INLINE NNSG2dCharWidths * NNS_G2dFontGetDefaultCharWidths (const NNSG2dFont * pFont) -{ - NNS_G2D_FONT_ASSERT(pFont); - return &pFont->pRes->defaultWidth; -} - -NNS_G2D_INLINE u8 NNS_G2dFontGetHeight (const NNSG2dFont * pFont) -{ - NNS_G2D_FONT_ASSERT(pFont); - return pFont->pRes->pGlyph->cellHeight; -} - -NNS_G2D_INLINE u8 NNS_G2dFontGetCellHeight (const NNSG2dFont * pFont) -{ - NNS_G2D_FONT_ASSERT(pFont); - return pFont->pRes->pGlyph->cellHeight; -} - -NNS_G2D_INLINE u8 NNS_G2dFontGetCellWidth (const NNSG2dFont * pFont) -{ - NNS_G2D_FONT_ASSERT(pFont); - return pFont->pRes->pGlyph->cellWidth; -} - -NNS_G2D_INLINE int NNS_G2dFontGetBaselinePos (const NNSG2dFont * pFont) -{ - NNS_G2D_FONT_ASSERT(pFont); - return pFont->pRes->pGlyph->baselinePos; -} - -NNS_G2D_INLINE int NNSi_G2dFontGetGlyphDataSize (const NNSG2dFont * pFont) -{ - NNS_G2D_FONT_ASSERT(pFont); - return pFont->pRes->pGlyph->cellSize; -} - -NNS_G2D_INLINE u8 NNS_G2dFontGetMaxCharWidth (const NNSG2dFont * pFont) -{ - NNS_G2D_FONT_ASSERT(pFont); - return pFont->pRes->pGlyph->maxCharWidth; -} - -NNS_G2D_INLINE u8 NNS_G2dFontGetBpp (const NNSG2dFont * pFont) -{ - NNS_G2D_FONT_ASSERT(pFont); - return pFont->pRes->pGlyph->bpp; -} - -NNS_G2D_INLINE NNSG2dFontEncoding NNSi_G2dFontGetEncoding (const NNSG2dFont * pFont) -{ - NNS_G2D_FONT_ASSERT(pFont); - return (NNSG2dFontEncoding)pFont->pRes->encoding; -} - -NNS_G2D_INLINE NNSiG2dSplitCharCallback NNSi_G2dFontGetSpliter (const NNSG2dFont * pFont) -{ - NNS_G2D_FONT_ASSERT(pFont); - return pFont->cbCharSpliter; -} - -NNS_G2D_INLINE const u8 * NNS_G2dFontGetGlyphImageFromIndex ( - const NNSG2dFont * pFont, u16 idx) -{ - NNS_G2D_FONT_ASSERT(pFont); - NNS_G2D_ASSERT(idx < NNS_G2D_FONT_MAX_GLYPH_INDEX(pFont)); - return pFont->pRes->pGlyph->glyphTable + idx * NNSi_G2dFontGetGlyphDataSize(pFont); -} - -NNS_G2D_INLINE u8 NNS_G2dFontGetFlags (const NNSG2dFont * pFont) -{ - NNS_G2D_FONT_ASSERT(pFont); - return pFont->pRes->pGlyph->flags; -} - -NNS_G2D_INLINE void NNS_G2dFontSetLineFeed (NNSG2dFont * pFont, s8 linefeed) -{ - NNS_G2D_FONT_ASSERT(pFont); - pFont->pRes->linefeed = linefeed; -} - -NNS_G2D_INLINE void NNS_G2dFontSetDefaultCharWidths ( - NNSG2dFont * pFont, NNSG2dCharWidths cw) -{ - NNS_G2D_FONT_ASSERT(pFont); - pFont->pRes->defaultWidth = cw; -} - -NNS_G2D_INLINE void NNS_G2dFontSetAlternateGlyphIndex (NNSG2dFont * pFont, u16 idx) -{ - NNS_G2D_FONT_ASSERT(pFont); - NNS_G2D_ASSERT(idx < NNS_G2D_FONT_MAX_GLYPH_INDEX(pFont)); - pFont->pRes->alterCharIndex = idx; -} - -NNS_G2D_INLINE u16 NNS_G2dFontGetGlyphIndex (const NNSG2dFont * pFont, u16 c) -{ - const u16 idx = NNS_G2dFontFindGlyphIndex(pFont, c); - - return (idx != NNS_G2D_GLYPH_INDEX_NOT_FOUND) ? - idx : - pFont->pRes->alterCharIndex; -} - -NNS_G2D_INLINE void NNS_G2dFontGetGlyphFromIndex ( - NNSG2dGlyph * pGlyph, const NNSG2dFont * pFont, u16 idx) -{ - NNS_G2D_FONT_ASSERT(pFont); - NNS_G2D_POINTER_ASSERT(pGlyph); - pGlyph->pWidths = NNS_G2dFontGetCharWidthsFromIndex(pFont, idx); - pGlyph->image = NNS_G2dFontGetGlyphImageFromIndex(pFont, idx); -} - -NNS_G2D_INLINE const NNSG2dCharWidths * NNS_G2dFontGetCharWidths ( - const NNSG2dFont * pFont, u16 c) -{ - u16 iGlyph; - - NNS_G2D_FONT_ASSERT(pFont); - - iGlyph = NNS_G2dFontGetGlyphIndex(pFont, c); - return NNS_G2dFontGetCharWidthsFromIndex(pFont, iGlyph); -} - -NNS_G2D_INLINE int NNS_G2dFontGetCharWidth (const NNSG2dFont * pFont, u16 c) -{ - const NNSG2dCharWidths * pWidths; - - NNS_G2D_FONT_ASSERT(pFont); - - pWidths = NNS_G2dFontGetCharWidths(pFont, c); - return pWidths->charWidth; -} - -NNS_G2D_INLINE int NNS_G2dFontGetCharWidthFromIndex (const NNSG2dFont * pFont, u16 idx) -{ - const NNSG2dCharWidths * pWidths; - - NNS_G2D_FONT_ASSERT(pFont); - - pWidths = NNS_G2dFontGetCharWidthsFromIndex(pFont, idx); - return pWidths->charWidth; -} - -NNS_G2D_INLINE const u8 * NNS_G2dFontGetGlyphImage (const NNSG2dFont * pFont, u16 c) -{ - u16 iGlyph; - - NNS_G2D_FONT_ASSERT(pFont); - - iGlyph = NNS_G2dFontGetGlyphIndex(pFont, c); - return NNS_G2dFontGetGlyphImageFromIndex(pFont, iGlyph); -} - -NNS_G2D_INLINE void NNS_G2dFontGetGlyph ( - NNSG2dGlyph * pGlyph, const NNSG2dFont * pFont, u16 ccode) -{ - u16 iGlyph; - - NNS_G2D_FONT_ASSERT(pFont); - NNS_G2D_POINTER_ASSERT(pGlyph); - - iGlyph = NNS_G2dFontGetGlyphIndex(pFont, ccode); - NNS_G2dFontGetGlyphFromIndex(pGlyph, pFont, iGlyph); -} - -NNS_G2D_INLINE BOOL NNS_G2dFontSetAlternateChar (NNSG2dFont * pFont, u16 c) -{ - u16 iGlyph; - - NNS_G2D_FONT_ASSERT(pFont); - - iGlyph = NNS_G2dFontFindGlyphIndex(pFont, c); - - if (iGlyph == NNS_G2D_GLYPH_INDEX_NOT_FOUND) { - return FALSE; - } - - pFont->pRes->alterCharIndex = iGlyph; - return TRUE; -} - -int NNSi_G2dFontGetStringWidth( - const NNSG2dFont * pFont, - int hSpace, - const void * str, - const void ** pPos -); - -int NNSi_G2dFontGetTextHeight( - const NNSG2dFont * pFont, - int vSpace, - const void * txt -); - -int NNSi_G2dFontGetTextWidth( - const NNSG2dFont * pFont, - int hSpace, - const void * txt -); - -NNSG2dTextRect NNSi_G2dFontGetTextRect( - const NNSG2dFont * pFont, - int hSpace, - int vSpace, - const void * txt -); - -NNS_G2D_INLINE int NNS_G2dFontGetStringWidth (const NNSG2dFont * pFont, int hSpace, const NNSG2dChar * str, const NNSG2dChar ** pPos) -{ - return NNSi_G2dFontGetStringWidth(pFont, hSpace, str, (const void **)pPos); -} -NNS_G2D_INLINE int NNS_G2dFontGetTextHeight (const NNSG2dFont * pFont, int vSpace, const NNSG2dChar * txt) -{ - return NNSi_G2dFontGetTextHeight(pFont, vSpace, txt); -} -NNS_G2D_INLINE int NNS_G2dFontGetTextWidth (const NNSG2dFont * pFont, int hSpace, const NNSG2dChar * txt) -{ - return NNSi_G2dFontGetTextWidth(pFont, hSpace, txt); -} -NNS_G2D_INLINE NNSG2dTextRect NNS_G2dFontGetTextRect (const NNSG2dFont * pFont, int hSpace, int vSpace, const NNSG2dChar * txt) -{ - return NNSi_G2dFontGetTextRect(pFont, hSpace, vSpace, txt); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/g2d_Image.h b/subprojects/NitroSystem/include/nnsys/g2d/g2d_Image.h deleted file mode 100644 index c6cb7d6265..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/g2d_Image.h +++ /dev/null @@ -1,173 +0,0 @@ -#ifndef NNS_G2D_IMAGE_H_ -#define NNS_G2D_IMAGE_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define NNS_G2dInitializeImageProxy NNS_G2dInitImageProxy -#define NNS_G2dInitializeImagePaletteProxy NNS_G2dInitImagePaletteProxy - -typedef enum NNS_G2D_VRAM_TYPE { - NNS_G2D_VRAM_TYPE_3DMAIN = 0, - NNS_G2D_VRAM_TYPE_2DMAIN = 1, - NNS_G2D_VRAM_TYPE_2DSUB = 2, - NNS_G2D_VRAM_TYPE_MAX = 3 -} NNS_G2D_VRAM_TYPE; - -#define NNS_G2D_VRAM_TYPE_VALID(val) \ - NNS_G2D_ASSERTMSG((val) == NNS_G2D_VRAM_TYPE_3DMAIN || \ - (val) == NNS_G2D_VRAM_TYPE_2DMAIN || \ - (val) == NNS_G2D_VRAM_TYPE_2DSUB, \ - "Invalid NNS_G2D_VRAM_TYPE type") \ - -#define NNS_G2D_VRAM_ADDR_NOT_INITIALIZED 0xFFFFFFFF -#define NNS_G2D_VRAM_ADDR_NONE NNS_G2D_VRAM_ADDR_NOT_INITIALIZED - -typedef struct NNSG2dImageAttr { - GXTexSizeS sizeS; - GXTexSizeT sizeT; - - GXTexFmt fmt; - BOOL bExtendedPlt; - - GXTexPlttColor0 plttUse; - GXOBJVRamModeChar mappingType; -} NNSG2dImageAttr; - -typedef struct NNSG2dVRamLocation { - u32 baseAddrOfVram[NNS_G2D_VRAM_TYPE_MAX]; -} NNSG2dVRamLocation; - -typedef struct NNSG2dImageProxy { - NNSG2dVRamLocation vramLocation; - NNSG2dImageAttr attr; -} NNSG2dImageProxy; - -typedef struct NNSG2dImagePaletteProxy { - GXTexFmt fmt; - - BOOL bExtendedPlt; - - NNSG2dVRamLocation vramLocation; -} NNSG2dImagePaletteProxy; - -void NNS_G2dInitImageProxy(NNSG2dImageProxy * pImg); - -void NNS_G2dSetImageLocation(NNSG2dImageProxy * pImg, NNS_G2D_VRAM_TYPE type, u32 addr); - -u32 NNS_G2dGetImageLocation(const NNSG2dImageProxy * pImg, NNS_G2D_VRAM_TYPE type); -BOOL NNS_G2dIsImageReadyToUse(const NNSG2dImageProxy * pImg, NNS_G2D_VRAM_TYPE type); - -void NNS_G2dLoadImage1DMapping -( - const NNSG2dCharacterData * pSrcData, - u32 baseAddr, - NNS_G2D_VRAM_TYPE type, - NNSG2dImageProxy * pImgProxy -); - -void NNS_G2dLoadImage2DMapping -( - const NNSG2dCharacterData * pSrcData, - u32 baseAddr, - NNS_G2D_VRAM_TYPE type, - NNSG2dImageProxy * pImgProxy -); - -void NNS_G2dLoadImageVramTransfer -( - const NNSG2dCharacterData * pSrcData, - u32 baseAddr, - NNS_G2D_VRAM_TYPE type, - NNSG2dImageProxy * pImgProxy -); - -void NNS_G2dLoadPalette -( - const NNSG2dPaletteData * pSrcData, - u32 addr, - NNS_G2D_VRAM_TYPE type, - NNSG2dImagePaletteProxy * pPltProxy -); - -void NNS_G2dLoadPaletteEx -( - const NNSG2dPaletteData * pSrcData, - const NNSG2dPaletteCompressInfo * pCmpInfo, - u32 addr, - NNS_G2D_VRAM_TYPE type, - NNSG2dImagePaletteProxy * pPltProxy -); - -void NNS_G2dInitImagePaletteProxy(NNSG2dImagePaletteProxy * pImg); -void NNS_G2dSetImagePaletteLocation(NNSG2dImagePaletteProxy * pImg, NNS_G2D_VRAM_TYPE type, u32 addr); -u32 NNS_G2dGetImagePaletteLocation(const NNSG2dImagePaletteProxy * pImg, NNS_G2D_VRAM_TYPE type); -BOOL NNS_G2dIsImagePaletteReadyToUse(const NNSG2dImagePaletteProxy * pImg, NNS_G2D_VRAM_TYPE type); -static BOOL NNS_G2dIsPaletteImageFmt(const NNSG2dImageAttr * imgAttr); - -void NNSi_G2dInitializeVRamLocation(NNSG2dVRamLocation * pVramLocation); -void NNSi_G2dSetVramLocation(NNSG2dVRamLocation * pVramLocation, NNS_G2D_VRAM_TYPE type, u32 addr); -u32 NNSi_G2dGetVramLocation(const NNSG2dVRamLocation * pVramLocation, NNS_G2D_VRAM_TYPE type); -BOOL NNSi_G2dIsVramLocationReadyToUse(const NNSG2dVRamLocation * pVramLocation, NNS_G2D_VRAM_TYPE type); - -void NNSi_G2dDoImageLoadingToVram -( - const NNSG2dCharacterData * pSrcData, - u32 baseAddr, - NNS_G2D_VRAM_TYPE type -); -void NNSi_G2dSetupImageProxyPrams -( - const NNSG2dCharacterData * pSrcData, - u32 baseAddr, - NNS_G2D_VRAM_TYPE type, - NNSG2dImageProxy * pImgProxy -); - -void NNSi_G2dDoLoadingPaletteToVram -( - const NNSG2dPaletteData * pSrcData, - u32 addr, - NNS_G2D_VRAM_TYPE type -); - -void NNSi_G2dDoLoadingPaletteToVramEx -( - const NNSG2dPaletteData * pSrcData, - const NNSG2dPaletteCompressInfo * pCmpInfo, - u32 addr, - NNS_G2D_VRAM_TYPE type -); - -void NNSi_G2dSetupPaletteProxyPrams -( - const NNSG2dPaletteData * pSrcData, - u32 addr, - NNS_G2D_VRAM_TYPE type, - NNSG2dImagePaletteProxy * pPltProxy -); - -NNS_G2D_INLINE BOOL NNS_G2dIsPaletteImageFmt (const NNSG2dImageAttr * imgAttr) -{ - NNS_G2D_NULL_ASSERT(imgAttr); - return (imgAttr->fmt == GX_TEXFMT_PLTT4 || - imgAttr->fmt == GX_TEXFMT_PLTT16 || - imgAttr->fmt == GX_TEXFMT_PLTT256) ? TRUE : FALSE; -} - -NNS_G2D_INLINE void NNS_G2dSetImageExtPaletteFlag (NNSG2dImageProxy * pImgProxy, BOOL bUseExtPlt) -{ - NNS_G2D_NULL_ASSERT(pImgProxy); - pImgProxy->attr.bExtendedPlt = bUseExtPlt; -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/g2d_Load.h b/subprojects/NitroSystem/include/nnsys/g2d/g2d_Load.h deleted file mode 100644 index d6a3f50fd2..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/g2d_Load.h +++ /dev/null @@ -1,83 +0,0 @@ -#ifndef NNS_G2D_LOAD_H_ -#define NNS_G2D_LOAD_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include -#include -#include -#include -#include - -#define BIN_FILE_VERSION(EXT) NNS_G2dMakeVersionData(NNS_G2D_ ## EXT ## _MAJOR_VER, NNS_G2D_ ## EXT ## _MINOR_VER) - -NNSG2dBinaryBlockHeader * NNS_G2dFindBinaryBlock -( - NNSG2dBinaryFileHeader * pBinFileHeader, - u32 signature -); - -void NNSi_G2dUnpackUserExCellAttrBank(NNSG2dUserExCellAttrBank * pCellAttrBank); - -#ifdef __SNC__ -NNS_G2D_DEBUG_FUNC_DECL_BEGIN void NNSi_G2dPrintUserExCellAttrBank (const NNSG2dUserExCellAttrBank * pCellAttrBank) NNS_G2D_DEBUG_FUNC_DECL_END -#else -NNS_G2D_DEBUG_FUNC_DECL_BEGIN void NNSi_G2dPrintUserExCellAttrBank (const NNSG2dUserExCellAttrBank *) NNS_G2D_DEBUG_FUNC_DECL_END -#endif - -NNS_G2D_INLINE BOOL NNSi_G2dIsBinFileSignatureValid -( - const NNSG2dBinaryFileHeader * pBinFile, - u32 binFileSig -) -{ - if (pBinFile != NULL) { - if ((pBinFile->signature == binFileSig)) { - return TRUE; - } - } - return FALSE; -} - -NNS_G2D_INLINE BOOL NNSi_G2dIsBinFileVersionValid -( - const NNSG2dBinaryFileHeader * pBinFile, - u16 version -) -{ - if (pBinFile != NULL) { - if (pBinFile->version >= version) { - return TRUE; - } - } - return FALSE; -} - -NNS_G2D_INLINE BOOL NNS_G2dIsBinFileValid -( - const NNSG2dBinaryFileHeader * pBinFile, - u32 binFileSig, - u16 version -) -{ - if (pBinFile != NULL) { - { - return NNSi_G2dIsBinFileSignatureValid(pBinFile, binFileSig) && - NNSi_G2dIsBinFileVersionValid(pBinFile, version); - } - } - return FALSE; -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/g2d_MultiCellAnimation.h b/subprojects/NitroSystem/include/nnsys/g2d/g2d_MultiCellAnimation.h deleted file mode 100644 index a731d3f5b0..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/g2d_MultiCellAnimation.h +++ /dev/null @@ -1,215 +0,0 @@ -#ifndef NNS_G2D_MULTICELLANIMATION_H_ -#define NNS_G2D_MULTICELLANIMATION_H_ - -#include -#include - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef NNSG2dAnimSequence NNSG2dMultiCellAnimSequence; -typedef NNSG2dAnimBankData NNSG2dMultiCellAnimBankData; - -typedef BOOL (* NNSG2dMCTraverseCellAnimCallBack) -( - u32 userParamater, - NNSG2dCellAnimation * pCellAnim, - u16 cellAnimIdx -); - -typedef BOOL (* NNSG2dMCTraverseNodeCallBack) -( - u32 userParamater, - const NNSG2dMultiCellHierarchyData * pNodeData, - NNSG2dCellAnimation * pCellAnim, - u16 nodeIdx -); - -#define NNS_G2dInitializeMCAnimation NNS_G2dInitMCAnimation -#define NNS_G2dInitializeMCInstance NNS_G2dInitMCInstance -#define NNS_G2dSetMCAnimSpeed NNS_G2dSetMCAnimationSpeed - -typedef enum { - NNS_G2D_MCTYPE_DONOT_SHARE_CELLANIM, - NNS_G2D_MCTYPE_SHARE_CELLANIM -} NNSG2dMCType; - -typedef struct NNSG2dMCNodeArray { - NNSG2dNode * pNodeArray; - u16 numNode; - u16 pad16_; -} NNSG2dMCNodeArray; - -typedef struct NNSG2dMCCellAnimation { - NNSG2dCellAnimation cellAnim; - BOOL bInited; -} NNSG2dMCCellAnimation; - -typedef struct NNSG2dMCNodeCellAnimArray { - NNSG2dMCCellAnimation * cellAnimArray; -} NNSG2dMCNodeCellAnimArray; - -typedef struct NNSG2dMultiCellInstance { - const NNSG2dMultiCellData * pCurrentMultiCell; - - const NNSG2dCellAnimBankData * pAnimDataBank; - - NNSG2dMCType mcType; - void * pCellAnimInstasnces; -} NNSG2dMultiCellInstance; - -typedef struct NNSG2dMultiCellAnimation { - NNSG2dAnimController animCtrl; - - u16 totalVideoFrame; - u16 pad16; - - NNSG2dMultiCellInstance multiCellInstance; - - const NNSG2dMultiCellDataBank * pMultiCellDataBank; - - NNSG2dSRTControl srtCtrl; -} NNSG2dMultiCellAnimation; - -void NNS_G2dInitMCAnimationInstance -( - NNSG2dMultiCellAnimation * pMultiCellAnim, - void * pWork, - const NNSG2dCellAnimBankData * pAnimBank, - const NNSG2dCellDataBank * pCellDataBank, - const NNSG2dMultiCellDataBank * pMultiCellDataBank, - NNSG2dMCType mcType -); - -void NNS_G2dSetAnimSequenceToMCAnimation -( - NNSG2dMultiCellAnimation * pMultiCellAnim, - const NNSG2dMultiCellAnimSequence * pAnimSeq -); - -u16 NNS_G2dGetMCNumNodesRequired -( - const NNSG2dMultiCellAnimSequence * pMultiCellSeq, - const NNSG2dMultiCellDataBank * pMultiCellDataBank -); -u16 NNS_G2dGetMCBankNumNodesRequired -( - const NNSG2dMultiCellDataBank * pMultiCellDataBank -); -u32 NNS_G2dGetMCWorkAreaSize -( - const NNSG2dMultiCellDataBank * pMultiCellDataBank, - NNSG2dMCType mcType -); - -void NNS_G2dTickMCInstance(NNSG2dMultiCellInstance * pMultiCellAnim, fx32 frames); -void NNS_G2dTickMCAnimation(NNSG2dMultiCellAnimation * pMultiCellAnim, fx32 frames); - -void NNS_G2dSetMCAnimationCurrentFrame -( - NNSG2dMultiCellAnimation * pMultiCellAnim, - u16 frameIndex -); - -void NNS_G2dSetMCAnimationCellAnimFrame -( - NNSG2dMultiCellAnimation * pMultiCellAnim, - u16 caFrameIndex -); - -void NNS_G2dStartMCCellAnimationAll -( - NNSG2dMultiCellInstance * pMCInst -); - -void NNS_G2dRestartMCAnimation -( - NNSG2dMultiCellAnimation * pMultiCellAnim -); - -void NNS_G2dSetMCAnimationSpeed -( - NNSG2dMultiCellAnimation * pMultiCellAnim, - fx32 speed -); - -void NNS_G2dResetMCCellAnimationAll -( - NNSG2dMultiCellInstance * pMCInst -); - -u16 NNS_G2dMakeSimpleMultiCellToOams -( - GXOamAttr * pDstOams, - u16 numDstOams, - const NNSG2dMultiCellInstance * pMCellInst, - const MtxFx22 * pMtxSR, - const NNSG2dFVec2 * pBaseTrans, - u16 affineIndex, - BOOL bDoubleAffine -); - -void NNS_G2dTraverseMCCellAnims -( - NNSG2dMultiCellInstance * pMCellInst, - NNSG2dMCTraverseCellAnimCallBack pCBFunc, - u32 userParamater -); - -void NNS_G2dTraverseMCNodes -( - NNSG2dMultiCellInstance * pMCellInst, - NNSG2dMCTraverseNodeCallBack pCBFunc, - u32 userParamater -); - -void NNS_G2dInitMCAnimation( - NNSG2dMultiCellAnimation * pMultiCellAnim, - NNSG2dNode * pNodeArray, - NNSG2dCellAnimation * pCellAnim, - u16 numNode, - const NNSG2dCellAnimBankData * pAnimBank, - const NNSG2dCellDataBank * pCellDataBank, - const NNSG2dMultiCellDataBank * pMultiCellDataBank -); -void NNS_G2dInitMCInstance -( - NNSG2dMultiCellInstance * pMultiCell, - NNSG2dNode * pNodeArray, - NNSG2dCellAnimation * pCellAnim, - u16 numNode, - const NNSG2dCellAnimBankData * pAnimBank, - const NNSG2dCellDataBank * pCellDataBank -); -BOOL NNS_G2dSetMCDataToMCInstance( - NNSG2dMultiCellInstance * pMCInst, - const NNSG2dMultiCellData * pMcData -); - -NNS_G2D_INLINE NNSG2dAnimController * NNS_G2dGetMCAnimAnimCtrl -( - NNSG2dMultiCellAnimation * pMultiCellAnim -) -{ - NNS_G2D_NULL_ASSERT(pMultiCellAnim); - return &pMultiCellAnim->animCtrl; -} - -NNS_G2D_INLINE void * NNSi_G2dGetMCInstanceWorkMemory -( - NNSG2dMultiCellInstance * pMultiCell -) -{ - return pMultiCell->pCellAnimInstasnces; -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/g2d_Node.h b/subprojects/NitroSystem/include/nnsys/g2d/g2d_Node.h deleted file mode 100644 index 00155540af..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/g2d_Node.h +++ /dev/null @@ -1,49 +0,0 @@ -#ifndef NNS_G2D_NODE_H_ -#define NNS_G2D_NODE_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum NNSG2dNodeType { - NNS_G2D_NODETYPE_INVALID = 0, - NNS_G2D_NODETYPE_CELL, - NNS_G2D_NODETYPE_MULTICELL, - NNS_G2D_NODETYPE_MAX -} NNSG2dNodeType; - -#define NNS_G2D_ASSERT_NODETYPE_VALID(val) \ - NNS_G2D_MINMAX_ASSERT(val, NNS_G2D_NODETYPE_CELL, NNS_G2D_NODETYPE_MULTICELL) - -#define NNS_G2D_NODE_AFFINE_IDX_NONE 0xFFFF - -typedef struct NNSG2dNode { - void * pContent; - NNSG2dNodeType type; - BOOL bVisible; - NNSG2dSRTControl srtCtrl; -} NNSG2dNode; - -void NNSi_G2dInitializeNode(NNSG2dNode * pNode, NNSG2dNodeType type); - -NNS_G2D_INLINE void NNSi_G2dSetNodeVisibleFlag (NNSG2dNode * pNode, BOOL bVisible) -{ - NNS_G2D_NULL_ASSERT(pNode); - pNode->bVisible = bVisible; -} - -NNS_G2D_INLINE BOOL NNSi_G2dGetNodeVisibleFlag (NNSG2dNode * pNode) -{ - NNS_G2D_NULL_ASSERT(pNode); - return pNode->bVisible; -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/g2d_OAM.h b/subprojects/NitroSystem/include/nnsys/g2d/g2d_OAM.h deleted file mode 100644 index 20c6ff3ac2..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/g2d_OAM.h +++ /dev/null @@ -1,150 +0,0 @@ -#ifndef NNS_G2D_OAM_H_ -#define NNS_G2D_OAM_H_ - -#include -#include -#include -#include -#include - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define NNS_G2dInitializeOamManager NNS_G2dInitOamManagerModule -#define NNS_G2dEntryNewOam NNS_G2dEntryOamManagerOam -#define NNS_G2dEntryNewOamWithAffineIdx NNS_G2dEntryOamManagerOamWithAffineIdx -#define NNS_G2dEntryNewOamAffine NNS_G2dEntryOamManagerAffine -#define NNS_G2dEntryOamAffine NNS_G2dSetOamManagerAffine -#define NNS_G2dApplyToHW NNS_G2dApplyOamManagerToHW -#define NNS_G2dApplyToHWSoftEmu NNS_G2dApplyOamManagerToHWSprite -#define NNS_G2dResetBuffer NNS_G2dResetOamManagerBuffer -#define NNS_G2dApplyToHWAndReset NNS_G2dApplyAndResetOamManagerBuffer -#define NNS_G2dGetOamAttrCapacity NNS_G2dGetOamManagerOamCapacity -#define NNS_G2dGetOamAffineCapacity NNS_G2dGetOamManagerAffineCapacity - -typedef enum NNSG2dOamType { - NNS_G2D_OAMTYPE_MAIN = 0, - NNS_G2D_OAMTYPE_SUB, - NNS_G2D_OAMTYPE_SOFTWAREEMULATION, - NNS_G2D_OAMTYPE_INVALID, - NNS_G2D_OAMTYPE_MAX -} NNSG2dOamType; - -#define ASSERT_OAMTYPE(x) \ - NNS_G2D_ASSERT((x) == NNS_G2D_OAMTYPE_INVALID || \ - (x) == NNS_G2D_OAMTYPE_MAIN || \ - (x) == NNS_G2D_OAMTYPE_SUB || \ - (x) == NNS_G2D_OAMTYPE_SOFTWAREEMULATION || \ - (x) == NNS_G2D_OAMTYPE_MAX) - -#define ASSERT_OAMTYPE_VALID(x) \ - NNS_G2D_ASSERT((x) == NNS_G2D_OAMTYPE_MAIN || \ - (x) == NNS_G2D_OAMTYPE_SUB || \ - (x) == NNS_G2D_OAMTYPE_SOFTWAREEMULATION) - -typedef struct NNSG2dOAMManageArea { - u16 fromIdx; - u16 toIdx; - u16 currentIdx; -} NNSG2dOAMManageArea; - -typedef struct NNSG2dOamManagerInstance { - NNSG2dOamType type; - - NNSG2dOAMManageArea managedAttrArea; - NNSG2dOAMManageArea managedAffineArea; - - u16 GUID; - u16 pad16_; - BOOL bFastTransferEnable; - fx32 spriteZoffsetStep; -} NNSG2dOamManagerInstance; - -void * NNSi_G2dGetOamManagerInternalBufferForDebug(NNSG2dOamType type); - -void NNS_G2dInitOamManagerModule(); - -BOOL NNS_G2dGetNewManagerInstance(NNSG2dOamManagerInstance * pMan, u16 from, u16 to, NNSG2dOamType type); -BOOL NNS_G2dInitManagerInstanceAffine(NNSG2dOamManagerInstance * pMan, u16 from, u16 to); - -BOOL NNS_G2dGetNewOamManagerInstance -( - NNSG2dOamManagerInstance * pMan, - u16 fromOBJ, - u16 numOBJ, - u16 fromAffine, - u16 numAffine, - NNSG2dOamType type -); - -BOOL NNS_G2dGetNewOamManagerInstanceAsFastTransferMode -( - NNSG2dOamManagerInstance * pMan, - u16 fromOBJ, - u16 numOBJ, - NNSG2dOamType type -); - -BOOL NNS_G2dEntryOamManagerOam -( - NNSG2dOamManagerInstance * pMan, - const GXOamAttr * pOam, - u16 num -); - -BOOL NNS_G2dEntryOamManagerOamWithAffineIdx -( - NNSG2dOamManagerInstance * pMan, - const GXOamAttr * pOam, - u16 affineIdx -); - -void NNS_G2dSetOamManagerAffine -( - NNSG2dOamType type, - const MtxFx22 * mtx, - u16 idx -); - -u16 NNS_G2dEntryOamManagerAffine(NNSG2dOamManagerInstance * pMan, const MtxFx22 * mtx); - -void NNS_G2dApplyOamManagerToHW(NNSG2dOamManagerInstance * pMan); - -void NNS_G2dApplyOamManagerToHWSprite -( - NNSG2dOamManagerInstance * pMan, - const NNSG2dImageAttr * pTexImageAttr, - u32 texBaseAddr, - u32 pltBaseAddr -); - -void NNS_G2dResetOamManagerBuffer(NNSG2dOamManagerInstance * pMan); - -void NNS_G2dApplyAndResetOamManagerBuffer(NNSG2dOamManagerInstance * pMan); -u16 NNS_G2dGetOamManagerOamCapacity(NNSG2dOamManagerInstance * pMan); -u16 NNS_G2dGetOamManagerAffineCapacity(NNSG2dOamManagerInstance * pMan); - -GXOamAttr * NNS_G2dGetOamBuffer(NNSG2dOamType type); - -NNS_G2D_INLINE void NNS_G2dSetOamManagerSpriteZoffsetStep -( - NNSG2dOamManagerInstance * pMan, - fx32 zStep -) -{ - NNS_G2D_NULL_ASSERT(pMan); - NNS_G2D_WARNING(zStep <= 0, "AutoZOffsetStep should be smaller than zero."); - NNS_G2D_WARNING(pMan->type == NNS_G2D_OAMTYPE_SOFTWAREEMULATION, - "This function works only for the manager initialized as NNS_G2D_OAMTYPE_SOFTWAREEMULATION type "); - - pMan->spriteZoffsetStep = zStep; -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/g2d_OAMEx.h b/subprojects/NitroSystem/include/nnsys/g2d/g2d_OAMEx.h deleted file mode 100644 index 33df92fad7..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/g2d_OAMEx.h +++ /dev/null @@ -1,140 +0,0 @@ -#ifndef NNS_G2D_OAMEX_H_ -#define NNS_G2D_OAMEX_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define NNS_G2dEntryNewOamEx NNS_G2dEntryOamManExOam -#define NNS_G2dEntryNewOamWithAffineIdxEx NNS_G2dEntryOamManExOamWithAffineIdx -#define NNS_G2dEntryNewAffineParamsEx NNS_G2dEntryOamManExAffine -#define NNS_G2dApplyToBaseModuleEx NNS_G2dApplyOamManExToBaseModule - -#define NNS_G2dResetOamInstanceEx NNS_G2dResetOamManExBuffer -#define NNS_G2dGetNewOamInstanceEx NNS_G2dGetOamManExInstance - -#define NNS_G2dSetOamEntryFunctionsEx NNS_G2dSetOamManExEntryFunctions - -#define NNS_G2D_OAMEX_HW_ID_NOT_INIT 0xFFFF - -typedef enum NNSG2dOamExDrawOrder { - NNSG2D_OAMEX_DRAWORDER_BACKWARD = 0x0, - NNSG2D_OAMEX_DRAWORDER_FORWARD = 0x1 -} NNSG2dOamExDrawOrder; - -typedef u16 (* NNSG2dGetOamCpacityFuncPtr)(); -typedef u16 (* NNSG2dGetOamAffineCpacityFuncPtr)(); -typedef BOOL (* NNSG2dEntryNewOamFuncPtr)(const GXOamAttr * pOam, u16 index); -typedef u16 (* NNSG2dEntryNewOamAffineFuncPtr)(const MtxFx22 * mtx, u16 index); - -typedef struct NNSG2dOamExEntryFunctions { - NNSG2dGetOamCpacityFuncPtr getOamCapacity; - NNSG2dGetOamCpacityFuncPtr getAffineCapacity; - NNSG2dEntryNewOamFuncPtr entryNewOam; - NNSG2dEntryNewOamAffineFuncPtr entryNewAffine; -} NNSG2dOamExEntryFunctions; - -typedef struct NNSG2dOamChunk { - GXOamAttr oam; - u16 affineProxyIdx; - u16 pad16_; - struct NNSG2dOamChunk * pNext; -} NNSG2dOamChunk; - -typedef struct NNSG2dOamChunkList { - u16 numChunks; - u16 numLastFrameDrawn; - - u16 numDrawn; - u16 bDrawn; - - NNSG2dOamChunk * pChunks; - NNSG2dOamChunk * pAffinedChunks; - - NNSG2dOamChunk * pLastChunk; - NNSG2dOamChunk * pLastAffinedChunk; -} NNSG2dOamChunkList; - -typedef struct NNSG2dAffineParamProxy { - MtxFx22 mtxAffine; - u16 affineHWIndex; - u16 pad16_; -} NNSG2dAffineParamProxy; - -typedef struct NNSG2dOamManagerInstanceEx { - NNSG2dOamChunkList * pOamOrderingTbl; - - u16 numPooledOam; - u16 numUsedOam; - NNSG2dOamChunk * pPoolOamChunks; - - u16 lengthOfOrderingTbl; - u16 lengthAffineBuffer; - u16 numAffineBufferUsed; - u16 lastFrameAffineIdx; - NNSG2dAffineParamProxy * pAffineBuffer; - - NNSG2dOamExEntryFunctions oamEntryFuncs; - - u16 lastRenderedOrderingTblIdx; - u16 lastRenderedChunkIdx; - NNSG2dOamExDrawOrder drawOrderType; -} NNSG2dOamManagerInstanceEx; - -void NNS_G2dResetOamManExBuffer(NNSG2dOamManagerInstanceEx * pOam); - -BOOL NNS_G2dGetOamManExInstance( - NNSG2dOamManagerInstanceEx * pOam, - NNSG2dOamChunkList * pOamOrderingTbl, - u8 lengthOfOrderingTbl, - u16 numPooledOam, - NNSG2dOamChunk * pPooledOam, - u16 lengthAffineBuffer, - NNSG2dAffineParamProxy * pAffineBuffer); - -BOOL NNS_G2dEntryOamManExOam -( - NNSG2dOamManagerInstanceEx * pMan, - const GXOamAttr * pOam, - u8 priority -); - -BOOL NNS_G2dEntryOamManExOamWithAffineIdx -( - NNSG2dOamManagerInstanceEx * pMan, - const GXOamAttr * pOam, - u8 priority, - u16 affineIdx -); - -u16 NNS_G2dEntryOamManExAffine -( - NNSG2dOamManagerInstanceEx * pMan, - const MtxFx22 * mtx -); - -void NNS_G2dApplyOamManExToBaseModule -( - NNSG2dOamManagerInstanceEx * pMan -); - -void NNSG2d_SetOamManExDrawOrderType -( - NNSG2dOamManagerInstanceEx * pOam, - NNSG2dOamExDrawOrder drawOrderType -); - -void NNS_G2dSetOamManExEntryFunctions -( - NNSG2dOamManagerInstanceEx * pMan, - const NNSG2dOamExEntryFunctions * pSrc -); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/g2d_OAM_Types.h b/subprojects/NitroSystem/include/nnsys/g2d/g2d_OAM_Types.h deleted file mode 100644 index 8ed2348d5d..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/g2d_OAM_Types.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef NNS_G2D_OAM_TYPES_H_ -#define NNS_G2D_OAM_TYPES_H_ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct NNSG2dOamAffineParams { - s16 PA; - s16 PB; - s16 PC; - s16 PD; -} NNSG2dOamAffineParams; - -typedef struct NNSG2dOamDataChunk { - u16 attr0; - u16 attr1; - u16 attr2; -} NNSG2dOamDataChunk; - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/g2d_OamSoftwareSpriteDraw.h b/subprojects/NitroSystem/include/nnsys/g2d/g2d_OamSoftwareSpriteDraw.h deleted file mode 100644 index 95f4dd0795..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/g2d_OamSoftwareSpriteDraw.h +++ /dev/null @@ -1,138 +0,0 @@ -#ifndef NNS_G2D_OAMSOFTWARESPRITEEMU_H_ -#define NNS_G2D_OAMSOFTWARESPRITEEMU_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef void (* NNS_G2dOamSoftEmuUVFlipCorrectFunc)(fx32 * pRetU0, - fx32 * pRetV0, - fx32 * pRetU1, - fx32 * pRetV1, - BOOL bFilpH, - BOOL bFilpV); - -void NNS_G2dDrawOneOam3DDirectFast -( - const GXOamAttr * pOam, - const NNSG2dImageAttr * pTexImageAttr, - u32 texBaseAddr, - u32 pltBaseAddr -); - -void NNS_G2dDrawOneOam3DDirectWithPosFast -( - s16 posX, - s16 posY, - s16 posZ, - const GXOamAttr * pOam, - const NNSG2dImageAttr * pTexImageAttr, - u32 texBaseAddr, - u32 pltBaseAddr -); - -void NNS_G2dDrawOneOam3DDirectWithPosAffineFast -( - s16 posX, - s16 posY, - s16 posZ, - const GXOamAttr * pOam, - const NNSG2dImageAttr * pTexImageAttr, - u32 texBaseAddr, - u32 pltBaseAddr, - const MtxFx22 * pMtx -); - -void NNS_G2dSetOamSoftEmuSpriteParamCache -( - const GXOamAttr * pOam, - const NNSG2dImageAttr * pTexImageAttr, - u32 texBaseAddr, - u32 pltBaseAddr -); - -void NNS_G2dDrawOneOam3DDirectUsingParamCacheFast -( - s16 posX, - s16 posY, - s16 posZ, - const GXOamAttr * pOam -); - -void NNS_G2dSetOamSoftEmuUVFlipCorrectFunc(NNS_G2dOamSoftEmuUVFlipCorrectFunc pFunc); -void NNS_G2dResetOamSoftEmuUVFlipCorrectFunc(); - -void NNSi_G2dSetOamSoftEmuAutoZOffsetFlag(BOOL flag); -fx32 NNSi_G2dGetOamSoftEmuAutoZOffset(void); -void NNSi_G2dResetOamSoftEmuAutoZOffset(void); -void NNSi_G2dSetOamSoftEmuAutoZOffsetStep(fx32 step); -fx32 NNSi_G2dGetOamSoftEmuAutoZOffsetStep(void); - -NNS_G2D_INLINE void NNS_G2dDrawOneOam3DDirect -( - const GXOamAttr * pOam, - const NNSG2dImageAttr * pTexImageAttr, - u32 texBaseAddr, - u32 pltBaseAddr -) -{ - G3_PushMtx(); - NNS_G2dDrawOneOam3DDirectFast - ( - pOam, pTexImageAttr, - texBaseAddr, pltBaseAddr - ); - G3_PopMtx(1); -} - -NNS_G2D_INLINE void NNS_G2dDrawOneOam3DDirectWithPos -( - s16 posX, - s16 posY, - s16 posZ, - const GXOamAttr * pOam, - const NNSG2dImageAttr * pTexImageAttr, - u32 texBaseAddr, - u32 pltBaseAddr -) -{ - G3_PushMtx(); - NNS_G2dDrawOneOam3DDirectWithPosFast - ( - posX, posY, posZ, - pOam, pTexImageAttr, - texBaseAddr, pltBaseAddr - ); - G3_PopMtx(1); -} - -NNS_G2D_INLINE void NNS_G2dDrawOneOam3DDirectWithPosAffine -( - s16 posX, - s16 posY, - s16 posZ, - const GXOamAttr * pOam, - const NNSG2dImageAttr * pTexImageAttr, - u32 texBaseAddr, - u32 pltBaseAddr, - const MtxFx22 * pMtx -) -{ - G3_PushMtx(); - NNS_G2dDrawOneOam3DDirectWithPosAffineFast - ( - posX, posY, posZ, - pOam, pTexImageAttr, - texBaseAddr, pltBaseAddr, pMtx - ); - G3_PopMtx(1); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/g2d_PaletteTable.h b/subprojects/NitroSystem/include/nnsys/g2d/g2d_PaletteTable.h deleted file mode 100644 index f0f453ac18..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/g2d_PaletteTable.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef NNS_G2D_PALETTETABLE_H_ -#define NNS_G2D_PALETTETABLE_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define NNS_G2D_NUM_COLOR_PALETTE 16 - -typedef struct NNSG2dPaletteSwapTable { - u16 paletteIndex[NNS_G2D_NUM_COLOR_PALETTE]; -} NNSG2dPaletteSwapTable; - -void NNS_G2dInitializePaletteTable(NNSG2dPaletteSwapTable * pPlttTbl); -void NNS_G2dSetPaletteTableValue(NNSG2dPaletteSwapTable * pPlttTbl, u16 beforeIdx, u16 afterIdx); -u16 NNS_G2dGetPaletteTableValue(const NNSG2dPaletteSwapTable * pPlttTbl, u16 beforeIdx); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/g2d_Renderer.h b/subprojects/NitroSystem/include/nnsys/g2d/g2d_Renderer.h deleted file mode 100644 index 84813ff805..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/g2d_Renderer.h +++ /dev/null @@ -1,338 +0,0 @@ -#ifndef NNS_G2D_RENDERER_H_ -#define NNS_G2D_RENDERER_H_ - -#include - -#include -#include -#include -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define NNS_G2dAddTargetSurface NNS_G2dAddRendererTargetSurface -#define NNS_G2dSetCurrentImageProxy NNS_G2dSetRendererImageProxy - -typedef BOOL (* NNSG2dRndCellCullingFunction) -( - const NNSG2dCellData * pCell, - const MtxFx32 * pMtx, - const NNSG2dViewRect * pViewRect -); - -struct NNSG2dRendererInstance; -struct NNSG2dRenderSurface; - -typedef void (* NNSG2dRndDrawCellCallBack) -( - struct NNSG2dRendererInstance * pRend, - struct NNSG2dRenderSurface * pSurface, - const NNSG2dCellData * pCell, - const MtxFx32 * pMtx -); - -typedef void (* NNSG2dRndDrawOamCallBack) -( - struct NNSG2dRendererInstance * pRend, - struct NNSG2dRenderSurface * pSurface, - const NNSG2dCellData * pCell, - u16 oamIdx, - const MtxFx32 * pMtx -); - -typedef struct NNSG2dRenderSurface { - union { - NNSG2dRndCoreSurface coreSurface; - struct { - NNSG2dViewRect viewRect; - BOOL bActive; - NNSG2dSurfaceType type; - - NNSG2dRndCoreDrawCellCallBack pBeforeCoreDrawCellBack; - NNSG2dRndCoreDrawCellCallBack pAfterCoreDrawCellBack; - - NNSG2dRndCoreDrawOamCallBack pBeforeCoreDrawOamBack; - NNSG2dRndCoreDrawOamCallBack pAfterCoreDrawOamBack; - }; - }; - - NNSG2dOamRegisterFunction pFuncOamRegister; - NNSG2dAffineRegisterFunction pFuncOamAffineRegister; - - void * pNextSurface; - - NNSG2dRndCellCullingFunction pFuncVisibilityCulling; - - NNSG2dRndDrawCellCallBack pBeforeDrawCellBackFunc; - NNSG2dRndDrawCellCallBack pAfterDrawCellBackFunc; - - NNSG2dRndDrawOamCallBack pBeforeDrawOamBackFunc; - NNSG2dRndDrawOamCallBack pAfterDrawOamBackFunc; -} NNSG2dRenderSurface; - -typedef enum NNSG2dRendererOptimizeHint { - NNS_G2D_RDR_OPZHINT_NONE = 0x0, - NNS_G2D_RDR_OPZHINT_NOT_SR = 0x1, - NNS_G2D_RDR_OPZHINT_LOCK_PARAMS = 0x2 -} NNSG2dRendererOptimizeHint; - -typedef enum NNSG2dRendererOverwriteParam { - NNS_G2D_RND_OVERWRITE_NONE = 0x0, - NNS_G2D_RND_OVERWRITE_PRIORITY = 0x1, - NNS_G2D_RND_OVERWRITE_PLTTNO = 0x2, - NNS_G2D_RND_OVERWRITE_MOSAIC = 0x4, - NNS_G2D_RND_OVERWRITE_OBJMODE = 0x8, - NNS_G2D_RND_OVERWRITE_PLTTNO_OFFS = 0x10, - NNS_G2D_RND_OVERWRITE_MAX -} NNSG2dRendererOverwriteParam; - -typedef struct NNSG2dRendererInstance { - NNSG2dRndCoreInstance rendererCore; - - NNSG2dRenderSurface * pTargetSurfaceList; - NNSG2dRenderSurface * pCurrentSurface; - - const NNSG2dPaletteSwapTable * pPaletteSwapTbl; - u32 opzHint; - - fx32 spriteZoffsetStep; - - u32 overwriteEnableFlag; - u16 overwritePriority; - u16 overwritePlttNo; - GXOamMode overwriteObjMode; - BOOL overwriteMosaicFlag; - - u16 overwritePlttNoOffset; - u16 pad16_; -} NNSG2dRendererInstance; - -void NNS_G2dInitRenderer(NNSG2dRendererInstance * pRend); -void NNS_G2dAddRendererTargetSurface -( - NNSG2dRendererInstance * pRend, - NNSG2dRenderSurface * pNew -); -void NNS_G2dInitRenderSurface(NNSG2dRenderSurface * pSurface); -void NNS_G2dSetRendererFlipMode -( - NNSG2dRendererInstance * pRend, - BOOL bFlipH, - BOOL bFlipV -); - -void NNS_G2dBeginRendering(NNSG2dRendererInstance * pRendererInstance); -void NNS_G2dBeginRenderingEx(NNSG2dRendererInstance * pRendererInstance, u32 opzHint); - -void NNS_G2dDrawCell(const NNSG2dCellData * pCell); -void NNS_G2dDrawCellAnimation(const NNSG2dCellAnimation * pCellAnim); -void NNS_G2dDrawMultiCell(const NNSG2dMultiCellInstance * pMC); -void NNS_G2dDrawMultiCellAnimation(const NNSG2dMultiCellAnimation * pMCAnim); - -void NNS_G2dDrawEntity(NNSG2dEntity * pEntity); - -void NNS_G2dEndRendering( ); - -void NNS_G2dPushMtx(); -void NNS_G2dPopMtx(); -void NNS_G2dTranslate(fx32 x, fx32 y, fx32 z); -void NNS_G2dSetTrans(fx32 x, fx32 y, fx32 z); -void NNS_G2dScale(fx32 x, fx32 y, fx32 z); -void NNS_G2dRotZ(fx32 sin, fx32 cos); - -void NNS_G2dSetRendererPaletteTbl -( - NNSG2dRendererInstance * pRend, - const NNSG2dPaletteSwapTable * pTbl -); -const NNSG2dPaletteSwapTable * NNS_G2dGetRendererPaletteTbl -( - NNSG2dRendererInstance * pRend -); -void NNS_G2dResetRendererPaletteTbl -( - NNSG2dRendererInstance * pRend -); - -void NNS_G2dSetRendererImageProxy -( - NNSG2dRendererInstance * pRend, - const NNSG2dImageProxy * pImgProxy, - const NNSG2dImagePaletteProxy * pPltProxy -); - -NNS_G2D_INLINE void NNS_G2dSetRendererSpriteZoffset -( - NNSG2dRendererInstance * pRend, - fx32 spriteZoffset -) -{ - pRend->spriteZoffsetStep = spriteZoffset; -} - -NNS_G2D_INLINE void NNS_G2dSetRendererAffineOverwriteMode -( - NNSG2dRendererInstance * pRend, - NNSG2dRendererAffineTypeOverwiteMode affineMode -) -{ - NNS_G2D_NULL_ASSERT(pRend); - pRend->rendererCore.affineOverwriteMode = affineMode; -} - -NNS_G2D_INLINE NNSG2dRendererAffineTypeOverwiteMode NNS_G2dGetRendererAffineOverwriteMode -( - const NNSG2dRendererInstance * pRend -) -{ - NNS_G2D_NULL_ASSERT(pRend); - return pRend->rendererCore.affineOverwriteMode; -} - -NNS_G2D_INLINE void NNS_G2dSetRendererSurfaceActiveFlag -( - NNSG2dRenderSurface * pSurface, - BOOL bActive -) -{ - NNS_G2D_NULL_ASSERT(pSurface); - pSurface->coreSurface.bActive = bActive; -} - -NNS_G2D_INLINE BOOL NNS_G2dGetRendererSurfaceActiveFlag -( - const NNSG2dRenderSurface * pSurface -) -{ - NNS_G2D_NULL_ASSERT(pSurface); - return pSurface->coreSurface.bActive; -} - -NNS_G2D_INLINE void NNS_G2dSetRendererOverwritePriority -( - NNSG2dRendererInstance * pRend, - u16 Priority -) -{ - pRend->overwritePriority = Priority; -} - -NNS_G2D_INLINE u16 NNS_G2dGetRendererOverwritePriority -( - const NNSG2dRendererInstance * pRend -) -{ - return pRend->overwritePriority; -} - -NNS_G2D_INLINE void NNS_G2dSetRendererOverwritePlttNo -( - NNSG2dRendererInstance * pRend, - u16 plttNo -) -{ - pRend->overwritePlttNo = plttNo; -} - -NNS_G2D_INLINE u16 NNS_G2dGetRendererOverwritePlttNo -( - const NNSG2dRendererInstance * pRend -) -{ - return pRend->overwritePlttNo; -} - -NNS_G2D_INLINE void NNS_G2dSetRendererOverwritePlttNoOffset -( - NNSG2dRendererInstance * pRend, - u16 plttNoOffset -) -{ - pRend->overwritePlttNoOffset = plttNoOffset; -} - -NNS_G2D_INLINE u16 NNS_G2dGetRendererOverwritePlttNoOffset -( - const NNSG2dRendererInstance * pRend -) -{ - return pRend->overwritePlttNoOffset; -} - -NNS_G2D_INLINE void NNS_G2dSetRendererOverwriteMosaicFlag -( - NNSG2dRendererInstance * pRend, - BOOL overwriteMosaicFlag -) -{ - pRend->overwriteMosaicFlag = overwriteMosaicFlag; -} - -NNS_G2D_INLINE BOOL NNS_G2dGetRendererOverwriteMosaicFlag -( - const NNSG2dRendererInstance * pRend -) -{ - return pRend->overwriteMosaicFlag; -} - -NNS_G2D_INLINE void NNS_G2dSetRendererOverwriteOBJMode -( - NNSG2dRendererInstance * pRend, - GXOamMode overwriteObjMode -) -{ - pRend->overwriteObjMode = overwriteObjMode; -} - -NNS_G2D_INLINE GXOamMode NNS_G2dGetRendererOverwriteOBJMode -( - const NNSG2dRendererInstance * pRend -) -{ - return pRend->overwriteObjMode; -} - -NNS_G2D_INLINE void NNS_G2dSetRendererOverwriteEnable -( - NNSG2dRendererInstance * pRnd, - NNSG2dRendererOverwriteParam flag -) -{ - pRnd->overwriteEnableFlag |= flag; -} - -NNS_G2D_INLINE void NNS_G2dSetRendererOverwriteDisable -( - NNSG2dRendererInstance * pRnd, - NNSG2dRendererOverwriteParam flag -) -{ - pRnd->overwriteEnableFlag &= ~flag; -} - -NNS_G2D_INLINE BOOL NNS_G2dIsRendererOverwriteEnable -( - const NNSG2dRendererInstance * pRnd, - NNSG2dRendererOverwriteParam flag -) -{ - return (BOOL)(pRnd->overwriteEnableFlag & flag); -} - -NNS_G2D_INLINE void NNS_G2dOptimizeRenderer (NNSG2dRendererInstance * pRend) -{ -#pragma unused( pRend ) - OS_Warning("Sorry, NNS_G2dOptimizeRenderer() is obsolete.Please avoid calling this func."); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/g2d_RendererCore.h b/subprojects/NitroSystem/include/nnsys/g2d/g2d_RendererCore.h deleted file mode 100644 index 0804701d8b..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/g2d_RendererCore.h +++ /dev/null @@ -1,215 +0,0 @@ -#ifndef NNS_G2D_RENDERERCORE_H_ -#define NNS_G2D_RENDERERCORE_H_ - -#include - -#include -#include - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define MtxCache_NOT_AVAILABLE 0xFFFF -#define MtxCache_NOT_AVAILABLE_ForMemFill 0xFFFFFFFF -#define NNS_G2D_NUMBER_OF_2DGRAPHICS_ENGINE 2 -#define NNS_G2D_RNDCORE_INTERNAL_OAMBUFFER_SIZE 128 -#define NNS_G2D_OAMFLIP_PATTERN_NUM 0x04 - -typedef enum NNSG2dRendererAffineTypeOverwiteMode { - NNS_G2D_RND_AFFINE_OVERWRITE_NONE, - NNS_G2D_RND_AFFINE_OVERWRITE_NORMAL, - NNS_G2D_RND_AFFINE_OVERWRITE_DOUBLE -} NNSG2dRendererAffineTypeOverwiteMode; - -typedef enum NNSG2dSurfaceType { - NNS_G2D_SURFACETYPE_MAIN3D = 0x00, - NNS_G2D_SURFACETYPE_MAIN2D = 0x01, - NNS_G2D_SURFACETYPE_SUB2D = 0x02, - NNS_G2D_SURFACETYPE_MAX = 0x03 -} NNSG2dSurfaceType; - -typedef enum NNSG2dRendererFlip { - NNS_G2D_RENDERERFLIP_NONE = 0x00, - NNS_G2D_RENDERERFLIP_H = 0x01, - NNS_G2D_RENDERERFLIP_V = 0x02 -} NNSG2dRendererFlip; - -typedef struct NNSG2dRndCore2DMtxCache { - MtxFx22 m22; - u16 affineIndex[NNS_G2D_OAMFLIP_PATTERN_NUM][NNS_G2D_NUMBER_OF_2DGRAPHICS_ENGINE]; -} NNSG2dRndCore2DMtxCache; - -typedef struct NNSG2dViewRect { - NNSG2dFVec2 posTopLeft; - NNSG2dFVec2 sizeView; -} NNSG2dViewRect; - -typedef BOOL (* NNSG2dOamRegisterFunction) -( - const GXOamAttr * pOam, - u16 affineIndex, - BOOL bDoubleAffine -); - -typedef BOOL (* NNSG2dOamBlockRegisterFunction) -( - const GXOamAttr * pOam, - u16 num -); - -typedef u16 (* NNSG2dAffineRegisterFunction) -( - const MtxFx22 * mtx -); - -struct NNSG2dRndCoreInstance; -struct NNSG2dRndCoreSurface; - -typedef void (* NNSG2dRndCoreDrawCellCallBack) -( - struct NNSG2dRndCoreInstance * pRend, - const NNSG2dCellData * pCell -); - -typedef void (* NNSG2dRndCoreDrawOamCallBack) -( - struct NNSG2dRndCoreInstance * pRend, - const NNSG2dCellData * pCell, - u16 oamIdx -); - -typedef struct NNSG2dRndCoreSurface { - NNSG2dViewRect viewRect; - BOOL bActive; - NNSG2dSurfaceType type; - - NNSG2dRndCoreDrawCellCallBack pBeforeDrawCellBackFunc; - NNSG2dRndCoreDrawCellCallBack pAfterDrawCellBackFunc; - - NNSG2dRndCoreDrawOamCallBack pBeforeDrawOamBackFunc; - - NNSG2dRndCoreDrawOamCallBack pAfterDrawOamBackFunc; -} NNSG2dRndCoreSurface; - -struct NNSG2dImageProxy; -struct NNSG2dImagePaletteProxy; - -typedef struct NNSG2dRndCoreInstance { - NNSG2dRndCoreSurface * pCurrentTargetSurface; - NNSG2dRendererAffineTypeOverwiteMode affineOverwriteMode; - - const struct NNSG2dImageProxy * pImgProxy; - const struct NNSG2dImagePaletteProxy * pPltProxy; - u32 base2DCharOffset; - - u32 baseTexAddr3D; - u32 basePltAddr3D; - - NNSG2dOamRegisterFunction pFuncOamRegister; - NNSG2dAffineRegisterFunction pFuncOamAffineRegister; - - u32 flipFlag; - - NNSG2dRndCore2DMtxCache * pCurrentMtxCacheFor2D; - - const MtxFx32 * pCurrentMxt; - - BOOL bDrawEnable; - - fx32 zFor3DSoftwareSprite; - - GXOamAttr currentOam; - - MtxFx43 mtxFor3DGE; -} NNSG2dRndCoreInstance; - -void NNS_G2dInitRndCore(NNSG2dRndCoreInstance * pRnd); -void NNS_G2dInitRndCoreSurface(NNSG2dRndCoreSurface * pSurface); - -struct NNSG2dImageProxy; -struct NNSG2dImagePaletteProxy; - -void NNS_G2dSetRndCoreImageProxy -( - NNSG2dRndCoreInstance * pRnd, - const struct NNSG2dImageProxy * pImgProxy, - const struct NNSG2dImagePaletteProxy * pPltProxy -); - -void NNS_G2dSetRndCoreOamRegisterFunc -( - NNSG2dRndCoreInstance * pRnd, - NNSG2dOamRegisterFunction pFuncOamRegister, - NNSG2dAffineRegisterFunction pFuncOamAffineRegister -); - -void NNS_G2dSetRndCoreAffineOverwriteMode - (NNSG2dRndCoreInstance * pRnd, - NNSG2dRendererAffineTypeOverwiteMode mode - ); - -void NNS_G2dSetRndCore3DSoftSpriteZvalue -( - NNSG2dRndCoreInstance * pRnd, fx32 z -); - -void NNS_G2dSetRndCoreSurface -( - NNSG2dRndCoreInstance * pRnd, - NNSG2dRndCoreSurface * pSurface -); - -void NNS_G2dSetRndCoreCurrentMtx3D -( - const MtxFx32 * pCurrentMxt -); -void NNS_G2dSetRndCoreCurrentMtx2D -( - const MtxFx32 * pMtx, - NNSG2dRndCore2DMtxCache * pCurrentMtxCacheFor2D -); - -BOOL NNS_G2dIsRndCoreFlipH(const NNSG2dRndCoreInstance * pRnd); -BOOL NNS_G2dIsRndCoreFlipV(const NNSG2dRndCoreInstance * pRnd); -void NNS_G2dSetRndCoreFlipMode(NNSG2dRndCoreInstance * pRnd, BOOL bFlipH, BOOL bFlipV); - -void NNS_G2dRndCoreBeginRendering(NNSG2dRndCoreInstance * pRnd); -void NNS_G2dRndCoreEndRendering(void); - -void NNS_G2dRndCoreDrawCell(const NNSG2dCellData * pCell); -void NNS_G2dRndCoreDrawCellVramTransfer(const NNSG2dCellData * pCell, u32 cellVramTransferHandle); - -void NNS_G2dRndCoreDrawCellFast2D(const NNSG2dCellData * pCell); - -void NNS_G2dSetRndCoreCellCloneSource3D(const NNSG2dCellData * pCell); -void NNS_G2dRndCoreDrawCellClone3D(const NNSG2dCellData * pCell); - -NNS_G2D_INLINE void NNS_G2dInitRndCore2DMtxCache -( - NNSG2dRndCore2DMtxCache * pMtxCache -) -{ - MI_CpuFillFast(pMtxCache->affineIndex, - MtxCache_NOT_AVAILABLE_ForMemFill, - sizeof(pMtxCache->affineIndex)); -} - -NNS_G2D_INLINE void NNS_G2dSetRndCore2DMtxCacheMtxParams -( - NNSG2dRndCore2DMtxCache * pMtxCache, - MtxFx22 * pM -) -{ - NNS_G2dInitRndCore2DMtxCache(pMtxCache); - pMtxCache->m22 = *pM; -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/g2d_SRTControl.h b/subprojects/NitroSystem/include/nnsys/g2d/g2d_SRTControl.h deleted file mode 100644 index 5eead0af37..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/g2d_SRTControl.h +++ /dev/null @@ -1,65 +0,0 @@ -#ifndef NNS_G2D_SRTCONTROL_H_ -#define NNS_G2D_SRTCONTROL_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -void NNSi_G2dSrtcSetTrans(NNSG2dSRTControl * pCtrl, s16 x, s16 y); -void NNSi_G2dSrtcSetSRTRotZ(NNSG2dSRTControl * pCtrl, u16 rotZ); -void NNSi_G2dSrtcSetSRTScale(NNSG2dSRTControl * pCtrl, fx32 x, fx32 y); - -void NNSi_G2dSrtcSetMatrix2D(NNSG2dSRTControl * pCtrl, fx32 x, fx32 y); -void NNSi_G2dSrtcSetMatrix3D(NNSG2dSRTControl * pCtrl, fx32 x, fx32 y); - -void NNSi_G2dSrtcInitControl(NNSG2dSRTControl * pCtrl, NNSG2dSRTControlType type); -void NNSi_G2dSrtcSetInitialValue(NNSG2dSRTControl * pCtrl); -void NNSi_G2dSrtcBuildMatrixFromSRT_2D(const NNSG2dSRTControl * pCtrl, MtxFx22 * pDst); -void NNSi_G2dSrtcBuildMatrixFromSRT_3D(const NNSG2dSRTControl * pCtrl, MtxFx22 * pDst); - -NNS_G2D_INLINE void NNSi_G2dSrtcResetAffineFlag (NNSG2dSRTControl * pSRT) -{ - NNS_G2D_NULL_ASSERT(pSRT); - NNS_G2D_ASSERT(pSRT->type == NNS_G2D_SRTCONTROLTYPE_SRT); - pSRT->srtData.SRT_EnableFlag = 0x0000; -} - -NNS_G2D_INLINE void NNSi_G2dSrtcAffineFlagON (NNSG2dSRTControl * pSRT, u16 newFlag) -{ - NNS_G2D_NULL_ASSERT(pSRT); - NNS_G2D_ASSERT(pSRT->type == NNS_G2D_SRTCONTROLTYPE_SRT); - pSRT->srtData.SRT_EnableFlag |= (u16)newFlag; -} - -NNS_G2D_INLINE void NNSi_G2dSrtcAffineFlagOFF (NNSG2dSRTControl * pSRT, u16 newFlag) -{ - NNS_G2D_NULL_ASSERT(pSRT); - NNS_G2D_ASSERT(pSRT->type == NNS_G2D_SRTCONTROLTYPE_SRT); - pSRT->srtData.SRT_EnableFlag &= ~(u16)newFlag; -} - -NNS_G2D_INLINE BOOL NNSi_G2dSrtcIsAffineEnable (const NNSG2dSRTControl * pSRT, NNSG2dAffineEnable flag) -{ - NNS_G2D_NULL_ASSERT(pSRT); - NNS_G2D_ASSERT(pSRT->type == NNS_G2D_SRTCONTROLTYPE_SRT); - return (pSRT->srtData.SRT_EnableFlag & (u16)flag) ? TRUE : FALSE; -} - -NNS_G2D_INLINE BOOL NNSi_G2dSrtcIsAffineEnable_SR (const NNSG2dSRTControl * pSRT) -{ - NNS_G2D_NULL_ASSERT(pSRT); - NNS_G2D_ASSERT(pSRT->type == NNS_G2D_SRTCONTROLTYPE_SRT); - - return (NNSi_G2dSrtcIsAffineEnable(pSRT, NNS_G2D_AFFINEENABLE_SCALE) || - NNSi_G2dSrtcIsAffineEnable(pSRT, NNS_G2D_AFFINEENABLE_ROTATE)) ? TRUE : FALSE; -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/g2d_Screen.h b/subprojects/NitroSystem/include/nnsys/g2d/g2d_Screen.h deleted file mode 100644 index c0e8f4eb02..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/g2d_Screen.h +++ /dev/null @@ -1,111 +0,0 @@ -#ifndef NNS_G2D_SCREEN_H_ -#define NNS_G2D_SCREEN_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum NNSG2dBGSelect { - NNS_G2D_BGSELECT_MAIN0, - NNS_G2D_BGSELECT_MAIN1, - NNS_G2D_BGSELECT_MAIN2, - NNS_G2D_BGSELECT_MAIN3, - NNS_G2D_BGSELECT_SUB0, - NNS_G2D_BGSELECT_SUB1, - NNS_G2D_BGSELECT_SUB2, - NNS_G2D_BGSELECT_SUB3, - NNS_G2D_BGSELECT_NUM -} NNSG2dBGSelect; - -#define NNS_G2D_BG_ASSERT(bg) SDK_MINMAX_ASSERT(bg, NNS_G2D_BGSELECT_MAIN0, NNS_G2D_BGSELECT_NUM - 1) - -void NNS_G2dBGSetupEx( - NNSG2dBGSelect bg, - const NNSG2dScreenData * pScnData, - const NNSG2dCharacterData * pChrData, - const NNSG2dPaletteData * pPltData, - const NNSG2dCharacterPosInfo * pPosInfo, - const NNSG2dPaletteCompressInfo * pCmpInfo, - GXBGScrBase scnBase, - GXBGCharBase chrBase -); - -void NNS_G2dBGLoadElementsEx( - NNSG2dBGSelect bg, - const NNSG2dScreenData * pScnData, - const NNSG2dCharacterData * pChrData, - const NNSG2dPaletteData * pPltData, - const NNSG2dCharacterPosInfo * pPosInfo, - const NNSG2dPaletteCompressInfo * pCmpInfo -); - -void NNS_G2dBGLoadScreenRect( - void * pScreenDst, - const NNSG2dScreenData * pScnData, - int srcX, - int srcY, - int dstX, - int dstY, - int dstW, - int dstH, - int width, - int height -); - -extern GXBGAreaOver NNSi_G2dBGAreaOver; - -NNS_G2D_INLINE GXBGColorMode NNSi_G2dBGGetScreenColorMode (const NNSG2dScreenData * pScnData) -{ - NNS_G2D_POINTER_ASSERT(pScnData); - return (pScnData->colorMode == NNS_G2D_SCREENCOLORMODE_16x16) ? - GX_BG_COLORMODE_16 : GX_BG_COLORMODE_256; -} - -NNS_G2D_INLINE NNSG2dScreenFormat NNSi_G2dBGGetScreenFormat (const NNSG2dScreenData * pScnData) -{ - NNS_G2D_POINTER_ASSERT(pScnData); - return (NNSG2dScreenFormat)pScnData->screenFormat; -} - -NNS_G2D_INLINE void NNS_G2dSetBGAreaOver (GXBGAreaOver areaOver) -{ - SDK_MINMAX_ASSERT(areaOver, GX_BG_AREAOVER_XLU, GX_BG_AREAOVER_REPEAT); - NNSi_G2dBGAreaOver = areaOver; -} - -NNS_G2D_INLINE GXBGAreaOver NNS_G2dGetBGAreaOver (void) -{ - return NNSi_G2dBGAreaOver; -} - -NNS_G2D_INLINE void NNS_G2dBGSetup ( - NNSG2dBGSelect bg, - const NNSG2dScreenData * pScnData, - const NNSG2dCharacterData * pChrData, - const NNSG2dPaletteData * pPltData, - GXBGScrBase scnBase, - GXBGCharBase chrBase -) -{ - NNS_G2dBGSetupEx(bg, pScnData, pChrData, pPltData, NULL, NULL, scnBase, chrBase); -} - -NNS_G2D_INLINE void NNS_G2dBGLoadElements ( - NNSG2dBGSelect bg, - const NNSG2dScreenData * pScnData, - const NNSG2dCharacterData * pChrData, - const NNSG2dPaletteData * pPltData -) -{ - NNS_G2dBGLoadElementsEx(bg, pScnData, pChrData, pPltData, NULL, NULL); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/g2d_Softsprite.h b/subprojects/NitroSystem/include/nnsys/g2d/g2d_Softsprite.h deleted file mode 100644 index 2a85b18f89..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/g2d_Softsprite.h +++ /dev/null @@ -1,138 +0,0 @@ -#ifndef NNS_G2D_SOFTWARESPRITE_H_ -#define NNS_G2D_SOFTWARESPRITE_H_ - -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define NNS_G2dSetCurrentPolygonID NNS_G2dSetSpriteCurrentPolygonID -#define NNS_G2dSetDefaultAttr NNS_G2dSetSpriteDefaultAttr -#define NNS_G2dGetDefaultAttr NNS_G2dGetSpriteDefaultAttr - -#define NNS_G2D_SPRITEATTR_TEXTUE NNS_G2D_SPRITEATTR_TEXTURE - -typedef enum NNSG2dSpriteAttr { - NNS_G2D_SPRITEATTR_ALPHA = 0x1, - NNS_G2D_SPRITEATTR_TEXTURE = 0x2, - NNS_G2D_SPRITEATTR_COLOR = 0x4, - NNS_G2D_SPRITEATTR_UV = 0x8, - NNS_G2D_SPRITEATTR_FLIP = 0x10, - NNS_G2D_SPRITEATTR_ROTO = 0x20, - NNS_G2D_SPRITEATTR_ROTXY = 0x40 -} NNSG2dSpriteAttr; - -typedef struct NNSG2dSimpleSprite { - NNSG2dSVec2 pos; - NNSG2dSVec2 size; - - u16 rotZ; - u8 priority; - u8 alpha; -} NNSG2dSimpleSprite; - -typedef struct NNSG2dBasicSprite { - NNSG2dSimpleSprite simpleParams; - NNSG2dImageAttr * pTextureAttr; - u32 texAddr; - u32 plttAddr; - u16 plttOffset; - GXRgb color; -} NNSG2dBasicSprite; - -typedef struct NNSG2dExtendedSprite { - NNSG2dBasicSprite basicParams; - NNSG2dFVec2 uvUL; - NNSG2dFVec2 uvLR; - BOOL flipH; - BOOL flipV; - NNSG2dSVec2 rotO; - u16 rotX; - u16 rotY; -} NNSG2dExtendedSprite; - -void NNS_G2dSetupSoftwareSpriteCamera(); -void NNS_G2dSetupSoftwareSpriteMaterial(); - -void NNS_G2dSetSpriteAttrEnable(u32 attr); -BOOL NNS_G2dIsSpriteAttrEnable(NNSG2dSpriteAttr attr); -void NNS_G2dSetSpriteCurrentPolygonID(u16 id); - -void NNS_G2dSetSpriteDefaultAttr(const NNSG2dExtendedSprite * pE); -const NNSG2dExtendedSprite * NNS_G2dGetSpriteDefaultAttr( ); - -void NNS_G2dDrawSpriteSimpleFast(const NNSG2dSimpleSprite * pS); -void NNS_G2dDrawSpriteBasicFast(const NNSG2dBasicSprite * pB); -void NNS_G2dDrawSpriteExtendedFast(const NNSG2dExtendedSprite * pE); - -void NNS_G2dDrawSpriteFast -( - s16 px, s16 py, int pz, - int sx, int sy, - int U0, int V0, int U1, int V1 -); - -NNS_G2D_INLINE void NNS_G2dDrawSpriteSimple (const NNSG2dSimpleSprite * pS) -{ - G3_PushMtx(); - NNS_G2dDrawSpriteSimpleFast(pS); - G3_PopMtx(1); -} - -NNS_G2D_INLINE void NNS_G2dDrawSpriteBasic (const NNSG2dBasicSprite * pB) -{ - G3_PushMtx(); - NNS_G2dDrawSpriteBasicFast(pB); - G3_PopMtx(1); -} -NNS_G2D_INLINE void NNS_G2dDrawSpriteExtended (const NNSG2dExtendedSprite * pE) -{ - G3_PushMtx(); - NNS_G2dDrawSpriteExtendedFast(pE); - G3_PopMtx(1); -} - -NNS_G2D_INLINE void NNS_G2dDrawSprite -( - s16 px, s16 py, int pz, - int sx, int sy, - int U0, int V0, int U1, int V1 -) -{ - G3_PushMtx(); - NNS_G2dDrawSpriteFast(px, py, pz, sx, sy, U0, V0, U1, V1); - G3_PopMtx(1); -} - -void NNSi_G2dDrawSpriteFast -( - s16 px, s16 py, fx32 pz, - int sx, int sy, - fx32 U0, fx32 V0, fx32 U1, fx32 V1 -); - -void NNSi_G2dDrawSpriteWithMtxFast -( - s16 px, s16 py, fx32 pz, - int sx, int sy, - const MtxFx22 * baseMtx, - fx32 U0, fx32 V0, fx32 U1, fx32 V1 -); - -void NNSi_G2dDrawSpriteWithMtxDoubleAffineFast -( - s16 px, s16 py, fx32 pz, - int sx, int sy, - const MtxFx22 * baseMtx, - fx32 U0, fx32 V0, fx32 U1, fx32 V1 -); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/g2d_TextCanvas.h b/subprojects/NitroSystem/include/nnsys/g2d/g2d_TextCanvas.h deleted file mode 100644 index fb25db4d8d..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/g2d_TextCanvas.h +++ /dev/null @@ -1,322 +0,0 @@ -#ifndef G2D_TEXTAREA_H_ -#define G2D_TEXTAREA_H_ - -#include -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define NNS_G2D_TEXTCANVAS_ASSERT(pTxn) \ - NNS_G2D_ASSERTMSG( \ - NNS_G2D_IS_VALID_POINTER(pTxn) \ - && NNS_G2D_IS_VALID_POINTER((pTxn)->pCanvas) \ - && NNS_G2D_IS_VALID_POINTER((pTxn)->pFont) \ - , "Illegal NNSG2dTextCanvas.") - -#define NNS_G2D_CHARENCODING_ASSERT(enc) \ - NNS_G2D_ASSERTMSG( \ - (0 <= (enc)) && ((enc) < NNS_G2D_NUM_OF_CHARENCODING) \ - , "Illegal NNSG2dCharEncoding(=%d).", (enc)) \ - -typedef enum NNSG2dVerticalOrigin { - NNS_G2D_VERTICALORIGIN_TOP = 0x1, - NNS_G2D_VERTICALORIGIN_MIDDLE = 0x2, - NNS_G2D_VERTICALORIGIN_BOTTOM = 0x4 -} NNSG2dVerticalOrigin; - -typedef enum NNSG2dHorizontalOrigin { - NNS_G2D_HORIZONTALORIGIN_LEFT = 0x8, - NNS_G2D_HORIZONTALORIGIN_CENTER = 0x10, - NNS_G2D_HORIZONTALORIGIN_RIGHT = 0x20 -} NNSG2dHorizontalOrigin; - -typedef enum NNSG2dVerticalAlign { - NNS_G2D_VERTICALALIGN_TOP = 0x40, - NNS_G2D_VERTICALALIGN_MIDDLE = 0x80, - NNS_G2D_VERTICALALIGN_BOTTOM = 0x100 -} NNSG2dVerticalAlign; - -typedef enum NNSG2dHorizontalAlign { - NNS_G2D_HORIZONTALALIGN_LEFT = 0x200, - NNS_G2D_HORIZONTALALIGN_CENTER = 0x400, - NNS_G2D_HORIZONTALALIGN_RIGHT = 0x800 -} NNSG2dHorizontalAlign; - -typedef struct NNSG2dTextCanvas { - const NNSG2dCharCanvas * pCanvas; - const NNSG2dFont * pFont; - int hSpace; - int vSpace; -} NNSG2dTextCanvas; - -typedef struct NNSG2dTagCallbackInfo { - NNSG2dTextCanvas txn; - const NNSG2dChar * str; - int x; - int y; - int clr; - void * cbParam; -} NNSG2dTagCallbackInfo; - -typedef void (* NNSG2dTagCallback)(u16 c, NNSG2dTagCallbackInfo * pInfo); - -typedef struct NNSiG2dTextDirection { - s8 x; - s8 y; -} NNSiG2dTextDirection; - -void NNSi_G2dTextCanvasDrawString( - const NNSG2dTextCanvas * pTxn, - int x, - int y, - int cl, - const void * str, - const void ** pPos -#ifdef NNS_G2D_FONT_ENABLE_DIRECTION_SUPPORT - , NNSiG2dTextDirection d -#endif -); - -void NNSi_G2dTextCanvasDrawTextAlign( - const NNSG2dTextCanvas * pTxn, - int x, - int y, - int areaWidth, - int cl, - u32 flags, - const void * txt -#ifdef NNS_G2D_FONT_ENABLE_DIRECTION_SUPPORT - , NNSiG2dTextDirection d -#endif -); - -void NNSi_G2dTextCanvasDrawText( - const NNSG2dTextCanvas * pTxn, - int x, - int y, - int cl, - u32 flags, - const void * txt -#ifdef NNS_G2D_FONT_ENABLE_DIRECTION_SUPPORT - , NNSiG2dTextDirection d -#endif -); - -void NNSi_G2dTextCanvasDrawTextRect( - const NNSG2dTextCanvas * pTxn, - int x, - int y, - int w, - int h, - int cl, - u32 flags, - const void * txt -#ifdef NNS_G2D_FONT_ENABLE_DIRECTION_SUPPORT - , NNSiG2dTextDirection d -#endif -); - -void NNSi_G2dTextCanvasDrawTaggedText( - const NNSG2dTextCanvas * pTxn, - int x, - int y, - int cl, - const void * txt, - NNSG2dTagCallback cbFunc, - void * cbParam -#ifdef NNS_G2D_FONT_ENABLE_DIRECTION_SUPPORT - , NNSiG2dTextDirection d -#endif -); - -NNS_G2D_INLINE void NNS_G2dTextCanvasInit ( - NNSG2dTextCanvas * pTxn, - const NNSG2dCharCanvas * pCC, - const NNSG2dFont * pFont, - int hSpace, - int vSpace -) -{ - NNS_G2D_POINTER_ASSERT(pTxn); - NNS_G2D_CHARCANVAS_ASSERT(pCC); - NNS_G2D_FONT_ASSERT(pFont); - - pTxn->pCanvas = pCC; - pTxn->pFont = pFont; - pTxn->hSpace = hSpace; - pTxn->vSpace = vSpace; -} - -#define NNS_G2dTextCanvasInit1Byte NNS_G2dTextCanvasInit -#define NNS_G2dTextCanvasInitUTF8 NNS_G2dTextCanvasInit -#define NNS_G2dTextCanvasInitUTF16 NNS_G2dTextCanvasInit -#define NNS_G2dTextCanvasInitShiftJIS NNS_G2dTextCanvasInit - -NNS_G2D_INLINE const NNSG2dCharCanvas * NNS_G2dTextCanvasGetCharCanvas ( - const NNSG2dTextCanvas * pTxn -) -{ - NNS_G2D_TEXTCANVAS_ASSERT(pTxn); - return pTxn->pCanvas; -} - -NNS_G2D_INLINE const NNSG2dFont * NNS_G2dTextCanvasGetFont (const NNSG2dTextCanvas * pTxn) -{ - NNS_G2D_TEXTCANVAS_ASSERT(pTxn); - return pTxn->pFont; -} - -NNS_G2D_INLINE int NNS_G2dTextCanvasGetHSpace (const NNSG2dTextCanvas * pTxn) -{ - NNS_G2D_TEXTCANVAS_ASSERT(pTxn); - return pTxn->hSpace; -} - -NNS_G2D_INLINE int NNS_G2dTextCanvasGetVSpace (const NNSG2dTextCanvas * pTxn) -{ - NNS_G2D_TEXTCANVAS_ASSERT(pTxn); - return pTxn->vSpace; -} - -NNS_G2D_INLINE void NNS_G2dTextCanvasSetCharCanvas ( - NNSG2dTextCanvas * pTxn, - const NNSG2dCharCanvas * pCC -) -{ - NNS_G2D_TEXTCANVAS_ASSERT(pTxn); - NNS_G2D_CHARCANVAS_ASSERT(pCC); - pTxn->pCanvas = pCC; -} - -NNS_G2D_INLINE void NNS_G2dTextCanvasSetFont (NNSG2dTextCanvas * pTxn, const NNSG2dFont * pFont) -{ - NNS_G2D_TEXTCANVAS_ASSERT(pTxn); - NNS_G2D_FONT_ASSERT(pFont); - pTxn->pFont = pFont; -} - -NNS_G2D_INLINE void NNS_G2dTextCanvasSetHSpace (NNSG2dTextCanvas * pTxn, int hSpace) -{ - NNS_G2D_TEXTCANVAS_ASSERT(pTxn); - pTxn->hSpace = hSpace; -} - -NNS_G2D_INLINE void NNS_G2dTextCanvasSetVSpace (NNSG2dTextCanvas * pTxn, int vSpace) -{ - NNS_G2D_TEXTCANVAS_ASSERT(pTxn); - pTxn->vSpace = vSpace; -} - -NNS_G2D_INLINE int NNS_G2dTextCanvasGetStringWidth ( - const NNSG2dTextCanvas * pTxn, - const NNSG2dChar * str, - const NNSG2dChar ** pPos -) -{ - return NNS_G2dFontGetStringWidth( - pTxn->pFont, - pTxn->hSpace, - str, - pPos); -} - -NNS_G2D_INLINE int NNS_G2dTextCanvasGetTextHeight ( - const NNSG2dTextCanvas * pTxn, - const NNSG2dChar * txt -) -{ - return NNS_G2dFontGetTextHeight( - pTxn->pFont, - pTxn->vSpace, - txt); -} - -NNS_G2D_INLINE int NNS_G2dTextCanvasGetTextWidth ( - const NNSG2dTextCanvas * pTxn, - const NNSG2dChar * txt -) -{ - return NNS_G2dFontGetTextWidth( - pTxn->pFont, - pTxn->hSpace, - txt); -} - -NNS_G2D_INLINE NNSG2dTextRect NNS_G2dTextCanvasGetTextRect ( - const NNSG2dTextCanvas * pTxn, - const NNSG2dChar * txt -) -{ - return NNS_G2dFontGetTextRect( - pTxn->pFont, - pTxn->hSpace, - pTxn->vSpace, - txt); -} - -NNS_G2D_INLINE NNSiG2dTextDirection NNSi_G2dGetTextDirection (const NNSG2dFont * pFont) -{ - NNSiG2dTextDirection d = {0, 0}; - switch (NNS_G2dFontGetFlags(pFont)) { - case (NNS_G2D_FONT_FLAG_ROT_0): - case (NNS_G2D_FONT_FLAG_ROT_270 | NNS_G2D_FONT_FLAG_TBRL): d.x = 1; break; - case (NNS_G2D_FONT_FLAG_ROT_90): - case (NNS_G2D_FONT_FLAG_ROT_0 | NNS_G2D_FONT_FLAG_TBRL): d.y = 1; break; - case (NNS_G2D_FONT_FLAG_ROT_180): - case (NNS_G2D_FONT_FLAG_ROT_90 | NNS_G2D_FONT_FLAG_TBRL): d.x = -1; break; - case (NNS_G2D_FONT_FLAG_ROT_270): - case (NNS_G2D_FONT_FLAG_ROT_180 | NNS_G2D_FONT_FLAG_TBRL): d.y = -1; break; - } - return d; -} - -#ifdef NNS_G2D_FONT_ENABLE_DIRECTION_SUPPORT -NNS_G2D_INLINE void NNS_G2dTextCanvasDrawString (const NNSG2dTextCanvas * pTxn, int x, int y, int cl, const NNSG2dChar * str, const NNSG2dChar ** pPos) -{ - NNSi_G2dTextCanvasDrawString(pTxn, x, y, cl, str, (const void **)pPos, - NNSi_G2dGetTextDirection(NNS_G2dTextCanvasGetFont(pTxn))); -} -NNS_G2D_INLINE void NNS_G2dTextCanvasDrawText (const NNSG2dTextCanvas * pTxn, int x, int y, int cl, u32 flags, const NNSG2dChar * txt) -{ - NNSi_G2dTextCanvasDrawText(pTxn, x, y, cl, flags, txt, - NNSi_G2dGetTextDirection(NNS_G2dTextCanvasGetFont(pTxn))); -} -NNS_G2D_INLINE void NNS_G2dTextCanvasDrawTextRect (const NNSG2dTextCanvas * pTxn, int x, int y, int w, int h, int cl, u32 flags, const NNSG2dChar * txt) -{ - NNSi_G2dTextCanvasDrawTextRect(pTxn, x, y, w, h, cl, flags, txt, - NNSi_G2dGetTextDirection(NNS_G2dTextCanvasGetFont(pTxn))); -} -NNS_G2D_INLINE void NNS_G2dTextCanvasDrawTaggedText (const NNSG2dTextCanvas * pTxn, int x, int y, int cl, const NNSG2dChar * txt, NNSG2dTagCallback cbFunc, void * cbParam) -{ - NNSi_G2dTextCanvasDrawTaggedText(pTxn, x, y, cl, txt, cbFunc, cbParam, - NNSi_G2dGetTextDirection(NNS_G2dTextCanvasGetFont(pTxn))); -} -#else -NNS_G2D_INLINE void NNS_G2dTextCanvasDrawString (const NNSG2dTextCanvas * pTxn, int x, int y, int cl, const NNSG2dChar * str, const NNSG2dChar ** pPos) -{ - NNSi_G2dTextCanvasDrawString(pTxn, x, y, cl, str, (const void **)pPos); -} -NNS_G2D_INLINE void NNS_G2dTextCanvasDrawText (const NNSG2dTextCanvas * pTxn, int x, int y, int cl, u32 flags, const NNSG2dChar * txt) -{ - NNSi_G2dTextCanvasDrawText(pTxn, x, y, cl, flags, txt); -} -NNS_G2D_INLINE void NNS_G2dTextCanvasDrawTextRect (const NNSG2dTextCanvas * pTxn, int x, int y, int w, int h, int cl, u32 flags, const NNSG2dChar * txt) -{ - NNSi_G2dTextCanvasDrawTextRect(pTxn, x, y, w, h, cl, flags, txt); -} -NNS_G2D_INLINE void NNS_G2dTextCanvasDrawTaggedText (const NNSG2dTextCanvas * pTxn, int x, int y, int cl, const NNSG2dChar * txt, NNSG2dTagCallback cbFunc, void * cbParam) -{ - NNSi_G2dTextCanvasDrawTaggedText(pTxn, x, y, cl, txt, cbFunc, cbParam); -} -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/g2d_config.h b/subprojects/NitroSystem/include/nnsys/g2d/g2d_config.h deleted file mode 100644 index 6ce34d1f66..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/g2d_config.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef NNS_G2D_CONFIG_H_ -#define NNS_G2D_CONFIG_H_ - -#include -#define NNS_G2D_INLINE NNS_INLINE - -#ifndef NNS_FROM_TOOL -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define NNS_G2D_DMA_NO GX_GetDefaultDMA() - -#define NNS_G2D_ASSERTMSG SDK_ASSERTMSG -#define NNS_G2D_ASSERT SDK_ASSERT -#define NNS_G2D_NULL_ASSERT SDK_NULL_ASSERT -#define NNS_G2D_MINMAX_ASSERT SDK_MINMAX_ASSERT -#define NNS_G2D_MIN_ASSERT SDK_MIN_ASSERT -#define NNS_G2D_MAX_ASSERT SDK_MAX_ASSERT -#define NNS_G2D_WARNING SDK_WARNING -#define NNS_G2D_NON_ZERO_ASSERT(val) SDK_ASSERTMSG((val) != 0, "Non zero value is expexted in the context.") - -#define NNS_G2D_FONT_USE_OLD_RESOURCE - -#define NNS_G2D_FONT_ENABLE_DIRECTION_SUPPORT - -#define NNS_G2D_ASSUME_DOUBLEAFFINE_OBJPOS_ADJUSTED - -#ifdef __cplusplus -} -#endif -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/g2di_AssertUtil.h b/subprojects/NitroSystem/include/nnsys/g2d/g2di_AssertUtil.h deleted file mode 100644 index cff2466a41..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/g2di_AssertUtil.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef ASSERT_UTIL_H_ -#define ASSERT_UTIL_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#define NNS_G2D_IS_ALIGNED(addr, align) (((u32)(addr) & ((align) - 1)) == 0) - -#define NNS_G2D_ALIGN_ASSERT(addr, align) \ - NNS_G2D_ASSERTMSG( \ - NNS_G2D_IS_ALIGNED((addr), (align)), \ - "'%s'=%p must be %d byte aligned.", #addr, (addr)) - -#define NNS_G2D_IS_VALID_POINTER(p) ((HW_ITCM_IMAGE <= ((u32)(p))) && (((u32)(p)) <= HW_CTRDG_RAM_END)) - -#define NNS_G2D_POINTER_ASSERT(p) \ - NNS_G2D_ASSERTMSG( \ - NNS_G2D_IS_VALID_POINTER(p), \ - "'%s'=%p is invalid memory address.", #p, (p)); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/g2di_Char.h b/subprojects/NitroSystem/include/nnsys/g2d/g2di_Char.h deleted file mode 100644 index 5a2e05f32f..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/g2di_Char.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef G2DI_CHAR_H_ -#define G2DI_CHAR_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef NNS_G2D_UNICODE - #define NNS_G2D_TRANSCODE(str) L ## str -typedef wchar_t NNSG2dChar; -#else - #define NNS_G2D_TRANSCODE(str) str -typedef char NNSG2dChar; -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/g2di_SplitChar.h b/subprojects/NitroSystem/include/nnsys/g2d/g2di_SplitChar.h deleted file mode 100644 index b829e8d7c4..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/g2di_SplitChar.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef G2DI_SPLITCHAR_H_ -#define G2DI_SPLITCHAR_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef u16 (* NNSiG2dSplitCharCallback)(const void ** ppChar); - -u16 NNSi_G2dSplitCharUTF16(const void ** ppChar); -u16 NNSi_G2dSplitCharUTF8(const void ** ppChar); -u16 NNSi_G2dSplitCharShiftJIS(const void ** ppChar); -u16 NNSi_G2dSplitChar1Byte(const void ** ppChar); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/load/g2d_NAN_load.h b/subprojects/NitroSystem/include/nnsys/g2d/load/g2d_NAN_load.h deleted file mode 100644 index 3f2bb5231f..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/load/g2d_NAN_load.h +++ /dev/null @@ -1,43 +0,0 @@ -#ifndef NNS_G2D_NAN_LOAD_H_ -#define NNS_G2D_NAN_LOAD_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include - -BOOL NNS_G2dGetUnpackedAnimBank(void * pNanrFile, NNSG2dAnimBankData ** ppAnimBank); -BOOL NNS_G2dGetUnpackedMCAnimBank(void * pNanrFile, NNSG2dAnimBankData ** ppAnimBank); - -void NNS_G2dUnpackNAN(NNSG2dAnimBankData * pData); - -NNS_G2D_INLINE u16 NNS_G2dGetNumAnimSequence (const NNSG2dAnimBankData * pAnimBank) -{ - NNS_G2D_NULL_ASSERT(pAnimBank); - return pAnimBank->numSequences; -} - -const NNSG2dAnimSequenceData * NNS_G2dGetAnimSequenceByIdx(const NNSG2dAnimBankData * pAnimBank, u16 idx); - -const char * NNS_G2dGetAnimSequenceTypeStr(NNSG2dAnimationType); - -#ifdef __SNC__ -NNS_G2D_DEBUG_FUNC_DECL_BEGIN void NNS_G2dPrintAnimContents (const void * p1, NNSG2dAnimationElement p2) NNS_G2D_DEBUG_FUNC_DECL_END -NNS_G2D_DEBUG_FUNC_DECL_BEGIN void NNS_G2dPrintAnimFrame (const NNSG2dAnimFrameData * p1, NNSG2dAnimationElement p2) NNS_G2D_DEBUG_FUNC_DECL_END -NNS_G2D_DEBUG_FUNC_DECL_BEGIN void NNS_G2dPrintAnimSequence (const NNSG2dAnimSequenceData * p1) NNS_G2D_DEBUG_FUNC_DECL_END -NNS_G2D_DEBUG_FUNC_DECL_BEGIN void NNS_G2dPrintAnimBank (const NNSG2dAnimBankData * p1) NNS_G2D_DEBUG_FUNC_DECL_END -#else -NNS_G2D_DEBUG_FUNC_DECL_BEGIN void NNS_G2dPrintAnimContents (const void *, NNSG2dAnimationElement) NNS_G2D_DEBUG_FUNC_DECL_END -NNS_G2D_DEBUG_FUNC_DECL_BEGIN void NNS_G2dPrintAnimFrame (const NNSG2dAnimFrameData *, NNSG2dAnimationElement) NNS_G2D_DEBUG_FUNC_DECL_END -NNS_G2D_DEBUG_FUNC_DECL_BEGIN void NNS_G2dPrintAnimSequence (const NNSG2dAnimSequenceData *) NNS_G2D_DEBUG_FUNC_DECL_END -NNS_G2D_DEBUG_FUNC_DECL_BEGIN void NNS_G2dPrintAnimBank (const NNSG2dAnimBankData *) NNS_G2D_DEBUG_FUNC_DECL_END -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/load/g2d_NCE_load.h b/subprojects/NitroSystem/include/nnsys/g2d/load/g2d_NCE_load.h deleted file mode 100644 index 9f5f289f05..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/load/g2d_NCE_load.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef NNS_G2D_NCE_LOAD_H_ -#define NNS_G2D_NCE_LOAD_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -BOOL NNS_G2dGetUnpackedCellBank(void * pNcerFile, NNSG2dCellDataBank ** ppCellBank); -void NNS_G2dUnpackNCE(NNSG2dCellDataBank * pCellData); -const NNSG2dCellData * NNS_G2dGetCellDataByIdx(const NNSG2dCellDataBank * pCellData, u16 idx); - -#ifdef __SNC__ -NNS_G2D_DEBUG_FUNC_DECL_BEGIN void NNS_G2dPrintOBJAttr (const NNSG2dCellOAMAttrData * p1) NNS_G2D_DEBUG_FUNC_DECL_END -NNS_G2D_DEBUG_FUNC_DECL_BEGIN void NNS_G2dPrintCellInfo (const NNSG2dCellData * p1) NNS_G2D_DEBUG_FUNC_DECL_END -NNS_G2D_DEBUG_FUNC_DECL_BEGIN void NNS_G2dPrintCellBank (const NNSG2dCellDataBank * p1) NNS_G2D_DEBUG_FUNC_DECL_END -#else -NNS_G2D_DEBUG_FUNC_DECL_BEGIN void NNS_G2dPrintOBJAttr (const NNSG2dCellOAMAttrData *) NNS_G2D_DEBUG_FUNC_DECL_END -NNS_G2D_DEBUG_FUNC_DECL_BEGIN void NNS_G2dPrintCellInfo (const NNSG2dCellData *) NNS_G2D_DEBUG_FUNC_DECL_END -NNS_G2D_DEBUG_FUNC_DECL_BEGIN void NNS_G2dPrintCellBank (const NNSG2dCellDataBank *) NNS_G2D_DEBUG_FUNC_DECL_END -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/load/g2d_NCG_load.h b/subprojects/NitroSystem/include/nnsys/g2d/load/g2d_NCG_load.h deleted file mode 100644 index 57c96d3f78..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/load/g2d_NCG_load.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef NNS_G2D_NCG_LOAD_H_ -#define NNS_G2D_NCG_LOAD_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -BOOL NNS_G2dGetUnpackedCharacterData(void * pNcgrFile, NNSG2dCharacterData ** ppCharData); -void NNS_G2dUnpackNCG(NNSG2dCharacterData * pCharData); - -BOOL NNS_G2dGetUnpackedBGCharacterData(void * pNcgrFile, NNSG2dCharacterData ** ppCharData); -void NNS_G2dUnpackBGNCG(NNSG2dCharacterData * pCharData); - -BOOL NNS_G2dGetUnpackedCharacterPosInfo -( - void * pNcgrFile, - NNSG2dCharacterPosInfo ** ppCharPosInfo -); - -#ifdef __SNC__ -NNS_G2D_DEBUG_FUNC_DECL_BEGIN void NNS_G2dPrintCharacterData (const NNSG2dCharacterData * p1) NNS_G2D_DEBUG_FUNC_DECL_END -NNS_G2D_DEBUG_FUNC_DECL_BEGIN void NNS_G2dPrintCharacterPosInfo (const NNSG2dCharacterPosInfo * pPosInfo) NNS_G2D_DEBUG_FUNC_DECL_END -#else -NNS_G2D_DEBUG_FUNC_DECL_BEGIN void NNS_G2dPrintCharacterData (const NNSG2dCharacterData *) NNS_G2D_DEBUG_FUNC_DECL_END -NNS_G2D_DEBUG_FUNC_DECL_BEGIN void NNS_G2dPrintCharacterPosInfo (const NNSG2dCharacterPosInfo *) NNS_G2D_DEBUG_FUNC_DECL_END -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/load/g2d_NCL_load.h b/subprojects/NitroSystem/include/nnsys/g2d/load/g2d_NCL_load.h deleted file mode 100644 index 78cf953671..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/load/g2d_NCL_load.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef NNS_G2D_NCP_LOAD_H_ -#define NNS_G2D_NCP_LOAD_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -BOOL NNS_G2dGetUnpackedPaletteData(void * pNclrFile, NNSG2dPaletteData ** ppPltData); -BOOL NNS_G2dGetUnpackedPaletteCompressInfo(void * pNclrFile, NNSG2dPaletteCompressInfo ** ppPltCmpInfo); - -void NNS_G2dUnpackNCL(NNSG2dPaletteData * pPlttData); -void NNSi_G2dUnpackNCLCmpInfo(NNSG2dPaletteCompressInfo * pPlttCmpData); - -#ifdef __SNC__ -NNS_G2D_DEBUG_FUNC_DECL_BEGIN void NNS_G2dPrintPaletteData (const NNSG2dPaletteData * p1) NNS_G2D_DEBUG_FUNC_DECL_END -#else -NNS_G2D_DEBUG_FUNC_DECL_BEGIN void NNS_G2dPrintPaletteData (const NNSG2dPaletteData *) NNS_G2D_DEBUG_FUNC_DECL_END -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/load/g2d_NEN_load.h b/subprojects/NitroSystem/include/nnsys/g2d/load/g2d_NEN_load.h deleted file mode 100644 index d71834b0c6..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/load/g2d_NEN_load.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef NNS_G2D_NEN_LOAD_H_ -#define NNS_G2D_NEN_LOAD_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -BOOL NNS_G2dGetUnpackedEntityBank(void * pNenrFile, NNSG2dEntityDataBank ** ppEntityBank); -void NNS_G2dUnpackNEN(NNSG2dEntityDataBank * pDataBank); -const NNSG2dEntityData * NNS_G2dGetEntityDataByIdx(const NNSG2dEntityDataBank * pDataBank, u16 idx); - -#ifdef __SNC__ -NNS_G2D_DEBUG_FUNC_DECL_BEGIN void NNS_G2dPrintEntityData (const NNSG2dEntityData * p1) NNS_G2D_DEBUG_FUNC_DECL_END -NNS_G2D_DEBUG_FUNC_DECL_BEGIN void NNS_G2dPrintEntityDataBank (const NNSG2dEntityDataBank * p1) NNS_G2D_DEBUG_FUNC_DECL_END -#else -NNS_G2D_DEBUG_FUNC_DECL_BEGIN void NNS_G2dPrintEntityData (const NNSG2dEntityData *) NNS_G2D_DEBUG_FUNC_DECL_END -NNS_G2D_DEBUG_FUNC_DECL_BEGIN void NNS_G2dPrintEntityDataBank (const NNSG2dEntityDataBank *) NNS_G2D_DEBUG_FUNC_DECL_END -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/load/g2d_NFT_load.h b/subprojects/NitroSystem/include/nnsys/g2d/load/g2d_NFT_load.h deleted file mode 100644 index 6447a00c36..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/load/g2d_NFT_load.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef NNS_G2D_NFT_LOAD_H_ -#define NNS_G2D_NFT_LOAD_H_ - -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -BOOL NNSi_G2dGetUnpackedFont(void * pNftrFile, NNSG2dFontInformation ** ppFont); - -void NNSi_G2dUnpackNFT(NNSG2dBinaryFileHeader * pHeader); - -#ifdef SDK_FINALROM -NNS_G2D_INLINE void NNS_G2dPrintFont (const NNSG2dFont *) -{ -} -#else -void NNS_G2dPrintFont(const NNSG2dFont * pFont); -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/load/g2d_NMC_load.h b/subprojects/NitroSystem/include/nnsys/g2d/load/g2d_NMC_load.h deleted file mode 100644 index 0999e03f8e..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/load/g2d_NMC_load.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef NNS_G2D_NMC_LOAD_H_ -#define NNS_G2D_NMC_LOAD_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -BOOL NNS_G2dGetUnpackedMultiCellBank -( - void * pNmcrFile, - NNSG2dMultiCellDataBank ** ppMCBank -); -void NNS_G2dUnpackNMC(NNSG2dMultiCellDataBank * pMCellData); -const NNSG2dMultiCellData * NNS_G2dGetMultiCellDataByIdx(const NNSG2dMultiCellDataBank * pDataBank, u16 idx); - -#ifdef __SNC__ -NNS_G2D_DEBUG_FUNC_DECL_BEGIN void NNS_G2dPrintNodeHierData (const NNSG2dMultiCellHierarchyData * p1) NNS_G2D_DEBUG_FUNC_DECL_END -NNS_G2D_DEBUG_FUNC_DECL_BEGIN void NNS_G2dPrintMultiCellInfo (const NNSG2dMultiCellData * p1) NNS_G2D_DEBUG_FUNC_DECL_END -NNS_G2D_DEBUG_FUNC_DECL_BEGIN void NNS_G2dPrintMultiCellBank (const NNSG2dMultiCellDataBank * p1) NNS_G2D_DEBUG_FUNC_DECL_END -#else -NNS_G2D_DEBUG_FUNC_DECL_BEGIN void NNS_G2dPrintNodeHierData (const NNSG2dMultiCellHierarchyData *) NNS_G2D_DEBUG_FUNC_DECL_END -NNS_G2D_DEBUG_FUNC_DECL_BEGIN void NNS_G2dPrintMultiCellInfo (const NNSG2dMultiCellData *) NNS_G2D_DEBUG_FUNC_DECL_END -NNS_G2D_DEBUG_FUNC_DECL_BEGIN void NNS_G2dPrintMultiCellBank (const NNSG2dMultiCellDataBank *) NNS_G2D_DEBUG_FUNC_DECL_END -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g2d/load/g2d_NSC_load.h b/subprojects/NitroSystem/include/nnsys/g2d/load/g2d_NSC_load.h deleted file mode 100644 index eb4f8ebe27..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g2d/load/g2d_NSC_load.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef NNS_G2D_NSC_LOAD_H_ -#define NNS_G2D_NSC_LOAD_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -BOOL NNS_G2dGetUnpackedScreenData(void * pNscrFile, NNSG2dScreenData ** ppScrData); - -#ifdef __SNC__ -NNS_G2D_DEBUG_FUNC_DECL_BEGIN -void NNS_G2dPrintScreenData (const NNSG2dScreenData * p1) -NNS_G2D_DEBUG_FUNC_DECL_END -#else -NNS_G2D_DEBUG_FUNC_DECL_BEGIN -void NNS_G2dPrintScreenData (const NNSG2dScreenData *) -NNS_G2D_DEBUG_FUNC_DECL_END -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g3d.h b/subprojects/NitroSystem/include/nnsys/g3d.h deleted file mode 100644 index a35a00536e..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g3d.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef NNS_G3D_H_ -#define NNS_G3D_H_ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g3d/1mat1shp.h b/subprojects/NitroSystem/include/nnsys/g3d/1mat1shp.h deleted file mode 100644 index 850c1886f0..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g3d/1mat1shp.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef NNSG3D_1MAT1SHP_H_ -#define NNSG3D_1MAT1SHP_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -void NNS_G3dDraw1Mat1Shp(const NNSG3dResMdl * pResMdl, u32 matID, u32 shpID, BOOL sendMat); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g3d/anm.h b/subprojects/NitroSystem/include/nnsys/g3d/anm.h deleted file mode 100644 index efb0b852f9..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g3d/anm.h +++ /dev/null @@ -1,114 +0,0 @@ -#ifndef NNSG3D_ANM_H_ -#define NNSG3D_ANM_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -struct NNSG3dResMdl_; - -typedef void (* NNSG3dAnimInitFunc)(NNSG3dAnmObj *, - void *, - const NNSG3dResMdl *); - -typedef struct { - u8 category0; - u8 dummy_; - u16 category1; - NNSG3dAnimInitFunc func; -} NNSG3dAnmObjInitFunc; - -typedef enum { - NNS_G3D_MATANM_RESULTFLAG_TEXMTX_SCALEONE = 0x00000001, - NNS_G3D_MATANM_RESULTFLAG_TEXMTX_ROTZERO = 0x00000002, - NNS_G3D_MATANM_RESULTFLAG_TEXMTX_TRANSZERO = 0x00000004, - - NNS_G3D_MATANM_RESULTFLAG_TEXMTX_SET = 0x00000008, - NNS_G3D_MATANM_RESULTFLAG_TEXMTX_MULT = 0x00000010, - NNS_G3D_MATANM_RESULTFLAG_WIREFRAME = 0x00000020 -} NNSG3dMatAnmResultFlag; - -typedef struct NNSG3dMatAnmResult_ { - NNSG3dMatAnmResultFlag flag; - u32 prmMatColor0; - u32 prmMatColor1; - u32 prmPolygonAttr; - u32 prmTexImage; - u32 prmTexPltt; - - fx32 scaleS, scaleT; - fx16 sinR, cosR; - fx32 transS, transT; - - u16 origWidth, origHeight; - fx32 magW, magH; -} NNSG3dMatAnmResult; - -typedef enum { - NNS_G3D_JNTANM_RESULTFLAG_SCALE_ONE = 0x00000001, - NNS_G3D_JNTANM_RESULTFLAG_ROT_ZERO = 0x00000002, - NNS_G3D_JNTANM_RESULTFLAG_TRANS_ZERO = 0x00000004, - NNS_G3D_JNTANM_RESULTFLAG_SCALEEX0_ONE = 0x00000008, - NNS_G3D_JNTANM_RESULTFLAG_SCALEEX1_ONE = 0x00000010, - NNS_G3D_JNTANM_RESULTFLAG_MAYA_SSC = 0x00000020 -} NNSG3dJntAnmResultFlag; - -typedef struct NNSG3dJntAnmResult_ { - NNSG3dJntAnmResultFlag flag; - VecFx32 scale; - VecFx32 scaleEx0; - VecFx32 scaleEx1; - MtxFx33 rot; - VecFx32 trans; -} NNSG3dJntAnmResult; - -typedef struct NNSG3dVisAnmResult_ { - BOOL isVisible; -} NNSG3dVisAnmResult; - -typedef void (* NNSG3dFuncAnmMat)(NNSG3dMatAnmResult *, - const NNSG3dAnmObj *, - u32); - -typedef void (* NNSG3dFuncAnmJnt)(NNSG3dJntAnmResult *, - const NNSG3dAnmObj *, - u32); - -typedef void (* NNSG3dFuncAnmVis)(NNSG3dVisAnmResult *, - const NNSG3dAnmObj *, - u32); - -BOOL NNSi_G3dAnmBlendMat(NNSG3dMatAnmResult * pResult, - const NNSG3dAnmObj * pAnmObj, - u32 matID); - -BOOL NNSi_G3dAnmBlendJnt(NNSG3dJntAnmResult *, - const NNSG3dAnmObj *, - u32); - -BOOL NNSi_G3dAnmBlendVis(NNSG3dVisAnmResult *, - const NNSG3dAnmObj *, - u32); - -extern NNSG3dFuncAnmBlendMat NNS_G3dFuncBlendMatDefault; -extern NNSG3dFuncAnmBlendJnt NNS_G3dFuncBlendJntDefault; -extern NNSG3dFuncAnmBlendVis NNS_G3dFuncBlendVisDefault; - -extern NNSG3dFuncAnmMat NNS_G3dFuncAnmMatNsBmaDefault; -extern NNSG3dFuncAnmMat NNS_G3dFuncAnmMatNsBtpDefault; -extern NNSG3dFuncAnmMat NNS_G3dFuncAnmMatNsBtaDefault; -extern NNSG3dFuncAnmJnt NNS_G3dFuncAnmJntNsBcaDefault; -extern NNSG3dFuncAnmVis NNS_G3dFuncAnmVisNsBvaDefault; - -extern u32 NNS_G3dAnmFmtNum; -extern NNSG3dAnmObjInitFunc NNS_G3dAnmObjInitFuncArray[NNS_G3D_ANMFMT_MAX]; - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g3d/anm/nsbca.h b/subprojects/NitroSystem/include/nnsys/g3d/anm/nsbca.h deleted file mode 100644 index 7e89c4da6c..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g3d/anm/nsbca.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef NNSG3D_ANM_NSBCA_H_ -#define NNSG3D_ANM_NSBCA_H_ - -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef NNS_G3D_NSBCA_DISABLE -void NNSi_G3dAnmObjInitNsBca(NNSG3dAnmObj * pAnmObj, - void * pResAnm, - const NNSG3dResMdl * pResMdl); - -void NNSi_G3dAnmCalcNsBca(NNSG3dJntAnmResult * pResult, - const NNSG3dAnmObj * pAnmObj, - u32 dataIdx); -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g3d/anm/nsbma.h b/subprojects/NitroSystem/include/nnsys/g3d/anm/nsbma.h deleted file mode 100644 index f5c544ef76..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g3d/anm/nsbma.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef NNSG3D_ANM_NSBMA_H_ -#define NNSG3D_ANM_NSBMA_H_ - -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef NNS_G3D_NSBMA_DISABLE -void NNSi_G3dAnmObjInitNsBma(NNSG3dAnmObj * pAnmObj, - void * pResAnm, - const NNSG3dResMdl * pResMdl); - -void NNSi_G3dAnmCalcNsBma(NNSG3dMatAnmResult * pResult, - const NNSG3dAnmObj * pAnmObj, - u32 dataIdx); -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g3d/anm/nsbta.h b/subprojects/NitroSystem/include/nnsys/g3d/anm/nsbta.h deleted file mode 100644 index f91175c07c..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g3d/anm/nsbta.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef NNSG3D_ANM_NSBTA_H_ -#define NNSG3D_ANM_NSBTA_H_ - -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef NNS_G3D_NSBTA_DISABLE -void NNSi_G3dAnmObjInitNsBta(NNSG3dAnmObj * pAnmObj, - void * pResAnm, - const NNSG3dResMdl * pResMdl); - -void NNSi_G3dAnmCalcNsBta(NNSG3dMatAnmResult * pResult, - const NNSG3dAnmObj * pAnmObj, - u32 dataIdx); -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g3d/anm/nsbtp.h b/subprojects/NitroSystem/include/nnsys/g3d/anm/nsbtp.h deleted file mode 100644 index 026e7ca276..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g3d/anm/nsbtp.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef NNSG3D_ANM_NSBTP_H_ -#define NNSG3D_ANM_NSBTP_H_ - -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef NNS_G3D_NSBTP_DISABLE -void NNSi_G3dAnmObjInitNsBtp(NNSG3dAnmObj * pAnmObj, - void * pResAnm, - const NNSG3dResMdl * pResMdl); - -void NNSi_G3dAnmCalcNsBtp(NNSG3dMatAnmResult * pResult, - const NNSG3dAnmObj * pAnmObj, - u32 dataIdx); -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g3d/anm/nsbva.h b/subprojects/NitroSystem/include/nnsys/g3d/anm/nsbva.h deleted file mode 100644 index 126c247e0e..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g3d/anm/nsbva.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef NNSG3D_ANM_NSBVA_H_ -#define NNSG3D_ANM_NSBVA_H_ - -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef NNS_G3D_NSBVA_DISABLE -void NNSi_G3dAnmObjInitNsBva(NNSG3dAnmObj * pAnmObj, - void * pResAnm, - const NNSG3dResMdl * pResMdl); - -void NNSi_G3dAnmCalcNsBva(NNSG3dVisAnmResult * pResult, - const NNSG3dAnmObj * pAnmObj, - u32 dataIdx); -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g3d/binres/res_print.h b/subprojects/NitroSystem/include/nnsys/g3d/binres/res_print.h deleted file mode 100644 index ccf9f6f301..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g3d/binres/res_print.h +++ /dev/null @@ -1,69 +0,0 @@ -#ifndef NNSG3D_BINRES_RES_PRINT_H_ -#define NNSG3D_BINRES_RES_PRINT_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#if defined(SDK_DEBUG) || defined(NNS_FROM_TOOL) -#define NNS_RES_PRINT -#define NNS_RES_PRINT_END ; -#else -#define NNS_RES_PRINT NNS_INLINE -#define NNS_RES_PRINT_END {} -#endif - -NNS_RES_PRINT void NNS_G3dPrintBinFile(const u8 *) NNS_RES_PRINT_END -NNS_RES_PRINT void NNS_G3dPrintResName(const NNSG3dResName *) NNS_RES_PRINT_END -NNS_RES_PRINT void NNS_G3dPrintFileHeader(const NNSG3dResFileHeader *) NNS_RES_PRINT_END -NNS_RES_PRINT void NNS_G3dPrintDataBlockHeader(const NNSG3dResDataBlockHeader *) NNS_RES_PRINT_END - -fx32 CvtrFX_Mul(fx32 v1, fx32 v2); - -NNS_RES_PRINT void NNS_G3dPrintDictEntryItem_TEX (u32, - const NNSG3dResName *, - const NNSG3dResDictTexData *) NNS_RES_PRINT_END -NNS_RES_PRINT void NNS_G3dPrintTex (const NNSG3dResTex *) NNS_RES_PRINT_END -NNS_RES_PRINT void NNS_G3dPrintDictEntryItem_PLTT (u32, - const NNSG3dResName *, - const NNSG3dResDictPlttData *) NNS_RES_PRINT_END -NNS_RES_PRINT void NNS_G3dPrintNSBTX (const u8 *) NNS_RES_PRINT_END -NNS_RES_PRINT void NNS_G3dPrintMdlInfo (const NNSG3dResMdlInfo *) NNS_RES_PRINT_END -NNS_RES_PRINT void NNS_G3dPrintNodeSRTInfo (const NNSG3dResNodeInfo *, u32) NNS_RES_PRINT_END -NNS_RES_PRINT void NNS_G3dPrintNodeInfo (const NNSG3dResNodeInfo *) NNS_RES_PRINT_END -NNS_RES_PRINT void NNS_G3dPrintSbc (const u8 *, u32, const NNSG3dResMdl *) NNS_RES_PRINT_END -NNS_RES_PRINT void NNS_G3dPrintDL (const u32 *, u32) NNS_RES_PRINT_END -NNS_RES_PRINT void NNS_G3dPrintMatData (const NNSG3dResMat *, u32) NNS_RES_PRINT_END -NNS_RES_PRINT void NNS_G3dPrintMat (const NNSG3dResMat *) NNS_RES_PRINT_END -NNS_RES_PRINT void NNS_G3dPrintShp (const NNSG3dResShp *) NNS_RES_PRINT_END -NNS_RES_PRINT void NNS_G3dPrintMdl (const NNSG3dResName *, const NNSG3dResMdl *) NNS_RES_PRINT_END -NNS_RES_PRINT void NNS_G3dPrintMdlSet (const NNSG3dResMdlSet *) NNS_RES_PRINT_END -NNS_RES_PRINT void NNS_G3dPrintNSBMD (const u8 *) NNS_RES_PRINT_END - -NNS_RES_PRINT void NNS_G3dPrintJntAnm (const NNSG3dResJntAnm *) NNS_RES_PRINT_END -NNS_RES_PRINT void NNS_G3dPrintJntAnmSet (const NNSG3dResJntAnmSet *) NNS_RES_PRINT_END -NNS_RES_PRINT void NNS_G3dPrintNSBCA (const u8 *) NNS_RES_PRINT_END - -NNS_RES_PRINT void NNS_G3dPrintVisAnm (const NNSG3dResVisAnm *) NNS_RES_PRINT_END -NNS_RES_PRINT void NNS_G3dPrintVisAnmSet (const NNSG3dResVisAnmSet *) NNS_RES_PRINT_END -NNS_RES_PRINT void NNS_G3dPrintNSBVA (const u8 *) NNS_RES_PRINT_END - -NNS_RES_PRINT void NNS_G3dPrintMatColAnm (const NNSG3dResMatCAnm *) NNS_RES_PRINT_END -NNS_RES_PRINT void NNS_G3dPrintMatColAnmSet (const NNSG3dResMatCAnmSet *) NNS_RES_PRINT_END -NNS_RES_PRINT void NNS_G3dPrintNSBMA (const u8 *) NNS_RES_PRINT_END - -NNS_RES_PRINT void NNS_G3dPrintTexPatAnm (const NNSG3dResTexPatAnm *) NNS_RES_PRINT_END -NNS_RES_PRINT void NNS_G3dPrintTexPatAnmSet (const NNSG3dResTexPatAnmSet *) NNS_RES_PRINT_END -NNS_RES_PRINT void NNS_G3dPrintNSBTP (const u8 *) NNS_RES_PRINT_END - -NNS_RES_PRINT void NNS_G3dPrintTexSRTAnm (const NNSG3dResTexSRTAnm *) NNS_RES_PRINT_END -NNS_RES_PRINT void NNS_G3dPrintTexSRTAnmSet (const NNSG3dResTexSRTAnmSet *) NNS_RES_PRINT_END -NNS_RES_PRINT void NNS_G3dPrintNSBTA (const u8 *) NNS_RES_PRINT_END - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g3d/binres/res_struct.h b/subprojects/NitroSystem/include/nnsys/g3d/binres/res_struct.h deleted file mode 100644 index 0701d6dbae..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g3d/binres/res_struct.h +++ /dev/null @@ -1,646 +0,0 @@ -#ifndef NNSG3D_BINRES_RES_STRUCT_H_ -#define NNSG3D_BINRES_RES_STRUCT_H_ - -#include -#define NNS_G3D_RES_INLINE NNS_G3D_INLINE - -#ifdef NNS_FROM_TOOL - -typedef u32 NNSGfdTexKey; -#else -#include -SDK_COMPILER_ASSERT(sizeof(NNSGfdTexKey) == sizeof(u32)); -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define NNS_G3D_SIGNATURE_NSBMD '0DMB' -#define NNS_G3D_SIGNATURE_NSBTX '0XTB' -#define NNS_G3D_SIGNATURE_NSBCA '0ACB' -#define NNS_G3D_SIGNATURE_NSBVA '0AVB' -#define NNS_G3D_SIGNATURE_NSBMA '0AMB' -#define NNS_G3D_SIGNATURE_NSBTP '0PTB' -#define NNS_G3D_SIGNATURE_NSBTA '0ATB' - -#define NNS_G3D_DATABLK_MDLSET '0LDM' -#define NNS_G3D_DATABLK_TEX '0XET' -#define NNS_G3D_DATABLK_JNT_ANM '0TNJ' -#define NNS_G3D_DATABLK_VIS_ANM '0SIV' -#define NNS_G3D_DATABLK_MATC_ANM '0TAM' -#define NNS_G3D_DATABLK_TEXPAT_ANM '0TAP' -#define NNS_G3D_DATABLK_TEXSRT_ANM '0TRS' - -typedef u16 NNSG3dItemTag; -#define NNS_G3D_ITEMTAG_MAT_STANDARD 0 -#define NNS_G3D_ITEMTAG_SHP_STANDARD 0 - -typedef struct NNSG3dResFileHeader_ { - union { - char signature[4]; - u32 sigVal; - }; - u16 byteOrder; - u16 version; - u32 fileSize; - u16 headerSize; - u16 dataBlocks; -} NNSG3dResFileHeader; - -typedef struct NNSG3dResDataBlockHeader_ { - union { - u32 kind; - char chr[4]; - }; - u32 size; -} NNSG3dResDataBlockHeader; - -typedef struct NNSG3dResDictTreeNode_ { - u8 refBit; - u8 idxLeft; - u8 idxRight; - u8 idxEntry; -} NNSG3dResDictTreeNode; - -typedef struct NNSG3dResDict_ { - u8 revision; - u8 numEntry; - u16 sizeDictBlk; - u16 dummy_; - u16 ofsEntry; - - NNSG3dResDictTreeNode node[1]; -} NNSG3dResDict; - -#define NNS_G3D_RESNAME_SIZE (16) -#define NNS_G3D_RESNAME_VALSIZE (NNS_G3D_RESNAME_SIZE / sizeof(u32)) - -typedef union NNSG3dResName_ { - char name[NNS_G3D_RESNAME_SIZE]; - u32 val[NNS_G3D_RESNAME_VALSIZE]; -} NNSG3dResName; - -typedef struct NNSG3dResDictEntryHeader_ { - u16 sizeUnit; - u16 ofsName; - u8 data[4]; -} NNSG3dResDictEntryHeader; - -typedef enum { - NNS_G3D_TEXIMAGE_PARAM_TEX_ADDR_MASK = 0x0000ffff, - NNS_G3D_TEXIMAGE_PARAM_S_SIZE_MASK = 0x00700000, - NNS_G3D_TEXIMAGE_PARAM_T_SIZE_MASK = 0x03800000, - NNS_G3D_TEXIMAGE_PARAM_TEXFMT_MASK = 0x1c000000, - NNS_G3D_TEXIMAGE_PARAM_TR_MASK = 0x20000000, - - NNS_G3D_TEXIMAGE_PARAM_TEX_ADDR_SHIFT = 0, - NNS_G3D_TEXIMAGE_PARAM_S_SIZE_SHIFT = 20, - NNS_G3D_TEXIMAGE_PARAM_T_SIZE_SHIFT = 23, - NNS_G3D_TEXIMAGE_PARAM_TEXFMT_SHIFT = 26, - NNS_G3D_TEXIMAGE_PARAM_TR_SHIFT = 29 -} NNSG3dTexImageParam; - -typedef enum { - NNS_G3D_TEXIMAGE_PARAMEX_ORIGW_MASK = 0x000007ff, - NNS_G3D_TEXIMAGE_PARAMEX_ORIGH_MASK = 0x003ff800, - NNS_G3D_TEXIMAGE_PARAMEX_WHSAME_MASK = 0x80000000, - - NNS_G3D_TEXIMAGE_PARAMEX_ORIGW_SHIFT = 0, - NNS_G3D_TEXIMAGE_PARAMEX_ORIGH_SHIFT = 11, - NNS_G3D_TEXIMAGE_PARAMEX_WHSAME_SHIFT = 31 -} NNSG3dTexImageParamEx; - -typedef struct NNSG3dResDictTexData_ { - u32 texImageParam; - - u32 extraParam; -} NNSG3dResDictTexData; - -typedef enum { - NNS_G3D_RESTEX_LOADED = 0x0001 -} NNSG3dResTexFlag; - -typedef struct NNSG3dResTexInfo_ { - NNSGfdTexKey vramKey; - u16 sizeTex; - u16 ofsDict; - u16 flag; - u16 dummy_; - u32 ofsTex; -} NNSG3dResTexInfo; - -typedef enum { - NNS_G3D_RESTEX4x4_LOADED = 0x0001 -} NNSG3dResTex4x4Flag; - -typedef struct NNSG3dResTex4x4Info_ { - NNSGfdTexKey vramKey; - u16 sizeTex; - u16 ofsDict; - u16 flag; - u16 dummy_; - u32 ofsTex; - u32 ofsTexPlttIdx; -} NNSG3dResTex4x4Info; - -typedef struct NNSG3dResDictPlttData_ { - u16 offset; - u16 flag; -} NNSG3dResDictPlttData; - -typedef enum { - NNS_G3D_RESPLTT_LOADED = 0x0001, - NNS_G3D_RESPLTT_USEPLTT4 = 0x8000 -} NNSG3dResPlttFlag; - -typedef struct NNSG3dResPlttInfo_ { - NNSGfdTexKey vramKey; - u16 sizePltt; - u16 flag; - u16 ofsDict; - u16 dummy_; - u32 ofsPlttData; -} NNSG3dResPlttInfo; - -typedef struct NNSG3dResTex_ { - NNSG3dResDataBlockHeader header; - NNSG3dResTexInfo texInfo; - NNSG3dResTex4x4Info tex4x4Info; - NNSG3dResPlttInfo plttInfo; - NNSG3dResDict dict; -} NNSG3dResTex; - -typedef struct NNSG3dResDictMatData_ { - u32 offset; -} NNSG3dResDictMatData; - -typedef struct NNSG3dResDictTexToMatIdxData_ { - u16 offset; - u8 numIdx; - u8 flag; -} NNSG3dResDictTexToMatIdxData; - -typedef struct NNSG3dResDictPlttToMatIdxData_ { - u16 offset; - u8 numIdx; - u8 flag; -} NNSG3dResDictPlttToMatIdxData; - -typedef enum { - NNS_G3D_MATFLAG_TEXMTX_USE = 0x0001, - NNS_G3D_MATFLAG_TEXMTX_SCALEONE = 0x0002, - NNS_G3D_MATFLAG_TEXMTX_ROTZERO = 0x0004, - NNS_G3D_MATFLAG_TEXMTX_TRANSZERO = 0x0008, - NNS_G3D_MATFLAG_ORIGWH_SAME = 0x0010, - NNS_G3D_MATFLAG_WIREFRAME = 0x0020, - NNS_G3D_MATFLAG_DIFFUSE = 0x0040, - NNS_G3D_MATFLAG_AMBIENT = 0x0080, - NNS_G3D_MATFLAG_VTXCOLOR = 0x0100, - NNS_G3D_MATFLAG_SPECULAR = 0x0200, - NNS_G3D_MATFLAG_EMISSION = 0x0400, - NNS_G3D_MATFLAG_SHININESS = 0x0800, - NNS_G3D_MATFLAG_TEXPLTTBASE = 0x1000, - NNS_G3D_MATFLAG_EFFECTMTX = 0x2000 -} NNSG3dMatFlag; - -typedef struct NNSG3dResMatData_ { - NNSG3dItemTag itemTag; - u16 size; - u32 diffAmb; - u32 specEmi; - u32 polyAttr; - u32 polyAttrMask; - u32 texImageParam; - u32 texImageParamMask; - u16 texPlttBase; - u16 flag; - u16 origWidth, origHeight; - fx32 magW; - fx32 magH; -} NNSG3dResMatData; - -typedef struct NNSG3dResMat_ { - u16 ofsDictTexToMatList; - u16 ofsDictPlttToMatList; - NNSG3dResDict dict; -} NNSG3dResMat; - -typedef struct NNSG3dResDictShpData_ { - u32 offset; -} NNSG3dResDictShpData; - -typedef enum { - NNS_G3D_SHPFLAG_USE_NORMAL = 0x00000001, - NNS_G3D_SHPFLAG_USE_COLOR = 0x00000002, - NNS_G3D_SHPFLAG_USE_TEXCOORD = 0x00000004, - NNS_G3D_SHPFLAG_USE_RESTOREMTX = 0x00000008 -} NNSG3dShpFlag; - -typedef struct NNSG3dResShpData_ { - NNSG3dItemTag itemTag; - u16 size; - u32 flag; - u32 ofsDL; - u32 sizeDL; -} NNSG3dResShpData; - -typedef struct NNSG3dResShp_ { - NNSG3dResDict dict; -} NNSG3dResShp; - -typedef struct NNSG3dResEvpMtx_ { - MtxFx43 invM; - MtxFx33 invN; -} NNSG3dResEvpMtx; - -typedef enum { - NNS_G3D_SBCTYPE_NORMAL = 0 -} NNSG3dSbcType; - -typedef enum { - NNS_G3D_SCALINGRULE_STANDARD = 0, - NNS_G3D_SCALINGRULE_MAYA = 1, - NNS_G3D_SCALINGRULE_SI3D = 2 -} NNSG3dScalingRule; - -typedef enum { - NNS_G3D_TEXMTXMODE_MAYA = 0x00, - NNS_G3D_TEXMTXMODE_SI3D = 0x01, - NNS_G3D_TEXMTXMODE_3DSMAX = 0x02, - NNS_G3D_TEXMTXMODE_XSI = 0x03 -} NNSG3dTexMtxMode; - -typedef struct NNSG3dResMdlInfo_ { - u8 sbcType; - u8 scalingRule; - u8 texMtxMode; - u8 numNode; - - u8 numMat; - u8 numShp; - u8 firstUnusedMtxStackID; - u8 dummy_; - - fx32 posScale; - fx32 invPosScale; - - u16 numVertex; - u16 numPolygon; - u16 numTriangle; - u16 numQuad; - - fx16 boxX, boxY, boxZ; - fx16 boxW, boxH, boxD; - - fx32 boxPosScale; - fx32 boxInvPosScale; -} NNSG3dResMdlInfo; - -typedef struct NNSG3dResDictNodeData_ { - u32 offset; -} NNSG3dResDictNodeData; - -typedef enum { - NNS_G3D_SRTFLAG_TRANS_ZERO = 0x0001, - NNS_G3D_SRTFLAG_ROT_ZERO = 0x0002, - NNS_G3D_SRTFLAG_SCALE_ONE = 0x0004, - NNS_G3D_SRTFLAG_PIVOT_EXIST = 0x0008, - NNS_G3D_SRTFLAG_IDXPIVOT_MASK = 0x00f0, - NNS_G3D_SRTFLAG_PIVOT_MINUS = 0x0100, - NNS_G3D_SRTFLAG_SIGN_REVC = 0x0200, - NNS_G3D_SRTFLAG_SIGN_REVD = 0x0400, - NNS_G3D_SRTFLAG_IDXMTXSTACK_MASK = 0xf800, - - NNS_G3D_SRTFLAG_IDENTITY = NNS_G3D_SRTFLAG_TRANS_ZERO | - NNS_G3D_SRTFLAG_ROT_ZERO | - NNS_G3D_SRTFLAG_SCALE_ONE, - - NNS_G3D_SRTFLAG_IDXPIVOT_SHIFT = 4, - NNS_G3D_SRTFLAG_IDXMTXSTACK_SHIFT = 11 -} NNSG3dSRTFlag; - -typedef struct NNSG3dResNodeData_ { - u16 flag; - fx16 _00; -} NNSG3dResNodeData; - -typedef struct NNSG3dResNodeInfo_ { - NNSG3dResDict dict; -} NNSG3dResNodeInfo; - -typedef struct NNSG3dResMdl_ { - u32 size; - u32 ofsSbc; - u32 ofsMat; - u32 ofsShp; - u32 ofsEvpMtx; - NNSG3dResMdlInfo info; - NNSG3dResNodeInfo nodeInfo; -} NNSG3dResMdl; - -typedef struct NNSG3dResDictMdlSetData_ { - u32 offset; -} NNSG3dResDictMdlSetData; - -typedef struct NNSG3dResMdlSet_ { - NNSG3dResDataBlockHeader header; - NNSG3dResDict dict; -} NNSG3dResMdlSet; - -#define NNS_G3D_SBC_NOP 0x00 -#define NNS_G3D_SBC_RET 0x01 -#define NNS_G3D_SBC_NODE 0x02 -#define NNS_G3D_SBC_MTX 0x03 -#define NNS_G3D_SBC_MAT 0x04 -#define NNS_G3D_SBC_SHP 0x05 -#define NNS_G3D_SBC_NODEDESC 0x06 -#define NNS_G3D_SBC_BB 0x07 -#define NNS_G3D_SBC_BBY 0x08 -#define NNS_G3D_SBC_NODEMIX 0x09 -#define NNS_G3D_SBC_CALLDL 0x0a -#define NNS_G3D_SBC_POSSCALE 0x0b -#define NNS_G3D_SBC_ENVMAP 0x0c -#define NNS_G3D_SBC_PRJMAP 0x0d - -#define NNS_G3D_SBC_NOCMD 0x1f - -#define NNS_G3D_SBC_COMMAND_NUM 0x20 - -#define NNS_G3D_SBCFLG_000 0x00 -#define NNS_G3D_SBCFLG_001 0x20 -#define NNS_G3D_SBCFLG_010 0x40 -#define NNS_G3D_SBCFLG_011 0x60 -#define NNS_G3D_SBCFLG_100 0x80 -#define NNS_G3D_SBCFLG_101 0xa0 -#define NNS_G3D_SBCFLG_110 0xc0 -#define NNS_G3D_SBCFLG_111 0xe0 - -#define NNS_G3D_SBCCMD_MASK 0x1f -#define NNS_G3D_SBCFLG_MASK 0xe0 - -typedef enum { - NNS_G3D_SBC_NODEDESC_FLAG_MAYASSC_APPLY = 0x01, - NNS_G3D_SBC_NODEDESC_FLAG_MAYASSC_PARENT = 0x02 -} NNSG3dSbcNodeDescFlag; - -#define NNS_G3D_GET_SBCCMD(x) ((x) & NNS_G3D_SBCCMD_MASK) -#define NNS_G3D_GET_SBCFLG(x) ((u32)((x) & NNS_G3D_SBCFLG_MASK)) - -typedef struct NNSG3dResAnmHeader_ { - u8 category0; - u8 revision; - - u16 category1; -} NNSG3dResAnmHeader; - -typedef struct { - NNSG3dResAnmHeader anmHeader; - u16 numFrame; - u16 dummy_; -} NNSG3dResAnmCommon; - -typedef struct { - u32 offset; -} NNSG3dResDictAnmSetData; - -typedef struct { - NNSG3dResDataBlockHeader header; - NNSG3dResDict dict; -} NNSG3dResAnmSet; - -typedef struct NNSG3dResVisAnm_ { - NNSG3dResAnmHeader anmHeader; - u16 numFrame; - u16 numNode; - u16 size; - u16 dummy_; - - u32 visData[1]; -} NNSG3dResVisAnm; - -typedef NNSG3dResDictAnmSetData NNSG3dResDictVisAnmSetData; - -typedef NNSG3dResAnmSet NNSG3dResVisAnmSet; - -typedef enum { - NNS_G3D_MATCANM_ELEM_CONST = 0x20000000, - NNS_G3D_MATCANM_ELEM_STEP_1 = 0x00000000, - NNS_G3D_MATCANM_ELEM_STEP_2 = 0x40000000, - NNS_G3D_MATCANM_ELEM_STEP_4 = 0x80000000, - - NNS_G3D_MATCANM_ELEM_STEP_MASK = 0xc0000000, - NNS_G3D_MATCANM_ELEM_LAST_INTERP_MASK = 0x1fff0000, - NNS_G3D_MATCANM_ELEM_OFFSET_CONSTANT_MASK = 0x0000ffff, - - NNS_G3D_MATCANM_ELEM_OFFSET_CONSTANT_SHIFT = 0, - NNS_G3D_MATCANM_ELEM_LAST_INTERP_SHIFT = 16 -} NNSG3dMatCElem; - -typedef struct NNSG3dResDictMatCAnmData_ { - u32 diffuse; - u32 ambient; - u32 specular; - u32 emission; - u32 polygon_alpha; -} NNSG3dResDictMatCAnmData; - -typedef enum { - NNS_G3D_MATCANM_OPTION_INTERPOLATION = 0x0001, - NNS_G3D_MATCANM_OPTION_END_TO_START_INTERPOLATION = 0x0002 -} NNSG3dMatCAnmOption; - -typedef struct NNSG3dResMatCAnm_ { - NNSG3dResAnmHeader anmHeader; - u16 numFrame; - u16 flag; - NNSG3dResDict dict; -} NNSG3dResMatCAnm; - -typedef NNSG3dResDictAnmSetData NNSG3dResDictMatCAnmSetData; - -typedef NNSG3dResAnmSet NNSG3dResMatCAnmSet; - -typedef struct NNSG3dResTexPatAnmFV_ { - u16 idxFrame; - u8 idTex; - u8 idPltt; -} NNSG3dResTexPatAnmFV; - -typedef enum { - NNS_G3D_TEXPATANM_OPTION_NOPLTT = 0x0001 -} NNSG3dTexPatAnmOption; - -typedef struct NNSG3dResDictTexPatAnmData_ { - u16 numFV; - u16 flag; - fx16 ratioDataFrame; - u16 offset; -} NNSG3dResDictTexPatAnmData; - -typedef struct NNSG3dResTexPatAnm_ { - NNSG3dResAnmHeader anmHeader; - u16 numFrame; - u8 numTex; - u8 numPltt; - u16 ofsTexName; - u16 ofsPlttName; - NNSG3dResDict dict; -} NNSG3dResTexPatAnm; - -typedef NNSG3dResDictAnmSetData NNSG3dResDictTexPatAnmSetData; - -typedef NNSG3dResAnmSet NNSG3dResTexPatAnmSet; - -typedef enum { - NNS_G3D_TEXSRTANM_ELEM_FX16 = 0x10000000, - NNS_G3D_TEXSRTANM_ELEM_CONST = 0x20000000, - NNS_G3D_TEXSRTANM_ELEM_STEP_1 = 0x00000000, - NNS_G3D_TEXSRTANM_ELEM_STEP_2 = 0x40000000, - NNS_G3D_TEXSRTANM_ELEM_STEP_4 = 0x80000000, - - NNS_G3D_TEXSRTANM_ELEM_STEP_MASK = 0xc0000000, - NNS_G3D_TEXSRTANM_ELEM_LAST_INTERP_MASK = 0x0000ffff, - - NNS_G3D_TEXSRTANM_ELEM_LAST_INTERP_SHIFT = 0 -} NNSG3dTexSRTElem; - -typedef struct NNSG3dResDictTexSRTAnmData_ { - u32 scaleS; - u32 scaleSEx; - - u32 scaleT; - u32 scaleTEx; - - u32 rot; - u32 rotEx; - - u32 transS; - u32 transSEx; - - u32 transT; - u32 transTEx; -} NNSG3dResDictTexSRTAnmData; - -typedef enum NNSG3dTexSRTAnmOption_ { - NNS_G3D_TEXSRTANM_OPTION_INTERPOLATION = 0x01, - NNS_G3D_TEXSRTANM_OPTION_END_TO_START_INTERPOLATION = 0x02 -} NNSG3dTexSRTAnmOption; - -typedef struct NNSG3dResTexSRTAnm_ { - NNSG3dResAnmHeader anmHeader; - u16 numFrame; - u8 flag; - u8 texMtxMode; - NNSG3dResDict dict; -} NNSG3dResTexSRTAnm; - -typedef NNSG3dResDictAnmSetData NNSG3dResDictTexSRTAnmSetData; - -typedef NNSG3dResAnmSet NNSG3dResTexSRTAnmSet; - -typedef enum { - NNS_G3D_JNTANM_SRTINFO_IDENTITY = 0x00000001, - NNS_G3D_JNTANM_SRTINFO_IDENTITY_T = 0x00000002, - NNS_G3D_JNTANM_SRTINFO_BASE_T = 0x00000004, - NNS_G3D_JNTANM_SRTINFO_CONST_TX = 0x00000008, - NNS_G3D_JNTANM_SRTINFO_CONST_TY = 0x00000010, - NNS_G3D_JNTANM_SRTINFO_CONST_TZ = 0x00000020, - NNS_G3D_JNTANM_SRTINFO_IDENTITY_R = 0x00000040, - NNS_G3D_JNTANM_SRTINFO_BASE_R = 0x00000080, - NNS_G3D_JNTANM_SRTINFO_CONST_R = 0x00000100, - NNS_G3D_JNTANM_SRTINFO_IDENTITY_S = 0x00000200, - NNS_G3D_JNTANM_SRTINFO_BASE_S = 0x00000400, - NNS_G3D_JNTANM_SRTINFO_CONST_SX = 0x00000800, - NNS_G3D_JNTANM_SRTINFO_CONST_SY = 0x00001000, - NNS_G3D_JNTANM_SRTINFO_CONST_SZ = 0x00002000, - - NNS_G3D_JNTANM_SRTINFO_NODE_MASK = 0xff000000, - NNS_G3D_JNTANM_SRTINFO_NODE_SHIFT = 24 -} NNSG3dJntAnmSRTTag; - -typedef enum { - NNS_G3D_JNTANM_TINFO_STEP_1 = 0x00000000, - NNS_G3D_JNTANM_TINFO_STEP_2 = 0x40000000, - NNS_G3D_JNTANM_TINFO_STEP_4 = 0x80000000, - NNS_G3D_JNTANM_TINFO_FX16ARRAY = 0x20000000, - - NNS_G3D_JNTANM_TINFO_LAST_INTERP_MASK = 0x1fff0000, - NNS_G3D_JNTANM_TINFO_STEP_MASK = 0xc0000000, - - NNS_G3D_JNTANM_TINFO_LAST_INTERP_SHIFT = 16, - NNS_G3D_JNTANM_TINFO_STEP_SHIFT = 30 -} NNSG3dJntAnmTInfo; - -typedef enum { - NNS_G3D_JNTANM_RINFO_STEP_1 = 0x00000000, - NNS_G3D_JNTANM_RINFO_STEP_2 = 0x40000000, - NNS_G3D_JNTANM_RINFO_STEP_4 = 0x80000000, - - NNS_G3D_JNTANM_RINFO_LAST_INTERP_MASK = 0x1fff0000, - NNS_G3D_JNTANM_RINFO_STEP_MASK = 0xc0000000, - - NNS_G3D_JNTANM_RINFO_LAST_INTERP_SHIFT = 16, - NNS_G3D_JNTANM_RINFO_STEP_SHIFT = 30 -} NNSG3dJntAnmRInfo; - -typedef enum { - NNS_G3D_JNTANM_PIVOTINFO_IDXPIVOT_MASK = 0x000f, - NNS_G3D_JNTANM_PIVOTINFO_MINUS = 0x0010, - NNS_G3D_JNTANM_PIVOTINFO_SIGN_REVC = 0x0020, - NNS_G3D_JNTANM_PIVOTINFO_SIGN_REVD = 0x0040, - - NNS_G3D_JNTANM_PIVOT_INFO_IDXPIVOT_SHIFT = 0 -} NNSG3dJntAnmPivotInfo; - -typedef enum { - NNS_G3D_JNTANM_RIDX_PIVOT = 0x8000, - NNS_G3D_JNTANM_RIDX_IDXDATA_MASK = 0x7fff, - NNS_G3D_JNTANM_RIDX_IDXDATA_SHIFT = 0 -} NNSG3dJntAnmRIdx; - -typedef enum { - NNS_G3D_JNTANM_SINFO_STEP_1 = 0x00000000, - NNS_G3D_JNTANM_SINFO_STEP_2 = 0x40000000, - NNS_G3D_JNTANM_SINFO_STEP_4 = 0x80000000, - NNS_G3D_JNTANM_SINFO_FX16ARRAY = 0x20000000, - - NNS_G3D_JNTANM_SINFO_LAST_INTERP_MASK = 0x1fff0000, - NNS_G3D_JNTANM_SINFO_STEP_MASK = 0xc0000000, - - NNS_G3D_JNTANM_SINFO_LAST_INTERP_SHIFT = 16, - NNS_G3D_JNTANM_SINFO_STEP_SHIFT = 30 -} NNSG3dJntAnmSInfo; - -typedef struct NNSG3dResJntAnmSRTInfo_ { - u32 info; - u32 offset; -} NNSG3dResJntAnmSRTInfo; - -typedef struct NNSG3dResJntAnmSRTTag_ { - u32 tag; -} NNSG3dResJntAnmSRTTag; - -typedef enum { - NNS_G3D_JNTANM_OPTION_INTERPOLATION = 0x01, - NNS_G3D_JNTANM_OPTION_END_TO_START_INTERPOLATION = 0x02 -} NNSG3dJntAnmOption; - -typedef struct NNSG3dResJntAnm_ { - NNSG3dResAnmHeader anmHeader; - u16 numFrame; - u16 numNode; - u32 flag; - u32 ofsRot3; - u32 ofsRot5; -} NNSG3dResJntAnm; - -typedef NNSG3dResDictAnmSetData NNSG3dResDictJntAnmSetData; - -typedef NNSG3dResAnmSet NNSG3dResJntAnmSet; - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g3d/binres/res_struct_accessor.h b/subprojects/NitroSystem/include/nnsys/g3d/binres/res_struct_accessor.h deleted file mode 100644 index 830916402c..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g3d/binres/res_struct_accessor.h +++ /dev/null @@ -1,85 +0,0 @@ -#ifndef NNSG3D_BINRES_RES_STRUCT_ACCESSOR_H_ -#define NNSG3D_BINRES_RES_STRUCT_ACCESSOR_H_ - -#include - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -NNS_G3D_RES_INLINE const NNSG3dResName * NNS_G3dGetResNameByIdx(const NNSG3dResDict * dict, u32 idx); -NNS_G3D_RES_INLINE void * NNS_G3dGetResDataByIdx(const NNSG3dResDict * dict, u32 idx); - -void * NNS_G3dGetResDataByName(const NNSG3dResDict * dict, const NNSG3dResName * name); -int NNS_G3dGetResDictIdxByName(const NNSG3dResDict * dict, const NNSG3dResName * name); - -NNS_G3D_RES_INLINE const NNSG3dResName * NNS_G3dGetTexNameByIdx(const NNSG3dResTex * tex, u32 idx); -NNS_G3D_RES_INLINE int NNS_G3dGetTexIdxByName(const NNSG3dResTex * tex, - const NNSG3dResName * name); -NNS_G3D_RES_INLINE const NNSG3dResName * NNS_G3dGetPlttNameByIdx(const NNSG3dResTex * tex, u32 idx); -NNS_G3D_RES_INLINE int NNS_G3dGetPlttIdxByName(const NNSG3dResTex * tex, - const NNSG3dResName * name); - -NNS_G3D_RES_INLINE const NNSG3dResName * NNS_G3dGetNodeNameByIdx(const NNSG3dResNodeInfo * nodeinfo, u32 idx); -NNS_G3D_RES_INLINE int NNS_G3dGetNodeIdxByName(const NNSG3dResNodeInfo * nodeinfo, - const NNSG3dResName * name); - -NNS_G3D_RES_INLINE const NNSG3dResName * NNS_G3dGetMatNameByIdx(const NNSG3dResMat * mat, u32 idx); -NNS_G3D_RES_INLINE int NNS_G3dGetMatIdxByName(const NNSG3dResMat * mat, - const NNSG3dResName * name); - -NNS_G3D_RES_INLINE const NNSG3dResName * NNS_G3dGetShpNameByIdx(const NNSG3dResShp * shp, u32 idx); -NNS_G3D_RES_INLINE int NNS_G3dGetShpIdxByName(const NNSG3dResShp * shp, - const NNSG3dResName * name); - -NNS_G3D_RES_INLINE NNSG3dResMdlInfo * NNS_G3dGetMdlInfo(const NNSG3dResMdl * mdl); -NNS_G3D_RES_INLINE NNSG3dResNodeInfo * NNS_G3dGetNodeInfo(const NNSG3dResMdl * mdl); -NNS_G3D_RES_INLINE u8 * NNS_G3dGetSbc(const NNSG3dResMdl * mdl); -NNS_G3D_RES_INLINE NNSG3dResMat * NNS_G3dGetMat(const NNSG3dResMdl * mdl); -NNS_G3D_RES_INLINE NNSG3dResShp * NNS_G3dGetShp(const NNSG3dResMdl * mdl); - -NNS_G3D_RES_INLINE NNSG3dResMdl * NNS_G3dGetMdlByIdx(const NNSG3dResMdlSet * mdlSet, u32 idx); -NNS_G3D_RES_INLINE const NNSG3dResName * NNS_G3dGetMdlNameByIdx(const NNSG3dResMdlSet * mdlSet, u32 idx); -NNS_G3D_RES_INLINE NNSG3dResMdl * NNS_G3dGetMdlByName(const NNSG3dResMdlSet * mdlSet, - const NNSG3dResName * name); -NNS_G3D_RES_INLINE int NNS_G3dGetMdlIdxByName(const NNSG3dResMdlSet * mdlSet, - const NNSG3dResName * name); - -NNS_G3D_RES_INLINE NNSG3dResMdlSet * NNS_G3dCheckMdlSet(const NNSG3dResDataBlockHeader * dataBlkHeader); -NNS_G3D_RES_INLINE NNSG3dResTex * NNS_G3dCheckTex(const NNSG3dResDataBlockHeader * dataBlkHeader); - -NNSG3dResMdlSet * NNS_G3dGetMdlSet(const NNSG3dResFileHeader * header); -NNSG3dResTex * NNS_G3dGetTex(const NNSG3dResFileHeader * header); - -NNSG3dResDataBlockHeader * -NNS_G3dGetDataBlockHeaderByIdx(const NNSG3dResFileHeader * header, u32 idx); - -NNS_G3D_RES_INLINE NNSG3dResNodeData * NNS_G3dGetNodeDataByIdx(const NNSG3dResNodeInfo * info, u32 idx); -NNS_G3D_RES_INLINE NNSG3dResMatData * NNS_G3dGetMatDataByIdx(const NNSG3dResMat * mat, u32 idx); -NNS_G3D_RES_INLINE NNSG3dResShpData * NNS_G3dGetShpDataByIdx(const NNSG3dResShp * shp, u32 idx); -NNS_G3D_RES_INLINE NNSG3dResDictTexData * NNS_G3dGetTexDataByName(const NNSG3dResTex * tex, const NNSG3dResName * name); -NNS_G3D_RES_INLINE NNSG3dResDictTexData * NNS_G3dGetTexDataByIdx(const NNSG3dResTex * tex, u32 idx); -NNS_G3D_RES_INLINE NNSG3dResDictPlttData * NNS_G3dGetPlttDataByName(const NNSG3dResTex * tex, const NNSG3dResName * name); -NNS_G3D_RES_INLINE NNSG3dResDictPlttData * NNS_G3dGetPlttDataByIdx(const NNSG3dResTex * tex, u32 idx); - -NNS_G3D_RES_INLINE const void * NNS_G3dGetTexData(const NNSG3dResTex * tex); -NNS_G3D_RES_INLINE const void * NNS_G3dGetTex4x4Data(const NNSG3dResTex * tex); -NNS_G3D_RES_INLINE const void * NNS_G3dGetTex4x4PlttIdxData(const NNSG3dResTex * tex); -NNS_G3D_RES_INLINE const void * NNS_G3dGetPlttData(const NNSG3dResTex * tex); - -NNS_G3D_RES_INLINE const void * NNS_G3dGetShpDLPtr(const NNSG3dResShpData * shp); -NNS_G3D_RES_INLINE u32 NNS_G3dGetShpDLSize(const NNSG3dResShpData * shp); - -NNS_G3D_RES_INLINE BOOL NNS_G3dIsMatAnm(const void * pAnm); -NNS_G3D_RES_INLINE BOOL NNS_G3dIsJntAnm(const void * pAnm); -NNS_G3D_RES_INLINE BOOL NNS_G3dIsVisAnm(const void * pAnm); - -#ifdef __cplusplus -} -#endif - -#include - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g3d/binres/res_struct_accessor_anm.h b/subprojects/NitroSystem/include/nnsys/g3d/binres/res_struct_accessor_anm.h deleted file mode 100644 index 21d57935ec..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g3d/binres/res_struct_accessor_anm.h +++ /dev/null @@ -1,82 +0,0 @@ -#ifndef NNSG3D_BINRES_RES_STRUCT_ACCESSOR_ANM_H_ -#define NNSG3D_BINRES_RES_STRUCT_ACCESSOR_ANM_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -const void * -NNSi_G3dGetBinaryBlockFromFile -( - const u8 * pFileHead, - u32 fileSignature, - u32 blockSignature -); - -BOOL NNSi_G3dIsValidAnmRes(const void * pRes); -void * NNS_G3dGetAnmByIdx(const void * pRes, u32 idx); -void * NNS_G3dGetAnmByName(const void * pRes, const NNSG3dResName * pName); - -const NNSG3dResVisAnm * -NNS_G3dGetVisAnmByIdx(const NNSG3dResVisAnmSet * pAnmSet, u8 idx); - -const NNSG3dResVisAnmSet * -NNS_G3dGetVisAnmSet(const u8 * pFileHead); - -const NNSG3dResName * -NNSi_G3dGetTexPatAnmTexNameByIdx(const NNSG3dResTexPatAnm * pPatAnm, u8 texIdx); - -const NNSG3dResName * -NNSi_G3dGetTexPatAnmPlttNameByIdx(const NNSG3dResTexPatAnm * pPatAnm, u8 plttIdx); - -const NNSG3dResTexPatAnmFV * -NNSi_G3dGetTexPatAnmFVByFVIndex(const NNSG3dResTexPatAnm * pPatAnm, u32 idx, u32 fvIdx); - -const NNSG3dResTexPatAnmFV * -NNSi_G3dGetTexPatAnmFV(const NNSG3dResTexPatAnm * pPatAnm, u32 idx, u32 frame); - -const NNSG3dResDictTexPatAnmData * -NNSi_G3dGetTexPatAnmDataByIdx(const NNSG3dResTexPatAnm * pPatAnm, u32 idx); - -const NNSG3dResTexPatAnm * -NNS_G3dGetTexPatAnmByIdx(const NNSG3dResTexPatAnmSet * pAnmSet, u8 idx); - -const NNSG3dResTexPatAnmSet * -NNS_G3dGetTexPatAnmSet(const u8 * pFileHead); - -const NNSG3dResTexSRTAnm * -NNS_G3dGetTexSRTAnmByIdx(const NNSG3dResTexSRTAnmSet * pTexSRTSet, u8 idx); - -const NNSG3dResTexSRTAnmSet * -NNS_G3dGetTexSRTAnmSet(const u8 * pFileHead); - -const NNSG3dResMatCAnm * -NNS_G3dGetMatCAnmByIdx(const NNSG3dResMatCAnmSet * pAnmSet, u8 idx); - -const NNSG3dResMatCAnmSet * -NNS_G3dGetMatCAnmSet(const u8 * pFileHead); - -const NNSG3dResJntAnmSRTTag * -NNS_G3dGetJntAnmSRTTag -( - const NNSG3dResJntAnm * pJntAnm, - int nodeIdx -); - -const NNSG3dResJntAnm * -NNS_G3dGetJntAnmByIdx -( - const NNSG3dResJntAnmSet * pJntAnmSet, - int idx -); - -const NNSG3dResJntAnmSet * -NNS_G3dGetJntAnmSet(const u8 * pFileHead); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g3d/binres/res_struct_accessor_inline.h b/subprojects/NitroSystem/include/nnsys/g3d/binres/res_struct_accessor_inline.h deleted file mode 100644 index c5dbc787fa..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g3d/binres/res_struct_accessor_inline.h +++ /dev/null @@ -1,438 +0,0 @@ -#ifndef NNSG3D_BINRES_RES_STRUCT_ACCESSOR_INLINE_H_ -#define NNSG3D_BINRES_RES_STRUCT_ACCESSOR_INLINE_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -NNS_G3D_RES_INLINE const NNSG3dResName * NNS_G3dGetResNameByIdx (const NNSG3dResDict * dict, u32 idx) -{ - NNSG3dResDictEntryHeader * hdr; - NNS_G3D_NULL_ASSERT(dict); - - if (dict != NULL && idx < dict->numEntry) { - NNS_G3D_ASSERT(dict->ofsEntry != 0); - hdr = (NNSG3dResDictEntryHeader *)((u8 *)dict + dict->ofsEntry); - return (NNSG3dResName *)((u8 *)hdr + - hdr->ofsName + - sizeof(NNSG3dResName) * idx); - } else { - return NULL; - } -} - -NNS_G3D_RES_INLINE void * NNS_G3dGetResDataByIdx (const NNSG3dResDict * dict, u32 idx) -{ - NNSG3dResDictEntryHeader * hdr; - NNS_G3D_NULL_ASSERT(dict); - - if (dict != NULL && idx < dict->numEntry) { - NNS_G3D_ASSERT(dict->ofsEntry != 0); - hdr = (NNSG3dResDictEntryHeader *)((u8 *)dict + dict->ofsEntry); - return (void *)(&hdr->data[0] + hdr->sizeUnit * idx); - } else { - return NULL; - } -} - -NNS_G3D_RES_INLINE const NNSG3dResName * NNS_G3dGetTexNameByIdx (const NNSG3dResTex * tex, u32 idx) -{ - NNS_G3D_NULL_ASSERT(tex); - - if (tex) { - return NNS_G3dGetResNameByIdx(&tex->dict, idx); - } else { - return NULL; - } -} - -NNS_G3D_RES_INLINE int NNS_G3dGetTexIdxByName (const NNSG3dResTex * tex, const NNSG3dResName * name) -{ - NNS_G3D_NULL_ASSERT(tex); - - if (tex) { - return NNS_G3dGetResDictIdxByName(&tex->dict, name); - } else { - return -1; - } -} - -NNS_G3D_RES_INLINE const NNSG3dResName * NNS_G3dGetPlttNameByIdx (const NNSG3dResTex * tex, u32 idx) -{ - const NNSG3dResDict * dict; - NNS_G3D_NULL_ASSERT(tex); - - NNS_G3D_ASSERT(tex->plttInfo.ofsDict != 0); - - if (tex && tex->plttInfo.ofsDict != 0) { - dict = (const NNSG3dResDict *)((u8 *)tex + tex->plttInfo.ofsDict); - return NNS_G3dGetResNameByIdx(dict, idx); - } else { - return NULL; - } -} - -NNS_G3D_RES_INLINE int NNS_G3dGetPlttIdxByName (const NNSG3dResTex * tex, const NNSG3dResName * name) -{ - const NNSG3dResDict * dict; - NNS_G3D_NULL_ASSERT(tex); - - NNS_G3D_ASSERT(tex->plttInfo.ofsDict != 0); - - if (tex && tex->plttInfo.ofsDict != 0) { - dict = (const NNSG3dResDict *)((u8 *)tex + tex->plttInfo.ofsDict); - return NNS_G3dGetResDictIdxByName(dict, name); - } else { - return -1; - } -} - -NNS_G3D_RES_INLINE const NNSG3dResName * NNS_G3dGetNodeNameByIdx (const NNSG3dResNodeInfo * nodeinfo, u32 idx) -{ - NNS_G3D_NULL_ASSERT(nodeinfo); - - if (nodeinfo) { - return NNS_G3dGetResNameByIdx(&nodeinfo->dict, idx); - } else { - return NULL; - } -} - -NNS_G3D_RES_INLINE int NNS_G3dGetNodeIdxByName (const NNSG3dResNodeInfo * nodeinfo, const NNSG3dResName * name) -{ - NNS_G3D_NULL_ASSERT(nodeinfo); - - if (nodeinfo) { - return NNS_G3dGetResDictIdxByName(&nodeinfo->dict, name); - } else { - return -1; - } -} - -NNS_G3D_RES_INLINE const NNSG3dResName * NNS_G3dGetMatNameByIdx (const NNSG3dResMat * mat, u32 idx) -{ - NNS_G3D_NULL_ASSERT(mat); - - if (mat) { - return NNS_G3dGetResNameByIdx(&mat->dict, idx); - } else { - return NULL; - } -} - -NNS_G3D_RES_INLINE int NNS_G3dGetMatIdxByName (const NNSG3dResMat * mat, const NNSG3dResName * name) -{ - NNS_G3D_NULL_ASSERT(mat); - - if (mat) { - return NNS_G3dGetResDictIdxByName(&mat->dict, name); - } else { - return -1; - } -} - -NNS_G3D_RES_INLINE const NNSG3dResName * NNS_G3dGetShpNameByIdx (const NNSG3dResShp * shp, u32 idx) -{ - NNS_G3D_NULL_ASSERT(shp); - - if (shp) { - return NNS_G3dGetResNameByIdx(&shp->dict, idx); - } else { - return NULL; - } -} - -NNS_G3D_RES_INLINE int NNS_G3dGetShpIdxByName (const NNSG3dResShp * shp, const NNSG3dResName * name) -{ - NNS_G3D_NULL_ASSERT(shp); - - if (shp) { - return NNS_G3dGetResDictIdxByName(&shp->dict, name); - } else { - return -1; - } -} - -NNS_G3D_RES_INLINE NNSG3dResMdlInfo * NNS_G3dGetMdlInfo (const NNSG3dResMdl * mdl) -{ - NNS_G3D_NULL_ASSERT(mdl); - - if (mdl) { - return (NNSG3dResMdlInfo *)&mdl->info; - } else { - return NULL; - } -} - -NNS_G3D_RES_INLINE NNSG3dResNodeInfo * NNS_G3dGetNodeInfo (const NNSG3dResMdl * mdl) -{ - NNS_G3D_NULL_ASSERT(mdl); - - if (mdl) { - return (NNSG3dResNodeInfo *)&mdl->nodeInfo; - } else { - return NULL; - } -} - -NNS_G3D_RES_INLINE u8 * NNS_G3dGetSbc (const NNSG3dResMdl * mdl) -{ - NNS_G3D_NULL_ASSERT(mdl); - - if (mdl && mdl->ofsSbc != 0) { - return (u8 *)((u8 *)mdl + mdl->ofsSbc); - } else { - return NULL; - } -} - -NNS_G3D_RES_INLINE NNSG3dResMat * NNS_G3dGetMat (const NNSG3dResMdl * mdl) -{ - NNS_G3D_NULL_ASSERT(mdl); - NNS_G3D_ASSERT(mdl->ofsMat != 0); - - if (mdl && mdl->ofsMat != 0) { - return (NNSG3dResMat *)((u8 *)mdl + mdl->ofsMat); - } else { - return NULL; - } -} - -NNS_G3D_RES_INLINE NNSG3dResShp * NNS_G3dGetShp (const NNSG3dResMdl * mdl) -{ - NNS_G3D_NULL_ASSERT(mdl); - NNS_G3D_ASSERT(mdl->ofsShp != 0); - - if (mdl && mdl->ofsShp != 0) { - return (NNSG3dResShp *)((u8 *)mdl + mdl->ofsShp); - } else { - return NULL; - } -} - -NNS_G3D_RES_INLINE NNSG3dResMdl * NNS_G3dGetMdlByIdx (const NNSG3dResMdlSet * mdlSet, u32 idx) -{ - NNSG3dResDictMdlSetData * data; - NNS_G3D_NULL_ASSERT(mdlSet); - - if (mdlSet) { - data = (NNSG3dResDictMdlSetData *)NNS_G3dGetResDataByIdx(&mdlSet->dict, idx); - if (data) { - NNS_G3D_ASSERT(data->offset != 0); - return (NNSG3dResMdl *)((u8 *)mdlSet + data->offset); - } - } - return NULL; -} - -NNS_G3D_RES_INLINE const NNSG3dResName * NNS_G3dGetMdlNameByIdx (const NNSG3dResMdlSet * mdlSet, u32 idx) -{ - NNS_G3D_NULL_ASSERT(mdlSet); - - if (mdlSet) { - return NNS_G3dGetResNameByIdx(&mdlSet->dict, idx); - } else { - return NULL; - } -} - -NNS_G3D_RES_INLINE NNSG3dResMdl * NNS_G3dGetMdlByName (const NNSG3dResMdlSet * mdlSet, const NNSG3dResName * name) -{ - NNSG3dResDictMdlSetData * data; - NNS_G3D_NULL_ASSERT(mdlSet); - - if (mdlSet) { - data = (NNSG3dResDictMdlSetData *)NNS_G3dGetResDataByName(&mdlSet->dict, name); - if (data) { - NNS_G3D_ASSERT(data->offset != 0); - return (NNSG3dResMdl *)((u8 *)mdlSet + data->offset); - } - } - - return NULL; -} - -NNS_G3D_RES_INLINE int NNS_G3dGetMdlIdxByName (const NNSG3dResMdlSet * mdlSet, const NNSG3dResName * name) -{ - NNS_G3D_NULL_ASSERT(mdlSet); - - if (mdlSet) { - return NNS_G3dGetResDictIdxByName(&mdlSet->dict, name); - } else { - return -1; - } -} - -NNS_G3D_RES_INLINE NNSG3dResMdlSet * NNS_G3dCheckMdlSet (const NNSG3dResDataBlockHeader * dataBlkHeader) -{ - NNS_G3D_NULL_ASSERT(dataBlkHeader); - - if (dataBlkHeader->kind == NNS_G3D_DATABLK_MDLSET) { - return (NNSG3dResMdlSet *)dataBlkHeader; - } else { - return NULL; - } -} - -NNS_G3D_RES_INLINE NNSG3dResTex * NNS_G3dCheckTex (const NNSG3dResDataBlockHeader * dataBlkHeader) -{ - NNS_G3D_NULL_ASSERT(dataBlkHeader); - - if (dataBlkHeader->kind == NNS_G3D_DATABLK_TEX) { - return (NNSG3dResTex *)dataBlkHeader; - } else { - return NULL; - } -} - -NNS_G3D_RES_INLINE NNSG3dResNodeData * NNS_G3dGetNodeDataByIdx (const NNSG3dResNodeInfo * info, u32 idx) -{ - NNSG3dResDictNodeData * data; - NNS_G3D_NULL_ASSERT(info); - - if (info) { - data = (NNSG3dResDictNodeData *)NNS_G3dGetResDataByIdx(&info->dict, idx); - if (data) { - NNS_G3D_ASSERT(data->offset != 0); - return (NNSG3dResNodeData *)((u8 *)info + data->offset); - } - } - - return NULL; -} - -NNS_G3D_RES_INLINE NNSG3dResMatData * NNS_G3dGetMatDataByIdx (const NNSG3dResMat * mat, u32 idx) -{ - NNSG3dResDictMatData * data; - NNS_G3D_NULL_ASSERT(mat); - - if (mat) { - data = (NNSG3dResDictMatData *)NNS_G3dGetResDataByIdx(&mat->dict, idx); - if (data) { - NNS_G3D_ASSERT(data->offset != 0); - return (NNSG3dResMatData *)((u8 *)mat + data->offset); - } - } - - return NULL; -} - -NNS_G3D_RES_INLINE NNSG3dResShpData * NNS_G3dGetShpDataByIdx (const NNSG3dResShp * shp, u32 idx) -{ - NNSG3dResDictShpData * data; - NNS_G3D_NULL_ASSERT(shp); - - if (shp) { - data = (NNSG3dResDictShpData *)NNS_G3dGetResDataByIdx(&shp->dict, idx); - if (data) { - NNS_G3D_ASSERT(data->offset != 0); - return (NNSG3dResShpData *)((u8 *)shp + data->offset); - } - } - - return NULL; -} - -NNS_G3D_RES_INLINE NNSG3dResDictTexData * NNS_G3dGetTexDataByName (const NNSG3dResTex * tex, const NNSG3dResName * name) -{ - NNS_G3D_NULL_ASSERT(tex); - - if (tex) { - return (NNSG3dResDictTexData *)NNS_G3dGetResDataByName(&tex->dict, name); - } else { - return NULL; - } -} - -NNS_G3D_RES_INLINE NNSG3dResDictTexData * NNS_G3dGetTexDataByIdx (const NNSG3dResTex * tex, u32 idx) -{ - NNS_G3D_NULL_ASSERT(tex); - - if (tex) { - return (NNSG3dResDictTexData *)NNS_G3dGetResDataByIdx(&tex->dict, idx); - } else { - return NULL; - } -} - -NNS_G3D_RES_INLINE NNSG3dResDictPlttData * NNS_G3dGetPlttDataByName (const NNSG3dResTex * tex, const NNSG3dResName * name) -{ - NNSG3dResDict * dict; - NNS_G3D_NULL_ASSERT(tex); - NNS_G3D_ASSERT(tex->plttInfo.ofsDict != 0); - - if (tex && tex->plttInfo.ofsDict != 0) { - dict = (NNSG3dResDict *)((u8 *)tex + tex->plttInfo.ofsDict); - return (NNSG3dResDictPlttData *)NNS_G3dGetResDataByName(dict, name); - } else { - return NULL; - } -} - -NNS_G3D_RES_INLINE NNSG3dResDictPlttData * NNS_G3dGetPlttDataByIdx (const NNSG3dResTex * tex, u32 idx) -{ - NNSG3dResDict * dict; - NNS_G3D_NULL_ASSERT(tex); - NNS_G3D_ASSERT(tex->plttInfo.ofsDict != 0); - - if (tex && tex->plttInfo.ofsDict != 0) { - dict = (NNSG3dResDict *)((u8 *)tex + tex->plttInfo.ofsDict); - return (NNSG3dResDictPlttData *)NNS_G3dGetResDataByIdx(dict, idx); - } else { - return NULL; - } -} - -NNS_G3D_RES_INLINE const void * NNS_G3dGetTexData (const NNSG3dResTex * tex) -{ - return (u8 *)tex + tex->texInfo.ofsTex; -} - -NNS_G3D_RES_INLINE const void * NNS_G3dGetTex4x4Data (const NNSG3dResTex * tex) -{ - return (u8 *)tex + tex->tex4x4Info.ofsTex; -} - -NNS_G3D_RES_INLINE const void * NNS_G3dGetTex4x4PlttIdxData (const NNSG3dResTex * tex) -{ - return (u8 *)tex + tex->tex4x4Info.ofsTexPlttIdx; -} - -NNS_G3D_RES_INLINE const void * NNS_G3dGetPlttData (const NNSG3dResTex * tex) -{ - return (u8 *)tex + tex->plttInfo.ofsPlttData; -} - -NNS_G3D_RES_INLINE const void * NNS_G3dGetShpDLPtr (const NNSG3dResShpData * shp) -{ - return (u8 *)shp + shp->ofsDL; -} - -NNS_G3D_RES_INLINE u32 NNS_G3dGetShpDLSize (const NNSG3dResShpData * shp) -{ - return shp->sizeDL; -} - -NNS_G3D_RES_INLINE BOOL NNS_G3dIsMatAnm (const void * pAnm) -{ - const NNSG3dResAnmHeader * hdr = (const NNSG3dResAnmHeader *)pAnm; - return hdr != NULL && hdr->category0 == 'M'; -} - -NNS_G3D_RES_INLINE BOOL NNS_G3dIsJntAnm (const void * pAnm) -{ - const NNSG3dResAnmHeader * hdr = (const NNSG3dResAnmHeader *)pAnm; - return hdr != NULL && hdr->category0 == 'J'; -} - -NNS_G3D_RES_INLINE BOOL NNS_G3dIsVisAnm (const void * pAnm) -{ - const NNSG3dResAnmHeader * hdr = (const NNSG3dResAnmHeader *)pAnm; - return hdr != NULL && hdr->category0 == 'V'; -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g3d/cgtool.h b/subprojects/NitroSystem/include/nnsys/g3d/cgtool.h deleted file mode 100644 index fa7af0017e..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g3d/cgtool.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef NNSG3D_CGTOOL_H_ -#define NNSG3D_CGTOOL_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef void (* NNSG3dGetJointScale)(NNSG3dJntAnmResult * pResult, - const fx32 * p, - const u8 * cmd, - u32 srtflag); - -typedef void (* NNSG3dSendJointSRT)(const NNSG3dJntAnmResult *); - -typedef void (* NNSG3dSendTexSRT)(const NNSG3dMatAnmResult *); - -extern NNSG3dGetJointScale NNS_G3dGetJointScale_FuncArray[NNS_G3D_FUNC_SENDJOINTSRT_MAX]; -extern NNSG3dSendJointSRT NNS_G3dSendJointSRT_FuncArray[NNS_G3D_FUNC_SENDJOINTSRT_MAX]; - -extern NNSG3dSendTexSRT NNS_G3dSendTexSRT_FuncArray[NNS_G3D_FUNC_SENDTEXSRT_MAX]; - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g3d/cgtool/3dsmax.h b/subprojects/NitroSystem/include/nnsys/g3d/cgtool/3dsmax.h deleted file mode 100644 index d67f6be0e3..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g3d/cgtool/3dsmax.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef NNSG3D_CGTOOL_3DMAX_H_ -#define NNSG3D_CGTOOL_3DMAX_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef NNS_G3D_3DSMAX_DISABLE -void NNSi_G3dSendTexSRT3dsMax(const NNSG3dMatAnmResult * anm); -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g3d/cgtool/basic.h b/subprojects/NitroSystem/include/nnsys/g3d/cgtool/basic.h deleted file mode 100644 index 08a91f7211..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g3d/cgtool/basic.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef NNSG3D_CGTOOL_BASIC_H_ -#define NNSG3D_CGTOOL_BASIC_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -void NNSi_G3dSendJointSRTBasic(const NNSG3dJntAnmResult * result); -void NNSi_G3dGetJointScaleBasic(NNSG3dJntAnmResult * pResult, - const fx32 * p, - const u8 * cmd, - u32 srtflag); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g3d/cgtool/maya.h b/subprojects/NitroSystem/include/nnsys/g3d/cgtool/maya.h deleted file mode 100644 index 0a72583c4b..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g3d/cgtool/maya.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef NNSG3D_CGTOOL_MAYA_H_ -#define NNSG3D_CGTOOL_MAYA_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef NNS_G3D_MAYA_DISABLE -void NNSi_G3dSendJointSRTMaya(const NNSG3dJntAnmResult * result); -void NNSi_G3dGetJointScaleMaya(NNSG3dJntAnmResult * pResult, - const fx32 * p, - const u8 * cmd, - u32 srtflag); -void NNSi_G3dSendTexSRTMaya(const NNSG3dMatAnmResult * anm); -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g3d/cgtool/si3d.h b/subprojects/NitroSystem/include/nnsys/g3d/cgtool/si3d.h deleted file mode 100644 index febfde22b4..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g3d/cgtool/si3d.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef NNSG3D_CGTOOL_SI3D_H_ -#define NNSG3D_CGTOOL_SI3D_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef NNS_G3D_SI3D_DISABLE -void NNSi_G3dSendJointSRTSi3d(const NNSG3dJntAnmResult * result); -void NNSi_G3dGetJointScaleSi3d(NNSG3dJntAnmResult * pResult, - const fx32 * p, - const u8 * cmd, - u32 srtflag); -void NNSi_G3dSendTexSRTSi3d(const NNSG3dMatAnmResult * anm); -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g3d/cgtool/xsi.h b/subprojects/NitroSystem/include/nnsys/g3d/cgtool/xsi.h deleted file mode 100644 index b0929be7c7..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g3d/cgtool/xsi.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef NNSG3D_CGTOOL_XSI_H_ -#define NNSG3D_CGTOOL_XSI_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef NNS_G3D_XSI_DISABLE -void NNSi_G3dSendTexSRTXsi(const NNSG3dMatAnmResult * anm); -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g3d/config.h b/subprojects/NitroSystem/include/nnsys/g3d/config.h deleted file mode 100644 index 78ad2f8592..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g3d/config.h +++ /dev/null @@ -1,85 +0,0 @@ -#ifndef NNSG3D_CONFIG_H_ -#define NNSG3D_CONFIG_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#define NNS_G3D_INLINE NNS_INLINE - -#ifndef NNS_G3D_ANMFMT_MAX -#define NNS_G3D_ANMFMT_MAX 10 -#endif - -#ifndef NNS_G3D_SIZE_JNT_MAX -#define NNS_G3D_SIZE_JNT_MAX 64 -#endif - -#ifndef NNS_G3D_SIZE_MAT_MAX -#define NNS_G3D_SIZE_MAT_MAX 64 -#endif - -#ifndef NNS_G3D_SIZE_SHP_MAX -#define NNS_G3D_SIZE_SHP_MAX 64 -#endif - -#ifndef NNS_G3D_SIZE_COMBUFFER -#define NNS_G3D_SIZE_COMBUFFER 192 -#endif - -#ifndef NNS_G3D_SIZE_SHP_VTBL_NUM -#define NNS_G3D_SIZE_SHP_VTBL_NUM 4 -#endif - -#ifndef NNS_G3D_SIZE_MAT_VTBL_NUM -#define NNS_G3D_SIZE_MAT_VTBL_NUM 4 -#endif - -#ifndef NNS_G3D_FUNC_SENDJOINTSRT_MAX -#define NNS_G3D_FUNC_SENDJOINTSRT_MAX 3 -#endif - -#ifndef NNS_G3D_FUNC_SENDTEXSRT_MAX -#define NNS_G3D_FUNC_SENDTEXSRT_MAX 4 -#endif - -#ifndef NNS_G3D_USE_EVPCACHE -#define NNS_G3D_USE_EVPCACHE 1 -#endif - -#if defined(NNS_G3D_MAYA_DISABLE) && defined(NNS_G3D_SI3D_DISABLE) && \ - defined(NNS_G3D_3DSMAX_DISABLE) && defined(NNS_G3D_XSI_DISABLE) -#error You cannot disable all of the CG tools for G3D. -#endif - -#if (NNS_G3D_FUNC_SENDJOINTSRT_MAX < 3) -#error NNS_G3D_FUNC_SENDJOINTSRT_MAX must be 3 or above. -#endif - -#if (NNS_G3D_FUNC_SENDTEXSRT_MAX < 2) -#error NNS_G3D_FUNC_SENDTEXSRT_MAX must be 2 or above. -#endif - -#if !defined(NNS_FROM_TOOL) -#include -#define NNS_G3D_ASSERTMSG SDK_ASSERTMSG -#define NNS_G3D_ASSERT SDK_ASSERT -#define NNS_G3D_NULL_ASSERT SDK_NULL_ASSERT -#define NNS_G3D_WARNING SDK_WARNING - -#else - -#include -#include -#define NNS_G3D_ASSERTMSG(x, y) assert((x)) -#define NNS_G3D_ASSERT(x) assert((x)) -#define NNS_G3D_NULL_ASSERT(x) assert(NULL != (x)) - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g3d/gecom.h b/subprojects/NitroSystem/include/nnsys/g3d/gecom.h deleted file mode 100644 index 9c8b1170ff..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g3d/gecom.h +++ /dev/null @@ -1,101 +0,0 @@ -#ifndef NNSG3D_GECOM_H_ -#define NNSG3D_GECOM_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct NNSG3dGeBuffer_ { - u32 idx; - - u32 data[NNS_G3D_SIZE_COMBUFFER]; -} NNSG3dGeBuffer; - -NNS_G3D_INLINE void NNS_G3dGeBufferData_N(const u32 * args, u32 num); -NNS_G3D_INLINE void NNS_G3dGeMtxMode(GXMtxMode mode); -NNS_G3D_INLINE void NNS_G3dGePushMtx(void); -NNS_G3D_INLINE void NNS_G3dGePopMtx(int num); -NNS_G3D_INLINE void NNS_G3dGeStoreMtx(int num); -NNS_G3D_INLINE void NNS_G3dGeRestoreMtx(int num); -NNS_G3D_INLINE void NNS_G3dGeIdentity(void); -NNS_G3D_INLINE void NNS_G3dGeScaleVec(const VecFx32 * vec); -NNS_G3D_INLINE void NNS_G3dGeScale(fx32 x, fx32 y, fx32 z); -NNS_G3D_INLINE void NNS_G3dGeTranslateVec(const VecFx32 * vec); -NNS_G3D_INLINE void NNS_G3dGeTranslate(fx32 x, fx32 y, fx32 z); -NNS_G3D_INLINE void NNS_G3dGeColor(GXRgb rgb); -NNS_G3D_INLINE void NNS_G3dGeNormal(fx16 x, fx16 y, fx16 z); -NNS_G3D_INLINE void NNS_G3dGeTexCoord(fx32 s, fx32 t); -NNS_G3D_INLINE void NNS_G3dGeVtx(fx16 x, fx16 y, fx16 z); -NNS_G3D_INLINE void NNS_G3dGeVtx10(fx16 x, fx16 y, fx16 z); -NNS_G3D_INLINE void NNS_G3dGeVtxXY(fx16 x, fx16 y); -NNS_G3D_INLINE void NNS_G3dGeVtxXZ(fx16 x, fx16 z); -NNS_G3D_INLINE void NNS_G3dGeVtxYZ(fx16 y, fx16 z); -NNS_G3D_INLINE void NNS_G3dGeVtxDiff(fx16 x, fx16 y, fx16 z); -NNS_G3D_INLINE void NNS_G3dGePolygonAttr( - int light, - GXPolygonMode polyMode, - GXCull cullMode, - int polygonID, - int alpha, - int misc -); -NNS_G3D_INLINE void NNS_G3dGeTexImageParam( - GXTexFmt texFmt, - GXTexGen texGen, - GXTexSizeS s, - GXTexSizeT t, - GXTexRepeat repeat, - GXTexFlip flip, - GXTexPlttColor0 pltt0, - u32 addr -); -NNS_G3D_INLINE void NNS_G3dGeTexPlttBase(u32 addr, GXTexFmt texfmt); -NNS_G3D_INLINE void NNS_G3dGeMaterialColorDiffAmb( - GXRgb diffuse, - GXRgb ambient, - BOOL IsSetVtxColor); -NNS_G3D_INLINE void NNS_G3dGeMaterialColorSpecEmi( - GXRgb specular, - GXRgb emission, - BOOL IsShininess); -NNS_G3D_INLINE void NNS_G3dGeLightVector( - GXLightId lightID, - fx16 x, - fx16 y, - fx16 z); -NNS_G3D_INLINE void NNS_G3dGeLightColor(GXLightId lightID, GXRgb rgb); -NNS_G3D_INLINE void NNS_G3dGeBegin(GXBegin primitive); -NNS_G3D_INLINE void NNS_G3dGeEnd(void); -NNS_G3D_INLINE void NNS_G3dGeViewPort(int x1, int y1, int x2, int y2); -NNS_G3D_INLINE void NNS_G3dGeBoxTest(const GXBoxTestParam * box); -NNS_G3D_INLINE void NNS_G3dGePositionTest(fx16 x, fx16 y, fx16 z); -NNS_G3D_INLINE void NNS_G3dGeVectorTest(fx16 x, fx16 y, fx16 z); - -NNS_G3D_INLINE void NNS_G3dGeLoadMtx44(const MtxFx44 * m); -NNS_G3D_INLINE void NNS_G3dGeLoadMtx43(const MtxFx43 * m); -NNS_G3D_INLINE void NNS_G3dGeMultMtx44(const MtxFx44 * m); -NNS_G3D_INLINE void NNS_G3dGeMultMtx43(const MtxFx43 * m); -NNS_G3D_INLINE void NNS_G3dGeMultMtx33(const MtxFx33 * m); -NNS_G3D_INLINE void NNS_G3dGeShininess(const u32 * table); - -BOOL NNS_G3dGeIsSendDLBusy(void); -BOOL NNS_G3dGeIsBufferExist(void); -BOOL NNS_G3dGeIsImmOK(void); -BOOL NNS_G3dGeIsBufferOK(u32 numWord); -void NNS_G3dGeWaitSendDL(void); -void NNS_G3dGeSetBuffer(NNSG3dGeBuffer * p); -NNSG3dGeBuffer * NNS_G3dGeReleaseBuffer(void); -void NNS_G3dGeFlushBuffer(void); -void NNS_G3dGeSendDL(const void * src, u32 szByte); -void NNS_G3dGeBufferOP_N(u32 op, const u32 * args, u32 num); -void NNS_G3dGeUseFastDma(BOOL cond); - -#ifdef __cplusplus -} -#endif - -#include - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g3d/gecom_inline.h b/subprojects/NitroSystem/include/nnsys/g3d/gecom_inline.h deleted file mode 100644 index d11e4f3fbd..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g3d/gecom_inline.h +++ /dev/null @@ -1,422 +0,0 @@ -#ifndef NNSG3D_GECOM_INLINE_H_ -#define NNSG3D_GECOM_INLINE_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -NNS_G3D_INLINE void NNS_G3dGeBufferData_N (const u32 * args, u32 num) -{ - NNS_G3D_ASSERT(args && num > 0); - NNS_G3dGeBufferOP_N(*args, args + 1, num - 1); -} - -NNS_G3D_INLINE void NNS_G3dGeMtxMode (GXMtxMode mode) -{ - GX_MTXMODE_ASSERT(mode); - NNS_G3dGeBufferOP_N(G3OP_MTX_MODE, (u32 *)&mode, G3OP_MTX_MODE_NPARAMS); -} - -NNS_G3D_INLINE void NNS_G3dGePushMtx (void) -{ - NNS_G3dGeBufferOP_N(G3OP_MTX_PUSH, NULL, G3OP_MTX_PUSH_NPARAMS); -} - -NNS_G3D_INLINE void NNS_G3dGePopMtx (int num) -{ - GX_MTX_POP_NUM_ASSERT(num); - NNS_G3dGeBufferOP_N(G3OP_MTX_POP, (u32 *)&num, G3OP_MTX_POP_NPARAMS); -} - -NNS_G3D_INLINE void NNS_G3dGeStoreMtx (int num) -{ - GX_MTX_STORE_NUM_ASSERT(num); - NNS_G3dGeBufferOP_N(G3OP_MTX_STORE, (u32 *)&num, G3OP_MTX_STORE_NPARAMS); -} - -NNS_G3D_INLINE void NNS_G3dGeRestoreMtx (int num) -{ - GX_MTX_RESTORE_NUM_ASSERT(num); - NNS_G3dGeBufferOP_N(G3OP_MTX_RESTORE, (u32 *)&num, G3OP_MTX_RESTORE_NPARAMS); -} - -NNS_G3D_INLINE void NNS_G3dGeIdentity (void) -{ - NNS_G3dGeBufferOP_N(G3OP_MTX_IDENTITY, NULL, G3OP_MTX_IDENTITY_NPARAMS); -} - -NNS_G3D_INLINE void NNS_G3dGeScaleVec (const VecFx32 * vec) -{ - NNS_G3D_NULL_ASSERT(vec); - NNS_G3dGeBufferOP_N(G3OP_MTX_SCALE, (u32 *)vec, G3OP_MTX_SCALE_NPARAMS); -} - -NNS_G3D_INLINE void NNS_G3dGeScale (fx32 x, fx32 y, fx32 z) -{ - VecFx32 vec; - vec.x = x; - vec.y = y; - vec.z = z; - NNS_G3dGeBufferOP_N(G3OP_MTX_SCALE, (u32 *)&vec, G3OP_MTX_SCALE_NPARAMS); -} - -NNS_G3D_INLINE void NNS_G3dGeTranslateVec (const VecFx32 * vec) -{ - NNS_G3D_NULL_ASSERT(vec); - NNS_G3dGeBufferOP_N(G3OP_MTX_TRANS, (u32 *)vec, G3OP_MTX_TRANS_NPARAMS); -} - -NNS_G3D_INLINE void NNS_G3dGeTranslate (fx32 x, fx32 y, fx32 z) -{ - VecFx32 vec; - vec.x = x; - vec.y = y; - vec.z = z; - NNS_G3dGeBufferOP_N(G3OP_MTX_TRANS, (u32 *)&vec, G3OP_MTX_TRANS_NPARAMS); -} - -NNS_G3D_INLINE void NNS_G3dGeColor (GXRgb rgb) -{ - u32 tmp; - GXRGB_ASSERT(rgb); - tmp = GX_PACK_COLOR_PARAM(rgb); - NNS_G3dGeBufferOP_N(G3OP_COLOR, (u32 *)&tmp, G3OP_COLOR_NPARAMS); -} - -NNS_G3D_INLINE void NNS_G3dGeNormal (fx16 x, fx16 y, fx16 z) -{ - u32 tmp; - SDK_MINMAX_ASSERT(x, -FX16_ONE, FX16_ONE - 1); - SDK_MINMAX_ASSERT(y, -FX16_ONE, FX16_ONE - 1); - SDK_MINMAX_ASSERT(z, -FX16_ONE, FX16_ONE - 1); - - tmp = GX_PACK_NORMAL_PARAM(x, y, z); - - NNS_G3dGeBufferOP_N(G3OP_NORMAL, (u32 *)&tmp, G3OP_NORMAL_NPARAMS); -} - -NNS_G3D_INLINE void NNS_G3dGeTexCoord (fx32 s, fx32 t) -{ - u32 tmp; - SDK_MINMAX_ASSERT(s, -2048 * FX32_ONE, 2048 * FX32_ONE - 1); - SDK_MINMAX_ASSERT(t, -2048 * FX32_ONE, 2048 * FX32_ONE - 1); - - tmp = GX_PACK_TEXCOORD_PARAM(s, t); - - NNS_G3dGeBufferOP_N(G3OP_TEXCOORD, (u32 *)&tmp, G3OP_TEXCOORD_NPARAMS); -} - -NNS_G3D_INLINE void NNS_G3dGeVtx (fx16 x, fx16 y, fx16 z) -{ - u32 tmp[2]; - tmp[0] = GX_FX16PAIR(x, y); - tmp[1] = (u32)(u16)z; - - NNS_G3dGeBufferOP_N(G3OP_VTX_16, tmp, G3OP_VTX_16_NPARAMS); -} - -NNS_G3D_INLINE void NNS_G3dGeVtx10 (fx16 x, fx16 y, fx16 z) -{ - u32 tmp = GX_PACK_VTX10_PARAM(x, y, z); - - NNS_G3dGeBufferOP_N(G3OP_VTX_10, &tmp, G3OP_VTX_10_NPARAMS); -} - -NNS_G3D_INLINE void NNS_G3dGeVtxXY (fx16 x, fx16 y) -{ - u32 tmp = GX_PACK_VTXXY_PARAM(x, y); - - NNS_G3dGeBufferOP_N(G3OP_VTX_XY, &tmp, G3OP_VTX_XY_NPARAMS); -} - -NNS_G3D_INLINE void NNS_G3dGeVtxXZ (fx16 x, fx16 z) -{ - u32 tmp = GX_PACK_VTXXZ_PARAM(x, z); - - NNS_G3dGeBufferOP_N(G3OP_VTX_XZ, &tmp, G3OP_VTX_XZ_NPARAMS); -} - -NNS_G3D_INLINE void NNS_G3dGeVtxYZ (fx16 y, fx16 z) -{ - u32 tmp = GX_PACK_VTXYZ_PARAM(y, z); - - NNS_G3dGeBufferOP_N(G3OP_VTX_YZ, &tmp, G3OP_VTX_YZ_NPARAMS); -} - -NNS_G3D_INLINE void NNS_G3dGeVtxDiff (fx16 x, fx16 y, fx16 z) -{ - u32 tmp; - SDK_MINMAX_ASSERT(x, (fx16)0xfe00, (fx16)0x1ff); - SDK_MINMAX_ASSERT(y, (fx16)0xfe00, (fx16)0x1ff); - SDK_MINMAX_ASSERT(z, (fx16)0xfe00, (fx16)0x1ff); - - tmp = GX_PACK_VTXDIFF_PARAM(x, y, z); - - NNS_G3dGeBufferOP_N(G3OP_VTX_DIFF, &tmp, G3OP_VTX_DIFF_NPARAMS); -} - -NNS_G3D_INLINE void NNS_G3dGePolygonAttr ( - int light, - GXPolygonMode polyMode, - GXCull cullMode, - int polygonID, - int alpha, - int misc -) -{ - u32 tmp; - GX_LIGHTMASK_ASSERT(light); - GX_POLYGONMODE_ASSERT(polyMode); - GX_CULL_ASSERT(cullMode); - GX_POLYGON_ATTR_POLYGONID_ASSERT(polygonID); - GX_POLYGON_ATTR_ALPHA_ASSERT(alpha); - - tmp = GX_PACK_POLYGONATTR_PARAM(light, - polyMode, - cullMode, - polygonID, - alpha, - misc); - - NNS_G3dGeBufferOP_N(G3OP_POLYGON_ATTR, - &tmp, - G3OP_POLYGON_ATTR_NPARAMS); -} - -NNS_G3D_INLINE void NNS_G3dGeTexImageParam ( - GXTexFmt texFmt, - GXTexGen texGen, - GXTexSizeS s, - GXTexSizeT t, - GXTexRepeat repeat, - GXTexFlip flip, - GXTexPlttColor0 pltt0, - u32 addr) -{ - u32 tmp; - - GX_TEXREPEAT_ASSERT(repeat); - GX_TEXFLIP_ASSERT(flip); - GX_TEXSIZE_S_ASSERT(s); - GX_TEXSIZE_T_ASSERT(t); - GX_TEXFMT_ASSERT(texFmt); - GX_TEXPLTTCOLOR0_ASSERT(pltt0); - GX_TEXGEN_ASSERT(texGen); - GX_TEXIMAGE_PARAM_ADDR_ASSERT(addr); - - tmp = GX_PACK_TEXIMAGE_PARAM(texFmt, - texGen, - s, - t, - repeat, - flip, - pltt0, - addr); - - NNS_G3dGeBufferOP_N(G3OP_TEXIMAGE_PARAM, - &tmp, - G3OP_TEXIMAGE_PARAM_NPARAMS); -} - -NNS_G3D_INLINE void NNS_G3dGeTexPlttBase (u32 addr, GXTexFmt texfmt) -{ - u32 param = GX_PACK_TEXPLTTBASE_PARAM(addr, texfmt); - GX_TEXPLTTBASEPARAM_ASSERT(param); - - NNS_G3dGeBufferOP_N(G3OP_TEXPLTT_BASE, - ¶m, - G3OP_TEXPLTT_BASE_NPARAMS); -} - -NNS_G3D_INLINE void NNS_G3dGeMaterialColorDiffAmb ( - GXRgb diffuse, - GXRgb ambient, - BOOL IsSetVtxColor) -{ - u32 tmp; - GXRGB_ASSERT(diffuse); - GXRGB_ASSERT(ambient); - - tmp = GX_PACK_DIFFAMB_PARAM(diffuse, ambient, IsSetVtxColor); - - NNS_G3dGeBufferOP_N(G3OP_DIF_AMB, - &tmp, - G3OP_DIF_AMB_NPARAMS); -} - -NNS_G3D_INLINE void NNS_G3dGeMaterialColorSpecEmi ( - GXRgb specular, - GXRgb emission, - BOOL IsShininess) -{ - u32 tmp; - GXRGB_ASSERT(specular); - GXRGB_ASSERT(emission); - - tmp = GX_PACK_SPECEMI_PARAM(specular, emission, IsShininess); - - NNS_G3dGeBufferOP_N(G3OP_SPE_EMI, - &tmp, - G3OP_SPE_EMI_NPARAMS); -} - -NNS_G3D_INLINE void NNS_G3dGeLightVector ( - GXLightId lightID, - fx16 x, - fx16 y, - fx16 z) -{ - u32 tmp; - GX_LIGHTID_ASSERT(lightID); - SDK_MINMAX_ASSERT(x, -FX16_ONE, FX16_ONE - 1); - SDK_MINMAX_ASSERT(y, -FX16_ONE, FX16_ONE - 1); - SDK_MINMAX_ASSERT(z, -FX16_ONE, FX16_ONE - 1); - - tmp = GX_PACK_LIGHTVECTOR_PARAM(lightID, x, y, z); - - NNS_G3dGeBufferOP_N(G3OP_LIGHT_VECTOR, - &tmp, - G3OP_LIGHT_VECTOR_NPARAMS); -} - -NNS_G3D_INLINE void NNS_G3dGeLightColor ( - GXLightId lightID, - GXRgb rgb) -{ - u32 tmp; - GX_LIGHTID_ASSERT(lightID); - GXRGB_ASSERT(rgb); - - tmp = GX_PACK_LIGHTCOLOR_PARAM(lightID, rgb); - - NNS_G3dGeBufferOP_N(G3OP_LIGHT_COLOR, - &tmp, - G3OP_LIGHT_COLOR_NPARAMS); -} - -NNS_G3D_INLINE void NNS_G3dGeBegin (GXBegin primitive) -{ - GX_BEGIN_ASSERT(primitive); - - NNS_G3dGeBufferOP_N(G3OP_BEGIN, - (u32 *)&primitive, - G3OP_BEGIN_NPARAMS); -} - -NNS_G3D_INLINE void NNS_G3dGeEnd (void) -{ - NNS_G3dGeBufferOP_N(G3OP_END, NULL, G3OP_END_NPARAMS); -} - -NNS_G3D_INLINE void NNS_G3dGeViewPort ( - int x1, - int y1, - int x2, - int y2) -{ - u32 tmp; - GX_VIEWPORT_ASSERT(x1, y1, x2, y2); - tmp = GX_PACK_VIEWPORT_PARAM(x1, y1, x2, y2); - - NNS_G3dGeBufferOP_N(G3OP_VIEWPORT, &tmp, G3OP_VIEWPORT_NPARAMS); -} - -NNS_G3D_INLINE void NNS_G3dGeBoxTest (const GXBoxTestParam * box) -{ - NNS_G3D_NULL_ASSERT(box); - - NNS_G3dGeBufferOP_N(G3OP_BOX_TEST, - (u32 *)&box->val[0], - G3OP_BOX_TEST_NPARAMS); -} - -NNS_G3D_INLINE void NNS_G3dGePositionTest ( - fx16 x, - fx16 y, - fx16 z) -{ - u32 tmp[2]; - tmp[0] = GX_FX16PAIR(x, y); - tmp[1] = (u32)(u16)z; - - NNS_G3dGeBufferOP_N(G3OP_POS_TEST, - (u32 *)&tmp[0], - G3OP_POS_TEST_NPARAMS); -} - -NNS_G3D_INLINE void NNS_G3dGeVectorTest ( - fx16 x, - fx16 y, - fx16 z) -{ - u32 tmp; - SDK_MINMAX_ASSERT(x, -FX16_ONE, FX16_ONE - 1); - SDK_MINMAX_ASSERT(y, -FX16_ONE, FX16_ONE - 1); - SDK_MINMAX_ASSERT(z, -FX16_ONE, FX16_ONE - 1); - - tmp = GX_PACK_VECTORTEST_PARAM(x, y, z); - - NNS_G3dGeBufferOP_N(G3OP_VEC_TEST, - &tmp, - G3OP_VEC_TEST_NPARAMS); -} - -NNS_G3D_INLINE void NNS_G3dGeLoadMtx44 (const MtxFx44 * m) -{ - NNS_G3D_NULL_ASSERT(m); - - NNS_G3dGeBufferOP_N(G3OP_MTX_LOAD_4x4, - (u32 *)m, - G3OP_MTX_LOAD_4x4_NPARAMS); -} - -NNS_G3D_INLINE void NNS_G3dGeLoadMtx43 (const MtxFx43 * m) -{ - NNS_G3D_NULL_ASSERT(m); - - NNS_G3dGeBufferOP_N(G3OP_MTX_LOAD_4x3, - (u32 *)m, - G3OP_MTX_LOAD_4x3_NPARAMS); -} - -NNS_G3D_INLINE void NNS_G3dGeMultMtx44 (const MtxFx44 * m) -{ - NNS_G3D_NULL_ASSERT(m); - - NNS_G3dGeBufferOP_N(G3OP_MTX_MULT_4x4, - (u32 *)m, - G3OP_MTX_MULT_4x4_NPARAMS); -} - -NNS_G3D_INLINE void NNS_G3dGeMultMtx43 (const MtxFx43 * m) -{ - NNS_G3D_NULL_ASSERT(m); - - NNS_G3dGeBufferOP_N(G3OP_MTX_MULT_4x3, - (u32 *)m, - G3OP_MTX_MULT_4x3_NPARAMS); -} - -NNS_G3D_INLINE void NNS_G3dGeMultMtx33 (const MtxFx33 * m) -{ - NNS_G3D_NULL_ASSERT(m); - - NNS_G3dGeBufferOP_N(G3OP_MTX_MULT_3x3, - (u32 *)m, - G3OP_MTX_MULT_3x3_NPARAMS); -} - -NNS_G3D_INLINE void NNS_G3dGeShininess (const u32 * table) -{ - NNS_G3D_NULL_ASSERT(table); - - NNS_G3dGeBufferOP_N(G3OP_SHININESS, - table, - G3OP_SHININESS_NPARAMS); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g3d/glbstate.h b/subprojects/NitroSystem/include/nnsys/g3d/glbstate.h deleted file mode 100644 index 4d83e77835..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g3d/glbstate.h +++ /dev/null @@ -1,128 +0,0 @@ -#ifndef NNSG3D_GLBSTATE_H_ -#define NNSG3D_GLBSTATE_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - NNS_G3D_GLB_FLAG_FLUSH_WVP = 0x00000001, - NNS_G3D_GLB_FLAG_FLUSH_VP = 0x00000002, - NNS_G3D_GLB_FLAG_INVBASE_UPTODATE = 0x00000004, - NNS_G3D_GLB_FLAG_INVCAMERA_UPTODATE = 0x00000008, - NNS_G3D_GLB_FLAG_INVPROJ_UPTODATE = 0x00000010, - NNS_G3D_GLB_FLAG_INVBASECAMERA_UPTODATE = 0x00000020, - NNS_G3D_GLB_FLAG_INVCAMERAPROJ_UPTODATE = 0x00000040, - - NNS_G3D_GLB_FLAG_BASECAMERA_UPTODATE = 0x00000080, - - NNS_G3D_GLB_FLAG_SRTCAMERA_UPTODATE = NNS_G3D_GLB_FLAG_BASECAMERA_UPTODATE, - NNS_G3D_GLB_FLAG_FLUSH_ALT = NNS_G3D_GLB_FLAG_FLUSH_WVP -} NNSG3dGlbFlag; - -typedef struct { - u32 cmd0; - u32 mtxmode_proj; - MtxFx44 projMtx; - - u32 mtxmode_posvec; - MtxFx43 cameraMtx; - - u32 cmd1; - u32 lightVec[4]; - - u32 cmd2; - u32 prmMatColor0; - u32 prmMatColor1; - u32 prmPolygonAttr; - u32 prmViewPort; - - u32 cmd3; - u32 lightColor[4]; - - u32 cmd4; - MtxFx33 prmBaseRot; - VecFx32 prmBaseTrans; - VecFx32 prmBaseScale; - u32 prmTexImageParam; - - u32 flag; - MtxFx43 invCameraMtx; - MtxFx43 srtCameraMtx; - MtxFx43 invSrtCameraMtx; - - MtxFx43 invBaseMtx; - - MtxFx44 invProjMtx; - MtxFx44 invCameraProjMtx; - - VecFx32 camPos; - VecFx32 camUp; - VecFx32 camTarget; -} NNSG3dGlb; - -NNS_G3D_INLINE void NNS_G3dGlbLookAt(const VecFx32 * camPos, - const VecFx32 * camUp, - const VecFx32 * target); -NNS_G3D_INLINE void NNS_G3dGlbFrustum(fx32 t, fx32 b, fx32 l, fx32 r, fx32 n, fx32 f); -NNS_G3D_INLINE void NNS_G3dGlbFrustumW(fx32 t, fx32 b, fx32 l, fx32 r, fx32 n, fx32 f, fx32 scaleW); -NNS_G3D_INLINE void NNS_G3dGlbPerspective(fx32 fovySin, fx32 fovyCos, fx32 aspect, fx32 n, fx32 f); -NNS_G3D_INLINE void NNS_G3dGlbPerspectiveW(fx32 fovySin, fx32 fovyCos, fx32 aspect, fx32 n, fx32 f, fx32 scaleW); -NNS_G3D_INLINE void NNS_G3dGlbOrtho(fx32 t, fx32 b, fx32 l, fx32 r, fx32 n, fx32 f); -NNS_G3D_INLINE void NNS_G3dGlbOrthoW(fx32 t, fx32 b, fx32 l, fx32 r, fx32 n, fx32 f, fx32 scaleW); -NNS_G3D_INLINE void NNS_G3dGlbSetProjectionMtx(const MtxFx44 * m); - -NNS_G3D_INLINE void NNS_G3dGlbSetBaseRot(const MtxFx33 * pRot); -NNS_G3D_INLINE void NNS_G3dGlbSetViewPort(int x1, int y1, int x2, int y2); - -NNS_G3D_INLINE const MtxFx43 * NNS_G3dGlbGetCameraMtx(void); -NNS_G3D_INLINE const MtxFx44 * NNS_G3dGlbGetProjectionMtx(void); -NNS_G3D_INLINE const MtxFx33 * NNS_G3dGlbGetBaseRot(void); -NNS_G3D_INLINE const VecFx32 * NNS_G3dGlbGetBaseTrans(void); -NNS_G3D_INLINE const VecFx32 * NNS_G3dGlbGetBaseScale(void); -NNS_G3D_INLINE const VecFx32 * NNS_G3dGlbGetCameraPos(void); -NNS_G3D_INLINE const VecFx32 * NNS_G3dGlbGetCameraUp(void); -NNS_G3D_INLINE const VecFx32 * NNS_G3dGlbGetCameraTarget(void); - -NNS_G3D_INLINE void NNS_G3dGlbFlush(void); -NNS_G3D_INLINE void NNS_G3dGlbFlushAlt(void); -NNS_G3D_INLINE const MtxFx43 * NNS_G3dGlbGetSrtCameraMtx(void); -NNS_G3D_INLINE const MtxFx43 * NNS_G3dGlbGetInvSrtCameraMtx(void); - -void NNS_G3dGlbInit(void); -void NNS_G3dGlbFlushP(void); -void NNS_G3dGlbFlushVP(void); -void NNS_G3dGlbFlushWVP(void); -void NNS_G3dGlbSetBaseTrans(const VecFx32 * pTrans); -void NNS_G3dGlbSetBaseScale(const VecFx32 * pScale); -void NNS_G3dGlbLightVector(GXLightId lightID, fx16 x, fx16 y, fx16 z); -void NNS_G3dGlbLightColor(GXLightId lightID, GXRgb rgb); -void NNS_G3dGlbMaterialColorDiffAmb(GXRgb diffuse, GXRgb ambient, BOOL IsSetVtxColor); -void NNS_G3dGlbMaterialColorSpecEmi(GXRgb specular, GXRgb emission, BOOL IsShininess); -void NNS_G3dGlbPolygonAttr(int light, - GXPolygonMode polyMode, - GXCull cullMode, - int polygonID, - int alpha, - int misc -); -const MtxFx43 * NNS_G3dGlbGetInvV(void); -const MtxFx43 * NNS_G3dGlbGetInvW(void); -const MtxFx44 * NNS_G3dGlbGetInvP(void); -const MtxFx43 * NNS_G3dGlbGetWV(void); -const MtxFx43 * NNS_G3dGlbGetInvWV(void); -const MtxFx44 * NNS_G3dGlbGetInvVP(void); - -void NNS_G3dGlbGetViewPort(int * px1, int * py1, int * px2, int * py2); - -extern NNSG3dGlb NNS_G3dGlb; - -#ifdef __cplusplus -} -#endif - -#include - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g3d/glbstate_inline.h b/subprojects/NitroSystem/include/nnsys/g3d/glbstate_inline.h deleted file mode 100644 index d44e417610..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g3d/glbstate_inline.h +++ /dev/null @@ -1,227 +0,0 @@ -#ifndef NNSG3D_GLBSTATE_INLINE_H_ -#define NNSG3D_GLBSTATE_INLINE_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -NNS_G3D_INLINE void NNS_G3dGlbLookAt (const VecFx32 * camPos, - const VecFx32 * camUp, - const VecFx32 * target) -{ - NNS_G3dGlb.camPos = *camPos; - NNS_G3dGlb.camUp = *camUp; - NNS_G3dGlb.camTarget = *target; - MTX_LookAt(camPos, camUp, target, &NNS_G3dGlb.cameraMtx); - NNS_G3dGlb.flag &= ~(NNS_G3D_GLB_FLAG_INVCAMERA_UPTODATE | - NNS_G3D_GLB_FLAG_BASECAMERA_UPTODATE | - NNS_G3D_GLB_FLAG_INVBASECAMERA_UPTODATE | - NNS_G3D_GLB_FLAG_INVCAMERAPROJ_UPTODATE); -} - -NNS_G3D_INLINE void NNS_G3dGlbFrustum (fx32 t, - fx32 b, - fx32 l, - fx32 r, - fx32 n, - fx32 f) -{ - MTX_Frustum(t, - b, - l, - r, - n, - f, - &NNS_G3dGlb.projMtx); - - NNS_G3dGlb.flag &= ~(NNS_G3D_GLB_FLAG_INVPROJ_UPTODATE | - NNS_G3D_GLB_FLAG_INVCAMERAPROJ_UPTODATE); -} - -NNS_G3D_INLINE void NNS_G3dGlbFrustumW (fx32 t, - fx32 b, - fx32 l, - fx32 r, - fx32 n, - fx32 f, - fx32 scaleW) -{ - MTX_FrustumW(t, - b, - l, - r, - n, - f, - scaleW, - &NNS_G3dGlb.projMtx); - NNS_G3dGlb.flag &= ~(NNS_G3D_GLB_FLAG_INVPROJ_UPTODATE | - NNS_G3D_GLB_FLAG_INVCAMERAPROJ_UPTODATE); -} - -NNS_G3D_INLINE void NNS_G3dGlbPerspective (fx32 fovySin, - fx32 fovyCos, - fx32 aspect, - fx32 n, - fx32 f) -{ - MTX_Perspective(fovySin, - fovyCos, - aspect, - n, - f, - &NNS_G3dGlb.projMtx); - NNS_G3dGlb.flag &= ~(NNS_G3D_GLB_FLAG_INVPROJ_UPTODATE | - NNS_G3D_GLB_FLAG_INVCAMERAPROJ_UPTODATE); -} - -NNS_G3D_INLINE void NNS_G3dGlbPerspectiveW (fx32 fovySin, - fx32 fovyCos, - fx32 aspect, - fx32 n, - fx32 f, - fx32 scaleW) -{ - MTX_PerspectiveW(fovySin, - fovyCos, - aspect, - n, - f, - scaleW, - &NNS_G3dGlb.projMtx); - NNS_G3dGlb.flag &= ~(NNS_G3D_GLB_FLAG_INVPROJ_UPTODATE | - NNS_G3D_GLB_FLAG_INVCAMERAPROJ_UPTODATE); -} - -NNS_G3D_INLINE void NNS_G3dGlbOrtho (fx32 t, - fx32 b, - fx32 l, - fx32 r, - fx32 n, - fx32 f) -{ - MTX_Ortho(t, - b, - l, - r, - n, - f, - &NNS_G3dGlb.projMtx); - NNS_G3dGlb.flag &= ~(NNS_G3D_GLB_FLAG_INVPROJ_UPTODATE | - NNS_G3D_GLB_FLAG_INVCAMERAPROJ_UPTODATE); -} - -NNS_G3D_INLINE void NNS_G3dGlbOrthoW (fx32 t, - fx32 b, - fx32 l, - fx32 r, - fx32 n, - fx32 f, - fx32 scaleW) -{ - MTX_OrthoW(t, - b, - l, - r, - n, - f, - scaleW, - &NNS_G3dGlb.projMtx); - NNS_G3dGlb.flag &= ~(NNS_G3D_GLB_FLAG_INVPROJ_UPTODATE | - NNS_G3D_GLB_FLAG_INVCAMERAPROJ_UPTODATE); -} - -NNS_G3D_INLINE void NNS_G3dGlbSetProjectionMtx (const MtxFx44 * m) -{ - NNS_G3D_NULL_ASSERT(m); - MI_CpuCopyFast(m, &NNS_G3dGlb.projMtx, sizeof(MtxFx44)); - NNS_G3dGlb.flag &= ~(NNS_G3D_GLB_FLAG_INVPROJ_UPTODATE | - NNS_G3D_GLB_FLAG_INVCAMERAPROJ_UPTODATE); -} - -NNS_G3D_INLINE void NNS_G3dGlbSetBaseRot (const MtxFx33 * pRot) -{ - NNS_G3D_NULL_ASSERT(pRot); - - MTX_Copy33(pRot, &NNS_G3dGlb.prmBaseRot); - NNS_G3dGlb.flag &= ~(NNS_G3D_GLB_FLAG_BASECAMERA_UPTODATE | - NNS_G3D_GLB_FLAG_INVBASE_UPTODATE | - NNS_G3D_GLB_FLAG_INVBASECAMERA_UPTODATE); -} - -NNS_G3D_INLINE void NNS_G3dGlbSetViewPort (int x1, int y1, int x2, int y2) -{ - GX_VIEWPORT_ASSERT(x1, y1, x2, y2); - - NNS_G3dGlb.prmViewPort = GX_PACK_VIEWPORT_PARAM(x1, y1, x2, y2); -} - -NNS_G3D_INLINE const MtxFx43 * NNS_G3dGlbGetCameraMtx (void) -{ - return &NNS_G3dGlb.cameraMtx; -} - -NNS_G3D_INLINE const MtxFx44 * NNS_G3dGlbGetProjectionMtx (void) -{ - return &NNS_G3dGlb.projMtx; -} - -NNS_G3D_INLINE const MtxFx33 * NNS_G3dGlbGetBaseRot (void) -{ - return &NNS_G3dGlb.prmBaseRot; -} - -NNS_G3D_INLINE const VecFx32 * NNS_G3dGlbGetBaseScale (void) -{ - return &NNS_G3dGlb.prmBaseScale; -} - -NNS_G3D_INLINE const VecFx32 * NNS_G3dGlbGetBaseTrans (void) -{ - return &NNS_G3dGlb.prmBaseTrans; -} - -NNS_G3D_INLINE const VecFx32 * NNS_G3dGlbGetCameraPos (void) -{ - return &NNS_G3dGlb.camPos; -} - -NNS_G3D_INLINE const VecFx32 * NNS_G3dGlbGetCameraUp (void) -{ - return &NNS_G3dGlb.camUp; -} - -NNS_G3D_INLINE const VecFx32 * NNS_G3dGlbGetCameraTarget (void) -{ - return &NNS_G3dGlb.camTarget; -} - -NNS_G3D_INLINE void NNS_G3dGlbFlush (void) -{ - NNS_G3dGlbFlushP(); -} - -NNS_G3D_INLINE void NNS_G3dGlbFlushAlt (void) -{ - NNS_G3dGlbFlushWVP(); -} - -NNS_G3D_INLINE const MtxFx43 * NNS_G3dGlbGetInvCameraMtx (void) -{ - return NNS_G3dGlbGetInvV(); -} - -NNS_G3D_INLINE const MtxFx43 * NNS_G3dGlbGetSrtCameraMtx (void) -{ - return NNS_G3dGlbGetWV(); -} - -NNS_G3D_INLINE const MtxFx43 * NNS_G3dGlbGetInvSrtCameraMtx (void) -{ - return NNS_G3dGlbGetInvWV(); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g3d/kernel.h b/subprojects/NitroSystem/include/nnsys/g3d/kernel.h deleted file mode 100644 index 667e49e6ce..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g3d/kernel.h +++ /dev/null @@ -1,228 +0,0 @@ -#ifndef NNSG3D_KERNEL_H_ -#define NNSG3D_KERNEL_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define NNS_G3D_SIZE_MAT_MAX_MAX 256 -#define NNS_G3D_SIZE_JNT_MAX_MAX 256 -#define NNS_G3D_SIZE_SHP_MAX_MAX 256 - -#if (NNS_G3D_SIZE_MAT_MAX <= 0 || NNS_G3D_SIZE_MAT_MAX > NNS_G3D_SIZE_MAT_MAX_MAX) -#error NNS_G3D_SIZE_MAT_MAX range error. -#endif - -#if (NNS_G3D_SIZE_JNT_MAX <= 0 || NNS_G3D_SIZE_JNT_MAX > NNS_G3D_SIZE_JNT_MAX_MAX) -#error NNS_G3D_SIZE_JNT_MAX range error. -#endif - -#if (NNS_G3D_SIZE_SHP_MAX <= 0 || NNS_G3D_SIZE_SHP_MAX > NNS_G3D_SIZE_SHP_MAX_MAX) -#error NNS_G3D_SIZE_SHP_MAX range error. -#endif - -#if (NNS_G3D_SIZE_MAT_MAX % 32 != 0) -#error NNS_G3D_SIZE_MAT_MAX must be a multiple of 32. -#endif - -#if (NNS_G3D_SIZE_JNT_MAX % 32 != 0) -#error NNS_G3D_SIZE_JNT_MAX must be a multiple of 32. -#endif - -#if (NNS_G3D_SIZE_SHP_MAX % 32 != 0) -#error NNS_G3D_SIZE_SHP_MAX must be a multiple of 32. -#endif - -typedef u32 NNSG3dTexKey; -typedef u32 NNSG3dPlttKey; - -typedef struct NNSG3dAnmObj_ { - fx32 frame; - fx32 ratio; - void * resAnm; - void * funcAnm; - struct NNSG3dAnmObj_ * next; - const NNSG3dResTex * resTex; - u8 priority; - u8 numMapData; - u16 mapData[1]; -} NNSG3dAnmObj; - -#define NNS_G3D_ANMOBJ_SIZE_MATANM(pMdl) ((sizeof(NNSG3dAnmObj) + sizeof(u16) * pMdl->info.numMat) & ~3) - -#define NNS_G3D_ANMOBJ_SIZE_JNTANM(pMdl) ((sizeof(NNSG3dAnmObj) + sizeof(u16) * pMdl->info.numNode) & ~3) -#define NNS_G3D_ANMOBJ_SIZE_VISANM(pMdl) ((sizeof(NNSG3dAnmObj) + sizeof(u16) * pMdl->info.numNode) & ~3) - -typedef enum { - NNS_G3D_ANMOBJ_MAPDATA_EXIST = 0x0100, - NNS_G3D_ANMOBJ_MAPDATA_DISABLED = 0x0200, - NNS_G3D_ANMOBJ_MAPDATA_DATAFIELD = 0x00ff -} NNSG3dAnmObjMapData; - -struct NNSG3dMatAnmResult_; -struct NNSG3dJntAnmResult_; -struct NNSG3dVisAnmResult_; - -typedef BOOL (* NNSG3dFuncAnmBlendMat)(struct NNSG3dMatAnmResult_ *, - const NNSG3dAnmObj *, - u32); - -typedef BOOL (* NNSG3dFuncAnmBlendJnt)(struct NNSG3dJntAnmResult_ *, - const NNSG3dAnmObj *, - u32); - -typedef BOOL (* NNSG3dFuncAnmBlendVis)(struct NNSG3dVisAnmResult_ *, - const NNSG3dAnmObj *, - u32); - -typedef enum { - NNS_G3D_RENDEROBJ_FLAG_RECORD = 0x00000001, - NNS_G3D_RENDEROBJ_FLAG_NOGECMD = 0x00000002, - NNS_G3D_RENDEROBJ_FLAG_SKIP_SBC_DRAW = 0x00000004, - NNS_G3D_RENDEROBJ_FLAG_SKIP_SBC_MTXCALC = 0x00000008, - NNS_G3D_RENDEROBJ_FLAG_HINT_OBSOLETE = 0x00000010 -} NNSG3dRenderObjFlag; - -struct NNSG3dRS_; -typedef void (* NNSG3dSbcCallBackFunc)(struct NNSG3dRS_ *); - -typedef enum { - NNS_G3D_SBC_CALLBACK_TIMING_NONE = 0x00, - NNS_G3D_SBC_CALLBACK_TIMING_A = 0x01, - NNS_G3D_SBC_CALLBACK_TIMING_B = 0x02, - NNS_G3D_SBC_CALLBACK_TIMING_C = 0x03 -} NNSG3dSbcCallBackTiming; - -#define NNS_G3D_SBC_CALLBACK_TIMING_ASSERT(x) \ - NNS_G3D_ASSERT(x == NNS_G3D_SBC_CALLBACK_TIMING_NONE || \ - x == NNS_G3D_SBC_CALLBACK_TIMING_A || \ - x == NNS_G3D_SBC_CALLBACK_TIMING_B || \ - x == NNS_G3D_SBC_CALLBACK_TIMING_C) - -typedef struct NNSG3dRenderObj_ { - u32 flag; - - NNSG3dResMdl * resMdl; - NNSG3dAnmObj * anmMat; - NNSG3dFuncAnmBlendMat funcBlendMat; - NNSG3dAnmObj * anmJnt; - NNSG3dFuncAnmBlendJnt funcBlendJnt; - NNSG3dAnmObj * anmVis; - NNSG3dFuncAnmBlendVis funcBlendVis; - - NNSG3dSbcCallBackFunc cbFunc; - u8 cbCmd; - u8 cbTiming; - u16 dummy_; - - NNSG3dSbcCallBackFunc cbInitFunc; - - void * ptrUser; - - u8 * ptrUserSbc; - - struct NNSG3dJntAnmResult_ * recJntAnm; - struct NNSG3dMatAnmResult_ * recMatAnm; - - u32 hintMatAnmExist[NNS_G3D_SIZE_MAT_MAX / 32]; - u32 hintJntAnmExist[NNS_G3D_SIZE_JNT_MAX / 32]; - u32 hintVisAnmExist[NNS_G3D_SIZE_JNT_MAX / 32]; -} NNSG3dRenderObj; - -#define NNS_G3D_RENDEROBJ_JNTBUFFER_SIZE(numJnt) \ - ((u32)(sizeof(NNSG3dJntAnmResult) * (numJnt))) - -#define NNS_G3D_RENDEROBJ_MATBUFFER_SIZE(numMat) \ - ((u32)(sizeof(NNSG3dMatAnmResult) * (numMat))) - -NNS_G3D_INLINE void NNS_G3dAnmObjSetFrame(NNSG3dAnmObj * pAnmObj, fx32 frame); -NNS_G3D_INLINE void NNS_G3dAnmObjSetBlendRatio(NNSG3dAnmObj * pAnmObj, fx32 ratio); -NNS_G3D_INLINE fx32 NNS_G3dAnmObjGetNumFrame(const NNSG3dAnmObj * pAnmObj); - -u32 NNS_G3dAnmObjCalcSizeRequired(const void * pAnm, const NNSG3dResMdl * pMdl); -void NNS_G3dAnmObjInit(NNSG3dAnmObj * pAnmObj, - void * pResAnm, - const NNSG3dResMdl * pResMdl, - const NNSG3dResTex * pResTex); -void NNS_G3dAnmObjEnableID(NNSG3dAnmObj * pAnmObj, int id); -void NNS_G3dAnmObjDisableID(NNSG3dAnmObj * pAnmObj, int id); - -NNS_G3D_INLINE void NNS_G3dRenderObjSetFlag(NNSG3dRenderObj * pRenderObj, NNSG3dRenderObjFlag flag); -NNS_G3D_INLINE void NNS_G3dRenderObjResetFlag(NNSG3dRenderObj * pRenderObj, NNSG3dRenderObjFlag flag); -NNS_G3D_INLINE BOOL NNS_G3dRenderObjTestFlag(const NNSG3dRenderObj * pRenderObj, NNSG3dRenderObjFlag flag); -NNS_G3D_INLINE u8 * NNS_G3dRenderObjSetUserSbc(NNSG3dRenderObj * pRenderObj, u8 * sbc); -NNS_G3D_INLINE void NNS_G3dRenderObjSetJntAnmBuffer(NNSG3dRenderObj * pRenderObj, struct NNSG3dJntAnmResult_ * buf); -NNS_G3D_INLINE void NNS_G3dRenderObjSetMatAnmBuffer(NNSG3dRenderObj * pRenderObj, struct NNSG3dMatAnmResult_ * buf); - -NNS_G3D_INLINE struct NNSG3dJntAnmResult_ * NNS_G3dRenderObjReleaseJntAnmBuffer(NNSG3dRenderObj * pRenderObj); -NNS_G3D_INLINE struct NNSG3dMatAnmResult_ * NNS_G3dRenderObjReleaseMatAnmBuffer(NNSG3dRenderObj * pRenderObj); -NNS_G3D_INLINE void * NNS_G3dRenderObjSetUserPtr(NNSG3dRenderObj * pRenderObj, void * ptr); - -NNS_G3D_INLINE NNSG3dResMdl * NNS_G3dRenderObjGetResMdl(NNSG3dRenderObj * pRenderObj); -NNS_G3D_INLINE void NNS_G3dRenderObjSetBlendFuncMat(NNSG3dRenderObj * pRenderObj, NNSG3dFuncAnmBlendMat func); -NNS_G3D_INLINE void NNS_G3dRenderObjSetBlendFuncJnt(NNSG3dRenderObj * pRenderObj, NNSG3dFuncAnmBlendJnt func); -NNS_G3D_INLINE void NNS_G3dRenderObjSetBlendFuncVis(NNSG3dRenderObj * pRenderObj, NNSG3dFuncAnmBlendVis func); - -void NNS_G3dRenderObjInit(NNSG3dRenderObj * pRenderObj, NNSG3dResMdl * pResMdl); -void NNS_G3dRenderObjAddAnmObj(NNSG3dRenderObj * pRenderObj, NNSG3dAnmObj * pAnmObj); -void NNS_G3dRenderObjRemoveAnmObj(NNSG3dRenderObj * pRenderObj, NNSG3dAnmObj * pAnmObj); -void NNS_G3dRenderObjSetCallBack(NNSG3dRenderObj * pRenderObj, - NNSG3dSbcCallBackFunc func, - u8 *, - u8 cmd, - NNSG3dSbcCallBackTiming timing); -void NNS_G3dRenderObjResetCallBack(NNSG3dRenderObj * pRenderObj); -void NNS_G3dRenderObjSetInitFunc(NNSG3dRenderObj * pRenderObj, NNSG3dSbcCallBackFunc func); - -u32 NNS_G3dTexGetRequiredSize(const NNSG3dResTex * pTex); -u32 NNS_G3dTex4x4GetRequiredSize(const NNSG3dResTex * pTex); -void NNS_G3dTexSetTexKey(NNSG3dResTex * pTex, - NNSG3dTexKey texKey, - NNSG3dTexKey tex4x4Key); -void NNS_G3dTexLoad(NNSG3dResTex * pTex, BOOL exec_begin_end); -void NNS_G3dTexReleaseTexKey(NNSG3dResTex * pTex, - NNSG3dTexKey * texKey, - NNSG3dTexKey * tex4x4Key); - -u32 NNS_G3dPlttGetRequiredSize(const NNSG3dResTex * pTex); -void NNS_G3dPlttSetPlttKey(NNSG3dResTex * pTex, NNSG3dPlttKey plttKey); -void NNS_G3dPlttLoad(NNSG3dResTex * pTex, BOOL exec_begin_end); -NNSG3dPlttKey NNS_G3dPlttReleasePlttKey(NNSG3dResTex * pTex); - -BOOL NNS_G3dBindMdlTex(NNSG3dResMdl * pMdl, const NNSG3dResTex * pTex); -BOOL NNS_G3dBindMdlTexEx(NNSG3dResMdl * pMdl, - const NNSG3dResTex * pTex, - const NNSG3dResName * pResName); -BOOL NNS_G3dForceBindMdlTex(NNSG3dResMdl * pMdl, - const NNSG3dResTex * pTex, - u32 texToMatListIdx, - u32 texIdx); - -void NNS_G3dReleaseMdlTex(NNSG3dResMdl * pMdl); -BOOL NNS_G3dReleaseMdlTexEx(NNSG3dResMdl * pMdl, const NNSG3dResName * pResName); - -BOOL NNS_G3dBindMdlPltt(NNSG3dResMdl * pMdl, const NNSG3dResTex * pTex); -BOOL NNS_G3dBindMdlPlttEx(NNSG3dResMdl * pMdl, - const NNSG3dResTex * pTex, - const NNSG3dResName * pResName); -BOOL NNS_G3dForceBindMdlPltt(NNSG3dResMdl * pMdl, - const NNSG3dResTex * pTex, - u32 plttToMatListIdx, - u32 plttIdx); -void NNS_G3dReleaseMdlPltt(NNSG3dResMdl * pMdl); -BOOL NNS_G3dReleaseMdlPlttEx(NNSG3dResMdl * pMdl, const NNSG3dResName * pResName); - -BOOL NNS_G3dBindMdlSet(NNSG3dResMdlSet * pMdlSet, const NNSG3dResTex * pTex); -void NNS_G3dReleaseMdlSet(NNSG3dResMdlSet * pMdlSet); - -#ifdef __cplusplus -} -#endif - -#include - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g3d/kernel_inline.h b/subprojects/NitroSystem/include/nnsys/g3d/kernel_inline.h deleted file mode 100644 index 8692ba28da..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g3d/kernel_inline.h +++ /dev/null @@ -1,153 +0,0 @@ -#ifndef NNSG3D_KERNEL_INLINE_H_ -#define NNSG3D_KERNEL_INLINE_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -NNS_G3D_INLINE void NNS_G3dAnmObjSetFrame (NNSG3dAnmObj * pAnmObj, fx32 frame) -{ - NNS_G3D_NULL_ASSERT(pAnmObj); - - pAnmObj->frame = frame; -} - -NNS_G3D_INLINE void NNS_G3dAnmObjSetBlendRatio (NNSG3dAnmObj * pAnmObj, fx32 ratio) -{ - NNS_G3D_NULL_ASSERT(pAnmObj); - - pAnmObj->ratio = ratio; -} - -NNS_G3D_INLINE fx32 NNS_G3dAnmObjGetNumFrame (const NNSG3dAnmObj * pAnmObj) -{ - const NNSG3dResAnmCommon * p; - NNS_G3D_NULL_ASSERT(pAnmObj); - NNS_G3D_ASSERT(NNSi_G3dIsValidAnmRes(pAnmObj->resAnm)); - - p = (const NNSG3dResAnmCommon *)pAnmObj->resAnm; - return p->numFrame * FX32_ONE; -} - -NNS_G3D_INLINE void NNS_G3dRenderObjSetFlag (NNSG3dRenderObj * pRenderObj, NNSG3dRenderObjFlag flag) -{ - NNS_G3D_NULL_ASSERT(pRenderObj); - - pRenderObj->flag |= flag; -} - -NNS_G3D_INLINE void NNS_G3dRenderObjResetFlag (NNSG3dRenderObj * pRenderObj, NNSG3dRenderObjFlag flag) -{ - NNS_G3D_NULL_ASSERT(pRenderObj); - - pRenderObj->flag &= ~flag; -} - -NNS_G3D_INLINE BOOL NNS_G3dRenderObjTestFlag (const NNSG3dRenderObj * pRenderObj, NNSG3dRenderObjFlag flag) -{ - NNS_G3D_NULL_ASSERT(pRenderObj); - - return (pRenderObj->flag & flag) == flag; -} - -NNS_G3D_INLINE u8 * NNS_G3dRenderObjSetUserSbc (NNSG3dRenderObj * pRenderObj, u8 * sbc) -{ - u8 * rval; - NNS_G3D_NULL_ASSERT(pRenderObj); - - rval = pRenderObj->ptrUserSbc; - pRenderObj->ptrUserSbc = sbc; - return rval; -} - -NNS_G3D_INLINE void NNS_G3dRenderObjSetJntAnmBuffer (NNSG3dRenderObj * pRenderObj, - struct NNSG3dJntAnmResult_ * buf) -{ - NNS_G3D_NULL_ASSERT(pRenderObj); - NNS_G3D_NULL_ASSERT(buf); - - pRenderObj->recJntAnm = buf; -} - -NNS_G3D_INLINE void NNS_G3dRenderObjSetMatAnmBuffer (NNSG3dRenderObj * pRenderObj, - struct NNSG3dMatAnmResult_ * buf) -{ - NNS_G3D_NULL_ASSERT(pRenderObj); - NNS_G3D_NULL_ASSERT(buf); - - pRenderObj->recMatAnm = buf; -} - -NNS_G3D_INLINE struct NNSG3dJntAnmResult_ * NNS_G3dRenderObjReleaseJntAnmBuffer (NNSG3dRenderObj * pRenderObj) -{ - struct NNSG3dJntAnmResult_ * rval; - NNS_G3D_NULL_ASSERT(pRenderObj); - - if (!pRenderObj->recMatAnm) { - pRenderObj->flag &= ~NNS_G3D_RENDEROBJ_FLAG_RECORD; - } - rval = pRenderObj->recJntAnm; - pRenderObj->recJntAnm = NULL; - return rval; -} - -NNS_G3D_INLINE struct NNSG3dMatAnmResult_ * NNS_G3dRenderObjReleaseMatAnmBuffer (NNSG3dRenderObj * pRenderObj) -{ - struct NNSG3dMatAnmResult_ * rval; - NNS_G3D_NULL_ASSERT(pRenderObj); - - if (!pRenderObj->recJntAnm) { - pRenderObj->flag &= ~NNS_G3D_RENDEROBJ_FLAG_RECORD; - } - rval = pRenderObj->recMatAnm; - pRenderObj->recMatAnm = NULL; - return rval; -} - -NNS_G3D_INLINE void * NNS_G3dRenderObjSetUserPtr (NNSG3dRenderObj * pRenderObj, void * ptr) -{ - void * rval = pRenderObj->ptrUser; - pRenderObj->ptrUser = ptr; - return rval; -} - -NNS_G3D_INLINE NNSG3dResMdl * NNS_G3dRenderObjGetResMdl (NNSG3dRenderObj * pRenderObj) -{ - NNS_G3D_NULL_ASSERT(pRenderObj); - return pRenderObj->resMdl; -} - -NNS_G3D_INLINE void NNS_G3dRenderObjSetBlendFuncMat (NNSG3dRenderObj * pRenderObj, - NNSG3dFuncAnmBlendMat func) -{ - NNS_G3D_NULL_ASSERT(pRenderObj); - NNS_G3D_NULL_ASSERT(func); - - pRenderObj->funcBlendMat = func; -} - -NNS_G3D_INLINE void NNS_G3dRenderObjSetBlendFuncJnt (NNSG3dRenderObj * pRenderObj, - NNSG3dFuncAnmBlendJnt func) -{ - NNS_G3D_NULL_ASSERT(pRenderObj); - NNS_G3D_NULL_ASSERT(func); - - pRenderObj->funcBlendJnt = func; -} - -NNS_G3D_INLINE void NNS_G3dRenderObjSetBlendFuncVis (NNSG3dRenderObj * pRenderObj, - NNSG3dFuncAnmBlendVis func) -{ - NNS_G3D_NULL_ASSERT(pRenderObj); - NNS_G3D_NULL_ASSERT(func); - - pRenderObj->funcBlendVis = func; -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g3d/mem.h b/subprojects/NitroSystem/include/nnsys/g3d/mem.h deleted file mode 100644 index 79e342c743..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g3d/mem.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef NNSG3D_MEM_H_ -#define NNSG3D_MEM_H_ - -#include -#include -#include - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -NNSG3dRenderObj * NNS_G3dAllocRenderObj(NNSFndAllocator * pAlloc); -void NNS_G3dFreeRenderObj(NNSFndAllocator * pAlloc, - NNSG3dRenderObj * pRenderObj); - -NNSG3dAnmObj * NNS_G3dAllocAnmObj(NNSFndAllocator * pAlloc, - const void * pAnm, - const NNSG3dResMdl * pMdl); -void NNS_G3dFreeAnmObj(NNSFndAllocator * pAlloc, - NNSG3dAnmObj * pAnmObj); - -NNSG3dJntAnmResult * NNS_G3dAllocRecBufferJnt(NNSFndAllocator * pAlloc, - const NNSG3dResMdl * pResMdl); -void NNS_G3dFreeRecBufferJnt(NNSFndAllocator * pAlloc, - NNSG3dJntAnmResult * pRecBuf); - -NNSG3dMatAnmResult * NNS_G3dAllocRecBufferMat(NNSFndAllocator * pAlloc, - const NNSG3dResMdl * pResMdl); -void NNS_G3dFreeRecBufferMat(NNSFndAllocator * pAlloc, - NNSG3dMatAnmResult * pRecBuf); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g3d/model.h b/subprojects/NitroSystem/include/nnsys/g3d/model.h deleted file mode 100644 index 6268f3a44d..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g3d/model.h +++ /dev/null @@ -1,93 +0,0 @@ -#ifndef NNSG3D_MODEL_H_ -#define NNSG3D_MODEL_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -NNS_G3D_INLINE void NNS_G3dMdlUseGlbDiff(NNSG3dResMdl * pMdl); -NNS_G3D_INLINE void NNS_G3dMdlUseGlbAmb(NNSG3dResMdl * pMdl); -NNS_G3D_INLINE void NNS_G3dMdlUseGlbSpec(NNSG3dResMdl * pMdl); -NNS_G3D_INLINE void NNS_G3dMdlUseGlbEmi(NNSG3dResMdl * pMdl); -NNS_G3D_INLINE void NNS_G3dMdlUseGlbLightEnableFlag(NNSG3dResMdl * pMdl); -NNS_G3D_INLINE void NNS_G3dMdlUseGlbPolygonMode(NNSG3dResMdl * pMdl); -NNS_G3D_INLINE void NNS_G3dMdlUseGlbCullMode(NNSG3dResMdl * pMdl); -NNS_G3D_INLINE void NNS_G3dMdlUseGlbPolygonID(NNSG3dResMdl * pMdl); -NNS_G3D_INLINE void NNS_G3dMdlUseGlbAlpha(NNSG3dResMdl * pMdl); -NNS_G3D_INLINE void NNS_G3dMdlUseGlbFogEnableFlag(NNSG3dResMdl * pMdl); -NNS_G3D_INLINE void NNS_G3dMdlUseGlbDepthTestCond(NNSG3dResMdl * pMdl); -NNS_G3D_INLINE void NNS_G3dMdlUseGlb1Dot(NNSG3dResMdl * pMdl); -NNS_G3D_INLINE void NNS_G3dMdlUseGlbFarClip(NNSG3dResMdl * pMdl); -NNS_G3D_INLINE void NNS_G3dMdlUseGlbXLDepthUpdate(NNSG3dResMdl * pMdl); - -NNS_G3D_INLINE void NNS_G3dMdlUseMdlDiff(NNSG3dResMdl * pMdl); -NNS_G3D_INLINE void NNS_G3dMdlUseMdlAmb(NNSG3dResMdl * pMdl); -NNS_G3D_INLINE void NNS_G3dMdlUseMdlSpec(NNSG3dResMdl * pMdl); -NNS_G3D_INLINE void NNS_G3dMdlUseMdlEmi(NNSG3dResMdl * pMdl); -NNS_G3D_INLINE void NNS_G3dMdlUseMdlLightEnableFlag(NNSG3dResMdl * pMdl); -NNS_G3D_INLINE void NNS_G3dMdlUseMdlPolygonMode(NNSG3dResMdl * pMdl); -NNS_G3D_INLINE void NNS_G3dMdlUseMdlCullMode(NNSG3dResMdl * pMdl); -NNS_G3D_INLINE void NNS_G3dMdlUseMdlPolygonID(NNSG3dResMdl * pMdl); -NNS_G3D_INLINE void NNS_G3dMdlUseMdlAlpha(NNSG3dResMdl * pMdl); -NNS_G3D_INLINE void NNS_G3dMdlUseMdlFogEnableFlag(NNSG3dResMdl * pMdl); -NNS_G3D_INLINE void NNS_G3dMdlUseMdlDepthTestCond(NNSG3dResMdl * pMdl); -NNS_G3D_INLINE void NNS_G3dMdlUseMdl1Dot(NNSG3dResMdl * pMdl); -NNS_G3D_INLINE void NNS_G3dMdlUseMdlFarClip(NNSG3dResMdl * pMdl); -NNS_G3D_INLINE void NNS_G3dMdlUseMdlXLDepthUpdate(NNSG3dResMdl * pMdl); - -void NNS_G3dMdlSetMdlDiff(NNSG3dResMdl * pMdl, u32 matID, GXRgb col); -void NNS_G3dMdlSetMdlAmb(NNSG3dResMdl * pMdl, u32 matID, GXRgb col); -void NNS_G3dMdlSetMdlSpec(NNSG3dResMdl * pMdl, u32 matID, GXRgb col); -void NNS_G3dMdlSetMdlEmi(NNSG3dResMdl * pMdl, u32 matID, GXRgb col); -void NNS_G3dMdlSetMdlLightEnableFlag(NNSG3dResMdl * pMdl, u32 matID, int light); -void NNS_G3dMdlSetMdlPolygonMode(NNSG3dResMdl * pMdl, u32 matID, GXPolygonMode polyMode); -void NNS_G3dMdlSetMdlCullMode(NNSG3dResMdl * pMdl, u32 matID, GXCull cullMode); -void NNS_G3dMdlSetMdlPolygonID(NNSG3dResMdl * pMdl, u32 matID, int polygonID); -void NNS_G3dMdlSetMdlAlpha(NNSG3dResMdl * pMdl, u32 matID, int alpha); -void NNS_G3dMdlSetMdlFogEnableFlag(NNSG3dResMdl * pMdl, u32 matID, BOOL flag); -void NNS_G3dMdlSetMdlDepthTestCond(NNSG3dResMdl * pMdl, u32 matID, BOOL flag); -void NNS_G3dMdlSetMdl1Dot(NNSG3dResMdl * pMdl, u32 matID, BOOL flag); -void NNS_G3dMdlSetMdlFarClip(NNSG3dResMdl * pMdl, u32 matID, BOOL flag); -void NNS_G3dMdlSetMdlXLDepthUpdate(NNSG3dResMdl * pMdl, u32 matID, BOOL flag); - -GXRgb NNS_G3dMdlGetMdlDiff(const NNSG3dResMdl * pMdl, u32 matID); -GXRgb NNS_G3dMdlGetMdlAmb(const NNSG3dResMdl * pMdl, u32 matID); -GXRgb NNS_G3dMdlGetMdlSpec(const NNSG3dResMdl * pMdl, u32 matID); -GXRgb NNS_G3dMdlGetMdlEmi(const NNSG3dResMdl * pMdl, u32 matID); -int NNS_G3dMdlGetMdlLightEnableFlag(const NNSG3dResMdl * pMdl, u32 matID); -GXPolygonMode NNS_G3dMdlGetMdlPolygonMode(const NNSG3dResMdl * pMdl, u32 matID); -GXCull NNS_G3dMdlGetMdlCullMode(const NNSG3dResMdl * pMdl, u32 matID); -int NNS_G3dMdlGetMdlPolygonID(const NNSG3dResMdl * pMdl, u32 matID); -int NNS_G3dMdlGetMdlAlpha(const NNSG3dResMdl * pMdl, u32 matID); -BOOL NNS_G3dMdlGetMdlFogEnableFlag(const NNSG3dResMdl * pMdl, u32 matID); -BOOL NNS_G3dMdlGetMdlDepthTestCond(const NNSG3dResMdl * pMdl, u32 matID); -BOOL NNS_G3dMdlGetMdl1Dot(const NNSG3dResMdl * pMdl, u32 matID); -BOOL NNS_G3dMdlGetMdlFarClip(const NNSG3dResMdl * pMdl, u32 matID); -BOOL NNS_G3dMdlGetMdlXLDepthUpdate(const NNSG3dResMdl * pMdl, u32 matID); - -void NNS_G3dMdlSetMdlDiffAll(NNSG3dResMdl * pMdl, GXRgb col); -void NNS_G3dMdlSetMdlAmbAll(NNSG3dResMdl * pMdl, GXRgb col); -void NNS_G3dMdlSetMdlSpecAll(NNSG3dResMdl * pMdl, GXRgb col); -void NNS_G3dMdlSetMdlEmiAll(NNSG3dResMdl * pMdl, GXRgb col); -void NNS_G3dMdlSetMdlLightEnableFlagAll(NNSG3dResMdl * pMdl, int light); -void NNS_G3dMdlSetMdlPolygonModeAll(NNSG3dResMdl * pMdl, GXPolygonMode polyMode); -void NNS_G3dMdlSetMdlCullModeAll(NNSG3dResMdl * pMdl, GXCull cullMode); -void NNS_G3dMdlSetMdlPolygonIDAll(NNSG3dResMdl * pMdl, int polygonID); -void NNS_G3dMdlSetMdlAlphaAll(NNSG3dResMdl * pMdl, int alpha); -void NNS_G3dMdlSetMdlFogEnableFlagAll(NNSG3dResMdl * pMdl, BOOL flag); -void NNS_G3dMdlSetMdlDepthTestCondAll(NNSG3dResMdl * pMdl, BOOL flag); -void NNS_G3dMdlSetMdl1DotAll(NNSG3dResMdl * pMdl, BOOL flag); -void NNS_G3dMdlSetMdlFarClipAll(NNSG3dResMdl * pMdl, BOOL flag); -void NNS_G3dMdlSetMdlXLDepthUpdateAll(NNSG3dResMdl * pMdl, BOOL flag); - -#ifdef __cplusplus -} -#endif - -#include - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g3d/model_inline.h b/subprojects/NitroSystem/include/nnsys/g3d/model_inline.h deleted file mode 100644 index 97ac143c0e..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g3d/model_inline.h +++ /dev/null @@ -1,213 +0,0 @@ -#ifndef NNSG3D_MODEL_INLINE_ -#define NNSG3D_MODEL_INLINE_ - -#ifdef __cplusplus -extern "C" { -#endif - -void NNSi_G3dModifyMatFlag(NNSG3dResMdl * pMdl, BOOL isOn, NNSG3dMatFlag flag); -void NNSi_G3dModifyPolygonAttrMask(NNSG3dResMdl * pMdl, BOOL isOn, u32 mask); - -NNS_G3D_INLINE void NNS_G3dMdlUseGlbDiff (NNSG3dResMdl * pMdl) -{ - NNSi_G3dModifyMatFlag(pMdl, - FALSE, - NNS_G3D_MATFLAG_DIFFUSE); -} - -NNS_G3D_INLINE void NNS_G3dMdlUseGlbAmb (NNSG3dResMdl * pMdl) -{ - NNSi_G3dModifyMatFlag(pMdl, - FALSE, - NNS_G3D_MATFLAG_AMBIENT); -} - -NNS_G3D_INLINE void NNS_G3dMdlUseGlbSpec (NNSG3dResMdl * pMdl) -{ - NNSi_G3dModifyMatFlag(pMdl, - FALSE, - NNS_G3D_MATFLAG_SPECULAR); -} - -NNS_G3D_INLINE void NNS_G3dMdlUseGlbEmi (NNSG3dResMdl * pMdl) -{ - NNSi_G3dModifyMatFlag(pMdl, - FALSE, - NNS_G3D_MATFLAG_EMISSION); -} - -NNS_G3D_INLINE void NNS_G3dMdlUseGlbLightEnableFlag (NNSG3dResMdl * pMdl) -{ - NNSi_G3dModifyPolygonAttrMask(pMdl, - FALSE, - REG_G3_POLYGON_ATTR_LE_MASK); -} - -NNS_G3D_INLINE void NNS_G3dMdlUseGlbPolygonMode (NNSG3dResMdl * pMdl) -{ - NNSi_G3dModifyPolygonAttrMask(pMdl, - FALSE, - REG_G3_POLYGON_ATTR_PM_MASK); -} - -NNS_G3D_INLINE void NNS_G3dMdlUseGlbCullMode (NNSG3dResMdl * pMdl) -{ - NNSi_G3dModifyPolygonAttrMask(pMdl, - FALSE, - REG_G3_POLYGON_ATTR_BK_MASK | - REG_G3_POLYGON_ATTR_FR_MASK); -} - -NNS_G3D_INLINE void NNS_G3dMdlUseGlbPolygonID (NNSG3dResMdl * pMdl) -{ - NNSi_G3dModifyPolygonAttrMask(pMdl, - FALSE, - REG_G3_POLYGON_ATTR_ID_MASK); -} - -NNS_G3D_INLINE void NNS_G3dMdlUseGlbAlpha (NNSG3dResMdl * pMdl) -{ - NNSi_G3dModifyPolygonAttrMask(pMdl, - FALSE, - REG_G3_POLYGON_ATTR_ALPHA_MASK); -} - -NNS_G3D_INLINE void NNS_G3dMdlUseGlbFogEnableFlag (NNSG3dResMdl * pMdl) -{ - NNSi_G3dModifyPolygonAttrMask(pMdl, - FALSE, - REG_G3_POLYGON_ATTR_FE_MASK); -} - -NNS_G3D_INLINE void NNS_G3dMdlUseGlbDepthTestCond (NNSG3dResMdl * pMdl) -{ - NNSi_G3dModifyPolygonAttrMask(pMdl, - FALSE, - REG_G3_POLYGON_ATTR_DT_MASK); -} - -NNS_G3D_INLINE void NNS_G3dMdlUseGlb1Dot (NNSG3dResMdl * pMdl) -{ - NNSi_G3dModifyPolygonAttrMask(pMdl, - FALSE, - REG_G3_POLYGON_ATTR_D1_MASK); -} - -NNS_G3D_INLINE void NNS_G3dMdlUseGlbFarClip (NNSG3dResMdl * pMdl) -{ - NNSi_G3dModifyPolygonAttrMask(pMdl, - FALSE, - REG_G3_POLYGON_ATTR_FC_MASK); -} - -NNS_G3D_INLINE void NNS_G3dMdlUseGlbXLDepthUpdate (NNSG3dResMdl * pMdl) -{ - NNSi_G3dModifyPolygonAttrMask(pMdl, - FALSE, - REG_G3_POLYGON_ATTR_XL_MASK); -} - -NNS_G3D_INLINE void NNS_G3dMdlUseMdlDiff (NNSG3dResMdl * pMdl) -{ - NNSi_G3dModifyMatFlag(pMdl, - TRUE, - NNS_G3D_MATFLAG_DIFFUSE); -} - -NNS_G3D_INLINE void NNS_G3dMdlUseMdlAmb (NNSG3dResMdl * pMdl) -{ - NNSi_G3dModifyMatFlag(pMdl, - TRUE, - NNS_G3D_MATFLAG_AMBIENT); -} - -NNS_G3D_INLINE void NNS_G3dMdlUseMdlSpec (NNSG3dResMdl * pMdl) -{ - NNSi_G3dModifyMatFlag(pMdl, - TRUE, - NNS_G3D_MATFLAG_SPECULAR); -} - -NNS_G3D_INLINE void NNS_G3dMdlUseMdlEmi (NNSG3dResMdl * pMdl) -{ - NNSi_G3dModifyMatFlag(pMdl, - TRUE, - NNS_G3D_MATFLAG_EMISSION); -} - -NNS_G3D_INLINE void NNS_G3dMdlUseMdlLightEnableFlag (NNSG3dResMdl * pMdl) -{ - NNSi_G3dModifyPolygonAttrMask(pMdl, - TRUE, - REG_G3_POLYGON_ATTR_LE_MASK); -} - -NNS_G3D_INLINE void NNS_G3dMdlUseMdlPolygonMode (NNSG3dResMdl * pMdl) -{ - NNSi_G3dModifyPolygonAttrMask(pMdl, - TRUE, - REG_G3_POLYGON_ATTR_PM_MASK); -} - -NNS_G3D_INLINE void NNS_G3dMdlUseMdlCullMode (NNSG3dResMdl * pMdl) -{ - NNSi_G3dModifyPolygonAttrMask(pMdl, - TRUE, - REG_G3_POLYGON_ATTR_BK_MASK | - REG_G3_POLYGON_ATTR_FR_MASK); -} - -NNS_G3D_INLINE void NNS_G3dMdlUseMdlPolygonID (NNSG3dResMdl * pMdl) -{ - NNSi_G3dModifyPolygonAttrMask(pMdl, - TRUE, - REG_G3_POLYGON_ATTR_ID_MASK); -} - -NNS_G3D_INLINE void NNS_G3dMdlUseMdlAlpha (NNSG3dResMdl * pMdl) -{ - NNSi_G3dModifyPolygonAttrMask(pMdl, - TRUE, - REG_G3_POLYGON_ATTR_ALPHA_MASK); -} - -NNS_G3D_INLINE void NNS_G3dMdlUseMdlFogEnableFlag (NNSG3dResMdl * pMdl) -{ - NNSi_G3dModifyPolygonAttrMask(pMdl, - TRUE, - REG_G3_POLYGON_ATTR_FE_MASK); -} - -NNS_G3D_INLINE void NNS_G3dMdlUseMdlDepthTestCond (NNSG3dResMdl * pMdl) -{ - NNSi_G3dModifyPolygonAttrMask(pMdl, - TRUE, - REG_G3_POLYGON_ATTR_DT_MASK); -} - -NNS_G3D_INLINE void NNS_G3dMdlUseMdl1Dot (NNSG3dResMdl * pMdl) -{ - NNSi_G3dModifyPolygonAttrMask(pMdl, - TRUE, - REG_G3_POLYGON_ATTR_D1_MASK); -} - -NNS_G3D_INLINE void NNS_G3dMdlUseMdlFarClip (NNSG3dResMdl * pMdl) -{ - NNSi_G3dModifyPolygonAttrMask(pMdl, - TRUE, - REG_G3_POLYGON_ATTR_FC_MASK); -} - -NNS_G3D_INLINE void NNS_G3dMdlUseMdlXLDepthUpdate (NNSG3dResMdl * pMdl) -{ - NNSi_G3dModifyPolygonAttrMask(pMdl, - TRUE, - REG_G3_POLYGON_ATTR_XL_MASK); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g3d/sbc.h b/subprojects/NitroSystem/include/nnsys/g3d/sbc.h deleted file mode 100644 index 658729f318..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g3d/sbc.h +++ /dev/null @@ -1,156 +0,0 @@ -#ifndef NNSG3D_SBC_H_ -#define NNSG3D_SBC_H_ - -#include -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - NNS_G3D_RSFLAG_NODE_VISIBLE = 0x00000001, - NNS_G3D_RSFLAG_MAT_TRANSPARENT = 0x00000002, - NNS_G3D_RSFLAG_CURRENT_NODE_VALID = 0x00000004, - NNS_G3D_RSFLAG_CURRENT_MAT_VALID = 0x00000008, - NNS_G3D_RSFLAG_CURRENT_NODEDESC_VALID = 0x00000010, - NNS_G3D_RSFLAG_RETURN = 0x00000020, - NNS_G3D_RSFLAG_SKIP = 0x00000040, - - NNS_G3D_RSFLAG_OPT_RECORD = 0x00000080, - NNS_G3D_RSFLAG_OPT_NOGECMD = 0x00000100, - NNS_G3D_RSFLAG_OPT_SKIP_SBCDRAW = 0x00000200, - NNS_G3D_RSFLAG_OPT_SKIP_SBCMTXCALC = 0x00000400 -} NNSG3dRSFlag; - -typedef struct NNSG3dRS_ { - u8 * c; - NNSG3dRenderObj * pRenderObj; - u32 flag; - - NNSG3dSbcCallBackFunc cbVecFunc[NNS_G3D_SBC_COMMAND_NUM]; - u8 cbVecTiming[NNS_G3D_SBC_COMMAND_NUM]; - - u8 currentNode; - - u8 currentMat; - - u8 currentNodeDesc; - - u8 dummy_; - - NNSG3dMatAnmResult * pMatAnmResult; - - NNSG3dJntAnmResult * pJntAnmResult; - - NNSG3dVisAnmResult * pVisAnmResult; - - u32 isMatCached[NNS_G3D_SIZE_MAT_MAX / 32]; - - u32 isScaleCacheOne[NNS_G3D_SIZE_JNT_MAX / 32]; - -#if (NNS_G3D_USE_EVPCACHE) - u32 isEvpCached[NNS_G3D_SIZE_JNT_MAX / 32]; -#endif - - const NNSG3dResNodeInfo * pResNodeInfo; - const NNSG3dResMat * pResMat; - const NNSG3dResShp * pResShp; - fx32 posScale; - fx32 invPosScale; - NNSG3dGetJointScale funcJntScale; - NNSG3dSendJointSRT funcJntMtx; - NNSG3dSendTexSRT funcTexMtx; - - NNSG3dMatAnmResult tmpMatAnmResult; - NNSG3dJntAnmResult tmpJntAnmResult; - NNSG3dVisAnmResult tmpVisAnmResult; -} NNSG3dRS; - -typedef struct NNSG3dRSOnGlb_ { - struct NNSG3dMatAnmResult_ matCache[NNS_G3D_SIZE_MAT_MAX]; - - struct { - VecFx32 s; - VecFx32 inv; - } scaleCache[NNS_G3D_SIZE_JNT_MAX]; - -#if (NNS_G3D_USE_EVPCACHE) - struct { - MtxFx44 M; - MtxFx33 N; - } evpCache[NNS_G3D_SIZE_JNT_MAX]; -#endif -} NNSG3dRSOnGlb; - -typedef void (* NNSG3dFuncSbc)(NNSG3dRS *, u32); - -typedef void (* NNSG3dFuncSbc_MatInternal)(NNSG3dRS *, u32, const NNSG3dResMatData *, u32); -typedef void (* NNSG3dFuncSbc_ShpInternal)(NNSG3dRS *, u32, const NNSG3dResShpData *, u32); - -#define NNS_G3D_MTXSTACK_SYS (30) -#define NNS_G3D_MTXSTACK_USER (29) - -NNS_G3D_INLINE void NNS_G3dRSSetCallBack(NNSG3dRS * rs, NNSG3dSbcCallBackFunc func, u8 cmd, NNSG3dSbcCallBackTiming timing); -NNS_G3D_INLINE void NNS_G3dRSResetCallBack(NNSG3dRS * rs, u8 cmd); -NNS_G3D_INLINE NNSG3dRenderObj * NNS_G3dRSGetRenderObj(NNSG3dRS * rs); -NNS_G3D_INLINE NNSG3dMatAnmResult * NNS_G3dRSGetMatAnmResult(NNSG3dRS * rs); -NNS_G3D_INLINE NNSG3dJntAnmResult * NNS_G3dRSGetJntAnmResult(NNSG3dRS * rs); -NNS_G3D_INLINE NNSG3dVisAnmResult * NNS_G3dRSGetVisAnmResult(NNSG3dRS * rs); -NNS_G3D_INLINE u8 * NNS_G3dRSGetSbcPtr(NNSG3dRS * rs); -NNS_G3D_INLINE void NNS_G3dRSSetFlag(NNSG3dRS * rs, NNSG3dRSFlag flag); -NNS_G3D_INLINE void NNS_G3dRSResetFlag(NNSG3dRS * rs, NNSG3dRSFlag flag); -NNS_G3D_INLINE int NNS_G3dRSGetCurrentMatID(const NNSG3dRS * rs); -NNS_G3D_INLINE int NNS_G3dRSGetCurrentNodeID(const NNSG3dRS * rs); -NNS_G3D_INLINE int NNS_G3dRSGetCurrentNodeDescID(const NNSG3dRS * rs); -NNS_G3D_INLINE fx32 NNS_G3dRSGetPosScale(const NNSG3dRS * rs); -NNS_G3D_INLINE fx32 NNS_G3dRSGetInvPosScale(const NNSG3dRS * rs); - -void NNS_G3dDraw(struct NNSG3dRenderObj_ * pRenderObj); - -void NNSi_G3dFuncSbc_NOP(NNSG3dRS *, u32); -void NNSi_G3dFuncSbc_RET(NNSG3dRS *, u32); -void NNSi_G3dFuncSbc_NODE(NNSG3dRS *, u32); -void NNSi_G3dFuncSbc_MTX(NNSG3dRS *, u32); -void NNSi_G3dFuncSbc_MAT(NNSG3dRS *, u32); -void NNSi_G3dFuncSbc_SHP(NNSG3dRS *, u32); -void NNSi_G3dFuncSbc_NODEDESC(NNSG3dRS *, u32); -void NNSi_G3dFuncSbc_BB(NNSG3dRS *, u32); -void NNSi_G3dFuncSbc_BBY(NNSG3dRS *, u32); -void NNSi_G3dFuncSbc_NODEMIX(NNSG3dRS *, u32); -void NNSi_G3dFuncSbc_CALLDL(NNSG3dRS *, u32); -void NNSi_G3dFuncSbc_POSSCALE(NNSG3dRS *, u32); -void NNSi_G3dFuncSbc_ENVMAP(NNSG3dRS *, u32); -void NNSi_G3dFuncSbc_PRJMAP(NNSG3dRS *, u32); - -void NNSi_G3dFuncSbc_SHP_InternalDefault(NNSG3dRS * rs, - u32 opt, - const NNSG3dResShpData * shp, - u32 idxShp); - -void NNSi_G3dFuncSbc_MAT_InternalDefault(NNSG3dRS * rs, - u32 opt, - const NNSG3dResMatData * mat, - u32 idxMat); - -NNS_G3D_INLINE BOOL NNSi_G3dCallBackCheck_A(NNSG3dRS * rs, u8 cmd, NNSG3dSbcCallBackTiming * pTiming); -NNS_G3D_INLINE BOOL NNSi_G3dCallBackCheck_B(NNSG3dRS * rs, u8 cmd, NNSG3dSbcCallBackTiming * pTiming); -NNS_G3D_INLINE BOOL NNSi_G3dCallBackCheck_C(NNSG3dRS * rs, u8 cmd, NNSG3dSbcCallBackTiming timing); -NNS_G3D_INLINE NNSG3dSbcCallBackTiming NNSi_CheckPossibilityOfCallBack(NNSG3dRS * rs, u8 cmd); - -extern NNSG3dFuncSbc NNS_G3dFuncSbcTable[NNS_G3D_SBC_COMMAND_NUM]; -extern NNSG3dFuncSbc_MatInternal NNS_G3dFuncSbcMatTable[NNS_G3D_SIZE_MAT_VTBL_NUM]; -extern NNSG3dFuncSbc_ShpInternal NNS_G3dFuncSbcShpTable[NNS_G3D_SIZE_SHP_VTBL_NUM]; -extern NNSG3dRS * NNS_G3dRS; -extern NNSG3dRSOnGlb NNS_G3dRSOnGlb; - -#ifdef __cplusplus -} -#endif - -#include - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g3d/sbc_inline.h b/subprojects/NitroSystem/include/nnsys/g3d/sbc_inline.h deleted file mode 100644 index 658a2097a9..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g3d/sbc_inline.h +++ /dev/null @@ -1,188 +0,0 @@ -#ifndef NNSG3D_SBC_INLINE_H_ -#define NNSG3D_SBC_INLINE_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef NNS_G3D_SBC_CALLBACK_TIMING_A_DISABLE -NNS_G3D_INLINE BOOL NNSi_G3dCallBackCheck_A (NNSG3dRS * rs, u8 cmd, NNSG3dSbcCallBackTiming * pTiming) -{ - *pTiming = NNSi_CheckPossibilityOfCallBack(rs, cmd); - if (*pTiming == NNS_G3D_SBC_CALLBACK_TIMING_A) { - rs->flag &= ~NNS_G3D_RSFLAG_SKIP; - (*rs->cbVecFunc[cmd])(rs); - - *pTiming = NNSi_CheckPossibilityOfCallBack(rs, cmd); - return (BOOL)(rs->flag & NNS_G3D_RSFLAG_SKIP); - } else { - return FALSE; - } -} -#else -NNS_G3D_INLINE BOOL NNSi_G3dCallBackCheck_A (NNSG3dRS * rs, u8 cmd, NNSG3dSbcCallBackTiming * pTiming) -{ - *pTiming = NNSi_CheckPossibilityOfCallBack(rs, cmd); - return FALSE; -} -#endif - -#ifndef NNS_G3D_SBC_CALLBACK_TIMING_B_DISABLE -NNS_G3D_INLINE BOOL NNSi_G3dCallBackCheck_B (NNSG3dRS * rs, u8 cmd, NNSG3dSbcCallBackTiming * pTiming) -{ - if (*pTiming == NNS_G3D_SBC_CALLBACK_TIMING_B) { - rs->flag &= ~NNS_G3D_RSFLAG_SKIP; - (*rs->cbVecFunc[cmd])(rs); - - *pTiming = NNSi_CheckPossibilityOfCallBack(rs, cmd); - return (BOOL)(rs->flag & NNS_G3D_RSFLAG_SKIP); - } else { - return FALSE; - } -} -#else -NNS_G3D_INLINE BOOL NNSi_G3dCallBackCheck_B (NNSG3dRS *, u8, NNSG3dSbcCallBackTiming *) -{ - return FALSE; -} -#endif - -#ifndef NNS_G3D_SBC_CALLBACK_TIMING_C_DISABLE -NNS_G3D_INLINE BOOL NNSi_G3dCallBackCheck_C (NNSG3dRS * rs, u8 cmd, NNSG3dSbcCallBackTiming timing) -{ - if (timing == NNS_G3D_SBC_CALLBACK_TIMING_C) { - rs->flag &= ~NNS_G3D_RSFLAG_SKIP; - (*rs->cbVecFunc[cmd])(rs); - - return (BOOL)(rs->flag & NNS_G3D_RSFLAG_SKIP); - } else { - return FALSE; - } -} -#else -NNS_G3D_INLINE BOOL NNSi_G3dCallBackCheck_C (NNSG3dRS *, u8, NNSG3dSbcCallBackTiming) -{ - return FALSE; -} -#endif - -NNS_G3D_INLINE NNSG3dSbcCallBackTiming NNSi_CheckPossibilityOfCallBack (NNSG3dRS * rs, u8 cmd) -{ - if (rs->cbVecFunc[cmd]) { - return (NNSG3dSbcCallBackTiming)rs->cbVecTiming[cmd]; - } else { - return NNS_G3D_SBC_CALLBACK_TIMING_NONE; - } -} - -NNS_G3D_INLINE void NNS_G3dRSSetCallBack (NNSG3dRS * rs, - NNSG3dSbcCallBackFunc func, - u8 cmd, - NNSG3dSbcCallBackTiming timing) -{ - NNS_G3D_NULL_ASSERT(rs); - NNS_G3D_SBC_CALLBACK_TIMING_ASSERT(timing); - NNS_G3D_ASSERT(cmd < NNS_G3D_SBC_COMMAND_NUM); - - rs->cbVecFunc[cmd] = func; - rs->cbVecTiming[cmd] = timing; -} - -NNS_G3D_INLINE void NNS_G3dRSResetCallBack (NNSG3dRS * rs, u8 cmd) -{ - NNS_G3D_NULL_ASSERT(rs); - NNS_G3D_ASSERT(cmd < NNS_G3D_SBC_COMMAND_NUM); - - rs->cbVecFunc[cmd] = NULL; - rs->cbVecTiming[cmd] = (u8)NNS_G3D_SBC_CALLBACK_TIMING_NONE; -} - -NNS_G3D_INLINE NNSG3dRenderObj * NNS_G3dRSGetRenderObj (NNSG3dRS * rs) -{ - NNS_G3D_NULL_ASSERT(rs); - return rs->pRenderObj; -} - -NNS_G3D_INLINE NNSG3dMatAnmResult * NNS_G3dRSGetMatAnmResult (NNSG3dRS * rs) -{ - NNS_G3D_NULL_ASSERT(rs); - return rs->pMatAnmResult; -} - -NNS_G3D_INLINE NNSG3dJntAnmResult * NNS_G3dRSGetJntAnmResult (NNSG3dRS * rs) -{ - NNS_G3D_NULL_ASSERT(rs); - return rs->pJntAnmResult; -} - -NNS_G3D_INLINE NNSG3dVisAnmResult * NNS_G3dRSGetVisAnmResult (NNSG3dRS * rs) -{ - NNS_G3D_NULL_ASSERT(rs); - return rs->pVisAnmResult; -} - -NNS_G3D_INLINE u8 * NNS_G3dRSGetSbcPtr (NNSG3dRS * rs) -{ - NNS_G3D_NULL_ASSERT(rs); - return rs->c; -} - -NNS_G3D_INLINE void NNS_G3dRSSetFlag (NNSG3dRS * rs, NNSG3dRSFlag flag) -{ - NNS_G3D_NULL_ASSERT(rs); - rs->flag |= flag; -} - -NNS_G3D_INLINE void NNS_G3dRSResetFlag (NNSG3dRS * rs, NNSG3dRSFlag flag) -{ - NNS_G3D_NULL_ASSERT(rs); - rs->flag &= ~flag; -} - -NNS_G3D_INLINE int NNS_G3dRSGetCurrentMatID (const NNSG3dRS * rs) -{ - NNS_G3D_NULL_ASSERT(rs); - if (rs->flag & NNS_G3D_RSFLAG_CURRENT_MAT_VALID) { - return rs->currentMat; - } else { - return -1; - } -} - -NNS_G3D_INLINE int NNS_G3dRSGetCurrentNodeID (const NNSG3dRS * rs) -{ - NNS_G3D_NULL_ASSERT(rs); - if (rs->flag & NNS_G3D_RSFLAG_CURRENT_NODE_VALID) { - return rs->currentNode; - } else { - return -1; - } -} - -NNS_G3D_INLINE int NNS_G3dRSGetCurrentNodeDescID (const NNSG3dRS * rs) -{ - NNS_G3D_NULL_ASSERT(rs); - if (rs->flag & NNS_G3D_RSFLAG_CURRENT_NODEDESC_VALID) { - return rs->currentNodeDesc; - } else { - return -1; - } -} - -NNS_G3D_INLINE fx32 NNS_G3dRSGetPosScale (const NNSG3dRS * rs) -{ - NNS_G3D_NULL_ASSERT(rs); - return rs->posScale; -} - -NNS_G3D_INLINE fx32 NNS_G3dRSGetInvPosScale (const NNSG3dRS * rs) -{ - NNS_G3D_NULL_ASSERT(rs); - return rs->invPosScale; -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g3d/util.h b/subprojects/NitroSystem/include/nnsys/g3d/util.h deleted file mode 100644 index 2c2679e392..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g3d/util.h +++ /dev/null @@ -1,96 +0,0 @@ -#ifndef NNSG3D_UTIL_H_ -#define NNSG3D_UTIL_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef __cplusplus - -#define NNS_G3D_UTIL_RESNAME_LEN 17 -#else -#define NNS_G3D_UTIL_RESNAME_LEN 16 -#endif - -typedef union { - char _0[NNS_G3D_UTIL_RESNAME_LEN]; - struct { - NNSG3dResName resName; -#ifdef __cplusplus - u32 _1; -#endif - }; -} NNSG3dUtilResName; - -#define NNS_G3D_DEFRESNAME(var, str) \ - static const NNSG3dUtilResName var ATTRIBUTE_ALIGN(4) = {str} - -#define NNS_G3D_GET_JNTID(pMdl, pJntID, literal) \ - do { \ - static const char name[NNS_G3D_UTIL_RESNAME_LEN] ATTRIBUTE_ALIGN(4) = literal; \ - *pJntID = NNS_G3dGetNodeIdxByName(NNS_G3dGetNodeInfo(pMdl), (NNSG3dResName *)name); \ - } while (0) - -#define NNS_G3D_GET_MATID(pMdl, pMatID, literal) \ - do { \ - static const char name[NNS_G3D_UTIL_RESNAME_LEN] ATTRIBUTE_ALIGN(4) = literal; \ - *pMatID = NNS_G3dGetMatIdxByName(NNS_G3dGetMat(pMdl), (NNSG3dResName *)name); \ - } while (0) - -#define NNS_G3D_GET_SHPID(pMdl, pShpID, literal) \ - do { \ - static const char name[NNS_G3D_UTIL_RESNAME_LEN] ATTRIBUTE_ALIGN(4) = literal; \ - *pShpID = NNS_G3dGetShpIdxByName(NNS_G3dGetShp(pMdl), (NNSG3dResName *)name); \ - } while (0) - -#define NNS_G3D_GET_MDL(pMdlSet, pMdl, literal) \ - do { \ - static const char name[NNS_G3D_UTIL_RESNAME_LEN] ATTRIBUTE_ALIGN(4) = literal; \ - pMdl = NNS_G3dGetMdlByName(pMdlSet, (NNSG3dResName *)name); \ - } while (0) - -#define NNS_G3D_GET_ANM(pRes, pResAnm, literal) \ - do { \ - static const char name[NNS_G3D_UTIL_RESNAME_LEN] ATTRIBUTE_ALIGN(4) = literal; \ - pResAnm = NNS_G3dGetAnmByName(pRes, pName); \ - } while (0) - -NNS_G3D_INLINE BOOL NNSi_G3dBitVecCheck(const u32 * vec, u32 idx); -NNS_G3D_INLINE void NNSi_G3dBitVecSet(u32 * vec, u32 idx); -NNS_G3D_INLINE void NNSi_G3dBitVecReset(u32 * vec, u32 idx); - -void NNS_G3dGetCurrentMtx(MtxFx43 * m, MtxFx33 * n); -BOOL NNS_G3dGetResultMtx(const NNSG3dRenderObj * pRenderObj, - MtxFx43 * pos, - MtxFx33 * nrm, - u32 nodeID); -BOOL NNS_G3dSetResultMtx(const NNSG3dRenderObj * pRenderObj, - const MtxFx43 * pos, - const MtxFx33 * nrm, - u32 nodeID); - -void NNS_G3dInit(void); - -int NNS_G3dGetSbcCmdLen(const u8 * c); -const u8 * NNS_G3dSearchSbcCmd(const u8 * c, u8 cmd); -const u8 * NNS_G3dGetParentNodeID(int * parentID, const u8 * sbc, u32 nodeID); -int NNS_G3dGetChildNodeIDList(u8 * idList, const u8 * sbc, u32 nodeID); - -BOOL NNS_G3dResDefaultSetup(void * pResData); -void NNS_G3dResDefaultRelease(void * pResData); - -int NNS_G3dLocalOriginToScrPos(int * px, int * py); -int NNS_G3dWorldPosToScrPos(const VecFx32 * pWorld, int * px, int * py); -int NNS_G3dScrPosToWorldLine(int px, int py, VecFx32 * pNear, VecFx32 * pFar); - -#ifdef __cplusplus -} -#endif - -#include - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/g3d/util_inline.h b/subprojects/NitroSystem/include/nnsys/g3d/util_inline.h deleted file mode 100644 index f1569bd5d9..0000000000 --- a/subprojects/NitroSystem/include/nnsys/g3d/util_inline.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef NNSG3D_UTIL_INLINE_H_ -#define NNSG3D_UTIL_INLINE_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -NNS_G3D_INLINE BOOL NNSi_G3dBitVecCheck (const u32 * vec, u32 idx) -{ - NNS_G3D_NULL_ASSERT(vec); - return (BOOL)(vec[idx >> 5] & (1 << (idx & 31))); -} - -NNS_G3D_INLINE void NNSi_G3dBitVecSet (u32 * vec, u32 idx) -{ - NNS_G3D_NULL_ASSERT(vec); - vec[idx >> 5] |= 1 << (idx & 31); -} - -NNS_G3D_INLINE void NNSi_G3dBitVecReset (u32 * vec, u32 idx) -{ - NNS_G3D_NULL_ASSERT(vec); - vec[idx >> 5] &= ~(1 << (idx & 31)); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/gfd.h b/subprojects/NitroSystem/include/nnsys/gfd.h deleted file mode 100644 index 0df5cac5ba..0000000000 --- a/subprojects/NitroSystem/include/nnsys/gfd.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef NNS_GFD_H_ -#define NNS_GFD_H_ - -#include - -#include -#include -#include - -#include -#include -#include - -#include - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/gfd/VramManager/gfd_BitArrayPlttVramMan.h b/subprojects/NitroSystem/include/nnsys/gfd/VramManager/gfd_BitArrayPlttVramMan.h deleted file mode 100644 index 599523d12e..0000000000 --- a/subprojects/NitroSystem/include/nnsys/gfd/VramManager/gfd_BitArrayPlttVramMan.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef NNS_GFD_BITARRAYPLTTMAN_H_ -#define NNS_GFD_BITARRAYPLTTMAN_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -void NNS_GfdInitBarPlttVramManager -( - u32 szByte, - u32 bytePerOneBlock, - u32 * pBitTbl, - u32 lengthOfBitTbl, - BOOL useAsDefault -); - -NNSGfdPlttKey NNS_GfdAllocBarPlttVram -( - u32 szByte, - BOOL b4Pltt, - u32 bAllocFromLo -); - -int NNS_GfdFreeBarPlttVram(NNSGfdPlttKey plttKey); - -void NNS_GfdResetBarPlttVramState(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/gfd/VramManager/gfd_BitArrayTexVramMan.h b/subprojects/NitroSystem/include/nnsys/gfd/VramManager/gfd_BitArrayTexVramMan.h deleted file mode 100644 index ae247a86ee..0000000000 --- a/subprojects/NitroSystem/include/nnsys/gfd/VramManager/gfd_BitArrayTexVramMan.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef NNS_GFD_BITARRAYVRAMMAN_H_ -#define NNS_GFD_BITARRAYVRAMMAN_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -void NNS_GfdInitBarTexVramManager -( - u32 numSlot, - u32 bytePerOneBlock, - u32 * pBitTbl, - u32 lengthOfBitTbl, - BOOL useAsDefault -); - -NNSGfdTexKey NNS_GfdAllocBarTexVram(u32 szByte, BOOL is4x4comp, u32 opt); -int NNS_GfdFreeBarTexVram(NNSGfdTexKey memKey); -void NNS_GfdResetBarTexVramState(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/gfd/VramManager/gfd_FramePlttVramMan.h b/subprojects/NitroSystem/include/nnsys/gfd/VramManager/gfd_FramePlttVramMan.h deleted file mode 100644 index 0ba8072ed7..0000000000 --- a/subprojects/NitroSystem/include/nnsys/gfd/VramManager/gfd_FramePlttVramMan.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef NNS_GFD_FRAMEPLTTVRAMMAN_H_ -#define NNS_GFD_FRAMEPLTTVRAMMAN_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -typedef struct NNSGfdFrmPlttVramState { - u32 address[2]; -} NNSGfdFrmPlttVramState; - -typedef void (* NNSGfdFrmPlttVramDebugDumpCallBack)(u32 loAddr, u32 hiAddr, u32 szFree, u32 szTotal); - -void NNS_GfdDumpFrmPlttVramManager(); -void NNS_GfdDumpFrmPlttVramManagerEx(NNSGfdFrmPlttVramDebugDumpCallBack pFunc); - -void NNS_GfdInitFrmPlttVramManager(u32 szByte, BOOL useAsDefault); - -NNSGfdPlttKey NNS_GfdAllocFrmPlttVram(u32 szByte, BOOL b4Pltt, u32 bAllocFromLo); -int NNS_GfdFreeFrmPlttVram(NNSGfdPlttKey plttKey); - -void NNS_GfdGetFrmPlttVramState(NNSGfdFrmPlttVramState * pState); -void NNS_GfdSetFrmPlttVramState(const NNSGfdFrmPlttVramState * pState); -void NNS_GfdResetFrmPlttVramState(); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/gfd/VramManager/gfd_FrameTexVramMan.h b/subprojects/NitroSystem/include/nnsys/gfd/VramManager/gfd_FrameTexVramMan.h deleted file mode 100644 index d3656f1420..0000000000 --- a/subprojects/NitroSystem/include/nnsys/gfd/VramManager/gfd_FrameTexVramMan.h +++ /dev/null @@ -1,48 +0,0 @@ -#ifndef NNS_GFD_FRAMETEXVRAMMAN_H_ -#define NNS_GFD_FRAMETEXVRAMMAN_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -typedef struct NNSGfdFrmTexVramState { - u32 address[10]; -} NNSGfdFrmTexVramState; - -typedef void (* NNSGfdFrmTexVramDebugDumpCallBack)( - int index, - u32 startAddr, - u32 endAddr, - u32 blockMax, - BOOL bActive, - void * pUserContext); - -void NNSi_GfdSetTexNrmSearchArray -( - int idx1st, - int idx2nd, - int idx3rd, - int idx4th, - int idx5th -); - -void NNS_GfdDumpFrmTexVramManager(); -void NNS_GfdDumpFrmTexVramManagerEx(NNSGfdFrmTexVramDebugDumpCallBack pFunc, void * pUserContext); - -void NNS_GfdInitFrmTexVramManager(u16 numSlot, BOOL useAsDefault); - -NNSGfdTexKey NNS_GfdAllocFrmTexVram(u32 szByte, BOOL is4x4comp, u32 opt); -int NNS_GfdFreeFrmTexVram(NNSGfdTexKey memKey); - -void NNS_GfdGetFrmTexVramState(NNSGfdFrmTexVramState * pState); -void NNS_GfdSetFrmTexVramState(const NNSGfdFrmTexVramState * pState); -void NNS_GfdResetFrmTexVramState(); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/gfd/VramManager/gfd_LinkedListPlttVramMan.h b/subprojects/NitroSystem/include/nnsys/gfd/VramManager/gfd_LinkedListPlttVramMan.h deleted file mode 100644 index 28a6fca731..0000000000 --- a/subprojects/NitroSystem/include/nnsys/gfd/VramManager/gfd_LinkedListPlttVramMan.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef NNS_GFD_LINKEDLISTPLTTVRAMMAN_H_ -#define NNS_GFD_LINKEDLISTPLTTVRAMMAN_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include - -void NNS_GfdDumpLnkPlttVramManager(); -void NNS_GfdDumpLnkPlttVramManagerEx( - NNSGfdLnkDumpCallBack pFunc, - void * pUserData); - -u32 NNS_GfdGetLnkPlttVramManagerWorkSize(u32 numMemBlk); - -void NNS_GfdInitLnkPlttVramManager -( - u32 szByte, - void * pManagementWork, - u32 szByteManagementWork, - BOOL useAsDefault -); - -NNSGfdPlttKey NNS_GfdAllocLnkPlttVram(u32 szByte, BOOL b4Pltt, u32 opt); -int NNS_GfdFreeLnkPlttVram(NNSGfdPlttKey plttKey); -void NNS_GfdResetLnkPlttVramState(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/gfd/VramManager/gfd_LinkedListTexVramMan.h b/subprojects/NitroSystem/include/nnsys/gfd/VramManager/gfd_LinkedListTexVramMan.h deleted file mode 100644 index 9ce70e12bf..0000000000 --- a/subprojects/NitroSystem/include/nnsys/gfd/VramManager/gfd_LinkedListTexVramMan.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef NNS_GFD_LINKEDLISTTEXVRAMMAN_H_ -#define NNS_GFD_LINKEDLISTTEXVRAMMAN_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include - -void NNS_GfdDumpLnkTexVramManager(); -void NNS_GfdDumpLnkTexVramManagerEx( - NNSGfdLnkDumpCallBack pFuncForNrm, - NNSGfdLnkDumpCallBack pFuncFor4x4, - void * pUserData); - -u32 NNS_GfdGetLnkTexVramManagerWorkSize(u32 numMemBlk); - -void NNS_GfdInitLnkTexVramManager -( - u32 szByte, - u32 szByteFor4x4, - void * pManagementWork, - u32 szByteManagementWork, - BOOL useAsDefault -); - -NNSGfdTexKey NNS_GfdAllocLnkTexVram(u32 szByte, BOOL is4x4comp, u32 opt); -int NNS_GfdFreeLnkTexVram(NNSGfdTexKey memKey); -void NNS_GfdResetLnkTexVramState(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/gfd/VramManager/gfd_LinkedListVramMan.h b/subprojects/NitroSystem/include/nnsys/gfd/VramManager/gfd_LinkedListVramMan.h deleted file mode 100644 index 2f63883061..0000000000 --- a/subprojects/NitroSystem/include/nnsys/gfd/VramManager/gfd_LinkedListVramMan.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef NNS_GFD_LINKEDLISTVRAMMAN_H_ -#define NNS_GFD_LINKEDLISTVRAMMAN_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -typedef void (* NNSGfdLnkDumpCallBack)( - u32 addr, - u32 szByte, - void * pUserData); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/gfd/VramManager/gfd_PlttVramMan_Types.h b/subprojects/NitroSystem/include/nnsys/gfd/VramManager/gfd_PlttVramMan_Types.h deleted file mode 100644 index 3ff7bdceb3..0000000000 --- a/subprojects/NitroSystem/include/nnsys/gfd/VramManager/gfd_PlttVramMan_Types.h +++ /dev/null @@ -1,76 +0,0 @@ -#ifndef NNS_GFD_PLTTVRAMMAN_TYPES_H_ -#define NNS_GFD_PLTTVRAMMAN_TYPES_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -#define NNS_GFD_PLTTMASK_16BIT 0xFFFF - -#define NNS_GFD_PLTTKEY_SIZE_SHIFT 3 -#define NNS_GFD_PLTTKEY_ADDR_SHIFT 3 - -#define NNS_GFD_PLTTSIZE_MIN (0x1 << NNS_GFD_PLTTKEY_SIZE_SHIFT) -#define NNS_GFD_PLTTSIZE_MAX (NNS_GFD_PLTTMASK_16BIT << NNS_GFD_PLTTKEY_SIZE_SHIFT) - -#define NNS_GFD_ALLOC_ERROR_PLTTKEY (u32)0x0 -#define NNS_GFD_4PLTT_MAX_ADDR 0x10000 - -typedef u32 NNSGfdPlttKey; - -typedef NNSGfdPlttKey (* NNSGfdFuncAllocPlttVram)(u32 szByte, BOOL is4pltt, u32 opt); - -typedef int (* NNSGfdFuncFreePlttVram)(NNSGfdPlttKey plttKey); - -extern NNSGfdFuncAllocPlttVram NNS_GfdDefaultFuncAllocPlttVram; -extern NNSGfdFuncFreePlttVram NNS_GfdDefaultFuncFreePlttVram; - -NNS_GFD_INLINE NNSGfdPlttKey NNS_GfdAllocPlttVram (u32 szByte, BOOL is4pltt, u32 opt) -{ - return (*NNS_GfdDefaultFuncAllocPlttVram)(szByte, is4pltt, opt); -} - -NNS_GFD_INLINE int NNS_GfdFreePlttVram (NNSGfdPlttKey plttKey) -{ - return (*NNS_GfdDefaultFuncFreePlttVram)(plttKey); -} - -NNS_GFD_INLINE u32 NNSi_GfdGetPlttKeyRoundupSize (u32 size) -{ - if (size == 0) { - return NNS_GFD_PLTTSIZE_MIN; - } else { - return (((u32)(size) + (NNS_GFD_PLTTSIZE_MIN - 1)) & ~(NNS_GFD_PLTTSIZE_MIN - 1)); - } -} - -NNS_GFD_INLINE NNSGfdPlttKey NNS_GfdMakePlttKey (u32 addr, u32 size) -{ - SDK_ASSERT((addr & (u32)((0x1 << NNS_GFD_PLTTKEY_ADDR_SHIFT) - 1)) == 0); - SDK_ASSERT((size & (u32)((0x1 << NNS_GFD_PLTTKEY_SIZE_SHIFT) - 1)) == 0); - - SDK_ASSERT(((size >> NNS_GFD_PLTTKEY_SIZE_SHIFT) & ~NNS_GFD_PLTTMASK_16BIT) == 0); - SDK_ASSERT(((addr >> NNS_GFD_PLTTKEY_ADDR_SHIFT) & ~NNS_GFD_PLTTMASK_16BIT) == 0); - - return ((size >> NNS_GFD_PLTTKEY_SIZE_SHIFT) << 16) - | (0xFFFF & (addr >> NNS_GFD_PLTTKEY_ADDR_SHIFT)); -} - -NNS_GFD_INLINE u32 NNS_GfdGetPlttKeyAddr (NNSGfdPlttKey plttKey) -{ - return (u32)((0x0000FFFF & plttKey) << NNS_GFD_PLTTKEY_ADDR_SHIFT); -} - -NNS_GFD_INLINE u32 NNS_GfdGetPlttKeySize (NNSGfdPlttKey plttKey) -{ - return (u32)(((0xFFFF0000 & plttKey) >> 16) << NNS_GFD_PLTTKEY_SIZE_SHIFT); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/gfd/VramManager/gfd_TexVramMan_Types.h b/subprojects/NitroSystem/include/nnsys/gfd/VramManager/gfd_TexVramMan_Types.h deleted file mode 100644 index f46c8a9322..0000000000 --- a/subprojects/NitroSystem/include/nnsys/gfd/VramManager/gfd_TexVramMan_Types.h +++ /dev/null @@ -1,82 +0,0 @@ -#ifndef NNS_GFD_TEXVRAMMAN_TYPES_H_ -#define NNS_GFD_TEXVRAMMAN_TYPES_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -#define NNS_GFD_MASK_15BIT 0x7FFF -#define NNS_GFD_MASK_16BIT 0xFFFF - -#define NNS_GFD_TEXKEY_SIZE_SHIFT 4 -#define NNS_GFD_TEXKEY_ADDR_SHIFT 3 - -#define NNS_GFD_TEXSIZE_MIN (0x1 << NNS_GFD_TEXKEY_SIZE_SHIFT) -#define NNS_GFD_TEXSIZE_MAX (0x7FFF << NNS_GFD_TEXKEY_SIZE_SHIFT) - -#define NNS_GFD_ALLOC_ERROR_TEXKEY (u32)0x0 - -typedef u32 NNSGfdTexKey; - -typedef NNSGfdTexKey (* NNSGfdFuncAllocTexVram)(u32 szByte, BOOL is4x4comp, u32 opt); - -typedef int (* NNSGfdFuncFreeTexVram)(NNSGfdTexKey key); - -extern NNSGfdFuncAllocTexVram NNS_GfdDefaultFuncAllocTexVram; -extern NNSGfdFuncFreeTexVram NNS_GfdDefaultFuncFreeTexVram; - -NNS_GFD_INLINE NNSGfdTexKey NNS_GfdAllocTexVram (u32 szByte, BOOL is4x4comp, u32 opt) -{ - return (*NNS_GfdDefaultFuncAllocTexVram)(szByte, is4x4comp, opt); -} - -NNS_GFD_INLINE int NNS_GfdFreeTexVram (NNSGfdTexKey memKey) -{ - return (*NNS_GfdDefaultFuncFreeTexVram)(memKey); -} - -NNS_GFD_INLINE u32 NNSi_GfdGetTexKeyRoundupSize (u32 size) -{ - if (size == 0) { - return NNS_GFD_TEXSIZE_MIN; - } else { - return (((u32)(size) + (NNS_GFD_TEXSIZE_MIN - 1)) & ~(NNS_GFD_TEXSIZE_MIN - 1)); - } -} - -NNS_GFD_INLINE NNSGfdTexKey NNS_GfdMakeTexKey (u32 addr, u32 size, BOOL b4x4Comp) -{ - SDK_ASSERT((addr & (u32)((0x1 << NNS_GFD_TEXKEY_ADDR_SHIFT) - 1)) == 0); - SDK_ASSERT((size & (u32)((0x1 << NNS_GFD_TEXKEY_SIZE_SHIFT) - 1)) == 0); - - SDK_ASSERT(((size >> NNS_GFD_TEXKEY_SIZE_SHIFT) & ~NNS_GFD_MASK_15BIT) == 0); - SDK_ASSERT(((addr >> NNS_GFD_TEXKEY_ADDR_SHIFT) & ~NNS_GFD_MASK_16BIT) == 0); - - return ((size >> NNS_GFD_TEXKEY_SIZE_SHIFT) << 16) - | ((NNS_GFD_MASK_16BIT & (addr >> NNS_GFD_TEXKEY_ADDR_SHIFT))) - | b4x4Comp << 31; -} - -NNS_GFD_INLINE u32 NNS_GfdGetTexKeyAddr (NNSGfdTexKey memKey) -{ - return (u32)(((0x0000FFFF & memKey)) << NNS_GFD_TEXKEY_ADDR_SHIFT); -} - -NNS_GFD_INLINE u32 NNS_GfdGetTexKeySize (NNSGfdTexKey memKey) -{ - return (u32)(((0x7FFF0000 & memKey) >> 16) << NNS_GFD_TEXKEY_SIZE_SHIFT); -} - -NNS_GFD_INLINE BOOL NNS_GfdGetTexKey4x4Flag (NNSGfdTexKey memKey) -{ - return (BOOL)((0x80000000 & memKey) >> 31); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/gfd/VramManager/gfd_VramMan.h b/subprojects/NitroSystem/include/nnsys/gfd/VramManager/gfd_VramMan.h deleted file mode 100644 index 77ee9172ee..0000000000 --- a/subprojects/NitroSystem/include/nnsys/gfd/VramManager/gfd_VramMan.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef NNS_GFD_VRAMMAN_H_ -#define NNS_GFD_VRAMMAN_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#ifdef SDK_DEBUG - - #define NNS_GFD_PRINTF(...) OS_Printf(__VA_ARGS__) - #define NNS_GFD_WARNING(...) OS_Warning(__VA_ARGS__) - -#else - - #define NNS_GFD_PRINTF(...) ((void)0) - #define NNS_GFD_WARNING(...) ((void)0) - -#endif - -#ifdef NNS_GFD_DEBUG - #define NNS_GFD_DBGMSG(...) OS_Printf(__VA_ARGS__) -#else - #define NNS_GFD_DBGMSG(...) ((void)0) -#endif - -enum { - NNS_GFD_ALLOC_FROM_HIGH = 0, - NNS_GFD_ALLOC_FROM_LOW = 1 -}; - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/gfd/VramTransferMan/gfd_VramTransferManager.h b/subprojects/NitroSystem/include/nnsys/gfd/VramTransferMan/gfd_VramTransferManager.h deleted file mode 100644 index 544dec7084..0000000000 --- a/subprojects/NitroSystem/include/nnsys/gfd/VramTransferMan/gfd_VramTransferManager.h +++ /dev/null @@ -1,129 +0,0 @@ -#ifndef NNS_GFD_VRAM_TRANSFER_MANAGER_H_ -#define NNS_GFD_VRAM_TRANSFER_MANAGER_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum NNS_GFD_DST_TYPE { - NNS_GFD_DST_3D_TEX_VRAM = 0, - NNS_GFD_DST_3D_TEX_PLTT, - NNS_GFD_DST_3D_CLRIMG_COLOR, - NNS_GFD_DST_3D_CLRIMG_DEPTH, - - NNS_GFD_DST_2D_BG0_CHAR_MAIN, - NNS_GFD_DST_2D_BG1_CHAR_MAIN, - NNS_GFD_DST_2D_BG2_CHAR_MAIN, - NNS_GFD_DST_2D_BG3_CHAR_MAIN, - NNS_GFD_DST_2D_BG0_SCR_MAIN, - NNS_GFD_DST_2D_BG1_SCR_MAIN, - NNS_GFD_DST_2D_BG2_SCR_MAIN, - NNS_GFD_DST_2D_BG3_SCR_MAIN, - NNS_GFD_DST_2D_BG2_BMP_MAIN, - NNS_GFD_DST_2D_BG3_BMP_MAIN, - NNS_GFD_DST_2D_OBJ_PLTT_MAIN, - NNS_GFD_DST_2D_BG_PLTT_MAIN, - NNS_GFD_DST_2D_OBJ_EXTPLTT_MAIN, - NNS_GFD_DST_2D_BG_EXTPLTT_MAIN, - NNS_GFD_DST_2D_OBJ_OAM_MAIN, - NNS_GFD_DST_2D_OBJ_CHAR_MAIN, - - NNS_GFD_DST_2D_BG0_CHAR_SUB, - NNS_GFD_DST_2D_BG1_CHAR_SUB, - NNS_GFD_DST_2D_BG2_CHAR_SUB, - NNS_GFD_DST_2D_BG3_CHAR_SUB, - NNS_GFD_DST_2D_BG0_SCR_SUB, - NNS_GFD_DST_2D_BG1_SCR_SUB, - NNS_GFD_DST_2D_BG2_SCR_SUB, - NNS_GFD_DST_2D_BG3_SCR_SUB, - NNS_GFD_DST_2D_BG2_BMP_SUB, - NNS_GFD_DST_2D_BG3_BMP_SUB, - NNS_GFD_DST_2D_OBJ_PLTT_SUB, - NNS_GFD_DST_2D_BG_PLTT_SUB, - NNS_GFD_DST_2D_OBJ_EXTPLTT_SUB, - NNS_GFD_DST_2D_BG_EXTPLTT_SUB, - NNS_GFD_DST_2D_OBJ_OAM_SUB, - NNS_GFD_DST_2D_OBJ_CHAR_SUB, - - NNS_GFD_DST_MAX -} NNS_GFD_DST_TYPE; - -typedef struct NNSGfdVramTransferTask { - NNS_GFD_DST_TYPE type; - void * pSrc; - u32 dstAddr; - u32 szByte; -} NNSGfdVramTransferTask; - -typedef struct NNSGfdVramTransferTaskQueue { - NNSGfdVramTransferTask * pTaskArray; - u32 lengthOfArray; - - u16 idxFront; - u16 idxRear; - u16 numTasks; - u16 pad16_; - u32 totalSize; -} NNSGfdVramTransferTaskQueue; - -typedef struct NNSGfdVramTransferManager { - NNSGfdVramTransferTaskQueue taskQueue; -} NNSGfdVramTransferManager; - -BOOL -NNSi_GfdPushVramTransferTaskQueue -( - NNSGfdVramTransferTaskQueue * pQueue -); - -NNSGfdVramTransferTask * -NNSi_GfdGetFrontVramTransferTaskQueue -( - NNSGfdVramTransferTaskQueue * pQueue -); - -NNSGfdVramTransferTask * -NNSi_GfdGetEndVramTransferTaskQueue -( - NNSGfdVramTransferTaskQueue * pQueue -); - -BOOL -NNSi_GfdPopVramTransferTaskQueue -( - NNSGfdVramTransferTaskQueue * pQueue -); - -void -NNS_GfdInitVramTransferManager -( - NNSGfdVramTransferTask * pTaskArray, - u32 lengthOfArray -); - -void -NNS_GfdClearVramTransferManagerTask( ); - -void -NNS_GfdDoVramTransfer(void); - -BOOL -NNS_GfdRegisterNewVramTransferTask -( - NNS_GFD_DST_TYPE type, - u32 dstAddr, - void * pSrc, - u32 szByte -); - -u32 -NNS_GfdGetVramTransferTaskTotalSize(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/gfd/gfd_common.h b/subprojects/NitroSystem/include/nnsys/gfd/gfd_common.h deleted file mode 100644 index a7a16ecf68..0000000000 --- a/subprojects/NitroSystem/include/nnsys/gfd/gfd_common.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef NNS_GFD_COMMON_H_ -#define NNS_GFD_COMMON_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define NNS_GFD_NON_ZERO_ASSERT(val) SDK_ASSERTMSG((val != 0), "Non-Zero value is expected in this context."); - -#define NNS_GFD_ASSERT SDK_ASSERT -#define NNS_GFD_ASSERTMSG SDK_ASSERTMSG -#define NNS_GFD_NULL_ASSERT SDK_NULL_ASSERT -#define NNS_GFD_MINMAX_ASSERT SDK_MINMAX_ASSERT - -#define NNS_GFD_INLINE NNS_INLINE - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/inline.h b/subprojects/NitroSystem/include/nnsys/inline.h deleted file mode 100644 index d727628d6c..0000000000 --- a/subprojects/NitroSystem/include/nnsys/inline.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef NNS_INLINE_H_ -#define NNS_INLINE_H_ - -#if defined(_MSC_VER) || defined(NNS_FROM_TOOL) -#define NNS_INLINE __inline -#else -#define NNS_INLINE inline -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/mcs.h b/subprojects/NitroSystem/include/nnsys/mcs.h deleted file mode 100644 index 1cea5351cc..0000000000 --- a/subprojects/NitroSystem/include/nnsys/mcs.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef NNS_MCS_H_ -#define NNS_MCS_H_ - -#if defined(_WIN32) - -#include - -#else - -#include -#include -#include -#include -#include - -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/mcs/base.h b/subprojects/NitroSystem/include/nnsys/mcs/base.h deleted file mode 100644 index 6e1c5e9bf2..0000000000 --- a/subprojects/NitroSystem/include/nnsys/mcs/base.h +++ /dev/null @@ -1,140 +0,0 @@ -#ifndef NNS_MCS_BASE_H_ -#define NNS_MCS_BASE_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define NNS_MCS_WORKMEM_SIZE sizeof(NNSiMcsWork) - -typedef struct NNSMcsDeviceCaps NNSMcsDeviceCaps; -struct NNSMcsDeviceCaps { - u32 deviceID; - u32 maskResource; -}; - -typedef void (* NNSMcsRecvCallback)(const void * recv, u32 recvSize, u32 userData, u32 offset, u32 totalSize); - -typedef struct NNSMcsRecvCBInfo NNSMcsRecvCBInfo; -struct NNSMcsRecvCBInfo { - u32 channel; - NNSMcsRecvCallback cbFunc; - u32 userData; - NNSFndLink link; -}; - -typedef struct NNSiMcsWork NNSiMcsWork; -struct NNSiMcsWork { - u8 bProtocolError; - u8 bLengthEnable; - u8 bHostDataRecived; - u8 padding; - - OSMutex mutex; - NNSFndList recvCBInfoList; - - NNSiMcsMsg writeBuf; -}; - -#if defined(NNS_FINALROM) - - #define NNS_McsInit(workMem) ((void)(workMem)) - - #define NNS_McsGetMaxCaps() (0) - - #define NNS_McsOpen(pCaps) ((void)(pCaps), FALSE) - - #define NNS_McsClose() (FALSE) - - #define NNS_McsRegisterRecvCallback(pInfo, channel, cbFunc, userData) ((void)((void)((void)((void)((void)(pInfo), (channel)), (cbFunc)), (userData)), 0)) - - #define NNS_McsRegisterStreamRecvBuffer(channel, buf, bufSize) ((void)((void)((void)((void)(channel), (buf)), (bufSize)), 0)) - - #define NNS_McsUnregisterRecvResource(channel) ((void)(channel)) - - #define NNS_McsGetStreamReadableSize(channel) ((void)(channel), 0U) - - #define NNS_McsGetTotalStreamReadableSize(channel) ((void)(channel), 0U) - - #define NNS_McsReadStream(channel, data, size, pReadSize) ((void)((void)((void)((void)(channel), (data)), (size)), (pReadSize)), FALSE) - - #define NNS_McsGetStreamWritableLength(pLength) ((void)(pLength), FALSE) - - #define NNS_McsWriteStream(channel, data, size) ((void)((void)((void)(channel), (data)), (size)), FALSE) - - #define NNS_McsClearBuffer() ((void)0) - - #define NNS_McsIsServerConnect() (FALSE) - - #define NNS_McsPollingIdle() ((void)0) - - #define NNS_McsVBlankInterrupt() ((void)0) - - #define NNS_McsCartridgeInterrupt() ((void)0) - -#else - -void NNS_McsInit(void * workMem); - -int NNS_McsGetMaxCaps(void); - -BOOL NNS_McsOpen( - NNSMcsDeviceCaps * pCaps); - -BOOL NNS_McsClose(void); - -void NNS_McsRegisterRecvCallback( - NNSMcsRecvCBInfo * pInfo, - u16 channel, - NNSMcsRecvCallback cbFunc, - u32 userData); - -void NNS_McsRegisterStreamRecvBuffer( - u16 channel, - void * buf, - u32 bufSize); - -void NNS_McsUnregisterRecvResource( - u16 channel); - -u32 NNS_McsGetStreamReadableSize( - u16 channel); - -u32 NNS_McsGetTotalStreamReadableSize( - u16 channel); - -BOOL NNS_McsReadStream( - u16 channel, - void * data, - u32 size, - u32 * pReadSize); - -BOOL NNS_McsGetStreamWritableLength( - u32 * pLength); - -BOOL NNS_McsWriteStream( - u16 channel, - const void * data, - u32 size); - -void NNS_McsClearBuffer(void); - -BOOL NNS_McsIsServerConnect(void); - -void NNS_McsPollingIdle(void); - -void NNS_McsVBlankInterrupt(void); - -void NNS_McsCartridgeInterrupt(void); - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/mcs/baseCommon.h b/subprojects/NitroSystem/include/nnsys/mcs/baseCommon.h deleted file mode 100644 index 1a447077ff..0000000000 --- a/subprojects/NitroSystem/include/nnsys/mcs/baseCommon.h +++ /dev/null @@ -1,43 +0,0 @@ -#ifndef NNS_MCS_BASECOMMON_H_ -#define NNS_MCS_BASECOMMON_H_ - -#if defined(_MSC_VER) - - #include "mcsStdInt.h" - -typedef uint8_t u8; -typedef uint16_t u16; -typedef uint32_t u32; - -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define NNSi_MCS_MESSAGE_SIZE_MAX (1024 * 32) - -#define NNSi_MCS_MSG_HEAD_SIZE sizeof(NNSiMcsMsgHead) - -#define NNSi_MCS_MSG_DATA_SIZE_MAX (NNSi_MCS_MESSAGE_SIZE_MAX - NNSi_MCS_MSG_HEAD_SIZE) -#define NNSi_MCS_MSG_DATA_SIZE_MIN (1024 * 8 - NNSi_MCS_MSG_HEAD_SIZE) - -typedef struct NNSiMcsMsgHead NNSiMcsMsgHead; -struct NNSiMcsMsgHead { - u16 version; - u16 reserved; - u32 offset; - u32 totalLen; -}; - -typedef struct NNSiMcsMsg NNSiMcsMsg; -struct NNSiMcsMsg { - NNSiMcsMsgHead head; - u8 data[NNSi_MCS_MSG_DATA_SIZE_MAX]; -}; - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/mcs/base_win32.h b/subprojects/NitroSystem/include/nnsys/mcs/base_win32.h deleted file mode 100644 index 91f3552c06..0000000000 --- a/subprojects/NitroSystem/include/nnsys/mcs/base_win32.h +++ /dev/null @@ -1,54 +0,0 @@ -#ifndef NNS_MCS_BASE_WIN32_H_ -#define NNS_MCS_BASE_WIN32_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef NNS_MCS_EXPORTS - #define NNS_MCS_IMPORT __declspec(dllexport) -#else - #define NNS_MCS_IMPORT __declspec(dllimport) -#endif - -#define NNS_MCS_MODULE_NAME _T("nnsmcs.dll") - -#define NNS_MCS_API_OPENSTREAM "NNS_McsOpenStream" -#define NNS_MCS_API_OPENSTREAMEX "NNS_McsOpenStreamEx" - -enum { - NNS_MCS_DEVICE_TYPE_UNKNOWN, - - NNS_MCS_DEVICE_TYPE_NITRO_DEBUGGER, - NNS_MCS_DEVICE_TYPE_NITRO_UIC, - NNS_MCS_DEVICE_TYPE_ENSATA -}; - -struct NNSMcsStreamInfo { - DWORD structBytes; - DWORD deviceType; -}; - -typedef HANDLE (WINAPI * NNSMcsPFOpenStream)( - USHORT channel, - DWORD flags); - -typedef HANDLE (WINAPI * NNSMcsPFOpenStreamEx)( - USHORT channel, - DWORD flags, - NNSMcsStreamInfo * pStreamInfo); - -NNS_MCS_IMPORT HANDLE WINAPI NNS_McsOpenStream( - USHORT channel, - DWORD flags); - -NNS_MCS_IMPORT HANDLE WINAPI NNS_McsOpenStreamEx( - USHORT channel, - DWORD flags, - NNSMcsStreamInfo * pStreamInfo); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/mcs/config.h b/subprojects/NitroSystem/include/nnsys/mcs/config.h deleted file mode 100644 index eb6531ad6a..0000000000 --- a/subprojects/NitroSystem/include/nnsys/mcs/config.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef NNS_MCS_CONFIG_H_ -#define NNS_MCS_CONFIG_H_ - -#include - -#define NNS_MCS_INLINE NNS_INLINE - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/mcs/fileIObase.h b/subprojects/NitroSystem/include/nnsys/mcs/fileIObase.h deleted file mode 100644 index a52d133b26..0000000000 --- a/subprojects/NitroSystem/include/nnsys/mcs/fileIObase.h +++ /dev/null @@ -1,118 +0,0 @@ -#ifndef NNS_MCS_FILEIOBASE_H_ -#define NNS_MCS_FILEIOBASE_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#define NNS_MCS_FILEIO_WORKMEM_SIZE sizeof(NNSiMcsFileIOWork) - -typedef struct NNSMcsFile NNSMcsFile; -struct NNSMcsFile { - u32 handle; - u32 filesize; - u32 errCode; - u32 srvErrCode; - - u32 tempData; - volatile u32 bDone : 1; -}; - -typedef struct NNSMcsFileFindData NNSMcsFileFindData; -struct NNSMcsFileFindData { - u32 attribute; - u32 size; - char name[NNS_MCS_FILEIO_PATH_MAX]; -}; - -typedef struct NNSiMcsFileIOWork NNSiMcsFileIOWork; -struct NNSiMcsFileIOWork { - NNSMcsRecvCBInfo cbInfo; - - u8 sendBuffer[NNSi_MCS_MSG_DATA_SIZE_MIN]; -}; - -#if defined(NNS_FINALROM) - - #define NNS_McsGetFileSize(pFile) ((void)(pFile), 0U) - - #define NNS_McsGetServerErrorCode(pFile) ((void)(pFile), 0U) - -#else - - #define NNS_McsGetFileSize(pFile) ((pFile)->filesize) - - #define NNS_McsGetServerErrorCode(pFile) ((pFile)->srvErrCode) - -#endif - -#if defined(NNS_FINALROM) - - #define NNS_McsInitFileIO(workMem) ((void)(workMem)) - - #define NNS_McsOpenFile(pFile, filename, openflag) ((void)((void)((void)(pFile), (filename)), (openflag)), NNS_MCS_FILEIO_ERROR_COMERROR) - - #define NNS_McsCloseFile(pFile) ((void)(pFile), NNS_MCS_FILEIO_ERROR_COMERROR) - - #define NNS_McsReadFile(pFile, buffer, length, pReadBytes) ((void)((void)((void)((void)(pFile), (buffer)), (length)), (pReadBytes)), NNS_MCS_FILEIO_ERROR_COMERROR) - - #define NNS_McsWriteFile(pFile, buffer, length) ((void)((void)((void)(pFile), (buffer)), (length)), NNS_MCS_FILEIO_ERROR_COMERROR) - - #define NNS_McsSeekFile(pFile, distanceToMove, moveMethod, pNewFilePointer) \ - ((void)((void)((void)((void)(pFile), (distanceToMove)), (moveMethod)), (pNewFilePointer)), NNS_MCS_FILEIO_ERROR_COMERROR) - - #define NNS_McsFindFirstFile(pFile, pFindData, pattern) ((void)((void)((void)(pFile), (pFindData)), (pattern)), NNS_MCS_FILEIO_ERROR_COMERROR) - - #define NNS_McsFindNextFile(pFile, pFindData) ((void)((void)(pFile), (pFindData)), NNS_MCS_FILEIO_ERROR_COMERROR) - - #define NNS_McsCloseFind(pFile) ((void)(pFile), NNS_MCS_FILEIO_ERROR_COMERROR) - -#else - -void NNS_McsInitFileIO( - void * workMem); - -u32 NNS_McsOpenFile( - NNSMcsFile * pFile, - const char * fileName, - u32 openFlag); - -u32 NNS_McsCloseFile( - NNSMcsFile * pFile); - -u32 NNS_McsReadFile( - NNSMcsFile * pFile, - void * buffer, - u32 length, - u32 * pReadBytes); - -u32 NNS_McsWriteFile( - NNSMcsFile * pFile, - const void * buffer, - u32 length); - -u32 NNS_McsSeekFile( - NNSMcsFile * pFile, - s32 distanceToMove, - u32 moveMethod, - u32 * pNewFilePointer); - -u32 NNS_McsFindFirstFile( - NNSMcsFile * pFile, - NNSMcsFileFindData * pFindData, - const char * pattern); - -u32 NNS_McsFindNextFile( - NNSMcsFile * pFile, - NNSMcsFileFindData * pFindData); - -u32 NNS_McsCloseFind( - NNSMcsFile * pFile); - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/mcs/fileIOcommon.h b/subprojects/NitroSystem/include/nnsys/mcs/fileIOcommon.h deleted file mode 100644 index 1a373257a7..0000000000 --- a/subprojects/NitroSystem/include/nnsys/mcs/fileIOcommon.h +++ /dev/null @@ -1,58 +0,0 @@ -#ifndef NNS_MCS_FILEIOCOMMON_H_ -#define NNS_MCS_FILEIOCOMMON_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -enum { - NNS_MCS_FILEIO_ERROR_SUCCESS = 0, - NNS_MCS_FILEIO_ERROR_COMERROR, - NNS_MCS_FILEIO_ERROR_NOTCONNECT, - NNS_MCS_FILEIO_ERROR_SERVERERROR, - NNS_MCS_FILEIO_ERROR_NOMOREFILES, - - NNSi_MCS_FILEIO_RESULT_READING = 0x80 -}; - -enum { - NNS_MCS_FILEIO_FLAG_READ = 1 << 0, - NNS_MCS_FILEIO_FLAG_WRITE = 1 << 1, - - NNS_MCS_FILEIO_FLAG_FORCE = 1 << 3, - NNS_MCS_FILEIO_FLAG_INCENVVAR = 1 << 4, - NNS_MCS_FILEIO_FLAG_CREATEDIR = 1 << 5 -}; - -#define NNS_MCS_FILEIO_PATH_MAX 260 - -enum { - NNS_MCS_FILEIO_SEEK_BEGIN, - NNS_MCS_FILEIO_SEEK_CURRENT, - NNS_MCS_FILEIO_SEEK_END -}; - -enum { - NNS_MCS_FILEIO_ATTRIBUTE_READONLY = 0x00000001, - NNS_MCS_FILEIO_ATTRIBUTE_HIDDEN = 0x00000002, - NNS_MCS_FILEIO_ATTRIBUTE_SYSTEM = 0x00000004, - NNS_MCS_FILEIO_ATTRIBUTE_DIRECTORY = 0x00000010, - NNS_MCS_FILEIO_ATTRIBUTE_ARCHIVE = 0x00000020, - NNS_MCS_FILEIO_ATTRIBUTE_DEVICE = 0x00000040, - NNS_MCS_FILEIO_ATTRIBUTE_NORMAL = 0x00000080, - NNS_MCS_FILEIO_ATTRIBUTE_TEMPORARY = 0x00000100, - NNS_MCS_FILEIO_ATTRIBUTE_SPARSE_FILE = 0x00000200, - NNS_MCS_FILEIO_ATTRIBUTE_REPARSE_POINT = 0x00000400, - NNS_MCS_FILEIO_ATTRIBUTE_COMPRESSED = 0x00000800, - NNS_MCS_FILEIO_ATTRIBUTE_OFFLINE = 0x00001000, - NNS_MCS_FILEIO_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x00002000, - NNS_MCS_FILEIO_ATTRIBUTE_ENCRYPTED = 0x00004000, - - NNS_MCS_FILEIO_ATTRIBUTE_LAST -}; - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/mcs/print.h b/subprojects/NitroSystem/include/nnsys/mcs/print.h deleted file mode 100644 index 9701c60a1a..0000000000 --- a/subprojects/NitroSystem/include/nnsys/mcs/print.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef NNS_MCS_PRINT_H_ -#define NNS_MCS_PRINT_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#if defined(NNS_FINALROM) - - #define NNS_McsInitPrint(pBuffer, size) ((void)((void)(pBuffer), (size))) - - #define NNS_McsPutString(string) ((void)0) - - #define NNS_McsPrintf(fmt, ...) ((void)0) - -#else - -void NNS_McsInitPrint( - void * pBuffer, - u32 size); - -BOOL NNS_McsPutString(const char * string); - -BOOL NNS_McsPrintf( - const char * format, - ...); - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/mcs/ringBuffer.h b/subprojects/NitroSystem/include/nnsys/mcs/ringBuffer.h deleted file mode 100644 index afddbfbe7e..0000000000 --- a/subprojects/NitroSystem/include/nnsys/mcs/ringBuffer.h +++ /dev/null @@ -1,119 +0,0 @@ -#ifndef NNS_MCS_RINGBUFFER_H_ -#define NNS_MCS_RINGBUFFER_H_ - -#if defined(_MSC_VER) - #include "mcsStdInt.h" -#else - #include -#endif - -#if defined(_WIN32) - #include -#else - #include -#endif - -#if !defined(_WIN32) && defined(__cplusplus) -extern "C" { -#endif - -#define NNS_MCS_RINGBUF_SIGNATURE 'MCRB' - -#define NNS_MCS_RINGBUF_OVERFLOW (1 << 0) - -enum { - NNS_MCS_RINGBUF_DTYPE_START, - NNS_MCS_RINGBUF_DTYPE_MIDDLE, - NNS_MCS_RINGBUF_DTYPE_END -}; - -#if defined(_WIN32) -typedef uint32_t NNSiMcsBufPtr; -typedef uint32_t NNSiMcsUIntPtr; -#else -typedef void * NNSiMcsBufPtr; -typedef uintptr_t NNSiMcsUIntPtr; -#endif - -typedef struct NNSiMcsBufRgn NNSiMcsBufRgn; -struct NNSiMcsBufRgn { - NNSiMcsUIntPtr buf; - uint32_t bufSize; -}; - -typedef struct NNSiMcsMsgRange NNSiMcsMsgRange; -struct NNSiMcsMsgRange { - NNSiMcsUIntPtr start; - NNSiMcsUIntPtr end; -}; - -typedef struct NNSiMcsRingBufferHeader NNSiMcsRingBufferHeader; -struct NNSiMcsRingBufferHeader { - uint32_t signature; - uint32_t state; - NNSiMcsMsgRange mrng; - NNSiMcsBufRgn brgn; -}; - -typedef NNSiMcsUIntPtr NNSMcsRingBuffer; - -#if defined(_WIN32) -void NNSi_McsReadFromRingBufferMem( - void * appAddr, - uint32_t rbAddr, - uint32_t size); - -void NNSi_McsWriteToRingBufferMem( - uint32_t rbAddr, - const void * appAddr, - uint32_t size); -#endif - -NNSMcsRingBuffer NNS_McsInitRingBuffer( - NNSiMcsBufPtr buf, - uint32_t bufSize); - -uint32_t NNS_McsGetRingBufferReadableBytes( - NNSMcsRingBuffer rb); - -uint32_t NNS_McsGetRingBufferTotalReadableBytes( - NNSMcsRingBuffer rb); - -uint32_t NNS_McsGetRingBufferWritableBytes( - NNSMcsRingBuffer rb); - -BOOL NNS_McsReadRingBuffer( - NNSMcsRingBuffer rb, - void * buf, - uint32_t size, - uint32_t * pReadBytes); - -BOOL NNS_McsWriteRingBuffer( - NNSMcsRingBuffer rb, - const void * buf, - uint32_t size); - -BOOL NNS_McsWriteRingBufferEx( - NNSMcsRingBuffer rb, - const void * buf, - uint32_t offset, - uint32_t size, - uint32_t totalSize); - -void NNS_McsClearRingBuffer( - NNSMcsRingBuffer rb); - -BOOL NNS_McsCheckRingBuffer( - NNSMcsRingBuffer rb); - -uint32_t NNS_McsGetRingBufferState( - NNSMcsRingBuffer rb); - -void NNS_McsClearRingBufferState( - NNSMcsRingBuffer rb); - -#if !defined(_WIN32) && defined(__cplusplus) -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/misc.h b/subprojects/NitroSystem/include/nnsys/misc.h deleted file mode 100644 index 5378b0fbf7..0000000000 --- a/subprojects/NitroSystem/include/nnsys/misc.h +++ /dev/null @@ -1,146 +0,0 @@ -#ifndef NNS_MISC_H_ -#define NNS_MISC_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#ifdef __cplusplus -#define NNS_IFDEFCPP extern "C" { -#define NNS_ENDIFCPP } -#else -#define NNS_IFDEFCPP -#define NNS_ENDIFCPP -#endif - -#ifdef NNS_DEBUG -#ifndef NNS_ASSERT -#define NNS_ASSERT(exp) \ - (void)((exp) || (OSi_Panic(__FILE__, __LINE__, "NNS:Failed assertion " #exp), 0)) -#endif -#else -#ifndef NNS_ASSERT -#define NNS_ASSERT(exp) ((void)0) -#endif -#endif - -#ifdef NNS_DEBUG -#ifndef NNS_ASSERTMSG -#define NNS_ASSERTMSG(exp, ...) \ - (void)((exp) || (OSi_Panic(__FILE__, __LINE__, __VA_ARGS__), 0)) -#endif -#else -#ifndef NNS_ASSERTMSG -#define NNS_ASSERTMSG(exp, ...) ((void)0) -#endif -#endif - -#ifdef NNS_DEBUG -#ifndef NNS_WARNING -#define NNS_WARNING(exp, ...) \ - (void)((exp) || (OSi_Warning(__FILE__, __LINE__, __VA_ARGS__), 0)) -#endif -#else -#ifndef NNS_WARNING -#define NNS_WARNING(exp, ...) ((void)0) -#endif -#endif - -#ifdef NNS_DEBUG -#ifndef NNS_NULL_ASSERT -#define NNS_NULL_ASSERT(exp) \ - (void)((exp != NULL) || (OSi_Panic(__FILE__, __LINE__, "NNS:Pointer must not be NULL ("#exp ")"), 0)) -#endif -#else -#ifndef NNS_NULL_ASSERT -#define NNS_NULL_ASSERT(exp) ((void)0) -#endif -#endif - -#ifdef NNS_DEBUG -#ifndef NNS_MIN_ASSERT -#define NNS_MIN_ASSERT(exp, min) \ - (void)(((exp) >= (min)) || \ - (OSi_Panic(__FILE__, __LINE__, #exp " is out of bounds(%d)\n%d <= "#exp " not satisfied.", exp, min), 0)) -#endif -#else -#ifndef NNS_MIN_ASSERT -#define NNS_MIN_ASSERT(exp, min) ((void)0) -#endif -#endif - -#ifdef NNS_DEBUG -#ifndef NNS_MAX_ASSERT -#define NNS_MAX_ASSERT(exp, max) \ - (void)(((exp) <= (max)) || \ - (OSi_Panic(__FILE__, __LINE__, #exp " is out of bounds(%d)\n"#exp " <= %d not satisfied.", exp, max), 0)) -#endif -#else -#ifndef NNS_MAX_ASSERT -#define NNS_MAX_ASSERT(exp, max) ((void)0) -#endif -#endif - -#ifdef NNS_DEBUG -#ifndef NNS_MINMAX_ASSERT -#define NNS_MINMAX_ASSERT(exp, min, max) \ - (void)(((exp) >= (min) && (exp) <= (max)) || \ - (OSi_Panic(__FILE__, __LINE__, #exp " is out of bounds(%d)\n%d <= "#exp " <= %d not satisfied.", exp, min, max), 0)) -#endif -#else -#ifndef NNS_MINMAX_ASSERT -#define NNS_MINMAX_ASSERT(exp, min, max) ((void)0) -#endif -#endif - -#ifdef NNS_DEBUG -#ifndef NNS_FATAL_ERROR -#define NNS_FATAL_ERROR(...) \ - (void)(OSi_Panic(__FILE__, __LINE__, "NNS:Fatal Error\n"__VA_ARGS__), 0) -#endif -#else -#ifndef NNS_FATAL_ERROR -#define NNS_FATAL_ERROR(...) ((void)0) -#endif -#endif - -#ifdef NNS_DEBUG -#ifndef NNS_INTERNAL_ERROR -#define NNS_INTERNAL_ERROR(...) \ - (void)(OSi_Panic(__FILE__, __LINE__, "NNS Internal error\n" __VA_ARGS__), 0) -#endif -#else -#ifndef NNS_INTERNAL_ERROR -#define NNS_INTERNAL_ERROR(...) ((void)0) -#endif -#endif - -#ifdef NNS_DEBUG -#ifndef NNS_ALIGN4_ASSERT -#define NNS_ALIGN4_ASSERT(exp) \ - (void)((((u32)exp & 3) == 0) || (OSi_Panic(__FILE__, __LINE__, "NNS:Alignment Error(0x%x)\n"#exp " must be aligned to 4 bytes boundary.", exp), 0)) -#endif -#else -#ifndef NNS_ALIGN4_ASSERT -#define NNS_ALIGN4_ASSERT(exp) ((void)0) -#endif -#endif - -#ifdef NNS_DEBUG -#ifndef NNS_ALIGN2_ASSERT -#define NNS_ALIGN2_ASSERT(exp) \ - (void)((((u32)exp & 1) == 0) || (OSi_Panic(__FILE__, __LINE__, "NNS:Alignment Error(0x%x)\n"#exp " must be aligned to 2 bytes boundary.", exp), 0)) -#endif -#else -#ifndef NNS_ALIGN2_ASSERT -#define NNS_ALIGN2_ASSERT(exp) ((void)0) -#endif -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/snd.h b/subprojects/NitroSystem/include/nnsys/snd.h deleted file mode 100644 index 9761d803fd..0000000000 --- a/subprojects/NitroSystem/include/nnsys/snd.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef NNS_SND_H_ -#define NNS_SND_H_ - -#ifndef NNS_FROM_TOOL - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif - -#include -#include - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/snd/capture.h b/subprojects/NitroSystem/include/nnsys/snd/capture.h deleted file mode 100644 index 29e91c13ac..0000000000 --- a/subprojects/NitroSystem/include/nnsys/snd/capture.h +++ /dev/null @@ -1,98 +0,0 @@ -#ifndef NNS_SND_CAPTURE_H_ -#define NNS_SND_CAPTURE_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - NNS_SND_CAPTURE_FORMAT_PCM16, - NNS_SND_CAPTURE_FORMAT_PCM8 -} NNSSndCaptureFormat; - -typedef enum { - NNS_SND_CAPTURE_TYPE_REVERB, - NNS_SND_CAPTURE_TYPE_EFFECT, - NNS_SND_CAPTURE_TYPE_SAMPLING -} NNSSndCaptureType; - -typedef void (* NNSSndCaptureCallback)( - void * bufferL, - void * bufferR, - u32 len, - NNSSndCaptureFormat format, - void * arg -); -typedef NNSSndCaptureCallback NNSSndCaptureEffectCallback; - -void NNS_SndCaptureCreateThread(u32 threadPrio); -void NNS_SndCaptureDestroyThread(void); - -BOOL NNS_SndCaptureStartReverb( - void * buffer_p, - u32 bufSize, - NNSSndCaptureFormat format, - int sampleRate, - int volume -); -void NNS_SndCaptureStopReverb(int frames); -void NNS_SndCaptureSetReverbVolume(int volume, int frames); - -BOOL NNS_SndCaptureStartEffect( - void * buffer_p, - u32 bufSize, - NNSSndCaptureFormat format, - int sampleRate, - int interval, - NNSSndCaptureEffectCallback callback, - void * arg -); -void NNS_SndCaptureStopEffect(void); - -BOOL NNS_SndCaptureStartSampling( - void * buffer_p, - u32 bufSize, - NNSSndCaptureFormat format, - int sampleRate, - int interval, - NNSSndCaptureCallback callback, - void * arg -); -void NNS_SndCaptureStopSampling(void); - -BOOL NNS_SndCaptureIsActive(void); -NNSSndCaptureType NNS_SndCaptureGetCaptureType(void); - -void NNSi_SndCaptureInit(void); -void NNSi_SndCaptureMain(void); - -BOOL NNSi_SndCaptureStart( - NNSSndCaptureType type, - void * buffer0, - void * buffer1, - u32 bufLen, - NNSSndCaptureFormat format, - SNDCaptureIn input, - SNDCaptureOut output, - BOOL loopFlag, - int sampleRate, - int volume, - int pan0, - int pan1, - int interval, - NNSSndCaptureCallback callback, - void * arg -); -void NNSi_SndCaptureStop(void); - -void NNSi_SndCaptureBeginSleep(void); -void NNSi_SndCaptureEndSleep(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/snd/config.h b/subprojects/NitroSystem/include/nnsys/snd/config.h deleted file mode 100644 index b3546f2ffb..0000000000 --- a/subprojects/NitroSystem/include/nnsys/snd/config.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef NNS_SND_CONFIG_H_ -#define NNS_SND_CONFIG_H_ - -#include - -#define NNS_SND_INLINE NNS_INLINE - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/snd/fader.h b/subprojects/NitroSystem/include/nnsys/snd/fader.h deleted file mode 100644 index 2bacd35a71..0000000000 --- a/subprojects/NitroSystem/include/nnsys/snd/fader.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef NNS_SND_FADER_H_ -#define NNS_SND_FADER_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct NNSSndFader { - int origin; - int target; - int counter; - int frame; -} NNSSndFader; - -void NNSi_SndFaderInit(NNSSndFader * fader); -void NNSi_SndFaderSet(NNSSndFader * fader, int target, int frame); -int NNSi_SndFaderGet(const NNSSndFader * fader); -void NNSi_SndFaderUpdate(NNSSndFader * fader); -BOOL NNSi_SndFaderIsFinished(const NNSSndFader * fader); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/snd/heap.h b/subprojects/NitroSystem/include/nnsys/snd/heap.h deleted file mode 100644 index 1cd660bb7f..0000000000 --- a/subprojects/NitroSystem/include/nnsys/snd/heap.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef NNS_SND_HEAP_H_ -#define NNS_SND_HEAP_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define NNS_SND_HEAP_INVALID_HANDLE NNS_FND_HEAP_INVALID_HANDLE - -struct NNSSndHeap; - -typedef void (* NNSSndHeapDisposeCallback)(void * mem, u32 size, u32 data1, u32 data2); -typedef struct NNSSndHeap * NNSSndHeapHandle; - -NNSSndHeapHandle NNS_SndHeapCreate(void * startAddress, u32 size); -void NNS_SndHeapDestroy(NNSSndHeapHandle heap); - -void * NNS_SndHeapAlloc(NNSSndHeapHandle heap, u32 size, NNSSndHeapDisposeCallback callback, u32 data1, u32 data2); -void NNS_SndHeapClear(NNSSndHeapHandle heap); - -int NNS_SndHeapSaveState(NNSSndHeapHandle heap); -void NNS_SndHeapLoadState(NNSSndHeapHandle heap, int level); -int NNS_SndHeapGetCurrentLevel(NNSSndHeapHandle heap); - -u32 NNS_SndHeapGetSize(NNSSndHeapHandle heap); -u32 NNS_SndHeapGetFreeSize(NNSSndHeapHandle heap); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/snd/main.h b/subprojects/NitroSystem/include/nnsys/snd/main.h deleted file mode 100644 index 56c32353c3..0000000000 --- a/subprojects/NitroSystem/include/nnsys/snd/main.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef NNS_SND_MAIN_H_ -#define NNS_SND_MAIN_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -void NNS_SndInit(void); -void NNS_SndMain(void); - -void NNS_SndStopSoundAll(void); -void NNS_SndStopChannelAll(void); -void NNS_SndSetMasterVolume(int volume); -void NNS_SndSetMonoFlag(BOOL flag); - -BOOL NNS_SndUpdateDriverInfo(void); -BOOL NNS_SndReadDriverChannelInfo(int chNo, SNDChannelInfo * info); - -BOOL NNSi_SndReadDriverPlayerInfo(int playerNo, SNDPlayerInfo * info); -BOOL NNSi_SndReadDriverTrackInfo(int playerNo, int trackNo, SNDTrackInfo * info); - -NNS_SND_INLINE void NNS_SndBeginSleep (void) -{ -} -NNS_SND_INLINE void NNS_SndEndSleep (void) -{ -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/snd/output_effect.h b/subprojects/NitroSystem/include/nnsys/snd/output_effect.h deleted file mode 100644 index ad01200458..0000000000 --- a/subprojects/NitroSystem/include/nnsys/snd/output_effect.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef NNS_SND_OUTPUT_EFFECT_H_ -#define NNS_SND_OUTPUT_EFFECT_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - NNS_SND_CAPTURE_OUTPUT_EFFECT_NORMAL, - NNS_SND_CAPTURE_OUTPUT_EFFECT_SURROUND, - NNS_SND_CAPTURE_OUTPUT_EFFECT_HEADPHONE, - NNS_SND_CAPTURE_OUTPUT_EFFECT_MONO -} NNSSndCaptureOutputEffectType; - -BOOL NNS_SndCaptureStartOutputEffect(void * buffer_p, u32 bufSize, NNSSndCaptureOutputEffectType type); -void NNS_SndCaptureStopOutputEffect(void); -void NNS_SndCaptureChangeOutputEffect(NNSSndCaptureOutputEffectType type); -void NNS_SndCaptureSetOutputEffectCallback(NNSSndCaptureCallback func, void * arg); -void NNS_SndCaptureSetPostOutputEffectCallback(NNSSndCaptureCallback func, void * arg); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/snd/player.h b/subprojects/NitroSystem/include/nnsys/snd/player.h deleted file mode 100644 index ede56e4d93..0000000000 --- a/subprojects/NitroSystem/include/nnsys/snd/player.h +++ /dev/null @@ -1,193 +0,0 @@ -#ifndef NNS_SND_PLAYER_H_ -#define NNS_SND_PLAYER_H_ - -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define NNS_SND_PLAYER_NUM 32 - -#define NNS_SND_PLAYER_NO_MAX (NNS_SND_PLAYER_NUM - 1) - -#define NNS_SND_PLAYER_TRACK_PITCH_MIN -32768 -#define NNS_SND_PLAYER_TRACK_PITCH_MAX 32767 -#define NNS_SND_PLAYER_TRACK_PAN_MIN -128 -#define NNS_SND_PLAYER_TRACK_PAN_MAX 127 -#define NNS_SND_PLAYER_TRACK_PAN_RANGE_MIN 0 -#define NNS_SND_PLAYER_TRACK_PAN_RANGE_MAX 127 -#define NNS_SND_PLAYER_PRIO_MAX 127 - -#define NNS_SND_PLAYER_SEQ_NO_MAX 0xffff -#define NNS_SND_PLAYER_SEQARC_INDEX_MAX 0xffff - -struct SNDBankData; -struct NNSSndSeqArcHeader; -struct NNSSndSeqHeader; -struct NNSSndSeqPlayer; -struct NNSSndPlayer; -struct NNSSndPlayerHeap; - -struct SNDPlayerInfo; -struct SNDTrackInfo; - -enum NNSSndSeqPlayerStatus { - NNS_SND_SEQ_PLAYER_STATUS_STOP, - NNS_SND_SEQ_PLAYER_STATUS_PLAY, - NNS_SND_SEQ_PLAYER_STATUS_FADEOUT -}; - -typedef enum NNSSndPlayerSeqType { - NNS_SND_PLAYER_SEQ_TYPE_INVALID, - NNS_SND_PLAYER_SEQ_TYPE_SEQ, - NNS_SND_PLAYER_SEQ_TYPE_SEQARC -} NNSSndPlayerSeqType; - -#if SDK_CURRENT_VERSION_NUMBER >= SDK_VERSION_NUMBER(3, 1, 0) -typedef enum NNSSndSeqMute { - NNS_SND_SEQ_MUTE_OFF = SND_SEQ_MUTE_OFF, - NNS_SND_SEQ_MUTE_NO_STOP = SND_SEQ_MUTE_NO_STOP, - NNS_SND_SEQ_MUTE_RELEASE = SND_SEQ_MUTE_RELEASE, - NNS_SND_SEQ_MUTE_STOP = SND_SEQ_MUTE_STOP -} NNSSndSeqMute; -#endif - -typedef struct NNSSndHandle { - struct NNSSndSeqPlayer * player; -} NNSSndHandle; - -typedef struct NNSSndSeqPlayer { - struct NNSSndHandle * handle; - struct NNSSndPlayer * player; - struct NNSSndPlayerHeap * heap; - NNSFndLink playerLink; - NNSFndLink prioLink; - NNSSndFader fader; - - u8 status; - u8 startFlag; - u8 pauseFlag; - u8 prepareFlag; - - u32 commandTag; - - u16 seqType; - u16 pad2; - u16 seqNo; - u16 seqArcIndex; - - u8 playerNo; - u8 prio; - s16 volume; - - u8 initVolume; - u8 extVolume; - u16 pad3_; -} NNSSndSeqPlayer; - -typedef struct NNSSndPlayer { - NNSFndList playerList; - NNSFndList heapList; - u32 playableSeqCount; - u32 allocChBitFlag; - u8 volume; - u8 pad_; - u16 pad2_; -} NNSSndPlayer; - -NNS_SND_INLINE BOOL NNS_SndHandleIsValid (const struct NNSSndHandle * handle) -{ - NNS_NULL_ASSERT(handle); - return handle->player != NULL; -} - -void NNS_SndPlayerStopSeq(NNSSndHandle * handle, int fadeFrame); -void NNS_SndPlayerStopSeqByPlayerNo(int playerNo, int fadeFrame); -void NNS_SndPlayerStopSeqBySeqNo(int seqNo, int fadeFrame); -void NNS_SndPlayerStopSeqBySeqArcNo(int seqArcNo, int fadeFrame); -void NNS_SndPlayerStopSeqBySeqArcIdx(int seqArcNo, int index, int fadeFrame); -void NNS_SndPlayerStopSeqAll(int fadeFrame); - -void NNS_SndPlayerPause(NNSSndHandle * handle, BOOL flag); -void NNS_SndPlayerPauseByPlayerNo(int playerNo, BOOL flag); -void NNS_SndPlayerPauseAll(BOOL flag); - -void NNS_SndPlayerSetTempoRatio(NNSSndHandle * handle, int ratio); -void NNS_SndPlayerSetVolume(NNSSndHandle * handle, int volume); -void NNS_SndPlayerSetInitialVolume(NNSSndHandle * handle, int volume); -void NNS_SndPlayerMoveVolume(NNSSndHandle * handle, int targetVolume, int frames); -void NNS_SndPlayerSetPlayerPriority(NNSSndHandle * handle, int priority); -void NNS_SndPlayerSetChannelPriority(NNSSndHandle * handle, int priority); - -void NNS_SndPlayerSetTrackMute(NNSSndHandle * handle, u16 trackBitMask, BOOL flag); -#if SDK_CURRENT_VERSION_NUMBER >= SDK_VERSION_NUMBER(3, 1, 0) -void NNS_SndPlayerSetTrackMuteEx(NNSSndHandle * handle, u16 trackBitMask, NNSSndSeqMute mute); -#endif -void NNS_SndPlayerSetTrackVolume(NNSSndHandle * handle, u16 trackBitMask, int volume); -void NNS_SndPlayerSetTrackPitch(NNSSndHandle * handle, u16 trackBitMask, int pitch); -void NNS_SndPlayerSetTrackPan(NNSSndHandle * handle, u16 trackBitMask, int pan); -void NNS_SndPlayerSetTrackPanRange(NNSSndHandle * handle, u16 trackBitMask, int panRange); -void NNS_SndPlayerSetTrackModDepth(NNSSndHandle * handle, u16 trackBitMask, int depth); -void NNS_SndPlayerSetTrackModSpeed(NNSSndHandle * handle, u16 trackBitMask, int speed); -void NNS_SndPlayerSetTrackAllocatableChannel(NNSSndHandle * handle, u16 trackBitMask, u32 chBitFlag); - -u32 NNS_SndPlayerGetTick(NNSSndHandle * handle); -int NNS_SndPlayerCountPlayingSeqByPlayerNo(int playerNo); -int NNS_SndPlayerCountPlayingSeqBySeqNo(int seqNo); -int NNS_SndPlayerCountPlayingSeqBySeqArcNo(int seqArcNo); -int NNS_SndPlayerCountPlayingSeqBySeqArcIdx(int seqArcNo, int index); - -void NNS_SndPlayerSetSeqNo(NNSSndHandle * handle, int seqNo); -void NNS_SndPlayerSetSeqArcNo(NNSSndHandle * handle, int seqArcNo, int index); -NNSSndPlayerSeqType NNS_SndPlayerGetSeqType(NNSSndHandle * handle); -int NNS_SndPlayerGetSeqNo(NNSSndHandle * handle); -int NNS_SndPlayerGetSeqArcNo(NNSSndHandle * handle); -int NNS_SndPlayerGetSeqArcIdx(NNSSndHandle * handle); - -BOOL NNS_SndPlayerReadVariable(NNSSndHandle * handle, int varNo, s16 * var); -BOOL NNS_SndPlayerReadGlobalVariable(int varNo, s16 * var); -BOOL NNS_SndPlayerWriteVariable(NNSSndHandle * handle, int varNo, s16 var); -BOOL NNS_SndPlayerWriteGlobalVariable(int varNo, s16 var); - -void NNS_SndPlayerSetPlayerVolume(int playerNo, int volume); -void NNS_SndPlayerSetPlayableSeqCount(int playerNo, int seqCount); -void NNS_SndPlayerSetAllocatableChannel(int playerNo, u32 chBitFlag); -BOOL NNS_SndPlayerCreateHeap(int playerNo, NNSSndHeapHandle heap, u32 size); - -BOOL NNS_SndPlayerReadDriverPlayerInfo(NNSSndHandle * handle, struct SNDPlayerInfo * info); -BOOL NNS_SndPlayerReadDriverTrackInfo(NNSSndHandle * handle, int trackNo, struct SNDTrackInfo * info); - -void NNS_SndHandleInit(NNSSndHandle * handle); -void NNS_SndHandleReleaseSeq(NNSSndHandle * handle); - -void NNSi_SndPlayerInit(void); -void NNSi_SndPlayerMain(void); - -void NNSi_SndPlayerStartSeq( - NNSSndSeqPlayer * seqPlayer, - const void * seqDataBase, - u32 seqDataOffset, - const struct SNDBankData * bank -); - -NNSSndSeqPlayer * NNSi_SndPlayerAllocSeqPlayer(NNSSndHandle * handle, int playerNo, int prio); -void NNSi_SndPlayerFreeSeqPlayer(NNSSndSeqPlayer * seqPlayer); - -void NNSi_SndPlayerStopSeq(NNSSndSeqPlayer * seqPlayer, int fadeFrame); -void NNSi_SndPlayerPause(NNSSndSeqPlayer * seqPlayer, BOOL flag); - -NNSSndHeapHandle NNSi_SndPlayerAllocHeap(int playerNo, NNSSndSeqPlayer * seqPlayer); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/snd/resource_mgr.h b/subprojects/NitroSystem/include/nnsys/snd/resource_mgr.h deleted file mode 100644 index 982d8a99a9..0000000000 --- a/subprojects/NitroSystem/include/nnsys/snd/resource_mgr.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef NNS_SND_RESOURCE_MGR_H_ -#define NNS_SND_RESOURCE_MGR_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -BOOL NNS_SndLockChannel(u32 chBitFlag); -void NNS_SndUnlockChannel(u32 chBitFlag); - -BOOL NNS_SndLockCapture(u32 capBitFlag); -void NNS_SndUnlockCapture(u32 capBitFlag); - -int NNS_SndAllocAlarm(void); -void NNS_SndFreeAlarm(int alarmNo); - -void NNSi_SndInitResourceMgr(void); -u32 NNSi_GetLockedChannel(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/snd/seqdata.h b/subprojects/NitroSystem/include/nnsys/snd/seqdata.h deleted file mode 100644 index 9c8cf00552..0000000000 --- a/subprojects/NitroSystem/include/nnsys/snd/seqdata.h +++ /dev/null @@ -1,60 +0,0 @@ -#ifndef NNS_SND_SEQ_DATA_H_ -#define NNS_SND_SEQ_DATA_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define NNS_SND_SEQ_ARC_INVALID_OFFSET 0xffffffff - -#ifdef _MSC_VER -#pragma warning( disable : 4200 ) -#endif - -typedef struct NNSSndSeqParam { - u16 bankNo; - u8 volume; - u8 channelPrio; - u8 playerPrio; - u8 playerNo; - u16 reserved; -} NNSSndSeqParam; - -typedef struct NNSSndSeqArcSeqInfo { - u32 offset; - struct NNSSndSeqParam param; -} NNSSndSeqArcSeqInfo; - -typedef struct NNSSndSeqArc { - struct SNDBinaryFileHeader fileHeader; - struct SNDBinaryBlockHeader blockHeader; - u32 baseOffset; - u32 count; - NNSSndSeqArcSeqInfo info[0]; -} NNSSndSeqArc; - -typedef struct NNSSndSeqData { - struct SNDBinaryFileHeader fileHeader; - struct SNDBinaryBlockHeader blockHeader; - u32 baseOffset; - u32 data[0]; -} NNSSndSeqData; - -#ifdef _MSC_VER -#pragma warning( default : 4200 ) -#endif - -u32 NNSi_SndSeqArcGetSeqCount(const struct NNSSndSeqArc * seqArc); -const NNSSndSeqArcSeqInfo * NNSi_SndSeqArcGetSeqInfo( - const struct NNSSndSeqArc * seqArc, - int seqNo -); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/snd/sndarc.h b/subprojects/NitroSystem/include/nnsys/snd/sndarc.h deleted file mode 100644 index b96acc3d45..0000000000 --- a/subprojects/NitroSystem/include/nnsys/snd/sndarc.h +++ /dev/null @@ -1,244 +0,0 @@ -#ifndef NNS_SND_SNDARC_H_ -#define NNS_SND_SNDARC_H_ - -#include -#include -#include - -#ifndef NNS_FROM_TOOL - -#include -#include -#include - -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define NNS_SND_ARC_SUPPORTED_FILE_VERSION 0x0006 - -#define NNS_SND_ARC_LOAD_SEQ (1 << 0) -#define NNS_SND_ARC_LOAD_BANK (1 << 1) -#define NNS_SND_ARC_LOAD_WAVE (1 << 2) -#define NNS_SND_ARC_LOAD_SEQARC (1 << 3) -#define NNS_SND_ARC_LOAD_ALL 0xff - -#define NNS_SND_ARC_SIGNATURE_HEAD 'TADS' -#define NNS_SND_ARC_SIGNATURE_INFO 'OFNI' -#define NNS_SND_ARC_SIGNATURE_FAT ' TAF' -#define NNS_SND_ARC_SIGNATURE_SYMB 'BMYS' - -#define NNS_SND_ARC_INVALID_FILE_ID 0xffffffff - -#define NNS_SND_ARC_INVALID_WAVEARC_NO 0xffff - -#define NNS_SND_ARC_BANK_TO_WAVEARC_NUM 4 - -#define NNS_SND_ARC_STRM_FORCE_STEREO (1 << 0) - -#define NNS_SND_ARC_WAVEARC_SINGLE_LOAD (1 << 0) - -typedef enum NNSSndArcSndType { - NNS_SNDARC_SNDTYPE_SEQ, - NNS_SNDARC_SNDTYPE_BANK, - NNS_SNDARC_SNDTYPE_WAVEARC, - NNS_SNDARC_SNDTYPE_SEQARC, - - NNS_SNDARC_SNDTYPE_INVALID = 0xff -} NNSSndArcSndType; - -#ifdef _MSC_VER -#pragma warning( disable : 4200 ) -#endif - -typedef struct NNSSndArcSeqInfo { - u32 fileId; - struct NNSSndSeqParam param; -} NNSSndArcSeqInfo; - -typedef struct NNSSndArcSeqArcInfo { - u32 fileId; -} NNSSndArcSeqArcInfo; - -typedef struct NNSSndArcBankInfo { - u32 fileId; - u16 waveArcNo[NNS_SND_ARC_BANK_TO_WAVEARC_NUM]; -} NNSSndArcBankInfo; - -typedef struct NNSSndArcWaveArcInfo { - u32 fileId : 24; - u32 flags : 8; -} NNSSndArcWaveArcInfo; - -typedef struct NNSSndArcStrmInfo { - u32 fileId; - u8 volume; - u8 playerPrio; - u8 playerNo; - u8 flags; -} NNSSndArcStrmInfo; - -typedef struct NNSSndArcPlayerInfo { - u8 seqMax; - u8 padding; - u16 allocChBitFlag; - u32 heapSize; -} NNSSndArcPlayerInfo; - -typedef struct NNSSndArcStrmPlayerInfo { - u8 numChannels; - u8 chNoList[2]; -} NNSSndArcStrmPlayerInfo; - -typedef struct NNSSndArcGroupItem { - u8 type; - u8 loadFlag; - u16 padding; - u32 index; -} NNSSndArcGroupItem; - -typedef struct NNSSndArcGroupInfo { - u32 count; - struct NNSSndArcGroupItem item[0]; -} NNSSndArcGroupInfo; - -typedef struct NNSSndArcSeqArcOffset { - u32 symbol; - u32 table; -} NNSSndArcSeqArcOffset; - -typedef struct NNSSndArcSeqArcOffsetTable { - u32 count; - NNSSndArcSeqArcOffset offset[0]; -} NNSSndArcSeqArcOffsetTable; - -typedef struct NNSSndArcOffsetTable { - u32 count; - u32 offset[0]; -} NNSSndArcOffsetTable; - -typedef struct NNSSndArcFileInfo { - u32 offset; - u32 size; - void * mem; - u32 reserved; -} NNSSndArcFileInfo; - -typedef struct NNSSndArcFat { - struct SNDBinaryBlockHeader blockHeader; - - u32 count; - NNSSndArcFileInfo files[0]; -} NNSSndArcFat; - -typedef struct NNSSndArcInfo { - struct SNDBinaryBlockHeader blockHeader; - - u32 seqOffset; - u32 seqArcOffset; - u32 bankOffset; - u32 waveArcOffset; - u32 playerInfoOffset; - u32 groupInfoOffset; - u32 strmPlayerInfoOffset; - u32 strmOffset; -} NNSSndArcInfo; - -typedef struct NNSSndArcSymbol { - struct SNDBinaryBlockHeader blockHeader; - - u32 seqOffset; - u32 seqArcOffset; - u32 bankOffset; - u32 waveArcOffset; - u32 playerOffset; - u32 groupOffset; - u32 strmPlayerOffset; - u32 strmOffset; -} NNSSndArcSymbol; - -typedef struct NNSSndArcHeader { - struct SNDBinaryFileHeader fileHeader; - u32 symbolDataOffset; - u32 symbolDataSize; - u32 infoOffset; - u32 infoSize; - u32 fatOffset; - u32 fatSize; - u32 fileImageOffset; - u32 fileImageSize; -} NNSSndArcHeader; - -#ifdef _MSC_VER -#pragma warning( default : 4200 ) -#endif - -typedef struct NNSSndArc { - NNSSndArcHeader header; - BOOL file_open; -#ifndef NNS_FROM_TOOL - FSFile file; - FSFileID fileId; -#endif - struct NNSSndArcFat * fat; - struct NNSSndArcSymbol * symbol; - struct NNSSndArcInfo * info; - s32 loadBlockSize; -} NNSSndArc; - -#ifndef NNS_FROM_TOOL -void NNS_SndArcInit(NNSSndArc * arc, const char * filePath, NNSSndHeapHandle heap, BOOL symbolLoadFlag); -BOOL NNS_SndArcInitWithResult(NNSSndArc * arc, const char * filePath, NNSSndHeapHandle heap, BOOL symbolLoadFlag); -BOOL NNS_SndArcSetup(NNSSndArc * arc, NNSSndHeapHandle heap, BOOL symbolLoadFlag); -#endif -void NNS_SndArcInitOnMemory(NNSSndArc * arc, void * data); - -NNSSndArc * NNS_SndArcSetCurrent(NNSSndArc * arc); -NNSSndArc * NNS_SndArcGetCurrent(void); - -const NNSSndSeqParam * NNS_SndArcGetSeqParam(int seqNo); -const NNSSndSeqParam * NNS_SndArcGetSeqArcParam(int seqArcNo, int index); - -const NNSSndArcSeqInfo * NNS_SndArcGetSeqInfo(int seqNo); -const NNSSndArcSeqArcInfo * NNS_SndArcGetSeqArcInfo(int seqNo); -const NNSSndArcBankInfo * NNS_SndArcGetBankInfo(int bankNo); -const NNSSndArcWaveArcInfo * NNS_SndArcGetWaveArcInfo(int waveArcNo); -const NNSSndArcStrmInfo * NNS_SndArcGetStrmInfo(int strmNo); -const NNSSndArcPlayerInfo * NNS_SndArcGetPlayerInfo(int playerNo); -const NNSSndArcGroupInfo * NNS_SndArcGetGroupInfo(int groupNo); -const NNSSndArcStrmPlayerInfo * NNS_SndArcGetStrmPlayerInfo(int playerNo); - -u32 NNS_SndArcGetSeqCount(void); -u32 NNS_SndArcGetSeqArcCount(void); -u32 NNS_SndArcGetBankCount(void); -u32 NNS_SndArcGetWaveArcCount(void); -u32 NNS_SndArcGetStrmCount(void); -u32 NNS_SndArcGetGroupCount(void); -u32 NNS_SndArcGetSeqArcSeqCount(int seqArcNo); - -#ifndef NNS_FROM_TOOL -s32 NNS_SndArcReadFile(u32 fileId, void * buffer, s32 size, s32 offset); -FSFileID NNS_SndArcGetFileID(void); -#endif -u32 NNS_SndArcGetFileSize(u32 fileId); -u32 NNS_SndArcGetFileOffset(u32 fileId); -void * NNS_SndArcGetFileAddress(u32 fileId); -void NNS_SndArcSetFileAddress(u32 fileId, void * address); -void NNS_SndArcSetLoadBlockSize(s32 loadBlockSize); -s32 NNS_SndArcGetLoadBlockSize(); - -const char * NNS_SndArcGetSeqSymbol(int seqNo); -const char * NNS_SndArcGetSeqArcSymbol(int seqArcNo); -const char * NNS_SndArcGetSeqArcIdxSymbol(int seqArcNo, int index); -const char * NNS_SndArcGetBankSymbol(int bankNo); -const char * NNS_SndArcGetWaveArcSymbol(int waveArcNo); -const char * NNS_SndArcGetStrmSymbol(int strmNo); -const char * NNS_SndArcGetGroupSymbol(int groupNo); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/snd/sndarc_loader.h b/subprojects/NitroSystem/include/nnsys/snd/sndarc_loader.h deleted file mode 100644 index 97fc29cd2f..0000000000 --- a/subprojects/NitroSystem/include/nnsys/snd/sndarc_loader.h +++ /dev/null @@ -1,57 +0,0 @@ -#ifndef NNS_SND_SNDARC_LOADER_H_ -#define NNS_SND_SNDARC_LOADER_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -struct NNSSndSeqData; -struct NNSSndSeqArc; -struct SNDBankData; -struct SNDWaveArc; - -typedef enum NNSSndArcLoadResult { - NNS_SND_ARC_LOAD_SUCESS = 0, - NNS_SND_ARC_LOAD_ERROR_INVALID_GROUP_NO, - NNS_SND_ARC_LOAD_ERROR_INVALID_SEQ_NO, - NNS_SND_ARC_LOAD_ERROR_INVALID_SEQARC_NO, - NNS_SND_ARC_LOAD_ERROR_INVALID_BANK_NO, - NNS_SND_ARC_LOAD_ERROR_INVALID_WAVEARC_NO, - NNS_SND_ARC_LOAD_ERROR_FAILED_LOAD_SEQ, - NNS_SND_ARC_LOAD_ERROR_FAILED_LOAD_SEQARC, - NNS_SND_ARC_LOAD_ERROR_FAILED_LOAD_BANK, - NNS_SND_ARC_LOAD_ERROR_FAILED_LOAD_WAVE -} NNSSndArcLoadResult; - -BOOL NNS_SndArcLoadGroup(int groupNo, NNSSndHeapHandle heap); - -BOOL NNS_SndArcLoadSeq(int seqNo, NNSSndHeapHandle heap); -BOOL NNS_SndArcLoadSeqArc(int seqArcNo, NNSSndHeapHandle heap); -BOOL NNS_SndArcLoadBank(int bankNo, NNSSndHeapHandle heap); -BOOL NNS_SndArcLoadWaveArc(int waveArcNo, NNSSndHeapHandle heap); - -BOOL NNS_SndArcLoadSeqEx(int seqNo, u32 loadFlag, NNSSndHeapHandle heap); -BOOL NNS_SndArcLoadBankEx(int bankNo, u32 loadFlag, NNSSndHeapHandle heap); - -void * NNSi_SndArcLoadFile( - u32 fileId, - NNSSndHeapDisposeCallback callback, - u32 data1, - u32 data2, - NNSSndHeapHandle heap -); - -NNSSndArcLoadResult NNSi_SndArcLoadGroup(int groupNo, NNSSndHeapHandle heap); -NNSSndArcLoadResult NNSi_SndArcLoadSeq(int seqNo, u32 loadFlag, NNSSndHeapHandle heap, BOOL bSetAddr, struct NNSSndSeqData ** pData); -NNSSndArcLoadResult NNSi_SndArcLoadSeqArc(int seqArcNo, u32 loadFlag, NNSSndHeapHandle heap, BOOL bSetAddr, struct NNSSndSeqArc ** pData); -NNSSndArcLoadResult NNSi_SndArcLoadBank(int bankNo, u32 loadFlag, NNSSndHeapHandle heap, BOOL bSetAddr, struct SNDBankData ** pData); -NNSSndArcLoadResult NNSi_SndArcLoadWaveArc(int waveArcNo, u32 loadFlag, NNSSndHeapHandle heap, BOOL bSetAddr, struct SNDWaveArc ** pData); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/snd/sndarc_player.h b/subprojects/NitroSystem/include/nnsys/snd/sndarc_player.h deleted file mode 100644 index c2a4d1a2ea..0000000000 --- a/subprojects/NitroSystem/include/nnsys/snd/sndarc_player.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef NNS_SND_SNDARC_PLAYER_H_ -#define NNS_SND_SNDARC_PLAYER_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -struct NNSSndHandle; - -BOOL NNS_SndArcPlayerSetup(NNSSndHeapHandle heap); - -BOOL NNS_SndArcPlayerStartSeq(struct NNSSndHandle * handle, int seqNo); -BOOL NNS_SndArcPlayerStartSeqArc(struct NNSSndHandle * handle, int seqArcNo, int index); - -BOOL NNS_SndArcPlayerStartSeqEx( - struct NNSSndHandle * handle, - int playerNo, - int bankNo, - int playerPrio, - int seqNo -); -BOOL NNS_SndArcPlayerStartSeqArcEx( - struct NNSSndHandle * handle, - int playerNo, - int bankNo, - int playerPrio, - int seqArcNo, - int index -); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/snd/sndarc_stream.h b/subprojects/NitroSystem/include/nnsys/snd/sndarc_stream.h deleted file mode 100644 index e10ad8b674..0000000000 --- a/subprojects/NitroSystem/include/nnsys/snd/sndarc_stream.h +++ /dev/null @@ -1,138 +0,0 @@ -#ifndef NNS_SND_SNDARC_STREAM_H_ -#define NNS_SND_SNDARC_STREAM_H_ - -#ifndef SDK_SMALL_BUILD - -#include -#include -#include -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define NNS_SND_STRM_PLAYER_NUM 4 -#define NNS_SND_STRM_PLAYER_MIN 0 -#define NNS_SND_STRM_PLAYER_MAX 3 - -#define NNS_SND_STRM_PLAYER_PRIO_MIN 0 -#define NNS_SND_STRM_PLAYER_PRIO_MAX 127 - -#define NNS_SND_STRM_THREAD_STACK_SIZE 1024 - -struct NNSSndStrmPlayer; - -typedef enum NNSSndArcStrmCallbackStatus { - NNS_SND_ARC_STRM_CALLBACK_DATA_END -} NNSSndArcStrmCallbackStatus; - -typedef struct NNSSndArcStrmCallbackInfo { - int playerNo; - int strmNo; -} NNSSndArcStrmCallbackInfo; - -typedef struct NNSSndArcStrmCallbackParam { - int strmNo; - u32 offset; -} NNSSndArcStrmCallbackParam; - -typedef BOOL (* NNSSndArcStrmCallback)( - NNSSndArcStrmCallbackStatus status, - const NNSSndArcStrmCallbackInfo * info, - NNSSndArcStrmCallbackParam * param, - void * arg -); - -typedef struct NNSSndStrmHandle { - struct NNSSndStrmPlayer * player; -} NNSSndStrmHandle; - -typedef struct NNSSndStrmThread { - OSThread thread; - u64 stack[NNS_SND_STRM_THREAD_STACK_SIZE / sizeof(u64)]; - OSThreadQueue threadQ; -#ifndef SDK_THREAD_INFINITY -#if OS_SIZEOF_OSTHREADQUEUE == 16 - u16 padding; -#endif -#endif - OSMutex mutex; - - NNSFndList commandList; -} NNSSndStrmThread; - -NNS_SND_INLINE BOOL NNS_SndStrmHandleIsValid (const NNSSndStrmHandle * handle) -{ - NNS_NULL_ASSERT(handle); - return handle->player != NULL; -} - -void NNS_SndArcStrmInit(u32 threadPrio, NNSSndHeapHandle heap); -BOOL NNS_SndArcStrmSetupPlayer(NNSSndHeapHandle heap); -void NNS_SndArcStrmCreatePrepareThread(NNSSndStrmThread * thread, u32 threadPrio); - -BOOL NNS_SndArcStrmStart(struct NNSSndStrmHandle * handle, int strmNo, u32 offset); -void NNS_SndArcStrmStop(struct NNSSndStrmHandle * handle, int fadeFrame); -void NNS_SndArcStrmStopAll(int fadeFrame); - -BOOL NNS_SndArcStrmPrepare(struct NNSSndStrmHandle * handle, int strmNo, u32 offset); -void NNS_SndArcStrmStartPrepared(struct NNSSndStrmHandle * handle); -BOOL NNS_SndArcStrmIsPrepared(struct NNSSndStrmHandle * handle); - -BOOL NNS_SndArcStrmStartEx(struct NNSSndStrmHandle * handle, int playerNo, int playerPrio, int strmNo, u32 offset); -BOOL NNS_SndArcStrmPrepareEx(struct NNSSndStrmHandle * handle, int playerNo, int playerPrio, int strmNo, u32 offset); -BOOL NNS_SndArcStrmStartEx2( - struct NNSSndStrmHandle * handle, - int playerNo, - int playerPrio, - int strmNo, - u32 offset, - NNSSndStrmCallback strmCallback, - void * strmCallbackArg, - NNSSndArcStrmCallback sndArcStrmCallback, - void * sndArcStrmCallbackArg -); -BOOL NNS_SndArcStrmPrepareEx2( - struct NNSSndStrmHandle * handle, - int playerNo, - int playerPrio, - int strmNo, - u32 offset, - NNSSndStrmCallback strmCallback, - void * strmCallbackArg, - NNSSndArcStrmCallback sndArcStrmCallback, - void * sndArcStrmCallbackArg -); - -BOOL NNS_SndArcStrmAllocChannel(int playerNo); -void NNS_SndArcStrmFreeChannel(int playerNo); - -void NNS_SndArcStrmSetVolume(struct NNSSndStrmHandle * handle, int volume); -void NNS_SndArcStrmMoveVolume(struct NNSSndStrmHandle * handle, int volume, int frames); -void NNS_SndArcStrmSetChannelVolume(struct NNSSndStrmHandle * handle, int chNo, int volume); -void NNS_SndArcStrmSetChannelPan(struct NNSSndStrmHandle * handle, int chNo, int pan); - -u32 NNS_SndArcStrmGetTimeLength(struct NNSSndStrmHandle * handle); -u32 NNS_SndArcStrmGetCurrentPlayingPos(struct NNSSndStrmHandle * handle); -int NNS_SndArcStrmGetChannelCount(struct NNSSndStrmHandle * handle); - -void NNS_SndStrmHandleInit(struct NNSSndStrmHandle * handle); -void NNS_SndStrmHandleRelease(struct NNSSndStrmHandle * handle); - -void NNSi_SndArcStrmMain(void); -void NNSi_SndArcStrmSetPlayerBuffer(int playerNo, void * buffer, u32 len); -void NNSi_SndArcStrmSetDecodeBuffer(void * buffer, u32 len); -void NNSi_SndArcStrmStopByChannel(u32 chBitMask); -OSThread * NNSi_SndArcStrmGetThread(); - -#ifdef __cplusplus -} -#endif - -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/snd/stream.h b/subprojects/NitroSystem/include/nnsys/snd/stream.h deleted file mode 100644 index f94fcaa8fb..0000000000 --- a/subprojects/NitroSystem/include/nnsys/snd/stream.h +++ /dev/null @@ -1,100 +0,0 @@ -#ifndef NNS_SND_STREAM_H_ -#define NNS_SND_STREAM_H_ - -#include -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define NNS_SND_STRM_CHANNEL_MAX 16 - -#define NNS_SND_STRM_PAN_MIN 0 -#define NNS_SND_STRM_PAN_MAX 127 - -#define NNS_SND_STRM_TIMER_CLOCK (SND_TIMER_CLOCK / 32) -#define NNS_SND_STRM_TIMER_MIN ((SND_CHANNEL_TIMER_MIN + 31) / 32) -#define NNS_SND_STRM_TIMER_MAX (SND_CHANNEL_TIMER_MAX / 32) - -typedef enum NNSSndStrmFormat { - NNS_SND_STRM_FORMAT_PCM8, - NNS_SND_STRM_FORMAT_PCM16 -} NNSSndStrmFormat; - -typedef enum NNSSndStrmCallbackStatus { - NNS_SND_STRM_CALLBACK_SETUP, - NNS_SND_STRM_CALLBACK_INTERVAL -} NNSSndStrmCallbackStatus; - -typedef void (* NNSSndStrmCallback)( - NNSSndStrmCallbackStatus status, - int numChannles, - void * buffer[], - u32 len, - NNSSndStrmFormat format, - void * arg -); - -typedef struct NNSSndStrm { - NNSFndLink link; - PMSleepCallbackInfo preSleepInfo; - PMSleepCallbackInfo postSleepInfo; - - NNSSndStrmFormat format; - BOOL activeFlag : 1; - BOOL startFlag : 1; - - u32 chBufLen; - int interval; - NNSSndStrmCallback callback; - void * callbackArg; - int curBuffer; - - int volume; - - int alarmNo; - u32 chBitMask; - int numChannels; - u8 channelNo[NNS_SND_STRM_CHANNEL_MAX]; -} NNSSndStrm; - -void NNS_SndStrmInit(NNSSndStrm * stream); - -BOOL NNS_SndStrmAllocChannel(NNSSndStrm * stream, int numChannels, const u8 chNoList[]); -void NNS_SndStrmFreeChannel(NNSSndStrm * stream); - -BOOL NNS_SndStrmSetup( - NNSSndStrm * stream, - NNSSndStrmFormat format, - void * buffer, - u32 bufSize, - int timer, - int interval, - NNSSndStrmCallback callback, - void * arg -); -void NNS_SndStrmStart(NNSSndStrm * stream); -void NNS_SndStrmStop(NNSSndStrm * stream); - -void NNS_SndStrmSetVolume(NNSSndStrm * stream, int volume); -void NNS_SndStrmSetChannelVolume(NNSSndStrm * stream, int chNo, int volume); -void NNS_SndStrmSetChannelPan(NNSSndStrm * stream, int chNo, int pan); - -NNS_SND_INLINE void NNS_SndStrmBeginSleep (NNSSndStrm * stream) -{ -#pragma unused( stream ) -} -NNS_SND_INLINE void NNS_SndStrmEndSleep (NNSSndStrm * stream) -{ -#pragma unused( stream ) -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/snd/waveout.h b/subprojects/NitroSystem/include/nnsys/snd/waveout.h deleted file mode 100644 index 56cb7e8de6..0000000000 --- a/subprojects/NitroSystem/include/nnsys/snd/waveout.h +++ /dev/null @@ -1,55 +0,0 @@ -#ifndef NNS_SND_WAVEOUT_H_ -#define NNS_SND_WAVEOUT_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define NNS_SND_WAVEOUT_INVALID_HANDLE NULL - -#define NNS_SND_WAVEOUT_VOLUME_MIN 0 -#define NNS_SND_WAVEOUT_VOLUME_MAX 127 - -#define NNS_SND_WAVEOUT_PAN_MIN 0 -#define NNS_SND_WAVEOUT_PAN_MAX 127 - -typedef enum NNSSndWaveFormat { - NNS_SND_WAVE_FORMAT_PCM8, - NNS_SND_WAVE_FORMAT_PCM16 -} NNSSndWaveFormat; - -struct NNSSndWaveOut; -typedef struct NNSSndWaveOut * NNSSndWaveOutHandle; - -NNSSndWaveOutHandle NNS_SndWaveOutAllocChannel(int chNo); -void NNS_SndWaveOutFreeChannel(NNSSndWaveOutHandle handle); - -BOOL NNS_SndWaveOutStart( - NNSSndWaveOutHandle handle, - NNSSndWaveFormat format, - const void * dataaddr, - BOOL loopFlag, - int loopStartSample, - int samples, - int sampleRate, - int volume, - int speed, - int pan -); -void NNS_SndWaveOutStop(NNSSndWaveOutHandle handle); - -void NNS_SndWaveOutSetVolume(NNSSndWaveOutHandle handle, int volume); -void NNS_SndWaveOutSetSpeed(NNSSndWaveOutHandle handle, int speed); -void NNS_SndWaveOutSetPan(NNSSndWaveOutHandle handle, int pan); - -BOOL NNS_SndWaveOutIsPlaying(NNSSndWaveOutHandle handle); - -void NNS_SndWaveOutWaitForChannelStop(NNSSndWaveOutHandle handle); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/include/nnsys/version.h b/subprojects/NitroSystem/include/nnsys/version.h deleted file mode 100644 index 3f97c514cc..0000000000 --- a/subprojects/NitroSystem/include/nnsys/version.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef NNSYS_VERSION_H_ -#define NNSYS_VERSION_H_ - -#define NNSYS_VERSION_DATE 20071126 -#define NNSYS_PACKING_DATE 20080123 - -#endif diff --git a/subprojects/NitroSystem/include/nnsys_prefix.h b/subprojects/NitroSystem/include/nnsys_prefix.h deleted file mode 100644 index 4fced9a1da..0000000000 --- a/subprojects/NitroSystem/include/nnsys_prefix.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef NNSYS_PREFIX_H_ -#define NNSYS_PREFIX_H_ - -#ifdef SDK_DEBUG -#define NNS_DEBUG 1 - -#elif SDK_RELEASE -#define NNS_RELEASE 1 - -#elif SDK_FINALROM -#define NNS_FINALROM 1 -#endif - -#ifdef SDK_CODE_ARM -#define NNS_CODE_ARM 1 - -#elif SDK_CODE_THUMB -#define NNS_CODE_THUMB 1 -#endif - -#define NNS_TS 1 -#define NNS_CW 1 -#define NNS_ARM9 1 - -#endif diff --git a/subprojects/NitroSystem/include/nnsys_win32.h b/subprojects/NitroSystem/include/nnsys_win32.h deleted file mode 100644 index 11cc754abf..0000000000 --- a/subprojects/NitroSystem/include/nnsys_win32.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef NNSYS_WIN22_H_ -#define NNSYS_WIN32_H_ - -#include - -#define NNS_FROM_TOOL -#define NNS_HAS_NO_LONG_LONG_INT_ - -#include -#include -#include - -#endif diff --git a/subprojects/NitroSystem/libraries/fnd/meson.build b/subprojects/NitroSystem/libraries/fnd/meson.build deleted file mode 100644 index 846c3ad4bd..0000000000 --- a/subprojects/NitroSystem/libraries/fnd/meson.build +++ /dev/null @@ -1,21 +0,0 @@ -libnnsfnd_srcs = files( - 'src/list_nnsfnd.c', - 'src/heapcommon.c', - 'src/expheap.c', - 'src/frameheap.c', - 'src/unitheap.c', - 'src/allocator.c' -) - -libnnsfnd_internal_includes = include_directories('src/include') - -libnnsfnd = static_library('nnsfnd', - sources: [libnnsfnd_srcs], - c_args: [c_args, sdk_args], - include_directories: [public_includes, libnnsfnd_internal_includes], - c_pch: nitro_pch, - dependencies: nitrosdk_dep, - pic: false -) - -nitrosystem_libs += libnnsfnd diff --git a/subprojects/NitroSystem/libraries/fnd/src/allocator.c b/subprojects/NitroSystem/libraries/fnd/src/allocator.c deleted file mode 100644 index d86bf0af05..0000000000 --- a/subprojects/NitroSystem/libraries/fnd/src/allocator.c +++ /dev/null @@ -1,127 +0,0 @@ -#include -#include -#include -#include -#include -#include - - -static void *AllocatorAllocForExpHeap (NNSFndAllocator * pAllocator, u32 size) -{ - NNSFndHeapHandle const heap = pAllocator->pHeap; - int const alignment = (int)pAllocator->heapParam1; - return NNS_FndAllocFromExpHeapEx(heap, size, alignment); -} - -static void AllocatorFreeForExpHeap (NNSFndAllocator * pAllocator, void * memBlock) -{ - NNSFndHeapHandle const heap = pAllocator->pHeap; - NNS_FndFreeToExpHeap(heap, memBlock); -} - -static void *AllocatorAllocForFrmHeap (NNSFndAllocator * pAllocator, u32 size) -{ - NNSFndHeapHandle const heap = pAllocator->pHeap; - int const alignment = (int)pAllocator->heapParam1; - return NNS_FndAllocFromFrmHeapEx(heap, size, alignment); -} - -static void AllocatorFreeForFrmHeap (NNSFndAllocator * pAllocator, void * memBlock) -{ - return; -} - -static void *AllocatorAllocForUnitHeap (NNSFndAllocator * pAllocator, u32 size) -{ - NNSFndHeapHandle const heap = pAllocator->pHeap; - - if (size > NNS_FndGetMemBlockSizeForUnitHeap(heap)) { - return NULL; - } - - return NNS_FndAllocFromUnitHeap(heap); -} - -static void AllocatorFreeForUnitHeap (NNSFndAllocator * pAllocator, void * memBlock) -{ - NNSFndHeapHandle const heap = pAllocator->pHeap; - NNS_FndFreeToUnitHeap(heap, memBlock); -} - -static void *AllocatorAllocForSDKHeap (NNSFndAllocator * pAllocator, u32 size) -{ - OSHeapHandle const heap = (int)pAllocator->pHeap; - OSArenaId const id = (OSArenaId)pAllocator->heapParam1; - return OS_AllocFromHeap(id, heap, size); -} - -static void AllocatorFreeForSDKHeap (NNSFndAllocator * pAllocator, void * memBlock) -{ - OSHeapHandle const heap = (int)pAllocator->pHeap; - OSArenaId const id = (OSArenaId)pAllocator->heapParam1; - OS_FreeToHeap(id, heap, memBlock); -} - -void *NNS_FndAllocFromAllocator (NNSFndAllocator * pAllocator, u32 size) -{ - NNS_ASSERT(pAllocator); - return (*pAllocator->pFunc->pfAlloc)(pAllocator, size); -} - -void NNS_FndFreeToAllocator (NNSFndAllocator * pAllocator, void * memBlock) -{ - NNS_ASSERT(pAllocator && memBlock); - (*pAllocator->pFunc->pfFree)(pAllocator, memBlock); -} - -void NNS_FndInitAllocatorForExpHeap (NNSFndAllocator * pAllocator, NNSFndHeapHandle heap, int alignment) -{ - static const NNSFndAllocatorFunc sAllocatorFunc = { - AllocatorAllocForExpHeap, - AllocatorFreeForExpHeap - }; - - pAllocator->pFunc = &sAllocatorFunc; - pAllocator->pHeap = heap; - pAllocator->heapParam1 = (u32)alignment; - pAllocator->heapParam2 = 0; -} - -void NNS_FndInitAllocatorForFrmHeap (NNSFndAllocator * pAllocator, NNSFndHeapHandle heap, int alignment) -{ - static const NNSFndAllocatorFunc sAllocatorFunc = { - AllocatorAllocForFrmHeap, - AllocatorFreeForFrmHeap - }; - - pAllocator->pFunc = &sAllocatorFunc; - pAllocator->pHeap = heap; - pAllocator->heapParam1 = (u32)alignment; - pAllocator->heapParam2 = 0; -} - -void NNS_FndInitAllocatorForUnitHeap (NNSFndAllocator * pAllocator, NNSFndHeapHandle heap) -{ - static const NNSFndAllocatorFunc sAllocatorFunc = { - AllocatorAllocForUnitHeap, - AllocatorFreeForUnitHeap - }; - - pAllocator->pFunc = &sAllocatorFunc; - pAllocator->pHeap = heap; - pAllocator->heapParam1 = 0; - pAllocator->heapParam2 = 0; -} - -void NNS_FndInitAllocatorForSDKHeap (NNSFndAllocator * pAllocator, OSArenaId id, OSHeapHandle heap) -{ - static const NNSFndAllocatorFunc sAllocatorFunc = { - AllocatorAllocForSDKHeap, - AllocatorFreeForSDKHeap - }; - - pAllocator->pFunc = &sAllocatorFunc; - pAllocator->pHeap = (void *)heap; - pAllocator->heapParam1 = id; - pAllocator->heapParam2 = 0; -} diff --git a/subprojects/NitroSystem/libraries/fnd/src/expheap.c b/subprojects/NitroSystem/libraries/fnd/src/expheap.c deleted file mode 100644 index a29575cc2c..0000000000 --- a/subprojects/NitroSystem/libraries/fnd/src/expheap.c +++ /dev/null @@ -1,975 +0,0 @@ - -#include -#include -#include -#include - -#include "include/heapcommoni.h" - -#define MBLOCK_FREE_SIGNATURE ('FR') -#define MBLOCK_USED_SIGNATURE ('UD') -#define MAX_GROUPID 0xff -#define DEFAULT_GROUPID 0 -#define MIN_ALIGNMENT 4 -#define DEFAULT_ALLOC_MODE NNS_FND_EXPHEAP_ALLOC_MODE_FIRST -#define MIN_FREE_BLOCK_SIZE 4 - -typedef struct NNSiMemRegion NNSiMemRegion; - -struct NNSiMemRegion { - void * start; - void * end; -}; - -#if !defined(NNS_FINALROM) - - #define HEAP_WARNING(exp, ...) \ - (void)((exp) && (OS_Printf(__VA_ARGS__), 0)) - -#endif - -static NNS_FND_INLINE void * MaxPtr (void * a, void * b) { - return NNSiGetUIntPtr(a) > NNSiGetUIntPtr(b) ? a: b; -} - -static NNS_FND_INLINE BOOL IsValidExpHeapHandle (NNSFndHeapHandle handle) { - if (handle == NNS_FND_HEAP_INVALID_HANDLE) { - return FALSE; - } - - { - NNSiFndHeapHead * pHeapHd = handle; - return pHeapHd->signature == NNSI_EXPHEAP_SIGNATURE; - } -} - -static NNS_FND_INLINE NNSiFndExpHeapHead * GetExpHeapHeadPtrFromHeapHead (NNSiFndHeapHead * pHHead) { - return AddU32ToPtr(pHHead, sizeof(NNSiFndHeapHead)); -} - -static NNS_FND_INLINE NNSiFndHeapHead * GetHeapHeadPtrFromExpHeapHead (NNSiFndExpHeapHead * pEHHead) { - return SubU32ToPtr(pEHHead, sizeof(NNSiFndHeapHead)); -} - -static NNS_FND_INLINE NNSiFndExpHeapHead * GetExpHeapHeadPtrFromHandle (NNSFndHeapHandle heap) { - return GetExpHeapHeadPtrFromHeapHead(heap); -} - -static NNS_FND_INLINE void * GetMemPtrForMBlock (NNSiFndExpHeapMBlockHead * pMBlkHd) { - return AddU32ToPtr(pMBlkHd, sizeof(NNSiFndExpHeapMBlockHead)); -} - -static NNS_FND_INLINE const void * GetMemCPtrForMBlock (const NNSiFndExpHeapMBlockHead * pMBlkHd) { - return AddU32ToCPtr(pMBlkHd, sizeof(NNSiFndExpHeapMBlockHead)); -} - -static NNS_FND_INLINE NNSiFndExpHeapMBlockHead * GetMBlockHeadPtr (void * memBlock) { - return SubU32ToPtr(memBlock, sizeof(NNSiFndExpHeapMBlockHead)); -} - -static NNS_FND_INLINE const NNSiFndExpHeapMBlockHead * GetMBlockHeadCPtr (const void * memBlock) { - return SubU32ToCPtr(memBlock, sizeof(NNSiFndExpHeapMBlockHead)); -} - -static NNS_FND_INLINE void * GetMBlockEndAddr (NNSiFndExpHeapMBlockHead * pMBHead) { - return AddU32ToPtr(GetMemPtrForMBlock(pMBHead), pMBHead->blockSize); -} - -static NNS_FND_INLINE u16 GetAlignmentForMBlock (const NNSiFndExpHeapMBlockHead * pMBlkHd) { - return (u16)NNSi_FndGetBitValue(pMBlkHd->attribute, 8, 7); -} - -static NNS_FND_INLINE void SetAlignmentForMBlock (NNSiFndExpHeapMBlockHead * pMBlkHd, u16 alignment) { - NNSi_FndSetBitValue(pMBlkHd->attribute, 8, 7, alignment); -} - -static NNS_FND_INLINE u16 GetGroupIDForMBlock (const NNSiFndExpHeapMBlockHead * pMBHead) { - return (u16)NNSi_FndGetBitValue(pMBHead->attribute, 0, 8); -} - -static NNS_FND_INLINE void SetGroupIDForMBlock (NNSiFndExpHeapMBlockHead * pMBHead, u16 id) { - NNSi_FndSetBitValue(pMBHead->attribute, 0, 8, id); -} - -static NNS_FND_INLINE u16 GetAllocDirForMBlock (const NNSiFndExpHeapMBlockHead * pMBHead) { - return (u16)NNSi_FndGetBitValue(pMBHead->attribute, 15, 1); -} - -static NNS_FND_INLINE void SetAllocDirForMBlock (NNSiFndExpHeapMBlockHead * pMBHead, u16 mode) { - NNSi_FndSetBitValue(pMBHead->attribute, 15, 1, mode); -} - -static NNS_FND_INLINE u16 GetAllocMode (NNSiFndExpHeapHead * pEHHead) { - return (u16)NNSi_FndGetBitValue(pEHHead->feature, 0, 1); -} - -static NNS_FND_INLINE void SetAllocMode (NNSiFndExpHeapHead * pEHHead, u16 mode) { - NNSi_FndSetBitValue(pEHHead->feature, 0, 1, mode); -} - -static void GetRegionOfMBlock (NNSiMemRegion * region, NNSiFndExpHeapMBlockHead * block) { - region->start = SubU32ToPtr(block, GetAlignmentForMBlock(block)); - region->end = GetMBlockEndAddr(block); -} - -static NNSiFndExpHeapMBlockHead * RemoveMBlock (NNSiFndExpMBlockList * list, NNSiFndExpHeapMBlockHead * block) { - NNSiFndExpHeapMBlockHead * const prev = block->pMBHeadPrev; - NNSiFndExpHeapMBlockHead * const next = block->pMBHeadNext; - - if (prev) { - prev->pMBHeadNext = next; - } else { - list->head = next; - } - - if (next) { - next->pMBHeadPrev = prev; - } else { - list->tail = prev; - } - - return prev; -} - -static NNSiFndExpHeapMBlockHead * InsertMBlock (NNSiFndExpMBlockList * list, NNSiFndExpHeapMBlockHead * target, NNSiFndExpHeapMBlockHead * prev) { - NNSiFndExpHeapMBlockHead * next; - - target->pMBHeadPrev = prev; - if (prev) { - next = prev->pMBHeadNext; - prev->pMBHeadNext = target; - } else { - next = list->head; - list->head = target; - } - - target->pMBHeadNext = next; - if (next) { - next->pMBHeadPrev = target; - } else { - list->tail = target; - } - - return target; -} - -static NNS_FND_INLINE void AppendMBlock (NNSiFndExpMBlockList * list, NNSiFndExpHeapMBlockHead * block) { - (void)InsertMBlock(list, block, list->tail); -} - -static NNSiFndExpHeapMBlockHead * InitMBlock (const NNSiMemRegion * pRegion, u16 signature) { - NNSiFndExpHeapMBlockHead * block = pRegion->start; - - block->signature = signature; - block->attribute = 0; - block->blockSize = GetOffsetFromPtr(GetMemPtrForMBlock(block), pRegion->end); - block->pMBHeadPrev = NULL; - block->pMBHeadNext = NULL; - - return block; -} - -static NNS_FND_INLINE NNSiFndExpHeapMBlockHead * InitFreeMBlock (const NNSiMemRegion * pRegion) { - return InitMBlock(pRegion, MBLOCK_FREE_SIGNATURE); -} - -static NNSiFndHeapHead * InitExpHeap (void * startAddress, void * endAddress, u16 optFlag) { - NNSiFndHeapHead * pHeapHd = startAddress; - NNSiFndExpHeapHead * pExpHeapHd = GetExpHeapHeadPtrFromHeapHead(pHeapHd); - - NNSi_FndInitHeapHead( - pHeapHd, - NNSI_EXPHEAP_SIGNATURE, - AddU32ToPtr(pExpHeapHd, sizeof(NNSiFndExpHeapHead)), - endAddress, - optFlag - ); - - pExpHeapHd->groupID = DEFAULT_GROUPID; - pExpHeapHd->feature = 0; - SetAllocMode(pExpHeapHd, DEFAULT_ALLOC_MODE); - - { - NNSiFndExpHeapMBlockHead * pMBHead; - NNSiMemRegion region; - region.start = pHeapHd->heapStart; - region.end = pHeapHd->heapEnd; - pMBHead = InitFreeMBlock(®ion); - - pExpHeapHd->mbFreeList.head = pMBHead; - pExpHeapHd->mbFreeList.tail = pMBHead; - pExpHeapHd->mbUsedList.head = NULL; - pExpHeapHd->mbUsedList.tail = NULL; - - return pHeapHd; - } -} - -static void * AllocUsedBlockFromFreeBlock (NNSiFndExpHeapHead * pEHHead, NNSiFndExpHeapMBlockHead * pMBHeadFree, void * mblock, u32 size, u16 direction) { - NNSiMemRegion freeRgnT; - NNSiMemRegion freeRgnB; - NNSiFndExpHeapMBlockHead * pMBHeadFreePrev; - - GetRegionOfMBlock(&freeRgnT, pMBHeadFree); - freeRgnB.end = freeRgnT.end; - freeRgnB.start = AddU32ToPtr(mblock, size); - freeRgnT.end = SubU32ToPtr(mblock, sizeof(NNSiFndExpHeapMBlockHead)); - - pMBHeadFreePrev = RemoveMBlock(&pEHHead->mbFreeList, pMBHeadFree); - - if (GetOffsetFromPtr(freeRgnT.start, freeRgnT.end) < sizeof(NNSiFndExpHeapMBlockHead) + MIN_FREE_BLOCK_SIZE) { - freeRgnT.end = freeRgnT.start; - } else { - pMBHeadFreePrev = InsertMBlock(&pEHHead->mbFreeList, InitFreeMBlock(&freeRgnT), pMBHeadFreePrev); - } - - if (GetOffsetFromPtr(freeRgnB.start, freeRgnB.end) < sizeof(NNSiFndExpHeapMBlockHead) + MIN_FREE_BLOCK_SIZE) { - freeRgnB.start = freeRgnB.end; - } else { - (void)InsertMBlock(&pEHHead->mbFreeList, InitFreeMBlock(&freeRgnB), pMBHeadFreePrev); - } - - FillAllocMemory(GetHeapHeadPtrFromExpHeapHead(pEHHead), freeRgnT.end, GetOffsetFromPtr(freeRgnT.end, freeRgnB.start)); - - { - NNSiFndExpHeapMBlockHead * pMBHeadNewUsed; - NNSiMemRegion region; - - region.start = SubU32ToPtr(mblock, sizeof(NNSiFndExpHeapMBlockHead)); - region.end = freeRgnB.start; - - pMBHeadNewUsed = InitMBlock(®ion, MBLOCK_USED_SIGNATURE); - SetAllocDirForMBlock(pMBHeadNewUsed, direction); - SetAlignmentForMBlock(pMBHeadNewUsed, (u16)GetOffsetFromPtr(freeRgnT.end, pMBHeadNewUsed)); - SetGroupIDForMBlock(pMBHeadNewUsed, pEHHead->groupID); - AppendMBlock(&pEHHead->mbUsedList, pMBHeadNewUsed); - } - - return mblock; -} - -static void * AllocFromHead (NNSiFndHeapHead * pHeapHd, u32 size, int alignment) { - NNSiFndExpHeapHead * pExpHeapHd = GetExpHeapHeadPtrFromHeapHead(pHeapHd); - - const BOOL bAllocFirst = GetAllocMode(pExpHeapHd) == NNS_FND_EXPHEAP_ALLOC_MODE_FIRST; - - NNSiFndExpHeapMBlockHead * pMBlkHd = NULL; - NNSiFndExpHeapMBlockHead * pMBlkHdFound = NULL; - u32 foundSize = 0xffffffff; - void * foundMBlock = NULL; - - for (pMBlkHd = pExpHeapHd->mbFreeList.head; pMBlkHd; pMBlkHd = pMBlkHd->pMBHeadNext) { - void * const mblock = GetMemPtrForMBlock(pMBlkHd); - void * const reqMBlock = NNSi_FndRoundUpPtr(mblock, alignment); - const u32 offset = GetOffsetFromPtr(mblock, reqMBlock); - - if (pMBlkHd->blockSize >= size + offset - && foundSize > pMBlkHd->blockSize) { - pMBlkHdFound = pMBlkHd; - foundSize = pMBlkHd->blockSize; - foundMBlock = reqMBlock; - - if (bAllocFirst || foundSize == size) { - break; - } - } - } - - if (!pMBlkHdFound) { - return NULL; - } - - return AllocUsedBlockFromFreeBlock( - pExpHeapHd, - pMBlkHdFound, - foundMBlock, - size, - NNS_FND_EXPHEAP_ALLOC_DIR_FRONT - ); -} - -static void * AllocFromTail (NNSiFndHeapHead * pHeapHd, u32 size, int alignment) { - NNSiFndExpHeapHead * pExpHeapHd = GetExpHeapHeadPtrFromHeapHead(pHeapHd); - - const BOOL bAllocFirst = GetAllocMode(pExpHeapHd) == NNS_FND_EXPHEAP_ALLOC_MODE_FIRST; - - NNSiFndExpHeapMBlockHead * pMBlkHd = NULL; - NNSiFndExpHeapMBlockHead * pMBlkHdFound = NULL; - u32 foundSize = 0xffffffff; - void * foundMBlock = NULL; - - for (pMBlkHd = pExpHeapHd->mbFreeList.tail; pMBlkHd; pMBlkHd = pMBlkHd->pMBHeadPrev) { - void * const mblock = GetMemPtrForMBlock(pMBlkHd); - void * const mblockEnd = AddU32ToPtr(mblock, pMBlkHd->blockSize); - void * const reqMBlock = NNSi_FndRoundDownPtr(SubU32ToPtr(mblockEnd, size), alignment); - - if (ComparePtr(reqMBlock, mblock) >= 0 - && foundSize > pMBlkHd->blockSize) { - pMBlkHdFound = pMBlkHd; - foundSize = pMBlkHd->blockSize; - foundMBlock = reqMBlock; - - if (bAllocFirst || foundSize == size) { - break; - } - } - } - - if (!pMBlkHdFound) { - return NULL; - } - - return AllocUsedBlockFromFreeBlock( - pExpHeapHd, - pMBlkHdFound, - foundMBlock, - size, - NNS_FND_EXPHEAP_ALLOC_DIR_REAR - ); -} - -static BOOL RecycleRegion (NNSiFndExpHeapHead * pEHHead, const NNSiMemRegion * pRegion) { - NNSiFndExpHeapMBlockHead * pBlkPrFree = NULL; - NNSiMemRegion freeRgn = *pRegion; - - { - NNSiFndExpHeapMBlockHead * pBlk; - - for (pBlk = pEHHead->mbFreeList.head; pBlk; pBlk = pBlk->pMBHeadNext) { - if (pBlk < pRegion->start) { - pBlkPrFree = pBlk; - continue; - } - - if (pBlk == pRegion->end) { - freeRgn.end = GetMBlockEndAddr(pBlk); - (void)RemoveMBlock(&pEHHead->mbFreeList, pBlk); - - FillNoUseMemory(GetHeapHeadPtrFromExpHeapHead(pEHHead), pBlk, sizeof(NNSiFndExpHeapMBlockHead)); - } - break; - } - } - - if (pBlkPrFree && GetMBlockEndAddr(pBlkPrFree) == pRegion->start) { - freeRgn.start = pBlkPrFree; - pBlkPrFree = RemoveMBlock(&pEHHead->mbFreeList, pBlkPrFree); - } - - if (GetOffsetFromPtr(freeRgn.start, freeRgn.end) < sizeof(NNSiFndExpHeapMBlockHead)) { - return FALSE; - } - - FillFreeMemory(GetHeapHeadPtrFromExpHeapHead(pEHHead), pRegion->start, GetOffsetFromPtr(pRegion->start, pRegion->end)); - - (void)InsertMBlock( - &pEHHead->mbFreeList, - InitFreeMBlock(&freeRgn), - pBlkPrFree - ); - - return TRUE; -} - -#if !defined(NNS_FINALROM) - -static BOOL CheckMBlock (const NNSiFndExpHeapMBlockHead * pMBHead, NNSiFndHeapHead * pHeapHd, u16 signature, const char * heapType, u32 flag) { - const BOOL bPrint = 0 != (flag & NNS_FND_HEAP_ERROR_PRINT); - const void * const memBlock = GetMemCPtrForMBlock(pMBHead); - - if (pHeapHd) { - if (NNSiGetUIntPtr(pMBHead) < NNSiGetUIntPtr(pHeapHd->heapStart) - || NNSiGetUIntPtr(memBlock) > NNSiGetUIntPtr(pHeapHd->heapEnd) - ) { - HEAP_WARNING( - bPrint, "[NNS Foundation " "Exp" " Heap]" " Bad %s memory block address. - address %08X, heap area [%08X - %08X)\n", - heapType, memBlock, pHeapHd->heapStart, pHeapHd->heapEnd - ); - return FALSE; - } - } else { - if (NNSiGetUIntPtr(pMBHead) >= 0x11000000) { - HEAP_WARNING( - bPrint, "[NNS Foundation " "Exp" " Heap]" " Bad %s memory block address. - address %08X\n", - heapType, memBlock - ); - return FALSE; - } - } - - if (pMBHead->signature != signature) { - HEAP_WARNING( - bPrint, "[NNS Foundation " "Exp" " Heap]" " Bad %s memory block signature. - address %08X, signature %04X\n", - heapType, memBlock, pMBHead->signature - ); - return FALSE; - } - - if (pMBHead->blockSize >= 0x01000000) { - HEAP_WARNING( - bPrint, "[NNS Foundation " "Exp" " Heap]" " Too large %s memory block. - address %08X, block size %08X\n", - heapType, memBlock, pMBHead->blockSize - ); - return FALSE; - } - - if (pHeapHd) { - if (NNSiGetUIntPtr(memBlock) + pMBHead->blockSize > NNSiGetUIntPtr(pHeapHd->heapEnd)) { - HEAP_WARNING( - bPrint, "[NNS Foundation " "Exp" " Heap]" " wrong size %s memory block. - address %08X, block size %08X\n", - heapType, memBlock, pMBHead->blockSize - ); - return FALSE; - } - } - - return TRUE; -} - -#endif - -#if !defined(NNS_FINALROM) - -static NNS_FND_INLINE BOOL CheckUsedMBlock (const NNSiFndExpHeapMBlockHead * pMBHead, NNSiFndHeapHead * pHeapHd, u32 flag) { - return CheckMBlock(pMBHead, pHeapHd, MBLOCK_USED_SIGNATURE, "used", flag); -} - -#endif - -#if !defined(NNS_FINALROM) - -static NNS_FND_INLINE BOOL CheckFreeMBlock (const NNSiFndExpHeapMBlockHead * pMBHead, NNSiFndHeapHead * pHeapHd, u32 flag) { - return CheckMBlock(pMBHead, pHeapHd, MBLOCK_FREE_SIGNATURE, "free", flag); -} - -#endif - -#if !defined(NNS_FINALROM) - -static BOOL CheckMBlockPrevPtr (const NNSiFndExpHeapMBlockHead * pMBHead, const NNSiFndExpHeapMBlockHead * pMBHeadPrev, u32 flag) { - const BOOL bPrint = 0 != (flag & NNS_FND_HEAP_ERROR_PRINT); - - if (pMBHead->pMBHeadPrev != pMBHeadPrev) { - HEAP_WARNING( - bPrint, "[NNS Foundation " "Exp" " Heap]" " Wrong link memory block. - address %08X, previous address %08X != %08X\n", - GetMemCPtrForMBlock(pMBHead), pMBHead->pMBHeadPrev, pMBHeadPrev - ); - return FALSE; - } - - return TRUE; -} - -#endif - -#if !defined(NNS_FINALROM) - -static BOOL CheckMBlockNextPtr (const NNSiFndExpHeapMBlockHead * pMBHead, const NNSiFndExpHeapMBlockHead * pMBHeadNext, u32 flag) { - const BOOL bPrint = 0 != (flag & NNS_FND_HEAP_ERROR_PRINT); - - if (pMBHead->pMBHeadNext != pMBHeadNext) { - HEAP_WARNING( - bPrint, "[NNS Foundation " "Exp" " Heap]" " Wrong link memory block. - address %08X, next address %08X != %08X\n", - GetMemCPtrForMBlock(pMBHead), pMBHead->pMBHeadNext, pMBHeadNext - ); - return FALSE; - } - - return TRUE; -} - -#endif - -#if !defined(NNS_FINALROM) - -static BOOL CheckMBlockLinkTail (const NNSiFndExpHeapMBlockHead * pMBHead, const NNSiFndExpHeapMBlockHead * pMBHeadTail, const char * heapType, u32 flag) { - const BOOL bPrint = 0 != (flag & NNS_FND_HEAP_ERROR_PRINT); - - if (pMBHead != pMBHeadTail) { - HEAP_WARNING( - bPrint, "[NNS Foundation " "Exp" " Heap]" " Wrong memory brock list %s pointer. - address %08X, %s address %08X != %08X\n", - heapType, GetMemCPtrForMBlock(pMBHead), heapType, pMBHead, pMBHeadTail - ); - return FALSE; - } - - return TRUE; -} - -#endif - -#if !defined(NNS_FINALROM) - -static BOOL IsValidUsedMBlock (const void * memBlock, NNSFndHeapHandle heap) { - NNSiFndHeapHead * pHeapHd = heap; - - if (!memBlock) { - return FALSE; - } - - return CheckUsedMBlock(GetMBlockHeadCPtr(memBlock), pHeapHd, 0); -} - -#endif - -#if !defined(NNS_FINALROM) - -void NNSi_FndDumpExpHeap (NNSFndHeapHandle heap) { - NNS_ASSERT(IsValidExpHeapHandle(heap)); - - { - u32 usedSize = 0; - u32 usedCnt = 0; - u32 freeSize = 0; - u32 freeCnt = 0; - - NNSiFndHeapHead * pHeapHd = heap; - NNSiFndExpHeapHead * pExpHeapHd = GetExpHeapHeadPtrFromHandle(pHeapHd); - - NNSi_FndDumpHeapHead(pHeapHd); - - OS_Printf(" attr address: size gid aln prev_ptr next_ptr\n"); - - OS_Printf(" (Used Blocks)\n"); - - if (pExpHeapHd->mbUsedList.head == NULL) { - OS_Printf(" NONE\n"); - } else { - NNSiFndExpHeapMBlockHead * pMBHead; - - for (pMBHead = pExpHeapHd->mbUsedList.head; pMBHead; pMBHead = pMBHead->pMBHeadNext) { - if (pMBHead->signature != MBLOCK_USED_SIGNATURE) { - OS_Printf(" xxxxx %08x: -------- --- --- (-------- --------)\nabort\n", pMBHead); - break; - } - - OS_Printf( - " %s %08x: %8d %3d %3d (%08x %08x)\n", - GetAllocDirForMBlock(pMBHead) == NNS_FND_EXPHEAP_ALLOC_DIR_REAR ? " rear" : "front", - GetMemPtrForMBlock(pMBHead), - pMBHead->blockSize, - GetGroupIDForMBlock(pMBHead), - GetAlignmentForMBlock(pMBHead), - pMBHead->pMBHeadPrev ? GetMemPtrForMBlock(pMBHead->pMBHeadPrev): NULL, - pMBHead->pMBHeadNext ? GetMemPtrForMBlock(pMBHead->pMBHeadNext): NULL - ); - - usedSize += sizeof(NNSiFndExpHeapMBlockHead) + pMBHead->blockSize + GetAlignmentForMBlock(pMBHead); - - usedCnt++; - } - } - - OS_Printf(" (Free Blocks)\n"); - - if (pExpHeapHd->mbFreeList.head == NULL) { - OS_Printf(" NONE\n"); - } else { - NNSiFndExpHeapMBlockHead * pMBHead; - - for (pMBHead = pExpHeapHd->mbFreeList.head; pMBHead; pMBHead = pMBHead->pMBHeadNext) { - if (pMBHead->signature != MBLOCK_FREE_SIGNATURE) { - OS_Printf(" xxxxx %08x: -------- --- --- (-------- --------)\nabort\n", pMBHead); - break; - } - - OS_Printf( - " %s %08x: %8d %3d %3d (%08x %08x)\n", - " free", - GetMemPtrForMBlock(pMBHead), - pMBHead->blockSize, - GetGroupIDForMBlock(pMBHead), - GetAlignmentForMBlock(pMBHead), - pMBHead->pMBHeadPrev ? GetMemPtrForMBlock(pMBHead->pMBHeadPrev): NULL, - pMBHead->pMBHeadNext ? GetMemPtrForMBlock(pMBHead->pMBHeadNext): NULL - ); - - freeCnt++; - } - } - - OS_Printf("\n"); - - { - u32 heapSize = GetOffsetFromPtr(pHeapHd->heapStart, pHeapHd->heapEnd); - OS_Printf( - " %d / %d bytes (%6.2f%%) used (U:%d F:%d)\n", - usedSize, heapSize, 100.0 * usedSize / heapSize, usedCnt, freeCnt - ); - } - - OS_Printf("\n"); - } -} - -#endif - -NNSFndHeapHandle NNS_FndCreateExpHeapEx (void * startAddress, u32 size, u16 optFlag) { - void * endAddress; - - SDK_NULL_ASSERT(startAddress); - - endAddress = NNSi_FndRoundDownPtr(AddU32ToPtr(startAddress, size), MIN_ALIGNMENT); - startAddress = NNSi_FndRoundUpPtr(startAddress, MIN_ALIGNMENT); - - if (NNSiGetUIntPtr(startAddress) > NNSiGetUIntPtr(endAddress) - || GetOffsetFromPtr(startAddress, endAddress) < sizeof(NNSiFndHeapHead) + sizeof(NNSiFndExpHeapHead) - + sizeof(NNSiFndExpHeapMBlockHead) + MIN_ALIGNMENT - ) { - return NNS_FND_HEAP_INVALID_HANDLE; - } - - { - NNSiFndHeapHead * pHeapHd = InitExpHeap(startAddress, endAddress, optFlag); - return pHeapHd; - } -} - -void NNS_FndDestroyExpHeap (NNSFndHeapHandle heap) { - NNS_ASSERT(IsValidExpHeapHandle(heap)); - - NNSi_FndFinalizeHeap(heap); -} - -void * NNS_FndAllocFromExpHeapEx (NNSFndHeapHandle heap, u32 size, int alignment) { - void * memory = NULL; - - NNS_ASSERT(IsValidExpHeapHandle(heap)); - - NNS_ASSERT(alignment % MIN_ALIGNMENT == 0); - NNS_ASSERT(MIN_ALIGNMENT <= abs(alignment) && abs(alignment) <= 32); - - if (size == 0) { - size = 1; - } - - size = NNSi_FndRoundUp(size, MIN_ALIGNMENT); - - if (alignment >= 0) { - memory = AllocFromHead(heap, size, alignment); - } else { - memory = AllocFromTail(heap, size, -alignment); - } - - return memory; -} - -u32 NNS_FndResizeForMBlockExpHeap (NNSFndHeapHandle heap, void * memBlock, u32 size) { - NNSiFndExpHeapHead * pEHHead; - NNSiFndExpHeapMBlockHead * pMBHead; - - NNS_ASSERT(IsValidExpHeapHandle(heap)); - NNS_ASSERT(IsValidUsedMBlock(memBlock, heap)); - - pEHHead = GetExpHeapHeadPtrFromHandle(heap); - pMBHead = GetMBlockHeadPtr(memBlock); - - size = NNSi_FndRoundUp(size, MIN_ALIGNMENT); - if (size == pMBHead->blockSize) { - return size; - } - - if (size > pMBHead->blockSize) { - void * crUsedEnd = GetMBlockEndAddr(pMBHead); - NNSiFndExpHeapMBlockHead * block; - - for (block = pEHHead->mbFreeList.head; block; block = block->pMBHeadNext) { - if (block == crUsedEnd) { - break; - } - } - - if (!block || size > pMBHead->blockSize + sizeof(NNSiFndExpHeapMBlockHead) + block->blockSize) { - return 0; - } - - { - NNSiMemRegion rgnNewFree; - void * oldFreeStart; - NNSiFndExpHeapMBlockHead * nextBlockPrev; - - GetRegionOfMBlock(&rgnNewFree, block); - nextBlockPrev = RemoveMBlock(&pEHHead->mbFreeList, block); - - oldFreeStart = rgnNewFree.start; - rgnNewFree.start = AddU32ToPtr(memBlock, size); - - if (GetOffsetFromPtr(rgnNewFree.start, rgnNewFree.end) < sizeof(NNSiFndExpHeapMBlockHead)) { - rgnNewFree.start = rgnNewFree.end; - } - - pMBHead->blockSize = GetOffsetFromPtr(memBlock, rgnNewFree.start); - - if (GetOffsetFromPtr(rgnNewFree.start, rgnNewFree.end) >= sizeof(NNSiFndExpHeapMBlockHead)) { - (void)InsertMBlock(&pEHHead->mbFreeList, InitFreeMBlock(&rgnNewFree), nextBlockPrev); - } - - FillAllocMemory( - heap, - oldFreeStart, - GetOffsetFromPtr(oldFreeStart, rgnNewFree.start) - ); - } - } else { - NNSiMemRegion rgnNewFree; - const u32 oldBlockSize = pMBHead->blockSize; - - rgnNewFree.start = AddU32ToPtr(memBlock, size); - rgnNewFree.end = GetMBlockEndAddr(pMBHead); - - pMBHead->blockSize = size; - - if (!RecycleRegion(pEHHead, &rgnNewFree)) { - pMBHead->blockSize = oldBlockSize; - } - } - - return pMBHead->blockSize; -} - -void NNS_FndFreeToExpHeap (NNSFndHeapHandle heap, void * memBlock) { - NNS_ASSERT(IsValidExpHeapHandle(heap)); - - { - NNSiFndHeapHead * pHeapHd = heap; - NNSiFndExpHeapHead * pExpHeapHd = GetExpHeapHeadPtrFromHandle(pHeapHd); - NNSiFndExpHeapMBlockHead * pMBHead = GetMBlockHeadPtr(memBlock); - NNSiMemRegion region; - - NNS_ASSERT(pHeapHd->heapStart <= memBlock && memBlock < pHeapHd->heapEnd); - - GetRegionOfMBlock(®ion, pMBHead); - (void)RemoveMBlock(&pExpHeapHd->mbUsedList, pMBHead); - (void)RecycleRegion(pExpHeapHd, ®ion); - } -} - -u32 NNS_FndGetTotalFreeSizeForExpHeap (NNSFndHeapHandle heap) { - NNS_ASSERT(IsValidExpHeapHandle(heap)); - - { - u32 sumSize = 0; - NNSiFndExpHeapHead * pEHHead = GetExpHeapHeadPtrFromHandle(heap); - NNSiFndExpHeapMBlockHead * pMBHead; - - for(pMBHead = pEHHead->mbFreeList.head; pMBHead; pMBHead = pMBHead->pMBHeadNext) { - sumSize += pMBHead->blockSize; - } - - return sumSize; - } -} - -u32 NNS_FndGetAllocatableSizeForExpHeapEx (NNSFndHeapHandle heap, int alignment) { - NNS_ASSERT(IsValidExpHeapHandle(heap)); - - NNS_ASSERT(alignment % MIN_ALIGNMENT == 0); - NNS_ASSERT(MIN_ALIGNMENT <= abs(alignment) && abs(alignment) <= 32); - - alignment = abs(alignment); - - { - NNSiFndExpHeapHead * pEHHead = GetExpHeapHeadPtrFromHandle(heap); - u32 maxSize = 0; - u32 offsetMin = 0xFFFFFFFF; - NNSiFndExpHeapMBlockHead * pMBlkHd; - - for (pMBlkHd = pEHHead->mbFreeList.head; pMBlkHd; pMBlkHd = pMBlkHd->pMBHeadNext) { - void * baseAddress = NNSi_FndRoundUpPtr(GetMemPtrForMBlock(pMBlkHd), alignment); - - if (NNSiGetUIntPtr(baseAddress) < NNSiGetUIntPtr(GetMBlockEndAddr(pMBlkHd))) { - const u32 blockSize = GetOffsetFromPtr(baseAddress, GetMBlockEndAddr(pMBlkHd)); - - const u32 offset = GetOffsetFromPtr(GetMemPtrForMBlock(pMBlkHd), baseAddress); - - if (maxSize < blockSize - || (maxSize == blockSize && offsetMin > offset) - ) { - maxSize = blockSize; - offsetMin = offset; - } - } - } - - return maxSize; - } -} - -u16 NNS_FndSetAllocModeForExpHeap (NNSFndHeapHandle heap, u16 mode) { - NNS_ASSERT(IsValidExpHeapHandle(heap)); - - { - NNSiFndExpHeapHead * const pEHHead = GetExpHeapHeadPtrFromHandle(heap); - u16 oldMode = GetAllocMode(pEHHead); - SetAllocMode(pEHHead, mode); - - return oldMode; - } -} - -u16 NNS_FndGetAllocModeForExpHeap (NNSFndHeapHandle heap) { - NNS_ASSERT(IsValidExpHeapHandle(heap)); - return GetAllocMode(GetExpHeapHeadPtrFromHandle(heap)); -} - -u16 NNS_FndSetGroupIDForExpHeap (NNSFndHeapHandle heap, u16 groupID) { - NNS_ASSERT(IsValidExpHeapHandle(heap)); - NNS_ASSERT(groupID <= MAX_GROUPID); - - { - NNSiFndExpHeapHead * pEHHead = GetExpHeapHeadPtrFromHandle(heap); - u16 oldGroupID = pEHHead->groupID; - pEHHead->groupID = groupID; - - return oldGroupID; - } -} - -u16 NNS_FndGetGroupIDForExpHeap (NNSFndHeapHandle heap) { - NNS_ASSERT(IsValidExpHeapHandle(heap)); - - return GetExpHeapHeadPtrFromHandle(heap)->groupID; -} - -void NNS_FndVisitAllocatedForExpHeap (NNSFndHeapHandle heap, NNSFndHeapVisitor visitor, u32 userParam) { - NNS_ASSERT(IsValidExpHeapHandle(heap)); - SDK_NULL_ASSERT(visitor); - - { - NNSiFndExpHeapMBlockHead * pMBHead = GetExpHeapHeadPtrFromHandle(heap)->mbUsedList.head; - - while (pMBHead) { - NNSiFndExpHeapMBlockHead * pMBHeadNext = pMBHead->pMBHeadNext; - (*visitor)(GetMemPtrForMBlock(pMBHead), heap, userParam); - pMBHead = pMBHeadNext; - } - } -} - -u32 NNS_FndGetSizeForMBlockExpHeap (const void * memBlock) { - NNS_ASSERT(IsValidUsedMBlock(memBlock, NULL)); - - return GetMBlockHeadCPtr(memBlock)->blockSize; -} - -u16 NNS_FndGetGroupIDForMBlockExpHeap (const void * memBlock) { - NNS_ASSERT(IsValidUsedMBlock(memBlock, NULL)); - - return GetGroupIDForMBlock(GetMBlockHeadCPtr(memBlock)); -} - -u16 NNS_FndGetAllocDirForMBlockExpHeap (const void * memBlock) { - NNS_ASSERT(IsValidUsedMBlock(memBlock, NULL)); - - return GetAllocDirForMBlock(GetMBlockHeadCPtr(memBlock)); -} - -#if !defined(NNS_FINALROM) - -BOOL NNS_FndCheckExpHeap (NNSFndHeapHandle heap, u32 optFlag) { - const BOOL bPrint = 0 != (optFlag & NNS_FND_HEAP_ERROR_PRINT); - u32 totalBytes = 0; - - if (!IsValidExpHeapHandle(heap)) { - HEAP_WARNING(bPrint, "[NNS Foundation " "Exp" " Heap]" " Invalid heap handle. - %08X\n", heap); - return FALSE; - } - - { - NNSiFndHeapHead * const pHeapHd = heap; - NNSiFndExpHeapHead * const pExpHeapHd = GetExpHeapHeadPtrFromHeapHead(pHeapHd); - NNSiFndExpHeapMBlockHead * pMBHead = NULL; - NNSiFndExpHeapMBlockHead * pMBHeadPrev = NULL; - - for (pMBHead = pExpHeapHd->mbUsedList.head; pMBHead; pMBHeadPrev = pMBHead, pMBHead = pMBHead->pMBHeadNext) { - if (!CheckUsedMBlock(pMBHead, pHeapHd, optFlag) - || !CheckMBlockPrevPtr(pMBHead, pMBHeadPrev, optFlag) - ) { - return FALSE; - } - - totalBytes += sizeof(NNSiFndExpHeapMBlockHead) + pMBHead->blockSize + GetAlignmentForMBlock(pMBHead); - } - - if (!CheckMBlockLinkTail(pMBHeadPrev, pExpHeapHd->mbUsedList.tail, "tail", optFlag)) { - return FALSE; - } - - pMBHead = NULL; - pMBHeadPrev = NULL; - for (pMBHead = pExpHeapHd->mbFreeList.head; pMBHead; pMBHeadPrev = pMBHead, pMBHead = pMBHead->pMBHeadNext) { - if (!CheckFreeMBlock(pMBHead, pHeapHd, optFlag) - || !CheckMBlockPrevPtr(pMBHead, pMBHeadPrev, optFlag) - ) { - return FALSE; - } - - totalBytes += sizeof(NNSiFndExpHeapMBlockHead) + pMBHead->blockSize; - } - - if (!CheckMBlockLinkTail(pMBHeadPrev, pExpHeapHd->mbFreeList.tail, "tail", optFlag)) { - return FALSE; - } - - if (totalBytes != GetOffsetFromPtr(pHeapHd->heapStart, pHeapHd->heapEnd)) { - HEAP_WARNING( - bPrint, "[NNS Foundation " "Exp" " Heap]" " Incorrect total memory block size. - heap size %08X, sum size %08X\n", - GetOffsetFromPtr(pHeapHd->heapStart, pHeapHd->heapEnd), totalBytes - ); - return FALSE; - } - - return TRUE; - } -} - -#endif - -#if !defined(NNS_FINALROM) - -BOOL NNS_FndCheckForMBlockExpHeap (const void * memBlock, NNSFndHeapHandle heap, u32 optFlag) { - const NNSiFndExpHeapMBlockHead * pMBHead = NULL; - NNSiFndHeapHead * const pHeapHd = heap; - - if (!memBlock) { - return FALSE; - } - - pMBHead = GetMBlockHeadCPtr(memBlock); - - if (!CheckUsedMBlock(pMBHead, pHeapHd, optFlag)) { - return FALSE; - } - - if (pMBHead->pMBHeadPrev) { - if (!CheckUsedMBlock(pMBHead->pMBHeadPrev, pHeapHd, optFlag) - || !CheckMBlockNextPtr(pMBHead->pMBHeadPrev, pMBHead, optFlag) - ) { - return FALSE; - } - } else { - if (pHeapHd) { - if (!CheckMBlockLinkTail(pMBHead, GetExpHeapHeadPtrFromHeapHead(pHeapHd)->mbUsedList.head, "head", optFlag)) { - return FALSE; - } - } - } - - if (pMBHead->pMBHeadNext) { - if (!CheckUsedMBlock(pMBHead->pMBHeadNext, pHeapHd, optFlag) - || !CheckMBlockPrevPtr(pMBHead->pMBHeadNext, pMBHead, optFlag) - ) { - return FALSE; - } - } else { - if (pHeapHd) { - if (!CheckMBlockLinkTail(pMBHead, GetExpHeapHeadPtrFromHeapHead(pHeapHd)->mbUsedList.tail, "tail", optFlag)) { - return FALSE; - } - } - } - - return TRUE; -} - -#endif diff --git a/subprojects/NitroSystem/libraries/fnd/src/frameheap.c b/subprojects/NitroSystem/libraries/fnd/src/frameheap.c deleted file mode 100644 index 2c8c52f20b..0000000000 --- a/subprojects/NitroSystem/libraries/fnd/src/frameheap.c +++ /dev/null @@ -1,373 +0,0 @@ - -#include -#include -#include -#include - -#include "include/heapcommoni.h" - -#define MIN_ALIGNMENT 4 - -static NNS_FND_INLINE BOOL IsValidFrmHeapHandle (NNSFndHeapHandle handle) { - if (handle == NNS_FND_HEAP_INVALID_HANDLE) { - return FALSE; - } - - { - NNSiFndHeapHead * pHeapHd = handle; - return pHeapHd->signature == NNSI_FRMHEAP_SIGNATURE; - } -} - -static NNS_FND_INLINE NNSiFndFrmHeapHead * GetFrmHeapHeadPtrFromHeapHead (NNSiFndHeapHead * pHHead) { - return AddU32ToPtr(pHHead, sizeof(NNSiFndHeapHead)); -} - -static NNS_FND_INLINE NNSiFndHeapHead * GetHeapHeadPtrFromFrmHeapHead (NNSiFndFrmHeapHead * pFrmHeapHd) { - return SubU32ToPtr(pFrmHeapHd, sizeof(NNSiFndHeapHead)); -} - -static NNSiFndHeapHead * InitFrameHeap (void * startAddress, void * endAddress, u16 optFlag) { - NNSiFndHeapHead * pHeapHd = startAddress; - NNSiFndFrmHeapHead * pFrmHeapHd = GetFrmHeapHeadPtrFromHeapHead(pHeapHd); - - NNSi_FndInitHeapHead( - pHeapHd, - NNSI_FRMHEAP_SIGNATURE, - AddU32ToPtr(pFrmHeapHd, sizeof(NNSiFndFrmHeapHead)), - endAddress, - optFlag - ); - - pFrmHeapHd->headAllocator = pHeapHd->heapStart; - pFrmHeapHd->tailAllocator = pHeapHd->heapEnd; - - pFrmHeapHd->pState = NULL; - - return pHeapHd; -} - -static void * AllocFromHead (NNSiFndFrmHeapHead * pFrmHeapHd, u32 size, int alignment) { - void * newBlock = NNSi_FndRoundUpPtr(pFrmHeapHd->headAllocator, alignment); - void * endAddress = AddU32ToPtr(newBlock, size); - - if (NNSiGetUIntPtr(endAddress) > NNSiGetUIntPtr(pFrmHeapHd->tailAllocator)) { - return NULL; - } - - FillAllocMemory( - GetHeapHeadPtrFromFrmHeapHead(pFrmHeapHd), - pFrmHeapHd->headAllocator, - GetOffsetFromPtr(pFrmHeapHd->headAllocator, endAddress) - ); - - pFrmHeapHd->headAllocator = endAddress; - - return newBlock; -} - -static void * AllocFromTail (NNSiFndFrmHeapHead * pFrmHeapHd, u32 size, int alignment) { - void * newBlock = NNSi_FndRoundDownPtr(SubU32ToPtr(pFrmHeapHd->tailAllocator, size), alignment); - - if (NNSiGetUIntPtr(newBlock) < NNSiGetUIntPtr(pFrmHeapHd->headAllocator)) { - return NULL; - } - - FillAllocMemory( - GetHeapHeadPtrFromFrmHeapHead(pFrmHeapHd), - newBlock, - GetOffsetFromPtr(newBlock, pFrmHeapHd->tailAllocator) - ); - - pFrmHeapHd->tailAllocator = newBlock; - - return newBlock; -} - -static void FreeHead (NNSiFndHeapHead * pHeapHd) { - NNSiFndFrmHeapHead * pFrmHeapHd = GetFrmHeapHeadPtrFromHeapHead(pHeapHd); - - FillFreeMemory( - pHeapHd, - pHeapHd->heapStart, - GetOffsetFromPtr(pHeapHd->heapStart, pFrmHeapHd->headAllocator) - ); - - pFrmHeapHd->headAllocator = pHeapHd->heapStart; - pFrmHeapHd->pState = NULL; -} - -static void FreeTail (NNSiFndHeapHead * pHeapHd) { - NNSiFndFrmHeapHead * pFrmHeapHd = GetFrmHeapHeadPtrFromHeapHead(pHeapHd); - - FillFreeMemory( - pHeapHd, - pFrmHeapHd->tailAllocator, - GetOffsetFromPtr(pFrmHeapHd->tailAllocator, pHeapHd->heapEnd) - ); - - { - NNSiFndFrmHeapState * pState; - for (pState = pFrmHeapHd->pState; pState; pState = pState->pPrevState) { - pState->tailAllocator = pHeapHd->heapEnd; - } - } - - pFrmHeapHd->tailAllocator = pHeapHd->heapEnd; -} - -#if !defined(NNS_FINALROM) - -static void PrintSize (u32 size, u32 wholeSize) { - OS_Printf("%9d (%6.2f%%)", size, 100.0 * size / wholeSize); -} - -#endif - -void * NNSi_FndGetFreeStartForFrmHeap (NNSFndHeapHandle heap) { - NNS_ASSERT(IsValidFrmHeapHandle(heap)); - return GetFrmHeapHeadPtrFromHeapHead(heap)->headAllocator; -} - -void * NNSi_FndGetFreeEndForFrmHeap (NNSFndHeapHandle heap) { - NNS_ASSERT(IsValidFrmHeapHandle(heap)); - return GetFrmHeapHeadPtrFromHeapHead(heap)->tailAllocator; -} - -#if !defined(NNS_FINALROM) - -void NNSi_FndDumpFrmHeap (NNSFndHeapHandle heap) { - NNS_ASSERT(IsValidFrmHeapHandle(heap)); - - { - NNSiFndHeapHead * const pHeapHd = heap; - NNSiFndFrmHeapHead * const pFrmHeapHd = GetFrmHeapHeadPtrFromHeapHead(pHeapHd); - const u32 heapSize = GetOffsetFromPtr(pHeapHd->heapStart, pHeapHd->heapEnd); - - NNSi_FndDumpHeapHead(pHeapHd); - - OS_Printf(" head [%p - %p) ", pHeapHd->heapStart, pFrmHeapHd->headAllocator); - PrintSize(GetOffsetFromPtr(pHeapHd->heapStart, pFrmHeapHd->headAllocator), heapSize); - OS_Printf("\n free "); - PrintSize(GetOffsetFromPtr(pFrmHeapHd->headAllocator, pFrmHeapHd->tailAllocator), heapSize); - OS_Printf("\n tail [%p - %p) ", pFrmHeapHd->tailAllocator, pHeapHd->heapEnd); - PrintSize(GetOffsetFromPtr(pFrmHeapHd->tailAllocator, pHeapHd->heapEnd), heapSize); - OS_Printf("\n"); - - if (pFrmHeapHd->pState) { - NNSiFndFrmHeapState * pState; - - OS_Printf(" state : [tag] [head] [tail]\n"); - - for (pState = pFrmHeapHd->pState; pState; pState = pState->pPrevState) { - OS_Printf( - " '%c%c%c%c' : %p %p\n", pState->tagName >> 24, (pState->tagName >> 16) & 0xFF, (pState->tagName >> 8) & 0xFF, pState->tagName & 0xFF, - pState->headAllocator, pState->tailAllocator - ); - } - } - - OS_Printf("\n"); - } -} - -#endif - -NNSFndHeapHandle NNS_FndCreateFrmHeapEx (void * startAddress, u32 size, u16 optFlag) { - void * endAddress; - - SDK_NULL_ASSERT(startAddress); - - endAddress = NNSi_FndRoundDownPtr(AddU32ToPtr(startAddress, size), MIN_ALIGNMENT); - startAddress = NNSi_FndRoundUpPtr(startAddress, MIN_ALIGNMENT); - - if (NNSiGetUIntPtr(startAddress) > NNSiGetUIntPtr(endAddress) - || GetOffsetFromPtr(startAddress, endAddress) < sizeof(NNSiFndHeapHead) + sizeof(NNSiFndFrmHeapHead) - ) { - return NNS_FND_HEAP_INVALID_HANDLE; - } - - { - NNSiFndHeapHead * pHHead = InitFrameHeap(startAddress, endAddress, optFlag); - return pHHead; - } -} - -void NNS_FndDestroyFrmHeap (NNSFndHeapHandle heap) { - NNS_ASSERT(IsValidFrmHeapHandle(heap)); - NNSi_FndFinalizeHeap(heap); -} - -void * NNS_FndAllocFromFrmHeapEx (NNSFndHeapHandle heap, u32 size, int alignment) { - void * memory = NULL; - NNSiFndFrmHeapHead * pFrmHeapHd; - - NNS_ASSERT(IsValidFrmHeapHandle(heap)); - - NNS_ASSERT(alignment % MIN_ALIGNMENT == 0); - NNS_ASSERT(MIN_ALIGNMENT <= abs(alignment) && abs(alignment) <= 32); - - pFrmHeapHd = GetFrmHeapHeadPtrFromHeapHead(heap); - - if (size == 0) { - size = 1; - } - - size = NNSi_FndRoundUp(size, MIN_ALIGNMENT); - - if (alignment >= 0) { - memory = AllocFromHead(pFrmHeapHd, size, alignment); - } else { - memory = AllocFromTail(pFrmHeapHd, size, -alignment); - } - - return memory; -} - -void NNS_FndFreeToFrmHeap (NNSFndHeapHandle heap, int mode) { - NNS_ASSERT(IsValidFrmHeapHandle(heap)); - - if (mode & NNS_FND_FRMHEAP_FREE_HEAD) { - FreeHead(heap); - } - - if (mode & NNS_FND_FRMHEAP_FREE_TAIL) { - FreeTail(heap); - } -} - -u32 NNS_FndGetAllocatableSizeForFrmHeapEx (NNSFndHeapHandle heap, int alignment) { - NNS_ASSERT(IsValidFrmHeapHandle(heap)); - - NNS_ASSERT(alignment % MIN_ALIGNMENT == 0); - NNS_ASSERT(MIN_ALIGNMENT <= abs(alignment) && abs(alignment) <= 32); - - alignment = abs(alignment); - - { - const NNSiFndFrmHeapHead * pFrmHeapHd = GetFrmHeapHeadPtrFromHeapHead(heap); - const void * block = NNSi_FndRoundUpPtr(pFrmHeapHd->headAllocator, alignment); - - if (NNSiGetUIntPtr(block) > NNSiGetUIntPtr(pFrmHeapHd->tailAllocator)) { - return 0; - } - - return GetOffsetFromPtr(block, pFrmHeapHd->tailAllocator); - } -} - -BOOL NNS_FndRecordStateForFrmHeap (NNSFndHeapHandle heap, u32 tagName) { - NNS_ASSERT(IsValidFrmHeapHandle(heap)); - - { - NNSiFndFrmHeapHead * pFrmHeapHd = GetFrmHeapHeadPtrFromHeapHead(heap); - void * oldHeadAllocator = pFrmHeapHd->headAllocator; - - NNSiFndFrmHeapState * pState = AllocFromHead(pFrmHeapHd, sizeof(NNSiFndFrmHeapState), MIN_ALIGNMENT); - if (!pState) { - return FALSE; - } - - pState->tagName = tagName; - pState->headAllocator = oldHeadAllocator; - pState->tailAllocator = pFrmHeapHd->tailAllocator; - pState->pPrevState = pFrmHeapHd->pState; - - pFrmHeapHd->pState = pState; - - return TRUE; - } -} - -BOOL NNS_FndFreeByStateToFrmHeap (NNSFndHeapHandle heap, u32 tagName) { - NNS_ASSERT(IsValidFrmHeapHandle(heap)); - - { - NNSiFndFrmHeapHead * pFrmHeapHd = GetFrmHeapHeadPtrFromHeapHead(heap); - NNSiFndFrmHeapState * pState = pFrmHeapHd->pState; - - if (tagName != 0) { - for (; pState; pState = pState->pPrevState) { - if (pState->tagName == tagName) { - break; - } - } - } - - if (!pState) { - return FALSE; - } - - pFrmHeapHd->headAllocator = pState->headAllocator; - pFrmHeapHd->tailAllocator = pState->tailAllocator; - - pFrmHeapHd->pState = pState->pPrevState; - - return TRUE; - } -} - -u32 NNS_FndAdjustFrmHeap (NNSFndHeapHandle heap) { - NNS_ASSERT(IsValidFrmHeapHandle(heap)); - - { - NNSiFndHeapHead * pHeapHd = heap; - NNSiFndFrmHeapHead * pFrmHeapHd = GetFrmHeapHeadPtrFromHeapHead(pHeapHd); - - if (0 < GetOffsetFromPtr(pFrmHeapHd->tailAllocator, pHeapHd->heapEnd)) { - return 0; - } - - pFrmHeapHd->tailAllocator = pHeapHd->heapEnd = pFrmHeapHd->headAllocator; - - return GetOffsetFromPtr(heap, pHeapHd->heapEnd); - } -} - -u32 NNS_FndResizeForMBlockFrmHeap (NNSFndHeapHandle heap, void * memBlock, u32 newSize) { - NNSiFndHeapHead * pHeapHd = NULL; - NNSiFndFrmHeapHead * pFrmHeapHd = NULL; - - NNS_ASSERT(IsValidFrmHeapHandle(heap)); - NNS_ASSERT(memBlock == NNSi_FndRoundDownPtr(memBlock, MIN_ALIGNMENT)); - - pHeapHd = heap; - pFrmHeapHd = GetFrmHeapHeadPtrFromHeapHead(pHeapHd); - - NNS_ASSERT( - ComparePtr(pHeapHd->heapStart, memBlock) <= 0 - && ComparePtr(pFrmHeapHd->headAllocator, memBlock) > 0 - ); - NNS_ASSERT( - pFrmHeapHd->pState == NULL - || ComparePtr(pFrmHeapHd->pState, memBlock) < 0 - ); - - if (newSize == 0) { - newSize = 1; - } - newSize = NNSi_FndRoundUp(newSize, MIN_ALIGNMENT); - - { - const u32 oldSize = GetOffsetFromPtr(memBlock, pFrmHeapHd->headAllocator); - void * endAddress = AddU32ToPtr(memBlock, newSize); - - if (newSize == oldSize) { - return newSize; - } - - if (newSize > oldSize) { - if (ComparePtr(endAddress, pFrmHeapHd->tailAllocator) > 0) { - return 0; - } - - FillAllocMemory(heap, pFrmHeapHd->headAllocator, newSize - oldSize); - } else { - FillFreeMemory(heap, endAddress, oldSize - newSize); - } - - pFrmHeapHd->headAllocator = endAddress; - - return newSize; - } -} diff --git a/subprojects/NitroSystem/libraries/fnd/src/heapcommon.c b/subprojects/NitroSystem/libraries/fnd/src/heapcommon.c deleted file mode 100644 index 38c8a2fb27..0000000000 --- a/subprojects/NitroSystem/libraries/fnd/src/heapcommon.c +++ /dev/null @@ -1,146 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include - -#include "include/heapcommoni.h" - -static NNSFndList sRootList; -static BOOL sRootListInitialized = FALSE; - -#if !defined(NNS_FINALROM) - -static u32 sFillVals[NNS_FND_HEAP_FILL_MAX] = { - 0xC3C3C3C3, - 0xF3F3F3F3, - 0xD3D3D3D3, -}; - -#endif - -static NNSiFndHeapHead * FindContainHeap (NNSFndList * pList, const void * memBlock) { - NNSiFndHeapHead * pHeapHd = NULL; - while (NULL != (pHeapHd = NNS_FndGetNextListObject(pList, pHeapHd))) { - if (NNSiGetUIntPtr(pHeapHd->heapStart) <= NNSiGetUIntPtr(memBlock) - && NNSiGetUIntPtr(memBlock) < NNSiGetUIntPtr(pHeapHd->heapEnd) - ) { - NNSiFndHeapHead * pChildHeapHd = FindContainHeap(&pHeapHd->childList, memBlock); - if (pChildHeapHd) { - return pChildHeapHd; - } - - return pHeapHd; - } - } - - return NULL; -} - -static NNSFndList * FindListContainHeap (NNSiFndHeapHead * pHeapHd) { - NNSFndList * pList = &sRootList; - - NNSiFndHeapHead * pContainHeap = FindContainHeap(&sRootList, pHeapHd); - - if (pContainHeap) { - pList = &pContainHeap->childList; - } - - return pList; -} - -static NNS_FND_INLINE void DumpHeapList (void) { - return; -} - -void NNSi_FndInitHeapHead (NNSiFndHeapHead * pHeapHd, u32 signature, void * heapStart, void * heapEnd, u16 optFlag) { - pHeapHd->signature = signature; - - pHeapHd->heapStart = heapStart; - pHeapHd->heapEnd = heapEnd; - - pHeapHd->attribute = 0; - SetOptForHeap(pHeapHd, optFlag); - - FillNoUseMemory( - pHeapHd, - heapStart, - GetOffsetFromPtr(heapStart, heapEnd) - ); - - NNS_FND_INIT_LIST(&pHeapHd->childList, NNSiFndHeapHead, link); - - if (!sRootListInitialized) { - NNS_FND_INIT_LIST(&sRootList, NNSiFndHeapHead, link); - sRootListInitialized = TRUE; - } - - NNS_FndAppendListObject(FindListContainHeap(pHeapHd), pHeapHd); - DumpHeapList(); -} - -void NNSi_FndFinalizeHeap (NNSiFndHeapHead * pHeapHd) { - NNS_FndRemoveListObject(FindListContainHeap(pHeapHd), pHeapHd); - DumpHeapList(); -} - -void NNSi_FndDumpHeapHead (NNSiFndHeapHead * pHeapHd) { - OS_Printf("[NNS Foundation "); - - switch (pHeapHd->signature) { - case NNSI_EXPHEAP_SIGNATURE: OS_Printf("Exp"); break; - case NNSI_FRMHEAP_SIGNATURE: OS_Printf("Frame"); break; - case NNSI_UNTHEAP_SIGNATURE: OS_Printf("Unit"); break; - default: - NNS_ASSERT(FALSE); - } - - OS_Printf(" Heap]\n"); - - OS_Printf(" whole [%p - %p)\n", pHeapHd, pHeapHd->heapEnd); -} - -NNSFndHeapHandle NNS_FndFindContainHeap (const void * memBlock) { - return FindContainHeap(&sRootList, memBlock); -} - -#if !defined(NNS_FINALROM) - -void NNS_FndDumpHeap (NNSFndHeapHandle heap) { - NNSiFndHeapHead * pHeapHd = heap; - switch (pHeapHd->signature) { - case NNSI_EXPHEAP_SIGNATURE: NNSi_FndDumpExpHeap(heap); break; - case NNSI_FRMHEAP_SIGNATURE: NNSi_FndDumpFrmHeap(heap); break; - case NNSI_UNTHEAP_SIGNATURE: NNSi_FndDumpUnitHeap(heap); break; - default: - OS_Printf("[NNS Foundation] dump heap : unknown heap. - %p\n", heap); - } -} - -#endif - -#if !defined(NNS_FINALROM) - -u32 NNS_FndSetFillValForHeap (int type, u32 val) { - NNS_ASSERT(type < NNS_FND_HEAP_FILL_MAX); - - { - u32 oldVal = sFillVals[type]; - sFillVals[type] = val; - return oldVal; - } -} - -#endif - -#if !defined(NNS_FINALROM) - -u32 NNS_FndGetFillValForHeap (int type) { - NNS_ASSERT(type < NNS_FND_HEAP_FILL_MAX); - - return sFillVals[type]; -} - -#endif diff --git a/subprojects/NitroSystem/libraries/fnd/src/include/heapcommoni.h b/subprojects/NitroSystem/libraries/fnd/src/include/heapcommoni.h deleted file mode 100644 index c73dca2186..0000000000 --- a/subprojects/NitroSystem/libraries/fnd/src/include/heapcommoni.h +++ /dev/null @@ -1,142 +0,0 @@ -#ifndef NNS_FND_HEAPCOMMONI_H_ -#define NNS_FND_HEAPCOMMONI_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef s32 NNSiIntPtr; -typedef u32 NNSiUIntPtr; - -#define NNSi_FndRoundUp(value, alignment) \ - (((value) + (alignment - 1)) & ~(alignment - 1)) - -#define NNSi_FndRoundUpPtr(ptr, alignment) \ - ((void *)NNSi_FndRoundUp(NNSiGetUIntPtr(ptr), alignment)) - -#define NNSi_FndRoundDown(value, alignment) \ - ((value) & ~(alignment - 1)) - -#define NNSi_FndRoundDownPtr(ptr, alignment) \ - ((void *)NNSi_FndRoundDown(NNSiGetUIntPtr(ptr), alignment)) - -#define NNSi_FndGetBitValue(data, st, bits) \ - (((data) >> (st)) & ((1 << (bits)) - 1)) - -#define NNSi_FndSetBitValue(data, st, bits, val) \ - do \ - { \ - u32 maskBits = (u32)((1 << (bits)) - 1); \ - u32 newVal = (val)&maskBits; \ - (void)(maskBits <<= st); \ - (data) &= ~maskBits; \ - (data) |= newVal << (st); \ - } while (FALSE); - -NNS_FND_INLINE NNSiUIntPtr NNSiGetUIntPtr (const void * ptr) { - return (NNSiUIntPtr)ptr; -} - -NNS_FND_INLINE u32 GetOffsetFromPtr (const void * start, const void * end) { - return NNSiGetUIntPtr(end) - NNSiGetUIntPtr(start); -} - -NNS_FND_INLINE void * AddU32ToPtr (void * ptr, u32 val) { - return (void *)(NNSiGetUIntPtr(ptr) + val); -} - -NNS_FND_INLINE const void * AddU32ToCPtr (const void * ptr, u32 val) { - return (const void *)(NNSiGetUIntPtr(ptr) + val); -} - -NNS_FND_INLINE void * SubU32ToPtr (void * ptr, u32 val) { - return (void *)(NNSiGetUIntPtr(ptr) - val); -} - -NNS_FND_INLINE const void * SubU32ToCPtr (const void * ptr, u32 val) { - return (const void *)(NNSiGetUIntPtr(ptr) - val); -} - -NNS_FND_INLINE int ComparePtr (const void * a, const void * b) { - const u8 * wa = a; - const u8 * wb = b; - - return wa - wb; -} - -NNS_FND_INLINE u16 GetOptForHeap (const NNSiFndHeapHead * pHeapHd) { - return (u16)NNSi_FndGetBitValue(pHeapHd->attribute, 0, 8); -} - -NNS_FND_INLINE void SetOptForHeap ( - NNSiFndHeapHead * pHeapHd, - u16 optFlag -) { - NNSi_FndSetBitValue(pHeapHd->attribute, 0, 8, optFlag); -} - -NNS_FND_INLINE void FillAllocMemory ( - NNSiFndHeapHead * pHeapHd, - void * address, - u32 size -) { - if (GetOptForHeap(pHeapHd) & NNS_FND_HEAP_OPT_0_CLEAR) { - MI_CpuFill32(address, 0, size); - } else { - #if !defined(NNS_FINALROM) - if (GetOptForHeap(pHeapHd) & NNS_FND_HEAP_OPT_DEBUG_FILL) { - MI_CpuFill32(address, NNS_FndGetFillValForHeap(NNS_FND_HEAP_FILL_ALLOC), size); - } - #endif - } -} - -#if defined(NNS_FINALROM) - #define FillFreeMemory(pHeapHd, address, size) ((void)0) -#else -NNS_FND_INLINE void FillFreeMemory ( - NNSiFndHeapHead * pHeapHd, - void * address, - u32 size -) { - if (GetOptForHeap(pHeapHd) & NNS_FND_HEAP_OPT_DEBUG_FILL) { - MI_CpuFill32(address, NNS_FndGetFillValForHeap(NNS_FND_HEAP_FILL_FREE), size); - } -} -#endif - -#if defined(NNS_FINALROM) - #define FillNoUseMemory(pHeapHd, address, size) ((void)0) -#else -NNS_FND_INLINE void FillNoUseMemory ( - NNSiFndHeapHead * pHeapHd, - void * address, - u32 size -) { - if (GetOptForHeap(pHeapHd) & NNS_FND_HEAP_OPT_DEBUG_FILL) { - MI_CpuFill32(address, NNS_FndGetFillValForHeap(NNS_FND_HEAP_FILL_NOUSE), size); - } -} -#endif - -void NNSi_FndInitHeapHead( - NNSiFndHeapHead * pHeapHd, - u32 signature, - void * heapStart, - void * heapEnd, - u16 optFlag); - -void NNSi_FndFinalizeHeap( - NNSiFndHeapHead * pHeapHd); - -void NNSi_FndDumpHeapHead( - NNSiFndHeapHead * pHeapHd); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/libraries/fnd/src/list_nnsfnd.c b/subprojects/NitroSystem/libraries/fnd/src/list_nnsfnd.c deleted file mode 100644 index 1018f70cae..0000000000 --- a/subprojects/NitroSystem/libraries/fnd/src/list_nnsfnd.c +++ /dev/null @@ -1,141 +0,0 @@ -#include -#include - -#define OBJ_TO_LINK(list, obj) ((NNSFndLink *)(((u32)(obj)) + (list)->offset)) - -void NNS_FndInitList (NNSFndList * list, u16 offset) { - NNS_NULL_ASSERT(list); - - list->headObject = NULL; - list->tailObject = NULL; - list->numObjects = 0; - list->offset = offset; -} - -static void SetFirstObject (NNSFndList * list, void * object) { - NNSFndLink * link; - - NNS_NULL_ASSERT(list); - NNS_NULL_ASSERT(object); - - link = OBJ_TO_LINK(list, object); - - link->nextObject = NULL; - link->prevObject = NULL; - list->headObject = object; - list->tailObject = object; - list->numObjects++; -} - -void NNS_FndAppendListObject (NNSFndList * list, void * object) { - NNS_NULL_ASSERT(list); - NNS_NULL_ASSERT(object); - - if (list->headObject == NULL) { - SetFirstObject(list, object); - } else { - NNSFndLink * link = OBJ_TO_LINK(list, object); - - link->prevObject = list->tailObject; - link->nextObject = NULL; - - OBJ_TO_LINK(list, list->tailObject)->nextObject = object; - list->tailObject = object; - list->numObjects++; - } -} - -void NNS_FndPrependListObject (NNSFndList * list, void * object) { - NNS_NULL_ASSERT(list); - NNS_NULL_ASSERT(object); - - if (list->headObject == NULL) { - SetFirstObject(list, object); - } else { - NNSFndLink * link = OBJ_TO_LINK(list, object); - - link->prevObject = NULL; - link->nextObject = list->headObject; - - OBJ_TO_LINK(list, list->headObject)->prevObject = object; - list->headObject = object; - list->numObjects++; - } -} - -void NNS_FndInsertListObject (NNSFndList * list, void * target, void * object) { - NNS_NULL_ASSERT(list); - NNS_NULL_ASSERT(object); - - if (target == NULL) { - NNS_FndAppendListObject(list, object); - } else if (target == list->headObject) { - NNS_FndPrependListObject(list, object); - } else { - NNSFndLink * link = OBJ_TO_LINK(list, object); - void * prevObj = OBJ_TO_LINK(list, target)->prevObject; - NNSFndLink * prevLnk = OBJ_TO_LINK(list, prevObj); - - link->prevObject = prevObj; - link->nextObject = target; - prevLnk->nextObject = object; - OBJ_TO_LINK(list, target)->prevObject = object; - list->numObjects++; - } -} - -void NNS_FndRemoveListObject (NNSFndList * list, void * object) { - NNSFndLink * link; - - NNS_NULL_ASSERT(list); - NNS_NULL_ASSERT(object); - - link = OBJ_TO_LINK(list, object); - - if (link->prevObject == NULL) { - list->headObject = link->nextObject; - } else { - OBJ_TO_LINK(list, link->prevObject)->nextObject = link->nextObject; - } - if (link->nextObject == NULL) { - list->tailObject = link->prevObject; - } else { - OBJ_TO_LINK(list, link->nextObject)->prevObject = link->prevObject; - } - link->prevObject = NULL; - link->nextObject = NULL; - list->numObjects--; -} - -void * NNS_FndGetNextListObject (NNSFndList * list, void * object) { - NNS_NULL_ASSERT(list); - - if (object == NULL) { - return list->headObject; - } - return OBJ_TO_LINK(list, object)->nextObject; -} - -void * NNS_FndGetPrevListObject (NNSFndList * list, void * object) { - NNS_NULL_ASSERT(list); - - if (object == NULL) { - return list->tailObject; - } - return OBJ_TO_LINK(list, object)->prevObject; -} - -void * NNS_FndGetNthListObject (NNSFndList * list, u16 index) { - int count = 0; - NNSFndLink * object = NULL; - - NNS_NULL_ASSERT(list); - - while ((object = NNS_FndGetNextListObject(list, object)) != NULL) { - if (index == count) { - return object; - } - count++; - } - return NULL; -} diff --git a/subprojects/NitroSystem/libraries/fnd/src/unitheap.c b/subprojects/NitroSystem/libraries/fnd/src/unitheap.c deleted file mode 100644 index d4c17cf3ae..0000000000 --- a/subprojects/NitroSystem/libraries/fnd/src/unitheap.c +++ /dev/null @@ -1,172 +0,0 @@ -#include -#include -#include -#include - -#include "include/heapcommoni.h" - -#define MIN_ALIGNMENT 4 - -static NNSiFndUntHeapMBlockHead * PopMBlock (NNSiFndUntMBlockList * list) { - NNSiFndUntHeapMBlockHead * block = list->head; - if (block) { - list->head = block->pMBlkHdNext; - } - - return block; -} - -static NNS_FND_INLINE void PushMBlock (NNSiFndUntMBlockList * list, NNSiFndUntHeapMBlockHead * block) { - block->pMBlkHdNext = list->head; - list->head = block; -} - -static NNS_FND_INLINE NNSiFndUntHeapHead * GetUnitHeapHeadPtrFromHeapHead (NNSiFndHeapHead * pHeapHd) { - return AddU32ToPtr(pHeapHd, sizeof(NNSiFndHeapHead)); -} - -static NNS_FND_INLINE BOOL IsValidUnitHeapHandle (NNSFndHeapHandle handle) { - if (handle == NNS_FND_HEAP_INVALID_HANDLE) { - return FALSE; - } - - { - NNSiFndHeapHead * pHeapHd = handle; - return pHeapHd->signature == NNSI_UNTHEAP_SIGNATURE; - } -} - -#if !defined(NNS_FINALROM) - -void NNSi_FndDumpUnitHeap (NNSFndHeapHandle heap) { - NNS_ASSERT(IsValidUnitHeapHandle(heap)); - - { - NNSiFndHeapHead * const pHeapHd = heap; - NNSiFndUntHeapHead * const pUnitHeapHd = GetUnitHeapHeadPtrFromHeapHead(pHeapHd); - const u32 heapSize = GetOffsetFromPtr(pHeapHd->heapStart, pHeapHd->heapEnd); - - const u32 freeSize = NNS_FndCountFreeBlockForUnitHeap(heap) * pUnitHeapHd->mBlkSize; - const u32 usedSize = heapSize - freeSize; - - NNSi_FndDumpHeapHead(pHeapHd); - - OS_Printf( - " %d / %d bytes (%6.2f%%) used\n", - usedSize, heapSize, 100.0f * usedSize / heapSize - ); - } -} - -#endif - -NNSFndHeapHandle NNS_FndCreateUnitHeapEx (void * startAddress, u32 heapSize, u32 memBlockSize, int alignment, u16 optFlag) { - NNSiFndHeapHead * pHeapHd; - void * heapEnd; - - SDK_NULL_ASSERT(startAddress); - - NNS_ASSERT(alignment % MIN_ALIGNMENT == 0); - NNS_ASSERT(MIN_ALIGNMENT <= alignment && alignment <= 32); - - pHeapHd = NNSi_FndRoundUpPtr(startAddress, MIN_ALIGNMENT); - heapEnd = NNSi_FndRoundDownPtr(AddU32ToPtr(startAddress, heapSize), MIN_ALIGNMENT); - - if (ComparePtr(pHeapHd, heapEnd) > 0) { - return NNS_FND_HEAP_INVALID_HANDLE; - } - - memBlockSize = NNSi_FndRoundUp(memBlockSize, alignment); - - { - NNSiFndUntHeapHead * pUntHeapHd = GetUnitHeapHeadPtrFromHeapHead(pHeapHd); - void * heapStart = NNSi_FndRoundUpPtr(AddU32ToPtr(pUntHeapHd, sizeof(NNSiFndUntHeapHead)), alignment); - u32 elementNum; - - if (ComparePtr(heapStart, heapEnd) > 0) { - return NNS_FND_HEAP_INVALID_HANDLE; - } - - elementNum = GetOffsetFromPtr(heapStart, heapEnd) / memBlockSize; - if (elementNum == 0) { - return NNS_FND_HEAP_INVALID_HANDLE; - } - - heapEnd = AddU32ToPtr(heapStart, elementNum * memBlockSize); - - NNSi_FndInitHeapHead( - pHeapHd, - NNSI_UNTHEAP_SIGNATURE, - heapStart, - heapEnd, - optFlag - ); - - pUntHeapHd->mbFreeList.head = heapStart; - pUntHeapHd->mBlkSize = memBlockSize; - - { - NNSiFndUntHeapMBlockHead * pMBlkHd = pUntHeapHd->mbFreeList.head; - int i; - - for (i = 0; i < elementNum - 1; ++i, pMBlkHd = pMBlkHd->pMBlkHdNext) { - pMBlkHd->pMBlkHdNext = AddU32ToPtr(pMBlkHd, memBlockSize); - } - - pMBlkHd->pMBlkHdNext = NULL; - } - - return pHeapHd; - } -} - -void NNS_FndDestroyUnitHeap (NNSFndHeapHandle heap) { - NNS_ASSERT(IsValidUnitHeapHandle(heap)); - NNSi_FndFinalizeHeap(heap); -} - -void * NNS_FndAllocFromUnitHeap (NNSFndHeapHandle heap) { - NNS_ASSERT(IsValidUnitHeapHandle(heap)); - - { - NNSiFndUntHeapHead * pUntHeapHd = GetUnitHeapHeadPtrFromHeapHead(heap); - NNSiFndUntHeapMBlockHead * pMBlkHd = PopMBlock(&pUntHeapHd->mbFreeList); - - if (pMBlkHd) { - FillAllocMemory(heap, pMBlkHd, pUntHeapHd->mBlkSize); - } - - return pMBlkHd; - } -} - -void NNS_FndFreeToUnitHeap (NNSFndHeapHandle heap, void * memBlock) { - NNS_ASSERT(IsValidUnitHeapHandle(heap)); - - { - NNSiFndUntHeapHead * pUntHeapHd = GetUnitHeapHeadPtrFromHeapHead(heap); - - FillFreeMemory(heap, memBlock, pUntHeapHd->mBlkSize); - PushMBlock(&pUntHeapHd->mbFreeList, memBlock); - } -} - -u32 NNS_FndCountFreeBlockForUnitHeap (NNSFndHeapHandle heap) { - NNS_ASSERT(IsValidUnitHeapHandle(heap)); - - { - NNSiFndUntHeapHead * pUntHeapHd = GetUnitHeapHeadPtrFromHeapHead(heap); - NNSiFndUntHeapMBlockHead * pMBlkHd = pUntHeapHd->mbFreeList.head; - u32 cnt = 0; - - for (; pMBlkHd; pMBlkHd = pMBlkHd->pMBlkHdNext) { - ++cnt; - } - - return cnt; - } -} - -u32 NNS_FndCalcHeapSizeForUnitHeap (u32 memBlockSize, u32 memBlockNum, int alignment) { - return sizeof(NNSiFndHeapHead) + sizeof(NNSiFndUntHeapHead) + (alignment - 4) + memBlockNum * NNSi_FndRoundUp(memBlockSize, alignment); -} diff --git a/subprojects/NitroSystem/libraries/g2d/meson.build b/subprojects/NitroSystem/libraries/g2d/meson.build deleted file mode 100644 index e072efbe12..0000000000 --- a/subprojects/NitroSystem/libraries/g2d/meson.build +++ /dev/null @@ -1,42 +0,0 @@ -libnnsg2d_srcs = files( - 'src/load/g2d_NAN_load.c', - 'src/load/g2d_NOB_load.c', - 'src/load/g2d_NMC_load.c', - 'src/load/g2d_NCG_load.c', - 'src/load/g2d_NCL_load.c', - 'src/load/g2d_NSC_load.c', - 'src/load/g2d_Load.c', - 'src/g2d_Softsprite.c', - 'src/g2d_Animation.c', - 'src/g2d_OAM.c', - 'src/g2d_PaletteTable.c', - 'src/g2d_Image.c', - 'src/g2d_SRTControl.c', - 'src/g2d_Node.c', - 'src/g2d_CellAnimation.c', - 'src/g2d_MultiCellAnimation.c', - 'src/g2d_Renderer.c', - 'src/internal/g2di_Mtx32.c', - 'src/g2d_CellTransferManager.c', - 'src/g2d_OamSoftwareSpriteDraw.c', - 'src/g2d_RendererCore.c', - 'src/g2d_Font.c', - 'src/g2d_CharCanvas.c', - 'src/g2d_TextCanvas.c', - 'src/load/g2d_NFT_load.c', - 'src/internal/g2di_BitReader.c', - 'src/internal/g2di_SplitChar.c' -) - -libnnsg2d_internal_includes = include_directories('src/include') - -libnnsg2d = static_library('nnsg2d', - sources: [libnnsg2d_srcs], - c_args: [c_args, sdk_args], - include_directories: [public_includes, libnnsg2d_internal_includes], - c_pch: nitro_pch, - dependencies: nitrosdk_dep, - pic: false -) - -nitrosystem_libs += libnnsg2d diff --git a/subprojects/NitroSystem/libraries/g2d/src/g2d_Animation.c b/subprojects/NitroSystem/libraries/g2d/src/g2d_Animation.c deleted file mode 100644 index 16d503b2b4..0000000000 --- a/subprojects/NitroSystem/libraries/g2d/src/g2d_Animation.c +++ /dev/null @@ -1,368 +0,0 @@ -#include - -static NNS_G2D_INLINE const NNSG2dAnimFrame * GetFrameBegin_ (const NNSG2dAnimSequence * pSequence) { - NNS_G2D_NULL_ASSERT(pSequence); - return pSequence->pAnmFrameArray; -} - -static NNS_G2D_INLINE const NNSG2dAnimFrame * GetFrameEnd_ (const NNSG2dAnimSequence * pSequence) { - NNS_G2D_NULL_ASSERT(pSequence); - return pSequence->pAnmFrameArray + (pSequence->numFrames); -} - -static NNS_G2D_INLINE const NNSG2dAnimFrame * GetFrameLoopBegin_ (const NNSG2dAnimSequence * pSequence) { - NNS_G2D_NULL_ASSERT(pSequence); - - return pSequence->pAnmFrameArray + pSequence->loopStartFrameIdx; -} - -static NNS_G2D_INLINE u16 GetCurrentFrameIdx_ (const NNSG2dAnimController * pAnimCtrl) { - NNS_G2D_NULL_ASSERT(pAnimCtrl); - return (u16)(((u32)pAnimCtrl->pCurrent - (u32)pAnimCtrl->pAnimSequence->pAnmFrameArray) - / sizeof(NNSG2dAnimFrameData)); -} - -static NNS_G2D_INLINE NNSG2dAnimationPlayMode GetAnimationPlayMode_ (const NNSG2dAnimController * pAnimCtrl) { - NNS_G2D_NULL_ASSERT(pAnimCtrl); - NNS_G2D_NULL_ASSERT(pAnimCtrl->pAnimSequence); - - if (pAnimCtrl->overriddenPlayMode != NNS_G2D_ANIMATIONPLAYMODE_INVALID) { - return pAnimCtrl->overriddenPlayMode; - } else { - return pAnimCtrl->pAnimSequence->playMode; - } -} - -static NNS_G2D_INLINE BOOL IsLoopAnimSequence_ (const NNSG2dAnimController * pAnimCtrl) { - NNS_G2D_NULL_ASSERT(pAnimCtrl); - NNS_G2D_NULL_ASSERT(pAnimCtrl->pAnimSequence); - - { - const NNSG2dAnimationPlayMode playMode = GetAnimationPlayMode_(pAnimCtrl); - - return (playMode == NNS_G2D_ANIMATIONPLAYMODE_FORWARD_LOOP || - playMode == NNS_G2D_ANIMATIONPLAYMODE_REVERSE_LOOP) ? TRUE : FALSE; - } -} - -static NNS_G2D_INLINE BOOL IsReversePlayAnim_ (const NNSG2dAnimController * pAnimCtrl) { - NNS_G2D_NULL_ASSERT(pAnimCtrl); - NNS_G2D_NULL_ASSERT(pAnimCtrl->pAnimSequence); - - { - const NNSG2dAnimationPlayMode playMode = GetAnimationPlayMode_(pAnimCtrl); - - return (playMode == NNS_G2D_ANIMATIONPLAYMODE_REVERSE || - playMode == NNS_G2D_ANIMATIONPLAYMODE_REVERSE_LOOP) ? TRUE : FALSE; - } -} - -static NNS_G2D_INLINE BOOL IsAnimCtrlMovingForward_ (const NNSG2dAnimController * pAnimCtrl) { - NNS_G2D_NULL_ASSERT(pAnimCtrl); - return (pAnimCtrl->speed > 0) ^ (pAnimCtrl->bReverse) ? TRUE : FALSE; -} - -static NNS_G2D_INLINE BOOL ShouldAnmCtrlMoveNext_ (NNSG2dAnimController * pAnimCtrl) { - NNS_G2D_NULL_ASSERT(pAnimCtrl); - NNS_G2D_NULL_ASSERT(pAnimCtrl->pCurrent); - - if (pAnimCtrl->bActive && - (pAnimCtrl->currentTime >= FX32_ONE * (int)pAnimCtrl->pCurrent->frames)) { - return TRUE; - } - return FALSE; -} - -static NNS_G2D_INLINE void CallbackFuncHandling_ (const NNSG2dCallBackFunctor * pFunctor, u16 currentFrameIdx) { - NNS_G2D_NULL_ASSERT(pFunctor); - - switch (pFunctor->type) { - case NNS_G2D_ANMCALLBACKTYPE_SPEC_FRM: - if (currentFrameIdx == pFunctor->frameIdx) { - (*pFunctor->pFunc)(pFunctor->param, currentFrameIdx); - } - break; - - case NNS_G2D_ANMCALLBACKTYPE_EVER_FRM: - (*pFunctor->pFunc)(pFunctor->param, currentFrameIdx); - break; - } -} - -void NNSi_G2dCallbackFuncHandling (const NNSG2dCallBackFunctor * pFunctor, u16 currentFrameIdx) { - CallbackFuncHandling_(pFunctor, currentFrameIdx); -} - -static NNS_G2D_INLINE BOOL IsReachStartEdge_ (const NNSG2dAnimController * pAnimCtrl, const NNSG2dAnimFrame * pFrame) { - NNS_G2D_NULL_ASSERT(pAnimCtrl); - NNS_G2D_NULL_ASSERT(pFrame); - - return (pFrame <= (GetFrameLoopBegin_(pAnimCtrl->pAnimSequence) - 1)) ? TRUE : FALSE; -} - -static NNS_G2D_INLINE BOOL IsReachEdge_ (const NNSG2dAnimController * pAnimCtrl, const NNSG2dAnimFrame * pFrame) { - NNS_G2D_NULL_ASSERT(pAnimCtrl); - NNS_G2D_NULL_ASSERT(pFrame); - - if (IsAnimCtrlMovingForward_(pAnimCtrl)) { - return (pFrame >= GetFrameEnd_(pAnimCtrl->pAnimSequence)) ? TRUE : FALSE; - } else { - return IsReachStartEdge_(pAnimCtrl, pFrame); - } -} - -static NNS_G2D_INLINE void MoveNext_ (NNSG2dAnimController * pAnimCtrl) { - NNS_G2D_NULL_ASSERT(pAnimCtrl); - - if (IsAnimCtrlMovingForward_(pAnimCtrl)) { - pAnimCtrl->pCurrent++; - } else { - pAnimCtrl->pCurrent--; - } -} - -static NNS_G2D_INLINE void SequenceEdgeHandleCommon_ (NNSG2dAnimController * pAnimCtrl) { - NNS_G2D_NULL_ASSERT(pAnimCtrl); - - if (pAnimCtrl->callbackFunctor.type == NNS_G2D_ANMCALLBACKTYPE_LAST_FRM) { - NNS_G2D_NULL_ASSERT(pAnimCtrl->callbackFunctor.pFunc); - (*pAnimCtrl->callbackFunctor.pFunc)(pAnimCtrl->callbackFunctor.param, pAnimCtrl->currentTime); - } - - if (!IsLoopAnimSequence_(pAnimCtrl)) { - NNS_G2dStopAnimCtrl(pAnimCtrl); - } else { - NNS_G2dResetAnimCtrlState(pAnimCtrl); - } -} - -static NNS_G2D_INLINE void SequenceEdgeHandleReverse_ (NNSG2dAnimController * pAnimCtrl) { - NNS_G2D_NULL_ASSERT(pAnimCtrl); - - pAnimCtrl->bReverse = pAnimCtrl->bReverse ^ TRUE; - - if (IsReachStartEdge_(pAnimCtrl, pAnimCtrl->pCurrent)) { - SequenceEdgeHandleCommon_(pAnimCtrl); - } -} - -static NNS_G2D_INLINE void SequenceEdgeHandleNormal_ (NNSG2dAnimController * pAnimCtrl) { - NNS_G2D_NULL_ASSERT(pAnimCtrl); - SequenceEdgeHandleCommon_(pAnimCtrl); -} - -static NNS_G2D_INLINE void ValidateAnimFrame_ (NNSG2dAnimController * pAnimCtrl, const NNSG2dAnimFrame ** pFrame) { - if (*pFrame > GetFrameEnd_(pAnimCtrl->pAnimSequence) - 1) { - *pFrame = GetFrameEnd_(pAnimCtrl->pAnimSequence) - 1; - } else if (*pFrame < GetFrameBegin_(pAnimCtrl->pAnimSequence)) { - *pFrame = GetFrameBegin_(pAnimCtrl->pAnimSequence); - } -} - -static void SequenceEdgeHandle_ (NNSG2dAnimController * pAnimCtrl) { - NNS_G2D_NULL_ASSERT(pAnimCtrl); - - if (IsReversePlayAnim_(pAnimCtrl)) { - SequenceEdgeHandleReverse_(pAnimCtrl); - } else { - SequenceEdgeHandleNormal_(pAnimCtrl); - } - - ValidateAnimFrame_(pAnimCtrl, &pAnimCtrl->pCurrent); -} - -static BOOL SetAnimCtrlCurrentFrameImpl_ (NNSG2dAnimController * pAnimCtrl, u16 index) { - NNS_G2D_NULL_ASSERT(pAnimCtrl); - NNS_G2D_NULL_ASSERT(pAnimCtrl->pAnimSequence); - - if (index < pAnimCtrl->pAnimSequence->numFrames) { - pAnimCtrl->pCurrent = &pAnimCtrl->pAnimSequence->pAnmFrameArray[index]; - if (pAnimCtrl->pCurrent->frames != 0) { - pAnimCtrl->pActiveCurrent = pAnimCtrl->pCurrent; - } - return TRUE; - } - return FALSE; -} - -void * NNS_G2dGetAnimCtrlCurrentElement (NNSG2dAnimController * pAnimCtrl) { - NNS_G2D_NULL_ASSERT(pAnimCtrl); - NNS_G2D_NULL_ASSERT(pAnimCtrl->pActiveCurrent); - NNS_G2D_NULL_ASSERT((void *)pAnimCtrl->pActiveCurrent->pContent); - - return (void *)pAnimCtrl->pActiveCurrent->pContent; -} - -void * NNS_G2dGetAnimCtrlNextElement (NNSG2dAnimController * pAnimCtrl) { - NNS_G2D_NULL_ASSERT(pAnimCtrl); - { - const NNSG2dAnimFrame * pNext = NULL; - - if (IsAnimCtrlMovingForward_(pAnimCtrl)) { - pNext = pAnimCtrl->pCurrent + 1; - } else { - pNext = pAnimCtrl->pCurrent - 1; - } - - ValidateAnimFrame_(pAnimCtrl, &pNext); - NNS_G2D_NULL_ASSERT(pNext->pContent); - - return (void *)pNext->pContent; - } -} - -fx32 NNS_G2dGetAnimCtrlNormalizedTime (NNSG2dAnimController * pAnimCtrl) { - NNS_G2D_NULL_ASSERT(pAnimCtrl); - NNS_G2D_NULL_ASSERT(pAnimCtrl->pCurrent); - - return FX_Div(pAnimCtrl->currentTime, FX32_ONE * pAnimCtrl->pCurrent->frames); -} - -BOOL NNS_G2dTickAnimCtrl (NNSG2dAnimController * pAnimCtrl, fx32 frames) { - BOOL bChangeFrame = FALSE; - - NNS_G2D_NULL_ASSERT(pAnimCtrl); - NNS_G2D_NULL_ASSERT(pAnimCtrl->pCurrent); - NNS_G2D_ASSERTMSG(frames >= 0, "frames must be Greater than zero"); - - if (pAnimCtrl->bActive != TRUE) { - return FALSE; - } - - pAnimCtrl->currentTime += abs(FX_Mul(pAnimCtrl->speed, frames)); - - while (ShouldAnmCtrlMoveNext_(pAnimCtrl)) { - bChangeFrame = TRUE; - - pAnimCtrl->currentTime -= FX32_ONE * (int)pAnimCtrl->pCurrent->frames; - MoveNext_(pAnimCtrl); - - if (IsReachEdge_(pAnimCtrl, pAnimCtrl->pCurrent)) { - SequenceEdgeHandle_(pAnimCtrl); - } - - if (pAnimCtrl->pCurrent->frames != 0) { - pAnimCtrl->pActiveCurrent = pAnimCtrl->pCurrent; - } - - if (pAnimCtrl->callbackFunctor.type != NNS_G2D_ANMCALLBACKTYPE_NONE) { - CallbackFuncHandling_(&pAnimCtrl->callbackFunctor, GetCurrentFrameIdx_(pAnimCtrl)); - } - } - return bChangeFrame; -} - -BOOL NNS_G2dSetAnimCtrlCurrentFrame (NNSG2dAnimController * pAnimCtrl, u16 index) { - NNS_G2D_NULL_ASSERT(pAnimCtrl); - NNS_G2D_NULL_ASSERT(pAnimCtrl->pAnimSequence); - { - const BOOL result = SetAnimCtrlCurrentFrameImpl_(pAnimCtrl, index); - - if (result) { - pAnimCtrl->currentTime = 0; - } - return result; - } -} - -BOOL NNS_G2dSetAnimCtrlCurrentFrameNoResetCurrentTime (NNSG2dAnimController * pAnimCtrl, u16 index) { - NNS_G2D_NULL_ASSERT(pAnimCtrl); - NNS_G2D_NULL_ASSERT(pAnimCtrl->pAnimSequence); - - return SetAnimCtrlCurrentFrameImpl_(pAnimCtrl, index); -} - -u16 NNS_G2dGetAnimCtrlCurrentFrame (const NNSG2dAnimController * pAnimCtrl) { - return GetCurrentFrameIdx_(pAnimCtrl); -} - -void NNS_G2dInitAnimCtrl (NNSG2dAnimController * pAnimCtrl) { - NNS_G2D_NULL_ASSERT(pAnimCtrl); - - NNS_G2dInitAnimCallBackFunctor(&pAnimCtrl->callbackFunctor); - - pAnimCtrl->pCurrent = NULL; - pAnimCtrl->pActiveCurrent = NULL; - - pAnimCtrl->bReverse = FALSE; - pAnimCtrl->bActive = TRUE; - - pAnimCtrl->currentTime = 0; - pAnimCtrl->speed = FX32_ONE; - - pAnimCtrl->overriddenPlayMode = NNS_G2D_ANIMATIONPLAYMODE_INVALID; - pAnimCtrl->pAnimSequence = NULL; -} - -void NNS_G2dInitAnimCtrlCallBackFunctor (NNSG2dAnimController * pAnimCtrl) { - NNS_G2D_NULL_ASSERT(pAnimCtrl); - - NNS_G2dInitAnimCallBackFunctor(&pAnimCtrl->callbackFunctor); -} - -void NNS_G2dInitAnimCallBackFunctor (NNSG2dCallBackFunctor * pCallBack) { - NNS_G2D_NULL_ASSERT(pCallBack); - - pCallBack->type = NNS_G2D_ANMCALLBACKTYPE_NONE; - pCallBack->param = 0x0; - pCallBack->pFunc = NULL; - pCallBack->frameIdx = 0; -} - -void NNS_G2dResetAnimCtrlState (NNSG2dAnimController * pAnimCtrl) { - NNS_G2D_NULL_ASSERT(pAnimCtrl); - - if (IsAnimCtrlMovingForward_(pAnimCtrl)) { - pAnimCtrl->pCurrent = GetFrameLoopBegin_(pAnimCtrl->pAnimSequence); - } else { - pAnimCtrl->pCurrent = GetFrameEnd_(pAnimCtrl->pAnimSequence) - 1; - } - - pAnimCtrl->pActiveCurrent = pAnimCtrl->pCurrent; - - pAnimCtrl->currentTime = 0; - - (void)NNS_G2dTickAnimCtrl(pAnimCtrl, 0); -} - -void NNS_G2dBindAnimCtrl (NNSG2dAnimController * pAnimCtrl, const NNSG2dAnimSequence * pAnimSequence) { - NNS_G2D_NULL_ASSERT(pAnimCtrl); - NNS_G2D_NULL_ASSERT(pAnimSequence); - - pAnimCtrl->pAnimSequence = pAnimSequence; - - NNS_G2dResetAnimCtrlState(pAnimCtrl); -} - -void NNS_G2dSetAnimCtrlCallBackFunctor (NNSG2dAnimController * pAnimCtrl, NNSG2dAnmCallbackType type, u32 param, NNSG2dAnmCallBackPtr pFunc) { - NNS_G2D_NULL_ASSERT(pAnimCtrl); - NNS_G2D_NULL_ASSERT((void *)pFunc); - NNS_G2D_MINMAX_ASSERT(type, NNS_G2D_ANMCALLBACKTYPE_NONE, AnmCallbackType_MAX); - NNS_G2D_ASSERTMSG( - type != NNS_G2D_ANMCALLBACKTYPE_SPEC_FRM, - "Use NNS_G2dSetAnimCtrlCallBackFunctorAtAnimFrame() instead." - ); - - pAnimCtrl->callbackFunctor.pFunc = pFunc; - pAnimCtrl->callbackFunctor.param = param; - pAnimCtrl->callbackFunctor.type = type; - pAnimCtrl->callbackFunctor.frameIdx = 0; -} - -void NNS_G2dSetAnimCtrlCallBackFunctorAtAnimFrame (NNSG2dAnimController * pAnimCtrl, u32 param, NNSG2dAnmCallBackPtr pFunc, u16 frameIdx) { - NNS_G2D_NULL_ASSERT(pAnimCtrl); - NNS_G2D_NULL_ASSERT((void *)pFunc); - - pAnimCtrl->callbackFunctor.type = NNS_G2D_ANMCALLBACKTYPE_SPEC_FRM; - - pAnimCtrl->callbackFunctor.pFunc = pFunc; - pAnimCtrl->callbackFunctor.param = param; - pAnimCtrl->callbackFunctor.frameIdx = frameIdx; -} - -BOOL NNSi_G2dIsAnimCtrlLoopAnim (const NNSG2dAnimController * pAnimCtrl) { - NNS_G2D_NULL_ASSERT(pAnimCtrl); - NNS_G2D_NULL_ASSERT(pAnimCtrl->pAnimSequence); - - return IsLoopAnimSequence_(pAnimCtrl); -} diff --git a/subprojects/NitroSystem/libraries/g2d/src/g2d_CellAnimation.c b/subprojects/NitroSystem/libraries/g2d/src/g2d_CellAnimation.c deleted file mode 100644 index d889c45d59..0000000000 --- a/subprojects/NitroSystem/libraries/g2d/src/g2d_CellAnimation.c +++ /dev/null @@ -1,239 +0,0 @@ - -#include -#include -#include - -#include -#include - -#include "include/g2d_Internal.h" - -static void ApplyCurrentAnimResult_ (NNSG2dCellAnimation * pCellAnim) { - const NNSG2dAnimDataSRT * pAnimResult = NULL; - const NNSG2dCellDataBank * pCellBank = NULL; - - NNS_G2D_NULL_ASSERT(pCellAnim); - NNS_G2D_NULL_ASSERT(pCellAnim->pCellDataBank); - - if (pCellAnim->animCtrl.pActiveCurrent->frames == 0) { - return; - } - pAnimResult = (const NNSG2dAnimDataSRT *)NNS_G2dGetAnimCtrlCurrentElement(&pCellAnim->animCtrl); - NNS_G2D_NULL_ASSERT(pAnimResult); - - pAnimResult = (const NNSG2dAnimDataSRT *)NNS_G2dGetAnimCtrlCurrentElement(&pCellAnim->animCtrl); - pCellBank = pCellAnim->pCellDataBank; - - NNSI_G2D_DEBUGMSG0("pAnimResult->index = %d\n", pAnimResult->index); - - pCellAnim->pCurrentCell - = NNS_G2dGetCellDataByIdx(pCellBank, pAnimResult->index); - NNS_G2D_NULL_ASSERT(pCellAnim->pCurrentCell); - - { - const NNSG2dAnimationElement elemType - = NNSi_G2dGetAnimSequenceElementType(pCellAnim->animCtrl.pAnimSequence->animType); - NNSi_G2dSrtcInitControl(&pCellAnim->srtCtrl, NNS_G2D_SRTCONTROLTYPE_SRT); - - if (elemType != NNS_G2D_ANIMELEMENT_INDEX) { - if (elemType == NNS_G2D_ANIMELEMENT_INDEX_T) { - const NNSG2dAnimDataT * pAnmResT = (const NNSG2dAnimDataT *)pAnimResult; - NNSi_G2dSrtcSetTrans(&pCellAnim->srtCtrl, pAnmResT->px, pAnmResT->py); - } else { - NNSi_G2dSrtcSetSRTScale(&pCellAnim->srtCtrl, pAnimResult->sx, pAnimResult->sy); - NNSi_G2dSrtcSetSRTRotZ(&pCellAnim->srtCtrl, pAnimResult->rotZ); - NNSi_G2dSrtcSetTrans(&pCellAnim->srtCtrl, pAnimResult->px, pAnimResult->py); - } - } - } - - if (NNS_G2dCellDataBankHasVramTransferData(pCellBank) && - NNSi_G2dIsCellAnimVramTransferHandleValid(pCellAnim)) { - const NNSG2dCellVramTransferData * pCellTransferData - = NNSi_G2dGetCellVramTransferData(pCellBank, pAnimResult->index); - - NNS_G2dSetCellTransferStateRequested( - pCellAnim->cellTransferStateHandle, - pCellTransferData->srcDataOffset, - pCellTransferData->szByte - ); - } -} - -static NNS_G2D_INLINE void InitCellAnimationImpl_ (NNSG2dCellAnimation * pCellAnim, const NNSG2dAnimSequence * pAnimSeq, const NNSG2dCellDataBank * pCellDataBank, u32 cellTransferStateHandle) { - NNS_G2D_NULL_ASSERT(pCellAnim); - NNS_G2D_NULL_ASSERT(pAnimSeq); - NNS_G2D_NULL_ASSERT(pCellDataBank); - - pCellAnim->pCellDataBank = pCellDataBank; - pCellAnim->cellTransferStateHandle = cellTransferStateHandle; - - NNSi_G2dSrtcInitControl(&pCellAnim->srtCtrl, NNS_G2D_SRTCONTROLTYPE_SRT); - - NNS_G2dInitAnimCtrl(&pCellAnim->animCtrl); - NNS_G2dSetCellAnimationSequence(pCellAnim, pAnimSeq); -} - -void NNS_G2dInitCellAnimation (NNSG2dCellAnimation * pCellAnim, const NNSG2dAnimSequence * pAnimSeq, const NNSG2dCellDataBank * pCellDataBank) { - NNS_G2D_NULL_ASSERT(pCellAnim); - NNS_G2D_NULL_ASSERT(pAnimSeq); - NNS_G2D_NULL_ASSERT(pCellDataBank); - - InitCellAnimationImpl_( - pCellAnim, - pAnimSeq, - pCellDataBank, - NNS_G2D_INVALID_CELL_TRANSFER_STATE_HANDLE - ); -} - -void NNS_G2dInitCellAnimationVramTransfered (NNSG2dCellAnimation * pCellAnim, const NNSG2dAnimSequence * pAnimSeq, const NNSG2dCellDataBank * pCellBank, u32 vramStateHandle, u32 dstAddr3D, u32 dstAddr2DMain, u32 dstAddr2DSub, const void * pSrcNCGR, const void * pSrcNCBR, u32 szSrcData) { - NNS_G2D_ASSERT(NNS_G2dCellDataBankHasVramTransferData(pCellBank)); - - { - const NNSG2dVramTransferData * pVramData = - (const NNSG2dVramTransferData *)pCellBank->pVramTransferData; - - NNSi_G2dInitCellTransferState( - vramStateHandle, - dstAddr3D, - dstAddr2DMain, - dstAddr2DSub, - pVramData->szByteMax, - pSrcNCGR, - pSrcNCBR, - szSrcData - ); - - NNSi_G2dSetCellAnimVramTransferHandle(pCellAnim, vramStateHandle); - } - - InitCellAnimationImpl_(pCellAnim, pAnimSeq, pCellBank, vramStateHandle); -} - -void NNS_G2dSetCellAnimationSequence (NNSG2dCellAnimation * pCellAnim, const NNSG2dAnimSequence * pAnimSeq) { - NNS_G2D_NULL_ASSERT(pCellAnim); - NNS_G2D_NULL_ASSERT(pAnimSeq); - NNS_G2D_ASSERTMSG( - NNS_G2dGetAnimSequenceAnimType(pAnimSeq) == NNS_G2D_ANIMATIONTYPE_CELL, - "A cell-Animation's Data is expected" - ); - - NNS_G2dBindAnimCtrl(&pCellAnim->animCtrl, pAnimSeq); - ApplyCurrentAnimResult_(pCellAnim); -} - -void NNS_G2dSetCellAnimationSequenceNoReset (NNSG2dCellAnimation * pCellAnim, const NNSG2dAnimSequence * pAnimSeq) { - NNS_G2D_NULL_ASSERT(pCellAnim); - NNS_G2D_NULL_ASSERT(pAnimSeq); - NNS_G2D_ASSERTMSG( - NNS_G2dGetAnimSequenceAnimType(pAnimSeq) == NNS_G2D_ANIMATIONTYPE_CELL, - "A cell-Animation's Data is expected" - ); - - { - const u16 frameIdx = NNS_G2dGetAnimCtrlCurrentFrame(&pCellAnim->animCtrl); - - pCellAnim->animCtrl.pAnimSequence = pAnimSeq; - - if (!NNS_G2dSetAnimCtrlCurrentFrameNoResetCurrentTime(&pCellAnim->animCtrl, frameIdx)) { - NNS_G2dResetAnimationState(&pCellAnim->animCtrl); - } - } - - ApplyCurrentAnimResult_(pCellAnim); -} - -void NNS_G2dTickCellAnimation (NNSG2dCellAnimation * pCellAnim, fx32 frames) { - NNS_G2D_NULL_ASSERT(pCellAnim); - NNS_G2D_NULL_ASSERT(pCellAnim->animCtrl.pAnimSequence); - NNS_G2D_ASSERTMSG( - NNS_G2dGetAnimSequenceAnimType(pCellAnim->animCtrl.pAnimSequence) - == NNS_G2D_ANIMATIONTYPE_CELL, "A cell-Animation's Data is expected" - ); - - if (NNS_G2dTickAnimCtrl(&pCellAnim->animCtrl, frames)) { - ApplyCurrentAnimResult_(pCellAnim); - } -} - -void NNS_G2dSetCellAnimationCurrentFrame (NNSG2dCellAnimation * pCellAnim, u16 frameIndex) { - NNS_G2D_NULL_ASSERT(pCellAnim); - NNS_G2D_NULL_ASSERT(pCellAnim->animCtrl.pAnimSequence); - - if (NNS_G2dSetAnimCtrlCurrentFrame(&pCellAnim->animCtrl, frameIndex)) { - ApplyCurrentAnimResult_(pCellAnim); - } -} - -void NNS_G2dRestartCellAnimation (NNSG2dCellAnimation * pCellAnim) { - NNSG2dAnimController * pAnmCtrl = NULL; - NNS_G2D_NULL_ASSERT(pCellAnim); - - pAnmCtrl = NNS_G2dGetCellAnimationAnimCtrl(pCellAnim); - NNS_G2dResetAnimCtrlState(pAnmCtrl); - - NNS_G2dStartAnimCtrl(pAnmCtrl); - - ApplyCurrentAnimResult_(pCellAnim); -} - -void NNS_G2dSetCellAnimationSpeed (NNSG2dCellAnimation * pCellAnim, fx32 speed) { - NNS_G2D_NULL_ASSERT(pCellAnim); - NNS_G2D_NULL_ASSERT(pCellAnim->animCtrl.pAnimSequence); - - NNS_G2dSetAnimCtrlSpeed(&pCellAnim->animCtrl, speed); -} - -u16 NNS_G2dMakeCellToOams (GXOamAttr * pDstOams, u16 numDstOam, const NNSG2dCellData * pCell, const MtxFx22 * pMtxSR, const NNSG2dFVec2 * pBaseTrans, u16 affineIndex, BOOL bDoubleAffine) { - u16 i = 0; - NNSG2dFVec2 objTrans; - GXOamAttr * pDstOam = NULL; - const u16 numOBJ - = (numDstOam < pCell->numOAMAttrs) ? numDstOam : pCell->numOAMAttrs; - - for ( i = 0; i < numOBJ; i++ ) { - pDstOam = &pDstOams[i]; - - NNS_G2dCopyCellAsOamAttr(pCell, i, pDstOam); - - if (pMtxSR != NULL || pBaseTrans != NULL) { - NNS_G2dGetOamTransFx32(pDstOam, &objTrans); - - if (pMtxSR != NULL) { - NNSi_G2dRemovePositionAdjustmentFromDoubleAffineOBJ( - pDstOam, - &objTrans - ); - { - const GXOamEffect effectTypeAfter = (bDoubleAffine) ? - GX_OAM_EFFECT_AFFINE_DOUBLE : GX_OAM_EFFECT_AFFINE; - const BOOL bShouldAdjust = (effectTypeAfter == GX_OAM_EFFECT_AFFINE_DOUBLE); - - MulMtx22(pMtxSR, &objTrans, &objTrans); - - G2_SetOBJEffect(pDstOam, effectTypeAfter, affineIndex); - - NNSi_G2dAdjustDifferenceOfRotateOrientation( - pDstOam, - pMtxSR, - &objTrans, - bShouldAdjust - ); - } - } - - if (pBaseTrans != NULL) { - objTrans.x += pBaseTrans->x; - objTrans.y += pBaseTrans->y; - } - - G2_SetOBJPosition( - pDstOam, - (objTrans.x + 0x800) >> FX32_SHIFT, - (objTrans.y + 0x800) >> FX32_SHIFT - ); - } - } - return numOBJ; -} diff --git a/subprojects/NitroSystem/libraries/g2d/src/g2d_CellTransferManager.c b/subprojects/NitroSystem/libraries/g2d/src/g2d_CellTransferManager.c deleted file mode 100644 index 4f1c67a547..0000000000 --- a/subprojects/NitroSystem/libraries/g2d/src/g2d_CellTransferManager.c +++ /dev/null @@ -1,232 +0,0 @@ - -#include -#include - -static NNSG2dCellTransferState * s_pCellStateArray = NULL; -static u32 s_numCellState = 0; - -VramTransferTaskRegisterFuncPtr s_pTaskRegisterFunc = NULL; - -static NNS_G2D_INLINE BOOL IsCellTransferStateManagerValid_ () { - return (BOOL)((s_pCellStateArray != NULL) && - (s_numCellState != 0) && - (s_pTaskRegisterFunc != NULL)); -} - -static NNS_G2D_INLINE BOOL IsValidHandle_ (u32 handle) { - NNS_G2D_ASSERT(IsCellTransferStateManagerValid_()); - - if (handle != NNS_G2D_INVALID_CELL_TRANSFER_STATE_HANDLE) { - if (handle < s_numCellState) { - if (s_pCellStateArray[handle].bActive) { - return TRUE; - } - } - } - return FALSE; -} - -static NNS_G2D_INLINE NNSG2dCellTransferState * GetValidCellTransferState_ (u32 validHandle) { - NNS_G2D_ASSERT(IsValidHandle_(validHandle)); - return &s_pCellStateArray[validHandle]; -} - -static NNS_G2D_INLINE BOOL ShouldRegisterAsVramTransferTask_ (const NNSG2dCellTransferState * pState, NNS_G2D_VRAM_TYPE type) { - NNS_G2D_NULL_ASSERT(pState); - - return (BOOL)(NNSi_G2dGetCellTransferStateRequestFlag(pState, type) && - NNSi_G2dGetCellTransferStateCellDrawnFlag(pState, type)); -} - -static NNS_G2D_INLINE void ResetCellTransferStateDrawnFlag_ (NNSG2dCellTransferState * pState) { - pState->bDrawn = 0x0; -} - -static NNS_G2D_INLINE const void * GetVramTransferSrc_ (const NNSG2dCellTransferState * pState, NNS_G2D_VRAM_TYPE type) { - NNS_G2D_NULL_ASSERT(pState); - - if (type == NNS_G2D_VRAM_TYPE_3DMAIN) { - return pState->pSrcNCBR; - } else { - return pState->pSrcNCGR; - } -} - -static NNS_G2D_INLINE BOOL IsVramTransferSrcDataValid_ (const NNSG2dCellTransferState * pState, NNS_G2D_VRAM_TYPE type) { - return (BOOL)(GetVramTransferSrc_(pState, type) != NULL); -} - -static NNS_G2D_INLINE BOOL IsCellTransferStateValid_ (const NNSG2dCellTransferState * pState, NNS_G2D_VRAM_TYPE type) { - return (BOOL)(NNSi_G2dIsVramLocationReadyToUse(&pState->dstVramLocation, type) && - IsVramTransferSrcDataValid_(pState, type)); -} - -static NNS_G2D_INLINE NNS_GFD_DST_TYPE ConvertVramType_ (NNS_G2D_VRAM_TYPE type) { - NNS_G2D_MINMAX_ASSERT(type, NNS_G2D_VRAM_TYPE_3DMAIN, NNS_G2D_VRAM_TYPE_2DSUB); - { - const static NNS_GFD_DST_TYPE cvtTbl [] = - { - NNS_GFD_DST_3D_TEX_VRAM, - NNS_GFD_DST_2D_OBJ_CHAR_MAIN, - NNS_GFD_DST_2D_OBJ_CHAR_SUB - }; - return cvtTbl[type]; - } -} - -static NNS_G2D_INLINE BOOL MakeVramTransferTask_ (const NNSG2dCellTransferState * pState, NNS_G2D_VRAM_TYPE type) { - NNS_G2D_NULL_ASSERT(pState); - - NNS_G2D_ASSERT(IsCellTransferStateValid_(pState, type)); - - return (*s_pTaskRegisterFunc)( - ConvertVramType_(type), - NNSi_G2dGetVramLocation(&pState->dstVramLocation, type), - (u8 *)GetVramTransferSrc_(pState, type) + pState->srcOffset, - pState->szByte - ); -} - -static NNS_G2D_INLINE void ResetCellTransferState_ (NNSG2dCellTransferState * pState) { - NNS_G2D_NULL_ASSERT(pState); - { - NNSi_G2dInitializeVRamLocation(&pState->dstVramLocation); - pState->szDst = 0; - pState->pSrcNCGR = NULL; - pState->pSrcNCBR = NULL; - pState->szSrcData = 0; - pState->bActive = FALSE; - - pState->bDrawn = 0x0; - pState->bTransferRequested = 0x0; - pState->srcOffset = 0x0; - pState->szByte = 0x0; - } -} - -NNSG2dCellTransferState * NNSi_G2dGetCellTransferState (u32 handle) { - return GetValidCellTransferState_(handle); -} - -void NNSi_G2dInitCellTransferState (u32 handle, u32 dstAddr3D, u32 dstAddr2DMain, u32 dstAddr2DSub, u32 szDst, const void * pSrcNCGR, const void * pSrcNCBR, u32 szSrcData) { - NNS_G2D_ASSERT(IsValidHandle_(handle)); - NNS_G2D_NON_ZERO_ASSERT(szDst); - NNS_G2D_NON_ZERO_ASSERT(szSrcData); - NNS_G2D_NULL_ASSERT(szDst); - - { - NNSG2dCellTransferState * pState - = GetValidCellTransferState_(handle); - - NNS_G2D_NULL_ASSERT(pState); - - NNS_G2D_ASSERT( - dstAddr3D != NNS_G2D_VRAM_ADDR_NONE || - dstAddr2DMain != NNS_G2D_VRAM_ADDR_NONE || - dstAddr2DSub != NNS_G2D_VRAM_ADDR_NONE - ); - { - NNSG2dVRamLocation * pImg = &pState->dstVramLocation; - - NNSi_G2dInitializeVRamLocation(pImg); - - if (dstAddr3D != NNS_G2D_VRAM_ADDR_NONE) { - NNSi_G2dSetVramLocation(pImg, NNS_G2D_VRAM_TYPE_3DMAIN, dstAddr3D); - } - - if (dstAddr2DMain != NNS_G2D_VRAM_ADDR_NONE) { - NNSi_G2dSetVramLocation(pImg, NNS_G2D_VRAM_TYPE_2DMAIN, dstAddr2DMain); - } - - if (dstAddr2DSub != NNS_G2D_VRAM_ADDR_NONE) { - NNSi_G2dSetVramLocation(pImg, NNS_G2D_VRAM_TYPE_2DSUB, dstAddr2DSub); - } - } - - NNS_G2D_ASSERT(pSrcNCGR != NULL || pSrcNCBR != NULL); - - pState->szDst = szDst; - pState->pSrcNCGR = pSrcNCGR; - pState->pSrcNCBR = pSrcNCBR; - pState->szSrcData = szSrcData; - } -} - -void NNS_G2dInitCellTransferStateManager (NNSG2dCellTransferState * pCellStateArray, u32 numCellState, VramTransferTaskRegisterFuncPtr pTaskRegisterFunc) { - NNS_G2D_NULL_ASSERT(pCellStateArray); - NNS_G2D_NON_ZERO_ASSERT(numCellState); - NNS_G2D_NULL_ASSERT(pTaskRegisterFunc); - - s_pTaskRegisterFunc = pTaskRegisterFunc; - - s_pCellStateArray = pCellStateArray; - s_numCellState = numCellState; - - { - u32 i; - for ( i = 0; i < numCellState; i++ ) { - ResetCellTransferState_(&pCellStateArray[i]); - } - } -} - -void NNS_G2dUpdateCellTransferStateManager () { - u32 i; - - for ( i = 0; i < s_numCellState; i++ ) { - NNS_G2D_VRAM_TYPE type; - NNSG2dCellTransferState * pState = &s_pCellStateArray[i]; - - if (pState->bActive) { - for ( type = NNS_G2D_VRAM_TYPE_3DMAIN; type < NNS_G2D_VRAM_TYPE_MAX; type++ ) { - if (ShouldRegisterAsVramTransferTask_(pState, type)) { - if (MakeVramTransferTask_(pState, type)) { - NNSi_G2dSetCellTransferStateRequestFlag(pState, type, FALSE); - } else { - } - } - } - - ResetCellTransferStateDrawnFlag_(pState); - } - } -} - -void NNS_G2dSetCellTransferStateRequested (u32 handle, u32 srcOffset, u32 szByte) { - NNS_G2D_ASSERT(IsValidHandle_(handle)); - - { - NNSG2dCellTransferState * pState - = NNSi_G2dGetCellTransferState(handle); - - NNS_G2D_NULL_ASSERT(pState); - NNS_G2D_ASSERT(szByte <= pState->szDst); - - pState->bTransferRequested = 0xFFFFFFFF; - pState->srcOffset = srcOffset; - pState->szByte = szByte; - } -} - -u32 NNS_G2dGetNewCellTransferStateHandle () { - NNS_G2D_ASSERT(IsCellTransferStateManagerValid_()); - - { - u32 i = 0; - for ( i = 0; i < s_numCellState; i++ ) { - if (s_pCellStateArray[i].bActive != TRUE) { - s_pCellStateArray[i].bActive = TRUE; - return i; - } - } - } - - return NNS_G2D_INVALID_CELL_TRANSFER_STATE_HANDLE; -} - -void NNS_G2dFreeCellTransferStateHandle (u32 handle) { - NNS_G2D_ASSERT(IsValidHandle_(handle)); - NNS_G2D_ASSERT(IsCellTransferStateManagerValid_()); - - ResetCellTransferState_(GetValidCellTransferState_(handle)); -} diff --git a/subprojects/NitroSystem/libraries/g2d/src/g2d_CharCanvas.c b/subprojects/NitroSystem/libraries/g2d/src/g2d_CharCanvas.c deleted file mode 100644 index 3be2efc120..0000000000 --- a/subprojects/NitroSystem/libraries/g2d/src/g2d_CharCanvas.c +++ /dev/null @@ -1,1333 +0,0 @@ - -#include -#include -#include -#include - -#include "include/g2di_BitReader.h" - -#define CHARACTER_WIDTH 8 -#define CHARACTER_HEIGHT 8 - -#define MAX_TEXT_BG_CHEIGHT 64 -#define MAX_AFFINE_BG_CHEIGHT 128 -#define MAX_256x16PLTT_BG_CHEIGHT 128 - -#define MAX_TEXT_BG_CHARACTER 1024 -#define MAX_AFFINE_BG_CHARACTER 256 -#define MAX_256x16PLTT_BG_CHARACTER 1024 - -#define MAX_OBJ_CHARA_WIDTH 8 -#define MAX_OBJ_CHARA_HEIGHT 8 - -#define MAX_OBJ1D_CHARACTER 8192 -#define MAX_OBJ2DRECT_HEIGHT 32 - -typedef struct LC_INFO { - const u8 * dst; - const u8 * src; - int ofs_x; - int ofs_y; - int width; - int height; - int dsrc; - int srcBpp; - int dstBpp; - u32 cl; -} LC_INFO; - -typedef union OBJ1DParam { - u32 packed; - struct { - unsigned baseWidthShift : 8; - unsigned baseHeightShift : 8; - }; -} OBJ1DParam; - -typedef struct ObjectSize { - u8 widthShift; - u8 heightShift; -} ObjectSize; - -static void DrawGlyphLine(const NNSG2dCharCanvas * pCC, const NNSG2dFont * pFont, int x, int y, int cl, const NNSG2dGlyph * pGlyph); -static void DrawGlyph1D(const NNSG2dCharCanvas * pCC, const NNSG2dFont * pFont, int x, int y, int cl, const NNSG2dGlyph * pGlyph); -static void ClearContinuous(const NNSG2dCharCanvas * pCC, int cl); -static void ClearLine(const NNSG2dCharCanvas * pCC, int cl); -static void ClearAreaLine(const NNSG2dCharCanvas * pCC, int cl, int x, int y, int w, int h); -static void ClearArea1D(const NNSG2dCharCanvas * pCC, int cl, int x, int y, int w, int h); - -static const NNSiG2dCharCanvasVTable VTABLE_BG = { - DrawGlyphLine, - ClearContinuous, - ClearAreaLine -}; - -static const NNSiG2dCharCanvasVTable VTABLE_OBJ1D = { - DrawGlyph1D, - ClearContinuous, - ClearArea1D -}; - -static const NNSiG2dCharCanvasVTable VTABLE_OBJ2DRECT = { - DrawGlyphLine, - ClearLine, - ClearAreaLine -}; - -static NNS_G2D_INLINE int GetCharacterSize (const NNSG2dCharCanvas * pCC) { - NNS_G2D_CHARCANVAS_ASSERT(pCC); - return CHARACTER_HEIGHT * CHARACTER_WIDTH * pCC->dstBpp / 8; -} - -static NNS_G2D_INLINE u32 SpreadColor32 (const NNSG2dCharCanvas * pCC, int cl) { - u32 val = (u32)cl; - - NNS_G2D_CHARCANVAS_ASSERT(pCC); - - if (pCC->dstBpp == 4) { - NNS_G2D_ASSERT((cl & ~0xF) == 0); - - val = (val << 4) | val; - val |= val << 8; - val |= val << 16; - } else { - NNS_G2D_ASSERT((cl & ~0xFF) == 0); - - val = (val << 8) | val; - val |= val << 16; - } - - return val; -} - -static NNS_G2D_INLINE const ObjectSize * GetMaxObjectSize (int w, int h) { - const static ObjectSize objs[4][4] = { - {{0, 0}, {1, 0}, {2, 0}, {2, 0}}, - {{0, 1}, {1, 1}, {2, 1}, {2, 1}}, - {{0, 2}, {1, 2}, {2, 2}, {3, 2}}, - {{0, 2}, {1, 2}, {2, 3}, {3, 3}}, - }; - - int log_w = (w >= 8) ? 3: MATH_ILog2((unsigned long)w); - int log_h = (h >= 8) ? 3: MATH_ILog2((unsigned long)h); - - NNS_G2D_MINMAX_ASSERT(log_w, 0, 3); - NNS_G2D_MINMAX_ASSERT(log_h, 0, 3); - - return &objs[log_h][log_w]; -} - -static int ISqrt (int x) { - u32 min = 1; - u32 max = (u32)x; - - if (x <= 0) { - return 0; - } - - for (;;) { - const u32 mid = (min + max) / 2; - const u32 mid2 = mid * mid; - - if (mid2 < x) { - if (mid == min) { - break; - } - min = mid; - } else { - max = mid; - } - } - - return (int)min; -} - -static u32 GetCharIndex1D (u32 cx, u32 cy, u32 areaWidth, u32 areaHeight, u32 objWidth, u32 objHeight) { - const u32 fullbits = (u32)(~0); - u32 idx = 0; - - NNS_G2D_ASSERT(cx < areaWidth); - NNS_G2D_ASSERT(cy < areaHeight); - NNS_G2D_MINMAX_ASSERT(objWidth, 0, 3); - NNS_G2D_MINMAX_ASSERT(objHeight, 0, 3); - - for (;;) { - const u32 objWidthMaskInv = fullbits << objWidth; - const u32 objHeightMaskInv = fullbits << objHeight; - const u32 areaAWidth = areaWidth & objWidthMaskInv; - const u32 areaAHeight = areaHeight & objHeightMaskInv; - - if (areaAHeight <= cy) { - idx += areaWidth * areaAHeight; - - if (areaAWidth <= cx) { - idx += (areaHeight - areaAHeight) * areaAWidth; - - cx -= areaAWidth; - cy -= areaAHeight; - areaWidth -= areaAWidth; - areaHeight -= areaAHeight; - } else { - cy -= areaAHeight; - areaWidth = areaAWidth; - areaHeight -= areaAHeight; - } - } else { - const u32 objHeightMask = ~objHeightMaskInv; - - if (areaAWidth <= cx) { - idx += (u32)(areaAWidth * areaAHeight); - - cx -= areaAWidth; - areaWidth -= areaAWidth; - areaHeight = areaAHeight; - } else { - const u32 objWidthMask = ~objWidthMaskInv; - idx += (u32)(cy & objHeightMaskInv) * areaAWidth; - idx += (u32)(cx & objWidthMaskInv) << objHeight; - idx += (u32)(cy & objHeightMask) << objWidth; - idx += (u32)(cx & objWidthMask); - return idx; - } - } - - { - const ObjectSize * pobj = GetMaxObjectSize((int)areaWidth, (int)areaHeight); - - objWidth = pobj->widthShift; - objHeight = pobj->heightShift; - } - } -} - -static GXOamShape OBJSizeToShape (const ObjectSize * pSize) { - const static GXOamShape shape[4][4] = { - {GX_OAM_SHAPE_8x8, GX_OAM_SHAPE_16x8, GX_OAM_SHAPE_32x8, (GXOamShape)NULL}, - {GX_OAM_SHAPE_8x16, GX_OAM_SHAPE_16x16, GX_OAM_SHAPE_32x16, (GXOamShape)NULL}, - {GX_OAM_SHAPE_8x32, GX_OAM_SHAPE_16x32, GX_OAM_SHAPE_32x32, GX_OAM_SHAPE_64x32}, - {(GXOamShape)NULL, (GXOamShape)NULL, GX_OAM_SHAPE_32x64, GX_OAM_SHAPE_64x64}, - }; - - NNS_G2D_POINTER_ASSERT(pSize); - NNS_G2D_MINMAX_ASSERT(pSize->heightShift, 0, 3); - NNS_G2D_MINMAX_ASSERT(pSize->widthShift, 0, 3); - - return shape[pSize->heightShift][pSize->widthShift]; -} - -static void ClearChar (void * pChar, int x, int y, int w, int h, u32 cl8, int bpp) { - NNS_G2D_POINTER_ASSERT(pChar); - NNS_G2D_MINMAX_ASSERT(x, 0, CHARACTER_WIDTH - 1); - NNS_G2D_MINMAX_ASSERT(y, 0, CHARACTER_HEIGHT - 1); - NNS_G2D_MINMAX_ASSERT(w, 1, CHARACTER_WIDTH); - NNS_G2D_MINMAX_ASSERT(h, 1, CHARACTER_HEIGHT); - NNS_G2D_ASSERT(x + w <= CHARACTER_WIDTH); - NNS_G2D_ASSERT(y + h <= CHARACTER_HEIGHT); - - if ((w == CHARACTER_WIDTH) && (h == CHARACTER_HEIGHT)) { - MI_CpuFillFast(pChar, cl8, (u32)(8 * bpp)); - } else { - if (bpp == 4) { - u32 mask; - u32 data; - u32 * pLine; - u32 * pLineEnd; - - { - u32 x4 = (unsigned int)x * 4; - u32 rw4 = 32 - (w * 4 + x4); - - mask = (u32)(~0) >> x4; - mask <<= x4 + rw4; - mask >>= rw4; - - data = cl8 & mask; - mask = ~mask; - } - - pLine = (u32 *)pChar + y; - pLineEnd = pLine + h; - for ( ; pLine < pLineEnd; pLine++ ) { - *pLine = (*pLine & mask) | data; - } - } else { - u32 mask_0, mask_1; - u32 data_0, data_1; - - { - u32 x8 = (unsigned int)x * 8; - u32 rw8 = 64 - (w * 8 + x8); - - mask_0 = (u32)(~0) >> x8; - if (rw8 >= 32) { - const u32 rw32 = rw8 - 32; - mask_0 <<= (x8 + rw32); - mask_0 >>= rw32; - } else { - mask_0 <<= x8; - } - - mask_1 = (u32)(~0) << rw8; - if (x8 >= 32) { - const u32 x32 = x8 - 32; - mask_1 >>= (x32 + rw8); - mask_1 <<= x32; - } else { - mask_1 >>= rw8; - } - - data_0 = cl8 & mask_0; - data_1 = cl8 & mask_1; - - mask_0 = ~mask_0; - mask_1 = ~mask_1; - } - - { - u32 * pLine = (u32 *)((u64 *)pChar + y); - u32 * const pLineEnd = (u32 *)((u64 *)pLine + h); - - while (pLine < pLineEnd) { - *pLine = (*pLine & mask_0) | data_0; - pLine++; - *pLine = (*pLine & mask_1) | data_1; - pLine++; - } - } - } - } -} - -static void LetterChar (LC_INFO * i) { - const u8 * pSrc; - u32 x_st; - u32 x_ed; - u32 y_st; - u32 y_ed; - u32 offset; - - NNS_G2D_POINTER_ASSERT(i); - NNS_G2D_POINTER_ASSERT(i->dst); - NNS_G2D_POINTER_ASSERT(i->src); - NNS_G2D_ASSERT(i->ofs_x < CHARACTER_WIDTH); - NNS_G2D_ASSERT(i->ofs_y < CHARACTER_HEIGHT); - NNS_G2D_ASSERT(i->srcBpp * i->width <= i->dsrc); - NNS_G2D_ASSERT(0 < i->srcBpp <= 8); - NNS_G2D_ASSERT(i->dstBpp == 4 || i->dstBpp == 8); - NNS_G2D_ASSERT(i->cl + (1 << i->srcBpp) <= (1 << i->dstBpp)); - - NNS_G2D_ASSERT(-i->width < i->ofs_x); - NNS_G2D_ASSERT(-i->height < i->ofs_y); - NNS_G2D_ASSERT(0 < i->width); - NNS_G2D_ASSERT(0 < i->height); - - { - u32 bit_y_begin; - - x_st = (unsigned int)MATH_IMax(i->ofs_x, 0); - y_st = (unsigned int)MATH_IMax(i->ofs_y, 0); - x_ed = (unsigned int)MATH_IMin(CHARACTER_WIDTH, i->ofs_x + i->width); - y_ed = (unsigned int)MATH_IMin(CHARACTER_HEIGHT, i->ofs_y + i->height); - - bit_y_begin = (unsigned int)-MATH_IMin(i->ofs_y, 0); - offset = -MATH_IMin(i->ofs_x, 0) * i->srcBpp + bit_y_begin * i->dsrc; - - pSrc = i->src; - } - - NNS_G2D_ASSERT(x_st < x_ed); - NNS_G2D_ASSERT(y_st < y_ed); - NNS_G2D_ASSERT(x_ed <= CHARACTER_WIDTH); - NNS_G2D_ASSERT(y_ed <= CHARACTER_HEIGHT); - - { - u32 x; - const int dsrc = i->dsrc; - const int srcBpp = i->srcBpp; - const int dstBpp = i->dstBpp; - - x_st *= dstBpp; - x_ed *= dstBpp; - - if (dstBpp == 4) { - u32 * pDst = (u32 *)i->dst + y_st; - u32 * pDstEnd = (u32 *)i->dst + y_ed; - u32 cl = i->cl; - - for ( ; pDst < pDstEnd; pDst++ ) { - NNSiG2dBitReader reader; - u32 out_line = *pDst; - - NNSi_G2dBitReaderInit(&reader, pSrc + offset / 8); - (void)NNSi_G2dBitReaderRead(&reader, (int)offset % 8); - - for ( x = x_st; x < x_ed; x += 4 ) { - u32 bits = NNSi_G2dBitReaderRead(&reader, srcBpp); - - if (bits != 0) { - out_line = (out_line & ~(0xF << x)) | ((cl + bits) << x); - } - } - - *pDst = out_line; - - offset += dsrc; - } - } else { - u32 * pDst = (u32 *)((u64 *)i->dst + y_st); - u32 * const pDstEnd = (u32 *)((u64 *)i->dst + y_ed); - u32 cl = i->cl; - - NNS_G2D_ASSERT(dstBpp == 8); - - for ( ; pDst < pDstEnd; pDst += 2 ) { - NNSiG2dBitReader reader; - u32 out_line_0 = *pDst; - u32 out_line_1 = *(pDst + 1); - - NNSi_G2dBitReaderInit(&reader, pSrc + offset / 8); - (void)NNSi_G2dBitReaderRead(&reader, (int)offset % 8); - - for ( x = x_st; x < x_ed; x += 8 ) { - u32 bits = NNSi_G2dBitReaderRead(&reader, srcBpp); - - if (bits != 0) { - if (x < 32) { - out_line_0 = (out_line_0 & ~((u32)0xFF << x)) | ((u32)(cl + bits) << x); - } else { - const u32 x_32 = x - 32; - out_line_1 = (out_line_1 & ~((u32)0xFF << x_32)) | ((u32)(cl + bits) << x_32); - } - } - } - - *pDst = out_line_0; - *(pDst + 1) = out_line_1; - - offset += dsrc; - } - } - } -} - -static void DrawGlyphLine (const NNSG2dCharCanvas * pCC, const NNSG2dFont * pFont, int x, int y, int cl, const NNSG2dGlyph * pGlyph) { - int ofs_x_base; - int ofs_x; - int ofs_y; - int ofs_x_end; - int ofs_y_end; - unsigned int nextLineOffset; - u8 * pChar; - u8 glyphWidth; - u8 charHeight; - int charSize; - - NNS_G2D_CHARCANVAS_ASSERT(pCC); - NNS_G2D_FONT_ASSERT(pFont); - NNS_G2D_GLYPH_ASSERT(pGlyph); - NNS_G2D_ASSERT(NNS_G2dFontGetBpp(pFont) <= pCC->dstBpp); - NNS_G2D_MINMAX_ASSERT( - cl, 0, - (1 << pCC->dstBpp) - - (1 << NNS_G2dFontGetBpp(pFont)) + 1 - ); - - charSize = GetCharacterSize(pCC); - - { - int chara_x_num; - int chara_y_num; - const unsigned int areaWidth = (unsigned int)pCC->areaWidth; - const unsigned int areaHeight = (unsigned int)pCC->areaHeight; - u8 * const charBase = pCC->charBase; - const NNSG2dCharWidths * const pWidth = pGlyph->pWidths; - - unsigned int chara_x_begin; - unsigned int chara_x_last; - unsigned int chara_y_begin; - unsigned int chara_y_last; - - glyphWidth = pWidth->glyphWidth; - charHeight = NNS_G2dFontGetCellHeight(pFont); - - if (glyphWidth <= 0) { - return; - } - - if ((x + glyphWidth < 0) || (y + charHeight) < 0) { - return; - } - - chara_x_begin = (x <= 0) ? 0: ((u32)x / CHARACTER_WIDTH); - chara_y_begin = (y <= 0) ? 0: ((u32)y / CHARACTER_HEIGHT); - - chara_x_last = (u32)(x + glyphWidth + (CHARACTER_WIDTH - 1)) / CHARACTER_WIDTH; - if (chara_x_last >= areaWidth) { - chara_x_last = areaWidth; - } - chara_y_last = (u32)(y + charHeight + (CHARACTER_HEIGHT - 1)) / CHARACTER_HEIGHT; - if (chara_y_last >= areaHeight) { - chara_y_last = areaHeight; - } - - chara_x_num = (int)(chara_x_last - chara_x_begin); - chara_y_num = (int)(chara_y_last - chara_y_begin); - - if ((chara_x_num < 0) || (chara_y_num < 0)) { - return; - } - - pChar = charBase + (pCC->param * chara_y_begin + chara_x_begin) * charSize; - - nextLineOffset = (pCC->param - chara_x_num) * charSize; - - ofs_x_base = (x < 0) ? x: x & 0x7; - ofs_y = (y < 0) ? y: y & 0x7; - ofs_x_end = ofs_x_base - CHARACTER_WIDTH * chara_x_num; - ofs_y_end = ofs_y - CHARACTER_HEIGHT * chara_y_num; - } - - { - LC_INFO i; - - i.src = pGlyph->image; - i.width = glyphWidth; - i.height = charHeight; - i.cl = (u32)(cl - 1); - i.srcBpp = NNS_G2dFontGetBpp(pFont); - i.dstBpp = pCC->dstBpp; - i.dsrc = NNS_G2dFontGetCellWidth(pFont) * i.srcBpp; - - for ( ; ofs_y > ofs_y_end; ofs_y -= CHARACTER_HEIGHT ) { - i.ofs_y = ofs_y; - for ( ofs_x = ofs_x_base; ofs_x > ofs_x_end; ofs_x -= CHARACTER_WIDTH ) { - i.dst = pChar; - i.ofs_x = ofs_x; - LetterChar(&i); - pChar += charSize; - } - pChar += nextLineOffset; - } - } -} - -static void DrawGlyph1D (const NNSG2dCharCanvas * pCC, const NNSG2dFont * pFont, int x, int y, int cl, const NNSG2dGlyph * pGlyph) { - int ofs_x_base; - int ofs_x; - int ofs_y; - int ofs_x_end; - int ofs_y_end; - int cx, cx_base; - int cy; - u8 glyphWidth; - u8 charHeight; - int charSize; - u16 * mapTable; - - NNS_G2D_CHARCANVAS_ASSERT(pCC); - NNS_G2D_FONT_ASSERT(pFont); - NNS_G2D_GLYPH_ASSERT(pGlyph); - NNS_G2D_ASSERT(NNS_G2dFontGetBpp(pFont) <= pCC->dstBpp); - NNS_G2D_MINMAX_ASSERT( - cl, 0, - (1 << pCC->dstBpp) - - (1 << NNS_G2dFontGetBpp(pFont)) + 1 - ); - - charSize = GetCharacterSize(pCC); - mapTable = (u16 *)(pCC->param); - - { - int chara_x_num; - int chara_y_num; - const unsigned int areaWidth = (unsigned int)pCC->areaWidth; - const unsigned int areaHeight = (unsigned int)pCC->areaHeight; - const NNSG2dCharWidths * const pWidth = pGlyph->pWidths; - - u32 chara_x_begin; - u32 chara_x_last; - u32 chara_y_begin; - u32 chara_y_last; - - glyphWidth = pWidth->glyphWidth; - charHeight = NNS_G2dFontGetCellHeight(pFont); - - if (glyphWidth <= 0) { - return; - } - - if ((x + glyphWidth < 0) || (y + charHeight) < 0) { - return; - } - - chara_x_begin = (x <= 0) ? 0: ((u32)x / CHARACTER_WIDTH); - chara_y_begin = (y <= 0) ? 0: ((u32)y / CHARACTER_HEIGHT); - - chara_x_last = (u32)(x + glyphWidth + (CHARACTER_WIDTH - 1)) / CHARACTER_WIDTH; - if (chara_x_last >= areaWidth) { - chara_x_last = areaWidth; - } - chara_y_last = (u32)(y + charHeight + (CHARACTER_HEIGHT - 1)) / CHARACTER_HEIGHT; - if (chara_y_last >= areaHeight) { - chara_y_last = areaHeight; - } - - chara_x_num = (int)(chara_x_last - chara_x_begin); - chara_y_num = (int)(chara_y_last - chara_y_begin); - - if ((chara_x_num < 0) || (chara_y_num < 0)) { - return; - } - - cx_base = (int)chara_x_begin; - cy = (int)chara_y_begin; - - ofs_x_base = (x < 0) ? x: x & 0x7; - ofs_y = (y < 0) ? y: y & 0x7; - ofs_x_end = ofs_x_base - CHARACTER_WIDTH * chara_x_num; - ofs_y_end = ofs_y - CHARACTER_HEIGHT * chara_y_num; - } - - { - LC_INFO i; - u8 * const pCharBase = pCC->charBase; - OBJ1DParam p; - - i.src = pGlyph->image; - i.width = glyphWidth; - i.height = charHeight; - i.cl = (u32)(cl - 1); - i.srcBpp = NNS_G2dFontGetBpp(pFont); - i.dstBpp = pCC->dstBpp; - i.dsrc = NNS_G2dFontGetCellWidth(pFont) * i.srcBpp; - - p.packed = pCC->param; - - { - const u32 areaWidth = (u32)pCC->areaWidth; - const u32 areaHeight = (u32)pCC->areaHeight; - const u32 baseWidthShift = p.baseWidthShift; - const u32 baseHeightShift = p.baseHeightShift; - - for ( ; ofs_y > ofs_y_end; ofs_y -= CHARACTER_HEIGHT ) { - i.ofs_y = ofs_y; - cx = cx_base; - for ( ofs_x = ofs_x_base; ofs_x > ofs_x_end; ofs_x -= CHARACTER_WIDTH ) { - const unsigned int iChar = GetCharIndex1D((u32)cx, (u32)cy, areaWidth, areaHeight, baseWidthShift, baseHeightShift); - - i.ofs_x = ofs_x; - i.dst = pCharBase + iChar * charSize; - - LetterChar(&i); - cx++; - } - cy++; - } - } - } -} - -static void ClearContinuous (const NNSG2dCharCanvas * pCC, int cl) { - u32 data; - - NNS_G2D_CHARCANVAS_ASSERT(pCC); - - data = SpreadColor32(pCC, cl); - - MI_CpuFillFast( - pCC->charBase, - data, - (u32)pCC->areaWidth * pCC->areaHeight * GetCharacterSize(pCC) - ); -} - -static void ClearLine (const NNSG2dCharCanvas * pCC, int cl) { - u32 data; - - NNS_G2D_CHARCANVAS_ASSERT(pCC); - - data = SpreadColor32(pCC, cl); - - { - const int charSize = GetCharacterSize(pCC); - const int lineSize = (int)(charSize * pCC->param); - const u32 blockSize = (u32)(charSize * pCC->areaWidth); - int y; - u8 * pChar = pCC->charBase; - - for ( y = 0; y < pCC->areaHeight; y++ ) { - MI_CpuFillFast(pChar, data, blockSize); - pChar += lineSize; - } - } -} - -static void ClearAreaLine (const NNSG2dCharCanvas * pCC, int cl, int x, int y, int w, int h) { - int ix, iy; - int cx, cy, cw, ch; - const int xw = x + w; - const int yh = y + h; - u32 cl8; - - NNS_G2D_CHARCANVAS_ASSERT(pCC); - NNS_G2D_ASSERT(xw <= pCC->areaWidth * 8); - NNS_G2D_ASSERT(yh <= pCC->areaHeight * 8); - - cl8 = SpreadColor32(pCC, cl); - - { - const int left = MATH_ROUNDDOWN(x, CHARACTER_WIDTH); - const int top = MATH_ROUNDDOWN(y, CHARACTER_HEIGHT); - const int right = MATH_ROUNDUP(xw, CHARACTER_WIDTH); - const int bottom = MATH_ROUNDUP(yh, CHARACTER_HEIGHT); - - const int charSize = GetCharacterSize(pCC); - const int charBaseLineOffset = (int)(pCC->param * charSize); - const int bpp = pCC->dstBpp; - u8 * pCharBase; - u8 * pChar; - - pCharBase = pCC->charBase + ((top / CHARACTER_HEIGHT) * pCC->param + (left / CHARACTER_WIDTH)) * charSize; - - for ( iy = top; iy < bottom; iy += CHARACTER_HEIGHT ) { - cy = (iy < y) ? y - iy: 0; - ch = ((yh - iy > CHARACTER_HEIGHT) ? CHARACTER_HEIGHT: yh - iy) - cy; - pChar = pCharBase; - - for ( ix = left; ix < right; ix += CHARACTER_WIDTH ) { - cx = (ix < x) ? x - ix: 0; - cw = ((xw - ix > CHARACTER_WIDTH) ? CHARACTER_WIDTH: xw - ix) - cx; - - ClearChar(pChar, cx, cy, cw, ch, cl8, bpp); - pChar += charSize; - } - - pCharBase += charBaseLineOffset; - } - } -} - -static void ClearArea1D (const NNSG2dCharCanvas * pCC, int cl, int x, int y, int w, int h) { - int ix, iy; - int pcx, pcy, pcw, pch; - int cx, cy; - const int xw = x + w; - const int yh = y + h; - u32 cl8; - OBJ1DParam p; - - NNS_G2D_CHARCANVAS_ASSERT(pCC); - NNS_G2D_ASSERT(xw <= pCC->areaWidth * 8); - NNS_G2D_ASSERT(yh <= pCC->areaHeight * 8); - - cl8 = SpreadColor32(pCC, cl); - - p.packed = pCC->param; - - { - const int left = MATH_ROUNDDOWN(x, CHARACTER_WIDTH); - const int top = MATH_ROUNDDOWN(y, CHARACTER_HEIGHT); - const int right = MATH_ROUNDUP(xw, CHARACTER_WIDTH); - const int bottom = MATH_ROUNDUP(yh, CHARACTER_HEIGHT); - - const int areaWidth = pCC->areaWidth; - const int areaHeight = pCC->areaHeight; - const int baseWidthShift = (int)p.baseWidthShift; - const int baseHeightShift = (int)p.baseHeightShift; - - const int charSize = GetCharacterSize(pCC); - const int charBaseLineOffset = (int)pCC->param * charSize; - const int bpp = pCC->dstBpp; - const int cx_base = left / CHARACTER_WIDTH; - u8 * const pCharBase = pCC->charBase; - u8 * pChar; - - cy = top / CHARACTER_HEIGHT; - - for ( iy = top; iy < bottom; iy += CHARACTER_HEIGHT ) { - pcy = (iy < y) ? y - iy: 0; - pch = ((yh - iy > CHARACTER_HEIGHT) ? CHARACTER_HEIGHT: yh - iy) - pcy; - pChar = pCharBase; - - cx = cx_base; - for ( ix = left; ix < right; ix += CHARACTER_WIDTH ) { - const u32 iChar = GetCharIndex1D((u32)cx, (u32)cy, (u32)areaWidth, (u32)areaHeight, (u32)baseWidthShift, (u32)baseHeightShift); - pcx = (ix < x) ? x - ix: 0; - pcw = ((xw - ix > CHARACTER_WIDTH) ? CHARACTER_WIDTH: xw - ix) - pcx; - - pChar = pCharBase + iChar * charSize; - - ClearChar(pChar, pcx, pcy, pcw, pch, cl8, bpp); - cx++; - } - cy++; - } - } -} - -static void InitCharCanvas (NNSG2dCharCanvas * pCC, void * charBase, int areaWidth, int areaHeight, NNSG2dCharaColorMode colorMode, const NNSiG2dCharCanvasVTable * vtable, u32 param) { - NNS_G2D_POINTER_ASSERT(pCC); - NNS_G2D_ASSERT(0 < areaWidth); - NNS_G2D_ASSERT(0 < areaHeight); - NNS_G2D_COLORMODE_ASSERT(colorMode); - NNS_G2D_POINTER_ASSERT(charBase); - NNS_G2D_ALIGN_ASSERT(charBase, 4); - NNS_G2D_POINTER_ASSERT(vtable); - NNS_G2D_POINTER_ASSERT(vtable->pDrawGlyph); - NNS_G2D_POINTER_ASSERT(vtable->pClear); - NNS_G2D_POINTER_ASSERT(vtable->pClearArea); - - pCC->areaWidth = areaWidth; - pCC->areaHeight = areaHeight; - pCC->dstBpp = colorMode; - pCC->charBase = charBase; - pCC->vtable = vtable; - pCC->param = param; -} - -static void MakeCell (NNSG2dCellData * pCell, GXOamAttr * pOam, u16 numObj, int x, int y, int areaPWidth, int areaPHeight, int priority, GXOamMode mode, BOOL mosaic, GXOamEffect effect, int cParam, BOOL makeBR) { - NNSG2dCellOAMAttrData * oamArray = NULL; - NNSG2dCellBoundingRectS16 * pBoundingRect = NULL; - u16 attr = 0; - int i; - - NNS_G2D_POINTER_ASSERT(pCell); - NNS_G2D_POINTER_ASSERT(pOam); - - if (makeBR) { - pBoundingRect = (NNSG2dCellBoundingRectS16 *)(pCell + 1); - oamArray = (NNSG2dCellOAMAttrData *)(pBoundingRect + 1); - attr |= NNSi_G2dSetCellAttrHasBR(1); - - pBoundingRect->minX = (s16)(-x); - pBoundingRect->maxX = (s16)(areaPWidth - x); - pBoundingRect->minY = (s16)(-y); - pBoundingRect->maxY = (s16)(areaPHeight - y); - } else { - oamArray = (NNSG2dCellOAMAttrData *)(pCell + 1); - } - - for ( i = 0; i < numObj; i++ ) { - G2_SetOBJPriority(&pOam[i], priority); - G2_SetOBJMode(&pOam[i], mode, cParam); - G2_SetOBJEffect(&pOam[i], effect, 0); - G2_OBJMosaic(&pOam[i], mosaic); - - if (effect == GX_OAM_EFFECT_AFFINE_DOUBLE) { - const GXOamShape shape = G2_GetOBJShape(&pOam[i]); - const int w = NNS_G2dGetOamSizeX(&shape); - const int h = NNS_G2dGetOamSizeY(&shape); - u32 x, y; - int mx, my; - - G2_GetOBJPosition(&pOam[i], &x, &y); - mx = NNS_G2dRepeatXinCellSpace((s16)(x - w / 2)); - my = NNS_G2dRepeatYinCellSpace((s16)(y - h / 2)); - G2_SetOBJPosition(&pOam[i], mx, my); - } - } - - for ( i = 0; i < numObj; i++ ) { - oamArray[i].attr0 = pOam[i].attr0; - oamArray[i].attr1 = pOam[i].attr1; - oamArray[i].attr2 = pOam[i].attr2; - } - - attr |= NNSi_G2dSetCellAttrFlipFlag( - (effect == GX_OAM_EFFECT_FLIP_H) ? 1: 0, - (effect == GX_OAM_EFFECT_FLIP_V) ? 1: 0, - (effect == GX_OAM_EFFECT_FLIP_HV) ? 1: 0 - ); - - pCell->numOAMAttrs = numObj; - pCell->cellAttr = attr; - pCell->pOamAttrArray = oamArray; - - { - const u8 bsr = (u8)(ISqrt(areaPWidth * areaPWidth + areaPHeight * areaPHeight) / 2); - NNSi_G2dSetCellBoundingSphereR(pCell, bsr); - } -} - -int NNS_G2dCharCanvasDrawChar (const NNSG2dCharCanvas * pCC, const NNSG2dFont * pFont, int x, int y, int cl, u16 ccode) { - NNSG2dGlyph glyph; - - NNS_G2D_CHARCANVAS_ASSERT(pCC); - NNS_G2D_FONT_ASSERT(pFont); - NNS_G2D_ASSERT(NNS_G2dFontGetBpp(pFont) <= pCC->dstBpp); - NNS_G2D_MINMAX_ASSERT( - cl, 0, - (1 << pCC->dstBpp) - - (1 << NNS_G2dFontGetBpp(pFont)) + 1 - ); - - NNS_G2dFontGetGlyph(&glyph, pFont, ccode); - -#ifdef NNS_G2D_FONT_ENABLE_DIRECTION_SUPPORT - switch (NNS_G2dFontGetFlags(pFont)) { - case (NNS_G2D_FONT_FLAG_ROT_0): - case (NNS_G2D_FONT_FLAG_ROT_270 | NNS_G2D_FONT_FLAG_TBRL): -#endif - x += glyph.pWidths->left; -#ifdef NNS_G2D_FONT_ENABLE_DIRECTION_SUPPORT - break; - case (NNS_G2D_FONT_FLAG_ROT_90): - case (NNS_G2D_FONT_FLAG_ROT_0 | NNS_G2D_FONT_FLAG_TBRL): - x -= NNS_G2dFontGetCellWidth(pFont); - y += glyph.pWidths->left; - break; - case (NNS_G2D_FONT_FLAG_ROT_180): - case (NNS_G2D_FONT_FLAG_ROT_90 | NNS_G2D_FONT_FLAG_TBRL): - x -= glyph.pWidths->left + glyph.pWidths->glyphWidth; - y -= NNS_G2dFontGetCellHeight(pFont); - break; - case (NNS_G2D_FONT_FLAG_ROT_270): - case (NNS_G2D_FONT_FLAG_ROT_180 | NNS_G2D_FONT_FLAG_TBRL): - y -= glyph.pWidths->left + NNS_G2dFontGetCellHeight(pFont); - break; -} -#endif - - NNS_G2dCharCanvasDrawGlyph(pCC, pFont, x, y, cl, &glyph); - - return glyph.pWidths->charWidth; -} - -void NNS_G2dCharCanvasInitForBG (NNSG2dCharCanvas * pCC, void * charBase, int areaWidth, int areaHeight, NNSG2dCharaColorMode colorMode) { - NNS_G2D_POINTER_ASSERT(pCC); - NNS_G2D_POINTER_ASSERT(charBase); - NNS_G2D_ALIGN_ASSERT(charBase, 4); - NNS_G2D_ASSERT(0 < areaWidth); - NNS_G2D_ASSERT(0 < areaHeight); - NNS_G2D_COLORMODE_ASSERT(colorMode); - - InitCharCanvas( - pCC, - charBase, areaWidth, areaHeight, colorMode, - &VTABLE_BG, (unsigned int)areaWidth - ); -} - -void NNS_G2dCharCanvasInitForOBJ1D (NNSG2dCharCanvas * pCC, void * charBase, int areaWidth, int areaHeight, NNSG2dCharaColorMode colorMode) { - OBJ1DParam p; - const ObjectSize * pObj = GetMaxObjectSize(areaWidth, areaHeight); - - NNS_G2D_POINTER_ASSERT(pCC); - NNS_G2D_POINTER_ASSERT(charBase); - NNS_G2D_ALIGN_ASSERT(charBase, 4); - NNS_G2D_ASSERT(0 < areaWidth); - NNS_G2D_ASSERT(0 < areaHeight); - NNS_G2D_ASSERT(areaWidth * areaHeight <= MAX_OBJ1D_CHARACTER); - NNS_G2D_COLORMODE_ASSERT(colorMode); - - p.baseWidthShift = pObj->widthShift; - p.baseHeightShift = pObj->heightShift; - - InitCharCanvas( - pCC, - charBase, areaWidth, areaHeight, colorMode, - &VTABLE_OBJ1D, p.packed - ); -} - -void NNS_G2dCharCanvasInitForOBJ2DRect (NNSG2dCharCanvas * pCC, void * charBase, int areaWidth, int areaHeight, NNSG2dCharaColorMode colorMode) { - int lineWidth = (colorMode == NNS_G2D_CHARA_COLORMODE_16) ? 32: 16; - - NNS_G2D_POINTER_ASSERT(pCC); - NNS_G2D_POINTER_ASSERT(charBase); - NNS_G2D_ALIGN_ASSERT(charBase, 4); - NNS_G2D_ASSERT(0 < areaWidth); - NNS_G2D_ASSERT(areaWidth <= lineWidth); - NNS_G2D_ASSERT(0 < areaHeight); - NNS_G2D_ASSERT(areaHeight <= MAX_OBJ2DRECT_HEIGHT); - NNS_G2D_COLORMODE_ASSERT(colorMode); - - InitCharCanvas( - pCC, - charBase, areaWidth, areaHeight, colorMode, - &VTABLE_OBJ2DRECT, (unsigned int)lineWidth - ); -} - -void NNS_G2dMapScrToCharText (void * scnBase, int areaWidth, int areaHeight, int areaLeft, int areaTop, NNSG2dTextBGWidth scnWidth, int charNo, int cplt) { - NNS_G2D_POINTER_ASSERT(scnBase); - NNS_G2D_ALIGN_ASSERT(scnBase, 2); - NNS_G2D_ASSERT(0 < areaWidth); - NNS_G2D_ASSERT(0 < areaHeight); - NNS_G2D_ASSERT(0 <= areaLeft); - NNS_G2D_ASSERT(0 <= areaTop); - NNS_G2D_ASSERT(areaLeft + areaWidth <= scnWidth); - NNS_G2D_ASSERT(areaTop + areaHeight <= MAX_TEXT_BG_CHEIGHT); - NNS_G2D_TEXT_BG_WIDTH_ASSERT(scnWidth); - NNS_G2D_ASSERT(0 <= charNo); - NNS_G2D_ASSERT(charNo + (areaHeight * areaWidth) <= MAX_TEXT_BG_CHARACTER); - NNS_G2D_MINMAX_ASSERT(cplt, 0, 15); - - if (scnWidth <= 32) { - void * areaBase = (u16 *)scnBase + (scnWidth * areaTop + areaLeft); - NNS_G2dMapScrToChar256x16Pltt( - areaBase, areaWidth, areaHeight, - (NNSG2d256x16PlttBGWidth)scnWidth, charNo, cplt - ); - } else { - const int areaRight = areaLeft + areaWidth; - const int areaBottom = areaTop + areaHeight; - const u16 cplt_sft = (u16)(cplt << 12); - u16 * const pScrBase = (u16 *)scnBase; - int x, y; - - for ( y = areaTop; y < areaBottom; ++y ) { - const int py = (y < 32) ? y: y + 32; - u16 * pScr = pScrBase + py * 32; - - for ( x = areaLeft; x < areaRight; ++x ) { - const int px = (x < 32) ? x: x + 32 * 31; - *(pScr + px) = (u16)(cplt_sft | charNo++); - } - } - } -} - -void NNS_G2dMapScrToCharAffine (void * areaBase, int areaWidth, int areaHeight, NNSG2dAffineBGWidth scnWidth, int charNo) { - NNS_G2D_POINTER_ASSERT(areaBase); - NNS_G2D_ASSERT(areaHeight <= MAX_AFFINE_BG_CHEIGHT); - NNS_G2D_ASSERT(0 < areaWidth); - NNS_G2D_ASSERT(0 < areaHeight); - NNS_G2D_AFFINE_BG_WIDTH_ASSERT(scnWidth); - NNS_G2D_ASSERT(areaWidth <= scnWidth); - NNS_G2D_ASSERT(0 <= charNo); - NNS_G2D_ASSERT(charNo + (areaHeight * areaWidth) <= MAX_AFFINE_BG_CHARACTER); - - { - const BOOL bOddBase = (((u32)(areaBase) % 2) == 1); - const BOOL bOddWidth = ((areaWidth % 2) == 1); - const BOOL bOddLast = bOddBase ^ bOddWidth; - int wordWidth = areaWidth / 2; - u16 * pScrBase = (u16 *)((u32)(areaBase) & ~1); - int y; - - if (bOddBase && !bOddWidth) { - wordWidth--; - } - - scnWidth /= 2; - - for ( y = 0; y < areaHeight; ++y ) { - int x = 0; - u16 * pScr = pScrBase; - - if (bOddBase) { - *pScr++ = (u16)((charNo++ << 8) | (*pScr & 0xFF)); - } - for ( ; x < wordWidth; ++x ) { - *pScr++ = (u16)(((charNo + 1) << 8) | charNo); - charNo += 2; - } - if (bOddLast) { - *pScr++ = (u16)((*pScr & 0xFF00) | charNo++); - } - pScrBase += scnWidth; - } - } -} - -void NNS_G2dMapScrToChar256x16Pltt (void * areaBase, int areaWidth, int areaHeight, NNSG2d256x16PlttBGWidth scnWidth, int charNo, int cplt) { - u16 * pScrBase; - int x, y; - const u16 cplt_sft = (u16)(cplt << 12); - - NNS_G2D_POINTER_ASSERT(areaBase); - NNS_G2D_ALIGN_ASSERT(areaBase, 2); - NNS_G2D_ASSERT(0 < areaWidth); - NNS_G2D_ASSERT(0 < areaHeight); - NNS_G2D_ASSERT(areaHeight <= MAX_256x16PLTT_BG_CHEIGHT); - NNS_G2D_256x16PLTT_BG_WIDTH_ASSERT(scnWidth); - NNS_G2D_ASSERT(areaWidth <= scnWidth); - NNS_G2D_ASSERT(0 <= charNo); - NNS_G2D_ASSERT(charNo + (areaHeight * areaWidth) <= MAX_256x16PLTT_BG_CHARACTER); - NNS_G2D_MINMAX_ASSERT(cplt, 0, 15); - - pScrBase = areaBase; - - for ( y = 0; y < areaHeight; ++y ) { - u16 * pScr = pScrBase; - for ( x = 0; x < areaWidth; ++x ) { - *pScr++ = (u16)(cplt_sft | charNo++); - } - pScrBase += scnWidth; - } -} - -int NNSi_G2dCalcRequiredOBJ (int areaWidth, int areaHeight) { - const u32 w = (unsigned int)areaWidth; - const u32 h = (unsigned int)areaHeight; - const u32 w8 = w / 8; - const u32 h8 = h / 8; - const u32 w4 = (w & 4) >> 2; - const u32 h4 = (h & 4) >> 2; - const u32 wcp = ((w & 2) >> 1) + (w & 1); - const u32 hcp = ((h & 2) >> 1) + (h & 1); - int ret = 0; - - NNS_G2D_ASSERT(0 < areaWidth); - NNS_G2D_ASSERT(0 < areaHeight); - - ret += w8 * h8; - - ret += (wcp * 2 + w4) * h8; - - ret += (hcp * 2 + h4) * w8; - - ret += (wcp + w4) * (hcp + h4); - - return ret; -} - -int NNS_G2dArrangeOBJ1D (GXOamAttr * oam, int areaWidth, int areaHeight, int x, int y, GXOamColorMode color, int charName, NNSG2dOBJVramMode vramMode) { - const u32 fullbits = (u32)(~0); - const ObjectSize * pSize = GetMaxObjectSize(areaWidth, areaHeight); - const int objWidthShift = pSize->widthShift; - const int objHeightShift = pSize->heightShift; - const u32 objWidthMaskInv = fullbits << objWidthShift; - const u32 objHeightMaskInv = fullbits << objHeightShift; - const u32 areaAWidth = areaWidth & objWidthMaskInv; - const u32 areaAHeight = areaHeight & objHeightMaskInv; - const int charNameUnit = (color == GX_OAM_COLORMODE_16) ? 1: 2; - int usedObjs = 0; - - NNS_G2D_POINTER_ASSERT(oam); - NNS_G2D_MINMAX_ASSERT(areaWidth, 1, 1024); - NNS_G2D_MINMAX_ASSERT(areaHeight, 1, 1024); - GX_OAM_COLORMODE_ASSERT(color); - NNS_G2D_OBJVRAMMODE_ASSERT(vramMode); - NNS_G2D_ASSERT(0 <= charName); - NNS_G2D_ASSERT((charName + ((areaWidth * areaHeight) >> vramMode)) <= 1024); - - { - const GXOamShape shape = OBJSizeToShape(pSize); - const int xNum = areaWidth >> objWidthShift; - const int yNum = areaHeight >> objHeightShift; - const int charNameSize = ((charNameUnit << objWidthShift) << objHeightShift) >> vramMode; - int ox, oy; - - for ( oy = 0; oy < yNum; ++oy ) { - const int py = y + (oy << objHeightShift) * CHARACTER_HEIGHT; - - for ( ox = 0; ox < xNum; ++ox ) { - const int px = x + (ox << objWidthShift) * CHARACTER_WIDTH; - - G2_SetOBJPosition(oam, px, py); - G2_SetOBJShape(oam, shape); - G2_SetOBJCharName(oam, charName); - G2_SetOBJColorMode(oam, color); - - oam++; - charName += charNameSize; - } - } - - usedObjs += xNum * yNum; - } - - if (areaAWidth < areaWidth) { - const unsigned int areaBWidth = areaWidth - areaAWidth; - const unsigned int areaBHeight = areaAHeight; - const int px = x + (int)areaAWidth * CHARACTER_WIDTH; - const int py = y; - - const int areaBObjs = NNS_G2dArrangeOBJ1D(oam, (int)areaBWidth, (int)areaBHeight, px, py, color, charName, vramMode); - - oam += areaBObjs; - usedObjs += areaBObjs; - charName += (charNameUnit * areaBWidth * areaBHeight) >> vramMode; - } - - if (areaAHeight < areaHeight) { - const unsigned int areaCWidth = areaAWidth; - const unsigned int areaCHeight = areaHeight - areaAHeight; - const int px = x; - const int py = y + (int)areaAHeight * CHARACTER_HEIGHT; - - const int areaCObjs = NNS_G2dArrangeOBJ1D(oam, (int)areaCWidth, (int)areaCHeight, px, py, color, charName, vramMode); - - oam += areaCObjs; - usedObjs += areaCObjs; - charName += (charNameUnit * areaCWidth * areaCHeight) >> vramMode; - } - - if (areaAWidth < areaWidth && areaAHeight < areaHeight) { - const unsigned int areaDWidth = areaWidth - areaAWidth; - const unsigned int areaDHeight = areaHeight - areaAHeight; - const int px = x + (int)areaAWidth * CHARACTER_WIDTH; - const int py = y + (int)areaAHeight * CHARACTER_HEIGHT; - - const int areaDObjs = NNS_G2dArrangeOBJ1D(oam, (int)areaDWidth, (int)areaDHeight, px, py, color, charName, vramMode); - - usedObjs += areaDObjs; - } - - return usedObjs; -} - -int NNS_G2dArrangeOBJ2DRect (GXOamAttr * oam, int areaWidth, int areaHeight, int x, int y, GXOamColorMode color, int charName) { - const u32 fullbits = (u32)(~0); - const ObjectSize * pSize = GetMaxObjectSize(areaWidth, areaHeight); - const int objWidthShift = pSize->widthShift; - const int objHeightShift = pSize->heightShift; - const u32 objWidthMaskInv = fullbits << objWidthShift; - const u32 objHeightMaskInv = fullbits << objHeightShift; - const u32 areaAWidth = areaWidth & objWidthMaskInv; - const u32 areaAHeight = areaHeight & objHeightMaskInv; - const int charNameUnit = (color == GX_OAM_COLORMODE_16) ? 1: 2; - int usedObjs = 0; - - NNS_G2D_POINTER_ASSERT(oam); - NNS_G2D_MINMAX_ASSERT(areaWidth, 1, 32); - NNS_G2D_MINMAX_ASSERT(areaHeight, 1, 32); - GX_OAM_COLORMODE_ASSERT(color); - NNS_G2D_ASSERT(0 <= charName); - NNS_G2D_ASSERT(charName + areaWidth * areaHeight <= 1024); - - { - const GXOamShape shape = OBJSizeToShape(pSize); - const unsigned int charNameSize = (u32)(charNameUnit << objWidthShift) << objHeightShift; - const int xNum = areaWidth >> objWidthShift; - const int yNum = areaHeight >> objHeightShift; - int ox, oy; - - for ( oy = 0; oy < yNum; ++oy ) { - const int cy = oy << objHeightShift; - const int py = y + cy * CHARACTER_HEIGHT; - - for ( ox = 0; ox < xNum; ++ox ) { - const int cx = ox << objWidthShift; - const int px = x + cx * CHARACTER_WIDTH; - const int cName = charName + cy * 32 + cx * charNameUnit; - - G2_SetOBJPosition(oam, px, py); - G2_SetOBJShape(oam, shape); - G2_SetOBJCharName(oam, cName); - G2_SetOBJColorMode(oam, color); - - oam++; - } - } - - usedObjs += xNum * yNum; - } - - if (areaAWidth < areaWidth) { - const unsigned int areaBWidth = areaWidth - areaAWidth; - const unsigned int areaBHeight = areaAHeight; - const int px = x + (int)areaAWidth * CHARACTER_WIDTH; - const int py = y; - const unsigned int cName = charName + areaAWidth * charNameUnit; - - const int areaBObjs = NNS_G2dArrangeOBJ2DRect(oam, (int)areaBWidth, (int)areaBHeight, px, py, color, (int)cName); - - oam += areaBObjs; - usedObjs += areaBObjs; - } - - if (areaAHeight < areaHeight) { - const unsigned int areaCWidth = areaAWidth; - const unsigned int areaCHeight = areaHeight - areaAHeight; - const int px = x; - const int py = y + (int)areaAHeight * CHARACTER_HEIGHT; - const unsigned int cName = charName + areaAHeight * 32; - - const int areaCObjs = NNS_G2dArrangeOBJ2DRect(oam, (int)areaCWidth, (int)areaCHeight, px, py, color, (int)cName); - - oam += areaCObjs; - usedObjs += areaCObjs; - } - - if (areaAWidth < areaWidth && areaAHeight < areaHeight) { - const unsigned int areaDWidth = areaWidth - areaAWidth; - const unsigned int areaDHeight = areaHeight - areaAHeight; - const int px = x + (int)areaAWidth * CHARACTER_WIDTH; - const int py = y + (int)areaAHeight * CHARACTER_HEIGHT; - const unsigned int cName = charName + areaAHeight * 32 + areaAWidth * charNameUnit; - - const int areaDObjs = NNS_G2dArrangeOBJ2DRect(oam, (int)areaDWidth, (int)areaDHeight, px, py, color, (int)cName); - - usedObjs += areaDObjs; - } - - return usedObjs; -} - -void NNS_G2dCharCanvasMakeCell1D (NNSG2dCellData * pCell, const NNSG2dCharCanvas * pCC, int x, int y, int priority, GXOamMode mode, BOOL mosaic, GXOamEffect effect, GXOamColorMode color, int charName, int cParam, NNSG2dOBJVramMode vramMode, BOOL makeBR) { - NNS_G2D_POINTER_ASSERT(pCell); - NNS_G2D_CHARCANVAS_ASSERT(pCC); - - { - const int areaCWidth = (u16)pCC->areaWidth; - const int areaCHeight = (u16)pCC->areaHeight; - - const u16 numObj = (u16)NNS_G2dCalcRequiredOBJ1D(areaCWidth, areaCHeight); - GXOamAttr * pTmpBuffer = (GXOamAttr *)__alloca(sizeof(GXOamAttr) * numObj); - - (void)NNS_G2dArrangeOBJ1D( - pTmpBuffer, - areaCWidth, - areaCHeight, - -x, -y, - color, - charName, - vramMode - ); - - MakeCell( - pCell, - pTmpBuffer, - numObj, - x, y, - areaCWidth * CHARACTER_WIDTH, - areaCHeight * CHARACTER_HEIGHT, - priority, - mode, - mosaic, - effect, - cParam, - makeBR - ); - } -} - -void NNS_G2dCharCanvasMakeCell2DRect (NNSG2dCellData * pCell, const NNSG2dCharCanvas * pCC, int x, int y, int priority, GXOamMode mode, BOOL mosaic, GXOamEffect effect, GXOamColorMode color, int charName, int cParam, BOOL makeBR) { - NNS_G2D_POINTER_ASSERT(pCell); - NNS_G2D_CHARCANVAS_ASSERT(pCC); - - { - const int areaCWidth = (u16)pCC->areaWidth; - const int areaCHeight = (u16)pCC->areaHeight; - - const u16 numObj = (u16)NNS_G2dCalcRequiredOBJ1D(areaCWidth, areaCHeight); - GXOamAttr * pTmpBuffer = (GXOamAttr *)__alloca(sizeof(GXOamAttr) * numObj); - - (void)NNS_G2dArrangeOBJ2DRect( - pTmpBuffer, - areaCWidth, - areaCHeight, - -x, -y, - color, - charName - ); - - MakeCell( - pCell, - pTmpBuffer, - numObj, - x, y, - areaCWidth * CHARACTER_WIDTH, - areaCHeight * CHARACTER_HEIGHT, - priority, - mode, - mosaic, - effect, - cParam, - makeBR - ); - } -} diff --git a/subprojects/NitroSystem/libraries/g2d/src/g2d_Font.c b/subprojects/NitroSystem/libraries/g2d/src/g2d_Font.c deleted file mode 100644 index c75c6c8d68..0000000000 --- a/subprojects/NitroSystem/libraries/g2d/src/g2d_Font.c +++ /dev/null @@ -1,226 +0,0 @@ -#include -#include -#include -#include -#include - -static u16 GetGlyphIndex (const NNSG2dFontCodeMap * pMap, u16 c) { - u16 index = NNS_G2D_GLYPH_INDEX_NOT_FOUND; - - NNS_G2D_POINTER_ASSERT(pMap); - NNS_G2D_ASSERT(pMap->ccodeBegin <= c && c <= pMap->ccodeEnd); - - switch (pMap->mappingMethod) { - case NNS_G2D_MAPMETHOD_DIRECT: - { - u16 offset = pMap->mapInfo[0]; - index = (u16)(c - pMap->ccodeBegin + offset); - } - break; - - case NNS_G2D_MAPMETHOD_TABLE: - { - const int table_index = c - pMap->ccodeBegin; - - index = pMap->mapInfo[table_index]; - } - break; - - case NNS_G2D_MAPMETHOD_SCAN: - { - const NNSG2dCMapInfoScan * const ws = (NNSG2dCMapInfoScan *)(pMap->mapInfo); - const NNSG2dCMapScanEntry * st = &(ws->entries[0]); - const NNSG2dCMapScanEntry * ed = &(ws->entries[ws->num - 1]); - - while (st <= ed) { - const NNSG2dCMapScanEntry * md = st + (ed - st) / 2; - - if (md->ccode < c) { - st = md + 1; - } else if (c < md->ccode) { - ed = md - 1; - } else { - index = md->index; - break; - } - } - } - break; - - default: - NNS_G2D_ASSERTMSG(FALSE, "unknwon MAPMETHOD"); - } - - return index; -} - -static NNS_G2D_INLINE const NNSG2dCharWidths * GetCharWidthsFromIndex (const NNSG2dFontWidth * const pWidth, int idx) { - NNS_G2D_POINTER_ASSERT(pWidth); - NNS_G2D_ASSERT(pWidth->indexBegin <= idx && idx <= pWidth->indexEnd); - - return (NNSG2dCharWidths *)(pWidth->widthTable) + (idx - pWidth->indexBegin); -} - -void NNS_G2dFontInitAuto (NNSG2dFont * pFont, void * pNftrFile) { - const static NNSiG2dSplitCharCallback spliterTable[] = { - NNSi_G2dSplitCharUTF8, - NNSi_G2dSplitCharUTF16, - NNSi_G2dSplitCharShiftJIS, - NNSi_G2dSplitChar1Byte - }; - NNSG2dFontEncoding encoding; - BOOL result; - - NNS_G2D_POINTER_ASSERT(pFont); - NNS_G2D_POINTER_ASSERT(pNftrFile); - - result = NNSi_G2dGetUnpackedFont(pNftrFile, &(pFont->pRes)); - NNS_G2D_ASSERTMSG(result, "Faild to unpack font."); - encoding = (NNSG2dFontEncoding)pFont->pRes->encoding; - NNS_G2D_MINMAX_ASSERT(encoding, 0, NNS_G2D_NUM_OF_ENCODING - 1); - - pFont->cbCharSpliter = spliterTable[encoding]; -} - -#define NNS_G2D_DEFINE_FONT_INIT(name, enc, spliter) \ - void NNS_G2dFontInit ## name(NNSG2dFont * pFont, void * pNftrFile) \ - { \ - BOOL result; \ - NNS_G2D_POINTER_ASSERT(pFont); \ - NNS_G2D_POINTER_ASSERT(pNftrFile); \ - \ - result = NNSi_G2dGetUnpackedFont(pNftrFile, &(pFont->pRes)); \ - NNS_G2D_ASSERTMSG(result, "Faild to unpack font."); \ - NNS_G2D_ASSERT( \ - (NNSG2dFontEncoding)pFont->pRes->encoding \ - == NNS_G2D_FONT_ENCODING_ ## enc \ - ); \ - \ - pFont->cbCharSpliter = NNSi_G2dSplitChar ## spliter; \ - } - -NNS_G2D_DEFINE_FONT_INIT(UTF8, UTF8, UTF8) -NNS_G2D_DEFINE_FONT_INIT(UTF16, UTF16, UTF16) -NNS_G2D_DEFINE_FONT_INIT(ShiftJIS, SJIS, ShiftJIS) -NNS_G2D_DEFINE_FONT_INIT(CP1252, CP1252, 1Byte) - -u16 NNS_G2dFontFindGlyphIndex (const NNSG2dFont * pFont, u16 c) { - const NNSG2dFontCodeMap * pMap; - - NNS_G2D_FONT_ASSERT(pFont); - - pMap = pFont->pRes->pMap; - - while (pMap != NULL) { - if ((pMap->ccodeBegin <= c) && (c <= pMap->ccodeEnd)) { - return GetGlyphIndex(pMap, c); - } - - pMap = pMap->pNext; - } - - return NNS_G2D_GLYPH_INDEX_NOT_FOUND; -} - -const NNSG2dCharWidths * NNS_G2dFontGetCharWidthsFromIndex (const NNSG2dFont * pFont, u16 idx) { - const NNSG2dFontWidth * pWidth; - - NNS_G2D_FONT_ASSERT(pFont); - - pWidth = pFont->pRes->pWidth; - - while (pWidth != NULL) { - if ((pWidth->indexBegin <= idx) && (idx <= pWidth->indexEnd)) { - return GetCharWidthsFromIndex(pWidth, idx); - } - - pWidth = pWidth->pNext; - } - - return &(pFont->pRes->defaultWidth); -} - -int NNSi_G2dFontGetStringWidth (const NNSG2dFont * pFont, int hSpace, const void * str, const void ** pPos) { - int width = 0; - const void * pos = str; - u16 c; - NNSiG2dSplitCharCallback getNextChar; - - NNS_G2D_FONT_ASSERT(pFont); - NNS_G2D_POINTER_ASSERT(str); - - getNextChar = NNSi_G2dFontGetSpliter(pFont); - - while ((c = getNextChar((const void **)&pos)) != 0) { - if (c == '\n') { - break; - } - - width += NNS_G2dFontGetCharWidth(pFont, c) + hSpace; - } - - if (pPos != NULL) { - *pPos = (c == '\n') ? pos: NULL; - } - if (width > 0) { - width -= hSpace; - } - return width; -} - -int NNSi_G2dFontGetTextHeight (const NNSG2dFont * pFont, int vSpace, const void * txt) { - const void * pos = txt; - int lines = 1; - NNSG2dTextRect rect = {0, 0}; - u16 c; - NNSiG2dSplitCharCallback getNextChar; - - NNS_G2D_FONT_ASSERT(pFont); - NNS_G2D_POINTER_ASSERT(txt); - - getNextChar = NNSi_G2dFontGetSpliter(pFont); - - while ((c = getNextChar((const void **)&pos)) != 0) { - if (c == '\n') { - lines++; - } - } - - return lines * (NNS_G2dFontGetLineFeed(pFont) + vSpace) - vSpace; -} - -int NNSi_G2dFontGetTextWidth (const NNSG2dFont * pFont, int hSpace, const void * txt) { - int width = 0; - - NNS_G2D_FONT_ASSERT(pFont); - NNS_G2D_POINTER_ASSERT(txt); - - while (txt != NULL) { - const int line_width = NNSi_G2dFontGetStringWidth(pFont, hSpace, txt, &txt); - if (line_width > width) { - width = line_width; - } - } - - return width; -} - -NNSG2dTextRect NNSi_G2dFontGetTextRect (const NNSG2dFont * pFont, int hSpace, int vSpace, const void * txt) { - int lines = 1; - NNSG2dTextRect rect = {0, 0}; - - NNS_G2D_FONT_ASSERT(pFont); - NNS_G2D_POINTER_ASSERT(txt); - - while (txt != NULL) { - const int width = NNSi_G2dFontGetStringWidth(pFont, hSpace, txt, &txt); - if (width > rect.width) { - rect.width = width; - } - lines++; - } - - rect.height = ((lines - 1) * (NNS_G2dFontGetLineFeed(pFont) + vSpace) - vSpace); - - return rect; -} diff --git a/subprojects/NitroSystem/libraries/g2d/src/g2d_Image.c b/subprojects/NitroSystem/libraries/g2d/src/g2d_Image.c deleted file mode 100644 index 7aed0f96fc..0000000000 --- a/subprojects/NitroSystem/libraries/g2d/src/g2d_Image.c +++ /dev/null @@ -1,443 +0,0 @@ -#include - -static void InitializeVRamLocation_(NNSG2dVRamLocation * pVramLocation); -static void SetVramLocation_(NNSG2dVRamLocation * pVramLocation, NNS_G2D_VRAM_TYPE type, u32 addr); -static u32 GetVramLocation_(const NNSG2dVRamLocation * pVramLocation, NNS_G2D_VRAM_TYPE type); -static BOOL IsImageReadyToUse_(const NNSG2dVRamLocation * pVramLocation, NNS_G2D_VRAM_TYPE type); - -static NNS_G2D_INLINE void InitializeVRamLocation_ (NNSG2dVRamLocation * pVramLocation) { - int i; - for ( i = 0; i < NNS_G2D_VRAM_TYPE_MAX; i++ ) { - pVramLocation->baseAddrOfVram[i] = NNS_G2D_VRAM_ADDR_NOT_INITIALIZED; - } -} - -static NNS_G2D_INLINE void SetVramLocation_ (NNSG2dVRamLocation * pVramLocation, NNS_G2D_VRAM_TYPE type, u32 addr) { - NNS_G2D_NULL_ASSERT(pVramLocation); - NNS_G2D_VRAM_TYPE_VALID(type); - - if (IsImageReadyToUse_(pVramLocation, type)) { - OS_Warning("Invalid setting is detected.\n Make sure to initialize NNSG2dVRamLocation instance before using it."); - } - - pVramLocation->baseAddrOfVram[type] = addr; -} - -static NNS_G2D_INLINE u32 GetVramLocation_ (const NNSG2dVRamLocation * pVramLocation, NNS_G2D_VRAM_TYPE type) { - NNS_G2D_NULL_ASSERT(pVramLocation); - NNS_G2D_VRAM_TYPE_VALID(type); - - return pVramLocation->baseAddrOfVram[type]; -} - -static NNS_G2D_INLINE BOOL IsImageReadyToUse_ (const NNSG2dVRamLocation * pVramLocation, NNS_G2D_VRAM_TYPE type) { - NNS_G2D_NULL_ASSERT(pVramLocation); - NNS_G2D_VRAM_TYPE_VALID(type); - - return (GetVramLocation_(pVramLocation, type) != NNS_G2D_VRAM_ADDR_NOT_INITIALIZED) ? - TRUE : FALSE; -} - -static NNS_G2D_INLINE int GetPow_ (u16 num) { - switch (num) { - case 1: return GX_TEXSIZE_S8; - case 2: return GX_TEXSIZE_S16; - case 4: return GX_TEXSIZE_S32; - case 8: return GX_TEXSIZE_S64; - case 16: return GX_TEXSIZE_S128; - case 32: return GX_TEXSIZE_S256; - default: - OS_Warning("unexpected img size !"); - return GX_TEXSIZE_S8; - } -} - -static NNS_G2D_INLINE void CopyCharDataToImageAttr_ (const NNSG2dCharacterData * pSrc, NNSG2dImageAttr * pDst) { - NNS_G2D_NULL_ASSERT(pSrc); - NNS_G2D_NULL_ASSERT(pDst); - - if (pSrc->mapingType == GX_OBJVRAMMODE_CHAR_2D) { - pDst->sizeS = (GXTexSizeS)(GetPow_(pSrc->W)); - pDst->sizeT = (GXTexSizeT)(GetPow_(pSrc->H)); - } else { - NNS_G2D_ASSERT( - (pSrc->W == NNS_G2D_1D_MAPPING_CHAR_SIZE) && - (pSrc->H == NNS_G2D_1D_MAPPING_CHAR_SIZE) - ); - - pDst->sizeS = (GXTexSizeS)pSrc->W; - pDst->sizeT = (GXTexSizeT)pSrc->H; - } - - pDst->fmt = pSrc->pixelFmt; - pDst->bExtendedPlt = FALSE; - pDst->plttUse = GX_TEXPLTTCOLOR0_TRNS; - pDst->mappingType = pSrc->mapingType; -} - -static NNS_G2D_INLINE void DoLoadingToVram_ (const NNSG2dCharacterData * pSrcData, u32 baseAddr, NNS_G2D_VRAM_TYPE type) { - const NNSG2dCharacterFmt charFmt = NNSi_G2dGetCharacterFmtType(pSrcData->characterFmt); - - NNS_G2D_ASSERTMSG( - !NNSi_G2dIsCharacterVramTransfered(pSrcData->characterFmt), - "You don't have to transfer a image data to VRAM. When you use the VRAM Transfer format image." - ); - - DC_FlushRange(pSrcData->pRawData, pSrcData->szByte); - switch (type) { - case NNS_G2D_VRAM_TYPE_3DMAIN: - NNS_G2D_ASSERT(charFmt == NNS_G2D_CHARACTER_FMT_BMP); - GX_BeginLoadTex(); - GX_LoadTex((void *)pSrcData->pRawData, baseAddr, pSrcData->szByte); - GX_EndLoadTex(); - break; - case NNS_G2D_VRAM_TYPE_2DMAIN: - NNS_G2D_ASSERT(charFmt == NNS_G2D_CHARACTER_FMT_CHAR); - GX_LoadOBJ((void *)pSrcData->pRawData, baseAddr, pSrcData->szByte); - break; - case NNS_G2D_VRAM_TYPE_2DSUB: - NNS_G2D_ASSERT(charFmt == NNS_G2D_CHARACTER_FMT_CHAR); - GXS_LoadOBJ((void *)pSrcData->pRawData, baseAddr, pSrcData->szByte); - break; - default: - NNS_G2D_ASSERT(FALSE); - } -} - -static BOOL IsValid1DMappingType_ (NNS_G2D_VRAM_TYPE vramType, GXOBJVRamModeChar mappingType) { - switch (vramType) { - case NNS_G2D_VRAM_TYPE_3DMAIN: - case NNS_G2D_VRAM_TYPE_2DMAIN: - return (BOOL)(GX_OBJVRAMMODE_CHAR_1D_32K <= mappingType && - mappingType <= GX_OBJVRAMMODE_CHAR_1D_256K); - break; - case NNS_G2D_VRAM_TYPE_2DSUB: - - return (BOOL)(GX_OBJVRAMMODE_CHAR_1D_32K <= mappingType && - mappingType <= GX_OBJVRAMMODE_CHAR_1D_128K); - break; - default: - return FALSE; - } -} - -static BOOL IsValidDataSize_ (const NNSG2dCharacterData * pSrcData, NNS_G2D_VRAM_TYPE vramType) { - if (vramType == NNS_G2D_VRAM_TYPE_3DMAIN) { - return TRUE; - } else { - switch (pSrcData->mapingType) { - case GX_OBJVRAMMODE_CHAR_2D: - return (BOOL)(pSrcData->szByte <= 32 * 1024); - case GX_OBJVRAMMODE_CHAR_1D_32K: - return (BOOL)(pSrcData->szByte <= 32 * 1024); - case GX_OBJVRAMMODE_CHAR_1D_64K: - return (BOOL)(pSrcData->szByte <= 64 * 1024); - case GX_OBJVRAMMODE_CHAR_1D_128K: - return (BOOL)(pSrcData->szByte <= 128 * 1024); - case GX_OBJVRAMMODE_CHAR_1D_256K: - return (BOOL)(pSrcData->szByte <= 256 * 1024); - default: - return FALSE; - } - } -} - -static NNS_G2D_INLINE void SetOBJVRamModeCharacterMapping_ (NNS_G2D_VRAM_TYPE vramType, GXOBJVRamModeChar vramMode) { - GX_OBJVRAMMODE_CHAR_ASSERT(vramMode); - - switch (vramType) { - case NNS_G2D_VRAM_TYPE_3DMAIN: - - break; - case NNS_G2D_VRAM_TYPE_2DMAIN: - GX_SetOBJVRamModeChar(vramMode); - break; - case NNS_G2D_VRAM_TYPE_2DSUB: - GXS_SetOBJVRamModeChar(vramMode); - break; - default: - NNS_G2D_ASSERT(FALSE); - } -} - -static NNS_G2D_INLINE void SetupImageProxyPrams_ (const NNSG2dCharacterData * pSrcData, u32 baseAddr, NNS_G2D_VRAM_TYPE type, NNSG2dImageProxy * pImgProxy) { - CopyCharDataToImageAttr_(pSrcData, &pImgProxy->attr); - NNS_G2dSetImageLocation(pImgProxy, type, baseAddr); -} - -static NNS_G2D_INLINE void DoLoadingPalette_ (const NNSG2dPaletteData * pSrcData, u32 srcOffset, u32 addr, u32 szByte, NNS_G2D_VRAM_TYPE type) { - NNS_G2D_NULL_ASSERT(pSrcData); - { - const void * pSrcRawData = (const void *)((const u8 *)pSrcData->pRawData + srcOffset); - - DC_FlushRange(pSrcData->pRawData, pSrcData->szByte); - - switch (type) { - case NNS_G2D_VRAM_TYPE_2DMAIN: - - if (pSrcData->bExtendedPlt) { - GX_BeginLoadOBJExtPltt(); - GX_LoadOBJExtPltt(pSrcRawData, addr, szByte); - GX_EndLoadOBJExtPltt(); - } else { - GX_LoadOBJPltt(pSrcRawData, addr, szByte); - } - break; - case NNS_G2D_VRAM_TYPE_2DSUB: - - if (pSrcData->bExtendedPlt) { - GXS_BeginLoadOBJExtPltt(); - GXS_LoadOBJExtPltt(pSrcRawData, addr, szByte); - GXS_EndLoadOBJExtPltt(); - } else { - GXS_LoadOBJPltt(pSrcRawData, addr, szByte); - } - break; - case NNS_G2D_VRAM_TYPE_3DMAIN: - - GX_BeginLoadTexPltt(); - GX_LoadTexPltt(pSrcRawData, addr, szByte); - GX_EndLoadTexPltt(); - break; - default: - NNS_G2D_ASSERT(FALSE); - break; - } - } -} - -static NNS_G2D_INLINE u32 CalcSizePerOnePltt_ (const NNSG2dPaletteData * pSrcData) { - NNS_G2D_NULL_ASSERT(pSrcData); - - if (pSrcData->fmt == GX_TEXFMT_PLTT16) { - return 16 * sizeof(u16); - } else { - NNS_G2D_ASSERT(pSrcData->fmt == GX_TEXFMT_PLTT256); - return 256 * sizeof(u16); - } -} - -static NNS_G2D_INLINE u16 GetCompressedPlttOriginalIndex_ (const NNSG2dPaletteCompressInfo * pCmpInfo, u16 idx) { - NNS_G2D_NULL_ASSERT(pCmpInfo); - - return *(((u16 *)pCmpInfo->pPlttIdxTbl) + idx); -} - -static NNS_G2D_INLINE void DoLoadingPaletteEx_ (const NNSG2dPaletteData * pSrcData, const NNSG2dPaletteCompressInfo * pCmpInfo, u32 addr, NNS_G2D_VRAM_TYPE type) { - NNS_G2D_NULL_ASSERT(pSrcData); - NNS_G2D_NULL_ASSERT(pCmpInfo); - NNS_G2D_VRAM_TYPE_VALID(type); - - { - u16 i; - u32 offsetAddr; - const u32 szOnePltt = CalcSizePerOnePltt_(pSrcData); - const u16 numIdx = pCmpInfo->numPalette; - - for ( i = 0; i < numIdx; i++ ) { - offsetAddr = GetCompressedPlttOriginalIndex_(pCmpInfo, i) * szOnePltt; - DoLoadingPalette_(pSrcData, szOnePltt * i, addr + offsetAddr, szOnePltt, type); - } - } -} - -void NNS_G2dInitImageProxy (NNSG2dImageProxy * pImg) { - NNS_G2D_NULL_ASSERT(pImg); - InitializeVRamLocation_(&pImg->vramLocation); -} - -void NNS_G2dSetImageLocation (NNSG2dImageProxy * pImg, NNS_G2D_VRAM_TYPE type, u32 addr) { - NNS_G2D_NULL_ASSERT(pImg); - NNS_G2D_VRAM_TYPE_VALID(type); - - SetVramLocation_(&pImg->vramLocation, type, addr); -} - -u32 NNS_G2dGetImageLocation (const NNSG2dImageProxy * pImg, NNS_G2D_VRAM_TYPE type) { - NNS_G2D_NULL_ASSERT(pImg); - NNS_G2D_VRAM_TYPE_VALID(type); - - return GetVramLocation_(&pImg->vramLocation, type); -} - -BOOL NNS_G2dIsImageReadyToUse (const NNSG2dImageProxy * pImg, NNS_G2D_VRAM_TYPE type) { - NNS_G2D_NULL_ASSERT(pImg); - NNS_G2D_VRAM_TYPE_VALID(type); - - return IsImageReadyToUse_(&pImg->vramLocation, type); -} - -void NNS_G2dInitImagePaletteProxy (NNSG2dImagePaletteProxy * pImg) { - NNS_G2D_NULL_ASSERT(pImg); - InitializeVRamLocation_(&pImg->vramLocation); -} - -void NNS_G2dSetImagePaletteLocation (NNSG2dImagePaletteProxy * pImg, NNS_G2D_VRAM_TYPE type, u32 addr) { - NNS_G2D_NULL_ASSERT(pImg); - NNS_G2D_VRAM_TYPE_VALID(type); - - SetVramLocation_(&pImg->vramLocation, type, addr); -} - -u32 NNS_G2dGetImagePaletteLocation (const NNSG2dImagePaletteProxy * pImg, NNS_G2D_VRAM_TYPE type) { - NNS_G2D_NULL_ASSERT(pImg); - NNS_G2D_VRAM_TYPE_VALID(type); - - return GetVramLocation_(&pImg->vramLocation, type); -} - -BOOL NNS_G2dIsImagePaletteReadyToUse (const NNSG2dImagePaletteProxy * pImg, NNS_G2D_VRAM_TYPE type) { - NNS_G2D_NULL_ASSERT(pImg); - NNS_G2D_VRAM_TYPE_VALID(type); - - return IsImageReadyToUse_(&pImg->vramLocation, type); -} - -void NNS_G2dLoadImage1DMapping (const NNSG2dCharacterData * pSrcData, u32 baseAddr, NNS_G2D_VRAM_TYPE type, NNSG2dImageProxy * pImgProxy) { - NNS_G2D_NULL_ASSERT(pSrcData); - NNS_G2D_NULL_ASSERT(pImgProxy); - NNS_G2D_ASSERTMSG( - IsValid1DMappingType_(type, pSrcData->mapingType), - "Invalid mapping-type." - ); - NNS_G2D_ASSERTMSG( - IsValidDataSize_(pSrcData, type), - "Invalid data size for the mapping-type." - ); - - SetOBJVRamModeCharacterMapping_(type, pSrcData->mapingType); - - DoLoadingToVram_(pSrcData, baseAddr, type); - - SetupImageProxyPrams_(pSrcData, baseAddr, type, pImgProxy); -} - -void NNS_G2dLoadImage2DMapping (const NNSG2dCharacterData * pSrcData, u32 baseAddr, NNS_G2D_VRAM_TYPE type, NNSG2dImageProxy * pImgProxy) { - NNS_G2D_NULL_ASSERT(pSrcData); - NNS_G2D_NULL_ASSERT(pImgProxy); - NNS_G2D_ASSERT(pSrcData->mapingType == GX_OBJVRAMMODE_CHAR_2D); - NNS_G2D_ASSERTMSG( - IsValidDataSize_(pSrcData, type), - "Invalid data size for the mapping-type." - ); - - SetOBJVRamModeCharacterMapping_(type, pSrcData->mapingType); - - DoLoadingToVram_(pSrcData, baseAddr, type); - - SetupImageProxyPrams_(pSrcData, baseAddr, type, pImgProxy); -} - -void NNS_G2dLoadImageVramTransfer (const NNSG2dCharacterData * pSrcData, u32 baseAddr, NNS_G2D_VRAM_TYPE type, NNSG2dImageProxy * pImgProxy) { - NNS_G2D_MINMAX_ASSERT( - pSrcData->mapingType, - GX_OBJVRAMMODE_CHAR_1D_32K, - GX_OBJVRAMMODE_CHAR_1D_256K - ); - - NNS_G2D_ASSERTMSG( - NNSi_G2dIsCharacterVramTransfered(pSrcData->characterFmt), - "NNS_G2dSetVramTransferImageProxy() must be used only for the vram transfer format image data." - ); - - DC_FlushRange(pSrcData->pRawData, pSrcData->szByte); - - SetOBJVRamModeCharacterMapping_(type, pSrcData->mapingType); - - CopyCharDataToImageAttr_(pSrcData, &pImgProxy->attr); - - NNS_G2dSetImageLocation(pImgProxy, type, baseAddr); -} - -void NNS_G2dLoadPalette (const NNSG2dPaletteData * pSrcData, u32 addr, NNS_G2D_VRAM_TYPE type, NNSG2dImagePaletteProxy * pPltProxy) { - NNS_G2D_NULL_ASSERT(pSrcData); - NNS_G2D_VRAM_TYPE_VALID(type); - NNS_G2D_NULL_ASSERT(pPltProxy); - - DoLoadingPalette_(pSrcData, 0, addr, pSrcData->szByte, type); - - pPltProxy->fmt = pSrcData->fmt; - pPltProxy->bExtendedPlt = pSrcData->bExtendedPlt; - - NNS_G2dSetImagePaletteLocation(pPltProxy, type, addr); -} - -void NNS_G2dLoadPaletteEx (const NNSG2dPaletteData * pSrcData, const NNSG2dPaletteCompressInfo * pCmpInfo, u32 addr, NNS_G2D_VRAM_TYPE type, NNSG2dImagePaletteProxy * pPltProxy) { - NNS_G2D_NULL_ASSERT(pSrcData); - NNS_G2D_NULL_ASSERT(pCmpInfo); - NNS_G2D_VRAM_TYPE_VALID(type); - NNS_G2D_NULL_ASSERT(pPltProxy); - - DoLoadingPaletteEx_(pSrcData, pCmpInfo, addr, type); - - pPltProxy->fmt = pSrcData->fmt; - pPltProxy->bExtendedPlt = pSrcData->bExtendedPlt; - - NNS_G2dSetImagePaletteLocation(pPltProxy, type, addr); -} - -void NNSi_G2dInitializeVRamLocation (NNSG2dVRamLocation * pVramLocation) { - InitializeVRamLocation_(pVramLocation); -} - -void NNSi_G2dSetVramLocation (NNSG2dVRamLocation * pVramLocation, NNS_G2D_VRAM_TYPE type, u32 addr) { - NNS_G2D_NULL_ASSERT(pVramLocation); - NNS_G2D_VRAM_TYPE_VALID(type); - - SetVramLocation_(pVramLocation, type, addr); -} - -u32 NNSi_G2dGetVramLocation (const NNSG2dVRamLocation * pVramLocation, NNS_G2D_VRAM_TYPE type) { - NNS_G2D_NULL_ASSERT(pVramLocation); - NNS_G2D_VRAM_TYPE_VALID(type); - - return GetVramLocation_(pVramLocation, type); -} - -BOOL NNSi_G2dIsVramLocationReadyToUse (const NNSG2dVRamLocation * pVramLocation, NNS_G2D_VRAM_TYPE type) { - NNS_G2D_NULL_ASSERT(pVramLocation); - NNS_G2D_VRAM_TYPE_VALID(type); - - return IsImageReadyToUse_(pVramLocation, type); -} - -void NNSi_G2dDoImageLoadingToVram (const NNSG2dCharacterData * pSrcData, u32 baseAddr, NNS_G2D_VRAM_TYPE type) { - NNS_G2D_NULL_ASSERT(pSrcData); - NNS_G2D_VRAM_TYPE_VALID(type); - - DoLoadingToVram_(pSrcData, baseAddr, type); -} - -void NNSi_G2dSetupImageProxyPrams (const NNSG2dCharacterData * pSrcData, u32 baseAddr, NNS_G2D_VRAM_TYPE type, NNSG2dImageProxy * pImgProxy) { - NNS_G2D_NULL_ASSERT(pSrcData); - NNS_G2D_VRAM_TYPE_VALID(type); - NNS_G2D_NULL_ASSERT(pImgProxy); - - SetupImageProxyPrams_(pSrcData, baseAddr, type, pImgProxy); -} - -void NNSi_G2dDoLoadingPaletteToVram (const NNSG2dPaletteData * pSrcData, u32 addr, NNS_G2D_VRAM_TYPE type) { - NNS_G2D_NULL_ASSERT(pSrcData); - NNS_G2D_VRAM_TYPE_VALID(type); - - DoLoadingPalette_(pSrcData, 0, addr, pSrcData->szByte, type); -} - -void NNSi_G2dDoLoadingPaletteToVramEx (const NNSG2dPaletteData * pSrcData, const NNSG2dPaletteCompressInfo * pCmpInfo, u32 addr, NNS_G2D_VRAM_TYPE type) { - NNS_G2D_NULL_ASSERT(pSrcData); - NNS_G2D_NULL_ASSERT(pCmpInfo); - NNS_G2D_VRAM_TYPE_VALID(type); - - DoLoadingPaletteEx_(pSrcData, pCmpInfo, addr, type); -} - -void NNSi_G2dSetupPaletteProxyPrams (const NNSG2dPaletteData * pSrcData, u32 addr, NNS_G2D_VRAM_TYPE type, NNSG2dImagePaletteProxy * pPltProxy) { - NNS_G2D_NULL_ASSERT(pSrcData); - NNS_G2D_VRAM_TYPE_VALID(type); - NNS_G2D_NULL_ASSERT(pPltProxy); - - pPltProxy->fmt = pSrcData->fmt; - pPltProxy->bExtendedPlt = pSrcData->bExtendedPlt; - - NNS_G2dSetImagePaletteLocation(pPltProxy, type, addr); -} diff --git a/subprojects/NitroSystem/libraries/g2d/src/g2d_MultiCellAnimation.c b/subprojects/NitroSystem/libraries/g2d/src/g2d_MultiCellAnimation.c deleted file mode 100644 index d0a728b255..0000000000 --- a/subprojects/NitroSystem/libraries/g2d/src/g2d_MultiCellAnimation.c +++ /dev/null @@ -1,824 +0,0 @@ - -#include -#include -#include -#include -#include - -static NNS_G2D_INLINE void SetNodeDataToCellAnim_ (NNSG2dCellAnimation * pCellAnim, const NNSG2dMultiCellHierarchyData * pNodeData, const NNSG2dAnimBankData * pAnimBank, u16 mcTotalFrame) { - const NNSG2dAnimSequenceData * pAnimSeq = NULL; - - NNS_G2D_NULL_ASSERT(pCellAnim); - NNS_G2D_NULL_ASSERT(pNodeData); - NNS_G2D_NULL_ASSERT(pAnimBank); - - pAnimSeq = NNS_G2dGetAnimSequenceByIdx(pAnimBank, pNodeData->animSequenceIdx); - - NNS_G2dSetCellAnimationSequence(pCellAnim, pAnimSeq); - - NNS_G2dStartAnimCtrl(NNS_G2dGetCellAnimationAnimCtrl(pCellAnim)); - - if (NNSi_G2dGetMultiCellNodePlayMode(pNodeData) == NNS_G2D_MCANIM_PLAYMODE_CONTINUE) { - const u32 animSeqLength = NNS_G2dCalcAnimSequenceTotalVideoFrames(pAnimSeq); - - if (NNSi_G2dIsAnimCtrlLoopAnim(NNS_G2dGetCellAnimationAnimCtrl(pCellAnim))) { - const u32 frameToMove = (mcTotalFrame % animSeqLength); - NNS_G2dTickCellAnimation(pCellAnim, (fx32)(frameToMove << FX32_SHIFT)); - } else { - const u32 frameToMove = (mcTotalFrame >= animSeqLength) ? animSeqLength : mcTotalFrame; - NNS_G2dTickCellAnimation(pCellAnim, (fx32)(frameToMove << FX32_SHIFT)); - } - } -} - -static void SetMCDataToMCInstanceImpl_ (NNSG2dMultiCellInstance * pMCInst, const NNSG2dMultiCellData * pMcData, u16 mcTotalFrame) { - u16 i; - - NNS_G2D_NULL_ASSERT(pMCInst); - NNS_G2D_NULL_ASSERT(pMCInst->pAnimDataBank); - NNS_G2D_NULL_ASSERT(pMcData); - - pMCInst->pCurrentMultiCell = pMcData; - - if (pMCInst->mcType == NNS_G2D_MCTYPE_SHARE_CELLANIM) { - NNSG2dMCCellAnimation * pCellAnimArray = (NNSG2dMCCellAnimation *)pMCInst->pCellAnimInstasnces; - - for ( i = 0; i < pMcData->numCellAnim; i++ ) { - pCellAnimArray[i].bInited = FALSE; - } - - for ( i = 0; i < pMcData->numNodes; i++ ) { - const NNSG2dMultiCellHierarchyData * pNodeData = &pMcData->pHierDataArray[i]; - const u16 cellAnimIdx = NNSi_G2dGetMC2NodeCellAinmIdx(pNodeData); - - if (!pCellAnimArray[cellAnimIdx].bInited) { - NNSG2dCellAnimation * pCellAnim = &pCellAnimArray[cellAnimIdx].cellAnim; - - SetNodeDataToCellAnim_( - pCellAnim, - pNodeData, - pMCInst->pAnimDataBank, - mcTotalFrame - ); - - pCellAnimArray[cellAnimIdx].bInited = TRUE; - } - } - } else { - NNSG2dNode * pNodeArray = (NNSG2dNode *)(pMCInst->pCellAnimInstasnces); - - for ( i = 0; i < pMcData->numNodes; i++ ) { - const NNSG2dMultiCellHierarchyData * pNodeData = &pMcData->pHierDataArray[i]; - NNSG2dCellAnimation * pCellAnim = (NNSG2dCellAnimation *)pNodeArray[i].pContent; - - SetNodeDataToCellAnim_( - pCellAnim, - pNodeData, - pMCInst->pAnimDataBank, - mcTotalFrame - ); - - pNodeArray[i].bVisible = TRUE; - NNSi_G2dSrtcSetTrans(&pNodeArray[i].srtCtrl, pNodeData->posX, pNodeData->posY); - } - } -} - -static NNS_G2D_INLINE void ApplyCurrentAnimResult_ (NNSG2dMultiCellAnimation * pMultiCellAnim) { - const NNSG2dAnimDataSRT * pAnimResult = NULL; - const NNSG2dMultiCellData * pData = NULL; - - NNS_G2D_NULL_ASSERT(pMultiCellAnim); - NNS_G2D_NULL_ASSERT(pMultiCellAnim->pMultiCellDataBank); - - if (pMultiCellAnim->animCtrl.pActiveCurrent->frames == 0) { - return; - } - pAnimResult = (const NNSG2dAnimDataSRT *)NNS_G2dGetAnimCtrlCurrentElement(&pMultiCellAnim->animCtrl); - NNS_G2D_NULL_ASSERT(pAnimResult); - - pData = NNS_G2dGetMultiCellDataByIdx( - pMultiCellAnim->pMultiCellDataBank, - pAnimResult->index - ); - NNS_G2D_NULL_ASSERT(pData); - - { - const NNSG2dAnimationElement elemType = NNSi_G2dGetAnimSequenceElementType(pMultiCellAnim->animCtrl.pAnimSequence->animType); - NNSi_G2dSrtcInitControl(&pMultiCellAnim->srtCtrl, NNS_G2D_SRTCONTROLTYPE_SRT); - - if (elemType != NNS_G2D_ANIMELEMENT_INDEX) { - if (elemType == NNS_G2D_ANIMELEMENT_INDEX_T) { - const NNSG2dAnimDataT * pAnmResT = (const NNSG2dAnimDataT *)pAnimResult; - NNSi_G2dSrtcSetTrans(&pMultiCellAnim->srtCtrl, pAnmResT->px, pAnmResT->py); - } else { - NNSi_G2dSrtcSetSRTScale(&pMultiCellAnim->srtCtrl, pAnimResult->sx, pAnimResult->sy); - NNSi_G2dSrtcSetSRTRotZ(&pMultiCellAnim->srtCtrl, pAnimResult->rotZ); - NNSi_G2dSrtcSetTrans(&pMultiCellAnim->srtCtrl, pAnimResult->px, pAnimResult->py); - } - } - } - - SetMCDataToMCInstanceImpl_( - &pMultiCellAnim->multiCellInstance, - pData, - pMultiCellAnim->totalVideoFrame - ); - - NNS_G2D_NULL_ASSERT(pMultiCellAnim->multiCellInstance.pCurrentMultiCell); -} - -static NNS_G2D_INLINE void FVecToSVec (const NNSG2dFVec2 * pvSrc, NNSG2dSVec2 * pvDst) { - pvDst->x = (s16)(pvSrc->x >> FX32_SHIFT); - pvDst->y = (s16)(pvSrc->y >> FX32_SHIFT); -} - -static NNS_G2D_INLINE void SVecToFVec (const NNSG2dSVec2 * pvSrc, NNSG2dFVec2 * pvDst) { - pvDst->x = pvSrc->x << FX32_SHIFT; - pvDst->y = pvSrc->y << FX32_SHIFT; -} - -static NNS_G2D_INLINE void AddSVec_ (const NNSG2dSVec2 * pv1, const NNSG2dSVec2 * pv2, NNSG2dSVec2 * pvDst) { - pvDst->x = (s16)(pv1->x + pv2->x); - pvDst->y = (s16)(pv1->y + pv2->y); -} - -static u16 GetMCBankNumCellAnimRequired_ (const NNSG2dMultiCellDataBank * pMultiCellDataBank) { - NNS_G2D_NULL_ASSERT(pMultiCellDataBank); - { - const NNSG2dMultiCellData * pMCell = NULL; - u16 maxNum = 0; - u16 i; - - for ( i = 0; i < pMultiCellDataBank->numMultiCellData; i++ ) { - pMCell = NNS_G2dGetMultiCellDataByIdx(pMultiCellDataBank, i); - NNS_G2D_NULL_ASSERT(pMCell); - - if (pMCell->numCellAnim > maxNum) { - maxNum = pMCell->numCellAnim; - } - } - return maxNum; - } -} - -static u16 MakeCellAnimToOams_ (GXOamAttr * pDstOams, u16 numDstOams, const NNSG2dCellAnimation * pCellAnim, const NNSG2dSVec2 * pNodeTrans, const MtxFx22 * pMtxSR, const NNSG2dFVec2 * pBaseTrans, u16 affineIndex, BOOL bDoubleAffine) { - NNSG2dFVec2 vTransF; - NNSG2dSVec2 vTransS; - const NNSG2dSRTControl * pContentsSRT; - - pContentsSRT = &pCellAnim->srtCtrl; - - { - AddSVec_( - &pContentsSRT->srtData.trans, - pNodeTrans, - &vTransS - ); - - if (pMtxSR != NULL) { - vTransF.x = pMtxSR->_00 * vTransS.x + pMtxSR->_10 * vTransS.y; - vTransF.y = pMtxSR->_01 * vTransS.x + pMtxSR->_11 * vTransS.y; - } else { - SVecToFVec(&vTransS, &vTransF); - } - - if (pBaseTrans != NULL) { - vTransF.x += pBaseTrans->x; - vTransF.y += pBaseTrans->y; - } - } - - if (NNSi_G2dSrtcIsAffineEnable_SR(pContentsSRT)) { - OS_Warning("invalid affine transformation is found in NNS_G2dInitMCAnimation()"); - } - - return NNS_G2dMakeCellToOams( - pDstOams, - numDstOams, - NNS_G2dGetCellAnimationCurrentCell(pCellAnim), - pMtxSR, - &vTransF, - affineIndex, - bDoubleAffine - ); -} - -static NNS_G2D_INLINE u16 MakeSimpleMultiCellToOams_ (GXOamAttr * pDstOams, u16 numDstOams, const NNSG2dMultiCellInstance * pMCellInst, const MtxFx22 * pMtxSR, const NNSG2dFVec2 * pBaseTrans, u16 affineIndex, BOOL bDoubleAffine) { - u16 i = 0; - u16 numOamUsed = 0; - int numRestOams = numDstOams; - NNSG2dNode * pNode = NULL; - - NNS_G2D_NULL_ASSERT(pDstOams); - NNS_G2D_NULL_ASSERT(pMCellInst); - NNS_G2D_NULL_ASSERT(pMCellInst->pCurrentMultiCell); - NNS_G2D_ASSERT(pMCellInst->mcType == NNS_G2D_MCTYPE_DONOT_SHARE_CELLANIM); - - pNode = (NNSG2dNode *)pMCellInst->pCellAnimInstasnces; - for ( i = 0; i < pMCellInst->pCurrentMultiCell->numNodes; i++ ) { - if (numRestOams > 0) { - NNS_G2D_WARNING( - pNode->type == NNS_G2D_NODETYPE_CELL && - !NNSi_G2dSrtcIsAffineEnable_SR(&pNode->srtCtrl), - "A SR-Transformation of a multicell-node was ignored." - ); - - numOamUsed = MakeCellAnimToOams_( - pDstOams, - (u16)numRestOams, - pNode[i].pContent, - &pNode[i].srtCtrl.srtData.trans, - pMtxSR, - pBaseTrans, - affineIndex, - bDoubleAffine - ); - - numRestOams -= numOamUsed; - pDstOams += numOamUsed; - } else { - break; - } - } - - NNS_G2D_ASSERT(numDstOams >= numRestOams); - return (u16)(numDstOams - numRestOams); -} - -static NNS_G2D_INLINE u16 MakeSimpleMultiCellToOams_ShareCellAnims_ (GXOamAttr * pDstOams, u16 numDstOams, const NNSG2dMultiCellInstance * pMCellInst, const MtxFx22 * pMtxSR, const NNSG2dFVec2 * pBaseTrans, u16 affineIndex, BOOL bDoubleAffine) { - u16 i = 0; - u16 numOamUsed = 0; - int numRestOams = numDstOams; - const NNSG2dMCCellAnimation * pMCCellAnimArray = NULL; - NNSG2dSVec2 nodeTrans; - - NNS_G2D_NULL_ASSERT(pDstOams); - NNS_G2D_NULL_ASSERT(pMCellInst); - NNS_G2D_NULL_ASSERT(pMCellInst->pCurrentMultiCell); - NNS_G2D_ASSERT(pMCellInst->mcType == NNS_G2D_MCTYPE_SHARE_CELLANIM); - - pMCCellAnimArray = (const NNSG2dMCCellAnimation *)pMCellInst->pCellAnimInstasnces; - - for ( i = 0; i < pMCellInst->pCurrentMultiCell->numNodes; i++ ) { - const NNSG2dMultiCellHierarchyData * pNode - = &pMCellInst->pCurrentMultiCell->pHierDataArray[i]; - - const u16 cellAnimIdx = NNSi_G2dGetMC2NodeCellAinmIdx(pNode); - - if (numRestOams > 0) { - nodeTrans.x = pNode->posX; - nodeTrans.y = pNode->posY; - - numOamUsed = MakeCellAnimToOams_( - pDstOams, - (u16)numRestOams, - &pMCCellAnimArray[cellAnimIdx].cellAnim, - &nodeTrans, - pMtxSR, - pBaseTrans, - affineIndex, - bDoubleAffine - ); - - numRestOams -= numOamUsed; - pDstOams += numOamUsed; - } else { - break; - } - } - - NNS_G2D_ASSERT(numDstOams >= numRestOams); - return (u16)(numDstOams - numRestOams); -} - -static NNS_G2D_INLINE void InitMCInstance_ (NNSG2dMultiCellInstance * pMultiCell, NNSG2dNode * pNodeArray, NNSG2dCellAnimation * pCellAnim, u16 numNode, const NNSG2dCellAnimBankData * pAnimBank, const NNSG2dCellDataBank * pCellDataBank) { - NNS_G2D_NULL_ASSERT(pMultiCell); - NNS_G2D_NULL_ASSERT(pNodeArray); - NNS_G2D_NULL_ASSERT(pAnimBank); - NNS_G2D_ASSERTMSG(numNode != 0, "Non zero value is expected."); - - pMultiCell->mcType = NNS_G2D_MCTYPE_DONOT_SHARE_CELLANIM; - pMultiCell->pCurrentMultiCell = NULL; - pMultiCell->pAnimDataBank = pAnimBank; - pMultiCell->pCellAnimInstasnces = (void *)pNodeArray; - - { - u16 i; - for ( i = 0; i < numNode; i++ ) { - NNSi_G2dInitializeNode(&pNodeArray[i], NNS_G2D_NODETYPE_CELL); - - pNodeArray[i].pContent = &pCellAnim[i]; - - NNS_G2dInitCellAnimation( - &pCellAnim[i], - NNS_G2dGetAnimSequenceByIdx(pAnimBank, 0), - pCellDataBank - ); - } - } -} - -static NNS_G2D_INLINE void InitMCAnimation_ (NNSG2dMultiCellAnimation * pMultiCellAnim, NNSG2dNode * pNodeArray, NNSG2dCellAnimation * pCellAnim, u16 numNode, const NNSG2dCellAnimBankData * pAnimBank, const NNSG2dCellDataBank * pCellDataBank, const NNSG2dMultiCellDataBank * pMultiCellDataBank) { -#pragma unused( pMultiCellDataBank ) - NNS_G2D_NULL_ASSERT(pMultiCellAnim); - - NNS_G2D_NULL_ASSERT(pNodeArray); - NNS_G2D_NULL_ASSERT(pCellAnim); - NNS_G2D_ASSERTMSG(numNode != 0, "TODO: msg"); - - NNS_G2D_NULL_ASSERT(pAnimBank); - NNS_G2D_NULL_ASSERT(pCellDataBank); - - NNS_G2D_NULL_ASSERT(pMultiCellDataBank); - - InitMCInstance_( - &pMultiCellAnim->multiCellInstance, - pNodeArray, - pCellAnim, - numNode, - pAnimBank, - pCellDataBank - ); - - NNS_G2dInitAnimCtrl(&pMultiCellAnim->animCtrl); - pMultiCellAnim->pMultiCellDataBank = pMultiCellDataBank; - NNSi_G2dSrtcInitControl(&pMultiCellAnim->srtCtrl, NNS_G2D_SRTCONTROLTYPE_SRT); - pMultiCellAnim->totalVideoFrame = 0; -} - -static NNS_G2D_INLINE void InitMCAnimation_SharingCellAnim_ (NNSG2dMultiCellAnimation * pMultiCellAnim, void * pWork, const NNSG2dCellAnimBankData * pAnimBank, const NNSG2dCellDataBank * pCellDataBank, const NNSG2dMultiCellDataBank * pMultiCellDataBank) { - NNS_G2D_NULL_ASSERT(pMultiCellAnim); - NNS_G2D_NULL_ASSERT(pWork); - NNS_G2D_NULL_ASSERT(pAnimBank); - NNS_G2D_NULL_ASSERT(pCellDataBank); - NNS_G2D_NULL_ASSERT(pMultiCellDataBank); - - pMultiCellAnim->multiCellInstance.mcType = NNS_G2D_MCTYPE_SHARE_CELLANIM; - { - NNSG2dMultiCellInstance * pMCInst = &pMultiCellAnim->multiCellInstance; - - pMCInst->pAnimDataBank = pAnimBank; - - pMCInst->pCellAnimInstasnces = (void *)pWork; - - { - u16 i; - const u16 numCellAnim - = GetMCBankNumCellAnimRequired_(pMultiCellDataBank); - NNSG2dMCCellAnimation * pMCCellAnim - = (NNSG2dMCCellAnimation *)pMCInst->pCellAnimInstasnces; - - for ( i = 0; i < numCellAnim; i++ ) { - NNS_G2dInitCellAnimation( - &pMCCellAnim[i].cellAnim, - NNS_G2dGetAnimSequenceByIdx(pAnimBank, 0), - pCellDataBank - ); - - pMCCellAnim[i].bInited = TRUE; - } - } - } -} - -void NNS_G2dSetAnimSequenceToMCAnimation (NNSG2dMultiCellAnimation * pMultiCellAnim, const NNSG2dAnimSequence * pAnimSeq) { - NNS_G2D_NULL_ASSERT(pMultiCellAnim); - NNS_G2D_NULL_ASSERT(pMultiCellAnim->pMultiCellDataBank); - - NNS_G2D_NULL_ASSERT(pAnimSeq); - NNS_G2D_ASSERTMSG( - NNS_G2dGetAnimSequenceAnimType(pAnimSeq) - == NNS_G2D_ANIMATIONTYPE_MULTICELLLOCATION, - "NNSG2dAnimationType must be MultiCellLocation." - ); - - NNS_G2dBindAnimCtrl(&pMultiCellAnim->animCtrl, pAnimSeq); - - pMultiCellAnim->totalVideoFrame = 0; - - ApplyCurrentAnimResult_(pMultiCellAnim); -} - -void NNS_G2dInitMCAnimationInstance (NNSG2dMultiCellAnimation * pMultiCellAnim, void * pWork, const NNSG2dCellAnimBankData * pAnimBank, const NNSG2dCellDataBank * pCellDataBank, const NNSG2dMultiCellDataBank * pMultiCellDataBank, NNSG2dMCType mcType) { - NNS_G2D_NULL_ASSERT(pMultiCellAnim); - NNS_G2D_NULL_ASSERT(pWork); - NNS_G2D_NULL_ASSERT(pAnimBank); - NNS_G2D_NULL_ASSERT(pCellDataBank); - NNS_G2D_NULL_ASSERT(pMultiCellDataBank); - - if (mcType == NNS_G2D_MCTYPE_SHARE_CELLANIM) { - InitMCAnimation_SharingCellAnim_( - pMultiCellAnim, - pWork, - pAnimBank, - pCellDataBank, - pMultiCellDataBank - ); - } else { - const u16 numNode - = NNS_G2dGetMCBankNumNodesRequired(pMultiCellDataBank); - NNSG2dNode * pNodeArray - = pWork; - NNSG2dCellAnimation * pCellAnimArray - = (NNSG2dCellAnimation *)(pNodeArray + numNode); - - InitMCAnimation_( - pMultiCellAnim, - pNodeArray, - pCellAnimArray, - numNode, - pAnimBank, - pCellDataBank, - pMultiCellDataBank - ); - } - - NNS_G2dInitAnimCtrl(&pMultiCellAnim->animCtrl); - pMultiCellAnim->pMultiCellDataBank = pMultiCellDataBank; - NNSi_G2dSrtcInitControl(&pMultiCellAnim->srtCtrl, NNS_G2D_SRTCONTROLTYPE_SRT); - pMultiCellAnim->totalVideoFrame = 0; -} - -u16 NNS_G2dGetMCNumNodesRequired (const NNSG2dMultiCellAnimSequence * pMultiCellSeq, const NNSG2dMultiCellDataBank * pMultiCellDataBank) { - NNS_G2D_NULL_ASSERT(pMultiCellSeq); - NNS_G2D_NULL_ASSERT(pMultiCellDataBank); - NNS_G2D_ASSERTMSG( - NNS_G2dGetAnimSequenceAnimType(pMultiCellSeq) - == NNS_G2D_ANIMATIONTYPE_MULTICELLLOCATION, - "NNSG2dAnimationType must be MultiCellLocation." - ); - - { - const NNSG2dMultiCellData * pMCell = NULL; - u16 maxNumNode = 0; - - u16 i; - const NNSG2dAnimDataSRT * pAnmFrm; - for ( i = 0; i < pMultiCellSeq->numFrames; i++ ) { - pAnmFrm = (const NNSG2dAnimDataSRT *) - pMultiCellSeq->pAnmFrameArray[i].pContent; - - pMCell = NNS_G2dGetMultiCellDataByIdx( - pMultiCellDataBank, - pAnmFrm->index - ); - NNS_G2D_NULL_ASSERT(pMCell); - - if (pMCell->numNodes > maxNumNode) { - maxNumNode = pMCell->numNodes; - } - } - return maxNumNode; - } -} - -u32 NNS_G2dGetMCWorkAreaSize (const NNSG2dMultiCellDataBank * pMultiCellDataBank, NNSG2dMCType mcType) { - if (mcType == NNS_G2D_MCTYPE_SHARE_CELLANIM) { - return sizeof(NNSG2dMCCellAnimation) - * GetMCBankNumCellAnimRequired_(pMultiCellDataBank); - } else { - return (sizeof(NNSG2dNode) + sizeof(NNSG2dCellAnimation)) - * NNS_G2dGetMCBankNumNodesRequired(pMultiCellDataBank); - } -} - -u16 NNS_G2dGetMCBankNumNodesRequired (const NNSG2dMultiCellDataBank * pMultiCellDataBank) { - NNS_G2D_NULL_ASSERT(pMultiCellDataBank); - { - const NNSG2dMultiCellData * pMCell = NULL; - u16 maxNumNode = 0; - u16 i; - - for ( i = 0; i < pMultiCellDataBank->numMultiCellData; i++ ) { - pMCell = NNS_G2dGetMultiCellDataByIdx(pMultiCellDataBank, i); - NNS_G2D_NULL_ASSERT(pMCell); - - if (pMCell->numNodes > maxNumNode) { - maxNumNode = pMCell->numNodes; - } - } - return maxNumNode; - } -} - -void NNS_G2dTickMCInstance (NNSG2dMultiCellInstance * pMCellInst, fx32 frames) { - if (pMCellInst->mcType == NNS_G2D_MCTYPE_SHARE_CELLANIM) { - u16 i; - NNSG2dMCCellAnimation * pCellAnimArray = pMCellInst->pCellAnimInstasnces; - - for ( i = 0; i < pMCellInst->pCurrentMultiCell->numCellAnim; i++ ) { - NNS_G2dTickCellAnimation(&pCellAnimArray[i].cellAnim, frames); - } - } else { - u16 i; - NNSG2dNode * pNodeArray = NULL; - - NNS_G2D_NULL_ASSERT(pMCellInst); - NNS_G2D_NULL_ASSERT(pMCellInst->pCurrentMultiCell); - - pNodeArray = (NNSG2dNode *)(pMCellInst->pCellAnimInstasnces); - - for ( i = 0; i < pMCellInst->pCurrentMultiCell->numNodes; i++ ) { - NNS_G2D_ASSERT(pNodeArray[i].type == NNS_G2D_NODETYPE_CELL); - NNS_G2dTickCellAnimation((NNSG2dCellAnimation *)pNodeArray[i].pContent, frames); - } - } -} - -void NNS_G2dTickMCAnimation (NNSG2dMultiCellAnimation * pMultiCellAnim, fx32 frames) { - NNS_G2D_NULL_ASSERT(pMultiCellAnim); - - { - const u16 currentAnimFrameFrames = pMultiCellAnim->animCtrl.pCurrent->frames; - - if (NNS_G2dTickAnimCtrl(&pMultiCellAnim->animCtrl, frames)) { - pMultiCellAnim->totalVideoFrame += currentAnimFrameFrames; - - ApplyCurrentAnimResult_(pMultiCellAnim); - } else { - NNS_G2dTickMCInstance(&pMultiCellAnim->multiCellInstance, frames); - } - } -} - -void NNS_G2dSetMCAnimationCurrentFrame (NNSG2dMultiCellAnimation * pMultiCellAnim, u16 frameIndex) { - NNS_G2D_NULL_ASSERT(pMultiCellAnim); - - if (NNS_G2dSetAnimCtrlCurrentFrame(&pMultiCellAnim->animCtrl, frameIndex)) { - ApplyCurrentAnimResult_(pMultiCellAnim); - } -} - -void NNS_G2dSetMCAnimationCellAnimFrame (NNSG2dMultiCellAnimation * pMultiCellAnim, u16 caFrameIndex) { - u16 i; - NNSG2dMultiCellInstance * pMCInst = NULL; - - NNS_G2D_NULL_ASSERT(pMultiCellAnim); - - pMCInst = &pMultiCellAnim->multiCellInstance; - - if (pMCInst->mcType == NNS_G2D_MCTYPE_SHARE_CELLANIM) { - NNSG2dMCCellAnimation * pCellAnimArray = (NNSG2dMCCellAnimation *)pMCInst->pCellAnimInstasnces; - const int numCellAnm = pMCInst->pCurrentMultiCell->numCellAnim; - - for ( i = 0; i < numCellAnm; i++ ) { - NNSG2dCellAnimation * pCell = &pCellAnimArray[i].cellAnim; - NNS_G2dSetCellAnimationCurrentFrame(pCell, caFrameIndex); - } - } else { - NNSG2dNode * pNodeArray = (NNSG2dNode *)(pMCInst->pCellAnimInstasnces); - const int numCellAnm = pMCInst->pCurrentMultiCell->numNodes; - - for ( i = 0; i < numCellAnm; i++ ) { - NNSG2dCellAnimation * pCell = (NNSG2dCellAnimation *)pNodeArray[i].pContent; - NNS_G2dSetCellAnimationCurrentFrame(pCell, caFrameIndex); - } - } -} - -void NNS_G2dSetMCAnimationSpeed (NNSG2dMultiCellAnimation * pMultiCellAnim, fx32 speed) { - NNS_G2D_NULL_ASSERT(pMultiCellAnim); - { - NNSG2dMultiCellInstance * pMCellInst = &pMultiCellAnim->multiCellInstance; - - if (pMCellInst->mcType == NNS_G2D_MCTYPE_SHARE_CELLANIM) { - u16 i; - - NNSG2dMCCellAnimation * pCellAnimArray = pMCellInst->pCellAnimInstasnces; - NNS_G2dSetAnimCtrlSpeed(&pMultiCellAnim->animCtrl, speed); - - for ( i = 0; i < pMCellInst->pCurrentMultiCell->numCellAnim; i++ ) { - NNS_G2dSetCellAnimationSpeed(&pCellAnimArray[i].cellAnim, speed); - } - } else { - u16 i = 0; - NNSG2dNode * pNode = (NNSG2dNode *)pMultiCellAnim->multiCellInstance.pCellAnimInstasnces; - - NNS_G2D_NULL_ASSERT(pMultiCellAnim); - - NNS_G2dSetAnimCtrlSpeed(&pMultiCellAnim->animCtrl, speed); - - for ( i = 0; i < pMCellInst->pCurrentMultiCell->numNodes; i++ ) { - NNS_G2D_ASSERT(pNode[i].type == NNS_G2D_NODETYPE_CELL); - NNS_G2dSetCellAnimationSpeed((NNSG2dCellAnimation *)pNode[i].pContent, speed); - } - } - } -} - -void NNS_G2dResetMCCellAnimationAll (NNSG2dMultiCellInstance * pMCInst) { - u16 i = 0; - NNS_G2D_NULL_ASSERT(pMCInst); - { - if (pMCInst->mcType == NNS_G2D_MCTYPE_SHARE_CELLANIM) { - NNSG2dMCCellAnimation * pCellAnimArray = pMCInst->pCellAnimInstasnces; - - for ( i = 0; i < pMCInst->pCurrentMultiCell->numCellAnim; i++ ) { - NNS_G2dSetCellAnimationCurrentFrame(&pCellAnimArray[i].cellAnim, 0); - } - } else { - NNSG2dNode * pNode = (NNSG2dNode *)pMCInst->pCellAnimInstasnces; - - for ( i = 0; i < pMCInst->pCurrentMultiCell->numNodes; i++ ) { - NNS_G2D_ASSERT(pNode[i].type == NNS_G2D_NODETYPE_CELL); - NNS_G2dSetCellAnimationCurrentFrame((NNSG2dCellAnimation *)pNode[i].pContent, 0); - } - } - } -} - -void NNS_G2dStartMCCellAnimationAll (NNSG2dMultiCellInstance * pMCInst) { - u16 i = 0; - NNSG2dAnimController * pAnmCtrl = NULL; - NNS_G2D_NULL_ASSERT(pMCInst); - { - if (pMCInst->mcType == NNS_G2D_MCTYPE_SHARE_CELLANIM) { - NNSG2dMCCellAnimation * pCellAnimArray = pMCInst->pCellAnimInstasnces; - - for ( i = 0; i < pMCInst->pCurrentMultiCell->numCellAnim; i++ ) { - pAnmCtrl = NNS_G2dGetCellAnimationAnimCtrl(&pCellAnimArray[i].cellAnim); - - NNS_G2dStartAnimCtrl(pAnmCtrl); - } - } else { - NNSG2dNode * pNode = (NNSG2dNode *)pMCInst->pCellAnimInstasnces; - - for ( i = 0; i < pMCInst->pCurrentMultiCell->numNodes; i++ ) { - NNS_G2D_ASSERT(pNode[i].type == NNS_G2D_NODETYPE_CELL); - pAnmCtrl = NNS_G2dGetCellAnimationAnimCtrl((NNSG2dCellAnimation *)pNode[i].pContent); - - NNS_G2dStartAnimCtrl(pAnmCtrl); - } - } - } -} - -void NNS_G2dRestartMCAnimation (NNSG2dMultiCellAnimation * pMultiCellAnim) { - u16 i = 0; - NNSG2dMultiCellInstance * pMCInst = &pMultiCellAnim->multiCellInstance; - NNSG2dAnimController * pMCAnmCtrl = NNS_G2dGetMCAnimAnimCtrl(pMultiCellAnim); - - pMultiCellAnim->totalVideoFrame = 0; - - NNS_G2dSetAnimSequenceToMCAnimation( - pMultiCellAnim, - NNS_G2dGetAnimCtrlCurrentAnimSequence(pMCAnmCtrl) - ); - NNS_G2dStartAnimCtrl(pMCAnmCtrl); - - NNS_G2D_NULL_ASSERT(pMCInst); - { - if (pMCInst->mcType == NNS_G2D_MCTYPE_SHARE_CELLANIM) { - NNSG2dMCCellAnimation * pCellAnimArray = pMCInst->pCellAnimInstasnces; - - for ( i = 0; i < pMCInst->pCurrentMultiCell->numCellAnim; i++ ) { - NNS_G2dRestartCellAnimation(&pCellAnimArray[i].cellAnim); - } - } else { - NNSG2dNode * pNode = (NNSG2dNode *)pMCInst->pCellAnimInstasnces; - - for ( i = 0; i < pMCInst->pCurrentMultiCell->numNodes; i++ ) { - NNS_G2D_ASSERT(pNode[i].type == NNS_G2D_NODETYPE_CELL); - - NNS_G2dRestartCellAnimation((NNSG2dCellAnimation *)pNode[i].pContent); - } - } - } -} - -u16 NNS_G2dMakeSimpleMultiCellToOams (GXOamAttr * pDstOams, u16 numDstOams, const NNSG2dMultiCellInstance * pMCellInst, const MtxFx22 * pMtxSR, const NNSG2dFVec2 * pBaseTrans, u16 affineIndex, BOOL bDoubleAffine) { - if (pMCellInst->mcType == NNS_G2D_MCTYPE_SHARE_CELLANIM) { - return MakeSimpleMultiCellToOams_ShareCellAnims_( - pDstOams, - numDstOams, - pMCellInst, - pMtxSR, - pBaseTrans, - affineIndex, - bDoubleAffine - ); - } else { - return MakeSimpleMultiCellToOams_( - pDstOams, - numDstOams, - pMCellInst, - pMtxSR, - pBaseTrans, - affineIndex, - bDoubleAffine - ); - } -} - -void NNS_G2dTraverseMCCellAnims (NNSG2dMultiCellInstance * pMCellInst, NNSG2dMCTraverseCellAnimCallBack pCBFunc, u32 userParamater) { - BOOL bContinue = TRUE; - if (pMCellInst->mcType == NNS_G2D_MCTYPE_SHARE_CELLANIM) { - u16 i; - NNSG2dMCCellAnimation * pCellAnimArray = pMCellInst->pCellAnimInstasnces; - - for ( i = 0; i < pMCellInst->pCurrentMultiCell->numCellAnim; i++ ) { - bContinue = (*pCBFunc)(userParamater, &pCellAnimArray[i].cellAnim, i); - - if (!bContinue) { - break; - } - } - } else { - u16 i; - NNSG2dNode * pNodeArray = NULL; - - NNS_G2D_NULL_ASSERT(pMCellInst); - NNS_G2D_NULL_ASSERT(pMCellInst->pCurrentMultiCell); - - pNodeArray = (NNSG2dNode *)(pMCellInst->pCellAnimInstasnces); - - for ( i = 0; i < pMCellInst->pCurrentMultiCell->numNodes; i++ ) { - NNS_G2D_ASSERT(pNodeArray[i].type == NNS_G2D_NODETYPE_CELL); - bContinue = (*pCBFunc)(userParamater, (NNSG2dCellAnimation *)pNodeArray[i].pContent, i); - - if (!bContinue) { - break; - } - } - } -} - -void NNS_G2dTraverseMCNodes (NNSG2dMultiCellInstance * pMCellInst, NNSG2dMCTraverseNodeCallBack pCBFunc, u32 userParamater) { - NNS_G2D_NULL_ASSERT(pMCellInst); - NNS_G2D_NULL_ASSERT(pMCellInst->pCurrentMultiCell); - { - u16 i; - const NNSG2dMultiCellData * pMCData = pMCellInst->pCurrentMultiCell; - const u16 numNode = pMCData->numNodes; - BOOL bContinue = TRUE; - - if (pMCellInst->mcType == NNS_G2D_MCTYPE_SHARE_CELLANIM) { - NNSG2dMCCellAnimation * pMCCellAnimArray - = (NNSG2dMCCellAnimation *)pMCellInst->pCellAnimInstasnces; - - for ( i = 0; i < numNode; i++ ) { - const NNSG2dMultiCellHierarchyData * pNodeData = &pMCData->pHierDataArray[i]; - - const u16 cellAnimIdx = NNSi_G2dGetMC2NodeCellAinmIdx(pNodeData); - - bContinue = (*pCBFunc)( - userParamater, - pNodeData, - &pMCCellAnimArray[cellAnimIdx].cellAnim, - i - ); - if (!bContinue) { - break; - } - } - } else { - const NNSG2dNode * pNode - = (const NNSG2dNode *)pMCellInst->pCellAnimInstasnces; - - for ( i = 0; i < numNode; i++ ) { - const NNSG2dMultiCellHierarchyData * pNodeData = &pMCData->pHierDataArray[i]; - - bContinue = (*pCBFunc)( - userParamater, - pNodeData, - pNode[i].pContent, - i - ); - - if (!bContinue) { - break; - } - } - } - } -} - -void NNS_G2dInitMCAnimation (NNSG2dMultiCellAnimation * pMultiCellAnim, NNSG2dNode * pNodeArray, NNSG2dCellAnimation * pCellAnim, u16 numNode, const NNSG2dCellAnimBankData * pAnimBank, const NNSG2dCellDataBank * pCellDataBank, const NNSG2dMultiCellDataBank * pMultiCellDataBank) { - InitMCAnimation_( - pMultiCellAnim, - pNodeArray, - pCellAnim, - numNode, - pAnimBank, - pCellDataBank, - pMultiCellDataBank - ); -} - -void NNS_G2dInitMCInstance (NNSG2dMultiCellInstance * pMultiCell, NNSG2dNode * pNodeArray, NNSG2dCellAnimation * pCellAnim, u16 numNode, const NNSG2dCellAnimBankData * pAnimBank, const NNSG2dCellDataBank * pCellDataBank) { - InitMCInstance_ - ( - pMultiCell, - pNodeArray, - pCellAnim, - numNode, - pAnimBank, - pCellDataBank - ); -} - -BOOL NNS_G2dSetMCDataToMCInstance (NNSG2dMultiCellInstance * pMCInst, const NNSG2dMultiCellData * pMcData) { - SetMCDataToMCInstanceImpl_(pMCInst, pMcData, 0); - return TRUE; -} diff --git a/subprojects/NitroSystem/libraries/g2d/src/g2d_Node.c b/subprojects/NitroSystem/libraries/g2d/src/g2d_Node.c deleted file mode 100644 index 1faa573da7..0000000000 --- a/subprojects/NitroSystem/libraries/g2d/src/g2d_Node.c +++ /dev/null @@ -1,14 +0,0 @@ -#include -#include -#include - -void NNSi_G2dInitializeNode (NNSG2dNode * pNode, NNSG2dNodeType type) { - NNS_G2D_NULL_ASSERT(pNode); - NNS_G2D_ASSERT_NODETYPE_VALID(type); - - pNode->pContent = NULL; - pNode->type = type; - pNode->bVisible = TRUE; - - NNSi_G2dSrtcInitControl(&pNode->srtCtrl, NNS_G2D_SRTCONTROLTYPE_SRT); -} diff --git a/subprojects/NitroSystem/libraries/g2d/src/g2d_OAM.c b/subprojects/NitroSystem/libraries/g2d/src/g2d_OAM.c deleted file mode 100644 index e230da3ab6..0000000000 --- a/subprojects/NitroSystem/libraries/g2d/src/g2d_OAM.c +++ /dev/null @@ -1,815 +0,0 @@ -#include -#include -#include -#include - -#include "include/g2d_Internal.h" -#include "include/g2di_Dma.h" - -NNS_G2D_DEFINE_NNSI_OBJSIZEWTBL; -NNS_G2D_DEFINE_NNSI_OBJSIZEHTBL; - -#define OAM_SETTING_INVISIBLE 192 - -#define NUM_HW_OAM_ATTR 128 -#define NUM_HW_OAM_AFFINE 32 -#define NUM_OAM_TYPES 3 - -#define OAM_NOT_USED 0xFFFF - -#define GX_AFFINE_SIZE sizeof(GXOamAffine) -#define GX_OAMATTR_SIZE sizeof(GXOamAttr) -#define OAMATTR_SIZE sizeof(u16) * 3 - -typedef void (OBJLoadFunction)(const void * pSrc, u32 offset, u32 szByte); - -typedef struct OamAttributeCache { - u16 reservationTable[NUM_HW_OAM_ATTR]; - GXOamAttr oamBuffer[NUM_HW_OAM_ATTR]; -} OamAttributeCache; - -typedef struct OamAffineCache { - u16 reservationTable[NUM_HW_OAM_AFFINE]; -} OamAffineCache; - -typedef struct OamCache { - OamAttributeCache attributeCache; - OamAffineCache affineCache; -} OamCache; - -static OamCache oamCache_[NUM_OAM_TYPES]; -static u16 numRegisterdInstance_ = 0x0; - -static NNS_G2D_INLINE BOOL IsManageAreaValid_ (const NNSG2dOAMManageArea * pArea) { - NNS_G2D_NULL_ASSERT(pArea); - - return (BOOL)((pArea->currentIdx <= pArea->toIdx + 1) && - (pArea->fromIdx <= pArea->toIdx)); -} - -static NNS_G2D_INLINE OamCache * GetOamCachePtr_ (NNSG2dOamType type) { - ASSERT_OAMTYPE_VALID(type); - return &oamCache_[type]; -} - -static NNS_G2D_INLINE u16 * GetOamReservationTblPtr_ (NNSG2dOamType type) { - ASSERT_OAMTYPE_VALID(type); - { - OamCache * pOamCache = GetOamCachePtr_(type); - NNS_G2D_NULL_ASSERT(pOamCache); - - return pOamCache->attributeCache.reservationTable; - } -} - -static NNS_G2D_INLINE u16 * GetAffineReservationTblPtr_ (NNSG2dOamType type) { - ASSERT_OAMTYPE_VALID(type); - { - OamCache * pOamCache = GetOamCachePtr_(type); - NNS_G2D_NULL_ASSERT(pOamCache); - - return pOamCache->affineCache.reservationTable; - } -} - -static NNS_G2D_INLINE GXOamAttr * GetOamBufferPtr_ (NNSG2dOamType type, u16 index) { - ASSERT_OAMTYPE_VALID(type); - { - OamCache * pOamCache = GetOamCachePtr_(type); - NNS_G2D_NULL_ASSERT(pOamCache); - - return pOamCache->attributeCache.oamBuffer + index; - } -} - -static NNS_G2D_INLINE GXOamAffine * GetAffineBufferPtr_ (NNSG2dOamType type, u16 index) { - ASSERT_OAMTYPE_VALID(type); - NNS_G2D_MINMAX_ASSERT(index, 0, NUM_HW_OAM_AFFINE); - - { - GXOamAffine * pAff = (GXOamAffine *)GetOamBufferPtr_(type, 0); - NNS_G2D_NULL_ASSERT(pAff); - - return pAff + index; - } -} - -static NNS_G2D_INLINE void GetAffineParams_ (NNSG2dOamType type, u16 idx, MtxFx22 * pMtx) { - ASSERT_OAMTYPE_VALID(type); - NNS_G2D_MINMAX_ASSERT(idx, 0, NUM_HW_OAM_AFFINE); - NNS_G2D_NULL_ASSERT(pMtx); - - { - GXOamAffine * pAff = GetAffineBufferPtr_(type, idx); - NNS_G2D_NULL_ASSERT(pAff); - - pMtx->_00 = (s16)(pAff->PA << 4); - pMtx->_01 = (s16)(pAff->PB << 4); - pMtx->_10 = (s16)(pAff->PC << 4); - pMtx->_11 = (s16)(pAff->PD << 4); - } -} - -static NNS_G2D_INLINE BOOL IsOamNotUsed_ (u16 * pResvTblHead, u16 from, u16 to) { - const u16 * pCursor = pResvTblHead + from; - const u16 * pEnd = pResvTblHead + to; - - while (pCursor <= pEnd) { - if (*pCursor != OAM_NOT_USED) { - return FALSE; - } - pCursor++; - } - return TRUE; -} - -static NNS_G2D_INLINE u16 GetNewGUID_ () { - return numRegisterdInstance_++; -} - -static NNS_G2D_INLINE void DoReserveArea_ (u16 * pResvTblHead, u16 from, u16 to, u16 ownerGUID) { - NNS_G2D_NULL_ASSERT(pResvTblHead); - NNS_G2D_ASSERT(from <= to); - - NNS_G2D_ASSERT(IsOamNotUsed_(pResvTblHead, from, to)); - - NNSI_G2D_DEBUGMSG0( - "Oam Reservation occur... from %d to %d by GUID %d \n", - from, - to, - ownerGUID - ); - - MI_CpuFill16(pResvTblHead + from, ownerGUID, sizeof(u16) * (u32)(to - from + 1)); -} - -static NNS_G2D_INLINE void DoRestoreArea_ (u16 * pResvTblHead, u16 from, u16 to) { - NNS_G2D_NULL_ASSERT(pResvTblHead); - NNS_G2D_ASSERT(from <= to); - - NNSI_G2D_DEBUGMSG0("Oam Restoration occur... from %d to %d \n", from, to); - - MI_CpuFill16(pResvTblHead + from, OAM_NOT_USED, sizeof(u16) * (u32)(to - from + 1)); -} - -static NNS_G2D_INLINE u16 GetCapacity_ (const NNSG2dOAMManageArea * pArea) { - NNS_G2D_NULL_ASSERT(pArea); - - if (IsManageAreaValid_(pArea)) { - return (u16)((int)pArea->toIdx - pArea->currentIdx + 1); - } else { - return 0; - } -} - -static NNS_G2D_INLINE u16 GetNumOamUsed_ (const NNSG2dOAMManageArea * pArea) { - NNS_G2D_NULL_ASSERT(pArea); - - if (IsManageAreaValid_(pArea)) { - return (u16)((int)pArea->currentIdx - pArea->fromIdx); - } else { - return 0; - } -} - -static NNS_G2D_INLINE BOOL HasEnoughCapacity_ (const NNSG2dOAMManageArea * pArea, u16 num) { - NNS_G2D_NULL_ASSERT(pArea); - NNS_G2D_ASSERT(num != 0); - - return (BOOL)(GetCapacity_(pArea) >= num); -} - -static NNS_G2D_INLINE GXOamAttr * GetOamCurrentPtr_ (NNSG2dOamManagerInstance * pMan) { - NNS_G2D_NULL_ASSERT(pMan); - NNS_G2D_ASSERT(IsManageAreaValid_(&pMan->managedAttrArea)); - NNS_G2D_ASSERT(pMan->managedAttrArea.toIdx < NUM_HW_OAM_ATTR); - { - GXOamAttr * pret = GetOamBufferPtr_( - pMan->type, - pMan->managedAttrArea.currentIdx - ); - - NNS_G2D_NULL_ASSERT(pret); - - return pret; - } -} - -static NNS_G2D_INLINE GXOamAttr * GetOamFromPtr_ (NNSG2dOamManagerInstance * pMan) { - NNS_G2D_NULL_ASSERT(pMan); - { - GXOamAttr * pFrom = GetOamBufferPtr_( - pMan->type, - pMan->managedAttrArea.fromIdx - ); - NNS_G2D_NULL_ASSERT(pFrom); - - return pFrom; - } -} - -static NNS_G2D_INLINE u32 GetSizeOfManageArea_ (const NNSG2dOAMManageArea * pArea) { - NNS_G2D_NULL_ASSERT(pArea); - - if (IsManageAreaValid_(pArea)) { - return (u32)(GX_OAMATTR_SIZE * (u16)(pArea->toIdx - pArea->fromIdx + 1)); - } else { - return 0; - } -} - -static NNS_G2D_INLINE void SetAffineParams_ (NNSG2dOamType type, const MtxFx22 * mtx, u16 idx) { - ASSERT_OAMTYPE_VALID(type); - NNS_G2D_NULL_ASSERT(mtx); - NNS_G2D_MINMAX_ASSERT(idx, 0, NUM_HW_OAM_AFFINE); - - { - GXOamAffine * pAff = GetAffineBufferPtr_(type, idx); - NNS_G2D_NULL_ASSERT(pAff); - - G2_SetOBJAffine(pAff, mtx); - } -} - -static void DrawBy3DGraphicsEngine_ (const GXOamAttr * pOam, u16 numOam, const NNSG2dImageAttr * pTexImageAttr, u32 texBaseAddr, u32 pltBaseAddr) { - MtxFx22 mtx; - u16 affineIdx; - s16 posX; - s16 posY; - s16 posZ; - - NNS_G2D_NULL_ASSERT(pOam); - NNS_G2D_NULL_ASSERT(pTexImageAttr); - NNS_G2D_MINMAX_ASSERT(numOam, 0, NUM_HW_OAM_ATTR); - - G3_PushMtx(); - { - int i = 0; - for ( i = 0; i < numOam; i++ ) { - posX = NNSi_G2dRepeatXinScreenArea(NNSi_G2dGetOamX(&pOam[i])); - posY = NNSi_G2dRepeatYinScreenArea(NNSi_G2dGetOamY(&pOam[i])); - posZ = -1; - - G3_Identity(); - - if (NNSi_G2dIsRSEnable(&pOam[i])) { - affineIdx = NNSi_G2dGetAffineIdx(&pOam[i]); - NNS_G2D_MINMAX_ASSERT(affineIdx, 0, NUM_HW_OAM_AFFINE); - GetAffineParams_(NNS_G2D_OAMTYPE_SOFTWAREEMULATION, affineIdx, &mtx); - - NNS_G2dDrawOneOam3DDirectWithPosAffineFast(posX, posY, posZ, &pOam[i], pTexImageAttr, texBaseAddr, pltBaseAddr, &mtx); - } else { - NNS_G2dDrawOneOam3DDirectWithPosFast(posX, posY, posZ, &pOam[i], pTexImageAttr, texBaseAddr, pltBaseAddr); - } - } - } - G3_PopMtx(1); -} - -static NNS_G2D_INLINE void ClearOamByDefaultValue_ (NNSG2dOamType type) { - ASSERT_OAMTYPE_VALID(type); - - MI_CpuFill16( - GetOamBufferPtr_(type, 0), - OAM_SETTING_INVISIBLE, - GX_OAMATTR_SIZE * NUM_HW_OAM_ATTR - ); -} - -static NNS_G2D_INLINE void SetOamReservationTblNotUsed_ (NNSG2dOamType type) { - ASSERT_OAMTYPE_VALID(type); - - DoRestoreArea_( - GetOamReservationTblPtr_(type), - 0, - NUM_HW_OAM_ATTR - 1 - ); -} - -static NNS_G2D_INLINE void SetAffineReservationTblNotUsed_ (NNSG2dOamType type) { - ASSERT_OAMTYPE_VALID(type); - - DoRestoreArea_( - GetAffineReservationTblPtr_(type), - 0, - NUM_HW_OAM_AFFINE - 1 - ); -} - -static NNS_G2D_INLINE void CpuLoadOAMMain_ (const void * pSrc, u32 offset, u32 szByte) { - NNS_G2D_NULL_ASSERT(pSrc); - NNS_G2D_ASSERT(offset + szByte <= HW_OAM_SIZE); - - MI_CpuCopy16(pSrc, (void *)(HW_OAM + offset), szByte); -} - -static NNS_G2D_INLINE void CpuLoadOAMSub_ (const void * pSrc, u32 offset, u32 szByte) { - NNS_G2D_NULL_ASSERT(pSrc); - NNS_G2D_ASSERT(offset + szByte <= HW_OAM_SIZE); - - MI_CpuCopy16(pSrc, (void *)(HW_DB_OAM + offset), szByte); -} - -static NNS_G2D_INLINE OBJLoadFunction * GetOBJLoadFunction_ (NNSG2dOamType type) { - static OBJLoadFunction * funcTbl[] = { - CpuLoadOAMMain_, - CpuLoadOAMSub_, - NULL, - NULL, - NULL, - }; - - return funcTbl[type]; -} - -static NNS_G2D_INLINE void LoadOneAffine_ (const GXOamAffine * pAff, u32 offset, OBJLoadFunction * pOBJLoadFunc) { - offset += OAMATTR_SIZE; - - (*pOBJLoadFunc)(&pAff->PA, offset + GX_OAMATTR_SIZE * 0, sizeof(u16)); - (*pOBJLoadFunc)(&pAff->PB, offset + GX_OAMATTR_SIZE * 1, sizeof(u16)); - (*pOBJLoadFunc)(&pAff->PC, offset + GX_OAMATTR_SIZE * 2, sizeof(u16)); - (*pOBJLoadFunc)(&pAff->PD, offset + GX_OAMATTR_SIZE * 3, sizeof(u16)); -} - -static NNS_G2D_INLINE void LoadOamAndAffineFast_ (NNSG2dOamType type, u16 fromIdx, u16 toIdx) { - GXOamAttr * pFrom = GetOamBufferPtr_(type, fromIdx); - const u16 szByte = (u16)(GX_OAMATTR_SIZE * (toIdx - fromIdx + 1)); - u16 offset = (u16)(GX_OAMATTR_SIZE * fromIdx); - - DC_FlushRange(pFrom, szByte); - - switch (type) { - case NNS_G2D_OAMTYPE_MAIN: - GX_LoadOAM(pFrom, offset, szByte); - break; - case NNS_G2D_OAMTYPE_SUB: - GXS_LoadOAM(pFrom, offset, szByte); - break; - default: - NNS_G2D_ASSERT(FALSE); - break; - } -} - -static NNS_G2D_INLINE void LoadOam_ (NNSG2dOamType type, u16 fromIdx, u16 toIdx) { - GXOamAttr * pFrom = GetOamBufferPtr_(type, fromIdx); - const u16 numArea = (u16)(toIdx - fromIdx + 1); - u16 offset = (u16)(GX_OAMATTR_SIZE * fromIdx); - u16 i; - OBJLoadFunction * pOBJLoadFunc = GetOBJLoadFunction_(type); - - for ( i = 0; i < numArea; i++ ) { - (*pOBJLoadFunc)(pFrom, offset, OAMATTR_SIZE); - - offset += GX_OAMATTR_SIZE; - pFrom++; - } -} - -static NNS_G2D_INLINE void LoadAffine_ (NNSG2dOamType type, u16 fromIdx, u16 toIdx) { - GXOamAffine * pFrom = GetAffineBufferPtr_(type, fromIdx); - const u16 numArea = (u16)(toIdx - fromIdx + 1); - u16 offset = (u16)(GX_AFFINE_SIZE * fromIdx); - u16 i; - OBJLoadFunction * pOBJLoadFunc = GetOBJLoadFunction_(type); - - for ( i = 0; i < numArea; i++ ) { - LoadOneAffine_(pFrom, offset, pOBJLoadFunc); - - offset += GX_AFFINE_SIZE; - pFrom++; - } -} - -static NNS_G2D_INLINE void ResetOam_ (NNSG2dOamType type, u16 fromIdx, u16 toIdx) { - GXOamAttr * pFrom = GetOamBufferPtr_(type, fromIdx); - const u16 numArea = (u16)(toIdx - fromIdx + 1); - u16 i; - - for ( i = 0; i < numArea; i++ ) { - *((u16 *)pFrom) = OAM_SETTING_INVISIBLE; - pFrom++; - } -} - -static NNS_G2D_INLINE void ResetAffine_ (NNSG2dOamType type, u16 fromIdx, u16 toIdx) { - GXOamAffine * pFrom = GetAffineBufferPtr_(type, fromIdx); - const u16 numArea = (u16)(toIdx - fromIdx + 1); - u16 i; - - for ( i = 0; i < numArea; i++ ) { - pFrom->PA = OAM_SETTING_INVISIBLE; - pFrom->PB = OAM_SETTING_INVISIBLE; - pFrom->PC = OAM_SETTING_INVISIBLE; - pFrom->PD = OAM_SETTING_INVISIBLE; - pFrom++; - } -} - -void * NNSi_G2dGetOamManagerInternalBufferForDebug (NNSG2dOamType type) { - return (void *)GetOamBufferPtr_(type, 0); -} - -void NNS_G2dInitOamManagerModule () { - ClearOamByDefaultValue_(NNS_G2D_OAMTYPE_MAIN); - ClearOamByDefaultValue_(NNS_G2D_OAMTYPE_SUB); - ClearOamByDefaultValue_(NNS_G2D_OAMTYPE_SOFTWAREEMULATION); - - NNSI_G2D_DEBUGMSG0("Initialize OamBuffer ... done.\n"); - - SetOamReservationTblNotUsed_(NNS_G2D_OAMTYPE_MAIN); - SetOamReservationTblNotUsed_(NNS_G2D_OAMTYPE_SUB); - SetOamReservationTblNotUsed_(NNS_G2D_OAMTYPE_SOFTWAREEMULATION); - - NNSI_G2D_DEBUGMSG0("Initialize Oam reservation table ... done.\n"); - - SetAffineReservationTblNotUsed_(NNS_G2D_OAMTYPE_MAIN); - SetAffineReservationTblNotUsed_(NNS_G2D_OAMTYPE_SUB); - SetAffineReservationTblNotUsed_(NNS_G2D_OAMTYPE_SOFTWAREEMULATION); - - NNSI_G2D_DEBUGMSG0("Initialize Oam affine reservation table ... done.\n"); - - NNSI_G2D_DEBUGMSG0("Initialize OamManager ... done.\n"); -} - -BOOL NNS_G2dGetNewManagerInstance (NNSG2dOamManagerInstance * pMan, u16 from, u16 to, NNSG2dOamType type) { - ASSERT_OAMTYPE_VALID(type); - NNS_G2D_ASSERT(from <= to); - NNS_G2D_ASSERT(to < NUM_HW_OAM_ATTR); - NNS_G2D_NULL_ASSERT(pMan); - - { - u16 * pReserveTbl = GetOamReservationTblPtr_(type); - NNS_G2D_NULL_ASSERT(pReserveTbl); - - if (IsOamNotUsed_(pReserveTbl, from, to)) { - pMan->GUID = GetNewGUID_(); - pMan->managedAttrArea.fromIdx = from; - pMan->managedAttrArea.toIdx = to; - pMan->managedAttrArea.currentIdx = from; - - pMan->managedAffineArea.fromIdx = NUM_HW_OAM_AFFINE; - pMan->managedAffineArea.toIdx = 0; - - pMan->type = type; - pMan->bFastTransferEnable = FALSE; - - DoReserveArea_(pReserveTbl, from, to, pMan->GUID); - - return TRUE; - } else { - OS_Warning("Failure in NNS_G2dGetNewManagerInstance().\n The manageArea that you specified has been used by someone."); - return FALSE; - } - } -} - -BOOL NNS_G2dInitManagerInstanceAffine (NNSG2dOamManagerInstance * pMan, u16 from, u16 to) { - NNS_G2D_NULL_ASSERT(pMan); - NNS_G2D_ASSERT(from <= to); - NNS_G2D_ASSERT(to < NUM_HW_OAM_AFFINE); - - { - u16 * pReserveTbl = GetAffineReservationTblPtr_(pMan->type); - NNS_G2D_NULL_ASSERT(pReserveTbl); - - if (IsOamNotUsed_(pReserveTbl, from, to)) { - pMan->managedAffineArea.fromIdx = from; - pMan->managedAffineArea.toIdx = to; - pMan->managedAffineArea.currentIdx = from; - pMan->bFastTransferEnable = FALSE; - - DoReserveArea_(pReserveTbl, from, to, pMan->GUID); - - return TRUE; - } else { - OS_Warning("Failure in NNS_G2dInitManagerInstanceAffine().\n The manageArea that you specified has been used by someone."); - return FALSE; - } - } -} - -BOOL NNS_G2dGetNewOamManagerInstance (NNSG2dOamManagerInstance * pMan, u16 fromOBJ, u16 numOBJ, u16 fromAffine, u16 numAffine, NNSG2dOamType type) { - ASSERT_OAMTYPE_VALID(type); - NNS_G2D_NON_ZERO_ASSERT(numOBJ); - NNS_G2D_ASSERT(numOBJ <= NUM_HW_OAM_ATTR); - NNS_G2D_ASSERT(numAffine <= NUM_HW_OAM_AFFINE); - NNS_G2D_NULL_ASSERT(pMan); - - { - u16 * pReserveTbl = GetOamReservationTblPtr_(type); - const u16 toOBJ = (u16)(fromOBJ + (numOBJ - 1)); - - NNS_G2D_NULL_ASSERT(pReserveTbl); - - if (IsOamNotUsed_(pReserveTbl, fromOBJ, toOBJ)) { - pMan->GUID = GetNewGUID_(); - pMan->managedAttrArea.fromIdx = fromOBJ; - pMan->managedAttrArea.toIdx = toOBJ; - pMan->managedAttrArea.currentIdx = fromOBJ; - - DoReserveArea_(pReserveTbl, fromOBJ, toOBJ, pMan->GUID); - } else { - OS_Warning("Failure in NNS_G2dGetNewManagerInstance().\n The manageArea that you specified has been used by someone."); - return FALSE; - } - } - - { - u16 * pReserveTbl = GetAffineReservationTblPtr_(type); - NNS_G2D_NULL_ASSERT(pReserveTbl); - - if (numAffine == 0) { - pMan->managedAffineArea.fromIdx = NUM_HW_OAM_AFFINE; - pMan->managedAffineArea.toIdx = 0; - pMan->managedAffineArea.currentIdx = pMan->managedAffineArea.fromIdx; - } else { - const u16 toAffine = (u16)(fromAffine + (numAffine - 1)); - - if (IsOamNotUsed_(pReserveTbl, fromAffine, toAffine)) { - pMan->managedAffineArea.fromIdx = fromAffine; - pMan->managedAffineArea.toIdx = toAffine; - pMan->managedAffineArea.currentIdx = fromAffine; - - DoReserveArea_(pReserveTbl, fromAffine, toAffine, pMan->GUID); - } else { - OS_Warning("Failure in NNS_G2dGetNewManagerInstanceNew().\n The manageArea that you specified has been used by someone."); - return FALSE; - } - } - } - - pMan->bFastTransferEnable = FALSE; - pMan->type = type; - - return TRUE; -} - -BOOL NNS_G2dGetNewOamManagerInstanceAsFastTransferMode (NNSG2dOamManagerInstance * pMan, u16 fromOBJ, u16 numOBJ, NNSG2dOamType type) { - ASSERT_OAMTYPE_VALID(type); - NNS_G2D_NON_ZERO_ASSERT(numOBJ); - NNS_G2D_ASSERT(numOBJ <= NUM_HW_OAM_ATTR); - NNS_G2D_NULL_ASSERT(pMan); - NNS_G2D_ASSERT(fromOBJ % 4 == 0); - NNS_G2D_ASSERT(numOBJ % 4 == 0); - - { - u16 * pReserveTbl = GetOamReservationTblPtr_(type); - const u16 toOBJ = (u16)(fromOBJ + (numOBJ - 1)); - - NNS_G2D_NULL_ASSERT(pReserveTbl); - - if (IsOamNotUsed_(pReserveTbl, fromOBJ, toOBJ)) { - pMan->GUID = GetNewGUID_(); - pMan->managedAttrArea.fromIdx = fromOBJ; - pMan->managedAttrArea.toIdx = toOBJ; - pMan->managedAttrArea.currentIdx = fromOBJ; - - DoReserveArea_(pReserveTbl, fromOBJ, toOBJ, pMan->GUID); - } else { - OS_Warning("Failure in NNS_G2dGetNewOamManagerInstanceAsFastTransferMode().\n The manageArea that you specified has been used by someone."); - return FALSE; - } - } - - { - const u16 fromAffine = (u16)(fromOBJ / 4); - const u16 numAffine = (u16)(numOBJ / 4); - const u16 toAffine = (u16)(fromAffine + (numAffine - 1)); - - u16 * pReserveTbl = GetAffineReservationTblPtr_(type); - NNS_G2D_NULL_ASSERT(pReserveTbl); - - if (IsOamNotUsed_(pReserveTbl, fromAffine, toAffine)) { - pMan->managedAffineArea.fromIdx = fromAffine; - pMan->managedAffineArea.toIdx = toAffine; - pMan->managedAffineArea.currentIdx = fromAffine; - - DoReserveArea_(pReserveTbl, fromAffine, toAffine, pMan->GUID); - } else { - OS_Warning("Failure in NNS_G2dGetNewManagerInstanceNew().\n The manageArea that you specified has been used by someone."); - return FALSE; - } - } - - pMan->bFastTransferEnable = TRUE; - pMan->type = type; - - return TRUE; -} - -BOOL NNS_G2dEntryOamManagerOam (NNSG2dOamManagerInstance * pMan, const GXOamAttr * pOam, u16 num) { - NNS_G2D_NULL_ASSERT(pMan); - NNS_G2D_NULL_ASSERT(pOam); - NNS_G2D_ASSERT(num != 0); - - if (HasEnoughCapacity_(&pMan->managedAttrArea, num)) { - int i = 0; - GXOamAttr * pOamAttr = GetOamCurrentPtr_(pMan); - for ( i = 0; i < num; i++ ) { - pOamAttr[i].attr0 = pOam->attr0; - pOamAttr[i].attr1 = pOam->attr1; - pOamAttr[i].attr2 = pOam->attr2; - - pMan->managedAttrArea.currentIdx++; - pOam++; - } - - NNSI_G2D_DEBUGMSG1( - "New Oam entry occur... from %d to %d for GUID %d\n", - pMan->currentPos, - pMan->currentPos + num, - pMan->GUID - ); - - return TRUE; - } else { - NNSI_G2D_DEBUGMSG0("The OamBuffer has no capacity enough to store new Oam."); - return FALSE; - } -} - -BOOL NNS_G2dEntryOamManagerOamWithAffineIdx (NNSG2dOamManagerInstance * pMan, const GXOamAttr * pOam, u16 affineIdx) { - NNS_G2D_NULL_ASSERT(pMan); - NNS_G2D_NULL_ASSERT(pOam); - - if (HasEnoughCapacity_(&pMan->managedAttrArea, 1)) { - GXOamAttr * pOamAttr = GetOamCurrentPtr_(pMan); - - pOamAttr->attr0 = pOam->attr0; - pOamAttr->attr1 = pOam->attr1; - pOamAttr->attr2 = pOam->attr2; - - if (NNS_G2D_OAM_AFFINE_IDX_NONE != affineIdx) { - { - if (pOamAttr->rsMode & 0x1) { - pOamAttr->rsParam = affineIdx; - } - } - } - - pMan->managedAttrArea.currentIdx++; - return TRUE; - } else { - NNSI_G2D_DEBUGMSG0("The OamBuffer has no capacity enough to store new Oam."); - return FALSE; - } -} - -void NNS_G2dSetOamManagerAffine (NNSG2dOamType type, const MtxFx22 * mtx, u16 idx) { - ASSERT_OAMTYPE_VALID(type); - NNS_G2D_NULL_ASSERT(mtx); - NNS_G2D_MINMAX_ASSERT(idx, 0, NUM_HW_OAM_AFFINE); - - SDK_WARNING( - IsOamNotUsed_(GetAffineReservationTblPtr_(type), idx, idx), - "An invalid affine param setting to the managed area is detected. index = %d", idx - ); - - SetAffineParams_(type, mtx, idx); -} - -u16 NNS_G2dEntryOamManagerAffine (NNSG2dOamManagerInstance * pMan, const MtxFx22 * mtx) { - NNS_G2D_NULL_ASSERT(pMan); - NNS_G2D_NULL_ASSERT(mtx); - NNS_G2D_ASSERT(IsManageAreaValid_(&pMan->managedAffineArea)); - - if (HasEnoughCapacity_(&pMan->managedAffineArea, 1)) { - const u16 currentAffineIdx = pMan->managedAffineArea.currentIdx; - - SetAffineParams_(pMan->type, mtx, currentAffineIdx); - - pMan->managedAffineArea.currentIdx++; - - return currentAffineIdx; - } else { - NNSI_G2D_DEBUGMSG0("The OamBuffer has no capacity enough to store new Affine Paramater."); - return NNS_G2D_OAM_AFFINE_IDX_NONE; - } -} - -void NNS_G2dApplyOamManagerToHW (NNSG2dOamManagerInstance * pMan) { - NNS_G2D_NULL_ASSERT(pMan); - NNS_G2D_ASSERTMSG( - pMan->type != NNS_G2D_OAMTYPE_SOFTWAREEMULATION, - " For the NNS_G2D_OAMTYPE_SOFTWAREEMULATION type Manager, Use NNS_G2dApplyOamManagerToHWSprite() instead." - ); - { - if (pMan->bFastTransferEnable) { - LoadOamAndAffineFast_( - pMan->type, - pMan->managedAttrArea.fromIdx, - pMan->managedAttrArea.toIdx - ); - } else { - LoadOam_( - pMan->type, - pMan->managedAttrArea.fromIdx, - pMan->managedAttrArea.toIdx - ); - - if (IsManageAreaValid_(&pMan->managedAffineArea)) { - LoadAffine_( - pMan->type, - pMan->managedAffineArea.fromIdx, - pMan->managedAffineArea.toIdx - ); - } - } - } -} - -void NNS_G2dApplyOamManagerToHWSprite (NNSG2dOamManagerInstance * pMan, const NNSG2dImageAttr * pTexImageAttr, u32 texBaseAddr, u32 pltBaseAddr) { - NNS_G2D_NULL_ASSERT(pMan); - NNS_G2D_NULL_ASSERT(pTexImageAttr); - - NNS_G2D_ASSERTMSG( - pMan->type == NNS_G2D_OAMTYPE_SOFTWAREEMULATION, - " For the NNS_G2D_OAMTYPE_MAIN SUB type Manager, Use NNS_G2dApplyOamManagerToHW() instead." - ); - - if (pMan->spriteZoffsetStep != 0) { - fx32 step = NNSi_G2dGetOamSoftEmuAutoZOffsetStep(); - NNSi_G2dSetOamSoftEmuAutoZOffsetFlag(TRUE); - NNSi_G2dSetOamSoftEmuAutoZOffsetStep(pMan->spriteZoffsetStep); - - { - void * pFrom = GetOamFromPtr_(pMan); - const u16 numOam = GetNumOamUsed_(&pMan->managedAttrArea); - NNS_G2D_NULL_ASSERT(pFrom); - - DrawBy3DGraphicsEngine_( - pFrom, - numOam, - pTexImageAttr, - texBaseAddr, - pltBaseAddr - ); - } - - NNSi_G2dSetOamSoftEmuAutoZOffsetStep(step); - NNSi_G2dSetOamSoftEmuAutoZOffsetFlag(FALSE); - NNSi_G2dResetOamSoftEmuAutoZOffset(); - } else { - { - void * pFrom = GetOamFromPtr_(pMan); - const u16 numOam = GetNumOamUsed_(&pMan->managedAttrArea); - NNS_G2D_NULL_ASSERT(pFrom); - - DrawBy3DGraphicsEngine_( - pFrom, - numOam, - pTexImageAttr, - texBaseAddr, - pltBaseAddr - ); - } - } -} - -void NNS_G2dResetOamManagerBuffer (NNSG2dOamManagerInstance * pMan) { - NNS_G2D_NULL_ASSERT(pMan); - - { - if (pMan->bFastTransferEnable) { - const u32 szByte = GetSizeOfManageArea_(&pMan->managedAttrArea); - void * pData = GetOamFromPtr_(pMan); - NNS_G2D_ASSERT(szByte != 0); - - DC_InvalidateRange(pData, szByte); - NNSi_G2dDmaFill32(NNS_G2D_DMA_NO, pData, OAM_SETTING_INVISIBLE, szByte); - } else { - ResetOam_( - pMan->type, - pMan->managedAttrArea.fromIdx, - pMan->managedAttrArea.toIdx - ); - } - } - - { - pMan->managedAttrArea.currentIdx = pMan->managedAttrArea.fromIdx; - pMan->managedAffineArea.currentIdx = pMan->managedAffineArea.fromIdx; - } -} - -void NNS_G2dApplyAndResetOamManagerBuffer (NNSG2dOamManagerInstance * pMan) { - NNS_G2D_NULL_ASSERT(pMan); - - NNS_G2dApplyOamManagerToHW(pMan); - NNS_G2dResetOamManagerBuffer(pMan); -} - -u16 NNS_G2dGetOamManagerOamCapacity (NNSG2dOamManagerInstance * pMan) { - NNS_G2D_NULL_ASSERT(pMan); - return GetCapacity_(&pMan->managedAttrArea); -} - -u16 NNS_G2dGetOamManagerAffineCapacity (NNSG2dOamManagerInstance * pMan) { - NNS_G2D_NULL_ASSERT(pMan); - return GetCapacity_(&pMan->managedAffineArea); -} - -GXOamAttr * NNS_G2dGetOamBuffer (NNSG2dOamType type) { - return GetOamBufferPtr_(type, 0); -} diff --git a/subprojects/NitroSystem/libraries/g2d/src/g2d_OamSoftwareSpriteDraw.c b/subprojects/NitroSystem/libraries/g2d/src/g2d_OamSoftwareSpriteDraw.c deleted file mode 100644 index 76c4c8e104..0000000000 --- a/subprojects/NitroSystem/libraries/g2d/src/g2d_OamSoftwareSpriteDraw.c +++ /dev/null @@ -1,504 +0,0 @@ -#include -#include -#include -#include - -#include "include/g2d_Internal.h" - -#define NNSI_G2D_SHIFT_SIZEOF_256PLTT 9 -#define NNSI_G2D_SHIFT_SIZEOF_16PLTT 5 - -typedef struct SoftwareSpriteParamCache { - fx32 u0; - fx32 v0; - fx32 u1; - fx32 v1; -} SoftwareSpriteParamCache; - -typedef struct SpriteParams { - fx32 u0; - fx32 v0; - fx32 u1; - fx32 v1; - int sx; - int sy; -} SpriteParams; - -static SoftwareSpriteParamCache softwareSpreiteParamCache_ = { - 0, - 0, - 0, - 0 -}; - -static NNS_G2dOamSoftEmuUVFlipCorrectFunc s_pUVFlipCorrectFunc = NULL; - -static const u32 characterShiftSize_[] = { - 0, - 0, - 0, - 5, - 6, - 0, - 0, - 0 -}; - -static const GXTexSizeS gxTexSizeSTbl[3][4] = { - { - GX_TEXSIZE_S8, - GX_TEXSIZE_S16, - GX_TEXSIZE_S32, - GX_TEXSIZE_S64 - }, - { - GX_TEXSIZE_S16, - GX_TEXSIZE_S32, - GX_TEXSIZE_S32, - GX_TEXSIZE_S64 - }, - { - GX_TEXSIZE_S8, - GX_TEXSIZE_S8, - GX_TEXSIZE_S16, - GX_TEXSIZE_S32 - } -}; - -static const GXTexSizeT gxTexSizeTTbl[3][4] = { - { - GX_TEXSIZE_T8, - GX_TEXSIZE_T16, - GX_TEXSIZE_T32, - GX_TEXSIZE_T64 - }, - { - GX_TEXSIZE_T8, - GX_TEXSIZE_T8, - GX_TEXSIZE_T16, - GX_TEXSIZE_T32 - }, - { - GX_TEXSIZE_T16, - GX_TEXSIZE_T32, - GX_TEXSIZE_T32, - GX_TEXSIZE_T64 - } -}; - -static BOOL bAutoZOffsetAdd_ = FALSE; -static fx32 zOffset_ = 0; -static fx32 zOffsetStep_ = -FX32_ONE; - -static NNS_G2D_INLINE u32 GetNumTexChar_ (GXTexSizeS texSize) { - static const u32 texSize_ [] = { - 1, - 2, - 4, - 8, - 16, - 32, - 64, - 128 - }; - - GX_TEXSIZE_S_ASSERT(texSize); - - return texSize_[texSize]; -} - -static NNS_G2D_INLINE void IncreaseAutoZOffset_ () { - if (bAutoZOffsetAdd_) { - zOffset_ += zOffsetStep_; - } -} - -static NNS_G2D_INLINE fx32 GetFx32DepthValue_ (int z) { - if (bAutoZOffsetAdd_) { - return (z << FX32_SHIFT) + zOffset_; - } else { - return (z << FX32_SHIFT); - } -} - -static NNS_G2D_INLINE void DoFlip_ (BOOL bFlipH, BOOL bFlipV, fx32 * pRetU0, fx32 * pRetU1, fx32 * pRetV0, fx32 * pRetV1) { - NNS_G2D_NULL_ASSERT(pRetU0); - NNS_G2D_NULL_ASSERT(pRetU1); - NNS_G2D_NULL_ASSERT(pRetV0); - NNS_G2D_NULL_ASSERT(pRetV1); - - { - fx32 temp; - if (bFlipH) { - temp = *pRetU0; - *pRetU0 = *pRetU1; - *pRetU1 = temp; - } - - if (bFlipV) { - temp = *pRetV0; - *pRetV0 = *pRetV1; - *pRetV1 = temp; - } - - if (s_pUVFlipCorrectFunc) { - (*s_pUVFlipCorrectFunc)(pRetU0, pRetV0, pRetU1, pRetV1, bFlipH, bFlipV); - } - } -} - -static NNS_G2D_INLINE void CalcUVFor3DDirect2DMap_ (const NNSG2dImageAttr * pTexImageAttr, u16 charName, fx32 * pRetU0, fx32 * pRetV0) { - NNS_G2D_NULL_ASSERT(pRetU0); - NNS_G2D_NULL_ASSERT(pRetV0); - - GX_OBJVRAMMODE_CHAR_ASSERT(pTexImageAttr->mappingType); - - if (pTexImageAttr->fmt == GX_TEXFMT_PLTT256) { - charName >>= 1; - } - - { - { - const u32 numCharPerOneLine = GetNumTexChar_(pTexImageAttr->sizeS); - - *pRetU0 = (fx32)(((charName & (numCharPerOneLine - 1)) << 3) << FX32_SHIFT); - - *pRetV0 = ((charName >> pTexImageAttr->sizeS) << 3) << FX32_SHIFT; - } - } -} - -static NNS_G2D_INLINE void CalcUVFor3DDirect1DMap_ (fx32 * pRetU0, fx32 * pRetV0) { - NNS_G2D_NULL_ASSERT(pRetU0); - NNS_G2D_NULL_ASSERT(pRetV0); - - { - *pRetU0 = 0; - *pRetV0 = 0; - } -} - -static NNS_G2D_INLINE GXTexSizeS GetTexS_ (GXOamShape shape) { - GX_OAM_SHAPE_ASSERT(shape); - { - const u16 shapeBit = (u16)((shape & GX_OAM_ATTR01_SHAPE_MASK) >> GX_OAM_ATTR01_SHAPE_SHIFT); - const u16 sizeBit = (u16)((shape & GX_OAM_ATTR01_SIZE_MASK) >> GX_OAM_ATTR01_SIZE_SHIFT); - - return gxTexSizeSTbl[shapeBit][sizeBit]; - } -} - -static NNS_G2D_INLINE GXTexSizeT GetTexT_ (GXOamShape shape) { - GX_OAM_SHAPE_ASSERT(shape); - { - const u16 shapeBit = (u16)((shape & GX_OAM_ATTR01_SHAPE_MASK) >> GX_OAM_ATTR01_SHAPE_SHIFT); - const u16 sizeBit = (u16)((shape & GX_OAM_ATTR01_SIZE_MASK) >> GX_OAM_ATTR01_SIZE_SHIFT); - - return gxTexSizeTTbl[shapeBit][sizeBit]; - } -} - -static NNS_G2D_INLINE u32 GetOffsetByteSizeOfPlt_ (GXTexFmt pltFmt, BOOL bExtendedPlt, u16 pltNo) { - NNS_G2D_ASSERT(pltFmt == GX_TEXFMT_PLTT16 || pltFmt == GX_TEXFMT_PLTT256); - - if (bExtendedPlt) { - NNS_G2D_ASSERT(pltFmt == GX_TEXFMT_PLTT256); - - return (u32)(pltNo << NNSI_G2D_SHIFT_SIZEOF_256PLTT); - } else { - if (pltFmt == GX_TEXFMT_PLTT256) { - return 0; - } else { - return (u32)(pltNo << NNSI_G2D_SHIFT_SIZEOF_16PLTT); - } - } -} - -static NNS_G2D_INLINE int GetCharacterNameShiftBit_ (GXOBJVRamModeChar objMappingMode) { - return (objMappingMode & REG_GX_DISPCNT_EXOBJ_MASK) >> REG_GX_DISPCNT_EXOBJ_SHIFT; -} - -static NNS_G2D_INLINE void SetTextureParamsFor3DDirect1DMap_ (const NNSG2dImageAttr * pTexImageAttr, u32 texBaseAddr, GXOamShape shape, u16 charName) { - NNS_G2D_NULL_ASSERT(pTexImageAttr); - - { - const u16 shapeBit = (u16)((shape & GX_OAM_ATTR01_SHAPE_MASK) >> GX_OAM_ATTR01_SHAPE_SHIFT); - const u16 sizeBit = (u16)((shape & GX_OAM_ATTR01_SIZE_MASK) >> GX_OAM_ATTR01_SIZE_SHIFT); - - const int shiftBit = (5 + GetCharacterNameShiftBit_(pTexImageAttr->mappingType)); - - NNS_G2D_ASSERT(pTexImageAttr->mappingType != GX_OBJVRAMMODE_CHAR_2D); - - reg_G3_TEXIMAGE_PARAM - = GX_PACK_TEXIMAGE_PARAM( - pTexImageAttr->fmt, - GX_TEXGEN_TEXCOORD, - gxTexSizeSTbl[shapeBit][sizeBit], - gxTexSizeTTbl[shapeBit][sizeBit], - GX_TEXREPEAT_NONE, - GX_TEXFLIP_NONE, - pTexImageAttr->plttUse, - texBaseAddr + (charName << shiftBit) - ); - } -} - -static NNS_G2D_INLINE void SetTextureParamsFor3DDirect2DMap_ (const NNSG2dImageAttr * pTexImageAttr, u32 texBaseAddr) { - NNS_G2D_NULL_ASSERT(pTexImageAttr); - { - reg_G3_TEXIMAGE_PARAM - = GX_PACK_TEXIMAGE_PARAM( - pTexImageAttr->fmt, - GX_TEXGEN_TEXCOORD, - pTexImageAttr->sizeS, - pTexImageAttr->sizeT, - GX_TEXREPEAT_NONE, - GX_TEXFLIP_NONE, - pTexImageAttr->plttUse, - texBaseAddr - ); - } -} - -static NNS_G2D_INLINE void SetPaletteParamsFor3DDirect_ (const NNSG2dImageAttr * pTexImageAttr, u32 pltBaseAddr, const GXOamAttr * pOam) { - NNS_G2D_NULL_ASSERT(pTexImageAttr); - NNS_G2D_NULL_ASSERT(pOam); - - { - const static GXTexFmt pltFmtTbl[] = { - GX_TEXFMT_PLTT16, - GX_TEXFMT_PLTT256 - }; - const GXTexFmt pltFmt = pltFmtTbl[pOam->colorMode]; - - const u32 pltOffs - = GetOffsetByteSizeOfPlt_( - pltFmt, - pTexImageAttr->bExtendedPlt, - (u16)pOam->cParam - ); - - G3_TexPlttBase(pltBaseAddr + pltOffs, pltFmt); - } -} - -static NNS_G2D_INLINE void SetQuadTranslation_ (const GXOamAttr * pOam, const int posX, const int posY, const int posZ) { - #pragma inline_max_size(20000) - - if (G2_GetOBJEffect(pOam) == GX_OAM_EFFECT_AFFINE_DOUBLE) { - const GXOamShape oamShape = NNS_G2dGetOAMSize(pOam); - const int halfW = NNS_G2dGetOamSizeX(&oamShape) >> 1; - const int halfH = NNS_G2dGetOamSizeY(&oamShape) >> 1; - - G3_Translate - ( - (posX + halfW) << FX32_SHIFT, - (posY + halfH) << FX32_SHIFT, - GetFx32DepthValue_(posZ) - ); - } else { - G3_Translate - ( - posX << FX32_SHIFT, - posY << FX32_SHIFT, - GetFx32DepthValue_(posZ) - ); - } -} - -static void CalcSpriteParams_ (const GXOamAttr * pOam, const NNSG2dImageAttr * pTexImageAttr, u32 texBaseAddr, u32 pltBaseAddr, SpriteParams * pResult) { - const GXOamShape shapeOam = NNS_G2dGetOAMSize(pOam); - const u16 charName = (u16)pOam->charNo; - - pResult->sx = NNS_G2dGetOamSizeX(&shapeOam); - pResult->sy = NNS_G2dGetOamSizeY(&shapeOam); - - if (pTexImageAttr->mappingType == GX_OBJVRAMMODE_CHAR_2D) { - SetTextureParamsFor3DDirect2DMap_(pTexImageAttr, texBaseAddr); - - CalcUVFor3DDirect2DMap_(pTexImageAttr, charName, &pResult->u0, &pResult->v0); - } else { - SetTextureParamsFor3DDirect1DMap_(pTexImageAttr, texBaseAddr, shapeOam, charName); - - CalcUVFor3DDirect1DMap_(&pResult->u0, &pResult->v0); - } - - pResult->u1 = pResult->u0 + (pResult->sx << FX32_SHIFT); - pResult->v1 = pResult->v0 + (pResult->sy << FX32_SHIFT); - - DoFlip_( - NNSi_G2dGetOamFlipH(pOam), - NNSi_G2dGetOamFlipV(pOam), - &pResult->u0, &pResult->u1, - &pResult->v0, &pResult->v1 - ); - - SetPaletteParamsFor3DDirect_(pTexImageAttr, pltBaseAddr, pOam); -} - -void NNSi_G2dSetOamSoftEmuAutoZOffsetFlag (BOOL flag) { - bAutoZOffsetAdd_ = flag; -} - -fx32 NNSi_G2dGetOamSoftEmuAutoZOffset (void) { - return zOffset_; -} - -void NNSi_G2dResetOamSoftEmuAutoZOffset (void) { - zOffset_ = 0; -} - -void NNSi_G2dSetOamSoftEmuAutoZOffsetStep (fx32 step) { - NNS_G2D_WARNING(step <= 0, "AutoZOffsetStep should be smaller than zero."); - zOffsetStep_ = step; -} - -fx32 NNSi_G2dGetOamSoftEmuAutoZOffsetStep (void) { - return zOffsetStep_; -} - -void NNS_G2dDrawOneOam3DDirectFast (const GXOamAttr * pOam, const NNSG2dImageAttr * pTexImageAttr, u32 texBaseAddr, u32 pltBaseAddr) { - NNS_G2D_NULL_ASSERT(pOam); - NNS_G2D_NULL_ASSERT(pTexImageAttr); - - { - SpriteParams spriteParams; - const s16 posX = NNSi_G2dRepeatXinScreenArea(NNSi_G2dGetOamX(pOam)); - const s16 posY = NNSi_G2dRepeatYinScreenArea(NNSi_G2dGetOamY(pOam)); - - CalcSpriteParams_(pOam, pTexImageAttr, texBaseAddr, pltBaseAddr, &spriteParams); - - NNSi_G2dDrawSpriteFast( - posX, posY, GetFx32DepthValue_(-1), - spriteParams.sx, spriteParams.sy, - spriteParams.u0, spriteParams.v0, - spriteParams.u1, spriteParams.v1 - ); - - IncreaseAutoZOffset_(); - } -} - -void NNS_G2dDrawOneOam3DDirectWithPosFast (s16 posX, s16 posY, s16 posZ, const GXOamAttr * pOam, const NNSG2dImageAttr * pTexImageAttr, u32 texBaseAddr, u32 pltBaseAddr) { - NNS_G2D_NULL_ASSERT(pOam); - NNS_G2D_NULL_ASSERT(pTexImageAttr); - - { - SpriteParams spriteParams; - CalcSpriteParams_(pOam, pTexImageAttr, texBaseAddr, pltBaseAddr, &spriteParams); - - SetQuadTranslation_(pOam, posX, posY, posZ); - - G3_Scale(spriteParams.sx << FX32_SHIFT, spriteParams.sy << FX32_SHIFT, FX32_ONE); - { - const fx32 size = FX32_ONE; - - G3_Begin(GX_BEGIN_QUADS); - - G3_TexCoord(spriteParams.u0, spriteParams.v1); - G3_Vtx10(0, size, 0); - - G3_TexCoord(spriteParams.u1, spriteParams.v1); - G3_Vtx10(size, size, 0); - - G3_TexCoord(spriteParams.u1, spriteParams.v0); - G3_Vtx10(size, 0, 0); - - G3_TexCoord(spriteParams.u0, spriteParams.v0); - G3_Vtx10(0, 0, 0); - - G3_End( ); - } - - IncreaseAutoZOffset_(); - } -} - -void NNS_G2dDrawOneOam3DDirectWithPosAffineFast (s16 posX, s16 posY, s16 posZ, const GXOamAttr * pOam, const NNSG2dImageAttr * pTexImageAttr, u32 texBaseAddr, u32 pltBaseAddr, const MtxFx22 * pMtx) { - NNS_G2D_NULL_ASSERT(pOam); - NNS_G2D_NULL_ASSERT(pTexImageAttr); - - { - SpriteParams spriteParams; - CalcSpriteParams_(pOam, pTexImageAttr, texBaseAddr, pltBaseAddr, &spriteParams); - - if (G2_GetOBJEffect(pOam) == GX_OAM_EFFECT_AFFINE) { - NNSi_G2dDrawSpriteWithMtxFast - ( - posX, posY, GetFx32DepthValue_(posZ), - spriteParams.sx, spriteParams.sy, pMtx, - spriteParams.u0, spriteParams.v0, - spriteParams.u1, spriteParams.v1 - ); - } else { - NNSi_G2dDrawSpriteWithMtxDoubleAffineFast - ( - posX, posY, GetFx32DepthValue_(posZ), - spriteParams.sx, spriteParams.sy, pMtx, - spriteParams.u0, spriteParams.v0, - spriteParams.u1, spriteParams.v1 - ); - } - - IncreaseAutoZOffset_(); - } -} - -void NNS_G2dSetOamSoftEmuSpriteParamCache (const GXOamAttr * pOam, const NNSG2dImageAttr * pTexImageAttr, u32 texBaseAddr, u32 pltBaseAddr) { - { - SpriteParams spriteParams; - CalcSpriteParams_(pOam, pTexImageAttr, texBaseAddr, pltBaseAddr, &spriteParams); - - softwareSpreiteParamCache_.u0 = spriteParams.u0; - softwareSpreiteParamCache_.v0 = spriteParams.v0; - softwareSpreiteParamCache_.u1 = spriteParams.u1; - softwareSpreiteParamCache_.v1 = spriteParams.v1; - } -} - -void NNS_G2dDrawOneOam3DDirectUsingParamCacheFast (s16 posX, s16 posY, s16 posZ, const GXOamAttr * pOam) { - { - const GXOamShape shapeOam = NNS_G2dGetOAMSize(pOam); - const int sx = NNS_G2dGetOamSizeX(&shapeOam); - const int sy = NNS_G2dGetOamSizeY(&shapeOam); - - const fx32 u0 = softwareSpreiteParamCache_.u0, - u1 = softwareSpreiteParamCache_.u1, - v0 = softwareSpreiteParamCache_.v0, - v1 = softwareSpreiteParamCache_.v1; - - SetQuadTranslation_(pOam, posX, posY, posZ); - - G3_Scale(sx << FX32_SHIFT, sy << FX32_SHIFT, FX32_ONE); - { - const fx32 size = FX32_ONE; - - G3_Begin(GX_BEGIN_QUADS); - - G3_TexCoord(u0, v1); - G3_Vtx10(0, size, 0); - - G3_TexCoord(u1, v1); - G3_Vtx10(size, size, 0); - - G3_TexCoord(u1, v0); - G3_Vtx10(size, 0, 0); - - G3_TexCoord(u0, v0); - G3_Vtx10(0, 0, 0); - - G3_End( ); - } - - IncreaseAutoZOffset_(); - } -} - -void NNS_G2dSetOamSoftEmuUVFlipCorrectFunc (NNS_G2dOamSoftEmuUVFlipCorrectFunc pFunc) { - NNS_G2D_NULL_ASSERT(pFunc); - s_pUVFlipCorrectFunc = pFunc; -} - -void NNS_G2dResetOamSoftEmuUVFlipCorrectFunc () { - s_pUVFlipCorrectFunc = NULL; -} diff --git a/subprojects/NitroSystem/libraries/g2d/src/g2d_PaletteTable.c b/subprojects/NitroSystem/libraries/g2d/src/g2d_PaletteTable.c deleted file mode 100644 index 20a790a85f..0000000000 --- a/subprojects/NitroSystem/libraries/g2d/src/g2d_PaletteTable.c +++ /dev/null @@ -1,29 +0,0 @@ -#include - -void NNS_G2dInitializePaletteTable (NNSG2dPaletteSwapTable * pPlttTbl) { - u16 i; - NNS_G2D_NULL_ASSERT(pPlttTbl); - - for ( i = 0; i < NNS_G2D_NUM_COLOR_PALETTE; i++ ) { - pPlttTbl->paletteIndex[i] = i; - } -} - -void NNS_G2dSetPaletteTableValue (NNSG2dPaletteSwapTable * pPlttTbl, u16 beforeIdx, u16 afterIdx) { - NNS_G2D_NULL_ASSERT(pPlttTbl); - NNS_G2D_MINMAX_ASSERT(beforeIdx, 0, NNS_G2D_NUM_COLOR_PALETTE); - NNS_G2D_MINMAX_ASSERT(afterIdx, 0, NNS_G2D_NUM_COLOR_PALETTE); - - pPlttTbl->paletteIndex[beforeIdx] = afterIdx; -} - -u16 NNS_G2dGetPaletteTableValue (const NNSG2dPaletteSwapTable * pPlttTbl, u16 beforeIdx) { - NNS_G2D_NULL_ASSERT(pPlttTbl); - NNS_G2D_MINMAX_ASSERT(beforeIdx, 0, NNS_G2D_NUM_COLOR_PALETTE); - - { - const u16 afterIdx = pPlttTbl->paletteIndex[beforeIdx]; - NNS_G2D_MINMAX_ASSERT(afterIdx, 0, NNS_G2D_NUM_COLOR_PALETTE); - return afterIdx; - } -} diff --git a/subprojects/NitroSystem/libraries/g2d/src/g2d_Renderer.c b/subprojects/NitroSystem/libraries/g2d/src/g2d_Renderer.c deleted file mode 100644 index ab5f75158b..0000000000 --- a/subprojects/NitroSystem/libraries/g2d/src/g2d_Renderer.c +++ /dev/null @@ -1,792 +0,0 @@ -#include - -#include "include/g2d_Internal.h" -#include "include/g2di_RendererMtxStack.hpp" -#include "include/g2di_RendererMtxState.h" - -#include -#include -#include - -#define NNS_G2D_RND_BETWEEN_BEGINEND_ASSERT(pRnd) \ - NNS_G2D_ASSERTMSG((pRnd) != NULL, "Please call this method between Begin - End Rendering") \ - - -static NNSG2dRendererInstance * pCurrentInstance_ = NULL; - -static u32 currenVramTransferHandle_ = NNS_G2D_INVALID_CELL_TRANSFER_STATE_HANDLE; - -typedef struct MCRenderState { - u16 currentCellAnimIdx; - u16 pad16_; - NNSG2dRndCore2DMtxCache * cellAnimMtxCacheTbl[256]; - BOOL bDrawMC; -} MCRenderState; - -static MCRenderState mcRenderState_; - -static BOOL IsNotCircularLinked_ (const NNSG2dRenderSurface * pList, const NNSG2dRenderSurface * pNew) { - const NNSG2dRenderSurface * pCursor = pList; - - while (pCursor != NULL) { - if (pCursor == pNew) { - return FALSE; - } - pCursor = (const NNSG2dRenderSurface *)pCursor->pNextSurface; - } - - return TRUE; -} - -static NNS_G2D_INLINE void OBJPaletteChangeHandling_ (GXOamAttr * pOam) { - const NNSG2dPaletteSwapTable * pTbl - = NNS_G2dGetRendererPaletteTbl(pCurrentInstance_); - - NNS_G2D_NULL_ASSERT(pOam); - - if (pTbl != NULL) { - const u16 newIdx - = NNS_G2dGetPaletteTableValue(pTbl, NNSi_G2dGetOamColorParam(pOam)); - pOam->cParam = newIdx; - } -} - -static NNS_G2D_INLINE void FlipTranslate_ (int x, int y) { - const int x_ = NNS_G2dIsRndCoreFlipH(&pCurrentInstance_->rendererCore) ? -x : x; - const int y_ = NNS_G2dIsRndCoreFlipV(&pCurrentInstance_->rendererCore) ? -y : y; - - NNS_G2dTranslate(x_ << FX32_SHIFT, y_ << FX32_SHIFT, 0); -} - -static NNS_G2D_INLINE void SetSrtControlToMtxStack_ (const NNSG2dSRTControl * pSrtCtrl) { - NNS_G2D_RND_BETWEEN_BEGINEND_ASSERT(pCurrentInstance_); - NNS_G2D_NULL_ASSERT(pSrtCtrl); - NNS_G2D_ASSERTMSG(pSrtCtrl->type == NNS_G2D_SRTCONTROLTYPE_SRT, "TODO: show msg "); - - if (NNSi_G2dSrtcIsAffineEnable(pSrtCtrl, NNS_G2D_AFFINEENABLE_TRANS)) { - FlipTranslate_(pSrtCtrl->srtData.trans.x, pSrtCtrl->srtData.trans.y); - } - - if (NNSi_G2dSrtcIsAffineEnable(pSrtCtrl, NNS_G2D_AFFINEENABLE_ROTATE)) { - NNS_G2dRotZ(FX_SinIdx(pSrtCtrl->srtData.rotZ), FX_CosIdx(pSrtCtrl->srtData.rotZ)); - } - - if (NNSi_G2dSrtcIsAffineEnable(pSrtCtrl, NNS_G2D_AFFINEENABLE_SCALE)) { - NNS_G2dScale(pSrtCtrl->srtData.scale.x, pSrtCtrl->srtData.scale.y, FX32_ONE); - } -} - -static NNS_G2D_INLINE void BeginDrawVramTransferedCell_ (u32 cellVramTransferHandle) { - NNS_G2D_ASSERT(currenVramTransferHandle_ == NNS_G2D_INVALID_CELL_TRANSFER_STATE_HANDLE); - NNS_G2D_ASSERT(cellVramTransferHandle != NNS_G2D_INVALID_CELL_TRANSFER_STATE_HANDLE); - - currenVramTransferHandle_ = cellVramTransferHandle; -} - -static NNS_G2D_INLINE void EndDrawVramTransferedCell_ ( ) { - NNS_G2D_ASSERT(currenVramTransferHandle_ != NNS_G2D_INVALID_CELL_TRANSFER_STATE_HANDLE); - currenVramTransferHandle_ = NNS_G2D_INVALID_CELL_TRANSFER_STATE_HANDLE; -} - -static NNS_G2D_INLINE BOOL IsRendererDrawingVramTransferedCell_ ( ) { - return (BOOL)(currenVramTransferHandle_ != NNS_G2D_INVALID_CELL_TRANSFER_STATE_HANDLE); -} - -static NNS_G2D_INLINE u32 GetCurrentVramTransfereHandle_ () { - return currenVramTransferHandle_; -} - -static void RndCoreCBFuncBeforeCell_ (struct NNSG2dRndCoreInstance * pRend, const NNSG2dCellData * pCell) { - NNS_G2D_NULL_ASSERT(pCurrentInstance_); - NNS_G2D_NULL_ASSERT(pCurrentInstance_->pCurrentSurface); - { - NNSG2dRenderSurface * pCurrentSurface = pCurrentInstance_->pCurrentSurface; - - if (pCurrentSurface->pFuncVisibilityCulling != NULL) { - if (!(*pCurrentSurface->pFuncVisibilityCulling)( - pCell, - NNSi_G2dGetCurrentMtx(), - &pCurrentSurface->coreSurface.viewRect - )) { - pRend->bDrawEnable = FALSE; - return; - } else { - pRend->bDrawEnable = TRUE; - } - } - - if (*pCurrentSurface->pBeforeDrawCellBackFunc) { - (*pCurrentSurface->pBeforeDrawCellBackFunc)( - pCurrentInstance_, - pCurrentSurface, - pCell, - NNSi_G2dGetCurrentMtx() - ); - } - } -} - -static void RndCoreCBFuncAfterCell_ (struct NNSG2dRndCoreInstance * pRend, const NNSG2dCellData * pCell) { -#pragma unused( pRend ) - NNS_G2D_NULL_ASSERT(pCurrentInstance_); - NNS_G2D_NULL_ASSERT(pCurrentInstance_->pCurrentSurface); - { - NNSG2dRenderSurface * pCurrentSurface = pCurrentInstance_->pCurrentSurface; - - if (*pCurrentSurface->pAfterDrawCellBackFunc) { - (*pCurrentSurface->pAfterDrawCellBackFunc)( - pCurrentInstance_, - pCurrentSurface, - pCell, - NNSi_G2dGetCurrentMtx() - ); - } - } -} - -static void RndCoreCBFuncBeforeOBJ_ (struct NNSG2dRndCoreInstance * pRend, const NNSG2dCellData * pCell, u16 oamIdx) { - GXOamAttr * pTempOam = &pRend->currentOam; - - NNS_G2D_NULL_ASSERT(pCurrentInstance_); - NNS_G2D_NULL_ASSERT(pCurrentInstance_->pCurrentSurface); - - OBJPaletteChangeHandling_(pTempOam); - - if (pCurrentInstance_->overwriteEnableFlag != NNS_G2D_RND_OVERWRITE_NONE) { - if (NNS_G2dIsRendererOverwriteEnable(pCurrentInstance_, NNS_G2D_RND_OVERWRITE_PRIORITY)) { - pTempOam->priority = pCurrentInstance_->overwritePriority; - } - - if (NNS_G2dIsRendererOverwriteEnable(pCurrentInstance_, NNS_G2D_RND_OVERWRITE_PLTTNO)) { - pTempOam->cParam = pCurrentInstance_->overwritePlttNo; - } - - if (NNS_G2dIsRendererOverwriteEnable(pCurrentInstance_, NNS_G2D_RND_OVERWRITE_PLTTNO_OFFS)) { - pTempOam->cParam = 0xF & (pTempOam->cParam + pCurrentInstance_->overwritePlttNoOffset); - } - - if (NNS_G2dIsRendererOverwriteEnable(pCurrentInstance_, NNS_G2D_RND_OVERWRITE_MOSAIC)) { - G2_OBJMosaic(pTempOam, pCurrentInstance_->overwriteMosaicFlag); - } - - if (NNS_G2dIsRendererOverwriteEnable(pCurrentInstance_, NNS_G2D_RND_OVERWRITE_OBJMODE)) { - G2_SetOBJMode(pTempOam, pCurrentInstance_->overwriteObjMode, G2_GetOBJColorParam(pTempOam)); - } - } - - { - NNSG2dRenderSurface * pCurrentSurface = pCurrentInstance_->pCurrentSurface; - if (*pCurrentSurface->pBeforeDrawOamBackFunc) { - (*pCurrentSurface->pBeforeDrawOamBackFunc)( - pCurrentInstance_, - pCurrentSurface, - pCell, - oamIdx, - NNSi_G2dGetCurrentMtx() - ); - } - } -} - -static void RndCoreCBFuncAfterOBJ_ (struct NNSG2dRndCoreInstance * pRend, const NNSG2dCellData * pCell, u16 oamIdx) { -#pragma unused( pRend ) - NNS_G2D_NULL_ASSERT(pCurrentInstance_); - NNS_G2D_NULL_ASSERT(pCurrentInstance_->pCurrentSurface); - { - NNSG2dRenderSurface * pCurrentSurface = pCurrentInstance_->pCurrentSurface; - if (*pCurrentSurface->pAfterDrawOamBackFunc) { - (*pCurrentSurface->pAfterDrawOamBackFunc)( - pCurrentInstance_, - pCurrentSurface, - pCell, - oamIdx, - NNSi_G2dGetCurrentMtx() - ); - } - } -} - -static NNS_G2D_INLINE void BeginRndCoreRendering2D_ (NNSG2dRendererInstance * pRnd, NNSG2dRenderSurface * pSurface) { - NNS_G2D_NULL_ASSERT(pRnd); - NNS_G2D_ASSERT(pRnd->pCurrentSurface == NULL); - NNS_G2D_ASSERT(pSurface->type != NNS_G2D_SURFACETYPE_MAIN3D); - NNS_G2D_NULL_ASSERT(pSurface); - - pRnd->pCurrentSurface = pSurface; - NNS_G2dSetRndCoreSurface(&pRnd->rendererCore, &pSurface->coreSurface); - - { - { - NNS_G2dSetRndCoreOamRegisterFunc( - &pRnd->rendererCore, - pSurface->pFuncOamRegister, - pSurface->pFuncOamAffineRegister - ); - } - } - - NNS_G2dRndCoreBeginRendering(&pRnd->rendererCore); -} - -static NNS_G2D_INLINE void BeginRndCoreRendering3D_ (NNSG2dRendererInstance * pRnd, NNSG2dRenderSurface * pSurface) { - NNS_G2D_NULL_ASSERT(pRnd); - NNS_G2D_ASSERT(pRnd->pCurrentSurface == NULL); - NNS_G2D_ASSERT(pSurface->type == NNS_G2D_SURFACETYPE_MAIN3D); - NNS_G2D_NULL_ASSERT(pSurface); - - pRnd->pCurrentSurface = pSurface; - NNS_G2dSetRndCoreSurface(&pRnd->rendererCore, &pSurface->coreSurface); - - NNS_G2dRndCoreBeginRendering(&pRnd->rendererCore); -} - -static NNS_G2D_INLINE void EndRndCoreRendering_ (void) { - NNS_G2D_NULL_ASSERT(pCurrentInstance_); - NNS_G2D_NULL_ASSERT(pCurrentInstance_->pCurrentSurface); - - pCurrentInstance_->pCurrentSurface = NULL; - NNS_G2dRndCoreEndRendering( ); -} - -static NNS_G2D_INLINE void DoRenderByRndCore2D_ (const NNSG2dCellData * pCell, NNSG2dRndCoreInstance * pRndCore) { -#pragma unused( pRndCore ) - NNS_G2D_NULL_ASSERT(pCell); - NNS_G2D_NULL_ASSERT(pRndCore); - - { - NNSG2dRndCore2DMtxCache * pMtx2D = NULL; - - if (NNSi_G2dIsRndCurrentMtxSRTransformed()) { - if (mcRenderState_.bDrawMC) { - pMtx2D - = mcRenderState_.cellAnimMtxCacheTbl[mcRenderState_.currentCellAnimIdx]; - - if (pMtx2D == NULL) { - NNSi_G2dMCMStoreCurrentMtxToMtxCache(); - - pMtx2D = NNSi_G2dMCMGetCurrentMtxCache(); - - mcRenderState_.cellAnimMtxCacheTbl[mcRenderState_.currentCellAnimIdx] = pMtx2D; - } - } else { - NNSi_G2dMCMStoreCurrentMtxToMtxCache(); - - pMtx2D = NNSi_G2dMCMGetCurrentMtxCache(); - } - } - - NNS_G2dSetRndCoreCurrentMtx2D(NNSi_G2dGetCurrentMtx(), pMtx2D); - } - - if (IsRendererDrawingVramTransferedCell_( )) { - NNS_G2dRndCoreDrawCellVramTransfer(pCell, GetCurrentVramTransfereHandle_()); - } else { - NNS_G2dRndCoreDrawCell(pCell); - } -} - -static NNS_G2D_INLINE void DoRenderByRndCore3D_ (const NNSG2dCellData * pCell, NNSG2dRndCoreInstance * pRndCore) { - NNS_G2D_NULL_ASSERT(pCell); - NNS_G2D_NULL_ASSERT(pRndCore); - - NNS_G2dSetRndCore3DSoftSpriteZvalue(pRndCore, NNSi_G2dGetCurrentZ()); - - NNS_G2dSetRndCoreCurrentMtx3D(NNSi_G2dGetCurrentMtx()); - - if (IsRendererDrawingVramTransferedCell_( )) { - NNS_G2dRndCoreDrawCellVramTransfer(pCell, GetCurrentVramTransfereHandle_()); - } else { - NNS_G2dRndCoreDrawCell(pCell); - } -} - -static void DrawCellImpl_ (const NNSG2dCellData * pCell) { - NNSG2dRndCoreInstance * pRndCore = NULL; - NNS_G2D_RND_BETWEEN_BEGINEND_ASSERT(pCurrentInstance_); - NNS_G2D_NULL_ASSERT(pCell); - - pRndCore = &pCurrentInstance_->rendererCore; - - { - NNSG2dRenderSurface * pSurface = pCurrentInstance_->pTargetSurfaceList; - - if (pCurrentInstance_->opzHint & NNS_G2D_RDR_OPZHINT_LOCK_PARAMS) { - if (pSurface->type != NNS_G2D_SURFACETYPE_MAIN3D) { - DoRenderByRndCore2D_(pCell, pRndCore); - } else { - DoRenderByRndCore3D_(pCell, pRndCore); - } - } else { - while (pSurface) { - if (pSurface->bActive) { - if (pSurface->type != NNS_G2D_SURFACETYPE_MAIN3D) { - BeginRndCoreRendering2D_(pCurrentInstance_, pSurface); - DoRenderByRndCore2D_(pCell, pRndCore); - EndRndCoreRendering_(); - } else { - BeginRndCoreRendering3D_(pCurrentInstance_, pSurface); - DoRenderByRndCore3D_(pCell, pRndCore); - EndRndCoreRendering_(); - } - } - - pSurface = pSurface->pNextSurface; - } - } - } -} - -static void DrawCellAnimationImpl_ (const NNSG2dCellAnimation * pCellAnim) { - NNSG2dCellData * pCell = NULL; - NNS_G2D_NULL_ASSERT(pCellAnim); - - pCell = (NNSG2dCellData *)NNS_G2dGetCellAnimationCurrentCell(pCellAnim); - NNS_G2D_NULL_ASSERT(pCell); - - if (pCellAnim->srtCtrl.srtData.SRT_EnableFlag == NNS_G2D_AFFINEENABLE_NONE) { - if (NNSi_G2dIsCellAnimVramTransferHandleValid(pCellAnim)) { - BeginDrawVramTransferedCell_(NNSi_G2dGetCellAnimVramTransferHandle(pCellAnim)); - DrawCellImpl_(pCell); - EndDrawVramTransferedCell_(); - } else { - DrawCellImpl_(pCell); - } - } else { - NNS_G2dPushMtx(); - SetSrtControlToMtxStack_(&pCellAnim->srtCtrl); - - if (NNSi_G2dIsCellAnimVramTransferHandleValid(pCellAnim)) { - BeginDrawVramTransferedCell_(NNSi_G2dGetCellAnimVramTransferHandle(pCellAnim)); - DrawCellImpl_(pCell); - EndDrawVramTransferedCell_(); - } else { - DrawCellImpl_(pCell); - } - NNS_G2dPopMtx(1); - } -} - -static void DrawNode_ (const NNSG2dNode * pNode) { - NNS_G2D_NULL_ASSERT(pNode); - NNS_G2D_ASSERTMSG(pNode->type == NNS_G2D_NODETYPE_CELL, "NNS_G2D_NODETYPE_CELL is expected."); - - if (pNode->bVisible) { - NNSG2dCellAnimation * pCellAnim = (NNSG2dCellAnimation *)pNode->pContent; - NNS_G2D_NULL_ASSERT(pCellAnim); - - NNS_G2dPushMtx(); - SetSrtControlToMtxStack_(&pNode->srtCtrl); - { - DrawCellAnimationImpl_(pCellAnim); - } - NNS_G2dPopMtx(1); - } -} - -static NNS_G2D_INLINE void DrawNode2_ (const NNSG2dMultiCellInstance * pMC, const NNSG2dMultiCellHierarchyData * pNodeData) { - const u16 cellAnimIdx = NNSi_G2dGetMC2NodeCellAinmIdx(pNodeData); - const NNSG2dMCCellAnimation * cellAnimArray = pMC->pCellAnimInstasnces; - NNS_G2D_MINMAX_ASSERT(cellAnimIdx, 0, pMC->pCurrentMultiCell->numCellAnim); - mcRenderState_.currentCellAnimIdx = cellAnimIdx; - - NNS_G2dPushMtx(); - FlipTranslate_(pNodeData->posX, pNodeData->posY); - { - DrawCellAnimationImpl_(&cellAnimArray[cellAnimIdx].cellAnim); - } - NNS_G2dPopMtx(1); -} - -static NNS_G2D_INLINE BOOL IsAutoZoffsetEnable_ (void) { - NNS_G2D_NULL_ASSERT(pCurrentInstance_); - return (BOOL)pCurrentInstance_->spriteZoffsetStep; -} - -void NNS_G2dInitRenderer (NNSG2dRendererInstance * pRend) { - NNS_G2D_NULL_ASSERT(pRend); - - NNS_G2dInitRndCore(&pRend->rendererCore); - - pRend->pTargetSurfaceList = NULL; - pRend->pCurrentSurface = NULL; - pRend->pPaletteSwapTbl = NULL; - - pRend->opzHint = NNS_G2D_RDR_OPZHINT_NONE; - - pRend->spriteZoffsetStep = 0; - - pRend->overwriteEnableFlag = NNS_G2D_RND_OVERWRITE_NONE; - pRend->overwritePriority = 0; - pRend->overwritePlttNo = 0; - pRend->overwriteObjMode = GX_OAM_MODE_NORMAL; - pRend->overwriteMosaicFlag = FALSE; - pRend->overwritePlttNoOffset = 0; - - NNSi_G2dMCMInitMtxCache(); - - NNSi_G2dSetRndMtxStackSRTransformEnableFlag(TRUE); -} - -void NNS_G2dAddRendererTargetSurface (NNSG2dRendererInstance * pRend, NNSG2dRenderSurface * pNew) { - NNS_G2D_NULL_ASSERT(pRend); - NNS_G2D_NULL_ASSERT(pNew); - NNS_G2D_ASSERTMSG( - IsNotCircularLinked_(pRend->pTargetSurfaceList, pNew), - "Circular linked lists is detected in NNS_G2dAddRendererTargetSurface()" - ); - - pNew->pNextSurface = pRend->pTargetSurfaceList; - pRend->pTargetSurfaceList = pNew; -} - -void NNS_G2dInitRenderSurface (NNSG2dRenderSurface * pSurface) { - NNS_G2D_NULL_ASSERT(pSurface); - - MI_CpuFill16(pSurface, 0x0, sizeof(NNSG2dRenderSurface)); - - pSurface->coreSurface.bActive = TRUE; - - pSurface->coreSurface.type = NNS_G2D_SURFACETYPE_MAX; - - { - NNSG2dRndCoreSurface * pS = &pSurface->coreSurface; - - pS->pBeforeDrawCellBackFunc = RndCoreCBFuncBeforeCell_; - pS->pAfterDrawCellBackFunc = RndCoreCBFuncAfterCell_; - pS->pBeforeDrawOamBackFunc = RndCoreCBFuncBeforeOBJ_; - pS->pAfterDrawOamBackFunc = RndCoreCBFuncAfterOBJ_; - } -} - -void NNS_G2dBeginRendering (NNSG2dRendererInstance * pRendererInstance) { - NNS_G2D_NULL_ASSERT(pRendererInstance); - NNS_G2D_ASSERTMSG( - pCurrentInstance_ == NULL, - "Must be NULL, Make sure calling Begin - End correctly." - ); - - pCurrentInstance_ = pRendererInstance; - - NNSi_G2dMCMCleanupMtxCache(); - - G3_PushMtx(); - - G3_Identity(); - NNSi_G2dIdentity(); -} - -void NNS_G2dBeginRenderingEx (NNSG2dRendererInstance * pRendererInstance, u32 opzHint) { - NNS_G2D_NULL_ASSERT(pRendererInstance); - NNS_G2D_ASSERT(pRendererInstance->opzHint == NNS_G2D_RDR_OPZHINT_NONE); - - pRendererInstance->opzHint = opzHint; - - { - if (opzHint & NNS_G2D_RDR_OPZHINT_NOT_SR) { - NNSi_G2dSetRndMtxStackSRTransformEnableFlag(FALSE); - } - - if (opzHint & NNS_G2D_RDR_OPZHINT_LOCK_PARAMS) { - NNSG2dRndCoreInstance * pRndCore = &pRendererInstance->rendererCore; - NNSG2dRenderSurface * pSurface = pRendererInstance->pTargetSurfaceList; - - NNS_G2D_ASSERTMSG( - pSurface->pNextSurface == NULL, - "The number of target surface must be ONE. when you spesified the NNS_G2D_RDR_OPZHINT_LOCK_PARAMS flag." - ); - - if (pSurface->bActive) { - if (pSurface->type != NNS_G2D_SURFACETYPE_MAIN3D) { - BeginRndCoreRendering2D_(pRendererInstance, pSurface); - } else { - BeginRndCoreRendering3D_(pRendererInstance, pSurface); - } - } - } - } - - NNS_G2dBeginRendering(pRendererInstance); -} - -void NNS_G2dEndRendering () { - NNS_G2D_NULL_ASSERT(pCurrentInstance_); - - G3_PopMtx(1); - - { - const u32 opzHint = pCurrentInstance_->opzHint; - if (opzHint != NNS_G2D_RDR_OPZHINT_NONE) { - if (opzHint & NNS_G2D_RDR_OPZHINT_NOT_SR) { - NNSi_G2dSetRndMtxStackSRTransformEnableFlag(TRUE); - } - - if (opzHint & NNS_G2D_RDR_OPZHINT_LOCK_PARAMS) { - EndRndCoreRendering_(); - } - - pCurrentInstance_->opzHint = NNS_G2D_RDR_OPZHINT_NONE; - } - } - - pCurrentInstance_ = NULL; -} - -void NNS_G2dDrawCell (const NNSG2dCellData * pCell) { - NNS_G2D_RND_BETWEEN_BEGINEND_ASSERT(pCurrentInstance_); - NNS_G2D_NULL_ASSERT(pCell); - - if (IsAutoZoffsetEnable_()) { - const fx32 offset = NNSi_G2dGetOamSoftEmuAutoZOffsetStep(); - NNSi_G2dSetOamSoftEmuAutoZOffsetFlag(TRUE); - NNSi_G2dSetOamSoftEmuAutoZOffsetStep(pCurrentInstance_->spriteZoffsetStep); - - DrawCellImpl_(pCell); - - NNSi_G2dSetOamSoftEmuAutoZOffsetFlag(FALSE); - NNSi_G2dSetOamSoftEmuAutoZOffsetStep(offset); - NNSi_G2dResetOamSoftEmuAutoZOffset(); - } else { - DrawCellImpl_(pCell); - } -} - -void NNS_G2dDrawCellAnimation (const NNSG2dCellAnimation * pCellAnim) { - NNS_G2D_RND_BETWEEN_BEGINEND_ASSERT(pCurrentInstance_); - NNS_G2D_NULL_ASSERT(pCellAnim); - - if (IsAutoZoffsetEnable_()) { - const fx32 offset = NNSi_G2dGetOamSoftEmuAutoZOffsetStep(); - NNSi_G2dSetOamSoftEmuAutoZOffsetFlag(TRUE); - NNSi_G2dSetOamSoftEmuAutoZOffsetStep(pCurrentInstance_->spriteZoffsetStep); - - DrawCellAnimationImpl_(pCellAnim); - - NNSi_G2dSetOamSoftEmuAutoZOffsetFlag(FALSE); - NNSi_G2dSetOamSoftEmuAutoZOffsetStep(offset); - NNSi_G2dResetOamSoftEmuAutoZOffset(); - } else { - DrawCellAnimationImpl_(pCellAnim); - } -} - -void NNS_G2dDrawMultiCell (const NNSG2dMultiCellInstance * pMC) { - u16 i; - NNS_G2D_RND_BETWEEN_BEGINEND_ASSERT(pCurrentInstance_); - NNS_G2D_NULL_ASSERT(pMC); - if (pMC->mcType == NNS_G2D_MCTYPE_SHARE_CELLANIM) { - for ( i = 0; i < pMC->pCurrentMultiCell->numCellAnim; i++ ) { - mcRenderState_.cellAnimMtxCacheTbl[i] = NULL; - } - mcRenderState_.bDrawMC = TRUE; - - if (IsAutoZoffsetEnable_()) { - const fx32 offset = NNSi_G2dGetOamSoftEmuAutoZOffsetStep(); - NNSi_G2dSetOamSoftEmuAutoZOffsetFlag(TRUE); - NNSi_G2dSetOamSoftEmuAutoZOffsetStep(pCurrentInstance_->spriteZoffsetStep); - - for ( i = 0; i < pMC->pCurrentMultiCell->numNodes; i++ ) { - DrawNode2_(pMC, &pMC->pCurrentMultiCell->pHierDataArray[i]); - } - - NNSi_G2dSetOamSoftEmuAutoZOffsetFlag(FALSE); - NNSi_G2dSetOamSoftEmuAutoZOffsetStep(offset); - NNSi_G2dResetOamSoftEmuAutoZOffset(); - } else { - for ( i = 0; i < pMC->pCurrentMultiCell->numNodes; i++ ) { - DrawNode2_(pMC, &pMC->pCurrentMultiCell->pHierDataArray[i]); - } - } - - mcRenderState_.bDrawMC = FALSE; - } else { - const NNSG2dNode * pNode = pMC->pCellAnimInstasnces; - if (IsAutoZoffsetEnable_()) { - const fx32 offset = NNSi_G2dGetOamSoftEmuAutoZOffsetStep(); - - NNSi_G2dSetOamSoftEmuAutoZOffsetFlag(TRUE); - NNSi_G2dSetOamSoftEmuAutoZOffsetStep(pCurrentInstance_->spriteZoffsetStep); - - for ( i = 0; i < pMC->pCurrentMultiCell->numNodes; i++ ) { - DrawNode_(&pNode[i]); - } - - NNSi_G2dSetOamSoftEmuAutoZOffsetFlag(FALSE); - NNSi_G2dSetOamSoftEmuAutoZOffsetStep(offset); - NNSi_G2dResetOamSoftEmuAutoZOffset(); - } else { - for ( i = 0; i < pMC->pCurrentMultiCell->numNodes; i++ ) { - DrawNode_(&pNode[i]); - } - } - } -} - -void NNS_G2dDrawMultiCellAnimation (const NNSG2dMultiCellAnimation * pMCAnim) { - NNS_G2D_RND_BETWEEN_BEGINEND_ASSERT(pCurrentInstance_); - NNS_G2D_NULL_ASSERT(pMCAnim); - - if (pMCAnim->srtCtrl.srtData.SRT_EnableFlag == NNS_G2D_AFFINEENABLE_NONE) { - NNS_G2dDrawMultiCell(&pMCAnim->multiCellInstance); - } else { - NNS_G2dPushMtx(); - SetSrtControlToMtxStack_(&pMCAnim->srtCtrl); - NNS_G2dDrawMultiCell(&pMCAnim->multiCellInstance); - NNS_G2dPopMtx(1); - } -} - -void NNS_G2dDrawEntity (NNSG2dEntity * pEntity) { - BOOL bAffined = FALSE; - - BOOL bPaletteChange = FALSE; - const NNSG2dPaletteSwapTable * pTbl = NULL; - - NNS_G2D_RND_BETWEEN_BEGINEND_ASSERT(pCurrentInstance_); - NNS_G2D_NULL_ASSERT(pEntity); - NNS_G2D_ASSERT_ENTITY_VALID(pEntity); - - bPaletteChange = NNS_G2dIsEntityPaletteTblEnable(pEntity); - if (bPaletteChange) { - pTbl = NNS_G2dGetRendererPaletteTbl(pCurrentInstance_); - NNS_G2dSetRendererPaletteTbl(pCurrentInstance_, pEntity->pPaletteTbl); - } - - { - switch (pEntity->pEntityData->type) { - case NNS_G2D_ENTITYTYPE_CELL: - { - NNSG2dCellAnimation * - pCellAnim = (NNSG2dCellAnimation *)pEntity->pDrawStuff; - NNS_G2D_NULL_ASSERT(pCellAnim); - NNS_G2dDrawCellAnimation(pCellAnim); - } - break; - case NNS_G2D_ENTITYTYPE_MULTICELL: - { - NNSG2dMultiCellAnimation * - pMCAnim = (NNSG2dMultiCellAnimation *)pEntity->pDrawStuff; - NNS_G2D_NULL_ASSERT(pMCAnim); - NNS_G2dDrawMultiCellAnimation(pMCAnim); - } - break; - default: - NNS_G2D_ASSERTMSG(FALSE, "TODO: msg "); - } - } - - if (bPaletteChange) { - if (pTbl != NULL) { - NNS_G2dSetRendererPaletteTbl(pCurrentInstance_, pTbl); - } else { - NNS_G2dResetRendererPaletteTbl(pCurrentInstance_); - } - } -} - -void NNS_G2dPushMtx () { - NNS_G2D_RND_BETWEEN_BEGINEND_ASSERT(pCurrentInstance_); - - if (!(pCurrentInstance_->opzHint & NNS_G2D_RDR_OPZHINT_NOT_SR)) { - const u16 lastPos = NNSi_G2dGetMtxStackPos(); - NNSi_G2dMtxPush(); - { - const u16 newPos = NNSi_G2dGetMtxStackPos(); - - NNSi_G2dMCMSetMtxStackPushed(newPos, lastPos); - } - } else { - NNSi_G2dMtxPush(); - } -} - -void NNS_G2dPopMtx () { - NNS_G2D_RND_BETWEEN_BEGINEND_ASSERT(pCurrentInstance_); - NNSi_G2dMtxPop(); -} - -void NNS_G2dTranslate (fx32 x, fx32 y, fx32 z) { - NNS_G2D_RND_BETWEEN_BEGINEND_ASSERT(pCurrentInstance_); - NNSi_G2dTranslate(x, y, z); -} - -void NNS_G2dSetTrans (fx32 x, fx32 y, fx32 z) { - NNS_G2D_RND_BETWEEN_BEGINEND_ASSERT(pCurrentInstance_); - NNSi_G2dSetTrans(x, y, z); -} - -void NNS_G2dScale (fx32 x, fx32 y, fx32 z) { -#pragma unused( z ) - NNS_G2D_RND_BETWEEN_BEGINEND_ASSERT(pCurrentInstance_); - NNSi_G2dScale(x, y); - - if (!NNSi_G2dIsRndCurrentMtxSRTransformed()) { - NNS_G2D_WARNING( - pCurrentInstance_->rendererCore.flipFlag == NNS_G2D_RENDERERFLIP_NONE, - "You can't use affine transformation using flip function." - ); - NNSi_G2dSetRndMtxStackSRTransformed(); - } - - NNSi_G2dMCMSetCurrentMtxSRChanged(); -} - -void NNS_G2dRotZ (fx32 sin, fx32 cos) { - NNS_G2D_RND_BETWEEN_BEGINEND_ASSERT(pCurrentInstance_); - NNSi_G2dRotate(sin, cos); - - if (!NNSi_G2dIsRndCurrentMtxSRTransformed()) { - NNS_G2D_WARNING( - pCurrentInstance_->rendererCore.flipFlag == NNS_G2D_RENDERERFLIP_NONE, - "You can't use affine transformation using flip function." - ); - NNSi_G2dSetRndMtxStackSRTransformed(); - } - - NNSi_G2dMCMSetCurrentMtxSRChanged(); -} - -void NNS_G2dSetRendererFlipMode (NNSG2dRendererInstance * pRend, BOOL bFlipH, BOOL bFlipV) { - NNS_G2D_WARNING( - !NNSi_G2dIsRndCurrentMtxSRTransformed(), - "You can't use the flip function using affine transformation." - ); - NNS_G2D_NULL_ASSERT(pRend); - - NNS_G2dSetRndCoreFlipMode(&pRend->rendererCore, bFlipH, bFlipV); -} - -void NNS_G2dSetRendererPaletteTbl (NNSG2dRendererInstance * pRend, const NNSG2dPaletteSwapTable * pTbl) { - NNS_G2D_NULL_ASSERT(pRend); - NNS_G2D_NULL_ASSERT(pTbl); - - pRend->pPaletteSwapTbl = pTbl; -} - -const NNSG2dPaletteSwapTable * NNS_G2dGetRendererPaletteTbl (NNSG2dRendererInstance * pRend) { - NNS_G2D_NULL_ASSERT(pRend); - - return pRend->pPaletteSwapTbl; -} - -void NNS_G2dResetRendererPaletteTbl (NNSG2dRendererInstance * pRend) { - NNS_G2D_NULL_ASSERT(pRend); - pRend->pPaletteSwapTbl = NULL; -} - -void NNS_G2dSetRendererImageProxy (NNSG2dRendererInstance * pRend, const NNSG2dImageProxy * pImgProxy, const NNSG2dImagePaletteProxy * pPltProxy) { - NNS_G2D_NULL_ASSERT(pRend); - NNS_G2D_NULL_ASSERT(pImgProxy); - NNS_G2D_NULL_ASSERT(pPltProxy); - - SDK_WARNING( - pImgProxy->attr.bExtendedPlt == pPltProxy->bExtendedPlt, - "Palette type mismatching was detected.\n Make sure that you use the correct palette." - ); - - NNS_G2D_WARNING( - !(pRend->opzHint & NNS_G2D_RDR_OPZHINT_LOCK_PARAMS), - "Avoid calling this function, when you specified the optimize flag NNS_G2D_RDR_OPZHINT_LOCK_PARAMS." - ); - - NNS_G2dSetRndCoreImageProxy(&pRend->rendererCore, pImgProxy, pPltProxy); -} diff --git a/subprojects/NitroSystem/libraries/g2d/src/g2d_RendererCore.c b/subprojects/NitroSystem/libraries/g2d/src/g2d_RendererCore.c deleted file mode 100644 index 08513ae937..0000000000 --- a/subprojects/NitroSystem/libraries/g2d/src/g2d_RendererCore.c +++ /dev/null @@ -1,784 +0,0 @@ - -#include - -#include "include/g2di_RendererMtxCache.h" - -#include -#include -#include - -#define NNSi_G2D_RNDCORE_DUMMY_FLAG FALSE -#define NNSi_G2D_RNDCORE_OAMENTORY_SUCCESSFUL TRUE - -static NNSG2dRndCoreInstance * pTheInstance_ = NULL; - -static const MtxFx32 mtxIdentity_ = { - FX32_ONE, 0, - 0, FX32_ONE, - 0, 0 -}; - -#define NNS_G2D_RND_BETWEEN_BEGINEND_ASSERT( ) \ - NNS_G2D_ASSERTMSG(pTheInstance_ != NULL, "Please call this method between Begin - End Rendering") - -#define NNS_G2D_RND_OUTSIDE_BEGINEND_ASSERT( ) \ - NNS_G2D_ASSERTMSG(pTheInstance_ == NULL, "Please call this method outside Begin - End Rendering") - -static NNS_G2D_INLINE u16 GetMtxCacheAffineIndex_ (const NNSG2dRndCore2DMtxCache * pMtxCache, NNSG2dSurfaceType surfaceType, OAM_FLIP flipType) { - return pMtxCache->affineIndex[flipType][surfaceType - NNS_G2D_SURFACETYPE_MAIN2D]; -} - -static NNS_G2D_INLINE void SetMtxCacheAffineIndex_ (NNSG2dRndCore2DMtxCache * pMtxCache, NNSG2dSurfaceType surfaceType, OAM_FLIP flipType, u16 affineIndex) { - pMtxCache->affineIndex[flipType][surfaceType - NNS_G2D_SURFACETYPE_MAIN2D] = affineIndex; -} - -static NNS_G2D_INLINE BOOL IsMtxCacheRegisteredAsAffineParams_ (const u16 affineIdx) { - return (affineIdx != MtxCache_NOT_AVAILABLE) ? TRUE : FALSE; -} - -static NNS_G2D_INLINE const MtxFx32 * RndCoreGetCurrentMtx_ () { - if (pTheInstance_->pCurrentMxt) { - return pTheInstance_->pCurrentMxt; - } else { - return &mtxIdentity_; - } -} - -static NNS_G2D_INLINE BOOL IsRndCore2DAffineTransformed_ (const NNSG2dRndCoreInstance * pRnd) { - return (BOOL)(pRnd->flipFlag == NNS_G2D_RENDERERFLIP_NONE && - pRnd->pCurrentMtxCacheFor2D != NULL); -} - -static NNS_G2D_INLINE int GetShiftToConvByteTo2DChar_ (GXOBJVRamModeChar mappingType) { - int shift = (REG_GX_DISPCNT_EXOBJ_MASK & mappingType) >> REG_GX_DISPCNT_EXOBJ_SHIFT; - return shift; -} - -static NNS_G2D_INLINE BOOL IsAlignedShiftValueBoundary_ (u32 sizeByte, int shiftBit) { - const int mask = (0x1 << shiftBit) - 1; - return (BOOL)((mask & sizeByte) == 0); -} - -static NNS_G2D_INLINE u32 GetNum2DCharacter_ (u32 sizeByte, GXOBJVRamModeChar mappingType) { - const int shiftBit = 5 + GetShiftToConvByteTo2DChar_(mappingType); - u32 numChar = sizeByte >> shiftBit; - - NNS_G2D_ASSERT(IsAlignedShiftValueBoundary_(sizeByte, shiftBit)); - - return numChar; -} - -static NNS_G2D_INLINE u32 GetTexBaseAddr3D_ (const NNSG2dImageProxy * pImgProxy) { - NNS_G2D_NULL_ASSERT(pImgProxy); - if (NNS_G2dIsImageReadyToUse(pImgProxy, NNS_G2D_VRAM_TYPE_3DMAIN)) { - return NNS_G2dGetImageLocation(pImgProxy, NNS_G2D_VRAM_TYPE_3DMAIN); - } else { - return 0; - } -} - -static NNS_G2D_INLINE u32 GetPltBaseAddr3D_ (const NNSG2dImagePaletteProxy * pPltProxy) { - NNS_G2D_NULL_ASSERT(pPltProxy); - if (NNS_G2dIsImagePaletteReadyToUse(pPltProxy, NNS_G2D_VRAM_TYPE_3DMAIN)) { - return NNS_G2dGetImagePaletteLocation(pPltProxy, NNS_G2D_VRAM_TYPE_3DMAIN); - } else { - return 0; - } -} - -static NNS_G2D_INLINE NNS_G2D_VRAM_TYPE SurfaceTypeToVramType_ (NNSG2dSurfaceType surfaceType) { - return (NNS_G2D_VRAM_TYPE)surfaceType; -} - -static NNS_G2D_INLINE u32 GetCharacterBase2D_ (const NNSG2dImageProxy * pImgProxy, NNSG2dSurfaceType type) { - NNS_G2D_NULL_ASSERT(pImgProxy); - NNS_G2D_ASSERT( - type == NNS_G2D_SURFACETYPE_MAIN2D || - type == NNS_G2D_SURFACETYPE_SUB2D - ); - - { - const NNS_G2D_VRAM_TYPE vramType = SurfaceTypeToVramType_(type); - - if (NNS_G2dIsImageReadyToUse(pImgProxy, vramType)) { - u32 baseAddr = NNS_G2dGetImageLocation(pImgProxy, vramType); - - return GetNum2DCharacter_(baseAddr, pImgProxy->attr.mappingType); - } else { - return 0; - } - } -} - -static NNS_G2D_INLINE BOOL IsOamAttrDoubleAffineMode_ (const GXOamAttr * pAttr) { - return (BOOL)(pAttr->rsMode == 0x3); -} - -static NNS_G2D_INLINE void HandleCellCallBackFunc_ (NNSG2dRndCoreDrawCellCallBack pFunc, const NNSG2dCellData * pCell) { - if (pFunc) { - (*pFunc)(pTheInstance_, pCell); - } -} - -static NNS_G2D_INLINE void HandleCellOamBackFunc_ (NNSG2dRndCoreDrawOamCallBack pFunc, const NNSG2dCellData * pCell, u16 oamIdx) { - if (pFunc) { - (*pFunc)(pTheInstance_, pCell, oamIdx); - } -} - -static NNS_G2D_INLINE void MakeFlipMtx_ (const MtxFx22 * pMtxSrc, MtxFx22 * pMtxDst, OAM_FLIP type) { - NNS_G2D_NULL_ASSERT(pMtxSrc); - NNS_G2D_NULL_ASSERT(pMtxDst); - - { - *pMtxDst = *pMtxSrc; - - if (type & OAM_FLIP_H) { - pMtxDst->_00 = -pMtxDst->_00; - pMtxDst->_01 = -pMtxDst->_01; - } - - if (type & OAM_FLIP_V) { - pMtxDst->_10 = -pMtxDst->_10; - pMtxDst->_11 = -pMtxDst->_11; - } - } -} - -static NNS_G2D_INLINE u16 LoadMtxCacheAsAffineParams_ (NNSG2dRndCore2DMtxCache * pMtxCache, const NNSG2dRndCoreSurface * pSurface, OAM_FLIP type) { - u16 affineIdx = GetMtxCacheAffineIndex_(pMtxCache, pSurface->type, type); - - if (!IsMtxCacheRegisteredAsAffineParams_(affineIdx)) { - NNS_G2D_NULL_ASSERT(pTheInstance_->pFuncOamAffineRegister); - - { - if (type == OAM_FLIP_NONE) { - affineIdx = (*pTheInstance_->pFuncOamAffineRegister)(&pMtxCache->m22); - } else { - MtxFx22 mtxTemp; - MakeFlipMtx_(&pMtxCache->m22, &mtxTemp, type); - affineIdx = (*pTheInstance_->pFuncOamAffineRegister)(&mtxTemp); - } - - SetMtxCacheAffineIndex_(pMtxCache, pSurface->type, type, affineIdx); - } - } - - return affineIdx; -} - -static NNS_G2D_INLINE NNS_G2D_VRAM_TYPE ConvertSurfaceTypeToVramType_ (NNSG2dSurfaceType surfaceType) { - return (NNS_G2D_VRAM_TYPE)(surfaceType); -} - -static NNS_G2D_INLINE u16 GetFlipedOBJPosX_ (GXOamAttr * pOam, const GXOamShape shape) { - return NNS_G2dIsRndCoreFlipH(pTheInstance_) ? - (u16)(-NNS_G2dRepeatXinCellSpace((s16)pOam->x) - NNS_G2dGetOamSizeX(&shape)): - (u16)NNS_G2dRepeatXinCellSpace((s16)pOam->x); -} - -static NNS_G2D_INLINE u16 GetFlipedOBJPosY_ (GXOamAttr * pOam, const GXOamShape shape) { - return NNS_G2dIsRndCoreFlipV(pTheInstance_) ? - (u16)(-NNS_G2dRepeatYinCellSpace((s16)pOam->y) - NNS_G2dGetOamSizeY(&shape)) : - (u16)NNS_G2dRepeatYinCellSpace((s16)pOam->y); -} - -static NNS_G2D_INLINE void OverwriteOamFlipFlag_ (GXOamAttr * pOam) { - NNS_G2D_NULL_ASSERT(pOam); - { - const BOOL bFlipH = - NNS_G2dIsRndCoreFlipH(pTheInstance_) ^ NNSi_G2dGetOamFlipH(pOam); - const BOOL bFlipV = - NNS_G2dIsRndCoreFlipV(pTheInstance_) ^ NNSi_G2dGetOamFlipV(pOam); - - pOam->attr01 &= ~GX_OAM_ATTR01_HF_MASK; - pOam->attr01 |= bFlipH << GX_OAM_ATTR01_HF_SHIFT; - - pOam->attr01 &= ~GX_OAM_ATTR01_VF_MASK; - pOam->attr01 |= bFlipV << GX_OAM_ATTR01_VF_SHIFT; - } -} - -static void DoAffineTransforme_ (const MtxFx22 * pMtxSR, GXOamAttr * pOam, NNSG2dFVec2 * pBaseTrans) { - NNSG2dFVec2 objTrans; - GXOamEffect effectTypeAfter; - - NNS_G2dGetOamTransFx32(pOam, &objTrans); - - NNSi_G2dRemovePositionAdjustmentFromDoubleAffineOBJ(pOam, &objTrans); - - MulMtx22(pMtxSR, &objTrans, &objTrans); - - if (pTheInstance_->affineOverwriteMode != NNS_G2D_RND_AFFINE_OVERWRITE_NONE) { - if (pTheInstance_->affineOverwriteMode == NNS_G2D_RND_AFFINE_OVERWRITE_DOUBLE) { - effectTypeAfter = GX_OAM_EFFECT_AFFINE_DOUBLE; - } else { - effectTypeAfter = GX_OAM_EFFECT_AFFINE; - } - - G2_SetOBJEffect(pOam, effectTypeAfter, 0); - } - - { - const BOOL bShouldAdjust = G2_GetOBJEffect(pOam) == GX_OAM_EFFECT_AFFINE_DOUBLE; - - NNSi_G2dAdjustDifferenceOfRotateOrientation( - pOam, - pMtxSR, - &objTrans, - bShouldAdjust - ); - } - - objTrans.x += pBaseTrans->x; - objTrans.y += pBaseTrans->y; - G2_SetOBJPosition(pOam, objTrans.x >> FX32_SHIFT, objTrans.y >> FX32_SHIFT); -} - -static NNS_G2D_INLINE void DoFlipTransforme_ (GXOamAttr * pOam, NNSG2dFVec2 * pBaseTrans) { - if (pTheInstance_->flipFlag != NNS_G2D_RENDERERFLIP_NONE) { - const GXOamShape shape = NNS_G2dGetOAMSize(pOam); - - OverwriteOamFlipFlag_(pOam); - - if (NNS_G2dIsRndCoreFlipH(pTheInstance_)) { - pOam->x = -pOam->x - NNS_G2dGetOamSizeX(&shape); - } - - if (NNS_G2dIsRndCoreFlipV(pTheInstance_)) { - pOam->y = (u8)(-pOam->y - NNS_G2dGetOamSizeY(&shape)); - } - } - - pOam->x += pBaseTrans->x >> FX32_SHIFT; - pOam->y += pBaseTrans->y >> FX32_SHIFT; -} - -static BOOL IsRndCoreReadyForBeginRendering_ (NNSG2dRndCoreInstance * pRnd) { - NNS_G2D_NULL_ASSERT(pRnd); - { - if (!(pRnd->pImgProxy && pRnd->pPltProxy)) { - OS_Warning("RendererCore:ImageProxy isn't ready."); - return FALSE; - } - - if (pRnd->pCurrentTargetSurface == NULL) { - OS_Warning("RendererCore:TragetSurface isn't ready."); - return FALSE; - } else { - if (!pRnd->pCurrentTargetSurface->bActive) { - OS_Warning("RendererCore:The current tragetSurface isn't active. Is it OK?"); - } - } - - if (pRnd->pCurrentTargetSurface->type == NNS_G2D_SURFACETYPE_MAIN2D || - pRnd->pCurrentTargetSurface->type == NNS_G2D_SURFACETYPE_SUB2D) { - if - ( - (pRnd->pFuncOamAffineRegister == NULL && - pRnd->pFuncOamRegister == NULL) - ) { - OS_Warning("RendererCore:OAM-RegisterFunction For 2D Graphics Engine rendering isn't ready."); - return FALSE; - } - } - } - - return TRUE; -} - -static void DrawCellToSurface2D_ (const NNSG2dRndCoreSurface * pSurface, const NNSG2dCellData * pCell) { - NNSG2dFVec2 baseTrans; - MtxFx22 mtxSR; - const MtxFx32 * pCurrMtx = RndCoreGetCurrentMtx_(); - - NNS_G2D_NULL_ASSERT(pSurface); - NNS_G2D_NULL_ASSERT(pCell); - - NNSi_G2dGetMtxTrans(pCurrMtx, &baseTrans); - - baseTrans.x -= pSurface->viewRect.posTopLeft.x; - baseTrans.y -= pSurface->viewRect.posTopLeft.y; - - { - const u32 baseCharOffset = pTheInstance_->base2DCharOffset; - const BOOL bAffined = IsRndCore2DAffineTransformed_(pTheInstance_); - - u16 i; - GXOamAttr * pTempOam = &pTheInstance_->currentOam; - u16 oamAffinIdx = NNS_G2D_OAM_AFFINE_IDX_NONE; - - for ( i = 0; i < pCell->numOAMAttrs; i++ ) { - pTheInstance_->bDrawEnable = TRUE; - NNS_G2dCopyCellAsOamAttr(pCell, i, pTempOam); - - HandleCellOamBackFunc_(pSurface->pBeforeDrawOamBackFunc, pCell, i); - - if (!pTheInstance_->bDrawEnable) { - continue; - } - - pTempOam->charNo += baseCharOffset; - - if (bAffined) { - oamAffinIdx = - LoadMtxCacheAsAffineParams_( - pTheInstance_->pCurrentMtxCacheFor2D, - pSurface, - TO_OAM_FLIP( - NNSi_G2dGetOamFlipH(pTempOam), - NNSi_G2dGetOamFlipV(pTempOam) - ) - ); - NNSi_G2dGetMtxRS(pCurrMtx, &mtxSR); - DoAffineTransforme_(&mtxSR, pTempOam, &baseTrans); - } else { - oamAffinIdx = NNS_G2D_OAM_AFFINE_IDX_NONE; - DoFlipTransforme_(pTempOam, &baseTrans); - } - - NNS_G2D_NULL_ASSERT(pTheInstance_->pFuncOamRegister); - - if (NNSi_G2D_RNDCORE_OAMENTORY_SUCCESSFUL - != (*pTheInstance_->pFuncOamRegister)( - pTempOam, - oamAffinIdx, - NNSi_G2D_RNDCORE_DUMMY_FLAG - )) { - return; - } - - HandleCellOamBackFunc_(pSurface->pAfterDrawOamBackFunc, pCell, i); - } - } -} - -static void DrawOamToSurface3D_ (GXOamAttr * pOam) { - G3_LoadMtx43(&pTheInstance_->mtxFor3DGE); - - if (pTheInstance_->flipFlag != NNS_G2D_RENDERERFLIP_NONE) { - const GXOamShape shape = NNS_G2dGetOAMSize(pOam); - - const s16 posX = (s16)GetFlipedOBJPosX_(pOam, shape); - const s16 posY = (s16)GetFlipedOBJPosY_(pOam, shape); - const s16 posZ = -1; - - OverwriteOamFlipFlag_(pOam); - - NNS_G2dDrawOneOam3DDirectWithPosFast( - posX, posY, posZ, - pOam, - &pTheInstance_->pImgProxy->attr, - pTheInstance_->baseTexAddr3D, - pTheInstance_->basePltAddr3D - ); - } else { - const s16 posX = (s16)NNS_G2dRepeatXinCellSpace((s16)pOam->x); - const s16 posY = (s16)NNS_G2dRepeatYinCellSpace((s16)pOam->y); - const s16 posZ = -1; - - NNS_G2dDrawOneOam3DDirectWithPosFast( - posX, posY, posZ, - pOam, - &pTheInstance_->pImgProxy->attr, - pTheInstance_->baseTexAddr3D, - pTheInstance_->basePltAddr3D - ); - } -} - -static void DrawCellToSurface3D_ (const NNSG2dRndCoreSurface * pSurface, const NNSG2dCellData * pCell) { - u16 i = 0; - - GXOamAttr * pTempOam = &pTheInstance_->currentOam; - - NNS_G2D_NULL_ASSERT(pSurface); - NNS_G2D_NULL_ASSERT(pCell); - - for ( i = 0; i < pCell->numOAMAttrs; i++ ) { - pTheInstance_->bDrawEnable = TRUE; - NNS_G2dCopyCellAsOamAttr(pCell, i, pTempOam); - - HandleCellOamBackFunc_(pSurface->pBeforeDrawOamBackFunc, pCell, i); - if (pTheInstance_->bDrawEnable) { - DrawOamToSurface3D_(pTempOam); - } - - HandleCellOamBackFunc_(pSurface->pAfterDrawOamBackFunc, pCell, i); - } -} - -static NNS_G2D_INLINE void DrawCellImpl_ (const NNSG2dCellData * pCell, u32 cellVramTransferHandle) { - const NNSG2dRndCoreSurface * pSurface = pTheInstance_->pCurrentTargetSurface; - - if (!pSurface->bActive) { - return; - } - - pTheInstance_->bDrawEnable = TRUE; - HandleCellCallBackFunc_(pSurface->pBeforeDrawCellBackFunc, pCell); - if (pTheInstance_->bDrawEnable) { - if (cellVramTransferHandle != NNS_G2D_INVALID_CELL_TRANSFER_STATE_HANDLE) { - NNSi_G2dSetVramTransferCellDrawnFlag - ( - cellVramTransferHandle, - ConvertSurfaceTypeToVramType_(pSurface->type), - TRUE - ); - } - - switch (pSurface->type) { - case NNS_G2D_SURFACETYPE_MAIN3D: - DrawCellToSurface3D_(pSurface, pCell); - break; - case NNS_G2D_SURFACETYPE_MAIN2D: - case NNS_G2D_SURFACETYPE_SUB2D: - DrawCellToSurface2D_(pSurface, pCell); - break; - case NNS_G2D_SURFACETYPE_MAX: - default: - NNS_G2D_ASSERT(FALSE); - } - } - HandleCellCallBackFunc_(pSurface->pAfterDrawCellBackFunc, pCell); -} - -void NNS_G2dInitRndCore (NNSG2dRndCoreInstance * pRnd) { - MI_CpuFill16(pRnd, 0x0, sizeof(NNSG2dRndCoreInstance)); - - pRnd->pCurrentTargetSurface = NULL; - - pRnd->affineOverwriteMode = NNS_G2D_RND_AFFINE_OVERWRITE_DOUBLE; - - pRnd->pImgProxy = NULL; - pRnd->pPltProxy = NULL; - - pRnd->flipFlag = NNS_G2D_RENDERERFLIP_NONE; - - pRnd->bDrawEnable = TRUE; - - pRnd->pCurrentMtxCacheFor2D = NULL; -} - -void NNS_G2dInitRndCoreSurface (NNSG2dRndCoreSurface * pSurface) { - MI_CpuFill16(pSurface, 0x0, sizeof(NNSG2dRndCoreSurface)); - - pSurface->bActive = TRUE; - pSurface->type = NNS_G2D_SURFACETYPE_MAX; -} - -void NNS_G2dSetRndCoreImageProxy (NNSG2dRndCoreInstance * pRnd, const NNSG2dImageProxy * pImgProxy, const NNSG2dImagePaletteProxy * pPltProxy) { - NNS_G2D_RND_OUTSIDE_BEGINEND_ASSERT(); - NNS_G2D_NULL_ASSERT(pRnd); - NNS_G2D_NULL_ASSERT(pImgProxy); - NNS_G2D_NULL_ASSERT(pPltProxy); - - pRnd->pImgProxy = pImgProxy; - pRnd->pPltProxy = pPltProxy; -} - -void NNS_G2dSetRndCoreOamRegisterFunc (NNSG2dRndCoreInstance * pRnd, NNSG2dOamRegisterFunction pFuncOamRegister, NNSG2dAffineRegisterFunction pFuncOamAffineRegister) { - NNS_G2D_RND_OUTSIDE_BEGINEND_ASSERT(); - NNS_G2D_NULL_ASSERT(pRnd); - NNS_G2D_NULL_ASSERT(pFuncOamRegister); - NNS_G2D_NULL_ASSERT(pFuncOamAffineRegister); - - pRnd->pFuncOamRegister = pFuncOamRegister; - pRnd->pFuncOamAffineRegister = pFuncOamAffineRegister; -} - -void NNS_G2dSetRndCoreAffineOverwriteMode (NNSG2dRndCoreInstance * pRnd, NNSG2dRendererAffineTypeOverwiteMode mode) { - NNS_G2D_NULL_ASSERT(pRnd); - - pRnd->affineOverwriteMode = mode; -} - -void NNS_G2dSetRndCoreCurrentMtx3D (const MtxFx32 * pCurrentMxt) { - NNS_G2D_RND_BETWEEN_BEGINEND_ASSERT(); - NNS_G2D_NULL_ASSERT(pCurrentMxt); - NNS_G2D_WARNING( - pTheInstance_->pCurrentTargetSurface->type == NNS_G2D_SURFACETYPE_MAIN3D, - "This method works only for 3D graphics engine rendering." - ); - - { - NNSG2dRndCoreInstance * pRnd = pTheInstance_; - - pRnd->pCurrentMxt = pCurrentMxt; - - { - { - pRnd->mtxFor3DGE._00 = pCurrentMxt->_00; - pRnd->mtxFor3DGE._01 = pCurrentMxt->_01; - pRnd->mtxFor3DGE._02 = 0; - - pRnd->mtxFor3DGE._10 = pCurrentMxt->_10; - pRnd->mtxFor3DGE._11 = pCurrentMxt->_11; - pRnd->mtxFor3DGE._12 = 0; - - pRnd->mtxFor3DGE._20 = 0; - pRnd->mtxFor3DGE._21 = 0; - pRnd->mtxFor3DGE._22 = FX32_ONE; - - pRnd->mtxFor3DGE._30 = pCurrentMxt->_20; - pRnd->mtxFor3DGE._31 = pCurrentMxt->_21; - pRnd->mtxFor3DGE._32 = pRnd->zFor3DSoftwareSprite; - } - } - } -} - -static BOOL CheckMtx2DParamsValid (const MtxFx32 * pMtx, NNSG2dRndCore2DMtxCache * pCurrentMtxCacheFor2D) { - if (!(pMtx->_00 == FX32_ONE && pMtx->_01 == 0 && - pMtx->_10 == 0 && pMtx->_11 == FX32_ONE)) { - if (pCurrentMtxCacheFor2D == NULL) { - NNS_G2D_WARNING( - FALSE, - "Make sure that you have to specified the affine-mtx for the 2D graphics engine when you use affine transformation." - ); - return FALSE; - } - } else { - } - return TRUE; -} - -void NNS_G2dSetRndCoreCurrentMtx2D (const MtxFx32 * pMtx, NNSG2dRndCore2DMtxCache * pCurrentMtxCacheFor2D) { - NNS_G2D_RND_BETWEEN_BEGINEND_ASSERT(); - NNS_G2D_NULL_ASSERT(pMtx); - - NNS_G2D_WARNING( - pTheInstance_->pCurrentTargetSurface->type != NNS_G2D_SURFACETYPE_MAIN3D, - "This method works only for 2D graphics engine rendering." - ); - NNS_G2D_ASSERT(CheckMtx2DParamsValid(pMtx, pCurrentMtxCacheFor2D)); - - { - NNSG2dRndCoreInstance * pRnd = pTheInstance_; - - pRnd->pCurrentMxt = pMtx; - pRnd->pCurrentMtxCacheFor2D = pCurrentMtxCacheFor2D; - } -} - -void NNS_G2dSetRndCore3DSoftSpriteZvalue (NNSG2dRndCoreInstance * pRnd, fx32 z) { - pRnd->zFor3DSoftwareSprite = z; -} - -void NNS_G2dSetRndCoreSurface (NNSG2dRndCoreInstance * pRnd, NNSG2dRndCoreSurface * pSurface) { - NNS_G2D_RND_OUTSIDE_BEGINEND_ASSERT(); - NNS_G2D_NULL_ASSERT(pRnd); - NNS_G2D_NULL_ASSERT(pSurface); - - pRnd->pCurrentTargetSurface = pSurface; -} - -BOOL NNS_G2dIsRndCoreFlipH (const NNSG2dRndCoreInstance * pRnd) { - NNS_G2D_NULL_ASSERT(pRnd); - return (BOOL)((pRnd->flipFlag & NNS_G2D_RENDERERFLIP_H) != 0); -} - -BOOL NNS_G2dIsRndCoreFlipV (const NNSG2dRndCoreInstance * pRnd) { - NNS_G2D_NULL_ASSERT(pRnd); - return (BOOL)((pRnd->flipFlag & NNS_G2D_RENDERERFLIP_V) != 0); -} - -void NNS_G2dSetRndCoreFlipMode (NNSG2dRndCoreInstance * pRnd, BOOL bFlipH, BOOL bFlipV) { - NNS_G2D_NULL_ASSERT(pRnd); - NNS_G2D_WARNING( - pRnd->pCurrentMtxCacheFor2D == NULL, - "You can't use the flip function using affine transformation." - ); - - if (bFlipH) { - pRnd->flipFlag |= NNS_G2D_RENDERERFLIP_H; - } else { - pRnd->flipFlag &= ~NNS_G2D_RENDERERFLIP_H; - } - - if (bFlipV) { - pRnd->flipFlag |= NNS_G2D_RENDERERFLIP_V; - } else { - pRnd->flipFlag &= ~NNS_G2D_RENDERERFLIP_V; - } -} - -void NNS_G2dRndCoreBeginRendering (NNSG2dRndCoreInstance * pRnd) { - NNS_G2D_NULL_ASSERT(pRnd); - NNS_G2D_ASSERT(pTheInstance_ == NULL); - NNS_G2D_ASSERTMSG( - IsRndCoreReadyForBeginRendering_(pRnd), - "NNSG2dRndCoreInstance isn't ready to begin rendering." - ); - - pTheInstance_ = pRnd; - - if (pRnd->pCurrentTargetSurface->type == NNS_G2D_SURFACETYPE_MAIN3D) { - G3_MtxMode(GX_MTXMODE_PROJECTION); - G3_PushMtx(); - G3_Translate( - -pRnd->pCurrentTargetSurface->viewRect.posTopLeft.x, - -pRnd->pCurrentTargetSurface->viewRect.posTopLeft.y, 0 - ); - G3_MtxMode(GX_MTXMODE_POSITION); - - pRnd->baseTexAddr3D = GetTexBaseAddr3D_(pTheInstance_->pImgProxy); - pRnd->basePltAddr3D = GetPltBaseAddr3D_(pTheInstance_->pPltProxy); - } else { - pTheInstance_->base2DCharOffset - = GetCharacterBase2D_( - pTheInstance_->pImgProxy, - pTheInstance_->pCurrentTargetSurface->type - ); - } -} - -void NNS_G2dRndCoreEndRendering (void) { - NNS_G2D_NULL_ASSERT(pTheInstance_); - - if (pTheInstance_->pCurrentTargetSurface->type == NNS_G2D_SURFACETYPE_MAIN3D) { - G3_MtxMode(GX_MTXMODE_PROJECTION); - G3_PopMtx(1); - G3_MtxMode(GX_MTXMODE_POSITION); - } else { - pTheInstance_->base2DCharOffset = 0; - - pTheInstance_->pCurrentMxt = NULL; - pTheInstance_->pCurrentMtxCacheFor2D = NULL; - } - pTheInstance_ = NULL; -} - -void NNS_G2dRndCoreDrawCell (const NNSG2dCellData * pCell) { - NNS_G2D_RND_BETWEEN_BEGINEND_ASSERT(); - NNS_G2D_NULL_ASSERT(pCell); - - DrawCellImpl_(pCell, NNS_G2D_INVALID_CELL_TRANSFER_STATE_HANDLE); -} - -void NNS_G2dRndCoreDrawCellVramTransfer (const NNSG2dCellData * pCell, u32 cellVramTransferHandle) { - NNS_G2D_RND_BETWEEN_BEGINEND_ASSERT(); - NNS_G2D_NULL_ASSERT(pCell); - - NNS_G2D_ASSERT(cellVramTransferHandle != NNS_G2D_INVALID_CELL_TRANSFER_STATE_HANDLE); - DrawCellImpl_(pCell, cellVramTransferHandle); -} - -void NNS_G2dRndCoreDrawCellFast2D (const NNSG2dCellData * pCell) { - const NNSG2dRndCoreSurface * pSurface = pTheInstance_->pCurrentTargetSurface; - NNSG2dFVec2 baseTrans; - const MtxFx32 * pCurrMtx = RndCoreGetCurrentMtx_(); - - NNS_G2D_RND_BETWEEN_BEGINEND_ASSERT(); - - NNS_G2D_ASSERTMSG( - pSurface->type == NNS_G2D_SURFACETYPE_MAIN2D || - pSurface->type == NNS_G2D_SURFACETYPE_SUB2D, - "This method can work only for the 2D Graphics Engine." - ); - - NNS_G2D_ASSERTMSG( - pTheInstance_->pCurrentMtxCacheFor2D == NULL, - "You can't use this method using affine transfomation." - ); - NNS_G2D_NULL_ASSERT(pCell); - - NNSi_G2dGetMtxTrans(pCurrMtx, &baseTrans); - - baseTrans.x -= pSurface->viewRect.posTopLeft.x; - baseTrans.y -= pSurface->viewRect.posTopLeft.y; - - { - u16 i; - GXOamAttr * pTempOam; - const u32 baseCharOffset = pTheInstance_->base2DCharOffset; - - for ( i = 0; i < pCell->numOAMAttrs; i++ ) { - pTempOam = &pTheInstance_->currentOam; - - NNS_G2dCopyCellAsOamAttr(pCell, i, pTempOam); - - DoFlipTransforme_(pTempOam, &baseTrans); - - pTempOam->charNo += baseCharOffset; - - NNS_G2D_NULL_ASSERT(pTheInstance_->pFuncOamRegister); - if (FALSE == (*pTheInstance_->pFuncOamRegister)(pTempOam, NNS_G2D_OAM_AFFINE_IDX_NONE, FALSE)) { - return; - } - } - } -} - -void NNS_G2dSetRndCoreCellCloneSource3D (const NNSG2dCellData * pCell) { - NNS_G2D_RND_BETWEEN_BEGINEND_ASSERT(); - NNS_G2D_ASSERTMSG( - pTheInstance_->pCurrentTargetSurface->type == NNS_G2D_SURFACETYPE_MAIN3D, - "This method can work only for the 3D Graphics Engine." - ); - NNS_G2D_NULL_ASSERT(pCell); - - { - GXOamAttr * pOam = &pTheInstance_->currentOam; - - NNS_G2dCopyCellAsOamAttr(pCell, 0, pOam); - - OverwriteOamFlipFlag_(pOam); - - NNS_G2dSetOamSoftEmuSpriteParamCache - ( - pOam, - &pTheInstance_->pImgProxy->attr, - pTheInstance_->baseTexAddr3D, - pTheInstance_->basePltAddr3D - ); - } -} - -void NNS_G2dRndCoreDrawCellClone3D (const NNSG2dCellData * pCell) { - u16 i = 0; - - GXOamAttr * pOam = &pTheInstance_->currentOam; - - NNS_G2D_RND_BETWEEN_BEGINEND_ASSERT(); - NNS_G2D_ASSERTMSG( - pTheInstance_->pCurrentTargetSurface->type == NNS_G2D_SURFACETYPE_MAIN3D, - "This method can work only for the 3D Graphics Engine." - ); - NNS_G2D_NULL_ASSERT(pTheInstance_->pCurrentTargetSurface); - NNS_G2D_NULL_ASSERT(pCell); - - if (pTheInstance_->flipFlag != NNS_G2D_RENDERERFLIP_NONE) { - for ( i = 0; i < pCell->numOAMAttrs; i++ ) { - NNS_G2dCopyCellAsOamAttr(pCell, i, pOam); - - G3_LoadMtx43(&pTheInstance_->mtxFor3DGE); - - { - const GXOamShape shape = NNS_G2dGetOAMSize(pOam); - - const s16 posX = (s16)GetFlipedOBJPosX_(pOam, shape); - const s16 posY = (s16)GetFlipedOBJPosY_(pOam, shape); - const s16 posZ = -1; - - OverwriteOamFlipFlag_(pOam); - - NNS_G2dDrawOneOam3DDirectUsingParamCacheFast(posX, posY, posZ, pOam); - } - } - } else { - for ( i = 0; i < pCell->numOAMAttrs; i++ ) { - NNS_G2dCopyCellAsOamAttr(pCell, i, pOam); - - G3_LoadMtx43(&pTheInstance_->mtxFor3DGE); - - { - const s16 posX = (s16)NNS_G2dRepeatXinCellSpace((s16)pOam->x); - const s16 posY = (s16)NNS_G2dRepeatYinCellSpace((s16)pOam->y); - const s16 posZ = -1; - - NNS_G2dDrawOneOam3DDirectUsingParamCacheFast(posX, posY, posZ, pOam); - } - } - } -} diff --git a/subprojects/NitroSystem/libraries/g2d/src/g2d_SRTControl.c b/subprojects/NitroSystem/libraries/g2d/src/g2d_SRTControl.c deleted file mode 100644 index b54650c62e..0000000000 --- a/subprojects/NitroSystem/libraries/g2d/src/g2d_SRTControl.c +++ /dev/null @@ -1,87 +0,0 @@ -#include -#include - -#define ASSERT_SRTControlType_VALID(val) \ - NNS_G2D_MINMAX_ASSERT((val), NNS_G2D_SRTCONTROLTYPE_SRT, NNS_G2D_SRTCONTROLTYPE_MTX3D) - -#define ASSERT_SRT_MODE(val) NNS_G2D_ASSERTMSG( \ - (val) == NNS_G2D_SRTCONTROLTYPE_SRT, \ - "You can use the function only if its NNSG2dSRTControlType is NNS_G2D_SRTCONTROLTYPE_SRT" \ -); - -void NNSi_G2dSrtcSetTrans (NNSG2dSRTControl * pCtrl, s16 x, s16 y) { - if (pCtrl->type == NNS_G2D_SRTCONTROLTYPE_SRT) { - NNSi_G2dSrtcAffineFlagON(pCtrl, NNS_G2D_AFFINEENABLE_TRANS); - - pCtrl->srtData.trans.x = x; - pCtrl->srtData.trans.y = y; - } else { - NNS_G2D_ASSERTMSG(FALSE, "NOT implemented, avoid calling me"); - } -} - -void NNSi_G2dSrtcSetSRTRotZ (NNSG2dSRTControl * pCtrl, u16 rotZ) { - if (pCtrl->type == NNS_G2D_SRTCONTROLTYPE_SRT) { - NNSi_G2dSrtcAffineFlagON(pCtrl, NNS_G2D_AFFINEENABLE_ROTATE); - - pCtrl->srtData.rotZ = rotZ; - } else { - NNS_G2D_ASSERTMSG(FALSE, "NOT implemented, avoid calling me"); - } -} - -void NNSi_G2dSrtcSetSRTScale (NNSG2dSRTControl * pCtrl, fx32 x, fx32 y) { - if (pCtrl->type == NNS_G2D_SRTCONTROLTYPE_SRT) { - NNSi_G2dSrtcAffineFlagON(pCtrl, NNS_G2D_AFFINEENABLE_SCALE); - - pCtrl->srtData.scale.x = x; - pCtrl->srtData.scale.y = y; - } else { - NNS_G2D_ASSERTMSG(FALSE, "NOT implemented, avoid calling me"); - } -} - -void NNSi_G2dSrtcInitControl (NNSG2dSRTControl * pCtrl, NNSG2dSRTControlType type) { - NNS_G2D_NULL_ASSERT(pCtrl); - ASSERT_SRTControlType_VALID(type); - - pCtrl->type = type; - - NNSi_G2dSrtcSetInitialValue(pCtrl); -} - -void NNSi_G2dSrtcSetInitialValue (NNSG2dSRTControl * pCtrl) { - NNS_G2D_NULL_ASSERT(pCtrl); - ASSERT_SRT_MODE(pCtrl->type); - - MI_CpuFill16(&pCtrl->srtData, 0, sizeof(NNSG2dSRTData)); - - pCtrl->srtData.scale.x = FX32_ONE; - pCtrl->srtData.scale.y = FX32_ONE; -} - -void NNSi_G2dSrtcBuildMatrixFromSRT_2D (const NNSG2dSRTControl * pCtrl, MtxFx22 * pDst) { -#pragma unused( pCtrl ) -#pragma unused( pDst ) - NNS_G2D_NULL_ASSERT(pCtrl); - NNS_G2D_NULL_ASSERT(pDst); - ASSERT_SRT_MODE(pCtrl->type); - - MTX_Identity22(pDst); - - MTX_Rot22(pDst, FX_SinIdx(pCtrl->srtData.rotZ), FX_CosIdx(pCtrl->srtData.rotZ)); - - MTX_ScaleApply22(pDst, pDst, pCtrl->srtData.scale.x, pCtrl->srtData.scale.y); -} - -void NNSi_G2dSrtcBuildMatrixFromSRT_3D (const NNSG2dSRTControl * pCtrl, MtxFx22 * pDst) { -#pragma unused( pCtrl ) -#pragma unused( pDst ) - NNS_G2D_NULL_ASSERT(pCtrl); - NNS_G2D_NULL_ASSERT(pDst); - ASSERT_SRT_MODE(pCtrl->type); - - MTX_Rot22(pDst, FX_SinIdx(pCtrl->srtData.rotZ), FX_CosIdx(pCtrl->srtData.rotZ)); - - MTX_ScaleApply22(pDst, pDst, pCtrl->srtData.scale.x, pCtrl->srtData.scale.y); -} diff --git a/subprojects/NitroSystem/libraries/g2d/src/g2d_Softsprite.c b/subprojects/NitroSystem/libraries/g2d/src/g2d_Softsprite.c deleted file mode 100644 index f35953a822..0000000000 --- a/subprojects/NitroSystem/libraries/g2d/src/g2d_Softsprite.c +++ /dev/null @@ -1,346 +0,0 @@ -#include -#include - -static NNSG2dExtendedSprite defaultSpriteAttr_; -static u32 defaultAttrEnable_ = 0x0; -static u16 currentPolygonID_ = 0x0; - -static void DrawSprite_(const NNSG2dSimpleSprite * pS, const NNSG2dBasicSprite * pB, const NNSG2dExtendedSprite * pE); - -static void DrawSprite_ (const NNSG2dSimpleSprite * pS, const NNSG2dBasicSprite * pB, const NNSG2dExtendedSprite * pE) { - const fx32 size = FX32_HALF; - - fx32 U0 = 0; - fx32 U1 = pS->size.x << FX32_SHIFT; - - fx32 V0 = 0; - fx32 V1 = pS->size.y << FX32_SHIFT; - - if (NNS_G2dIsSpriteAttrEnable(NNS_G2D_SPRITEATTR_UV)) { - U0 = pE->uvUL.x; - U1 = pE->uvLR.x; - V0 = pE->uvUL.y; - V1 = pE->uvLR.y; - } - - if (NNS_G2dIsSpriteAttrEnable(NNS_G2D_SPRITEATTR_FLIP)) { - fx32 temp; - - if (pE->flipH) { - temp = U0; - U0 = U1; - U1 = temp; - } - - if (pE->flipV) { - temp = V0; - V0 = V1; - V1 = temp; - } - } - - { - G3_Translate( - (pS->pos.x << FX32_SHIFT) + ((pS->size.x >> 1) << FX32_SHIFT), - (pS->pos.y << FX32_SHIFT) + ((pS->size.y >> 1) << FX32_SHIFT), - ((int)pS->priority << FX32_SHIFT) - ); - - if (NNS_G2dIsSpriteAttrEnable(NNS_G2D_SPRITEATTR_ROTO)) { - G3_Translate( - pE->rotO.x << FX32_SHIFT, - pE->rotO.y << FX32_SHIFT, - 0 - ); - } - - if (NNS_G2dIsSpriteAttrEnable(NNS_G2D_SPRITEATTR_ROTXY)) { - G3_RotX(FX_SinIdx(pE->rotX), FX_CosIdx(pE->rotX)); - G3_RotY(FX_SinIdx(pE->rotY), FX_CosIdx(pE->rotY)); - } - G3_RotZ(FX_SinIdx(pS->rotZ), FX_CosIdx(pS->rotZ)); - - if (NNS_G2dIsSpriteAttrEnable(NNS_G2D_SPRITEATTR_ROTO)) { - G3_Translate( - -pE->rotO.x << FX32_SHIFT, - -pE->rotO.y << FX32_SHIFT, - 0 - ); - } - G3_Scale( - pS->size.x << FX32_SHIFT, - pS->size.y << FX32_SHIFT, - FX32_ONE - ); - - if (NNS_G2dIsSpriteAttrEnable(NNS_G2D_SPRITEATTR_TEXTURE)) { - if (pB->pTextureAttr) { - const NNSG2dImageAttr * pAttr = pB->pTextureAttr; - - G3_TexImageParam( - pAttr->fmt, - GX_TEXGEN_TEXCOORD, - pAttr->sizeS, - pAttr->sizeT, - GX_TEXREPEAT_NONE, - GX_TEXFLIP_NONE, - pAttr->plttUse, - pB->texAddr - ); - - if (NNS_G2dIsPaletteImageFmt(pAttr)) { - G3_TexPlttBase((u32)(pB->plttAddr + 32 * pB->plttOffset), pAttr->fmt); - } - } else { - OS_Warning("The Texture Attribute of software sprite must be specified."); - } - } - - if (NNS_G2dIsSpriteAttrEnable(NNS_G2D_SPRITEATTR_ALPHA)) { - if (pS->alpha == 0) { - return; - } - - G3_PolygonAttr( - GX_LIGHTMASK_NONE, - GX_POLYGONMODE_MODULATE, - GX_CULL_NONE, - currentPolygonID_, - pS->alpha, - 0 - ); - } - - if (NNS_G2dIsSpriteAttrEnable(NNS_G2D_SPRITEATTR_COLOR)) { - G3_Color(pB->color); - } - - G3_Begin(GX_BEGIN_QUADS); - - G3_TexCoord(U0, V1); - G3_Vtx10(0 - size, 0 + size, 0); - - G3_TexCoord(U1, V1); - G3_Vtx10(0 + size, 0 + size, 0); - - G3_TexCoord(U1, V0); - G3_Vtx10(0 + size, -size, 0); - - G3_TexCoord(U0, V0); - G3_Vtx10(0 - size, -size, 0); - - G3_End( ); - } -} - -static void SetAffine43 (MtxFx43 * pDst, const MtxFx22 * pSubMtx, fx32 x, fx32 y, fx32 z) { - NNS_G2D_NULL_ASSERT(pDst); - NNS_G2D_NULL_ASSERT(pSubMtx); - - pDst->_00 = pSubMtx->_00; - pDst->_01 = pSubMtx->_01; - pDst->_02 = 0; - pDst->_10 = pSubMtx->_10; - pDst->_11 = pSubMtx->_11; - pDst->_12 = 0; - pDst->_20 = 0; - pDst->_21 = 0; - pDst->_22 = FX32_ONE; - pDst->_30 = x; - pDst->_31 = y; - pDst->_32 = z; -} - -static void SetBaseMtx_ (const MtxFx22 * baseMtx) { - MtxFx43 mtx; - SetAffine43(&mtx, baseMtx, 0, 0, 0); - - G3_MultMtx43(&mtx); -} - -static void DrawOneQuad_ (fx32 U0, fx32 U1, fx32 V0, fx32 V1) { - const fx32 size = FX32_ONE; - - { - G3_Begin(GX_BEGIN_QUADS); - - G3_TexCoord(U0, V1); - G3_Vtx(0, 0 + size, 0); - - G3_TexCoord(U1, V1); - G3_Vtx(0 + size, 0 + size, 0); - - G3_TexCoord(U1, V0); - G3_Vtx(0 + size, 0, 0); - - G3_TexCoord(U0, V0); - G3_Vtx(0, 0, 0); - - G3_End( ); - } -} - -static void DrawOneQuadCenter_ (fx32 U0, fx32 U1, fx32 V0, fx32 V1) { - const fx32 size = FX32_HALF; - - { - G3_Begin(GX_BEGIN_QUADS); - - G3_TexCoord(U0, V1); - G3_Vtx(0 - size, 0 + size, 0); - - G3_TexCoord(U1, V1); - G3_Vtx(0 + size, 0 + size, 0); - - G3_TexCoord(U1, V0); - G3_Vtx(0 + size, -size, 0); - - G3_TexCoord(U0, V0); - G3_Vtx(-size, -size, 0); - - G3_End( ); - } -} - -void NNS_G2dSetupSoftwareSpriteMaterial () { - { - G3_MaterialColorDiffAmb( - GX_RGB(31, 31, 31), - GX_RGB(16, 16, 16), - TRUE - ); - - G3_MaterialColorSpecEmi( - GX_RGB(16, 16, 16), - GX_RGB(0, 0, 0), - FALSE - ); - - G3_PolygonAttr( - GX_LIGHTMASK_NONE, - GX_POLYGONMODE_MODULATE, - GX_CULL_NONE, - 0, - 31, - 0 - ); - } -} - -void NNS_G2dSetupSoftwareSpriteCamera () { - G3_ViewPort(0, 0, 255, 191); - { - { - G3_OrthoW( - FX32_ONE * 0, - FX32_ONE * 192, - FX32_ONE * 0, - FX32_ONE * 256, - FX32_ONE * -1024, - FX32_ONE * 1024, - FX32_ONE * 1024, - NULL - ); - - G3_StoreMtx(0); - } - - { - VecFx32 Eye = {0, 0, 0}; - VecFx32 vUp = {0, FX32_ONE, 0}; - VecFx32 at = {0, 0, -FX32_ONE}; - - G3_LookAt(&Eye, &vUp, &at, NULL); - } - - G3_MtxMode(GX_MTXMODE_POSITION); - } -} - -void NNS_G2dSetSpriteAttrEnable (u32 attr) { - defaultAttrEnable_ = attr; -} - -BOOL NNS_G2dIsSpriteAttrEnable (NNSG2dSpriteAttr attr) { - return (BOOL)(defaultAttrEnable_ & (u32)attr); -} - -void NNS_G2dSetSpriteCurrentPolygonID (u16 id) { - NNS_G2D_MINMAX_ASSERT(id, 0, 63); - - currentPolygonID_ = id; -} - -void NNS_G2dSetSpriteDefaultAttr (const NNSG2dExtendedSprite * pE) { - defaultSpriteAttr_ = *pE; -} - -const NNSG2dExtendedSprite * NNS_G2dGetSpriteDefaultAttr ( ) { - return &defaultSpriteAttr_; -} - -void NNS_G2dDrawSpriteSimpleFast (const NNSG2dSimpleSprite * pS) { - DrawSprite_(pS, &defaultSpriteAttr_.basicParams, &defaultSpriteAttr_); -} - -void NNS_G2dDrawSpriteBasicFast (const NNSG2dBasicSprite * pB) { - DrawSprite_(&pB->simpleParams, pB, &defaultSpriteAttr_); -} - -void NNS_G2dDrawSpriteExtendedFast (const NNSG2dExtendedSprite * pE) { - DrawSprite_(&pE->basicParams.simpleParams, &pE->basicParams, pE); -} - -void NNS_G2dDrawSpriteFast (s16 px, s16 py, int pz, int sx, int sy, int U0, int V0, int U1, int V1) { - G3_Translate(FX32_ONE * px, FX32_ONE * py, FX32_ONE * pz); - - G3_Scale(FX32_ONE * sx, FX32_ONE * sy, FX32_ONE); - - DrawOneQuad_(FX32_ONE * U0, FX32_ONE * U1, FX32_ONE * V0, FX32_ONE * V1); -} - -void NNSi_G2dDrawSpriteFast (s16 px, s16 py, fx32 pz, int sx, int sy, fx32 U0, fx32 V0, fx32 U1, fx32 V1) { - G3_Translate(px << FX32_SHIFT, py << FX32_SHIFT, pz); - - G3_Scale(sx << FX32_SHIFT, sy << FX32_SHIFT, FX32_ONE); - - { - const fx32 size = FX32_ONE; - - G3_Begin(GX_BEGIN_QUADS); - - G3_TexCoord(U0, V1); - G3_Vtx(0, 0 + size, 0); - - G3_TexCoord(U1, V1); - G3_Vtx(0 + size, 0 + size, 0); - - G3_TexCoord(U1, V0); - G3_Vtx(0 + size, 0, 0); - - G3_TexCoord(U0, V0); - G3_Vtx(0, 0, 0); - - G3_End( ); - } -} - -void NNSi_G2dDrawSpriteWithMtxFast (s16 px, s16 py, fx32 pz, int sx, int sy, const MtxFx22 * baseMtx, fx32 U0, fx32 V0, fx32 U1, fx32 V1) { - G3_Translate(FX32_ONE * px + FX32_HALF * sx, FX32_ONE * py + FX32_HALF * sy, pz); - - SetBaseMtx_(baseMtx); - - G3_Scale(FX32_ONE * sx, FX32_ONE * sy, FX32_ONE); - - DrawOneQuadCenter_(U0, U1, V0, V1); -} - -void NNSi_G2dDrawSpriteWithMtxDoubleAffineFast (s16 px, s16 py, fx32 pz, int sx, int sy, const MtxFx22 * baseMtx, fx32 U0, fx32 V0, fx32 U1, fx32 V1) { - G3_Translate(FX32_ONE * px + FX32_ONE * sx, FX32_ONE * py + FX32_ONE * sy, pz); - - SetBaseMtx_(baseMtx); - - G3_Scale(FX32_ONE * sx, FX32_ONE * sy, FX32_ONE); - - DrawOneQuadCenter_(U0, U1, V0, V1); -} diff --git a/subprojects/NitroSystem/libraries/g2d/src/g2d_TextCanvas.c b/subprojects/NitroSystem/libraries/g2d/src/g2d_TextCanvas.c deleted file mode 100644 index 9573999d1e..0000000000 --- a/subprojects/NitroSystem/libraries/g2d/src/g2d_TextCanvas.c +++ /dev/null @@ -1,338 +0,0 @@ -#include -#include - -#undef NNS_G2D_UNICODE -#include - -void NNSi_G2dTextCanvasDrawString (const NNSG2dTextCanvas * pTxn, int x, int y, int cl, const void * str, const void ** pPos -#ifdef NNS_G2D_FONT_ENABLE_DIRECTION_SUPPORT - , NNSiG2dTextDirection d -#endif -) { - const void * pos; - int charSpace; - const NNSG2dFont * pFont; - u16 c; - NNSiG2dSplitCharCallback getNextChar; - - NNS_G2D_TEXTCANVAS_ASSERT(pTxn); - NNS_G2D_POINTER_ASSERT(str); - NNS_G2D_ASSERT( - NNS_G2dFontGetBpp(NNS_G2dTextCanvasGetFont(pTxn)) - <= NNS_G2dTextCanvasGetCharCanvas(pTxn)->dstBpp - ); - NNS_G2D_MINMAX_ASSERT( - cl, 0, - (1 << NNS_G2dTextCanvasGetCharCanvas(pTxn)->dstBpp) - - (1 << NNS_G2dFontGetBpp(NNS_G2dTextCanvasGetFont(pTxn))) + 1 - ); - - charSpace = pTxn->hSpace; - pFont = pTxn->pFont; - pos = str; - getNextChar = NNSi_G2dFontGetSpliter(pFont); - - while ((c = getNextChar((const void **)&pos)) != 0) { - if (c == '\n') { - break; - } - - { - const int w = NNS_G2dCharCanvasDrawChar(pTxn->pCanvas, pFont, x, y, cl, c) + charSpace; -#ifdef NNS_G2D_FONT_ENABLE_DIRECTION_SUPPORT - x += w * d.x; - y += w * d.y; -#else - x += w; -#endif - } - } - - if (pPos != NULL) { - *pPos = (c == '\n') ? pos: NULL; - } -} - -void NNSi_G2dTextCanvasDrawTextAlign (const NNSG2dTextCanvas * pTxn, int x, int y, int areaWidth, int cl, u32 flags, const void * txt -#ifdef NNS_G2D_FONT_ENABLE_DIRECTION_SUPPORT - , NNSiG2dTextDirection d -#endif -) { - const void * str; - int linefeed; -#ifdef NNS_G2D_FONT_ENABLE_DIRECTION_SUPPORT - int linefeedx; - int linefeedy; - int line; -#endif - int charSpace; - const NNSG2dFont * pFont; - int px, py; - - NNS_G2D_TEXTCANVAS_ASSERT(pTxn); - NNS_G2D_POINTER_ASSERT(txt); - NNS_G2D_ASSERT( - NNS_G2dFontGetBpp(NNS_G2dTextCanvasGetFont(pTxn)) - <= NNS_G2dTextCanvasGetCharCanvas(pTxn)->dstBpp - ); - NNS_G2D_MINMAX_ASSERT( - cl, 0, - (1 << NNS_G2dTextCanvasGetCharCanvas(pTxn)->dstBpp) - - (1 << NNS_G2dFontGetBpp(NNS_G2dTextCanvasGetFont(pTxn))) + 1 - ); - - charSpace = pTxn->hSpace; - linefeed = NNS_G2dFontGetLineFeed(pTxn->pFont) + pTxn->vSpace; - pFont = pTxn->pFont; - str = txt; -#ifdef NNS_G2D_FONT_ENABLE_DIRECTION_SUPPORT - linefeedx = linefeed * -d.y; - linefeedy = linefeed * d.x; - line = 0; -#else - py = y; -#endif - - while (str != NULL) { -#ifdef NNS_G2D_FONT_ENABLE_DIRECTION_SUPPORT - px = x + line * linefeedx; - py = y + line * linefeedy; -#else - px = x; -#endif - - if (flags & NNS_G2D_HORIZONTALALIGN_RIGHT) { - const int width = NNS_G2dTextCanvasGetStringWidth(pTxn, str, NULL); - const int offset = areaWidth - width; -#ifdef NNS_G2D_FONT_ENABLE_DIRECTION_SUPPORT - px += offset * d.x; - py += offset * d.y; -#else - py += offset; -#endif - } else if (flags & NNS_G2D_HORIZONTALALIGN_CENTER) { - const int width = NNS_G2dTextCanvasGetStringWidth(pTxn, str, NULL); - const int offset = (areaWidth + 1) / 2 - (width + 1) / 2; -#ifdef NNS_G2D_FONT_ENABLE_DIRECTION_SUPPORT - px += offset * d.x; - py += offset * d.y; -#else - py += offset; -#endif - } - -#ifdef NNS_G2D_FONT_ENABLE_DIRECTION_SUPPORT - NNSi_G2dTextCanvasDrawString(pTxn, px, py, cl, str, &str, d); - line++; -#else - NNSi_G2dTextCanvasDrawString(pTxn, px, py, cl, str, &str); - py += linefeed; -#endif - } -} - -void NNSi_G2dTextCanvasDrawText (const NNSG2dTextCanvas * pTxn, int x, int y, int cl, u32 flags, const void * txt -#ifdef NNS_G2D_FONT_ENABLE_DIRECTION_SUPPORT - , NNSiG2dTextDirection d -#endif -) { - NNSG2dTextRect area; - - NNS_G2D_TEXTCANVAS_ASSERT(pTxn); - NNS_G2D_POINTER_ASSERT(txt); - NNS_G2D_ASSERT( - NNS_G2dFontGetBpp(NNS_G2dTextCanvasGetFont(pTxn)) - <= NNS_G2dTextCanvasGetCharCanvas(pTxn)->dstBpp - ); - NNS_G2D_MINMAX_ASSERT( - cl, 0, - (1 << NNS_G2dTextCanvasGetCharCanvas(pTxn)->dstBpp) - - (1 << NNS_G2dFontGetBpp(NNS_G2dTextCanvasGetFont(pTxn))) + 1 - ); - - { - area = NNS_G2dTextCanvasGetTextRect(pTxn, txt); - - if (flags & NNS_G2D_HORIZONTALORIGIN_CENTER) { - const int offset = -(area.width + 1) / 2; -#ifdef NNS_G2D_FONT_ENABLE_DIRECTION_SUPPORT - x += offset * d.x; - y += offset * d.y; -#else - x += offset; -#endif - } else if (flags & NNS_G2D_HORIZONTALORIGIN_RIGHT) { - const int offset = -area.width; -#ifdef NNS_G2D_FONT_ENABLE_DIRECTION_SUPPORT - x += offset * d.x; - y += offset * d.y; -#else - x += offset; -#endif - } - - if (flags & NNS_G2D_VERTICALORIGIN_MIDDLE) { - const int offset = -(area.height + 1) / 2; -#ifdef NNS_G2D_FONT_ENABLE_DIRECTION_SUPPORT - x += offset * -d.y; - y += offset * d.x; -#else - y += offset; -#endif - } else if (flags & NNS_G2D_VERTICALORIGIN_BOTTOM) { - const int offset = -area.height; -#ifdef NNS_G2D_FONT_ENABLE_DIRECTION_SUPPORT - x += offset * -d.y; - y += offset * d.x; -#else - y += offset; -#endif - } - } - -#ifdef NNS_G2D_FONT_ENABLE_DIRECTION_SUPPORT - NNSi_G2dTextCanvasDrawTextAlign(pTxn, x, y, area.width, cl, flags, txt, d); -#else - NNSi_G2dTextCanvasDrawTextAlign(pTxn, x, y, area.width, cl, flags, txt); -#endif -} - -void NNSi_G2dTextCanvasDrawTextRect (const NNSG2dTextCanvas * pTxn, int x, int y, int w, int h, int cl, u32 flags, const void * txt -#ifdef NNS_G2D_FONT_ENABLE_DIRECTION_SUPPORT - , NNSiG2dTextDirection d -#endif -) { - NNS_G2D_TEXTCANVAS_ASSERT(pTxn); - NNS_G2D_POINTER_ASSERT(txt); - NNS_G2D_ASSERT( - NNS_G2dFontGetBpp(NNS_G2dTextCanvasGetFont(pTxn)) - <= NNS_G2dTextCanvasGetCharCanvas(pTxn)->dstBpp - ); - NNS_G2D_MINMAX_ASSERT( - cl, 0, - (1 << NNS_G2dTextCanvasGetCharCanvas(pTxn)->dstBpp) - - (1 << NNS_G2dFontGetBpp(NNS_G2dTextCanvasGetFont(pTxn))) + 1 - ); - - { - if (flags & NNS_G2D_VERTICALALIGN_BOTTOM) { - const int height = NNS_G2dTextCanvasGetTextHeight(pTxn, txt); - const int offset = h - height; -#ifdef NNS_G2D_FONT_ENABLE_DIRECTION_SUPPORT - x += offset * -d.y; - y += offset * d.x; -#else - y += offset; -#endif - } else if (flags & NNS_G2D_VERTICALALIGN_MIDDLE) { - const int height = NNS_G2dTextCanvasGetTextHeight(pTxn, txt); - const int offset = (h + 1) / 2 - (height + 1) / 2; -#ifdef NNS_G2D_FONT_ENABLE_DIRECTION_SUPPORT - x += offset * -d.y; - y += offset * d.x; -#else - y += offset; -#endif - } - } - -#ifdef NNS_G2D_FONT_ENABLE_DIRECTION_SUPPORT - NNSi_G2dTextCanvasDrawTextAlign(pTxn, x, y, w, cl, flags, txt, d); -#else - NNSi_G2dTextCanvasDrawTextAlign(pTxn, x, y, w, cl, flags, txt); -#endif -} - -void NNSi_G2dTextCanvasDrawTaggedText (const NNSG2dTextCanvas * pTxn, int x, int y, int cl, const void * txt, NNSG2dTagCallback cbFunc, void * cbParam -#ifdef NNS_G2D_FONT_ENABLE_DIRECTION_SUPPORT - , NNSiG2dTextDirection d -#endif -) { - const void * pos; - int linefeed; - int charSpace; - const NNSG2dFont * pFont; - NNSG2dTagCallbackInfo cbInfo; - u16 c; - NNSiG2dSplitCharCallback getNextChar; - - int px = x; - int py = y; - - NNS_G2D_TEXTCANVAS_ASSERT(pTxn); - NNS_G2D_FONT_ASSERT(pTxn->pFont); - NNS_G2D_POINTER_ASSERT(txt); - NNS_G2D_ASSERT( - NNS_G2dFontGetBpp(NNS_G2dTextCanvasGetFont(pTxn)) - <= NNS_G2dTextCanvasGetCharCanvas(pTxn)->dstBpp - ); - NNS_G2D_MINMAX_ASSERT( - cl, 0, - (1 << NNS_G2dTextCanvasGetCharCanvas(pTxn)->dstBpp) - - (1 << NNS_G2dFontGetBpp(NNS_G2dTextCanvasGetFont(pTxn))) + 1 - ); - NNS_G2D_POINTER_ASSERT(cbFunc); - - cbInfo.txn = *pTxn; - cbInfo.cbParam = cbParam; - - charSpace = cbInfo.txn.hSpace; - pFont = cbInfo.txn.pFont; - linefeed = NNS_G2dFontGetLineFeed(pFont) + cbInfo.txn.vSpace; - pos = txt; - getNextChar = NNSi_G2dFontGetSpliter(pFont); - -#ifdef NNS_G2D_FONT_ENABLE_DIRECTION_SUPPORT - linefeed *= (d.x != 0) ? d.x: -d.y; -#endif - - while ((c = getNextChar((const void **)&pos)) != 0) { - if (c < ' ') { - if (c == '\n') { -#ifdef NNS_G2D_FONT_ENABLE_DIRECTION_SUPPORT - if (d.x == 0) { - px += linefeed; - py = y; - } else -#endif - { - px = x; - py += linefeed; - } - } else { - cbInfo.str = (const NNSG2dChar *)pos; - cbInfo.x = px; - cbInfo.y = py; - cbInfo.clr = cl; - - cbFunc(c, &cbInfo); - NNS_G2D_TEXTCANVAS_ASSERT(&(cbInfo.txn)); - NNS_G2D_FONT_ASSERT(cbInfo.txn.pFont); - NNS_G2D_POINTER_ASSERT(cbInfo.str); - NNS_G2D_MINMAX_ASSERT(cl, 0, 255); - - pos = (const void *)cbInfo.str; - px = cbInfo.x; - py = cbInfo.y; - cl = cbInfo.clr; - - pFont = cbInfo.txn.pFont; - charSpace = cbInfo.txn.hSpace; - linefeed = NNS_G2dFontGetLineFeed(pFont) + cbInfo.txn.vSpace; -#ifdef NNS_G2D_FONT_ENABLE_DIRECTION_SUPPORT - linefeed *= (d.x != 0) ? d.x: -d.y; -#endif - } - - continue; - } else { - const int w = NNS_G2dCharCanvasDrawChar(cbInfo.txn.pCanvas, cbInfo.txn.pFont, px, py, cl, c) + charSpace; -#ifdef NNS_G2D_FONT_ENABLE_DIRECTION_SUPPORT - px += w * d.x; - py += w * d.y; -#else - px += w; -#endif - } - } -} diff --git a/subprojects/NitroSystem/libraries/g2d/src/include/g2d_Internal.h b/subprojects/NitroSystem/libraries/g2d/src/include/g2d_Internal.h deleted file mode 100644 index c24f406a18..0000000000 --- a/subprojects/NitroSystem/libraries/g2d/src/include/g2d_Internal.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef NNS_G2D_INTERNAL_H_ -#define NNS_G2D_INTERNAL_H_ - -#include -#include "g2di_OamUtil.h" -#include "g2di_Debug.h" -#include "g2di_Mtx32.h" -#include "g2di_CellUtil.h" - -#endif diff --git a/subprojects/NitroSystem/libraries/g2d/src/include/g2di_BitReader.h b/subprojects/NitroSystem/libraries/g2d/src/include/g2di_BitReader.h deleted file mode 100644 index e7312d460c..0000000000 --- a/subprojects/NitroSystem/libraries/g2d/src/include/g2di_BitReader.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef G2DI_BITREADER_H_ -#define G2DI_BITREADER_H_ - -#include -#include -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct NNSiG2dBitReader { - const u8 * src; - s8 availableBits; - u8 bits; - u8 padding_[2]; -} NNSiG2dBitReader; - -NNS_G2D_INLINE void NNSi_G2dBitReaderInit (NNSiG2dBitReader * reader, const void * src) { - reader->availableBits = 0; - reader->src = (const u8 *)src; - reader->bits = 0; -} - -u32 NNSi_G2dBitReaderRead(NNSiG2dBitReader * reader, int nBits); - -NNS_G2D_INLINE void NNSi_G2dBitReaderAlignByte (NNSiG2dBitReader * reader) { - reader->availableBits &= 8; -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/libraries/g2d/src/include/g2di_CellUtil.h b/subprojects/NitroSystem/libraries/g2d/src/include/g2di_CellUtil.h deleted file mode 100644 index 3446f0a2cf..0000000000 --- a/subprojects/NitroSystem/libraries/g2d/src/include/g2di_CellUtil.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef NNS_G2DI_CELLUTIL_H_ -#define NNS_G2DI_CELLUTIL_H_ - -#include -#include - -#include "g2di_Mtx32.h" - -#endif diff --git a/subprojects/NitroSystem/libraries/g2d/src/include/g2di_Debug.h b/subprojects/NitroSystem/libraries/g2d/src/include/g2di_Debug.h deleted file mode 100644 index 803827f957..0000000000 --- a/subprojects/NitroSystem/libraries/g2d/src/include/g2di_Debug.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef NNS_G2DI_DEBUG_H_ -#define NNS_G2DI_DEBUG_H_ - -#include - -#ifdef NNSI_G2D_DEBUG - #define NNSI_G2D_DEBUGMSG0(...) OS_Printf(__VA_ARGS__); -#else - #define NNSI_G2D_DEBUGMSG0(...) ((void)0) -#endif - -#define NNSI_G2D_DEBUGMSG1(...) ((void)0) - -#endif diff --git a/subprojects/NitroSystem/libraries/g2d/src/include/g2di_Dma.h b/subprojects/NitroSystem/libraries/g2d/src/include/g2di_Dma.h deleted file mode 100644 index 9d1a8b7df3..0000000000 --- a/subprojects/NitroSystem/libraries/g2d/src/include/g2di_Dma.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef G2DI_DMA_H_ -#define G2DI_DMA_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -NNS_G2D_INLINE void NNSi_G2dDmaCopy16 (u32 dmaNo, const void * src, void * dest, u32 size) { - if (dmaNo != GX_DMA_NOT_USE) { - MI_DmaCopy16(dmaNo, src, dest, size); - } else { - MI_CpuCopy16(src, dest, size); - } -} - -NNS_G2D_INLINE void NNSi_G2dDmaFill32 (u32 dmaNo, void * dest, u32 data, u32 size) { - if (dmaNo != GX_DMA_NOT_USE) { - MI_DmaFill32(dmaNo, dest, data, size); - } else { - MI_CpuFill32(dest, data, size); - } -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/libraries/g2d/src/include/g2di_Mtx32.h b/subprojects/NitroSystem/libraries/g2d/src/include/g2di_Mtx32.h deleted file mode 100644 index 31e79264a1..0000000000 --- a/subprojects/NitroSystem/libraries/g2d/src/include/g2di_Mtx32.h +++ /dev/null @@ -1,102 +0,0 @@ -#ifndef NNS_G2DI_MTX32_H_ -#define NNS_G2DI_MTX32_H_ - -#include -#include -#include - -static void NNSi_G2dSetTranslate(MtxFx32 * m, fx32 x, fx32 y); -static void NNSi_G2dSetRotate(MtxFx32 * m, fx32 sin, fx32 cos); -static void NNSi_G2dSetScale(MtxFx32 * m, fx32 sx, fx32 sy); -static void NNSi_G2dGetMtxTrans(const MtxFx32 * m, NNSG2dFVec2 * pRet); -static void NNSi_G2dGetMtxRS(const MtxFx32 * m, MtxFx22 * pRet); - -void NNSi_G2dMtxConcat32(const MtxFx32 * a, const MtxFx32 * b, MtxFx32 * ab); - -#ifdef SDK_FINALROM -NNS_G2D_INLINE void NNSi_G2dDumpMtx32 (const MtxFx32 *) { -} -#else -void NNSi_G2dDumpMtx32(const MtxFx32 * m); -#endif - -NNS_G2D_INLINE void NNSi_G2dSetTranslate (MtxFx32 * m, fx32 x, fx32 y) { - NNS_G2D_NULL_ASSERT(m); - - m->_00 = FX32_ONE; - m->_01 = 0; - m->_10 = 0; - m->_11 = FX32_ONE; - m->_20 = x; - m->_21 = y; -} - -NNS_G2D_INLINE void NNSi_G2dSetRotate (MtxFx32 * m, fx32 sin, fx32 cos) { - NNS_G2D_NULL_ASSERT(m); - - m->_00 = cos; - m->_01 = sin; - m->_10 = -sin; - m->_11 = cos; - m->_20 = 0; - m->_21 = 0; -} - -NNS_G2D_INLINE void NNSi_G2dSetScale (MtxFx32 * m, fx32 sx, fx32 sy) { - NNS_G2D_NULL_ASSERT(m); - - m->_00 = sx; - m->_01 = 0; - m->_10 = 0; - m->_11 = sy; - m->_20 = 0; - m->_21 = 0; -} - -NNS_G2D_INLINE void NNSi_G2dSetScaleFor2DHW (MtxFx32 * m, fx32 sx, fx32 sy) { - NNS_G2D_NULL_ASSERT(m); - - m->_00 = FX_Inv(sx); - m->_01 = 0; - m->_10 = 0; - m->_11 = FX_Inv(sy); - m->_20 = 0; - m->_21 = 0; -} - -NNS_G2D_INLINE void NNSi_G2dGetMtxTrans (const MtxFx32 * m, NNSG2dFVec2 * pRet) { - NNS_G2D_NULL_ASSERT(pRet); - NNS_G2D_NULL_ASSERT(m); - - pRet->x = m->_20; - pRet->y = m->_21; -} - -NNS_G2D_INLINE void NNSi_G2dGetMtxRS (const MtxFx32 * m, MtxFx22 * pRet) { - NNS_G2D_NULL_ASSERT(pRet); - NNS_G2D_NULL_ASSERT(m); - - pRet->_00 = m->_00; - pRet->_01 = m->_01; - pRet->_10 = m->_10; - pRet->_11 = m->_11; -} - -NNS_G2D_INLINE void MulMtx22 (const MtxFx22 * m, const NNSG2dFVec2 * pSrc, NNSG2dFVec2 * pDst) { - NNSG2dFVec2 temp; - NNSG2dFVec2 * pV = pDst; - if (pDst == pSrc) { - pV = &temp; - } - - pV->x = (fx32)((((s64)(m->_00) * pSrc->x + 0x800LL) - + ((s64)(m->_10) * pSrc->y + 0x800LL)) >> FX32_SHIFT); - pV->y = (fx32)((((s64)(m->_01) * pSrc->x + 0x800LL) - + ((s64)(m->_11) * pSrc->y + 0x800LL)) >> FX32_SHIFT); - - if (pV == &temp) { - *pDst = temp; - } -} - -#endif diff --git a/subprojects/NitroSystem/libraries/g2d/src/include/g2di_OamUtil.h b/subprojects/NitroSystem/libraries/g2d/src/include/g2di_OamUtil.h deleted file mode 100644 index 292abdd79f..0000000000 --- a/subprojects/NitroSystem/libraries/g2d/src/include/g2di_OamUtil.h +++ /dev/null @@ -1,207 +0,0 @@ -#ifndef NNS_G2DI_OAMUTIL_H_ -#define NNS_G2DI_OAMUTIL_H_ - -#include -#include -#include -#include - -static fx32 NNSi_G2dGetOamSin(const NNSG2dOamAffineParams * pOamAff); -static fx32 NNSi_G2dGetOamCos(const NNSG2dOamAffineParams * pOamAff); -static s16 NNSi_G2dGetOamX(const GXOamAttr * oamAttr); -static s16 NNSi_G2dGetOamY(const GXOamAttr * oamAttr); -static u16 NNSi_G2dGetOamName(const GXOamAttr * oamAttr); -static u16 NNSi_G2dGetOamColorParam(const GXOamAttr * oamAttr); -static BOOL NNSi_G2dGetOamFlipH(const GXOamAttr * oamAttr); -static BOOL NNSi_G2dGetOamFlipV(const GXOamAttr * oamAttr); -static void NNSi_G2dSetInvisible(GXOamAttr * oamAttr); -static BOOL NNSi_G2dIsVisible(const GXOamAttr * pOam); -static u16 NNSi_G2dGetTexelS(GXTexSizeS s); -static u16 NNSi_G2dGetTexelT(GXTexSizeT t); -static u16 NNSi_G2dGetTextureBaseAddrOffs(u16 charIdx, GXTexSizeS sS, GXTexSizeT sT, u16 bytePerTexel); -static u16 NNSi_G2dGetTextureU(u16 charIdx, GXTexSizeS sS); -static u16 NNSi_G2dGetTextureV(u16 charIdx, GXTexSizeS sS); -static BOOL NNSi_G2dIsRSEnable(const GXOamAttr * pOam); -static u16 NNSi_G2dGetAffineIdx(const GXOamAttr * pOam); -static void NNSi_G2dAdjustDifferenceOfRotateOrientation(const GXOamAttr * pOam, const MtxFx22 * pM, NNSG2dFVec2 * pV, BOOL adjustDoubleAffine); - -static const u16 NNSI_G2D_NNSI_G2D_SIZE_OBJ_CHAR_TEXEL_S = 0x8; -static const u16 NNSI_G2D_NNSI_G2D_SIZE_OBJ_CHAR_TEXEL_T = 0x8; -static const u16 NNSI_G2D_SIZE_OBJ_CHAR = NNSI_G2D_NNSI_G2D_SIZE_OBJ_CHAR_TEXEL_S * NNSI_G2D_NNSI_G2D_SIZE_OBJ_CHAR_TEXEL_T; - -NNS_G2D_INLINE fx32 NNSi_G2dGetOamSin (const NNSG2dOamAffineParams * pOamAff) { - NNS_G2D_NULL_ASSERT(pOamAff); - return (fx32)((u32)pOamAff->PB << 4); -} - -NNS_G2D_INLINE fx32 NNSi_G2dGetOamCos (const NNSG2dOamAffineParams * pOamAff) { - NNS_G2D_NULL_ASSERT(pOamAff); - return (fx32)((u32)pOamAff->PA << 4); -} - -NNS_G2D_INLINE s16 NNSi_G2dGetOamX (const GXOamAttr * oamAttr) { - NNS_G2D_NULL_ASSERT(oamAttr); - { - s16 val = (s16)((GX_OAM_ATTR01_X_MASK & oamAttr->attr01) >> GX_OAM_ATTR01_X_SHIFT); - return val; - } -} - -NNS_G2D_INLINE s16 NNSi_G2dGetOamY (const GXOamAttr * oamAttr) { - NNS_G2D_NULL_ASSERT(oamAttr); - { - s16 val = (s16)((GX_OAM_ATTR01_Y_MASK & oamAttr->attr01) >> GX_OAM_ATTR01_Y_SHIFT); - return val; - } -} - -NNS_G2D_INLINE s16 NNSi_G2dRepeatXinScreenArea (s16 srcX) { - if (srcX > 0x0FF) { - srcX |= 0xFF00; - } - return srcX; -} - -NNS_G2D_INLINE s16 NNSi_G2dRepeatYinScreenArea (s16 srcY) { - if (srcY > 0xBF) { - srcY |= 0xFF00; - } - return srcY; -} - -NNS_G2D_INLINE void NNSi_G2dSetOamX (GXOamAttr * oamAttr, s16 x) { - NNS_G2D_NULL_ASSERT(oamAttr); - oamAttr->attr01 |= (GX_OAM_ATTR01_X_MASK & ((u32)x << GX_OAM_ATTR01_X_SHIFT)); -} - -NNS_G2D_INLINE void NNSi_G2dSetOamY (GXOamAttr * oamAttr, s16 y) { - NNS_G2D_NULL_ASSERT(oamAttr); - oamAttr->attr01 |= (GX_OAM_ATTR01_Y_MASK & ((u32)y << GX_OAM_ATTR01_Y_SHIFT)); -} - -NNS_G2D_INLINE u16 NNSi_G2dGetOamName (const GXOamAttr * oamAttr) { - NNS_G2D_NULL_ASSERT(oamAttr); - return (u16)((GX_OAM_ATTR2_NAME_MASK & oamAttr->attr2) >> GX_OAM_ATTR2_NAME_SHIFT); -} - -NNS_G2D_INLINE u16 NNSi_G2dGetOamColorParam (const GXOamAttr * oamAttr) { - NNS_G2D_NULL_ASSERT(oamAttr); - return (u16)((GX_OAM_ATTR2_CPARAM_MASK & oamAttr->attr2) >> GX_OAM_ATTR2_CPARAM_SHIFT); -} - -NNS_G2D_INLINE BOOL NNSi_G2dGetOamFlipH (const GXOamAttr * oamAttr) { - return (BOOL)(oamAttr->flipH); -} - -NNS_G2D_INLINE BOOL NNSi_G2dGetOamFlipV (const GXOamAttr * oamAttr) { - return (BOOL)(oamAttr->flipV); -} - -NNS_G2D_INLINE u16 NNSi_G2dGetOamAffineIdx (const GXOamAttr * oamAttr) { - return (u16)((GX_OAM_ATTR01_RS_MASK & oamAttr->attr01) >> GX_OAM_ATTR01_RS_SHIFT); -} - -NNS_G2D_INLINE void NNSi_G2dSetInvisible (GXOamAttr * oamAttr) { - NNS_G2D_NULL_ASSERT(oamAttr); - - oamAttr->attr0 &= ~GX_OAM_ATTR01_RSENABLE_MASK; - oamAttr->attr0 |= (0x2 << GX_OAM_ATTR01_RSENABLE_SHIFT); -} - -NNS_G2D_INLINE BOOL NNSi_G2dIsVisible (const GXOamAttr * pOam) { - NNS_G2D_NULL_ASSERT(pOam); - return (0x2 != (GX_OAM_ATTR01_RSENABLE_MASK & pOam->attr0) >> GX_OAM_ATTR01_RSENABLE_SHIFT) ? TRUE : FALSE; -} - -static u16 NNSi_G2dGetTexelS (GXTexSizeS s) { - return (u16)(0x0001 << (0x3 + s)); -} - -NNS_G2D_INLINE u16 NNSi_G2dGetTexelT (GXTexSizeT t) { - return (u16)(0x0001 << (0x3 + t)); -} - -NNS_G2D_INLINE u16 NNSi_G2dGetTextureBaseAddrOffs (u16 charIdx, GXTexSizeS sS, GXTexSizeT sT, u16 bytePerTexel) { -#pragma unused ( sS ) -#pragma unused ( sT ) -#pragma unused ( bytePerTexel ) - - const u16 retOffs = (u16)(charIdx * NNSI_G2D_SIZE_OBJ_CHAR); - NNS_G2D_MINMAX_ASSERT(retOffs, 0, bytePerTexel * NNSi_G2dGetTexelS(sS) * NNSi_G2dGetTexelT(sT)); - - return retOffs; -} - -NNS_G2D_INLINE u16 NNSi_G2dGetTextureU (u16 charIdx, GXTexSizeS sS) { - const int numCharPerS = NNSi_G2dGetTexelS(sS) / NNSI_G2D_NNSI_G2D_SIZE_OBJ_CHAR_TEXEL_S; - const int U = charIdx % numCharPerS; - - return (u16)(U * NNSI_G2D_NNSI_G2D_SIZE_OBJ_CHAR_TEXEL_S); -} - -NNS_G2D_INLINE u16 NNSi_G2dGetTextureV (u16 charIdx, GXTexSizeS sS) { - const int numCharPerS = NNSi_G2dGetTexelS(sS) / NNSI_G2D_NNSI_G2D_SIZE_OBJ_CHAR_TEXEL_S; - const int V = charIdx / numCharPerS; - - return (u16)(V * NNSI_G2D_NNSI_G2D_SIZE_OBJ_CHAR_TEXEL_T); -} - -NNS_G2D_INLINE BOOL NNSi_G2dIsRSEnable (const GXOamAttr * pOam) { - return ((pOam->attr01 & GX_OAM_ATTR01_RSENABLE_MASK) != 0) ? TRUE : FALSE; -} - -NNS_G2D_INLINE u16 NNSi_G2dGetAffineIdx (const GXOamAttr * pOam) { - if (NNSi_G2dIsRSEnable(pOam)) { - return (u16)((pOam->attr01 & GX_OAM_ATTR01_RS_MASK) >> GX_OAM_ATTR01_RS_SHIFT); - } else { - return 0; - } -} - -NNS_G2D_INLINE void NNS_G2dGetOamTransFx32 (const GXOamAttr * pOam, NNSG2dFVec2 * pRet) { - NNS_G2D_NULL_ASSERT(pOam); - NNS_G2D_NULL_ASSERT(pRet); - - pRet->x = (fx32)(NNS_G2dRepeatXinCellSpace(NNSi_G2dGetOamX(pOam)) * FX32_ONE); - pRet->y = (fx32)(NNS_G2dRepeatYinCellSpace(NNSi_G2dGetOamY(pOam)) * FX32_ONE); -} - -NNS_G2D_INLINE void NNSi_G2dRemovePositionAdjustmentFromDoubleAffineOBJ (const GXOamAttr * pOam, NNSG2dFVec2 * pV) { - NNS_G2D_NULL_ASSERT(pOam); - NNS_G2D_NULL_ASSERT(pV); - -#ifdef NNS_G2D_ASSUME_DOUBLEAFFINE_OBJPOS_ADJUSTED - if (G2_GetOBJEffect(pOam) == GX_OAM_EFFECT_AFFINE_DOUBLE) { - const GXOamShape oamShape = NNS_G2dGetOAMSize(pOam); - const int halfW = NNS_G2dGetOamSizeX(&oamShape) << (FX32_SHIFT - 1); - const int halfH = NNS_G2dGetOamSizeY(&oamShape) << (FX32_SHIFT - 1); - - pV->x += halfW; - pV->y += halfH; - } -#else - #pragma unused( pOam ) - #pragma unused( pV ) -#endif -} - -NNS_G2D_INLINE void NNSi_G2dAdjustDifferenceOfRotateOrientation (const GXOamAttr * pOam, const MtxFx22 * pM, NNSG2dFVec2 * pV, BOOL adjustDoubleAffine) { - NNS_G2D_NULL_ASSERT(pOam); - NNS_G2D_NULL_ASSERT(pM); - NNS_G2D_NULL_ASSERT(pV); - { - const GXOamShape oamShape = NNS_G2dGetOAMSize(pOam); - const int halfW = NNS_G2dGetOamSizeX(&oamShape) >> 1; - const int halfH = NNS_G2dGetOamSizeY(&oamShape) >> 1; - - pV->x += -(halfW << FX32_SHIFT) + pM->_00 * halfW + pM->_10 * halfH; - pV->y += -(halfH << FX32_SHIFT) + pM->_01 * halfW + pM->_11 * halfH; - - if (adjustDoubleAffine) { - pV->x -= halfW << FX32_SHIFT; - pV->y -= halfH << FX32_SHIFT; - } - } -} - -#endif diff --git a/subprojects/NitroSystem/libraries/g2d/src/include/g2di_RendererMtxCache.h b/subprojects/NitroSystem/libraries/g2d/src/include/g2di_RendererMtxCache.h deleted file mode 100644 index 6f404f697a..0000000000 --- a/subprojects/NitroSystem/libraries/g2d/src/include/g2di_RendererMtxCache.h +++ /dev/null @@ -1,65 +0,0 @@ -#ifndef NNS_G2DI_RENDERERMTXCACHE_H_ -#define NNS_G2DI_RENDERERMTXCACHE_H_ - -#include - -#include "g2d_Internal.h" -#include "g2di_RendererMtxStack.hpp" - -typedef enum OAM_FLIP { - OAM_FLIP_NONE = 0, - OAM_FLIP_H = 0x01, - OAM_FLIP_V = 0x02, - OAM_FLIP_HV = 0x03, - OAM_FLIP_MAX = NNS_G2D_OAMFLIP_PATTERN_NUM -} OAM_FLIP; - -#define OAM_FLIP_ASSERT(val) \ - NNS_G2D_MINMAX_ASSERT((val), OAM_FLIP_NONE, OAM_FLIP_HV) \ - -#define TO_OAM_FLIP(bFlipH, bFlipV) (OAM_FLIP)((bFlipV << 1) | (bFlipH)) - -#define G2Di_NUM_MTX_CACHE 32 - -static NNSG2dRndCore2DMtxCache mtxCacheBuffer_[G2Di_NUM_MTX_CACHE]; - -static u16 currentMtxCachePos_ = 0; - -NNS_G2D_INLINE void NNSi_RMCInitMtxCache () { - int i; - for (i = 0; i < G2Di_NUM_MTX_CACHE; i++) { - NNS_G2dInitRndCore2DMtxCache(&mtxCacheBuffer_[i]); - } - currentMtxCachePos_ = 0; -} - -NNS_G2D_INLINE void NNSi_RMCResetMtxCache () { - int i; - - for (i = 0; i < currentMtxCachePos_; i++) { - NNS_G2dInitRndCore2DMtxCache(&mtxCacheBuffer_[i]); - } - currentMtxCachePos_ = 0; -} - -NNS_G2D_INLINE NNSG2dRndCore2DMtxCache * NNSi_RMCGetMtxCacheByIdx (u16 idx) { - NNS_G2D_MINMAX_ASSERT(idx, 0, G2Di_NUM_MTX_CACHE - 1); - return &mtxCacheBuffer_[idx]; -} - -NNS_G2D_INLINE u16 NNSi_RMCUseNewMtxCache () { - const u16 ret = currentMtxCachePos_; - - if (currentMtxCachePos_ < G2Di_NUM_MTX_CACHE - 1) { - currentMtxCachePos_++; - } else { - NNS_G2D_WARNING( - FALSE, "MtxCache is running out. G2d ignores the user request" - ", and uses MtxCache-Idx = 31." - ); - } - - return ret; -} - -#endif diff --git a/subprojects/NitroSystem/libraries/g2d/src/include/g2di_RendererMtxStack.hpp b/subprojects/NitroSystem/libraries/g2d/src/include/g2di_RendererMtxStack.hpp deleted file mode 100644 index 7bf5d4abc8..0000000000 --- a/subprojects/NitroSystem/libraries/g2d/src/include/g2di_RendererMtxStack.hpp +++ /dev/null @@ -1,244 +0,0 @@ -#ifndef NNS_G2DI_RENDERERMTXSTACK_HPP_ -#define NNS_G2DI_RENDERERMTXSTACK_HPP_ - -#include -#include - -#include "g2di_Mtx32.h" - -#define NNS_G2D_MAXLENGTH_OF_2DMTXSTACK 32 -#define G2Di_RENDERER_MTX_SR_NONE NNS_G2D_OAM_AFFINE_IDX_NONE - -static MtxFx32 mtxStack_[NNS_G2D_MAXLENGTH_OF_2DMTXSTACK]; -static MtxFx32 mtxStackFor2DHW_[NNS_G2D_MAXLENGTH_OF_2DMTXSTACK]; -static fx32 fxZStack_[NNS_G2D_MAXLENGTH_OF_2DMTXSTACK]; -static s32 stackPos_ = 0; - -static u16 firstSRTransformedMtxIdx_ = G2Di_RENDERER_MTX_SR_NONE; - -static BOOL bDonotUseSRTransform = FALSE; -static MtxFx32 mtxI_ = {FX32_ONE, 0, 0, FX32_ONE, 0, 0}; - -static void NNSi_G2dInitRndMtxStack(); -static BOOL NNSi_G2dIsStackEmpty(); -static BOOL NNSi_G2dStackHasEnoughCapacity(); - -static void NNSi_G2dMtxPush(); -static void NNSi_G2dMtxPop(); -static void NNSi_G2dTranslate(fx32 x, fx32 y, fx32 z); -static void NNSi_G2dSetTrans(fx32 x, fx32 y, fx32 z); -static void NNSi_G2dRotate(fx32 sin, fx32 cos); -static void NNSi_G2dScale(fx32 sx, fx32 sy); -static void NNSi_G2dIdentity( ); - -static const MtxFx32 * NNSi_G2dGetCurrentMtx(); -static u16 NNSi_G2dGetMtxStackPos(); - -static void NNSi_G2dSetRndMtxStackSRTransformed(); -static BOOL NNSi_G2dIsRndCurrentMtxSRTransformed(); - -static void RestoreRndMtxStackStateNotSR_(); -static void CheckIfRndCurrentMtxIsSRTransformed_(); - -NNS_G2D_INLINE void RestoreRndMtxStackStateNotSR_ () { - firstSRTransformedMtxIdx_ = G2Di_RENDERER_MTX_SR_NONE; -} - -NNS_G2D_INLINE void NNSi_G2dInitRndMtxStack ( ) { - stackPos_ = 0; - RestoreRndMtxStackStateNotSR_(); -} - -NNS_G2D_INLINE void NNSi_G2dSetRndMtxStackSRTransformEnableFlag (BOOL bEnable) { - bDonotUseSRTransform = !bEnable; -} - -NNS_G2D_INLINE void NNSi_G2dSetRndMtxStackSRTransformed () { - NNS_G2D_ASSERTMSG( - firstSRTransformedMtxIdx_ == G2Di_RENDERER_MTX_SR_NONE, - "firstSRTransformedMtxIdx_ must be set only in the first time of using SR transform." - ); - - NNSI_G2D_DEBUGMSG1( - "Affine SR == ON : in stack_position %d \n", - NNSi_G2dGetMtxStackPos() - ); - - firstSRTransformedMtxIdx_ = NNSi_G2dGetMtxStackPos(); -} - -NNS_G2D_INLINE BOOL NNSi_G2dIsRndCurrentMtxSRTransformed () { - return (BOOL)(!bDonotUseSRTransform && - firstSRTransformedMtxIdx_ != G2Di_RENDERER_MTX_SR_NONE); -} - -NNS_G2D_INLINE void CheckIfRndCurrentMtxIsSRTransformed_ () { - if (NNSi_G2dIsRndCurrentMtxSRTransformed()) { - const u16 currentIdx = NNSi_G2dGetMtxStackPos(); - { - if (firstSRTransformedMtxIdx_ > currentIdx) { - NNSI_G2D_DEBUGMSG1( - "Affine SR == OFF : in stack_position %d \n", - currentIdx - ); - - RestoreRndMtxStackStateNotSR_(); - } - } - } -} - -NNS_G2D_INLINE BOOL NNSi_G2dIsStackEmpty () { - return (BOOL)(stackPos_ <= 0); -} - -NNS_G2D_INLINE BOOL NNSi_G2dStackHasEnoughCapacity () { - return (BOOL)(stackPos_ + 1 < NNS_G2D_MAXLENGTH_OF_2DMTXSTACK); -} - -NNS_G2D_INLINE void NNSi_G2dMtxPush () { - if (NNSi_G2dStackHasEnoughCapacity()) { - const int nextPos_ = stackPos_ + 1; - - if (bDonotUseSRTransform) { - mtxStack_[nextPos_]._20 = mtxStack_[stackPos_]._20; - mtxStack_[nextPos_]._21 = mtxStack_[stackPos_]._21; - fxZStack_[nextPos_] = fxZStack_[stackPos_]; - } else { - mtxStack_[nextPos_] = mtxStack_[stackPos_]; - mtxStackFor2DHW_[nextPos_] = mtxStackFor2DHW_[stackPos_]; - fxZStack_[nextPos_] = fxZStack_[stackPos_]; - } - stackPos_ = nextPos_; - } else { - OS_Warning("The mtxStack overflow in G2D library."); - } -} - -NNS_G2D_INLINE void NNSi_G2dMtxPop () { - if (!NNSi_G2dIsStackEmpty()) { - stackPos_--; - - { - if (firstSRTransformedMtxIdx_ > stackPos_) { - NNSI_G2D_DEBUGMSG1( - "Affine SR == OFF : in stack_position %d \n", - stackPos_ - ); - - RestoreRndMtxStackStateNotSR_(); - } - } - } else { - OS_Warning("The mtxStack is empty, so we can't pop it any more"); - } -} - -NNS_G2D_INLINE void NNSi_G2dTranslate (fx32 x, fx32 y, fx32 z) { - if (bDonotUseSRTransform) { - mtxStack_[stackPos_]._20 += x; - mtxStack_[stackPos_]._21 += y; - fxZStack_[stackPos_] += z; - } else { - MtxFx32 temp; - - NNSi_G2dSetTranslate(&temp, x, y); - NNSi_G2dMtxConcat32(&temp, &mtxStack_[stackPos_], &mtxStack_[stackPos_]); - NNSi_G2dMtxConcat32(&temp, &mtxStackFor2DHW_[stackPos_], &mtxStackFor2DHW_[stackPos_]); - - fxZStack_[stackPos_] += z; - } -} - -NNS_G2D_INLINE void NNSi_G2dSetTrans (fx32 x, fx32 y, fx32 z) { - mtxStack_[stackPos_]._20 = x; - mtxStack_[stackPos_]._21 = y; - if (!bDonotUseSRTransform) { - mtxStackFor2DHW_[stackPos_]._20 = x; - mtxStackFor2DHW_[stackPos_]._21 = y; - } - - fxZStack_[stackPos_] = z; -} - -NNS_G2D_INLINE void NNSi_G2dRotate (fx32 sin, fx32 cos) { - NNS_G2D_ASSERTMSG( - !bDonotUseSRTransform, - "Renderer module is the -- DonotUseSRTransform -- Mode.You can't use SR Transfomation." - ); - - { - MtxFx32 temp; - NNSi_G2dSetRotate(&temp, sin, cos); - - NNSi_G2dMtxConcat32(&temp, &mtxStack_[stackPos_], &mtxStack_[stackPos_]); - NNSi_G2dMtxConcat32(&temp, &mtxStackFor2DHW_[stackPos_], &mtxStackFor2DHW_[stackPos_]); - } -} - -NNS_G2D_INLINE void NNSi_G2dScale (fx32 sx, fx32 sy) { - NNS_G2D_ASSERTMSG( - !bDonotUseSRTransform, - "Renderer module is the -- DonotUseSRTransform -- Mode.You can't use SR Transfomation." - ); - - { - MtxFx32 temp; - NNSi_G2dSetScale(&temp, sx, sy); - NNSi_G2dMtxConcat32(&temp, &mtxStack_[stackPos_], &mtxStack_[stackPos_]); - NNSi_G2dSetScaleFor2DHW(&temp, sx, sy); - NNSi_G2dMtxConcat32(&temp, &mtxStackFor2DHW_[stackPos_], &mtxStackFor2DHW_[stackPos_]); - } -} - -static void NNSi_G2dIdentity ( ) { - if (bDonotUseSRTransform) { - mtxStack_[stackPos_]._20 = 0; - mtxStack_[stackPos_]._21 = 0; - } else { - MtxFx32 * pMtxCurr = &mtxStack_[stackPos_]; - - pMtxCurr->_00 = FX32_ONE; - pMtxCurr->_01 = 0; - pMtxCurr->_10 = 0; - pMtxCurr->_11 = FX32_ONE; - pMtxCurr->_20 = 0; - pMtxCurr->_21 = 0; - - mtxStackFor2DHW_[stackPos_] = *pMtxCurr; - } - - fxZStack_[stackPos_] = 0; -} - -NNS_G2D_INLINE const MtxFx32 * NNSi_G2dGetCurrentMtx () { - if (bDonotUseSRTransform) { - mtxI_._20 = mtxStack_[stackPos_]._20; - mtxI_._21 = mtxStack_[stackPos_]._21; - - return &mtxI_; - } else { - return &mtxStack_[stackPos_]; - } -} - -NNS_G2D_INLINE const MtxFx32 * NNSi_G2dGetCurrentMtxFor2DHW () { - if (bDonotUseSRTransform) { - mtxI_._20 = mtxStack_[stackPos_]._20; - mtxI_._21 = mtxStack_[stackPos_]._21; - - return &mtxI_; - } else { - return &mtxStackFor2DHW_[stackPos_]; - } -} - -NNS_G2D_INLINE fx32 NNSi_G2dGetCurrentZ () { - return fxZStack_[stackPos_]; -} - -NNS_G2D_INLINE u16 NNSi_G2dGetMtxStackPos ( ) { - return (u16)(stackPos_); -} - -#endif diff --git a/subprojects/NitroSystem/libraries/g2d/src/include/g2di_RendererMtxState.h b/subprojects/NitroSystem/libraries/g2d/src/include/g2di_RendererMtxState.h deleted file mode 100644 index 54a3984256..0000000000 --- a/subprojects/NitroSystem/libraries/g2d/src/include/g2di_RendererMtxState.h +++ /dev/null @@ -1,170 +0,0 @@ -#ifndef NNS_G2DI_RENDERERMTXSTATE_H_ -#define NNS_G2DI_RENDERERMTXSTATE_H_ - -#include - -#include "g2d_Internal.h" -#include "g2di_RendererMtxStack.hpp" -#include "g2di_RendererMtxCache.h" - -typedef enum MCMRndMtxStateType { - MCM_MTX_NOT_SR = 0, - MCM_MTX_SR_NOT_CACHELOADED, - MCM_MTX_SR_NOT_CACHELOADED_STACKCHANGED, - MCM_MTX_SR_CACHELOADED -} MCMRndMtxStateType; - -typedef struct MCMMtxState { - u16 mtxCacheIdx; - u16 groupID; - u16 stateType; - u16 pad16; -} MCMMtxState; - -NNS_G2D_INLINE u16 GetMtxStateMtxCacheIdx_ (const MCMMtxState * pMtxState) { - return pMtxState->mtxCacheIdx; -} - -NNS_G2D_INLINE void SetMtxStateMtxCacheIdx_ (MCMMtxState * pMtxState, u16 cacheIdx) { - pMtxState->mtxCacheIdx = cacheIdx; -} - -NNS_G2D_INLINE u16 GetMtxStateGroupID_ (const MCMMtxState * pMtxState) { - return pMtxState->groupID; -} - -NNS_G2D_INLINE void SetMtxStateGroupID_ (MCMMtxState * pMtxState, u16 groupID) { - pMtxState->groupID = groupID; -} - -static MCMMtxState mtxStateStack_[G2Di_NUM_MTX_CACHE]; -static u16 groupID_ = 0; - -NNS_G2D_INLINE MCMMtxState * GetCuurentMtxState_ () { - return &mtxStateStack_[NNSi_G2dGetMtxStackPos()]; -} - -NNS_G2D_INLINE void SetParentMtxStateLoaded_ (u16 mtxCacheIdx, u16 groupID) { - int i; - const u16 currntStackPos = NNSi_G2dGetMtxStackPos(); - - for (i = currntStackPos; i >= 0; i--) { - if (GetMtxStateGroupID_(&mtxStateStack_[i]) != groupID) { - break; - } else { - mtxStateStack_[i].stateType = MCM_MTX_SR_CACHELOADED; - SetMtxStateMtxCacheIdx_(&mtxStateStack_[i], mtxCacheIdx); - } - - NNSI_G2D_DEBUGMSG1( - "Set Loaded => mtxStateStack_[%d].mtxCacheIdx = %d\n", - i, - GetMtxStateMtxCacheIdx_(&mtxStateStack_[i]) - ); - } -} - -NNS_G2D_INLINE u16 GetNewGroupID_ () { - return groupID_++; -} - -NNS_G2D_INLINE void InitGroupID_ () { - groupID_ = 0; -} - -NNS_G2D_INLINE void NNSi_G2dMCMInitMtxCache () { - NNSi_G2dInitRndMtxStack(); - NNSi_RMCInitMtxCache(); - - InitGroupID_(); - - MI_CpuClearFast(mtxStateStack_, sizeof(mtxStateStack_)); -} - -NNS_G2D_INLINE NNSG2dRndCore2DMtxCache * NNSi_G2dMCMGetCurrentMtxCache () { - return NNSi_RMCGetMtxCacheByIdx(GetMtxStateMtxCacheIdx_(GetCuurentMtxState_())); -} - -NNS_G2D_INLINE void NNSi_G2dMCMCleanupMtxCache () { - NNSi_G2dInitRndMtxStack(); - - NNSi_RMCResetMtxCache(); - - InitGroupID_(); - - MI_CpuClearFast(mtxStateStack_, sizeof(mtxStateStack_)); -} - -NNS_G2D_INLINE BOOL NNSi_G2dMCMShouldCurrentMtxBeLoadedToMtxCache ( ) { - MCMMtxState * pCurrMtxState = GetCuurentMtxState_(); - - return (BOOL)(pCurrMtxState->stateType == MCM_MTX_SR_NOT_CACHELOADED || - pCurrMtxState->stateType == MCM_MTX_SR_NOT_CACHELOADED_STACKCHANGED); -} - -NNS_G2D_INLINE void NNSi_G2dMCMSetCurrentMtxSRChanged () { - MCMMtxState * pCurrMtxState = GetCuurentMtxState_(); - - switch (pCurrMtxState->stateType) { - case MCM_MTX_SR_NOT_CACHELOADED: - - return; - case MCM_MTX_NOT_SR: - case MCM_MTX_SR_NOT_CACHELOADED_STACKCHANGED: - case MCM_MTX_SR_CACHELOADED: - - { - SetMtxStateGroupID_(pCurrMtxState, GetNewGroupID_()); - - pCurrMtxState->stateType = MCM_MTX_SR_NOT_CACHELOADED; - - NNSI_G2D_DEBUGMSG1( - "currentMtxCachePos change to %d at %d\n", - pCurrMtxState->mtxCacheIdx, - NNSi_G2dGetMtxStackPos() - ); - } - break; - } -} - -NNS_G2D_INLINE void NNSi_G2dMCMSetMtxStackPushed (u16 newPos, u16 lastPos) { - mtxStateStack_[newPos] = mtxStateStack_[lastPos]; - - if (mtxStateStack_[lastPos].stateType == MCM_MTX_SR_NOT_CACHELOADED) { - mtxStateStack_[newPos].stateType = MCM_MTX_SR_NOT_CACHELOADED_STACKCHANGED; - } else { - mtxStateStack_[newPos].stateType = mtxStateStack_[lastPos].stateType; - } -} - -static void NNSi_G2dMCMStoreCurrentMtxToMtxCache ( ) { - if (NNSi_G2dMCMShouldCurrentMtxBeLoadedToMtxCache()) { - MCMMtxState * pCurrentState = GetCuurentMtxState_(); - const u16 mtxCacheIdx = NNSi_RMCUseNewMtxCache(); - const u16 groupID = GetMtxStateGroupID_(pCurrentState); - - NNS_G2D_MINMAX_ASSERT(mtxCacheIdx, 0, G2Di_NUM_MTX_CACHE - 1); - - SetMtxStateMtxCacheIdx_(pCurrentState, mtxCacheIdx); - - { - NNS_G2dInitRndCore2DMtxCache(NNSi_RMCGetMtxCacheByIdx(mtxCacheIdx)); - - NNSi_G2dGetMtxRS( - NNSi_G2dGetCurrentMtxFor2DHW(), - &NNSi_G2dMCMGetCurrentMtxCache()->m22 - ); - - NNSI_G2D_DEBUGMSG1( - "Mtx No %d is cache loaded To %d = %d\n", - mtxStateStackPos_, - pCurrMtxState->mtxCacheIdx - ); - } - - SetParentMtxStateLoaded_(mtxCacheIdx, groupID); - } -} - -#endif diff --git a/subprojects/NitroSystem/libraries/g2d/src/internal/g2di_BitReader.c b/subprojects/NitroSystem/libraries/g2d/src/internal/g2di_BitReader.c deleted file mode 100644 index e7e58be7af..0000000000 --- a/subprojects/NitroSystem/libraries/g2d/src/internal/g2di_BitReader.c +++ /dev/null @@ -1,29 +0,0 @@ -#include - -#include "../include/g2di_BitReader.h" - -static NNS_G2D_INLINE void BitReaderReload (NNSiG2dBitReader * reader) { - reader->bits = *(reader->src)++; - reader->availableBits = 8; -} - -u32 NNSi_G2dBitReaderRead (NNSiG2dBitReader * reader, int nBits) { - u32 val = reader->bits; - int nAvlBits = reader->availableBits; - - SDK_ASSERT(nBits <= 8); - - if (nAvlBits < nBits) { - int lack = nBits - nAvlBits; - val <<= lack; - BitReaderReload(reader); - val |= NNSi_G2dBitReaderRead(reader, lack); - } else { - val >>= (nAvlBits - nBits); - - reader->availableBits = (s8)(nAvlBits - nBits); - } - - val &= 0xFF >> (8 - nBits); - return val; -} diff --git a/subprojects/NitroSystem/libraries/g2d/src/internal/g2di_Mtx32.c b/subprojects/NitroSystem/libraries/g2d/src/internal/g2di_Mtx32.c deleted file mode 100644 index 0b15c2a16b..0000000000 --- a/subprojects/NitroSystem/libraries/g2d/src/internal/g2di_Mtx32.c +++ /dev/null @@ -1,41 +0,0 @@ -#include "../include/g2di_Mtx32.h" - -void NNSi_G2dMtxConcat32 (const MtxFx32 * a, const MtxFx32 * b, MtxFx32 * ab) { - MtxFx32 temp; - MtxFx32 * m; - - NNS_G2D_NULL_ASSERT(a); - NNS_G2D_NULL_ASSERT(b); - NNS_G2D_NULL_ASSERT(ab); - - if (ab == b) { - m = &temp; - } else { - m = ab; - } - - m->_00 = (fx32)(((fx64)a->_00 * b->_00 + (fx64)a->_01 * b->_10) >> FX32_SHIFT); - m->_01 = (fx32)(((fx64)a->_00 * b->_01 + (fx64)a->_01 * b->_11) >> FX32_SHIFT); - - m->_10 = (fx32)(((fx64)a->_10 * b->_00 + (fx64)a->_11 * b->_10) >> FX32_SHIFT); - m->_11 = (fx32)(((fx64)a->_10 * b->_01 + (fx64)a->_11 * b->_11) >> FX32_SHIFT); - - m->_20 = (fx32)(((fx64)a->_20 * b->_00 + (fx64)a->_21 * b->_10) >> FX32_SHIFT) + b->_20; - m->_21 = (fx32)(((fx64)a->_20 * b->_01 + (fx64)a->_21 * b->_11) >> FX32_SHIFT) + b->_21; - - if (m == &temp) { - *ab = temp; - } -} - -#ifndef SDK_FINALROM - -void NNSi_G2dDumpMtx32 (const MtxFx32 * m) { - NNS_G2D_NULL_ASSERT(m); - OS_Printf("---------------\n"); - OS_Printf(" | %.5f %.5f |\n", FX_FX32_TO_F32(m->_00), FX_FX32_TO_F32(m->_01)); - OS_Printf(" | %.5f %.5f |\n", FX_FX32_TO_F32(m->_10), FX_FX32_TO_F32(m->_11)); - OS_Printf(" | %.5f %.5f |\n", FX_FX32_TO_F32(m->_20), FX_FX32_TO_F32(m->_21)); - OS_Printf("---------------\n"); -} -#endif diff --git a/subprojects/NitroSystem/libraries/g2d/src/internal/g2di_SplitChar.c b/subprojects/NitroSystem/libraries/g2d/src/internal/g2di_SplitChar.c deleted file mode 100644 index b7d0a0f8c0..0000000000 --- a/subprojects/NitroSystem/libraries/g2d/src/internal/g2di_SplitChar.c +++ /dev/null @@ -1,101 +0,0 @@ -#include -#include -#include - -#define SJIS_LOW_WIDTH 0xBC -#define SJIS_LOW_BASE 0x40 -#define SJIS_HIGH_BASE 0x81 -#define SHIGH_AREA0_ST 0x81 -#define SHIGH_AREA0_ED 0x85 -#define SHIGH_AREA1 0x87 -#define SHIGH_AREA2_ST 0x88 -#define SHIGH_AREA2_ED 0xA0 -#define SHIGH_AREA3_ST 0xE0 -#define SHIGH_AREA3_ED 0x100 -#define ASCII_ST 0x20 -#define ASCII_ED 0x80 -#define HANKANA_ST 0xA0 -#define HANKANA_ED 0xE0 - -static NNS_G2D_INLINE BOOL IsSjisLeadByte (u8 c) { - return (((SJIS_HIGH_BASE <= c) && (c < SHIGH_AREA2_ED)) - || (SHIGH_AREA3_ST <= c)) - ? TRUE: FALSE; -} - -u16 NNSi_G2dSplitCharUTF16 (const void ** ppChar) { - u16 c; - - NNS_G2D_POINTER_ASSERT(ppChar); - NNS_G2D_POINTER_ASSERT(*ppChar); - NNS_G2D_ALIGN_ASSERT(*ppChar, 2); - - c = *(const unsigned short *)*ppChar; - ((const unsigned short *)*ppChar)++; - - return c; -} - -u16 NNSi_G2dSplitCharUTF8 (const void ** ppChar) { - const u8 * pChar; - u16 c; - - NNS_G2D_POINTER_ASSERT(ppChar); - NNS_G2D_POINTER_ASSERT(*ppChar); - NNS_G2D_ASSERT((*(const u8 *)*ppChar & 0xC0) != 0x80); - - pChar = (const u8 *)*ppChar; - - if ((*pChar & 0x80) == 0x00) { - c = *pChar; - *(u32 *)ppChar += 1; - } else if ((*pChar & 0xE0) == 0xC0) { - c = (u16)(((*(pChar + 0) & 0x1F) << 6) | - ((*(pChar + 1) & 0x3F) << 0)); - *(u32 *)ppChar += 2; - } else { - NNS_G2D_ASSERT((*pChar & 0xF0) == 0xE0); - - c = (u16)(((*(pChar + 0) & 0x1F) << 12) | - ((*(pChar + 1) & 0x3F) << 6) | - ((*(pChar + 2) & 0x3F) << 0)); - *(u32 *)ppChar += 3; - } - - return c; -} - -u16 NNSi_G2dSplitCharShiftJIS (const void ** ppChar) { - const u8 * pChar; - u16 c; - - NNS_G2D_POINTER_ASSERT(ppChar); - NNS_G2D_POINTER_ASSERT(*ppChar); - - pChar = (const u8 *)*ppChar; - - if (IsSjisLeadByte(*pChar)) { - c = (u16)(((*pChar) << 8) | (*(pChar + 1))); - *(u32 *)ppChar += 2; - } else { - c = *pChar; - *(u32 *)ppChar += 1; - } - - return c; -} - -u16 NNSi_G2dSplitChar1Byte (const void ** ppChar) { - const u8 * pChar; - u16 c; - - NNS_G2D_POINTER_ASSERT(ppChar); - NNS_G2D_POINTER_ASSERT(*ppChar); - - pChar = (const u8 *)*ppChar; - - c = *pChar; - *(u32 *)ppChar += 1; - - return c; -} diff --git a/subprojects/NitroSystem/libraries/g2d/src/load/g2d_Load.c b/subprojects/NitroSystem/libraries/g2d/src/load/g2d_Load.c deleted file mode 100644 index 2f4eb2bbe6..0000000000 --- a/subprojects/NitroSystem/libraries/g2d/src/load/g2d_Load.c +++ /dev/null @@ -1,66 +0,0 @@ -#include - -#include "../include/g2di_Debug.h" - -NNSG2dBinaryBlockHeader * NNS_G2dFindBinaryBlock (NNSG2dBinaryFileHeader * pBinFileHeader, u32 signature) { - NNS_G2D_NULL_ASSERT(pBinFileHeader); - - { - NNSG2dBinaryBlockHeader * pCursor - = (NNSG2dBinaryBlockHeader *)((u32)pBinFileHeader + (u32)pBinFileHeader->headerSize); - - u16 count = 0; - while (count < pBinFileHeader->dataBlocks) { - NNS_G2D_NULL_ASSERT(pCursor); - - NNSI_G2D_DEBUGMSG0("pCursor->kind = %d\n", pCursor->kind); - NNSI_G2D_DEBUGMSG0("signature = %d\n", signature); - - if (pCursor->kind == signature) { - return pCursor; - } - pCursor = (NNSG2dBinaryBlockHeader *)((u32)pCursor + pCursor->size); - count++; - } - } - - return NULL; -} - -void NNSi_G2dUnpackUserExCellAttrBank (NNSG2dUserExCellAttrBank * pCellAttrBank) { - u16 i; - - pCellAttrBank->pCellAttrArray - = NNS_G2D_UNPACK_OFFSET_PTR( - pCellAttrBank->pCellAttrArray, - pCellAttrBank - ); - for ( i = 0; i < pCellAttrBank->numCells; i++ ) { - pCellAttrBank->pCellAttrArray[i].pAttr - = NNS_G2D_UNPACK_OFFSET_PTR( - pCellAttrBank->pCellAttrArray[i].pAttr, - pCellAttrBank - ); - } -} - -#ifndef SDK_FINALROM - -void NNSi_G2dPrintUserExCellAttrBank (const NNSG2dUserExCellAttrBank * pCellAttrBank) { - u16 i, j; - OS_Printf("------ NNSG2dUserExCellAttrBank ------\n"); - OS_Printf("numCells = %d \n", pCellAttrBank->numCells); - OS_Printf("numAttribute = %d \n", pCellAttrBank->numAttribute); - - for ( i = 0; i < pCellAttrBank->numCells; i++ ) { - NNSG2dUserExCellAttr * pCellAttr - = &pCellAttrBank->pCellAttrArray[i]; - - for ( j = 0; j < pCellAttrBank->numAttribute; j++ ) { - OS_Printf("attr(%03d, %d) = %08x\n", i, j, pCellAttr->pAttr[j]); - } - } - OS_Printf("--------------------------------------\n"); -} - -#endif diff --git a/subprojects/NitroSystem/libraries/g2d/src/load/g2d_NAN_load.c b/subprojects/NitroSystem/libraries/g2d/src/load/g2d_NAN_load.c deleted file mode 100644 index c36a7a41c9..0000000000 --- a/subprojects/NitroSystem/libraries/g2d/src/load/g2d_NAN_load.c +++ /dev/null @@ -1,315 +0,0 @@ -#include -#include -#include - -#include "../include/g2di_Debug.h" - -#ifndef SDK_FINALROM -static const char * s_animTypeStrTbl[] = { - "NNS_G2D_ANIMATIONTYPE_INVALID", - "NNS_G2D_ANIMATIONTYPE_CELL", - "NNS_G2D_ANIMATIONTYPE_MULTICELLLOCATION", - "NNS_G2D_ANIMATIONTYPE_MAX", -}; - -static const char * s_elemTypeStrTbl[] = { - "NNS_G2D_ANIMELEMENT_INDEX", - "NNS_G2D_ANIMELEMENT_INDEX_SRT", - "NNS_G2D_ANIMELEMENT_INDEX_T", - "NNS_G2D_ANIMELEMENT_MAX" -}; - -static const char * s_playModeStrTbl[] = { - "NNS_G2D_ANIMATIONPLAYMODE_INVALID", - "NNS_G2D_ANIMATIONPLAYMODE_FORWARD", - "NNS_G2D_ANIMATIONPLAYMODE_FORWARD_LOOP", - "NNS_G2D_ANIMATIONPLAYMODE_REVERSE", - "NNS_G2D_ANIMATIONPLAYMODE_REVERSE_LOOP", - "NNS_G2D_ANIMATIONPLAYMODE_MAX" -}; -#endif - -static BOOL GetUnpackedAnimBankImpl_ (void * pNanrFile, NNSG2dAnimBankData ** ppAnimBank) { - NNS_G2D_NULL_ASSERT(pNanrFile); - NNS_G2D_NULL_ASSERT(ppAnimBank); - { - NNSG2dBinaryFileHeader * pBinFile = (NNSG2dBinaryFileHeader *)pNanrFile; - { - NNSG2dAnimBankDataBlock * pAnimBankBlk = - (NNSG2dAnimBankDataBlock *)NNS_G2dFindBinaryBlock( - pBinFile, - NNS_G2D_BLKSIG_ANIMBANK - ); - if (pAnimBankBlk) { - NNS_G2dUnpackNAN((void *)&pAnimBankBlk->animBankData); - - *ppAnimBank = &pAnimBankBlk->animBankData; - return TRUE; - } - } - } - - *ppAnimBank = NULL; - return FALSE; -} - -static BOOL CheckAnimSequenceValidity_ (const NNSG2dAnimSequenceData * pSeq) { - int i; - BOOL bHasEffectiveFrame = FALSE; - - for ( i = 0; i < pSeq->numFrames; i++ ) { - if (pSeq->pAnmFrameArray[i].frames != 0) { - bHasEffectiveFrame = TRUE; - } - } - - return bHasEffectiveFrame; -} - -BOOL NNS_G2dGetUnpackedAnimBank (void * pNanrFile, NNSG2dAnimBankData ** ppAnimBank) { - NNS_G2D_NULL_ASSERT(pNanrFile); - NNS_G2D_NULL_ASSERT(ppAnimBank); - - NNS_G2D_ASSERTMSG( - NNSi_G2dIsBinFileSignatureValid( - pNanrFile, - NNS_G2D_BINFILE_SIG_CELLANIM - ), - "Input file signature is invalid for this method." - ); - - NNS_G2D_ASSERTMSG( - NNSi_G2dIsBinFileVersionValid( - pNanrFile, - BIN_FILE_VERSION(NANR) - ), - "Input file is obsolete. Please use the new g2dcvtr.exe." - ); - - return GetUnpackedAnimBankImpl_(pNanrFile, ppAnimBank); -} - -BOOL NNS_G2dGetUnpackedMCAnimBank (void * pNanrFile, NNSG2dAnimBankData ** ppAnimBank) { - NNS_G2D_NULL_ASSERT(pNanrFile); - NNS_G2D_NULL_ASSERT(ppAnimBank); - - NNS_G2D_ASSERTMSG( - NNSi_G2dIsBinFileSignatureValid( - pNanrFile, - NNS_G2D_BINFILE_SIG_MULTICELLANIM - ), - "Input file signature is invalid for this method." - ); - - NNS_G2D_ASSERTMSG( - NNSi_G2dIsBinFileVersionValid( - pNanrFile, - BIN_FILE_VERSION(NANR) - ), - "Input file is obsolete. Please use the new g2dcvtr.exe." - ); - - return GetUnpackedAnimBankImpl_(pNanrFile, ppAnimBank); -} - -void NNS_G2dUnpackNAN (NNSG2dAnimBankData * pData) { - u16 i, j; - - NNS_G2D_NULL_ASSERT(pData); - - pData->pSequenceArrayHead = NNS_G2D_UNPACK_OFFSET_PTR(pData->pSequenceArrayHead, pData); - pData->pFrameArrayHead = NNS_G2D_UNPACK_OFFSET_PTR(pData->pFrameArrayHead, pData); - pData->pAnimContents = NNS_G2D_UNPACK_OFFSET_PTR(pData->pAnimContents, pData); - - { - NNSG2dAnimSequenceData * pSeq = pData->pSequenceArrayHead; - NNSG2dAnimFrameData * pFrameBase = pData->pFrameArrayHead; - void * pContentsBase = pData->pAnimContents; - - for ( i = 0; i < pData->numSequences; i++ ) { - pSeq[i].pAnmFrameArray = NNS_G2D_UNPACK_OFFSET_PTR(pSeq[i].pAnmFrameArray, pFrameBase); - - for ( j = 0; j < pSeq[i].numFrames; j++ ) { - pSeq[i].pAnmFrameArray[j].pContent = - NNS_G2D_UNPACK_OFFSET_PTR(pSeq[i].pAnmFrameArray[j].pContent, pContentsBase); - } - - NNS_G2D_ASSERTMSG(CheckAnimSequenceValidity_(&pSeq[i]), "An invalid anim-sequence is detected."); - } - } - - if (pData->pExtendedData != NULL) { - pData->pExtendedData = NNS_G2D_UNPACK_OFFSET_PTR(pData->pExtendedData, pData); - { - u32 i = 0; - u32 j = 0; - - NNSG2dUserExDataBlock * pExBlk - = (NNSG2dUserExDataBlock *)pData->pExtendedData; - NNSG2dUserExAnimAttrBank * pAnmExAttrBank - = (NNSG2dUserExAnimAttrBank *)(pExBlk + 1); - pAnmExAttrBank->pAnmSeqAttrArray - = NNS_G2D_UNPACK_OFFSET_PTR( - pAnmExAttrBank->pAnmSeqAttrArray, - pAnmExAttrBank - ); - - for ( i = 0; i < pAnmExAttrBank->numSequences; i++ ) { - NNSG2dUserExAnimSequenceAttr * pSeqAttr - = &pAnmExAttrBank->pAnmSeqAttrArray[i]; - - pSeqAttr->pAttr - = NNS_G2D_UNPACK_OFFSET_PTR( - pSeqAttr->pAttr, - pAnmExAttrBank - ); - pSeqAttr->pAnmFrmAttrArray - = NNS_G2D_UNPACK_OFFSET_PTR( - pSeqAttr->pAnmFrmAttrArray, - pAnmExAttrBank - ); - for ( j = 0; j < pSeqAttr->numFrames; j++ ) { - NNSG2dUserExAnimFrameAttr * pFrm = &pSeqAttr->pAnmFrmAttrArray[j]; - pFrm->pAttr - = NNS_G2D_UNPACK_OFFSET_PTR(pFrm->pAttr, pAnmExAttrBank); - } - } - } - } - - NNSI_G2D_DEBUGMSG0("Unpacking NANR file is successful.\n"); -} - -const NNSG2dAnimSequenceData * NNS_G2dGetAnimSequenceByIdx (const NNSG2dAnimBankData * pAnimBank, u16 idx) { - NNS_G2D_NULL_ASSERT(pAnimBank); - - if (NNS_G2dGetNumAnimSequence(pAnimBank) > idx) { - return &pAnimBank->pSequenceArrayHead[idx]; - } else { - return NULL; - } -} - -#ifndef SDK_FINALROM - -static void PrintAnimUserExAttr_ (const void * pUserEx) { - u32 i = 0; - u32 j = 0; - u32 k = 0; - - NNSG2dUserExDataBlock * pExBlk = (NNSG2dUserExDataBlock *)pUserEx; - NNSG2dUserExAnimAttrBank * pAnmExAttrBank = (NNSG2dUserExAnimAttrBank *)(pExBlk + 1); - - OS_Printf("------- NNSG2dUserExAnimAttrBank -------\n"); - OS_Printf("numAttribute = %d\n", pAnmExAttrBank->numAttribute); - OS_Printf("numSequences = %d\n", pAnmExAttrBank->numSequences); - - for ( i = 0; i < pAnmExAttrBank->numSequences; i++ ) { - NNSG2dUserExAnimSequenceAttr * pSeqAttr = &pAnmExAttrBank->pAnmSeqAttrArray[i]; - OS_Printf("------- NNSG2dUserExAnimSequenceAttr -------\n"); - OS_Printf("numFrames = %d\n", pSeqAttr->numFrames); - - for ( k = 0; k < pAnmExAttrBank->numAttribute; k++ ) { - OS_Printf("seq_attr( %03d, %d ) = %08x\n", i, k, pSeqAttr->pAttr[0]); - } - - for ( j = 0; j < pSeqAttr->numFrames; j++ ) { - NNSG2dUserExAnimFrameAttr * pFrm = &pSeqAttr->pAnmFrmAttrArray[j]; - for ( k = 0; k < pAnmExAttrBank->numAttribute; k++ ) { - OS_Printf("frame_attr( %03d, %d ) = %08x\n", j, k, pFrm->pAttr[0]); - } - } - OS_Printf("-------------------------------------------\n"); - } - OS_Printf("---------------------------------------\n"); -} - -void NNS_G2dPrintAnimContents (const void * pData, NNSG2dAnimationElement animElem) { - NNS_G2D_NULL_ASSERT(pData); - - switch (animElem) { - case NNS_G2D_ANIMELEMENT_INDEX: - { - const NNSG2dAnimData * pAnimData = (const NNSG2dAnimData *)pData; - OS_Printf("index = %d\n", *pAnimData); - break; - } - case NNS_G2D_ANIMELEMENT_INDEX_SRT: - { - const NNSG2dAnimDataSRT * pAnimData = (const NNSG2dAnimDataSRT *)pData; - OS_Printf("index = %d\n", pAnimData->index); - - OS_Printf("rotZ = %x\n", pAnimData->rotZ); - - OS_Printf("sx = %f\n", FX_FX32_TO_F32(pAnimData->sx)); - OS_Printf("sy = %f\n", FX_FX32_TO_F32(pAnimData->sy)); - - OS_Printf("px = %d\n", pAnimData->px); - OS_Printf("py = %d\n", pAnimData->py); - break; - } - case NNS_G2D_ANIMELEMENT_INDEX_T: - { - const NNSG2dAnimDataT * pAnimData = (const NNSG2dAnimDataT *)pData; - OS_Printf("index = %d\n", pAnimData->index); - - OS_Printf("px = %d\n", pAnimData->px); - OS_Printf("py = %d\n", pAnimData->py); - break; - } - default: - NNS_G2D_ASSERT(FALSE); - } -} - -void NNS_G2dPrintAnimFrame (const NNSG2dAnimFrameData * pFrame, NNSG2dAnimationElement animElem) { - NNS_G2D_NULL_ASSERT(pFrame); - - OS_Printf("frames = %d\n", pFrame->frames); - NNS_G2dPrintAnimContents(pFrame->pContent, animElem); -} - -void NNS_G2dPrintAnimSequence (const NNSG2dAnimSequenceData * pSeq) { - u16 i; - NNS_G2D_NULL_ASSERT(pSeq); - { - const NNSG2dAnimationType animType = NNS_G2dGetAnimSequenceAnimType(pSeq); - const NNSG2dAnimationElement animElem = NNS_G2dGetAnimSequenceElementType(pSeq); - - NNS_G2D_MINMAX_ASSERT(animType, NNS_G2D_ANIMATIONTYPE_CELL, NNS_G2D_ANIMATIONTYPE_MAX); - NNS_G2D_MINMAX_ASSERT(animElem, NNS_G2D_ANIMELEMENT_INDEX, NNS_G2D_ANIMELEMENT_INDEX_T); - - OS_Printf("-------------Sequence---------------\n"); - OS_Printf("numFrames = %d\n", pSeq->numFrames); - OS_Printf("animType = %s\n", s_animTypeStrTbl[animType]); - OS_Printf("animElem = %s\n", s_elemTypeStrTbl[animElem]); - - OS_Printf("loopStartFrameIdx = %d\n", pSeq->loopStartFrameIdx); - OS_Printf("playMode = %s\n", s_playModeStrTbl[pSeq->playMode]); - - for ( i = 0; i < pSeq->numFrames; i++ ) { - NNS_G2dPrintAnimFrame(&pSeq->pAnmFrameArray[i], animElem); - } - OS_Printf("------------------------------------\n"); - } -} - -void NNS_G2dPrintAnimBank (const NNSG2dAnimBankData * pAnimBank) { - u16 i; - - NNS_G2D_NULL_ASSERT(pAnimBank); - - OS_Printf("---------------Anim Bank---------------------\n"); - OS_Printf("numSequences = %d\n", pAnimBank->numSequences); - for ( i = 0; i < pAnimBank->numSequences; i++ ) { - NNS_G2dPrintAnimSequence(&pAnimBank->pSequenceArrayHead[i]); - } - - if (pAnimBank->pExtendedData != NULL) { - OS_Printf("---------------UserEx--------------------\n"); - PrintAnimUserExAttr_(pAnimBank->pExtendedData); - OS_Printf("-----------------------------------------\n"); - } - OS_Printf("---------------------------------------------\n"); -} -#endif diff --git a/subprojects/NitroSystem/libraries/g2d/src/load/g2d_NCG_load.c b/subprojects/NitroSystem/libraries/g2d/src/load/g2d_NCG_load.c deleted file mode 100644 index 6d5d85715b..0000000000 --- a/subprojects/NitroSystem/libraries/g2d/src/load/g2d_NCG_load.c +++ /dev/null @@ -1,265 +0,0 @@ -#include -#include -#include - -#include "../include/g2di_Debug.h" - -#define NNS_G2D_NCGR_VER_FOR_CHARDATA_BLK_LOADING NNS_G2dMakeVersionData((u8)1, (u8)0) - -#ifndef SDK_FINALROM -static const char * StrNNSG2dPixelFmt_ [] = { - "INVALID_PixelFmt !! ", - "INVALID_PixelFmt !! ", - "INVALID_PixelFmt !! ", - "GX_TEXFMT_PLTT16", - "GX_TEXFMT_PLTT256", - "INVALID_PixelFmt !! ", - "INVALID_PixelFmt !! ", - "INVALID_PixelFmt !! " -}; - -static const char * StrNNSG2dCharacterOrder_ [] = { - "NNS_G2D_CHARACTER_FMT_CHAR", - "NNS_G2D_CHARACTER_FMT_BMP", - "NNS_G2D_CHARACTER_FMT_MAX" -}; - -static const char * GetStrNNSG2dCharacterDataMapingType_ (GXOBJVRamModeChar type) { - switch (type) { - case GX_OBJVRAMMODE_CHAR_2D: return "GX_OBJVRAMMODE_CHAR_2D "; - case GX_OBJVRAMMODE_CHAR_1D_32K: return "GX_OBJVRAMMODE_CHAR_1D_32K "; - case GX_OBJVRAMMODE_CHAR_1D_64K: return "GX_OBJVRAMMODE_CHAR_1D_64K "; - case GX_OBJVRAMMODE_CHAR_1D_128K: return "GX_OBJVRAMMODE_CHAR_1D_128K "; - case GX_OBJVRAMMODE_CHAR_1D_256K: return "GX_OBJVRAMMODE_CHAR_1D_256K "; - default: NNS_G2D_ASSERT(FALSE); return "INVALID_TYPE"; - } -} -#endif - -BOOL NNS_G2dGetUnpackedCharacterData (void * pNcgrFile, NNSG2dCharacterData ** ppCharData) { - NNS_G2D_NULL_ASSERT(pNcgrFile); - NNS_G2D_NULL_ASSERT(ppCharData); - - NNS_G2D_ASSERTMSG( - NNSi_G2dIsBinFileSignatureValid( - pNcgrFile, - NNS_G2D_BINFILE_SIG_CHARACTERDATA - ), - "Input file signature is invalid for this method." - ); - - NNS_G2D_ASSERTMSG( - NNSi_G2dIsBinFileVersionValid( - pNcgrFile, - NNS_G2D_NCGR_VER_FOR_CHARDATA_BLK_LOADING - ), - "Input file is obsolete. Please use the new g2dcvtr.exe." - ); - - { - NNSG2dBinaryFileHeader * pBinFile = (NNSG2dBinaryFileHeader *)pNcgrFile; - { - NNSG2dCharacterDataBlock * pBinBlk = - (NNSG2dCharacterDataBlock *)NNS_G2dFindBinaryBlock( - pBinFile, - NNS_G2D_BINBLK_SIG_CHARACTERDATA - ); - if (pBinBlk) { - NNS_G2dUnpackNCG((void *)&pBinBlk->characterData); - - *ppCharData = &pBinBlk->characterData; - return TRUE; - } else { - *ppCharData = NULL; - return FALSE; - } - } - } -} - -void NNS_G2dUnpackNCG (NNSG2dCharacterData * pCharData) { - NNS_G2D_NULL_ASSERT(pCharData); - - pCharData->pRawData - = NNS_G2D_UNPACK_OFFSET_PTR(pCharData->pRawData, pCharData); - - NNS_G2D_MINMAX_ASSERT( - pCharData->pixelFmt - , GX_TEXFMT_PLTT16, GX_TEXFMT_PLTT256 - ); - - NNS_G2D_MINMAX_ASSERT( - pCharData->mapingType - , GX_OBJVRAMMODE_CHAR_2D, GX_OBJVRAMMODE_CHAR_1D_256K - ); - - NNS_G2D_MINMAX_ASSERT( - NNSi_G2dGetCharacterFmtType(pCharData->characterFmt) - , NNS_G2D_CHARACTER_FMT_CHAR, NNS_G2D_CHARACTER_FMT_MAX - ); - - if ((pCharData->characterFmt == NNS_G2D_CHARACTER_FMT_CHAR) - && (pCharData->mapingType == GX_OBJVRAMMODE_CHAR_2D)) { - NNS_G2D_ASSERTMSG( - (pCharData->pixelFmt == GX_TEXFMT_PLTT16 && - pCharData->W == 32) || - (pCharData->pixelFmt == GX_TEXFMT_PLTT256 && - pCharData->W == 16) - , "Invalid OBJ character data size for 2D mapping mode." - ); - } - - NNSI_G2D_DEBUGMSG0("Unpacking NCGR file is successful.\n"); -} - -BOOL NNS_G2dGetUnpackedBGCharacterData (void * pNcgrFile, NNSG2dCharacterData ** ppCharData) { - NNS_G2D_NULL_ASSERT(pNcgrFile); - NNS_G2D_NULL_ASSERT(ppCharData); - - NNS_G2D_ASSERTMSG( - NNSi_G2dIsBinFileSignatureValid( - pNcgrFile, - NNS_G2D_BINFILE_SIG_CHARACTERDATA - ), - "Input file signature is invalid for this method." - ); - - NNS_G2D_ASSERTMSG( - NNSi_G2dIsBinFileVersionValid( - pNcgrFile, - NNS_G2D_NCGR_VER_FOR_CHARDATA_BLK_LOADING - ), - "Input file is obsolete. Please use the new g2dcvtr.exe." - ); - - { - NNSG2dBinaryFileHeader * pBinFile = (NNSG2dBinaryFileHeader *)pNcgrFile; - { - NNSG2dCharacterDataBlock * pBinBlk = - (NNSG2dCharacterDataBlock *)NNS_G2dFindBinaryBlock( - pBinFile, - NNS_G2D_BINBLK_SIG_CHARACTERDATA - ); - if (pBinBlk) { - NNS_G2dUnpackBGNCG((void *)&pBinBlk->characterData); - - *ppCharData = &pBinBlk->characterData; - return TRUE; - } else { - *ppCharData = NULL; - return FALSE; - } - } - } -} - -BOOL NNS_G2dGetUnpackedCharacterPosInfo (void * pNcgrFile, NNSG2dCharacterPosInfo ** ppCharPosInfo) { - NNS_G2D_NULL_ASSERT(pNcgrFile); - NNS_G2D_NULL_ASSERT(ppCharPosInfo); - - NNS_G2D_ASSERTMSG( - NNSi_G2dIsBinFileSignatureValid( - pNcgrFile, - NNS_G2D_BINFILE_SIG_CHARACTERDATA - ), - "Input file signature is invalid for this method." - ); - - NNS_G2D_ASSERTMSG( - NNSi_G2dIsBinFileVersionValid( - pNcgrFile, - BIN_FILE_VERSION(NCGR) - ), - "Input file is obsolete. Please use the new g2dcvtr.exe." - ); - - { - NNSG2dBinaryFileHeader * pBinFile = (NNSG2dBinaryFileHeader *)pNcgrFile; - { - NNSG2dCharacterPosInfoBlock * pBinBlk = - (NNSG2dCharacterPosInfoBlock *)NNS_G2dFindBinaryBlock( - pBinFile, - NNS_G2D_BINBLK_SIG_CHAR_POSITION - ); - if (pBinBlk) { - *ppCharPosInfo = &pBinBlk->posInfo; - return TRUE; - } else { - *ppCharPosInfo = NULL; - return FALSE; - } - } - } -} - -void NNS_G2dUnpackBGNCG (NNSG2dCharacterData * pCharData) { - NNS_G2D_NULL_ASSERT(pCharData); - - pCharData->pRawData - = NNS_G2D_UNPACK_OFFSET_PTR(pCharData->pRawData, pCharData); - - NNS_G2D_MINMAX_ASSERT( - pCharData->pixelFmt - , GX_TEXFMT_PLTT16, GX_TEXFMT_PLTT256 - ); - - NNS_G2D_MINMAX_ASSERT( - pCharData->mapingType - , GX_OBJVRAMMODE_CHAR_2D, GX_OBJVRAMMODE_CHAR_1D_256K - ); - - NNS_G2D_ASSERT( - NNSi_G2dGetCharacterFmtType(pCharData->characterFmt) - == NNS_G2D_CHARACTER_FMT_CHAR - ); - - NNSI_G2D_DEBUGMSG0("Unpacking NCGR file is successful.\n"); -} - -#ifndef SDK_FINALROM - -void NNS_G2dPrintCharacterData (const NNSG2dCharacterData * pCharData) { - NNS_G2D_NULL_ASSERT(pCharData); - { - const NNSG2dCharacterFmt charFmt = NNSi_G2dGetCharacterFmtType(pCharData->characterFmt); - - OS_Printf("---------------------------------------------\n"); - OS_Printf(" Character Data (NCG) \n"); - OS_Printf(" szByte = %d \n", pCharData->szByte); - - { - if (pCharData->W == NNS_G2D_1D_MAPPING_CHAR_SIZE) { - OS_Printf(" W = %s \n", "Not used( 1D mapping data.)"); - } else { - OS_Printf(" W = %d \n", pCharData->W); - } - - if (pCharData->H == NNS_G2D_1D_MAPPING_CHAR_SIZE) { - OS_Printf(" H = %s \n", "Not used( 1D mapping data.)"); - } else { - OS_Printf(" H = %d \n", pCharData->H); - } - } - - OS_Printf(" pixelFmt = %s \n", StrNNSG2dPixelFmt_[pCharData->pixelFmt]); - OS_Printf(" mapingType = %s \n", GetStrNNSG2dCharacterDataMapingType_(pCharData->mapingType)); - OS_Printf(" characterFmt = %s \n", StrNNSG2dCharacterOrder_[charFmt]); - OS_Printf(" isVramTransfer = %d \n", NNSi_G2dIsCharacterVramTransfered(pCharData->characterFmt)); - OS_Printf("---------------------------------------------\n"); - } -} - -void NNS_G2dPrintCharacterPosInfo (const NNSG2dCharacterPosInfo * pPosInfo) { - NNS_G2D_NULL_ASSERT(pPosInfo); - { - OS_Printf("---------------------------------------------\n"); - OS_Printf(" Character PosInfo (NCG) \n"); - OS_Printf(" srcPosX = %d \n", pPosInfo->srcPosX); - OS_Printf(" srcPosY = %d \n", pPosInfo->srcPosY); - OS_Printf(" srcW = %d \n", pPosInfo->srcW); - OS_Printf(" srcH = %d \n", pPosInfo->srcH); - OS_Printf("---------------------------------------------\n"); - } -} - -#endif diff --git a/subprojects/NitroSystem/libraries/g2d/src/load/g2d_NCL_load.c b/subprojects/NitroSystem/libraries/g2d/src/load/g2d_NCL_load.c deleted file mode 100644 index d8fa5b5bda..0000000000 --- a/subprojects/NitroSystem/libraries/g2d/src/load/g2d_NCL_load.c +++ /dev/null @@ -1,157 +0,0 @@ -#include -#include -#include - -#include "../include/g2di_Debug.h" - -#ifndef SDK_FINALROM -static const char * StrNNSG2dPaletteFmt_ [] = { - "INVALID_PixelFmt !! ", - "INVALID_PixelFmt !! ", - "INVALID_PixelFmt !! ", - "GX_TEXFMT_PLTT16", - "GX_TEXFMT_PLTT256", - "INVALID_PixelFmt !! ", - "INVALID_PixelFmt !! ", - "INVALID_PixelFmt !! " -}; -#endif - -static void DumpPalette_ (const NNSG2dPaletteData * pPlttData) { - NNS_G2D_NULL_ASSERT(pPlttData); - NNS_G2D_NULL_ASSERT(pPlttData->pRawData); - { - u16 i; - const u16 * pColor = (const u16 *)pPlttData->pRawData; - OS_Printf("\n ---------------- palette ---------------- \n"); - for ( i = 0; i < 16 * 16; i++ ) { - if ((i & 0xF) == 0) { - OS_Printf("\n"); - } - - OS_Printf(" %04X ", pColor[i]); - } - OS_Printf("\n ---------------- palette ---------------- \n"); - } -} - -BOOL NNS_G2dGetUnpackedPaletteData (void * pNclrFile, NNSG2dPaletteData ** ppPltData) { - NNS_G2D_NULL_ASSERT(pNclrFile); - NNS_G2D_NULL_ASSERT(ppPltData); - - { - const NNSG2dBinaryFileHeader * pBinFile = pNclrFile; - - NNS_G2D_ASSERTMSG( - pBinFile->signature == NNS_G2D_BINFILE_SIG_PALETTEDATA || - pBinFile->signature == NNS_G2D_BINFILE_SIG_PALETTEDATA_OLD, - "Input file signature is invalid for this method." - ); - } - - NNS_G2D_ASSERTMSG( - NNSi_G2dIsBinFileVersionValid( - pNclrFile, - BIN_FILE_VERSION(NCLR) - ), - "Input file is obsolete. Please use the new g2dcvtr.exe." - ); - - { - NNSG2dBinaryFileHeader * pBinFile = (NNSG2dBinaryFileHeader *)pNclrFile; - { - NNSG2dPaletteDataBlock * pBinBlk = - (NNSG2dPaletteDataBlock *)NNS_G2dFindBinaryBlock( - pBinFile, - NNS_G2D_BINBLK_SIG_PALETTEDATA - ); - if (pBinBlk) { - NNS_G2dUnpackNCL((void *)&pBinBlk->paletteData); - - *ppPltData = &pBinBlk->paletteData; - return TRUE; - } else { - *ppPltData = NULL; - return FALSE; - } - } - } -} - -BOOL NNS_G2dGetUnpackedPaletteCompressInfo (void * pNclrFile, NNSG2dPaletteCompressInfo ** ppPltCmpInfo) { - NNS_G2D_NULL_ASSERT(pNclrFile); - NNS_G2D_NULL_ASSERT(ppPltCmpInfo); - - { - const NNSG2dBinaryFileHeader * pBinFile = pNclrFile; - - NNS_G2D_ASSERTMSG( - pBinFile->signature == NNS_G2D_BINFILE_SIG_PALETTEDATA || - pBinFile->signature == NNS_G2D_BINFILE_SIG_PALETTEDATA_OLD, - "Input file signature is invalid for this method." - ); - } - - NNS_G2D_ASSERTMSG( - NNSi_G2dIsBinFileVersionValid( - pNclrFile, - BIN_FILE_VERSION(NCLR) - ), - "Input file is obsolete. Please use the new g2dcvtr.exe." - ); - - { - NNSG2dBinaryFileHeader * pBinFile = (NNSG2dBinaryFileHeader *)pNclrFile; - { - NNSG2dPaletteCompressDataBlock * pBinBlk = - (NNSG2dPaletteCompressDataBlock *)NNS_G2dFindBinaryBlock( - pBinFile, - NNS_G2D_BINBLK_SIG_PALETTECOMPINFO - ); - if (pBinBlk) { - NNSi_G2dUnpackNCLCmpInfo((void *)&pBinBlk->plttCmpInfo); - - *ppPltCmpInfo = &pBinBlk->plttCmpInfo; - return TRUE; - } else { - *ppPltCmpInfo = NULL; - return FALSE; - } - } - } -} - -void NNSi_G2dUnpackNCLCmpInfo (NNSG2dPaletteCompressInfo * pPlttCmpInfo) { - NNS_G2D_NULL_ASSERT(pPlttCmpInfo); - - pPlttCmpInfo->pPlttIdxTbl - = NNS_G2D_UNPACK_OFFSET_PTR(pPlttCmpInfo->pPlttIdxTbl, pPlttCmpInfo); - - NNSI_G2D_DEBUGMSG0("Unpacking NCLR(Compressed) file is successful.\n"); -} - -void NNS_G2dUnpackNCL (NNSG2dPaletteData * pPlttData) { - NNS_G2D_NULL_ASSERT(pPlttData); - - pPlttData->pRawData = NNS_G2D_UNPACK_OFFSET_PTR(pPlttData->pRawData, pPlttData); - - NNS_G2D_MINMAX_ASSERT(pPlttData->fmt, GX_TEXFMT_PLTT16, GX_TEXFMT_PLTT256); - - NNSI_G2D_DEBUGMSG0("Unpacking NCLR file is successful.\n"); -} - -#ifndef SDK_FINALROM - -void NNS_G2dPrintPaletteData (const NNSG2dPaletteData * pPlttData) { - NNS_G2D_NULL_ASSERT(pPlttData); - { - OS_Printf("---------------------------------------------\n"); - OS_Printf(" Palette Data (NCL)"); - OS_Printf(" fmt = %s \n", StrNNSG2dPaletteFmt_[pPlttData->fmt]); - OS_Printf(" bExtendedPlt = %d \n", pPlttData->bExtendedPlt); - DumpPalette_(pPlttData); - OS_Printf("---------------------------------------------\n"); - } -} - -#endif diff --git a/subprojects/NitroSystem/libraries/g2d/src/load/g2d_NFT_load.c b/subprojects/NitroSystem/libraries/g2d/src/load/g2d_NFT_load.c deleted file mode 100644 index 7361bf9d69..0000000000 --- a/subprojects/NitroSystem/libraries/g2d/src/load/g2d_NFT_load.c +++ /dev/null @@ -1,323 +0,0 @@ -#include -#include -#include -#include - -BOOL NNSi_G2dGetUnpackedFont (void * pNftrFile, NNSG2dFontInformation ** ppRes) { -#ifdef NNS_G2D_FONT_USE_OLD_RESOURCE - BOOL isOldVer = FALSE; -#endif - NNS_G2D_POINTER_ASSERT(pNftrFile); - NNS_G2D_ALIGN_ASSERT(pNftrFile, 4); - NNS_G2D_POINTER_ASSERT(ppRes); -#ifdef NNS_G2D_FONT_USE_OLD_RESOURCE - if (!NNS_G2dIsBinFileValid(pNftrFile, NNS_G2D_BINFILE_SIG_FONTDATA, NNS_G2D_NFTR_VER)) { - if (!NNS_G2dIsBinFileValid(pNftrFile, NNS_G2D_BINFILE_SIG_FONTDATA, NNS_G2D_NFTR_PREV_VER)) { - OS_Panic("Input file is invalid or obsolete. Please use latest fontcvtr."); - } - - isOldVer = TRUE; - } -#else - NNS_G2D_ASSERTMSG( - NNS_G2dIsBinFileValid( - pNftrFile, NNS_G2D_BINFILE_SIG_FONTDATA, - BIN_FILE_VERSION(NFTR) - ), "Input file is obsolete. Please use latest fontcvtr." - ); -#endif - - { - NNSG2dBinaryFileHeader * pBinFile = (NNSG2dBinaryFileHeader *)pNftrFile; - NNSG2dBinaryBlockHeader * pBinBlock; - - NNSi_G2dUnpackNFT(pBinFile); - - pBinBlock = NNS_G2dFindBinaryBlock(pBinFile, NNS_G2D_BINBLK_SIG_FINFDATA); - - if (pBinBlock == NULL) { - *ppRes = NULL; - return FALSE; - } - - *ppRes = (NNSG2dFontInformation *)((u8 *)pBinBlock + sizeof(*pBinBlock)); -#ifdef NNS_G2D_FONT_USE_OLD_RESOURCE - if (isOldVer) { - (*ppRes)->pGlyph->flags = 0; - } -#endif -#ifndef NNS_G2D_FONT_ENABLE_DIRECTION_SUPPORT - NNS_G2D_WARNING((*ppRes)->pGlyph->flags == 0, "Loading NFTR requires DIRECTION_SUPPORT, but it disabled."); -#endif - } - - return TRUE; -} - -static void NNS_G2D_INLINE ResolveOffset (void ** ppOffset, void * pBase) { - *ppOffset = (void *)(*(u32 *)ppOffset + (u32)pBase); -} - -void NNSi_G2dUnpackNFT (NNSG2dBinaryFileHeader * pHeader) { - NNSG2dBinaryBlockHeader * pBlock; - NNSG2dFontInformation * pInfo = NULL; - - NNS_G2D_POINTER_ASSERT(pHeader); - - { - int nBlocks = 0; - pBlock = (NNSG2dBinaryBlockHeader *)((u8 *)pHeader + pHeader->headerSize); - - while (nBlocks < pHeader->dataBlocks) { - switch (pBlock->kind) { - case NNS_G2D_BINBLK_SIG_FINFDATA: - - NNS_G2D_ASSERT(pInfo == NULL); - { - pInfo = (NNSG2dFontInformation *)((u8 *)pBlock + sizeof(*pBlock)); - - NNS_G2D_ASSERT(pInfo->fontType == NNS_G2D_FONTTYPE_GLYPH); - - NNS_G2D_NULL_ASSERT(pInfo->pGlyph); - ResolveOffset((void **)&(pInfo->pGlyph), pHeader); - NNS_G2D_POINTER_ASSERT(pInfo->pGlyph) - - if (pInfo->pWidth != NULL) { - ResolveOffset((void **)&(pInfo->pWidth), pHeader); - NNS_G2D_POINTER_ASSERT(pInfo->pWidth) - } - if (pInfo->pMap != NULL) { - ResolveOffset((void **)&(pInfo->pMap), pHeader); - NNS_G2D_POINTER_ASSERT(pInfo->pMap) - } - } - break; - - case NNS_G2D_BINBLK_SIG_CGLPDATA: - - { - NNSG2dFontGlyph * pGlyph = (NNSG2dFontGlyph *)((u8 *)pBlock + sizeof(*pBlock)); - NNS_G2D_MIN_ASSERT(pGlyph->cellWidth, 1); - NNS_G2D_MIN_ASSERT(pGlyph->cellHeight, 1); - NNS_G2D_MIN_ASSERT(pGlyph->cellSize, 1); - NNS_G2D_MINMAX_ASSERT(pGlyph->bpp, 1, 8); - } - break; - - case NNS_G2D_BINBLK_SIG_CWDHDATA: - { - NNSG2dFontWidth * pWidth = (NNSG2dFontWidth *)((u8 *)pBlock + sizeof(*pBlock)); - - NNS_G2D_ASSERT(pWidth->indexBegin <= pWidth->indexEnd); - - if (pWidth->pNext != NULL) { - ResolveOffset((void **)&(pWidth->pNext), pHeader); - NNS_G2D_POINTER_ASSERT(pWidth->pNext) - } - } - break; - - case NNS_G2D_BINBLK_SIG_CMAPDATA: - { - NNSG2dFontCodeMap * pMap = (NNSG2dFontCodeMap *)((u8 *)pBlock + sizeof(*pBlock)); - - NNS_G2D_ASSERT(pMap->ccodeBegin <= pMap->ccodeEnd); - NNS_G2D_ASSERT( - (pMap->mappingMethod == NNS_G2D_MAPMETHOD_DIRECT) - || (pMap->mappingMethod == NNS_G2D_MAPMETHOD_TABLE) - || (pMap->mappingMethod == NNS_G2D_MAPMETHOD_SCAN) - ); - - if (pMap->pNext != NULL) { - ResolveOffset((void **)&(pMap->pNext), pHeader); - NNS_G2D_POINTER_ASSERT(pMap->pNext) - } - } - break; - - default: - NNS_G2D_ASSERTMSG(FALSE, "The font has unknown block."); - break; - } - - pBlock = (NNSG2dBinaryBlockHeader *)((u8 *)pBlock + pBlock->size); - nBlocks++; - } - } - - NNS_G2D_ASSERTMSG(pInfo != NULL, "The font has no Information Block."); - NNS_G2D_ASSERTMSG(pInfo->pGlyph != NULL, "The font has no Glyph Block."); - - NNS_G2D_ASSERT(pInfo->alterCharIndex < NNS_G2D_FONT_MAX_GLYPH_INDEX((NNSG2dFont *)&pInfo)); -} - -#ifndef SDK_FINALROM - -static void PrintFontInformation (const NNSG2dFontInformation * pInfo) { - const static char * fontTypeString[] = { - "NNS_G2D_FONTTYPE_GLYPH", - "NNS_G2D_FONTTYPE_SHEET" - }; - const static char * encodingString[] = { - "NNS_G2D_FONT_ENCODING_UTF8", - "NNS_G2D_FONT_ENCODING_UTF16", - "NNS_G2D_FONT_ENCODING_SJIS", - "NNS_G2D_FONT_ENCODING_CP1252", - }; - - NNS_G2D_POINTER_ASSERT(pInfo); - NNS_G2D_MINMAX_ASSERT(pInfo->fontType, 0, NNS_G2D_NUM_OF_FONTTYPE - 1); - NNS_G2D_MINMAX_ASSERT(pInfo->encoding, 0, NNS_G2D_NUM_OF_ENCODING - 1); - - OS_Printf(" NNSG2dFontInformation\n"); - OS_Printf(" fontType = %s\n", fontTypeString[pInfo->fontType]); - OS_Printf(" linefeed = %d px\n", pInfo->linefeed); - OS_Printf(" alterCharIndex = 0x%04X\n", pInfo->alterCharIndex); - OS_Printf(" defaultWidth.left = %d px\n", pInfo->defaultWidth.left); - OS_Printf(" defaultWidth.glyphWidth = %d px\n", pInfo->defaultWidth.glyphWidth); - OS_Printf(" defaultWidth.charWidth = %d px\n", pInfo->defaultWidth.charWidth); - OS_Printf(" encoding = %s\n", encodingString[pInfo->encoding]); -} - -static void PrintFontGlyph (const NNSG2dFontGlyph * pGlyph) { - NNS_G2D_POINTER_ASSERT(pGlyph); - - OS_Printf(" NNSG2dFontGlyph\n"); - OS_Printf(" cellWidth = %d px\n", pGlyph->cellWidth); - OS_Printf(" cellHeight = %d px\n", pGlyph->cellHeight); - OS_Printf(" cellSize = %d byte\n", pGlyph->cellSize); - OS_Printf(" baselinePos = %d px\n", pGlyph->baselinePos); - OS_Printf(" maxCharWidth = %d px\n", pGlyph->maxCharWidth); - OS_Printf(" bpp = %d bpp\n", pGlyph->bpp); - OS_Printf(" flags = "); - if ((pGlyph->flags & NNS_G2D_FONT_FLAG_TBRL) != 0) { - OS_Printf("NNS_G2D_FONT_FLAG_TBRL "); - } - - switch (pGlyph->flags & NNS_G2D_FONT_FLAG_ROT_MASK) { - case NNS_G2D_FONT_FLAG_ROT_0: OS_Printf("NNS_G2D_FONT_FLAG_ROT_0\n"); break; - case NNS_G2D_FONT_FLAG_ROT_90: OS_Printf("NNS_G2D_FONT_FLAG_ROT_90\n"); break; - case NNS_G2D_FONT_FLAG_ROT_180: OS_Printf("NNS_G2D_FONT_FLAG_ROT_180\n"); break; - case NNS_G2D_FONT_FLAG_ROT_270: OS_Printf("NNS_G2D_FONT_FLAG_ROT_270\n"); break; - } -} - -static void PrintFontWidth (const NNSG2dFontWidth * pWidth) { - NNS_G2D_POINTER_ASSERT(pWidth); - - OS_Printf(" NNSG2dFontWidth\n"); - OS_Printf(" indexBegin = 0x%04X\n", pWidth->indexBegin); - OS_Printf(" indexEnd = 0x%04X\n", pWidth->indexEnd); -} - -static void PrintFontCMapTable (const u16 * table, int num, int ccodeOffset) { - int i; - - NNS_G2D_POINTER_ASSERT(table); - - for ( i = 0; i < num; i++ ) { - OS_Printf( - " %4d: 0x%04X -> %d\n", i, - i + ccodeOffset, table[i] - ); - } -} - -static void PrintFontCMapScanList (const NNSG2dCMapInfoScan * scan) { - int i; - - NNS_G2D_POINTER_ASSERT(scan); - - for ( i = 0; i < scan->num; i++ ) { - OS_Printf( - " %4d: 0x%04X -> %d\n", i, - scan->entries[i].ccode, scan->entries[i].index - ); - } -} - -static void PrintFontCMap (const NNSG2dFontCodeMap * pCMap) { - const static char * mappingMethodString[] = { - "NNS_G2D_MAPMETHOD_DIRECT", - "NNS_G2D_MAPMETHOD_TABLE", - "NNS_G2D_MAPMETHOD_SCAN", - "NNS_G2D_NUM_OF_MAPMETHOD" - }; - - NNS_G2D_POINTER_ASSERT(pCMap); - NNS_G2D_MINMAX_ASSERT(pCMap->mappingMethod, 0, NNS_G2D_NUM_OF_MAPMETHOD - 1); - - OS_Printf(" NNSG2dFontCodeMap\n"); - OS_Printf(" ccodeBegin = 0x%04X\n", pCMap->ccodeBegin); - OS_Printf(" ccodeEnd = 0x%04X\n", pCMap->ccodeEnd); - OS_Printf(" mappingMethod = %s\n", mappingMethodString[pCMap->mappingMethod]); - - switch (pCMap->mappingMethod) { - case NNS_G2D_MAPMETHOD_DIRECT: - { - OS_Printf(" indexOffset = 0x%04X\n", pCMap->mapInfo[0]); - } - break; - - case NNS_G2D_MAPMETHOD_TABLE: - { -#ifdef NNS_G2D_FONT_SHOW_CMAP_LIST - int ccodeOffset = pCMap->ccodeBegin; - int num = pCMap->ccodeEnd - pCMap->ccodeBegin + 1; - - PrintFontCMapTable(pCMap->mapInfo, num, ccodeOffset); -#endif - } - break; - - case NNS_G2D_MAPMETHOD_SCAN: - { - const NNSG2dCMapInfoScan * const ws = (NNSG2dCMapInfoScan *)(pCMap->mapInfo); - OS_Printf(" num = %d\n", ws->num); -#ifdef NNS_G2D_FONT_SHOW_CMAP_LIST - PrintFontCMapScanList(ws); -#endif - } - break; - - default: - OS_Panic("unknwon MAPMETHOD"); - } -} - -static NNS_G2D_INLINE void PrintSpliter (void) { - OS_Printf("---------------------------------------------\n"); -} - -void NNS_G2dPrintFont (const NNSG2dFont * pFont) { - NNS_G2D_POINTER_ASSERT(pFont); - - { - const NNSG2dFontWidth * pWidth = pFont->pRes->pWidth; - const NNSG2dFontCodeMap * pCMap = pFont->pRes->pMap; - - PrintSpliter(); - PrintFontInformation(pFont->pRes); - - PrintSpliter(); - PrintFontGlyph(pFont->pRes->pGlyph); - - while (pWidth != NULL) { - PrintSpliter(); - PrintFontWidth(pWidth); - - pWidth = pWidth->pNext; - } - - while (pCMap != NULL) { - PrintSpliter(); - PrintFontCMap(pCMap); - - pCMap = pCMap->pNext; - } - - PrintSpliter(); - } -} - -#endif diff --git a/subprojects/NitroSystem/libraries/g2d/src/load/g2d_NMC_load.c b/subprojects/NitroSystem/libraries/g2d/src/load/g2d_NMC_load.c deleted file mode 100644 index 238791ad5f..0000000000 --- a/subprojects/NitroSystem/libraries/g2d/src/load/g2d_NMC_load.c +++ /dev/null @@ -1,193 +0,0 @@ -#include -#include -#include - -#include "../include/g2di_Debug.h" - -#ifndef SDK_FINALROM - -static const char * s_playModeStrTbl[] = { - "NNS_G2D_MCANIM_PLAYMODE_RESET", - "NNS_G2D_MCANIM_PLAYMODE_CONTINUE", - "NNS_G2D_MCANIM_PLAYMODE_PAUSE", - "NNS_G2D_MCANIM_PLAYMODE_MAX", -}; -#endif - -BOOL NNS_G2dGetUnpackedMultiCellBank (void * pNmcrFile, NNSG2dMultiCellDataBank ** ppMCBank) { - NNS_G2D_NULL_ASSERT(pNmcrFile); - NNS_G2D_NULL_ASSERT(ppMCBank); - - NNS_G2D_ASSERTMSG( - NNSi_G2dIsBinFileSignatureValid( - pNmcrFile, - NNS_G2D_BINFILE_SIG_MULTICELL - ), - "Input file signature is invalid for this method." - ); - - NNS_G2D_ASSERTMSG( - NNSi_G2dIsBinFileVersionValid( - pNmcrFile, - BIN_FILE_VERSION(NMCR) - ), - "Input file is obsolete. Please use the new g2dcvtr.exe." - ); - - { - NNSG2dBinaryFileHeader * pBinFile = (NNSG2dBinaryFileHeader *)pNmcrFile; - { - NNSG2dMultiCellDataBankBlock * pBinBlk = - (NNSG2dMultiCellDataBankBlock *)NNS_G2dFindBinaryBlock( - pBinFile, - NNS_G2D_BLKSIG_MULTICELLBANK - ); - if (pBinBlk) { - NNS_G2dUnpackNMC((void *)&pBinBlk->multiCellDataBank); - - *ppMCBank = &pBinBlk->multiCellDataBank; - return TRUE; - } else { - *ppMCBank = NULL; - return FALSE; - } - } - } -} - -static void UnpackExtendedData_ (void * pExData) { - NNS_G2D_NULL_ASSERT(pExData); - - { - NNSG2dUserExDataBlock * pBlk = (NNSG2dUserExDataBlock *)pExData; - NNSG2dUserExCellAttrBank * pCellAttrBank = (NNSG2dUserExCellAttrBank *)(pBlk + 1); - - NNSi_G2dUnpackUserExCellAttrBank(pCellAttrBank); - } -} - -void NNS_G2dUnpackNMC (NNSG2dMultiCellDataBank * pMCellData) { - NNS_G2D_NULL_ASSERT(pMCellData); - - { - pMCellData->pMultiCellDataArray - = NNS_G2D_UNPACK_OFFSET_PTR(pMCellData->pMultiCellDataArray, pMCellData); - - pMCellData->pHierarchyDataArray - = NNS_G2D_UNPACK_OFFSET_PTR(pMCellData->pHierarchyDataArray, pMCellData); - - { - u16 i; - NNSG2dMultiCellData * pCell = pMCellData->pMultiCellDataArray; - for ( i = 0; i < pMCellData->numMultiCellData; i++ ) { - pCell[i].pHierDataArray - = NNS_G2D_UNPACK_OFFSET_PTR( - pCell[i].pHierDataArray, - pMCellData->pHierarchyDataArray - ); - } - } - - if (pMCellData->pExtendedData != NULL) { - pMCellData->pExtendedData - = NNS_G2D_UNPACK_OFFSET_PTR(pMCellData->pExtendedData, pMCellData); - UnpackExtendedData_(pMCellData->pExtendedData); - } - } - - NNSI_G2D_DEBUGMSG0("Unpacking NMCR file is successful.\n"); -} - -const NNSG2dMultiCellData * NNS_G2dGetMultiCellDataByIdx (const NNSG2dMultiCellDataBank * pDataBank, u16 idx) { - NNS_G2D_NULL_ASSERT(pDataBank); - - if (idx < pDataBank->numMultiCellData) { - return &pDataBank->pMultiCellDataArray[idx]; - } else { - return NULL; - } -} - -#ifndef SDK_FINALROM - -static const char * GetPlayModeStr_ (playType) { - if ((NNS_G2D_MCANIM_PLAYMODE_RESET <= playType) && - (NNS_G2D_MCANIM_PLAYMODE_MAX >= playType)) { - return s_playModeStrTbl[playType]; - } else { - return "INVALID_DATA_TYPE"; - } -} - -static void PrintNodeAttr_ (const NNSG2dMultiCellHierarchyData * pNode) { - NNS_G2D_NULL_ASSERT(pNode); - - OS_Printf("nodeAttr--- = %x\n", pNode->nodeAttr); - - OS_Printf( - "visibilityFlag = %d\n", - NNSi_G2dIsMultiCellNodeVisible(pNode) - ); - - OS_Printf( - "playMode = %s\n", - GetPlayModeStr_(NNSi_G2dGetMultiCellNodePlayMode(pNode)) - ); -} - -static void PrintCellExtendedData_ (const void * pExData) { - NNS_G2D_NULL_ASSERT(pExData); - { - NNSG2dUserExDataBlock * pBlk = (NNSG2dUserExDataBlock *)pExData; - NNSG2dUserExCellAttrBank * pCellAttrBank = (NNSG2dUserExCellAttrBank *)(pBlk + 1); - - NNSi_G2dPrintUserExCellAttrBank(pCellAttrBank); - } -} - -void NNS_G2dPrintNodeHierData (const NNSG2dMultiCellHierarchyData * pNode) { - NNS_G2D_NULL_ASSERT(pNode); - - OS_Printf("animSequenceIdx = %d\n", pNode->animSequenceIdx); - OS_Printf("posX = %d\n", pNode->posX); - OS_Printf("posY = %d\n", pNode->posY); - - PrintNodeAttr_(pNode); -} - -void NNS_G2dPrintMultiCellInfo (const NNSG2dMultiCellData * pMCell) { - u16 i; - NNS_G2D_NULL_ASSERT(pMCell); - OS_Printf("-------------------\n"); - { - const NNSG2dMultiCellHierarchyData * pHierData = pMCell->pHierDataArray; - - OS_Printf("numNodes = %d\n", pMCell->numNodes); - - for ( i = 0; i < pMCell->numNodes; i++ ) { - OS_Printf("---node Idx = %d\n", i); - NNS_G2dPrintNodeHierData(&pHierData[i]); - } - } - OS_Printf("-------------------\n"); -} - -void NNS_G2dPrintMultiCellBank (const NNSG2dMultiCellDataBank * pDataBank) { - u16 i; - const NNSG2dMultiCellData * pMCell; - OS_Printf("---------------------------------------------\n"); - OS_Printf("numMultiCell = %d\n", pDataBank->numMultiCellData); - for ( i = 0; i < pDataBank->numMultiCellData; i++ ) { - OS_Printf("MultiCell Idx = %d\n", i); - pMCell = NNS_G2dGetMultiCellDataByIdx(pDataBank, i); - NNS_G2dPrintMultiCellInfo(pMCell); - } - - if (pDataBank->pExtendedData != NULL) { - PrintCellExtendedData_(pDataBank->pExtendedData); - } - - OS_Printf("---------------------------------------------\n"); -} - -#endif diff --git a/subprojects/NitroSystem/libraries/g2d/src/load/g2d_NOB_load.c b/subprojects/NitroSystem/libraries/g2d/src/load/g2d_NOB_load.c deleted file mode 100644 index da934d6852..0000000000 --- a/subprojects/NitroSystem/libraries/g2d/src/load/g2d_NOB_load.c +++ /dev/null @@ -1,214 +0,0 @@ -#include -#include -#include - -#include "../include/g2di_Debug.h" - -static void * GetPtrOamArrayHead_ (NNSG2dCellDataBank * pCellBank) { - NNS_G2D_NULL_ASSERT(pCellBank); - - if (NNSi_G2dCellBankHasBR(pCellBank)) { - return (NNSG2dCellDataWithBR *)(pCellBank->pCellDataArrayHead) + pCellBank->numCells; - } else { - return pCellBank->pCellDataArrayHead + pCellBank->numCells; - } -} - -static void UnPackExtendedData_ (void * pExData) { - NNS_G2D_NULL_ASSERT(pExData); - { - NNSG2dUserExDataBlock * pBlk = (NNSG2dUserExDataBlock *)pExData; - NNSG2dUserExCellAttrBank * pCellAttrBank = (NNSG2dUserExCellAttrBank *)(pBlk + 1); - - NNSi_G2dUnpackUserExCellAttrBank(pCellAttrBank); - } -} - -BOOL NNS_G2dGetUnpackedCellBank (void * pNcerFile, NNSG2dCellDataBank ** ppCellBank) { - NNS_G2D_NULL_ASSERT(pNcerFile); - NNS_G2D_NULL_ASSERT(ppCellBank); - - NNS_G2D_ASSERTMSG( - NNSi_G2dIsBinFileSignatureValid( - pNcerFile, - NNS_G2D_BINFILE_SIG_CELL - ), - "Input file signature is invalid for this method." - ); - - NNS_G2D_ASSERTMSG( - NNSi_G2dIsBinFileVersionValid( - pNcerFile, - BIN_FILE_VERSION(NCER) - ), - "Input file is obsolete. Please use the new g2dcvtr.exe." - ); - - { - NNSG2dBinaryFileHeader * pBinFile = (NNSG2dBinaryFileHeader *)pNcerFile; - { - NNSG2dCellDataBankBlock * pBinBlk = - (NNSG2dCellDataBankBlock *)NNS_G2dFindBinaryBlock( - pBinFile, - NNS_G2D_BLKSIG_CELLBANK - ); - if (pBinBlk) { - NNS_G2dUnpackNCE((void *)&pBinBlk->cellDataBank); - - *ppCellBank = &pBinBlk->cellDataBank; - return TRUE; - } else { - *ppCellBank = NULL; - return FALSE; - } - } - } -} - -const NNSG2dCellData * NNS_G2dGetCellDataByIdx (const NNSG2dCellDataBank * pCellData, u16 idx) { - NNS_G2D_NULL_ASSERT(pCellData); - - if (idx >= pCellData->numCells) { - return NULL; - } - - if (NNSi_G2dCellBankHasBR(pCellData)) { - const NNSG2dCellDataWithBR * pCellBR = - (const NNSG2dCellDataWithBR *)(pCellData->pCellDataArrayHead) + idx; - return &pCellBR->cellData; - } else { - return pCellData->pCellDataArrayHead + idx; - } -} - -void NNS_G2dUnpackNCE (NNSG2dCellDataBank * pCellData) { - NNS_G2D_NULL_ASSERT(pCellData); - { - pCellData->pCellDataArrayHead - = NNS_G2D_UNPACK_OFFSET_PTR(pCellData->pCellDataArrayHead, pCellData); - - { - void * pHeadOfOAMData = GetPtrOamArrayHead_(pCellData); - - u16 i; - NNSG2dCellData * pCell = NULL; - for ( i = 0; i < pCellData->numCells; i++ ) { - pCell = (NNSG2dCellData *)(NNS_G2dGetCellDataByIdx(pCellData, i)); - pCell->pOamAttrArray - = NNS_G2D_UNPACK_OFFSET_PTR(pCell->pOamAttrArray, pHeadOfOAMData); - } - } - - if (pCellData->pVramTransferData != NULL) { - NNSG2dVramTransferData * pVramTsfmData - = NNS_G2D_UNPACK_OFFSET_PTR(pCellData->pVramTransferData, pCellData); - - pVramTsfmData->pCellTransferDataArray - = NNS_G2D_UNPACK_OFFSET_PTR(pVramTsfmData->pCellTransferDataArray, pVramTsfmData); - - pCellData->pVramTransferData = pVramTsfmData; - } - - if (pCellData->pExtendedData != NULL) { - pCellData->pExtendedData - = NNS_G2D_UNPACK_OFFSET_PTR(pCellData->pExtendedData, pCellData); - - UnPackExtendedData_(pCellData->pExtendedData); - } - } - NNSI_G2D_DEBUGMSG0("Unpacking NCER file is successful.\n"); -} - -#ifndef SDK_FINALROM - -void NNS_G2dPrintOBJAttr (const NNSG2dCellOAMAttrData * pOBJ) { - NNS_G2D_NULL_ASSERT(pOBJ); - OS_Printf("OBJ_0 = %x\n", pOBJ->attr0); - OS_Printf("OBJ_1 = %x\n", pOBJ->attr1); - OS_Printf("OBJ_2 = %x\n\n", pOBJ->attr2); -} - -static void PrintCellBoundingRect_ (const NNSG2dCellBoundingRectS16 * pBR) { - NNS_G2D_NULL_ASSERT(pBR); - OS_Printf("maxX = %d\n", pBR->maxX); - OS_Printf("maxY = %d\n", pBR->maxY); - OS_Printf("minX = %d\n", pBR->minX); - OS_Printf("minY = %d\n", pBR->minY); -} - -void NNS_G2dPrintCellInfo (const NNSG2dCellData * pCell) { - u16 i; - NNS_G2D_NULL_ASSERT(pCell); - - OS_Printf("-------------------\n"); - { - const NNSG2dCellOAMAttrData * pOBJ = pCell->pOamAttrArray; - - OS_Printf("numOBJ = %d\n", pCell->numOAMAttrs); - - if (NNSi_G2dCellHasBR(pCell)) { - const NNSG2dCellDataWithBR * pCellBR - = (const NNSG2dCellDataWithBR *)(pCell); - PrintCellBoundingRect_(&pCellBR->boundingRect); - } - - for ( i = 0; i < pCell->numOAMAttrs; i++ ) { - NNS_G2dPrintOBJAttr(&pOBJ[i]); - } - } - OS_Printf("-------------------\n"); -} - -static void PrintVramTransformData_ (const NNSG2dVramTransferData * pVramTsfmData, u16 numCells) { - u16 i; - NNS_G2D_NULL_ASSERT(pVramTsfmData); - - for ( i = 0; i < numCells; i++ ) { - const NNSG2dCellVramTransferData * pTsfmData - = &pVramTsfmData->pCellTransferDataArray[i]; - - OS_Printf("srcDataOffset = %d\n", pTsfmData->srcDataOffset); - OS_Printf("szByte = %d\n", pTsfmData->szByte); - } -} - -static void PrintCellExtendedData_ (const void * pExData) { - NNS_G2D_NULL_ASSERT(pExData); - { - NNSG2dUserExDataBlock * pBlk = (NNSG2dUserExDataBlock *)pExData; - NNSG2dUserExCellAttrBank * pCellAttrBank = (NNSG2dUserExCellAttrBank *)(pBlk + 1); - - NNSi_G2dPrintUserExCellAttrBank(pCellAttrBank); - } -} - -void NNS_G2dPrintCellBank (const NNSG2dCellDataBank * pCellBank) { - u16 i; - const NNSG2dCellData * pCell; - OS_Printf("---------------------------------------------\n"); - OS_Printf("numCell = %d\n", pCellBank->numCells); - for ( i = 0; i < pCellBank->numCells; i++ ) { - OS_Printf("Cell Idx = %d\n", i); - pCell = NNS_G2dGetCellDataByIdx(pCellBank, i); - NNS_G2dPrintCellInfo(pCell); - } - - if (pCellBank->pVramTransferData != NULL) { - OS_Printf("--------- VramTransform Data\n"); - { - const NNSG2dVramTransferData * pVramTsfmData - = (const NNSG2dVramTransferData *)pCellBank->pVramTransferData; - - OS_Printf("szByteMax = %d\n", pVramTsfmData->szByteMax); - PrintVramTransformData_(pVramTsfmData, pCellBank->numCells); - } - } - - if (pCellBank->pExtendedData != NULL) { - PrintCellExtendedData_(pCellBank->pExtendedData); - } - - OS_Printf("---------------------------------------------\n"); -} - -#endif diff --git a/subprojects/NitroSystem/libraries/g2d/src/load/g2d_NSC_load.c b/subprojects/NitroSystem/libraries/g2d/src/load/g2d_NSC_load.c deleted file mode 100644 index 5b8334e989..0000000000 --- a/subprojects/NitroSystem/libraries/g2d/src/load/g2d_NSC_load.c +++ /dev/null @@ -1,84 +0,0 @@ -#include -#include -#include - -#include "../include/g2di_Debug.h" - -#ifndef SDK_FINALROM -const static char * sColorModeString[] = { - "NNS_G2D_SCRCOLORMODE_16x16", - "NNS_G2D_SCRCOLORMODE_256x1", - "NNS_G2D_SCRCOLORMODE_256x16" -}; - -const static char * sScreenFormatString[] = { - "NNS_G2D_SCREENFORMAT_TEXT", - "NNS_G2D_SCREENFORMAT_AFFINE", - "NNS_G2D_SCREENFORMAT_AFFINEEXT", - "NNS_G2D_SCREENFORMAT_PLTBMP", - "NNS_G2D_SCREENFORMAT_DCBMP" -}; -#endif - -BOOL NNS_G2dGetUnpackedScreenData (void * pNscrFile, NNSG2dScreenData ** ppScrData) { - NNS_G2D_NULL_ASSERT(pNscrFile); - NNS_G2D_NULL_ASSERT(ppScrData); - NNS_G2D_ASSERTMSG( - NNS_G2dIsBinFileValid( - pNscrFile, NNS_G2D_BINFILE_SIG_SCRDATA, - BIN_FILE_VERSION(NSCR) - ), "Input file is obsolete. Please use the new g2dcvtr.exe." - ); - - { - NNSG2dBinaryFileHeader * pBinFile = (NNSG2dBinaryFileHeader *)pNscrFile; - { - NNSG2dScreenDataBlock * pBinBlk = - (NNSG2dScreenDataBlock *)NNS_G2dFindBinaryBlock( - pBinFile, - NNS_G2D_BINBLK_SIG_SCRDATA - ); - if (pBinBlk) { - *ppScrData = &(pBinBlk->screenData); - NNS_G2D_NULL_ASSERT((*ppScrData)); - NNS_G2D_ASSERT((*ppScrData)->screenWidth > 0); - NNS_G2D_ASSERT((*ppScrData)->screenHeight > 0); - NNS_G2D_ASSERT(((*ppScrData)->screenWidth & 0x7) == 0); - NNS_G2D_ASSERT(((*ppScrData)->screenHeight & 0x7) == 0); - NNS_G2D_MINMAX_ASSERT((*ppScrData)->colorMode, NNS_G2D_SCREENCOLORMODE_16x16, NNS_G2D_SCREENCOLORMODE_256x16); - NNS_G2D_MINMAX_ASSERT((*ppScrData)->screenFormat, NNS_G2D_SCREENFORMAT_TEXT, NNS_G2D_SCREENFORMAT_AFFINEEXT); - NNS_G2D_ASSERT( - ((*ppScrData)->screenFormat != NNS_G2D_SCREENFORMAT_AFFINE) - || ((*ppScrData)->colorMode == NNS_G2D_SCREENCOLORMODE_256x1) - ); - NNS_G2D_ASSERT( - ((*ppScrData)->screenFormat != NNS_G2D_SCREENFORMAT_AFFINEEXT) - || ((*ppScrData)->colorMode == NNS_G2D_SCREENCOLORMODE_256x16) - ); - - return TRUE; - } else { - *ppScrData = NULL; - return FALSE; - } - } - } -} - -#ifndef SDK_FINALROM - -void NNS_G2dPrintScreenData (const NNSG2dScreenData * pScrData) { - NNS_G2D_NULL_ASSERT(pScrData); - { - OS_Printf("---------------------------------------------\n"); - OS_Printf(" Screen Data (NSC)\n"); - OS_Printf(" screenWidth = %d\n", pScrData->screenWidth); - OS_Printf(" screenHeight = %d\n", pScrData->screenHeight); - OS_Printf(" colorMode = %s\n", sColorModeString[pScrData->colorMode]); - OS_Printf(" screenFormat = %s\n", sScreenFormatString[pScrData->screenFormat]); - OS_Printf(" szByte = %d\n", pScrData->szByte); - OS_Printf("---------------------------------------------\n"); - } -} - -#endif diff --git a/subprojects/NitroSystem/libraries/g3d/meson.build b/subprojects/NitroSystem/libraries/g3d/meson.build deleted file mode 100644 index 16734ea9af..0000000000 --- a/subprojects/NitroSystem/libraries/g3d/meson.build +++ /dev/null @@ -1,38 +0,0 @@ -libnnsg3d_srcs = [ - 'src/kernel.c', - 'src/glbstate.c', - 'src/anm.c', - 'src/cgtool.c', - 'src/sbc.c', - 'src/1mat1shp.c', - 'src/gecom.c', - 'src/util_nnsg3d.c', - 'src/mem_nnsg3d.c', - 'src/model.c', - 'src/binres/res_struct_accessor.c', - 'src/binres/res_struct_accessor_anm.c', - 'src/anm/nsbca.c', - 'src/anm/nsbma.c', - 'src/anm/nsbta.c', - 'src/anm/nsbtp.c', - 'src/anm/nsbva.c', - 'src/cgtool/basic.c', - 'src/cgtool/maya.c', - 'src/cgtool/si3d.c', - 'src/cgtool/3dsmax.c', - 'src/cgtool/xsi.c' -] - -libnnsg3d_internal_includes = include_directories('src/binres') - -libnnsg3d = static_library('nnsg3d', - sources: libnnsg3d_srcs, - c_args: [c_args, sdk_args], - nasm_args: asm_args, - include_directories: [public_includes, libnnsg3d_internal_includes], - c_pch: nitro_pch, - dependencies: nitrosdk_dep, - pic: false -) - -nitrosystem_libs += libnnsg3d diff --git a/subprojects/NitroSystem/libraries/g3d/src/1mat1shp.c b/subprojects/NitroSystem/libraries/g3d/src/1mat1shp.c deleted file mode 100644 index 85da3af913..0000000000 --- a/subprojects/NitroSystem/libraries/g3d/src/1mat1shp.c +++ /dev/null @@ -1,119 +0,0 @@ -#include -#include -#include -#include - -void NNS_G3dDraw1Mat1Shp (const NNSG3dResMdl * pResMdl, u32 matID, u32 shpID, BOOL sendMat) { - NNS_G3D_NULL_ASSERT(pResMdl); - - if (pResMdl->info.posScale != FX32_ONE) { - NNS_G3dGeScale( - pResMdl->info.posScale, - pResMdl->info.posScale, - pResMdl->info.posScale - ); - } - - if (sendMat) { - NNS_G3D_ASSERT(matID < pResMdl->info.numMat); - if (matID < pResMdl->info.numMat) { - const NNSG3dResMatData * mat; - u32 cmd[7]; - - { - const NNSG3dResMat * p = NNS_G3dGetMat(pResMdl); - NNS_G3D_NULL_ASSERT(p); - mat = NNS_G3dGetMatDataByIdx(p, matID); - NNS_G3D_NULL_ASSERT(mat); - } - - if (!(mat->polyAttr & REG_G3_POLYGON_ATTR_ALPHA_MASK)) { - return; - } - - cmd[0] = GX_PACK_OP(G3OP_DIF_AMB, G3OP_SPE_EMI, G3OP_POLYGON_ATTR, G3OP_NOP); - cmd[1] = mat->diffAmb; - cmd[2] = mat->specEmi; - cmd[3] = mat->polyAttr; - - if (mat->flag & NNS_G3D_MATFLAG_WIREFRAME) { - cmd[3] &= ~REG_G3_POLYGON_ATTR_ALPHA_MASK; - } - - cmd[4] = GX_PACK_OP(G3OP_TEXIMAGE_PARAM, G3OP_TEXPLTT_BASE, G3OP_NOP, G3OP_NOP); - cmd[5] = mat->texImageParam; - cmd[6] = mat->texPlttBase; - - NNS_G3dGeBufferData_N(&cmd[0], 7); - - if (mat->flag & NNS_G3D_MATFLAG_TEXMTX_USE) { - NNSG3dSendTexSRT func; - NNSG3dMatAnmResult dummy; - - const u8 * p = (const u8 *)mat + sizeof(NNSG3dResMatData); - - dummy.flag = NNS_G3D_MATANM_RESULTFLAG_TEXMTX_SET; - dummy.origWidth = mat->origWidth; - dummy.origHeight = mat->origHeight; - dummy.magW = mat->magW; - dummy.magH = mat->magH; - - if (!(mat->flag & NNS_G3D_MATFLAG_TEXMTX_SCALEONE)) { - const fx32 * p_fx32 = (const fx32 *)p; - - dummy.scaleS = *(p_fx32 + 0); - dummy.scaleT = *(p_fx32 + 1); - p += 2 * sizeof(fx32); - } else { - dummy.flag |= NNS_G3D_MATANM_RESULTFLAG_TEXMTX_SCALEONE; - } - - if (!(mat->flag & NNS_G3D_MATFLAG_TEXMTX_ROTZERO)) { - const fx16 * p_fx16 = (const fx16 *)p; - - dummy.sinR = *(p_fx16 + 0); - dummy.cosR = *(p_fx16 + 1); - p += 2 * sizeof(fx16); - } else { - dummy.flag |= NNS_G3D_MATANM_RESULTFLAG_TEXMTX_ROTZERO; - } - - if (!(mat->flag & NNS_G3D_MATFLAG_TEXMTX_TRANSZERO)) { - const fx32 * p_fx32 = (const fx32 *)p; - - dummy.transS = *(p_fx32 + 0); - dummy.transT = *(p_fx32 + 1); - } else { - dummy.flag |= NNS_G3D_MATANM_RESULTFLAG_TEXMTX_TRANSZERO; - } - - func = NNS_G3dSendTexSRT_FuncArray[pResMdl->info.texMtxMode]; - NNS_G3D_NULL_ASSERT(func); - if (func) { - (*func)(&dummy); - } - } - } - } - - NNS_G3D_ASSERT(shpID < pResMdl->info.numShp); - if (shpID < pResMdl->info.numShp) { - const NNSG3dResShp * p; - const NNSG3dResShpData * shp; - - p = NNS_G3dGetShp(pResMdl); - NNS_G3D_NULL_ASSERT(p); - shp = NNS_G3dGetShpDataByIdx(p, shpID); - NNS_G3D_NULL_ASSERT(shp); - - NNS_G3dGeSendDL(NNS_G3dGetShpDLPtr(shp), NNS_G3dGetShpDLSize(shp)); - } - - if (pResMdl->info.invPosScale != FX32_ONE) { - NNS_G3dGeScale( - pResMdl->info.invPosScale, - pResMdl->info.invPosScale, - pResMdl->info.invPosScale - ); - } -} diff --git a/subprojects/NitroSystem/libraries/g3d/src/anm.c b/subprojects/NitroSystem/libraries/g3d/src/anm.c deleted file mode 100644 index 3e96d80ef0..0000000000 --- a/subprojects/NitroSystem/libraries/g3d/src/anm.c +++ /dev/null @@ -1,365 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include - -NNSG3dFuncAnmBlendMat NNS_G3dFuncBlendMatDefault = &NNSi_G3dAnmBlendMat; -NNSG3dFuncAnmBlendJnt NNS_G3dFuncBlendJntDefault = &NNSi_G3dAnmBlendJnt; -NNSG3dFuncAnmBlendVis NNS_G3dFuncBlendVisDefault = &NNSi_G3dAnmBlendVis; - -NNSG3dFuncAnmMat NNS_G3dFuncAnmMatNsBmaDefault = -#ifndef NNS_G3D_NSBMA_DISABLE - &NNSi_G3dAnmCalcNsBma; -#else - NULL; -#endif - -NNSG3dFuncAnmMat NNS_G3dFuncAnmMatNsBtpDefault = -#ifndef NNS_G3D_NSBTP_DISABLE - &NNSi_G3dAnmCalcNsBtp; -#else - NULL; -#endif - -NNSG3dFuncAnmMat NNS_G3dFuncAnmMatNsBtaDefault = -#ifndef NNS_G3D_NSBTA_DISABLE - &NNSi_G3dAnmCalcNsBta; -#else - NULL; -#endif - -NNSG3dFuncAnmJnt NNS_G3dFuncAnmJntNsBcaDefault = -#ifndef NNS_G3D_NSBCA_DISABLE - &NNSi_G3dAnmCalcNsBca; -#else - NULL; -#endif - -NNSG3dFuncAnmVis NNS_G3dFuncAnmVisNsBvaDefault = -#ifndef NNS_G3D_NSBVA_DISABLE - &NNSi_G3dAnmCalcNsBva; -#else - NULL; -#endif - -BOOL NNSi_G3dAnmBlendMat (NNSG3dMatAnmResult * pResult, const NNSG3dAnmObj * pAnmObj, u32 matID) { - BOOL rval = FALSE; - NNS_G3D_NULL_ASSERT(pResult); - NNS_G3D_ASSERT(!pAnmObj || matID < pAnmObj->numMapData); - - if (pAnmObj) { - const NNSG3dAnmObj * p = pAnmObj; - do{ - if (matID < p->numMapData) { - u32 dataIdx = p->mapData[matID]; - if ((dataIdx & (NNS_G3D_ANMOBJ_MAPDATA_EXIST | - NNS_G3D_ANMOBJ_MAPDATA_DISABLED)) == - NNS_G3D_ANMOBJ_MAPDATA_EXIST) { - NNSG3dFuncAnmMat func = (NNSG3dFuncAnmMat)p->funcAnm; - - NNS_G3D_NULL_ASSERT(func); - if (func) { - (*func)( - pResult, - p, - dataIdx & NNS_G3D_ANMOBJ_MAPDATA_DATAFIELD - ); - rval = TRUE; - } - } - } - p = p->next; - }while (p); - } - - return rval; -} - -#include -static void blendScaleVec_ (VecFx32 * v0, const VecFx32 * v1, fx32 ratio, BOOL isV1One) { - if (isV1One) { - v0->x += ratio; - v0->y += ratio; - v0->z += ratio; - } else { - v0->x += ratio * v1->x >> FX32_SHIFT; - v0->y += ratio * v1->y >> FX32_SHIFT; - v0->z += ratio * v1->z >> FX32_SHIFT; - } -} -#include - -#include -BOOL NNSi_G3dAnmBlendJnt (NNSG3dJntAnmResult * pResult, const NNSG3dAnmObj * pAnmObj, u32 nodeID) { - NNS_G3D_NULL_ASSERT(pResult); - - if (!pAnmObj) { - return FALSE; - } - - if (!pAnmObj->next) { - u32 dataIdx; - if (nodeID < pAnmObj->numMapData) { - dataIdx = pAnmObj->mapData[nodeID]; - if ((dataIdx & (NNS_G3D_ANMOBJ_MAPDATA_EXIST | - NNS_G3D_ANMOBJ_MAPDATA_DISABLED)) == - NNS_G3D_ANMOBJ_MAPDATA_EXIST) { - NNSG3dFuncAnmJnt func = (NNSG3dFuncAnmJnt)pAnmObj->funcAnm; - - NNS_G3D_NULL_ASSERT(func); - if (func) { - (*func)( - pResult, - pAnmObj, - dataIdx & NNS_G3D_ANMOBJ_MAPDATA_DATAFIELD - ); - return TRUE; - } else { - return FALSE; - } - } else { - return FALSE; - } - } else { - return FALSE; - } - } else { - const NNSG3dAnmObj * p; - NNSG3dJntAnmResult r; - fx32 sumOfRatio = 0; - const NNSG3dAnmObj * pLastAnmObj; - int numBlend = 0; -#if 1 - int i1 = 0; - VecFx32 keepAxisX; - VecFx32 keepAxisZ; -#endif - - p = pAnmObj; - do{ - if (nodeID < p->numMapData) { - u32 dataIdx = p->mapData[nodeID]; - if ((dataIdx & (NNS_G3D_ANMOBJ_MAPDATA_EXIST | - NNS_G3D_ANMOBJ_MAPDATA_DISABLED)) == - NNS_G3D_ANMOBJ_MAPDATA_EXIST) { - NNS_G3D_ASSERT(p->ratio >= 0 && p->ratio <= FX32_ONE); - - if (p->ratio > FX32_ONE) { - sumOfRatio += FX32_ONE; - } else if (p->ratio > 0) { - sumOfRatio += p->ratio; - } - - pLastAnmObj = p; - ++numBlend; - } - } - p = p->next; - }while (p); - - if (sumOfRatio == 0) { - return FALSE; - } - - if (numBlend == 1) { - NNSG3dFuncAnmJnt func = (NNSG3dFuncAnmJnt)pLastAnmObj->funcAnm; - u32 dataIdx = pLastAnmObj->mapData[nodeID]; - - NNS_G3D_NULL_ASSERT(func); - if (func) { - (*func)( - pResult, - pLastAnmObj, - dataIdx & NNS_G3D_ANMOBJ_MAPDATA_DATAFIELD - ); - return TRUE; - } else { - return FALSE; - } - } - - MI_CpuClearFast(pResult, sizeof(*pResult)); - pResult->flag = (NNSG3dJntAnmResultFlag) - 1; - - p = pAnmObj; - do{ - if (nodeID < p->numMapData) { - u32 dataIdx = p->mapData[nodeID]; - if ((dataIdx & (NNS_G3D_ANMOBJ_MAPDATA_EXIST | - NNS_G3D_ANMOBJ_MAPDATA_DISABLED)) == - NNS_G3D_ANMOBJ_MAPDATA_EXIST && - (p->ratio > 0)) { - fx32 ratio; - NNSG3dFuncAnmJnt func = (NNSG3dFuncAnmJnt)p->funcAnm; - - NNS_G3D_NULL_ASSERT(func); - if (func) { - (*func)(&r, p, dataIdx & NNS_G3D_ANMOBJ_MAPDATA_DATAFIELD); -#if 1 - if (i1 == 0) { - MI_CpuCopy32(&r.rot._00, &keepAxisX, sizeof(VecFx32)); - MI_CpuCopy32(&r.rot._20, &keepAxisZ, sizeof(VecFx32)); - } -#endif - - if (sumOfRatio != FX32_ONE) { - ratio = FX_Div(p->ratio, sumOfRatio); - } else { - ratio = p->ratio; - } - - blendScaleVec_( - &pResult->scale, - &r.scale, - ratio, - r.flag & NNS_G3D_JNTANM_RESULTFLAG_SCALE_ONE - ); - - blendScaleVec_( - &pResult->scaleEx0, - &r.scaleEx0, - ratio, - r.flag & NNS_G3D_JNTANM_RESULTFLAG_SCALEEX0_ONE - ); - - blendScaleVec_( - &pResult->scaleEx1, - &r.scaleEx1, - ratio, - r.flag & NNS_G3D_JNTANM_RESULTFLAG_SCALEEX1_ONE - ); - - if (!(r.flag & NNS_G3D_JNTANM_RESULTFLAG_TRANS_ZERO)) { - pResult->trans.x += (fx32)((fx64)ratio * r.trans.x >> FX32_SHIFT); - pResult->trans.y += (fx32)((fx64)ratio * r.trans.y >> FX32_SHIFT); - pResult->trans.z += (fx32)((fx64)ratio * r.trans.z >> FX32_SHIFT); - } - - if (!(r.flag & NNS_G3D_JNTANM_RESULTFLAG_ROT_ZERO)) { - pResult->rot._00 += ratio * r.rot._00 >> FX32_SHIFT; - pResult->rot._01 += ratio * r.rot._01 >> FX32_SHIFT; - pResult->rot._02 += ratio * r.rot._02 >> FX32_SHIFT; - pResult->rot._10 += ratio * r.rot._10 >> FX32_SHIFT; - pResult->rot._11 += ratio * r.rot._11 >> FX32_SHIFT; - pResult->rot._12 += ratio * r.rot._12 >> FX32_SHIFT; - } else { - pResult->rot._00 += ratio; - pResult->rot._11 += ratio; - } - - pResult->flag &= r.flag; - } - } - } - - p = p->next; -#if 1 - ++i1; -#endif - }while (p); - - VEC_CrossProduct( - (VecFx32 *)&pResult->rot._00, - (VecFx32 *)&pResult->rot._10, - (VecFx32 *)&pResult->rot._20 - ); - -#if 0 - VEC_Normalize((VecFx32 *)&pResult->rot._00, (VecFx32 *)&pResult->rot._00); - VEC_Normalize((VecFx32 *)&pResult->rot._20, (VecFx32 *)&pResult->rot._20); -#else - if ((pResult->rot._00 == 0) && - (pResult->rot._01 == 0) && - (pResult->rot._02 == 0)) { - MI_CpuCopy32(&keepAxisX, &pResult->rot._00, sizeof(VecFx32)); - } else { - VEC_Normalize((VecFx32 *)&pResult->rot._00, (VecFx32 *)&pResult->rot._00); - } - - if ((pResult->rot._20 == 0) && - (pResult->rot._21 == 0) && - (pResult->rot._22 == 0)) { - MI_CpuCopy32(&keepAxisZ, &pResult->rot._20, sizeof(VecFx32)); - } else { - VEC_Normalize((VecFx32 *)&pResult->rot._20, (VecFx32 *)&pResult->rot._20); - } -#endif - - VEC_CrossProduct( - (VecFx32 *)&pResult->rot._20, - (VecFx32 *)&pResult->rot._00, - (VecFx32 *)&pResult->rot._10 - ); - - return TRUE; - } -} -#include - -BOOL NNSi_G3dAnmBlendVis (NNSG3dVisAnmResult * pResult, const NNSG3dAnmObj * pAnmObj, u32 nodeID) { - BOOL rval = FALSE; - const NNSG3dAnmObj * p; - NNSG3dVisAnmResult tmp; - NNS_G3D_NULL_ASSERT(pResult); - - p = pAnmObj; - pResult->isVisible = FALSE; - do{ - if (nodeID < p->numMapData) { - u32 dataIdx = p->mapData[nodeID]; - - if ((dataIdx & (NNS_G3D_ANMOBJ_MAPDATA_EXIST | - NNS_G3D_ANMOBJ_MAPDATA_DISABLED)) == - NNS_G3D_ANMOBJ_MAPDATA_EXIST) { - NNSG3dFuncAnmVis func = (NNSG3dFuncAnmVis)p->funcAnm; - NNS_G3D_NULL_ASSERT(func); - if (func) { - (*func)( - &tmp, - p, - dataIdx & NNS_G3D_ANMOBJ_MAPDATA_DATAFIELD - ); - pResult->isVisible |= tmp.isVisible; - rval = TRUE; - } - } - } - p = p->next; - }while (p); - - return rval; -} - -u32 NNS_G3dAnmFmtNum = 5; - -NNSG3dAnmObjInitFunc NNS_G3dAnmObjInitFuncArray[NNS_G3D_ANMFMT_MAX] = { -#ifndef NNS_G3D_NSBMA_DISABLE - {'M', 0, 'MA', &NNSi_G3dAnmObjInitNsBma}, -#else - {'M', 0, 'MA', NULL}, -#endif -#ifndef NNS_G3D_NSBTP_DISABLE - {'M', 0, 'TP', &NNSi_G3dAnmObjInitNsBtp}, -#else - {'M', 0, 'TP', NULL}, -#endif -#ifndef NNS_G3D_NSBTA_DISABLE - {'M', 0, 'TA', &NNSi_G3dAnmObjInitNsBta}, -#else - {'M', 0, 'TA', NULL}, -#endif -#ifndef NNS_G3D_NSBVA_DISABLE - {'V', 0, 'VA', &NNSi_G3dAnmObjInitNsBva}, -#else - {'V', 0, 'VA', NULL}, -#endif -#ifndef NNS_G3D_NSBCA_DISABLE - {'J', 0, 'CA', &NNSi_G3dAnmObjInitNsBca} -#else - {'J', 0, 'CA', NULL} -#endif -}; diff --git a/subprojects/NitroSystem/libraries/g3d/src/anm/nsbca.c b/subprojects/NitroSystem/libraries/g3d/src/anm/nsbca.c deleted file mode 100644 index 16c84af8f8..0000000000 --- a/subprojects/NitroSystem/libraries/g3d/src/anm/nsbca.c +++ /dev/null @@ -1,1222 +0,0 @@ -#include -#include -#include - -#ifndef NNS_G3D_NSBCA_DISABLE - -void NNSi_G3dAnmObjInitNsBca (NNSG3dAnmObj * pAnmObj, void * pResAnm, const NNSG3dResMdl * pResMdl) -{ - u32 i; - u16 * ofsArray; - NNSG3dResJntAnm * jntAnm; - const NNSG3dResNodeInfo * jnt; - - NNS_G3D_NULL_ASSERT(pAnmObj); - NNS_G3D_NULL_ASSERT(pResAnm); - NNS_G3D_NULL_ASSERT(pResMdl); - - pAnmObj->resAnm = pResAnm; - jntAnm = (NNSG3dResJntAnm *)pResAnm; - jnt = NNS_G3dGetNodeInfo(pResMdl); - pAnmObj->funcAnm = NNS_G3dFuncAnmJntNsBcaDefault; - pAnmObj->numMapData = pResMdl->info.numNode; - - MI_CpuClear16(&pAnmObj->mapData[0], sizeof(u16) * pAnmObj->numMapData); - - ofsArray = (u16 *)((u8 *)jntAnm + sizeof(NNSG3dResJntAnm)); - - NNS_G3D_ASSERT(jntAnm->numNode <= pAnmObj->numMapData); - - for (i = 0; i < jntAnm->numNode; ++i) - { - NNSG3dResJntAnmSRTTag * pTag = - (NNSG3dResJntAnmSRTTag *)((u8 *)jntAnm + ofsArray[i]); - pAnmObj->mapData[i] = (u16)((pTag->tag >> NNS_G3D_JNTANM_SRTINFO_NODE_SHIFT) | - NNS_G3D_ANMOBJ_MAPDATA_EXIST); - } -} - -static void getJntSRTAnmResult_(const NNSG3dResJntAnm * pJntAnm, u32 dataIdx, fx32 Frame, NNSG3dJntAnmResult * pResult); -static void getTransData_(fx32 * pVal, fx32 Frame, const u32 * pData, const NNSG3dResJntAnm * pJntAnm); -static void getTransDataEx_(fx32 * pVal, fx32 Frame, const u32 * pData, const NNSG3dResJntAnm * pJntAnm); -static void getScaleData_(fx32 * s_invs, fx32 Frame, const u32 * pData, const NNSG3dResJntAnm * pJntAnm); -static void getScaleDataEx_(fx32 * s_invs, fx32 Frame, const u32 * pData, const NNSG3dResJntAnm * pJntAnm); -static void getRotData_(MtxFx33 * pRot, fx32 Frame, const u32 * pData, const NNSG3dResJntAnm * pJntAnm); -static void getRotDataEx_(MtxFx33 * pRot, fx32 Frame, const u32 * pData, const NNSG3dResJntAnm * pJntAnm); -static BOOL getRotDataByIdx_(MtxFx33 * pRot, const void * pArrayRot3, const void * pArrayRot5, NNSG3dJntAnmRIdx info); - -void NNSi_G3dAnmCalcNsBca (NNSG3dJntAnmResult * pResult, const NNSG3dAnmObj * pAnmObj, u32 dataIdx) -{ - NNS_G3D_NULL_ASSERT(pResult); - NNS_G3D_NULL_ASSERT(pAnmObj); - - { - fx32 frame; - NNSG3dResJntAnm * anm = (NNSG3dResJntAnm *)(pAnmObj->resAnm); - - if (pAnmObj->frame >= (anm->numFrame << FX32_SHIFT)) - frame = (anm->numFrame << FX32_SHIFT) - 1; - else if (pAnmObj->frame < 0) - frame = 0; - else - frame = pAnmObj->frame; - - getJntSRTAnmResult_(anm, dataIdx, frame, pResult); - } -} - -#include - -static NNS_G3D_INLINE void vecCross_ (const VecFx32 * a, const VecFx32 * b, VecFx32 * axb) -{ - fx32 x, y, z; - NNS_G3D_NULL_ASSERT(a); - NNS_G3D_NULL_ASSERT(b); - NNS_G3D_NULL_ASSERT(axb); - - x = (a->y * b->z - a->z * b->y) >> FX32_SHIFT; - y = (a->z * b->x - a->x * b->z) >> FX32_SHIFT; - z = (a->x * b->y - a->y * b->x) >> FX32_SHIFT; - - axb->x = x; - axb->y = y; - axb->z = z; -} - -#include - -static void getMdlTrans_ (NNSG3dJntAnmResult * pResult) -{ - u32 idxNode; - const NNSG3dResNodeData * pNd; - NNS_G3D_NULL_ASSERT(NNS_G3dRS); - - NNS_G3D_ASSERT(NNS_G3D_GET_SBCCMD(*NNS_G3dRS->c) == NNS_G3D_SBC_NODEDESC); - idxNode = *(NNS_G3dRS->c + 1); - pNd = NNS_G3dGetNodeDataByIdx(NNS_G3dRS->pResNodeInfo, idxNode); - - if (pNd->flag & NNS_G3D_SRTFLAG_TRANS_ZERO) { - pResult->flag |= NNS_G3D_JNTANM_RESULTFLAG_TRANS_ZERO; - } else { - const fx32 * p_fx32 = (const fx32 *)((const u8 *)pNd + sizeof(NNSG3dResNodeData)); - - pResult->trans.x = *(p_fx32 + 0); - pResult->trans.y = *(p_fx32 + 1); - pResult->trans.z = *(p_fx32 + 2); - } -} - -static void getMdlScale_ (NNSG3dJntAnmResult * pResult) -{ - u32 idxNode; - const NNSG3dResNodeData * pNd; - const u8 * p; - NNS_G3D_NULL_ASSERT(NNS_G3dRS); - NNS_G3D_NULL_ASSERT(NNS_G3dRS->funcJntScale); - - NNS_G3D_ASSERT(NNS_G3D_GET_SBCCMD(*NNS_G3dRS->c) == NNS_G3D_SBC_NODEDESC); - idxNode = *(NNS_G3dRS->c + 1); - - pNd = NNS_G3dGetNodeDataByIdx(NNS_G3dRS->pResNodeInfo, idxNode); - p = (const u8 *)pNd + sizeof(*pNd); - - if (!(pNd->flag & NNS_G3D_SRTFLAG_TRANS_ZERO)) { - p += 3 * sizeof(fx32); - } - - if (!(pNd->flag & NNS_G3D_SRTFLAG_ROT_ZERO)) { - if (pNd->flag & NNS_G3D_SRTFLAG_PIVOT_EXIST) { - p += 2 * sizeof(fx16); - } else { - p += 8 * sizeof(fx16); - } - } - - (*NNS_G3dRS->funcJntScale)(pResult, (const fx32 *)p, NNS_G3dRS->c, pNd->flag); -} - -static const u8 pivotUtil_[9][4] = { - {4, 5, 7, 8}, - {3, 5, 6, 8}, - {3, 4, 6, 7}, - - {1, 2, 7, 8}, - {0, 2, 6, 8}, - {0, 1, 6, 7}, - - {1, 2, 4, 5}, - {0, 2, 3, 5}, - {0, 1, 3, 4} -}; - -static void getMdlRot_ (NNSG3dJntAnmResult * pResult) -{ - u32 idxNode; - const NNSG3dResNodeData * pNd; - const u8 * p; - NNS_G3D_NULL_ASSERT(NNS_G3dRS); - - NNS_G3D_ASSERT(NNS_G3D_GET_SBCCMD(*NNS_G3dRS->c) == NNS_G3D_SBC_NODEDESC); - idxNode = *(NNS_G3dRS->c + 1); - - pNd = NNS_G3dGetNodeDataByIdx(NNS_G3dRS->pResNodeInfo, idxNode); - p = (const u8 *)pNd + sizeof(*pNd); - - if (!(pNd->flag & NNS_G3D_SRTFLAG_TRANS_ZERO)) { - p += 3 * sizeof(fx32); - } - - if (!(pNd->flag & NNS_G3D_SRTFLAG_ROT_ZERO)) { - if (pNd->flag & NNS_G3D_SRTFLAG_PIVOT_EXIST) { - - fx32 A = *(fx16 *)(p + 0); - fx32 B = *(fx16 *)(p + sizeof(fx16)); - u32 idxPivot = (u32)((pNd->flag & NNS_G3D_SRTFLAG_IDXPIVOT_MASK) >> - NNS_G3D_SRTFLAG_IDXPIVOT_SHIFT); - - MI_Zero36B(&pResult->rot); - - pResult->rot.a[idxPivot] = - (pNd->flag & NNS_G3D_SRTFLAG_PIVOT_MINUS) ? - -FX32_ONE : - FX32_ONE; - - pResult->rot.a[pivotUtil_[idxPivot][0]] = A; - pResult->rot.a[pivotUtil_[idxPivot][1]] = B; - - pResult->rot.a[pivotUtil_[idxPivot][2]] = - (pNd->flag & NNS_G3D_SRTFLAG_SIGN_REVC) ? -B : B; - - pResult->rot.a[pivotUtil_[idxPivot][3]] = - (pNd->flag & NNS_G3D_SRTFLAG_SIGN_REVD) ? -A : A; - } else { - const fx16 * pp = (const fx16 *)p; - - pResult->rot.a[0] = pNd->_00; - pResult->rot.a[1] = *(pp + 0); - pResult->rot.a[2] = *(pp + 1); - pResult->rot.a[3] = *(pp + 2); - pResult->rot.a[4] = *(pp + 3); - pResult->rot.a[5] = *(pp + 4); - pResult->rot.a[6] = *(pp + 5); - pResult->rot.a[7] = *(pp + 6); - pResult->rot.a[8] = *(pp + 7); - } - } else { - pResult->flag |= NNS_G3D_JNTANM_RESULTFLAG_ROT_ZERO; - } -} - -static void getJntSRTAnmResult_ (const NNSG3dResJntAnm * pJntAnm, u32 dataIdx, fx32 Frame, NNSG3dJntAnmResult * pResult) -{ - NNSG3dResJntAnmSRTTag * pAnmSRTTag; - NNSG3dJntAnmSRTTag tag; - const u32 * pData; - BOOL IsDecimalFrame; - fx32 pS_invS[6]; - - NNS_G3D_NULL_ASSERT(pJntAnm); - NNS_G3D_NULL_ASSERT(pResult); - NNS_G3D_ASSERT(dataIdx < pJntAnm->numNode); - NNS_G3D_ASSERT(Frame < (pJntAnm->numFrame << FX32_SHIFT)); - NNS_G3D_ASSERT(pJntAnm->anmHeader.category0 == 'J' && - pJntAnm->anmHeader.category1 == 'CA'); - - { - const u16 * ofsTag = (const u16 *)((u8 *) pJntAnm + sizeof(NNSG3dResJntAnm)); - pAnmSRTTag = (NNSG3dResJntAnmSRTTag *)((u8 *) pJntAnm + ofsTag[dataIdx]); - tag = (NNSG3dJntAnmSRTTag)pAnmSRTTag->tag; - } - - if (tag & NNS_G3D_JNTANM_SRTINFO_IDENTITY) { - pResult->flag = (NNSG3dJntAnmResultFlag)(NNS_G3D_JNTANM_RESULTFLAG_SCALE_ONE | - NNS_G3D_JNTANM_RESULTFLAG_ROT_ZERO | - NNS_G3D_JNTANM_RESULTFLAG_TRANS_ZERO); - goto GET_JOINTSCALE; - } - - pData = (const u32 *)((const u8 *)pAnmSRTTag + sizeof(NNSG3dResJntAnmSRTTag)); - - IsDecimalFrame = (BOOL)((Frame & (FX32_ONE - 1)) && - (pJntAnm->flag & NNS_G3D_JNTANM_OPTION_INTERPOLATION)); - - pResult->flag = (NNSG3dJntAnmResultFlag) 0; - - if (!(tag & (NNS_G3D_JNTANM_SRTINFO_IDENTITY_T | NNS_G3D_JNTANM_SRTINFO_BASE_T))) { - if (!(tag & NNS_G3D_JNTANM_SRTINFO_CONST_TX)) { - if (IsDecimalFrame) { - getTransDataEx_(&pResult->trans.x, - Frame, - pData, - pJntAnm); - } else { - getTransData_(&pResult->trans.x, - Frame, - pData, - pJntAnm); - } - - pData += 2; - } else { - pResult->trans.x = *(fx32 *)pData; - pData += 1; - } - - if (!(tag & NNS_G3D_JNTANM_SRTINFO_CONST_TY)) { - if (IsDecimalFrame) { - getTransDataEx_(&pResult->trans.y, - Frame, - pData, - pJntAnm); - } else { - getTransData_(&pResult->trans.y, - Frame, - pData, - pJntAnm); - } - - pData += 2; - } else { - pResult->trans.y = *(fx32 *)pData; - pData += 1; - } - - if (!(tag & NNS_G3D_JNTANM_SRTINFO_CONST_TZ)) { - - if (IsDecimalFrame) { - getTransDataEx_(&pResult->trans.z, - Frame, - pData, - pJntAnm); - } else { - getTransData_(&pResult->trans.z, - Frame, - pData, - pJntAnm); - } - - pData += 2; - } else { - pResult->trans.z = *(fx32 *)pData; - pData += 1; - } - } else { - if (tag & NNS_G3D_JNTANM_SRTINFO_IDENTITY_T) { - pResult->flag |= NNS_G3D_JNTANM_RESULTFLAG_TRANS_ZERO; - } else { - getMdlTrans_(pResult); - } - } - - if (!(tag & (NNS_G3D_JNTANM_SRTINFO_IDENTITY_R | NNS_G3D_JNTANM_SRTINFO_BASE_R))) { - if (!(tag & NNS_G3D_JNTANM_SRTINFO_CONST_R)) { - - if (IsDecimalFrame) { - getRotDataEx_(&pResult->rot, - Frame, - pData, - pJntAnm); - } else { - getRotData_(&pResult->rot, - Frame, - pData, - pJntAnm); - } - - pData += 2; - } else { - if (getRotDataByIdx_(&pResult->rot, - (void *)((u8 *)pJntAnm + pJntAnm->ofsRot3), - (void *)((u8 *)pJntAnm + pJntAnm->ofsRot5), - (NNSG3dJntAnmRIdx) * pData)) { - vecCross_((const VecFx32 *)&pResult->rot._00, - (const VecFx32 *)&pResult->rot._10, - (VecFx32 *)&pResult->rot._20); - } - - pData += 1; - } - } else { - if (tag & NNS_G3D_JNTANM_SRTINFO_IDENTITY_R) { - pResult->flag |= NNS_G3D_JNTANM_RESULTFLAG_ROT_ZERO; - } else { - getMdlRot_(pResult); - } - } - - if (!(tag & (NNS_G3D_JNTANM_SRTINFO_IDENTITY_S | NNS_G3D_JNTANM_SRTINFO_BASE_S))) { - if (!(tag & NNS_G3D_JNTANM_SRTINFO_CONST_SX)) { - - fx32 sx_invsx[2]; - if (IsDecimalFrame) { - getScaleDataEx_(&sx_invsx[0], - Frame, - pData, - pJntAnm); - } else { - getScaleData_(&sx_invsx[0], - Frame, - pData, - pJntAnm); - } - *(pS_invS + 0) = sx_invsx[0]; - *(pS_invS + 3) = sx_invsx[1]; - } else { - const fx32 * p_fx32 = (const fx32 *)pData; - - *(pS_invS + 0) = *(p_fx32 + 0); - *(pS_invS + 3) = *(p_fx32 + 1); - } - - pData += 2; - - if (!(tag & NNS_G3D_JNTANM_SRTINFO_CONST_SY)) { - - fx32 sy_invsy[2]; - if (IsDecimalFrame) { - getScaleDataEx_(&sy_invsy[0], - Frame, - pData, - pJntAnm); - } else { - getScaleData_(&sy_invsy[0], - Frame, - pData, - pJntAnm); - } - *(pS_invS + 1) = sy_invsy[0]; - *(pS_invS + 4) = sy_invsy[1]; - } else { - const fx32 * p_fx32 = (const fx32 *)pData; - - *(pS_invS + 1) = *(p_fx32 + 0); - *(pS_invS + 4) = *(p_fx32 + 1); - - } - - pData += 2; - - if (!(tag & NNS_G3D_JNTANM_SRTINFO_CONST_SZ)) { - - fx32 sz_invsz[2]; - if (IsDecimalFrame) { - getScaleDataEx_(&sz_invsz[0], - Frame, - pData, - pJntAnm); - } else { - getScaleData_(&sz_invsz[0], - Frame, - pData, - pJntAnm); - } - *(pS_invS + 2) = sz_invsz[0]; - *(pS_invS + 5) = sz_invsz[1]; - } else { - const fx32 * p_fx32 = (const fx32 *)pData; - - *(pS_invS + 2) = *(p_fx32 + 0); - *(pS_invS + 5) = *(p_fx32 + 1); - } - - pData += 2; - } else { - if (tag & NNS_G3D_JNTANM_SRTINFO_IDENTITY_S) { - pResult->flag |= NNS_G3D_JNTANM_RESULTFLAG_SCALE_ONE; - } else { - getMdlScale_(pResult); - return; - } - } -GET_JOINTSCALE: - - (*NNS_G3dRS->funcJntScale)( - pResult, - pS_invS, - NNS_G3dRS->c, - ((pResult->flag & NNS_G3D_JNTANM_RESULTFLAG_SCALE_ONE) ? - NNS_G3D_SRTFLAG_SCALE_ONE : - 0) - ); -} - -static void getTransData_ (fx32 * pVal, fx32 Frame, const u32 * pData, const NNSG3dResJntAnm * pJntAnm) -{ - u32 frame = (u32)FX_Whole(Frame); - const void * pArray = (const void *)((const u8 *)pJntAnm + *(pData + 1)); - NNSG3dJntAnmTInfo info = (NNSG3dJntAnmTInfo) * pData; - u32 last_interp; - u32 idx; - u32 idx_sub; - - NNS_G3D_NULL_ASSERT(pVal); - NNS_G3D_NULL_ASSERT(pArray); - - if (!(info & NNS_G3D_JNTANM_TINFO_STEP_MASK)) { - idx = frame; - goto TRANS_NONINTERP; - } - - last_interp = ((u32)info & NNS_G3D_JNTANM_TINFO_LAST_INTERP_MASK) >> - NNS_G3D_JNTANM_TINFO_LAST_INTERP_SHIFT; - - if (info & NNS_G3D_JNTANM_TINFO_STEP_2) { - - if (frame & 1) { - if (frame > last_interp) { - idx = (last_interp >> 1) + 1; - goto TRANS_NONINTERP; - } else { - idx = frame >> 1; - goto TRANS_INTERP_2; - } - } else { - idx = frame >> 1; - goto TRANS_NONINTERP; - } - } else { - if (frame & 3) { - if (frame > last_interp) { - idx = (last_interp >> 2) + (frame & 3); - goto TRANS_NONINTERP; - } - - if (frame & 1) { - fx32 v, v_sub; - if (frame & 2) { - idx_sub = (frame >> 2); - idx = idx_sub + 1; - } else { - idx = (frame >> 2); - idx_sub = idx + 1; - } - - if (info & NNS_G3D_JNTANM_TINFO_FX16ARRAY) { - const fx16 * p_fx16 = (const fx16 *)pArray; - - v = *(p_fx16 + idx); - v_sub = *(p_fx16 + idx_sub); - *pVal = (v + v + v + v_sub) >> 2; - } else { - const fx32 * p_fx32 = (const fx32 *)pArray; - - v = *(p_fx32 + idx); - v_sub = *(p_fx32 + idx_sub); - - *pVal = (fx32)(((fx64)v + v + v + v_sub) >> 2); - } - return; - } else { - idx = frame >> 2; - goto TRANS_INTERP_2; - } - } else { - idx = frame >> 2; - goto TRANS_NONINTERP; - } - } - NNS_G3D_ASSERT(0); -TRANS_INTERP_2: - if (info & NNS_G3D_JNTANM_TINFO_FX16ARRAY) { - const fx16 * p_fx16 = (const fx16 *)pArray; - - *pVal = (*(p_fx16 + idx) + *(p_fx16 + idx + 1)) >> 1; - } else { - const fx32 * p_fx32 = (const fx32 *)pArray; - - fx32 v1 = *(p_fx32 + idx) >> 1; - fx32 v2 = *(p_fx32 + idx + 1) >> 1; - *pVal = v1 + v2; - } - return; -TRANS_NONINTERP: - if (info & NNS_G3D_JNTANM_TINFO_FX16ARRAY) { - *pVal = *((const fx16 *)pArray + idx); - } else { - *pVal = *((const fx32 *)pArray + idx); - } - return; -} - -static void getTransDataEx_ (fx32 * pVal, fx32 Frame, const u32 * pData, const NNSG3dResJntAnm * pJntAnm) -{ - const void * pArray = (const void *)((const u8 *)pJntAnm + *(pData + 1)); - NNSG3dJntAnmTInfo info = (NNSG3dJntAnmTInfo) * pData; - - u32 last_interp; - u32 idx; - fx32 remainder; - int step; - u32 step_shift; - u32 frame; - - NNS_G3D_NULL_ASSERT(pVal); - NNS_G3D_NULL_ASSERT(pArray); - - frame = (u32)FX_Whole(Frame); - - if (frame == pJntAnm->numFrame - 1) { - - if (!(info & NNS_G3D_JNTANM_TINFO_STEP_MASK)) { - idx = frame; - } else if (info & NNS_G3D_JNTANM_TINFO_STEP_2) { - idx = (frame >> 1) + (frame & 1); - } else { - idx = (frame >> 2) + (frame & 3); - } - - if (pJntAnm->flag & NNS_G3D_JNTANM_OPTION_END_TO_START_INTERPOLATION) { - fx32 v0, v1; - remainder = Frame & (FX32_ONE - 1); - - if (info & NNS_G3D_JNTANM_TINFO_FX16ARRAY) { - const fx16 * p_fx16 = (const fx16 *)pArray; - - v0 = *(p_fx16 + idx); - v1 = *p_fx16; - } else { - const fx32 * p_fx32 = (const fx32 *)pArray; - - v0 = *(p_fx32 + idx); - v1 = *p_fx32; - } - - *pVal = v0 + (((v1 - v0) * remainder) >> FX32_SHIFT); - return; - } else { - if (info & NNS_G3D_JNTANM_TINFO_FX16ARRAY) { - *pVal = *((const fx16 *)pArray + idx); - } else { - *pVal = *((const fx32 *)pArray + idx); - } - return; - } - } - - if (!(info & NNS_G3D_JNTANM_TINFO_STEP_MASK)) { - goto TRANS_EX_0; - } - - last_interp = ((u32)info & NNS_G3D_JNTANM_TINFO_LAST_INTERP_MASK) >> - NNS_G3D_JNTANM_TINFO_LAST_INTERP_SHIFT; - - if (info & NNS_G3D_JNTANM_TINFO_STEP_2) { - if (frame >= last_interp) { - idx = (last_interp >> 1); - goto TRANS_EX_0_1; - } else { - idx = frame >> 1; - remainder = Frame & (FX32_ONE * 2 - 1); - step = 2; - step_shift = 1; - goto TRANS_EX; - } - } else { - if (frame >= last_interp) { - idx = (frame >> 2) + (frame & 3); - goto TRANS_EX_0_1; - } else { - idx = frame >> 2; - remainder = Frame & (FX32_ONE * 4 - 1); - step = 4; - step_shift = 2; - goto TRANS_EX; - } - } - NNS_G3D_ASSERT(0); -TRANS_EX_0: - idx = (u32)frame; -TRANS_EX_0_1: - remainder = Frame & (FX32_ONE - 1); - step = 1; - step_shift = 0; -TRANS_EX: - { - fx32 v0, v1; - if (info & NNS_G3D_JNTANM_TINFO_FX16ARRAY) { - const fx16 * p_fx16 = (const fx16 *)pArray; - - v0 = *(p_fx16 + idx); - v1 = *(p_fx16 + idx + 1); - } else { - const fx32 * p_fx32 = (const fx32 *)pArray; - - v0 = *(p_fx32 + idx); - v1 = *(p_fx32 + idx + 1); - } - - *pVal = ((v0 * step) + (((v1 - v0) * remainder) >> FX32_SHIFT)) >> step_shift; - } - return; -} - -static void getScaleData_ (fx32 * s_invs, fx32 Frame, const u32 * pData, const NNSG3dResJntAnm * pJntAnm) -{ - u32 frame = (u32)FX_Whole(Frame); - const void * pArray = (const void *)((u8 *)pJntAnm + *(pData + 1)); - NNSG3dJntAnmSInfo info = (NNSG3dJntAnmSInfo) * pData; - u32 last_interp; - u32 idx; - u32 idx_sub; - - NNS_G3D_NULL_ASSERT(s_invs); - NNS_G3D_NULL_ASSERT(pArray); - - if (!(info & NNS_G3D_JNTANM_SINFO_STEP_MASK)) { - idx = frame; - goto SCALE_NONINTERP; - } - - last_interp = ((u32)info & NNS_G3D_JNTANM_SINFO_LAST_INTERP_MASK) >> - NNS_G3D_JNTANM_SINFO_LAST_INTERP_SHIFT; - - if (info & NNS_G3D_JNTANM_SINFO_STEP_2) { - if (frame & 1) { - if (frame > last_interp) { - idx = (last_interp >> 1) + 1; - goto SCALE_NONINTERP; - } else { - idx = frame >> 1; - goto SCALE_INTERP_2; - } - } else { - idx = frame >> 1; - goto SCALE_NONINTERP; - } - } else { - if (frame & 3) { - if (frame > last_interp) { - idx = (last_interp >> 2) + (frame & 3); - goto SCALE_NONINTERP; - } - - if (frame & 1) { - fx32 v, v_sub; - if (frame & 2) { - idx_sub = (frame >> 2); - idx = idx_sub + 1; - } else { - idx = (frame >> 2); - idx_sub = idx + 1; - } - - if (info & NNS_G3D_JNTANM_SINFO_FX16ARRAY) { - const fx16 * p_fx16 = (const fx16 *)pArray; - - v = *(p_fx16 + 2 * idx); - v_sub = *(p_fx16 + 2 * idx_sub); - s_invs[0] = (v + (v << 1) + v_sub) >> 2; - - v = *(p_fx16 + 2 * idx + 1); - v_sub = *(p_fx16 + 2 * idx_sub + 1); - s_invs[1] = (v + (v << 1) + v_sub) >> 2; - } else { - const fx32 * p_fx32 = (const fx32 *)pArray; - - v = *(p_fx32 + 2 * idx); - v_sub = *(p_fx32 + 2 * idx_sub); - - s_invs[0] = (fx32)(((fx64)v + v + v + v_sub) >> 2); - - v = *(p_fx32 + 2 * idx + 1); - v_sub = *(p_fx32 + 2 * idx_sub + 1); - - s_invs[1] = (fx32)(((fx64)v + v + v + v_sub) >> 2); - } - return; - } else { - idx = frame >> 2; - goto SCALE_INTERP_2; - } - } else { - idx = frame >> 2; - goto SCALE_NONINTERP; - } - } -SCALE_NONINTERP: - if (info & NNS_G3D_JNTANM_SINFO_FX16ARRAY) { - const fx16 * p_fx16 = (const fx16 *)pArray; - - s_invs[0] = *(p_fx16 + 2 * idx); - s_invs[1] = *(p_fx16 + 2 * idx + 1); - } else { - const fx32 * p_fx32 = (const fx32 *)pArray; - - s_invs[0] = *(p_fx32 + 2 * idx); - s_invs[1] = *(p_fx32 + 2 * idx + 1); - } - return; -SCALE_INTERP_2: - if (info & NNS_G3D_JNTANM_SINFO_FX16ARRAY) { - const fx16 * p_fx16 = (const fx16 *)pArray; - - s_invs[0] = (*(p_fx16 + 2 * idx) + *(p_fx16 + 2 * idx + 2)) >> 1; - s_invs[1] = (*(p_fx16 + 2 * idx + 1) + *(p_fx16 + 2 * idx + 3)) >> 1; - } else { - const fx32 * p_fx32 = (const fx32 *)pArray; - - s_invs[0] = (*(p_fx32 + 2 * idx) + (*(p_fx32 + 2 * idx + 2))) >> 1; - s_invs[1] = (*(p_fx32 + 2 * idx + 1) + (*(p_fx32 + 2 * idx + 3))) >> 1; - } - return; -} - -static void getScaleDataEx_ (fx32 * s_invs, fx32 Frame, const u32 * pData, const NNSG3dResJntAnm * pJntAnm) -{ - const void * pArray = (const void *)((const u8 *)pJntAnm + *(pData + 1)); - NNSG3dJntAnmSInfo info = (NNSG3dJntAnmSInfo) * pData; - u32 last_interp; - u32 idx0, idx1; - fx32 remainder; - int step; - u32 step_shift; - u32 frame; - - frame = (u32)FX_Whole(Frame); - - if (frame == pJntAnm->numFrame - 1) { - if (!(info & NNS_G3D_JNTANM_SINFO_STEP_MASK)) { - idx0 = frame; - } else if (info & NNS_G3D_JNTANM_SINFO_STEP_2) { - idx0 = (frame >> 1) + (frame & 1); - } else { - idx0 = (frame >> 2) + (frame & 3); - } - - if (pJntAnm->flag & NNS_G3D_JNTANM_OPTION_END_TO_START_INTERPOLATION) { - idx1 = 0; - goto SCALE_EX_0_1; - } else { - if (info & NNS_G3D_JNTANM_SINFO_FX16ARRAY) { - const fx16 * p_fx16 = (const fx16 *)pArray; - - s_invs[0] = *(p_fx16 + 2 * idx0); - s_invs[1] = *(p_fx16 + 2 * idx0 + 1); - } else { - const fx32 * p_fx32 = (const fx32 *)pArray; - - s_invs[0] = *(p_fx32 + 2 * idx0); - s_invs[1] = *(p_fx32 + 2 * idx0 + 1); - } - return; - } - } - - if (!(info & NNS_G3D_JNTANM_SINFO_STEP_MASK)) { - goto SCALE_EX_0; - } - - last_interp = ((u32)info & NNS_G3D_JNTANM_SINFO_LAST_INTERP_MASK) >> - NNS_G3D_JNTANM_SINFO_LAST_INTERP_SHIFT; - - if (info & NNS_G3D_JNTANM_SINFO_STEP_2) { - - if (frame >= last_interp) { - idx0 = (last_interp >> 1); - idx1 = idx0 + 1; - goto SCALE_EX_0_1; - } else { - idx0 = frame >> 1; - idx1 = idx0 + 1; - remainder = Frame & (FX32_ONE * 2 - 1); - step = 2; - step_shift = 1; - goto SCALE_EX; - } - } else { - if (frame >= last_interp) { - idx0 = (frame >> 2) + (frame & 3); - idx1 = idx0 + 1; - goto SCALE_EX_0_1; - } else { - idx0 = frame >> 2; - idx1 = idx0 + 1; - remainder = Frame & (FX32_ONE * 4 - 1); - step = 4; - step_shift = 2; - goto SCALE_EX; - } - } - NNS_G3D_ASSERT(0); -SCALE_EX_0: - idx0 = (u32)frame; - idx1 = idx0 + 1; -SCALE_EX_0_1: - remainder = Frame & (FX32_ONE - 1); - step = 1; - step_shift = 0; -SCALE_EX: - { - fx32 s0, s1; - fx32 inv0, inv1; - - if (info & NNS_G3D_JNTANM_SINFO_FX16ARRAY) { - const fx16 * p_fx16 = (const fx16 *)pArray; - - s0 = *(p_fx16 + 2 * idx0); - inv0 = *(p_fx16 + 2 * idx0 + 1); - - s1 = *(p_fx16 + 2 * idx1); - inv1 = *(p_fx16 + 2 * idx1 + 1); - } else { - const fx32 * p_fx32 = (const fx32 *)pArray; - - s0 = *(p_fx32 + 2 * idx0); - inv0 = *(p_fx32 + 2 * idx0 + 1); - - s1 = *(p_fx32 + 2 * idx1); - inv1 = *(p_fx32 + 2 * idx1 + 1); - } - - s_invs[0] = ((s0 * step) + (((s1 - s0) * remainder) >> FX32_SHIFT)) >> step_shift; - s_invs[1] = ((inv0 * step) + (((inv1 - inv0) * remainder) >> FX32_SHIFT)) >> step_shift; - } - - return; -} - -#define G3D_NORMALIZE_ROT_MTX - -#ifdef G3D_NORMALIZE_ROT_MTX - #define ROT_FILTER_SHIFT 0 -#else - #define ROT_FILTER_SHIFT 1 -#endif - -static void getRotData_ (MtxFx33 * pRot, fx32 Frame, const u32 * pData, const NNSG3dResJntAnm * pJntAnm) -{ - u32 frame = (u32)FX_Whole(Frame); - const void * pArray = (const void *)((const u8 *)pJntAnm + *(pData + 1)); - const void * pArrayRot3 = (const void *)((const u8 *)pJntAnm + pJntAnm->ofsRot3); - const void * pArrayRot5 = (const void *)((const u8 *)pJntAnm + pJntAnm->ofsRot5); - NNSG3dJntAnmRInfo info = (NNSG3dJntAnmRInfo) * pData; - const u16 * p = (const u16 *)pArray; - - u32 last_interp; - u32 idx; - u32 idx_sub; - - if (!(info & NNS_G3D_JNTANM_RINFO_STEP_MASK)) { - idx = frame; - goto ROT_NONINTERP; - } - - last_interp = ((u32)info & NNS_G3D_JNTANM_RINFO_LAST_INTERP_MASK) >> - NNS_G3D_JNTANM_RINFO_LAST_INTERP_SHIFT; - - if (info & NNS_G3D_JNTANM_RINFO_STEP_2) { - if (frame & 1) { - if (frame > last_interp) { - idx = (last_interp >> 1) + 1; - goto ROT_NONINTERP; - } else { - idx = frame >> 1; - goto ROT_INTERP_2; - } - } else { - idx = frame >> 1; - goto ROT_NONINTERP; - } - } else { - if (frame & 3) { - if (frame > last_interp) { - idx = (last_interp >> 2) + (frame & 3); - goto ROT_NONINTERP; - } - - if (frame & 1) { - MtxFx33 tmp; - BOOL doCross = FALSE; - if (frame & 2) { - idx_sub = (frame >> 2); - idx = idx_sub + 1; - } else { - idx = (frame >> 2); - idx_sub = idx + 1; - } - doCross |= getRotDataByIdx_(pRot, - pArrayRot3, - pArrayRot5, - (NNSG3dJntAnmRIdx)p[idx]); - doCross |= getRotDataByIdx_(&tmp, - pArrayRot3, - pArrayRot5, - (NNSG3dJntAnmRIdx)p[idx_sub]); - pRot->_00 = (pRot->_00 * 3 + tmp._00) >> (2 * ROT_FILTER_SHIFT); - pRot->_01 = (pRot->_01 * 3 + tmp._01) >> (2 * ROT_FILTER_SHIFT); - pRot->_02 = (pRot->_02 * 3 + tmp._02) >> (2 * ROT_FILTER_SHIFT); - pRot->_10 = (pRot->_10 * 3 + tmp._10) >> (2 * ROT_FILTER_SHIFT); - pRot->_11 = (pRot->_11 * 3 + tmp._11) >> (2 * ROT_FILTER_SHIFT); - pRot->_12 = (pRot->_12 * 3 + tmp._12) >> (2 * ROT_FILTER_SHIFT); - -#ifdef G3D_NORMALIZE_ROT_MTX - VEC_Normalize((VecFx32 *)(&pRot->_00), (VecFx32 *)(&pRot->_00)); - VEC_Normalize((VecFx32 *)(&pRot->_10), (VecFx32 *)(&pRot->_10)); -#endif - - if (!doCross) { - pRot->_20 = (pRot->_20 * 3 + tmp._20) >> (2 * ROT_FILTER_SHIFT); - pRot->_21 = (pRot->_21 * 3 + tmp._21) >> (2 * ROT_FILTER_SHIFT); - pRot->_22 = (pRot->_22 * 3 + tmp._22) >> (2 * ROT_FILTER_SHIFT); - -#ifdef G3D_NORMALIZE_ROT_MTX - VEC_Normalize((VecFx32 *)(&pRot->_20), (VecFx32 *)(&pRot->_20)); -#endif - } else { - vecCross_((const VecFx32 *)&pRot->_00, - (const VecFx32 *)&pRot->_10, - (VecFx32 *)&pRot->_20); - } - return; - } else { - idx = frame >> 2; - goto ROT_INTERP_2; - } - } else { - idx = frame >> 2; - goto ROT_NONINTERP; - } - } -ROT_INTERP_2: - { - MtxFx33 tmp; - BOOL doCross = FALSE; - doCross |= getRotDataByIdx_(pRot, - pArrayRot3, - pArrayRot5, - (NNSG3dJntAnmRIdx)p[idx]); - doCross |= getRotDataByIdx_(&tmp, - pArrayRot3, - pArrayRot5, - (NNSG3dJntAnmRIdx)p[idx + 1]); - pRot->_00 = (pRot->_00 + tmp._00) >> ROT_FILTER_SHIFT; - pRot->_01 = (pRot->_01 + tmp._01) >> ROT_FILTER_SHIFT; - pRot->_02 = (pRot->_02 + tmp._02) >> ROT_FILTER_SHIFT; - pRot->_10 = (pRot->_10 + tmp._10) >> ROT_FILTER_SHIFT; - pRot->_11 = (pRot->_11 + tmp._11) >> ROT_FILTER_SHIFT; - pRot->_12 = (pRot->_12 + tmp._12) >> ROT_FILTER_SHIFT; - -#ifdef G3D_NORMALIZE_ROT_MTX - VEC_Normalize((VecFx32 *)(&pRot->_00), (VecFx32 *)(&pRot->_00)); - VEC_Normalize((VecFx32 *)(&pRot->_10), (VecFx32 *)(&pRot->_10)); -#endif - - if (!doCross) { - pRot->_20 = (pRot->_20 + tmp._20) >> ROT_FILTER_SHIFT; - pRot->_21 = (pRot->_21 + tmp._21) >> ROT_FILTER_SHIFT; - pRot->_22 = (pRot->_22 + tmp._22) >> ROT_FILTER_SHIFT; - -#ifdef G3D_NORMALIZE_ROT_MTX - VEC_Normalize((VecFx32 *)(&pRot->_20), (VecFx32 *)(&pRot->_20)); -#endif - } else { - vecCross_((const VecFx32 *)&pRot->_00, - (const VecFx32 *)&pRot->_10, - (VecFx32 *)&pRot->_20); - } - return; - } -ROT_NONINTERP: - if (getRotDataByIdx_(pRot, - pArrayRot3, - pArrayRot5, - (NNSG3dJntAnmRIdx)p[idx])) { - vecCross_((const VecFx32 *)&pRot->_00, - (const VecFx32 *)&pRot->_10, - (VecFx32 *)&pRot->_20); - } else { -#ifdef G3D_NORMALIZE_ROT_MTX - VEC_Normalize((VecFx32 *)(&pRot->_20), (VecFx32 *)(&pRot->_20)); -#endif - } - return; -} - -static void getRotDataEx_ (MtxFx33 * pRot, fx32 Frame, const u32 * pData, const NNSG3dResJntAnm * pJntAnm) -{ - const void * pArray = (const void *)((const u8 *)pJntAnm + *(pData + 1)); - const void * pArrayRot3 = (const void *)((const u8 *)pJntAnm + pJntAnm->ofsRot3); - const void * pArrayRot5 = (const void *)((const u8 *)pJntAnm + pJntAnm->ofsRot5); - NNSG3dJntAnmRInfo info = (NNSG3dJntAnmRInfo) * pData; - - u32 last_interp; - u32 idx0, idx1; - fx32 remainder; - int step; - u32 step_shift; - u32 frame; - const u16 * p = (const u16 *)pArray; - - frame = (u32)FX_Whole(Frame); - - if (frame == pJntAnm->numFrame - 1) { - - if (!(info & NNS_G3D_JNTANM_RINFO_STEP_MASK)) { - idx0 = frame; - } else if (info & NNS_G3D_JNTANM_RINFO_STEP_2) { - idx0 = (frame >> 1) + (frame & 1); - } else { - idx0 = (frame >> 2) + (frame & 3); - } - - if (pJntAnm->flag & NNS_G3D_JNTANM_OPTION_END_TO_START_INTERPOLATION) { - idx1 = 0; - goto ROT_EX_0_1; - } else { - - if (getRotDataByIdx_(pRot, - pArrayRot3, - pArrayRot5, - (NNSG3dJntAnmRIdx)p[idx0])) { - vecCross_((const VecFx32 *)&pRot->_00, - (const VecFx32 *)&pRot->_10, - (VecFx32 *)&pRot->_20); - } else { -#ifdef G3D_NORMALIZE_ROT_MTX - VEC_Normalize((VecFx32 *)(&pRot->_20), (VecFx32 *)(&pRot->_20)); -#endif - } - return; - } - } - - if (!(info & NNS_G3D_JNTANM_RINFO_STEP_MASK)) { - goto ROT_EX_0; - } - - last_interp = ((u32)info & NNS_G3D_JNTANM_RINFO_LAST_INTERP_MASK) >> - NNS_G3D_JNTANM_RINFO_LAST_INTERP_SHIFT; - - if (info & NNS_G3D_JNTANM_RINFO_STEP_2) { - if (frame >= last_interp) { - idx0 = (last_interp >> 1); - idx1 = idx0 + 1; - goto ROT_EX_0_1; - } else { - idx0 = frame >> 1; - idx1 = idx0 + 1; - remainder = Frame & (FX32_ONE * 2 - 1); - step = 2; - step_shift = 1; - goto ROT_EX; - } - } else { - if (frame >= last_interp) { - idx0 = (frame >> 2) + (frame & 3); - idx1 = idx0 + 1; - goto ROT_EX_0_1; - } else { - idx0 = frame >> 2; - idx1 = idx0 + 1; - remainder = Frame & (FX32_ONE * 4 - 1); - step = 4; - step_shift = 2; - goto ROT_EX; - } - } - NNS_G3D_ASSERT(0); -ROT_EX_0: - idx0 = (u32)frame; - idx1 = idx0 + 1; -ROT_EX_0_1: - remainder = Frame & (FX32_ONE - 1); - step = 1; - step_shift = 0; -ROT_EX: - { - MtxFx33 r0, r1; - BOOL doCross = FALSE; - doCross |= getRotDataByIdx_(&r0, - pArrayRot3, - pArrayRot5, - (NNSG3dJntAnmRIdx)p[idx0]); - doCross |= getRotDataByIdx_(&r1, - pArrayRot3, - pArrayRot5, - (NNSG3dJntAnmRIdx)p[idx1]); - - pRot->_00 = ((r0._00 * step) + (((r1._00 - r0._00) * remainder) >> FX32_SHIFT)) >> (step_shift * ROT_FILTER_SHIFT); - pRot->_01 = ((r0._01 * step) + (((r1._01 - r0._01) * remainder) >> FX32_SHIFT)) >> (step_shift * ROT_FILTER_SHIFT); - pRot->_02 = ((r0._02 * step) + (((r1._02 - r0._02) * remainder) >> FX32_SHIFT)) >> (step_shift * ROT_FILTER_SHIFT); - pRot->_10 = ((r0._10 * step) + (((r1._10 - r0._10) * remainder) >> FX32_SHIFT)) >> (step_shift * ROT_FILTER_SHIFT); - pRot->_11 = ((r0._11 * step) + (((r1._11 - r0._11) * remainder) >> FX32_SHIFT)) >> (step_shift * ROT_FILTER_SHIFT); - pRot->_12 = ((r0._12 * step) + (((r1._12 - r0._12) * remainder) >> FX32_SHIFT)) >> (step_shift * ROT_FILTER_SHIFT); - -#ifdef G3D_NORMALIZE_ROT_MTX - VEC_Normalize((VecFx32 *)(&pRot->_00), (VecFx32 *)(&pRot->_00)); - VEC_Normalize((VecFx32 *)(&pRot->_10), (VecFx32 *)(&pRot->_10)); -#endif - - if (!doCross) { - pRot->_20 = ((r0._20 * step) + (((r1._20 - r0._20) * remainder) >> FX32_SHIFT)) >> (step_shift * ROT_FILTER_SHIFT); - pRot->_21 = ((r0._21 * step) + (((r1._21 - r0._21) * remainder) >> FX32_SHIFT)) >> (step_shift * ROT_FILTER_SHIFT); - pRot->_22 = ((r0._22 * step) + (((r1._22 - r0._22) * remainder) >> FX32_SHIFT)) >> (step_shift * ROT_FILTER_SHIFT); - -#ifdef G3D_NORMALIZE_ROT_MTX - VEC_Normalize((VecFx32 *)(&pRot->_20), (VecFx32 *)(&pRot->_20)); -#endif - } else { - vecCross_((const VecFx32 *)&pRot->_00, - (const VecFx32 *)&pRot->_10, - (VecFx32 *)&pRot->_20); - } - return; - } -} - -static BOOL getRotDataByIdx_ (MtxFx33 * pRot, const void * pArrayRot3, const void * pArrayRot5, NNSG3dJntAnmRIdx info) -{ - if (info & NNS_G3D_JNTANM_RIDX_PIVOT) { - const fx16 * data; - fx32 A, B; - u32 idxPivot; - - pRot->_00 = pRot->_01 = pRot->_02 = - pRot->_10 = pRot->_11 = pRot->_12 = - pRot->_20 = pRot->_21 = pRot->_22 = 0; - - data = (const fx16 *)pArrayRot3 + ((info & NNS_G3D_JNTANM_RIDX_IDXDATA_MASK) * 3); - A = *(data + 1); - B = *(data + 2); - idxPivot = (u32)((*data & NNS_G3D_JNTANM_PIVOTINFO_IDXPIVOT_MASK) >> - NNS_G3D_JNTANM_PIVOT_INFO_IDXPIVOT_SHIFT); - - pRot->a[idxPivot] = - (*data & NNS_G3D_JNTANM_PIVOTINFO_MINUS) ? -FX32_ONE : FX32_ONE; - - pRot->a[pivotUtil_[idxPivot][0]] = A; - pRot->a[pivotUtil_[idxPivot][1]] = B; - - pRot->a[pivotUtil_[idxPivot][2]] = - (*data & NNS_G3D_JNTANM_PIVOTINFO_SIGN_REVC) ? -B : B; - pRot->a[pivotUtil_[idxPivot][3]] = - (*data & NNS_G3D_JNTANM_PIVOTINFO_SIGN_REVD) ? -A : A; - - return FALSE; - } else { - const fx16 * data = (fx16 *)pArrayRot5 + - ((info & NNS_G3D_JNTANM_RIDX_IDXDATA_MASK) * 5); - fx16 _12; - - _12 = (fx16)(data[4] & 7); - pRot->_11 = (data[4] >> 3); - - _12 = (fx16)((_12 << 3) | (data[0] & 7)); - pRot->_00 = (data[0] >> 3); - - _12 = (fx16)((_12 << 3) | (data[1] & 7)); - pRot->_01 = (data[1] >> 3); - - _12 = (fx16)((_12 << 3) | (data[2] & 7)); - pRot->_02 = (data[2] >> 3); - - _12 = (fx16)((_12 << 3) | (data[3] & 7)); - pRot->_10 = (data[3] >> 3); - - pRot->_12 = ((fx16)(_12 << 3) >> 3); - - return TRUE; - } -} - -#endif diff --git a/subprojects/NitroSystem/libraries/g3d/src/anm/nsbma.c b/subprojects/NitroSystem/libraries/g3d/src/anm/nsbma.c deleted file mode 100644 index 90de054b89..0000000000 --- a/subprojects/NitroSystem/libraries/g3d/src/anm/nsbma.c +++ /dev/null @@ -1,226 +0,0 @@ -#include -#include - -#ifndef NNS_G3D_NSBMA_DISABLE - -static u16 GetMatColAnmValue_ (const NNSG3dResMatCAnm * pAnm, u32 info, u32 frame) { - const u16 * pDataHead; - u32 last_interp; - u32 idx; - - if (info & NNS_G3D_MATCANM_ELEM_CONST) { - return (u16)(info & NNS_G3D_MATCANM_ELEM_OFFSET_CONSTANT_MASK); - } - - pDataHead = (const u16 *)((const u8 *)pAnm + (info & NNS_G3D_MATCANM_ELEM_OFFSET_CONSTANT_MASK)); - - if (!(info & NNS_G3D_MATCANM_ELEM_STEP_MASK)) { - return *(pDataHead + frame); - } - - last_interp = (NNS_G3D_MATCANM_ELEM_LAST_INTERP_MASK & info) - >> NNS_G3D_MATCANM_ELEM_LAST_INTERP_SHIFT; - - if (info & NNS_G3D_MATCANM_ELEM_STEP_2) { - if (frame & 1) { - if (frame > last_interp) { - return *(pDataHead + (last_interp >> 1) + 1); - } else { - idx = frame >> 1; - goto MATC_INTERP_50_50; - } - } else { - return *(pDataHead + (frame >> 1)); - } - } else { - if (frame & 3) { - if (frame > last_interp) { - return *(pDataHead + (last_interp >> 2) + (frame & 3)); - } - - if (frame & 1) { - u32 idx_sub; - u32 v, v_sub; - u32 c, c_sub; - u32 rval; - const u32 cmask0 = GX_RGB_R_MASK | GX_RGB_B_MASK; - const u32 cmask1 = GX_RGB_G_MASK; - - if (frame & 2) { - idx_sub = (frame >> 2); - idx = idx_sub + 1; - } else { - idx = (frame >> 2); - idx_sub = idx + 1; - } - - v = *(pDataHead + idx); - v_sub = *(pDataHead + idx_sub); - - c = v & cmask0; - c_sub = v_sub & cmask0; - rval = ((c + c + c + c_sub) >> 2) & cmask0; - - c = v & cmask1; - c_sub = v_sub & cmask1; - rval |= ((c + c + c + c_sub) >> 2) & cmask1; - - return (u16)rval; - } else { - idx = frame >> 2; - goto MATC_INTERP_50_50; - } - } else { - return *(pDataHead + (frame >> 2)); - } - } - NNS_G3D_ASSERT(0); - MATC_INTERP_50_50: - { - u32 rval; - u32 v0 = *(pDataHead + idx); - u32 v1 = *(pDataHead + idx + 1); - const u32 cmask0 = GX_RGB_R_MASK | GX_RGB_B_MASK; - const u32 cmask1 = GX_RGB_G_MASK; - - rval = (((v0 & cmask0) + (v1 & cmask0)) >> 1) & cmask0; - - rval |= (((v0 & cmask1) + (v1 & cmask1)) >> 1) & cmask1; - - return (u16)rval; - } -} - -static u16 GetMatColAnmuAlphaValue_ (const NNSG3dResMatCAnm * pAnm, u32 info, u32 frame) { - const u8 * pDataHead; - u32 last_interp; - - if (info & NNS_G3D_MATCANM_ELEM_CONST) { - return (u16)(info & NNS_G3D_MATCANM_ELEM_OFFSET_CONSTANT_MASK); - } - - pDataHead = (const u8 *)pAnm + (info & NNS_G3D_MATCANM_ELEM_OFFSET_CONSTANT_MASK); - - if (!(info & NNS_G3D_MATCANM_ELEM_STEP_MASK)) { - return *(pDataHead + frame); - } - - last_interp = (NNS_G3D_MATCANM_ELEM_LAST_INTERP_MASK & info) - >> NNS_G3D_MATCANM_ELEM_LAST_INTERP_SHIFT; - if (info & NNS_G3D_MATCANM_ELEM_STEP_2) { - if (frame & 1) { - if (frame > last_interp) { - return *(pDataHead + (last_interp >> 1) + 1); - } else { - return (u16)((*(pDataHead + (frame >> 1)) + *(pDataHead + (frame >> 1) + 1)) >> 1); - } - } else { - return *(pDataHead + (frame >> 1)); - } - } else { - if (frame & 3) { - if (frame > last_interp) { - return *(pDataHead + (last_interp >> 2) + (frame & 3)); - } - - if (frame & 1) { - u32 idx, idx_sub; - u32 v, v_sub; - - if (frame & 2) { - idx_sub = (frame >> 2); - idx = idx_sub + 1; - } else { - idx = (frame >> 2); - idx_sub = idx + 1; - } - - v = *(pDataHead + idx); - v_sub = *(pDataHead + idx_sub); - - return (u16)((v + v + v + v_sub) >> 2); - } else { - return (u16)((*(pDataHead + (frame >> 2)) + *(pDataHead + (frame >> 2) + 1)) >> 1); - } - } else { - return *(pDataHead + (frame >> 2)); - } - } - NNS_G3D_ASSERT(0); -} - -static NNS_G3D_INLINE void GetMatColAnm_ (const NNSG3dResMatCAnm * pAnm, u16 idx, u32 frame, NNSG3dMatAnmResult * pResult) { - NNS_G3D_NULL_ASSERT(pAnm); - NNS_G3D_ASSERT(idx < pAnm->dict.numEntry); - NNS_G3D_ASSERT(frame < pAnm->numFrame); - NNS_G3D_NULL_ASSERT(pResult); - NNS_G3D_ASSERT((pAnm->anmHeader.category0 == 'M') && (pAnm->anmHeader.category1 == 'MA')); - - { - u16 diffuse, ambient, emission, specular, polygon_alpha; - const NNSG3dResDictMatCAnmData * pAnmData = - (const NNSG3dResDictMatCAnmData *)NNS_G3dGetResDataByIdx(&pAnm->dict, idx); - - diffuse = GetMatColAnmValue_(pAnm, pAnmData->diffuse, frame); - ambient = GetMatColAnmValue_(pAnm, pAnmData->ambient, frame); - - pResult->prmMatColor0 = GX_PACK_DIFFAMB_PARAM( - diffuse, ambient, - (pResult->prmMatColor0 & REG_G3_DIF_AMB_C_MASK) - ); - - emission = GetMatColAnmValue_(pAnm, pAnmData->emission, frame); - specular = GetMatColAnmValue_(pAnm, pAnmData->specular, frame); - pResult->prmMatColor1 = GX_PACK_SPECEMI_PARAM( - specular, emission, - (pResult->prmMatColor1 & REG_G3_SPE_EMI_S_MASK) - ); - - polygon_alpha = GetMatColAnmuAlphaValue_(pAnm, pAnmData->polygon_alpha, frame); - pResult->prmPolygonAttr = (pResult->prmPolygonAttr & ~REG_G3_POLYGON_ATTR_ALPHA_MASK) | - (polygon_alpha << REG_G3_POLYGON_ATTR_ALPHA_SHIFT); - } -} - -void NNSi_G3dAnmObjInitNsBma (NNSG3dAnmObj * pAnmObj, void * pResAnm, const NNSG3dResMdl * pResMdl) { - u32 i; - NNSG3dResMatCAnm * matCAnm; - const NNSG3dResMat * mat; - - NNS_G3D_NULL_ASSERT(pAnmObj); - NNS_G3D_NULL_ASSERT(pResAnm); - NNS_G3D_NULL_ASSERT(pResMdl); - - matCAnm = (NNSG3dResMatCAnm *)pResAnm; - mat = NNS_G3dGetMat(pResMdl); - pAnmObj->funcAnm = (void *)NNS_G3dFuncAnmMatNsBmaDefault; - pAnmObj->numMapData = pResMdl->info.numMat; - - MI_CpuClear16(&pAnmObj->mapData[0], sizeof(u16) * pAnmObj->numMapData); - - for (i = 0; i < matCAnm->dict.numEntry; ++i) { - const NNSG3dResName * name = NNS_G3dGetResNameByIdx(&matCAnm->dict, i); - int idx = NNS_G3dGetMatIdxByName(mat, name); - if (!(idx < 0)) { - pAnmObj->mapData[idx] = (u16)(i | NNS_G3D_ANMOBJ_MAPDATA_EXIST); - } - } -} - -void NNSi_G3dAnmCalcNsBma (NNSG3dMatAnmResult * pResult, const NNSG3dAnmObj * pAnmObj, u32 dataIdx) { - NNS_G3D_NULL_ASSERT(pResult); - NNS_G3D_NULL_ASSERT(pAnmObj); - { - const NNSG3dResMatCAnm * pMatAnm - = (const NNSG3dResMatCAnm *)pAnmObj->resAnm; - - GetMatColAnm_( - pMatAnm, - (u16)dataIdx, - (u32)FX_Whole(pAnmObj->frame), - pResult - ); - } -} - -#endif diff --git a/subprojects/NitroSystem/libraries/g3d/src/anm/nsbta.c b/subprojects/NitroSystem/libraries/g3d/src/anm/nsbta.c deleted file mode 100644 index 0293c2ab19..0000000000 --- a/subprojects/NitroSystem/libraries/g3d/src/anm/nsbta.c +++ /dev/null @@ -1,308 +0,0 @@ -#include -#include - -#ifndef NNS_G3D_NSBTA_DISABLE - -static fx32 GetTexSRTAnmVectorVal_ (const NNSG3dResTexSRTAnm * pTexAnm, u32 info, u32 data, u32 frame) { - u32 idx, idx_sub; - u32 last_interp; - const void * pDataHead; - - if (info & NNS_G3D_TEXSRTANM_ELEM_CONST) { - return (fx32)data; - } - - pDataHead = (const void *)((u8 *)pTexAnm + data); - - if (!(info & NNS_G3D_TEXSRTANM_ELEM_STEP_MASK)) { - idx = frame; - goto TEXSRT_VAL_NONINTERP; - } - - last_interp = (NNS_G3D_TEXSRTANM_ELEM_LAST_INTERP_MASK & info) >> - NNS_G3D_TEXSRTANM_ELEM_LAST_INTERP_SHIFT; - - if (info & NNS_G3D_TEXSRTANM_ELEM_STEP_2) { - if (frame & 1) { - if (frame > last_interp) { - idx = (last_interp >> 1) + 1; - goto TEXSRT_VAL_NONINTERP; - } else { - idx = frame >> 1; - goto TEXSRT_VAL_INTERP_2; - } - } else { - idx = frame >> 1; - goto TEXSRT_VAL_NONINTERP; - } - } else { - if (frame & 3) { - if (frame > last_interp) { - idx = (last_interp >> 2) + (frame & 3); - goto TEXSRT_VAL_NONINTERP; - } - - if (frame & 1) { - fx32 v, v_sub; - if (frame & 2) { - idx_sub = (frame >> 2); - idx = idx_sub + 1; - } else { - idx = (frame >> 2); - idx_sub = idx + 1; - } - - if (info & NNS_G3D_TEXSRTANM_ELEM_FX16) { - v = *((const fx16 *)pDataHead + idx); - v_sub = *((const fx16 *)pDataHead + idx_sub); - } else { - v = *((const fx32 *)pDataHead + idx); - v_sub = *((const fx32 *)pDataHead + idx_sub); - } - return (v + v + v + v_sub) >> 2; - } else { - idx = frame >> 2; - goto TEXSRT_VAL_INTERP_2; - } - } else { - idx = frame >> 2; - goto TEXSRT_VAL_NONINTERP; - } - } - NNS_G3D_ASSERT(0); - TEXSRT_VAL_NONINTERP: - if (info & NNS_G3D_TEXSRTANM_ELEM_FX16) { - return *((const fx16 *)pDataHead + idx); - } else { - return *((const fx32 *)pDataHead + idx); - } - TEXSRT_VAL_INTERP_2: - { - fx32 v0, v1; - if (info & NNS_G3D_TEXSRTANM_ELEM_FX16) { - v0 = *((const fx16 *)pDataHead + idx); - v1 = *((const fx16 *)pDataHead + idx + 1); - } else { - v0 = *((const fx32 *)pDataHead + idx); - v1 = *((const fx32 *)pDataHead + idx + 1); - } - return ((v0 + v1) >> 1); - } -} - -static u32 GetTexSRTAnmSinCosVal_ (const NNSG3dResTexSRTAnm * pTexAnm, u32 info, u32 data, u32 frame) { - u32 idx, idx_sub; - u32 last_interp; - const void * pDataHead; - - NNS_G3D_ASSERT(!(info & NNS_G3D_TEXSRTANM_ELEM_FX16)); - - if (info & NNS_G3D_TEXSRTANM_ELEM_CONST) { - return data; - } - - pDataHead = (const void *)((u8 *)pTexAnm + data); - - if (!(info & NNS_G3D_TEXSRTANM_ELEM_STEP_MASK)) { - idx = frame; - goto TEXSRT_SINCOS_NONINTERP; - } - - last_interp = (NNS_G3D_TEXSRTANM_ELEM_LAST_INTERP_MASK & info) >> - NNS_G3D_TEXSRTANM_ELEM_LAST_INTERP_SHIFT; - - if (info & NNS_G3D_TEXSRTANM_ELEM_STEP_2) { - if (frame & 1) { - if (frame > last_interp) { - idx = (last_interp >> 1) + 1; - goto TEXSRT_SINCOS_NONINTERP; - } else { - idx = frame >> 1; - goto TEXSRT_SINCOS_INTERP_2; - } - } else { - idx = frame >> 1; - goto TEXSRT_SINCOS_NONINTERP; - } - } else { - if (frame & 3) { - if (frame > last_interp) { - idx = (last_interp >> 2) + (frame & 3); - goto TEXSRT_SINCOS_NONINTERP; - } - - if (frame & 1) { - fx32 s, s_sub; - fx32 c, c_sub; - - if (frame & 2) { - idx_sub = (frame >> 2); - idx = idx_sub + 1; - } else { - idx = (frame >> 2); - idx_sub = idx + 1; - } - - s = *((const fx16 *)pDataHead + 2 * idx); - c = *((const fx16 *)pDataHead + 2 * idx + 1); - s_sub = *((const fx16 *)pDataHead + 2 * idx_sub); - c_sub = *((const fx16 *)pDataHead + 2 * idx_sub + 1); - - s = (s + s + s + s_sub) >> 2; - c = (c + c + c + c_sub) >> 2; - return (u32)((s & 0xffff) | (c << 16)); - } else { - idx = frame >> 2; - goto TEXSRT_SINCOS_INTERP_2; - } - } else { - idx = frame >> 2; - goto TEXSRT_SINCOS_NONINTERP; - } - } - NNS_G3D_ASSERT(0); - TEXSRT_SINCOS_NONINTERP: - return *((const u32 *)pDataHead + idx); - TEXSRT_SINCOS_INTERP_2: - { - fx32 s0, s1; - fx32 c0, c1; - s0 = *((const fx16 *)pDataHead + 2 * idx); - c0 = *((const fx16 *)pDataHead + 2 * idx + 1); - - s1 = *((const fx16 *)pDataHead + 2 * idx + 2); - c1 = *((const fx16 *)pDataHead + 2 * idx + 3); - - return (u32)((((s0 + s1) >> 1) & 0xffff) | (((c0 + c1) >> 1) << 16)); - } -} - -static void GetTexSRTAnm_ (const NNSG3dResTexSRTAnm * pTexAnm, u16 idx, u32 frame, NNSG3dMatAnmResult * pResult) { - NNS_G3D_ASSERT(idx < pTexAnm->dict.numEntry); - NNS_G3D_ASSERT(frame < pTexAnm->numFrame); - NNS_G3D_ASSERT((pTexAnm->anmHeader.category0 == 'M') && (pTexAnm->anmHeader.category1 == 'TA')); - - { - const NNSG3dResDictTexSRTAnmData * pAnmData = - (const NNSG3dResDictTexSRTAnmData *)NNS_G3dGetResDataByIdx(&pTexAnm->dict, idx); - NNSG3dMatAnmResultFlag flag = pResult->flag; - - { - fx32 transS, transT; - - transS = GetTexSRTAnmVectorVal_( - pTexAnm, - pAnmData->transS, - pAnmData->transSEx, - frame - ); - transT = GetTexSRTAnmVectorVal_( - pTexAnm, - pAnmData->transT, - pAnmData->transTEx, - frame - ); - - if (transS == 0 && transT == 0) { - flag |= NNS_G3D_MATANM_RESULTFLAG_TEXMTX_TRANSZERO; - } else { - flag &= ~NNS_G3D_MATANM_RESULTFLAG_TEXMTX_TRANSZERO; - pResult->transS = transS; - pResult->transT = transT; - } - } - - { - u32 data = GetTexSRTAnmSinCosVal_( - pTexAnm, - pAnmData->rot, - pAnmData->rotEx, - frame - ); - - if (data == ((FX32_ONE << 16) | 0)) { - flag |= NNS_G3D_MATANM_RESULTFLAG_TEXMTX_ROTZERO; - } else { - pResult->sinR = (fx16)(data & 0x0000FFFF); - pResult->cosR = (fx16)(data >> 16); - flag &= ~NNS_G3D_MATANM_RESULTFLAG_TEXMTX_ROTZERO; - } - } - - { - fx32 scaleS, scaleT; - - scaleS = GetTexSRTAnmVectorVal_( - pTexAnm, - pAnmData->scaleS, - pAnmData->scaleSEx, - frame - ); - scaleT = GetTexSRTAnmVectorVal_( - pTexAnm, - pAnmData->scaleT, - pAnmData->scaleTEx, - frame - ); - - if (scaleS == FX32_ONE && scaleT == FX32_ONE) { - flag |= NNS_G3D_MATANM_RESULTFLAG_TEXMTX_SCALEONE; - } else { - flag &= ~NNS_G3D_MATANM_RESULTFLAG_TEXMTX_SCALEONE; - pResult->scaleS = scaleS; - pResult->scaleT = scaleT; - } - } - - pResult->flag = flag; - } -} - -void NNSi_G3dAnmObjInitNsBta (NNSG3dAnmObj * pAnmObj, void * pResAnm, const NNSG3dResMdl * pResMdl) { - u32 i; - NNSG3dResTexSRTAnm * srtAnm; - const NNSG3dResMat * mat; - - NNS_G3D_NULL_ASSERT(pAnmObj); - NNS_G3D_NULL_ASSERT(pResAnm); - NNS_G3D_NULL_ASSERT(pResMdl); - - srtAnm = (NNSG3dResTexSRTAnm *)pResAnm; - mat = NNS_G3dGetMat(pResMdl); - pAnmObj->funcAnm = (void *)NNS_G3dFuncAnmMatNsBtaDefault; - pAnmObj->numMapData = pResMdl->info.numMat; - - MI_CpuClear16(&pAnmObj->mapData[0], sizeof(u16) * pAnmObj->numMapData); - - for (i = 0; i < srtAnm->dict.numEntry; ++i) { - const NNSG3dResName * name = NNS_G3dGetResNameByIdx(&srtAnm->dict, i); - int idx = NNS_G3dGetMatIdxByName(mat, name); - if (!(idx < 0)) { - pAnmObj->mapData[idx] = (u16)(i | NNS_G3D_ANMOBJ_MAPDATA_EXIST); - } - } -} - -void NNSi_G3dAnmCalcNsBta (NNSG3dMatAnmResult * pResult, const NNSG3dAnmObj * pAnmObj, u32 dataIdx) { - NNS_G3D_NULL_ASSERT(pResult); - NNS_G3D_NULL_ASSERT(pAnmObj); - - { - const NNSG3dResTexSRTAnm * pTexAnm - = (const NNSG3dResTexSRTAnm *)pAnmObj->resAnm; - - GetTexSRTAnm_( - pTexAnm, - (u16)dataIdx, - (u32)FX_Whole(pAnmObj->frame), - pResult - ); - - pResult->prmTexImage &= ~REG_G3_TEXIMAGE_PARAM_TGEN_MASK; - pResult->prmTexImage |= GX_TEXGEN_TEXCOORD << REG_G3_TEXIMAGE_PARAM_TGEN_SHIFT; - - pResult->flag |= NNS_G3D_MATANM_RESULTFLAG_TEXMTX_SET; - } -} - -#endif diff --git a/subprojects/NitroSystem/libraries/g3d/src/anm/nsbtp.c b/subprojects/NitroSystem/libraries/g3d/src/anm/nsbtp.c deleted file mode 100644 index 82fb1be2b5..0000000000 --- a/subprojects/NitroSystem/libraries/g3d/src/anm/nsbtp.c +++ /dev/null @@ -1,133 +0,0 @@ -#include -#include - -#ifndef NNS_G3D_NSBTP_DISABLE - -void NNSi_G3dAnmObjInitNsBtp (NNSG3dAnmObj * pAnmObj, void * pResAnm, const NNSG3dResMdl * pResMdl) { - u32 i; - NNSG3dResTexPatAnm * tpAnm = (NNSG3dResTexPatAnm *)pResAnm; - const NNSG3dResMat * mat = NNS_G3dGetMat(pResMdl); - - NNS_G3D_NULL_ASSERT(pAnmObj->resTex); - - pAnmObj->funcAnm = (void *)NNS_G3dFuncAnmMatNsBtpDefault; - pAnmObj->numMapData = pResMdl->info.numMat; - pAnmObj->resAnm = tpAnm; - - MI_CpuClear16(&pAnmObj->mapData[0], sizeof(u16) * pAnmObj->numMapData); - - for (i = 0; i < tpAnm->dict.numEntry; ++i) { - const NNSG3dResName * name = NNS_G3dGetResNameByIdx(&tpAnm->dict, i); - int idx = NNS_G3dGetMatIdxByName(mat, name); - if (!(idx < 0)) { - pAnmObj->mapData[idx] = (u16)(i | NNS_G3D_ANMOBJ_MAPDATA_EXIST); - } - } -} - -static void SetTexParamaters_ (const NNSG3dResTex * pTex, const NNSG3dResName * pTexName, NNSG3dMatAnmResult * pResult) { - NNS_G3D_NULL_ASSERT(pTex); - NNS_G3D_NULL_ASSERT(pTexName); - NNS_G3D_NULL_ASSERT(pResult); - NNS_G3D_ASSERTMSG( - (pTex->texInfo.vramKey != 0 || pTex->texInfo.sizeTex == 0), - "No texture key assigned" - ); - NNS_G3D_ASSERTMSG( - (pTex->tex4x4Info.vramKey != 0 || pTex->tex4x4Info.sizeTex == 0), - "No texture(4x4) key assigned" - ); - { - const NNSG3dResDictTexData * pData = NNS_G3dGetTexDataByName(pTex, pTexName); - NNS_G3D_NULL_ASSERT(pData); - - { - const u32 vramOffset = ((pData->texImageParam & REG_G3_TEXIMAGE_PARAM_TEXFMT_MASK) != - (GX_TEXFMT_COMP4x4 << REG_G3_TEXIMAGE_PARAM_TEXFMT_SHIFT)) ? - NNS_GfdGetTexKeyAddr(pTex->texInfo.vramKey) >> NNS_GFD_TEXKEY_ADDR_SHIFT : - NNS_GfdGetTexKeyAddr(pTex->tex4x4Info.vramKey) >> NNS_GFD_TEXKEY_ADDR_SHIFT; - - pResult->prmTexImage &= REG_G3_TEXIMAGE_PARAM_TGEN_MASK | - REG_G3_TEXIMAGE_PARAM_FT_MASK | REG_G3_TEXIMAGE_PARAM_FS_MASK | - REG_G3_TEXIMAGE_PARAM_RT_MASK | REG_G3_TEXIMAGE_PARAM_RS_MASK; - pResult->prmTexImage |= pData->texImageParam + vramOffset; - - pResult->origWidth = (u16)((pData->extraParam & NNS_G3D_TEXIMAGE_PARAMEX_ORIGW_MASK) >> - NNS_G3D_TEXIMAGE_PARAMEX_ORIGW_SHIFT); - pResult->origHeight = (u16)((pData->extraParam & NNS_G3D_TEXIMAGE_PARAMEX_ORIGH_MASK) >> - NNS_G3D_TEXIMAGE_PARAMEX_ORIGH_SHIFT); - - { - const s32 w = (s32)(((pData->extraParam) & NNS_G3D_TEXIMAGE_PARAMEX_ORIGW_MASK) >> NNS_G3D_TEXIMAGE_PARAMEX_ORIGW_SHIFT); - const s32 h = (s32)(((pData->extraParam) & NNS_G3D_TEXIMAGE_PARAMEX_ORIGH_MASK) >> NNS_G3D_TEXIMAGE_PARAMEX_ORIGH_SHIFT); - - pResult->magW = (w != pResult->origWidth) ? - FX_Div(w << FX32_SHIFT, pResult->origWidth << FX32_SHIFT) : - FX32_ONE; - pResult->magH = (h != pResult->origHeight) ? - FX_Div(h << FX32_SHIFT, pResult->origHeight << FX32_SHIFT) : - FX32_ONE; - } - } - } -} - -static void SetPlttParamaters_ (const NNSG3dResTex * pTex, const NNSG3dResName * pPlttName, NNSG3dMatAnmResult * pResult) { - NNS_G3D_NULL_ASSERT(pTex); - NNS_G3D_NULL_ASSERT(pPlttName); - NNS_G3D_NULL_ASSERT(pResult); - NNS_G3D_ASSERTMSG( - (pTex->plttInfo.vramKey != 0 || pTex->plttInfo.sizePltt == 0), - "No palette key assigned" - ); - - { - const NNSG3dResDictPlttData * pPlttData = NNS_G3dGetPlttDataByName(pTex, pPlttName); - u16 plttBase = pPlttData->offset; - u16 vramOffset = (u16)(NNS_GfdGetTexKeyAddr(pTex->plttInfo.vramKey) >> NNS_GFD_TEXKEY_ADDR_SHIFT); - - NNS_G3D_NULL_ASSERT(pPlttData); - - if (!(pPlttData->flag & 1)) { - plttBase >>= 1; - vramOffset >>= 1; - } - - pResult->prmTexPltt = (u32)(plttBase + vramOffset); - } -} - -void NNSi_G3dAnmCalcNsBtp (NNSG3dMatAnmResult * pResult, const NNSG3dAnmObj * pAnmObj, u32 dataIdx) { - NNS_G3D_NULL_ASSERT(pResult); - NNS_G3D_NULL_ASSERT(pAnmObj); - NNS_G3D_NULL_ASSERT(pAnmObj->resTex); - - { - const NNSG3dResTexPatAnm * pPatAnm - = (const NNSG3dResTexPatAnm *)pAnmObj->resAnm; - - const NNSG3dResTexPatAnmFV * pTexFV - = NNSi_G3dGetTexPatAnmFV( - pPatAnm, - (u16)dataIdx, - (u16)FX_Whole(pAnmObj->frame) - ); - NNS_G3D_NULL_ASSERT(pTexFV); - - SetTexParamaters_( - pAnmObj->resTex, - NNSi_G3dGetTexPatAnmTexNameByIdx(pPatAnm, pTexFV->idTex), - pResult - ); - - if (pTexFV->idPltt != 255) { - SetPlttParamaters_( - pAnmObj->resTex, - NNSi_G3dGetTexPatAnmPlttNameByIdx(pPatAnm, pTexFV->idPltt), - pResult - ); - } - } -} - -#endif diff --git a/subprojects/NitroSystem/libraries/g3d/src/anm/nsbva.c b/subprojects/NitroSystem/libraries/g3d/src/anm/nsbva.c deleted file mode 100644 index 087951bb1e..0000000000 --- a/subprojects/NitroSystem/libraries/g3d/src/anm/nsbva.c +++ /dev/null @@ -1,39 +0,0 @@ -#include -#include - -#ifndef NNS_G3D_NSBVA_DISABLE - -void NNSi_G3dAnmObjInitNsBva (NNSG3dAnmObj * pAnmObj, void * pResAnm, const NNSG3dResMdl * pResMdl) { - u32 i; - NNSG3dResVisAnm * visAnm; - const NNSG3dResNodeInfo * jnt; - - visAnm = (NNSG3dResVisAnm *)pResAnm; - jnt = NNS_G3dGetNodeInfo(pResMdl); - pAnmObj->funcAnm = (void *)NNS_G3dFuncAnmVisNsBvaDefault; - pAnmObj->numMapData = pResMdl->info.numNode; - - pAnmObj->resAnm = (void *)visAnm; - - for (i = 0; i < pAnmObj->numMapData; ++i) { - pAnmObj->mapData[i] = (u16)(i | NNS_G3D_ANMOBJ_MAPDATA_EXIST); - } -} - -void NNSi_G3dAnmCalcNsBva (NNSG3dVisAnmResult * pResult, const NNSG3dAnmObj * pAnmObj, u32 dataIdx) { - NNS_G3D_NULL_ASSERT(pResult); - NNS_G3D_NULL_ASSERT(pAnmObj); - NNS_G3D_NULL_ASSERT(pAnmObj->resAnm); - - { - u32 frame = (u32)FX_Whole(pAnmObj->frame); - const NNSG3dResVisAnm * pVisAnm = pAnmObj->resAnm; - u32 pos = frame * pVisAnm->numNode + dataIdx; - u32 n = pos >> 5; - u32 mask = 1U << (pos & 0x1f); - - pResult->isVisible = (BOOL)(pVisAnm->visData[n] & mask); - } -} - -#endif diff --git a/subprojects/NitroSystem/libraries/g3d/src/binres/res_print_internal.h b/subprojects/NitroSystem/libraries/g3d/src/binres/res_print_internal.h deleted file mode 100644 index 478c50cf83..0000000000 --- a/subprojects/NitroSystem/libraries/g3d/src/binres/res_print_internal.h +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef NNSG3D_BINRES_RES_PRINT_INTERNAL_H_ -#define NNSG3D_BINRES_RES_PRINT_INTERNAL_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef NNS_FROM_TOOL - -#include -#include -#define RES_PRINTF printf -#define FX_MUL_ CvtrFX_Mul -#else - -#include -#define RES_PRINTF OS_Printf -#define FX_MUL_ FX_Mul -#endif - -#include - -#if defined(SDK_DEBUG) || defined(NNS_FROM_TOOL) - -NNS_RES_PRINT void tabPlus_ (void) NNS_RES_PRINT_END -NNS_RES_PRINT void tabMinus_ (void) NNS_RES_PRINT_END -NNS_RES_PRINT void tabPrint_ (void) NNS_RES_PRINT_END -NNS_RES_PRINT void printFx32_ (fx32 v) NNS_RES_PRINT_END -NNS_RES_PRINT f32 fx32Tof32_ (fx32 v) NNS_RES_PRINT_END -NNS_RES_PRINT void chkDict_ (const NNSG3dResDict * dict, - const NNSG3dResName * name, - u32 idx) NNS_RES_PRINT_END - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroSystem/libraries/g3d/src/binres/res_struct_accessor.c b/subprojects/NitroSystem/libraries/g3d/src/binres/res_struct_accessor.c deleted file mode 100644 index 6ebeaf1c47..0000000000 --- a/subprojects/NitroSystem/libraries/g3d/src/binres/res_struct_accessor.c +++ /dev/null @@ -1,153 +0,0 @@ -#include - -void * NNS_G3dGetResDataByName (const NNSG3dResDict * dict, const NNSG3dResName * name) { - NNS_G3D_NULL_ASSERT(dict); - - if (!name) { - return NULL; - } - - if (dict->numEntry < 16) { - u32 idx; - const NNSG3dResName * n; - u32 v0 = name->val[0]; - u32 v1 = name->val[1]; - u32 v2 = name->val[2]; - u32 v3 = name->val[3]; - - for (idx = 0; idx < dict->numEntry; ++idx) { - n = NNS_G3dGetResNameByIdx(dict, idx); - if (n->val[0] == v0 && - n->val[1] == v1 && - n->val[2] == v2 && - n->val[3] == v3) { - return NNS_G3dGetResDataByIdx(dict, idx); - } - } - } else { - const NNSG3dResName * n; - const NNSG3dResDictTreeNode * treeBase; - const NNSG3dResDictTreeNode * p, * x; - - treeBase = &dict->node[0]; - p = treeBase; - - if (p->idxLeft != 0) { - x = treeBase + p->idxLeft; - while (p->refBit > x->refBit) { - p = x; - - x = treeBase + *(&x->idxLeft + - ((name->val[x->refBit >> 5] >> (x->refBit & 31)) & 1)); - } - - n = NNS_G3dGetResNameByIdx(dict, x->idxEntry); - - if (n->val[0] == name->val[0] && - n->val[1] == name->val[1] && - n->val[2] == name->val[2] && - n->val[3] == name->val[3]) { - return NNS_G3dGetResDataByIdx(dict, x->idxEntry); - } - } - } - return NULL; -} - -int NNS_G3dGetResDictIdxByName (const NNSG3dResDict * dict, const NNSG3dResName * name) { - NNS_G3D_NULL_ASSERT(dict); - - if (!name) { - return -1; - } - - if (dict->numEntry < 16) { - u32 idx; - const NNSG3dResName * n; - u32 v0 = name->val[0]; - u32 v1 = name->val[1]; - u32 v2 = name->val[2]; - u32 v3 = name->val[3]; - - for (idx = 0; idx < dict->numEntry; ++idx) { - n = NNS_G3dGetResNameByIdx(dict, idx); - if (n->val[0] == v0 && - n->val[1] == v1 && - n->val[2] == v2 && - n->val[3] == v3) { - return (int)idx; - } - } - } else { - const NNSG3dResName * n; - const NNSG3dResDictTreeNode * treeBase; - const NNSG3dResDictTreeNode * p, * x; - - treeBase = &dict->node[0]; - - p = treeBase; - - if (p->idxLeft != 0) { - x = treeBase + p->idxLeft; - while (p->refBit > x->refBit) { - p = x; - - x = treeBase + *(&x->idxLeft + - ((name->val[x->refBit >> 5] >> (x->refBit & 31)) & 1)); - } - - n = NNS_G3dGetResNameByIdx(dict, x->idxEntry); - - if (n->val[0] == name->val[0] && - n->val[1] == name->val[1] && - n->val[2] == name->val[2] && - n->val[3] == name->val[3]) { - return x->idxEntry; - } - } - } - return -1; -} - -NNSG3dResDataBlockHeader * NNS_G3dGetDataBlockHeaderByIdx (const NNSG3dResFileHeader * header, u32 idx) { - u32 * blks; - NNS_G3D_NULL_ASSERT(header); - - if (idx < header->dataBlocks) { - blks = (u32 *)((u8 *)header + header->headerSize); - return (NNSG3dResDataBlockHeader *)((u8 *)header + blks[idx]); - } else { - return NULL; - } -} - -NNSG3dResMdlSet * NNS_G3dGetMdlSet (const NNSG3dResFileHeader * header) { - u32 * blks; - NNS_G3D_NULL_ASSERT(header); - NNS_G3D_ASSERT(header->sigVal == NNS_G3D_SIGNATURE_NSBMD); - NNS_G3D_ASSERTMSG(header->version == (2 | (0 << 8)), ".nsbmd version is different. convert again."); - - blks = (u32 *)((u8 *)header + header->headerSize); - return (NNSG3dResMdlSet *)((u8 *)header + blks[0]); -} - -NNSG3dResTex * NNS_G3dGetTex (const NNSG3dResFileHeader * header) { - u32 * blks; - NNS_G3D_NULL_ASSERT(header); - NNS_G3D_ASSERT( - header->sigVal == NNS_G3D_SIGNATURE_NSBMD || - header->sigVal == NNS_G3D_SIGNATURE_NSBTX - ); - - blks = (u32 *)((u8 *)header + header->headerSize); - - if (header->dataBlocks == 1) { - if (header->sigVal == NNS_G3D_SIGNATURE_NSBTX) { - return (NNSG3dResTex *)((u8 *)header + blks[0]); - } else { - return NULL; - } - } else { - return (NNSG3dResTex *)((u8 *)header + blks[1]); - } -} diff --git a/subprojects/NitroSystem/libraries/g3d/src/binres/res_struct_accessor_anm.c b/subprojects/NitroSystem/libraries/g3d/src/binres/res_struct_accessor_anm.c deleted file mode 100644 index 0020bb4ae5..0000000000 --- a/subprojects/NitroSystem/libraries/g3d/src/binres/res_struct_accessor_anm.c +++ /dev/null @@ -1,334 +0,0 @@ - -#include - -#include "res_print_internal.h" - -#define NNS_G3D_SIZE_NNSG3DRESJNTANM sizeof(NNSG3dResJntAnm) -#define NNS_G3D_SIZE_ROTMTX3 (3 * sizeof(u16)) -#define NNS_G3D_SIZE_ROTMTX5 (5 * sizeof(u16)) - -BOOL NNSi_G3dIsValidAnmRes (const void * pRes) { - NNS_G3D_NULL_ASSERT(pRes); - - if (pRes) { - const NNSG3dResAnmCommon * p = (const NNSG3dResAnmCommon *)pRes; - - if (p->anmHeader.category0 == 'M' || - p->anmHeader.category0 == 'J' || - p->anmHeader.category0 == 'V') { - if (p->anmHeader.category1 == 'CA' || - p->anmHeader.category1 == 'VA' || - p->anmHeader.category1 == 'MA' || - p->anmHeader.category1 == 'TP' || - p->anmHeader.category1 == 'TA') { - return TRUE; - } - } - } - return FALSE; -} - -void * NNS_G3dGetAnmByIdx (const void * pRes, u32 idx) { - NNS_G3D_NULL_ASSERT(pRes); - - if (pRes) { - const NNSG3dResFileHeader * header; - const NNSG3dResAnmSet * anmSet; - const NNSG3dResDictAnmSetData * anmSetData; - u32 * blks; - - header = (const NNSG3dResFileHeader *)pRes; - blks = (u32 *)((u8 *)header + header->headerSize); - - anmSet = (const NNSG3dResAnmSet *)((u8 *)header + blks[0]); - anmSetData = (const NNSG3dResDictAnmSetData *)NNS_G3dGetResDataByIdx(&anmSet->dict, idx); - - if (anmSetData) { - return (void *)((u8 *)anmSet + anmSetData->offset); - } - } - - return NULL; -} - -void * NNS_G3dGetAnmByName (const void * pRes, const NNSG3dResName * pName) { - NNS_G3D_NULL_ASSERT(pRes); - - if (pRes) { - const NNSG3dResFileHeader * header; - const NNSG3dResAnmSet * anmSet; - const NNSG3dResDictAnmSetData * anmSetData; - u32 * blks; - header = (const NNSG3dResFileHeader *)pRes; - blks = (u32 *)((u8 *)header + header->headerSize); - - anmSet = (const NNSG3dResAnmSet *)((u8 *)header + blks[0]); - anmSetData = (const NNSG3dResDictAnmSetData *)NNS_G3dGetResDataByName(&anmSet->dict, pName); - - if (anmSetData) { - return (void *)((u8 *)anmSet + anmSetData->offset); - } - } - - return NULL; -} - -typedef fx32 (* FrameIdxValueAccessFuncPtr)(const void * pDataHead, u32 frameIdx, u32 step, u32 offset); - -const void * NNSi_G3dGetBinaryBlockFromFile (const u8 * pFileHead, u32 fileSignature, u32 blockSignature) { - NNS_G3D_NULL_ASSERT(pFileHead); - if (pFileHead) { - u32 i = 0; - const NNSG3dResFileHeader * pHeader - = (const NNSG3dResFileHeader *)&pFileHead[0]; - - if (pHeader->sigVal == fileSignature) { - for ( i = 0 ; i < pHeader->dataBlocks; i++ ) { - const NNSG3dResDataBlockHeader * blk - = NNS_G3dGetDataBlockHeaderByIdx(pHeader, i); - NNS_G3D_NULL_ASSERT(blk); - - if (blk->kind == blockSignature) { - return (const void *)blk; - } - } - } - } - - return NULL; -} - -static BOOL IsValidAnimHeader (const NNSG3dResAnmHeader * pAnmHeader, u8 cat0, u16 cat1) { - NNS_G3D_NULL_ASSERT(pAnmHeader); - return (BOOL)(pAnmHeader && - pAnmHeader->category0 == cat0 && - pAnmHeader->category1 == cat1); -} - -const NNSG3dResVisAnm * NNS_G3dGetVisAnmByIdx (const NNSG3dResVisAnmSet * pAnmSet, u8 idx) { - NNS_G3D_NULL_ASSERT(pAnmSet); - NNS_G3D_ASSERT(idx < pAnmSet->dict.numEntry); - - if (pAnmSet) { - const NNSG3dResDictVisAnmSetData * pSetData = - (const NNSG3dResDictVisAnmSetData *)NNS_G3dGetResDataByIdx(&pAnmSet->dict, idx); - - if (pSetData) { - return (const NNSG3dResVisAnm *)((u8 *)pAnmSet + pSetData->offset); - } - } - - return NULL; -} - -const NNSG3dResVisAnmSet * NNS_G3dGetVisAnmSet (const u8 * pFileHead) { - const void * pVisBlk - = NNSi_G3dGetBinaryBlockFromFile( - pFileHead, - NNS_G3D_SIGNATURE_NSBVA, - NNS_G3D_DATABLK_VIS_ANM - ); - NNS_G3D_NULL_ASSERT(pVisBlk); - return (const NNSG3dResVisAnmSet *)pVisBlk; -} - -const NNSG3dResName * NNSi_G3dGetTexPatAnmTexNameByIdx (const NNSG3dResTexPatAnm * pPatAnm, u8 texIdx) { - NNS_G3D_NULL_ASSERT(pPatAnm); - NNS_G3D_ASSERT(texIdx < pPatAnm->numTex); - - if (pPatAnm && texIdx < pPatAnm->numTex) { - const NNSG3dResName * pNameArray - = (const NNSG3dResName *)((const u8 *)pPatAnm + pPatAnm->ofsTexName); - - return &pNameArray[texIdx]; - } - - return NULL; -} - -const NNSG3dResName * NNSi_G3dGetTexPatAnmPlttNameByIdx (const NNSG3dResTexPatAnm * pPatAnm, u8 plttIdx) { - NNS_G3D_NULL_ASSERT(pPatAnm); - NNS_G3D_ASSERT(plttIdx < pPatAnm->numPltt); - - if (pPatAnm && plttIdx < pPatAnm->numPltt) { - const NNSG3dResName * pNameArray - = (const NNSG3dResName *)((const u8 *)pPatAnm + pPatAnm->ofsPlttName); - - return &pNameArray[plttIdx]; - } - - return NULL; -} - -const NNSG3dResTexPatAnmFV * NNSi_G3dGetTexPatAnmFVByFVIndex (const NNSG3dResTexPatAnm * pPatAnm, u32 idx, u32 fvIdx) { - NNS_G3D_NULL_ASSERT(pPatAnm); - NNS_G3D_ASSERT(IsValidAnimHeader(&pPatAnm->anmHeader, 'M', 'TP')); - - { - const NNSG3dResDictTexPatAnmData * pAnmData = - NNSi_G3dGetTexPatAnmDataByIdx(pPatAnm, idx); - - NNS_G3D_ASSERT(fvIdx < pAnmData->numFV); - { - const NNSG3dResTexPatAnmFV * pfvArray - = (const NNSG3dResTexPatAnmFV *)((u8 *)pPatAnm + pAnmData->offset); - - return &pfvArray[fvIdx]; - } - } -} - -const NNSG3dResTexPatAnmFV * NNSi_G3dGetTexPatAnmFV (const NNSG3dResTexPatAnm * pPatAnm, u32 idx, u32 frame) { - NNS_G3D_ASSERT(IsValidAnimHeader(&pPatAnm->anmHeader, 'M', 'TP')); - { - const NNSG3dResDictTexPatAnmData * pAnmData = - NNSi_G3dGetTexPatAnmDataByIdx(pPatAnm, idx); - { - const NNSG3dResTexPatAnmFV * pfvArray - = (const NNSG3dResTexPatAnmFV *)((u8 *)pPatAnm + pAnmData->offset); - - const u32 fvIdx = (u32)((fx32)pAnmData->ratioDataFrame * frame >> FX32_SHIFT); - NNS_G3D_ASSERT(fvIdx < pAnmData->numFV); - - { - u32 realFvIdx = fvIdx; - - while (realFvIdx > 0 && pfvArray[realFvIdx].idxFrame >= frame) { - realFvIdx--; - } - - while (realFvIdx + 1 < pAnmData->numFV && pfvArray[realFvIdx + 1].idxFrame <= frame) { - realFvIdx++; - } - NNS_G3D_ASSERT(realFvIdx < pAnmData->numFV); - - return &pfvArray[realFvIdx]; - } - } - } -} - -const NNSG3dResDictTexPatAnmData * NNSi_G3dGetTexPatAnmDataByIdx (const NNSG3dResTexPatAnm * pPatAnm, u32 idx) { - NNS_G3D_ASSERT(IsValidAnimHeader(&pPatAnm->anmHeader, 'M', 'TP')); - return (const NNSG3dResDictTexPatAnmData *)NNS_G3dGetResDataByIdx(&pPatAnm->dict, idx); -} - -const NNSG3dResTexPatAnm * NNS_G3dGetTexPatAnmByIdx (const NNSG3dResTexPatAnmSet * pAnmSet, u8 idx) { - NNS_G3D_NULL_ASSERT(pAnmSet); - NNS_G3D_ASSERT(idx < pAnmSet->dict.numEntry); - - if (pAnmSet) { - const NNSG3dResDictTexPatAnmSetData * pSetData = - (const NNSG3dResDictTexPatAnmSetData *)NNS_G3dGetResDataByIdx(&pAnmSet->dict, idx); - - if (pSetData) { - return (const NNSG3dResTexPatAnm *)((u8 *)pAnmSet + pSetData->offset); - } - } - - return NULL; -} - -const NNSG3dResTexPatAnmSet * NNS_G3dGetTexPatAnmSet (const u8 * pFileHead) { - const void * pVisBlk - = NNSi_G3dGetBinaryBlockFromFile( - pFileHead, - NNS_G3D_SIGNATURE_NSBTP, - NNS_G3D_DATABLK_TEXPAT_ANM - ); - NNS_G3D_NULL_ASSERT(pVisBlk); - return (const NNSG3dResTexPatAnmSet *)pVisBlk; -} - -const NNSG3dResTexSRTAnm * NNS_G3dGetTexSRTAnmByIdx (const NNSG3dResTexSRTAnmSet * pTexSRTSet, u8 idx) { - NNS_G3D_NULL_ASSERT(pTexSRTSet); - NNS_G3D_ASSERT(idx < pTexSRTSet->dict.numEntry); - - if (pTexSRTSet) { - const NNSG3dResDictTexSRTAnmSetData * pSetData = - (const NNSG3dResDictTexSRTAnmSetData *)NNS_G3dGetResDataByIdx(&pTexSRTSet->dict, idx); - - if (pSetData) { - return (const NNSG3dResTexSRTAnm *)((u8 *)pTexSRTSet + pSetData->offset); - } - } - - return NULL; -} - -const NNSG3dResTexSRTAnmSet * NNS_G3dGetTexSRTAnmSet (const u8 * pFileHead) { - const void * pVisBlk - = NNSi_G3dGetBinaryBlockFromFile( - pFileHead, - NNS_G3D_SIGNATURE_NSBTA, - NNS_G3D_DATABLK_TEXSRT_ANM - ); - NNS_G3D_NULL_ASSERT(pVisBlk); - return (const NNSG3dResTexSRTAnmSet *)pVisBlk; -} - -const NNSG3dResMatCAnm * NNS_G3dGetMatCAnmByIdx (const NNSG3dResMatCAnmSet * pAnmSet, u8 idx) { - NNS_G3D_NULL_ASSERT(pAnmSet); - NNS_G3D_ASSERT(idx < pAnmSet->dict.numEntry); - - if (pAnmSet) { - const NNSG3dResDictMatCAnmSetData * pSetData = - (const NNSG3dResDictMatCAnmSetData *)NNS_G3dGetResDataByIdx(&pAnmSet->dict, idx); - - if (pSetData) { - return (const NNSG3dResMatCAnm *)((u8 *)pAnmSet + pSetData->offset); - } - } - return NULL; -} - -const NNSG3dResMatCAnmSet * NNS_G3dGetMatCAnmSet (const u8 * pFileHead) { - const void * pVisBlk - = NNSi_G3dGetBinaryBlockFromFile( - pFileHead, - NNS_G3D_SIGNATURE_NSBMA, - NNS_G3D_DATABLK_MATC_ANM - ); - NNS_G3D_NULL_ASSERT(pVisBlk); - return (const NNSG3dResMatCAnmSet *)pVisBlk; -} - -const NNSG3dResJntAnmSRTTag * NNS_G3dGetJntAnmSRTTag (const NNSG3dResJntAnm * pJntAnm, int nodeIdx) { - NNS_G3D_NULL_ASSERT(pJntAnm); - NNS_G3D_ASSERT(nodeIdx < pJntAnm->numNode); - { - const u16 * pTagOffset - = (const u16 *)((u8 *)pJntAnm + NNS_G3D_SIZE_NNSG3DRESJNTANM); - const u16 tagOffset - = pTagOffset[nodeIdx]; - - return (const NNSG3dResJntAnmSRTTag *)((u8 *)pJntAnm + tagOffset); - } -} - -const NNSG3dResJntAnm * NNS_G3dGetJntAnmByIdx (const NNSG3dResJntAnmSet * pJntAnmSet, int idx) { - NNS_G3D_NULL_ASSERT(pJntAnmSet); - NNS_G3D_ASSERT(idx < pJntAnmSet->dict.numEntry); - - if (pJntAnmSet) { - const NNSG3dResDictJntAnmSetData * pJntAnmData = - (const NNSG3dResDictJntAnmSetData *)NNS_G3dGetResDataByIdx(&pJntAnmSet->dict, (u32)idx); - - if (pJntAnmData) { - return (const NNSG3dResJntAnm *)((u8 *)pJntAnmSet + pJntAnmData->offset); - } - } - - return NULL; -} - -const NNSG3dResJntAnmSet * NNS_G3dGetJntAnmSet (const u8 * pFileHead) { - const void * pVisBlk - = NNSi_G3dGetBinaryBlockFromFile( - pFileHead, - NNS_G3D_SIGNATURE_NSBCA, - NNS_G3D_DATABLK_JNT_ANM - ); - NNS_G3D_NULL_ASSERT(pVisBlk); - return (const NNSG3dResJntAnmSet *)pVisBlk; -} diff --git a/subprojects/NitroSystem/libraries/g3d/src/cgtool.c b/subprojects/NitroSystem/libraries/g3d/src/cgtool.c deleted file mode 100644 index 40d2bf1f12..0000000000 --- a/subprojects/NitroSystem/libraries/g3d/src/cgtool.c +++ /dev/null @@ -1,57 +0,0 @@ -#include -#include -#include -#include -#include -#include - -NNSG3dGetJointScale NNS_G3dGetJointScale_FuncArray[NNS_G3D_FUNC_SENDJOINTSRT_MAX] = { - &NNSi_G3dGetJointScaleBasic, -#ifndef NNS_G3D_MAYA_DISABLE - &NNSi_G3dGetJointScaleMaya, -#else - NULL, -#endif -#ifndef NNS_G3D_SI3D_DISABLE - &NNSi_G3dGetJointScaleSi3d -#else - NULL -#endif -}; - -NNSG3dSendJointSRT NNS_G3dSendJointSRT_FuncArray[NNS_G3D_FUNC_SENDJOINTSRT_MAX] = { - &NNSi_G3dSendJointSRTBasic, -#ifndef NNS_G3D_MAYA_DISABLE - &NNSi_G3dSendJointSRTMaya, -#else - NULL, -#endif -#ifndef NNS_G3D_SI3D_DISABLE - &NNSi_G3dSendJointSRTSi3d -#else - NULL -#endif -}; - -NNSG3dSendTexSRT NNS_G3dSendTexSRT_FuncArray[NNS_G3D_FUNC_SENDTEXSRT_MAX] = { -#ifndef NNS_G3D_MAYA_DISABLE - &NNSi_G3dSendTexSRTMaya, -#else - NULL, -#endif -#ifndef NNS_G3D_SI3D_DISABLE - &NNSi_G3dSendTexSRTSi3d, -#else - NULL, -#endif -#ifndef NNS_G3D_3DSMAX_DISABLE - &NNSi_G3dSendTexSRT3dsMax, -#else - NULL, -#endif -#ifndef NNS_G3D_XSI_DISABLE - &NNSi_G3dSendTexSRTXsi -#else - NULL -#endif -}; diff --git a/subprojects/NitroSystem/libraries/g3d/src/cgtool/3dsmax.c b/subprojects/NitroSystem/libraries/g3d/src/cgtool/3dsmax.c deleted file mode 100644 index 01d6eacef2..0000000000 --- a/subprojects/NitroSystem/libraries/g3d/src/cgtool/3dsmax.c +++ /dev/null @@ -1,229 +0,0 @@ -#include -#include - -#ifndef NNS_G3D_3DSMAX_DISABLE - -#include - -static void texmtxCalc_flag_ (MtxFx44 * m, const NNSG3dMatAnmResult * anm) { - fx32 p, q; - fx32 ss_sin, ss_cos, st_sin, st_cos; - fx32 tmpW, tmpH; - - tmpW = (s32)anm->origWidth << FX32_SHIFT; - tmpH = (s32)anm->origHeight << FX32_SHIFT; - FX_DivAsync(tmpH, tmpW); - - ss_cos = (fx32)((fx64)anm->scaleS * anm->cosR >> FX32_SHIFT); - ss_sin = (fx32)((fx64)anm->scaleS * anm->sinR >> FX32_SHIFT); - st_cos = (fx32)((fx64)anm->scaleT * anm->cosR >> FX32_SHIFT); - st_sin = (fx32)((fx64)anm->scaleT * anm->sinR >> FX32_SHIFT); - - m->_00 = ss_cos; - m->_11 = st_cos; - - m->_01 = st_sin * FX_GetDivResult() >> FX32_SHIFT; - FX_DivAsync(tmpW, tmpH); - - p = (-anm->origWidth << (FX32_SHIFT - 1)) - anm->transS * anm->origWidth; - q = (-anm->origHeight << (FX32_SHIFT - 1)) + anm->transT * anm->origHeight; - - m->_30 = (fx32)(((fx64)ss_cos * p - (fx64)ss_sin * q) >> (FX32_SHIFT - 4)) + - (anm->origWidth << (FX32_SHIFT - 1 + 4)); - m->_31 = (fx32)(((fx64)st_sin * p + (fx64)st_cos * q) >> (FX32_SHIFT - 4)) + - (anm->origHeight << (FX32_SHIFT - 1 + 4)); - - m->_10 = -ss_sin * FX_GetDivResult() >> FX32_SHIFT; -} - -static void texmtxCalc_flagS_ (MtxFx44 * m, const NNSG3dMatAnmResult * anm) { - fx32 p, q; - fx32 tmpW, tmpH; - - tmpW = (s32)anm->origWidth << FX32_SHIFT; - tmpH = (s32)anm->origHeight << FX32_SHIFT; - FX_DivAsync(tmpH, tmpW); - - m->_00 = anm->cosR; - m->_11 = anm->cosR; - - m->_01 = anm->sinR * FX_GetDivResult() >> FX32_SHIFT; - FX_DivAsync(tmpW, tmpH); - - p = (-anm->origWidth << (FX32_SHIFT - 1)) - anm->transS * anm->origWidth; - q = (-anm->origHeight << (FX32_SHIFT - 1)) + anm->transT * anm->origHeight; - - m->_30 = (fx32)(((fx64)anm->cosR * p - (fx64)anm->sinR * q) >> (FX32_SHIFT - 4)) + - (anm->origWidth << (FX32_SHIFT - 1 + 4)); - m->_31 = (fx32)(((fx64)anm->sinR * p + (fx64)anm->cosR * q) >> (FX32_SHIFT - 4)) + - (anm->origHeight << (FX32_SHIFT - 1 + 4)); - - m->_10 = -anm->sinR * FX_GetDivResult() >> FX32_SHIFT; -} - -static void texmtxCalc_flagR_ (MtxFx44 * m, const NNSG3dMatAnmResult * anm) { - fx32 p, q; - - m->_00 = anm->scaleS; - m->_11 = anm->scaleT; - - m->_01 = 0; - - p = (-anm->origWidth << (FX32_SHIFT - 1)) - anm->transS * anm->origWidth; - q = (-anm->origHeight << (FX32_SHIFT - 1)) + anm->transT * anm->origHeight; - - m->_30 = (fx32)(((fx64)anm->scaleS * p) >> (FX32_SHIFT - 4)) + - (anm->origWidth << (FX32_SHIFT - 1 + 4)); - m->_31 = (fx32)(((fx64)anm->scaleT * q) >> (FX32_SHIFT - 4)) + - (anm->origHeight << (FX32_SHIFT - 1 + 4)); - - m->_10 = 0; -} - -static void texmtxCalc_flagRS_ (MtxFx44 * m, const NNSG3dMatAnmResult * anm) { - m->_00 = FX32_ONE; - m->_11 = FX32_ONE; - - m->_01 = 0; - - m->_30 = (-anm->transS * anm->origWidth) << 4; - m->_31 = (anm->transT * anm->origHeight) << 4; - - m->_10 = 0; -} - -static void texmtxCalc_flagT_ (MtxFx44 * m, const NNSG3dMatAnmResult * anm) { - fx32 p, q; - fx32 ss_sin, ss_cos, st_sin, st_cos; - fx32 tmpW, tmpH; - - tmpW = (s32)anm->origWidth << FX32_SHIFT; - tmpH = (s32)anm->origHeight << FX32_SHIFT; - FX_DivAsync(tmpH, tmpW); - - ss_cos = (fx32)((fx64)anm->scaleS * anm->cosR >> FX32_SHIFT); - ss_sin = (fx32)((fx64)anm->scaleS * anm->sinR >> FX32_SHIFT); - st_cos = (fx32)((fx64)anm->scaleT * anm->cosR >> FX32_SHIFT); - st_sin = (fx32)((fx64)anm->scaleT * anm->sinR >> FX32_SHIFT); - - m->_00 = ss_cos; - m->_11 = st_cos; - - m->_01 = st_sin * FX_GetDivResult() >> FX32_SHIFT; - FX_DivAsync(tmpW, tmpH); - - p = (-anm->origWidth << (FX32_SHIFT - 1)); - q = (-anm->origHeight << (FX32_SHIFT - 1)); - - m->_30 = (fx32)(((fx64)ss_cos * p - (fx64)ss_sin * q) >> (FX32_SHIFT - 4)) + - (anm->origWidth << (FX32_SHIFT - 1 + 4)); - m->_31 = (fx32)(((fx64)st_sin * p + (fx64)st_cos * q) >> (FX32_SHIFT - 4)) + - (anm->origHeight << (FX32_SHIFT - 1 + 4)); - - m->_10 = -ss_sin * FX_GetDivResult() >> FX32_SHIFT; -} - -static void texmtxCalc_flagTS_ (MtxFx44 * m, const NNSG3dMatAnmResult * anm) { - fx32 p, q; - fx32 tmpW, tmpH; - - tmpW = (s32)anm->origWidth << FX32_SHIFT; - tmpH = (s32)anm->origHeight << FX32_SHIFT; - FX_DivAsync(tmpH, tmpW); - - m->_00 = anm->cosR; - m->_11 = anm->cosR; - - m->_01 = anm->sinR * FX_GetDivResult() >> FX32_SHIFT; - FX_DivAsync(tmpW, tmpH); - - p = (-anm->origWidth << (FX32_SHIFT - 1)); - q = (-anm->origHeight << (FX32_SHIFT - 1)); - - m->_30 = (fx32)(((fx64)anm->cosR * p - (fx64)anm->sinR * q) >> (FX32_SHIFT - 4)) + - (anm->origWidth << (FX32_SHIFT - 1 + 4)); - m->_31 = (fx32)(((fx64)anm->sinR * p + (fx64)anm->cosR * q) >> (FX32_SHIFT - 4)) + - (anm->origHeight << (FX32_SHIFT - 1 + 4)); - - m->_10 = -anm->sinR * FX_GetDivResult() >> FX32_SHIFT; -} - -static void texmtxCalc_flagTR_ (MtxFx44 * m, const NNSG3dMatAnmResult * anm) { - m->_00 = anm->scaleS; - m->_11 = anm->scaleT; - - m->_01 = 0; - - m->_30 = ((-anm->scaleS + FX32_ONE) * anm->origWidth) << 3; - m->_31 = ((-anm->scaleT + FX32_ONE) * anm->origHeight) << 3; - - m->_10 = 0; -} - -static void texmtxCalc_flagTRS_ (MtxFx44 * m, const NNSG3dMatAnmResult *) { - m->_00 = FX32_ONE; - m->_01 = 0; - m->_10 = 0; - m->_11 = FX32_ONE; - m->_30 = 0; - m->_31 = 0; -} - -static void -(*calcTexMtx_[8])(MtxFx44 *, const NNSG3dMatAnmResult *) = { - &texmtxCalc_flag_, - &texmtxCalc_flagS_, - &texmtxCalc_flagR_, - &texmtxCalc_flagRS_, - &texmtxCalc_flagT_, - &texmtxCalc_flagTS_, - &texmtxCalc_flagTR_, - &texmtxCalc_flagTRS_ -}; - -void NNSi_G3dSendTexSRT3dsMax (const NNSG3dMatAnmResult * anm) { - struct { - u32 cmd; - u32 mode_tex; - MtxFx44 m; - u32 mode_pos_vec; - } data; - - NNS_G3D_NULL_ASSERT(anm); - NNS_G3D_ASSERT( - anm->flag & (NNS_G3D_MATANM_RESULTFLAG_TEXMTX_SET | - NNS_G3D_MATANM_RESULTFLAG_TEXMTX_MULT) - ); - - if (anm->flag & NNS_G3D_MATANM_RESULTFLAG_TEXMTX_SET) { - data.cmd = GX_PACK_OP(G3OP_MTX_MODE, G3OP_MTX_LOAD_4x4, G3OP_MTX_MODE, G3OP_NOP); - } else { - data.cmd = GX_PACK_OP(G3OP_MTX_MODE, G3OP_MTX_MULT_4x4, G3OP_MTX_MODE, G3OP_NOP); - } - data.mode_tex = GX_MTXMODE_TEXTURE; - data.mode_pos_vec = GX_MTXMODE_POSITION_VECTOR; - - data.m._02 = data.m._03 = data.m._12 = data.m._13 = - data.m._20 = data.m._21 = data.m._22 = data.m._23 = data.m._32 = 0; - data.m._33 = FX32_ONE; - - (*calcTexMtx_[anm->flag & (NNS_G3D_MATANM_RESULTFLAG_TEXMTX_SCALEONE | - NNS_G3D_MATANM_RESULTFLAG_TEXMTX_ROTZERO | - NNS_G3D_MATANM_RESULTFLAG_TEXMTX_TRANSZERO)])(&data.m, anm); - - if (anm->magW != FX32_ONE) { - data.m._00 = (fx32)((fx64)anm->magW * data.m._00 >> FX32_SHIFT); - data.m._01 = (fx32)((fx64)anm->magW * data.m._01 >> FX32_SHIFT); - data.m._30 = (fx32)((fx64)anm->magW * data.m._30 >> FX32_SHIFT); - } - - if (anm->magH != FX32_ONE) { - data.m._10 = (fx32)((fx64)anm->magH * data.m._10 >> FX32_SHIFT); - data.m._11 = (fx32)((fx64)anm->magH * data.m._11 >> FX32_SHIFT); - data.m._31 = (fx32)((fx64)anm->magH * data.m._31 >> FX32_SHIFT); - } - - NNS_G3dGeBufferData_N((u32 *)&data.cmd, sizeof(data) / 4); -} - -#endif diff --git a/subprojects/NitroSystem/libraries/g3d/src/cgtool/basic.c b/subprojects/NitroSystem/libraries/g3d/src/cgtool/basic.c deleted file mode 100644 index 2527891222..0000000000 --- a/subprojects/NitroSystem/libraries/g3d/src/cgtool/basic.c +++ /dev/null @@ -1,56 +0,0 @@ -#include -#include -#include - -void NNSi_G3dSendJointSRTBasic (const NNSG3dJntAnmResult * result) { - NNS_G3D_NULL_ASSERT(result); - - if (!(result->flag & NNS_G3D_JNTANM_RESULTFLAG_TRANS_ZERO)) { - if (!(result->flag & NNS_G3D_JNTANM_RESULTFLAG_ROT_ZERO)) { - NNS_G3dGeBufferOP_N( - G3OP_MTX_MULT_4x3, - (u32 *)&result->rot._00, - G3OP_MTX_MULT_4x3_NPARAMS - ); - } else { - NNS_G3dGeBufferOP_N( - G3OP_MTX_TRANS, - (u32 *)&result->trans.x, - G3OP_MTX_TRANS_NPARAMS - ); - } - } else { - if (!(result->flag & NNS_G3D_JNTANM_RESULTFLAG_ROT_ZERO)) { - NNS_G3dGeBufferOP_N( - G3OP_MTX_MULT_3x3, - (u32 *)&result->rot._00, - G3OP_MTX_MULT_3x3_NPARAMS - ); - } - } - - if (!(result->flag & NNS_G3D_JNTANM_RESULTFLAG_SCALE_ONE)) { - NNS_G3dGeBufferOP_N( - G3OP_MTX_SCALE, - (u32 *)&result->scale.x, - G3OP_MTX_SCALE_NPARAMS - ); - } -} - -void NNSi_G3dGetJointScaleBasic (NNSG3dJntAnmResult * pResult, const fx32 * p, const u8 *, u32 srtflag) { - NNS_G3D_NULL_ASSERT(pResult); - - if (srtflag & NNS_G3D_SRTFLAG_SCALE_ONE) { - pResult->flag |= NNS_G3D_JNTANM_RESULTFLAG_SCALE_ONE; - } else { - NNS_G3D_NULL_ASSERT(p); - - pResult->scale.x = *(p + 0); - pResult->scale.y = *(p + 1); - pResult->scale.z = *(p + 2); - } - - pResult->flag |= NNS_G3D_JNTANM_RESULTFLAG_SCALEEX0_ONE | - NNS_G3D_JNTANM_RESULTFLAG_SCALEEX1_ONE; -} diff --git a/subprojects/NitroSystem/libraries/g3d/src/cgtool/maya.c b/subprojects/NitroSystem/libraries/g3d/src/cgtool/maya.c deleted file mode 100644 index bf3fda8204..0000000000 --- a/subprojects/NitroSystem/libraries/g3d/src/cgtool/maya.c +++ /dev/null @@ -1,313 +0,0 @@ -#include - -#ifndef NNS_G3D_MAYA_DISABLE -#include -#include -#include -#include - -void NNSi_G3dSendJointSRTMaya (const NNSG3dJntAnmResult * result) { - BOOL trFlag = FALSE; - - if (!(result->flag & NNS_G3D_JNTANM_RESULTFLAG_TRANS_ZERO)) { - trFlag = TRUE; - } - - if ((result->flag & NNS_G3D_JNTANM_RESULTFLAG_MAYA_SSC) && - !(result->flag & NNS_G3D_JNTANM_RESULTFLAG_SCALEEX0_ONE)) { - if (trFlag) { - NNS_G3dGeBufferOP_N( - G3OP_MTX_TRANS, - (u32 *)&result->trans.x, - G3OP_MTX_TRANS_NPARAMS - ); - trFlag = FALSE; - } - NNS_G3dGeBufferOP_N( - G3OP_MTX_SCALE, - (u32 *)&result->scaleEx0.x, - G3OP_MTX_SCALE_NPARAMS - ); - } - - if (!(result->flag & NNS_G3D_JNTANM_RESULTFLAG_ROT_ZERO)) { - if (trFlag) { - NNS_G3dGeBufferOP_N( - G3OP_MTX_MULT_4x3, - (u32 *)&result->rot._00, - G3OP_MTX_MULT_4x3_NPARAMS - ); - } else { - NNS_G3dGeBufferOP_N( - G3OP_MTX_MULT_3x3, - (u32 *)&result->rot._00, - G3OP_MTX_MULT_3x3_NPARAMS - ); - } - } else { - if (trFlag) { - NNS_G3dGeBufferOP_N( - G3OP_MTX_TRANS, - (u32 *)&result->trans.x, - G3OP_MTX_TRANS_NPARAMS - ); - } - } - - if (!(result->flag & NNS_G3D_JNTANM_RESULTFLAG_SCALE_ONE)) { - NNS_G3dGeBufferOP_N( - G3OP_MTX_SCALE, - (u32 *)&result->scale.x, - G3OP_MTX_SCALE_NPARAMS - ); - } -} - -void NNSi_G3dGetJointScaleMaya (NNSG3dJntAnmResult * pResult, const fx32 * p, const u8 * cmd, u32 srtflag) { - u8 opFlag; - - NNS_G3D_NULL_ASSERT(pResult); - NNS_G3D_NULL_ASSERT(cmd); - NNS_G3D_NULL_ASSERT(p); - NNS_G3D_NULL_ASSERT(NNS_G3dRS); - opFlag = *(cmd + 3); - - if (srtflag & NNS_G3D_SRTFLAG_SCALE_ONE) { - pResult->flag |= NNS_G3D_JNTANM_RESULTFLAG_SCALE_ONE; - if (opFlag & NNS_G3D_SBC_NODEDESC_FLAG_MAYASSC_PARENT) { - u32 nodeID = *(cmd + 1); - - NNSi_G3dBitVecSet(&NNS_G3dRS->isScaleCacheOne[0], nodeID); - } - } else { - pResult->scale.x = *(p + 0); - pResult->scale.y = *(p + 1); - pResult->scale.z = *(p + 2); - - if (opFlag & NNS_G3D_SBC_NODEDESC_FLAG_MAYASSC_PARENT) { - u32 nodeID = *(cmd + 1); - - NNSi_G3dBitVecReset(&NNS_G3dRS->isScaleCacheOne[0], nodeID); - - NNS_G3dRSOnGlb.scaleCache[nodeID].inv.x = *(p + 3); - NNS_G3dRSOnGlb.scaleCache[nodeID].inv.y = *(p + 4); - NNS_G3dRSOnGlb.scaleCache[nodeID].inv.z = *(p + 5); - } - } - - if (opFlag & NNS_G3D_SBC_NODEDESC_FLAG_MAYASSC_APPLY) { - u32 parentID = *(cmd + 2); - pResult->flag |= NNS_G3D_JNTANM_RESULTFLAG_MAYA_SSC; - - if (NNSi_G3dBitVecCheck(&NNS_G3dRS->isScaleCacheOne[0], parentID)) { - pResult->flag |= NNS_G3D_JNTANM_RESULTFLAG_SCALEEX0_ONE; - } else { - pResult->scaleEx0 = NNS_G3dRSOnGlb.scaleCache[parentID].inv; - } - } - - pResult->flag |= NNS_G3D_JNTANM_RESULTFLAG_SCALEEX1_ONE; -} - -#include - -static void texmtxCalc_flag_ (MtxFx44 * m, const NNSG3dMatAnmResult * anm) { - fx32 ss_sin, ss_cos; - fx32 st_sin, st_cos; - fx32 tmpW, tmpH; - - tmpW = (s32)anm->origWidth << FX32_SHIFT; - tmpH = (s32)anm->origHeight << FX32_SHIFT; - FX_DivAsync(tmpH, tmpW); - - ss_sin = (fx32)((fx64)anm->scaleS * anm->sinR >> FX32_SHIFT); - ss_cos = (fx32)((fx64)anm->scaleS * anm->cosR >> FX32_SHIFT); - st_sin = (fx32)((fx64)anm->scaleT * anm->sinR >> FX32_SHIFT); - st_cos = (fx32)((fx64)anm->scaleT * anm->cosR >> FX32_SHIFT); - - m->_00 = ss_cos; - m->_11 = st_cos; - - m->_01 = -st_sin * FX_GetDivResult() >> FX32_SHIFT; - FX_DivAsync(tmpW, tmpH); - - m->_30 = ((-ss_sin - ss_cos + anm->scaleS) * anm->origWidth << 3) - - (fx32)((fx64)anm->scaleS * anm->transS >> (FX32_SHIFT - 4)) * anm->origWidth; - m->_31 = ((st_sin - st_cos - anm->scaleT + FX32_ONE * 2) * anm->origHeight << 3) + - (fx32)((fx64)anm->scaleT * anm->transT >> (FX32_SHIFT - 4)) * anm->origHeight; - - m->_10 = ss_sin * FX_GetDivResult() >> FX32_SHIFT; -} - -static void texmtxCalc_flagS_ (MtxFx44 * m, const NNSG3dMatAnmResult * anm) { - fx32 tmpW, tmpH; - - tmpW = (s32)anm->origWidth << FX32_SHIFT; - tmpH = (s32)anm->origHeight << FX32_SHIFT; - FX_DivAsync(tmpH, tmpW); - - m->_00 = anm->cosR; - m->_11 = anm->cosR; - - m->_01 = -anm->sinR * FX_GetDivResult() >> FX32_SHIFT; - FX_DivAsync(tmpW, tmpH); - - m->_30 = ((-anm->sinR - anm->cosR + FX32_ONE) * anm->origWidth << 3) - - (anm->transS * anm->origWidth << 4); - m->_31 = ((anm->sinR - anm->cosR + FX32_ONE) * anm->origHeight << 3) + - (anm->transT * anm->origHeight << 4); - - m->_10 = anm->sinR * FX_GetDivResult() >> FX32_SHIFT; -} - -static void texmtxCalc_flagR_ (MtxFx44 * m, const NNSG3dMatAnmResult * anm) { - m->_00 = anm->scaleS; - m->_11 = anm->scaleT; - - m->_01 = 0; - - m->_30 = -(fx32)((fx64)anm->scaleS * anm->transS >> (FX32_SHIFT - 4)) * anm->origWidth; - m->_31 = ((-anm->scaleT - anm->scaleT + FX32_ONE * 2) * anm->origHeight << 3) + - (fx32)((fx64)anm->scaleT * anm->transT >> (FX32_SHIFT - 4)) * anm->origHeight; - - m->_10 = 0; -} - -static void texmtxCalc_flagRS_ (MtxFx44 * m, const NNSG3dMatAnmResult * anm) { - m->_00 = FX32_ONE; - m->_11 = FX32_ONE; - - m->_01 = 0; - - m->_30 = -(anm->transS * anm->origWidth) << 4; - m->_31 = (anm->transT * anm->origHeight) << 4; - - m->_10 = 0; -} - -static void texmtxCalc_flagT_ (MtxFx44 * m, const NNSG3dMatAnmResult * anm) { - fx32 ss_sin, ss_cos; - fx32 st_sin, st_cos; - fx32 tmpW, tmpH; - - tmpW = (s32)anm->origWidth << FX32_SHIFT; - tmpH = (s32)anm->origHeight << FX32_SHIFT; - FX_DivAsync(tmpH, tmpW); - - ss_sin = (fx32)((fx64)anm->scaleS * anm->sinR >> FX32_SHIFT); - ss_cos = (fx32)((fx64)anm->scaleS * anm->cosR >> FX32_SHIFT); - st_sin = (fx32)((fx64)anm->scaleT * anm->sinR >> FX32_SHIFT); - st_cos = (fx32)((fx64)anm->scaleT * anm->cosR >> FX32_SHIFT); - - m->_00 = ss_cos; - m->_11 = st_cos; - - m->_01 = -st_sin * FX_GetDivResult() >> FX32_SHIFT; - FX_DivAsync(tmpW, tmpH); - - m->_30 = ((-ss_sin - ss_cos + anm->scaleS) * anm->origWidth << 3); - m->_31 = ((st_sin - st_cos - anm->scaleT + FX32_ONE * 2) * anm->origHeight << 3); - - m->_10 = ss_sin * FX_GetDivResult() >> FX32_SHIFT; -} - -static void texmtxCalc_flagTS_ (MtxFx44 * m, const NNSG3dMatAnmResult * anm) { - fx32 tmpW, tmpH; - - tmpW = (s32)anm->origWidth << FX32_SHIFT; - tmpH = (s32)anm->origHeight << FX32_SHIFT; - FX_DivAsync(tmpH, tmpW); - - m->_00 = anm->cosR; - m->_11 = anm->cosR; - - m->_01 = -anm->sinR * FX_GetDivResult() >> FX32_SHIFT; - FX_DivAsync(tmpW, tmpH); - - m->_30 = ((-anm->sinR - anm->cosR + FX32_ONE) * anm->origWidth << 3); - m->_31 = ((anm->sinR - anm->cosR + FX32_ONE) * anm->origHeight << 3); - - m->_10 = anm->sinR * FX_GetDivResult() >> FX32_SHIFT; -} - -static void texmtxCalc_flagTR_ (MtxFx44 * m, const NNSG3dMatAnmResult * anm) { - m->_00 = anm->scaleS; - m->_11 = anm->scaleT; - - m->_01 = 0; - - m->_30 = 0; - m->_31 = ((-2 * anm->scaleT + FX32_ONE * 2) * anm->origHeight << 3); - - m->_10 = 0; -} - -static void texmtxCalc_flagTRS_ (MtxFx44 * m, const NNSG3dMatAnmResult *) { - m->_00 = FX32_ONE; - m->_01 = 0; - m->_10 = 0; - m->_11 = FX32_ONE; - m->_30 = 0; - m->_31 = 0; -} - -static void -(*calcTexMtx_[8])(MtxFx44 *, const NNSG3dMatAnmResult *) = { - &texmtxCalc_flag_, - &texmtxCalc_flagS_, - &texmtxCalc_flagR_, - &texmtxCalc_flagRS_, - &texmtxCalc_flagT_, - &texmtxCalc_flagTS_, - &texmtxCalc_flagTR_, - &texmtxCalc_flagTRS_ -}; - -void NNSi_G3dSendTexSRTMaya (const NNSG3dMatAnmResult * anm) { - struct { - u32 cmd; - u32 mode_tex; - MtxFx44 m; - u32 mode_pos_vec; - } data; - - NNS_G3D_NULL_ASSERT(anm); - NNS_G3D_ASSERT( - anm->flag & (NNS_G3D_MATANM_RESULTFLAG_TEXMTX_SET | - NNS_G3D_MATANM_RESULTFLAG_TEXMTX_MULT) - ); - - if (anm->flag & NNS_G3D_MATANM_RESULTFLAG_TEXMTX_SET) { - data.cmd = GX_PACK_OP(G3OP_MTX_MODE, G3OP_MTX_LOAD_4x4, G3OP_MTX_MODE, G3OP_NOP); - } else { - data.cmd = GX_PACK_OP(G3OP_MTX_MODE, G3OP_MTX_MULT_4x4, G3OP_MTX_MODE, G3OP_NOP); - } - - data.mode_tex = GX_MTXMODE_TEXTURE; - data.mode_pos_vec = GX_MTXMODE_POSITION_VECTOR; - - data.m._02 = data.m._03 = data.m._12 = data.m._13 = - data.m._20 = data.m._21 = data.m._22 = data.m._23 = data.m._32 = 0; - data.m._33 = FX32_ONE; - - (*calcTexMtx_[anm->flag & (NNS_G3D_MATANM_RESULTFLAG_TEXMTX_SCALEONE | - NNS_G3D_MATANM_RESULTFLAG_TEXMTX_ROTZERO | - NNS_G3D_MATANM_RESULTFLAG_TEXMTX_TRANSZERO)])(&data.m, anm); - - if (anm->magW != FX32_ONE) { - data.m._00 = (fx32)((fx64)anm->magW * data.m._00 >> FX32_SHIFT); - data.m._01 = (fx32)((fx64)anm->magW * data.m._01 >> FX32_SHIFT); - data.m._30 = (fx32)((fx64)anm->magW * data.m._30 >> FX32_SHIFT); - } - - if (anm->magH != FX32_ONE) { - data.m._10 = (fx32)((fx64)anm->magH * data.m._10 >> FX32_SHIFT); - data.m._11 = (fx32)((fx64)anm->magH * data.m._11 >> FX32_SHIFT); - data.m._31 = (fx32)((fx64)anm->magH * data.m._31 >> FX32_SHIFT); - } - - NNS_G3dGeBufferData_N((u32 *)&data.cmd, sizeof(data) / 4); -} -#include - -#endif diff --git a/subprojects/NitroSystem/libraries/g3d/src/cgtool/si3d.c b/subprojects/NitroSystem/libraries/g3d/src/cgtool/si3d.c deleted file mode 100644 index 852453e098..0000000000 --- a/subprojects/NitroSystem/libraries/g3d/src/cgtool/si3d.c +++ /dev/null @@ -1,224 +0,0 @@ -#include - -#ifndef NNS_G3D_SI3D_DISABLE -#include -#include -#include -#include -#include - -void NNSi_G3dSendJointSRTSi3d (const NNSG3dJntAnmResult * result) { - BOOL rtFlag = FALSE; - - u32 flagScaleEx = result->flag & (u32)(NNS_G3D_JNTANM_RESULTFLAG_SCALEEX0_ONE | - NNS_G3D_JNTANM_RESULTFLAG_SCALEEX1_ONE); - - NNS_G3D_ASSERT( - flagScaleEx == 0 || - flagScaleEx == (NNS_G3D_JNTANM_RESULTFLAG_SCALEEX0_ONE | - NNS_G3D_JNTANM_RESULTFLAG_SCALEEX1_ONE) - ); - - if (!flagScaleEx) { - NNS_G3dGeBufferOP_N( - G3OP_MTX_SCALE, - (u32 *)&result->scaleEx1.x, - G3OP_MTX_SCALE_NPARAMS - ); - } - - if (!(result->flag & NNS_G3D_JNTANM_RESULTFLAG_TRANS_ZERO)) { - if (!flagScaleEx) { - VecFx32 tmp; - tmp.x = (fx32)((fx64)result->trans.x * result->scaleEx0.x >> FX32_SHIFT); - tmp.y = (fx32)((fx64)result->trans.y * result->scaleEx0.y >> FX32_SHIFT); - tmp.z = (fx32)((fx64)result->trans.z * result->scaleEx0.z >> FX32_SHIFT); - - NNS_G3dGeBufferOP_N( - G3OP_MTX_TRANS, - (u32 *)&tmp.x, - G3OP_MTX_TRANS_NPARAMS - ); - } else { - rtFlag = TRUE; - } - } - - if (!(result->flag & NNS_G3D_JNTANM_RESULTFLAG_ROT_ZERO)) { - if (rtFlag) { - NNS_G3dGeBufferOP_N( - G3OP_MTX_MULT_4x3, - (u32 *)&result->rot._00, - G3OP_MTX_MULT_4x3_NPARAMS - ); - } else { - NNS_G3dGeBufferOP_N( - G3OP_MTX_MULT_3x3, - (u32 *)&result->rot._00, - G3OP_MTX_MULT_3x3_NPARAMS - ); - } - } else { - if (rtFlag) { - NNS_G3dGeBufferOP_N( - G3OP_MTX_TRANS, - (u32 *)&result->trans.x, - G3OP_MTX_TRANS_NPARAMS - ); - } - } - - if (!flagScaleEx) { - NNS_G3dGeBufferOP_N( - G3OP_MTX_SCALE, - (u32 *)&result->scaleEx0.x, - G3OP_MTX_SCALE_NPARAMS - ); - } - - if (!(result->flag & NNS_G3D_JNTANM_RESULTFLAG_SCALE_ONE)) { - NNS_G3dGeBufferOP_N( - G3OP_MTX_SCALE, - (u32 *)&result->scale.x, - G3OP_MTX_SCALE_NPARAMS - ); - } -} - -void NNSi_G3dGetJointScaleSi3d (NNSG3dJntAnmResult * pResult, const fx32 * p, const u8 * cmd, u32 srtflag) { - u32 nodeID; - u32 parentID; - NNS_G3D_NULL_ASSERT(pResult); - NNS_G3D_NULL_ASSERT(cmd); - NNS_G3D_NULL_ASSERT(p); - NNS_G3D_NULL_ASSERT(NNS_G3dRS); - - nodeID = *(cmd + 1); - parentID = *(cmd + 2); - - if (srtflag & NNS_G3D_SRTFLAG_SCALE_ONE) { - pResult->flag |= NNS_G3D_JNTANM_RESULTFLAG_SCALE_ONE; - - if (NNSi_G3dBitVecCheck(&NNS_G3dRS->isScaleCacheOne[0], parentID)) { - NNSi_G3dBitVecSet(&NNS_G3dRS->isScaleCacheOne[0], nodeID); - - pResult->flag |= (NNS_G3D_JNTANM_RESULTFLAG_SCALEEX0_ONE | - NNS_G3D_JNTANM_RESULTFLAG_SCALEEX1_ONE); - } else { - MI_CpuCopy32( - &NNS_G3dRSOnGlb.scaleCache[parentID], - &NNS_G3dRSOnGlb.scaleCache[nodeID], - sizeof(VecFx32) + sizeof(VecFx32) - ); - - MI_CpuCopy32( - &NNS_G3dRSOnGlb.scaleCache[parentID], - &pResult->scaleEx0, - sizeof(VecFx32) + sizeof(VecFx32) - ); - } - } else { - pResult->scale.x = *(p + 0); - pResult->scale.y = *(p + 1); - pResult->scale.z = *(p + 2); - - if (NNSi_G3dBitVecCheck(&NNS_G3dRS->isScaleCacheOne[0], parentID)) { - MI_CpuCopy32( - p, - &NNS_G3dRSOnGlb.scaleCache[nodeID], - sizeof(VecFx32) + sizeof(VecFx32) - ); - - NNSi_G3dBitVecReset(&NNS_G3dRS->isScaleCacheOne[0], nodeID); - - pResult->flag |= (NNS_G3D_JNTANM_RESULTFLAG_SCALEEX0_ONE | - NNS_G3D_JNTANM_RESULTFLAG_SCALEEX1_ONE); - } else { - NNSi_G3dBitVecReset(&NNS_G3dRS->isScaleCacheOne[0], nodeID); - - NNS_G3dRSOnGlb.scaleCache[nodeID].s.x = - (fx32)((fx64)(*(p + 0)) * NNS_G3dRSOnGlb.scaleCache[parentID].s.x >> FX32_SHIFT); - NNS_G3dRSOnGlb.scaleCache[nodeID].s.y = - (fx32)((fx64)(*(p + 1)) * NNS_G3dRSOnGlb.scaleCache[parentID].s.y >> FX32_SHIFT); - NNS_G3dRSOnGlb.scaleCache[nodeID].s.z = - (fx32)((fx64)(*(p + 2)) * NNS_G3dRSOnGlb.scaleCache[parentID].s.z >> FX32_SHIFT); - - NNS_G3dRSOnGlb.scaleCache[nodeID].inv.x = - (fx32)((fx64)(*(p + 3)) * NNS_G3dRSOnGlb.scaleCache[parentID].inv.x >> FX32_SHIFT); - NNS_G3dRSOnGlb.scaleCache[nodeID].inv.y = - (fx32)((fx64)(*(p + 4)) * NNS_G3dRSOnGlb.scaleCache[parentID].inv.y >> FX32_SHIFT); - NNS_G3dRSOnGlb.scaleCache[nodeID].inv.z = - (fx32)((fx64)(*(p + 5)) * NNS_G3dRSOnGlb.scaleCache[parentID].inv.z >> FX32_SHIFT); - - MI_CpuCopy32( - &NNS_G3dRSOnGlb.scaleCache[parentID], - &pResult->scaleEx0, - sizeof(VecFx32) + sizeof(VecFx32) - ); - } - } -} - -void NNSi_G3dSendTexSRTSi3d (const NNSG3dMatAnmResult * anm) { - struct { - u32 cmd; - u32 mode_tex; - MtxFx43 m; - u32 mode_pos_vec; - } data; - - NNS_G3D_NULL_ASSERT(anm); - NNS_G3D_ASSERT( - anm->flag & (NNS_G3D_MATANM_RESULTFLAG_TEXMTX_SET | - NNS_G3D_MATANM_RESULTFLAG_TEXMTX_MULT) - ); - - if (anm->flag & NNS_G3D_MATANM_RESULTFLAG_TEXMTX_SET) { - data.cmd = GX_PACK_OP(G3OP_MTX_MODE, G3OP_MTX_LOAD_4x3, G3OP_MTX_MODE, G3OP_NOP); - } else { - data.cmd = GX_PACK_OP(G3OP_MTX_MODE, G3OP_MTX_MULT_4x3, G3OP_MTX_MODE, G3OP_NOP); - } - - data.mode_tex = GX_MTXMODE_TEXTURE; - data.mode_pos_vec = GX_MTXMODE_POSITION_VECTOR; - - data.m._01 = data.m._02 = data.m._10 = data.m._12 = data.m._20 = - data.m._21 = data.m._22 = data.m._32 = 0; - - if (anm->flag & NNS_G3D_MATANM_RESULTFLAG_TEXMTX_TRANSZERO) { - data.m._30 = 0; - data.m._31 = 0; - - if (anm->flag & NNS_G3D_MATANM_RESULTFLAG_TEXMTX_SCALEONE) { - data.m._00 = FX32_ONE; - data.m._11 = FX32_ONE; - } else { - data.m._00 = anm->scaleS; - data.m._11 = anm->scaleT; - } - } else if (anm->flag & NNS_G3D_MATANM_RESULTFLAG_TEXMTX_SCALEONE) { - data.m._30 = -(anm->transS << 4) * anm->origWidth; - data.m._31 = -(anm->transT << 4) * anm->origHeight; - data.m._00 = FX32_ONE; - data.m._11 = FX32_ONE; - } else { - data.m._30 = -(fx32)((fx64)anm->scaleS * anm->transS >> (FX32_SHIFT - 4)) * anm->origWidth; - data.m._31 = -(fx32)((fx64)anm->scaleT * anm->transT >> (FX32_SHIFT - 4)) * anm->origHeight; - data.m._00 = anm->scaleS; - data.m._11 = anm->scaleT; - } - - if (anm->magW != FX32_ONE) { - data.m._00 = (fx32)((fx64)anm->magW * data.m._00 >> FX32_SHIFT); - data.m._30 = (fx32)((fx64)anm->magW * data.m._30 >> FX32_SHIFT); - } - - if (anm->magH != FX32_ONE) { - data.m._11 = (fx32)((fx64)anm->magH * data.m._11 >> FX32_SHIFT); - data.m._31 = (fx32)((fx64)anm->magH * data.m._31 >> FX32_SHIFT); - } - - NNS_G3dGeBufferData_N((u32 *)&data.cmd, sizeof(data) / 4); -} - -#endif diff --git a/subprojects/NitroSystem/libraries/g3d/src/cgtool/xsi.c b/subprojects/NitroSystem/libraries/g3d/src/cgtool/xsi.c deleted file mode 100644 index eb84d3786a..0000000000 --- a/subprojects/NitroSystem/libraries/g3d/src/cgtool/xsi.c +++ /dev/null @@ -1,236 +0,0 @@ -#include -#include - -#ifndef NNS_G3D_XSI_DISABLE - -#include - -static void texmtxCalc_flag_ (MtxFx44 * m, const NNSG3dMatAnmResult * anm) { - fx32 ss_sin, ss_cos; - fx32 st_sin, st_cos; - fx32 tmpW, tmpH; - fx64 tmp; - fx32 p, q; - - tmpW = (s32)anm->origWidth << FX32_SHIFT; - tmpH = (s32)anm->origHeight << FX32_SHIFT; - FX_DivAsync(tmpH, tmpW); - - ss_sin = (fx32)((fx64)anm->scaleS * anm->sinR >> FX32_SHIFT); - ss_cos = (fx32)((fx64)anm->scaleS * anm->cosR >> FX32_SHIFT); - st_sin = (fx32)((fx64)anm->scaleT * anm->sinR >> FX32_SHIFT); - st_cos = (fx32)((fx64)anm->scaleT * anm->cosR >> FX32_SHIFT); - - m->_00 = ss_cos; - m->_11 = st_cos; - - m->_01 = st_sin * FX_GetDivResult() >> FX32_SHIFT; - FX_DivAsync(tmpW, tmpH); - - tmp = ((fx64)anm->transS * anm->cosR + (fx64)anm->transT * anm->sinR) >> FX32_SHIFT; - p = (fx32)((tmp * anm->scaleS) >> FX32_SHIFT); - tmp = ((fx64)anm->transS * anm->sinR - (fx64)anm->transT * anm->cosR) >> FX32_SHIFT; - q = (fx32)((tmp * anm->scaleT) >> FX32_SHIFT); - - m->_30 = (anm->origWidth * (ss_sin - p)) << 4; - m->_31 = (-anm->origHeight * (st_cos + q - FX32_ONE)) << 4; - - m->_10 = -ss_sin * FX_GetDivResult() >> FX32_SHIFT; -} - -static void texmtxCalc_flagS_ (MtxFx44 * m, const NNSG3dMatAnmResult * anm) { - fx32 tmpW, tmpH; - fx32 p, q; - - tmpW = (s32)anm->origWidth << FX32_SHIFT; - tmpH = (s32)anm->origHeight << FX32_SHIFT; - FX_DivAsync(tmpH, tmpW); - - m->_00 = anm->cosR; - m->_11 = anm->cosR; - - m->_01 = anm->sinR * FX_GetDivResult() >> FX32_SHIFT; - FX_DivAsync(tmpW, tmpH); - - p = (fx32)(((fx64)anm->transS * anm->cosR + (fx64)anm->transT * anm->sinR) >> FX32_SHIFT); - q = (fx32)(((fx64)anm->transS * anm->sinR - (fx64)anm->transT * anm->cosR) >> FX32_SHIFT); - - m->_30 = (anm->origWidth * (anm->sinR - p)) << 4; - m->_31 = (-anm->origHeight * (anm->cosR + q - FX32_ONE)) << 4; - - m->_10 = -anm->sinR * FX_GetDivResult() >> FX32_SHIFT; -} - -static void texmtxCalc_flagR_ (MtxFx44 * m, const NNSG3dMatAnmResult * anm) { - fx32 p, q; - - m->_00 = anm->scaleS; - m->_11 = anm->scaleT; - - m->_01 = 0; - - p = (fx32)(((fx64)anm->transS * anm->scaleS) >> FX32_SHIFT); - q = (fx32)(((fx64) - anm->transT * anm->scaleT) >> FX32_SHIFT); - - m->_30 = (anm->origWidth * (-p)) << 4; - m->_31 = (-anm->origHeight * (anm->scaleT + q - FX32_ONE)) << 4; - - m->_10 = 0; -} - -static void texmtxCalc_flagRS_ (MtxFx44 * m, const NNSG3dMatAnmResult * anm) { - fx32 p, q; - - m->_00 = FX32_ONE; - m->_11 = FX32_ONE; - - m->_01 = 0; - - p = anm->transS; - q = -anm->transT; - - m->_30 = (anm->origWidth * (-p)) << 4; - m->_31 = (-anm->origHeight * (q)) << 4; - - m->_10 = 0; -} - -static void texmtxCalc_flagT_ (MtxFx44 * m, const NNSG3dMatAnmResult * anm) { - fx32 ss_sin, ss_cos; - fx32 st_sin, st_cos; - fx32 tmpW, tmpH; - - tmpW = (s32)anm->origWidth << FX32_SHIFT; - tmpH = (s32)anm->origHeight << FX32_SHIFT; - FX_DivAsync(tmpH, tmpW); - - ss_sin = (fx32)((fx64)anm->scaleS * anm->sinR >> FX32_SHIFT); - ss_cos = (fx32)((fx64)anm->scaleS * anm->cosR >> FX32_SHIFT); - st_sin = (fx32)((fx64)anm->scaleT * anm->sinR >> FX32_SHIFT); - st_cos = (fx32)((fx64)anm->scaleT * anm->cosR >> FX32_SHIFT); - - m->_00 = ss_cos; - m->_11 = st_cos; - - m->_01 = st_sin * FX_GetDivResult() >> FX32_SHIFT; - FX_DivAsync(tmpW, tmpH); - - m->_30 = (anm->origWidth * (ss_sin)) << 4; - m->_31 = (-anm->origHeight * (st_cos - FX32_ONE)) << 4; - - m->_10 = -ss_sin * FX_GetDivResult() >> FX32_SHIFT; -} - -static void texmtxCalc_flagTS_ (MtxFx44 * m, const NNSG3dMatAnmResult * anm) { - fx32 tmpW, tmpH; - - tmpW = (s32)anm->origWidth << FX32_SHIFT; - tmpH = (s32)anm->origHeight << FX32_SHIFT; - FX_DivAsync(tmpH, tmpW); - - m->_00 = anm->cosR; - m->_11 = anm->cosR; - - m->_01 = anm->sinR * FX_GetDivResult() >> FX32_SHIFT; - FX_DivAsync(tmpW, tmpH); - - m->_30 = (anm->origWidth * (anm->sinR)) << 4; - m->_31 = (-anm->origHeight * (anm->cosR - FX32_ONE)) << 4; - - m->_10 = -anm->sinR * FX_GetDivResult() >> FX32_SHIFT; -} - -static void texmtxCalc_flagTR_ (MtxFx44 * m, const NNSG3dMatAnmResult * anm) { - m->_00 = anm->scaleS; - m->_11 = anm->scaleT; - - m->_01 = 0; - - m->_30 = 0; - m->_31 = (-anm->origHeight * (anm->scaleT - FX32_ONE)) << 4; - - m->_10 = 0; -} - -static void texmtxCalc_flagTRS_ (MtxFx44 * m, const NNSG3dMatAnmResult *) { - m->_00 = FX32_ONE; - m->_01 = 0; - m->_10 = 0; - m->_11 = FX32_ONE; - m->_30 = 0; - m->_31 = 0; -} - -static void -(*calcTexMtx_[8])(MtxFx44 *, const NNSG3dMatAnmResult *) = { - &texmtxCalc_flag_, - &texmtxCalc_flagS_, - &texmtxCalc_flagR_, - &texmtxCalc_flagRS_, - &texmtxCalc_flagT_, - &texmtxCalc_flagTS_, - &texmtxCalc_flagTR_, - &texmtxCalc_flagTRS_ -}; - -void NNSi_G3dSendTexSRTXsi (const NNSG3dMatAnmResult * anm) { - struct { - u32 cmd; - u32 mode_tex; - MtxFx44 m; - u32 mode_pos_vec; - } data; - - NNS_G3D_NULL_ASSERT(anm); - NNS_G3D_ASSERT( - anm->flag & (NNS_G3D_MATANM_RESULTFLAG_TEXMTX_SET | - NNS_G3D_MATANM_RESULTFLAG_TEXMTX_MULT) - ); - - if (anm->flag & NNS_G3D_MATANM_RESULTFLAG_TEXMTX_SET) { - data.cmd = GX_PACK_OP(G3OP_MTX_MODE, G3OP_MTX_LOAD_4x4, G3OP_MTX_MODE, G3OP_NOP); - } else { - data.cmd = GX_PACK_OP(G3OP_MTX_MODE, G3OP_MTX_MULT_4x4, G3OP_MTX_MODE, G3OP_NOP); - } - - data.mode_tex = GX_MTXMODE_TEXTURE; - data.mode_pos_vec = GX_MTXMODE_POSITION_VECTOR; - - data.m._02 = data.m._03 = data.m._12 = data.m._13 = - data.m._20 = data.m._21 = data.m._22 = data.m._23 = data.m._32 = 0; - data.m._33 = FX32_ONE; - - { - NNSG3dMatAnmResult * a = (NNSG3dMatAnmResult *)anm; - if (anm->flag & NNS_G3D_MATANM_RESULTFLAG_TEXMTX_SCALEONE) { - a->scaleS = a->scaleT = FX32_ONE; - } - if (anm->flag & NNS_G3D_MATANM_RESULTFLAG_TEXMTX_ROTZERO) { - a->cosR = FX32_ONE; - a->sinR = 0; - } - if (anm->flag & NNS_G3D_MATANM_RESULTFLAG_TEXMTX_TRANSZERO) { - a->transS = a->transT = 0; - } - } - - (*calcTexMtx_[anm->flag & (NNS_G3D_MATANM_RESULTFLAG_TEXMTX_SCALEONE | - NNS_G3D_MATANM_RESULTFLAG_TEXMTX_ROTZERO | - NNS_G3D_MATANM_RESULTFLAG_TEXMTX_TRANSZERO)])(&data.m, anm); - - if (anm->magW != FX32_ONE) { - data.m._00 = (fx32)((fx64)anm->magW * data.m._00 >> FX32_SHIFT); - data.m._01 = (fx32)((fx64)anm->magW * data.m._01 >> FX32_SHIFT); - data.m._30 = (fx32)((fx64)anm->magW * data.m._30 >> FX32_SHIFT); - } - - if (anm->magH != FX32_ONE) { - data.m._10 = (fx32)((fx64)anm->magH * data.m._10 >> FX32_SHIFT); - data.m._11 = (fx32)((fx64)anm->magH * data.m._11 >> FX32_SHIFT); - data.m._31 = (fx32)((fx64)anm->magH * data.m._31 >> FX32_SHIFT); - } - - NNS_G3dGeBufferData_N((u32 *)&data.cmd, sizeof(data) / 4); -} - -#endif diff --git a/subprojects/NitroSystem/libraries/g3d/src/gecom.c b/subprojects/NitroSystem/libraries/g3d/src/gecom.c deleted file mode 100644 index 92369acbfb..0000000000 --- a/subprojects/NitroSystem/libraries/g3d/src/gecom.c +++ /dev/null @@ -1,152 +0,0 @@ -#include - -static volatile int NNS_G3dFlagGXDmaAsync = 0; - -static NNSG3dGeBuffer * NNS_G3dGeBuffer = NULL; - -BOOL NNS_G3dGeIsSendDLBusy (void) { - return NNS_G3dFlagGXDmaAsync; -} - -BOOL NNS_G3dGeIsBufferExist (void) { - return (NNS_G3dGeBuffer != NULL); -} - -void NNS_G3dGeSetBuffer (NNSG3dGeBuffer * p) { - NNS_G3D_NULL_ASSERT(p); - - if (NNS_G3dGeBuffer == NULL) { - p->idx = 0; - NNS_G3dGeBuffer = p; - } -} - -NNSG3dGeBuffer * NNS_G3dGeReleaseBuffer (void) { - NNSG3dGeBuffer * p; - - NNS_G3dGeFlushBuffer(); - - p = NNS_G3dGeBuffer; - NNS_G3dGeBuffer = NULL; - return p; -} - -static NNS_G3D_INLINE void sendNB (const void * src, void * dst, u32 szByte) { - MI_CpuSend32(src, dst, szByte); -} - -void NNS_G3dGeFlushBuffer (void) { - if (NNS_G3dFlagGXDmaAsync) { - NNS_G3dGeWaitSendDL(); - } - - if (NNS_G3dGeBuffer && - NNS_G3dGeBuffer->idx > 0) { - sendNB( - &NNS_G3dGeBuffer->data[0], - (void *)®_G3X_GXFIFO, - NNS_G3dGeBuffer->idx << 2 - ); - NNS_G3dGeBuffer->idx = 0; - } -} - -void NNS_G3dGeWaitSendDL (void) { - while (NNS_G3dFlagGXDmaAsync) { - ; - } -} - -BOOL NNS_G3dGeIsImmOK (void) { - return (NNS_G3dGeBuffer == NULL || NNS_G3dGeBuffer->idx == 0) && - !NNS_G3dGeIsSendDLBusy(); -} - -BOOL NNS_G3dGeIsBufferOK (u32 numWord) { - return (NNS_G3dGeBuffer != NULL) && - (NNS_G3dGeBuffer->idx + numWord <= NNS_G3D_SIZE_COMBUFFER); -} - -static void simpleUnlock_ (void * arg) { - *((volatile int *)arg) = 0; -} - -#ifdef NNS_G3D_USE_FASTGXDMA -static BOOL NNS_G3dFlagUseFastDma = TRUE; -#else -static BOOL NNS_G3dFlagUseFastDma = FALSE; -#endif - -void NNS_G3dGeUseFastDma (BOOL cond) { - NNS_G3dFlagUseFastDma = (cond); -} - -void NNS_G3dGeSendDL (const void * src, u32 szByte) { - NNS_G3D_NULL_ASSERT(src); - NNS_G3D_ASSERT(szByte >= 4); - - if (szByte < 256 || GX_DMAID == GX_DMA_NOT_USE) { - NNS_G3dGeBufferOP_N( - *(const u32 *)src, - (const u32 *)src + 1, - (szByte >> 2) - 1 - ); - } else { - NNS_G3dGeFlushBuffer(); - NNS_G3dFlagGXDmaAsync = 1; - - if (NNS_G3dFlagUseFastDma) { - MI_SendGXCommandAsyncFast( - GX_DMAID, - src, - szByte, - &simpleUnlock_, - (void *)&NNS_G3dFlagGXDmaAsync - ); - } else { - MI_SendGXCommandAsync( - GX_DMAID, - src, - szByte, - &simpleUnlock_, - (void *)&NNS_G3dFlagGXDmaAsync - ); - } - } -} - -void NNS_G3dGeBufferOP_N (u32 op, const u32 * args, u32 num) { - if (NNS_G3dGeBuffer) { - if (NNS_G3dFlagGXDmaAsync) { - if (NNS_G3dGeBuffer->idx + 1 + num <= NNS_G3D_SIZE_COMBUFFER) { - NNS_G3dGeBuffer->data[NNS_G3dGeBuffer->idx++] = op; - if (num > 0) { - MI_CpuCopyFast( - args, - &NNS_G3dGeBuffer->data[NNS_G3dGeBuffer->idx], - num << 2 - ); - - NNS_G3dGeBuffer->idx += num; - } - - return; - } - } - - if (NNS_G3dGeBuffer->idx != 0) { - NNS_G3dGeFlushBuffer(); - } else { - if (NNS_G3dFlagGXDmaAsync) { - NNS_G3dGeWaitSendDL(); - } - } - } else { - if (NNS_G3dFlagGXDmaAsync) { - NNS_G3dGeWaitSendDL(); - } - } - - reg_G3X_GXFIFO = op; - sendNB(args, (void *)®_G3X_GXFIFO, num << 2); -} diff --git a/subprojects/NitroSystem/libraries/g3d/src/glbstate.c b/subprojects/NitroSystem/libraries/g3d/src/glbstate.c deleted file mode 100644 index f338ac832d..0000000000 --- a/subprojects/NitroSystem/libraries/g3d/src/glbstate.c +++ /dev/null @@ -1,521 +0,0 @@ -#include -#include - -void NNS_G3dGlbInit (void) { - NNS_G3dGlb.cmd0 = GX_PACK_OP(G3OP_MTX_MODE, G3OP_MTX_LOAD_4x4, G3OP_MTX_MODE, G3OP_MTX_LOAD_4x3); - NNS_G3dGlb.mtxmode_proj = GX_MTXMODE_PROJECTION; - NNS_G3dGlb.mtxmode_posvec = GX_MTXMODE_POSITION_VECTOR; - - NNS_G3dGlb.cmd1 = GX_PACK_OP(G3OP_LIGHT_VECTOR, G3OP_LIGHT_VECTOR, G3OP_LIGHT_VECTOR, G3OP_LIGHT_VECTOR); - - NNS_G3dGlb.cmd2 = GX_PACK_OP(G3OP_DIF_AMB, G3OP_SPE_EMI, G3OP_POLYGON_ATTR, G3OP_VIEWPORT); - - NNS_G3dGlb.cmd3 = GX_PACK_OP(G3OP_LIGHT_COLOR, G3OP_LIGHT_COLOR, G3OP_LIGHT_COLOR, G3OP_LIGHT_COLOR); - - NNS_G3dGlb.cmd4 = GX_PACK_OP(G3OP_MTX_MULT_4x3, G3OP_MTX_SCALE, G3OP_TEXIMAGE_PARAM, G3OP_NOP); - - MTX_Identity43(&NNS_G3dGlb.cameraMtx); - MTX_Identity44(&NNS_G3dGlb.projMtx); - - NNS_G3dGlb.lightVec[0] = GX_PACK_LIGHTVECTOR_PARAM(0, -FX16_SQRT1_3, -FX16_SQRT1_3, -FX16_SQRT1_3); - NNS_G3dGlb.lightVec[1] = GX_PACK_LIGHTVECTOR_PARAM(1, -FX16_ONE, 0, 0); - NNS_G3dGlb.lightVec[2] = GX_PACK_LIGHTVECTOR_PARAM(2, FX16_ONE - 1, 0, 0); - NNS_G3dGlb.lightVec[3] = GX_PACK_LIGHTVECTOR_PARAM(3, 0, -FX16_ONE, 0); - - NNS_G3dGlb.prmMatColor0 = GX_PACK_DIFFAMB_PARAM( - GX_RGB(16, 16, 16), - GX_RGB(16, 16, 16), - TRUE - ); - NNS_G3dGlb.prmMatColor1 = GX_PACK_SPECEMI_PARAM( - GX_RGB(16, 16, 16), - GX_RGB(16, 16, 16), - TRUE - ); - - NNS_G3dGlb.prmPolygonAttr = GX_PACK_POLYGONATTR_PARAM( - 0xf, - GX_POLYGONMODE_MODULATE, - GX_CULL_BACK, - 0, - 31, - GX_POLYGON_ATTR_MISC_NONE - ); - - NNS_G3dGlb.prmViewPort = GX_PACK_VIEWPORT_PARAM(0, 0, 255, 191); - - NNS_G3dGlb.lightColor[0] = GX_PACK_LIGHTCOLOR_PARAM(0, GX_RGB(31, 31, 31)); - NNS_G3dGlb.lightColor[1] = GX_PACK_LIGHTCOLOR_PARAM(1, GX_RGB(31, 0, 0)); - NNS_G3dGlb.lightColor[2] = GX_PACK_LIGHTCOLOR_PARAM(2, GX_RGB(0, 31, 0)); - NNS_G3dGlb.lightColor[3] = GX_PACK_LIGHTCOLOR_PARAM(3, GX_RGB(0, 0, 31)); - - NNS_G3dGlb.prmBaseTrans.x = 0; - NNS_G3dGlb.prmBaseTrans.y = 0; - NNS_G3dGlb.prmBaseTrans.z = 0; - - MTX_Identity33(&NNS_G3dGlb.prmBaseRot); - - NNS_G3dGlb.prmBaseScale.x = FX32_ONE; - NNS_G3dGlb.prmBaseScale.y = FX32_ONE; - NNS_G3dGlb.prmBaseScale.z = FX32_ONE; - NNS_G3dGlb.prmTexImageParam = 0; - - NNS_G3dGlb.flag = (NNSG3dGlbFlag)0; - - NNS_G3dGlb.camPos.x = NNS_G3dGlb.camPos.y = NNS_G3dGlb.camPos.z = 0; - NNS_G3dGlb.camUp.x = NNS_G3dGlb.camUp.z = 0; - NNS_G3dGlb.camUp.y = FX32_ONE; - NNS_G3dGlb.camTarget.x = NNS_G3dGlb.camTarget.y = 0; - NNS_G3dGlb.camTarget.z = -FX32_ONE; -} - -void NNS_G3dGlbFlushP (void) { - static const u32 sz = (sizeof(NNS_G3dGlb.cmd0) + - sizeof(NNS_G3dGlb.mtxmode_proj) + - sizeof(NNS_G3dGlb.projMtx) + - sizeof(NNS_G3dGlb.mtxmode_posvec) + - sizeof(NNS_G3dGlb.cameraMtx) + - sizeof(NNS_G3dGlb.cmd1) + - sizeof(NNS_G3dGlb.lightVec[0]) * 4 + - sizeof(NNS_G3dGlb.cmd2) + - sizeof(NNS_G3dGlb.prmMatColor0) + - sizeof(NNS_G3dGlb.prmMatColor1) + - sizeof(NNS_G3dGlb.prmPolygonAttr) + - sizeof(NNS_G3dGlb.prmViewPort) + - sizeof(NNS_G3dGlb.cmd4) + - sizeof(NNS_G3dGlb.prmBaseTrans) + - sizeof(NNS_G3dGlb.prmBaseRot) + - sizeof(NNS_G3dGlb.prmBaseScale) + - sizeof(NNS_G3dGlb.prmTexImageParam) + - sizeof(NNS_G3dGlb.cmd3) + - sizeof(NNS_G3dGlb.lightColor[0]) * 4) / 4; - - NNS_G3D_ASSERT( - NNS_G3dGlb.cmd0 == ((G3OP_MTX_MODE << 0) | - (G3OP_MTX_LOAD_4x4 << 8) | - (G3OP_MTX_MODE << 16) | - (G3OP_MTX_LOAD_4x3 << 24)) - ); - NNS_G3D_ASSERT(NNS_G3dGlb.mtxmode_proj == GX_MTXMODE_PROJECTION); - NNS_G3D_ASSERT(NNS_G3dGlb.mtxmode_posvec == GX_MTXMODE_POSITION_VECTOR); - NNS_G3D_ASSERT( - NNS_G3dGlb.cmd1 == ((G3OP_LIGHT_VECTOR << 0) | - (G3OP_LIGHT_VECTOR << 8) | - (G3OP_LIGHT_VECTOR << 16) | - (G3OP_LIGHT_VECTOR << 24)) - ); - NNS_G3D_ASSERT( - NNS_G3dGlb.cmd2 == ((G3OP_DIF_AMB << 0) | - (G3OP_SPE_EMI << 8) | - (G3OP_POLYGON_ATTR << 16) | - (G3OP_VIEWPORT << 24)) - ); - NNS_G3D_ASSERT( - NNS_G3dGlb.cmd3 == ((G3OP_LIGHT_COLOR << 0) | - (G3OP_LIGHT_COLOR << 8) | - (G3OP_LIGHT_COLOR << 16) | - (G3OP_LIGHT_COLOR << 24)) - ); - NNS_G3D_ASSERT( - NNS_G3dGlb.cmd4 == ((G3OP_MTX_MULT_4x3 << 0) | - (G3OP_MTX_SCALE << 8) | - (G3OP_TEXIMAGE_PARAM << 16)) - ); - - NNS_G3dGeBufferData_N((u32 *)&NNS_G3dGlb.cmd0, sz); - - NNS_G3dGlb.flag &= ~NNS_G3D_GLB_FLAG_FLUSH_WVP; - NNS_G3dGlb.flag &= ~NNS_G3D_GLB_FLAG_FLUSH_VP; -} - -void NNS_G3dGlbFlushVP (void) { - static const u32 sz = (sizeof(NNS_G3dGlb.cmd1) + - sizeof(NNS_G3dGlb.lightVec[0]) * 4 + - sizeof(NNS_G3dGlb.cmd2) + - sizeof(NNS_G3dGlb.prmMatColor0) + - sizeof(NNS_G3dGlb.prmMatColor1) + - sizeof(NNS_G3dGlb.prmPolygonAttr) + - sizeof(NNS_G3dGlb.prmViewPort) + - sizeof(NNS_G3dGlb.cmd3) + - sizeof(NNS_G3dGlb.lightColor[0]) * 4 + - sizeof(NNS_G3dGlb.cmd4) + - sizeof(NNS_G3dGlb.prmBaseRot) + - sizeof(NNS_G3dGlb.prmBaseTrans) + - sizeof(NNS_G3dGlb.prmBaseScale) + - sizeof(NNS_G3dGlb.prmTexImageParam)) / 4; - - NNS_G3D_ASSERT( - NNS_G3dGlb.cmd0 == ((G3OP_MTX_MODE << 0) | - (G3OP_MTX_LOAD_4x4 << 8) | - (G3OP_MTX_MODE << 16) | - (G3OP_MTX_LOAD_4x3 << 24)) - ); - NNS_G3D_ASSERT(NNS_G3dGlb.mtxmode_proj == GX_MTXMODE_PROJECTION); - NNS_G3D_ASSERT(NNS_G3dGlb.mtxmode_posvec == GX_MTXMODE_POSITION_VECTOR); - NNS_G3D_ASSERT( - NNS_G3dGlb.cmd1 == ((G3OP_LIGHT_VECTOR << 0) | - (G3OP_LIGHT_VECTOR << 8) | - (G3OP_LIGHT_VECTOR << 16) | - (G3OP_LIGHT_VECTOR << 24)) - ); - NNS_G3D_ASSERT( - NNS_G3dGlb.cmd2 == ((G3OP_DIF_AMB << 0) | - (G3OP_SPE_EMI << 8) | - (G3OP_POLYGON_ATTR << 16) | - (G3OP_VIEWPORT << 24)) - ); - NNS_G3D_ASSERT( - NNS_G3dGlb.cmd3 == ((G3OP_LIGHT_COLOR << 0) | - (G3OP_LIGHT_COLOR << 8) | - (G3OP_LIGHT_COLOR << 16) | - (G3OP_LIGHT_COLOR << 24)) - ); - NNS_G3D_ASSERT( - NNS_G3dGlb.cmd4 == ((G3OP_MTX_MULT_4x3 << 0) | - (G3OP_MTX_SCALE << 8) | - (G3OP_TEXIMAGE_PARAM << 16)) - ); - - NNS_G3dGeBufferOP_N( - GX_PACK_OP(G3OP_MTX_MODE, G3OP_MTX_LOAD_4x4, G3OP_NOP, G3OP_NOP), - (u32 *)&NNS_G3dGlb.mtxmode_proj, - (sizeof(NNS_G3dGlb.mtxmode_proj) + - sizeof(NNS_G3dGlb.projMtx)) / 4 - ); - - NNS_G3dGeBufferOP_N( - (G3OP_MTX_MULT_4x3 << 0), - (u32 *)&NNS_G3dGlb.cameraMtx, - sizeof(NNS_G3dGlb.cameraMtx) / 4 - ); - - NNS_G3dGeMtxMode(GX_MTXMODE_POSITION_VECTOR); - NNS_G3dGeBufferOP_N(G3OP_MTX_IDENTITY, (u32 *)&NNS_G3dGlb.cmd1, sz); - - NNS_G3dGlb.flag &= ~NNS_G3D_GLB_FLAG_FLUSH_WVP; - NNS_G3dGlb.flag |= NNS_G3D_GLB_FLAG_FLUSH_VP; -} - -void NNS_G3dGlbFlushWVP (void) { - static const u32 sz = (sizeof(NNS_G3dGlb.cmd1) + - sizeof(NNS_G3dGlb.lightVec[0]) * 4 + - sizeof(NNS_G3dGlb.cmd2) + - sizeof(NNS_G3dGlb.prmMatColor0) + - sizeof(NNS_G3dGlb.prmMatColor1) + - sizeof(NNS_G3dGlb.prmPolygonAttr) + - sizeof(NNS_G3dGlb.prmViewPort) + - sizeof(NNS_G3dGlb.cmd3) + - sizeof(NNS_G3dGlb.lightColor[0]) * 4) / 4; - - NNS_G3D_ASSERT( - NNS_G3dGlb.cmd0 == ((G3OP_MTX_MODE << 0) | - (G3OP_MTX_LOAD_4x4 << 8) | - (G3OP_MTX_MODE << 16) | - (G3OP_MTX_LOAD_4x3 << 24)) - ); - NNS_G3D_ASSERT(NNS_G3dGlb.mtxmode_proj == GX_MTXMODE_PROJECTION); - NNS_G3D_ASSERT(NNS_G3dGlb.mtxmode_posvec == GX_MTXMODE_POSITION_VECTOR); - NNS_G3D_ASSERT( - NNS_G3dGlb.cmd1 == ((G3OP_LIGHT_VECTOR << 0) | - (G3OP_LIGHT_VECTOR << 8) | - (G3OP_LIGHT_VECTOR << 16) | - (G3OP_LIGHT_VECTOR << 24)) - ); - NNS_G3D_ASSERT( - NNS_G3dGlb.cmd2 == ((G3OP_DIF_AMB << 0) | - (G3OP_SPE_EMI << 8) | - (G3OP_POLYGON_ATTR << 16) | - (G3OP_VIEWPORT << 24)) - ); - NNS_G3D_ASSERT( - NNS_G3dGlb.cmd3 == ((G3OP_LIGHT_COLOR << 0) | - (G3OP_LIGHT_COLOR << 8) | - (G3OP_LIGHT_COLOR << 16) | - (G3OP_LIGHT_COLOR << 24)) - ); - NNS_G3D_ASSERT( - NNS_G3dGlb.cmd4 == ((G3OP_MTX_MULT_4x3 << 0) | - (G3OP_MTX_SCALE << 8) | - (G3OP_TEXIMAGE_PARAM << 16)) - ); - - NNS_G3dGeBufferOP_N( - GX_PACK_OP(G3OP_MTX_MODE, G3OP_MTX_LOAD_4x4, G3OP_NOP, G3OP_NOP), - (u32 *)&NNS_G3dGlb.mtxmode_proj, - (sizeof(NNS_G3dGlb.mtxmode_proj) + - sizeof(NNS_G3dGlb.projMtx)) / 4 - ); - - NNS_G3dGeBufferOP_N( - (G3OP_MTX_MULT_4x3 << 0), - (u32 *)&NNS_G3dGlb.cameraMtx, - sizeof(NNS_G3dGlb.cameraMtx) / 4 - ); - - NNS_G3dGeBufferOP_N( - GX_PACK_OP(G3OP_MTX_MULT_4x3, G3OP_MTX_SCALE, G3OP_NOP, G3OP_NOP), - (u32 *)&NNS_G3dGlb.prmBaseRot, - (sizeof(NNS_G3dGlb.prmBaseRot) + - sizeof(NNS_G3dGlb.prmBaseTrans) + - sizeof(NNS_G3dGlb.prmBaseScale)) / 4 - ); - - NNS_G3dGeMtxMode(GX_MTXMODE_POSITION_VECTOR); - - { - MtxFx43 inv; - int result; - result = MTX_Inverse33(&NNS_G3dGlb.prmBaseRot, (MtxFx33 *)&inv); - NNS_G3D_ASSERT(!result); - NNS_G3dGeLoadMtx43(&inv); - } - - NNS_G3dGeBufferData_N((u32 *)&NNS_G3dGlb.cmd1, sz); - - NNS_G3dGeIdentity(); - - NNS_G3dGeBufferOP_N(G3OP_TEXIMAGE_PARAM, &NNS_G3dGlb.prmTexImageParam, 1); - - NNS_G3dGlb.flag |= NNS_G3D_GLB_FLAG_FLUSH_WVP; - NNS_G3dGlb.flag &= ~NNS_G3D_GLB_FLAG_FLUSH_VP; -} - -void NNS_G3dGlbSetBaseTrans (const VecFx32 * pTrans) { - NNS_G3D_NULL_ASSERT(pTrans); - - if (pTrans) { - NNS_G3dGlb.prmBaseTrans = *pTrans; - NNS_G3dGlb.flag &= ~(NNS_G3D_GLB_FLAG_INVBASE_UPTODATE | - NNS_G3D_GLB_FLAG_INVBASECAMERA_UPTODATE | - NNS_G3D_GLB_FLAG_BASECAMERA_UPTODATE); - } -} - -void NNS_G3dGlbSetBaseScale (const VecFx32 * pScale) { - NNS_G3D_NULL_ASSERT(pScale); - - if (pScale) { - NNS_G3dGlb.prmBaseScale = *pScale; - NNS_G3dGlb.flag &= ~(NNS_G3D_GLB_FLAG_INVBASE_UPTODATE | - NNS_G3D_GLB_FLAG_INVBASECAMERA_UPTODATE | - NNS_G3D_GLB_FLAG_BASECAMERA_UPTODATE); - } -} - -void NNS_G3dGlbLightVector (GXLightId lightID, fx16 x, fx16 y, fx16 z) { - GX_LIGHTID_ASSERT(lightID); - - NNS_G3D_ASSERT(x >= -FX16_ONE && x < FX16_ONE); - NNS_G3D_ASSERT(y >= -FX16_ONE && y < FX16_ONE); - NNS_G3D_ASSERT(z >= -FX16_ONE && z < FX16_ONE); - - NNS_G3dGlb.lightVec[lightID] = GX_PACK_LIGHTVECTOR_PARAM(lightID, x, y, z); -} - -void NNS_G3dGlbLightColor (GXLightId lightID, GXRgb rgb) { - GX_LIGHTID_ASSERT(lightID); - GXRGB_ASSERT(rgb); - - NNS_G3dGlb.lightColor[lightID] = GX_PACK_LIGHTCOLOR_PARAM(lightID, rgb); -} - -void NNS_G3dGlbMaterialColorDiffAmb (GXRgb diffuse, GXRgb ambient, BOOL IsSetVtxColor) { - GXRGB_ASSERT(diffuse); - GXRGB_ASSERT(ambient); - - NNS_G3dGlb.prmMatColor0 = GX_PACK_DIFFAMB_PARAM(diffuse, ambient, IsSetVtxColor); -} - -void NNS_G3dGlbMaterialColorSpecEmi (GXRgb specular, GXRgb emission, BOOL IsShininess) { - GXRGB_ASSERT(specular); - GXRGB_ASSERT(emission); - - NNS_G3dGlb.prmMatColor1 = GX_PACK_SPECEMI_PARAM(specular, emission, IsShininess); -} - -void NNS_G3dGlbPolygonAttr (int light, GXPolygonMode polyMode, GXCull cullMode, int polygonID, int alpha, int misc) { - GX_LIGHTMASK_ASSERT(light); - GX_POLYGONMODE_ASSERT(polyMode); - GX_CULL_ASSERT(cullMode); - GX_POLYGON_ATTR_POLYGONID_ASSERT(polygonID); - GX_POLYGON_ATTR_ALPHA_ASSERT(alpha); - - NNS_G3dGlb.prmPolygonAttr = GX_PACK_POLYGONATTR_PARAM( - light, - polyMode, - cullMode, - polygonID, - alpha, - misc - ); -} - -const MtxFx43 * NNS_G3dGlbGetInvW (void) { - if (!(NNS_G3dGlb.flag & NNS_G3D_GLB_FLAG_INVBASE_UPTODATE)) { - MtxFx43 tmp; - s32 result; - MTX_ScaleApply43( - (MtxFx43 *)&NNS_G3dGlb.prmBaseRot, - &tmp, - NNS_G3dGlb.prmBaseScale.x, - NNS_G3dGlb.prmBaseScale.y, - NNS_G3dGlb.prmBaseScale.z - ); - result = MTX_Inverse43(&tmp, &NNS_G3dGlb.invBaseMtx); - NNS_G3D_ASSERT(!result); - NNS_G3dGlb.flag |= NNS_G3D_GLB_FLAG_INVBASE_UPTODATE; - } - return &NNS_G3dGlb.invBaseMtx; -} - -const MtxFx43 * NNS_G3dGlbGetInvV (void) { - if (!(NNS_G3dGlb.flag & NNS_G3D_GLB_FLAG_INVCAMERA_UPTODATE)) { - s32 result = MTX_Inverse43(&NNS_G3dGlb.cameraMtx, &NNS_G3dGlb.invCameraMtx); - NNS_G3D_ASSERT(!result); - NNS_G3dGlb.flag |= NNS_G3D_GLB_FLAG_INVCAMERA_UPTODATE; - } - return &NNS_G3dGlb.invCameraMtx; -} - -static int mtx_inverse44 (const MtxFx44 * pSrc, MtxFx44 * pDst) { - MtxFx44 gjm; - int i, j, k; - fx64c ww; - fx32 w; - - SDK_NULL_ASSERT(pSrc); - SDK_NULL_ASSERT(pDst); - - MTX_Copy44(pSrc, &gjm); - MTX_Identity44(pDst); - - for (i = 0; i < 4; ++i) { - fx32 max = 0; - int swp = i; - - for ( k = i ; k < 4 ; k++ ) { - fx32 ftmp = (gjm.m[k][i] < 0) ? -gjm.m[k][i] : gjm.m[k][i]; - - if (ftmp > max) { - max = ftmp; - swp = k; - } - } - - if (max == 0) { - return -1; - } - - if (swp != i) { - for ( k = 0 ; k < 4 ; k++ ) { - fx32 tmp; - tmp = gjm.m[i][k]; - gjm.m[i][k] = gjm.m[swp][k]; - gjm.m[swp][k] = tmp; - - tmp = pDst->m[i][k]; - pDst->m[i][k] = pDst->m[swp][k]; - pDst->m[swp][k] = tmp; - } - } - - ww = FX_InvFx64c(gjm.m[i][i]); - for ( j = 0 ; j < 4 ; ++j ) { - gjm.m[i][j] = FX_Mul32x64c(gjm.m[i][j], ww); - pDst->m[i][j] = FX_Mul32x64c(pDst->m[i][j], ww); - } - - for ( k = 0 ; k < 4 ; ++k ) { - if (k == i) { - continue; - } - - w = gjm.m[k][i]; - for ( j = 0 ; j < 4 ; ++j ) { - gjm.m[k][j] -= (fx32)(((fx64)w * gjm.m[i][j]) >> FX32_SHIFT); - pDst->m[k][j] -= (fx32)(((fx64)w * pDst->m[i][j]) >> FX32_SHIFT); - } - } - } - return 0; -} - -const MtxFx44 * NNS_G3dGlbGetInvP (void) { - if (!(NNS_G3dGlb.flag & NNS_G3D_GLB_FLAG_INVPROJ_UPTODATE)) { - s32 result = mtx_inverse44(&NNS_G3dGlb.projMtx, &NNS_G3dGlb.invProjMtx); - NNS_G3D_ASSERT(!result); - NNS_G3dGlb.flag |= NNS_G3D_GLB_FLAG_INVPROJ_UPTODATE; - } - return &NNS_G3dGlb.invProjMtx; -} - -static void calcSrtCameraMtx_ (void) { - s32 result; - - MTX_Concat43( - (MtxFx43 *)&NNS_G3dGlb.prmBaseRot, - &NNS_G3dGlb.cameraMtx, - &NNS_G3dGlb.srtCameraMtx - ); - MTX_ScaleApply43( - &NNS_G3dGlb.srtCameraMtx, - &NNS_G3dGlb.srtCameraMtx, - NNS_G3dGlb.prmBaseScale.x, - NNS_G3dGlb.prmBaseScale.y, - NNS_G3dGlb.prmBaseScale.z - ); - result = MTX_Inverse43( - &NNS_G3dGlb.srtCameraMtx, - &NNS_G3dGlb.invSrtCameraMtx - ); - NNS_G3D_ASSERT(!result); -} - -const MtxFx43 * NNS_G3dGlbGetWV (void) { - if (!(NNS_G3dGlb.flag & NNS_G3D_GLB_FLAG_SRTCAMERA_UPTODATE)) { - calcSrtCameraMtx_(); - NNS_G3dGlb.flag |= NNS_G3D_GLB_FLAG_SRTCAMERA_UPTODATE; - } - - return &NNS_G3dGlb.srtCameraMtx; -} - -const MtxFx43 * NNS_G3dGlbGetInvWV (void) { - if (!(NNS_G3dGlb.flag & NNS_G3D_GLB_FLAG_SRTCAMERA_UPTODATE)) { - calcSrtCameraMtx_(); - NNS_G3dGlb.flag |= NNS_G3D_GLB_FLAG_SRTCAMERA_UPTODATE; - } - - return &NNS_G3dGlb.invSrtCameraMtx; -} - -const MtxFx44 * NNS_G3dGlbGetInvVP (void) { - if (!(NNS_G3dGlb.flag & NNS_G3D_GLB_FLAG_INVCAMERAPROJ_UPTODATE)) { - MtxFx44 tmp; - const MtxFx43 * invCam = NNS_G3dGlbGetInvV(); - const MtxFx44 * invProj = NNS_G3dGlbGetInvP(); - - MTX_Copy43To44(invCam, &tmp); - MTX_Concat44(invProj, &tmp, &NNS_G3dGlb.invCameraProjMtx); - - NNS_G3dGlb.flag |= NNS_G3D_GLB_FLAG_INVCAMERAPROJ_UPTODATE; - } - return &NNS_G3dGlb.invCameraProjMtx; -} - -void NNS_G3dGlbGetViewPort (int * px1, int * py1, int * px2, int * py2) { - if (px1) { - *px1 = (int)(NNS_G3dGlb.prmViewPort & 0xff); - } - if (py1) { - *py1 = (int)((NNS_G3dGlb.prmViewPort >> 8) & 0xff); - } - if (px2) { - *px2 = (int)((NNS_G3dGlb.prmViewPort >> 16) & 0xff); - } - if (py2) { - *py2 = (int)((NNS_G3dGlb.prmViewPort >> 24) & 0xff); - } -} - -NNSG3dGlb NNS_G3dGlb; diff --git a/subprojects/NitroSystem/libraries/g3d/src/kernel.c b/subprojects/NitroSystem/libraries/g3d/src/kernel.c deleted file mode 100644 index 9eb132cea1..0000000000 --- a/subprojects/NitroSystem/libraries/g3d/src/kernel.c +++ /dev/null @@ -1,819 +0,0 @@ -#include -#include -#include -#include - -u32 NNS_G3dAnmObjCalcSizeRequired (const void * pAnm, const NNSG3dResMdl * pMdl) { - const NNSG3dResAnmHeader * hdr; - NNS_G3D_NULL_ASSERT(pAnm); - NNS_G3D_NULL_ASSERT(pMdl); - if (!pAnm || !pMdl) { - return 0; - } - - hdr = (const NNSG3dResAnmHeader *)pAnm; - switch (hdr->category0) { - case 'M': - return NNS_G3D_ANMOBJ_SIZE_MATANM(pMdl); - break; - case 'J': - case 'V': - return NNS_G3D_ANMOBJ_SIZE_JNTANM(pMdl); - break; - default: - NNS_G3D_ASSERT(0); - return 0; - break; - } -} - -void NNS_G3dAnmObjInit (NNSG3dAnmObj * pAnmObj, void * pResAnm, const NNSG3dResMdl * pResMdl, const NNSG3dResTex * pResTex) { - const NNSG3dResAnmHeader * hdr; - u32 i; - NNS_G3D_NULL_ASSERT(pAnmObj); - NNS_G3D_NULL_ASSERT(pResAnm); - NNS_G3D_NULL_ASSERT(pResMdl); - - NNS_G3D_ASSERT(NNS_G3dAnmFmtNum <= NNS_G3D_ANMFMT_MAX); - - pAnmObj->frame = 0; - pAnmObj->resAnm = (void *)pResAnm; - - pAnmObj->next = NULL; - pAnmObj->priority = 127; - pAnmObj->ratio = FX32_ONE; - pAnmObj->resTex = pResTex; - pAnmObj->numMapData = 0; - pAnmObj->funcAnm = NULL; - - hdr = (const NNSG3dResAnmHeader *)pResAnm; - - for (i = 0; i < NNS_G3dAnmFmtNum; ++i) { - if (NNS_G3dAnmObjInitFuncArray[i].category0 == hdr->category0 && - NNS_G3dAnmObjInitFuncArray[i].category1 == hdr->category1) { - if (NNS_G3dAnmObjInitFuncArray[i].func) { - (*NNS_G3dAnmObjInitFuncArray[i].func)(pAnmObj, pResAnm, pResMdl); - } - break; - } - } - NNS_G3D_ASSERT(i != NNS_G3dAnmFmtNum); -} - -void NNS_G3dAnmObjEnableID (NNSG3dAnmObj * pAnmObj, int id) { - NNS_G3D_NULL_ASSERT(pAnmObj); - - if (id >= 0 && id < pAnmObj->numMapData && - (pAnmObj->mapData[id] & NNS_G3D_ANMOBJ_MAPDATA_EXIST)) { - pAnmObj->mapData[id] &= ~NNS_G3D_ANMOBJ_MAPDATA_DISABLED; - } -} - -void NNS_G3dAnmObjDisableID (NNSG3dAnmObj * pAnmObj, int id) { - NNS_G3D_NULL_ASSERT(pAnmObj); - - if (id >= 0 && id < pAnmObj->numMapData && - (pAnmObj->mapData[id] & NNS_G3D_ANMOBJ_MAPDATA_EXIST)) { - pAnmObj->mapData[id] |= NNS_G3D_ANMOBJ_MAPDATA_DISABLED; - } -} - -void NNS_G3dRenderObjInit (NNSG3dRenderObj * pRenderObj, NNSG3dResMdl * pResMdl) { - NNS_G3D_NULL_ASSERT(pRenderObj); - - MI_CpuClear32(pRenderObj, sizeof(NNSG3dRenderObj)); - - pRenderObj->funcBlendMat = NNS_G3dFuncBlendMatDefault; - pRenderObj->funcBlendJnt = NNS_G3dFuncBlendJntDefault; - pRenderObj->funcBlendVis = NNS_G3dFuncBlendVisDefault; - - pRenderObj->resMdl = pResMdl; -} - -static void addLink_ (NNSG3dAnmObj * * l, NNSG3dAnmObj * item) { -#ifdef NITRO_DEBUG - - { - NNSG3dAnmObj * p = *l; - while (p) { - NNS_G3D_ASSERT(p != item); - p = p->next; - } - } -#endif - if (!(*l)) { - *l = item; - } else if (!((*l)->next)) { - if ((*l)->priority > item->priority) { - NNSG3dAnmObj * p = item; - while (p->next) { - p = p->next; - } - p->next = (*l); - *l = item; - } else { - (*l)->next = item; - } - } else { - NNSG3dAnmObj * p = *l; - NNSG3dAnmObj * x = (*l)->next; - - while (x) { - if (x->priority >= item->priority) { - NNSG3dAnmObj * pp = item; - while (pp->next) { - pp = pp->next; - } - p->next = item; - pp->next = x; - return; - } - p = x; - x = x->next; - } - - p->next = item; - } -} - -static void updateHintVec_ (u32 * pVec, const NNSG3dAnmObj * pAnmObj) { - const NNSG3dAnmObj * p = pAnmObj; - while (p) { - int i; - for (i = 0; i < p->numMapData; ++i) { - if (p->mapData[i] & NNS_G3D_ANMOBJ_MAPDATA_EXIST) { - pVec[i >> 5] |= 1 << (i & 31); - } - } - p = p->next; - } -} - -void NNS_G3dRenderObjAddAnmObj (NNSG3dRenderObj * pRenderObj, NNSG3dAnmObj * pAnmObj) { - const NNSG3dResAnmHeader * hdr; - NNS_G3D_NULL_ASSERT(pRenderObj); - NNS_G3D_NULL_ASSERT(pAnmObj); - NNS_G3D_NULL_ASSERT(pAnmObj->resAnm); - - if (pAnmObj && pAnmObj->resAnm) { - hdr = (const NNSG3dResAnmHeader *)pAnmObj->resAnm; - - switch (hdr->category0) { - case 'M': - updateHintVec_(&pRenderObj->hintMatAnmExist[0], pAnmObj); - addLink_(&pRenderObj->anmMat, pAnmObj); - break; - case 'J': - updateHintVec_(&pRenderObj->hintJntAnmExist[0], pAnmObj); - addLink_(&pRenderObj->anmJnt, pAnmObj); - break; - case 'V': - updateHintVec_(&pRenderObj->hintVisAnmExist[0], pAnmObj); - addLink_(&pRenderObj->anmVis, pAnmObj); - break; - default: - NNS_G3D_ASSERT(0); - break; - } - } -} - -static BOOL removeLink_ (NNSG3dAnmObj * * l, NNSG3dAnmObj * item) { - NNSG3dAnmObj * p; - NNSG3dAnmObj * pp; - - if (!*l) { - return FALSE; - } - - if (*l == item) { - *l = (*l)->next; - item->next = NULL; - return TRUE; - } - - p = (*l)->next; - pp = (*l); - while (p) { - if (p == item) { - pp->next = p->next; - p->next = NULL; - - return TRUE; - } - pp = p; - p = p->next; - } - return FALSE; -} - -void NNS_G3dRenderObjRemoveAnmObj (NNSG3dRenderObj * pRenderObj, NNSG3dAnmObj * pAnmObj) { - NNS_G3D_NULL_ASSERT(pRenderObj); - NNS_G3D_NULL_ASSERT(pAnmObj); - - if (removeLink_(&pRenderObj->anmMat, pAnmObj) || - removeLink_(&pRenderObj->anmJnt, pAnmObj) || - removeLink_(&pRenderObj->anmVis, pAnmObj)) { - NNS_G3dRenderObjSetFlag(pRenderObj, NNS_G3D_RENDEROBJ_FLAG_HINT_OBSOLETE); - return; - } - - NNS_G3D_WARNING(0, "An AnmObj was not removed in NNS_G3dRenderObjRemoveAnmObj"); -} - -void NNS_G3dRenderObjSetCallBack (NNSG3dRenderObj * pRenderObj, NNSG3dSbcCallBackFunc func, u8 *, u8 cmd, NNSG3dSbcCallBackTiming timing) { - NNS_G3D_NULL_ASSERT(pRenderObj); - - pRenderObj->cbFunc = func; - pRenderObj->cbCmd = cmd; - pRenderObj->cbTiming = (u8)timing; -} - -void NNS_G3dRenderObjResetCallBack (NNSG3dRenderObj * pRenderObj) { - NNS_G3D_NULL_ASSERT(pRenderObj); - - pRenderObj->cbFunc = NULL; - pRenderObj->cbCmd = 0; - pRenderObj->cbTiming = 0; -} - -void NNS_G3dRenderObjSetInitFunc (NNSG3dRenderObj * pRenderObj, NNSG3dSbcCallBackFunc func) { - NNS_G3D_NULL_ASSERT(pRenderObj); - pRenderObj->cbInitFunc = func; -} - -u32 NNS_G3dTexGetRequiredSize (const NNSG3dResTex * pTex) { - NNS_G3D_NULL_ASSERT(pTex); - - if (pTex) { - return (u32)(pTex->texInfo.sizeTex << 3); - } else { - return 0; - } -} - -u32 NNS_G3dTex4x4GetRequiredSize (const NNSG3dResTex * pTex) { - NNS_G3D_NULL_ASSERT(pTex); - - if (pTex) { - return (u32)(pTex->tex4x4Info.sizeTex << 3); - } else { - return 0; - } -} - -void NNS_G3dTexSetTexKey (NNSG3dResTex * pTex, NNSG3dTexKey texKey, NNSG3dTexKey tex4x4Key) { - if (texKey > 0) { - NNS_G3D_NULL_ASSERT(pTex); - NNS_G3D_ASSERTMSG( - !(pTex->texInfo.flag & NNS_G3D_RESTEX_LOADED), - "NNS_G3dTexSetTexKey: Tex already loaded." - ); - NNS_G3D_ASSERTMSG( - (pTex->texInfo.sizeTex << 3) <= NNS_GfdGetTexKeySize(texKey), - "NNS_G3dTexSetTexKey: texKey size not enough, " - "0x%05x bytes required.", pTex->texInfo.sizeTex << 3 - ); - pTex->texInfo.vramKey = texKey; - } - - if (tex4x4Key > 0) { - NNS_G3D_ASSERTMSG( - !(pTex->tex4x4Info.flag & NNS_G3D_RESTEX4x4_LOADED), - "NNS_G3dTexSetTexKey(4x4): Tex already loaded." - ); - NNS_G3D_ASSERTMSG( - tex4x4Key & 0x80000000, - "NNS_G3dTexSetTexKey(4x4): texKey is not for 4x4comp textures" - ); - NNS_G3D_ASSERTMSG( - (pTex->tex4x4Info.sizeTex << 3) <= NNS_GfdGetTexKeySize(tex4x4Key), - "NNS_G3dTexSetTexKey(4x4): texKey size not enough, " - "0x%05x bytes required.", pTex->tex4x4Info.sizeTex << 3 - ); - pTex->tex4x4Info.vramKey = tex4x4Key; - } -} - -void NNS_G3dTexLoad (NNSG3dResTex * pTex, BOOL exec_begin_end) { - NNS_G3D_NULL_ASSERT(pTex); - NNS_G3D_WARNING( - !(pTex->texInfo.flag & NNS_G3D_RESTEX_LOADED), - "NNS_G3dTexLoad: texture already loaded" - ); - NNS_G3D_WARNING( - !(pTex->tex4x4Info.flag & NNS_G3D_RESTEX4x4_LOADED), - "NNS_G3dTex4x4Load: texture already loaded" - ); - - if (exec_begin_end) { - GX_BeginLoadTex(); - } - - { - u32 sz; - const void * pData; - u32 from; - - sz = (u32)pTex->texInfo.sizeTex << 3; - if (sz > 0) { - NNS_G3D_ASSERT(pTex->texInfo.vramKey != 0); - NNS_G3D_ASSERTMSG( - sz <= NNS_GfdGetTexKeySize(pTex->texInfo.vramKey), - "NNS_G3dTexLoad: texKey size not enough, " - "0x%05x bytes required.", sz - ); - - pData = NNS_G3dGetTexData(pTex); - from = NNS_GfdGetTexKeyAddr(pTex->texInfo.vramKey); - - GX_LoadTex(pData, from, sz); - - pTex->texInfo.flag |= NNS_G3D_RESTEX_LOADED; - } - } - - { - u32 sz; - const void * pData; - const void * pDataPlttIdx; - u32 from; - - sz = (u32)pTex->tex4x4Info.sizeTex << 3; - - if (sz > 0) { - NNS_G3D_ASSERT(pTex->tex4x4Info.sizeTex != 0); - NNS_G3D_ASSERTMSG( - NNS_GfdGetTexKey4x4Flag(pTex->tex4x4Info.vramKey), - "NNS_G3dTexLoad(4x4): texKey is not for 4x4comp textures" - ); - NNS_G3D_ASSERTMSG( - sz <= NNS_GfdGetTexKeySize(pTex->tex4x4Info.vramKey), - "NNS_G3dTexLoad(4x4): texKey size not enough, " - "0x%05x bytes required.", sz - ); - - pData = NNS_G3dGetTex4x4Data(pTex); - pDataPlttIdx = NNS_G3dGetTex4x4PlttIdxData(pTex); - from = NNS_GfdGetTexKeyAddr(pTex->tex4x4Info.vramKey); - - GX_LoadTex(pData, from, sz); - GX_LoadTex(pDataPlttIdx, GX_COMP4x4_PLTT_IDX(from), sz >> 1); - - pTex->tex4x4Info.flag |= NNS_G3D_RESTEX4x4_LOADED; - } - } - - if (exec_begin_end) { - GX_EndLoadTex(); - } -} - -void NNS_G3dTexReleaseTexKey (NNSG3dResTex * pTex, NNSG3dTexKey * texKey, NNSG3dTexKey * tex4x4Key) { - NNS_G3D_NULL_ASSERT(pTex); - NNS_G3D_NULL_ASSERT(texKey); - NNS_G3D_NULL_ASSERT(tex4x4Key); - - if (texKey) { - pTex->texInfo.flag &= ~NNS_G3D_RESTEX_LOADED; - *texKey = pTex->texInfo.vramKey; - pTex->texInfo.vramKey = 0; - } - - if (tex4x4Key) { - pTex->tex4x4Info.flag &= ~NNS_G3D_RESTEX4x4_LOADED; - *tex4x4Key = pTex->tex4x4Info.vramKey; - pTex->tex4x4Info.vramKey = 0; - } -} - -u32 NNS_G3dPlttGetRequiredSize (const NNSG3dResTex * pTex) { - NNS_G3D_NULL_ASSERT(pTex); - - if (pTex) { - return (u32)(pTex->plttInfo.sizePltt << 3); - } else { - return 0; - } -} - -void NNS_G3dPlttSetPlttKey (NNSG3dResTex * pTex, NNSG3dPlttKey plttKey) { - NNS_G3D_NULL_ASSERT(pTex); - NNS_G3D_ASSERTMSG( - !(pTex->plttInfo.flag & NNS_G3D_RESPLTT_LOADED), - "NNS_G3dPlttSetPlttKey: Palette already loaded." - ); - NNS_G3D_ASSERTMSG( - !(pTex->plttInfo.sizePltt > (plttKey >> 16)), - "NNS_G3dPlttSetPlttKey: plttKey size not enough, " - "0x%05x bytes required.", pTex->plttInfo.sizePltt << 3 - ); - - pTex->plttInfo.vramKey = plttKey; -} - -void NNS_G3dPlttLoad (NNSG3dResTex * pTex, BOOL exec_begin_end) { - NNS_G3D_NULL_ASSERT(pTex); - NNS_G3D_WARNING( - !(pTex->plttInfo.flag & NNS_G3D_RESPLTT_LOADED), - "NNS_G3dPlttLoad: texture already loaded" - ); - - if (exec_begin_end) { - GX_BeginLoadTexPltt(); - } - - { - u32 sz; - const void * pData; - u32 from; - - sz = (u32)pTex->plttInfo.sizePltt << 3; - pData = NNS_G3dGetPlttData(pTex); - from = NNS_GfdGetTexKeyAddr(pTex->plttInfo.vramKey); - - GX_LoadTexPltt(pData, from, sz); - - pTex->plttInfo.flag |= NNS_G3D_RESPLTT_LOADED; - } - - if (exec_begin_end) { - GX_EndLoadTexPltt(); - } -} - -NNSG3dPlttKey NNS_G3dPlttReleasePlttKey (NNSG3dResTex * pTex) { - u32 rval; - NNS_G3D_NULL_ASSERT(pTex); - - pTex->plttInfo.flag &= ~NNS_G3D_RESPLTT_LOADED; - - rval = pTex->plttInfo.vramKey; - pTex->plttInfo.vramKey = 0; - return rval; -} - -static void bindMdlTex_Internal_ (NNSG3dResMat * pMat, NNSG3dResDictTexToMatIdxData * pBindData, const NNSG3dResTex * pTex, const NNSG3dResDictTexData * pTexData) { - u8 * base = (u8 *)pMat + pBindData->offset; - u32 vramOffset; - u32 j; - - NNS_G3D_ASSERTMSG( - (pTex->texInfo.vramKey != 0 || pTex->texInfo.sizeTex == 0), - "No texture key assigned" - ); - NNS_G3D_ASSERTMSG( - (pTex->tex4x4Info.vramKey != 0 || pTex->tex4x4Info.sizeTex == 0), - "No texture(4x4) key assigned" - ); - - if ((pTexData->texImageParam & REG_G3_TEXIMAGE_PARAM_TEXFMT_MASK) != - (GX_TEXFMT_COMP4x4 << REG_G3_TEXIMAGE_PARAM_TEXFMT_SHIFT)) { - vramOffset = NNS_GfdGetTexKeyAddr(pTex->texInfo.vramKey) - >> NNS_GFD_TEXKEY_ADDR_SHIFT; - } else { - vramOffset = NNS_GfdGetTexKeyAddr(pTex->tex4x4Info.vramKey) - >> NNS_GFD_TEXKEY_ADDR_SHIFT; - } - - for (j = 0; j < pBindData->numIdx; ++j) { - s32 w, h; - - NNSG3dResMatData * matData = NNS_G3dGetMatDataByIdx(pMat, *(base + j)); - - matData->texImageParam |= (pTexData->texImageParam + vramOffset); - w = (s32)(((pTexData->extraParam) & NNS_G3D_TEXIMAGE_PARAMEX_ORIGW_MASK) >> NNS_G3D_TEXIMAGE_PARAMEX_ORIGW_SHIFT); - h = (s32)(((pTexData->extraParam) & NNS_G3D_TEXIMAGE_PARAMEX_ORIGH_MASK) >> NNS_G3D_TEXIMAGE_PARAMEX_ORIGH_SHIFT); - - matData->magW = (w != matData->origWidth) ? - FX_Div(w << FX32_SHIFT, matData->origWidth << FX32_SHIFT) : - FX32_ONE; - matData->magH = (h != matData->origHeight) ? - FX_Div(h << FX32_SHIFT, matData->origHeight << FX32_SHIFT) : - FX32_ONE; - } - - pBindData->flag |= 1; -} - -static void releaseMdlTex_Internal_ (NNSG3dResMat * pMat, NNSG3dResDictTexToMatIdxData * pData) { - u8 * base = (u8 *)pMat + pData->offset; - u32 j; - - for (j = 0; j < pData->numIdx; ++j) { - NNSG3dResMatData * matData = NNS_G3dGetMatDataByIdx(pMat, *(base + j)); - - matData->texImageParam &= REG_G3_TEXIMAGE_PARAM_TGEN_MASK | - REG_G3_TEXIMAGE_PARAM_FT_MASK | REG_G3_TEXIMAGE_PARAM_FS_MASK | - REG_G3_TEXIMAGE_PARAM_RT_MASK | REG_G3_TEXIMAGE_PARAM_RS_MASK; - matData->magH = matData->magW = FX32_ONE; - } - - pData->flag &= ~1; -} - -BOOL NNS_G3dBindMdlTex (NNSG3dResMdl * pMdl, const NNSG3dResTex * pTex) { - NNSG3dResMat * mat; - NNSG3dResDict * dictTex; - u32 i; - BOOL result = TRUE; - - NNS_G3D_NULL_ASSERT(pMdl); - NNS_G3D_NULL_ASSERT(pTex); - - mat = NNS_G3dGetMat(pMdl); - dictTex = (NNSG3dResDict *)((u8 *)mat + mat->ofsDictTexToMatList); - - for (i = 0; i < dictTex->numEntry; ++i) { - const NNSG3dResName * name = NNS_G3dGetResNameByIdx(dictTex, i); - - const NNSG3dResDictTexData * texData = NNS_G3dGetTexDataByName(pTex, name); - - if (texData) { - NNSG3dResDictTexToMatIdxData * data = - (NNSG3dResDictTexToMatIdxData *)NNS_G3dGetResDataByIdx(dictTex, i); - - if (!(data->flag & 1)) { - bindMdlTex_Internal_(mat, data, pTex, texData); - } - } else { - result = FALSE; - } - } - return result; -} - -BOOL NNS_G3dBindMdlTexEx (NNSG3dResMdl * pMdl, const NNSG3dResTex * pTex, const NNSG3dResName * pResName) { - NNSG3dResMat * mat; - NNSG3dResDict * dictTex; - const NNSG3dResDictTexData * texData; - NNSG3dResDictTexToMatIdxData * data; - - NNS_G3D_NULL_ASSERT(pMdl); - NNS_G3D_NULL_ASSERT(pTex); - NNS_G3D_NULL_ASSERT(pResName); - - mat = NNS_G3dGetMat(pMdl); - dictTex = (NNSG3dResDict *)((u8 *)mat + mat->ofsDictTexToMatList); - - texData = NNS_G3dGetTexDataByName(pTex, pResName); - - if (texData) { - data = (NNSG3dResDictTexToMatIdxData *) - NNS_G3dGetResDataByName(dictTex, pResName); - - if (data && !(data->flag & 1)) { - bindMdlTex_Internal_(mat, data, pTex, texData); - return TRUE; - } - } - return FALSE; -} - -BOOL NNS_G3dForceBindMdlTex (NNSG3dResMdl * pMdl, const NNSG3dResTex * pTex, u32 texToMatListIdx, u32 texIdx) { - NNSG3dResMat * mat; - NNSG3dResDict * dictTex; - const NNSG3dResDictTexData * texData; - NNSG3dResDictTexToMatIdxData * data; - - NNS_G3D_NULL_ASSERT(pMdl); - NNS_G3D_NULL_ASSERT(pTex); - - mat = NNS_G3dGetMat(pMdl); - dictTex = (NNSG3dResDict *)((u8 *)mat + mat->ofsDictTexToMatList); - - texData = NNS_G3dGetTexDataByIdx(pTex, texIdx); - - data = (NNSG3dResDictTexToMatIdxData *) - NNS_G3dGetResDataByIdx(dictTex, texToMatListIdx); - - if (data) { - bindMdlTex_Internal_(mat, data, pTex, texData); - return TRUE; - } - return FALSE; -} - -void NNS_G3dReleaseMdlTex (NNSG3dResMdl * pMdl) { - NNSG3dResMat * mat; - NNSG3dResDict * dictTex; - u32 i; - - NNS_G3D_NULL_ASSERT(pMdl); - - mat = NNS_G3dGetMat(pMdl); - dictTex = (NNSG3dResDict *)((u8 *)mat + mat->ofsDictTexToMatList); - - for (i = 0; i < dictTex->numEntry; ++i) { - NNSG3dResDictTexToMatIdxData * data = - (NNSG3dResDictTexToMatIdxData *)NNS_G3dGetResDataByIdx(dictTex, i); - - if (data->flag & 1) { - releaseMdlTex_Internal_(mat, data); - } - } -} - -BOOL NNS_G3dReleaseMdlTexEx (NNSG3dResMdl * pMdl, const NNSG3dResName * pResName) { - NNSG3dResMat * mat; - NNSG3dResDict * dictTex; - NNSG3dResDictTexToMatIdxData * data; - - NNS_G3D_NULL_ASSERT(pMdl); - NNS_G3D_NULL_ASSERT(pResName); - - mat = NNS_G3dGetMat(pMdl); - dictTex = (NNSG3dResDict *)((u8 *)mat + mat->ofsDictTexToMatList); - data = (NNSG3dResDictTexToMatIdxData *)NNS_G3dGetResDataByName(dictTex, pResName); - - if (data && (data->flag & 1)) { - releaseMdlTex_Internal_(mat, data); - return TRUE; - } - return FALSE; -} - -static void bindMdlPltt_Internal_ (NNSG3dResMat * pMat, NNSG3dResDictPlttToMatIdxData * pBindData, const NNSG3dResTex * pTex, const NNSG3dResDictPlttData * pPlttData) { - u8 * base = (u8 *)pMat + pBindData->offset; - u16 plttBase = pPlttData->offset; - u16 vramOffset = (u16)(NNS_GfdGetTexKeyAddr(pTex->plttInfo.vramKey) >> NNS_GFD_TEXKEY_ADDR_SHIFT); - u32 j; - - NNS_G3D_ASSERTMSG( - (pTex->plttInfo.vramKey != 0 || pTex->plttInfo.sizePltt == 0), - "No palette key assigned" - ); - - if (!(pPlttData->flag & 1)) { - plttBase >>= 1; - vramOffset >>= 1; - } - - for (j = 0; j < pBindData->numIdx; ++j) { - NNSG3dResMatData * matData = NNS_G3dGetMatDataByIdx(pMat, *(base + j)); - matData->texPlttBase = (u16)(plttBase + vramOffset); - } - - pBindData->flag |= 1; -} - -BOOL NNS_G3dBindMdlPltt (NNSG3dResMdl * pMdl, const NNSG3dResTex * pTex) { - NNSG3dResMat * mat; - NNSG3dResDict * dictPltt; - u32 i; - BOOL result = TRUE; - - NNS_G3D_NULL_ASSERT(pMdl); - NNS_G3D_NULL_ASSERT(pTex); - - mat = NNS_G3dGetMat(pMdl); - dictPltt = (NNSG3dResDict *)((u8 *)mat + mat->ofsDictPlttToMatList); - - for (i = 0; i < dictPltt->numEntry; ++i) { - const NNSG3dResName * name = NNS_G3dGetResNameByIdx(dictPltt, i); - - const NNSG3dResDictPlttData * plttData = NNS_G3dGetPlttDataByName(pTex, name); - - if (plttData) { - NNSG3dResDictPlttToMatIdxData * data; - data = (NNSG3dResDictPlttToMatIdxData *)NNS_G3dGetResDataByIdx(dictPltt, i); - - if (!(data->flag & 1)) { - bindMdlPltt_Internal_(mat, data, pTex, plttData); - } - } else { - result = FALSE; - } - } - return result; -} - -BOOL NNS_G3dBindMdlPlttEx (NNSG3dResMdl * pMdl, const NNSG3dResTex * pTex, const NNSG3dResName * pResName) { - NNSG3dResMat * mat; - NNSG3dResDict * dictPltt; - const NNSG3dResDictPlttData * plttData; - NNSG3dResDictPlttToMatIdxData * data; - - NNS_G3D_NULL_ASSERT(pMdl); - NNS_G3D_NULL_ASSERT(pTex); - NNS_G3D_NULL_ASSERT(pResName); - - mat = NNS_G3dGetMat(pMdl); - dictPltt = (NNSG3dResDict *)((u8 *)mat + mat->ofsDictPlttToMatList); - - plttData = NNS_G3dGetPlttDataByName(pTex, pResName); - - if (plttData) { - data = (NNSG3dResDictPlttToMatIdxData *) - NNS_G3dGetResDataByName(dictPltt, pResName); - - if (data && !(data->flag & 1)) { - bindMdlPltt_Internal_(mat, data, pTex, plttData); - return TRUE; - } - } - return FALSE; -} - -BOOL NNS_G3dForceBindMdlPltt (NNSG3dResMdl * pMdl, const NNSG3dResTex * pTex, u32 plttToMatListIdx, u32 plttIdx) { - NNSG3dResMat * mat; - NNSG3dResDict * dictPltt; - const NNSG3dResDictPlttData * plttData; - NNSG3dResDictPlttToMatIdxData * data; - - NNS_G3D_NULL_ASSERT(pMdl); - NNS_G3D_NULL_ASSERT(pTex); - - mat = NNS_G3dGetMat(pMdl); - dictPltt = (NNSG3dResDict *)((u8 *)mat + mat->ofsDictPlttToMatList); - plttData = NNS_G3dGetPlttDataByIdx(pTex, plttIdx); - - data = (NNSG3dResDictPlttToMatIdxData *) - NNS_G3dGetResDataByIdx(dictPltt, plttToMatListIdx); - - if (data && !(data->flag & 1)) { - bindMdlPltt_Internal_(mat, data, pTex, plttData); - return TRUE; - } - return FALSE; -} - -void NNS_G3dReleaseMdlPltt (NNSG3dResMdl * pMdl) { - NNSG3dResMat * mat; - NNSG3dResDict * dictPltt; - u32 i; - - NNS_G3D_NULL_ASSERT(pMdl); - - mat = NNS_G3dGetMat(pMdl); - dictPltt = (NNSG3dResDict *)((u8 *)mat + mat->ofsDictPlttToMatList); - for (i = 0; i < dictPltt->numEntry; ++i) { - NNSG3dResDictPlttToMatIdxData * data = - (NNSG3dResDictPlttToMatIdxData *)NNS_G3dGetResDataByIdx(dictPltt, i); - - if (data->flag & 1) { -#if 0 - u32 j; - - u8 * base = (u8 *)mat + data->offset; - - for (j = 0; j < data->numIdx; ++j) { - NNSG3dResMatData * matData = NNS_G3dGetMatDataByIdx(mat, *(base + j)); - matData->texPlttBase = 0; - } -#endif - - data->flag &= ~1; - } - } -} - -BOOL NNS_G3dReleaseMdlPlttEx (NNSG3dResMdl * pMdl, const NNSG3dResName * pResName) { - NNSG3dResMat * mat; - NNSG3dResDict * dictPltt; - NNSG3dResDictPlttToMatIdxData * data; - - NNS_G3D_NULL_ASSERT(pMdl); - NNS_G3D_NULL_ASSERT(pResName); - - mat = NNS_G3dGetMat(pMdl); - dictPltt = (NNSG3dResDict *)((u8 *)mat + mat->ofsDictPlttToMatList); - data = (NNSG3dResDictPlttToMatIdxData *) - NNS_G3dGetResDataByName(dictPltt, pResName); - - if (data && (data->flag & 1)) { - data->flag &= ~1; - return TRUE; - } - return FALSE; -} - -BOOL NNS_G3dBindMdlSet (NNSG3dResMdlSet * pMdlSet, const NNSG3dResTex * pTex) { - u32 i; - BOOL result = TRUE; - - NNS_G3D_NULL_ASSERT(pMdlSet); - NNS_G3D_NULL_ASSERT(pTex); - - for (i = 0; i < pMdlSet->dict.numEntry; ++i) { - NNSG3dResMdl * mdl = NNS_G3dGetMdlByIdx(pMdlSet, i); - NNS_G3D_NULL_ASSERT(mdl); - - result &= NNS_G3dBindMdlTex(mdl, pTex); - result &= NNS_G3dBindMdlPltt(mdl, pTex); - } - return result; -} - -void NNS_G3dReleaseMdlSet (NNSG3dResMdlSet * pMdlSet) { - u32 i; - NNS_G3D_NULL_ASSERT(pMdlSet); - - for (i = 0; i < pMdlSet->dict.numEntry; ++i) { - NNSG3dResMdl * mdl = NNS_G3dGetMdlByIdx(pMdlSet, i); - NNS_G3D_NULL_ASSERT(mdl); - - NNS_G3dReleaseMdlTex(mdl); - NNS_G3dReleaseMdlPltt(mdl); - } -} diff --git a/subprojects/NitroSystem/libraries/g3d/src/mem_nnsg3d.c b/subprojects/NitroSystem/libraries/g3d/src/mem_nnsg3d.c deleted file mode 100644 index 7a6a802908..0000000000 --- a/subprojects/NitroSystem/libraries/g3d/src/mem_nnsg3d.c +++ /dev/null @@ -1,70 +0,0 @@ -#include - -NNSG3dRenderObj * NNS_G3dAllocRenderObj (NNSFndAllocator * pAlloc) { - NNS_G3D_NULL_ASSERT(pAlloc); - - return (NNSG3dRenderObj *) - NNS_FndAllocFromAllocator(pAlloc, sizeof(NNSG3dRenderObj)); -} - -void NNS_G3dFreeRenderObj (NNSFndAllocator * pAlloc, NNSG3dRenderObj * pRenderObj) { - NNS_G3D_NULL_ASSERT(pAlloc); - - NNS_FndFreeToAllocator(pAlloc, pRenderObj); -} - -NNSG3dAnmObj * NNS_G3dAllocAnmObj (NNSFndAllocator * pAlloc, const void * pAnm, const NNSG3dResMdl * pMdl) { - u32 sz; - NNS_G3D_NULL_ASSERT(pAlloc); - NNS_G3D_NULL_ASSERT(pAnm); - NNS_G3D_NULL_ASSERT(pMdl); - - sz = NNS_G3dAnmObjCalcSizeRequired(pAnm, pMdl); - return (NNSG3dAnmObj *)NNS_FndAllocFromAllocator(pAlloc, sz); -} - -void NNS_G3dFreeAnmObj (NNSFndAllocator * pAlloc, NNSG3dAnmObj * pAnmObj) { - NNS_G3D_NULL_ASSERT(pAlloc); - - NNS_FndFreeToAllocator(pAlloc, pAnmObj); -} - -NNSG3dJntAnmResult * NNS_G3dAllocRecBufferJnt (NNSFndAllocator * pAlloc, const NNSG3dResMdl * pResMdl) { - u32 numJnt; - NNS_G3D_NULL_ASSERT(pAlloc); - NNS_G3D_NULL_ASSERT(pResMdl); - - numJnt = pResMdl->info.numNode; - - return (NNSG3dJntAnmResult *) - NNS_FndAllocFromAllocator( - pAlloc, - NNS_G3D_RENDEROBJ_JNTBUFFER_SIZE(numJnt) - ); -} - -void NNS_G3dFreeRecBufferJnt (NNSFndAllocator * pAlloc, NNSG3dJntAnmResult * pRecBuf) { - NNS_G3D_NULL_ASSERT(pAlloc); - - NNS_FndFreeToAllocator(pAlloc, pRecBuf); -} - -NNSG3dMatAnmResult * NNS_G3dAllocRecBufferMat (NNSFndAllocator * pAlloc, const NNSG3dResMdl * pResMdl) { - u32 numMat; - NNS_G3D_NULL_ASSERT(pAlloc); - NNS_G3D_NULL_ASSERT(pResMdl); - - numMat = pResMdl->info.numMat; - - return (NNSG3dMatAnmResult *) - NNS_FndAllocFromAllocator( - pAlloc, - NNS_G3D_RENDEROBJ_MATBUFFER_SIZE(numMat) - ); -} - -void NNS_G3dFreeRecBufferMat (NNSFndAllocator * pAlloc, NNSG3dMatAnmResult * pRecBuf) { - NNS_G3D_NULL_ASSERT(pAlloc); - - NNS_FndFreeToAllocator(pAlloc, pRecBuf); -} diff --git a/subprojects/NitroSystem/libraries/g3d/src/model.c b/subprojects/NitroSystem/libraries/g3d/src/model.c deleted file mode 100644 index 935e7595a4..0000000000 --- a/subprojects/NitroSystem/libraries/g3d/src/model.c +++ /dev/null @@ -1,524 +0,0 @@ -#include - -void NNSi_G3dModifyMatFlag (NNSG3dResMdl * pMdl, BOOL isOn, NNSG3dMatFlag flag) { - u32 numMat; - u32 i; - NNSG3dResMat * mat; - NNS_G3D_NULL_ASSERT(pMdl); - - numMat = pMdl->info.numMat; - mat = NNS_G3dGetMat(pMdl); - - for (i = 0; i < numMat; ++i) { - NNSG3dResMatData * data = NNS_G3dGetMatDataByIdx(mat, i); - NNS_G3D_NULL_ASSERT(data); - - if (isOn) { - data->flag |= flag; - } else { - data->flag &= ~flag; - } - } -} - -void NNSi_G3dModifyPolygonAttrMask (NNSG3dResMdl * pMdl, BOOL isOn, u32 mask) { - u32 numMat; - u32 i; - NNSG3dResMat * mat; - NNS_G3D_NULL_ASSERT(pMdl); - - numMat = pMdl->info.numMat; - mat = NNS_G3dGetMat(pMdl); - - for (i = 0; i < numMat; ++i) { - NNSG3dResMatData * data = NNS_G3dGetMatDataByIdx(mat, i); - NNS_G3D_NULL_ASSERT(data); - - if (isOn) { - data->polyAttrMask |= mask; - } else { - data->polyAttrMask &= ~mask; - } - } -} - -void NNS_G3dMdlSetMdlDiff (NNSG3dResMdl * pMdl, u32 matID, GXRgb col) { - NNSG3dResMatData * data; - NNS_G3D_NULL_ASSERT(pMdl); - GXRGB_ASSERT(col); - - data = NNS_G3dGetMatDataByIdx(NNS_G3dGetMat(pMdl), matID); - NNS_G3D_NULL_ASSERT(data); - NNS_G3D_ASSERTMSG( - data->itemTag == NNS_G3D_ITEMTAG_MAT_STANDARD, - "NNS_G3dMdlSetMdlDiff is available only to standard(default) materials" - ); - - data->diffAmb = (data->diffAmb & ~(REG_G3_DIF_AMB_DIFFUSE_RED_MASK | REG_G3_DIF_AMB_DIFFUSE_GREEN_MASK | REG_G3_DIF_AMB_DIFFUSE_BLUE_MASK)) | - (col << REG_G3_DIF_AMB_DIFFUSE_RED_SHIFT); -} - -void NNS_G3dMdlSetMdlAmb (NNSG3dResMdl * pMdl, u32 matID, GXRgb col) { - NNSG3dResMatData * data; - NNS_G3D_NULL_ASSERT(pMdl); - GXRGB_ASSERT(col); - - data = NNS_G3dGetMatDataByIdx(NNS_G3dGetMat(pMdl), matID); - NNS_G3D_NULL_ASSERT(data); - NNS_G3D_ASSERTMSG( - data->itemTag == NNS_G3D_ITEMTAG_MAT_STANDARD, - "NNS_G3dMdlSetMdlAmb is available only to standard(default) materials" - ); - - data->diffAmb = (data->diffAmb & ~(REG_G3_DIF_AMB_AMBIENT_RED_MASK | REG_G3_DIF_AMB_AMBIENT_GREEN_MASK | REG_G3_DIF_AMB_AMBIENT_BLUE_MASK)) | - (col << REG_G3_DIF_AMB_AMBIENT_RED_SHIFT); -} - -void NNS_G3dMdlSetMdlSpec (NNSG3dResMdl * pMdl, u32 matID, GXRgb col) { - NNSG3dResMatData * data; - NNS_G3D_NULL_ASSERT(pMdl); - GXRGB_ASSERT(col); - - data = NNS_G3dGetMatDataByIdx(NNS_G3dGetMat(pMdl), matID); - NNS_G3D_NULL_ASSERT(data); - NNS_G3D_ASSERTMSG( - data->itemTag == NNS_G3D_ITEMTAG_MAT_STANDARD, - "NNS_G3dMdlSetMdlSpec is available only to standard(default) materials" - ); - - data->specEmi = (data->specEmi & ~(REG_G3_SPE_EMI_SPECULAR_RED_MASK | REG_G3_SPE_EMI_SPECULAR_GREEN_MASK | REG_G3_SPE_EMI_SPECULAR_BLUE_MASK)) | - (col << REG_G3_SPE_EMI_SPECULAR_RED_SHIFT); -} - -void NNS_G3dMdlSetMdlEmi (NNSG3dResMdl * pMdl, u32 matID, GXRgb col) { - NNSG3dResMatData * data; - NNS_G3D_NULL_ASSERT(pMdl); - GXRGB_ASSERT(col); - - data = NNS_G3dGetMatDataByIdx(NNS_G3dGetMat(pMdl), matID); - NNS_G3D_NULL_ASSERT(data); - NNS_G3D_ASSERTMSG( - data->itemTag == NNS_G3D_ITEMTAG_MAT_STANDARD, - "NNS_G3dMdlSetMdlEmi is available only to standard(default) materials" - ); - - data->specEmi = (data->specEmi & ~(REG_G3_SPE_EMI_EMISSION_RED_MASK | REG_G3_SPE_EMI_EMISSION_GREEN_MASK | REG_G3_SPE_EMI_EMISSION_BLUE_MASK)) | - (col << REG_G3_SPE_EMI_EMISSION_RED_SHIFT); -} - -void NNS_G3dMdlSetMdlLightEnableFlag (NNSG3dResMdl * pMdl, u32 matID, int light) { - NNSG3dResMatData * data; - NNS_G3D_NULL_ASSERT(pMdl); - GX_LIGHTMASK_ASSERT(light); - - data = NNS_G3dGetMatDataByIdx(NNS_G3dGetMat(pMdl), matID); - NNS_G3D_NULL_ASSERT(data); - NNS_G3D_ASSERTMSG( - data->itemTag == NNS_G3D_ITEMTAG_MAT_STANDARD, - "NNS_G3dMdlSetMdlLightEnableFlag is available only to standard(default) materials" - ); - - data->polyAttr = (data->polyAttr & ~REG_G3_POLYGON_ATTR_LE_MASK) | - (light << REG_G3_POLYGON_ATTR_LE_SHIFT); -} - -void NNS_G3dMdlSetMdlPolygonMode (NNSG3dResMdl * pMdl, u32 matID, GXPolygonMode polyMode) { - NNSG3dResMatData * data; - NNS_G3D_NULL_ASSERT(pMdl); - GX_POLYGONMODE_ASSERT(polyMode); - - data = NNS_G3dGetMatDataByIdx(NNS_G3dGetMat(pMdl), matID); - NNS_G3D_NULL_ASSERT(data); - NNS_G3D_ASSERTMSG( - data->itemTag == NNS_G3D_ITEMTAG_MAT_STANDARD, - "NNS_G3dMdlSetMdlPolygonMode is available only to standard(default) materials" - ); - - data->polyAttr = (data->polyAttr & ~REG_G3_POLYGON_ATTR_PM_MASK) | - (polyMode << REG_G3_POLYGON_ATTR_PM_SHIFT); -} - -void NNS_G3dMdlSetMdlCullMode (NNSG3dResMdl * pMdl, u32 matID, GXCull cullMode) { - NNSG3dResMatData * data; - NNS_G3D_NULL_ASSERT(pMdl); - GX_CULL_ASSERT(cullMode); - - data = NNS_G3dGetMatDataByIdx(NNS_G3dGetMat(pMdl), matID); - NNS_G3D_NULL_ASSERT(data); - NNS_G3D_ASSERTMSG( - data->itemTag == NNS_G3D_ITEMTAG_MAT_STANDARD, - "NNS_G3dMdlSetMdlCullMode is available only to standard(default) materials" - ); - - data->polyAttr = (data->polyAttr & ~(REG_G3_POLYGON_ATTR_BK_MASK | REG_G3_POLYGON_ATTR_FR_MASK)) | - (cullMode << REG_G3_POLYGON_ATTR_BK_SHIFT); -} - -void NNS_G3dMdlSetMdlPolygonID (NNSG3dResMdl * pMdl, u32 matID, int polygonID) { - NNSG3dResMatData * data; - NNS_G3D_NULL_ASSERT(pMdl); - GX_POLYGON_ATTR_POLYGONID_ASSERT(polygonID); - - data = NNS_G3dGetMatDataByIdx(NNS_G3dGetMat(pMdl), matID); - NNS_G3D_NULL_ASSERT(data); - NNS_G3D_ASSERTMSG( - data->itemTag == NNS_G3D_ITEMTAG_MAT_STANDARD, - "NNS_G3dMdlSetMdlPolygonID is available only to standard(default) materials" - ); - - data->polyAttr = (data->polyAttr & ~REG_G3_POLYGON_ATTR_ID_MASK) | - (polygonID << REG_G3_POLYGON_ATTR_ID_SHIFT); -} - -void NNS_G3dMdlSetMdlAlpha (NNSG3dResMdl * pMdl, u32 matID, int alpha) { - NNSG3dResMatData * data; - NNS_G3D_NULL_ASSERT(pMdl); - GX_POLYGON_ATTR_ALPHA_ASSERT(alpha); - - data = NNS_G3dGetMatDataByIdx(NNS_G3dGetMat(pMdl), matID); - NNS_G3D_NULL_ASSERT(data); - NNS_G3D_ASSERTMSG( - data->itemTag == NNS_G3D_ITEMTAG_MAT_STANDARD, - "NNS_G3dMdlSetMdlAlpha is available only to standard(default) materials" - ); - - data->polyAttr = (data->polyAttr & ~REG_G3_POLYGON_ATTR_ALPHA_MASK) | - (alpha << REG_G3_POLYGON_ATTR_ALPHA_SHIFT); -} - -void NNS_G3dMdlSetMdlFogEnableFlag (NNSG3dResMdl * pMdl, u32 matID, BOOL flag) { - NNSG3dResMatData * data; - NNS_G3D_NULL_ASSERT(pMdl); - - data = NNS_G3dGetMatDataByIdx(NNS_G3dGetMat(pMdl), matID); - NNS_G3D_NULL_ASSERT(data); - NNS_G3D_ASSERTMSG( - data->itemTag == NNS_G3D_ITEMTAG_MAT_STANDARD, - "NNS_G3dMdlSetMdlFogEnableFlag is available only to standard(default) materials" - ); - - if (flag) { - data->polyAttr |= REG_G3_POLYGON_ATTR_FE_MASK; - } else { - data->polyAttr &= ~REG_G3_POLYGON_ATTR_FE_MASK; - } -} - -void NNS_G3dMdlSetMdlDepthTestCond (NNSG3dResMdl * pMdl, u32 matID, BOOL flag) { - NNSG3dResMatData * data; - NNS_G3D_NULL_ASSERT(pMdl); - - data = NNS_G3dGetMatDataByIdx(NNS_G3dGetMat(pMdl), matID); - NNS_G3D_NULL_ASSERT(data); - NNS_G3D_ASSERTMSG( - data->itemTag == NNS_G3D_ITEMTAG_MAT_STANDARD, - "NNS_G3dMdlSetMdlDepthTestCond is available only to standard(default) materials" - ); - - if (flag) { - data->polyAttr |= REG_G3_POLYGON_ATTR_DT_MASK; - } else { - data->polyAttr &= ~REG_G3_POLYGON_ATTR_DT_MASK; - } -} - -void NNS_G3dMdlSetMdl1Dot (NNSG3dResMdl * pMdl, u32 matID, BOOL flag) { - NNSG3dResMatData * data; - NNS_G3D_NULL_ASSERT(pMdl); - - data = NNS_G3dGetMatDataByIdx(NNS_G3dGetMat(pMdl), matID); - NNS_G3D_NULL_ASSERT(data); - NNS_G3D_ASSERTMSG( - data->itemTag == NNS_G3D_ITEMTAG_MAT_STANDARD, - "NNS_G3dMdlSetMdl1Dot is available only to standard(default) materials" - ); - - if (flag) { - data->polyAttr |= REG_G3_POLYGON_ATTR_D1_MASK; - } else { - data->polyAttr &= ~REG_G3_POLYGON_ATTR_D1_MASK; - } -} - -void NNS_G3dMdlSetMdlFarClip (NNSG3dResMdl * pMdl, u32 matID, BOOL flag) { - NNSG3dResMatData * data; - NNS_G3D_NULL_ASSERT(pMdl); - - data = NNS_G3dGetMatDataByIdx(NNS_G3dGetMat(pMdl), matID); - NNS_G3D_NULL_ASSERT(data); - NNS_G3D_ASSERTMSG( - data->itemTag == NNS_G3D_ITEMTAG_MAT_STANDARD, - "NNS_G3dMdlSetMdlFarClip is available only to standard(default) materials" - ); - - if (flag) { - data->polyAttr |= REG_G3_POLYGON_ATTR_FC_MASK; - } else { - data->polyAttr &= ~REG_G3_POLYGON_ATTR_FC_MASK; - } -} - -void NNS_G3dMdlSetMdlXLDepthUpdate (NNSG3dResMdl * pMdl, u32 matID, BOOL flag) { - NNSG3dResMatData * data; - NNS_G3D_NULL_ASSERT(pMdl); - - data = NNS_G3dGetMatDataByIdx(NNS_G3dGetMat(pMdl), matID); - NNS_G3D_NULL_ASSERT(data); - NNS_G3D_ASSERTMSG( - data->itemTag == NNS_G3D_ITEMTAG_MAT_STANDARD, - "NNS_G3dMdlSetMdlXLDepthUpdate is available only to standard(default) materials" - ); - - if (flag) { - data->polyAttr |= REG_G3_POLYGON_ATTR_XL_MASK; - } else { - data->polyAttr &= ~REG_G3_POLYGON_ATTR_XL_MASK; - } -} - -GXRgb NNS_G3dMdlGetMdlDiff (const NNSG3dResMdl * pMdl, u32 matID) { - NNSG3dResMatData * data; - NNS_G3D_NULL_ASSERT(pMdl); - - data = NNS_G3dGetMatDataByIdx(NNS_G3dGetMat(pMdl), matID); - NNS_G3D_NULL_ASSERT(data); - - return (GXRgb)((data->diffAmb & (REG_G3_DIF_AMB_DIFFUSE_RED_MASK | REG_G3_DIF_AMB_DIFFUSE_GREEN_MASK | REG_G3_DIF_AMB_DIFFUSE_BLUE_MASK)) - >> REG_G3_DIF_AMB_DIFFUSE_RED_SHIFT); -} - -GXRgb NNS_G3dMdlGetMdlAmb (const NNSG3dResMdl * pMdl, u32 matID) { - NNSG3dResMatData * data; - NNS_G3D_NULL_ASSERT(pMdl); - - data = NNS_G3dGetMatDataByIdx(NNS_G3dGetMat(pMdl), matID); - NNS_G3D_NULL_ASSERT(data); - - return (GXRgb)((data->diffAmb & (REG_G3_DIF_AMB_AMBIENT_RED_MASK | REG_G3_DIF_AMB_AMBIENT_GREEN_MASK | REG_G3_DIF_AMB_AMBIENT_BLUE_MASK)) - >> REG_G3_DIF_AMB_AMBIENT_RED_SHIFT); -} - -GXRgb NNS_G3dMdlGetMdlSpec (const NNSG3dResMdl * pMdl, u32 matID) { - NNSG3dResMatData * data; - NNS_G3D_NULL_ASSERT(pMdl); - - data = NNS_G3dGetMatDataByIdx(NNS_G3dGetMat(pMdl), matID); - NNS_G3D_NULL_ASSERT(data); - - return (GXRgb)((data->specEmi & (REG_G3_SPE_EMI_SPECULAR_RED_MASK | REG_G3_SPE_EMI_SPECULAR_GREEN_MASK | REG_G3_SPE_EMI_SPECULAR_BLUE_MASK)) - >> REG_G3_SPE_EMI_SPECULAR_RED_SHIFT); -} - -GXRgb NNS_G3dMdlGetMdlEmi (const NNSG3dResMdl * pMdl, u32 matID) { - NNSG3dResMatData * data; - NNS_G3D_NULL_ASSERT(pMdl); - - data = NNS_G3dGetMatDataByIdx(NNS_G3dGetMat(pMdl), matID); - NNS_G3D_NULL_ASSERT(data); - - return (GXRgb)((data->specEmi & (REG_G3_SPE_EMI_EMISSION_RED_MASK | REG_G3_SPE_EMI_EMISSION_GREEN_MASK | REG_G3_SPE_EMI_EMISSION_BLUE_MASK)) - >> REG_G3_SPE_EMI_EMISSION_RED_SHIFT); -} - -int NNS_G3dMdlGetMdlLightEnableFlag (const NNSG3dResMdl * pMdl, u32 matID) { - NNSG3dResMatData * data; - NNS_G3D_NULL_ASSERT(pMdl); - - data = NNS_G3dGetMatDataByIdx(NNS_G3dGetMat(pMdl), matID); - NNS_G3D_NULL_ASSERT(data); - - return (int)((data->polyAttr & REG_G3_POLYGON_ATTR_LE_MASK) - >> REG_G3_POLYGON_ATTR_LE_SHIFT); -} - -GXPolygonMode NNS_G3dMdlGetMdlPolygonMode (const NNSG3dResMdl * pMdl, u32 matID) { - NNSG3dResMatData * data; - NNS_G3D_NULL_ASSERT(pMdl); - - data = NNS_G3dGetMatDataByIdx(NNS_G3dGetMat(pMdl), matID); - NNS_G3D_NULL_ASSERT(data); - - return (GXPolygonMode)((data->polyAttr & REG_G3_POLYGON_ATTR_PM_MASK) - >> REG_G3_POLYGON_ATTR_PM_SHIFT); -} - -GXCull NNS_G3dMdlGetMdlCullMode (const NNSG3dResMdl * pMdl, u32 matID) { - NNSG3dResMatData * data; - NNS_G3D_NULL_ASSERT(pMdl); - - data = NNS_G3dGetMatDataByIdx(NNS_G3dGetMat(pMdl), matID); - NNS_G3D_NULL_ASSERT(data); - - return (GXCull)((data->polyAttr & (REG_G3_POLYGON_ATTR_BK_MASK | REG_G3_POLYGON_ATTR_FR_MASK)) - >> REG_G3_POLYGON_ATTR_BK_SHIFT); -} - -int NNS_G3dMdlGetMdlPolygonID (const NNSG3dResMdl * pMdl, u32 matID) { - NNSG3dResMatData * data; - NNS_G3D_NULL_ASSERT(pMdl); - - data = NNS_G3dGetMatDataByIdx(NNS_G3dGetMat(pMdl), matID); - NNS_G3D_NULL_ASSERT(data); - - return (int)((data->polyAttr & REG_G3_POLYGON_ATTR_ID_MASK) - >> REG_G3_POLYGON_ATTR_ID_SHIFT); -} - -int NNS_G3dMdlGetMdlAlpha (const NNSG3dResMdl * pMdl, u32 matID) { - NNSG3dResMatData * data; - NNS_G3D_NULL_ASSERT(pMdl); - - data = NNS_G3dGetMatDataByIdx(NNS_G3dGetMat(pMdl), matID); - NNS_G3D_NULL_ASSERT(data); - - return (int)((data->polyAttr & REG_G3_POLYGON_ATTR_ALPHA_MASK) - >> REG_G3_POLYGON_ATTR_ALPHA_SHIFT); -} - -BOOL NNS_G3dMdlGetMdlFogEnableFlag (const NNSG3dResMdl * pMdl, u32 matID) { - NNSG3dResMatData * data; - NNS_G3D_NULL_ASSERT(pMdl); - - data = NNS_G3dGetMatDataByIdx(NNS_G3dGetMat(pMdl), matID); - NNS_G3D_NULL_ASSERT(data); - - return (int)((data->polyAttr & REG_G3_POLYGON_ATTR_FE_MASK)); -} - -BOOL NNS_G3dMdlGetMdlDepthTestCond (const NNSG3dResMdl * pMdl, u32 matID) { - NNSG3dResMatData * data; - NNS_G3D_NULL_ASSERT(pMdl); - - data = NNS_G3dGetMatDataByIdx(NNS_G3dGetMat(pMdl), matID); - NNS_G3D_NULL_ASSERT(data); - - return (int)((data->polyAttr & REG_G3_POLYGON_ATTR_DT_MASK)); -} - -BOOL NNS_G3dMdlGetMdl1Dot (const NNSG3dResMdl * pMdl, u32 matID) { - NNSG3dResMatData * data; - NNS_G3D_NULL_ASSERT(pMdl); - - data = NNS_G3dGetMatDataByIdx(NNS_G3dGetMat(pMdl), matID); - NNS_G3D_NULL_ASSERT(data); - - return (int)((data->polyAttr & REG_G3_POLYGON_ATTR_D1_MASK)); -} - -BOOL NNS_G3dMdlGetMdlFarClip (const NNSG3dResMdl * pMdl, u32 matID) { - NNSG3dResMatData * data; - NNS_G3D_NULL_ASSERT(pMdl); - - data = NNS_G3dGetMatDataByIdx(NNS_G3dGetMat(pMdl), matID); - NNS_G3D_NULL_ASSERT(data); - - return (int)((data->polyAttr & REG_G3_POLYGON_ATTR_FC_MASK)); -} - -BOOL NNS_G3dMdlGetMdlXLDepthUpdate (const NNSG3dResMdl * pMdl, u32 matID) { - NNSG3dResMatData * data; - NNS_G3D_NULL_ASSERT(pMdl); - - data = NNS_G3dGetMatDataByIdx(NNS_G3dGetMat(pMdl), matID); - NNS_G3D_NULL_ASSERT(data); - - return (int)((data->polyAttr & REG_G3_POLYGON_ATTR_XL_MASK)); -} - -void NNS_G3dMdlSetMdlDiffAll (NNSG3dResMdl * pMdl, GXRgb col) { - u32 matID; - for (matID = 0; matID < pMdl->info.numMat; ++matID) { - NNS_G3dMdlSetMdlDiff(pMdl, matID, col); - } -} - -void NNS_G3dMdlSetMdlAmbAll (NNSG3dResMdl * pMdl, GXRgb col) { - u32 matID; - for (matID = 0; matID < pMdl->info.numMat; ++matID) { - NNS_G3dMdlSetMdlAmb(pMdl, matID, col); - } -} - -void NNS_G3dMdlSetMdlSpecAll (NNSG3dResMdl * pMdl, GXRgb col) { - u32 matID; - for (matID = 0; matID < pMdl->info.numMat; ++matID) { - NNS_G3dMdlSetMdlSpec(pMdl, matID, col); - } -} - -void NNS_G3dMdlSetMdlEmiAll (NNSG3dResMdl * pMdl, GXRgb col) { - u32 matID; - for (matID = 0; matID < pMdl->info.numMat; ++matID) { - NNS_G3dMdlSetMdlEmi(pMdl, matID, col); - } -} - -void NNS_G3dMdlSetMdlLightEnableFlagAll (NNSG3dResMdl * pMdl, int light) { - u32 matID; - for (matID = 0; matID < pMdl->info.numMat; ++matID) { - NNS_G3dMdlSetMdlLightEnableFlag(pMdl, matID, light); - } -} - -void NNS_G3dMdlSetMdlPolygonModeAll (NNSG3dResMdl * pMdl, GXPolygonMode polyMode) { - u32 matID; - for (matID = 0; matID < pMdl->info.numMat; ++matID) { - NNS_G3dMdlSetMdlPolygonMode(pMdl, matID, polyMode); - } -} - -void NNS_G3dMdlSetMdlCullModeAll (NNSG3dResMdl * pMdl, GXCull cullMode) { - u32 matID; - for (matID = 0; matID < pMdl->info.numMat; ++matID) { - NNS_G3dMdlSetMdlCullMode(pMdl, matID, cullMode); - } -} - -void NNS_G3dMdlSetMdlPolygonIDAll (NNSG3dResMdl * pMdl, int polygonID) { - u32 matID; - for (matID = 0; matID < pMdl->info.numMat; ++matID) { - NNS_G3dMdlSetMdlPolygonID(pMdl, matID, polygonID); - } -} - -void NNS_G3dMdlSetMdlAlphaAll (NNSG3dResMdl * pMdl, int alpha) { - u32 matID; - for (matID = 0; matID < pMdl->info.numMat; ++matID) { - NNS_G3dMdlSetMdlAlpha(pMdl, matID, alpha); - } -} - -void NNS_G3dMdlSetMdlFogEnableFlagAll (NNSG3dResMdl * pMdl, BOOL flag) { - u32 matID; - for (matID = 0; matID < pMdl->info.numMat; ++matID) { - NNS_G3dMdlSetMdlFogEnableFlag(pMdl, matID, flag); - } -} - -void NNS_G3dMdlSetMdlDepthTestCondAll (NNSG3dResMdl * pMdl, BOOL flag) { - u32 matID; - for (matID = 0; matID < pMdl->info.numMat; ++matID) { - NNS_G3dMdlSetMdlDepthTestCond(pMdl, matID, flag); - } -} - -void NNS_G3dMdlSetMdl1DotAll (NNSG3dResMdl * pMdl, BOOL flag) { - u32 matID; - for (matID = 0; matID < pMdl->info.numMat; ++matID) { - NNS_G3dMdlSetMdl1Dot(pMdl, matID, flag); - } -} - -void NNS_G3dMdlSetMdlFarClipAll (NNSG3dResMdl * pMdl, BOOL flag) { - u32 matID; - for (matID = 0; matID < pMdl->info.numMat; ++matID) { - NNS_G3dMdlSetMdlFarClip(pMdl, matID, flag); - } -} - -void NNS_G3dMdlSetMdlXLDepthUpdateAll (NNSG3dResMdl * pMdl, BOOL flag) { - u32 matID; - for (matID = 0; matID < pMdl->info.numMat; ++matID) { - NNS_G3dMdlSetMdlXLDepthUpdate(pMdl, matID, flag); - } -} diff --git a/subprojects/NitroSystem/libraries/g3d/src/sbc.c b/subprojects/NitroSystem/libraries/g3d/src/sbc.c deleted file mode 100644 index 87fe472352..0000000000 --- a/subprojects/NitroSystem/libraries/g3d/src/sbc.c +++ /dev/null @@ -1,1490 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include - -static void G3dDrawInternal_Loop_ (NNSG3dRS * pRS) { - do{ - pRS->flag &= ~NNS_G3D_RSFLAG_SKIP; - NNS_G3D_ASSERTMSG( - NNS_G3dFuncSbcTable[NNS_G3D_GET_SBCCMD(*pRS->c)], - "SBC command not found / disabled." - ); - - (*NNS_G3dFuncSbcTable[NNS_G3D_GET_SBCCMD(*pRS->c)]) - (pRS, NNS_G3D_GET_SBCFLG(*pRS->c)); - }while (!(pRS->flag & NNS_G3D_RSFLAG_RETURN)); -} - -static void G3dDrawInternal_ (NNSG3dRS * pRS, NNSG3dRenderObj * pRenderObj) { - NNS_G3D_NULL_ASSERT(pRS); - NNS_G3D_NULL_ASSERT(pRenderObj); - - MI_CpuClearFast(pRS, sizeof(*pRS)); - pRS->isScaleCacheOne[0] = 1; - - pRS->flag = NNS_G3D_RSFLAG_NODE_VISIBLE; - - if (pRenderObj->ptrUserSbc) { - pRS->c = pRenderObj->ptrUserSbc; - } else { - pRS->c = (u8 *)pRenderObj->resMdl + pRenderObj->resMdl->ofsSbc; - } - - pRS->pRenderObj = pRenderObj; - - pRS->pResNodeInfo = NNS_G3dGetNodeInfo(pRenderObj->resMdl); - pRS->pResMat = NNS_G3dGetMat(pRenderObj->resMdl); - pRS->pResShp = NNS_G3dGetShp(pRenderObj->resMdl); - pRS->funcJntScale = NNS_G3dGetJointScale_FuncArray[pRenderObj->resMdl->info.scalingRule]; - pRS->funcJntMtx = NNS_G3dSendJointSRT_FuncArray[pRenderObj->resMdl->info.scalingRule]; - pRS->funcTexMtx = NNS_G3dSendTexSRT_FuncArray[pRenderObj->resMdl->info.texMtxMode]; - pRS->posScale = pRenderObj->resMdl->info.posScale; - pRS->invPosScale = pRenderObj->resMdl->info.invPosScale; - - if (pRenderObj->cbFunc && pRenderObj->cbCmd < NNS_G3D_SBC_COMMAND_NUM) { - NNS_G3D_SBC_CALLBACK_TIMING_ASSERT(pRenderObj->cbTiming); - pRS->cbVecFunc[pRenderObj->cbCmd] = pRenderObj->cbFunc; - pRS->cbVecTiming[pRenderObj->cbCmd] = pRenderObj->cbTiming; - } - - if (pRenderObj->flag & NNS_G3D_RENDEROBJ_FLAG_RECORD) { - pRS->flag |= NNS_G3D_RSFLAG_OPT_RECORD; - } - - if (pRenderObj->flag & NNS_G3D_RENDEROBJ_FLAG_NOGECMD) { - pRS->flag |= NNS_G3D_RSFLAG_OPT_NOGECMD; - } - - if (pRenderObj->flag & NNS_G3D_RENDEROBJ_FLAG_SKIP_SBC_DRAW) { - pRS->flag |= NNS_G3D_RSFLAG_OPT_SKIP_SBCDRAW; - } - - if (pRenderObj->flag & NNS_G3D_RENDEROBJ_FLAG_SKIP_SBC_MTXCALC) { - pRS->flag |= NNS_G3D_RSFLAG_OPT_SKIP_SBCMTXCALC; - } - - if (pRenderObj->cbInitFunc) { - (*pRenderObj->cbInitFunc)(pRS); - } - - G3dDrawInternal_Loop_(pRS); - - NNS_G3D_ASSERT(pRS->pRenderObj == pRenderObj); - NNS_G3D_ASSERT(pRS == NNS_G3dRS); - - pRenderObj->flag &= ~NNS_G3D_RENDEROBJ_FLAG_RECORD; -} - -static void updateHintVec_ (u32 * pVec, const NNSG3dAnmObj * pAnmObj) { - const NNSG3dAnmObj * p = pAnmObj; - while (p) { - int i; - for (i = 0; i < p->numMapData; ++i) { - if (p->mapData[i] & NNS_G3D_ANMOBJ_MAPDATA_EXIST) { - pVec[i >> 5] |= 1 << (i & 31); - } - } - p = p->next; - } -} - -void NNS_G3dDraw (NNSG3dRenderObj * pRenderObj) { - NNS_G3D_NULL_ASSERT(pRenderObj); - NNS_G3D_NULL_ASSERT(pRenderObj->resMdl); - NNS_G3D_ASSERTMSG( - pRenderObj->resMdl->info.numMat <= NNS_G3D_SIZE_MAT_MAX, - "numMaterial exceeds NNS_G3D_SIZE_MAT_MAX" - ); - NNS_G3D_ASSERTMSG( - pRenderObj->resMdl->info.numNode <= NNS_G3D_SIZE_JNT_MAX, - "numNode exceeds NNS_G3D_SIZE_JNT_MAX" - ); - NNS_G3D_ASSERTMSG( - pRenderObj->resMdl->info.numShp <= NNS_G3D_SIZE_SHP_MAX, - "numShape exceeds NNS_G3D_SIZE_SHP_MAX" - ); - - if (NNS_G3dRenderObjTestFlag(pRenderObj, NNS_G3D_RENDEROBJ_FLAG_HINT_OBSOLETE)) { - MI_CpuClear32(&pRenderObj->hintMatAnmExist[0], sizeof(u32) * (NNS_G3D_SIZE_MAT_MAX / 32)); - MI_CpuClear32(&pRenderObj->hintJntAnmExist[0], sizeof(u32) * (NNS_G3D_SIZE_JNT_MAX / 32)); - MI_CpuClear32(&pRenderObj->hintVisAnmExist[0], sizeof(u32) * (NNS_G3D_SIZE_JNT_MAX / 32)); - - if (pRenderObj->anmMat) { - updateHintVec_(&pRenderObj->hintMatAnmExist[0], pRenderObj->anmMat); - } - if (pRenderObj->anmJnt) { - updateHintVec_(&pRenderObj->hintJntAnmExist[0], pRenderObj->anmJnt); - } - if (pRenderObj->anmVis) { - updateHintVec_(&pRenderObj->hintVisAnmExist[0], pRenderObj->anmVis); - } - - NNS_G3dRenderObjResetFlag(pRenderObj, NNS_G3D_RENDEROBJ_FLAG_HINT_OBSOLETE); - } - - if (NNS_G3dRS) { - G3dDrawInternal_(NNS_G3dRS, pRenderObj); - } else { - NNSG3dRS rs; - NNS_G3dRS = &rs; - G3dDrawInternal_(&rs, pRenderObj); - NNS_G3dRS = NULL; - } -} - -void NNSi_G3dFuncSbc_NOP (NNSG3dRS * rs, u32) { - NNS_G3D_NULL_ASSERT(rs); - -#if !defined(NNS_G3D_SBC_CALLBACK_TIMING_A_DISABLE) || \ - !defined(NNS_G3D_SBC_CALLBACK_TIMING_B_DISABLE) || \ - !defined(NNS_G3D_SBC_CALLBACK_TIMING_C_DISABLE) - - if (rs->cbVecFunc[NNS_G3D_SBC_NOP]) { - (*rs->cbVecFunc[NNS_G3D_SBC_NOP])(rs); - } -#endif - - rs->c++; -} - -void NNSi_G3dFuncSbc_RET (NNSG3dRS * rs, u32) { - NNS_G3D_NULL_ASSERT(rs); - -#if !defined(NNS_G3D_SBC_CALLBACK_TIMING_A_DISABLE) || \ - !defined(NNS_G3D_SBC_CALLBACK_TIMING_B_DISABLE) || \ - !defined(NNS_G3D_SBC_CALLBACK_TIMING_C_DISABLE) - - if (rs->cbVecFunc[NNS_G3D_SBC_RET]) { - (*rs->cbVecFunc[NNS_G3D_SBC_RET])(rs); - } -#endif - - rs->flag |= NNS_G3D_RSFLAG_RETURN; -} - -void NNSi_G3dFuncSbc_NODE (NNSG3dRS * rs, u32) { - NNS_G3D_NULL_ASSERT(rs); - - if (!(rs->flag & NNS_G3D_RSFLAG_OPT_SKIP_SBCDRAW)) { - BOOL cbFlag; - NNSG3dSbcCallBackTiming cbTiming; - u32 curNode; - - curNode = rs->currentNode = *(rs->c + 1); - rs->flag |= NNS_G3D_RSFLAG_CURRENT_NODE_VALID; - rs->pVisAnmResult = &rs->tmpVisAnmResult; - - cbFlag = NNSi_G3dCallBackCheck_A(rs, NNS_G3D_SBC_NODE, &cbTiming); - - if (!cbFlag) { - NNS_G3D_NULL_ASSERT(rs->pRenderObj->funcBlendVis); - - if (rs->pRenderObj->anmVis && - NNSi_G3dBitVecCheck(&rs->pRenderObj->hintVisAnmExist[0], curNode) && - (*rs->pRenderObj->funcBlendVis)(rs->pVisAnmResult, rs->pRenderObj->anmVis, curNode)) { - ; - } else { - rs->pVisAnmResult->isVisible = *(rs->c + 2) & 1; - } - } - - cbFlag = NNSi_G3dCallBackCheck_B(rs, NNS_G3D_SBC_NODE, &cbTiming); - - if (!cbFlag) { - if (rs->pVisAnmResult->isVisible) { - rs->flag |= NNS_G3D_RSFLAG_NODE_VISIBLE; - } else { - rs->flag &= ~NNS_G3D_RSFLAG_NODE_VISIBLE; - } - } - - (void)NNSi_G3dCallBackCheck_C(rs, NNS_G3D_SBC_NODE, cbTiming); - } - - rs->c += 3; -} - -void NNSi_G3dFuncSbc_MTX (NNSG3dRS * rs, u32) { - NNS_G3D_NULL_ASSERT(rs); - - if (!(rs->flag & NNS_G3D_RSFLAG_OPT_SKIP_SBCDRAW) && - (rs->flag & NNS_G3D_RSFLAG_NODE_VISIBLE)) { - BOOL cbFlag; - NNSG3dSbcCallBackTiming cbTiming; - - cbFlag = NNSi_G3dCallBackCheck_A(rs, NNS_G3D_SBC_MTX, &cbTiming); - - if (!cbFlag) { - u32 arg = *(rs->c + 1); - NNS_G3D_ASSERT(arg < 31); - - if (!(rs->flag & NNS_G3D_RSFLAG_OPT_NOGECMD)) { - NNS_G3dGeBufferOP_N( - G3OP_MTX_RESTORE, - &arg, - G3OP_MTX_RESTORE_NPARAMS - ); - } - } - - (void)NNSi_G3dCallBackCheck_C(rs, NNS_G3D_SBC_MTX, cbTiming); - } - - rs->c += 2; -} - -void NNSi_G3dFuncSbc_MAT_InternalDefault (NNSG3dRS * rs, u32 opt, const NNSG3dResMatData * mat, u32 idxMat) { - static const u32 matColorMask_[8] = { - 0x00000000, - 0x00007fff, - 0x7fff0000, - 0x7fff7fff, - 0x00008000, - 0x0000ffff, - 0x7fff8000, - 0x7fffffff - }; - BOOL cbFlag; - NNSG3dSbcCallBackTiming cbTiming; - - NNS_G3D_NULL_ASSERT(rs); - NNS_G3D_NULL_ASSERT(mat); - - rs->currentMat = (u8)idxMat; - rs->flag |= NNS_G3D_RSFLAG_CURRENT_MAT_VALID; - - rs->pMatAnmResult = &rs->tmpMatAnmResult; - - cbFlag = NNSi_G3dCallBackCheck_A(rs, NNS_G3D_SBC_MAT, &cbTiming); - - if (!cbFlag) { - NNSG3dMatAnmResult * pResult; - - if (rs->pRenderObj->recMatAnm && - !(rs->flag & NNS_G3D_RSFLAG_OPT_RECORD)) { - pResult = (rs->pRenderObj->recMatAnm + idxMat); - } else { - if ((opt == NNS_G3D_SBCFLG_001 || opt == NNS_G3D_SBCFLG_010) && - NNSi_G3dBitVecCheck(&rs->isMatCached[0], idxMat)) { - if (rs->pRenderObj->recMatAnm) { - pResult = (rs->pRenderObj->recMatAnm + idxMat); - } else { - pResult = &NNS_G3dRSOnGlb.matCache[idxMat]; - } - } else { - if (rs->pRenderObj->recMatAnm) { - NNSi_G3dBitVecSet(&rs->isMatCached[0], idxMat); - - pResult = (rs->pRenderObj->recMatAnm + idxMat); - } else if (opt == NNS_G3D_SBCFLG_010) { - NNSi_G3dBitVecSet(&rs->isMatCached[0], idxMat); - - pResult = &NNS_G3dRSOnGlb.matCache[idxMat]; - } else { - pResult = &rs->tmpMatAnmResult; - } - - { - pResult->flag = (NNSG3dMatAnmResultFlag)0; - if (NNS_G3dGetMatDataByIdx(rs->pResMat, idxMat)->flag & NNS_G3D_MATFLAG_WIREFRAME) { - pResult->flag |= NNS_G3D_MATANM_RESULTFLAG_WIREFRAME; - } - } - { - u32 mask = matColorMask_[(mat->flag >> 6) & 7]; - pResult->prmMatColor0 = (NNS_G3dGlb.prmMatColor0 & ~mask) | - (mat->diffAmb & mask); - } - - { - u32 mask = matColorMask_[(mat->flag >> 9) & 7]; - pResult->prmMatColor1 = (NNS_G3dGlb.prmMatColor1 & ~mask) | - (mat->specEmi & mask); - } - - pResult->prmPolygonAttr = (NNS_G3dGlb.prmPolygonAttr & ~mat->polyAttrMask) | - (mat->polyAttr & mat->polyAttrMask); - - pResult->prmTexImage = mat->texImageParam; - pResult->prmTexPltt = mat->texPlttBase; - - if (mat->flag & NNS_G3D_MATFLAG_TEXMTX_USE) { - const u8 * p = (const u8 *)mat + sizeof(NNSG3dResMatData); - - if (!(mat->flag & NNS_G3D_MATFLAG_TEXMTX_SCALEONE)) { - const fx32 * p_fx32 = (const fx32 *)p; - - pResult->scaleS = *(p_fx32 + 0); - pResult->scaleT = *(p_fx32 + 1); - p += 2 * sizeof(fx32); - } else { - pResult->flag |= NNS_G3D_MATANM_RESULTFLAG_TEXMTX_SCALEONE; - } - - if (!(mat->flag & NNS_G3D_MATFLAG_TEXMTX_ROTZERO)) { - const fx16 * p_fx16 = (const fx16 *)p; - - pResult->sinR = *(p_fx16 + 0); - pResult->cosR = *(p_fx16 + 1); - p += 2 * sizeof(fx16); - } else { - pResult->flag |= NNS_G3D_MATANM_RESULTFLAG_TEXMTX_ROTZERO; - } - - if (!(mat->flag & NNS_G3D_MATFLAG_TEXMTX_TRANSZERO)) { - const fx32 * p_fx32 = (const fx32 *)p; - - pResult->transS = *(p_fx32 + 0); - pResult->transT = *(p_fx32 + 1); - } else { - pResult->flag |= NNS_G3D_MATANM_RESULTFLAG_TEXMTX_TRANSZERO; - } - - pResult->flag |= NNS_G3D_MATANM_RESULTFLAG_TEXMTX_SET; - } - - NNS_G3D_NULL_ASSERT(rs->pRenderObj->funcBlendMat); - - if (rs->pRenderObj->anmMat && - NNSi_G3dBitVecCheck(&rs->pRenderObj->hintMatAnmExist[0], idxMat)) { - (void)(*rs->pRenderObj->funcBlendMat)(pResult, rs->pRenderObj->anmMat, idxMat); - } - - if (pResult->flag & (NNS_G3D_MATANM_RESULTFLAG_TEXMTX_SET | - NNS_G3D_MATANM_RESULTFLAG_TEXMTX_MULT)) { - pResult->origWidth = mat->origWidth; - pResult->origHeight = mat->origHeight; - pResult->magW = mat->magW; - pResult->magH = mat->magH; - } - } - } - rs->pMatAnmResult = pResult; - } - - cbFlag = NNSi_G3dCallBackCheck_B(rs, NNS_G3D_SBC_MAT, &cbTiming); - - if (!cbFlag) { - NNSG3dMatAnmResult * pResult; - - NNS_G3D_NULL_ASSERT(rs->pMatAnmResult); - pResult = rs->pMatAnmResult; - - if (pResult->prmPolygonAttr & REG_G3_POLYGON_ATTR_ALPHA_MASK) { - if (pResult->flag & NNS_G3D_MATANM_RESULTFLAG_WIREFRAME) { - pResult->prmPolygonAttr &= ~REG_G3_POLYGON_ATTR_ALPHA_MASK; - } - - rs->flag &= ~NNS_G3D_RSFLAG_MAT_TRANSPARENT; - - if (!(rs->flag & NNS_G3D_RSFLAG_OPT_NOGECMD)) { - u32 cmd[7]; - - cmd[0] = GX_PACK_OP(G3OP_DIF_AMB, G3OP_SPE_EMI, G3OP_POLYGON_ATTR, G3OP_NOP); - cmd[1] = pResult->prmMatColor0; - cmd[2] = pResult->prmMatColor1; - cmd[3] = pResult->prmPolygonAttr; - cmd[4] = GX_PACK_OP(G3OP_TEXIMAGE_PARAM, G3OP_TEXPLTT_BASE, G3OP_NOP, G3OP_NOP); - cmd[5] = pResult->prmTexImage; - cmd[6] = pResult->prmTexPltt; - - NNS_G3dGeBufferData_N(&cmd[0], 7); - - if (pResult->flag & (NNS_G3D_MATANM_RESULTFLAG_TEXMTX_SET | - NNS_G3D_MATANM_RESULTFLAG_TEXMTX_MULT)) { - NNS_G3D_NULL_ASSERT(rs->funcTexMtx); - (*rs->funcTexMtx)(pResult); - } - } - } else { - rs->flag |= NNS_G3D_RSFLAG_MAT_TRANSPARENT; - } - } - - (void)NNSi_G3dCallBackCheck_C(rs, NNS_G3D_SBC_MAT, cbTiming); -} - -void NNSi_G3dFuncSbc_MAT (NNSG3dRS * rs, u32 opt) { - NNS_G3D_NULL_ASSERT(rs); - - if (!(rs->flag & NNS_G3D_RSFLAG_OPT_SKIP_SBCDRAW)) { - u32 idxMat; - idxMat = *(rs->c + 1); - - if ((rs->flag & NNS_G3D_RSFLAG_NODE_VISIBLE) || - !((rs->flag & NNS_G3D_RSFLAG_CURRENT_MAT_VALID) && - (idxMat == rs->currentMat))) { - const NNSG3dResMatData * mat = - NNS_G3dGetMatDataByIdx(rs->pResMat, idxMat); - - NNS_G3D_NULL_ASSERT(NNS_G3dFuncSbcMatTable[mat->itemTag]); - (*NNS_G3dFuncSbcMatTable[mat->itemTag])(rs, opt, mat, idxMat); - } - } - rs->c += 2; -} - -void NNSi_G3dFuncSbc_SHP_InternalDefault (NNSG3dRS * rs, u32, const NNSG3dResShpData * shp, u32) { - BOOL cbFlag; - NNSG3dSbcCallBackTiming cbTiming; - NNS_G3D_NULL_ASSERT(rs); - NNS_G3D_NULL_ASSERT(shp); - - cbFlag = NNSi_G3dCallBackCheck_A(rs, NNS_G3D_SBC_SHP, &cbTiming); - - if (!cbFlag) { - if (!(rs->flag & NNS_G3D_RSFLAG_OPT_NOGECMD)) { - NNS_G3dGeSendDL(NNS_G3dGetShpDLPtr(shp), NNS_G3dGetShpDLSize(shp)); - } - } - - (void)NNSi_G3dCallBackCheck_B(rs, NNS_G3D_SBC_SHP, &cbTiming); - - (void)NNSi_G3dCallBackCheck_C(rs, NNS_G3D_SBC_SHP, cbTiming); -} - -void NNSi_G3dFuncSbc_SHP (NNSG3dRS * rs, u32 opt) { - NNS_G3D_NULL_ASSERT(rs); - - if (!(rs->flag & NNS_G3D_RSFLAG_OPT_SKIP_SBCDRAW)) { - if ((rs->flag & NNS_G3D_RSFLAG_NODE_VISIBLE) && - !(rs->flag & NNS_G3D_RSFLAG_MAT_TRANSPARENT)) { - u32 idxShp = *(rs->c + 1); - const NNSG3dResShpData * shp = - NNS_G3dGetShpDataByIdx(rs->pResShp, idxShp); - - NNS_G3D_NULL_ASSERT(NNS_G3dFuncSbcShpTable[shp->itemTag]); - (*NNS_G3dFuncSbcShpTable[shp->itemTag])(rs, opt, shp, idxShp); - } - } - rs->c += 2; -} - -void NNSi_G3dFuncSbc_NODEDESC (NNSG3dRS * rs, u32 opt) { - u32 cmdLen = 4; - static const u8 pivotUtil_[9][4] = { - {4, 5, 7, 8}, - {3, 5, 6, 8}, - {3, 4, 6, 7}, - - {1, 2, 7, 8}, - {0, 2, 6, 8}, - {0, 1, 6, 7}, - - {1, 2, 4, 5}, - {0, 2, 3, 5}, - {0, 1, 3, 4} - }; - BOOL cbFlag; - NNSG3dSbcCallBackTiming cbTiming; - u32 idxNode = *(rs->c + 1); - rs->currentNodeDesc = (u8)idxNode; - rs->flag |= NNS_G3D_RSFLAG_CURRENT_NODEDESC_VALID; - - NNS_G3D_NULL_ASSERT(rs); - - if (rs->flag & NNS_G3D_RSFLAG_OPT_SKIP_SBCMTXCALC) { - if (opt == NNS_G3D_SBCFLG_010 || - opt == NNS_G3D_SBCFLG_011) { - ++cmdLen; - } - - if (opt == NNS_G3D_SBCFLG_001 || - opt == NNS_G3D_SBCFLG_011) { - ++cmdLen; -#if 1 - - if (!(rs->flag & NNS_G3D_RSFLAG_OPT_NOGECMD)) { - u32 idxMtxDest = *(rs->c + 4); - NNS_G3D_ASSERT(idxMtxDest < 31); - - NNS_G3dGeBufferOP_N( - G3OP_MTX_RESTORE, - &idxMtxDest, - G3OP_MTX_RESTORE_NPARAMS - ); - } -#endif - } - rs->c += cmdLen; - return; - } - - { - if (opt == NNS_G3D_SBCFLG_010 || - opt == NNS_G3D_SBCFLG_011) { - u32 idxMtxSrc; - - ++cmdLen; - if (opt == NNS_G3D_SBCFLG_010) { - idxMtxSrc = *(rs->c + 4); - } else { - idxMtxSrc = *(rs->c + 5); - } - NNS_G3D_ASSERT(idxMtxSrc < 31); - - if (!(rs->flag & NNS_G3D_RSFLAG_OPT_NOGECMD)) { - NNS_G3dGeBufferOP_N( - G3OP_MTX_RESTORE, - &idxMtxSrc, - G3OP_MTX_RESTORE_NPARAMS - ); - } - } - } - - rs->pJntAnmResult = &rs->tmpJntAnmResult; - - cbFlag = NNSi_G3dCallBackCheck_A(rs, NNS_G3D_SBC_NODEDESC, &cbTiming); - - if (!cbFlag) { - NNSG3dJntAnmResult * pAnmResult; - BOOL isUseRecordData; - - if (rs->pRenderObj->recJntAnm) { - pAnmResult = (rs->pRenderObj->recJntAnm + idxNode); - if (!(rs->flag & NNS_G3D_RSFLAG_OPT_RECORD)) { - isUseRecordData = TRUE; - } else { - isUseRecordData = FALSE; - } - } else { - isUseRecordData = FALSE; - pAnmResult = &rs->tmpJntAnmResult; - } - - if (!isUseRecordData) { - pAnmResult->flag = (NNSG3dJntAnmResultFlag)0; - - NNS_G3D_NULL_ASSERT(rs->pRenderObj->funcBlendJnt); - if (rs->pRenderObj->anmJnt && - (*rs->pRenderObj->funcBlendJnt)(pAnmResult, rs->pRenderObj->anmJnt, idxNode)) { - ; - } else { - const NNSG3dResNodeData * pNd = - NNS_G3dGetNodeDataByIdx(rs->pResNodeInfo, idxNode); - const u8 * p = (const u8 *)pNd + sizeof(NNSG3dResNodeData); - - if (pNd->flag & NNS_G3D_SRTFLAG_TRANS_ZERO) { - pAnmResult->flag |= NNS_G3D_JNTANM_RESULTFLAG_TRANS_ZERO; - } else { - const fx32 * p_fx32 = (const fx32 *)p; - - pAnmResult->trans.x = *(p_fx32 + 0); - pAnmResult->trans.y = *(p_fx32 + 1); - pAnmResult->trans.z = *(p_fx32 + 2); - p += 3 * sizeof(fx32); - } - - if (pNd->flag & NNS_G3D_SRTFLAG_ROT_ZERO) { - pAnmResult->flag |= NNS_G3D_JNTANM_RESULTFLAG_ROT_ZERO; - } else { - if (pNd->flag & NNS_G3D_SRTFLAG_PIVOT_EXIST) { - fx32 A = *(fx16 *)(p + 0); - fx32 B = *(fx16 *)(p + 2); - u32 idxPivot = (u32)((pNd->flag & NNS_G3D_SRTFLAG_IDXPIVOT_MASK) >> - NNS_G3D_SRTFLAG_IDXPIVOT_SHIFT); - - MI_Zero36B(&pAnmResult->rot); - - pAnmResult->rot.a[idxPivot] = - (pNd->flag & NNS_G3D_SRTFLAG_PIVOT_MINUS) ? - -FX32_ONE : - FX32_ONE; - - pAnmResult->rot.a[pivotUtil_[idxPivot][0]] = A; - pAnmResult->rot.a[pivotUtil_[idxPivot][1]] = B; - - pAnmResult->rot.a[pivotUtil_[idxPivot][2]] = - (pNd->flag & NNS_G3D_SRTFLAG_SIGN_REVC) ? -B : B; - - pAnmResult->rot.a[pivotUtil_[idxPivot][3]] = - (pNd->flag & NNS_G3D_SRTFLAG_SIGN_REVD) ? -A : A; - - p += 2 * sizeof(fx16); - } else { - const fx16 * pp = (const fx16 *)p; - pAnmResult->rot.a[0] = pNd->_00; - pAnmResult->rot.a[1] = *(pp + 0); - pAnmResult->rot.a[2] = *(pp + 1); - pAnmResult->rot.a[3] = *(pp + 2); - pAnmResult->rot.a[4] = *(pp + 3); - pAnmResult->rot.a[5] = *(pp + 4); - pAnmResult->rot.a[6] = *(pp + 5); - pAnmResult->rot.a[7] = *(pp + 6); - pAnmResult->rot.a[8] = *(pp + 7); - - p += 8 * sizeof(fx16); - } - } - - NNS_G3D_NULL_ASSERT(rs->funcJntScale); - (*rs->funcJntScale)(pAnmResult, (fx32 *)p, rs->c, pNd->flag); - } - } - rs->pJntAnmResult = pAnmResult; - } - - cbFlag = NNSi_G3dCallBackCheck_B(rs, NNS_G3D_SBC_NODEDESC, &cbTiming); - - if (!cbFlag) { - if (!(rs->flag & NNS_G3D_RSFLAG_OPT_NOGECMD)) { - NNS_G3D_NULL_ASSERT(rs->pJntAnmResult); - NNS_G3D_NULL_ASSERT(rs->funcJntMtx); - - (*rs->funcJntMtx)(rs->pJntAnmResult); - } - } - - rs->pJntAnmResult = NULL; - - cbFlag = NNSi_G3dCallBackCheck_C(rs, NNS_G3D_SBC_NODEDESC, cbTiming); - - if (opt == NNS_G3D_SBCFLG_001 || - opt == NNS_G3D_SBCFLG_011) { - ++cmdLen; - - if (!cbFlag) { - if (!(rs->flag & NNS_G3D_RSFLAG_OPT_NOGECMD)) { - u32 idxMtxDest = *(rs->c + 4); - NNS_G3D_ASSERT(idxMtxDest < 31); - - NNS_G3dGeBufferOP_N( - G3OP_MTX_STORE, - &idxMtxDest, - G3OP_MTX_STORE_NPARAMS - ); - } - } - } - - rs->c += cmdLen; -} - -void NNSi_G3dFuncSbc_BB (NNSG3dRS * rs, u32 opt) { - u32 cmdLen = 2; - - static u32 bbcmd1[] = { - GX_PACK_OP(G3OP_MTX_POP, G3OP_MTX_MODE, G3OP_MTX_LOAD_4x3, G3OP_MTX_SCALE), - 1, - GX_MTXMODE_POSITION_VECTOR, - FX32_ONE, 0, 0, - 0, FX32_ONE, 0, - 0, 0, FX32_ONE, - 0, 0, 0, - 0, 0, 0 - }; - - VecFx32 * trans = (VecFx32 *)&bbcmd1[12]; - VecFx32 * scale = (VecFx32 *)&bbcmd1[15]; - MtxFx44 m; - BOOL cbFlag; - NNSG3dSbcCallBackTiming cbTiming; - - NNS_G3D_NULL_ASSERT(rs); - - if (rs->flag & NNS_G3D_RSFLAG_OPT_SKIP_SBCDRAW) { - if (opt == NNS_G3D_SBCFLG_010 || - opt == NNS_G3D_SBCFLG_011) { - ++cmdLen; - } - if (opt == NNS_G3D_SBCFLG_001 || - opt == NNS_G3D_SBCFLG_011) { - ++cmdLen; - } - rs->c += cmdLen; - return; - } - - { - if (opt == NNS_G3D_SBCFLG_010 || - opt == NNS_G3D_SBCFLG_011) { - ++cmdLen; - - if (!(rs->flag & NNS_G3D_RSFLAG_OPT_NOGECMD)) { - u32 idxMtxSrc; - if (opt == NNS_G3D_SBCFLG_010) { - idxMtxSrc = *(rs->c + 2); - } else { - idxMtxSrc = *(rs->c + 3); - } - NNS_G3D_ASSERT(idxMtxSrc < 31); - - NNS_G3dGeBufferOP_N( - G3OP_MTX_RESTORE, - &idxMtxSrc, - 1 - ); - } - } - } - - cbFlag = NNSi_G3dCallBackCheck_A(rs, NNS_G3D_SBC_BB, &cbTiming); - - if (!(rs->flag & NNS_G3D_RSFLAG_OPT_NOGECMD) && - (!cbFlag)) { - NNS_G3dGeFlushBuffer(); - - reg_G3X_GXFIFO = GX_PACK_OP(G3OP_MTX_MODE, G3OP_MTX_PUSH, G3OP_MTX_IDENTITY, G3OP_NOP); - reg_G3X_GXFIFO = (u32)GX_MTXMODE_PROJECTION; - reg_G3X_GXFIFO = 0; - - while (G3X_GetClipMtx(&m)) { - ; - } - - if (NNS_G3dGlb.flag & NNS_G3D_GLB_FLAG_FLUSH_WVP) { - const MtxFx43 * cam = NNS_G3dGlbGetSrtCameraMtx(); - MtxFx44 tmp; - - MTX_Copy43To44(cam, &tmp); - MTX_Concat44(&m, &tmp, &m); - } else if (NNS_G3dGlb.flag & NNS_G3D_GLB_FLAG_FLUSH_VP) { - const MtxFx43 * cam = NNS_G3dGlbGetCameraMtx(); - MtxFx44 tmp; - - MTX_Copy43To44(cam, &tmp); - MTX_Concat44(&m, &tmp, &m); - } - - trans->x = m._30; - trans->y = m._31; - trans->z = m._32; - - scale->x = VEC_Mag((VecFx32 *)&m._00); - scale->y = VEC_Mag((VecFx32 *)&m._10); - scale->z = VEC_Mag((VecFx32 *)&m._20); - - if (NNS_G3dGlb.flag & NNS_G3D_GLB_FLAG_FLUSH_WVP) { - reg_G3X_GXFIFO = GX_PACK_OP(G3OP_MTX_POP, G3OP_MTX_MODE, G3OP_MTX_LOAD_4x3, G3OP_NOP); - MI_CpuSend32( - &bbcmd1[1], - ®_G3X_GXFIFO, - 2 * sizeof(u32) - ); - MI_CpuSend32( - NNS_G3dGlbGetInvSrtCameraMtx(), - ®_G3X_GXFIFO, - G3OP_MTX_LOAD_4x3_NPARAMS * sizeof(u32) - ); - - reg_G3X_GXFIFO = GX_PACK_OP(G3OP_MTX_MULT_4x3, G3OP_MTX_SCALE, G3OP_NOP, G3OP_NOP); - MI_CpuSend32( - &bbcmd1[3], - ®_G3X_GXFIFO, - sizeof(MtxFx43) + sizeof(VecFx32) - ); - } else if (NNS_G3dGlb.flag & NNS_G3D_GLB_FLAG_FLUSH_VP) { - reg_G3X_GXFIFO = GX_PACK_OP(G3OP_MTX_POP, G3OP_MTX_MODE, G3OP_MTX_LOAD_4x3, G3OP_NOP); - MI_CpuSend32( - &bbcmd1[1], - ®_G3X_GXFIFO, - 2 * sizeof(u32) - ); - MI_CpuSend32( - NNS_G3dGlbGetInvCameraMtx(), - ®_G3X_GXFIFO, - G3OP_MTX_LOAD_4x3_NPARAMS * sizeof(u32) - ); - - reg_G3X_GXFIFO = GX_PACK_OP(G3OP_MTX_MULT_4x3, G3OP_MTX_SCALE, G3OP_NOP, G3OP_NOP); - MI_CpuSend32( - &bbcmd1[3], - ®_G3X_GXFIFO, - sizeof(MtxFx43) + sizeof(VecFx32) - ); - } else { - MI_CpuSend32( - &bbcmd1[0], - ®_G3X_GXFIFO, - 18 * sizeof(u32) - ); - } - } - - cbFlag = NNSi_G3dCallBackCheck_C(rs, NNS_G3D_SBC_BB, cbTiming); - - if (opt == NNS_G3D_SBCFLG_001 || - opt == NNS_G3D_SBCFLG_011) { - ++cmdLen; - - if (!cbFlag) { - if (!(rs->flag & NNS_G3D_RSFLAG_OPT_NOGECMD)) { - u32 idxMtxDest; - idxMtxDest = *(rs->c + 2); - - NNS_G3D_ASSERT(idxMtxDest < 31); - - NNS_G3dGeBufferOP_N( - G3OP_MTX_STORE, - &idxMtxDest, - G3OP_MTX_STORE_NPARAMS - ); - } - } - } - - rs->c += cmdLen; -} - -void NNSi_G3dFuncSbc_BBY (NNSG3dRS * rs, u32 opt) { - u32 cmdLen = 2; - MtxFx44 m; - - static u32 bbcmd1[] = { - GX_PACK_OP(G3OP_MTX_POP, G3OP_MTX_MODE, G3OP_MTX_LOAD_4x3, G3OP_MTX_SCALE), - 1, - GX_MTXMODE_POSITION_VECTOR, - FX32_ONE, 0, 0, - 0, FX32_ONE, 0, - 0, 0, FX32_ONE, - 0, 0, 0, - 0, 0, 0 - }; - VecFx32 * trans = (VecFx32 *)&bbcmd1[12]; - VecFx32 * scale = (VecFx32 *)&bbcmd1[15]; - MtxFx43 * mtx = (MtxFx43 *)&bbcmd1[3]; - BOOL cbFlag; - NNSG3dSbcCallBackTiming cbTiming; - - NNS_G3D_NULL_ASSERT(rs); - - if (rs->flag & NNS_G3D_RSFLAG_OPT_SKIP_SBCDRAW) { - if (opt == NNS_G3D_SBCFLG_010 || - opt == NNS_G3D_SBCFLG_011) { - ++cmdLen; - } - if (opt == NNS_G3D_SBCFLG_001 || - opt == NNS_G3D_SBCFLG_011) { - ++cmdLen; - } - rs->c += cmdLen; - return; - } - - { - if (opt == NNS_G3D_SBCFLG_010 || - opt == NNS_G3D_SBCFLG_011) { - ++cmdLen; - if (!(rs->flag & NNS_G3D_RSFLAG_OPT_NOGECMD)) { - u32 idxMtxSrc; - if (opt == NNS_G3D_SBCFLG_010) { - idxMtxSrc = *(rs->c + 2); - } else { - idxMtxSrc = *(rs->c + 3); - } - NNS_G3D_ASSERT(idxMtxSrc < 31); - NNS_G3dGeBufferOP_N( - G3OP_MTX_RESTORE, - &idxMtxSrc, - 1 - ); - } - } - } - - cbFlag = NNSi_G3dCallBackCheck_A(rs, NNS_G3D_SBC_BBY, &cbTiming); - - if (!(rs->flag & NNS_G3D_RSFLAG_OPT_NOGECMD) && - (!cbFlag)) { - NNS_G3dGeFlushBuffer(); - - reg_G3X_GXFIFO = GX_PACK_OP(G3OP_MTX_MODE, G3OP_MTX_PUSH, G3OP_MTX_IDENTITY, G3OP_NOP); - reg_G3X_GXFIFO = (u32)GX_MTXMODE_PROJECTION; - reg_G3X_GXFIFO = 0; - - while (G3X_GetClipMtx(&m)) { - ; - } - - if (NNS_G3dGlb.flag & NNS_G3D_GLB_FLAG_FLUSH_WVP) { - const MtxFx43 * cam = NNS_G3dGlbGetSrtCameraMtx(); - MtxFx44 tmp; - - MTX_Copy43To44(cam, &tmp); - MTX_Concat44(&m, &tmp, &m); - } else if (NNS_G3dGlb.flag & NNS_G3D_GLB_FLAG_FLUSH_VP) { - const MtxFx43 * cam = NNS_G3dGlbGetCameraMtx(); - MtxFx44 tmp; - - MTX_Copy43To44(cam, &tmp); - MTX_Concat44(&m, &tmp, &m); - } - - trans->x = m._30; - trans->y = m._31; - trans->z = m._32; - - scale->x = VEC_Mag((VecFx32 *)&m._00); - scale->y = VEC_Mag((VecFx32 *)&m._10); - scale->z = VEC_Mag((VecFx32 *)&m._20); - - if (m._11 != 0 || m._12 != 0) { - VEC_Normalize((VecFx32 *)&m._10, (VecFx32 *)&mtx->_10); - - mtx->_21 = -mtx->_12; - mtx->_22 = mtx->_11; - } else { - VEC_Normalize((VecFx32 *)&m._20, (VecFx32 *)&mtx->_20); - - mtx->_12 = -mtx->_21; - mtx->_11 = mtx->_22; - } - - if (NNS_G3dGlb.flag & NNS_G3D_GLB_FLAG_FLUSH_WVP) { - reg_G3X_GXFIFO = GX_PACK_OP(G3OP_MTX_POP, G3OP_MTX_MODE, G3OP_MTX_LOAD_4x3, G3OP_NOP); - MI_CpuSend32( - &bbcmd1[1], - ®_G3X_GXFIFO, - 2 * sizeof(u32) - ); - MI_CpuSend32( - NNS_G3dGlbGetInvSrtCameraMtx(), - ®_G3X_GXFIFO, - G3OP_MTX_LOAD_4x3_NPARAMS * sizeof(u32) - ); - - reg_G3X_GXFIFO = GX_PACK_OP(G3OP_MTX_MULT_4x3, G3OP_MTX_SCALE, G3OP_NOP, G3OP_NOP); - MI_CpuSend32( - &bbcmd1[3], - ®_G3X_GXFIFO, - sizeof(MtxFx43) + sizeof(VecFx32) - ); - } else if (NNS_G3dGlb.flag & NNS_G3D_GLB_FLAG_FLUSH_VP) { - reg_G3X_GXFIFO = GX_PACK_OP(G3OP_MTX_POP, G3OP_MTX_MODE, G3OP_MTX_LOAD_4x3, G3OP_NOP); - MI_CpuSend32( - &bbcmd1[1], - ®_G3X_GXFIFO, - 2 * sizeof(u32) - ); - MI_CpuSend32( - NNS_G3dGlbGetInvCameraMtx(), - ®_G3X_GXFIFO, - G3OP_MTX_LOAD_4x3_NPARAMS * sizeof(u32) - ); - - reg_G3X_GXFIFO = GX_PACK_OP(G3OP_MTX_MULT_4x3, G3OP_MTX_SCALE, G3OP_NOP, G3OP_NOP); - MI_CpuSend32( - &bbcmd1[3], - ®_G3X_GXFIFO, - sizeof(MtxFx43) + sizeof(VecFx32) - ); - } else { - MI_CpuSend32(&bbcmd1[0], ®_G3X_GXFIFO, 18 * sizeof(u32)); - } - } - - cbFlag = NNSi_G3dCallBackCheck_C(rs, NNS_G3D_SBC_BBY, cbTiming); - - if (opt == NNS_G3D_SBCFLG_001 || - opt == NNS_G3D_SBCFLG_011) { - ++cmdLen; - - if (!cbFlag) { - if (!(rs->flag & NNS_G3D_RSFLAG_OPT_NOGECMD)) { - u32 idxMtxDest; - idxMtxDest = *(rs->c + 2); - - NNS_G3D_ASSERT(idxMtxDest < 31); - - NNS_G3dGeBufferOP_N( - G3OP_MTX_STORE, - &idxMtxDest, - G3OP_MTX_STORE_NPARAMS - ); - } - } - } - - rs->c += cmdLen; -} - -void NNSi_G3dFuncSbc_NODEMIX (NNSG3dRS * rs, u32) { - fx64 w = 0; - const NNSG3dResEvpMtx * evpMtx = - (const NNSG3dResEvpMtx *)((u8 *)rs->pRenderObj->resMdl + - rs->pRenderObj->resMdl->ofsEvpMtx); - u32 numMtx = *(rs->c + 2); - u8 * p = rs->c + 3; - - NNS_G3D_ASSERT(numMtx >= 2); - -#if (NNS_G3D_USE_EVPCACHE) - { - u32 i; - struct { - MtxFx43 M; - MtxFx33 N; - } sum; - MtxFx44 * pX; - MtxFx33 * pY; - - MI_CpuClearFast(&sum, sizeof(sum)); - NNS_G3dGeFlushBuffer(); - - G3_MtxMode(GX_MTXMODE_PROJECTION); - G3_StoreMtx(1); - G3_Identity(); - G3_MtxMode(GX_MTXMODE_POSITION_VECTOR); - - for (i = 0; i < numMtx; ++i) { - u32 idxJnt = *(p + 1); - BOOL evpCached = NNSi_G3dBitVecCheck(&rs->isEvpCached[0], idxJnt); - - pX = &NNS_G3dRSOnGlb.evpCache[idxJnt].M; - if (!evpCached) { - NNSi_G3dBitVecSet(&rs->isEvpCached[0], idxJnt); - - G3_RestoreMtx(*p); - G3_MtxMode(GX_MTXMODE_POSITION); - G3_MultMtx43(&evpMtx[idxJnt].invM); - } - - if (i != 0) { - sum.N.m[0][0] += (w * pY->m[0][0]) >> FX32_SHIFT; - sum.N.m[0][1] += (w * pY->m[0][1]) >> FX32_SHIFT; - sum.N.m[0][2] += (w * pY->m[0][2]) >> FX32_SHIFT; - - sum.N.m[1][0] += (w * pY->m[1][0]) >> FX32_SHIFT; - sum.N.m[1][1] += (w * pY->m[1][1]) >> FX32_SHIFT; - sum.N.m[1][2] += (w * pY->m[1][2]) >> FX32_SHIFT; - - sum.N.m[2][0] += (w * pY->m[2][0]) >> FX32_SHIFT; - sum.N.m[2][1] += (w * pY->m[2][1]) >> FX32_SHIFT; - sum.N.m[2][2] += (w * pY->m[2][2]) >> FX32_SHIFT; - } - - if (!evpCached) { - while (G3X_GetClipMtx(pX)) { - ; - } - G3_MtxMode(GX_MTXMODE_POSITION_VECTOR); - G3_MultMtx33(&evpMtx[idxJnt].invN); - } - - w = *(p + 2) << 4; - - sum.M.m[0][0] += (w * pX->m[0][0]) >> FX32_SHIFT; - sum.M.m[0][1] += (w * pX->m[0][1]) >> FX32_SHIFT; - sum.M.m[0][2] += (w * pX->m[0][2]) >> FX32_SHIFT; - - sum.M.m[1][0] += (w * pX->m[1][0]) >> FX32_SHIFT; - sum.M.m[1][1] += (w * pX->m[1][1]) >> FX32_SHIFT; - sum.M.m[1][2] += (w * pX->m[1][2]) >> FX32_SHIFT; - - sum.M.m[2][0] += (w * pX->m[2][0]) >> FX32_SHIFT; - sum.M.m[2][1] += (w * pX->m[2][1]) >> FX32_SHIFT; - sum.M.m[2][2] += (w * pX->m[2][2]) >> FX32_SHIFT; - - sum.M.m[3][0] += (w * pX->m[3][0]) >> FX32_SHIFT; - sum.M.m[3][1] += (w * pX->m[3][1]) >> FX32_SHIFT; - sum.M.m[3][2] += (w * pX->m[3][2]) >> FX32_SHIFT; - - p += 3; - pY = &NNS_G3dRSOnGlb.evpCache[idxJnt].N; - - if (!evpCached) { - while (G3X_GetVectorMtx(pY)) { - ; - } - } - } - sum.N.m[0][0] += (w * pY->m[0][0]) >> FX32_SHIFT; - sum.N.m[0][1] += (w * pY->m[0][1]) >> FX32_SHIFT; - sum.N.m[0][2] += (w * pY->m[0][2]) >> FX32_SHIFT; - - sum.N.m[1][0] += (w * pY->m[1][0]) >> FX32_SHIFT; - sum.N.m[1][1] += (w * pY->m[1][1]) >> FX32_SHIFT; - sum.N.m[1][2] += (w * pY->m[1][2]) >> FX32_SHIFT; - - sum.N.m[2][0] += (w * pY->m[2][0]) >> FX32_SHIFT; - sum.N.m[2][1] += (w * pY->m[2][1]) >> FX32_SHIFT; - sum.N.m[2][2] += (w * pY->m[2][2]) >> FX32_SHIFT; - - G3_LoadMtx43((const MtxFx43 *)&sum.N); - G3_MtxMode(GX_MTXMODE_POSITION); - G3_LoadMtx43(&sum.M); - G3_MtxMode(GX_MTXMODE_PROJECTION); - G3_RestoreMtx(1); - G3_MtxMode(GX_MTXMODE_POSITION_VECTOR); - } -#else - { - u32 i; - struct { - MtxFx43 M; - MtxFx33 N; - } sum; - MtxFx44 X; - MtxFx33 Y; - - MI_CpuClearFast(&sum, sizeof(sum)); - NNS_G3dGeFlushBuffer(); - - G3_MtxMode(GX_MTXMODE_PROJECTION); - G3_StoreMtx(1); - G3_Identity(); - G3_MtxMode(GX_MTXMODE_POSITION_VECTOR); - - for (i = 0; i < numMtx; ++i) { - u32 idxJnt = *(p + 1); - - G3_RestoreMtx(*p); - G3_MtxMode(GX_MTXMODE_POSITION); - G3_MultMtx43(&evpMtx[idxJnt].invM); - - if (i != 0) { - sum.N.m[0][0] += (w * Y.m[0][0]) >> FX32_SHIFT; - sum.N.m[0][1] += (w * Y.m[0][1]) >> FX32_SHIFT; - sum.N.m[0][2] += (w * Y.m[0][2]) >> FX32_SHIFT; - - sum.N.m[1][0] += (w * Y.m[1][0]) >> FX32_SHIFT; - sum.N.m[1][1] += (w * Y.m[1][1]) >> FX32_SHIFT; - sum.N.m[1][2] += (w * Y.m[1][2]) >> FX32_SHIFT; - - sum.N.m[2][0] += (w * Y.m[2][0]) >> FX32_SHIFT; - sum.N.m[2][1] += (w * Y.m[2][1]) >> FX32_SHIFT; - sum.N.m[2][2] += (w * Y.m[2][2]) >> FX32_SHIFT; - } - - while (G3X_GetClipMtx(&X)) { - ; - } - G3_MtxMode(GX_MTXMODE_POSITION_VECTOR); - G3_MultMtx33(&evpMtx[idxJnt].invN); - - w = *(p + 2) << 4; - sum.M.m[0][0] += (w * X.m[0][0]) >> FX32_SHIFT; - sum.M.m[0][1] += (w * X.m[0][1]) >> FX32_SHIFT; - sum.M.m[0][2] += (w * X.m[0][2]) >> FX32_SHIFT; - - sum.M.m[1][0] += (w * X.m[1][0]) >> FX32_SHIFT; - sum.M.m[1][1] += (w * X.m[1][1]) >> FX32_SHIFT; - sum.M.m[1][2] += (w * X.m[1][2]) >> FX32_SHIFT; - - sum.M.m[2][0] += (w * X.m[2][0]) >> FX32_SHIFT; - sum.M.m[2][1] += (w * X.m[2][1]) >> FX32_SHIFT; - sum.M.m[2][2] += (w * X.m[2][2]) >> FX32_SHIFT; - - sum.M.m[3][0] += (w * X.m[3][0]) >> FX32_SHIFT; - sum.M.m[3][1] += (w * X.m[3][1]) >> FX32_SHIFT; - sum.M.m[3][2] += (w * X.m[3][2]) >> FX32_SHIFT; - p += 3; - - while (G3X_GetVectorMtx(&Y)) { - ; - } - } - sum.N.m[0][0] += (w * Y.m[0][0]) >> FX32_SHIFT; - sum.N.m[0][1] += (w * Y.m[0][1]) >> FX32_SHIFT; - sum.N.m[0][2] += (w * Y.m[0][2]) >> FX32_SHIFT; - - sum.N.m[1][0] += (w * Y.m[1][0]) >> FX32_SHIFT; - sum.N.m[1][1] += (w * Y.m[1][1]) >> FX32_SHIFT; - sum.N.m[1][2] += (w * Y.m[1][2]) >> FX32_SHIFT; - - sum.N.m[2][0] += (w * Y.m[2][0]) >> FX32_SHIFT; - sum.N.m[2][1] += (w * Y.m[2][1]) >> FX32_SHIFT; - sum.N.m[2][2] += (w * Y.m[2][2]) >> FX32_SHIFT; - - G3_LoadMtx43((const MtxFx43 *)&sum.N); - G3_MtxMode(GX_MTXMODE_POSITION); - G3_LoadMtx43(&sum.M); - G3_MtxMode(GX_MTXMODE_PROJECTION); - G3_RestoreMtx(1); - G3_MtxMode(GX_MTXMODE_POSITION_VECTOR); - } -#endif - G3_StoreMtx(*(rs->c + 1)); - rs->c += 3 + *(rs->c + 2) * 3; -} - -void NNSi_G3dFuncSbc_CALLDL (NNSG3dRS * rs, u32) { - BOOL cbFlag; - NNSG3dSbcCallBackTiming cbTiming; - - NNS_G3D_NULL_ASSERT(rs); - - cbFlag = NNSi_G3dCallBackCheck_A(rs, NNS_G3D_SBC_CALLDL, &cbTiming); - - if (!(rs->flag & NNS_G3D_RSFLAG_OPT_NOGECMD) && - (!cbFlag)) { - u32 rel_addr; - u32 size; - rel_addr = (u32)((*(rs->c + 1) << 0) | - (*(rs->c + 2) << 8) | - (*(rs->c + 3) << 16) | - (*(rs->c + 4) << 24)); - - size = (u32)((*(rs->c + 5) << 0) | - (*(rs->c + 6) << 8) | - (*(rs->c + 7) << 16) | - (*(rs->c + 8) << 24)); - - NNS_G3dGeSendDL(rs->c + rel_addr, size); - } - - (void)NNSi_G3dCallBackCheck_C(rs, NNS_G3D_SBC_CALLDL, cbTiming); - - rs->c += 1 + sizeof(u32) + sizeof(u32); -} - -void NNSi_G3dFuncSbc_POSSCALE (NNSG3dRS * rs, u32 opt) { - VecFx32 s; - NNS_G3D_NULL_ASSERT(rs); - NNS_G3D_ASSERT( - opt == NNS_G3D_SBCFLG_000 || - opt == NNS_G3D_SBCFLG_001 - ); - - if (!(rs->flag & NNS_G3D_RSFLAG_OPT_NOGECMD) && - !(rs->flag & NNS_G3D_RSFLAG_OPT_SKIP_SBCDRAW)) { - if (opt == NNS_G3D_SBCFLG_000) { - s.x = s.y = s.z = rs->posScale; - } else { - s.x = s.y = s.z = rs->invPosScale; - } - NNS_G3dGeBufferOP_N( - G3OP_MTX_SCALE, - (u32 *)&s.x, - G3OP_MTX_SCALE_NPARAMS - ); - } - - rs->c += 1; -} - -void NNSi_G3dFuncSbc_ENVMAP (NNSG3dRS * rs, u32) { - NNS_G3D_NULL_ASSERT(rs); - - if (!(rs->flag & NNS_G3D_RSFLAG_OPT_SKIP_SBCDRAW) && - (rs->flag & NNS_G3D_RSFLAG_NODE_VISIBLE)) { - BOOL cbFlag; - NNSG3dSbcCallBackTiming cbTiming; - - if ((rs->pMatAnmResult->prmTexImage & REG_G3_TEXIMAGE_PARAM_TGEN_MASK) != - (GX_TEXGEN_NORMAL << REG_G3_TEXIMAGE_PARAM_TGEN_SHIFT)) { - static u32 cmd[] = { - G3OP_TEXIMAGE_PARAM, - 0 - }; - rs->pMatAnmResult->prmTexImage &= ~REG_G3_TEXIMAGE_PARAM_TGEN_MASK; - rs->pMatAnmResult->prmTexImage |= GX_TEXGEN_NORMAL << REG_G3_TEXIMAGE_PARAM_TGEN_SHIFT; - - cmd[1] = rs->pMatAnmResult->prmTexImage; - NNS_G3dGeBufferData_N(&cmd[0], 2); - } - - NNS_G3dGeMtxMode(GX_MTXMODE_TEXTURE); - - cbFlag = NNSi_G3dCallBackCheck_A(rs, NNS_G3D_SBC_ENVMAP, &cbTiming); - if (!cbFlag) { - s32 width, height; - width = (s32)rs->pMatAnmResult->origWidth; - height = (s32)rs->pMatAnmResult->origHeight; - - { - NNS_G3dGeScale(width << (FX32_SHIFT + 3), -height << (FX32_SHIFT + 3), FX32_ONE << 4); - NNS_G3dGeTexCoord(width << (FX32_SHIFT - 1), height << (FX32_SHIFT - 1)); - } - } - - cbFlag = NNSi_G3dCallBackCheck_B(rs, NNS_G3D_SBC_ENVMAP, &cbTiming); - if (!cbFlag) { - u32 idxMat = *(rs->c + 1); - const NNSG3dResMatData * mat = - NNS_G3dGetMatDataByIdx(rs->pResMat, idxMat); - - if (mat->flag & NNS_G3D_MATFLAG_EFFECTMTX) { - const MtxFx44 * effect_mtx; - const u8 * p = (const u8 *)mat + sizeof(NNSG3dResMatData); - - if (!(mat->flag & NNS_G3D_MATFLAG_TEXMTX_SCALEONE)) { - p += sizeof(fx32) + sizeof(fx32); - } - - if (!(mat->flag & NNS_G3D_MATFLAG_TEXMTX_ROTZERO)) { - p += sizeof(fx16) + sizeof(fx16); - } - - if (!(mat->flag & NNS_G3D_MATFLAG_TEXMTX_TRANSZERO)) { - p += sizeof(fx32) + sizeof(fx32); - } - - effect_mtx = (const MtxFx44 *)p; - NNS_G3dGeMultMtx44(effect_mtx); - } - } - - cbFlag = NNSi_G3dCallBackCheck_C(rs, NNS_G3D_SBC_ENVMAP, cbTiming); - if (!cbFlag) { - MtxFx33 n; - NNS_G3dGeMtxMode(GX_MTXMODE_POSITION_VECTOR); - NNS_G3dGetCurrentMtx(NULL, &n); - NNS_G3dGeMtxMode(GX_MTXMODE_TEXTURE); - - if (NNS_G3dGlb.flag & NNS_G3D_GLB_FLAG_FLUSH_WVP) { - NNS_G3dGeMultMtx33((const MtxFx33 *)NNS_G3dGlbGetCameraMtx()); - NNS_G3dGeMultMtx33(NNS_G3dGlbGetBaseRot()); - NNS_G3dGeMultMtx33(&n); - } else if (NNS_G3dGlb.flag & NNS_G3D_GLB_FLAG_FLUSH_VP) { - NNS_G3dGeMultMtx33((const MtxFx33 *)NNS_G3dGlbGetCameraMtx()); - NNS_G3dGeMultMtx33(&n); - } else { - NNS_G3dGeMultMtx33(&n); - } - } - - NNS_G3dGeMtxMode(GX_MTXMODE_POSITION_VECTOR); - } - rs->c += 3; -} - -void NNSi_G3dFuncSbc_PRJMAP (NNSG3dRS * rs, u32) { - NNS_G3D_NULL_ASSERT(rs); - - if (!(rs->flag & NNS_G3D_RSFLAG_OPT_SKIP_SBCDRAW) && - (rs->flag & NNS_G3D_RSFLAG_NODE_VISIBLE)) { - BOOL cbFlag; - NNSG3dSbcCallBackTiming cbTiming; - - MtxFx43 m; - NNS_G3dGetCurrentMtx(&m, NULL); - NNS_G3dGeStoreMtx(NNS_G3D_MTXSTACK_SYS); - - if ((rs->pMatAnmResult->prmTexImage & REG_G3_TEXIMAGE_PARAM_TGEN_MASK) != - (GX_TEXGEN_VERTEX << REG_G3_TEXIMAGE_PARAM_TGEN_SHIFT)) { - static u32 cmd[] = { - G3OP_TEXIMAGE_PARAM, - 0 - }; - rs->pMatAnmResult->prmTexImage &= ~REG_G3_TEXIMAGE_PARAM_TGEN_MASK; - rs->pMatAnmResult->prmTexImage |= GX_TEXGEN_VERTEX << REG_G3_TEXIMAGE_PARAM_TGEN_SHIFT; - - cmd[1] = rs->pMatAnmResult->prmTexImage; - NNS_G3dGeBufferData_N(&cmd[0], 2); - } - - cbFlag = NNSi_G3dCallBackCheck_A(rs, NNS_G3D_SBC_PRJMAP, &cbTiming); - if (!cbFlag) { - s32 width, height; - width = (s32)rs->pMatAnmResult->origWidth; - height = (s32)rs->pMatAnmResult->origHeight; - - { - static MtxFx44 mtx = { - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, FX32_ONE << 4, 0, - 0, 0, 0, FX32_ONE << 4 - }; - - mtx._00 = width << (FX32_SHIFT + 3); - mtx._11 = -height << (FX32_SHIFT + 3); - mtx._30 = width << (FX32_SHIFT + 3); - mtx._31 = height << (FX32_SHIFT + 3); - - NNS_G3dGeLoadMtx44(&mtx); - } - } - - cbFlag = NNSi_G3dCallBackCheck_B(rs, NNS_G3D_SBC_PRJMAP, &cbTiming); - if (!cbFlag) { - u32 idxMat = *(rs->c + 1); - const NNSG3dResMatData * mat = - NNS_G3dGetMatDataByIdx(rs->pResMat, idxMat); - - if (mat->flag & NNS_G3D_MATFLAG_EFFECTMTX) { - const MtxFx44 * effect_mtx; - const u8 * p = (const u8 *)mat + sizeof(NNSG3dResMatData); - - if (!(mat->flag & NNS_G3D_MATFLAG_TEXMTX_SCALEONE)) { - p += sizeof(fx32) + sizeof(fx32); - } - - if (!(mat->flag & NNS_G3D_MATFLAG_TEXMTX_ROTZERO)) { - p += sizeof(fx16) + sizeof(fx16); - } - - if (!(mat->flag & NNS_G3D_MATFLAG_TEXMTX_TRANSZERO)) { - p += sizeof(fx32) + sizeof(fx32); - } - - effect_mtx = (const MtxFx44 *)p; - NNS_G3dGeMultMtx44(effect_mtx); - } - } - - cbFlag = NNSi_G3dCallBackCheck_C(rs, NNS_G3D_SBC_PRJMAP, cbTiming); - if (!cbFlag) { - MtxFx44 tex_mtx; - - if (NNS_G3dGlb.flag & NNS_G3D_GLB_FLAG_FLUSH_WVP) { - NNS_G3dGeTranslateVec(NNS_G3dGlbGetBaseTrans()); - NNS_G3dGeMultMtx33(NNS_G3dGlbGetBaseRot()); - NNS_G3dGeMultMtx43(&m); - } else if (NNS_G3dGlb.flag & NNS_G3D_GLB_FLAG_FLUSH_VP) { - NNS_G3dGeMultMtx43(&m); - } else { - NNS_G3dGeMultMtx43(NNS_G3dGlbGetInvV()); - NNS_G3dGeMultMtx43(&m); - } - - { - NNS_G3dGeFlushBuffer(); - - G3_MtxMode(GX_MTXMODE_PROJECTION); - G3_PushMtx(); - G3_Identity(); - - while (G3X_GetClipMtx(&tex_mtx)) { - ; - } - - G3_PopMtx(1); - G3_MtxMode(GX_MTXMODE_TEXTURE); - } - - NNS_G3dGeLoadMtx44(&tex_mtx); - NNS_G3dGeTexCoord(tex_mtx._30 >> 4, tex_mtx._31 >> 4); - } - - NNS_G3dGeMtxMode(GX_MTXMODE_POSITION_VECTOR); - NNS_G3dGeRestoreMtx(NNS_G3D_MTXSTACK_SYS); - } - rs->c += 3; -} - -NNSG3dRS * NNS_G3dRS = NULL; - -NNSG3dRSOnGlb NNS_G3dRSOnGlb; - -NNSG3dFuncSbc NNS_G3dFuncSbcTable[NNS_G3D_SBC_COMMAND_NUM] = { - &NNSi_G3dFuncSbc_NOP, - &NNSi_G3dFuncSbc_RET, - &NNSi_G3dFuncSbc_NODE, - &NNSi_G3dFuncSbc_MTX, - &NNSi_G3dFuncSbc_MAT, - &NNSi_G3dFuncSbc_SHP, - &NNSi_G3dFuncSbc_NODEDESC, - &NNSi_G3dFuncSbc_BB, - - &NNSi_G3dFuncSbc_BBY, - &NNSi_G3dFuncSbc_NODEMIX, - &NNSi_G3dFuncSbc_CALLDL, - &NNSi_G3dFuncSbc_POSSCALE, - &NNSi_G3dFuncSbc_ENVMAP, - &NNSi_G3dFuncSbc_PRJMAP -}; - -NNSG3dFuncSbc_ShpInternal NNS_G3dFuncSbcShpTable[NNS_G3D_SIZE_SHP_VTBL_NUM] = { - &NNSi_G3dFuncSbc_SHP_InternalDefault -}; - -NNSG3dFuncSbc_MatInternal NNS_G3dFuncSbcMatTable[NNS_G3D_SIZE_MAT_VTBL_NUM] = { - &NNSi_G3dFuncSbc_MAT_InternalDefault -}; diff --git a/subprojects/NitroSystem/libraries/g3d/src/util_nnsg3d.c b/subprojects/NitroSystem/libraries/g3d/src/util_nnsg3d.c deleted file mode 100644 index 8400d3a205..0000000000 --- a/subprojects/NitroSystem/libraries/g3d/src/util_nnsg3d.c +++ /dev/null @@ -1,552 +0,0 @@ -#include -#include -#include -#include -#include - -void NNS_G3dGetCurrentMtx (MtxFx43 * m, MtxFx33 * n) { - NNS_G3dGeFlushBuffer(); - - G3_MtxMode(GX_MTXMODE_PROJECTION); - G3_PushMtx(); - G3_Identity(); - - if (m) { - MtxFx44 tmp; - while (G3X_GetClipMtx(&tmp)) { - ; - } - MTX_Copy44To43(&tmp, m); - } - - if (n) { - while (G3X_GetVectorMtx(n)) { - ; - } - } - - G3_PopMtx(1); - G3_MtxMode(GX_MTXMODE_POSITION_VECTOR); -} - -BOOL NNS_G3dGetResultMtx (const NNSG3dRenderObj * pRenderObj, MtxFx43 * pos, MtxFx33 * nrm, u32 nodeID) { - const NNSG3dResNodeData * nd; - u32 stackID; - - NNS_G3D_NULL_ASSERT(pRenderObj); - - nd = NNS_G3dGetNodeDataByIdx(&pRenderObj->resMdl->nodeInfo, nodeID); - stackID = (nd->flag & (u32)NNS_G3D_SRTFLAG_IDXMTXSTACK_MASK) - >> NNS_G3D_SRTFLAG_IDXMTXSTACK_SHIFT; - - if (stackID != 31) { - NNS_G3dGeRestoreMtx((int)stackID); - if (pos || nrm) { - NNS_G3dGetCurrentMtx(pos, nrm); - } - return TRUE; - } else { - return FALSE; - } -} - -BOOL NNS_G3dSetResultMtx (const NNSG3dRenderObj * pRenderObj, const MtxFx43 * pos, const MtxFx33 * nrm, u32 nodeID) { - const NNSG3dResNodeData * nd; - u32 stackID; - - NNS_G3D_NULL_ASSERT(pRenderObj); - NNS_G3D_NULL_ASSERT(pos); - - nd = NNS_G3dGetNodeDataByIdx(&pRenderObj->resMdl->nodeInfo, nodeID); - stackID = (nd->flag & (u32)NNS_G3D_SRTFLAG_IDXMTXSTACK_MASK) - >> NNS_G3D_SRTFLAG_IDXMTXSTACK_SHIFT; - - if (stackID != 31) { - NNS_G3dGeFlushBuffer(); - - G3_MtxMode(GX_MTXMODE_POSITION_VECTOR); - - if (nrm) { - reg_G3X_GXFIFO = G3OP_MTX_LOAD_4x3; - MI_CpuSend32(&nrm->_00, ®_G3X_GXFIFO, sizeof(*nrm)); - reg_G3X_GXFIFO = 0; - reg_G3X_GXFIFO = 0; - reg_G3X_GXFIFO = 0; - - G3_MtxMode(GX_MTXMODE_POSITION); - G3_LoadMtx43(pos); - G3_MtxMode(GX_MTXMODE_POSITION_VECTOR); - } else { - G3_LoadMtx43(pos); - } - - G3_StoreMtx((int)stackID); - - return TRUE; - } else { - return FALSE; - } -} - -void NNS_G3dInit (void) { - G3X_Init(); - - NNS_G3dGlbInit(); - - G3X_SetFifoIntrCond(GX_FIFOINTR_COND_EMPTY); -} - -const s8 NNS_G3dSbcCmdLen[256] = { - 1, 1, 3, 2, 2, 2, 4, 2, 2, 0, 9, 1, 3, 3, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - - -1, -1, -1, -1, 2, -1, 5, 3, 3, 0, -1, 1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - - -1, -1, -1, -1, 2, -1, 5, 3, 3, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - - -1, -1, -1, -1, -1, -1, 6, 4, 4, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 -}; - -int NNS_G3dGetSbcCmdLen (const u8 * c) { - int cmdLen; - NNS_G3D_NULL_ASSERT(c); - - cmdLen = NNS_G3dSbcCmdLen[*c]; - - if (cmdLen < 0) { - return -1; - } else if (cmdLen == 0) { - if (*c == NNS_G3D_SBC_NODEMIX) { - return *(c + 2) * 3 + 3; - } else { - return -1; - } - } else { - return cmdLen; - } -} - -const u8 * NNS_G3dSearchSbcCmd (const u8 * c, u8 cmd) { - int x; - NNS_G3D_NULL_ASSERT(c); - NNS_G3D_ASSERTMSG(NNS_G3dSbcCmdLen[cmd] >= 0, "unknown command"); - - cmd &= NNS_G3D_SBCCMD_MASK; - while ((x = (*c & NNS_G3D_SBCCMD_MASK)) != NNS_G3D_SBC_RET) { - if (cmd == x) { - return c; - } else { - int cmdLen = NNS_G3dGetSbcCmdLen(c); - NNS_G3D_ASSERTMSG(cmdLen > 0, "unknown command"); - c += cmdLen; - } - } - return NULL; -} - -const u8 * NNS_G3dGetParentNodeID (int * parentID, const u8 * sbc, u32 nodeID) { - const u8 * tmp = sbc; - - NNS_G3D_NULL_ASSERT(parentID); - NNS_G3D_NULL_ASSERT(sbc); - NNS_G3D_ASSERTMSG( - nodeID < NNS_G3D_SIZE_JNT_MAX, - "specified nodeID is illegal" - ); - - while ((tmp = NNS_G3dSearchSbcCmd(tmp, NNS_G3D_SBC_NODEDESC)) != 0) { - if (*(tmp + 1) == nodeID) { - *parentID = *(tmp + 2); - return tmp; - } - - { - int cmdLen = NNS_G3dGetSbcCmdLen(tmp); - NNS_G3D_ASSERTMSG(cmdLen > 0, "unknown command"); - tmp += cmdLen; - } - } - return NULL; -} - -int NNS_G3dGetChildNodeIDList (u8 * idList, const u8 * sbc, u32 nodeID) { - const u8 * tmp = sbc; - int num = 0; - - NNS_G3D_NULL_ASSERT(idList); - NNS_G3D_ASSERTMSG( - nodeID < NNS_G3D_SIZE_JNT_MAX, - "specified nodeID is illegal" - ); - - while ((tmp = NNS_G3dSearchSbcCmd(tmp, NNS_G3D_SBC_NODEDESC)) != 0) { - if (*(tmp + 2) == nodeID && *(tmp + 2) != *(tmp + 1)) { - *(idList + num++) = *(tmp + 1); - } - - { - int cmdLen = NNS_G3dGetSbcCmdLen(tmp); - NNS_G3D_ASSERTMSG(cmdLen > 0, "unknown command"); - tmp += cmdLen; - } - } - - return num; -} - -BOOL NNS_G3dResDefaultSetup (void * pResData) { - u8 * binFile = (u8 *)pResData; - BOOL failed = FALSE; - - NNS_G3D_NULL_ASSERT(pResData); - - switch (*(u32 *)&binFile[0]) { - case NNS_G3D_SIGNATURE_NSBTX: - case NNS_G3D_SIGNATURE_NSBMD: - { - NNSG3dResTex * tex; - u32 szTex, szTex4x4, szPltt; - BOOL sucTex = TRUE; - BOOL sucTex4x4 = TRUE; - BOOL sucPltt = TRUE; - NNSG3dTexKey keyTex; - NNSG3dTexKey keyTex4x4; - NNSG3dPlttKey keyPltt; - - tex = NNS_G3dGetTex((NNSG3dResFileHeader *)pResData); - if (tex) { - szTex = NNS_G3dTexGetRequiredSize(tex); - szTex4x4 = NNS_G3dTex4x4GetRequiredSize(tex); - szPltt = NNS_G3dPlttGetRequiredSize(tex); - - if (szTex > 0) { - keyTex = NNS_GfdAllocTexVram(szTex, FALSE, 0); - if (keyTex == NNS_GFD_ALLOC_ERROR_TEXKEY) { - sucTex = FALSE; - } - } else { - keyTex = 0; - } - - if (szTex4x4 > 0) { - keyTex4x4 = NNS_GfdAllocTexVram(szTex4x4, TRUE, 0); - if (keyTex4x4 == NNS_GFD_ALLOC_ERROR_TEXKEY) { - sucTex4x4 = FALSE; - } - } else { - keyTex4x4 = 0; - } - - if (szPltt > 0) { - keyPltt = - NNS_GfdAllocPlttVram( - szPltt, - tex->tex4x4Info.flag & NNS_G3D_RESPLTT_USEPLTT4, - 0 - ); - if (keyPltt == NNS_GFD_ALLOC_ERROR_PLTTKEY) { - sucPltt = FALSE; - } - } else { - keyPltt = 0; - } - - if (!sucTex || !sucTex4x4 || !sucPltt) { - int status; - - if (sucPltt) { - status = NNS_GfdFreePlttVram(keyPltt); - NNS_G3D_ASSERTMSG(!status, "NNS_GfdFreePlttVram failed"); - } - - if (sucTex4x4) { - status = NNS_GfdFreeTexVram(keyTex4x4); - NNS_G3D_ASSERTMSG(!status, "NNS_GfdFreeTexVram failed"); - } - - if (sucTex) { - status = NNS_GfdFreeTexVram(keyTex); - NNS_G3D_ASSERTMSG(!status, "NNS_GfdFreeTexVram failed"); - } - - return FALSE; - } - - NNS_G3dTexSetTexKey(tex, keyTex, keyTex4x4); - NNS_G3dPlttSetPlttKey(tex, keyPltt); - - NNS_G3dTexLoad(tex, TRUE); - NNS_G3dPlttLoad(tex, TRUE); - } - - if (*(u32 *)&binFile[0] == NNS_G3D_SIGNATURE_NSBMD) { - NNSG3dResMdlSet * mdlSet = NNS_G3dGetMdlSet((NNSG3dResFileHeader *)pResData); - NNS_G3D_NULL_ASSERT(mdlSet); - - if (tex) { - (void)NNS_G3dBindMdlSet(mdlSet, tex); - } - } - } - return TRUE; - break; - case NNS_G3D_SIGNATURE_NSBCA: - case NNS_G3D_SIGNATURE_NSBVA: - case NNS_G3D_SIGNATURE_NSBMA: - case NNS_G3D_SIGNATURE_NSBTP: - case NNS_G3D_SIGNATURE_NSBTA: - return TRUE; - break; - default: - NNS_G3D_ASSERTMSG( - 1 == 0, "unknown file signature: '%c%c%c%c' found.\n", - binFile[0], binFile[1], binFile[2], binFile[3] - ); - return FALSE; - break; - } - ; -} - -void NNS_G3dResDefaultRelease (void * pResData) { - u8 * binFile = (u8 *)pResData; - BOOL failed = FALSE; - - NNS_G3D_NULL_ASSERT(pResData); - - switch (*(u32 *)&binFile[0]) { - case NNS_G3D_SIGNATURE_NSBMD: - { - NNSG3dResTex * tex; - NNSG3dResMdlSet * mdlSet = NNS_G3dGetMdlSet(pResData); - NNS_G3D_NULL_ASSERT(mdlSet); - tex = NNS_G3dGetTex((NNSG3dResFileHeader *)pResData); - - if (tex) { - NNS_G3dReleaseMdlSet(mdlSet); - } - } - - case NNS_G3D_SIGNATURE_NSBTX: - { - NNSG3dResTex * tex; - NNSG3dPlttKey plttKey; - NNSG3dTexKey texKey, tex4x4Key; - int status; - tex = NNS_G3dGetTex((NNSG3dResFileHeader *)pResData); - - if (tex) { - plttKey = NNS_G3dPlttReleasePlttKey(tex); - NNS_G3dTexReleaseTexKey(tex, &texKey, &tex4x4Key); - - if (plttKey > 0) { - status = NNS_GfdFreePlttVram(plttKey); - NNS_G3D_ASSERTMSG(!status, "NNS_GfdFreePlttVram failed"); - } - - if (tex4x4Key > 0) { - status = NNS_GfdFreeTexVram(tex4x4Key); - NNS_G3D_ASSERTMSG(!status, "NNS_GfdFreeTexVram failed"); - } - - if (texKey > 0) { - status = NNS_GfdFreeTexVram(texKey); - NNS_G3D_ASSERTMSG(!status, "NNS_GfdFreeTexVram failed"); - } - } - } - break; - case NNS_G3D_SIGNATURE_NSBCA: - case NNS_G3D_SIGNATURE_NSBVA: - case NNS_G3D_SIGNATURE_NSBMA: - case NNS_G3D_SIGNATURE_NSBTP: - case NNS_G3D_SIGNATURE_NSBTA: - break; - default: - NNS_G3D_ASSERTMSG( - 1 == 0, "unknown file signature: '%c%c%c%c' found.\n", - binFile[0], binFile[1], binFile[2], binFile[3] - ); - break; - } - ; -} - -int NNS_G3dLocalOriginToScrPos (int * px, int * py) { - VecFx32 vec; - fx32 w; - fx64c invW; - int x1, y1, x2, y2; - int dx, dy; - int rval; - - NNS_G3D_NULL_ASSERT(px); - NNS_G3D_NULL_ASSERT(py); - - NNS_G3dGePositionTest(0, 0, 0); - NNS_G3dGeFlushBuffer(); - while (G3X_GetPositionTestResult(&vec, &w)) { - ; - } - - invW = FX_InvFx64c(w); - - vec.x = (FX_Mul32x64c(vec.x, invW) + FX32_ONE) / 2; - vec.y = (FX_Mul32x64c(vec.y, invW) + FX32_ONE) / 2; - - if (vec.x < 0 || vec.y < 0 || vec.x > FX32_ONE || vec.y > FX32_ONE) { - rval = -1; - } else { - rval = 0; - } - - NNS_G3dGlbGetViewPort(&x1, &y1, &x2, &y2); - dx = x2 - x1; - dy = y2 - y1; - - *px = x1 + ((vec.x * dx + FX32_HALF) >> FX32_SHIFT); - *py = 191 - y1 - ((vec.y * dy + FX32_HALF) >> FX32_SHIFT); - - return rval; -} - -int NNS_G3dWorldPosToScrPos (const VecFx32 * pWorld, int * px, int * py) { - const MtxFx44 * proj; - const MtxFx43 * camera; - VecFx32 tmp; - VecFx32 vec; - fx32 w; - fx64c invW; - int x1, y1, x2, y2; - int dx, dy; - int rval; - - NNS_G3D_NULL_ASSERT(pWorld); - NNS_G3D_NULL_ASSERT(px); - NNS_G3D_NULL_ASSERT(py); - - proj = NNS_G3dGlbGetProjectionMtx(); - camera = NNS_G3dGlbGetCameraMtx(); - - MTX_MultVec43(pWorld, camera, &tmp); - - w = (fx32)(((fx64)tmp.x * proj->_03 + - (fx64)tmp.y * proj->_13 + - (fx64)tmp.z * proj->_23) >> FX32_SHIFT); - w += proj->_33; - - FX_InvAsync(w); - - vec.x = (fx32)(((fx64)tmp.x * proj->_00 + - (fx64)tmp.y * proj->_10 + - (fx64)tmp.z * proj->_20) >> FX32_SHIFT); - vec.x += proj->_30; - - vec.y = (fx32)(((fx64)tmp.x * proj->_01 + - (fx64)tmp.y * proj->_11 + - (fx64)tmp.z * proj->_21) >> FX32_SHIFT); - vec.y += proj->_31; - - invW = FX_GetInvResultFx64c(); - - vec.x = (FX_Mul32x64c(vec.x, invW) + FX32_ONE) / 2; - vec.y = (FX_Mul32x64c(vec.y, invW) + FX32_ONE) / 2; - - if (vec.x < 0 || vec.y < 0 || vec.x > FX32_ONE || vec.y > FX32_ONE) { - rval = -1; - } else { - rval = 0; - } - - NNS_G3dGlbGetViewPort(&x1, &y1, &x2, &y2); - dx = x2 - x1; - dy = y2 - y1; - - *px = x1 + ((vec.x * dx + FX32_HALF) >> FX32_SHIFT); - *py = 191 - y1 - ((vec.y * dy + FX32_HALF) >> FX32_SHIFT); - - return rval; -} - -int NNS_G3dScrPosToWorldLine (int px, int py, VecFx32 * pNear, VecFx32 * pFar) { - int rval; - int x1, y1, x2, y2; - int dx, dy; - fx32 x, y; - const MtxFx44 * m; - VecFx32 vNear, vFar; - fx64c invWNear, invWFar; - fx32 wNear, wFar; - - NNS_G3D_NULL_ASSERT(pNear); - - NNS_G3dGlbGetViewPort(&x1, &y1, &x2, &y2); - dx = x2 - x1; - dy = y2 - y1; - - x = FX_Div((px - x1) << FX32_SHIFT, dx << FX32_SHIFT); - y = FX_Div((py + y1 - 191) << FX32_SHIFT, -dy << FX32_SHIFT); - - if (x < 0 || y < 0 || x > FX32_ONE || y > FX32_ONE) { - rval = -1; - } else { - rval = 0; - } - - x = (x - FX32_HALF) * 2; - y = (y - FX32_HALF) * 2; - - m = NNS_G3dGlbGetInvVP(); - - wNear = m->_33 + (fx32)(((fx64)x * m->_03 + (fx64)y * m->_13) >> FX32_SHIFT); - FX_InvAsync(wNear - m->_23); - - vNear.x = m->_30 + (fx32)(((fx64)x * m->_00 + (fx64)y * m->_10) >> FX32_SHIFT); - vNear.y = m->_31 + (fx32)(((fx64)x * m->_01 + (fx64)y * m->_11) >> FX32_SHIFT); - vNear.z = m->_32 + (fx32)(((fx64)x * m->_02 + (fx64)y * m->_12) >> FX32_SHIFT); - - if (pFar) { - vFar.x = vNear.x + m->_20; - vFar.y = vNear.y + m->_21; - vFar.z = vNear.z + m->_22; - wFar = wNear + m->_23; - } - - vNear.x -= m->_20; - vNear.y -= m->_21; - vNear.z -= m->_22; - - invWNear = FX_GetInvResultFx64c(); - if (pFar) { - FX_InvAsync(wFar); - } - - pNear->x = FX_Mul32x64c(vNear.x, invWNear); - pNear->y = FX_Mul32x64c(vNear.y, invWNear); - pNear->z = FX_Mul32x64c(vNear.z, invWNear); - - if (pFar) { - invWFar = FX_GetInvResultFx64c(); - - pFar->x = FX_Mul32x64c(vFar.x, invWFar); - pFar->y = FX_Mul32x64c(vFar.y, invWFar); - pFar->z = FX_Mul32x64c(vFar.z, invWFar); - } - - return rval; -} diff --git a/subprojects/NitroSystem/libraries/gfd/meson.build b/subprojects/NitroSystem/libraries/gfd/meson.build deleted file mode 100644 index 7011ca710f..0000000000 --- a/subprojects/NitroSystem/libraries/gfd/meson.build +++ /dev/null @@ -1,23 +0,0 @@ -libnnsgfd_srcs = files( - 'src/gfd_TexVramMan.c', - 'src/gfd_PlttVramMan.c', - 'src/gfd_FrameTexVramMan.c', - 'src/gfd_FramePlttVramMan.c', - 'src/gfd_VramTransferManager.c', - 'src/gfdi_LinkedListVramMan_Common.c', - 'src/gfd_LinkedListTexVramMan.c', - 'src/gfd_LinkedListPlttVramMan.c' -) - -libnnsgfd_internal_includes = include_directories('src/include') - -libnnsgfd = static_library('nnsgfd', - sources: [libnnsgfd_srcs], - c_args: [c_args, sdk_args], - include_directories: [public_includes, libnnsgfd_internal_includes], - c_pch: nitro_pch, - dependencies: nitrosdk_dep, - pic: false -) - -nitrosystem_libs += libnnsgfd diff --git a/subprojects/NitroSystem/libraries/gfd/src/gfd_FramePlttVramMan.c b/subprojects/NitroSystem/libraries/gfd/src/gfd_FramePlttVramMan.c deleted file mode 100644 index 80470f6854..0000000000 --- a/subprojects/NitroSystem/libraries/gfd/src/gfd_FramePlttVramMan.c +++ /dev/null @@ -1,209 +0,0 @@ - -#include -#include -#include - -#define NNS_GFD_TEXPLTT_BASE_ADDR 0x00000 -#define NNS_GFD_TEXPLTT_MAX_ADDR 0x18000 - -typedef struct NNSGfdFramPlttVramManager { - u32 loAddr; - u32 hiAddr; - u32 szTotal; -} NNSGfdFrmPlttVramManager; - -static NNSGfdFrmPlttVramManager s_managerState_ = {0, 0, 0}; - -static NNS_GFD_INLINE u32 GetUpperSideAlignmentSize_ (u32 addr, BOOL b4Pltt) { - if (b4Pltt) { - return 0x07 & (0x08 - (addr & 0x07)); - } else { - return 0x0F & (0x10 - (addr & 0x0F)); - } -} - -static NNS_GFD_INLINE u32 GetLowerSideAlignmentSize_ (u32 addr, BOOL b4Pltt) { - if (b4Pltt) { - return addr & 0x07; - } else { - return addr & 0x0F; - } -} - -static BOOL IsVramManagerValid_ ( ) { - if ((s_managerState_.loAddr <= s_managerState_.hiAddr) && - s_managerState_.szTotal != 0) { - return TRUE; - } else { - return FALSE; - } -} - -static NNS_GFD_INLINE u32 GetCapacity_ () { - NNS_GFD_ASSERT(IsVramManagerValid_( )); - - return (u32)(s_managerState_.hiAddr - s_managerState_.loAddr); -} - -static NNS_GFD_INLINE BOOL AllocFromLo_ (u32 szByte, BOOL b4Pltt, u32 * pResAddr) { - const u32 addr = s_managerState_.loAddr; - const u32 alignment = GetUpperSideAlignmentSize_(addr, b4Pltt); - const u32 increase = szByte + alignment; - - NNS_GFD_ASSERT(szByte != 0); - NNS_GFD_ASSERT(IsVramManagerValid_( )); - - if (GetCapacity_() >= increase) { - const u32 tail = s_managerState_.loAddr + increase; - - if (b4Pltt) { - if (tail > NNS_GFD_4PLTT_MAX_ADDR) { - return FALSE; - } - } - - *pResAddr = s_managerState_.loAddr + alignment; - s_managerState_.loAddr += increase; - - return TRUE; - } else { - return FALSE; - } -} - -static NNS_GFD_INLINE BOOL AllocFromHi_ (u32 szByte, BOOL b4Pltt, u32 * pResAddr) { - NNS_GFD_ASSERT(szByte != 0); - NNS_GFD_ASSERT(IsVramManagerValid_( )); - - if (s_managerState_.hiAddr >= szByte) { - const u32 addr = (u32)(s_managerState_.hiAddr - szByte); - const u32 alignment = GetLowerSideAlignmentSize_(addr, b4Pltt); - const u32 increase = szByte + alignment; - - if (GetCapacity_() >= increase) { - const u32 tail = s_managerState_.hiAddr; - - if (b4Pltt) { - if (tail > NNS_GFD_4PLTT_MAX_ADDR) { - return FALSE; - } - } - - s_managerState_.hiAddr -= increase; - *pResAddr = s_managerState_.hiAddr; - - return TRUE; - } - } - - return FALSE; -} - -static void FrmPlttVramDebugDumpCallBack_ (u32 loAddr, u32 hiAddr, u32 szFree, u32 szTotal) { -#ifdef SDK_FINALROM - #pragma unused(loAddr) - #pragma unused(hiAddr) - #pragma unused(szFree) - #pragma unused(szTotal) -#endif - - OS_Printf("===== NNS_Gfd FrmPlttVramManager Dump ====\n"); - OS_Printf("head-Addr : tail-addr : free-size \n"); - - OS_Printf("0x%08x : 0x%08x : 0x%08x \n", loAddr, hiAddr, szFree); - - OS_Printf( - " %08d / %08d bytes (%6.2f%%) used \n", szTotal - szFree, szTotal, - 100.0f * (szTotal - szFree) / szTotal - ); - OS_Printf("==========================================\n"); -} - -void NNS_GfdDumpFrmPlttVramManager () { - NNS_GfdDumpFrmPlttVramManagerEx(FrmPlttVramDebugDumpCallBack_); -} - -void NNS_GfdDumpFrmPlttVramManagerEx (NNSGfdFrmPlttVramDebugDumpCallBack pFunc) { - NNS_GFD_NULL_ASSERT(pFunc); - - (*pFunc)( - s_managerState_.loAddr, - s_managerState_.hiAddr, - s_managerState_.hiAddr - s_managerState_.loAddr, - s_managerState_.szTotal - ); -} - -void NNS_GfdInitFrmPlttVramManager (u32 szByte, BOOL useAsDefault) { - NNS_GFD_MINMAX_ASSERT(szByte, 0, NNS_GFD_TEXPLTT_MAX_ADDR); - - s_managerState_.szTotal = szByte; - - NNS_GfdResetFrmPlttVramState(); - - NNS_GFD_ASSERT(IsVramManagerValid_( )); - - if (useAsDefault) { - NNS_GfdDefaultFuncAllocPlttVram = NNS_GfdAllocFrmPlttVram; - NNS_GfdDefaultFuncFreePlttVram = NNS_GfdFreeFrmPlttVram; - } -} - -NNSGfdPlttKey NNS_GfdAllocFrmPlttVram (u32 szByte, BOOL bPltt4, u32 allocFrom) { - u32 addr = 0x0; - BOOL result = FALSE; - - NNS_GFD_ASSERT(IsVramManagerValid_( )); - - { - szByte = NNSi_GfdGetPlttKeyRoundupSize(szByte); - - if (szByte >= NNS_GFD_PLTTSIZE_MAX) { - NNS_GFD_WARNING("Allocation size is too big. : NNS_GfdAllocLnkPlttVram()"); - return NNS_GFD_ALLOC_ERROR_PLTTKEY; - } - - NNS_GFD_MINMAX_ASSERT(szByte, NNS_GFD_PLTTSIZE_MIN, NNS_GFD_PLTTSIZE_MAX); - } - - if (allocFrom == NNS_GFD_ALLOC_FROM_LOW) { - result = AllocFromLo_(szByte, bPltt4, &addr); - } else { - result = AllocFromHi_(szByte, bPltt4, &addr); - } - - if (result) { - return NNS_GfdMakePlttKey(addr, szByte); - } - - NG_CASE: - - NNS_GFD_WARNING("failure in Vram Allocation. : NNS_GfdPlttFrmTexAlloc()"); - return NNS_GFD_ALLOC_ERROR_PLTTKEY; -} - -int NNS_GfdFreeFrmPlttVram (NNSGfdPlttKey plttKey) { -#pragma unused(plttKey) - - return 0; -} - -void NNS_GfdGetFrmPlttVramState (NNSGfdFrmPlttVramState * pState) { - NNS_GFD_NULL_ASSERT(pState); - NNS_GFD_ASSERT(IsVramManagerValid_( )); - - pState->address[0] = s_managerState_.loAddr; - pState->address[1] = s_managerState_.hiAddr; -} - -void NNS_GfdSetFrmPlttVramState (const NNSGfdFrmPlttVramState * pState) { - NNS_GFD_NULL_ASSERT(pState); - - s_managerState_.loAddr = pState->address[0]; - s_managerState_.hiAddr = pState->address[1]; -} - -void NNS_GfdResetFrmPlttVramState () { - s_managerState_.loAddr = NNS_GFD_TEXPLTT_BASE_ADDR; - s_managerState_.hiAddr = s_managerState_.szTotal; -} diff --git a/subprojects/NitroSystem/libraries/gfd/src/gfd_FrameTexVramMan.c b/subprojects/NitroSystem/libraries/gfd/src/gfd_FrameTexVramMan.c deleted file mode 100644 index b4b3ad999f..0000000000 --- a/subprojects/NitroSystem/libraries/gfd/src/gfd_FrameTexVramMan.c +++ /dev/null @@ -1,381 +0,0 @@ - -#include -#include -#include - -#define NNS_GFD_TEX_SLOT_SIZE 0x20000 - -#define NNS_GFD_NUM_TEX_VRAM_REGION 5 -#define NNS_GFD_NUM_TEX_VRAM_REGION_4x4 2 -#define NNS_GFD_INVALID_ADDR 0xFFFFFFFF - -typedef struct NNSGfdFrmTexRegionState { - u32 head; - u32 tail; - BOOL bActive; - const BOOL bHalfSize; - const u16 index; - const u16 pad16_; - const u32 baseAddress; -} NNSGfdFrmTexRegionState; - -typedef struct NNSGfdFrmTexVramMnager { - u16 numSlot; -} NNSGfdFrmTexVramMnager; - -static NNSGfdFrmTexVramMnager frmExVramMan_; - -static NNSGfdFrmTexRegionState vramRegions_[NNS_GFD_NUM_TEX_VRAM_REGION] = { - {NNS_GFD_INVALID_ADDR, NNS_GFD_INVALID_ADDR, FALSE, FALSE, 0, 0xFFFF, 0x0}, - {NNS_GFD_INVALID_ADDR, NNS_GFD_INVALID_ADDR, FALSE, TRUE, 1, 0xFFFF, (u32)NNS_GFD_TEX_SLOT_SIZE}, - {NNS_GFD_INVALID_ADDR, NNS_GFD_INVALID_ADDR, FALSE, TRUE, 2, 0xFFFF, (u32)(NNS_GFD_TEX_SLOT_SIZE + NNS_GFD_TEX_SLOT_SIZE / 2)}, - {NNS_GFD_INVALID_ADDR, NNS_GFD_INVALID_ADDR, FALSE, FALSE, 3, 0xFFFF, (u32)(NNS_GFD_TEX_SLOT_SIZE * 2)}, - {NNS_GFD_INVALID_ADDR, NNS_GFD_INVALID_ADDR, FALSE, FALSE, 4, 0xFFFF, (u32)(NNS_GFD_TEX_SLOT_SIZE * 3)} -}; - -static NNSGfdFrmTexRegionState * texNrmSearchArray_[NNS_GFD_NUM_TEX_VRAM_REGION] = { - &vramRegions_[4], - &vramRegions_[3], - &vramRegions_[0], - &vramRegions_[2], - &vramRegions_[1] -}; - -static NNSGfdFrmTexRegionState * tex4x4SearchArray_[NNS_GFD_NUM_TEX_VRAM_REGION_4x4] = { - &vramRegions_[0], - &vramRegions_[3] -}; - -typedef struct NNSiGfdDefaultDebugContext { - u32 szTotalFree; - u32 szTotalReserved; -} NNSiGfdDefaultDebugContext; - -static NNS_GFD_INLINE BOOL IsSlotNumValid_ (u16 numSlot) { - if (numSlot > 0 && numSlot <= 4) { - return TRUE; - } else { - return FALSE; - } -} - -static NNS_GFD_INLINE void ResetRegionNormal_ (NNSGfdFrmTexRegionState * pRegion) { - NNS_GFD_NULL_ASSERT(pRegion); - - pRegion->head = 0x0; - pRegion->tail = NNS_GFD_TEX_SLOT_SIZE; -} - -static NNS_GFD_INLINE void ResetRegionHalf_ (NNSGfdFrmTexRegionState * pRegion) { - NNS_GFD_NULL_ASSERT(pRegion); - - pRegion->head = 0x0; - pRegion->tail = NNS_GFD_TEX_SLOT_SIZE / 2; -} - -static NNS_GFD_INLINE BOOL IsRegionStateValid_ (const NNSGfdFrmTexRegionState * pRegion) { - NNS_GFD_NULL_ASSERT(pRegion); - - if (pRegion->head != NNS_GFD_INVALID_ADDR && - pRegion->tail != NNS_GFD_INVALID_ADDR) { - if (pRegion->head <= pRegion->tail) { - return TRUE; - } - } - - return FALSE; -} - -static NNS_GFD_INLINE BOOL IsVramManagerValid_ ( ) { - int i; - - for ( i = 0; i < NNS_GFD_NUM_TEX_VRAM_REGION; i++ ) { - if (!IsRegionStateValid_(&vramRegions_[i])) { - return FALSE; - } - } - return TRUE; -} - -static NNS_GFD_INLINE u32 GetReagionCapacity_ (const NNSGfdFrmTexRegionState * pRegion) { - NNS_GFD_NULL_ASSERT(pRegion); - NNS_GFD_ASSERT(IsRegionStateValid_(pRegion)); - - return (u32)(pRegion->tail - pRegion->head); -} - -static NNS_GFD_INLINE u32 AllocFromReagionHead_ (NNSGfdFrmTexRegionState * pRegion, u32 szByte) { - NNS_GFD_NULL_ASSERT(pRegion); - NNS_GFD_ASSERT(IsRegionStateValid_(pRegion)); - NNS_GFD_ASSERT(GetReagionCapacity_(pRegion) >= szByte); - - { - const u32 result = pRegion->head; - - pRegion->head += szByte; - - return result; - } -} - -static NNS_GFD_INLINE u32 AllocFromReagionTail_ (NNSGfdFrmTexRegionState * pRegion, u32 szByte) { - NNS_GFD_NULL_ASSERT(pRegion); - NNS_GFD_ASSERT(IsRegionStateValid_(pRegion)); - NNS_GFD_ASSERT(GetReagionCapacity_(pRegion) >= szByte); - - { - pRegion->tail -= szByte; - - return pRegion->tail; - } -} - -static NNS_GFD_INLINE NNSGfdFrmTexRegionState * Get4x4IdxRegion_ (const NNSGfdFrmTexRegionState * pRegion) { - NNS_GFD_NULL_ASSERT(pRegion); - switch (pRegion->index) { - case 0: return &vramRegions_[1]; - case 3: return &vramRegions_[2]; - - default: NNS_GFD_WARNING("Invalid region is detected. in Get4x4IdxRegion_(). "); break; - } - return NULL; -} - -static NNS_GFD_INLINE BOOL DoAlloc4x4_ (u32 szByte, u32 * addr) { - NNS_GFD_NULL_ASSERT(addr); - NNS_GFD_ASSERTMSG(IsVramManagerValid_(), "Make sure to Initialize the manager."); - - { - int i; - NNSGfdFrmTexRegionState * pRegion = NULL; - NNSGfdFrmTexRegionState * pPltRegion = NULL; - - for ( i = 0; i < NNS_GFD_NUM_TEX_VRAM_REGION_4x4; i++ ) { - pRegion = tex4x4SearchArray_[i]; - - if (pRegion->bActive && - GetReagionCapacity_(pRegion) >= szByte) { - pPltRegion = Get4x4IdxRegion_(pRegion); - - if (pPltRegion->bActive && - GetReagionCapacity_(pPltRegion) >= szByte / 2) { - *addr = AllocFromReagionHead_(pRegion, szByte); - (void)AllocFromReagionHead_(pPltRegion, szByte / 2); - - *addr += pRegion->baseAddress; - - return TRUE; - } - } - } - - NNS_GFD_WARNING("We have no memory for 4x4 Tex."); - return FALSE; - } -} - -static NNS_GFD_INLINE BOOL DoAllocNrm_ (u32 szByte, u32 * addr) { - NNS_GFD_NULL_ASSERT(addr); - NNS_GFD_ASSERTMSG(IsVramManagerValid_(), "Make sure to Initialize the manager."); - - { - int i; - NNSGfdFrmTexRegionState * pRegion = NULL; - - for ( i = 0; i < NNS_GFD_NUM_TEX_VRAM_REGION; i++ ) { - pRegion = texNrmSearchArray_[i]; - if (pRegion->bActive) { - if (GetReagionCapacity_(pRegion) >= szByte) { - *addr = AllocFromReagionTail_(pRegion, szByte); - - *addr += pRegion->baseAddress; - - return TRUE; - } - } - } - - NNS_GFD_WARNING("We have no memory for Nrm Tex."); - return FALSE; - } -} - -static void DefaultDebugDumpFunc_ (int index, u32 startAddr, u32 endAddr, u32 blockMax, BOOL bActive, void * pUserContext) { -#ifdef SDK_FINALROM - #pragma unused(index) -#endif - - NNSiGfdDefaultDebugContext * pContext = (NNSiGfdDefaultDebugContext *)pUserContext; - NNS_GFD_NULL_ASSERT(pContext); - - if (bActive) { - OS_Printf( - "%02d : 0x%08x : 0x%08x : 0x%08x \n", - index, - startAddr, - endAddr, - endAddr - startAddr - ); - - pContext->szTotalFree += endAddr - startAddr; - pContext->szTotalReserved += blockMax; - } else { - OS_Printf("%02d : ---------- : ---------- : ---------- \n", index); - } -} - -void NNSi_GfdSetTexNrmSearchArray (int idx1st, int idx2nd, int idx3rd, int idx4th, int idx5th) { - NNS_GFD_MINMAX_ASSERT(idx1st, 0, NNS_GFD_NUM_TEX_VRAM_REGION - 1); - NNS_GFD_MINMAX_ASSERT(idx2nd, 0, NNS_GFD_NUM_TEX_VRAM_REGION - 1); - NNS_GFD_MINMAX_ASSERT(idx3rd, 0, NNS_GFD_NUM_TEX_VRAM_REGION - 1); - NNS_GFD_MINMAX_ASSERT(idx4th, 0, NNS_GFD_NUM_TEX_VRAM_REGION - 1); - NNS_GFD_MINMAX_ASSERT(idx5th, 0, NNS_GFD_NUM_TEX_VRAM_REGION - 1); - - texNrmSearchArray_[0] = &vramRegions_[idx1st]; - texNrmSearchArray_[1] = &vramRegions_[idx2nd]; - texNrmSearchArray_[2] = &vramRegions_[idx3rd]; - texNrmSearchArray_[3] = &vramRegions_[idx4th]; - texNrmSearchArray_[4] = &vramRegions_[idx5th]; -} - -void NNS_GfdDumpFrmTexVramManager () { - const NNSGfdFrmTexRegionState * pState = NULL; - - NNSiGfdDefaultDebugContext context = {0, 0}; - - OS_Printf("===== NNS_Gfd FrmTexVramManager Dump =====\n"); - OS_Printf("index : head-Addr : tail-addr : free-size \n"); - - NNS_GfdDumpFrmTexVramManagerEx(DefaultDebugDumpFunc_, &context); - - OS_Printf( - " %08d / %08d bytes (%6.2f%%) used \n", - context.szTotalReserved - context.szTotalFree, - context.szTotalReserved, - 100.0f * (context.szTotalReserved - context.szTotalFree) / context.szTotalReserved - ); - - OS_Printf("==========================================\n"); -} - -void NNS_GfdDumpFrmTexVramManagerEx (NNSGfdFrmTexVramDebugDumpCallBack pFunc, void * pUserContext) { - int i; - const NNSGfdFrmTexRegionState * pState = NULL; - NNS_GFD_NULL_ASSERT(pFunc); - - for ( i = 0; i < NNS_GFD_NUM_TEX_VRAM_REGION; i++ ) { - pState = &vramRegions_[i]; - (*pFunc)( - i, - pState->head + pState->baseAddress, - pState->tail + pState->baseAddress, - (pState->bHalfSize) ? (u32)(NNS_GFD_TEX_SLOT_SIZE / 2) : NNS_GFD_TEX_SLOT_SIZE, - pState->bActive, - pUserContext - ); - } -} - -void NNS_GfdInitFrmTexVramManager (u16 numSlot, BOOL useAsDefault) { - NNS_GFD_ASSERT(IsSlotNumValid_(numSlot)); - - if (numSlot <= 2) { - NNSi_GfdSetTexNrmSearchArray(4, 3, 2, 0, 1); - } else { - NNSi_GfdSetTexNrmSearchArray(4, 3, 0, 2, 1); - } - - frmExVramMan_.numSlot = numSlot; - NNS_GfdResetFrmTexVramState(); - - if (useAsDefault) { - NNS_GfdDefaultFuncAllocTexVram = NNS_GfdAllocFrmTexVram; - NNS_GfdDefaultFuncFreeTexVram = NNS_GfdFreeFrmTexVram; - } -} - -void NNS_GfdResetFrmTexVramState () { - int i; - u16 numSlot = frmExVramMan_.numSlot; - - const numRegion = (numSlot > 1) ? numSlot + 1 : numSlot + 0; - - NNS_GFD_ASSERT(IsSlotNumValid_(numSlot)); - - for ( i = 0; i < NNS_GFD_NUM_TEX_VRAM_REGION; i++ ) { - if (i < numRegion) { - vramRegions_[i].bActive = TRUE; - } else { - vramRegions_[i].bActive = FALSE; - } - - if (vramRegions_[i].bHalfSize) { - ResetRegionHalf_(&vramRegions_[i]); - } else { - ResetRegionNormal_(&vramRegions_[i]); - } - } -} - -NNSGfdTexKey NNS_GfdAllocFrmTexVram (u32 szByte, BOOL is4x4comp, u32 opt) { -#pragma unused(opt) - - u32 addr; - BOOL result; - - NNS_GFD_ASSERTMSG(IsVramManagerValid_(), "Make sure to Initialize the manager."); - - { - szByte = NNSi_GfdGetTexKeyRoundupSize(szByte); - - if (szByte >= NNS_GFD_TEXSIZE_MAX) { - NNS_GFD_WARNING("Allocation size is too big. : NNS_GfdAllocFrmTexVram()"); - return NNS_GFD_ALLOC_ERROR_TEXKEY; - } - - NNS_GFD_MINMAX_ASSERT(szByte, NNS_GFD_TEXSIZE_MIN, NNS_GFD_TEXSIZE_MAX); - } - - if (is4x4comp) { - result = DoAlloc4x4_(szByte, &addr); - } else { - result = DoAllocNrm_(szByte, &addr); - } - - if (result) { - return NNS_GfdMakeTexKey(addr, szByte, is4x4comp); - } else { - NNS_GFD_WARNING("failure in Vram Allocation. : NNS_GfdAllocFrmTexVram()"); - return NNS_GFD_ALLOC_ERROR_TEXKEY; - } -} - -int NNS_GfdFreeFrmTexVram (NNSGfdTexKey texKey) { -#pragma unused(texKey) - - NNS_GFD_ASSERTMSG(IsVramManagerValid_(), "Make sure to Initialize the manager."); - - return 0; -} - -void NNS_GfdGetFrmTexVramState (NNSGfdFrmTexVramState * pState) { - int i; - NNS_GFD_NULL_ASSERT(pState); - NNS_GFD_ASSERTMSG(IsVramManagerValid_(), "Make sure to Initialize the manager."); - - for ( i = 0; i < NNS_GFD_NUM_TEX_VRAM_REGION; i++ ) { - pState->address[i * 2 + 0] = vramRegions_[i].head; - pState->address[i * 2 + 1] = vramRegions_[i].tail; - } -} - -void NNS_GfdSetFrmTexVramState (const NNSGfdFrmTexVramState * pState) { - int i; - NNS_GFD_NULL_ASSERT(pState); - NNS_GFD_ASSERTMSG(IsVramManagerValid_(), "Make sure to Initialize the manager."); - - for ( i = 0; i < NNS_GFD_NUM_TEX_VRAM_REGION; i++ ) { - vramRegions_[i].head = pState->address[i * 2 + 0]; - vramRegions_[i].tail = pState->address[i * 2 + 1]; - } -} diff --git a/subprojects/NitroSystem/libraries/gfd/src/gfd_LinkedListPlttVramMan.c b/subprojects/NitroSystem/libraries/gfd/src/gfd_LinkedListPlttVramMan.c deleted file mode 100644 index 05e99c4dec..0000000000 --- a/subprojects/NitroSystem/libraries/gfd/src/gfd_LinkedListPlttVramMan.c +++ /dev/null @@ -1,155 +0,0 @@ - -#include -#include - -#include "include/gfdi_LinkedListVramMan_Common.h" - -#define GFD_SLOT_SIZE 0x18000 - -#define NNS_GFD_BARPLTT_FREE_ERROR_INVALID_SIZE 1 - -typedef struct NNS_GfdLnkPlttVramManager { - NNSiGfdLnkVramMan mgr; - NNSiGfdLnkVramBlock * pBlockPoolList; - - u32 szByte; - NNSiGfdLnkVramBlock * pWorkHead; - u32 szByteManagementWork; -} NNS_GfdLnkPlttVramManager; - -static NNS_GfdLnkPlttVramManager mgr_; - -void NNS_GfdDumpLnkPlttVramManager () { - OS_Printf("=== NNS_Gfd LnkPlttVramManager Dump ===\n"); - OS_Printf(" address: size \n"); - OS_Printf("=======================================\n"); - - OS_Printf("------ Free Blocks -----\n"); - - NNSi_GfdDumpLnkVramManFreeListInfo(mgr_.mgr.pFreeList, mgr_.szByte); - - OS_Printf("=======================================\n"); -} - -void NNS_GfdDumpLnkPlttVramManagerEx (NNSGfdLnkDumpCallBack pFunc, void * pUserData) { - NNS_GFD_NULL_ASSERT(pFunc); - NNSi_GfdDumpLnkVramManFreeListInfoEx(mgr_.mgr.pFreeList, pFunc, pUserData); -} - -u32 NNS_GfdGetLnkPlttVramManagerWorkSize (u32 numMemBlk) { - return numMemBlk * sizeof(NNSiGfdLnkVramBlock); -} - -void NNS_GfdInitLnkPlttVramManager (u32 szByte, void * pManagementWork, u32 szByteManagementWork, BOOL useAsDefault) { - NNS_GFD_ASSERT(szByte <= GFD_SLOT_SIZE); - NNS_GFD_NULL_ASSERT(pManagementWork); - NNS_GFD_ASSERT(szByteManagementWork != 0); - - { - mgr_.szByte = szByte; - mgr_.pWorkHead = pManagementWork; - mgr_.szByteManagementWork = szByteManagementWork; - - NNS_GfdResetLnkPlttVramState(); - - if (useAsDefault) { - NNS_GfdDefaultFuncAllocPlttVram = NNS_GfdAllocLnkPlttVram; - NNS_GfdDefaultFuncFreePlttVram = NNS_GfdFreeLnkPlttVram; - } - } -} - -NNSGfdPlttKey NNS_GfdAllocLnkPlttVram (u32 szByte, BOOL b4Pltt, u32 opt) { -#pragma unused(opt) - u32 addr; - BOOL result; - - { - szByte = NNSi_GfdGetPlttKeyRoundupSize(szByte); - - if (szByte >= NNS_GFD_PLTTSIZE_MAX) { - NNS_GFD_WARNING("Allocation size is too big. : NNS_GfdAllocLnkPlttVram()"); - return NNS_GFD_ALLOC_ERROR_PLTTKEY; - } - - NNS_GFD_MINMAX_ASSERT(szByte, NNS_GFD_PLTTSIZE_MIN, NNS_GFD_PLTTSIZE_MAX); - } - - if (b4Pltt) { - result = NNSi_GfdAllocLnkVramAligned( - &mgr_.mgr, - &mgr_.pBlockPoolList, - &addr, - szByte, - 0x08 - ); - - if (addr + szByte > NNS_GFD_4PLTT_MAX_ADDR) { - if (!NNSi_GfdFreeLnkVram( - &mgr_.mgr, - &mgr_.pBlockPoolList, - addr, - szByte - )) { - } - - return NNS_GFD_ALLOC_ERROR_PLTTKEY; - } - } else { - result = NNSi_GfdAllocLnkVramAligned( - &mgr_.mgr, - &mgr_.pBlockPoolList, - &addr, - szByte, - 0x10 - ); - } - - if (result) { - return NNS_GfdMakePlttKey(addr, szByte); - } else { - NNS_GFD_WARNING("failure in Vram Allocation. : NNS_GfdAllocLnkPlttVram()"); - return NNS_GFD_ALLOC_ERROR_PLTTKEY; - } -} - -int NNS_GfdFreeLnkPlttVram (NNSGfdPlttKey plttKey) { - const u32 addr = NNS_GfdGetPlttKeyAddr(plttKey); - const u32 szByte = NNS_GfdGetPlttKeySize(plttKey); - - const BOOL result = NNSi_GfdFreeLnkVram( - &mgr_.mgr, - &mgr_.pBlockPoolList, - addr, - szByte - ); - - if (result) { - return 0; - } else { - return NNS_GFD_BARPLTT_FREE_ERROR_INVALID_SIZE; - } -} - -void NNS_GfdResetLnkPlttVramState (void) { - mgr_.pBlockPoolList - = NNSi_GfdInitLnkVramBlockPool( - (NNSiGfdLnkVramBlock *)mgr_.pWorkHead, - mgr_.szByteManagementWork / sizeof(NNSiGfdLnkVramBlock) - ); - - { - BOOL result; - NNSi_GfdInitLnkVramMan(&mgr_.mgr); - - result = NNSi_GfdAddNewFreeBlock( - &mgr_.mgr, - &mgr_.pBlockPoolList, - 0, - mgr_.szByte - ); - NNS_GFD_ASSERT(result); - } - - NNSi_GfdMergeAllFreeBlocks(&mgr_.mgr, &mgr_.pBlockPoolList); -} diff --git a/subprojects/NitroSystem/libraries/gfd/src/gfd_LinkedListTexVramMan.c b/subprojects/NitroSystem/libraries/gfd/src/gfd_LinkedListTexVramMan.c deleted file mode 100644 index bd8b474a84..0000000000 --- a/subprojects/NitroSystem/libraries/gfd/src/gfd_LinkedListTexVramMan.c +++ /dev/null @@ -1,267 +0,0 @@ - -#include -#include - -#include "include/gfdi_LinkedListVramMan_Common.h" - -#define GFD_SLOT_SIZE 0x20000 -#define GFD_SLOT0_BASEADDR 0x00000 -#define GFD_SLOT1_BASEADDR 0x20000 -#define GFD_SLOT2_BASEADDR 0x40000 -#define GFD_SLOT3_BASEADDR 0x60000 - -#define NNS_GFD_LNK_FREE_ERROR_INVALID_SIZE 2 - -typedef struct NNS_GfdLnkTexVramManager { - NNSiGfdLnkVramMan mgrNrm; - NNSiGfdLnkVramMan mgr4x4; - NNSiGfdLnkVramBlock * pBlockPoolList; - u32 szByte; - u32 szByteFor4x4; - NNSiGfdLnkVramBlock * pWorkHead; - u32 szByteManagementWork; -} NNS_GfdLnkTexVramManager; - -typedef struct SlotData { - u32 szFree; - u32 szNrm; - u32 sz4x4; -} SlotData; - -static NNS_GfdLnkTexVramManager mgr_; - -static u32 Dbg_GetVramManTotalFreeBlockSize_ (const NNSiGfdLnkVramMan * pMgr) { - u32 total = 0; - const NNSiGfdLnkVramBlock * pBlk = pMgr->pFreeList; - while (pBlk) { - total += pBlk->szByte; - pBlk = pBlk->pBlkNext; - } - return total; -} - -static BOOL Dbg_IsInitializeSizeParamsValid_ (u32 szByte, u32 szByteFor4x4) { - if (szByte > 0 && szByteFor4x4 <= GFD_SLOT_SIZE * 2) { - if (szByteFor4x4 > 0) { - if (szByteFor4x4 <= GFD_SLOT_SIZE) { - return (BOOL)(szByte >= GFD_SLOT1_BASEADDR + szByteFor4x4 / 2); - } else { - return (BOOL)(szByte >= szByteFor4x4 + GFD_SLOT_SIZE); - } - } else { - return (BOOL)(szByte <= GFD_SLOT_SIZE * 4); - } - } else { - return FALSE; - } -} - -static NNS_GFD_INLINE BOOL InitSlotFreeBlock_ (NNSiGfdLnkVramMan * pMgr, NNSiGfdLnkVramBlock * * pPoolList, u32 baseAddr, u32 size) { - NNS_GFD_NULL_ASSERT(pMgr); - NNS_GFD_NULL_ASSERT(pPoolList); - - NNS_GFD_ASSERT(GFD_SLOT_SIZE >= size); - - { - BOOL result = TRUE; - - if (size > 0) { - result &= NNSi_GfdAddNewFreeBlock(pMgr, pPoolList, baseAddr, size); - } - return result; - } -} - -void NNS_GfdDumpLnkTexVramManager () { - OS_Printf("=== NNS_Gfd LnkTexVramManager Dump ====\n"); - OS_Printf(" address: size \n"); - OS_Printf("=======================================\n"); - - OS_Printf("------ Normal Texture Free Blocks -----\n"); - NNSi_GfdDumpLnkVramManFreeListInfo(mgr_.mgrNrm.pFreeList, mgr_.szByte); - - OS_Printf("------ 4x4 Texture Free Blocks -----\n"); - if (mgr_.szByteFor4x4 != 0) { - NNSi_GfdDumpLnkVramManFreeListInfo(mgr_.mgr4x4.pFreeList, mgr_.szByteFor4x4); - } - OS_Printf("=======================================\n"); -} - -void NNS_GfdDumpLnkTexVramManagerEx (NNSGfdLnkDumpCallBack pFuncForNrm, NNSGfdLnkDumpCallBack pFuncFor4x4, void * pUserData) { - NNS_GFD_ASSERT(pFuncForNrm != NULL || pFuncFor4x4 != NULL); - - if (pFuncForNrm != NULL) { - NNSi_GfdDumpLnkVramManFreeListInfoEx(mgr_.mgrNrm.pFreeList, pFuncForNrm, pUserData); - } - - if (mgr_.szByteFor4x4 != 0 && pFuncFor4x4 != NULL) { - NNSi_GfdDumpLnkVramManFreeListInfoEx(mgr_.mgr4x4.pFreeList, pFuncFor4x4, pUserData); - } -} - -u32 NNS_GfdGetLnkTexVramManagerWorkSize (u32 numMemBlk) { - return numMemBlk * sizeof(NNSiGfdLnkVramBlock); -} - -void NNS_GfdInitLnkTexVramManager (u32 szByte, u32 szByteFor4x4, void * pManagementWork, u32 szByteManagementWork, BOOL useAsDefault) { - NNS_GFD_ASSERT(Dbg_IsInitializeSizeParamsValid_(szByte, szByteFor4x4)); - - NNS_GFD_NULL_ASSERT(pManagementWork); - NNS_GFD_ASSERT(szByteManagementWork != 0); - - { - mgr_.szByte = szByte; - mgr_.szByteFor4x4 = szByteFor4x4; - mgr_.pWorkHead = pManagementWork; - mgr_.szByteManagementWork = szByteManagementWork; - - NNS_GfdResetLnkTexVramState(); - - NNS_GFD_ASSERT( - mgr_.szByte - (mgr_.szByteFor4x4 + mgr_.szByteFor4x4 / 2) - == Dbg_GetVramManTotalFreeBlockSize_(&mgr_.mgrNrm) - ); - NNS_GFD_ASSERT( - mgr_.szByteFor4x4 - == Dbg_GetVramManTotalFreeBlockSize_(&mgr_.mgr4x4) - ); - - if (useAsDefault) { - NNS_GfdDefaultFuncAllocTexVram = NNS_GfdAllocLnkTexVram; - NNS_GfdDefaultFuncFreeTexVram = NNS_GfdFreeLnkTexVram; - } - } -} - -NNSGfdTexKey NNS_GfdAllocLnkTexVram (u32 szByte, BOOL is4x4comp, u32 opt) { -#pragma unused(opt) - u32 addr; - BOOL result; - - { - szByte = NNSi_GfdGetTexKeyRoundupSize(szByte); - - if (szByte >= NNS_GFD_TEXSIZE_MAX) { - NNS_GFD_WARNING("Allocation size is too big. : NNS_GfdAllocLnkTexVram()"); - return NNS_GFD_ALLOC_ERROR_TEXKEY; - } - - NNS_GFD_MINMAX_ASSERT(szByte, NNS_GFD_TEXSIZE_MIN, NNS_GFD_TEXSIZE_MAX); - } - - if (is4x4comp) { - result = NNSi_GfdAllocLnkVram(&mgr_.mgr4x4, &mgr_.pBlockPoolList, &addr, szByte); - } else { - result = NNSi_GfdAllocLnkVram(&mgr_.mgrNrm, &mgr_.pBlockPoolList, &addr, szByte); - } - - if (result) { - return NNS_GfdMakeTexKey(addr, szByte, is4x4comp); - } else { - NNS_GFD_WARNING("failure in Vram Allocation. : NNS_GfdAllocLnkTexVram()"); - return NNS_GFD_ALLOC_ERROR_TEXKEY; - } -} - -int NNS_GfdFreeLnkTexVram (NNSGfdTexKey memKey) { - BOOL result; - const u32 addr = NNS_GfdGetTexKeyAddr(memKey); - const u32 szByte = NNS_GfdGetTexKeySize(memKey); - const BOOL b4x4 = NNS_GfdGetTexKey4x4Flag(memKey); - - if (szByte != 0) { - if (b4x4) { - result = NNSi_GfdFreeLnkVram(&mgr_.mgr4x4, &mgr_.pBlockPoolList, addr, szByte); - } else { - result = NNSi_GfdFreeLnkVram(&mgr_.mgrNrm, &mgr_.pBlockPoolList, addr, szByte); - } - - if (result) { - return 0; - } else { - return 1; - } - } else { - return NNS_GFD_LNK_FREE_ERROR_INVALID_SIZE; - } -} - -void NNS_GfdResetLnkTexVramState (void) { - SlotData sd[4] = { - {0x20000, 0, 0}, - {0x20000, 0, 0}, - {0x20000, 0, 0}, - {0x20000, 0, 0} - }; - - const u32 szIndexTbl = mgr_.szByteFor4x4 / 2; - - u32 restNrm = mgr_.szByte - (mgr_.szByteFor4x4 + szIndexTbl); - - u32 rest4x4 = mgr_.szByteFor4x4; - u32 slotNo; - u32 val; - - for ( slotNo = 0; slotNo < 4; slotNo++ ) { - if (slotNo == 0 || slotNo == 2) { - if (sd[slotNo].szFree > 0 && rest4x4 > 0) { - if (sd[slotNo].szFree > rest4x4) { - val = rest4x4; - } else { - val = sd[slotNo].szFree; - } - - sd[slotNo].sz4x4 += val; - sd[slotNo].szFree -= val; - rest4x4 -= val; - } - } - } - - { - sd[1].szFree -= szIndexTbl; - } - - for ( slotNo = 0; slotNo < 4; slotNo++ ) { - if (sd[slotNo].szFree > 0 && restNrm > 0) { - if (sd[slotNo].szFree > restNrm) { - val = restNrm; - } else { - val = sd[slotNo].szFree; - } - - sd[slotNo].szNrm += val; - sd[slotNo].szFree -= val; - restNrm -= val; - } - } - - { - BOOL result = TRUE; - - NNSi_GfdInitLnkVramMan(&mgr_.mgrNrm); - NNSi_GfdInitLnkVramMan(&mgr_.mgr4x4); - - mgr_.pBlockPoolList = NNSi_GfdInitLnkVramBlockPool( - (NNSiGfdLnkVramBlock *)mgr_.pWorkHead, - mgr_.szByteManagementWork / sizeof(NNSiGfdLnkVramBlock) - ); - - { - result &= InitSlotFreeBlock_(&mgr_.mgr4x4, &mgr_.pBlockPoolList, GFD_SLOT0_BASEADDR, sd[0].sz4x4); - result &= InitSlotFreeBlock_(&mgr_.mgrNrm, &mgr_.pBlockPoolList, GFD_SLOT0_BASEADDR + sd[0].sz4x4, sd[0].szNrm); - - result &= InitSlotFreeBlock_(&mgr_.mgr4x4, &mgr_.pBlockPoolList, GFD_SLOT2_BASEADDR, sd[2].sz4x4); - result &= InitSlotFreeBlock_(&mgr_.mgrNrm, &mgr_.pBlockPoolList, GFD_SLOT2_BASEADDR + sd[2].sz4x4, sd[2].szNrm); - - NNS_GFD_ASSERT(sd[3].sz4x4 == 0); - result &= InitSlotFreeBlock_(&mgr_.mgrNrm, &mgr_.pBlockPoolList, GFD_SLOT3_BASEADDR, sd[3].szNrm); - - result &= InitSlotFreeBlock_(&mgr_.mgrNrm, &mgr_.pBlockPoolList, GFD_SLOT1_BASEADDR + szIndexTbl, sd[1].szNrm); - } - NNS_GFD_ASSERT(result); - } - - NNSi_GfdMergeAllFreeBlocks(&mgr_.mgrNrm, &mgr_.pBlockPoolList); - NNSi_GfdMergeAllFreeBlocks(&mgr_.mgr4x4, &mgr_.pBlockPoolList); -} diff --git a/subprojects/NitroSystem/libraries/gfd/src/gfd_PlttVramMan.c b/subprojects/NitroSystem/libraries/gfd/src/gfd_PlttVramMan.c deleted file mode 100644 index 7dcde6f60e..0000000000 --- a/subprojects/NitroSystem/libraries/gfd/src/gfd_PlttVramMan.c +++ /dev/null @@ -1,19 +0,0 @@ - -#include -#include - -static NNSGfdPlttKey AllocPlttVram_(u32 szByte, BOOL b4Pltt, u32 bAllocFromLo); -static int FreePlttVram_(NNSGfdPlttKey key); - -NNSGfdFuncAllocPlttVram NNS_GfdDefaultFuncAllocPlttVram = AllocPlttVram_; -NNSGfdFuncFreePlttVram NNS_GfdDefaultFuncFreePlttVram = FreePlttVram_; - -static NNSGfdPlttKey AllocPlttVram_ (u32, BOOL, u32) { - NNS_GFD_WARNING("no default AllocPlttVram function."); - return NNS_GFD_ALLOC_ERROR_PLTTKEY; -} - -static int FreePlttVram_ (NNSGfdPlttKey) { - NNS_GFD_WARNING("no default FreePlttVram function."); - return -1; -} diff --git a/subprojects/NitroSystem/libraries/gfd/src/gfd_TexVramMan.c b/subprojects/NitroSystem/libraries/gfd/src/gfd_TexVramMan.c deleted file mode 100644 index ef2188989e..0000000000 --- a/subprojects/NitroSystem/libraries/gfd/src/gfd_TexVramMan.c +++ /dev/null @@ -1,19 +0,0 @@ - -#include -#include - -static NNSGfdTexKey AllocTexVram_(u32 szByte, BOOL is4x4comp, u32 opt); -static int FreeTexVram_(NNSGfdTexKey memKey); - -NNSGfdFuncAllocTexVram NNS_GfdDefaultFuncAllocTexVram = AllocTexVram_; -NNSGfdFuncFreeTexVram NNS_GfdDefaultFuncFreeTexVram = FreeTexVram_; - -static NNSGfdTexKey AllocTexVram_ (u32, BOOL, u32) { - NNS_GFD_WARNING("no default AllocTexVram function."); - return NNS_GFD_ALLOC_ERROR_TEXKEY; -} - -static int FreeTexVram_ (NNSGfdTexKey) { - NNS_GFD_WARNING("no default FreeTexVram function."); - return -1; -} diff --git a/subprojects/NitroSystem/libraries/gfd/src/gfd_VramTransferManager.c b/subprojects/NitroSystem/libraries/gfd/src/gfd_VramTransferManager.c deleted file mode 100644 index 3129f7e5b1..0000000000 --- a/subprojects/NitroSystem/libraries/gfd/src/gfd_VramTransferManager.c +++ /dev/null @@ -1,327 +0,0 @@ - -#include - -static NNSGfdVramTransferManager s_VramTransferManager; - -typedef void (* TransferFunc)(const void *, u32, u32); - -static u16 GetNextIndex_ (const NNSGfdVramTransferTaskQueue * pQueue, u16 idx) { - return (u16)((idx + 1) % pQueue->lengthOfArray); -} - -static BOOL IsVramTransferTaskQueueFull_ (const NNSGfdVramTransferTaskQueue * pQueue) { - return (pQueue->numTasks == pQueue->lengthOfArray) ? TRUE: FALSE; -} - -static BOOL IsVramTransferTaskQueueEmpty_ (const NNSGfdVramTransferTaskQueue * pQueue) { - return (pQueue->numTasks == 0) ? TRUE: FALSE; -} - -static void DoTransfer3dTex (const void * pSrc, u32 offset, u32 szByte) { - GX_BeginLoadTex(); - GX_LoadTex(pSrc, offset, szByte); - GX_EndLoadTex(); -} - -static void DoTransfer3dTexPltt (const void * pSrc, u32 offset, u32 szByte) { - GX_BeginLoadTexPltt(); - GX_LoadTexPltt(pSrc, offset, szByte); - GX_EndLoadTexPltt(); -} - -static void DoTransfer3dClearImageColor (const void * pSrc, u32, u32 szByte) { - GX_BeginLoadClearImage(); - GX_LoadClearImageColor(pSrc, szByte); - GX_EndLoadClearImage(); -} - -static void DoTransfer3dClearImageDepth (const void * pSrc, u32, u32 szByte) { - GX_BeginLoadClearImage(); - GX_LoadClearImageDepth(pSrc, szByte); - GX_EndLoadClearImage(); -} - -static void DoTransfer2dBG0CharMain (const void * pSrc, u32 offset, u32 szByte) { - GX_LoadBG0Char(pSrc, offset, szByte); -} - -static void DoTransfer2dBG1CharMain (const void * pSrc, u32 offset, u32 szByte) { - GX_LoadBG1Char(pSrc, offset, szByte); -} - -static void DoTransfer2dBG2CharMain (const void * pSrc, u32 offset, u32 szByte) { - GX_LoadBG2Char(pSrc, offset, szByte); -} - -static void DoTransfer2dBG3CharMain (const void * pSrc, u32 offset, u32 szByte) { - GX_LoadBG3Char(pSrc, offset, szByte); -} - -static void DoTransfer2dBG0ScrMain (const void * pSrc, u32 offset, u32 szByte) { - GX_LoadBG0Scr(pSrc, offset, szByte); -} - -static void DoTransfer2dBG1ScrMain (const void * pSrc, u32 offset, u32 szByte) { - GX_LoadBG1Scr(pSrc, offset, szByte); -} - -static void DoTransfer2dBG2ScrMain (const void * pSrc, u32 offset, u32 szByte) { - GX_LoadBG2Scr(pSrc, offset, szByte); -} - -static void DoTransfer2dBG3ScrMain (const void * pSrc, u32 offset, u32 szByte) { - GX_LoadBG3Scr(pSrc, offset, szByte); -} - -static void DoTransfer2dBG2BmpMain (const void * pSrc, u32 offset, u32 szByte) { - GX_LoadBG2Bmp(pSrc, offset, szByte); -} - -static void DoTransfer2dBG3BmpMain (const void * pSrc, u32 offset, u32 szByte) { - GX_LoadBG3Bmp(pSrc, offset, szByte); -} - -static void DoTransfer2dObjPlttMain (const void * pSrc, u32 offset, u32 szByte) { - GX_LoadOBJPltt(pSrc, offset, szByte); -} - -static void DoTransfer2dBGPlttMain (const void * pSrc, u32 offset, u32 szByte) { - GX_LoadBGPltt(pSrc, offset, szByte); -} - -static void DoTransfer2dObjExtPlttMain (const void * pSrc, u32 offset, u32 szByte) { - GX_BeginLoadOBJExtPltt(); - GX_LoadOBJExtPltt(pSrc, offset, szByte); - GX_EndLoadOBJExtPltt(); -} - -static void DoTransfer2dBGExtPlttMain (const void * pSrc, u32 offset, u32 szByte) { - GX_BeginLoadBGExtPltt(); - GX_LoadBGExtPltt(pSrc, offset, szByte); - GX_EndLoadBGExtPltt(); -} - -static void DoTransfer2dObjOamMain (const void * pSrc, u32 offset, u32 szByte) { - GX_LoadOAM(pSrc, offset, szByte); -} - -static void DoTransfer2dObjCharMain (const void * pSrc, u32 offset, u32 szByte) { - GX_LoadOBJ(pSrc, offset, szByte); -} - -static void DoTransfer2dBG0CharSub (const void * pSrc, u32 offset, u32 szByte) { - GXS_LoadBG0Char(pSrc, offset, szByte); -} - -static void DoTransfer2dBG1CharSub (const void * pSrc, u32 offset, u32 szByte) { - GXS_LoadBG1Char(pSrc, offset, szByte); -} - -static void DoTransfer2dBG2CharSub (const void * pSrc, u32 offset, u32 szByte) { - GXS_LoadBG2Char(pSrc, offset, szByte); -} - -static void DoTransfer2dBG3CharSub (const void * pSrc, u32 offset, u32 szByte) { - GXS_LoadBG3Char(pSrc, offset, szByte); -} - -static void DoTransfer2dBG0ScrSub (const void * pSrc, u32 offset, u32 szByte) { - GXS_LoadBG0Scr(pSrc, offset, szByte); -} - -static void DoTransfer2dBG1ScrSub (const void * pSrc, u32 offset, u32 szByte) { - GXS_LoadBG1Scr(pSrc, offset, szByte); -} - -static void DoTransfer2dBG2ScrSub (const void * pSrc, u32 offset, u32 szByte) { - GXS_LoadBG2Scr(pSrc, offset, szByte); -} - -static void DoTransfer2dBG3ScrSub (const void * pSrc, u32 offset, u32 szByte) { - GXS_LoadBG3Scr(pSrc, offset, szByte); -} - -static void DoTransfer2dBG2BmpSub (const void * pSrc, u32 offset, u32 szByte) { - GXS_LoadBG2Bmp(pSrc, offset, szByte); -} - -static void DoTransfer2dBG3BmpSub (const void * pSrc, u32 offset, u32 szByte) { - GXS_LoadBG3Bmp(pSrc, offset, szByte); -} - -static void DoTransfer2dObjPlttSub (const void * pSrc, u32 offset, u32 szByte) { - GXS_LoadOBJPltt(pSrc, offset, szByte); -} - -static void DoTransfer2dBGPlttSub (const void * pSrc, u32 offset, u32 szByte) { - GXS_LoadBGPltt(pSrc, offset, szByte); -} - -static void DoTransfer2dObjExtPlttSub (const void * pSrc, u32 offset, u32 szByte) { - GXS_BeginLoadOBJExtPltt(); - GXS_LoadOBJExtPltt(pSrc, offset, szByte); - GXS_EndLoadOBJExtPltt(); -} - -static void DoTransfer2dBGExtPlttSub (const void * pSrc, u32 offset, u32 szByte) { - GXS_BeginLoadBGExtPltt(); - GXS_LoadBGExtPltt(pSrc, offset, szByte); - GXS_EndLoadBGExtPltt(); -} - -static void DoTransfer2dObjOamSub (const void * pSrc, u32 offset, u32 szByte) { - GXS_LoadOAM(pSrc, offset, szByte); -} - -static void DoTransfer2dObjCharSub (const void * pSrc, u32 offset, u32 szByte) { - GXS_LoadOBJ(pSrc, offset, szByte); -} - -static void DoTransfer_ (const NNSGfdVramTransferTask * pTask) { - const static TransferFunc transFunc[NNS_GFD_DST_MAX] = { - DoTransfer3dTex, - DoTransfer3dTexPltt, - DoTransfer3dClearImageColor, - DoTransfer3dClearImageDepth, - DoTransfer2dBG0CharMain, - DoTransfer2dBG1CharMain, - DoTransfer2dBG2CharMain, - DoTransfer2dBG3CharMain, - DoTransfer2dBG0ScrMain, - DoTransfer2dBG1ScrMain, - DoTransfer2dBG2ScrMain, - DoTransfer2dBG3ScrMain, - DoTransfer2dBG2BmpMain, - DoTransfer2dBG3BmpMain, - DoTransfer2dObjPlttMain, - DoTransfer2dBGPlttMain, - DoTransfer2dObjExtPlttMain, - DoTransfer2dBGExtPlttMain, - DoTransfer2dObjOamMain, - DoTransfer2dObjCharMain, - DoTransfer2dBG0CharSub, - DoTransfer2dBG1CharSub, - DoTransfer2dBG2CharSub, - DoTransfer2dBG3CharSub, - DoTransfer2dBG0ScrSub, - DoTransfer2dBG1ScrSub, - DoTransfer2dBG2ScrSub, - DoTransfer2dBG3ScrSub, - DoTransfer2dBG2BmpSub, - DoTransfer2dBG3BmpSub, - DoTransfer2dObjPlttSub, - DoTransfer2dBGPlttSub, - DoTransfer2dObjExtPlttSub, - DoTransfer2dBGExtPlttSub, - DoTransfer2dObjOamSub, - DoTransfer2dObjCharSub, - }; - TransferFunc doTransfer; - NNS_GFD_NULL_ASSERT(pTask); - SDK_MINMAX_ASSERT(pTask->type, 0, NNS_GFD_DST_MAX - 1); - - doTransfer = transFunc[pTask->type]; - - DC_FlushRange(pTask->pSrc, pTask->szByte); - doTransfer(pTask->pSrc, pTask->dstAddr, pTask->szByte); -} - -static void ResetTaskQueue_ (NNSGfdVramTransferTaskQueue * pQueue) { - NNS_GFD_NULL_ASSERT(pQueue); - - pQueue->idxFront = pQueue->idxRear = 0; - pQueue->numTasks = 0; - pQueue->totalSize = 0; -} - -BOOL NNSi_GfdPushVramTransferTaskQueue (NNSGfdVramTransferTaskQueue * pQueue) { - NNS_GFD_NULL_ASSERT(pQueue); - - if (!IsVramTransferTaskQueueFull_(pQueue)) { - pQueue->idxRear = GetNextIndex_(pQueue, pQueue->idxRear); - pQueue->numTasks++; - return TRUE; - } else { - return FALSE; - } -} - -NNSGfdVramTransferTask * NNSi_GfdGetFrontVramTransferTaskQueue (NNSGfdVramTransferTaskQueue * pQueue) { - NNS_GFD_NULL_ASSERT(pQueue); - return &pQueue->pTaskArray[pQueue->idxFront]; -} - -NNSGfdVramTransferTask * NNSi_GfdGetEndVramTransferTaskQueue (NNSGfdVramTransferTaskQueue * pQueue) { - NNS_GFD_NULL_ASSERT(pQueue); - return &pQueue->pTaskArray[pQueue->idxRear]; -} - -BOOL NNSi_GfdPopVramTransferTaskQueue (NNSGfdVramTransferTaskQueue * pQueue) { - NNS_GFD_NULL_ASSERT(pQueue); - - if (!IsVramTransferTaskQueueEmpty_(pQueue)) { - pQueue->idxFront = GetNextIndex_(pQueue, pQueue->idxFront); - pQueue->numTasks--; - return TRUE; - } else { - return FALSE; - } -} - -void NNS_GfdInitVramTransferManager (NNSGfdVramTransferTask * pTaskArray, u32 lengthOfArray) { - NNS_GFD_NULL_ASSERT(pTaskArray); - NNS_GFD_NON_ZERO_ASSERT(lengthOfArray); - - { - NNSGfdVramTransferManager * pMan = &s_VramTransferManager; - - pMan->taskQueue.pTaskArray = pTaskArray; - pMan->taskQueue.lengthOfArray = lengthOfArray; - - ResetTaskQueue_(&pMan->taskQueue); - } -} - -void NNS_GfdClearVramTransferManagerTask ( ) { - ResetTaskQueue_(&s_VramTransferManager.taskQueue); -} - -void NNS_GfdDoVramTransfer ( ) { - NNSGfdVramTransferManager * pMan = &s_VramTransferManager; - NNSGfdVramTransferTask * pTask - = NNSi_GfdGetFrontVramTransferTaskQueue(&pMan->taskQueue); - - while (NNSi_GfdPopVramTransferTaskQueue(&pMan->taskQueue)) { - DoTransfer_(pTask); - - pMan->taskQueue.totalSize -= pTask->szByte; - - pTask = NNSi_GfdGetFrontVramTransferTaskQueue(&pMan->taskQueue); - } -} - -BOOL NNS_GfdRegisterNewVramTransferTask (NNS_GFD_DST_TYPE type, u32 dstAddr, void * pSrc, u32 szByte) { - NNSGfdVramTransferManager * pMan = &s_VramTransferManager; - - if (!IsVramTransferTaskQueueFull_(&pMan->taskQueue)) { - NNSGfdVramTransferTask * pTask = - NNSi_GfdGetEndVramTransferTaskQueue(&pMan->taskQueue); - - pTask->type = type; - pTask->pSrc = pSrc; - pTask->dstAddr = dstAddr; - pTask->szByte = szByte; - - (void)NNSi_GfdPushVramTransferTaskQueue(&pMan->taskQueue); - - pMan->taskQueue.totalSize += pTask->szByte; - - return TRUE; - } - - return FALSE; -} - -u32 NNS_GfdGetVramTransferTaskTotalSize () { - return s_VramTransferManager.taskQueue.totalSize; -} diff --git a/subprojects/NitroSystem/libraries/gfd/src/gfdi_LinkedListVramMan_Common.c b/subprojects/NitroSystem/libraries/gfd/src/gfdi_LinkedListVramMan_Common.c deleted file mode 100644 index 77aecfe9d5..0000000000 --- a/subprojects/NitroSystem/libraries/gfd/src/gfdi_LinkedListVramMan_Common.c +++ /dev/null @@ -1,322 +0,0 @@ - -#include - -#include "include/gfdi_LinkedListVramMan_Common.h" - -static NNS_GFD_INLINE void GetRegionOfMemBlock_ (NNSiGfdLnkMemRegion * pRegion, const NNSiGfdLnkVramBlock * pBlk) { - NNS_GFD_NULL_ASSERT(pBlk); - NNS_GFD_NON_ZERO_ASSERT(pBlk->szByte); - - pRegion->start = pBlk->addr; - pRegion->end = pBlk->addr + pBlk->szByte; - - NNS_GFD_ASSERT(pRegion->end > pRegion->start); -} - -static NNS_GFD_INLINE void InitBlockFromRegion_ (NNSiGfdLnkVramBlock * pBlk, const NNSiGfdLnkMemRegion * pRegion) { - NNS_GFD_NULL_ASSERT(pBlk); - NNS_GFD_ASSERT(pRegion->end > pRegion->start); - - pBlk->addr = pRegion->start; - pBlk->szByte = (u32)(pRegion->end - pRegion->start); - pBlk->pBlkPrev = NULL; - pBlk->pBlkNext = NULL; -} - -static NNS_GFD_INLINE void InitBlockFromPrams_ (NNSiGfdLnkVramBlock * pBlk, u32 addr, u32 szByte) { - NNS_GFD_NULL_ASSERT(pBlk); - NNS_GFD_NON_ZERO_ASSERT(szByte); - - pBlk->addr = addr; - pBlk->szByte = szByte; - pBlk->pBlkPrev = NULL; - pBlk->pBlkNext = NULL; -} - -static NNS_GFD_INLINE void InsertBlock_ (NNSiGfdLnkVramBlock * * pListHead, NNSiGfdLnkVramBlock * prev) { - NNS_GFD_NULL_ASSERT(prev); - - if ((*pListHead) != NULL) { - (*pListHead)->pBlkPrev = prev; - } - - prev->pBlkNext = *pListHead; - prev->pBlkPrev = NULL; - *pListHead = prev; -} - -static NNS_GFD_INLINE void RemoveBlock_ (NNSiGfdLnkVramBlock * * pListHead, NNSiGfdLnkVramBlock * pBlk) { - NNS_GFD_NULL_ASSERT(pBlk); - { - NNSiGfdLnkVramBlock * const pPrev = pBlk->pBlkPrev; - NNSiGfdLnkVramBlock * const pNext = pBlk->pBlkNext; - - if (pPrev) { - pPrev->pBlkNext = pNext; - } else { - *pListHead = pNext; - } - - if (pNext) { - pNext->pBlkPrev = pPrev; - } - } -} - -static NNS_GFD_INLINE NNSiGfdLnkVramBlock * GetNewBlock_ (NNSiGfdLnkVramBlock * * ppBlockPoolList) { - NNS_GFD_NULL_ASSERT(ppBlockPoolList); - { - NNSiGfdLnkVramBlock * pNew = *ppBlockPoolList; - if (pNew) { - *ppBlockPoolList = pNew->pBlkNext; - } - - return pNew; - } -} - -static NNS_GFD_INLINE u32 GetBlockEndAddr_ (NNSiGfdLnkVramBlock * pBlk) { - NNS_GFD_NULL_ASSERT(pBlk); - - return (u32)(pBlk->addr + pBlk->szByte); -} - -static void DefaultDumpCallBack_ (u32 addr, u32 szByte, void * pUserData) { -#ifdef SDK_FINALROM - #pragma unused(addr) -#endif - - if (szByte != 0) { - u32 * pszFreeTotal = (u32 *)pUserData; - - OS_Printf("0x%08x: 0x%08x \n", addr, szByte); - (*pszFreeTotal) += szByte; - } -} - -static BOOL TryToMergeBlockRegion_ (NNSiGfdLnkVramMan * pMan, NNSiGfdLnkVramBlock * * ppBlockPoolList, NNSiGfdLnkMemRegion * pRegion) { - NNS_GFD_NULL_ASSERT(pMan); - NNS_GFD_NULL_ASSERT(ppBlockPoolList); - NNS_GFD_NULL_ASSERT(pRegion); - - { - NNSiGfdLnkVramBlock * pCursor = pMan->pFreeList; - NNSiGfdLnkVramBlock * pNext = NULL; - BOOL bMerged = FALSE; - - while (pCursor) { - pNext = pCursor->pBlkNext; - - if (pCursor->addr == pRegion->end) { - pRegion->end = GetBlockEndAddr_(pCursor); - - RemoveBlock_(&pMan->pFreeList, pCursor); - InsertBlock_(ppBlockPoolList, pCursor); - bMerged |= TRUE; - } - - if (GetBlockEndAddr_(pCursor) == pRegion->start) { - pRegion->start = pCursor->addr; - - RemoveBlock_(&pMan->pFreeList, pCursor); - InsertBlock_(ppBlockPoolList, pCursor); - bMerged |= TRUE; - } - - pCursor = pNext; - } - - return bMerged; - } -} - -void NNSi_GfdDumpLnkVramManFreeListInfo (const NNSiGfdLnkVramBlock * pFreeListHead, u32 szReserved) { - u32 szFreeTotal = 0; - const NNSiGfdLnkVramBlock * pBlk = pFreeListHead; - - NNSi_GfdDumpLnkVramManFreeListInfoEx(pBlk, DefaultDumpCallBack_, &szFreeTotal); - - if (szFreeTotal == 0) { - OS_Printf("0x--------: 0x-------- \n"); - } - - { - const u32 szUsedTotal = (szReserved - szFreeTotal); - OS_Printf( - " %08d / %08d bytes (%6.2f%%) used \n", - szUsedTotal, szReserved, 100.f * szUsedTotal / szReserved - ); - } -} - -void NNSi_GfdDumpLnkVramManFreeListInfoEx (const NNSiGfdLnkVramBlock * pFreeListHead, NNSGfdLnkDumpCallBack pFunc, void * pUserData) { - const NNSiGfdLnkVramBlock * pBlk = pFreeListHead; - - NNS_GFD_NULL_ASSERT(pFunc); - - while (pBlk) { - (*pFunc)(pBlk->addr, pBlk->szByte, pUserData); - pBlk = pBlk->pBlkNext; - } -} - -void NNSi_GfdInitLnkVramMan (NNSiGfdLnkVramMan * pMgr) { - NNS_GFD_NULL_ASSERT(pMgr); - pMgr->pFreeList = NULL; -} - -NNSiGfdLnkVramBlock * NNSi_GfdInitLnkVramBlockPool (NNSiGfdLnkVramBlock * pArrayHead, u32 lengthOfArray) { - NNS_GFD_NULL_ASSERT(pArrayHead); - NNS_GFD_NON_ZERO_ASSERT(lengthOfArray); - - { - int i; - for ( i = 0; i < lengthOfArray - 1; i++ ) { - pArrayHead[i].pBlkNext = &pArrayHead[i + 1]; - pArrayHead[i + 1].pBlkPrev = &pArrayHead[i]; - } - - pArrayHead[0].pBlkPrev = NULL; - pArrayHead[lengthOfArray - 1].pBlkNext = NULL; - } - - return &pArrayHead[0]; -} - -BOOL NNSi_GfdAddNewFreeBlock (NNSiGfdLnkVramMan * pMan, NNSiGfdLnkVramBlock * * ppBlockPoolList, u32 baseAddr, u32 szByte) { - NNS_GFD_NULL_ASSERT(pMan); - NNS_GFD_NULL_ASSERT(ppBlockPoolList); - NNS_GFD_NON_ZERO_ASSERT(szByte); - - { - NNSiGfdLnkVramBlock * pNew = GetNewBlock_(ppBlockPoolList); - if (pNew) { - InitBlockFromPrams_(pNew, baseAddr, szByte); - InsertBlock_(&pMan->pFreeList, pNew); - - return TRUE; - } else { - return FALSE; - } - } -} - -BOOL NNSi_GfdAllocLnkVram (NNSiGfdLnkVramMan * pMan, NNSiGfdLnkVramBlock * * ppBlockPoolList, u32 * pRetAddr, u32 szByte) { - return NNSi_GfdAllocLnkVramAligned(pMan, ppBlockPoolList, pRetAddr, szByte, 0); -} - -BOOL NNSi_GfdAllocLnkVramAligned (NNSiGfdLnkVramMan * pMan, NNSiGfdLnkVramBlock * * ppBlockPoolList, u32 * pRetAddr, u32 szByte, u32 alignment) { - NNS_GFD_NULL_ASSERT(pMan); - NNS_GFD_NULL_ASSERT(pRetAddr); - - NNS_GFD_NON_ZERO_ASSERT(szByte); - { - u32 alignedAddr; - u32 szNeeded; - u32 difference; - - NNSiGfdLnkVramBlock * pBlkFound = NULL; - NNSiGfdLnkVramBlock * pBlk = pMan->pFreeList; - - while (pBlk) { - if (alignment > 1) { - alignedAddr = (u32)((pBlk->addr + (alignment - 1)) & ~(alignment - 1)); - - difference = (alignedAddr - pBlk->addr); - szNeeded = szByte + difference; - } else { - alignedAddr = pBlk->addr; - difference = 0; - szNeeded = szByte; - } - - if (pBlk->szByte >= szNeeded) { - pBlkFound = pBlk; - break; - } - pBlk = pBlk->pBlkNext; - } - - if (pBlkFound) { - if (difference > 0) { - NNSiGfdLnkVramBlock * pNewFreeBlk = GetNewBlock_(ppBlockPoolList); - if (pNewFreeBlk) { - InitBlockFromPrams_(pNewFreeBlk, pBlkFound->addr, difference); - InsertBlock_(&pMan->pFreeList, pNewFreeBlk); - } else { - goto NG_CASE; - } - } - - { - pBlkFound->szByte -= szNeeded; - - pBlkFound->addr += szNeeded; - - if (pBlkFound->szByte == 0) { - RemoveBlock_(&pMan->pFreeList, pBlkFound); - InsertBlock_(ppBlockPoolList, pBlkFound); - } - } - - *pRetAddr = alignedAddr; - return TRUE; - } - - NG_CASE: - - *pRetAddr = 0; - return FALSE; - } -} - -void NNSi_GfdMergeAllFreeBlocks (NNSiGfdLnkVramMan * pMan, NNSiGfdLnkVramBlock * * ppBlockPoolList) { - NNSiGfdLnkMemRegion region; - - NNSiGfdLnkVramBlock * pCursor = pMan->pFreeList; - while (pCursor) { - region.start = pCursor->addr; - region.end = pCursor->addr + pCursor->szByte; - - if (TryToMergeBlockRegion_(pMan, ppBlockPoolList, ®ion)) { - pCursor->addr = region.start; - pCursor->szByte = region.end - region.start; - - pCursor = pMan->pFreeList; - } else { - pCursor = pCursor->pBlkNext; - } - } -} - -BOOL NNSi_GfdFreeLnkVram (NNSiGfdLnkVramMan * pMan, NNSiGfdLnkVramBlock * * ppBlockPoolList, u32 addr, u32 szByte) { - NNS_GFD_NULL_ASSERT(pMan); - NNS_GFD_NON_ZERO_ASSERT(szByte); - - { - { - NNSiGfdLnkMemRegion region; - - region.start = addr; - region.end = addr + szByte; - - NNS_GFD_NULL_ASSERT(pMan); - NNS_GFD_NULL_ASSERT(ppBlockPoolList); - { - (void)TryToMergeBlockRegion_(pMan, ppBlockPoolList, ®ion); - - { - NNSiGfdLnkVramBlock * pNewFreeBlk = GetNewBlock_(ppBlockPoolList); - if (pNewFreeBlk == NULL) { - return FALSE; - } else { - InitBlockFromRegion_(pNewFreeBlk, ®ion); - InsertBlock_(&pMan->pFreeList, pNewFreeBlk); - } - } - - return TRUE; - } - } - } -} diff --git a/subprojects/NitroSystem/libraries/gfd/src/include/gfdi_LinkedListVramMan_Common.h b/subprojects/NitroSystem/libraries/gfd/src/include/gfdi_LinkedListVramMan_Common.h deleted file mode 100644 index e4cdee805c..0000000000 --- a/subprojects/NitroSystem/libraries/gfd/src/include/gfdi_LinkedListVramMan_Common.h +++ /dev/null @@ -1,87 +0,0 @@ -#ifndef NNS_GFDI_LINKEDLISTVRAMMAN_COMMON_H_ -#define NNS_GFDI_LINKEDLISTVRAMMAN_COMMON_H_ - -#include - -typedef struct NNSiGfdLnkVramBlock NNSiGfdLnkVramBlock; - -struct NNSiGfdLnkVramBlock { - u32 addr; - u32 szByte; - - NNSiGfdLnkVramBlock * pBlkPrev; - NNSiGfdLnkVramBlock * pBlkNext; -}; - -typedef struct NNSiGfdLnkMemRegion { - u32 start; - u32 end; -} NNSiGfdLnkMemRegion; - -typedef struct NNSiGfdLnkVramMan { - NNSiGfdLnkVramBlock * pFreeList; -} NNSiGfdLnkVramMan; - -void NNSi_GfdDumpLnkVramManFreeListInfo -( - const NNSiGfdLnkVramBlock * pFreeListHead, - u32 szReserved -); - -void NNSi_GfdDumpLnkVramManFreeListInfoEx( - const NNSiGfdLnkVramBlock * pFreeListHead, - NNSGfdLnkDumpCallBack pFunc, - void * pUserData); - -void -NNSi_GfdInitLnkVramMan(NNSiGfdLnkVramMan * pMgr); - -NNSiGfdLnkVramBlock * -NNSi_GfdInitLnkVramBlockPool -( - NNSiGfdLnkVramBlock * pArrayHead, - u32 lengthOfArray -); - -BOOL -NNSi_GfdAddNewFreeBlock -( - NNSiGfdLnkVramMan * pMan, - NNSiGfdLnkVramBlock ** ppBlockPoolList, - u32 baseAddr, - u32 szByte -); - -BOOL -NNSi_GfdAllocLnkVram -( - NNSiGfdLnkVramMan * pMan, - NNSiGfdLnkVramBlock ** ppBlockPoolList, - u32 * pRetAddr, - u32 szByte -); - -BOOL -NNSi_GfdAllocLnkVramAligned -( - NNSiGfdLnkVramMan * pMan, - NNSiGfdLnkVramBlock ** ppBlockPoolList, - u32 * pRetAddr, - u32 szByte, - u32 alignment -); - -void NNSi_GfdMergeAllFreeBlocks( - NNSiGfdLnkVramMan * pMan, - NNSiGfdLnkVramBlock ** ppBlockPoolList -); - -BOOL NNSi_GfdFreeLnkVram -( - NNSiGfdLnkVramMan * pMan, - NNSiGfdLnkVramBlock ** ppBlockPoolList, - u32 addr, - u32 szByte -); - -#endif diff --git a/subprojects/NitroSystem/libraries/gfd/src/meson.build b/subprojects/NitroSystem/libraries/gfd/src/meson.build deleted file mode 100644 index 8b13789179..0000000000 --- a/subprojects/NitroSystem/libraries/gfd/src/meson.build +++ /dev/null @@ -1 +0,0 @@ - diff --git a/subprojects/NitroSystem/libraries/meson.build b/subprojects/NitroSystem/libraries/meson.build deleted file mode 100644 index 358eca8844..0000000000 --- a/subprojects/NitroSystem/libraries/meson.build +++ /dev/null @@ -1,5 +0,0 @@ -subdir('fnd') -subdir('g2d') -subdir('g3d') -subdir('gfd') -subdir('snd') diff --git a/subprojects/NitroSystem/libraries/snd/meson.build b/subprojects/NitroSystem/libraries/snd/meson.build deleted file mode 100644 index ab9f130d19..0000000000 --- a/subprojects/NitroSystem/libraries/snd/meson.build +++ /dev/null @@ -1,26 +0,0 @@ -libnnssnd_srcs = files( - 'src/main_nnssnd.c', - 'src/resource_mgr.c', - 'src/waveout.c', - 'src/player.c', - 'src/stream_nnssnd.c', - 'src/capture.c', - 'src/sndarc.c', - 'src/heap_nnssnd.c', - 'src/sndarc_loader.c', - 'src/sndarc_player.c', - 'src/sndarc_stream.c', - 'src/seqdata.c', - 'src/fader.c' -) - -libnnssnd = static_library('nnssnd', - sources: [libnnssnd_srcs], - c_args: [c_args, sdk_args], - include_directories: [public_includes], - c_pch: nitro_pch, - dependencies: nitrosdk_dep, - pic: false -) - -nitrosystem_libs += libnnssnd diff --git a/subprojects/NitroSystem/libraries/snd/src/capture.c b/subprojects/NitroSystem/libraries/snd/src/capture.c deleted file mode 100644 index 575f2f0de3..0000000000 --- a/subprojects/NitroSystem/libraries/snd/src/capture.c +++ /dev/null @@ -1,652 +0,0 @@ -#include -#include -#include -#include -#include -#include - -#define CAPTURE_0 (1 << 0) -#define CAPTURE_1 (1 << 1) - -#define THREAD_STACK_SIZE 1024 -#define THREAD_MESSAGE_BUF_SIZE 8 - -typedef struct CaptureParam { - BOOL activeFlag; - NNSSndCaptureType type; - NNSSndCaptureFormat format; - void * bufferL; - void * bufferR; - u32 bufLen; - u32 blockSize; - int curBuffer; - u32 chBitMask; - u32 playChBitMask; - u32 capBitMask; - int alarmNo; - int interval; - NNSSndCaptureCallback callback; - void * callbackArg; - NNSSndFader fader; - BOOL fadeOutFlag; - int volume; -} CaptureParam; - -typedef struct EffectInfo { - CaptureParam * cap; - u32 blockSize; - u32 offset; - void * bufL_p; - void * bufR_p; -} EffectInfo; - -static CaptureParam sCapParam; - -static OSThread sThread; -static u64 sThreadStack[THREAD_STACK_SIZE / sizeof(u64)]; -static OSMessageQueue sMesgQ; -static OSMessage sMesgBuf[THREAD_MESSAGE_BUF_SIZE]; - -static volatile BOOL sIsThreadCreated = FALSE; -static EffectInfo sEffectInfoBuffer[THREAD_MESSAGE_BUF_SIZE]; -static int sCurEffectInfo; - -static void AlarmCallback(void * arg); -static void CaptureThread(void * arg); - -BOOL NNS_SndCaptureStartReverb (void * buffer_p, u32 bufSize, NNSSndCaptureFormat format, int sampleRate, int volume) { - void * bufL_p; - void * bufR_p; - - NNS_NULL_ASSERT(buffer_p); - NNS_ASSERTMSG(((u32)buffer_p & 31) == 0, "buffer address must be aligned to 32 bytes boundary."); - NNS_ASSERTMSG(((u32)bufSize & 63) == 0, "buffer size must be aligned to 64 bytes boundary."); - NNS_MINMAX_ASSERT(bufSize, 0, 0x7ffc0); - NNS_MINMAX_ASSERT(volume, 0, 63); - - NNS_SndCaptureStopReverb(0); - - if (sCapParam.activeFlag) { - return FALSE; - } - - bufL_p = buffer_p; - bufR_p = (u8 *)buffer_p + bufSize / 2; - - MI_CpuClear32(buffer_p, bufSize); - DC_FlushRange(buffer_p, bufSize); - - return NNSi_SndCaptureStart( - NNS_SND_CAPTURE_TYPE_REVERB, - bufL_p, - bufR_p, - bufSize / 2, - format, - SND_CAPTURE_IN_MIXER, - SND_CAPTURE_OUT_NORMAL, - TRUE, - sampleRate, - volume, - 0, - 127, - 0, - NULL, - 0 - ); -} - -void NNS_SndCaptureSetReverbVolume (int volume, int frames) { - CaptureParam * cap = &sCapParam; - - NNS_MINMAX_ASSERT(volume, 0, 63); - - if (!cap->activeFlag) { - return; - } - if (cap->type != NNS_SND_CAPTURE_TYPE_REVERB) { - return; - } - - NNSi_SndFaderSet(&cap->fader, volume << 8, frames); -} - -void NNS_SndCaptureStopReverb (int frames) { - CaptureParam * cap = &sCapParam; - - if (!cap->activeFlag) { - return; - } - if (cap->type != NNS_SND_CAPTURE_TYPE_REVERB) { - return; - } - - if (frames == 0) { - NNSi_SndCaptureStop(); - return; - } - - NNSi_SndFaderSet(&cap->fader, 0, frames); - - cap->fadeOutFlag = TRUE; -} - -BOOL NNS_SndCaptureStartEffect (void * buffer_p, u32 bufSize, NNSSndCaptureFormat format, int sampleRate, int interval, NNSSndCaptureEffectCallback callback, void * arg) { - void * bufL_p; - void * bufR_p; - - NNS_SndCaptureStopEffect(); - - if (sCapParam.activeFlag) { - return FALSE; - } - - bufL_p = buffer_p; - bufR_p = (u8 *)buffer_p + bufSize / 2; - - MI_CpuClear32(buffer_p, bufSize); - DC_FlushRange(buffer_p, bufSize); - - return NNSi_SndCaptureStart( - NNS_SND_CAPTURE_TYPE_EFFECT, - bufL_p, - bufR_p, - bufSize / 2, - format, - SND_CAPTURE_IN_MIXER, - SND_CAPTURE_OUT_NORMAL, - TRUE, - sampleRate, - 127, - 0, - 127, - interval, - callback, - arg - ); -} - -void NNS_SndCaptureStopEffect (void) { - if (!sCapParam.activeFlag) { - return; - } - if (sCapParam.type != NNS_SND_CAPTURE_TYPE_EFFECT) { - return; - } - - NNSi_SndCaptureStop(); -} - -BOOL NNS_SndCaptureStartSampling (void * buffer_p, u32 bufSize, NNSSndCaptureFormat format, int sampleRate, int interval, NNSSndCaptureCallback callback, void * arg) { - void * bufL_p; - void * bufR_p; - - NNS_SndCaptureStopSampling(); - - if (sCapParam.activeFlag) { - return FALSE; - } - - bufL_p = buffer_p; - bufR_p = (u8 *)buffer_p + bufSize / 2; - - MI_CpuClear32(buffer_p, bufSize); - DC_FlushRange(buffer_p, bufSize); - - return NNSi_SndCaptureStart( - NNS_SND_CAPTURE_TYPE_SAMPLING, - bufL_p, - bufR_p, - bufSize / 2, - format, - SND_CAPTURE_IN_MIXER, - SND_CAPTURE_OUT_NORMAL, - TRUE, - sampleRate, - 127, - 0, - 127, - interval, - callback, - arg - ); -} - -void NNS_SndCaptureStopSampling (void) { - if (!sCapParam.activeFlag) { - return; - } - if (sCapParam.type != NNS_SND_CAPTURE_TYPE_SAMPLING) { - return; - } - - NNSi_SndCaptureStop(); -} - -void NNS_SndCaptureCreateThread (u32 threadPrio) { - NNS_ASSERT(OS_IsThreadAvailable()); - - if (sIsThreadCreated) { - return; - } - - sCurEffectInfo = 0; - - OS_InitMessageQueue(&sMesgQ, sMesgBuf, THREAD_MESSAGE_BUF_SIZE); - - OS_CreateThread( - &sThread, - CaptureThread, - NULL, - sThreadStack + THREAD_STACK_SIZE / sizeof(u64), - THREAD_STACK_SIZE, - threadPrio - ); - - sIsThreadCreated = TRUE; - - OS_WakeupThreadDirect(&sThread); -} - -void NNS_SndCaptureDestroyThread () { - BOOL result; - - if (!sIsThreadCreated) { - return; - } - - sIsThreadCreated = FALSE; - - result = OS_SendMessage(&sMesgQ, (OSMessage)NULL, OS_MESSAGE_BLOCK); - NNS_ASSERT(result); - OS_JoinThread(&sThread); -} - -BOOL NNS_SndCaptureIsActive (void) { - return sCapParam.activeFlag; -} - -NNSSndCaptureType NNS_SndCaptureGetCaptureType (void) { - NNS_ASSERT(NNS_SndCaptureIsActive()); - - return sCapParam.type; -} - -void NNSi_SndCaptureInit (void) { - sIsThreadCreated = FALSE; - - sCapParam.activeFlag = FALSE; -} - -void NNSi_SndCaptureMain (void) { - CaptureParam * cap; - NNSSndFader * fader; - int volume; - - cap = &sCapParam; - - if (cap->activeFlag && cap->type == NNS_SND_CAPTURE_TYPE_REVERB) { - fader = &cap->fader; - - NNSi_SndFaderUpdate(fader); - - if (cap->fadeOutFlag) { - if (NNSi_SndFaderIsFinished(fader)) { - NNSi_SndCaptureStop(); - return; - } - } - - volume = (NNSi_SndFaderGet(fader) >> 8); - - if (volume != cap->volume) { - SND_SetChannelVolume( - cap->playChBitMask, - volume, - SND_CHANNEL_DATASHIFT_NONE - ); - - cap->volume = volume; - } - } -} - -BOOL NNSi_SndCaptureStart (NNSSndCaptureType type, void * buffer0, void * buffer1, u32 bufLen, NNSSndCaptureFormat format, SNDCaptureIn input, SNDCaptureOut output, BOOL loopFlag, int sampleRate, int volume, int pan0, int pan1, int interval, NNSSndCaptureCallback callback, void * arg) { - SNDWaveFormat wave_format; - SNDCaptureFormat capture_format; - u32 chBitMask = 0; - u32 playChBitMask = 0; - u32 capBitMask = 0; - int alarmNo = -1; - unsigned int samples; - int timer; - u32 alarmTimer; - u32 alarmOffset; - BOOL is8bit; - CaptureParam * cap = &sCapParam; - - NNS_ASSERTMSG(((u32)buffer0 & 0x1f) == 0, "buffer address must be aligned to 32 bytes boundary."); - NNS_ASSERTMSG(((u32)buffer1 & 0x1f) == 0, "buffer address must be aligned to 32 bytes boundary."); - NNS_ASSERTMSG((bufLen & 0x1f) == 0, "buffer size must be aligned to 32 bytes boundary."); - NNS_MINMAX_ASSERT(pan0, SND_CHANNEL_PAN_MIN, SND_CHANNEL_PAN_MAX); - NNS_MINMAX_ASSERT(pan1, SND_CHANNEL_PAN_MIN, SND_CHANNEL_PAN_MAX); - NNS_MAX_ASSERT(bufLen >> 2, SND_CAPTURE_LEN_MAX); - - DC_FlushRange(buffer0, bufLen); - DC_FlushRange(buffer1, bufLen); - - is8bit = format == NNS_SND_CAPTURE_FORMAT_PCM8 ? TRUE: FALSE; - - timer = SND_TIMER_CLOCK / sampleRate; - NNS_MINMAX_ASSERT(timer, SND_CHANNEL_TIMER_MIN, SND_CHANNEL_TIMER_MAX); - - if (callback != NULL) { - NNS_ASSERTMSG(((bufLen / interval) & 0x1f) == 0, "buffer size divided by inverval must be aligned to 32 bytes boundary."); - - samples = bufLen; - if (!is8bit) { - samples >>= 1; - } - NNS_ASSERTMSG((samples % interval) == 0, "interval must be a multiple of sample count."); - - timer = ((timer + 16) & ~0x1f); - alarmTimer = (timer >> 5) * (samples / interval); - - alarmOffset = 32; - if (!is8bit) { - alarmOffset >>= 1; - } - alarmOffset *= (timer >> 5); - } - - wave_format = is8bit ? SND_WAVE_FORMAT_PCM8 : SND_WAVE_FORMAT_PCM16; - capture_format = is8bit ? SND_CAPTURE_FORMAT_PCM8 : SND_CAPTURE_FORMAT_PCM16; - - chBitMask |= (1 << SND_CAPTURE_0_OUT_CHANNEL) | (1 << SND_CAPTURE_1_OUT_CHANNEL); - capBitMask |= (1 << SND_CAPTURE_0) | (1 << SND_CAPTURE_1); - - if (type != NNS_SND_CAPTURE_TYPE_SAMPLING) { - playChBitMask = chBitMask; - } - - if (callback != NULL) { - alarmNo = NNS_SndAllocAlarm(); - if (alarmNo < 0) { - return FALSE; - } - } - if (!NNS_SndLockCapture(capBitMask)) { - if (alarmNo >= 0) { - NNS_SndFreeAlarm(alarmNo); - } - return FALSE; - } - if (!NNS_SndLockChannel(chBitMask)) { - if (alarmNo >= 0) { - NNS_SndFreeAlarm(alarmNo); - } - NNS_SndUnlockCapture(capBitMask); - return FALSE; - } - - SND_SetupChannelPcm( - SND_CAPTURE_0_OUT_CHANNEL, - wave_format, - buffer0, - loopFlag ? SND_CHANNEL_LOOP_REPEAT : SND_CHANNEL_LOOP_1SHOT, - 0, - (int)(bufLen >> 2), - volume, - SND_CHANNEL_DATASHIFT_NONE, - timer, - pan0 - ); - SND_SetupCapture( - SND_CAPTURE_0, - capture_format, - buffer0, - bufLen >> 2, - loopFlag, - input, - output - ); - SND_SetupChannelPcm( - SND_CAPTURE_1_OUT_CHANNEL, - wave_format, - buffer1, - loopFlag ? SND_CHANNEL_LOOP_REPEAT : SND_CHANNEL_LOOP_1SHOT, - 0, - (int)(bufLen >> 2), - volume, - SND_CHANNEL_DATASHIFT_NONE, - timer, - pan1 - ); - SND_SetupCapture( - SND_CAPTURE_1, - capture_format, - buffer1, - bufLen >> 2, - loopFlag, - input, - output - ); - - if (alarmNo >= 0) { - SND_SetupAlarm( - alarmNo, - alarmTimer + alarmOffset, - alarmTimer, - AlarmCallback, - cap - ); - } - - if (type == NNS_SND_CAPTURE_TYPE_EFFECT) { - SND_SetOutputSelector( - SND_OUTPUT_CHANNEL1, - SND_OUTPUT_CHANNEL3, - SND_CHANNEL_OUT_BYPASS, - SND_CHANNEL_OUT_BYPASS - ); - } - - SND_StartTimer( - playChBitMask, - capBitMask, - alarmNo >= 0 ? (u32)(1 << alarmNo) : 0, - 0 - ); - - cap->activeFlag = TRUE; - cap->type = type; - - cap->chBitMask = chBitMask; - cap->playChBitMask = playChBitMask; - cap->capBitMask = capBitMask; - cap->alarmNo = alarmNo; - - cap->format = format; - cap->bufferL = buffer0; - cap->bufferR = buffer1; - cap->bufLen = bufLen; - cap->blockSize = bufLen / interval; - - cap->curBuffer = 0; - - cap->interval = interval; - cap->callback = callback; - cap->callbackArg = arg; - - cap->volume = volume; - - NNSi_SndFaderInit(&cap->fader); - NNSi_SndFaderSet(&cap->fader, volume << 8, 1); - - cap->fadeOutFlag = FALSE; - - return TRUE; -} - -void NNSi_SndCaptureStop (void) { - CaptureParam * cap = &sCapParam; - u32 commandTag; - BOOL useAlarm; - - if (!cap->activeFlag) { - return; - } - - useAlarm = cap->alarmNo >= 0 ? TRUE : FALSE; - - SND_StopTimer( - cap->playChBitMask, - cap->capBitMask, - useAlarm ? (u32)(1 << cap->alarmNo) : 0, - 0 - ); - - if (useAlarm) { - commandTag = SND_GetCurrentCommandTag(); - (void)SND_FlushCommand(SND_COMMAND_BLOCK); - SND_WaitForCommandProc(commandTag); - - while (OS_ReceiveMessage(&sMesgQ, NULL, OS_MESSAGE_NOBLOCK)) { - } - } - - if (cap->capBitMask) { - NNS_SndUnlockCapture(cap->capBitMask); - } - if (cap->chBitMask) { - NNS_SndUnlockChannel(cap->chBitMask); - } - if (useAlarm) { - NNS_SndFreeAlarm(cap->alarmNo); - } - - if (cap->type == NNS_SND_CAPTURE_TYPE_EFFECT) { - SND_SetOutputSelector( - SND_OUTPUT_MIXER, - SND_OUTPUT_MIXER, - SND_CHANNEL_OUT_MIXER, - SND_CHANNEL_OUT_MIXER - ); - } - - cap->activeFlag = FALSE; -} - -void NNSi_SndCaptureBeginSleep (void) { - CaptureParam * cap; - u32 commandTag; - - cap = &sCapParam; - - if (!cap->activeFlag) { - return; - } - - SND_StopTimer( - cap->playChBitMask, - cap->capBitMask, - cap->alarmNo >= 0 ? (u32)(1 << cap->alarmNo) : 0, - 0 - ); - - commandTag = SND_GetCurrentCommandTag(); - (void)SND_FlushCommand(SND_COMMAND_BLOCK); - SND_WaitForCommandProc(commandTag); -} - -void NNSi_SndCaptureEndSleep (void) { - CaptureParam * cap; - - cap = &sCapParam; - - if (!cap->activeFlag) { - return; - } - - cap->curBuffer = 0; - - MI_CpuClear32(cap->bufferL, cap->bufLen); - MI_CpuClear32(cap->bufferR, cap->bufLen); - DC_FlushRange(cap->bufferL, cap->bufLen); - DC_FlushRange(cap->bufferR, cap->bufLen); - - SND_StartTimer( - cap->playChBitMask, - cap->capBitMask, - cap->alarmNo >= 0 ? (u32)(1 << cap->alarmNo) : 0, - 0 - ); -} - -static void AlarmCallback (void * arg) { - CaptureParam * cap = (CaptureParam *)arg; - const u32 blockSize = cap->blockSize; - const u32 offset = blockSize * cap->curBuffer; - void * bufL_p = (u8 *)cap->bufferL + offset; - void * bufR_p = (u8 *)cap->bufferR + offset; - BOOL result; - - if (sIsThreadCreated) { - EffectInfo * info = &sEffectInfoBuffer[sCurEffectInfo]; - - info->cap = cap; - info->blockSize = blockSize; - info->offset = offset; - info->bufL_p = bufL_p; - info->bufR_p = bufR_p; - - result = OS_SendMessage(&sMesgQ, (OSMessage)info, OS_MESSAGE_NOBLOCK); - - NNS_WARNING(result, "Capture thread is too busy."); - - sCurEffectInfo++; - if (sCurEffectInfo >= THREAD_MESSAGE_BUF_SIZE) { - sCurEffectInfo = 0; - } - } else { - DC_InvalidateRange(bufL_p, blockSize); - DC_InvalidateRange(bufR_p, blockSize); - - cap->callback( - bufL_p, - bufR_p, - blockSize, - cap->format, - cap->callbackArg - ); - } - - cap->curBuffer++; - if (cap->curBuffer >= cap->interval) { - cap->curBuffer = 0; - } -} - -static void CaptureThread (void *) { - OSMessage msg; - EffectInfo * info; - - while (1) { - (void)OS_ReceiveMessage(&sMesgQ, &msg, OS_MESSAGE_BLOCK); - - info = (EffectInfo *)msg; - if (info == NULL) { - break; - } - - DC_InvalidateRange(info->bufL_p, info->blockSize); - DC_InvalidateRange(info->bufR_p, info->blockSize); - - info->cap->callback( - info->bufL_p, - info->bufR_p, - info->blockSize, - info->cap->format, - info->cap->callbackArg - ); - } -} diff --git a/subprojects/NitroSystem/libraries/snd/src/fader.c b/subprojects/NitroSystem/libraries/snd/src/fader.c deleted file mode 100644 index e8e9900c14..0000000000 --- a/subprojects/NitroSystem/libraries/snd/src/fader.c +++ /dev/null @@ -1,48 +0,0 @@ -#include -#include - -void NNSi_SndFaderInit (NNSSndFader * fader) { - NNS_NULL_ASSERT(fader); - - fader->origin = fader->target = 0; - fader->counter = fader->frame = 0; -} - -void NNSi_SndFaderSet (NNSSndFader * fader, int target, int frame) { - NNS_NULL_ASSERT(fader); - - fader->origin = NNSi_SndFaderGet(fader); - fader->target = target; - fader->frame = frame; - fader->counter = 0; -} - -int NNSi_SndFaderGet (const NNSSndFader * fader) { - s64 value; - - NNS_NULL_ASSERT(fader); - - if (fader->counter >= fader->frame) { - return fader->target; - } - - value = (fader->target - fader->origin) - * fader->counter / fader->frame - + fader->origin; - - return (int)value; -} - -void NNSi_SndFaderUpdate (NNSSndFader * fader) { - NNS_NULL_ASSERT(fader); - - if (fader->counter < fader->frame) { - fader->counter++; - } -} - -BOOL NNSi_SndFaderIsFinished (const NNSSndFader * fader) { - NNS_NULL_ASSERT(fader); - - return fader->counter >= fader->frame ? TRUE : FALSE; -} diff --git a/subprojects/NitroSystem/libraries/snd/src/heap_nnssnd.c b/subprojects/NitroSystem/libraries/snd/src/heap_nnssnd.c deleted file mode 100644 index 58d97c09f0..0000000000 --- a/subprojects/NitroSystem/libraries/snd/src/heap_nnssnd.c +++ /dev/null @@ -1,263 +0,0 @@ - -#include -#include -#include - -#define HEAP_ALIGN 32 - -#define ROUNDUP(value, align) (((u32)(value) + ((align) - 1)) & ~((align) - 1)) - -typedef struct NNSSndHeap { - NNSFndHeapHandle handle; - NNSFndList sectionList; -} NNSSndHeap; - -typedef struct NNSSndHeapBlock { - NNSFndLink link; - u32 size; - NNSSndHeapDisposeCallback callback; - u32 data1; - u32 data2; - u8 padding[0x20 - ((sizeof(NNSFndLink) + sizeof(NNSSndHeapDisposeCallback) + sizeof(u32) * 3) & 0x1f)]; - u32 buffer[0]; -} NNSSndHeapBlock; - -typedef struct NNSSndHeapSection { - NNSFndList blockList; - NNSFndLink link; -} NNSSndHeapSection; - -static void InitHeapSection(NNSSndHeapSection * section); -static BOOL InitHeap(NNSSndHeap * heap, NNSFndHeapHandle handle); -static BOOL NewSection(NNSSndHeap * heap); -static void EraseSync(void); - -NNSSndHeapHandle NNS_SndHeapCreate (void * startAddress, u32 size) { - NNSSndHeap * heap; - void * endAddress; - NNSFndHeapHandle handle; - - NNS_NULL_ASSERT(startAddress); - - endAddress = (u8 *)startAddress + size; - startAddress = (void *)ROUNDUP(startAddress, 4); - - if (startAddress > endAddress) { - return NNS_SND_HEAP_INVALID_HANDLE; - } - - size = (u32)((u8 *)endAddress - (u8 *)startAddress); - if (size < sizeof(NNSSndHeap)) { - return NNS_SND_HEAP_INVALID_HANDLE; - } - - size -= sizeof(NNSSndHeap); - - heap = (NNSSndHeap *)startAddress; - startAddress = heap + 1; - - handle = NNS_FndCreateFrmHeap(startAddress, size); - if (handle == NNS_FND_HEAP_INVALID_HANDLE) { - return NULL; - } - - if (!InitHeap(heap, handle)) { - NNS_FndDestroyFrmHeap(handle); - return NNS_SND_HEAP_INVALID_HANDLE; - } - - return heap; -} - -void NNS_SndHeapDestroy (NNSSndHeapHandle heap) { - NNS_ASSERT(heap != NNS_SND_HEAP_INVALID_HANDLE); - - NNS_SndHeapClear(heap); - - NNS_FndDestroyFrmHeap(heap->handle); -} - -void NNS_SndHeapClear (NNSSndHeapHandle heap) { - NNSSndHeapSection * section = NULL; - void * object; - BOOL result; - BOOL doCallback = FALSE; - - NNS_ASSERT(heap != NNS_SND_HEAP_INVALID_HANDLE); - - while ((section = (NNSSndHeapSection *)NNS_FndGetPrevListObject(&heap->sectionList, NULL)) != NULL) { - object = NULL; - while ((object = NNS_FndGetPrevListObject(§ion->blockList, object)) != NULL) { - NNSSndHeapBlock * block = (NNSSndHeapBlock *)object; - if (block->callback != NULL) { - block->callback(block->buffer, block->size, block->data1, block->data2); - doCallback = TRUE; - } - } - - NNS_FndRemoveListObject(&heap->sectionList, section); - } - - NNS_FndFreeToFrmHeap(heap->handle, NNS_FND_FRMHEAP_FREE_ALL); - - if (doCallback) { - EraseSync(); - } - - result = NewSection(heap); - NNS_ASSERTMSG(result, "NNS_SndHeapClear(): NewSection is Failed"); -} - -void * NNS_SndHeapAlloc (NNSSndHeapHandle heap, u32 size, NNSSndHeapDisposeCallback callback, u32 data1, u32 data2) { - NNSSndHeapSection * section; - NNSSndHeapBlock * block; - - NNS_ASSERT(heap != NNS_SND_HEAP_INVALID_HANDLE); - - block = (NNSSndHeapBlock *)NNS_FndAllocFromFrmHeapEx( - heap->handle, sizeof(NNSSndHeapBlock) + ROUNDUP(size, HEAP_ALIGN), HEAP_ALIGN - ); - if (block == NULL) { - return NULL; - } - - section = (NNSSndHeapSection *)NNS_FndGetPrevListObject(&heap->sectionList, NULL); - - block->size = size; - block->callback = callback; - block->data1 = data1; - block->data2 = data2; - NNS_FndAppendListObject(§ion->blockList, block); - - NNS_ASSERTMSG(((u32)(block->buffer) & 0x1f) == 0, "NNS_SndHeapAlloc: Internal Error"); - - return block->buffer; -} - -int NNS_SndHeapSaveState (NNSSndHeapHandle heap) { - BOOL result; - - NNS_ASSERT(heap != NNS_SND_HEAP_INVALID_HANDLE); - - if (!NNS_FndRecordStateForFrmHeap(heap->handle, heap->sectionList.numObjects)) { - return -1; - } - - if (!NewSection(heap)) { - result = NNS_FndFreeByStateToFrmHeap(heap->handle, 0); - NNS_ASSERTMSG(result, "NNS_SndHeapSaveState(): NNS_FndFreeByStateToFrmHeap is Failed"); - return -1; - } - - return heap->sectionList.numObjects - 1; -} - -void NNS_SndHeapLoadState (NNSSndHeapHandle heap, int level) { - NNSSndHeapSection * section; - void * object = NULL; - BOOL result; - BOOL doCallback = FALSE; - - NNS_ASSERT(heap != NNS_SND_HEAP_INVALID_HANDLE); - NNS_MINMAX_ASSERT(level, 0, heap->sectionList.numObjects - 1); - - if (level == 0) { - NNS_SndHeapClear(heap); - return; - } - while (level < heap->sectionList.numObjects) { - section = (NNSSndHeapSection *)NNS_FndGetPrevListObject(&heap->sectionList, NULL); - - while ((object = NNS_FndGetPrevListObject(§ion->blockList, object)) != NULL) { - NNSSndHeapBlock * block = (NNSSndHeapBlock *)object; - if (block->callback != NULL) { - block->callback(block->buffer, block->size, block->data1, block->data2); - doCallback = TRUE; - } - } - - NNS_FndRemoveListObject(&heap->sectionList, section); - } - - result = NNS_FndFreeByStateToFrmHeap(heap->handle, (u32)level); - NNS_ASSERTMSG(result, "NNS_SndHeapLoadState(): NNS_FndFreeByStateToFrmHeap is Failed"); - - if (doCallback) { - EraseSync(); - } - - result = NNS_FndRecordStateForFrmHeap(heap->handle, heap->sectionList.numObjects); - NNS_ASSERTMSG(result, "NNS_SndHeapLoadState(): NNS_FndRecordStateForFrmHeap is Failed"); - - result = NewSection(heap); - NNS_ASSERTMSG(result, "NNS_SndHeapLoadState(): NewSection is Failed"); -} - -int NNS_SndHeapGetCurrentLevel (NNSSndHeapHandle heap) { - NNS_ASSERT(heap != NNS_SND_HEAP_INVALID_HANDLE); - - return heap->sectionList.numObjects - 1; -} - -u32 NNS_SndHeapGetSize (NNSSndHeapHandle heap) { - NNS_ASSERT(heap != NNS_SND_HEAP_INVALID_HANDLE); - - return - (u32)((u8 *)NNS_FndGetHeapEndAddress(heap->handle) - - (u8 *)NNS_FndGetHeapStartAddress(heap->handle)) - ; -} - -u32 NNS_SndHeapGetFreeSize (NNSSndHeapHandle heap) { - u32 size; - - NNS_ASSERT(heap != NNS_SND_HEAP_INVALID_HANDLE); - - size = NNS_FndGetAllocatableSizeForFrmHeapEx(heap->handle, HEAP_ALIGN); - - if (size < sizeof(NNSSndHeapBlock)) { - return 0; - } - size -= sizeof(NNSSndHeapBlock); - - size &= ~0x1f; - - return size; -} - -static void InitHeapSection (NNSSndHeapSection * section) { - NNS_FND_INIT_LIST(§ion->blockList, NNSSndHeapBlock, link); -} - -static BOOL InitHeap (NNSSndHeap * heap, NNSFndHeapHandle handle) { - NNS_FND_INIT_LIST(&heap->sectionList, NNSSndHeapSection, link); - heap->handle = handle; - - if (!NewSection(heap)) { - return FALSE; - } - - return TRUE; -} - -static BOOL NewSection (NNSSndHeap * heap) { - NNSSndHeapSection * section; - - section = (NNSSndHeapSection *)NNS_FndAllocFromFrmHeap(heap->handle, sizeof(NNSSndHeapSection)); - if (section == NULL) { - return FALSE; - } - InitHeapSection(section); - - NNS_FndAppendListObject(&heap->sectionList, section); - - return TRUE; -} - -static void EraseSync (void) { - u32 commandTag; - - commandTag = SND_GetCurrentCommandTag(); - (void)SND_FlushCommand(SND_COMMAND_BLOCK); - SND_WaitForCommandProc(commandTag); -} diff --git a/subprojects/NitroSystem/libraries/snd/src/main_nnssnd.c b/subprojects/NitroSystem/libraries/snd/src/main_nnssnd.c deleted file mode 100644 index 542f82c9f6..0000000000 --- a/subprojects/NitroSystem/libraries/snd/src/main_nnssnd.c +++ /dev/null @@ -1,191 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include - -static PMSleepCallbackInfo sPreSleepCallback; -static PMSleepCallbackInfo sPostSleepCallback; - -static SNDDriverInfo sDriverInfo[2] ATTRIBUTE_ALIGN(32); -static u32 sDriverInfoCommandTag; -static s8 sCurDriverInfo; -static BOOL sDriverInfoFirstFlag; - -static void BeginSleep(void *); -static void EndSleep(void *); - -static const SNDDriverInfo * GetCurDriverInfo(void); - -static NNS_SND_INLINE const SNDDriverInfo * GetCurDriverInfo (void) { - if (sCurDriverInfo < 0) { - return NULL; - } - return &sDriverInfo[sCurDriverInfo]; -} - -void NNS_SndInit (void) { - { - static BOOL initialized = FALSE; - if (initialized) { - return; - } - initialized = TRUE; - } - - SND_Init(); - - PM_SetSleepCallbackInfo(&sPreSleepCallback, BeginSleep, NULL); - PM_SetSleepCallbackInfo(&sPostSleepCallback, EndSleep, NULL); - - PM_PrependPreSleepCallback(&sPreSleepCallback); - PM_AppendPostSleepCallback(&sPostSleepCallback); - - NNSi_SndInitResourceMgr(); - NNSi_SndCaptureInit(); - NNSi_SndPlayerInit(); - - sCurDriverInfo = -1; - sDriverInfoFirstFlag = TRUE; -} - -void NNS_SndMain (void) { - while (SND_RecvCommandReply(SND_COMMAND_NOBLOCK) != NULL) { - } - - NNSi_SndPlayerMain(); - NNSi_SndCaptureMain(); -#ifndef SDK_SMALL_BUILD - NNSi_SndArcStrmMain(); -#endif - - (void)SND_FlushCommand(SND_COMMAND_NOBLOCK); -} - -void NNS_SndSetMasterVolume (int volume) { - NNS_MINMAX_ASSERT(volume, 0, SND_MASTER_VOLUME_MAX); - - SND_SetMasterVolume(volume); -} - -void NNS_SndSetMonoFlag (BOOL flag) { - if (flag) { - SND_SetMasterPan(SND_CHANNEL_PAN_CENTER); - } else { - SND_ResetMasterPan(); - } -} - -void NNS_SndStopSoundAll (void) { - u32 commandTag; - - NNS_SndPlayerStopSeqAll(0); -#ifndef SDK_SMALL_BUILD - NNS_SndArcStrmStopAll(0); -#endif - NNSi_SndCaptureStop(); - - SNDi_SetSurroundDecay(0); - SND_StopTimer(0xffff, 0xffff, 0xffff, 0); - - commandTag = SND_GetCurrentCommandTag(); - (void)SND_FlushCommand(SND_COMMAND_BLOCK); - SND_WaitForCommandProc(commandTag); -} - -void NNS_SndStopChannelAll (void) { - SND_StopUnlockedChannel(0xffff, 0); -} - -BOOL NNS_SndUpdateDriverInfo (void) { - if (!sDriverInfoFirstFlag) { - while (SND_RecvCommandReply(SND_COMMAND_NOBLOCK) != NULL) { - } - - if (!SND_IsFinishedCommandTag(sDriverInfoCommandTag)) { - return FALSE; - } - - if (sCurDriverInfo < 0) { - sCurDriverInfo = 1; - } - - SND_ReadDriverInfo(&sDriverInfo[sCurDriverInfo]); - sDriverInfoCommandTag = SND_GetCurrentCommandTag(); - - if (sCurDriverInfo == 0) { - sCurDriverInfo = 1; - } else { - sCurDriverInfo = 0; - } - - DC_InvalidateRange(&sDriverInfo[sCurDriverInfo], sizeof(SNDDriverInfo)); - - (void)SND_FlushCommand(SND_COMMAND_NOBLOCK); - - return TRUE; - } else { - SND_ReadDriverInfo(&sDriverInfo[0]); - sDriverInfoCommandTag = SND_GetCurrentCommandTag(); - sDriverInfoFirstFlag = FALSE; - return FALSE; - } -} - -BOOL NNS_SndReadDriverChannelInfo (int chNo, SNDChannelInfo * info) { - const SNDDriverInfo * driverInfo; - - NNS_NULL_ASSERT(info); - - driverInfo = GetCurDriverInfo(); - if (driverInfo == NULL) { - return FALSE; - } - - return SND_ReadChannelInfo(driverInfo, chNo, info); -} - -BOOL NNSi_SndReadDriverPlayerInfo (int playerNo, SNDPlayerInfo * info) { - const SNDDriverInfo * driverInfo; - - NNS_NULL_ASSERT(info); - - driverInfo = GetCurDriverInfo(); - if (driverInfo == NULL) { - return FALSE; - } - - return SND_ReadPlayerInfo(driverInfo, playerNo, info); -} - -BOOL NNSi_SndReadDriverTrackInfo (int playerNo, int trackNo, SNDTrackInfo * info) { - const SNDDriverInfo * driverInfo; - - NNS_NULL_ASSERT(info); - - driverInfo = GetCurDriverInfo(); - if (driverInfo == NULL) { - return FALSE; - } - - return SND_ReadTrackInfo(driverInfo, playerNo, trackNo, info); -} - -static void BeginSleep (void *) { - u32 commandTag; - - NNSi_SndCaptureBeginSleep(); - - SND_StopTimer(0, 0, 0, 0); - - commandTag = SND_GetCurrentCommandTag(); - (void)SND_FlushCommand(SND_COMMAND_BLOCK); - SND_WaitForCommandProc(commandTag); -} - -static void EndSleep (void *) { - NNSi_SndCaptureEndSleep(); -} diff --git a/subprojects/NitroSystem/libraries/snd/src/player.c b/subprojects/NitroSystem/libraries/snd/src/player.c deleted file mode 100644 index fd6cd4182a..0000000000 --- a/subprojects/NitroSystem/libraries/snd/src/player.c +++ /dev/null @@ -1,981 +0,0 @@ - -#include -#include -#include -#include -#include - -#define FADER_SHIFT 8 - -typedef struct NNSSndPlayerHeap { - NNSFndLink link; - NNSSndHeapHandle handle; - NNSSndSeqPlayer * player; - int playerNo; -} NNSSndPlayerHeap; - -static NNSSndSeqPlayer sSeqPlayer[SND_PLAYER_NUM]; -static NNSSndPlayer sPlayer[NNS_SND_PLAYER_NUM]; -static NNSFndList sPrioList; -static NNSFndList sFreeList; - -static void InitPlayer(NNSSndSeqPlayer * seqPlayer); -static void ShutdownPlayer(NNSSndSeqPlayer * seqPlayer); -static void ForceStopSeq(NNSSndSeqPlayer * seqPlayer); -static NNSSndSeqPlayer * AllocSeqPlayer(int prio); -static void InsertPlayerList(NNSSndPlayer * player, NNSSndSeqPlayer * seqPlayer); -static void InsertPrioList(NNSSndSeqPlayer * seqPlayer); -static void SetPlayerPriority(NNSSndSeqPlayer * seqPlayer, int priority); -static void PlayerHeapDisposeCallback(void * mem, u32 size, u32 data1, u32 data2); - -void NNS_SndPlayerSetPlayerVolume (int playerNo, int volume) { - NNS_MINMAX_ASSERT(playerNo, 0, NNS_SND_PLAYER_NO_MAX); - NNS_MINMAX_ASSERT(volume, 0, SND_CALC_DECIBEL_SCALE_MAX); - - sPlayer[playerNo].volume = (u8)volume; -} - -void NNS_SndPlayerSetPlayableSeqCount (int playerNo, int seqCount) { - NNS_MINMAX_ASSERT(playerNo, 0, NNS_SND_PLAYER_NO_MAX); - NNS_MINMAX_ASSERT(seqCount, 0, SND_PLAYER_NUM); - - sPlayer[playerNo].playableSeqCount = (u16)seqCount; -} - -void NNS_SndPlayerSetAllocatableChannel (int playerNo, u32 chBitFlag) { - NNS_MINMAX_ASSERT(playerNo, 0, NNS_SND_PLAYER_NO_MAX); - NNS_MINMAX_ASSERT(chBitFlag, 0, 0xffff); - - sPlayer[playerNo].allocChBitFlag = chBitFlag; -} - -BOOL NNS_SndPlayerCreateHeap (int playerNo, NNSSndHeapHandle heap, u32 size) { - NNSSndHeapHandle playerHeapHandle; - NNSSndPlayerHeap * playerHeap; - void * buffer; - - NNS_MINMAX_ASSERT(playerNo, 0, NNS_SND_PLAYER_NO_MAX); - - buffer = NNS_SndHeapAlloc(heap, sizeof(NNSSndPlayerHeap) + size, PlayerHeapDisposeCallback, 0, 0); - if (buffer == NULL) { - return FALSE; - } - - playerHeap = (NNSSndPlayerHeap *)buffer; - - playerHeap->player = NULL; - playerHeap->playerNo = playerNo; - playerHeap->handle = NNS_SND_HEAP_INVALID_HANDLE; - - playerHeapHandle = NNS_SndHeapCreate( - (u8 *)buffer + sizeof(NNSSndPlayerHeap), - size - ); - if (playerHeapHandle == NNS_SND_HEAP_INVALID_HANDLE) { - return FALSE; - } - - playerHeap->handle = playerHeapHandle; - NNS_FndAppendListObject(&sPlayer[playerNo].heapList, playerHeap); - - return TRUE; -} - -void NNS_SndPlayerStopSeq (NNSSndHandle * handle, int fadeFrame) { - NNS_NULL_ASSERT(handle); - - NNSi_SndPlayerStopSeq(handle->player, fadeFrame); -} - -void NNS_SndPlayerStopSeqByPlayerNo (int playerNo, int fadeFrame) { - NNSSndSeqPlayer * seqPlayer; - int i; - - NNS_MINMAX_ASSERT(playerNo, 0, NNS_SND_PLAYER_NO_MAX); - - for ( i = 0; i < SND_PLAYER_NUM ; i++ ) { - seqPlayer = &sSeqPlayer[i]; - - if (seqPlayer->status != NNS_SND_SEQ_PLAYER_STATUS_STOP && - seqPlayer->player == &sPlayer[playerNo]) { - NNSi_SndPlayerStopSeq(seqPlayer, fadeFrame); - } - } -} - -void NNS_SndPlayerStopSeqBySeqNo (int seqNo, int fadeFrame) { - NNSSndSeqPlayer * seqPlayer; - int i; - - for ( i = 0; i < SND_PLAYER_NUM ; i++ ) { - seqPlayer = &sSeqPlayer[i]; - - if (seqPlayer->status != NNS_SND_SEQ_PLAYER_STATUS_STOP && - seqPlayer->seqType == NNS_SND_PLAYER_SEQ_TYPE_SEQ && - seqPlayer->seqNo == seqNo) { - NNSi_SndPlayerStopSeq(seqPlayer, fadeFrame); - } - } -} - -void NNS_SndPlayerStopSeqBySeqArcNo (int seqArcNo, int fadeFrame) { - NNSSndSeqPlayer * seqPlayer; - int i; - - for ( i = 0; i < SND_PLAYER_NUM ; i++ ) { - seqPlayer = &sSeqPlayer[i]; - - if (seqPlayer->status != NNS_SND_SEQ_PLAYER_STATUS_STOP && - seqPlayer->seqType == NNS_SND_PLAYER_SEQ_TYPE_SEQARC && - seqPlayer->seqNo == seqArcNo) { - NNSi_SndPlayerStopSeq(seqPlayer, fadeFrame); - } - } -} - -void NNS_SndPlayerStopSeqBySeqArcIdx (int seqArcNo, int index, int fadeFrame) { - NNSSndSeqPlayer * seqPlayer; - int i; - - for ( i = 0; i < SND_PLAYER_NUM ; i++ ) { - seqPlayer = &sSeqPlayer[i]; - - if (seqPlayer->status != NNS_SND_SEQ_PLAYER_STATUS_STOP && - seqPlayer->seqType == NNS_SND_PLAYER_SEQ_TYPE_SEQARC && - seqPlayer->seqNo == seqArcNo && - seqPlayer->seqArcIndex == index) { - NNSi_SndPlayerStopSeq(seqPlayer, fadeFrame); - } - } -} - -void NNS_SndPlayerStopSeqAll (int fadeFrame) { - NNSSndSeqPlayer * seqPlayer; - int i; - - for ( i = 0; i < SND_PLAYER_NUM ; i++ ) { - seqPlayer = &sSeqPlayer[i]; - - if (seqPlayer->status != NNS_SND_SEQ_PLAYER_STATUS_STOP) { - NNSi_SndPlayerStopSeq(seqPlayer, fadeFrame); - } - } -} - -void NNS_SndPlayerPause (NNSSndHandle * handle, BOOL flag) { - NNS_NULL_ASSERT(handle); - - NNSi_SndPlayerPause(handle->player, flag); -} - -void NNS_SndPlayerPauseByPlayerNo (int playerNo, BOOL flag) { - NNSSndSeqPlayer * seqPlayer; - NNSSndSeqPlayer * next; - - NNS_MINMAX_ASSERT(playerNo, 0, NNS_SND_PLAYER_NO_MAX); - - for ( seqPlayer = (NNSSndSeqPlayer *)NNS_FndGetNextListObject(&sPlayer[playerNo].playerList, NULL); - seqPlayer != NULL ; seqPlayer = next ) { - next = (NNSSndSeqPlayer *)NNS_FndGetNextListObject(&sPlayer[playerNo].playerList, seqPlayer); - - NNSi_SndPlayerPause(seqPlayer, flag); - } -} - -void NNS_SndPlayerPauseAll (BOOL flag) { - NNSSndSeqPlayer * seqPlayer; - NNSSndSeqPlayer * next; - - for ( seqPlayer = (NNSSndSeqPlayer *)NNS_FndGetNextListObject(&sPrioList, NULL); - seqPlayer != NULL ; seqPlayer = next ) { - next = (NNSSndSeqPlayer *)NNS_FndGetNextListObject(&sPrioList, seqPlayer); - - NNSi_SndPlayerPause(seqPlayer, flag); - } -} - -void NNS_SndHandleInit (NNSSndHandle * handle) { - NNS_NULL_ASSERT(handle); - - handle->player = NULL; -} - -void NNS_SndHandleReleaseSeq (NNSSndHandle * handle) { - NNS_NULL_ASSERT(handle); - - if (!NNS_SndHandleIsValid(handle)) { - return; - } - - NNS_ASSERT(handle == handle->player->handle); - - handle->player->handle = NULL; - handle->player = NULL; -} - -int NNS_SndPlayerCountPlayingSeqByPlayerNo (int playerNo) { - NNS_MINMAX_ASSERT(playerNo, 0, NNS_SND_PLAYER_NO_MAX); - - return sPlayer[playerNo].playerList.numObjects; -} - -int NNS_SndPlayerCountPlayingSeqBySeqNo (int seqNo) { - int count = 0; - - NNSSndSeqPlayer * seqPlayer = NULL; - while ((seqPlayer = (NNSSndSeqPlayer *)NNS_FndGetNextListObject(&sPrioList, seqPlayer)) != NULL) { - if (seqPlayer->seqType == NNS_SND_PLAYER_SEQ_TYPE_SEQ && - seqPlayer->seqNo == seqNo) { - count++; - } - } - - return count; -} - -int NNS_SndPlayerCountPlayingSeqBySeqArcNo (int seqArcNo) { - int count = 0; - - NNSSndSeqPlayer * seqPlayer = NULL; - while ((seqPlayer = (NNSSndSeqPlayer *)NNS_FndGetNextListObject(&sPrioList, seqPlayer)) != NULL) { - if (seqPlayer->seqType == NNS_SND_PLAYER_SEQ_TYPE_SEQARC && - seqPlayer->seqNo == seqArcNo) { - count++; - } - } - - return count; -} - -int NNS_SndPlayerCountPlayingSeqBySeqArcIdx (int seqArcNo, int index) { - int count = 0; - - NNSSndSeqPlayer * seqPlayer = NULL; - while ((seqPlayer = (NNSSndSeqPlayer *)NNS_FndGetNextListObject(&sPrioList, seqPlayer)) != NULL) { - if (seqPlayer->seqType == NNS_SND_PLAYER_SEQ_TYPE_SEQARC && - seqPlayer->seqNo == seqArcNo && - seqPlayer->seqArcIndex == index) { - count++; - } - } - - return count; -} - -void NNS_SndPlayerSetVolume (NNSSndHandle * handle, int volume) { - NNS_NULL_ASSERT(handle); - NNS_MINMAX_ASSERT(volume, 0, SND_CALC_DECIBEL_SCALE_MAX); - - if (!NNS_SndHandleIsValid(handle)) { - return; - } - - handle->player->extVolume = (u8)volume; -} - -void NNS_SndPlayerSetInitialVolume (NNSSndHandle * handle, int volume) { - NNS_NULL_ASSERT(handle); - NNS_MINMAX_ASSERT(volume, 0, SND_CALC_DECIBEL_SCALE_MAX); - - if (!NNS_SndHandleIsValid(handle)) { - return; - } - - handle->player->initVolume = (u8)volume; -} - -void NNS_SndPlayerMoveVolume (NNSSndHandle * handle, int targetVolume, int frames) { - NNS_NULL_ASSERT(handle); - NNS_MINMAX_ASSERT(targetVolume, 0, SND_CALC_DECIBEL_SCALE_MAX); - - if (!NNS_SndHandleIsValid(handle)) { - return; - } - - if (handle->player->status == NNS_SND_SEQ_PLAYER_STATUS_FADEOUT) { - return; - } - - NNSi_SndFaderSet(&handle->player->fader, targetVolume << FADER_SHIFT, frames); -} - -void NNS_SndPlayerSetPlayerPriority (NNSSndHandle * handle, int priority) { - NNS_NULL_ASSERT(handle); - NNS_MINMAX_ASSERT(priority, 0, NNS_SND_PLAYER_PRIO_MAX); - - if (!NNS_SndHandleIsValid(handle)) { - return; - } - - SetPlayerPriority(handle->player, priority); -} - -void NNS_SndPlayerSetChannelPriority (NNSSndHandle * handle, int priority) { - NNS_NULL_ASSERT(handle); - NNS_MINMAX_ASSERT(priority, 0, 127); - - if (!NNS_SndHandleIsValid(handle)) { - return; - } - - SND_SetPlayerChannelPriority(handle->player->playerNo, priority); -} - -void NNS_SndPlayerSetTrackMute (NNSSndHandle * handle, u16 trackBitMask, BOOL flag) { - NNS_NULL_ASSERT(handle); - - if (!NNS_SndHandleIsValid(handle)) { - return; - } - - SND_SetTrackMute( - handle->player->playerNo, - trackBitMask, - flag - ); -} - -#if SDK_CURRENT_VERSION_NUMBER >= SDK_VERSION_NUMBER(3, 1, 0) -void NNS_SndPlayerSetTrackMuteEx (NNSSndHandle * handle, u16 trackBitMask, NNSSndSeqMute mute) { - NNS_NULL_ASSERT(handle); - - if (!NNS_SndHandleIsValid(handle)) { - return; - } - - SND_SetTrackMuteEx( - handle->player->playerNo, - trackBitMask, - (SNDSeqMute)mute - ); -} -void SND_SetTrackMuteEx(int playerNo, u32 trackBitMask, SNDSeqMute mute); -SDK_WEAK_SYMBOL void SND_SetTrackMuteEx (int playerNo, u32 trackBitMask, SNDSeqMute mute) { - (void)playerNo; - (void)trackBitMask; - (void)mute; - - NNS_WARNING(FALSE, "SND_SetTrackMuteEx is not supported."); -} -#endif - -void NNS_SndPlayerSetTrackVolume (NNSSndHandle * handle, u16 trackBitMask, int volume) { - NNS_NULL_ASSERT(handle); - NNS_MINMAX_ASSERT(volume, 0, SND_CALC_DECIBEL_SCALE_MAX); - - if (!NNS_SndHandleIsValid(handle)) { - return; - } - - SND_SetTrackVolume( - handle->player->playerNo, - trackBitMask, - SND_CalcDecibel(volume) - ); -} - -void NNS_SndPlayerSetTrackPitch (NNSSndHandle * handle, u16 trackBitMask, int pitch) { - NNS_NULL_ASSERT(handle); - NNS_MINMAX_ASSERT(pitch, NNS_SND_PLAYER_TRACK_PITCH_MIN, NNS_SND_PLAYER_TRACK_PITCH_MAX); - - if (!NNS_SndHandleIsValid(handle)) { - return; - } - - SND_SetTrackPitch(handle->player->playerNo, trackBitMask, pitch); -} - -void NNS_SndPlayerSetTrackPan (NNSSndHandle * handle, u16 trackBitMask, int pan) { - NNS_NULL_ASSERT(handle); - NNS_MINMAX_ASSERT(pan, NNS_SND_PLAYER_TRACK_PAN_MIN, NNS_SND_PLAYER_TRACK_PAN_MAX); - - if (!NNS_SndHandleIsValid(handle)) { - return; - } - - SND_SetTrackPan(handle->player->playerNo, trackBitMask, pan); -} - -void NNS_SndPlayerSetTrackPanRange (NNSSndHandle * handle, u16 trackBitMask, int panRange) { - NNS_NULL_ASSERT(handle); - NNS_MINMAX_ASSERT(panRange, NNS_SND_PLAYER_TRACK_PAN_RANGE_MIN, NNS_SND_PLAYER_TRACK_PAN_RANGE_MAX); - - if (!NNS_SndHandleIsValid(handle)) { - return; - } - - SND_SetTrackPanRange(handle->player->playerNo, trackBitMask, panRange); -} - -void NNS_SndPlayerSetTrackModDepth (NNSSndHandle * handle, u16 trackBitMask, int depth) { - NNS_NULL_ASSERT(handle); - NNS_MINMAX_ASSERT(depth, 0, 255); - - if (!NNS_SndHandleIsValid(handle)) { - return; - } - - SND_SetTrackModDepth(handle->player->playerNo, trackBitMask, depth); -} - -void NNS_SndPlayerSetTrackModSpeed (NNSSndHandle * handle, u16 trackBitMask, int speed) { - NNS_NULL_ASSERT(handle); - NNS_MINMAX_ASSERT(speed, 0, 255); - - if (!NNS_SndHandleIsValid(handle)) { - return; - } - - SND_SetTrackModSpeed(handle->player->playerNo, trackBitMask, speed); -} - -void NNS_SndPlayerSetTrackAllocatableChannel (NNSSndHandle * handle, u16 trackBitMask, u32 chBitFlag) { - NNS_NULL_ASSERT(handle); - NNS_MINMAX_ASSERT(chBitFlag, 0, 0xffff); - - if (!NNS_SndHandleIsValid(handle)) { - return; - } - - SND_SetTrackAllocatableChannel(handle->player->playerNo, trackBitMask, chBitFlag); -} - -void NNS_SndPlayerSetTempoRatio (NNSSndHandle * handle, int ratio) { - NNS_NULL_ASSERT(handle); - NNS_MINMAX_ASSERT(ratio, 1, 65535); - - if (!NNS_SndHandleIsValid(handle)) { - return; - } - - SND_SetPlayerTempoRatio(handle->player->playerNo, ratio); -} - -void NNS_SndPlayerSetSeqNo (NNSSndHandle * handle, int seqNo) { - NNS_NULL_ASSERT(handle); - NNS_MINMAX_ASSERT(seqNo, 0, NNS_SND_PLAYER_SEQ_NO_MAX); - - if (!NNS_SndHandleIsValid(handle)) { - return; - } - - handle->player->seqType = NNS_SND_PLAYER_SEQ_TYPE_SEQ; - handle->player->seqNo = (u16)seqNo; -} - -void NNS_SndPlayerSetSeqArcNo (NNSSndHandle * handle, int seqArcNo, int index) { - NNS_NULL_ASSERT(handle); - NNS_MINMAX_ASSERT(seqArcNo, 0, NNS_SND_PLAYER_SEQ_NO_MAX); - NNS_MINMAX_ASSERT(index, 0, NNS_SND_PLAYER_SEQARC_INDEX_MAX); - - if (!NNS_SndHandleIsValid(handle)) { - return; - } - - handle->player->seqType = NNS_SND_PLAYER_SEQ_TYPE_SEQARC; - handle->player->seqNo = (u16)seqArcNo; - handle->player->seqArcIndex = (u16)index; -} - -NNSSndPlayerSeqType NNS_SndPlayerGetSeqType (NNSSndHandle * handle) { - NNS_NULL_ASSERT(handle); - - if (!NNS_SndHandleIsValid(handle)) { - return NNS_SND_PLAYER_SEQ_TYPE_INVALID; - } - - return (NNSSndPlayerSeqType)(handle->player->seqType); -} - -int NNS_SndPlayerGetSeqNo (NNSSndHandle * handle) { - NNS_NULL_ASSERT(handle); - - if (!NNS_SndHandleIsValid(handle)) { - return -1; - } - - if (handle->player->seqType != NNS_SND_PLAYER_SEQ_TYPE_SEQ) { - return -1; - } - - return handle->player->seqNo; -} - -int NNS_SndPlayerGetSeqArcNo (NNSSndHandle * handle) { - NNS_NULL_ASSERT(handle); - - if (!NNS_SndHandleIsValid(handle)) { - return -1; - } - - if (handle->player->seqType != NNS_SND_PLAYER_SEQ_TYPE_SEQARC) { - return -1; - } - - return handle->player->seqNo; -} - -int NNS_SndPlayerGetSeqArcIdx (NNSSndHandle * handle) { - NNS_NULL_ASSERT(handle); - - if (!NNS_SndHandleIsValid(handle)) { - return -1; - } - - if (handle->player->seqType != NNS_SND_PLAYER_SEQ_TYPE_SEQARC) { - return -1; - } - - return handle->player->seqArcIndex; -} - -BOOL NNS_SndPlayerReadVariable (NNSSndHandle * handle, int varNo, s16 * var) { - NNSSndSeqPlayer * seqPlayer; - - NNS_NULL_ASSERT(handle); - NNS_NULL_ASSERT(var); - NNS_MINMAX_ASSERT(varNo, 0, SND_PLAYER_VARIABLE_NUM - 1); - - if (!NNS_SndHandleIsValid(handle)) { - return FALSE; - } - - seqPlayer = handle->player; - - if (!seqPlayer->startFlag) { - *var = SND_DEFAULT_VARIABLE; - return TRUE; - } - - *var = SND_GetPlayerLocalVariable(seqPlayer->playerNo, varNo); - return TRUE; -} - -BOOL NNS_SndPlayerReadGlobalVariable (int varNo, s16 * var) { - NNS_NULL_ASSERT(var); - NNS_MINMAX_ASSERT(varNo, 0, SND_GLOBAL_VARIABLE_NUM - 1); - - *var = SND_GetPlayerGlobalVariable(varNo); - return TRUE; -} - -BOOL NNS_SndPlayerWriteVariable (NNSSndHandle * handle, int varNo, s16 var) { - NNS_NULL_ASSERT(handle); - NNS_MINMAX_ASSERT(varNo, 0, SND_PLAYER_VARIABLE_NUM - 1); - - if (!NNS_SndHandleIsValid(handle)) { - return FALSE; - } - - SND_SetPlayerLocalVariable(handle->player->playerNo, varNo, var); - - return TRUE; -} - -BOOL NNS_SndPlayerWriteGlobalVariable (int varNo, s16 var) { - NNS_MINMAX_ASSERT(varNo, 0, SND_GLOBAL_VARIABLE_NUM - 1); - - SND_SetPlayerGlobalVariable(varNo, var); - - return TRUE; -} - -u32 NNS_SndPlayerGetTick (NNSSndHandle * handle) { - NNSSndSeqPlayer * seqPlayer; - - NNS_NULL_ASSERT(handle); - - if (!NNS_SndHandleIsValid(handle)) { - return 0; - } - - seqPlayer = handle->player; - - if (!seqPlayer->startFlag) { - return 0; - } - - return SND_GetPlayerTickCounter(seqPlayer->playerNo); -} - -BOOL NNS_SndPlayerReadDriverPlayerInfo (NNSSndHandle * handle, SNDPlayerInfo * info) { - NNSSndSeqPlayer * seqPlayer; - - NNS_NULL_ASSERT(handle); - - if (!NNS_SndHandleIsValid(handle)) { - return FALSE; - } - - seqPlayer = handle->player; - NNS_NULL_ASSERT(seqPlayer); - - return NNSi_SndReadDriverPlayerInfo(seqPlayer->playerNo, info); -} - -BOOL NNS_SndPlayerReadDriverTrackInfo (NNSSndHandle * handle, int trackNo, SNDTrackInfo * info) { - NNSSndSeqPlayer * seqPlayer; - - NNS_NULL_ASSERT(handle); - - if (!NNS_SndHandleIsValid(handle)) { - return FALSE; - } - - seqPlayer = handle->player; - NNS_NULL_ASSERT(seqPlayer); - - return NNSi_SndReadDriverTrackInfo(seqPlayer->playerNo, trackNo, info); -} - -void NNSi_SndPlayerInit (void) { - NNSSndPlayer * player; - int playerNo; - - NNS_FND_INIT_LIST(&sPrioList, NNSSndSeqPlayer, prioLink); - NNS_FND_INIT_LIST(&sFreeList, NNSSndSeqPlayer, prioLink); - - for ( playerNo = 0; playerNo < SND_PLAYER_NUM ; playerNo++ ) { - sSeqPlayer[playerNo].status = NNS_SND_SEQ_PLAYER_STATUS_STOP; - sSeqPlayer[playerNo].playerNo = (u8)playerNo; - NNS_FndAppendListObject(&sFreeList, &sSeqPlayer[playerNo]); - } - - for ( playerNo = 0; playerNo < NNS_SND_PLAYER_NUM ; playerNo++ ) { - player = &sPlayer[playerNo]; - - NNS_FND_INIT_LIST(&player->playerList, NNSSndSeqPlayer, playerLink); - NNS_FND_INIT_LIST(&player->heapList, NNSSndPlayerHeap, link); - player->volume = 127; - player->playableSeqCount = 1; - player->allocChBitFlag = 0; - } -} - -void NNSi_SndPlayerMain (void) { - NNSSndSeqPlayer * seqPlayer; - NNSSndSeqPlayer * next; - u32 status; - int fader; - - status = SND_GetPlayerStatus(); - - for ( seqPlayer = (NNSSndSeqPlayer *)NNS_FndGetNextListObject(&sPrioList, NULL); - seqPlayer != NULL ; seqPlayer = next ) { - next = (NNSSndSeqPlayer *)NNS_FndGetNextListObject(&sPrioList, seqPlayer); - - if (!seqPlayer->startFlag) { - if (SND_IsFinishedCommandTag(seqPlayer->commandTag)) { - seqPlayer->startFlag = TRUE; - } - } - - if (seqPlayer->startFlag) { - if ((status & (1 << seqPlayer->playerNo)) == 0) { - ShutdownPlayer(seqPlayer); - continue; - } - } - - NNSi_SndFaderUpdate(&seqPlayer->fader); - - fader - = SND_CalcDecibel(seqPlayer->initVolume) - + SND_CalcDecibel(seqPlayer->extVolume) - + SND_CalcDecibel(seqPlayer->player->volume) - + SND_CalcDecibel(NNSi_SndFaderGet(&seqPlayer->fader) >> FADER_SHIFT) - ; - if (fader < -32768) { - fader = -32768; - } else if (fader > 32767) { - fader = 32767; - } - - if (fader != seqPlayer->volume) { - SND_SetPlayerVolume(seqPlayer->playerNo, fader); - seqPlayer->volume = (s16)fader; - } - - if (seqPlayer->status == NNS_SND_SEQ_PLAYER_STATUS_FADEOUT) { - if (NNSi_SndFaderIsFinished(&seqPlayer->fader)) { - ForceStopSeq(seqPlayer); - } - } - - if (seqPlayer->prepareFlag) { - SND_StartPreparedSeq(seqPlayer->playerNo); - seqPlayer->prepareFlag = FALSE; - } - } -} - -NNSSndSeqPlayer * NNSi_SndPlayerAllocSeqPlayer (NNSSndHandle * handle, int playerNo, int prio) { - NNSSndSeqPlayer * seqPlayer; - NNSSndPlayer * player; - - NNS_NULL_ASSERT(handle); - NNS_MINMAX_ASSERT(playerNo, 0, NNS_SND_PLAYER_NO_MAX); - NNS_MINMAX_ASSERT(prio, 0, NNS_SND_PLAYER_PRIO_MAX); - - player = &sPlayer[playerNo]; - - if (NNS_SndHandleIsValid(handle)) { - NNS_SndHandleReleaseSeq(handle); - } - - if (player->playerList.numObjects >= player->playableSeqCount) { - seqPlayer = (NNSSndSeqPlayer *)NNS_FndGetNextListObject(&player->playerList, NULL); - if (seqPlayer == NULL) { - return NULL; - } - if (prio < seqPlayer->prio) { - return NULL; - } - - ForceStopSeq(seqPlayer); - } - - seqPlayer = AllocSeqPlayer(prio); - if (seqPlayer == NULL) { - return NULL; - } - - InsertPlayerList(player, seqPlayer); - - seqPlayer->handle = handle; - handle->player = seqPlayer; - - return seqPlayer; -} - -void NNSi_SndPlayerFreeSeqPlayer (NNSSndSeqPlayer * seqPlayer) { - NNS_NULL_ASSERT(seqPlayer); - - ShutdownPlayer(seqPlayer); -} - -void NNSi_SndPlayerStartSeq (NNSSndSeqPlayer * seqPlayer, const void * seqDataBase, u32 seqDataOffset, const SNDBankData * bank) { - NNSSndPlayer * player; - - NNS_NULL_ASSERT(seqPlayer); - NNS_NULL_ASSERT(seqDataBase); - NNS_NULL_ASSERT(bank); - - player = seqPlayer->player; - NNS_NULL_ASSERT(player); - - SND_PrepareSeq( - seqPlayer->playerNo, - seqDataBase, - seqDataOffset, - bank - ); - if (player->allocChBitFlag) { - SND_SetTrackAllocatableChannel( - seqPlayer->playerNo, - 0xffff, - player->allocChBitFlag - ); - } - - InitPlayer(seqPlayer); - seqPlayer->commandTag = SND_GetCurrentCommandTag(); - seqPlayer->prepareFlag = TRUE; - seqPlayer->status = NNS_SND_SEQ_PLAYER_STATUS_PLAY; -} - -void NNSi_SndPlayerStopSeq (NNSSndSeqPlayer * seqPlayer, int fadeFrame) { - if (seqPlayer == NULL) { - return; - } - if (seqPlayer->status == NNS_SND_SEQ_PLAYER_STATUS_STOP) { - return; - } - - if (fadeFrame == 0) { - ForceStopSeq(seqPlayer); - return; - } - - NNSi_SndFaderSet(&seqPlayer->fader, 0, fadeFrame); - - SetPlayerPriority(seqPlayer, 0); - - seqPlayer->status = NNS_SND_SEQ_PLAYER_STATUS_FADEOUT; -} - -void NNSi_SndPlayerPause (NNSSndSeqPlayer * seqPlayer, BOOL flag) { - if (seqPlayer == NULL) { - return; - } - - if (flag != seqPlayer->pauseFlag) { - SND_PauseSeq(seqPlayer->playerNo, flag); - seqPlayer->pauseFlag = (u8)flag; - } -} - -NNSSndHeapHandle NNSi_SndPlayerAllocHeap (int playerNo, NNSSndSeqPlayer * seqPlayer) { - NNSSndPlayer * player; - NNSSndPlayerHeap * heap; - - NNS_MINMAX_ASSERT(playerNo, 0, NNS_SND_PLAYER_NO_MAX); - - player = &sPlayer[playerNo]; - - heap = (NNSSndPlayerHeap *)NNS_FndGetNextListObject(&player->heapList, NULL); - if (heap == NULL) { - return NULL; - } - - NNS_FndRemoveListObject(&player->heapList, heap); - - heap->player = seqPlayer; - seqPlayer->heap = heap; - - NNS_SndHeapClear(heap->handle); - - return heap->handle; -} - -static void InitPlayer (NNSSndSeqPlayer * seqPlayer) { - NNS_NULL_ASSERT(seqPlayer); - - seqPlayer->pauseFlag = FALSE; - seqPlayer->startFlag = FALSE; - seqPlayer->prepareFlag = FALSE; - - seqPlayer->seqType = NNS_SND_PLAYER_SEQ_TYPE_INVALID; - - seqPlayer->volume = 0; - - seqPlayer->initVolume = 127; - seqPlayer->extVolume = 127; - - NNSi_SndFaderInit(&seqPlayer->fader); - NNSi_SndFaderSet(&seqPlayer->fader, 127 << FADER_SHIFT, 1); -} - -static void InsertPlayerList (NNSSndPlayer * player, NNSSndSeqPlayer * seqPlayer) { - NNSSndSeqPlayer * next = NULL; - while ((next = (NNSSndSeqPlayer *)NNS_FndGetNextListObject(&player->playerList, next)) != NULL) { - if (seqPlayer->prio < next->prio) { - break; - } - } - - NNS_FndInsertListObject(&player->playerList, next, seqPlayer); - - seqPlayer->player = player; -} - -static void InsertPrioList (NNSSndSeqPlayer * seqPlayer) { - NNSSndSeqPlayer * next = NULL; - while ((next = (NNSSndSeqPlayer *)NNS_FndGetNextListObject(&sPrioList, next)) != NULL) { - if (seqPlayer->prio < next->prio) { - break; - } - } - - NNS_FndInsertListObject(&sPrioList, next, seqPlayer); -} - -static void ForceStopSeq (NNSSndSeqPlayer * seqPlayer) { - if (seqPlayer->status == NNS_SND_SEQ_PLAYER_STATUS_FADEOUT) { - SND_SetPlayerVolume(seqPlayer->playerNo, SND_VOLUME_DB_MIN); - } - SND_StopSeq(seqPlayer->playerNo); - ShutdownPlayer(seqPlayer); -} - -static NNSSndSeqPlayer * AllocSeqPlayer (int prio) { - NNSSndSeqPlayer * seqPlayer; - - NNS_MINMAX_ASSERT(prio, 0, NNS_SND_PLAYER_PRIO_MAX); - - seqPlayer = (NNSSndSeqPlayer *)NNS_FndGetNextListObject(&sFreeList, NULL); - if (seqPlayer == NULL) { - seqPlayer = (NNSSndSeqPlayer *)NNS_FndGetNextListObject(&sPrioList, NULL); - NNS_NULL_ASSERT(seqPlayer); - - if (prio < seqPlayer->prio) { - return NULL; - } - - ForceStopSeq(seqPlayer); - } - NNS_FndRemoveListObject(&sFreeList, seqPlayer); - - seqPlayer->prio = (u8)prio; - - InsertPrioList(seqPlayer); - - return seqPlayer; -} - -static void ShutdownPlayer (NNSSndSeqPlayer * seqPlayer) { - NNSSndPlayer * player; - - NNS_NULL_ASSERT(seqPlayer); - - if (seqPlayer->handle != NULL) { - NNS_ASSERT(seqPlayer == seqPlayer->handle->player); - seqPlayer->handle->player = NULL; - seqPlayer->handle = NULL; - } - - player = seqPlayer->player; - NNS_NULL_ASSERT(player); - NNS_FndRemoveListObject(&player->playerList, seqPlayer); - seqPlayer->player = NULL; - - if (seqPlayer->heap != NULL) { - NNS_FndAppendListObject(&player->heapList, seqPlayer->heap); - seqPlayer->heap->player = NULL; - seqPlayer->heap = NULL; - } - - NNS_FndRemoveListObject(&sPrioList, seqPlayer); - NNS_FndAppendListObject(&sFreeList, seqPlayer); - - seqPlayer->status = NNS_SND_SEQ_PLAYER_STATUS_STOP; -} - -static void PlayerHeapDisposeCallback (void * mem, u32, u32, u32) { - NNSSndPlayerHeap * heap = (NNSSndPlayerHeap *)mem; - NNSSndSeqPlayer * seqPlayer; - - if (heap->handle == NNS_SND_HEAP_INVALID_HANDLE) { - return; - } - - NNS_SndHeapDestroy(heap->handle); - - seqPlayer = heap->player; - if (seqPlayer != NULL) { - seqPlayer->heap = NULL; - } else { - NNS_FndRemoveListObject(&sPlayer[heap->playerNo].heapList, heap); - } -} - -static void SetPlayerPriority (NNSSndSeqPlayer * seqPlayer, int priority) { - NNSSndPlayer * player; - - NNS_NULL_ASSERT(seqPlayer); - NNS_MINMAX_ASSERT(priority, 0, NNS_SND_PLAYER_PRIO_MAX); - - player = seqPlayer->player; - if (player != NULL) { - NNS_FndRemoveListObject(&player->playerList, seqPlayer); - seqPlayer->player = NULL; - } - NNS_FndRemoveListObject(&sPrioList, seqPlayer); - - seqPlayer->prio = (u8)priority; - - if (player != NULL) { - InsertPlayerList(player, seqPlayer); - } - InsertPrioList(seqPlayer); -} diff --git a/subprojects/NitroSystem/libraries/snd/src/resource_mgr.c b/subprojects/NitroSystem/libraries/snd/src/resource_mgr.c deleted file mode 100644 index 4edf95938f..0000000000 --- a/subprojects/NitroSystem/libraries/snd/src/resource_mgr.c +++ /dev/null @@ -1,82 +0,0 @@ -#include -#include -#include - -static u32 sChannelLock; -static u32 sCaptureLock; -static u32 sAlarmLock; - -BOOL NNS_SndLockChannel (u32 chBitFlag) { - if (chBitFlag == 0) { - return TRUE; - } - - if (chBitFlag & sChannelLock) { - return FALSE; - } - - SND_LockChannel(chBitFlag, 0); - - sChannelLock |= chBitFlag; - - return TRUE; -} - -void NNS_SndUnlockChannel (u32 chBitFlag) { - NNS_ASSERT((chBitFlag & sChannelLock) == chBitFlag); - - if (chBitFlag == 0) { - return; - } - - SND_UnlockChannel(chBitFlag, 0); - - sChannelLock &= ~chBitFlag; -} - -BOOL NNS_SndLockCapture (u32 capBitFlag) { - if (capBitFlag & sCaptureLock) { - return FALSE; - } - - sCaptureLock |= capBitFlag; - - return TRUE; -} - -void NNS_SndUnlockCapture (u32 capBitFlag) { - NNS_ASSERT((capBitFlag & sCaptureLock) == capBitFlag); - - sCaptureLock &= ~capBitFlag; -} - -int NNS_SndAllocAlarm (void) { - int alarmNo; - u32 mask = 1; - - for ( alarmNo = 0; alarmNo < SND_ALARM_NUM ; alarmNo++, mask <<= 1 ) { - if ((sAlarmLock & mask) == 0) { - sAlarmLock |= mask; - return alarmNo; - } - } - - return -1; -} - -void NNS_SndFreeAlarm (int alarmNo) { - NNS_MINMAX_ASSERT(alarmNo, SND_ALARM_MIN, SND_ALARM_MAX); - NNS_ASSERT(sAlarmLock & (1 << alarmNo)); - - sAlarmLock &= ~(1 << alarmNo); -} - -void NNSi_SndInitResourceMgr (void) { - sChannelLock = 0; - sCaptureLock = 0; - sAlarmLock = 0; -} - -u32 NNSi_GetLockedChannel (void) { - return sChannelLock; -} diff --git a/subprojects/NitroSystem/libraries/snd/src/seqdata.c b/subprojects/NitroSystem/libraries/snd/src/seqdata.c deleted file mode 100644 index 30c17cd097..0000000000 --- a/subprojects/NitroSystem/libraries/snd/src/seqdata.c +++ /dev/null @@ -1,38 +0,0 @@ -#include - -#ifndef NNS_FROM_TOOL - -#include - -#else - -#define NNS_NULL_ASSERT(exp) ((void)0) - -#ifdef _MSC_VER -#pragma warning( disable : 4018 ) -#pragma warning( disable : 4311 ) -#pragma warning( disable : 4312 ) -#endif - -#endif - -u32 NNSi_SndSeqArcGetSeqCount (const NNSSndSeqArc * seqArc) { - NNS_NULL_ASSERT(seqArc); - return seqArc->count; -} - -const NNSSndSeqArcSeqInfo * NNSi_SndSeqArcGetSeqInfo (const NNSSndSeqArc * seqArc, int index) { - NNS_NULL_ASSERT(seqArc); - - if (index < 0) { - return NULL; - } - if (index >= seqArc->count) { - return NULL; - } - if (seqArc->info[index].offset == NNS_SND_SEQ_ARC_INVALID_OFFSET) { - return NULL; - } - - return &seqArc->info[index]; -} diff --git a/subprojects/NitroSystem/libraries/snd/src/sndarc.c b/subprojects/NitroSystem/libraries/snd/src/sndarc.c deleted file mode 100644 index fa55850d5c..0000000000 --- a/subprojects/NitroSystem/libraries/snd/src/sndarc.c +++ /dev/null @@ -1,941 +0,0 @@ -#include -#include - -#ifndef NNS_FROM_TOOL - -#include -#include -#include - -#else - -#define NNS_ASSERT(exp) ((void)0) -#define NNS_NULL_ASSERT(exp) ((void)0) -#define NNS_ALIGN4_ASSERT(exp) ((void)0) -#define NNS_MAX_ASSERT(exp, max) ((void)0) - -static NNS_SND_INLINE -void MI_CpuCopy32 (register const void * srcp, register void * destp, register u32 size) { - const u32 * sp = (const u32 *)srcp; - u32 * dp = (u32 *)destp; - u32 * dpe = (u32 *)((char *)dp + size); - - while (dp < dpe) { - *dp++ = *sp++; - } -} - -#ifdef _MSC_VER -#pragma warning( disable : 4018 ) -#pragma warning( disable : 4311 ) -#pragma warning( disable : 4312 ) -#endif - -#endif - -static const char null_string = '\0'; -static NNSSndArc * sCurrent = NULL; - -static const char * GetSymbol(const NNSSndArcOffsetTable * table, int index, const void * base); -static void * GetPtr(void * base, u32 offset); -static const void * GetPtrConst(const void * base, u32 offset); -static const NNSSndArcOffsetTable * GetOffsetTable(const NNSSndArcInfo * info, u32 offset); -static void InfoDisposeCallback(void * mem, u32 size, u32 data1, u32 data2); -static void FatDisposeCallback(void * mem, u32 size, u32 data1, u32 data2); -static void SymbolDisposeCallback(void * mem, u32 size, u32 data1, u32 data2); - -static NNS_SND_INLINE -void * GetPtr (void * base, u32 offset) { - if (offset == 0) { - return NULL; - } - return (u8 *)base + offset; -} - -static NNS_SND_INLINE -const void * GetPtrConst (const void * base, u32 offset) { - if (offset == 0) { - return NULL; - } - return (const u8 *)base + offset; -} - -static NNS_SND_INLINE -const NNSSndArcOffsetTable * GetOffsetTable (const NNSSndArcInfo * info, u32 offset) { - return (const NNSSndArcOffsetTable *)GetPtrConst(info, offset); -} - -#ifndef SDK_SMALL_BUILD - -#ifndef NNS_FROM_TOOL - -void NNS_SndArcInit (NNSSndArc * arc, const char * filePath, NNSSndHeapHandle heap, BOOL symbolLoadFlag) { - BOOL result; - - NNS_ASSERT(FS_IsAvailable()); - NNS_NULL_ASSERT(arc); - - arc->info = NULL; - arc->fat = NULL; - arc->symbol = NULL; - arc->loadBlockSize = 0; - - result = FS_ConvertPathToFileID(&arc->fileId, filePath); - NNS_ASSERTMSG(result, "Cannot find file %s\n", filePath); - if (!result) { - return; - } - - FS_InitFile(&arc->file); - result = FS_OpenFileFast(&arc->file, arc->fileId); - NNS_ASSERTMSG(result, "Cannot open file %s\n", filePath); - if (!result) { - return; - } - - arc->file_open = TRUE; - - result = NNS_SndArcSetup(arc, heap, symbolLoadFlag); - NNS_ASSERT(result); - if (!result) { - return; - } - - sCurrent = arc; -} - -BOOL NNS_SndArcInitWithResult (NNSSndArc * arc, const char * filePath, NNSSndHeapHandle heap, BOOL symbolLoadFlag) { - BOOL result; - - NNS_ASSERT(FS_IsAvailable()); - NNS_NULL_ASSERT(arc); - - arc->info = NULL; - arc->fat = NULL; - arc->symbol = NULL; - arc->loadBlockSize = 0; - - result = FS_ConvertPathToFileID(&arc->fileId, filePath); - if (!result) { - return FALSE; - } - - FS_InitFile(&arc->file); - result = FS_OpenFileFast(&arc->file, arc->fileId); - if (!result) { - return FALSE; - } - - arc->file_open = TRUE; - - result = NNS_SndArcSetup(arc, heap, symbolLoadFlag); - if (!result) { - return FALSE; - } - - sCurrent = arc; - - return TRUE; -} - -BOOL NNS_SndArcSetup (NNSSndArc * arc, NNSSndHeapHandle heap, BOOL symbolLoadFlag) { - BOOL result; - s32 readSize; - - NNS_NULL_ASSERT(arc); - NNS_ASSERT(arc->file_open); - - result = FS_SeekFile(&arc->file, 0, FS_SEEK_SET); - if (!result) { - return FALSE; - } - - readSize = FS_ReadFile( - &arc->file, - &arc->header, - sizeof(arc->header) - ); - if (readSize != sizeof(arc->header)) { - return FALSE; - } - NNS_ASSERT( - arc->header.fileHeader.signature[0] == 'S' && - arc->header.fileHeader.signature[1] == 'D' && - arc->header.fileHeader.signature[2] == 'A' && - arc->header.fileHeader.signature[3] == 'T' - ); - NNS_ASSERT(arc->header.fileHeader.version >= NNS_SND_ARC_SUPPORTED_FILE_VERSION); - - if (heap != NNS_SND_HEAP_INVALID_HANDLE) { - arc->info = (NNSSndArcInfo *)NNS_SndHeapAlloc(heap, arc->header.infoSize, InfoDisposeCallback, (u32)arc, 0); - if (arc->info == NULL) { - return FALSE; - } - result = FS_SeekFile(&arc->file, (s32)(arc->header.infoOffset), FS_SEEK_SET); - if (!result) { - return FALSE; - } - readSize = FS_ReadFile(&arc->file, arc->info, (s32)(arc->header.infoSize)); - if (readSize != arc->header.infoSize) { - return FALSE; - } - NNS_ASSERT(arc->info->blockHeader.kind == NNS_SND_ARC_SIGNATURE_INFO); - - arc->fat = (NNSSndArcFat *)NNS_SndHeapAlloc(heap, arc->header.fatSize, FatDisposeCallback, (u32)arc, 0); - if (arc->fat == NULL) { - return FALSE; - } - result = FS_SeekFile(&arc->file, (s32)(arc->header.fatOffset), FS_SEEK_SET); - if (!result) { - return FALSE; - } - readSize = FS_ReadFile(&arc->file, arc->fat, (s32)(arc->header.fatSize)); - if (readSize != arc->header.fatSize) { - return FALSE; - } - NNS_ASSERT(arc->fat->blockHeader.kind == NNS_SND_ARC_SIGNATURE_FAT); - - if (symbolLoadFlag && arc->header.symbolDataSize > 0) { - arc->symbol = (NNSSndArcSymbol *)NNS_SndHeapAlloc(heap, arc->header.symbolDataSize, SymbolDisposeCallback, (u32)arc, 0); - if (arc->symbol == NULL) { - return FALSE; - } - result = FS_SeekFile(&arc->file, (s32)(arc->header.symbolDataOffset), FS_SEEK_SET); - if (!result) { - return FALSE; - } - - readSize = FS_ReadFile(&arc->file, arc->symbol, (s32)(arc->header.symbolDataSize)); - if (readSize != arc->header.symbolDataSize) { - return FALSE; - } - NNS_ASSERT(arc->symbol->blockHeader.kind == NNS_SND_ARC_SIGNATURE_SYMB); - } - } - - return TRUE; -} -#endif - -#endif - -void NNS_SndArcInitOnMemory (NNSSndArc * arc, void * data) { - NNSSndArcHeader * header = (NNSSndArcHeader *)data; - NNSSndArcFileInfo * file; - int fileId; - - NNS_NULL_ASSERT(arc); - NNS_NULL_ASSERT(data); - NNS_ALIGN4_ASSERT(data); - - MI_CpuCopy32(header, &arc->header, sizeof(arc->header)); - - NNS_ASSERT( - arc->header.fileHeader.signature[0] == 'S' && - arc->header.fileHeader.signature[1] == 'D' && - arc->header.fileHeader.signature[2] == 'A' && - arc->header.fileHeader.signature[3] == 'T' - ); - NNS_ASSERT(arc->header.fileHeader.version >= NNS_SND_ARC_SUPPORTED_FILE_VERSION); - - arc->info = (NNSSndArcInfo *)GetPtr(header, arc->header.infoOffset); - arc->fat = (NNSSndArcFat *)GetPtr(header, arc->header.fatOffset); - arc->symbol = (NNSSndArcSymbol *)GetPtr(header, arc->header.symbolDataOffset); - arc->loadBlockSize = 0; - - NNS_NULL_ASSERT(arc->info); - NNS_NULL_ASSERT(arc->fat); - - NNS_ASSERT(arc->info->blockHeader.kind == NNS_SND_ARC_SIGNATURE_INFO); - NNS_ASSERT(arc->fat->blockHeader.kind == NNS_SND_ARC_SIGNATURE_FAT); - NNS_ASSERT(arc->symbol == NULL || arc->symbol->blockHeader.kind == NNS_SND_ARC_SIGNATURE_SYMB); - - for ( fileId = 0; fileId < arc->fat->count ; fileId++ ) { - file = &arc->fat->files[fileId]; - - file->mem = GetPtr(header, file->offset); - NNS_NULL_ASSERT(file->mem); - } - - arc->file_open = FALSE; - - sCurrent = arc; -} - -NNSSndArc * NNS_SndArcSetCurrent (NNSSndArc * arc) { - NNSSndArc * oldArc = sCurrent; - sCurrent = arc; - return oldArc; -} - -NNSSndArc * NNS_SndArcGetCurrent (void) { - return sCurrent; -} - -const NNSSndSeqParam * NNS_SndArcGetSeqParam (int seqNo) { - const NNSSndArcSeqInfo * info; - - info = NNS_SndArcGetSeqInfo(seqNo); - if (info == NULL) { - return NULL; - } - - return &info->param; -} - -const NNSSndSeqParam * NNS_SndArcGetSeqArcParam (int seqArcNo, int index) { - const NNSSndArcSeqArcInfo * info; - const NNSSndSeqArc * seqArc; - const NNSSndSeqArcSeqInfo * sound; - - info = NNS_SndArcGetSeqArcInfo(seqArcNo); - if (info == NULL) { - return NULL; - } - - seqArc = (const NNSSndSeqArc *)NNS_SndArcGetFileAddress(info->fileId); - if (seqArc == NULL) { - return NULL; - } - - sound = NNSi_SndSeqArcGetSeqInfo(seqArc, index); - if (sound == NULL) { - return NULL; - } - - return &sound->param; -} - -const NNSSndArcSeqInfo * NNS_SndArcGetSeqInfo (int seqNo) { - NNSSndArc * arc = sCurrent; - const NNSSndArcOffsetTable * table; - - NNS_NULL_ASSERT(arc); - NNS_NULL_ASSERT(arc->info); - - table = GetOffsetTable(arc->info, arc->info->seqOffset); - if (table == NULL) { - return NULL; - } - - if (seqNo < 0) { - return NULL; - } - if (seqNo >= table->count) { - return NULL; - } - - return (const NNSSndArcSeqInfo *)GetPtrConst(arc->info, table->offset[seqNo]); -} - -const NNSSndArcSeqArcInfo * NNS_SndArcGetSeqArcInfo (int seqArcNo) { - NNSSndArc * arc = sCurrent; - const NNSSndArcOffsetTable * table; - - NNS_NULL_ASSERT(arc); - NNS_NULL_ASSERT(arc->info); - - table = GetOffsetTable(arc->info, arc->info->seqArcOffset); - if (table == NULL) { - return NULL; - } - - if (seqArcNo < 0) { - return NULL; - } - if (seqArcNo >= table->count) { - return NULL; - } - - return (const NNSSndArcSeqArcInfo *)GetPtrConst(arc->info, table->offset[seqArcNo]); -} - -const NNSSndArcBankInfo * NNS_SndArcGetBankInfo (int bankNo) { - NNSSndArc * arc = sCurrent; - const NNSSndArcOffsetTable * table; - - NNS_NULL_ASSERT(arc); - NNS_NULL_ASSERT(arc->info); - - table = GetOffsetTable(arc->info, arc->info->bankOffset); - if (table == NULL) { - return NULL; - } - - if (bankNo < 0) { - return NULL; - } - if (bankNo >= table->count) { - return NULL; - } - - return (const NNSSndArcBankInfo *)GetPtrConst(arc->info, table->offset[bankNo]); -} - -const NNSSndArcWaveArcInfo * NNS_SndArcGetWaveArcInfo (int waveArcNo) { - NNSSndArc * arc = sCurrent; - const NNSSndArcOffsetTable * table; - - NNS_NULL_ASSERT(arc); - NNS_NULL_ASSERT(arc->info); - - table = GetOffsetTable(arc->info, arc->info->waveArcOffset); - if (table == NULL) { - return NULL; - } - - if (waveArcNo < 0) { - return NULL; - } - if (waveArcNo >= table->count) { - return NULL; - } - - return (const NNSSndArcWaveArcInfo *)GetPtrConst(arc->info, table->offset[waveArcNo]); -} - -const NNSSndArcStrmInfo * NNS_SndArcGetStrmInfo (int strmNo) { - NNSSndArc * arc = sCurrent; - const NNSSndArcOffsetTable * table; - - NNS_NULL_ASSERT(arc); - NNS_NULL_ASSERT(arc->info); - - table = GetOffsetTable(arc->info, arc->info->strmOffset); - if (table == NULL) { - return NULL; - } - - if (strmNo < 0) { - return NULL; - } - if (strmNo >= table->count) { - return NULL; - } - - return (const NNSSndArcStrmInfo *)GetPtrConst(arc->info, table->offset[strmNo]); -} - -const NNSSndArcPlayerInfo * NNS_SndArcGetPlayerInfo (int playerNo) { - NNSSndArc * arc = sCurrent; - const NNSSndArcOffsetTable * table; - - NNS_NULL_ASSERT(arc); - NNS_NULL_ASSERT(arc->info); - - table = GetOffsetTable(arc->info, arc->info->playerInfoOffset); - if (table == NULL) { - return NULL; - } - - if (playerNo < 0) { - return NULL; - } - if (playerNo >= table->count) { - return NULL; - } - - return (const NNSSndArcPlayerInfo *)GetPtrConst(arc->info, table->offset[playerNo]); -} - -const NNSSndArcStrmPlayerInfo * NNS_SndArcGetStrmPlayerInfo (int playerNo) { - NNSSndArc * arc = sCurrent; - const NNSSndArcOffsetTable * table; - - NNS_NULL_ASSERT(arc); - NNS_NULL_ASSERT(arc->info); - - table = GetOffsetTable(arc->info, arc->info->strmPlayerInfoOffset); - if (table == NULL) { - return NULL; - } - - if (playerNo < 0) { - return NULL; - } - if (playerNo >= table->count) { - return NULL; - } - - return (const NNSSndArcStrmPlayerInfo *)GetPtrConst(arc->info, table->offset[playerNo]); -} - -const NNSSndArcGroupInfo * NNS_SndArcGetGroupInfo (int groupNo) { - NNSSndArc * arc = sCurrent; - const NNSSndArcOffsetTable * table; - - NNS_NULL_ASSERT(arc); - NNS_NULL_ASSERT(arc->info); - - table = GetOffsetTable(arc->info, arc->info->groupInfoOffset); - if (table == NULL) { - return NULL; - } - - if (groupNo < 0) { - return NULL; - } - if (groupNo >= table->count) { - return NULL; - } - - return (const NNSSndArcGroupInfo *)GetPtrConst(arc->info, table->offset[groupNo]); -} - -u32 NNS_SndArcGetSeqCount (void) { - NNSSndArc * arc = sCurrent; - const NNSSndArcOffsetTable * table; - - NNS_NULL_ASSERT(arc); - NNS_NULL_ASSERT(arc->info); - - table = GetOffsetTable(arc->info, arc->info->seqOffset); - if (table == NULL) { - return 0; - } - - return table->count; -} - -u32 NNS_SndArcGetSeqArcCount (void) { - NNSSndArc * arc = sCurrent; - const NNSSndArcOffsetTable * table; - - NNS_NULL_ASSERT(arc); - NNS_NULL_ASSERT(arc->info); - - table = GetOffsetTable(arc->info, arc->info->seqArcOffset); - if (table == NULL) { - return 0; - } - - return table->count; -} - -u32 NNS_SndArcGetBankCount (void) { - NNSSndArc * arc = sCurrent; - const NNSSndArcOffsetTable * table; - - NNS_NULL_ASSERT(arc); - NNS_NULL_ASSERT(arc->info); - - table = GetOffsetTable(arc->info, arc->info->bankOffset); - if (table == NULL) { - return 0; - } - - return table->count; -} - -u32 NNS_SndArcGetWaveArcCount (void) { - NNSSndArc * arc = sCurrent; - const NNSSndArcOffsetTable * table; - - NNS_NULL_ASSERT(arc); - NNS_NULL_ASSERT(arc->info); - - table = GetOffsetTable(arc->info, arc->info->waveArcOffset); - if (table == NULL) { - return 0; - } - - return table->count; -} - -u32 NNS_SndArcGetStrmCount (void) { - NNSSndArc * arc = sCurrent; - const NNSSndArcOffsetTable * table; - - NNS_NULL_ASSERT(arc); - NNS_NULL_ASSERT(arc->info); - - table = GetOffsetTable(arc->info, arc->info->strmOffset); - if (table == NULL) { - return 0; - } - - return table->count; -} - -u32 NNS_SndArcGetGroupCount (void) { - NNSSndArc * arc = sCurrent; - const NNSSndArcOffsetTable * table; - - NNS_NULL_ASSERT(arc); - NNS_NULL_ASSERT(arc->info); - - table = GetOffsetTable(arc->info, arc->info->groupInfoOffset); - if (table == NULL) { - return 0; - } - - return table->count; -} - -u32 NNS_SndArcGetSeqArcSeqCount (int seqArcNo) { - const NNSSndArcSeqArcInfo * info; - const NNSSndSeqArc * seqArc; - - info = NNS_SndArcGetSeqArcInfo(seqArcNo); - if (info == NULL) { - return 0; - } - - seqArc = (const NNSSndSeqArc *)NNS_SndArcGetFileAddress(info->fileId); - if (seqArc == NULL) { - return 0; - } - - return NNSi_SndSeqArcGetSeqCount(seqArc); -} - -u32 NNS_SndArcGetFileOffset (u32 fileId) { - NNSSndArc * arc = sCurrent; - NNS_NULL_ASSERT(arc); - NNS_NULL_ASSERT(arc->fat); - - if (fileId >= arc->fat->count) { - return 0; - } - return arc->fat->files[fileId].offset; -} - -u32 NNS_SndArcGetFileSize (u32 fileId) { - NNSSndArc * arc = sCurrent; - NNS_NULL_ASSERT(arc); - NNS_NULL_ASSERT(arc->fat); - - if (fileId >= arc->fat->count) { - return 0; - } - return arc->fat->files[fileId].size; -} - -#ifndef NNS_FROM_TOOL - -s32 NNS_SndArcReadFile (u32 fileId, void * buffer, s32 size, s32 offset) { -#ifndef SDK_SMALL_BUILD - - NNSSndArc * arc = sCurrent; - const NNSSndArcFileInfo * file; - s32 totalReadSize; - s32 readSize; - s32 blockSize; - s32 currentOffset; - s32 requestSize; - u8 * destAddress; - - NNS_ASSERT(FS_IsAvailable()); - NNS_NULL_ASSERT(arc); - NNS_NULL_ASSERT(arc->fat); - NNS_NULL_ASSERT(buffer); - NNS_ASSERTMSG(arc->file_open, "Cannot use this function for the Sound Archive initialized by NNS_SndArcInitOnMemory\n"); - - if (fileId >= arc->fat->count) { - return -1; - } - file = &arc->fat->files[fileId]; - - currentOffset = offset; - - blockSize = arc->loadBlockSize; - if (blockSize == 0) { - blockSize = size; - } - totalReadSize = 0; - destAddress = (u8 *)buffer; - - while (totalReadSize < size) { - requestSize = size - totalReadSize; - if (requestSize > blockSize) { - requestSize = blockSize; - } - if (requestSize > file->size - currentOffset) { - requestSize = (s32)(file->size - currentOffset); - } - if (requestSize == 0) { - break; - } - - if (!FS_SeekFile(&arc->file, (s32)(file->offset + currentOffset), FS_SEEK_SET)) { - return -1; - } - readSize = FS_ReadFile(&arc->file, destAddress, requestSize); - if (readSize < 0) { - return readSize; - } - - totalReadSize += readSize; - currentOffset += readSize; - destAddress += readSize; - } - - return totalReadSize; - -#else - -#pragma unused( fileId, buffer, size, offset ) - return -1; - -#endif -} - -FSFileID NNS_SndArcGetFileID (void) { - NNSSndArc * arc = sCurrent; - - NNS_NULL_ASSERT(arc); - NNS_NULL_ASSERT(arc->fat); - NNS_ASSERTMSG(arc->file_open, "Cannot use this function for the Sound Archive initialized by NNS_SndArcInitOnMemory\n"); - - return arc->fileId; -} - -#endif - -void * NNS_SndArcGetFileAddress (u32 fileId) { - NNSSndArc * arc = sCurrent; - - NNS_NULL_ASSERT(arc); - NNS_NULL_ASSERT(arc->fat); - - if (fileId >= arc->fat->count) { - return NULL; - } - return arc->fat->files[fileId].mem; -} - -void NNS_SndArcSetFileAddress (u32 fileId, void * address) { - NNSSndArc * arc = sCurrent; - - NNS_NULL_ASSERT(arc); - NNS_NULL_ASSERT(arc->fat); - NNS_MAX_ASSERT(fileId, arc->fat->count - 1); - - arc->fat->files[fileId].mem = address; -} - -s32 NNS_SndArcGetLoadBlockSize () { - NNSSndArc * arc = sCurrent; - - NNS_NULL_ASSERT(arc); - return arc->loadBlockSize; -} - -void NNS_SndArcSetLoadBlockSize (s32 loadBlockSize) { - NNSSndArc * arc = sCurrent; - - NNS_NULL_ASSERT(arc); - arc->loadBlockSize = loadBlockSize; -} - -const char * NNS_SndArcGetSeqSymbol (int seqNo) { - NNSSndArc * arc = sCurrent; - const NNSSndArcOffsetTable * table; - - NNS_NULL_ASSERT(arc); - - if (arc->symbol == NULL) { - return &null_string; - } - - table = (const NNSSndArcOffsetTable *)GetPtrConst(arc->symbol, arc->symbol->seqOffset); - if (table == NULL) { - return &null_string; - } - - return GetSymbol(table, seqNo, arc->symbol); -} - -const char * NNS_SndArcGetSeqArcSymbol (int seqArcNo) { - NNSSndArc * arc = sCurrent; - const NNSSndArcSeqArcOffsetTable * table; - - NNS_NULL_ASSERT(arc); - - if (arc->symbol == NULL) { - return &null_string; - } - - table = (const NNSSndArcSeqArcOffsetTable *)GetPtrConst(arc->symbol, arc->symbol->seqArcOffset); - if (table == NULL) { - return &null_string; - } - - if (seqArcNo < 0) { - return &null_string; - } - if (seqArcNo >= table->count) { - return &null_string; - } - - if (table->offset[seqArcNo].symbol == 0) { - return &null_string; - } - - return (const char *)GetPtrConst(arc->symbol, table->offset[seqArcNo].symbol); -} - -const char * NNS_SndArcGetSeqArcIdxSymbol (int seqArcNo, int index) { - NNSSndArc * arc = sCurrent; - const NNSSndArcSeqArcOffsetTable * table; - const NNSSndArcOffsetTable * symbolTable; - - NNS_NULL_ASSERT(arc); - - if (arc->symbol == NULL) { - return &null_string; - } - - table = (const NNSSndArcSeqArcOffsetTable *)GetPtrConst(arc->symbol, arc->symbol->seqArcOffset); - if (table == NULL) { - return &null_string; - } - - if (seqArcNo < 0) { - return &null_string; - } - if (seqArcNo >= table->count) { - return &null_string; - } - - symbolTable = (const NNSSndArcOffsetTable *)GetPtrConst(arc->symbol, table->offset[seqArcNo].table); - if (symbolTable == NULL) { - return &null_string; - } - - return GetSymbol(symbolTable, index, arc->symbol); -} - -const char * NNS_SndArcGetBankSymbol (int bankNo) { - NNSSndArc * arc = sCurrent; - const NNSSndArcOffsetTable * table; - - NNS_NULL_ASSERT(arc); - - if (arc->symbol == NULL) { - return &null_string; - } - - table = (const NNSSndArcOffsetTable *)GetPtrConst(arc->symbol, arc->symbol->bankOffset); - if (table == NULL) { - return &null_string; - } - - return GetSymbol(table, bankNo, arc->symbol); -} - -const char * NNS_SndArcGetWaveArcSymbol (int waveArcNo) { - NNSSndArc * arc = sCurrent; - const NNSSndArcOffsetTable * table; - - NNS_NULL_ASSERT(arc); - - if (arc->symbol == NULL) { - return &null_string; - } - - table = (const NNSSndArcOffsetTable *)GetPtrConst(arc->symbol, arc->symbol->waveArcOffset); - if (table == NULL) { - return &null_string; - } - - return GetSymbol(table, waveArcNo, arc->symbol); -} - -const char * NNS_SndArcGetStrmSymbol (int strmNo) { - NNSSndArc * arc = sCurrent; - const NNSSndArcOffsetTable * table; - - NNS_NULL_ASSERT(arc); - - if (arc->symbol == NULL) { - return &null_string; - } - - table = (const NNSSndArcOffsetTable *)GetPtrConst(arc->symbol, arc->symbol->strmOffset); - if (table == NULL) { - return &null_string; - } - - return GetSymbol(table, strmNo, arc->symbol); -} - -const char * NNS_SndArcGetGroupSymbol (int groupNo) { - NNSSndArc * arc = sCurrent; - const NNSSndArcOffsetTable * table; - - NNS_NULL_ASSERT(arc); - - if (arc->symbol == NULL) { - return &null_string; - } - - table = (const NNSSndArcOffsetTable *)GetPtrConst(arc->symbol, arc->symbol->groupOffset); - if (table == NULL) { - return &null_string; - } - - return GetSymbol(table, groupNo, arc->symbol); -} - -static const char * GetSymbol (const NNSSndArcOffsetTable * table, int index, const void * base) { - if (index < 0) { - return &null_string; - } - if (index >= table->count) { - return &null_string; - } - - if (table->offset[index] == 0) { - return &null_string; - } - - return (const char *)GetPtrConst(base, table->offset[index]); -} - -static void InfoDisposeCallback (void * mem, u32 size, u32 data1, u32 data2) { - NNSSndArc * arc = (NNSSndArc *)data1; - - (void)mem; - (void)size; - (void)data2; - - NNS_NULL_ASSERT(arc); - - arc->info = NULL; -} - -static void FatDisposeCallback (void * mem, u32 size, u32 data1, u32 data2) { - NNSSndArc * arc = (NNSSndArc *)data1; - int i; - - (void)mem; - (void)size; - (void)data2; - - NNS_NULL_ASSERT(arc); - NNS_NULL_ASSERT(arc->fat); - - for ( i = 0; i < arc->fat->count ; i++ ) { -#ifndef NNS_FROM_TOOL - NNS_ASSERTMSG( - arc->fat->files[i].mem == NULL, - "Cannot clear sndarc FAT block, because some file is on memory." - ); -#endif - } - - arc->fat = NULL; -} - -static void SymbolDisposeCallback (void * mem, u32 size, u32 data1, u32 data2) { - NNSSndArc * arc = (NNSSndArc *)data1; - - (void)mem; - (void)size; - (void)data2; - - NNS_NULL_ASSERT(arc); - - arc->symbol = NULL; -} diff --git a/subprojects/NitroSystem/libraries/snd/src/sndarc_loader.c b/subprojects/NitroSystem/libraries/snd/src/sndarc_loader.c deleted file mode 100644 index c70fbc369c..0000000000 --- a/subprojects/NitroSystem/libraries/snd/src/sndarc_loader.c +++ /dev/null @@ -1,588 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include - -#define RESERVED_AREASIZE 32 - -#define ROUNDUP(value, align) (((value) + ((align) - 1)) & ~((align) - 1)) -#define SNDHEAP_ALIGN(value) (ROUNDUP(value + RESERVED_AREASIZE, 32) + 32) - -static NNSSndSeqData * LoadSeq(u32 fileId, NNSSndHeapHandle heap, BOOL bSetAddr); -static NNSSndSeqArc * LoadSeqArc(u32 fileId, NNSSndHeapHandle heap, BOOL bSetAddr); -static SNDBankData * LoadBank(u32 fileId, NNSSndHeapHandle heap, BOOL bSetAddr); -static SNDWaveArc * LoadWaveArc(u32 fileId, NNSSndHeapHandle heap, BOOL bSetAddr); -static SNDWaveArc * LoadWaveArcTable(u32 fileId, NNSSndHeapHandle heap, BOOL bSetAddr); - -static BOOL LoadSingleWaves(SNDWaveArc * waveArc, const SNDBankData * bank, int waveArcNo, u32 fileId, NNSSndHeapHandle heap); -static BOOL LoadSingleWave(SNDWaveArc * waveArc, int waveNo, u32 fileId, NNSSndHeapHandle heap); - -static void DisposeCallback(void * mem, NNSSndArc * arc, u32 fileId); -static void SeqDisposeCallback(void * mem, u32 size, u32 data1, u32 data2); -static void BankDisposeCallback(void * mem, u32 size, u32 data1, u32 data2); -static void WaveArcDisposeCallback(void * mem, u32 size, u32 data1, u32 data2); -static void WaveArcTableDisposeCallback(void * mem, u32 size, u32 data1, u32 data2); -static void SingleWaveDisposeCallback(void * mem, u32 size, u32 data1, u32 data2); - -BOOL NNS_SndArcLoadGroup (int groupNo, NNSSndHeapHandle heap) { - NNSSndArcLoadResult result; - - result = NNSi_SndArcLoadGroup(groupNo, heap); - - return result == NNS_SND_ARC_LOAD_SUCESS ? TRUE : FALSE; -} - -BOOL NNS_SndArcLoadSeq (int seqNo, NNSSndHeapHandle heap) { - NNSSndArcLoadResult result; - - result = NNSi_SndArcLoadSeq(seqNo, NNS_SND_ARC_LOAD_ALL, heap, TRUE, NULL); - - return result == NNS_SND_ARC_LOAD_SUCESS ? TRUE : FALSE; -} - -BOOL NNS_SndArcLoadSeqArc (int seqArcNo, NNSSndHeapHandle heap) { - NNSSndArcLoadResult result; - - result = NNSi_SndArcLoadSeqArc(seqArcNo, NNS_SND_ARC_LOAD_ALL, heap, TRUE, NULL); - - return result == NNS_SND_ARC_LOAD_SUCESS ? TRUE : FALSE; -} - -BOOL NNS_SndArcLoadBank (int bankNo, NNSSndHeapHandle heap) { - NNSSndArcLoadResult result; - - result = NNSi_SndArcLoadBank(bankNo, NNS_SND_ARC_LOAD_ALL, heap, TRUE, NULL); - - return result == NNS_SND_ARC_LOAD_SUCESS ? TRUE : FALSE; -} - -BOOL NNS_SndArcLoadWaveArc (int waveArcNo, NNSSndHeapHandle heap) { - NNSSndArcLoadResult result; - - result = NNSi_SndArcLoadWaveArc(waveArcNo, NNS_SND_ARC_LOAD_ALL, heap, TRUE, NULL); - - return result == NNS_SND_ARC_LOAD_SUCESS ? TRUE : FALSE; -} - -BOOL NNS_SndArcLoadSeqEx (int seqNo, u32 loadFlag, NNSSndHeapHandle heap) { - NNSSndArcLoadResult result; - - result = NNSi_SndArcLoadSeq(seqNo, loadFlag, heap, TRUE, NULL); - - return result == NNS_SND_ARC_LOAD_SUCESS ? TRUE : FALSE; -} - -BOOL NNS_SndArcLoadBankEx (int bankNo, u32 loadFlag, NNSSndHeapHandle heap) { - NNSSndArcLoadResult result; - - result = NNSi_SndArcLoadBank(bankNo, loadFlag, heap, TRUE, NULL); - - return result == NNS_SND_ARC_LOAD_SUCESS ? TRUE : FALSE; -} - -NNSSndArcLoadResult NNSi_SndArcLoadGroup (int groupNo, NNSSndHeapHandle heap) { - const NNSSndArcGroupInfo * info; - const NNSSndArcGroupItem * item; - NNSSndArcLoadResult result; - int itemNo; - - info = NNS_SndArcGetGroupInfo(groupNo); - if (info == NULL) { - return NNS_SND_ARC_LOAD_ERROR_INVALID_GROUP_NO; - } - - for ( itemNo = 0; itemNo < info->count ; itemNo++ ) { - item = &info->item[itemNo]; - - switch (item->type) { - case NNS_SNDARC_SNDTYPE_SEQ: - result = NNSi_SndArcLoadSeq((int)(item->index), item->loadFlag, heap, TRUE, NULL); - if (result != NNS_SND_ARC_LOAD_SUCESS) { - return result; - } - break; - case NNS_SNDARC_SNDTYPE_SEQARC: - result = NNSi_SndArcLoadSeqArc((int)(item->index), item->loadFlag, heap, TRUE, NULL); - if (result != NNS_SND_ARC_LOAD_SUCESS) { - return result; - } - break; - case NNS_SNDARC_SNDTYPE_BANK: - result = NNSi_SndArcLoadBank((int)(item->index), item->loadFlag, heap, TRUE, NULL); - if (result != NNS_SND_ARC_LOAD_SUCESS) { - return result; - } - break; - case NNS_SNDARC_SNDTYPE_WAVEARC: - result = NNSi_SndArcLoadWaveArc((int)(item->index), item->loadFlag, heap, TRUE, NULL); - if (result != NNS_SND_ARC_LOAD_SUCESS) { - return result; - } - break; - default: - NNS_ASSERT(FALSE); - break; - } - } - - return NNS_SND_ARC_LOAD_SUCESS; -} - -NNSSndArcLoadResult NNSi_SndArcLoadSeq (int seqNo, u32 loadFlag, NNSSndHeapHandle heap, BOOL bSetAddr, struct NNSSndSeqData * * pData) { - const NNSSndArcSeqInfo * seqInfo; - NNSSndSeqData * seqData = NULL; - SNDBankData * bank = NULL; - NNSSndArcLoadResult result; - - seqInfo = NNS_SndArcGetSeqInfo(seqNo); - if (seqInfo == NULL) { - return NNS_SND_ARC_LOAD_ERROR_INVALID_SEQ_NO; - } - - result = NNSi_SndArcLoadBank(seqInfo->param.bankNo, loadFlag, heap, bSetAddr, NULL); - if (result != NNS_SND_ARC_LOAD_SUCESS) { - return result; - } - - if (loadFlag & NNS_SND_ARC_LOAD_SEQ) { - seqData = LoadSeq(seqInfo->fileId, heap, bSetAddr); - if (seqData == NULL) { - return NNS_SND_ARC_LOAD_ERROR_FAILED_LOAD_SEQ; - } - } else { - seqData = (NNSSndSeqData *)NNS_SndArcGetFileAddress(seqInfo->fileId); - } - - if (pData != NULL) { - *pData = seqData; - } - - return NNS_SND_ARC_LOAD_SUCESS; -} - -NNSSndArcLoadResult NNSi_SndArcLoadSeqArc (int seqArcNo, u32 loadFlag, NNSSndHeapHandle heap, BOOL bSetAddr, struct NNSSndSeqArc * * pData) { - const NNSSndArcSeqArcInfo * seqArcInfo; - NNSSndSeqArc * seqArc = NULL; - - seqArcInfo = NNS_SndArcGetSeqArcInfo(seqArcNo); - if (seqArcInfo == NULL) { - return NNS_SND_ARC_LOAD_ERROR_INVALID_SEQARC_NO; - } - - if (loadFlag & NNS_SND_ARC_LOAD_SEQARC) { - seqArc = LoadSeqArc(seqArcInfo->fileId, heap, bSetAddr); - if (seqArc == NULL) { - return NNS_SND_ARC_LOAD_ERROR_FAILED_LOAD_SEQARC; - } - } else { - seqArc = (NNSSndSeqArc *)NNS_SndArcGetFileAddress(seqArcInfo->fileId); - } - - if (pData != NULL) { - *pData = seqArc; - } - - return NNS_SND_ARC_LOAD_SUCESS; -} - -NNSSndArcLoadResult NNSi_SndArcLoadBank (int bankNo, u32 loadFlag, NNSSndHeapHandle heap, BOOL bSetAddr, struct SNDBankData * * pData) { - const NNSSndArcBankInfo * bankInfo; - const NNSSndArcWaveArcInfo * waveArcInfo; - SNDBankData * bank = NULL; - SNDWaveArc * waveArc; - NNSSndArcLoadResult result; - int i; - - bankInfo = NNS_SndArcGetBankInfo(bankNo); - if (bankInfo == NULL) { - return NNS_SND_ARC_LOAD_ERROR_INVALID_BANK_NO; - } - - if (loadFlag & NNS_SND_ARC_LOAD_BANK) { - bank = LoadBank(bankInfo->fileId, heap, bSetAddr); - if (bank == NULL) { - return NNS_SND_ARC_LOAD_ERROR_FAILED_LOAD_BANK; - } - } else { - bank = (SNDBankData *)NNS_SndArcGetFileAddress(bankInfo->fileId); - } - - for ( i = 0; i < NNS_SND_ARC_BANK_TO_WAVEARC_NUM ; i++ ) { - if (bankInfo->waveArcNo[i] == NNS_SND_ARC_INVALID_WAVEARC_NO) { - continue; - } - - waveArcInfo = NNS_SndArcGetWaveArcInfo(bankInfo->waveArcNo[i]); - if (waveArcInfo == NULL) { - return NNS_SND_ARC_LOAD_ERROR_INVALID_WAVEARC_NO; - } - - result = NNSi_SndArcLoadWaveArc(bankInfo->waveArcNo[i], loadFlag, heap, bSetAddr, &waveArc); - if (result != NNS_SND_ARC_LOAD_SUCESS) { - return result; - } - - if (waveArcInfo->flags & NNS_SND_ARC_WAVEARC_SINGLE_LOAD) { - if (loadFlag & NNS_SND_ARC_LOAD_WAVE) { - if (!LoadSingleWaves(waveArc, bank, i, waveArcInfo->fileId, heap)) { - return NNS_SND_ARC_LOAD_ERROR_FAILED_LOAD_WAVE; - } - } - } - - if (bank != NULL && waveArc != NULL) { - SND_AssignWaveArc(bank, i, waveArc); - } - } - - if (pData != NULL) { - *pData = bank; - } - - return NNS_SND_ARC_LOAD_SUCESS; -} - -NNSSndArcLoadResult NNSi_SndArcLoadWaveArc (int waveArcNo, u32 loadFlag, NNSSndHeapHandle heap, BOOL bSetAddr, struct SNDWaveArc * * pData) { - const NNSSndArcWaveArcInfo * waveArcInfo; - SNDWaveArc * waveArc = NULL; - - waveArcInfo = NNS_SndArcGetWaveArcInfo(waveArcNo); - if (waveArcInfo == NULL) { - return NNS_SND_ARC_LOAD_ERROR_INVALID_WAVEARC_NO; - } - - if (loadFlag & NNS_SND_ARC_LOAD_WAVE) { - if (waveArcInfo->flags & NNS_SND_ARC_WAVEARC_SINGLE_LOAD) { - waveArc = LoadWaveArcTable(waveArcInfo->fileId, heap, bSetAddr); - } else { - waveArc = LoadWaveArc(waveArcInfo->fileId, heap, bSetAddr); - } - - if (waveArc == NULL) { - return NNS_SND_ARC_LOAD_ERROR_FAILED_LOAD_WAVE; - } - } else { - waveArc = (SNDWaveArc *)NNS_SndArcGetFileAddress(waveArcInfo->fileId); - } - - if (pData != NULL) { - *pData = waveArc; - } - - return NNS_SND_ARC_LOAD_SUCESS; -} - -void * NNSi_SndArcLoadFile (u32 fileId, NNSSndHeapDisposeCallback callback, u32 data1, u32 data2, NNSSndHeapHandle heap) { - void * buffer; - u32 len; - - len = NNS_SndArcGetFileSize(fileId); - if (len == 0) { - return NULL; - } - - if (heap == NNS_SND_HEAP_INVALID_HANDLE) { - return NULL; - } - - buffer = NNS_SndHeapAlloc(heap, len + RESERVED_AREASIZE, callback, data1, data2); - if (buffer == NULL) { - return NULL; - } - - if (NNS_SndArcReadFile(fileId, buffer, (s32)len, 0) != len) { - return NULL; - } - - DC_StoreRange(buffer, len); - - return buffer; -} - -static NNSSndSeqData * LoadSeq (u32 fileId, NNSSndHeapHandle heap, BOOL bSetAddr) { - void * buffer; - - buffer = NNS_SndArcGetFileAddress(fileId); - if (buffer == NULL) { - buffer = NNSi_SndArcLoadFile( - fileId, - SeqDisposeCallback, - bSetAddr ? (u32)NNS_SndArcGetCurrent() : 0, - fileId, - heap - ); - - if (bSetAddr && buffer != NULL) { - NNS_SndArcSetFileAddress(fileId, buffer); - } - } - - return (NNSSndSeqData *)buffer; -} - -static NNSSndSeqArc * LoadSeqArc (u32 fileId, NNSSndHeapHandle heap, BOOL bSetAddr) { - void * buffer; - - buffer = NNS_SndArcGetFileAddress(fileId); - if (buffer == NULL) { - buffer = NNSi_SndArcLoadFile( - fileId, - SeqDisposeCallback, - bSetAddr ? (u32)NNS_SndArcGetCurrent() : 0, - fileId, - heap - ); - - if (bSetAddr && buffer != NULL) { - NNS_SndArcSetFileAddress(fileId, buffer); - } - } - - return (NNSSndSeqArc *)buffer; -} - -static SNDBankData * LoadBank (u32 fileId, NNSSndHeapHandle heap, BOOL bSetAddr) { - void * buffer; - - buffer = NNS_SndArcGetFileAddress(fileId); - if (buffer == NULL) { - buffer = NNSi_SndArcLoadFile( - fileId, - BankDisposeCallback, - bSetAddr ? (u32)NNS_SndArcGetCurrent() : 0, - fileId, - heap - ); - - if (bSetAddr && buffer != NULL) { - NNS_SndArcSetFileAddress(fileId, buffer); - } - } - - return (SNDBankData *)buffer; -} - -static SNDWaveArc * LoadWaveArc (u32 fileId, NNSSndHeapHandle heap, BOOL bSetAddr) { - void * buffer; - - buffer = NNS_SndArcGetFileAddress(fileId); - if (buffer == NULL) { - buffer = NNSi_SndArcLoadFile( - fileId, - WaveArcDisposeCallback, - bSetAddr ? (u32)NNS_SndArcGetCurrent() : 0, - fileId, - heap - ); - - if (bSetAddr && buffer != NULL) { - NNS_SndArcSetFileAddress(fileId, buffer); - } - } - - return (SNDWaveArc *)buffer; -} - -static SNDWaveArc * LoadWaveArcTable (u32 fileId, NNSSndHeapHandle heap, BOOL bSetAddr) { - static SNDWaveArc waveArcHeader; - SNDWaveArc * waveArc; - u32 len; - u32 tableSize; - s32 readSize; - - waveArc = (SNDWaveArc *)NNS_SndArcGetFileAddress(fileId); - if (waveArc == NULL) { - readSize = NNS_SndArcReadFile(fileId, &waveArcHeader, sizeof(waveArcHeader), 0); - if (readSize != sizeof(waveArcHeader)) { - return NULL; - } - - tableSize = sizeof(u32) * waveArcHeader.waveCount; - len = sizeof(waveArcHeader) + tableSize * 2; - - if (heap == NNS_SND_HEAP_INVALID_HANDLE) { - return NULL; - } - - waveArc = (SNDWaveArc *)NNS_SndHeapAlloc( - heap, - len + RESERVED_AREASIZE, - WaveArcTableDisposeCallback, - bSetAddr ? (u32)NNS_SndArcGetCurrent() : 0, - fileId - ); - if (waveArc == NULL) { - return NULL; - } - - readSize = NNS_SndArcReadFile( - fileId, - waveArc, - (s32)(sizeof(waveArcHeader) + tableSize), - 0 - ); - if (readSize != sizeof(waveArcHeader) + tableSize) { - return NULL; - } - - MI_CpuCopy8(waveArc->waveOffset, &waveArc->waveOffset[waveArc->waveCount], tableSize); - - MI_CpuClear8(waveArc->waveOffset, tableSize); - - DC_StoreRange(waveArc, len); - - if (bSetAddr) { - NNS_SndArcSetFileAddress(fileId, waveArc); - } - } - - return waveArc; -} - -static void DisposeCallback (void * mem, NNSSndArc * arc, u32 fileId) { - NNSSndArc * oldArc; - OSIntrMode old; - - if (arc == NULL) { - return; - } - - old = OS_DisableInterrupts(); - - oldArc = NNS_SndArcSetCurrent(arc); - - if (mem == NNS_SndArcGetFileAddress(fileId)) { - NNS_SndArcSetFileAddress(fileId, NULL); - } - - (void)NNS_SndArcSetCurrent(oldArc); - - (void)OS_RestoreInterrupts(old); -} - -static void SeqDisposeCallback (void * mem, u32 size, u32 data1, u32 data2) { - NNSSndArc * arc = (NNSSndArc *)data1; - u32 fileId = data2; - - DisposeCallback(mem, arc, fileId); - SND_InvalidateSeqData(mem, (u8 *)mem + size); -} - -static void BankDisposeCallback (void * mem, u32 size, u32 data1, u32 data2) { - SNDBankData * bank = (SNDBankData *)mem; - NNSSndArc * arc = (NNSSndArc *)data1; - u32 fileId = data2; - - DisposeCallback(mem, arc, fileId); - SND_InvalidateBankData(mem, (u8 *)mem + size); - - SND_DestroyBank(bank); -} - -static void WaveArcDisposeCallback (void * mem, u32 size, u32 data1, u32 data2) { - SNDWaveArc * waveArc = (SNDWaveArc *)mem; - NNSSndArc * arc = (NNSSndArc *)data1; - u32 fileId = data2; - - DisposeCallback(mem, arc, fileId); - SND_InvalidateWaveData(mem, (u8 *)mem + size); - - SND_DestroyWaveArc(waveArc); -} - -static void WaveArcTableDisposeCallback (void * mem, u32 size, u32 data1, u32 data2) { - SNDWaveArc * waveArc = (SNDWaveArc *)mem; - NNSSndArc * arc = (NNSSndArc *)data1; - u32 fileId = data2; - - (void)size; - - DisposeCallback(mem, arc, fileId); - - SND_DestroyWaveArc(waveArc); -} - -static void SingleWaveDisposeCallback (void * mem, u32 size, u32 data1, u32 data2) { - SNDWaveArc * waveArc = (SNDWaveArc *)data1; - u32 waveNo = data2; - - if (mem == SND_GetWaveDataAddress(waveArc, (int)waveNo)) { - SND_SetWaveDataAddress(waveArc, (int)waveNo, NULL); - } - - SND_InvalidateWaveData(mem, (u8 *)mem + size); -} - -static BOOL LoadSingleWave (SNDWaveArc * waveArc, int waveNo, u32 fileId, NNSSndHeapHandle heap) { - SNDWaveData * buffer; - u32 len; - u32 begin; - u32 end; - u32 waveCount; - - NNS_MINMAX_ASSERT(waveNo, 0, SND_GetWaveDataCount(waveArc) - 1); - - if (SND_GetWaveDataAddress(waveArc, waveNo) != NULL) { - return TRUE; - } - - waveCount = SND_GetWaveDataCount(waveArc); - - begin = waveArc->waveOffset[waveArc->waveCount + waveNo]; - if (waveNo < waveCount - 1) { - end = waveArc->waveOffset[waveArc->waveCount + waveNo + 1]; - } else { - end = waveArc->fileHeader.fileSize; - } - len = end - begin; - - if (heap == NNS_SND_HEAP_INVALID_HANDLE) { - return FALSE; - } - - buffer = (SNDWaveData *)NNS_SndHeapAlloc( - heap, - len + RESERVED_AREASIZE, - SingleWaveDisposeCallback, - (u32)waveArc, - (u32)waveNo - ); - if (buffer == NULL) { - return FALSE; - } - - if (NNS_SndArcReadFile(fileId, buffer, (s32)len, (s32)begin) != len) { - return FALSE; - } - - DC_StoreRange(buffer, len); - - SND_SetWaveDataAddress(waveArc, waveNo, buffer); - - return TRUE; -} - -BOOL LoadSingleWaves (SNDWaveArc * waveArc, const SNDBankData * bank, int waveArcNo, u32 fileId, NNSSndHeapHandle heap) { - SNDInstPos pos = SND_GetFirstInstDataPos(bank); - SNDInstData inst; - - NNS_NULL_ASSERT(waveArc); - - if (bank == NULL) { - NNS_WARNING(bank != NULL, "Cannot load single wave data because the bank data is not on Memory."); - return FALSE; - } - - while (SND_GetNextInstData(bank, &inst, &pos)) { - if (inst.type == SND_INST_PCM && waveArcNo == inst.param.wave[1]) { - if (!LoadSingleWave(waveArc, inst.param.wave[0], fileId, heap)) { - return FALSE; - } - } - } - - return TRUE; -} diff --git a/subprojects/NitroSystem/libraries/snd/src/sndarc_player.c b/subprojects/NitroSystem/libraries/snd/src/sndarc_player.c deleted file mode 100644 index 936d35ee82..0000000000 --- a/subprojects/NitroSystem/libraries/snd/src/sndarc_player.c +++ /dev/null @@ -1,230 +0,0 @@ -#include -#include -#include -#include -#include - -static BOOL StartSeq(NNSSndHandle * handle, int playerNo, int bankNo, int playerPrio, const NNSSndArcSeqInfo * info, int seqNo); -static BOOL StartSeqArc(NNSSndHandle * handle, int playerNo, int bankNo, int playerPrio, const NNSSndSeqArcSeqInfo * sound, const NNSSndSeqArc * seqArc, int seqArcNo, int index); - -BOOL NNS_SndArcPlayerSetup (NNSSndHeapHandle heap) { - NNSSndArc * arc = NNS_SndArcGetCurrent(); - int playerNo; - const NNSSndArcPlayerInfo * playerInfo; - - NNS_NULL_ASSERT(arc); - - for ( playerNo = 0; playerNo < NNS_SND_PLAYER_NUM ; ++playerNo ) { - playerInfo = NNS_SndArcGetPlayerInfo(playerNo); - if (playerInfo == NULL) { - continue; - } - - NNS_SndPlayerSetPlayableSeqCount(playerNo, playerInfo->seqMax); - NNS_SndPlayerSetAllocatableChannel(playerNo, playerInfo->allocChBitFlag); - - if (playerInfo->heapSize > 0 && heap != NNS_SND_HEAP_INVALID_HANDLE) { - int i; - - for ( i = 0; i < playerInfo->seqMax ; i++ ) { - if (!NNS_SndPlayerCreateHeap(playerNo, heap, playerInfo->heapSize)) { - return FALSE; - } - } - } - } - - return TRUE; -} - -BOOL NNS_SndArcPlayerStartSeq (NNSSndHandle * handle, int seqNo) { - const NNSSndArcSeqInfo * info; - - NNS_NULL_ASSERT(handle); - - info = NNS_SndArcGetSeqInfo(seqNo); - if (info == NULL) { - return FALSE; - } - - return StartSeq( - handle, - info->param.playerNo, - info->param.bankNo, - info->param.playerPrio, - info, - seqNo - ); -} - -BOOL NNS_SndArcPlayerStartSeqEx (NNSSndHandle * handle, int playerNo, int bankNo, int playerPrio, int seqNo) { - const NNSSndArcSeqInfo * info; - - NNS_NULL_ASSERT(handle); - NNS_MAX_ASSERT(playerNo, NNS_SND_PLAYER_NUM - 1); - NNS_MAX_ASSERT(playerPrio, NNS_SND_PLAYER_PRIO_MAX); - - info = NNS_SndArcGetSeqInfo(seqNo); - if (info == NULL) { - return FALSE; - } - - return StartSeq( - handle, - playerNo >= 0 ? playerNo : info->param.playerNo, - bankNo >= 0 ? bankNo : info->param.bankNo, - playerPrio >= 0 ? playerPrio : info->param.playerPrio, - info, - seqNo - ); -} - -BOOL NNS_SndArcPlayerStartSeqArc (NNSSndHandle * handle, int seqArcNo, int index) { - const NNSSndArcSeqArcInfo * info; - const NNSSndSeqArcSeqInfo * sound; - const NNSSndSeqArc * seqArc; - - NNS_NULL_ASSERT(handle); - - info = NNS_SndArcGetSeqArcInfo(seqArcNo); - if (info == NULL) { - return FALSE; - } - seqArc = (NNSSndSeqArc *)NNS_SndArcGetFileAddress(info->fileId); - if (seqArc == NULL) { - return FALSE; - } - sound = NNSi_SndSeqArcGetSeqInfo(seqArc, index); - if (sound == NULL) { - return FALSE; - } - - return StartSeqArc( - handle, - sound->param.playerNo, - sound->param.bankNo, - sound->param.playerPrio, - sound, - seqArc, - seqArcNo, - index - ); -} - -BOOL NNS_SndArcPlayerStartSeqArcEx (NNSSndHandle * handle, int playerNo, int bankNo, int playerPrio, int seqArcNo, int index) { - const NNSSndArcSeqArcInfo * info; - const NNSSndSeqArc * seqArc; - const NNSSndSeqArcSeqInfo * sound; - - NNS_NULL_ASSERT(handle); - NNS_MAX_ASSERT(playerNo, NNS_SND_PLAYER_NUM - 1); - NNS_MAX_ASSERT(playerPrio, NNS_SND_PLAYER_PRIO_MAX); - - info = NNS_SndArcGetSeqArcInfo(seqArcNo); - if (info == NULL) { - return FALSE; - } - seqArc = (NNSSndSeqArc *)NNS_SndArcGetFileAddress(info->fileId); - if (seqArc == NULL) { - return FALSE; - } - sound = NNSi_SndSeqArcGetSeqInfo(seqArc, index); - if (sound == NULL) { - return FALSE; - } - - return StartSeqArc( - handle, - playerNo >= 0 ? playerNo : sound->param.playerNo, - bankNo >= 0 ? bankNo : sound->param.bankNo, - playerPrio >= 0 ? playerPrio : sound->param.playerPrio, - sound, - seqArc, - seqArcNo, - index - ); -} - -static BOOL StartSeq (NNSSndHandle * handle, int playerNo, int bankNo, int playerPrio, const NNSSndArcSeqInfo * info, int seqNo) { - NNSSndSeqPlayer * player; - NNSSndHeapHandle heap; - NNSSndSeqData * seq; - SNDBankData * bank; - NNSSndArcLoadResult result; - - NNS_NULL_ASSERT(handle); - NNS_MINMAX_ASSERT(playerNo, 0, NNS_SND_PLAYER_NO_MAX); - NNS_MINMAX_ASSERT(playerPrio, 0, NNS_SND_PLAYER_PRIO_MAX); - NNS_NULL_ASSERT(info); - - player = NNSi_SndPlayerAllocSeqPlayer(handle, playerNo, playerPrio); - if (player == NULL) { - return FALSE; - } - - heap = NNSi_SndPlayerAllocHeap(playerNo, player); - - result = NNSi_SndArcLoadBank(bankNo, NNS_SND_ARC_LOAD_BANK | NNS_SND_ARC_LOAD_WAVE, heap, FALSE, &bank); - if (result != NNS_SND_ARC_LOAD_SUCESS) { - NNSi_SndPlayerFreeSeqPlayer(player); - return FALSE; - } - - result = NNSi_SndArcLoadSeq(seqNo, NNS_SND_ARC_LOAD_SEQ, heap, FALSE, &seq); - if (result != NNS_SND_ARC_LOAD_SUCESS) { - NNSi_SndPlayerFreeSeqPlayer(player); - return FALSE; - } - - NNSi_SndPlayerStartSeq( - player, - (u8 *)seq + seq->baseOffset, - 0, - bank - ); - - NNS_SndPlayerSetInitialVolume(handle, info->param.volume); - NNS_SndPlayerSetChannelPriority(handle, info->param.channelPrio); - NNS_SndPlayerSetSeqNo(handle, seqNo); - - return TRUE; -} - -static BOOL StartSeqArc (NNSSndHandle * handle, int playerNo, int bankNo, int playerPrio, const NNSSndSeqArcSeqInfo * sound, const NNSSndSeqArc * seqArc, int seqArcNo, int index) { - NNSSndSeqPlayer * player; - NNSSndHeapHandle heap; - SNDBankData * bank; - NNSSndArcLoadResult result; - - NNS_NULL_ASSERT(handle); - NNS_MINMAX_ASSERT(playerNo, 0, NNS_SND_PLAYER_NO_MAX); - NNS_MINMAX_ASSERT(playerPrio, 0, NNS_SND_PLAYER_PRIO_MAX); - NNS_NULL_ASSERT(sound); - NNS_NULL_ASSERT(seqArc); - - player = NNSi_SndPlayerAllocSeqPlayer(handle, playerNo, playerPrio); - if (player == NULL) { - return FALSE; - } - - heap = NNSi_SndPlayerAllocHeap(playerNo, player); - - result = NNSi_SndArcLoadBank(bankNo, NNS_SND_ARC_LOAD_BANK | NNS_SND_ARC_LOAD_WAVE, heap, FALSE, &bank); - if (result != NNS_SND_ARC_LOAD_SUCESS) { - NNSi_SndPlayerFreeSeqPlayer(player); - return FALSE; - } - - NNSi_SndPlayerStartSeq( - player, - (u8 *)seqArc + seqArc->baseOffset, - sound->offset, - bank - ); - - NNS_SndPlayerSetInitialVolume(handle, sound->param.volume); - NNS_SndPlayerSetChannelPriority(handle, sound->param.channelPrio); - NNS_SndPlayerSetSeqArcNo(handle, seqArcNo, index); - - return TRUE; -} diff --git a/subprojects/NitroSystem/libraries/snd/src/sndarc_stream.c b/subprojects/NitroSystem/libraries/snd/src/sndarc_stream.c deleted file mode 100644 index 5b09e468ce..0000000000 --- a/subprojects/NitroSystem/libraries/snd/src/sndarc_stream.c +++ /dev/null @@ -1,1505 +0,0 @@ -#ifndef SDK_SMALL_BUILD - -#include -#include -#include -#include -#include -#include - -#define BLOCK_SIZE 512 -#define BLOCK_NUM 4 - -#define COMMAND_BUFFER_NUM (NNS_SND_STRM_PLAYER_NUM * (BLOCK_NUM - 2)) - -#define ADPCM_INDEX_NUM 89 - -#define STRM_CHANNEL_MAX 6 - -struct NNSSndStrmPlayer; - -typedef BOOL (* OpenStreamFunc)(struct NNSSndStrmPlayer * player, u32 fileId); -typedef void (* CloseStreamFunc)(struct NNSSndStrmPlayer * player); -typedef s32 (* ReadStreamFunc)(struct NNSSndStrmPlayer * player, void * dest, u32 size, u32 offset); -typedef void (* CancelStreamFunc)(struct NNSSndStrmPlayer * player); - -typedef struct NNSSndStrmData { - struct SNDBinaryFileHeader fileHeader; - struct SNDBinaryBlockHeader blockHeader; - - u8 format; - u8 loopFlag; - u8 numChannels; - u8 pad_; - u16 sampleRate; - u16 timer; - u32 loopStart; - u32 loopEnd; - u32 dataOffset; - u32 numBlocks; - u32 blockSize; - u32 blockSamples; - u32 lastBlockSize; - u32 lastBlockSamples; -} NNSSndStrmData; - -typedef enum StrmFormat { - STRM_FORMAT_PCM8, - STRM_FORMAT_PCM16, - STRM_FORMAT_ADPCM -} StrmFormat; - -typedef struct AdpcmState { - s16 prevSample; - u8 prevIndex; - u8 padding; -} AdpcmState; - -typedef struct NNSSndStrmPlayer { - NNSSndStrm stream; - FSFile file; - u32 fileOffset; - NNSSndStrmData info; - NNSSndFader fader; - AdpcmState adpcmState[STRM_CHANNEL_MAX]; - - BOOL activeFlag : 1; - BOOL playFlag : 1; - BOOL startFlag : 1; - BOOL fadeOutFlag : 1; - BOOL dirtyFlag : 1; - BOOL finishFlag : 1; - BOOL monoFlag : 1; - volatile int finishCounter; - volatile BOOL prepareFlag; - volatile int commandCount; - int allocChannelCount; - - u8 numChannels; - u8 padding; - u8 chNoList[STRM_CHANNEL_MAX]; - void * buffer; - u32 bufSize; - - NNSSndStrmCallback strmCallback; - void * strmCallbackArg; - NNSSndArcStrmCallback sndArcStrmCallback; - void * sndArcStrmCallbackArg; - - int strmNo; - int playerNo; - - NNSSndStrmHandle * handle; - int prio; - int initVolume; - int extVolume; - int volume; - u32 curSample; - - OpenStreamFunc openStreamFunc; - CloseStreamFunc closeStreamFunc; - ReadStreamFunc readStreamFunc; - CancelStreamFunc cancelStreamFunc; -} NNSSndStrmPlayer; - -typedef struct LoadCommand { - NNSFndLink link; - NNSSndStrmPlayer * player; - NNSSndStrmCallbackStatus status; - int numChannels; - void * buffer[STRM_CHANNEL_MAX]; - u32 bufLen; -} LoadCommand; - -static const s8 cAdpcmIndexTable[16] = -{ - -1, -1, -1, -1, 2, 4, 6, 8, - -1, -1, -1, -1, 2, 4, 6, 8, -}; - -static const s16 cAdpcmStepSizeTable[ADPCM_INDEX_NUM] = -{ - 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, - 19, 21, 23, 25, 28, 31, 34, 37, 41, 45, - 50, 55, 60, 66, 73, 80, 88, 97, 107, 118, - 130, 143, 157, 173, 190, 209, 230, 253, 279, 307, - 337, 371, 408, 449, 494, 544, 598, 658, 724, 796, - 876, 963, 1060, 1166, 1282, 1411, 1552, 1707, 1878, 2066, - 2272, 2499, 2749, 3024, 3327, 3660, 4026, 4428, 4871, 5358, - 5894, 6484, 7132, 7845, 8630, 9493, 10442, 11487, 12635, 13899, - 15289, 16818, 18500, 20350, 22385, 24623, 27086, 29794, 32767 -}; - -static NNSSndStrmThread sStrmThread; -static NNSSndStrmThread * sPrepareThread = NULL; - -static NNSFndList sFreeCommandList; -static LoadCommand sLoadCommandBuffer[COMMAND_BUFFER_NUM]; - -static NNSSndStrmPlayer sStrmPlayer[NNS_SND_STRM_PLAYER_NUM]; - -static u8 * sDecodeBuffer; -static u8 sDecodeBufferArea[BLOCK_SIZE] ATTRIBUTE_ALIGN(32); -static OSMutex sDecodeBufferMutex; - -static void StrmThread(void * arg); -static NNSSndStrmPlayer * AllocPlayer(NNSSndStrmHandle * handle, int playerNo, int playerPrio); -static void FreePlayer(NNSSndStrmPlayer * player); -static BOOL PrepareStrm(NNSSndStrmHandle * handle, const NNSSndArcStrmInfo * strmInfo, int playerNo, int playerPrio, int strmNo, u32 offset, NNSSndStrmCallback strmCallback, void * strmCallbackArg, NNSSndArcStrmCallback sndArcStrmCallback, void * sndArcStrmCallbackArg); -static void StopStrm(NNSSndStrmPlayer * player, int fadeFrame); -static void ForceStopStrm(NNSSndStrmPlayer * player); -static void ShutdownPlayer(NNSSndStrmPlayer * player); -static BOOL AllocChannel(NNSSndStrmPlayer * player, int numChannels, const u8 chNoList[]); -static void FreeChannel(NNSSndStrmPlayer * player); -static LoadCommand * ReadCommandBuffer(NNSFndList * commandList); -static LoadCommand * AllocCommandBuffer(void); -static void FreeCommandBuffer(LoadCommand * command); -static s16 DecodeAdpcm(int code, AdpcmState * state); -static void StrmCallback(NNSSndStrmCallbackStatus status, int numChannels, void * buffer[], u32 len, NNSSndStrmFormat format, void * arg); -static void DisposeCallback(void * mem, u32 size, u32 data1, u32 data2); -static void CreateThread(NNSSndStrmThread * thread, u32 threadPrio); -static void RemoveCommandByPlayer(NNSFndList * commandList, const NNSSndStrmPlayer * player); -static void MakeWaveData(LoadCommand * command); -static void OnDataEnd(NNSSndStrmPlayer * player); - -static void SetupStreamFunction(NNSSndStrmPlayer * player, u32 fileId); - -static BOOL OpenFileStream(NNSSndStrmPlayer * player, u32 fileId); -static void CloseFileStream(NNSSndStrmPlayer * player); -static s32 ReadFileStream(NNSSndStrmPlayer * player, void * dest, u32 size, u32 offset); -static void CancelFileStream(NNSSndStrmPlayer * player); - -static BOOL OpenMemoryStream(NNSSndStrmPlayer * player, u32 fileId); -static void CloseMemoryStream(NNSSndStrmPlayer * player); -static s32 ReadMemoryStream(NNSSndStrmPlayer * player, void * dest, u32 size, u32 offset); -static void CancelMemoryStream(NNSSndStrmPlayer * player); - -static NNS_SND_INLINE s16 DecodeAdpcm (int code, AdpcmState * state) { - int step; - int sample; - int index; - int d; - - sample = state->prevSample; - index = state->prevIndex; - - step = cAdpcmStepSizeTable[index]; - - d = step >> 3; - if (code & 4) { - d += step; - } - if (code & 2) { - d += step >> 1; - } - if (code & 1) { - d += step >> 2; - } - - if (code & 8) { - sample -= d; - if (sample < -32768) { - sample = -32768; - } - } else { - sample += d; - if (sample > 32767) { - sample = 32767; - } - } - - index += cAdpcmIndexTable[code]; - - if (index < 0) { - index = 0; - } else if (index > ADPCM_INDEX_NUM - 1) { - index = ADPCM_INDEX_NUM - 1; - } - - state->prevSample = (s16)sample; - state->prevIndex = (u8)index; - - return (s16)sample; -} - -void NNS_SndArcStrmInit (u32 threadPrio, NNSSndHeapHandle heap) { - int playerNo; - NNSSndStrmPlayer * player; - int i; - BOOL result; - - NNS_ASSERT(OS_IsThreadAvailable()); - - { - static BOOL initialized = FALSE; - if (initialized) { - result = NNS_SndArcStrmSetupPlayer(heap); - NNS_ASSERT(result); - return; - } - initialized = TRUE; - } - - NNS_FND_INIT_LIST(&sFreeCommandList, LoadCommand, link); - for ( i = 0 ; i < COMMAND_BUFFER_NUM ; i++ ) { - NNS_FndAppendListObject(&sFreeCommandList, &sLoadCommandBuffer[i]); - } - - OS_InitMutex(&sDecodeBufferMutex); - sDecodeBuffer = sDecodeBufferArea; - - for ( playerNo = 0; playerNo < NNS_SND_STRM_PLAYER_NUM ; ++playerNo ) { - player = &sStrmPlayer[playerNo]; - - player->activeFlag = FALSE; - FS_InitFile(&player->file); - - NNS_SndStrmInit(&player->stream); - - player->playerNo = playerNo; - - player->numChannels = 0; - player->buffer = NULL; - player->bufSize = 0; - - player->allocChannelCount = 0; - } - - result = NNS_SndArcStrmSetupPlayer(heap); - NNS_ASSERT(result); - - CreateThread(&sStrmThread, threadPrio); -} - -BOOL NNS_SndArcStrmSetupPlayer (NNSSndHeapHandle heap) { - int playerNo; - const NNSSndArcStrmPlayerInfo * playerInfo; - NNSSndStrmPlayer * player; - void * buffer; - u32 bufSize; - int i; - - for ( playerNo = 0; playerNo < NNS_SND_STRM_PLAYER_NUM ; ++playerNo ) { - player = &sStrmPlayer[playerNo]; - - playerInfo = NNS_SndArcGetStrmPlayerInfo(playerNo); - if (playerInfo == NULL) { - continue; - } - - player->numChannels = playerInfo->numChannels; - for ( i = 0 ; i < playerInfo->numChannels ; i++ ) { - player->chNoList[i] = playerInfo->chNoList[i]; - } - - if (heap != NNS_SND_HEAP_INVALID_HANDLE) { - bufSize = (unsigned long)(BLOCK_SIZE * BLOCK_NUM * player->numChannels); - buffer = NNS_SndHeapAlloc(heap, bufSize, DisposeCallback, (u32)player, 0); - if (buffer == NULL) { - return FALSE; - } - - ForceStopStrm(player); - - player->buffer = buffer; - player->bufSize = bufSize; - } - } - - return TRUE; -} - -void NNS_SndArcStrmCreatePrepareThread (NNSSndStrmThread * thread, u32 threadPrio) { - if (sPrepareThread != NULL) { - return; - } - - CreateThread(thread, threadPrio); - - sPrepareThread = thread; -} - -BOOL NNS_SndArcStrmPrepare (struct NNSSndStrmHandle * handle, int strmNo, u32 offset) { - const NNSSndArcStrmInfo * strmInfo; - - NNS_NULL_ASSERT(handle); - - strmInfo = NNS_SndArcGetStrmInfo(strmNo); - if (strmInfo == NULL) { - return FALSE; - } - - return PrepareStrm( - handle, - strmInfo, - strmInfo->playerNo, - strmInfo->playerPrio, - strmNo, - offset, - NULL, - NULL, - NULL, - NULL - ); -} - -BOOL NNS_SndArcStrmPrepareEx (struct NNSSndStrmHandle * handle, int playerNo, int playerPrio, int strmNo, u32 offset) { - const NNSSndArcStrmInfo * strmInfo; - - NNS_NULL_ASSERT(handle); - - strmInfo = NNS_SndArcGetStrmInfo(strmNo); - if (strmInfo == NULL) { - return FALSE; - } - - return PrepareStrm( - handle, - strmInfo, - playerNo >= 0 ? playerNo : strmInfo->playerNo, - playerPrio >= 0 ? playerPrio : strmInfo->playerPrio, - strmNo, - offset, - NULL, - NULL, - NULL, - NULL - ); -} - -BOOL NNS_SndArcStrmPrepareEx2 (struct NNSSndStrmHandle * handle, int playerNo, int playerPrio, int strmNo, u32 offset, NNSSndStrmCallback strmCallback, void * strmCallbackArg, NNSSndArcStrmCallback sndArcStrmCallback, void * sndArcStrmCallbackArg) { - const NNSSndArcStrmInfo * strmInfo; - - NNS_NULL_ASSERT(handle); - - strmInfo = NNS_SndArcGetStrmInfo(strmNo); - if (strmInfo == NULL) { - return FALSE; - } - - return PrepareStrm( - handle, - strmInfo, - playerNo >= 0 ? playerNo : strmInfo->playerNo, - playerPrio >= 0 ? playerPrio : strmInfo->playerPrio, - strmNo, - offset, - strmCallback, - strmCallbackArg, - sndArcStrmCallback, - sndArcStrmCallbackArg - ); -} - -void NNS_SndArcStrmStartPrepared (NNSSndStrmHandle * handle) { - NNS_NULL_ASSERT(handle); - - if (!NNS_SndStrmHandleIsValid(handle)) { - return; - } - - handle->player->startFlag = TRUE; -} - -BOOL NNS_SndArcStrmIsPrepared (NNSSndStrmHandle * handle) { - NNS_NULL_ASSERT(handle); - - if (!NNS_SndStrmHandleIsValid(handle)) { - return FALSE; - } - - return handle->player->prepareFlag; -} - -BOOL NNS_SndArcStrmStart (NNSSndStrmHandle * handle, int strmNo, u32 offset) { - BOOL result; - - NNS_NULL_ASSERT(handle); - - result = NNS_SndArcStrmPrepare(handle, strmNo, offset); - if (!result) { - return FALSE; - } - - NNS_SndArcStrmStartPrepared(handle); - - return TRUE; -} - -BOOL NNS_SndArcStrmStartEx (NNSSndStrmHandle * handle, int playerNo, int playerPrio, int strmNo, u32 offset) { - BOOL result; - - NNS_NULL_ASSERT(handle); - - result = NNS_SndArcStrmPrepareEx(handle, playerNo, playerPrio, strmNo, offset); - if (!result) { - return FALSE; - } - - NNS_SndArcStrmStartPrepared(handle); - - return TRUE; -} - -BOOL NNS_SndArcStrmStartEx2 (NNSSndStrmHandle * handle, int playerNo, int playerPrio, int strmNo, u32 offset, NNSSndStrmCallback strmCallback, void * strmCallbackArg, NNSSndArcStrmCallback sndArcStrmCallback, void * sndArcStrmCallbackArg) { - BOOL result; - - NNS_NULL_ASSERT(handle); - - result = NNS_SndArcStrmPrepareEx2( - handle, - playerNo, - playerPrio, - strmNo, - offset, - strmCallback, - strmCallbackArg, - sndArcStrmCallback, - sndArcStrmCallbackArg - ); - if (!result) { - return FALSE; - } - - NNS_SndArcStrmStartPrepared(handle); - - return TRUE; -} - -void NNS_SndArcStrmStop (NNSSndStrmHandle * handle, int fadeFrame) { - NNS_NULL_ASSERT(handle); - - if (!NNS_SndStrmHandleIsValid(handle)) { - return; - } - - StopStrm(handle->player, fadeFrame); -} - -void NNS_SndArcStrmStopAll (int fadeFrame) { - int playerNo; - - for ( playerNo = 0; playerNo < NNS_SND_STRM_PLAYER_NUM ; ++playerNo ) { - if (!sStrmPlayer[playerNo].activeFlag) { - continue; - } - - StopStrm(&sStrmPlayer[playerNo], fadeFrame); - } -} - -void NNS_SndArcStrmSetVolume (struct NNSSndStrmHandle * handle, int volume) { - NNS_NULL_ASSERT(handle); - NNS_MINMAX_ASSERT(volume, 0, SND_CALC_DECIBEL_SCALE_MAX); - - if (!NNS_SndStrmHandleIsValid(handle)) { - return; - } - - handle->player->extVolume = volume; -} - -void NNS_SndArcStrmMoveVolume (struct NNSSndStrmHandle * handle, int volume, int frames) { - NNS_NULL_ASSERT(handle); - - if (!NNS_SndStrmHandleIsValid(handle)) { - return; - } - - if (handle->player->fadeOutFlag) { - return; - } - - NNSi_SndFaderSet(&handle->player->fader, volume << 8, frames); -} - -void NNS_SndArcStrmSetChannelVolume (struct NNSSndStrmHandle * handle, int chNo, int volume) { - NNS_NULL_ASSERT(handle); - - if (!NNS_SndStrmHandleIsValid(handle)) { - return; - } - - NNS_SndStrmSetChannelVolume(&handle->player->stream, chNo, SND_CalcDecibel(volume)); -} - -void NNS_SndArcStrmSetChannelPan (struct NNSSndStrmHandle * handle, int chNo, int pan) { - NNS_NULL_ASSERT(handle); - - if (!NNS_SndStrmHandleIsValid(handle)) { - return; - } - - NNS_SndStrmSetChannelPan(&handle->player->stream, chNo, pan); -} - -void NNS_SndStrmHandleInit (NNSSndStrmHandle * handle) { - NNS_NULL_ASSERT(handle); - - handle->player = NULL; -} - -void NNS_SndStrmHandleRelease (NNSSndStrmHandle * handle) { - NNS_NULL_ASSERT(handle); - - if (handle->player == NULL) { - return; - } - - NNS_ASSERT(handle == handle->player->handle); - - handle->player->handle = NULL; - handle->player = NULL; -} - -u32 NNS_SndArcStrmGetCurrentPlayingPos (NNSSndStrmHandle * handle) { - NNSSndStrmPlayer * player; - u64 pos; - - NNS_NULL_ASSERT(handle); - - if (!NNS_SndStrmHandleIsValid(handle)) { - return 0; - } - - player = handle->player; - - pos = player->curSample; - pos *= 1000; - pos /= player->info.sampleRate; - - return (u32)pos; -} - -u32 NNS_SndArcStrmGetTimeLength (NNSSndStrmHandle * handle) { - NNSSndStrmPlayer * player; - u64 len; - - NNS_NULL_ASSERT(handle); - - if (!NNS_SndStrmHandleIsValid(handle)) { - return 0; - } - - player = handle->player; - - len = player->info.loopEnd; - len *= 1000; - len /= player->info.sampleRate; - - return (u32)len; -} - -int NNS_SndArcStrmGetChannelCount (NNSSndStrmHandle * handle) { - NNSSndStrmPlayer * player; - - NNS_NULL_ASSERT(handle); - - if (!NNS_SndStrmHandleIsValid(handle)) { - return 0; - } - - player = handle->player; - return player->info.numChannels; -} - -BOOL NNS_SndArcStrmAllocChannel (int playerNo) { - NNSSndStrmPlayer * player; - - NNS_MINMAX_ASSERT(playerNo, NNS_SND_STRM_PLAYER_MIN, NNS_SND_STRM_PLAYER_MAX); - - player = &sStrmPlayer[playerNo]; - - if (player->activeFlag) { - OS_Warning("Cannot call NNS_SndArcStrmAllocChannel for active player.\n"); - return FALSE; - } - - if (!AllocChannel(player, player->numChannels, player->chNoList)) { - return FALSE; - } - - return TRUE; -} - -void NNS_SndArcStrmFreeChannel (int playerNo) { - NNS_MINMAX_ASSERT(playerNo, NNS_SND_STRM_PLAYER_MIN, NNS_SND_STRM_PLAYER_MAX); - - FreeChannel(&sStrmPlayer[playerNo]); -} - -void NNSi_SndArcStrmMain (void) { - NNSSndStrmPlayer * player; - int playerNo; - int volume; - - for ( playerNo = 0; playerNo < NNS_SND_STRM_PLAYER_NUM ; ++playerNo ) { - player = &sStrmPlayer[playerNo]; - - if (!player->activeFlag) { - continue; - } - - if (player->finishCounter == 0) { - ForceStopStrm(player); - continue; - } - - if (player->startFlag) { - if (player->prepareFlag) { - NNS_SndStrmStart(&player->stream); - - player->playFlag = TRUE; - player->startFlag = FALSE; - } - } - - if (!player->playFlag) { - continue; - } - - NNSi_SndFaderUpdate(&player->fader); - - volume - = SND_CalcDecibel(NNSi_SndFaderGet(&player->fader) >> 8) - + SND_CalcDecibel(player->initVolume) - + SND_CalcDecibel(player->extVolume) - ; - if (volume != player->volume) { - NNS_SndStrmSetVolume(&player->stream, volume); - - player->volume = volume; - } - - if (player->fadeOutFlag) { - if (NNSi_SndFaderIsFinished(&player->fader)) { - ForceStopStrm(player); - } - } - } -} - -void NNSi_SndArcStrmSetPlayerBuffer (int playerNo, void * buffer, u32 len) { - NNSSndStrmPlayer * player; - - NNS_MINMAX_ASSERT(playerNo, NNS_SND_STRM_PLAYER_MIN, NNS_SND_STRM_PLAYER_MAX); - - player = &sStrmPlayer[playerNo]; - - player->buffer = buffer; - player->bufSize = len; -} - -void NNSi_SndArcStrmSetDecodeBuffer (void * buffer, u32) { - OS_LockMutex(&sDecodeBufferMutex); - sDecodeBuffer = buffer; - OS_UnlockMutex(&sDecodeBufferMutex); -} - -void NNSi_SndArcStrmStopByChannel (u32 chBitMask) { - int playerNo; - int chNo; - - for ( playerNo = 0; playerNo < NNS_SND_STRM_PLAYER_NUM ; ++playerNo ) { - NNSSndStrmPlayer * player = &sStrmPlayer[playerNo]; - if (!player->activeFlag) { - continue; - } - - for ( chNo = 0; chNo < player->numChannels ; chNo++ ) { - if (chBitMask & (1 << player->chNoList[chNo])) { - StopStrm(player, 0); - break; - } - } - } -} - -OSThread * NNSi_SndArcStrmGetThread () { - return &sStrmThread.thread; -} - -static NNSSndStrmPlayer * AllocPlayer (NNSSndStrmHandle * handle, int playerNo, int prio) { - NNSSndStrmPlayer * player; - - NNS_NULL_ASSERT(handle); - NNS_MINMAX_ASSERT(playerNo, 0, NNS_SND_STRM_PLAYER_NUM - 1); - NNS_MINMAX_ASSERT(prio, NNS_SND_STRM_PLAYER_PRIO_MIN, NNS_SND_STRM_PLAYER_PRIO_MAX); - - if (NNS_SndStrmHandleIsValid(handle)) { - NNS_SndStrmHandleRelease(handle); - } - - player = &sStrmPlayer[playerNo]; - - if (player->buffer == NULL) { - return NULL; - } - - if (player->activeFlag) { - if (prio < player->prio) { - return NULL; - } - ForceStopStrm(player); - } - - player->prio = prio; - player->activeFlag = TRUE; - - player->handle = handle; - handle->player = player; - - return player; -} - -static void FreePlayer (NNSSndStrmPlayer * player) { - NNS_NULL_ASSERT(player); - - if (player->handle != NULL) { - player->handle->player = NULL; - player->handle = NULL; - } - - player->activeFlag = FALSE; - player->startFlag = FALSE; - player->playFlag = FALSE; -} - -BOOL PrepareStrm (struct NNSSndStrmHandle * handle, const NNSSndArcStrmInfo * strmInfo, int playerNo, int playerPrio, int strmNo, u32 offset, NNSSndStrmCallback strmCallback, void * strmCallbackArg, NNSSndArcStrmCallback sndArcStrmCallback, void * sndArcStrmCallbackArg) { - NNSSndStrmPlayer * player; - NNSSndStrmFormat format; - int numChannels; - u64 tmpU64; - BOOL ret; - - NNS_NULL_ASSERT(handle); - NNS_NULL_ASSERT(strmInfo); - - player = AllocPlayer(handle, playerNo, playerPrio); - if (player == NULL) { - return FALSE; - } - - SetupStreamFunction(player, strmInfo->fileId); - - if (!player->openStreamFunc(player, strmInfo->fileId)) { - FreePlayer(player); - return FALSE; - } - - tmpU64 = player->info.sampleRate; - tmpU64 *= offset; - tmpU64 /= 1000; - player->curSample = (u32)tmpU64; - if (player->curSample != 0 && player->info.format == STRM_FORMAT_ADPCM) { - player->dirtyFlag = TRUE; - } else { - player->dirtyFlag = FALSE; - } - player->finishCounter = BLOCK_NUM; - player->finishFlag = FALSE; - player->playFlag = FALSE; - player->prepareFlag = FALSE; - player->startFlag = FALSE; - player->fadeOutFlag = FALSE; - player->commandCount = 0; - - player->strmCallback = strmCallback; - player->strmCallbackArg = strmCallbackArg; - player->sndArcStrmCallback = sndArcStrmCallback; - player->sndArcStrmCallbackArg = sndArcStrmCallbackArg; - - player->strmNo = strmNo; - - player->volume = 0; - player->initVolume = strmInfo->volume; - player->extVolume = 127; - NNSi_SndFaderInit(&player->fader); - NNSi_SndFaderSet(&player->fader, 127 << 8, 1); - - switch (player->info.format) { - case STRM_FORMAT_PCM8: - format = NNS_SND_STRM_FORMAT_PCM8; - break; - case STRM_FORMAT_PCM16: - case STRM_FORMAT_ADPCM: - format = NNS_SND_STRM_FORMAT_PCM16; - break; - } - - numChannels = player->info.numChannels; - if (strmInfo->flags & NNS_SND_ARC_STRM_FORCE_STEREO) { - numChannels = 2; - } - if (numChannels > player->numChannels) { - numChannels = player->numChannels; - } - player->monoFlag = (numChannels == 1) ? TRUE : FALSE; - - ret = AllocChannel(player, numChannels, player->chNoList); - if (!ret) { - player->closeStreamFunc(player); - FreePlayer(player); - return FALSE; - } - - ret = NNS_SndStrmSetup( - &player->stream, - format, - player->buffer, - player->bufSize * numChannels / player->numChannels, - player->info.timer, - BLOCK_NUM, - StrmCallback, - player - ); - if (!ret) { - FreeChannel(player); - player->closeStreamFunc(player); - FreePlayer(player); - return FALSE; - } - - if (numChannels == 2) { - NNS_SndStrmSetChannelPan(&player->stream, 0, 0); - NNS_SndStrmSetChannelPan(&player->stream, 1, 127); - } - - return TRUE; -} - -static void StopStrm (NNSSndStrmPlayer * player, int fadeFrame) { - NNS_NULL_ASSERT(player); - - if (!player->playFlag) { - ForceStopStrm(player); - return; - } - - if (fadeFrame == 0) { - ForceStopStrm(player); - return; - } - - NNSi_SndFaderSet(&player->fader, 0, fadeFrame); - - player->fadeOutFlag = TRUE; - - player->prio = 0; -} - -static void ForceStopStrm (NNSSndStrmPlayer * player) { - NNS_NULL_ASSERT(player); - - OS_LockMutex(&sStrmThread.mutex); - if (sPrepareThread) { - OS_LockMutex(&sPrepareThread->mutex); - } - - if (player->playFlag) { - NNS_SndStrmStop(&player->stream); - } - - if (player->activeFlag) { - player->cancelStreamFunc(player); - } - - ShutdownPlayer(player); - - OS_UnlockMutex(&sStrmThread.mutex); - if (sPrepareThread) { - OS_UnlockMutex(&sPrepareThread->mutex); - } -} - -static void ShutdownPlayer (NNSSndStrmPlayer * player) { - NNS_NULL_ASSERT(player); - - if (!player->activeFlag) { - return; - } - - FreeChannel(player); - - player->closeStreamFunc(player); - - RemoveCommandByPlayer(&sStrmThread.commandList, player); - if (sPrepareThread) { - RemoveCommandByPlayer(&sPrepareThread->commandList, player); - } - - FreePlayer(player); -} - -static BOOL AllocChannel (NNSSndStrmPlayer * player, int numChannels, const u8 chNoList[]) { - NNS_NULL_ASSERT(player); - - if (player->allocChannelCount == 0) { - if (!NNS_SndStrmAllocChannel(&player->stream, numChannels, chNoList)) { - return FALSE; - } - } - - player->allocChannelCount++; - - return TRUE; -} - -static void FreeChannel (NNSSndStrmPlayer * player) { - NNS_NULL_ASSERT(player); - - if (player->allocChannelCount == 0) { - OS_Warning("Unmatch Alloc/Free for stream channel.\n"); - return; - } - - player->allocChannelCount--; - - if (player->allocChannelCount == 0) { - NNS_SndStrmFreeChannel(&player->stream); - } -} - -static void CreateThread (NNSSndStrmThread * thread, u32 threadPrio) { - OS_CreateThread( - &thread->thread, - StrmThread, - thread, - thread->stack + NNS_SND_STRM_THREAD_STACK_SIZE / sizeof(u64), - NNS_SND_STRM_THREAD_STACK_SIZE, - threadPrio - ); - NNS_FND_INIT_LIST(&thread->commandList, LoadCommand, link); - OS_InitMutex(&thread->mutex); - OS_InitThreadQueue(&thread->threadQ); - OS_WakeupThreadDirect(&thread->thread); -} - -static void RemoveCommandByPlayer (NNSFndList * commandList, const NNSSndStrmPlayer * player) { - OSIntrMode old; - LoadCommand * command; - LoadCommand * next; - - old = OS_DisableInterrupts(); - - for ( command = (LoadCommand *)NNS_FndGetNextListObject(commandList, NULL); - command != NULL ; command = next ) { - next = (LoadCommand *)NNS_FndGetNextListObject(commandList, command); - - if (command->player == player) { - NNS_FndRemoveListObject(commandList, command); - FreeCommandBuffer(command); - } - } - - (void)OS_RestoreInterrupts(old); -} - -static LoadCommand * ReadCommandBuffer (NNSFndList * commandList) { - OSIntrMode old; - LoadCommand * command; - - old = OS_DisableInterrupts(); - - command = (LoadCommand *)NNS_FndGetNextListObject(commandList, NULL); - if (command != NULL) { - NNS_FndRemoveListObject(commandList, command); - - command->player->commandCount--; - } - - (void)OS_RestoreInterrupts(old); - - return command; -} - -static LoadCommand * AllocCommandBuffer (void) { - OSIntrMode old; - LoadCommand * command; - - old = OS_DisableInterrupts(); - - command = (LoadCommand *)NNS_FndGetNextListObject(&sFreeCommandList, NULL); - if (command != NULL) { - NNS_FndRemoveListObject(&sFreeCommandList, command); - } - - (void)OS_RestoreInterrupts(old); - - return command; -} - -static void FreeCommandBuffer (LoadCommand * command) { - OSIntrMode old; - - old = OS_DisableInterrupts(); - - NNS_FndAppendListObject(&sFreeCommandList, command); - - (void)OS_RestoreInterrupts(old); -} - -static void DisposeCallback (void * mem, u32, u32 data1, u32) { - NNSSndStrmPlayer * player = (NNSSndStrmPlayer *)data1; - - if (mem == player->buffer) { - OS_LockMutex(&sStrmThread.mutex); - if (sPrepareThread) { - OS_LockMutex(&sPrepareThread->mutex); - } - - ForceStopStrm(player); - - player->buffer = NULL; - player->bufSize = 0; - - player->numChannels = 0; - if (player->allocChannelCount > 0) { - NNS_SndStrmFreeChannel(&player->stream); - player->allocChannelCount = 0; - } - - OS_UnlockMutex(&sStrmThread.mutex); - if (sPrepareThread) { - OS_UnlockMutex(&sPrepareThread->mutex); - } - } -} - -static void StrmCallback (NNSSndStrmCallbackStatus status, int numChannels, void * buffer[], u32 len, NNSSndStrmFormat, void * arg) { - NNSSndStrmPlayer * player = (NNSSndStrmPlayer *)arg; - LoadCommand * command; - NNSSndStrmThread * thread; - int ch; - - NNS_MINMAX_ASSERT(numChannels, 0, STRM_CHANNEL_MAX - 1); - - if (player->commandCount >= BLOCK_NUM - 2) { - command = NULL; - while ((command = (LoadCommand *)NNS_FndGetNextListObject(&sStrmThread.commandList, command)) != NULL) { - if (command->player == player) { - break; - } - } - NNS_NULL_ASSERT(command); - - for ( ch = 0; ch < command->numChannels; ch++ ) { - MI_CpuClear8(command->buffer[ch], command->bufLen); - } - - NNS_FndRemoveListObject(&sStrmThread.commandList, command); - player->commandCount--; - FreeCommandBuffer(command); - } - - command = AllocCommandBuffer(); - NNS_NULL_ASSERT(command); - - command->player = player; - command->status = status; - command->numChannels = numChannels; - for ( ch = 0; ch < numChannels ; ch++ ) { - command->buffer[ch] = buffer[ch]; - } - command->bufLen = len; - - thread = &sStrmThread; - if (status == NNS_SND_STRM_CALLBACK_SETUP && sPrepareThread) { - thread = sPrepareThread; - } - - player->commandCount++; - NNS_FndAppendListObject(&thread->commandList, command); - - OS_WakeupThread(&thread->threadQ); -} - -static void OnDataEnd (NNSSndStrmPlayer * player) { - NNSSndArcStrmCallbackInfo info; - NNSSndArcStrmCallbackParam param; - const NNSSndArcStrmInfo * strmInfo; - u8 old_format; - u16 old_sampleRate; - u64 tmpU64; - BOOL result; - - info.playerNo = player->playerNo; - info.strmNo = player->strmNo; - - param.strmNo = player->strmNo; - param.offset = 0; - - result = player->sndArcStrmCallback( - NNS_SND_ARC_STRM_CALLBACK_DATA_END, - &info, - ¶m, - player->sndArcStrmCallbackArg - ); - if (!result) { - return; - } - - strmInfo = NNS_SndArcGetStrmInfo(param.strmNo); - if (strmInfo == NULL) { - return; - } - - old_format = player->info.format; - old_sampleRate = player->info.sampleRate; - - player->closeStreamFunc(player); - - SetupStreamFunction(player, strmInfo->fileId); - - if (!player->openStreamFunc(player, strmInfo->fileId)) { - return; - } - - if (old_sampleRate != player->info.sampleRate) { - OS_Warning( - "Cannot continue stream because sample rate is different %d != %d.", - player->info.sampleRate, - old_sampleRate - ); - return; - } - if (old_format == STRM_FORMAT_PCM8 && player->info.format != STRM_FORMAT_PCM8 || - old_format != STRM_FORMAT_PCM8 && player->info.format == STRM_FORMAT_PCM8) { - OS_Warning("Cannot continue stream because format is different."); - return; - } - - player->strmNo = param.strmNo; - tmpU64 = player->info.sampleRate; - tmpU64 *= param.offset; - tmpU64 /= 1000; - player->curSample = (u32)tmpU64; - if (player->curSample != 0 && player->info.format == STRM_FORMAT_ADPCM) { - player->dirtyFlag = TRUE; - } else { - player->dirtyFlag = FALSE; - } - - player->finishFlag = FALSE; -} - -static void MakeWaveData (LoadCommand * command) { - NNSSndStrmPlayer * player = command->player; - BOOL loopFlag; - u32 destOffset; - u32 restSize; - u32 blockNo; - u32 blockSize; - u32 blockSamples; - u32 blockOffsetSample; - u32 blockOffset; - u32 offset; - u32 samples; - u32 size; - u32 readSize; - int ch; - - if (player->finishFlag && player->finishCounter > 0) { - player->finishCounter--; - } - - destOffset = 0; - - restSize = command->bufLen; - while (restSize > 0) { - if (player->finishFlag) { - for ( ch = 0; ch < command->numChannels; ch++ ) { - MI_CpuClear8((u8 *)(command->buffer[ch]) + destOffset, restSize); - } - break; - } - - blockNo = player->curSample / player->info.blockSamples; - - if (blockNo < player->info.numBlocks - 1) { - blockSize = player->info.blockSize; - blockSamples = player->info.blockSamples; - } else { - blockSize = player->info.lastBlockSize; - blockSamples = player->info.lastBlockSamples; - } - - blockOffsetSample = player->curSample; - blockOffsetSample -= blockNo * player->info.blockSamples; - - samples = restSize; - if (player->info.format != STRM_FORMAT_PCM8) { - NNS_ASSERT((samples & 0x01) == 0); - samples >>= 1; - } - - if (player->dirtyFlag) { - if (blockOffsetSample == 0) { - player->dirtyFlag = FALSE; - } else { - samples = blockOffsetSample; - blockOffsetSample = 0; - } - } - - loopFlag = FALSE; - if (blockOffsetSample + samples >= blockSamples) { - samples = blockSamples - blockOffsetSample; - - if (blockNo >= player->info.numBlocks - 1) { - if (player->info.loopFlag) { - loopFlag = TRUE; - } else { - player->finishFlag = TRUE; - } - } - } - - blockOffset = blockOffsetSample; - size = samples; - switch (player->info.format) { - case STRM_FORMAT_PCM8: - readSize = size; - break; - case STRM_FORMAT_PCM16: - blockOffset <<= 1; - size <<= 1; - readSize = size; - break; - case STRM_FORMAT_ADPCM: { - u32 endSample = blockOffsetSample + samples; - blockOffset >>= 1; - endSample++; endSample >>= 1; - readSize = endSample - blockOffset; - if (blockOffsetSample == 0) { - readSize += sizeof(AdpcmState); - } else { - blockOffset += sizeof(AdpcmState); - } - size <<= 1; - - break; - } - } - - offset = blockOffset; - offset += blockNo * player->info.blockSize * player->info.numChannels; - offset += player->info.dataOffset; - - for ( ch = 0; ch < command->numChannels; ch++ ) { - void * dest; - void * read_dest; - - dest = read_dest = (u8 *)(command->buffer[ch]) + destOffset; - - if (ch < player->info.numChannels) { - s32 resultSize; - - if (player->info.format == STRM_FORMAT_ADPCM) { - OS_LockMutex(&sDecodeBufferMutex); - read_dest = sDecodeBuffer; - } - - resultSize = player->readStreamFunc( - player, - read_dest, - readSize, - offset + ch * blockSize - ); - - if (resultSize != readSize) { - size = 0; - samples = 0; - loopFlag = FALSE; - player->finishFlag = TRUE; - if (player->info.format == STRM_FORMAT_ADPCM) { - OS_UnlockMutex(&sDecodeBufferMutex); - } - break; - } - - if (player->info.format == STRM_FORMAT_ADPCM) { - AdpcmState * state = &player->adpcmState[ch]; - u8 * srcp = sDecodeBuffer; - s16 * destp = dest; - u32 i; - u32 end; - - if (blockOffsetSample == 0) { - *state = *((AdpcmState *)srcp)++; - } - - end = blockOffsetSample + samples; - - i = blockOffsetSample; - if (i & 0x01) { - *destp++ = DecodeAdpcm((*srcp >> 4) & 0x0f, state); i++; - srcp++; - } - while (i < (end & ~0x01)) { - *destp++ = DecodeAdpcm(*srcp & 0x0f, state); i++; - *destp++ = DecodeAdpcm((*srcp >> 4) & 0x0f, state); i++; - srcp++; - } - if (i < end) { - *destp++ = DecodeAdpcm(*srcp & 0x0f, state); i++; - } - OS_UnlockMutex(&sDecodeBufferMutex); - } - } else { - if (player->monoFlag) { - MI_CpuClear8(dest, size); - } else { - MI_CpuCopy8((u8 *)(command->buffer[0]) + destOffset, dest, size); - } - } - } - - if (player->dirtyFlag) { - player->dirtyFlag = FALSE; - continue; - } - - if (loopFlag) { - player->curSample = player->info.loopStart; - } else { - player->curSample += samples; - } - - destOffset += size; - - restSize -= size; - - if (player->finishFlag && player->sndArcStrmCallback) { - OnDataEnd(player); - } - } - - if (player->strmCallback != NULL) { - player->strmCallback( - command->status, - command->numChannels, - command->buffer, - command->bufLen, - player->info.format == STRM_FORMAT_PCM8 ? NNS_SND_STRM_FORMAT_PCM8 : NNS_SND_STRM_FORMAT_PCM16, - player->strmCallbackArg - ); - } - - for ( ch = 0; ch < command->numChannels; ch++ ) { - DC_FlushRange(command->buffer[ch], command->bufLen); - } - - if (command->status == NNS_SND_STRM_CALLBACK_SETUP) { - player->prepareFlag = TRUE; - } -} - -static void SetupStreamFunction (NNSSndStrmPlayer * player, u32 fileId) { - if (NNS_SndArcGetFileAddress(fileId) == NULL) { - player->openStreamFunc = OpenFileStream; - player->closeStreamFunc = CloseFileStream; - player->readStreamFunc = ReadFileStream; - player->cancelStreamFunc = CancelFileStream; - } else { - player->openStreamFunc = OpenMemoryStream; - player->closeStreamFunc = CloseMemoryStream; - player->readStreamFunc = ReadMemoryStream; - player->cancelStreamFunc = CancelMemoryStream; - } -} - -static BOOL OpenFileStream (NNSSndStrmPlayer * player, u32 fileId) { - if (NNS_SndArcReadFile(fileId, &player->info, sizeof(player->info), 0) != sizeof(player->info)) { - return FALSE; - } - - if (!FS_OpenFileFast(&player->file, NNS_SndArcGetFileID())) { - return FALSE; - } - player->fileOffset = NNS_SndArcGetFileOffset(fileId); - - return TRUE; -} - -static void CloseFileStream (NNSSndStrmPlayer * player) { - (void)FS_CloseFile(&player->file); -} - -static s32 ReadFileStream (NNSSndStrmPlayer * player, void * dest, u32 size, u32 offset) { - BOOL result; - - result = FS_SeekFile( - &player->file, - (s32)(player->fileOffset + offset), - FS_SEEK_SET - ); - NNS_ASSERT(result); - return FS_ReadFile( - &player->file, - dest, - (s32)size - ); -} - -static void CancelFileStream (NNSSndStrmPlayer * player) { - FS_CancelFile(&player->file); -} - -static BOOL OpenMemoryStream (NNSSndStrmPlayer * player, u32 fileId) { - player->fileOffset = (u32)NNS_SndArcGetFileAddress(fileId); - - MI_CpuCopy8( - (const void *)(player->fileOffset), - &player->info, - sizeof(player->info) - ); - - return TRUE; -} - -static void CloseMemoryStream (NNSSndStrmPlayer * player) { -#pragma unused( player ) -} - -static s32 ReadMemoryStream (NNSSndStrmPlayer * player, void * dest, u32 size, u32 offset) { -#pragma unused( player ) - - const u8 * src = (const u8 *)(player->fileOffset); - - MI_CpuCopy8(src + offset, dest, size); - - return (s32)size; -} - -static void CancelMemoryStream (NNSSndStrmPlayer * player) { -#pragma unused( player ) -} - -static void StrmThread (void * arg) { - NNSSndStrmThread * thread = (NNSSndStrmThread *)arg; - - while (1) { - LoadCommand * command; - - OS_SleepThread(&thread->threadQ); - - while (1) { - OS_LockMutex(&thread->mutex); - - command = ReadCommandBuffer(&thread->commandList); - if (command == NULL) { - OS_UnlockMutex(&thread->mutex); - break; - } - - MakeWaveData(command); - - FreeCommandBuffer(command); - - OS_UnlockMutex(&thread->mutex); - } - } -} - -#endif diff --git a/subprojects/NitroSystem/libraries/snd/src/stream_nnssnd.c b/subprojects/NitroSystem/libraries/snd/src/stream_nnssnd.c deleted file mode 100644 index 0a3f3d6577..0000000000 --- a/subprojects/NitroSystem/libraries/snd/src/stream_nnssnd.c +++ /dev/null @@ -1,372 +0,0 @@ -#include -#include -#include -#include - -typedef struct NNSSndStrmChannel { - void * buffer; - int volume; -} NNSSndStrmChannel; - -static NNSSndStrmChannel sStrmChannel[SND_CHANNEL_NUM]; -static NNSFndList sStrmList; - -static void ShutdownStrm(NNSSndStrm * stream); -static void ForceStopStrm(NNSSndStrm * stream); -static void AlarmCallback(void * arg); -static void StrmCallback(NNSSndStrm * stream, NNSSndStrmCallbackStatus status); -static void BeginSleep(void * arg); -static void EndSleep(void * arg); - -void NNS_SndStrmInit (NNSSndStrm * stream) { - NNS_NULL_ASSERT(stream); - - { - static BOOL bInitialized = FALSE; - - if (!bInitialized) { - NNS_FND_INIT_LIST(&sStrmList, NNSSndStrm, link); - - bInitialized = TRUE; - } - } - - PM_SetSleepCallbackInfo(&stream->preSleepInfo, BeginSleep, stream); - PM_SetSleepCallbackInfo(&stream->postSleepInfo, EndSleep, stream); - - stream->chBitMask = 0; - stream->numChannels = 0; - stream->activeFlag = FALSE; - stream->startFlag = FALSE; -} - -BOOL NNS_SndStrmAllocChannel (NNSSndStrm * stream, int numChannels, const u8 chNoList[]) { - u32 chBitMask; - int i; - - NNS_NULL_ASSERT(stream); - NNS_MINMAX_ASSERT(numChannels, 1, SND_CHANNEL_NUM); - - chBitMask = 0; - for ( i = 0; i < numChannels ; i++ ) { - NNS_MINMAX_ASSERT(chNoList[i], SND_CHANNEL_MIN, SND_CHANNEL_MAX); - - stream->channelNo[i] = chNoList[i]; - chBitMask |= (1 << chNoList[i]); - } - - if (!NNS_SndLockChannel(chBitMask)) { - return FALSE; - } - - stream->numChannels = numChannels; - stream->chBitMask = chBitMask; - - return TRUE; -} - -void NNS_SndStrmFreeChannel (NNSSndStrm * stream) { - NNS_NULL_ASSERT(stream); - - if (stream->chBitMask == 0) { - return; - } - - NNS_SndUnlockChannel(stream->chBitMask); - - stream->chBitMask = 0; - stream->numChannels = 0; -} - -BOOL NNS_SndStrmSetup (NNSSndStrm * stream, NNSSndStrmFormat format, void * buffer, u32 bufSize, int timer, int interval, NNSSndStrmCallback callback, void * arg) { - NNSSndStrmChannel * chp; - unsigned int samples; - unsigned int alarmTimer; - int chNo; - int index; - - NNS_NULL_ASSERT(stream); - NNS_ASSERTMSG(((u32)buffer & 0x1f) == 0, "buffer address must be aligned to 32 bytes boundary."); - NNS_ASSERTMSG( - (bufSize % (interval * stream->numChannels * 32)) == 0, - "buffer size must be a multiple of interval * numChannels * 32." - ); - NNS_MINMAX_ASSERT(timer, NNS_SND_STRM_TIMER_MIN, NNS_SND_STRM_TIMER_MAX); - NNS_NULL_ASSERT(callback); - - if (stream->activeFlag) { - NNS_SndStrmStop(stream); - } - - bufSize /= 32 * interval * stream->numChannels; - stream->chBufLen = bufSize * interval * 32; - - samples = stream->chBufLen; - if (format == NNS_SND_STRM_FORMAT_PCM16) { - samples >>= 1; - } - - NNS_ASSERTMSG((samples % interval) == 0, "interval must be a multiple of sample count."); - alarmTimer = timer * samples / interval; - - stream->alarmNo = NNS_SndAllocAlarm(); - if (stream->alarmNo < 0) { - return FALSE; - } - - for ( index = 0; index < stream->numChannels ; index++ ) { - chNo = stream->channelNo[index]; - - chp = &sStrmChannel[chNo]; - - chp->buffer = (u8 *)buffer + stream->chBufLen * index; - NNS_ALIGN4_ASSERT(chp->buffer); - - chp->volume = 0; - - SND_SetupChannelPcm( - chNo, - (SNDWaveFormat)format, - chp->buffer, - SND_CHANNEL_LOOP_REPEAT, - 0, - (int)(stream->chBufLen >> 2), - 127, - SND_CHANNEL_DATASHIFT_NONE, - timer << 5, - 64 - ); - } - - SND_SetupAlarm( - stream->alarmNo, - alarmTimer, - alarmTimer, - AlarmCallback, - stream - ); - - NNS_FndAppendListObject(&sStrmList, stream); - - stream->format = format; - stream->interval = interval; - stream->callback = callback; - stream->callbackArg = arg; - stream->curBuffer = 0; - - stream->volume = 0; - - stream->activeFlag = TRUE; - - { - OSIntrMode old = OS_DisableInterrupts(); - - stream->interval = 1; - StrmCallback(stream, NNS_SND_STRM_CALLBACK_SETUP); - stream->interval = interval; - - (void)OS_RestoreInterrupts(old); - } - - return TRUE; -} - -void NNS_SndStrmStart (NNSSndStrm * stream) { - NNS_NULL_ASSERT(stream); - - SND_StartTimer( - stream->chBitMask, - 0, - (u32)(1 << stream->alarmNo), - 0 - ); - - if (!stream->startFlag) { - PM_PrependPreSleepCallback(&stream->preSleepInfo); - PM_AppendPostSleepCallback(&stream->postSleepInfo); - - stream->startFlag = TRUE; - } -} - -void NNS_SndStrmStop (NNSSndStrm * stream) { - NNS_NULL_ASSERT(stream); - - if (!stream->activeFlag) { - return; - } - - ForceStopStrm(stream); -} - -void NNS_SndStrmSetVolume (NNSSndStrm * stream, int volume) { - u16 chVolume; - int vol; - int chNo; - int i; - - NNS_NULL_ASSERT(stream); - - stream->volume = volume; - - for ( i = 0 ; i < stream->numChannels ; i++ ) { - chNo = stream->channelNo[i]; - vol = stream->volume + sStrmChannel[chNo].volume; - chVolume = SND_CalcChannelVolume(vol); - - SND_SetChannelVolume( - (u32)(1 << chNo), - chVolume & 0xff, - (SNDChannelDataShift)(chVolume >> 8) - ); - } -} - -void NNS_SndStrmSetChannelVolume (NNSSndStrm * stream, int chNo, int volume) { - u16 chVolume; - int vol; - - NNS_NULL_ASSERT(stream); - - if (chNo > stream->numChannels - 1) { - return; - } - - chNo = stream->channelNo[chNo]; - sStrmChannel[chNo].volume = volume; - - vol = stream->volume + sStrmChannel[chNo].volume; - chVolume = SND_CalcChannelVolume(vol); - - SND_SetChannelVolume( - (u32)(1 << chNo), - chVolume & 0xff, - (SNDChannelDataShift)(chVolume >> 8) - ); -} - -void NNS_SndStrmSetChannelPan (NNSSndStrm * stream, int chNo, int pan) { - NNS_NULL_ASSERT(stream); - NNS_MINMAX_ASSERT(pan, NNS_SND_STRM_PAN_MIN, NNS_SND_STRM_PAN_MAX); - - if (chNo > stream->numChannels - 1) { - return; - } - - SND_SetChannelPan((u32)(1 << stream->channelNo[chNo]), pan); -} - -static void ForceStopStrm (NNSSndStrm * stream) { - u32 commandTag; - - NNS_NULL_ASSERT(stream); - - if (stream->startFlag) { - SND_StopTimer( - stream->chBitMask, - 0, - (u32)(1 << stream->alarmNo), - 0 - ); - - PM_DeletePreSleepCallback(&stream->preSleepInfo); - PM_DeletePostSleepCallback(&stream->postSleepInfo); - - stream->startFlag = FALSE; - - commandTag = SND_GetCurrentCommandTag(); - (void)SND_FlushCommand(SND_COMMAND_BLOCK); - SND_WaitForCommandProc(commandTag); - } - - ShutdownStrm(stream); -} - -static void ShutdownStrm (NNSSndStrm * stream) { - NNS_NULL_ASSERT(stream); - - NNS_SndFreeAlarm(stream->alarmNo); - - NNS_FndRemoveListObject(&sStrmList, stream); - - stream->activeFlag = FALSE; -} - -static void AlarmCallback (void * arg) { - StrmCallback((NNSSndStrm *)arg, NNS_SND_STRM_CALLBACK_INTERVAL); -} - -static void StrmCallback (NNSSndStrm * stream, NNSSndStrmCallbackStatus status) { - static void * buffer[NNS_SND_STRM_CHANNEL_MAX]; - const unsigned long blockSize = stream->chBufLen / stream->interval; - const unsigned long offset = blockSize * stream->curBuffer; - int index; - int chNo; - - for ( index = 0; index < stream->numChannels ; index++ ) { - chNo = stream->channelNo[index]; - - buffer[index] = (u8 *)(sStrmChannel[chNo].buffer) + offset; - } - - stream->callback( - status, - stream->numChannels, - buffer, - blockSize, - stream->format, - stream->callbackArg - ); - - stream->curBuffer++; - if (stream->curBuffer >= stream->interval) { - stream->curBuffer = 0; - } -} - -void BeginSleep (void * arg) { - NNSSndStrm * stream = (NNSSndStrm *)arg; - u32 commandTag; - - NNS_NULL_ASSERT(stream); - - if (!stream->startFlag) { - return; - } - - SND_StopTimer( - stream->chBitMask, - 0, - (u32)(1 << stream->alarmNo), - 0 - ); - - commandTag = SND_GetCurrentCommandTag(); - (void)SND_FlushCommand(SND_COMMAND_BLOCK); - SND_WaitForCommandProc(commandTag); -} - -void EndSleep (void * arg) { - NNSSndStrm * stream = (NNSSndStrm *)arg; - - NNS_NULL_ASSERT(stream); - - if (!stream->startFlag) { - return; - } - - while (stream->curBuffer != 0) { - OSIntrMode old = OS_DisableInterrupts(); - - StrmCallback(stream, NNS_SND_STRM_CALLBACK_INTERVAL); - - (void)OS_RestoreInterrupts(old); - } - - SND_StartTimer( - stream->chBitMask, - 0, - (u32)(1 << stream->alarmNo), - 0 - ); -} diff --git a/subprojects/NitroSystem/libraries/snd/src/waveout.c b/subprojects/NitroSystem/libraries/snd/src/waveout.c deleted file mode 100644 index d305269be7..0000000000 --- a/subprojects/NitroSystem/libraries/snd/src/waveout.c +++ /dev/null @@ -1,208 +0,0 @@ -#include -#include -#include -#include - -typedef struct NNSSndWaveOut { - int chNo; - int sampleRate; - BOOL activeFlag; - BOOL startFlag; - u32 startCommandTag; -} NNSSndWaveOut; - -static NNSSndWaveOut sWaveOut[SND_CHANNEL_NUM]; - -NNSSndWaveOutHandle NNS_SndWaveOutAllocChannel (int chNo) { - NNSSndWaveOut * waveout; - - NNS_MINMAX_ASSERT(chNo, SND_CHANNEL_MIN, SND_CHANNEL_MAX); - - if (!NNS_SndLockChannel((u32)(1 << chNo))) { - return NNS_SND_WAVEOUT_INVALID_HANDLE; - } - - waveout = &sWaveOut[chNo]; - waveout->chNo = chNo; - waveout->activeFlag = FALSE; - - return waveout; -} - -void NNS_SndWaveOutFreeChannel (NNSSndWaveOutHandle handle) { - NNS_NULL_ASSERT(handle); - NNS_SndUnlockChannel((u32)(1 << handle->chNo)); -} - -BOOL NNS_SndWaveOutStart (NNSSndWaveOutHandle handle, NNSSndWaveFormat format, const void * dataaddr, BOOL loopFlag, int loopStartSample, int samples, int sampleRate, int volume, int speed, int pan) { - int loopStart; - int loopLen; - u64 timer; - - NNS_NULL_ASSERT(handle); - NNS_ALIGN4_ASSERT(dataaddr); - NNS_MINMAX_ASSERT(volume, NNS_SND_WAVEOUT_VOLUME_MIN, NNS_SND_WAVEOUT_VOLUME_MAX); - NNS_MINMAX_ASSERT(pan, NNS_SND_WAVEOUT_PAN_MIN, NNS_SND_WAVEOUT_PAN_MAX); - - switch (format) { - case NNS_SND_WAVE_FORMAT_PCM8: - NNS_ASSERTMSG((loopStartSample & 0x03) == 0, "loopStartSample must be a multiple of 4"); - NNS_ASSERTMSG((samples & 0x03) == 0, "samples must be a multiple of 4"); - loopStart = (loopStartSample >> 2); - loopLen = (samples >> 2) - loopStart; - break; - case NNS_SND_WAVE_FORMAT_PCM16: - NNS_ASSERTMSG((loopStartSample & 0x01) == 0, "loopStartSample must be a multiple of 2"); - NNS_ASSERTMSG((samples & 0x01) == 0, "samples must be a multiple of 2"); - loopStart = (loopStartSample >> 1); - loopLen = (samples >> 1) - loopStart; - break; - } - - timer = (u64)SND_TIMER_CLOCK * 0x8000 / sampleRate / speed; - if (timer < SND_CHANNEL_TIMER_MIN) { - timer = SND_CHANNEL_TIMER_MIN; - } else if (timer > SND_CHANNEL_TIMER_MAX) { - timer = SND_CHANNEL_TIMER_MAX; - } - - SND_SetupChannelPcm( - handle->chNo, - (SNDWaveFormat)format, - dataaddr, - loopFlag ? SND_CHANNEL_LOOP_REPEAT : SND_CHANNEL_LOOP_1SHOT, - loopStart, - loopLen, - volume, - SND_CHANNEL_DATASHIFT_NONE, - (int)timer, - pan - ); - SND_StartTimer( - (u32)(1 << handle->chNo), - 0, 0, 0 - ); - - handle->activeFlag = TRUE; - handle->startFlag = FALSE; - handle->startCommandTag = SND_GetCurrentCommandTag(); - handle->sampleRate = sampleRate; - - return TRUE; -} - -void NNS_SndWaveOutStop (NNSSndWaveOutHandle handle) { - NNS_NULL_ASSERT(handle); - - if (!handle->activeFlag) { - return; - } - - SND_StopTimer( - (u32)(1 << handle->chNo), - 0, 0, 0 - ); - - handle->activeFlag = FALSE; -} - -void NNS_SndWaveOutSetVolume (NNSSndWaveOutHandle handle, int volume) { - NNS_NULL_ASSERT(handle); - - if (!handle->activeFlag) { - return; - } - - SND_SetChannelVolume( - (u32)(1 << handle->chNo), - volume, - SND_CHANNEL_DATASHIFT_NONE - ); -} - -void NNS_SndWaveOutSetSpeed (NNSSndWaveOutHandle handle, int speed) { - u64 timer; - - NNS_NULL_ASSERT(handle); - - if (!handle->activeFlag) { - return; - } - - timer = (u64)SND_TIMER_CLOCK * 0x8000 / handle->sampleRate / speed; - if (timer < SND_CHANNEL_TIMER_MIN) { - timer = SND_CHANNEL_TIMER_MIN; - } else if (timer > SND_CHANNEL_TIMER_MAX) { - timer = SND_CHANNEL_TIMER_MAX; - } - - SND_SetChannelTimer( - (u32)(1 << handle->chNo), - (int)timer - ); -} - -void NNS_SndWaveOutSetPan (NNSSndWaveOutHandle handle, int pan) { - NNS_NULL_ASSERT(handle); - - if (!handle->activeFlag) { - return; - } - - SND_SetChannelPan( - (u32)(1 << handle->chNo), - pan - ); -} - -BOOL NNS_SndWaveOutIsPlaying (NNSSndWaveOutHandle handle) { - NNS_NULL_ASSERT(handle); - - if (!handle->activeFlag) { - return FALSE; - } - - if (!handle->startFlag) { - if (!SND_IsFinishedCommandTag(handle->startCommandTag)) { - return TRUE; - } - - handle->startFlag = TRUE; - } - - if (SND_GetChannelStatus() & (1 << handle->chNo)) { - return TRUE; - } - - handle->activeFlag = FALSE; - - return FALSE; -} - -void NNS_SndWaveOutWaitForChannelStop (NNSSndWaveOutHandle handle) { - u32 commandTag; - - NNS_NULL_ASSERT(handle); - - if (!handle->activeFlag) { - if ((SND_GetChannelStatus() & (1 << handle->chNo)) == 0) { - return; - } - - commandTag = SND_GetCurrentCommandTag(); - (void)SND_FlushCommand(SND_COMMAND_BLOCK); - SND_WaitForCommandProc(commandTag); - - return; - } else { - if (!handle->startFlag) { - SND_WaitForCommandProc(handle->startCommandTag); - handle->startFlag = TRUE; - } - while (1) { - if ((SND_GetChannelStatus() & (1 << handle->chNo)) == 0) { - return; - } - } - } -} diff --git a/subprojects/NitroSystem/meson.build b/subprojects/NitroSystem/meson.build deleted file mode 100644 index e1c662d9e8..0000000000 --- a/subprojects/NitroSystem/meson.build +++ /dev/null @@ -1,54 +0,0 @@ -project('NitroSystem', ['c', 'nasm']) - -# Compiler flags -c_args = [ - '-wrap:ver', '2.0/sp2', - '-O4,p', - '-proc', 'arm946e', - '-enum', 'int', - '-lang', 'c99', - '-Cpp_exceptions', 'off', - '-gccext,on', - '-msgstyle', 'gcc', - '-ipa', 'file', - '-interworking', - '-inline', 'on,noauto', - '-char', 'signed', - '-nosyspath', - '-stdinc' -] - -asm_args = [ - '-proc', 'arm5TE', - '-gccinc' -] - -sdk_args = [ - '-DSDK_CW_FORCE_EXPORT_SUPPORT', - '-DSDK_TS', - '-DSDK_4M', - '-DSDK_ARM9', - '-DSDK_CW', - '-DSDK_FINALROM', - '-DSDK_CODE_ARM', - '-DNNS_FINALROM' -] - -# Dependencies -nitrosdk_dep = dependency('NitroSDK', fallback : ['NitroSDK', 'nitrosdk_dep']) - -# Public includes -public_includes = include_directories('include') -nitro_pch = subproject('NitroSDK').get_variable('nitro_pch') - -# Libraries -nitrosystem_libs = [] -subdir('libraries') - -# Own dependency for consumers -nitrosystem_dep = declare_dependency( - compile_args: sdk_args, - dependencies: nitrosdk_dep, - include_directories: public_includes, - link_with: nitrosystem_libs -) \ No newline at end of file diff --git a/subprojects/NitroWiFi.wrap b/subprojects/NitroWiFi.wrap new file mode 100644 index 0000000000..1678cf85c9 --- /dev/null +++ b/subprojects/NitroWiFi.wrap @@ -0,0 +1,8 @@ +[wrap-git] +url = https://github.com/Nomura-RH/NitroWiFi.git +revision = head +depth = 1 +directory = NitroWiFi-2.1.30003 + +[provide] +dependency_names = NitroWiFi \ No newline at end of file diff --git a/subprojects/NitroWiFi/include/ninet.h b/subprojects/NitroWiFi/include/ninet.h deleted file mode 100644 index 2925118c7b..0000000000 --- a/subprojects/NitroWiFi/include/ninet.h +++ /dev/null @@ -1 +0,0 @@ -#include diff --git a/subprojects/NitroWiFi/include/ninet/ip.h b/subprojects/NitroWiFi/include/ninet/ip.h deleted file mode 100644 index 19c26aad46..0000000000 --- a/subprojects/NitroWiFi/include/ninet/ip.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef NITROINET_IP_H_ -#define NITROINET_IP_H_ - -#ifdef __cplusplus - -extern "C" { -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroWiFi/include/ninet/iw/iw_wm.h b/subprojects/NitroWiFi/include/ninet/iw/iw_wm.h deleted file mode 100644 index 274ecd3497..0000000000 --- a/subprojects/NitroWiFi/include/ninet/iw/iw_wm.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef NITROWIFI_NINET_IW_WM_H_ -#define NITROWIFI_NINET_IW_WM_H_ - -#ifdef __cplusplus - -extern "C" { -#endif - -#include - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroWiFi/include/ninet/nwbase/md5.h b/subprojects/NitroWiFi/include/ninet/nwbase/md5.h deleted file mode 100644 index 0056be6748..0000000000 --- a/subprojects/NitroWiFi/include/ninet/nwbase/md5.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef NINET_NWBASE_MD5_H_ -#define NINET_NWBASE_MD5_H_ - -#ifdef __cplusplus - -extern "C" { -#endif - -#include - -typedef struct { - unsigned long state[4]; - unsigned long count[2]; - unsigned char buffer[64]; -} MD5_CTX; - -void MD5Init(MD5_CTX * context); -void MD5Update(MD5_CTX * context, unsigned char * buf, unsigned int len); -void MD5Final(unsigned char digest[16], MD5_CTX * context); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroWiFi/include/nitroWiFi.h b/subprojects/NitroWiFi/include/nitroWiFi.h deleted file mode 100644 index a02baa12be..0000000000 --- a/subprojects/NitroWiFi/include/nitroWiFi.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef NITROWIFI_H_ -#define NITROWIFI_H_ - -#ifdef SDK_ARM9 - -#include -#include - -#include - -#ifndef SDKWIFI_NO_SO_SYMBOLS -#include -#include -#endif - -#else -#endif - -#endif diff --git a/subprojects/NitroWiFi/include/nitroWiFi/cps.h b/subprojects/NitroWiFi/include/nitroWiFi/cps.h deleted file mode 100644 index 1a88dab7e1..0000000000 --- a/subprojects/NitroWiFi/include/nitroWiFi/cps.h +++ /dev/null @@ -1,260 +0,0 @@ -#ifndef NITROWIFI_CPS_H_ -#define NITROWIFI_CPS_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -typedef u32 CPSInAddr; -typedef u8 CPSMacAddress[6]; - -typedef struct { - u32 size; - u8 * data; -} CPSSocBuf; - -typedef struct _CPSSoc { - OSThread * thread; - u32 block_type; - u8 state; - u8 ssl; - u16 local_port; - void * con; - u32 when; - u32 local_ip_real; - u16 remote_port; - u16 remote_port_bound; - CPSInAddr remote_ip; - CPSInAddr remote_ip_bound; - u32 ackno; - u32 seqno; - u16 remote_win; - u16 remote_mss; - u32 remote_ackno; - u32 ackrcvd; - int (* udpread_callback)(u8 *, u32, struct _CPSSoc *); - CPSSocBuf rcvbuf; - - u32 rcvbufp; - CPSSocBuf sndbuf; - CPSSocBuf linbuf; - CPSSocBuf outbuf; - u32 outbufp; -} CPSSoc; - -enum { - CPS_STT_CLOSED = 0, - CPS_STT_LISTEN, - CPS_STT_SYN_SENT, - CPS_STT_SYN_RCVD, - CPS_STT_ESTABLISHED, - CPS_STT_CLOSE_WAIT, - CPS_STT_LAST_ACK, - CPS_STT_FIN_WAIT1, - CPS_STT_FIN_WAIT2, - CPS_STT_CLOSING, - CPS_STT_DATAGRAM, - CPS_STT_PING -}; - -enum { - CPS_BLOCK_NONE = 0, - CPS_BLOCK_TCPCON, - CPS_BLOCK_TCPREAD, - CPS_BLOCK_UDPREAD -}; - -enum { - CPS_NOIP_REASON_NONE = 0, - CPS_NOIP_REASON_LINKOFF, - CPS_NOIP_REASON_DHCPDISCOVERY, - CPS_NOIP_REASON_LEASETIMEOUT, - CPS_NOIP_REASON_COLLISION -}; - -typedef struct { - CPSInAddr ip; - CPSMacAddress mac; - u16 when; -} CPSArpCache; - -#define CPS_MAX_IPSIZE 4096 -#define CPS_MIN_MTU 576 -#define CPS_MAX_IPFRAG (CPS_MAX_IPSIZE / CPS_MIN_MTU + 1) - -typedef struct { - CPSInAddr ipfrom; - u16 frags; - u16 id; - u16 last; - u16 size; - u16 from[CPS_MAX_IPFRAG]; - u16 to[CPS_MAX_IPFRAG]; - u32 when; - u8 * ofs0; - u8 * buf; -} CPSFragTable; - -typedef struct { - u32 mode; - void *(*alloc)(u32); - void (* free)(void *); - void (* dhcp_callback)(void); - BOOL (* link_is_on)(void); - unsigned long long random_seed; - u8 * lan_buf; - u32 lan_buflen; - u32 mymss; - CPSInAddr requested_ip; - u32 yield_wait; -} CPSConfig; - -#define CPS_DONOTUSE_DHCP 0x0001 - -#if defined(BIG_ENDIAN) -#define CPS_htons(data) (data) -#define CPS_htonl(data) (data) -#else -static inline u16 CPS_htons (u16 data) -{ - return (u16)((data >> 8) | (data << 8)); -} - -static inline u32 CPS_htonl (u32 data) -{ - u32 tmp; - - tmp = ((data >> 8) & 0x00ff00ff) | ((data << 8) & 0xff00ff00); - return (tmp >> 16) | (tmp << 16); -} -#endif - -#define CPS_USHORT2_HOST(p) (*(u16 *)(p)) - -#define CPS_GETUSHORT1(p) ((u16)(((u8 *)(p))[0] << 8 | ((u8 *)(p))[1])) -#define CPS_GETULONG1(p) (((u32)CPS_GETUSHORT1(p) << 16) | CPS_GETUSHORT1((p) + 2)) - -#define CPS_GETUSHORT2(p) (CPS_htons(CPS_USHORT2_HOST(p))) -#define CPS_GETULONG2(p) (((u32)CPS_GETUSHORT2(p) << 16) | CPS_GETUSHORT2((p) + 2)) - -#define CPS_SETUSHORT1(p, v) do {((u8 *)(p))[0] = (u8)((v) >> 8); ((u8 *)(p))[1] = (u8)(v);} while (0) -#define CPS_SETULONG1(p, v) do {CPS_SETUSHORT1(p, (u16)((v) >> 16)); CPS_SETUSHORT1((p) + 2, (u16)(v));} while (0) - -#define CPS_SETUSHORT2(p, v) CPS_USHORT2_HOST(p) = CPS_htons((u16)(v)) -#define CPS_SETULONG2(p, v) do {CPS_SETUSHORT2(p, (u32)(v) >> 16); CPS_SETUSHORT2((p) + 2, v);} while (0) - -#if 0 -#define CPS_MilliSecondsToLTicks(msec) (OS_MilliSecondsToTicks(msec) >> 16) -#else -#define CPS_MilliSecondsToLTicks(msec) (((OS_SYSTEM_CLOCK / 64 / 1000) * (msec)) >> 16) -#endif - -#ifndef SDK_THREAD_INFINITY -#define CPS_CURSOC (CPSSocTab[OS_GetCurrentThread()->id]) -#define CPS_SET_CURSOC(p) CPS_CURSOC = p -#else -#define CPS_CURSOC ((CPSSoc *)OSi_GetSpecificData(OS_GetCurrentThread(), OSi_SPECIFIC_CPS)) -#define CPS_SET_CURSOC(p) OSi_SetSpecificData(OS_GetCurrentThread(), OSi_SPECIFIC_CPS, (void *)(p)) -#endif - -static inline u32 CPSi_GetTick () -{ - return (u32)(OS_GetTick() >> 16); -} - -extern void *(* CPSiAlloc)(u32); -extern void (* CPSiFree)(void *); -#define CPSi_Alloc(n) (*CPSiAlloc)(n) -#define CPSi_Free(p) (*CPSiFree)(p) - -extern CPSInAddr CPSMyIp; -extern CPSInAddr CPSNetMask; -extern CPSInAddr CPSGatewayIp; -extern CPSInAddr CPSDnsIp[2]; -extern CPSMacAddress CPSMyMac; -extern CPSInAddr CPSDhcpServerIp; - -extern int CPSNoIpReason; - -extern MATHRandContext32 CPSiRand32ctx; -#ifndef SDK_THREAD_INFINITY -extern CPSSoc * CPSSocTab[]; -#endif - -extern void CPSi_SslListen(CPSSoc *); -extern u32 CPSi_SslConnect(CPSSoc *); -extern u8 * CPSi_SslRead(u32 *, CPSSoc *); -extern void CPSi_SslConsume(u32, CPSSoc *); -extern s32 CPSi_SslGetLength(CPSSoc *); -extern u32 CPSi_SslWrite2(u8 *, u32, u8 *, u32, CPSSoc *); -extern void CPSi_SslShutdown(CPSSoc *); -extern void CPSi_SslClose(CPSSoc *); -extern void CPSi_SslPeriodical(u32 now); -extern void CPSi_SslCleanup(void); -extern void CPSi_SocConsumeRaw(u32 len, CPSSoc * soc); -extern u32 CPSi_TcpWrite2Raw(u8 * buf, u32 len, u8 * buf2, u32 len2, CPSSoc * soc); -extern u32 CPSi_TcpConnectRaw(CPSSoc * soc); -extern void CPSi_TcpShutdownRaw(CPSSoc * soc); -extern void CPSi_TcpListenRaw(CPSSoc * soc); -extern u8 * CPSi_TcpReadRaw(u32 * len, CPSSoc * soc); - -extern void CPS_Startup(CPSConfig *); -extern void CPS_Cleanup(void); -extern u32 CPS_GetThreadPriority(void); -extern void CPS_SetThreadPriority(u32); -extern void CPS_SocRegister(CPSSoc *); -extern void CPS_SocUnRegister(void); -extern void CPS_SocUse(void); -extern void CPS_SocRelease(void); -extern void CPS_SocDup(OSThread *); -extern void CPS_SetUdpCallback(int (*)(u8 *, u32, CPSSoc *)); -extern int CPS_CalmDown(void); -extern void CPS_SetScavengerCallback(void (* f)(void)); - -extern void CPS_SocBind(u16 local_port, u16 remote_port, CPSInAddr remote_ip); -extern void CPS_SocDatagramMode(void); -extern void CPS_SocPingMode(void); -extern u8 * CPS_SocRead(u32 * len); -extern void CPS_SocConsume(u32 len); -extern s32 CPS_SocGetLength(void); -extern u32 CPS_SocWrite(u8 * buf, u32 len); -extern u32 CPSi_SocWrite2(u8 * buf, u32 len, u8 * buf2, u32 len2); -extern u32 CPS_TcpConnect(void); -extern void CPS_TcpListen(void); -extern CPSInAddr CPS_SocWho(u16 * remote_port, CPSInAddr * local_ip); -extern void CPS_TcpShutdown(void); -extern void CPS_TcpClose(void); -extern void CPS_TcpAck(void); -extern u16 CPS_SocGetEport(void); - -extern int CPS_SocGetChar(void); -extern u8 * CPS_SocGets(void); -extern void CPS_SocPutChar(char); -extern void CPS_SocPuts(char *); -extern void CPS_SocPrintf(const char * format, ...); -extern void CPS_SocFlush(void); -extern s32 CPS_GetProperSize(void); - -extern void CPS_SetSsl(int); -extern u32 CPS_GetSslHandshakePriority(void); -extern void CPS_SetSslHandshakePriority(u32); -#define CPS_SetSslLowThreadPriority CPS_SetSslHandshakePriority -#define CPS_GetSslLowThreadPriority CPS_GetSslHandshakePriority - -extern CPSInAddr CPS_Resolve(const char *); -extern int CPS_RevResolve(CPSInAddr, char *, u32); -extern CPSInAddr CPS_NbResolve(const char *); -extern void CPS_EncodeNbName(u8 * d, u8 * s); - -extern void CPSi_RecvCallbackFunc(); - -#define CPS_MK_IPv4(a, b, c, d) (((u32)(a) << 24) + ((u32)(b) << 16) + ((u32)(c) << 8) + (u32)(d)) -#define CPS_CV_IPv4(ip) (u8)((ip) >> 24), (u8)((ip) >> 16), (u8)((ip) >> 8), (u8)(ip) - -#define OS_YieldThread_() OS_YieldThread() - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroWiFi/include/nitroWiFi/iw2wcm.h b/subprojects/NitroWiFi/include/nitroWiFi/iw2wcm.h deleted file mode 100644 index 9753455713..0000000000 --- a/subprojects/NitroWiFi/include/nitroWiFi/iw2wcm.h +++ /dev/null @@ -1,141 +0,0 @@ -#ifndef NITROWIFI_IW2WCM_H_ -#define NITROWIFI_IW2WCM_H_ - -#ifdef __cplusplus - -extern "C" { -#endif - -#define IW_ESSID_SIZE WCM_ESSID_SIZE -#define IW_BSSID_SIZE WCM_BSSID_SIZE - -#define IW_BSSBS_SIZE WCM_APLIST_SIZE -#define IW_BSSEX_SIZE WCM_APLIST_EX_SIZE -#define IW_BSS_SIZE WCM_APLIST_BLOCK_SIZE -#define IW_WEPBS_SIZE WCM_WEP_SIZE -#define IW_WEPEX_SIZE WCM_WEP_EX_SIZE -#define IW_WEP_SIZE WCM_WEP_STRUCT_SIZE -#define IW_WMDCFRECVWRK_SIZE WCM_DCF_RECV_EXCESS_SIZE -#define IW_WMDCFSENDWRK_SIZE WCM_DCF_SEND_EXCESS_SIZE -#define IW_WMDCFRECV_SIZE WCM_DCF_RECV_BUF_SIZE -#define IW_WMDCFSEND_SIZE WCM_DCF_SEND_BUF_SIZE - -#define IW_BUFFER_SIZE WCM_ETC_BUF_SIZE -#define IW_WORK_SIZE WCM_WORK_SIZE - -enum { - IW_PHASE_NULL = WCM_PHASE_NULL, - IW_PHASE_WAIT = WCM_PHASE_WAIT, - IW_PHASE_WAIT_IDLE = WCM_PHASE_WAIT_TO_IDLE, - IW_PHASE_IDLE = WCM_PHASE_IDLE, - IW_PHASE_IDLE_WAIT = WCM_PHASE_IDLE_TO_WAIT, - IW_PHASE_IDLE_SCAN = WCM_PHASE_IDLE_TO_SEARCH, - IW_PHASE_SCAN = WCM_PHASE_SEARCH, - IW_PHASE_SCAN_IDLE = WCM_PHASE_SEARCH_TO_IDLE, - IW_PHASE_IDLE_LINK = WCM_PHASE_IDLE_TO_DCF, - IW_PHASE_LINK = WCM_PHASE_DCF, - IW_PHASE_LINK_IDLE = WCM_PHASE_DCF_TO_IDLE, - IW_PHASE_FATALERROR = WCM_PHASE_FATAL_ERROR, - IW_PHASE__ -}; - -enum { - IW_RESULT_SUCCESS = WCM_RESULT_SUCCESS, - IW_RESULT_FAILURE = WCM_RESULT_FAILURE, - IW_RESULT_PROGRESS = WCM_RESULT_PROGRESS, - IW_RESULT_ACCEPT = WCM_RESULT_ACCEPT, - IW_RESULT_REJECT = WCM_RESULT_REJECT, - IW_RESULT_WMDISABLE = WCM_RESULT_WMDISABLE, - IW_RESULT_MEMORYERROR = WCM_RESULT_NOT_ENOUGH_MEM, - IW_RESULT_FATALERROR = WCM_RESULT_FATAL_ERROR, - IW_RESULT__ -}; - -enum { - IW_NOTIFY_COMMON = WCM_NOTIFY_COMMON, - IW_NOTIFY_STARTUP = WCM_NOTIFY_STARTUP, - IW_NOTIFY_CLEANUP = WCM_NOTIFY_CLEANUP, - IW_NOTIFY_SEARCH_START = WCM_NOTIFY_BEGIN_SEARCH, - IW_NOTIFY_SEARCH_END = WCM_NOTIFY_END_SEARCH, - IW_NOTIFY_CONNECT = WCM_NOTIFY_CONNECT, - IW_NOTIFY_DISCONNECT = WCM_NOTIFY_DISCONNECT, - IW_NOTIFY_FOUND = WCM_NOTIFY_FOUND_AP, - IW_NOTIFY_BEACON_LOST, - IW_NOTIFY_FATALERROR, - IW_NOTIFY__ -}; - -#define IW_OPTTST_CHANNEL WCM_OPTION_TEST_CHANNEL -#define IW_OPTFLT_CHANNEL WCM_OPTION_FILTER_CHANNEL -#define IW_OPTMSK_CHANNEL WCM_OPTION_MASK_CHANNEL -#define IW_OPT_CHANNEL_1 WCM_OPTION_CHANNEL_1 -#define IW_OPT_CHANNEL_2 WCM_OPTION_CHANNEL_2 -#define IW_OPT_CHANNEL_3 WCM_OPTION_CHANNEL_3 -#define IW_OPT_CHANNEL_4 WCM_OPTION_CHANNEL_4 -#define IW_OPT_CHANNEL_5 WCM_OPTION_CHANNEL_5 -#define IW_OPT_CHANNEL_6 WCM_OPTION_CHANNEL_6 -#define IW_OPT_CHANNEL_7 WCM_OPTION_CHANNEL_7 -#define IW_OPT_CHANNEL_8 WCM_OPTION_CHANNEL_8 -#define IW_OPT_CHANNEL_9 WCM_OPTION_CHANNEL_9 -#define IW_OPT_CHANNEL_10 WCM_OPTION_CHANNEL_10 -#define IW_OPT_CHANNEL_11 WCM_OPTION_CHANNEL_11 -#define IW_OPT_CHANNEL_12 WCM_OPTION_CHANNEL_12 -#define IW_OPT_CHANNEL_13 WCM_OPTION_CHANNEL_13 -#define IW_OPT_CHANNEL_ALL WCM_OPTION_CHANNEL_ALL -#define IW_OPT_CHANNEL_RDC WCM_OPTION_CHANNEL_RDC - -#define IW_OPTTST_POWER WCM_OPTION_TEST_POWER -#define IW_OPTFLT_POWER WCM_OPTION_FILTER_POWER -#define IW_OPTMSK_POWER WCM_OPTION_MASK_POWER -#define IW_OPT_POWER_SAVE WCM_OPTION_POWER_SAVE -#define IW_OPT_POWER_FULL WCM_OPTION_POWER_ACTIVE - -#define IW_OPTTST_AUTHMODE WCM_OPTION_TEST_AUTH -#define IW_OPTFLT_AUTHMODE WCM_OPTION_FILTER_AUTH -#define IW_OPTMSK_AUTHMODE WCM_OPTION_MASK_AUTH -#define IW_OPT_AUTHMODE_OPENSYSTEM WCM_OPTION_AUTH_OPENSYSTEM -#define IW_OPT_AUTHMODE_SHAREDKEY WCM_OPTION_AUTH_SHAREDKEY -#define IW_OPT_AUTHMODE_OPEN_SYSTEM WCM_OPTION_AUTH_OPENSYSTEM - -#define IW_OPTTST_SCANTYPE WCM_OPTION_TEST_SCANTYPE -#define IW_OPTFLT_SCANTYPE WCM_OPTION_FILTER_SCANTYPE -#define IW_OPTMSK_SCANTYPE WCM_OPTION_MASK_SCANTYPE -#define IW_OPT_SCANTYPE_PASSIVE WCM_OPTION_SCANTYPE_PASSIVE -#define IW_OPT_SCANTYPE_ACTIVE WCM_OPTION_SCANTYPE_ACTIVE - -#define IW_Bssid_Any WCM_Bssid_Any -#define IW_Essid_Any WCM_Essid_Any -#define IW_BSSID_ANY WCM_BSSID_ANY -#define IW_ESSID_ANY WCM_ESSID_ANY - -#define IW_BOUNDUPPER4 WCM_ROUNDUP4 -#define IW_BOUNDLOWER4 WCM_ROUNDDOWN4 -#define IW_BOUND4 WCM_ROUNDUP4 -#define IW_BOUNDUPPER32 WCM_ROUNDUP32 -#define IW_BOUNDLOWER32 WCM_ROUNDDOWN32 -#define IW_BOUND32 WCM_ROUNDUP32 - -#define IWNoticeParameter WCMNoticeParameter -#define IWNotice WCMNotice -#define IWNotify WCMNotify -#define IWConfig WCMConfig - -#define IW_Init WCM_Init -#define IW_Exit WCM_Finish -#define IW_Startup WCM_StartupAsync -#define IW_Cleanup WCM_CleanupAsync -#define IW_Search WCM_SearchAsync -#define IW_Connect WCM_ConnectAsync -#define IW_Disconnect WCM_DisconnectAsync -#define IW_GetPhase WCM_GetPhase -#define IW_ChangeOption WCM_UpdateOption -#define IW_LockBssDesc WCM_LockApList -#define IW_ClearBssDesc WCM_ClearApList -#define IW_CountBssDesc WCM_CountApList -#define IW_PointBssDesc WCM_PointApList - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroWiFi/include/nitroWiFi/so2soc.h b/subprojects/NitroWiFi/include/nitroWiFi/so2soc.h deleted file mode 100644 index 99d207d8f7..0000000000 --- a/subprojects/NitroWiFi/include/nitroWiFi/so2soc.h +++ /dev/null @@ -1,337 +0,0 @@ -#ifndef NITROWIFI_SO2SOC_H_ -#define NITROWIFI_SO2SOC_H_ - -#ifdef __cplusplus - -extern "C" { -#endif - -#define SO_VENDOR_NINTENDO SOC_VENDOR_NINTENDO -#define SO_VERSION SOC_VERSION - -#define SO_PF_UNSPEC SOC_PF_UNSPEC -#define SO_PF_INET SOC_PF_INET -#define IP_INET SOC_PF_INET - -#define SO_AF_UNSPEC SOC_AF_UNSPEC -#define SO_AF_INET SOC_AF_INET - -#define SO_INET_ADDRSTRLEN SOC_INET_ADDRSTRLEN - -#define SO_SOCK_STREAM SOC_SOCK_STREAM -#define SO_SOCK_DGRAM SOC_SOCK_DGRAM - -#define SO_MSG_OOB SOC_MSG_OOB -#define SO_MSG_PEEK SOC_MSG_PEEK -#define SO_MSG_DONTWAIT SOC_MSG_DONTWAIT - -#define SO_SOL_SOCKET SOC_SOL_SOCKET -#define SO_SOL_IP SOC_SOL_IP -#define SO_SOL_ICMP SOC_SOL_ICMP -#define SO_SOL_TCP SOC_SOL_TCP -#define SO_SOL_UDP SOC_SOL_UDP - -#define SO_IPPROTO_ICMP SOC_IPPROTO_ICMP -#define SO_IPPROTO_IGMP SOC_IPPROTO_IGMP -#define SO_IPPROTO_TCP SOC_IPPROTO_TCP -#define SO_IPPROTO_UDP SOC_IPPROTO_UDP - -#define SO_INADDR_ANY SOC_INADDR_ANY -#define SO_INADDR_BROADCAST SOC_INADDR_BROADCAST -#define SO_INADDR_LOOPBACK SOC_INADDR_LOOPBACK -#define SO_INADDR_UNSPEC_GROUP SOC_INADDR_UNSPEC_GROUP -#define SO_INADDR_ALLHOSTS_GROUP SOC_INADDR_ALLHOSTS_GROUP -#define SO_INADDR_MAX_LOCAL_GROUP SOC_INADDR_MAX_LOCAL_GROUP - -#define SO_IP_TOS SOC_IP_TOS -#define SO_IP_TTL SOC_IP_TTL -#define SO_IP_MULTICAST_LOOP SOC_IP_MULTICAST_LOOP -#define SO_IP_MULTICAST_TTL SOC_IP_MULTICAST_TTL -#define SO_IP_ADD_MEMBERSHIP SOC_IP_ADD_MEMBERSHIP -#define SO_IP_DROP_MEMBERSHIP SOC_IP_DROP_MEMBERSHIP -#define SO_SO_REUSEADDR SOC_SO_REUSEADDR -#define SO_SO_LINGER SOC_SO_LINGER -#define SO_SO_OOBINLINE SOC_SO_OOBINLINE -#define SO_SO_SNDBUF SOC_SO_SNDBUF -#define SO_SO_RCVBUF SOC_SO_RCVBUF -#define SO_SO_SNDLOWAT SOC_SO_SNDLOWAT -#define SO_SO_RCVLOWAT SOC_SO_RCVLOWAT -#define SO_SO_TYPE SOC_SO_TYPE -#define SO_TCP_NODELAY SOC_TCP_NODELAY -#define SO_TCP_MAXSEG SOC_TCP_MAXSEG - -#define SO_SHUT_RD SOC_SHUT_RD -#define SO_SHUT_WR SOC_SHUT_WR -#define SO_SHUT_RDWR SOC_SHUT_RDWR - -#define SO_F_GETFL SOC_F_GETFL -#define SO_F_SETFL SOC_F_SETFL -#define SO_O_NONBLOCK SOC_O_NONBLOCK - -#define SO_POLLRDNORM SOC_POLLRDNORM -#define SO_POLLRDBAND SOC_POLLRDBAND -#define SO_POLLPRI SOC_POLLPRI -#define SO_POLLWRNORM SOC_POLLWRNORM -#define SO_POLLWRBAND SOC_POLLWRBAND -#define SO_POLLERR SOC_POLLERR -#define SO_POLLHUP SOC_POLLHUP -#define SO_POLLNVAL SOC_POLLNVAL -#define SO_POLLIN SOC_POLLIN -#define SO_POLLOUT SOC_POLLOUT - -#define SO_INFTIM SOC_INFTIM - -#define SO_E2BIG SOC_E2BIG -#define SO_EACCES SOC_EACCES -#define SO_EADDRINUSE SOC_EADDRINUSE -#define SO_EADDRNOTAVAIL SOC_EADDRNOTAVAIL -#define SO_EAFNOSUPPORT SOC_EAFNOSUPPORT -#define SO_EAGAIN SOC_EAGAIN -#define SO_EALREADY SOC_EALREADY -#define SO_EBADF SOC_EBADF -#define SO_EBADMSG SOC_EBADMSG -#define SO_EBUSY SOC_EBUSY -#define SO_ECANCELED SOC_ECANCELED -#define SO_ECHILD SOC_ECHILD -#define SO_ECONNABORTED SOC_ECONNABORTED -#define SO_ECONNREFUSED SOC_ECONNREFUSED -#define SO_ECONNRESET SOC_ECONNRESET -#define SO_EDEADLK SOC_EDEADLK -#define SO_EDESTADDRREQ SOC_EDESTADDRREQ -#define SO_EDOM SOC_EDOM -#define SO_EDQUOT SOC_EDQUOT -#define SO_EEXIST SOC_EEXIST -#define SO_EFAULT SOC_EFAULT -#define SO_EFBIG SOC_EFBIG -#define SO_EHOSTUNREACH SOC_EHOSTUNREACH -#define SO_EIDRM SOC_EIDRM -#define SO_EILSEQ SOC_EILSEQ -#define SO_EINPROGRESS SOC_EINPROGRESS -#define SO_EINTR SOC_EINTR -#define SO_EINVAL SOC_EINVAL -#define SO_EIO SOC_EIO -#define SO_EISCONN SOC_EISCONN -#define SO_EISDIR SOC_EISDIR -#define SO_ELOOP SOC_ELOOP -#define SO_EMFILE SOC_EMFILE -#define SO_EMLINK SOC_EMLINK -#define SO_EMSGSIZE SOC_EMSGSIZE -#define SO_EMULTIHOP SOC_EMULTIHOP -#define SO_ENAMETOOLONG SOC_ENAMETOOLONG -#define SO_ENETDOWN SOC_ENETDOWN -#define SO_ENETRESET SOC_ENETRESET -#define SO_ENETUNREACH SOC_ENETUNREACH -#define SO_ENFILE SOC_ENFILE -#define SO_ENOBUFS SOC_ENOBUFS -#define SO_ENODATA SOC_ENODATA -#define SO_ENODEV SOC_ENODEV -#define SO_ENOENT SOC_ENOENT -#define SO_ENOEXEC SOC_ENOEXEC -#define SO_ENOLCK SOC_ENOLCK -#define SO_ENOLINK SOC_ENOLINK -#define SO_ENOMEM SOC_ENOMEM -#define SO_ENOMSG SOC_ENOMSG -#define SO_ENOPROTOOPT SOC_ENOPROTOOPT -#define SO_ENOSPC SOC_ENOSPC -#define SO_ENOSR SOC_ENOSR -#define SO_ENOSTR SOC_ENOSTR -#define SO_ENOSYS SOC_ENOSYS -#define SO_ENOTCONN SOC_ENOTCONN -#define SO_ENOTDIR SOC_ENOTDIR -#define SO_ENOTEMPTY SOC_ENOTEMPTY -#define SO_ENOTSOCK SOC_ENOTSOCK -#define SO_ENOTSUP SOC_ENOTSUP -#define SO_ENOTTY SOC_ENOTTY -#define SO_ENXIO SOC_ENXIO -#define SO_EOPNOTSUPP SOC_EOPNOTSUPP -#define SO_EOVERFLOW SOC_EOVERFLOW -#define SO_EPERM SOC_EPERM -#define SO_EPIPE SOC_EPIPE -#define SO_EPROTO SOC_EPROTO -#define SO_EPROTONOSUPPORT SOC_EPROTONOSUPPORT -#define SO_EPROTOTYPE SOC_EPROTOTYPE -#define SO_ERANGE SOC_ERANGE -#define SO_EROFS SOC_EROFS -#define SO_ESPIPE SOC_ESPIPE -#define SO_ESRCH SOC_ESRCH -#define SO_ESTALE SOC_ESTALE -#define SO_ETIME SOC_ETIME -#define SO_ETIMEDOUT SOC_ETIMEDOUT -#define SO_ETXTBSY SOC_ETXTBSY -#define SO_EWOULDBLOCK SOC_EWOULDBLOCK -#define SO_EXDEV SOC_EXDEV - -#define SO_MAXDNAME SOC_MAXDNAME - -#define SO_MEM_TCP_INFO SOC_MEM_TCP_INFO -#define SO_MEM_TCP_SENDBUF SOC_MEM_TCP_SENDBUF -#define SO_MEM_TCP_RECVBUF SOC_MEM_TCP_RECVBUF -#define SO_MEM_UDP_INFO SOC_MEM_UDP_INFO -#define SO_MEM_UDP_SENDBUF SOC_MEM_UDP_SENDBUF -#define SO_MEM_UDP_RECVBUF SOC_MEM_UDP_RECVBUF -#define SO_MEM_TIMEWAITBUF SOC_MEM_TIMEWAITBUF -#define SO_MEM_REASSEMBLYBUF SOC_MEM_REASSEMBLYBUF -#define SO_MEM_SOCKADDR SOC_MEM_SOCKADDR -#define SO_MEM_CANONNAME SOC_MEM_CANONNAME -#define SO_MEM_ADDRINFO SOC_MEM_ADDRINFO - -#define SO_FLAG_DHCP SOC_FLAG_DHCP -#define SO_FLAG_PPPoE SOC_FLAG_PPPoE -#define SO_FLAG_ZEROCONF SOC_FLAG_ZEROCONF - -#define IP_ERR_NONE SOC_IP_ERR_NONE -#define IP_ERR_BUSY SOC_IP_ERR_BUSY -#define IP_ERR_UNREACHABLE SOC_IP_ERR_UNREACHABLE -#define IP_ERR_RESET SOC_IP_ERR_RESET -#define IP_ERR_NOT_EXIST SOC_IP_ERR_NOT_EXIST -#define IP_ERR_EXIST SOC_IP_ERR_EXIST -#define IP_ERR_SOCKET_UNSPECIFIED SOC_IP_ERR_SOCKET_UNSPECIFIED -#define IP_ERR_INS_RESOURCES SOC_IP_ERR_INS_RESOURCES -#define IP_ERR_CLOSING SOC_IP_ERR_CLOSING -#define IP_ERR_AGAIN SOC_IP_ERR_AGAIN -#define IP_ERR_TIMEOUT SOC_IP_ERR_TIMEOUT -#define IP_ERR_REFUSED SOC_IP_ERR_REFUSED -#define IP_ERR_INVALID SOC_IP_ERR_INVALID -#define IP_ERR_INV_SOCKET SOC_IP_ERR_INV_SOCKET -#define IP_ERR_INV_OPTION SOC_IP_ERR_INV_OPTION - -#define IP_ERR_CANCELED SOC_IP_ERR_CANCELED -#define IP_ERR_DATASIZE SOC_IP_ERR_DATASIZE -#define IP_ERR_SOURCE_QUENCH SOC_IP_ERR_SOURCE_QUENCH -#define IP_ERR_NETDOWN SOC_IP_ERR_NETDOWN - -#define IP_ERR_DHCP_TIMEOUT SOC_IP_ERR_DHCP_TIMEOUT -#define IP_ERR_DHCP_EXPIRED SOC_IP_ERR_DHCP_EXPIRED -#define IP_ERR_DHCP_NAK SOC_IP_ERR_DHCP_NAK -#define IP_ERR_PPPoE_TIMEOUT SOC_IP_ERR_PPPoE_TIMEOUT -#define IP_ERR_PPPoE_SERVICE_NAME SOC_IP_ERR_PPPoE_SERVICE_NAME -#define IP_ERR_PPPoE_AC_SYSTEM SOC_IP_ERR_PPPoE_AC_SYSTEM -#define IP_ERR_PPPoE_GENERIC SOC_IP_ERR_PPPoE_GENERIC -#define IP_ERR_LCP SOC_IP_ERR_LCP -#define IP_ERR_AUTH SOC_IP_ERR_AUTH -#define IP_ERR_IPCP SOC_IP_ERR_IPCP -#define IP_ERR_PPP_TERMINATED SOC_IP_ERR_PPP_TERMINATED -#define IP_ERR_ADDR_COLLISION SOC_IP_ERR_ADDR_COLLISION -#define IP_ERR_LINK_DOWN SOC_IP_ERR_LINK_DOWN - -#define IP_ERR_DNS_MAX SOC_IP_ERR_DNS_MAX -#define IP_ERR_DNS_MIN SOC_IP_ERR_DNS_MIN - -#define DNS_ERROR_MASK SOC_DNS_ERROR_MASK -#define DNS_ERROR_NONE SOC_DNS_ERROR_NONE -#define DNS_ERROR_FORMAT SOC_DNS_ERROR_FORMAT -#define DNS_ERROR_SERVER SOC_DNS_ERROR_SERVER -#define DNS_ERROR_NAME SOC_DNS_ERROR_NAME -#define DNS_ERROR_NOTIMP SOC_DNS_ERROR_NOTIMP -#define DNS_ERROR_REFUSED SOC_DNS_ERROR_REFUSED - -#define IP_ERR_DNS_FORMAT SOC_IP_ERR_DNS_FORMAT -#define IP_ERR_DNS_SERVER SOC_IP_ERR_DNS_SERVER -#define IP_ERR_DNS_NAME SOC_IP_ERR_DNS_NAME -#define IP_ERR_DNS_NOTIMP SOC_IP_ERR_DNS_NOTIMP -#define IP_ERR_DNS_REFUSED SOC_IP_ERR_DNS_REFUSED - -#define SOSockAddr SOCSockAddr -#define SOInAddr SOCInAddr -#define SOSockAddrIn SOCSockAddrIn -#define SOLinger SOCLinger -#define SOIpMreq SOCIpMreq -#define SOPollFD SOCPollFD -#define SOHostEnt SOCHostEnt -#define SOResolver SOCResolver -#define SOConfig SOCConfig -#define IPSocket SOCIPSocket -#define IP_SOCKLEN sizeof(SOCIPSocket) -#define IP_ALEN SOC_ALEN -#define IPTime SOCTime -#define MAC_ALEN SOC_MAC_ALEN - -#define IPAddrAny SOCAddrAny -#define IPAddrLoopback SOCAddrLoopback -#define IPAddrLimited SOCAddrLimited - -#define SO_NtoHl SOC_NtoHl -#define SO_NtoHs SOC_NtoHs -#define SO_HtoNl SOC_HtoNl -#define SO_HtoNs SOC_HtoNs - -#define SO_InetAtoN SOC_InetAtoN -#define SO_InetNtoA SOC_InetNtoA - -#define SO_InetPtoN SOC_InetPtoN -#define SO_InetNtoP SOC_InetNtoP - -#define SO_Socket SOC_Socket -#define SO_Close SOC_Close -#define SO_Shutdown SOC_Shutdown - -#define SO_Bind SOC_Bind -#define SO_Connect SOC_Connect -#define SO_GetPeerName SOC_GetPeerName -#define SO_GetSockName SOC_GetSockName - -#define SO_Read SOC_Read -#define SO_Recv SOC_Recv -#define SO_RecvFrom SOC_RecvFrom - -#define SO_Write SOC_Write -#define SO_Send SOC_Send -#define SO_SendTo SOC_SendTo - -#define SO_Accept SOC_Accept -#define SO_Listen SOC_Listen - -#define SO_SockAtMark SOC_SockAtMark - -#define SO_GetSockOpt SOC_GetSockOpt -#define SO_SetSockOpt SOC_SetSockOpt - -#define SO_Fcntl SOC_Fcntl - -#define SO_Poll SOC_Poll - -#define SO_GetHostByAddr SOC_GetHostByAddr -#define SO_GetHostByName SOC_GetHostByName -#define SO_FreeAddrInfo SOC_FreeAddrInfo -#define SO_GetNameInfo SOC_GetNameInfo - -#define SO_GetAddrInfo SOC_GetAddrInfo -#define SO_GetAddrInfoAsync SOC_GetAddrInfoAsync - -#define SO_GetHostID SOC_GetHostID - -#define SO_Init SOC_Init -#define SO_Reset SOC_Reset -#define SO_Startup SOC_Startup -#define SO_Cleanup SOC_Cleanup - -#define SO_SetResolver SOC_SetResolver -#define SO_GetResolver SOC_GetResolver - -#define IPInterface SOCInterface -#define IP_GetMacAddr SOC_GetMacAddr -#define IP_GetAddr SOC_GetAddr -#define IP_GetAlias SOC_GetAlias -#define IP_GetGateway SOC_GetGateway -#define IP_GetNetmask SOC_GetNetmask -#define IP_GetBroadcastAddr SOC_GetBroadcastAddr -#define IP_GetLinkState SOC_GetLinkState -#define IP_GetConfigError SOC_GetConfigError -#define IP_ClearConfigError SOC_ClearConfigError - -#define DHCP_GetStatus SOC_DHCPGetStatus -#define DHCPInfo SOCDHCPInfo; -#define DHCP_STATE_INIT SOC_DHCP_STATE_INIT -#define DHCP_STATE_SELECTING SOC_DHCP_STATE_SELECTING -#define DHCP_STATE_REQUESTING SOC_DHCP_STATE_REQUESTING -#define DHCP_STATE_BOUND SOC_DHCP_STATE_BOUND -#define DHCP_STATE_RENEWING SOC_DHCP_STATE_RENEWING -#define DHCP_STATE_REBINDING SOC_DHCP_STATE_REBINDING -#define DHCP_STATE_INIT_REBOOT SOC_DHCP_STATE_INIT_REBOOT -#define DHCP_STATE_REBOOTING SOC_DHCP_STATE_REBOOTING - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroWiFi/include/nitroWiFi/soc.h b/subprojects/NitroWiFi/include/nitroWiFi/soc.h deleted file mode 100644 index 4d32516157..0000000000 --- a/subprojects/NitroWiFi/include/nitroWiFi/soc.h +++ /dev/null @@ -1,398 +0,0 @@ -#ifndef NITROWIFI_SOC_H_ -#define NITROWIFI_SOC_H_ - -#include -#include -#include -#include -#include - -#ifdef __cplusplus - -extern "C" { -#endif - -#define SOC_VENDOR_NINTENDO 0x0000 -#define SOC_VERSION 0x0100 -#define SOC_PF_INET 2 -#define SOC_AF_INET SOC_PF_INET -#define SOC_SOCK_STREAM 1 -#define SOC_SOCK_DGRAM 2 -#define SOC_FLAG_DHCP 0x0001 -#define SOC_SOL_SOCKET 0xffff -#define SOC_REUSEADDR 0x00000004 -#define SOC_MSG_PEEK SOCL_MSG_PEEK -#define SOC_MSG_DONTWAIT SOCL_MSG_DONTWAIT -#define SOC_INET_ADDRSTRLEN 16 - -#define SOC_INADDR_ANY ((u32)0x00000000) -#define SOC_INADDR_BROADCAST ((u32)0xffffffff) -#define SOC_INADDR_LOOPBACK ((u32)0x7f000001) -#define SOC_INADDR_UNSPEC_GROUP ((u32)0xe0000000) -#define SOC_INADDR_ALLHOSTS_GROUP ((u32)0xe0000001) -#define SOC_INADDR_MAX_LOCAL_GROUP ((u32)0xe00000ff) - -#define SOC_SHUT_RD 0 -#define SOC_SHUT_WR 1 -#define SOC_SHUT_RDWR 2 - -#define SOC_F_GETFL 3 -#define SOC_F_SETFL 4 -#define SOC_O_NONBLOCK 0x04 - -#define SOC_SOL_SOCKET 0xffff -#define SOC_SO_SNDBUF 0x00001001 -#define SOC_SO_RCVBUF 0x00001002 -#define SOC_SO_REUSEADDR 0x00000004 - -#define SOC_DHCP_STATE_INIT 0 -#define SOC_DHCP_STATE_SELECTING 1 -#define SOC_DHCP_STATE_REQUESTING 2 -#define SOC_DHCP_STATE_BOUND 3 -#define SOC_DHCP_STATE_RENEWING 4 -#define SOC_DHCP_STATE_REBINDING 5 -#define SOC_DHCP_STATE_INIT_REBOOT 6 -#define SOC_DHCP_STATE_REBOOTING 7 - -#define SOC_IP_ERR_NONE 0 -#define SOC_IP_ERR_BUSY (-1) -#define SOC_IP_ERR_UNREACHABLE (-2) -#define SOC_IP_ERR_RESET (-3) -#define SOC_IP_ERR_NOT_EXIST (-4) -#define SOC_IP_ERR_EXIST (-5) -#define SOC_IP_ERR_SOCKET_UNSPECIFIED (-6) -#define SOC_IP_ERR_INS_RESOURCES (-7) -#define SOC_IP_ERR_CLOSING (-8) -#define SOC_IP_ERR_AGAIN (-9) -#define SOC_IP_ERR_TIMEOUT (-10) -#define SOC_IP_ERR_REFUSED (-11) -#define SOC_IP_ERR_INVALID (-12) -#define SOC_IP_ERR_INV_SOCKET (-13) -#define SOC_IP_ERR_INV_OPTION (-14) - -#define SOC_IP_ERR_CANCELED (-16) -#define SOC_IP_ERR_DATASIZE (-17) -#define SOC_IP_ERR_SOURCE_QUENCH (-18) -#define SOC_IP_ERR_NETDOWN (-19) - -#define SOC_IP_ERR_DHCP_TIMEOUT (-100) -#define SOC_IP_ERR_DHCP_EXPIRED (-101) -#define SOC_IP_ERR_DHCP_NAK (-102) -#define SOC_IP_ERR_PPPoE_TIMEOUT (-103) -#define SOC_IP_ERR_PPPoE_SERVICE_NAME (-104) -#define SOC_IP_ERR_PPPoE_AC_SYSTEM (-105) -#define SOC_IP_ERR_PPPoE_GENERIC (-106) -#define SOC_IP_ERR_LCP (-107) -#define SOC_IP_ERR_AUTH (-108) -#define SOC_IP_ERR_IPCP (-109) -#define SOC_IP_ERR_PPP_TERMINATED (-110) -#define SOC_IP_ERR_ADDR_COLLISION (-111) -#define SOC_IP_ERR_LINK_DOWN (-112) - -#define SOC_IP_ERR_DNS_MAX (-200) -#define SOC_IP_ERR_DNS_MIN (SOC_IP_ERR_DNS_MAX - 15) - -#define SOC_DNS_ERROR_MASK 0x000f -#define SOC_DNS_ERROR_NONE 0x0000 -#define SOC_DNS_ERROR_FORMAT 0x0001 -#define SOC_DNS_ERROR_SERVER 0x0002 -#define SOC_DNS_ERROR_NAME 0x0003 -#define SOC_DNS_ERROR_NOTIMP 0x0004 -#define SOC_DNS_ERROR_REFUSED 0x0005 -#define SOC_IP_ERR_DNS_FORMAT (SOC_IP_ERR_DNS_MAX - SOC_DNS_ERROR_FORMAT) -#define SOC_IP_ERR_DNS_SERVER (SOC_IP_ERR_DNS_MAX - SOC_DNS_ERROR_SERVER) -#define SOC_IP_ERR_DNS_NAME (SOC_IP_ERR_DNS_MAX - SOC_DNS_ERROR_NAME) -#define SOC_IP_ERR_DNS_NOTIMP (SOC_IP_ERR_DNS_MAX - SOC_DNS_ERROR_NOTIMP) -#define SOC_IP_ERR_DNS_REFUSED (SOC_IP_ERR_DNS_MAX - SOC_DNS_ERROR_REFUSED) -#define SOC_DNS_NAME_MAX 255 -#define SOC_MAXDNAME (SOC_DNS_NAME_MAX + 1) - -#define SOC_ALEN 4 -#define SOC_MAC_ALEN 6 -typedef s64 SOCTime; - -extern const u8 SOCAddrAny[SOC_ALEN]; -extern const u8 IPAddrLoopback[SOC_ALEN]; -extern const u8 IPAddrLimited[SOC_ALEN]; -typedef struct SOCSockAddr { - u8 len; - u8 family; - u8 data[6]; -} SOCSockAddr; - -typedef struct SOCInAddr { - u32 addr; -} SOCInAddr; - -typedef struct SOCSockAddrIn { - u8 len; - u8 family; - u16 port; - SOCInAddr addr; -} SOCSockAddrIn; - -typedef struct SOCPollFD { - int fd; - short events; - short revents; -} SOCPollFD; - -typedef struct SOCHostEnt { - char * name; - char ** aliases; - s16 addrType; - s16 length; - u8 ** addrList; -} SOCHostEnt; - -typedef struct SOCIPSocket { - u8 len; - u8 family; - u16 port; - u8 addr[SOC_ALEN]; -} SOCIPSocket; - -typedef struct SOCConfig { - u16 vendor; - u16 version; - - void * (*alloc)(u32 name, s32 size); - void (* free)(u32 name, void * ptr, s32 size); - - u32 flag; - SOCInAddr addr; - SOCInAddr netmask; - SOCInAddr router; - SOCInAddr dns1; - SOCInAddr dns2; - - s32 timeWaitBuffer; - s32 reassemblyBuffer; - s32 mtu; - - s32 rwin; - SOCTime r2; - - const char * peerid; - const char * passwd; - - const char * serviceName; - - const char * hostName; - s32 rdhcp; - - s32 udpSendBuff; - s32 udpRecvBuff; -} SOCConfig; - -typedef struct SOCAddrInfo SOCAddrInfo; -struct SOCAddrInfo { - int flags; - int family; - int sockType; - int protocol; - unsigned addrLen; - char * canonName; - void * addr; - SOCAddrInfo * next; -}; - -typedef SOCLSslConnection SOCSslConnection; -typedef SOCLCaInfo SOCCaInfo; -typedef int (* SOCSslAuthHandler) (int result, SOCSslConnection * con, int level); - -#define SOC_CERT_OUTOFDATE SOCL_CERT_OUTOFDATE -#define SOC_CERT_BADSERVER SOCL_CERT_BADSERVER - -#define SOC_CERT_ERRMASK SOCL_CERT_ERRMASK - -#define SOC_CERT_NOROOTCA SOCL_CERT_NOROOTCA -#define SOC_CERT_BADSIGNATURE SOCL_CERT_BADSIGNATURE -#define SOC_CERT_UNKNOWN_SIGALGORITHM SOCL_CERT_UNKNOWN_SIGALGORITHM -#define SOC_CERT_UNKNOWN_PUBKEYALGORITHM SOCL_CERT_UNKNOWN_PUBKEYALGORITHM - -u32(SOC_NtoHl) (u32 netlong); -u16(SOC_NtoHs) (u16 netshort); -u32(SOC_HtoNl) (u32 hostlong); -u16(SOC_HtoNs) (u16 hostshort); - -#ifdef SDK_BIG_ENDIAN -#define SOC_NtoHl(netlong) ((u32)(netlong)) -#define SOC_NtoHs(netshort) ((u16)(netshort)) -#define SOC_HtoNl(hostlong) ((u32)(hostlong)) -#define SOC_HtoNs(hostshort) ((u16)(hostshort)) - -#else -#define SOC_NtoHl(netlong) \ - ( \ - (u32) \ - ( \ - (((u32)(netlong) >> 24) & 0x000000ff) | (((u32)(netlong) >> 8) & 0x0000ff00) | \ - (((u32)(netlong) << 8) & 0x00ff0000) | (((u32)(netlong) << 24) & 0xff000000) \ - ) \ - ) - -#define SOC_NtoHs(netshort) ((u16)((((u16)(netshort) >> 8) & 0x00ff) | (((u16)(netshort) << 8) & 0xff00))) - -#define SOC_HtoNl(hostlong) \ - ( \ - (u32) \ - ( \ - (((u32)(hostlong) >> 24) & 0x000000ff) | (((u32)(hostlong) >> 8) & 0x0000ff00) | \ - (((u32)(hostlong) << 8) & 0x00ff0000) | (((u32)(hostlong) << 24) & 0xff000000) \ - ) \ - ) - -#define SOC_HtoNs(hostshort) ((u16)((((u16)(hostshort) >> 8) & 0x00ff) | (((u16)(hostshort) << 8) & 0xff00))) -#endif - -int SOC_Socket(int pf, int type, int protocol); -int SOC_Bind(int s, const void * sockAddr); -int SOC_Connect(int s, const void * sockAddr); -int SOC_Read(int s, void * buf, int len); -int SOC_Recv(int s, void * buf, int len, int flags); -int SOC_RecvFrom(int s, void * buf, int len, int flags, void * sockFrom); -int SOC_Write(int s, const void * buf, int len); -int SOC_Send(int s, const void * buf, int len, int flags); -int SOC_SendTo(int s, const void * buf, int len, int flags, const void * sockTo); -int SOC_Close(int s); -int SOC_Shutdown(int s, int how); - -SOCHostEnt * SOC_GetHostByAddr(const void * addr, int len, int type); -SOCHostEnt * SOC_GetHostByName(const char * name); -int SOC_GetSockName(int s, void * sockAddr); -long SOC_GetHostID(void); - -int SOC_Startup(const SOCConfig * config); -int SOC_Cleanup(void); - -int SOC_SetResolver(const SOCInAddr * dns1, const SOCInAddr * dns2); -int SOC_GetResolver(SOCInAddr * dns1, SOCInAddr * dns2); - -int SOC_Accept(int s, void * sockAddr); -int SOC_Listen(int s, int backlog); - -int SOC_Fcntl(int s, int cmd, int mode); - -int SOC_InetAtoN(const char * cp, SOCInAddr * inp); -char * SOC_InetNtoA(SOCInAddr in); -int SOC_InetPtoN(int af, const char * src, void * dst); -const char * SOC_InetNtoP(int af, const void * src, char * dst, unsigned len); - -int SOC_Poll(SOCPollFD fds[], unsigned nfds, OSTick timeout); - -static inline int SOC_EnableSsl (int s, SOCSslConnection * con) -{ - return SOCL_EnableSsl(s, (SOCLSslConnection *)con); -} - -static inline void SOC_AddRandomSeed (void * seed, u32 len) -{ - SOCL_AddRandomSeed(seed, len); -} - -static inline int SOC_GetSockOpt (int s, int level, int optname, void * optval, int * optlen) -{ - (void)s; - (void)level; - (void)optname; - MI_CpuClear8(optval, (u32) * optlen); - - return 0; -} - -static inline int SOC_SetSockOpt (int s, int level, int optname, const void * optval, int optlen) -{ - (void)s; - (void)level; - (void)optname; - (void)optval; - (void)optlen; - - return 0; -} - -static inline void SOC_Init (void) -{ -} - -static inline int SOC_Reset (int final) -{ - (void)final; - return 0; -} - -void SOC_U32to4U8(u32 adr_u32, u8 * adr_4u8); - -typedef struct SOCInterface { - u32 _dummy_; -} SOCInterface; - -static inline void SOC_GetMacAddr (SOCInterface * interface, u8 * macAddress) -{ - (void)interface; - OS_GetMacAddress(macAddress); -} - -static inline void SOC_GetAddr (SOCInterface * interface, u8 * addr) -{ - u32 hostip = (u32)SOCL_GetHostID(); - SOC_U32to4U8(hostip, addr); - - (void)interface; -} - -static inline void SOC_GetAlias (SOCInterface * interface, u8 * addr) -{ - SOC_GetAddr(interface, addr); -} - -static inline void SOC_GetGateway (SOCInterface * interface, u8 * addr) -{ - SOC_U32to4U8((u32)CPSGatewayIp, addr); - (void)interface; -} - -static inline void SOC_GetNetmask (SOCInterface * interface, u8 * addr) -{ - SOC_U32to4U8((u32)CPSNetMask, addr); - (void)interface; -} - -static inline void SOC_GetBroadcastAddr (SOCInterface * interface, u8 * addr) -{ - SOC_U32to4U8((u32)SOC_INADDR_BROADCAST, addr); - (void)interface; -} - -static inline void SOC_GetMtu (SOCInterface * interface, s32 * mtu) -{ - (*mtu) = SOCLiConfigPtr ? (s32)SOCLiConfigPtr->mtu : 0; - (void)interface; -} - -static inline s32 SOC_ClearConfigError (SOCInterface * interface) -{ - (void)interface; - SOCLiDhcpState = 0; - return 0; -} - -void SOC_GetLinkState(SOCInterface * interface, BOOL * status); -s32 SOC_GetConfigError(SOCInterface * interface); - -typedef struct { - u32 dummy; -} SOCDHCPInfo; - -static inline int SOC_DHCPGetStatus (SOCDHCPInfo * info) -{ - (void)info; - return SOC_GetHostID() ? SOC_DHCP_STATE_BOUND : SOC_DHCP_STATE_REQUESTING; -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroWiFi/include/nitroWiFi/soc_errcode.h b/subprojects/NitroWiFi/include/nitroWiFi/soc_errcode.h deleted file mode 100644 index 1e9c48d291..0000000000 --- a/subprojects/NitroWiFi/include/nitroWiFi/soc_errcode.h +++ /dev/null @@ -1,105 +0,0 @@ -#ifndef NITROWIFI_SOC_ERRCODE_H_ -#define NITROWIFI_SOC_ERRCODE_H_ - -#ifdef __cplusplus - -extern "C" { -#endif - -#define SOC_E2BIG (-1) -#define SOC_EACCES (-2) -#define SOC_EADDRINUSE (-3) -#define SOC_EADDRNOTAVAIL (-4) -#define SOC_EAFNOSUPPORT (-5) -#define SOC_EAGAIN (-6) -#define SOC_EALREADY (-7) -#define SOC_EBADF (-8) -#define SOC_EBADMSG (-9) -#define SOC_EBUSY (-10) -#define SOC_ECANCELED (-11) -#define SOC_ECHILD (-12) -#define SOC_ECONNABORTED (-13) -#define SOC_ECONNREFUSED (-14) -#define SOC_ECONNRESET (-15) -#define SOC_EDEADLK (-16) -#define SOC_EDESTADDRREQ (-17) -#define SOC_EDOM (-18) -#define SOC_EDQUOT (-19) -#define SOC_EEXIST (-20) -#define SOC_EFAULT (-21) -#define SOC_EFBIG (-22) -#define SOC_EHOSTUNREACH (-23) -#define SOC_EIDRM (-24) -#define SOC_EILSEQ (-25) -#define SOC_EINPROGRESS (-26) -#define SOC_EINTR (-27) -#define SOC_EINVAL (-28) -#define SOC_EIO (-29) -#define SOC_EISCONN (-30) -#define SOC_EISDIR (-31) -#define SOC_ELOOP (-32) -#define SOC_EMFILE (-33) -#define SOC_EMLINK (-34) -#define SOC_EMSGSIZE (-35) -#define SOC_EMULTIHOP (-36) -#define SOC_ENAMETOOLONG (-37) -#define SOC_ENETDOWN (-38) -#define SOC_ENETRESET (-39) -#define SOC_ENETUNREACH (-40) -#define SOC_ENFILE (-41) -#define SOC_ENOBUFS (-42) -#define SOC_ENODATA (-43) -#define SOC_ENODEV (-44) -#define SOC_ENOENT (-45) -#define SOC_ENOEXEC (-46) -#define SOC_ENOLCK (-47) -#define SOC_ENOLINK (-48) -#define SOC_ENOMEM (-49) -#define SOC_ENOMSG (-50) -#define SOC_ENOPROTOOPT (-51) -#define SOC_ENOSPC (-52) -#define SOC_ENOSR (-53) -#define SOC_ENOSTR (-54) -#define SOC_ENOSYS (-55) -#define SOC_ENOTCONN (-56) -#define SOC_ENOTDIR (-57) -#define SOC_ENOTEMPTY (-58) -#define SOC_ENOTSOCK (-59) -#define SOC_ENOTSUP (-60) -#define SOC_ENOTTY (-61) -#define SOC_ENXIO (-62) -#define SOC_EOPNOTSUPP (-63) -#define SOC_EOVERFLOW (-64) -#define SOC_EPERM (-65) -#define SOC_EPIPE (-66) -#define SOC_EPROTO (-67) -#define SOC_EPROTONOSUPPORT (-68) -#define SOC_EPROTOTYPE (-69) -#define SOC_ERANGE (-70) -#define SOC_EROFS (-71) -#define SOC_ESPIPE (-72) -#define SOC_ESRCH (-73) -#define SOC_ESTALE (-74) -#define SOC_ETIME (-75) -#define SOC_ETIMEDOUT (-76) -#define SOC_ETXTBSY (-77) -#define SOC_EWOULDBLOCK SOC_EAGAIN -#define SOC_EXDEV (-78) - -#define SOC_POLLRDNORM 0x0001 -#define SOC_POLLRDBAND 0x0002 -#define SOC_POLLPRI 0x0004 -#define SOC_POLLWRNORM 0x0008 -#define SOC_POLLWRBAND 0x0010 -#define SOC_POLLERR 0x0020 -#define SOC_POLLHUP 0x0040 -#define SOC_POLLNVAL 0x0080 -#define SOC_POLLIN (SOC_POLLRDNORM | SOC_POLLRDBAND) -#define SOC_POLLOUT SOC_POLLWRNORM -#define SOC_INFTIM (-1) - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroWiFi/include/nitroWiFi/soc_stub.h b/subprojects/NitroWiFi/include/nitroWiFi/soc_stub.h deleted file mode 100644 index e6799d629e..0000000000 --- a/subprojects/NitroWiFi/include/nitroWiFi/soc_stub.h +++ /dev/null @@ -1,86 +0,0 @@ -#ifndef NITROWIFI_SOC_STUB_H_ -#define NITROWIFI_SOC_STUB_H_ - -#include -#include -#include -#include - -#include - -#ifdef __cplusplus - -extern "C" { -#endif - -#define UDP_HLEN 8 -#define SOC_SOL_TCP 0 -#define SOC_TCP_MAXSEG 0 -#define SOC_SO_TYPE 0x00001008 -#define SOC_SOL_IP 0 -#define SOC_IP_ADD_MEMBERSHIP 0x0000000b -#define SOC_IP_MULTICAST_LOOP 0x00000009 -#define SOC_IP_DROP_MEMBERSHIP 0x0000000c -#define SOC_SO_SNDLOWAT 0x00001003 -#define SOC_SO_RCVLOWAT 0x00001004 -#define SOC_NI_MAXHOST 10 -#define SOC_NI_MAXSERV 10 -#define SOC_NI_NOFQDN 1 - -#define SOAddrInfo SOCAddrInfo -#define SO_NI_MAXHOST SOC_NI_MAXHOST -#define SO_NI_MAXSERV SOC_NI_MAXSERV -#define SO_GetAddrInfo SOC_GetAddrInfo -#define SO_FreeAddrInfo SOC_FreeAddrInfo -#define SO_NI_NOFQDN SOC_NI_NOFQDN - -#define DNS_NAME_MAX 10 -#define IPAddrLoopback SOCAddrLoopback -#define IP_GetMtu SOC_GetMtu -#define IP_GetConfigError SOC_GetConfigError - -extern const u8 SOCAddrLoopback[SOC_ALEN]; - -typedef struct { - int ___temporary___; -} ICMPInfo; - -typedef void (* ICMPCallback) (ICMPInfo * info, s32 result); - -typedef struct IPHeader { - u8 verlen; - u8 tos; - u16 len; - u16 id; - u16 frag; - u8 ttl; - u8 proto; - u16 sum; - u8 src[SOC_ALEN]; - u8 dst[SOC_ALEN]; -} IPHeader; - -typedef struct SOCIpMreq { - SOCInAddr multiaddr; - SOCInAddr interface; -} SOCIpMreq; - -extern int SOC_GetAddrInfo(const char * nodeName, const char * servName, const SOCAddrInfo * hints, SOCAddrInfo ** res); -extern void SOC_FreeAddrInfo(SOCAddrInfo * head); -extern int SOC_GetNameInfo(const void * sa, char * node, unsigned nodeLen, char * service, unsigned serviceLen, - int flags); -extern void SOC_GetMtu(SOCInterface * interface, s32 * mtu); - -extern s32 ICMP_Cancel(ICMPInfo * info, s32 err); -extern s32 ICMP_Socket(int af, ICMPInfo * info); -extern s32 ICMP_Ping(ICMPInfo * info, const void * data, s32 len, const void * remote, ICMPCallback callback, - s32 * result); -extern s32 ICMP_Close(ICMPInfo * info); - -extern u16 IPi_CheckSum(IPHeader * ip); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroWiFi/include/nitroWiFi/socket.h b/subprojects/NitroWiFi/include/nitroWiFi/socket.h deleted file mode 100644 index bb1cc4a7b1..0000000000 --- a/subprojects/NitroWiFi/include/nitroWiFi/socket.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef NITROWIFI_SOCKET_H_ -#define NITROWIFI_SOCKET_H_ - -#include -#include -#include -#include -#include -#include -#include - -#ifdef __cplusplus - -extern "C" { -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroWiFi/include/nitroWiFi/socl.h b/subprojects/NitroWiFi/include/nitroWiFi/socl.h deleted file mode 100644 index 548f2645c8..0000000000 --- a/subprojects/NitroWiFi/include/nitroWiFi/socl.h +++ /dev/null @@ -1,603 +0,0 @@ -#ifndef NITROWIFI_SOCL_H_ -#define NITROWIFI_SOCL_H_ - -#include -#include -#include -#include -#include -#include - -#ifdef __cplusplus - -extern "C" { -#endif - -typedef CPSInAddr SOCLInAddr; -#define SOCL2CPSInAddr(socl) ((CPSInAddr)(socl)) - -#define SOCL_OPTIMIZE_TCP_SEND 1 - -typedef struct SOCLiSocketRingBuffer { - CPSSocBuf area; - vu16 in; - vu16 out; - OSThreadQueue waiting; -} SOCLiSocketRingBuffer; - -typedef struct SOCLiSocketUdpData { - struct SOCLiSocketUdpData * next; - u16 size; - u16 remote_port; - SOCLInAddr remote_ip; -} SOCLiSocketUdpData; - -typedef struct SOCLiSocketUdpDataControl { - SOCLiSocketUdpData * volatile in; - SOCLiSocketUdpData * volatile out; - vu16 size; - u16 size_max; - OSThreadQueue waiting; -} SOCLiSocketUdpDataControl; - -typedef struct SOCLSocketCommandPipe { - OSMessageQueue queue; - OSThread thread; - OSMutex in_use; -} SOCLiSocketCommandPipe; - -typedef struct SOCLiSocketRecvCommandPipe { - SOCLiSocketCommandPipe h; - vs32 consumed; - u16 consumed_min; - s8 flag_noconsume; - u8 padding[1]; - SOCLiSocketUdpDataControl udpdata; -} SOCLiSocketRecvCommandPipe; - -struct SOCLSocket; - -typedef struct SOCLiSocketSendCommandPipe { - SOCLiSocketCommandPipe h; - SOCLiSocketRingBuffer buffer; - struct SOCLSocket * exe_socket; -} SOCLiSocketSendCommandPipe; - -typedef struct SOCLSocket { - CPSSoc cps_socket; - SOCLiSocketRecvCommandPipe * recv_pipe; - SOCLiSocketSendCommandPipe * send_pipe; - vs32 result; - vs16 state; - s8 flag_block; - s8 flag_mode; - u16 local_port; - u16 remote_port; - SOCLInAddr remote_ip; - - struct SOCLSocket * next; -} SOCLSocket; - -#define SOCL_FLAGBLOCK_BLOCK OS_MESSAGE_BLOCK -#define SOCL_FLAGBLOCK_NOBLOCK OS_MESSAGE_NOBLOCK -#define SOCL_FLAGBLOCK_NORESULT (OS_MESSAGE_BLOCK | 2) -#define SOCL_FLAGISBLOCK(x) ((x) & OS_MESSAGE_BLOCK) - -static inline BOOL SOCL_SocketIsBlock (SOCLSocket * socket) -{ - return (socket->flag_block == SOCL_FLAGBLOCK_BLOCK); -} - -static inline BOOL SOCL_SocketIsNoBlock (SOCLSocket * socket) -{ - return (socket->flag_block == SOCL_FLAGBLOCK_NOBLOCK); -} - -static inline void SOCL_SocketSetBlock (SOCLSocket * socket) -{ - socket->flag_block = SOCL_FLAGBLOCK_BLOCK; -} - -static inline void SOCL_SocketSetNoBlock (SOCLSocket * socket) -{ - socket->flag_block = SOCL_FLAGBLOCK_NOBLOCK; -} - -#define SOCL_FLAGMODE_TCP 0 -#define SOCL_FLAGMODE_UDP 1 -#define SOCL_FLAGMODE_UDPSEND 2 -#define SOCL_FLAGMODE_ICMP 3 -#define SOCL_FLAGMODE_SSL 4 - -static inline BOOL SOCL_SocketIsTCP (SOCLSocket * socket) -{ - return (socket->flag_mode == SOCL_FLAGMODE_TCP || socket->flag_mode == SOCL_FLAGMODE_SSL); -} - -static inline BOOL SOCL_SocketIsUDP (SOCLSocket * socket) -{ - return (socket->flag_mode == SOCL_FLAGMODE_UDP); -} - -static inline BOOL SOCL_SocketIsUDPSend (SOCLSocket * socket) -{ - return (socket->flag_mode == SOCL_FLAGMODE_UDPSEND); -} - -static inline BOOL SOCL_SocketIsICMP (SOCLSocket * socket) -{ - return (socket->flag_mode == SOCL_FLAGMODE_ICMP); -} - -static inline BOOL SOCL_SocketIsSSL (SOCLSocket * socket) -{ - return (socket->flag_mode == SOCL_FLAGMODE_SSL); -} - -#define SOCL_STATUS_CREATE 0x0001 -#define SOCL_STATUS_CONNECTING 0x0002 -#define SOCL_STATUS_CONNECTED 0x0004 -#define SOCL_STATUS_CLOSING 0x0008 -#define SOCL_STATUS_WAIT_CLOSE 0x0010 -#define SOCL_STATUS_WAIT_RELEASE 0x0020 -#define SOCL_STATUS_ERROR 0x0040 -#define SOCL_STATUS_RESET 0x0080 - -static inline BOOL SOCL_SocketIsState (SOCLSocket * socket, u16 state) -{ - return (s32)socket->state & (s32)state; -} - -static inline BOOL SOCL_SocketIsCreated (SOCLSocket * socket) -{ - return socket && SOCL_SocketIsState(socket, SOCL_STATUS_CREATE); -} - -static inline BOOL SOCL_SocketIsConnecting (SOCLSocket * socket) -{ - return SOCL_SocketIsState(socket, SOCL_STATUS_CONNECTING); -} - -static inline BOOL SOCL_SocketIsConnected (SOCLSocket * socket) -{ - return SOCL_SocketIsState(socket, SOCL_STATUS_CONNECTED); -} - -static inline BOOL SOCL_SocketIsClosing (SOCLSocket * socket) -{ - return SOCL_SocketIsState(socket, SOCL_STATUS_CLOSING); -} - -static inline BOOL SOCL_SocketIsWaitingClose (SOCLSocket * socket) -{ - return SOCL_SocketIsState(socket, SOCL_STATUS_WAIT_CLOSE); -} - -static inline BOOL SOCL_SocketIsError (SOCLSocket * socket) -{ - return SOCL_SocketIsState(socket, SOCL_STATUS_ERROR); -} - -static inline BOOL SOCL_SocketIsReset (SOCLSocket * socket) -{ - return SOCL_SocketIsState(socket, SOCL_STATUS_RESET); -} - -#define SOCL_MSG_PEEK 0x02 -#define SOCL_MSG_DONTWAIT 0x04 - -typedef CPSSslConnection SOCLSslConnection; -typedef CPSCaInfo SOCLCaInfo; -typedef int (* SOCLSslAuthHandler) (int result, SOCLSslConnection * con, int level); - -#define SOCL_CERT_OUTOFDATE CPS_CERT_OUTOFDATE -#define SOCL_CERT_BADSERVER CPS_CERT_BADSERVER - -#define SOCL_CERT_ERRMASK CPS_CERT_ERRMASK - -#define SOCL_CERT_NOROOTCA CPS_CERT_NOROOTCA -#define SOCL_CERT_BADSIGNATURE CPS_CERT_BADSIGNATURE -#define SOCL_CERT_UNKNOWN_SIGALGORITHM CPS_CERT_UNKNOWN_SIGALGORITHM -#define SOCL_CERT_UNKNOWN_PUBKEYALGORITHM CPS_CERT_UNKNOWN_PUBKEYALGORITHM - -typedef int (* SOCLiCommandHandler) (void *); - -typedef struct SOCLiCommandHeader { - SOCLiCommandHandler handler; - SOCLSocket * socket; - OSMessageQueue * response; - s8 flag_mode; - s8 flag_block; - u8 padding[2]; -} SOCLiCommandHeader; - -typedef struct SOCLiCommandCreateSocket { - SOCLiCommandHeader h; -} SOCLiCommandCreateSocket; - -typedef struct SOCLiCommandBind { - SOCLiCommandHeader h; - u16 local_port; - u16 remote_port; - SOCLInAddr remote_ip; -} SOCLiCommandBind; - -typedef struct SOCLiCommandListenAccept { - SOCLiCommandHeader h; - u16 local_port; - u8 padding[2]; - volatile u16 * remote_port_ptr; - volatile SOCLInAddr * remote_ip_ptr; -} SOCLiCommandListenAccept; - -typedef struct SOCLiCommandRead { - SOCLiCommandHeader h; - u8 * buffer; - s32 buffer_len; - u16 * remote_port; - SOCLInAddr * remote_ip; - s8 flag_noconsume; - u8 padding[3]; -} SOCLiCommandRead; - -typedef struct SOCLiCommandConsume { - SOCLiCommandHeader h; -} SOCLiCommandConsume; - -typedef struct SOCLiCommandWrite { - SOCLiCommandHeader h; - u8 * buffer1; - s32 buffer1_len; - u8 * buffer2; - s32 buffer2_len; - u16 wrtbuf_after; - u8 padding[2]; - u16 local_port; - u16 remote_port; - SOCLInAddr remote_ip; -} SOCLiCommandWrite; - -typedef struct SOCLiCommandShutdown { - SOCLiCommandHeader h; -} SOCLiCommandShutdown; - -typedef struct SOCLiCommandClose { - SOCLiCommandHeader h; -} SOCLiCommandClose; - -typedef struct SOCLiCommandEnableSsl { - SOCLiCommandHeader h; - SOCLSslConnection * connection; -} SOCLiCommandEnableSsl; - -typedef union SOCLiCommandPacket { - SOCLiCommandHeader h; - SOCLiCommandCreateSocket create_socket; - SOCLiCommandBind bind; - SOCLiCommandListenAccept listen_accept; - SOCLiCommandRead read; - SOCLiCommandConsume consume; - SOCLiCommandWrite write; - SOCLiCommandShutdown shutdown; - SOCLiCommandClose close; - SOCLiCommandEnableSsl enable_ssl; -} SOCLiCommandPacket; - -#define SOCL_CMDPACKET_MAX 64 - -typedef struct { - BOOL use_dhcp; - struct { - SOCLInAddr my_ip; - SOCLInAddr net_mask; - SOCLInAddr gateway_ip; - SOCLInAddr dns_ip[2]; - } host_ip; - void * (*alloc)(u32); - void (* free)(void *); - - u32 cmd_packet_max; - u32 lan_buffer_size; - void * lan_buffer; - - s32 cps_thread_prio; - - s32 mtu; - s32 rwin; -} SOCLConfig; - -#define SOCLi_MTUtoMSS(mtu) ((mtu) - 40) - -#define SOCL_LAN_BUFFER_SIZE_DEFAULT 16384 -#define SOCL_MTU_SIZE_MAX 1500 -#define SOCL_MTU_SIZE_MIN 576 - -#define SOCL_MTU_SIZE_DEFAULT 576 -#define SOCL_RWIN_SIZE_DEFAULT (SOCLi_MTUtoMSS(SOCL_MTU_SIZE_DEFAULT) * 8) - -#define SOCL_DHCP_REQUEST 0x01 -#define SOCL_DHCP_CALLBACK 0x02 -#define SOCL_DHCP_ERROR SOCL_DHCP_CALLBACK - -extern int SOCLiDhcpState; -extern SOCLInAddr SOCLiRequestedIP; -extern u32 SOCLiYieldWait; - -static inline void SOCL_SetRequestedIP (SOCLInAddr ip) -{ - SOCLiRequestedIP = ip; -} - -static inline void SOCL_SetYieldWait (u32 wait) -{ - SOCLiYieldWait = wait; -} - -static inline void SOCL_SetSslHandshakePriority (u32 prio) -{ - CPS_SetSslHandshakePriority(prio); -} - -static inline u32 SOCL_GetSslHandshakePriority (void) -{ - return CPS_GetSslHandshakePriority(); -} - -typedef struct SOCLSocketThreadParam { - u16 stack_size; - u8 priority; - u8 queue_max; -} SOCLSocketCommandPipeParam; - -typedef struct SOCLSocketBufferParam { - u16 rcvbuf_size; - u16 rcvbuf_consume_min; - u16 sndbuf_size; - u16 linbuf_size; - u16 outbuf_size; - u16 wrtbuf_size; - u16 udpbuf_size; -} SOCLSocketBufferParam; - -typedef struct SOCLSocketParam { - s8 flag_mode; - s8 flag_block; - SOCLSocketBufferParam buffer; - SOCLSocketCommandPipeParam recv_pipe; - SOCLSocketCommandPipeParam send_pipe; -} SOCLSocketParam; - -extern SOCLSocketParam SOCLSocketParamTCP; -extern SOCLSocketParam SOCLSocketParamUDP; -extern SOCLSocketParam SOCLSocketParamUDPSend; - -#define SOCL_CPS_SOCKET_THREAD_PRIORITY 11 - -#define SOCL_TCP_SOCKET_CPS_RCVBUF_SIZE (1460 * 2) - -#define SOCL_TCP_SOCKET_CPS_RCVBUF_CONSUME_MIN 1460 - -#if SOCL_OPTIMIZE_TCP_SEND -#define SOCL_TCP_SOCKET_CPS_SNDBUF_SIZE ((SOCLi_MTUtoMSS(SOCL_MTU_SIZE_DEFAULT) * 2) + SOCL_TCP_SNDBUF_NOCOPY_OFFSET) -#define SOCL_TCP_SOCKET_SEND_WRTBUF_SIZE ((SOCL_TCP_SOCKET_CPS_SNDBUF_SIZE - SOCL_TCP_SNDBUF_NOCOPY_OFFSET) * 2 + 1) -#else -#define SOCL_TCP_SOCKET_CPS_SNDBUF_SIZE (SOCL_MTU_SIZE_MAX + 14) -#define SOCL_TCP_SOCKET_SEND_WRTBUF_SIZE (SOCL_TCP_SOCKET_CPS_SNDBUF_SIZE * 2 + 1) -#endif - -#define SOCL_TCP_SOCKET_RECV_THREAD_PRIORITY 12 -#define SOCL_TCP_SOCKET_SEND_THREAD_PRIORITY 13 -#define SOCL_TCP_SOCKET_RECV_THREAD_STACK_SIZE 2048 -#define SOCL_TCP_SOCKET_SEND_THREAD_STACK_SIZE 2048 -#define SOCL_TCP_SOCKET_RECV_THREAD_QUEUE_MAX 32 -#define SOCL_TCP_SOCKET_SEND_THREAD_QUEUE_MAX 32 - -#define SOCL_UDP_SOCKET_CPS_RCVBUF_SIZE 1472 -#define SOCL_UDP_SOCKET_CPS_SNDBUF_SIZE 1514 -#define SOCL_UDP_SOCKET_SEND_WRTBUF_SIZE (SOCL_UDP_SOCKET_CPS_SNDBUF_SIZE + 256 + 1) -#define SOCL_UDP_SOCKET_RECV_UDPBUF_SIZE 2048 -#define SOCL_UDP_SOCKET_RECV_THREAD_PRIORITY 12 -#define SOCL_UDP_SOCKET_SEND_THREAD_PRIORITY 13 -#define SOCL_UDP_SOCKET_RECV_THREAD_STACK_SIZE 2048 -#define SOCL_UDP_SOCKET_SEND_THREAD_STACK_SIZE 2048 -#define SOCL_UDP_SOCKET_RECV_THREAD_QUEUE_MAX 32 -#define SOCL_UDP_SOCKET_SEND_THREAD_QUEUE_MAX 32 -#ifdef SDK_USE_CHAROUT -#define SOCL_TCP_SOCKET_CPS_LINBUF_SIZE 128 -#define SOCL_TCP_SOCKET_CPS_OUTBUF_SIZE 512 -#define SOCL_UDP_SOCKET_CPS_LINBUF_SIZE 128 -#define SOCL_UDP_SOCKET_CPS_OUTBUF_SIZE 512 -#else -#define SOCL_TCP_SOCKET_CPS_LINBUF_SIZE 0 -#define SOCL_TCP_SOCKET_CPS_OUTBUF_SIZE 0 -#define SOCL_UDP_SOCKET_CPS_LINBUF_SIZE 0 -#define SOCL_UDP_SOCKET_CPS_OUTBUF_SIZE 0 -#endif - -#define SOCL_TCP_SNDBUF_NOCOPY_OFFSET (14 + 20 + 20) -#define SOCL_UDP_SNDBUF_NOCOPY_OFFSET (14 + 20 + 8) - -int SOCLi_StartupCommandPacketQueue(s32 cp_max_count); -int SOCLi_CleanupCommandPacketQueue(void); -void SOCLi_CommandPacketHandler(void * arg); - -SOCLiCommandPacket * SOCLi_AllocCommandPacket(s32 flag); -SOCLiCommandPacket * SOCLi_CreateCommandPacket(SOCLiCommandHandler handler, SOCLSocket * socket, s32 flag); -SOCLiSocketCommandPipe * SOCLi_GetCtrlPipe(SOCLSocket * socket); -void SOCLi_FreeCommandPacket(SOCLiCommandPacket * command); -int SOCLi_SendCommandPacket(SOCLiSocketCommandPipe * pipe, SOCLiCommandPacket * command); -int SOCLi_SendCommandPacketToCtrlPipe(SOCLSocket * socket, SOCLiCommandPacket * command); -int SOCLi_ExecCommandPacket(SOCLiSocketCommandPipe * pipe, SOCLiCommandPacket * command); -int SOCLi_ExecCommandPacketInRecvPipe(SOCLSocket * socket, SOCLiCommandPacket * command); -int SOCLi_ExecCommandPacketInSendPipe(SOCLSocket * socket, SOCLiCommandPacket * command); -int SOCLi_ExecCommandPacketInCtrlPipe(SOCLSocket * socket, SOCLiCommandPacket * command); - -#define SOCLi_ROUNDUP4(size) MATH_ROUNDUP((size), 4) -u32 SOCLi_RoundUp4(u32 size); - -int SOCL_Startup(const SOCLConfig * socl_config); -int SOCL_Cleanup(void); -extern int SOCLiUDPSendSocket; - -void SOCLi_SetMyIPinConfig(SOCLInAddr ip, SOCLInAddr mask, SOCLInAddr gateway); -void SOCLi_SetMyIP(void); -void SOCLi_DhcpTimeout(void); - -int SOCL_CreateSocket(const SOCLSocketParam * param); -int SOCL_Bind(int s, u16 local_port); -int SOCL_Connect(int s, u16 remote_port, SOCLInAddr remote_ip); -int SOCL_Listen(int s, int backlog); -int SOCL_Accept(int s, volatile u16 * remote_port_ptr, volatile SOCLInAddr * remote_ip_ptr); -int SOCL_ListenAccept(int s, volatile u16 * remote_port_ptr, volatile SOCLInAddr * remote_ip_ptr); -int SOCL_Read(int, void *, int, u16 *, SOCLInAddr *); -int SOCL_ReadFrom(int, void *, int, u16 *, SOCLInAddr *, int); -int SOCL_ReadNoBlock(int, void *, int, u16 *, SOCLInAddr *); -int SOCL_ReadBlock(int, void *, int, u16 *, SOCLInAddr *); -int SOCL_Write(int, const void * buffer, int buffer_len, u16 port, SOCLInAddr ip); -int SOCL_WriteTo(int, const void * buffer, int buffer_len, u16 port, SOCLInAddr ip, int flags); -int SOCL_WriteNoBlock(int s, const void * buffer, int buffer_len, u16 port, SOCLInAddr ip); -int SOCL_WriteBlock(int s, const void * buffer, int buffer_len, u16 port, SOCLInAddr ip); -int SOCL_Shutdown(int s); -int SOCL_IsClosed(int s); -int SOCL_Close(int s); -int SOCL_CloseAll(void); -int SOCL_CalmDown(void); -int SOCL_GetRemote(int s, u16 * port, SOCLInAddr * ip); -SOCLInAddr SOCL_Resolve(const char * hostname); -SOCLInAddr SOCL_InetAtoH(const char * hostname); -int SOCL_GetResolver(SOCLInAddr * dns1, SOCLInAddr * dns2); -int SOCL_SetResolver(const SOCLInAddr dns1, const SOCLInAddr dns2); -SOCLInAddr SOCL_GetHostID(void); - -const char * SOCL_GetErrName(int errcode); -int SOCL_GetStatus(int s); -int SOCL_EnableSsl(int s, SOCLSslConnection * con); - -// ERROR-CODE BEGINS -#define SOCL_ESUCCESS 0 -#define SOCL_ENOMEM SOC_ENOMEM -#define SOCL_EMFILE SOC_EMFILE -#define SOCL_ECONNRESET SOC_ECONNRESET -#define SOCL_ECANCELED SOC_ECANCELED -#define SOCL_EALREADY SOC_EALREADY -#define SOCL_ENOTCONN SOC_ENOTCONN -#define SOCL_ENETRESET SOC_ENETRESET -#define SOCL_EINVAL SOC_EINVAL -#define SOCL_ENOBUFS SOC_ENOBUFS -#define SOCL_ETIMEDOUT SOC_ETIMEDOUT -#define SOCL_EWOULDBLOCK SOC_EWOULDBLOCK -#define SOCL_EAGAIN SOC_EAGAIN -#define SOCL_EINPROGRESS SOC_EINPROGRESS -#define SOCL_EISCONN SOC_EISCONN -#define SOCL_EMSGSIZE SOC_EMSGSIZE - -// ERROR-CODE ENDS -#define SOCL_POLLRDNORM SOC_POLLRDNORM -#define SOCL_POLLWRNORM SOC_POLLWRNORM -#define SOCL_POLLERR SOC_POLLERR -#define SOCL_POLLHUP SOC_POLLHUP -#define SOCL_POLLNVAL SOC_POLLNVAL - -#define SOCL_POLLERRORSTATUS (SOCL_POLLERR | SOCL_POLLHUP | SOCL_POLLNVAL) -#define SOCL_POLLREADSTATUS (SOCL_POLLRDNORM | SOCL_POLLERRORSTATUS) -#define SOCL_POLLWRITESTATUS (SOCL_POLLWRNORM | SOCL_POLLERRORSTATUS) - -SOCLSocket * SOCLi_StartupSocket(const SOCLSocketParam * param); -void SOCLi_CleanupSocket(SOCLSocket * socket); -void SOCLi_TrashSocket(void); -s32 SOCLi_GetWriteBufferFreeSize(SOCLSocket * socket); -s32 SOCLi_GetReadBufferOccpiedSize(SOCLSocket * socket); -int SOCLi_UdpRecvCallback(u8 * data, u32 len, CPSSoc * soc); - -void SOCLi_SocketRegister(SOCLSocket * socket); -void SOCLi_SocketUnregister(SOCLSocket * socket); -void SOCLi_SocketRegisterTrash(SOCLSocket * socket); -void SOCLi_SocketUnregisterTrash(SOCLSocket * socket); -int SOCL_SocketIsInvalid(SOCLSocket * socket); -int SOCL_SocketIsInTrash(SOCLSocket * socket); -extern SOCLSocket * SOCLiSocketList; -extern SOCLSocket * SOCLiSocketListTrash; - -static inline int SOCL_TcpSocket (void) -{ - return SOCL_CreateSocket(&SOCLSocketParamTCP); -} - -static inline int SOCL_UdpSocket (void) -{ - return SOCL_CreateSocket(&SOCLSocketParamUDP); -} - -static inline int SOCL_UdpSendSocket (void) -{ - return SOCL_CreateSocket(&SOCLSocketParamUDPSend); -} - -extern CPSConfig SOCLiCPSConfig; -extern const SOCLConfig * SOCLiConfigPtr; - -static inline void * SOCLi_Alloc (u32 size) -{ - return SOCLiConfigPtr->alloc(size); -} - -static inline void SOCLi_Free (void * ptr) -{ - SOCLiConfigPtr->free(ptr); -} - -static inline u16 SOCL_GetHostPort (int s) -{ - SOCLSocket * socket = (SOCLSocket *)s; - - return s ? (u16)socket->local_port : (u16)0; -} - -static inline void SOCL_SetBlock (int s) -{ - SOCL_SocketSetBlock((SOCLSocket *)s); -} - -static inline void SOCL_SetNoBlock (int s) -{ - SOCL_SocketSetNoBlock((SOCLSocket *)s); -} - -static inline BOOL SOCL_IsBlock (int s) -{ - return SOCL_SocketIsBlock((SOCLSocket *)s); -} - -static inline BOOL SOCL_IsNoBlock (int s) -{ - return SOCL_SocketIsNoBlock((SOCLSocket *)s); -} - -static inline int SOCL_GetReadStatus (int s) -{ - return (SOCL_GetStatus(s) & SOCL_POLLREADSTATUS); -} - -static inline int SOCL_GetWriteStatus (int s) -{ - return (SOCL_GetStatus(s) & SOCL_POLLWRITESTATUS); -} - -static inline void SOCL_AddRandomSeed (void * seed, u32 len) -{ - CPS_SslAddRandomSeed(seed, len); -} - -#define SOCLi_IsInitialized() (NULL != SOCLConfigPtr) - -enum { - SOCL_CHECKCOUNT_UDPRCVCB_1 = 0, - SOCL_CHECKCOUNT_UDPRCVCB_2, - SOCL_CHECKCOUNT_MAX -}; -extern u32 SOCLi_CheckCount[SOCL_CHECKCOUNT_MAX]; -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroWiFi/include/nitroWiFi/ssl.h b/subprojects/NitroWiFi/include/nitroWiFi/ssl.h deleted file mode 100644 index 5519a3462c..0000000000 --- a/subprojects/NitroWiFi/include/nitroWiFi/ssl.h +++ /dev/null @@ -1,188 +0,0 @@ -#ifndef NITROWIFI_SSL_H_ -#define NITROWIFI_SSL_H_ - -#ifdef __cplusplus - -extern "C" { -#endif - -typedef struct { - u32 state[4]; - u32 count[2]; - u8 buffer[64]; -} CPSMd5Ctx; - -extern void CPSi_md5_init(CPSMd5Ctx *); -extern void CPSi_md5_calc(CPSMd5Ctx *, void *, int); -extern void CPSi_md5_result(CPSMd5Ctx *, u8 *); - -typedef struct { - u32 state[5]; - u32 count[2]; - u8 buffer[64]; -} CPSSha1Ctx; - -extern void CPSi_sha1_init(CPSSha1Ctx *); -extern void CPSi_sha1_calc(CPSSha1Ctx *, void *, int); -extern void CPSi_sha1_result(CPSSha1Ctx *, u8 *); -extern void CPSi_sha1_result_prng(CPSSha1Ctx *, u8 *); - -typedef struct { - u8 x; - u8 y; - u8 m[256]; - u16 padding; -} CPSRc4Ctx; - -extern void CPSi_rc4_init(CPSRc4Ctx *, u8 *, int); -extern void CPSi_rc4_crypt(CPSRc4Ctx *, u8 *, int); - -extern void CPSi_big_add(u16 *, u16 *, u16 *, int); -extern void CPSi_big_sub(u16 *, u16 *, u16 *, int); -extern void CPSi_big_mult(u16 *, u16 *, u16 *, int); -extern void CPSi_big_div(u16 *, u16 *, u16 *, u16 *, int, u16 *); -extern void CPSi_big_power(u16 *, u16 *, u16 *, int, u16 *); -extern void CPSi_big_montpower(u16 *, u16 *, u16 *, int, u16 *); -extern void CPSi_big_negate(u16 *, int); -extern int CPSi_big_sign(u16 *, int); -extern void CPSi_big_from_char(u16 *, u8 *, int, int); -extern void CPSi_char_from_big(u8 *, u16 *, int, int); - -typedef struct { - char * dn; - int modulus_len; - u8 * modulus; - int exponent_len; - u8 * exponent; -} CPSCaInfo; - -typedef struct { - int certificate_len; - u8 * certificate; -} CPSCertificate; - -typedef struct { - int modulus_len; - u8 * modulus; - int prime1_len; - u8 * prime1; - int prime2_len; - u8 * prime2; - int exponent1_len; - u8 * exponent1; - int exponent2_len; - u8 * exponent2; - int coefficient_len; - u8 * coefficient; -} CPSPrivateKey; - -extern void CPS_SetRootCa(CPSCaInfo **, int); -extern void CPS_SetMyCert(CPSCertificate *, CPSPrivateKey *); - -#define CPS_CERT_OUTOFDATE 0x8000 -#define CPS_CERT_BADSERVER 0x4000 - -#define CPS_CERT_ERRMASK 0x00ff - -enum { - CPS_CERT_NOERROR = 0, - CPS_CERT_NOROOTCA, - CPS_CERT_BADSIGNATURE, - CPS_CERT_UNKNOWN_SIGALGORITHM, - CPS_CERT_UNKNOWN_PUBKEYALGORITHM -}; - -typedef struct { - u8 sessionID[32]; - u8 master_secret[48]; - u32 when; - CPSInAddr ip; - u16 port; - u8 valid; - u8 padding; -} CPSSslSession; - -typedef union { - CPSRc4Ctx rc4_ctx; -} CPSCipherCtx; - -#define CPS_MAX_DN_LEN 255 -#define CPS_MAX_CN_LEN 79 -#define CPS_MAX_RSA_LEN (2048 / 8) -#define CPS_MAX_RSA_PUBLICEXPONENT_LEN (64 / 8) - -typedef struct _CPSSslConnection { - u8 master_secret[48]; - u8 session_cached; - u8 reuse_session; - u16 method; - u8 client_random[32]; - u8 server_random[32]; - union { - u8 sessionID[32]; - u8 key_block[2 * (20 + 16 + 0)]; - } common1; - u8 * send_mac; - u8 * send_key; - u8 * send_iv; - CPSCipherCtx send_cipher; - u8 send_seq[8]; - u8 * rcv_mac; - u8 * rcv_key; - u8 * rcv_iv; - CPSCipherCtx rcv_cipher; - u8 rcv_seq[8]; - CPSSha1Ctx sha1_hash; - CPSSha1Ctx sha1_hash_tmp; - CPSMd5Ctx md5_hash; - CPSMd5Ctx md5_hash_tmp; - u8 server; - u8 state; - u8 inbuf_decrypted; - u8 padding2; - - int sig_algorithm; - int pub_algorithm; - u8 * hash_start; - u8 * hash_end; - u8 hash_val[20]; - int hash_len; - CPSCaInfo midca_info; - u8 modulus[CPS_MAX_RSA_LEN]; - u32 modulus_len; - u8 exponent[CPS_MAX_RSA_PUBLICEXPONENT_LEN]; - - int exponent_len; - u8 * signature; - int signature_len; - u8 seen_validity; - u8 seen_pub_algorithm; - u8 seen_attr; - u8 date_ok; - char issuer[CPS_MAX_DN_LEN + 1]; - char subject[CPS_MAX_DN_LEN + 1]; - char cn[CPS_MAX_CN_LEN + 1]; - char * server_name; - u8 * cert; - int certlen; - u32 cur_date; - int (* auth_callback)(int, struct _CPSSslConnection *, int); - CPSCaInfo ** ca_info; - int ca_builtins; - CPSPrivateKey * my_key; - CPSCertificate * my_certificate; - - u8 * inbuf; - long inbuf_len; - long inbuf_pnt; -} CPSSslConnection; - -extern void CPS_SslAddRandomSeed(void *, u32); - -#define MI_CpuCopy8_inverse(d, s, n) MI_CpuCopy8(s, d, n) - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroWiFi/include/nitroWiFi/version.h b/subprojects/NitroWiFi/include/nitroWiFi/version.h deleted file mode 100644 index d5b64335ec..0000000000 --- a/subprojects/NitroWiFi/include/nitroWiFi/version.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef NITROWIFI_VERSION_H_ -#define NITROWIFI_VERSION_H_ -#define SDK_WIFI_VERSION_DATE 20070920 -#define SDK_WIFI_VERSION_TIME 229 -#define SDK_WIFI_VERSION_MAJOR 2 -#define SDK_WIFI_VERSION_MINOR 1 -#define SDK_WIFI_VERSION_RELSTEP 30003 -#define SDK_WIFI_VERSION_STRING "2.1.30003.0709200229" - -#define SDK_WIFI_BUILDINFO_CW_CC 127 -#define SDK_WIFI_BUILDINFO_CW_LD 85 -#endif diff --git a/subprojects/NitroWiFi/include/nitroWiFi/wcm.h b/subprojects/NitroWiFi/include/nitroWiFi/wcm.h deleted file mode 100644 index 629a77f83c..0000000000 --- a/subprojects/NitroWiFi/include/nitroWiFi/wcm.h +++ /dev/null @@ -1,217 +0,0 @@ -#ifndef NITROWIFI_WCM_H_ -#define NITROWIFI_WCM_H_ - -#ifdef __cplusplus - -extern "C" { -#endif - -#include -#include - -#define WCM_WORK_SIZE 8960 - -#define WCM_RESULT_SUCCESS 0 -#define WCM_RESULT_FAILURE 1 -#define WCM_RESULT_PROGRESS 2 -#define WCM_RESULT_ACCEPT 3 -#define WCM_RESULT_REJECT 4 -#define WCM_RESULT_WMDISABLE 5 -#define WCM_RESULT_NOT_ENOUGH_MEM 6 -#define WCM_RESULT_FATAL_ERROR 7 - -#define WCM_PHASE_NULL 0 -#define WCM_PHASE_WAIT 1 -#define WCM_PHASE_WAIT_TO_IDLE 2 -#define WCM_PHASE_IDLE 3 -#define WCM_PHASE_IDLE_TO_WAIT 4 -#define WCM_PHASE_IDLE_TO_SEARCH 5 -#define WCM_PHASE_SEARCH 6 -#define WCM_PHASE_SEARCH_TO_IDLE 7 -#define WCM_PHASE_IDLE_TO_DCF 8 -#define WCM_PHASE_DCF 9 -#define WCM_PHASE_DCF_TO_IDLE 10 -#define WCM_PHASE_FATAL_ERROR 11 -#define WCM_PHASE_IRREGULAR 12 -#define WCM_PHASE_TERMINATING 13 - -#define WCM_NOTIFY_COMMON 0 -#define WCM_NOTIFY_STARTUP 1 -#define WCM_NOTIFY_CLEANUP 2 -#define WCM_NOTIFY_BEGIN_SEARCH 3 -#define WCM_NOTIFY_END_SEARCH 4 -#define WCM_NOTIFY_CONNECT 5 -#define WCM_NOTIFY_DISCONNECT 6 -#define WCM_NOTIFY_FOUND_AP 7 -#define WCM_NOTIFY_SEARCH_AROUND 8 -#define WCM_NOTIFY_TERMINATE 9 - -#define WCM_APLIST_UNLOCK 0 -#define WCM_APLIST_LOCK 1 - -#define WCM_APLIST_MODE_IGNORE 0 -#define WCM_APLIST_MODE_EXCHANGE 1 - -#define WCM_WEPMODE_NONE 0 -#define WCM_WEPMODE_40 1 -#define WCM_WEPMODE_104 2 -#define WCM_WEPMODE_128 3 - -#define WCM_CAM_LIFETIME 80 -#define WCM_BSSID_SIZE WM_SIZE_BSSID -#define WCM_ESSID_SIZE WM_SIZE_SSID -#define WCM_APLIST_SIZE 192 -#define WCM_APLIST_EX_SIZE 16 -#define WCM_APLIST_BLOCK_SIZE (WCM_APLIST_EX_SIZE + WCM_APLIST_SIZE) -#define WCM_WEP_SIZE WM_SIZE_WEPKEY -#define WCM_WEP_EX_SIZE (1 + 1 + 14) -#define WCM_WEP_STRUCT_SIZE (WCM_WEP_SIZE + WCM_WEP_EX_SIZE) -#define WCM_DCF_RECV_EXCESS_SIZE (sizeof(WMDcfRecvBuf) - 4) -#define WCM_DCF_SEND_EXCESS_SIZE 0 -#define WCM_DCF_RECV_SIZE (WM_DCF_MAX_SIZE + WCM_DCF_RECV_EXCESS_SIZE) -#define WCM_DCF_RECV_BUF_SIZE (WCM_ROUNDUP32(WCM_DCF_RECV_SIZE)) -#define WCM_DCF_SEND_BUF_SIZE (WCM_ROUNDUP32(WM_DCF_MAX_SIZE)) -#define WCM_ETC_BUF_SIZE 108 -#define WCM_ADDITIONAL_RATESET 0x0003 -#define WCM_CAMOUFLAGE_RATESET 0x0024 - -#define WCM_AID_MIN 1 -#define WCM_AID_MAX 2007 -extern const u8 WCM_Bssid_Any[WCM_BSSID_SIZE]; -extern const u8 WCM_Essid_Any[WCM_ESSID_SIZE]; - -#define WCM_BSSID_ANY ((void *)WCM_Bssid_Any) - -#define WCM_ESSID_ANY ((void *)WCM_Essid_Any) - -#define WCM_OPTION_TEST_CHANNEL 0x00008000 -#define WCM_OPTION_FILTER_CHANNEL 0x00003ffe -#define WCM_OPTION_MASK_CHANNEL (WCM_OPTION_TEST_CHANNEL | WCM_OPTION_FILTER_CHANNEL) -#define WCM_OPTION_CHANNEL_1 (WCM_OPTION_TEST_CHANNEL | 0x00000002) -#define WCM_OPTION_CHANNEL_2 (WCM_OPTION_TEST_CHANNEL | 0x00000004) -#define WCM_OPTION_CHANNEL_3 (WCM_OPTION_TEST_CHANNEL | 0x00000008) -#define WCM_OPTION_CHANNEL_4 (WCM_OPTION_TEST_CHANNEL | 0x00000010) -#define WCM_OPTION_CHANNEL_5 (WCM_OPTION_TEST_CHANNEL | 0x00000020) -#define WCM_OPTION_CHANNEL_6 (WCM_OPTION_TEST_CHANNEL | 0x00000040) -#define WCM_OPTION_CHANNEL_7 (WCM_OPTION_TEST_CHANNEL | 0x00000080) -#define WCM_OPTION_CHANNEL_8 (WCM_OPTION_TEST_CHANNEL | 0x00000100) -#define WCM_OPTION_CHANNEL_9 (WCM_OPTION_TEST_CHANNEL | 0x00000200) -#define WCM_OPTION_CHANNEL_10 (WCM_OPTION_TEST_CHANNEL | 0x00000400) -#define WCM_OPTION_CHANNEL_11 (WCM_OPTION_TEST_CHANNEL | 0x00000800) -#define WCM_OPTION_CHANNEL_12 (WCM_OPTION_TEST_CHANNEL | 0x00001000) -#define WCM_OPTION_CHANNEL_13 (WCM_OPTION_TEST_CHANNEL | 0x00002000) -#define WCM_OPTION_CHANNEL_ALL (WCM_OPTION_TEST_CHANNEL | WCM_OPTION_FILTER_CHANNEL) -#define WCM_OPTION_CHANNEL_RDC (WCM_OPTION_CHANNEL_1 | WCM_OPTION_CHANNEL_7 | WCM_OPTION_CHANNEL_13) - -#define WCM_OPTION_TEST_POWER 0x00020000 -#define WCM_OPTION_FILTER_POWER 0x00010000 -#define WCM_OPTION_MASK_POWER (WCM_OPTION_TEST_POWER | WCM_OPTION_FILTER_POWER) -#define WCM_OPTION_POWER_SAVE (WCM_OPTION_TEST_POWER | 0x00000000) -#define WCM_OPTION_POWER_ACTIVE (WCM_OPTION_TEST_POWER | 0x00010000) - -#define WCM_OPTION_TEST_AUTH 0x00080000 -#define WCM_OPTION_FILTER_AUTH 0x00040000 -#define WCM_OPTION_MASK_AUTH (WCM_OPTION_TEST_AUTH | WCM_OPTION_FILTER_AUTH) -#define WCM_OPTION_AUTH_OPENSYSTEM (WCM_OPTION_TEST_AUTH | 0x00000000) -#define WCM_OPTION_AUTH_SHAREDKEY (WCM_OPTION_TEST_AUTH | 0x00040000) - -#define WCM_OPTION_TEST_SCANTYPE 0x00200000 -#define WCM_OPTION_FILTER_SCANTYPE 0x00100000 -#define WCM_OPTION_MASK_SCANTYPE (WCM_OPTION_TEST_SCANTYPE | WCM_OPTION_FILTER_SCANTYPE) -#define WCM_OPTION_SCANTYPE_PASSIVE (WCM_OPTION_TEST_SCANTYPE | 0x00000000) -#define WCM_OPTION_SCANTYPE_ACTIVE (WCM_OPTION_TEST_SCANTYPE | 0x00100000) - -#define WCM_OPTION_TEST_ROUNDSCAN 0x00800000 -#define WCM_OPTION_FILTER_ROUNDSCAN 0x00400000 -#define WCM_OPTION_MASK_ROUNDSCAN (WCM_OPTION_TEST_ROUNDSCAN | WCM_OPTION_FILTER_ROUNDSCAN) -#define WCM_OPTION_ROUNDSCAN_IGNORE (WCM_OPTION_TEST_ROUNDSCAN | 0x00000000) -#define WCM_OPTION_ROUNDSCAN_NOTIFY (WCM_OPTION_TEST_ROUNDSCAN | 0x00400000) - -#define WCM_ROUNDUP32(_x_) (((_x_) + 0x01f) & ~(0x01f)) -#define WCM_ROUNDDOWN32(_x_) ((_x_) & ~(0x01f)) -#define WCM_ROUNDUP4(_x_) (((_x_) + 0x03) & ~(0x03)) -#define WCM_ROUNDDOWN4(_x_) ((_x_) & ~(0x03)) - -typedef struct WCMConfig { - s32 dmano; - void * pbdbuffer; - s32 nbdbuffer; - s32 nbdmode; -} WCMConfig; - -typedef union WCMNoticeParameter { - s32 n; - void * p; -} WCMNoticeParameter; - -typedef struct WCMNotice { - s16 notify; - s16 result; - WCMNoticeParameter parameter[3]; -} WCMNotice; - -typedef void (* WCMNotify) (WCMNotice * arg); - -typedef struct WCMWepDesc { - u8 mode; - u8 keyId; - u8 key[WM_SIZE_WEPKEY]; -} WCMWepDesc; - -s32 WCM_Init(void * buf, s32 len); - -s32 WCM_Finish(void); - -s32 WCM_StartupAsync(WCMConfig * config, WCMNotify notify); - -s32 WCM_CleanupAsync(void); - -s32 WCM_SearchAsync(void * bssid, void * essid, u32 option); - -s32 WCM_BeginSearchAsync(void * bssid, void * essid, u32 option); - -s32 WCM_EndSearchAsync(void); - -s32 WCM_ConnectAsync(void * bssDesc, void * wepDesc, u32 option); - -s32 WCM_DisconnectAsync(void); - -s32 WCM_TerminateAsync(void); - -s32 WCM_GetPhase(void); - -u32 WCM_UpdateOption(u32 option); - -void WCM_SetChannelScanTime(u16 msec); - -s32 WCM_LockApList(s32 lock); - -void WCM_ClearApList(void); - -s32 WCM_CountApList(void); - -WMBssDesc * WCM_PointApList(s32 index); - -WMLinkLevel WCM_PointApListLinkLevel(s32 index); - -BOOL WCM_CompareBssID(u8 * a, u8 * b); - -WMLinkLevel WCM_GetLinkLevel(void); - -BOOL WCM_IsInfrastructureNetwork(WMBssDesc * bssDesc); - -BOOL WCM_IsAdhocNetwork(WMBssDesc * bssDesc); - -BOOL WCM_IsPrivacyNetwork(WMBssDesc * bssDesc); - -BOOL WCM_IsShortPreambleNetwork(WMBssDesc * bssDesc); - -BOOL WCM_IsLongPreambleNetwork(WMBssDesc * bssDesc); - -BOOL WCM_IsEssidHidden(WMBssDesc * bssDesc); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroWiFi/include/nitroWiFi_noso.h b/subprojects/NitroWiFi/include/nitroWiFi_noso.h deleted file mode 100644 index ae95b6e6d7..0000000000 --- a/subprojects/NitroWiFi/include/nitroWiFi_noso.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef NITROWIFI_NOSO_H_ -#define NITROWIFI_NOSO_H_ - -#define SDKWIFI_NO_SO_SYMBOLS -#include - -#endif diff --git a/subprojects/NitroWiFi/libraries/cps/asm/incbin/network.bin b/subprojects/NitroWiFi/libraries/cps/asm/incbin/network.bin deleted file mode 100644 index 4e4f8c0e5d..0000000000 Binary files a/subprojects/NitroWiFi/libraries/cps/asm/incbin/network.bin and /dev/null differ diff --git a/subprojects/NitroWiFi/libraries/cps/asm/include/network.inc b/subprojects/NitroWiFi/libraries/cps/asm/include/network.inc deleted file mode 100644 index 9ba3a64fe2..0000000000 --- a/subprojects/NitroWiFi/libraries/cps/asm/include/network.inc +++ /dev/null @@ -1,121 +0,0 @@ -.public OSi_ReferSymbol -.public OS_CreateThread -.public OS_DestroyThread -.public OS_JoinThread -.public OS_IsThreadTerminated -.public OS_SleepThread -.public OS_WakeupThreadDirect -.public OS_YieldThread -.public OS_SetThreadPriority -.public OS_Sleep -.public OS_GetTick -.public OS_DisableInterrupts -.public OS_RestoreInterrupts -.public OS_GetMacAddress -.public MI_CpuFill8 -.public MI_CpuCopy8 -.public memmove -.public ov4_02208CEC -.public ov4_02208DF0 -.public ov4_02208E18 -.public ov4_02208E1C -.public CPS_CalmDown -.public ov4_02209140 -.public ov4_022091F4 -.public ov4_02209210 -.public ov4_0220922C -.public ov4_0220927C -.public ov4_022092BC -.public ov4_022092E0 -.public ov4_0220931C -.public ov4_02209330 -.public ov4_022093B0 -.public ov4_022093DC -.public ov4_02209438 -.public ov4_02209684 -.public ov4_02209744 -.public ov4_02209788 -.public ov4_02209858 -.public ov4_02209954 -.public ov4_022099C4 -.public ov4_02209B00 -.public ov4_02209BD0 -.public ov4_02209CF8 -.public ov4_02209EF0 -.public ov4_02209FA0 -.public ov4_0220A0DC -.public ov4_0220A350 -.public ov4_0220A3F8 -.public ov4_0220A53C -.public ov4_0220A620 -.public ov4_0220A720 -.public ov4_0220A740 -.public ov4_0220A810 -.public ov4_0220A8E4 -.public ov4_0220A998 -.public ov4_0220A9FC -.public ov4_0220AA80 -.public ov4_0220AA9C -.public ov4_0220AB10 -.public ov4_0220AB24 -.public ov4_0220AB38 -.public ov4_0220AC74 -.public ov4_0220AD60 -.public ov4_0220ADE8 -.public ov4_0220AEC0 -.public ov4_0220AFB8 -.public ov4_0220B2D0 -.public ov4_0220B39C -.public ov4_0220B3D8 -.public ov4_0220B4F8 -.public ov4_0220B704 -.public ov4_0220B9D0 -.public ov4_0220BB94 -.public CPS_SocGetEport -.public ov4_0220BCAC -.public CPS_SocRegister -.public CPS_SocUnRegister -.public CPS_SocDatagramMode -.public CPS_SocBind -.public CPS_SocUse -.public CPS_SocRelease -.public ov4_0220BE14 -.public ov4_0220BEA8 -.public ov4_0220BFEC -.public ov4_0220C100 -.public ov4_0220C154 -.public CPS_SocRead -.public ov4_0220C234 -.public CPS_SocConsume -.public ov4_0220C2FC -.public ov4_0220C3C0 -.public ov4_0220C3FC -.public ov4_0220C604 -.public CPS_SocWrite -.public CPS_SocGetLength -.public ov4_0220C820 -.public ov4_0220C8C0 -.public ov4_0220CC30 -.public ov4_0220CDBC -.public ov4_0220CDF0 -.public ov4_0220CEB4 -.public ov4_0220CFBC -.public ov4_0220D30C -.public ov4_0220D364 -.public ov4_0220D460 -.public ov4_0220D4CC -.public ov4_0220D4FC -.public ov4_0220D7A4 -.public ov4_0220D7D8 -.public ov4_0220D874 -.public ov4_0221075C -.public ov4_02210898 -.public ov4_022108EC -.public ov4_022109C4 -.public ov4_02210B58 -.public ov4_02210BD4 -.public ov4_02210D08 -.public ov4_02210D88 -.public ov4_02210DF0 -.public ov4_02210ED0 -.public WCM_SendDCFDataEx diff --git a/subprojects/NitroWiFi/libraries/cps/asm/macros/function.inc b/subprojects/NitroWiFi/libraries/cps/asm/macros/function.inc deleted file mode 100644 index f71cc4ccae..0000000000 --- a/subprojects/NitroWiFi/libraries/cps/asm/macros/function.inc +++ /dev/null @@ -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 \ No newline at end of file diff --git a/subprojects/NitroWiFi/libraries/cps/asm/network.s b/subprojects/NitroWiFi/libraries/cps/asm/network.s deleted file mode 100644 index d7e55d2ebd..0000000000 --- a/subprojects/NitroWiFi/libraries/cps/asm/network.s +++ /dev/null @@ -1,5928 +0,0 @@ - .include "macros/function.inc" - .include "include/network.inc" - - .extern OSi_ThreadInfo - .extern Unk_ov4_0221F620 - - .text - - - arm_func_start ov4_02208CEC -ov4_02208CEC: ; 0x02208CEC - stmfd sp!, {r3, r4, r5, r6, r7, lr} - ldr r1, _02208DE0 ; =0x0221DDF0 - ldr r2, _02208DE0 ; =0x0221DDF0 - ldr r1, [r1, #0x50] - str r0, [r2, #0xc] - cmp r1, #0 - mov r1, #0 - str r1, [r2, #0x50] - str r1, [r2, #0x1c] - str r1, [r2, #0x2c] - str r1, [r2, #0x60] - movne r3, #1 - str r1, [r2, #0x64] - moveq r3, #0 - str r1, [r2, #0x20] - cmp r3, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, _02208DE4 ; =0x0221DE70 - mov r2, #0x60 - bl MI_CpuFill8 - ldr r0, _02208DE8 ; =0x021CCC80 - ldr r6, [r0, #8] - cmp r6, #0 - beq _02208D9C - mov r5, #0 - mov r4, r5 -_02208D54: - ldr r1, [r6, #0xa4] - cmp r1, #0 - ldrne r0, [r1] - cmpne r0, #0 - beq _02208D90 - ldrb r0, [r1, #8] - cmp r0, #0xa - cmpne r0, #0xb - strneb r5, [r1, #8] - ldr r0, [r1, #4] - cmp r0, #0 - beq _02208D90 - str r4, [r1, #4] - ldr r0, [r1, #0] - bl OS_WakeupThreadDirect -_02208D90: - ldr r6, [r6, #0x68] - cmp r6, #0 - bne _02208D54 -_02208D9C: - mov r6, #0 - ldr r7, _02208DEC ; =0x0221E118 - ldr r4, _02208DE0 ; =0x0221DDF0 - mov r5, r6 -_02208DAC: - ldrh r0, [r7, #4] - cmp r0, #0 - beq _02208DC8 - ldr r0, [r7, #0x34] - ldr r1, [r4, #0x40] - blx r1 - strh r5, [r7, #4] -_02208DC8: - add r6, r6, #1 - cmp r6, #8 - add r7, r7, #0x38 - blt _02208DAC - bl ov4_02210ED0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02208DE0: .word Unk_ov4_0221DDF0 -_02208DE4: .word Unk_ov4_0221DE70 -_02208DE8: .word OSi_ThreadInfo -_02208DEC: .word Unk_ov4_0221E118 - arm_func_end ov4_02208CEC - - arm_func_start ov4_02208DF0 -ov4_02208DF0: ; 0x02208DF0 - stmfd sp!, {r3, lr} - ldr r0, _02208E14 ; =0x0221DDF0 - ldr r0, [r0, #0x24] - cmp r0, #0 - bne _02208E0C - bl OS_YieldThread - ldmia sp!, {r3, pc} -_02208E0C: - bl OS_Sleep - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02208E14: .word Unk_ov4_0221DDF0 - arm_func_end ov4_02208DF0 - - arm_func_start ov4_02208E18 -ov4_02208E18: ; 0x02208E18 - bx lr - arm_func_end ov4_02208E18 - - arm_func_start ov4_02208E1C -ov4_02208E1C: ; 0x02208E1C - mov r0, #1 - bx lr - arm_func_end ov4_02208E1C - - arm_func_start CPS_Startup -CPS_Startup: ; 0x02208E24 - stmfd sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - mov r4, r0 - ldr r0, _0220901C ; =0x02000C58 - bl OSi_ReferSymbol - ldr r3, [r4, #0x18] - ldr r5, [r4, #0x14] - cmp r3, #0 - cmpeq r5, #0 - mov r1, #0 - beq _02208E7C - ldr r0, _02209020 ; =0x0221DDF0 - ldr r2, _02209024 ; =0x6C078965 - str r5, [r0, #0x68] - str r3, [r0, #0x6c] - ldr r3, _02209028 ; =0x5D588B65 - str r2, [r0, #0x70] - ldr r2, _0220902C ; =0x00269EC3 - str r3, [r0, #0x74] - str r2, [r0, #0x78] - str r1, [r0, #0x7c] - b _02208EAC -_02208E7C: - bl OS_GetTick - ldr r2, _02209020 ; =0x0221DDF0 - ldr r3, _02209024 ; =0x6C078965 - str r0, [r2, #0x68] - str r1, [r2, #0x6c] - ldr r1, _02209028 ; =0x5D588B65 - str r3, [r2, #0x70] - ldr r0, _0220902C ; =0x00269EC3 - str r1, [r2, #0x74] - str r0, [r2, #0x78] - mov r0, #0 - str r0, [r2, #0x7c] -_02208EAC: - ldr r1, [r4, #4] - cmp r1, #0 - ldrne r0, [r4, #8] - cmpne r0, #0 - beq _02208ED0 - ldr r0, _02209020 ; =0x0221DDF0 - str r1, [r0, #0x14] - ldr r1, [r4, #8] - b _02208EDC -_02208ED0: - ldr r1, _02209030 ; =ov4_02208E18 - ldr r0, _02209020 ; =0x0221DDF0 - str r1, [r0, #0x14] -_02208EDC: - str r1, [r0, #0x40] - ldr r1, [r4, #0] - ldr r0, _02209020 ; =0x0221DDF0 - ldr r2, _02209020 ; =0x0221DDF0 - str r1, [r0, #0x10] - ldr r1, [r4, #0x24] - cmp r1, #0 - ldreq r1, _02209034 ; =0x000005B4 - strh r1, [r0, #2] - ldr r1, [r4, #0x28] - ldr r0, _02209020 ; =0x0221DDF0 - str r1, [r0, #0x34] - ldr r1, [r4, #0x2c] - str r1, [r0, #0x24] - ldr r1, [r4, #0xc] - cmp r1, #0 - ldreq r1, _02209030 ; =ov4_02208E18 - str r1, [r0, #0x18] - ldr r1, [r4, #0x10] - cmp r1, #0 - ldrne r0, _02209020 ; =0x0221DDF0 - ldreq r1, _02209038 ; =ov4_02208E1C - ldreq r0, _02209020 ; =0x0221DDF0 - str r1, [r0, #0x48] - ldr r1, [r4, #0x1c] - mov r0, #0 - str r1, [r2, #0x58] - ldr r3, [r4, #0x20] - ldr r1, _0220903C ; =0x00000F88 - str r3, [r2, #0x5c] - str r0, [r2, #0x30] - str r0, [r2, #0x28] - ldr ip, [r2, #0x70] - ldr r4, [r2, #0x68] - ldr r3, [r2, #0x6c] - umull r5, lr, ip, r4 - mla lr, ip, r3, lr - ldr r3, [r2, #0x74] - ldr ip, [r2, #0x78] - mla lr, r3, r4, lr - ldr r3, [r2, #0x7c] - adds ip, ip, r5 - adc r5, r3, lr - umull r3, r4, r5, r1 - mla r4, r5, r0, r4 - mla r4, r0, r1, r4 - str ip, [r2, #0x68] - ldr r0, _02209040 ; =0x0221E2D8 - str r5, [r2, #0x6c] - add r1, r4, #0x400 - strh r1, [r2, #8] - bl OS_GetMacAddress - ldr r0, _02209020 ; =0x0221DDF0 - mov r2, #0 - strb r2, [r0, #1] - mov r1, #0x800 - str r1, [sp] - ldr r0, _02209044 ; =0x0221A190 - ldr r1, _02209048 ; =ov4_0220BB94 - ldr r4, [r0, #0] - ldr r0, _0220904C ; =0x0221E058 - ldr r3, _02209050 ; =0x0221F620 - str r4, [sp, #4] - bl OS_CreateThread - mov r1, #0x800 - ldr r0, _02209044 ; =0x0221A190 - str r1, [sp] - ldr r1, [r0, #0] - ldr r0, _02209054 ; =0x0221DF98 - str r1, [sp, #4] - ldr r1, _02209058 ; =ov4_0220C8C0 - ldr r3, _0220905C ; =0x0221EE20 - mov r2, #0 - bl OS_CreateThread - ldr r0, _0220904C ; =0x0221E058 - bl OS_WakeupThreadDirect - ldr r0, _02209054 ; =0x0221DF98 - bl OS_WakeupThreadDirect - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0220901C: .word Unk_02000C58 -_02209020: .word Unk_ov4_0221DDF0 -_02209024: .word 0x6C078965 -_02209028: .word 0x5D588B65 -_0220902C: .word 0x00269EC3 -_02209030: .word ov4_02208E18 -_02209034: .word 0x000005B4 -_02209038: .word ov4_02208E1C -_0220903C: .word 0x00000F88 -_02209040: .word Unk_ov4_0221E2D8 -_02209044: .word Unk_ov4_0221A190 -_02209048: .word ov4_0220BB94 -_0220904C: .word Unk_ov4_0221E058 -_02209050: .word Unk_ov4_0221F620 -_02209054: .word Unk_ov4_0221DF98 -_02209058: .word ov4_0220C8C0 -_0220905C: .word Unk_ov4_0221EE20 - arm_func_end CPS_Startup - - arm_func_start CPS_CalmDown -CPS_CalmDown: ; 0x02209060 - stmfd sp!, {r3, r4, r5, lr} - bl OS_DisableInterrupts - mov r4, r0 - ldr r0, _022090A8 ; =0x0221DF98 - bl OS_IsThreadTerminated - movs r5, r0 - ldreq r1, _022090AC ; =0x0221DDF0 - ldreq r0, [r1, #0x44] - cmpeq r0, #0 - bne _02209098 - ldr r0, _022090A8 ; =0x0221DF98 - mov r2, #1 - str r2, [r1, #0x44] - bl OS_WakeupThreadDirect -_02209098: - mov r0, r4 - bl OS_RestoreInterrupts - mov r0, r5 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_022090A8: .word Unk_ov4_0221DF98 -_022090AC: .word Unk_ov4_0221DDF0 - arm_func_end CPS_CalmDown - - arm_func_start CPS_SetScavengerCallback -CPS_SetScavengerCallback: ; 0x022090B0 - ldr r1, _022090BC ; =0x0221DDF0 - str r0, [r1, #0x3c] - bx lr - ; .align 2, 0 -_022090BC: .word Unk_ov4_0221DDF0 - arm_func_end CPS_SetScavengerCallback - - arm_func_start CPS_Cleanup -CPS_Cleanup: ; 0x022090C0 - stmfd sp!, {r3, lr} - bl CPS_CalmDown - ldr r0, _022090FC ; =0x0221DF98 - bl OS_JoinThread - ldr r0, _02209100 ; =0x0221E058 - bl OS_DestroyThread - ldr r1, _02209104 ; =0x0221DDF0 - mov r0, #0 - str r0, [r1, #0x54] - bl ov4_02208CEC - ldr r0, _02209104 ; =0x0221DDF0 - mov r1, #0 - str r1, [r0, #0x58] - str r1, [r0, #0x5c] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022090FC: .word Unk_ov4_0221DF98 -_02209100: .word Unk_ov4_0221E058 -_02209104: .word Unk_ov4_0221DDF0 - arm_func_end CPS_Cleanup - - arm_func_start CPS_SetThreadPriority -CPS_SetThreadPriority: ; 0x02209108 - stmfd sp!, {r4, lr} - mov r4, r0 - ldr r2, _02209134 ; =0x0221A190 - ldr r0, _02209138 ; =0x0221E058 - mov r1, r4 - str r4, [r2, #0] - bl OS_SetThreadPriority - ldr r0, _0220913C ; =0x0221DF98 - mov r1, r4 - bl OS_SetThreadPriority - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02209134: .word Unk_ov4_0221A190 -_02209138: .word Unk_ov4_0221E058 -_0220913C: .word Unk_ov4_0221DF98 - arm_func_end CPS_SetThreadPriority - - arm_func_start ov4_02209140 -ov4_02209140: ; 0x02209140 - tst r0, #1 - beq _02209178 - cmp r1, #1 - bls _022091C8 -_02209150: - ldrb ip, [r0] - ldrb r3, [r0, #1] - sub r1, r1, #2 - cmp r1, #1 - orr r3, r3, ip, lsl #8 - mov r3, r3, lsl #0x10 - add r2, r2, r3, lsr #16 - add r0, r0, #2 - bhi _02209150 - b _022091C8 -_02209178: - mov r2, r2, lsl #0x10 - mov r3, r2, lsr #0x10 - mov r2, r3, lsl #8 - orr r2, r2, r3, asr #8 - mov r2, r2, lsl #0x10 - cmp r1, #1 - mov r2, r2, lsr #0x10 - bls _022091AC -_02209198: - ldrh r3, [r0], #2 - sub r1, r1, #2 - cmp r1, #1 - add r2, r2, r3 - bhi _02209198 -_022091AC: - ldr r3, _022091F0 ; =0x00FF00FF - mov ip, r3, lsl #8 - and r3, r3, r2, lsr #8 - and r2, ip, r2, lsl #8 - orr r3, r3, r2 - mov r2, r3, lsl #0x10 - orr r2, r2, r3, lsr #16 -_022091C8: - cmp r1, #0 - ldrneb r0, [r0] - addne r2, r2, r0, lsl #8 - mov r0, r2, lsl #0x10 - mov r1, r2, lsr #0x10 - add r0, r1, r0, lsr #16 - add r0, r0, r0, lsr #16 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bx lr - ; .align 2, 0 -_022091F0: .word 0x00FF00FF - arm_func_end ov4_02209140 - - arm_func_start ov4_022091F4 -ov4_022091F4: ; 0x022091F4 - ldr r1, _0220920C ; =0x0000FFFF - eor r0, r0, r1 - mov r0, r0, lsl #0x10 - movs r0, r0, lsr #0x10 - moveq r0, r1 - bx lr - ; .align 2, 0 -_0220920C: .word 0x0000FFFF - arm_func_end ov4_022091F4 - - arm_func_start ov4_02209210 -ov4_02209210: ; 0x02209210 - stmfd sp!, {r3, lr} - mov r2, #0 - bl ov4_02209140 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl ov4_022091F4 - ldmia sp!, {r3, pc} - arm_func_end ov4_02209210 - - arm_func_start ov4_0220922C -ov4_0220922C: ; 0x0220922C - stmfd sp!, {r3, r4, r5, lr} - mov r4, r2 - mov r2, r3 - mov r5, r1 - bl ov4_02209140 - mov r2, r0 - add r0, r4, #0xc - mov r1, #8 - bl ov4_02209140 - add r1, r0, r5 - tst r1, #0x10000 - addne r0, r1, #1 - movne r0, r0, lsl #0x10 - movne r1, r0, lsr #0x10 - ldr r0, _02209278 ; =0x0000FFFF - cmp r1, r0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02209278: .word 0x0000FFFF - arm_func_end ov4_0220922C - - arm_func_start ov4_0220927C -ov4_0220927C: ; 0x0220927C - mov ip, #1 - sub r1, ip, #2 - cmp r0, r1 - subne r1, ip, #-0x7f000000 - cmpne r0, r1 - beq _022092B0 - ldr r1, _022092B8 ; =0x0221DDF0 - ldr r3, [r1, #0x1c] - ldr r1, [r1, #0x50] - and r2, r0, r3 - and r0, r1, r3 - cmp r2, r0 - movne ip, #0 -_022092B0: - mov r0, ip - bx lr - ; .align 2, 0 -_022092B8: .word Unk_ov4_0221DDF0 - arm_func_end ov4_0220927C - - arm_func_start ov4_022092BC -ov4_022092BC: ; 0x022092BC - stmfd sp!, {r4, lr} - mov r4, r0 - bl ov4_0220927C - cmp r0, #0 - ldreq r0, _022092DC ; =0x0221DDF0 - ldreq r4, [r0, #0x2c] - mov r0, r4 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_022092DC: .word Unk_ov4_0221DDF0 - arm_func_end ov4_022092BC - - arm_func_start ov4_022092E0 -ov4_022092E0: ; 0x022092E0 - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, #0 - bl ov4_0220927C - cmp r0, #0 - beq _02209310 - ldr r0, _02209318 ; =0x0221DDF0 - ldr r0, [r0, #0x1c] - mvn r1, r0 - and r0, r1, r5 - cmp r1, r0 - moveq r4, #1 -_02209310: - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02209318: .word Unk_ov4_0221DDF0 - arm_func_end ov4_022092E0 - - arm_func_start ov4_0220931C -ov4_0220931C: ; 0x0220931C - and r0, r0, #0xf0000000 - cmp r0, #-0x20000000 - moveq r0, #1 - movne r0, #0 - bx lr - arm_func_end ov4_0220931C - - arm_func_start ov4_02209330 -ov4_02209330: ; 0x02209330 - stmfd sp!, {r4, r5, r6, lr} - ldr r1, _022093A8 ; =0x0221DDF0 - mov r4, #1 - ldr r1, [r1, #0x50] - mov r6, r0 - cmp r1, #0 - mov r0, r4 - cmpne r6, r1 - movne r0, #0 - mov r5, r4 - mov r2, r4 - cmp r0, #0 - bne _02209370 - ldr r0, _022093AC ; =0x7F000001 - cmp r6, r0 - movne r2, #0 -_02209370: - cmp r2, #0 - bne _02209388 - mov r0, r6 - bl ov4_022092E0 - cmp r0, #0 - moveq r5, #0 -_02209388: - cmp r5, #0 - bne _022093A0 - mov r0, r6 - bl ov4_0220931C - cmp r0, #0 - moveq r4, #0 -_022093A0: - mov r0, r4 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_022093A8: .word Unk_ov4_0221DDF0 -_022093AC: .word 0x7F000001 - arm_func_end ov4_02209330 - - arm_func_start ov4_022093B0 -ov4_022093B0: ; 0x022093B0 - mov ip, #0 -_022093B4: - ldrh r3, [r0], #2 - ldrh r2, [r1], #2 - cmp r3, r2 - movne r0, #1 - bxne lr - add ip, ip, #1 - cmp ip, #3 - blt _022093B4 - mov r0, #0 - bx lr - arm_func_end ov4_022093B0 - - arm_func_start ov4_022093DC -ov4_022093DC: ; 0x022093DC - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - ldr r0, _02209430 ; =0x0221A19C - add r1, r7, #6 - mov r2, #6 - mov r4, r3 - bl MI_CpuCopy8 - mov r0, r7 - mov r3, r5 - add r1, r7, #6 - sub r2, r6, #6 - str r4, [sp] - bl WCM_SendDCFDataEx - cmp r0, #0 - movlt r1, #1 - ldr r0, _02209434 ; =0x0221DDF0 - movge r1, #0 - strb r1, [r0] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02209430: .word Unk_ov4_0221A19C -_02209434: .word Unk_ov4_0221DDF0 - arm_func_end ov4_022093DC - - arm_func_start ov4_02209438 -ov4_02209438: ; 0x02209438 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - ldr r4, _02209620 ; =0x0221DDF0 - mov r7, r0 - ldr ip, [r4, #0x58] - mov r6, r2 - cmp ip, #0 - ldrne r0, [r4, #0x5c] - mov r5, r3 - cmpne r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldr r0, [sp, #0x1c] - add r0, r5, r0 - cmp r0, #8 - ldmloia sp!, {r4, r5, r6, r7, r8, pc} - ldr r2, _02209624 ; =0x000005E4 - cmp r0, r2 - ldmhiia sp!, {r4, r5, r6, r7, r8, pc} - ldr r2, _02209628 ; =0x0221A19C - ldrb r4, [r6] - ldrb r3, [r2] - cmp r4, r3 - ldreqb r4, [r6, #1] - ldreqb r3, [r2, #1] - cmpeq r4, r3 - ldreqb r3, [r6, #2] - ldreqb r2, [r2, #2] - cmpeq r3, r2 - ldreqb r2, [r6, #6] - cmpeq r2, #8 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - ldrb r2, [r6, #7] - cmp r2, #0 - cmpne r2, #6 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - ldr r2, _02209620 ; =0x0221DDF0 - add r0, r0, #9 - bic r0, r0, #1 - ldr r8, [r2, #0x28] - mov r0, r0, lsl #0x10 - ldr lr, [r2, #0x28] - ldr r4, [r2, #0x30] - mov r3, r0, lsr #0x10 - cmp lr, r4 - add r4, r8, r0, lsr #16 - bhs _022094F8 - ldr r0, [r2, #0x30] - cmp r0, r4 - ldmlsia sp!, {r4, r5, r6, r7, r8, pc} -_022094F8: - ldr r0, _02209620 ; =0x0221DDF0 - ldr r2, [r0, #0x5c] - cmp r4, r2 - bne _0220951C - ldr r0, [r0, #0x30] - mov r4, #0 - cmp r0, #0 - bne _02209538 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0220951C: - ldr r2, [r0, #0x5c] - cmp r4, r2 - bls _02209538 - ldr r0, [r0, #0x30] - mov r4, r3 - cmp r0, r3 - ldmlsia sp!, {r4, r5, r6, r7, r8, pc} -_02209538: - ldr r0, _02209620 ; =0x0221DDF0 - ldr lr, [r0, #0x28] - ldr r2, [r0, #0x5c] - add lr, lr, r3 - cmp lr, r2 - bls _02209578 - ldr lr, [r0, #0x5c] - ldr r2, [r0, #0x28] - sub r2, lr, r2 - cmp r2, #2 - ldrhs r0, [r0, #0x28] - movhs r2, #0 - strhsh r2, [ip, r0] - ldr r0, _02209620 ; =0x0221DDF0 - mov r2, #0 - str r2, [r0, #0x28] -_02209578: - ldr ip, _02209620 ; =0x0221DDF0 - mov r0, r1 - ldr lr, [ip, #0x58] - ldr r1, [ip, #0x28] - mov r2, #6 - strh r3, [lr, r1] - ldr r3, [ip, #0x58] - ldr r1, [ip, #0x28] - add r1, r3, r1 - add r1, r1, #2 - bl MI_CpuCopy8 - ldr r1, _02209620 ; =0x0221DDF0 - mov r0, r7 - ldr r3, [r1, #0x58] - ldr r1, [r1, #0x28] - mov r2, #6 - add r1, r3, r1 - add r1, r1, #8 - bl MI_CpuCopy8 - ldr r1, _02209620 ; =0x0221DDF0 - add r0, r6, #6 - ldr r3, [r1, #0x58] - ldr r1, [r1, #0x28] - sub r2, r5, #6 - add r1, r3, r1 - add r1, r1, #0xe - bl MI_CpuCopy8 - ldr r0, [sp, #0x18] - cmp r0, #0 - ldrne r2, [sp, #0x1c] - cmpne r2, #0 - beq _02209614 - ldr r1, _02209620 ; =0x0221DDF0 - ldr r3, [r1, #0x58] - ldr r1, [r1, #0x28] - add r1, r3, r1 - add r1, r1, #8 - add r1, r1, r5 - bl MI_CpuCopy8 -_02209614: - ldr r0, _02209620 ; =0x0221DDF0 - str r4, [r0, #0x28] - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_02209620: .word Unk_ov4_0221DDF0 -_02209624: .word 0x000005E4 -_02209628: .word Unk_ov4_0221A19C - arm_func_end ov4_02209438 - - arm_func_start CPSi_RecvCallbackFunc -CPSi_RecvCallbackFunc: ; 0x0220962C - stmfd sp!, {r3, lr} - sub sp, sp, #8 - mov ip, #0 - str ip, [sp] - str ip, [sp, #4] - bl ov4_02209438 - ldr r0, _02209680 ; =0x0221DDF0 - ldr r1, [r0, #0x54] - cmp r1, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r3, pc} - ldr r0, [r0, #0x54] - bl OS_IsThreadTerminated - cmp r0, #0 - addne sp, sp, #8 - ldmneia sp!, {r3, pc} - ldr r0, _02209680 ; =0x0221DDF0 - ldr r0, [r0, #0x54] - bl OS_WakeupThreadDirect - add sp, sp, #8 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02209680: .word Unk_ov4_0221DDF0 - arm_func_end CPSi_RecvCallbackFunc - - arm_func_start ov4_02209684 -ov4_02209684: ; 0x02209684 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r7, r0 - bl OS_DisableInterrupts - ldr sb, _0220973C ; =0x0221DDF0 - mov r6, r0 - ldr r1, [sb, #0x30] - ldr r0, [sb, #0x28] - cmp r1, r0 - bne _022096D8 - mov r5, #0 - ldr r8, _02209740 ; =0x021CCC80 - mov r4, r5 -_022096B4: - ldr r1, [r8, #4] - mov r0, r5 - str r1, [sb, #0x54] - bl OS_SleepThread - str r4, [sb, #0x54] - ldr r1, [sb, #0x30] - ldr r0, [sb, #0x28] - cmp r1, r0 - beq _022096B4 -_022096D8: - mov r0, r6 - bl OS_RestoreInterrupts - ldr r0, _0220973C ; =0x0221DDF0 - mov r3, #0 - ldr r5, [r0, #0x58] - mov r1, r3 -_022096F0: - ldr r4, [r0, #0x5c] - ldr r2, [r0, #0x30] - sub r2, r4, r2 - cmp r2, #2 - strlo r3, [r0, #0x30] - ldr r2, [r0, #0x30] - ldrh r2, [r5, r2] - cmp r2, #0 - streq r1, [r0, #0x30] - cmp r2, #0 - beq _022096F0 - sub r1, r2, #2 - ldr r0, _0220973C ; =0x0221DDF0 - str r1, [r7, #0] - ldr r1, [r0, #0x58] - ldr r0, [r0, #0x30] - add r0, r1, r0 - add r0, r0, #2 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ; .align 2, 0 -_0220973C: .word Unk_ov4_0221DDF0 -_02209740: .word OSi_ThreadInfo - arm_func_end ov4_02209684 - - arm_func_start ov4_02209744 -ov4_02209744: ; 0x02209744 - stmfd sp!, {r3, lr} - bl OS_DisableInterrupts - ldr r1, _02209784 ; =0x0221DDF0 - ldr ip, [r1, #0x30] - ldr r3, [r1, #0x58] - ldr r2, [r1, #0x30] - ldrh r2, [r3, r2] - add r2, ip, r2 - str r2, [r1, #0x30] - ldr r3, [r1, #0x30] - ldr r2, [r1, #0x5c] - cmp r3, r2 - movhs r2, #0 - strhs r2, [r1, #0x30] - bl OS_RestoreInterrupts - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02209784: .word Unk_ov4_0221DDF0 - arm_func_end ov4_02209744 - - arm_func_start ov4_02209788 -ov4_02209788: ; 0x02209788 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r5, r0 - bl OS_DisableInterrupts - ldr r1, _02209840 ; =0x7F000001 - mov r4, r0 - cmp r5, r1 - ldrne r0, _02209844 ; =0x0221DDF0 - mov r7, #0 - ldrne r0, [r0, #0x50] - cmpne r5, r0 - ldreq r7, _02209848 ; =0x0221E2D8 - beq _02209830 - mov r0, r5 - bl ov4_022092E0 - cmp r0, #0 - bne _022097D8 - mov r0, r5 - bl ov4_0220931C - cmp r0, #0 - beq _022097E0 -_022097D8: - ldr r7, _0220984C ; =0x0221A194 - b _02209830 -_022097E0: - ldr r1, _02209850 ; =0x0221DE70 - mov r6, r7 -_022097E8: - ldr r0, [r1, #0] - cmp r5, r0 - bne _02209820 - bl OS_GetTick - mov r2, #0xc - mul r3, r6, r2 - ldr r2, _02209850 ; =0x0221DE70 - mov r5, r0, lsr #0x10 - add r0, r2, r3 - ldr r2, _02209854 ; =0x0221DE7A - orr r5, r5, r1, lsl #16 - strh r5, [r2, r3] - add r7, r0, #4 - b _02209830 -_02209820: - add r6, r6, #1 - cmp r6, #8 - add r1, r1, #0xc - blo _022097E8 -_02209830: - mov r0, r4 - bl OS_RestoreInterrupts - mov r0, r7 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02209840: .word 0x7F000001 -_02209844: .word Unk_ov4_0221DDF0 -_02209848: .word Unk_ov4_0221E2D8 -_0220984C: .word Unk_ov4_0221A194 -_02209850: .word Unk_ov4_0221DE70 -_02209854: .word 0x0221DE7A - arm_func_end ov4_02209788 - - arm_func_start ov4_02209858 -ov4_02209858: ; 0x02209858 - stmfd sp!, {r3, r4, lr} - sub sp, sp, #0x2c - mov r4, r0 - add r0, sp, #0 - mov r1, #0 - mov r2, #0x2a - bl MI_CpuFill8 - add r0, sp, #0 - mov r1, #0xff - mov r2, #6 - bl MI_CpuFill8 - ldr r0, _02209944 ; =0x0221E2D8 - add r1, sp, #6 - mov r2, #6 - bl MI_CpuCopy8 - mov r0, #1 - ldr r1, _02209948 ; =0x00000608 - strb r0, [sp, #0xf] - strh r1, [sp, #0xc] - strb r0, [sp, #0x15] - mov r0, #8 - ldr r1, _0220994C ; =0x00000406 - strb r0, [sp, #0x10] - strh r1, [sp, #0x12] - ldr r0, _02209944 ; =0x0221E2D8 - add r1, sp, #0x16 - mov r2, #6 - bl MI_CpuCopy8 - ldr r0, _02209950 ; =0x0221DDF0 - mov r1, r4, lsr #0x10 - ldr r3, [r0, #0x50] - mov r0, r1, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, r4, lsl #0x10 - mov r1, r0, lsr #0x10 - mov r0, r3, lsr #0x10 - mov r0, r0, lsl #0x10 - mov r4, r0, lsr #0x10 - mov r0, r3, lsl #0x10 - mov r3, r0, lsr #0x10 - mov r0, r4, lsl #8 - orr r0, r0, r4, asr #8 - strh r0, [sp, #0x1c] - mov r0, r3, lsl #8 - orr r0, r0, r3, asr #8 - strh r0, [sp, #0x1e] - mov r0, r2, lsl #8 - orr r0, r0, r2, asr #8 - strh r0, [sp, #0x26] - mov r0, r1, lsl #8 - orr r0, r0, r1, asr #8 - mov r2, #0 - strh r0, [sp, #0x28] - add r0, sp, #0 - mov r1, #0x2a - mov r3, r2 - bl ov4_022093DC - add sp, sp, #0x2c - ldmia sp!, {r3, r4, pc} - ; .align 2, 0 -_02209944: .word Unk_ov4_0221E2D8 -_02209948: .word 0x00000608 -_0220994C: .word 0x00000406 -_02209950: .word Unk_ov4_0221DDF0 - arm_func_end ov4_02209858 - - arm_func_start ov4_02209954 -ov4_02209954: ; 0x02209954 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r7, #0 - ldr r4, _022099C0 ; =0x0221DDF0 - mov sb, r0 - mov r5, #0x64 - mov r6, r7 -_0220996C: - mov r0, sb - bl ov4_02209858 - mov r8, r6 -_02209978: - ldr r0, [r4, #0x50] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, r5 - bl OS_Sleep - mov r0, sb - bl ov4_02209788 - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - add r8, r8, #1 - cmp r8, #0x14 - blo _02209978 - add r7, r7, #1 - cmp r7, #8 - blo _0220996C - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ; .align 2, 0 -_022099C0: .word Unk_ov4_0221DDF0 - arm_func_end ov4_02209954 - - arm_func_start ov4_022099C4 -ov4_022099C4: ; 0x022099C4 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - ldr r3, _02209AF0 ; =0x7F000001 - mov r6, r1 - mov r7, r0 - cmp r6, r3 - ldrne r0, _02209AF4 ; =0x0221DDF0 - mov r5, r2 - ldrne r0, [r0, #0x50] - cmpne r6, r0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r6 - bl ov4_0220927C - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r6 - bl ov4_0220931C - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - bl OS_GetTick - mov r0, r0, lsr #0x10 - orr r0, r0, r1, lsl #16 - mov r0, r0, lsl #0x10 - ldr r2, _02209AF8 ; =0x0221DE70 - mov r4, r0, lsr #0x10 - mov r1, #0 -_02209A28: - ldr r0, [r2, #0] - cmp r6, r0 - bne _02209A60 - mov r0, #0xc - mul r5, r1, r0 - ldr r0, _02209AF8 ; =0x0221DE70 - ldr r3, _02209AFC ; =0x0221DE7A - add r1, r0, r5 - mov r0, r7 - add r1, r1, #4 - mov r2, #6 - strh r4, [r3, r5] - bl MI_CpuCopy8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02209A60: - add r1, r1, #1 - cmp r1, #8 - add r2, r2, #0xc - blo _02209A28 - cmp r5, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r2, #0 - ldr r3, _02209AF8 ; =0x0221DE70 - mov r1, r2 - mov r5, r2 -_02209A88: - ldr r0, [r3, #0] - cmp r0, #0 - moveq r1, r5 - beq _02209AC0 - ldrh r0, [r3, #0xa] - add r3, r3, #0xc - sub r0, r4, r0 - mov r0, r0, lsl #0x10 - cmp r2, r0, asr #16 - movlt r1, r5 - add r5, r5, #1 - movlt r2, r0, lsr #0x10 - cmp r5, #8 - blo _02209A88 -_02209AC0: - mov r0, #0xc - mul r5, r1, r0 - ldr r3, _02209AF8 ; =0x0221DE70 - mov r0, r7 - add r1, r3, r5 - add r1, r1, #4 - mov r2, #6 - str r6, [r3, r5] - bl MI_CpuCopy8 - ldr r0, _02209AFC ; =0x0221DE7A - strh r4, [r0, r5] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02209AF0: .word 0x7F000001 -_02209AF4: .word Unk_ov4_0221DDF0 -_02209AF8: .word Unk_ov4_0221DE70 -_02209AFC: .word 0x0221DE7A - arm_func_end ov4_022099C4 - - arm_func_start ov4_02209B00 -ov4_02209B00: ; 0x02209B00 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - ldrh r5, [sp, #0x1c] - ldr r4, [sp, #0x18] - mov r8, r0 - mov r0, r5, lsl #8 - orr ip, r0, r5, asr #8 - mov r0, r4 - mov r7, r1 - mov r6, r2 - mov r5, r3 - strh ip, [r8, #-2] - bl ov4_0220931C - cmp r0, #0 - bne _02209B74 - mov r0, r4 - bl ov4_022092BC - movs r4, r0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - bl ov4_02209788 - cmp r0, #0 - bne _02209B5C - mov r0, r4 - bl ov4_02209954 -_02209B5C: - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - sub r1, r8, #0xe - mov r2, #6 - bl MI_CpuCopy8 - b _02209BA4 -_02209B74: - mov r0, #1 - strb r0, [r8, #-0xe] - mov r1, #0 - mov r0, r4, lsr #0x10 - strb r1, [r8, #-0xd] - mov r1, #0x5e - strb r1, [r8, #-0xc] - and r0, r0, #0x7f - strb r0, [r8, #-0xb] - mov r0, r4, lsr #8 - strb r0, [r8, #-0xa] - strb r4, [r8, #-9] -_02209BA4: - ldr r0, _02209BCC ; =0x0221E2D8 - sub r1, r8, #8 - mov r2, #6 - bl MI_CpuCopy8 - mov r2, r6 - mov r3, r5 - sub r0, r8, #0xe - add r1, r7, #0xe - bl ov4_022093DC - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_02209BCC: .word Unk_ov4_0221E2D8 - arm_func_end ov4_02209B00 - - arm_func_start ov4_02209BD0 -ov4_02209BD0: ; 0x02209BD0 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #8 - mov r7, r1 - mov r5, r3 - add r1, r7, #0x14 - add r1, r1, r5 - mov r1, r1, lsl #0x10 - ldr r3, [sp, #0x24] - mov r4, r1, lsr #0x10 - mov r1, r3, lsl #0x10 - mov r3, r4, lsl #8 - orr r3, r3, r4, asr #8 - mov r8, r0 - mov r1, r1, lsr #0x10 - mov r0, r1, lsl #8 - strh r3, [r8, #-0x12] - orr r0, r0, r1, asr #8 - strh r0, [r8, #-0xe] - mov r3, #0 - sub r0, r8, #0x14 - mov r1, #0x14 - mov r6, r2 - strh r3, [r8, #-0xa] - ldr r4, [sp, #0x20] - bl ov4_02209210 - mov r2, r0, lsl #8 - ldr r1, _02209CE8 ; =0x7F000001 - orr r0, r2, r0, asr #8 - strh r0, [r8, #-0xa] - cmp r4, r1 - ldrne r0, _02209CEC ; =0x0221DDF0 - ldrne r0, [r0, #0x50] - cmpne r4, r0 - beq _02209C78 - mov r2, r6 - mov r3, r5 - str r4, [sp] - mov ip, #0x800 - sub r0, r8, #0x14 - add r1, r7, #0x14 - str ip, [sp, #4] - bl ov4_02209B00 -_02209C78: - ldr r0, _02209CE8 ; =0x7F000001 - cmp r4, r0 - ldrne r0, _02209CEC ; =0x0221DDF0 - ldrne r0, [r0, #0x50] - cmpne r4, r0 - beq _02209CA4 - mov r0, r4 - bl ov4_0220931C - cmp r0, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} -_02209CA4: - ldr r0, _02209CF0 ; =0x0221A19C - sub r1, r8, #0x1c - mov r2, #8 - bl MI_CpuCopy8 - bl OS_DisableInterrupts - mov r4, r0 - ldr r0, _02209CF4 ; =0x0221E2D8 - str r6, [sp] - mov r1, r0 - str r5, [sp, #4] - sub r2, r8, #0x1c - add r3, r7, #0x1c - bl ov4_02209438 - mov r0, r4 - bl OS_RestoreInterrupts - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_02209CE8: .word 0x7F000001 -_02209CEC: .word Unk_ov4_0221DDF0 -_02209CF0: .word Unk_ov4_0221A19C -_02209CF4: .word Unk_ov4_0221E2D8 - arm_func_end ov4_02209BD0 - - arm_func_start ov4_02209CF8 -ov4_02209CF8: ; 0x02209CF8 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - mov sl, r0 - mov r0, #0x45 - strb r0, [sl, #-0x14] - mov r4, #0 - ldr r7, _02209EE8 ; =0x0221DDF0 - strb r4, [sl, #-0x13] - ldrh r0, [r7, #6] - ldr r6, [sp, #0x30] - ldrb r5, [sp, #0x34] - add r0, r0, #1 - strh r0, [r7, #6] - ldrh fp, [r7, #6] - mov r0, r6, lsr #0x10 - mov r8, #0x80 - mov sb, fp, lsl #8 - orr sb, sb, fp, asr #8 - strh sb, [sl, #-0x10] - strb r8, [sl, #-0xc] - strb r5, [sl, #-0xb] - ldr r8, [r7, #0x50] - mov r5, r0, lsl #0x10 - mov r0, r8, lsr #0x10 - mov r0, r0, lsl #0x10 - mov r8, r0, lsr #0x10 - mov r0, r8, lsl #8 - orr r0, r0, r8, asr #8 - strh r0, [sl, #-8] - ldr r0, [r7, #0x50] - mov r8, r5, lsr #0x10 - mov r0, r0, lsl #0x10 - mov r7, r0, lsr #0x10 - mov r5, r7, lsl #8 - mov r0, r6, lsl #0x10 - orr sb, r5, r7, asr #8 - mov r7, r8, lsl #8 - mov r5, r0, lsr #0x10 - mov r0, r5, lsl #8 - strh sb, [sl, #-6] - orr r7, r7, r8, asr #8 - ldr fp, _02209EEC ; =0x000005C8 - mov sb, r1 - strh r7, [sl, #-4] - orr r0, r0, r5, asr #8 - mov r8, r2 - mov r7, r3 - strh r0, [sl, #-2] - cmp sb, fp - bls _02209E64 - mov r5, sl - bls _02209E08 -_02209DC8: - mov r0, sl - mov r1, #0 - mov r2, r5 - mov r3, fp - str r6, [sp] - orr ip, r4, #0x2000 - str ip, [sp, #4] - bl ov4_02209BD0 - add r1, r4, #0xb9 - add r0, r5, #0x1c8 - sub sb, sb, fp - mov r1, r1, lsl #0x10 - cmp sb, fp - add r5, r0, #0x400 - mov r4, r1, lsr #0x10 - bhi _02209DC8 -_02209E08: - cmp sb, #0 - beq _02209E64 - cmp r7, #0 - mov r1, #0 - beq _02209E3C - mov r2, r5 - mov r0, sl - mov r3, sb - str r6, [sp] - orr r5, r4, #0x2000 - str r5, [sp, #4] - bl ov4_02209BD0 - b _02209E54 -_02209E3C: - str r6, [sp] - mov r0, sl - mov r2, r5 - mov r3, sb - str r4, [sp, #4] - bl ov4_02209BD0 -_02209E54: - add r0, r4, sb, lsr #3 - mov r0, r0, lsl #0x10 - mov r4, r0, lsr #0x10 - mov sb, #0 -_02209E64: - ldr fp, _02209EEC ; =0x000005C8 - add r0, sb, r7 - cmp r0, fp - bls _02209EB8 -_02209E74: - sub r5, fp, sb - mov r1, sb - mov r0, sl - mov r2, r8 - mov r3, r5 - str r6, [sp] - orr sb, r4, #0x2000 - str sb, [sp, #4] - bl ov4_02209BD0 - add r0, r4, #0xb9 - sub r7, r7, r5 - mov r0, r0, lsl #0x10 - mov sb, #0 - cmp r7, fp - add r8, r8, r5 - mov r4, r0, lsr #0x10 - bhi _02209E74 -_02209EB8: - adds r0, sb, r7 - addeq sp, sp, #8 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - str r6, [sp] - mov r0, sl - mov r1, sb - mov r2, r8 - mov r3, r7 - str r4, [sp, #4] - bl ov4_02209BD0 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_02209EE8: .word Unk_ov4_0221DDF0 -_02209EEC: .word 0x000005C8 - arm_func_end ov4_02209CF8 - - arm_func_start ov4_02209EF0 -ov4_02209EF0: ; 0x02209EF0 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - mov r5, r2 - ldr r4, [r5, #0x4c] - mov r6, r1 - mov r1, #8 - ldr r3, _02209F98 ; =0x0221DDF0 - ldr r2, _02209F9C ; =0x021CCC80 - strh r1, [r4, #0x22] - ldr r2, [r2, #4] - ldrh lr, [r3, #4] - mov r7, r0 - strh r2, [r4, #0x26] - mov r2, #0 - strh r2, [r4, #0x24] - strh lr, [r5, #0xa] - add ip, lr, #1 - add r0, r4, #0x22 - strh ip, [r3, #4] - strh lr, [r4, #0x28] - bl ov4_02209140 - mov r2, r0 - mov r0, r7 - mov r1, r6 - bl ov4_02209140 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl ov4_022091F4 - mov r2, r7 - mov r3, r6 - mov r1, r0, lsl #8 - orr r0, r1, r0, asr #8 - strh r0, [r4, #0x24] - ldr r1, [r5, #0x1c] - add r0, r4, #0x22 - str r1, [sp] - mov r1, #1 - str r1, [sp, #4] - mov r1, #8 - bl ov4_02209CF8 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02209F98: .word Unk_ov4_0221DDF0 -_02209F9C: .word OSi_ThreadInfo - arm_func_end ov4_02209EF0 - - arm_func_start ov4_02209FA0 -ov4_02209FA0: ; 0x02209FA0 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - ldr r7, _0220A0D8 ; =0x0221DDF0 - mov r5, r2 - ldr r2, [r7, #0x50] - mov r6, r1 - mov r1, r2, lsr #0x10 - mov r1, r1, lsl #0x10 - mov r2, r1, lsr #0x10 - ldr r3, [r5, #0x4c] - mov r1, r2, lsl #8 - add r4, r3, #0x22 - orr r1, r1, r2, asr #8 - strh r1, [r4, #-0xc] - ldr r1, [r7, #0x50] - add r2, r6, #8 - mov r1, r1, lsl #0x10 - mov r7, r1, lsr #0x10 - mov r1, r7, lsl #8 - orr r1, r1, r7, asr #8 - strh r1, [r4, #-0xa] - ldr r1, [r5, #0x1c] - mov r2, r2, lsl #0x10 - mov r1, r1, lsr #0x10 - mov r1, r1, lsl #0x10 - mov r7, r1, lsr #0x10 - mov r1, r7, lsl #8 - orr r1, r1, r7, asr #8 - strh r1, [r4, #-8] - ldr r1, [r5, #0x1c] - mov r2, r2, lsr #0x10 - mov r1, r1, lsl #0x10 - mov r7, r1, lsr #0x10 - mov r1, r7, lsl #8 - orr r7, r1, r7, asr #8 - mov r1, r2, lsl #8 - strh r7, [r4, #-6] - mov r7, #0x1100 - strh r7, [r4, #-4] - orr r1, r1, r2, asr #8 - strh r1, [r4, #4] - ldrh r1, [r4, #4] - mov r7, r0 - sub r0, r4, #0xc - strh r1, [r4, #-2] - ldrh lr, [r5, #0x18] - mov r2, #0 - mov r1, #0x14 - mov ip, lr, lsl #8 - orr ip, ip, lr, asr #8 - strh ip, [r4, #2] - ldrh lr, [r5, #0xa] - mov ip, lr, lsl #8 - orr ip, ip, lr, asr #8 - strh ip, [r3, #0x22] - strh r2, [r4, #6] - bl ov4_02209140 - mov r2, r0 - mov r0, r7 - mov r1, r6 - bl ov4_02209140 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl ov4_022091F4 - mov r2, r7 - mov r3, r6 - mov r1, r0, lsl #8 - orr r0, r1, r0, asr #8 - strh r0, [r4, #6] - ldr r1, [r5, #0x1c] - mov r0, r4 - str r1, [sp] - mov r1, #0x11 - str r1, [sp, #4] - mov r1, #8 - bl ov4_02209CF8 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_0220A0D8: .word Unk_ov4_0221DDF0 - arm_func_end ov4_02209FA0 - - arm_func_start ov4_0220A0DC -ov4_0220A0DC: ; 0x0220A0DC - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #8 - mov r7, r2 - ldrb r2, [r7, #8] - mov sb, r0 - mov r8, r1 - cmp r2, #0 - mov r6, r3 - addeq sp, sp, #8 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldr r0, _0220A340 ; =0x021CCC80 - ldr r1, _0220A344 ; =0x0221E058 - ldr r0, [r0, #4] - cmp r0, r1 - ldreq r4, _0220A348 ; =0x0221E302 - ldrne r0, [r7, #0x4c] - addne r4, r0, #0x22 - ldr r0, _0220A34C ; =0x0221DDF0 - ands r2, r6, #2 - movne r5, #0x18 - moveq r5, #0x14 - add r1, r5, r8 - ldr sl, [r0, #0x50] - mov r3, r1, lsl #0x10 - mov r1, sl, lsr #0x10 - mov r1, r1, lsl #0x10 - mov sl, r1, lsr #0x10 - mov r1, sl, lsl #8 - orr r1, r1, sl, asr #8 - strh r1, [r4, #-0xc] - mov r1, r3, lsr #0x10 - ldr sl, [r0, #0x50] - mov lr, r1, lsl #8 - mov r3, sl, lsl #0x10 - mov sl, r3, lsr #0x10 - mov r3, sl, lsl #8 - orr r3, r3, sl, asr #8 - strh r3, [r4, #-0xa] - ldr r3, [r7, #0x1c] - orr r1, lr, r1, asr #8 - mov r3, r3, lsr #0x10 - mov r3, r3, lsl #0x10 - mov sl, r3, lsr #0x10 - mov r3, sl, lsl #8 - orr r3, r3, sl, asr #8 - strh r3, [r4, #-8] - ldr r3, [r7, #0x1c] - mov ip, r5, lsr #2 - mov r3, r3, lsl #0x10 - mov sl, r3, lsr #0x10 - mov r3, sl, lsl #8 - orr r3, r3, sl, asr #8 - strh r3, [r4, #-6] - mov r3, #0x600 - strh r3, [r4, #-4] - strh r1, [r4, #-2] - ldrh lr, [r7, #0xa] - mov r3, ip, lsl #4 - cmp r2, #0 - mov r1, lr, lsl #8 - orr r1, r1, lr, asr #8 - strh r1, [r4] - ldrh ip, [r7, #0x18] - mov r1, ip, lsl #8 - orr r1, r1, ip, asr #8 - strh r1, [r4, #2] - ldr r1, [r7, #0x28] - mov r1, r1, lsr #0x10 - mov r1, r1, lsl #0x10 - mov ip, r1, lsr #0x10 - mov r1, ip, lsl #8 - orr r1, r1, ip, asr #8 - strh r1, [r4, #4] - ldr r1, [r7, #0x28] - mov r1, r1, lsl #0x10 - mov ip, r1, lsr #0x10 - mov r1, ip, lsl #8 - orr r1, r1, ip, asr #8 - strh r1, [r4, #6] - ldr r1, [r7, #0x24] - mov r1, r1, lsr #0x10 - mov r1, r1, lsl #0x10 - mov ip, r1, lsr #0x10 - mov r1, ip, lsl #8 - orr r1, r1, ip, asr #8 - strh r1, [r4, #8] - ldr r1, [r7, #0x24] - mov r1, r1, lsl #0x10 - mov ip, r1, lsr #0x10 - mov r1, ip, lsl #8 - orr r1, r1, ip, asr #8 - strh r1, [r4, #0xa] - strb r3, [r4, #0xc] - strb r6, [r4, #0xd] - ldr r3, [r7, #0x3c] - ldr r1, [r7, #0x44] - sub r1, r3, r1 - mov r1, r1, lsl #0x10 - mov r3, r1, lsr #0x10 - mov r1, r3, lsl #8 - orr r1, r1, r3, asr #8 - strh r1, [r4, #0xe] - mov r1, #0 - strh r1, [r4, #0x10] - strh r1, [r4, #0x12] - beq _0220A2C0 - ldrh r1, [r0, #2] - add r1, r1, #0x2040000 - mov r1, r1, lsr #0x10 - mov r1, r1, lsl #0x10 - mov r2, r1, lsr #0x10 - mov r1, r2, lsl #8 - orr r1, r1, r2, asr #8 - strh r1, [r4, #0x14] - ldrh r0, [r0, #2] - add r0, r0, #0x2040000 - mov r0, r0, lsl #0x10 - mov r1, r0, lsr #0x10 - mov r0, r1, lsl #8 - orr r0, r0, r1, asr #8 - strh r0, [r4, #0x16] -_0220A2C0: - sub r0, r4, #0xc - add r1, r5, #0xc - mov r2, #0 - bl ov4_02209140 - mov r2, r0 - mov r0, sb - mov r1, r8 - bl ov4_02209140 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl ov4_022091F4 - mov r3, r0, lsl #8 - orr r0, r3, r0, asr #8 - strh r0, [r4, #0x10] - mov r0, r4 - ldr r4, [r7, #0x1c] - mov r3, #6 - str r4, [sp] - str r3, [sp, #4] - mov r1, r5 - mov r2, sb - mov r3, r8 - bl ov4_02209CF8 - ldr r0, [r7, #0x28] - tst r6, #3 - add r0, r0, r8 - str r0, [r7, #0x28] - ldrne r0, [r7, #0x28] - addne r0, r0, #1 - strne r0, [r7, #0x28] - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ; .align 2, 0 -_0220A340: .word OSi_ThreadInfo -_0220A344: .word Unk_ov4_0221E058 -_0220A348: .word 0x0221E302 -_0220A34C: .word Unk_ov4_0221DDF0 - arm_func_end ov4_0220A0DC - - arm_func_start ov4_0220A350 -ov4_0220A350: ; 0x0220A350 - stmfd sp!, {r4, lr} - mov r4, r0 - mov r3, #0x200 - add r0, r4, #8 - add r1, r4, #0x12 - mov r2, #0xa - strh r3, [r4, #6] - bl MI_CpuCopy8 - ldr r0, _0220A3F0 ; =0x0221E2D8 - add r1, r4, #8 - mov r2, #6 - bl MI_CpuCopy8 - ldr r3, _0220A3F4 ; =0x0221DDF0 - add r0, r4, #0x12 - ldr r2, [r3, #0x50] - sub r1, r4, #0xe - mov r2, r2, lsr #0x10 - mov r2, r2, lsl #0x10 - mov ip, r2, lsr #0x10 - mov r2, ip, lsl #8 - orr r2, r2, ip, asr #8 - strh r2, [r4, #0xe] - ldr r3, [r3, #0x50] - mov r2, #6 - mov r3, r3, lsl #0x10 - mov ip, r3, lsr #0x10 - mov r3, ip, lsl #8 - orr r3, r3, ip, asr #8 - strh r3, [r4, #0x10] - bl MI_CpuCopy8 - ldr r0, _0220A3F0 ; =0x0221E2D8 - sub r1, r4, #8 - mov r2, #6 - bl MI_CpuCopy8 - sub r0, r4, #0xe - mov r1, #0x2a - mov r2, #0 - mov r3, r2 - bl ov4_022093DC - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0220A3F0: .word Unk_ov4_0221E2D8 -_0220A3F4: .word Unk_ov4_0221DDF0 - arm_func_end ov4_0220A350 - - arm_func_start ov4_0220A3F8 -ov4_0220A3F8: ; 0x0220A3F8 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r0 - cmp r1, #0x1c - ldmloia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, _0220A530 ; =0x0221E2D8 - add r0, r6, #8 - bl ov4_022093B0 - cmp r0, #0 - ldrne r0, _0220A534 ; =0x0221DDF0 - ldrne r0, [r0, #0x50] - cmpne r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldrh r0, [r6] - cmp r0, #0x100 - ldreqh r0, [r6, #2] - cmpeq r0, #8 - ldreqh r1, [r6, #4] - ldreq r0, _0220A538 ; =0x00000406 - cmpeq r1, r0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldrh r1, [r6, #6] - mov r0, r1, lsl #8 - orr r0, r0, r1, asr #8 - mov r0, r0, lsl #0x10 - mov r4, r0, lsr #0x10 - cmp r4, #1 - cmpne r4, #2 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldrh r5, [r6, #0x10] - ldrh r3, [r6, #0xe] - ldrh lr, [r6, #0x1a] - mov r0, r5, lsl #8 - mov r1, r3, lsl #8 - orr r3, r1, r3, asr #8 - orr r1, r0, r5, asr #8 - mov r0, r3, lsl #0x10 - mov r1, r1, lsl #0x10 - ldrh ip, [r6, #0x18] - ldr r2, _0220A534 ; =0x0221DDF0 - mov r3, r0, lsr #0x10 - mov r1, r1, lsr #0x10 - ldr r0, [r2, #0x50] - orr r1, r1, r3, lsl #16 - mov r3, ip, lsl #8 - cmp r1, r0 - moveq r5, #1 - mov r2, lr, lsl #8 - orr ip, r3, ip, asr #8 - orr r3, r2, lr, asr #8 - mov r2, ip, lsl #0x10 - mov r3, r3, lsl #0x10 - mov ip, r2, lsr #0x10 - mov r2, r3, lsr #0x10 - orr r2, r2, ip, lsl #16 - movne r5, #0 - cmp r0, r2 - moveq r7, #1 - movne r7, #0 - cmp r5, #0 - bne _0220A4F4 - mov r2, r7 - add r0, r6, #8 - bl ov4_022099C4 -_0220A4F4: - cmp r4, #1 - bne _0220A510 - cmp r7, #0 - beq _0220A510 - mov r0, r6 - bl ov4_0220A350 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0220A510: - cmp r4, #2 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - cmp r7, #0 - cmpne r5, #0 - ldrne r0, _0220A534 ; =0x0221DDF0 - movne r1, #1 - strneb r1, [r0, #1] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_0220A530: .word Unk_ov4_0221E2D8 -_0220A534: .word Unk_ov4_0221DDF0 -_0220A538: .word 0x00000406 - arm_func_end ov4_0220A3F8 - - arm_func_start ov4_0220A53C -ov4_0220A53C: ; 0x0220A53C - stmfd sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - mov r6, r0 - ldrh r4, [r6, #0xe] - ldrh r3, [r6, #0xc] - mov r5, r1 - mov r0, r4, lsl #8 - mov r1, r3, lsl #8 - orr r3, r1, r3, asr #8 - orr r1, r0, r4, asr #8 - mov r0, r3, lsl #0x10 - mov r1, r1, lsl #0x10 - mov r3, r0, lsr #0x10 - mov r0, r1, lsr #0x10 - orr r0, r0, r3, lsl #16 - mov r4, r2 - bl ov4_022092BC - movs r7, r0 - addeq sp, sp, #8 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - bl ov4_02209788 - cmp r0, #0 - bne _0220A5A8 - mov r0, r7 - bl ov4_02209858 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0220A5A8: - mov r2, #0 - strb r2, [r5] - mov r0, r5 - mov r1, r4 - strh r2, [r5, #2] - bl ov4_02209210 - mov r1, r0, lsl #8 - orr r0, r1, r0, asr #8 - strh r0, [r5, #2] - ldrh ip, [r6, #0xe] - ldrh r3, [r6, #0xc] - mov r2, #0 - mov r0, ip, lsl #8 - mov r1, r3, lsl #8 - orr r3, r1, r3, asr #8 - orr r1, r0, ip, asr #8 - mov r0, r3, lsl #0x10 - mov r1, r1, lsl #0x10 - mov r3, r0, lsr #0x10 - mov r0, r1, lsr #0x10 - orr r6, r0, r3, lsl #16 - mov r0, r5 - mov r1, r4 - mov r3, r2 - str r6, [sp] - mov r4, #1 - str r4, [sp, #4] - bl ov4_02209CF8 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov4_0220A53C - - arm_func_start ov4_0220A620 -ov4_0220A620: ; 0x0220A620 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - mov r8, r0 - mov r7, r1 - mov r6, r2 - bl OS_DisableInterrupts - ldr r1, _0220A71C ; =0x021CCC80 - mov r5, r0 - ldr r1, [r1, #8] - cmp r1, #0 - beq _0220A710 -_0220A648: - ldr r4, [r1, #0xa4] - cmp r4, #0 - ldrne r3, [r4] - cmpne r3, #0 - beq _0220A704 - ldrb r0, [r4, #8] - cmp r0, #0xb - ldreqh r2, [r7, #4] - moveq r0, r3, lsl #0x10 - cmpeq r2, r0, lsr #16 - ldreqh r2, [r4, #0xa] - ldreqh r0, [r7, #6] - cmpeq r2, r0 - ldreq r0, [r4, #0x44] - cmpeq r0, #0 - bne _0220A704 - ldrh lr, [r8, #0xe] - ldrh ip, [r8, #0xc] - ldr r0, [r4, #0x1c] - mov r2, lr, lsl #8 - mov r3, ip, lsl #8 - orr ip, r3, ip, asr #8 - orr r3, r2, lr, asr #8 - mov r2, ip, lsl #0x10 - mov r3, r3, lsl #0x10 - mov ip, r2, lsr #0x10 - mov r2, r3, lsr #0x10 - orr r2, r2, ip, lsl #16 - cmp r0, r2 - bne _0220A704 - ldr r1, [r4, #0x3c] - sub r0, r6, #8 - cmp r0, r1 - strhi r1, [r4, #0x44] - strls r0, [r4, #0x44] - ldr r1, [r4, #0x40] - ldr r2, [r4, #0x44] - add r0, r7, #8 - bl MI_CpuCopy8 - ldr r0, [r4, #4] - cmp r0, #3 - bne _0220A710 - mov r0, #0 - str r0, [r4, #4] - ldr r0, [r4, #0] - bl OS_WakeupThreadDirect - b _0220A710 -_0220A704: - ldr r1, [r1, #0x68] - cmp r1, #0 - bne _0220A648 -_0220A710: - mov r0, r5 - bl OS_RestoreInterrupts - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_0220A71C: .word OSi_ThreadInfo - arm_func_end ov4_0220A620 - - arm_func_start ov4_0220A720 -ov4_0220A720: ; 0x0220A720 - cmp r0, #0 - mvnne r2, #0 - cmpne r0, r2 - cmpne r1, #0 - cmpne r1, r2 - movne r0, #1 - moveq r0, #0 - bx lr - arm_func_end ov4_0220A720 - - arm_func_start ov4_0220A740 -ov4_0220A740: ; 0x0220A740 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - mov r5, r1 - mov r4, r2 - mov r6, r0 - mov r0, r5 - mov r1, r4 - bl ov4_02209210 - ldr r1, _0220A80C ; =0x0000FFFF - cmp r0, r1 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - ldrh r0, [r6, #0x12] - ldrh r8, [r6, #0x10] - ldrh r7, [r6, #0xe] - ldrh lr, [r6, #0xc] - mov r2, r8, lsl #8 - orr r2, r2, r8, asr #8 - mov ip, lr, lsl #8 - mov r2, r2, lsl #0x10 - mov r3, r7, lsl #8 - orr lr, ip, lr, asr #8 - mov r1, r0, lsl #8 - orr ip, r3, r7, asr #8 - orr r3, r1, r0, asr #8 - mov r0, lr, lsl #0x10 - mov r1, ip, lsl #0x10 - mov ip, r0, lsr #0x10 - mov r0, r1, lsr #0x10 - mov r3, r3, lsl #0x10 - mov r2, r2, lsr #0x10 - mov r1, r3, lsr #0x10 - orr r0, r0, ip, lsl #16 - orr r1, r1, r2, lsl #16 - bl ov4_0220A720 - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldrb r0, [r5] - cmp r0, #0 - beq _0220A7E4 - cmp r0, #8 - beq _0220A7F8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0220A7E4: - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl ov4_0220A620 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0220A7F8: - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl ov4_0220A53C - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_0220A80C: .word 0x0000FFFF - arm_func_end ov4_0220A740 - - arm_func_start ov4_0220A810 -ov4_0220A810: ; 0x0220A810 - stmfd sp!, {r4, r5, r6, lr} - ldr r2, _0220A8E0 ; =0x021CCC80 - ldr ip, [r2, #8] - cmp ip, #0 - beq _0220A8D8 -_0220A824: - ldr r3, [ip, #0xa4] - cmp r3, #0 - ldrne r2, [r3] - cmpne r2, #0 - beq _0220A8CC - ldrb r2, [r3, #8] - cmp r2, #1 - bne _0220A8CC - ldrh r5, [r1, #2] - ldrh r4, [r3, #0xa] - mov r2, r5, lsl #8 - orr r2, r2, r5, asr #8 - mov r2, r2, lsl #0x10 - cmp r4, r2, lsr #16 - bne _0220A8CC - ldrh r5, [r3, #0x18] - cmp r5, #0 - beq _0220A884 - ldrh r4, [r1] - mov r2, r4, lsl #8 - orr r2, r2, r4, asr #8 - mov r2, r2, lsl #0x10 - cmp r5, r2, lsr #16 - bne _0220A8CC -_0220A884: - ldr r2, [r3, #0x1c] - cmp r2, #0 - beq _0220A8C4 - ldrh r6, [r0, #0xe] - ldrh r5, [r0, #0xc] - mov r4, r6, lsl #8 - mov lr, r5, lsl #8 - orr lr, lr, r5, asr #8 - orr r4, r4, r6, asr #8 - mov lr, lr, lsl #0x10 - mov r4, r4, lsl #0x10 - mov lr, lr, lsr #0x10 - mov r4, r4, lsr #0x10 - orr r4, r4, lr, lsl #16 - cmp r2, r4 - bne _0220A8CC -_0220A8C4: - mov r0, r3 - ldmia sp!, {r4, r5, r6, pc} -_0220A8CC: - ldr ip, [ip, #0x68] - cmp ip, #0 - bne _0220A824 -_0220A8D8: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_0220A8E0: .word OSi_ThreadInfo - arm_func_end ov4_0220A810 - - arm_func_start ov4_0220A8E4 -ov4_0220A8E4: ; 0x0220A8E4 - stmfd sp!, {r4, r5, r6, lr} - ldrb r4, [r2, #8] - mov r3, #0 - mov r5, r3 - cmp r4, #0xa - cmpne r4, #0xb - movne r5, #1 - mov ip, r3 - mov r6, r3 - cmp r5, #0 - beq _0220A92C - ldrh lr, [r1, #2] - ldrh r5, [r2, #0xa] - mov r4, lr, lsl #8 - orr r4, r4, lr, asr #8 - mov lr, r4, lsl #0x10 - cmp r5, lr, lsr #16 - moveq r6, #1 -_0220A92C: - cmp r6, #0 - beq _0220A950 - ldrh lr, [r1] - ldrh r4, [r2, #0x18] - mov r1, lr, lsl #8 - orr r1, r1, lr, asr #8 - mov r1, r1, lsl #0x10 - cmp r4, r1, lsr #16 - moveq ip, #1 -_0220A950: - cmp ip, #0 - beq _0220A990 - ldrh lr, [r0, #0xc] - ldrh r4, [r0, #0xe] - ldr ip, [r2, #0x1c] - mov r1, lr, lsl #8 - mov r0, r4, lsl #8 - orr r2, r1, lr, asr #8 - orr r1, r0, r4, asr #8 - mov r0, r2, lsl #0x10 - mov r1, r1, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, r1, lsr #0x10 - orr r0, r0, r2, lsl #16 - cmp ip, r0 - moveq r3, #1 -_0220A990: - mov r0, r3 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ov4_0220A8E4 - - arm_func_start ov4_0220A998 -ov4_0220A998: ; 0x0220A998 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - ldr r2, _0220A9F8 ; =0x021CCC80 - mov r7, r0 - ldr r5, [r2, #8] - mov r6, r1 - cmp r5, #0 - beq _0220A9F0 -_0220A9B4: - ldr r4, [r5, #0xa4] - cmp r4, #0 - ldrne r0, [r4] - cmpne r0, #0 - beq _0220A9E4 - mov r0, r7 - mov r1, r6 - mov r2, r4 - bl ov4_0220A8E4 - cmp r0, #0 - movne r0, r4 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} -_0220A9E4: - ldr r5, [r5, #0x68] - cmp r5, #0 - bne _0220A9B4 -_0220A9F0: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_0220A9F8: .word OSi_ThreadInfo - arm_func_end ov4_0220A998 - - arm_func_start ov4_0220A9FC -ov4_0220A9FC: ; 0x0220A9FC - mov r2, #0x218 - strh r2, [r1, #0x2e] - ldrb r2, [r0, #0xc] - add r3, r0, #0x14 - and r2, r2, #0xf0 - mov r0, r2, asr #1 - add r0, r2, r0, lsr #30 - mov r0, r0, asr #2 - subs r0, r0, #0x14 - sub ip, r0, #1 - bxeq lr -_0220AA28: - ldrb r0, [r3], #1 - cmp r0, #0 - bxeq lr - cmp r0, #1 - beq _0220AA70 - cmp r0, #2 - bne _0220AA60 - ldrb r2, [r3, #1] - ldrb r0, [r3, #2] - add r3, r3, #3 - sub ip, ip, #3 - orr r0, r0, r2, lsl #8 - strh r0, [r1, #0x2e] - b _0220AA70 -_0220AA60: - ldrb r0, [r3] - sub r0, r0, #1 - sub ip, ip, r0 - add r3, r3, r0 -_0220AA70: - cmp ip, #0 - sub ip, ip, #1 - bne _0220AA28 - bx lr - arm_func_end ov4_0220A9FC - - arm_func_start ov4_0220AA80 -ov4_0220AA80: ; 0x0220AA80 - stmfd sp!, {r3, lr} - bl ov4_022092BC - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - bl ov4_02209788 - ldmia sp!, {r3, pc} - arm_func_end ov4_0220AA80 - - arm_func_start ov4_0220AA9C -ov4_0220AA9C: ; 0x0220AA9C - stmfd sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r6, r0 - ldr r0, [r6, #0x1c] - mov r5, r1 - mov r4, r2 - bl ov4_0220AA80 - cmp r0, #0 - bne _0220AAD4 - ldr r0, _0220AB08 ; =0x021CCC80 - ldr r1, _0220AB0C ; =0x0221E058 - ldr r0, [r0, #4] - cmp r0, r1 - beq _0220AAF4 -_0220AAD4: - mov r0, #0 - mov r1, r0 - mov r2, r6 - mov r3, r5 - str r4, [sp] - bl ov4_0220A0DC - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} -_0220AAF4: - ldr r0, [r6, #0x1c] - bl ov4_022092BC - bl ov4_02209858 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - ; .align 2, 0 -_0220AB08: .word OSi_ThreadInfo -_0220AB0C: .word Unk_ov4_0221E058 - arm_func_end ov4_0220AA9C - - arm_func_start ov4_0220AB10 -ov4_0220AB10: ; 0x0220AB10 - ldr ip, _0220AB20 ; =ov4_0220AA9C - mov r2, r1 - mov r1, #0x10 - bx ip - ; .align 2, 0 -_0220AB20: .word ov4_0220AA9C - arm_func_end ov4_0220AB10 - - arm_func_start ov4_0220AB24 -ov4_0220AB24: ; 0x0220AB24 - ldr ip, _0220AB34 ; =ov4_0220AA9C - mov r2, r1 - mov r1, #0x11 - bx ip - ; .align 2, 0 -_0220AB34: .word ov4_0220AA9C - arm_func_end ov4_0220AB24 - - arm_func_start ov4_0220AB38 -ov4_0220AB38: ; 0x0220AB38 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - ldr r4, _0220AC68 ; =0x0221DF34 - mov r8, r0 - mov r7, r1 - mov r6, r2 - mov r0, r4 - mov r1, #0 - mov r2, #0x64 - mov r5, r3 - bl MI_CpuFill8 - ldrh r3, [r7, #2] - ldr r0, _0220AC6C ; =0x0221DEF0 - ldr r2, _0220AC70 ; =0x0221DDF0 - mov r1, r3, lsl #8 - orr r1, r1, r3, asr #8 - strh r1, [r0, #0x4e] - ldrh r3, [r7] - mov r1, r3, lsl #8 - orr r1, r1, r3, asr #8 - strh r1, [r0, #0x5c] - ldrh ip, [r8, #0xe] - ldrh r3, [r8, #0xc] - mov r0, ip, lsl #8 - mov r1, r3, lsl #8 - orr r3, r1, r3, asr #8 - orr r1, r0, ip, asr #8 - mov r0, r3, lsl #0x10 - mov r1, r1, lsl #0x10 - mov r3, r0, lsr #0x10 - mov r0, r1, lsr #0x10 - orr r0, r0, r3, lsl #16 - str r0, [r2, #0x160] - ldrb r0, [r7, #0xd] - tst r0, #0x10 - beq _0220AC08 - ldrh r6, [r7, #0xa] - ldrh r3, [r7, #8] - mov r0, r4 - mov r1, r6, lsl #8 - mov r2, r3, lsl #8 - orr r3, r2, r3, asr #8 - orr r2, r1, r6, asr #8 - mov r1, r3, lsl #0x10 - mov r2, r2, lsl #0x10 - mov r3, r1, lsr #0x10 - mov r1, r2, lsr #0x10 - orr r3, r1, r3, lsl #16 - mov r2, r5 - mov r1, #4 - str r3, [r4, #0x28] - bl ov4_0220AA9C - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0220AC08: - mov r0, #0 - str r0, [r4, #0x28] - ldrh r3, [r7, #6] - ldrh r2, [r7, #4] - mov r0, r3, lsl #8 - mov r1, r2, lsl #8 - orr r2, r1, r2, asr #8 - orr r1, r0, r3, asr #8 - mov r0, r2, lsl #0x10 - mov r1, r1, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, r1, lsr #0x10 - orr r0, r0, r2, lsl #16 - add r1, r6, r0 - str r1, [r4, #0x24] - ldrb r0, [r7, #0xd] - mov r2, r5 - tst r0, #3 - addne r0, r1, #1 - strne r0, [r4, #0x24] - mov r0, r4 - mov r1, #0x14 - bl ov4_0220AA9C - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_0220AC68: .word Unk_ov4_0221DF34 -_0220AC6C: .word 0x0221DEF0 -_0220AC70: .word Unk_ov4_0221DDF0 - arm_func_end ov4_0220AB38 - - arm_func_start ov4_0220AC74 -ov4_0220AC74: ; 0x0220AC74 - stmfd sp!, {r4, r5, r6, lr} - mov r4, r2 - mov r2, #3 - mov r6, r0 - mov r5, r1 - strb r2, [r4, #8] - bl OS_GetTick - mov r0, r0, lsr #0x10 - orr r0, r0, r1, lsl #16 - str r0, [r4, #0x10] - ldrh r2, [r6, #0x12] - ldrh r3, [r6, #0x10] - mov r0, r5 - mov r1, r2, lsl #8 - orr r2, r1, r2, asr #8 - mov r1, r3, lsl #8 - orr r1, r1, r3, asr #8 - mov r1, r1, lsl #0x10 - mov r2, r2, lsl #0x10 - mov r3, r1, lsr #0x10 - mov r1, r2, lsr #0x10 - orr r1, r1, r3, lsl #16 - str r1, [r4, #0x14] - ldrh r3, [r5] - mov r1, r4 - mov r2, r3, lsl #8 - orr r2, r2, r3, asr #8 - strh r2, [r4, #0x18] - ldrh r3, [r6, #0xe] - ldrh r6, [r6, #0xc] - mov r2, r3, lsl #8 - orr r3, r2, r3, asr #8 - mov r2, r6, lsl #8 - orr r2, r2, r6, asr #8 - mov r2, r2, lsl #0x10 - mov r3, r3, lsl #0x10 - mov r6, r2, lsr #0x10 - mov r2, r3, lsr #0x10 - orr r2, r2, r6, lsl #16 - str r2, [r4, #0x1c] - ldrh r6, [r5, #6] - ldrh r5, [r5, #4] - mov r2, r6, lsl #8 - mov r3, r5, lsl #8 - orr r5, r3, r5, asr #8 - orr r3, r2, r6, asr #8 - mov r2, r5, lsl #0x10 - mov r3, r3, lsl #0x10 - mov r5, r2, lsr #0x10 - mov r2, r3, lsr #0x10 - orr r2, r2, r5, lsl #16 - add r2, r2, #1 - str r2, [r4, #0x24] - bl ov4_0220A9FC - mov r0, r4 - mov r1, #0x12 - mov r2, #0 - bl ov4_0220AA9C - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ov4_0220AC74 - - arm_func_start ov4_0220AD60 -ov4_0220AD60: ; 0x0220AD60 - stmfd sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl ov4_0220A998 - movs r2, r0 - beq _0220ADE0 - ldrb r0, [r2, #8] - cmp r0, #1 - bne _0220AD98 - mov r0, r6 - mov r1, r5 - bl ov4_0220AC74 - b _0220ADD8 -_0220AD98: - add r0, r0, #0xfd - and r0, r0, #0xff - cmp r0, #1 - bhi _0220ADC4 - ldr r1, [r2, #0x28] - mov r0, r6 - sub r3, r1, #1 - mov r1, r5 - str r3, [r2, #0x28] - bl ov4_0220AC74 - b _0220ADD8 -_0220ADC4: - mov r0, r6 - mov r1, r5 - mov r2, r4 - mov r3, #0 - bl ov4_0220AB38 -_0220ADD8: - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} -_0220ADE0: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ov4_0220AD60 - - arm_func_start ov4_0220ADE8 -ov4_0220ADE8: ; 0x0220ADE8 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - mov r4, r0 - ldrh r0, [r4, #0x12] - ldrh r8, [r4, #0x10] - ldrh r7, [r4, #0xe] - ldrh r6, [r4, #0xc] - mov ip, r8, lsl #8 - orr ip, ip, r8, asr #8 - mov r5, r6, lsl #8 - mov ip, ip, lsl #0x10 - mov lr, r7, lsl #8 - orr r6, r5, r6, asr #8 - mov r3, r0, lsl #8 - orr r5, lr, r7, asr #8 - orr lr, r3, r0, asr #8 - mov r0, r6, lsl #0x10 - mov r3, r5, lsl #0x10 - mov r5, r0, lsr #0x10 - mov r0, r3, lsr #0x10 - mov lr, lr, lsl #0x10 - orr r0, r0, r5, lsl #16 - mov ip, ip, lsr #0x10 - mov r3, lr, lsr #0x10 - mov r6, r1 - orr r1, r3, ip, lsl #16 - mov r5, r2 - bl ov4_0220A720 - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, r4 - mov r1, r6 - mov r2, r5 - bl ov4_0220AD60 - cmp r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, r4 - mov r1, r6 - bl ov4_0220A810 - movs r2, r0 - beq _0220AE98 - mov r0, r4 - mov r1, r6 - bl ov4_0220AC74 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0220AE98: - bl OS_YieldThread - mov r0, r4 - mov r1, r6 - bl ov4_0220A810 - movs r2, r0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, r4 - mov r1, r6 - bl ov4_0220AC74 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end ov4_0220ADE8 - - arm_func_start ov4_0220AEC0 -ov4_0220AEC0: ; 0x0220AEC0 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r5, r1 - mov r6, r2 - bl ov4_0220A998 - movs r4, r0 - beq _0220AEE8 - ldrb r0, [r4, #8] - cmp r0, #2 - beq _0220AF00 -_0220AEE8: - mov r0, r7 - mov r1, r5 - mov r2, r6 - mov r3, #0 - bl ov4_0220AB38 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0220AF00: - bl OS_YieldThread - ldrh ip, [r5, #6] - ldrh r3, [r5, #4] - mov r0, r5 - mov r1, ip, lsl #8 - mov r2, r3, lsl #8 - orr r3, r2, r3, asr #8 - orr r2, r1, ip, asr #8 - mov r1, r3, lsl #0x10 - mov r2, r2, lsl #0x10 - mov r3, r1, lsr #0x10 - mov r1, r2, lsr #0x10 - orr r1, r1, r3, lsl #16 - add r1, r1, #1 - str r1, [r4, #0x24] - ldrh lr, [r5, #0xa] - ldrh ip, [r5, #8] - mov r1, r4 - mov r2, lr, lsl #8 - mov r3, ip, lsl #8 - orr ip, r3, ip, asr #8 - orr r3, r2, lr, asr #8 - mov r2, ip, lsl #0x10 - mov r3, r3, lsl #0x10 - mov ip, r2, lsr #0x10 - mov r2, r3, lsr #0x10 - orr r2, r2, ip, lsl #16 - str r2, [r4, #0x30] - ldrh r3, [r5, #0xe] - mov r2, r3, lsl #8 - orr r2, r2, r3, asr #8 - strh r2, [r4, #0x2c] - bl ov4_0220A9FC - mov r0, r4 - mov r1, #0 - bl ov4_0220AB10 - mov r0, #4 - strb r0, [r4, #8] - ldr r0, [r4, #4] - cmp r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, #0 - str r0, [r4, #4] - ldr r0, [r4, #0] - bl OS_WakeupThreadDirect - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov4_0220AEC0 - - arm_func_start ov4_0220AFB8 -ov4_0220AFB8: ; 0x0220AFB8 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r4, r0 - mov sb, r1 - mov r8, r2 - bl ov4_0220A998 - movs r5, r0 - bne _0220AFEC - mov r0, r4 - mov r1, sb - mov r2, r8 - mov r3, #0 - bl ov4_0220AB38 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_0220AFEC: - ldrh r6, [sb, #0xa] - ldrh r3, [sb, #8] - ldr r2, [r5, #0x30] - mov r0, r6, lsl #8 - mov r1, r3, lsl #8 - orr r3, r1, r3, asr #8 - orr r1, r0, r6, asr #8 - mov r0, r3, lsl #0x10 - mov r1, r1, lsl #0x10 - mov r3, r0, lsr #0x10 - mov r0, r1, lsr #0x10 - orr r1, r0, r3, lsl #16 - sub r0, r1, r2 - ldrb r6, [sb, #0xd] - cmp r0, #0 - strgt r1, [r5, #0x30] - ldrh r7, [sb, #6] - ldrh r3, [sb, #4] - ldrb r2, [r5, #8] - mov r0, r7, lsl #8 - mov r1, r3, lsl #8 - orr r3, r1, r3, asr #8 - orr r1, r0, r7, asr #8 - mov r0, r3, lsl #0x10 - mov r1, r1, lsl #0x10 - mov r3, r0, lsr #0x10 - mov r0, r1, lsr #0x10 - cmp r2, #4 - orr r1, r0, r3, lsl #16 - bne _0220B080 - ldr r0, [r5, #0x24] - cmp r0, r1 - beq _0220B080 - mov r0, r5 - mov r1, #0 - bl ov4_0220AB10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_0220B080: - ldrh r1, [sb, #0xe] - mov r0, r1, lsl #8 - orr r0, r0, r1, asr #8 - strh r0, [r5, #0x2c] - ldrb r0, [r5, #8] - cmp r0, #9 - addls pc, pc, r0, lsl #2 - b _0220B2AC -_0220B0A0: ; jump table - b _0220B0C8 ; case 0 - b _0220B2AC ; case 1 - b _0220B0C8 ; case 2 - b _0220B0E0 ; case 3 - b _0220B10C ; case 4 - b _0220B2AC ; case 5 - b _0220B288 ; case 6 - b _0220B214 ; case 7 - b _0220B214 ; case 8 - b _0220B288 ; case 9 -_0220B0C8: - mov r0, r4 - mov r1, sb - mov r2, r8 - mov r3, #0 - bl ov4_0220AB38 - b _0220B2C8 -_0220B0E0: - mov r0, #4 - strb r0, [r5, #8] - ldr r0, [r5, #4] - cmp r0, #1 - bne _0220B104 - mov r0, #0 - str r0, [r5, #4] - ldr r0, [r5, #0] - bl OS_WakeupThreadDirect -_0220B104: - cmp r8, #0 - beq _0220B2C8 -_0220B10C: - ldr r0, [r5, #0x34] - add r0, r0, #1 - str r0, [r5, #0x34] - ldr r1, [r5, #0x3c] - ldr r0, [r5, #0x44] - sub r0, r1, r0 - cmp r8, r0 - movhi r7, #0 - movhi r8, r0 - movls r7, #1 - cmp r8, #0 - beq _0220B1A8 - bl OS_DisableInterrupts - ldrb r1, [sb, #0xc] - ldr ip, [r5, #0x40] - ldr r3, [r5, #0x44] - and r2, r1, #0xf0 - mov r1, r2, asr #1 - add r1, r2, r1, lsr #30 - mov r4, r0 - mov r2, r8 - add r0, sb, r1, asr #2 - add r1, ip, r3 - bl MI_CpuCopy8 - ldr r1, [r5, #0x44] - mov r0, r4 - add r1, r1, r8 - str r1, [r5, #0x44] - ldr r1, [r5, #0x24] - add r1, r1, r8 - str r1, [r5, #0x24] - bl OS_RestoreInterrupts - ldr r0, [r5, #4] - cmp r0, #2 - bne _0220B1A8 - mov r0, #0 - str r0, [r5, #4] - ldr r0, [r5, #0] - bl OS_WakeupThreadDirect -_0220B1A8: - cmp r7, #0 - beq _0220B1FC - tst r6, #1 - beq _0220B1FC - mov r0, #6 - strb r0, [r5, #8] - ldr r1, [r5, #0x24] - mov r0, r5 - add r2, r1, #1 - mov r1, #0 - str r2, [r5, #0x24] - bl ov4_0220AB24 - cmp r8, #0 - ldreq r0, [r5, #4] - cmpeq r0, #2 - bne _0220B2C8 - mov r0, #0 - str r0, [r5, #4] - ldr r0, [r5, #0] - bl OS_WakeupThreadDirect - b _0220B2C8 -_0220B1FC: - cmp r8, #0 - beq _0220B2C8 - mov r0, r5 - mov r1, #0 - bl ov4_0220AB10 - b _0220B2C8 -_0220B214: - tst r6, #1 - beq _0220B25C - ldr r1, [r5, #0x24] - add r0, r8, #1 - add r2, r1, r0 - mov r0, r5 - mov r1, #0 - str r2, [r5, #0x24] - bl ov4_0220AB10 - mov r1, #0 - strb r1, [r5, #8] - ldr r0, [r5, #4] - cmp r0, #2 - bne _0220B2C8 - str r1, [r5, #4] - ldr r0, [r5, #0] - bl OS_WakeupThreadDirect - b _0220B2C8 -_0220B25C: - cmp r8, #0 - beq _0220B27C - ldr r1, [r5, #0x24] - mov r0, r5 - add r2, r1, r8 - mov r1, #0 - str r2, [r5, #0x24] - bl ov4_0220AB10 -_0220B27C: - mov r0, #8 - strb r0, [r5, #8] - b _0220B2C8 -_0220B288: - mov r1, #0 - strb r1, [r5, #8] - ldr r0, [r5, #4] - cmp r0, #2 - bne _0220B2C8 - str r1, [r5, #4] - ldr r0, [r5, #0] - bl OS_WakeupThreadDirect - b _0220B2C8 -_0220B2AC: - tst r6, #1 - ldrne r0, [r5, #0x24] - mov r1, #0 - addne r0, r0, #1 - strne r0, [r5, #0x24] - mov r0, r5 - bl ov4_0220AB10 -_0220B2C8: - bl OS_YieldThread - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end ov4_0220AFB8 - - arm_func_start ov4_0220B2D0 -ov4_0220B2D0: ; 0x0220B2D0 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - bl ov4_0220A998 - movs r4, r0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldrb r1, [r4, #8] - cmp r1, #4 - beq _0220B364 - cmp r1, #7 - beq _0220B30C - cmp r1, #8 - beq _0220B32C - b _0220B384 -_0220B30C: - ldr r2, [r4, #0x24] - mov r1, #0 - add r2, r2, #1 - str r2, [r4, #0x24] - bl ov4_0220AB10 - mov r0, #9 - strb r0, [r4, #8] - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0220B32C: - ldr r2, [r4, #0x24] - mov r1, #0 - add r2, r2, #1 - str r2, [r4, #0x24] - bl ov4_0220AB10 - mov r1, #0 - strb r1, [r4, #8] - ldr r0, [r4, #4] - cmp r0, #2 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - str r1, [r4, #4] - ldr r0, [r4, #0] - bl OS_WakeupThreadDirect - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0220B364: - ldr r2, [r4, #0x24] - mov r1, #0 - add r2, r2, #1 - str r2, [r4, #0x24] - bl ov4_0220AB24 - mov r0, #6 - strb r0, [r4, #8] - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0220B384: - mov r0, r7 - mov r1, r6 - mov r2, r5 - mov r3, #0 - bl ov4_0220AB38 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov4_0220B2D0 - - arm_func_start ov4_0220B39C -ov4_0220B39C: ; 0x0220B39C - stmfd sp!, {r4, lr} - bl ov4_0220A998 - movs r4, r0 - ldmeqia sp!, {r4, pc} - bl OS_YieldThread - mov r1, #0 - strb r1, [r4, #8] - ldr r0, [r4, #4] - sub r0, r0, #1 - cmp r0, #1 - ldmhiia sp!, {r4, pc} - str r1, [r4, #4] - ldr r0, [r4, #0] - bl OS_WakeupThreadDirect - ldmia sp!, {r4, pc} - arm_func_end ov4_0220B39C - - arm_func_start ov4_0220B3D8 -ov4_0220B3D8: ; 0x0220B3D8 - stmfd sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - mov r0, r5 - mov r1, r4 - mov r2, r6 - mov r3, #6 - bl ov4_0220922C - cmp r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - ldrb r0, [r5, #0xc] - ldrb r2, [r5, #0xd] - and r1, r0, #0xf0 - mov r0, r1, asr #1 - add r0, r1, r0, lsr #30 - and r1, r2, #0x17 - cmp r1, #0x10 - sub r4, r4, r0, asr #2 - bgt _0220B450 - cmp r1, #0x10 - bge _0220B4A8 - cmp r1, #2 - bgt _0220B4D0 - cmp r1, #1 - blt _0220B4D0 - beq _0220B4BC - cmp r1, #2 - beq _0220B470 - b _0220B4D0 -_0220B450: - cmp r1, #0x12 - bgt _0220B4D0 - cmp r1, #0x11 - blt _0220B4D0 - beq _0220B4A8 - cmp r1, #0x12 - beq _0220B48C - b _0220B4D0 -_0220B470: - tst r2, #0x28 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl ov4_0220ADE8 - ldmia sp!, {r4, r5, r6, pc} -_0220B48C: - tst r2, #0x28 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl ov4_0220AEC0 - ldmia sp!, {r4, r5, r6, pc} -_0220B4A8: - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl ov4_0220AFB8 - ldmia sp!, {r4, r5, r6, pc} -_0220B4BC: - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl ov4_0220B2D0 - ldmia sp!, {r4, r5, r6, pc} -_0220B4D0: - tst r2, #4 - mov r0, r6 - mov r1, r5 - beq _0220B4E8 - bl ov4_0220B39C - ldmia sp!, {r4, r5, r6, pc} -_0220B4E8: - mov r2, r4 - mov r3, #0 - bl ov4_0220AB38 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ov4_0220B3D8 - - arm_func_start ov4_0220B4F8 -ov4_0220B4F8: ; 0x0220B4F8 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r7, r1 - ldrh r1, [r7, #6] - mov r8, r0 - mov r6, r2 - cmp r1, #0 - beq _0220B530 - mov r0, r7 - mov r1, r6 - mov r2, r8 - mov r3, #0x11 - bl ov4_0220922C - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_0220B530: - bl OS_DisableInterrupts - ldr r1, _0220B700 ; =0x021CCC80 - mov r5, r0 - ldr r1, [r1, #8] - cmp r1, #0 - beq _0220B6F4 - mvn ip, #0 -_0220B54C: - ldr r4, [r1, #0xa4] - cmp r4, #0 - ldrne r0, [r4] - cmpne r0, #0 - beq _0220B6E8 - ldrb r0, [r4, #8] - cmp r0, #0xa - bne _0220B6E8 - ldrh r3, [r7, #2] - ldrh r2, [r4, #0xa] - mov r0, r3, lsl #8 - orr r0, r0, r3, asr #8 - mov r0, r0, lsl #0x10 - cmp r2, r0, lsr #16 - bne _0220B6E8 - ldrh r3, [r4, #0x18] - cmp r3, #0 - beq _0220B5AC - ldrh r2, [r7] - mov r0, r2, lsl #8 - orr r0, r0, r2, asr #8 - mov r0, r0, lsl #0x10 - cmp r3, r0, lsr #16 - bne _0220B6E8 -_0220B5AC: - ldr r0, [r4, #0x1c] - cmp r0, #0 - cmpne r0, ip - beq _0220B5F0 - ldrh sb, [r8, #0xe] - ldrh lr, [r8, #0xc] - mov r2, sb, lsl #8 - mov r3, lr, lsl #8 - orr lr, r3, lr, asr #8 - orr r3, r2, sb, asr #8 - mov r2, lr, lsl #0x10 - mov r3, r3, lsl #0x10 - mov lr, r2, lsr #0x10 - mov r2, r3, lsr #0x10 - orr r2, r2, lr, lsl #16 - cmp r0, r2 - bne _0220B6E8 -_0220B5F0: - ldrh r3, [r8, #0x12] - ldrh r2, [r8, #0x10] - mov r0, r3, lsl #8 - mov r1, r2, lsl #8 - orr r2, r1, r2, asr #8 - orr r1, r0, r3, asr #8 - mov r0, r2, lsl #0x10 - mov r1, r1, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, r1, lsr #0x10 - orr r0, r0, r2, lsl #16 - str r0, [r4, #0x14] - ldr r0, [r4, #0x1c] - cmp r0, #0 - bne _0220B66C - ldrh r3, [r8, #0xe] - ldrh r2, [r8, #0xc] - mov r0, r3, lsl #8 - mov r1, r2, lsl #8 - orr r2, r1, r2, asr #8 - orr r1, r0, r3, asr #8 - mov r0, r2, lsl #0x10 - mov r1, r1, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, r1, lsr #0x10 - orr r0, r0, r2, lsl #16 - str r0, [r4, #0x1c] - ldrh r1, [r7] - mov r0, r1, lsl #8 - orr r0, r0, r1, asr #8 - strh r0, [r4, #0x18] -_0220B66C: - ldr r0, [r4, #0x44] - cmp r0, #0 - bne _0220B6F4 - ldr r1, [r4, #0x3c] - sub r0, r6, #8 - cmp r0, r1 - strhi r1, [r4, #0x44] - strls r0, [r4, #0x44] - ldr r1, [r4, #0x40] - ldr r2, [r4, #0x44] - add r0, r7, #8 - bl MI_CpuCopy8 - ldr r0, [r4, #4] - cmp r0, #3 - bne _0220B6BC - mov r0, #0 - str r0, [r4, #4] - ldr r0, [r4, #0] - bl OS_WakeupThreadDirect - b _0220B6F4 -_0220B6BC: - ldr r3, [r4, #0x38] - cmp r3, #0 - beq _0220B6F4 - ldr r0, [r4, #0x40] - ldr r1, [r4, #0x44] - mov r2, r4 - blx r3 - cmp r0, #0 - movne r0, #0 - strne r0, [r4, #0x44] - b _0220B6F4 -_0220B6E8: - ldr r1, [r1, #0x68] - cmp r1, #0 - bne _0220B54C -_0220B6F4: - mov r0, r5 - bl OS_RestoreInterrupts - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ; .align 2, 0 -_0220B700: .word OSi_ThreadInfo - arm_func_end ov4_0220B4F8 - - arm_func_start ov4_0220B704 -ov4_0220B704: ; 0x0220B704 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc - mov r6, #0 - mov sl, r0 - str r6, [r1, #0] - ldrh r3, [sl, #6] - str r1, [sp] - ldr r2, _0220B9C0 ; =0x00003FFF - mov r1, r3, lsl #8 - orr r1, r1, r3, asr #8 - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 - str r1, [sp, #8] - tst r1, r2 - addeq sp, sp, #0xc - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrh r3, [sl, #0xe] - ldrh r2, [sl, #0xc] - ldrb r4, [sl] - mov r0, r3, lsl #8 - mov r1, r2, lsl #8 - orr r2, r1, r2, asr #8 - orr r1, r0, r3, asr #8 - mov r3, r4, lsl #0x1c - mov r0, r2, lsl #0x10 - mov r1, r1, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r1, r1, lsr #0x10 - ldrh r4, [sl, #4] - ldr r7, _0220B9C4 ; =0x0221E118 - mov r0, r6 - mov r5, r3, lsr #0x1a - orr sb, r1, r2, lsl #16 -_0220B788: - ldrh r2, [r7, #4] - cmp r2, #0 - beq _0220B7A8 - ldr r1, [r7, #0] - cmp r1, sb - ldreqh r1, [r7, #6] - cmpeq r1, r4 - beq _0220B7C4 -_0220B7A8: - add r0, r0, #1 - cmp r2, #0 - cmpeq r6, #0 - moveq r6, r7 - cmp r0, #8 - add r7, r7, #0x38 - blo _0220B788 -_0220B7C4: - ldrh r2, [sl, #2] - cmp r0, #8 - ldr r1, _0220B9C8 ; =0x00001FFF - mov r0, r2, lsl #8 - orr r0, r0, r2, asr #8 - mov r0, r0, lsl #0x10 - rsb r0, r5, r0, lsr #16 - str r0, [sp, #4] - ldr r0, [sp, #8] - and fp, r0, r1 - ldr r0, [sp, #4] - add r8, r0, fp, lsl #3 - bne _0220B880 - cmp r6, #0 - beq _0220B808 - cmp r8, #0x1000 - bls _0220B814 -_0220B808: - add sp, sp, #0xc - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0220B814: - ldr r1, _0220B9CC ; =0x0221DDF0 - add r0, r5, #0xe - ldr r1, [r1, #0x14] - add r0, r0, #0x1000 - mov r7, r6 - blx r1 - cmp r0, #0 - str r0, [r6, #0x34] - addeq sp, sp, #0xc - mov r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - str sb, [r6] - strh r4, [r6, #6] - strh r0, [r6, #8] - bl OS_GetTick - mov r0, r0, lsr #0x10 - orr r0, r0, r1, lsl #16 - str r0, [r6, #0x2c] - ldr r1, [r6, #0x34] - mov r0, sl - add r1, r1, #0xe - add r1, r1, r5 - str r1, [r6, #0x30] - ldr r1, [r6, #0x34] - mov r2, r5 - add r1, r1, #0xe - bl MI_CpuCopy8 -_0220B880: - ldrh r0, [r7, #4] - cmp r0, #8 - beq _0220B894 - cmp r8, #0x1000 - bls _0220B8B8 -_0220B894: - ldr r1, _0220B9CC ; =0x0221DDF0 - mov r0, #0 - strh r0, [r7, #4] - ldr r0, [r7, #0x34] - ldr r1, [r1, #0x40] - blx r1 - add sp, sp, #0xc - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0220B8B8: - ldr r0, [sp, #4] - ldr r2, [sp, #4] - add r1, r0, #7 - ldr r0, [sp, #8] - add r3, fp, r1, lsr #3 - tst r0, #0x2000 - streqh r8, [r7, #0xa] - streqh r3, [r7, #8] - ldrh r1, [r7, #4] - add r0, sl, r5 - add r1, r7, r1, lsl #1 - strh fp, [r1, #0xc] - ldrh r1, [r7, #4] - add r1, r7, r1, lsl #1 - strh r3, [r1, #0x1c] - ldrh r1, [r7, #4] - add r1, r1, #1 - strh r1, [r7, #4] - ldr r1, [r7, #0x30] - add r1, r1, fp, lsl #3 - bl MI_CpuCopy8 - ldrh r4, [r7, #8] - cmp r4, #0 - addeq sp, sp, #0xc - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrh r3, [r7, #4] - mov r6, #0 - mov r5, r6 - cmp r3, #0 - bls _0220B968 - mov r0, r6 -_0220B938: - add r2, r7, r5, lsl #1 - ldrh r1, [r2, #0xc] - cmp r1, r6 - bhi _0220B95C - ldrh r1, [r2, #0x1c] - cmp r6, r1 - movlo r6, r1 - movlo r5, r0 - blo _0220B960 -_0220B95C: - add r5, r5, #1 -_0220B960: - cmp r5, r3 - blo _0220B938 -_0220B968: - cmp r6, r4 - addlo sp, sp, #0xc - movlo r0, #0 - ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r4, [r7, #0x34] - ldrh r3, [r7, #0xa] - ldrb r0, [r4, #0xe] - mov r2, #0 - mov r1, #1 - mov r0, r0, lsl #0x1c - add r0, r3, r0, lsr #26 - mov r0, r0, lsl #0x10 - mov r3, r0, lsr #0x10 - mov r0, r3, lsl #8 - orr r0, r0, r3, asr #8 - strh r0, [r4, #0x10] - ldr r0, [sp] - strh r2, [r7, #4] - str r1, [r0, #0] - add r0, r4, #0xe - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0220B9C0: .word 0x00003FFF -_0220B9C4: .word Unk_ov4_0221E118 -_0220B9C8: .word 0x00001FFF -_0220B9CC: .word Unk_ov4_0221DDF0 - arm_func_end ov4_0220B704 - - arm_func_start ov4_0220B9D0 -ov4_0220B9D0: ; 0x0220B9D0 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r4, r0 - ldrh r7, [r4, #0xe] - ldrh r6, [r4, #0xc] - ldrh lr, [r4, #0x12] - ldrh r5, [r4, #0x10] - mov r2, r6, lsl #8 - mov r3, lr, lsl #8 - mov ip, r5, lsl #8 - mov r0, r7, lsl #8 - orr r5, ip, r5, asr #8 - orr lr, r3, lr, asr #8 - orr r3, r2, r6, asr #8 - orr ip, r0, r7, asr #8 - mov r0, r5, lsl #0x10 - mov r2, lr, lsl #0x10 - mov r3, r3, lsl #0x10 - mov ip, ip, lsl #0x10 - mov lr, r0, lsr #0x10 - mov r0, r2, lsr #0x10 - mov r3, r3, lsr #0x10 - mov r2, ip, lsr #0x10 - orr r0, r0, lr, lsl #16 - orr r2, r2, r3, lsl #16 - mov r5, r1 - cmp r0, r2 - beq _0220BAF4 - bl ov4_02209330 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldrh r1, [r4, #2] - mov r0, r1, lsl #8 - orr r0, r0, r1, asr #8 - mov r0, r0, lsl #0x10 - cmp r5, r0, lsr #16 - ldmloia sp!, {r3, r4, r5, r6, r7, pc} - ldrb r1, [r4] - mov r0, r4 - mov r1, r1, lsl #0x1c - mov r1, r1, lsr #0x1a - bl ov4_02209210 - ldr r1, _0220BB8C ; =0x0000FFFF - cmp r0, r1 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldrh ip, [r4, #0x12] - ldrh r3, [r4, #0x10] - ldr r2, _0220BB90 ; =0x0221DDF0 - mov r0, ip, lsl #8 - mov r1, r3, lsl #8 - orr r3, r1, r3, asr #8 - orr r1, r0, ip, asr #8 - mov r0, r3, lsl #0x10 - mov r1, r1, lsl #0x10 - mov r3, r0, lsr #0x10 - mov r0, r1, lsr #0x10 - ldr r1, [r2, #0x50] - orr r0, r0, r3, lsl #16 - cmp r1, r0 - bne _0220BAF4 - ldrh ip, [r4, #0xe] - ldrh r3, [r4, #0xc] - sub r0, r4, #8 - mov r1, ip, lsl #8 - mov r2, r3, lsl #8 - orr r3, r2, r3, asr #8 - orr r2, r1, ip, asr #8 - mov r1, r3, lsl #0x10 - mov r2, r2, lsl #0x10 - mov r3, r1, lsr #0x10 - mov r1, r2, lsr #0x10 - orr r1, r1, r3, lsl #16 - mov r2, #1 - bl ov4_022099C4 -_0220BAF4: - add r1, sp, #0 - mov r0, r4 - bl ov4_0220B704 - movs r4, r0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldrh r2, [r4, #2] - ldrb r3, [r4] - ldrb ip, [r4, #9] - mov r1, r2, lsl #8 - orr r1, r1, r2, asr #8 - mov r1, r1, lsl #0x10 - mov r3, r3, lsl #0x1c - mov r2, r1, lsr #0x10 - cmp ip, #0x11 - add r1, r4, r3, lsr #26 - sub r2, r2, r3, lsr #26 - bne _0220BB40 - bl ov4_0220B4F8 - b _0220BB6C -_0220BB40: - ldr r3, _0220BB90 ; =0x0221DDF0 - ldr r3, [r3, #0x50] - cmp r3, #0 - beq _0220BB6C - cmp ip, #1 - bne _0220BB60 - bl ov4_0220A740 - b _0220BB6C -_0220BB60: - cmp ip, #6 - bne _0220BB6C - bl ov4_0220B3D8 -_0220BB6C: - ldr r0, [sp] - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, _0220BB90 ; =0x0221DDF0 - sub r0, r4, #0xe - ldr r1, [r1, #0x40] - blx r1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_0220BB8C: .word 0x0000FFFF -_0220BB90: .word Unk_ov4_0221DDF0 - arm_func_end ov4_0220B9D0 - - arm_func_start ov4_0220BB94 -ov4_0220BB94: ; 0x0220BB94 - stmfd sp!, {r3, r4, r5, lr} - ldr r5, _0220BC00 ; =0x00000806 - add r4, sp, #0 -_0220BBA0: - mov r0, r4 - bl ov4_02209684 - ldr r3, [sp] - cmp r3, #0x22 - bls _0220BBF8 - ldrh r2, [r0, #0xc] - mov r1, r2, lsl #8 - orr r1, r1, r2, asr #8 - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 - cmp r1, #0x800 - beq _0220BBDC - cmp r1, r5 - beq _0220BBEC - b _0220BBF8 -_0220BBDC: - add r0, r0, #0xe - sub r1, r3, #0xe - bl ov4_0220B9D0 - b _0220BBF8 -_0220BBEC: - add r0, r0, #0xe - sub r1, r3, #0xe - bl ov4_0220A3F8 -_0220BBF8: - bl ov4_02209744 - b _0220BBA0 - ; .align 2, 0 -_0220BC00: .word 0x00000806 - arm_func_end ov4_0220BB94 - - arm_func_start CPS_SocGetEport -CPS_SocGetEport: ; 0x0220BC04 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - ldr r0, _0220BCA0 ; =0x021CCC80 - ldr r2, _0220BCA4 ; =0x0221DDF0 - ldr r0, [r0, #8] - ldr r1, _0220BCA8 ; =0x00001388 - mov r4, #0x400 - mov r3, #1 - mov r5, #0 -_0220BC24: - ldrh ip, [r2, #8] - mov r6, r5 - add ip, ip, #1 - strh ip, [r2, #8] - ldrh ip, [r2, #8] - cmp ip, #0x400 - blo _0220BC48 - cmp ip, r1 - blo _0220BC4C -_0220BC48: - strh r4, [r2, #8] -_0220BC4C: - mov r7, r0 - cmp r0, #0 - beq _0220BC8C - ldrh r8, [r2, #8] -_0220BC5C: - ldr lr, [r7, #0xa4] - cmp lr, #0 - ldrne ip, [lr] - cmpne ip, #0 - beq _0220BC80 - ldrh ip, [lr, #0xa] - cmp ip, r8 - moveq r6, r3 - beq _0220BC8C -_0220BC80: - ldr r7, [r7, #0x68] - cmp r7, #0 - bne _0220BC5C -_0220BC8C: - cmp r6, #0 - bne _0220BC24 - ldr r0, _0220BCA4 ; =0x0221DDF0 - ldrh r0, [r0, #8] - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_0220BCA0: .word OSi_ThreadInfo -_0220BCA4: .word Unk_ov4_0221DDF0 -_0220BCA8: .word 0x00001388 - arm_func_end CPS_SocGetEport - - arm_func_start ov4_0220BCAC -ov4_0220BCAC: ; 0x0220BCAC - stmfd sp!, {r3, lr} - ldr r1, _0220BCEC ; =0x0221DDF0 - ldr r3, [r1, #0x70] - ldr r2, [r1, #0x68] - ldr r0, [r1, #0x6c] - umull lr, ip, r3, r2 - mla ip, r3, r0, ip - ldr r0, [r1, #0x74] - ldr r3, [r1, #0x78] - mla ip, r0, r2, ip - ldr r0, [r1, #0x7c] - adds r2, r3, lr - str r2, [r1, #0x68] - adc r0, r0, ip - str r0, [r1, #0x6c] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0220BCEC: .word Unk_ov4_0221DDF0 - arm_func_end ov4_0220BCAC - - arm_func_start CPS_SocRegister -CPS_SocRegister: ; 0x0220BCF0 - ldr r1, _0220BD00 ; =0x021CCC80 - ldr r1, [r1, #4] - str r0, [r1, #0xa4] - bx lr - ; .align 2, 0 -_0220BD00: .word OSi_ThreadInfo - arm_func_end CPS_SocRegister - - arm_func_start CPS_SocUnRegister -CPS_SocUnRegister: ; 0x0220BD04 - ldr r0, _0220BD18 ; =0x021CCC80 - mov r1, #0 - ldr r0, [r0, #4] - str r1, [r0, #0xa4] - bx lr - ; .align 2, 0 -_0220BD18: .word OSi_ThreadInfo - arm_func_end CPS_SocUnRegister - - arm_func_start CPS_SocDatagramMode -CPS_SocDatagramMode: ; 0x0220BD1C - ldr r0, _0220BD44 ; =0x021CCC80 - ldr r0, [r0, #4] - ldr r1, [r0, #0xa4] - cmp r1, #0 - bxeq lr - mov r0, #0xa - strb r0, [r1, #8] - mov r0, #0 - str r0, [r1, #0x44] - bx lr - ; .align 2, 0 -_0220BD44: .word OSi_ThreadInfo - arm_func_end CPS_SocDatagramMode - - arm_func_start CPS_SocBind -CPS_SocBind: ; 0x0220BD48 - stmfd sp!, {r4, lr} - ldr r3, _0220BD9C ; =0x021CCC80 - ldr r3, [r3, #4] - ldr r4, [r3, #0xa4] - cmp r4, #0 - ldmeqia sp!, {r4, pc} - ldr r3, _0220BDA0 ; =0x7F000001 - cmp r2, r3 - ldreq r2, _0220BDA4 ; =0x0221DDF0 - ldreq r2, [r2, #0x50] - cmp r0, #0 - strh r1, [r4, #0x1a] - ldrh r1, [r4, #0x1a] - strh r1, [r4, #0x18] - str r2, [r4, #0x20] - str r2, [r4, #0x1c] - strneh r0, [r4, #0xa] - ldmneia sp!, {r4, pc} - bl CPS_SocGetEport - strh r0, [r4, #0xa] - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0220BD9C: .word OSi_ThreadInfo -_0220BDA0: .word 0x7F000001 -_0220BDA4: .word Unk_ov4_0221DDF0 - arm_func_end CPS_SocBind - - arm_func_start CPS_SocUse -CPS_SocUse: ; 0x0220BDA8 - ldr r0, _0220BDD8 ; =0x021CCC80 - ldr r0, [r0, #4] - ldr r1, [r0, #0xa4] - cmp r1, #0 - bxeq lr - str r0, [r1, #0] - mov r0, #0 - strb r0, [r1, #8] - str r0, [r1, #0x44] - str r0, [r1, #0x60] - str r0, [r1, #0x38] - bx lr - ; .align 2, 0 -_0220BDD8: .word OSi_ThreadInfo - arm_func_end CPS_SocUse - - arm_func_start CPS_SocRelease -CPS_SocRelease: ; 0x0220BDDC - ldr r0, _0220BDF8 ; =0x021CCC80 - ldr r0, [r0, #4] - ldr r1, [r0, #0xa4] - cmp r1, #0 - movne r0, #0 - strne r0, [r1] - bx lr - ; .align 2, 0 -_0220BDF8: .word OSi_ThreadInfo - arm_func_end CPS_SocRelease - - arm_func_start CPS_SocDup -CPS_SocDup: ; 0x0220BDFC - ldr r1, _0220BE10 ; =0x021CCC80 - ldr r1, [r1, #4] - ldr r1, [r1, #0xa4] - str r1, [r0, #0xa4] - bx lr - ; .align 2, 0 -_0220BE10: .word OSi_ThreadInfo - arm_func_end CPS_SocDup - - arm_func_start ov4_0220BE14 -ov4_0220BE14: ; 0x0220BE14 - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - bl ov4_0220BCAC - str r0, [r5, #0x28] - str r0, [r5, #0x30] - mov r0, #1 - strb r0, [r5, #8] - bl OS_DisableInterrupts - mov r4, r0 - mov r1, #1 - mov r0, #0 - str r1, [r5, #4] - bl OS_SleepThread - mov r0, r4 - bl OS_RestoreInterrupts - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov4_0220BE14 - - arm_func_start CPS_SetUdpCallback -CPS_SetUdpCallback: ; 0x0220BE54 - ldr r1, _0220BE6C ; =0x021CCC80 - ldr r1, [r1, #4] - ldr r1, [r1, #0xa4] - cmp r1, #0 - strne r0, [r1, #0x38] - bx lr - ; .align 2, 0 -_0220BE6C: .word OSi_ThreadInfo - arm_func_end CPS_SetUdpCallback - - arm_func_start CPS_TcpListen -CPS_TcpListen: ; 0x0220BE70 - stmfd sp!, {r3, lr} - ldr r0, _0220BEA4 ; =0x021CCC80 - ldr r0, [r0, #4] - ldr r0, [r0, #0xa4] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - ldrb r1, [r0, #9] - cmp r1, #0 - beq _0220BE9C - bl ov4_0221075C - ldmia sp!, {r3, pc} -_0220BE9C: - bl ov4_0220BE14 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0220BEA4: .word OSi_ThreadInfo - arm_func_end CPS_TcpListen - - arm_func_start ov4_0220BEA8 -ov4_0220BEA8: ; 0x0220BEA8 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - bl ov4_0220BCAC - mov r6, #2 - ldr r4, _0220BF58 ; =0x0221DDF0 - mov r8, r0 - mov r7, #0 - mov r5, #1 - mov fp, r6 -_0220BECC: - str r8, [sl, #0x28] - strb r6, [sl, #8] - bl OS_GetTick - mov r0, r0, lsr #0x10 - orr r0, r0, r1, lsl #16 - str r0, [sl, #0x10] - mov r0, sl - mov r1, fp - mov r2, #0x18 - bl ov4_0220AA9C - bl OS_DisableInterrupts - mov sb, r0 - ldrb r0, [sl, #8] - cmp r0, #2 - bne _0220BF20 - ldr r0, [r4, #0x50] - cmp r0, #0 - beq _0220BF20 - mov r0, #0 - str r5, [sl, #4] - bl OS_SleepThread -_0220BF20: - mov r0, sb - bl OS_RestoreInterrupts - ldrb r0, [sl, #8] - cmp r0, #4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [r4, #0x50] - cmp r0, #0 - beq _0220BF50 - add r7, r7, #1 - cmp r7, #3 - blo _0220BECC -_0220BF50: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0220BF58: .word Unk_ov4_0221DDF0 - arm_func_end ov4_0220BEA8 - - arm_func_start CPS_TcpConnect -CPS_TcpConnect: ; 0x0220BF5C - stmfd sp!, {r3, lr} - ldr r0, _0220BF98 ; =0x021CCC80 - ldr r0, [r0, #4] - ldr r0, [r0, #0xa4] - cmp r0, #0 - beq _0220BF90 - ldrb r1, [r0, #9] - cmp r1, #0 - beq _0220BF88 - bl ov4_02210898 - ldmia sp!, {r3, pc} -_0220BF88: - bl ov4_0220BEA8 - ldmia sp!, {r3, pc} -_0220BF90: - mov r0, #1 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0220BF98: .word OSi_ThreadInfo - arm_func_end CPS_TcpConnect - - arm_func_start CPS_SocWho -CPS_SocWho: ; 0x0220BF9C - ldr r2, _0220BFE8 ; =0x021CCC80 - ldr r2, [r2, #4] - ldr r3, [r2, #0xa4] - cmp r3, #0 - beq _0220BFE0 - ldrb r2, [r3, #8] - cmp r2, #4 - cmpne r2, #0xa - bne _0220BFE0 - cmp r0, #0 - ldrneh r2, [r3, #0x18] - strneh r2, [r0] - cmp r1, #0 - ldrne r0, [r3, #0x14] - strne r0, [r1] - ldr r0, [r3, #0x1c] - bx lr -_0220BFE0: - mov r0, #0 - bx lr - ; .align 2, 0 -_0220BFE8: .word OSi_ThreadInfo - arm_func_end CPS_SocWho - - arm_func_start ov4_0220BFEC -ov4_0220BFEC: ; 0x0220BFEC - stmfd sp!, {r4, lr} - mov r4, r0 - bl OS_YieldThread - ldrb r1, [r4, #8] - add r0, r1, #0xfd - and r0, r0, #0xff - cmp r0, #1 - bhi _0220C024 - mov r0, r4 - mov r1, #0x19 - bl ov4_0220AB24 - mov r0, #7 - strb r0, [r4, #8] - ldmia sp!, {r4, pc} -_0220C024: - cmp r1, #0 - ldmeqia sp!, {r4, pc} - mov r0, r4 - mov r1, #0x1a - bl ov4_0220AB10 - ldmia sp!, {r4, pc} - arm_func_end ov4_0220BFEC - - arm_func_start CPS_TcpShutdown -CPS_TcpShutdown: ; 0x0220C03C - stmfd sp!, {r4, lr} - ldr r0, _0220C074 ; =0x021CCC80 - ldr r0, [r0, #4] - ldr r4, [r0, #0xa4] - cmp r4, #0 - ldmeqia sp!, {r4, pc} - ldrb r0, [r4, #9] - cmp r0, #0 - beq _0220C068 - mov r0, r4 - bl ov4_02210D08 -_0220C068: - mov r0, r4 - bl ov4_0220BFEC - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0220C074: .word OSi_ThreadInfo - arm_func_end CPS_TcpShutdown - - arm_func_start CPS_TcpClose -CPS_TcpClose: ; 0x0220C078 - stmfd sp!, {r4, r5, r6, lr} - ldr r0, _0220C0F8 ; =0x021CCC80 - ldr r0, [r0, #4] - ldr r4, [r0, #0xa4] - cmp r4, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldrb r0, [r4, #9] - cmp r0, #0 - beq _0220C0A4 - mov r0, r4 - bl ov4_02210D88 -_0220C0A4: - bl OS_GetTick - mov r6, r0, lsr #0x10 - orr r6, r6, r1, lsl #16 - ldr r5, _0220C0FC ; =0x0221DDF0 - b _0220C0BC -_0220C0B8: - bl ov4_02208DF0 -_0220C0BC: - ldr r0, [r5, #0x48] - blx r0 - cmp r0, #0 - ldrneb r0, [r4, #8] - cmpne r0, #0 - beq _0220C0EC - bl OS_GetTick - mov r0, r0, lsr #0x10 - orr r0, r0, r1, lsl #16 - sub r0, r0, r6 - cmp r0, #0x27 - blt _0220C0B8 -_0220C0EC: - mov r0, #0 - strb r0, [r4, #8] - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_0220C0F8: .word OSi_ThreadInfo -_0220C0FC: .word Unk_ov4_0221DDF0 - arm_func_end CPS_TcpClose - - arm_func_start ov4_0220C100 -ov4_0220C100: ; 0x0220C100 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r8, r1 - mov sb, r0 - bl OS_DisableInterrupts - ldr r6, [r8, #0x44] - mov r7, r0 - cmp r6, #0 - bne _0220C140 - mov r5, #3 - mov r4, #0 -_0220C128: - mov r0, r4 - str r5, [r8, #4] - bl OS_SleepThread - ldr r6, [r8, #0x44] - cmp r6, #0 - beq _0220C128 -_0220C140: - mov r0, r7 - bl OS_RestoreInterrupts - str r6, [sb] - ldr r0, [r8, #0x40] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end ov4_0220C100 - - arm_func_start ov4_0220C154 -ov4_0220C154: ; 0x0220C154 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - mov r4, r1 - ldr r1, [r4, #0x44] - mov r5, r0 - cmp r1, #0 - ldreqb r0, [r4, #8] - cmpeq r0, #4 - bne _0220C1B4 - bl OS_DisableInterrupts - mov r8, r0 - mov r7, #2 - mov r6, #0 - b _0220C194 -_0220C188: - mov r0, r6 - str r7, [r4, #4] - bl OS_SleepThread -_0220C194: - ldr r0, [r4, #0x44] - cmp r0, #0 - ldreqb r0, [r4, #8] - cmpeq r0, #4 - beq _0220C188 - mov r0, r8 - bl OS_RestoreInterrupts - b _0220C1B8 -_0220C1B4: - bl OS_YieldThread -_0220C1B8: - ldr r0, [r4, #0x44] - str r0, [r5, #0] - cmp r0, #0 - ldrne r0, [r4, #0x40] - moveq r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end ov4_0220C154 - - arm_func_start CPS_SocRead -CPS_SocRead: ; 0x0220C1D0 - stmfd sp!, {r3, lr} - ldr r1, _0220C230 ; =0x021CCC80 - ldr r1, [r1, #4] - ldr r1, [r1, #0xa4] - cmp r1, #0 - beq _0220C220 - ldrb r2, [r1, #8] - add r2, r2, #0xf6 - and r2, r2, #0xff - cmp r2, #1 - bhi _0220C204 - bl ov4_0220C100 - ldmia sp!, {r3, pc} -_0220C204: - ldrb r2, [r1, #9] - cmp r2, #0 - beq _0220C218 - bl ov4_022108EC - ldmia sp!, {r3, pc} -_0220C218: - bl ov4_0220C154 - ldmia sp!, {r3, pc} -_0220C220: - mov r1, #0 - str r1, [r0, #0] - mov r0, r1 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0220C230: .word OSi_ThreadInfo - arm_func_end CPS_SocRead - - arm_func_start ov4_0220C234 -ov4_0220C234: ; 0x0220C234 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r4, r1 - mov r7, r0 - bl OS_DisableInterrupts - ldr r2, [r4, #0x44] - ldr r1, [r4, #0x3c] - mov r5, r0 - cmp r2, r1 - mov r6, #0 - bne _0220C264 - cmp r7, #0 - movne r6, #1 -_0220C264: - cmp r7, r2 - movhs r0, #0 - strhs r0, [r4, #0x44] - bhs _0220C288 - ldr r0, [r4, #0x40] - sub r2, r2, r7 - add r1, r0, r7 - str r2, [r4, #0x44] - bl memmove -_0220C288: - mov r0, r5 - bl OS_RestoreInterrupts - ldrb r0, [r4, #8] - cmp r0, #0xa - cmpne r0, #0xb - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r4, #0x44] - cmp r0, #0 - beq _0220C2B4 - cmp r6, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} -_0220C2B4: - mov r0, r4 - mov r1, #0x1b - bl ov4_0220AB10 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov4_0220C234 - - arm_func_start CPS_SocConsume -CPS_SocConsume: ; 0x0220C2C4 - stmfd sp!, {r3, lr} - ldr r1, _0220C2F8 ; =0x021CCC80 - ldr r1, [r1, #4] - ldr r1, [r1, #0xa4] - cmp r1, #0 - ldmeqia sp!, {r3, pc} - ldrb r2, [r1, #9] - cmp r2, #0 - beq _0220C2F0 - bl ov4_022109C4 - ldmia sp!, {r3, pc} -_0220C2F0: - bl ov4_0220C234 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0220C2F8: .word OSi_ThreadInfo - arm_func_end CPS_SocConsume - - arm_func_start ov4_0220C2FC -ov4_0220C2FC: ; 0x0220C2FC - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r8, r2 - ldr r6, [r8, #0x34] - movs fp, r3 - mov sl, r0 - movne r5, #1 - mov r0, r6, lsl #1 - mov sb, r1 - ldreqh r5, [r8, #0x2c] - add r7, r0, #4 - b _0220C3A0 -_0220C328: - ldr r0, _0220C3BC ; =0x0221DDF0 - ldrh r4, [r8, #0x2e] - ldrh r0, [r0, #2] - ldr r1, [r8, #0x34] - cmp r4, r5 - movhs r4, r5 - cmp r0, r4 - movlo r4, r0 - cmp fp, #0 - biceq r4, r4, #1 - cmp sb, r4 - sub r0, r1, r6 - movlo r4, sb - adds r0, r7, r0 - moveq r4, #0 - mov r6, r1 - sub r7, r0, #1 - cmp r4, #0 - beq _0220C3B4 - mov r2, #0 - str r2, [sp] - mov r0, sl - mov r1, r4 - mov r2, r8 - mov r3, #0x18 - sub r5, r5, r4 - bl ov4_0220A0DC - bl OS_YieldThread - add sl, sl, r4 - sub sb, sb, r4 -_0220C3A0: - cmp sb, #0 - beq _0220C3B4 - ldrb r0, [r8, #8] - cmp r0, #4 - beq _0220C328 -_0220C3B4: - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0220C3BC: .word Unk_ov4_0221DDF0 - arm_func_end ov4_0220C2FC - - arm_func_start ov4_0220C3C0 -ov4_0220C3C0: ; 0x0220C3C0 - stmfd sp!, {r3, r4, r5, lr} - mov r5, r2 - mov r4, r3 - ldr r2, [sp, #0x10] - ldr r3, [sp, #0x14] - bl ov4_0220C2FC - cmp r0, #0 - cmpne r4, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r2, [sp, #0x10] - mov r0, r5 - mov r1, r4 - mov r3, #0 - bl ov4_0220C2FC - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov4_0220C3C0 - - arm_func_start ov4_0220C3FC -ov4_0220C3FC: ; 0x0220C3FC - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - mov r4, #0 - mov fp, r0 - ldr r8, [sp, #0x38] - mov r0, r4 - str r4, [sp, #0x10] - mov sl, r1 - mov sb, r2 - str r3, [sp, #8] - mov r6, r4 - str r0, [r8, #0x34] - bl OS_GetTick - mov r0, r0, lsr #0x10 - orr r0, r0, r1, lsl #16 - str r0, [sp, #0xc] - b _0220C5B4 -_0220C440: - ldr r7, [r8, #0x28] - ldr r3, [sp, #8] - str r8, [sp] - mov r0, fp - mov r1, sl - mov r2, sb - str r6, [sp, #4] - bl ov4_0220C3C0 - bl OS_GetTick - mov r5, r0, lsr #0x10 - ldr r4, _0220C600 ; =0x0221DDF0 - orr r5, r5, r1, lsl #16 -_0220C470: - bl ov4_02208DF0 - ldr r0, [r4, #0x48] - blx r0 - cmp r0, #0 - beq _0220C4C8 - ldrb r0, [r8, #8] - cmp r0, #4 - bne _0220C4C8 - ldr r1, [r8, #0x28] - ldr r0, [r8, #0x30] - cmp r1, r0 - beq _0220C4C8 - bl OS_GetTick - mov r0, r0, lsr #0x10 - orr r0, r0, r1, lsl #16 - sub r0, r0, r5 - cmp r0, #0xf - bge _0220C4C8 - cmp r6, #0 - ldrneh r0, [r8, #0x2c] - cmpne r0, #0 - beq _0220C470 -_0220C4C8: - ldr r1, [r8, #0x30] - ldr r0, [r8, #0x28] - sub r5, r1, r7 - sub r0, r0, r7 - cmp r5, r0 - movhi r5, #0 - ldr r0, [sp, #0x10] - cmp r5, #0 - add r0, r0, r5 - str r0, [sp, #0x10] - beq _0220C504 - bl OS_GetTick - mov r0, r0, lsr #0x10 - orr r0, r0, r1, lsl #16 - str r0, [sp, #0xc] -_0220C504: - ldr r0, [r8, #0x30] - str r0, [r8, #0x28] - ldrb r0, [r8, #8] - cmp r0, #4 - ldreqh r0, [r8, #0x2c] - cmpeq r0, #0 - cmpeq r5, #0 - bne _0220C588 - cmp r6, #0 - bne _0220C58C - bl OS_GetTick - mov r7, r0, lsr #0x10 - orr r7, r7, r1, lsl #16 - ldr r4, _0220C600 ; =0x0221DDF0 - b _0220C550 -_0220C540: - bl ov4_02208DF0 - ldrh r0, [r8, #0x2c] - cmp r0, #0 - bne _0220C578 -_0220C550: - ldr r0, [r4, #0x48] - blx r0 - cmp r0, #0 - beq _0220C578 - bl OS_GetTick - mov r0, r0, lsr #0x10 - orr r0, r0, r1, lsl #16 - sub r0, r0, r7 - cmp r0, #0xf - blt _0220C540 -_0220C578: - ldrh r0, [r8, #0x2c] - cmp r0, #0 - moveq r6, #1 - b _0220C58C -_0220C588: - mov r6, #0 -_0220C58C: - cmp r5, sl - addlo fp, fp, r5 - sublo sl, sl, r5 - blo _0220C5B4 - sub r1, r5, sl - ldr r0, [sp, #8] - add fp, sb, r1 - mov sb, #0 - sub sl, r0, r1 - str sb, [sp, #8] -_0220C5B4: - ldr r0, _0220C600 ; =0x0221DDF0 - ldr r0, [r0, #0x48] - blx r0 - cmp r0, #0 - cmpne sl, #0 - beq _0220C5F4 - ldrb r0, [r8, #8] - cmp r0, #4 - bne _0220C5F4 - bl OS_GetTick - mov r2, r0, lsr #0x10 - ldr r0, [sp, #0xc] - orr r2, r2, r1, lsl #16 - sub r0, r2, r0 - cmp r0, #0x9f - blt _0220C440 -_0220C5F4: - ldr r0, [sp, #0x10] - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0220C600: .word Unk_ov4_0221DDF0 - arm_func_end ov4_0220C3FC - - arm_func_start ov4_0220C604 -ov4_0220C604: ; 0x0220C604 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - ldr ip, _0220C6D0 ; =0x021CCC80 - mov r7, r1 - ldr ip, [ip, #4] - mov r6, r2 - ldr r4, [ip, #0xa4] - mov r5, r3 - cmp r4, #0 - beq _0220C6C8 - ldrb ip, [r4, #8] - cmp ip, #0xa - bne _0220C664 - cmp r7, #0 - beq _0220C644 - mov r2, r4 - bl ov4_02209FA0 -_0220C644: - cmp r5, #0 - beq _0220C65C - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl ov4_02209FA0 -_0220C65C: - add r0, r7, r5 - b _0220C6B8 -_0220C664: - cmp ip, #0xb - bne _0220C69C - cmp r7, #0 - beq _0220C67C - mov r2, r4 - bl ov4_02209EF0 -_0220C67C: - cmp r5, #0 - beq _0220C694 - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl ov4_02209EF0 -_0220C694: - add r0, r7, r5 - b _0220C6B8 -_0220C69C: - ldrb ip, [r4, #9] - cmp ip, #0 - str r4, [sp] - beq _0220C6B4 - bl ov4_02210BD4 - b _0220C6B8 -_0220C6B4: - bl ov4_0220C3FC -_0220C6B8: - ldr r1, _0220C6D4 ; =0x0221DDF0 - ldrb r1, [r1] - cmp r1, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} -_0220C6C8: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_0220C6D0: .word OSi_ThreadInfo -_0220C6D4: .word Unk_ov4_0221DDF0 - arm_func_end ov4_0220C604 - - arm_func_start CPS_SocWrite -CPS_SocWrite: ; 0x0220C6D8 - stmfd sp!, {r3, r4, r5, lr} - ldr r3, _0220C76C ; =0x021CCC80 - mov r2, r0 - ldr r4, [r3, #4] - mov r3, r1 - ldr r5, [r4, #0xa4] - cmp r5, #0 - beq _0220C764 - ldr r4, [r5, #0x60] - cmp r4, #0 - beq _0220C754 - ldr r0, [r5, #0x5c] - mov r1, r4 - bl ov4_0220C604 - ldr r1, [r5, #0x60] - mov r4, r0 - cmp r4, r1 - bhs _0220C744 - ldr r0, [r5, #0x5c] - sub r2, r1, r4 - add r1, r0, r4 - bl memmove - ldr r1, [r5, #0x60] - mov r0, #0 - sub r1, r1, r4 - str r1, [r5, #0x60] - ldmia sp!, {r3, r4, r5, pc} -_0220C744: - mov r0, #0 - str r0, [r5, #0x60] - sub r0, r4, r1 - ldmia sp!, {r3, r4, r5, pc} -_0220C754: - mov r2, #0 - mov r3, r2 - bl ov4_0220C604 - ldmia sp!, {r3, r4, r5, pc} -_0220C764: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0220C76C: .word OSi_ThreadInfo - arm_func_end CPS_SocWrite - - arm_func_start CPS_SocGetLength -CPS_SocGetLength: ; 0x0220C770 - stmfd sp!, {r3, lr} - ldr r0, _0220C7DC ; =0x021CCC80 - ldr r0, [r0, #4] - ldr r0, [r0, #0xa4] - cmp r0, #0 - beq _0220C7D4 - ldrb r1, [r0, #9] - cmp r1, #0 - beq _0220C79C - bl ov4_02210B58 - ldmia sp!, {r3, pc} -_0220C79C: - ldr r1, [r0, #0x44] - cmp r1, #0 - bne _0220C7C4 - ldrb r0, [r0, #8] - cmp r0, #4 - beq _0220C7C4 - add r0, r0, #0xf6 - and r0, r0, #0xff - cmp r0, #1 - bhi _0220C7CC -_0220C7C4: - mov r0, r1 - ldmia sp!, {r3, pc} -_0220C7CC: - mvn r0, #0 - ldmia sp!, {r3, pc} -_0220C7D4: - mov r0, #0 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0220C7DC: .word OSi_ThreadInfo - arm_func_end CPS_SocGetLength - - arm_func_start CPS_SocFlush -CPS_SocFlush: ; 0x0220C7E0 - stmfd sp!, {r4, lr} - ldr r0, _0220C81C ; =0x021CCC80 - ldr r0, [r0, #4] - ldr r4, [r0, #0xa4] - cmp r4, #0 - ldrne r1, [r4, #0x60] - cmpne r1, #0 - ldmeqia sp!, {r4, pc} - mov r2, #0 - ldr r0, [r4, #0x5c] - mov r3, r2 - bl ov4_0220C604 - mov r0, #0 - str r0, [r4, #0x60] - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0220C81C: .word OSi_ThreadInfo - arm_func_end CPS_SocFlush - - arm_func_start ov4_0220C820 -ov4_0220C820: ; 0x0220C820 - stmfd sp!, {r4, r5, r6, lr} - ldr r0, _0220C8BC ; =0x0221DDF0 - ldr r0, [r0, #0x18] - blx r0 - ldr r0, _0220C8BC ; =0x0221DDF0 - ldr r0, [r0, #0x50] - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - bl ov4_02209858 - mov r0, #0x64 - bl OS_Sleep - ldr r0, _0220C8BC ; =0x0221DDF0 - ldr r0, [r0, #0x50] - bl ov4_02209858 - bl OS_GetTick - mov r6, r0, lsr #0x10 - orr r6, r6, r1, lsl #16 - mov r5, #0x64 - ldr r4, _0220C8BC ; =0x0221DDF0 - b _0220C890 -_0220C870: - ldrb r0, [r4, #1] - cmp r0, #0 - beq _0220C888 - mov r0, #4 - bl ov4_02208CEC - ldmia sp!, {r4, r5, r6, pc} -_0220C888: - mov r0, r5 - bl OS_Sleep -_0220C890: - ldr r0, [r4, #0x48] - blx r0 - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - bl OS_GetTick - mov r0, r0, lsr #0x10 - orr r0, r0, r1, lsl #16 - sub r0, r0, r6 - cmp r0, #0x17 - blt _0220C870 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_0220C8BC: .word Unk_ov4_0221DDF0 - arm_func_end ov4_0220C820 - - arm_func_start ov4_0220C8C0 -ov4_0220C8C0: ; 0x0220C8C0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r3, _0220CC10 ; =0x0221DDF0 - mov r1, #0 - ldr r0, _0220CC14 ; =0x0221DED0 - mov r2, #0x64 - str r1, [r3, #0x44] - bl MI_CpuFill8 - ldr r1, _0220CC10 ; =0x0221DDF0 - mov r3, #0x180 - ldr r0, _0220CC18 ; =0x0221E49C - str r3, [r1, #0x11c] - str r0, [r1, #0x120] - ldr r2, _0220CC1C ; =0x0221E31C - str r3, [r1, #0x128] - ldr r0, _0220CC14 ; =0x0221DED0 - str r2, [r1, #0x12c] - bl CPS_SocRegister - mov sl, #1 - ldr r0, _0220CC10 ; =0x0221DDF0 - mov fp, sl - str sl, [sp] - str sl, [r0, #0xc] - mov r4, #0 -_0220C91C: - mov r0, #0x3e8 - bl OS_Sleep - ldr r0, _0220CC10 ; =0x0221DDF0 - ldr r1, [r0, #0x44] - cmp r1, #0 - bne _0220CBF0 - bl OS_GetTick - ldr r2, _0220CC10 ; =0x0221DDF0 - mov r5, r0, lsr #0x10 - ldr r0, [r2, #0x48] - orr r5, r5, r1, lsl #16 - blx r0 - cmp r0, #0 - beq _0220CA48 - ldr r0, [sp] - subs r0, r0, #1 - str r0, [sp] - bne _0220CA5C - ldr r0, _0220CC10 ; =0x0221DDF0 - ldr r1, [r0, #0x10] - tst r1, #1 - beq _0220C988 - cmp r4, #0 - bne _0220CA5C - bl ov4_0220C820 - mov r4, #1 - b _0220CA5C -_0220C988: - cmp r4, #3 - addls pc, pc, r4, lsl #2 - b _0220CA5C -_0220C994: ; jump table - b _0220C9A4 ; case 0 - b _0220C9E8 ; case 1 - b _0220CA0C ; case 2 - b _0220CA5C ; case 3 -_0220C9A4: - cmp fp, #0 - movne r1, #2 - strne r1, [r0, #0xc] - movne fp, #0 - bl ov4_0220D30C - cmp r0, #0 - beq _0220C9D4 - add r0, sp, #0 - mov r1, #0 - bl ov4_0220D364 - cmp r0, #0 - bne _0220C9E0 -_0220C9D4: - bl ov4_0220C820 - mov r4, #3 - b _0220CA5C -_0220C9E0: - mov r4, #1 - b _0220CA5C -_0220C9E8: - add r0, sp, #0 - mov r1, #1 - bl ov4_0220D364 - cmp r0, #0 - bne _0220CA5C - ldr r0, [sp] - cmp r0, #0x3c - movlo r4, #2 - b _0220CA5C -_0220CA0C: - add r0, sp, #0 - mov r1, #2 - bl ov4_0220D364 - cmp r0, #0 - movne r4, #1 - bne _0220CA5C - ldr r0, [sp] - cmp r0, #0x3c - bhs _0220CA5C - mov r0, #3 - bl ov4_02208CEC - mov sl, #1 - str sl, [sp] - mov r4, #0 - b _0220CA5C -_0220CA48: - mov r0, #1 - bl ov4_02208CEC - mov sl, #1 - str sl, [sp] - mov r4, #0 -_0220CA5C: - mov r3, #0 - ldr r6, _0220CC20 ; =0x0221DE70 - ldr r1, _0220CC24 ; =0x000003BD - mov r2, r3 -_0220CA6C: - ldr r0, [r6, #0] - cmp r0, #0 - beq _0220CA8C - ldrh r0, [r6, #0xa] - sub r0, r5, r0 - mov r0, r0, lsl #0x10 - cmp r1, r0, asr #16 - strlt r2, [r6] -_0220CA8C: - add r3, r3, #1 - cmp r3, #8 - add r6, r6, #0xc - blt _0220CA6C - ldr r0, _0220CC10 ; =0x0221DDF0 - ldr r0, [r0, #0x2c] - cmp r0, #0 - beq _0220CABC - subs sl, sl, #1 - bne _0220CABC - bl ov4_02209858 - mov sl, #0x69 -_0220CABC: - ldr r0, _0220CC28 ; =0x021CCC80 - ldr sb, [r0, #8] - cmp sb, #0 - beq _0220CB84 - mov r6, #0 - mov r7, r6 - mov r8, #1 -_0220CAD8: - ldr r0, [sb, #0xa4] - cmp r0, #0 - ldrne r1, [r0] - cmpne r1, #0 - beq _0220CB78 - ldrb r1, [r0, #8] - cmp r1, #3 - bne _0220CB20 - ldr r2, [r0, #0x10] - sub r2, r5, r2 - cmp r2, #0x27 - ble _0220CB20 - strb r8, [r0, #8] - ldrh r1, [r0, #0x1a] - strh r1, [r0, #0x18] - ldr r1, [r0, #0x20] - str r1, [r0, #0x1c] - b _0220CB78 -_0220CB20: - cmp r1, #2 - bne _0220CB58 - ldr r2, [r0, #0x10] - sub r2, r5, r2 - cmp r2, #0x27 - ble _0220CB58 - ldr r1, [r0, #4] - cmp r1, #1 - bne _0220CB78 - strb r7, [r0, #8] - str r7, [r0, #4] - ldr r0, [r0, #0] - bl OS_WakeupThreadDirect - b _0220CB78 -_0220CB58: - cmp r1, #4 - beq _0220CB78 - ldr r1, [r0, #4] - cmp r1, #2 - bne _0220CB78 - str r6, [r0, #4] - ldr r0, [r0, #0] - bl OS_WakeupThreadDirect -_0220CB78: - ldr sb, [sb, #0x68] - cmp sb, #0 - bne _0220CAD8 -_0220CB84: - mov sb, #0 - ldr r8, _0220CC2C ; =0x0221E118 - ldr r6, _0220CC10 ; =0x0221DDF0 - mov r7, sb -_0220CB94: - ldrh r0, [r8, #4] - cmp r0, #0 - beq _0220CBC0 - ldr r0, [r8, #0x2c] - sub r0, r5, r0 - cmp r0, #0xef - ble _0220CBC0 - ldr r0, [r8, #0x34] - ldr r1, [r6, #0x40] - blx r1 - strh r7, [r8, #4] -_0220CBC0: - add sb, sb, #1 - cmp sb, #8 - add r8, r8, #0x38 - blt _0220CB94 - mov r0, r5 - bl ov4_02210DF0 - ldr r0, _0220CC10 ; =0x0221DDF0 - ldr r0, [r0, #0x3c] - cmp r0, #0 - beq _0220C91C - blx r0 - b _0220C91C -_0220CBF0: - ldr r0, [r0, #0x10] - tst r0, #1 - bne _0220CC08 - cmp r4, #3 - beq _0220CC08 - bl ov4_0220D460 -_0220CC08: - bl CPS_SocUnRegister - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0220CC10: .word Unk_ov4_0221DDF0 -_0220CC14: .word Unk_ov4_0221DED0 -_0220CC18: .word Unk_ov4_0221E49C -_0220CC1C: .word Unk_ov4_0221E31C -_0220CC20: .word Unk_ov4_0221DE70 -_0220CC24: .word 0x000003BD -_0220CC28: .word OSi_ThreadInfo -_0220CC2C: .word Unk_ov4_0221E118 - arm_func_end ov4_0220C8C0 - - arm_func_start ov4_0220CC30 -ov4_0220CC30: ; 0x0220CC30 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r5, r1 - mov r4, r2 - mov r1, #0 - mov r2, #0xec - mov r6, r0 - bl MI_CpuFill8 - ldr r0, _0220CDA0 ; =0x00000101 - mov r1, #6 - strh r0, [r6] - ldr r0, _0220CDA4 ; =0x0221DDF0 - strb r1, [r6, #2] - ldr r3, [r0, #0x70] - ldr r2, [r0, #0x68] - ldr r1, [r0, #0x6c] - umull lr, ip, r3, r2 - mla ip, r3, r1, ip - ldr r1, [r0, #0x74] - ldr r7, [r0, #0x78] - mla ip, r1, r2, ip - ldr r3, [r0, #0x7c] - adds r7, r7, lr - adc r1, r3, ip - str r7, [r0, #0x68] - str r1, [r0, #0x6c] - mov r0, r1, lsr #0x10 - mov r0, r0, lsl #0x10 - mov r3, r0, lsr #0x10 - cmp r4, #0 - mov r2, r3, lsl #8 - mov r0, r1, lsl #0x10 - strne r1, [r4] - mov r1, r0, lsr #0x10 - orr r2, r2, r3, asr #8 - mov r0, r1, lsl #8 - strh r2, [r6, #4] - orr r0, r0, r1, asr #8 - strh r0, [r6, #6] - ldr r2, _0220CDA4 ; =0x0221DDF0 - ldr r0, _0220CDA8 ; =0x0221E2D8 - ldr r1, [r2, #0x50] - mov r1, r1, lsr #0x10 - mov r1, r1, lsl #0x10 - mov r3, r1, lsr #0x10 - mov r1, r3, lsl #8 - orr r1, r1, r3, asr #8 - strh r1, [r6, #0xc] - ldr r2, [r2, #0x50] - add r1, r6, #0x1c - mov r2, r2, lsl #0x10 - mov r3, r2, lsr #0x10 - mov r2, r3, lsl #8 - orr r3, r2, r3, asr #8 - mov r2, #6 - strh r3, [r6, #0xe] - bl MI_CpuCopy8 - ldr r0, _0220CDAC ; =0x00008263 - ldr r1, _0220CDB0 ; =0x00006353 - strh r0, [r6, #0xec] - strh r1, [r6, #0xee] - ldr r0, _0220CDB4 ; =0x00000135 - mov r1, #7 - strh r0, [r6, #0xf0] - strb r5, [r6, #0xf2] - mov r0, #0x3d - strb r0, [r6, #0xf3] - strb r1, [r6, #0xf4] - mov r3, #1 - ldr r0, _0220CDA8 ; =0x0221E2D8 - add r1, r6, #0xf6 - mov r2, #6 - strb r3, [r6, #0xf5] - bl MI_CpuCopy8 - mov r1, #0xc - strb r1, [r6, #0xfc] - mov r2, #0xa - ldr r0, _0220CDB8 ; =0x0221A1A8 - add r1, r6, #0xfe - strb r2, [r6, #0xfd] - bl MI_CpuCopy8 - mov r1, #0x37 - strb r1, [r6, #0x108] - mov r2, #3 - add r0, r6, #0xd - strb r2, [r6, #0x109] - mov r1, #1 - strb r1, [r6, #0x10a] - strb r2, [r6, #0x10b] - mov r1, #6 - strb r1, [r6, #0x10c] - add r0, r0, #0x100 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_0220CDA0: .word 0x00000101 -_0220CDA4: .word Unk_ov4_0221DDF0 -_0220CDA8: .word Unk_ov4_0221E2D8 -_0220CDAC: .word 0x00008263 -_0220CDB0: .word 0x00006353 -_0220CDB4: .word 0x00000135 -_0220CDB8: .word Unk_ov4_0221A1A8 - arm_func_end ov4_0220CC30 - - arm_func_start ov4_0220CDBC -ov4_0220CDBC: ; 0x0220CDBC - stmfd sp!, {r3, r4, r5, lr} - mov ip, r0 - mov r5, r2 - cmp r3, r1 - bhs _0220CDE8 - sub r4, r1, r3 - mov r0, r5 - mov r1, ip - mov r2, r4 - bl MI_CpuFill8 - add r5, r5, r4 -_0220CDE8: - mov r0, r5 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov4_0220CDBC - - arm_func_start ov4_0220CDF0 -ov4_0220CDF0: ; 0x0220CDF0 - stmfd sp!, {r3, r4, lr} - sub sp, sp, #4 - ldr r4, _0220CEAC ; =0x0221E346 - add r2, sp, #0 - mov r0, r4 - mov r1, #1 - bl ov4_0220CC30 - ldr r1, _0220CEB0 ; =0x0221DDF0 - mov ip, r0 - ldr r0, [r1, #0x34] - cmp r0, #0 - beq _0220CE74 - mov r0, #0x32 - strb r0, [ip] - mov r0, #4 - strb r0, [ip, #1] - ldr r0, [r1, #0x34] - mov r0, r0, lsr #0x10 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r0, r0, asr #8 - strb r0, [ip, #2] - ldr r0, [r1, #0x34] - mov r0, r0, lsr #0x10 - strb r0, [ip, #3] - ldr r0, [r1, #0x34] - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r0, r0, asr #8 - strb r0, [ip, #4] - ldr r0, [r1, #0x34] - strb r0, [ip, #5] - add ip, ip, #6 -_0220CE74: - add r2, ip, #1 - mov lr, #0xff - sub r3, r2, r4 - mov r0, #0 - mov r1, #0x12c - strb lr, [ip] - bl ov4_0220CDBC - mov r1, r0 - mov r0, r4 - sub r1, r1, r4 - bl CPS_SocWrite - ldr r0, [sp] - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - ; .align 2, 0 -_0220CEAC: .word 0x0221E346 -_0220CEB0: .word Unk_ov4_0221DDF0 - arm_func_end ov4_0220CDF0 - - arm_func_start ov4_0220CEB4 -ov4_0220CEB4: ; 0x0220CEB4 - stmfd sp!, {r3, r4, r5, lr} - ldr r4, _0220CFB4 ; =0x0221E346 - mov r5, r0 - add r2, sp, #0 - mov r0, r4 - mov r1, #3 - bl ov4_0220CC30 - mov ip, r0 - cmp r5, #0 - bne _0220CF80 - mov r0, #0x32 - strb r0, [ip] - mov r0, #4 - ldr r2, _0220CFB8 ; =0x0221DDF0 - strb r0, [ip, #1] - ldr r1, [r2, #0x34] - mov r3, #0x36 - mov r1, r1, lsr #0x10 - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 - mov r1, r1, asr #8 - strb r1, [ip, #2] - ldr r1, [r2, #0x34] - mov r1, r1, lsr #0x10 - strb r1, [ip, #3] - ldr r1, [r2, #0x34] - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 - mov r1, r1, asr #8 - strb r1, [ip, #4] - ldr r1, [r2, #0x34] - strb r1, [ip, #5] - strb r3, [ip, #6] - strb r0, [ip, #7] - ldr r0, [r2, #0x20] - mov r0, r0, lsr #0x10 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r0, r0, asr #8 - strb r0, [ip, #8] - ldr r0, [r2, #0x20] - mov r0, r0, lsr #0x10 - strb r0, [ip, #9] - ldr r0, [r2, #0x20] - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r0, r0, asr #8 - strb r0, [ip, #0xa] - ldr r0, [r2, #0x20] - strb r0, [ip, #0xb] - add ip, ip, #0xc -_0220CF80: - add r2, ip, #1 - mov lr, #0xff - sub r3, r2, r4 - mov r0, #0 - mov r1, #0x12c - strb lr, [ip] - bl ov4_0220CDBC - mov r1, r0 - mov r0, r4 - sub r1, r1, r4 - bl CPS_SocWrite - ldr r0, [sp] - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0220CFB4: .word 0x0221E346 -_0220CFB8: .word Unk_ov4_0221DDF0 - arm_func_end ov4_0220CEB4 - - arm_func_start ov4_0220CFBC -ov4_0220CFBC: ; 0x0220CFBC - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - add r1, r1, #1 - str r0, [sp] - rsb fp, r1, r1, lsl #4 - bl OS_GetTick - mov r4, r0, lsr #0x10 - orr r4, r4, r1, lsl #16 - mov r5, #0 - b _0220D2C4 -_0220CFE4: - bl CPS_SocGetLength - cmp r0, #0 - bne _0220CFF8 - bl ov4_02208DF0 - b _0220D2C4 -_0220CFF8: - add r0, sp, #4 - bl CPS_SocRead - ldr r1, [sp, #4] - mov r6, r0 - cmp r1, #0xf0 - bls _0220D2BC - ldrb r0, [r6] - cmp r0, #2 - bne _0220D2BC - ldrh r3, [r6, #6] - ldrh r2, [r6, #4] - mov r0, r3, lsl #8 - mov r1, r2, lsl #8 - orr r2, r1, r2, asr #8 - orr r1, r0, r3, asr #8 - mov r0, r2, lsl #0x10 - mov r1, r1, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, r1, lsr #0x10 - orr r1, r0, r2, lsl #16 - ldr r0, [sp] - cmp r0, r1 - bne _0220D2BC - ldr r1, _0220D304 ; =0x0221E2D8 - add r0, r6, #0x1c - bl ov4_022093B0 - cmp r0, #0 - bne _0220D2BC - ldrb r3, [r6, #0x10] - ldrb r2, [r6, #0x11] - ldrb r1, [r6, #0x12] - ldrb r0, [r6, #0x13] - orr r3, r2, r3, lsl #8 - ldrb r2, [r6, #0xec] - orr r1, r0, r1, lsl #8 - mov r0, r3, lsl #0x10 - mov r1, r1, lsl #0x10 - mov r5, r0, lsr #0x10 - mov r0, r1, lsr #0x10 - cmp r2, #0x63 - orr r2, r0, r5, lsl #16 - ldreqb r0, [r6, #0xed] - ldr r3, [sp, #4] - mov r5, #3 - cmpeq r0, #0x82 - ldreqb r0, [r6, #0xee] - add r1, r6, r3 - cmpeq r0, #0x53 - ldreqb r0, [r6, #0xef] - addeq r3, r6, #0xf0 - cmpeq r0, #0x63 - bne _0220D2BC - mov r0, #0 - mov sb, #2 - mov sl, #1 - ldr ip, _0220D308 ; =0x0221DDF0 - b _0220D2A8 -_0220D0DC: - cmp r6, #0 - beq _0220D2A8 - cmp r6, #0x33 - bgt _0220D118 - bge _0220D210 - cmp r6, #6 - bgt _0220D29C - cmp r6, #1 - blt _0220D29C - beq _0220D134 - cmp r6, #3 - beq _0220D168 - cmp r6, #6 - beq _0220D19C - b _0220D29C -_0220D118: - cmp r6, #0x35 - bgt _0220D128 - beq _0220D244 - b _0220D29C -_0220D128: - cmp r6, #0x36 - beq _0220D26C - b _0220D29C -_0220D134: - ldrb lr, [r3, #1] - ldrb r8, [r3, #2] - ldrb r7, [r3, #3] - ldrb r6, [r3, #4] - orr r8, r8, lr, lsl #8 - mov r8, r8, lsl #0x10 - orr r6, r6, r7, lsl #8 - mov r6, r6, lsl #0x10 - mov r7, r8, lsr #0x10 - mov r6, r6, lsr #0x10 - orr r6, r6, r7, lsl #16 - str r6, [ip, #0x1c] - b _0220D29C -_0220D168: - ldrb lr, [r3, #1] - ldrb r8, [r3, #2] - ldrb r7, [r3, #3] - ldrb r6, [r3, #4] - orr r8, r8, lr, lsl #8 - mov r8, r8, lsl #0x10 - orr r6, r6, r7, lsl #8 - mov r6, r6, lsl #0x10 - mov r7, r8, lsr #0x10 - mov r6, r6, lsr #0x10 - orr r6, r6, r7, lsl #16 - str r6, [ip, #0x2c] - b _0220D29C -_0220D19C: - ldrb r6, [r3] - cmp r6, #8 - strlo r0, [ip, #0x64] - blo _0220D1DC - ldrb lr, [r3, #5] - ldrb r8, [r3, #6] - ldrb r7, [r3, #7] - ldrb r6, [r3, #8] - orr r8, r8, lr, lsl #8 - mov r8, r8, lsl #0x10 - orr r6, r6, r7, lsl #8 - mov r6, r6, lsl #0x10 - mov r7, r8, lsr #0x10 - mov r6, r6, lsr #0x10 - orr r6, r6, r7, lsl #16 - str r6, [ip, #0x64] -_0220D1DC: - ldrb lr, [r3, #1] - ldrb r8, [r3, #2] - ldrb r7, [r3, #3] - ldrb r6, [r3, #4] - orr r8, r8, lr, lsl #8 - mov r8, r8, lsl #0x10 - orr r6, r6, r7, lsl #8 - mov r6, r6, lsl #0x10 - mov r7, r8, lsr #0x10 - mov r6, r6, lsr #0x10 - orr r6, r6, r7, lsl #16 - str r6, [ip, #0x60] - b _0220D29C -_0220D210: - ldrb lr, [r3, #1] - ldrb r8, [r3, #2] - ldrb r7, [r3, #3] - ldrb r6, [r3, #4] - orr r8, r8, lr, lsl #8 - mov r8, r8, lsl #0x10 - orr r6, r6, r7, lsl #8 - mov r6, r6, lsl #0x10 - mov r7, r8, lsr #0x10 - mov r6, r6, lsr #0x10 - orr r6, r6, r7, lsl #16 - str r6, [ip, #0x4c] - b _0220D29C -_0220D244: - ldrb r6, [r3, #1] - cmp r6, #2 - beq _0220D260 - cmp r6, #5 - moveq r5, sb - streq r2, [ip, #0x50] - b _0220D29C -_0220D260: - mov r5, sl - str r2, [ip, #0x34] - b _0220D29C -_0220D26C: - ldrb r8, [r3, #1] - ldrb r7, [r3, #2] - ldrb r6, [r3, #3] - ldrb lr, [r3, #4] - orr r7, r7, r8, lsl #8 - mov r7, r7, lsl #0x10 - orr r6, lr, r6, lsl #8 - mov r6, r6, lsl #0x10 - mov r7, r7, lsr #0x10 - mov r6, r6, lsr #0x10 - orr r6, r6, r7, lsl #16 - str r6, [ip, #0x20] -_0220D29C: - ldrb r6, [r3] - add r6, r6, #1 - add r3, r3, r6 -_0220D2A8: - cmp r3, r1 - bhs _0220D2BC - ldrb r6, [r3], #1 - cmp r6, #0xff - bne _0220D0DC -_0220D2BC: - ldr r0, [sp, #4] - bl CPS_SocConsume -_0220D2C4: - ldr r0, _0220D308 ; =0x0221DDF0 - ldr r0, [r0, #0x48] - blx r0 - cmp r0, #0 - beq _0220D2F8 - cmp r5, #0 - bne _0220D2F8 - bl OS_GetTick - mov r0, r0, lsr #0x10 - orr r0, r0, r1, lsl #16 - sub r0, r0, r4 - cmp r0, fp - blt _0220CFE4 -_0220D2F8: - mov r0, r5 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0220D304: .word Unk_ov4_0221E2D8 -_0220D308: .word Unk_ov4_0221DDF0 - arm_func_end ov4_0220CFBC - - arm_func_start ov4_0220D30C -ov4_0220D30C: ; 0x0220D30C - stmfd sp!, {r3, r4, r5, lr} - bl CPS_SocUse - bl CPS_SocDatagramMode - mov r1, #0x43 - sub r2, r1, #0x44 - mov r0, #0x44 - bl CPS_SocBind - mov r5, #0 -_0220D32C: - bl ov4_0220CDF0 - mov r1, r5 - bl ov4_0220CFBC - mov r4, r0 - cmp r4, #1 - beq _0220D350 - add r5, r5, #1 - cmp r5, #4 - blt _0220D32C -_0220D350: - bl CPS_SocRelease - cmp r4, #1 - moveq r0, #1 - movne r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov4_0220D30C - - arm_func_start ov4_0220D364 -ov4_0220D364: ; 0x0220D364 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r4, r1 - mov r5, r0 - bl CPS_SocUse - bl CPS_SocDatagramMode - cmp r4, #1 - mov r0, #0x44 - bne _0220D398 - ldr r1, _0220D45C ; =0x0221DDF0 - ldr r2, [r1, #0x20] - mov r1, #0x43 - bl CPS_SocBind - b _0220D3A4 -_0220D398: - mov r1, #0x43 - sub r2, r1, #0x44 - bl CPS_SocBind -_0220D3A4: - mov r7, #0 -_0220D3A8: - mov r0, r4 - bl ov4_0220CEB4 - mov r1, r7 - bl ov4_0220CFBC - movs r6, r0 - bne _0220D3CC - add r7, r7, #1 - cmp r7, #4 - blt _0220D3A8 -_0220D3CC: - bl CPS_SocRelease - cmp r6, #2 - bne _0220D400 - ldr r1, _0220D45C ; =0x0221DDF0 - mov r0, #1 - ldr r2, [r1, #0x4c] - mov r2, r2, lsr #1 - str r2, [r5, #0] - ldr r2, [r1, #0x4c] - add r2, r2, r2, lsl #1 - mov r2, r2, lsr #3 - str r2, [r1, #0x38] - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0220D400: - ldr r0, _0220D45C ; =0x0221DDF0 - cmp r4, #1 - ldr r1, [r0, #0x38] - mov r1, r1, lsr #1 - str r1, [r0, #0x38] - str r1, [r5, #0] - beq _0220D428 - cmp r4, #2 - beq _0220D448 - b _0220D454 -_0220D428: - cmp r1, #0x3c - bhs _0220D454 - mov r1, #1 - str r1, [r5, #0] - ldr r1, [r0, #0x4c] - mov r1, r1, lsr #3 - str r1, [r0, #0x38] - b _0220D454 -_0220D448: - cmp r1, #0x3c - movlo r0, #1 - strlo r0, [r5] -_0220D454: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_0220D45C: .word Unk_ov4_0221DDF0 - arm_func_end ov4_0220D364 - - arm_func_start ov4_0220D460 -ov4_0220D460: ; 0x0220D460 - stmfd sp!, {r4, lr} - bl CPS_SocUse - bl CPS_SocDatagramMode - ldr r1, _0220D4C4 ; =0x0221DDF0 - mov r0, #0x44 - ldr r2, [r1, #0x20] - mov r1, #0x43 - bl CPS_SocBind - ldr r4, _0220D4C8 ; =0x0221E346 - mov r1, #7 - mov r0, r4 - mov r2, #0 - bl ov4_0220CC30 - mov r1, #0xff - add r2, r0, #1 - strb r1, [r0] - mov r0, #0 - mov r1, #0x12c - sub r3, r2, r4 - bl ov4_0220CDBC - sub r1, r0, r4 - mov r0, r4 - bl CPS_SocWrite - bl CPS_SocRelease - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0220D4C4: .word Unk_ov4_0221DDF0 -_0220D4C8: .word 0x0221E346 - arm_func_end ov4_0220D460 - - arm_func_start ov4_0220D4CC -ov4_0220D4CC: ; 0x0220D4CC - ldrb r2, [r0], #1 - cmp r2, #0 - bxeq lr -_0220D4D8: - and r1, r2, #0xc0 - cmp r1, #0xc0 - addeq r0, r0, #1 - bxeq lr - add r0, r0, r2 - ldrb r2, [r0], #1 - cmp r2, #0 - bne _0220D4D8 - bx lr - arm_func_end ov4_0220D4CC - - arm_func_start ov4_0220D4FC -ov4_0220D4FC: ; 0x0220D4FC - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x40 - mov sb, r2 - mov r2, sb, lsl #8 - mov sl, r1 - orr r1, r2, sb, asr #8 - strh r1, [sp, #4] - cmp sl, #0x20 - mov r6, #0 - movne r1, #1 - strneh r1, [sp, #6] - ldreq r1, _0220D79C ; =0x00001001 - strh r6, [sp, #0xa] - streqh r1, [sp, #6] - mov r1, #0x100 - strh r1, [sp, #8] - add r1, sp, #0x10 - strh r6, [sp, #0xc] - strh r6, [sp, #0xe] - str r6, [sp] - ldrb r7, [r0], #1 - mov fp, r3 - ldr r8, [sp, #0x68] - add r2, r1, #1 - cmp r7, #0 - beq _0220D5C4 - mov r4, r6 - add r5, sp, #4 - mov r3, r6 -_0220D570: - cmp r7, #0x2e - beq _0220D5A0 - sub r6, r2, r5 - cmp r6, #0x3c - addge sp, sp, #0x40 - mvnge r0, #0 - ldmgeia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r6, r4, #1 - mov r4, r6 - str r6, [sp] - strb r7, [r2], #1 - b _0220D5B8 -_0220D5A0: - strb r6, [r1] - mov r1, r2 - mov r4, r3 - mov r6, r3 - str r3, [sp] - add r2, r2, #1 -_0220D5B8: - ldrb r7, [r0], #1 - cmp r7, #0 - bne _0220D570 -_0220D5C4: - ldr r0, [sp] - mov r3, #0 - strb r0, [r1] - strb r3, [r2] - mov r0, sl, lsr #8 - strb r0, [r2, #1] - strb sl, [r2, #2] - strb r3, [r2, #3] - mov r3, #1 - add r0, sp, #4 - add r1, r2, #5 - sub r1, r1, r0 - strb r3, [r2, #4] - bl CPS_SocWrite - mov r4, #0 - bl OS_GetTick - mov r5, r0, lsr #0x10 - orr r5, r5, r1, lsl #16 - b _0220D75C -_0220D610: - bl CPS_SocGetLength - cmp r0, #0 - bne _0220D624 - bl ov4_02208DF0 - b _0220D75C -_0220D624: - add r0, sp, #0 - bl CPS_SocRead - ldr r1, [sp] - cmp r1, #0xc - bls _0220D754 - ldrh r3, [r0] - mov r2, r3, lsl #8 - orr r2, r2, r3, asr #8 - mov r2, r2, lsl #0x10 - cmp sb, r2, lsr #16 - bne _0220D754 - ldrb r2, [r0, #3] - and r2, r2, #0xf - cmp r2, #3 - mvneq r4, #0 - beq _0220D754 - cmp r2, #0 - bne _0220D754 - ldrb r3, [r0, #4] - ldrb r2, [r0, #5] - add r6, r0, r1 - add r0, r0, #0xc - orr r1, r2, r3, lsl #8 - mov r1, r1, lsl #0x10 - movs r1, r1, lsr #0x10 - sub r7, r1, #1 - beq _0220D6A4 -_0220D690: - bl ov4_0220D4CC - cmp r7, #0 - add r0, r0, #4 - sub r7, r7, #1 - bne _0220D690 -_0220D6A4: - cmp r0, r6 - bhs _0220D754 -_0220D6AC: - bl ov4_0220D4CC - ldrb r7, [r0, #8] - ldrb r1, [r0, #9] - ldrb r3, [r0] - ldrb r2, [r0, #1] - orr r1, r1, r7, lsl #8 - mov r1, r1, lsl #0x10 - orr r2, r2, r3, lsl #8 - mov r2, r2, lsl #0x10 - cmp sl, r2, lsr #16 - mov r2, r1, lsr #0x10 - bne _0220D744 - cmp sl, #0xc - beq _0220D724 - add r4, r0, #8 - add r0, r0, #6 - add r6, r4, r2 - add r1, r0, r2 - ldrb r3, [r0, r2] - ldrb r0, [r1, #1] - ldrb r2, [r4, r2] - ldrb r1, [r6, #1] - orr r0, r0, r3, lsl #8 - mov r0, r0, lsl #0x10 - orr r1, r1, r2, lsl #8 - mov r1, r1, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, r1, lsr #0x10 - orr r4, r0, r2, lsl #16 - b _0220D754 -_0220D724: - cmp r2, r8 - movhi r4, #2 - bhi _0220D754 - mov r1, fp - add r0, r0, #0xa - bl MI_CpuCopy8 - mov r4, #1 - b _0220D754 -_0220D744: - add r1, r2, #0xa - add r0, r0, r1 - cmp r0, r6 - blo _0220D6AC -_0220D754: - ldr r0, [sp] - bl CPS_SocConsume -_0220D75C: - ldr r0, _0220D7A0 ; =0x0221DDF0 - ldr r0, [r0, #0x48] - blx r0 - cmp r0, #0 - beq _0220D790 - cmp r4, #0 - bne _0220D790 - bl OS_GetTick - mov r0, r0, lsr #0x10 - orr r0, r0, r1, lsl #16 - sub r0, r0, r5 - cmp r0, #0xf - blt _0220D610 -_0220D790: - mov r0, r4 - add sp, sp, #0x40 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0220D79C: .word 0x00001001 -_0220D7A0: .word Unk_ov4_0221DDF0 - arm_func_end ov4_0220D4FC - - arm_func_start ov4_0220D7A4 -ov4_0220D7A4: ; 0x0220D7A4 - str r0, [r1, #0] - mov ip, #0 - mov r2, #0xa -_0220D7B0: - ldrb r3, [r0] - sub r3, r3, #0x30 - and r3, r3, #0xff - cmp r3, #9 - mlals ip, r2, ip, r3 - addls r0, r0, #1 - strls r0, [r1] - bls _0220D7B0 - mov r0, ip - bx lr - arm_func_end ov4_0220D7A4 - - arm_func_start ov4_0220D7D8 -ov4_0220D7D8: ; 0x0220D7D8 - stmfd sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - mov r5, #0 - mov r8, r0 - mov r7, r1 - mov r6, r5 - add r4, sp, #0 -_0220D7F4: - mov r0, r8 - mov r1, r4 - bl ov4_0220D7A4 - ldr r2, [sp] - cmp r8, r2 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} - mov r8, r2 - cmp r0, #0xff - bhi _0220D848 - cmp r6, #3 - ldrneb r1, [r2] - addne r8, r2, #1 - cmpne r1, #0x2e - bne _0220D848 - cmp r6, #3 - bne _0220D854 - ldrb r1, [r8] - cmp r1, #0 - beq _0220D854 -_0220D848: - add sp, sp, #4 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_0220D854: - add r6, r6, #1 - cmp r6, #4 - orr r5, r0, r5, lsl #8 - blt _0220D7F4 - str r5, [r7, #0] - mov r0, #1 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - arm_func_end ov4_0220D7D8 - - arm_func_start ov4_0220D874 -ov4_0220D874: ; 0x0220D874 - stmfd sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - movs r5, r1 - mov r6, r0 - mov r4, r2 - addeq sp, sp, #4 - mvneq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, pc} - bl CPS_SocUse - bl CPS_SocDatagramMode - mov r2, r5 - mov r0, #0 - mov r1, #0x35 - bl CPS_SocBind - mov r0, r6 - mov r2, r4 - mov r3, #0 - str r3, [sp] - mov r1, #1 - bl ov4_0220D4FC - mov r4, r0 - bl CPS_SocRelease - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end ov4_0220D874 - - arm_func_start CPS_Resolve -CPS_Resolve: ; 0x0220D8D8 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc - ldr r2, _0220DA08 ; =0x0221DDF0 - mov r6, #0 - ldr r5, [r2, #0x70] - ldr r3, [r2, #0x68] - ldr r1, [r2, #0x6c] - umull r8, r7, r5, r3 - ldr sb, [r2, #0x78] - mla r7, r5, r1, r7 - ldr r4, [r2, #0x74] - adds fp, sb, r8 - mla r7, r4, r3, r7 - ldr r8, [r2, #0x7c] - umull r3, r1, r5, fp - adc sl, r8, r7 - mla r1, r5, sl, r1 - str fp, [r2, #0x68] - mov r7, r6, lsl #0x10 - adds r5, sb, r3 - mla r1, r4, fp, r1 - str sl, [r2, #0x6c] - orr r7, r7, sl, lsr #16 - adc r4, r8, r1 - mov r3, r6, lsl #0x10 - str r5, [r2, #0x68] - orr r3, r3, r4, lsr #16 - add r1, sp, #8 - mov sl, r0 - strh r7, [sp, #2] - str r4, [r2, #0x6c] - strh r3, [sp, #4] - bl ov4_0220D7D8 - cmp r0, #0 - ldrne r0, [sp, #8] - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, #1 - mov fp, r6 - ldr r7, _0220DA0C ; =0x0221DE50 - strb r0, [sp] - strb r0, [sp, #1] - add r6, sp, #2 - mov r5, fp - mvn r4, #0 -_0220D98C: - mov r8, #0 - add sb, sp, #0 -_0220D994: - ldrb r0, [sb] - cmp r0, #0 - beq _0220D9CC - mov r0, r8, lsl #1 - ldrh r2, [r6, r0] - ldr r1, [r7, r8, lsl #2] - mov r0, sl - bl ov4_0220D874 - cmp r0, #0 - str r0, [sp, #8] - cmpne r0, r4 - bne _0220D9E8 - cmp r0, r4 - streqb r5, [sb] -_0220D9CC: - add r8, r8, #1 - cmp r8, #2 - add sb, sb, #1 - blt _0220D994 - add fp, fp, #1 - cmp fp, #3 - blt _0220D98C -_0220D9E8: - ldr r1, [sp, #8] - mvn r0, #0 - cmp r1, r0 - moveq r0, #0 - streq r0, [sp, #8] - ldr r0, [sp, #8] - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0220DA08: .word Unk_ov4_0221DDF0 -_0220DA0C: .word CPSDnsIp - arm_func_end CPS_Resolve - - - .section .version, 4,1,2 - - .global Unk_02000C58 -Unk_02000C58: ; 0x02000C58 - .asciz "[SDK+UBIQUITOUS:CPS]" - - - .data - - - .global Unk_ov4_0221A190 -Unk_ov4_0221A190: ; 0x0221A190 - .incbin "incbin/network.bin", 0x0, 0x4 - - .global Unk_ov4_0221A194 -Unk_ov4_0221A194: ; 0x0221A194 - .incbin "incbin/network.bin", 0x4, 0xC - 0x4 - - .global Unk_ov4_0221A19C -Unk_ov4_0221A19C: ; 0x0221A19C - .incbin "incbin/network.bin", 0xC, 0x18 - 0xC - - .global Unk_ov4_0221A1A8 -Unk_ov4_0221A1A8: ; 0x0221A1A8 - .incbin "incbin/network.bin", 0x18, 0xB - - - - .bss - - - .global Unk_ov4_0221DDF0 -Unk_ov4_0221DDF0: ; 0x0221DDF0 - .space 0x1 - - .global Unk_ov4_0221DDF1 -Unk_ov4_0221DDF1: ; 0x0221DDF1 - .space 0x1 - - .global Unk_ov4_0221DDF2 -Unk_ov4_0221DDF2: ; 0x0221DDF2 - .space 0x2 - - .global Unk_ov4_0221DDF4 -Unk_ov4_0221DDF4: ; 0x0221DDF4 - .space 0x2 - - .global Unk_ov4_0221DDF6 -Unk_ov4_0221DDF6: ; 0x0221DDF6 - .space 0x2 - - .global Unk_ov4_0221DDF8 -Unk_ov4_0221DDF8: ; 0x0221DDF8 - .space 0x4 - - .global Unk_ov4_0221DDFC -Unk_ov4_0221DDFC: ; 0x0221DDFC - .space 0x4 - - .global Unk_ov4_0221DE00 -Unk_ov4_0221DE00: ; 0x0221DE00 - .space 0x4 - - .global Unk_ov4_0221DE04 -Unk_ov4_0221DE04: ; 0x0221DE04 - .space 0x4 - - .global Unk_ov4_0221DE08 -Unk_ov4_0221DE08: ; 0x0221DE08 - .space 0x4 - - .global CPSNetMask -CPSNetMask: ; 0x0221DE0C - .space 0x4 - - .global Unk_ov4_0221DE10 -Unk_ov4_0221DE10: ; 0x0221DE10 - .space 0x4 - - .global Unk_ov4_0221DE14 -Unk_ov4_0221DE14: ; 0x0221DE14 - .space 0x4 - - .global Unk_ov4_0221DE18 -Unk_ov4_0221DE18: ; 0x0221DE18 - .space 0x4 - - .global CPSGatewayIp -CPSGatewayIp: ; 0x0221DE1C - .space 0x4 - - .global Unk_ov4_0221DE20 -Unk_ov4_0221DE20: ; 0x0221DE20 - .space 0x4 - - .global Unk_ov4_0221DE24 -Unk_ov4_0221DE24: ; 0x0221DE24 - .space 0x4 - - .global Unk_ov4_0221DE28 -Unk_ov4_0221DE28: ; 0x0221DE28 - .space 0x4 - - .global Unk_ov4_0221DE2C -Unk_ov4_0221DE2C: ; 0x0221DE2C - .space 0x4 - - .global Unk_ov4_0221DE30 -Unk_ov4_0221DE30: ; 0x0221DE30 - .space 0x4 - - .global Unk_ov4_0221DE34 -Unk_ov4_0221DE34: ; 0x0221DE34 - .space 0x4 - - .global Unk_ov4_0221DE38 -Unk_ov4_0221DE38: ; 0x0221DE38 - .space 0x4 - - .global Unk_ov4_0221DE3C -Unk_ov4_0221DE3C: ; 0x0221DE3C - .space 0x4 - - .global CPSMyIp -CPSMyIp: ; 0x0221DE40 - .space 0x4 - - .global Unk_ov4_0221DE44 -Unk_ov4_0221DE44: ; 0x0221DE44 - .space 0x4 - - .global Unk_ov4_0221DE48 -Unk_ov4_0221DE48: ; 0x0221DE48 - .space 0x4 - - .global Unk_ov4_0221DE4C -Unk_ov4_0221DE4C: ; 0x0221DE4C - .space 0x4 - - .global CPSDnsIp -CPSDnsIp: ; 0x0221DE50 - .space 0x8 - - .global Unk_ov4_0221DE58 -Unk_ov4_0221DE58: ; 0x0221DE58 - .space 0x18 - - .global Unk_ov4_0221DE70 -Unk_ov4_0221DE70: ; 0x0221DE70 - .space 0x60 - - .global Unk_ov4_0221DED0 -Unk_ov4_0221DED0: ; 0x0221DED0 - .space 0x64 - - .global Unk_ov4_0221DF34 -Unk_ov4_0221DF34: ; 0x0221DF34 - .space 0x64 - - .global Unk_ov4_0221DF98 -Unk_ov4_0221DF98: ; 0x0221DF98 - .space 0xC0 - - .global Unk_ov4_0221E058 -Unk_ov4_0221E058: ; 0x0221E058 - .space 0xC0 - - .global Unk_ov4_0221E118 -Unk_ov4_0221E118: ; 0x0221E118 - .space 0x1C0 - - .global Unk_ov4_0221E2D8 -Unk_ov4_0221E2D8: ; 0x0221E2D8 - .space 0x8 - - .global Unk_ov4_0221E2E0 -Unk_ov4_0221E2E0: ; 0x0221E2E0 - .space 0x3C - - .global Unk_ov4_0221E31C -Unk_ov4_0221E31C: ; 0x0221E31C - .space 0x180 - - .global Unk_ov4_0221E49C -Unk_ov4_0221E49C: ; 0x0221E49C - .space 0x184 - - .global Unk_ov4_0221E620 -Unk_ov4_0221E620: ; 0x0221E620 - .space 0x800 - - .global Unk_ov4_0221EE20 -Unk_ov4_0221EE20: ; 0x0221EE20 - .space 0x800 - diff --git a/subprojects/NitroWiFi/libraries/cps/meson.build b/subprojects/NitroWiFi/libraries/cps/meson.build deleted file mode 100644 index 4f3da69cec..0000000000 --- a/subprojects/NitroWiFi/libraries/cps/meson.build +++ /dev/null @@ -1,11 +0,0 @@ -libcps_srcs = files('asm/network.s') - -libcps = static_library('cps', - sources: libcps_srcs, - c_args: [c_args, sdk_args], - nasm_args: asm_args, - include_directories: public_includes, - pic: false -) - -nitrowifi_libs += libcps \ No newline at end of file diff --git a/subprojects/NitroWiFi/libraries/meson.build b/subprojects/NitroWiFi/libraries/meson.build deleted file mode 100644 index a1245da9c3..0000000000 --- a/subprojects/NitroWiFi/libraries/meson.build +++ /dev/null @@ -1,5 +0,0 @@ -subdir('cps') -subdir('soc') -subdir('ssl') -subdir('stubs') -subdir('wcm') diff --git a/subprojects/NitroWiFi/libraries/soc/meson.build b/subprojects/NitroWiFi/libraries/soc/meson.build deleted file mode 100644 index eb502c8d87..0000000000 --- a/subprojects/NitroWiFi/libraries/soc/meson.build +++ /dev/null @@ -1,32 +0,0 @@ -libsoc_srcs = files( - 'src/socl_startup.c', - 'src/socl_command.c', - 'src/socl_create.c', - 'src/socl_listen_accept.c', - 'src/socl_bind.c', - 'src/socl_read.c', - 'src/socl_write.c', - 'src/socl_shutdown.c', - 'src/socl_close.c', - 'src/socl_cleanup.c', - 'src/socl_resolve.c', - 'src/socl_poll.c', - 'src/socl_const.c', - 'src/socl_misc.c', - 'src/socl_list.c', - 'src/soc.c', - 'src/socl_ssl.c' -) - -libsoc_internal_includes = [include_directories('src/include'), include_directories('../wcm/src/include')] - -libsoc = static_library('soc', - sources: [libsoc_srcs], - c_args: [c_args, sdk_args], - include_directories: [public_includes, libsoc_internal_includes], - dependencies: nitrosdk_dep, - c_pch: nitro_pch, - pic: false -) - -nitrowifi_libs += libsoc diff --git a/subprojects/NitroWiFi/libraries/soc/src/include/errtable.h b/subprojects/NitroWiFi/libraries/soc/src/include/errtable.h deleted file mode 100644 index 5a258fe9f3..0000000000 --- a/subprojects/NitroWiFi/libraries/soc/src/include/errtable.h +++ /dev/null @@ -1,15 +0,0 @@ -{ SOC_ENOMEM, "ENOMEM" }, -{ SOC_EMFILE, "EMFILE" }, -{ SOC_ECONNRESET, "ECONNRESET" }, -{ SOC_ECANCELED, "ECANCELED" }, -{ SOC_EALREADY, "EALREADY" }, -{ SOC_ENOTCONN, "ENOTCONN" }, -{ SOC_ENETRESET, "ENETRESET" }, -{ SOC_EINVAL, "EINVAL" }, -{ SOC_ENOBUFS, "ENOBUFS" }, -{ SOC_ETIMEDOUT, "ETIMEDOUT" }, -{ SOC_EWOULDBLOCK, "EWOULDBLOCK" }, -{ SOC_EAGAIN, "EAGAIN" }, -{ SOC_EINPROGRESS, "EINPROGRESS" }, -{ SOC_EISCONN, "EISCONN" }, -{ SOC_EMSGSIZE, "EMSGSIZE" } \ No newline at end of file diff --git a/subprojects/NitroWiFi/libraries/soc/src/meson.build b/subprojects/NitroWiFi/libraries/soc/src/meson.build deleted file mode 100644 index dac6c70a99..0000000000 --- a/subprojects/NitroWiFi/libraries/soc/src/meson.build +++ /dev/null @@ -1,21 +0,0 @@ -libsoc_srcs = files( - 'socl_startup.c', - 'socl_command.c', - 'socl_create.c', - 'socl_listen_accept.c', - 'socl_bind.c', - 'socl_read.c', - 'socl_write.c', - 'socl_shutdown.c', - 'socl_close.c', - 'socl_cleanup.c', - 'socl_resolve.c', - 'socl_poll.c', - 'socl_const.c', - 'socl_misc.c', - 'socl_list.c', - 'soc.c', - 'socl_ssl.c' -) - -libsoc_internal_includes = [include_directories('include'), include_directories('../../wcm/src/include')] diff --git a/subprojects/NitroWiFi/libraries/soc/src/soc.c b/subprojects/NitroWiFi/libraries/soc/src/soc.c deleted file mode 100644 index 5c7f541a2f..0000000000 --- a/subprojects/NitroWiFi/libraries/soc/src/soc.c +++ /dev/null @@ -1,441 +0,0 @@ -#include -#include - -const u8 SOCAddrAny[SOC_ALEN] = {0, 0, 0, 0}; -const u8 SOCAddrLoopback[SOC_ALEN] = {127, 0, 0, 1}; -const u8 SOCAddrLimited[SOC_ALEN] = {255, 255, 255, 255}; - -int SOC_Socket (int pf, int type, int protocol) { - (void)pf; - (void)protocol; - - SDK_ASSERT(pf == SOC_PF_INET); - SDK_ASSERT(type == SOC_SOCK_STREAM || type == SOC_SOCK_DGRAM); - SDK_ASSERT(protocol == 0); - - return (type == SOC_SOCK_STREAM) ? SOCL_TcpSocket() : SOCL_UdpSocket(); -} - -int SOC_Bind (int s, const void * sockAddr) { - const SOCSockAddrIn * addr = (const SOCSockAddrIn *)sockAddr; - - SDK_ASSERT(addr != NULL); - SDK_ASSERT(addr->len == sizeof(SOCSockAddrIn)); - SDK_ASSERT(addr->family == SOC_PF_INET); - return SOCL_Bind(s, SOC_NtoHs(addr->port)); -} - -int SOC_Connect (int s, const void * sockAddr) { - const SOCSockAddrIn * addr = (const SOCSockAddrIn *)sockAddr; - - SDK_ASSERT(addr != NULL); - SDK_ASSERT(addr->len == sizeof(SOCSockAddrIn)); - SDK_ASSERT(addr->family == SOC_PF_INET); - return SOCL_Connect(s, SOC_NtoHs(addr->port), SOC_NtoHl(addr->addr.addr)); -} - -int SOC_Read (int s, void * buf, int len) { - return SOCL_ReadFrom(s, buf, len, NULL, NULL, 0); -} - -int SOC_Recv (int s, void * buf, int len, int flags) { - return SOCL_ReadFrom(s, buf, len, NULL, NULL, flags); -} - -int SOC_RecvFrom (int s, void * buf, int len, int flags, void * sockFrom) { - u16 port; - SOCLInAddr ip; - int result; - - result = SOCL_ReadFrom(s, buf, len, &port, &ip, flags); - - if (result >= 0 && sockFrom) { - SOCSockAddrIn * addr = (SOCSockAddrIn *)sockFrom; - addr->port = SOC_HtoNs(port); - addr->addr.addr = SOC_HtoNl(ip); - } - - return result; -} - -int SOC_Write (int s, const void * buf, int len) { - return SOCL_WriteTo(s, buf, len, 0, (SOCLInAddr)0, 0); -} - -int SOC_Send (int s, const void * buf, int len, int flags) { - return SOCL_WriteTo(s, buf, len, 0, (SOCLInAddr)0, flags); -} - -int SOC_SendTo (int s, const void * buf, int len, int flags, const void * sockTo) { - SOCSockAddrIn * addr; - u16 port; - SOCLInAddr ip; - - if (sockTo) { - addr = (SOCSockAddrIn *)sockTo; - port = SOC_NtoHs(addr->port); - ip = SOC_NtoHl(addr->addr.addr); - } else { - port = 0; - ip = 0; - } - - return SOCL_WriteTo(s, buf, len, port, ip, flags); -} - -int SOC_Shutdown (int s, int how) { - SDK_ASSERT(how == SOC_SHUT_RDWR); - (void)how; - return SOCL_Shutdown(s); -} - -int SOC_Close (int s) { - return SOCL_Close(s); -} - -SOCHostEnt * SOC_GetHostByName (const char * name) { - static SOCHostEnt hostent; - static u8 * hostAddrList[2]; - static SOCLInAddr hostip; - static char entName[SOC_MAXDNAME + 1]; - u32 h; - - h = (u32)SOCL_Resolve(name); - if (h == 0) { - return NULL; - } - - MI_CpuClear8(entName, sizeof(entName)); - - (void)STD_CopyLString(&entName[0], name, SOC_MAXDNAME + 1); - - hostent.name = &entName[0]; - hostent.aliases = NULL; - hostent.addrType = SOC_PF_INET; - hostent.length = sizeof(SOCLInAddr); - hostent.addrList = hostAddrList; - hostAddrList[0] = (u8 *)&hostip; - hostAddrList[1] = NULL; - hostip = SOC_HtoNl(h); - - return &hostent; -} - -SOCHostEnt * SOC_GetHostByAddr (const void * addr, int len, int type) { - static SOCHostEnt hostent; - static u8 * hostAddrList[2]; - static SOCLInAddr hostip; - static char entName[SOC_MAXDNAME + 1]; - - SDK_ASSERT(type == SOC_PF_INET); - SDK_ASSERT(len == sizeof(SOCLInAddr)); - - (void)SOC_InetNtoP(SOC_AF_INET, addr, &entName[0], SOC_MAXDNAME + 1); - - hostent.name = &entName[0]; - hostent.aliases = NULL; - hostent.addrType = (s16)type; - hostent.length = (s16)len; - hostent.addrList = hostAddrList; - hostAddrList[0] = (u8 *)&hostip; - hostAddrList[1] = NULL; - hostip = *(SOCLInAddr *)addr; - - return &hostent; -} - -int SOC_GetSockName (int s, void * sockAddr) { - SOCSockAddrIn * addr = (SOCSockAddrIn *)sockAddr; - u32 local_ip; - u32 local_port; - - if (!s) { - return SOC_ENETRESET; - } - - local_ip = (u32)SOCL_GetHostID(); - local_port = (u32)SOCL_GetHostPort(s); - - if (local_ip == 0) { - local_port = 0; - } - - addr->len = sizeof(SOCSockAddrIn); - addr->family = SOC_PF_INET; - addr->port = SOC_HtoNs(local_port); - addr->addr.addr = SOC_HtoNl(local_ip); - - return 0; -} - -long SOC_GetHostID (void) { - u32 hostid = (u32)SOCL_GetHostID(); - - return (long)SOC_HtoNl(hostid); -} - -int SOC_SetResolver (const SOCInAddr * dns1, const SOCInAddr * dns2) { - return SOCL_SetResolver(SOC_NtoHl(dns1->addr), SOC_NtoHl(dns2->addr)); -} - -int SOC_GetResolver (SOCInAddr * dns1, SOCInAddr * dns2) { - u32 dns1a, dns2a; - int result; - - result = SOCL_GetResolver(&dns1a, &dns2a); - if (result >= 0) { - dns1->addr = SOC_HtoNl(dns1a); - dns2->addr = SOC_HtoNl(dns2a); - } - - return result; -} - -int SOC_Listen (int s, int backlog) { - return SOCL_Listen(s, backlog); -} - -int SOC_Accept (int s, void * sockAddr) { - SOCSockAddrIn * addr = (SOCSockAddrIn *)sockAddr; - u16 remote_port; - SOCLInAddr remote_ip; - int result; - - result = SOCL_Accept(s, &remote_port, &remote_ip); - - if (result >= 0) { - addr->port = SOC_HtoNs(remote_port); - addr->addr.addr = SOC_HtoNl(remote_ip); - } - - return result; -} - -int SOC_Fcntl (int s, int cmd, int mode) { - int t; - - if (!s) { - return -1; - } - - switch (cmd) { - case SOC_F_GETFL: - t = SOCL_IsBlock(s) ? 0 : SOC_O_NONBLOCK; - return (int)t; - - case SOC_F_SETFL: - if (mode & SOC_O_NONBLOCK) { - SOCL_SetNoBlock(s); - } else { - SOCL_SetBlock(s); - } - break; - - default: - SDK_ASSERT(0); - break; - } - - return 0; -} - -static void * (*AllocFunc_SOC) (u32 name, s32 size); -static void * AllocFunc_SOCL (u32 size) { - s32 msize = (s32)(size + sizeof(s32)); - s32 * m = AllocFunc_SOC(0U, msize); - - if (m) { - m[0] = (s32)msize; - m++; - } - - return (void *)m; -} - -static void (*FreeFunc_SOC) (u32 name, void * ptr, s32 size); -static void FreeFunc_SOCL (void * ptr) { - s32 * m = (s32 *)ptr; - - if (m) { - m--; - FreeFunc_SOC(0U, (void *)m, m[0]); - } -} - -int SOC_Startup (const SOCConfig * config) { - static SOCLConfig soclConfig; - - soclConfig.use_dhcp = (config->flag == SOC_FLAG_DHCP) ? TRUE : FALSE; - soclConfig.host_ip.my_ip = SOC_NtoHl(config->addr.addr); - soclConfig.host_ip.net_mask = SOC_NtoHl(config->netmask.addr); - soclConfig.host_ip.gateway_ip = SOC_NtoHl(config->router.addr); - soclConfig.host_ip.dns_ip[0] = SOC_NtoHl(config->dns1.addr); - soclConfig.host_ip.dns_ip[1] = SOC_NtoHl(config->dns2.addr); - soclConfig.alloc = AllocFunc_SOCL; - soclConfig.free = FreeFunc_SOCL; - AllocFunc_SOC = config->alloc; - FreeFunc_SOC = config->free; - soclConfig.cmd_packet_max = SOCL_CMDPACKET_MAX; - soclConfig.mtu = config->mtu; - soclConfig.rwin = config->rwin; - - return SOCL_Startup(&soclConfig); -} - -int SOC_Cleanup (void) { - return SOCL_Cleanup(); -} - -char * SOC_InetNtoA (SOCInAddr in) { - static char buffer[SOC_INET_ADDRSTRLEN]; - - (void)SOC_InetNtoP(SOC_AF_INET, &in.addr, buffer, sizeof(buffer)); - - return buffer; -} - -int SOC_InetAtoN (const char * cp, SOCInAddr * inp) { - u32 h = (u32)SOCL_InetAtoH(cp); - - if (h == 0) { - return FALSE; - } - - inp->addr = SOC_HtoNl(h); - return TRUE; -} - -const char * SOC_InetNtoP (int af, const void * src, char * dst, unsigned len) { - u32 addr32; - u8 addr[4]; - - if (af != SOC_AF_INET) { - return NULL; - } - - if (len < SOC_INET_ADDRSTRLEN) { - return NULL; - } - - MI_CpuCopy8(src, &addr32, sizeof(addr32)); - - SOC_U32to4U8(addr32, addr); - (void)OS_SNPrintf(dst, SOC_INET_ADDRSTRLEN, "%d.%d.%d.%d", addr[3], addr[2], addr[1], addr[0]); - - return (const char *)dst; -} - -int SOC_InetPtoN (int af, const char * src, void * dst) { - u32 h; - u32 addr; - - if (af != SOC_AF_INET) { - return SOC_EAFNOSUPPORT; - } - - h = (u32)SOCL_InetAtoH(src); - - if (h == 0) { - return 1; - } - - addr = SOC_HtoNl(h); - MI_CpuCopy8(&addr, dst, sizeof(addr)); - - return 0; -} - -void SOC_U32to4U8 (u32 adr_u32, u8 * adr_4u8) { - adr_4u8[0] = (u8)((adr_u32 >> 24) & 0xff); - adr_4u8[1] = (u8)((adr_u32 >> 16) & 0xff); - adr_4u8[2] = (u8)((adr_u32 >> 8) & 0xff); - adr_4u8[3] = (u8)((adr_u32 >> 0) & 0xff); -} - -#define SOC_POLLING_INTERVAL 1 -int SOC_Poll (SOCPollFD * fds, unsigned int nfds, OSTick timeout) { - SOCPollFD * fp; - BOOL is_enable_timeout; - s64 time; - int i, num_good; - int status, status_mask; - - is_enable_timeout = (timeout != (OSTick)SOC_INFTIM); - time = (s64)timeout; - - for (;;) { - fp = fds; - num_good = 0; - - for (i = 0; i < nfds; i++) { - status_mask = fp->events | SOC_POLLERR | SOC_POLLHUP | SOC_POLLNVAL; - status = SOCL_GetStatus(fp->fd) & status_mask; - if (status) { - num_good++; - } - - fp->revents = (s16)status; - fp++; - } - - if (num_good > 0 || (is_enable_timeout && time <= 0)) { - break; - } - - OS_Sleep(SOC_POLLING_INTERVAL); - time -= (s64)OS_MilliSecondsToTicks(SOC_POLLING_INTERVAL); - } - - return num_good; -} - -void SOC_GetLinkState (SOCInterface * interface, BOOL * status) { - if (WCM_GetPhase() == WCM_PHASE_DCF) { - *status = TRUE; - } else { - *status = FALSE; - - if (OS_GetProcMode() != OS_PROCMODE_IRQ) { - OS_Sleep(1); - } - } - (void)interface; -} - -s32 SOC_GetConfigError (SOCInterface * interface) { - s32 result = 0; - - if (WCM_GetPhase() == WCM_PHASE_DCF) { - if ((SOCLiDhcpState & SOCL_DHCP_ERROR) == SOCL_DHCP_ERROR) { - result = SOC_IP_ERR_DHCP_TIMEOUT; - } - } else { - result = SOC_IP_ERR_LINK_DOWN; - } - -#ifdef SDK_MY_DEBUG - switch (CPSNoIpReason) { - case CPS_NOIP_REASON_DHCPDISCOVERY: - OS_TPrintf("CPS_NOIP_REASON_DHCPDISCOVERY\n"); - break; - - case CPS_NOIP_REASON_LINKOFF: - OS_TPrintf("CPS_NOIP_REASON_LINKOFF\n"); - break; - - case CPS_NOIP_REASON_LEASETIMEOUT: - OS_TPrintf("CPS_NOIP_REASON_LEASETIMEOUT\n"); - break; - - case CPS_NOIP_REASON_COLLISION: - OS_TPrintf("CPS_NOIP_REASON_COLLISION\n"); - break; - - default: - OS_TPrintf("DEFAULT???\n"); - } -#endif - - (void)interface; - return result; -} diff --git a/subprojects/NitroWiFi/libraries/soc/src/socl_bind.c b/subprojects/NitroWiFi/libraries/soc/src/socl_bind.c deleted file mode 100644 index 363b94f9e8..0000000000 --- a/subprojects/NitroWiFi/libraries/soc/src/socl_bind.c +++ /dev/null @@ -1,125 +0,0 @@ -#include - -static int SOCLi_BindCallBack(void * arg); -static int SOCLi_ExecBindCommand(SOCLSocket * socket); - -int SOCL_Bind (int s, u16 local_port) { - SOCLSocket * socket = (SOCLSocket *)s; - - if (SOCL_SocketIsInvalid(socket)) { - return SOCL_EINVAL; - } - - if (!SOCL_SocketIsCreated(socket)) { - return SOCL_ENETRESET; - } - - if (SOCL_SocketIsConnecting(socket)) { - return SOCL_EALREADY; - } - - socket->local_port = local_port; - - return SOCL_SocketIsUDP(socket) ? SOCLi_ExecBindCommand(socket) : 0; -} - -int SOCLiResultCodeInConnecting = SOCL_EINPROGRESS; -int SOCL_Connect (int s, u16 remote_port, SOCLInAddr remote_ip) { - SOCLSocket * socket = (SOCLSocket *)s; - int result; - - if (SOCL_SocketIsInvalid(socket) || SOCL_SocketIsClosing(socket)) { - return SOCL_EINVAL; - } - - if (!SOCL_SocketIsCreated(socket)) { - return SOCL_ENETRESET; - } - - if (SOCL_SocketIsTCP(socket)) { - if (SOCL_SocketIsConnected(socket)) { - return SOCL_SocketIsBlock(socket) ? SOCL_EISCONN : 0; - } - - if (SOCL_SocketIsConnecting(socket)) { - if (SOCL_SocketIsError(socket)) { - return socket->result; - } else { - return SOCLiResultCodeInConnecting; - } - } - - socket->remote_port = remote_port; - socket->remote_ip = remote_ip; - - result = SOCLi_ExecBindCommand(socket); - - return SOCL_SocketIsBlock(socket) ? result : SOCL_EINPROGRESS; - } else { - socket->remote_port = remote_port; - socket->remote_ip = remote_ip; - return 0; - } -} - -static int SOCLi_ExecBindCommand (SOCLSocket * socket) { - SOCLiCommandPacket * command; - s32 result; - - command = SOCLi_CreateCommandPacket(SOCLi_BindCallBack, socket, socket->flag_block); - if (NULL == command) { - return SOCL_EMFILE; - } - - command->bind.local_port = socket->local_port; - command->bind.remote_port = socket->remote_port; - command->bind.remote_ip = socket->remote_ip; - socket->state |= SOCL_STATUS_CONNECTING; - - result = SOCLi_ExecCommandPacketInRecvPipe(socket, command); - - return result; -} - -static int SOCLi_BindCallBack (void * arg) { - SOCLiCommandBind * cpacket = (SOCLiCommandBind *)arg; - SOCLSocket * socket = cpacket->h.socket; - SOCLiSocketRecvCommandPipe * recv_pipe; - u32 retcode = 0; - - SDK_ASSERT(socket); - recv_pipe = socket->recv_pipe; - SDK_ASSERT(recv_pipe); - - OS_LockMutex(&recv_pipe->h.in_use); - { -#ifdef SDK_MY_DEBUG - OS_TPrintf("CPS_SocBind(\n"); - OS_TPrintf(" local port=%d,\n", cpacket->local_port); - OS_TPrintf(" remote_port=%d,\n", cpacket->remote_port); - OS_TPrintf(" remote_ip =%3d. %3d. %3d. %3d\n", CPS_CV_IPv4(cpacket->remote_ip)); -#endif - CPS_SocBind(cpacket->local_port, cpacket->remote_port, cpacket->remote_ip); - recv_pipe->consumed = 0; - - if (cpacket->h.flag_mode == SOCL_FLAGMODE_TCP || cpacket->h.flag_mode == SOCL_FLAGMODE_SSL) { -#ifdef SDK_MY_DEBUG - OS_TPrintf("CPS_TcpConnect\n"); -#endif - retcode = CPS_TcpConnect(); -#ifdef SDK_MY_DEBUG - OS_TPrintf("CPS_TcpConnect.retcode=%d\n", retcode); -#endif - } - } - - OS_UnlockMutex(&recv_pipe->h.in_use); - - if (retcode) { - socket->state |= SOCL_STATUS_ERROR; - return SOCL_ETIMEDOUT; - } - - socket->state |= SOCL_STATUS_CONNECTED; - return SOCL_ESUCCESS; -} diff --git a/subprojects/NitroWiFi/libraries/soc/src/socl_cleanup.c b/subprojects/NitroWiFi/libraries/soc/src/socl_cleanup.c deleted file mode 100644 index df74aacb83..0000000000 --- a/subprojects/NitroWiFi/libraries/soc/src/socl_cleanup.c +++ /dev/null @@ -1,94 +0,0 @@ -#include -#include "wcm_cpsif.h" - -int SOCL_Cleanup (void) { - int result; - - SDK_ASSERT(SOCLiConfigPtr); - - if (SOCLiRequestedIP == 0) { - SOCLiRequestedIP = CPSMyIp; - } - - while (SOCL_EINPROGRESS == SOCL_CalmDown()) { - OS_Sleep(100); - } - - result = SOCLi_CleanupCommandPacketQueue(); - - if (result >= 0) { -#ifdef SDK_MY_DEBUG - OS_TPrintf("CPS_Cleanup\n"); -#endif - - CPS_Cleanup(); - - CPS_SetScavengerCallback(NULL); - - if (!SOCLiConfigPtr->lan_buffer) { - SOCLi_Free(SOCLiCPSConfig.lan_buf); - } - - SOCLiConfigPtr = NULL; - } - - return result; -} - -int SOCL_CloseAll (void) { - SOCLSocket * socket; - OSIntrMode enable; - - for (;;) { - enable = OS_DisableInterrupts(); - for (socket = SOCLiSocketList; socket; socket = socket->next) { - if ((int)socket != SOCLiUDPSendSocket && !SOCL_SocketIsWaitingClose(socket)) { - break; - } - } - (void)OS_RestoreInterrupts(enable); - - if (!socket) { - break; - } - - (void)SOCL_Close((int)socket); - } - - if (SOCLiSocketList == NULL || ((int)SOCLiSocketList == SOCLiUDPSendSocket && SOCLiSocketList->next == NULL)) { - if (SOCLiSocketListTrash == NULL) { - return SOCL_ESUCCESS; - } - } - - return SOCL_EINPROGRESS; -} - -int SOCL_CalmDown (void) { - int result; - - if (SOCLiUDPSendSocket) { - result = SOCL_CloseAll(); - - if (result == SOCL_ESUCCESS) { - (void)SOCL_Close(SOCLiUDPSendSocket); - - if (SOCL_IsClosed(SOCLiUDPSendSocket)) { - SOCLiUDPSendSocket = NULL; - } - - result = SOCL_EINPROGRESS; - } - - SOCLi_TrashSocket(); - } else { - if (CPS_CalmDown()) { - WCM_SetRecvDCFCallback(NULL); - result = SOCL_ESUCCESS; - } else { - result = SOCL_EINPROGRESS; - } - } - - return result; -} diff --git a/subprojects/NitroWiFi/libraries/soc/src/socl_close.c b/subprojects/NitroWiFi/libraries/soc/src/socl_close.c deleted file mode 100644 index c11b035818..0000000000 --- a/subprojects/NitroWiFi/libraries/soc/src/socl_close.c +++ /dev/null @@ -1,165 +0,0 @@ -#include - -static int SOCLi_CloseCallBack(void * arg); -static void SOCLi_FreeCommandPipe(SOCLiSocketCommandPipe * pipe); - -int SOCL_IsClosed (int s) { - SOCLSocket * socket = (SOCLSocket *)s; - - if ((int)socket >= 0 && SOCL_SocketIsInvalid(socket) && !SOCL_SocketIsInTrash(socket)) { - return TRUE; - } - - return FALSE; -} - -int SOCL_Close (int s) { - SOCLSocket * socket = (SOCLSocket *)s; - SOCLiCommandPacket * command; - - if ((int)socket <= 0) { - return SOCL_EINVAL; - } - - if (SOCL_SocketIsInTrash(socket)) { - return SOCL_EINPROGRESS; - } - - if (SOCL_SocketIsInvalid(socket)) { - return SOCL_ESUCCESS; - } - - if (!SOCL_SocketIsCreated(socket)) { - return SOCL_ENETRESET; - } - - if (SOCL_SocketIsWaitingClose(socket)) { - return SOCL_EINPROGRESS; - } - - socket->state |= (SOCL_STATUS_CLOSING | SOCL_STATUS_WAIT_CLOSE); - - if (SOCL_SocketIsTCP(socket)) { - (void)SOCLi_SendCommandPacket(&socket->send_pipe->h, NULL); - } - - command = SOCLi_CreateCommandPacket(SOCLi_CloseCallBack, socket, SOCL_FLAGBLOCK_BLOCK); - command->h.response = NULL; - (void)SOCLi_SendCommandPacketToCtrlPipe(socket, command); - - return SOCL_ESUCCESS; -} - -static int SOCLi_CloseCallBack (void * arg) { - SOCLiCommandClose * cpacket = (SOCLiCommandClose *)arg; - SOCLSocket * socket = (SOCLSocket *)cpacket->h.socket; - OSIntrMode enable; - - if (SOCL_SocketIsTCP(socket)) { - OS_JoinThread(&socket->send_pipe->h.thread); - - CPS_TcpShutdown(); - CPS_TcpClose(); - CPS_SocRelease(); - } - - CPS_SocUnRegister(); - - socket->state &= ~(SOCL_STATUS_CONNECTING | SOCL_STATUS_CONNECTED); - - (void)SOCLi_SendCommandPacket(SOCL_SocketIsUDPSend(socket) ? &socket->send_pipe->h : &socket->recv_pipe->h, NULL); - - enable = OS_DisableInterrupts(); - SOCLi_SocketUnregister(socket); - SOCLi_SocketRegisterTrash(socket); - (void)OS_RestoreInterrupts(enable); - - socket->state |= SOCL_STATUS_WAIT_RELEASE; - - return SOCL_ESUCCESS; -} - -void SOCLi_CleanupSocket (SOCLSocket * socket) { - OSIntrMode enable; - - if (socket) { - socket->state = 0; - - if (SOCL_SocketIsTCP(socket)) { - SOCLi_FreeCommandPipe(&socket->send_pipe->h); - SOCLi_FreeCommandPipe(&socket->recv_pipe->h); - } else if (SOCL_SocketIsUDP(socket)) { - SOCLiSocketUdpData * udpdata = socket->recv_pipe->udpdata.out; - SOCLiSocketUdpData * udpdata_next; - - while (udpdata) { - udpdata_next = udpdata->next; - SOCLi_Free(udpdata); - udpdata = udpdata_next; - } - - socket->recv_pipe->udpdata.size = 0; - socket->recv_pipe->udpdata.in = NULL; - socket->recv_pipe->udpdata.out = NULL; - OS_WakeupThread(&socket->recv_pipe->udpdata.waiting); - - SOCLi_FreeCommandPipe(&socket->recv_pipe->h); - } else if (SOCL_SocketIsUDPSend(socket)) { - SOCLi_FreeCommandPipe(&socket->send_pipe->h); - } - - enable = OS_DisableInterrupts(); - SOCLi_SocketUnregister(socket); - SOCLi_SocketUnregisterTrash(socket); - -#ifdef SDK_DEBUG - MI_CpuFill8(socket, 0xaa, sizeof(*socket)); -#endif - - SOCLi_Free(socket); - (void)OS_RestoreInterrupts(enable); - } - - return; -} - -static void SOCLi_FreeCommandPipe (SOCLiSocketCommandPipe * pipe) { - SOCLiCommandPacket * command; - OSIntrMode enable; - - if (pipe == NULL) { - return; - } - - SDK_ASSERT(OS_GetCurrentThread() != &pipe->thread); - - OS_JoinThread(&pipe->thread); - - enable = OS_DisableInterrupts(); - (void)OS_DisableScheduler(); - - while (OS_ReceiveMessage(&pipe->queue, (void *)&command, OS_MESSAGE_NOBLOCK)) { - if (command) { - if (command->h.response) { - (void)OS_SendMessage(command->h.response, (void *)SOCL_ECANCELED, OS_MESSAGE_NOBLOCK); - } - - SOCLi_FreeCommandPacket(command); - } - } - - (void)OS_EnableScheduler(); - OS_RescheduleThread(); - (void)OS_RestoreInterrupts(enable); - - return; -} - -void SOCLi_TrashSocket (void) { - OSIntrMode enable = OS_DisableInterrupts(); - - while (SOCLiSocketListTrash != NULL) { - SOCLi_CleanupSocket(SOCLiSocketListTrash); - } - (void)OS_RestoreInterrupts(enable); -} diff --git a/subprojects/NitroWiFi/libraries/soc/src/socl_command.c b/subprojects/NitroWiFi/libraries/soc/src/socl_command.c deleted file mode 100644 index 812629ec6c..0000000000 --- a/subprojects/NitroWiFi/libraries/soc/src/socl_command.c +++ /dev/null @@ -1,179 +0,0 @@ -#include - -static OSMessage * SOCLiCommandPackets; -static OSMessageQueue SOCLiCommandPacketQueue; - -int SOCLi_StartupCommandPacketQueue (s32 cp_max_count) { - SOCLiCommandPacket * cp_array; - u32 cp_array_size; - OSMessage * cp_message_array; - u32 cp_message_size; - - SDK_ASSERT(cp_max_count > 0); - - cp_message_size = MATH_ROUNDUP(cp_max_count * sizeof(OSMessage), 4); - cp_array_size = MATH_ROUNDUP(cp_max_count * sizeof(SOCLiCommandPacket), 4); - cp_message_array = (OSMessage *)SOCLi_Alloc(cp_array_size + cp_message_size); - - if (NULL == cp_message_array) { - return -1; - } - - OS_InitMessageQueue(&SOCLiCommandPacketQueue, cp_message_array, cp_max_count); - - cp_array = (SOCLiCommandPacket *)((u32)cp_message_array + cp_message_size); - - while (cp_max_count > 0) { - SOCLi_FreeCommandPacket(cp_array); - - cp_array++; - cp_max_count--; - } - - SOCLiCommandPackets = cp_message_array; - return 0; -} - -int SOCLi_CleanupCommandPacketQueue (void) { - if (!OS_IsMessageQueueFull(&SOCLiCommandPacketQueue)) { - return -1; - } - - SOCLi_Free(SOCLiCommandPackets); - SOCLiCommandPackets = NULL; - return 0; -} - -SOCLiCommandPacket * SOCLi_AllocCommandPacket (s32 flag) { - SOCLiCommandPacket * cp; - - return (OS_ReceiveMessage(&SOCLiCommandPacketQueue, (void *)&cp, flag) ? cp : NULL); -} - -SOCLiCommandPacket * SOCLi_CreateCommandPacket (SOCLiCommandHandler handler, SOCLSocket * socket, s32 flag) { - SOCLiCommandPacket * cp; - - cp = SOCLi_AllocCommandPacket(flag); - - if (cp) { - cp->h.handler = handler; - cp->h.socket = socket; - cp->h.response = NULL; - cp->h.flag_mode = socket->flag_mode; - cp->h.flag_block = (s8)flag; - } - - return cp; -} - -void SOCLi_FreeCommandPacket (SOCLiCommandPacket * command) { - if (command) { - (void)OS_SendMessage(&SOCLiCommandPacketQueue, command, OS_MESSAGE_NOBLOCK); - } -} - -SOCLiSocketCommandPipe * SOCLi_GetCtrlPipe (SOCLSocket * socket) { - return (socket->recv_pipe) ? &socket->recv_pipe->h : &socket->send_pipe->h; -} - -int SOCLi_SendCommandPacket (SOCLiSocketCommandPipe * pipe, SOCLiCommandPacket * command) { - s32 result; - s32 flag_block; - - SDK_ASSERT(pipe); - - flag_block = (command && !SOCL_FLAGISBLOCK(command->h.flag_block)) ? OS_MESSAGE_NOBLOCK : OS_MESSAGE_BLOCK; - result = OS_SendMessage(&pipe->queue, command, flag_block); - - if (!result) { - SOCLi_FreeCommandPacket(command); - } - - return result ? SOCL_ESUCCESS : SOCL_ENOBUFS; -} - -int SOCLi_SendCommandPacketToCtrlPipe (SOCLSocket * socket, SOCLiCommandPacket * command) { - SOCLiSocketCommandPipe * pipe = SOCLi_GetCtrlPipe(socket); - - SDK_ASSERT(pipe); - return SOCLi_SendCommandPacket(pipe, command); -} - -int SOCLi_ExecCommandPacket (SOCLiSocketCommandPipe * pipe, SOCLiCommandPacket * command) { - s32 result; - - SDK_ASSERT(pipe); - SDK_ASSERT(command); - - if (command->h.flag_block == OS_MESSAGE_BLOCK) { - OSMessage response; - OSMessageQueue response_queue; - - OS_InitMessageQueue(&response_queue, &response, 1); - command->h.response = &response_queue; - - (void)SOCLi_SendCommandPacket(pipe, command); - (void)OS_ReceiveMessage(&response_queue, (void * *)&result, OS_MESSAGE_BLOCK); - } else { - command->h.response = NULL; - result = SOCLi_SendCommandPacket(pipe, command); - } - - return result; -} - -int SOCLi_ExecCommandPacketInRecvPipe (SOCLSocket * socket, SOCLiCommandPacket * command) { - SOCLiSocketRecvCommandPipe * pipe = socket->recv_pipe; - - SDK_ASSERT(pipe); - return SOCLi_ExecCommandPacket(&pipe->h, command); -} - -int SOCLi_ExecCommandPacketInSendPipe (SOCLSocket * socket, SOCLiCommandPacket * command) { - SOCLiSocketSendCommandPipe * pipe = socket->send_pipe; - - SDK_ASSERT(pipe); - return SOCLi_ExecCommandPacket(&pipe->h, command); -} - -int SOCLi_ExecCommandPacketInCtrlPipe (SOCLSocket * socket, SOCLiCommandPacket * command) { - SOCLiSocketCommandPipe * pipe = SOCLi_GetCtrlPipe(socket); - - SDK_ASSERT(pipe); - return SOCLi_ExecCommandPacket(pipe, command); -} - -void SOCLi_CommandPacketHandler (void * arg) { - SOCLiSocketCommandPipe * cpipe = (SOCLiSocketCommandPipe *)arg; - SOCLiCommandPacket * command; - OSIntrMode enable; - s32 result; - - while (1) { - (void)OS_ReadMessage(&cpipe->queue, (void *)&command, OS_MESSAGE_BLOCK); - - if (command) { - result = command->h.handler(command); - - enable = OS_DisableInterrupts(); - (void)OS_DisableScheduler(); - (void)OS_ReceiveMessage(&cpipe->queue, (void *)NULL, OS_MESSAGE_NOBLOCK); - - if (command->h.socket) { - command->h.socket->result = result; - } - - if (command->h.response) { - (void)OS_SendMessage(command->h.response, (void *)result, OS_MESSAGE_NOBLOCK); - } - - SOCLi_FreeCommandPacket(command); - (void)OS_EnableScheduler(); - (void)OS_RestoreInterrupts(enable); - } else { - break; - } - } - - return; -} diff --git a/subprojects/NitroWiFi/libraries/soc/src/socl_const.c b/subprojects/NitroWiFi/libraries/soc/src/socl_const.c deleted file mode 100644 index b46d570a0f..0000000000 --- a/subprojects/NitroWiFi/libraries/soc/src/socl_const.c +++ /dev/null @@ -1,81 +0,0 @@ -#include - -SDK_WEAK_SYMBOL SOCLSocketParam SOCLSocketParamTCP = { - SOCL_FLAGMODE_TCP, - SOCL_FLAGBLOCK_BLOCK, - { - 0, - - 0, - - SOCL_TCP_SOCKET_CPS_SNDBUF_SIZE, - SOCL_TCP_SOCKET_CPS_LINBUF_SIZE, - SOCL_TCP_SOCKET_CPS_OUTBUF_SIZE, - SOCL_TCP_SOCKET_SEND_WRTBUF_SIZE, - 0, - }, - - { - SOCL_TCP_SOCKET_RECV_THREAD_STACK_SIZE, - SOCL_TCP_SOCKET_RECV_THREAD_PRIORITY, - SOCL_TCP_SOCKET_RECV_THREAD_QUEUE_MAX, - }, - - { - SOCL_TCP_SOCKET_SEND_THREAD_STACK_SIZE, - SOCL_TCP_SOCKET_SEND_THREAD_PRIORITY, - SOCL_TCP_SOCKET_SEND_THREAD_QUEUE_MAX, - }, -}; - -SDK_WEAK_SYMBOL SOCLSocketParam SOCLSocketParamUDP = { - SOCL_FLAGMODE_UDP, - SOCL_FLAGBLOCK_BLOCK, - { - SOCL_UDP_SOCKET_CPS_RCVBUF_SIZE, - 1, - 0, - SOCL_UDP_SOCKET_CPS_LINBUF_SIZE, - 0, - 0, - SOCL_UDP_SOCKET_RECV_UDPBUF_SIZE, - }, - - { - SOCL_UDP_SOCKET_RECV_THREAD_STACK_SIZE, - SOCL_UDP_SOCKET_RECV_THREAD_PRIORITY, - SOCL_UDP_SOCKET_RECV_THREAD_QUEUE_MAX, - }, - - { - 0, - 0, - 0, - }, -}; - -SDK_WEAK_SYMBOL SOCLSocketParam SOCLSocketParamUDPSend = { - SOCL_FLAGMODE_UDPSEND, - SOCL_FLAGBLOCK_NOBLOCK, - { - 0, - 0, - SOCL_UDP_SOCKET_CPS_SNDBUF_SIZE, - 0, - SOCL_UDP_SOCKET_CPS_OUTBUF_SIZE, - SOCL_UDP_SOCKET_SEND_WRTBUF_SIZE, - 0, - }, - - { - 0, - 0, - 0, - }, - - { - SOCL_UDP_SOCKET_SEND_THREAD_STACK_SIZE, - SOCL_UDP_SOCKET_SEND_THREAD_PRIORITY, - SOCL_UDP_SOCKET_SEND_THREAD_QUEUE_MAX, - }, -}; diff --git a/subprojects/NitroWiFi/libraries/soc/src/socl_create.c b/subprojects/NitroWiFi/libraries/soc/src/socl_create.c deleted file mode 100644 index f7b3eb97f1..0000000000 --- a/subprojects/NitroWiFi/libraries/soc/src/socl_create.c +++ /dev/null @@ -1,207 +0,0 @@ -#include - -static int SOCLi_CreateSocketCallBack(void * arg); - -static SOCLSocket * SOCLi_StartupSocket(const SOCLSocketParam * param); -static u32 SOCLi_GetSizeSocket(const SOCLSocketParam * param); -static u32 SOCLi_GetSizeCommandPipe(const SOCLSocketCommandPipeParam * param); -static u8 * SOCLi_InitSocket(SOCLSocket * socket, const SOCLSocketParam * param); -static u8 * SOCLi_InitSocketBuffer(u8 * ptr, CPSSocBuf * buf, u32 size); -static u8 * SOCLi_InitCommandPipe(u8 * ptr, SOCLiSocketCommandPipe * pipe, const SOCLSocketCommandPipeParam * param); - -int SOCL_CreateSocket (const SOCLSocketParam * param) { - SOCLSocket * socket; - SOCLiCommandPacket * command; - s32 result; - - SDK_ASSERT(param != NULL); - - socket = SOCLi_StartupSocket(param); - if (socket == NULL) { - return SOCL_ENOMEM; - } - - command = SOCLi_CreateCommandPacket(SOCLi_CreateSocketCallBack, socket, OS_MESSAGE_BLOCK); - - result = SOCLi_ExecCommandPacketInCtrlPipe(socket, command); - SDK_ASSERT(result >= 0); - - return (int)socket; -} - -static int SOCLi_CreateSocketCallBack (void * arg) { - SOCLiCommandCreateSocket * cpacket = (SOCLiCommandCreateSocket *)arg; - SOCLSocket * socket = cpacket->h.socket; - SOCLiSocketSendCommandPipe * send_pipe; - SOCLiSocketRecvCommandPipe * recv_pipe; - - SDK_ASSERT(socket); -#ifdef SDK_MY_DEBUG - OS_TPrintf("CPS_SocRegister\n"); -#endif - CPS_SocRegister(&socket->cps_socket); - - send_pipe = socket->send_pipe; - recv_pipe = socket->recv_pipe; - - switch (socket->flag_mode) { - case SOCL_FLAGMODE_TCP: - case SOCL_FLAGMODE_SSL: -#ifdef SDK_MY_DEBUG - OS_TPrintf("CPS_SocDup\n"); - OS_TPrintf("CPS_SocUse\n"); -#endif - CPS_SocDup(&send_pipe->h.thread); - CPS_SocUse(); - break; - - case SOCL_FLAGMODE_UDP: - CPS_SocUse(); - CPS_SocDatagramMode(); - CPS_SetUdpCallback(SOCLi_UdpRecvCallback); -#ifdef SDK_MY_DEBUG - OS_TPrintf("CPS_SocUse\n"); - OS_TPrintf("CPS_SocDatagramMode\n"); - OS_TPrintf("CPS_SetUdpCallback\n"); -#endif - break; - - case SOCL_FLAGMODE_UDPSEND: -#ifdef SDK_MY_DEBUG - OS_TPrintf("CPS_SocDatagramMode\n"); -#endif - CPS_SocDatagramMode(); - break; - - case SOCL_FLAGMODE_ICMP: - default: - SDK_ASSERT(0); - break; - } - - socket->state = SOCL_STATUS_CREATE; - - return SOCL_ESUCCESS; -} - -static SOCLSocket * SOCLi_StartupSocket (const SOCLSocketParam * param) { - SOCLSocket * socket; - u32 size; - OSIntrMode enable; - - size = SOCLi_GetSizeSocket(param); - - enable = OS_DisableInterrupts(); - socket = SOCLi_Alloc(size); - - if (socket) { - MI_CpuClear8(socket, size); - - (void)SOCLi_InitSocket(socket, param); - - SOCLi_SocketRegister(socket); - } - - (void)OS_RestoreInterrupts(enable); - - return socket; -} - -static u32 SOCLi_GetSizeSocket (const SOCLSocketParam * param) { - u32 size; - - size = SOCLi_ROUNDUP4(sizeof(SOCLSocket)); - - if (param->buffer.rcvbuf_size) { - size += SOCLi_ROUNDUP4(sizeof(SOCLiSocketRecvCommandPipe)); - size += SOCLi_RoundUp4(param->buffer.rcvbuf_size); - size += SOCLi_RoundUp4(param->buffer.linbuf_size); - size += SOCLi_GetSizeCommandPipe(¶m->recv_pipe); - } - - if (param->buffer.sndbuf_size) { - size += SOCLi_ROUNDUP4(sizeof(SOCLiSocketSendCommandPipe)); - size += SOCLi_RoundUp4(param->buffer.sndbuf_size); - size += SOCLi_RoundUp4(param->buffer.outbuf_size); - size += SOCLi_RoundUp4(param->buffer.wrtbuf_size); - size += SOCLi_GetSizeCommandPipe(¶m->send_pipe); - } - - return size; -} - -static u32 SOCLi_GetSizeCommandPipe (const SOCLSocketCommandPipeParam * param) { - u32 size; - - size = SOCLi_RoundUp4(param->queue_max * sizeof(OSMessage)); - size += SOCLi_RoundUp4(param->stack_size); - - return size; -} - -static u8 * SOCLi_InitSocket (SOCLSocket * socket, const SOCLSocketParam * param) { - u8 * ptr; - CPSSoc * cps = &socket->cps_socket; - - socket->flag_mode = param->flag_mode; - socket->flag_block = param->flag_block; - - ptr = (u8 *)socket; - ptr = ptr + SOCLi_ROUNDUP4(sizeof(SOCLSocket)); - - if (param->buffer.rcvbuf_size) { - SOCLiSocketRecvCommandPipe * pipe = (SOCLiSocketRecvCommandPipe *)ptr; - - socket->recv_pipe = pipe; - pipe->consumed_min = param->buffer.rcvbuf_consume_min; - ptr += SOCLi_ROUNDUP4(sizeof(SOCLiSocketRecvCommandPipe)); - ptr = SOCLi_InitCommandPipe(ptr, &pipe->h, ¶m->recv_pipe); - - ptr = SOCLi_InitSocketBuffer(ptr, &cps->rcvbuf, param->buffer.rcvbuf_size); - ptr = SOCLi_InitSocketBuffer(ptr, &cps->linbuf, param->buffer.linbuf_size); - - pipe->udpdata.size_max = param->buffer.udpbuf_size; - OS_InitThreadQueue(&pipe->udpdata.waiting); - } - - if (param->buffer.sndbuf_size) { - SOCLiSocketSendCommandPipe * pipe = (SOCLiSocketSendCommandPipe *)ptr; - - socket->send_pipe = pipe; - pipe->exe_socket = socket; - ptr += SOCLi_ROUNDUP4(sizeof(SOCLiSocketSendCommandPipe)); - ptr = SOCLi_InitCommandPipe(ptr, &pipe->h, ¶m->send_pipe); - - ptr = SOCLi_InitSocketBuffer(ptr, &cps->sndbuf, param->buffer.sndbuf_size); - ptr = SOCLi_InitSocketBuffer(ptr, &cps->outbuf, param->buffer.outbuf_size); - ptr = SOCLi_InitSocketBuffer(ptr, &pipe->buffer.area, param->buffer.wrtbuf_size); - OS_InitThreadQueue(&pipe->buffer.waiting); - } else { - socket->send_pipe = ((SOCLSocket *)SOCLiUDPSendSocket)->send_pipe; - } - - return ptr; -} - -static u8 * SOCLi_InitSocketBuffer (u8 * ptr, CPSSocBuf * buf, u32 size) { - buf->data = size ? ptr : NULL; - buf->size = size; - return ptr + SOCLi_RoundUp4(size); -} - -static u8 * SOCLi_InitCommandPipe (u8 * ptr, SOCLiSocketCommandPipe * pipe, const SOCLSocketCommandPipeParam * param) { - OSMessage * messages; - u8 * stack_bottom; - - messages = (OSMessage *)ptr; - stack_bottom = ptr + SOCLi_GetSizeCommandPipe(param); - - OS_InitMessageQueue(&pipe->queue, messages, param->queue_max); - - OS_InitMutex(&pipe->in_use); - - OS_CreateThread(&pipe->thread, SOCLi_CommandPacketHandler, pipe, stack_bottom, param->stack_size, param->priority); - OS_WakeupThreadDirect(&pipe->thread); - - return stack_bottom; -} diff --git a/subprojects/NitroWiFi/libraries/soc/src/socl_list.c b/subprojects/NitroWiFi/libraries/soc/src/socl_list.c deleted file mode 100644 index 64a4a9b181..0000000000 --- a/subprojects/NitroWiFi/libraries/soc/src/socl_list.c +++ /dev/null @@ -1,59 +0,0 @@ -#include - -SOCLSocket * SOCLiSocketList = NULL; -SOCLSocket * SOCLiSocketListTrash = NULL; - -static SOCLSocket * * SOCLi_SocketGetNextPtr(SOCLSocket * * start, SOCLSocket * socket); -static void SOCLi_SocketRegisterList(SOCLSocket * * next, SOCLSocket * socket); -static void SOCLi_SocketUnregisterList(SOCLSocket * * next, SOCLSocket * socket); - -void SOCLi_SocketRegister (SOCLSocket * socket) { - SOCLi_SocketRegisterList(&SOCLiSocketList, socket); -} - -static void SOCLi_SocketRegisterList (SOCLSocket * * next, SOCLSocket * socket) { - socket->next = *next; - *next = socket; -} - -void SOCLi_SocketRegisterTrash (SOCLSocket * socket) { - SOCLi_SocketRegisterList(&SOCLiSocketListTrash, socket); -} - -void SOCLi_SocketUnregister (SOCLSocket * socket) { - SOCLi_SocketUnregisterList(&SOCLiSocketList, socket); -} - -static void SOCLi_SocketUnregisterList (SOCLSocket * * next, SOCLSocket * socket) { - next = SOCLi_SocketGetNextPtr(next, socket); - - if (next) { - *next = socket->next; - } -} - -static SOCLSocket * * SOCLi_SocketGetNextPtr (SOCLSocket * * next, SOCLSocket * socket) { - SOCLSocket * t; - - for (t = *next; t; t = t->next) { - if (t == socket) { - return next; - } - - next = &t->next; - } - - return NULL; -} - -void SOCLi_SocketUnregisterTrash (SOCLSocket * socket) { - SOCLi_SocketUnregisterList(&SOCLiSocketListTrash, socket); -} - -int SOCL_SocketIsInvalid (SOCLSocket * socket) { - return ((int)socket <= 0) || !SOCLi_SocketGetNextPtr(&SOCLiSocketList, socket); -} - -int SOCL_SocketIsInTrash (SOCLSocket * socket) { - return SOCLi_SocketGetNextPtr(&SOCLiSocketListTrash, socket) != NULL; -} diff --git a/subprojects/NitroWiFi/libraries/soc/src/socl_listen_accept.c b/subprojects/NitroWiFi/libraries/soc/src/socl_listen_accept.c deleted file mode 100644 index 53fa211f2d..0000000000 --- a/subprojects/NitroWiFi/libraries/soc/src/socl_listen_accept.c +++ /dev/null @@ -1,165 +0,0 @@ -#include -#include - -static int SOCL_ExecListenAcceptCommand(int s, vu16 * remote_port_ptr, volatile SOCLInAddr * remote_ip_ptr); -static int SOCLi_ListenAcceptCallBack(void * arg); - -int SOCL_Listen (int s, int backlog) { - SOCLSocket * socket = (SOCLSocket *)s; - - if (SOCL_SocketIsInvalid(socket)) { - return SOCL_EINVAL; - } - - if (!SOCL_SocketIsCreated(socket)) { - return SOCL_ENETRESET; - } - - if (SOCL_SocketIsConnecting(socket)) { - return SOCL_EINVAL; - } - - if (!SOCL_SocketIsTCP(socket)) { - return SOCL_EINVAL; - } - - if (!SOCL_SocketIsBlock(socket)) { - return SOCL_EWOULDBLOCK; - } - - (void)backlog; - (void)socket; - - return 0; -} - -int SOCL_Accept (int s_listen, vu16 * remote_port_ptr, volatile SOCLInAddr * remote_ip_ptr) { - SOCLSocket * socket_listen = (SOCLSocket *)s_listen; - int s_accept; - s32 result; - - if (SOCL_SocketIsInvalid(socket_listen)) { - return SOCL_EINVAL; - } - - if (!SOCL_SocketIsCreated(socket_listen)) { - return SOCL_ENETRESET; - } - - if (SOCL_SocketIsConnecting(socket_listen)) { - return SOCL_EINVAL; - } - - if (!SOCL_SocketIsTCP(socket_listen)) { - return SOCL_EINVAL; - } - - if (!SOCL_SocketIsBlock(socket_listen)) { - return SOCL_EWOULDBLOCK; - } - - s_accept = SOCL_TcpSocket(); - - if (s_accept < 0) { - return s_accept; - } - - result = SOCL_Bind(s_accept, socket_listen->local_port); - - if (result < 0) { - return result; - } - - result = SOCL_ListenAccept(s_accept, remote_port_ptr, remote_ip_ptr); - - if (result < 0) { - return result; - } - - return s_accept; -} - -int SOCL_ListenAccept (int s, vu16 * remote_port_ptr, volatile SOCLInAddr * remote_ip_ptr) { - SOCLSocket * socket = (SOCLSocket *)s; - SOCLiCommandPacket * command; - s32 result; - - if (SOCL_SocketIsInvalid(socket)) { - return SOCL_EINVAL; - } - - if (!SOCL_SocketIsCreated(socket)) { - return SOCL_ENETRESET; - } - - if (SOCL_SocketIsConnecting(socket)) { - return SOCL_EINVAL; - } - - if (!SOCL_SocketIsTCP(socket)) { - return SOCL_EINVAL; - } - - if (!SOCL_SocketIsBlock(socket)) { - return SOCL_EWOULDBLOCK; - } - - if (socket->local_port == 0) { - return SOCL_EINVAL; - } - - command = SOCLi_CreateCommandPacket(SOCLi_ListenAcceptCallBack, socket, socket->flag_block); - - SDK_ASSERT(command); - - command->listen_accept.local_port = socket->local_port; - command->listen_accept.remote_port_ptr = remote_port_ptr; - command->listen_accept.remote_ip_ptr = remote_ip_ptr; - socket->state |= SOCL_STATUS_CONNECTING; - - result = SOCLi_ExecCommandPacketInRecvPipe(socket, command); - - return result; -} - -static int SOCLi_ListenAcceptCallBack (void * arg) { - SOCLiCommandListenAccept * cpacket = (SOCLiCommandListenAccept *)arg; - SOCLSocket * socket = (SOCLSocket *)cpacket->h.socket; - SOCLiSocketRecvCommandPipe * recv_pipe; - u16 remote_port; - CPSInAddr remote_ip; - CPSInAddr local_ip; - - SDK_ASSERT(socket); - recv_pipe = socket->recv_pipe; - SDK_ASSERT(recv_pipe); - - OS_LockMutex(&recv_pipe->h.in_use); - { -#ifdef SDK_MY_DEBUG - OS_TPrintf("CPS_SocBind(%d,0,0)\n", cpacket->local_port); -#endif - CPS_SocBind(cpacket->local_port, 0, 0); - -#ifdef SDK_MY_DEBUG - OS_TPrintf("CPS_TcpListen()\n"); -#endif - CPS_TcpListen(); - - recv_pipe->consumed = 0; - -#ifdef SDK_MY_DEBUG - OS_TPrintf("CPS_SocWho()\n"); -#endif - remote_ip = CPS_SocWho(&remote_port, &local_ip); - - *cpacket->remote_port_ptr = remote_port; - *cpacket->remote_ip_ptr = remote_ip; - - socket->state |= SOCL_STATUS_CONNECTED; - } - - OS_UnlockMutex(&recv_pipe->h.in_use); - - return SOCL_ESUCCESS; -} diff --git a/subprojects/NitroWiFi/libraries/soc/src/socl_misc.c b/subprojects/NitroWiFi/libraries/soc/src/socl_misc.c deleted file mode 100644 index 98a6d6b3aa..0000000000 --- a/subprojects/NitroWiFi/libraries/soc/src/socl_misc.c +++ /dev/null @@ -1,26 +0,0 @@ -#include - -struct errortable { - int code; - const char * name; -}; - -static struct errortable errtable[] = { -#include "include/errtable.h" -}; - -const char * SOCL_GetErrName (int errcode) { - int i; - - for (i = 0; i < sizeof(errtable) / sizeof(errtable[0]); i++) { - if (errtable[i].code == errcode) { - return errtable[i].name; - } - } - - return ""; -} - -u32 SOCLi_RoundUp4 (u32 size) { - return SOCLi_ROUNDUP4(size); -} diff --git a/subprojects/NitroWiFi/libraries/soc/src/socl_poll.c b/subprojects/NitroWiFi/libraries/soc/src/socl_poll.c deleted file mode 100644 index 1b8df9ccd3..0000000000 --- a/subprojects/NitroWiFi/libraries/soc/src/socl_poll.c +++ /dev/null @@ -1,57 +0,0 @@ -#include -#include - -int SOCL_GetStatus (int s) { - SOCLSocket * socket = (SOCLSocket *)s; - int result = 0; - OSIntrMode enable; - - if (SOCL_SocketIsInvalid(socket)) { - result |= SOC_POLLNVAL; - } else { - if (SOCL_SocketIsError(socket)) { - result |= SOC_POLLERR; - } - - if (SOCL_SocketIsUDP(socket) || SOCL_SocketIsConnected(socket)) { - enable = OS_DisableInterrupts(); - if (SOCLi_GetReadBufferOccpiedSize(socket) > 0) { - result |= SOC_POLLRDNORM; - } - - if (SOCLi_GetWriteBufferFreeSize(socket) > 0) { - result |= SOC_POLLWRNORM; - } - (void)OS_RestoreInterrupts(enable); - } - - if (SOCL_SocketIsTCP(socket)) { - if (SOCL_SocketIsConnected(socket) && socket->cps_socket.state != CPS_STT_ESTABLISHED && - !(result & SOC_POLLRDNORM)) { - socket->state &= ~(SOCL_STATUS_CONNECTING | SOCL_STATUS_CONNECTED); - } - - if (!SOCL_SocketIsConnecting(socket) && !SOCL_SocketIsConnected(socket)) { - result |= SOC_POLLHUP; - } - } - } - - return result; -} - -s32 SOCLi_GetReadBufferOccpiedSize (SOCLSocket * socket) { - SOCLiSocketRecvCommandPipe * recv_pipe = socket->recv_pipe; - s32 size = 0; - - if (recv_pipe) { - if (SOCL_SocketIsUDP(socket)) { - SOCLiSocketUdpData * udpout = recv_pipe->udpdata.out; - size = (s32)(udpout ? udpout->size : 0); - } else if (SOCL_SocketIsTCP(socket)) { - size = (s32)socket->cps_socket.rcvbufp - (s32)recv_pipe->consumed; - } - } - - return size; -} diff --git a/subprojects/NitroWiFi/libraries/soc/src/socl_read.c b/subprojects/NitroWiFi/libraries/soc/src/socl_read.c deleted file mode 100644 index a97861ed6d..0000000000 --- a/subprojects/NitroWiFi/libraries/soc/src/socl_read.c +++ /dev/null @@ -1,456 +0,0 @@ -#include - -static int SOCLi_ReadAndConsumeBuffer(SOCLSocket *, void *, int, u16 *, SOCLInAddr *, s32, s32); -static int SOCLi_ReadBuffer(SOCLSocket *, void *, int, u16 *, SOCLInAddr *, s32); -static int SOCLi_ReadUdpBuffer(SOCLSocket *, void *, int, u16 *, SOCLInAddr *, s32); -static int SOCLi_CopyCPSBuffer(SOCLSocket *, void *, int, u16 *, SOCLInAddr *); -static u8 * SOCLi_ReadCPSBuffer(SOCLSocket *, s32 *, u16 *, u16 *, SOCLInAddr *); -static int SOCLi_ExecReadCommand(SOCLSocket *, void *, int, u16 *, SOCLInAddr *); -static int SOCLi_ReadCallBack(void *); -static int SOCLi_ConsumeBuffer(SOCLSocket *); -static int SOCLi_ConsumeCallBack(void *); -static int SOCLi_ConsumeCPSBuffer(SOCLSocket *); - -u32 SOCLi_CheckCount[SOCL_CHECKCOUNT_MAX] = {0}; - -int SOCL_Read (int s, void * buffer, int buffer_len, u16 * remote_port, SOCLInAddr * remote_ip) { - return SOCL_ReadFrom(s, buffer, buffer_len, remote_port, remote_ip, 0); -} - -int SOCL_ReadNoBlock (int s, void * buffer, int buffer_len, u16 * remote_port, SOCLInAddr * remote_ip) { - return SOCL_ReadFrom(s, buffer, buffer_len, remote_port, remote_ip, SOCL_MSG_DONTWAIT); -} - -int SOCL_ReadBlock (int s, void * buffer, int buffer_len, u16 * remote_port, SOCLInAddr * remote_ip) { - return SOCL_ReadFrom(s, buffer, buffer_len, remote_port, remote_ip, 0); -} - -int SOCL_ReadFrom (int s, void * buffer, int buffer_len, u16 * remote_port, SOCLInAddr * remote_ip, int flags) { - SOCLSocket * socket = (SOCLSocket *)s; - SOCLiSocketRecvCommandPipe * recv_pipe; - int flag_block; - int result; - - if (SOCL_SocketIsInvalid(socket)) { - return SOCL_EINVAL; - } - - if ((flags & SOCL_MSG_DONTWAIT) || SOCL_SocketIsNoBlock(socket)) { - if (SOCL_SocketIsSSL(socket)) { - return SOCL_EINVAL; - } - - flag_block = SOCL_FLAGBLOCK_NOBLOCK; - } else { - if (OS_GetProcMode() == OS_PROCMODE_IRQ) { - return SOCL_EINVAL; - } - - flag_block = SOCL_FLAGBLOCK_BLOCK; - } - - if (!SOCL_SocketIsCreated(socket)) { - return SOCL_ENETRESET; - } - - if (SOCL_SocketIsTCP(socket) && (!SOCL_SocketIsConnected(socket) || SOCL_SocketIsClosing(socket))) { - return SOCL_ENOTCONN; - } - - SDK_ASSERT(buffer && buffer_len); - recv_pipe = socket->recv_pipe; - SDK_ASSERT(recv_pipe); - if (!SOCL_FLAGISBLOCK(flag_block)) { - if (!OS_TryLockMutex(&recv_pipe->h.in_use)) { - return SOCL_EWOULDBLOCK; - } - } else { - OS_LockMutex(&recv_pipe->h.in_use); - } - - result = SOCLi_ReadAndConsumeBuffer(socket, buffer, buffer_len, remote_port, remote_ip, flag_block, flags); - - OS_UnlockMutex(&recv_pipe->h.in_use); - return result; -} - -static int SOCLi_ReadAndConsumeBuffer (SOCLSocket * socket, void * buffer, int buffer_len, u16 * remote_port, SOCLInAddr * remote_ip, s32 flag_block, s32 flags) { - SOCLiSocketRecvCommandPipe * recv_pipe = socket->recv_pipe; - BOOL is_noconsumed = ((flags & SOCL_MSG_PEEK) && recv_pipe); - int result; - s8 flag_noconsume; - - if (is_noconsumed) { - flag_noconsume = recv_pipe->flag_noconsume; - recv_pipe->flag_noconsume = TRUE; - } - - if (SOCL_SocketIsUDP(socket)) { - result = SOCLi_ReadUdpBuffer(socket, buffer, buffer_len, remote_port, remote_ip, flag_block); - } else { - result = SOCLi_ReadBuffer(socket, buffer, buffer_len, remote_port, remote_ip, flag_block); - - if (result >= 0) { - (void)SOCLi_ConsumeBuffer(socket); - } - } - - if (is_noconsumed) { - recv_pipe->flag_noconsume = flag_noconsume; - } - - return result; -} - -static int SOCLi_ReadBuffer (SOCLSocket * socket, void * buffer, int buffer_len, u16 * remote_port, SOCLInAddr * remote_ip, s32 flag_block) { - int result; - -#ifdef SDK_MY_DEBUG - OS_TPrintf("\n===\nReadBuffer.buffer =%d-%d %d\n", buffer, (u32)buffer + buffer_len, buffer_len); -#endif - - if (SOCL_SocketIsSSL(socket)) { - result = SOCLi_ExecReadCommand(socket, buffer, buffer_len, remote_port, remote_ip); - return result; - } - - result = SOCLi_CopyCPSBuffer(socket, buffer, buffer_len, remote_port, remote_ip); - - if (result == SOCL_EWOULDBLOCK && SOCL_FLAGISBLOCK(flag_block)) { - result = SOCLi_ExecReadCommand(socket, buffer, buffer_len, remote_port, remote_ip); - } - - return result; -} - -static int SOCLi_CopyCPSBuffer (SOCLSocket * socket, void * buffer, int buffer_len, u16 * remote_port, SOCLInAddr * remote_ip) { - OSIntrMode enable; - SOCLiSocketRecvCommandPipe * recv_pipe; - u8 * cpsbuffer; - s32 cpsbuffer_len; - s32 copy_len; - s32 consume_len; - u16 my_port; - u16 his_port; - SOCLInAddr his_ip; - int result = 0; - - SDK_ASSERT(buffer && buffer_len > 0); - - enable = OS_DisableInterrupts(); - { - cpsbuffer = SOCLi_ReadCPSBuffer(socket, &cpsbuffer_len, &my_port, &his_port, &his_ip); - - if (cpsbuffer) { - if (cpsbuffer_len == 0) { - result = SOCL_EWOULDBLOCK; - } else { - copy_len = MATH_MIN(buffer_len, cpsbuffer_len); - consume_len = SOCL_SocketIsTCP(socket) ? copy_len : cpsbuffer_len; - - MI_CpuCopy8(cpsbuffer, buffer, (u32)copy_len); -#ifdef SDK_MY_DEBUG - OS_TPrintf("MI_CPUCOPY .buffer =%d-%d %d\n", buffer, (u32)buffer + copy_len, copy_len); - OS_TPrintf(" .copy_len =%d\n", copy_len); -#endif - recv_pipe = socket->recv_pipe; - SDK_ASSERT(recv_pipe); - if (!recv_pipe->flag_noconsume) { - recv_pipe->consumed += consume_len; - } - -#ifdef SDK_MY_DEBUG - OS_TPrintf(" .recv_pipe->consumed=%d\n", recv_pipe->consumed); -#endif - result = (int)consume_len; - } - } else { - if (cpsbuffer_len == 0) { - result = 0; - } else { - result = SOCL_EINVAL; - } - - socket->state &= ~(SOCL_STATUS_CONNECTING | SOCL_STATUS_CONNECTED); - } - - if (result >= 0) { - if (remote_port && remote_ip) { - *remote_port = his_port; - *remote_ip = his_ip; - } - - if (socket->local_port == 0) { - socket->local_port = my_port; - } - } - } - (void)OS_RestoreInterrupts(enable); - - return result; -} - -static u8 * SOCLi_ReadCPSBuffer (SOCLSocket * socket, s32 * buffer_len, u16 * local_port, u16 * remote_port, SOCLInAddr * remote_ip) { - SOCLiSocketRecvCommandPipe * recv_pipe; - CPSSoc * cpsoc; - s32 consumed; - s32 len; - - recv_pipe = socket->recv_pipe; - cpsoc = (CPSSoc *)OSi_GetSpecificData(&recv_pipe->h.thread, OSi_SPECIFIC_CPS); - - consumed = recv_pipe->consumed; - len = (s32)cpsoc->rcvbufp - consumed; - - if (len >= 0) { - (*local_port) = cpsoc->local_port; - (*remote_port) = cpsoc->remote_port; - (*remote_ip) = (SOCLInAddr)cpsoc->remote_ip; - (*buffer_len) = len; - - if (len == 0 && cpsoc->state != CPS_STT_ESTABLISHED) { - return NULL; - } - } else { - (*buffer_len) = -1; - return NULL; - } - - return ((u8 *)cpsoc->rcvbuf.data) + consumed; -} - -static int SOCLi_ExecReadCommand (SOCLSocket * socket, void * buffer, int buffer_len, u16 * remote_port, SOCLInAddr * remote_ip) { - SOCLiCommandPacket * command; - s32 result; - - command = SOCLi_CreateCommandPacket(SOCLi_ReadCallBack, socket, SOCL_FLAGBLOCK_BLOCK); - SDK_ASSERT(command); - - command->read.buffer = buffer; - command->read.buffer_len = buffer_len; - command->read.remote_port = remote_port; - command->read.remote_ip = remote_ip; - - result = SOCLi_ExecCommandPacketInRecvPipe(socket, command); - - return result; -} - -static int SOCLi_ReadCallBack (void * arg) { - SOCLiCommandRead * cpacket = (SOCLiCommandRead *)arg; - SOCLSocket * socket = cpacket->h.socket; - SOCLiSocketRecvCommandPipe * recv_pipe = socket->recv_pipe; - u8 * buffer = cpacket->buffer; - s32 buffer_len = cpacket->buffer_len; - u16 * remote_port = cpacket->remote_port; - SOCLInAddr * remote_ip = cpacket->remote_ip; - u8 * cpsbuffer; - u32 cpsbuffer_len; - s32 consumed; - int result; - - consumed = recv_pipe->consumed; - for (;;) { - cpsbuffer = CPS_SocRead(&cpsbuffer_len); - if (cpsbuffer == NULL || (s32)cpsbuffer_len - consumed > 0) { - break; - } - - if (SOCL_SocketIsTCP(socket) && socket->cps_socket.state != CPS_STT_ESTABLISHED) { - cpsbuffer = NULL; - break; - } - - OS_Sleep(10); - } - - if (SOCL_SocketIsReset(socket)) { - return SOCL_ECONNRESET; - } - - if (SOCL_SocketIsSSL(socket)) { - u32 len; - - if (cpsbuffer == NULL) { - return 0; - } - - len = MATH_MIN(buffer_len, cpsbuffer_len); - MI_CpuCopy8(cpsbuffer, buffer, len); - CPS_SocConsume(len); - return (int)len; - } - - if (cpsbuffer) { - result = SOCLi_CopyCPSBuffer(socket, buffer, buffer_len, remote_port, remote_ip); - } else { - result = 0; - } - - if (result <= 0) { - return result; - } - - SDK_ASSERT(recv_pipe->consumed_min > 0); - if (recv_pipe->consumed >= (s32)recv_pipe->consumed_min) { - (void)SOCLi_ConsumeCPSBuffer(socket); - } - - return result; -} - -static int SOCLi_ConsumeBuffer (SOCLSocket * socket) { - SOCLiSocketRecvCommandPipe * recv_pipe = socket->recv_pipe; - SOCLiCommandPacket * command; - s32 result; - - SDK_ASSERT(recv_pipe->consumed_min > 0); - if (recv_pipe->consumed < (s32)recv_pipe->consumed_min) { - return SOCL_ESUCCESS; - } - - command = SOCLi_CreateCommandPacket(SOCLi_ConsumeCallBack, socket, SOCL_FLAGBLOCK_NOBLOCK); - if (NULL == command) { - return SOCL_EMFILE; - } - - result = SOCLi_ExecCommandPacketInRecvPipe(socket, command); - - return result; -} - -static int SOCLi_ConsumeCallBack (void * arg) { - SOCLiCommandConsume * cpacket = (SOCLiCommandConsume *)arg; - - return SOCLi_ConsumeCPSBuffer(cpacket->h.socket); -} - -static int SOCLi_ConsumeCPSBuffer (SOCLSocket * socket) { - SOCLiSocketRecvCommandPipe * recv_pipe = socket->recv_pipe; - OSIntrMode enable; - s32 consumed; - - SDK_ASSERT(recv_pipe); - - enable = OS_DisableInterrupts(); - consumed = recv_pipe->consumed; - - if (consumed) { -#ifdef SDK_MY_DEBUG - OS_TPrintf("\nCPS_SocConsume(%d)\n", consumed); -#endif - -#if 1 - recv_pipe->consumed = 0; - CPS_SocConsume((u32)consumed); -#else - CPS_SocConsume((u32)consumed); - recv_pipe->consumed -= consumed; -#endif - -#ifdef SDK_MY_DEBUG - OS_TPrintf("CPS_SocConsume.cpssoc.state =%d\n", socket->cps_socket.state); - OS_TPrintf(" .cpssoc.rcvbufp =%d\n", socket->cps_socket.rcvbufp); - OS_TPrintf(" .recv_pipe.consumed=%d\n", consumed); -#endif - } - (void)OS_RestoreInterrupts(enable); - - return (int)consumed; -} - -static int SOCLi_ReadUdpBuffer (SOCLSocket * socket, void * buffer, int buffer_len, u16 * remote_port, SOCLInAddr * remote_ip, s32 flag_block) { - SOCLiSocketRecvCommandPipe * pipe = socket->recv_pipe; - SOCLiSocketUdpData * udpdata = pipe->udpdata.out; - OSIntrMode enable; - int result; - - enable = OS_DisableInterrupts(); - while (NULL == (udpdata = pipe->udpdata.out)) { - if (!SOCL_FLAGISBLOCK(flag_block)) { - result = SOCL_EWOULDBLOCK; - break; - } - - OS_SleepThread(&pipe->udpdata.waiting); - - if (SOCL_SocketIsInvalid(socket) || !SOCL_SocketIsCreated(socket)) { - result = SOCL_ENOTCONN; - break; - } - } - - if (udpdata) { - MI_CpuCopy8((u8 *)&udpdata[1], buffer, (u32)MATH_MIN(buffer_len, udpdata->size)); - - if (remote_port) { - (*remote_port) = udpdata->remote_port; - } - - if (remote_ip) { - (*remote_ip) = udpdata->remote_ip; - } - - result = udpdata->size; - - if (!pipe->flag_noconsume) { - pipe->udpdata.out = udpdata->next; - if (udpdata->next == NULL) { - pipe->udpdata.in = NULL; - } - - SOCLi_Free(udpdata); - pipe->udpdata.size -= result; - } - } - (void)OS_RestoreInterrupts(enable); - - return result; -} - -int SOCLi_UdpRecvCallback (u8 * data, u32 len, CPSSoc * soc) { - SOCLSocket * socket = (SOCLSocket *)soc; - SOCLiSocketRecvCommandPipe * pipe = socket->recv_pipe; - SOCLiSocketUdpData * udpheader; - OSIntrMode enable = OS_DisableInterrupts(); - - if (pipe->udpdata.size_max >= pipe->udpdata.size + len) { - udpheader = SOCLi_Alloc(sizeof(SOCLiSocketUdpData) + len); - - if (udpheader) { - pipe->udpdata.size += len; - udpheader->next = NULL; - udpheader->size = (u16)len; - udpheader->remote_port = soc->remote_port; - udpheader->remote_ip = soc->remote_ip; - MI_CpuCopy8(data, (void *)&udpheader[1], len); - - if (pipe->udpdata.in) { - pipe->udpdata.in->next = udpheader; - } - - pipe->udpdata.in = udpheader; - - if (pipe->udpdata.out == NULL) { - pipe->udpdata.out = udpheader; - } - } else { - SOCLi_CheckCount[SOCL_CHECKCOUNT_UDPRCVCB_1]++; - } - } else { - SOCLi_CheckCount[SOCL_CHECKCOUNT_UDPRCVCB_2]++; - } - - if (socket->local_port == 0) { - socket->local_port = soc->local_port; - } - - soc->remote_port = soc->remote_port_bound; - soc->remote_ip = soc->remote_ip_bound; - - OS_WakeupThread(&pipe->udpdata.waiting); - - (void)OS_RestoreInterrupts(enable); - - return 1; -} diff --git a/subprojects/NitroWiFi/libraries/soc/src/socl_resolve.c b/subprojects/NitroWiFi/libraries/soc/src/socl_resolve.c deleted file mode 100644 index de93951df1..0000000000 --- a/subprojects/NitroWiFi/libraries/soc/src/socl_resolve.c +++ /dev/null @@ -1,108 +0,0 @@ -#include - -#define CPS_RCVBUF SOCL_TCP_SOCKET_CPS_RCVBUF_SIZE -#define CPS_SNDBUF SOCL_TCP_SOCKET_CPS_SNDBUF_SIZE -#define CPS_RCVBUF_ALIGNED ((CPS_RCVBUF + 3) & ~3) -#define CPS_SNDBUF_ALIGNED ((CPS_SNDBUF + 3) & ~3) - -SOCLInAddr SOCL_Resolve (const char * hostname) { - u8 * buffers; - CPSSoc soc; - SOCLInAddr hostip; - - if (!hostname) { - return 0; - } - - buffers = SOCLi_Alloc(CPS_RCVBUF_ALIGNED + CPS_SNDBUF_ALIGNED); - - if (buffers == NULL) { - return 0; - } - - MI_CpuClear8(&soc, sizeof(CPSSoc)); - soc.rcvbuf.data = buffers; - soc.rcvbuf.size = CPS_RCVBUF; - soc.sndbuf.data = buffers + CPS_RCVBUF_ALIGNED; - soc.sndbuf.size = CPS_SNDBUF; - - CPS_SocRegister(&soc); - hostip = CPS_Resolve((char *)hostname); - CPS_SocUnRegister(); - - SOCLi_Free(buffers); - - return hostip; -} - -SOCLInAddr SOCL_InetAtoH (const char * hostname) { - SOCLInAddr hostip; - OSIntrMode enable; - CPSInAddr dns0, dns1; - - enable = OS_DisableInterrupts(); - dns0 = CPSDnsIp[0]; - dns1 = CPSDnsIp[1]; - CPSDnsIp[0] = 0; - CPSDnsIp[1] = 0; - hostip = CPS_Resolve((char *)hostname); - CPSDnsIp[0] = dns0; - CPSDnsIp[1] = dns1; - (void)OS_RestoreInterrupts(enable); - - return hostip; -} - -int SOCL_GetResolver (SOCLInAddr * dns1, SOCLInAddr * dns2) { - SDK_ASSERT(dns1); - SDK_ASSERT(dns2); - - if (SOCL_GetHostID() == 0) { - return SOCL_ENETRESET; - } - - *dns1 = (SOCLInAddr)CPSDnsIp[0]; - *dns2 = (SOCLInAddr)CPSDnsIp[1]; - return 0; -} - -int SOCL_SetResolver (const SOCLInAddr dns1, const SOCLInAddr dns2) { - if (SOCL_GetHostID() == 0) { - return SOCL_ENETRESET; - } - - CPSDnsIp[0] = (CPSInAddr)dns1; - CPSDnsIp[1] = (CPSInAddr)dns2; - return 0; -} - -int SOCL_GetRemote (int s, u16 * port, SOCLInAddr * ip) { - SOCLSocket * socket = (SOCLSocket *)s; - - if (!SOCL_SocketIsCreated(socket)) { - return SOCL_ENETRESET; - } - - if (SOCL_SocketIsTCP(socket) && (!SOCL_SocketIsConnected(socket) || SOCL_SocketIsClosing(socket))) { - return SOCL_ENOTCONN; - } - - *port = socket->cps_socket.remote_port; - *ip = socket->cps_socket.remote_ip; - - return SOCL_ESUCCESS; -} - -SOCLInAddr SOCL_GetHostID (void) { - if (CPSMyIp == 0) { - if ((SOCLiDhcpState & (SOCL_DHCP_REQUEST | SOCL_DHCP_CALLBACK)) == SOCL_DHCP_REQUEST) { - if (OS_GetProcMode() != OS_PROCMODE_IRQ) { - OS_Sleep(10); - } - } - } else if (SOCLiRequestedIP == 0) { - SOCLiRequestedIP = CPSMyIp; - } - - return (volatile SOCLInAddr)CPSMyIp; -} diff --git a/subprojects/NitroWiFi/libraries/soc/src/socl_shutdown.c b/subprojects/NitroWiFi/libraries/soc/src/socl_shutdown.c deleted file mode 100644 index 4ff3439584..0000000000 --- a/subprojects/NitroWiFi/libraries/soc/src/socl_shutdown.c +++ /dev/null @@ -1,50 +0,0 @@ -#include - -static int SOCLi_ShutdownCallBack(void * arg); - -int SOCL_Shutdown (int s) { - SOCLSocket * socket = (SOCLSocket *)s; - SOCLiSocketSendCommandPipe * send_pipe; - SOCLiCommandPacket * command; - s32 result; - - if (SOCL_SocketIsInvalid(socket)) { - return SOCL_EINVAL; - } - - if (!SOCL_SocketIsCreated(socket)) { - return SOCL_ENETRESET; - } - - if (!SOCL_SocketIsConnected(socket) || SOCL_SocketIsClosing(socket)) { - return SOCL_ENOTCONN; - } - - socket->state |= SOCL_STATUS_CLOSING; - - send_pipe = socket->send_pipe; - - if (send_pipe && send_pipe->exe_socket) { - command = SOCLi_CreateCommandPacket(SOCLi_ShutdownCallBack, send_pipe->exe_socket, socket->flag_block); - if (NULL == command) { - return SOCL_EMFILE; - } - - result = SOCLi_ExecCommandPacketInSendPipe(send_pipe->exe_socket, command); - } else { - result = 0; - } - - return result; -} - -static int SOCLi_ShutdownCallBack (void * arg) { - SOCLiCommandShutdown * cpacket = (SOCLiCommandShutdown *)arg; - SOCLSocket * socket = (SOCLSocket *)cpacket->h.socket; - - if (SOCL_SocketIsTCP(socket)) { - CPS_TcpShutdown(); - } - - return SOCL_ESUCCESS; -} diff --git a/subprojects/NitroWiFi/libraries/soc/src/socl_ssl.c b/subprojects/NitroWiFi/libraries/soc/src/socl_ssl.c deleted file mode 100644 index c321d2c2c7..0000000000 --- a/subprojects/NitroWiFi/libraries/soc/src/socl_ssl.c +++ /dev/null @@ -1,76 +0,0 @@ -#include - -static int SOCLi_EnableSslCallBack(void * arg); -static int SOCLi_ExecEnableSslCommand(SOCLSocket * socket, SOCLSslConnection * con); - -int SOCL_EnableSsl (int s, SOCLSslConnection * con) { - SOCLSocket * socket = (SOCLSocket *)s; - - if (SOCL_SocketIsInvalid(socket)) { - return SOCL_EINVAL; - } - - if (!SOCL_SocketIsTCP(socket)) { - return SOCL_EINVAL; - } - - if (!SOCL_SocketIsCreated(socket)) { - return SOCL_ENETRESET; - } - - if (SOCL_SocketIsConnecting(socket)) { - return SOCL_EINVAL; - } - - return SOCLi_ExecEnableSslCommand(socket, con); -} - -static int SOCLi_ExecEnableSslCommand (SOCLSocket * socket, SOCLSslConnection * con) { - SOCLiCommandPacket * command; - s32 result; - - command = SOCLi_CreateCommandPacket(SOCLi_EnableSslCallBack, socket, OS_MESSAGE_BLOCK); - if (NULL == command) { - return SOCL_EMFILE; - } - - command->enable_ssl.connection = con; - - result = SOCLi_ExecCommandPacketInRecvPipe(socket, command); - - return result; -} - -static int SOCLi_EnableSslCallBack (void * arg) { - SOCLiCommandEnableSsl * cpacket = (SOCLiCommandEnableSsl *)arg; - SOCLSocket * socket = cpacket->h.socket; - SOCLiSocketRecvCommandPipe * recv_pipe; - CPSSoc * cpsoc; - - SDK_ASSERT(socket); - recv_pipe = socket->recv_pipe; - SDK_ASSERT(recv_pipe); - cpsoc = (CPSSoc *)OSi_GetSpecificData(&recv_pipe->h.thread, OSi_SPECIFIC_CPS); - SDK_ASSERT(cpsoc); - - OS_LockMutex(&recv_pipe->h.in_use); - { -#ifdef SDK_MY_DEBUG - OS_TPrintf("CPS_SetSsl(%d)\n", (cpacket->connection != NULL) ? 1 : 0); -#endif - - if (cpacket->connection != NULL) { - cpsoc->con = cpacket->connection; - CPS_SetSsl(1); - socket->flag_mode = SOCL_FLAGMODE_SSL; - } else { - socket->flag_mode = SOCL_FLAGMODE_TCP; - CPS_SetSsl(0); - cpsoc->con = NULL; - } - } - - OS_UnlockMutex(&recv_pipe->h.in_use); - - return SOCL_ESUCCESS; -} diff --git a/subprojects/NitroWiFi/libraries/soc/src/socl_startup.c b/subprojects/NitroWiFi/libraries/soc/src/socl_startup.c deleted file mode 100644 index d6248d83d0..0000000000 --- a/subprojects/NitroWiFi/libraries/soc/src/socl_startup.c +++ /dev/null @@ -1,147 +0,0 @@ -#include -#include "wcm_cpsif.h" - -CPSConfig SOCLiCPSConfig; -const SOCLConfig * SOCLiConfigPtr = NULL; -int SOCLiUDPSendSocket = 0; -int SOCLiDhcpState = 0; -SOCLInAddr SOCLiRequestedIP = 0; -u32 SOCLiYieldWait = 0; - -static void SOCLi_StartupCPS(void); -static int SOCLi_StartupSOCL(void); -static void SOCLi_SetMyIP(void); -BOOL SOCL_LinkIsOn(void); - -#include -#include -#define MODULE "WiFi"SDK_WIFI_VERSION_STRING -static char id_string[] = SDK_MIDDLEWARE_STRING("NINTENDO", MODULE); -#include - -int SOCL_Startup (const SOCLConfig * socl_config) { - SDK_USING_MIDDLEWARE(id_string); - SDK_ASSERT(socl_config); - - if (SOCLiConfigPtr) { - return 0; - } - - SOCLiConfigPtr = socl_config; - SOCLi_StartupCPS(); - return SOCLi_StartupSOCL(); -} - -static int SOCLi_StartupSOCL (void) { - int r; - - r = SOCLi_StartupCommandPacketQueue((int)SOCLiConfigPtr->cmd_packet_max); - - if (r >= 0) { - SOCLiUDPSendSocket = SOCL_UdpSendSocket(); - } - - return r; -} - -static void SOCLi_StartupCPS (void) { - CPSConfig * cps_config = &SOCLiCPSConfig; - const SOCLConfig * socl_config = SOCLiConfigPtr; - - SDK_ASSERT(socl_config->alloc); - SDK_ASSERT(socl_config->free); - - MI_CpuClear8(cps_config, sizeof(CPSConfig)); - cps_config->alloc = socl_config->alloc; - cps_config->free = socl_config->free; - cps_config->link_is_on = SOCL_LinkIsOn; - cps_config->random_seed = 0; - cps_config->yield_wait = SOCLiYieldWait; - - if (socl_config->lan_buffer_size) { - cps_config->lan_buflen = socl_config->lan_buffer_size; - } else { - cps_config->lan_buflen = SOCL_LAN_BUFFER_SIZE_DEFAULT; - } - - if (socl_config->lan_buffer) { - cps_config->lan_buf = socl_config->lan_buffer; - } else { - cps_config->lan_buf = SOCLi_Alloc(cps_config->lan_buflen); - } - - { - s32 mtu, mss, rwin; - - mtu = socl_config->mtu ? socl_config->mtu : SOCL_MTU_SIZE_DEFAULT; - rwin = socl_config->rwin ? socl_config->rwin : SOCL_RWIN_SIZE_DEFAULT; - mss = SOCLi_MTUtoMSS(mtu); - - cps_config->mymss = (u32)mss; - SOCLSocketParamTCP.buffer.rcvbuf_size = (u16)rwin; - SOCLSocketParamTCP.buffer.rcvbuf_consume_min = (u16)(rwin / 2); - } - - CPSMyIp = 0x00000000; - - if (socl_config->use_dhcp) { - SOCLiDhcpState = SOCL_DHCP_REQUEST; - cps_config->mode = 0; - cps_config->dhcp_callback = SOCLi_DhcpTimeout; - cps_config->requested_ip = SOCLiRequestedIP; - } else { - SOCLiDhcpState = 0; - cps_config->mode = CPS_DONOTUSE_DHCP; - cps_config->dhcp_callback = SOCLi_SetMyIP; - } - - CPS_SetThreadPriority(socl_config->cps_thread_prio ? socl_config->cps_thread_prio : (u32)SOCL_CPS_SOCKET_THREAD_PRIORITY); - - WCM_SetRecvDCFCallback(CPSi_RecvCallbackFunc); - - { - extern void CPS_SetScavengerCallback(void (*f) (void)); - CPS_SetScavengerCallback(SOCLi_TrashSocket); - } - -#ifdef SDK_MY_DEBUG - OS_TPrintf("CPS_Startup\n"); -#endif - CPS_Startup(cps_config); - - return; -} - -SDK_WEAK_SYMBOL void SOCLi_SetMyIPinConfig (SOCLInAddr ip, SOCLInAddr mask, SOCLInAddr gateway) { - SOCLConfig * config = (SOCLConfig *)SOCLiConfigPtr; - - if (config) { - config->host_ip.my_ip = ip; - config->host_ip.net_mask = mask; - config->host_ip.gateway_ip = gateway; - } - - return; -} - -SDK_WEAK_SYMBOL void SOCLi_SetMyIP (void) { - const SOCLConfig * config = SOCLiConfigPtr; - - SDK_ASSERT(config); - CPSMyIp = SOCL2CPSInAddr(config->host_ip.my_ip); - CPSNetMask = SOCL2CPSInAddr(config->host_ip.net_mask); - CPSGatewayIp = SOCL2CPSInAddr(config->host_ip.gateway_ip); - CPSDnsIp[0] = SOCL2CPSInAddr(config->host_ip.dns_ip[0]); - CPSDnsIp[1] = SOCL2CPSInAddr(config->host_ip.dns_ip[1]); - SOCLiDhcpState |= SOCL_DHCP_CALLBACK; - return; -} - -SDK_WEAK_SYMBOL void SOCLi_DhcpTimeout (void) { - SOCLiDhcpState |= (SOCL_DHCP_CALLBACK | SOCL_DHCP_ERROR); - return; -} - -SDK_WEAK_SYMBOL BOOL SOCL_LinkIsOn (void) { - return WCM_GetApMacAddress() != NULL; -} diff --git a/subprojects/NitroWiFi/libraries/soc/src/socl_write.c b/subprojects/NitroWiFi/libraries/soc/src/socl_write.c deleted file mode 100644 index cdde2bf1e5..0000000000 --- a/subprojects/NitroWiFi/libraries/soc/src/socl_write.c +++ /dev/null @@ -1,412 +0,0 @@ -#include - -static int SOCLi_WriteBuffer(SOCLSocket *, const u8 *, s32, u16, SOCLInAddr, s32); -static int SOCLi_ExecWriteCommand(SOCLSocket *, const u8 *, s32, s32, u16, SOCLInAddr, s32); -static int SOCLi_WriteCallBack(void *); -static s32 SOCLi_AllocWriteBuffer(SOCLSocket *, s32, s32, s32 *, s32); -static int SOCLi_MemCpy(u8 *, int, SOCLiCommandWrite *); - -#if SOCL_OPTIMIZE_TCP_SEND -static int SOCLi_GetOptimumSendBufLen(int); -#endif - -int SOCL_Write (int s, const void * buffer, int buffer_len, u16 remote_port, SOCLInAddr remote_ip) { - return SOCL_WriteTo(s, buffer, buffer_len, remote_port, remote_ip, 0); -} - -int SOCL_WriteNoBlock (int s, const void * buffer, int buffer_len, u16 remote_port, SOCLInAddr remote_ip) { - return SOCL_WriteTo(s, buffer, buffer_len, remote_port, remote_ip, SOCL_MSG_DONTWAIT); -} - -int SOCL_WriteBlock (int s, const void * buffer, int buffer_len, u16 remote_port, SOCLInAddr remote_ip) { - return SOCL_WriteTo(s, buffer, buffer_len, remote_port, remote_ip, 0); -} - -int SOCL_WriteTo (int s, const void * buffer, int buffer_len, u16 remote_port, SOCLInAddr remote_ip, int flags) { - SOCLSocket * socket = (SOCLSocket *)s; - SOCLiSocketSendCommandPipe * send_pipe; - int flag_block; - int result; - - if (SOCL_SocketIsInvalid(socket)) { - return SOCL_EINVAL; - } - - if (!SOCL_SocketIsCreated(socket)) { - return SOCL_ENETRESET; - } - - if (SOCL_SocketIsTCP(socket) && (!SOCL_SocketIsConnected(socket) || SOCL_SocketIsClosing(socket))) { - return SOCL_ENOTCONN; - } - - SDK_ASSERT(buffer && buffer_len); - send_pipe = socket->send_pipe; - SDK_ASSERT(send_pipe); - - if ((flags & SOCL_MSG_DONTWAIT) || SOCL_SocketIsNoBlock(socket)) { - if (!OS_TryLockMutex(&send_pipe->h.in_use)) { - return SOCL_EWOULDBLOCK; - } - - flag_block = SOCL_FLAGBLOCK_NOBLOCK; - } else { - OS_LockMutex(&send_pipe->h.in_use); - flag_block = SOCL_FLAGBLOCK_BLOCK; - } - - result = SOCLi_WriteBuffer(socket, buffer, buffer_len, remote_port, remote_ip, flag_block); - OS_UnlockMutex(&send_pipe->h.in_use); - - return result; -} - -static int SOCLi_WriteBuffer (SOCLSocket * socket, const u8 * buffer, s32 buffer_len, u16 remote_port, SOCLInAddr remote_ip, s32 flag_block) { - SOCLiSocketSendCommandPipe * send_pipe = socket->send_pipe; - s32 sndbuf_len; - s32 wrtbuf_in; - s32 write_len; - s32 buffer_min; - s32 copied_len = 0; -#ifdef SDK_DEBUG - s32 wrtbuf_size = (s32)send_pipe->buffer.area.size - 1; -#endif - int result; - - SDK_ASSERT(send_pipe); - SDK_ASSERT(send_pipe->exe_socket); - - sndbuf_len = (s32)send_pipe->exe_socket->cps_socket.sndbuf.size; - - if (SOCL_SocketIsUDP(socket)) { - sndbuf_len -= SOCL_UDP_SNDBUF_NOCOPY_OFFSET; - - SDK_ASSERT(sndbuf_len >= 0); - - if (buffer_len > sndbuf_len) { - return SOCL_EMSGSIZE; - } - - buffer_min = buffer_len; - } else { - sndbuf_len -= SOCL_TCP_SNDBUF_NOCOPY_OFFSET; - -#ifdef SDK_TCPSEND_DOIT_SOON - - buffer_min = (!SOCL_FLAGISBLOCK(flag_block)) ? 1 : MATH_MIN(buffer_len, sndbuf_len); -#else - - buffer_min = MATH_MIN(buffer_len, sndbuf_len); -#endif - } - - SDK_ASSERT(wrtbuf_size >= sndbuf_len); - - while (buffer_len > 0) { - write_len = SOCLi_AllocWriteBuffer(socket, buffer_len, buffer_min, &wrtbuf_in, flag_block); - - if (write_len > 0) { - result = SOCLi_ExecWriteCommand(socket, buffer, write_len, wrtbuf_in, remote_port, remote_ip, flag_block); - - if (result <= 0) { - return SOCL_EWOULDBLOCK; - } - - buffer += write_len; - buffer_len -= write_len; - copied_len += write_len; - } - - if (!SOCL_FLAGISBLOCK(flag_block)) { - if (write_len <= 0) { - return SOCL_EWOULDBLOCK; - } - break; - } - } - - return (int)copied_len; -} - -static s32 SOCLi_AllocWriteBuffer (SOCLSocket * socket, s32 max_size, s32 min_size, s32 * wrtbuf_in_ptr, s32 flag_block) { - SOCLiSocketSendCommandPipe * send_pipe = socket->send_pipe; -#ifdef SDK_DEBUG - s32 wrtbuf_size = (s32)send_pipe->buffer.area.size - 1; -#endif - s32 free_size; - OSIntrMode enable; - - SDK_ASSERT(send_pipe); - SDK_ASSERT(wrtbuf_size >= min_size); - - if (min_size > max_size) { - min_size = max_size; - } - - enable = OS_DisableInterrupts(); - while (1) { - free_size = SOCLi_GetWriteBufferFreeSize(socket); - - if (free_size >= min_size) { - if (free_size >= max_size) { - free_size = max_size; - } - - *wrtbuf_in_ptr = (s32)send_pipe->buffer.in; - break; - } - - if (!SOCL_FLAGISBLOCK(flag_block)) { - free_size = 0; - break; - } - - OS_SleepThread(&send_pipe->buffer.waiting); - } - (void)OS_RestoreInterrupts(enable); - - return free_size; -} - -s32 SOCLi_GetWriteBufferFreeSize (SOCLSocket * socket) { - SOCLiSocketSendCommandPipe * send_pipe = socket->send_pipe; - s32 wrtbuf_size; - s32 wrtbuf_in; - s32 wrtbuf_out; - s32 available_len; - - SDK_ASSERT(send_pipe); - - wrtbuf_size = (s32)send_pipe->buffer.area.size; - wrtbuf_in = (s32)send_pipe->buffer.in; - wrtbuf_out = (s32)send_pipe->buffer.out; - available_len = wrtbuf_out - wrtbuf_in - 1; - - if (available_len < 0) { - available_len += wrtbuf_size; - } - - return available_len; -} - -static int SOCLi_ExecWriteCommand (SOCLSocket * socket, const u8 * buffer, s32 buffer_len, s32 wrtbuf_in, u16 remote_port, SOCLInAddr remote_ip, s32 flag_block) { - SOCLiSocketSendCommandPipe * send_pipe = socket->send_pipe; - SOCLiCommandPacket * command; - u8 * wrtbuf; - s32 wrtbuf_size; - int result; - u16 saved_send_buffer_in; - -#ifdef SDK_MY_DEBUG - OS_TPrintf("socket=%08x exe_socket=%08x\n", socket, send_pipe->exe_socket); -#endif - - command = SOCLi_CreateCommandPacket(SOCLi_WriteCallBack, send_pipe->exe_socket, flag_block); - if (NULL == command) { - return SOCL_EMFILE; - } - - if (SOCL_FLAGISBLOCK(flag_block) && !SOCL_SocketIsUDP(socket)) { - command->h.flag_block = SOCL_FLAGBLOCK_NORESULT; - } else { - command->h.flag_block = SOCL_FLAGBLOCK_NOBLOCK; - } - - wrtbuf = (u8 *)send_pipe->buffer.area.data; - wrtbuf_size = (s32)send_pipe->buffer.area.size; - - if (wrtbuf_in + buffer_len < wrtbuf_size) { - command->write.buffer1 = wrtbuf + wrtbuf_in; - command->write.buffer1_len = buffer_len; - command->write.buffer2 = NULL; - command->write.buffer2_len = 0; - wrtbuf_in += buffer_len; - } else { - const u8 * buffer2; - - command->write.buffer1 = wrtbuf + wrtbuf_in; - command->write.buffer1_len = wrtbuf_size - wrtbuf_in; - command->write.buffer2 = wrtbuf; - command->write.buffer2_len = buffer_len - command->write.buffer1_len; - wrtbuf_in = command->write.buffer2_len; - buffer2 = buffer + command->write.buffer1_len; - MI_CpuCopy8(buffer2, command->write.buffer2, (u32)command->write.buffer2_len); - } - - MI_CpuCopy8(buffer, command->write.buffer1, (u32)command->write.buffer1_len); - - saved_send_buffer_in = send_pipe->buffer.in; - send_pipe->buffer.in = command->write.wrtbuf_after = (u16)wrtbuf_in; - - if (SOCL_SocketIsUDP(socket)) { - if (socket->local_port == 0) { - socket->local_port = CPS_SocGetEport(); - socket->cps_socket.local_port = socket->local_port; - } - - command->write.local_port = socket->local_port; - - if (socket->remote_ip == 0 || remote_ip != 0) { - command->write.remote_ip = remote_ip; - command->write.remote_port = remote_port; - } else { - command->write.remote_ip = socket->remote_ip; - command->write.remote_port = socket->remote_port; - } - } else { - command->write.remote_ip = 0; - } - - result = SOCLi_ExecCommandPacketInSendPipe(send_pipe->exe_socket, command); - - if (result != SOCL_ESUCCESS) { - send_pipe->buffer.in = saved_send_buffer_in; - buffer_len = 0; - } - - return (int)buffer_len; -} - -static int SOCLi_WriteCallBack (void * arg) { - SOCLiCommandWrite * cpacket = (SOCLiCommandWrite *)arg; - SOCLSocket * socket = cpacket->h.socket; - SOCLiSocketSendCommandPipe * send_pipe = socket->send_pipe; - u8 * sndbuf; - int sndbuf_len; - int sndbuf_offset; - int copied = 0; - int result; - - SDK_ASSERT(send_pipe); - - if ((!SOCL_SocketIsTCP(socket)) || SOCL_SocketIsConnected(socket)) { - if (cpacket->remote_ip) { -#ifdef SDK_MY_DEBUG - OS_TPrintf("WriteCallBack-BIND:%d %d %08x\n", cpacket->local_port, cpacket->remote_port, cpacket->remote_ip); -#endif - CPS_SocBind(cpacket->local_port, cpacket->remote_port, cpacket->remote_ip); - } - -#ifdef SDK_MY_DEBUG - OS_TPrintf("WriteCallBack-WRITE 1: %08x %d\n", cpacket->buffer1, cpacket->buffer1_len); - OS_TPrintf(" 2: %08x %d\n", cpacket->buffer2, cpacket->buffer2_len); - OS_DumpThreadList(); - OS_TPrintf(" CPS->rcvbuf %08x%5d\n", socket->cps_socket.rcvbuf.data, socket->cps_socket.rcvbuf.size); - OS_TPrintf(" CPS->sndbuf %08x%5d\n", socket->cps_socket.sndbuf.data, socket->cps_socket.sndbuf.size); - OS_TPrintf(" CPS->linbuf %08x%5d\n", socket->cps_socket.linbuf.data, socket->cps_socket.linbuf.size); - OS_TPrintf(" CPS->outbuf %08x%5d\n", socket->cps_socket.outbuf.data, socket->cps_socket.outbuf.size); -#endif - - sndbuf_offset = SOCL_SocketIsTCP(socket) ? SOCL_TCP_SNDBUF_NOCOPY_OFFSET : SOCL_UDP_SNDBUF_NOCOPY_OFFSET; - sndbuf = socket->cps_socket.sndbuf.data + sndbuf_offset; -#if SOCL_OPTIMIZE_TCP_SEND - if (SOCL_SocketIsTCP(socket)) { - sndbuf_len = SOCLi_GetOptimumSendBufLen((int)socket->cps_socket.sndbuf.size - sndbuf_offset); - } else { - sndbuf_len = (int)socket->cps_socket.sndbuf.size - sndbuf_offset; - } - -#else - sndbuf_len = (int)socket->cps_socket.sndbuf.size - sndbuf_offset; -#endif - - for (;;) { - result = SOCLi_MemCpy(sndbuf, sndbuf_len, cpacket); - if (result <= 0) { - break; - } - -#ifdef SDK_MY_DEBUG - OS_TPrintf("CPS_SocWrite.sendbuf =%d\n", sndbuf); - OS_TPrintf(" .sendlen =%d\n", result); -#endif - result = (int)CPS_SocWrite(sndbuf, (u32)result); - -#ifdef SDK_MY_DEBUG - OS_TPrintf("CPS_SocWrite.result =%d\n", result); -#endif - - if (result <= 0) { - if (SOCL_SocketIsTCP(socket)) { - socket->state &= ~(SOCL_STATUS_CONNECTING | SOCL_STATUS_CONNECTED | SOCL_STATUS_CLOSING); - socket->state |= SOCL_STATUS_RESET; - - CPS_TcpClose(); - } - - copied = SOCL_ETIMEDOUT; - break; - } - - copied += result; - } - } else { - copied = SOCL_ETIMEDOUT; - } - -#ifdef SDK_MY_DEBUG - OS_TPrintf("WriteCallBack-WRITE.copied=%d\n", copied); -#endif - - send_pipe->buffer.out = cpacket->wrtbuf_after; - OS_WakeupThread(&send_pipe->buffer.waiting); - - return copied; -} - -#if SOCL_OPTIMIZE_TCP_SEND - -static int SOCLi_GetOptimumSendBufLen (int len) { - CPSSoc * soc = CPS_CURSOC; - int temp = 0; - OSIntrMode enabled = OS_DisableInterrupts(); - - if (soc != NULL) { - if ((soc->remote_mss > 0) && (soc->remote_win > 0)) { - temp = 2 * MATH_IMin(MATH_IMin(soc->remote_mss, soc->remote_win), (int)SOCLiCPSConfig.mymss); - } else { - temp = 2 * (int)SOCLiCPSConfig.mymss; - } - } else { - temp = 2 * (int)SOCLiCPSConfig.mymss; - } - (void)OS_RestoreInterrupts(enabled); - - if (temp > 0) { - int count = len / temp; - - if (count > 0) { - return temp * count; - } - } - - return len; -} -#endif - -static int SOCLi_MemCpy (u8 * sndbuf_ptr, int sndbuf_len, SOCLiCommandWrite * cpacket) { - s32 buffer1_len = cpacket->buffer1_len; - s32 buffer2_len = cpacket->buffer2_len; - - if (buffer1_len > sndbuf_len) { - buffer1_len = sndbuf_len; - buffer2_len = 0; - } else if (buffer2_len > sndbuf_len - buffer1_len) { - buffer2_len = sndbuf_len - buffer1_len; - } else { - } - - if (buffer1_len > 0) { - MI_CpuCopy8(cpacket->buffer1, sndbuf_ptr, (u32)buffer1_len); - cpacket->buffer1 += buffer1_len; - cpacket->buffer1_len -= buffer1_len; - } - - if (buffer2_len > 0) { - MI_CpuCopy8(cpacket->buffer2, sndbuf_ptr + buffer1_len, (u32)buffer2_len); - cpacket->buffer2 += buffer2_len; - cpacket->buffer2_len -= buffer2_len; - } - - return buffer1_len + buffer2_len; -} diff --git a/subprojects/NitroWiFi/libraries/ssl/asm/arc4.s b/subprojects/NitroWiFi/libraries/ssl/asm/arc4.s deleted file mode 100644 index e95143eda4..0000000000 --- a/subprojects/NitroWiFi/libraries/ssl/asm/arc4.s +++ /dev/null @@ -1,74 +0,0 @@ - .include "macros/function.inc" - - - - .text - - - arm_func_start ov4_02211D9C -ov4_02211D9C: ; 0x02211D9C - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r3, #0 - strb r3, [r0] - strb r3, [r0, #1] - add r4, r0, #2 -_02211DB0: - strb r3, [r4, r3] - add r3, r3, #1 - cmp r3, #0x100 - blt _02211DB0 - mov r6, #0 - mov r5, r6 - mov r7, r6 - mov r0, r6 -_02211DD0: - ldrb lr, [r4, r7] - ldrb ip, [r1, r6] - add r3, r6, #1 - and r6, r3, #0xff - add r3, lr, ip - add r3, r5, r3 - and r5, r3, #0xff - ldrb r3, [r4, r5] - cmp r6, r2 - movge r6, r0 - strb r3, [r4, r7] - add r7, r7, #1 - strb lr, [r4, r5] - cmp r7, #0x100 - blt _02211DD0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov4_02211D9C - - arm_func_start ov4_02211E10 -ov4_02211E10: ; 0x02211E10 - stmfd sp!, {r4, r5, r6, lr} - cmp r2, #0 - add r4, r0, #2 - ldrb ip, [r0] - ldrb lr, [r0, #1] - mov r3, #0 - ble _02211E70 -_02211E2C: - add r5, ip, #1 - and ip, r5, #0xff - ldrb r6, [r4, ip] - add r5, lr, r6 - and lr, r5, #0xff - ldrb r5, [r4, lr] - strb r5, [r4, ip] - add r5, r6, r5 - strb r6, [r4, lr] - and r5, r5, #0xff - ldrb r6, [r1, r3] - ldrb r5, [r4, r5] - eor r5, r6, r5 - strb r5, [r1, r3] - add r3, r3, #1 - cmp r3, r2 - blt _02211E2C -_02211E70: - strb ip, [r0] - strb lr, [r0, #1] - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ov4_02211E10 \ No newline at end of file diff --git a/subprojects/NitroWiFi/libraries/ssl/asm/biginteger.s b/subprojects/NitroWiFi/libraries/ssl/asm/biginteger.s deleted file mode 100644 index 903c7416bd..0000000000 --- a/subprojects/NitroWiFi/libraries/ssl/asm/biginteger.s +++ /dev/null @@ -1,1080 +0,0 @@ - .include "macros/function.inc" - .include "include/biginteger.inc" - - .extern Unk_ov4_0221DE04 - .extern Unk_ov4_0221DE30 - - .text - - - arm_func_start ov4_02211E7C -ov4_02211E7C: ; 0x02211E7C - b _02211E84 -_02211E80: - sub r1, r1, #1 -_02211E84: - cmp r1, #0 - beq _02211E9C - add r2, r0, r1, lsl #1 - ldrh r2, [r2, #-2] - cmp r2, #0 - beq _02211E80 -_02211E9C: - mov r0, r1 - bx lr - arm_func_end ov4_02211E7C - - arm_func_start ov4_02211EA4 -ov4_02211EA4: ; 0x02211EA4 - stmfd sp!, {r3, lr} - sub r2, r1, #1 - mov r2, r2, lsl #1 - ldrh r2, [r0, r2] - tst r2, #0x8000 - mvnne r0, #0 - ldmneia sp!, {r3, pc} - bl ov4_02211E7C - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, pc} - arm_func_end ov4_02211EA4 - - arm_func_start ov4_02211ED4 -ov4_02211ED4: ; 0x02211ED4 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - mov r7, r1 - mov r5, r3 - mov r8, r0 - mov r6, r2 - mov r0, r7 - mov r1, r5 - bl ov4_02211E7C - mov r4, r0 - mov r0, r6 - mov r1, r5 - bl ov4_02211E7C - cmp r4, r0 - movlt r4, r0 - cmp r4, r5 - addne r4, r4, #1 - mov ip, #0 - mov r3, ip - cmp r4, #0 - ble _02211F4C -_02211F24: - mov r2, r3, lsl #1 - ldrh r1, [r7, r2] - ldrh r0, [r6, r2] - add r3, r3, #1 - cmp r3, r4 - add r0, r1, r0 - add r0, ip, r0 - strh r0, [r8, r2] - mov ip, r0, lsr #0x10 - blt _02211F24 -_02211F4C: - cmp r8, r7 - cmpne r8, r6 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - sub r1, r5, r3 - add r0, r8, r3, lsl #1 - mov r2, r1, lsl #1 - mov r1, #0 - bl MI_CpuFill8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end ov4_02211ED4 - - arm_func_start ov4_02211F70 -ov4_02211F70: ; 0x02211F70 - stmfd sp!, {r4, lr} - cmp r3, #0 - mov r4, #0 - ble _02211FA4 -_02211F80: - mov lr, r4, lsl #1 - ldrh ip, [r1, lr] - add r2, r2, ip - strh r2, [r0, lr] - movs r2, r2, lsr #0x10 - beq _02211FA4 - add r4, r4, #1 - cmp r4, r3 - blt _02211F80 -_02211FA4: - cmp r0, r1 - ldmeqia sp!, {r4, pc} - add r4, r4, #1 - cmp r4, r3 - ldmgeia sp!, {r4, pc} -_02211FB8: - mov ip, r4, lsl #1 - ldrh r2, [r1, ip] - add r4, r4, #1 - cmp r4, r3 - strh r2, [r0, ip] - blt _02211FB8 - ldmia sp!, {r4, pc} - arm_func_end ov4_02211F70 - - arm_func_start ov4_02211FD4 -ov4_02211FD4: ; 0x02211FD4 - stmfd sp!, {r3, lr} - mov r3, r1 - cmp r3, #0 - mov ip, #0 - ble _02212004 -_02211FE8: - mov r2, ip, lsl #1 - ldrh r1, [r0, r2] - add ip, ip, #1 - cmp ip, r3 - mvn r1, r1 - strh r1, [r0, r2] - blt _02211FE8 -_02212004: - mov r1, r0 - mov r2, #1 - bl ov4_02211F70 - ldmia sp!, {r3, pc} - arm_func_end ov4_02211FD4 - - arm_func_start ov4_02212014 -ov4_02212014: ; 0x02212014 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - mov r7, r1 - mov r5, r3 - mov r8, r0 - mov r6, r2 - mov r0, r7 - mov r1, r5 - bl ov4_02211E7C - mov r4, r0 - mov r0, r6 - mov r1, r5 - bl ov4_02211E7C - cmp r4, r0 - movlt r4, r0 - mov ip, #0 - cmp r4, r5 - addne r4, r4, #1 - mov r3, ip - b _02212080 -_02212060: - mov r2, r3, lsl #1 - ldrh r1, [r7, r2] - ldrh r0, [r6, r2] - add r3, r3, #1 - sub r0, r1, r0 - add r0, ip, r0 - strh r0, [r8, r2] - mov ip, r0, asr #0x10 -_02212080: - cmp r3, r4 - blt _02212060 - cmp r3, r5 - bge _02212098 - cmp ip, #0 - bne _02212060 -_02212098: - cmp r8, r7 - cmpne r8, r6 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - sub r1, r5, r3 - add r0, r8, r3, lsl #1 - mov r2, r1, lsl #1 - mov r1, #0 - bl MI_CpuFill8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end ov4_02212014 - - arm_func_start ov4_022120BC -ov4_022120BC: ; 0x022120BC - stmfd sp!, {r4, lr} - cmp r3, #0 - mov r4, #0 - ble _022120F4 -_022120CC: - mov lr, r4, lsl #1 - ldrh ip, [r1, lr] - sub ip, ip, r2 - mov r2, ip, lsr #0x10 - strh ip, [r0, lr] - ands r2, r2, #1 - beq _022120F4 - add r4, r4, #1 - cmp r4, r3 - blt _022120CC -_022120F4: - cmp r0, r1 - ldmeqia sp!, {r4, pc} - add r4, r4, #1 - cmp r4, r3 - ldmgeia sp!, {r4, pc} -_02212108: - mov ip, r4, lsl #1 - ldrh r2, [r1, ip] - add r4, r4, #1 - cmp r4, r3 - strh r2, [r0, ip] - blt _02212108 - ldmia sp!, {r4, pc} - arm_func_end ov4_022120BC - - arm_func_start ov4_02212124 -ov4_02212124: ; 0x02212124 - subs ip, r2, #1 - bmi _02212154 -_0221212C: - mov r2, ip, lsl #1 - ldrh r3, [r1, r2] - ldrh r2, [r0, r2] - cmp r2, r3 - movhi r0, #1 - bxhi lr - mvnlo r0, #0 - bxlo lr - subs ip, ip, #1 - bpl _0221212C -_02212154: - mov r0, #0 - bx lr - arm_func_end ov4_02212124 - - arm_func_start ov4_0221215C -ov4_0221215C: ; 0x0221215C - stmfd sp!, {r3, lr} - b _0221217C -_02212164: - mov lr, r2, lsl #1 - ldrh ip, [r0, lr] - add r2, r2, #1 - add r1, r1, ip - strh r1, [r0, lr] - mov r1, r1, lsr #0x10 -_0221217C: - cmp r1, #0 - ldmeqia sp!, {r3, pc} - cmp r2, r3 - blt _02212164 - ldmia sp!, {r3, pc} - arm_func_end ov4_0221215C - - arm_func_start ov4_02212190 -ov4_02212190: ; 0x02212190 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - mov r8, r3 - mov sl, r1 - mov sb, r2 - mov r2, r8, lsl #1 - mov r1, #0 - str r0, [sp] - bl MI_CpuFill8 - mov r0, sl - mov r1, r8 - bl ov4_02211E7C - mov fp, r0 - mov r0, sb - mov r1, r8 - bl ov4_02211E7C - str r0, [sp, #4] - cmp r0, #0 - mov r5, #0 - addle sp, sp, #8 - ldmleia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022121E4: - mov r6, #0 - sub r7, r8, r5 - mov r4, r5, lsl #1 - b _02212218 -_022121F4: - mov r0, r6, lsl #1 - ldrh r3, [sl, r0] - ldrh r1, [sb, r4] - ldr r0, [sp] - add r2, r5, r6 - mul r1, r3, r1 - mov r3, r8 - bl ov4_0221215C - add r6, r6, #1 -_02212218: - cmp r6, fp - cmplt r6, r7 - blt _022121F4 - ldr r0, [sp, #4] - add r5, r5, #1 - cmp r5, r0 - blt _022121E4 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end ov4_02212190 - - arm_func_start ov4_0221223C -ov4_0221223C: ; 0x0221223C - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r1 - mov r4, r3 - mov r7, r0 - mov r0, r6 - mov r1, r4 - mov r5, r2 - bl ov4_02211E7C - mov r3, #0 - mov ip, r3 - cmp r0, #0 - ble _0221228C -_0221226C: - mov r2, ip, lsl #1 - ldrh r1, [r6, r2] - add ip, ip, #1 - cmp ip, r0 - mla r1, r5, r1, r3 - strh r1, [r7, r2] - mov r3, r1, lsr #0x10 - blt _0221226C -_0221228C: - cmp ip, r4 - movlt r0, ip, lsl #1 - addlt ip, ip, #1 - sub r1, r4, ip - strlth r3, [r7, r0] - mov r2, r1, lsl #1 - add r0, r7, ip, lsl #1 - mov r1, #0 - bl MI_CpuFill8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov4_0221223C - - arm_func_start ov4_022122B4 -ov4_022122B4: ; 0x022122B4 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sb, r1 - mov r8, r2 - mov sl, r0 - mov r0, sb - mov r1, r8 - bl ov4_02211E7C - mov fp, r0 - cmp r8, fp, lsl #1 - mov r0, fp, lsl #1 - ble _022122F4 - sub r1, r8, r0 - add r0, sl, r0, lsl #1 - mov r2, r1, lsl #1 - mov r1, #0 - bl MI_CpuFill8 -_022122F4: - cmp fp, #0 - mov r4, #0 - ble _02212348 - mov r5, r4 - sub r2, r8, #1 -_02212308: - cmp r5, r8 - bge _02212348 - mov r0, r4, lsl #1 - ldrh r3, [sb, r0] - mov r0, r5, lsl #1 - cmp r5, r2 - mul r1, r3, r3 - strh r1, [sl, r0] - beq _02212348 - add r4, r4, #1 - mov r1, r1, lsr #0x10 - add r0, sl, r0 - strh r1, [r0, #2] - cmp r4, fp - add r5, r5, #2 - blt _02212308 -_02212348: - mov r6, #0 - cmp fp, #0 - ldmleia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02212354: - mov r0, r6, lsl #1 - add r4, r6, #1 - str r0, [sp] - b _022123C4 -_02212364: - mov r0, r4, lsl #1 - ldrh r1, [sb, r0] - ldr r0, [sp] - ldrh r0, [sb, r0] - mul r7, r1, r0 - ldr r0, _022123E4 ; =0x7FFF8000 - cmp r7, r0 - mov r0, sl - bhi _0221239C - mov r2, r5 - mov r3, r8 - mov r1, r7, lsl #1 - bl ov4_0221215C - b _022123C0 -_0221239C: - mov r1, r7 - mov r2, r5 - mov r3, r8 - bl ov4_0221215C - mov r1, r7 - mov r2, r5 - mov r0, sl - mov r3, r8 - bl ov4_0221215C -_022123C0: - add r4, r4, #1 -_022123C4: - cmp r4, fp - addlt r5, r6, r4 - cmplt r5, r8 - blt _02212364 - add r6, r6, #1 - cmp r6, fp - blt _02212354 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_022123E4: .word 0x7FFF8000 - arm_func_end ov4_022122B4 - - arm_func_start ov4_022123E8 -ov4_022123E8: ; 0x022123E8 - ldrh r1, [r0] - mov r0, #0 - bx lr - arm_func_end ov4_022123E8 - - arm_func_start ov4_022123F4 -ov4_022123F4: ; 0x022123F4 - ldrh r1, [r0] - ldrh r0, [r0, #-2] - mov r0, r0, lsl #0x10 - bx lr - arm_func_end ov4_022123F4 - - arm_func_start ov4_02212404 -ov4_02212404: ; 0x02212404 - ldrh r1, [r0] - ldrh r2, [r0, #-2] - ldrh r3, [r0, #-4] - orr r0, r3, r2, lsl #16 - bx lr - arm_func_end ov4_02212404 - - arm_func_start ov4_02212418 -ov4_02212418: ; 0x02212418 - ldrh r2, [r0] - ldrh r3, [r0, #-2] - orr r1, r3, r2, lsl #16 - ldrh r2, [r0, #-4] - ldrh r3, [r0, #-6] - orr r0, r3, r2, lsl #16 - bx lr - arm_func_end ov4_02212418 - - arm_func_start ov4_02212434 -ov4_02212434: ; 0x02212434 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x20 - ldr sb, [sp, #0x48] - ldr r8, [sp, #0x4c] - str r1, [sp, #4] - add r6, r8, sb, lsl #1 - str r0, [sp] - mov sl, r2 - mov r0, r6 - mov r2, sb, lsl #2 - mov r1, #0 - str r3, [sp, #8] - add r7, r6, sb, lsl #1 - bl MI_CpuFill8 - ldr r0, [sp, #4] - mov r1, sb - bl ov4_02211E7C - mov fp, r0 - mov r0, sl - mov r1, sb - bl ov4_02211E7C - mov r5, r0 - cmp fp, #0 - cmpgt r5, #0 - ble _022125CC - sub r0, sb, fp - add r0, r5, r0 - sub r4, r0, #1 - cmp r4, sb - blt _022124C0 - ldr r0, [sp, #4] - mov r1, r7 - mov r2, sb, lsl #1 - bl MI_CpuCopy8 - b _022125CC -_022124C0: - ldr r0, [sp, #4] - add r1, r6, r4, lsl #1 - mov r2, fp, lsl #1 - bl MI_CpuCopy8 - cmp r5, #2 - ble _022124F4 - add r0, sl, r5, lsl #1 - sub r0, r0, #2 - mov fp, r5, lsl #1 - bl ov4_02212404 - str r0, [sp, #0x18] - str r1, [sp, #0x10] - b _02212528 -_022124F4: - add r0, sl, r5, lsl #1 - cmp r5, #1 - sub r0, r0, #2 - ble _02212518 - mov fp, r5, lsl #1 - bl ov4_022123F4 - str r0, [sp, #0x18] - str r1, [sp, #0x10] - b _02212528 -_02212518: - mov fp, r5, lsl #1 - bl ov4_022123E8 - str r0, [sp, #0x18] - str r1, [sp, #0x10] -_02212528: - cmp r4, sb - bge _022125CC - mov r0, sb, lsl #1 - sub r0, r0, #1 - mov r0, r0, lsl #1 - str r0, [sp, #0x14] -_02212540: - ldr r2, [sp, #0x14] - mov r1, r6 - add r0, r6, #2 - bl memmove - add r0, r7, fp - bl ov4_02212418 - ldr r2, [sp, #0x18] - ldr r3, [sp, #0x10] - bl _ull_div - mov r5, r0 - ldr r0, _02212610 ; =0x0000FFFF - cmp r5, r0 - movhi r5, r0 -_02212574: - mov r2, r5, lsl #0x10 - mov r0, r8 - mov r1, sl - mov r2, r2, lsr #0x10 - mov r3, sb - bl ov4_0221223C - mov r0, r7 - mov r1, r8 - mov r2, sb - bl ov4_02212124 - cmp r0, #0 - sublt r5, r5, #1 - blt _02212574 - mov r0, r7 - mov r1, r7 - mov r2, r8 - mov r3, sb - bl ov4_02212014 - strh r5, [r6] - add r4, r4, #1 - cmp r4, sb - blt _02212540 -_022125CC: - ldr r0, [sp] - cmp r0, #0 - beq _022125E8 - ldr r1, [sp] - mov r0, r6 - mov r2, sb, lsl #1 - bl MI_CpuCopy8 -_022125E8: - ldr r0, [sp, #8] - cmp r0, #0 - addeq sp, sp, #0x20 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [sp, #8] - mov r0, r7 - mov r2, sb, lsl #1 - bl MI_CpuCopy8 - add sp, sp, #0x20 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_02212610: .word 0x0000FFFF - arm_func_end ov4_02212434 - - arm_func_start ov4_02212614 -ov4_02212614: ; 0x02212614 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc - ldr r4, _022127A0 ; =0x0221DE04 - mov r8, r3 - ldr r3, [r4, #0] - mov sl, r0 - mov r0, r8, lsl #3 - ldr r7, [sp, #0x30] - str r1, [sp, #8] - mov sb, r2 - blx r3 - movs r4, r0 - addeq sp, sp, #0xc - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - sub r1, r8, #1 - add r0, sl, #2 - mov r2, r1, lsl #1 - mov r1, #0 - add r5, r4, r8, lsl #1 - bl MI_CpuFill8 - mov r2, #1 - mov r0, sb - mov r1, r8 - strh r2, [sl] - bl ov4_02211E7C - sub r0, r8, r0 - mov r6, r0, lsl #4 - cmp r6, r8, lsl #4 - bhs _022126C8 - mov r2, #0x8000 -_0221268C: - sub r0, r8, r6, asr #4 - add r0, sb, r0, lsl #1 - ldrh r0, [r0, #-2] - and r1, r6, #0xf - tst r0, r2, lsr r1 - beq _022126BC - ldr r0, [sp, #8] - mov r1, sl - mov r2, r8, lsl #1 - bl MI_CpuCopy8 - add r6, r6, #1 - b _022126C8 -_022126BC: - add r6, r6, #1 - cmp r6, r8, lsl #4 - blo _0221268C -_022126C8: - cmp r6, r8, lsl #4 - bhs _02212788 - mov fp, r8, lsl #1 -_022126D4: - mov r0, r4 - mov r1, sl - mov r2, r8 - bl ov4_022122B4 - mov r0, r4 - mov r1, sl - mov r2, fp - bl MI_CpuCopy8 - cmp r7, #0 - beq _02212718 - str r8, [sp] - mov r0, #0 - mov r1, sl - mov r2, r7 - mov r3, sl - str r5, [sp, #4] - bl ov4_02212434 -_02212718: - sub r0, r8, r6, asr #4 - add r0, sb, r0, lsl #1 - ldrh r1, [r0, #-2] - and r2, r6, #0xf - mov r0, #0x8000 - tst r1, r0, lsr r2 - beq _0221277C - ldr r2, [sp, #8] - mov r0, r4 - mov r1, sl - mov r3, r8 - bl ov4_02212190 - mov r0, r4 - mov r1, sl - mov r2, fp - bl MI_CpuCopy8 - cmp r7, #0 - beq _0221277C - str r8, [sp] - mov r0, #0 - mov r1, sl - mov r2, r7 - mov r3, sl - str r5, [sp, #4] - bl ov4_02212434 -_0221277C: - add r6, r6, #1 - cmp r6, r8, lsl #4 - blo _022126D4 -_02212788: - ldr r1, _022127A4 ; =0x0221DE30 - mov r0, r4 - ldr r1, [r1, #0] - blx r1 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_022127A0: .word Unk_ov4_0221DE04 -_022127A4: .word Unk_ov4_0221DE30 - arm_func_end ov4_02212614 - - arm_func_start ov4_022127A8 -ov4_022127A8: ; 0x022127A8 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - ldr sb, [sp, #0x38] - mov sl, r3 - add fp, sb, sl, lsl #1 - add r4, fp, sl, lsl #1 - add r5, r4, sl, lsl #1 - add r6, r5, sl, lsl #1 - add r7, r6, sl, lsl #1 - str r0, [sp, #8] - mov r0, r1 - add r1, r7, sl, lsl #1 - str r1, [sp, #0x10] - mov r8, sl, lsl #1 - str r2, [sp, #0xc] - mov r1, sb - mov r2, r8 - bl MI_CpuCopy8 - ldr r0, [sp, #0xc] - mov r1, r4 - mov r2, r8 - bl MI_CpuCopy8 - mov r0, #1 - strh r0, [r4, r8] - mov r0, sb - mov r1, sl - bl ov4_02211EA4 - cmp r0, #0 - ble _022128B8 -_0221281C: - ldr r3, [sp, #0x10] - str sl, [sp] - str r3, [sp, #4] - mov r0, fp - mov r1, r4 - mov r2, sb - mov r3, r7 - bl ov4_02212434 - mov r0, sb - mov r1, r4 - mov r2, r8 - bl MI_CpuCopy8 - mov r0, r7 - mov r1, sb - mov r2, r8 - bl MI_CpuCopy8 - mov r0, r7 - mov r1, fp - mov r2, r5 - mov r3, sl - bl ov4_02212190 - mov r0, r7 - mov r1, r6 - mov r2, r7 - mov r3, sl - bl ov4_02212014 - mov r0, r5 - mov r1, r6 - mov r2, r8 - bl MI_CpuCopy8 - mov r0, r7 - mov r1, r5 - mov r2, r8 - bl MI_CpuCopy8 - mov r0, sb - mov r1, sl - bl ov4_02211EA4 - cmp r0, #0 - bgt _0221281C -_022128B8: - ldr r2, [sp, #0xc] - mov r0, r6 - mov r1, r6 - mov r3, sl - bl ov4_02211ED4 - ldr r2, [sp, #0xc] - ldr r3, [sp, #8] - ldr r4, [sp, #0x10] - str sl, [sp] - mov r1, r6 - mov r0, #0 - str r4, [sp, #4] - bl ov4_02212434 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end ov4_022127A8 - - arm_func_start ov4_022128F4 -ov4_022128F4: ; 0x022128F4 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r6, r3 - mov r4, r6, lsl #1 - mov r8, r2 - mov r2, r4 - mov r7, r0 - mov sb, r1 - ldr r5, [sp, #0x20] - bl MI_CpuCopy8 - cmp r8, #1 - bne _02212934 - mov r0, r7 - mov r1, sb - mov r2, r6 - bl ov4_022122B4 - b _02212950 -_02212934: - cmp r8, #0 - beq _02212950 - mov r0, r7 - mov r1, sb - mov r2, r8 - mov r3, r6 - bl ov4_02212190 -_02212950: - ldr r0, [sp, #0x2c] - ldr r2, [sp, #0x28] - mov r1, r7 - mov r3, r5 - bl ov4_02212190 - sub r1, r6, r5 - ldr r0, [sp, #0x2c] - mov r8, r1, lsl #1 - mov r2, r8 - add r0, r0, r5, lsl #1 - mov r1, #0 - bl MI_CpuFill8 - ldr r0, [sp, #0x30] - ldr r1, [sp, #0x2c] - ldr r2, [sp, #0x24] - mov r3, r6 - bl ov4_02212190 - mov r0, r7 - mov r1, r7 - ldr r2, [sp, #0x30] - mov r3, r6 - bl ov4_02211ED4 - mov r2, r8 - mov r0, r7 - add r1, r7, r5, lsl #1 - bl memmove - add r0, r7, r6, lsl #1 - sub r0, r0, r5, lsl #1 - mov r2, r5, lsl #1 - mov r1, #0 - bl MI_CpuFill8 - mov r0, r7 - ldr r1, [sp, #0x24] - mov r2, r6 - bl ov4_02212124 - cmp r0, #0 - beq _022129F0 - cmp r0, #1 - beq _02212A04 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022129F0: - mov r0, r7 - mov r2, r4 - mov r1, #0 - bl MI_CpuFill8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_02212A04: - ldr r2, [sp, #0x24] - mov r0, r7 - mov r1, r7 - mov r3, r6 - bl ov4_02212014 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end ov4_022128F4 - - arm_func_start ov4_02212A1C -ov4_02212A1C: ; 0x02212A1C - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x2c - mov sl, r3 - mov r3, #0x16 - mul r4, sl, r3 - ldr r3, _02212C20 ; =0x0221DE04 - mov fp, r0 - ldr r3, [r3, #0] - mov r0, r4 - ldr sb, [sp, #0x50] - str r1, [sp, #0x14] - str r2, [sp, #0x18] - blx r3 - str r0, [sp, #0x28] - cmp r0, #0 - addeq sp, sp, #0x2c - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r2, r4 - mov r1, #0 - bl MI_CpuFill8 - ldr r0, [sp, #0x28] - mov r1, sl - add r6, r0, sl, lsl #1 - add r0, r6, sl, lsl #1 - add r7, r0, sl, lsl #1 - add r8, r7, sl, lsl #1 - str r0, [sp, #0x24] - add r0, r8, sl, lsl #1 - str r0, [sp, #0x20] - add r5, r0, sl, lsl #1 - mov r0, sb - bl ov4_02211E7C - mov r4, r0 - ldr r0, [sp, #0x28] - mov r2, #1 - mov r1, r4, lsl #1 - strh r2, [r0, r1] - ldr r0, [sp, #0x24] - ldr r1, [sp, #0x28] - str r0, [sp] - mov r0, r6 - mov r2, sb - mov r3, sl - bl ov4_022127A8 - ldr r1, [sp, #0x28] - mov r0, r7 - mov r2, r6 - mov r3, sl - bl ov4_02212190 - mov r0, r6 - mov r1, r7 - mov r2, #1 - mov r3, sl - bl ov4_022120BC - str sl, [sp] - mov r0, r6 - mov r1, r6 - mov r2, sb - mov r3, #0 - str r5, [sp, #4] - bl ov4_02212434 - ldr r1, [sp, #0x14] - ldr r0, [sp, #0x24] - ldr r2, [sp, #0x28] - mov r3, sl - bl ov4_02212190 - ldr r1, [sp, #0x24] - str sl, [sp] - mov r0, #0 - mov r2, sb - mov r3, r1 - str r5, [sp, #4] - bl ov4_02212434 - str sl, [sp] - ldr r1, [sp, #0x28] - mov r0, #0 - mov r2, sb - mov r3, fp - str r5, [sp, #4] - bl ov4_02212434 - movs r0, r4, lsl #4 - mov r5, #0 - str r0, [sp, #0x1c] - beq _02212BE4 -_02212B6C: - stmia sp, {r4, sb} - str r6, [sp, #8] - str r7, [sp, #0xc] - ldr r1, [sp, #0x20] - mov r0, fp - mov r2, #1 - mov r3, sl - str r8, [sp, #0x10] - bl ov4_022128F4 - ldr r1, [sp, #0x18] - sub r2, r4, r5, asr #4 - add r1, r1, r2, lsl #1 - ldrh r2, [r1, #-2] - and r0, r5, #0xf - mov r1, #0x8000 - tst r2, r1, lsr r0 - beq _02212BD4 - stmia sp, {r4, sb} - str r6, [sp, #8] - str r7, [sp, #0xc] - ldr r1, [sp, #0x20] - ldr r2, [sp, #0x24] - mov r0, fp - mov r3, sl - str r8, [sp, #0x10] - bl ov4_022128F4 -_02212BD4: - ldr r0, [sp, #0x1c] - add r5, r5, #1 - cmp r5, r0 - blo _02212B6C -_02212BE4: - stmia sp, {r4, sb} - str r6, [sp, #8] - str r7, [sp, #0xc] - ldr r1, [sp, #0x20] - mov r0, fp - mov r3, sl - mov r2, #0 - str r8, [sp, #0x10] - bl ov4_022128F4 - ldr r1, _02212C24 ; =0x0221DE30 - ldr r0, [sp, #0x28] - ldr r1, [r1, #0] - blx r1 - add sp, sp, #0x2c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_02212C20: .word Unk_ov4_0221DE04 -_02212C24: .word Unk_ov4_0221DE30 - arm_func_end ov4_02212A1C - - arm_func_start ov4_02212C28 -ov4_02212C28: ; 0x02212C28 - stmfd sp!, {r4, r5, r6, lr} - mov r6, r1 - mov r5, r2 - mov r2, r3, lsl #1 - mov r1, #0 - mov r4, r0 - bl MI_CpuFill8 - sub r0, r5, #1 - cmp r5, #1 - add r6, r6, r0 - ble _02212C74 -_02212C54: - ldrb r1, [r6] - ldrb r0, [r6, #-1] - sub r5, r5, #2 - cmp r5, #1 - add r0, r1, r0, lsl #8 - strh r0, [r4], #2 - sub r6, r6, #2 - bgt _02212C54 -_02212C74: - cmp r5, #0 - ldrgtb r0, [r6] - strgth r0, [r4] - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ov4_02212C28 - - arm_func_start ov4_02212C84 -ov4_02212C84: ; 0x02212C84 - sub r3, r2, #1 - cmp r2, #1 - add r0, r0, r3 - ble _02212CB8 -_02212C94: - ldrh r3, [r1] - sub ip, r0, #1 - sub r2, r2, #2 - strb r3, [r0], #-2 - ldrh r3, [r1], #2 - cmp r2, #1 - mov r3, r3, asr #8 - strb r3, [ip] - bgt _02212C94 -_02212CB8: - cmp r2, #0 - ldrgth r1, [r1] - strgtb r1, [r0] - bx lr - arm_func_end ov4_02212C84 \ No newline at end of file diff --git a/subprojects/NitroWiFi/libraries/ssl/asm/incbin/md5.bin b/subprojects/NitroWiFi/libraries/ssl/asm/incbin/md5.bin deleted file mode 100644 index 2c18ebda78..0000000000 Binary files a/subprojects/NitroWiFi/libraries/ssl/asm/incbin/md5.bin and /dev/null differ diff --git a/subprojects/NitroWiFi/libraries/ssl/asm/incbin/sha1.bin b/subprojects/NitroWiFi/libraries/ssl/asm/incbin/sha1.bin deleted file mode 100644 index 4b54fd4659..0000000000 Binary files a/subprojects/NitroWiFi/libraries/ssl/asm/incbin/sha1.bin and /dev/null differ diff --git a/subprojects/NitroWiFi/libraries/ssl/asm/incbin/ssl.bin b/subprojects/NitroWiFi/libraries/ssl/asm/incbin/ssl.bin deleted file mode 100644 index fd56ac5b98..0000000000 Binary files a/subprojects/NitroWiFi/libraries/ssl/asm/incbin/ssl.bin and /dev/null differ diff --git a/subprojects/NitroWiFi/libraries/ssl/asm/include/biginteger.inc b/subprojects/NitroWiFi/libraries/ssl/asm/include/biginteger.inc deleted file mode 100644 index be44f4fee5..0000000000 --- a/subprojects/NitroWiFi/libraries/ssl/asm/include/biginteger.inc +++ /dev/null @@ -1,22 +0,0 @@ -.public MI_CpuFill8 -.public MI_CpuCopy8 -.public memmove -.public _ull_div -.public ov4_02211E7C -.public ov4_02211EA4 -.public ov4_02211ED4 -.public ov4_02211F70 -.public ov4_02212014 -.public ov4_022120BC -.public ov4_02212124 -.public ov4_0221215C -.public ov4_02212190 -.public ov4_0221223C -.public ov4_022122B4 -.public ov4_022123E8 -.public ov4_022123F4 -.public ov4_02212404 -.public ov4_02212418 -.public ov4_02212434 -.public ov4_022127A8 -.public ov4_022128F4 diff --git a/subprojects/NitroWiFi/libraries/ssl/asm/include/md5.inc b/subprojects/NitroWiFi/libraries/ssl/asm/include/md5.inc deleted file mode 100644 index 4c1559aed3..0000000000 --- a/subprojects/NitroWiFi/libraries/ssl/asm/include/md5.inc +++ /dev/null @@ -1,6 +0,0 @@ -.public MI_CpuFill8 -.public MI_CpuCopy8 -.public ov4_02210EEC -.public ov4_02210F04 -.public ov4_02210F1C -.public ov4_02211380 diff --git a/subprojects/NitroWiFi/libraries/ssl/asm/include/sha1.inc b/subprojects/NitroWiFi/libraries/ssl/asm/include/sha1.inc deleted file mode 100644 index a1bc1be026..0000000000 --- a/subprojects/NitroWiFi/libraries/ssl/asm/include/sha1.inc +++ /dev/null @@ -1,7 +0,0 @@ -.public MI_CpuFill8 -.public MI_CpuCopy8 -.public ov4_022114A0 -.public ov4_022114E4 -.public ov4_02211528 -.public ov4_02211570 -.public ov4_02211C4C diff --git a/subprojects/NitroWiFi/libraries/ssl/asm/include/ssl.inc b/subprojects/NitroWiFi/libraries/ssl/asm/include/ssl.inc deleted file mode 100644 index f712747b00..0000000000 --- a/subprojects/NitroWiFi/libraries/ssl/asm/include/ssl.inc +++ /dev/null @@ -1,89 +0,0 @@ -.public OSi_ReferSymbol -.public OS_WakeupThreadDirect -.public OS_SetThreadPriority -.public OS_GetThreadPriority -.public OS_GetTick -.public OS_DisableInterrupts -.public OS_RestoreInterrupts -.public MI_CpuFill8 -.public MI_CpuCopy8 -.public RTC_GetDate -.public RTC_GetTime -.public RTC_ConvertDateTimeToSecond -.public memcmp -.public strlen -.public strcmp -.public ov4_0220BE14 -.public ov4_0220BEA8 -.public ov4_0220BFEC -.public ov4_0220C154 -.public ov4_0220C234 -.public ov4_0220C3FC -.public ov4_0220DA10 -.public ov4_0220DAA4 -.public ov4_0220DB44 -.public ov4_0220DC30 -.public ov4_0220DC98 -.public ov4_0220DCF0 -.public ov4_0220DD3C -.public ov4_0220DD88 -.public ov4_0220DDD4 -.public ov4_0220DE24 -.public ov4_0220DE90 -.public ov4_0220DF10 -.public ov4_0220E400 -.public ov4_0220E5A8 -.public ov4_0220E68C -.public ov4_0220E6B0 -.public ov4_0220E71C -.public ov4_0220E940 -.public ov4_0220E9F4 -.public ov4_0220EA40 -.public ov4_0220EAA0 -.public ov4_0220EAB0 -.public ov4_0220EB78 -.public ov4_0220EC14 -.public ov4_0220EE54 -.public ov4_0220EEF0 -.public ov4_0220EF50 -.public ov4_0220F11C -.public ov4_0220F158 -.public ov4_0220F234 -.public ov4_0220F310 -.public ov4_0220F3D0 -.public ov4_0220F3F4 -.public ov4_0220F40C -.public ov4_0220F63C -.public ov4_0220F840 -.public ov4_0220F8AC -.public ov4_0220F8D8 -.public ov4_0220FB58 -.public ov4_0220FCF8 -.public CPS_SslAddRandomSeed -.public ov4_0220FE98 -.public ov4_022100F8 -.public ov4_02210250 -.public ov4_022103E4 -.public ov4_022106A4 -.public ov4_022106D4 -.public ov4_022107CC -.public ov4_02210A14 -.public ov4_02211338 -.public ov4_02211380 -.public ov4_02211438 -.public ov4_02211BF8 -.public ov4_02211C4C -.public ov4_02211D04 -.public ov4_02211D6C -.public ov4_02211D9C -.public ov4_02211E10 -.public ov4_02211EA4 -.public ov4_02211ED4 -.public ov4_02211FD4 -.public ov4_02212014 -.public ov4_02212190 -.public ov4_02212434 -.public ov4_02212614 -.public ov4_02212A1C -.public ov4_02212C28 -.public ov4_02212C84 diff --git a/subprojects/NitroWiFi/libraries/ssl/asm/macros/function.inc b/subprojects/NitroWiFi/libraries/ssl/asm/macros/function.inc deleted file mode 100644 index f71cc4ccae..0000000000 --- a/subprojects/NitroWiFi/libraries/ssl/asm/macros/function.inc +++ /dev/null @@ -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 \ No newline at end of file diff --git a/subprojects/NitroWiFi/libraries/ssl/asm/md5.s b/subprojects/NitroWiFi/libraries/ssl/asm/md5.s deleted file mode 100644 index 8baa5fdc6c..0000000000 --- a/subprojects/NitroWiFi/libraries/ssl/asm/md5.s +++ /dev/null @@ -1,424 +0,0 @@ - .include "macros/function.inc" - .include "include/md5.inc" - - - - .text - - - arm_func_start ov4_02210EEC -ov4_02210EEC: ; 0x02210EEC - ldr ip, _02210F00 ; =MI_CpuCopy8 - mov r3, r0 - mov r0, r1 - mov r1, r3 - bx ip - ; .align 2, 0 -_02210F00: .word MI_CpuCopy8 - arm_func_end ov4_02210EEC - - arm_func_start ov4_02210F04 -ov4_02210F04: ; 0x02210F04 - ldr ip, _02210F18 ; =MI_CpuCopy8 - mov r3, r0 - mov r0, r1 - mov r1, r3 - bx ip - ; .align 2, 0 -_02210F18: .word MI_CpuCopy8 - arm_func_end ov4_02210F04 - - arm_func_start ov4_02210F1C -ov4_02210F1C: ; 0x02210F1C - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x44 - str r0, [sp] - ldr r3, [sp] - add r0, sp, #4 - mov r2, #0x40 - ldmia r3, {r4, r5, r6, r7} - bl ov4_02210F04 - mov r3, #0 - ldr lr, _02211330 ; =0x0221A224 - mov ip, r3 - add r2, sp, #4 -_02210F4C: - ldr r1, _02211334 ; =0x0221A2A4 - ldrb r0, [lr] - add sb, r1, r3, lsl #2 - eor r1, r6, r7 - and r8, r5, r1 - ldr r1, _02211334 ; =0x0221A2A4 - ldr r0, [r2, r0, lsl #2] - ldr sl, [r1, r3, lsl #2] - eor r1, r7, r8 - add r0, r1, r0 - add r0, sl, r0 - add r1, r4, r0 - mov r0, r1, lsr #0x19 - orr r0, r0, r1, lsl #7 - ldrb r1, [lr, #1] - add r4, r5, r0 - eor r0, r5, r6 - and r0, r4, r0 - ldr sl, [r2, r1, lsl #2] - eor r0, r6, r0 - add r0, r0, sl - ldr r8, [sb, #4] - ldrb sl, [lr, #2] - add r0, r8, r0 - add r7, r7, r0 - mov r0, r7, lsr #0x14 - orr r0, r0, r7, lsl #12 - add r7, r4, r0 - eor r0, r4, r5 - and r0, r7, r0 - ldr r1, [sb, #8] - ldrb fp, [lr, #3] - ldr sl, [r2, sl, lsl #2] - eor r0, r5, r0 - add r0, r0, sl - add r0, r1, r0 - add r6, r6, r0 - mov r1, r6, lsr #0xf - orr r1, r1, r6, lsl #17 - add ip, ip, #1 - eor r8, r7, r4 - add r6, r7, r1 - and r1, r6, r8 - ldr r0, [r2, fp, lsl #2] - eor r1, r4, r1 - ldr sb, [sb, #0xc] - add r0, r1, r0 - add r0, sb, r0 - add r1, r5, r0 - mov r0, r1, lsr #0xa - orr r0, r0, r1, lsl #22 - add lr, lr, #4 - add r5, r6, r0 - add r3, r3, #4 - cmp ip, #4 - blt _02210F4C - ldr r0, _02211330 ; =0x0221A224 - ldr lr, _02211334 ; =0x0221A2A4 - mov fp, #0 - add sl, r0, r3 - add sb, sp, #4 -_02211040: - ldrb r0, [sl] - add ip, lr, r3, lsl #2 - eor r1, r5, r6 - and r1, r7, r1 - ldr r8, [lr, r3, lsl #2] - eor r1, r6, r1 - ldr r0, [sb, r0, lsl #2] - ldr r2, [ip, #4] - add r0, r1, r0 - add r0, r8, r0 - add r1, r4, r0 - mov r0, r1, lsr #0x1b - orr r1, r0, r1, lsl #5 - ldrb r0, [sl, #1] - add r4, r5, r1 - eor r1, r4, r5 - and r1, r6, r1 - eor r1, r5, r1 - ldr r0, [sb, r0, lsl #2] - ldr r8, [ip, #8] - add r0, r1, r0 - add r0, r2, r0 - add r2, r7, r0 - ldr r0, [ip, #0xc] - mov r1, r2, lsr #0x17 - orr r1, r1, r2, lsl #9 - add r7, r4, r1 - eor r1, r7, r4 - and r1, r5, r1 - eor r2, r4, r1 - ldrb r1, [sl, #2] - ldrb ip, [sl, #3] - add sl, sl, #4 - ldr r1, [sb, r1, lsl #2] - ldr ip, [sb, ip, lsl #2] - add r1, r2, r1 - add r1, r8, r1 - add r2, r6, r1 - mov r1, r2, lsr #0x12 - orr r1, r1, r2, lsl #14 - add r6, r7, r1 - eor r1, r6, r7 - and r1, r4, r1 - eor r1, r7, r1 - add r1, r1, ip - add r0, r0, r1 - add r1, r5, r0 - mov r0, r1, lsr #0xc - orr r0, r0, r1, lsl #20 - add r5, r6, r0 - add r3, r3, #4 - add fp, fp, #1 - cmp fp, #4 - blt _02211040 - ldr r0, _02211330 ; =0x0221A224 - ldr r1, _02211334 ; =0x0221A2A4 - add r2, r0, r3 - mov r8, #0 - add r0, sp, #4 -_0221112C: - ldrb sb, [r2] - add fp, r1, r3, lsl #2 - eor ip, r5, r6 - ldr sl, [r0, sb, lsl #2] - eor ip, r7, ip - ldr sb, [r1, r3, lsl #2] - add sl, ip, sl - add sb, sb, sl - add sb, r4, sb - mov r4, sb, lsr #0x1c - ldrb sl, [r2, #1] - orr r4, r4, sb, lsl #4 - add r4, r5, r4 - eor sb, r4, r5 - eor sb, r6, sb - ldr ip, [r0, sl, lsl #2] - ldr sl, [fp, #4] - add sb, sb, ip - add sb, sl, sb - add sb, r7, sb - mov r7, sb, lsr #0x15 - orr r7, r7, sb, lsl #11 - ldrb sb, [r2, #2] - add r7, r4, r7 - ldr sl, [fp, #8] - ldr ip, [r0, sb, lsl #2] - ldr sb, [fp, #0xc] - eor fp, r7, r4 - eor fp, r5, fp - add fp, fp, ip - add sl, sl, fp - add sl, r6, sl - mov r6, sl, lsr #0x10 - orr r6, r6, sl, lsl #16 - add r6, r7, r6 - eor sl, r6, r7 - eor fp, r4, sl - ldrb sl, [r2, #3] - add r2, r2, #4 - add r3, r3, #4 - ldr sl, [r0, sl, lsl #2] - add r8, r8, #1 - add sl, fp, sl - add sb, sb, sl - add sb, r5, sb - cmp r8, #4 - mov r5, sb, lsr #9 - orr r5, r5, sb, lsl #23 - add r5, r6, r5 - blt _0221112C - ldr r0, _02211330 ; =0x0221A224 - mov sb, #0 - add r8, r0, r3 - add r2, sp, #4 -_02211204: - ldr r1, _02211334 ; =0x0221A2A4 - ldrb r0, [r8] - add fp, r1, r3, lsl #2 - mvn r1, r7 - orr sl, r5, r1 - ldr r1, _02211334 ; =0x0221A2A4 - ldr r0, [r2, r0, lsl #2] - ldr ip, [r1, r3, lsl #2] - eor r1, r6, sl - add r0, r1, r0 - add r0, ip, r0 - add r1, r4, r0 - mov r0, r1, lsr #0x1a - orr r0, r0, r1, lsl #6 - ldrb r1, [r8, #1] - add r4, r5, r0 - mvn r0, r6 - orr r0, r4, r0 - ldr ip, [r2, r1, lsl #2] - eor r0, r5, r0 - add r0, r0, ip - ldr sl, [fp, #4] - ldrb ip, [r8, #2] - add r0, sl, r0 - add r7, r7, r0 - mov r0, r7, lsr #0x16 - orr r0, r0, r7, lsl #10 - add r7, r4, r0 - mvn r0, r5 - orr r0, r7, r0 - ldr r1, [fp, #8] - ldrb lr, [r8, #3] - ldr ip, [r2, ip, lsl #2] - eor r0, r4, r0 - add r0, r0, ip - add r0, r1, r0 - add r6, r6, r0 - mov r1, r6, lsr #0x11 - orr r1, r1, r6, lsl #15 - add sb, sb, #1 - mvn sl, r4 - add r6, r7, r1 - orr r1, r6, sl - ldr r0, [r2, lr, lsl #2] - eor r1, r7, r1 - ldr fp, [fp, #0xc] - add r0, r1, r0 - add r0, fp, r0 - add r1, r5, r0 - mov r0, r1, lsr #0xb - orr r0, r0, r1, lsl #21 - add r8, r8, #4 - add r5, r6, r0 - add r3, r3, #4 - cmp sb, #4 - blt _02211204 - ldr r0, [sp] - ldr r0, [r0, #0] - add r1, r0, r4 - ldr r0, [sp] - str r1, [r0, #0] - ldr r0, [r0, #4] - add r1, r0, r5 - ldr r0, [sp] - str r1, [r0, #4] - ldr r0, [r0, #8] - add r1, r0, r6 - ldr r0, [sp] - str r1, [r0, #8] - ldr r0, [r0, #0xc] - add r1, r0, r7 - ldr r0, [sp] - str r1, [r0, #0xc] - add sp, sp, #0x44 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_02211330: .word Unk_ov4_0221A224 -_02211334: .word Unk_ov4_0221A2A4 - arm_func_end ov4_02210F1C - - arm_func_start ov4_02211338 -ov4_02211338: ; 0x02211338 - stmfd sp!, {r4, lr} - mov r1, #0 - mov r2, #0x58 - mov r4, r0 - bl MI_CpuFill8 - ldr r1, _02211370 ; =0x67452301 - ldr r0, _02211374 ; =0xEFCDAB89 - str r1, [r4, #0] - ldr r1, _02211378 ; =0x98BADCFE - str r0, [r4, #4] - ldr r0, _0221137C ; =0x10325476 - str r1, [r4, #8] - str r0, [r4, #0xc] - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02211370: .word 0x67452301 -_02211374: .word 0xEFCDAB89 -_02211378: .word 0x98BADCFE -_0221137C: .word 0x10325476 - arm_func_end ov4_02211338 - - arm_func_start ov4_02211380 -ov4_02211380: ; 0x02211380 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - mov r8, r0 - ldr r3, [r8, #0x10] - mov r6, r2 - add r0, r3, r6, lsl #3 - str r0, [r8, #0x10] - cmp r0, r6, lsl #3 - ldrlo r0, [r8, #0x14] - mov r2, r3, lsr #3 - addlo r0, r0, #1 - strlo r0, [r8, #0x14] - ldr r0, [r8, #0x14] - and r4, r2, #0x3f - rsb r5, r4, #0x40 - add r0, r0, r6, lsr #29 - mov r7, r1 - str r0, [r8, #0x14] - cmp r6, r5 - blo _0221141C - add r1, r8, #0x18 - mov r0, r7 - mov r2, r5 - add r1, r1, r4 - bl MI_CpuCopy8 - mov r0, r8 - add r1, r8, #0x18 - mov r4, #0 - bl ov4_02210F1C - add r0, r5, #0x3f - cmp r0, r6 - bhs _02211420 -_022113FC: - mov r0, r8 - add r1, r7, r5 - bl ov4_02210F1C - add r5, r5, #0x40 - add r0, r5, #0x3f - cmp r0, r6 - blo _022113FC - b _02211420 -_0221141C: - mov r5, #0 -_02211420: - add r1, r8, #0x18 - add r0, r7, r5 - add r1, r1, r4 - sub r2, r6, r5 - bl MI_CpuCopy8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end ov4_02211380 - - arm_func_start ov4_02211438 -ov4_02211438: ; 0x02211438 - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - mov r0, r4 - add r1, r5, #0x10 - mov r2, #8 - bl ov4_02210EEC - ldr r0, [r5, #0x10] - ldr r1, _0221149C ; =0x0221A264 - mov r0, r0, lsr #3 - and r0, r0, #0x3f - cmp r0, #0x38 - rsblt r2, r0, #0x38 - rsbge r2, r0, #0x78 - mov r0, r5 - bl ov4_02211380 - mov r0, r5 - mov r1, r4 - mov r2, #8 - bl ov4_02211380 - mov r0, r4 - mov r1, r5 - mov r2, #0x10 - bl ov4_02210EEC - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0221149C: .word Unk_ov4_0221A264 - arm_func_end ov4_02211438 - - .data - - - .global Unk_ov4_0221A224 -Unk_ov4_0221A224: ; 0x0221A224 - .incbin "incbin/md5.bin", 0x0, 0x40 - - .global Unk_ov4_0221A264 -Unk_ov4_0221A264: ; 0x0221A264 - .incbin "incbin/md5.bin", 0x40, 0x80 - 0x40 - - .global Unk_ov4_0221A2A4 -Unk_ov4_0221A2A4: ; 0x0221A2A4 - .incbin "incbin/md5.bin", 0x80, 0x100 - diff --git a/subprojects/NitroWiFi/libraries/ssl/asm/sha1.s b/subprojects/NitroWiFi/libraries/ssl/asm/sha1.s deleted file mode 100644 index fa90d198d9..0000000000 --- a/subprojects/NitroWiFi/libraries/ssl/asm/sha1.s +++ /dev/null @@ -1,635 +0,0 @@ - .include "macros/function.inc" - .include "include/sha1.inc" - - - - .text - - - arm_func_start ov4_022114A0 -ov4_022114A0: ; 0x022114A0 - add r2, r0, #0xd - add ip, r0, #2 - and r3, r2, #0xf - eor r2, r0, #8 - and ip, ip, #0xf - ldr r3, [r1, r3, lsl #2] - ldr r2, [r1, r2, lsl #2] - ldr ip, [r1, ip, lsl #2] - eor r2, r3, r2 - ldr r3, [r1, r0, lsl #2] - eor r2, ip, r2 - eor r3, r3, r2 - mov r2, r3, lsr #0x1f - orr r2, r2, r3, lsl #1 - str r2, [r1, r0, lsl #2] - mov r0, r2 - bx lr - arm_func_end ov4_022114A0 - - arm_func_start ov4_022114E4 -ov4_022114E4: ; 0x022114E4 - stmfd sp!, {r3, lr} - movs r2, r2, lsr #2 - mov lr, #0 - ldmeqia sp!, {r3, pc} -_022114F4: - ldr ip, [r1], #4 - add lr, lr, #1 - mov r3, ip, lsr #0x18 - strb r3, [r0] - mov r3, ip, lsr #0x10 - strb r3, [r0, #1] - mov r3, ip, lsr #8 - strb r3, [r0, #2] - strb ip, [r0, #3] - cmp lr, r2 - add r0, r0, #4 - blo _022114F4 - ldmia sp!, {r3, pc} - arm_func_end ov4_022114E4 - - arm_func_start ov4_02211528 -ov4_02211528: ; 0x02211528 - stmfd sp!, {r3, r4, r5, lr} - mov r5, #0 - cmp r2, #0 - ldmlsia sp!, {r3, r4, r5, pc} -_02211538: - add r4, r1, r5 - ldrb r3, [r4, #1] - ldrb ip, [r1, r5] - ldrb lr, [r4, #2] - mov r3, r3, lsl #0x10 - orr r3, r3, ip, lsl #24 - ldrb ip, [r4, #3] - orr r3, r3, lr, lsl #8 - add r5, r5, #4 - orr r3, ip, r3 - cmp r5, r2 - str r3, [r0, #0], #4 - blo _02211538 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov4_02211528 - - arm_func_start ov4_02211570 -ov4_02211570: ; 0x02211570 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x50 - str r0, [sp] - ldr r3, [sp] - add r0, sp, #0x10 - ldmia r3, {r4, r5, r7, r8, sb} - mov r2, #0x40 - bl ov4_02211528 - mov r0, #0 - ldr r3, _02211BE8 ; =0x5A827999 - mov r2, r0 - add r1, sp, #0x10 -_022115A0: - eor r6, r7, r8 - mov sl, r4, lsr #0x1b - and r6, r5, r6 - orr fp, sl, r4, lsl #5 - eor r6, r8, r6 - mov sl, r5, lsr #2 - orr sl, sl, r5, lsl #30 - add r5, r1, r0, lsl #2 - add r6, fp, r6 - ldr ip, [r1, r0, lsl #2] - ldr fp, [r5, #4] - add r6, ip, r6 - add r6, r6, r3 - add sb, sb, r6 - mov r6, sb, lsr #0x1b - orr r6, r6, sb, lsl #5 - eor ip, sl, r7 - and ip, r4, ip - eor ip, r7, ip - add r6, r6, ip - add r6, fp, r6 - add r6, r6, r3 - add r8, r8, r6 - mov r6, r4, lsr #2 - orr r4, r6, r4, lsl #30 - ldr fp, [r5, #8] - mov r6, r8, lsr #0x1b - orr r6, r6, r8, lsl #5 - eor ip, r4, sl - and ip, sb, ip - eor ip, sl, ip - add r6, r6, ip - add r6, fp, r6 - add r6, r6, r3 - add r6, r7, r6 - mov r7, sb, lsr #2 - orr sb, r7, sb, lsl #30 - ldr r7, [r5, #0xc] - ldr fp, [r5, #0x10] - mov r5, r6, lsr #0x1b - orr r5, r5, r6, lsl #5 - eor ip, sb, r4 - and ip, r8, ip - eor ip, r4, ip - add r5, r5, ip - add r5, r7, r5 - add r5, r5, r3 - add r5, sl, r5 - mov r7, r8, lsr #2 - orr r8, r7, r8, lsl #30 - mov r7, r5, lsr #0x1b - orr r7, r7, r5, lsl #5 - eor sl, r8, sb - and sl, r6, sl - eor sl, sb, sl - add r7, r7, sl - add r7, fp, r7 - add r7, r7, r3 - add r4, r4, r7 - mov r7, r6, lsr #2 - orr r7, r7, r6, lsl #30 - add r0, r0, #5 - add r2, r2, #1 - cmp r2, #3 - blt _022115A0 - eor r0, r7, r8 - mov r2, r4, lsr #0x1b - and r0, r5, r0 - orr r3, r2, r4, lsl #5 - eor r0, r8, r0 - add r3, r3, r0 - ldr r6, [sp, #0x4c] - ldr r0, _02211BE8 ; =0x5A827999 - add r3, r6, r3 - add r3, r3, r0 - mov r2, r5, lsr #2 - orr r6, r2, r5, lsl #30 - mov r0, #0 - add sb, sb, r3 - bl ov4_022114A0 - eor r1, r6, r7 - mov r3, sb, lsr #0x1b - and r1, r4, r1 - mov r2, r4, lsr #2 - orr r3, r3, sb, lsl #5 - eor r1, r7, r1 - add r1, r3, r1 - add r3, r1, r0 - ldr r0, _02211BE8 ; =0x5A827999 - add r1, sp, #0x10 - add r3, r3, r0 - orr r5, r2, r4, lsl #30 - mov r0, #1 - add r8, r8, r3 - bl ov4_022114A0 - eor r1, r5, r6 - mov r2, r8, lsr #0x1b - and r1, sb, r1 - orr r2, r2, r8, lsl #5 - eor r1, r6, r1 - add r1, r2, r1 - add r2, r1, r0 - ldr r0, _02211BE8 ; =0x5A827999 - mov r1, sb, lsr #2 - add r0, r2, r0 - orr sb, r1, sb, lsl #30 - add r7, r7, r0 - add r1, sp, #0x10 - mov r0, #2 - bl ov4_022114A0 - mov r1, r7, lsr #0x1b - orr r2, r1, r7, lsl #5 - eor r1, sb, r5 - and r1, r8, r1 - eor r1, r5, r1 - add r1, r2, r1 - add r2, r1, r0 - ldr r0, _02211BE8 ; =0x5A827999 - mov r1, r8, lsr #2 - add r0, r2, r0 - orr r8, r1, r8, lsl #30 - add r6, r6, r0 - mov r0, #3 - add r1, sp, #0x10 - bl ov4_022114A0 - mov r1, r6, lsr #0x1b - orr r2, r1, r6, lsl #5 - eor r1, r8, sb - and r1, r7, r1 - eor r1, sb, r1 - add r1, r2, r1 - add r2, r1, r0 - ldr r0, _02211BE8 ; =0x5A827999 - mov r1, r7, lsr #2 - add r0, r2, r0 - add r5, r5, r0 - mov r0, #0 - ldr r4, _02211BEC ; =0x6ED9EBA1 - orr r7, r1, r7, lsl #30 - mov sl, #4 - str r0, [sp, #4] - add fp, sp, #0x10 -_022117D8: - mov r0, sl - mov r1, fp - bl ov4_022114A0 - mov r2, r5, lsr #0x1b - eor r1, r6, r7 - orr r2, r2, r5, lsl #5 - eor r1, r8, r1 - add r1, r2, r1 - add r0, r1, r0 - add r1, r0, r4 - mov r0, r6, lsr #2 - add sb, sb, r1 - orr r6, r0, r6, lsl #30 - add r0, sl, #1 - mov r1, fp - bl ov4_022114A0 - mov r1, sb, lsr #0x1b - orr r2, r1, sb, lsl #5 - eor r1, r5, r6 - eor r1, r7, r1 - add r1, r2, r1 - add r0, r1, r0 - add r0, r0, r4 - add r8, r8, r0 - mov r0, r5, lsr #2 - orr r5, r0, r5, lsl #30 - add r0, sl, #2 - and sl, r0, #0xf - mov r0, sl - mov r1, fp - bl ov4_022114A0 - mov r1, r8, lsr #0x1b - orr r2, r1, r8, lsl #5 - eor r1, sb, r5 - eor r1, r6, r1 - add r1, r2, r1 - add r0, r1, r0 - add r0, r0, r4 - add r7, r7, r0 - mov r0, sb, lsr #2 - orr sb, r0, sb, lsl #30 - add r0, sl, #1 - mov r1, fp - bl ov4_022114A0 - mov r1, r7, lsr #0x1b - orr r2, r1, r7, lsl #5 - eor r1, r8, sb - eor r1, r5, r1 - add r1, r2, r1 - add r0, r1, r0 - add r0, r0, r4 - add r6, r6, r0 - mov r0, r8, lsr #2 - orr r8, r0, r8, lsl #30 - add r0, sl, #2 - mov r1, fp - bl ov4_022114A0 - mov r1, r6, lsr #0x1b - orr r2, r1, r6, lsl #5 - eor r1, r7, r8 - eor r1, sb, r1 - add r1, r2, r1 - add r0, r1, r0 - add r0, r0, r4 - add r5, r5, r0 - mov r1, r7, lsr #2 - ldr r0, [sp, #4] - add r0, r0, #1 - str r0, [sp, #4] - cmp r0, #4 - orr r7, r1, r7, lsl #30 - add sl, sl, #3 - blt _022117D8 - mov r0, #0 - ldr r4, _02211BF0 ; =0x8F1BBCDC - str r0, [sp, #8] - add fp, sp, #0x10 -_0221190C: - mov r0, sl - mov r1, fp - bl ov4_022114A0 - orr r2, r7, r8 - mov r1, r5, lsr #0x1b - orr r1, r1, r5, lsl #5 - and r3, r6, r2 - and r2, r7, r8 - orr r2, r3, r2 - add r1, r1, r2 - add r1, r1, r0 - mov r0, r6, lsr #2 - add r1, r1, r4 - add sb, sb, r1 - orr r6, r0, r6, lsl #30 - add r0, sl, #1 - mov r1, fp - bl ov4_022114A0 - mov r1, sb, lsr #0x1b - orr r1, r1, sb, lsl #5 - orr r2, r6, r7 - and r3, r5, r2 - and r2, r6, r7 - orr r2, r3, r2 - add r1, r1, r2 - add r0, r1, r0 - add r0, r0, r4 - add r8, r8, r0 - mov r0, r5, lsr #2 - orr r5, r0, r5, lsl #30 - add r0, sl, #2 - mov r1, fp - bl ov4_022114A0 - mov r1, r8, lsr #0x1b - orr r1, r1, r8, lsl #5 - orr r2, r5, r6 - and r3, sb, r2 - and r2, r5, r6 - orr r2, r3, r2 - add r1, r1, r2 - add r0, r1, r0 - add r0, r0, r4 - add r7, r7, r0 - mov r0, sb, lsr #2 - orr sb, r0, sb, lsl #30 - add r0, sl, #3 - and sl, r0, #0xf - mov r0, sl - mov r1, fp - bl ov4_022114A0 - mov r1, r7, lsr #0x1b - orr r1, r1, r7, lsl #5 - orr r2, sb, r5 - and r3, r8, r2 - and r2, sb, r5 - orr r2, r3, r2 - add r1, r1, r2 - add r0, r1, r0 - add r0, r0, r4 - add r6, r6, r0 - mov r0, r8, lsr #2 - orr r8, r0, r8, lsl #30 - add r0, sl, #1 - mov r1, fp - bl ov4_022114A0 - mov r1, r6, lsr #0x1b - orr r1, r1, r6, lsl #5 - orr r2, r8, sb - and r3, r7, r2 - and r2, r8, sb - orr r2, r3, r2 - add r1, r1, r2 - add r0, r1, r0 - add r0, r0, r4 - add r5, r5, r0 - mov r1, r7, lsr #2 - ldr r0, [sp, #8] - add r0, r0, #1 - str r0, [sp, #8] - cmp r0, #4 - orr r7, r1, r7, lsl #30 - add sl, sl, #2 - blt _0221190C - mov r0, #0 - ldr r4, _02211BF4 ; =0xCA62C1D6 - str r0, [sp, #0xc] - add fp, sp, #0x10 -_02211A68: - mov r0, sl - mov r1, fp - bl ov4_022114A0 - mov r2, r5, lsr #0x1b - eor r1, r6, r7 - orr r2, r2, r5, lsl #5 - eor r1, r8, r1 - add r1, r2, r1 - add r0, r1, r0 - add r1, r0, r4 - mov r0, r6, lsr #2 - add sb, sb, r1 - orr r6, r0, r6, lsl #30 - add r0, sl, #1 - mov r1, fp - bl ov4_022114A0 - mov r1, sb, lsr #0x1b - orr r2, r1, sb, lsl #5 - eor r1, r5, r6 - eor r1, r7, r1 - add r1, r2, r1 - add r0, r1, r0 - add r0, r0, r4 - add r8, r8, r0 - mov r0, r5, lsr #2 - orr r5, r0, r5, lsl #30 - add r0, sl, #2 - mov r1, fp - bl ov4_022114A0 - mov r1, r8, lsr #0x1b - orr r2, r1, r8, lsl #5 - eor r1, sb, r5 - eor r1, r6, r1 - add r1, r2, r1 - add r0, r1, r0 - add r0, r0, r4 - add r7, r7, r0 - mov r0, sb, lsr #2 - orr sb, r0, sb, lsl #30 - add r0, sl, #3 - mov r1, fp - bl ov4_022114A0 - mov r1, r7, lsr #0x1b - orr r2, r1, r7, lsl #5 - eor r1, r8, sb - eor r1, r5, r1 - add r1, r2, r1 - add r0, r1, r0 - add r0, r0, r4 - add r6, r6, r0 - mov r0, r8, lsr #2 - orr r8, r0, r8, lsl #30 - add r0, sl, #4 - and sl, r0, #0xf - mov r0, sl - mov r1, fp - bl ov4_022114A0 - mov r1, r6, lsr #0x1b - orr r2, r1, r6, lsl #5 - eor r1, r7, r8 - eor r1, sb, r1 - add r1, r2, r1 - add r0, r1, r0 - add r0, r0, r4 - add r5, r5, r0 - mov r1, r7, lsr #2 - ldr r0, [sp, #0xc] - add r0, r0, #1 - str r0, [sp, #0xc] - cmp r0, #4 - orr r7, r1, r7, lsl #30 - add sl, sl, #1 - blt _02211A68 - ldr r0, [sp] - ldr r0, [r0, #0] - add r1, r0, r5 - ldr r0, [sp] - str r1, [r0, #0] - ldr r0, [r0, #4] - add r1, r0, r6 - ldr r0, [sp] - str r1, [r0, #4] - ldr r0, [r0, #8] - add r1, r0, r7 - ldr r0, [sp] - str r1, [r0, #8] - ldr r0, [r0, #0xc] - add r1, r0, r8 - ldr r0, [sp] - str r1, [r0, #0xc] - ldr r0, [r0, #0x10] - add r1, r0, sb - ldr r0, [sp] - str r1, [r0, #0x10] - add sp, sp, #0x50 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_02211BE8: .word 0x5A827999 -_02211BEC: .word 0x6ED9EBA1 -_02211BF0: .word 0x8F1BBCDC -_02211BF4: .word 0xCA62C1D6 - arm_func_end ov4_02211570 - - arm_func_start ov4_02211BF8 -ov4_02211BF8: ; 0x02211BF8 - stmfd sp!, {r4, lr} - mov r1, #0 - mov r2, #0x5c - mov r4, r0 - bl MI_CpuFill8 - ldr r0, _02211C38 ; =0x67452301 - ldr r1, _02211C3C ; =0xEFCDAB89 - str r0, [r4, #0] - ldr r0, _02211C40 ; =0x98BADCFE - str r1, [r4, #4] - ldr r1, _02211C44 ; =0x10325476 - str r0, [r4, #8] - ldr r0, _02211C48 ; =0xC3D2E1F0 - str r1, [r4, #0xc] - str r0, [r4, #0x10] - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02211C38: .word 0x67452301 -_02211C3C: .word 0xEFCDAB89 -_02211C40: .word 0x98BADCFE -_02211C44: .word 0x10325476 -_02211C48: .word 0xC3D2E1F0 - arm_func_end ov4_02211BF8 - - arm_func_start ov4_02211C4C -ov4_02211C4C: ; 0x02211C4C - stmfd sp!, {r4, r5, r6, r7, r8, lr} - mov r8, r0 - ldr r3, [r8, #0x18] - mov r6, r2 - add r0, r3, r6, lsl #3 - str r0, [r8, #0x18] - cmp r0, r6, lsl #3 - ldrlo r0, [r8, #0x14] - mov r2, r3, lsr #3 - addlo r0, r0, #1 - strlo r0, [r8, #0x14] - ldr r0, [r8, #0x14] - and r4, r2, #0x3f - rsb r5, r4, #0x40 - add r0, r0, r6, lsr #29 - mov r7, r1 - str r0, [r8, #0x14] - cmp r6, r5 - blo _02211CE8 - add r1, r8, #0x1c - mov r0, r7 - mov r2, r5 - add r1, r1, r4 - bl MI_CpuCopy8 - mov r0, r8 - add r1, r8, #0x1c - mov r4, #0 - bl ov4_02211570 - add r0, r5, #0x3f - cmp r0, r6 - bhs _02211CEC -_02211CC8: - mov r0, r8 - add r1, r7, r5 - bl ov4_02211570 - add r5, r5, #0x40 - add r0, r5, #0x3f - cmp r0, r6 - blo _02211CC8 - b _02211CEC -_02211CE8: - mov r5, #0 -_02211CEC: - add r1, r8, #0x1c - add r0, r7, r5 - add r1, r1, r4 - sub r2, r6, r5 - bl MI_CpuCopy8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end ov4_02211C4C - - arm_func_start ov4_02211D04 -ov4_02211D04: ; 0x02211D04 - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - mov r0, r4 - add r1, r5, #0x14 - mov r2, #8 - bl ov4_022114E4 - ldr r0, [r5, #0x18] - ldr r1, _02211D68 ; =0x0221A3A4 - mov r0, r0, lsr #3 - and r0, r0, #0x3f - cmp r0, #0x38 - rsblt r2, r0, #0x38 - rsbge r2, r0, #0x78 - mov r0, r5 - bl ov4_02211C4C - mov r0, r5 - mov r1, r4 - mov r2, #8 - bl ov4_02211C4C - mov r0, r4 - mov r1, r5 - mov r2, #0x14 - bl ov4_022114E4 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02211D68: .word Unk_ov4_0221A3A4 - arm_func_end ov4_02211D04 - - arm_func_start ov4_02211D6C -ov4_02211D6C: ; 0x02211D6C - stmfd sp!, {r3, r4, r5, lr} - mov r4, r1 - ldr r1, _02211D98 ; =0x0221A3A5 - mov r5, r0 - mov r2, #0x2c - bl ov4_02211C4C - mov r0, r4 - mov r1, r5 - mov r2, #0x14 - bl ov4_022114E4 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02211D98: .word 0x0221A3A5 - arm_func_end ov4_02211D6C - - .data - - - .global Unk_ov4_0221A3A4 -Unk_ov4_0221A3A4: ; 0x0221A3A4 - .incbin "incbin/sha1.bin", 0x0, 0x5C - diff --git a/subprojects/NitroWiFi/libraries/ssl/asm/ssl.s b/subprojects/NitroWiFi/libraries/ssl/asm/ssl.s deleted file mode 100644 index 2b46e8c89b..0000000000 --- a/subprojects/NitroWiFi/libraries/ssl/asm/ssl.s +++ /dev/null @@ -1,3972 +0,0 @@ - .include "macros/function.inc" - .include "include/ssl.inc" - - .extern OSi_ThreadInfo - .extern Unk_ov4_0221DE04 - .extern Unk_ov4_0221DE30 - .extern Unk_ov4_0221DE58 - - - .text - - - arm_func_start ov4_0220DA10 -ov4_0220DA10: ; 0x0220DA10 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - mov r7, r0 - bl OS_DisableInterrupts - mov r4, #0 - ldr r6, _0220DAA0 ; =0x0221F628 - mov r5, r0 - strb r4, [r7, #0x30] - mov r8, #0x20 -_0220DA30: - ldrb r0, [r6, #0x5a] - cmp r0, #0 - beq _0220DA84 - ldr r0, [r6, #0x54] - cmp r0, #0 - ldreqh r0, [r6, #0x58] - cmpeq r0, #0 - bne _0220DA84 - mov r0, r6 - mov r2, r8 - add r1, r7, #0x74 - bl memcmp - cmp r0, #0 - bne _0220DA84 - mov r1, r7 - add r0, r6, #0x20 - mov r2, #0x30 - bl MI_CpuCopy8 - mov r0, #1 - strb r0, [r7, #0x30] - b _0220DA94 -_0220DA84: - add r4, r4, #1 - cmp r4, #4 - add r6, r6, #0x5c - blt _0220DA30 -_0220DA94: - mov r0, r5 - bl OS_RestoreInterrupts - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_0220DAA0: .word Unk_ov4_0221F628 - arm_func_end ov4_0220DA10 - - arm_func_start ov4_0220DAA4 -ov4_0220DAA4: ; 0x0220DAA4 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - mov r8, r0 - mov r7, r1 - mov r6, r2 - bl OS_DisableInterrupts - mov r1, #0 - ldr r5, _0220DB40 ; =0x0221F628 - mov r4, r0 - strb r1, [r8, #0x30] -_0220DAC8: - ldrb r0, [r5, #0x5a] - cmp r0, #0 - beq _0220DB24 - ldr r0, [r5, #0x54] - cmp r0, r7 - ldreqh r0, [r5, #0x58] - cmpeq r0, r6 - bne _0220DB24 - mov r0, r5 - add r1, r8, #0x74 - mov r2, #0x20 - bl MI_CpuCopy8 - mov r1, r8 - add r0, r5, #0x20 - mov r2, #0x30 - bl MI_CpuCopy8 - bl OS_GetTick - mov r0, r0, lsr #0x10 - orr r0, r0, r1, lsl #16 - str r0, [r5, #0x50] - mov r0, #1 - strb r0, [r8, #0x30] - b _0220DB34 -_0220DB24: - add r1, r1, #1 - cmp r1, #4 - add r5, r5, #0x5c - blt _0220DAC8 -_0220DB34: - mov r0, r4 - bl OS_RestoreInterrupts - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_0220DB40: .word Unk_ov4_0221F628 - arm_func_end ov4_0220DAA4 - - arm_func_start ov4_0220DB44 -ov4_0220DB44: ; 0x0220DB44 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r8, r0 - mov r7, r1 - mov r6, r2 - bl OS_DisableInterrupts - mov r4, r0 - bl OS_GetTick - ldr sb, _0220DC2C ; =0x0221F628 - mov r5, r0, lsr #0x10 - mov r2, #0 - mov r0, r2 - mov r3, sb - orr r5, r5, r1, lsl #16 - mvn ip, #0 -_0220DB7C: - ldrb lr, [r3, #0x5a] - cmp lr, #0 - cmpne r7, #0 - beq _0220DBB0 - ldr r1, [r3, #0x54] - cmp r7, r1 - bne _0220DBB0 - cmp r6, #0 - beq _0220DBB0 - ldrh r1, [r3, #0x58] - cmp r6, r1 - moveq sb, r3 - beq _0220DBEC -_0220DBB0: - cmp r2, ip - beq _0220DBDC - cmp lr, #0 - moveq r2, ip - moveq sb, r3 - beq _0220DBDC - ldr r1, [r3, #0x50] - sub r1, r5, r1 - cmp r1, r2 - movhi r2, r1 - movhi sb, r3 -_0220DBDC: - add r0, r0, #1 - cmp r0, #4 - add r3, r3, #0x5c - blt _0220DB7C -_0220DBEC: - mov r1, sb - add r0, r8, #0x74 - mov r2, #0x20 - bl MI_CpuCopy8 - mov r0, r8 - add r1, sb, #0x20 - mov r2, #0x30 - bl MI_CpuCopy8 - str r5, [sb, #0x50] - mov r0, #1 - strb r0, [sb, #0x5a] - str r7, [sb, #0x54] - mov r0, r4 - strh r6, [sb, #0x58] - bl OS_RestoreInterrupts - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ; .align 2, 0 -_0220DC2C: .word Unk_ov4_0221F628 - arm_func_end ov4_0220DB44 - - arm_func_start ov4_0220DC30 -ov4_0220DC30: ; 0x0220DC30 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - mov r8, r0 - bl OS_DisableInterrupts - ldr r7, _0220DC94 ; =0x0221F628 - mov r6, r0 - mov r5, #0 - mov r4, #0x20 -_0220DC4C: - ldrb r0, [r7, #0x5a] - cmp r0, #0 - beq _0220DC78 - mov r0, r7 - mov r2, r4 - add r1, r8, #0x74 - bl memcmp - cmp r0, #0 - moveq r0, #0 - streqb r0, [r7, #0x5a] - beq _0220DC88 -_0220DC78: - add r5, r5, #1 - cmp r5, #4 - add r7, r7, #0x5c - blt _0220DC4C -_0220DC88: - mov r0, r6 - bl OS_RestoreInterrupts - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_0220DC94: .word Unk_ov4_0221F628 - arm_func_end ov4_0220DC30 - - arm_func_start ov4_0220DC98 -ov4_0220DC98: ; 0x0220DC98 - stmdb sp!, {lr} - sub sp, sp, #0x1c - add r0, sp, #0xc - bl RTC_GetDate - add r0, sp, #0 - bl RTC_GetTime - add r0, sp, #0xc - add r1, sp, #0 - bl RTC_ConvertDateTimeToSecond - ldr r1, _0220DCCC ; =0x386D4380 - add r0, r0, r1 - add sp, sp, #0x1c - ldmia sp!, {pc} - ; .align 2, 0 -_0220DCCC: .word 0x386D4380 - arm_func_end ov4_0220DC98 - - arm_func_start CPS_GetSslHandshakePriority -CPS_GetSslHandshakePriority: ; 0x0220DCD0 - ldr r0, _0220DCDC ; =0x0221A1BC - ldr r0, [r0, #4] - bx lr - ; .align 2, 0 -_0220DCDC: .word Unk_ov4_0221A1BC - arm_func_end CPS_GetSslHandshakePriority - - arm_func_start CPS_SetSslHandshakePriority -CPS_SetSslHandshakePriority: ; 0x0220DCE0 - ldr r1, _0220DCEC ; =0x0221A1BC - str r0, [r1, #4] - bx lr - ; .align 2, 0 -_0220DCEC: .word Unk_ov4_0221A1BC - arm_func_end CPS_SetSslHandshakePriority - - arm_func_start ov4_0220DCF0 -ov4_0220DCF0: ; 0x0220DCF0 - stmfd sp!, {r3, r4, r5, lr} - ldr r0, _0220DD34 ; =0x0221A1BC - ldr r0, [r0, #4] - cmp r0, #0x20 - mvnhs r0, #0 - ldmhsia sp!, {r3, r4, r5, pc} - ldr r0, _0220DD38 ; =0x021CCC80 - ldr r5, [r0, #4] - mov r0, r5 - bl OS_GetThreadPriority - ldr r1, _0220DD34 ; =0x0221A1BC - mov r4, r0 - ldr r1, [r1, #4] - mov r0, r5 - bl OS_SetThreadPriority - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0220DD34: .word Unk_ov4_0221A1BC -_0220DD38: .word OSi_ThreadInfo - arm_func_end ov4_0220DCF0 - - arm_func_start ov4_0220DD3C -ov4_0220DD3C: ; 0x0220DD3C - stmfd sp!, {r3, lr} - mov r1, r0 - cmp r1, #0x20 - ldmhsia sp!, {r3, pc} - ldr r0, _0220DD5C ; =0x021CCC80 - ldr r0, [r0, #4] - bl OS_SetThreadPriority - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0220DD5C: .word OSi_ThreadInfo - arm_func_end ov4_0220DD3C - - arm_func_start CPS_SetRootCa -CPS_SetRootCa: ; 0x0220DD60 - ldr r2, _0220DD84 ; =0x021CCC80 - ldr r2, [r2, #4] - ldr r2, [r2, #0xa4] - cmp r2, #0 - ldrne r2, [r2, #0xc] - cmpne r2, #0 - strne r0, [r2, #0x814] - strne r1, [r2, #0x818] - bx lr - ; .align 2, 0 -_0220DD84: .word OSi_ThreadInfo - arm_func_end CPS_SetRootCa - - arm_func_start ov4_0220DD88 -ov4_0220DD88: ; 0x0220DD88 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - ldr r6, [r0, #0x818] - mov r8, r1 - cmp r6, #0 - mov r4, #0 - ble _0220DDCC - ldr r5, [r0, #0x814] -_0220DDA4: - ldr r7, [r5, r4, lsl #2] - mov r1, r8 - ldr r0, [r7, #0] - bl strcmp - cmp r0, #0 - moveq r0, r7 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - add r4, r4, #1 - cmp r4, r6 - blt _0220DDA4 -_0220DDCC: - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end ov4_0220DD88 - - arm_func_start ov4_0220DDD4 -ov4_0220DDD4: ; 0x0220DDD4 - ldr r1, [r0, #0] - ldrb r2, [r1] - add r3, r1, #1 - tst r2, #0x80 - beq _0220DE18 - ands r1, r2, #0x7f - sub ip, r1, #1 - mov r2, #0 - beq _0220DE18 -_0220DDF8: - tst r2, #-0x1000000 - mvnne r0, #0 - bxne lr - ldrb r1, [r3], #1 - cmp ip, #0 - sub ip, ip, #1 - add r2, r1, r2, lsl #8 - bne _0220DDF8 -_0220DE18: - str r3, [r0, #0] - mov r0, r2 - bx lr - arm_func_end ov4_0220DDD4 - - arm_func_start ov4_0220DE24 -ov4_0220DE24: ; 0x0220DE24 - ldrsb r3, [r0] - mov ip, r0 - cmp r3, #0 - beq _0220DE6C -_0220DE34: - ldrsb r3, [r0, #1]! - cmp r3, #0 - bne _0220DE34 - sub r3, r0, ip - cmp r3, #0xff - bxge lr - mov r3, #0x2c - strb r3, [r0] - mov r3, #0x20 - strb r3, [r0, #1] - add r0, r0, #2 - b _0220DE6C -_0220DE64: - ldrsb r3, [r1], #1 - strb r3, [r0], #1 -_0220DE6C: - cmp r2, #0 - sub r2, r2, #1 - beq _0220DE84 - sub r3, r0, ip - cmp r3, #0xff - blt _0220DE64 -_0220DE84: - mov r1, #0 - strb r1, [r0] - bx lr - arm_func_end ov4_0220DE24 - - arm_func_start ov4_0220DE90 -ov4_0220DE90: ; 0x0220DE90 - stmfd sp!, {r4, lr} - ldrb ip, [r0, #1] - ldrb r3, [r0], #2 - mov r2, #0xa - cmp r1, #0x17 - mla r1, r3, r2, ip - sub lr, r1, #0x210 - bne _0220DEC4 - cmp lr, #0x32 - addlo r4, lr, #0x7d0 - addhs r1, lr, #0x36c - addhs r4, r1, #0x400 - b _0220DEDC -_0220DEC4: - ldrb ip, [r0, #1] - ldrb r3, [r0], #2 - mov r1, #0x64 - mla r2, r3, r2, ip - sub r2, r2, #0x210 - mla r4, lr, r1, r2 -_0220DEDC: - ldrb ip, [r0, #1] - ldrb r3, [r0] - mov r1, #0xa - ldrb r2, [r0, #3] - ldrb r0, [r0, #2] - mla ip, r3, r1, ip - mla r1, r0, r1, r2 - sub r0, ip, #0x210 - mov r0, r0, lsl #8 - add r2, r0, r4, lsl #16 - sub r0, r1, #0x210 - add r0, r2, r0 - ldmia sp!, {r4, pc} - arm_func_end ov4_0220DE90 - - arm_func_start ov4_0220DF10 -ov4_0220DF10: ; 0x0220DF10 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - mov fp, r1 - ldr r1, [fp] - mov sb, r0 - add r0, r1, #1 - str r0, [sp, #4] - add r0, sp, #4 - mov r7, r2 - mov r6, r3 - ldr r8, [sp, #0x30] - ldrb r5, [r1] - bl ov4_0220DDD4 - movs r4, r0 - bmi _0220DF54 - cmp r4, #0x7d0 - ble _0220DF60 -_0220DF54: - add sp, sp, #8 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0220DF60: - and r1, r5, #0x1f - cmp r1, #0x18 - addls pc, pc, r1, lsl #2 - b _0220E384 -_0220DF70: ; jump table - b _0220E384 ; case 0 - b _0220E384 ; case 1 - b _0220DFD4 ; case 2 - b _0220E0CC ; case 3 - b _0220E384 ; case 4 - b _0220E384 ; case 5 - b _0220E14C ; case 6 - b _0220E384 ; case 7 - b _0220E384 ; case 8 - b _0220E384 ; case 9 - b _0220E384 ; case 10 - b _0220E384 ; case 11 - b _0220E1E4 ; case 12 - b _0220E384 ; case 13 - b _0220E384 ; case 14 - b _0220E384 ; case 15 - b _0220E2B4 ; case 16 - b _0220E334 ; case 17 - b _0220E384 ; case 18 - b _0220E1E4 ; case 19 - b _0220E1E4 ; case 20 - b _0220E384 ; case 21 - b _0220E1E4 ; case 22 - b _0220E264 ; case 23 - b _0220E264 ; case 24 -_0220DFD4: - ldrb r0, [sb, #0x5ad] - cmp r0, #0 - beq _0220E0BC - cmp r6, #0 - bne _0220E054 - ldr r0, [sp, #4] - ldrb r1, [r0] - cmp r1, #0 - bne _0220E010 -_0220DFF8: - add r0, r0, #1 - str r0, [sp, #4] - ldrb r1, [r0] - sub r4, r4, #1 - cmp r1, #0 - beq _0220DFF8 -_0220E010: - cmp r8, #0 - beq _0220E024 - cmp r8, #2 - beq _0220E044 - b _0220E0BC -_0220E024: - cmp r4, #0x100 - bgt _0220E0BC - add r1, sb, #0x94 - mov r2, r4 - add r1, r1, #0x400 - bl MI_CpuCopy8 - str r4, [sb, #0x594] - b _0220E0BC -_0220E044: - str r4, [sb, #0x484] - ldr r0, [sp, #4] - str r0, [sb, #0x488] - b _0220E0BC -_0220E054: - cmp r6, #1 - bne _0220E0BC - ldr r0, [sp, #4] - ldrb r1, [r0] - cmp r1, #0 - bne _0220E084 -_0220E06C: - add r0, r0, #1 - str r0, [sp, #4] - ldrb r1, [r0] - sub r4, r4, #1 - cmp r1, #0 - beq _0220E06C -_0220E084: - cmp r8, #0 - beq _0220E0A0 - cmp r8, #2 - streq r4, [sb, #0x48c] - ldreq r0, [sp, #4] - streq r0, [sb, #0x490] - b _0220E0BC -_0220E0A0: - cmp r4, #8 - bgt _0220E0BC - add r1, sb, #0x198 - mov r2, r4 - add r1, r1, #0x400 - bl MI_CpuCopy8 - str r4, [sb, #0x5a0] -_0220E0BC: - ldr r0, [sp, #4] - add r0, r0, r4 - str r0, [sp, #4] - b _0220E3E8 -_0220E0CC: - cmp r7, #1 - bne _0220E0F0 - cmp r8, #2 - beq _0220E0F0 - ldr r1, [sp, #4] - sub r0, r4, #1 - add r1, r1, #1 - str r1, [sb, #0x5a4] - str r0, [sb, #0x5a8] -_0220E0F0: - ldrb r0, [sb, #0x5ad] - cmp r0, #0 - beq _0220E13C - ldr r0, [sp, #4] - add r1, sp, #4 - add r0, r0, #1 - str r0, [sp, #4] - mov r0, sb - mov r2, r7 - mov r3, #0 - str r8, [sp] - bl ov4_0220DF10 - cmp r0, #0 - addne sp, sp, #8 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, #0 - strb r0, [sb, #0x5ad] - b _0220E3E8 -_0220E13C: - ldr r0, [sp, #4] - add r0, r0, r4 - str r0, [sp, #4] - b _0220E3E8 -_0220E14C: - ldr r6, [sp, #4] - ldr sl, _0220E3FC ; =0x0221A1C4 - mov r5, #0 -_0220E158: - ldr r7, [sl, r5, lsl #2] - mov r0, r7 - bl strlen - mov r2, r0 - mov r0, r6 - mov r1, r7 - bl memcmp - cmp r0, #0 - bne _0220E1C8 - cmp r5, #5 - addls pc, pc, r5, lsl #2 - b _0220E1D4 -_0220E188: ; jump table - b _0220E1D4 ; case 0 - b _0220E1A0 ; case 1 - b _0220E1A0 ; case 2 - b _0220E1B0 ; case 3 - b _0220E1B0 ; case 4 - b _0220E1BC ; case 5 -_0220E1A0: - cmp r8, #0 - streq r5, [sb, #0x45c] - strb r5, [sb, #0x5ad] - b _0220E1D4 -_0220E1B0: - cmp r8, #2 - strne r5, [sb, #0x458] - b _0220E1D4 -_0220E1BC: - cmp r8, #2 - strneb r5, [sb, #0x5ae] - b _0220E1D4 -_0220E1C8: - add r5, r5, #1 - cmp r5, #6 - blt _0220E158 -_0220E1D4: - ldr r0, [sp, #4] - add r0, r0, r4 - str r0, [sp, #4] - b _0220E3E8 -_0220E1E4: - cmp r8, #2 - beq _0220E24C - ldrb r0, [sb, #0x5ac] - cmp r0, #0 - beq _0220E23C - ldr r1, [sp, #4] - mov r2, r4 - add r0, sb, #0x6b0 - bl ov4_0220DE24 - ldrb r0, [sb, #0x5ae] - cmp r0, #5 - bne _0220E24C - cmp r4, #0x4f - bgt _0220E24C - ldr r0, [sp, #4] - mov r2, r4 - add r1, sb, #0x7b0 - bl MI_CpuCopy8 - add r0, sb, r4 - mov r1, #0 - strb r1, [r0, #0x7b0] - b _0220E24C -_0220E23C: - ldr r1, [sp, #4] - mov r2, r4 - add r0, sb, #0x5b0 - bl ov4_0220DE24 -_0220E24C: - mov r0, #0 - strb r0, [sb, #0x5ae] - ldr r0, [sp, #4] - add r0, r0, r4 - str r0, [sp, #4] - b _0220E3E8 -_0220E264: - cmp r8, #2 - beq _0220E29C - ldr r0, [sp, #4] - bl ov4_0220DE90 - cmp r6, #0 - ldr r1, [sb, #0x80c] - bne _0220E290 - cmp r1, r0 - movhs r0, #1 - strhsb r0, [sb, #0x5af] - b _0220E29C -_0220E290: - cmp r1, r0 - movhi r0, #0 - strhib r0, [sb, #0x5af] -_0220E29C: - ldr r1, [sp, #4] - mov r0, #1 - add r1, r1, r4 - str r1, [sp, #4] - strb r0, [sb, #0x5ac] - b _0220E3E8 -_0220E2B4: - cmp r7, #0 - cmpeq r6, #0 - bne _0220E2CC - cmp r8, #2 - ldrne r0, [sp, #4] - strne r0, [sb, #0x460] -_0220E2CC: - ldr r0, [sp, #4] - mov r5, #0 - add sl, r0, r4 - cmp r0, sl - bhs _0220E31C - add r4, sp, #4 -_0220E2E4: - mov r0, sb - mov r1, r4 - mov r3, r5 - add r2, r7, #1 - str r8, [sp] - bl ov4_0220DF10 - cmp r0, #0 - add r5, r5, #1 - addne sp, sp, #8 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [sp, #4] - cmp r0, sl - blo _0220E2E4 -_0220E31C: - cmp r7, #1 - cmpeq r6, #0 - bne _0220E3E8 - cmp r8, #2 - strne r0, [sb, #0x464] - b _0220E3E8 -_0220E334: - ldr r0, [sp, #4] - add r6, r0, r4 - cmp r0, r6 - bhs _0220E3E8 - add r5, sp, #4 - mov r4, #0 -_0220E34C: - mov r0, sb - mov r1, r5 - mov r3, r4 - add r2, r7, #1 - str r8, [sp] - bl ov4_0220DF10 - cmp r0, #0 - addne sp, sp, #8 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [sp, #4] - cmp r0, r6 - blo _0220E34C - b _0220E3E8 -_0220E384: - cmp r5, #0xa0 - bne _0220E3DC - ldr r0, [sp, #4] - add r6, r0, r4 - cmp r0, r6 - bhs _0220E3E8 - add r5, sp, #4 - mov r4, #0 -_0220E3A4: - mov r0, sb - mov r1, r5 - mov r3, r4 - add r2, r7, #1 - str r8, [sp] - bl ov4_0220DF10 - cmp r0, #0 - addne sp, sp, #8 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [sp, #4] - cmp r0, r6 - blo _0220E3A4 - b _0220E3E8 -_0220E3DC: - ldr r0, [sp, #4] - add r0, r0, r4 - str r0, [sp, #4] -_0220E3E8: - ldr r1, [sp, #4] - mov r0, #0 - str r1, [fp] - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0220E3FC: .word Unk_ov4_0221A1C4 - arm_func_end ov4_0220DF10 - - arm_func_start ov4_0220E400 -ov4_0220E400: ; 0x0220E400 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #4 - mov r8, r0 - ldr r0, [r8, #0x5a4] - mov r7, r1 - cmp r0, #0 - ldrne r0, [r8, #0x5a8] - cmpne r0, #0 - ldrne r0, [r7, #0x10] - cmpne r0, #0 - ldrne r0, [r7, #0xc] - cmpne r0, #0 - ldrne r0, [r7, #8] - cmpne r0, #0 - ldrne r0, [r7, #4] - cmpne r0, #0 - addeq sp, sp, #4 - moveq r0, #2 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - mov r0, r0, lsl #1 - ldr r1, _0220E5A0 ; =0x0221DE04 - add r0, r0, r0, lsr #31 - mov r5, r0, asr #1 - ldr r1, [r1, #0] - mov r0, r5, lsl #3 - blx r1 - movs r4, r0 - addeq sp, sp, #4 - moveq r0, #2 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - add r6, r4, r5, lsl #1 - add sb, r6, r5, lsl #1 - ldr r1, [r8, #0x5a4] - ldr r2, [r8, #0x5a8] - mov r0, r6 - mov r3, r5 - add sl, sb, r5, lsl #1 - bl ov4_02212C28 - ldr r1, [r7, #0x10] - ldr r2, [r7, #0xc] - mov r0, sb - mov r3, r5 - bl ov4_02212C28 - ldr r1, [r7, #8] - ldr r2, [r7, #4] - mov r0, sl - mov r3, r5 - bl ov4_02212C28 - bl ov4_0220DCF0 - mov r2, sb - mov sb, r0 - mov r0, r4 - mov r1, r6 - mov r3, r5 - str sl, [sp] - bl ov4_02212614 - mov r0, sb - bl ov4_0220DD3C - ldr r2, [r7, #4] - mov r0, r6 - mov r1, r4 - mov r3, r5 - bl ov4_02212C84 - ldrb r0, [r4, r5, lsl #1] - mov r5, #0 - cmp r0, #0 - ldreqb r0, [r6, #1] - cmpeq r0, #1 - movne r5, #2 - bne _0220E584 - ldr r3, [r7, #4] - mov r2, #2 - cmp r3, #2 - ble _0220E540 -_0220E528: - ldrb r0, [r6, r2] - cmp r0, #0xff - bne _0220E540 - add r2, r2, #1 - cmp r2, r3 - blt _0220E528 -_0220E540: - add r1, r2, #1 - cmp r1, r3 - bge _0220E580 - ldrb r0, [r6, r2] - cmp r0, #0 - ldreqb r0, [r6, r1] - cmpeq r0, #0x30 - bne _0220E580 - ldr r2, [r8, #0x47c] - add r0, r8, #0x68 - add r1, r6, r3 - add r0, r0, #0x400 - sub r1, r1, r2 - bl memcmp - cmp r0, #0 - beq _0220E584 -_0220E580: - mov r5, #2 -_0220E584: - ldr r1, _0220E5A4 ; =0x0221DE30 - mov r0, r4 - ldr r1, [r1, #0] - blx r1 - mov r0, r5 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - ; .align 2, 0 -_0220E5A0: .word Unk_ov4_0221DE04 -_0220E5A4: .word Unk_ov4_0221DE30 - arm_func_end ov4_0220E400 - - arm_func_start ov4_0220E5A8 -ov4_0220E5A8: ; 0x0220E5A8 - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - ldrb r0, [r5, #0x5af] - ldr r1, [r5, #0x45c] - cmp r0, #0 - movne r4, #0 - moveq r4, #0x8000 - mvn r0, #0 - cmp r1, r0 - orreq r0, r4, #4 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, [r5, #0x458] - cmp r0, #3 - beq _0220E5EC - cmp r0, #4 - beq _0220E624 - b _0220E65C -_0220E5EC: - add r0, r5, #0x3fc - bl ov4_02211338 - ldr r1, [r5, #0x460] - ldr r2, [r5, #0x464] - add r0, r5, #0x3fc - sub r2, r2, r1 - bl ov4_02211380 - add r1, r5, #0x68 - add r0, r5, #0x3fc - add r1, r1, #0x400 - bl ov4_02211438 - mov r0, #0x10 - str r0, [r5, #0x47c] - b _0220E664 -_0220E624: - add r0, r5, #0x348 - bl ov4_02211BF8 - ldr r1, [r5, #0x460] - ldr r2, [r5, #0x464] - add r0, r5, #0x348 - sub r2, r2, r1 - bl ov4_02211C4C - add r1, r5, #0x68 - add r0, r5, #0x348 - add r1, r1, #0x400 - bl ov4_02211D04 - mov r0, #0x14 - str r0, [r5, #0x47c] - b _0220E664 -_0220E65C: - orr r0, r4, #3 - ldmia sp!, {r3, r4, r5, pc} -_0220E664: - mov r0, r5 - add r1, r5, #0x5b0 - bl ov4_0220DD88 - movs r1, r0 - orreq r0, r4, #1 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r5 - bl ov4_0220E400 - orr r0, r4, r0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov4_0220E5A8 - - arm_func_start ov4_0220E68C -ov4_0220E68C: ; 0x0220E68C - mov r2, r0 - b _0220E698 -_0220E694: - add r0, r0, #1 -_0220E698: - ldrsb r1, [r0] - cmp r1, #0x2e - cmpne r1, #0 - bne _0220E694 - sub r0, r0, r2 - bx lr - arm_func_end ov4_0220E68C - - arm_func_start ov4_0220E6B0 -ov4_0220E6B0: ; 0x0220E6B0 - stmfd sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - b _0220E6CC -_0220E6C0: - cmp r1, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} -_0220E6CC: - ldrsb r0, [r5], #1 - ldrsb r1, [r6], #1 - cmp r1, r0 - beq _0220E6C0 - cmp r0, #0x2a - movne r0, #1 - ldmneia sp!, {r4, r5, r6, pc} - sub r6, r6, #1 - mov r0, r6 - bl ov4_0220E68C - mov r4, r0 - mov r0, r5 - bl ov4_0220E68C - cmp r0, r4 - movgt r0, #1 - ldmgtia sp!, {r4, r5, r6, pc} - sub r0, r4, r0 - add r6, r6, r0 - b _0220E6CC - arm_func_end ov4_0220E6B0 -_0220E718: - .byte 0x70, 0x80, 0xBD, 0xE8 - - arm_func_start ov4_0220E71C -ov4_0220E71C: ; 0x0220E71C - stmfd sp!, {r0, r1, r2, r3} - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x18 - ldr r1, [sp, #0x44] - mov sl, r0 - ldrb r4, [r1, #2] - ldrb r3, [r1] - ldrb r2, [r1, #1] - add r0, r1, #3 - mvn r1, #0 - str r0, [sp, #0x44] - add r2, r2, r3, lsl #8 - add r0, sp, #8 - str r1, [sl, #0x45c] - add r8, r4, r2, lsl #8 - bl RTC_GetDate - mov r6, #0 - ldr r1, [sp, #8] - ldr r0, [sp, #0xc] - add r1, r1, #0x7d0 - mov r0, r0, lsl #8 - ldr r2, [sp, #0x10] - add r0, r0, r1, lsl #16 - add r0, r2, r0 - str r0, [sl, #0x80c] - strb r6, [sl, #0x6b0] - str r6, [sl, #0x5a0] - mov sb, r6 - str r6, [sl, #0x594] - mov fp, #2 - mvn r5, #0 - mov r4, r6 -_0220E79C: - ldr r1, [sp, #0x44] - mov r0, sl - ldrb r2, [r1, #2] - ldrb ip, [r1] - ldrb r3, [r1, #1] - add r7, r1, #3 - add r1, sp, #0x44 - str r7, [sp, #0x44] - str r5, [sl, #0x458] - strb r4, [sl, #0x5ad] - strb r4, [sl, #0x5ac] - strb r4, [sl, #0x5af] - strb r4, [sl, #0x6b0] - strb r4, [sl, #0x5b0] - strb r4, [sl, #0x7b0] - add r3, r3, ip, lsl #8 - ldr r7, [sp, #0x44] - add r3, r2, r3, lsl #8 - add r2, r3, #3 - str r7, [sl, #0x804] - str r3, [sl, #0x808] - sub r8, r8, r2 - mov r2, r4 - mov r3, r4 - str r6, [sp] - bl ov4_0220DF10 - cmp r0, #0 - bne _0220E824 - ldr r0, [sl, #0x594] - cmp r0, #0x33 - blo _0220E824 - ldr r0, [sl, #0x5a0] - cmp r0, #0 - bne _0220E83C -_0220E824: - mov r0, #9 - add sp, sp, #0x18 - strb r0, [sl, #0x455] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr -_0220E83C: - mov r0, sl - bl ov4_0220E5A8 - mov r7, r0 - cmp sb, #0 - bne _0220E86C - ldr r0, [sl, #0x800] - cmp r0, #0 - beq _0220E86C - add r1, sl, #0x7b0 - bl ov4_0220E6B0 - cmp r0, #0 - orrne r7, r7, #0x4000 -_0220E86C: - and r6, r7, #0xff - cmp r6, #1 - bne _0220E8DC - cmp r8, #0 - beq _0220E8DC - ldr r1, [sp, #0x44] - mov r2, #0 - add r1, r1, #3 - str r1, [sp, #4] - mov r1, #0 - strb r1, [sl, #0x5ad] - mov r0, sl - add r1, sp, #4 - mov r3, r2 - str fp, [sp] - bl ov4_0220DF10 - cmp r0, #0 - movne r0, #9 - addne sp, sp, #0x18 - strneb r0, [sl, #0x455] - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - addne sp, sp, #0x10 - bxne lr - mov r0, sl - add r1, sl, #0x480 - bl ov4_0220E400 - bic r1, r7, #0xff - orr r7, r1, r0 -_0220E8DC: - ldr r3, [sl, #0x810] - cmp r3, #0 - beq _0220E8FC - mov r0, r7 - mov r1, sl - mov r2, sb - blx r3 - mov r7, r0 -_0220E8FC: - cmp r6, #0 - add sb, sb, #1 - beq _0220E91C - cmp r7, #0 - bne _0220E91C - cmp r8, #0 - movne r6, #1 - bne _0220E79C -_0220E91C: - cmp r7, #0 - moveq r0, #3 - streqb r0, [sl, #0x455] - movne r0, #9 - strneb r0, [sl, #0x455] - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr - arm_func_end ov4_0220E71C - - arm_func_start ov4_0220E940 -ov4_0220E940: ; 0x0220E940 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r0 - mov r5, r1 - add r0, r5, #2 - add r1, r6, #0x54 - mov r2, #0x20 - bl MI_CpuCopy8 - ldrb r7, [r6, #0x30] - ldrb r4, [r5, #0x22] - add r5, r5, #0x23 - cmp r7, #0 - beq _0220E998 - cmp r4, #0x20 - bne _0220E998 - mov r1, r5 - add r0, r6, #0x74 - mov r2, #0x20 - bl memcmp - cmp r0, #0 - moveq r0, #1 - streqb r0, [r6, #0x31] - beq _0220E9D4 -_0220E998: - cmp r7, #0 - beq _0220E9A8 - mov r0, r6 - bl ov4_0220DC30 -_0220E9A8: - cmp r4, #0 - moveq r0, #0 - beq _0220E9C8 - mov r0, r5 - add r1, r6, #0x74 - mov r2, #0x20 - bl MI_CpuCopy8 - mov r0, #1 -_0220E9C8: - strb r0, [r6, #0x30] - mov r0, #0 - strb r0, [r6, #0x31] -_0220E9D4: - add r0, r5, r4 - ldrb r2, [r5, r4] - ldrb r1, [r0, #1] - mov r0, #2 - add r1, r1, r2, lsl #8 - strh r1, [r6, #0x32] - strb r0, [r6, #0x455] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov4_0220E940 - - arm_func_start ov4_0220E9F4 -ov4_0220E9F4: ; 0x0220E9F4 - stmfd sp!, {r4, lr} - cmp r1, #0 - mov r4, #0 - ble _0220EA38 -_0220EA04: - ldrb lr, [r0] - ldrb ip, [r0, #1] - cmp r2, #3 - add lr, ip, lr, lsl #8 - ldreqb ip, [r0, #2] - addeq lr, ip, lr, lsl #8 - cmp lr, r3 - moveq r0, #1 - ldmeqia sp!, {r4, pc} - add r4, r4, #1 - cmp r4, r1 - add r0, r0, r2 - blt _0220EA04 -_0220EA38: - mov r0, #0 - ldmia sp!, {r4, pc} - arm_func_end ov4_0220E9F4 - - arm_func_start ov4_0220EA40 -ov4_0220EA40: ; 0x0220EA40 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - ldr r4, _0220EA9C ; =0x0221A1BC - mov r8, r0 - mov r7, r1 - mov r6, r2 - mov r5, #0 -_0220EA58: - mov r0, r5, lsl #1 - ldrh r3, [r4, r0] - mov r0, r8 - mov r1, r7 - mov r2, r6 - bl ov4_0220E9F4 - cmp r0, #0 - beq _0220EA88 - ldr r0, _0220EA9C ; =0x0221A1BC - mov r1, r5, lsl #1 - ldrh r0, [r0, r1] - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0220EA88: - add r5, r5, #1 - cmp r5, #2 - blo _0220EA58 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_0220EA9C: .word Unk_ov4_0221A1BC - arm_func_end ov4_0220EA40 - - arm_func_start ov4_0220EAA0 -ov4_0220EAA0: ; 0x0220EAA0 - cmp r0, #3 - moveq r0, #1 - movne r0, #0 - bx lr - arm_func_end ov4_0220EAA0 - - arm_func_start ov4_0220EAB0 -ov4_0220EAB0: ; 0x0220EAB0 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r1 - mov r7, r0 - ldrb r0, [r6] - ldrb r1, [r6, #1] - bl ov4_0220EAA0 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldrb r2, [r6, #2] - ldrb r1, [r6, #3] - ldr r3, _0220EB74 ; =0x55555556 - add r0, r6, #8 - add r4, r1, r2, lsl #8 - smull r2, r1, r3, r4 - add r1, r1, r4, lsr #31 - mov r2, #3 - bl ov4_0220EA40 - mov r0, r0, lsl #0x10 - movs r0, r0, lsr #0x10 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - strh r0, [r7, #0x32] - ldrb r5, [r6, #4] - ldrb r3, [r6, #5] - ldrb r2, [r6, #6] - ldrb r0, [r6, #7] - mov r1, #0 - add r3, r3, r5, lsl #8 - add r5, r0, r2, lsl #8 - add r0, r4, #8 - strb r1, [r7, #0x30] - cmp r5, #0x20 - add r4, r0, r3 - blt _0220EB48 - add r0, r6, r4 - add r1, r7, #0x34 - mov r2, #0x20 - bl MI_CpuCopy8 - b _0220EB68 -_0220EB48: - add r0, r7, #0x34 - rsb r2, r5, #0x20 - bl MI_CpuFill8 - add r1, r7, #0x54 - mov r2, r5 - add r0, r6, r4 - sub r1, r1, r5 - bl MI_CpuCopy8 -_0220EB68: - mov r0, #1 - strb r0, [r7, #0x455] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_0220EB74: .word 0x55555556 - arm_func_end ov4_0220EAB0 - - arm_func_start ov4_0220EB78 -ov4_0220EB78: ; 0x0220EB78 - stmfd sp!, {r4, r5, r6, lr} - mov r6, r1 - mov r4, r0 - ldrb r0, [r6] - ldrb r1, [r6, #1] - bl ov4_0220EAA0 - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - add r0, r6, #2 - add r1, r4, #0x34 - mov r2, #0x20 - bl MI_CpuCopy8 - ldrb r5, [r6, #0x22] - add r6, r6, #0x23 - cmp r5, #0x20 - movne r0, #0 - strneb r0, [r4, #0x30] - bne _0220EBD8 - mov r0, r6 - add r1, r4, #0x74 - mov r2, #0x20 - bl MI_CpuCopy8 - mov r0, r4 - bl ov4_0220DA10 -_0220EBD8: - add r0, r6, r5 - ldrb r1, [r0, #1] - ldrb r3, [r6, r5] - add r0, r0, #2 - mov r2, #2 - add r1, r1, r3, lsl #8 - add r1, r1, r1, lsr #31 - mov r1, r1, asr #1 - bl ov4_0220EA40 - mov r0, r0, lsl #0x10 - movs r0, r0, lsr #0x10 - strh r0, [r4, #0x32] - movne r0, #1 - strneb r0, [r4, #0x455] - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ov4_0220EB78 - - arm_func_start ov4_0220EC14 -ov4_0220EC14: ; 0x0220EC14 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x18 - movs sl, r2 - str r0, [sp, #8] - ldrne r0, [sl] - mov fp, r1 - cmpne r0, #0 - addeq sp, sp, #0x18 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, r0, lsl #1 - add r0, r0, r0, lsr #31 - mov r0, r0, asr #1 - add r4, r0, #1 - mov r0, #0x14 - mul r0, r4, r0 - ldr r1, _0220EE4C ; =0x0221DE04 - ldr r1, [r1, #0] - blx r1 - movs r5, r0 - addeq sp, sp, #0x18 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r6, r5, r4, lsl #1 - add r7, r6, r4, lsl #1 - add r1, r7, r4, lsl #1 - str r1, [sp, #0x10] - add r1, r1, r4, lsl #1 - add r8, r1, r4, lsl #1 - str r1, [sp, #0xc] - ldr r2, [sl] - add sb, r8, r4, lsl #1 - mov r1, fp - mov r3, r4 - add fp, sb, r4, lsl #1 - bl ov4_02212C28 - ldr r1, [sl, #0x1c] - ldr r2, [sl, #0x18] - mov r0, r6 - mov r3, r4 - bl ov4_02212C28 - ldr r1, [sl, #0xc] - ldr r2, [sl, #8] - mov r0, r8 - mov r3, r4 - bl ov4_02212C28 - bl ov4_0220DCF0 - str r0, [sp, #0x14] - ldr r0, [sp, #0x10] - str r8, [sp] - mov r1, r5 - mov r2, r6 - mov r3, r4 - bl ov4_02212A1C - ldr r1, [sl, #0x24] - ldr r2, [sl, #0x20] - mov r0, r6 - mov r3, r4 - bl ov4_02212C28 - ldr r1, [sl, #0x14] - ldr r2, [sl, #0x10] - mov r0, r8 - mov r3, r4 - bl ov4_02212C28 - ldr r0, [sp, #0xc] - mov r1, r5 - mov r2, r6 - mov r3, r4 - str r8, [sp] - bl ov4_02212A1C - ldr r0, [sp, #0x14] - bl ov4_0220DD3C - ldr r1, [sp, #0x10] - ldr r2, [sp, #0xc] - mov r0, r5 - mov r3, r4 - bl ov4_02212014 - ldr r1, [sl, #0x2c] - ldr r2, [sl, #0x28] - mov r0, r6 - mov r3, r4 - bl ov4_02212C28 - mov r0, r7 - mov r1, r5 - mov r2, r6 - mov r3, r4 - bl ov4_02212190 - ldr r1, [sl, #0x14] - ldr r2, [sl, #0x10] - mov r0, r6 - mov r3, r4 - bl ov4_02212C28 - mov r0, r5 - mov r1, r7 - mov r2, r6 - mov r3, r4 - bl ov4_02212190 - ldr r2, [sp, #0xc] - mov r0, r7 - mov r1, r5 - mov r3, r4 - bl ov4_02211ED4 - ldr r1, [sl, #4] - ldr r2, [sl] - mov r0, r6 - mov r3, r4 - bl ov4_02212C28 - mov r0, r7 - mov r1, r4 - bl ov4_02211EA4 - cmp r0, #0 - bge _0220EE08 - mov r0, r7 - mov r1, r4 - bl ov4_02211FD4 - mov r1, r7 - mov r2, r6 - mov r3, sb - mov r0, #0 - stmia sp, {r4, fp} - bl ov4_02212434 - mov r0, sb - mov r1, r6 - mov r2, sb - mov r3, r4 - bl ov4_02212014 - b _0220EE20 -_0220EE08: - mov r1, r7 - mov r2, r6 - mov r3, sb - mov r0, #0 - stmia sp, {r4, fp} - bl ov4_02212434 -_0220EE20: - ldr r0, [sp, #8] - mov r1, sb - mov r3, r4 - mov r2, #0x30 - bl ov4_02212C84 - ldr r1, _0220EE50 ; =0x0221DE30 - mov r0, r5 - ldr r1, [r1, #0] - blx r1 - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0220EE4C: .word Unk_ov4_0221DE04 -_0220EE50: .word Unk_ov4_0221DE30 - arm_func_end ov4_0220EC14 - - arm_func_start ov4_0220EE54 -ov4_0220EE54: ; 0x0220EE54 - stmfd sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0x14 - mov r4, r2 - mov r6, r0 - mov r5, r1 - add r0, r4, #0x348 - bl ov4_02211BF8 - mov r0, r5 - bl strlen - mov r2, r0 - mov r1, r5 - add r0, r4, #0x348 - bl ov4_02211C4C - add r0, r4, #0x348 - mov r1, r4 - mov r2, #0x30 - bl ov4_02211C4C - add r0, r4, #0x348 - add r1, r4, #0x34 - mov r2, #0x40 - bl ov4_02211C4C - add r0, r4, #0x348 - add r1, sp, #0 - bl ov4_02211D04 - add r0, r4, #0x3fc - bl ov4_02211338 - add r0, r4, #0x3fc - mov r1, r4 - mov r2, #0x30 - bl ov4_02211380 - add r0, r4, #0x3fc - add r1, sp, #0 - mov r2, #0x14 - bl ov4_02211380 - add r0, r4, #0x3fc - mov r1, r6 - bl ov4_02211438 - add sp, sp, #0x14 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end ov4_0220EE54 - - arm_func_start ov4_0220EEF0 -ov4_0220EEF0: ; 0x0220EEF0 - stmfd sp!, {r4, lr} - sub sp, sp, #0x30 - mov r4, r0 - ldr r1, _0220EF44 ; =0x0221A208 - add r0, sp, #0 - mov r2, r4 - bl ov4_0220EE54 - ldr r1, _0220EF48 ; =0x0221A20C - add r0, sp, #0x10 - mov r2, r4 - bl ov4_0220EE54 - ldr r1, _0220EF4C ; =0x0221A210 - add r0, sp, #0x20 - mov r2, r4 - bl ov4_0220EE54 - add r0, sp, #0 - mov r1, r4 - mov r2, #0x30 - bl MI_CpuCopy8 - add sp, sp, #0x30 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0220EF44: .word Unk_ov4_0221A208 -_0220EF48: .word Unk_ov4_0221A20C -_0220EF4C: .word Unk_ov4_0221A210 - arm_func_end ov4_0220EEF0 - - arm_func_start ov4_0220EF50 -ov4_0220EF50: ; 0x0220EF50 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x24 - mov sl, r0 - ldrh r0, [sl, #0x32] - cmp r0, #4 - beq _0220EF74 - cmp r0, #5 - beq _0220EF88 - b _0220EF9C -_0220EF74: - mov r0, #0x10 - str r0, [sp, #4] - str r0, [sp] - mov r2, #0 - b _0220EF9C -_0220EF88: - mov r0, #0x14 - str r0, [sp, #4] - mov r0, #0x10 - str r0, [sp] - mov r2, #0 -_0220EF9C: - ldr r1, [sp, #4] - ldr r0, [sp] - mov r7, #0 - add r0, r1, r0 - add r0, r2, r0 - mov fp, r0, lsl #1 - cmp fp, #0 - ble _0220F090 - add r0, sl, #0x74 - mov sb, r7 - str r0, [sp, #8] - add r5, sp, #0xc - mov r4, #1 -_0220EFD0: - add r0, sl, #0x348 - bl ov4_02211BF8 - add r0, r7, #0x41 - add r6, r7, #1 - strb r0, [sp, #0xc] - mov r8, #0 - cmp r6, #0 - ble _0220F00C -_0220EFF0: - add r0, sl, #0x348 - mov r1, r5 - mov r2, r4 - bl ov4_02211C4C - add r8, r8, #1 - cmp r8, r6 - blt _0220EFF0 -_0220F00C: - add r0, sl, #0x348 - mov r1, sl - mov r2, #0x30 - bl ov4_02211C4C - add r0, sl, #0x348 - add r1, sl, #0x54 - mov r2, #0x20 - bl ov4_02211C4C - add r0, sl, #0x348 - add r1, sl, #0x34 - mov r2, #0x20 - bl ov4_02211C4C - add r0, sl, #0x348 - add r1, sp, #0xd - bl ov4_02211D04 - add r0, sl, #0x3fc - bl ov4_02211338 - add r0, sl, #0x3fc - mov r1, sl - mov r2, #0x30 - bl ov4_02211380 - add r0, sl, #0x3fc - add r1, sp, #0xd - mov r2, #0x14 - bl ov4_02211380 - ldr r1, [sp, #8] - add r0, sl, #0x3fc - add r1, r1, sb - bl ov4_02211438 - add sb, sb, #0x10 - cmp sb, fp - add r7, r7, #1 - blt _0220EFD0 -_0220F090: - ldrb r0, [sl, #0x454] - add r3, sl, #0x74 - cmp r0, #0 - beq _0220F0CC - ldr r0, [sp, #4] - str r3, [sl, #0x1d4] - add r2, r3, r0 - add r1, r2, r0 - add r0, r3, r0, lsl #1 - str r0, [sl, #0x1d8] - ldr r0, [sp] - str r2, [sl, #0xbc] - add r0, r1, r0 - str r0, [sl, #0xc0] - b _0220F0F4 -_0220F0CC: - ldr r0, [sp, #4] - str r3, [sl, #0xbc] - add r2, r3, r0 - add r1, r2, r0 - add r0, r3, r0, lsl #1 - str r0, [sl, #0xc0] - ldr r0, [sp] - str r2, [sl, #0x1d4] - add r0, r1, r0 - str r0, [sl, #0x1d8] -_0220F0F4: - ldr r1, [sl, #0x1d8] - add r0, sl, #0x1e0 - mov r2, #0x10 - bl ov4_02211D9C - ldr r1, [sl, #0xc0] - add r0, sl, #0xc8 - mov r2, #0x10 - bl ov4_02211D9C - add sp, sp, #0x24 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end ov4_0220EF50 - - arm_func_start ov4_0220F11C -ov4_0220F11C: ; 0x0220F11C - stmfd sp!, {r4, lr} - mov r4, r0 - ldr r2, [r4, #0x81c] - bl ov4_0220EC14 - mov r0, r4 - bl ov4_0220EEF0 - mov r1, #0 - mov r0, r4 - mov r2, r1 - bl ov4_0220DB44 - mov r0, r4 - bl ov4_0220EF50 - mov r0, #5 - strb r0, [r4, #0x455] - ldmia sp!, {r4, pc} - arm_func_end ov4_0220F11C - - arm_func_start ov4_0220F158 -ov4_0220F158: ; 0x0220F158 - stmfd sp!, {r3, r4, r5, lr} - sub sp, sp, #0x30 - mov r5, r0 - ldrb r0, [r5, #0x454] - mov r4, r1 - teq r0, r2 - mov r2, #4 - beq _0220F188 - ldr r1, _0220F22C ; =0x0221A214 - add r0, r5, #0x3a4 - bl ov4_02211380 - b _0220F194 -_0220F188: - ldr r1, _0220F230 ; =0x0221A21C - add r0, r5, #0x3a4 - bl ov4_02211380 -_0220F194: - mov r1, r5 - add r0, r5, #0x3a4 - mov r2, #0x30 - bl ov4_02211380 - add r0, sp, #0 - mov r1, #0x36 - mov r2, #0x30 - bl MI_CpuFill8 - add r1, sp, #0 - add r0, r5, #0x3a4 - mov r2, #0x30 - bl ov4_02211380 - mov r1, r4 - add r0, r5, #0x3a4 - bl ov4_02211438 - add r0, r5, #0x3a4 - bl ov4_02211338 - add r0, r5, #0x3a4 - mov r1, r5 - mov r2, #0x30 - bl ov4_02211380 - add r0, sp, #0 - mov r1, #0x5c - mov r2, #0x30 - bl MI_CpuFill8 - add r0, r5, #0x3a4 - add r1, sp, #0 - mov r2, #0x30 - bl ov4_02211380 - add r0, r5, #0x3a4 - mov r1, r4 - mov r2, #0x10 - bl ov4_02211380 - add r0, r5, #0x3a4 - mov r1, r4 - bl ov4_02211438 - add sp, sp, #0x30 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0220F22C: .word Unk_ov4_0221A214 -_0220F230: .word Unk_ov4_0221A21C - arm_func_end ov4_0220F158 - - arm_func_start ov4_0220F234 -ov4_0220F234: ; 0x0220F234 - stmfd sp!, {r3, r4, r5, lr} - sub sp, sp, #0x28 - mov r5, r0 - ldrb r0, [r5, #0x454] - mov r4, r1 - teq r0, r2 - mov r2, #4 - beq _0220F264 - ldr r1, _0220F308 ; =0x0221A214 - add r0, r5, #0x2ec - bl ov4_02211C4C - b _0220F270 -_0220F264: - ldr r1, _0220F30C ; =0x0221A21C - add r0, r5, #0x2ec - bl ov4_02211C4C -_0220F270: - mov r1, r5 - add r0, r5, #0x2ec - mov r2, #0x30 - bl ov4_02211C4C - add r0, sp, #0 - mov r1, #0x36 - mov r2, #0x28 - bl MI_CpuFill8 - add r1, sp, #0 - add r0, r5, #0x2ec - mov r2, #0x28 - bl ov4_02211C4C - mov r1, r4 - add r0, r5, #0x2ec - bl ov4_02211D04 - add r0, r5, #0x2ec - bl ov4_02211BF8 - add r0, r5, #0x2ec - mov r1, r5 - mov r2, #0x30 - bl ov4_02211C4C - add r0, sp, #0 - mov r1, #0x5c - mov r2, #0x28 - bl MI_CpuFill8 - add r0, r5, #0x2ec - add r1, sp, #0 - mov r2, #0x28 - bl ov4_02211C4C - add r0, r5, #0x2ec - mov r1, r4 - mov r2, #0x14 - bl ov4_02211C4C - add r0, r5, #0x2ec - mov r1, r4 - bl ov4_02211D04 - add sp, sp, #0x28 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0220F308: .word Unk_ov4_0221A214 -_0220F30C: .word Unk_ov4_0221A21C - arm_func_end ov4_0220F234 - - arm_func_start ov4_0220F310 -ov4_0220F310: ; 0x0220F310 - stmfd sp!, {r4, r5, lr} - sub sp, sp, #0x14 - mov r5, r0 - mov r4, r1 - add r0, r5, #0x3a4 - add r1, r5, #0x3fc - mov r2, #0x58 - bl MI_CpuCopy8 - add r1, sp, #0 - mov r0, r5 - mov r2, #1 - bl ov4_0220F158 - add r0, r5, #0x3fc - add r1, r5, #0x3a4 - mov r2, #0x58 - bl MI_CpuCopy8 - add r1, sp, #0 - mov r0, r4 - mov r2, #0x10 - bl memcmp - cmp r0, #0 - movne r0, #9 - addne sp, sp, #0x14 - strneb r0, [r5, #0x455] - ldmneia sp!, {r4, r5, pc} - add r0, r5, #0x2ec - add r1, r5, #0x348 - mov r2, #0x5c - bl MI_CpuCopy8 - add r1, sp, #0 - mov r0, r5 - mov r2, #1 - bl ov4_0220F234 - add r0, r5, #0x348 - add r1, r5, #0x2ec - mov r2, #0x5c - bl MI_CpuCopy8 - add r1, sp, #0 - add r0, r4, #0x10 - mov r2, #0x14 - bl memcmp - cmp r0, #0 - movne r0, #9 - strneb r0, [r5, #0x455] - moveq r0, #6 - streqb r0, [r5, #0x455] - add sp, sp, #0x14 - ldmia sp!, {r4, r5, pc} - arm_func_end ov4_0220F310 - - arm_func_start ov4_0220F3D0 -ov4_0220F3D0: ; 0x0220F3D0 - mov r2, #8 -_0220F3D4: - ldrb r1, [r0, #-1]! - add r1, r1, #1 - ands r1, r1, #0xff - strb r1, [r0] - bxne lr - subs r2, r2, #1 - bne _0220F3D4 - bx lr - arm_func_end ov4_0220F3D0 - - arm_func_start ov4_0220F3F4 -ov4_0220F3F4: ; 0x0220F3F4 - stmfd sp!, {r4, lr} - add r0, r0, #0x1e0 - mov r4, r2 - bl ov4_02211E10 - mov r0, r4 - ldmia sp!, {r4, pc} - arm_func_end ov4_0220F3F4 - - arm_func_start ov4_0220F40C -ov4_0220F40C: ; 0x0220F40C - stmfd sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x44 - mov r6, r1 - ldrb r3, [r6, #3] - ldrb r2, [r6, #4] - mov r7, r0 - add r1, r6, #5 - add r2, r2, r3, lsl #8 - bl ov4_0220F3F4 - ldrh r1, [r7, #0x32] - mov r4, r0 - cmp r1, #4 - beq _0220F44C - cmp r1, #5 - beq _0220F52C - b _0220F608 -_0220F44C: - sub r4, r4, #0x10 - mov r0, r4, asr #8 - strb r0, [r6, #3] - strb r4, [r6, #4] - add r0, r7, #0x3fc - bl ov4_02211338 - ldr r1, [r7, #0x1d4] - add r0, r7, #0x3fc - mov r2, #0x10 - bl ov4_02211380 - add r0, sp, #0 - mov r1, #0x36 - mov r2, #0x30 - bl MI_CpuFill8 - add r1, sp, #0 - add r0, r7, #0x3fc - mov r2, #0x30 - bl ov4_02211380 - add r0, r7, #0x3fc - add r1, r7, #0x2e4 - mov r2, #8 - bl ov4_02211380 - add r0, r7, #0x3fc - mov r1, r6 - mov r2, #1 - bl ov4_02211380 - add r0, r7, #0x3fc - add r1, r6, #3 - add r2, r4, #2 - bl ov4_02211380 - add r0, r7, #0x3fc - add r1, sp, #0x30 - bl ov4_02211438 - add r0, r7, #0x3fc - bl ov4_02211338 - ldr r1, [r7, #0x1d4] - add r0, r7, #0x3fc - mov r2, #0x10 - bl ov4_02211380 - add r0, sp, #0 - mov r1, #0x5c - mov r2, #0x30 - bl MI_CpuFill8 - add r0, r7, #0x3fc - add r1, sp, #0 - mov r2, #0x30 - bl ov4_02211380 - add r0, r7, #0x3fc - add r1, sp, #0x30 - mov r2, #0x10 - bl ov4_02211380 - add r0, r7, #0x3fc - add r1, sp, #0x30 - bl ov4_02211438 - mov r5, #0x10 - b _0220F608 -_0220F52C: - sub r4, r4, #0x14 - mov r0, r4, asr #8 - strb r0, [r6, #3] - strb r4, [r6, #4] - add r0, r7, #0x348 - bl ov4_02211BF8 - ldr r1, [r7, #0x1d4] - add r0, r7, #0x348 - mov r2, #0x14 - bl ov4_02211C4C - add r0, sp, #0 - mov r1, #0x36 - mov r2, #0x28 - bl MI_CpuFill8 - add r1, sp, #0 - add r0, r7, #0x348 - mov r2, #0x28 - bl ov4_02211C4C - add r0, r7, #0x348 - add r1, r7, #0x2e4 - mov r2, #8 - bl ov4_02211C4C - add r0, r7, #0x348 - mov r1, r6 - mov r2, #1 - bl ov4_02211C4C - add r0, r7, #0x348 - add r1, r6, #3 - add r2, r4, #2 - bl ov4_02211C4C - add r0, r7, #0x348 - add r1, sp, #0x30 - bl ov4_02211D04 - add r0, r7, #0x348 - bl ov4_02211BF8 - ldr r1, [r7, #0x1d4] - add r0, r7, #0x348 - mov r2, #0x14 - bl ov4_02211C4C - add r0, sp, #0 - mov r1, #0x5c - mov r2, #0x28 - bl MI_CpuFill8 - add r0, r7, #0x348 - add r1, sp, #0 - mov r2, #0x28 - bl ov4_02211C4C - add r0, r7, #0x348 - add r1, sp, #0x30 - mov r2, #0x14 - bl ov4_02211C4C - add r0, r7, #0x348 - add r1, sp, #0x30 - bl ov4_02211D04 - mov r5, #0x14 -_0220F608: - add r0, r6, #5 - add r1, sp, #0x30 - mov r2, r5 - add r0, r0, r4 - bl memcmp - cmp r0, #0 - movne r0, #9 - strneb r0, [r7, #0x455] - add r0, r7, #0x2ec - bl ov4_0220F3D0 - add r0, r4, #5 - add sp, sp, #0x44 - ldmia sp!, {r4, r5, r6, r7, pc} - arm_func_end ov4_0220F40C - - arm_func_start ov4_0220F63C -ov4_0220F63C: ; 0x0220F63C - stmfd sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x30 - mov r4, r1 - mov r5, r0 - ldrh r0, [r5, #0x32] - ldrb r2, [r4, #3] - ldrb r1, [r4, #4] - cmp r0, #4 - add r6, r4, #5 - add r7, r1, r2, lsl #8 - beq _0220F674 - cmp r0, #5 - beq _0220F744 - b _0220F810 -_0220F674: - add r0, r5, #0x3fc - bl ov4_02211338 - ldr r1, [r5, #0xbc] - add r0, r5, #0x3fc - mov r2, #0x10 - bl ov4_02211380 - add r0, sp, #0 - mov r1, #0x36 - mov r2, #0x30 - bl MI_CpuFill8 - add r1, sp, #0 - add r0, r5, #0x3fc - mov r2, #0x30 - bl ov4_02211380 - add r0, r5, #0x3fc - add r1, r5, #0x1cc - mov r2, #8 - bl ov4_02211380 - add r0, r5, #0x3fc - mov r1, r4 - mov r2, #1 - bl ov4_02211380 - add r0, r5, #0x3fc - add r1, r4, #3 - add r2, r7, #2 - bl ov4_02211380 - add r0, r5, #0x3fc - add r1, r6, r7 - bl ov4_02211438 - add r0, r5, #0x3fc - bl ov4_02211338 - ldr r1, [r5, #0xbc] - add r0, r5, #0x3fc - mov r2, #0x10 - bl ov4_02211380 - add r0, sp, #0 - mov r1, #0x5c - mov r2, #0x30 - bl MI_CpuFill8 - add r0, r5, #0x3fc - add r1, sp, #0 - mov r2, #0x30 - bl ov4_02211380 - add r0, r5, #0x3fc - add r1, r6, r7 - mov r2, #0x10 - bl ov4_02211380 - add r1, r6, r7 - add r0, r5, #0x3fc - bl ov4_02211438 - add r7, r7, #0x10 - b _0220F810 -_0220F744: - add r0, r5, #0x348 - bl ov4_02211BF8 - ldr r1, [r5, #0xbc] - add r0, r5, #0x348 - mov r2, #0x14 - bl ov4_02211C4C - add r0, sp, #0 - mov r1, #0x36 - mov r2, #0x28 - bl MI_CpuFill8 - add r1, sp, #0 - add r0, r5, #0x348 - mov r2, #0x28 - bl ov4_02211C4C - add r0, r5, #0x348 - add r1, r5, #0x1cc - mov r2, #8 - bl ov4_02211C4C - add r0, r5, #0x348 - mov r1, r4 - mov r2, #1 - bl ov4_02211C4C - add r0, r5, #0x348 - add r1, r4, #3 - add r2, r7, #2 - bl ov4_02211C4C - add r0, r5, #0x348 - add r1, r6, r7 - bl ov4_02211D04 - add r0, r5, #0x348 - bl ov4_02211BF8 - ldr r1, [r5, #0xbc] - add r0, r5, #0x348 - mov r2, #0x14 - bl ov4_02211C4C - add r0, sp, #0 - mov r1, #0x5c - mov r2, #0x28 - bl MI_CpuFill8 - add r0, r5, #0x348 - add r1, sp, #0 - mov r2, #0x28 - bl ov4_02211C4C - add r0, r5, #0x348 - add r1, r6, r7 - mov r2, #0x14 - bl ov4_02211C4C - add r1, r6, r7 - add r0, r5, #0x348 - bl ov4_02211D04 - add r7, r7, #0x14 -_0220F810: - mov r0, r7, asr #8 - strb r0, [r4, #3] - mov r2, r7 - add r0, r5, #0xc8 - add r1, r4, #5 - strb r7, [r4, #4] - bl ov4_02211E10 - add r0, r5, #0x1d4 - bl ov4_0220F3D0 - add r0, r7, #5 - add sp, sp, #0x30 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov4_0220F63C - - arm_func_start ov4_0220F840 -ov4_0220F840: ; 0x0220F840 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - add r4, sp, #0 -_0220F854: - mov r0, r4 - mov r1, r5 - bl ov4_0220C154 - ldr r1, [sp] - cmp r1, #0 - mvneq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - cmp r1, r6 - strhi r6, [sp] - ldr r2, [sp] - mov r1, r7 - bl MI_CpuCopy8 - ldr r0, [sp] - mov r1, r5 - bl ov4_0220C234 - ldr r0, [sp] - sub r6, r6, r0 - cmp r6, #0 - add r7, r7, r0 - bgt _0220F854 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov4_0220F840 - - arm_func_start ov4_0220F8AC -ov4_0220F8AC: ; 0x0220F8AC - stmfd sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - add r0, r6, #0x2ec - bl ov4_02211C4C - mov r1, r5 - mov r2, r4 - add r0, r6, #0x3a4 - bl ov4_02211380 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ov4_0220F8AC - - arm_func_start ov4_0220F8D8 -ov4_0220F8D8: ; 0x0220F8D8 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sb, r0 - ldrb r2, [sb, #0x455] - mov r8, r1 - cmp r2, #9 - bne _0220F904 - ldr r1, _0220FB54 ; =0x0221DE30 - mov r0, r8 - ldr r1, [r1, #0] - blx r1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0220F904: - ldrb r3, [r8, #3] - ldrb r1, [r8, #4] - add r0, r2, #0xf9 - and r0, r0, #0xff - add r1, r1, r3, lsl #8 - cmp r0, #1 - add r6, r1, #5 - ldrb r4, [r8] - bhi _0220F930 - cmp r4, #0x15 - bne _0220F940 -_0220F930: - cmp r4, #0x15 - bne _0220F970 - cmp r6, #7 - bls _0220F970 -_0220F940: - mov r0, sb - mov r1, r8 - bl ov4_0220F40C - ldrb r2, [sb, #0x455] - mov r6, r0 - cmp r2, #9 - bne _0220F970 - ldr r1, _0220FB54 ; =0x0221DE30 - mov r0, r8 - ldr r1, [r1, #0] - blx r1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0220F970: - sub r0, r4, #0x14 - cmp r0, #3 - add r5, r8, #5 - sub r6, r6, #5 - addls pc, pc, r0, lsl #2 - b _0220FB38 -_0220F988: ; jump table - b _0220F998 ; case 0 - b _0220F9C8 ; case 1 - b _0220F9DC ; case 2 - b _0220FB18 ; case 3 -_0220F998: - ldr r0, [sb, #0x1d4] - cmp r0, #0 - moveq r0, #9 - streqb r0, [sb, #0x455] - beq _0220FB40 - add r0, sb, #0x2e4 - mov r1, #0 - mov r2, #8 - bl MI_CpuFill8 - mov r0, #7 - strb r0, [sb, #0x455] - b _0220FB40 -_0220F9C8: - ldrb r0, [r5] - cmp r0, #2 - moveq r0, #9 - streqb r0, [sb, #0x455] - b _0220FB40 -_0220F9DC: - mov fp, #4 - mov sl, #1 - mov r4, #0 -_0220F9E8: - ldrb r7, [r5, #2] - ldrb r0, [r5, #1] - ldrb r3, [r5] - ldrb r1, [r5, #3] - mov r7, r7, lsl #8 - add r0, r7, r0, lsl #16 - cmp r3, #0xb - add r7, r1, r0 - add r5, r5, #4 - bgt _0220FA38 - cmp r3, #0xb - bge _0220FAAC - cmp r3, #2 - bgt _0220FAE0 - cmp r3, #1 - blt _0220FAE0 - beq _0220FA68 - cmp r3, #2 - beq _0220FA9C - b _0220FAE0 -_0220FA38: - sub r0, r3, #0xd - cmp r0, #7 - addls pc, pc, r0, lsl #2 - b _0220FAE0 -_0220FA48: ; jump table - b _0220FAC0 ; case 0 - b _0220FAC8 ; case 1 - b _0220FAE0 ; case 2 - b _0220FA8C ; case 3 - b _0220FAE0 ; case 4 - b _0220FAE0 ; case 5 - b _0220FAE0 ; case 6 - b _0220FAD0 ; case 7 -_0220FA68: - ldrb r0, [sb, #0x454] - cmp r0, #0 - beq _0220FAE8 - cmp r2, #0 - bne _0220FAE8 - mov r0, sb - mov r1, r5 - bl ov4_0220EB78 - b _0220FAE8 -_0220FA8C: - mov r0, sb - mov r1, r5 - bl ov4_0220F11C - b _0220FAE8 -_0220FA9C: - mov r0, sb - mov r1, r5 - bl ov4_0220E940 - b _0220FAE8 -_0220FAAC: - mov r0, sb - mov r1, r5 - bl ov4_0220E71C - strb r4, [sb, #0x5ac] - b _0220FAE8 -_0220FAC0: - strb sl, [sb, #0x5ac] - b _0220FAE8 -_0220FAC8: - strb fp, [sb, #0x455] - b _0220FAE8 -_0220FAD0: - mov r0, sb - mov r1, r5 - bl ov4_0220F310 - b _0220FAE8 -_0220FAE0: - mov r0, #9 - strb r0, [sb, #0x455] -_0220FAE8: - mov r0, sb - sub r1, r5, #4 - add r2, r7, #4 - bl ov4_0220F8AC - add r0, r7, #4 - add r5, r5, r7 - subs r6, r6, r0 - beq _0220FB40 - ldrb r2, [sb, #0x455] - cmp r2, #9 - bne _0220F9E8 - b _0220FB40 -_0220FB18: - str r8, [sb, #0x824] - mov r0, #5 - str r0, [sb, #0x82c] - add r0, r6, #5 - str r0, [sb, #0x828] - mov r0, #1 - strb r0, [sb, #0x456] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0220FB38: - mov r0, #9 - strb r0, [sb, #0x455] -_0220FB40: - ldr r1, _0220FB54 ; =0x0221DE30 - mov r0, r8 - ldr r1, [r1, #0] - blx r1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0220FB54: .word Unk_ov4_0221DE30 - arm_func_end ov4_0220F8D8 - - arm_func_start ov4_0220FB58 -ov4_0220FB58: ; 0x0220FB58 - stmfd sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r5, r0 - ldr r4, [r5, #0xc] - add r6, sp, #0 -_0220FB6C: - mov r0, r6 - mov r1, r5 - bl ov4_0220C154 - ldr r1, [sp] - cmp r1, #0 - moveq r0, #9 - addeq sp, sp, #4 - streqb r0, [r4, #0x455] - ldmeqia sp!, {r3, r4, r5, r6, pc} - cmp r1, #5 - blo _0220FB6C - ldrb r1, [r0] - cmp r1, #0x80 - bne _0220FC54 - ldrb r1, [r4, #0x454] - cmp r1, #0 - beq _0220FC48 - ldrb r1, [r4, #0x455] - cmp r1, #0 - bne _0220FC48 - ldrb r2, [r0, #1] - mov r1, r5 - mov r0, #2 - str r2, [sp] - bl ov4_0220C234 - ldr r1, _0220FCEC ; =0x0221DE04 - ldr r0, [sp] - ldr r1, [r1, #0] - blx r1 - movs r6, r0 - moveq r0, #9 - addeq sp, sp, #4 - streqb r0, [r4, #0x455] - ldmeqia sp!, {r3, r4, r5, r6, pc} - ldr r1, [sp] - mov r2, r5 - bl ov4_0220F840 - cmp r0, #0 - ldreqb r0, [r6] - cmpeq r0, #1 - movne r0, #9 - strneb r0, [r4, #0x455] - bne _0220FC24 - mov r0, r4 - add r1, r6, #1 - bl ov4_0220EAB0 -_0220FC24: - ldr r2, [sp] - mov r0, r4 - mov r1, r6 - bl ov4_0220F8AC - ldr r1, _0220FCF0 ; =0x0221DE30 - mov r0, r6 - ldr r1, [r1, #0] - blx r1 - b _0220FCE0 -_0220FC48: - mov r0, #9 - strb r0, [r4, #0x455] - b _0220FCE0 -_0220FC54: - ldrb r2, [r0, #3] - ldrb r0, [r0, #4] - ldr r1, _0220FCF4 ; =0x00004805 - add r0, r0, r2, lsl #8 - add r0, r0, #5 - str r0, [sp] - cmp r0, r1 - movhi r0, #9 - addhi sp, sp, #4 - strhib r0, [r4, #0x455] - ldmhiia sp!, {r3, r4, r5, r6, pc} - ldr r1, _0220FCEC ; =0x0221DE04 - ldr r1, [r1, #0] - blx r1 - movs r6, r0 - moveq r0, #9 - addeq sp, sp, #4 - streqb r0, [r4, #0x455] - ldmeqia sp!, {r3, r4, r5, r6, pc} - ldr r1, [sp] - mov r2, r5 - bl ov4_0220F840 - cmp r0, #0 - beq _0220FCD4 - ldr r1, _0220FCF0 ; =0x0221DE30 - mov r0, r6 - ldr r1, [r1, #0] - blx r1 - mov r0, #9 - add sp, sp, #4 - strb r0, [r4, #0x455] - ldmia sp!, {r3, r4, r5, r6, pc} -_0220FCD4: - mov r0, r4 - mov r1, r6 - bl ov4_0220F8D8 -_0220FCE0: - ldrb r0, [r4, #0x455] - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - ; .align 2, 0 -_0220FCEC: .word Unk_ov4_0221DE04 -_0220FCF0: .word Unk_ov4_0221DE30 -_0220FCF4: .word 0x00004805 - arm_func_end ov4_0220FB58 - - arm_func_start ov4_0220FCF8 -ov4_0220FCF8: ; 0x0220FCF8 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x74 - ldr r2, _0220FE18 ; =0x0221F620 - mov sl, r0 - ldrb r0, [r2] - mov sb, r1 - cmp r0, #0 - bne _0220FD5C - ldr r2, _0220FE1C ; =0x0221DE58 - add r0, sp, #0 - ldr r3, [r2, #0] - ldmib r2, {r1, r4} - umull r6, r5, r4, r3 - mla r5, r4, r1, r5 - ldr r1, [r2, #0xc] - ldr r4, [r2, #0x10] - mla r5, r1, r3, r5 - ldr r1, [r2, #0x14] - adds r4, r4, r6 - adc r3, r1, r5 - str r4, [r2, #0] - mov r1, #4 - str r3, [r2, #4] - str r3, [sp] - bl CPS_SslAddRandomSeed -_0220FD5C: - cmp sb, #0 - mov r8, #0 - addle sp, sp, #0x74 - mov r1, #0x14 - ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r5, _0220FE20 ; =0x0221F798 - add r6, sp, #0x18 - mov fp, r1 - add r4, sp, #4 -_0220FD80: - cmp r1, #0x14 - bne _0220FDF4 - mov r0, r6 - bl ov4_02211BF8 - bl OS_DisableInterrupts - mov r7, r0 - mov r0, r6 - mov r1, r5 - mov r2, fp - bl ov4_02211C4C - mov r0, r6 - mov r1, r4 - bl ov4_02211D6C - ldr lr, _0220FE24 ; =0x0221F7AB - mov r3, #1 - mov r2, #0x13 - add ip, sp, #0x17 -_0220FDC4: - ldrb r1, [lr] - ldrb r0, [ip], #-1 - subs r2, r2, #1 - add r0, r1, r0 - add r0, r3, r0 - strb r0, [lr], #-1 - mov r3, r0, lsr #8 - bpl _0220FDC4 - str r0, [sp] - mov r0, r7 - bl OS_RestoreInterrupts - mov r1, #0 -_0220FDF4: - ldrb r0, [r4, r1] - add r1, r1, #1 - cmp r0, #0 - strneb r0, [sl, r8] - addne r8, r8, #1 - cmp r8, sb - blt _0220FD80 - add sp, sp, #0x74 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0220FE18: .word Unk_ov4_0221F620 -_0220FE1C: .word Unk_ov4_0221DE58 -_0220FE20: .word Unk_ov4_0221F798 -_0220FE24: .word 0x0221F7AB - arm_func_end ov4_0220FCF8 - - arm_func_start CPS_SslAddRandomSeed -CPS_SslAddRandomSeed: ; 0x0220FE28 - stmfd sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0x5c - mov r6, r0 - add r0, sp, #0 - mov r5, r1 - bl ov4_02211BF8 - bl OS_DisableInterrupts - mov r4, r0 - ldr r1, _0220FE90 ; =0x0221F798 - add r0, sp, #0 - mov r2, #0x14 - bl ov4_02211C4C - mov r1, r6 - mov r2, r5 - add r0, sp, #0 - bl ov4_02211C4C - ldr r1, _0220FE90 ; =0x0221F798 - add r0, sp, #0 - bl ov4_02211D04 - mov r0, r4 - bl OS_RestoreInterrupts - ldr r0, _0220FE94 ; =0x0221F620 - mov r1, #1 - strb r1, [r0] - add sp, sp, #0x5c - ldmia sp!, {r3, r4, r5, r6, pc} - ; .align 2, 0 -_0220FE90: .word Unk_ov4_0221F798 -_0220FE94: .word Unk_ov4_0221F620 - arm_func_end CPS_SslAddRandomSeed - - arm_func_start ov4_0220FE98 -ov4_0220FE98: ; 0x0220FE98 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov sb, r0 - ldr r4, [sb, #0xc] - ldr r7, [r4, #0x820] - cmp r7, #0 - ldrne r8, [r7] - moveq r8, #0 - bl ov4_0220DC98 - mov r1, r0, lsr #0x18 - strb r1, [r4, #0x54] - mov r1, r0, lsr #0x10 - strb r1, [r4, #0x55] - mov r1, r0, lsr #8 - strb r1, [r4, #0x56] - strb r0, [r4, #0x57] - add r0, r4, #0x58 - mov r1, #0x1c - bl ov4_0220FCF8 - ldr r1, _022100EC ; =0x0221DE04 - add r0, r8, #0x9d - ldr r1, [r1, #0] - blx r1 - movs r5, r0 - bne _0220FF08 - mov r0, #9 - strb r0, [r4, #0x455] - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_0220FF08: - mov r0, #2 - strb r0, [r5, #5] - mov r3, #0 - strb r3, [r5, #6] - strb r3, [r5, #7] - mov r0, #0x46 - strb r0, [r5, #8] - mov r0, #3 - strb r0, [r5, #9] - add r0, r4, #0x54 - add r1, r5, #0xb - mov r2, #0x20 - strb r3, [r5, #0xa] - bl MI_CpuCopy8 - mov r2, #0x20 - strb r2, [r5, #0x2b] - ldrb r0, [r4, #0x30] - cmp r0, #0 - beq _0220FF70 - add r0, r4, #0x74 - add r1, r5, #0x2c - bl MI_CpuCopy8 - mov r0, #1 - strb r0, [r4, #0x31] - add r6, r5, #0x4c - b _0220FFCC -_0220FF70: - add r0, r5, #0x2c - mov r1, #0x1c - bl ov4_0220FCF8 - ldr r0, _022100F0 ; =0x0221F620 - add r6, r5, #0x4c - ldr r3, [r0, #4] - sub r0, r6, #0x20 - mov r1, r3, lsr #0x18 - strb r1, [r5, #0x48] - mov r1, r3, lsr #0x10 - strb r1, [r5, #0x49] - mov r1, r3, lsr #8 - strb r1, [r5, #0x4a] - add r1, r4, #0x74 - mov r2, #0x20 - strb r3, [r5, #0x4b] - bl MI_CpuCopy8 - ldr r0, _022100F0 ; =0x0221F620 - mov r1, #0 - ldr r2, [r0, #4] - strb r1, [r4, #0x31] - add r1, r2, #1 - str r1, [r0, #4] -_0220FFCC: - ldrh r1, [r4, #0x32] - mov r0, #0 - mov r1, r1, asr #8 - strb r1, [r6] - ldrh r1, [r4, #0x32] - strb r1, [r6, #1] - strb r0, [r6, #2] - ldrb r0, [r4, #0x31] - add r6, r6, #3 - cmp r0, #0 - bne _02210080 - cmp r8, #0 - beq _02210064 - add r2, r8, #6 - mov r0, #0xb - strb r0, [r6] - add r1, r8, #3 - mov r0, r2, asr #0x10 - strb r0, [r6, #1] - mov r0, r2, asr #8 - strb r0, [r6, #2] - strb r2, [r6, #3] - mov r0, r1, asr #0x10 - strb r0, [r6, #4] - mov r0, r1, asr #8 - strb r0, [r6, #5] - strb r1, [r6, #6] - mov r0, r8, asr #0x10 - strb r0, [r6, #7] - mov r0, r8, asr #8 - strb r0, [r6, #8] - strb r8, [r6, #9] - add r6, r6, #0xa - ldr r0, [r7, #4] - mov r1, r6 - mov r2, r8 - bl MI_CpuCopy8 - add r6, r6, r8 -_02210064: - mov r0, #0xe - strb r0, [r6] - mov r0, #0 - strb r0, [r6, #1] - strb r0, [r6, #2] - strb r0, [r6, #3] - add r6, r6, #4 -_02210080: - mov r0, #0x16 - sub r1, r6, r5 - sub r6, r1, #5 - strb r0, [r5] - mov r0, #3 - strb r0, [r5, #1] - mov r0, #0 - strb r0, [r5, #2] - mov r0, r6, asr #8 - strb r0, [r5, #3] - mov r0, r4 - mov r2, r6 - add r1, r5, #5 - strb r6, [r5, #4] - bl ov4_0220F8AC - mov r2, #0 - mov r0, r5 - mov r3, r2 - add r1, r6, #5 - str sb, [sp] - bl ov4_0220C3FC - ldr r1, _022100F4 ; =0x0221DE30 - mov r0, r5 - ldr r1, [r1, #0] - blx r1 - ldrb r0, [r4, #0x31] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ; .align 2, 0 -_022100EC: .word Unk_ov4_0221DE04 -_022100F0: .word Unk_ov4_0221F620 -_022100F4: .word Unk_ov4_0221DE30 - arm_func_end ov4_0220FE98 - - arm_func_start ov4_022100F8 -ov4_022100F8: ; 0x022100F8 - stmfd sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - ldr r1, _02210248 ; =0x0221DE04 - mov r6, r0 - ldr r1, [r1, #0] - mov r0, #0x83 - ldr r5, [r6, #0xc] - blx r1 - movs r4, r0 - moveq r0, #9 - addeq sp, sp, #4 - streqb r0, [r5, #0x455] - ldmeqia sp!, {r3, r4, r5, r6, pc} - mov r0, #0x14 - strb r0, [r4] - mov r0, #3 - strb r0, [r4, #1] - mov r1, #0 - strb r1, [r4, #2] - strb r1, [r4, #3] - mov r3, #1 - strb r3, [r4, #4] - add r0, r5, #0x1cc - mov r2, #8 - strb r3, [r4, #5] - bl MI_CpuFill8 - mov r0, #0x16 - strb r0, [r4, #6] - mov r0, #3 - strb r0, [r4, #7] - mov r1, #0 - strb r1, [r4, #8] - strb r1, [r4, #9] - mov r0, #0x28 - strb r0, [r4, #0xa] - mov r0, #0x14 - strb r0, [r4, #0xb] - strb r1, [r4, #0xc] - strb r1, [r4, #0xd] - mov r3, #0x24 - add r0, r5, #0x3a4 - add r1, r5, #0x3fc - mov r2, #0x58 - strb r3, [r4, #0xe] - bl MI_CpuCopy8 - mov r0, r5 - add r1, r4, #0xf - mov r2, #0 - bl ov4_0220F158 - add r0, r5, #0x3fc - add r1, r5, #0x3a4 - mov r2, #0x58 - bl MI_CpuCopy8 - add r0, r5, #0x2ec - add r1, r5, #0x348 - mov r2, #0x5c - bl MI_CpuCopy8 - mov r0, r5 - add r1, r4, #0x1f - mov r2, #0 - bl ov4_0220F234 - add r0, r5, #0x348 - add r1, r5, #0x2ec - mov r2, #0x5c - bl MI_CpuCopy8 - mov r0, r5 - add r1, r4, #0xb - mov r2, #0x28 - bl ov4_0220F8AC - mov r0, r5 - add r1, r4, #6 - bl ov4_0220F63C - mov r2, #0 - add r1, r0, #6 - mov r0, r4 - mov r3, r2 - str r6, [sp] - bl ov4_0220C3FC - ldr r1, _0221024C ; =0x0221DE30 - mov r0, r4 - ldr r1, [r1, #0] - blx r1 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - ; .align 2, 0 -_02210248: .word Unk_ov4_0221DE04 -_0221024C: .word Unk_ov4_0221DE30 - arm_func_end ov4_022100F8 - - arm_func_start ov4_02210250 -ov4_02210250: ; 0x02210250 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - ldr r1, _022103D8 ; =0x0221DE04 - mov r7, r0 - ldr r1, [r1, #0] - mov r0, #0x98 - ldr r4, [r7, #0xc] - blx r1 - movs r5, r0 - moveq r0, #9 - streqb r0, [r4, #0x455] - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, #3 - strb r0, [r5, #9] - mov r0, #0 - strb r0, [r5, #0xa] - bl ov4_0220DC98 - mov r1, r0, lsr #0x18 - strb r1, [r4, #0x34] - mov r1, r0, lsr #0x10 - strb r1, [r4, #0x35] - mov r1, r0, lsr #8 - strb r1, [r4, #0x36] - strb r0, [r4, #0x37] - add r0, r4, #0x38 - mov r1, #0x1c - bl ov4_0220FCF8 - add r0, r4, #0x34 - add r1, r5, #0xb - mov r2, #0x20 - bl MI_CpuCopy8 - ldrh r2, [r7, #0x18] - ldr r1, [r7, #0x1c] - mov r0, r4 - bl ov4_0220DAA4 - ldrb r0, [r4, #0x30] - cmp r0, #0 - moveq r0, #0 - streqb r0, [r5, #0x2b] - addeq r0, r5, #0x2c - beq _02210308 - mov r2, #0x20 - add r0, r4, #0x74 - add r1, r5, #0x2c - strb r2, [r5, #0x2b] - bl MI_CpuCopy8 - add r0, r5, #0x4c -_02210308: - mov r6, #0 - strb r6, [r0] - mov r1, #4 - strb r1, [r0, #1] - ldr r2, _022103DC ; =0x0221A1BC - add r0, r0, #2 -_02210320: - mov r3, r6, lsl #1 - ldrh r1, [r2, r3] - add r6, r6, #1 - cmp r6, #2 - mov r1, r1, asr #8 - strb r1, [r0] - ldrh r1, [r2, r3] - strb r1, [r0, #1] - add r0, r0, #2 - blo _02210320 - mov r3, #1 - mov r2, #0 - strb r3, [r0] - add r1, r0, #2 - sub r1, r1, r5 - sub r6, r1, #5 - strb r2, [r0, #1] - sub r1, r6, #4 - mov r0, #0x16 - strb r0, [r5] - mov r0, #3 - strb r0, [r5, #1] - strb r2, [r5, #2] - mov r0, r6, asr #8 - strb r0, [r5, #3] - strb r6, [r5, #4] - strb r3, [r5, #5] - mov r0, r1, asr #0x10 - strb r0, [r5, #6] - mov r0, r1, asr #8 - strb r0, [r5, #7] - strb r1, [r5, #8] - mov r0, r5 - mov r3, r2 - add r1, r6, #5 - str r7, [sp] - bl ov4_0220C3FC - mov r0, r4 - mov r2, r6 - add r1, r5, #5 - bl ov4_0220F8AC - ldr r1, _022103E0 ; =0x0221DE30 - mov r0, r5 - ldr r1, [r1, #0] - blx r1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_022103D8: .word Unk_ov4_0221DE04 -_022103DC: .word Unk_ov4_0221A1BC -_022103E0: .word Unk_ov4_0221DE30 - arm_func_end ov4_02210250 - - arm_func_start ov4_022103E4 -ov4_022103E4: ; 0x022103E4 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - mov sl, r0 - ldr r4, [sl, #0xc] - ldrb r0, [r4, #0x5ac] - cmp r0, #0 - beq _02210418 - mov r2, #0 - ldr r0, _02210698 ; =0x02215E40 - mov r3, r2 - mov r1, #7 - str sl, [sp] - bl ov4_0220C3FC -_02210418: - mov r0, #3 - strb r0, [r4] - mov r0, #0 - strb r0, [r4, #1] - add r0, r4, #2 - mov r1, #0x2e - bl ov4_0220FCF8 - ldr sb, [r4, #0x594] - ldr r0, _0221069C ; =0x0221DE04 - mov r1, sb, lsl #1 - ldr r2, [r0, #0] - add r1, r1, r1, lsr #31 - mov r0, sb - mov r7, r1, asr #1 - blx r2 - movs r8, r0 - moveq r0, #9 - addeq sp, sp, #8 - streqb r0, [r4, #0x455] - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, #0 - strb r0, [r8] - mov r2, #2 - add r0, r8, #2 - sub r1, sb, #0x33 - strb r2, [r8, #1] - bl ov4_0220FCF8 - add r1, r8, sb - mov r0, r4 - sub r3, sb, #0x31 - mov r5, #0 - sub r1, r1, #0x30 - mov r2, #0x30 - strb r5, [r8, r3] - bl MI_CpuCopy8 - ldr r1, _0221069C ; =0x0221DE04 - mov r0, r7, lsl #3 - ldr r1, [r1, #0] - blx r1 - movs r5, r0 - bne _022104DC - ldr r1, _022106A0 ; =0x0221DE30 - mov r0, r8 - ldr r1, [r1, #0] - blx r1 - mov r0, #9 - add sp, sp, #8 - strb r0, [r4, #0x455] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022104DC: - add r0, r5, r7, lsl #1 - add fp, r0, r7, lsl #1 - mov r1, r8 - mov r2, sb - mov r3, r7 - str r0, [sp, #4] - add r6, fp, r7, lsl #1 - bl ov4_02212C28 - add r0, r4, #0x198 - add r1, r0, #0x400 - ldr r2, [r4, #0x5a0] - mov r0, fp - mov r3, r7 - bl ov4_02212C28 - add r1, r4, #0x94 - mov r0, r6 - add r1, r1, #0x400 - mov r2, sb - mov r3, r7 - bl ov4_02212C28 - bl ov4_0220DCF0 - str r6, [sp] - mov r6, r0 - ldr r1, [sp, #4] - mov r2, fp - mov r3, r7 - mov r0, r5 - bl ov4_02212614 - mov r0, r6 - bl ov4_0220DD3C - ldr r1, _0221069C ; =0x0221DE04 - add r0, sb, #0x49 - ldr r1, [r1, #0] - blx r1 - movs r6, r0 - bne _0221059C - ldr r1, _022106A0 ; =0x0221DE30 - mov r0, r8 - ldr r1, [r1, #0] - blx r1 - ldr r1, _022106A0 ; =0x0221DE30 - mov r0, r5 - ldr r1, [r1, #0] - blx r1 - mov r0, #9 - add sp, sp, #8 - strb r0, [r4, #0x455] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0221059C: - mov r0, #0x16 - strb r0, [r6] - mov r1, #3 - add r0, sb, #4 - strb r1, [r6, #1] - mov r1, #0 - strb r1, [r6, #2] - mov r1, r0, asr #8 - strb r1, [r6, #3] - strb r0, [r6, #4] - mov r0, #0x10 - strb r0, [r6, #5] - mov r0, sb, asr #0x10 - strb r0, [r6, #6] - mov r0, sb, asr #8 - strb r0, [r6, #7] - strb sb, [r6, #8] - tst sb, #1 - add r0, r6, #9 - beq _02210604 - add r0, sb, sb, lsr #31 - mov r0, r0, asr #1 - mov r0, r0, lsl #1 - ldrh r1, [r5, r0] - add r0, r6, #0xa - strb r1, [r6, #9] -_02210604: - add r1, sb, sb, lsr #31 - mov r1, r1, asr #1 - subs r3, r1, #1 - bmi _02210638 -_02210614: - mov r2, r3, lsl #1 - ldrh r1, [r5, r2] - subs r3, r3, #1 - mov r1, r1, asr #8 - strb r1, [r0] - ldrh r1, [r5, r2] - strb r1, [r0, #1] - add r0, r0, #2 - bpl _02210614 -_02210638: - mov r2, #0 - mov r0, r6 - mov r3, r2 - add r1, sb, #9 - str sl, [sp] - bl ov4_0220C3FC - mov r0, r4 - add r1, r6, #5 - add r2, sb, #4 - bl ov4_0220F8AC - ldr r1, _022106A0 ; =0x0221DE30 - mov r0, r6 - ldr r1, [r1, #0] - blx r1 - ldr r1, _022106A0 ; =0x0221DE30 - mov r0, r5 - ldr r1, [r1, #0] - blx r1 - ldr r1, _022106A0 ; =0x0221DE30 - mov r0, r8 - ldr r1, [r1, #0] - blx r1 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_02210698: .word Unk_ov4_02215E40 -_0221069C: .word Unk_ov4_0221DE04 -_022106A0: .word Unk_ov4_0221DE30 - arm_func_end ov4_022103E4 - - arm_func_start ov4_022106A4 -ov4_022106A4: ; 0x022106A4 - stmfd sp!, {r4, lr} - mov r4, r0 - bl ov4_0220FB58 - cmp r0, #7 - movne r0, #1 - ldmneia sp!, {r4, pc} - mov r0, r4 - bl ov4_0220FB58 - cmp r0, #6 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r4, pc} - arm_func_end ov4_022106A4 - - arm_func_start ov4_022106D4 -ov4_022106D4: ; 0x022106D4 - stmfd sp!, {r4, lr} - mov r4, r0 - bl ov4_0220FB58 - cmp r0, #1 - movne r0, #1 - ldmneia sp!, {r4, pc} - mov r0, r4 - bl ov4_0220FE98 - cmp r0, #0 - beq _02210724 - ldr r0, [r4, #0xc] - bl ov4_0220EF50 - mov r0, r4 - bl ov4_022100F8 - mov r0, r4 - bl ov4_022106A4 - cmp r0, #0 - beq _02210754 - mov r0, #1 - ldmia sp!, {r4, pc} -_02210724: - mov r0, r4 - bl ov4_0220FB58 - cmp r0, #5 - movne r0, #1 - ldmneia sp!, {r4, pc} - mov r0, r4 - bl ov4_022106A4 - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r4, pc} - mov r0, r4 - bl ov4_022100F8 -_02210754: - mov r0, #0 - ldmia sp!, {r4, pc} - arm_func_end ov4_022106D4 - - arm_func_start ov4_0221075C -ov4_0221075C: ; 0x0221075C - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - ldr r6, [r7, #0xc] - mov r5, #0 - mov r4, #1 -_02210770: - mov r0, r7 - bl ov4_0220BE14 - strb r5, [r6, #0x455] - str r5, [r6, #0x1d4] - add r0, r6, #0x2ec - strb r4, [r6, #0x454] - bl ov4_02211BF8 - add r0, r6, #0x3a4 - bl ov4_02211338 - mov r0, r7 - bl ov4_022106D4 - cmp r0, #0 - moveq r0, #8 - streqb r0, [r6, #0x455] - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r7 - bl ov4_0220BFEC - ldrh r0, [r7, #0x1a] - strh r0, [r7, #0x18] - ldr r0, [r7, #0x20] - str r0, [r7, #0x1c] - b _02210770 - arm_func_end ov4_0221075C -_022107C8: - .byte 0xF8, 0x80, 0xBD, 0xE8 - - arm_func_start ov4_022107CC -ov4_022107CC: ; 0x022107CC - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r4, [r5, #0xc] - bl ov4_02210250 -_022107DC: - mov r0, r5 - bl ov4_0220FB58 - cmp r0, #9 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r0, #4 - beq _02210804 - ldrb r0, [r4, #0x31] - cmp r0, #0 - beq _022107DC -_02210804: - ldrb r0, [r4, #0x31] - cmp r0, #0 - beq _02210838 - mov r0, r4 - bl ov4_0220EF50 - mov r0, r5 - bl ov4_022106A4 - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, r5 - bl ov4_022100F8 - b _02210888 -_02210838: - mov r0, r5 - bl ov4_022103E4 - mov r0, r4 - bl ov4_0220EEF0 - ldrb r0, [r4, #0x30] - cmp r0, #0 - beq _02210864 - ldrh r2, [r5, #0x18] - ldr r1, [r5, #0x1c] - mov r0, r4 - bl ov4_0220DB44 -_02210864: - mov r0, r4 - bl ov4_0220EF50 - mov r0, r5 - bl ov4_022100F8 - mov r0, r5 - bl ov4_022106A4 - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} -_02210888: - mov r0, #8 - strb r0, [r4, #0x455] - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov4_022107CC - - arm_func_start ov4_02210898 -ov4_02210898: ; 0x02210898 - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - ldrb r1, [r5, #8] - ldr r4, [r5, #0xc] - cmp r1, #4 - beq _022108C0 - bl ov4_0220BEA8 - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} -_022108C0: - mov r1, #0 - strb r1, [r4, #0x455] - str r1, [r4, #0x1d4] - add r0, r4, #0x2ec - strb r1, [r4, #0x454] - bl ov4_02211BF8 - add r0, r4, #0x3a4 - bl ov4_02211338 - mov r0, r5 - bl ov4_022107CC - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov4_02210898 - - arm_func_start ov4_022108EC -ov4_022108EC: ; 0x022108EC - stmfd sp!, {r4, r5, r6, lr} - mov r5, r1 - ldr r4, [r5, #0xc] - mov r6, r0 - ldr ip, [r4, #0x824] - cmp ip, #0 - beq _02210970 - ldrb r0, [r4, #0x456] - cmp r0, #0 - bne _02210970 - ldr r3, [r4, #0x82c] - ldr r1, [r4, #0x828] - mov r2, r5 - add r0, ip, r3 - sub r1, r1, r3 - bl ov4_0220F840 - cmp r0, #0 - beq _02210954 - ldr r1, _022109C0 ; =0x0221DE30 - ldr r0, [r4, #0x824] - ldr r1, [r1, #0] - blx r1 - mov r0, #0 - str r0, [r4, #0x824] - str r0, [r6, #0] - ldmia sp!, {r4, r5, r6, pc} -_02210954: - ldr r1, [r4, #0x824] - mov r0, r4 - bl ov4_0220F8D8 - ldrb r0, [r4, #0x456] - cmp r0, #0 - moveq r0, #0 - streq r0, [r4, #0x824] -_02210970: - ldr r0, [r4, #0x824] - cmp r0, #0 - bne _022109A0 -_0221097C: - mov r0, r5 - bl ov4_0220FB58 - cmp r0, #9 - moveq r0, #0 - streq r0, [r6] - ldmeqia sp!, {r4, r5, r6, pc} - ldr r0, [r4, #0x824] - cmp r0, #0 - beq _0221097C -_022109A0: - ldr r1, [r4, #0x828] - ldr r0, [r4, #0x82c] - sub r0, r1, r0 - str r0, [r6, #0] - ldr r1, [r4, #0x824] - ldr r0, [r4, #0x82c] - add r0, r1, r0 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_022109C0: .word Unk_ov4_0221DE30 - arm_func_end ov4_022108EC - - arm_func_start ov4_022109C4 -ov4_022109C4: ; 0x022109C4 - stmfd sp!, {r4, lr} - ldr r4, [r1, #0xc] - ldr r2, [r4, #0x828] - ldr r1, [r4, #0x82c] - sub r2, r2, r1 - cmp r0, r2 - blo _02210A04 - ldr r0, [r4, #0x824] - cmp r0, #0 - beq _022109F8 - ldr r1, _02210A10 ; =0x0221DE30 - ldr r1, [r1, #0] - blx r1 -_022109F8: - mov r0, #0 - str r0, [r4, #0x824] - ldmia sp!, {r4, pc} -_02210A04: - add r0, r1, r0 - str r0, [r4, #0x82c] - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02210A10: .word Unk_ov4_0221DE30 - arm_func_end ov4_022109C4 - - arm_func_start ov4_02210A14 -ov4_02210A14: ; 0x02210A14 - stmfd sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r5, r0 - ldr r4, [r5, #0xc] - ldr r0, [r4, #0x824] - cmp r0, #0 - ldr r0, [r5, #0x44] - bne _02210AB4 - cmp r0, #5 - addlo sp, sp, #4 - ldmloia sp!, {r3, r4, r5, r6, pc} - add r0, sp, #0 - mov r1, r5 - bl ov4_0220C154 - ldrb r2, [r0, #3] - ldrb r0, [r0, #4] - ldr r1, _02210B50 ; =0x00004805 - add r0, r0, r2, lsl #8 - add r0, r0, #5 - str r0, [sp] - cmp r0, r1 - movhi r0, #9 - addhi sp, sp, #4 - strhib r0, [r4, #0x455] - ldmhiia sp!, {r3, r4, r5, r6, pc} - ldr r1, _02210B54 ; =0x0221DE04 - ldr r1, [r1, #0] - blx r1 - cmp r0, #0 - str r0, [r4, #0x824] - moveq r0, #9 - addeq sp, sp, #4 - streqb r0, [r4, #0x455] - ldmeqia sp!, {r3, r4, r5, r6, pc} - ldr r1, [sp] - mov r0, #0 - str r1, [r4, #0x828] - str r0, [r4, #0x82c] - strb r0, [r4, #0x456] - b _02210AC0 -_02210AB4: - cmp r0, #0 - addeq sp, sp, #4 - ldmeqia sp!, {r3, r4, r5, r6, pc} -_02210AC0: - add r0, sp, #0 - mov r1, r5 - bl ov4_0220C154 - ldr r3, [r4, #0x828] - ldr r2, [r4, #0x82c] - ldr r1, [sp] - sub r2, r3, r2 - cmp r1, r2 - strhs r2, [sp] - movhs r6, #1 - ldr r3, [r4, #0x824] - ldr r1, [r4, #0x82c] - ldr r2, [sp] - add r1, r3, r1 - movlo r6, #0 - bl MI_CpuCopy8 - ldr r0, [sp] - mov r1, r5 - bl ov4_0220C234 - cmp r6, #0 - beq _02210B38 - ldr r1, [r4, #0x824] - mov r0, r4 - bl ov4_0220F8D8 - ldrb r0, [r4, #0x456] - add sp, sp, #4 - cmp r0, #0 - moveq r0, #0 - streq r0, [r4, #0x824] - ldmia sp!, {r3, r4, r5, r6, pc} -_02210B38: - ldr r1, [r4, #0x82c] - ldr r0, [sp] - add r0, r1, r0 - str r0, [r4, #0x82c] - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - ; .align 2, 0 -_02210B50: .word 0x00004805 -_02210B54: .word Unk_ov4_0221DE04 - arm_func_end ov4_02210A14 - - arm_func_start ov4_02210B58 -ov4_02210B58: ; 0x02210B58 - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r4, [r5, #0xc] - ldr r0, [r4, #0x824] - cmp r0, #0 - ldrneb r0, [r4, #0x456] - cmpne r0, #0 - bne _02210B80 - mov r0, r5 - bl ov4_02210A14 -_02210B80: - ldr r1, [r4, #0x824] - cmp r1, #0 - ldrneb r0, [r4, #0x456] - cmpne r0, #0 - beq _02210BA4 - ldr r1, [r4, #0x828] - ldr r0, [r4, #0x82c] - sub r0, r1, r0 - ldmia sp!, {r3, r4, r5, pc} -_02210BA4: - cmp r1, #0 - bne _02210BCC - ldrb r0, [r5, #8] - cmp r0, #4 - bne _02210BC4 - ldrb r0, [r4, #0x455] - cmp r0, #9 - bne _02210BCC -_02210BC4: - mvn r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_02210BCC: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov4_02210B58 - - arm_func_start ov4_02210BD4 -ov4_02210BD4: ; 0x02210BD4 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc - ldr r4, [sp, #0x30] - mov sb, r1 - mov r1, r4 - ldr r1, [r1, #0xc] - mov sl, r0 - mov r0, #0 - str r4, [sp, #0x30] - str r1, [sp, #8] - mov r8, r2 - add r5, sb, r3 - str r0, [sp, #4] -_02210C08: - ldr r0, _02210CFC ; =0x00000B4F - ldr r1, _02210D00 ; =0x0221DE04 - cmp r5, r0 - movgt r6, r0 - movle r6, r5 - ldr r1, [r1, #0] - add r0, r6, #0x19 - blx r1 - movs r4, r0 - beq _02210CF0 - cmp sb, r6 - movhs r7, r6 - movlo r7, sb - mov r0, sl - add r1, r4, #5 - mov r2, r7 - sub fp, r6, r7 - bl MI_CpuCopy8 - add r1, r4, #5 - mov r0, r8 - add r1, r1, r7 - mov r2, fp - add sl, sl, r7 - sub sb, sb, r7 - bl MI_CpuCopy8 - mov r0, #0x17 - strb r0, [r4] - mov r0, #3 - strb r0, [r4, #1] - mov r0, #0 - strb r0, [r4, #2] - mov r0, r6, asr #8 - strb r0, [r4, #3] - ldr r0, [sp, #8] - mov r1, r4 - add r8, r8, fp - strb r6, [r4, #4] - bl ov4_0220F63C - ldr r1, [sp, #0x30] - mov r7, r0 - mov r2, #0 - str r1, [sp] - mov r0, r4 - mov r1, r7 - mov r3, r2 - bl ov4_0220C3FC - cmp r0, r7 - ldr r1, _02210D04 ; =0x0221DE30 - mov r0, r4 - ldr r1, [r1, #0] - movlo r6, #0 - blx r1 - ldr r0, [sp, #4] - subs r5, r5, r6 - add r0, r0, r6 - str r0, [sp, #4] - cmpne r6, #0 - bne _02210C08 -_02210CF0: - ldr r0, [sp, #4] - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_02210CFC: .word 0x00000B4F -_02210D00: .word Unk_ov4_0221DE04 -_02210D04: .word Unk_ov4_0221DE30 - arm_func_end ov4_02210BD4 - - arm_func_start ov4_02210D08 -ov4_02210D08: ; 0x02210D08 - stmfd sp!, {r4, r5, r6, lr} - sub sp, sp, #0x20 - mov r5, r0 - ldr r4, [r5, #0xc] - ldrb r0, [r4, #0x455] - cmp r0, #8 - bne _02210D78 - mov ip, #0 - mov r6, #0x15 - mov lr, #3 - mov r3, #2 - mov r2, #1 - add r1, sp, #4 - mov r0, r4 - strb r6, [sp, #4] - strb lr, [sp, #5] - strb ip, [sp, #6] - strb ip, [sp, #7] - strb r3, [sp, #8] - strb r2, [sp, #9] - strb ip, [sp, #0xa] - bl ov4_0220F63C - mov r2, #0 - mov r1, r0 - add r0, sp, #4 - mov r3, r2 - str r5, [sp] - bl ov4_0220C3FC -_02210D78: - mov r0, #0 - strb r0, [r4, #0x455] - add sp, sp, #0x20 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ov4_02210D08 - - arm_func_start ov4_02210D88 -ov4_02210D88: ; 0x02210D88 - stmfd sp!, {r4, lr} - ldr r4, [r0, #0xc] - mov r0, #0 - strb r0, [r4, #0x455] - ldr r0, [r4, #0x824] - cmp r0, #0 - beq _02210DB0 - ldr r1, _02210DBC ; =0x0221DE30 - ldr r1, [r1, #0] - blx r1 -_02210DB0: - mov r0, #0 - str r0, [r4, #0x824] - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02210DBC: .word Unk_ov4_0221DE30 - arm_func_end ov4_02210D88 - - arm_func_start CPS_SetSsl -CPS_SetSsl: ; 0x02210DC0 - stmfd sp!, {r4, lr} - mov r4, r0 - ldr r0, _02210DE8 ; =0x02000C70 - bl OSi_ReferSymbol - ldr r0, _02210DEC ; =0x021CCC80 - ldr r0, [r0, #4] - ldr r0, [r0, #0xa4] - cmp r0, #0 - strneb r4, [r0, #9] - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02210DE8: .word Unk_02000C70 -_02210DEC: .word OSi_ThreadInfo - arm_func_end CPS_SetSsl - - arm_func_start ov4_02210DF0 -ov4_02210DF0: ; 0x02210DF0 - stmfd sp!, {r4, r5, r6, lr} - mov r5, r0 - bl OS_DisableInterrupts - mov r4, #0 - ldr r6, _02210EC4 ; =0x0221F628 - ldr r1, _02210EC8 ; =0x000003BD - mov r2, r4 -_02210E0C: - ldrb r3, [r6, #0x5a] - cmp r3, #0 - beq _02210E28 - ldr r3, [r6, #0x50] - sub r3, r5, r3 - cmp r3, r1 - strgtb r2, [r6, #0x5a] -_02210E28: - add r4, r4, #1 - cmp r4, #4 - add r6, r6, #0x5c - blt _02210E0C - bl OS_RestoreInterrupts - ldr r0, _02210ECC ; =0x021CCC80 - ldr r4, [r0, #8] - cmp r4, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r6, #0 -_02210E50: - ldr r1, [r4, #0xa4] - cmp r1, #0 - ldrne r0, [r1] - cmpne r0, #0 - ldrneb r0, [r1, #9] - cmpne r0, #0 - beq _02210EB4 - ldrb r0, [r1, #8] - cmp r0, #4 - bne _02210EB4 - ldr r0, [r1, #0xc] - ldrb r0, [r0, #0x455] - cmp r0, #8 - bhs _02210EB4 - ldr r0, [r1, #0x10] - sub r0, r5, r0 - cmp r0, #0xef - ble _02210EB4 - ldr r0, [r1, #4] - cmp r0, #2 - bne _02210EB4 - strb r6, [r1, #8] - str r6, [r1, #4] - ldr r0, [r1, #0] - bl OS_WakeupThreadDirect -_02210EB4: - ldr r4, [r4, #0x68] - cmp r4, #0 - bne _02210E50 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_02210EC4: .word Unk_ov4_0221F628 -_02210EC8: .word 0x000003BD -_02210ECC: .word OSi_ThreadInfo - arm_func_end ov4_02210DF0 - - arm_func_start ov4_02210ED0 -ov4_02210ED0: ; 0x02210ED0 - ldr ip, _02210EE4 ; =MI_CpuFill8 - ldr r0, _02210EE8 ; =0x0221F628 - mov r1, #0 - mov r2, #0x170 - bx ip - ; .align 2, 0 -_02210EE4: .word MI_CpuFill8 -_02210EE8: .word Unk_ov4_0221F628 - arm_func_end ov4_02210ED0 - - - .section .version, 4,1,2 - - .global Unk_02000C70 -Unk_02000C70: ; 0x02000C70 - .asciz "[SDK+UBIQUITOUS:SSL]" - - - .rodata - - - .global Unk_ov4_02215E40 -Unk_ov4_02215E40: ; 0x02215E40 - .byte 0x15, 0x3, 0x0, 0x0, 0x2, 0x1, 0x29, 0x0 - - - - .data - - - .global Unk_ov4_0221A1B4 -Unk_ov4_0221A1B4: ; 0x0221A1B4 - .incbin "incbin/ssl.bin", 0x0, 0x4 - - .global Unk_ov4_0221A1B8 -Unk_ov4_0221A1B8: ; 0x0221A1B8 - .incbin "incbin/ssl.bin", 0x4, 0x8 - 0x4 - - .global Unk_ov4_0221A1BC -Unk_ov4_0221A1BC: ; 0x0221A1BC - .incbin "incbin/ssl.bin", 0x8, 0xC - 0x8 - - .global Unk_ov4_0221A1C0 -Unk_ov4_0221A1C0: ; 0x0221A1C0 - .incbin "incbin/ssl.bin", 0xC, 0x10 - 0xC - - .global Unk_ov4_0221A1C4 -Unk_ov4_0221A1C4: ; 0x0221A1C4 - .incbin "incbin/ssl.bin", 0x10, 0x28 - 0x10 - - .global Unk_ov4_0221A1DC -Unk_ov4_0221A1DC: ; 0x0221A1DC - .incbin "incbin/ssl.bin", 0x28, 0x30 - 0x28 - - .global Unk_ov4_0221A1E4 -Unk_ov4_0221A1E4: ; 0x0221A1E4 - .incbin "incbin/ssl.bin", 0x30, 0x3C - 0x30 - - .global Unk_ov4_0221A1F0 -Unk_ov4_0221A1F0: ; 0x0221A1F0 - .incbin "incbin/ssl.bin", 0x3C, 0x48 - 0x3C - - .global Unk_ov4_0221A1FC -Unk_ov4_0221A1FC: ; 0x0221A1FC - .incbin "incbin/ssl.bin", 0x48, 0x54 - 0x48 - - .global Unk_ov4_0221A208 -Unk_ov4_0221A208: ; 0x0221A208 - .incbin "incbin/ssl.bin", 0x54, 0x58 - 0x54 - - .global Unk_ov4_0221A20C -Unk_ov4_0221A20C: ; 0x0221A20C - .incbin "incbin/ssl.bin", 0x58, 0x5C - 0x58 - - .global Unk_ov4_0221A210 -Unk_ov4_0221A210: ; 0x0221A210 - .incbin "incbin/ssl.bin", 0x5C, 0x60 - 0x5C - - .global Unk_ov4_0221A214 -Unk_ov4_0221A214: ; 0x0221A214 - .incbin "incbin/ssl.bin", 0x60, 0x68 - 0x60 - - .global Unk_ov4_0221A21C -Unk_ov4_0221A21C: ; 0x0221A21C - .incbin "incbin/ssl.bin", 0x68, 0x5 - - - - .bss - - - .global Unk_ov4_0221F620 -Unk_ov4_0221F620: ; 0x0221F620 - .space 0x4 - - .global Unk_ov4_0221F624 -Unk_ov4_0221F624: ; 0x0221F624 - .space 0x4 - - .global Unk_ov4_0221F628 -Unk_ov4_0221F628: ; 0x0221F628 - .space 0x170 - - .global Unk_ov4_0221F798 -Unk_ov4_0221F798: ; 0x0221F798 - .space 0x14 - diff --git a/subprojects/NitroWiFi/libraries/ssl/meson.build b/subprojects/NitroWiFi/libraries/ssl/meson.build deleted file mode 100644 index 47e04e30c7..0000000000 --- a/subprojects/NitroWiFi/libraries/ssl/meson.build +++ /dev/null @@ -1,17 +0,0 @@ -libssl_srcs = files( - 'asm/ssl.s', - 'asm/md5.s', - 'asm/sha1.s', - 'asm/arc4.s', - 'asm/biginteger.s' -) - -libssl = static_library('ssl', - sources: libssl_srcs, - c_args: [c_args, sdk_args], - nasm_args: asm_args, - include_directories: public_includes, - pic: false -) - -nitrowifi_libs += libssl diff --git a/subprojects/NitroWiFi/libraries/stubs/md5/meson.build b/subprojects/NitroWiFi/libraries/stubs/md5/meson.build deleted file mode 100644 index 0ac950d41e..0000000000 --- a/subprojects/NitroWiFi/libraries/stubs/md5/meson.build +++ /dev/null @@ -1,11 +0,0 @@ -libstubsmd5_srcs = files('src/dummy_md5.c') - -libstubsmd5 = static_library('stubsmd5', - sources: [libstubsmd5_srcs], - c_args: [c_args, sdk_args], - include_directories: [public_includes], - dependencies: nitrosdk_dep, - pic: false -) - -nitrowifi_libs += libstubsmd5 diff --git a/subprojects/NitroWiFi/libraries/stubs/md5/src/dummy_md5.c b/subprojects/NitroWiFi/libraries/stubs/md5/src/dummy_md5.c deleted file mode 100644 index ed8fc31778..0000000000 --- a/subprojects/NitroWiFi/libraries/stubs/md5/src/dummy_md5.c +++ /dev/null @@ -1,13 +0,0 @@ -#include - -void MD5Init (MD5_CTX * context) { - MATH_MD5Init((MATHMD5Context *)context); -} - -void MD5Update (MD5_CTX * context, unsigned char * buf, unsigned int len) { - MATH_MD5Update((MATHMD5Context *)context, (const void *)buf, len); -} - -void MD5Final (unsigned char digest[16], MD5_CTX * context) { - MATH_MD5GetHash((MATHMD5Context *)context, (void *)digest); -} diff --git a/subprojects/NitroWiFi/libraries/stubs/meson.build b/subprojects/NitroWiFi/libraries/stubs/meson.build deleted file mode 100644 index f222c6d7a9..0000000000 --- a/subprojects/NitroWiFi/libraries/stubs/meson.build +++ /dev/null @@ -1 +0,0 @@ -subdir('md5') diff --git a/subprojects/NitroWiFi/libraries/wcm/meson.build b/subprojects/NitroWiFi/libraries/wcm/meson.build deleted file mode 100644 index d950de0737..0000000000 --- a/subprojects/NitroWiFi/libraries/wcm/meson.build +++ /dev/null @@ -1,19 +0,0 @@ -libwcm_srcs = files( - 'src/system.c', - 'src/aplist.c', - 'src/cpsif.c', - 'src/util_wcm.c' -) - -libwcm_internal_includes = include_directories('src/include') - -libwcm = static_library('wcm', - sources: [libwcm_srcs], - c_args: [c_args, sdk_args], - include_directories: [public_includes, libwcm_internal_includes], - c_pch: nitro_pch, - dependencies: nitrosdk_dep, - pic: false -) - -nitrowifi_libs += libwcm diff --git a/subprojects/NitroWiFi/libraries/wcm/src/aplist.c b/subprojects/NitroWiFi/libraries/wcm/src/aplist.c deleted file mode 100644 index d4fdc61a5a..0000000000 --- a/subprojects/NitroWiFi/libraries/wcm/src/aplist.c +++ /dev/null @@ -1,356 +0,0 @@ -#include "include/wcm_private.h" - -#if WCM_DEBUG -static const char aplistWarningText_NotInit[] = {"WCM library is not initialized yet.\n"}; -static const char aplistWarningText_NoIndexData[] = {"Could not found AP information that have index %d."}; -#endif - -static WCMApList * WcmAllocApList(void); -static void WcmFreeApList(WCMApList * aplist); -static WCMApList * WcmGetOldestApList(void); -static WCMApList * WcmGetLastApList(void); -static WCMApList * WcmSearchApList(u8 * bssid); -static WCMApList * WcmSearchIndexedApList(u32 index); -static void WcmAppendApList(WCMApList * aplist); - -void WCM_ClearApList (void) { - OSIntrMode e = OS_DisableInterrupts(); - WCMWork * w = WCMi_GetSystemWork(); - - if (w == NULL) { - WCMi_Warning(aplistWarningText_NotInit); - (void)OS_RestoreInterrupts(e); - return; - } - - if ((w->config.pbdbuffer != NULL) && (w->config.nbdbuffer > 0)) { - MI_CpuClear8(w->config.pbdbuffer, (u32)(w->config.nbdbuffer)); - } - - (void)OS_RestoreInterrupts(e); -} - -s32 WCM_CountApList (void) { - OSIntrMode e = OS_DisableInterrupts(); - WCMWork * w = WCMi_GetSystemWork(); - s32 count = 0; - WCMApListHeader * pHeader; - - if (w == NULL) { - WCMi_Warning(aplistWarningText_NotInit); - (void)OS_RestoreInterrupts(e); - return 0; - } - - pHeader = (WCMApListHeader *)(w->config.pbdbuffer); - if ((pHeader != NULL) && (w->config.nbdbuffer > sizeof(WCMApListHeader))) { - count = (s32)(pHeader->count); - } - - (void)OS_RestoreInterrupts(e); - return count; -} - -s32 WCM_LockApList (s32 lock) { - OSIntrMode e = OS_DisableInterrupts(); - WCMWork * w = WCMi_GetSystemWork(); - - if (w == NULL) { - WCMi_Warning(aplistWarningText_NotInit); - (void)OS_RestoreInterrupts(e); - return 0; - } - - if (lock != WCM_APLIST_UNLOCK) { - lock = (w->apListLock ? WCM_APLIST_LOCK : WCM_APLIST_UNLOCK); - w->apListLock = WCM_APLIST_LOCK; - } else { - lock = (w->apListLock ? WCM_APLIST_LOCK : WCM_APLIST_UNLOCK); - w->apListLock = WCM_APLIST_UNLOCK; - } - - (void)OS_RestoreInterrupts(e); - return lock; -} - -WMBssDesc * WCM_PointApList (s32 index) { - OSIntrMode e = OS_DisableInterrupts(); - WCMWork * w = WCMi_GetSystemWork(); - WMBssDesc * bd = NULL; - WCMApList * p; - - if (w == NULL) { - WCMi_Warning(aplistWarningText_NotInit); - (void)OS_RestoreInterrupts(e); - return NULL; - } - - p = WcmSearchIndexedApList((u32)index); - - if (p == NULL) { - WCMi_Warning(aplistWarningText_NoIndexData, index); - (void)OS_RestoreInterrupts(e); - return NULL; - } - - bd = (WMBssDesc *)(p->data); - (void)OS_RestoreInterrupts(e); - return bd; -} - -WMLinkLevel WCM_PointApListLinkLevel (s32 index) { - OSIntrMode e = OS_DisableInterrupts(); - WCMWork * w = WCMi_GetSystemWork(); - WMLinkLevel ll = WM_LINK_LEVEL_0; - WCMApList * p; - - if (w == NULL) { - WCMi_Warning(aplistWarningText_NotInit); - (void)OS_RestoreInterrupts(e); - return WM_LINK_LEVEL_0; - } - - p = WcmSearchIndexedApList((u32)index); - - if (p == NULL) { - WCMi_Warning(aplistWarningText_NoIndexData, index); - (void)OS_RestoreInterrupts(e); - return WM_LINK_LEVEL_0; - } - - ll = (WMLinkLevel)(p->linkLevel); - (void)OS_RestoreInterrupts(e); - return ll; -} - -void WCMi_EntryApList (WMBssDesc * bssDesc, u16 linkLevel) { - WCMWork * w = WCMi_GetSystemWork(); - WCMApList * aplist; - - if (w == NULL) { - return; - } - - if (w->apListLock != WCM_APLIST_UNLOCK) { - return; - } - - if (bssDesc->gameInfoLength != 0) { - return; - } - - { - aplist = WcmSearchApList(bssDesc->bssid); - - if (aplist == NULL) { - aplist = WcmAllocApList(); - } - - if ((aplist == NULL) && (w->config.nbdmode == WCM_APLIST_MODE_EXCHANGE)) { - aplist = WcmGetOldestApList(); - } - } - - if (aplist != NULL) { - aplist->linkLevel = linkLevel; - - MI_CpuCopyFast(bssDesc, aplist->data, WCM_APLIST_SIZE); - - WcmAppendApList(aplist); - } -} - -static WCMApList * WcmAllocApList (void) { - WCMWork * w = WCMi_GetSystemWork(); - WCMApListHeader * pHeader = (WCMApListHeader *)(w->config.pbdbuffer); - WCMApList * p = NULL; - - if ((pHeader != NULL) && (w->config.nbdbuffer > sizeof(WCMApListHeader))) { - u32 maxBlock = (w->config.nbdbuffer - sizeof(WCMApListHeader)) / sizeof(WCMApList); - - if (maxBlock > 0) { - s32 i; - - if (maxBlock > pHeader->count) { - for (i = 0; i < maxBlock; i++) { - p = (WCMApList *)((u32)pHeader + sizeof(WCMApListHeader) + (i * sizeof(WCMApList))); - if (p->state == WCM_APLIST_BLOCK_EMPTY) { - break; - } - } - - if (i < maxBlock) { - p->state = WCM_APLIST_BLOCK_OCCUPY; - p->index = pHeader->count; - - p->next = NULL; - p->previous = pHeader->tail; - pHeader->tail = p; - if (p->previous) { - ((WCMApList *)(p->previous))->next = p; - } else { - pHeader->head = p; - } - - pHeader->count++; - } - } - } - } - - return p; -} - -static void WcmFreeApList (WCMApList * aplist) { - WCMWork * w = WCMi_GetSystemWork(); - WCMApListHeader * pHeader = (WCMApListHeader *)(w->config.pbdbuffer); - WCMApList * p; - - if (aplist == NULL) { - return; - } - - if ((pHeader != NULL) && (w->config.nbdbuffer > sizeof(WCMApListHeader))) { - p = pHeader->head; - while (p) { - if (p == aplist) { - if (aplist->previous) { - ((WCMApList *)(aplist->previous))->next = aplist->next; - } else { - pHeader->head = aplist->next; - } - - if (aplist->next) { - ((WCMApList *)(aplist->next))->previous = aplist->previous; - } else { - pHeader->tail = aplist->previous; - } - - if (pHeader->count > 0) { - u32 index = aplist->index; - - aplist = WcmSearchIndexedApList((u32)(pHeader->count - 1)); - if (aplist != NULL) { - aplist->index = index; - } - - pHeader->count--; - } - - MI_CpuClear8(aplist, sizeof(WCMApList)); - } - - p = p->next; - } - } -} - -static WCMApList * WcmGetOldestApList (void) { - WCMWork * w = WCMi_GetSystemWork(); - WCMApListHeader * pHeader = (WCMApListHeader *)(w->config.pbdbuffer); - - if ((pHeader != NULL) && (w->config.nbdbuffer > sizeof(WCMApListHeader))) { - return pHeader->head; - } - - return NULL; -} - -static WCMApList * WcmGetLastApList (void) { - WCMWork * w = WCMi_GetSystemWork(); - WCMApListHeader * pHeader = (WCMApListHeader *)(w->config.pbdbuffer); - - if ((pHeader != NULL) && (w->config.nbdbuffer > sizeof(WCMApListHeader))) { - return pHeader->tail; - } - - return NULL; -} - -static WCMApList * WcmSearchApList (u8 * bssid) { - WCMWork * w = WCMi_GetSystemWork(); - WCMApListHeader * pHeader = (WCMApListHeader *)(w->config.pbdbuffer); - WCMApList * p = NULL; - - if (bssid == NULL) { - return NULL; - } - - if ((pHeader != NULL) && (w->config.nbdbuffer > sizeof(WCMApListHeader))) { - p = pHeader->head; - while (p) { - if (WCM_CompareBssID(((WMBssDesc *)(p->data))->bssid, bssid)) { - break; - } - - p = p->next; - } - } - - return p; -} - -static WCMApList * WcmSearchIndexedApList (u32 index) { - WCMWork * w = WCMi_GetSystemWork(); - WCMApListHeader * pHeader = (WCMApListHeader *)(w->config.pbdbuffer); - WCMApList * p = NULL; - - if ((pHeader != NULL) && (w->config.nbdbuffer > sizeof(WCMApListHeader))) { - p = pHeader->head; - while (p) { - if (p->index == index) { - break; - } - - p = p->next; - } - } - - return p; -} - -static void WcmAppendApList (WCMApList * aplist) { - WCMWork * w = WCMi_GetSystemWork(); - WCMApListHeader * pHeader = (WCMApListHeader *)(w->config.pbdbuffer); - WCMApList * p = NULL; - - if (aplist == NULL) { - return; - } - - if ((pHeader != NULL) && (w->config.nbdbuffer > sizeof(WCMApListHeader))) { - p = pHeader->head; - while (p) { - if (p == aplist) { - if (p->previous) { - ((WCMApList *)(p->previous))->next = p->next; - } else { - pHeader->head = p->next; - } - - if (p->next) { - ((WCMApList *)(p->next))->previous = p->previous; - } else { - pHeader->tail = p->previous; - } - break; - } - - p = p->next; - } - - aplist->next = NULL; - aplist->previous = pHeader->tail; - pHeader->tail = aplist; - if (aplist->previous) { - ((WCMApList *)(aplist->previous))->next = aplist; - } else { - pHeader->head = aplist; - } - - if (p == NULL) { - aplist->index = pHeader->count; - pHeader->count++; - } - } -} diff --git a/subprojects/NitroWiFi/libraries/wcm/src/cpsif.c b/subprojects/NitroWiFi/libraries/wcm/src/cpsif.c deleted file mode 100644 index 908e06f4ab..0000000000 --- a/subprojects/NitroWiFi/libraries/wcm/src/cpsif.c +++ /dev/null @@ -1,375 +0,0 @@ -#include "wcm_private.h" -#include "wcm_cpsif.h" - -#if WCM_DEBUG -static const char cpsifWarningText_NotInit[] = {"WCM library is not initialized yet.\n"}; -static const char cpsifWarningText_IllegalParam[] = {"Illegal parameter ( %s )\n"}; -static const char cpsifWarningText_InIrqMode[] = {"Processor mode is IRQ mode now.\n"}; - -static const char cpsifReportText_WmSyncError[] = {"%s failed syncronously. ( ERRCODE: 0x%02x )\n"}; -static const char cpsifReportText_WmAsyncError[] = {"%s failed asyncronously. ( ERRCODE: 0x%02x )\n"}; -#endif - -#define WCMCPSIF_DUMMY_IRQ_THREAD ((OSThread *)OS_IrqHandler) - -typedef struct WCMCpsifWork { - u8 initialized; - u8 reserved[3]; - OSThreadQueue sendQ; - OSMutex sendMutex; - WMErrCode sendResult; - WCMRecvInd recvCallback; -} WCMCpsifWork; - -static WCMCpsifWork wcmCpsifw; - -static void WcmCpsifWmCallback(void * arg); -static void WcmCpsifKACallback(void * arg); -static BOOL WcmCpsifTryLockMutexInIRQ(OSMutex * mutex); -static void WcmCpsifUnlockMutexInIRQ(OSMutex * mutex); - -void WCMi_InitCpsif (void) { - if (wcmCpsifw.initialized == 0) { - wcmCpsifw.initialized = 1; - wcmCpsifw.sendResult = WM_ERRCODE_SUCCESS; - - OS_InitThreadQueue(&(wcmCpsifw.sendQ)); - OS_InitMutex(&(wcmCpsifw.sendMutex)); - } -} - -void WCMi_CpsifRecvCallback (WMDcfRecvBuf * recv) { - if (wcmCpsifw.recvCallback != NULL) { - wcmCpsifw.recvCallback((u8 *)(recv->srcAdrs), (u8 *)(recv->destAdrs), (u8 *)(recv->data), (s32)(recv->length)); - } -} - -void WCMi_CpsifSendNullPacket (void) { - volatile WCMWork * w = WCMi_GetSystemWork(); - - if (w == NULL) { - return; - } - - if ((w->phase != WCM_PHASE_DCF) || (w->resetting == WCM_RESETTING_ON)) { - return; - } - - if (FALSE == WcmCpsifTryLockMutexInIRQ(&(wcmCpsifw.sendMutex))) { - return; - } - - if (WM_ERRCODE_OPERATING != WM_SetDCFData( - WcmCpsifKACallback, (const u8 *)w->bssDesc.bssid, (const u16 *)(w->sendBuf), - 0 - )) { - WcmCpsifUnlockMutexInIRQ(&(wcmCpsifw.sendMutex)); - } -} - -u8 * WCM_GetApMacAddress (void) { - u8 * mac = NULL; - WCMWork * w = WCMi_GetSystemWork(); - OSIntrMode e = OS_DisableInterrupts(); - - if (w != NULL) { - if ((w->phase == WCM_PHASE_DCF) && (w->resetting == WCM_RESETTING_OFF)) { - mac = w->bssDesc.bssid; - } - } - - (void)OS_RestoreInterrupts(e); - return mac; -} - -u8 * WCM_GetApEssid (u16 * length) { - u8 * essid = NULL; - u16 len = 0; - WCMWork * w = WCMi_GetSystemWork(); - OSIntrMode e = OS_DisableInterrupts(); - - if (w != NULL) { - if ((w->phase == WCM_PHASE_DCF) && (w->resetting == WCM_RESETTING_OFF)) { - essid = &(w->bssDesc.ssid[0]); - len = w->bssDesc.ssidLength; - } - } - - (void)OS_RestoreInterrupts(e); - if (length != NULL) { - *length = len; - } - - return essid; -} - -void WCM_SetRecvDCFCallback (WCMRecvInd callback) { - OSIntrMode e = OS_DisableInterrupts(); - - wcmCpsifw.recvCallback = callback; - - (void)OS_RestoreInterrupts(e); -} - -s32 WCM_SendDCFData (const u8 * dstAddr, const u8 * buf, s32 len) { - OSIntrMode e = OS_DisableInterrupts(); - volatile WCMWork * w = WCMi_GetSystemWork(); - - if (w == NULL) { - WCMi_Warning(cpsifWarningText_NotInit); - (void)OS_RestoreInterrupts(e); - return WCM_CPSIF_RESULT_BEFORE_INIT; - } - -#if WCM_DEBUG - - if ((dstAddr == NULL) || (buf == NULL)) { - WCMi_Warning(cpsifWarningText_IllegalParam, "dstAddr or buf"); - (void)OS_RestoreInterrupts(e); - return WCM_CPSIF_RESULT_ILLEGAL_PARAM; - } - - if (len <= 0) { - WCMi_Warning(cpsifWarningText_IllegalParam, "len"); - (void)OS_RestoreInterrupts(e); - return WCM_CPSIF_RESULT_ILLEGAL_PARAM; - } - - if (len > WCM_ROUNDUP32(WM_DCF_MAX_SIZE)) { - WCMi_Warning(cpsifWarningText_IllegalParam, "len"); - (void)OS_RestoreInterrupts(e); - return WCM_CPSIF_RESULT_ILLEGAL_PARAM; - } - - if ((u32)buf & 0x01) { - WCMi_Warning(cpsifWarningText_IllegalParam, "buf"); - (void)OS_RestoreInterrupts(e); - return WCM_CPSIF_RESULT_ILLEGAL_PARAM; - } - - if (OS_GetProcMode() == HW_PSR_IRQ_MODE) { - WCMi_Warning(cpsifWarningText_InIrqMode); - (void)OS_RestoreInterrupts(e); - return WCM_CPSIF_RESULT_IN_IRQ_MODE; - } -#endif - - OS_LockMutex(&(wcmCpsifw.sendMutex)); - - w = WCMi_GetSystemWork(); - if (w == NULL) { - OS_UnlockMutex(&(wcmCpsifw.sendMutex)); - (void)OS_RestoreInterrupts(e); - return WCM_CPSIF_RESULT_BEFORE_INIT; - } - - if ((w->phase != WCM_PHASE_DCF) || (w->resetting == WCM_RESETTING_ON)) { - OS_UnlockMutex(&(wcmCpsifw.sendMutex)); - (void)OS_RestoreInterrupts(e); - return WCM_CPSIF_RESULT_NO_CONNECTION; - } - - MI_CpuCopy8(buf, (void *)(w->sendBuf), (u32)len); - - { - WMErrCode wmResult; - - wmResult = WM_SetDCFData(WcmCpsifWmCallback, (const u8 *)dstAddr, (const u16 *)(w->sendBuf), (u16)len); - switch (wmResult) { - case WM_ERRCODE_OPERATING: - break; - - case WM_ERRCODE_ILLEGAL_STATE: - case WM_ERRCODE_INVALID_PARAM: - case WM_ERRCODE_FIFO_ERROR: - default: - - WCMi_Printf(cpsifReportText_WmSyncError, "WM_SetDCFData", wmResult); - OS_UnlockMutex(&(wcmCpsifw.sendMutex)); - (void)OS_RestoreInterrupts(e); - return WCM_CPSIF_RESULT_SEND_FAILURE; - } - } - - OS_SleepThread(&(wcmCpsifw.sendQ)); - - switch (wcmCpsifw.sendResult) { - case WM_ERRCODE_SUCCESS: - break; - - case WM_ERRCODE_FAILED: - default: - - WCMi_Printf(cpsifReportText_WmAsyncError, "WCM_SendDCFData", wcmCpsifw.sendResult); - OS_UnlockMutex(&(wcmCpsifw.sendMutex)); - (void)OS_RestoreInterrupts(e); - return WCM_CPSIF_RESULT_SEND_FAILURE; - } - - OS_UnlockMutex(&(wcmCpsifw.sendMutex)); - (void)OS_RestoreInterrupts(e); - return len; -} - -s32 WCM_SendDCFDataEx (const u8 * dstAddr, const u8 * header, s32 headerLen, const u8 * body, s32 bodyLen) { - OSIntrMode e = OS_DisableInterrupts(); - volatile WCMWork * w = WCMi_GetSystemWork(); - - if (w == NULL) { - WCMi_Warning(cpsifWarningText_NotInit); - (void)OS_RestoreInterrupts(e); - return WCM_CPSIF_RESULT_BEFORE_INIT; - } - -#if WCM_DEBUG - - if ((dstAddr == NULL) || (header == NULL)) { - WCMi_Warning(cpsifWarningText_IllegalParam, "dstAddr or header"); - (void)OS_RestoreInterrupts(e); - return WCM_CPSIF_RESULT_ILLEGAL_PARAM; - } - - if (headerLen <= 0 || (body != NULL && bodyLen < 0) || (body == NULL && bodyLen != 0)) { - WCMi_Warning(cpsifWarningText_IllegalParam, "headerLen or bodyLen"); - (void)OS_RestoreInterrupts(e); - return WCM_CPSIF_RESULT_ILLEGAL_PARAM; - } - - if (headerLen + bodyLen > WCM_ROUNDUP32(WM_DCF_MAX_SIZE)) { - WCMi_Warning(cpsifWarningText_IllegalParam, "headerLen + bodyLen"); - (void)OS_RestoreInterrupts(e); - return WCM_CPSIF_RESULT_ILLEGAL_PARAM; - } - - if ((u32)header & 0x01 || ((body != NULL) && ((u32)body & 0x01))) { - WCMi_Warning(cpsifWarningText_IllegalParam, "header or body"); - (void)OS_RestoreInterrupts(e); - return WCM_CPSIF_RESULT_ILLEGAL_PARAM; - } - - if (OS_GetProcMode() == HW_PSR_IRQ_MODE) { - WCMi_Warning(cpsifWarningText_InIrqMode); - (void)OS_RestoreInterrupts(e); - return WCM_CPSIF_RESULT_IN_IRQ_MODE; - } -#endif - - OS_LockMutex(&(wcmCpsifw.sendMutex)); - - w = WCMi_GetSystemWork(); - if (w == NULL) { - OS_UnlockMutex(&(wcmCpsifw.sendMutex)); - (void)OS_RestoreInterrupts(e); - return WCM_CPSIF_RESULT_BEFORE_INIT; - } - - if ((w->phase != WCM_PHASE_DCF) || (w->resetting == WCM_RESETTING_ON)) { - OS_UnlockMutex(&(wcmCpsifw.sendMutex)); - (void)OS_RestoreInterrupts(e); - return WCM_CPSIF_RESULT_NO_CONNECTION; - } - - MI_CpuCopy8(header, (void *)(w->sendBuf), (u32)headerLen); - if (bodyLen > 0) { - MI_CpuCopy8(body, (void *)(((u8 *)w->sendBuf) + headerLen), (u32)bodyLen); - } - - { - WMErrCode wmResult; - - wmResult = WM_SetDCFData(WcmCpsifWmCallback, (const u8 *)dstAddr, (const u16 *)(w->sendBuf), (u16)(headerLen + bodyLen)); - switch (wmResult) { - case WM_ERRCODE_OPERATING: - break; - - case WM_ERRCODE_ILLEGAL_STATE: - case WM_ERRCODE_INVALID_PARAM: - case WM_ERRCODE_FIFO_ERROR: - default: - - WCMi_Printf(cpsifReportText_WmSyncError, "WM_SetDCFData", wmResult); - OS_UnlockMutex(&(wcmCpsifw.sendMutex)); - (void)OS_RestoreInterrupts(e); - return WCM_CPSIF_RESULT_SEND_FAILURE; - } - } - - OS_SleepThread(&(wcmCpsifw.sendQ)); - - switch (wcmCpsifw.sendResult) { - case WM_ERRCODE_SUCCESS: - break; - - case WM_ERRCODE_FAILED: - default: - - WCMi_Printf(cpsifReportText_WmAsyncError, "WCM_SendDCFData", wcmCpsifw.sendResult); - OS_UnlockMutex(&(wcmCpsifw.sendMutex)); - (void)OS_RestoreInterrupts(e); - return WCM_CPSIF_RESULT_SEND_FAILURE; - } - - OS_UnlockMutex(&(wcmCpsifw.sendMutex)); - (void)OS_RestoreInterrupts(e); - return headerLen + bodyLen; -} - -static void WcmCpsifWmCallback (void * arg) { - WMCallback * cb = (WMCallback *)arg; - - switch (cb->apiid) { - case WM_APIID_SET_DCF_DATA: - wcmCpsifw.sendResult = (WMErrCode)(cb->errcode); - if (cb->errcode == WM_ERRCODE_SUCCESS) { - WCMi_ResetKeepAliveAlarm(); - } - - OS_WakeupThread(&(wcmCpsifw.sendQ)); - break; - } -} - -static void WcmCpsifKACallback (void * arg) { -#if WCM_DEBUG - if (((WMCallback *)arg)->errcode == WM_ERRCODE_SUCCESS) { - WCMi_Printf("Send NULL packet for KeepAlive.\n"); - } - -#else -#pragma unused(arg) -#endif - - WcmCpsifUnlockMutexInIRQ(&(wcmCpsifw.sendMutex)); -} - -static BOOL WcmCpsifTryLockMutexInIRQ (OSMutex * mutex) { -#if WCM_DEBUG - if ((mutex == NULL) || (OS_GetProcMode() != HW_PSR_IRQ_MODE)) { - return FALSE; - } -#endif - if (mutex->thread == NULL) { - mutex->thread = WCMCPSIF_DUMMY_IRQ_THREAD; - mutex->count++; - return TRUE; - } else if (mutex->thread == WCMCPSIF_DUMMY_IRQ_THREAD) { - mutex->count++; - return TRUE; - } - - return FALSE; -} - -static void WcmCpsifUnlockMutexInIRQ (OSMutex * mutex) { -#if WCM_DEBUG - if ((mutex == NULL) || (OS_GetProcMode() != HW_PSR_IRQ_MODE)) { - return; - } -#endif - if (mutex->thread == WCMCPSIF_DUMMY_IRQ_THREAD) { - if (--(mutex->count) == 0) { - mutex->thread = NULL; - OS_WakeupThread(&(mutex->queue)); - } - } -} diff --git a/subprojects/NitroWiFi/libraries/wcm/src/include/wcm_cpsif.h b/subprojects/NitroWiFi/libraries/wcm/src/include/wcm_cpsif.h deleted file mode 100644 index f98108812f..0000000000 --- a/subprojects/NitroWiFi/libraries/wcm/src/include/wcm_cpsif.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef NITROWIFI_WCM_CPSIF_H_ -#define NITROWIFI_WCM_CPSIF_H_ - -#ifdef __cplusplus - -extern "C" { -#endif - -#include - -#define WCM_CPSIF_RESULT_BEFORE_INIT (-1) -#define WCM_CPSIF_RESULT_ILLEGAL_PARAM (-2) -#define WCM_CPSIF_RESULT_IN_IRQ_MODE (-3) -#define WCM_CPSIF_RESULT_NO_CONNECTION (-4) -#define WCM_CPSIF_RESULT_SEND_FAILURE (-5) - -typedef void (* WCMRecvInd) (const u8 * srcAddr, const u8 * dstAddr, const u8 * buf, s32 len); - -void WCM_SetRecvDCFCallback(WCMRecvInd callback); -u8 * WCM_GetApMacAddress(void); -u8 * WCM_GetApEssid(u16 * length); -s32 WCM_SendDCFData(const u8 * dstAddr, const u8 * buf, s32 len); -s32 WCM_SendDCFDataEx(const u8 * dstAddr, const u8 * header, s32 headerLen, const u8 * body, s32 bodyLen); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroWiFi/libraries/wcm/src/include/wcm_private.h b/subprojects/NitroWiFi/libraries/wcm/src/include/wcm_private.h deleted file mode 100644 index 082645266b..0000000000 --- a/subprojects/NitroWiFi/libraries/wcm/src/include/wcm_private.h +++ /dev/null @@ -1,95 +0,0 @@ -#ifndef NITROWIFI_WCM_PRIVATE_H_ -#define NITROWIFI_WCM_PRIVATE_H_ - -#ifdef __cplusplus - -extern "C" { -#endif - -#include -#include - -#define WCM_RESETTING_OFF 0 -#define WCM_RESETTING_ON 1 - -#define WCM_APLIST_BLOCK_EMPTY 0 -#define WCM_APLIST_BLOCK_OCCUPY 1 - -#define WCM_KEEP_ALIVE_SPAN ((OSTick)70) - -#ifdef SDK_FINALROM -#define WCM_DEBUG 0 -#else -#define WCM_DEBUG 1 -#endif - -#define WCM_CONNECT_STATUSCODE_ILLEGAL_RATESET 18 - -#if WCM_DEBUG -#define WCMi_Printf OS_TPrintf("[WCM] %s(%d) Report: ", __FILE__, __LINE__); \ - OS_TPrintf -#define WCMi_Warning OS_TPrintf("[WCM] %s(%d) Warning: ", __FILE__, __LINE__); \ - OS_TPrintf -#else -#define WCMi_Printf(...) ((void)0) -#define WCMi_Warning(...) ((void)0) -#endif - -typedef struct WCMWork { - u8 wmWork[WCM_ROUNDUP32(WM_SYSTEM_BUF_SIZE)]; - u8 sendBuf[WCM_DCF_SEND_BUF_SIZE]; - u8 recvBuf[WCM_DCF_RECV_BUF_SIZE * 2]; - WMBssDesc bssDesc; - struct { - u8 key[WM_SIZE_WEPKEY]; - u8 mode; - u8 keyId; - u8 reserved[WCM_ROUNDUP32(WM_SIZE_WEPKEY + 2) - (WM_SIZE_WEPKEY + 2)]; - } wepDesc; - u32 phase; - u32 option; - u16 maxScanTime; - u8 apListLock; - u8 resetting; - WCMConfig config; - WCMNotify notify; - s16 notifyId; - u16 authId; - u32 scanCount; - WMScanExParam scanExParam; - OSAlarm keepAliveAlarm; - u16 wlStatusOnConnectFail; - u8 reserved[6]; -} WCMWork; - -typedef struct WCMApList { - u8 state; - u8 reserved; - u16 linkLevel; - u32 index; - void * previous; - void * next; - u32 data[WCM_ROUNDUP4(WCM_APLIST_SIZE) / sizeof(u32)]; -} WCMApList; - -typedef struct WCMApListHeader { - u32 count; - WCMApList * head; - WCMApList * tail; -} WCMApListHeader; - -WCMWork * WCMi_GetSystemWork(void); - -void WCMi_EntryApList(WMBssDesc * bssDesc, u16 linkLevel); -void WCMi_InitCpsif(void); -void WCMi_CpsifRecvCallback(WMDcfRecvBuf * recv); -void WCMi_CpsifSendNullPacket(void); -void WCMi_ResetKeepAliveAlarm(void); -void WCMi_ShelterRssi(u8 rssi); -u8 WCMi_GetRssiAverage(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/NitroWiFi/libraries/wcm/src/system.c b/subprojects/NitroWiFi/libraries/wcm/src/system.c deleted file mode 100644 index 6f653c04bd..0000000000 --- a/subprojects/NitroWiFi/libraries/wcm/src/system.c +++ /dev/null @@ -1,1555 +0,0 @@ -#include "wcm_private.h" -#include "wcm_cpsif.h" - -const u8 WCM_Essid_Any[WCM_ESSID_SIZE] = { - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff -}; - -const u8 WCM_Bssid_Any[WCM_BSSID_SIZE] = { - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff -}; - -#if WCM_DEBUG -static const char wcmWarningText_AlreadyInit[] = {"WCM library is already initialized.\n"}; -static const char wcmWarningText_IllegalParam[] = {"Illegal parameter ( %s )\n"}; -static const char wcmWarningText_NotInit[] = {"WCM library is not initialized yet.\n"}; -static const char wcmWarningText_IllegalPhase[] = {"Could not accept request now. ( PHASE: %d )\n"}; -static const char wcmWarningText_InvalidWmState[] = {"Invalid state of WM library. Don't use WM or WVR library while using WCM library.\n"}; -static const char wcmWarningText_UnsuitableArm7[] = {"Unsuitable ARM7 component. Could not drive wireless module.\n"}; -static const char wcmWarningText_WirelessForbidden[] = {"Forbidden to use wireless module."}; - -static const char wcmReportText_WmSyncError[] = {"%s failed syncronously. ( ERRCODE: 0x%02x )\n"}; -static const char wcmReportText_WmAsyncError[] = {"%s failed asyncronously. ( ERRCODE: 0x%02x - 0x%04x - 0x%04x )\n"}; -static const char wcmReportText_WmDisconnected[] = {"%s succeeded asyncronously , but already disconnected from AP.\n"}; -static const char wcmReportText_InvalidAid[] = {"%s succeeded asyncronously , but given Auth-ID is invalid.\n"}; -static const char wcmReportText_SupportRateset[] = {"Failed association to \"%s\" because of illegal support rate set.\n So retry with camouflage 5.5M and 11M automatically.\n"}; -#endif - -static WCMWork * wcmw = NULL; - -static void WcmConfigure(WCMConfig * config, WCMNotify notify); -static void WcmEditScanExParam(void * bssid, void * essid, u32 option); -static void WcmInitOption(void); -static u16 WcmGetNextScanChannel(u16 channel); -static void WcmNotify(s16 result, void * para0, void * para1, s32 para2); -static void WcmNotifyEx(s16 notify, s16 result, void * para0, void * para1, s32 para2); -static void WcmSetPhase(u32 phase); -static void WcmKeepAliveAlarm(void * arg); -static u32 WcmCountBits(u32 arg); -static u32 WcmCountLeadingZero(u32 arg); - -static void WcmWmReset(void); - -static void WcmWmcbIndication(void * arg); -static void WcmWmcbCommon(void * arg); -static void WcmWmcbScanEx(void * arg); -static void WcmWmcbEndScan(void * arg); -static void WcmWmcbConnect(void * arg); -static void WcmWmcbDisconnect(void * arg); -static void WcmWmcbStartDCF(void * arg); -static void WcmWmcbEndDCF(void * arg); -static void WcmWmcbReset(void * arg); - -#ifndef SDK_ASSERT_ON_COMPILE -#define SDK_ASSERT_ON_COMPILE(expr) extern assert_on_compile ## #__LINE__(char a[(expr) ? 1 : -1]) -#endif - -s32 WCM_Init (void * buf, s32 len) { - OSIntrMode e = OS_DisableInterrupts(); - - SDK_ASSERT_ON_COMPILE(sizeof(WCMWork) <= WCM_WORK_SIZE); - - if (wcmw != NULL) { - WCMi_Warning(wcmWarningText_AlreadyInit); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_FAILURE; - } - - if (buf == NULL) { - WCMi_Warning(wcmWarningText_IllegalParam, "buf"); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_FAILURE; - } - - if ((u32)buf & 0x01f) { - WCMi_Warning(wcmWarningText_IllegalParam, "buf"); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_FAILURE; - } - - if (len < sizeof(WCMWork)) { - WCMi_Warning(wcmWarningText_IllegalParam, "len"); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_NOT_ENOUGH_MEM; - } - - wcmw = (WCMWork *)buf; - wcmw->phase = WCM_PHASE_WAIT; - wcmw->notifyId = WCM_NOTIFY_COMMON; - wcmw->maxScanTime = 0; - wcmw->apListLock = WCM_APLIST_UNLOCK; - wcmw->resetting = WCM_RESETTING_OFF; - wcmw->authId = 0; - wcmw->wlStatusOnConnectFail = 0x0000; - WcmInitOption(); - WCMi_InitCpsif(); - - if (!OS_IsTickAvailable()) { - OS_InitTick(); - } - - if (!OS_IsAlarmAvailable()) { - OS_InitAlarm(); - } - - OS_CreateAlarm(&(wcmw->keepAliveAlarm)); - - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_SUCCESS; -} - -s32 WCM_Finish (void) { - OSIntrMode e = OS_DisableInterrupts(); - - if (wcmw == NULL) { - WCMi_Warning(wcmWarningText_NotInit); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_FAILURE; - } - - if (wcmw->phase != WCM_PHASE_WAIT) { - WCMi_Warning(wcmWarningText_IllegalPhase, wcmw->phase); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_FAILURE; - } - - wcmw = NULL; - - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_SUCCESS; -} - -s32 WCM_StartupAsync (WCMConfig * config, WCMNotify notify) { - OSIntrMode e = OS_DisableInterrupts(); - - if (wcmw == NULL) { - WCMi_Warning(wcmWarningText_NotInit); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_FAILURE; - } - - switch (wcmw->phase) { - case WCM_PHASE_WAIT: - WcmConfigure(config, notify); - break; - - case WCM_PHASE_WAIT_TO_IDLE: - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_PROGRESS; - - case WCM_PHASE_IDLE: - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_SUCCESS; - - default: - WCMi_Warning(wcmWarningText_IllegalPhase, wcmw->phase); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_FAILURE; - } - - { - WMErrCode wmResult; - - wmResult = WM_Init(wcmw->wmWork, (u16)wcmw->config.dmano); - switch (wmResult) { - case WM_ERRCODE_SUCCESS: - break; - - case WM_ERRCODE_ILLEGAL_STATE: - WCMi_Warning(wcmWarningText_InvalidWmState); - WcmSetPhase(WCM_PHASE_FATAL_ERROR); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_FATAL_ERROR; - - case WM_ERRCODE_WM_DISABLE: - WCMi_Warning(wcmWarningText_UnsuitableArm7); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_WMDISABLE; - - case WM_ERRCODE_INVALID_PARAM: - default: - WcmSetPhase(WCM_PHASE_FATAL_ERROR); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_FATAL_ERROR; - } - - if (0 == WM_GetAllowedChannel()) { - if (WM_ERRCODE_SUCCESS != WM_Finish()) { - WcmSetPhase(WCM_PHASE_FATAL_ERROR); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_FATAL_ERROR; - } - - WCMi_Warning(wcmWarningText_WirelessForbidden); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_WMDISABLE; - } - - wmResult = WM_SetIndCallback(WcmWmcbIndication); - if (wmResult != WM_ERRCODE_SUCCESS) { - WcmSetPhase(WCM_PHASE_FATAL_ERROR); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_FATAL_ERROR; - } - - wmResult = WM_Enable(WcmWmcbCommon); - switch (wmResult) { - case WM_ERRCODE_OPERATING: - WcmSetPhase(WCM_PHASE_WAIT_TO_IDLE); - wcmw->notifyId = WCM_NOTIFY_STARTUP; - break; - - case WM_ERRCODE_FIFO_ERROR: - WCMi_Printf(wcmReportText_WmSyncError, "WM_Enable", wmResult); - WcmSetPhase(WCM_PHASE_IRREGULAR); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_FAILURE; - - case WM_ERRCODE_ILLEGAL_STATE: - WCMi_Warning(wcmWarningText_InvalidWmState); - - default: - WcmSetPhase(WCM_PHASE_FATAL_ERROR); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_FATAL_ERROR; - } - } - - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_ACCEPT; -} - -s32 WCM_CleanupAsync (void) { - OSIntrMode e = OS_DisableInterrupts(); - - if (wcmw == NULL) { - WCMi_Warning(wcmWarningText_NotInit); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_FAILURE; - } - - switch (wcmw->phase) { - case WCM_PHASE_IDLE: - break; - - case WCM_PHASE_IDLE_TO_WAIT: - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_PROGRESS; - - case WCM_PHASE_WAIT: - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_SUCCESS; - - default: - WCMi_Warning(wcmWarningText_IllegalPhase, wcmw->phase); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_FAILURE; - } - - { - WMErrCode wmResult; - - wmResult = WM_PowerOff(WcmWmcbCommon); - switch (wmResult) { - case WM_ERRCODE_OPERATING: - WcmSetPhase(WCM_PHASE_IDLE_TO_WAIT); - wcmw->notifyId = WCM_NOTIFY_CLEANUP; - break; - - case WM_ERRCODE_FIFO_ERROR: - WCMi_Printf(wcmReportText_WmSyncError, "WM_PowerOff", wmResult); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_REJECT; - - case WM_ERRCODE_ILLEGAL_STATE: - WCMi_Warning(wcmWarningText_InvalidWmState); - - default: - WcmSetPhase(WCM_PHASE_FATAL_ERROR); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_FATAL_ERROR; - } - } - - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_ACCEPT; -} - -s32 WCM_SearchAsync (void * bssid, void * essid, u32 option) { - if ((bssid == NULL) || (essid == NULL)) { - return WCM_EndSearchAsync(); - } - - return WCM_BeginSearchAsync(bssid, essid, option); -} - -s32 WCM_BeginSearchAsync (void * bssid, void * essid, u32 option) { - OSIntrMode e = OS_DisableInterrupts(); - - if (wcmw == NULL) { - WCMi_Warning(wcmWarningText_NotInit); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_FAILURE; - } - - { - WMErrCode wmResult; - - switch (wcmw->phase) { - case WCM_PHASE_IDLE: - break; - - case WCM_PHASE_IDLE_TO_SEARCH: - WcmEditScanExParam(bssid, essid, option); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_PROGRESS; - - case WCM_PHASE_SEARCH: - WcmEditScanExParam(bssid, essid, option); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_SUCCESS; - - default: - WCMi_Warning(wcmWarningText_IllegalPhase, wcmw->phase); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_FAILURE; - } - - WcmEditScanExParam(bssid, essid, option); - DC_InvalidateRange(wcmw->scanExParam.scanBuf, wcmw->scanExParam.scanBufSize); - wcmw->scanCount++; - wmResult = WM_StartScanEx(WcmWmcbScanEx, &(wcmw->scanExParam)); - switch (wmResult) { - case WM_ERRCODE_OPERATING: - WcmSetPhase(WCM_PHASE_IDLE_TO_SEARCH); - wcmw->notifyId = WCM_NOTIFY_BEGIN_SEARCH; - break; - - case WM_ERRCODE_FIFO_ERROR: - WCMi_Printf(wcmReportText_WmSyncError, "WM_StartScanEx", wmResult); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_REJECT; - - case WM_ERRCODE_ILLEGAL_STATE: - WCMi_Warning(wcmWarningText_InvalidWmState); - - default: - WcmSetPhase(WCM_PHASE_FATAL_ERROR); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_FATAL_ERROR; - } - } - - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_ACCEPT; -} - -s32 WCM_EndSearchAsync (void) { - OSIntrMode e = OS_DisableInterrupts(); - - if (wcmw == NULL) { - WCMi_Warning(wcmWarningText_NotInit); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_FAILURE; - } - - switch (wcmw->phase) { - case WCM_PHASE_SEARCH: - WcmSetPhase(WCM_PHASE_SEARCH_TO_IDLE); - wcmw->notifyId = WCM_NOTIFY_END_SEARCH; - break; - - case WCM_PHASE_SEARCH_TO_IDLE: - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_PROGRESS; - - case WCM_PHASE_IDLE: - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_SUCCESS; - - default: - WCMi_Warning(wcmWarningText_IllegalPhase, wcmw->phase); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_FAILURE; - } - - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_ACCEPT; -} - -s32 WCM_ConnectAsync (void * bssDesc, void * wepDesc, u32 option) { - OSIntrMode e = OS_DisableInterrupts(); - - if (wcmw == NULL) { - WCMi_Warning(wcmWarningText_NotInit); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_FAILURE; - } - - switch (wcmw->phase) { - case WCM_PHASE_IDLE: - - if (bssDesc == NULL) { - WCMi_Warning(wcmWarningText_IllegalParam, "bssDesc"); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_FAILURE; - } - - if (((WMBssDesc *)bssDesc)->gameInfoLength > 0) { - WCMi_Warning(wcmWarningText_IllegalParam, "bssDesc"); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_FAILURE; - } - - if (wepDesc != NULL) { - if ((((WCMWepDesc *)wepDesc)->mode >= 4) || (((WCMWepDesc *)wepDesc)->keyId >= 4)) { - WCMi_Warning(wcmWarningText_IllegalParam, "wepDesc"); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_FAILURE; - } - - wcmw->wepDesc.mode = ((WCMWepDesc *)wepDesc)->mode; - wcmw->wepDesc.keyId = ((WCMWepDesc *)wepDesc)->keyId; - if (wcmw->wepDesc.mode == WCM_WEPMODE_NONE) { - MI_CpuClear8(wcmw->wepDesc.key, WM_SIZE_WEPKEY); - } else { - MI_CpuCopy8(((WCMWepDesc *)wepDesc)->key, wcmw->wepDesc.key, WM_SIZE_WEPKEY); - } - } else { - MI_CpuClear8(&(wcmw->wepDesc), sizeof(WCMWepDesc)); - } - - MI_CpuCopy8(bssDesc, &(wcmw->bssDesc), sizeof(WMBssDesc)); -#if 0 - - { - int i; - u8 * pDump = (u8 *)(&(wcmw->bssDesc)); - - for (i = 0; i < 192; i++) { - if (i % 16) { - OS_TPrintf(" "); - } - - OS_TPrintf("%02X", pDump[i]); - if ((i % 16) == 15) { - OS_TPrintf("\n"); - } - } - } -#endif - - wcmw->bssDesc.rateSet.support = (u16)(WCM_ADDITIONAL_RATESET | wcmw->bssDesc.rateSet.basic); - (void)WCM_UpdateOption(option); - break; - - case WCM_PHASE_IDLE_TO_DCF: - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_PROGRESS; - - case WCM_PHASE_DCF: - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_SUCCESS; - - default: - WCMi_Warning(wcmWarningText_IllegalPhase, wcmw->phase); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_FAILURE; - } - - { - WMErrCode wmResult; - - wmResult = WM_SetLifeTime(WcmWmcbCommon, 0xffff, WCM_CAM_LIFETIME, 0xffff, 0xffff); - switch (wmResult) { - case WM_ERRCODE_OPERATING: - WcmSetPhase(WCM_PHASE_IDLE_TO_DCF); - wcmw->notifyId = WCM_NOTIFY_CONNECT; - break; - - case WM_ERRCODE_FIFO_ERROR: - WCMi_Printf(wcmReportText_WmSyncError, "WM_SetLifeTime", wmResult); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_REJECT; - - case WM_ERRCODE_ILLEGAL_STATE: - WCMi_Warning(wcmWarningText_InvalidWmState); - - default: - WcmSetPhase(WCM_PHASE_FATAL_ERROR); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_FATAL_ERROR; - } - } - - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_ACCEPT; -} - -s32 WCM_DisconnectAsync (void) { - OSIntrMode e = OS_DisableInterrupts(); - - if (wcmw == NULL) { - WCMi_Warning(wcmWarningText_NotInit); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_FAILURE; - } - - switch (wcmw->phase) { - case WCM_PHASE_DCF: - break; - - case WCM_PHASE_DCF_TO_IDLE: - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_PROGRESS; - - case WCM_PHASE_IDLE: - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_SUCCESS; - - default: - WCMi_Warning(wcmWarningText_IllegalPhase, wcmw->phase); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_FAILURE; - } - - if (wcmw->resetting == WCM_RESETTING_ON) { - WcmSetPhase(WCM_PHASE_DCF_TO_IDLE); - wcmw->notifyId = WCM_NOTIFY_DISCONNECT; - } else { - WMErrCode wmResult; - - wmResult = WM_EndDCF(WcmWmcbEndDCF); - switch (wmResult) { - case WM_ERRCODE_OPERATING: - WcmSetPhase(WCM_PHASE_DCF_TO_IDLE); - wcmw->notifyId = WCM_NOTIFY_DISCONNECT; - break; - - case WM_ERRCODE_FIFO_ERROR: - WCMi_Printf(wcmReportText_WmSyncError, "WM_EndDCF", wmResult); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_REJECT; - - case WM_ERRCODE_ILLEGAL_STATE: - WCMi_Warning(wcmWarningText_InvalidWmState); - - default: - WcmSetPhase(WCM_PHASE_FATAL_ERROR); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_FATAL_ERROR; - } - } - - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_ACCEPT; -} - -s32 WCM_TerminateAsync (void) { - OSIntrMode e = OS_DisableInterrupts(); - - if (wcmw == NULL) { - WCMi_Warning(wcmWarningText_NotInit); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_FAILURE; - } - - switch (wcmw->phase) { - case WCM_PHASE_IDLE: - case WCM_PHASE_DCF: - case WCM_PHASE_IRREGULAR: - break; - - case WCM_PHASE_TERMINATING: - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_PROGRESS; - - case WCM_PHASE_WAIT: - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_SUCCESS; - - case WCM_PHASE_SEARCH: - WcmSetPhase(WCM_PHASE_TERMINATING); - wcmw->notifyId = WCM_NOTIFY_TERMINATE; - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_ACCEPT; - - case WCM_PHASE_WAIT_TO_IDLE: - case WCM_PHASE_IDLE_TO_WAIT: - case WCM_PHASE_IDLE_TO_SEARCH: - case WCM_PHASE_SEARCH_TO_IDLE: - case WCM_PHASE_IDLE_TO_DCF: - case WCM_PHASE_DCF_TO_IDLE: - case WCM_PHASE_FATAL_ERROR: - default: - WCMi_Warning(wcmWarningText_IllegalPhase, wcmw->phase); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_FAILURE; - } - - if (wcmw->resetting == WCM_RESETTING_ON) { - WcmSetPhase(WCM_PHASE_TERMINATING); - wcmw->notifyId = WCM_NOTIFY_TERMINATE; - } else { - WMStatus * ws; - u16 wmState; - WMErrCode wmResult; - - ws = (WMStatus *)WMi_GetStatusAddress(); - DC_InvalidateRange(ws, 2); - wmState = ws->state; - - switch (wmState) { - case WM_STATE_READY: - - wmResult = WM_Finish(); - if (wmResult == WM_ERRCODE_SUCCESS) { - WcmSetPhase(WCM_PHASE_WAIT); - wcmw->notifyId = WCM_NOTIFY_COMMON; - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_SUCCESS; - } - break; - - case WM_STATE_STOP: - - wmResult = WM_Disable(WcmWmcbCommon); - break; - - case WM_STATE_IDLE: - - wmResult = WM_PowerOff(WcmWmcbCommon); - break; - - default: - - wcmw->resetting = WCM_RESETTING_ON; - - wmResult = WM_Reset(WcmWmcbReset); - } - - switch (wmResult) { - case WM_ERRCODE_OPERATING: - WcmSetPhase(WCM_PHASE_TERMINATING); - wcmw->notifyId = WCM_NOTIFY_TERMINATE; - break; - - case WM_ERRCODE_FIFO_ERROR: - WCMi_Printf(wcmReportText_WmSyncError, "WM_***", wmResult); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_REJECT; - - case WM_ERRCODE_ILLEGAL_STATE: - WCMi_Warning(wcmWarningText_InvalidWmState); - - default: - WcmSetPhase(WCM_PHASE_FATAL_ERROR); - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_FATAL_ERROR; - } - } - - (void)OS_RestoreInterrupts(e); - return WCM_RESULT_ACCEPT; -} - -s32 WCM_GetPhase (void) { - OSIntrMode e = OS_DisableInterrupts(); - s32 phase = WCM_PHASE_NULL; - - if (wcmw != NULL) { - phase = (s32)(wcmw->phase); - } - - (void)OS_RestoreInterrupts(e); - return phase; -} - -u32 WCM_UpdateOption (u32 option) { - OSIntrMode e = OS_DisableInterrupts(); - u32 filter = 0; - u32 old_option = wcmw->option; - - if (wcmw == NULL) { - (void)OS_RestoreInterrupts(e); - return 0; - } - - if (option & WCM_OPTION_TEST_CHANNEL) { - filter |= WCM_OPTION_FILTER_CHANNEL; - if (!(option & WCM_OPTION_FILTER_CHANNEL)) { - option |= WCM_OPTION_CHANNEL_RDC; - } - } - - if (option & WCM_OPTION_TEST_POWER) { - filter |= WCM_OPTION_FILTER_POWER; - } - - if (option & WCM_OPTION_TEST_AUTH) { - filter |= WCM_OPTION_FILTER_AUTH; - } - - if (option & WCM_OPTION_TEST_SCANTYPE) { - filter |= WCM_OPTION_FILTER_SCANTYPE; - } - - if (option & WCM_OPTION_TEST_ROUNDSCAN) { - filter |= WCM_OPTION_FILTER_ROUNDSCAN; - } - - wcmw->option = (u32)((old_option & ~filter) | option); - - (void)OS_RestoreInterrupts(e); - return old_option; -} - -void WCM_SetChannelScanTime (u16 msec) { - if (wcmw != NULL) { - if ((msec >= 10) && (msec <= 1000)) { - wcmw->maxScanTime = msec; - } else { - wcmw->maxScanTime = 0; - } - } -} - -WCMWork * WCMi_GetSystemWork (void) { - return wcmw; -} - -static void WcmConfigure (WCMConfig * config, WCMNotify notify) { - if (config == NULL) { - wcmw->config.dmano = 3; - wcmw->config.pbdbuffer = NULL; - wcmw->config.nbdbuffer = 0; - wcmw->config.nbdmode = 0; - } else { - if (config->dmano & ~(0x03)) { - WCMi_Warning(wcmWarningText_IllegalParam, "config->dmano"); - } - - wcmw->config.dmano = (config->dmano & 0x03); - - if ((((4 - ((u32)(config->pbdbuffer) & 0x03)) % 4) + sizeof(WCMApListHeader)) > config->nbdbuffer) { - wcmw->config.pbdbuffer = NULL; - wcmw->config.nbdbuffer = 0; - } else { - wcmw->config.pbdbuffer = (void *)WCM_ROUNDUP4((u32)(config->pbdbuffer)); - wcmw->config.nbdbuffer = config->nbdbuffer - (s32)((4 - ((u32)(config->pbdbuffer) & 0x03)) % 4); - MI_CpuClear8(wcmw->config.pbdbuffer, (u32)(wcmw->config.nbdbuffer)); - } - - wcmw->config.nbdmode = config->nbdmode; - } - - wcmw->notify = notify; -} - -static void WcmEditScanExParam (void * bssid, void * essid, u32 option) { - (void)WCM_UpdateOption(option); - wcmw->scanExParam.scanBuf = (WMBssDesc *)wcmw->recvBuf; - wcmw->scanExParam.scanBufSize = WM_SIZE_SCAN_EX_BUF; - wcmw->scanExParam.channelList = (u16)((0x0001 << WcmGetNextScanChannel(0)) >> 1); - wcmw->scanExParam.maxChannelTime = ((wcmw->maxScanTime != 0) ? wcmw->maxScanTime : WM_GetDispersionScanPeriod()); - wcmw->scanExParam.scanType = (u16)(((wcmw->option & WCM_OPTION_MASK_SCANTYPE) == WCM_OPTION_SCANTYPE_ACTIVE) ? WM_SCANTYPE_ACTIVE : WM_SCANTYPE_PASSIVE); - if (bssid == NULL) { - MI_CpuCopy8(WCM_Bssid_Any, wcmw->scanExParam.bssid, WCM_BSSID_SIZE); - } else { - MI_CpuCopy8(bssid, wcmw->scanExParam.bssid, WCM_BSSID_SIZE); - } - - if ((essid == NULL) || (essid == (void *)WCM_Essid_Any)) { - MI_CpuCopy8(WCM_Essid_Any, wcmw->scanExParam.ssid, WCM_ESSID_SIZE); - wcmw->scanExParam.ssidLength = 0; - } else { - s32 len; - - MI_CpuCopy8(essid, wcmw->scanExParam.ssid, WCM_ESSID_SIZE); - for (len = 0; len < WCM_ESSID_SIZE; len++) { - if (((u8 *)essid)[len] == '\0') { - break; - } - } - - wcmw->scanExParam.ssidLength = (u16)len; - } - - wcmw->scanCount = 0; -} - -static void WcmInitOption (void) { - wcmw->option = WCM_OPTION_CHANNEL_RDC | - WCM_OPTION_POWER_SAVE | - WCM_OPTION_AUTH_OPENSYSTEM | - WCM_OPTION_SCANTYPE_PASSIVE | - WCM_OPTION_ROUNDSCAN_IGNORE; -} - -static u16 WcmGetNextScanChannel (u16 channel) { - s32 i; - - for (i = 0; i < 13; i++) { - if (wcmw->option & (0x0001 << (((channel + i) % 13) + 1))) { - break; - } - } - - return (u16)(((channel + i) % 13) + 1); -} - -static void WcmNotify (s16 result, void * para0, void * para1, s32 para2) { - s16 notifyId = wcmw->notifyId; - - wcmw->notifyId = WCM_NOTIFY_COMMON; - WcmNotifyEx(notifyId, result, para0, para1, para2); -} - -static void WcmNotifyEx (s16 notify, s16 result, void * para0, void * para1, s32 para2) { - if (wcmw->notify) { - WCMNotice notice; - - notice.notify = notify; - notice.result = result; - notice.parameter[0].p = para0; - notice.parameter[1].p = para1; - notice.parameter[2].n = para2; - wcmw->notify(¬ice); - } -} - -static void WcmSetPhase (u32 phase) { - OSIntrMode e = OS_DisableInterrupts(); - - if ((wcmw->phase == WCM_PHASE_DCF) && (phase != WCM_PHASE_DCF)) { - OS_CancelAlarm(&(wcmw->keepAliveAlarm)); - } - - if (wcmw->phase != WCM_PHASE_FATAL_ERROR) { - wcmw->phase = phase; - } - - if (phase == WCM_PHASE_DCF) { - OS_SetAlarm(&(wcmw->keepAliveAlarm), OS_SecondsToTicks(WCM_KEEP_ALIVE_SPAN), WcmKeepAliveAlarm, NULL); - } - (void)OS_RestoreInterrupts(e); -} - -void WCMi_ResetKeepAliveAlarm (void) { - OSIntrMode e = OS_DisableInterrupts(); - - OS_CancelAlarm(&(wcmw->keepAliveAlarm)); - if (wcmw->phase == WCM_PHASE_DCF) { - OS_SetAlarm(&(wcmw->keepAliveAlarm), OS_SecondsToTicks(WCM_KEEP_ALIVE_SPAN), WcmKeepAliveAlarm, NULL); - } - (void)OS_RestoreInterrupts(e); -} - -static void WcmKeepAliveAlarm (void * arg) { -#pragma unused(arg) - - WCMi_CpsifSendNullPacket(); - WCMi_ResetKeepAliveAlarm(); -} - -#include - -static asm u32 WcmCountBits (u32 arg) { - mov r1, r0 - mov r0, #0 - mov r3, #1 - @loop: - clz r2, r1 - rsbs r2, r2, #31 - bcc @bxcc1 - b @bxcc2 - @bxcc1: - bx lr - @bxcc2: - bic r1, r1, r3, LSL r2 - add r0, r0, #1 - b @loop -} - -static asm u32 WcmCountLeadingZero (u32 arg) { - clz r0, r0 - bx lr -} -#include - -static void WcmWmReset (void) { - WMErrCode wmResult; - - if (wcmw->resetting == WCM_RESETTING_OFF) { - wcmw->resetting = WCM_RESETTING_ON; - - wmResult = WM_Reset(WcmWmcbReset); - if (wmResult != WM_ERRCODE_OPERATING) { - WCMi_Printf(wcmReportText_WmSyncError, "WM_Reset", wmResult); - WcmSetPhase(WCM_PHASE_FATAL_ERROR); - WcmNotify(WCM_RESULT_FATAL_ERROR, 0, 0, 1552); - } - } -} - -static void WcmWmcbIndication (void * arg) { - WMIndCallback * cb = (WMIndCallback *)arg; - - if (cb->errcode == WM_ERRCODE_FIFO_ERROR) { - if ((cb->state == WM_STATECODE_FIFO_ERROR) && (cb->reason == WM_APIID_AUTO_DISCONNECT)) { - switch (wcmw->phase) { - case WCM_PHASE_IDLE_TO_DCF: - WcmSetPhase(WCM_PHASE_IRREGULAR); - break; - - case WCM_PHASE_DCF: - case WCM_PHASE_IRREGULAR: - WcmWmReset(); - break; - - case WCM_PHASE_DCF_TO_IDLE: - WcmSetPhase(WCM_PHASE_IRREGULAR); - break; - } - } - } -} - -static void WcmWmcbCommon (void * arg) { - WMCallback * cb = (WMCallback *)arg; - WMErrCode wmResult = WM_ERRCODE_MAX; - - switch (cb->errcode) { - case WM_ERRCODE_SUCCESS: - - switch (cb->apiid) { - case WM_APIID_ENABLE: - - wmResult = WM_PowerOn(WcmWmcbCommon); - break; - - case WM_APIID_DISABLE: - - wmResult = WM_Finish(); - switch (wmResult) { - case WM_ERRCODE_SUCCESS: - WcmSetPhase(WCM_PHASE_WAIT); - WcmNotify(WCM_RESULT_SUCCESS, 0, 0, 1635); - break; - - case WM_ERRCODE_WM_DISABLE: - WCMi_Warning(wcmWarningText_InvalidWmState); - - default: - WcmSetPhase(WCM_PHASE_FATAL_ERROR); - WcmNotify(WCM_RESULT_FATAL_ERROR, 0, 0, 1644); - } - - return; - - case WM_APIID_POWER_ON: - WcmSetPhase(WCM_PHASE_IDLE); - WcmNotify(WCM_RESULT_SUCCESS, 0, 0, 1651); - return; - - case WM_APIID_POWER_OFF: - - wmResult = WM_Disable(WcmWmcbCommon); - break; - - case WM_APIID_SET_LIFETIME: - - wmResult = WM_SetBeaconIndication(WcmWmcbCommon, 0); - break; - - case WM_APIID_SET_BEACON_IND: - - wmResult = WM_SetWEPKeyEx( - WcmWmcbCommon, (u16)(wcmw->wepDesc.mode), (u16)(wcmw->wepDesc.keyId), - (const u8 *)(wcmw->wepDesc.key) - ); - break; - - case WM_APIID_SET_WEPKEY_EX: - - wmResult = WM_StartConnectEx( - WcmWmcbConnect, &(wcmw->bssDesc), NULL, - ((wcmw->option & WCM_OPTION_MASK_POWER) == WCM_OPTION_POWER_ACTIVE ? FALSE : TRUE), - ((wcmw->option & WCM_OPTION_MASK_AUTH) == WCM_OPTION_AUTH_SHAREDKEY ? (u16)WM_AUTHMODE_SHARED_KEY : - (u16)WM_AUTHMODE_OPEN_SYSTEM) - ); - break; - } - - switch (wmResult) { - case WM_ERRCODE_OPERATING: - break; - - case WM_ERRCODE_FIFO_ERROR: -#if WCM_DEBUG - switch (cb->apiid) { - case WM_APIID_ENABLE: - WCMi_Printf(wcmReportText_WmSyncError, "WM_PowerOn", wmResult); - break; - - case WM_APIID_POWER_OFF: - WCMi_Printf(wcmReportText_WmSyncError, "WM_Disable", wmResult); - break; - - case WM_APIID_SET_LIFETIME: - WCMi_Printf(wcmReportText_WmSyncError, "WM_SetBeaconIndication", wmResult); - break; - - case WM_APIID_SET_BEACON_IND: - WCMi_Printf(wcmReportText_WmSyncError, "WM_SetWEPKeyEx", wmResult); - break; - - case WM_APIID_SET_WEPKEY_EX: - WCMi_Printf(wcmReportText_WmSyncError, "WM_StartConnectEx", wmResult); - break; - } -#endif - WcmSetPhase(WCM_PHASE_IRREGULAR); - WcmNotify(WCM_RESULT_FAILURE, (wcmw->notifyId == WCM_NOTIFY_CONNECT ? &(wcmw->bssDesc) : 0), 0, 1711); - break; - - case WM_ERRCODE_ILLEGAL_STATE: - WCMi_Warning(wcmWarningText_InvalidWmState); - - default: - WcmSetPhase(WCM_PHASE_FATAL_ERROR); - WcmNotify(WCM_RESULT_FATAL_ERROR, (wcmw->notifyId == WCM_NOTIFY_CONNECT ? &(wcmw->bssDesc) : 0), 0, 1720); - } - break; - - case WM_ERRCODE_FAILED: -#if WCM_DEBUG - switch (cb->apiid) { - case WM_APIID_ENABLE: - WCMi_Printf(wcmReportText_WmAsyncError, "WM_Enable", cb->errcode, cb->wlCmdID, cb->wlResult); - break; - - case WM_APIID_DISABLE: - WCMi_Printf(wcmReportText_WmAsyncError, "WM_Disable", cb->errcode, cb->wlCmdID, cb->wlResult); - break; - - case WM_APIID_POWER_ON: - WCMi_Printf(wcmReportText_WmAsyncError, "WM_PowerOn", cb->errcode, cb->wlCmdID, cb->wlResult); - break; - - case WM_APIID_POWER_OFF: - WCMi_Printf(wcmReportText_WmAsyncError, "WM_PowerOff", cb->errcode, cb->wlCmdID, cb->wlResult); - break; - - case WM_APIID_SET_LIFETIME: - WCMi_Printf(wcmReportText_WmAsyncError, "WM_SetLifeTime", cb->errcode, cb->wlCmdID, cb->wlResult); - break; - - case WM_APIID_SET_BEACON_IND: - WCMi_Printf(wcmReportText_WmAsyncError, "WM_SetBeaconIndication", cb->errcode, cb->wlCmdID, cb->wlResult); - break; - - case WM_APIID_SET_WEPKEY_EX: - WCMi_Printf(wcmReportText_WmAsyncError, "WM_SetWEPKeyEx", cb->errcode, cb->wlCmdID, cb->wlResult); - break; - } -#endif - WcmSetPhase(WCM_PHASE_IRREGULAR); - WcmNotify(WCM_RESULT_FAILURE, (wcmw->notifyId == WCM_NOTIFY_CONNECT ? &(wcmw->bssDesc) : 0), 0, 1758); - break; - - case WM_ERRCODE_ILLEGAL_STATE: - case WM_ERRCODE_WM_DISABLE: - WCMi_Warning(wcmWarningText_InvalidWmState); - - default: - WcmSetPhase(WCM_PHASE_FATAL_ERROR); - WcmNotify(WCM_RESULT_FATAL_ERROR, (wcmw->notifyId == WCM_NOTIFY_CONNECT ? &(wcmw->bssDesc) : 0), 0, 1768); - } -} - -static void WcmWmcbScanEx (void * arg) { - WMStartScanExCallback * cb = (WMStartScanExCallback *)arg; - WMErrCode wmResult = WM_ERRCODE_MAX; - - switch (cb->errcode) { - case WM_ERRCODE_SUCCESS: - - if (wcmw->phase == WCM_PHASE_IDLE_TO_SEARCH) { - WcmSetPhase(WCM_PHASE_SEARCH); - - WcmNotify(WCM_RESULT_SUCCESS, 0, 0, 1796); - } - - switch (wcmw->phase) { - case WCM_PHASE_SEARCH: - wcmw->notifyId = WCM_NOTIFY_FOUND_AP; - if (cb->state == WM_STATECODE_PARENT_FOUND) { - s32 i; - - DC_InvalidateRange(wcmw->scanExParam.scanBuf, wcmw->scanExParam.scanBufSize); - for (i = 0; i < cb->bssDescCount; i++) { - WCMi_EntryApList(cb->bssDesc[i], cb->linkLevel[i]); - - WcmNotifyEx(WCM_NOTIFY_FOUND_AP, WCM_RESULT_SUCCESS, cb->bssDesc[i], (void *)cb, 1818); - } - } - - if ((wcmw->option & WCM_OPTION_MASK_ROUNDSCAN) == WCM_OPTION_ROUNDSCAN_NOTIFY) { - u32 channels = WcmCountBits(wcmw->option & WCM_OPTION_FILTER_CHANNEL); - - if (channels > 0) { - if ((wcmw->scanCount % channels) == 0) { - WcmNotifyEx(WCM_NOTIFY_SEARCH_AROUND, WCM_RESULT_SUCCESS, (void *)(wcmw->scanCount), 0, 1832); - } - } - } - - wcmw->scanExParam.channelList = (u16)((0x0001 << WcmGetNextScanChannel((u16)(32 - WcmCountLeadingZero(cb->channelList)))) >> 1); - DC_InvalidateRange(wcmw->scanExParam.scanBuf, wcmw->scanExParam.scanBufSize); - wcmw->scanCount++; - wmResult = WM_StartScanEx(WcmWmcbScanEx, &(wcmw->scanExParam)); - break; - - case WCM_PHASE_SEARCH_TO_IDLE: - - wmResult = WM_EndScan(WcmWmcbEndScan); - break; - - case WCM_PHASE_TERMINATING: - - WcmWmReset(); - return; - } - - switch (wmResult) { - case WM_ERRCODE_OPERATING: - break; - - case WM_ERRCODE_FIFO_ERROR: -#if WCM_DEBUG - switch (wcmw->phase) { - case WCM_PHASE_SEARCH: - WCMi_Printf(wcmReportText_WmSyncError, "WM_StartScanEx", wmResult); - break; - - case WCM_PHASE_SEARCH_TO_IDLE: - WCMi_Printf(wcmReportText_WmSyncError, "WM_EndScan", wmResult); - break; - } -#endif - WcmSetPhase(WCM_PHASE_IRREGULAR); - WcmNotify(WCM_RESULT_FAILURE, 0, 0, 1875); - break; - - case WM_ERRCODE_ILLEGAL_STATE: - WCMi_Warning(wcmWarningText_InvalidWmState); - - default: - WcmSetPhase(WCM_PHASE_FATAL_ERROR); - WcmNotify(WCM_RESULT_FATAL_ERROR, 0, 0, 1884); - } - break; - - case WM_ERRCODE_FAILED: - - WCMi_Printf(wcmReportText_WmAsyncError, "WM_StartScanEx", cb->errcode, cb->wlCmdID, cb->wlResult); - WcmWmReset(); - break; - - case WM_ERRCODE_ILLEGAL_STATE: - case WM_ERRCODE_WM_DISABLE: - WCMi_Warning(wcmWarningText_InvalidWmState); - - default: - WcmSetPhase(WCM_PHASE_FATAL_ERROR); - WcmNotify(WCM_RESULT_FATAL_ERROR, 0, 0, 1901); - } -} - -static void WcmWmcbEndScan (void * arg) { - WMCallback * cb = (WMCallback *)arg; - - switch (cb->errcode) { - case WM_ERRCODE_SUCCESS: - WcmSetPhase(WCM_PHASE_IDLE); - WcmNotify(WCM_RESULT_SUCCESS, 0, 0, 1923); - break; - - case WM_ERRCODE_FAILED: - - WCMi_Printf(wcmReportText_WmAsyncError, "WM_EndScan", cb->errcode, cb->wlCmdID, cb->wlResult); - WcmWmReset(); - break; - - case WM_ERRCODE_ILLEGAL_STATE: - case WM_ERRCODE_WM_DISABLE: - WCMi_Warning(wcmWarningText_InvalidWmState); - - default: - WcmSetPhase(WCM_PHASE_FATAL_ERROR); - WcmNotify(WCM_RESULT_FATAL_ERROR, 0, 0, 1939); - } -} - -static void WcmWmcbConnect (void * arg) { - WMStartConnectCallback * cb = (WMStartConnectCallback *)arg; - WMErrCode wmResult = WM_ERRCODE_MAX; - - switch (cb->errcode) { - case WM_ERRCODE_SUCCESS: - switch (cb->state) { - case WM_STATECODE_DISCONNECTED: - case WM_STATECODE_BEACON_LOST: - switch (wcmw->phase) { - case WCM_PHASE_DCF_TO_IDLE: - - wcmw->authId = 0; - - case WCM_PHASE_IDLE_TO_DCF: - WcmSetPhase(WCM_PHASE_IRREGULAR); - break; - - case WCM_PHASE_DCF: - - wcmw->authId = 0; - - wcmw->notifyId = WCM_NOTIFY_DISCONNECT; - - case WCM_PHASE_IRREGULAR: - WcmWmReset(); - break; - } - break; - -#if SDK_VERSION_MAJOR > 3 || (SDK_VERSION_MAJOR == 3 && SDK_VERSION_MINOR > 0) || \ - (SDK_VERSION_MAJOR == 3 && SDK_VERSION_MINOR == 0 && SDK_VERSION_RELSTEP >= 20100) - - case WM_STATECODE_DISCONNECTED_FROM_MYSELF: - break; -#endif - - case WM_STATECODE_CONNECT_START: - break; - - case WM_STATECODE_CONNECTED: - if (wcmw->phase == WCM_PHASE_IRREGULAR) { - WCMi_Printf(wcmReportText_WmDisconnected, "WM_StartConnectEx"); - WcmSetPhase(WCM_PHASE_IDLE_TO_DCF); - WcmWmReset(); - } else { - if ((WCM_AID_MIN <= cb->aid) && (cb->aid <= WCM_AID_MAX)) { - wcmw->authId = cb->aid; - - wmResult = WM_StartDCF(WcmWmcbStartDCF, (WMDcfRecvBuf *)(wcmw->recvBuf), WCM_DCF_RECV_BUF_SIZE); - switch (wmResult) { - case WM_ERRCODE_OPERATING: - break; - - case WM_ERRCODE_FIFO_ERROR: - WCMi_Printf(wcmReportText_WmSyncError, "WM_StartDCF", wmResult); - WcmSetPhase(WCM_PHASE_IRREGULAR); - WcmNotify(WCM_RESULT_FAILURE, &(wcmw->bssDesc), 0, 2029); - break; - - case WM_ERRCODE_ILLEGAL_STATE: - WCMi_Warning(wcmWarningText_InvalidWmState); - - default: - WcmSetPhase(WCM_PHASE_FATAL_ERROR); - WcmNotify(WCM_RESULT_FATAL_ERROR, &(wcmw->bssDesc), 0, 2038); - } - } else { - WCMi_Printf(wcmReportText_InvalidAid, "WM_StartConnectEx"); - WcmWmReset(); - } - } - break; - - default: - WcmSetPhase(WCM_PHASE_FATAL_ERROR); - WcmNotify(WCM_RESULT_FATAL_ERROR, &(wcmw->bssDesc), (void *)(cb->state), 2052); - } - break; - - case WM_ERRCODE_FAILED: - wcmw->wlStatusOnConnectFail = cb->wlStatus; - - case WM_ERRCODE_NO_ENTRY: - case WM_ERRCODE_INVALID_PARAM: - case WM_ERRCODE_OVER_MAX_ENTRY: - - WCMi_Printf(wcmReportText_WmAsyncError, "WM_StartConnectEx", cb->errcode, cb->wlCmdID, cb->wlResult); - WcmSetPhase(WCM_PHASE_IDLE_TO_DCF); - WcmWmReset(); - break; - - case WM_ERRCODE_ILLEGAL_STATE: - case WM_ERRCODE_WM_DISABLE: - WCMi_Warning(wcmWarningText_InvalidWmState); - - default: - WcmSetPhase(WCM_PHASE_FATAL_ERROR); - WcmNotify(WCM_RESULT_FATAL_ERROR, &(wcmw->bssDesc), 0, 2075); - } -} - -static void WcmWmcbDisconnect (void * arg) { - WMCallback * cb = (WMCallback *)arg; - - switch (cb->errcode) { - case WM_ERRCODE_SUCCESS: - if (wcmw->phase == WCM_PHASE_IRREGULAR) { - WCMi_Printf(wcmReportText_WmDisconnected, "WM_Disconnect"); - WcmSetPhase(WCM_PHASE_DCF_TO_IDLE); - WcmWmReset(); - } else { - wcmw->authId = 0; - - WcmSetPhase(WCM_PHASE_IDLE); - WcmNotify(WCM_RESULT_SUCCESS, &(wcmw->bssDesc), 0, 2109); - } - break; - - case WM_ERRCODE_FAILED: - case WM_ERRCODE_ILLEGAL_STATE: - - WCMi_Printf(wcmReportText_WmAsyncError, "WM_Disconnect", cb->errcode, cb->wlCmdID, cb->wlResult); - WcmSetPhase(WCM_PHASE_DCF_TO_IDLE); - WcmWmReset(); - break; - - case WM_ERRCODE_WM_DISABLE: - WCMi_Warning(wcmWarningText_InvalidWmState); - - default: - WcmSetPhase(WCM_PHASE_FATAL_ERROR); - WcmNotify(WCM_RESULT_FATAL_ERROR, &(wcmw->bssDesc), 0, 2127); - } -} - -static void WcmWmcbStartDCF (void * arg) { - WMStartDCFCallback * cb = (WMStartDCFCallback *)arg; - - switch (cb->errcode) { - case WM_ERRCODE_SUCCESS: - switch (cb->state) { - case WM_STATECODE_DCF_START: - if (wcmw->phase == WCM_PHASE_IRREGULAR) { - WCMi_Printf(wcmReportText_WmDisconnected, "WM_StartDCF"); - WcmSetPhase(WCM_PHASE_IDLE_TO_DCF); - WcmWmReset(); - } else { - WcmSetPhase(WCM_PHASE_DCF); - WcmNotify(WCM_RESULT_SUCCESS, &(wcmw->bssDesc), 0, 2162); - } - break; - - case WM_STATECODE_DCF_IND: - - WCMi_ShelterRssi((u8)(cb->recvBuf->rate_rssi >> 8)); - - DC_InvalidateRange(cb->recvBuf, WCM_DCF_RECV_BUF_SIZE); - WCMi_CpsifRecvCallback(cb->recvBuf); - break; - - default: - WcmSetPhase(WCM_PHASE_FATAL_ERROR); - WcmNotify(WCM_RESULT_FATAL_ERROR, &(wcmw->bssDesc), (void *)(cb->state), 2177); - } - break; - - case WM_ERRCODE_WM_DISABLE: - WCMi_Warning(wcmWarningText_InvalidWmState); - - default: - WcmSetPhase(WCM_PHASE_FATAL_ERROR); - WcmNotify(WCM_RESULT_FATAL_ERROR, &(wcmw->bssDesc), 0, 2188); - } -} - -static void WcmWmcbEndDCF (void * arg) { - WMCallback * cb = (WMCallback *)arg; - WMErrCode wmResult = WM_ERRCODE_MAX; - - switch (cb->errcode) { - case WM_ERRCODE_SUCCESS: - if (wcmw->phase == WCM_PHASE_IRREGULAR) { - WcmSetPhase(WCM_PHASE_DCF_TO_IDLE); - WcmWmReset(); - } else { - wmResult = WM_Disconnect(WcmWmcbDisconnect, 0); - switch (wmResult) { - case WM_ERRCODE_OPERATING: - break; - - case WM_ERRCODE_FIFO_ERROR: - WCMi_Printf(wcmReportText_WmSyncError, "WM_Disconnect", wmResult); - WcmSetPhase(WCM_PHASE_IRREGULAR); - WcmNotify(WCM_RESULT_FAILURE, &(wcmw->bssDesc), 0, 2228); - break; - - case WM_ERRCODE_ILLEGAL_STATE: - - WCMi_Printf(wcmReportText_WmSyncError, "WM_Disconnect", wmResult); - WcmSetPhase(WCM_PHASE_DCF_TO_IDLE); - WcmWmReset(); - break; - - default: - WcmSetPhase(WCM_PHASE_FATAL_ERROR); - WcmNotify(WCM_RESULT_FATAL_ERROR, &(wcmw->bssDesc), 0, 2240); - } - } - break; - - case WM_ERRCODE_FAILED: - case WM_ERRCODE_ILLEGAL_STATE: - - WCMi_Printf(wcmReportText_WmAsyncError, "WM_EndDCF", cb->errcode, cb->wlCmdID, cb->wlResult); - WcmSetPhase(WCM_PHASE_DCF_TO_IDLE); - WcmWmReset(); - break; - - case WM_ERRCODE_WM_DISABLE: - WCMi_Warning(wcmWarningText_InvalidWmState); - - default: - WcmSetPhase(WCM_PHASE_FATAL_ERROR); - WcmNotify(WCM_RESULT_FATAL_ERROR, &(wcmw->bssDesc), 0, 2259); - } -} - -static void WcmWmcbReset (void * arg) { - WMCallback * cb = (WMCallback *)arg; - WMErrCode wmResult = WM_ERRCODE_MAX; - - switch (cb->errcode) { - case WM_ERRCODE_SUCCESS: - - wcmw->resetting = WCM_RESETTING_OFF; - - wcmw->authId = 0; - - switch (wcmw->phase) { - case WCM_PHASE_IDLE_TO_SEARCH: - case WCM_PHASE_SEARCH: - - WcmSetPhase(WCM_PHASE_IDLE); - WcmNotify(WCM_RESULT_FAILURE, 0, 0, 2293); - break; - - case WCM_PHASE_SEARCH_TO_IDLE: - - WcmSetPhase(WCM_PHASE_IDLE); - WcmNotify(WCM_RESULT_SUCCESS, 0, 0, 2299); - break; - - case WCM_PHASE_IDLE_TO_DCF: - - { - u16 wlStatus = wcmw->wlStatusOnConnectFail; - - wcmw->wlStatusOnConnectFail = 0x0000; -#ifdef WCM_CAMOUFLAGE_RATESET - - if (wlStatus == WCM_CONNECT_STATUSCODE_ILLEGAL_RATESET) { - if ((wcmw->bssDesc.rateSet.support & WCM_CAMOUFLAGE_RATESET) != WCM_CAMOUFLAGE_RATESET) { - WCMi_Printf(wcmReportText_SupportRateset, wcmw->bssDesc.ssid); - wcmw->bssDesc.rateSet.support |= WCM_CAMOUFLAGE_RATESET; - - wmResult = WM_StartConnectEx( - WcmWmcbConnect, &(wcmw->bssDesc), NULL, - ((wcmw->option & WCM_OPTION_MASK_POWER) == WCM_OPTION_POWER_ACTIVE ? FALSE : TRUE), - ((wcmw->option & WCM_OPTION_MASK_AUTH) == WCM_OPTION_AUTH_SHAREDKEY ? - (u16)WM_AUTHMODE_SHARED_KEY : (u16)WM_AUTHMODE_OPEN_SYSTEM - ) - ); - - switch (wmResult) { - case WM_ERRCODE_OPERATING: - break; - - case WM_ERRCODE_FIFO_ERROR: - WcmSetPhase(WCM_PHASE_IRREGULAR); - WcmNotify(WCM_RESULT_FAILURE, &(wcmw->bssDesc), (void *)wlStatus, 2332); - break; - - case WM_ERRCODE_ILLEGAL_STATE: - WCMi_Warning(wcmWarningText_InvalidWmState); - - default: - WcmSetPhase(WCM_PHASE_FATAL_ERROR); - WcmNotify(WCM_RESULT_FATAL_ERROR, &(wcmw->bssDesc), (void *)wlStatus, 2341); - } - - return; - } - } -#endif - WcmSetPhase(WCM_PHASE_IDLE); - WcmNotify(WCM_RESULT_FAILURE, &(wcmw->bssDesc), (void *)wlStatus, 2349); - } - break; - - case WCM_PHASE_DCF: - case WCM_PHASE_IRREGULAR: - - WcmSetPhase(WCM_PHASE_IDLE); - WcmNotify(WCM_RESULT_SUCCESS, &(wcmw->bssDesc), (void *)1, 2357); - - break; - - case WCM_PHASE_DCF_TO_IDLE: - - WcmSetPhase(WCM_PHASE_IDLE); - WcmNotify(WCM_RESULT_SUCCESS, &(wcmw->bssDesc), 0, 2364); - break; - - case WCM_PHASE_TERMINATING: - - wmResult = WM_PowerOff(WcmWmcbCommon); - switch (wmResult) { - case WM_ERRCODE_OPERATING: - break; - - case WM_ERRCODE_FIFO_ERROR: - WCMi_Printf(wcmReportText_WmSyncError, "WM_Reset", wmResult); - WcmSetPhase(WCM_PHASE_IRREGULAR); - WcmNotify(WCM_RESULT_FAILURE, 0, 0, 2378); - break; - - case WM_ERRCODE_ILLEGAL_STATE: - WCMi_Warning(wcmWarningText_InvalidWmState); - - default: - WcmSetPhase(WCM_PHASE_FATAL_ERROR); - WcmNotify(WCM_RESULT_FATAL_ERROR, 0, 0, 2387); - } - break; - - default: - WcmSetPhase(WCM_PHASE_FATAL_ERROR); - WcmNotify(WCM_RESULT_FATAL_ERROR, 0, (void *)(wcmw->phase), 2393); - } - break; - - default: - - WcmSetPhase(WCM_PHASE_FATAL_ERROR); - WcmNotify(WCM_RESULT_FATAL_ERROR, 0, 0, 2400); - } -} diff --git a/subprojects/NitroWiFi/libraries/wcm/src/util_wcm.c b/subprojects/NitroWiFi/libraries/wcm/src/util_wcm.c deleted file mode 100644 index 3eb549b5a5..0000000000 --- a/subprojects/NitroWiFi/libraries/wcm/src/util_wcm.c +++ /dev/null @@ -1,169 +0,0 @@ -#include "include/wcm_private.h" - -#define WCM_NETWORK_CAPABILITY_KIND_MASK 0x0003 -#define WCM_NETWORK_CAPABILITY_KIND_ESS 0x0001 -#define WCM_NETWORK_CAPABILITY_KIND_IBSS 0x0002 -#define WCM_NETWORK_CAPABILITY_PRIVACY 0x0010 -#define WCM_NETWORK_CAPABILITY_PREAMBLE_MASK 0x0020 -#define WCM_NETWORK_CAPABILITY_PREAMBLE_LONG 0x0000 -#define WCM_NETWORK_CAPABILITY_PREAMBLE_SHORT 0x0020 - -#define WCM_RSSI_COUNT_MAX 16 -#define WCM_RSSI_BORDER_HIGH 28 -#define WCM_RSSI_BORDER_MIDDLE 22 -#define WCM_RSSI_BORDER_LOW 16 - -static WMLinkLevel WcmGetLinkLevel(void); - -static u8 wcmRssi[WCM_RSSI_COUNT_MAX]; -static u8 wcmRssiIndex = 0; - -BOOL WCM_CompareBssID (u8 * a, u8 * b) { - s32 i; - - for (i = 0; i < WCM_BSSID_SIZE; i++) { - if (a[i] != b[i]) { - return FALSE; - } - } - - return TRUE; -} - -WMLinkLevel WCM_GetLinkLevel (void) { - OSIntrMode e = OS_DisableInterrupts(); - WCMWork * w = WCMi_GetSystemWork(); - WMLinkLevel ret = WM_LINK_LEVEL_0; - - if (w != NULL) { - if (w->phase == WCM_PHASE_DCF) { - ret = WcmGetLinkLevel(); - } - } - - (void)OS_RestoreInterrupts(e); - return ret; -} - -BOOL WCM_IsInfrastructureNetwork (WMBssDesc * bssDesc) { - if (bssDesc != NULL) { - if ((bssDesc->capaInfo & WCM_NETWORK_CAPABILITY_KIND_MASK) == WCM_NETWORK_CAPABILITY_KIND_ESS) { - return TRUE; - } - } - - return FALSE; -} - -BOOL WCM_IsAdhocNetwork (WMBssDesc * bssDesc) { - if (bssDesc != NULL) { - if ((bssDesc->capaInfo & WCM_NETWORK_CAPABILITY_KIND_MASK) == WCM_NETWORK_CAPABILITY_KIND_IBSS) { - return TRUE; - } - } - - return FALSE; -} - -BOOL WCM_IsPrivacyNetwork (WMBssDesc * bssDesc) { - if (bssDesc != NULL) { - if (bssDesc->capaInfo & WCM_NETWORK_CAPABILITY_PRIVACY) { - return TRUE; - } - } - - return FALSE; -} - -BOOL WCM_IsShortPreambleNetwork (WMBssDesc * bssDesc) { - if (bssDesc != NULL) { - if ((bssDesc->capaInfo & WCM_NETWORK_CAPABILITY_PREAMBLE_MASK) == WCM_NETWORK_CAPABILITY_PREAMBLE_SHORT) { - return TRUE; - } - } - - return FALSE; -} - -BOOL WCM_IsLongPreambleNetwork (WMBssDesc * bssDesc) { - if (bssDesc != NULL) { - if ((bssDesc->capaInfo & WCM_NETWORK_CAPABILITY_PREAMBLE_MASK) == WCM_NETWORK_CAPABILITY_PREAMBLE_LONG) { - return TRUE; - } - } - - return FALSE; -} - -BOOL WCM_IsEssidHidden (WMBssDesc * bssDesc) { - if (bssDesc != NULL) { - s32 i; - - if (bssDesc->ssidLength == 0) { - return TRUE; - } - - for (i = 0; (i < bssDesc->ssidLength) && (i < WM_SIZE_SSID); i++) { - if (bssDesc->ssid[i] != 0x00) { - return FALSE; - } - } - - return TRUE; - } - - return FALSE; -} - -u8 WCMi_GetRssiAverage (void) { - s32 sum = 0; - s32 i; - - if (wcmRssiIndex > WCM_RSSI_COUNT_MAX) { - for (i = 0; i < WCM_RSSI_COUNT_MAX; i++) { - sum += wcmRssi[i]; - } - - sum /= WCM_RSSI_COUNT_MAX; - } else if (wcmRssiIndex > 0) { - for (i = 0; i < wcmRssiIndex; i++) { - sum += wcmRssi[i]; - } - - sum /= wcmRssiIndex; - } - - return (u8)sum; -} - -static WMLinkLevel WcmGetLinkLevel (void) { - u8 ave = WCMi_GetRssiAverage(); - WMLinkLevel level = WM_LINK_LEVEL_0; - - if (ave >= WCM_RSSI_BORDER_HIGH) { - level = WM_LINK_LEVEL_3; - } else if (ave >= WCM_RSSI_BORDER_MIDDLE) { - level = WM_LINK_LEVEL_2; - } else if (ave >= WCM_RSSI_BORDER_LOW) { - level = WM_LINK_LEVEL_1; - } - - return level; -} - -void WCMi_ShelterRssi (u8 rssi) { - u8 raw; - - if (rssi & 0x02) { - raw = (u8)(rssi >> 2); - } else { - raw = (u8)(25 + (rssi >> 2)); - } - - wcmRssi[wcmRssiIndex % WCM_RSSI_COUNT_MAX] = raw; - if (wcmRssiIndex >= WCM_RSSI_COUNT_MAX) { - wcmRssiIndex = (u8)(((1 + wcmRssiIndex) % WCM_RSSI_COUNT_MAX) + WCM_RSSI_COUNT_MAX); - } else { - wcmRssiIndex++; - } -} diff --git a/subprojects/NitroWiFi/meson.build b/subprojects/NitroWiFi/meson.build deleted file mode 100644 index 27e6634ba3..0000000000 --- a/subprojects/NitroWiFi/meson.build +++ /dev/null @@ -1,53 +0,0 @@ -project('NitroWiFi', ['c', 'nasm']) - -# Compiler flags -c_args = [ - '-O4,p', - '-proc', 'arm946e', - '-enum', 'int', - '-lang', 'c99', - '-Cpp_exceptions', 'off', - '-gccext,on', - '-msgstyle', 'gcc', - '-ipa', 'file', - '-interworking', - '-inline', 'on,noauto', - '-char', 'signed', - '-nosyspath', - '-stdinc' -] - -asm_args = [ - '-proc', 'arm5TE', - '-gccinc' -] - -sdk_args = [ - '-DSDK_CW_FORCE_EXPORT_SUPPORT', - '-DSDK_TS', - '-DSDK_4M', - '-DSDK_ARM9', - '-DSDK_CW', - '-DSDK_FINALROM', - '-DSDK_CODE_ARM', - '-DNNS_FINALROM' -] - -# Dependencies -nitrosdk_dep = dependency('NitroSDK', fallback : ['NitroSDK', 'nitrosdk_dep']) - -# Public includes -public_includes = include_directories('include') -nitro_pch = subproject('NitroSDK').get_variable('nitro_pch') - -# Libraries -nitrowifi_libs = [] -subdir('libraries') - -# Own dependency for consumers -nitrowifi_dep = declare_dependency( - compile_args: sdk_args, - dependencies: nitrosdk_dep, - include_directories: public_includes, - link_with: nitrowifi_libs -) \ No newline at end of file diff --git a/subprojects/gamespy/include/gs/available.h b/subprojects/gamespy/include/gs/available.h deleted file mode 100644 index 1070c28a6a..0000000000 --- a/subprojects/gamespy/include/gs/available.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef _AVAILABLE_H_ -#define _AVAILABLE_H_ - -#include "stringutil.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef GSI_UNICODE -#define GSIStartAvailableCheck GSIStartAvailableCheckA -#else -#define GSIStartAvailableCheck GSIStartAvailableCheckW -#endif - -typedef enum { - GSIACWaiting, - GSIACAvailable, - GSIACUnavailable, - GSIACTemporarilyUnavailable -} GSIACResult; - -extern char GSIACHostname[64]; -extern GSIACResult __GSIACResult; -extern char __GSIACGamename[64]; - -void GSIStartAvailableCheck(const gsi_char * gamename); -GSIACResult GSIAvailableCheckThink(void); -void GSICancelAvailableCheck(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/gamespy/include/gs/chat/chat.h b/subprojects/gamespy/include/gs/chat/chat.h deleted file mode 100644 index d774e4cba8..0000000000 --- a/subprojects/gamespy/include/gs/chat/chat.h +++ /dev/null @@ -1,277 +0,0 @@ -#ifndef _CHAT_H_ -#define _CHAT_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define CHAT_MESSAGE 0 -#define CHAT_ACTION 1 -#define CHAT_NOTICE 2 -#define CHAT_UTM 3 -#define CHAT_ATM 4 -#define CHAT_NORMAL 0 -#define CHAT_VOICE 1 -#define CHAT_OP 2 -#define CHAT_LEFT 0 -#define CHAT_QUIT 1 -#define CHAT_KICKED 2 -#define CHAT_KILLED 3 -#define CHAT_NICK_OK 0 -#define CHAT_IN_USE 1 -#define CHAT_INVALID 2 -#define CHAT_UNIQUENICK_EXPIRED 3 -#define CHAT_NO_UNIQUENICK 4 -#define CHAT_INVALID_UNIQUENICK 5 -#define CHAT_NICK_TOO_LONG 6 -#define CHAT_DISCONNECTED 0 -#define CHAT_NICK_ERROR 1 -#define CHAT_LOGIN_FAILED 2 -#ifndef GSI_UNICODE -#define chatConnect chatConnectA -#define chatConnectSpecial chatConnectSpecialA -#define chatConnectSecure chatConnectSecureA -#define chatConnectLogin chatConnectLoginA -#define chatConnectPreAuth chatConnectPreAuthA -#define chatRetryWithNick chatRetryWithNickA -#define chatRegisterUniqueNick chatRegisterUniqueNickA -#define chatSendRaw chatSendRawA -#define chatChangeNick chatChangeNickA -#define chatFixNick chatFixNickA -#define chatTranslateNick chatTranslateNickA -#define chatAuthenticateCDKey chatAuthenticateCDKeyA -#define chatEnumChannels chatEnumChannelsA -#define chatEnterChannel chatEnterChannelA -#define chatLeaveChannel chatLeaveChannelA -#define chatSendChannelMessage chatSendChannelMessageA -#define chatSetChannelTopic chatSetChannelTopicA -#define chatGetChannelTopic chatGetChannelTopicA -#define chatSetChannelMode chatSetChannelModeA -#define chatGetChannelMode chatGetChannelModeA -#define chatSetChannelPassword chatSetChannelPasswordA -#define chatGetChannelPassword chatGetChannelPasswordA -#define chatSetChannelLimit chatSetChannelLimitA -#define chatEnumChannelBans chatEnumChannelBansA -#define chatAddChannelBan chatAddChannelBanA -#define chatRemoveChannelBan chatRemoveChannelBanA -#define chatSetChannelGroup chatSetChannelGroupA -#define chatGetChannelNumUsers chatGetChannelNumUsersA -#define chatInChannel chatInChannelA -#define chatEnumUsers chatEnumUsersA -#define chatSendUserMessage chatSendUserMessageA -#define chatGetUserInfo chatGetUserInfoA -#define chatGetBasicUserInfo chatGetBasicUserInfoA -#define chatGetBasicUserInfoNoWait chatGetBasicUserInfoNoWaitA -#define chatGetChannelBasicUserInfo chatGetChannelBasicUserInfoA -#define chatInviteUser chatInviteUserA -#define chatKickUser chatKickUserA -#define chatBanUser chatBanUserA -#define chatSetUserMode chatSetUserModeA -#define chatGetUserMode chatGetUserModeA -#define chatGetUserModeNoWait chatGetUserModeNoWaitA -#define chatSetGlobalKeys chatSetGlobalKeysA -#define chatSetChannelKeys chatSetChannelKeysA -#define chatGetGlobalKeys chatGetGlobalKeysA -#define chatGetChannelKeys chatGetChannelKeysA -#define chatGetNick chatGetNickA -#else -#define chatConnect chatConnectW -#define chatConnectSpecial chatConnectSpecialW -#define chatConnectSecure chatConnectSecureW -#define chatConnectLogin chatConnectLoginW -#define chatConnectPreAuth chatConnectPreAuthW -#define chatRetryWithNick chatRetryWithNickW -#define chatRegisterUniqueNick chatRegisterUniqueNickW -#define chatSendRaw chatSendRawW -#define chatChangeNick chatChangeNickW -#define chatFixNick chatFixNickW -#define chatTranslateNick chatTranslateNickW -#define chatAuthenticateCDKey chatAuthenticateCDKeyW -#define chatEnumChannels chatEnumChannelsW -#define chatEnterChannel chatEnterChannelW -#define chatLeaveChannel chatLeaveChannelW -#define chatSendChannelMessage chatSendChannelMessageW -#define chatSetChannelTopic chatSetChannelTopicW -#define chatGetChannelTopic chatGetChannelTopicW -#define chatSetChannelMode chatSetChannelModeW -#define chatGetChannelMode chatGetChannelModeW -#define chatSetChannelPassword chatSetChannelPasswordW -#define chatGetChannelPassword chatGetChannelPasswordW -#define chatSetChannelLimit chatSetChannelLimitW -#define chatEnumChannelBans chatEnumChannelBansW -#define chatAddChannelBan chatAddChannelBanW -#define chatRemoveChannelBan chatRemoveChannelBanW -#define chatSetChannelGroup chatSetChannelGroupW -#define chatGetChannelNumUsers chatGetChannelNumUsersW -#define chatInChannel chatInChannelW -#define chatEnumUsers chatEnumUsersW -#define chatSendUserMessage chatSendUserMessageW -#define chatGetUserInfo chatGetUserInfoW -#define chatGetBasicUserInfo chatGetBasicUserInfoW -#define chatGetBasicUserInfoNoWait chatGetBasicUserInfoNoWaitW -#define chatGetChannelBasicUserInfo chatGetChannelBasicUserInfoW -#define chatInviteUser chatInviteUserW -#define chatKickUser chatKickUserW -#define chatBanUser chatBanUserW -#define chatSetUserMode chatSetUserModeW -#define chatGetUserMode chatGetUserModeW -#define chatGetUserModeNoWait chatGetUserModeNoWaitW -#define chatSetGlobalKeys chatSetGlobalKeysW -#define chatSetChannelKeys chatSetChannelKeysW -#define chatGetGlobalKeys chatGetGlobalKeysW -#define chatGetChannelKeys chatGetChannelKeysW -#define chatGetNick chatGetNickW -#endif - -typedef void * CHAT; - -typedef enum { - CHATFalse, - CHATTrue -} CHATBool; - -typedef struct CHATChannelMode { - CHATBool InviteOnly; - CHATBool Private; - CHATBool Secret; - CHATBool Moderated; - CHATBool NoExternalMessages; - CHATBool OnlyOpsChangeTopic; - CHATBool OpsObeyChannelLimit; - int Limit; -} CHATChannelMode; - -typedef enum { - CHATEnterSuccess, - CHATBadChannelName, - CHATChannelIsFull, - CHATInviteOnlyChannel, - CHATBannedFromChannel, - CHATBadChannelPassword, - CHATTooManyChannels, - CHATEnterTimedOut, - CHATBadChannelMask -} CHATEnterResult; - -typedef void (* chatRaw)(CHAT chat, const gsi_char * raw, void * param); -typedef void (* chatDisconnected)(CHAT chat, const gsi_char * reason, void * param); -typedef void (* chatPrivateMessage)(CHAT chat, const gsi_char * user, const gsi_char * message, int type, void * param); -typedef void (* chatInvited)(CHAT chat, const gsi_char * channel, const gsi_char * user, void * param); -typedef void (* chatChannelMessage)(CHAT chat, const gsi_char * channel, const gsi_char * user, const gsi_char * message, int type, void * param); -typedef void (* chatKicked)(CHAT chat, const gsi_char * channel, const gsi_char * user, const gsi_char * reason, void * param); -typedef void (* chatUserJoined)(CHAT chat, const gsi_char * channel, const gsi_char * user, int mode, void * param); -typedef void (* chatUserParted)(CHAT chat, const gsi_char * channel, const gsi_char * user, int why, const gsi_char * reason, const gsi_char * kicker, void * param); -typedef void (* chatUserChangedNick)(CHAT chat, const gsi_char * channel, const gsi_char * oldNick, const gsi_char * newNick, void * param); -typedef void (* chatTopicChanged)(CHAT chat, const gsi_char * channel, const gsi_char * topic, void * param); -typedef void (* chatChannelModeChanged)(CHAT chat, const gsi_char * channel, CHATChannelMode * mode, void * param); -typedef void (* chatUserModeChanged)(CHAT chat, const gsi_char * channel, const gsi_char * user, int mode, void * param); -typedef void (* chatUserListUpdated)(CHAT chat, const gsi_char * channel, void * param); -typedef void (* chatNewUserList)(CHAT chat, const gsi_char * channel, int num, const gsi_char ** users, int * modes, void * param); -typedef void (* chatBroadcastKeyChanged)(CHAT chat, const gsi_char * channel, const gsi_char * user, const gsi_char * key, const gsi_char * value, void * param); -typedef void (* chatChangeNickCallback)(CHAT chat, CHATBool success, const gsi_char * oldNick, const gsi_char * newNick, void * param); -typedef void (* chatConnectCallback)(CHAT chat, CHATBool success, int failureReason, void * param); -typedef void (* chatNickErrorCallback)(CHAT chat, int type, const gsi_char * nick, int numSuggestedNicks, const gsi_char ** suggestedNicks, void * param); -typedef void (* chatFillInUserCallback)(CHAT chat, unsigned int IP, gsi_char user[128], void * param); -typedef void (* chatAuthenticateCDKeyCallback)(CHAT chat, int result, const gsi_char * message, void * param); -typedef void (* chatEnumChannelsCallbackEach)(CHAT chat, CHATBool success, int index, const gsi_char * channel, const gsi_char * topic, int numUsers, void * param); -typedef void (* chatEnumChannelsCallbackAll)(CHAT chat, CHATBool success, int numChannels, const gsi_char ** channels, const gsi_char ** topics, int * numUsers, void * param); -typedef void (* chatEnumJoinedChannelsCallback)(CHAT chat, int index, const gsi_char * channel, void * param); -typedef void (* chatEnterChannelCallback)(CHAT chat, CHATBool success, CHATEnterResult result, const gsi_char * channel, void * param); -typedef void (* chatGetChannelTopicCallback)(CHAT chat, CHATBool success, const gsi_char * channel, const gsi_char * topic, void * param); -typedef void (* chatGetChannelModeCallback)(CHAT chat, CHATBool success, const gsi_char * channel, CHATChannelMode * mode, void * param); -typedef void (* chatGetChannelPasswordCallback)(CHAT chat, CHATBool success, const gsi_char * channel, CHATBool enabled, const gsi_char * password, void * param); -typedef void (* chatEnumChannelBansCallback)(CHAT chat, CHATBool success, const gsi_char * channel, int numBans, const gsi_char ** bans, void * param); -typedef void (* chatEnumUsersCallback)(CHAT chat, CHATBool success, const gsi_char * channel, int numUsers, const gsi_char ** users, int * modes, void * param); -typedef void (* chatGetUserInfoCallback)(CHAT chat, CHATBool success, const gsi_char * nick, const gsi_char * user, const gsi_char * name, const gsi_char * address, int numChannels, const gsi_char ** channels, void * param); -typedef void (* chatGetBasicUserInfoCallback)(CHAT chat, CHATBool success, const gsi_char * nick, const gsi_char * user, const gsi_char * address, void * param); -typedef void (* chatGetChannelBasicUserInfoCallback)(CHAT chat, CHATBool success, const gsi_char * channel, const gsi_char * nick, const gsi_char * user, const gsi_char * address, void * param); -typedef void (* chatGetUserModeCallback)(CHAT chat, CHATBool success, const gsi_char * channel, const gsi_char * user, int mode, void * param); -typedef void (* chatGetGlobalKeysCallback)(CHAT chat, CHATBool success, const gsi_char * user, int num, const gsi_char ** keys, const gsi_char ** values, void * param); -typedef void (* chatGetChannelKeysCallback)(CHAT chat, CHATBool success, const gsi_char * channel, const gsi_char * user, int num, const gsi_char ** keys, const gsi_char ** values, void * param); - -typedef struct chatGlobalCallbacks { - chatRaw raw; - chatDisconnected disconnected; - chatPrivateMessage privateMessage; - chatInvited invited; - void * param; -} chatGlobalCallbacks; - -typedef struct chatChannelCallbacks { - chatChannelMessage channelMessage; - chatKicked kicked; - chatUserJoined userJoined; - chatUserParted userParted; - chatUserChangedNick userChangedNick; - chatTopicChanged topicChanged; - chatChannelModeChanged channelModeChanged; - chatUserModeChanged userModeChanged; - chatUserListUpdated userListUpdated; - chatNewUserList newUserList; - chatBroadcastKeyChanged broadcastKeyChanged; - void * param; -} chatChannelCallbacks; - -CHAT chatConnect(const gsi_char * serverAddress, int port, const gsi_char * nick, const gsi_char * user, const gsi_char * name, chatGlobalCallbacks * callbacks, chatNickErrorCallback nickErrorCallback, chatConnectCallback connectCallback, void * param, CHATBool blocking); -CHAT chatConnectSpecial(const gsi_char * serverAddress, int port, const gsi_char * nick, const gsi_char * name, chatGlobalCallbacks * callbacks, chatNickErrorCallback nickErrorCallback, chatFillInUserCallback fillInUserCallback, chatConnectCallback connectCallback, void * param, CHATBool blocking); -CHAT chatConnectSecure(const gsi_char * serverAddress, int port, const gsi_char * nick, const gsi_char * name, const gsi_char * gamename, const gsi_char * secretKey, chatGlobalCallbacks * callbacks, chatNickErrorCallback nickErrorCallback, chatFillInUserCallback fillInUserCallback, chatConnectCallback connectCallback, void * param, CHATBool blocking); -CHAT chatConnectLogin(const gsi_char * serverAddress, int port, int namespaceID, const gsi_char * email, const gsi_char * profilenick, const gsi_char * uniquenick, const gsi_char * password, const gsi_char * name, const gsi_char * gamename, const gsi_char * secretKey, chatGlobalCallbacks * callbacks, chatNickErrorCallback nickErrorCallback, chatFillInUserCallback fillInUserCallback, chatConnectCallback connectCallback, void * param, CHATBool blocking); -CHAT chatConnectPreAuth(const gsi_char * serverAddress, int port, const gsi_char * authtoken, const gsi_char * partnerchallenge, const gsi_char * name, const gsi_char * gamename, const gsi_char * secretKey, chatGlobalCallbacks * callbacks, chatNickErrorCallback nickErrorCallback, chatFillInUserCallback fillInUserCallback, chatConnectCallback connectCallback, void * param, CHATBool blocking); -void chatRetryWithNick(CHAT chat, const gsi_char * nick); -void chatRegisterUniqueNick(CHAT chat, int namespaceID, const gsi_char * uniquenick, const gsi_char * cdkey); -void chatDisconnect(CHAT chat); -void chatThink(CHAT chat); -void chatSendRaw(CHAT chat, const gsi_char * command); -void chatChangeNick(CHAT chat, const gsi_char * newNick, chatChangeNickCallback callback, void * param, CHATBool blocking); -const gsi_char * chatGetNick(CHAT chat); -void chatFixNick(gsi_char * newNick, const gsi_char * oldNick); -const gsi_char * chatTranslateNick(gsi_char * nick, const gsi_char * extension); -int chatGetUserID(CHAT chat); -int chatGetProfileID(CHAT chat); -void chatSetQuietMode(CHAT chat, CHATBool quiet); -void chatAuthenticateCDKey(CHAT chat, const gsi_char * cdkey, chatAuthenticateCDKeyCallback callback, void * param, CHATBool blocking); -void chatEnumChannels(CHAT chat, const gsi_char * filter, chatEnumChannelsCallbackEach callbackEach, chatEnumChannelsCallbackAll callbackAll, void * param, CHATBool blocking); -void chatEnumJoinedChannels(CHAT chat, chatEnumJoinedChannelsCallback callback, void * param); -void chatEnterChannel(CHAT chat, const gsi_char * channel, const gsi_char * password, chatChannelCallbacks * callbacks, chatEnterChannelCallback callback, void * param, CHATBool blocking); -void chatLeaveChannel(CHAT chat, const gsi_char * channel, const gsi_char * reason); -void chatSendChannelMessage(CHAT chat, const gsi_char * channel, const gsi_char * message, int type); -void chatSetChannelTopic(CHAT chat, const gsi_char * channel, const gsi_char * topic); -void chatGetChannelTopic(CHAT chat, const gsi_char * channel, chatGetChannelTopicCallback callback, void * param, CHATBool blocking); -void chatSetChannelMode(CHAT chat, const gsi_char * channel, CHATChannelMode * mode); -void chatGetChannelMode(CHAT chat, const gsi_char * channel, chatGetChannelModeCallback callback, void * param, CHATBool blocking); -void chatSetChannelPassword(CHAT chat, const gsi_char * channel, CHATBool enable, const gsi_char * password); -void chatGetChannelPassword(CHAT chat, const gsi_char * channel, chatGetChannelPasswordCallback callback, void * param, CHATBool blocking); -void chatSetChannelLimit(CHAT chat, const gsi_char * channel, int limit); -void chatEnumChannelBans(CHAT chat, const gsi_char * channel, chatEnumChannelBansCallback callback, void * param, CHATBool blocking); -void chatAddChannelBan(CHAT chat, const gsi_char * channel, const gsi_char * ban); -void chatRemoveChannelBan(CHAT chat, const gsi_char * channel, const gsi_char * ban); -void chatSetChannelGroup(CHAT chat, const gsi_char * channel, const gsi_char * group); -int chatGetChannelNumUsers(CHAT chat, const gsi_char * channel); -CHATBool chatInChannel(CHAT chat, const gsi_char * channel); -void chatEnumUsers(CHAT chat, const gsi_char * channel, chatEnumUsersCallback callback, void * param, CHATBool blocking); -void chatSendUserMessage(CHAT chat, const gsi_char * user, const gsi_char * message, int type); -void chatGetUserInfo(CHAT chat, const gsi_char * user, chatGetUserInfoCallback callback, void * param, CHATBool blocking); -void chatGetBasicUserInfo(CHAT chat, const gsi_char * user, chatGetBasicUserInfoCallback callback, void * param, CHATBool blocking); -CHATBool chatGetBasicUserInfoNoWait(CHAT chat, const gsi_char * nick, const gsi_char ** user, const gsi_char ** address); -void chatGetChannelBasicUserInfo(CHAT chat, const gsi_char * channel, chatGetChannelBasicUserInfoCallback callback, void * param, CHATBool blocking); -void chatInviteUser(CHAT chat, const gsi_char * channel, const gsi_char * user); -void chatKickUser(CHAT chat, const gsi_char * channel, const gsi_char * user, const gsi_char * reason); -void chatBanUser(CHAT chat, const gsi_char * channel, const gsi_char * user); -void chatSetUserMode(CHAT chat, const gsi_char * channel, const gsi_char * user, int mode); -void chatGetUserMode(CHAT chat, const gsi_char * channel, const gsi_char * user, chatGetUserModeCallback callback, void * param, CHATBool blocking); -CHATBool chatGetUserModeNoWait(CHAT chat, const gsi_char * channel, const gsi_char * user, int * mode); -void chatSetGlobalKeys(CHAT chat, int num, const gsi_char ** keys, const gsi_char ** values); -void chatGetGlobalKeys(CHAT chat, const gsi_char * target, int num, const gsi_char ** keys, chatGetGlobalKeysCallback callback, void * param, CHATBool blocking); -void chatSetChannelKeys(CHAT chat, const gsi_char * channel, const gsi_char * user, int num, const gsi_char ** keys, const gsi_char ** values); -void chatGetChannelKeys(CHAT chat, const gsi_char * channel, const gsi_char * user, int num, const gsi_char ** keys, chatGetChannelKeysCallback callback, void * param, CHATBool blocking); -#ifdef GSI_UNICODE -CHATBool chatGetBasicUserInfoNoWaitA(CHAT chat, const char * nick, const char ** user, const char ** address); -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/gamespy/include/gs/chat/chatASCII.h b/subprojects/gamespy/include/gs/chat/chatASCII.h deleted file mode 100644 index 92b3ae0876..0000000000 --- a/subprojects/gamespy/include/gs/chat/chatASCII.h +++ /dev/null @@ -1,62 +0,0 @@ -#ifndef _CHATASCII_H_ -#define _CHATASCII_H_ - -#include "chat.h" - -#ifdef __cplusplus -extern "C" { -#endif - -CHAT chatConnectA(const char * serverAddress, int port, const char * nick, const char * user, const char * name, chatGlobalCallbacks * callbacks, chatNickErrorCallback nickErrorCallback, chatConnectCallback connectCallback, void * param, CHATBool blocking); -CHAT chatConnectSpecialA(const char * serverAddress, int port, const char * nick, const char * name, chatGlobalCallbacks * callbacks, chatNickErrorCallback nickErrorCallback, chatFillInUserCallback fillInUserCallback, chatConnectCallback connectCallback, void * param, CHATBool blocking); -CHAT chatConnectSecureA(const char * serverAddress, int port, const char * nick, const char * name, const char * gamename, const char * secretKey, chatGlobalCallbacks * callbacks, chatNickErrorCallback nickErrorCallback, chatFillInUserCallback fillInUserCallback, chatConnectCallback connectCallback, void * param, CHATBool blocking); -CHAT chatConnectLoginA(const char * serverAddress, int port, int namespaceID, const char * email, const char * profilenick, const char * uniquenick, const char * password, const char * name, const char * gamename, const char * secretKey, chatGlobalCallbacks * callbacks, chatNickErrorCallback nickErrorCallback, chatFillInUserCallback fillInUserCallback, chatConnectCallback connectCallback, void * param, CHATBool blocking); -CHAT chatConnectPreAuthA(const char * serverAddress, int port, const char * authtoken, const char * partnerchallenge, const char * name, const char * gamename, const char * secretKey, chatGlobalCallbacks * callbacks, chatNickErrorCallback nickErrorCallback, chatFillInUserCallback fillInUserCallback, chatConnectCallback connectCallback, void * param, CHATBool blocking); -void chatRetryWithNickA(CHAT chat, const char * nick); -void chatRegisterUniqueNickA(CHAT chat, int namespaceID, const char * uniquenick, const char * cdkey); -void chatSendRawA(CHAT chat, const char * command); -void chatChangeNickA(CHAT chat, const char * newNick, chatChangeNickCallback callback, void * param, CHATBool blocking); -const char * chatGetNickA(CHAT chat); -void chatFixNickA(char * newNick, const char * oldNick); -const char * chatTranslateNickA(char * nick, const char * extension); -void chatAuthenticateCDKeyA(CHAT chat, const char * cdkey, chatAuthenticateCDKeyCallback callback, void * param, CHATBool blocking); -void chatEnumChannelsA(CHAT chat, const char * filter, chatEnumChannelsCallbackEach callbackEach, chatEnumChannelsCallbackAll callbackAll, void * param, CHATBool blocking); -void chatEnterChannelA(CHAT chat, const char * channel, const char * password, chatChannelCallbacks * callbacks, chatEnterChannelCallback callback, void * param, CHATBool blocking); -void chatLeaveChannelA(CHAT chat, const char * channel, const char * reason); -void chatSendChannelMessageA(CHAT chat, const char * channel, const char * message, int type); -void chatSetChannelTopicA(CHAT chat, const char * channel, const char * topic); -void chatGetChannelTopicA(CHAT chat, const char * channel, chatGetChannelTopicCallback callback, void * param, CHATBool blocking); -void chatSetChannelModeA(CHAT chat, const char * channel, CHATChannelMode * mode); -void chatGetChannelModeA(CHAT chat, const char * channel, chatGetChannelModeCallback callback, void * param, CHATBool blocking); -void chatSetChannelPasswordA(CHAT chat, const char * channel, CHATBool enable, const char * password); -void chatGetChannelPasswordA(CHAT chat, const char * channel, chatGetChannelPasswordCallback callback, void * param, CHATBool blocking); -void chatSetChannelLimitA(CHAT chat, const char * channel, int limit); -void chatEnumChannelBansA(CHAT chat, const char * channel, chatEnumChannelBansCallback callback, void * param, CHATBool blocking); -void chatAddChannelBanA(CHAT chat, const char * channel, const char * ban); -void chatRemoveChannelBanA(CHAT chat, const char * channel, const char * ban); -void chatSetChannelGroupA(CHAT chat, const char * channel, const char * group); -int chatGetChannelNumUsersA(CHAT chat, const char * channel); -CHATBool chatInChannelA(CHAT chat, const char * channel); -void chatEnumUsersA(CHAT chat, const char * channel, chatEnumUsersCallback callback, void * param, CHATBool blocking); -void chatSendUserMessageA(CHAT chat, const char * user, const char * message, int type); -void chatGetUserInfoA(CHAT chat, const char * user, chatGetUserInfoCallback callback, void * param, CHATBool blocking); -void chatGetBasicUserInfoA(CHAT chat, const char * user, chatGetBasicUserInfoCallback callback, void * param, CHATBool blocking); -CHATBool chatGetBasicUserInfoNoWaitA(CHAT chat, const char * nick, const char ** user, const char ** address); -void chatGetChannelBasicUserInfoA(CHAT chat, const char * channel, chatGetChannelBasicUserInfoCallback callback, void * param, CHATBool blocking); -void chatInviteUserA(CHAT chat, const char * channel, const char * user); -void chatKickUserA(CHAT chat, const char * channel, const char * user, const char * reason); -void chatBanUserA(CHAT chat, const char * channel, const char * user); -void chatSetUserModeA(CHAT chat, const char * channel, const char * user, int mode); -void chatGetUserModeA(CHAT chat, const char * channel, const char * user, chatGetUserModeCallback callback, void * param, CHATBool blocking); -CHATBool chatGetUserModeNoWaitA(CHAT chat, const char * channel, const char * user, int * mode); -void chatSetGlobalKeysA(CHAT chat, int num, const char ** keys, const char ** values); -void chatGetGlobalKeysA(CHAT chat, const char * target, int num, const char ** keys, chatGetGlobalKeysCallback callback, void * param, CHATBool blocking); -void chatSetChannelKeysA(CHAT chat, const char * channel, const char * user, int num, const char ** keys, const char ** values); -void chatGetChannelKeysA(CHAT chat, const char * channel, const char * user, int num, const char ** keys, chatGetChannelKeysCallback callback, void * param, CHATBool blocking); -CHATBool chatGetBasicUserInfoNoWaitA(CHAT chat, const char * nick, const char ** user, const char ** address); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/gamespy/include/gs/chat/chatCallbacks.h b/subprojects/gamespy/include/gs/chat/chatCallbacks.h deleted file mode 100644 index f336925645..0000000000 --- a/subprojects/gamespy/include/gs/chat/chatCallbacks.h +++ /dev/null @@ -1,265 +0,0 @@ -#ifndef _CHATCALLBACKS_H_ -#define _CHATCALLBACKS_H_ - -#include "chat.h" -#include "chatMain.h" - -#define ciAddCallback(chat, type, callback, callbackParams, param, ID, channel) ciAddCallback_(chat, type, callback, callbackParams, param, ID, channel, sizeof(*callbackParams)) - -enum { - CALLBACK_RAW, - CALLBACK_DISCONNECTED, - CALLBACK_PRIVATE_MESSAGE, - CALLBACK_INVITED, - CALLBACK_CHANNEL_MESSAGE, - CALLBACK_KICKED, - CALLBACK_USER_JOINED, - CALLBACK_USER_PARTED, - CALLBACK_USER_CHANGED_NICK, - CALLBACK_TOPIC_CHANGED, - CALLBACK_CHANNEL_MODE_CHANGED, - CALLBACK_USER_MODE_CHANGED, - CALLBACK_USER_LIST_UPDATED, - CALLBACK_ENUM_CHANNELS_EACH, - CALLBACK_ENUM_CHANNELS_ALL, - CALLBACK_ENTER_CHANNEL, - CALLBACK_GET_CHANNEL_TOPIC, - CALLBACK_GET_CHANNEL_MODE, - CALLBACK_GET_CHANNEL_PASSWORD, - CALLBACK_ENUM_USERS, - CALLBACK_GET_USER_INFO, - CALLBACK_GET_BASIC_USER_INFO, - CALLBACK_GET_CHANNEL_BASIC_USER_INFO, - CALLBACK_GET_USER_MODE, - CALLBACK_ENUM_CHANNEL_BANS, - CALLBACK_NICK_ERROR, - CALLBACK_CHANGE_NICK, - CALLBACK_NEW_USER_LIST, - CALLBACK_BROADCAST_KEY_CHANGED, - CALLBACK_GET_GLOBAL_KEYS, - CALLBACK_GET_CHANNEL_KEYS, - CALLBACK_AUTHENTICATE_CDKEY, - CALLBACK_NUM -}; - -typedef struct ciCallbackRawParams { - char * raw; -} ciCallbackRawParams; - -typedef struct ciCallbackDisconnectedParams { - char * reason; -} ciCallbackDisconnectedParams; - -typedef struct ciCallbackPrivateMessageParams { - char * user; - char * message; - int type; -} ciCallbackPrivateMessageParams; - -typedef struct ciCallbackInvitedParams { - char * channel; - char * user; -} ciCallbackInvitedParams; - -typedef struct ciCallbackChannelMessageParams { - char * channel; - char * user; - char * message; - int type; -} ciCallbackChannelMessageParams; - -typedef struct ciCallbackKickedParams { - char * channel; - char * user; - char * reason; -} ciCallbackKickedParams; - -typedef struct ciCallbackUserJoinedParams { - char * channel; - char * user; - int mode; -} ciCallbackUserJoinedParams; - -typedef struct ciCallbackUserPartedParams { - char * channel; - char * user; - int why; - char * reason; - char * kicker; -} ciCallbackUserPartedParams; - -typedef struct ciCallbackUserChangedNickParams { - char * channel; - char * oldNick; - char * newNick; -} ciCallbackUserChangedNickParams; - -typedef struct ciCallbackTopicChangedParams { - char * channel; - char * topic; -} ciCallbackTopicChangedParams; - -typedef struct ciCallbackChannelModeChangedParams { - char * channel; - CHATChannelMode * mode; -} ciCallbackChannelModeChangedParams; - -typedef struct ciCallbackUserModeChangedParams { - char * channel; - char * user; - int mode; -} ciCallbackUserModeChangedParams; - -typedef struct ciCallbackUserListUpdatedParams { - char * channel; -} ciCallbackUserListUpdatedParams; - -typedef struct ciCallbackConnectParams { - CHATBool success; -} ciCallbackConnectParams; - -typedef struct ciCallbackEnumChannelsEachParams { - CHATBool success; - int index; - char * channel; - char * topic; - int numUsers; - void * param; -} ciCallbackEnumChannelsEachParams; - -typedef struct ciCallbackEnumChannelsAllParams { - CHATBool success; - int numChannels; - char ** channels; - char ** topics; - int * numUsers; -} ciCallbackEnumChannelsAllParams; - -typedef struct ciCallbackEnterChannelParams { - CHATBool success; - CHATEnterResult result; - char * channel; -} ciCallbackEnterChannelParams; - -typedef struct ciCallbackGetChannelTopicParams { - CHATBool success; - char * channel; - char * topic; -} ciCallbackGetChannelTopicParams; - -typedef struct ciCallbackGetChannelModeParams { - CHATBool success; - char * channel; - CHATChannelMode * mode; -} ciCallbackGetChannelModeParams; - -typedef struct ciCallbackGetChannelPasswordParams { - CHATBool success; - char * channel; - CHATBool enabled; - char * password; -} ciCallbackGetChannelPasswordParams; - -typedef struct ciCallbackEnumUsersParams { - CHATBool success; - char * channel; - int numUsers; - char ** users; - int * modes; -} ciCallbackEnumUsersParams; - -typedef struct ciCallbackGetUserInfoParams { - CHATBool success; - char * nick; - char * user; - char * name; - char * address; - int numChannels; - char ** channels; -} ciCallbackGetUserInfoParams; - -typedef struct ciCallbackGetBasicUserInfoParams { - CHATBool success; - char * nick; - char * user; - char * address; -} ciCallbackGetBasicUserInfoParams; - -typedef struct ciCallbackGetChannelBasicUserInfoParams { - CHATBool success; - char * channel; - char * nick; - char * user; - char * address; -} ciCallbackGetChannelBasicUserInfoParams; - -typedef struct ciCallbackGetUserModeParams { - CHATBool success; - char * channel; - char * user; - int mode; -} ciCallbackGetUserModeParams; - -typedef struct ciCallbackEnumChannelBansParams { - CHATBool success; - char * channel; - int numBans; - char ** bans; -} ciCallbackEnumChannelBansParams; - -typedef struct ciCallbackNickErrorParams { - int type; - char * nick; - int numSuggestedNicks; - char ** suggestedNicks; -} ciCallbackNickErrorParams; - -typedef struct ciCallbackChangeNickParams { - CHATBool success; - char * oldNick; - char * newNick; -} ciCallbackChangeNickParams; - -typedef struct ciCallbackNewUserListParams { - char * channel; - int numUsers; - char ** users; - int * modes; -} ciCallbackNewUserListParams; - -typedef struct ciCallbackBroadcastKeyChangedParams { - char * channel; - char * user; - char * key; - char * value; -} ciCallbackBroadcastKeyChangedParams; - -typedef struct ciCallbackGetGlobalKeysParams { - CHATBool success; - char * user; - int num; - char ** keys; - char ** values; -} ciCallbackGetGlobalKeysParams; - -typedef struct ciCallbackGetChannelKeysParams { - CHATBool success; - char * channel; - char * user; - int num; - char ** keys; - char ** values; -} ciCallbackGetChannelKeysParams; - -typedef struct ciCallbackAuthenticateCDKeyParams { - int result; - char * message; -} ciCallbackAuthenticateCDKeyParams; - -CHATBool ciInitCallbacks(ciConnection * connection); -void ciCleanupCallbacks(CHAT chat); -CHATBool ciAddCallback_(CHAT chat, int type, void * callback, void * callbackParams, void * param, int ID, const char * channel, size_t callbackParamsSize); -void ciCallCallbacks(CHAT chat, int ID); -CHATBool ciCheckCallbacksForID(CHAT chat, int ID); - -#endif diff --git a/subprojects/gamespy/include/gs/chat/chatChannel.h b/subprojects/gamespy/include/gs/chat/chatChannel.h deleted file mode 100644 index 4a8279317f..0000000000 --- a/subprojects/gamespy/include/gs/chat/chatChannel.h +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef _CHATCHANNEL_H_ -#define _CHATCHANNEL_H_ - -#include "chat.h" - -typedef void (* ciChannelListUsersCallback)(CHAT chat, const char * channel, int numUsers, const char ** users, int * modes, void * param); -typedef void (* ciUserEnumChannelsCallback)(CHAT chat, const char * user, const char * channel, void * param); - -CHATBool ciInitChannels(ciConnection * connection); -void ciCleanupChannels(CHAT chat); -void ciChannelEntering(CHAT chat, const char * channel); -CHATBool ciIsEnteringChannel(CHAT chat, const char * channel); -void ciChannelEntered(CHAT chat, const char * channel, chatChannelCallbacks * callbacks); -void ciChannelLeft(CHAT chat, const char * channel); -chatChannelCallbacks * ciGetChannelCallbacks(CHAT chat, const char * channel); -void ciChannelListUsers(CHAT chat, const char * channel, ciChannelListUsersCallback callback, void * param); -CHATBool ciInChannel(CHAT chat, const char * channel); -CHATBool ciGetChannelMode(CHAT chat, const char * channel, CHATChannelMode * mode); -void ciSetChannelMode(CHAT chat, const char * channel, CHATChannelMode * mode); -void ciSetChannelPassword(CHAT chat, const char * channel, const char * password); -const char * ciGetChannelPassword(CHAT chat, const char * channel); -void ciJoinCallbackCalled(CHAT chat, const char * channel); -CHATBool ciWasJoinCallbackCalled(CHAT chat, const char * channel); -void ciSetChannelTopic(CHAT chat, const char * channel, const char * topic); -const char * ciGetChannelTopic(CHAT chat, const char * channel); -int ciGetChannelNumUsers(CHAT chat, const char * channel); -void ciUserEnteredChannel(CHAT chat, const char * nick, const char * channel, int mode, const char * user, const char * address); -void ciUserLeftChannel(CHAT chat, const char * user, const char * channel); -void ciUserChangedNick(CHAT chat, const char * oldNick, const char * newNick); -void ciUserChangedMode(CHAT chat, const char * user, const char * channel, int mode, CHATBool enabled); -void ciUserEnumChannels(CHAT chat, const char * user, ciUserEnumChannelsCallback callback, void * param); -CHATBool ciUserInChannel(CHAT chat, const char * channel, const char * user); -int ciGetUserMode(CHAT chat, const char * channel, const char * user); -void ciEnumJoinedChannels(CHAT chat, chatEnumJoinedChannelsCallback callback, void * param); -void ciSetUserBasicInfo(CHAT chat, const char * nick, const char * user, const char * address); -void ciClearAllUsers(CHAT chat); -CHATBool ciGetUserBasicInfoA(CHAT chat, const char * nick, const char ** user, const char ** address); -CHATBool ciGetUserBasicInfoW(CHAT chat, const char * nick, const unsigned short ** user, const unsigned short ** address); - -#endif diff --git a/subprojects/gamespy/include/gs/chat/chatCrypt.h b/subprojects/gamespy/include/gs/chat/chatCrypt.h deleted file mode 100644 index b6c2ad1441..0000000000 --- a/subprojects/gamespy/include/gs/chat/chatCrypt.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef _CHATCRYPT_H_ -#define _CHATCRYPT_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct _gs_crypt_key { - unsigned char state[256]; - unsigned char x; - unsigned char y; -} gs_crypt_key; - -void gs_prepare_key(const unsigned char * key_data_ptr, int key_data_len, gs_crypt_key * key); -void gs_crypt(unsigned char * buffer_ptr, int buffer_len, gs_crypt_key * key); -void gs_xcode_buf(char * buf, int len, char * enckey); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/gamespy/include/gs/chat/chatHandlers.h b/subprojects/gamespy/include/gs/chat/chatHandlers.h deleted file mode 100644 index 6e28fd7516..0000000000 --- a/subprojects/gamespy/include/gs/chat/chatHandlers.h +++ /dev/null @@ -1,53 +0,0 @@ -#ifndef _CHATHANDLERS_H_ -#define _CHATHANDLERS_H_ - -#include "chat.h" -#include "chatSocket.h" -#include - -typedef char ** ciCommands; - -typedef struct ciServerMessageType { - char * command; - void (* handler)(CHAT chat, const ciServerMessage * message); -} ciServerMessageType; - -typedef struct ciServerMessageFilter { - int type; - gsi_time timeout; - char * name; - char * name2; - void * callback; - void * callback2; - void * param; - void * data; - int ID; - struct ciServerMessageFilter * pnext; -} ciServerMessageFilter; - -extern ciServerMessageType serverMessageTypes[]; -extern int numServerMessageTypes; - -void ciFilterThink(CHAT chat); -void ciCleanupFilters(CHAT chat); -int ciAddLISTFilter(CHAT chat, chatEnumChannelsCallbackEach callbackEach, chatEnumChannelsCallbackAll callbackAll, void * param); -int ciAddJOINFilter(CHAT chat, const char * channel, chatEnterChannelCallback callback, void * param, chatChannelCallbacks * callbacks, const char * password); -int ciAddTOPICFilter(CHAT chat, const char * channel, chatGetChannelTopicCallback callback, void * param); -int ciAddNAMESFilter(CHAT chat, const char * channel, chatEnumUsersCallback callback, void * param); -int ciAddWHOISFilter(CHAT chat, const char * user, chatGetUserInfoCallback callback, void * param); -int ciAddWHOFilter(CHAT chat, const char * user, chatGetBasicUserInfoCallback callback, void * param); -int ciAddCWHOFilter(CHAT chat, const char * channel, chatGetChannelBasicUserInfoCallback callback, void * param); -int ciAddCMODEFilter(CHAT chat, const char * channel, chatGetChannelModeCallback callback, void * param); -int ciAddUMODEFilter(CHAT chat, const char * user, const char * channel, chatGetUserModeCallback callback, void * param); -int ciAddBANFilter(CHAT chat, const char * user, const char * channel); -int ciAddGETBANFilter(CHAT chat, const char * channel, chatEnumChannelBansCallback callback, void * param); -int ciAddNICKFilter(CHAT chat, const char * oldNick, const char * newNick, chatChangeNickCallback callback, void * param); -int ciAddUNQUIETFilter(CHAT chat, const char * channel); -int ciAddGETKEYFilter(CHAT chat, const char * cookie, int num, const char ** keys, const char * channel, chatGetGlobalKeysCallback callback, void * param); -int ciAddGETCKEYFilter(CHAT chat, const char * cookie, int num, const char ** keys, CHATBool channel, CHATBool getBroadcastKeys, chatGetChannelKeysCallback callback, void * param); -int ciAddGETCHANKEYFilter(CHAT chat, const char * cookie, int num, const char ** keys, CHATBool getBroadcastKeys, chatGetChannelKeysCallback callback, void * param); -int ciAddCDKEYFilter(CHAT chat, chatAuthenticateCDKeyCallback callback, void * param); -int ciGetNextID(CHAT chat); -CHATBool ciCheckFiltersForID(CHAT chat, int ID); - -#endif diff --git a/subprojects/gamespy/include/gs/chat/chatMain.h b/subprojects/gamespy/include/gs/chat/chatMain.h deleted file mode 100644 index f6c55a3b8f..0000000000 --- a/subprojects/gamespy/include/gs/chat/chatMain.h +++ /dev/null @@ -1,97 +0,0 @@ -#ifndef _CHATMAIN_H_ -#define _CHATMAIN_H_ - -#include "chat.h" -#include "chatSocket.h" -#include "chatHandlers.h" -#include -#include -#include -#include -#include - -#define MAX_NICK 64 -#define MAX_CHAT_NICK 21 -#define MAX_NAME 128 -#define MAX_USER 128 -#define MAX_SERVER 128 -#define MAX_PARAM 512 -#define MAX_SECRETKEY 128 -#define MAX_EMAIL 64 -#define MAX_PROFILENICK 32 -#define MAX_UNIQUENICK 64 -#define MAX_PASSWORD 32 -#define MAX_AUTHTOKEN 256 -#define MAX_PARTNERCHALLENGE 256 - -#define strzcpy(dest, src, len) {strncpy(dest, src, (len)); (dest)[(len) - 1] = '\0';} -#define wcszcpy(dest, src, len) {wcsncpy(dest, src, (len)); (dest)[(len) - 1] = 0;} - -#define CONNECTION ciConnection * connection; \ - assert(chat != NULL); \ - connection = (ciConnection *)chat; - -#define CONNECTED if (!connection || !connection->connected) return; - -#if 0 -ciConnection * connection; -#endif - -#define VALID_NICK_CHARS "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\"#$%&'()*+,-./:;<=>?@[]^_`{|}~" - -typedef enum { - CINoLogin, - CIUniqueNickLogin, - CIProfileLogin, - CIPreAuthLogin -} CILoginType; - -typedef struct ciConnection { - CHATBool connected; - CHATBool connecting; - CHATBool disconnected; - chatNickErrorCallback nickErrorCallback; - chatFillInUserCallback fillInUserCallback; - chatConnectCallback connectCallback; - void * connectParam; - ciSocket chatSocket; - char nick[MAX_NICK]; - char name[MAX_NAME]; - char user[MAX_USER]; - int namespaceID; - char email[MAX_EMAIL]; - char profilenick[MAX_PROFILENICK]; - char uniquenick[MAX_UNIQUENICK]; - char password[MAX_PASSWORD]; - char authtoken[MAX_AUTHTOKEN]; - char partnerchallenge[MAX_PARTNERCHALLENGE]; -#ifdef GSI_UNICODE - unsigned short nickW[MAX_NICK]; - unsigned short userW[MAX_NAME]; -#endif - unsigned int IP; - char server[MAX_SERVER]; - int port; - chatGlobalCallbacks globalCallbacks; - HashTable channelTable; - DArray enteringChannelList; - ciServerMessageFilter * filterList; - ciServerMessageFilter * lastFilter; - int nextID; - DArray callbackList; - CHATBool quiet; - char secretKey[MAX_SECRETKEY]; - CILoginType loginType; - int userID; - int profileID; -} ciConnection; - -void ciSendNickAndUser(CHAT chat); -void ciSendNick(CHAT chat); -void ciSendUser(CHAT chat); -void ciSendLogin(CHAT chat); -void ciHandleDisconnect(CHAT chat, const char * reason); -int ciNickIsValid(const char * nick); -void ciNickError(CHAT chat, int type, const char * nick, int numSuggestedNicks, char ** suggestedNicks); - -#endif diff --git a/subprojects/gamespy/include/gs/chat/chatSocket.h b/subprojects/gamespy/include/gs/chat/chatSocket.h deleted file mode 100644 index 805606bdc7..0000000000 --- a/subprojects/gamespy/include/gs/chat/chatSocket.h +++ /dev/null @@ -1,57 +0,0 @@ -#ifndef _CHATSOCKET_H_ -#define _CHATSOCKET_H_ - -#include -#include "chat.h" -#include "chatCrypt.h" -#include - -typedef enum ciConnectState { - ciNotConnected, - ciConnected, - ciDisconnected -} ciConnectState; - -typedef struct ciBuffer { - char * buffer; - int length; - int size; -} ciBuffer; - -typedef struct ciServerMessage { - char * message; - char * server; - char * nick; - char * user; - char * host; - char * command; - char * middle; - char * param; - char ** params; - int numParams; -} ciServerMessage; - -typedef struct ciSocket { - SOCKET sock; - ciConnectState connectState; - char serverAddress[256]; - ciBuffer inputQueue; - ciBuffer outputQueue; - CHATBool secure; - gs_crypt_key inKey; - gs_crypt_key outKey; - ciServerMessage lastMessage; -#ifdef IRC_LOG - char filename[FILENAME_MAX]; -#endif -} ciSocket; - -CHATBool ciSocketInit(ciSocket * sock, const char * nick); -CHATBool ciSocketConnect(ciSocket * sock, const char * serverAddress, int port); -void ciSocketDisconnect(ciSocket * sock); -void ciSocketThink(ciSocket * sock); -CHATBool ciSocketSend(ciSocket * sock, const char * buffer); -CHATBool ciSocketSendf(ciSocket * sock, const char * format, ...); -ciServerMessage * ciSocketRecv(ciSocket * sock); - -#endif diff --git a/subprojects/gamespy/include/gs/core.h b/subprojects/gamespy/include/gs/core.h deleted file mode 100644 index c6d92c7dfc..0000000000 --- a/subprojects/gamespy/include/gs/core.h +++ /dev/null @@ -1,61 +0,0 @@ -#ifndef __CORE_H__ -#define __CORE_H__ - -#include "gs/nonport.h" - -#if defined(__cplusplus) -extern "C" { -#endif - -#define GSICORE_MAXTASKS 40 - -typedef enum { - GSTaskResult_None, - GSTaskResult_Finished, - GSTaskResult_Canceled, - GSTaskResult_TimedOut, - GSTaskResult_InProgress -} GSTaskResult; - -typedef void (* GSTaskExecuteFunc) (void * theTaskData); -typedef void (* GSTaskCallbackFunc)(void * theTaskData, GSTaskResult theResult); -typedef void (* GSTaskCancelFunc) (void * theTaskData); -typedef void (* GSTaskCleanupFunc) (void * theTaskData); -typedef GSTaskResult (* GSTaskThinkFunc)(void * theTaskData); - -typedef struct { - int mId; - gsi_time mTimeout; - gsi_time mStartTime; - gsi_i32 mIsStarted; - gsi_i32 mIsRunning; - gsi_i32 mIsCanceled; - gsi_i32 mIsCallbackPending; - void * mTaskData; - GSTaskExecuteFunc mExecuteFunc; - GSTaskCallbackFunc mCallbackFunc; - GSTaskCancelFunc mCancelFunc; - GSTaskCleanupFunc mCleanupFunc; - GSTaskThinkFunc mThinkFunc; -} GSTask; - -typedef struct { - gsi_i32 mIsInitialized; - gsi_i32 mIsShuttingDown; - GSICriticalSection mQueueCrit; - GSTask * mTaskArray[GSICORE_MAXTASKS]; -} GSCoreMgr; - -void gsCoreInitialize(); -void gsCoreThink(); -void gsCoreShutdown(); -gsi_i32 gsCoreIsShutdown(); -void gsiCoreExecuteTask(GSTask * theTask, gsi_time theTimeoutMs); -void gsiCoreCancelTask(GSTask * theTask); -GSTask * gsiCoreCreateTask(); - -#if defined(__cplusplus) -} -#endif - -#endif diff --git a/subprojects/gamespy/include/gs/darray.h b/subprojects/gamespy/include/gs/darray.h deleted file mode 100644 index e64ee0f977..0000000000 --- a/subprojects/gamespy/include/gs/darray.h +++ /dev/null @@ -1,45 +0,0 @@ -#ifndef _DARRAY_H -#define _DARRAY_H - -#ifdef __cplusplus -extern "C" { -#endif - -#define NOT_FOUND -1 - -typedef struct DArrayImplementation * DArray; -#if defined(WIN32) -typedef int (__cdecl * ArrayCompareFn)(const void * elem1, const void * elem2); -#else -typedef int (* ArrayCompareFn)(const void * elem1, const void * elem2); -#endif - -typedef void (* ArrayMapFn)(void * elem, void * clientData); -typedef int (* ArrayMapFn2)(void * elem, void * clientData); -typedef void (* ArrayElementFreeFn)(void * elem); - -DArray ArrayNew(int elemSize, int numElemsToAllocate, ArrayElementFreeFn elemFreeFn); -void ArrayFree(DArray array); -int ArrayLength(const DArray array); -void * ArrayNth(DArray array, int n); -void ArrayAppend(DArray array, const void * newElem); -void ArrayInsertAt(DArray array, const void * newElem, int n); -void ArrayInsertSorted(DArray array, const void * newElem, ArrayCompareFn comparator); -void ArrayDeleteAt(DArray array, int n); -void ArrayRemoveAt(DArray array, int n); -void ArrayReplaceAt(DArray array, const void * newElem, int n); -void ArraySort(DArray array, ArrayCompareFn comparator); -int ArraySearch(DArray array, const void * key, ArrayCompareFn comparator, int fromIndex, int isSorted); -void ArrayMap(DArray array, ArrayMapFn fn, void * clientData); -void ArrayMapBackwards(DArray array, ArrayMapFn fn, void * clientData); -void * ArrayMap2(DArray array, ArrayMapFn2 fn, void * clientData); -void * ArrayMapBackwards2(DArray array, ArrayMapFn2 fn, void * clientData); -void ArrayClear(DArray array); -void * ArrayGetDataPtr(DArray array); -void ArraySetDataPtr(DArray array, void * ptr, int count, int capacity); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/gamespy/include/gs/dummy_auth.h b/subprojects/gamespy/include/gs/dummy_auth.h deleted file mode 100644 index 43f8bd761d..0000000000 --- a/subprojects/gamespy/include/gs/dummy_auth.h +++ /dev/null @@ -1,112 +0,0 @@ -#ifndef __DUMMY_AUTH__ -#define __DUMMY_AUTH__ - -#ifdef __cplusplus -extern "C" { -#endif - -const char * dummyAuthTokenList[3][16] = -{ - { - "GMTJFwVBFnylv9RHBcskga9ScyTIFOX6l7nIEYzsM9vvD3ogqDtLSXAUE42PsRaSN4szxl4ECdF8lwOR4GiPo5jOQ==", - "GMTqWgm0IZSiKEdKNBpM1FyDZ14hMBCOwZurn+gNQOrLrx9tCHNrcbskwsXY+A4NjjtsnVSXftpuMDwlEk1J5JQyg==", - "GMTP+F8bsNh1OGDbSY8CCcwFm1mwrL1Huyw2WMRBt0qYCj//ccqXSu33O/uSFxXNU7sB1Wa7QlsHdS40nT0/cugtg==", - "GMTIZ18GG4052th0F1oVs8RxtspxDlgrFEDFOKxVfGai0oyldCzYL4rNP7uCYEsar6Vn5n6P0TffuEmWfm9IbcgeQ==", - "GMT3OLez06SA6zRmzapjotmN9UQ1aTraeo5UNdmsYCXr1/huzEoDei3sw3DJnDHH2LrdrsgAy8cyCgRLHLCwNf3PA==", - "GMTAvgv7o9Gfn0Fa3oNGaoOEZF92HJ9W96eb6iCsYoTfBKGqe93RrKcWkwzC+vzeBXh5wby48a9tmLHxZEhXDGLgw==", - "GMT1MtE+FzbcLkDeDxEqdq7yy9h8ZdbbO7GQTAul+7FE6pBdEWreDMR5zbX3zG5vrM5iY03qtKsC/EHkfSQoEcyTA==", - "GMT4iwTHfYIatL2REquOMkEE1TGqK8PZWTXJEqONOj3SeH9++iSESOHo6KldUhHV7UQ4+9s332r8wQGNTo8B/zCag==", - }, - { - "GMT2ahvgmSvAlx/39fw7+miAmlj401ciL5dzEif8qGRTnpgSVeIIFr9wqaWEAdqQNt4nALab9NbWu8sBRzxLElCCg==", - "GMTVFxiJ4WYKAXiKfKm9QhDqbtoN4e73emKBjpy6L1M4J6QycWY8PkxC7A687R/2yvt5/39WR3paNxWKBu/wB+q6A==", - "GMTPq8+Ll+nKp6ucoXNG/dJuO5FBg0PY3AyuFezMHk8iJyWxNGii49+sxGVPItEq6ky6WvuSKv2slJg29oFDUIaXA==", - "GMTpFyBHnRc9Z0hNCrk+xVb5AGTmxhudSOVMx/yabujFeJNNFX+e7/tUvqBqckIUj7bLKlWBjWsrca0EjbGt4SFQQ==", - "GMTe1XErpS6sG0Oe1jzjYZG5KPBEDeWMgCCZmvaW2q8Fl1kZAxTmLy8ntWz+MyAby3qExw3YulY4OC7FgFanHB4Mw==", - "GMT9Wc525AZi50g40R0/To3heJQ+SrZP5utiKIAKTuRHwz9acVlBjdmkmAgSraIQRviBePFxcgE6gcoG0wHES6AeA==", - "GMTyyvIZS1lBEbX0ncwPwpxZWHnntwlAqCwUJSn1GOvcRaNwXAcCnCd72tEgXRGoMLqqG8OEa5NF/G86cGD0RUVgQ==", - "GMTlPFGA5xxkEGkcEWoqqa4kBDwd6CQvhoBLj31WZdcvY5cK/TOgFGJ2l0g3srPnRct/4jFEeqDPJPhN3LzQo/Ikw==", - "GMTG39Buk/Itz74wTv7S7rHslGoc6d9fMq9ViC5WUJ2bS6NN9vZm+qhvleX+Lx4KteAe5zKEzDnVMh2P1Escdbh6w==", - "GMTrte/X32wUS8i61d4LrNlQQqOdpJNFRPnJI9c25D5maSkTE4IUUxY2qJA6qdcZebIKPxdnQ90h7JP4dMOSO6+Ng==", - "GMTJugE2RegC0BqwmT4Dvs2dD4vQGf9l7nu4BMKQxhDvSSzi4DuGVoeYYLyO9tiOz4zhKbouUKX3M8EDS4sqhdLdg==", - "GMTRsmxkRO/qkkiDh0AMBbzzXR4OWX4cyLAQ/7EU3uy9a81Ol/oxmZ2h7KRg2d8spZHfuMWADIZuMcqPrjDbeGPAw==", - "GMTwIIOg+N+snV0esui3Ih6G7PN5FQKFwQbzXnBhlIWb4QoJmmE/94BNtIubE6Vuz78gCi1Jzuh+/MevpISlyRu2Q==", - "GMTdpjpK5HKm55lGRK+itliHn5BnBP2CayoPtHcuP+7PLKQ2+QldJh0HMetgZigmprjMTt5sH8NVXJeJwfEHvKpbg==", - "GMTMDk2ycuuiVEZ9YD9ekDjrPn6QP1oM/6gCmI1ktKJHpA76sqDvlOIMt81uGAQsr9Gp0ggmYMZrjarGrRHPgiCdg==", - "GMTI1iuqanAJXPncNQSD2xE5Fw+nJGv1rstFQWn/luiOKWV5AJh/IEnBWnL9UY1qVnb3NcIoPxPn4HuUm9LOG6WPQ==" - }, - { - "GMTL9rcI+NX0vj87vngt5asxNITn0+6tt1FuqhY1yc89O7SSQpodbwvbdQqlfxo6vbyvWd7X/ZC7wjeXtE85DKDwg==", - "GMTasEuMX9KfWp3trU36L+OgIiYC42dJRz1S9HqjrlZp0oCwzS233REIn3t45JfAmzT++GgIIsDM6jQvJ4HV+te6Q==", - "GMTq9z6BvTpr8mN3usqbKchSbA3qzydZHroCaD2JIK27homllLSaN3sg/OyyiAzBy3VWBVIrQFxwil+0uWI64NahA==", - "GMTwq9HHB7KzJ3cGCn+YG9U/LYP2ilpudhOvC5l4w6DbONQcj+QOPQioQF7f91c/fAGDoF3W57S1iLA/RKgELIVaA==", - "GMTFJXUEACBB/V26ilWlH/j7Ev+E4sK92mVI5VFyfJcEOM7SSP4TyhsrU+avYafGT6tkugKFAi+V3OqiF2504klHw==", - "GMTEGxmZKfoxcva3nUhTgpssc+TKPSNFxmulnq4gPUwGuTXrdZMItHU5LY0Is0bfbIM74O7pWZmDQw8VB1s3RdUBg==", - "GMTppB7IJMNV9F6YLEjuROU/5k5+fRrmBmds1tusHz6bYTXX2SQsptX04Q4lOl6eBuLkhFh66G7o2sgO18K+qoOEw==", - "GMThjQTJLT92resmHENc0qpShI2nK6dUsRK+CY2ALpxgvoq4CQgLW1RSdt3G9pIFTTZtvBEVwO85N+AKUBQMZxqFQ==", - "GMTOHfoPULJffXhfrL1rvFf4SZnBuotxl9X5Qv3MRD6P558jxOzWtiQxXnSvmDh0Xv5q6nbQ2khJfpGLvPrXY2qaQ==", - "GMTg0YGzdnXvnpICYDv5YJBSdl3xocKQ9/A+4C/PqCgboO5x4/fv37HIOXA/SRncfSvQUXtrHiAioVCr/TtfzAeCg==", - "GMT+NqVnwQ9TWgaowRaBW0C6BZ0n1YldhU89R6AbpI4rzBVFvHA1xYIEUTbvEXcxQYe5bd3eemfnNtSuDhzA7pBZg==", - "GMTeGi55y+2qpDnotzOkBYvxGjne+6U3+FsxiXYuXeNnP0glhgIHXV8/J0u5n+ZMLUxBXD2yY62/kT2Gf2t8CnASQ==", - "GMThIzZNeeoypicpej4STqfrBl4NqvN8FZohfUpdEWyA7OR3ojs9j9/3ag5T0DtnUYCKLSAakJez7CQ2RQJeqVx0w==", - "GMTv3eG/8D2GMI62dptxuijSGaMvzpPNLDprVmjRfs2dMDKqe9SsojTz93aj3uEx378/m2zpI4+onXUqVJmZU4Efg==", - "GMTeEEhUmEEjCfGnvT0LCJRhyFoVrwqt7vIkBGtm1IwGDQ48yDpyGZYeGI1n0Imkq6bJwpOPPBiftn8OzU18AmxQQ==", - "GMTFAV6zw+s+p2SxOVvls0/tLxIQOlGCV3Px6aq4JPxoPUqo7eM1tq2LzprUo58eFJfvgWkEZK0p20rVSceqOwGBA==" - } -}; - -const char * dummyPartnerChallengeList[3][16] = -{ - { - "blntc6An", - "m4A??6iL", - ";A|t9Cfh", - "h[[diUa(", - "C-U0FIap", - "}E.btB[W", - "`JP:p2Q[", - "?TH-x&Y&", - }, - { - "-7),Y>A@", - "xc3;H6=8U", - "(`/jnAxM", - "J&+?5[Yd", - "@vsnUY -#include - -#ifndef GSI_UNICODE -#define ghttpGet ghttpGetA -#define ghttpGetEx ghttpGetExA -#define ghttpSave ghttpSaveA -#define ghttpSaveEx ghttpSaveExA -#define ghttpStream ghttpStreamA -#define ghttpStreamEx ghttpStreamExA -#define ghttpHead ghttpHeadA -#define ghttpHeadEx ghttpHeadExA -#define ghttpPost ghttpPostA -#define ghttpPostEx ghttpPostExA -#define ghttpPostAddString ghttpPostAddStringA -#define ghttpPostAddFileFromDisk ghttpPostAddFileFromDiskA -#define ghttpPostAddFileFromMemory ghttpPostAddFileFromMemoryA -#else -#define ghttpGet ghttpGetW -#define ghttpGetEx ghttpGetExW -#define ghttpSave ghttpSaveW -#define ghttpSaveEx ghttpSaveExW -#define ghttpStream ghttpStreamW -#define ghttpStreamEx ghttpStreamExW -#define ghttpHead ghttpHeadW -#define ghttpHeadEx ghttpHeadExW -#define ghttpPost ghttpPostW -#define ghttpPostEx ghttpPostExW -#define ghttpPostAddString ghttpPostAddStringW -#define ghttpPostAddFileFromDisk ghttpPostAddFileFromDiskW -#define ghttpPostAddFileFromMemory ghttpPostAddFileFromMemoryW -#endif - -#define ghttpGetFile(a, b, c, d) ghttpGet(a, b, c, d) -#define ghttpGetFileEx(a, b, c, d, e, f, g, h, i, j) ghttpGetEx(a, b, c, d, e, f, g, h, i, j) -#define ghttpSaveFile(a, b, c, d, e) ghttpSave(a, b, c, d, e) -#define ghttpSaveFileEx(a, b, c, d, e, f, g, h, i) ghttpSaveEx(a, b, c, d, e, f, g, h, i) -#define ghttpStreamFile(a, b, c, d, e) ghttpStream(a, b, c, d, e) -#define ghttpStreamFileEx(a, b, c, d, e, f, g, h) ghttpStreamEx(a, b, c, d, e, f, g, h) -#define ghttpHeadFile(a, b, c, d) ghttpHead(a, b, c, d) -#define ghttpHeadFileEx(a, b, c, d, e, f, g) ghttpHeadEx(a, b, c, d, e, f, g) -#define ghttpGetFileA(a, b, c, d) ghttpGetA(a, b, c, d) -#define IS_GHTTP_ERROR(x) (x < 0) - -typedef int GHTTPRequest; - -typedef enum { - GHTTPFalse, - GHTTPTrue -} GHTTPBool; - -#if (GSI_MAX_INTEGRAL_BITS >= 64) -typedef gsi_i64 GHTTPByteCount; -#else -typedef gsi_i32 GHTTPByteCount; -#endif - -typedef enum { - GHTTPHostLookup, - GHTTPConnecting, - GHTTPSecuringSession, - GHTTPSendingRequest, - GHTTPPosting, - GHTTPWaiting, - GHTTPReceivingStatus, - GHTTPReceivingHeaders, - GHTTPReceivingFile -} GHTTPState; - -typedef enum { - GHTTPSuccess, - GHTTPOutOfMemory, - GHTTPBufferOverflow, - GHTTPParseURLFailed, - GHTTPHostLookupFailed, - GHTTPSocketFailed, - GHTTPConnectFailed, - GHTTPBadResponse, - GHTTPRequestRejected, - GHTTPUnauthorized, - GHTTPForbidden, - GHTTPFileNotFound, - GHTTPServerError, - GHTTPFileWriteFailed, - GHTTPFileReadFailed, - GHTTPFileIncomplete, - GHTTPFileToBig, - GHTTPEncryptionError -} GHTTPResult; - -typedef enum { - GHTTPEncryptionEngine_None, - GHTTPEncryptionEngine_MatrixSsl -} GHTTPEncryptionEngine; - -#ifdef GHTTP_EXTENDEDERROR -typedef enum { - GHTTPErrorStart = -8, - GHTTPFailedToOpenFile, - GHTTPInvalidPost, - GHTTPInsufficientMemory, - GHTTPInvalidFileName, - GHTTPInvalidBufferSize, - GHTTPInvalidURL, - GHTTPUnspecifiedError = -1 -} GHTTPRequestError; -#else -typedef enum { - GHTTPErrorStart = -1, - GHTTPFailedToOpenFile = -1, - GHTTPInvalidPost = -1, - GHTTPInsufficientMemory = -1, - GHTTPInvalidFileName = -1, - GHTTPInvalidBufferSize = -1, - GHTTPInvalidURL = -1, - GHTTPUnspecifiedError = -1 -} GHTTPRequestError; -#endif - -typedef struct GHIPost * GHTTPPost; -typedef void (* ghttpProgressCallback)(GHTTPRequest request, GHTTPState state, const char * buffer, GHTTPByteCount bufferLen, GHTTPByteCount bytesReceived, GHTTPByteCount totalSize, void * param); -typedef GHTTPBool (* ghttpCompletedCallback)(GHTTPRequest request, GHTTPResult result, char * buffer, GHTTPByteCount bufferLen, void * param); - -void ghttpStartup(void); -void ghttpCleanup(void); -GHTTPRequest ghttpGet(const gsi_char * URL, GHTTPBool blocking, ghttpCompletedCallback completedCallback, void * param); -GHTTPRequest ghttpGetEx(const gsi_char * URL, const gsi_char * headers, char * buffer, int bufferSize, GHTTPPost post, GHTTPBool throttle, GHTTPBool blocking, ghttpProgressCallback progressCallback, ghttpCompletedCallback completedCallback, void * param); -GHTTPRequest ghttpSave(const gsi_char * URL, const gsi_char * filename, GHTTPBool blocking, ghttpCompletedCallback completedCallback, void * param); -GHTTPRequest ghttpSaveEx(const gsi_char * URL, const gsi_char * filename, const gsi_char * headers, GHTTPPost post, GHTTPBool throttle, GHTTPBool blocking, ghttpProgressCallback progressCallback, ghttpCompletedCallback completedCallback, void * param); -GHTTPRequest ghttpStream(const gsi_char * URL, GHTTPBool blocking, ghttpProgressCallback progressCallback, ghttpCompletedCallback completedCallback, void * param); -GHTTPRequest ghttpStreamEx(const gsi_char * URL, const gsi_char * headers, GHTTPPost post, GHTTPBool throttle, GHTTPBool blocking, ghttpProgressCallback progressCallback, ghttpCompletedCallback completedCallback, void * param); -GHTTPRequest ghttpHead(const gsi_char * URL, GHTTPBool blocking, ghttpCompletedCallback completedCallback, void * param); -GHTTPRequest ghttpHeadEx(const gsi_char * URL, const gsi_char * headers, GHTTPBool throttle, GHTTPBool blocking, ghttpProgressCallback progressCallback, ghttpCompletedCallback completedCallback, void * param); -GHTTPRequest ghttpPost(const gsi_char * URL, GHTTPPost post, GHTTPBool blocking, ghttpCompletedCallback completedCallback, void * param); -GHTTPRequest ghttpPostEx(const gsi_char * URL, const gsi_char * headers, GHTTPPost post, GHTTPBool throttle, GHTTPBool blocking, ghttpProgressCallback progressCallback, ghttpCompletedCallback completedCallback, void * param); -void ghttpThink(void); -GHTTPBool ghttpRequestThink(GHTTPRequest request); -void ghttpCancelRequest(GHTTPRequest request); -GHTTPState ghttpGetState(GHTTPRequest request); -const char * ghttpGetResponseStatus(GHTTPRequest request, int * statusCode); -const char * ghttpGetHeaders(GHTTPRequest request); -const char * ghttpGetURL(GHTTPRequest request); -GHTTPBool ghttpSetProxy(const char * server); -GHTTPBool ghttpSetRequestProxy(GHTTPRequest request, const char * server); -void ghttpSetThrottle(GHTTPRequest request, GHTTPBool throttle); -void ghttpThrottleSettings(int bufferSize, gsi_time timeDelay); -void ghttpSetMaxRecvTime(GHTTPRequest request, gsi_time maxRecvTime); -GHTTPPost ghttpNewPost(void); -void ghttpPostSetAutoFree(GHTTPPost post, GHTTPBool autoFree); -void ghttpFreePost(GHTTPPost post); -GHTTPBool ghttpPostAddString(GHTTPPost post, const gsi_char * name, const gsi_char * string); -GHTTPBool ghttpPostAddFileFromDisk(GHTTPPost post, const gsi_char * name, const gsi_char * filename, const gsi_char * reportFilename, const gsi_char * contentType); -GHTTPBool ghttpPostAddFileFromMemory(GHTTPPost post, const gsi_char * name, const char * buffer, int bufferLen, const gsi_char * reportFilename, const gsi_char * contentType); -typedef void (* ghttpPostCallback)(GHTTPRequest request, int bytesPosted, int totalBytes, int objectsPosted, int totalObjects, void * param); -void ghttpPostSetCallback(GHTTPPost post, ghttpPostCallback callback, void * param); -GHTTPBool ghttpSetRequestEncryptionEngine(GHTTPRequest request, GHTTPEncryptionEngine engine); -GHTTPRequest ghttpGetA(const char * URL, GHTTPBool blocking, ghttpCompletedCallback completedCallback, void * param); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/gamespy/include/gs/ghttp/ghttpASCII.h b/subprojects/gamespy/include/gs/ghttp/ghttpASCII.h deleted file mode 100644 index da398e4ff6..0000000000 --- a/subprojects/gamespy/include/gs/ghttp/ghttpASCII.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef _GHTTPASCII_H_ -#define _GHTTPASCII_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -GHTTPRequest ghttpGetA(const char * URL, GHTTPBool blocking, ghttpCompletedCallback completedCallback, void * param); -GHTTPRequest ghttpGetExA(const char * URL, const char * headers, char * buffer, int bufferSize, GHTTPPost post, GHTTPBool throttle, GHTTPBool blocking, ghttpProgressCallback progressCallback, ghttpCompletedCallback completedCallback, void * param); -GHTTPRequest ghttpSaveA(const char * URL, const char * filename, GHTTPBool blocking, ghttpCompletedCallback completedCallback, void * param); -GHTTPRequest ghttpSaveExA(const char * URL, const char * filename, const char * headers, GHTTPPost post, GHTTPBool throttle, GHTTPBool blocking, ghttpProgressCallback progressCallback, ghttpCompletedCallback completedCallback, void * param); -GHTTPRequest ghttpStreamA(const char * URL, GHTTPBool blocking, ghttpProgressCallback progressCallback, ghttpCompletedCallback completedCallback, void * param); -GHTTPRequest ghttpStreamExA(const char * URL, const char * headers, GHTTPPost post, GHTTPBool throttle, GHTTPBool blocking, ghttpProgressCallback progressCallback, ghttpCompletedCallback completedCallback, void * param); -GHTTPRequest ghttpHeadA(const char * URL, GHTTPBool blocking, ghttpCompletedCallback completedCallback, void * param); -GHTTPRequest ghttpHeadExA(const char * URL, const char * headers, GHTTPBool throttle, GHTTPBool blocking, ghttpProgressCallback progressCallback, ghttpCompletedCallback completedCallback, void * param); -GHTTPRequest ghttpPostA(const char * URL, GHTTPPost post, GHTTPBool blocking, ghttpCompletedCallback completedCallback, void * param); -GHTTPRequest ghttpPostExA(const char * URL, const char * headers, GHTTPPost post, GHTTPBool throttle, GHTTPBool blocking, ghttpProgressCallback progressCallback, ghttpCompletedCallback completedCallback, void * param); -const char * ghttpGetResponseStatus(GHTTPRequest request, int * statusCode); -const char * ghttpGetHeaders(GHTTPRequest request); -const char * ghttpGetURL(GHTTPRequest request); -GHTTPBool ghttpSetProxyA(const char * server); -GHTTPBool ghttpPostAddStringA(GHTTPPost post, const char * name, const char * string); -GHTTPBool ghttpPostAddFileFromDiskA(GHTTPPost post, const char * name, const char * filename, const char * reportFilename, const char * contentType); -GHTTPBool ghttpPostAddFileFromMemoryA(GHTTPPost post, const char * name, const char * buffer, int bufferLen, const char * reportFilename, const char * contentType); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/gamespy/include/gs/ghttp/ghttpBuffer.h b/subprojects/gamespy/include/gs/ghttp/ghttpBuffer.h deleted file mode 100644 index f7be698b10..0000000000 --- a/subprojects/gamespy/include/gs/ghttp/ghttpBuffer.h +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef _GHTTPBUFFER_H_ -#define _GHTTPBUFFER_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include "ghttpMain.h" -#include "ghttpEncryption.h" - -typedef struct GHIBuffer { - struct GHIConnection * connection; - char * data; - int size; - int len; - int pos; - int sizeIncrement; - GHTTPBool fixed; - GHTTPBool dontFree; - GHTTPBool encrypted; -} GHIBuffer; - -GHTTPBool ghiInitBuffer(struct GHIConnection * connection, GHIBuffer * buffer, int initialSize, int sizeIncrement); -GHTTPBool ghiInitFixedBuffer(struct GHIConnection * connection, GHIBuffer * buffer, char * userBuffer, int size); -void ghiFreeBuffer(GHIBuffer * buffer); -GHTTPBool ghiAppendDataToBuffer(GHIBuffer * buffer, const char * data, int dataLen); -GHTTPBool ghiAppendHeaderToBuffer(GHIBuffer * buffer, const char * name, const char * value); -GHTTPBool ghiAppendCharToBuffer(GHIBuffer * buffer, int c); -GHTTPBool ghiReadDataFromBuffer(GHIBuffer * bufferIn, char bufferOut[], int * len); -GHTTPBool ghiAppendIntToBuffer(GHIBuffer * buffer, int i); -void ghiResetBuffer(GHIBuffer * buffer); -GHTTPBool ghiSendBufferedData(struct GHIConnection * connection); -GHTTPBool ghiResizeBuffer(GHIBuffer * buffer, int sizeIncrement); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/gamespy/include/gs/ghttp/ghttpCallbacks.h b/subprojects/gamespy/include/gs/ghttp/ghttpCallbacks.h deleted file mode 100644 index f6b52e9faa..0000000000 --- a/subprojects/gamespy/include/gs/ghttp/ghttpCallbacks.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _GHTTPCALLBACKS_H_ -#define _GHTTPCALLBACKS_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include "ghttpMain.h" -#include "ghttpConnection.h" - -void ghiCallCompletedCallback(GHIConnection * connection); -void ghiCallProgressCallback(GHIConnection * connection, const char * buffer, GHTTPByteCount bufferLen); -void ghiCallPostCallback(GHIConnection * connection); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/gamespy/include/gs/ghttp/ghttpCommon.h b/subprojects/gamespy/include/gs/ghttp/ghttpCommon.h deleted file mode 100644 index 76aa3a830f..0000000000 --- a/subprojects/gamespy/include/gs/ghttp/ghttpCommon.h +++ /dev/null @@ -1,59 +0,0 @@ -#ifndef _GHTTPCOMMON_H_ -#define _GHTTPCOMMON_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include "ghttp.h" -#include "ghttpConnection.h" - -#define CRLF "\xD\xA" - -#define GHI_DEFAULT_PORT 80 -#define GHI_DEFAULT_SECURE_PORT 443 -#define GHI_DEFAULT_THROTTLE_BUFFER_SIZE 125 -#define GHI_DEFAULT_THROTTLE_TIME_DELAY 250 - -typedef enum { - GHIRecvData, - GHINoData, - GHIConnClosed, - GHIError -} GHIRecvResult; - -typedef enum { - GHITrySendError, - GHITrySendSent, - GHITrySendBuffered -} GHITrySendResult; - -extern char * ghiProxyAddress; -extern unsigned short ghiProxyPort; -extern int ghiThrottleBufferSize; -extern gsi_time ghiThrottleTimeDelay; - -void ghiCreateLock(void); -void ghiFreeLock(void); -void ghiLock(void); -void ghiUnlock(void); -#ifdef HTTP_LOG -void ghiLog(char * buffer, int len); -#else -#define ghiLog(b, c) -#endif -GHIRecvResult ghiDoReceive(GHIConnection * connection, char buffer[], int * bufferLen); -int ghiDoSend(GHIConnection * connection, const char * buffer, int len); -GHITrySendResult ghiTrySendThenBuffer(GHIConnection * connection, const char * buffer, int len); -GHTTPBool ghiSetProxy(const char * server); -GHTTPBool ghiSetRequestProxy(GHTTPRequest request, const char * server); -void ghiThrottleSettings(int bufferSize, gsi_time timeDelay); -#ifdef UNDER_CE -int isspace(int c); -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/gamespy/include/gs/ghttp/ghttpConnection.h b/subprojects/gamespy/include/gs/ghttp/ghttpConnection.h deleted file mode 100644 index 6171aa5c18..0000000000 --- a/subprojects/gamespy/include/gs/ghttp/ghttpConnection.h +++ /dev/null @@ -1,103 +0,0 @@ -#ifndef _GHTTPCONNECTION_H_ -#define _GHTTPCONNECTION_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include "ghttpMain.h" -#include "ghttpEncryption.h" -#include "ghttpBuffer.h" -#include "ghttpPost.h" - -#define SEND_BUFFER_INITIAL_SIZE (2 * 1024) -#define SEND_BUFFER_INCREMENT_SIZE (4 * 1024) -#define RECV_BUFFER_INITIAL_SIZE (2 * 1024) -#define RECV_BUFFER_INCREMENT_SIZE (2 * 1024) -#define GET_FILE_BUFFER_INITIAL_SIZE (2 * 1024) -#define GET_FILE_BUFFER_INCREMENT_SIZE (2 * 1024) -#define DECODE_BUFFER_INITIAL_SIZE (2 * 1024) -#define DECODE_BUFFER_INCREMENT_SIZE (1 * 1024) -#define CHUNK_HEADER_SIZE 10 - -typedef enum { - GHIGET, - GHISAVE, - GHISTREAM, - GHIHEAD, - GHIPOST -} GHIRequestType; - -typedef enum { - CRHeader, - CRChunk, - CRCRLF, - CRFooter -} CRState; - -typedef struct GHIConnection { - GHTTPBool inUse; - GHTTPRequest request; - int uniqueID; - GHIRequestType type; - GHTTPState state; - char * URL; - char * serverAddress; - unsigned int serverIP; - unsigned short serverPort; - char * requestPath; - char * sendHeaders; - FILE * saveFile; - GHTTPBool blocking; - GHTTPBool persistConnection; - GHTTPResult result; - ghttpProgressCallback progressCallback; - ghttpCompletedCallback completedCallback; - void * callbackParam; - SOCKET socket; - int socketError; - GHIBuffer sendBuffer; - GHIBuffer recvBuffer; - GHIBuffer decodeBuffer; - GHIBuffer getFileBuffer; - GHTTPBool userBufferSupplied; - int statusMajorVersion; - int statusMinorVersion; - int statusCode; - int statusStringIndex; - int headerStringIndex; - int tempDataIndex; - GHTTPBool completed; - GHTTPByteCount fileBytesReceived; - GHTTPByteCount totalSize; - char * redirectURL; - int redirectCount; - GHTTPBool chunkedTransfer; - char chunkHeader[CHUNK_HEADER_SIZE + 1]; - int chunkHeaderLen; - int chunkBytesLeft; - CRState chunkReadingState; - GHTTPBool processing; - GHTTPBool connectionClosed; - GHTTPBool throttle; - gsi_time lastThrottleRecv; - GHTTPPost post; - GHIPostingState postingState; - gsi_time maxRecvTime; - char * proxyOverrideServer; - unsigned short proxyOverridePort; - struct GHIEncryptor encryptor; -} GHIConnection; - -GHIConnection * ghiNewConnection(void); -GHTTPBool ghiFreeConnection(GHIConnection * connection); -GHIConnection * ghiRequestToConnection(GHTTPRequest request); -void ghiEnumConnections(GHTTPBool (* callback)(GHIConnection *)); -void ghiRedirectConnection(GHIConnection * connection); -void ghiCleanupConnections(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/gamespy/include/gs/ghttp/ghttpEncryption.h b/subprojects/gamespy/include/gs/ghttp/ghttpEncryption.h deleted file mode 100644 index 6ca75df741..0000000000 --- a/subprojects/gamespy/include/gs/ghttp/ghttpEncryption.h +++ /dev/null @@ -1,43 +0,0 @@ -#ifndef __GHTTPENCRYPTION_H__ -#define __GHTTPENCRYPTION_H__ - -struct GHIEncryptor; -struct GHIConnection; - -typedef enum { - GHIEncryptionMethod_None, - GHIEncryptionMethod_Encrypt, - GHIEncryptionMethod_Decrypt -} GHIEncryptionMethod; - -typedef enum { - GHIEncryptionResult_None, - GHIEncryptionResult_Success, - GHIEncryptionResult_BufferTooSmall, - GHIEncryptionResult_Error -} GHIEncryptionResult; - -typedef GHIEncryptionResult (* GHTTPEncryptorInitFunc) (struct GHIConnection * theConnection, struct GHIEncryptor * theEncryptor); -typedef GHIEncryptionResult (* GHTTPEncryptorCleanupFunc)(struct GHIConnection * theConnection, struct GHIEncryptor * theEncryptor); -typedef GHIEncryptionResult (* GHTTPEncryptorEncryptFunc)(struct GHIConnection * theConnection, struct GHIEncryptor * theEncryptor, const char * thePlainTextBuffer, int * thePlainTextLength, char * theEncryptedBuffer, int * theEncryptedLength); -typedef GHIEncryptionResult (* GHTTPEncryptorDecryptFunc)(struct GHIConnection * theConnection, struct GHIEncryptor * theEncryptor, const char * theEncryptedBuffer, int * theEncryptedLength, char * theDecryptedBuffer, int * theDecryptedLength); - -typedef struct GHIEncryptor { - void * mInterface; - GHTTPEncryptionEngine mEngine; - GHTTPBool mInitialized; - GHTTPBool mSessionEstablished; - GHTTPEncryptorInitFunc mInitFunc; - GHTTPEncryptorCleanupFunc mCleanupFunc; - GHTTPEncryptorEncryptFunc mEncryptFunc; - GHTTPEncryptorDecryptFunc mDecryptFunc; -} GHIEncryptor; - -#ifdef MATRIXSSL -GHIEncryptionResult ghttpEncryptorSslInitFunc(struct GHIConnection * connection, struct GHIEncryptor * theEncryptor); -GHIEncryptionResult ghttpEncryptorSslCleanupFunc(struct GHIConnection * connection, struct GHIEncryptor * theEncryptor); -GHIEncryptionResult ghttpEncryptorSslEncryptFunc(struct GHIConnection * connection, struct GHIEncryptor * theEncryptor, const char * thePlainTextBuffer, int * thePlainTextLength, char * theEncryptedBuffer, int * theEncryptedLength); -GHIEncryptionResult ghttpEncryptorSslDecryptFunc(struct GHIConnection * connection, struct GHIEncryptor * theEncryptor, const char * theEncryptedBuffer, int * theEncryptedLength, char * theDecryptedBuffer, int * theDecryptedLength); -#endif - -#endif diff --git a/subprojects/gamespy/include/gs/ghttp/ghttpMain.h b/subprojects/gamespy/include/gs/ghttp/ghttpMain.h deleted file mode 100644 index 5034750838..0000000000 --- a/subprojects/gamespy/include/gs/ghttp/ghttpMain.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef _GHTTPMAIN_H_ -#define _GHTTPMAIN_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include "ghttp.h" -#include -#include - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/gamespy/include/gs/ghttp/ghttpPost.h b/subprojects/gamespy/include/gs/ghttp/ghttpPost.h deleted file mode 100644 index 2452e53c13..0000000000 --- a/subprojects/gamespy/include/gs/ghttp/ghttpPost.h +++ /dev/null @@ -1,44 +0,0 @@ -#ifndef _GHTTPPOST_H_ -#define _GHTTPPOST_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include "ghttp.h" -#include "ghttpBuffer.h" -#include - -typedef enum { - GHIPostingError, - GHIPostingDone, - GHIPostingPosting -} GHIPostingResult; - -typedef struct GHIPostingState { - DArray states; - int index; - int bytesPosted; - int totalBytes; - ghttpPostCallback callback; - void * param; -} GHIPostingState; - -GHTTPPost ghiNewPost(void); -void ghiPostSetAutoFree(GHTTPPost post, GHTTPBool autoFree); -GHTTPBool ghiIsPostAutoFree(GHTTPPost post); -void ghiFreePost(GHTTPPost post); -GHTTPBool ghiPostAddString(GHTTPPost post, const char * name, const char * string); -GHTTPBool ghiPostAddFileFromDisk(GHTTPPost post, const char * name, const char * filename, const char * reportFilename, const char * contentType); -GHTTPBool ghiPostAddFileFromMemory(GHTTPPost post, const char * name, const char * buffer, int bufferLen, const char * reportFilename, const char * contentType); -void ghiPostSetCallback(GHTTPPost post, ghttpPostCallback callback, void * param); -const char * ghiPostGetContentType(struct GHIConnection * connection); -GHTTPBool ghiPostInitState(struct GHIConnection * connection); -void ghiPostCleanupState(struct GHIConnection * connection); -GHIPostingResult ghiPostDoPosting(struct GHIConnection * connection); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/gamespy/include/gs/ghttp/ghttpProcess.h b/subprojects/gamespy/include/gs/ghttp/ghttpProcess.h deleted file mode 100644 index f33797a0cd..0000000000 --- a/subprojects/gamespy/include/gs/ghttp/ghttpProcess.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef _GHTTPPROCESS_H_ -#define _GHTTPPROCESS_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include "ghttpMain.h" -#include "ghttpConnection.h" - -void ghiDoHostLookup(GHIConnection * connection); -void ghiDoConnecting(GHIConnection * connection); -void ghiDoSecuringSession(GHIConnection * connection); -void ghiDoSendingRequest(GHIConnection * connection); -void ghiDoPosting(GHIConnection * connection); -void ghiDoWaiting(GHIConnection * connection); -void ghiDoReceivingStatus(GHIConnection * connection); -void ghiDoReceivingHeaders(GHIConnection * connection); -void ghiDoReceivingFile(GHIConnection * connection); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/gamespy/include/gs/gp/gp.h b/subprojects/gamespy/include/gs/gp/gp.h deleted file mode 100644 index e6af04bba3..0000000000 --- a/subprojects/gamespy/include/gs/gp/gp.h +++ /dev/null @@ -1,518 +0,0 @@ -#ifndef _GP_H_ -#define _GP_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#define GP_NICK_LEN 31 -#define GP_UNIQUENICK_LEN 21 -#define GP_FIRSTNAME_LEN 31 -#define GP_LASTNAME_LEN 31 -#define GP_EMAIL_LEN 51 -#define GP_PASSWORD_LEN 31 -#define GP_PASSWORDENC_LEN ((((GP_PASSWORD_LEN + 2) * 4) / 3) + 1) -#define GP_HOMEPAGE_LEN 76 -#define GP_ZIPCODE_LEN 11 -#define GP_COUNTRYCODE_LEN 3 -#define GP_PLACE_LEN 128 -#define GP_AIMNAME_LEN 51 -#define GP_REASON_LEN 1025 -#define GP_STATUS_STRING_LEN 256 -#define GP_LOCATION_STRING_LEN 256 -#define GP_ERROR_STRING_LEN 256 -#define GP_AUTHTOKEN_LEN 256 -#define GP_PARTNERCHALLENGE_LEN 256 -#define GP_CDKEY_LEN 65 -#define GP_CDKEYENC_LEN ((((GP_CDKEY_LEN + 2) * 4) / 3) + 1) -#define GP_LOGIN_TICKET_LEN 25 -#define GP_XOR_SEED 0x79707367 -#ifndef GSI_UNICODE -#define gpConnect gpConnectA -#define gpConnectNewUser gpConnectNewUserA -#define gpConnectUniqueNick gpConnectUniqueNickA -#define gpConnectPreAuthenticated gpConnectPreAuthenticatedA -#define gpCheckUser gpCheckUserA -#define gpNewUser gpNewUserA -#define gpSuggestUniqueNick gpSuggestUniqueNickA -#define gpRegisterUniqueNick gpRegisterUniqueNickA -#define gpGetErrorString gpGetErrorStringA -#define gpNewProfile gpNewProfileA -#define gpProfileSearch gpProfileSearchA -#define gpSetInfos gpSetInfosA -#define gpSendBuddyRequest gpSendBuddyRequestA -#define gpSetStatus gpSetStatusA -#define gpSendBuddyMessage gpSendBuddyMessageA -#define gpIsValidEmail gpIsValidEmailA -#define gpGetUserNicks gpGetUserNicksA -#define gpSetInfoCacheFilename gpSetInfoCacheFilenameA -#define gpSendFiles gpSendFilesA -#define gpAcceptTransfer gpAcceptTransferA -#define gpRejectTransfer gpRejectTransferA -#define gpSetTransferDirectory gpSetTransferDirectoryA -#define gpGetFileName gpGetFileNameA -#define gpGetFilePath gpGetFilePathA -#define gpInvitePlayer gpInvitePlayerA -#else -#define gpConnect gpConnectW -#define gpConnectNewUser gpConnectNewUserW -#define gpConnectUniqueNick gpConnectUniqueNickW -#define gpConnectPreAuthenticated gpConnectPreAuthenticatedW -#define gpCheckUser gpCheckUserW -#define gpNewUser gpNewUserW -#define gpSuggestUniqueNick gpSuggestUniqueNickW -#define gpRegisterUniqueNick gpRegisterUniqueNickW -#define gpGetErrorString gpGetErrorStringW -#define gpNewProfile gpNewProfileW -#define gpProfileSearch gpProfileSearchW -#define gpSetInfos gpSetInfosW -#define gpSendBuddyRequest gpSendBuddyRequestW -#define gpSetStatus gpSetStatusW -#define gpSendBuddyMessage gpSendBuddyMessageW -#define gpIsValidEmail gpIsValidEmailW -#define gpGetUserNicks gpGetUserNicksW -#define gpSetInfoCacheFilename gpSetInfoCacheFilenameW -#define gpSendFiles gpSendFilesW -#define gpAcceptTransfer gpAcceptTransferW -#define gpRejectTransfer gpRejectTransferW -#define gpSetTransferDirectory gpSetTransferDirectoryW -#define gpGetFileName gpGetFileNameW -#define gpGetFilePath gpGetFilePathW -#define gpInvitePlayer gpInvitePlayerW -#endif - -typedef void * GPConnection; -typedef int GPProfile; -typedef int GPTransfer; - -typedef enum _GPEnum { - GP_ERROR = 0, - GP_RECV_BUDDY_REQUEST, - GP_RECV_BUDDY_STATUS, - GP_RECV_BUDDY_MESSAGE, - GP_RECV_GAME_INVITE, - GP_TRANSFER_CALLBACK, - GP_INFO_CACHING = 0x0100, - GP_SIMULATION, - GP_INFO_CACHING_BUDDY_ONLY, - GP_BLOCKING = 1, - GP_NON_BLOCKING = 0, - GP_FIREWALL = 1, - GP_NO_FIREWALL = 0, - GP_CHECK_CACHE = 1, - GP_DONT_CHECK_CACHE = 0, - GP_VALID = 1, - GP_INVALID = 0, - GP_FATAL = 1, - GP_NON_FATAL = 0, - GP_MALE = 0x0500, - GP_FEMALE, - GP_PAT, - GP_MORE = 0x0600, - GP_DONE, - GP_NICK = 0x0700, - GP_UNIQUENICK, - GP_EMAIL, - GP_PASSWORD, - GP_FIRSTNAME, - GP_LASTNAME, - GP_ICQUIN, - GP_HOMEPAGE, - GP_ZIPCODE, - GP_COUNTRYCODE, - GP_BIRTHDAY, - GP_SEX, - GP_CPUBRANDID, - GP_CPUSPEED, - GP_MEMORY, - GP_VIDEOCARD1STRING, - GP_VIDEOCARD1RAM, - GP_VIDEOCARD2STRING, - GP_VIDEOCARD2RAM, - GP_CONNECTIONID, - GP_CONNECTIONSPEED, - GP_HASNETWORK, - GP_OSSTRING, - GP_AIMNAME, - GP_PIC, - GP_OCCUPATIONID, - GP_INDUSTRYID, - GP_INCOMEID, - GP_MARRIEDID, - GP_CHILDCOUNT, - GP_INTERESTS1, - GP_REPLACE = 1, - GP_DONT_REPLACE = 0, - GP_CONNECTED = 1, - GP_NOT_CONNECTED = 0, - GP_MASK_NONE = 0x00000000, - GP_MASK_HOMEPAGE = 0x00000001, - GP_MASK_ZIPCODE = 0x00000002, - GP_MASK_COUNTRYCODE = 0x00000004, - GP_MASK_BIRTHDAY = 0x00000008, - GP_MASK_SEX = 0x00000010, - GP_MASK_EMAIL = 0x00000020, - GP_MASK_ALL = 0xFFFFFFFF, - GP_OFFLINE = 0, - GP_ONLINE = 1, - GP_PLAYING = 2, - GP_STAGING = 3, - GP_CHATTING = 4, - GP_AWAY = 5, - GP_INTEL = 1, - GP_AMD, - GP_CYRIX, - GP_MOTOROLA, - GP_ALPHA, - GP_MODEM = 1, - GP_ISDN, - GP_CABLEMODEM, - GP_DSL, - GP_SATELLITE, - GP_ETHERNET, - GP_WIRELESS, - GP_TRANSFER_SEND_REQUEST = 0x800, - GP_TRANSFER_ACCEPTED, - GP_TRANSFER_REJECTED, - GP_TRANSFER_NOT_ACCEPTING, - GP_TRANSFER_NO_CONNECTION, - GP_TRANSFER_DONE, - GP_TRANSFER_CANCELLED, - GP_TRANSFER_LOST_CONNECTION, - GP_TRANSFER_ERROR, - GP_TRANSFER_THROTTLE, - GP_FILE_BEGIN, - GP_FILE_PROGRESS, - GP_FILE_END, - GP_FILE_DIRECTORY, - GP_FILE_SKIP, - GP_FILE_FAILED, - GP_FILE_READ_ERROR = 0x900, - GP_FILE_WRITE_ERROR, - GP_FILE_DATA_ERROR, - GP_TRANSFER_SENDER = 0xA00, - GP_TRANSFER_RECEIVER -} GPEnum; - -typedef enum _GPResult { - GP_NO_ERROR, - GP_MEMORY_ERROR, - GP_PARAMETER_ERROR, - GP_NETWORK_ERROR, - GP_SERVER_ERROR -} GPResult; - -typedef enum _GPErrorCode { - GP_GENERAL = 0x0000, - GP_PARSE, - GP_NOT_LOGGED_IN, - GP_BAD_SESSKEY, - GP_DATABASE, - GP_NETWORK, - GP_FORCED_DISCONNECT, - GP_CONNECTION_CLOSED, - GP_LOGIN = 0x0100, - GP_LOGIN_TIMEOUT, - GP_LOGIN_BAD_NICK, - GP_LOGIN_BAD_EMAIL, - GP_LOGIN_BAD_PASSWORD, - GP_LOGIN_BAD_PROFILE, - GP_LOGIN_PROFILE_DELETED, - GP_LOGIN_CONNECTION_FAILED, - GP_LOGIN_SERVER_AUTH_FAILED, - GP_LOGIN_BAD_UNIQUENICK, - GP_LOGIN_BAD_PREAUTH, - GP_NEWUSER = 0x0200, - GP_NEWUSER_BAD_NICK, - GP_NEWUSER_BAD_PASSWORD, - GP_NEWUSER_UNIQUENICK_INVALID, - GP_NEWUSER_UNIQUENICK_INUSE, - GP_UPDATEUI = 0x0300, - GP_UPDATEUI_BAD_EMAIL, - GP_NEWPROFILE = 0x0400, - GP_NEWPROFILE_BAD_NICK, - GP_NEWPROFILE_BAD_OLD_NICK, - GP_UPDATEPRO = 0x0500, - GP_UPDATEPRO_BAD_NICK, - GP_ADDBUDDY = 0x0600, - GP_ADDBUDDY_BAD_FROM, - GP_ADDBUDDY_BAD_NEW, - GP_ADDBUDDY_ALREADY_BUDDY, - GP_AUTHADD = 0x0700, - GP_AUTHADD_BAD_FROM, - GP_AUTHADD_BAD_SIG, - GP_STATUS = 0x0800, - GP_BM = 0x0900, - GP_BM_NOT_BUDDY, - GP_GETPROFILE = 0x0A00, - GP_GETPROFILE_BAD_PROFILE, - GP_DELBUDDY = 0x0B00, - GP_DELBUDDY_NOT_BUDDY, - GP_DELPROFILE = 0x0C00, - GP_DELPROFILE_LAST_PROFILE, - GP_SEARCH = 0x0D00, - GP_SEARCH_CONNECTION_FAILED, - GP_CHECK = 0x0E00, - GP_CHECK_BAD_EMAIL, - GP_CHECK_BAD_NICK, - GP_CHECK_BAD_PASSWORD, - GP_REVOKE = 0x0F00, - GP_REVOKE_NOT_BUDDY, - GP_REGISTERUNIQUENICK = 0x1000, - GP_REGISTERUNIQUENICK_TAKEN, - GP_REGISTERUNIQUENICK_RESERVED, - GP_REGISTERUNIQUENICK_BAD_NAMESPACE -} GPErrorCode; - -typedef void (* GPCallback)(GPConnection * connection, void * arg, void * param); -typedef void (* gpSendFilesCallback)(GPConnection * connection, int index, const gsi_char ** path, const gsi_char ** name, void * param); - -typedef struct { - GPResult result; - GPErrorCode errorCode; - gsi_char * errorString; - GPEnum fatal; -} GPErrorArg; - -typedef struct { - GPResult result; - GPProfile profile; - gsi_char uniquenick[GP_UNIQUENICK_LEN]; -} GPConnectResponseArg; - -typedef struct { - GPResult result; - GPProfile profile; -} GPNewUserResponseArg; - -typedef struct { - GPResult result; - GPProfile profile; -} GPCheckResponseArg; - -typedef struct { - GPResult result; - int numSuggestedNicks; - gsi_char ** suggestedNicks; -} GPSuggestUniqueNickResponseArg; - -typedef struct { - GPResult result; -} GPRegisterUniqueNickResponseArg; - -typedef struct { - GPResult result; - GPProfile profile; -} GPNewProfileResponseArg; - -typedef struct { - GPProfile profile; - gsi_char nick[GP_NICK_LEN]; - gsi_char uniquenick[GP_UNIQUENICK_LEN]; - gsi_char firstname[GP_FIRSTNAME_LEN]; - gsi_char lastname[GP_LASTNAME_LEN]; - gsi_char email[GP_EMAIL_LEN]; -} GPProfileSearchMatch; - -typedef struct { - GPResult result; - int numMatches; - GPEnum more; - GPProfileSearchMatch * matches; -} GPProfileSearchResponseArg; - -typedef struct { - GPResult result; - GPProfile profile; - gsi_char nick[GP_NICK_LEN]; - gsi_char uniquenick[GP_UNIQUENICK_LEN]; - gsi_char email[GP_EMAIL_LEN]; - gsi_char firstname[GP_FIRSTNAME_LEN]; - gsi_char lastname[GP_LASTNAME_LEN]; - gsi_char homepage[GP_HOMEPAGE_LEN]; - int icquin; - gsi_char zipcode[GP_ZIPCODE_LEN]; - gsi_char countrycode[GP_COUNTRYCODE_LEN]; - float longitude; - float latitude; - gsi_char place[GP_PLACE_LEN]; - int birthday; - int birthmonth; - int birthyear; - GPEnum sex; - GPEnum publicmask; - gsi_char aimname[GP_AIMNAME_LEN]; - int pic; - int occupationid; - int industryid; - int incomeid; - int marriedid; - int childcount; - int interests1; - int ownership1; - int conntypeid; -} GPGetInfoResponseArg; - -typedef struct { - GPProfile profile; - unsigned int date; - gsi_char reason[GP_REASON_LEN]; -} GPRecvBuddyRequestArg; - -typedef struct { - GPProfile profile; - GPEnum status; - gsi_char statusString[GP_STATUS_STRING_LEN]; - gsi_char locationString[GP_LOCATION_STRING_LEN]; - unsigned int ip; - int port; -} GPBuddyStatus; - -typedef struct { - GPProfile profile; - unsigned int date; - int index; -} GPRecvBuddyStatusArg; - -typedef struct { - GPProfile profile; - unsigned int date; - gsi_char * message; -} GPRecvBuddyMessageArg; - -typedef struct { - GPTransfer transfer; - GPEnum type; - int index; - int num; - gsi_char * message; -} GPTransferCallbackArg; - -typedef struct { - GPResult result; - gsi_char email[GP_EMAIL_LEN]; - GPEnum isValid; -} GPIsValidEmailResponseArg; - -typedef struct { - GPResult result; - gsi_char email[GP_EMAIL_LEN]; - int numNicks; - gsi_char ** nicks; - gsi_char ** uniquenicks; -} GPGetUserNicksResponseArg; - -typedef struct { - GPProfile profile; - int productID; - gsi_char location[GP_LOCATION_STRING_LEN]; -} GPRecvGameInviteArg; - -typedef struct { - GPProfile profile; - gsi_char nick[GP_NICK_LEN]; - GPEnum status; - gsi_char statusString[GP_STATUS_STRING_LEN]; -} GPFindPlayerMatch; - -typedef struct { - GPResult result; - int productID; - int numMatches; - GPFindPlayerMatch * matches; -} GPFindPlayersResponseArg; - -typedef struct { - GPResult result; - int numProfiles; - GPProfileSearchMatch * profiles; -} GPGetReverseBuddiesResponseArg; - -extern char GPConnectionManagerHostname[64]; -extern char GPSearchManagerHostname[64]; - -GPResult gpInitialize(GPConnection * connection, int productID, int namespaceID); -void gpDestroy(GPConnection * connection); -GPResult gpEnable(GPConnection * connection, GPEnum state); -GPResult gpDisable(GPConnection * connection, GPEnum state); -GPResult gpProcess(GPConnection * connection); -GPResult gpSetCallback(GPConnection * connection, GPEnum func, GPCallback callback, void * param); -GPResult gpConnect(GPConnection * connection, const gsi_char nick[GP_NICK_LEN], const gsi_char email[GP_EMAIL_LEN], const gsi_char password[GP_PASSWORD_LEN], GPEnum firewall, GPEnum blocking, GPCallback callback, void * param); -GPResult gpConnectNewUser(GPConnection * connection, const gsi_char nick[GP_NICK_LEN], const gsi_char uniquenick[GP_UNIQUENICK_LEN], const gsi_char email[GP_EMAIL_LEN], const gsi_char password[GP_PASSWORD_LEN], const gsi_char cdkey[GP_CDKEY_LEN], GPEnum firewall, GPEnum blocking, GPCallback callback, void * param); -GPResult gpConnectUniqueNick(GPConnection * connection, const gsi_char uniquenick[GP_UNIQUENICK_LEN], const gsi_char password[GP_PASSWORD_LEN], GPEnum firewall, GPEnum blocking, GPCallback callback, void * param); -GPResult gpConnectPreAuthenticated(GPConnection * connection, const gsi_char authtoken[GP_AUTHTOKEN_LEN], const gsi_char partnerchallenge[GP_PARTNERCHALLENGE_LEN], GPEnum firewall, GPEnum blocking, GPCallback callback, void * param); -void gpDisconnect(GPConnection * connection); -GPResult gpIsConnected(GPConnection * connection, GPEnum * connected); -GPResult gpCheckUser(GPConnection * connection, const gsi_char nick[GP_NICK_LEN], const gsi_char email[GP_EMAIL_LEN], const gsi_char password[GP_PASSWORD_LEN], GPEnum blocking, GPCallback callback, void * param); -GPResult gpNewUser(GPConnection * connection, const gsi_char nick[GP_NICK_LEN], const gsi_char uniquenick[GP_UNIQUENICK_LEN], const gsi_char email[GP_EMAIL_LEN], const gsi_char password[GP_PASSWORD_LEN], const gsi_char cdkey[GP_CDKEY_LEN], GPEnum blocking, GPCallback callback, void * param); -GPResult gpSuggestUniqueNick(GPConnection * connection, const gsi_char desirednick[GP_UNIQUENICK_LEN], GPEnum blocking, GPCallback callback, void * param); -GPResult gpRegisterUniqueNick(GPConnection * connection, const gsi_char uniquenick[GP_UNIQUENICK_LEN], const gsi_char cdkey[GP_CDKEY_LEN], GPEnum blocking, GPCallback callback, void * param); -GPResult gpGetErrorCode(GPConnection * connection, GPErrorCode * errorCode); -GPResult gpGetErrorString(GPConnection * connection, gsi_char errorString[GP_ERROR_STRING_LEN]); -GPResult gpNewProfile(GPConnection * connection, const gsi_char nick[GP_NICK_LEN], GPEnum replace, GPEnum blocking, GPCallback callback, void * param); -GPResult gpDeleteProfile(GPConnection * connection); -GPResult gpProfileFromID(GPConnection * connection, GPProfile * profile, int id); -GPResult gpIDFromProfile(GPConnection * connection, GPProfile profile, int * id); -GPResult gpUserIDFromProfile(GPConnection * connection, GPProfile profile, int * userid); -GPResult gpProfileSearch(GPConnection * connection, const gsi_char nick[GP_NICK_LEN], const gsi_char uniquenick[GP_UNIQUENICK_LEN], const gsi_char email[GP_EMAIL_LEN], const gsi_char firstname[GP_FIRSTNAME_LEN], const gsi_char lastname[GP_LASTNAME_LEN], int icquin, GPEnum blocking, GPCallback callback, void * param); -GPResult gpGetInfo(GPConnection * connection, GPProfile profile, GPEnum checkCache, GPEnum blocking, GPCallback callback, void * param); -GPResult gpSetInfoi(GPConnection * connection, GPEnum info, int value); -GPResult gpSetInfos(GPConnection * connection, GPEnum info, const gsi_char * value); -GPResult gpSetInfod(GPConnection * connection, GPEnum info, int day, int month, int year); -GPResult gpSetInfoMask(GPConnection * connection, GPEnum mask); -GPResult gpSendBuddyRequest(GPConnection * connection, GPProfile profile, const gsi_char reason[GP_REASON_LEN]); -GPResult gpAuthBuddyRequest(GPConnection * connection, GPProfile profile); -GPResult gpDenyBuddyRequest(GPConnection * connection, GPProfile profile); -GPResult gpDeleteBuddy(GPConnection * connection, GPProfile profile); -GPResult gpGetNumBuddies(GPConnection * connection, int * numBuddies); -GPResult gpGetBuddyStatus(GPConnection * connection, int index, GPBuddyStatus * status); -GPResult gpGetBuddyIndex(GPConnection * connection, GPProfile profile, int * index); -int gpIsBuddy(GPConnection * connection, GPProfile profile); -GPResult gpSetStatus(GPConnection * connection, GPEnum status, const gsi_char statusString[GP_STATUS_STRING_LEN], const gsi_char locationString[GP_LOCATION_STRING_LEN]); -GPResult gpSendBuddyMessage(GPConnection * connection, GPProfile profile, const gsi_char * message); -GPResult gpIsValidEmail(GPConnection * connection, const gsi_char email[GP_EMAIL_LEN], GPEnum blocking, GPCallback callback, void * param); -GPResult gpGetUserNicks(GPConnection * connection, const gsi_char email[GP_EMAIL_LEN], const gsi_char password[GP_PASSWORD_LEN], GPEnum blocking, GPCallback callback, void * param); -GPResult gpSetInvitableGames(GPConnection * connection, int numProductIDs, const int * productIDs); -GPResult gpFindPlayers(GPConnection * connection, int productID, GPEnum blocking, GPCallback callback, void * param); -GPResult gpInvitePlayer(GPConnection * connection, GPProfile profile, int productID, const gsi_char location[GP_LOCATION_STRING_LEN]); -GPResult gpGetReverseBuddies(GPConnection * connection, GPEnum blocking, GPCallback callback, void * param); -GPResult gpRevokeBuddyAuthorization(GPConnection * connection, GPProfile profile); -GPResult gpGetLoginTicket(GPConnection * connection, char loginTicket[GP_LOGIN_TICKET_LEN]); -#ifndef NOFILE -void gpSetInfoCacheFilename(const gsi_char * filename); -GPResult gpSendFiles(GPConnection * connection, GPTransfer * transfer, GPProfile profile, const gsi_char * message, gpSendFilesCallback callback, void * param); -GPResult gpAcceptTransfer(GPConnection * connection, GPTransfer transfer, const gsi_char * message); -GPResult gpRejectTransfer(GPConnection * connection, GPTransfer transfer, const gsi_char * message); -GPResult gpFreeTransfer(GPConnection * connection, GPTransfer transfer); -GPResult gpSetTransferData(GPConnection * connection, GPTransfer transfer, void * userData); -void * gpGetTransferData(GPConnection * connection, GPTransfer transfer); -GPResult gpSetTransferDirectory(GPConnection * connection, GPTransfer transfer, const gsi_char * directory); -GPResult gpSetTransferThrottle(GPConnection * connection, GPTransfer transfer, int throttle); -GPResult gpGetTransferThrottle(GPConnection * connection, GPTransfer transfer, int * throttle); -GPResult gpGetTransferProfile(GPConnection * connection, GPTransfer transfer, GPProfile * profile); -GPResult gpGetTransferSide(GPConnection * connection, GPTransfer transfer, GPEnum * side); -GPResult gpGetTransferSize(GPConnection * connection, GPTransfer transfer, int * size); -GPResult gpGetTransferProgress(GPConnection * connection, GPTransfer transfer, int * progress); -GPResult gpGetNumFiles(GPConnection * connection, GPTransfer transfer, int * num); -GPResult gpGetCurrentFile(GPConnection * connection, GPTransfer transfer, int * index); -GPResult gpSkipFile(GPConnection * connection, GPTransfer transfer, int index); -GPResult gpGetFileName(GPConnection * connection, GPTransfer transfer, int index, gsi_char ** name); -GPResult gpGetFilePath(GPConnection * connection, GPTransfer transfer, int index, gsi_char ** path); -GPResult gpGetFileSize(GPConnection * connection, GPTransfer transfer, int index, int * size); -GPResult gpGetFileProgress(GPConnection * connection, GPTransfer transfer, int index, int * progress); -GPResult gpGetFileModificationTime(GPConnection * connection, GPTransfer transfer, int index, gsi_time * modTime); -GPResult gpGetNumTransfers(GPConnection * connection, int * num); -GPResult gpGetTransfer(GPConnection * connection, int index, GPTransfer * transfer); -#endif - -#ifdef _DEBUG -void gpProfilesReport(GPConnection * connection, void (* report)(const char * output)); -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/gamespy/include/gs/gp/gpi.h b/subprojects/gamespy/include/gs/gp/gpi.h deleted file mode 100644 index 2cbee980e6..0000000000 --- a/subprojects/gamespy/include/gs/gp/gpi.h +++ /dev/null @@ -1,98 +0,0 @@ -#ifndef _GPI_H_ -#define _GPI_H_ - -#include -#include -#include -#include -#include -#include -#include -#include "gp.h" - -#define DEBUG_CRAZY - -typedef enum _GPIBool { - GPIFalse, - GPITrue -} GPIBool; - -#include "gpiUtility.h" -#include "gpiCallback.h" -#include "gpiOperation.h" -#include "gpiConnect.h" -#include "gpiBuffer.h" -#include "gpiInfo.h" -#include "gpiProfile.h" -#include "gpiPeer.h" -#include "gpiSearch.h" -#include "gpiBuddy.h" -#include "gpiTransfer.h" -#include "gpiUnique.h" - -typedef struct { - char errorString[GP_ERROR_STRING_LEN]; - GPIBool infoCaching; - GPIBool infoCachingBuddyOnly; - GPIBool simulation; - GPIBool firewall; - char nick[GP_NICK_LEN]; - char uniquenick[GP_UNIQUENICK_LEN]; - char email[GP_EMAIL_LEN]; - char password[GP_PASSWORD_LEN]; - int sessKey; - int userid; - int profileid; - GPICallback callbacks[GPI_NUM_CALLBACKS]; - SOCKET cmSocket; - int connectState; - GPIBuffer socketBuffer; - char * inputBuffer; - int inputBufferSize; - GPIBuffer outputBuffer; - SOCKET peerSocket; - int peerPort; - int nextOperationID; - int numSearches; - GPEnum lastStatus; - char lastStatusString[GP_STATUS_STRING_LEN]; - char lastLocationString[GP_LOCATION_STRING_LEN]; - GPErrorCode errorCode; - GPIBool fatalError; - FILE * diskCache; - GPIOperation * operationList; - GPIProfileList profileList; - GPIPeer * peerList; - GPICallbackData * callbackList; - GPICallbackData * lastCallback; - GPIBuffer updateproBuffer; - GPIBuffer updateuiBuffer; - char * debugBuffer; - DArray transfers; - unsigned int nextTransferID; - int productID; - int namespaceID; - char loginTicket[GP_LOGIN_TICKET_LEN]; -#ifdef GSI_UNICODE - unsigned short errorString_W[GP_ERROR_STRING_LEN]; - unsigned short nick_W[GP_NICK_LEN]; - unsigned short uniquenick_W[GP_UNIQUENICK_LEN]; - unsigned short email_W[GP_EMAIL_LEN]; - unsigned short password_W[GP_PASSWORD_LEN]; - unsigned short lastStatusString_W[GP_STATUS_STRING_LEN]; - unsigned short lastLocationString_W[GP_LOCATION_STRING_LEN]; -#endif -} GPIConnection; - -GPResult gpiInitialize(GPConnection * connection, int productID, int namespaceID); -void gpiDestroy(GPConnection * connection); -GPResult gpiReset(GPConnection * connection); -GPResult gpiProcessConnectionManager(GPConnection * connection); -GPResult gpiProcess(GPConnection * connection, int blockingOperationID); -GPResult gpiEnable(GPConnection * connection, GPEnum state); -GPResult gpiDisable(GPConnection * connection, GPEnum state); -#ifdef _DEBUG -void gpiReport(GPConnection * connection, void (* report)(const char * output)); -#endif - -#endif diff --git a/subprojects/gamespy/include/gs/gp/gpiBuddy.h b/subprojects/gamespy/include/gs/gp/gpiBuddy.h deleted file mode 100644 index a6227297a0..0000000000 --- a/subprojects/gamespy/include/gs/gp/gpiBuddy.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef _GPIBUDDY_H_ -#define _GPIBUDDY_H_ - -#include "gpi.h" - -#define GPI_BM_MESSAGE 1 -#define GPI_BM_REQUEST 2 -#define GPI_BM_REPLY 3 -#define GPI_BM_STATUS 100 -#define GPI_BM_INVITE 101 -#define GPI_BM_PING 102 -#define GPI_BM_PONG 103 -#define GPI_BM_FILE_SEND_REQUEST 200 -#define GPI_BM_FILE_SEND_REPLY 201 -#define GPI_BM_FILE_BEGIN 202 -#define GPI_BM_FILE_END 203 -#define GPI_BM_FILE_DATA 204 -#define GPI_BM_FILE_SKIP 205 -#define GPI_BM_FILE_TRANSFER_THROTTLE 206 -#define GPI_BM_FILE_TRANSFER_CANCEL 207 -#define GPI_BM_FILE_TRANSFER_KEEPALIVE 208 - -GPResult gpiProcessRecvBuddyMessage(GPConnection * connection, const char * input); -GPResult gpiSendServerBuddyMessage(GPConnection * connection, int profileid, int type, const char * message); -GPResult gpiSendBuddyMessage(GPConnection * connection, int profileid, int type, const char * message); -GPResult gpiAuthBuddyRequest(GPConnection * connection, GPProfile profile); -GPResult gpiDeleteBuddy(GPConnection * connection, GPProfile profile); - -#endif diff --git a/subprojects/gamespy/include/gs/gp/gpiBuffer.h b/subprojects/gamespy/include/gs/gp/gpiBuffer.h deleted file mode 100644 index 982e0c8891..0000000000 --- a/subprojects/gamespy/include/gs/gp/gpiBuffer.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef _GPIBUFFER_H_ -#define _GPIBUFFER_H_ - -#include "gpi.h" - -typedef struct { - char * buffer; - int size; - int len; - int pos; -} GPIBuffer; - -typedef struct GPIPeer_s * GPIPeer_st; - -GPResult gpiAppendCharToBuffer(GPConnection * connection, GPIBuffer * outputBuffer, char c); -GPResult gpiAppendStringToBufferLen(GPConnection * connection, GPIBuffer * outputBuffer, const char * string, int stringLen); -GPResult gpiAppendStringToBuffer(GPConnection * connection, GPIBuffer * outputBuffer, const char * buffer); -GPResult gpiAppendIntToBuffer(GPConnection * connection, GPIBuffer * outputBuffer, int num); -GPResult gpiAppendUIntToBuffer(GPConnection * connection, GPIBuffer * outputBuffer, unsigned int num); -GPResult gpiSendOrBufferChar(GPConnection * connection, GPIPeer_st peer, char c); -GPResult gpiSendOrBufferStringLen(GPConnection * connection, GPIPeer_st peer, const char * string, int stringLen); -GPResult gpiSendOrBufferString(GPConnection * connection, GPIPeer_st peer, const char * string); -GPResult gpiSendOrBufferInt(GPConnection * connection, GPIPeer_st peer, int num); -GPResult gpiSendOrBufferUInt(GPConnection * connection, GPIPeer_st peer, unsigned int num); -GPResult gpiSendFromBuffer(GPConnection * connection, SOCKET sock, GPIBuffer * outputBuffer, GPIBool * connClosed, GPIBool clipSentData, char id[3]); -GPResult gpiRecvToBuffer(GPConnection * connection, SOCKET sock, GPIBuffer * inputBuffer, int * bytesRead, GPIBool * connClosed, char id[3]); -GPResult gpiReadMessageFromBuffer(GPConnection * connection, GPIBuffer * inputBuffer, char ** message, int * type, int * len); -GPResult gpiClipBufferToPosition(GPConnection * connection, GPIBuffer * buffer); - -#endif diff --git a/subprojects/gamespy/include/gs/gp/gpiCallback.h b/subprojects/gamespy/include/gs/gp/gpiCallback.h deleted file mode 100644 index bb1eaa2c40..0000000000 --- a/subprojects/gamespy/include/gs/gp/gpiCallback.h +++ /dev/null @@ -1,43 +0,0 @@ -#ifndef _GPICALLBACK_H_ -#define _GPICALLBACK_H_ - -#include "gpi.h" - -#define GPI_ERROR 0 -#define GPI_RECV_BUDDY_REQUEST 1 -#define GPI_RECV_BUDDY_STATUS 2 -#define GPI_RECV_BUDDY_MESSAGE 3 -#define GPI_RECV_GAME_INVITE 4 -#define GPI_TRANSFER_CALLBACK 5 -#define GPI_NUM_CALLBACKS 6 -#define GPI_ADD_NORMAL 0 -#define GPI_ADD_ERROR 1 -#define GPI_ADD_MESSAGE 2 -#define GPI_ADD_NICKS 3 -#define GPI_ADD_PMATCH 4 -#define GPI_ADD_STATUS 5 -#define GPI_ADD_BUDDDYREQUEST 6 -#define GPI_ADD_TRANSFER_CALLBACK 7 -#define GPI_ADD_REVERSE_BUDDIES 8 -#define GPI_ADD_SUGGESTED_UNIQUE 9 - -typedef struct GPIOperation_s * GPIOperation_st; - -typedef struct { - GPCallback callback; - void * param; -} GPICallback; - -typedef struct GPICallbackData { - GPICallback callback; - void * arg; - int type; - int operationID; - struct GPICallbackData * pnext; -} GPICallbackData; - -void gpiCallErrorCallback(GPConnection * connection, GPResult result, GPEnum fatal); -GPResult gpiAddCallback(GPConnection * connection, GPICallback callback, void * arg, const struct GPIOperation_s * operation, int type); -GPResult gpiProcessCallbacks(GPConnection * connection, int blockingOperationID); - -#endif diff --git a/subprojects/gamespy/include/gs/gp/gpiConnect.h b/subprojects/gamespy/include/gs/gp/gpiConnect.h deleted file mode 100644 index df0368d968..0000000000 --- a/subprojects/gamespy/include/gs/gp/gpiConnect.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef _GPICONNECT_H_ -#define _GPICONNECT_H_ - -#include "gpi.h" - -#define GPI_NOT_CONNECTED 0 -#define GPI_CONNECTING 1 -#define GPI_NEGOTIATING 2 -#define GPI_CONNECTED 3 -#define GPI_DISCONNECTED 4 - -GPResult gpiConnect(GPConnection * connection, const char nick[GP_NICK_LEN], const char uniquenick[GP_UNIQUENICK_LEN], const char email[GP_EMAIL_LEN], const char password[GP_PASSWORD_LEN], const char authtoken[GP_AUTHTOKEN_LEN], const char partnerchallenge[GP_PARTNERCHALLENGE_LEN], const char cdkey[GP_CDKEY_LEN], GPEnum firewall, GPIBool newuser, GPEnum blocking, GPCallback callback, void * param); -void gpiDisconnect(GPConnection * connection, GPIBool tellServer); -GPResult gpiProcessConnect(GPConnection * connection, GPIOperation * operation, const char * input); -GPResult gpiCheckConnect(GPConnection * connection); - -#endif diff --git a/subprojects/gamespy/include/gs/gp/gpiInfo.h b/subprojects/gamespy/include/gs/gp/gpiInfo.h deleted file mode 100644 index 3e660c9ce2..0000000000 --- a/subprojects/gamespy/include/gs/gp/gpiInfo.h +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef _GPIINFO_H_ -#define _GPIINFO_H_ - -#include "gpi.h" - -typedef struct GPIProfile * pGPIProfile; - -typedef struct { - char * nick; - char * uniquenick; - char * email; - char * firstname; - char * lastname; - char * homepage; - int icquin; - char zipcode[GP_ZIPCODE_LEN]; - char countrycode[GP_COUNTRYCODE_LEN]; - float longitude; - float latitude; - char place[GP_PLACE_LEN]; - int birthday; - int birthmonth; - int birthyear; - GPEnum sex; - int publicmask; - char * aimname; - int pic; - int occupationid; - int industryid; - int incomeid; - int marriedid; - int childcount; - int interests1; - int ownership1; - int conntypeid; -} GPIInfoCache; - -GPResult gpiSetInfoi(GPConnection * connection, GPEnum info, int value); -GPResult gpiSetInfos(GPConnection * connection, GPEnum info, const char * value); -GPResult gpiSetInfod(GPConnection * connection, GPEnum info, int day, int month, int year); -GPResult gpiSetInfoMask(GPConnection * connection, GPEnum mask); -void gpiInfoCacheToArg(const GPIInfoCache * cache, GPGetInfoResponseArg * arg); -GPResult gpiGetInfo(GPConnection * connection, GPProfile profile, GPEnum checkCache, GPEnum blocking, GPCallback callback, void * param); -GPResult gpiProcessGetInfo(GPConnection * connection, GPIOperation * operation, const char * input); -GPResult gpiSendGetInfo(GPConnection * connection, int profileid, int operationid); -GPResult gpiAddLocalInfo(GPConnection * connection, GPIBuffer * buffer); -GPIBool gpiSetInfoCache(GPConnection * connection, pGPIProfile profile, const GPIInfoCache * cache); -void gpiFreeInfoCache(pGPIProfile profile); - -#endif diff --git a/subprojects/gamespy/include/gs/gp/gpiOperation.h b/subprojects/gamespy/include/gs/gp/gpiOperation.h deleted file mode 100644 index de0d89ccf5..0000000000 --- a/subprojects/gamespy/include/gs/gp/gpiOperation.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef _GPIOPERATION_H_ -#define _GPIOPERATION_H_ - -#include "gpi.h" - -#define GPI_CONNECT 0 -#define GPI_NEW_PROFILE 1 -#define GPI_GET_INFO 2 -#define GPI_PROFILE_SEARCH 3 -#define GPI_REGISTER_UNIQUENICK 4 -#define GPI_START 0 -#define GPI_LOGIN 2 -#define GPI_REQUESTING 3 -#define GPI_WAITING 4 -#define GPI_FINISHING 5 - -typedef struct GPIOperation_s { - int type; - void * data; - GPIBool blocking; - GPICallback callback; - int state; - int id; - GPResult result; - struct GPIOperation_s * pnext; -} GPIOperation; - -typedef struct { - char serverChallenge[128]; - char userChallenge[33]; - char passwordHash[33]; - char authtoken[GP_AUTHTOKEN_LEN]; - char partnerchallenge[GP_PARTNERCHALLENGE_LEN]; - char cdkey[GP_CDKEY_LEN]; - GPIBool newuser; -} GPIConnectData; - -GPResult gpiAddOperation(GPConnection * connection, int type, void * data, GPIOperation ** op, GPEnum blocking, GPCallback callback, void * param); -void gpiRemoveOperation(GPConnection * connection, GPIOperation * operation); -void gpiDestroyOperation(GPConnection * connection, GPIOperation * operation); -GPIBool gpiFindOperationByID(const GPConnection * connection, GPIOperation ** operation, int id); -GPIBool gpiOperationsAreBlocking(const GPConnection * connection); -GPResult gpiProcessOperation(GPConnection * connection, GPIOperation * operation, const char * input); -GPResult gpiFailedOpCallback(GPConnection * connection, const GPIOperation * operation); - -#endif diff --git a/subprojects/gamespy/include/gs/gp/gpiPeer.h b/subprojects/gamespy/include/gs/gp/gpiPeer.h deleted file mode 100644 index 84eee3ad8b..0000000000 --- a/subprojects/gamespy/include/gs/gp/gpiPeer.h +++ /dev/null @@ -1,48 +0,0 @@ -#ifndef _GPIPEER_H_ -#define _GPIPEER_H_ - -#include "gpi.h" - -#define GPI_PEER_NOT_CONNECTED 100 -#define GPI_PEER_GETTING_SIG 101 -#define GPI_PEER_GOT_SIG 102 -#define GPI_PEER_CONNECTING 103 -#define GPI_PEER_WAITING 104 -#define GPI_PEER_CONNECTED 105 -#define GPI_PEER_DISCONNECTED 106 -#define GPI_PEER_TIMEOUT (5 * 60) - -typedef struct GPITransferID_s * GPITransferID_st; - -typedef struct GPIMessage { - GPIBuffer buffer; - int type; - int start; -} GPIMessage; - -typedef struct GPIPeer_s { - int state; - GPIBool initiated; - SOCKET sock; - GPProfile profile; - time_t timeout; - int nackCount; - GPIBuffer inputBuffer; - GPIBuffer outputBuffer; - DArray messages; - struct GPIPeer_s * pnext; -} GPIPeer; - -GPResult gpiProcessPeers(GPConnection * connection); -GPResult gpiPeerGetSig(GPConnection * connection, GPIPeer * peer); -GPResult gpiPeerStartConnect(GPConnection * connection, GPIPeer * peer); -GPIPeer * gpiGetConnectedPeer(const GPConnection * connection, int profileid); -GPIPeer * gpiAddPeer(GPConnection * connection, int profileid, GPIBool initiate); -void gpiDestroyPeer(GPConnection * connection, GPIPeer * peer); -void gpiRemovePeer(GPConnection * connection, GPIPeer * peer); -GPResult gpiPeerAddMessage(GPConnection * connection, GPIPeer * peer, int type, const char * message); -GPResult gpiPeerStartTransferMessage(GPConnection * connection, GPIPeer * peer, int type, const struct GPITransferID_s * transferID); -GPResult gpiPeerFinishTransferMessage(GPConnection * connection, GPIPeer * peer, const char * message, int len); -GPResult gpiPeerSendMessages(GPConnection * connection, GPIPeer * peer); - -#endif diff --git a/subprojects/gamespy/include/gs/gp/gpiProfile.h b/subprojects/gamespy/include/gs/gp/gpiProfile.h deleted file mode 100644 index 560c253290..0000000000 --- a/subprojects/gamespy/include/gs/gp/gpiProfile.h +++ /dev/null @@ -1,51 +0,0 @@ -#ifndef _GPIPROFILE_H_ -#define _GPIPROFILE_H_ - -#include "gpi.h" - -#define GPI_SIG_LEN 33 - -typedef struct { - int buddyIndex; - GPEnum status; - char * statusString; - char * locationString; - unsigned int ip; - int port; -} GPIBuddyStatus; - -typedef struct GPIProfile { - int profileId; - int userId; - GPIBuddyStatus * buddyStatus; - GPIInfoCache * cache; - char * authSig; - int requestCount; - char * peerSig; -} GPIProfile; - -typedef struct { - HashTable profileTable; - int num; - int numBuddies; -} GPIProfileList; - -typedef GPIBool (* gpiProfileMapFunc)(GPConnection * connection, GPIProfile * profile, void * data); - -GPIBool gpiInitProfiles(GPConnection * connection); -GPIProfile * gpiProfileListAdd(GPConnection * connection, int id); -GPIBool gpiGetProfile(GPConnection * connection, GPProfile profileid, GPIProfile ** pProfile); -GPResult gpiProcessNewProfile(GPConnection * connection, GPIOperation * operation, const char * input); -GPResult gpiNewProfile(GPConnection * connection, const char nick[GP_NICK_LEN], GPEnum replace, GPEnum blocking, GPCallback callback, void * param); -GPResult gpiDeleteProfile(GPConnection * connection); -void gpiRemoveProfile(GPConnection * connection, GPIProfile * profile); -void gpiRemoveProfileByID(GPConnection * connection, int profileid); -GPResult gpiLoadDiskProfiles(GPConnection * connection); -GPResult gpiSaveDiskProfiles(GPConnection * connection); -GPResult gpiFindProfileByUser(GPConnection * connection, char nick[GP_NICK_LEN], char email[GP_EMAIL_LEN], GPIProfile ** profile); -GPIBool gpiProfileMap(GPConnection * connection, gpiProfileMapFunc func, void * data); -GPIProfile * gpiFindBuddy(GPConnection * connection, int buddyIndex); -GPIBool gpiCanFreeProfile(GPIProfile * profile); -void gpiSetInfoCacheFilename(const char filename[FILENAME_MAX + 1]); - -#endif diff --git a/subprojects/gamespy/include/gs/gp/gpiSearch.h b/subprojects/gamespy/include/gs/gp/gpiSearch.h deleted file mode 100644 index 8d7e309cda..0000000000 --- a/subprojects/gamespy/include/gs/gp/gpiSearch.h +++ /dev/null @@ -1,44 +0,0 @@ -#ifndef _GPISEARCH_H_ -#define _GPISEARCH_H_ - -#include "gpi.h" - -#define GPI_SEARCH_PROFILE 1 -#define GPI_SEARCH_IS_VALID 2 -#define GPI_SEARCH_NICKS 3 -#define GPI_SEARCH_PLAYERS 4 -#define GPI_SEARCH_CHECK 5 -#define GPI_SEARCH_NEWUSER 6 -#define GPI_SEARCH_OTHERS_BUDDY 7 -#define GPI_SEARCH_SUGGEST_UNIQUE 8 - -typedef struct { - int type; - SOCKET sock; - GPIBuffer inputBuffer; - GPIBuffer outputBuffer; - char nick[GP_NICK_LEN]; - char uniquenick[GP_UNIQUENICK_LEN]; - char email[GP_EMAIL_LEN]; - char firstname[GP_FIRSTNAME_LEN]; - char lastname[GP_LASTNAME_LEN]; - char password[GP_PASSWORD_LEN]; - char cdkey[GP_CDKEY_LEN]; - int icquin; - int skip; - int productID; - GPIBool processing; - GPIBool remove; -} GPISearchData; - -GPResult gpiProfileSearch(GPConnection * connection, const char nick[GP_NICK_LEN], const char uniquenick[GP_UNIQUENICK_LEN], const char email[GP_EMAIL_LEN], const char firstname[GP_FIRSTNAME_LEN], const char lastname[GP_LASTNAME_LEN], int icquin, int skip, GPEnum blocking, GPCallback callback, void * param); -GPResult gpiIsValidEmail(GPConnection * connection, const char email[GP_EMAIL_LEN], GPEnum blocking, GPCallback callback, void * param); -GPResult gpiGetUserNicks(GPConnection * connection, const char email[GP_EMAIL_LEN], const char password[GP_PASSWORD_LEN], GPEnum blocking, GPCallback callback, void * param); -GPResult gpiFindPlayers(GPConnection * connection, int productID, GPEnum blocking, GPCallback callback, void * param); -GPResult gpiCheckUser(GPConnection * connection, const char nick[GP_NICK_LEN], const char email[GP_EMAIL_LEN], const char password[GP_PASSWORD_LEN], GPEnum blocking, GPCallback callback, void * param); -GPResult gpiNewUser(GPConnection * connection, const char nick[GP_NICK_LEN], const char uniquenick[GP_UNIQUENICK_LEN], const char email[GP_EMAIL_LEN], const char password[GP_PASSWORD_LEN], const char cdkey[GP_CDKEY_LEN], GPEnum blocking, GPCallback callback, void * param); -GPResult gpiOthersBuddy(GPConnection * connection, GPEnum blocking, GPCallback callback, void * param); -GPResult gpiSuggestUniqueNick(GPConnection * connection, const char desirednick[GP_NICK_LEN], GPEnum blocking, GPCallback callback, void * param); -GPResult gpiProcessSearches(GPConnection * connection); - -#endif diff --git a/subprojects/gamespy/include/gs/gp/gpiTransfer.h b/subprojects/gamespy/include/gs/gp/gpiTransfer.h deleted file mode 100644 index 1aa098ef6d..0000000000 --- a/subprojects/gamespy/include/gs/gp/gpiTransfer.h +++ /dev/null @@ -1,88 +0,0 @@ -#ifndef _GPITRANSFER_H_ -#define _GPITRANSFER_H_ - -#include "gpi.h" - -#define GPI_FILE_DIRECTORY (1 << 1) -#define GPI_FILE_SKIP (1 << 2) -#define GPI_FILE_FAILED (1 << 3) -#define GPI_FILE_COMPLETED (1 << 4) -#define GPI_FILE_CONFIRMING (1 << 5) -#define GPI_ACCEPTED 0 -#define GPI_REJECTED 1 -#define GPI_NOT_ACCEPTING 2 -#define GPI_SKIP_READ_ERROR 0 -#define GPI_SKIP_WRITE_ERROR 1 -#define GPI_SKIP_USER_SKIP 2 - -typedef enum { - GPITransferPinging, - GPITransferWaiting, - GPITransferTransferring, - GPITransferComplete, - GPITransferCancelled, - GPITransferNoConnection -} GPITransferState; - -typedef struct GPITransferID_s { - int profileid; - unsigned int count; - unsigned int time; -} GPITransferID; - -typedef struct { - GPITransferState state; - DArray files; - GPITransferID transferID; - int localID; - GPIBool sender; - GPProfile profile; - GPIPeer * peer; - int currentFile; - int throttle; - char * baseDirectory; - unsigned long lastSend; - char * message; - int totalSize; - int progress; - void * userData; -} GPITransfer; - -typedef struct { - char * path; - char * name; -#ifdef GSI_UNICODE - unsigned short * name_W; - unsigned short * path_W; -#endif - int progress; - int size; - int acknowledged; - FILE * file; - int flags; - gsi_time modTime; - MD5_CTX md5; - int reason; -} GPIFile; - -#ifndef NOFILE -GPResult gpiInitTransfers(GPConnection * connection); -void gpiCleanupTransfers(GPConnection * connection); -GPResult gpiProcessTransfers(GPConnection * connection); -GPResult gpiNewSenderTransfer(GPConnection * connection, GPITransfer ** transfer, GPProfile profile); -void gpiFreeTransfer(GPConnection * connection, GPITransfer * transfer); -void gpiCancelTransfer(GPConnection * connection, GPITransfer * transfer); -void gpiTransferError(GPConnection * connection, const GPITransfer * transfer); -GPITransfer * gpiFindTransferByLocalID(GPConnection * connection, int localID); -int gpiGetTransferLocalIDByIndex(GPConnection * connection, int index); -GPIFile * gpiAddFileToTransfer(GPITransfer * transfer, const char * path, const char * name); -void gpiSkipFile(GPConnection * connection, GPITransfer * transfer, int file, int reason); -void gpiSkipCurrentFile(GPConnection * connection, GPITransfer * transfer, int reason); -GPIBool gpiGetTransferFileInfo(FILE * file, int * size, gsi_time * modTime); -void gpiTransferPeerDestroyed(GPConnection * connection, GPIPeer * peer); -void gpiTransfersHandlePong(GPConnection * connection, GPProfile profile, GPIPeer * peer); -#endif -GPResult gpiSendTransferReply(GPConnection * connection, const GPITransferID * transferID, GPIPeer * peer, int result, const char * message); -void gpiHandleTransferMessage(GPConnection * connection, GPIPeer * peer, int type, const char * headers, const char * buffer, int len); - -#endif diff --git a/subprojects/gamespy/include/gs/gp/gpiUnique.h b/subprojects/gamespy/include/gs/gp/gpiUnique.h deleted file mode 100644 index bbee92a540..0000000000 --- a/subprojects/gamespy/include/gs/gp/gpiUnique.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef _GPIUNIQUE_H_ -#define _GPIUNIQUE_H_ - -#include "gpi.h" - -GPResult gpiRegisterUniqueNick(GPConnection * connection, const char uniquenick[GP_UNIQUENICK_LEN], const char cdkey[GP_CDKEY_LEN], GPEnum blocking, GPCallback callback, void * param); -GPResult gpiProcessRegisterUniqueNick(GPConnection * connection, GPIOperation * operation, const char * input); - -#endif diff --git a/subprojects/gamespy/include/gs/gp/gpiUtility.h b/subprojects/gamespy/include/gs/gp/gpiUtility.h deleted file mode 100644 index 391e0f3a9b..0000000000 --- a/subprojects/gamespy/include/gs/gp/gpiUtility.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef _GPIUTILITY_H_ -#define _GPIUTILITY_H_ - -#include "gpi.h" - -#define GPI_READ_SIZE (2 * 1024) -#define freeclear(mem) {gsifree(mem); (mem) = NULL;} - -#define Error(connection, result, string) {gpiSetErrorString(connection, string); \ - return result;} - -#define CallbackError(connection, result, code, string) {gpiSetError(connection, code, string); \ - gpiCallErrorCallback(connection, result, GP_NON_FATAL); \ - return result;} - -#define CallbackFatalError(connection, result, code, string) {gpiSetError(connection, code, string); \ - gpiCallErrorCallback(connection, result, GP_FATAL); \ - return result;} - -#define CHECK_RESULT(result) {GPResult __result__ = (result); \ - if (__result__ != GP_NO_ERROR) { \ - return __result__;}} - -void strzcpy(char * dest, const char * src, size_t len); -void UTF8ToUCS2StringLen(const char * src, unsigned short * dest, size_t len); -void gpiDebug(GPConnection * connection, const char * fmt, ...); -GPIBool gpiValueForKey(const char * command, const char * key, char * value, int len); -char * gpiValueForKeyAlloc(const char * command, const char * key); -GPResult gpiCheckSocketConnect(GPConnection * connection, SOCKET sock, int * state); -GPResult gpiReadKeyAndValue(GPConnection * connection, const char * buffer, int * index, char key[512], char value[512]); -GPIBool gpiCheckForError(GPConnection * connection, const char * input, GPIBool callErrorCallback); -void gpiSetError(GPConnection * connection, GPErrorCode errorCode, const char * errorString); -void gpiSetErrorString(GPConnection * connection, const char * errorString); - -#endif diff --git a/subprojects/gamespy/include/gs/gsiDebug.h b/subprojects/gamespy/include/gs/gsiDebug.h deleted file mode 100644 index c0b749cee8..0000000000 --- a/subprojects/gamespy/include/gs/gsiDebug.h +++ /dev/null @@ -1,106 +0,0 @@ -#ifndef __GSIDEBUG_H__ -#define __GSIDEBUG_H__ - -typedef gsi_u8 GSIDebugLevel; - -#define GSIDebugLevel_HotError (GSIDebugLevel)(1 << 0) -#define GSIDebugLevel_WarmError (GSIDebugLevel)(1 << 1) -#define GSIDebugLevel_Warning (GSIDebugLevel)(1 << 2) -#define GSIDebugLevel_Notice (GSIDebugLevel)(1 << 3) -#define GSIDebugLevel_Comment (GSIDebugLevel)(1 << 4) -#define GSIDebugLevel_RawDump (GSIDebugLevel)(1 << 5) -#define GSIDebugLevel_StackTrace (GSIDebugLevel)(1 << 6) -#define GSIDebugLevel_Count 7 -#define GSIDebugLevel_None (GSIDebugLevel)(0) -#define GSIDebugLevel_Normal (GSIDebugLevel)(0x07) -#define GSIDebugLevel_Debug (GSIDebugLevel)(0x0F) -#define GSIDebugLevel_Verbose (GSIDebugLevel)(0x1F) -#define GSIDebugLevel_Hardcore (GSIDebugLevel)(0xFF) - -typedef enum { - GSIDebugType_Network, - GSIDebugType_File, - GSIDebugType_Memory, - GSIDebugType_State, - GSIDebugType_Misc, - GSIDebugType_Count, - GSIDebugType_All = GSIDebugType_Count -} GSIDebugType; - -typedef enum { - GSIDebugCat_App, - GSIDebugCat_GP, - GSIDebugCat_Peer, - GSIDebugCat_QR2, - GSIDebugCat_SB, - GSIDebugCat_Voice, - GSIDebugCat_AD, - GSIDebugCat_NatNeg, - GSIDebugCat_HTTP, - GSIDebugCat_Common, - GSIDebugCat_Count, - GSIDebugCat_All = GSIDebugCat_Count -} GSIDebugCategory; - -extern char * gGSIDebugCatStrings[GSIDebugCat_Count]; -extern char * gGSIDebugTypeStrings[GSIDebugType_Count]; -extern char * gGSIDebugLevelStrings[GSIDebugLevel_Count]; - -#ifndef GSI_COMMON_DEBUG - #if !defined(_WIN32) && !defined(__MWERKS__) - #define gsDebugFormat(c, t, l, f, ...) - #define gsDebugVaList(c, t, l, f, v) - #define gsDebugBinary(c, t, l, b, n) - #define gsSetDebugLevel(c, t, l) - #define gsSetDebugFile(f) - #define gsOpenDebugFile(f) - #define gsGetDebugFile - #define gsSetDebugCallback(c) - #elif defined(_NITRO) - #define gsDebugFormat(...) - #define gsDebugVaList(c, t, l, f, v) - #define gsDebugBinary(c, t, l, b, n) - #define gsSetDebugLevel(c, t, l) - #define gsSetDebugFile(f) - #define gsOpenDebugFile(f) - #define gsGetDebugFile - #define gsSetDebugCallback(c) - #else - #define gsDebugFormat - #define gsDebugVaList - #define gsDebugBinary - #define gsSetDebugLevel - #define gsSetDebugFile - #define gsOpenDebugFile - #define gsGetDebugFile - #define gsSetDebugCallback - #endif -#else - -typedef void (* GSIDebugCallback)(GSIDebugCategory, GSIDebugType, GSIDebugLevel, const char *, va_list); - -typedef struct GSIDebugInstance { -#if !defined(_NITRO) - FILE * mGSIDebugFile; -#endif - GSIDebugCallback mDebugCallback; - gsi_i32 mInitialized; - GSICriticalSection mDebugCrit; - - GSIDebugLevel mGSIDebugLevel[GSIDebugCat_Count][GSIDebugType_Count]; -} GSIDebugInstance; - -void gsDebugFormat(GSIDebugCategory theCat, GSIDebugType theType, GSIDebugLevel theLevel, const char * theTokenStr, ...); -void gsDebugVaList(GSIDebugCategory theCat, GSIDebugType theType, GSIDebugLevel theLevel, const char * theTokenStr, va_list theParams); -void gsDebugBinary(GSIDebugCategory theCat, GSIDebugType theType, GSIDebugLevel theLevel, const char * theBuffer, gsi_i32 theLength); -void gsSetDebugLevel(GSIDebugCategory theCat, GSIDebugType theType, GSIDebugLevel theLevel); - -#if !defined(_NITRO) -void gsSetDebugFile(FILE * theFile); -FILE * gsOpenDebugFile(const char * theFileName); -FILE * gsGetDebugFile(); -#endif -void gsSetDebugCallback(GSIDebugCallback theCallback); -#endif - -#endif diff --git a/subprojects/gamespy/include/gs/gsiMemory.h b/subprojects/gamespy/include/gs/gsiMemory.h deleted file mode 100644 index 68bceffdb2..0000000000 --- a/subprojects/gamespy/include/gs/gsiMemory.h +++ /dev/null @@ -1,54 +0,0 @@ -#ifdef GSI_MEM_MANAGED - -#ifndef __GSIMEMORY_H__ -#define __GSIMEMORY_H__ - -#include "gs/nonport.h" - -#define BlockFlag_Used (1 << 0) -#define BlockFlag_Final (1 << 1) - -typedef struct GSIMemoryBlock { - gsi_u32 mObjectSize; - gsi_u32 mFlags; - struct GSIMemoryBlock * mNext; - struct GSIMemoryBlock * mPrev; -} GSIMemoryBlock; - -typedef struct GSIMemoryMgr { - void * mPoolStart; - gsi_i32 mPoolSize; - struct GSIMemoryBlock * mFirstUsedBlock; - struct GSIMemoryBlock * mLastUsedBlock; - struct GSIMemoryBlock * mFirstFreeBlock; - struct GSIMemoryBlock * mLastFreeBlock; - gsi_i32 mMemUsed; - gsi_i32 mPeakMemoryUsage; -} GSIMemoryMgr; - -static struct GSIMemoryMgr * gMemoryMgr; -static GSICriticalSection gMemCrit; - -void gsiMemBlockSetPrev(struct GSIMemoryBlock * pThis, struct GSIMemoryBlock * theBlock); -void gsiMemBlockSetNext(struct GSIMemoryBlock * pThis, struct GSIMemoryBlock * theBlock); -struct GSIMemoryBlock * gsiMemBlockGetPrev(struct GSIMemoryBlock * pThis); -struct GSIMemoryBlock * gsiMemBlockGetNext(struct GSIMemoryBlock * pThis); -gsi_i32 gsiMemBlockGetObjectSize(struct GSIMemoryBlock * pThis); -void gsiMemBlockSetObjectSize(struct GSIMemoryBlock * pThis, gsi_i32 theSize); -void * gsiMemBlockGetObjectPtr(struct GSIMemoryBlock * pThis); -int gsiMemBlockIsFlagged(struct GSIMemoryBlock * pThis, gsi_u32 theFlag); -void gsiMemBlockSetFlag(struct GSIMemoryBlock * pThis, gsi_u32 theFlag); -void gsiMemBlockClearFlag(struct GSIMemoryBlock * pThis, gsi_u32 theFlag); -gsi_i32 gsiMemBlockGetTotalSize(struct GSIMemoryBlock * pThis); -struct GSIMemoryBlock * gsiMemBlockGetLinearNext(struct GSIMemoryBlock * pThis); -void gsiMemBlockAddToList(struct GSIMemoryBlock * pThis, struct GSIMemoryBlock ** theListHead, struct GSIMemoryBlock ** theListTail); -void gsiMemBlockRemoveFromList(struct GSIMemoryBlock * pThis, struct GSIMemoryBlock ** theListHead, struct GSIMemoryBlock ** theListTail); -void gsiMemBlockAssertValid(struct GSIMemoryBlock * pThis); -struct GSIMemoryBlock * gsiMemMgrGetFreeBlock(struct GSIMemoryMgr * theMemMgr, gsi_i32 theDesiredSize); -void * gsiManagedMalloc(size_t size); -void * gsiManagedRealloc(void * ptr, size_t size); -void gsiManagedFree(void * ptr); -void * gsiManagedMemAlign(size_t boundary, size_t size); -#endif - -#endif diff --git a/subprojects/gamespy/include/gs/gstats/gbucket.h b/subprojects/gamespy/include/gs/gstats/gbucket.h deleted file mode 100644 index 1bfe86e4e3..0000000000 --- a/subprojects/gamespy/include/gs/gstats/gbucket.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef _GBUCKET_H_ -#define _GBUCKET_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#define bstring(a) ((void *)a) - -typedef struct bucketset_s * bucketset_t; - -typedef enum { - bt_int, bt_float, bt_string -} BucketType; - -bucketset_t NewBucketSet(void); -void FreeBucketSet(bucketset_t set); -char * DumpBucketSet(bucketset_t set); -void * BucketNew(bucketset_t set, char * name, BucketType type, void * initialvalue); -void * BucketSet(bucketset_t set, char * name, void * value); -void * BucketAdd(bucketset_t set, char * name, void * value); -void * BucketSub(bucketset_t set, char * name, void * value); -void * BucketMult(bucketset_t set, char * name, void * value); -void * BucketDiv(bucketset_t set, char * name, void * value); -void * BucketConcat(bucketset_t set, char * name, void * value); -void * BucketAvg(bucketset_t set, char * name, void * value); -void * BucketGet(bucketset_t set, char * name); -void * bint(int i); -void * bfloat(double f); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/gamespy/include/gs/gstats/gpersist.h b/subprojects/gamespy/include/gs/gstats/gpersist.h deleted file mode 100644 index dc9087ad43..0000000000 --- a/subprojects/gamespy/include/gs/gstats/gpersist.h +++ /dev/null @@ -1,54 +0,0 @@ -#ifndef _GPERSIST_H_ -#define _GPERSIST_H_ - -#include "gstats.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef GSI_UNICODE -#define GenerateAuth GenerateAuthA -#define PreAuthenticatePlayerCD PreAuthenticatePlayerCDA -#define GetProfileIDFromCD GetProfileIDFromCDA -#define GetPersistDataValues GetPersistDataValuesA -#define GetPersistDataValuesModified GetPersistDataValuesModifiedA -#define SetPersistDataValues SetPersistDataValuesA -#else -#define GenerateAuth GenerateAuthW -#define PreAuthenticatePlayerCD PreAuthenticatePlayerCDW -#define GetProfileIDFromCD GetProfileIDFromCDW -#define GetPersistDataValues GetPersistDataValuesW -#define GetPersistDataValuesModified GetPersistDataValuesModifiedW -#define SetPersistDataValues SetPersistDataValuesW -#endif - -typedef enum { - pd_private_ro, - pd_private_rw, - pd_public_ro, - pd_public_rw -} persisttype_t; - -typedef void (* PersAuthCallbackFn)(int localid, int profileid, int authenticated, gsi_char * errmsg, void * instance); -typedef void (* PersDataCallbackFn)(int localid, int profileid, persisttype_t type, int index, int success, time_t modified, char * data, int len, void * instance); -typedef void (* PersDataSaveCallbackFn)(int localid, int profileid, persisttype_t type, int index, int success, time_t modified, void * instance); -typedef void (* ProfileCallbackFn)(int localid, int profileid, int success, void * instance); - -void PreAuthenticatePlayerPartner(int localid, const char * authtoken, const char * challengeresponse, PersAuthCallbackFn callback, void * instance); -void PreAuthenticatePlayerPM(int localid, int profileid, const char * challengeresponse, PersAuthCallbackFn callback, void * instance); -void PreAuthenticatePlayerCD(int localid, const gsi_char * nick, const char * keyhash, const char * challengeresponse, PersAuthCallbackFn callback, void * instance); -void GetProfileIDFromCD(int localid, const gsi_char * nick, const char * keyhash, ProfileCallbackFn callback, void * instance); -void GetPersistData(int localid, int profileid, persisttype_t type, int index, PersDataCallbackFn callback, void * instance); -void GetPersistDataModified(int localid, int profileid, persisttype_t type, int index, time_t modifiedsince, PersDataCallbackFn callback, void * instance); -void GetPersistDataValues(int localid, int profileid, persisttype_t type, int index, gsi_char * keys, PersDataCallbackFn callback, void * instance); -void GetPersistDataValuesModified(int localid, int profileid, persisttype_t type, int index, time_t modifiedsince, gsi_char * keys, PersDataCallbackFn callback, void * instance); -void SetPersistData(int localid, int profileid, persisttype_t type, int index, const char * data, int len, PersDataSaveCallbackFn callback, void * instance); -void SetPersistDataValues(int localid, int profileid, persisttype_t type, int index, const gsi_char * keyvalues, PersDataSaveCallbackFn callback, void * instance); -int PersistThink(); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/gamespy/include/gs/gstats/gstats.h b/subprojects/gamespy/include/gs/gstats/gstats.h deleted file mode 100644 index bdafa4c781..0000000000 --- a/subprojects/gamespy/include/gs/gstats/gstats.h +++ /dev/null @@ -1,108 +0,0 @@ -#ifndef _GSTATS_H_ -#define _GSTATS_H_ - -#include -#include -#include "gbucket.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define NUMOPS 7 -#define GE_NOERROR 0 -#define GE_NOSOCKET 1 -#define GE_NODNS 2 -#define GE_NOCONNECT 3 -#define GE_BUSY 4 -#define GE_DATAERROR 5 -#define GE_CONNECTING 6 -#define GE_TIMEDOUT 7 -#define SNAP_UPDATE 0 -#define SNAP_FINAL 1 -#ifndef GSI_UNICODE -#define GenerateAuth GenerateAuthA -#define SendGameSnapShot SendGameSnapShotA -#define NewPlayer NewPlayerA -#define NewTeam NewTeamA -#else -#define GenerateAuth GenerateAuthW -#define SendGameSnapShot SendGameSnapShotW -#define NewPlayer NewPlayerW -#define NewTeam NewTeamW -#endif -#define BucketIntOp(game, name, operation, value, bucketlevel, index) (((SetIntFunc)bopfuncs[bucketlevel][bt_int])(game, name, bucketfuncs[operation], value, index)) -#define BucketFloatOp(game, name, operation, value, bucketlevel, index) (((SetFloatFunc)bopfuncs[bucketlevel][bt_float])(game, name, bucketfuncs[operation], value, index)) -#define BucketStringOp(game, name, operation, value, bucketlevel, index) (((SetStringFunc)bopfuncs[bucketlevel][bt_string])(game, name, bucketfuncs[operation], value, index)) - -#if defined(_WIN32) -#pragma warning(disable: 4152) -#pragma warning(disable: 4055) -#endif - -#define ALLOW_DISK -#if defined(NOFILE) - #undef ALLOW_DISK -#endif - -typedef struct statsgame_s * statsgame_t; - -typedef enum { - bo_set, - bo_add, - bo_sub, - bo_mult, - bo_div, - bo_concat, - bo_avg -} bucketop_t; - -typedef enum { - bl_server, - bl_team, - bl_player -} bucketlevel_t; - -typedef enum { - init_none, - init_failed, - init_connecting, - init_awaitchallenge, - init_awaitsessionkey, - init_complete -} initstate_t; - -typedef void *(* BucketFunc)(bucketset_t set, char * name, void * value); -typedef int (* SetIntFunc)(statsgame_t game, char * name, BucketFunc func, int value, int index); -typedef double (* SetFloatFunc)(statsgame_t game, char * name, BucketFunc func, double value, int index); -typedef char *(* SetStringFunc)(statsgame_t game, char * name, BucketFunc func, char * value, int index); - -extern BucketFunc bucketfuncs[NUMOPS]; -extern void * bopfuncs[][3]; -extern char gcd_secret_key[256]; -extern char gcd_gamename[256]; -extern char StatsServerHostname[64]; - -int InitStatsConnection(int gameport); -int InitStatsAsync(int gameport, gsi_time theInitTimeout); -int InitStatsThink(); -int StatsThink(); -int IsStatsConnected(); -void CloseStatsConnection(void); -char * GetChallenge(statsgame_t game); -char * GenerateAuth(const char * challenge, const gsi_char * password, char response[33]); -statsgame_t NewGame(int usebuckets); -void FreeGame(statsgame_t game); -int SendGameSnapShot(statsgame_t game, const gsi_char * snapshot, int final); -void NewPlayer(statsgame_t game, int pnum, gsi_char * name); -void RemovePlayer(statsgame_t game, int pnum); -void NewTeam(statsgame_t game, int tnum, gsi_char * name); -void RemoveTeam(statsgame_t game, int tnum); -int GetPlayerIndex(statsgame_t game, int pnum); -int GetTeamIndex(statsgame_t game, int tnum); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/gamespy/include/gs/gt2/gt2.h b/subprojects/gamespy/include/gs/gt2/gt2.h deleted file mode 100644 index 25335a059c..0000000000 --- a/subprojects/gamespy/include/gs/gt2/gt2.h +++ /dev/null @@ -1,125 +0,0 @@ -#ifndef _GT2_H_ -#define _GT2_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#define GT2False 0 -#define GT2True 1 - -typedef int GT2Bool; -typedef unsigned char GT2Byte; -typedef struct GTI2Socket * GT2Socket; -typedef struct GTI2Connection * GT2Connection; -typedef unsigned short GT2MessageID; - -typedef enum { - GT2Success, - GT2OutOfMemory, - GT2Rejected, - GT2NetworkError, - GT2AddressError, - GT2DuplicateAddress, - GT2TimedOut, - GT2NegotiationError -} GT2Result; - -typedef enum { - GT2Connecting, - GT2Connected, - GT2Closing, - GT2Closed -} GT2ConnectionState; - -typedef enum { - GT2LocalClose, - GT2RemoteClose, - GT2CommunicationError, - GT2SocketError, - GT2NotEnoughMemory -} GT2CloseReason; - -typedef void (* gt2ConnectedCallback)(GT2Connection connection, GT2Result result, GT2Byte * message, int len); -typedef void (* gt2ReceivedCallback)(GT2Connection connection, GT2Byte * message, int len, GT2Bool reliable); -typedef void (* gt2ClosedCallback)(GT2Connection connection, GT2CloseReason reason); -typedef void (* gt2PingCallback)(GT2Connection connection, int latency); - -typedef struct { - gt2ConnectedCallback connected; - gt2ReceivedCallback received; - gt2ClosedCallback closed; - gt2PingCallback ping; -} GT2ConnectionCallbacks; - -typedef void (* gt2SocketErrorCallback)(GT2Socket socket); -typedef void (* gt2ConnectAttemptCallback)(GT2Socket socket, GT2Connection connection, unsigned int ip, unsigned short port, int latency, GT2Byte * message, int len); -typedef void (* gt2SendFilterCallback)(GT2Connection connection, int filterID, const GT2Byte * message, int len, GT2Bool reliable); -typedef void (* gt2ReceiveFilterCallback)(GT2Connection connection, int filterID, GT2Byte * message, int len, GT2Bool reliable); -typedef GT2Bool (* gt2UnrecognizedMessageCallback)(GT2Socket socket, unsigned int ip, unsigned short port, GT2Byte * message, int len); -typedef void (* gt2DumpCallback)(GT2Socket socket, GT2Connection connection, unsigned int ip, unsigned short port, GT2Bool reset, const GT2Byte * message, int len); - -extern char GT2ChallengeKey[33]; - -GT2Result gt2CreateSocket(GT2Socket * socket, const char * localAddress, int outgoingBufferSize, int incomingBufferSize, gt2SocketErrorCallback callback); -void gt2CloseSocket(GT2Socket socket); -void gt2Think(GT2Socket socket); -GT2Result gt2SendRawUDP(GT2Socket socket, const char * remoteAddress, const GT2Byte * message, int len); -GT2Result gt2Connect(GT2Socket socket, GT2Connection * connection, const char * remoteAddress, const GT2Byte * message, int len, int timeout, GT2ConnectionCallbacks * callbacks, GT2Bool blocking); -void gt2Send(GT2Connection connection, const GT2Byte * message, int len, GT2Bool reliable); -void gt2Ping(GT2Connection connection); -void gt2CloseConnection(GT2Connection connection); -void gt2CloseConnectionHard(GT2Connection connection); -void gt2CloseAllConnections(GT2Socket socket); -void gt2CloseAllConnectionsHard(GT2Socket socket); -void gt2Listen(GT2Socket socket, gt2ConnectAttemptCallback callback); -GT2Bool gt2Accept(GT2Connection connection, GT2ConnectionCallbacks * callbacks); -void gt2Reject(GT2Connection connection, const GT2Byte * message, int len); -GT2MessageID gt2GetLastSentMessageID(GT2Connection connection); -GT2Bool gt2WasMessageIDConfirmed(GT2Connection connection, GT2MessageID messageID); -GT2Bool gt2AddSendFilter(GT2Connection connection, gt2SendFilterCallback callback); -void gt2RemoveSendFilter(GT2Connection connection, gt2SendFilterCallback callback); -void gt2FilteredSend(GT2Connection connection, int filterID, const GT2Byte * message, int len, GT2Bool reliable); -GT2Bool gt2AddReceiveFilter(GT2Connection connection, gt2ReceiveFilterCallback callback); -void gt2RemoveReceiveFilter(GT2Connection connection, gt2ReceiveFilterCallback callback); -void gt2FilteredReceive(GT2Connection connection, int filterID, GT2Byte * message, int len, GT2Bool reliable); -SOCKET gt2GetSocketSOCKET(GT2Socket socket); -void gt2SetUnrecognizedMessageCallback(GT2Socket socket, gt2UnrecognizedMessageCallback callback); -GT2Socket gt2GetConnectionSocket(GT2Connection connection); -GT2ConnectionState gt2GetConnectionState(GT2Connection connection); -unsigned int gt2GetRemoteIP(GT2Connection connection); -unsigned short gt2GetRemotePort(GT2Connection connection); -unsigned int gt2GetLocalIP(GT2Socket socket); -unsigned short gt2GetLocalPort(GT2Socket socket); -int gt2GetIncomingBufferSize(GT2Connection connection); -int gt2GetIncomingBufferFreeSpace(GT2Connection connection); -int gt2GetOutgoingBufferSize(GT2Connection connection); -int gt2GetOutgoingBufferFreeSpace(GT2Connection connection); -void gt2SetSocketData(GT2Socket socket, void * data); -void * gt2GetSocketData(GT2Socket socket); -void gt2SetConnectionData(GT2Connection connection, void * data); -void * gt2GetConnectionData(GT2Connection connection); -unsigned int gt2NetworkToHostInt(unsigned int i); -unsigned int gt2HostToNetworkInt(unsigned int i); -unsigned short gt2HostToNetworkShort(unsigned short s); -unsigned short gt2NetworkToHostShort(unsigned short s); -const char * gt2AddressToString(unsigned int ip, unsigned short port, char string[22]); -GT2Bool gt2StringToAddress(const char * string, unsigned int * ip, unsigned short * port); -const char * gt2IPToHostInfo(unsigned int ip, char *** aliases, unsigned int *** ips); -const char * gt2StringToHostInfo(const char * string, char *** aliases, unsigned int *** ips); -const char * gt2IPToHostname(unsigned int ip); -const char * gt2StringToHostname(const char * string); -char ** gt2IPToAliases(unsigned int ip); -char ** gt2StringToAliases(const char * string); -unsigned int ** gt2IPToIPs(unsigned int ip); -unsigned int ** gt2StringToIPs(const char * string); -void gt2SetSendDump(GT2Socket socket, gt2DumpCallback callback); -void gt2SetReceiveDump(GT2Socket socket, gt2DumpCallback callback); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/gamespy/include/gs/gt2/gt2Auth.h b/subprojects/gamespy/include/gs/gt2/gt2Auth.h deleted file mode 100644 index 660014dd4d..0000000000 --- a/subprojects/gamespy/include/gs/gt2/gt2Auth.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _GT2_AUTH_H_ -#define _GT2_AUTH_H_ - -#define GTI2_CHALLENGE_LEN 32 -#define GTI2_RESPONSE_LEN 32 - -#ifdef __cplusplus -extern "C" { -#endif - -GT2Byte * gti2GetChallenge(GT2Byte * buffer); -GT2Byte * gti2GetResponse(GT2Byte * buffer, const GT2Byte * challenge); -GT2Bool gti2CheckResponse(const GT2Byte * response1, const GT2Byte * response2); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/gamespy/include/gs/gt2/gt2Buffer.h b/subprojects/gamespy/include/gs/gt2/gt2Buffer.h deleted file mode 100644 index ea6ce39694..0000000000 --- a/subprojects/gamespy/include/gs/gt2/gt2Buffer.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef _GT2_BUFFER_H_ -#define _GT2_BUFFER_H_ - -#include "gt2Main.h" - -GT2Bool gti2AllocateBuffer(GTI2Buffer * buffer, int size); -int gti2GetBufferFreeSpace(const GTI2Buffer * buffer); -void gti2BufferWriteByte(GTI2Buffer * buffer, GT2Byte b); -void gti2BufferWriteUShort(GTI2Buffer * buffer, unsigned short s); -void gti2BufferWriteData(GTI2Buffer * buffer, const GT2Byte * data, int len); -void gti2BufferShorten(GTI2Buffer * buffer, int start, int shortenBy); - -#endif diff --git a/subprojects/gamespy/include/gs/gt2/gt2Callback.h b/subprojects/gamespy/include/gs/gt2/gt2Callback.h deleted file mode 100644 index f1be70f679..0000000000 --- a/subprojects/gamespy/include/gs/gt2/gt2Callback.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef _GT2_CALLBACK_H_ -#define _GT2_CALLBACK_H_ - -#include "gt2Main.h" - -GT2Bool gti2SocketErrorCallback(GT2Socket socket); -GT2Bool gti2ConnectAttemptCallback(GT2Socket socket, GT2Connection connection, unsigned int ip, unsigned short port, int latency, GT2Byte * message, int len); -GT2Bool gti2ConnectedCallback(GT2Connection connection, GT2Result result, GT2Byte * message, int len); -GT2Bool gti2ReceivedCallback(GT2Connection connection, GT2Byte * message, int len, GT2Bool reliable); -GT2Bool gti2ClosedCallback(GT2Connection connection, GT2CloseReason reason); -GT2Bool gti2PingCallback(GT2Connection connection, int latency); -GT2Bool gti2SendFilterCallback(GT2Connection connection, int filterID, const GT2Byte * message, int len, GT2Bool reliable); -GT2Bool gti2ReceiveFilterCallback(GT2Connection connection, int filterID, GT2Byte * message, int len, GT2Bool reliable); -GT2Bool gti2DumpCallback(GT2Socket socket, GT2Connection connection, unsigned int ip, unsigned short port, GT2Bool reset, const GT2Byte * message, int len, GT2Bool send); -GT2Bool gti2UnrecognizedMessageCallback(GT2Socket socket, unsigned int ip, unsigned short port, GT2Byte * message, int len, GT2Bool * handled); - -#endif diff --git a/subprojects/gamespy/include/gs/gt2/gt2Connection.h b/subprojects/gamespy/include/gs/gt2/gt2Connection.h deleted file mode 100644 index cd4d5d575b..0000000000 --- a/subprojects/gamespy/include/gs/gt2/gt2Connection.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef _GT2_CONNECTION_H_ -#define _GT2_CONNECTION_H_ - -#include "gt2Main.h" - -GT2Result gti2NewOutgoingConnection(GT2Socket socket, GT2Connection * connection, unsigned int ip, unsigned short port); -GT2Result gti2NewIncomingConnection(GT2Socket socket, GT2Connection * connection, unsigned int ip, unsigned short port); -GT2Result gti2StartConnectionAttempt(GT2Connection connection, const GT2Byte * message, int len, GT2ConnectionCallbacks * callbacks); -GT2Bool gti2AcceptConnection(GT2Connection connection, GT2ConnectionCallbacks * callbacks); -void gti2RejectConnection(GT2Connection connection, const GT2Byte * message, int len); -GT2Bool gti2ConnectionSendData(GT2Connection connection, const GT2Byte * message, int len); -GT2Bool gti2ConnectionThink(GT2Connection connection, gsi_time now); -void gti2CloseConnection(GT2Connection connection, GT2Bool hard); -void gti2ConnectionClosed(GT2Connection connection); -void gti2ConnectionCleanup(GT2Connection connection); - -#endif diff --git a/subprojects/gamespy/include/gs/gt2/gt2Encode.h b/subprojects/gamespy/include/gs/gt2/gt2Encode.h deleted file mode 100644 index d7d291dca7..0000000000 --- a/subprojects/gamespy/include/gs/gt2/gt2Encode.h +++ /dev/null @@ -1,76 +0,0 @@ -#ifndef _GT_ENCODE_H -#define _GT_ENCODE_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#define GT_INT 'i' -#define GT_INT_ "i" -#define GT_INT_TYPE int -#define GT_UINT 'u' -#define GT_UINT_ "u" -#define GT_UINT_TYPE unsigned int -#define GT_SHORT 'o' -#define GT_SHORT_ "o" -#define GT_SHORT_TYPE short -#define GT_USHORT 'p' -#define GT_USHORT_ "p" -#define GT_USHORT_TYPE unsigned short -#define GT_CHAR 'c' -#define GT_CHAR_ "c" -#define GT_CHAR_TYPE signed char -#define GT_UCHAR 'b' -#define GT_UCHAR_ "b" -#define GT_UCHAR_TYPE unsigned char -#define GT_FLOAT 'f' -#define GT_FLOAT_ "f" -#define GT_FLOAT_TYPE float -#define GT_DOUBLE 'd' -#define GT_DOUBLE_ "d" -#define GT_DOUBLE_TYPE double -#define GT_CSTR 's' -#define GT_CSTR_ "s" -#define GT_CSTR_TYPE char * -#define GT_CSTR_PTR 'S' -#define GT_CSTR_PTR_ "S" -#define GT_CSTR_PTR_TYPE char ** -#define GT_DBSTR 'w' -#define GT_DBSTR_ "w" -#define GT_DBSTR_TYPE short * -#define GT_DBSTR_PTR 'W' -#define GT_DBSTR_PTR_ "W" -#define GT_DBSTR_PTR_TYPE short ** -#define GT_RAW 'r' -#define GT_RAW_ "r" -#define GT_RAW_TYPE char * -#define GT_RAW_PTR 'R' -#define GT_RAW_PTR_ "R" -#define GT_RAW_PTR_TYPE char ** -#define GT_BIT 'z' -#define GT_BIT_ "z" -#define GT_BIT_TYPE unsigned char - -#if defined(UNDER_CE) || defined(__mips64) -#define ALIGNED_COPY -#endif - -typedef unsigned short GTMessageType; - -int gtEncode(GTMessageType msgType, const char * fmtString, char * outBuffer, int outLength, ...); -int gtEncodeV(GTMessageType msgType, const char * fmtString, char * outBuffer, int outLength, va_list * args); -int gtEncodeNoType(const char * fmtString, char * outBuffer, int outLength, ...); -int gtEncodeNoTypeV(const char * fmtString, char * outBuffer, int outLength, va_list * args); -int gtDecode(const char * fmtString, char * inBuffer, int inLength, ...); -int gtDecodeV(const char * fmtString, char * inBuffer, int inLength, va_list * args); -int gtDecodeNoType(const char * fmtString, char * inBuffer, int inLength, ...); -int gtDecodeNoTypeV(const char * fmtString, char * inBuffer, int inLength, va_list * args); -GTMessageType gtEncodedMessageType(char * inBuffer); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/gamespy/include/gs/gt2/gt2Filter.h b/subprojects/gamespy/include/gs/gt2/gt2Filter.h deleted file mode 100644 index eaf5c3ca4d..0000000000 --- a/subprojects/gamespy/include/gs/gt2/gt2Filter.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef _GT2_FILTER_H_ -#define _GT2_FILTER_H_ - -#include "gt2Main.h" - -GT2Bool gti2AddSendFilter(GT2Connection connection, gt2SendFilterCallback callback); -void gti2RemoveSendFilter(GT2Connection connection, gt2SendFilterCallback callback); -GT2Bool gti2FilteredSend(GT2Connection connection, int filterID, const GT2Byte * message, int len, GT2Bool reliable); -GT2Bool gti2AddReceiveFilter(GT2Connection connection, gt2ReceiveFilterCallback callback); -void gti2RemoveReceiveFilter(GT2Connection connection, gt2ReceiveFilterCallback callback); -GT2Bool gti2FilteredReceive(GT2Connection connection, int filterID, GT2Byte * message, int len, GT2Bool reliable); - -#endif diff --git a/subprojects/gamespy/include/gs/gt2/gt2Main.h b/subprojects/gamespy/include/gs/gt2/gt2Main.h deleted file mode 100644 index 2aadf120bc..0000000000 --- a/subprojects/gamespy/include/gs/gt2/gt2Main.h +++ /dev/null @@ -1,123 +0,0 @@ -#ifndef _GT2_MAIN_H_ -#define _GT2_MAIN_H_ - -#include "gt2.h" -#include -#include -#include -#include "gt2Auth.h" - -#define GTI2_MAGIC_STRING "\xFE\xFE" -#define GTI2_MAGIC_STRING_LEN 2 -#define GTI2_SERVER_TIMEOUT (1 * 60 * 1000) -#define GTI2_RESEND_TIME 1000 -#define GTI2_PENDING_ACK_TIME 100 -#define GTI2_KEEP_ALIVE_TIME (30 * 1000) - -#if defined(_PS2) && defined(INSOCK) - #define GTI2_STACK_RECV_BUFFER_SIZE NETBUFSIZE -#elif defined(_NITRO) - #define GTI2_STACK_RECV_BUFFER_SIZE 1500 -#else - #define GTI2_STACK_RECV_BUFFER_SIZE 65535 -#endif - -typedef enum { - GTI2AwaitingServerChallenge, - GTI2AwaitingAcceptance, - GTI2AwaitingClientChallenge, - GTI2AwaitingClientResponse, - GTI2AwaitingAcceptReject, - GTI2Connected, - GTI2Closing, - GTI2Closed -} GTI2ConnectionState; - -typedef enum { - GTI2MsgAppReliable, - GTI2MsgClientChallenge, - GTI2MsgServerChallenge, - GTI2MsgClientResponse, - GTI2MsgAccept, - GTI2MsgReject, - GTI2MsgClose, - GTI2MsgKeepAlive, - GTI2NumReliableMessages, - GTI2MsgAck = 100, - GTI2MsgNack, - GTI2MsgPing, - GTI2MsgPong, - GTI2MsgClosed -} GTI2MessageType; - -typedef struct GTI2Buffer { - GT2Byte * buffer; - int size; - int len; -} GTI2Buffer; - -typedef struct GTI2IncomingBufferMessage { - int start; - int len; - GTI2MessageType type; - unsigned short serialNumber; -} GTI2IncomingBufferMessage; - -typedef struct GTI2OutgoingBufferMessage { - int start; - int len; - unsigned short serialNumber; - gsi_time lastSend; -} GTI2OutgoingBufferMessage; - -typedef struct GTI2Socket { - SOCKET socket; - unsigned int ip; - unsigned short port; - HashTable connections; - DArray closedConnections; - GT2Bool close; - GT2Bool error; - int callbackLevel; - gt2ConnectAttemptCallback connectAttemptCallback; - gt2SocketErrorCallback socketErrorCallback; - gt2DumpCallback sendDumpCallback; - gt2DumpCallback receiveDumpCallback; - gt2UnrecognizedMessageCallback unrecognizedMessageCallback; - void * data; - int outgoingBufferSize; - int incomingBufferSize; - GT2Bool broadcastEnabled; -} GTI2Socket; - -typedef struct GTI2Connection { - unsigned int ip; - unsigned short port; - GTI2Socket * socket; - GTI2ConnectionState state; - GT2Bool initiated; - GT2Bool freeAtAcceptReject; - GT2Result connectionResult; - gsi_time startTime; - gsi_time timeout; - int callbackLevel; - GT2ConnectionCallbacks callbacks; - char * initialMessage; - int initialMessageLen; - void * data; - GTI2Buffer incomingBuffer; - GTI2Buffer outgoingBuffer; - DArray incomingBufferMessages; - DArray outgoingBufferMessages; - unsigned short serialNumber; - unsigned short expectedSerialNumber; - char response[GTI2_RESPONSE_LEN]; - gsi_time lastSend; - gsi_time challengeTime; - GT2Bool pendingAck; - gsi_time pendingAckTime; - DArray sendFilters; - DArray receiveFilters; -} GTI2Connection; - -#endif diff --git a/subprojects/gamespy/include/gs/gt2/gt2Message.h b/subprojects/gamespy/include/gs/gt2/gt2Message.h deleted file mode 100644 index cbe02c3016..0000000000 --- a/subprojects/gamespy/include/gs/gt2/gt2Message.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef _GT2_MESSAGE_H_ -#define _GT2_MESSAGE_H_ - -#include "gt2Main.h" - -GT2Bool gti2ReceiveMessages(GT2Socket socket); -GT2Bool gti2Send(GT2Connection connection, const GT2Byte * message, int len, GT2Bool reliable); -GT2Bool gti2SendAppReliable(GT2Connection connection, const GT2Byte * message, int len); -GT2Bool gti2SendAppUnreliable(GT2Connection connection, const GT2Byte * message, int len); -GT2Bool gti2SendClientChallenge(GT2Connection connection, const char challenge[GTI2_CHALLENGE_LEN]); -GT2Bool gti2SendServerChallenge(GT2Connection connection, const char response[GTI2_RESPONSE_LEN], const char challenge[GTI2_CHALLENGE_LEN]); -GT2Bool gti2SendClientResponse(GT2Connection connection, const char response[GTI2_RESPONSE_LEN], const char * message, int len); -GT2Bool gti2SendAccept(GT2Connection connection); -GT2Bool gti2SendReject(GT2Connection connection, const GT2Byte * message, int len); -GT2Bool gti2SendClose(GT2Connection connection); -GT2Bool gti2SendKeepAlive(GT2Connection connection); -GT2Bool gti2SendAck(GT2Connection connection); -GT2Bool gti2SendNack(GT2Connection connection, unsigned short SNMin, unsigned short SNMax); -GT2Bool gti2SendPing(GT2Connection connection); -GT2Bool gti2SendPong(GT2Connection connection, GT2Byte * message, int len); -GT2Bool gti2SendClosed(GT2Connection connection); -GT2Bool gti2SendClosedOnSocket(GT2Socket socket, unsigned int ip, unsigned short port); -GT2Bool gti2ResendMessage(GT2Connection connection, GTI2OutgoingBufferMessage * message); -GT2Bool gti2HandleConnectionReset(GT2Socket socket, unsigned int ip, unsigned short port); -GT2Bool gti2WasMessageIDConfirmed(const GT2Connection connection, GT2MessageID messageID); - -#endif diff --git a/subprojects/gamespy/include/gs/gt2/gt2Socket.h b/subprojects/gamespy/include/gs/gt2/gt2Socket.h deleted file mode 100644 index a55e40a44f..0000000000 --- a/subprojects/gamespy/include/gs/gt2/gt2Socket.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef _GT2_SOCKET_H_ -#define _GT2_SOCKET_H_ - -#include "gt2Main.h" - -GT2Result gti2CreateSocket(GT2Socket * socket, const char * localAddress, int outgoingBufferSize, int incomingBufferSize, gt2SocketErrorCallback callback); -void gti2CloseSocket(GT2Socket socket); -void gti2Listen(GT2Socket socket, gt2ConnectAttemptCallback callback); -GT2Result gti2NewSocketConnection(GT2Socket socket, GT2Connection * connection, unsigned int ip, unsigned short port); -void gti2FreeSocketConnection(GT2Connection connection); -GT2Connection gti2SocketFindConnection(GT2Socket socket, unsigned int ip, unsigned short port); -GT2Bool gti2SocketSend(GT2Socket socket, unsigned int ip, unsigned short port, const GT2Byte * message, int len); -GT2Bool gti2SocketConnectionsThink(GT2Socket socket); -void gti2FreeClosedConnections(GT2Socket socket); -void gti2SocketError(GT2Socket socket); - -#endif diff --git a/subprojects/gamespy/include/gs/gt2/gt2Utility.h b/subprojects/gamespy/include/gs/gt2/gt2Utility.h deleted file mode 100644 index f4ac32a2ef..0000000000 --- a/subprojects/gamespy/include/gs/gt2/gt2Utility.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef _GT2_UTILITY_H_ -#define _GT2_UTILITY_H_ - -#include "gt2Main.h" - -void gti2MessageCheck(const GT2Byte ** message, int * len); -#ifdef RECV_LOG -void gti2LogMessage(unsigned int fromIP, unsigned short fromPort, unsigned int toIP, unsigned short toPort, const GT2Byte * message, int len); -#endif - -#endif diff --git a/subprojects/gamespy/include/gs/hashtable.h b/subprojects/gamespy/include/gs/hashtable.h deleted file mode 100644 index b010b199fa..0000000000 --- a/subprojects/gamespy/include/gs/hashtable.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef _HASHTABLE_H -#define _HASHTABLE_H - -typedef struct HashImplementation * HashTable; -typedef int (* TableHashFn)(const void * elem, int numBuckets); - -#if defined(WIN32) -typedef int (__cdecl * TableCompareFn)(const void * elem1, const void * elem2); -#else -typedef int (* TableCompareFn)(const void * elem1, const void * elem2); -#endif - -typedef void (* TableMapFn)(void * elem, void * clientData); -typedef int (* TableMapFn2)(void * elem, void * clientData); -typedef void (* TableElementFreeFn)(void * elem); - -#ifdef __cplusplus -extern "C" { -#endif - -HashTable TableNew(int elemSize, int nBuckets, TableHashFn hashFn, TableCompareFn compFn, TableElementFreeFn freeFn); -HashTable TableNew2(int elemSize, int nBuckets, int nChains, TableHashFn hashFn, TableCompareFn compFn, TableElementFreeFn freeFn); -void TableFree(HashTable table); -int TableCount(HashTable table); -void TableEnter(HashTable table, const void * newElem); -int TableRemove(HashTable table, const void * delElem); -void * TableLookup(HashTable table, const void * elemKey); -void TableMap(HashTable table, TableMapFn fn, void * clientData); -void TableMapSafe(HashTable table, TableMapFn fn, void * clientData); -void * TableMap2(HashTable table, TableMapFn2 fn, void * clientData); -void * TableMapSafe2(HashTable table, TableMapFn2 fn, void * clientData); -void TableClear(HashTable table); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/gamespy/include/gs/md5.h b/subprojects/gamespy/include/gs/md5.h deleted file mode 100644 index e4885c54b2..0000000000 --- a/subprojects/gamespy/include/gs/md5.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef _MD5_H_ -#define _MD5_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef PROTOTYPES -#define PROTOTYPES 1 -#endif - -typedef unsigned char * POINTER; -typedef unsigned short int UINT2; -typedef unsigned int UINT4; - -#if PROTOTYPES -#define PROTO_LIST(list) list -#else -#define PROTO_LIST(list) () -#endif - -typedef struct { - UINT4 state[4]; - UINT4 count[2]; - unsigned char buffer[64]; -} MD5_CTX; - -void MD5Init PROTO_LIST((MD5_CTX *)); -void MD5Update PROTO_LIST((MD5_CTX *, unsigned char *, unsigned int)); -void MD5Final PROTO_LIST((unsigned char [16], MD5_CTX *)); -void MD5Print PROTO_LIST((unsigned char [16], char[33])); -void MD5Digest PROTO_LIST((unsigned char *, unsigned int, char[33])); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/gamespy/include/gs/natneg/natneg.h b/subprojects/gamespy/include/gs/natneg/natneg.h deleted file mode 100644 index 654a6095b0..0000000000 --- a/subprojects/gamespy/include/gs/natneg/natneg.h +++ /dev/null @@ -1,57 +0,0 @@ -#ifndef _NATNEG_H_ -#define _NATNEG_H_ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define NATNEG_MAGIC_LEN 6 -#define NN_MAGIC_0 0xFD -#define NN_MAGIC_1 0xFC -#define NN_MAGIC_2 0x1E -#define NN_MAGIC_3 0x66 -#define NN_MAGIC_4 0x6A -#define NN_MAGIC_5 0xB2 - -typedef enum { - ns_initsent, - ns_initack, - ns_connectping, - ns_finished, - ns_canceled -} NegotiateState; - -typedef enum { - nr_success, - nr_deadbeatpartner, - nr_inittimeout, - nr_unknownerror -} NegotiateResult; - -typedef enum { - ne_noerror, - ne_allocerror, - ne_socketerror, - ne_dnserror -} NegotiateError; - -typedef void (* NegotiateProgressFunc)(NegotiateState state, void * userdata); -typedef void (* NegotiateCompletedFunc)(NegotiateResult result, SOCKET gamesocket, struct sockaddr_in * remoteaddr, void * userdata); - -extern unsigned char NNMagicData[]; -extern char * Matchup2Hostname; -extern char * Matchup1Hostname; - -NegotiateError NNBeginNegotiation(int cookie, int clientindex, NegotiateProgressFunc progresscallback, NegotiateCompletedFunc completedcallback, void * userdata); -NegotiateError NNBeginNegotiationWithSocket(SOCKET gamesocket, int cookie, int clientindex, NegotiateProgressFunc progresscallback, NegotiateCompletedFunc completedcallback, void * userdata); -void NNThink(); -void NNProcessData(char * data, int len, struct sockaddr_in * fromaddr); -void NNCancel(int cookie); -void NNFreeNegotiateList(); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/gamespy/include/gs/natneg/nninternal.h b/subprojects/gamespy/include/gs/natneg/nninternal.h deleted file mode 100644 index 446d6d53fc..0000000000 --- a/subprojects/gamespy/include/gs/natneg/nninternal.h +++ /dev/null @@ -1,67 +0,0 @@ -#ifndef _NNINTERNAL_H_ -#define _NNINTERNAL_H_ - -#include "natneg.h" - -#define MATCHUP1_HOSTNAME "natneg1.gs.nintendowifi.net" -#define MATCHUP2_HOSTNAME "natneg2.gs.nintendowifi.net" -#define MATCHUP_PORT 27901 -#define FINISHED_NOERROR 0 -#define FINISHED_ERROR_DEADBEAT_PARTNER 1 -#define FINISHED_ERROR_INIT_PACKETS_TIMEDOUT 2 -#define INIT_RETRY_TIME 500 -#define INIT_RETRY_COUNT 30 -#define NNINBUF_LEN 512 -#define PING_RETRY_TIME 700 -#define PING_RETRY_COUNT 12 -#define FINISHED_IDLE_TIME 5000 -#define PARTNER_WAIT_TIME 10000 -#define NN_PROTVER 2 -#define NN_PT_GP 0 -#define NN_PT_NN1 1 -#define NN_PT_NN2 2 -#define NN_INIT 0 -#define NN_INITACK 1 -#define NN_ERTTEST 2 -#define NN_ERTACK 3 -#define NN_STATEUPDATE 4 -#define NN_CONNECT 5 -#define NN_CONNECT_ACK 6 -#define NN_CONNECT_PING 7 -#define NN_BACKUP_TEST 8 -#define NN_BACKUP_ACK 9 -#ifndef _PS2 -#pragma pack(1) -#endif -#define INITPACKET_SIZE 21 -#define INITPACKET_ADDRESS_OFFSET 15 -#define CONNECTPACKET_SIZE 20 - -typedef struct _InitPacket { - unsigned char magic[NATNEG_MAGIC_LEN]; - unsigned char version; - unsigned char packettype; - int cookie; - unsigned char porttype; - unsigned char clientindex; - unsigned char usegameport; - unsigned int localip; - unsigned short localport; -} InitPacket; - -typedef struct _ConnectPacket { - unsigned char magic[NATNEG_MAGIC_LEN]; - unsigned char version; - unsigned char packettype; - int cookie; - unsigned int remoteIP; - unsigned short remotePort; - unsigned char gotyourdata; - unsigned char finished; -} ConnectPacket; - -#ifndef _PS2 -#pragma pack() -#endif - -#endif diff --git a/subprojects/gamespy/include/gs/nonport.h b/subprojects/gamespy/include/gs/nonport.h deleted file mode 100644 index 21ac387e29..0000000000 --- a/subprojects/gamespy/include/gs/nonport.h +++ /dev/null @@ -1,673 +0,0 @@ -#ifndef _NONPORT_H_ -#define _NONPORT_H_ - -#ifndef GSI_MEM_ONLY - -#ifdef __mips64 - #if !defined(SN_SYSTEMS) && !defined(EENET) && !defined(INSOCK) - #define EENET - #endif - #ifndef _PS2 - #define _PS2 - #endif -#endif - -#if defined(_LINUX) || defined(_MACOSX) - #define _UNIX -#endif - -#include -#include -#include - -#if defined(_XBOX) - #include -#elif defined(_WIN32) - #define WIN32_LEAN_AND_MEAN - #include - #ifdef __WINSOCK_2_0__ - #include - #else - #include - #endif -#elif defined(_PS2) - #ifdef EENET - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #endif - #include - #include - #include - #include - #include - #include - #include - #include - #include - #ifdef SN_SYSTEMS - - #undef FD_CLR - #undef FD_ZERO - #undef FD_SET - #undef FD_ISSET - #undef FD_SETSIZE - #undef fd_set - #include "snskdefs.h" - #include "sntypes.h" - #include "snsocket.h" - #include "sneeutil.h" - #include "sntcutil.h" - #endif - #ifdef INSOCK - #include "libinsck.h" - #include "libnet.h" - #include "sys/errno.h" - - #endif -#elif defined(_UNIX) - #include - #include - #include - #include - #include - #include - #include - #include - - #ifndef NOFILE - - #include - #undef NOFILE - #else - - #include - #endif - - #include - #include - #include - #include - - #include -#elif defined(_NITRO) - #include - #define _MD5_H_ - #include - #undef _MD5_H_ - #include - -#else - #error The GameSpy SDKs do not support this operating system -#endif - -#if defined(GSI_UNICODE) - #include -#endif - -#ifndef UNDER_CE -//#include - #if defined(_MACOSX) - #undef _T - #endif -#else -int isdigit(int c); -int isxdigit(int c); -int isalnum(int c); -int isspace(int c); -int isgraph(int c); -#endif - -#undef _vftprintf -#undef _ftprintf -#undef _tprintf -#undef _tsnprintf -#undef _tstrcpy -#undef _tfopen -#undef _tstrcat -#undef _tstrlen -#undef _T - -#ifdef GSI_UNICODE - #define _vftprintf vfwprintf - #define _ftprintf fwprintf - #define _stprintf swprintf - #define _tprintf wprintf - #define _tcscpy wcscpy - #define _tcscat wcscat - #define _tcslen wcslen - #define _tfopen _wfopen - #define _T(a) L ## a - - #if defined(_WIN32) || defined(_PS2) - #define _tsnprintf _snwprintf - #else - #define _tsnprintf swprintf - #endif -#else - #define _vftprintf vfprintf - #define _ftprintf fprintf - #define _stprintf sprintf - #define _tprintf printf - #define _tcscpy strcpy - #define _tcscat strcat - #define _tcslen strlen - #define _tfopen fopen - #define _T(a) a - - #if defined(_WIN32) - #define _tsnprintf _snprintf - #else - #define _tsnprintf snprintf - #endif -#endif - -#if defined(_WIN32) - #define snprintf _snprintf -#endif - -#ifdef UNDER_CE -#include -#endif - -#if defined(UNDER_CE) - #define assert(a) -#else - #include -#endif - -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#if defined(GSI_MEM_MANAGED) - - #define gsimalloc gsiManagedMalloc - #define gsifree gsiManagedFree - #define gsirealloc gsiManagedRealloc - #define gsimemalign gsiManagedMemalign - -void * gsiManagedMalloc(size_t size); -void * gsiManagedRealloc(void * ptr, size_t size); -void gsiManagedFree(void * ptr); -void * gsiManagedMemalign(size_t boundary, size_t size); - -typedef void * GSIMemoryMgrPtr; -GSIMemoryMgrPtr gsMemMgrCreate(void * thePoolBuffer, size_t thePoolSize); -void gsMemMgrDestroy(); - -void gsMemMgrDumpStats(); -void gsMemMgrDumpAllocations(); -void gsMemMgrValidateMemoryPool(); - -#elif defined(GSI_MEM_TRACK) - -void * gsimalloctrack(size_t size); -void gsifreetrack(void * ptr); -void * gsirealloctrack(void * ptr, size_t size); - #define gsimalloc gsimalloctrack - #define gsifree gsifreetrack - #define gsirealloc gsirealloctrack - -extern size_t gsimemtrack_total; -extern size_t gsimemtrack_peak; -extern int gsimemtrack_num; - -#else -#if defined(_NITRO) - #define gsimalloc DWCi_GsMalloc - #define gsifree DWCi_GsFree - #define gsirealloc DWCi_GsRealloc - #define gsimemalign DWCi_GsMemalign -extern void * DWCi_GsMalloc(size_t size); -extern void DWCi_GsFree(void * ptr); -extern void * DWCi_GsRealloc(void * ptr, size_t size); -extern void * DWCi_GsMemalign(size_t boundary, size_t size); -#else - - #define gsimalloc malloc - #define gsifree free - #define gsirealloc realloc - #define gsimemalign memalign -#endif -#endif - -#ifndef GSI_MEM_ONLY - -#if (defined(__MWERKS__) && !defined(_NITRO)) || defined(WIN32) - #define GSI_UNUSED(x) x -#elif defined(_PS2) || defined(_NITRO) - #define GSI_UNUSED(x) {void * y = &x; y = NULL;} -#else - #define GSI_UNUSED(x) -#endif - -#if defined(_INTEGRAL_MAX_BITS) && !defined(GSI_MAX_INTEGRAL_BITS) - #define GSI_MAX_INTEGRAL_BITS _INTEGRAL_MAX_BITS -#else - #define GSI_MAX_INTEGRAL_BITS 32 -#endif - -typedef char gsi_i8; -typedef unsigned char gsi_u8; -typedef short gsi_i16; -typedef unsigned short gsi_u16; -typedef int gsi_i32; -typedef unsigned int gsi_u32; -typedef gsi_i32 goa_int32; -typedef gsi_u32 goa_uint32; - -typedef int gsi_bool; -#define gsi_false ((gsi_bool)0) -#define gsi_true ((gsi_bool)1) -#define gsi_is_false(x) ((x) == gsi_false) -#define gsi_is_true(x) ((x) != gsi_false) - -typedef unsigned int gsi_time; -#ifdef _PS2 -typedef signed long gsi_i64; -typedef unsigned long gsi_u64; -#elif defined(_WIN32) - #if (!defined(_M_IX86) || (defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 64)) -typedef __int64 gsi_i64; -typedef unsigned __int64 gsi_u64; - #endif -#elif defined(_NITRO) -typedef s64 gsi_i64; -typedef u64 gsi_u64; -#else -typedef long long gsi_i64; -typedef unsigned long long gsi_u64; -#endif - -#ifndef GSI_UNICODE - #define gsi_char char -#else - #define gsi_char unsigned short -#endif - -#if defined(_WIN32) && !defined(_XBOX) -typedef CRITICAL_SECTION GSICriticalSection; -typedef HANDLE GSISemaphoreID; -typedef HANDLE GSIThreadID; -typedef DWORD (WINAPI * GSThreadFunc)(void * arg); -#elif defined(_PS2) -typedef int GSIThreadID; -typedef int GSISemaphoreID; - -typedef struct { - GSISemaphoreID mSemaphore; - GSIThreadID mOwnerThread; - gsi_u32 mEntryCount; - gsi_u32 mPad; -} GSICriticalSection; -typedef void (* GSThreadFunc)(void * arg); -#elif defined(_NITRO) -typedef OSMutex GSICriticalSection; -typedef int GSISemaphoreID; -typedef OSThread GSIThreadID; -typedef void (* GSThreadFunc)(void * arg); -#else - #define GSI_NO_THREADS -#endif - -#define GSI_MIN_I8 (-127 - 1) -#define GSI_MAX_I8 127 -#define GSI_MAX_U8 0xFF - -#define GSI_MIN_I16 (-32767i 16 - 1) -#define GSI_MAX_I16 32767i 16 -#define GSI_MAX_U16 0xffffui 16 - -#define GSI_MIN_I32 (-2147483647 - 1) -#define GSI_MAX_I32 2147483647 -#define GSI_MAX_U32 0xffffffffui32 - -#if (GSI_MAX_INTEGRAL_BITS >= 64) -#define GSI_MIN_I64 (-9223372036854775807 - 1) -#define GSI_MAX_I64 9223372036854775807 -#define GSI_MAX_U64 0xffffffffffffffffui64 -#endif - -gsi_time current_time(); -gsi_time current_time_hires(); -void msleep(gsi_time msec); - -void Util_RandSeed(unsigned long seed); -int Util_RandInt(int low, int high); - -void B64Encode(const char * input, char * output, int inlen, int encodingType); -void B64Decode(char * input, char * output, int * len, int encodingType); - -void SocketStartUp(); -void SocketShutDown(); - -#ifndef SOCKET_ERROR - #define SOCKET_ERROR (-1) -#endif - -#ifndef INADDR_NONE - #define INADDR_NONE 0xffffffff -#endif - -#ifndef INVALID_SOCKET - #define INVALID_SOCKET (-1) -#endif - -#if defined(_WIN32) && !defined(UNDER_CE) - #define strcasecmp _stricmp - #define strncasecmp _strnicmp -#else -char * _strlwr(char * string); -char * _strupr(char * string); -#endif - -#undef strdup -#define strdup goastrdup -#undef _strdup -#define _strdup goastrdup -char * goastrdup(const char * src); - -#if defined(UNDER_CE) -int strcasecmp(const char * string1, const char * string2); -int strncasecmp(const char * string1, const char * string2, size_t count); -#endif - -#if !defined(_WIN32) && !defined(_NITRO) -typedef int SOCKET; -typedef struct sockaddr SOCKADDR; -typedef struct sockaddr_in SOCKADDR_IN; -typedef struct in_addr IN_ADDR; -typedef struct hostent HOSTENT; -typedef struct timeval TIMEVAL; -#endif - -#if defined(_XBOX) -typedef int HOSTENT; -char * inet_ntoa(IN_ADDR in_addr); -#endif - -#if defined(SN_SYSTEMS) - #define IPPROTO_TCP PF_INET - #define IPPROTO_UDP PF_INET - #define FD_SETSIZE SN_MAX_SOCKETS - -int GOAGetLastError(SOCKET s); - - #if !defined(__MWERKS__) - #define send(s, b, l, f) (int)send(s, b, (unsigned long)l, f) - #define recv(s, b, l, f) (int)recv(s, b, (unsigned long)l, f) - #define sendto(s, b, l, f, a, al) (int)sendto(s, b, (unsigned long)l, f, a, al) - #define recvfrom(s, b, l, f, a, al) (int)recvfrom(s, b, (unsigned long)l, f, a, al) - #endif -#endif - -#ifdef EENET - #define GOAGetLastError(s) sceEENetErrno - #define closesocket sceEENetClose -#endif - -#ifdef INSOCK - - #define NETBUFSIZE (32768) - - #define GOAGetLastError(s) sceInsockErrno - #define closesocket(s) sceInsockShutdown(s, SCE_INSOCK_SHUT_RDWR) -#endif - -#ifdef _UNIX - #define GOAGetLastError(s) errno - #define closesocket close -#endif - -#if !defined(_WIN32) - #define ioctlsocket ioctl -#endif - -#if defined(_WIN32) - #define GOAGetLastError(s) WSAGetLastError() -#endif - -#if defined(_NITRO) - #define WSAEWOULDBLOCK SO_EWOULDBLOCK - #define WSAEINPROGRESS SO_EINPROGRESS - #define WSAEALREADY SO_EALREADY - #define WSAENOTSOCK SO_ENOTSOCK - #define WSAEDESTADDRREQ SO_EDESTADDRREQ - #define WSAEMSGSIZE SO_EMSGSIZE - #define WSAEPROTOTYPE SO_EPROTOTYPE - #define WSAENOPROTOOPT SO_ENOPROTOOPT - #define WSAEPROTONOSUPPORT SO_EPROTONOSUPPORT - #define WSAEOPNOTSUPP SO_EOPNOTSUPP - #define WSAEAFNOSUPPORT SO_EAFNOSUPPORT - #define WSAEADDRINUSE SO_EADDRINUSE - #define WSAEADDRNOTAVAIL SO_EADDRNOTAVAIL - #define WSAENETDOWN SO_ENETDOWN - #define WSAENETUNREACH SO_ENETUNREACH - #define WSAENETRESET SO_ENETRESET - #define WSAECONNABORTED SO_ECONNABORTED - #define WSAECONNRESET SO_ECONNRESET - #define WSAENOBUFS SO_ENOBUFS - #define WSAEISCONN SO_EISCONN - #define WSAENOTCONN SO_ENOTCONN - #define WSAETIMEDOUT SO_ETIMEDOUT - #define WSAECONNREFUSED SO_ECONNREFUSED - #define WSAELOOP SO_ELOOP - #define WSAENAMETOOLONG SO_ENAMETOOLONG - #define WSAEHOSTUNREACH SO_EHOSTUNREACH - #define WSAENOTEMPTY SO_ENOTEMPTY - #define WSAEDQUOT SO_EDQUOT - #define WSAESTALE SO_ESTALE - #define WSAEINVAL SO_EINVAL -#elif !defined(_WIN32) - #define WSAEWOULDBLOCK EWOULDBLOCK - #define WSAEINPROGRESS EINPROGRESS - #define WSAEALREADY EALREADY - #define WSAENOTSOCK ENOTSOCK - #define WSAEDESTADDRREQ EDESTADDRREQ - #define WSAEMSGSIZE EMSGSIZE - #define WSAEPROTOTYPE EPROTOTYPE - #define WSAENOPROTOOPT ENOPROTOOPT - #define WSAEPROTONOSUPPORT EPROTONOSUPPORT - #define WSAESOCKTNOSUPPORT ESOCKTNOSUPPORT - #define WSAEOPNOTSUPP EOPNOTSUPP - #define WSAEPFNOSUPPORT EPFNOSUPPORT - #define WSAEAFNOSUPPORT EAFNOSUPPORT - #define WSAEADDRINUSE EADDRINUSE - #define WSAEADDRNOTAVAIL EADDRNOTAVAIL - #define WSAENETDOWN ENETDOWN - #define WSAENETUNREACH ENETUNREACH - #define WSAENETRESET ENETRESET - #define WSAECONNABORTED ECONNABORTED - #define WSAECONNRESET ECONNRESET - #define WSAENOBUFS ENOBUFS - #define WSAEISCONN EISCONN - #define WSAENOTCONN ENOTCONN - #define WSAESHUTDOWN ESHUTDOWN - #define WSAETOOMANYREFS ETOOMANYREFS - #define WSAETIMEDOUT ETIMEDOUT - #define WSAECONNREFUSED ECONNREFUSED - #define WSAELOOP ELOOP - #define WSAENAMETOOLONG ENAMETOOLONG - #define WSAEHOSTDOWN EHOSTDOWN - #define WSAEHOSTUNREACH EHOSTUNREACH - #define WSAENOTEMPTY ENOTEMPTY - #define WSAEPROCLIM EPROCLIM - #define WSAEUSERS EUSERS - #define WSAEDQUOT EDQUOT - #define WSAESTALE ESTALE - #define WSAEREMOTE EREMOTE - #define WSAEINVAL EINVAL -#endif - -#if defined(_NITRO) - #define AF_INET SO_PF_INET - #define SOCK_DGRAM SO_SOCK_DGRAM - #define SOCK_STREAM SO_SOCK_STREAM - #define IPPROTO_UDP 0 - #define IPPROTO_TCP 0 - #define INADDR_ANY SO_INADDR_ANY - #define SOL_SOCKET SO_SOL_SOCKET - #define SO_SNDBUF SO_SO_SNDBUF - #define SO_RCVBUF SO_SO_RCVBUF - #define SO_REUSEADDR SO_SO_REUSEADDR - -typedef int SOCKET; -typedef struct SOSockAddr SOCKADDR; - #define sockaddr SOSockAddr -typedef struct SOSockAddrIn SOCKADDR_IN; - #define sockaddr_in SOSockAddrIn - #define sin_family family - #define sin_port port - #define sin_addr addr -typedef struct SOInAddr IN_ADDR; - #define in_addr SOInAddr - #define s_addr addr -typedef struct SOHostEnt HOSTENT; - #define hostent SOHostEnt - #define h_name name - #define h_aliases aliases - #define h_addrtype addrType - #define h_length length - #define h_addr_list addrList - #define h_addr addrList[0] - -int socket(int pf, int type, int protocol); -int closesocket(SOCKET sock); -int shutdown(SOCKET sock, int how); -int bind(SOCKET sock, const SOCKADDR * addr, int len); - -int connect(SOCKET sock, const SOCKADDR * addr, int len); -int listen(SOCKET sock, int backlog); -SOCKET accept(SOCKET sock, SOCKADDR * addr, int * len); - -int recv(SOCKET sock, char * buf, int len, int flags); -int recvfrom(SOCKET sock, char * buf, int len, int flags, SOCKADDR * addr, int * fromlen); -int send(SOCKET sock, const char * buf, int len, int flags); -int sendto(SOCKET sock, const char * buf, int len, int flags, const SOCKADDR * addr, int tolen); - -int getsockopt(SOCKET sock, int level, int optname, char * optval, int * optlen); -int setsockopt(SOCKET sock, int level, int optname, const char * optval, int optlen); - - #define gethostbyaddr(a, l, t) SO_GetHostByAddr(a, l, t) - #define gethostbyname(n) SO_GetHostByName(n) - -int getsockname(SOCKET sock, SOCKADDR * addr, int * len); - - #define htonl(l) SO_HtoNl(l) - #define ntohl(l) SO_NtoHl(l) - #define htons(s) SO_HtoNs(s) - #define ntohs(s) SO_NtoHs(s) - - #define inet_ntoa(n) SO_InetNtoA(n) -unsigned long inet_addr(const char * name); - -int GOAGetLastError(SOCKET sock); -#endif - -#ifndef max -#define max(a, b) (((a) > (b)) ? (a) : (b)) -#define min(a, b) (((a) < (b)) ? (a) : (b)) -#endif - -int SetSockBlocking(SOCKET sock, int isblocking); -int SetSockBroadcast(SOCKET sock); -int DisableNagle(SOCKET sock); -int SetReceiveBufferSize(SOCKET sock, int size); -int SetSendBufferSize(SOCKET sock, int size); -int GetReceiveBufferSize(SOCKET sock); -int GetSendBufferSize(SOCKET sock); -int CanReceiveOnSocket(SOCKET sock); -int CanSendOnSocket(SOCKET sock); -int GSISocketSelect(SOCKET theSocket, int * theReadFlag, int * theWriteFlag, int * theExceptFlag); - -HOSTENT * getlocalhost(void); - -int IsPrivateIP(IN_ADDR * addr); - -#if defined(SN_SYSTEMS) - #define gethostbyaddr(a, b, c) NULL -#endif - -gsi_u32 gsiGetBroadcastIP(void); - -#if !defined(GSI_NO_THREADS) - -typedef struct GSIResolveHostnameInfo * GSIResolveHostnameHandle; -#define GSI_STILL_RESOLVING_HOSTNAME 0 -#define GSI_ERROR_RESOLVING_HOSTNAME 0xFFFFFFFF - -int gsiStartResolvingHostname(const char * hostname, GSIResolveHostnameHandle * handle); - -void gsiCancelResolvingHostname(GSIResolveHostnameHandle handle); - -unsigned int gsiGetResolvedIP(GSIResolveHostnameHandle handle); - -int gsiStartThread(GSThreadFunc aThreadFunc, gsi_u32 theStackSize, void * arg, GSIThreadID * theThreadIdOut); -void gsiCancelThread(GSIThreadID theThreadID); -void gsiCleanupThread(GSIThreadID theThreadID); - -gsi_u32 gsiHasThreadShutdown(GSIThreadID theThreadID); - -void gsiInitializeCriticalSection(GSICriticalSection * theCrit); -void gsiEnterCriticalSection(GSICriticalSection * theCrit); -void gsiLeaveCriticalSection(GSICriticalSection * theCrit); -void gsiDeleteCriticalSection(GSICriticalSection * theCrit); - -GSISemaphoreID gsiCreateSemaphore(gsi_i32 theInitialCount, gsi_i32 theMaxCount, char * theName); -gsi_u32 gsiWaitForSemaphore(GSISemaphoreID theSemaphore, gsi_u32 theTimeoutMs); -void gsiReleaseSemaphore(GSISemaphoreID theSemaphore, gsi_i32 theReleaseCount); -void gsiCloseSemaphore(GSISemaphoreID theSemaphore); -#endif - -#if defined(UNDER_CE) || defined(_NITRO) -//time_t time(time_t *timer); -#else - #include -#endif - -#if defined(UNDER_CE) || defined(_PS2) || defined(_NITRO) - #define NOFILE -#endif - -#ifndef SOMAXCONN - #define SOMAXCONN 5 -#endif - -typedef const char * (* GetUniqueIDFunction)(); - -extern GetUniqueIDFunction GOAGetUniqueID; - -#ifdef _PS2 -extern int wprintf(const wchar_t *, ...); -#endif - -#include "gsiDebug.h" - -#define XXTEA_KEY_SIZE 17 - -gsi_i8 * gsXxteaEncrypt(const gsi_i8 * iStr, gsi_i32 iLength, gsi_i8 key[XXTEA_KEY_SIZE], gsi_i32 * oLength); -gsi_i8 * gsXxteaDecrypt(const gsi_i8 * iStr, gsi_i32 iLength, gsi_i8 key[XXTEA_KEY_SIZE], gsi_i32 * oLength); - -#if defined(_DEBUG) -void gsiCheckStack(void); -#else - #define gsiCheckStack() -#endif - -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/gamespy/include/gs/qr2/qr2.h b/subprojects/gamespy/include/gs/qr2/qr2.h deleted file mode 100644 index 67b3a4d0a3..0000000000 --- a/subprojects/gamespy/include/gs/qr2/qr2.h +++ /dev/null @@ -1,112 +0,0 @@ -#ifndef _QR2_H_ -#define _QR2_H_ - -#include -#include "qr2regkeys.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef GSI_UNICODE -#define qr2_init qr2_initA -#define qr2_init_socket qr2_init_socketA -#define qr2_parse_query qr2_parse_queryA -#define qr2_buffer_add qr2_buffer_addA -#else -#define qr2_init qr2_initW -#define qr2_init_socket qr2_init_socketW -#define qr2_parse_query qr2_parse_queryW -#define qr2_buffer_add qr2_buffer_addW -#endif -#define NUM_PORTS_TO_TRY 100 -#define QR_MAGIC_1 0xFE -#define QR_MAGIC_2 0xFD -#define REQUEST_KEY_LEN 4 -#define RECENT_CLIENT_MESSAGES_TO_TRACK 10 - -typedef struct qr2_implementation_s * qr2_t; -typedef struct qr2_keybuffer_s * qr2_keybuffer_t; -typedef struct qr2_buffer_s * qr2_buffer_t; - -typedef enum { - e_qrnoerror, - e_qrwsockerror, - e_qrbinderror, - e_qrdnserror, - e_qrconnerror, - e_qrnochallengeerror -} qr2_error_t; - -typedef enum { - key_server, - key_player, - key_team -} qr2_key_type; - -typedef void (* qr2_serverkeycallback_t)(int keyid, qr2_buffer_t outbuf, void * userdata); -typedef void (* qr2_playerteamkeycallback_t)(int keyid, int index, qr2_buffer_t outbuf, void * userdata); -typedef void (* qr2_keylistcallback_t)(qr2_key_type keytype, qr2_keybuffer_t keybuffer, void * userdata); -typedef int (* qr2_countcallback_t)(qr2_key_type keytype, void * userdata); -typedef void (* qr2_adderrorcallback_t)(qr2_error_t error, gsi_char * errmsg, void * userdata); -typedef void (* qr2_natnegcallback_t)(int cookie, void * userdata); -typedef void (* qr2_clientmessagecallback_t)(gsi_char * data, int len, void * userdata); -typedef void (* qr2_publicaddresscallback_t)(unsigned int ip, unsigned short port, void * userdata); -typedef void (* cdkey_process_t)(char * buf, int len, struct sockaddr * fromaddr); - -struct qr2_implementation_s { - SOCKET hbsock; - char gamename[64]; - char secret_key[64]; - char instance_key[REQUEST_KEY_LEN]; - qr2_serverkeycallback_t server_key_callback; - qr2_playerteamkeycallback_t player_key_callback; - qr2_playerteamkeycallback_t team_key_callback; - qr2_keylistcallback_t key_list_callback; - qr2_countcallback_t playerteam_count_callback; - qr2_adderrorcallback_t adderror_callback; - qr2_natnegcallback_t nn_callback; - qr2_clientmessagecallback_t cm_callback; - qr2_publicaddresscallback_t pa_callback; - gsi_time lastheartbeat; - gsi_time lastka; - int userstatechangerequested; - int listed_state; - int ispublic; - int qport; - int read_socket; - int nat_negotiate; - struct sockaddr_in hbaddr; - cdkey_process_t cdkeyprocess; - int client_message_keys[RECENT_CLIENT_MESSAGES_TO_TRACK]; - int cur_message_key; - unsigned int publicip; - unsigned short publicport; - void * udata; -}; - -extern char qr2_hostname[64]; - -void qr2_register_natneg_callback(qr2_t qrec, qr2_natnegcallback_t nncallback); -void qr2_register_clientmessage_callback(qr2_t qrec, qr2_clientmessagecallback_t cmcallback); -void qr2_register_publicaddress_callback(qr2_t qrec, qr2_publicaddresscallback_t pacallback); -void qr2_register_key(int keyid, const gsi_char * key); -qr2_error_t qr2_init(qr2_t * qrec, const gsi_char * ip, int baseport, const gsi_char * gamename, const gsi_char * secret_key, int ispublic, int natnegotiate, qr2_serverkeycallback_t server_key_callback, qr2_playerteamkeycallback_t player_key_callback, qr2_playerteamkeycallback_t team_key_callback, qr2_keylistcallback_t key_list_callback, qr2_countcallback_t playerteam_count_callback, qr2_adderrorcallback_t adderror_callback, void * userdata); -qr2_error_t qr2_init_socket(qr2_t * qrec, SOCKET s, int boundport, const gsi_char * gamename, const gsi_char * secret_key, int ispublic, int natnegotiate, qr2_serverkeycallback_t server_key_callback, qr2_playerteamkeycallback_t player_key_callback, qr2_playerteamkeycallback_t team_key_callback, qr2_keylistcallback_t key_list_callback, qr2_countcallback_t playerteam_count_callback, qr2_adderrorcallback_t adderror_callback, void * userdata); -void qr2_think(qr2_t qrec); -void qr2_parse_query(qr2_t qrec, gsi_char * query, int len, struct sockaddr * sender); -void qr2_send_statechanged(qr2_t qrec); -void qr2_shutdown(qr2_t qrec); -void qr2_keybuffer_add(qr2_keybuffer_t keybuffer, int keyid); -void qr2_buffer_add(qr2_buffer_t outbuf, const gsi_char * value); -void qr2_buffer_add_int(qr2_buffer_t outbuf, int value); -void qr2_parse_queryA(qr2_t qrec, char * query, int len, struct sockaddr * sender); -void qr2_buffer_addA(qr2_buffer_t outbuf, const char * value); -qr2_error_t qr2_initA(qr2_t * qrec, const char * ip, int baseport, const char * gamename, const char * secret_key, int ispublic, int natnegotiate, qr2_serverkeycallback_t server_key_callback, qr2_playerteamkeycallback_t player_key_callback, qr2_playerteamkeycallback_t team_key_callback, qr2_keylistcallback_t key_list_callback, qr2_countcallback_t playerteam_count_callback, qr2_adderrorcallback_t adderror_callback, void * userdata); -qr2_error_t qr2_init_socketA(qr2_t * qrec, SOCKET s, int boundport, const char * gamename, const char * secret_key, int ispublic, int natnegotiate, qr2_serverkeycallback_t server_key_callback, qr2_playerteamkeycallback_t player_key_callback, qr2_playerteamkeycallback_t team_key_callback, qr2_keylistcallback_t key_list_callback, qr2_countcallback_t playerteam_count_callback, qr2_adderrorcallback_t adderror_callback, void * userdata); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/gamespy/include/gs/qr2/qr2regkeys.h b/subprojects/gamespy/include/gs/qr2/qr2regkeys.h deleted file mode 100644 index 25d3e14c1b..0000000000 --- a/subprojects/gamespy/include/gs/qr2/qr2regkeys.h +++ /dev/null @@ -1,57 +0,0 @@ -#ifndef _QR2REGKEYS_H_ -#define _QR2REGKEYS_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define MAX_REGISTERED_KEYS 254 -#define NUM_RESERVED_KEYS 50 -#define HOSTNAME_KEY 1 -#define GAMENAME_KEY 2 -#define GAMEVER_KEY 3 -#define HOSTPORT_KEY 4 -#define MAPNAME_KEY 5 -#define GAMETYPE_KEY 6 -#define GAMEVARIANT_KEY 7 -#define NUMPLAYERS_KEY 8 -#define NUMTEAMS_KEY 9 -#define MAXPLAYERS_KEY 10 -#define GAMEMODE_KEY 11 -#define TEAMPLAY_KEY 12 -#define FRAGLIMIT_KEY 13 -#define TEAMFRAGLIMIT_KEY 14 -#define TIMEELAPSED_KEY 15 -#define TIMELIMIT_KEY 16 -#define ROUNDTIME_KEY 17 -#define ROUNDELAPSED_KEY 18 -#define PASSWORD_KEY 19 -#define GROUPID_KEY 20 -#define PLAYER__KEY 21 -#define SCORE__KEY 22 -#define SKILL__KEY 23 -#define PING__KEY 24 -#define TEAM__KEY 25 -#define DEATHS__KEY 26 -#define PID__KEY 27 -#define TEAM_T_KEY 28 -#define SCORE_T_KEY 29 -#ifndef GSI_UNICODE - #define qr2_register_key qr2_register_keyA -#else - #define qr2_register_key qr2_register_keyW -#endif - -extern const char * qr2_registered_key_list[]; -void qr2_register_key(int keyid, const gsi_char * key); - -void qr2_internal_key_list_append(char * theKey); -void qr2_internal_key_list_free(); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/gamespy/include/gs/serverbrowsing/sb_ascii.h b/subprojects/gamespy/include/gs/serverbrowsing/sb_ascii.h deleted file mode 100644 index d35317f88a..0000000000 --- a/subprojects/gamespy/include/gs/serverbrowsing/sb_ascii.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef _SB_ASCII_H -#define _SB_ASCII_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -ServerBrowser ServerBrowserNewA(const char * queryForGamename, const char * queryFromGamename, const char * queryFromKey, int queryFromVersion, int maxConcUpdates, int queryVersion, SBBool lanBrowse, ServerBrowserCallback callback, void * instance); -SBError ServerBrowserUpdateA(ServerBrowser sb, SBBool async, SBBool disconnectOnComplete, const unsigned char * basicFields, int numBasicFields, const char * serverFilter); -SBError ServerBrowserLimitUpdateA(ServerBrowser sb, SBBool async, SBBool disconnectOnComplete, const unsigned char * basicFields, int numBasicFields, const char * serverFilter, int maxServers); -SBError ServerBrowserAuxUpdateIPA(ServerBrowser sb, const char * ip, unsigned short port, SBBool viaMaster, SBBool async, SBBool fullUpdate); -void ServerBrowserRemoveIPA(ServerBrowser sb, const char * ip, unsigned short port); -const char * ServerBrowserErrorDescA(ServerBrowser sb, SBError error); -const char * ServerBrowserListQueryErrorA(ServerBrowser sb); -SBError ServerBrowserSendNatNegotiateCookieToServerA(ServerBrowser sb, const char * ip, unsigned short port, int cookie); -SBError ServerBrowserSendMessageToServerA(ServerBrowser sb, const char * ip, unsigned short port, const char * data, int len); -void ServerBrowserSortA(ServerBrowser sb, SBBool ascending, char * sortkey, SBCompareMode comparemode); -char * SBServerGetPublicAddress(SBServer server); -char * SBServerGetPrivateAddress(SBServer server); -const char * SBServerGetStringValueA(SBServer server, const char * keyname, const char * def); -int SBServerGetIntValueA(SBServer server, const char * key, int idefault); -double SBServerGetFloatValueA(SBServer server, const char * key, double fdefault); -SBBool SBServerGetBoolValueA(SBServer server, const char * key, SBBool bdefault); -const char * SBServerGetPlayerStringValueA(SBServer server, int playernum, const char * key, const char * sdefault); -int SBServerGetPlayerIntValueA(SBServer server, int playernum, const char * key, int idefault); -double SBServerGetPlayerFloatValueA(SBServer server, int playernum, const char * key, double fdefault); -const char * SBServerGetTeamStringValueA(SBServer server, int teamnum, const char * key, const char * sdefault); -int SBServerGetTeamIntValueA(SBServer server, int teamnum, const char * key, int idefault); -double SBServerGetTeamFloatValueA(SBServer server, int teamnum, const char * key, double fdefault); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/gamespy/include/gs/serverbrowsing/sb_crypt.h b/subprojects/gamespy/include/gs/serverbrowsing/sb_crypt.h deleted file mode 100644 index bdd115e749..0000000000 --- a/subprojects/gamespy/include/gs/serverbrowsing/sb_crypt.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef _SB_CRYPT_H -#define _SB_CRYPT_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct _GOACryptState { - unsigned char cards[256]; - unsigned char rotor; - unsigned char ratchet; - unsigned char avalanche; - unsigned char last_plain; - unsigned char last_cipher; -} GOACryptState; - -void GOACryptInit(GOACryptState * state, unsigned char * key, unsigned char keysize); -void GOAHashInit(GOACryptState * state); -unsigned char GOAEncryptByte(GOACryptState * state, unsigned char b); -void GOAEncrypt(GOACryptState * state, unsigned char * bp, int len); -unsigned char GOADecryptByte(GOACryptState * state, unsigned char b); -void GOADecrypt(GOACryptState * state, unsigned char * bp, int len); -void GOAHashFinal(GOACryptState * state, unsigned char * hash, unsigned char hashlength); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/gamespy/include/gs/serverbrowsing/sb_internal.h b/subprojects/gamespy/include/gs/serverbrowsing/sb_internal.h deleted file mode 100644 index 132991e149..0000000000 --- a/subprojects/gamespy/include/gs/serverbrowsing/sb_internal.h +++ /dev/null @@ -1,339 +0,0 @@ -#ifndef _SB_INTERNAL_H_ -#define _SB_INTERNAL_H_ - -#include -#include -#include -#include -#include -#include "sb_serverbrowsing.h" -#include -#include "sb_crypt.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define MSPORT2 28910 -#define NUM_MASTER_SERVERS 20 -#define MAX_FIELD_LIST_LEN 256 -#define MAX_POPULAR_VALUES 255 -#define MAX_MAPLOOP_LENGTH 16 -#define MAX_RECVFROM_SIZE 2048 -#define STATE_BASICKEYS (1 << 0) -#define STATE_FULLKEYS (1 << 1) -#define STATE_PENDINGBASICQUERY (1 << 2) -#define STATE_PENDINGFULLQUERY (1 << 3) -#define STATE_QUERYFAILED (1 << 4) -#define STATE_PENDINGICMPQUERY (1 << 5) -#define STATE_VALIDPING (1 << 6) -#define MAX_QUERY_MSEC 2500 -#define UNSOLICITED_UDP_FLAG 1 -#define PRIVATE_IP_FLAG 2 -#define CONNECT_NEGOTIATE_FLAG 4 -#define ICMP_IP_FLAG 8 -#define NONSTANDARD_PORT_FLAG 16 -#define NONSTANDARD_PRIVATE_PORT_FLAG 32 -#define HAS_KEYS_FLAG 64 -#define HAS_FULL_RULES_FLAG 128 -#define KEYTYPE_STRING 0 -#define KEYTYPE_BYTE 1 -#define KEYTYPE_SHORT 2 -#define LIST_CHALLENGE_LEN 8 -#define LIST_PROTOCOL_VERSION 1 -#define LIST_ENCODING_VERSION 3 -#define SERVER_LIST_REQUEST 0 -#define SERVER_INFO_REQUEST 1 -#define SEND_MESSAGE_REQUEST 2 -#define KEEPALIVE_REPLY 3 -#define MAPLOOP_REQUEST 4 -#define PLAYERSEARCH_REQUEST 5 -#define PUSH_KEYS_MESSAGE 1 -#define PUSH_SERVER_MESSAGE 2 -#define KEEPALIVE_MESSAGE 3 -#define DELETE_SERVER_MESSAGE 4 -#define MAPLOOP_MESSAGE 5 -#define PLAYERSEARCH_MESSAGE 6 -#define SEND_FIELDS_FOR_ALL 1 -#define NO_SERVER_LIST 2 -#define PUSH_UPDATES 4 -#define SEND_GROUPS 32 -#define NO_LIST_CACHE 64 -#define LIMIT_RESULT_COUNT 128 -#define SEARCH_ALL_GAMES 1 -#define SEARCH_LEFT_SUBSTRING 2 -#define SEARCH_RIGHT_SUBSTRING 4 -#define SEARCH_ANY_SUBSTRING 8 -#define MAX_QUERY_KEYS 20 -#define SL_LAN_SEARCH_TIME 2000 -#define QR2_MAGIC_1 0xFE -#define QR2_MAGIC_2 0xFD -#define NATNEG_MAGIC_LEN 6 -#define NN_MAGIC_0 0xFD -#define NN_MAGIC_1 0xFC -#define NN_MAGIC_2 0x1E -#define NN_MAGIC_3 0x66 -#define NN_MAGIC_4 0x6A -#define NN_MAGIC_5 0xB2 -#define QTYPE_BASIC 0 -#define QTYPE_FULL 1 -#define QTYPE_ICMP 2 -#define BASIC_GOA_QUERY "\\basic\\\\info\\" -#define BASIC_GOA_QUERY_LEN 13 -#define FULL_GOA_QUERY "\\status\\" -#define FULL_GOA_QUERY_LEN 8 -#define SB_ICMP_ECHO 8 -#define SB_ICMP_ECHO_REPLY 0 - -typedef enum { - pi_cryptheader, - pi_fixedheader, - pi_keylist, - pi_uniquevaluelist, - pi_servers, - pi_finished -} SBListParseState; - -typedef enum { - sl_lanbrowse, - sl_disconnected, - sl_connected, - sl_mainlist -} SBServerListState; - -typedef struct _SBKeyValuePair { - const char * key; - const char * value; -} SBKeyValuePair; - -typedef struct _SBRefString { - const char * str; -#ifdef GSI_UNICODE - const unsigned short * str_W; -#endif - int refcount; -} SBRefString; - -typedef struct _SBServerList * SBServerListPtr; -typedef struct _SBQueryEngine * SBQueryEnginePtr; - -typedef enum { - slc_serveradded, - slc_serverupdated, - slc_serverdeleted, - slc_initiallistcomplete, - slc_disconnected, - slc_queryerror, - slc_publicipdetermined -} SBListCallbackReason; - -typedef enum { - qe_updatesuccess, - qe_updatefailed, - qe_engineidle -} SBQueryEngineCallbackReason; - -typedef void (* SBListCallBackFn)(SBServerListPtr serverlist, SBListCallbackReason reason, SBServer server, void * instance); -typedef void (* SBEngineCallbackFn)(SBQueryEnginePtr engine, SBQueryEngineCallbackReason reason, SBServer server, void * instance); -typedef void (* SBMaploopCallbackFn)(SBServerListPtr serverlist, SBServer server, time_t mapChangeTime, int numMaps, char * mapList[], void * instance); -typedef void (* SBPlayerSearchCallbackFn)(SBServerListPtr serverlist, char * nick, goa_uint32 serverIP, unsigned short serverPort, time_t lastSeenTime, char * gamename, void * instance); - -typedef struct _KeyInfo { - const char * keyName; - int keyType; -} KeyInfo; - -typedef struct _SBServerList SBServerList; - -#ifdef VENGINE_SUPPORT - #define FTABLE_TYPES - #include -#endif - -struct _SBServerList { - SBServerListState state; - DArray servers; - DArray keylist; - char queryforgamename[36]; - char queryfromgamename[36]; - char queryfromkey[32]; - char mychallenge[LIST_CHALLENGE_LEN]; - char * inbuffer; - int inbufferlen; - const char * popularvalues[MAX_POPULAR_VALUES]; - int numpopularvalues; - int expectedelements; - SBListCallBackFn ListCallback; - SBMaploopCallbackFn MaploopCallback; - SBPlayerSearchCallbackFn PlayerSearchCallback; - void * instance; - char * sortkey; - SBBool sortascending; - goa_uint32 mypublicip; - goa_uint32 srcip; - unsigned short defaultport; - char * lasterror; -#ifdef GSI_UNICODE - unsigned short * lasterror_W; -#endif - SOCKET slsocket; - gsi_time lanstarttime; - int fromgamever; - GOACryptState cryptkey; - int queryoptions; - SBListParseState pstate; - const char * mLanAdapterOverride; - SBServer deadlist; -#ifdef VENGINE_SUPPORT - #define FTABLE_IMPLEMENT - #include -#endif -}; - -#ifndef SB_SERVER_DECLARED -#define SB_SERVER_DECLARED - -struct _SBServer { - goa_uint32 publicip; - unsigned short publicport; - goa_uint32 privateip; - unsigned short privateport; - goa_uint32 icmpip; - unsigned char state; - unsigned char flags; - HashTable keyvals; - gsi_time updatetime; - struct _SBServer * next; -}; -#endif - -typedef struct _SBServerFIFO { - SBServer first; - SBServer last; - int count; -} SBServerFIFO; - -typedef struct _SBQueryEngine { - int queryversion; - int maxupdates; - SBServerFIFO querylist; - SBServerFIFO pendinglist; - SOCKET querysock; - SOCKET icmpsock; - goa_uint32 mypublicip; - unsigned char serverkeys[MAX_QUERY_KEYS]; - int numserverkeys; - SBEngineCallbackFn ListCallback; - void * instance; -} SBQueryEngine; - -struct _ServerBrowser { - SBQueryEngine engine; - SBServerList list; - SBBool disconnectFlag; - SBBool dontUpdate; - goa_uint32 triggerIP; - unsigned short triggerPort; - ServerBrowserCallback BrowserCallback; - void * instance; -}; - -typedef struct _IPHeader { - gsi_u8 ip_hl_ver; - gsi_u8 ip_tos; - gsi_i16 ip_len; - gsi_u16 ip_id; - gsi_i16 ip_off; - gsi_u8 ip_ttl; - gsi_u8 ip_p; - gsi_u16 ip_sum; - struct in_addr ip_src, ip_dst; -} SBIPHeader; - -typedef struct _ICMPHeader { - gsi_u8 type; - gsi_u8 code; - gsi_u16 cksum; - union { - struct { - gsi_u16 id; - gsi_u16 sequence; - } echo; - gsi_u32 idseq; - gsi_u16 gateway; - struct { - gsi_u16 __unused; - gsi_u16 mtu; - } frag; - } un; -} SBICMPHeader; - -extern SBServer SBNullServer; -extern char * SBOverrideMasterServer; - -void SBServerListInit(SBServerList * slist, const char * queryForGamename, const char * queryFromGamename, const char * queryFromKey, int queryFromVersion, SBBool lanBrowse, SBListCallBackFn callback, void * instance); -SBError SBServerListConnectAndQuery(SBServerList * slist, const char * fieldList, const char * serverFilter, int options, int maxServers); -SBError SBServerListGetLANList(SBServerList * slist, unsigned short startport, unsigned short endport, int queryversion); -void SBServerListDisconnect(SBServerList * slist); -void SBServerListCleanup(SBServerList * slist); -void SBServerListClear(SBServerList * slist); -SBError SBGetServerRulesFromMaster(SBServerList * slist, goa_uint32 ip, unsigned short port); -SBError SBSendMessageToServer(SBServerList * slist, goa_uint32 ip, unsigned short port, const char * data, int len); -SBError SBSendNatNegotiateCookieToServer(SBServerList * slist, goa_uint32 ip, unsigned short port, int cookie); -SBError SBSendMaploopRequest(SBServerList * slist, SBServer server, SBMaploopCallbackFn callback); -SBError SBSendPlayerSearchRequest(SBServerList * slist, char * searchName, int searchOptions, int maxResults, SBPlayerSearchCallbackFn callback); -int SBServerListFindServerByIP(SBServerList * slist, goa_uint32 ip, unsigned short port); -int SBServerListFindServer(SBServerList * slist, SBServer findserver); -void SBServerListRemoveAt(SBServerList * slist, int index); -void SBServerListAppendServer(SBServerList * slist, SBServer server); -void SBServerListSort(SBServerList * slist, SBBool ascending, char * sortkey, SBCompareMode comparemode); -int SBServerListCount(SBServerList * slist); -SBServer SBServerListNth(SBServerList * slist, int i); -SBError SBListThink(SBServerList * slist); -const char * SBLastListErrorA(SBServerList * slist); -const unsigned short * SBLastListErrorW(SBServerList * slist); -void SBSetLastListErrorPtr(SBServerList * slist, char * theError); -void SBFreeDeadList(SBServerList * slist); -void SBAllocateServerList(SBServerList * slist); -SBServer SBAllocServer(SBServerList * slist, goa_uint32 publicip, unsigned short publicport); -void SBServerFree(void * elem); -void SBServerAddKeyValue(SBServer server, const char * keyname, const char * value); -void SBServerAddIntKeyValue(SBServer server, const char * keyname, int value); -void SBServerParseKeyVals(SBServer server, char * keyvals); -void SBServerParseQR2FullKeys(SBServer server, char * data, int len); -void SBServerSetFlags(SBServer server, unsigned char flags); -void SBServerSetPublicAddr(SBServer server, goa_uint32 ip, unsigned short port); -void SBServerSetPrivateAddr(SBServer server, goa_uint32 ip, unsigned short port); -void SBServerSetICMPIP(SBServer server, goa_uint32 icmpip); -void SBServerSetState(SBServer server, unsigned char state); -void SBServerSetNext(SBServer server, SBServer next); -SBServer SBServerGetNext(SBServer server); -unsigned char SBServerGetState(SBServer server); -unsigned char SBServerGetFlags(SBServer server); -unsigned short SBServerGetPublicQueryPortNBO(SBServer server); -int SBIsNullServer(SBServer server); -const char * SBRefStr(SBServerList * slist, const char * str); -void SBReleaseStr(SBServerList * slist, const char * str); -HashTable SBRefStrHash(SBServerList * slist); -void SBRefStrHashCleanup(SBServerList * slist); -void SBQueryEngineInit(SBQueryEngine * engine, int maxupdates, int queryversion, SBBool lanBrowse, SBEngineCallbackFn callback, void * instance); -void SBQueryEngineUpdateServer(SBQueryEngine * engine, SBServer server, int addfront, int querytype); -void SBQueryEngineSetPublicIP(SBQueryEngine * engine, goa_uint32 mypublicip); -SBServer SBQueryEngineUpdateServerByIP(SBQueryEngine * engine, const char * ip, unsigned short queryport, int addfront, int querytype); -void SBQueryEngineThink(SBQueryEngine * engine); -void SBQueryEngineAddQueryKey(SBQueryEngine * engine, unsigned char keyid); -void SBEngineCleanup(SBQueryEngine * engine); -void SBQueryEngineRemoveServerFromFIFOs(SBQueryEngine * engine, SBServer server); -int NTSLengthSB(char * buf, int len); -void SBEngineHaltUpdates(SBQueryEngine * engine); -SBError ServerBrowserBeginUpdate2(ServerBrowser sb, SBBool async, SBBool disconnectOnComplete, const unsigned char * basicFields, int numBasicFields, const char * serverFilter, int updateOptions, int maxServers); -#ifdef GSI_UNICODE -const char * SBServerGetStringValueA(SBServer server, const char * keyname, const char * def); -int SBServerGetIntValueA(SBServer server, const char * key, int idefault); -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/gamespy/include/gs/serverbrowsing/sb_serverbrowsing.h b/subprojects/gamespy/include/gs/serverbrowsing/sb_serverbrowsing.h deleted file mode 100644 index 76afc8da47..0000000000 --- a/subprojects/gamespy/include/gs/serverbrowsing/sb_serverbrowsing.h +++ /dev/null @@ -1,159 +0,0 @@ -#ifndef _SB_SERVERBROWSING_H -#define _SB_SERVERBROWSING_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#define MAX_FILTER_LEN 256 -#define QVERSION_GOA 0 -#define QVERSION_QR2 1 -#ifndef GSI_UNICODE -#define ServerBrowserNew ServerBrowserNewA -#define ServerBrowserUpdate ServerBrowserUpdateA -#define ServerBrowserLimitUpdate ServerBrowserLimitUpdateA -#define ServerBrowserAuxUpdateIP ServerBrowserAuxUpdateIPA -#define ServerBrowserRemoveIP ServerBrowserRemoveIPA -#define ServerBrowserSendNatNegotiateCookieToServer ServerBrowserSendNatNegotiateCookieToServerA -#define ServerBrowserSendMessageToServer ServerBrowserSendMessageToServerA -#define ServerBrowserSort ServerBrowserSortA -#define SBServerGetStringValue SBServerGetStringValueA -#define SBServerGetIntValue SBServerGetIntValueA -#define SBServerGetFloatValue SBServerGetFloatValueA -#define SBServerGetBoolValue SBServerGetBoolValueA -#define SBServerGetPlayerStringValue SBServerGetPlayerStringValueA -#define SBServerGetPlayerIntValue SBServerGetPlayerIntValueA -#define SBServerGetPlayerFloatValue SBServerGetPlayerFloatValueA -#define SBServerGetTeamStringValue SBServerGetTeamStringValueA -#define SBServerGetTeamIntValue SBServerGetTeamIntValueA -#define SBServerGetTeamFloatValue SBServerGetTeamFloatValueA -#define ServerBrowserListQueryError ServerBrowserListQueryErrorA -#define ServerBrowserErrorDesc ServerBrowserErrorDescA -#define ServerBrowserGetServerByIP ServerBrowserGetServerByIPA -#else -#define ServerBrowserNew ServerBrowserNewW -#define ServerBrowserUpdate ServerBrowserUpdateW -#define ServerBrowserLimitUpdate ServerBrowserLimitUpdateW -#define ServerBrowserAuxUpdateIP ServerBrowserAuxUpdateIPW -#define ServerBrowserRemoveIP ServerBrowserRemoveIPW -#define ServerBrowserSendNatNegotiateCookieToServer ServerBrowserSendNatNegotiateCookieToServerW -#define ServerBrowserSendMessageToServer ServerBrowserSendMessageToServerW -#define ServerBrowserSort ServerBrowserSortW -#define SBServerGetStringValue SBServerGetStringValueW -#define SBServerGetIntValue SBServerGetIntValueW -#define SBServerGetFloatValue SBServerGetFloatValueW -#define SBServerGetBoolValue SBServerGetBoolValueW -#define SBServerGetPlayerStringValue SBServerGetPlayerStringValueW -#define SBServerGetPlayerIntValue SBServerGetPlayerIntValueW -#define SBServerGetPlayerFloatValue SBServerGetPlayerFloatValueW -#define SBServerGetTeamStringValue SBServerGetTeamStringValueW -#define SBServerGetTeamIntValue SBServerGetTeamIntValueW -#define SBServerGetTeamFloatValue SBServerGetTeamFloatValueW -#define ServerBrowserListQueryError ServerBrowserListQueryErrorW -#define ServerBrowserErrorDesc ServerBrowserErrorDescW -#define ServerBrowserGetServerByIP ServerBrowserGetServerByIPW -#endif - -typedef struct _ServerBrowser * ServerBrowser; -#ifndef SBServer -typedef struct _SBServer * SBServer; -#endif - -typedef enum { - SBFalse, - SBTrue -} SBBool; - -typedef enum { - sbe_noerror, - sbe_socketerror, - sbe_dnserror, - sbe_connecterror, - sbe_dataerror, - sbe_allocerror, - sbe_paramerror -} SBError; - -typedef enum { - sb_disconnected, - sb_listxfer, - sb_querying, - sb_connected -} SBState; - -typedef enum { - sbc_serveradded, - sbc_serverupdated, - sbc_serverupdatefailed, - sbc_serverdeleted, - sbc_updatecomplete, - sbc_queryerror -} SBCallbackReason; - -typedef enum { - sbcm_int, - sbcm_float, - sbcm_strcase, - sbcm_stricase -} SBCompareMode; - -typedef void (* ServerBrowserCallback)(ServerBrowser sb, SBCallbackReason reason, SBServer server, void * instance); -typedef void (* SBServerKeyEnumFn)(gsi_char * key, gsi_char * value, void * instance); - -ServerBrowser ServerBrowserNew(const gsi_char * queryForGamename, const gsi_char * queryFromGamename, const gsi_char * queryFromKey, int queryFromVersion, int maxConcUpdates, int queryVersion, SBBool lanBrowse, ServerBrowserCallback callback, void * instance); -void ServerBrowserFree(ServerBrowser sb); -SBError ServerBrowserUpdate(ServerBrowser sb, SBBool async, SBBool disconnectOnComplete, const unsigned char * basicFields, int numBasicFields, const gsi_char * serverFilter); -SBError ServerBrowserLimitUpdate(ServerBrowser sb, SBBool async, SBBool disconnectOnComplete, const unsigned char * basicFields, int numBasicFields, const gsi_char * serverFilter, int maxServers); -SBError ServerBrowserThink(ServerBrowser sb); -SBError ServerBrowserLANUpdate(ServerBrowser sb, SBBool async, unsigned short startSearchPort, unsigned short endSearchPort); -SBError ServerBrowserAuxUpdateIP(ServerBrowser sb, const gsi_char * ip, unsigned short port, SBBool viaMaster, SBBool async, SBBool fullUpdate); -SBError ServerBrowserAuxUpdateServer(ServerBrowser sb, SBServer server, SBBool async, SBBool fullUpdate); -void ServerBrowserDisconnect(ServerBrowser sb); -SBState ServerBrowserState(ServerBrowser sb); -void ServerBrowserRemoveIP(ServerBrowser sb, const gsi_char * ip, unsigned short port); -void ServerBrowserRemoveServer(ServerBrowser sb, SBServer server); -void ServerBrowserHalt(ServerBrowser sb); -void ServerBrowserClear(ServerBrowser sb); -const gsi_char * ServerBrowserErrorDesc(ServerBrowser sb, SBError error); -const gsi_char * ServerBrowserListQueryError(ServerBrowser sb); -SBServer ServerBrowserGetServer(ServerBrowser sb, int index); -SBServer ServerBrowserGetServerByIP(ServerBrowser sb, const gsi_char * ip, unsigned short port); -int ServerBrowserCount(ServerBrowser sb); -int ServerBrowserPendingQueryCount(ServerBrowser sb); -char * ServerBrowserGetMyPublicIP(ServerBrowser sb); -unsigned int ServerBrowserGetMyPublicIPAddr(ServerBrowser sb); -SBError ServerBrowserSendNatNegotiateCookieToServer(ServerBrowser sb, const gsi_char * ip, unsigned short port, int cookie); -SBError ServerBrowserSendMessageToServer(ServerBrowser sb, const gsi_char * ip, unsigned short port, const char * data, int len); -void ServerBrowserSort(ServerBrowser sb, SBBool ascending, gsi_char * sortkey, SBCompareMode comparemode); -void ServerBrowserLANSetLocalAddr(ServerBrowser sb, const char * theAddr); -SBBool SBServerHasPrivateAddress(SBServer server); -SBBool SBServerDirectConnect(SBServer server); -int SBServerGetPing(SBServer server); -char * SBServerGetPublicAddress(SBServer server); -char * SBServerGetPrivateAddress(SBServer server); -unsigned int SBServerGetPublicInetAddress(SBServer server); -unsigned int SBServerGetPrivateInetAddress(SBServer server); -unsigned short SBServerGetPublicQueryPort(SBServer server); -unsigned short SBServerGetPrivateQueryPort(SBServer server); -SBBool SBServerHasBasicKeys(SBServer server); -SBBool SBServerHasFullKeys(SBServer server); -SBBool SBServerHasValidPing(SBServer server); -const gsi_char * SBServerGetStringValue(SBServer server, const gsi_char * keyname, const gsi_char * def); -int SBServerGetIntValue(SBServer server, const gsi_char * key, int idefault); -double SBServerGetFloatValue(SBServer server, const gsi_char * key, double fdefault); -SBBool SBServerGetBoolValue(SBServer server, const gsi_char * key, SBBool bdefault); -const gsi_char * SBServerGetPlayerStringValue(SBServer server, int playernum, const gsi_char * key, const gsi_char * sdefault); -int SBServerGetPlayerIntValue(SBServer server, int playernum, const gsi_char * key, int idefault); -double SBServerGetPlayerFloatValue(SBServer server, int playernum, const gsi_char * key, double fdefault); -const gsi_char * SBServerGetTeamStringValue(SBServer server, int teamnum, const gsi_char * key, const gsi_char * sdefault); -int SBServerGetTeamIntValue(SBServer server, int teamnum, const gsi_char * key, int idefault); -double SBServerGetTeamFloatValue(SBServer server, int teamnum, const gsi_char * key, double fdefault); -void SBServerEnumKeys(SBServer server, SBServerKeyEnumFn KeyFn, void * instance); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/gamespy/include/gs/soap.h b/subprojects/gamespy/include/gs/soap.h deleted file mode 100644 index 8e6e92dd46..0000000000 --- a/subprojects/gamespy/include/gs/soap.h +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef __SOAP_H__ -#define __SOAP_H__ - -#if defined(__cplusplus) -extern "C" { -#endif - -#include "gs/nonport.h" -#include "gsoap/stdsoap2.h" - -#define SOAP_SNSYSTEM_REGTHREADERROR 253 -#define SOAP_TIMEDOUT 254 -#define SOAP_CANCELED 255 - -typedef gsi_i32 GSSoapResult; -typedef int (* GSSoapFunc)(struct soap * theSoap, const char * theURL, const char * theService, void * theRequestData, void * theResponseData); -typedef void (* GSSoapCallbackFunc)(GSSoapResult theSoapResult, void * theRequestData, void * theResponseData, void * theUserData); - -typedef struct { - GSSoapFunc mSoapFunc; - GSSoapCallbackFunc mCallbackFunc; - const char * mURL; - const char * mService; - void * mNamespaces; - void * mRequestData; - void * mResponseData; - void * mUserData; - gsi_time mSoapTimeoutMs; - gsi_i32 mIsRunning; - gsi_i32 mIsCanceled; - GSIThreadID mThreadID; - GSISemaphoreID mShutdownSemaphoreID; - GSSoapResult mSoapResult; -} GSSoapTask; - -void gsiExecuteSoap(GSSoapFunc theFunc, const char * theURL, const char * theService, void * theNamespaces, void * theRequestData, void * theResponseData, GSSoapCallbackFunc theCallbackFunc, gsi_time theTimeoutMs, void * theUserData); - -#if defined(__cplusplus) -} -#endif - -#endif diff --git a/subprojects/gamespy/include/gs/stringutil.h b/subprojects/gamespy/include/gs/stringutil.h deleted file mode 100644 index 6129979c93..0000000000 --- a/subprojects/gamespy/include/gs/stringutil.h +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef __STRINGUTIL_H__ -#define __STRINGUTIL_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef _PS2 -#define ALIGNED __attribute__ ((aligned(16))) -#else -#define ALIGNED -#endif - -#define UCS2Char unsigned short -#define UCS2String unsigned short * -#define UTF8ByteType unsigned char -#define UTF8String char * -#define UTF8_FOLLOW_BYTE_TAG 0x80 -#define UTF8_TWO_BYTE_TAG 0xC0 -#define UTF8_THREE_BYTE_TAG 0xE0 -#define UTF8_FOUR_BYTE_TAG 0xF0 -#define UTF8_FOLLOW_BYTE_MASK 0x3F -#define UTF8_TWO_BYTE_MASK 0x1F -#define UTF8_THREE_BYTE_MASK 0x0F -#define UTF8_IS_THREE_BYTE(a) (((UTF8ByteType)a & UTF8_FOUR_BYTE_TAG) == UTF8_THREE_BYTE_TAG) -#define UTF8_IS_TWO_BYTE(a) (((UTF8ByteType)a & UTF8_THREE_BYTE_TAG) == UTF8_TWO_BYTE_TAG) -#define UTF8_IS_FOLLOW_BYTE(a) (((UTF8ByteType)a & UTF8_TWO_BYTE_TAG) == UTF8_FOLLOW_BYTE_TAG) -#define UTF8_IS_SINGLE_BYTE(a) ((UTF8ByteType)a <= 0x7F) -#define REPLACE_INVALID_CHAR '?'; - -int _ReadUCS2CharFromUTF8String(const UTF8String theUTF8String, UCS2Char * theUnicodeChar); -int _UCS2CharToUTF8String(UCS2Char theUCS2Char, UTF8String theUTF8String); -int _UCS2ToUTF8ConversionLengthOnly(const UCS2String theUCS2String); -int _UTF8ToUCS2ConversionLengthOnly(const UTF8String theUTF8String); -int AsciiToUTF8String(const char * theAsciiString, UTF8String theUTF8String); -int UTF8ToAsciiString(const UTF8String theUTF8String, char * theAsciiString); -int UCS2ToUTF8String(const UCS2String theUCS2String, UTF8String theUTF8String); -int UTF8ToUCS2String(const UTF8String theUTF8String, UCS2String theUCS2String); -int UCS2ToAsciiString(const UCS2String theUCS2String, char * theAsciiString); -int AsciiToUCS2String(const char * theAsciiString, UCS2String theUCS2String); -UTF8String UCS2ToUTF8StringAlloc(const UCS2String theUCS2String); -UCS2String UTF8ToUCS2StringAlloc(const UTF8String theUTF8String); -UTF8String * UCS2ToUTF8StringArrayAlloc(const UCS2String * theUCS2StringArray, int theNumStrings); -UCS2String * UTF8ToUCS2StringArrayAlloc(const UTF8String * theUTF8StringArray, int theNumStrings); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/gamespy/libraries/chat/asm/chatcallbacks.s b/subprojects/gamespy/libraries/chat/asm/chatcallbacks.s deleted file mode 100644 index f691d76d5c..0000000000 --- a/subprojects/gamespy/libraries/chat/asm/chatcallbacks.s +++ /dev/null @@ -1,3590 +0,0 @@ - .include "macros/function.inc" - .include "include/chatcallbacks.inc" - - - - .text - - - arm_func_start ciCallbacksArrayElementFreeFn -ciCallbacksArrayElementFreeFn: ; 0x022483C4 - stmfd sp!, {r4, lr} - movs r4, r0 - bne _022483E4 - ldr r0, _022483F0 ; =0x02259358 - ldr r1, _022483F4 ; =0x02259368 - ldr r2, _022483F8 ; =0x02259338 - mov r3, #0xa4 - bl __msl_assertion_failed -_022483E4: - ldr r0, [r4, #0x14] - bl DWCi_GsFree - ldmia sp!, {r4, pc} - ; .align 2, 0 -_022483F0: .word Unk_ov66_02259358 -_022483F4: .word Unk_ov66_02259368 -_022483F8: .word Unk_ov66_02259338 - arm_func_end ciCallbacksArrayElementFreeFn - - arm_func_start ciFreeCallbackData -ciFreeCallbackData: ; 0x022483FC - stmfd sp!, {r4, r5, r6, lr} - movs r4, r0 - bne _0224841C - ldr r0, _02248A70 ; =0x02259358 - ldr r1, _02248A74 ; =0x02259368 - ldr r2, _02248A78 ; =0x022592F8 - mov r3, #0xab - bl __msl_assertion_failed -_0224841C: - ldr r0, [r4, #0] - cmp r0, #0 - bge _0224843C - ldr r0, _02248A7C ; =0x02259378 - ldr r1, _02248A74 ; =0x02259368 - ldr r2, _02248A78 ; =0x022592F8 - mov r3, #0xab - bl __msl_assertion_failed -_0224843C: - ldr r0, [r4, #0] - cmp r0, #0x20 - blt _0224845C - ldr r0, _02248A80 ; =0x02259388 - ldr r1, _02248A74 ; =0x02259368 - ldr r2, _02248A78 ; =0x022592F8 - mov r3, #0xab - bl __msl_assertion_failed -_0224845C: - ldr r0, [r4, #4] - cmp r0, #0 - bne _0224847C - ldr r0, _02248A84 ; =0x022593A4 - ldr r1, _02248A74 ; =0x02259368 - ldr r2, _02248A78 ; =0x022592F8 - mov r3, #0xab - bl __msl_assertion_failed -_0224847C: - ldr r0, [r4, #8] - cmp r0, #0 - bne _0224849C - ldr r0, _02248A88 ; =0x022593BC - ldr r1, _02248A74 ; =0x02259368 - ldr r2, _02248A78 ; =0x022592F8 - mov r3, #0xab - bl __msl_assertion_failed -_0224849C: - ldr r0, [r4, #0x10] - cmp r0, #0 - bge _022484BC - ldr r0, _02248A8C ; =0x022593DC - ldr r1, _02248A74 ; =0x02259368 - ldr r2, _02248A78 ; =0x022592F8 - mov r3, #0xab - bl __msl_assertion_failed -_022484BC: - ldr r0, [r4, #0] - cmp r0, #0x1f - addls pc, pc, r0, lsl #2 - b _02248A50 -_022484CC: ; jump table - b _0224854C ; case 0 - b _0224855C ; case 1 - b _0224856C ; case 2 - b _02248584 ; case 3 - b _0224859C ; case 4 - b _022485BC ; case 5 - b _022485DC ; case 6 - b _022485F4 ; case 7 - b _0224861C ; case 8 - b _0224863C ; case 9 - b _02248654 ; case 10 - b _0224866C ; case 11 - b _02248684 ; case 12 - b _02248694 ; case 13 - b _022486AC ; case 14 - b _02248704 ; case 15 - b _02248714 ; case 16 - b _0224872C ; case 17 - b _02248744 ; case 18 - b _0224875C ; case 19 - b _022487A8 ; case 20 - b _02248804 ; case 21 - b _02248824 ; case 22 - b _0224884C ; case 23 - b _02248864 ; case 24 - b _022488A8 ; case 25 - b _022488EC ; case 26 - b _02248904 ; case 27 - b _02248950 ; case 28 - b _02248978 ; case 29 - b _022489D8 ; case 30 - b _02248A40 ; case 31 -_0224854C: - ldr r0, [r4, #8] - ldr r0, [r0, #0] - bl DWCi_GsFree - b _02248A64 -_0224855C: - ldr r0, [r4, #8] - ldr r0, [r0, #0] - bl DWCi_GsFree - b _02248A64 -_0224856C: - ldr r5, [r4, #8] - ldr r0, [r5, #0] - bl DWCi_GsFree - ldr r0, [r5, #4] - bl DWCi_GsFree - b _02248A64 -_02248584: - ldr r5, [r4, #8] - ldr r0, [r5, #0] - bl DWCi_GsFree - ldr r0, [r5, #4] - bl DWCi_GsFree - b _02248A64 -_0224859C: - ldr r5, [r4, #8] - ldr r0, [r5, #0] - bl DWCi_GsFree - ldr r0, [r5, #4] - bl DWCi_GsFree - ldr r0, [r5, #8] - bl DWCi_GsFree - b _02248A64 -_022485BC: - ldr r5, [r4, #8] - ldr r0, [r5, #0] - bl DWCi_GsFree - ldr r0, [r5, #4] - bl DWCi_GsFree - ldr r0, [r5, #8] - bl DWCi_GsFree - b _02248A64 -_022485DC: - ldr r5, [r4, #8] - ldr r0, [r5, #0] - bl DWCi_GsFree - ldr r0, [r5, #4] - bl DWCi_GsFree - b _02248A64 -_022485F4: - ldr r5, [r4, #8] - ldr r0, [r5, #0] - bl DWCi_GsFree - ldr r0, [r5, #4] - bl DWCi_GsFree - ldr r0, [r5, #0xc] - bl DWCi_GsFree - ldr r0, [r5, #0x10] - bl DWCi_GsFree - b _02248A64 -_0224861C: - ldr r5, [r4, #8] - ldr r0, [r5, #0] - bl DWCi_GsFree - ldr r0, [r5, #4] - bl DWCi_GsFree - ldr r0, [r5, #8] - bl DWCi_GsFree - b _02248A64 -_0224863C: - ldr r5, [r4, #8] - ldr r0, [r5, #0] - bl DWCi_GsFree - ldr r0, [r5, #4] - bl DWCi_GsFree - b _02248A64 -_02248654: - ldr r5, [r4, #8] - ldr r0, [r5, #0] - bl DWCi_GsFree - ldr r0, [r5, #4] - bl DWCi_GsFree - b _02248A64 -_0224866C: - ldr r5, [r4, #8] - ldr r0, [r5, #0] - bl DWCi_GsFree - ldr r0, [r5, #4] - bl DWCi_GsFree - b _02248A64 -_02248684: - ldr r0, [r4, #8] - ldr r0, [r0, #0] - bl DWCi_GsFree - b _02248A64 -_02248694: - ldr r5, [r4, #8] - ldr r0, [r5, #8] - bl DWCi_GsFree - ldr r0, [r5, #0xc] - bl DWCi_GsFree - b _02248A64 -_022486AC: - ldr r6, [r4, #8] - mov r5, #0 - ldr r0, [r6, #4] - cmp r0, #0 - ble _022486E8 -_022486C0: - ldr r0, [r6, #8] - ldr r0, [r0, r5, lsl #2] - bl DWCi_GsFree - ldr r0, [r6, #0xc] - ldr r0, [r0, r5, lsl #2] - bl DWCi_GsFree - ldr r0, [r6, #4] - add r5, r5, #1 - cmp r5, r0 - blt _022486C0 -_022486E8: - ldr r0, [r6, #8] - bl DWCi_GsFree - ldr r0, [r6, #0xc] - bl DWCi_GsFree - ldr r0, [r6, #0x10] - bl DWCi_GsFree - b _02248A64 -_02248704: - ldr r0, [r4, #8] - ldr r0, [r0, #8] - bl DWCi_GsFree - b _02248A64 -_02248714: - ldr r5, [r4, #8] - ldr r0, [r5, #4] - bl DWCi_GsFree - ldr r0, [r5, #8] - bl DWCi_GsFree - b _02248A64 -_0224872C: - ldr r5, [r4, #8] - ldr r0, [r5, #4] - bl DWCi_GsFree - ldr r0, [r5, #8] - bl DWCi_GsFree - b _02248A64 -_02248744: - ldr r5, [r4, #8] - ldr r0, [r5, #4] - bl DWCi_GsFree - ldr r0, [r5, #0xc] - bl DWCi_GsFree - b _02248A64 -_0224875C: - ldr r6, [r4, #8] - ldr r0, [r6, #4] - bl DWCi_GsFree - ldr r0, [r6, #8] - mov r5, #0 - cmp r0, #0 - ble _02248794 -_02248778: - ldr r0, [r6, #0xc] - ldr r0, [r0, r5, lsl #2] - bl DWCi_GsFree - ldr r0, [r6, #8] - add r5, r5, #1 - cmp r5, r0 - blt _02248778 -_02248794: - ldr r0, [r6, #0xc] - bl DWCi_GsFree - ldr r0, [r6, #0x10] - bl DWCi_GsFree - b _02248A64 -_022487A8: - ldr r6, [r4, #8] - ldr r0, [r6, #4] - bl DWCi_GsFree - ldr r0, [r6, #8] - bl DWCi_GsFree - ldr r0, [r6, #0xc] - bl DWCi_GsFree - ldr r0, [r6, #0x10] - bl DWCi_GsFree - ldr r0, [r6, #0x14] - mov r5, #0 - cmp r0, #0 - ble _022487F8 -_022487DC: - ldr r0, [r6, #0x18] - ldr r0, [r0, r5, lsl #2] - bl DWCi_GsFree - ldr r0, [r6, #0x14] - add r5, r5, #1 - cmp r5, r0 - blt _022487DC -_022487F8: - ldr r0, [r6, #0x18] - bl DWCi_GsFree - b _02248A64 -_02248804: - ldr r5, [r4, #8] - ldr r0, [r5, #4] - bl DWCi_GsFree - ldr r0, [r5, #8] - bl DWCi_GsFree - ldr r0, [r5, #0xc] - bl DWCi_GsFree - b _02248A64 -_02248824: - ldr r5, [r4, #8] - ldr r0, [r5, #4] - bl DWCi_GsFree - ldr r0, [r5, #8] - bl DWCi_GsFree - ldr r0, [r5, #0xc] - bl DWCi_GsFree - ldr r0, [r5, #0x10] - bl DWCi_GsFree - b _02248A64 -_0224884C: - ldr r5, [r4, #8] - ldr r0, [r5, #4] - bl DWCi_GsFree - ldr r0, [r5, #8] - bl DWCi_GsFree - b _02248A64 -_02248864: - ldr r6, [r4, #8] - ldr r0, [r6, #4] - bl DWCi_GsFree - ldr r0, [r6, #8] - mov r5, #0 - cmp r0, #0 - ble _0224889C -_02248880: - ldr r0, [r6, #0xc] - ldr r0, [r0, r5, lsl #2] - bl DWCi_GsFree - ldr r0, [r6, #8] - add r5, r5, #1 - cmp r5, r0 - blt _02248880 -_0224889C: - ldr r0, [r6, #0xc] - bl DWCi_GsFree - b _02248A64 -_022488A8: - ldr r6, [r4, #8] - ldr r0, [r6, #4] - bl DWCi_GsFree - ldr r0, [r6, #8] - mov r5, #0 - cmp r0, #0 - ble _022488E0 -_022488C4: - ldr r0, [r6, #0xc] - ldr r0, [r0, r5, lsl #2] - bl DWCi_GsFree - ldr r0, [r6, #8] - add r5, r5, #1 - cmp r5, r0 - blt _022488C4 -_022488E0: - ldr r0, [r6, #0xc] - bl DWCi_GsFree - b _02248A64 -_022488EC: - ldr r5, [r4, #8] - ldr r0, [r5, #4] - bl DWCi_GsFree - ldr r0, [r5, #8] - bl DWCi_GsFree - b _02248A64 -_02248904: - ldr r6, [r4, #8] - ldr r0, [r6, #0] - bl DWCi_GsFree - ldr r0, [r6, #4] - mov r5, #0 - cmp r0, #0 - ble _0224893C -_02248920: - ldr r0, [r6, #8] - ldr r0, [r0, r5, lsl #2] - bl DWCi_GsFree - ldr r0, [r6, #4] - add r5, r5, #1 - cmp r5, r0 - blt _02248920 -_0224893C: - ldr r0, [r6, #8] - bl DWCi_GsFree - ldr r0, [r6, #0xc] - bl DWCi_GsFree - b _02248A64 -_02248950: - ldr r5, [r4, #8] - ldr r0, [r5, #0] - bl DWCi_GsFree - ldr r0, [r5, #4] - bl DWCi_GsFree - ldr r0, [r5, #8] - bl DWCi_GsFree - ldr r0, [r5, #0xc] - bl DWCi_GsFree - b _02248A64 -_02248978: - ldr r6, [r4, #8] - ldr r0, [r6, #4] - bl DWCi_GsFree - ldr r0, [r6, #8] - mov r5, #0 - cmp r0, #0 - ble _022489C4 -_02248994: - ldr r0, [r6, #0xc] - ldr r0, [r0, r5, lsl #2] - bl DWCi_GsFree - ldr r0, [r6, #0x10] - cmp r0, #0 - beq _022489B4 - ldr r0, [r0, r5, lsl #2] - bl DWCi_GsFree -_022489B4: - ldr r0, [r6, #8] - add r5, r5, #1 - cmp r5, r0 - blt _02248994 -_022489C4: - ldr r0, [r6, #0xc] - bl DWCi_GsFree - ldr r0, [r6, #0x10] - bl DWCi_GsFree - b _02248A64 -_022489D8: - ldr r6, [r4, #8] - ldr r0, [r6, #4] - bl DWCi_GsFree - ldr r0, [r6, #8] - bl DWCi_GsFree - ldr r0, [r6, #0xc] - mov r5, #0 - cmp r0, #0 - ble _02248A2C -_022489FC: - ldr r0, [r6, #0x10] - ldr r0, [r0, r5, lsl #2] - bl DWCi_GsFree - ldr r0, [r6, #0x14] - cmp r0, #0 - beq _02248A1C - ldr r0, [r0, r5, lsl #2] - bl DWCi_GsFree -_02248A1C: - ldr r0, [r6, #0xc] - add r5, r5, #1 - cmp r5, r0 - blt _022489FC -_02248A2C: - ldr r0, [r6, #0x10] - bl DWCi_GsFree - ldr r0, [r6, #0x14] - bl DWCi_GsFree - b _02248A64 -_02248A40: - ldr r0, [r4, #8] - ldr r0, [r0, #4] - bl DWCi_GsFree - b _02248A64 -_02248A50: - ldr r0, _02248A90 ; =0x022593EC - ldr r1, _02248A74 ; =0x02259368 - ldr r2, _02248A78 ; =0x022592F8 - ldr r3, _02248A94 ; =0x000001E5 - bl __msl_assertion_failed -_02248A64: - ldr r0, [r4, #8] - bl DWCi_GsFree - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_02248A70: .word Unk_ov66_02259358 -_02248A74: .word Unk_ov66_02259368 -_02248A78: .word Unk_ov66_022592F8 -_02248A7C: .word Unk_ov66_02259378 -_02248A80: .word Unk_ov66_02259388 -_02248A84: .word Unk_ov66_022593A4 -_02248A88: .word Unk_ov66_022593BC -_02248A8C: .word Unk_ov66_022593DC -_02248A90: .word Unk_ov66_022593EC -_02248A94: .word 0x000001E5 - arm_func_end ciFreeCallbackData - - arm_func_start ciInitCallbacks -ciInitCallbacks: ; 0x02248A98 - stmfd sp!, {r4, lr} - ldr r2, _02248AC4 ; =ciCallbacksArrayElementFreeFn - mov r4, r0 - mov r0, #0x18 - mov r1, #0x80 - bl ArrayNew - str r0, [r4, #0x820] - cmp r0, #0 - moveq r0, #0 - movne r0, #1 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02248AC4: .word ciCallbacksArrayElementFreeFn - arm_func_end ciInitCallbacks - - arm_func_start ciCleanupCallbacks -ciCleanupCallbacks: ; 0x02248AC8 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - movs sl, r0 - bne _02248AE8 - ldr r0, _02248C00 ; =0x022593F0 - ldr r1, _02248C04 ; =0x02259368 - ldr r2, _02248C08 ; =0x0225930C - ldr r3, _02248C0C ; =0x000001FA - bl __msl_assertion_failed -_02248AE8: - ldr r0, [sl, #0x820] - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl ArrayLength - mov r8, r0 - cmp r8, #0 - mov sb, #0 - ble _02248BF4 - ldr fp, _02248C10 ; =0x02259358 - ldr r6, _02248C04 ; =0x02259368 - ldr r5, _02248C08 ; =0x0225930C - ldr r4, _02248C14 ; =0x0000020D -_02248B18: - ldr r0, [sl, #0x820] - mov r1, sb - bl ArrayNth - movs r7, r0 - bne _02248B40 - mov r0, fp - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl __msl_assertion_failed -_02248B40: - ldr r0, [r7, #0] - cmp r0, #0 - bge _02248B60 - ldr r0, _02248C18 ; =0x02259378 - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl __msl_assertion_failed -_02248B60: - ldr r0, [r7, #0] - cmp r0, #0x20 - blt _02248B80 - ldr r0, _02248C1C ; =0x02259388 - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl __msl_assertion_failed -_02248B80: - ldr r0, [r7, #4] - cmp r0, #0 - bne _02248BA0 - ldr r0, _02248C20 ; =0x022593A4 - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl __msl_assertion_failed -_02248BA0: - ldr r0, [r7, #8] - cmp r0, #0 - bne _02248BC0 - ldr r0, _02248C24 ; =0x022593BC - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl __msl_assertion_failed -_02248BC0: - ldr r0, [r7, #0x10] - cmp r0, #0 - bge _02248BE0 - ldr r0, _02248C28 ; =0x022593DC - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl __msl_assertion_failed -_02248BE0: - mov r0, r7 - bl ciFreeCallbackData - add sb, sb, #1 - cmp sb, r8 - blt _02248B18 -_02248BF4: - ldr r0, [sl, #0x820] - bl ArrayFree - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_02248C00: .word Unk_ov66_022593F0 -_02248C04: .word Unk_ov66_02259368 -_02248C08: .word Unk_ov66_0225930C -_02248C0C: .word 0x000001FA -_02248C10: .word Unk_ov66_02259358 -_02248C14: .word 0x0000020D -_02248C18: .word Unk_ov66_02259378 -_02248C1C: .word Unk_ov66_02259388 -_02248C20: .word Unk_ov66_022593A4 -_02248C24: .word Unk_ov66_022593BC -_02248C28: .word Unk_ov66_022593DC - arm_func_end ciCleanupCallbacks - - arm_func_start ciAddCallback_ -ciAddCallback_: ; 0x02248C2C - stmfd sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x18 - movs r5, r0 - mov r7, r1 - mov r6, r2 - mov r4, r3 - bne _02248C5C - ldr r0, _02249B5C ; =0x022593F0 - ldr r1, _02249B60 ; =0x02259368 - ldr r2, _02249B64 ; =0x022592C8 - ldr r3, _02249B68 ; =0x0000021F - bl __msl_assertion_failed -_02248C5C: - cmp r7, #0 - bge _02248C78 - ldr r0, _02249B6C ; =0x02259400 - ldr r1, _02249B60 ; =0x02259368 - ldr r2, _02249B64 ; =0x022592C8 - ldr r3, _02249B70 ; =0x00000221 - bl __msl_assertion_failed -_02248C78: - cmp r7, #0x20 - blt _02248C94 - ldr r0, _02249B74 ; =0x0225940C - ldr r1, _02249B60 ; =0x02259368 - ldr r2, _02249B64 ; =0x022592C8 - ldr r3, _02249B78 ; =0x00000222 - bl __msl_assertion_failed -_02248C94: - ldr r0, [r5, #0x820] - cmp r0, #0 - bne _02248CB4 - ldr r0, _02249B7C ; =0x02259420 - ldr r1, _02249B60 ; =0x02259368 - ldr r2, _02249B64 ; =0x022592C8 - ldr r3, _02249B80 ; =0x00000223 - bl __msl_assertion_failed -_02248CB4: - cmp r6, #0 - bne _02248CD0 - ldr r0, _02249B84 ; =0x02259444 - ldr r1, _02249B60 ; =0x02259368 - ldr r2, _02249B64 ; =0x022592C8 - mov r3, #0x224 - bl __msl_assertion_failed -_02248CD0: - cmp r4, #0 - bne _02248CEC - ldr r0, _02249B88 ; =0x02259458 - ldr r1, _02249B60 ; =0x02259368 - ldr r2, _02249B64 ; =0x022592C8 - ldr r3, _02249B8C ; =0x00000225 - bl __msl_assertion_failed -_02248CEC: - ldr r0, [sp, #0x3c] - cmp r0, #0 - bne _02248D0C - ldr r0, _02249B90 ; =0x02259470 - ldr r1, _02249B60 ; =0x02259368 - ldr r2, _02249B64 ; =0x022592C8 - ldr r3, _02249B94 ; =0x00000226 - bl __msl_assertion_failed -_02248D0C: - ldr r0, [sp, #0x34] - cmp r0, #0 - bge _02248D2C - ldr r0, _02249B98 ; =0x02259488 - ldr r1, _02249B60 ; =0x02259368 - ldr r2, _02249B64 ; =0x022592C8 - ldr r3, _02249B9C ; =0x00000227 - bl __msl_assertion_failed -_02248D2C: - add r2, sp, #0 - mov r1, #0 - str r1, [r2, #0] - str r1, [r2, #4] - ldr r0, [sp, #0x3c] - str r1, [r2, #8] - str r1, [r2, #0xc] - str r1, [r2, #0x10] - str r1, [r2, #0x14] - str r7, [sp] - str r6, [sp, #4] - bl DWCi_GsMalloc - str r0, [sp, #8] - cmp r0, #0 - addeq sp, sp, #0x18 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldr r2, [sp, #0x3c] - mov r1, r4 - bl memcpy - ldr r0, [sp, #0x38] - ldr r2, [sp, #0x30] - ldr r1, [sp, #0x34] - cmp r0, #0 - moveq r0, #0 - str r2, [sp, #0xc] - str r1, [sp, #0x10] - streq r0, [sp, #0x14] - beq _02248DDC - bl strlen - mov r6, r0 - add r0, r6, #1 - bl DWCi_GsMalloc - str r0, [sp, #0x14] - cmp r0, #0 - bne _02248DD0 - ldr r0, [sp, #8] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02248DD0: - ldr r1, [sp, #0x38] - add r2, r6, #1 - bl memcpy -_02248DDC: - ldr r0, [sp] - cmp r0, #0x1f - addls pc, pc, r0, lsl #2 - b _0224AA48 -_02248DEC: ; jump table - b _02248E6C ; case 0 - b _02248EA8 ; case 1 - b _02248EE4 ; case 2 - b _02248F58 ; case 3 - b _02248FCC ; case 4 - b _02249078 ; case 5 - b _02249124 ; case 6 - b _02249198 ; case 7 - b _0224927C ; case 8 - b _02249328 ; case 9 - b _0224939C ; case 10 - b _02249424 ; case 11 - b _02249498 ; case 12 - b _022494D4 ; case 13 - b _02249548 ; case 14 - b _022497E0 ; case 15 - b _0224981C ; case 16 - b _02249890 ; case 17 - b _02249918 ; case 18 - b _0224998C ; case 19 - b _02249BC0 ; case 20 - b _02249DA8 ; case 21 - b _02249E54 ; case 22 - b _02249F38 ; case 23 - b _02249FAC ; case 24 - b _0224A0EC ; case 25 - b _0224A22C ; case 26 - b _0224A2A0 ; case 27 - b _0224A470 ; case 28 - b _0224A554 ; case 29 - b _0224A794 ; case 30 - b _0224AA0C ; case 31 -_02248E6C: - ldr r0, [r4, #0] - ldr r4, [sp, #8] - cmp r0, #0 - beq _0224AA5C - bl goastrdup - str r0, [r4, #0] - cmp r0, #0 - bne _0224AA5C - mov r0, r4 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02248EA8: - ldr r0, [r4, #0] - ldr r4, [sp, #8] - cmp r0, #0 - beq _0224AA5C - bl goastrdup - str r0, [r4, #0] - cmp r0, #0 - bne _0224AA5C - mov r0, r4 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02248EE4: - ldr r0, [r4, #0] - ldr r6, [sp, #8] - cmp r0, #0 - beq _02248F20 - bl goastrdup - str r0, [r6, #0] - cmp r0, #0 - bne _02248F20 - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02248F20: - ldr r0, [r4, #4] - cmp r0, #0 - beq _0224AA5C - bl goastrdup - str r0, [r6, #4] - cmp r0, #0 - bne _0224AA5C - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02248F58: - ldr r0, [r4, #0] - ldr r6, [sp, #8] - cmp r0, #0 - beq _02248F94 - bl goastrdup - str r0, [r6, #0] - cmp r0, #0 - bne _02248F94 - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02248F94: - ldr r0, [r4, #4] - cmp r0, #0 - beq _0224AA5C - bl goastrdup - str r0, [r6, #4] - cmp r0, #0 - bne _0224AA5C - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02248FCC: - ldr r0, [r4, #0] - ldr r6, [sp, #8] - cmp r0, #0 - beq _02249008 - bl goastrdup - str r0, [r6, #0] - cmp r0, #0 - bne _02249008 - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02249008: - ldr r0, [r4, #4] - cmp r0, #0 - beq _02249040 - bl goastrdup - str r0, [r6, #4] - cmp r0, #0 - bne _02249040 - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02249040: - ldr r0, [r4, #8] - cmp r0, #0 - beq _0224AA5C - bl goastrdup - str r0, [r6, #8] - cmp r0, #0 - bne _0224AA5C - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02249078: - ldr r0, [r4, #0] - ldr r6, [sp, #8] - cmp r0, #0 - beq _022490B4 - bl goastrdup - str r0, [r6, #0] - cmp r0, #0 - bne _022490B4 - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022490B4: - ldr r0, [r4, #4] - cmp r0, #0 - beq _022490EC - bl goastrdup - str r0, [r6, #4] - cmp r0, #0 - bne _022490EC - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022490EC: - ldr r0, [r4, #8] - cmp r0, #0 - beq _0224AA5C - bl goastrdup - str r0, [r6, #8] - cmp r0, #0 - bne _0224AA5C - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02249124: - ldr r0, [r4, #0] - ldr r6, [sp, #8] - cmp r0, #0 - beq _02249160 - bl goastrdup - str r0, [r6, #0] - cmp r0, #0 - bne _02249160 - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02249160: - ldr r0, [r4, #4] - cmp r0, #0 - beq _0224AA5C - bl goastrdup - str r0, [r6, #4] - cmp r0, #0 - bne _0224AA5C - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02249198: - ldr r0, [r4, #0] - ldr r6, [sp, #8] - cmp r0, #0 - beq _022491D4 - bl goastrdup - str r0, [r6, #0] - cmp r0, #0 - bne _022491D4 - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022491D4: - ldr r0, [r4, #4] - cmp r0, #0 - beq _0224920C - bl goastrdup - str r0, [r6, #4] - cmp r0, #0 - bne _0224920C - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0224920C: - ldr r0, [r4, #0xc] - cmp r0, #0 - beq _02249244 - bl goastrdup - str r0, [r6, #0xc] - cmp r0, #0 - bne _02249244 - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02249244: - ldr r0, [r4, #0x10] - cmp r0, #0 - beq _0224AA5C - bl goastrdup - str r0, [r6, #0x10] - cmp r0, #0 - bne _0224AA5C - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0224927C: - ldr r0, [r4, #0] - ldr r6, [sp, #8] - cmp r0, #0 - beq _022492B8 - bl goastrdup - str r0, [r6, #0] - cmp r0, #0 - bne _022492B8 - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022492B8: - ldr r0, [r4, #4] - cmp r0, #0 - beq _022492F0 - bl goastrdup - str r0, [r6, #4] - cmp r0, #0 - bne _022492F0 - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022492F0: - ldr r0, [r4, #8] - cmp r0, #0 - beq _0224AA5C - bl goastrdup - str r0, [r6, #8] - cmp r0, #0 - bne _0224AA5C - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02249328: - ldr r0, [r4, #0] - ldr r6, [sp, #8] - cmp r0, #0 - beq _02249364 - bl goastrdup - str r0, [r6, #0] - cmp r0, #0 - bne _02249364 - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02249364: - ldr r0, [r4, #4] - cmp r0, #0 - beq _0224AA5C - bl goastrdup - str r0, [r6, #4] - cmp r0, #0 - bne _0224AA5C - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0224939C: - ldr r0, [r4, #0] - ldr r6, [sp, #8] - cmp r0, #0 - beq _022493D8 - bl goastrdup - str r0, [r6, #0] - cmp r0, #0 - bne _022493D8 - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022493D8: - ldr r0, [r4, #4] - cmp r0, #0 - beq _0224AA5C - mov r0, #0x20 - bl DWCi_GsMalloc - str r0, [r6, #4] - cmp r0, #0 - bne _02249414 - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02249414: - ldr r1, [r4, #4] - mov r2, #0x20 - bl memcpy - b _0224AA5C -_02249424: - ldr r0, [r4, #0] - ldr r6, [sp, #8] - cmp r0, #0 - beq _02249460 - bl goastrdup - str r0, [r6, #0] - cmp r0, #0 - bne _02249460 - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02249460: - ldr r0, [r4, #4] - cmp r0, #0 - beq _0224AA5C - bl goastrdup - str r0, [r6, #4] - cmp r0, #0 - bne _0224AA5C - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02249498: - ldr r0, [r4, #0] - ldr r4, [sp, #8] - cmp r0, #0 - beq _0224AA5C - bl goastrdup - str r0, [r4, #0] - cmp r0, #0 - bne _0224AA5C - mov r0, r4 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022494D4: - ldr r0, [r4, #8] - ldr r6, [sp, #8] - cmp r0, #0 - beq _02249510 - bl goastrdup - str r0, [r6, #8] - cmp r0, #0 - bne _02249510 - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02249510: - ldr r0, [r4, #0xc] - cmp r0, #0 - beq _0224AA5C - bl goastrdup - str r0, [r6, #0xc] - cmp r0, #0 - bne _0224AA5C - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02249548: - ldr r0, [r4, #4] - ldr r8, [sp, #8] - cmp r0, #0 - bge _0224956C - ldr r0, _02249BA0 ; =0x02259490 - ldr r1, _02249B60 ; =0x02259368 - ldr r2, _02249B64 ; =0x022592C8 - ldr r3, _02249BA4 ; =0x000002D3 - bl __msl_assertion_failed -_0224956C: - ldr r0, [r4, #8] - cmp r0, #0 - moveq r0, #0 - streq r0, [r8, #8] - beq _0224964C - ldr r0, [r4, #4] - mov r0, r0, lsl #2 - bl DWCi_GsMalloc - str r0, [r8, #8] - cmp r0, #0 - bne _022495B4 - mov r0, r8 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022495B4: - ldr r0, [r4, #4] - mov r7, #0 - cmp r0, #0 - ble _0224964C - mov r6, r7 -_022495C8: - ldr r0, [r4, #8] - ldr r0, [r0, r7, lsl #2] - cmp r0, #0 - ldreq r0, [r8, #8] - streq r6, [r0, r7, lsl #2] - beq _0224963C - bl goastrdup - ldr r1, [r8, #8] - str r0, [r1, r7, lsl #2] - ldr r0, [r8, #8] - ldr r0, [r0, r7, lsl #2] - cmp r0, #0 - bne _0224963C - subs r7, r7, #1 - bmi _02249618 -_02249604: - ldr r0, [r8, #8] - ldr r0, [r0, r7, lsl #2] - bl DWCi_GsFree - subs r7, r7, #1 - bpl _02249604 -_02249618: - ldr r0, [r8, #8] - bl DWCi_GsFree - mov r0, r8 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0224963C: - ldr r0, [r4, #4] - add r7, r7, #1 - cmp r7, r0 - blt _022495C8 -_0224964C: - ldr r0, [r4, #4] - cmp r0, #0 - bge _0224966C - ldr r0, _02249BA0 ; =0x02259490 - ldr r1, _02249B60 ; =0x02259368 - ldr r2, _02249B64 ; =0x022592C8 - mov r3, #0x2d4 - bl __msl_assertion_failed -_0224966C: - ldr r0, [r4, #0xc] - cmp r0, #0 - moveq r0, #0 - streq r0, [r8, #0xc] - beq _0224974C - ldr r0, [r4, #4] - mov r0, r0, lsl #2 - bl DWCi_GsMalloc - str r0, [r8, #0xc] - cmp r0, #0 - bne _022496B4 - mov r0, r8 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022496B4: - ldr r0, [r4, #4] - mov r7, #0 - cmp r0, #0 - ble _0224974C - mov r6, r7 -_022496C8: - ldr r0, [r4, #0xc] - ldr r0, [r0, r7, lsl #2] - cmp r0, #0 - ldreq r0, [r8, #0xc] - streq r6, [r0, r7, lsl #2] - beq _0224973C - bl goastrdup - ldr r1, [r8, #0xc] - str r0, [r1, r7, lsl #2] - ldr r0, [r8, #0xc] - ldr r0, [r0, r7, lsl #2] - cmp r0, #0 - bne _0224973C - subs r7, r7, #1 - bmi _02249718 -_02249704: - ldr r0, [r8, #0xc] - ldr r0, [r0, r7, lsl #2] - bl DWCi_GsFree - subs r7, r7, #1 - bpl _02249704 -_02249718: - ldr r0, [r8, #0xc] - bl DWCi_GsFree - mov r0, r8 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0224973C: - ldr r0, [r4, #4] - add r7, r7, #1 - cmp r7, r0 - blt _022496C8 -_0224974C: - ldr r0, [r4, #4] - cmp r0, #0 - bge _0224976C - ldr r0, _02249BA0 ; =0x02259490 - ldr r1, _02249B60 ; =0x02259368 - ldr r2, _02249B64 ; =0x022592C8 - ldr r3, _02249BA8 ; =0x000002D5 - bl __msl_assertion_failed -_0224976C: - ldr r0, [r4, #4] - cmp r0, #0 - ble _0224AA5C - ldr r0, [r4, #0x10] - cmp r0, #0 - bne _02249798 - ldr r0, _02249BAC ; =0x022594B0 - ldr r1, _02249B60 ; =0x02259368 - ldr r2, _02249B64 ; =0x022592C8 - ldr r3, _02249BA8 ; =0x000002D5 - bl __msl_assertion_failed -_02249798: - ldr r0, [r4, #4] - mov r6, r0, lsl #2 - mov r0, r6 - bl DWCi_GsMalloc - str r0, [r8, #0x10] - cmp r0, #0 - bne _022497D0 - mov r0, r8 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022497D0: - ldr r1, [r4, #0x10] - mov r2, r6 - bl memcpy - b _0224AA5C -_022497E0: - ldr r0, [r4, #8] - ldr r4, [sp, #8] - cmp r0, #0 - beq _0224AA5C - bl goastrdup - str r0, [r4, #8] - cmp r0, #0 - bne _0224AA5C - mov r0, r4 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0224981C: - ldr r0, [r4, #4] - ldr r6, [sp, #8] - cmp r0, #0 - beq _02249858 - bl goastrdup - str r0, [r6, #4] - cmp r0, #0 - bne _02249858 - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02249858: - ldr r0, [r4, #8] - cmp r0, #0 - beq _0224AA5C - bl goastrdup - str r0, [r6, #8] - cmp r0, #0 - bne _0224AA5C - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02249890: - ldr r0, [r4, #4] - ldr r6, [sp, #8] - cmp r0, #0 - beq _022498CC - bl goastrdup - str r0, [r6, #4] - cmp r0, #0 - bne _022498CC - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022498CC: - ldr r0, [r4, #8] - cmp r0, #0 - beq _0224AA5C - mov r0, #0x20 - bl DWCi_GsMalloc - str r0, [r6, #8] - cmp r0, #0 - bne _02249908 - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02249908: - ldr r1, [r4, #8] - mov r2, #0x20 - bl memcpy - b _0224AA5C -_02249918: - ldr r0, [r4, #4] - ldr r6, [sp, #8] - cmp r0, #0 - beq _02249954 - bl goastrdup - str r0, [r6, #4] - cmp r0, #0 - bne _02249954 - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02249954: - ldr r0, [r4, #0xc] - cmp r0, #0 - beq _0224AA5C - bl goastrdup - str r0, [r6, #0xc] - cmp r0, #0 - bne _0224AA5C - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0224998C: - ldr r0, [r4, #4] - ldr r7, [sp, #8] - cmp r0, #0 - beq _022499C8 - bl goastrdup - str r0, [r7, #4] - cmp r0, #0 - bne _022499C8 - mov r0, r7 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022499C8: - ldr r0, [r4, #8] - cmp r0, #0 - bge _022499E8 - ldr r0, _02249BB0 ; =0x022594CC - ldr r1, _02249B60 ; =0x02259368 - ldr r2, _02249B64 ; =0x022592C8 - ldr r3, _02249BB4 ; =0x00000301 - bl __msl_assertion_failed -_022499E8: - ldr r0, [r4, #0xc] - cmp r0, #0 - moveq r0, #0 - streq r0, [r7, #0xc] - beq _02249AC8 - ldr r0, [r4, #8] - mov r0, r0, lsl #2 - bl DWCi_GsMalloc - str r0, [r7, #0xc] - cmp r0, #0 - bne _02249A30 - mov r0, r7 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02249A30: - ldr r0, [r4, #8] - mov r8, #0 - cmp r0, #0 - ble _02249AC8 - mov r6, r8 -_02249A44: - ldr r0, [r4, #0xc] - ldr r0, [r0, r8, lsl #2] - cmp r0, #0 - ldreq r0, [r7, #0xc] - streq r6, [r0, r8, lsl #2] - beq _02249AB8 - bl goastrdup - ldr r1, [r7, #0xc] - str r0, [r1, r8, lsl #2] - ldr r0, [r7, #0xc] - ldr r0, [r0, r8, lsl #2] - cmp r0, #0 - bne _02249AB8 - subs r8, r8, #1 - bmi _02249A94 -_02249A80: - ldr r0, [r7, #0xc] - ldr r0, [r0, r8, lsl #2] - bl DWCi_GsFree - subs r8, r8, #1 - bpl _02249A80 -_02249A94: - ldr r0, [r7, #0xc] - bl DWCi_GsFree - mov r0, r7 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02249AB8: - ldr r0, [r4, #8] - add r8, r8, #1 - cmp r8, r0 - blt _02249A44 -_02249AC8: - ldr r0, [r4, #8] - cmp r0, #0 - bge _02249AE8 - ldr r0, _02249BB0 ; =0x022594CC - ldr r1, _02249B60 ; =0x02259368 - ldr r2, _02249B64 ; =0x022592C8 - ldr r3, _02249BB8 ; =0x00000302 - bl __msl_assertion_failed -_02249AE8: - ldr r0, [r4, #8] - cmp r0, #0 - ble _0224AA5C - ldr r0, [r4, #0x10] - cmp r0, #0 - bne _02249B14 - ldr r0, _02249BBC ; =0x022594E8 - ldr r1, _02249B60 ; =0x02259368 - ldr r2, _02249B64 ; =0x022592C8 - ldr r3, _02249BB8 ; =0x00000302 - bl __msl_assertion_failed -_02249B14: - ldr r0, [r4, #8] - mov r6, r0, lsl #2 - mov r0, r6 - bl DWCi_GsMalloc - str r0, [r7, #0x10] - cmp r0, #0 - bne _02249B4C - mov r0, r7 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02249B4C: - ldr r1, [r4, #0x10] - mov r2, r6 - bl memcpy - b _0224AA5C - ; .align 2, 0 -_02249B5C: .word Unk_ov66_022593F0 -_02249B60: .word Unk_ov66_02259368 -_02249B64: .word Unk_ov66_022592C8 -_02249B68: .word 0x0000021F -_02249B6C: .word Unk_ov66_02259400 -_02249B70: .word 0x00000221 -_02249B74: .word Unk_ov66_0225940C -_02249B78: .word 0x00000222 -_02249B7C: .word Unk_ov66_02259420 -_02249B80: .word 0x00000223 -_02249B84: .word Unk_ov66_02259444 -_02249B88: .word Unk_ov66_02259458 -_02249B8C: .word 0x00000225 -_02249B90: .word Unk_ov66_02259470 -_02249B94: .word 0x00000226 -_02249B98: .word Unk_ov66_02259488 -_02249B9C: .word 0x00000227 -_02249BA0: .word Unk_ov66_02259490 -_02249BA4: .word 0x000002D3 -_02249BA8: .word 0x000002D5 -_02249BAC: .word Unk_ov66_022594B0 -_02249BB0: .word Unk_ov66_022594CC -_02249BB4: .word 0x00000301 -_02249BB8: .word 0x00000302 -_02249BBC: .word Unk_ov66_022594E8 -_02249BC0: - ldr r0, [r4, #4] - ldr r7, [sp, #8] - cmp r0, #0 - beq _02249BFC - bl goastrdup - str r0, [r7, #4] - cmp r0, #0 - bne _02249BFC - mov r0, r7 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02249BFC: - ldr r0, [r4, #8] - cmp r0, #0 - beq _02249C34 - bl goastrdup - str r0, [r7, #8] - cmp r0, #0 - bne _02249C34 - mov r0, r7 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02249C34: - ldr r0, [r4, #0xc] - cmp r0, #0 - beq _02249C6C - bl goastrdup - str r0, [r7, #0xc] - cmp r0, #0 - bne _02249C6C - mov r0, r7 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02249C6C: - ldr r0, [r4, #0x10] - cmp r0, #0 - beq _02249CA4 - bl goastrdup - str r0, [r7, #0x10] - cmp r0, #0 - bne _02249CA4 - mov r0, r7 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02249CA4: - ldr r0, [r4, #0x14] - cmp r0, #0 - bge _02249CC4 - ldr r0, _02249BA0 ; =0x02259490 - ldr r1, _02249B60 ; =0x02259368 - ldr r2, _02249B64 ; =0x022592C8 - ldr r3, _0224AA74 ; =0x0000030E - bl __msl_assertion_failed -_02249CC4: - ldr r0, [r4, #0x18] - cmp r0, #0 - moveq r0, #0 - streq r0, [r7, #0x18] - beq _0224AA5C - ldr r0, [r4, #0x14] - mov r0, r0, lsl #2 - bl DWCi_GsMalloc - str r0, [r7, #0x18] - cmp r0, #0 - bne _02249D0C - mov r0, r7 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02249D0C: - ldr r0, [r4, #0x14] - mov r8, #0 - cmp r0, #0 - ble _0224AA5C - mov r6, r8 -_02249D20: - ldr r0, [r4, #0x18] - ldr r0, [r0, r8, lsl #2] - cmp r0, #0 - ldreq r0, [r7, #0x18] - streq r6, [r0, r8, lsl #2] - beq _02249D94 - bl goastrdup - ldr r1, [r7, #0x18] - str r0, [r1, r8, lsl #2] - ldr r0, [r7, #0x18] - ldr r0, [r0, r8, lsl #2] - cmp r0, #0 - bne _02249D94 - subs r8, r8, #1 - bmi _02249D70 -_02249D5C: - ldr r0, [r7, #0x18] - ldr r0, [r0, r8, lsl #2] - bl DWCi_GsFree - subs r8, r8, #1 - bpl _02249D5C -_02249D70: - ldr r0, [r7, #0x18] - bl DWCi_GsFree - mov r0, r7 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02249D94: - ldr r0, [r4, #0x14] - add r8, r8, #1 - cmp r8, r0 - blt _02249D20 - b _0224AA5C -_02249DA8: - ldr r0, [r4, #4] - ldr r6, [sp, #8] - cmp r0, #0 - beq _02249DE4 - bl goastrdup - str r0, [r6, #4] - cmp r0, #0 - bne _02249DE4 - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02249DE4: - ldr r0, [r4, #8] - cmp r0, #0 - beq _02249E1C - bl goastrdup - str r0, [r6, #8] - cmp r0, #0 - bne _02249E1C - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02249E1C: - ldr r0, [r4, #0xc] - cmp r0, #0 - beq _0224AA5C - bl goastrdup - str r0, [r6, #0xc] - cmp r0, #0 - bne _0224AA5C - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02249E54: - ldr r0, [r4, #4] - ldr r6, [sp, #8] - cmp r0, #0 - beq _02249E90 - bl goastrdup - str r0, [r6, #4] - cmp r0, #0 - bne _02249E90 - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02249E90: - ldr r0, [r4, #8] - cmp r0, #0 - beq _02249EC8 - bl goastrdup - str r0, [r6, #8] - cmp r0, #0 - bne _02249EC8 - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02249EC8: - ldr r0, [r4, #0xc] - cmp r0, #0 - beq _02249F00 - bl goastrdup - str r0, [r6, #0xc] - cmp r0, #0 - bne _02249F00 - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02249F00: - ldr r0, [r4, #0x10] - cmp r0, #0 - beq _0224AA5C - bl goastrdup - str r0, [r6, #0x10] - cmp r0, #0 - bne _0224AA5C - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02249F38: - ldr r0, [r4, #4] - ldr r6, [sp, #8] - cmp r0, #0 - beq _02249F74 - bl goastrdup - str r0, [r6, #4] - cmp r0, #0 - bne _02249F74 - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02249F74: - ldr r0, [r4, #8] - cmp r0, #0 - beq _0224AA5C - bl goastrdup - str r0, [r6, #8] - cmp r0, #0 - bne _0224AA5C - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02249FAC: - ldr r0, [r4, #4] - ldr r7, [sp, #8] - cmp r0, #0 - beq _02249FE8 - bl goastrdup - str r0, [r7, #4] - cmp r0, #0 - bne _02249FE8 - mov r0, r7 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02249FE8: - ldr r0, [r4, #8] - cmp r0, #0 - bge _0224A008 - ldr r0, _0224AA78 ; =0x02259504 - ldr r1, _02249B60 ; =0x02259368 - ldr r2, _02249B64 ; =0x022592C8 - ldr r3, _0224AA7C ; =0x00000335 - bl __msl_assertion_failed -_0224A008: - ldr r0, [r4, #0xc] - cmp r0, #0 - moveq r0, #0 - streq r0, [r7, #0xc] - beq _0224AA5C - ldr r0, [r4, #8] - mov r0, r0, lsl #2 - bl DWCi_GsMalloc - str r0, [r7, #0xc] - cmp r0, #0 - bne _0224A050 - mov r0, r7 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0224A050: - ldr r0, [r4, #8] - mov r8, #0 - cmp r0, #0 - ble _0224AA5C - mov r6, r8 -_0224A064: - ldr r0, [r4, #0xc] - ldr r0, [r0, r8, lsl #2] - cmp r0, #0 - ldreq r0, [r7, #0xc] - streq r6, [r0, r8, lsl #2] - beq _0224A0D8 - bl goastrdup - ldr r1, [r7, #0xc] - str r0, [r1, r8, lsl #2] - ldr r0, [r7, #0xc] - ldr r0, [r0, r8, lsl #2] - cmp r0, #0 - bne _0224A0D8 - subs r8, r8, #1 - bmi _0224A0B4 -_0224A0A0: - ldr r0, [r7, #0xc] - ldr r0, [r0, r8, lsl #2] - bl DWCi_GsFree - subs r8, r8, #1 - bpl _0224A0A0 -_0224A0B4: - ldr r0, [r7, #0xc] - bl DWCi_GsFree - mov r0, r7 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0224A0D8: - ldr r0, [r4, #8] - add r8, r8, #1 - cmp r8, r0 - blt _0224A064 - b _0224AA5C -_0224A0EC: - ldr r0, [r4, #4] - ldr r7, [sp, #8] - cmp r0, #0 - beq _0224A128 - bl goastrdup - str r0, [r7, #4] - cmp r0, #0 - bne _0224A128 - mov r0, r7 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0224A128: - ldr r0, [r4, #8] - cmp r0, #0 - bge _0224A148 - ldr r0, _0224AA80 ; =0x02259520 - ldr r1, _02249B60 ; =0x02259368 - ldr r2, _02249B64 ; =0x022592C8 - ldr r3, _0224AA84 ; =0x0000033E - bl __msl_assertion_failed -_0224A148: - ldr r0, [r4, #0xc] - cmp r0, #0 - moveq r0, #0 - streq r0, [r7, #0xc] - beq _0224AA5C - ldr r0, [r4, #8] - mov r0, r0, lsl #2 - bl DWCi_GsMalloc - str r0, [r7, #0xc] - cmp r0, #0 - bne _0224A190 - mov r0, r7 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0224A190: - ldr r0, [r4, #8] - mov r8, #0 - cmp r0, #0 - ble _0224AA5C - mov r6, r8 -_0224A1A4: - ldr r0, [r4, #0xc] - ldr r0, [r0, r8, lsl #2] - cmp r0, #0 - ldreq r0, [r7, #0xc] - streq r6, [r0, r8, lsl #2] - beq _0224A218 - bl goastrdup - ldr r1, [r7, #0xc] - str r0, [r1, r8, lsl #2] - ldr r0, [r7, #0xc] - ldr r0, [r0, r8, lsl #2] - cmp r0, #0 - bne _0224A218 - subs r8, r8, #1 - bmi _0224A1F4 -_0224A1E0: - ldr r0, [r7, #0xc] - ldr r0, [r0, r8, lsl #2] - bl DWCi_GsFree - subs r8, r8, #1 - bpl _0224A1E0 -_0224A1F4: - ldr r0, [r7, #0xc] - bl DWCi_GsFree - mov r0, r7 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0224A218: - ldr r0, [r4, #8] - add r8, r8, #1 - cmp r8, r0 - blt _0224A1A4 - b _0224AA5C -_0224A22C: - ldr r0, [r4, #4] - ldr r6, [sp, #8] - cmp r0, #0 - beq _0224A268 - bl goastrdup - str r0, [r6, #4] - cmp r0, #0 - bne _0224A268 - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0224A268: - ldr r0, [r4, #8] - cmp r0, #0 - beq _0224AA5C - bl goastrdup - str r0, [r6, #8] - cmp r0, #0 - bne _0224AA5C - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0224A2A0: - ldr r0, [r4, #0] - ldr r7, [sp, #8] - cmp r0, #0 - beq _0224A2DC - bl goastrdup - str r0, [r7, #0] - cmp r0, #0 - bne _0224A2DC - mov r0, r7 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0224A2DC: - ldr r0, [r4, #4] - cmp r0, #0 - bge _0224A2FC - ldr r0, _02249BB0 ; =0x022594CC - ldr r1, _02249B60 ; =0x02259368 - ldr r2, _02249B64 ; =0x022592C8 - mov r3, #0x350 - bl __msl_assertion_failed -_0224A2FC: - ldr r0, [r4, #8] - cmp r0, #0 - moveq r0, #0 - streq r0, [r7, #8] - beq _0224A3DC - ldr r0, [r4, #4] - mov r0, r0, lsl #2 - bl DWCi_GsMalloc - str r0, [r7, #8] - cmp r0, #0 - bne _0224A344 - mov r0, r7 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0224A344: - ldr r0, [r4, #4] - mov r8, #0 - cmp r0, #0 - ble _0224A3DC - mov r6, r8 -_0224A358: - ldr r0, [r4, #8] - ldr r0, [r0, r8, lsl #2] - cmp r0, #0 - ldreq r0, [r7, #8] - streq r6, [r0, r8, lsl #2] - beq _0224A3CC - bl goastrdup - ldr r1, [r7, #8] - str r0, [r1, r8, lsl #2] - ldr r0, [r7, #8] - ldr r0, [r0, r8, lsl #2] - cmp r0, #0 - bne _0224A3CC - subs r8, r8, #1 - bmi _0224A3A8 -_0224A394: - ldr r0, [r7, #8] - ldr r0, [r0, r8, lsl #2] - bl DWCi_GsFree - subs r8, r8, #1 - bpl _0224A394 -_0224A3A8: - ldr r0, [r7, #8] - bl DWCi_GsFree - mov r0, r7 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0224A3CC: - ldr r0, [r4, #4] - add r8, r8, #1 - cmp r8, r0 - blt _0224A358 -_0224A3DC: - ldr r0, [r4, #4] - cmp r0, #0 - bge _0224A3FC - ldr r0, _02249BB0 ; =0x022594CC - ldr r1, _02249B60 ; =0x02259368 - ldr r2, _02249B64 ; =0x022592C8 - ldr r3, _0224AA88 ; =0x00000351 - bl __msl_assertion_failed -_0224A3FC: - ldr r0, [r4, #4] - cmp r0, #0 - ble _0224AA5C - ldr r0, [r4, #0xc] - cmp r0, #0 - bne _0224A428 - ldr r0, _02249BBC ; =0x022594E8 - ldr r1, _02249B60 ; =0x02259368 - ldr r2, _02249B64 ; =0x022592C8 - ldr r3, _0224AA88 ; =0x00000351 - bl __msl_assertion_failed -_0224A428: - ldr r0, [r4, #4] - mov r6, r0, lsl #2 - mov r0, r6 - bl DWCi_GsMalloc - str r0, [r7, #0xc] - cmp r0, #0 - bne _0224A460 - mov r0, r7 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0224A460: - ldr r1, [r4, #0xc] - mov r2, r6 - bl memcpy - b _0224AA5C -_0224A470: - ldr r0, [r4, #0] - ldr r6, [sp, #8] - cmp r0, #0 - beq _0224A4AC - bl goastrdup - str r0, [r6, #0] - cmp r0, #0 - bne _0224A4AC - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0224A4AC: - ldr r0, [r4, #4] - cmp r0, #0 - beq _0224A4E4 - bl goastrdup - str r0, [r6, #4] - cmp r0, #0 - bne _0224A4E4 - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0224A4E4: - ldr r0, [r4, #8] - cmp r0, #0 - beq _0224A51C - bl goastrdup - str r0, [r6, #8] - cmp r0, #0 - bne _0224A51C - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0224A51C: - ldr r0, [r4, #0xc] - cmp r0, #0 - beq _0224AA5C - bl goastrdup - str r0, [r6, #0xc] - cmp r0, #0 - bne _0224AA5C - mov r0, r6 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0224A554: - ldr r0, [r4, #4] - ldr r7, [sp, #8] - cmp r0, #0 - beq _0224A590 - bl goastrdup - str r0, [r7, #4] - cmp r0, #0 - bne _0224A590 - mov r0, r7 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0224A590: - ldr r0, [r4, #8] - cmp r0, #0 - bge _0224A5B0 - ldr r0, _0224AA8C ; =0x02259544 - ldr r1, _02249B60 ; =0x02259368 - ldr r2, _02249B64 ; =0x022592C8 - ldr r3, _0224AA90 ; =0x00000365 - bl __msl_assertion_failed -_0224A5B0: - ldr r0, [r4, #0xc] - cmp r0, #0 - moveq r0, #0 - streq r0, [r7, #0xc] - beq _0224A690 - ldr r0, [r4, #8] - mov r0, r0, lsl #2 - bl DWCi_GsMalloc - str r0, [r7, #0xc] - cmp r0, #0 - bne _0224A5F8 - mov r0, r7 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0224A5F8: - ldr r0, [r4, #8] - mov r8, #0 - cmp r0, #0 - ble _0224A690 - mov r6, r8 -_0224A60C: - ldr r0, [r4, #0xc] - ldr r0, [r0, r8, lsl #2] - cmp r0, #0 - ldreq r0, [r7, #0xc] - streq r6, [r0, r8, lsl #2] - beq _0224A680 - bl goastrdup - ldr r1, [r7, #0xc] - str r0, [r1, r8, lsl #2] - ldr r0, [r7, #0xc] - ldr r0, [r0, r8, lsl #2] - cmp r0, #0 - bne _0224A680 - subs r8, r8, #1 - bmi _0224A65C -_0224A648: - ldr r0, [r7, #0xc] - ldr r0, [r0, r8, lsl #2] - bl DWCi_GsFree - subs r8, r8, #1 - bpl _0224A648 -_0224A65C: - ldr r0, [r7, #0xc] - bl DWCi_GsFree - mov r0, r7 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0224A680: - ldr r0, [r4, #8] - add r8, r8, #1 - cmp r8, r0 - blt _0224A60C -_0224A690: - ldr r0, [r4, #8] - cmp r0, #0 - bge _0224A6B0 - ldr r0, _0224AA8C ; =0x02259544 - ldr r1, _02249B60 ; =0x02259368 - ldr r2, _02249B64 ; =0x022592C8 - ldr r3, _0224AA94 ; =0x00000366 - bl __msl_assertion_failed -_0224A6B0: - ldr r0, [r4, #0x10] - cmp r0, #0 - moveq r0, #0 - streq r0, [r7, #0x10] - beq _0224AA5C - ldr r0, [r4, #8] - mov r0, r0, lsl #2 - bl DWCi_GsMalloc - str r0, [r7, #0x10] - cmp r0, #0 - bne _0224A6F8 - mov r0, r7 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0224A6F8: - ldr r0, [r4, #8] - mov r8, #0 - cmp r0, #0 - ble _0224AA5C - mov r6, r8 -_0224A70C: - ldr r0, [r4, #0x10] - ldr r0, [r0, r8, lsl #2] - cmp r0, #0 - ldreq r0, [r7, #0x10] - streq r6, [r0, r8, lsl #2] - beq _0224A780 - bl goastrdup - ldr r1, [r7, #0x10] - str r0, [r1, r8, lsl #2] - ldr r0, [r7, #0x10] - ldr r0, [r0, r8, lsl #2] - cmp r0, #0 - bne _0224A780 - subs r8, r8, #1 - bmi _0224A75C -_0224A748: - ldr r0, [r7, #0x10] - ldr r0, [r0, r8, lsl #2] - bl DWCi_GsFree - subs r8, r8, #1 - bpl _0224A748 -_0224A75C: - ldr r0, [r7, #0x10] - bl DWCi_GsFree - mov r0, r7 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0224A780: - ldr r0, [r4, #8] - add r8, r8, #1 - cmp r8, r0 - blt _0224A70C - b _0224AA5C -_0224A794: - ldr r0, [r4, #4] - ldr r7, [sp, #8] - cmp r0, #0 - beq _0224A7D0 - bl goastrdup - str r0, [r7, #4] - cmp r0, #0 - bne _0224A7D0 - mov r0, r7 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0224A7D0: - ldr r0, [r4, #8] - cmp r0, #0 - beq _0224A808 - bl goastrdup - str r0, [r7, #8] - cmp r0, #0 - bne _0224A808 - mov r0, r7 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0224A808: - ldr r0, [r4, #0xc] - cmp r0, #0 - bge _0224A828 - ldr r0, _0224AA8C ; =0x02259544 - ldr r1, _02249B60 ; =0x02259368 - ldr r2, _02249B64 ; =0x022592C8 - mov r3, #0x370 - bl __msl_assertion_failed -_0224A828: - ldr r0, [r4, #0x10] - cmp r0, #0 - moveq r0, #0 - streq r0, [r7, #0x10] - beq _0224A908 - ldr r0, [r4, #0xc] - mov r0, r0, lsl #2 - bl DWCi_GsMalloc - str r0, [r7, #0x10] - cmp r0, #0 - bne _0224A870 - mov r0, r7 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0224A870: - ldr r0, [r4, #0xc] - mov r8, #0 - cmp r0, #0 - ble _0224A908 - mov r6, r8 -_0224A884: - ldr r0, [r4, #0x10] - ldr r0, [r0, r8, lsl #2] - cmp r0, #0 - ldreq r0, [r7, #0x10] - streq r6, [r0, r8, lsl #2] - beq _0224A8F8 - bl goastrdup - ldr r1, [r7, #0x10] - str r0, [r1, r8, lsl #2] - ldr r0, [r7, #0x10] - ldr r0, [r0, r8, lsl #2] - cmp r0, #0 - bne _0224A8F8 - subs r8, r8, #1 - bmi _0224A8D4 -_0224A8C0: - ldr r0, [r7, #0x10] - ldr r0, [r0, r8, lsl #2] - bl DWCi_GsFree - subs r8, r8, #1 - bpl _0224A8C0 -_0224A8D4: - ldr r0, [r7, #0x10] - bl DWCi_GsFree - mov r0, r7 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0224A8F8: - ldr r0, [r4, #0xc] - add r8, r8, #1 - cmp r8, r0 - blt _0224A884 -_0224A908: - ldr r0, [r4, #0xc] - cmp r0, #0 - bge _0224A928 - ldr r0, _0224AA8C ; =0x02259544 - ldr r1, _02249B60 ; =0x02259368 - ldr r2, _02249B64 ; =0x022592C8 - ldr r3, _0224AA98 ; =0x00000371 - bl __msl_assertion_failed -_0224A928: - ldr r0, [r4, #0x14] - cmp r0, #0 - moveq r0, #0 - streq r0, [r7, #0x14] - beq _0224AA5C - ldr r0, [r4, #0xc] - mov r0, r0, lsl #2 - bl DWCi_GsMalloc - str r0, [r7, #0x14] - cmp r0, #0 - bne _0224A970 - mov r0, r7 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0224A970: - ldr r0, [r4, #0xc] - mov r8, #0 - cmp r0, #0 - ble _0224AA5C - mov r6, r8 -_0224A984: - ldr r0, [r4, #0x14] - ldr r0, [r0, r8, lsl #2] - cmp r0, #0 - ldreq r0, [r7, #0x14] - streq r6, [r0, r8, lsl #2] - beq _0224A9F8 - bl goastrdup - ldr r1, [r7, #0x14] - str r0, [r1, r8, lsl #2] - ldr r0, [r7, #0x14] - ldr r0, [r0, r8, lsl #2] - cmp r0, #0 - bne _0224A9F8 - subs r8, r8, #1 - bmi _0224A9D4 -_0224A9C0: - ldr r0, [r7, #0x14] - ldr r0, [r0, r8, lsl #2] - bl DWCi_GsFree - subs r8, r8, #1 - bpl _0224A9C0 -_0224A9D4: - ldr r0, [r7, #0x14] - bl DWCi_GsFree - mov r0, r7 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0224A9F8: - ldr r0, [r4, #0xc] - add r8, r8, #1 - cmp r8, r0 - blt _0224A984 - b _0224AA5C -_0224AA0C: - ldr r0, [r4, #4] - ldr r4, [sp, #8] - cmp r0, #0 - beq _0224AA5C - bl goastrdup - str r0, [r4, #4] - cmp r0, #0 - bne _0224AA5C - mov r0, r4 - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0224AA48: - ldr r0, _0224AA9C ; =0x022593EC - ldr r1, _02249B60 ; =0x02259368 - ldr r2, _02249B64 ; =0x022592C8 - mov r3, #0x380 - bl __msl_assertion_failed -_0224AA5C: - ldr r0, [r5, #0x820] - add r1, sp, #0 - bl ArrayAppend - mov r0, #1 - add sp, sp, #0x18 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_0224AA74: .word 0x0000030E -_0224AA78: .word Unk_ov66_02259504 -_0224AA7C: .word 0x00000335 -_0224AA80: .word Unk_ov66_02259520 -_0224AA84: .word 0x0000033E -_0224AA88: .word 0x00000351 -_0224AA8C: .word Unk_ov66_02259544 -_0224AA90: .word 0x00000365 -_0224AA94: .word 0x00000366 -_0224AA98: .word 0x00000371 -_0224AA9C: .word Unk_ov66_022593EC - arm_func_end ciAddCallback_ - - arm_func_start ciCallCallback -ciCallCallback: ; 0x0224AAA0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x14 - movs r6, r0 - mov r5, r1 - bne _0224AAC8 - ldr r0, _0224B068 ; =0x022593F0 - ldr r1, _0224B06C ; =0x02259368 - ldr r2, _0224B070 ; =0x022592D8 - ldr r3, _0224B074 ; =0x0000038D - bl __msl_assertion_failed -_0224AAC8: - cmp r5, #0 - bne _0224AAE4 - ldr r0, _0224B078 ; =0x02259358 - ldr r1, _0224B06C ; =0x02259368 - ldr r2, _0224B070 ; =0x022592D8 - ldr r3, _0224B07C ; =0x0000038F - bl __msl_assertion_failed -_0224AAE4: - ldr r0, [r5, #0] - cmp r0, #0 - bge _0224AB04 - ldr r0, _0224B080 ; =0x02259378 - ldr r1, _0224B06C ; =0x02259368 - ldr r2, _0224B070 ; =0x022592D8 - ldr r3, _0224B07C ; =0x0000038F - bl __msl_assertion_failed -_0224AB04: - ldr r0, [r5, #0] - cmp r0, #0x20 - blt _0224AB24 - ldr r0, _0224B084 ; =0x02259388 - ldr r1, _0224B06C ; =0x02259368 - ldr r2, _0224B070 ; =0x022592D8 - ldr r3, _0224B07C ; =0x0000038F - bl __msl_assertion_failed -_0224AB24: - ldr r0, [r5, #4] - cmp r0, #0 - bne _0224AB44 - ldr r0, _0224B088 ; =0x022593A4 - ldr r1, _0224B06C ; =0x02259368 - ldr r2, _0224B070 ; =0x022592D8 - ldr r3, _0224B07C ; =0x0000038F - bl __msl_assertion_failed -_0224AB44: - ldr r0, [r5, #8] - cmp r0, #0 - bne _0224AB64 - ldr r0, _0224B08C ; =0x022593BC - ldr r1, _0224B06C ; =0x02259368 - ldr r2, _0224B070 ; =0x022592D8 - ldr r3, _0224B07C ; =0x0000038F - bl __msl_assertion_failed -_0224AB64: - ldr r0, [r5, #0x10] - cmp r0, #0 - bge _0224AB84 - ldr r0, _0224B090 ; =0x022593DC - ldr r1, _0224B06C ; =0x02259368 - ldr r2, _0224B070 ; =0x022592D8 - ldr r3, _0224B07C ; =0x0000038F - bl __msl_assertion_failed -_0224AB84: - ldr r0, [r5, #0] - ldr r4, [r5, #0xc] - cmp r0, #0x1f - addls pc, pc, r0, lsl #2 - b _0224B044 -_0224AB98: ; jump table - b _0224AC18 ; case 0 - b _0224AC34 ; case 1 - b _0224AC50 ; case 2 - b _0224AC6C ; case 3 - b _0224AC88 ; case 4 - b _0224ACA8 ; case 5 - b _0224ACC4 ; case 6 - b _0224ACE0 ; case 7 - b _0224AD08 ; case 8 - b _0224AD24 ; case 9 - b _0224AD40 ; case 10 - b _0224AD5C ; case 11 - b _0224AD78 ; case 12 - b _0224AD94 ; case 13 - b _0224ADBC ; case 14 - b _0224ADE4 ; case 15 - b _0224AE0C ; case 16 - b _0224AE28 ; case 17 - b _0224AE44 ; case 18 - b _0224AE64 ; case 19 - b _0224AE8C ; case 20 - b _0224AEC8 ; case 21 - b _0224AEE8 ; case 22 - b _0224AF10 ; case 23 - b _0224AF30 ; case 24 - b _0224AF50 ; case 25 - b _0224AF70 ; case 26 - b _0224AF8C ; case 27 - b _0224AFAC ; case 28 - b _0224AFCC ; case 29 - b _0224AFF4 ; case 30 - b _0224B028 ; case 31 -_0224AC18: - ldr r0, [r5, #8] - ldr r3, [r5, #4] - ldr r1, [r0, #0] - mov r0, r6 - mov r2, r4 - blx r3 - b _0224B058 -_0224AC34: - ldr r0, [r5, #8] - ldr r3, [r5, #4] - ldr r1, [r0, #0] - mov r0, r6 - mov r2, r4 - blx r3 - b _0224B058 -_0224AC50: - ldr r3, [r5, #8] - mov r0, r6 - str r4, [sp] - ldr r4, [r5, #4] - ldmia r3, {r1, r2, r3} - blx r4 - b _0224B058 -_0224AC6C: - ldr r0, [r5, #8] - ldr ip, [r5, #4] - ldmia r0, {r1, r2} - mov r0, r6 - mov r3, r4 - blx ip - b _0224B058 -_0224AC88: - ldr r3, [r5, #8] - mov r0, r6 - ldr r1, [r3, #0xc] - stmia sp, {r1, r4} - ldr r4, [r5, #4] - ldmia r3, {r1, r2, r3} - blx r4 - b _0224B058 -_0224ACA8: - ldr r3, [r5, #8] - mov r0, r6 - str r4, [sp] - ldr r4, [r5, #4] - ldmia r3, {r1, r2, r3} - blx r4 - b _0224B058 -_0224ACC4: - ldr r3, [r5, #8] - mov r0, r6 - str r4, [sp] - ldr r4, [r5, #4] - ldmia r3, {r1, r2, r3} - blx r4 - b _0224B058 -_0224ACE0: - ldr r3, [r5, #8] - mov r0, r6 - ldr r1, [r3, #0xc] - str r1, [sp] - ldr r1, [r3, #0x10] - stmib sp, {r1, r4} - ldr r4, [r5, #4] - ldmia r3, {r1, r2, r3} - blx r4 - b _0224B058 -_0224AD08: - ldr r3, [r5, #8] - mov r0, r6 - str r4, [sp] - ldr r4, [r5, #4] - ldmia r3, {r1, r2, r3} - blx r4 - b _0224B058 -_0224AD24: - ldr r0, [r5, #8] - ldr ip, [r5, #4] - ldmia r0, {r1, r2} - mov r0, r6 - mov r3, r4 - blx ip - b _0224B058 -_0224AD40: - ldr r0, [r5, #8] - ldr ip, [r5, #4] - ldmia r0, {r1, r2} - mov r0, r6 - mov r3, r4 - blx ip - b _0224B058 -_0224AD5C: - ldr r3, [r5, #8] - mov r0, r6 - str r4, [sp] - ldr r4, [r5, #4] - ldmia r3, {r1, r2, r3} - blx r4 - b _0224B058 -_0224AD78: - ldr r0, [r5, #8] - ldr r3, [r5, #4] - ldr r1, [r0, #0] - mov r0, r6 - mov r2, r4 - blx r3 - b _0224B058 -_0224AD94: - ldr r3, [r5, #8] - mov r0, r6 - ldr r1, [r3, #0xc] - str r1, [sp] - ldr r1, [r3, #0x10] - stmib sp, {r1, r4} - ldr r4, [r5, #4] - ldmia r3, {r1, r2, r3} - blx r4 - b _0224B058 -_0224ADBC: - ldr r3, [r5, #8] - mov r0, r6 - ldr r1, [r3, #0xc] - str r1, [sp] - ldr r1, [r3, #0x10] - stmib sp, {r1, r4} - ldr r4, [r5, #4] - ldmia r3, {r1, r2, r3} - blx r4 - b _0224B058 -_0224ADE4: - ldr r7, [r5, #8] - ldr r8, [r5, #4] - ldr r1, [r7, #8] - mov r0, r6 - bl ciJoinCallbackCalled - str r4, [sp] - mov r0, r6 - ldmia r7, {r1, r2, r3} - blx r8 - b _0224B058 -_0224AE0C: - ldr r3, [r5, #8] - mov r0, r6 - str r4, [sp] - ldr r4, [r5, #4] - ldmia r3, {r1, r2, r3} - blx r4 - b _0224B058 -_0224AE28: - ldr r3, [r5, #8] - mov r0, r6 - str r4, [sp] - ldr r4, [r5, #4] - ldmia r3, {r1, r2, r3} - blx r4 - b _0224B058 -_0224AE44: - ldr r3, [r5, #8] - mov r0, r6 - ldr r1, [r3, #0xc] - stmia sp, {r1, r4} - ldr r4, [r5, #4] - ldmia r3, {r1, r2, r3} - blx r4 - b _0224B058 -_0224AE64: - ldr r3, [r5, #8] - mov r0, r6 - ldr r1, [r3, #0xc] - str r1, [sp] - ldr r1, [r3, #0x10] - stmib sp, {r1, r4} - ldr r4, [r5, #4] - ldmia r3, {r1, r2, r3} - blx r4 - b _0224B058 -_0224AE8C: - ldr r3, [r5, #8] - mov r0, r6 - ldr r1, [r3, #0xc] - str r1, [sp] - ldr r1, [r3, #0x10] - str r1, [sp, #4] - ldr r1, [r3, #0x14] - str r1, [sp, #8] - ldr r1, [r3, #0x18] - str r1, [sp, #0xc] - str r4, [sp, #0x10] - ldr r4, [r5, #4] - ldmia r3, {r1, r2, r3} - blx r4 - b _0224B058 -_0224AEC8: - ldr r3, [r5, #8] - mov r0, r6 - ldr r1, [r3, #0xc] - stmia sp, {r1, r4} - ldr r4, [r5, #4] - ldmia r3, {r1, r2, r3} - blx r4 - b _0224B058 -_0224AEE8: - ldr r3, [r5, #8] - mov r0, r6 - ldr r1, [r3, #0xc] - str r1, [sp] - ldr r1, [r3, #0x10] - stmib sp, {r1, r4} - ldr r4, [r5, #4] - ldmia r3, {r1, r2, r3} - blx r4 - b _0224B058 -_0224AF10: - ldr r3, [r5, #8] - mov r0, r6 - ldr r1, [r3, #0xc] - stmia sp, {r1, r4} - ldr r4, [r5, #4] - ldmia r3, {r1, r2, r3} - blx r4 - b _0224B058 -_0224AF30: - ldr r3, [r5, #8] - mov r0, r6 - ldr r1, [r3, #0xc] - stmia sp, {r1, r4} - ldr r4, [r5, #4] - ldmia r3, {r1, r2, r3} - blx r4 - b _0224B058 -_0224AF50: - ldr r3, [r5, #8] - mov r0, r6 - ldr r1, [r3, #0xc] - stmia sp, {r1, r4} - ldr r4, [r5, #4] - ldmia r3, {r1, r2, r3} - blx r4 - b _0224B058 -_0224AF70: - ldr r3, [r5, #8] - mov r0, r6 - str r4, [sp] - ldr r4, [r5, #4] - ldmia r3, {r1, r2, r3} - blx r4 - b _0224B058 -_0224AF8C: - ldr r3, [r5, #8] - mov r0, r6 - ldr r1, [r3, #0xc] - stmia sp, {r1, r4} - ldr r4, [r5, #4] - ldmia r3, {r1, r2, r3} - blx r4 - b _0224B058 -_0224AFAC: - ldr r3, [r5, #8] - mov r0, r6 - ldr r1, [r3, #0xc] - stmia sp, {r1, r4} - ldr r4, [r5, #4] - ldmia r3, {r1, r2, r3} - blx r4 - b _0224B058 -_0224AFCC: - ldr r3, [r5, #8] - mov r0, r6 - ldr r1, [r3, #0xc] - str r1, [sp] - ldr r1, [r3, #0x10] - stmib sp, {r1, r4} - ldr r4, [r5, #4] - ldmia r3, {r1, r2, r3} - blx r4 - b _0224B058 -_0224AFF4: - ldr r3, [r5, #8] - mov r0, r6 - ldr r1, [r3, #0xc] - str r1, [sp] - ldr r1, [r3, #0x10] - str r1, [sp, #4] - ldr r1, [r3, #0x14] - str r1, [sp, #8] - str r4, [sp, #0xc] - ldr r4, [r5, #4] - ldmia r3, {r1, r2, r3} - blx r4 - b _0224B058 -_0224B028: - ldr r0, [r5, #8] - ldr ip, [r5, #4] - ldmia r0, {r1, r2} - mov r0, r6 - mov r3, r4 - blx ip - b _0224B058 -_0224B044: - ldr r0, _0224B094 ; =0x022593EC - ldr r1, _0224B06C ; =0x02259368 - ldr r2, _0224B070 ; =0x022592D8 - ldr r3, _0224B098 ; =0x000005EF - bl __msl_assertion_failed -_0224B058: - mov r0, r5 - bl ciFreeCallbackData - add sp, sp, #0x14 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_0224B068: .word Unk_ov66_022593F0 -_0224B06C: .word Unk_ov66_02259368 -_0224B070: .word Unk_ov66_022592D8 -_0224B074: .word 0x0000038D -_0224B078: .word Unk_ov66_02259358 -_0224B07C: .word 0x0000038F -_0224B080: .word Unk_ov66_02259378 -_0224B084: .word Unk_ov66_02259388 -_0224B088: .word Unk_ov66_022593A4 -_0224B08C: .word Unk_ov66_022593BC -_0224B090: .word Unk_ov66_022593DC -_0224B094: .word Unk_ov66_022593EC -_0224B098: .word 0x000005EF - arm_func_end ciCallCallback - - arm_func_start ciCallCallbacks -ciCallCallbacks: ; 0x0224B09C - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x18 - movs sl, r0 - mov sb, r1 - bne _0224B0C4 - ldr r0, _0224B26C ; =0x022593F0 - ldr r1, _0224B270 ; =0x02259368 - ldr r2, _0224B274 ; =0x022592E8 - ldr r3, _0224B278 ; =0x000005FC - bl __msl_assertion_failed -_0224B0C4: - ldr r0, [sl, #0x820] - mov r8, #0 - bl ArrayLength - cmp r0, #0 - addle sp, sp, #0x18 - ldmleia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr fp, _0224B27C ; =0x02259358 - ldr r6, _0224B270 ; =0x02259368 - ldr r5, _0224B274 ; =0x022592E8 - ldr r4, _0224B280 ; =0x00000605 -_0224B0EC: - ldr r0, [sl, #0x820] - mov r1, r8 - bl ArrayNth - movs r7, r0 - bne _0224B114 - mov r0, fp - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl __msl_assertion_failed -_0224B114: - ldr r0, [r7, #0] - cmp r0, #0 - bge _0224B134 - ldr r0, _0224B284 ; =0x02259378 - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl __msl_assertion_failed -_0224B134: - ldr r0, [r7, #0] - cmp r0, #0x20 - blt _0224B154 - ldr r0, _0224B288 ; =0x02259388 - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl __msl_assertion_failed -_0224B154: - ldr r0, [r7, #4] - cmp r0, #0 - bne _0224B174 - ldr r0, _0224B28C ; =0x022593A4 - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl __msl_assertion_failed -_0224B174: - ldr r0, [r7, #8] - cmp r0, #0 - bne _0224B194 - ldr r0, _0224B290 ; =0x022593BC - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl __msl_assertion_failed -_0224B194: - ldr r0, [r7, #0x10] - cmp r0, #0 - bge _0224B1B4 - ldr r0, _0224B294 ; =0x022593DC - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl __msl_assertion_failed -_0224B1B4: - ldr r1, [r7, #0x14] - cmp r1, #0 - beq _0224B1E8 - mov r0, sl - bl ciInChannel - cmp r0, #0 - bne _0224B1E8 - mov r0, r7 - bl ciFreeCallbackData - ldr r0, [sl, #0x820] - mov r1, r8 - bl ArrayDeleteAt - b _0224B254 -_0224B1E8: - ldr r1, [r7, #0x14] - cmp r1, #0 - beq _0224B204 - mov r0, sl - bl ciWasJoinCallbackCalled - cmp r0, #0 - beq _0224B250 -_0224B204: - cmp sb, #0 - ldrne r0, [r7, #0x10] - cmpne r0, sb - bne _0224B250 - add ip, sp, #0 - ldmia r7!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - ldmia r7, {r0, r1} - stmia ip, {r0, r1} - ldr r0, [sl, #0x820] - mov r1, r8 - bl ArrayDeleteAt - mov r0, sl - add r1, sp, #0 - bl ciCallCallback - cmp sb, #0 - beq _0224B254 - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0224B250: - add r8, r8, #1 -_0224B254: - ldr r0, [sl, #0x820] - bl ArrayLength - cmp r8, r0 - blt _0224B0EC - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0224B26C: .word Unk_ov66_022593F0 -_0224B270: .word Unk_ov66_02259368 -_0224B274: .word Unk_ov66_022592E8 -_0224B278: .word 0x000005FC -_0224B27C: .word Unk_ov66_02259358 -_0224B280: .word 0x00000605 -_0224B284: .word Unk_ov66_02259378 -_0224B288: .word Unk_ov66_02259388 -_0224B28C: .word Unk_ov66_022593A4 -_0224B290: .word Unk_ov66_022593BC -_0224B294: .word Unk_ov66_022593DC - arm_func_end ciCallCallbacks - - arm_func_start ciGetCallbackIndexByID -ciGetCallbackIndexByID: ; 0x0224B298 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - movs sl, r0 - mov sb, r1 - bne _0224B2BC - ldr r0, _0224B3CC ; =0x022593F0 - ldr r1, _0224B3D0 ; =0x02259368 - ldr r2, _0224B3D4 ; =0x02259320 - ldr r3, _0224B3D8 ; =0x0000063B - bl __msl_assertion_failed -_0224B2BC: - ldr r0, [sl, #0x820] - bl ArrayLength - mov fp, r0 - cmp fp, #0 - mov r8, #0 - ble _0224B3C4 - ldr r6, _0224B3D0 ; =0x02259368 - ldr r5, _0224B3D4 ; =0x02259320 - ldr r4, _0224B3DC ; =0x00000648 -_0224B2E0: - ldr r0, [sl, #0x820] - mov r1, r8 - bl ArrayNth - movs r7, r0 - bne _0224B308 - ldr r0, _0224B3E0 ; =0x02259358 - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl __msl_assertion_failed -_0224B308: - ldr r0, [r7, #0] - cmp r0, #0 - bge _0224B328 - ldr r0, _0224B3E4 ; =0x02259378 - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl __msl_assertion_failed -_0224B328: - ldr r0, [r7, #0] - cmp r0, #0x20 - blt _0224B348 - ldr r0, _0224B3E8 ; =0x02259388 - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl __msl_assertion_failed -_0224B348: - ldr r0, [r7, #4] - cmp r0, #0 - bne _0224B368 - ldr r0, _0224B3EC ; =0x022593A4 - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl __msl_assertion_failed -_0224B368: - ldr r0, [r7, #8] - cmp r0, #0 - bne _0224B388 - ldr r0, _0224B3F0 ; =0x022593BC - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl __msl_assertion_failed -_0224B388: - ldr r0, [r7, #0x10] - cmp r0, #0 - bge _0224B3A8 - ldr r0, _0224B3F4 ; =0x022593DC - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl __msl_assertion_failed -_0224B3A8: - ldr r0, [r7, #0x10] - cmp r0, sb - moveq r0, r8 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r8, r8, #1 - cmp r8, fp - blt _0224B2E0 -_0224B3C4: - mvn r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0224B3CC: .word Unk_ov66_022593F0 -_0224B3D0: .word Unk_ov66_02259368 -_0224B3D4: .word Unk_ov66_02259320 -_0224B3D8: .word 0x0000063B -_0224B3DC: .word 0x00000648 -_0224B3E0: .word Unk_ov66_02259358 -_0224B3E4: .word Unk_ov66_02259378 -_0224B3E8: .word Unk_ov66_02259388 -_0224B3EC: .word Unk_ov66_022593A4 -_0224B3F0: .word Unk_ov66_022593BC -_0224B3F4: .word Unk_ov66_022593DC - arm_func_end ciGetCallbackIndexByID - - arm_func_start ciCheckCallbacksForID -ciCheckCallbacksForID: ; 0x0224B3F8 - stmfd sp!, {r3, lr} - bl ciGetCallbackIndexByID - mvn r1, #0 - cmp r0, r1 - moveq r0, #0 - movne r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ciCheckCallbacksForID - .data - - - .global Unk_ov66_022592C8 -Unk_ov66_022592C8: ; 0x022592C8 - .ascii "ciAddCallback_" - .space 0x2 - - .global Unk_ov66_022592D8 -Unk_ov66_022592D8: ; 0x022592D8 - .ascii "ciCallCallback" - .space 0x2 - - .global Unk_ov66_022592E8 -Unk_ov66_022592E8: ; 0x022592E8 - .asciz "ciCallCallbacks" - - .global Unk_ov66_022592F8 -Unk_ov66_022592F8: ; 0x022592F8 - .ascii "ciFreeCallbackData" - .space 0x2 - - .global Unk_ov66_0225930C -Unk_ov66_0225930C: ; 0x0225930C - .ascii "ciCleanupCallbacks" - .space 0x2 - - .global Unk_ov66_02259320 -Unk_ov66_02259320: ; 0x02259320 - .ascii "ciGetCallbackIndexByID" - .space 0x2 - - .global Unk_ov66_02259338 -Unk_ov66_02259338: ; 0x02259338 - .asciz "ciCallbacksArrayElementFreeFn" - .space 0x2 - - .global Unk_ov66_02259358 -Unk_ov66_02259358: ; 0x02259358 - .ascii "data != NULL" - .space 0x4 - - .global Unk_ov66_02259368 -Unk_ov66_02259368: ; 0x02259368 - .asciz "chatCallbacks.c" - - .global Unk_ov66_02259378 -Unk_ov66_02259378: ; 0x02259378 - .asciz "data->type >= 0" - - .global Unk_ov66_02259388 -Unk_ov66_02259388: ; 0x02259388 - .asciz "data->type < CALLBACK_NUM" - .space 0x2 - - .global Unk_ov66_022593A4 -Unk_ov66_022593A4: ; 0x022593A4 - .ascii "data->callback != NULL" - .space 0x2 - - .global Unk_ov66_022593BC -Unk_ov66_022593BC: ; 0x022593BC - .ascii "data->callbackParams != NULL" - .space 0x4 - - .global Unk_ov66_022593DC -Unk_ov66_022593DC: ; 0x022593DC - .asciz "data->ID >= 0" - .space 0x2 - - .global Unk_ov66_022593EC -Unk_ov66_022593EC: ; 0x022593EC - .word 0x30 - - .global Unk_ov66_022593F0 -Unk_ov66_022593F0: ; 0x022593F0 - .ascii "chat != NULL" - .space 0x4 - - .global Unk_ov66_02259400 -Unk_ov66_02259400: ; 0x02259400 - .asciz "type >= 0" - .space 0x2 - - .global Unk_ov66_0225940C -Unk_ov66_0225940C: ; 0x0225940C - .asciz "type < CALLBACK_NUM" - - .global Unk_ov66_02259420 -Unk_ov66_02259420: ; 0x02259420 - .ascii "connection->callbackList != NULL" - .space 0x4 - - .global Unk_ov66_02259444 -Unk_ov66_02259444: ; 0x02259444 - .ascii "callback != NULL" - .space 0x4 - - .global Unk_ov66_02259458 -Unk_ov66_02259458: ; 0x02259458 - .ascii "callbackParams != NULL" - .space 0x2 - - .global Unk_ov66_02259470 -Unk_ov66_02259470: ; 0x02259470 - .ascii "callbackParamsSize > 0" - .space 0x2 - - .global Unk_ov66_02259488 -Unk_ov66_02259488: ; 0x02259488 - .asciz "ID >= 0" - - .global Unk_ov66_02259490 -Unk_ov66_02259490: ; 0x02259490 - .ascii "srcParams-> numChannels >= 0" - .space 0x4 - - .global Unk_ov66_022594B0 -Unk_ov66_022594B0: ; 0x022594B0 - .asciz "srcParams->numUsers != NULL" - - .global Unk_ov66_022594CC -Unk_ov66_022594CC: ; 0x022594CC - .asciz "srcParams-> numUsers >= 0" - .space 0x2 - - .global Unk_ov66_022594E8 -Unk_ov66_022594E8: ; 0x022594E8 - .ascii "srcParams->modes != NULL" - .space 0x4 - - .global Unk_ov66_02259504 -Unk_ov66_02259504: ; 0x02259504 - .ascii "srcParams-> numBans >= 0" - .space 0x4 - - .global Unk_ov66_02259520 -Unk_ov66_02259520: ; 0x02259520 - .ascii "srcParams-> numSuggestedNicks >= 0" - .space 0x2 - - .global Unk_ov66_02259544 -Unk_ov66_02259544: ; 0x02259544 - .ascii "srcParams-> num >= 0" - .space 0x4 - diff --git a/subprojects/gamespy/libraries/chat/asm/chatchannel.s b/subprojects/gamespy/libraries/chat/asm/chatchannel.s deleted file mode 100644 index 32d45762dc..0000000000 --- a/subprojects/gamespy/libraries/chat/asm/chatchannel.s +++ /dev/null @@ -1,2738 +0,0 @@ - .include "macros/function.inc" - .include "include/chatchannel.inc" - - .extern __lower_mapC - - .text - - - arm_func_start ciHashString -ciHashString: ; 0x0224B414 - stmfd sp!, {r3, r4, r5, lr} - movs r5, r0 - mov r4, r1 - bne _0224B438 - ldr r0, _0224B4A0 ; =0x0225980C - ldr r1, _0224B4A4 ; =0x02259818 - ldr r2, _0224B4A8 ; =0x02259568 - mov r3, #0x99 - bl __msl_assertion_failed -_0224B438: - ldrsb r0, [r5] - cmp r0, #0 - bne _0224B458 - ldr r0, _0224B4AC ; =0x02259828 - ldr r1, _0224B4A4 ; =0x02259818 - ldr r2, _0224B4A8 ; =0x02259568 - mov r3, #0x99 - bl __msl_assertion_failed -_0224B458: - ldrsb r2, [r5], #1 - mov r0, #0 - cmp r2, #0 - beq _0224B490 - ldr r1, _0224B4B0 ; =0x020FE764 -_0224B46C: - cmp r2, #0 - blt _0224B480 - cmp r2, #0x80 - bge _0224B480 - ldrb r2, [r1, r2] -_0224B480: - add r0, r0, r2 - ldrsb r2, [r5], #1 - cmp r2, #0 - bne _0224B46C -_0224B490: - mov r1, r4 - bl _s32_div_f - mov r0, r1 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0224B4A0: .word Unk_ov66_0225980C -_0224B4A4: .word Unk_ov66_02259818 -_0224B4A8: .word Unk_ov66_02259568 -_0224B4AC: .word Unk_ov66_02259828 -_0224B4B0: .word __lower_mapC - arm_func_end ciHashString - - arm_func_start ciGetChannel -ciGetChannel: ; 0x0224B4B4 - stmfd sp!, {r3, r4, lr} - sub sp, sp, #0x1e4 - ldr r2, _0224B4E8 ; =0x00000101 - mov r4, r0 - add r0, sp, #0 - bl strncpy - mov r0, #0 - strb r0, [sp, #0x100] - ldr r0, [r4, #0x80c] - add r1, sp, #0 - bl TableLookup - add sp, sp, #0x1e4 - ldmia sp!, {r3, r4, pc} - ; .align 2, 0 -_0224B4E8: .word 0x00000101 - arm_func_end ciGetChannel - - arm_func_start ciChannelTableHashFn -ciChannelTableHashFn: ; 0x0224B4EC - stmfd sp!, {r3, r4, r5, lr} - movs r5, r0 - mov r4, r1 - bne _0224B510 - ldr r0, _0224B53C ; =0x02259838 - ldr r1, _0224B540 ; =0x02259818 - ldr r2, _0224B544 ; =0x022596FC - mov r3, #0xb4 - bl __msl_assertion_failed -_0224B510: - cmp r4, #0 - bgt _0224B52C - ldr r0, _0224B548 ; =0x02259848 - ldr r1, _0224B540 ; =0x02259818 - ldr r2, _0224B544 ; =0x022596FC - mov r3, #0xb5 - bl __msl_assertion_failed -_0224B52C: - mov r0, r5 - mov r1, r4 - bl ciHashString - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0224B53C: .word Unk_ov66_02259838 -_0224B540: .word Unk_ov66_02259818 -_0224B544: .word Unk_ov66_022596FC -_0224B548: .word Unk_ov66_02259848 - arm_func_end ciChannelTableHashFn - - arm_func_start ciChannelTableCompareFn -ciChannelTableCompareFn: ; 0x0224B54C - stmfd sp!, {r3, r4, r5, lr} - movs r5, r0 - mov r4, r1 - bne _0224B570 - ldr r0, _0224B64C ; =0x02259858 - ldr r1, _0224B650 ; =0x02259818 - ldr r2, _0224B654 ; =0x022597BC - mov r3, #0xc1 - bl __msl_assertion_failed -_0224B570: - cmp r4, #0 - bne _0224B58C - ldr r0, _0224B658 ; =0x02259868 - ldr r1, _0224B650 ; =0x02259818 - ldr r2, _0224B654 ; =0x022597BC - mov r3, #0xc2 - bl __msl_assertion_failed -_0224B58C: - cmp r5, #0 - bne _0224B5A8 - ldr r0, _0224B65C ; =0x02259878 - ldr r1, _0224B650 ; =0x02259818 - ldr r2, _0224B654 ; =0x022597BC - mov r3, #0xc6 - bl __msl_assertion_failed -_0224B5A8: - cmp r4, #0 - bne _0224B5C4 - ldr r0, _0224B660 ; =0x02259888 - ldr r1, _0224B650 ; =0x02259818 - ldr r2, _0224B654 ; =0x022597BC - mov r3, #0xc7 - bl __msl_assertion_failed -_0224B5C4: - cmp r5, #0 - bne _0224B5E0 - ldr r0, _0224B65C ; =0x02259878 - ldr r1, _0224B650 ; =0x02259818 - ldr r2, _0224B654 ; =0x022597BC - mov r3, #0xc8 - bl __msl_assertion_failed -_0224B5E0: - ldrsb r0, [r5] - cmp r0, #0 - bne _0224B600 - ldr r0, _0224B664 ; =0x02259898 - ldr r1, _0224B650 ; =0x02259818 - ldr r2, _0224B654 ; =0x022597BC - mov r3, #0xc8 - bl __msl_assertion_failed -_0224B600: - cmp r4, #0 - bne _0224B61C - ldr r0, _0224B660 ; =0x02259888 - ldr r1, _0224B650 ; =0x02259818 - ldr r2, _0224B654 ; =0x022597BC - mov r3, #0xc9 - bl __msl_assertion_failed -_0224B61C: - ldrsb r0, [r4] - cmp r0, #0 - bne _0224B63C - ldr r0, _0224B668 ; =0x022598A8 - ldr r1, _0224B650 ; =0x02259818 - ldr r2, _0224B654 ; =0x022597BC - mov r3, #0xc9 - bl __msl_assertion_failed -_0224B63C: - mov r0, r5 - mov r1, r4 - bl strcasecmp - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0224B64C: .word Unk_ov66_02259858 -_0224B650: .word Unk_ov66_02259818 -_0224B654: .word Unk_ov66_022597BC -_0224B658: .word Unk_ov66_02259868 -_0224B65C: .word Unk_ov66_02259878 -_0224B660: .word Unk_ov66_02259888 -_0224B664: .word Unk_ov66_02259898 -_0224B668: .word Unk_ov66_022598A8 - arm_func_end ciChannelTableCompareFn - - arm_func_start ciChannelTableElementFreeFn -ciChannelTableElementFreeFn: ; 0x0224B66C - stmfd sp!, {r4, lr} - movs r4, r0 - bne _0224B68C - ldr r0, _0224B6A8 ; =0x02259838 - ldr r1, _0224B6AC ; =0x02259818 - ldr r2, _0224B6B0 ; =0x022597F0 - mov r3, #0xd2 - bl __msl_assertion_failed -_0224B68C: - ldr r0, [r4, #0x15c] - bl DWCi_GsFree - ldr r0, [r4, #0x134] - cmp r0, #0 - ldmeqia sp!, {r4, pc} - bl TableFree - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0224B6A8: .word Unk_ov66_02259838 -_0224B6AC: .word Unk_ov66_02259818 -_0224B6B0: .word Unk_ov66_022597F0 - arm_func_end ciChannelTableElementFreeFn - - arm_func_start ciUserTableHashFn -ciUserTableHashFn: ; 0x0224B6B4 - stmfd sp!, {r3, r4, r5, lr} - movs r5, r0 - mov r4, r1 - bne _0224B6D8 - ldr r0, _0224B704 ; =0x02259838 - ldr r1, _0224B708 ; =0x02259818 - ldr r2, _0224B70C ; =0x02259614 - mov r3, #0xe1 - bl __msl_assertion_failed -_0224B6D8: - cmp r4, #0 - bgt _0224B6F4 - ldr r0, _0224B710 ; =0x02259848 - ldr r1, _0224B708 ; =0x02259818 - ldr r2, _0224B70C ; =0x02259614 - mov r3, #0xe2 - bl __msl_assertion_failed -_0224B6F4: - mov r0, r5 - mov r1, r4 - bl ciHashString - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0224B704: .word Unk_ov66_02259838 -_0224B708: .word Unk_ov66_02259818 -_0224B70C: .word Unk_ov66_02259614 -_0224B710: .word Unk_ov66_02259848 - arm_func_end ciUserTableHashFn - - arm_func_start ciUserTableCompareFn -ciUserTableCompareFn: ; 0x0224B714 - stmfd sp!, {r3, r4, r5, lr} - movs r5, r0 - mov r4, r1 - bne _0224B738 - ldr r0, _0224B808 ; =0x02259858 - ldr r1, _0224B80C ; =0x02259818 - ldr r2, _0224B810 ; =0x022596B4 - mov r3, #0xee - bl __msl_assertion_failed -_0224B738: - cmp r4, #0 - bne _0224B754 - ldr r0, _0224B814 ; =0x02259868 - ldr r1, _0224B80C ; =0x02259818 - ldr r2, _0224B810 ; =0x022596B4 - mov r3, #0xef - bl __msl_assertion_failed -_0224B754: - cmp r5, #0 - cmpne r4, #0 - bne _0224B780 - cmp r5, #0 - cmpeq r4, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r5, #0 - mvneq r0, #0 - movne r0, #1 - ldmia sp!, {r3, r4, r5, pc} -_0224B780: - cmp r5, #0 - bne _0224B79C - ldr r0, _0224B818 ; =0x02259878 - ldr r1, _0224B80C ; =0x02259818 - ldr r2, _0224B810 ; =0x022596B4 - ldr r3, _0224B81C ; =0x00000102 - bl __msl_assertion_failed -_0224B79C: - ldrsb r0, [r5] - cmp r0, #0 - bne _0224B7BC - ldr r0, _0224B820 ; =0x02259898 - ldr r1, _0224B80C ; =0x02259818 - ldr r2, _0224B810 ; =0x022596B4 - ldr r3, _0224B81C ; =0x00000102 - bl __msl_assertion_failed -_0224B7BC: - cmp r4, #0 - bne _0224B7D8 - ldr r0, _0224B824 ; =0x02259888 - ldr r1, _0224B80C ; =0x02259818 - ldr r2, _0224B810 ; =0x022596B4 - ldr r3, _0224B828 ; =0x00000103 - bl __msl_assertion_failed -_0224B7D8: - ldrsb r0, [r4] - cmp r0, #0 - bne _0224B7F8 - ldr r0, _0224B82C ; =0x022598A8 - ldr r1, _0224B80C ; =0x02259818 - ldr r2, _0224B810 ; =0x022596B4 - ldr r3, _0224B828 ; =0x00000103 - bl __msl_assertion_failed -_0224B7F8: - mov r0, r5 - mov r1, r4 - bl strcasecmp - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0224B808: .word Unk_ov66_02259858 -_0224B80C: .word Unk_ov66_02259818 -_0224B810: .word Unk_ov66_022596B4 -_0224B814: .word Unk_ov66_02259868 -_0224B818: .word Unk_ov66_02259878 -_0224B81C: .word 0x00000102 -_0224B820: .word Unk_ov66_02259898 -_0224B824: .word Unk_ov66_02259888 -_0224B828: .word 0x00000103 -_0224B82C: .word Unk_ov66_022598A8 - arm_func_end ciUserTableCompareFn - - arm_func_start ciUserTableElementFreeFn -ciUserTableElementFreeFn: ; 0x0224B830 - stmfd sp!, {r3, lr} - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0224B854 ; =0x02259838 - ldr r1, _0224B858 ; =0x02259818 - ldr r2, _0224B85C ; =0x022597D4 - ldr r3, _0224B860 ; =0x0000010A - bl __msl_assertion_failed - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0224B854: .word Unk_ov66_02259838 -_0224B858: .word Unk_ov66_02259818 -_0224B85C: .word Unk_ov66_022597D4 -_0224B860: .word 0x0000010A - arm_func_end ciUserTableElementFreeFn - - arm_func_start ciInitChannels -ciInitChannels: ; 0x0224B864 - stmfd sp!, {r4, lr} - sub sp, sp, #8 - ldr r1, _0224B8E0 ; =ciChannelTableCompareFn - ldr ip, _0224B8E4 ; =ciChannelTableElementFreeFn - str r1, [sp] - mov r4, r0 - ldr r3, _0224B8E8 ; =ciChannelTableHashFn - mov r0, #0x1e4 - mov r1, #7 - mov r2, #2 - str ip, [sp, #4] - bl TableNew2 - cmp r0, #0 - str r0, [r4, #0x80c] - addeq sp, sp, #8 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - mov r1, #0 - mov r2, r1 - mov r0, #0x1e4 - bl ArrayNew - cmp r0, #0 - str r0, [r4, #0x810] - addne sp, sp, #8 - movne r0, #1 - ldmneia sp!, {r4, pc} - ldr r0, [r4, #0x80c] - bl TableFree - mov r0, #0 - add sp, sp, #8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0224B8E0: .word ciChannelTableCompareFn -_0224B8E4: .word ciChannelTableElementFreeFn -_0224B8E8: .word ciChannelTableHashFn - arm_func_end ciInitChannels - - arm_func_start ciCleanupChannels -ciCleanupChannels: ; 0x0224B8EC - stmfd sp!, {r4, lr} - movs r4, r0 - bne _0224B90C - ldr r0, _0224B930 ; =0x022598B8 - ldr r1, _0224B934 ; =0x02259818 - ldr r2, _0224B938 ; =0x02259600 - ldr r3, _0224B93C ; =0x00000127 - bl __msl_assertion_failed -_0224B90C: - ldr r0, [r4, #0x80c] - cmp r0, #0 - beq _0224B91C - bl TableFree -_0224B91C: - ldr r0, [r4, #0x810] - cmp r0, #0 - ldmeqia sp!, {r4, pc} - bl ArrayFree - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0224B930: .word Unk_ov66_022598B8 -_0224B934: .word Unk_ov66_02259818 -_0224B938: .word Unk_ov66_02259600 -_0224B93C: .word 0x00000127 - arm_func_end ciCleanupChannels - - arm_func_start ciChannelEntering -ciChannelEntering: ; 0x0224B940 - stmfd sp!, {r4, r5, lr} - sub sp, sp, #0x1e4 - movs r5, r0 - mov r4, r1 - bne _0224B968 - ldr r0, _0224B9C0 ; =0x022598B8 - ldr r1, _0224B9C4 ; =0x02259818 - ldr r2, _0224B9C8 ; =0x0225963C - mov r3, #0x134 - bl __msl_assertion_failed -_0224B968: - mov r0, #0 - add lr, sp, #0 - mov r1, r0 - mov r2, r0 - mov r3, r0 - mov ip, #0xf -_0224B980: - stmia lr!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - subs ip, ip, #1 - bne _0224B980 - ldr r2, _0224B9CC ; =0x00000101 - str r0, [lr] - add r0, sp, #0 - mov r1, r4 - bl strncpy - mov r0, #0 - strb r0, [sp, #0x100] - ldr r0, [r5, #0x810] - add r1, sp, #0 - bl ArrayAppend - add sp, sp, #0x1e4 - ldmia sp!, {r4, r5, pc} - ; .align 2, 0 -_0224B9C0: .word Unk_ov66_022598B8 -_0224B9C4: .word Unk_ov66_02259818 -_0224B9C8: .word Unk_ov66_0225963C -_0224B9CC: .word 0x00000101 - arm_func_end ciChannelEntering - - arm_func_start ciEnteringChannelComparator -ciEnteringChannelComparator: ; 0x0224B9D0 - ldr ip, _0224B9D8 ; =strcasecmp - bx ip - ; .align 2, 0 -_0224B9D8: .word strcasecmp - arm_func_end ciEnteringChannelComparator - - arm_func_start ciIsEnteringChannel -ciIsEnteringChannel: ; 0x0224B9DC - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - movs sl, r0 - mov sb, r1 - bne _0224BA00 - ldr r0, _0224BA78 ; =0x022598B8 - ldr r1, _0224BA7C ; =0x02259818 - ldr r2, _0224BA80 ; =0x022596A0 - ldr r3, _0224BA84 ; =0x0000014D - bl __msl_assertion_failed -_0224BA00: - ldr r0, [sl, #0x810] - bl ArrayLength - mov r7, r0 - cmp r7, #0 - mov r6, #0 - ble _0224BA70 - ldr r5, _0224BA88 ; =0x022598C8 - ldr r4, _0224BA7C ; =0x02259818 - ldr fp, _0224BA80 ; =0x022596A0 -_0224BA24: - ldr r0, [sl, #0x810] - mov r1, r6 - bl ArrayNth - movs r8, r0 - bne _0224BA4C - ldr r3, _0224BA8C ; =0x00000153 - mov r0, r5 - mov r1, r4 - mov r2, fp - bl __msl_assertion_failed -_0224BA4C: - mov r0, r8 - mov r1, sb - bl strcasecmp - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r6, r6, #1 - cmp r6, r7 - blt _0224BA24 -_0224BA70: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0224BA78: .word Unk_ov66_022598B8 -_0224BA7C: .word Unk_ov66_02259818 -_0224BA80: .word Unk_ov66_022596A0 -_0224BA84: .word 0x0000014D -_0224BA88: .word Unk_ov66_022598C8 -_0224BA8C: .word 0x00000153 - arm_func_end ciIsEnteringChannel - - arm_func_start ciChannelEntered -ciChannelEntered: ; 0x0224BA90 - stmfd sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x1ec - movs r7, r0 - mov r6, r1 - mov r5, r2 - bne _0224BABC - ldr r0, _0224BC44 ; =0x022598B8 - ldr r1, _0224BC48 ; =0x02259818 - ldr r2, _0224BC4C ; =0x0225959C - mov r3, #0x160 - bl __msl_assertion_failed -_0224BABC: - cmp r6, #0 - bne _0224BAD8 - ldr r0, _0224BC50 ; =0x022598D4 - ldr r1, _0224BC48 ; =0x02259818 - ldr r2, _0224BC4C ; =0x0225959C - ldr r3, _0224BC54 ; =0x00000162 - bl __msl_assertion_failed -_0224BAD8: - ldrsb r0, [r6] - cmp r0, #0 - bne _0224BAF8 - ldr r0, _0224BC58 ; =0x022598E4 - ldr r1, _0224BC48 ; =0x02259818 - ldr r2, _0224BC4C ; =0x0225959C - ldr r3, _0224BC54 ; =0x00000162 - bl __msl_assertion_failed -_0224BAF8: - mov r0, r6 - bl strlen - ldr r3, _0224BC5C ; =0x00000101 - cmp r0, r3 - blo _0224BB20 - ldr r0, _0224BC60 ; =0x022598F8 - ldr r1, _0224BC48 ; =0x02259818 - ldr r2, _0224BC4C ; =0x0225959C - add r3, r3, #0x61 - bl __msl_assertion_failed -_0224BB20: - cmp r5, #0 - bne _0224BB3C - ldr r0, _0224BC64 ; =0x02259918 - ldr r1, _0224BC48 ; =0x02259818 - ldr r2, _0224BC4C ; =0x0225959C - ldr r3, _0224BC68 ; =0x00000163 - bl __msl_assertion_failed -_0224BB3C: - mov r0, #2 - bl DWCi_GsMalloc - movs r4, r0 - addeq sp, sp, #0x1ec - ldmeqia sp!, {r4, r5, r6, r7, pc} - ldr r1, _0224BC6C ; =0x0225992C - mov r0, #0 - ldrb ip, [r1] - add lr, sp, #8 - mov r1, r0 - strb ip, [r4] - mov r2, r0 - mov r3, r0 - mov ip, #0xf -_0224BB74: - stmia lr!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - subs ip, ip, #1 - bne _0224BB74 - str r0, [lr] - add ip, sp, #0x10c - ldmia r5!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - ldmia r5!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - ldmia r5, {r0, r1, r2, r3} - stmia ip, {r0, r1, r2, r3} - ldr r2, _0224BC5C ; =0x00000101 - mov r1, r6 - add r0, sp, #8 - bl strncpy - mov r0, #0 - strb r0, [sp, #0x108] - ldr r1, _0224BC70 ; =ciUserTableCompareFn - ldr r0, _0224BC74 ; =ciUserTableElementFreeFn - str r1, [sp] - str r0, [sp, #4] - ldr r3, _0224BC78 ; =ciUserTableHashFn - mov r0, #0xe0 - mov r1, #0x3d - mov r2, #2 - bl TableNew2 - str r0, [sp, #0x13c] - cmp r0, #0 - addeq sp, sp, #0x1ec - ldmeqia sp!, {r4, r5, r6, r7, pc} - mov r3, #0 - str r3, [sp, #0x160] - str r4, [sp, #0x164] - str r3, [sp, #0x168] - strb r3, [sp, #0x16c] - str r3, [sp] - ldr r0, [r7, #0x810] - ldr r2, _0224BC7C ; =ciEnteringChannelComparator - add r1, sp, #8 - bl ArraySearch - mov r1, r0 - mvn r0, #0 - cmp r1, r0 - beq _0224BC30 - ldr r0, [r7, #0x810] - bl ArrayRemoveAt -_0224BC30: - ldr r0, [r7, #0x80c] - add r1, sp, #8 - bl TableEnter - add sp, sp, #0x1ec - ldmia sp!, {r4, r5, r6, r7, pc} - ; .align 2, 0 -_0224BC44: .word Unk_ov66_022598B8 -_0224BC48: .word Unk_ov66_02259818 -_0224BC4C: .word Unk_ov66_0225959C -_0224BC50: .word Unk_ov66_022598D4 -_0224BC54: .word 0x00000162 -_0224BC58: .word Unk_ov66_022598E4 -_0224BC5C: .word 0x00000101 -_0224BC60: .word Unk_ov66_022598F8 -_0224BC64: .word Unk_ov66_02259918 -_0224BC68: .word 0x00000163 -_0224BC6C: .word Unk_ov66_0225992C -_0224BC70: .word ciUserTableCompareFn -_0224BC74: .word ciUserTableElementFreeFn -_0224BC78: .word ciUserTableHashFn -_0224BC7C: .word ciEnteringChannelComparator - arm_func_end ciChannelEntered - - arm_func_start ciChannelLeft -ciChannelLeft: ; 0x0224BC80 - stmfd sp!, {r3, r4, r5, lr} - sub sp, sp, #0x1e8 - movs r5, r0 - mov r4, r1 - bne _0224BCA8 - ldr r0, _0224BD6C ; =0x022598B8 - ldr r1, _0224BD70 ; =0x02259818 - ldr r2, _0224BD74 ; =0x02259578 - ldr r3, _0224BD78 ; =0x00000189 - bl __msl_assertion_failed -_0224BCA8: - cmp r4, #0 - bne _0224BCC4 - ldr r0, _0224BD7C ; =0x022598D4 - ldr r1, _0224BD70 ; =0x02259818 - ldr r2, _0224BD74 ; =0x02259578 - ldr r3, _0224BD80 ; =0x0000018B - bl __msl_assertion_failed -_0224BCC4: - ldrsb r0, [r4] - cmp r0, #0 - bne _0224BCE4 - ldr r0, _0224BD84 ; =0x022598E4 - ldr r1, _0224BD70 ; =0x02259818 - ldr r2, _0224BD74 ; =0x02259578 - ldr r3, _0224BD80 ; =0x0000018B - bl __msl_assertion_failed -_0224BCE4: - mov r0, r4 - bl strlen - ldr r3, _0224BD88 ; =0x00000101 - cmp r0, r3 - blo _0224BD0C - ldr r0, _0224BD8C ; =0x022598F8 - ldr r1, _0224BD70 ; =0x02259818 - ldr r2, _0224BD74 ; =0x02259578 - add r3, r3, #0x8a - bl __msl_assertion_failed -_0224BD0C: - ldr r2, _0224BD88 ; =0x00000101 - add r0, sp, #4 - mov r1, r4 - bl strncpy - mov r3, #0 - strb r3, [sp, #0x104] - str r3, [sp] - ldr r0, [r5, #0x810] - ldr r2, _0224BD90 ; =ciEnteringChannelComparator - add r1, sp, #4 - bl ArraySearch - mov r1, r0 - mvn r0, #0 - cmp r1, r0 - beq _0224BD58 - ldr r0, [r5, #0x810] - bl ArrayRemoveAt - add sp, sp, #0x1e8 - ldmia sp!, {r3, r4, r5, pc} -_0224BD58: - ldr r0, [r5, #0x80c] - add r1, sp, #4 - bl TableRemove - add sp, sp, #0x1e8 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0224BD6C: .word Unk_ov66_022598B8 -_0224BD70: .word Unk_ov66_02259818 -_0224BD74: .word Unk_ov66_02259578 -_0224BD78: .word 0x00000189 -_0224BD7C: .word Unk_ov66_022598D4 -_0224BD80: .word 0x0000018B -_0224BD84: .word Unk_ov66_022598E4 -_0224BD88: .word 0x00000101 -_0224BD8C: .word Unk_ov66_022598F8 -_0224BD90: .word ciEnteringChannelComparator - arm_func_end ciChannelLeft - - arm_func_start ciGetChannelCallbacks -ciGetChannelCallbacks: ; 0x0224BD94 - stmfd sp!, {r3, r4, r5, lr} - movs r5, r0 - mov r4, r1 - bne _0224BDB8 - ldr r0, _0224BE38 ; =0x022598B8 - ldr r1, _0224BE3C ; =0x02259818 - ldr r2, _0224BE40 ; =0x02259744 - ldr r3, _0224BE44 ; =0x000001A9 - bl __msl_assertion_failed -_0224BDB8: - cmp r4, #0 - bne _0224BDD4 - ldr r0, _0224BE48 ; =0x022598D4 - ldr r1, _0224BE3C ; =0x02259818 - ldr r2, _0224BE40 ; =0x02259744 - ldr r3, _0224BE4C ; =0x000001AB - bl __msl_assertion_failed -_0224BDD4: - ldrsb r0, [r4] - cmp r0, #0 - bne _0224BDF4 - ldr r0, _0224BE50 ; =0x022598E4 - ldr r1, _0224BE3C ; =0x02259818 - ldr r2, _0224BE40 ; =0x02259744 - ldr r3, _0224BE4C ; =0x000001AB - bl __msl_assertion_failed -_0224BDF4: - mov r0, r4 - bl strlen - ldr r3, _0224BE54 ; =0x00000101 - cmp r0, r3 - blo _0224BE1C - ldr r0, _0224BE58 ; =0x022598F8 - ldr r1, _0224BE3C ; =0x02259818 - ldr r2, _0224BE40 ; =0x02259744 - add r3, r3, #0xaa - bl __msl_assertion_failed -_0224BE1C: - mov r0, r5 - mov r1, r4 - bl ciGetChannel - cmp r0, #0 - moveq r0, #0 - addne r0, r0, #0x104 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0224BE38: .word Unk_ov66_022598B8 -_0224BE3C: .word Unk_ov66_02259818 -_0224BE40: .word Unk_ov66_02259744 -_0224BE44: .word 0x000001A9 -_0224BE48: .word Unk_ov66_022598D4 -_0224BE4C: .word 0x000001AB -_0224BE50: .word Unk_ov66_022598E4 -_0224BE54: .word 0x00000101 -_0224BE58: .word Unk_ov66_022598F8 - arm_func_end ciGetChannelCallbacks - - arm_func_start ciChannelListUsersMap -ciChannelListUsersMap: ; 0x0224BE5C - stmfd sp!, {r3, r4, r5, lr} - movs r5, r0 - mov r4, r1 - bne _0224BE80 - ldr r0, _0224BFB4 ; =0x02259838 - ldr r1, _0224BFB8 ; =0x02259818 - ldr r2, _0224BFBC ; =0x0225975C - mov r3, #0x1bc - bl __msl_assertion_failed -_0224BE80: - cmp r4, #0 - bne _0224BE9C - ldr r0, _0224BFC0 ; =0x02259930 - ldr r1, _0224BFB8 ; =0x02259818 - ldr r2, _0224BFBC ; =0x0225975C - ldr r3, _0224BFC4 ; =0x000001BD - bl __msl_assertion_failed -_0224BE9C: - cmp r5, #0 - bne _0224BEB8 - ldr r0, _0224BFC8 ; =0x02259944 - ldr r1, _0224BFB8 ; =0x02259818 - ldr r2, _0224BFBC ; =0x0225975C - ldr r3, _0224BFCC ; =0x000001C2 - bl __msl_assertion_failed -_0224BEB8: - ldrsb r0, [r5] - cmp r0, #0 - bne _0224BED8 - ldr r0, _0224BFD0 ; =0x02259958 - ldr r1, _0224BFB8 ; =0x02259818 - ldr r2, _0224BFBC ; =0x0225975C - ldr r3, _0224BFCC ; =0x000001C2 - bl __msl_assertion_failed -_0224BED8: - mov r0, r5 - bl strlen - cmp r0, #0x80 - blo _0224BEFC - ldr r0, _0224BFD4 ; =0x02259970 - ldr r1, _0224BFB8 ; =0x02259818 - ldr r2, _0224BFBC ; =0x0225975C - ldr r3, _0224BFCC ; =0x000001C2 - bl __msl_assertion_failed -_0224BEFC: - ldr r0, [r4, #4] - cmp r0, #0 - bge _0224BF1C - ldr r0, _0224BFD8 ; =0x02259990 - ldr r1, _0224BFB8 ; =0x02259818 - ldr r2, _0224BFBC ; =0x0225975C - ldr r3, _0224BFDC ; =0x000001C7 - bl __msl_assertion_failed -_0224BF1C: - ldr r1, [r4, #4] - ldr r0, [r4, #8] - add r1, r1, #1 - mov r1, r1, lsl #2 - bl DWCi_GsRealloc - cmp r0, #0 - bne _0224BF50 - ldr r0, _0224BFE0 ; =0x022599A4 - ldr r1, _0224BFB8 ; =0x02259818 - ldr r2, _0224BFBC ; =0x0225975C - ldr r3, _0224BFE4 ; =0x000001D9 - bl __msl_assertion_failed - ldmia sp!, {r3, r4, r5, pc} -_0224BF50: - str r0, [r4, #8] - ldr r1, [r4, #4] - ldr r0, [r4, #0xc] - add r1, r1, #1 - mov r1, r1, lsl #2 - bl DWCi_GsRealloc - cmp r0, #0 - bne _0224BF88 - ldr r0, _0224BFE0 ; =0x022599A4 - ldr r1, _0224BFB8 ; =0x02259818 - ldr r2, _0224BFBC ; =0x0225975C - mov r3, #0x1e0 - bl __msl_assertion_failed - ldmia sp!, {r3, r4, r5, pc} -_0224BF88: - str r0, [r4, #0xc] - ldmib r4, {r0, r1} - str r5, [r1, r0, lsl #2] - ldr r2, [r5, #0xdc] - ldr r1, [r4, #0xc] - ldr r0, [r4, #4] - str r2, [r1, r0, lsl #2] - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0224BFB4: .word Unk_ov66_02259838 -_0224BFB8: .word Unk_ov66_02259818 -_0224BFBC: .word Unk_ov66_0225975C -_0224BFC0: .word Unk_ov66_02259930 -_0224BFC4: .word 0x000001BD -_0224BFC8: .word Unk_ov66_02259944 -_0224BFCC: .word 0x000001C2 -_0224BFD0: .word Unk_ov66_02259958 -_0224BFD4: .word Unk_ov66_02259970 -_0224BFD8: .word Unk_ov66_02259990 -_0224BFDC: .word 0x000001C7 -_0224BFE0: .word Unk_ov66_022599A4 -_0224BFE4: .word 0x000001D9 - arm_func_end ciChannelListUsersMap - - arm_func_start ciChannelListUsers -ciChannelListUsers: ; 0x0224BFE8 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x18 - movs r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bne _0224C018 - ldr r0, _0224C108 ; =0x022598B8 - ldr r1, _0224C10C ; =0x02259818 - ldr r2, _0224C110 ; =0x02259678 - mov r3, #0x1f0 - bl __msl_assertion_failed -_0224C018: - cmp r6, #0 - bne _0224C034 - ldr r0, _0224C114 ; =0x022598D4 - ldr r1, _0224C10C ; =0x02259818 - ldr r2, _0224C110 ; =0x02259678 - ldr r3, _0224C118 ; =0x000001F2 - bl __msl_assertion_failed -_0224C034: - ldrsb r0, [r6] - cmp r0, #0 - bne _0224C054 - ldr r0, _0224C11C ; =0x022598E4 - ldr r1, _0224C10C ; =0x02259818 - ldr r2, _0224C110 ; =0x02259678 - ldr r3, _0224C118 ; =0x000001F2 - bl __msl_assertion_failed -_0224C054: - mov r0, r6 - bl strlen - ldr r3, _0224C120 ; =0x00000101 - cmp r0, r3 - blo _0224C07C - ldr r0, _0224C124 ; =0x022598F8 - ldr r1, _0224C10C ; =0x02259818 - ldr r2, _0224C110 ; =0x02259678 - add r3, r3, #0xf1 - bl __msl_assertion_failed -_0224C07C: - cmp r5, #0 - bne _0224C098 - ldr r0, _0224C128 ; =0x022599A8 - ldr r1, _0224C10C ; =0x02259818 - ldr r2, _0224C110 ; =0x02259678 - ldr r3, _0224C12C ; =0x000001F3 - bl __msl_assertion_failed -_0224C098: - mov r0, r7 - mov r1, r6 - bl ciGetChannel - cmp r0, #0 - addeq sp, sp, #0x18 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r1, #0 - str r7, [sp, #8] - str r1, [sp, #0xc] - str r1, [sp, #0x10] - str r1, [sp, #0x14] - ldr r0, [r0, #0x134] - ldr r1, _0224C130 ; =ciChannelListUsersMap - add r2, sp, #8 - bl TableMap - ldr r1, [sp, #0x14] - mov r0, r7 - stmia sp, {r1, r4} - ldr r2, [sp, #0xc] - ldr r3, [sp, #0x10] - mov r1, r6 - blx r5 - ldr r0, [sp, #0x10] - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_0224C108: .word Unk_ov66_022598B8 -_0224C10C: .word Unk_ov66_02259818 -_0224C110: .word Unk_ov66_02259678 -_0224C114: .word Unk_ov66_022598D4 -_0224C118: .word 0x000001F2 -_0224C11C: .word Unk_ov66_022598E4 -_0224C120: .word 0x00000101 -_0224C124: .word Unk_ov66_022598F8 -_0224C128: .word Unk_ov66_022599A8 -_0224C12C: .word 0x000001F3 -_0224C130: .word ciChannelListUsersMap - arm_func_end ciChannelListUsers - - arm_func_start ciInChannel -ciInChannel: ; 0x0224C134 - stmfd sp!, {r3, r4, r5, lr} - movs r5, r0 - mov r4, r1 - bne _0224C158 - ldr r0, _0224C174 ; =0x022598B8 - ldr r1, _0224C178 ; =0x02259818 - ldr r2, _0224C17C ; =0x0225955C - ldr r3, _0224C180 ; =0x0000020F - bl __msl_assertion_failed -_0224C158: - mov r0, r5 - mov r1, r4 - bl ciGetChannel - cmp r0, #0 - moveq r0, #0 - movne r0, #1 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0224C174: .word Unk_ov66_022598B8 -_0224C178: .word Unk_ov66_02259818 -_0224C17C: .word Unk_ov66_0225955C -_0224C180: .word 0x0000020F - arm_func_end ciInChannel - - arm_func_start ciGetChannelMode -ciGetChannelMode: ; 0x0224C184 - stmfd sp!, {r4, r5, r6, lr} - movs r6, r0 - mov r5, r1 - mov r4, r2 - bne _0224C1AC - ldr r0, _0224C250 ; =0x022598B8 - ldr r1, _0224C254 ; =0x02259818 - ldr r2, _0224C258 ; =0x022595B0 - ldr r3, _0224C25C ; =0x0000021A - bl __msl_assertion_failed -_0224C1AC: - cmp r5, #0 - bne _0224C1C8 - ldr r0, _0224C260 ; =0x022598D4 - ldr r1, _0224C254 ; =0x02259818 - ldr r2, _0224C258 ; =0x022595B0 - mov r3, #0x21c - bl __msl_assertion_failed -_0224C1C8: - ldrsb r0, [r5] - cmp r0, #0 - bne _0224C1E8 - ldr r0, _0224C264 ; =0x022598E4 - ldr r1, _0224C254 ; =0x02259818 - ldr r2, _0224C258 ; =0x022595B0 - mov r3, #0x21c - bl __msl_assertion_failed -_0224C1E8: - mov r0, r5 - bl strlen - ldr r1, _0224C268 ; =0x00000101 - cmp r0, r1 - blo _0224C210 - ldr r0, _0224C26C ; =0x022598F8 - ldr r1, _0224C254 ; =0x02259818 - ldr r2, _0224C258 ; =0x022595B0 - mov r3, #0x21c - bl __msl_assertion_failed -_0224C210: - mov r0, r6 - mov r1, r5 - bl ciGetChannel - movs r1, r0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r0, [r1, #0x158] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r4 - add r1, r1, #0x138 - mov r2, #0x20 - bl memcpy - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_0224C250: .word Unk_ov66_022598B8 -_0224C254: .word Unk_ov66_02259818 -_0224C258: .word Unk_ov66_022595B0 -_0224C25C: .word 0x0000021A -_0224C260: .word Unk_ov66_022598D4 -_0224C264: .word Unk_ov66_022598E4 -_0224C268: .word 0x00000101 -_0224C26C: .word Unk_ov66_022598F8 - arm_func_end ciGetChannelMode - - arm_func_start ciSetChannelMode -ciSetChannelMode: ; 0x0224C270 - stmfd sp!, {r4, r5, r6, lr} - movs r6, r0 - mov r5, r1 - mov r4, r2 - bne _0224C298 - ldr r0, _0224C32C ; =0x022598B8 - ldr r1, _0224C330 ; =0x02259818 - ldr r2, _0224C334 ; =0x02259588 - ldr r3, _0224C338 ; =0x00000233 - bl __msl_assertion_failed -_0224C298: - cmp r5, #0 - bne _0224C2B4 - ldr r0, _0224C33C ; =0x022598D4 - ldr r1, _0224C330 ; =0x02259818 - ldr r2, _0224C334 ; =0x02259588 - ldr r3, _0224C340 ; =0x00000235 - bl __msl_assertion_failed -_0224C2B4: - ldrsb r0, [r5] - cmp r0, #0 - bne _0224C2D4 - ldr r0, _0224C344 ; =0x022598E4 - ldr r1, _0224C330 ; =0x02259818 - ldr r2, _0224C334 ; =0x02259588 - ldr r3, _0224C340 ; =0x00000235 - bl __msl_assertion_failed -_0224C2D4: - mov r0, r5 - bl strlen - ldr r3, _0224C348 ; =0x00000101 - cmp r0, r3 - blo _0224C2FC - ldr r0, _0224C34C ; =0x022598F8 - ldr r1, _0224C330 ; =0x02259818 - ldr r2, _0224C334 ; =0x02259588 - add r3, r3, #0x134 - bl __msl_assertion_failed -_0224C2FC: - mov r0, r6 - mov r1, r5 - bl ciGetChannel - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r1, #1 - str r1, [r0, #0x158] - mov r1, r4 - add r0, r0, #0x138 - mov r2, #0x20 - bl memcpy - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_0224C32C: .word Unk_ov66_022598B8 -_0224C330: .word Unk_ov66_02259818 -_0224C334: .word Unk_ov66_02259588 -_0224C338: .word 0x00000233 -_0224C33C: .word Unk_ov66_022598D4 -_0224C340: .word 0x00000235 -_0224C344: .word Unk_ov66_022598E4 -_0224C348: .word 0x00000101 -_0224C34C: .word Unk_ov66_022598F8 - arm_func_end ciSetChannelMode - - arm_func_start ciSetChannelPassword -ciSetChannelPassword: ; 0x0224C350 - stmfd sp!, {r4, r5, r6, lr} - movs r5, r0 - mov r4, r1 - mov r6, r2 - bne _0224C378 - ldr r0, _0224C430 ; =0x022598B8 - ldr r1, _0224C434 ; =0x02259818 - ldr r2, _0224C438 ; =0x022596CC - ldr r3, _0224C43C ; =0x0000024A - bl __msl_assertion_failed -_0224C378: - cmp r4, #0 - bne _0224C394 - ldr r0, _0224C440 ; =0x022598D4 - ldr r1, _0224C434 ; =0x02259818 - ldr r2, _0224C438 ; =0x022596CC - mov r3, #0x24c - bl __msl_assertion_failed -_0224C394: - ldrsb r0, [r4] - cmp r0, #0 - bne _0224C3B4 - ldr r0, _0224C444 ; =0x022598E4 - ldr r1, _0224C434 ; =0x02259818 - ldr r2, _0224C438 ; =0x022596CC - mov r3, #0x24c - bl __msl_assertion_failed -_0224C3B4: - mov r0, r4 - bl strlen - ldr r1, _0224C448 ; =0x00000101 - cmp r0, r1 - blo _0224C3DC - ldr r0, _0224C44C ; =0x022598F8 - ldr r1, _0224C434 ; =0x02259818 - ldr r2, _0224C438 ; =0x022596CC - mov r3, #0x24c - bl __msl_assertion_failed -_0224C3DC: - mov r0, r5 - mov r1, r4 - bl ciGetChannel - movs r5, r0 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r0, [r5, #0x15c] - bl DWCi_GsFree - cmp r6, #0 - ldreq r6, _0224C450 ; =0x0225992C - mov r0, r6 - bl strlen - mov r4, r0 - add r0, r4, #1 - bl DWCi_GsMalloc - str r0, [r5, #0x15c] - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r1, r6 - add r2, r4, #1 - bl memcpy - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_0224C430: .word Unk_ov66_022598B8 -_0224C434: .word Unk_ov66_02259818 -_0224C438: .word Unk_ov66_022596CC -_0224C43C: .word 0x0000024A -_0224C440: .word Unk_ov66_022598D4 -_0224C444: .word Unk_ov66_022598E4 -_0224C448: .word 0x00000101 -_0224C44C: .word Unk_ov66_022598F8 -_0224C450: .word Unk_ov66_0225992C - arm_func_end ciSetChannelPassword - - arm_func_start ciJoinCallbackCalled -ciJoinCallbackCalled: ; 0x0224C454 - stmfd sp!, {r3, r4, r5, lr} - movs r5, r0 - mov r4, r1 - bne _0224C478 - ldr r0, _0224C4F8 ; =0x022598B8 - ldr r1, _0224C4FC ; =0x02259818 - ldr r2, _0224C500 ; =0x022596E4 - mov r3, #0x278 - bl __msl_assertion_failed -_0224C478: - cmp r4, #0 - bne _0224C494 - ldr r0, _0224C504 ; =0x022598D4 - ldr r1, _0224C4FC ; =0x02259818 - ldr r2, _0224C500 ; =0x022596E4 - ldr r3, _0224C508 ; =0x0000027A - bl __msl_assertion_failed -_0224C494: - ldrsb r0, [r4] - cmp r0, #0 - bne _0224C4B4 - ldr r0, _0224C50C ; =0x022598E4 - ldr r1, _0224C4FC ; =0x02259818 - ldr r2, _0224C500 ; =0x022596E4 - ldr r3, _0224C508 ; =0x0000027A - bl __msl_assertion_failed -_0224C4B4: - mov r0, r4 - bl strlen - ldr r1, _0224C510 ; =0x00000101 - cmp r0, r1 - blo _0224C4DC - ldr r0, _0224C514 ; =0x022598F8 - ldr r1, _0224C4FC ; =0x02259818 - ldr r2, _0224C500 ; =0x022596E4 - ldr r3, _0224C508 ; =0x0000027A - bl __msl_assertion_failed -_0224C4DC: - mov r0, r5 - mov r1, r4 - bl ciGetChannel - cmp r0, #0 - movne r1, #1 - strne r1, [r0, #0x160] - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0224C4F8: .word Unk_ov66_022598B8 -_0224C4FC: .word Unk_ov66_02259818 -_0224C500: .word Unk_ov66_022596E4 -_0224C504: .word Unk_ov66_022598D4 -_0224C508: .word 0x0000027A -_0224C50C: .word Unk_ov66_022598E4 -_0224C510: .word 0x00000101 -_0224C514: .word Unk_ov66_022598F8 - arm_func_end ciJoinCallbackCalled - - arm_func_start ciWasJoinCallbackCalled -ciWasJoinCallbackCalled: ; 0x0224C518 - stmfd sp!, {r3, r4, r5, lr} - movs r5, r0 - mov r4, r1 - bne _0224C53C - ldr r0, _0224C5BC ; =0x022598B8 - ldr r1, _0224C5C0 ; =0x02259818 - ldr r2, _0224C5C4 ; =0x022597A4 - ldr r3, _0224C5C8 ; =0x0000028A - bl __msl_assertion_failed -_0224C53C: - cmp r4, #0 - bne _0224C558 - ldr r0, _0224C5CC ; =0x022598D4 - ldr r1, _0224C5C0 ; =0x02259818 - ldr r2, _0224C5C4 ; =0x022597A4 - mov r3, #0x28c - bl __msl_assertion_failed -_0224C558: - ldrsb r0, [r4] - cmp r0, #0 - bne _0224C578 - ldr r0, _0224C5D0 ; =0x022598E4 - ldr r1, _0224C5C0 ; =0x02259818 - ldr r2, _0224C5C4 ; =0x022597A4 - mov r3, #0x28c - bl __msl_assertion_failed -_0224C578: - mov r0, r4 - bl strlen - ldr r1, _0224C5D4 ; =0x00000101 - cmp r0, r1 - blo _0224C5A0 - ldr r0, _0224C5D8 ; =0x022598F8 - ldr r1, _0224C5C0 ; =0x02259818 - ldr r2, _0224C5C4 ; =0x022597A4 - mov r3, #0x28c - bl __msl_assertion_failed -_0224C5A0: - mov r0, r5 - mov r1, r4 - bl ciGetChannel - cmp r0, #0 - moveq r0, #0 - ldrne r0, [r0, #0x160] - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0224C5BC: .word Unk_ov66_022598B8 -_0224C5C0: .word Unk_ov66_02259818 -_0224C5C4: .word Unk_ov66_022597A4 -_0224C5C8: .word 0x0000028A -_0224C5CC: .word Unk_ov66_022598D4 -_0224C5D0: .word Unk_ov66_022598E4 -_0224C5D4: .word 0x00000101 -_0224C5D8: .word Unk_ov66_022598F8 - arm_func_end ciWasJoinCallbackCalled - - arm_func_start ciSetChannelTopic -ciSetChannelTopic: ; 0x0224C5DC - stmfd sp!, {r4, r5, r6, lr} - movs r6, r0 - mov r4, r1 - mov r5, r2 - bne _0224C604 - ldr r0, _0224C698 ; =0x022598B8 - ldr r1, _0224C69C ; =0x02259818 - ldr r2, _0224C6A0 ; =0x02259628 - ldr r3, _0224C6A4 ; =0x0000029A - bl __msl_assertion_failed -_0224C604: - cmp r4, #0 - bne _0224C620 - ldr r0, _0224C6A8 ; =0x022598D4 - ldr r1, _0224C69C ; =0x02259818 - ldr r2, _0224C6A0 ; =0x02259628 - mov r3, #0x29c - bl __msl_assertion_failed -_0224C620: - ldrsb r0, [r4] - cmp r0, #0 - bne _0224C640 - ldr r0, _0224C6AC ; =0x022598E4 - ldr r1, _0224C69C ; =0x02259818 - ldr r2, _0224C6A0 ; =0x02259628 - mov r3, #0x29c - bl __msl_assertion_failed -_0224C640: - mov r0, r4 - bl strlen - ldr r1, _0224C6B0 ; =0x00000101 - cmp r0, r1 - blo _0224C668 - ldr r0, _0224C6B4 ; =0x022598F8 - ldr r1, _0224C69C ; =0x02259818 - ldr r2, _0224C6A0 ; =0x02259628 - mov r3, #0x29c - bl __msl_assertion_failed -_0224C668: - mov r0, r6 - mov r1, r4 - bl ciGetChannel - movs r4, r0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r1, r5 - add r0, r4, #0x164 - mov r2, #0x80 - bl strncpy - mov r0, #0 - strb r0, [r4, #0x1e3] - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_0224C698: .word Unk_ov66_022598B8 -_0224C69C: .word Unk_ov66_02259818 -_0224C6A0: .word Unk_ov66_02259628 -_0224C6A4: .word 0x0000029A -_0224C6A8: .word Unk_ov66_022598D4 -_0224C6AC: .word Unk_ov66_022598E4 -_0224C6B0: .word 0x00000101 -_0224C6B4: .word Unk_ov66_022598F8 - arm_func_end ciSetChannelTopic - - arm_func_start ciGetChannelNumUsers -ciGetChannelNumUsers: ; 0x0224C6B8 - stmfd sp!, {r3, r4, r5, lr} - movs r5, r0 - mov r4, r1 - bne _0224C6DC - ldr r0, _0224C764 ; =0x022598B8 - ldr r1, _0224C768 ; =0x02259818 - ldr r2, _0224C76C ; =0x02259714 - mov r3, #0x2bc - bl __msl_assertion_failed -_0224C6DC: - cmp r4, #0 - bne _0224C6F8 - ldr r0, _0224C770 ; =0x022598D4 - ldr r1, _0224C768 ; =0x02259818 - ldr r2, _0224C76C ; =0x02259714 - ldr r3, _0224C774 ; =0x000002BE - bl __msl_assertion_failed -_0224C6F8: - ldrsb r0, [r4] - cmp r0, #0 - bne _0224C718 - ldr r0, _0224C778 ; =0x022598E4 - ldr r1, _0224C768 ; =0x02259818 - ldr r2, _0224C76C ; =0x02259714 - ldr r3, _0224C774 ; =0x000002BE - bl __msl_assertion_failed -_0224C718: - mov r0, r4 - bl strlen - ldr r1, _0224C77C ; =0x00000101 - cmp r0, r1 - blo _0224C740 - ldr r0, _0224C780 ; =0x022598F8 - ldr r1, _0224C768 ; =0x02259818 - ldr r2, _0224C76C ; =0x02259714 - ldr r3, _0224C774 ; =0x000002BE - bl __msl_assertion_failed -_0224C740: - mov r0, r5 - mov r1, r4 - bl ciGetChannel - cmp r0, #0 - mvneq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, [r0, #0x134] - bl TableCount - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0224C764: .word Unk_ov66_022598B8 -_0224C768: .word Unk_ov66_02259818 -_0224C76C: .word Unk_ov66_02259714 -_0224C770: .word Unk_ov66_022598D4 -_0224C774: .word 0x000002BE -_0224C778: .word Unk_ov66_022598E4 -_0224C77C: .word 0x00000101 -_0224C780: .word Unk_ov66_022598F8 - arm_func_end ciGetChannelNumUsers - - arm_func_start ciUserEnteredChannel -ciUserEnteredChannel: ; 0x0224C784 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0xe0 - movs r7, r0 - mov r6, r1 - mov r4, r2 - mov r5, r3 - bne _0224C7B4 - ldr r0, _0224C960 ; =0x022598B8 - ldr r1, _0224C964 ; =0x02259818 - ldr r2, _0224C968 ; =0x0225972C - mov r3, #0x2d0 - bl __msl_assertion_failed -_0224C7B4: - cmp r6, #0 - bne _0224C7D0 - ldr r0, _0224C96C ; =0x022599BC - ldr r1, _0224C964 ; =0x02259818 - ldr r2, _0224C968 ; =0x0225972C - ldr r3, _0224C970 ; =0x000002D2 - bl __msl_assertion_failed -_0224C7D0: - ldrsb r0, [r6] - cmp r0, #0 - bne _0224C7F0 - ldr r0, _0224C974 ; =0x022599CC - ldr r1, _0224C964 ; =0x02259818 - ldr r2, _0224C968 ; =0x0225972C - ldr r3, _0224C970 ; =0x000002D2 - bl __msl_assertion_failed -_0224C7F0: - mov r0, r6 - bl strlen - cmp r0, #0x80 - blo _0224C814 - ldr r0, _0224C978 ; =0x022599DC - ldr r1, _0224C964 ; =0x02259818 - ldr r2, _0224C968 ; =0x0225972C - ldr r3, _0224C970 ; =0x000002D2 - bl __msl_assertion_failed -_0224C814: - cmp r4, #0 - bne _0224C830 - ldr r0, _0224C97C ; =0x022598D4 - ldr r1, _0224C964 ; =0x02259818 - ldr r2, _0224C968 ; =0x0225972C - ldr r3, _0224C980 ; =0x000002D3 - bl __msl_assertion_failed -_0224C830: - ldrsb r0, [r4] - cmp r0, #0 - bne _0224C850 - ldr r0, _0224C984 ; =0x022598E4 - ldr r1, _0224C964 ; =0x02259818 - ldr r2, _0224C968 ; =0x0225972C - ldr r3, _0224C980 ; =0x000002D3 - bl __msl_assertion_failed -_0224C850: - cmp r5, #0 - blt _0224C860 - cmp r5, #3 - ble _0224C874 -_0224C860: - ldr r0, _0224C988 ; =0x022599F4 - ldr r1, _0224C964 ; =0x02259818 - ldr r2, _0224C968 ; =0x0225972C - mov r3, #0x2d4 - bl __msl_assertion_failed -_0224C874: - mov r0, r7 - mov r1, r4 - bl ciGetChannel - movs r4, r0 - addeq sp, sp, #0xe0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, #0 - add lr, sp, #0 - mov r1, r0 - mov r2, r0 - mov r3, r0 - mov ip, #7 -_0224C8A4: - stmia lr!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - subs ip, ip, #1 - bne _0224C8A4 - add r0, sp, #0 - mov r1, r6 - mov r2, #0x80 - bl strncpy - ldr r1, [sp, #0xf8] - mov r0, #0 - strb r0, [sp, #0x7f] - cmp r1, #0 - ldrne r0, [sp, #0xfc] - cmpne r0, #0 - moveq r0, #0 - streq r0, [sp, #0xd8] - beq _0224C91C - add r0, sp, #0x80 - mov r2, #0x18 - bl strncpy - mov r3, #0 - ldr r1, [sp, #0xfc] - add r0, sp, #0x98 - mov r2, #0x40 - strb r3, [sp, #0x97] - bl strncpy - mov r1, #0 - mov r0, #1 - strb r1, [sp, #0xd7] - str r0, [sp, #0xd8] -_0224C91C: - str r5, [sp, #0xdc] - ldr r0, [r4, #0x134] - add r1, sp, #0 - bl TableEnter - ldr r0, [r4, #0x134] - add r1, sp, #0 - bl TableLookup - cmp r0, #0 - addne sp, sp, #0xe0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, _0224C98C ; =0x02259A10 - ldr r1, _0224C964 ; =0x02259818 - ldr r2, _0224C968 ; =0x0225972C - ldr r3, _0224C990 ; =0x000002F7 - bl __msl_assertion_failed - add sp, sp, #0xe0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_0224C960: .word Unk_ov66_022598B8 -_0224C964: .word Unk_ov66_02259818 -_0224C968: .word Unk_ov66_0225972C -_0224C96C: .word Unk_ov66_022599BC -_0224C970: .word 0x000002D2 -_0224C974: .word Unk_ov66_022599CC -_0224C978: .word Unk_ov66_022599DC -_0224C97C: .word Unk_ov66_022598D4 -_0224C980: .word 0x000002D3 -_0224C984: .word Unk_ov66_022598E4 -_0224C988: .word Unk_ov66_022599F4 -_0224C98C: .word Unk_ov66_02259A10 -_0224C990: .word 0x000002F7 - arm_func_end ciUserEnteredChannel - - arm_func_start ciUserLeftChannel -ciUserLeftChannel: ; 0x0224C994 - stmfd sp!, {r4, r5, r6, lr} - sub sp, sp, #0xe0 - movs r6, r0 - mov r5, r1 - mov r4, r2 - bne _0224C9C0 - ldr r0, _0224CAA0 ; =0x022598B8 - ldr r1, _0224CAA4 ; =0x02259818 - ldr r2, _0224CAA8 ; =0x022595EC - ldr r3, _0224CAAC ; =0x000002FE - bl __msl_assertion_failed -_0224C9C0: - cmp r5, #0 - bne _0224C9DC - ldr r0, _0224CAB0 ; =0x02259A44 - ldr r1, _0224CAA4 ; =0x02259818 - ldr r2, _0224CAA8 ; =0x022595EC - mov r3, #0x300 - bl __msl_assertion_failed -_0224C9DC: - ldrsb r0, [r5] - cmp r0, #0 - bne _0224C9FC - ldr r0, _0224CAB4 ; =0x02259A54 - ldr r1, _0224CAA4 ; =0x02259818 - ldr r2, _0224CAA8 ; =0x022595EC - mov r3, #0x300 - bl __msl_assertion_failed -_0224C9FC: - mov r0, r5 - bl strlen - cmp r0, #0x80 - blo _0224CA20 - ldr r0, _0224CAB8 ; =0x02259A64 - ldr r1, _0224CAA4 ; =0x02259818 - ldr r2, _0224CAA8 ; =0x022595EC - mov r3, #0x300 - bl __msl_assertion_failed -_0224CA20: - cmp r4, #0 - bne _0224CA3C - ldr r0, _0224CABC ; =0x022598D4 - ldr r1, _0224CAA4 ; =0x02259818 - ldr r2, _0224CAA8 ; =0x022595EC - ldr r3, _0224CAC0 ; =0x00000301 - bl __msl_assertion_failed -_0224CA3C: - ldrsb r0, [r4] - cmp r0, #0 - bne _0224CA5C - ldr r0, _0224CAC4 ; =0x022598E4 - ldr r1, _0224CAA4 ; =0x02259818 - ldr r2, _0224CAA8 ; =0x022595EC - ldr r3, _0224CAC0 ; =0x00000301 - bl __msl_assertion_failed -_0224CA5C: - mov r0, r6 - mov r1, r4 - bl ciGetChannel - movs r4, r0 - addeq sp, sp, #0xe0 - ldmeqia sp!, {r4, r5, r6, pc} - add r0, sp, #0 - mov r1, r5 - mov r2, #0x80 - bl strncpy - mov r0, #0 - strb r0, [sp, #0x7f] - ldr r0, [r4, #0x134] - add r1, sp, #0 - bl TableRemove - add sp, sp, #0xe0 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_0224CAA0: .word Unk_ov66_022598B8 -_0224CAA4: .word Unk_ov66_02259818 -_0224CAA8: .word Unk_ov66_022595EC -_0224CAAC: .word 0x000002FE -_0224CAB0: .word Unk_ov66_02259A44 -_0224CAB4: .word Unk_ov66_02259A54 -_0224CAB8: .word Unk_ov66_02259A64 -_0224CABC: .word Unk_ov66_022598D4 -_0224CAC0: .word 0x00000301 -_0224CAC4: .word Unk_ov66_022598E4 - arm_func_end ciUserLeftChannel - - arm_func_start ciUserEnumChannelsMap -ciUserEnumChannelsMap: ; 0x0224CAC8 - stmfd sp!, {r3, r4, r5, lr} - movs r4, r0 - mov r5, r1 - bne _0224CAEC - ldr r0, _0224CBB4 ; =0x02259838 - ldr r1, _0224CBB8 ; =0x02259818 - ldr r2, _0224CBBC ; =0x0225978C - mov r3, #0x318 - bl __msl_assertion_failed -_0224CAEC: - cmp r5, #0 - bne _0224CB08 - ldr r0, _0224CBC0 ; =0x02259930 - ldr r1, _0224CBB8 ; =0x02259818 - ldr r2, _0224CBBC ; =0x0225978C - ldr r3, _0224CBC4 ; =0x00000319 - bl __msl_assertion_failed -_0224CB08: - ldr r0, [r4, #0x134] - cmp r0, #0 - bne _0224CB28 - ldr r0, _0224CBC8 ; =0x02259A7C - ldr r1, _0224CBB8 ; =0x02259818 - ldr r2, _0224CBBC ; =0x0225978C - ldr r3, _0224CBCC ; =0x0000031E - bl __msl_assertion_failed -_0224CB28: - ldr r0, [r5, #4] - cmp r0, #0 - bne _0224CB48 - ldr r0, _0224CBD0 ; =0x02259A94 - ldr r1, _0224CBB8 ; =0x02259818 - ldr r2, _0224CBBC ; =0x0225978C - ldr r3, _0224CBD4 ; =0x00000323 - bl __msl_assertion_failed -_0224CB48: - ldr r0, [r5, #4] - ldrsb r0, [r0] - cmp r0, #0 - bne _0224CB6C - ldr r0, _0224CBD8 ; =0x02259AA8 - ldr r1, _0224CBB8 ; =0x02259818 - ldr r2, _0224CBBC ; =0x0225978C - mov r3, #0x324 - bl __msl_assertion_failed -_0224CB6C: - ldr r0, [r5, #8] - cmp r0, #0 - bne _0224CB8C - ldr r0, _0224CBDC ; =0x02259AC4 - ldr r1, _0224CBB8 ; =0x02259818 - ldr r2, _0224CBBC ; =0x0225978C - ldr r3, _0224CBE0 ; =0x00000325 - bl __msl_assertion_failed -_0224CB8C: - ldr r0, [r4, #0x134] - ldr r1, [r5, #4] - bl TableLookup - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r3, [r5, #0xc] - mov r2, r4 - ldmia r5, {r0, r1, ip} - blx ip - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0224CBB4: .word Unk_ov66_02259838 -_0224CBB8: .word Unk_ov66_02259818 -_0224CBBC: .word Unk_ov66_0225978C -_0224CBC0: .word Unk_ov66_02259930 -_0224CBC4: .word 0x00000319 -_0224CBC8: .word Unk_ov66_02259A7C -_0224CBCC: .word 0x0000031E -_0224CBD0: .word Unk_ov66_02259A94 -_0224CBD4: .word 0x00000323 -_0224CBD8: .word Unk_ov66_02259AA8 -_0224CBDC: .word Unk_ov66_02259AC4 -_0224CBE0: .word 0x00000325 - arm_func_end ciUserEnumChannelsMap - - arm_func_start ciUserEnumChannels -ciUserEnumChannels: ; 0x0224CBE4 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0xf0 - movs r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bne _0224CC14 - ldr r0, _0224CCD4 ; =0x022598B8 - ldr r1, _0224CCD8 ; =0x02259818 - ldr r2, _0224CCDC ; =0x02259650 - ldr r3, _0224CCE0 ; =0x00000336 - bl __msl_assertion_failed -_0224CC14: - cmp r6, #0 - bne _0224CC30 - ldr r0, _0224CCE4 ; =0x02259A44 - ldr r1, _0224CCD8 ; =0x02259818 - ldr r2, _0224CCDC ; =0x02259650 - mov r3, #0x338 - bl __msl_assertion_failed -_0224CC30: - ldrsb r0, [r6] - cmp r0, #0 - bne _0224CC50 - ldr r0, _0224CCE8 ; =0x02259A54 - ldr r1, _0224CCD8 ; =0x02259818 - ldr r2, _0224CCDC ; =0x02259650 - mov r3, #0x338 - bl __msl_assertion_failed -_0224CC50: - mov r0, r6 - bl strlen - cmp r0, #0x80 - blo _0224CC74 - ldr r0, _0224CCEC ; =0x02259A64 - ldr r1, _0224CCD8 ; =0x02259818 - ldr r2, _0224CCDC ; =0x02259650 - mov r3, #0x338 - bl __msl_assertion_failed -_0224CC74: - cmp r5, #0 - bne _0224CC90 - ldr r0, _0224CCF0 ; =0x022599A8 - ldr r1, _0224CCD8 ; =0x02259818 - ldr r2, _0224CCDC ; =0x02259650 - ldr r3, _0224CCF4 ; =0x00000339 - bl __msl_assertion_failed -_0224CC90: - add r0, sp, #0x10 - mov r1, r6 - mov r2, #0x80 - bl strncpy - mov r1, #0 - add r0, sp, #0x10 - strb r1, [sp, #0x8f] - str r7, [sp] - str r5, [sp, #8] - str r4, [sp, #0xc] - str r0, [sp, #4] - ldr r0, [r7, #0x80c] - ldr r1, _0224CCF8 ; =ciUserEnumChannelsMap - add r2, sp, #0 - bl TableMap - add sp, sp, #0xf0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_0224CCD4: .word Unk_ov66_022598B8 -_0224CCD8: .word Unk_ov66_02259818 -_0224CCDC: .word Unk_ov66_02259650 -_0224CCE0: .word 0x00000336 -_0224CCE4: .word Unk_ov66_02259A44 -_0224CCE8: .word Unk_ov66_02259A54 -_0224CCEC: .word Unk_ov66_02259A64 -_0224CCF0: .word Unk_ov66_022599A8 -_0224CCF4: .word 0x00000339 -_0224CCF8: .word ciUserEnumChannelsMap - arm_func_end ciUserEnumChannels - - arm_func_start ciUserChangeNickMap -ciUserChangeNickMap: ; 0x0224CCFC - stmfd sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0xfc - movs r5, r0 - mov r4, r1 - bne _0224CD24 - ldr r0, _0224CF0C ; =0x02259838 - ldr r1, _0224CF10 ; =0x02259818 - ldr r2, _0224CF14 ; =0x0225968C - ldr r3, _0224CF18 ; =0x0000034F - bl __msl_assertion_failed -_0224CD24: - cmp r4, #0 - bne _0224CD40 - ldr r0, _0224CF1C ; =0x02259930 - ldr r1, _0224CF10 ; =0x02259818 - ldr r2, _0224CF14 ; =0x0225968C - mov r3, #0x350 - bl __msl_assertion_failed -_0224CD40: - ldr r0, [r5, #0x134] - cmp r0, #0 - bne _0224CD60 - ldr r0, _0224CF20 ; =0x02259A7C - ldr r1, _0224CF10 ; =0x02259818 - ldr r2, _0224CF14 ; =0x0225968C - ldr r3, _0224CF24 ; =0x00000355 - bl __msl_assertion_failed -_0224CD60: - ldr r0, [r4, #8] - cmp r0, #0 - bne _0224CD80 - ldr r0, _0224CF28 ; =0x02259ADC - ldr r1, _0224CF10 ; =0x02259818 - ldr r2, _0224CF14 ; =0x0225968C - ldr r3, _0224CF2C ; =0x0000035A - bl __msl_assertion_failed -_0224CD80: - ldr r0, [r4, #8] - ldrsb r0, [r0] - cmp r0, #0 - bne _0224CDA4 - ldr r0, _0224CF30 ; =0x02259AF4 - ldr r1, _0224CF10 ; =0x02259818 - ldr r2, _0224CF14 ; =0x0225968C - ldr r3, _0224CF2C ; =0x0000035A - bl __msl_assertion_failed -_0224CDA4: - ldr r0, [r4, #8] - bl strlen - cmp r0, #0x80 - blo _0224CDC8 - ldr r0, _0224CF34 ; =0x02259B10 - ldr r1, _0224CF10 ; =0x02259818 - ldr r2, _0224CF14 ; =0x0225968C - ldr r3, _0224CF2C ; =0x0000035A - bl __msl_assertion_failed -_0224CDC8: - ldr r0, [r4, #4] - cmp r0, #0 - bne _0224CDE8 - ldr r0, _0224CF38 ; =0x02259B34 - ldr r1, _0224CF10 ; =0x02259818 - ldr r2, _0224CF14 ; =0x0225968C - ldr r3, _0224CF3C ; =0x0000035B - bl __msl_assertion_failed -_0224CDE8: - ldr r0, [r4, #4] - ldrsb r0, [r0] - cmp r0, #0 - bne _0224CE0C - ldr r0, _0224CF40 ; =0x02259B4C - ldr r1, _0224CF10 ; =0x02259818 - ldr r2, _0224CF14 ; =0x0225968C - ldr r3, _0224CF3C ; =0x0000035B - bl __msl_assertion_failed -_0224CE0C: - ldr r0, [r4, #4] - bl strlen - cmp r0, #0x80 - blo _0224CE30 - ldr r0, _0224CF44 ; =0x02259B68 - ldr r1, _0224CF10 ; =0x02259818 - ldr r2, _0224CF14 ; =0x0225968C - ldr r3, _0224CF3C ; =0x0000035B - bl __msl_assertion_failed -_0224CE30: - ldr r0, [r5, #0x134] - ldr r1, [r4, #4] - bl TableLookup - movs r6, r0 - addeq sp, sp, #0xfc - ldmeqia sp!, {r3, r4, r5, r6, pc} - add r0, sp, #0x1c - mov r1, r6 - mov r2, #0xe0 - bl memcpy - ldr r0, [r5, #0x134] - mov r1, r6 - bl TableRemove - cmp r0, #0 - bne _0224CE80 - ldr r0, _0224CF48 ; =0x02259B8C - ldr r1, _0224CF10 ; =0x02259818 - ldr r2, _0224CF14 ; =0x0225968C - ldr r3, _0224CF4C ; =0x00000367 - bl __msl_assertion_failed -_0224CE80: - ldr r1, [r4, #8] - add r0, sp, #0x1c - mov r2, #0x80 - bl strncpy - mov r0, #0 - strb r0, [sp, #0x9b] - ldr r0, [r5, #0x134] - add r1, sp, #0x1c - bl TableEnter - ldr r0, [r4, #0] - mov r1, r5 - bl ciWasJoinCallbackCalled - cmp r0, #0 - ldrne r0, [r5, #0x114] - cmpne r0, #0 - addeq sp, sp, #0xfc - ldmeqia sp!, {r3, r4, r5, r6, pc} - str r5, [sp, #0x10] - ldr r0, [r4, #4] - mov r1, #0 - str r0, [sp, #0x14] - ldr r2, [r4, #8] - mov r0, #0xc - str r2, [sp, #0x18] - ldr r2, [r5, #0x130] - add r3, sp, #0x10 - str r2, [sp] - stmib sp, {r1, r5} - str r0, [sp, #0xc] - ldr r0, [r4, #0] - ldr r2, [r5, #0x114] - mov r1, #8 - bl ciAddCallback_ - add sp, sp, #0xfc - ldmia sp!, {r3, r4, r5, r6, pc} - ; .align 2, 0 -_0224CF0C: .word Unk_ov66_02259838 -_0224CF10: .word Unk_ov66_02259818 -_0224CF14: .word Unk_ov66_0225968C -_0224CF18: .word 0x0000034F -_0224CF1C: .word Unk_ov66_02259930 -_0224CF20: .word Unk_ov66_02259A7C -_0224CF24: .word 0x00000355 -_0224CF28: .word Unk_ov66_02259ADC -_0224CF2C: .word 0x0000035A -_0224CF30: .word Unk_ov66_02259AF4 -_0224CF34: .word Unk_ov66_02259B10 -_0224CF38: .word Unk_ov66_02259B34 -_0224CF3C: .word 0x0000035B -_0224CF40: .word Unk_ov66_02259B4C -_0224CF44: .word Unk_ov66_02259B68 -_0224CF48: .word Unk_ov66_02259B8C -_0224CF4C: .word 0x00000367 - arm_func_end ciUserChangeNickMap - - arm_func_start ciUserChangedNick -ciUserChangedNick: ; 0x0224CF50 - stmfd sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0xc - movs r6, r0 - mov r5, r1 - mov r4, r2 - bne _0224CF7C - ldr r0, _0224D060 ; =0x022598B8 - ldr r1, _0224D064 ; =0x02259818 - ldr r2, _0224D068 ; =0x022595C4 - ldr r3, _0224D06C ; =0x00000386 - bl __msl_assertion_failed -_0224CF7C: - cmp r5, #0 - bne _0224CF98 - ldr r0, _0224D070 ; =0x02259B98 - ldr r1, _0224D064 ; =0x02259818 - ldr r2, _0224D068 ; =0x022595C4 - mov r3, #0x388 - bl __msl_assertion_failed -_0224CF98: - ldrsb r0, [r5] - cmp r0, #0 - bne _0224CFB8 - ldr r0, _0224D074 ; =0x02259BA8 - ldr r1, _0224D064 ; =0x02259818 - ldr r2, _0224D068 ; =0x022595C4 - mov r3, #0x388 - bl __msl_assertion_failed -_0224CFB8: - mov r0, r5 - bl strlen - cmp r0, #0x80 - blo _0224CFDC - ldr r0, _0224D078 ; =0x02259BBC - ldr r1, _0224D064 ; =0x02259818 - ldr r2, _0224D068 ; =0x022595C4 - mov r3, #0x388 - bl __msl_assertion_failed -_0224CFDC: - cmp r4, #0 - bne _0224CFF8 - ldr r0, _0224D07C ; =0x02259BD8 - ldr r1, _0224D064 ; =0x02259818 - ldr r2, _0224D068 ; =0x022595C4 - ldr r3, _0224D080 ; =0x00000389 - bl __msl_assertion_failed -_0224CFF8: - ldrsb r0, [r4] - cmp r0, #0 - bne _0224D018 - ldr r0, _0224D084 ; =0x02259BE8 - ldr r1, _0224D064 ; =0x02259818 - ldr r2, _0224D068 ; =0x022595C4 - ldr r3, _0224D080 ; =0x00000389 - bl __msl_assertion_failed -_0224D018: - mov r0, r4 - bl strlen - cmp r0, #0x80 - blo _0224D03C - ldr r0, _0224D088 ; =0x02259BFC - ldr r1, _0224D064 ; =0x02259818 - ldr r2, _0224D068 ; =0x022595C4 - ldr r3, _0224D080 ; =0x00000389 - bl __msl_assertion_failed -_0224D03C: - str r6, [sp] - str r5, [sp, #4] - str r4, [sp, #8] - ldr r0, [r6, #0x80c] - ldr r1, _0224D08C ; =ciUserChangeNickMap - add r2, sp, #0 - bl TableMap - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, pc} - ; .align 2, 0 -_0224D060: .word Unk_ov66_022598B8 -_0224D064: .word Unk_ov66_02259818 -_0224D068: .word Unk_ov66_022595C4 -_0224D06C: .word 0x00000386 -_0224D070: .word Unk_ov66_02259B98 -_0224D074: .word Unk_ov66_02259BA8 -_0224D078: .word Unk_ov66_02259BBC -_0224D07C: .word Unk_ov66_02259BD8 -_0224D080: .word 0x00000389 -_0224D084: .word Unk_ov66_02259BE8 -_0224D088: .word Unk_ov66_02259BFC -_0224D08C: .word ciUserChangeNickMap - arm_func_end ciUserChangedNick - - arm_func_start ciUserChangedMode -ciUserChangedMode: ; 0x0224D090 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x2e0 - movs r8, r0 - mov r7, r1 - mov r6, r2 - mov r5, r3 - bne _0224D0C0 - ldr r0, _0224D254 ; =0x022598B8 - ldr r1, _0224D258 ; =0x02259818 - ldr r2, _0224D25C ; =0x022595D8 - ldr r3, _0224D260 ; =0x0000039B - bl __msl_assertion_failed -_0224D0C0: - cmp r7, #0 - bne _0224D0DC - ldr r0, _0224D264 ; =0x02259A44 - ldr r1, _0224D258 ; =0x02259818 - ldr r2, _0224D25C ; =0x022595D8 - ldr r3, _0224D268 ; =0x0000039D - bl __msl_assertion_failed -_0224D0DC: - ldrsb r0, [r7] - cmp r0, #0 - bne _0224D0FC - ldr r0, _0224D26C ; =0x02259A54 - ldr r1, _0224D258 ; =0x02259818 - ldr r2, _0224D25C ; =0x022595D8 - ldr r3, _0224D268 ; =0x0000039D - bl __msl_assertion_failed -_0224D0FC: - mov r0, r7 - bl strlen - cmp r0, #0x80 - blo _0224D120 - ldr r0, _0224D270 ; =0x02259A64 - ldr r1, _0224D258 ; =0x02259818 - ldr r2, _0224D25C ; =0x022595D8 - ldr r3, _0224D268 ; =0x0000039D - bl __msl_assertion_failed -_0224D120: - cmp r6, #0 - bne _0224D13C - ldr r0, _0224D274 ; =0x022598D4 - ldr r1, _0224D258 ; =0x02259818 - ldr r2, _0224D25C ; =0x022595D8 - ldr r3, _0224D278 ; =0x0000039E - bl __msl_assertion_failed -_0224D13C: - ldrsb r0, [r6] - cmp r0, #0 - bne _0224D15C - ldr r0, _0224D27C ; =0x022598E4 - ldr r1, _0224D258 ; =0x02259818 - ldr r2, _0224D25C ; =0x022595D8 - ldr r3, _0224D278 ; =0x0000039E - bl __msl_assertion_failed -_0224D15C: - cmp r5, #0 - blt _0224D16C - cmp r5, #3 - ble _0224D180 -_0224D16C: - ldr r0, _0224D280 ; =0x022599F4 - ldr r1, _0224D258 ; =0x02259818 - ldr r2, _0224D25C ; =0x022595D8 - ldr r3, _0224D284 ; =0x0000039F - bl __msl_assertion_failed -_0224D180: - ldr r2, _0224D288 ; =0x00000101 - add r0, sp, #0xfc - mov r1, r6 - bl strncpy - mov r0, #0 - strb r0, [sp, #0x1fc] - ldr r0, [r8, #0x80c] - add r1, sp, #0xfc - bl TableLookup - movs r4, r0 - addeq sp, sp, #0x2e0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - add r0, sp, #0x1c - mov r1, r7 - mov r2, #0x80 - bl strncpy - mov r0, #0 - strb r0, [sp, #0x9b] - ldr r0, [r4, #0x134] - add r1, sp, #0x1c - bl TableLookup - cmp r0, #0 - addeq sp, sp, #0x2e0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldr r1, [sp, #0x2f8] - cmp r1, #0 - ldrne r1, [r0, #0xdc] - ldreq r2, [r0, #0xdc] - orrne r1, r1, r5 - mvneq r1, r5 - andeq r1, r2, r1 - str r1, [r0, #0xdc] - ldr r1, [r4, #0x120] - cmp r1, #0 - addeq sp, sp, #0x2e0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - str r6, [sp, #0x10] - str r7, [sp, #0x14] - ldr r0, [r0, #0xdc] - mov r1, #0 - str r0, [sp, #0x18] - ldr r2, [r4, #0x130] - mov r0, #0xc - str r2, [sp] - stmib sp, {r1, r6} - str r0, [sp, #0xc] - ldr r2, [r4, #0x120] - add r3, sp, #0x10 - mov r0, r8 - mov r1, #0xb - bl ciAddCallback_ - add sp, sp, #0x2e0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_0224D254: .word Unk_ov66_022598B8 -_0224D258: .word Unk_ov66_02259818 -_0224D25C: .word Unk_ov66_022595D8 -_0224D260: .word 0x0000039B -_0224D264: .word Unk_ov66_02259A44 -_0224D268: .word 0x0000039D -_0224D26C: .word Unk_ov66_02259A54 -_0224D270: .word Unk_ov66_02259A64 -_0224D274: .word Unk_ov66_022598D4 -_0224D278: .word 0x0000039E -_0224D27C: .word Unk_ov66_022598E4 -_0224D280: .word Unk_ov66_022599F4 -_0224D284: .word 0x0000039F -_0224D288: .word 0x00000101 - arm_func_end ciUserChangedMode - - arm_func_start ciSetUserBasicInfoMap -ciSetUserBasicInfoMap: ; 0x0224D28C - stmfd sp!, {r3, r4, r5, lr} - movs r4, r0 - mov r5, r1 - bne _0224D2B0 - ldr r0, _0224D33C ; =0x02259838 - ldr r1, _0224D340 ; =0x02259818 - ldr r2, _0224D344 ; =0x02259774 - ldr r3, _0224D348 ; =0x0000041A - bl __msl_assertion_failed -_0224D2B0: - cmp r5, #0 - bne _0224D2CC - ldr r0, _0224D34C ; =0x02259930 - ldr r1, _0224D340 ; =0x02259818 - ldr r2, _0224D344 ; =0x02259774 - ldr r3, _0224D350 ; =0x0000041B - bl __msl_assertion_failed -_0224D2CC: - ldr r0, [r4, #0x134] - cmp r0, #0 - bne _0224D2EC - ldr r0, _0224D354 ; =0x02259A7C - ldr r1, _0224D340 ; =0x02259818 - ldr r2, _0224D344 ; =0x02259774 - ldr r3, _0224D358 ; =0x00000424 - bl __msl_assertion_failed -_0224D2EC: - ldr r0, [r4, #0x134] - ldr r1, [r5, #0] - bl TableLookup - movs r4, r0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, [r5, #4] - add r0, r4, #0x80 - mov r2, #0x18 - bl strncpy - mov r0, #0 - strb r0, [r4, #0x97] - ldr r1, [r5, #8] - add r0, r4, #0x98 - mov r2, #0x40 - bl strncpy - mov r0, #0 - strb r0, [r4, #0xd7] - mov r0, #1 - str r0, [r4, #0xd8] - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0224D33C: .word Unk_ov66_02259838 -_0224D340: .word Unk_ov66_02259818 -_0224D344: .word Unk_ov66_02259774 -_0224D348: .word 0x0000041A -_0224D34C: .word Unk_ov66_02259930 -_0224D350: .word 0x0000041B -_0224D354: .word Unk_ov66_02259A7C -_0224D358: .word 0x00000424 - arm_func_end ciSetUserBasicInfoMap - - arm_func_start ciSetUserBasicInfo -ciSetUserBasicInfo: ; 0x0224D35C - stmfd sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0xec - movs r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bne _0224D38C - ldr r0, _0224D42C ; =0x022598B8 - ldr r1, _0224D430 ; =0x02259818 - ldr r2, _0224D434 ; =0x02259664 - ldr r3, _0224D438 ; =0x0000043D - bl __msl_assertion_failed -_0224D38C: - cmp r6, #0 - bne _0224D3A8 - ldr r0, _0224D43C ; =0x02259C18 - ldr r1, _0224D430 ; =0x02259818 - ldr r2, _0224D434 ; =0x02259664 - ldr r3, _0224D440 ; =0x0000043F - bl __msl_assertion_failed -_0224D3A8: - ldrsb r0, [r6] - cmp r0, #0 - bne _0224D3C8 - ldr r0, _0224D444 ; =0x02259C28 - ldr r1, _0224D430 ; =0x02259818 - ldr r2, _0224D434 ; =0x02259664 - ldr r3, _0224D440 ; =0x0000043F - bl __msl_assertion_failed -_0224D3C8: - mov r0, r6 - bl strlen - cmp r0, #0x80 - blo _0224D3EC - ldr r0, _0224D448 ; =0x02259C38 - ldr r1, _0224D430 ; =0x02259818 - ldr r2, _0224D434 ; =0x02259664 - ldr r3, _0224D440 ; =0x0000043F - bl __msl_assertion_failed -_0224D3EC: - add r0, sp, #0xc - mov r1, r6 - mov r2, #0x80 - bl strncpy - mov r1, #0 - add r0, sp, #0xc - strb r1, [sp, #0x8b] - str r5, [sp, #4] - str r4, [sp, #8] - str r0, [sp] - ldr r0, [r7, #0x80c] - ldr r1, _0224D44C ; =ciSetUserBasicInfoMap - add r2, sp, #0 - bl TableMap - add sp, sp, #0xec - ldmia sp!, {r4, r5, r6, r7, pc} - ; .align 2, 0 -_0224D42C: .word Unk_ov66_022598B8 -_0224D430: .word Unk_ov66_02259818 -_0224D434: .word Unk_ov66_02259664 -_0224D438: .word 0x0000043D -_0224D43C: .word Unk_ov66_02259C18 -_0224D440: .word 0x0000043F -_0224D444: .word Unk_ov66_02259C28 -_0224D448: .word Unk_ov66_02259C38 -_0224D44C: .word ciSetUserBasicInfoMap - arm_func_end ciSetUserBasicInfo - .data - - - .global Unk_ov66_0225955C -Unk_ov66_0225955C: ; 0x0225955C - .incbin "incbin/overlay66_data.bin", 0x83C, 0x848 - 0x83C - - .global Unk_ov66_02259568 -Unk_ov66_02259568: ; 0x02259568 - .incbin "incbin/overlay66_data.bin", 0x848, 0x858 - 0x848 - - .global Unk_ov66_02259578 -Unk_ov66_02259578: ; 0x02259578 - .incbin "incbin/overlay66_data.bin", 0x858, 0x868 - 0x858 - - .global Unk_ov66_02259588 -Unk_ov66_02259588: ; 0x02259588 - .incbin "incbin/overlay66_data.bin", 0x868, 0x87C - 0x868 - - .global Unk_ov66_0225959C -Unk_ov66_0225959C: ; 0x0225959C - .incbin "incbin/overlay66_data.bin", 0x87C, 0x890 - 0x87C - - .global Unk_ov66_022595B0 -Unk_ov66_022595B0: ; 0x022595B0 - .incbin "incbin/overlay66_data.bin", 0x890, 0x8A4 - 0x890 - - .global Unk_ov66_022595C4 -Unk_ov66_022595C4: ; 0x022595C4 - .incbin "incbin/overlay66_data.bin", 0x8A4, 0x8B8 - 0x8A4 - - .global Unk_ov66_022595D8 -Unk_ov66_022595D8: ; 0x022595D8 - .incbin "incbin/overlay66_data.bin", 0x8B8, 0x8CC - 0x8B8 - - .global Unk_ov66_022595EC -Unk_ov66_022595EC: ; 0x022595EC - .incbin "incbin/overlay66_data.bin", 0x8CC, 0x8E0 - 0x8CC - - .global Unk_ov66_02259600 -Unk_ov66_02259600: ; 0x02259600 - .incbin "incbin/overlay66_data.bin", 0x8E0, 0x8F4 - 0x8E0 - - .global Unk_ov66_02259614 -Unk_ov66_02259614: ; 0x02259614 - .incbin "incbin/overlay66_data.bin", 0x8F4, 0x908 - 0x8F4 - - .global Unk_ov66_02259628 -Unk_ov66_02259628: ; 0x02259628 - .incbin "incbin/overlay66_data.bin", 0x908, 0x91C - 0x908 - - .global Unk_ov66_0225963C -Unk_ov66_0225963C: ; 0x0225963C - .incbin "incbin/overlay66_data.bin", 0x91C, 0x930 - 0x91C - - .global Unk_ov66_02259650 -Unk_ov66_02259650: ; 0x02259650 - .incbin "incbin/overlay66_data.bin", 0x930, 0x944 - 0x930 - - .global Unk_ov66_02259664 -Unk_ov66_02259664: ; 0x02259664 - .incbin "incbin/overlay66_data.bin", 0x944, 0x958 - 0x944 - - .global Unk_ov66_02259678 -Unk_ov66_02259678: ; 0x02259678 - .incbin "incbin/overlay66_data.bin", 0x958, 0x96C - 0x958 - - .global Unk_ov66_0225968C -Unk_ov66_0225968C: ; 0x0225968C - .incbin "incbin/overlay66_data.bin", 0x96C, 0x980 - 0x96C - - .global Unk_ov66_022596A0 -Unk_ov66_022596A0: ; 0x022596A0 - .incbin "incbin/overlay66_data.bin", 0x980, 0x994 - 0x980 - - .global Unk_ov66_022596B4 -Unk_ov66_022596B4: ; 0x022596B4 - .incbin "incbin/overlay66_data.bin", 0x994, 0x9AC - 0x994 - - .global Unk_ov66_022596CC -Unk_ov66_022596CC: ; 0x022596CC - .incbin "incbin/overlay66_data.bin", 0x9AC, 0x9C4 - 0x9AC - - .global Unk_ov66_022596E4 -Unk_ov66_022596E4: ; 0x022596E4 - .incbin "incbin/overlay66_data.bin", 0x9C4, 0x9DC - 0x9C4 - - .global Unk_ov66_022596FC -Unk_ov66_022596FC: ; 0x022596FC - .incbin "incbin/overlay66_data.bin", 0x9DC, 0x9F4 - 0x9DC - - .global Unk_ov66_02259714 -Unk_ov66_02259714: ; 0x02259714 - .incbin "incbin/overlay66_data.bin", 0x9F4, 0xA0C - 0x9F4 - - .global Unk_ov66_0225972C -Unk_ov66_0225972C: ; 0x0225972C - .incbin "incbin/overlay66_data.bin", 0xA0C, 0xA24 - 0xA0C - - .global Unk_ov66_02259744 -Unk_ov66_02259744: ; 0x02259744 - .incbin "incbin/overlay66_data.bin", 0xA24, 0xA3C - 0xA24 - - .global Unk_ov66_0225975C -Unk_ov66_0225975C: ; 0x0225975C - .incbin "incbin/overlay66_data.bin", 0xA3C, 0xA54 - 0xA3C - - .global Unk_ov66_02259774 -Unk_ov66_02259774: ; 0x02259774 - .incbin "incbin/overlay66_data.bin", 0xA54, 0xA6C - 0xA54 - - .global Unk_ov66_0225978C -Unk_ov66_0225978C: ; 0x0225978C - .incbin "incbin/overlay66_data.bin", 0xA6C, 0xA84 - 0xA6C - - .global Unk_ov66_022597A4 -Unk_ov66_022597A4: ; 0x022597A4 - .incbin "incbin/overlay66_data.bin", 0xA84, 0xA9C - 0xA84 - - .global Unk_ov66_022597BC -Unk_ov66_022597BC: ; 0x022597BC - .incbin "incbin/overlay66_data.bin", 0xA9C, 0xAB4 - 0xA9C - - .global Unk_ov66_022597D4 -Unk_ov66_022597D4: ; 0x022597D4 - .incbin "incbin/overlay66_data.bin", 0xAB4, 0xAD0 - 0xAB4 - - .global Unk_ov66_022597F0 -Unk_ov66_022597F0: ; 0x022597F0 - .incbin "incbin/overlay66_data.bin", 0xAD0, 0xAEC - 0xAD0 - - .global Unk_ov66_0225980C -Unk_ov66_0225980C: ; 0x0225980C - .incbin "incbin/overlay66_data.bin", 0xAEC, 0xAF8 - 0xAEC - - .global Unk_ov66_02259818 -Unk_ov66_02259818: ; 0x02259818 - .incbin "incbin/overlay66_data.bin", 0xAF8, 0xB08 - 0xAF8 - - .global Unk_ov66_02259828 -Unk_ov66_02259828: ; 0x02259828 - .incbin "incbin/overlay66_data.bin", 0xB08, 0xB18 - 0xB08 - - .global Unk_ov66_02259838 -Unk_ov66_02259838: ; 0x02259838 - .incbin "incbin/overlay66_data.bin", 0xB18, 0xB28 - 0xB18 - - .global Unk_ov66_02259848 -Unk_ov66_02259848: ; 0x02259848 - .incbin "incbin/overlay66_data.bin", 0xB28, 0xB38 - 0xB28 - - .global Unk_ov66_02259858 -Unk_ov66_02259858: ; 0x02259858 - .incbin "incbin/overlay66_data.bin", 0xB38, 0xB48 - 0xB38 - - .global Unk_ov66_02259868 -Unk_ov66_02259868: ; 0x02259868 - .incbin "incbin/overlay66_data.bin", 0xB48, 0xB58 - 0xB48 - - .global Unk_ov66_02259878 -Unk_ov66_02259878: ; 0x02259878 - .incbin "incbin/overlay66_data.bin", 0xB58, 0xB68 - 0xB58 - - .global Unk_ov66_02259888 -Unk_ov66_02259888: ; 0x02259888 - .incbin "incbin/overlay66_data.bin", 0xB68, 0xB78 - 0xB68 - - .global Unk_ov66_02259898 -Unk_ov66_02259898: ; 0x02259898 - .incbin "incbin/overlay66_data.bin", 0xB78, 0xB88 - 0xB78 - - .global Unk_ov66_022598A8 -Unk_ov66_022598A8: ; 0x022598A8 - .incbin "incbin/overlay66_data.bin", 0xB88, 0xB98 - 0xB88 - - .global Unk_ov66_022598B8 -Unk_ov66_022598B8: ; 0x022598B8 - .incbin "incbin/overlay66_data.bin", 0xB98, 0xBA8 - 0xB98 - - .global Unk_ov66_022598C8 -Unk_ov66_022598C8: ; 0x022598C8 - .incbin "incbin/overlay66_data.bin", 0xBA8, 0xBB4 - 0xBA8 - - .global Unk_ov66_022598D4 -Unk_ov66_022598D4: ; 0x022598D4 - .incbin "incbin/overlay66_data.bin", 0xBB4, 0xBC4 - 0xBB4 - - .global Unk_ov66_022598E4 -Unk_ov66_022598E4: ; 0x022598E4 - .incbin "incbin/overlay66_data.bin", 0xBC4, 0xBD8 - 0xBC4 - - .global Unk_ov66_022598F8 -Unk_ov66_022598F8: ; 0x022598F8 - .incbin "incbin/overlay66_data.bin", 0xBD8, 0xBF8 - 0xBD8 - - .global Unk_ov66_02259918 -Unk_ov66_02259918: ; 0x02259918 - .incbin "incbin/overlay66_data.bin", 0xBF8, 0xC0C - 0xBF8 - - .global Unk_ov66_0225992C -Unk_ov66_0225992C: ; 0x0225992C - .incbin "incbin/overlay66_data.bin", 0xC0C, 0xC10 - 0xC0C - - .global Unk_ov66_02259930 -Unk_ov66_02259930: ; 0x02259930 - .incbin "incbin/overlay66_data.bin", 0xC10, 0xC24 - 0xC10 - - .global Unk_ov66_02259944 -Unk_ov66_02259944: ; 0x02259944 - .incbin "incbin/overlay66_data.bin", 0xC24, 0xC38 - 0xC24 - - .global Unk_ov66_02259958 -Unk_ov66_02259958: ; 0x02259958 - .incbin "incbin/overlay66_data.bin", 0xC38, 0xC50 - 0xC38 - - .global Unk_ov66_02259970 -Unk_ov66_02259970: ; 0x02259970 - .incbin "incbin/overlay66_data.bin", 0xC50, 0xC70 - 0xC50 - - .global Unk_ov66_02259990 -Unk_ov66_02259990: ; 0x02259990 - .incbin "incbin/overlay66_data.bin", 0xC70, 0xC84 - 0xC70 - - .global Unk_ov66_022599A4 -Unk_ov66_022599A4: ; 0x022599A4 - .incbin "incbin/overlay66_data.bin", 0xC84, 0xC88 - 0xC84 - - .global Unk_ov66_022599A8 -Unk_ov66_022599A8: ; 0x022599A8 - .incbin "incbin/overlay66_data.bin", 0xC88, 0xC9C - 0xC88 - - .global Unk_ov66_022599BC -Unk_ov66_022599BC: ; 0x022599BC - .incbin "incbin/overlay66_data.bin", 0xC9C, 0xCAC - 0xC9C - - .global Unk_ov66_022599CC -Unk_ov66_022599CC: ; 0x022599CC - .incbin "incbin/overlay66_data.bin", 0xCAC, 0xCBC - 0xCAC - - .global Unk_ov66_022599DC -Unk_ov66_022599DC: ; 0x022599DC - .incbin "incbin/overlay66_data.bin", 0xCBC, 0xCD4 - 0xCBC - - .global Unk_ov66_022599F4 -Unk_ov66_022599F4: ; 0x022599F4 - .incbin "incbin/overlay66_data.bin", 0xCD4, 0xCF0 - 0xCD4 - - .global Unk_ov66_02259A10 -Unk_ov66_02259A10: ; 0x02259A10 - .incbin "incbin/overlay66_data.bin", 0xCF0, 0xD24 - 0xCF0 - - .global Unk_ov66_02259A44 -Unk_ov66_02259A44: ; 0x02259A44 - .incbin "incbin/overlay66_data.bin", 0xD24, 0xD34 - 0xD24 - - .global Unk_ov66_02259A54 -Unk_ov66_02259A54: ; 0x02259A54 - .incbin "incbin/overlay66_data.bin", 0xD34, 0xD44 - 0xD34 - - .global Unk_ov66_02259A64 -Unk_ov66_02259A64: ; 0x02259A64 - .incbin "incbin/overlay66_data.bin", 0xD44, 0xD5C - 0xD44 - - .global Unk_ov66_02259A7C -Unk_ov66_02259A7C: ; 0x02259A7C - .incbin "incbin/overlay66_data.bin", 0xD5C, 0xD74 - 0xD5C - - .global Unk_ov66_02259A94 -Unk_ov66_02259A94: ; 0x02259A94 - .incbin "incbin/overlay66_data.bin", 0xD74, 0xD88 - 0xD74 - - .global Unk_ov66_02259AA8 -Unk_ov66_02259AA8: ; 0x02259AA8 - .incbin "incbin/overlay66_data.bin", 0xD88, 0xDA4 - 0xD88 - - .global Unk_ov66_02259AC4 -Unk_ov66_02259AC4: ; 0x02259AC4 - .incbin "incbin/overlay66_data.bin", 0xDA4, 0xDBC - 0xDA4 - - .global Unk_ov66_02259ADC -Unk_ov66_02259ADC: ; 0x02259ADC - .incbin "incbin/overlay66_data.bin", 0xDBC, 0xDD4 - 0xDBC - - .global Unk_ov66_02259AF4 -Unk_ov66_02259AF4: ; 0x02259AF4 - .incbin "incbin/overlay66_data.bin", 0xDD4, 0xDF0 - 0xDD4 - - .global Unk_ov66_02259B10 -Unk_ov66_02259B10: ; 0x02259B10 - .incbin "incbin/overlay66_data.bin", 0xDF0, 0xE14 - 0xDF0 - - .global Unk_ov66_02259B34 -Unk_ov66_02259B34: ; 0x02259B34 - .incbin "incbin/overlay66_data.bin", 0xE14, 0xE2C - 0xE14 - - .global Unk_ov66_02259B4C -Unk_ov66_02259B4C: ; 0x02259B4C - .incbin "incbin/overlay66_data.bin", 0xE2C, 0xE48 - 0xE2C - - .global Unk_ov66_02259B68 -Unk_ov66_02259B68: ; 0x02259B68 - .incbin "incbin/overlay66_data.bin", 0xE48, 0xE6C - 0xE48 - - .global Unk_ov66_02259B8C -Unk_ov66_02259B8C: ; 0x02259B8C - .incbin "incbin/overlay66_data.bin", 0xE6C, 0xE78 - 0xE6C - - .global Unk_ov66_02259B98 -Unk_ov66_02259B98: ; 0x02259B98 - .incbin "incbin/overlay66_data.bin", 0xE78, 0xE88 - 0xE78 - - .global Unk_ov66_02259BA8 -Unk_ov66_02259BA8: ; 0x02259BA8 - .incbin "incbin/overlay66_data.bin", 0xE88, 0xE9C - 0xE88 - - .global Unk_ov66_02259BBC -Unk_ov66_02259BBC: ; 0x02259BBC - .incbin "incbin/overlay66_data.bin", 0xE9C, 0xEB8 - 0xE9C - - .global Unk_ov66_02259BD8 -Unk_ov66_02259BD8: ; 0x02259BD8 - .incbin "incbin/overlay66_data.bin", 0xEB8, 0xEC8 - 0xEB8 - - .global Unk_ov66_02259BE8 -Unk_ov66_02259BE8: ; 0x02259BE8 - .incbin "incbin/overlay66_data.bin", 0xEC8, 0xEDC - 0xEC8 - - .global Unk_ov66_02259BFC -Unk_ov66_02259BFC: ; 0x02259BFC - .incbin "incbin/overlay66_data.bin", 0xEDC, 0xEF8 - 0xEDC - - .global Unk_ov66_02259C18 -Unk_ov66_02259C18: ; 0x02259C18 - .incbin "incbin/overlay66_data.bin", 0xEF8, 0xF08 - 0xEF8 - - .global Unk_ov66_02259C28 -Unk_ov66_02259C28: ; 0x02259C28 - .incbin "incbin/overlay66_data.bin", 0xF08, 0xF18 - 0xF08 - - .global Unk_ov66_02259C38 -Unk_ov66_02259C38: ; 0x02259C38 - .incbin "incbin/overlay66_data.bin", 0xF18, 0x18 - diff --git a/subprojects/gamespy/libraries/chat/asm/chatcrypt.s b/subprojects/gamespy/libraries/chat/asm/chatcrypt.s deleted file mode 100644 index 4da173cd05..0000000000 --- a/subprojects/gamespy/libraries/chat/asm/chatcrypt.s +++ /dev/null @@ -1,110 +0,0 @@ - .include "macros/function.inc" - .include "include/chatcrypt.inc" - - - - .text - - - arm_func_start gs_prepare_key -gs_prepare_key: ; 0x0224D450 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - mov r7, r1 - mov r8, r0 - mov r6, r2 - mov r1, #0 -_0224D464: - rsb r0, r1, #0xff - strb r1, [r6, r0] - add r1, r1, #1 - cmp r1, #0x100 - blt _0224D464 - mov r0, #0 - strb r0, [r6, #0x100] - mov r4, r0 - mov r5, r0 - strb r0, [r6, #0x101] -_0224D48C: - ldrb r2, [r6, r5] - ldrb r3, [r8, r0] - mov r1, r7 - add r0, r0, #1 - add r3, r3, r2 - add r3, r4, r3 - mov r4, r3, lsr #0x1f - rsb r3, r4, r3, lsl #24 - add r3, r4, r3, ror #24 - and r4, r3, #0xff - ldrb r3, [r6, r4] - strb r3, [r6, r5] - strb r2, [r6, r4] - bl _s32_div_f - add r5, r5, #1 - cmp r5, #0x100 - and r0, r1, #0xff - blt _0224D48C - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end gs_prepare_key - - arm_func_start gs_crypt -gs_crypt: ; 0x0224D4D8 - stmfd sp!, {r4, r5, r6, lr} - cmp r1, #0 - ldrb r3, [r2, #0x100] - ldrb ip, [r2, #0x101] - mov lr, #0 - ble _0224D55C -_0224D4F0: - add r3, r3, #1 - mov r4, r3, lsr #0x1f - rsb r3, r4, r3, lsl #24 - add r3, r4, r3, ror #24 - and r3, r3, #0xff - ldrb r5, [r2, r3] - add r4, ip, r5 - mov ip, r4, lsr #0x1f - rsb r4, ip, r4, lsl #24 - add r4, ip, r4, ror #24 - and ip, r4, #0xff - ldrb r4, [r2, ip] - strb r4, [r2, r3] - strb r5, [r2, ip] - ldrb r4, [r2, r3] - ldrb r6, [r0, lr] - add r4, r4, r5 - mov r5, r4, lsr #0x1f - rsb r4, r5, r4, lsl #24 - add r4, r5, r4, ror #24 - and r4, r4, #0xff - ldrb r4, [r2, r4] - eor r4, r6, r4 - strb r4, [r0, lr] - add lr, lr, #1 - cmp lr, r1 - blt _0224D4F0 -_0224D55C: - strb r3, [r2, #0x100] - strb ip, [r2, #0x101] - ldmia sp!, {r4, r5, r6, pc} - arm_func_end gs_crypt - - arm_func_start gs_xcode_buf -gs_xcode_buf: ; 0x0224D568 - stmfd sp!, {r4, lr} - mov r4, r2 - cmp r1, #0 - mov lr, #0 - ldmleia sp!, {r4, pc} -_0224D57C: - ldrsb ip, [r0, lr] - ldrsb r3, [r4] - eor r3, ip, r3 - strb r3, [r0, lr] - ldrsb r3, [r4, #1]! - add lr, lr, #1 - cmp r3, #0 - moveq r4, r2 - cmp lr, r1 - blt _0224D57C - ldmia sp!, {r4, pc} - arm_func_end gs_xcode_buf \ No newline at end of file diff --git a/subprojects/gamespy/libraries/chat/asm/chathandlers.s b/subprojects/gamespy/libraries/chat/asm/chathandlers.s deleted file mode 100644 index 3229c6bc3b..0000000000 --- a/subprojects/gamespy/libraries/chat/asm/chathandlers.s +++ /dev/null @@ -1,7577 +0,0 @@ - .include "macros/function.inc" - .include "include/chathandlers.inc" - - - - .text - - - arm_func_start ciFindFilter -ciFindFilter: ; 0x0224D5A8 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - movs r4, r0 - mov sl, r1 - str r2, [sp] - bne _0224D5D0 - ldr r0, _0224D714 ; =0x0225A4C0 - ldr r1, _0224D718 ; =0x0225A4D0 - ldr r2, _0224D71C ; =0x02259DB4 - ldr r3, _0224D720 ; =0x0000015B - bl __msl_assertion_failed -_0224D5D0: - cmp sl, #0 - bgt _0224D5EC - ldr r0, _0224D724 ; =0x0225A4E0 - ldr r1, _0224D718 ; =0x0225A4D0 - ldr r2, _0224D71C ; =0x02259DB4 - ldr r3, _0224D728 ; =0x0000015D - bl __msl_assertion_failed -_0224D5EC: - ldr r0, [sp] - cmp r0, #0 - bne _0224D60C - ldr r0, _0224D72C ; =0x0225A4F0 - ldr r1, _0224D718 ; =0x0225A4D0 - ldr r2, _0224D71C ; =0x02259DB4 - ldr r3, _0224D730 ; =0x0000015E - bl __msl_assertion_failed -_0224D60C: - ldr r8, [r4, #0x814] - cmp r8, #0 - beq _0224D70C -_0224D618: - cmp sl, #0 - mov r6, #0 - ble _0224D700 - ldr sb, [sp] - ldr fp, _0224D734 ; =0x0225A4F8 - mov r4, #1 - mov r5, r6 -_0224D634: - ldr r0, [sb] - mov r1, r5 - cmp r0, #0 - blt _0224D64C - cmp r0, #0x11 - movlt r1, r4 -_0224D64C: - cmp r1, #0 - bne _0224D668 - ldr r1, _0224D718 ; =0x0225A4D0 - ldr r2, _0224D71C ; =0x02259DB4 - mov r0, fp - mov r3, #0x164 - bl __msl_assertion_failed -_0224D668: - ldr r1, [r8] - ldr r0, [sb] - cmp r1, r0 - bne _0224D6F0 - ldmib sb, {r0, r7} - cmp r0, #0 - ldreq r1, [r8, #8] - cmpeq r1, #0 - beq _0224D6A8 - cmp r0, #0 - ldrne r1, [r8, #8] - cmpne r1, #0 - beq _0224D6F0 - bl strcasecmp - cmp r0, #0 - bne _0224D6F0 -_0224D6A8: - cmp r7, #0 - ldreq r0, [r8, #0xc] - cmpeq r0, #0 - beq _0224D6D8 - cmp r7, #0 - ldrne r1, [r8, #0xc] - cmpne r1, #0 - beq _0224D6F0 - mov r0, r7 - bl strcasecmp - cmp r0, #0 - bne _0224D6F0 -_0224D6D8: - bl current_time - add r0, r0, #0xa60 - add r1, r0, #0xe000 - mov r0, r8 - str r1, [r8, #4] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0224D6F0: - add r6, r6, #1 - cmp r6, sl - add sb, sb, #0xc - blt _0224D634 -_0224D700: - ldr r8, [r8, #0x24] - cmp r8, #0 - bne _0224D618 -_0224D70C: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0224D714: .word Unk_ov66_0225A4C0 -_0224D718: .word Unk_ov66_0225A4D0 -_0224D71C: .word Unk_ov66_02259DB4 -_0224D720: .word 0x0000015B -_0224D724: .word Unk_ov66_0225A4E0 -_0224D728: .word 0x0000015D -_0224D72C: .word Unk_ov66_0225A4F0 -_0224D730: .word 0x0000015E -_0224D734: .word Unk_ov66_0225A4F8 - arm_func_end ciFindFilter - - arm_func_start ciFindGetKeyFilter -ciFindGetKeyFilter: ; 0x0224D738 - stmfd sp!, {r3, r4, r5, lr} - movs r4, r0 - mov r5, r1 - bne _0224D75C - ldr r0, _0224D7E0 ; =0x0225A4C0 - ldr r1, _0224D7E4 ; =0x0225A4D0 - ldr r2, _0224D7E8 ; =0x02259F9C - ldr r3, _0224D7EC ; =0x0000017F - bl __msl_assertion_failed -_0224D75C: - cmp r5, #0 - bne _0224D778 - ldr r0, _0224D7F0 ; =0x0225A530 - ldr r1, _0224D7E4 ; =0x0225A4D0 - ldr r2, _0224D7E8 ; =0x02259F9C - ldr r3, _0224D7F4 ; =0x00000181 - bl __msl_assertion_failed -_0224D778: - ldrsb r0, [r5] - cmp r0, #0 - bne _0224D798 - ldr r0, _0224D7F8 ; =0x0225A538 - ldr r1, _0224D7E4 ; =0x0225A4D0 - ldr r2, _0224D7E8 ; =0x02259F9C - ldr r3, _0224D7FC ; =0x00000182 - bl __msl_assertion_failed -_0224D798: - ldr r4, [r4, #0x814] - cmp r4, #0 - beq _0224D7D8 -_0224D7A4: - ldr r0, [r4, #0] - cmp r0, #0xc - bne _0224D7CC - ldr r0, [r4, #0x1c] - mov r1, r5 - ldr r0, [r0, #8] - bl strcasecmp - cmp r0, #0 - moveq r0, r4 - ldmeqia sp!, {r3, r4, r5, pc} -_0224D7CC: - ldr r4, [r4, #0x24] - cmp r4, #0 - bne _0224D7A4 -_0224D7D8: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0224D7E0: .word Unk_ov66_0225A4C0 -_0224D7E4: .word Unk_ov66_0225A4D0 -_0224D7E8: .word Unk_ov66_02259F9C -_0224D7EC: .word 0x0000017F -_0224D7F0: .word Unk_ov66_0225A530 -_0224D7F4: .word 0x00000181 -_0224D7F8: .word Unk_ov66_0225A538 -_0224D7FC: .word 0x00000182 - arm_func_end ciFindGetKeyFilter - - arm_func_start ciDestroyFilter -ciDestroyFilter: ; 0x0224D800 - stmfd sp!, {r4, lr} - movs r4, r0 - bne _0224D820 - ldr r0, _0224D844 ; =0x0225A544 - ldr r1, _0224D848 ; =0x0225A4D0 - ldr r2, _0224D84C ; =0x02259EC4 - ldr r3, _0224D850 ; =0x00000193 - bl __msl_assertion_failed -_0224D820: - ldr r0, [r4, #0x1c] - bl DWCi_GsFree - ldr r0, [r4, #8] - bl DWCi_GsFree - ldr r0, [r4, #0xc] - bl DWCi_GsFree - mov r0, r4 - bl DWCi_GsFree - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0224D844: .word Unk_ov66_0225A544 -_0224D848: .word Unk_ov66_0225A4D0 -_0224D84C: .word Unk_ov66_02259EC4 -_0224D850: .word 0x00000193 - arm_func_end ciDestroyFilter - - arm_func_start ciRemoveFilter -ciRemoveFilter: ; 0x0224D854 - stmfd sp!, {r4, r5, r6, lr} - movs r6, r0 - mov r5, r1 - mov r4, #0 - bne _0224D87C - ldr r0, _0224D8F0 ; =0x0225A4C0 - ldr r1, _0224D8F4 ; =0x0225A4D0 - ldr r2, _0224D8F8 ; =0x02259E74 - ldr r3, _0224D8FC ; =0x0000019F - bl __msl_assertion_failed -_0224D87C: - cmp r5, #0 - bne _0224D898 - ldr r0, _0224D900 ; =0x0225A544 - ldr r1, _0224D8F4 ; =0x0225A4D0 - ldr r2, _0224D8F8 ; =0x02259E74 - ldr r3, _0224D904 ; =0x000001A1 - bl __msl_assertion_failed -_0224D898: - ldr r1, [r6, #0x814] - mov r0, r1 - cmp r1, #0 - ldmeqia sp!, {r4, r5, r6, pc} -_0224D8A8: - cmp r0, r5 - bne _0224D8DC - cmp r1, r0 - ldreq r1, [r0, #0x24] - streq r1, [r6, #0x814] - ldr r1, [r6, #0x818] - cmp r1, r0 - streq r4, [r6, #0x818] - cmp r4, #0 - ldrne r1, [r0, #0x24] - strne r1, [r4, #0x24] - bl ciDestroyFilter - ldmia sp!, {r4, r5, r6, pc} -_0224D8DC: - mov r4, r0 - ldr r0, [r0, #0x24] - cmp r0, #0 - bne _0224D8A8 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_0224D8F0: .word Unk_ov66_0225A4C0 -_0224D8F4: .word Unk_ov66_0225A4D0 -_0224D8F8: .word Unk_ov66_02259E74 -_0224D8FC: .word 0x0000019F -_0224D900: .word Unk_ov66_0225A544 -_0224D904: .word 0x000001A1 - arm_func_end ciRemoveFilter - - arm_func_start ciFinishFilter -ciFinishFilter: ; 0x0224D908 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x10 - movs r5, r1 - mov r6, r0 - mov r4, r2 - bne _0224D934 - ldr r0, _0224E02C ; =0x0225A554 - ldr r1, _0224E030 ; =0x0225A4D0 - ldr r2, _0224E034 ; =0x02259E84 - ldr r3, _0224E038 ; =0x000001C1 - bl __msl_assertion_failed -_0224D934: - ldr r0, [r5, #0] - mov r1, #0 - cmp r0, #0 - blt _0224D94C - cmp r0, #0x11 - movlt r1, #1 -_0224D94C: - cmp r1, #0 - bne _0224D968 - ldr r0, _0224E03C ; =0x0225A55C - ldr r1, _0224E030 ; =0x0225A4D0 - ldr r2, _0224E034 ; =0x02259E84 - ldr r3, _0224E040 ; =0x000001C2 - bl __msl_assertion_failed -_0224D968: - ldr r0, [r5, #0] - cmp r0, #0 - bne _0224DA08 - ldr r2, [r5, #0x14] - ldr r7, [r5, #0x1c] - cmp r2, #0 - beq _0224D9B4 - ldr r0, [r5, #0x18] - mov r1, #0 - str r0, [sp] - ldr r3, [r5, #0x20] - mov r0, r6 - str r3, [sp, #4] - mov r3, r4 - str r1, [sp, #8] - mov r4, #0x14 - mov r1, #0xe - str r4, [sp, #0xc] - bl ciAddCallback_ -_0224D9B4: - ldr r0, [r7, #4] - mov r4, #0 - cmp r0, #0 - ble _0224D9EC -_0224D9C4: - ldr r0, [r7, #8] - ldr r0, [r0, r4, lsl #2] - bl DWCi_GsFree - ldr r0, [r7, #0x10] - ldr r0, [r0, r4, lsl #2] - bl DWCi_GsFree - ldr r0, [r7, #4] - add r4, r4, #1 - cmp r4, r0 - blt _0224D9C4 -_0224D9EC: - ldr r0, [r7, #8] - bl DWCi_GsFree - ldr r0, [r7, #0x10] - bl DWCi_GsFree - ldr r0, [r7, #0xc] - bl DWCi_GsFree - b _0224E018 -_0224DA08: - cmp r0, #1 - bne _0224DA50 - ldr r2, [r5, #0x10] - cmp r2, #0 - beq _0224E018 - ldr r0, [r5, #0x18] - mov r1, #0 - str r0, [sp] - ldr r3, [r5, #0x20] - mov r0, r6 - str r3, [sp, #4] - mov r3, r4 - str r1, [sp, #8] - mov r4, #0xc - mov r1, #0xf - str r4, [sp, #0xc] - bl ciAddCallback_ - b _0224E018 -_0224DA50: - cmp r0, #2 - bne _0224DA94 - ldr r2, [r5, #0x10] - ldr r7, [r4, #4] - cmp r2, #0 - beq _0224E018 - ldr r1, [r5, #0x18] - mov r3, r4 - str r1, [sp] - ldr r1, [r5, #0x20] - mov r0, r6 - stmib sp, {r1, r7} - mov r4, #0xc - mov r1, #0x10 - str r4, [sp, #0xc] - bl ciAddCallback_ - b _0224E018 -_0224DA94: - cmp r0, #3 - bne _0224DB1C - ldr r2, [r5, #0x10] - ldr r7, [r5, #0x1c] - cmp r2, #0 - beq _0224DADC - ldr r0, [r5, #0x18] - mov r1, #0 - str r0, [sp] - ldr r3, [r5, #0x20] - mov r0, r6 - str r3, [sp, #4] - mov r3, r4 - str r1, [sp, #8] - mov r4, #0x14 - mov r1, #0x13 - str r4, [sp, #0xc] - bl ciAddCallback_ -_0224DADC: - ldr r0, [r7, #4] - mov r4, #0 - cmp r0, #0 - ble _0224DB08 -_0224DAEC: - ldr r0, [r7, #8] - ldr r0, [r0, r4, lsl #2] - bl DWCi_GsFree - ldr r0, [r7, #4] - add r4, r4, #1 - cmp r4, r0 - blt _0224DAEC -_0224DB08: - ldr r0, [r7, #8] - bl DWCi_GsFree - ldr r0, [r7, #0xc] - bl DWCi_GsFree - b _0224E018 -_0224DB1C: - cmp r0, #4 - bne _0224DBB4 - ldr r2, [r5, #0x10] - ldr r7, [r5, #0x1c] - cmp r2, #0 - beq _0224DB64 - ldr r0, [r5, #0x18] - mov r1, #0 - str r0, [sp] - ldr r3, [r5, #0x20] - mov r0, r6 - str r3, [sp, #4] - mov r3, r4 - str r1, [sp, #8] - mov r4, #0x1c - mov r1, #0x14 - str r4, [sp, #0xc] - bl ciAddCallback_ -_0224DB64: - ldr r0, [r7, #0xc] - mov r4, #0 - cmp r0, #0 - ble _0224DB90 -_0224DB74: - ldr r0, [r7, #0x10] - ldr r0, [r0, r4, lsl #2] - bl DWCi_GsFree - ldr r0, [r7, #0xc] - add r4, r4, #1 - cmp r4, r0 - blt _0224DB74 -_0224DB90: - ldr r0, [r7, #0x10] - bl DWCi_GsFree - ldr r0, [r7, #4] - bl DWCi_GsFree - ldr r0, [r7, #8] - bl DWCi_GsFree - ldr r0, [r7, #0] - bl DWCi_GsFree - b _0224E018 -_0224DBB4: - cmp r0, #0xa - bne _0224DBFC - ldr r2, [r5, #0x10] - cmp r2, #0 - beq _0224E018 - ldr r0, [r5, #0x18] - mov r1, #0 - str r0, [sp] - ldr r3, [r5, #0x20] - mov r0, r6 - str r3, [sp, #4] - mov r3, r4 - str r1, [sp, #8] - mov r4, #0x10 - mov r1, #0x15 - str r4, [sp, #0xc] - bl ciAddCallback_ - b _0224E018 -_0224DBFC: - cmp r0, #0xb - bne _0224DC44 - ldr r2, [r5, #0x10] - cmp r2, #0 - beq _0224E018 - ldr r0, [r5, #0x18] - mov r1, #0 - str r0, [sp] - ldr r3, [r5, #0x20] - mov r0, r6 - str r3, [sp, #4] - mov r3, r4 - str r1, [sp, #8] - mov r4, #0x10 - mov r1, #0x16 - str r4, [sp, #0xc] - bl ciAddCallback_ - b _0224E018 -_0224DC44: - cmp r0, #5 - bne _0224DC8C - ldr r2, [r5, #0x10] - cmp r2, #0 - beq _0224E018 - ldr r0, [r5, #0x18] - mov r1, #0 - str r0, [sp] - ldr r3, [r5, #0x20] - mov r0, r6 - str r3, [sp, #4] - mov r3, r4 - str r1, [sp, #8] - mov r4, #0xc - mov r1, #0x11 - str r4, [sp, #0xc] - bl ciAddCallback_ - b _0224E018 -_0224DC8C: - cmp r0, #6 - bne _0224DCD4 - ldr r2, [r5, #0x10] - cmp r2, #0 - beq _0224E018 - ldr r0, [r5, #0x18] - mov r1, #0 - str r0, [sp] - ldr r3, [r5, #0x20] - mov r0, r6 - str r3, [sp, #4] - mov r3, r4 - str r1, [sp, #8] - mov r4, #0x10 - mov r1, #0x17 - str r4, [sp, #0xc] - bl ciAddCallback_ - b _0224E018 -_0224DCD4: - cmp r0, #7 - bne _0224DCEC - ldr r0, [r5, #0x1c] - ldr r0, [r0, #0] - bl DWCi_GsFree - b _0224E018 -_0224DCEC: - cmp r0, #8 - bne _0224DD64 - ldr r2, [r5, #0x10] - ldr r7, [r5, #0x1c] - cmp r2, #0 - beq _0224DD34 - ldr r0, [r5, #0x18] - mov r1, #0 - str r0, [sp] - ldr r3, [r5, #0x20] - mov r0, r6 - str r3, [sp, #4] - mov r3, r4 - str r1, [sp, #8] - mov r4, #0x10 - mov r1, #0x18 - str r4, [sp, #0xc] - bl ciAddCallback_ -_0224DD34: - ldr r0, [r7, #0] - mov r4, #0 - cmp r0, #0 - ble _0224E018 -_0224DD44: - ldr r0, [r7, #4] - ldr r0, [r0, r4, lsl #2] - bl DWCi_GsFree - ldr r0, [r7, #0] - add r4, r4, #1 - cmp r4, r0 - blt _0224DD44 - b _0224E018 -_0224DD64: - cmp r0, #9 - bne _0224DDAC - ldr r2, [r5, #0x10] - cmp r2, #0 - beq _0224E018 - ldr r0, [r5, #0x18] - mov r1, #0 - str r0, [sp] - ldr r3, [r5, #0x20] - mov r0, r6 - str r3, [sp, #4] - mov r3, r4 - str r1, [sp, #8] - mov r4, #0xc - mov r1, #0x1a - str r4, [sp, #0xc] - bl ciAddCallback_ - b _0224E018 -_0224DDAC: - cmp r0, #0xc - bne _0224DE34 - ldr r2, [r5, #0x10] - ldr r7, [r5, #0x1c] - cmp r2, #0 - beq _0224DDF4 - ldr r0, [r5, #0x18] - mov r1, #0 - str r0, [sp] - ldr r3, [r5, #0x20] - mov r0, r6 - str r3, [sp, #4] - mov r3, r4 - str r1, [sp, #8] - mov r4, #0x14 - mov r1, #0x1d - str r4, [sp, #0xc] - bl ciAddCallback_ -_0224DDF4: - ldr r0, [r7, #8] - bl DWCi_GsFree - ldr r0, [r7, #0] - mov r4, #0 - cmp r0, #0 - ble _0224DE28 -_0224DE0C: - ldr r0, [r7, #4] - ldr r0, [r0, r4, lsl #2] - bl DWCi_GsFree - ldr r0, [r7, #0] - add r4, r4, #1 - cmp r4, r0 - blt _0224DE0C -_0224DE28: - ldr r0, [r7, #4] - bl DWCi_GsFree - b _0224E018 -_0224DE34: - cmp r0, #0xd - bne _0224DEB4 - ldr r2, [r5, #0x10] - ldr r7, [r5, #0x1c] - cmp r2, #0 - beq _0224DE7C - ldr r0, [r5, #0x18] - mov r1, #0 - str r0, [sp] - ldr r3, [r5, #0x20] - mov r0, r6 - str r3, [sp, #4] - mov r3, r4 - str r1, [sp, #8] - mov r4, #0x18 - mov r1, #0x1e - str r4, [sp, #0xc] - bl ciAddCallback_ -_0224DE7C: - ldr r0, [r7, #0] - mov r4, #0 - cmp r0, #0 - ble _0224DEA8 -_0224DE8C: - ldr r0, [r7, #4] - ldr r0, [r0, r4, lsl #2] - bl DWCi_GsFree - ldr r0, [r7, #0] - add r4, r4, #1 - cmp r4, r0 - blt _0224DE8C -_0224DEA8: - ldr r0, [r7, #4] - bl DWCi_GsFree - b _0224E018 -_0224DEB4: - cmp r0, #0xe - bne _0224DF34 - ldr r2, [r5, #0x10] - ldr r7, [r5, #0x1c] - cmp r2, #0 - beq _0224DEFC - ldr r0, [r5, #0x18] - mov r1, #0 - str r0, [sp] - ldr r3, [r5, #0x20] - mov r0, r6 - str r3, [sp, #4] - mov r3, r4 - str r1, [sp, #8] - mov r4, #0x18 - mov r1, #0x1e - str r4, [sp, #0xc] - bl ciAddCallback_ -_0224DEFC: - ldr r0, [r7, #0] - mov r4, #0 - cmp r0, #0 - ble _0224DF28 -_0224DF0C: - ldr r0, [r7, #4] - ldr r0, [r0, r4, lsl #2] - bl DWCi_GsFree - ldr r0, [r7, #0] - add r4, r4, #1 - cmp r4, r0 - blt _0224DF0C -_0224DF28: - ldr r0, [r7, #4] - bl DWCi_GsFree - b _0224E018 -_0224DF34: - cmp r0, #0xf - bne _0224DFBC - ldr r2, [r5, #0x10] - ldr r7, [r5, #0x1c] - cmp r2, #0 - beq _0224DF7C - ldr r0, [r5, #0x18] - mov r1, #0 - str r0, [sp] - ldr r3, [r5, #0x20] - mov r0, r6 - str r3, [sp, #4] - mov r3, r4 - str r1, [sp, #8] - mov r4, #0x10 - mov r1, #0x1b - str r4, [sp, #0xc] - bl ciAddCallback_ -_0224DF7C: - ldr r0, [r7, #4] - mov r4, #0 - cmp r0, #0 - ble _0224DFA8 -_0224DF8C: - ldr r0, [r7, #8] - ldr r0, [r0, r4, lsl #2] - bl DWCi_GsFree - ldr r0, [r7, #4] - add r4, r4, #1 - cmp r4, r0 - blt _0224DF8C -_0224DFA8: - ldr r0, [r7, #8] - bl DWCi_GsFree - ldr r0, [r7, #0xc] - bl DWCi_GsFree - b _0224E018 -_0224DFBC: - cmp r0, #0x10 - bne _0224E004 - ldr r2, [r5, #0x10] - cmp r2, #0 - beq _0224E018 - ldr r0, [r5, #0x18] - mov r1, #0 - str r0, [sp] - ldr r3, [r5, #0x20] - mov r0, r6 - str r3, [sp, #4] - mov r3, r4 - str r1, [sp, #8] - mov r4, #8 - mov r1, #0x1f - str r4, [sp, #0xc] - bl ciAddCallback_ - b _0224E018 -_0224E004: - ldr r0, _0224E044 ; =0x0225A590 - ldr r1, _0224E030 ; =0x0225A4D0 - ldr r2, _0224E034 ; =0x02259E84 - mov r3, #0x25c - bl __msl_assertion_failed -_0224E018: - mov r0, r6 - mov r1, r5 - bl ciRemoveFilter - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_0224E02C: .word Unk_ov66_0225A554 -_0224E030: .word Unk_ov66_0225A4D0 -_0224E034: .word Unk_ov66_02259E84 -_0224E038: .word 0x000001C1 -_0224E03C: .word Unk_ov66_0225A55C -_0224E040: .word 0x000001C2 -_0224E044: .word Unk_ov66_0225A590 - arm_func_end ciFinishFilter - - arm_func_start ciFilterTimedout -ciFilterTimedout: ; 0x0224E048 - stmfd sp!, {r4, r5, lr} - sub sp, sp, #0x104 - movs r4, r1 - mov r5, r0 - bne _0224E070 - ldr r0, _0224E454 ; =0x0225A554 - ldr r1, _0224E458 ; =0x0225A4D0 - ldr r2, _0224E45C ; =0x02259F10 - mov r3, #0x268 - bl __msl_assertion_failed -_0224E070: - ldr r0, [r4, #0] - mov r1, #0 - cmp r0, #0 - blt _0224E088 - cmp r0, #0x11 - movlt r1, #1 -_0224E088: - cmp r1, #0 - bne _0224E0A4 - ldr r0, _0224E460 ; =0x0225A55C - ldr r1, _0224E458 ; =0x0225A4D0 - ldr r2, _0224E45C ; =0x02259F10 - ldr r3, _0224E464 ; =0x00000269 - bl __msl_assertion_failed -_0224E0A4: - ldr r0, [r4, #0] - cmp r0, #0 - bne _0224E0E0 - mov r3, #0 - add r2, sp, #0xf0 - mov r0, r5 - mov r1, r4 - str r3, [sp, #0xf0] - str r3, [sp, #0xf4] - str r3, [sp, #0xf8] - str r3, [sp, #0xfc] - str r3, [sp, #0x100] - bl ciFinishFilter - add sp, sp, #0x104 - ldmia sp!, {r4, r5, pc} -_0224E0E0: - cmp r0, #1 - bne _0224E118 - mov r1, #0 - mov r0, #7 - str r1, [sp, #0xe4] - str r0, [sp, #0xe8] - ldr r3, [r4, #8] - add r2, sp, #0xe4 - mov r0, r5 - mov r1, r4 - str r3, [sp, #0xec] - bl ciFinishFilter - add sp, sp, #0x104 - ldmia sp!, {r4, r5, pc} -_0224E118: - cmp r0, #2 - bne _0224E14C - mov ip, #0 - str ip, [sp, #0xd8] - ldr r3, [r4, #8] - add r2, sp, #0xd8 - mov r0, r5 - mov r1, r4 - str r3, [sp, #0xdc] - str ip, [sp, #0xe0] - bl ciFinishFilter - add sp, sp, #0x104 - ldmia sp!, {r4, r5, pc} -_0224E14C: - cmp r0, #3 - bne _0224E188 - mov ip, #0 - str ip, [sp, #0xc4] - ldr r3, [r4, #8] - add r2, sp, #0xc4 - mov r0, r5 - mov r1, r4 - str r3, [sp, #0xc8] - str ip, [sp, #0xcc] - str ip, [sp, #0xd0] - str ip, [sp, #0xd4] - bl ciFinishFilter - add sp, sp, #0x104 - ldmia sp!, {r4, r5, pc} -_0224E188: - cmp r0, #4 - bne _0224E1CC - mov ip, #0 - str ip, [sp, #0xa8] - ldr r3, [r4, #8] - add r2, sp, #0xa8 - mov r0, r5 - mov r1, r4 - str r3, [sp, #0xac] - str ip, [sp, #0xb0] - str ip, [sp, #0xb4] - str ip, [sp, #0xb8] - str ip, [sp, #0xbc] - str ip, [sp, #0xc0] - bl ciFinishFilter - add sp, sp, #0x104 - ldmia sp!, {r4, r5, pc} -_0224E1CC: - cmp r0, #0xa - bne _0224E204 - mov ip, #0 - str ip, [sp, #0x98] - ldr r3, [r4, #8] - add r2, sp, #0x98 - mov r0, r5 - mov r1, r4 - str r3, [sp, #0x9c] - str ip, [sp, #0xa0] - str ip, [sp, #0xa4] - bl ciFinishFilter - add sp, sp, #0x104 - ldmia sp!, {r4, r5, pc} -_0224E204: - cmp r0, #0xb - bne _0224E240 - mov ip, #0 - str ip, [sp, #0x84] - ldr r3, [r4, #8] - add r2, sp, #0x84 - mov r0, r5 - mov r1, r4 - str r3, [sp, #0x88] - str ip, [sp, #0x8c] - str ip, [sp, #0x90] - str ip, [sp, #0x94] - bl ciFinishFilter - add sp, sp, #0x104 - ldmia sp!, {r4, r5, pc} -_0224E240: - cmp r0, #5 - bne _0224E274 - mov ip, #0 - str ip, [sp, #0x78] - ldr r3, [r4, #8] - add r2, sp, #0x78 - mov r0, r5 - mov r1, r4 - str r3, [sp, #0x7c] - str ip, [sp, #0x80] - bl ciFinishFilter - add sp, sp, #0x104 - ldmia sp!, {r4, r5, pc} -_0224E274: - cmp r0, #6 - bne _0224E2B0 - mov ip, #0 - str ip, [sp, #0x68] - ldr r0, [r4, #0xc] - add r2, sp, #0x68 - str r0, [sp, #0x6c] - ldr r3, [r4, #8] - mov r0, r5 - mov r1, r4 - str r3, [sp, #0x70] - str ip, [sp, #0x74] - bl ciFinishFilter - add sp, sp, #0x104 - ldmia sp!, {r4, r5, pc} -_0224E2B0: - cmp r0, #7 - bne _0224E2D0 - mov r0, r5 - mov r1, r4 - mov r2, #0 - bl ciFinishFilter - add sp, sp, #0x104 - ldmia sp!, {r4, r5, pc} -_0224E2D0: - cmp r0, #8 - bne _0224E304 - ldr ip, [r4, #8] - mov r3, #0 - add r2, sp, #0x58 - mov r0, r5 - mov r1, r4 - str ip, [sp, #0x5c] - str r3, [sp, #0x60] - str r3, [sp, #0x64] - bl ciFinishFilter - add sp, sp, #0x104 - ldmia sp!, {r4, r5, pc} -_0224E304: - cmp r0, #9 - bne _0224E33C - mov r0, #0 - str r0, [sp, #0x4c] - ldr r0, [r4, #8] - add r2, sp, #0x4c - str r0, [sp, #0x50] - ldr r3, [r4, #0xc] - mov r0, r5 - mov r1, r4 - str r3, [sp, #0x54] - bl ciFinishFilter - add sp, sp, #0x104 - ldmia sp!, {r4, r5, pc} -_0224E33C: - cmp r0, #0xc - bne _0224E374 - mov r3, #0 - add r2, sp, #0x38 - mov r0, r5 - mov r1, r4 - str r3, [sp, #0x38] - str r3, [sp, #0x3c] - str r3, [sp, #0x40] - str r3, [sp, #0x44] - str r3, [sp, #0x48] - bl ciFinishFilter - add sp, sp, #0x104 - ldmia sp!, {r4, r5, pc} -_0224E374: - cmp r0, #0xd - bne _0224E3B0 - mov r3, #0 - add r2, sp, #0x20 - mov r0, r5 - mov r1, r4 - str r3, [sp, #0x20] - str r3, [sp, #0x24] - str r3, [sp, #0x28] - str r3, [sp, #0x2c] - str r3, [sp, #0x30] - str r3, [sp, #0x34] - bl ciFinishFilter - add sp, sp, #0x104 - ldmia sp!, {r4, r5, pc} -_0224E3B0: - cmp r0, #0xe - bne _0224E3EC - mov r3, #0 - add r2, sp, #8 - mov r0, r5 - mov r1, r4 - str r3, [sp, #8] - str r3, [sp, #0xc] - str r3, [sp, #0x10] - str r3, [sp, #0x14] - str r3, [sp, #0x18] - str r3, [sp, #0x1c] - bl ciFinishFilter - add sp, sp, #0x104 - ldmia sp!, {r4, r5, pc} -_0224E3EC: - cmp r0, #0xf - bne _0224E408 - mov r0, r5 - mov r1, r4 - bl ciRemoveFilter - add sp, sp, #0x104 - ldmia sp!, {r4, r5, pc} -_0224E408: - cmp r0, #0x10 - bne _0224E438 - ldr r3, _0224E468 ; =0x0225A594 - mov ip, #0 - add r2, sp, #0 - mov r0, r5 - mov r1, r4 - str ip, [sp] - str r3, [sp, #4] - bl ciFinishFilter - add sp, sp, #0x104 - ldmia sp!, {r4, r5, pc} -_0224E438: - ldr r0, _0224E46C ; =0x0225A590 - ldr r1, _0224E458 ; =0x0225A4D0 - ldr r2, _0224E45C ; =0x02259F10 - ldr r3, _0224E470 ; =0x00000311 - bl __msl_assertion_failed - add sp, sp, #0x104 - ldmia sp!, {r4, r5, pc} - ; .align 2, 0 -_0224E454: .word Unk_ov66_0225A554 -_0224E458: .word Unk_ov66_0225A4D0 -_0224E45C: .word Unk_ov66_02259F10 -_0224E460: .word Unk_ov66_0225A55C -_0224E464: .word 0x00000269 -_0224E468: .word Unk_ov66_0225A594 -_0224E46C: .word Unk_ov66_0225A590 -_0224E470: .word 0x00000311 - arm_func_end ciFilterTimedout - - arm_func_start ciFilterThink -ciFilterThink: ; 0x0224E474 - stmfd sp!, {r4, r5, r6, lr} - movs r6, r0 - bne _0224E494 - ldr r0, _0224E4D0 ; =0x0225A4C0 - ldr r1, _0224E4D4 ; =0x0225A4D0 - ldr r2, _0224E4D8 ; =0x02259DC4 - ldr r3, _0224E4DC ; =0x0000031A - bl __msl_assertion_failed -_0224E494: - bl current_time - ldr r1, [r6, #0x814] - mov r5, r0 - cmp r1, #0 - ldmeqia sp!, {r4, r5, r6, pc} -_0224E4A8: - ldr r0, [r1, #4] - ldr r4, [r1, #0x24] - cmp r5, r0 - bls _0224E4C0 - mov r0, r6 - bl ciFilterTimedout -_0224E4C0: - mov r1, r4 - cmp r4, #0 - bne _0224E4A8 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_0224E4D0: .word Unk_ov66_0225A4C0 -_0224E4D4: .word Unk_ov66_0225A4D0 -_0224E4D8: .word Unk_ov66_02259DC4 -_0224E4DC: .word 0x0000031A - arm_func_end ciFilterThink - - arm_func_start ciGetNextID -ciGetNextID: ; 0x0224E4E0 - stmfd sp!, {r4, lr} - movs r4, r0 - bne _0224E500 - ldr r0, _0224E51C ; =0x0225A4C0 - ldr r1, _0224E520 ; =0x0225A4D0 - ldr r2, _0224E524 ; =0x02259D60 - ldr r3, _0224E528 ; =0x0000032D - bl __msl_assertion_failed -_0224E500: - ldr r0, [r4, #0x81c] - mvn r1, #0x80000000 - cmp r0, r1 - moveq r1, #1 - addne r1, r0, #1 - str r1, [r4, #0x81c] - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0224E51C: .word Unk_ov66_0225A4C0 -_0224E520: .word Unk_ov66_0225A4D0 -_0224E524: .word Unk_ov66_02259D60 -_0224E528: .word 0x0000032D - arm_func_end ciGetNextID - - arm_func_start ciCheckFiltersForID -ciCheckFiltersForID: ; 0x0224E52C - stmfd sp!, {r3, r4, r5, lr} - movs r5, r0 - mov r4, r1 - bne _0224E550 - ldr r0, _0224E59C ; =0x0225A4C0 - ldr r1, _0224E5A0 ; =0x0225A4D0 - ldr r2, _0224E5A4 ; =0x02259FB0 - mov r3, #0x340 - bl __msl_assertion_failed -_0224E550: - cmp r4, #0 - bgt _0224E56C - ldr r0, _0224E5A8 ; =0x0225A5A0 - ldr r1, _0224E5A0 ; =0x0225A4D0 - ldr r2, _0224E5A4 ; =0x02259FB0 - ldr r3, _0224E5AC ; =0x00000342 - bl __msl_assertion_failed -_0224E56C: - ldr r1, [r5, #0x814] - cmp r1, #0 - beq _0224E594 -_0224E578: - ldr r0, [r1, #0x20] - cmp r0, r4 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, [r1, #0x24] - cmp r1, #0 - bne _0224E578 -_0224E594: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0224E59C: .word Unk_ov66_0225A4C0 -_0224E5A0: .word Unk_ov66_0225A4D0 -_0224E5A4: .word Unk_ov66_02259FB0 -_0224E5A8: .word Unk_ov66_0225A5A0 -_0224E5AC: .word 0x00000342 - arm_func_end ciCheckFiltersForID - - arm_func_start ciCleanupFilters -ciCleanupFilters: ; 0x0224E5B0 - stmfd sp!, {r4, lr} - movs r4, r0 - bne _0224E5D0 - ldr r0, _0224E5F4 ; =0x0225A4C0 - ldr r1, _0224E5F8 ; =0x0225A4D0 - ldr r2, _0224E5FC ; =0x02259ED4 - ldr r3, _0224E600 ; =0x00000353 - bl __msl_assertion_failed -_0224E5D0: - ldr r1, [r4, #0x814] - cmp r1, #0 - ldmeqia sp!, {r4, pc} -_0224E5DC: - mov r0, r4 - bl ciFilterTimedout - ldr r1, [r4, #0x814] - cmp r1, #0 - bne _0224E5DC - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0224E5F4: .word Unk_ov66_0225A4C0 -_0224E5F8: .word Unk_ov66_0225A4D0 -_0224E5FC: .word Unk_ov66_02259ED4 -_0224E600: .word 0x00000353 - arm_func_end ciCleanupFilters - - arm_func_start ciAddFilter -ciAddFilter: ; 0x0224E604 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - movs r7, r0 - mov r8, r1 - mov r6, r2 - mov r5, r3 - bne _0224E630 - ldr r0, _0224E6E0 ; =0x0225A4C0 - ldr r1, _0224E6E4 ; =0x0225A4D0 - ldr r2, _0224E6E8 ; =0x02259D6C - mov r3, #0x35c - bl __msl_assertion_failed -_0224E630: - mov r0, #0x28 - bl DWCi_GsMalloc - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r1, #0 - mov r2, #0x28 - bl memset - str r8, [r4] - bl current_time - add r0, r0, #0xa60 - add r0, r0, #0xe000 - str r0, [r4, #4] - ldr r1, [sp, #0x18] - ldr r0, [sp, #0x1c] - str r1, [r4, #0x10] - str r0, [r4, #0x14] - ldr r1, [sp, #0x20] - ldr r0, [sp, #0x24] - str r1, [r4, #0x18] - str r0, [r4, #0x1c] - cmp r6, #0 - moveq r0, #0 - beq _0224E698 - mov r0, r6 - bl goastrdup -_0224E698: - str r0, [r4, #8] - cmp r5, #0 - moveq r0, #0 - beq _0224E6B0 - mov r0, r5 - bl goastrdup -_0224E6B0: - str r0, [r4, #0xc] - mov r0, r7 - bl ciGetNextID - str r0, [r4, #0x20] - ldr r0, [r7, #0x814] - cmp r0, #0 - streq r4, [r7, #0x814] - ldrne r0, [r7, #0x818] - strne r4, [r0, #0x24] - str r4, [r7, #0x818] - ldr r0, [r4, #0x20] - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_0224E6E0: .word Unk_ov66_0225A4C0 -_0224E6E4: .word Unk_ov66_0225A4D0 -_0224E6E8: .word Unk_ov66_02259D6C - arm_func_end ciAddFilter - - arm_func_start ciAddLISTFilter -ciAddLISTFilter: ; 0x0224E6EC - stmfd sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x10 - mov r7, r0 - mov r0, #0x14 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl DWCi_GsMalloc - cmp r0, #0 - addeq sp, sp, #0x10 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r3, r0 - mov r2, #5 - mov r1, #0 -_0224E728: - strb r1, [r3] - strb r1, [r3, #1] - strb r1, [r3, #2] - strb r1, [r3, #3] - add r3, r3, #4 - subs r2, r2, #1 - bne _0224E728 - str r6, [sp] - str r5, [sp, #4] - mov r1, #0 - str r4, [sp, #8] - str r0, [sp, #0xc] - mov r0, r7 - mov r2, r1 - mov r3, r1 - bl ciAddFilter - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ciAddLISTFilter - - arm_func_start ciAddJOINFilter -ciAddJOINFilter: ; 0x0224E770 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x10 - ldr r8, [sp, #0x2c] - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - cmp r8, #0 - bne _0224E7A8 - ldr r0, _0224E85C ; =0x0225A5A8 - ldr r1, _0224E860 ; =0x0225A4D0 - ldr r2, _0224E864 ; =0x02259E94 - ldr r3, _0224E868 ; =0x00000391 - bl __msl_assertion_failed -_0224E7A8: - ldr r0, [sp, #0x2c] - bl strlen - cmp r0, #0x20 - blo _0224E7CC - ldr r0, _0224E86C ; =0x0225A5BC - ldr r1, _0224E860 ; =0x0225A4D0 - ldr r2, _0224E864 ; =0x02259E94 - ldr r3, _0224E870 ; =0x00000392 - bl __msl_assertion_failed -_0224E7CC: - mov r0, #0x54 - bl DWCi_GsMalloc - movs r8, r0 - addeq sp, sp, #0x10 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r1, #0 - mov r2, #0x54 - bl memset - ldr lr, [sp, #0x28] - mov ip, r8 - ldmia lr!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - ldmia lr!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - ldmia lr, {r0, r1, r2, r3} - stmia ip, {r0, r1, r2, r3} - ldr r1, [sp, #0x2c] - add r0, r8, #0x34 - mov r2, #0x20 - bl strncpy - mov r3, #0 - strb r3, [r8, #0x53] - str r5, [sp] - mov r0, r7 - mov r2, r6 - mov r1, #1 - stmib sp, {r3, r4, r8} - bl ciAddFilter - movs r4, r0 - bne _0224E850 - mov r0, r8 - bl DWCi_GsFree -_0224E850: - mov r0, r4 - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_0224E85C: .word Unk_ov66_0225A5A8 -_0224E860: .word Unk_ov66_0225A4D0 -_0224E864: .word Unk_ov66_02259E94 -_0224E868: .word 0x00000391 -_0224E86C: .word Unk_ov66_0225A5BC -_0224E870: .word 0x00000392 - arm_func_end ciAddJOINFilter - - arm_func_start ciAddNAMESFilter -ciAddNAMESFilter: ; 0x0224E874 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x10 - mov r7, r0 - mov r0, #0x10 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl DWCi_GsMalloc - cmp r0, #0 - addeq sp, sp, #0x10 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r3, r0 - mov r2, #4 - mov r1, #0 -_0224E8B0: - strb r1, [r3] - strb r1, [r3, #1] - strb r1, [r3, #2] - strb r1, [r3, #3] - add r3, r3, #4 - subs r2, r2, #1 - bne _0224E8B0 - str r5, [sp] - mov r3, #0 - stmib sp, {r3, r4} - str r0, [sp, #0xc] - mov r0, r7 - mov r2, r6 - mov r1, #3 - bl ciAddFilter - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ciAddNAMESFilter - - arm_func_start ciAddCMODEFilter -ciAddCMODEFilter: ; 0x0224E8F4 - stmfd sp!, {r3, lr} - sub sp, sp, #0x10 - str r2, [sp] - mov ip, #0 - str ip, [sp, #4] - str r3, [sp, #8] - mov r2, r1 - mov r3, ip - mov r1, #5 - str ip, [sp, #0xc] - bl ciAddFilter - add sp, sp, #0x10 - ldmia sp!, {r3, pc} - arm_func_end ciAddCMODEFilter - - arm_func_start ciAddGETCKEYFilter -ciAddGETCKEYFilter: ; 0x0224E928 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - mov fp, r0 - mov r0, #0x10 - str r1, [sp, #0x10] - mov sl, r2 - mov sb, r3 - bl DWCi_GsMalloc - movs r7, r0 - addeq sp, sp, #0x14 - mov r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r2, r7 - mov r1, #4 -_0224E960: - strb r0, [r2] - strb r0, [r2, #1] - strb r0, [r2, #2] - strb r0, [r2, #3] - add r2, r2, #4 - subs r1, r1, #1 - bne _0224E960 - ldr r1, [sp, #0x3c] - ldr r0, [sp, #0x38] - str r1, [r7, #0xc] - str sl, [r7] - str r0, [r7, #8] - cmp r1, #0 - ldrne r0, [r7] - subne r0, r0, #1 - strne r0, [r7] - ldr r0, [r7, #0] - mov r0, r0, lsl #2 - bl DWCi_GsMalloc - str r0, [r7, #4] - cmp r0, #0 - bne _0224E9CC - mov r0, r7 - bl DWCi_GsFree - add sp, sp, #0x14 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0224E9CC: - mov r5, #0 - mov r6, r5 - cmp sl, #0 - ble _0224EA60 - ldr r4, _0224EA98 ; =0x0225A5DC -_0224E9E0: - ldr r8, [sb, r5, lsl #2] - mov r1, r4 - mov r0, r8 - bl strcmp - cmp r0, #0 - beq _0224EA54 - mov r0, r8 - bl goastrdup - ldr r1, [r7, #4] - str r0, [r1, r6, lsl #2] - ldr r0, [r7, #4] - ldr r0, [r0, r6, lsl #2] - cmp r0, #0 - bne _0224EA50 - subs r6, r6, #1 - bmi _0224EA34 -_0224EA20: - ldr r0, [r7, #4] - ldr r0, [r0, r6, lsl #2] - bl DWCi_GsFree - subs r6, r6, #1 - bpl _0224EA20 -_0224EA34: - ldr r0, [r7, #4] - bl DWCi_GsFree - mov r0, r7 - bl DWCi_GsFree - add sp, sp, #0x14 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0224EA50: - add r6, r6, #1 -_0224EA54: - add r5, r5, #1 - cmp r5, sl - blt _0224E9E0 -_0224EA60: - ldr r0, [sp, #0x40] - str r6, [r7, #0] - str r0, [sp] - mov r3, #0 - ldr r0, [sp, #0x44] - str r3, [sp, #4] - str r0, [sp, #8] - ldr r2, [sp, #0x10] - mov r0, fp - mov r1, #0xd - str r7, [sp, #0xc] - bl ciAddFilter - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0224EA98: .word Unk_ov66_0225A5DC - arm_func_end ciAddGETCKEYFilter - - arm_func_start ciAddGETCHANKEYFilter -ciAddGETCHANKEYFilter: ; 0x0224EA9C - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - mov fp, r0 - mov r0, #0xc - str r1, [sp, #0x10] - mov sl, r2 - mov sb, r3 - bl DWCi_GsMalloc - movs r7, r0 - addeq sp, sp, #0x14 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r1, #0 - strb r1, [r7] - strb r1, [r7, #1] - strb r1, [r7, #2] - strb r1, [r7, #3] - strb r1, [r7, #4] - strb r1, [r7, #5] - strb r1, [r7, #6] - strb r1, [r7, #7] - strb r1, [r7, #8] - strb r1, [r7, #9] - strb r1, [r7, #0xa] - ldr r0, [sp, #0x38] - strb r1, [r7, #0xb] - str r0, [r7, #8] - str sl, [r7] - cmp r0, #0 - ldrne r0, [r7] - subne r0, r0, #1 - strne r0, [r7] - ldr r0, [r7, #0] - cmp r0, #0 - beq _0224EBE8 - mov r0, r0, lsl #2 - bl DWCi_GsMalloc - str r0, [r7, #4] - cmp r0, #0 - bne _0224EB50 - mov r0, r7 - bl DWCi_GsFree - add sp, sp, #0x14 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0224EB50: - mov r5, #0 - mov r6, r5 - cmp sl, #0 - ble _0224EBE4 - ldr r4, _0224EC1C ; =0x0225A5DC -_0224EB64: - ldr r8, [sb, r5, lsl #2] - mov r1, r4 - mov r0, r8 - bl strcmp - cmp r0, #0 - beq _0224EBD8 - mov r0, r8 - bl goastrdup - ldr r1, [r7, #4] - str r0, [r1, r6, lsl #2] - ldr r0, [r7, #4] - ldr r0, [r0, r6, lsl #2] - cmp r0, #0 - bne _0224EBD4 - subs r6, r6, #1 - bmi _0224EBB8 -_0224EBA4: - ldr r0, [r7, #4] - ldr r0, [r0, r6, lsl #2] - bl DWCi_GsFree - subs r6, r6, #1 - bpl _0224EBA4 -_0224EBB8: - ldr r0, [r7, #4] - bl DWCi_GsFree - mov r0, r7 - bl DWCi_GsFree - add sp, sp, #0x14 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0224EBD4: - add r6, r6, #1 -_0224EBD8: - add r5, r5, #1 - cmp r5, sl - blt _0224EB64 -_0224EBE4: - str r6, [r7, #0] -_0224EBE8: - ldr r1, [sp, #0x3c] - ldr r0, [sp, #0x40] - str r1, [sp] - mov r3, #0 - str r3, [sp, #4] - str r0, [sp, #8] - ldr r2, [sp, #0x10] - mov r0, fp - mov r1, #0xe - str r7, [sp, #0xc] - bl ciAddFilter - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0224EC1C: .word Unk_ov66_0225A5DC - arm_func_end ciAddGETCHANKEYFilter - - arm_func_start ciParseMode -ciParseMode: ; 0x0224EC20 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - mov r3, #0 - str r3, [sp, #4] - movs fp, r0 - str r1, [sp] - mov sb, r2 - mov r8, r3 - mov r7, r3 - bne _0224EC5C - ldr r0, _0224EEC4 ; =0x0225A5E0 - ldr r1, _0224EEC8 ; =0x0225A4D0 - ldr r2, _0224EECC ; =0x02259D78 - ldr r3, _0224EED0 ; =0x00000494 - bl __msl_assertion_failed -_0224EC5C: - ldrsb r0, [fp] - cmp r0, #0x2b - moveq sl, #1 - beq _0224EC84 - cmp r0, #0x2d - moveq sl, #0 - beq _0224EC84 - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0224EC84: - add fp, fp, #1 - mvn r4, #0 -_0224EC8C: - ldrsb r5, [fp], #1 - cmp r5, #0x2d - bgt _0224ECBC - cmp r5, #0x2b - blt _0224ECB0 - beq _0224ED28 - cmp r5, #0x2d - beq _0224ED34 - b _0224EDF4 -_0224ECB0: - cmp r5, #0 - beq _0224ED40 - b _0224EDF4 -_0224ECBC: - cmp r5, #0x62 - bgt _0224ECCC - beq _0224EDC4 - b _0224EDF4 -_0224ECCC: - sub r0, r5, #0x65 - cmp r0, #0x12 - addls pc, pc, r0, lsl #2 - b _0224EDF4 -_0224ECDC: ; jump table - b _0224EDE8 ; case 0 - b _0224EDF4 ; case 1 - b _0224EDF4 ; case 2 - b _0224EDF4 ; case 3 - b _0224ED4C ; case 4 - b _0224EDF4 ; case 5 - b _0224ED7C ; case 6 - b _0224ED58 ; case 7 - b _0224ED88 ; case 8 - b _0224ED94 ; case 9 - b _0224EDAC ; case 10 - b _0224ED64 ; case 11 - b _0224EDF4 ; case 12 - b _0224EDF4 ; case 13 - b _0224ED70 ; case 14 - b _0224EDA0 ; case 15 - b _0224EDD0 ; case 16 - b _0224EDB8 ; case 17 - b _0224EDDC ; case 18 -_0224ED28: - mov sl, #1 - mov r6, r4 - b _0224EDF8 -_0224ED34: - mov sl, #0 - mov r6, r4 - b _0224EDF8 -_0224ED40: - mov r6, #0 - mov r7, r6 - b _0224EDF8 -_0224ED4C: - mov r6, #2 - mov r7, #0 - b _0224EDF8 -_0224ED58: - mov r6, #3 - mov r7, #1 - b _0224EDF8 -_0224ED64: - mov r6, #4 - mov r7, #0 - b _0224EDF8 -_0224ED70: - mov r6, #5 - mov r7, #0 - b _0224EDF8 -_0224ED7C: - mov r6, #6 - mov r7, #1 - b _0224EDF8 -_0224ED88: - mov r6, #7 - mov r7, #0 - b _0224EDF8 -_0224ED94: - mov r6, #8 - mov r7, #0 - b _0224EDF8 -_0224EDA0: - mov r6, #9 - mov r7, #0 - b _0224EDF8 -_0224EDAC: - mov r6, #0xa - mov r7, #1 - b _0224EDF8 -_0224EDB8: - mov r6, #0xb - mov r7, #1 - b _0224EDF8 -_0224EDC4: - mov r6, #1 - mov r7, r6 - b _0224EDF8 -_0224EDD0: - mov r6, #0xc - mov r7, #0 - b _0224EDF8 -_0224EDDC: - mov r6, #0xd - mov r7, #0 - b _0224EDF8 -_0224EDE8: - mov r6, #0xe - mov r7, #0 - b _0224EDF8 -_0224EDF4: - mov r6, r4 -_0224EDF8: - cmp r6, r4 - beq _0224EEB0 - add r2, r8, #1 - mov r1, #0xc - mul r1, r2, r1 - ldr r0, [sp, #4] - bl DWCi_GsRealloc - cmp r0, #0 - bne _0224EE30 - ldr r0, [sp, #4] - bl DWCi_GsFree - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0224EE30: - mov r1, #0xc - mul r1, r8, r1 - mov r2, #0 - strb r2, [r0, r1] - add r2, r0, r1 - mov r3, #0 - strb r3, [r2, #1] - strb r3, [r2, #2] - strb r3, [r2, #3] - strb r3, [r2, #4] - strb r3, [r2, #5] - strb r3, [r2, #6] - strb r3, [r2, #7] - strb r3, [r2, #8] - strb r3, [r2, #9] - strb r3, [r2, #0xa] - strb r3, [r2, #0xb] - str sl, [r2, #4] - cmp r7, #0 - str r0, [sp, #4] - add r8, r8, #1 - str r6, [r0, r1] - beq _0224EEB0 - cmp sb, #0 - movle r0, r3 - strle r0, [r2, #8] - ble _0224EEB0 - ldr r0, [sp] - sub sb, sb, #1 - ldr r1, [r0, #0], #4 - str r0, [sp] - str r1, [r2, #8] -_0224EEB0: - cmp r5, #0 - bne _0224EC8C - ldr r0, [sp, #4] - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0224EEC4: .word Unk_ov66_0225A5E0 -_0224EEC8: .word Unk_ov66_0225A4D0 -_0224EECC: .word Unk_ov66_02259D78 -_0224EED0: .word 0x00000494 - arm_func_end ciParseMode - - arm_func_start ciApplyChangesToMode -ciApplyChangesToMode: ; 0x0224EED4 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov r8, r1 - ldr r1, [r8] - mov sb, r0 - cmp r1, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldr r6, _0224EFE8 ; =0x0225A590 - ldr r5, _0224EFEC ; =0x0225A4D0 - ldr r4, _0224EFF0 ; =0x0225A028 - ldr sl, _0224EFF4 ; =0x0000056C - mov r7, #0 -_0224EF00: - ldr r0, [r8] - cmp r0, #0xe - addls pc, pc, r0, lsl #2 - b _0224EFC4 -_0224EF10: ; jump table - b _0224EFC4 ; case 0 - b _0224EFD8 ; case 1 - b _0224EF4C ; case 2 - b _0224EF58 ; case 3 - b _0224EF7C ; case 4 - b _0224EF88 ; case 5 - b _0224EFD8 ; case 6 - b _0224EF94 ; case 7 - b _0224EFA0 ; case 8 - b _0224EFAC ; case 9 - b _0224EFD8 ; case 10 - b _0224EFD8 ; case 11 - b _0224EFD8 ; case 12 - b _0224EFD8 ; case 13 - b _0224EFB8 ; case 14 -_0224EF4C: - ldr r0, [r8, #4] - str r0, [sb] - b _0224EFD8 -_0224EF58: - ldr r0, [r8, #4] - cmp r0, #0 - ldrne r0, [r8, #8] - cmpne r0, #0 - streq r7, [sb, #0x1c] - beq _0224EFD8 - bl atoi - str r0, [sb, #0x1c] - b _0224EFD8 -_0224EF7C: - ldr r0, [r8, #4] - str r0, [sb, #4] - b _0224EFD8 -_0224EF88: - ldr r0, [r8, #4] - str r0, [sb, #8] - b _0224EFD8 -_0224EF94: - ldr r0, [r8, #4] - str r0, [sb, #0xc] - b _0224EFD8 -_0224EFA0: - ldr r0, [r8, #4] - str r0, [sb, #0x10] - b _0224EFD8 -_0224EFAC: - ldr r0, [r8, #4] - str r0, [sb, #0x14] - b _0224EFD8 -_0224EFB8: - ldr r0, [r8, #4] - str r0, [sb, #0x18] - b _0224EFD8 -_0224EFC4: - mov r0, r6 - mov r1, r5 - mov r2, r4 - mov r3, sl - bl __msl_assertion_failed -_0224EFD8: - ldr r0, [r8, #0xc]! - cmp r0, #0 - bne _0224EF00 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ; .align 2, 0 -_0224EFE8: .word Unk_ov66_0225A590 -_0224EFEC: .word Unk_ov66_0225A4D0 -_0224EFF0: .word Unk_ov66_0225A028 -_0224EFF4: .word 0x0000056C - arm_func_end ciApplyChangesToMode - - arm_func_start ciPrivmsgHandler -ciPrivmsgHandler: ; 0x0224EFF8 - stmfd sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x2c - movs sb, r0 - mov r4, r1 - mov r7, #0 - bne _0224F024 - ldr r0, _0224F1EC ; =0x0225A4C0 - ldr r1, _0224F1F0 ; =0x0225A4D0 - ldr r2, _0224F1F4 ; =0x02259EE8 - ldr r3, _0224F1F8 ; =0x0000057C - bl __msl_assertion_failed -_0224F024: - ldr r0, [r4, #0x24] - cmp r0, #2 - beq _0224F044 - ldr r0, _0224F1FC ; =0x0225A5F0 - ldr r1, _0224F1F0 ; =0x0225A4D0 - ldr r2, _0224F1F4 ; =0x02259EE8 - ldr r3, _0224F200 ; =0x00000582 - bl __msl_assertion_failed -_0224F044: - ldr r0, [r4, #0x24] - cmp r0, #2 - addne sp, sp, #0x2c - ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc} - ldr r0, [r4, #0x20] - ldr r6, [r4, #8] - ldmia r0, {r5, r8} - mov r0, r8 - bl strlen - ldrsb r1, [r8] - ldr r4, _0224F204 ; =0x0225A608 - cmp r1, #1 - bne _0224F0D8 - ldrsb r1, [r8, #1] - cmp r1, #0x41 - blt _0224F08C - cmp r1, #0x5a - ble _0224F09C -_0224F08C: - cmp r1, #0x61 - blt _0224F0D8 - cmp r1, #0x7a - bgt _0224F0D8 -_0224F09C: - sub r3, r0, #1 - ldrsb r0, [r8, r3] - cmp r0, #1 - bne _0224F0D8 - mov r2, #0 - mov r0, r8 - mov r1, #0x20 - strb r2, [r8, r3] - bl strchr - cmp r0, #0 - beq _0224F0D8 - mov r1, #0 - add r4, r8, #1 - strb r1, [r0] - add r8, r0, #1 -_0224F0D8: - ldr r1, _0224F208 ; =0x0225A60C - mov r0, r4 - bl strcmp - cmp r0, #0 - moveq r7, #1 - beq _0224F100 - ldrsb r0, [r4] - cmp r0, #0 - addne sp, sp, #0x2c - ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc} -_0224F100: - mov r0, r5 - add r1, sb, #0x36c - bl strcasecmp - cmp r0, #0 - bne _0224F178 - ldr r0, [sb, #0x800] - cmp r0, #0 - addeq sp, sp, #0x2c - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} - cmp r7, #0 - movne r0, #1 - strne r0, [sp, #0x28] - moveq r0, #0 - streq r0, [sp, #0x28] - str r6, [sp, #0x20] - str r8, [sp, #0x24] - ldr r1, [sb, #0x808] - mov r0, #0 - str r1, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - mov r0, #0xc - str r0, [sp, #0xc] - ldr r2, [sb, #0x800] - add r3, sp, #0x20 - mov r0, sb - mov r1, #2 - bl ciAddCallback_ - add sp, sp, #0x2c - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_0224F178: - mov r0, sb - mov r1, r5 - bl ciGetChannelCallbacks - cmp r0, #0 - ldrne r1, [r0] - cmpne r1, #0 - addeq sp, sp, #0x2c - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} - cmp r7, #0 - movne r1, #1 - strne r1, [sp, #0x1c] - moveq r1, #0 - streq r1, [sp, #0x1c] - str r5, [sp, #0x10] - str r6, [sp, #0x14] - str r8, [sp, #0x18] - ldr r2, [r0, #0x2c] - mov r1, #0 - str r2, [sp] - stmib sp, {r1, r5} - mov r1, #0x10 - str r1, [sp, #0xc] - ldr r2, [r0, #0] - add r3, sp, #0x10 - mov r0, sb - mov r1, #4 - bl ciAddCallback_ - add sp, sp, #0x2c - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - ; .align 2, 0 -_0224F1EC: .word Unk_ov66_0225A4C0 -_0224F1F0: .word Unk_ov66_0225A4D0 -_0224F1F4: .word Unk_ov66_02259EE8 -_0224F1F8: .word 0x0000057C -_0224F1FC: .word Unk_ov66_0225A5F0 -_0224F200: .word 0x00000582 -_0224F204: .word Unk_ov66_0225A608 -_0224F208: .word Unk_ov66_0225A60C - arm_func_end ciPrivmsgHandler - - arm_func_start ciNoticeHandler -ciNoticeHandler: ; 0x0224F20C - stmfd sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x2c - movs r7, r0 - mov r6, r1 - bne _0224F234 - ldr r0, _0224F35C ; =0x0225A4C0 - ldr r1, _0224F360 ; =0x0225A4D0 - ldr r2, _0224F364 ; =0x02259EA4 - ldr r3, _0224F368 ; =0x000005EA - bl __msl_assertion_failed -_0224F234: - ldr r0, [r6, #0x24] - cmp r0, #2 - beq _0224F254 - ldr r0, _0224F36C ; =0x0225A5F0 - ldr r1, _0224F360 ; =0x0225A4D0 - ldr r2, _0224F364 ; =0x02259EA4 - mov r3, #0x5f0 - bl __msl_assertion_failed -_0224F254: - ldr r0, [r6, #0x24] - cmp r0, #2 - addne sp, sp, #0x2c - ldmneia sp!, {r4, r5, r6, r7, pc} - ldr r0, [r6, #0x20] - add r1, r7, #0x36c - ldmia r0, {r4, r5} - mov r0, r4 - bl strcasecmp - cmp r0, #0 - bne _0224F2E4 - ldr r0, [r7, #0x800] - cmp r0, #0 - addeq sp, sp, #0x2c - ldmeqia sp!, {r4, r5, r6, r7, pc} - ldr r0, [r6, #8] - mov r1, #2 - cmp r0, #0 - strne r0, [sp, #0x20] - moveq r0, #0 - streq r0, [sp, #0x20] - str r5, [sp, #0x24] - str r1, [sp, #0x28] - ldr r2, [r7, #0x808] - mov r0, #0 - str r2, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - mov r0, #0xc - str r0, [sp, #0xc] - ldr r2, [r7, #0x800] - add r3, sp, #0x20 - mov r0, r7 - bl ciAddCallback_ - add sp, sp, #0x2c - ldmia sp!, {r4, r5, r6, r7, pc} -_0224F2E4: - mov r0, r7 - mov r1, r4 - bl ciGetChannelCallbacks - cmp r0, #0 - ldrne r1, [r0] - cmpne r1, #0 - addeq sp, sp, #0x2c - ldmeqia sp!, {r4, r5, r6, r7, pc} - str r4, [sp, #0x10] - ldr r1, [r6, #8] - add r3, sp, #0x10 - cmp r1, #0 - strne r1, [sp, #0x14] - moveq r1, #0 - streq r1, [sp, #0x14] - mov r1, #2 - str r1, [sp, #0x1c] - str r5, [sp, #0x18] - ldr r2, [r0, #0x2c] - mov r1, #0 - str r2, [sp] - stmib sp, {r1, r4} - mov r1, #0x10 - str r1, [sp, #0xc] - ldr r2, [r0, #0] - mov r0, r7 - mov r1, #4 - bl ciAddCallback_ - add sp, sp, #0x2c - ldmia sp!, {r4, r5, r6, r7, pc} - ; .align 2, 0 -_0224F35C: .word Unk_ov66_0225A4C0 -_0224F360: .word Unk_ov66_0225A4D0 -_0224F364: .word Unk_ov66_02259EA4 -_0224F368: .word 0x000005EA -_0224F36C: .word Unk_ov66_0225A5F0 - arm_func_end ciNoticeHandler - - arm_func_start ciUTMHandler -ciUTMHandler: ; 0x0224F370 - stmfd sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x2c - movs r7, r0 - mov r6, r1 - bne _0224F398 - ldr r0, _0224F4C4 ; =0x0225A4C0 - ldr r1, _0224F4C8 ; =0x0225A4D0 - ldr r2, _0224F4CC ; =0x02259D94 - ldr r3, _0224F4D0 ; =0x0000061F - bl __msl_assertion_failed -_0224F398: - ldr r0, [r6, #0x24] - cmp r0, #2 - beq _0224F3B8 - ldr r0, _0224F4D4 ; =0x0225A5F0 - ldr r1, _0224F4C8 ; =0x0225A4D0 - ldr r2, _0224F4CC ; =0x02259D94 - ldr r3, _0224F4D8 ; =0x00000625 - bl __msl_assertion_failed -_0224F3B8: - ldr r0, [r6, #0x24] - cmp r0, #2 - addne sp, sp, #0x2c - ldmneia sp!, {r4, r5, r6, r7, pc} - ldr r0, [r6, #0x20] - add r1, r7, #0x36c - ldmia r0, {r4, r5} - mov r0, r4 - bl strcasecmp - cmp r0, #0 - bne _0224F44C - ldr r0, [r7, #0x800] - cmp r0, #0 - addeq sp, sp, #0x2c - ldmeqia sp!, {r4, r5, r6, r7, pc} - ldr r0, [r6, #8] - add r3, sp, #0x20 - cmp r0, #0 - strne r0, [sp, #0x20] - moveq r0, #0 - streq r0, [sp, #0x20] - mov r0, #3 - str r0, [sp, #0x28] - str r5, [sp, #0x24] - ldr r1, [r7, #0x808] - mov r0, #0 - str r1, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - mov r0, #0xc - str r0, [sp, #0xc] - ldr r2, [r7, #0x800] - mov r0, r7 - mov r1, #2 - bl ciAddCallback_ - add sp, sp, #0x2c - ldmia sp!, {r4, r5, r6, r7, pc} -_0224F44C: - mov r0, r7 - mov r1, r4 - bl ciGetChannelCallbacks - cmp r0, #0 - ldrne r1, [r0] - cmpne r1, #0 - addeq sp, sp, #0x2c - ldmeqia sp!, {r4, r5, r6, r7, pc} - str r4, [sp, #0x10] - ldr r1, [r6, #8] - add r3, sp, #0x10 - cmp r1, #0 - strne r1, [sp, #0x14] - moveq r1, #0 - streq r1, [sp, #0x14] - mov r1, #3 - str r1, [sp, #0x1c] - str r5, [sp, #0x18] - ldr r2, [r0, #0x2c] - mov r1, #0 - str r2, [sp] - stmib sp, {r1, r4} - mov r1, #0x10 - str r1, [sp, #0xc] - ldr r2, [r0, #0] - mov r0, r7 - mov r1, #4 - bl ciAddCallback_ - add sp, sp, #0x2c - ldmia sp!, {r4, r5, r6, r7, pc} - ; .align 2, 0 -_0224F4C4: .word Unk_ov66_0225A4C0 -_0224F4C8: .word Unk_ov66_0225A4D0 -_0224F4CC: .word Unk_ov66_02259D94 -_0224F4D0: .word 0x0000061F -_0224F4D4: .word Unk_ov66_0225A5F0 -_0224F4D8: .word 0x00000625 - arm_func_end ciUTMHandler - - arm_func_start ciATMHandler -ciATMHandler: ; 0x0224F4DC - stmfd sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x2c - movs r7, r0 - mov r6, r1 - bne _0224F504 - ldr r0, _0224F62C ; =0x0225A4C0 - ldr r1, _0224F630 ; =0x0225A4D0 - ldr r2, _0224F634 ; =0x02259DA4 - ldr r3, _0224F638 ; =0x00000654 - bl __msl_assertion_failed -_0224F504: - ldr r0, [r6, #0x24] - cmp r0, #2 - beq _0224F524 - ldr r0, _0224F63C ; =0x0225A5F0 - ldr r1, _0224F630 ; =0x0225A4D0 - ldr r2, _0224F634 ; =0x02259DA4 - ldr r3, _0224F640 ; =0x0000065A - bl __msl_assertion_failed -_0224F524: - ldr r0, [r6, #0x24] - cmp r0, #2 - addne sp, sp, #0x2c - ldmneia sp!, {r4, r5, r6, r7, pc} - ldr r0, [r6, #0x20] - add r1, r7, #0x36c - ldmia r0, {r4, r5} - mov r0, r4 - bl strcasecmp - cmp r0, #0 - bne _0224F5B8 - ldr r0, [r7, #0x800] - cmp r0, #0 - addeq sp, sp, #0x2c - ldmeqia sp!, {r4, r5, r6, r7, pc} - ldr r0, [r6, #8] - add r3, sp, #0x20 - cmp r0, #0 - strne r0, [sp, #0x20] - moveq r0, #0 - streq r0, [sp, #0x20] - mov r0, #4 - str r0, [sp, #0x28] - str r5, [sp, #0x24] - ldr r1, [r7, #0x808] - mov r0, #0 - str r1, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - mov r0, #0xc - str r0, [sp, #0xc] - ldr r2, [r7, #0x800] - mov r0, r7 - mov r1, #2 - bl ciAddCallback_ - add sp, sp, #0x2c - ldmia sp!, {r4, r5, r6, r7, pc} -_0224F5B8: - mov r0, r7 - mov r1, r4 - bl ciGetChannelCallbacks - cmp r0, #0 - ldrne r1, [r0] - cmpne r1, #0 - addeq sp, sp, #0x2c - ldmeqia sp!, {r4, r5, r6, r7, pc} - str r4, [sp, #0x10] - ldr r1, [r6, #8] - mov r2, #0 - cmp r1, #0 - strne r1, [sp, #0x14] - moveq r1, #0 - streq r1, [sp, #0x14] - mov r1, #4 - str r5, [sp, #0x18] - str r1, [sp, #0x1c] - ldr r3, [r0, #0x2c] - str r3, [sp] - stmib sp, {r2, r4} - mov r2, #0x10 - str r2, [sp, #0xc] - ldr r2, [r0, #0] - add r3, sp, #0x10 - mov r0, r7 - bl ciAddCallback_ - add sp, sp, #0x2c - ldmia sp!, {r4, r5, r6, r7, pc} - ; .align 2, 0 -_0224F62C: .word Unk_ov66_0225A4C0 -_0224F630: .word Unk_ov66_0225A4D0 -_0224F634: .word Unk_ov66_02259DA4 -_0224F638: .word 0x00000654 -_0224F63C: .word Unk_ov66_0225A5F0 -_0224F640: .word 0x0000065A - arm_func_end ciATMHandler - - arm_func_start ciPingHandler -ciPingHandler: ; 0x0224F644 - stmfd sp!, {r3, r4, r5, lr} - movs r5, r0 - mov r4, r1 - bne _0224F668 - ldr r0, _0224F67C ; =0x0225A4C0 - ldr r1, _0224F680 ; =0x0225A4D0 - ldr r2, _0224F684 ; =0x02259DD4 - ldr r3, _0224F688 ; =0x00000687 - bl __msl_assertion_failed -_0224F668: - ldr r2, [r4, #0x1c] - ldr r1, _0224F68C ; =0x0225A614 - add r0, r5, #0x1c - bl ciSocketSendf - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0224F67C: .word Unk_ov66_0225A4C0 -_0224F680: .word Unk_ov66_0225A4D0 -_0224F684: .word Unk_ov66_02259DD4 -_0224F688: .word 0x00000687 -_0224F68C: .word Unk_ov66_0225A614 - arm_func_end ciPingHandler - - arm_func_start ciNickHandler -ciNickHandler: ; 0x0224F690 - stmfd sp!, {r4, r5, r6, lr} - sub sp, sp, #0x18 - movs r4, r0 - mov r6, r1 - bne _0224F6B8 - ldr r0, _0224F7AC ; =0x0225A4C0 - ldr r1, _0224F7B0 ; =0x0225A4D0 - ldr r2, _0224F7B4 ; =0x02259DE4 - ldr r3, _0224F7B8 ; =0x00000694 - bl __msl_assertion_failed -_0224F6B8: - ldr r0, [r6, #0x24] - cmp r0, #1 - beq _0224F6D8 - ldr r0, _0224F7BC ; =0x0225A61C - ldr r1, _0224F7B0 ; =0x0225A4D0 - ldr r2, _0224F7B4 ; =0x02259DE4 - ldr r3, _0224F7C0 ; =0x0000069A - bl __msl_assertion_failed -_0224F6D8: - ldr r0, [r6, #0x24] - cmp r0, #1 - addne sp, sp, #0x18 - ldmneia sp!, {r4, r5, r6, pc} - ldr r5, [r6, #8] - ldr r2, [r6, #0x20] - mov r0, r5 - add r1, r4, #0x36c - ldr r6, [r2, #0] - bl strcasecmp - cmp r0, #0 - bne _0224F794 - mov r0, r6 - bl strlen - cmp r0, #0x40 - blo _0224F72C - ldr r0, _0224F7C4 ; =0x0225A634 - ldr r1, _0224F7B0 ; =0x0225A4D0 - ldr r2, _0224F7B4 ; =0x02259DE4 - ldr r3, _0224F7C8 ; =0x000006AA - bl __msl_assertion_failed -_0224F72C: - mov r1, r6 - add r0, r4, #0x36c - mov r2, #0x40 - bl strncpy - mov r1, #0 - add r2, sp, #0xc - strb r1, [r4, #0x3ab] - str r1, [r2, #4] - str r1, [r2, #8] - str r1, [r2, #0] - mov r3, #9 - mov r0, r4 - mov r1, #1 - str r3, [sp, #0xc] - str r5, [sp, #0x10] - str r6, [sp, #0x14] - bl ciFindFilter - movs r1, r0 - beq _0224F794 - mov r3, #1 - add r2, sp, #0 - mov r0, r4 - str r3, [sp] - str r5, [sp, #4] - str r6, [sp, #8] - bl ciFinishFilter -_0224F794: - mov r0, r4 - mov r1, r5 - mov r2, r6 - bl ciUserChangedNick - add sp, sp, #0x18 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_0224F7AC: .word Unk_ov66_0225A4C0 -_0224F7B0: .word Unk_ov66_0225A4D0 -_0224F7B4: .word Unk_ov66_02259DE4 -_0224F7B8: .word 0x00000694 -_0224F7BC: .word Unk_ov66_0225A61C -_0224F7C0: .word 0x0000069A -_0224F7C4: .word Unk_ov66_0225A634 -_0224F7C8: .word 0x000006AA - arm_func_end ciNickHandler - - arm_func_start ciJoinHandler -ciJoinHandler: ; 0x0224F7CC - stmfd sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x2c - movs r4, r0 - mov r8, r1 - bne _0224F7F4 - ldr r0, _0224FA24 ; =0x0225A4C0 - ldr r1, _0224FA28 ; =0x0225A4D0 - ldr r2, _0224FA2C ; =0x02259DF4 - ldr r3, _0224FA30 ; =0x000006D6 - bl __msl_assertion_failed -_0224F7F4: - ldr r0, [r8, #0x24] - cmp r0, #1 - beq _0224F814 - ldr r0, _0224FA34 ; =0x0225A61C - ldr r1, _0224FA28 ; =0x0225A4D0 - ldr r2, _0224FA2C ; =0x02259DF4 - ldr r3, _0224FA38 ; =0x000006DC - bl __msl_assertion_failed -_0224F814: - ldr r0, [r8, #0x24] - cmp r0, #1 - addne sp, sp, #0x2c - ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc} - ldr r6, [r8, #8] - ldr r1, [r8, #0x20] - ldrsb r0, [r6] - ldr r5, [r1, #0] - ldr r7, [r8, #0xc] - cmp r0, #0x40 - ldr r8, [r8, #0x10] - bne _0224F86C - ldrsb r0, [r6, #1]! - mov sb, #2 - cmp r0, #0 - bne _0224F8A0 - ldr r0, _0224FA3C ; =0x0225A650 - ldr r1, _0224FA28 ; =0x0225A4D0 - ldr r2, _0224FA2C ; =0x02259DF4 - ldr r3, _0224FA40 ; =0x000006EB - bl __msl_assertion_failed - b _0224F8A0 -_0224F86C: - cmp r0, #0x2b - bne _0224F89C - ldrsb r0, [r6, #1]! - mov sb, #1 - cmp r0, #0 - bne _0224F8A0 - ldr r0, _0224FA3C ; =0x0225A650 - ldr r1, _0224FA28 ; =0x0225A4D0 - ldr r2, _0224FA2C ; =0x02259DF4 - add r3, sb, #0x6f0 - bl __msl_assertion_failed - b _0224F8A0 -_0224F89C: - mov sb, #0 -_0224F8A0: - mov r0, r6 - add r1, r4, #0x36c - bl strcmp - cmp r0, #0 - mov r0, r4 - mov r1, r5 - bne _0224F944 - bl ciIsEnteringChannel - cmp r0, #0 - addeq sp, sp, #0x2c - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} - add r2, sp, #0x20 - mov r3, #0 - str r3, [r2, #4] - mov r0, r4 - str r3, [r2, #0] - mov r1, #1 - str r3, [r2, #8] - str r1, [sp, #0x20] - str r5, [sp, #0x24] - bl ciFindFilter - cmp r0, #0 - addeq sp, sp, #0x2c - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} - ldr r6, [r0, #0x1c] - mov r0, r4 - mov r1, r5 - mov r2, r6 - bl ciChannelEntered - mov r0, r4 - mov r1, r5 - add r2, r6, #0x34 - bl ciSetChannelPassword - mov r3, #1 - ldr r1, _0224FA44 ; =0x0225A660 - mov r2, r5 - add r0, r4, #0x1c - str r3, [r6, #0x30] - bl ciSocketSendf - add sp, sp, #0x2c - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_0224F944: - bl ciInChannel - cmp r0, #0 - beq _0224F968 - mov r0, r4 - mov r1, r6 - mov r2, r5 - mov r3, sb - stmia sp, {r7, r8} - bl ciUserEnteredChannel -_0224F968: - mov r0, r4 - mov r1, r5 - bl ciWasJoinCallbackCalled - cmp r0, #0 - addeq sp, sp, #0x2c - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} - mov r0, r4 - mov r1, r5 - bl ciGetChannelCallbacks - movs r7, r0 - addeq sp, sp, #0x2c - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} - ldr r0, [r7, #8] - cmp r0, #0 - beq _0224F9DC - str r5, [sp, #0x14] - str r6, [sp, #0x18] - str sb, [sp, #0x1c] - ldr r1, [r7, #0x2c] - mov r0, #0 - str r1, [sp] - stmib sp, {r0, r5} - mov r0, #0xc - str r0, [sp, #0xc] - ldr r2, [r7, #8] - add r3, sp, #0x14 - mov r0, r4 - mov r1, #6 - bl ciAddCallback_ -_0224F9DC: - ldr r0, [r7, #0x20] - cmp r0, #0 - addeq sp, sp, #0x2c - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} - str r5, [sp, #0x10] - ldr r1, [r7, #0x2c] - mov r0, #0 - str r1, [sp] - stmib sp, {r0, r5} - mov r0, #4 - str r0, [sp, #0xc] - ldr r2, [r7, #0x20] - add r3, sp, #0x10 - mov r0, r4 - mov r1, #0xc - bl ciAddCallback_ - add sp, sp, #0x2c - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - ; .align 2, 0 -_0224FA24: .word Unk_ov66_0225A4C0 -_0224FA28: .word Unk_ov66_0225A4D0 -_0224FA2C: .word Unk_ov66_02259DF4 -_0224FA30: .word 0x000006D6 -_0224FA34: .word Unk_ov66_0225A61C -_0224FA38: .word 0x000006DC -_0224FA3C: .word Unk_ov66_0225A650 -_0224FA40: .word 0x000006EB -_0224FA44: .word Unk_ov66_0225A660 - arm_func_end ciJoinHandler - - arm_func_start ciPartHandler -ciPartHandler: ; 0x0224FA48 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x28 - movs r7, r0 - mov r4, r1 - bne _0224FA70 - ldr r0, _0224FB74 ; =0x0225A4C0 - ldr r1, _0224FB78 ; =0x0225A4D0 - ldr r2, _0224FB7C ; =0x02259E04 - ldr r3, _0224FB80 ; =0x00000752 - bl __msl_assertion_failed -_0224FA70: - ldr r1, [r4, #0x20] - ldr r0, [r4, #0x24] - ldr r4, [r4, #8] - cmp r0, #1 - ldrgt r8, [r1, #4] - ldr r5, [r1, #0] - ldrle r8, _0224FB84 ; =0x0225A608 - mov r0, r4 - add r1, r7, #0x36c - bl strcmp - cmp r0, #0 - addeq sp, sp, #0x28 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, r7 - mov r1, r4 - mov r2, r5 - bl ciUserLeftChannel - mov r0, r7 - mov r1, r5 - bl ciWasJoinCallbackCalled - cmp r0, #0 - addeq sp, sp, #0x28 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, r7 - mov r1, r5 - bl ciGetChannelCallbacks - movs r6, r0 - addeq sp, sp, #0x28 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldr r0, [r6, #0xc] - cmp r0, #0 - beq _0224FB2C - mov r2, #0 - str r5, [sp, #0x14] - str r4, [sp, #0x18] - str r2, [sp, #0x1c] - str r8, [sp, #0x20] - str r2, [sp, #0x24] - ldr r1, [r6, #0x2c] - mov r0, #0x14 - stmia sp, {r1, r2, r5} - str r0, [sp, #0xc] - ldr r2, [r6, #0xc] - add r3, sp, #0x14 - mov r0, r7 - mov r1, #7 - bl ciAddCallback_ -_0224FB2C: - ldr r0, [r6, #0x20] - cmp r0, #0 - addeq sp, sp, #0x28 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - str r5, [sp, #0x10] - ldr r1, [r6, #0x2c] - mov r0, #0 - str r1, [sp] - stmib sp, {r0, r5} - mov r0, #4 - str r0, [sp, #0xc] - ldr r2, [r6, #0x20] - add r3, sp, #0x10 - mov r0, r7 - mov r1, #0xc - bl ciAddCallback_ - add sp, sp, #0x28 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_0224FB74: .word Unk_ov66_0225A4C0 -_0224FB78: .word Unk_ov66_0225A4D0 -_0224FB7C: .word Unk_ov66_02259E04 -_0224FB80: .word 0x00000752 -_0224FB84: .word Unk_ov66_0225A608 - arm_func_end ciPartHandler - - arm_func_start ciKickHandler -ciKickHandler: ; 0x0224FB88 - stmfd sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x34 - movs sb, r0 - mov r5, r1 - bne _0224FBB0 - ldr r0, _0224FD54 ; =0x0225A4C0 - ldr r1, _0224FD58 ; =0x0225A4D0 - ldr r2, _0224FD5C ; =0x02259E14 - ldr r3, _0224FD60 ; =0x00000794 - bl __msl_assertion_failed -_0224FBB0: - ldr r0, [r5, #0x24] - mov r1, #1 - cmp r0, #2 - cmpne r0, #3 - movne r1, #0 - cmp r1, #0 - bne _0224FBE0 - ldr r0, _0224FD64 ; =0x0225A668 - ldr r1, _0224FD58 ; =0x0225A4D0 - ldr r2, _0224FD5C ; =0x02259E14 - ldr r3, _0224FD68 ; =0x0000079A - bl __msl_assertion_failed -_0224FBE0: - ldr r1, [r5, #0x24] - cmp r1, #2 - cmpne r1, #3 - addne sp, sp, #0x34 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc} - ldr r0, [r5, #0x20] - cmp r1, #3 - ldreq r8, [r0, #8] - ldmia r0, {r4, r6} - mov r0, sb - mov r1, r6 - mov r2, r4 - ldr r5, [r5, #8] - ldrne r8, _0224FD6C ; =0x0225A608 - bl ciUserLeftChannel - mov r0, sb - mov r1, r4 - bl ciGetChannelCallbacks - movs r7, r0 - addeq sp, sp, #0x34 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} - mov r0, r6 - add r1, sb, #0x36c - bl strcasecmp - cmp r0, #0 - bne _0224FCA4 - ldr r0, [r7, #4] - cmp r0, #0 - beq _0224FC90 - str r4, [sp, #0x28] - str r5, [sp, #0x2c] - str r8, [sp, #0x30] - ldr r1, [r7, #0x2c] - mov r0, #0 - str r1, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - mov r0, #0xc - str r0, [sp, #0xc] - ldr r2, [r7, #4] - add r3, sp, #0x28 - mov r0, sb - mov r1, #5 - bl ciAddCallback_ -_0224FC90: - mov r0, sb - mov r1, r4 - bl ciChannelLeft - add sp, sp, #0x34 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_0224FCA4: - mov r0, sb - mov r1, r4 - bl ciWasJoinCallbackCalled - cmp r0, #0 - addeq sp, sp, #0x34 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} - ldr r0, [r7, #0xc] - cmp r0, #0 - beq _0224FD0C - mov r0, #2 - str r0, [sp, #0x1c] - str r4, [sp, #0x14] - str r6, [sp, #0x18] - str r8, [sp, #0x20] - str r5, [sp, #0x24] - ldr r1, [r7, #0x2c] - mov r0, #0 - str r1, [sp] - stmib sp, {r0, r4} - mov r0, #0x14 - str r0, [sp, #0xc] - ldr r2, [r7, #0xc] - add r3, sp, #0x14 - mov r0, sb - mov r1, #7 - bl ciAddCallback_ -_0224FD0C: - ldr r0, [r7, #0x20] - cmp r0, #0 - addeq sp, sp, #0x34 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} - str r4, [sp, #0x10] - ldr r1, [r7, #0x2c] - mov r0, #0 - str r1, [sp] - stmib sp, {r0, r4} - mov r0, #4 - str r0, [sp, #0xc] - ldr r2, [r7, #0x20] - add r3, sp, #0x10 - mov r0, sb - mov r1, #0xc - bl ciAddCallback_ - add sp, sp, #0x34 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - ; .align 2, 0 -_0224FD54: .word Unk_ov66_0225A4C0 -_0224FD58: .word Unk_ov66_0225A4D0 -_0224FD5C: .word Unk_ov66_02259E14 -_0224FD60: .word 0x00000794 -_0224FD64: .word Unk_ov66_0225A668 -_0224FD68: .word 0x0000079A -_0224FD6C: .word Unk_ov66_0225A608 - arm_func_end ciKickHandler - - arm_func_start ciQuitEnumChannelsCallback -ciQuitEnumChannelsCallback: ; 0x0224FD70 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x28 - movs r7, r1 - mov r8, r0 - mov r6, r2 - mov r5, r3 - bne _0224FDA0 - ldr r0, _0224FEEC ; =0x0225A6A0 - ldr r1, _0224FEF0 ; =0x0225A4D0 - ldr r2, _0224FEF4 ; =0x0225A224 - ldr r3, _0224FEF8 ; =0x000007E6 - bl __msl_assertion_failed -_0224FDA0: - ldrsb r0, [r7] - cmp r0, #0 - bne _0224FDC0 - ldr r0, _0224FEFC ; =0x0225A6B0 - ldr r1, _0224FEF0 ; =0x0225A4D0 - ldr r2, _0224FEF4 ; =0x0225A224 - ldr r3, _0224FEF8 ; =0x000007E6 - bl __msl_assertion_failed -_0224FDC0: - cmp r6, #0 - bne _0224FDDC - ldr r0, _0224FF00 ; =0x0225A6C0 - ldr r1, _0224FEF0 ; =0x0225A4D0 - ldr r2, _0224FEF4 ; =0x0225A224 - ldr r3, _0224FF04 ; =0x000007E7 - bl __msl_assertion_failed -_0224FDDC: - ldrsb r0, [r6] - cmp r0, #0 - bne _0224FDFC - ldr r0, _0224FF08 ; =0x0225A6D0 - ldr r1, _0224FEF0 ; =0x0225A4D0 - ldr r2, _0224FEF4 ; =0x0225A224 - ldr r3, _0224FF04 ; =0x000007E7 - bl __msl_assertion_failed -_0224FDFC: - cmp r5, #0 - bne _0224FE18 - ldr r0, _0224FF0C ; =0x0225A6E4 - ldr r1, _0224FEF0 ; =0x0225A4D0 - ldr r2, _0224FEF4 ; =0x0225A224 - ldr r3, _0224FF10 ; =0x000007E8 - bl __msl_assertion_failed -_0224FE18: - mov r0, r8 - mov r1, r7 - mov r2, r6 - bl ciUserLeftChannel - mov r0, r8 - mov r1, r6 - bl ciWasJoinCallbackCalled - cmp r0, #0 - addeq sp, sp, #0x28 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, r8 - mov r1, r6 - bl ciGetChannelCallbacks - movs r4, r0 - addeq sp, sp, #0x28 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldr r0, [r4, #0xc] - cmp r0, #0 - beq _0224FEA4 - mov r0, #1 - mov r2, #0 - str r0, [sp, #0x1c] - str r6, [sp, #0x14] - str r7, [sp, #0x18] - str r5, [sp, #0x20] - str r2, [sp, #0x24] - ldr r1, [r4, #0x2c] - mov r0, #0x14 - stmia sp, {r1, r2, r6} - str r0, [sp, #0xc] - ldr r2, [r4, #0xc] - add r3, sp, #0x14 - mov r0, r8 - mov r1, #7 - bl ciAddCallback_ -_0224FEA4: - ldr r0, [r4, #0x20] - cmp r0, #0 - addeq sp, sp, #0x28 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - str r6, [sp, #0x10] - ldr r1, [r4, #0x2c] - mov r0, #0 - str r1, [sp] - stmib sp, {r0, r6} - mov r0, #4 - str r0, [sp, #0xc] - ldr r2, [r4, #0x20] - add r3, sp, #0x10 - mov r0, r8 - mov r1, #0xc - bl ciAddCallback_ - add sp, sp, #0x28 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_0224FEEC: .word Unk_ov66_0225A6A0 -_0224FEF0: .word Unk_ov66_0225A4D0 -_0224FEF4: .word Unk_ov66_0225A224 -_0224FEF8: .word 0x000007E6 -_0224FEFC: .word Unk_ov66_0225A6B0 -_0224FF00: .word Unk_ov66_0225A6C0 -_0224FF04: .word 0x000007E7 -_0224FF08: .word Unk_ov66_0225A6D0 -_0224FF0C: .word Unk_ov66_0225A6E4 -_0224FF10: .word 0x000007E8 - arm_func_end ciQuitEnumChannelsCallback - - arm_func_start ciQuitHandler -ciQuitHandler: ; 0x0224FF14 - stmfd sp!, {r3, r4, r5, lr} - movs r5, r0 - mov r4, r1 - bne _0224FF38 - ldr r0, _0224FF80 ; =0x0225A4C0 - ldr r1, _0224FF84 ; =0x0225A4D0 - ldr r2, _0224FF88 ; =0x02259E24 - ldr r3, _0224FF8C ; =0x00000813 - bl __msl_assertion_failed -_0224FF38: - ldr r0, [r4, #0x24] - cmp r0, #1 - beq _0224FF58 - ldr r0, _0224FF90 ; =0x0225A61C - ldr r1, _0224FF84 ; =0x0225A4D0 - ldr r2, _0224FF88 ; =0x02259E24 - ldr r3, _0224FF94 ; =0x00000819 - bl __msl_assertion_failed -_0224FF58: - ldr r0, [r4, #0x24] - cmp r0, #1 - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, [r4, #0x20] - ldr r1, [r4, #8] - ldr r3, [r0, #0] - ldr r2, _0224FF98 ; =ciQuitEnumChannelsCallback - mov r0, r5 - bl ciUserEnumChannels - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0224FF80: .word Unk_ov66_0225A4C0 -_0224FF84: .word Unk_ov66_0225A4D0 -_0224FF88: .word Unk_ov66_02259E24 -_0224FF8C: .word 0x00000813 -_0224FF90: .word Unk_ov66_0225A61C -_0224FF94: .word 0x00000819 -_0224FF98: .word ciQuitEnumChannelsCallback - arm_func_end ciQuitHandler - - arm_func_start ciKillEnumChannelsCallback -ciKillEnumChannelsCallback: ; 0x0224FF9C - stmfd sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x28 - movs r7, r1 - mov r8, r0 - mov r6, r2 - mov r5, r3 - bne _0224FFCC - ldr r0, _02250118 ; =0x0225A6A0 - ldr r1, _0225011C ; =0x0225A4D0 - ldr r2, _02250120 ; =0x0225A240 - ldr r3, _02250124 ; =0x00000828 - bl __msl_assertion_failed -_0224FFCC: - ldrsb r0, [r7] - cmp r0, #0 - bne _0224FFEC - ldr r0, _02250128 ; =0x0225A6B0 - ldr r1, _0225011C ; =0x0225A4D0 - ldr r2, _02250120 ; =0x0225A240 - ldr r3, _02250124 ; =0x00000828 - bl __msl_assertion_failed -_0224FFEC: - cmp r6, #0 - bne _02250008 - ldr r0, _0225012C ; =0x0225A6C0 - ldr r1, _0225011C ; =0x0225A4D0 - ldr r2, _02250120 ; =0x0225A240 - ldr r3, _02250130 ; =0x00000829 - bl __msl_assertion_failed -_02250008: - ldrsb r0, [r6] - cmp r0, #0 - bne _02250028 - ldr r0, _02250134 ; =0x0225A6D0 - ldr r1, _0225011C ; =0x0225A4D0 - ldr r2, _02250120 ; =0x0225A240 - ldr r3, _02250130 ; =0x00000829 - bl __msl_assertion_failed -_02250028: - cmp r5, #0 - bne _02250044 - ldr r0, _02250138 ; =0x0225A6E4 - ldr r1, _0225011C ; =0x0225A4D0 - ldr r2, _02250120 ; =0x0225A240 - ldr r3, _0225013C ; =0x0000082A - bl __msl_assertion_failed -_02250044: - mov r0, r8 - mov r1, r7 - mov r2, r6 - bl ciUserLeftChannel - mov r0, r8 - mov r1, r6 - bl ciWasJoinCallbackCalled - cmp r0, #0 - addeq sp, sp, #0x28 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, r8 - mov r1, r6 - bl ciGetChannelCallbacks - movs r4, r0 - addeq sp, sp, #0x28 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldr r0, [r4, #0xc] - cmp r0, #0 - beq _022500D0 - mov r0, #3 - mov r2, #0 - str r0, [sp, #0x1c] - str r6, [sp, #0x14] - str r7, [sp, #0x18] - str r5, [sp, #0x20] - str r2, [sp, #0x24] - ldr r1, [r4, #0x2c] - mov r0, #0x14 - stmia sp, {r1, r2, r6} - str r0, [sp, #0xc] - ldr r2, [r4, #0xc] - add r3, sp, #0x14 - mov r0, r8 - mov r1, #7 - bl ciAddCallback_ -_022500D0: - ldr r0, [r4, #0x20] - cmp r0, #0 - addeq sp, sp, #0x28 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - str r6, [sp, #0x10] - ldr r1, [r4, #0x2c] - mov r0, #0 - str r1, [sp] - stmib sp, {r0, r6} - mov r0, #4 - str r0, [sp, #0xc] - ldr r2, [r4, #0x20] - add r3, sp, #0x10 - mov r0, r8 - mov r1, #0xc - bl ciAddCallback_ - add sp, sp, #0x28 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_02250118: .word Unk_ov66_0225A6A0 -_0225011C: .word Unk_ov66_0225A4D0 -_02250120: .word Unk_ov66_0225A240 -_02250124: .word 0x00000828 -_02250128: .word Unk_ov66_0225A6B0 -_0225012C: .word Unk_ov66_0225A6C0 -_02250130: .word 0x00000829 -_02250134: .word Unk_ov66_0225A6D0 -_02250138: .word Unk_ov66_0225A6E4 -_0225013C: .word 0x0000082A - arm_func_end ciKillEnumChannelsCallback - - arm_func_start ciKillHandler -ciKillHandler: ; 0x02250140 - stmfd sp!, {r3, r4, r5, lr} - mov r4, r1 - ldr r1, [r4, #0x24] - mov r5, r0 - cmp r1, #2 - beq _0225016C - ldr r0, _02250190 ; =0x0225A5F0 - ldr r1, _02250194 ; =0x0225A4D0 - ldr r2, _02250198 ; =0x02259E34 - ldr r3, _0225019C ; =0x00000859 - bl __msl_assertion_failed -_0225016C: - ldr r0, [r4, #0x24] - cmp r0, #2 - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, [r4, #0x20] - ldr r2, _022501A0 ; =ciKillEnumChannelsCallback - ldmia r0, {r1, r3} - mov r0, r5 - bl ciUserEnumChannels - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02250190: .word Unk_ov66_0225A5F0 -_02250194: .word Unk_ov66_0225A4D0 -_02250198: .word Unk_ov66_02259E34 -_0225019C: .word 0x00000859 -_022501A0: .word ciKillEnumChannelsCallback - arm_func_end ciKillHandler - - arm_func_start ciTopicHandler -ciTopicHandler: ; 0x022501A4 - stmfd sp!, {r4, r5, r6, lr} - sub sp, sp, #0x18 - movs r4, r0 - mov r5, r1 - bne _022501CC - ldr r0, _02250270 ; =0x0225A4C0 - ldr r1, _02250274 ; =0x0225A4D0 - ldr r2, _02250278 ; =0x02259E54 - ldr r3, _0225027C ; =0x0000086A - bl __msl_assertion_failed -_022501CC: - ldr r0, [r5, #0x24] - cmp r0, #2 - beq _022501EC - ldr r0, _02250280 ; =0x0225A5F0 - ldr r1, _02250274 ; =0x0225A4D0 - ldr r2, _02250278 ; =0x02259E54 - mov r3, #0x870 - bl __msl_assertion_failed -_022501EC: - ldr r0, [r5, #0x24] - cmp r0, #2 - addne sp, sp, #0x18 - ldmneia sp!, {r4, r5, r6, pc} - ldr r1, [r5, #0x20] - mov r0, r4 - ldmia r1, {r5, r6} - mov r1, r5 - mov r2, r6 - bl ciSetChannelTopic - mov r0, r4 - mov r1, r5 - bl ciGetChannelCallbacks - cmp r0, #0 - ldrne r1, [r0, #0x14] - cmpne r1, #0 - addeq sp, sp, #0x18 - ldmeqia sp!, {r4, r5, r6, pc} - str r5, [sp, #0x10] - str r6, [sp, #0x14] - ldr r2, [r0, #0x2c] - mov r1, #0 - str r2, [sp] - stmib sp, {r1, r5} - mov r1, #8 - str r1, [sp, #0xc] - ldr r2, [r0, #0x14] - add r3, sp, #0x10 - mov r0, r4 - mov r1, #9 - bl ciAddCallback_ - add sp, sp, #0x18 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_02250270: .word Unk_ov66_0225A4C0 -_02250274: .word Unk_ov66_0225A4D0 -_02250278: .word Unk_ov66_02259E54 -_0225027C: .word 0x0000086A -_02250280: .word Unk_ov66_0225A5F0 - arm_func_end ciTopicHandler - - arm_func_start ciModeHandler -ciModeHandler: ; 0x02250284 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x28 - mov r4, r1 - ldr r1, [r4, #0x24] - mov sb, r0 - cmp r1, #2 - bge _022502B4 - ldr r0, _02250478 ; =0x0225A6F4 - ldr r1, _0225047C ; =0x0225A4D0 - ldr r2, _02250480 ; =0x02259E44 - ldr r3, _02250484 ; =0x00000893 - bl __msl_assertion_failed -_022502B4: - ldr r0, [r4, #0x24] - cmp r0, #2 - addlt sp, sp, #0x28 - ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [r4, #0x20] - mov r0, sb - ldr r8, [r1] - ldr r5, [r1, #4] - mov r1, r8 - bl ciInChannel - cmp r0, #0 - addeq sp, sp, #0x28 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [r4, #0x20] - ldr r2, [r4, #0x24] - mov r0, r5 - add r1, r1, #8 - sub r2, r2, #2 - bl ciParseMode - str r0, [sp, #4] - cmp r0, #0 - addeq sp, sp, #0x28 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [r0, #0] - ldr r7, [sp, #4] - cmp r0, #0 - beq _02250424 - ldr sl, _02250488 ; =0x0225A590 - ldr fp, _0225047C ; =0x0225A4D0 - mov r4, #1 - mov r5, #2 - mov r6, #0 -_02250334: - ldr r0, [r7, #0] - cmp r0, #0xe - addls pc, pc, r0, lsl #2 - b _02250404 -_02250344: ; jump table - b _02250404 ; case 0 - b _02250418 ; case 1 - b _02250418 ; case 2 - b _02250418 ; case 3 - b _02250418 ; case 4 - b _02250418 ; case 5 - b _02250380 ; case 6 - b _02250418 ; case 7 - b _02250418 ; case 8 - b _02250418 ; case 9 - b _022503B4 ; case 10 - b _022503DC ; case 11 - b _02250418 ; case 12 - b _02250418 ; case 13 - b _02250418 ; case 14 -_02250380: - ldr r0, [r7, #4] - cmp r0, #0 - beq _022503A0 - ldr r2, [r7, #8] - mov r0, sb - mov r1, r8 - bl ciSetChannelPassword - b _02250418 -_022503A0: - mov r0, sb - mov r1, r8 - mov r2, r6 - bl ciSetChannelPassword - b _02250418 -_022503B4: - ldr r1, [r7, #8] - cmp r1, #0 - beq _02250418 - ldr r2, [r7, #4] - mov r0, sb - str r2, [sp] - mov r2, r8 - mov r3, r5 - bl ciUserChangedMode - b _02250418 -_022503DC: - ldr r1, [r7, #8] - cmp r1, #0 - beq _02250418 - ldr r2, [r7, #4] - mov r0, sb - str r2, [sp] - mov r2, r8 - mov r3, r4 - bl ciUserChangedMode - b _02250418 -_02250404: - ldr r2, _02250480 ; =0x02259E44 - ldr r3, _0225048C ; =0x000008DC - mov r0, sl - mov r1, fp - bl __msl_assertion_failed -_02250418: - ldr r0, [r7, #0xc]! - cmp r0, #0 - bne _02250334 -_02250424: - add r2, sp, #8 - mov r0, sb - mov r1, r8 - bl ciGetChannelMode - cmp r0, #0 - bne _0225044C - ldr r0, [sp, #4] - bl DWCi_GsFree - add sp, sp, #0x28 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0225044C: - ldr r1, [sp, #4] - add r0, sp, #8 - bl ciApplyChangesToMode - add r2, sp, #8 - mov r0, sb - mov r1, r8 - bl ciSetChannelMode - ldr r0, [sp, #4] - bl DWCi_GsFree - add sp, sp, #0x28 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_02250478: .word Unk_ov66_0225A6F4 -_0225047C: .word Unk_ov66_0225A4D0 -_02250480: .word Unk_ov66_02259E44 -_02250484: .word 0x00000893 -_02250488: .word Unk_ov66_0225A590 -_0225048C: .word 0x000008DC - arm_func_end ciModeHandler - - arm_func_start ciErrorHandler -ciErrorHandler: ; 0x02250490 - stmfd sp!, {r3, r4, r5, lr} - movs r5, r0 - mov r4, r1 - bne _022504B4 - ldr r0, _022504F4 ; =0x0225A4C0 - ldr r1, _022504F8 ; =0x0225A4D0 - ldr r2, _022504FC ; =0x02259E64 - ldr r3, _02250500 ; =0x000008F1 - bl __msl_assertion_failed -_022504B4: - ldr r0, [r4, #0x24] - cmp r0, #1 - beq _022504D4 - ldr r0, _02250504 ; =0x0225A61C - ldr r1, _022504F8 ; =0x0225A4D0 - ldr r2, _022504FC ; =0x02259E64 - ldr r3, _02250508 ; =0x000008F7 - bl __msl_assertion_failed -_022504D4: - ldr r0, [r4, #0x24] - cmp r0, #1 - ldmneia sp!, {r3, r4, r5, pc} - ldr r1, [r4, #0x20] - mov r0, r5 - ldr r1, [r1, #0] - bl ciHandleDisconnect - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_022504F4: .word Unk_ov66_0225A4C0 -_022504F8: .word Unk_ov66_0225A4D0 -_022504FC: .word Unk_ov66_02259E64 -_02250500: .word 0x000008F1 -_02250504: .word Unk_ov66_0225A61C -_02250508: .word 0x000008F7 - arm_func_end ciErrorHandler - - arm_func_start ciInviteHandler -ciInviteHandler: ; 0x0225050C - stmfd sp!, {r3, r4, r5, lr} - sub sp, sp, #0x18 - movs r4, r0 - mov r5, r1 - bne _02250534 - ldr r0, _022505C0 ; =0x0225A4C0 - ldr r1, _022505C4 ; =0x0225A4D0 - ldr r2, _022505C8 ; =0x02259EB4 - ldr r3, _022505CC ; =0x00000904 - bl __msl_assertion_failed -_02250534: - ldr r0, [r5, #0x24] - cmp r0, #2 - beq _02250554 - ldr r0, _022505D0 ; =0x0225A5F0 - ldr r1, _022505C4 ; =0x0225A4D0 - ldr r2, _022505C8 ; =0x02259EB4 - ldr r3, _022505D4 ; =0x0000090A - bl __msl_assertion_failed -_02250554: - ldr r0, [r5, #0x24] - cmp r0, #2 - addne sp, sp, #0x18 - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, [r4, #0x804] - ldr r1, [r5, #0x20] - cmp r0, #0 - addeq sp, sp, #0x18 - ldr r2, [r5, #8] - ldr r0, [r1, #4] - ldmeqia sp!, {r3, r4, r5, pc} - str r0, [sp, #0x10] - str r2, [sp, #0x14] - ldr r1, [r4, #0x808] - mov r0, #0 - str r1, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - mov r0, #8 - str r0, [sp, #0xc] - ldr r2, [r4, #0x804] - add r3, sp, #0x10 - mov r0, r4 - mov r1, #3 - bl ciAddCallback_ - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_022505C0: .word Unk_ov66_0225A4C0 -_022505C4: .word Unk_ov66_0225A4D0 -_022505C8: .word Unk_ov66_02259EB4 -_022505CC: .word 0x00000904 -_022505D0: .word Unk_ov66_0225A5F0 -_022505D4: .word 0x0000090A - arm_func_end ciInviteHandler - - arm_func_start ciNameReplyHandler -ciNameReplyHandler: ; 0x022505D8 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x40 - mov r4, r1 - ldr r1, [r4, #0x24] - str r0, [sp, #8] - cmp r1, #4 - mov r8, #0 - beq _0225060C - ldr r0, _022508A4 ; =0x0225A70C - ldr r1, _022508A8 ; =0x0225A4D0 - ldr r2, _022508AC ; =0x02259F88 - ldr r3, _022508B0 ; =0x0000092F - bl __msl_assertion_failed -_0225060C: - ldr r0, [r4, #0x24] - cmp r0, #4 - addne sp, sp, #0x40 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [r4, #0x20] - add r2, sp, #0x10 - mov r0, #0 - ldr r7, [r1, #8] - ldr r4, [r1, #0xc] - mov r3, r2 - mov r1, r0 - stmia r3!, {r0, r1} - stmia r3!, {r0, r1} - stmia r3!, {r0, r1} - stmia r3!, {r0, r1} - stmia r3!, {r0, r1} - stmia r3, {r0, r1} - mov r3, #3 - mov r6, #1 - mov r5, #0xf - ldr r0, [sp, #8] - mov r1, #4 - str r6, [sp, #0x10] - str r7, [sp, #0x14] - str r5, [sp, #0x1c] - str r7, [sp, #0x20] - str r3, [sp, #0x28] - str r7, [sp, #0x2c] - str r3, [sp, #0x34] - bl ciFindFilter - movs r6, r0 - addeq sp, sp, #0x40 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [r6, #0] - ldr r1, _022508B4 ; =0x0225A724 - cmp r0, #1 - ldrne r8, [r6, #0x1c] - mov r0, r4 - bl strtok - movs sb, r0 - addeq sp, sp, #0x40 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, _022508B8 ; =0x00000957 - ldr fp, _022508A8 ; =0x0225A4D0 - sub r0, r0, #6 - str r0, [sp, #0xc] -_022506C4: - ldrsb r0, [sb] - cmp r0, #0 - bne _022506E4 - ldr r0, _022508BC ; =0x0225A728 - ldr r2, _022508AC ; =0x02259F88 - ldr r3, [sp, #0xc] - mov r1, fp - bl __msl_assertion_failed -_022506E4: - ldrsb r0, [sb] - cmp r0, #0x40 - bne _0225071C - ldrsb r0, [sb, #1] - cmp r0, #0 - bne _02250710 - ldr r0, _022508C0 ; =0x0225A738 - ldr r2, _022508AC ; =0x02259F88 - ldr r3, _022508B8 ; =0x00000957 - mov r1, fp - bl __msl_assertion_failed -_02250710: - mov sl, #2 - add sb, sb, #1 - b _02250758 -_0225071C: - cmp r0, #0x2b - bne _02250754 - ldrsb r0, [sb, #1] - cmp r0, #0 - bne _02250748 - ldr r3, _022508B8 ; =0x00000957 - ldr r0, _022508C0 ; =0x0225A738 - ldr r2, _022508AC ; =0x02259F88 - mov r1, fp - add r3, r3, #6 - bl __msl_assertion_failed -_02250748: - mov sl, #1 - add sb, sb, #1 - b _02250758 -_02250754: - mov sl, #0 -_02250758: - ldr r0, [r6, #0] - cmp r0, #1 - beq _02250858 - ldr r1, [r8] - ldr r0, [r8, #4] - cmp r0, r1 - bne _022507F4 - add r0, r1, #0x64 - mov r1, r0, lsl #2 - ldr r0, [r8, #8] - bl DWCi_GsRealloc - cmp r0, #0 - bne _022507A8 - ldr r0, _022508C4 ; =0x0225A590 - ldr r1, _022508A8 ; =0x0225A4D0 - ldr r2, _022508AC ; =0x02259F88 - ldr r3, _022508C8 ; =0x0000096D - bl __msl_assertion_failed - add sp, sp, #0x40 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022507A8: - str r0, [r8, #8] - ldr r0, [r8, #0xc] - ldr r1, [r8] - add r1, r1, #0x64 - mov r1, r1, lsl #2 - bl DWCi_GsRealloc - cmp r0, #0 - bne _022507E4 - ldr r0, _022508C4 ; =0x0225A590 - ldr r1, _022508A8 ; =0x0225A4D0 - ldr r2, _022508AC ; =0x02259F88 - ldr r3, _022508CC ; =0x00000974 - bl __msl_assertion_failed - add sp, sp, #0x40 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022507E4: - str r0, [r8, #0xc] - ldr r0, [r8] - add r0, r0, #0x64 - str r0, [r8] -_022507F4: - mov r0, sb - bl strlen - mov r5, r0 - add r0, r5, #1 - bl DWCi_GsMalloc - movs r4, r0 - bne _0225082C - ldr r0, _022508C4 ; =0x0225A590 - ldr r1, _022508A8 ; =0x0225A4D0 - ldr r2, _022508AC ; =0x02259F88 - ldr r3, _022508D0 ; =0x00000981 - bl __msl_assertion_failed - add sp, sp, #0x40 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0225082C: - add r2, r5, #1 - mov r1, sb - bl memcpy - ldmib r8, {r0, r1} - str r4, [r1, r0, lsl #2] - ldr r1, [r8, #0xc] - ldr r0, [r8, #4] - str sl, [r1, r0, lsl #2] - ldr r0, [r8, #4] - add r0, r0, #1 - str r0, [r8, #4] -_02250858: - ldr r0, [r6, #0] - cmp r0, #1 - cmpne r0, #0xf - bne _02250888 - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - ldr r0, [sp, #8] - mov r1, sb - mov r3, sl - mov r2, r7 - bl ciUserEnteredChannel -_02250888: - ldr r1, _022508B4 ; =0x0225A724 - mov r0, #0 - bl strtok - movs sb, r0 - bne _022506C4 - add sp, sp, #0x40 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_022508A4: .word Unk_ov66_0225A70C -_022508A8: .word Unk_ov66_0225A4D0 -_022508AC: .word Unk_ov66_02259F88 -_022508B0: .word 0x0000092F -_022508B4: .word Unk_ov66_0225A724 -_022508B8: .word 0x00000957 -_022508BC: .word Unk_ov66_0225A728 -_022508C0: .word Unk_ov66_0225A738 -_022508C4: .word Unk_ov66_0225A590 -_022508C8: .word 0x0000096D -_022508CC: .word 0x00000974 -_022508D0: .word 0x00000981 - arm_func_end ciNameReplyHandler - - arm_func_start ciEndOfNamesHandler -ciEndOfNamesHandler: ; 0x022508D4 - stmfd sp!, {r4, r5, r6, lr} - sub sp, sp, #0x60 - movs r6, r0 - mov r4, r1 - bne _022508FC - ldr r0, _02250A8C ; =0x0225A4C0 - ldr r1, _02250A90 ; =0x0225A4D0 - ldr r2, _02250A94 ; =0x02259FD8 - ldr r3, _02250A98 ; =0x0000099F - bl __msl_assertion_failed -_022508FC: - ldr r0, [r4, #0x24] - cmp r0, #3 - beq _0225091C - ldr r0, _02250A9C ; =0x0225A748 - ldr r1, _02250A90 ; =0x0225A4D0 - ldr r2, _02250A94 ; =0x02259FD8 - ldr r3, _02250AA0 ; =0x000009A5 - bl __msl_assertion_failed -_0225091C: - ldr r0, [r4, #0x24] - cmp r0, #3 - addne sp, sp, #0x60 - ldmneia sp!, {r4, r5, r6, pc} - ldr r0, [r4, #0x20] - ldr r1, _02250AA4 ; =0x0225A760 - ldr r5, [r0, #4] - mov r0, r5 - bl strcmp - cmp r0, #0 - add r2, sp, #0x30 - mov r0, #0 - mov r3, r2 - mov r1, r0 - stmia r3!, {r0, r1} - stmia r3!, {r0, r1} - stmia r3!, {r0, r1} - stmia r3!, {r0, r1} - stmia r3!, {r0, r1} - stmia r3, {r0, r1} - moveq r5, #0 - mov r3, #3 - mov ip, #1 - mov r4, #0xf - mov r0, r6 - mov r1, #4 - str ip, [sp, #0x30] - str r5, [sp, #0x34] - str r4, [sp, #0x3c] - str r5, [sp, #0x40] - str r3, [sp, #0x48] - str r5, [sp, #0x4c] - str r3, [sp, #0x54] - bl ciFindFilter - movs r4, r0 - addeq sp, sp, #0x60 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r0, [r4, #0] - cmp r0, #1 - bne _02250A00 - mov r1, #1 - mov r0, #0 - str r1, [sp, #0x24] - str r0, [sp, #0x28] - str r5, [sp, #0x2c] - ldr r0, [r4, #0x10] - cmp r0, #0 - bne _022509E8 - mov r0, r6 - mov r1, r5 - bl ciJoinCallbackCalled -_022509E8: - add r2, sp, #0x24 - mov r0, r6 - mov r1, r4 - bl ciFinishFilter - add sp, sp, #0x60 - ldmia sp!, {r4, r5, r6, pc} -_02250A00: - cmp r0, #0xf - bne _02250A40 - ldr ip, [r4, #0x1c] - add r2, sp, #0x14 - str r5, [sp, #0x14] - ldr r1, [ip, #4] - mov r0, r6 - str r1, [sp, #0x18] - ldr r3, [ip, #8] - mov r1, r4 - str r3, [sp, #0x1c] - ldr r3, [ip, #0xc] - str r3, [sp, #0x20] - bl ciFinishFilter - add sp, sp, #0x60 - ldmia sp!, {r4, r5, r6, pc} -_02250A40: - cmp r0, #3 - addne sp, sp, #0x60 - ldmneia sp!, {r4, r5, r6, pc} - ldr r3, [r4, #0x1c] - mov r0, #1 - str r5, [sp, #4] - str r0, [sp] - ldr r0, [r3, #4] - add r2, sp, #0 - str r0, [sp, #8] - ldr r1, [r3, #8] - mov r0, r6 - str r1, [sp, #0xc] - ldr r3, [r3, #0xc] - mov r1, r4 - str r3, [sp, #0x10] - bl ciFinishFilter - add sp, sp, #0x60 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_02250A8C: .word Unk_ov66_0225A4C0 -_02250A90: .word Unk_ov66_0225A4D0 -_02250A94: .word Unk_ov66_02259FD8 -_02250A98: .word 0x0000099F -_02250A9C: .word Unk_ov66_0225A748 -_02250AA0: .word 0x000009A5 -_02250AA4: .word Unk_ov66_0225A760 - arm_func_end ciEndOfNamesHandler - - arm_func_start ciRplTopicHandler -ciRplTopicHandler: ; 0x02250AA8 - stmfd sp!, {r4, r5, r6, lr} - sub sp, sp, #0x30 - mov r4, r1 - ldr r1, [r4, #0x24] - mov r5, r0 - cmp r1, #3 - beq _02250AD8 - ldr r0, _02250BB4 ; =0x0225A748 - ldr r1, _02250BB8 ; =0x0225A4D0 - ldr r2, _02250BBC ; =0x02259F4C - ldr r3, _02250BC0 ; =0x00000A05 - bl __msl_assertion_failed -_02250AD8: - ldr r0, [r4, #0x24] - cmp r0, #3 - addne sp, sp, #0x30 - ldmneia sp!, {r4, r5, r6, pc} - ldr r1, [r4, #0x20] - mov r0, r5 - ldmib r1, {r4, r6} - mov r1, r4 - mov r2, r6 - bl ciSetChannelTopic - add r2, sp, #0x24 - mov ip, #0 - str ip, [r2, #4] - mov r0, r5 - str ip, [r2] - mov r3, #2 - mov r1, #1 - str ip, [r2, #8] - str r3, [sp, #0x24] - str r4, [sp, #0x28] - bl ciFindFilter - movs r1, r0 - beq _02250B58 - mov r3, #1 - add r2, sp, #0x18 - mov r0, r5 - str r3, [sp, #0x18] - str r4, [sp, #0x1c] - str r6, [sp, #0x20] - bl ciFinishFilter - add sp, sp, #0x30 - ldmia sp!, {r4, r5, r6, pc} -_02250B58: - mov r0, r5 - mov r1, r4 - bl ciGetChannelCallbacks - cmp r0, #0 - ldrne r1, [r0, #0x14] - cmpne r1, #0 - addeq sp, sp, #0x30 - ldmeqia sp!, {r4, r5, r6, pc} - str r4, [sp, #0x10] - str r6, [sp, #0x14] - ldr r2, [r0, #0x2c] - mov r1, #0 - str r2, [sp] - stmib sp, {r1, r4} - mov r1, #8 - str r1, [sp, #0xc] - ldr r2, [r0, #0x14] - add r3, sp, #0x10 - mov r0, r5 - mov r1, #9 - bl ciAddCallback_ - add sp, sp, #0x30 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_02250BB4: .word Unk_ov66_0225A748 -_02250BB8: .word Unk_ov66_0225A4D0 -_02250BBC: .word Unk_ov66_02259F4C -_02250BC0: .word 0x00000A05 - arm_func_end ciRplTopicHandler - - arm_func_start ciRplNoTopicHandler -ciRplNoTopicHandler: ; 0x02250BC4 - stmfd sp!, {r3, r4, r5, lr} - sub sp, sp, #0x30 - mov r4, r1 - ldr r1, [r4, #0x24] - mov r5, r0 - cmp r1, #2 - bge _02250BF4 - ldr r0, _02250CC8 ; =0x0225A6F4 - ldr r1, _02250CCC ; =0x0225A4D0 - ldr r2, _02250CD0 ; =0x0225A000 - ldr r3, _02250CD4 ; =0x00000A3C - bl __msl_assertion_failed -_02250BF4: - ldr r0, [r4, #0x24] - cmp r0, #2 - addlt sp, sp, #0x30 - ldmltia sp!, {r3, r4, r5, pc} - ldr r0, [r4, #0x20] - add r2, sp, #0x24 - ldr r4, [r0, #4] - mov ip, #0 - str ip, [r2, #4] - mov r0, r5 - str ip, [r2] - mov r3, #2 - mov r1, #1 - str ip, [r2, #8] - str r3, [sp, #0x24] - str r4, [sp, #0x28] - bl ciFindFilter - movs r1, r0 - beq _02250C68 - ldr r3, _02250CD8 ; =0x0225A608 - mov ip, #1 - add r2, sp, #0x18 - mov r0, r5 - str ip, [sp, #0x18] - str r4, [sp, #0x1c] - str r3, [sp, #0x20] - bl ciFinishFilter - add sp, sp, #0x30 - ldmia sp!, {r3, r4, r5, pc} -_02250C68: - mov r0, r5 - mov r1, r4 - bl ciGetChannelCallbacks - cmp r0, #0 - ldrne r1, [r0, #0x14] - cmpne r1, #0 - addeq sp, sp, #0x30 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, _02250CD8 ; =0x0225A608 - str r4, [sp, #0x10] - str r1, [sp, #0x14] - ldr r2, [r0, #0x2c] - mov r1, #0 - str r2, [sp] - stmib sp, {r1, r4} - mov r1, #8 - str r1, [sp, #0xc] - ldr r2, [r0, #0x14] - add r3, sp, #0x10 - mov r0, r5 - mov r1, #9 - bl ciAddCallback_ - add sp, sp, #0x30 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02250CC8: .word Unk_ov66_0225A6F4 -_02250CCC: .word Unk_ov66_0225A4D0 -_02250CD0: .word Unk_ov66_0225A000 -_02250CD4: .word 0x00000A3C -_02250CD8: .word Unk_ov66_0225A608 - arm_func_end ciRplNoTopicHandler - - arm_func_start ciErrNickInUseHandler -ciErrNickInUseHandler: ; 0x02250CDC - stmfd sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0x1c - movs r4, r0 - mov r5, r1 - bne _02250D04 - ldr r0, _02250DE8 ; =0x0225A4C0 - ldr r1, _02250DEC ; =0x0225A4D0 - ldr r2, _02250DF0 ; =0x0225A0D0 - ldr r3, _02250DF4 ; =0x00000A6D - bl __msl_assertion_failed -_02250D04: - ldr r0, [r5, #0x24] - cmp r0, #3 - beq _02250D24 - ldr r0, _02250DF8 ; =0x0225A748 - ldr r1, _02250DEC ; =0x0225A4D0 - ldr r2, _02250DF0 ; =0x0225A0D0 - ldr r3, _02250DFC ; =0x00000A73 - bl __msl_assertion_failed -_02250D24: - ldr r0, [r5, #0x24] - cmp r0, #3 - addne sp, sp, #0x1c - ldmneia sp!, {r3, r4, r5, r6, pc} - ldr r0, [r5, #0x20] - add r2, sp, #0x10 - ldmia r0, {r5, r6} - mov r1, #0 - str r1, [r2, #4] - str r1, [r2, #8] - str r1, [r2, #0] - mov r3, #9 - mov r0, r4 - mov r1, #1 - str r3, [sp, #0x10] - str r5, [sp, #0x14] - str r6, [sp, #0x18] - bl ciFindFilter - movs r1, r0 - beq _02250D98 - mov r3, #0 - add r2, sp, #4 - mov r0, r4 - str r3, [sp, #4] - str r5, [sp, #8] - str r6, [sp, #0xc] - bl ciFinishFilter - add sp, sp, #0x1c - ldmia sp!, {r3, r4, r5, r6, pc} -_02250D98: - ldr r0, [r4, #4] - cmp r0, #0 - bne _02250DB8 - ldr r0, _02250E00 ; =0x0225A764 - ldr r1, _02250DEC ; =0x0225A4D0 - ldr r2, _02250DF0 ; =0x0225A0D0 - ldr r3, _02250E04 ; =0x00000A93 - bl __msl_assertion_failed -_02250DB8: - ldr r0, [r4, #4] - cmp r0, #0 - addeq sp, sp, #0x1c - ldmeqia sp!, {r3, r4, r5, r6, pc} - mov r3, #0 - mov r0, r4 - add r2, r4, #0x36c - mov r1, #1 - str r3, [sp] - bl ciNickError - add sp, sp, #0x1c - ldmia sp!, {r3, r4, r5, r6, pc} - ; .align 2, 0 -_02250DE8: .word Unk_ov66_0225A4C0 -_02250DEC: .word Unk_ov66_0225A4D0 -_02250DF0: .word Unk_ov66_0225A0D0 -_02250DF4: .word 0x00000A6D -_02250DF8: .word Unk_ov66_0225A748 -_02250DFC: .word 0x00000A73 -_02250E00: .word Unk_ov66_0225A764 -_02250E04: .word 0x00000A93 - arm_func_end ciErrNickInUseHandler - - arm_func_start ciRplWhoReplyHandler -ciRplWhoReplyHandler: ; 0x02250E08 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x68 - mov sb, r1 - ldr r1, [sb, #0x24] - mov sl, r0 - cmp r1, #8 - beq _02250E38 - ldr r0, _02251014 ; =0x0225A77C - ldr r1, _02251018 ; =0x0225A4D0 - ldr r2, _0225101C ; =0x0225A040 - ldr r3, _02251020 ; =0x00000AA6 - bl __msl_assertion_failed -_02250E38: - ldr r0, [sb, #0x24] - cmp r0, #8 - addne sp, sp, #0x68 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldr r4, [sb, #0x20] - mov r0, sl - ldr r6, [r4, #8] - ldr r7, [r4, #0xc] - ldr r5, [r4, #0x14] - mov r2, r6 - mov r1, r5 - mov r3, r7 - ldr r4, [r4, #4] - bl ciSetUserBasicInfo - add r2, sp, #0x44 - mov r0, #0 - mov r3, r2 - mov r1, r0 - stmia r3!, {r0, r1} - stmia r3!, {r0, r1} - stmia r3!, {r0, r1} - stmia r3!, {r0, r1} - str r0, [r3, #0] - mov r1, #6 - mov r0, #0xa - str r1, [sp, #0x44] - mov r1, #0xb - str r0, [sp, #0x50] - str r1, [sp, #0x5c] - mov r0, sl - mov r1, #3 - str r5, [sp, #0x48] - str r4, [sp, #0x4c] - str r5, [sp, #0x54] - str r4, [sp, #0x60] - bl ciFindFilter - movs r8, r0 - addeq sp, sp, #0x68 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldr r0, [r8] - cmp r0, #6 - bne _02250F40 - ldr r0, [sb, #0x20] - mov r1, #0x40 - ldr r7, [r0, #0x18] - mov r6, #0 - mov r0, r7 - bl strchr - cmp r0, #0 - orrne r6, r6, #2 - mov r0, r7 - mov r1, #0x2b - bl strchr - cmp r0, #0 - orrne r6, r6, #1 - mov r3, #1 - add r2, sp, #0x34 - mov r0, sl - mov r1, r8 - str r3, [sp, #0x34] - str r4, [sp, #0x38] - str r5, [sp, #0x3c] - str r6, [sp, #0x40] - bl ciFinishFilter - add sp, sp, #0x68 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_02250F40: - cmp r0, #0xa - bne _02250FA0 - mov r0, #1 - str r5, [sp, #0x28] - str r6, [sp, #0x2c] - str r7, [sp, #0x30] - str r0, [sp, #0x24] - ldr r0, [r8, #0x18] - mov r1, #0 - str r0, [sp] - ldr r2, [r8, #0x20] - mov r0, #0x10 - str r2, [sp, #4] - str r1, [sp, #8] - str r0, [sp, #0xc] - ldr r2, [r8, #0x10] - add r3, sp, #0x24 - mov r0, sl - mov r1, #0x15 - bl ciAddCallback_ - mov r0, #0 - add sp, sp, #0x68 - str r0, [r8, #0x10] - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_02250FA0: - cmp r0, #0xb - addne sp, sp, #0x68 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldr r0, [r8, #0x10] - cmp r0, #0 - addeq sp, sp, #0x68 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - mov r0, #1 - str r0, [sp, #0x10] - ldr r0, [r8, #8] - mov r1, #0 - str r0, [sp, #0x14] - str r5, [sp, #0x18] - str r6, [sp, #0x1c] - str r7, [sp, #0x20] - ldr r2, [r8, #0x18] - mov r0, #0x14 - str r2, [sp] - ldr r2, [r8, #0x20] - add r3, sp, #0x10 - str r2, [sp, #4] - str r1, [sp, #8] - str r0, [sp, #0xc] - ldr r2, [r8, #0x10] - mov r0, sl - mov r1, #0x16 - bl ciAddCallback_ - add sp, sp, #0x68 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ; .align 2, 0 -_02251014: .word Unk_ov66_0225A77C -_02251018: .word Unk_ov66_0225A4D0 -_0225101C: .word Unk_ov66_0225A040 -_02251020: .word 0x00000AA6 - arm_func_end ciRplWhoReplyHandler - - arm_func_start ciRplEndOfWhoHandler -ciRplEndOfWhoHandler: ; 0x02251024 - stmfd sp!, {r4, r5, lr} - sub sp, sp, #0x3c - mov r4, r1 - ldr r1, [r4, #0x24] - mov r5, r0 - cmp r1, #3 - beq _02251054 - ldr r0, _0225112C ; =0x0225A748 - ldr r1, _02251130 ; =0x0225A4D0 - ldr r2, _02251134 ; =0x0225A058 - ldr r3, _02251138 ; =0x00000B0D - bl __msl_assertion_failed -_02251054: - ldr r0, [r4, #0x24] - cmp r0, #3 - addne sp, sp, #0x3c - ldmneia sp!, {r4, r5, pc} - ldr r0, [r4, #0x20] - add r2, sp, #0x24 - ldr r4, [r0, #4] - mov lr, #0 - str lr, [r2, #4] - str lr, [r2, #0x10] - mov r0, r5 - str lr, [r2] - mov ip, #0xa - str lr, [r2, #0xc] - mov r3, #0xb - mov r1, #2 - str lr, [r2, #8] - str lr, [r2, #0x14] - str ip, [sp, #0x24] - str r4, [sp, #0x28] - str r3, [sp, #0x30] - str r4, [sp, #0x34] - bl ciFindFilter - movs r1, r0 - addeq sp, sp, #0x3c - ldmeqia sp!, {r4, r5, pc} - ldr r0, [r1, #0] - cmp r0, #0xa - bne _022510F0 - mov r3, #0 - add r2, sp, #0x14 - mov r0, r5 - str r3, [sp, #0x14] - str r4, [sp, #0x18] - str r3, [sp, #0x1c] - str r3, [sp, #0x20] - bl ciFinishFilter - add sp, sp, #0x3c - ldmia sp!, {r4, r5, pc} -_022510F0: - cmp r0, #0xb - addne sp, sp, #0x3c - ldmneia sp!, {r4, r5, pc} - mov r3, #0 - mov ip, #1 - add r2, sp, #0 - mov r0, r5 - str ip, [sp] - str r4, [sp, #4] - str r3, [sp, #8] - str r3, [sp, #0xc] - str r3, [sp, #0x10] - bl ciFinishFilter - add sp, sp, #0x3c - ldmia sp!, {r4, r5, pc} - ; .align 2, 0 -_0225112C: .word Unk_ov66_0225A748 -_02251130: .word Unk_ov66_0225A4D0 -_02251134: .word Unk_ov66_0225A058 -_02251138: .word 0x00000B0D - arm_func_end ciRplEndOfWhoHandler - - arm_func_start ciParseValue -ciParseValue: ; 0x0225113C - stmfd sp!, {r3, r4, r5, r6, r7, lr} - movs r7, r0 - mov r4, r1 - bne _02251160 - ldr r0, _022511F0 ; =0x0225A794 - ldr r1, _022511F4 ; =0x0225A4D0 - ldr r2, _022511F8 ; =0x02259D84 - ldr r3, _022511FC ; =0x00000B48 - bl __msl_assertion_failed -_02251160: - cmp r4, #0 - bne _0225117C - ldr r0, _02251200 ; =0x0225A79C - ldr r1, _022511F4 ; =0x0225A4D0 - ldr r2, _022511F8 ; =0x02259D84 - ldr r3, _02251204 ; =0x00000B49 - bl __msl_assertion_failed -_0225117C: - cmp r7, #0 - beq _02251190 - ldrsb r0, [r7] - cmp r0, #0x5c - beq _02251198 -_02251190: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02251198: - mov r6, #0 - b _022511A4 -_022511A0: - add r6, r6, #1 -_022511A4: - add r0, r7, r6 - ldrsb r0, [r0, #1] - cmp r0, #0 - cmpne r0, #0x5c - bne _022511A0 - add r0, r6, #1 - bl DWCi_GsMalloc - movs r5, r0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r2, r6 - add r1, r7, #1 - bl memcpy - mov r0, #0 - strb r0, [r5, r6] - add r1, r6, #1 - mov r0, r5 - str r1, [r4, #0] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_022511F0: .word Unk_ov66_0225A794 -_022511F4: .word Unk_ov66_0225A4D0 -_022511F8: .word Unk_ov66_02259D84 -_022511FC: .word 0x00000B48 -_02251200: .word Unk_ov66_0225A79C -_02251204: .word 0x00000B49 - arm_func_end ciParseValue - - arm_func_start ciRplGetKeyHandler -ciRplGetKeyHandler: ; 0x02251208 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x3c - mov r4, r1 - ldr r1, [r4, #0x24] - str r0, [sp, #0x10] - cmp r1, #4 - beq _02251238 - ldr r0, _022513A4 ; =0x0225A70C - ldr r1, _022513A8 ; =0x0225A4D0 - ldr r2, _022513AC ; =0x02259F60 - ldr r3, _022513B0 ; =0x00000B76 - bl __msl_assertion_failed -_02251238: - ldr r0, [r4, #0x24] - cmp r0, #4 - addne sp, sp, #0x3c - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [r4, #0x20] - add r2, sp, #0x30 - ldr r0, [r1, #4] - ldr r5, [r1, #8] - ldr r7, [r1, #0xc] - mov r4, #0 - str r0, [sp, #0x14] - str r4, [r2, #4] - ldr r0, [sp, #0x10] - str r4, [r2, #0] - mov r3, #0xc - mov r1, #1 - str r4, [r2, #8] - str r3, [sp, #0x30] - str r5, [sp, #0x34] - bl ciFindFilter - movs r6, r0 - addeq sp, sp, #0x3c - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr fp, [r6, #0x1c] - ldr r8, [fp] - mov r0, r8, lsl #2 - bl DWCi_GsMalloc - movs sb, r0 - addeq sp, sp, #0x3c - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r8, #0 - mov sl, r4 - ble _02251300 - ldr r4, _022513B4 ; =0x0225A608 - add r5, sp, #0x18 -_022512C4: - mov r0, r7 - mov r1, r5 - bl ciParseValue - cmp r0, #0 - beq _022512E8 - str r0, [sb, sl, lsl #2] - ldr r0, [sp, #0x18] - add r7, r7, r0 - b _022512F4 -_022512E8: - mov r0, r4 - bl goastrdup - str r0, [sb, sl, lsl #2] -_022512F4: - add sl, sl, #1 - cmp sl, r8 - blt _022512C4 -_02251300: - mov r0, #1 - str r0, [sp, #0x1c] - ldr r0, [sp, #0x14] - str r8, [sp, #0x24] - str r0, [sp, #0x20] - ldr r0, [fp, #4] - str sb, [sp, #0x2c] - str r0, [sp, #0x28] - ldr r0, [fp, #8] - cmp r0, #0 - bne _02251340 - ldr r0, [sp, #0x10] - add r2, sp, #0x1c - mov r1, r6 - bl ciFinishFilter - b _02251374 -_02251340: - ldr r0, [r6, #0x18] - mov r1, #0 - str r0, [sp] - ldr r2, [r6, #0x20] - mov r0, #0x14 - str r2, [sp, #4] - str r1, [sp, #8] - str r0, [sp, #0xc] - ldr r2, [r6, #0x10] - ldr r0, [sp, #0x10] - add r3, sp, #0x1c - mov r1, #0x1d - bl ciAddCallback_ -_02251374: - cmp r8, #0 - mov r4, #0 - ble _02251394 -_02251380: - ldr r0, [sb, r4, lsl #2] - bl DWCi_GsFree - add r4, r4, #1 - cmp r4, r8 - blt _02251380 -_02251394: - mov r0, sb - bl DWCi_GsFree - add sp, sp, #0x3c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_022513A4: .word Unk_ov66_0225A70C -_022513A8: .word Unk_ov66_0225A4D0 -_022513AC: .word Unk_ov66_02259F60 -_022513B0: .word 0x00000B76 -_022513B4: .word Unk_ov66_0225A608 - arm_func_end ciRplGetKeyHandler - - arm_func_start ciRplEndGetKeyHandler -ciRplEndGetKeyHandler: ; 0x022513B8 - stmfd sp!, {r3, r4, r5, lr} - sub sp, sp, #0x20 - mov r5, r1 - ldr r1, [r5, #0x24] - mov r4, r0 - cmp r1, #4 - beq _022513E8 - ldr r0, _02251474 ; =0x0225A70C - ldr r1, _02251478 ; =0x0225A4D0 - ldr r2, _0225147C ; =0x0225A088 - ldr r3, _02251480 ; =0x00000BCC - bl __msl_assertion_failed -_022513E8: - ldr r0, [r5, #0x24] - cmp r0, #4 - addne sp, sp, #0x20 - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, [r5, #0x20] - add r2, sp, #0x14 - ldr lr, [r0, #8] - mov ip, #0 - str ip, [r2, #4] - mov r0, r4 - str ip, [r2] - mov r3, #0xc - mov r1, #1 - str ip, [r2, #8] - str r3, [sp, #0x14] - str lr, [sp, #0x18] - bl ciFindFilter - movs r1, r0 - addeq sp, sp, #0x20 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r3, [r1, #0x1c] - mov ip, #0 - mov r0, #1 - str ip, [sp, #4] - str r0, [sp] - ldr r0, [r3, #0] - add r2, sp, #0 - str r0, [sp, #8] - ldr r3, [r3, #4] - mov r0, r4 - str r3, [sp, #0xc] - str ip, [sp, #0x10] - bl ciFinishFilter - add sp, sp, #0x20 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02251474: .word Unk_ov66_0225A70C -_02251478: .word Unk_ov66_0225A4D0 -_0225147C: .word Unk_ov66_0225A088 -_02251480: .word 0x00000BCC - arm_func_end ciRplEndGetKeyHandler - - arm_func_start ciRplGetCKeyHandler -ciRplGetCKeyHandler: ; 0x02251484 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x54 - mov r4, r1 - ldr r1, [r4, #0x24] - str r0, [sp, #0x10] - cmp r1, #5 - beq _022514B4 - ldr r0, _02251808 ; =0x0225A7A0 - ldr r1, _0225180C ; =0x0225A4D0 - ldr r2, _02251810 ; =0x02259FC4 - ldr r3, _02251814 ; =0x00000BFC - bl __msl_assertion_failed -_022514B4: - ldr r0, [r4, #0x24] - cmp r0, #5 - addne sp, sp, #0x54 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r3, [r4, #0x20] - ldr r1, _02251818 ; =0x0225A7B8 - ldr r5, [r3, #0xc] - ldr r2, [r3, #8] - mov r0, r5 - ldr fp, [r3, #4] - str r2, [sp, #0x14] - ldr r8, [r3, #0x10] - bl strcmp - cmp r0, #0 - bne _022515E8 - ldr r0, [sp, #0x10] - mov r1, fp - bl ciGetChannelCallbacks - movs r7, r0 - ldrne r0, [r7, #0x28] - cmpne r0, #0 - addeq sp, sp, #0x54 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - add sl, sp, #0x38 - mov r0, #0 - str r0, [sl] - str r0, [sl, #4] - str r0, [sl, #8] - str r0, [sl, #0xc] - ldr r0, [sp, #0x14] - str fp, [sp, #0x38] - str r0, [sp, #0x3c] - ldrsb r0, [r8] - cmp r0, #0 - addeq sp, sp, #0x54 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r6, #0 - mov r5, r6 - mov r4, #0x10 -_02251550: - ldr r1, _0225181C ; =0x0225A7C0 - mov r0, r8 - bl strstr - mov r8, r0 - b _02251568 -_02251564: - add r8, r8, #1 -_02251568: - ldrsb r1, [r8] - cmp r1, #0 - cmpne r1, #0x5c - bne _02251564 - cmp r1, #0 - addeq sp, sp, #0x54 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - strb r6, [r8], #1 - mov r1, r8 - b _02251594 -_02251590: - add r8, r8, #1 -_02251594: - ldrsb sb, [r8] - cmp sb, #0 - cmpne sb, #0x5c - bne _02251590 - strb r5, [r8] - str r0, [sp, #0x40] - str r1, [sp, #0x44] - ldr r1, [r7, #0x2c] - ldr r0, [sp, #0x10] - stmia sp, {r1, r5, fp} - str r4, [sp, #0xc] - ldr r2, [r7, #0x28] - mov r1, #0x1c - mov r3, sl - bl ciAddCallback_ - strb sb, [r8] - ldrsb r0, [r8] - cmp r0, #0 - bne _02251550 - add sp, sp, #0x54 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022515E8: - add r2, sp, #0x48 - mov r4, #0 - str r4, [r2, #4] - ldr r0, [sp, #0x10] - str r4, [r2, #0] - mov r3, #0xd - mov r1, #1 - str r4, [r2, #8] - str r3, [sp, #0x48] - str r5, [sp, #0x4c] - bl ciFindFilter - str r0, [sp, #0x18] - cmp r0, #0 - addeq sp, sp, #0x54 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r6, [r0, #0x1c] - ldr r5, [r6, #0] - mov r0, r5, lsl #2 - bl DWCi_GsMalloc - movs r7, r0 - addeq sp, sp, #0x54 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r5, #0 - mov sb, r4 - ble _02251678 - add r4, sp, #0x1c -_02251650: - mov r0, r8 - mov r1, r4 - bl ciParseValue - str r0, [r7, sb, lsl #2] - cmp r0, #0 - ldrne r0, [sp, #0x1c] - add sb, sb, #1 - addne r8, r8, r0 - cmp sb, r5 - blt _02251650 -_02251678: - ldr r0, [r6, #0xc] - cmp r0, #0 - beq _02251754 - add r1, sp, #0x1c - mov r0, r8 - bl ciParseValue - movs sb, r0 - beq _02251750 -_02251698: - ldr r0, [sp, #0x1c] - add r1, sp, #0x1c - add r8, r8, r0 - mov r0, r8 - bl ciParseValue - movs r4, r0 - beq _02251730 - add r0, r5, #1 - mov sl, r0, lsl #2 - ldr r1, [sp, #0x1c] - ldr r0, [r6, #4] - add r8, r8, r1 - mov r1, sl - bl DWCi_GsRealloc - cmp r0, #0 - beq _0225171C - str r0, [r6, #4] - mov r0, r7 - mov r1, sl - bl DWCi_GsRealloc - cmp r0, #0 - beq _02251708 - ldr r1, [r6, #4] - mov r7, r0 - str sb, [r1, r5, lsl #2] - str r4, [r0, r5, lsl #2] - add r5, r5, #1 - b _0225173C -_02251708: - mov r0, sb - bl DWCi_GsFree - mov r0, r4 - bl DWCi_GsFree - b _0225173C -_0225171C: - mov r0, sb - bl DWCi_GsFree - mov r0, r4 - bl DWCi_GsFree - b _0225173C -_02251730: - mov r0, sb - bl DWCi_GsFree - b _02251750 -_0225173C: - mov r0, r8 - add r1, sp, #0x1c - bl ciParseValue - movs sb, r0 - bne _02251698 -_02251750: - str r5, [r6, #0] -_02251754: - mov r0, #1 - str r0, [sp, #0x20] - ldr r0, [sp, #0x14] - str fp, [sp, #0x24] - str r5, [sp, #0x2c] - str r0, [sp, #0x28] - ldr r0, [r6, #4] - str r7, [sp, #0x34] - str r0, [sp, #0x30] - ldr r0, [r6, #8] - cmp r0, #0 - bne _02251798 - ldr r0, [sp, #0x10] - ldr r1, [sp, #0x18] - add r2, sp, #0x20 - bl ciFinishFilter - b _022517D8 -_02251798: - ldr r0, [sp, #0x18] - mov r1, #0 - ldr r0, [r0, #0x18] - add r3, sp, #0x20 - str r0, [sp] - ldr r0, [sp, #0x18] - ldr r2, [r0, #0x20] - mov r0, #0x18 - str r2, [sp, #4] - str r1, [sp, #8] - str r0, [sp, #0xc] - ldr r0, [sp, #0x18] - mov r1, #0x1e - ldr r2, [r0, #0x10] - ldr r0, [sp, #0x10] - bl ciAddCallback_ -_022517D8: - cmp r5, #0 - mov r4, #0 - ble _022517F8 -_022517E4: - ldr r0, [r7, r4, lsl #2] - bl DWCi_GsFree - add r4, r4, #1 - cmp r4, r5 - blt _022517E4 -_022517F8: - mov r0, r7 - bl DWCi_GsFree - add sp, sp, #0x54 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_02251808: .word Unk_ov66_0225A7A0 -_0225180C: .word Unk_ov66_0225A4D0 -_02251810: .word Unk_ov66_02259FC4 -_02251814: .word 0x00000BFC -_02251818: .word Unk_ov66_0225A7B8 -_0225181C: .word Unk_ov66_0225A7C0 - arm_func_end ciRplGetCKeyHandler - - arm_func_start ciRplEndGetCKeyHandler -ciRplEndGetCKeyHandler: ; 0x02251820 - stmfd sp!, {r4, r5, lr} - sub sp, sp, #0x24 - mov r4, r1 - ldr r1, [r4, #0x24] - mov r5, r0 - cmp r1, #4 - beq _02251850 - ldr r0, _022518E0 ; =0x0225A70C - ldr r1, _022518E4 ; =0x0225A4D0 - ldr r2, _022518E8 ; =0x0225A0E8 - mov r3, #0xcb0 - bl __msl_assertion_failed -_02251850: - ldr r0, [r4, #0x24] - cmp r0, #4 - addne sp, sp, #0x24 - ldmneia sp!, {r4, r5, pc} - ldr r0, [r4, #0x20] - add r2, sp, #0x18 - ldmib r0, {r4, lr} - mov ip, #0 - str ip, [r2, #4] - mov r0, r5 - str ip, [r2] - mov r3, #0xd - mov r1, #1 - str ip, [r2, #8] - str r3, [sp, #0x18] - str lr, [sp, #0x1c] - bl ciFindFilter - movs r1, r0 - addeq sp, sp, #0x24 - ldmeqia sp!, {r4, r5, pc} - ldr r3, [r1, #0x1c] - mov ip, #0 - mov r0, #1 - str r4, [sp, #4] - str ip, [sp, #8] - str r0, [sp] - ldr r0, [r3, #0] - add r2, sp, #0 - str r0, [sp, #0xc] - ldr r3, [r3, #4] - mov r0, r5 - str r3, [sp, #0x10] - str ip, [sp, #0x14] - bl ciFinishFilter - add sp, sp, #0x24 - ldmia sp!, {r4, r5, pc} - ; .align 2, 0 -_022518E0: .word Unk_ov66_0225A70C -_022518E4: .word Unk_ov66_0225A4D0 -_022518E8: .word Unk_ov66_0225A0E8 - arm_func_end ciRplEndGetCKeyHandler - - arm_func_start ciRplGetChanKeyHandler -ciRplGetChanKeyHandler: ; 0x022518EC - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x58 - mov r4, r1 - ldr r1, [r4, #0x24] - str r0, [sp, #0x10] - cmp r1, #4 - beq _0225191C - ldr r0, _02251D54 ; =0x0225A70C - ldr r1, _02251D58 ; =0x0225A4D0 - ldr r2, _02251D5C ; =0x0225A100 - ldr r3, _02251D60 ; =0x00000CE1 - bl __msl_assertion_failed -_0225191C: - ldr r0, [r4, #0x24] - cmp r0, #4 - addne sp, sp, #0x58 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r2, [r4, #0x20] - ldr r1, _02251D64 ; =0x0225A7B8 - ldmib r2, {r0, r5} - str r0, [sp, #0x18] - mov r0, r5 - ldr sb, [r2, #0xc] - bl strcmp - cmp r0, #0 - bne _02251A54 - ldr r0, [sp, #0x10] - ldr r1, [sp, #0x18] - bl ciGetChannelCallbacks - movs r8, r0 - ldrne r0, [r8, #0x28] - cmpne r0, #0 - addeq sp, sp, #0x58 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r7, sp, #0x3c - mov r1, #0 - str r1, [r7, #4] - ldr r0, [sp, #0x18] - str r1, [r7, #0] - str r1, [r7, #8] - str r1, [r7, #0xc] - str r1, [sp, #0x40] - str r0, [sp, #0x3c] - ldrsb r0, [sb] - cmp r0, #0 - addeq sp, sp, #0x58 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr fp, _02251D68 ; =0x0225A7C0 - mov r6, r1 - mov r5, r1 - mov r4, #0x10 -_022519B4: - mov r0, sb - mov r1, fp - bl strstr - mov sb, r0 - b _022519CC -_022519C8: - add sb, sb, #1 -_022519CC: - ldrsb r1, [sb] - cmp r1, #0 - cmpne r1, #0x5c - bne _022519C8 - cmp r1, #0 - addeq sp, sp, #0x58 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - strb r6, [sb], #1 - mov r1, sb - b _022519F8 -_022519F4: - add sb, sb, #1 -_022519F8: - ldrsb sl, [sb] - cmp sl, #0 - cmpne sl, #0x5c - bne _022519F4 - strb r5, [sb] - str r0, [sp, #0x44] - str r1, [sp, #0x48] - ldr r1, [r8, #0x2c] - ldr r0, [sp, #0x10] - stmia sp, {r1, r5} - ldr r1, [sp, #0x18] - mov r3, r7 - str r1, [sp, #8] - str r4, [sp, #0xc] - ldr r2, [r8, #0x28] - mov r1, #0x1c - bl ciAddCallback_ - strb sl, [sb] - ldrsb r0, [sb] - cmp r0, #0 - bne _022519B4 - add sp, sp, #0x58 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02251A54: - add r2, sp, #0x4c - mov r4, #0 - str r4, [r2, #4] - ldr r0, [sp, #0x10] - str r4, [r2, #0] - mov r3, #0xe - mov r1, #1 - str r4, [r2, #8] - str r3, [sp, #0x4c] - str r5, [sp, #0x50] - bl ciFindFilter - str r0, [sp, #0x1c] - cmp r0, #0 - addeq sp, sp, #0x58 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r4, [r0, #0x1c] - ldr sl, [r4] - cmp sl, #0 - beq _02251BD0 - mov r0, sl, lsl #2 - bl DWCi_GsMalloc - movs r5, r0 - addeq sp, sp, #0x58 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp sl, #0 - mov r7, #0 - ble _02251AEC - add r6, sp, #0x20 -_02251AC4: - mov r0, sb - mov r1, r6 - bl ciParseValue - str r0, [r5, r7, lsl #2] - cmp r0, #0 - ldrne r0, [sp, #0x20] - add r7, r7, #1 - addne sb, sb, r0 - cmp r7, sl - blt _02251AC4 -_02251AEC: - ldr r0, [r4, #8] - cmp r0, #0 - beq _02251CEC - add r1, sp, #0x20 - mov r0, sb - bl ciParseValue - movs r7, r0 - beq _02251BC8 - add fp, sp, #0x20 -_02251B10: - ldr r0, [sp, #0x20] - mov r1, fp - add sb, sb, r0 - mov r0, sb - bl ciParseValue - movs r6, r0 - beq _02251BA8 - add r0, sl, #1 - mov r8, r0, lsl #2 - ldr r2, [sp, #0x20] - ldr r0, [r4, #4] - mov r1, r8 - add sb, sb, r2 - bl DWCi_GsRealloc - cmp r0, #0 - beq _02251B94 - str r0, [r4, #4] - mov r0, r5 - mov r1, r8 - bl DWCi_GsRealloc - cmp r0, #0 - beq _02251B80 - ldr r1, [r4, #4] - mov r5, r0 - str r7, [r1, sl, lsl #2] - str r6, [r0, sl, lsl #2] - add sl, sl, #1 - b _02251BB4 -_02251B80: - mov r0, r7 - bl DWCi_GsFree - mov r0, r6 - bl DWCi_GsFree - b _02251BB4 -_02251B94: - mov r0, r7 - bl DWCi_GsFree - mov r0, r6 - bl DWCi_GsFree - b _02251BB4 -_02251BA8: - mov r0, r7 - bl DWCi_GsFree - b _02251BC8 -_02251BB4: - mov r0, sb - mov r1, fp - bl ciParseValue - movs r7, r0 - bne _02251B10 -_02251BC8: - str sl, [r4] - b _02251CEC -_02251BD0: - mov r6, #0 - mov r5, r6 - mov sl, r6 -_02251BDC: - add r1, sp, #0x20 - mov r0, sb - bl ciParseValue - movs fp, r0 - beq _02251CE4 - ldr r0, [sp, #0x20] - add r1, sp, #0x20 - add sb, sb, r0 - mov r0, sb - bl ciParseValue - str r0, [sp, #0x14] - cmp r0, #0 - bne _02251C1C - mov r0, fp - bl DWCi_GsFree - b _02251CE4 -_02251C1C: - add r0, sl, #1 - mov r7, r0, lsl #2 - ldr r2, [sp, #0x20] - mov r0, r6 - mov r1, r7 - add sb, sb, r2 - bl DWCi_GsRealloc - mov r1, r7 - mov r7, r0 - mov r0, r5 - bl DWCi_GsRealloc - mov r8, r0 - cmp r7, #0 - cmpne r8, #0 - bne _02251CC8 - mov r0, fp - bl DWCi_GsFree - ldr r0, [sp, #0x14] - bl DWCi_GsFree - cmp sl, #0 - sub sl, sl, #1 - beq _02251C90 -_02251C74: - ldr r0, [r6, sl, lsl #2] - bl DWCi_GsFree - ldr r0, [r5, sl, lsl #2] - bl DWCi_GsFree - cmp sl, #0 - sub sl, sl, #1 - bne _02251C74 -_02251C90: - cmp r7, #0 - beq _02251CA4 - mov r0, r7 - bl DWCi_GsFree - b _02251CAC -_02251CA4: - mov r0, r6 - bl DWCi_GsFree -_02251CAC: - cmp r8, #0 - beq _02251CC0 - mov r0, r8 - bl DWCi_GsFree - b _02251CC8 -_02251CC0: - mov r0, r5 - bl DWCi_GsFree -_02251CC8: - ldr r0, [sp, #0x14] - str fp, [r7, sl, lsl #2] - str r0, [r8, sl, lsl #2] - mov r6, r7 - mov r5, r8 - add sl, sl, #1 - b _02251BDC -_02251CE4: - str sl, [r4] - str r6, [r4, #4] -_02251CEC: - mov r0, #1 - str r0, [sp, #0x24] - ldr r0, [sp, #0x18] - mov r1, #0 - str r0, [sp, #0x28] - str r1, [sp, #0x2c] - str sl, [sp, #0x30] - ldr r3, [r4, #4] - ldr r0, [sp, #0x10] - ldr r1, [sp, #0x1c] - add r2, sp, #0x24 - str r3, [sp, #0x34] - str r5, [sp, #0x38] - bl ciFinishFilter - cmp sl, #0 - mov r4, #0 - ble _02251D44 -_02251D30: - ldr r0, [r5, r4, lsl #2] - bl DWCi_GsFree - add r4, r4, #1 - cmp r4, sl - blt _02251D30 -_02251D44: - mov r0, r5 - bl DWCi_GsFree - add sp, sp, #0x58 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_02251D54: .word Unk_ov66_0225A70C -_02251D58: .word Unk_ov66_0225A4D0 -_02251D5C: .word Unk_ov66_0225A100 -_02251D60: .word 0x00000CE1 -_02251D64: .word Unk_ov66_0225A7B8 -_02251D68: .word Unk_ov66_0225A7C0 - arm_func_end ciRplGetChanKeyHandler - - arm_func_start ciRplUserIPHandler -ciRplUserIPHandler: ; 0x02251D6C - stmfd sp!, {r3, r4, r5, lr} - sub sp, sp, #0x80 - movs r4, r0 - mov r5, r1 - bne _02251D94 - ldr r0, _02251E34 ; =0x0225A4C0 - ldr r1, _02251E38 ; =0x0225A4D0 - ldr r2, _02251E3C ; =0x02259F74 - ldr r3, _02251E40 ; =0x00000DBD - bl __msl_assertion_failed -_02251D94: - ldr r0, [r5, #0x24] - cmp r0, #1 - bge _02251DB4 - ldr r0, _02251E44 ; =0x0225A7C4 - ldr r1, _02251E38 ; =0x0225A4D0 - ldr r2, _02251E3C ; =0x02259F74 - ldr r3, _02251E48 ; =0x00000DC3 - bl __msl_assertion_failed -_02251DB4: - ldr r0, [r5, #0x24] - cmp r0, #1 - addlt sp, sp, #0x80 - ldmltia sp!, {r3, r4, r5, pc} - ldr r1, [r5, #0x20] - sub r0, r0, #1 - ldr r0, [r1, r0, lsl #2] - mov r1, #0x40 - bl strchr - cmp r0, #0 - ldrne r1, [r4, #0x10] - cmpne r1, #0 - beq _02251E24 - add r0, r0, #1 - bl inet_addr - mov r1, r0 - ldr r3, [r4, #0x18] - ldr ip, [r4, #0x10] - add r2, sp, #0 - mov r0, r4 - blx ip - add r0, r4, #0x2c - add r1, sp, #0 - add r0, r0, #0x400 - mov r2, #0x80 - bl strncpy - mov r0, #0 - strb r0, [r4, #0x4ab] -_02251E24: - mov r0, r4 - bl ciSendNickAndUser - add sp, sp, #0x80 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02251E34: .word Unk_ov66_0225A4C0 -_02251E38: .word Unk_ov66_0225A4D0 -_02251E3C: .word Unk_ov66_02259F74 -_02251E40: .word 0x00000DBD -_02251E44: .word Unk_ov66_0225A7C4 -_02251E48: .word 0x00000DC3 - arm_func_end ciRplUserIPHandler - - arm_func_start ciRplListStartHandler -ciRplListStartHandler: ; 0x02251E4C - stmfd sp!, {r3, r4, lr} - sub sp, sp, #0xc - add r2, sp, #0 - mov r3, #0 - str r3, [r2, #0] - mov r1, #1 - str r3, [r2, #4] - str r3, [r2, #8] - str r3, [sp] - bl ciFindFilter - cmp r0, #0 - addeq sp, sp, #0xc - ldmeqia sp!, {r3, r4, pc} - ldr r4, [r0, #0x1c] - cmp r4, #0 - bne _02251EA0 - ldr r0, _02251EB0 ; =0x0225A7DC - ldr r1, _02251EB4 ; =0x0225A4D0 - ldr r2, _02251EB8 ; =0x0225A0A0 - ldr r3, _02251EBC ; =0x00000DEF - bl __msl_assertion_failed -_02251EA0: - mov r0, #1 - str r0, [r4, #0] - add sp, sp, #0xc - ldmia sp!, {r3, r4, pc} - ; .align 2, 0 -_02251EB0: .word Unk_ov66_0225A7DC -_02251EB4: .word Unk_ov66_0225A4D0 -_02251EB8: .word Unk_ov66_0225A0A0 -_02251EBC: .word 0x00000DEF - arm_func_end ciRplListStartHandler - - arm_func_start ciRplListHandler -ciRplListHandler: ; 0x02251EC0 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x34 - mov sb, r1 - ldr r1, [sb, #0x24] - mov sl, r0 - cmp r1, #4 - beq _02251EF0 - ldr r0, _022520F4 ; =0x0225A70C - ldr r1, _022520F8 ; =0x0225A4D0 - ldr r2, _022520FC ; =0x02259EFC - ldr r3, _02252100 ; =0x00000E01 - bl __msl_assertion_failed -_02251EF0: - ldr r0, [sb, #0x24] - cmp r0, #4 - addne sp, sp, #0x34 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r2, sp, #0x28 - mov r3, #0 - str r3, [r2, #0] - mov r0, sl - mov r1, #1 - str r3, [r2, #4] - str r3, [r2, #8] - str r3, [sp, #0x28] - bl ciFindFilter - movs r7, r0 - ldrne r0, [r7, #0x10] - cmpne r0, #0 - addeq sp, sp, #0x34 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r8, [r7, #0x1c] - cmp r8, #0 - bne _02251F58 - ldr r0, _02252104 ; =0x0225A7DC - ldr r1, _022520F8 ; =0x0225A4D0 - ldr r2, _022520FC ; =0x02259EFC - ldr r3, _02252108 ; =0x00000E15 - bl __msl_assertion_failed -_02251F58: - ldr r0, [sb, #0x20] - ldr r0, [r0, #4] - bl strlen - mov r4, r0 - add r0, r4, #1 - bl DWCi_GsMalloc - movs r6, r0 - addeq sp, sp, #0x34 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [sb, #0x20] - add r2, r4, #1 - ldr r1, [r1, #4] - bl memcpy - ldr r0, [sb, #0x20] - ldr r0, [r0, #8] - bl atoi - ldr r1, [sb, #0x20] - mov r5, r0 - ldr r0, [r1, #0xc] - bl strlen - mov fp, r0 - add r0, fp, #1 - bl DWCi_GsMalloc - movs r4, r0 - bne _02251FCC - mov r0, r6 - bl DWCi_GsFree - add sp, sp, #0x34 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02251FCC: - ldr r1, [sb, #0x20] - add r2, fp, #1 - ldr r1, [r1, #0xc] - bl memcpy - ldr sb, [r8, #4] - mov r0, #1 - str sb, [sp, #0x14] - str r6, [sp, #0x18] - str r4, [sp, #0x1c] - str r5, [sp, #0x20] - str r0, [sp, #0x10] - ldr r0, [r7, #0x18] - mov r1, #0 - str r0, [sp] - ldr r2, [r7, #0x20] - mov r0, #0x18 - str r2, [sp, #4] - str r1, [sp, #8] - str r0, [sp, #0xc] - ldr r2, [r7, #0x10] - add r3, sp, #0x10 - mov r0, sl - mov r1, #0xd - bl ciAddCallback_ - ldr r1, [r8, #4] - ldr r0, [r8, #8] - add r1, r1, #1 - mov r1, r1, lsl #2 - bl DWCi_GsRealloc - cmp r0, #0 - bne _02252060 - mov r0, r6 - bl DWCi_GsFree - mov r0, r4 - bl DWCi_GsFree - add sp, sp, #0x34 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02252060: - str r0, [r8, #8] - str r6, [r0, sb, lsl #2] - ldr r1, [r8, #4] - ldr r0, [r8, #0xc] - add r1, r1, #1 - mov r1, r1, lsl #2 - bl DWCi_GsRealloc - cmp r0, #0 - bne _0225209C - mov r0, r6 - bl DWCi_GsFree - mov r0, r4 - bl DWCi_GsFree - add sp, sp, #0x34 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0225209C: - str r0, [r8, #0xc] - str r5, [r0, sb, lsl #2] - ldr r1, [r8, #4] - ldr r0, [r8, #0x10] - add r1, r1, #1 - mov r1, r1, lsl #2 - bl DWCi_GsRealloc - cmp r0, #0 - bne _022520D8 - mov r0, r6 - bl DWCi_GsFree - mov r0, r4 - bl DWCi_GsFree - add sp, sp, #0x34 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022520D8: - str r0, [r8, #0x10] - str r4, [r0, sb, lsl #2] - ldr r0, [r8, #4] - add r0, r0, #1 - str r0, [r8, #4] - add sp, sp, #0x34 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_022520F4: .word Unk_ov66_0225A70C -_022520F8: .word Unk_ov66_0225A4D0 -_022520FC: .word Unk_ov66_02259EFC -_02252100: .word 0x00000E01 -_02252104: .word Unk_ov66_0225A7DC -_02252108: .word 0x00000E15 - arm_func_end ciRplListHandler - - arm_func_start ciRplListEndHandler -ciRplListEndHandler: ; 0x0225210C - stmfd sp!, {r4, lr} - sub sp, sp, #0x20 - add r2, sp, #0x14 - mov r3, #0 - str r3, [r2, #0] - mov r1, #1 - mov r4, r0 - str r3, [r2, #4] - str r3, [r2, #8] - str r3, [sp, #0x14] - bl ciFindFilter - movs r1, r0 - addeq sp, sp, #0x20 - ldmeqia sp!, {r4, pc} - ldr ip, [r1, #0x1c] - mov r0, #1 - str r0, [sp] - ldr r0, [ip, #4] - add r2, sp, #0 - str r0, [sp, #4] - ldr r3, [ip, #8] - mov r0, r4 - str r3, [sp, #8] - ldr r3, [ip, #0xc] - str r3, [sp, #0x10] - ldr r3, [ip, #0x10] - str r3, [sp, #0xc] - bl ciFinishFilter - add sp, sp, #0x20 - ldmia sp!, {r4, pc} - arm_func_end ciRplListEndHandler - - arm_func_start ciRplChannelModeIsHandler -ciRplChannelModeIsHandler: ; 0x02252184 - stmfd sp!, {r4, r5, r6, lr} - sub sp, sp, #0x70 - mov r4, r1 - ldr r1, [r4, #0x24] - mov r6, r0 - cmp r1, #3 - bge _022521B4 - ldr r0, _022522F4 ; =0x0225A7EC - ldr r1, _022522F8 ; =0x0225A4D0 - ldr r2, _022522FC ; =0x0225A1D0 - ldr r3, _02252300 ; =0x00000E93 - bl __msl_assertion_failed -_022521B4: - ldr r0, [r4, #0x24] - cmp r0, #3 - addlt sp, sp, #0x70 - ldmltia sp!, {r4, r5, r6, pc} - ldr r3, [r4, #0x20] - sub r2, r0, #3 - ldr r0, [r3, #8] - add r1, r3, #0xc - ldr r4, [r3, #4] - bl ciParseMode - movs r5, r0 - addeq sp, sp, #0x70 - ldmeqia sp!, {r4, r5, r6, pc} - add r3, sp, #0x50 - mov r0, #0 - mov r2, r3 - mov r1, r0 - stmia r2!, {r0, r1} - stmia r2!, {r0, r1} - stmia r2!, {r0, r1} - stmia r2, {r0, r1} - mov r0, r3 - mov r1, r5 - bl ciApplyChangesToMode - add r2, sp, #0x30 - mov r0, r6 - mov r1, r4 - bl ciGetChannelMode - cmp r0, #0 - bne _02252290 - add r2, sp, #0x50 - mov r0, r6 - mov r1, r4 - bl ciSetChannelMode - mov r0, r6 - mov r1, r4 - bl ciGetChannelCallbacks - cmp r0, #0 - ldrne r1, [r0, #0x18] - cmpne r1, #0 - beq _02252290 - add r1, sp, #0x50 - str r1, [sp, #0x14] - str r4, [sp, #0x10] - ldr r2, [r0, #0x2c] - mov r1, #0 - str r2, [sp] - stmib sp, {r1, r4} - mov r1, #8 - str r1, [sp, #0xc] - ldr r2, [r0, #0x18] - add r3, sp, #0x10 - mov r0, r6 - mov r1, #0xa - bl ciAddCallback_ -_02252290: - add r2, sp, #0x24 - mov ip, #0 - str ip, [r2, #4] - mov r0, r6 - str ip, [r2] - mov r3, #5 - mov r1, #1 - str ip, [r2, #8] - str r3, [sp, #0x24] - str r4, [sp, #0x28] - bl ciFindFilter - movs r1, r0 - beq _022522E4 - add r3, sp, #0x50 - mov ip, #1 - add r2, sp, #0x18 - mov r0, r6 - str ip, [sp, #0x18] - str r4, [sp, #0x1c] - str r3, [sp, #0x20] - bl ciFinishFilter -_022522E4: - mov r0, r5 - bl DWCi_GsFree - add sp, sp, #0x70 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_022522F4: .word Unk_ov66_0225A7EC -_022522F8: .word Unk_ov66_0225A4D0 -_022522FC: .word Unk_ov66_0225A1D0 -_02252300: .word 0x00000E93 - arm_func_end ciRplChannelModeIsHandler - - arm_func_start ciRplWhoisUserHandler -ciRplWhoisUserHandler: ; 0x02252304 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x18 - movs r7, r0 - mov r6, r1 - bne _0225232C - ldr r0, _022524B8 ; =0x0225A4C0 - ldr r1, _022524BC ; =0x0225A4D0 - ldr r2, _022524C0 ; =0x0225A0B8 - ldr r3, _022524C4 ; =0x00000ED5 - bl __msl_assertion_failed -_0225232C: - ldr r0, [r6, #0x24] - cmp r0, #6 - beq _0225234C - ldr r0, _022524C8 ; =0x0225A804 - ldr r1, _022524BC ; =0x0225A4D0 - ldr r2, _022524C0 ; =0x0225A0B8 - ldr r3, _022524CC ; =0x00000EDB - bl __msl_assertion_failed -_0225234C: - ldr r0, [r6, #0x24] - cmp r0, #6 - addne sp, sp, #0x18 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r6, #0x20] - add r2, sp, #0 - ldr ip, [r0, #4] - mov r5, #0 - str r5, [r2, #4] - str r5, [r2, #0x10] - mov r0, r7 - str r5, [r2, #0] - mov r4, #4 - str r5, [r2, #0xc] - mov r3, #7 - mov r1, #2 - str r5, [r2, #8] - str r5, [r2, #0x14] - str r4, [sp] - str ip, [sp, #4] - str r3, [sp, #0xc] - str ip, [sp, #0x10] - bl ciFindFilter - movs r4, r0 - addeq sp, sp, #0x18 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r4, #0] - cmp r0, #4 - bne _02252418 - ldr r1, [r6, #0x20] - ldr r6, [r4, #0x1c] - ldr r0, [r1, #8] - ldr r4, [r1, #0x14] - ldr r5, [r1, #0xc] - bl goastrdup - cmp r0, #0 - addeq sp, sp, #0x18 - str r0, [r6, #0] - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r4 - bl goastrdup - cmp r0, #0 - addeq sp, sp, #0x18 - str r0, [r6, #4] - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r5 - bl goastrdup - add sp, sp, #0x18 - str r0, [r6, #8] - cmp r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02252418: - cmp r0, #7 - addne sp, sp, #0x18 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r5, [r4, #0x1c] - cmp r5, #0 - bne _02252444 - ldr r0, _022524D0 ; =0x0225A7DC - ldr r1, _022524BC ; =0x0225A4D0 - ldr r2, _022524C0 ; =0x0225A0B8 - ldr r3, _022524D4 ; =0x00000F1D - bl __msl_assertion_failed -_02252444: - ldr r0, [r5, #0] - cmp r0, #0 - bne _02252464 - ldr r0, _022524D8 ; =0x0225A81C - ldr r1, _022524BC ; =0x0225A4D0 - ldr r2, _022524C0 ; =0x0225A0B8 - ldr r3, _022524DC ; =0x00000F1E - bl __msl_assertion_failed -_02252464: - ldr r0, [r5, #0] - ldrsb r0, [r0] - cmp r0, #0 - bne _02252488 - ldr r0, _022524E0 ; =0x0225A834 - ldr r1, _022524BC ; =0x0225A4D0 - ldr r2, _022524C0 ; =0x0225A0B8 - ldr r3, _022524DC ; =0x00000F1E - bl __msl_assertion_failed -_02252488: - ldr r0, [r6, #0x20] - ldr r2, [r5, #0] - ldr r3, [r0, #0xc] - ldr r1, _022524E4 ; =0x0225A850 - add r0, r7, #0x1c - bl ciSocketSendf - mov r0, r7 - mov r1, r4 - mov r2, #0 - bl ciFinishFilter - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_022524B8: .word Unk_ov66_0225A4C0 -_022524BC: .word Unk_ov66_0225A4D0 -_022524C0: .word Unk_ov66_0225A0B8 -_022524C4: .word 0x00000ED5 -_022524C8: .word Unk_ov66_0225A804 -_022524CC: .word 0x00000EDB -_022524D0: .word Unk_ov66_0225A7DC -_022524D4: .word 0x00000F1D -_022524D8: .word Unk_ov66_0225A81C -_022524DC: .word 0x00000F1E -_022524E0: .word Unk_ov66_0225A834 -_022524E4: .word Unk_ov66_0225A850 - arm_func_end ciRplWhoisUserHandler - - arm_func_start ciRplWhoisChannelsHandler -ciRplWhoisChannelsHandler: ; 0x022524E8 - stmfd sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0xc - mov r6, r1 - ldr r1, [r6, #0x24] - mov r7, r0 - cmp r1, #3 - beq _02252518 - ldr r0, _0225261C ; =0x0225A748 - ldr r1, _02252620 ; =0x0225A4D0 - ldr r2, _02252624 ; =0x0225A1EC - ldr r3, _02252628 ; =0x00000F34 - bl __msl_assertion_failed -_02252518: - ldr r0, [r6, #0x24] - cmp r0, #3 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, pc} - ldr r0, [r6, #0x20] - add r2, sp, #0 - ldr r5, [r0, #4] - mov r4, #0 - str r4, [r2, #4] - mov r0, r7 - str r4, [r2, #0] - mov r3, #4 - mov r1, #1 - str r4, [r2, #8] - str r3, [sp] - str r5, [sp, #4] - bl ciFindFilter - cmp r0, #0 - addeq sp, sp, #0xc - ldmeqia sp!, {r4, r5, r6, r7, pc} - ldr r1, [r6, #0x20] - ldr r4, [r0, #0x1c] - ldr r0, [r1, #8] - ldr r1, _0225262C ; =0x0225A724 - bl strtok - cmp r0, #0 - addeq sp, sp, #0xc - ldmeqia sp!, {r4, r5, r6, r7, pc} - ldr r5, _0225262C ; =0x0225A724 - mov r6, #0 -_02252590: - ldrsb r1, [r0] - cmp r1, #0x2d - addeq r0, r0, #1 - ldrsb r1, [r0] - cmp r1, #0x40 - cmpne r1, #0x2b - addeq r0, r0, #1 - bl goastrdup - movs r7, r0 - addeq sp, sp, #0xc - ldmeqia sp!, {r4, r5, r6, r7, pc} - ldr r1, [r4, #0xc] - ldr r0, [r4, #0x10] - add r1, r1, #1 - mov r1, r1, lsl #2 - bl DWCi_GsRealloc - cmp r0, #0 - bne _022525E8 - mov r0, r7 - bl DWCi_GsFree - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, pc} -_022525E8: - str r0, [r4, #0x10] - ldr r1, [r4, #0xc] - str r7, [r0, r1, lsl #2] - ldr r1, [r4, #0xc] - mov r0, r6 - add r2, r1, #1 - mov r1, r5 - str r2, [r4, #0xc] - bl strtok - cmp r0, #0 - bne _02252590 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, pc} - ; .align 2, 0 -_0225261C: .word Unk_ov66_0225A748 -_02252620: .word Unk_ov66_0225A4D0 -_02252624: .word Unk_ov66_0225A1EC -_02252628: .word 0x00000F34 -_0225262C: .word Unk_ov66_0225A724 - arm_func_end ciRplWhoisChannelsHandler - - arm_func_start ciRplEndOfWhoisHandler -ciRplEndOfWhoisHandler: ; 0x02252630 - stmfd sp!, {r3, r4, r5, lr} - sub sp, sp, #0x28 - mov r5, r1 - ldr r1, [r5, #0x24] - mov r4, r0 - cmp r1, #3 - beq _02252660 - ldr r0, _02252708 ; =0x0225A748 - ldr r1, _0225270C ; =0x0225A4D0 - ldr r2, _02252710 ; =0x0225A118 - ldr r3, _02252714 ; =0x00000F76 - bl __msl_assertion_failed -_02252660: - ldr r0, [r5, #0x24] - cmp r0, #3 - addne sp, sp, #0x28 - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, [r5, #0x20] - add r2, sp, #0x1c - ldr r5, [r0, #4] - mov ip, #0 - str ip, [r2, #4] - mov r0, r4 - str ip, [r2] - mov r3, #4 - mov r1, #1 - str ip, [r2, #8] - str r3, [sp, #0x1c] - str r5, [sp, #0x20] - bl ciFindFilter - movs r1, r0 - addeq sp, sp, #0x28 - ldmeqia sp!, {r3, r4, r5, pc} - ldr ip, [r1, #0x1c] - add r2, sp, #0 - ldr r0, [ip] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - str r5, [sp, #4] - str r0, [sp] - ldr r0, [ip] - str r0, [sp, #8] - ldr r3, [ip, #4] - mov r0, r4 - str r3, [sp, #0xc] - ldr r3, [ip, #8] - str r3, [sp, #0x10] - ldr r3, [ip, #0xc] - str r3, [sp, #0x14] - ldr r3, [ip, #0x10] - str r3, [sp, #0x18] - bl ciFinishFilter - add sp, sp, #0x28 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02252708: .word Unk_ov66_0225A748 -_0225270C: .word Unk_ov66_0225A4D0 -_02252710: .word Unk_ov66_0225A118 -_02252714: .word 0x00000F76 - arm_func_end ciRplEndOfWhoisHandler - - arm_func_start ciRplBanListHandler -ciRplBanListHandler: ; 0x02252718 - stmfd sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0xc - mov r4, r1 - ldr r1, [r4, #0x24] - mov r5, r0 - cmp r1, #3 - bge _02252748 - ldr r0, _02252848 ; =0x0225A864 - ldr r1, _0225284C ; =0x0225A4D0 - ldr r2, _02252850 ; =0x02259FEC - ldr r3, _02252854 ; =0x00000F9D - bl __msl_assertion_failed -_02252748: - ldr r0, [r4, #0x24] - cmp r0, #3 - addlt sp, sp, #0xc - ldmltia sp!, {r4, r5, r6, r7, pc} - ldr r0, [r4, #0x20] - add r2, sp, #0 - ldr r7, [r0, #4] - ldr r4, [r0, #8] - mov r6, #0 - str r6, [r2, #4] - mov r0, r5 - str r6, [r2, #0] - mov r3, #8 - mov r1, #1 - str r6, [r2, #8] - str r3, [sp] - str r7, [sp, #4] - bl ciFindFilter - cmp r0, #0 - addeq sp, sp, #0xc - ldmeqia sp!, {r4, r5, r6, r7, pc} - ldr r5, [r0, #0x1c] - cmp r5, #0 - bne _022527BC - ldr r0, _02252858 ; =0x0225A7DC - ldr r1, _0225284C ; =0x0225A4D0 - ldr r2, _02252850 ; =0x02259FEC - ldr r3, _0225285C ; =0x00000FAF - bl __msl_assertion_failed -_022527BC: - ldr r0, [r5, #0] - cmp r0, #0 - bge _022527DC - ldr r0, _02252860 ; =0x0225A87C - ldr r1, _0225284C ; =0x0225A4D0 - ldr r2, _02252850 ; =0x02259FEC - mov r3, #0xfb0 - bl __msl_assertion_failed -_022527DC: - ldr r1, [r5, #0] - ldr r0, [r5, #4] - add r1, r1, #1 - mov r1, r1, lsl #2 - bl DWCi_GsRealloc - cmp r0, #0 - addeq sp, sp, #0xc - ldmeqia sp!, {r4, r5, r6, r7, pc} - str r0, [r5, #4] - mov r0, r4 - bl strlen - mov r7, r0 - add r0, r7, #1 - bl DWCi_GsMalloc - movs r6, r0 - addeq sp, sp, #0xc - ldmeqia sp!, {r4, r5, r6, r7, pc} - mov r1, r4 - add r2, r7, #1 - bl memcpy - ldmia r5, {r0, r1} - str r6, [r1, r0, lsl #2] - ldr r0, [r5, #0] - add r0, r0, #1 - str r0, [r5, #0] - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, pc} - ; .align 2, 0 -_02252848: .word Unk_ov66_0225A864 -_0225284C: .word Unk_ov66_0225A4D0 -_02252850: .word Unk_ov66_02259FEC -_02252854: .word 0x00000F9D -_02252858: .word Unk_ov66_0225A7DC -_0225285C: .word 0x00000FAF -_02252860: .word Unk_ov66_0225A87C - arm_func_end ciRplBanListHandler - - arm_func_start ciRplEndOfBanListHandler -ciRplEndOfBanListHandler: ; 0x02252864 - stmfd sp!, {r4, r5, lr} - sub sp, sp, #0x1c - mov r5, r1 - ldr r1, [r5, #0x24] - mov r4, r0 - cmp r1, #3 - beq _02252894 - ldr r0, _02252918 ; =0x0225A748 - ldr r1, _0225291C ; =0x0225A4D0 - ldr r2, _02252920 ; =0x0225A17C - ldr r3, _02252924 ; =0x00000FCF - bl __msl_assertion_failed -_02252894: - ldr r0, [r5, #0x24] - cmp r0, #3 - addne sp, sp, #0x1c - ldmneia sp!, {r4, r5, pc} - ldr r0, [r5, #0x20] - add r2, sp, #0x10 - ldr r5, [r0, #4] - mov ip, #0 - str ip, [r2, #4] - mov r0, r4 - str ip, [r2] - mov r3, #8 - mov r1, #1 - str ip, [r2, #8] - str r3, [sp, #0x10] - str r5, [sp, #0x14] - bl ciFindFilter - movs r1, r0 - addeq sp, sp, #0x1c - ldmeqia sp!, {r4, r5, pc} - ldr r3, [r1, #0x1c] - mov r0, #1 - str r5, [sp, #4] - str r0, [sp] - ldr r0, [r3, #0] - add r2, sp, #0 - str r0, [sp, #8] - ldr r3, [r3, #4] - mov r0, r4 - str r3, [sp, #0xc] - bl ciFinishFilter - add sp, sp, #0x1c - ldmia sp!, {r4, r5, pc} - ; .align 2, 0 -_02252918: .word Unk_ov66_0225A748 -_0225291C: .word Unk_ov66_0225A4D0 -_02252920: .word Unk_ov66_0225A17C -_02252924: .word 0x00000FCF - arm_func_end ciRplEndOfBanListHandler - - arm_func_start ciRplWelcomeHandler -ciRplWelcomeHandler: ; 0x02252928 - stmfd sp!, {r3, r4, r5, lr} - movs r4, r0 - mov r5, r1 - bne _0225294C - ldr r0, _022529D8 ; =0x0225A4C0 - ldr r1, _022529DC ; =0x0225A4D0 - ldr r2, _022529E0 ; =0x0225A014 - ldr r3, _022529E4 ; =0x00000FEC - bl __msl_assertion_failed -_0225294C: - ldr r0, [r5, #0x24] - cmp r0, #2 - beq _0225296C - ldr r0, _022529E8 ; =0x0225A5F0 - ldr r1, _022529DC ; =0x0225A4D0 - ldr r2, _022529E0 ; =0x0225A014 - ldr r3, _022529EC ; =0x00000FF2 - bl __msl_assertion_failed -_0225296C: - ldr r0, [r5, #0x24] - cmp r0, #2 - ldmneia sp!, {r3, r4, r5, pc} - ldr r1, [r5, #0x20] - add r0, r4, #0x36c - ldr r5, [r1, #0] - mov r1, r5 - bl strcmp - cmp r0, #0 - beq _022529AC - mov r1, r5 - add r0, r4, #0x36c - mov r2, #0x40 - bl strncpy - mov r0, #0 - strb r0, [r4, #0x3ab] -_022529AC: - mov r2, #0 - str r2, [r4, #4] - mov r1, #1 - str r1, [r4, #0] - ldr ip, [r4, #0x14] - cmp ip, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r3, [r4, #0x18] - mov r0, r4 - blx ip - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_022529D8: .word Unk_ov66_0225A4C0 -_022529DC: .word Unk_ov66_0225A4D0 -_022529E0: .word Unk_ov66_0225A014 -_022529E4: .word 0x00000FEC -_022529E8: .word Unk_ov66_0225A5F0 -_022529EC: .word 0x00000FF2 - arm_func_end ciRplWelcomeHandler - - arm_func_start ciRplSecureKeyHandler -ciRplSecureKeyHandler: ; 0x022529F0 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - movs r6, r0 - mov r4, r1 - bne _02252A14 - ldr r0, _02252AF4 ; =0x0225A4C0 - ldr r1, _02252AF8 ; =0x0225A4D0 - ldr r2, _02252AFC ; =0x0225A070 - ldr r3, _02252B00 ; =0x00001015 - bl __msl_assertion_failed -_02252A14: - ldr r0, [r4, #0x24] - cmp r0, #3 - beq _02252A34 - ldr r0, _02252B04 ; =0x0225A748 - ldr r1, _02252AF8 ; =0x0225A4D0 - ldr r2, _02252AFC ; =0x0225A070 - ldr r3, _02252B08 ; =0x0000101B - bl __msl_assertion_failed -_02252A34: - ldr r0, [r4, #0x24] - cmp r0, #3 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - ldr r0, [r4, #0x20] - ldmib r0, {r4, r5} - mov r0, r4 - bl strlen - mov r8, r0 - mov r0, r5 - bl strlen - add r2, r6, #0x28 - mov r7, r0 - mov r0, r4 - mov r1, r8 - add r2, r2, #0x800 - bl gs_xcode_buf - add r2, r6, #0x28 - mov r0, r5 - mov r1, r7 - add r2, r2, #0x800 - bl gs_xcode_buf - add r2, r6, #0x42 - mov r0, r4 - mov r1, r8 - add r2, r2, #0x200 - bl gs_prepare_key - mov r0, r5 - mov r1, r7 - add r2, r6, #0x140 - bl gs_prepare_key - mov r0, #1 - str r0, [r6, #0x13c] - ldr r0, [r6, #0x8a8] - cmp r0, #0 - beq _02252ACC - mov r0, r6 - bl ciSendLogin - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02252ACC: - ldr r0, [r6, #0x10] - cmp r0, #0 - beq _02252AE8 - ldr r1, _02252B0C ; =0x0225A890 - add r0, r6, #0x1c - bl ciSocketSend - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02252AE8: - mov r0, r6 - bl ciSendNickAndUser - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_02252AF4: .word Unk_ov66_0225A4C0 -_02252AF8: .word Unk_ov66_0225A4D0 -_02252AFC: .word Unk_ov66_0225A070 -_02252B00: .word 0x00001015 -_02252B04: .word Unk_ov66_0225A748 -_02252B08: .word 0x0000101B -_02252B0C: .word Unk_ov66_0225A890 - arm_func_end ciRplSecureKeyHandler - - arm_func_start ciRplCDKeyHandler -ciRplCDKeyHandler: ; 0x02252B10 - stmfd sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0x14 - mov r5, r1 - ldr r1, [r5, #0x24] - mov r4, r0 - cmp r1, #3 - beq _02252B40 - ldr r0, _02252BB8 ; =0x0225A748 - ldr r1, _02252BBC ; =0x0225A4D0 - ldr r2, _02252BC0 ; =0x02259F24 - ldr r3, _02252BC4 ; =0x0000104E - bl __msl_assertion_failed -_02252B40: - ldr r0, [r5, #0x24] - cmp r0, #3 - addne sp, sp, #0x14 - ldmneia sp!, {r3, r4, r5, r6, pc} - ldr r0, [r5, #0x20] - ldr r0, [r0, #4] - bl atoi - ldr r1, [r5, #0x20] - mov r5, r0 - ldr r6, [r1, #8] - add r2, sp, #8 - mov ip, #0 - mov r0, r4 - str ip, [r2] - mov r3, #0x10 - mov r1, #1 - str ip, [r2, #4] - str ip, [r2, #8] - str r3, [sp, #8] - bl ciFindFilter - movs r1, r0 - addeq sp, sp, #0x14 - ldmeqia sp!, {r3, r4, r5, r6, pc} - add r2, sp, #0 - mov r0, r4 - str r5, [sp] - str r6, [sp, #4] - bl ciFinishFilter - add sp, sp, #0x14 - ldmia sp!, {r3, r4, r5, r6, pc} - ; .align 2, 0 -_02252BB8: .word Unk_ov66_0225A748 -_02252BBC: .word Unk_ov66_0225A4D0 -_02252BC0: .word Unk_ov66_02259F24 -_02252BC4: .word 0x0000104E - arm_func_end ciRplCDKeyHandler - - arm_func_start ciRplLoginHandler -ciRplLoginHandler: ; 0x02252BC8 - stmfd sp!, {r3, r4, r5, lr} - movs r5, r0 - mov r4, r1 - bne _02252BEC - ldr r0, _02252C60 ; =0x0225A4C0 - ldr r1, _02252C64 ; =0x0225A4D0 - ldr r2, _02252C68 ; =0x02259F38 - ldr r3, _02252C6C ; =0x00001069 - bl __msl_assertion_failed -_02252BEC: - ldr r0, [r4, #0x24] - cmp r0, #3 - bge _02252C0C - ldr r0, _02252C70 ; =0x0225A864 - ldr r1, _02252C64 ; =0x0225A4D0 - ldr r2, _02252C68 ; =0x02259F38 - ldr r3, _02252C74 ; =0x0000106F - bl __msl_assertion_failed -_02252C0C: - ldr r0, [r4, #0x24] - cmp r0, #3 - ldmltia sp!, {r3, r4, r5, pc} - ldr r0, [r4, #0x20] - ldr r0, [r0, #4] - bl atoi - str r0, [r5, #0x8ac] - ldr r0, [r4, #0x20] - ldr r0, [r0, #8] - bl atoi - str r0, [r5, #0x8b0] - ldr r0, [r5, #0x10] - cmp r0, #0 - beq _02252C54 - ldr r1, _02252C78 ; =0x0225A890 - add r0, r5, #0x1c - bl ciSocketSend - ldmia sp!, {r3, r4, r5, pc} -_02252C54: - mov r0, r5 - bl ciSendNickAndUser - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02252C60: .word Unk_ov66_0225A4C0 -_02252C64: .word Unk_ov66_0225A4D0 -_02252C68: .word Unk_ov66_02259F38 -_02252C6C: .word 0x00001069 -_02252C70: .word Unk_ov66_0225A864 -_02252C74: .word 0x0000106F -_02252C78: .word Unk_ov66_0225A890 - arm_func_end ciRplLoginHandler - - arm_func_start ciErrNoSuchChannelHandler -ciErrNoSuchChannelHandler: ; 0x02252C7C - stmfd sp!, {r4, r5, lr} - sub sp, sp, #0x44 - mov r4, r1 - ldr r1, [r4, #0x24] - mov r5, r0 - cmp r1, #3 - beq _02252CAC - ldr r0, _02252DA8 ; =0x0225A748 - ldr r1, _02252DAC ; =0x0225A4D0 - ldr r2, _02252DB0 ; =0x0225A1B4 - ldr r3, _02252DB4 ; =0x00001090 - bl __msl_assertion_failed -_02252CAC: - ldr r0, [r4, #0x24] - cmp r0, #3 - addne sp, sp, #0x44 - ldmneia sp!, {r4, r5, pc} - ldr r0, [r4, #0x20] - add r2, sp, #0x2c - ldr r4, [r0, #4] - mov lr, #0 - str lr, [r2, #4] - mov r3, #5 - mov r0, r5 - str lr, [r2] - mov ip, #1 - mov r1, #2 - str lr, [r2, #8] - str ip, [sp, #0x2c] - str r4, [sp, #0x30] - str r3, [sp, #0x38] - str r4, [sp, #0x3c] - bl ciFindFilter - movs r1, r0 - beq _02252D64 - ldr r0, [r1, #0] - cmp r0, #1 - bne _02252D38 - mov ip, #0 - mov r3, #1 - add r2, sp, #0x20 - mov r0, r5 - str ip, [sp, #0x20] - str r3, [sp, #0x24] - str r4, [sp, #0x28] - bl ciFinishFilter - add sp, sp, #0x44 - ldmia sp!, {r4, r5, pc} -_02252D38: - cmp r0, #5 - bne _02252D64 - mov r3, #0 - add r2, sp, #0x14 - mov r0, r5 - str r3, [sp, #0x14] - str r4, [sp, #0x18] - str r3, [sp, #0x1c] - bl ciFinishFilter - add sp, sp, #0x44 - ldmia sp!, {r4, r5, pc} -_02252D64: - mov r0, r5 - mov r1, r4 - bl ciFindGetKeyFilter - movs r1, r0 - addeq sp, sp, #0x44 - ldmeqia sp!, {r4, r5, pc} - mov r3, #0 - add r2, sp, #0 - mov r0, r5 - str r3, [sp] - str r3, [sp, #4] - str r3, [sp, #8] - str r3, [sp, #0xc] - str r3, [sp, #0x10] - bl ciFinishFilter - add sp, sp, #0x44 - ldmia sp!, {r4, r5, pc} - ; .align 2, 0 -_02252DA8: .word Unk_ov66_0225A748 -_02252DAC: .word Unk_ov66_0225A4D0 -_02252DB0: .word Unk_ov66_0225A1B4 -_02252DB4: .word 0x00001090 - arm_func_end ciErrNoSuchChannelHandler - - arm_func_start ciErrTooManyChannelsHandler -ciErrTooManyChannelsHandler: ; 0x02252DB8 - stmfd sp!, {r3, r4, r5, lr} - sub sp, sp, #0x18 - mov r5, r1 - ldr r1, [r5, #0x24] - mov r4, r0 - cmp r1, #3 - beq _02252DE8 - ldr r0, _02252E5C ; =0x0225A748 - ldr r1, _02252E60 ; =0x0225A4D0 - ldr r2, _02252E64 ; =0x0225A294 - ldr r3, _02252E68 ; =0x000010DE - bl __msl_assertion_failed -_02252DE8: - ldr r0, [r5, #0x24] - cmp r0, #3 - addne sp, sp, #0x18 - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, [r5, #0x20] - add r2, sp, #0xc - ldr r5, [r0, #4] - mov r3, #0 - str r3, [r2, #4] - mov r0, r4 - str r3, [r2, #0] - mov r1, #1 - str r3, [r2, #8] - str r1, [sp, #0xc] - str r5, [sp, #0x10] - bl ciFindFilter - movs r1, r0 - addeq sp, sp, #0x18 - ldmeqia sp!, {r3, r4, r5, pc} - mov ip, #0 - mov r3, #6 - add r2, sp, #0 - mov r0, r4 - str ip, [sp] - str r3, [sp, #4] - str r5, [sp, #8] - bl ciFinishFilter - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02252E5C: .word Unk_ov66_0225A748 -_02252E60: .word Unk_ov66_0225A4D0 -_02252E64: .word Unk_ov66_0225A294 -_02252E68: .word 0x000010DE - arm_func_end ciErrTooManyChannelsHandler - - arm_func_start ciErrChannelIsFullHandler -ciErrChannelIsFullHandler: ; 0x02252E6C - stmfd sp!, {r3, r4, r5, lr} - sub sp, sp, #0x18 - mov r5, r1 - ldr r1, [r5, #0x24] - mov r4, r0 - cmp r1, #3 - beq _02252E9C - ldr r0, _02252F10 ; =0x0225A748 - ldr r1, _02252F14 ; =0x0225A4D0 - ldr r2, _02252F18 ; =0x0225A208 - ldr r3, _02252F1C ; =0x00001101 - bl __msl_assertion_failed -_02252E9C: - ldr r0, [r5, #0x24] - cmp r0, #3 - addne sp, sp, #0x18 - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, [r5, #0x20] - add r2, sp, #0xc - ldr r5, [r0, #4] - mov r3, #0 - str r3, [r2, #4] - mov r0, r4 - str r3, [r2, #0] - mov r1, #1 - str r3, [r2, #8] - str r1, [sp, #0xc] - str r5, [sp, #0x10] - bl ciFindFilter - movs r1, r0 - addeq sp, sp, #0x18 - ldmeqia sp!, {r3, r4, r5, pc} - mov ip, #0 - mov r3, #2 - add r2, sp, #0 - mov r0, r4 - str ip, [sp] - str r3, [sp, #4] - str r5, [sp, #8] - bl ciFinishFilter - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02252F10: .word Unk_ov66_0225A748 -_02252F14: .word Unk_ov66_0225A4D0 -_02252F18: .word Unk_ov66_0225A208 -_02252F1C: .word 0x00001101 - arm_func_end ciErrChannelIsFullHandler - - arm_func_start ciErrInviteOnlyChanHandler -ciErrInviteOnlyChanHandler: ; 0x02252F20 - stmfd sp!, {r3, r4, r5, lr} - sub sp, sp, #0x18 - mov r5, r1 - ldr r1, [r5, #0x24] - mov r4, r0 - cmp r1, #3 - beq _02252F50 - ldr r0, _02252FC4 ; =0x0225A748 - ldr r1, _02252FC8 ; =0x0225A4D0 - ldr r2, _02252FCC ; =0x0225A25C - ldr r3, _02252FD0 ; =0x00001124 - bl __msl_assertion_failed -_02252F50: - ldr r0, [r5, #0x24] - cmp r0, #3 - addne sp, sp, #0x18 - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, [r5, #0x20] - add r2, sp, #0xc - ldr r5, [r0, #4] - mov r3, #0 - str r3, [r2, #4] - mov r0, r4 - str r3, [r2, #0] - mov r1, #1 - str r3, [r2, #8] - str r1, [sp, #0xc] - str r5, [sp, #0x10] - bl ciFindFilter - movs r1, r0 - addeq sp, sp, #0x18 - ldmeqia sp!, {r3, r4, r5, pc} - mov ip, #0 - mov r3, #3 - add r2, sp, #0 - mov r0, r4 - str ip, [sp] - str r3, [sp, #4] - str r5, [sp, #8] - bl ciFinishFilter - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02252FC4: .word Unk_ov66_0225A748 -_02252FC8: .word Unk_ov66_0225A4D0 -_02252FCC: .word Unk_ov66_0225A25C -_02252FD0: .word 0x00001124 - arm_func_end ciErrInviteOnlyChanHandler - - arm_func_start ciErrBannedFromChanHandler -ciErrBannedFromChanHandler: ; 0x02252FD4 - stmfd sp!, {r3, r4, r5, lr} - sub sp, sp, #0x18 - mov r5, r1 - ldr r1, [r5, #0x24] - mov r4, r0 - cmp r1, #3 - beq _02253004 - ldr r0, _02253078 ; =0x0225A748 - ldr r1, _0225307C ; =0x0225A4D0 - ldr r2, _02253080 ; =0x0225A278 - ldr r3, _02253084 ; =0x00001147 - bl __msl_assertion_failed -_02253004: - ldr r0, [r5, #0x24] - cmp r0, #3 - addne sp, sp, #0x18 - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, [r5, #0x20] - add r2, sp, #0xc - ldr r5, [r0, #4] - mov r3, #0 - str r3, [r2, #4] - mov r0, r4 - str r3, [r2, #0] - mov r1, #1 - str r3, [r2, #8] - str r1, [sp, #0xc] - str r5, [sp, #0x10] - bl ciFindFilter - movs r1, r0 - addeq sp, sp, #0x18 - ldmeqia sp!, {r3, r4, r5, pc} - mov ip, #0 - mov r3, #4 - add r2, sp, #0 - mov r0, r4 - str ip, [sp] - str r3, [sp, #4] - str r5, [sp, #8] - bl ciFinishFilter - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02253078: .word Unk_ov66_0225A748 -_0225307C: .word Unk_ov66_0225A4D0 -_02253080: .word Unk_ov66_0225A278 -_02253084: .word 0x00001147 - arm_func_end ciErrBannedFromChanHandler - - arm_func_start ciErrBadChannelKeyHandler -ciErrBadChannelKeyHandler: ; 0x02253088 - stmfd sp!, {r3, r4, r5, lr} - sub sp, sp, #0x18 - mov r5, r1 - ldr r1, [r5, #0x24] - mov r4, r0 - cmp r1, #3 - beq _022530B8 - ldr r0, _0225312C ; =0x0225A748 - ldr r1, _02253130 ; =0x0225A4D0 - ldr r2, _02253134 ; =0x0225A198 - ldr r3, _02253138 ; =0x0000116A - bl __msl_assertion_failed -_022530B8: - ldr r0, [r5, #0x24] - cmp r0, #3 - addne sp, sp, #0x18 - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, [r5, #0x20] - add r2, sp, #0xc - ldr r5, [r0, #4] - mov r3, #0 - str r3, [r2, #4] - mov r0, r4 - str r3, [r2, #0] - mov r1, #1 - str r3, [r2, #8] - str r1, [sp, #0xc] - str r5, [sp, #0x10] - bl ciFindFilter - movs r1, r0 - addeq sp, sp, #0x18 - ldmeqia sp!, {r3, r4, r5, pc} - mov ip, #0 - mov r3, #5 - add r2, sp, #0 - mov r0, r4 - str ip, [sp] - str r3, [sp, #4] - str r5, [sp, #8] - bl ciFinishFilter - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0225312C: .word Unk_ov66_0225A748 -_02253130: .word Unk_ov66_0225A4D0 -_02253134: .word Unk_ov66_0225A198 -_02253138: .word 0x0000116A - arm_func_end ciErrBadChannelKeyHandler - - arm_func_start ciErrBadChanMaskHandler -ciErrBadChanMaskHandler: ; 0x0225313C - stmfd sp!, {r3, r4, r5, lr} - sub sp, sp, #0x18 - mov r5, r1 - ldr r1, [r5, #0x24] - mov r4, r0 - cmp r1, #3 - beq _0225316C - ldr r0, _022531E0 ; =0x0225A748 - ldr r1, _022531E4 ; =0x0225A4D0 - ldr r2, _022531E8 ; =0x0225A130 - ldr r3, _022531EC ; =0x0000118D - bl __msl_assertion_failed -_0225316C: - ldr r0, [r5, #0x24] - cmp r0, #3 - addne sp, sp, #0x18 - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, [r5, #0x20] - add r2, sp, #0xc - ldr r5, [r0, #4] - mov r3, #0 - str r3, [r2, #4] - mov r0, r4 - str r3, [r2, #0] - mov r1, #1 - str r3, [r2, #8] - str r1, [sp, #0xc] - str r5, [sp, #0x10] - bl ciFindFilter - movs r1, r0 - addeq sp, sp, #0x18 - ldmeqia sp!, {r3, r4, r5, pc} - mov ip, #0 - mov r3, #8 - add r2, sp, #0 - mov r0, r4 - str ip, [sp] - str r3, [sp, #4] - str r5, [sp, #8] - bl ciFinishFilter - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_022531E0: .word Unk_ov66_0225A748 -_022531E4: .word Unk_ov66_0225A4D0 -_022531E8: .word Unk_ov66_0225A130 -_022531EC: .word 0x0000118D - arm_func_end ciErrBadChanMaskHandler - - arm_func_start ciErrNoSuchNickHandler -ciErrNoSuchNickHandler: ; 0x022531F0 - bx lr - arm_func_end ciErrNoSuchNickHandler - - arm_func_start ciErrErroneusNicknameHandler -ciErrErroneusNicknameHandler: ; 0x022531F4 - stmfd sp!, {r3, r4, lr} - sub sp, sp, #4 - movs r4, r0 - bne _02253218 - ldr r0, _02253248 ; =0x0225A4C0 - ldr r1, _0225324C ; =0x0225A4D0 - ldr r2, _02253250 ; =0x0225A2B0 - ldr r3, _02253254 ; =0x000011B2 - bl __msl_assertion_failed -_02253218: - ldr r0, [r4, #4] - cmp r0, #0 - addeq sp, sp, #4 - ldmeqia sp!, {r3, r4, pc} - mov r3, #0 - mov r0, r4 - add r2, r4, #0x36c - mov r1, #2 - str r3, [sp] - bl ciNickError - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - ; .align 2, 0 -_02253248: .word Unk_ov66_0225A4C0 -_0225324C: .word Unk_ov66_0225A4D0 -_02253250: .word Unk_ov66_0225A2B0 -_02253254: .word 0x000011B2 - arm_func_end ciErrErroneusNicknameHandler - - arm_func_start ciErrLoginFailedHandler -ciErrLoginFailedHandler: ; 0x02253258 - stmfd sp!, {r4, lr} - movs r4, r0 - bne _02253278 - ldr r0, _022532AC ; =0x0225A4C0 - ldr r1, _022532B0 ; =0x0225A4D0 - ldr r2, _022532B4 ; =0x0225A148 - ldr r3, _022532B8 ; =0x000011C2 - bl __msl_assertion_failed -_02253278: - ldr r0, [r4, #4] - cmp r0, #0 - ldmeqia sp!, {r4, pc} - mov r1, #0 - str r1, [r4, #4] - ldr ip, [r4, #0x14] - cmp ip, #0 - ldmeqia sp!, {r4, pc} - ldr r3, [r4, #0x18] - mov r0, r4 - mov r2, #2 - blx ip - ldmia sp!, {r4, pc} - ; .align 2, 0 -_022532AC: .word Unk_ov66_0225A4C0 -_022532B0: .word Unk_ov66_0225A4D0 -_022532B4: .word Unk_ov66_0225A148 -_022532B8: .word 0x000011C2 - arm_func_end ciErrLoginFailedHandler - - arm_func_start ciErrNoUniqueNickHandler -ciErrNoUniqueNickHandler: ; 0x022532BC - stmfd sp!, {r3, r4, lr} - sub sp, sp, #4 - movs r4, r0 - bne _022532E0 - ldr r0, _02253310 ; =0x0225A4C0 - ldr r1, _02253314 ; =0x0225A4D0 - ldr r2, _02253318 ; =0x0225A160 - ldr r3, _0225331C ; =0x000011DB - bl __msl_assertion_failed -_022532E0: - ldr r0, [r4, #4] - cmp r0, #0 - addeq sp, sp, #4 - ldmeqia sp!, {r3, r4, pc} - ldr r2, _02253320 ; =0x0225A608 - mov r3, #0 - mov r0, r4 - mov r1, #4 - str r3, [sp] - bl ciNickError - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - ; .align 2, 0 -_02253310: .word Unk_ov66_0225A4C0 -_02253314: .word Unk_ov66_0225A4D0 -_02253318: .word Unk_ov66_0225A160 -_0225331C: .word 0x000011DB -_02253320: .word Unk_ov66_0225A608 - arm_func_end ciErrNoUniqueNickHandler - - arm_func_start ciErrUniqueNickExpiredHandler -ciErrUniqueNickExpiredHandler: ; 0x02253324 - stmfd sp!, {r3, r4, lr} - sub sp, sp, #4 - movs r4, r0 - bne _02253348 - ldr r0, _02253378 ; =0x0225A4C0 - ldr r1, _0225337C ; =0x0225A4D0 - ldr r2, _02253380 ; =0x0225A2D0 - ldr r3, _02253384 ; =0x000011EB - bl __msl_assertion_failed -_02253348: - ldr r0, [r4, #4] - cmp r0, #0 - addeq sp, sp, #4 - ldmeqia sp!, {r3, r4, pc} - ldr r2, _02253388 ; =0x0225A608 - mov r3, #0 - mov r0, r4 - mov r1, #3 - str r3, [sp] - bl ciNickError - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - ; .align 2, 0 -_02253378: .word Unk_ov66_0225A4C0 -_0225337C: .word Unk_ov66_0225A4D0 -_02253380: .word Unk_ov66_0225A2D0 -_02253384: .word 0x000011EB -_02253388: .word Unk_ov66_0225A608 - arm_func_end ciErrUniqueNickExpiredHandler - - arm_func_start ciErrRegisterNickFailedHandler -ciErrRegisterNickFailedHandler: ; 0x0225338C - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - movs r4, r0 - mov r5, r1 - bne _022533B0 - ldr r0, _022534A0 ; =0x0225A4C0 - ldr r1, _022534A4 ; =0x0225A4D0 - ldr r2, _022534A8 ; =0x0225A2F0 - mov r3, #0x1200 - bl __msl_assertion_failed -_022533B0: - ldr r0, [r5, #0x24] - cmp r0, #4 - beq _022533D0 - ldr r0, _022534AC ; =0x0225A70C - ldr r1, _022534A4 ; =0x0225A4D0 - ldr r2, _022534A8 ; =0x0225A2F0 - ldr r3, _022534B0 ; =0x00001206 - bl __msl_assertion_failed -_022533D0: - ldr r0, [r5, #0x24] - cmp r0, #4 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldr r0, [r5, #0x20] - ldr r0, [r0, #4] - bl atoi - ldr r2, [r5, #0x20] - ldr r1, [r4, #4] - ldr r5, [r2, #8] - mov r7, r0 - cmp r1, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, r7, lsl #2 - bl DWCi_GsMalloc - movs r8, r0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldr r1, _022534B4 ; =0x0225A898 - mov r0, r5 - bl strtok - mov sb, #0 - mov r6, sb - ldr r5, _022534B4 ; =0x0225A898 - b _0225344C -_0225342C: - bl goastrdup - str r0, [r8, sb, lsl #2] - cmp r0, #0 - beq _0225345C - mov r0, r6 - mov r1, r5 - bl strtok - add sb, sb, #1 -_0225344C: - cmp sb, r7 - bge _0225345C - cmp r0, #0 - bne _0225342C -_0225345C: - mov r0, r4 - mov r3, sb - add r2, r4, #0x510 - mov r1, #5 - str r8, [sp] - bl ciNickError - cmp sb, #0 - mov r4, #0 - ble _02253494 -_02253480: - ldr r0, [r8, r4, lsl #2] - bl DWCi_GsFree - add r4, r4, #1 - cmp r4, sb - blt _02253480 -_02253494: - mov r0, r8 - bl DWCi_GsFree - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ; .align 2, 0 -_022534A0: .word Unk_ov66_0225A4C0 -_022534A4: .word Unk_ov66_0225A4D0 -_022534A8: .word Unk_ov66_0225A2F0 -_022534AC: .word Unk_ov66_0225A70C -_022534B0: .word 0x00001206 -_022534B4: .word Unk_ov66_0225A898 - arm_func_end ciErrRegisterNickFailedHandler - .data - - - .global Unk_ov66_02259C50 -Unk_ov66_02259C50: ; 0x02259C50 - .incbin "incbin/overlay66_data.bin", 0xF30, 0xF34 - 0xF30 - - .global Unk_ov66_02259C54 -Unk_ov66_02259C54: ; 0x02259C54 - .incbin "incbin/overlay66_data.bin", 0xF34, 0xF38 - 0xF34 - - .global Unk_ov66_02259C58 -Unk_ov66_02259C58: ; 0x02259C58 - .incbin "incbin/overlay66_data.bin", 0xF38, 0xF3C - 0xF38 - - .global Unk_ov66_02259C5C -Unk_ov66_02259C5C: ; 0x02259C5C - .incbin "incbin/overlay66_data.bin", 0xF3C, 0xF40 - 0xF3C - - .global Unk_ov66_02259C60 -Unk_ov66_02259C60: ; 0x02259C60 - .incbin "incbin/overlay66_data.bin", 0xF40, 0xF44 - 0xF40 - - .global Unk_ov66_02259C64 -Unk_ov66_02259C64: ; 0x02259C64 - .incbin "incbin/overlay66_data.bin", 0xF44, 0xF48 - 0xF44 - - .global Unk_ov66_02259C68 -Unk_ov66_02259C68: ; 0x02259C68 - .incbin "incbin/overlay66_data.bin", 0xF48, 0xF4C - 0xF48 - - .global Unk_ov66_02259C6C -Unk_ov66_02259C6C: ; 0x02259C6C - .incbin "incbin/overlay66_data.bin", 0xF4C, 0xF50 - 0xF4C - - .global Unk_ov66_02259C70 -Unk_ov66_02259C70: ; 0x02259C70 - .incbin "incbin/overlay66_data.bin", 0xF50, 0xF54 - 0xF50 - - .global Unk_ov66_02259C74 -Unk_ov66_02259C74: ; 0x02259C74 - .incbin "incbin/overlay66_data.bin", 0xF54, 0xF58 - 0xF54 - - .global Unk_ov66_02259C78 -Unk_ov66_02259C78: ; 0x02259C78 - .incbin "incbin/overlay66_data.bin", 0xF58, 0xF5C - 0xF58 - - .global Unk_ov66_02259C7C -Unk_ov66_02259C7C: ; 0x02259C7C - .incbin "incbin/overlay66_data.bin", 0xF5C, 0xF60 - 0xF5C - - .global Unk_ov66_02259C80 -Unk_ov66_02259C80: ; 0x02259C80 - .incbin "incbin/overlay66_data.bin", 0xF60, 0xF64 - 0xF60 - - .global Unk_ov66_02259C84 -Unk_ov66_02259C84: ; 0x02259C84 - .incbin "incbin/overlay66_data.bin", 0xF64, 0xF68 - 0xF64 - - .global Unk_ov66_02259C88 -Unk_ov66_02259C88: ; 0x02259C88 - .incbin "incbin/overlay66_data.bin", 0xF68, 0xF6C - 0xF68 - - .global Unk_ov66_02259C8C -Unk_ov66_02259C8C: ; 0x02259C8C - .incbin "incbin/overlay66_data.bin", 0xF6C, 0xF70 - 0xF6C - - .global Unk_ov66_02259C90 -Unk_ov66_02259C90: ; 0x02259C90 - .incbin "incbin/overlay66_data.bin", 0xF70, 0xF74 - 0xF70 - - .global Unk_ov66_02259C94 -Unk_ov66_02259C94: ; 0x02259C94 - .incbin "incbin/overlay66_data.bin", 0xF74, 0xF78 - 0xF74 - - .global Unk_ov66_02259C98 -Unk_ov66_02259C98: ; 0x02259C98 - .incbin "incbin/overlay66_data.bin", 0xF78, 0xF7C - 0xF78 - - .global Unk_ov66_02259C9C -Unk_ov66_02259C9C: ; 0x02259C9C - .incbin "incbin/overlay66_data.bin", 0xF7C, 0xF80 - 0xF7C - - .global numServerMessageTypes -numServerMessageTypes: ; 0x02259CA0 - .incbin "incbin/overlay66_data.bin", 0xF80, 0xF84 - 0xF80 - - .global Unk_ov66_02259CA4 -Unk_ov66_02259CA4: ; 0x02259CA4 - .incbin "incbin/overlay66_data.bin", 0xF84, 0xF88 - 0xF84 - - .global Unk_ov66_02259CA8 -Unk_ov66_02259CA8: ; 0x02259CA8 - .incbin "incbin/overlay66_data.bin", 0xF88, 0xF8C - 0xF88 - - .global Unk_ov66_02259CAC -Unk_ov66_02259CAC: ; 0x02259CAC - .incbin "incbin/overlay66_data.bin", 0xF8C, 0xF90 - 0xF8C - - .global Unk_ov66_02259CB0 -Unk_ov66_02259CB0: ; 0x02259CB0 - .incbin "incbin/overlay66_data.bin", 0xF90, 0xF94 - 0xF90 - - .global Unk_ov66_02259CB4 -Unk_ov66_02259CB4: ; 0x02259CB4 - .incbin "incbin/overlay66_data.bin", 0xF94, 0xF98 - 0xF94 - - .global Unk_ov66_02259CB8 -Unk_ov66_02259CB8: ; 0x02259CB8 - .incbin "incbin/overlay66_data.bin", 0xF98, 0xF9C - 0xF98 - - .global Unk_ov66_02259CBC -Unk_ov66_02259CBC: ; 0x02259CBC - .incbin "incbin/overlay66_data.bin", 0xF9C, 0xFA0 - 0xF9C - - .global Unk_ov66_02259CC0 -Unk_ov66_02259CC0: ; 0x02259CC0 - .incbin "incbin/overlay66_data.bin", 0xFA0, 0xFA4 - 0xFA0 - - .global Unk_ov66_02259CC4 -Unk_ov66_02259CC4: ; 0x02259CC4 - .incbin "incbin/overlay66_data.bin", 0xFA4, 0xFA8 - 0xFA4 - - .global Unk_ov66_02259CC8 -Unk_ov66_02259CC8: ; 0x02259CC8 - .incbin "incbin/overlay66_data.bin", 0xFA8, 0xFAC - 0xFA8 - - .global Unk_ov66_02259CCC -Unk_ov66_02259CCC: ; 0x02259CCC - .incbin "incbin/overlay66_data.bin", 0xFAC, 0xFB0 - 0xFAC - - .global Unk_ov66_02259CD0 -Unk_ov66_02259CD0: ; 0x02259CD0 - .incbin "incbin/overlay66_data.bin", 0xFB0, 0xFB4 - 0xFB0 - - .global Unk_ov66_02259CD4 -Unk_ov66_02259CD4: ; 0x02259CD4 - .incbin "incbin/overlay66_data.bin", 0xFB4, 0xFB8 - 0xFB4 - - .global Unk_ov66_02259CD8 -Unk_ov66_02259CD8: ; 0x02259CD8 - .incbin "incbin/overlay66_data.bin", 0xFB8, 0xFBC - 0xFB8 - - .global Unk_ov66_02259CDC -Unk_ov66_02259CDC: ; 0x02259CDC - .incbin "incbin/overlay66_data.bin", 0xFBC, 0xFC0 - 0xFBC - - .global Unk_ov66_02259CE0 -Unk_ov66_02259CE0: ; 0x02259CE0 - .incbin "incbin/overlay66_data.bin", 0xFC0, 0xFC4 - 0xFC0 - - .global Unk_ov66_02259CE4 -Unk_ov66_02259CE4: ; 0x02259CE4 - .incbin "incbin/overlay66_data.bin", 0xFC4, 0xFC8 - 0xFC4 - - .global Unk_ov66_02259CE8 -Unk_ov66_02259CE8: ; 0x02259CE8 - .incbin "incbin/overlay66_data.bin", 0xFC8, 0xFCC - 0xFC8 - - .global Unk_ov66_02259CEC -Unk_ov66_02259CEC: ; 0x02259CEC - .incbin "incbin/overlay66_data.bin", 0xFCC, 0xFD0 - 0xFCC - - .global Unk_ov66_02259CF0 -Unk_ov66_02259CF0: ; 0x02259CF0 - .incbin "incbin/overlay66_data.bin", 0xFD0, 0xFD4 - 0xFD0 - - .global Unk_ov66_02259CF4 -Unk_ov66_02259CF4: ; 0x02259CF4 - .incbin "incbin/overlay66_data.bin", 0xFD4, 0xFD8 - 0xFD4 - - .global Unk_ov66_02259CF8 -Unk_ov66_02259CF8: ; 0x02259CF8 - .incbin "incbin/overlay66_data.bin", 0xFD8, 0xFE0 - 0xFD8 - - .global Unk_ov66_02259D00 -Unk_ov66_02259D00: ; 0x02259D00 - .incbin "incbin/overlay66_data.bin", 0xFE0, 0xFE8 - 0xFE0 - - .global Unk_ov66_02259D08 -Unk_ov66_02259D08: ; 0x02259D08 - .incbin "incbin/overlay66_data.bin", 0xFE8, 0xFF0 - 0xFE8 - - .global Unk_ov66_02259D10 -Unk_ov66_02259D10: ; 0x02259D10 - .incbin "incbin/overlay66_data.bin", 0xFF0, 0xFF8 - 0xFF0 - - .global Unk_ov66_02259D18 -Unk_ov66_02259D18: ; 0x02259D18 - .incbin "incbin/overlay66_data.bin", 0xFF8, 0x1000 - 0xFF8 - - .global Unk_ov66_02259D20 -Unk_ov66_02259D20: ; 0x02259D20 - .incbin "incbin/overlay66_data.bin", 0x1000, 0x1008 - 0x1000 - - .global Unk_ov66_02259D28 -Unk_ov66_02259D28: ; 0x02259D28 - .incbin "incbin/overlay66_data.bin", 0x1008, 0x1010 - 0x1008 - - .global Unk_ov66_02259D30 -Unk_ov66_02259D30: ; 0x02259D30 - .incbin "incbin/overlay66_data.bin", 0x1010, 0x1018 - 0x1010 - - .global Unk_ov66_02259D38 -Unk_ov66_02259D38: ; 0x02259D38 - .incbin "incbin/overlay66_data.bin", 0x1018, 0x1020 - 0x1018 - - .global Unk_ov66_02259D40 -Unk_ov66_02259D40: ; 0x02259D40 - .incbin "incbin/overlay66_data.bin", 0x1020, 0x1028 - 0x1020 - - .global Unk_ov66_02259D48 -Unk_ov66_02259D48: ; 0x02259D48 - .incbin "incbin/overlay66_data.bin", 0x1028, 0x1030 - 0x1028 - - .global Unk_ov66_02259D50 -Unk_ov66_02259D50: ; 0x02259D50 - .incbin "incbin/overlay66_data.bin", 0x1030, 0x1038 - 0x1030 - - .global Unk_ov66_02259D58 -Unk_ov66_02259D58: ; 0x02259D58 - .incbin "incbin/overlay66_data.bin", 0x1038, 0x1040 - 0x1038 - - .global Unk_ov66_02259D60 -Unk_ov66_02259D60: ; 0x02259D60 - .incbin "incbin/overlay66_data.bin", 0x1040, 0x104C - 0x1040 - - .global Unk_ov66_02259D6C -Unk_ov66_02259D6C: ; 0x02259D6C - .incbin "incbin/overlay66_data.bin", 0x104C, 0x1058 - 0x104C - - .global Unk_ov66_02259D78 -Unk_ov66_02259D78: ; 0x02259D78 - .incbin "incbin/overlay66_data.bin", 0x1058, 0x1064 - 0x1058 - - .global Unk_ov66_02259D84 -Unk_ov66_02259D84: ; 0x02259D84 - .incbin "incbin/overlay66_data.bin", 0x1064, 0x1074 - 0x1064 - - .global Unk_ov66_02259D94 -Unk_ov66_02259D94: ; 0x02259D94 - .incbin "incbin/overlay66_data.bin", 0x1074, 0x1084 - 0x1074 - - .global Unk_ov66_02259DA4 -Unk_ov66_02259DA4: ; 0x02259DA4 - .incbin "incbin/overlay66_data.bin", 0x1084, 0x1094 - 0x1084 - - .global Unk_ov66_02259DB4 -Unk_ov66_02259DB4: ; 0x02259DB4 - .incbin "incbin/overlay66_data.bin", 0x1094, 0x10A4 - 0x1094 - - .global Unk_ov66_02259DC4 -Unk_ov66_02259DC4: ; 0x02259DC4 - .incbin "incbin/overlay66_data.bin", 0x10A4, 0x10B4 - 0x10A4 - - .global Unk_ov66_02259DD4 -Unk_ov66_02259DD4: ; 0x02259DD4 - .incbin "incbin/overlay66_data.bin", 0x10B4, 0x10C4 - 0x10B4 - - .global Unk_ov66_02259DE4 -Unk_ov66_02259DE4: ; 0x02259DE4 - .incbin "incbin/overlay66_data.bin", 0x10C4, 0x10D4 - 0x10C4 - - .global Unk_ov66_02259DF4 -Unk_ov66_02259DF4: ; 0x02259DF4 - .incbin "incbin/overlay66_data.bin", 0x10D4, 0x10E4 - 0x10D4 - - .global Unk_ov66_02259E04 -Unk_ov66_02259E04: ; 0x02259E04 - .incbin "incbin/overlay66_data.bin", 0x10E4, 0x10F4 - 0x10E4 - - .global Unk_ov66_02259E14 -Unk_ov66_02259E14: ; 0x02259E14 - .incbin "incbin/overlay66_data.bin", 0x10F4, 0x1104 - 0x10F4 - - .global Unk_ov66_02259E24 -Unk_ov66_02259E24: ; 0x02259E24 - .incbin "incbin/overlay66_data.bin", 0x1104, 0x1114 - 0x1104 - - .global Unk_ov66_02259E34 -Unk_ov66_02259E34: ; 0x02259E34 - .incbin "incbin/overlay66_data.bin", 0x1114, 0x1124 - 0x1114 - - .global Unk_ov66_02259E44 -Unk_ov66_02259E44: ; 0x02259E44 - .incbin "incbin/overlay66_data.bin", 0x1124, 0x1134 - 0x1124 - - .global Unk_ov66_02259E54 -Unk_ov66_02259E54: ; 0x02259E54 - .incbin "incbin/overlay66_data.bin", 0x1134, 0x1144 - 0x1134 - - .global Unk_ov66_02259E64 -Unk_ov66_02259E64: ; 0x02259E64 - .incbin "incbin/overlay66_data.bin", 0x1144, 0x1154 - 0x1144 - - .global Unk_ov66_02259E74 -Unk_ov66_02259E74: ; 0x02259E74 - .incbin "incbin/overlay66_data.bin", 0x1154, 0x1164 - 0x1154 - - .global Unk_ov66_02259E84 -Unk_ov66_02259E84: ; 0x02259E84 - .incbin "incbin/overlay66_data.bin", 0x1164, 0x1174 - 0x1164 - - .global Unk_ov66_02259E94 -Unk_ov66_02259E94: ; 0x02259E94 - .incbin "incbin/overlay66_data.bin", 0x1174, 0x1184 - 0x1174 - - .global Unk_ov66_02259EA4 -Unk_ov66_02259EA4: ; 0x02259EA4 - .incbin "incbin/overlay66_data.bin", 0x1184, 0x1194 - 0x1184 - - .global Unk_ov66_02259EB4 -Unk_ov66_02259EB4: ; 0x02259EB4 - .incbin "incbin/overlay66_data.bin", 0x1194, 0x11A4 - 0x1194 - - .global Unk_ov66_02259EC4 -Unk_ov66_02259EC4: ; 0x02259EC4 - .incbin "incbin/overlay66_data.bin", 0x11A4, 0x11B4 - 0x11A4 - - .global Unk_ov66_02259ED4 -Unk_ov66_02259ED4: ; 0x02259ED4 - .incbin "incbin/overlay66_data.bin", 0x11B4, 0x11C8 - 0x11B4 - - .global Unk_ov66_02259EE8 -Unk_ov66_02259EE8: ; 0x02259EE8 - .incbin "incbin/overlay66_data.bin", 0x11C8, 0x11DC - 0x11C8 - - .global Unk_ov66_02259EFC -Unk_ov66_02259EFC: ; 0x02259EFC - .incbin "incbin/overlay66_data.bin", 0x11DC, 0x11F0 - 0x11DC - - .global Unk_ov66_02259F10 -Unk_ov66_02259F10: ; 0x02259F10 - .incbin "incbin/overlay66_data.bin", 0x11F0, 0x1204 - 0x11F0 - - .global Unk_ov66_02259F24 -Unk_ov66_02259F24: ; 0x02259F24 - .incbin "incbin/overlay66_data.bin", 0x1204, 0x1218 - 0x1204 - - .global Unk_ov66_02259F38 -Unk_ov66_02259F38: ; 0x02259F38 - .incbin "incbin/overlay66_data.bin", 0x1218, 0x122C - 0x1218 - - .global Unk_ov66_02259F4C -Unk_ov66_02259F4C: ; 0x02259F4C - .incbin "incbin/overlay66_data.bin", 0x122C, 0x1240 - 0x122C - - .global Unk_ov66_02259F60 -Unk_ov66_02259F60: ; 0x02259F60 - .incbin "incbin/overlay66_data.bin", 0x1240, 0x1254 - 0x1240 - - .global Unk_ov66_02259F74 -Unk_ov66_02259F74: ; 0x02259F74 - .incbin "incbin/overlay66_data.bin", 0x1254, 0x1268 - 0x1254 - - .global Unk_ov66_02259F88 -Unk_ov66_02259F88: ; 0x02259F88 - .incbin "incbin/overlay66_data.bin", 0x1268, 0x127C - 0x1268 - - .global Unk_ov66_02259F9C -Unk_ov66_02259F9C: ; 0x02259F9C - .incbin "incbin/overlay66_data.bin", 0x127C, 0x1290 - 0x127C - - .global Unk_ov66_02259FB0 -Unk_ov66_02259FB0: ; 0x02259FB0 - .incbin "incbin/overlay66_data.bin", 0x1290, 0x12A4 - 0x1290 - - .global Unk_ov66_02259FC4 -Unk_ov66_02259FC4: ; 0x02259FC4 - .incbin "incbin/overlay66_data.bin", 0x12A4, 0x12B8 - 0x12A4 - - .global Unk_ov66_02259FD8 -Unk_ov66_02259FD8: ; 0x02259FD8 - .incbin "incbin/overlay66_data.bin", 0x12B8, 0x12CC - 0x12B8 - - .global Unk_ov66_02259FEC -Unk_ov66_02259FEC: ; 0x02259FEC - .incbin "incbin/overlay66_data.bin", 0x12CC, 0x12E0 - 0x12CC - - .global Unk_ov66_0225A000 -Unk_ov66_0225A000: ; 0x0225A000 - .incbin "incbin/overlay66_data.bin", 0x12E0, 0x12F4 - 0x12E0 - - .global Unk_ov66_0225A014 -Unk_ov66_0225A014: ; 0x0225A014 - .incbin "incbin/overlay66_data.bin", 0x12F4, 0x1308 - 0x12F4 - - .global Unk_ov66_0225A028 -Unk_ov66_0225A028: ; 0x0225A028 - .incbin "incbin/overlay66_data.bin", 0x1308, 0x1320 - 0x1308 - - .global Unk_ov66_0225A040 -Unk_ov66_0225A040: ; 0x0225A040 - .incbin "incbin/overlay66_data.bin", 0x1320, 0x1338 - 0x1320 - - .global Unk_ov66_0225A058 -Unk_ov66_0225A058: ; 0x0225A058 - .incbin "incbin/overlay66_data.bin", 0x1338, 0x1350 - 0x1338 - - .global Unk_ov66_0225A070 -Unk_ov66_0225A070: ; 0x0225A070 - .incbin "incbin/overlay66_data.bin", 0x1350, 0x1368 - 0x1350 - - .global Unk_ov66_0225A088 -Unk_ov66_0225A088: ; 0x0225A088 - .incbin "incbin/overlay66_data.bin", 0x1368, 0x1380 - 0x1368 - - .global Unk_ov66_0225A0A0 -Unk_ov66_0225A0A0: ; 0x0225A0A0 - .incbin "incbin/overlay66_data.bin", 0x1380, 0x1398 - 0x1380 - - .global Unk_ov66_0225A0B8 -Unk_ov66_0225A0B8: ; 0x0225A0B8 - .incbin "incbin/overlay66_data.bin", 0x1398, 0x13B0 - 0x1398 - - .global Unk_ov66_0225A0D0 -Unk_ov66_0225A0D0: ; 0x0225A0D0 - .incbin "incbin/overlay66_data.bin", 0x13B0, 0x13C8 - 0x13B0 - - .global Unk_ov66_0225A0E8 -Unk_ov66_0225A0E8: ; 0x0225A0E8 - .incbin "incbin/overlay66_data.bin", 0x13C8, 0x13E0 - 0x13C8 - - .global Unk_ov66_0225A100 -Unk_ov66_0225A100: ; 0x0225A100 - .incbin "incbin/overlay66_data.bin", 0x13E0, 0x13F8 - 0x13E0 - - .global Unk_ov66_0225A118 -Unk_ov66_0225A118: ; 0x0225A118 - .incbin "incbin/overlay66_data.bin", 0x13F8, 0x1410 - 0x13F8 - - .global Unk_ov66_0225A130 -Unk_ov66_0225A130: ; 0x0225A130 - .incbin "incbin/overlay66_data.bin", 0x1410, 0x1428 - 0x1410 - - .global Unk_ov66_0225A148 -Unk_ov66_0225A148: ; 0x0225A148 - .incbin "incbin/overlay66_data.bin", 0x1428, 0x1440 - 0x1428 - - .global Unk_ov66_0225A160 -Unk_ov66_0225A160: ; 0x0225A160 - .incbin "incbin/overlay66_data.bin", 0x1440, 0x145C - 0x1440 - - .global Unk_ov66_0225A17C -Unk_ov66_0225A17C: ; 0x0225A17C - .incbin "incbin/overlay66_data.bin", 0x145C, 0x1478 - 0x145C - - .global Unk_ov66_0225A198 -Unk_ov66_0225A198: ; 0x0225A198 - .incbin "incbin/overlay66_data.bin", 0x1478, 0x1494 - 0x1478 - - .global Unk_ov66_0225A1B4 -Unk_ov66_0225A1B4: ; 0x0225A1B4 - .incbin "incbin/overlay66_data.bin", 0x1494, 0x14B0 - 0x1494 - - .global Unk_ov66_0225A1D0 -Unk_ov66_0225A1D0: ; 0x0225A1D0 - .incbin "incbin/overlay66_data.bin", 0x14B0, 0x14CC - 0x14B0 - - .global Unk_ov66_0225A1EC -Unk_ov66_0225A1EC: ; 0x0225A1EC - .incbin "incbin/overlay66_data.bin", 0x14CC, 0x14E8 - 0x14CC - - .global Unk_ov66_0225A208 -Unk_ov66_0225A208: ; 0x0225A208 - .incbin "incbin/overlay66_data.bin", 0x14E8, 0x1504 - 0x14E8 - - .global Unk_ov66_0225A224 -Unk_ov66_0225A224: ; 0x0225A224 - .incbin "incbin/overlay66_data.bin", 0x1504, 0x1520 - 0x1504 - - .global Unk_ov66_0225A240 -Unk_ov66_0225A240: ; 0x0225A240 - .incbin "incbin/overlay66_data.bin", 0x1520, 0x153C - 0x1520 - - .global Unk_ov66_0225A25C -Unk_ov66_0225A25C: ; 0x0225A25C - .incbin "incbin/overlay66_data.bin", 0x153C, 0x1558 - 0x153C - - .global Unk_ov66_0225A278 -Unk_ov66_0225A278: ; 0x0225A278 - .incbin "incbin/overlay66_data.bin", 0x1558, 0x1574 - 0x1558 - - .global Unk_ov66_0225A294 -Unk_ov66_0225A294: ; 0x0225A294 - .incbin "incbin/overlay66_data.bin", 0x1574, 0x1590 - 0x1574 - - .global Unk_ov66_0225A2B0 -Unk_ov66_0225A2B0: ; 0x0225A2B0 - .incbin "incbin/overlay66_data.bin", 0x1590, 0x15B0 - 0x1590 - - .global Unk_ov66_0225A2D0 -Unk_ov66_0225A2D0: ; 0x0225A2D0 - .incbin "incbin/overlay66_data.bin", 0x15B0, 0x15D0 - 0x15B0 - - .global Unk_ov66_0225A2F0 -Unk_ov66_0225A2F0: ; 0x0225A2F0 - .incbin "incbin/overlay66_data.bin", 0x15D0, 0x15F0 - 0x15D0 - - .global serverMessageTypes -serverMessageTypes: ; 0x0225A310 - .incbin "incbin/overlay66_data.bin", 0x15F0, 0x17A0 - 0x15F0 - - .global Unk_ov66_0225A4C0 -Unk_ov66_0225A4C0: ; 0x0225A4C0 - .incbin "incbin/overlay66_data.bin", 0x17A0, 0x17B0 - 0x17A0 - - .global Unk_ov66_0225A4D0 -Unk_ov66_0225A4D0: ; 0x0225A4D0 - .incbin "incbin/overlay66_data.bin", 0x17B0, 0x17C0 - 0x17B0 - - .global Unk_ov66_0225A4E0 -Unk_ov66_0225A4E0: ; 0x0225A4E0 - .incbin "incbin/overlay66_data.bin", 0x17C0, 0x17D0 - 0x17C0 - - .global Unk_ov66_0225A4F0 -Unk_ov66_0225A4F0: ; 0x0225A4F0 - .incbin "incbin/overlay66_data.bin", 0x17D0, 0x17D8 - 0x17D0 - - .global Unk_ov66_0225A4F8 -Unk_ov66_0225A4F8: ; 0x0225A4F8 - .incbin "incbin/overlay66_data.bin", 0x17D8, 0x1810 - 0x17D8 - - .global Unk_ov66_0225A530 -Unk_ov66_0225A530: ; 0x0225A530 - .incbin "incbin/overlay66_data.bin", 0x1810, 0x1818 - 0x1810 - - .global Unk_ov66_0225A538 -Unk_ov66_0225A538: ; 0x0225A538 - .incbin "incbin/overlay66_data.bin", 0x1818, 0x1824 - 0x1818 - - .global Unk_ov66_0225A544 -Unk_ov66_0225A544: ; 0x0225A544 - .incbin "incbin/overlay66_data.bin", 0x1824, 0x1834 - 0x1824 - - .global Unk_ov66_0225A554 -Unk_ov66_0225A554: ; 0x0225A554 - .incbin "incbin/overlay66_data.bin", 0x1834, 0x183C - 0x1834 - - .global Unk_ov66_0225A55C -Unk_ov66_0225A55C: ; 0x0225A55C - .incbin "incbin/overlay66_data.bin", 0x183C, 0x1870 - 0x183C - - .global Unk_ov66_0225A590 -Unk_ov66_0225A590: ; 0x0225A590 - .incbin "incbin/overlay66_data.bin", 0x1870, 0x1874 - 0x1870 - - .global Unk_ov66_0225A594 -Unk_ov66_0225A594: ; 0x0225A594 - .incbin "incbin/overlay66_data.bin", 0x1874, 0x1880 - 0x1874 - - .global Unk_ov66_0225A5A0 -Unk_ov66_0225A5A0: ; 0x0225A5A0 - .incbin "incbin/overlay66_data.bin", 0x1880, 0x1888 - 0x1880 - - .global Unk_ov66_0225A5A8 -Unk_ov66_0225A5A8: ; 0x0225A5A8 - .incbin "incbin/overlay66_data.bin", 0x1888, 0x189C - 0x1888 - - .global Unk_ov66_0225A5BC -Unk_ov66_0225A5BC: ; 0x0225A5BC - .incbin "incbin/overlay66_data.bin", 0x189C, 0x18BC - 0x189C - - .global Unk_ov66_0225A5DC -Unk_ov66_0225A5DC: ; 0x0225A5DC - .incbin "incbin/overlay66_data.bin", 0x18BC, 0x18C0 - 0x18BC - - .global Unk_ov66_0225A5E0 -Unk_ov66_0225A5E0: ; 0x0225A5E0 - .incbin "incbin/overlay66_data.bin", 0x18C0, 0x18D0 - 0x18C0 - - .global Unk_ov66_0225A5F0 -Unk_ov66_0225A5F0: ; 0x0225A5F0 - .incbin "incbin/overlay66_data.bin", 0x18D0, 0x18E8 - 0x18D0 - - .global Unk_ov66_0225A608 -Unk_ov66_0225A608: ; 0x0225A608 - .incbin "incbin/overlay66_data.bin", 0x18E8, 0x18EC - 0x18E8 - - .global Unk_ov66_0225A60C -Unk_ov66_0225A60C: ; 0x0225A60C - .incbin "incbin/overlay66_data.bin", 0x18EC, 0x18F4 - 0x18EC - - .global Unk_ov66_0225A614 -Unk_ov66_0225A614: ; 0x0225A614 - .incbin "incbin/overlay66_data.bin", 0x18F4, 0x18FC - 0x18F4 - - .global Unk_ov66_0225A61C -Unk_ov66_0225A61C: ; 0x0225A61C - .incbin "incbin/overlay66_data.bin", 0x18FC, 0x1914 - 0x18FC - - .global Unk_ov66_0225A634 -Unk_ov66_0225A634: ; 0x0225A634 - .incbin "incbin/overlay66_data.bin", 0x1914, 0x1930 - 0x1914 - - .global Unk_ov66_0225A650 -Unk_ov66_0225A650: ; 0x0225A650 - .incbin "incbin/overlay66_data.bin", 0x1930, 0x1940 - 0x1930 - - .global Unk_ov66_0225A660 -Unk_ov66_0225A660: ; 0x0225A660 - .incbin "incbin/overlay66_data.bin", 0x1940, 0x1948 - 0x1940 - - .global Unk_ov66_0225A668 -Unk_ov66_0225A668: ; 0x0225A668 - .incbin "incbin/overlay66_data.bin", 0x1948, 0x1980 - 0x1948 - - .global Unk_ov66_0225A6A0 -Unk_ov66_0225A6A0: ; 0x0225A6A0 - .incbin "incbin/overlay66_data.bin", 0x1980, 0x1990 - 0x1980 - - .global Unk_ov66_0225A6B0 -Unk_ov66_0225A6B0: ; 0x0225A6B0 - .incbin "incbin/overlay66_data.bin", 0x1990, 0x19A0 - 0x1990 - - .global Unk_ov66_0225A6C0 -Unk_ov66_0225A6C0: ; 0x0225A6C0 - .incbin "incbin/overlay66_data.bin", 0x19A0, 0x19B0 - 0x19A0 - - .global Unk_ov66_0225A6D0 -Unk_ov66_0225A6D0: ; 0x0225A6D0 - .incbin "incbin/overlay66_data.bin", 0x19B0, 0x19C4 - 0x19B0 - - .global Unk_ov66_0225A6E4 -Unk_ov66_0225A6E4: ; 0x0225A6E4 - .incbin "incbin/overlay66_data.bin", 0x19C4, 0x19D4 - 0x19C4 - - .global Unk_ov66_0225A6F4 -Unk_ov66_0225A6F4: ; 0x0225A6F4 - .incbin "incbin/overlay66_data.bin", 0x19D4, 0x19EC - 0x19D4 - - .global Unk_ov66_0225A70C -Unk_ov66_0225A70C: ; 0x0225A70C - .incbin "incbin/overlay66_data.bin", 0x19EC, 0x1A04 - 0x19EC - - .global Unk_ov66_0225A724 -Unk_ov66_0225A724: ; 0x0225A724 - .incbin "incbin/overlay66_data.bin", 0x1A04, 0x1A08 - 0x1A04 - - .global Unk_ov66_0225A728 -Unk_ov66_0225A728: ; 0x0225A728 - .incbin "incbin/overlay66_data.bin", 0x1A08, 0x1A18 - 0x1A08 - - .global Unk_ov66_0225A738 -Unk_ov66_0225A738: ; 0x0225A738 - .incbin "incbin/overlay66_data.bin", 0x1A18, 0x1A28 - 0x1A18 - - .global Unk_ov66_0225A748 -Unk_ov66_0225A748: ; 0x0225A748 - .incbin "incbin/overlay66_data.bin", 0x1A28, 0x1A40 - 0x1A28 - - .global Unk_ov66_0225A760 -Unk_ov66_0225A760: ; 0x0225A760 - .incbin "incbin/overlay66_data.bin", 0x1A40, 0x1A44 - 0x1A40 - - .global Unk_ov66_0225A764 -Unk_ov66_0225A764: ; 0x0225A764 - .incbin "incbin/overlay66_data.bin", 0x1A44, 0x1A5C - 0x1A44 - - .global Unk_ov66_0225A77C -Unk_ov66_0225A77C: ; 0x0225A77C - .incbin "incbin/overlay66_data.bin", 0x1A5C, 0x1A74 - 0x1A5C - - .global Unk_ov66_0225A794 -Unk_ov66_0225A794: ; 0x0225A794 - .incbin "incbin/overlay66_data.bin", 0x1A74, 0x1A7C - 0x1A74 - - .global Unk_ov66_0225A79C -Unk_ov66_0225A79C: ; 0x0225A79C - .incbin "incbin/overlay66_data.bin", 0x1A7C, 0x1A80 - 0x1A7C - - .global Unk_ov66_0225A7A0 -Unk_ov66_0225A7A0: ; 0x0225A7A0 - .incbin "incbin/overlay66_data.bin", 0x1A80, 0x1A98 - 0x1A80 - - .global Unk_ov66_0225A7B8 -Unk_ov66_0225A7B8: ; 0x0225A7B8 - .incbin "incbin/overlay66_data.bin", 0x1A98, 0x1AA0 - 0x1A98 - - .global Unk_ov66_0225A7C0 -Unk_ov66_0225A7C0: ; 0x0225A7C0 - .incbin "incbin/overlay66_data.bin", 0x1AA0, 0x1AA4 - 0x1AA0 - - .global Unk_ov66_0225A7C4 -Unk_ov66_0225A7C4: ; 0x0225A7C4 - .incbin "incbin/overlay66_data.bin", 0x1AA4, 0x1ABC - 0x1AA4 - - .global Unk_ov66_0225A7DC -Unk_ov66_0225A7DC: ; 0x0225A7DC - .incbin "incbin/overlay66_data.bin", 0x1ABC, 0x1ACC - 0x1ABC - - .global Unk_ov66_0225A7EC -Unk_ov66_0225A7EC: ; 0x0225A7EC - .incbin "incbin/overlay66_data.bin", 0x1ACC, 0x1AE4 - 0x1ACC - - .global Unk_ov66_0225A804 -Unk_ov66_0225A804: ; 0x0225A804 - .incbin "incbin/overlay66_data.bin", 0x1AE4, 0x1AFC - 0x1AE4 - - .global Unk_ov66_0225A81C -Unk_ov66_0225A81C: ; 0x0225A81C - .incbin "incbin/overlay66_data.bin", 0x1AFC, 0x1B14 - 0x1AFC - - .global Unk_ov66_0225A834 -Unk_ov66_0225A834: ; 0x0225A834 - .incbin "incbin/overlay66_data.bin", 0x1B14, 0x1B30 - 0x1B14 - - .global Unk_ov66_0225A850 -Unk_ov66_0225A850: ; 0x0225A850 - .incbin "incbin/overlay66_data.bin", 0x1B30, 0x1B44 - 0x1B30 - - .global Unk_ov66_0225A864 -Unk_ov66_0225A864: ; 0x0225A864 - .incbin "incbin/overlay66_data.bin", 0x1B44, 0x1B5C - 0x1B44 - - .global Unk_ov66_0225A87C -Unk_ov66_0225A87C: ; 0x0225A87C - .incbin "incbin/overlay66_data.bin", 0x1B5C, 0x1B70 - 0x1B5C - - .global Unk_ov66_0225A890 -Unk_ov66_0225A890: ; 0x0225A890 - .incbin "incbin/overlay66_data.bin", 0x1B70, 0x1B78 - 0x1B70 - - .global Unk_ov66_0225A898 -Unk_ov66_0225A898: ; 0x0225A898 - .incbin "incbin/overlay66_data.bin", 0x1B78, 0x2 - diff --git a/subprojects/gamespy/libraries/chat/asm/chatmain.s b/subprojects/gamespy/libraries/chat/asm/chatmain.s deleted file mode 100644 index 9509d39f83..0000000000 --- a/subprojects/gamespy/libraries/chat/asm/chatmain.s +++ /dev/null @@ -1,3198 +0,0 @@ - .include "macros/function.inc" - .include "include/chatmain.inc" - - - - .extern numServerMessageTypes - .extern serverMessageTypes - .text - - - arm_func_start ciProcessServerMessage -ciProcessServerMessage: ; 0x022534B8 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - movs r5, r1 - mov r6, r0 - bne _022534DC - ldr r0, _02253544 ; =0x0225AA84 - ldr r1, _02253548 ; =0x0225AA94 - ldr r2, _0225354C ; =0x0225AA24 - mov r3, #0x4f - bl __msl_assertion_failed -_022534DC: - ldr r7, _02253550 ; =0x02259CA0 - mov r4, #0 - ldr r0, [r7, #0] - cmp r0, #0 - ble _0225353C - ldr r8, _02253554 ; =0x0225A310 -_022534F4: - ldr r0, [r5, #0x14] - ldr r1, [r8, r4, lsl #3] - bl strcasecmp - cmp r0, #0 - bne _0225352C - ldr r0, _02253558 ; =0x0225A314 - ldr r2, [r0, r4, lsl #3] - cmp r2, #0 - beq _02253524 - mov r0, r6 - mov r1, r5 - blx r2 -_02253524: - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0225352C: - ldr r0, [r7, #0] - add r4, r4, #1 - cmp r4, r0 - blt _022534F4 -_0225353C: - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_02253544: .word Unk_ov66_0225AA84 -_02253548: .word Unk_ov66_0225AA94 -_0225354C: .word Unk_ov66_0225AA24 -_02253550: .word numServerMessageTypes -_02253554: .word serverMessageTypes -_02253558: .word 0x0225A314 - arm_func_end ciProcessServerMessage - - arm_func_start ciCheckForID -ciCheckForID: ; 0x0225355C - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl ciCheckFiltersForID - cmp r0, #0 - bne _02253588 - mov r0, r5 - mov r1, r4 - bl ciCheckCallbacksForID - cmp r0, #0 - beq _02253590 -_02253588: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} -_02253590: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ciCheckForID - - arm_func_start ciHandleDisconnect -ciHandleDisconnect: ; 0x02253598 - stmfd sp!, {r4, r5, lr} - sub sp, sp, #0x14 - movs r4, r0 - mov r5, r1 - bne _022535C0 - ldr r0, _02253660 ; =0x0225AAA0 - ldr r1, _02253664 ; =0x0225AA94 - ldr r2, _02253668 ; =0x0225A954 - mov r3, #0x73 - bl __msl_assertion_failed -_022535C0: - ldr r0, [r4, #8] - cmp r0, #0 - addne sp, sp, #0x14 - ldmneia sp!, {r4, r5, pc} - mov r1, #0 - str r1, [r4, #0] - str r1, [r4, #4] - mov ip, #1 - str ip, [r4, #8] - ldr r0, [r4, #4] - cmp r0, #0 - beq _02253618 - ldr ip, [r4, #0x14] - cmp ip, #0 - addeq sp, sp, #0x14 - ldmeqia sp!, {r4, r5, pc} - ldr r3, [r4, #0x18] - mov r0, r4 - mov r2, r1 - blx ip - add sp, sp, #0x14 - ldmia sp!, {r4, r5, pc} -_02253618: - ldr r0, [r4, #0x7fc] - cmp r0, #0 - addeq sp, sp, #0x14 - ldmeqia sp!, {r4, r5, pc} - str r5, [sp, #0x10] - ldr r2, [r4, #0x808] - mov r0, #4 - str r2, [sp] - str r1, [sp, #4] - str r1, [sp, #8] - str r0, [sp, #0xc] - ldr r2, [r4, #0x7fc] - add r3, sp, #0x10 - mov r0, r4 - mov r1, ip - bl ciAddCallback_ - add sp, sp, #0x14 - ldmia sp!, {r4, r5, pc} - ; .align 2, 0 -_02253660: .word Unk_ov66_0225AAA0 -_02253664: .word Unk_ov66_0225AA94 -_02253668: .word Unk_ov66_0225A954 - arm_func_end ciHandleDisconnect - - arm_func_start ciThink -ciThink: ; 0x0225366C - stmfd sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x14 - movs r6, r0 - mov r5, r1 - bne _02253694 - ldr r0, _0225374C ; =0x0225AAA0 - ldr r1, _02253750 ; =0x0225AA94 - ldr r2, _02253754 ; =0x0225A8A0 - mov r3, #0x9a - bl __msl_assertion_failed -_02253694: - ldr r0, [r6, #0x20] - cmp r0, #1 - bne _02253730 - add r0, r6, #0x1c - bl ciSocketThink - add r0, r6, #0x1c - bl ciSocketRecv - movs r4, r0 - beq _02253718 - mov sb, #0 - mov r8, #4 - add r7, sp, #0x10 -_022536C4: - ldr r0, [r6, #0x7f8] - cmp r0, #0 - beq _022536FC - ldr r1, [r4, #0] - mov r0, r6 - str r1, [sp, #0x10] - ldr r2, [r6, #0x808] - mov r1, sb - stmia sp, {r2, sb} - str sb, [sp, #8] - str r8, [sp, #0xc] - ldr r2, [r6, #0x7f8] - mov r3, r7 - bl ciAddCallback_ -_022536FC: - mov r0, r6 - mov r1, r4 - bl ciProcessServerMessage - add r0, r6, #0x1c - bl ciSocketRecv - movs r4, r0 - bne _022536C4 -_02253718: - ldr r0, [r6, #0x20] - cmp r0, #2 - bne _02253730 - ldr r1, _02253758 ; =0x0225AAB0 - mov r0, r6 - bl ciHandleDisconnect -_02253730: - mov r0, r6 - bl ciFilterThink - mov r0, r6 - mov r1, r5 - bl ciCallCallbacks - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - ; .align 2, 0 -_0225374C: .word Unk_ov66_0225AAA0 -_02253750: .word Unk_ov66_0225AA94 -_02253754: .word Unk_ov66_0225A8A0 -_02253758: .word Unk_ov66_0225AAB0 - arm_func_end ciThink - - arm_func_start ciSendNick -ciSendNick: ; 0x0225375C - stmfd sp!, {r3, r4, lr} - sub sp, sp, #4 - movs r4, r0 - bne _02253780 - ldr r0, _0225381C ; =0x0225AAA0 - ldr r1, _02253820 ; =0x0225AA94 - ldr r2, _02253824 ; =0x0225A8A8 - mov r3, #0xce - bl __msl_assertion_failed -_02253780: - ldr r0, [r4, #0x8a8] - cmp r0, #0 - bne _022537C0 - add r0, r4, #0x36c - bl ciNickIsValid - movs r1, r0 - beq _022537B8 - mov r3, #0 - mov r0, r4 - add r2, r4, #0x36c - str r3, [sp] - bl ciNickError - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} -_022537B8: - add r2, r4, #0x36c - b _02253808 -_022537C0: - cmp r0, #2 - ldreq r0, [r4, #0x4ac] - cmpeq r0, #0 - bne _02253804 - add r0, r4, #0x4f0 - bl ciNickIsValid - movs r1, r0 - beq _022537FC - mov r3, #0 - mov r0, r4 - add r2, r4, #0x4f0 - str r3, [sp] - bl ciNickError - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} -_022537FC: - add r2, r4, #0x4f0 - b _02253808 -_02253804: - ldr r2, _02253828 ; =0x0225AAC0 -_02253808: - ldr r1, _0225382C ; =0x0225AAC4 - add r0, r4, #0x1c - bl ciSocketSendf - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - ; .align 2, 0 -_0225381C: .word Unk_ov66_0225AAA0 -_02253820: .word Unk_ov66_0225AA94 -_02253824: .word Unk_ov66_0225A8A8 -_02253828: .word Unk_ov66_0225AAC0 -_0225382C: .word Unk_ov66_0225AAC4 - arm_func_end ciSendNick - - arm_func_start ciSendUser -ciSendUser: ; 0x02253830 - stmfd sp!, {r4, lr} - sub sp, sp, #8 - movs r4, r0 - bne _02253854 - ldr r0, _02253888 ; =0x0225AAA0 - ldr r1, _0225388C ; =0x0225AA94 - ldr r2, _02253890 ; =0x0225A8B4 - mov r3, #0x104 - bl __msl_assertion_failed -_02253854: - add r0, r4, #0x374 - add r0, r0, #0x400 - add r2, r4, #0x2c - ldr r1, _02253894 ; =0x0225AACC - ldr r3, _02253898 ; =0x0225AAE0 - str r0, [sp] - add ip, r4, #0x3ac - add r0, r4, #0x1c - add r2, r2, #0x400 - str ip, [sp, #4] - bl ciSocketSendf - add sp, sp, #8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02253888: .word Unk_ov66_0225AAA0 -_0225388C: .word Unk_ov66_0225AA94 -_02253890: .word Unk_ov66_0225A8B4 -_02253894: .word Unk_ov66_0225AACC -_02253898: .word Unk_ov66_0225AAE0 - arm_func_end ciSendUser - - arm_func_start ciSendNickAndUser -ciSendNickAndUser: ; 0x0225389C - stmfd sp!, {r4, lr} - mov r4, r0 - bl ciSendUser - mov r0, r4 - bl ciSendNick - ldmia sp!, {r4, pc} - arm_func_end ciSendNickAndUser - - arm_func_start ciSendLogin -ciSendLogin: ; 0x022538B4 - stmfd sp!, {r3, r4, lr} - sub sp, sp, #0x2c - movs r4, r0 - bne _022538D8 - ldr r0, _02253998 ; =0x0225AAA0 - ldr r1, _0225399C ; =0x0225AA94 - ldr r2, _022539A0 ; =0x0225A8CC - mov r3, #0x118 - bl __msl_assertion_failed -_022538D8: - ldr r0, [r4, #0x8a8] - cmp r0, #3 - bne _02253900 - ldr r1, _022539A4 ; =0x0225AAEC - add r0, r4, #0x1c - add r2, r4, #0x570 - add r3, r4, #0x670 - bl ciSocketSendf - add sp, sp, #0x2c - ldmia sp!, {r3, r4, pc} -_02253900: - add r0, r4, #0x550 - bl strlen - mov r1, r0 - add r2, sp, #8 - add r0, r4, #0x550 - bl MD5Digest - ldr r0, [r4, #0x8a8] - cmp r0, #1 - bne _02253948 - add r0, sp, #8 - str r0, [sp] - ldr r1, _022539A8 ; =0x0225AB00 - ldr r2, [r4, #0x4ac] - add r0, r4, #0x1c - add r3, r4, #0x510 - bl ciSocketSendf - add sp, sp, #0x2c - ldmia sp!, {r3, r4, pc} -_02253948: - cmp r0, #2 - bne _0225397C - add r0, r4, #0x4f0 - str r0, [sp] - add r0, r4, #0x4b0 - str r0, [sp, #4] - ldr r2, [r4, #0x4ac] - ldr r1, _022539AC ; =0x0225AB10 - add r3, sp, #8 - add r0, r4, #0x1c - bl ciSocketSendf - add sp, sp, #0x2c - ldmia sp!, {r3, r4, pc} -_0225397C: - ldr r0, _022539B0 ; =0x0225AB28 - ldr r1, _0225399C ; =0x0225AA94 - ldr r2, _022539A0 ; =0x0225A8CC - ldr r3, _022539B4 ; =0x0000013E - bl __msl_assertion_failed - add sp, sp, #0x2c - ldmia sp!, {r3, r4, pc} - ; .align 2, 0 -_02253998: .word Unk_ov66_0225AAA0 -_0225399C: .word Unk_ov66_0225AA94 -_022539A0: .word Unk_ov66_0225A8CC -_022539A4: .word Unk_ov66_0225AAEC -_022539A8: .word Unk_ov66_0225AB00 -_022539AC: .word Unk_ov66_0225AB10 -_022539B0: .word Unk_ov66_0225AB28 -_022539B4: .word 0x0000013E - arm_func_end ciSendLogin - - arm_func_start chatConnectDoit -chatConnectDoit: ; 0x022539B8 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc - mov fp, r0 - movs r0, r1 - ldr r0, [sp, #0x38] - str r1, [sp] - str r0, [sp, #0x38] - ldr r0, [sp, #0x3c] - str r2, [sp, #4] - str r0, [sp, #0x3c] - ldr r0, [sp, #0x4c] - mov sl, r3 - str r0, [sp, #0x4c] - ldr r0, [sp, #0x50] - ldr sb, [sp, #0x40] - str r0, [sp, #0x50] - ldr r0, _02254140 ; =0x0225AB2C - ldr r8, [sp, #0x44] - ldr r7, [sp, #0x48] - ldr r6, [sp, #0x54] - ldr r5, [sp, #0x58] - str r0, [sp, #8] - bne _02253A28 - ldr r0, _02254144 ; =0x0225AB30 - ldr r1, _02254148 ; =0x0225AA94 - ldr r2, _0225414C ; =0x0225A908 - ldr r3, _02254150 ; =0x0000015B - bl __msl_assertion_failed -_02253A28: - ldr r0, [sp, #0x5c] - cmp r0, #0 - bne _02253A48 - ldr r0, _02254154 ; =0x0225AB48 - ldr r1, _02254148 ; =0x0225AA94 - ldr r2, _0225414C ; =0x0225A908 - mov r3, #0x15c - bl __msl_assertion_failed -_02253A48: - ldr r0, [sp, #0x68] - cmp r0, #0 - bne _02253A68 - ldr r0, _02254158 ; =0x0225AB5C - ldr r1, _02254148 ; =0x0225AA94 - ldr r2, _0225414C ; =0x0225A908 - ldr r3, _0225415C ; =0x0000015D - bl __msl_assertion_failed -_02253A68: - cmp fp, #0 - bne _02253AF0 - cmp sl, #0 - bne _02253A8C - ldr r0, _02254160 ; =0x0225AB74 - ldr r1, _02254148 ; =0x0225AA94 - ldr r2, _0225414C ; =0x0225A908 - ldr r3, _02254164 ; =0x00000163 - bl __msl_assertion_failed -_02253A8C: - ldrsb r0, [sl] - cmp r0, #0 - bne _02253AAC - ldr r0, _02254168 ; =0x0225AB84 - ldr r1, _02254148 ; =0x0225AA94 - ldr r2, _0225414C ; =0x0225A908 - ldr r3, _02254164 ; =0x00000163 - bl __msl_assertion_failed -_02253AAC: - mov r0, sl - bl strlen - cmp r0, #0x40 - blo _02253AD0 - ldr r0, _0225416C ; =0x0225AB94 - ldr r1, _02254148 ; =0x0225AA94 - ldr r2, _0225414C ; =0x0225A908 - ldr r3, _02254164 ; =0x00000163 - bl __msl_assertion_failed -_02253AD0: - cmp sl, #0 - ldrnesb r0, [sl] - cmpne r0, #0 - addeq sp, sp, #0xc - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - str sl, [sp, #8] - b _02253D44 -_02253AF0: - cmp fp, #1 - bne _02253BAC - ldr r0, [sp, #0x38] - cmp r0, #0 - bgt _02253B18 - ldr r0, _02254170 ; =0x0225ABAC - ldr r1, _02254148 ; =0x0225AA94 - ldr r2, _0225414C ; =0x0225A908 - ldr r3, _02254174 ; =0x0000016A - bl __msl_assertion_failed -_02253B18: - ldr r0, [sp, #0x38] - cmp r0, #0 - addle sp, sp, #0xc - movle r0, #0 - ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r8, #0 - ldrnesb r0, [r8] - cmpne r0, #0 - bne _02253B50 - ldr r0, _02254178 ; =0x0225ABBC - ldr r1, _02254148 ; =0x0225AA94 - ldr r2, _0225414C ; =0x0225A908 - ldr r3, _0225417C ; =0x0000016D - bl __msl_assertion_failed -_02253B50: - cmp r8, #0 - ldrnesb r0, [r8] - cmpne r0, #0 - addeq sp, sp, #0xc - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r7, #0 - ldrnesb r0, [r7] - cmpne r0, #0 - bne _02253B8C - ldr r0, _02254180 ; =0x0225ABD8 - ldr r1, _02254148 ; =0x0225AA94 - ldr r2, _0225414C ; =0x0225A908 - mov r3, #0x170 - bl __msl_assertion_failed -_02253B8C: - cmp r7, #0 - ldrnesb r0, [r7] - cmpne r0, #0 - addeq sp, sp, #0xc - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - str r8, [sp, #8] - b _02253D44 -_02253BAC: - cmp fp, #2 - bne _02253CAC - ldr r0, [sp, #0x38] - cmp r0, #0 - bge _02253BD4 - ldr r0, _02254184 ; =0x0225ABF0 - ldr r1, _02254148 ; =0x0225AA94 - ldr r2, _0225414C ; =0x0225A908 - ldr r3, _02254188 ; =0x00000177 - bl __msl_assertion_failed -_02253BD4: - ldr r0, [sp, #0x38] - cmp r0, #0 - addlt sp, sp, #0xc - movlt r0, #0 - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [sp, #0x3c] - cmp r0, #0 - ldrnesb r0, [r0] - cmpne r0, #0 - bne _02253C10 - ldr r0, _0225418C ; =0x0225AC04 - ldr r1, _02254148 ; =0x0225AA94 - ldr r2, _0225414C ; =0x0225A908 - ldr r3, _02254190 ; =0x0000017A - bl __msl_assertion_failed -_02253C10: - ldr r0, [sp, #0x3c] - cmp r0, #0 - ldrnesb r0, [r0] - cmpne r0, #0 - addeq sp, sp, #0xc - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp sb, #0 - ldrnesb r0, [sb] - cmpne r0, #0 - bne _02253C50 - ldr r0, _02254194 ; =0x0225AC18 - ldr r1, _02254148 ; =0x0225AA94 - ldr r2, _0225414C ; =0x0225A908 - ldr r3, _02254198 ; =0x0000017D - bl __msl_assertion_failed -_02253C50: - cmp sb, #0 - ldrnesb r0, [sb] - cmpne r0, #0 - addeq sp, sp, #0xc - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r7, #0 - ldrnesb r0, [r7] - cmpne r0, #0 - bne _02253C8C - ldr r0, _02254180 ; =0x0225ABD8 - ldr r1, _02254148 ; =0x0225AA94 - ldr r2, _0225414C ; =0x0225A908 - mov r3, #0x180 - bl __msl_assertion_failed -_02253C8C: - cmp r7, #0 - ldrnesb r0, [r7] - cmpne r0, #0 - addeq sp, sp, #0xc - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - str sb, [sp, #8] - b _02253D44 -_02253CAC: - cmp fp, #3 - bne _02253D44 - ldr r0, [sp, #0x4c] - cmp r0, #0 - ldrnesb r0, [r0] - cmpne r0, #0 - bne _02253CDC - ldr r0, _0225419C ; =0x0225AC38 - ldr r1, _02254148 ; =0x0225AA94 - ldr r2, _0225414C ; =0x0225A908 - ldr r3, _022541A0 ; =0x00000187 - bl __msl_assertion_failed -_02253CDC: - ldr r0, [sp, #0x4c] - cmp r0, #0 - ldrnesb r0, [r0] - cmpne r0, #0 - addeq sp, sp, #0xc - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [sp, #0x50] - cmp r0, #0 - ldrnesb r0, [r0] - cmpne r0, #0 - bne _02253D20 - ldr r0, _022541A4 ; =0x0225AC54 - ldr r1, _02254148 ; =0x0225AA94 - ldr r2, _0225414C ; =0x0225A908 - ldr r3, _022541A8 ; =0x0000018A - bl __msl_assertion_failed -_02253D20: - ldr r0, [sp, #0x50] - cmp r0, #0 - ldrnesb r0, [r0] - cmpne r0, #0 - addeq sp, sp, #0xc - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, _022541AC ; =0x0225AC7C - str r0, [sp, #8] -_02253D44: - cmp fp, #0 - beq _02253DC4 - cmp r6, #0 - ldrnesb r0, [r6] - cmpne r0, #0 - bne _02253D70 - ldr r0, _022541B0 ; =0x0225AC84 - ldr r1, _02254148 ; =0x0225AA94 - ldr r2, _0225414C ; =0x0225A908 - ldr r3, _022541B4 ; =0x00000191 - bl __msl_assertion_failed -_02253D70: - cmp r6, #0 - ldrnesb r0, [r6] - cmpne r0, #0 - addeq sp, sp, #0xc - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r5, #0 - ldrnesb r0, [r5] - cmpne r0, #0 - bne _02253DAC - ldr r0, _022541B8 ; =0x0225AC9C - ldr r1, _02254148 ; =0x0225AA94 - ldr r2, _0225414C ; =0x0225A908 - mov r3, #0x194 - bl __msl_assertion_failed -_02253DAC: - cmp r5, #0 - ldrnesb r0, [r5] - cmpne r0, #0 - addeq sp, sp, #0xc - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02253DC4: - bl SocketStartUp - ldr r0, _022541BC ; =0x000008B4 - bl DWCi_GsMalloc - movs r4, r0 - addeq sp, sp, #0xc - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r1, #0 - ldr r2, _022541BC ; =0x000008B4 - bl memset - str fp, [r4, #0x8a8] - cmp sl, #0 - beq _02253E10 - mov r1, sl - add r0, r4, #0x36c - mov r2, #0x40 - bl strncpy - mov r0, #0 - strb r0, [r4, #0x3ab] -_02253E10: - ldr r1, [sp, #0x30] - cmp r1, #0 - beq _02253E34 - add r0, r4, #0x2c - add r0, r0, #0x400 - mov r2, #0x80 - bl strncpy - mov r0, #0 - strb r0, [r4, #0x4ab] -_02253E34: - ldr r1, [sp, #0x34] - cmp r1, #0 - beq _02253E54 - add r0, r4, #0x3ac - mov r2, #0x80 - bl strncpy - mov r0, #0 - strb r0, [r4, #0x42b] -_02253E54: - ldr r0, [sp, #0x38] - str r0, [r4, #0x4ac] - ldr r0, [sp, #0x3c] - cmp r0, #0 - beq _02253E80 - mov r1, r0 - add r0, r4, #0x4b0 - mov r2, #0x40 - bl strncpy - mov r0, #0 - strb r0, [r4, #0x4ef] -_02253E80: - cmp sb, #0 - beq _02253EA0 - mov r1, sb - add r0, r4, #0x4f0 - mov r2, #0x20 - bl strncpy - mov r0, #0 - strb r0, [r4, #0x50f] -_02253EA0: - cmp r8, #0 - beq _02253EC0 - mov r1, r8 - add r0, r4, #0x510 - mov r2, #0x40 - bl strncpy - mov r0, #0 - strb r0, [r4, #0x54f] -_02253EC0: - cmp r7, #0 - beq _02253EE0 - mov r1, r7 - add r0, r4, #0x550 - mov r2, #0x20 - bl strncpy - mov r0, #0 - strb r0, [r4, #0x56f] -_02253EE0: - ldr r0, [sp, #0x4c] - cmp r0, #0 - beq _02253F04 - mov r1, r0 - add r0, r4, #0x570 - mov r2, #0x100 - bl strncpy - mov r0, #0 - strb r0, [r4, #0x66f] -_02253F04: - ldr r0, [sp, #0x50] - cmp r0, #0 - beq _02253F28 - mov r1, r0 - add r0, r4, #0x670 - mov r2, #0x100 - bl strncpy - mov r0, #0 - strb r0, [r4, #0x76f] -_02253F28: - add r0, r4, #0x374 - ldr r1, [sp] - add r0, r0, #0x400 - mov r2, #0x80 - bl strncpy - mov r7, #0 - add r1, r4, #0x3f8 - ldr sb, [sp, #0x5c] - ldr r0, [sp, #4] - strb r7, [r4, #0x7f3] - str r0, [r4, #0x7f4] - add r8, r1, #0x400 - ldmia sb!, {r0, r1, r2, r3} - stmia r8!, {r0, r1, r2, r3} - ldr r1, [sb] - mov r0, #1 - str r1, [r8] - str r0, [r4, #0x81c] - str r0, [r4, #4] - mov r0, r4 - str r7, [r4, #0x824] - bl ciInitChannels - cmp r0, #0 - mov r0, r4 - bne _02253FA0 - bl DWCi_GsFree - bl SocketShutDown - add sp, sp, #0xc - mov r0, r7 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02253FA0: - bl ciInitCallbacks - cmp r0, #0 - bne _02253FCC - mov r0, r4 - bl ciCleanupChannels - mov r0, r4 - bl DWCi_GsFree - bl SocketShutDown - add sp, sp, #0xc - mov r0, r7 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02253FCC: - ldr r1, [sp, #8] - add r0, r4, #0x1c - bl ciSocketInit - cmp r0, #0 - bne _02254008 - mov r0, r4 - bl ciCleanupCallbacks - mov r0, r4 - bl ciCleanupChannels - mov r0, r4 - bl DWCi_GsFree - bl SocketShutDown - add sp, sp, #0xc - mov r0, r7 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02254008: - ldr r1, [sp] - ldr r2, [sp, #4] - add r0, r4, #0x1c - bl ciSocketConnect - cmp r0, #0 - bne _02254050 - add r0, r4, #0x1c - bl ciSocketDisconnect - mov r0, r4 - bl ciCleanupCallbacks - mov r0, r4 - bl ciCleanupChannels - mov r0, r4 - bl DWCi_GsFree - bl SocketShutDown - add sp, sp, #0xc - mov r0, r7 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02254050: - ldr r1, [sp, #0x60] - ldr r0, [sp, #0x64] - str r1, [r4, #0xc] - str r0, [r4, #0x10] - ldr r1, [sp, #0x68] - ldr r0, [sp, #0x6c] - str r1, [r4, #0x14] - str r0, [r4, #0x18] - cmp r6, #0 - ldrnesb r0, [r6] - cmpne r0, #0 - cmpne r5, #0 - ldrnesb r0, [r5] - cmpne r0, #0 - beq _022540C4 - add r0, r4, #0x28 - mov r1, r5 - add r0, r0, #0x800 - mov r2, #0x80 - bl strncpy - mov r1, r7 - strb r1, [r4, #0x8a7] - ldr r0, _022541C0 ; =0x0225A89C - ldr r1, _022541C4 ; =0x0225ACB8 - ldr r2, [r0, #0] - mov r3, r6 - add r0, r4, #0x1c - bl ciSocketSendf - b _022540E8 -_022540C4: - ldr r0, [r4, #0x10] - cmp r0, #0 - beq _022540E0 - ldr r1, _022541C8 ; =0x0225ACC8 - add r0, r4, #0x1c - bl ciSocketSend - b _022540E8 -_022540E0: - mov r0, r4 - bl ciSendNickAndUser -_022540E8: - ldr r0, [sp, #0x70] - cmp r0, #0 - beq _02254134 - mov r6, #0 - mov r5, #0xa -_022540FC: - mov r0, r4 - mov r1, r6 - bl ciThink - mov r0, r5 - bl msleep - ldr r0, [r4, #4] - cmp r0, #0 - bne _022540FC - ldr r0, [r4, #0] - cmp r0, #0 - bne _02254134 - mov r0, r4 - bl chatDisconnect - mov r4, #0 -_02254134: - mov r0, r4 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_02254140: .word Unk_ov66_0225AB2C -_02254144: .word Unk_ov66_0225AB30 -_02254148: .word Unk_ov66_0225AA94 -_0225414C: .word Unk_ov66_0225A908 -_02254150: .word 0x0000015B -_02254154: .word Unk_ov66_0225AB48 -_02254158: .word Unk_ov66_0225AB5C -_0225415C: .word 0x0000015D -_02254160: .word Unk_ov66_0225AB74 -_02254164: .word 0x00000163 -_02254168: .word Unk_ov66_0225AB84 -_0225416C: .word Unk_ov66_0225AB94 -_02254170: .word Unk_ov66_0225ABAC -_02254174: .word 0x0000016A -_02254178: .word Unk_ov66_0225ABBC -_0225417C: .word 0x0000016D -_02254180: .word Unk_ov66_0225ABD8 -_02254184: .word Unk_ov66_0225ABF0 -_02254188: .word 0x00000177 -_0225418C: .word Unk_ov66_0225AC04 -_02254190: .word 0x0000017A -_02254194: .word Unk_ov66_0225AC18 -_02254198: .word 0x0000017D -_0225419C: .word Unk_ov66_0225AC38 -_022541A0: .word 0x00000187 -_022541A4: .word Unk_ov66_0225AC54 -_022541A8: .word 0x0000018A -_022541AC: .word Unk_ov66_0225AC7C -_022541B0: .word Unk_ov66_0225AC84 -_022541B4: .word 0x00000191 -_022541B8: .word Unk_ov66_0225AC9C -_022541BC: .word 0x000008B4 -_022541C0: .word ciVersionID -_022541C4: .word Unk_ov66_0225ACB8 -_022541C8: .word Unk_ov66_0225ACC8 - arm_func_end chatConnectDoit - - arm_func_start chatConnectSecureA -chatConnectSecureA: ; 0x022541CC - stmfd sp!, {r3, r4, lr} - sub sp, sp, #0x44 - mov ip, r0 - mov r0, #0 - stmia sp, {r0, r3} - str r0, [sp, #8] - str r0, [sp, #0xc] - str r0, [sp, #0x10] - str r0, [sp, #0x14] - str r0, [sp, #0x18] - str r0, [sp, #0x1c] - ldr lr, [sp, #0x50] - str r0, [sp, #0x20] - str lr, [sp, #0x24] - ldr r3, [sp, #0x54] - mov r4, r1 - str r3, [sp, #0x28] - ldr lr, [sp, #0x58] - mov r3, r2 - str lr, [sp, #0x2c] - ldr r2, [sp, #0x5c] - ldr r1, [sp, #0x60] - str r2, [sp, #0x30] - str r1, [sp, #0x34] - ldr r2, [sp, #0x64] - ldr r1, [sp, #0x68] - str r2, [sp, #0x38] - str r1, [sp, #0x3c] - ldr lr, [sp, #0x6c] - mov r1, ip - mov r2, r4 - str lr, [sp, #0x40] - bl chatConnectDoit - add sp, sp, #0x44 - ldmia sp!, {r3, r4, pc} - arm_func_end chatConnectSecureA - - arm_func_start chatRetryWithNickA -chatRetryWithNickA: ; 0x02254258 - stmfd sp!, {r3, r4, r5, lr} - movs r5, r0 - mov r4, r1 - bne _0225427C - ldr r0, _0225430C ; =0x0225AAA0 - ldr r1, _02254310 ; =0x0225AA94 - ldr r2, _02254314 ; =0x0225A968 - ldr r3, _02254318 ; =0x00000385 - bl __msl_assertion_failed -_0225427C: - ldr r0, [r5, #0] - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - cmp r4, #0 - bne _022542B8 - mov r1, #0 - str r1, [r5, #4] - ldr ip, [r5, #0x14] - cmp ip, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r3, [r5, #0x18] - mov r0, r5 - mov r2, #1 - blx ip - ldmia sp!, {r3, r4, r5, pc} -_022542B8: - mov r1, r4 - add r0, r5, #0x36c - mov r2, #0x40 - bl strncpy - mov r1, #0 - mov r0, r4 - strb r1, [r5, #0x3ab] - bl ciNickIsValid - movs r1, r0 - beq _022542F8 - mov r3, #0 - mov r0, r5 - mov r2, r4 - str r3, [sp] - bl ciNickError - ldmia sp!, {r3, r4, r5, pc} -_022542F8: - ldr r1, _0225431C ; =0x0225ACD0 - mov r2, r4 - add r0, r5, #0x1c - bl ciSocketSendf - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0225430C: .word Unk_ov66_0225AAA0 -_02254310: .word Unk_ov66_0225AA94 -_02254314: .word Unk_ov66_0225A968 -_02254318: .word 0x00000385 -_0225431C: .word Unk_ov66_0225ACD0 - arm_func_end chatRetryWithNickA - - arm_func_start chatRegisterUniqueNickA -chatRegisterUniqueNickA: ; 0x02254320 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - movs r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bne _0225434C - ldr r0, _022543C4 ; =0x0225AAA0 - ldr r1, _022543C8 ; =0x0225AA94 - ldr r2, _022543CC ; =0x0225AA3C - ldr r3, _022543D0 ; =0x000003BD - bl __msl_assertion_failed -_0225434C: - ldr r0, [r7, #0] - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - cmp r5, #0 - bne _02254388 - mov r1, #0 - str r1, [r7, #4] - ldr ip, [r7, #0x14] - cmp ip, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r3, [r7, #0x18] - mov r0, r7 - mov r2, #1 - blx ip - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02254388: - cmp r4, #0 - ldreq r4, _022543D4 ; =0x0225AB2C - ldr r1, _022543D8 ; =0x0225ACDC - mov r2, r6 - mov r3, r5 - add r0, r7, #0x1c - str r4, [sp] - bl ciSocketSendf - mov r1, r5 - add r0, r7, #0x510 - mov r2, #0x40 - bl strncpy - mov r0, #0 - strb r0, [r7, #0x54f] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_022543C4: .word Unk_ov66_0225AAA0 -_022543C8: .word Unk_ov66_0225AA94 -_022543CC: .word Unk_ov66_0225AA3C -_022543D0: .word 0x000003BD -_022543D4: .word Unk_ov66_0225AB2C -_022543D8: .word Unk_ov66_0225ACDC - arm_func_end chatRegisterUniqueNickA - - arm_func_start chatDisconnect -chatDisconnect: ; 0x022543DC - stmfd sp!, {r4, lr} - movs r4, r0 - bne _022543FC - ldr r0, _02254474 ; =0x0225AAA0 - ldr r1, _02254478 ; =0x0225AA94 - ldr r2, _0225447C ; =0x0225A8E8 - ldr r3, _02254480 ; =0x000003EF - bl __msl_assertion_failed -_022543FC: - mov r0, r4 - bl ciCleanupFilters - ldr r0, [r4, #8] - cmp r0, #0 - bne _0225442C - ldr r3, [r4, #0x7fc] - cmp r3, #0 - beq _0225442C - ldr r2, [r4, #0x808] - ldr r1, _02254484 ; =0x0225AB2C - mov r0, r4 - blx r3 -_0225442C: - ldr r0, [r4, #0] - cmp r0, #0 - beq _0225444C - ldr r1, _02254488 ; =0x0225ACF4 - add r0, r4, #0x1c - bl ciSocketSend - add r0, r4, #0x1c - bl ciSocketThink -_0225444C: - mov r0, r4 - bl ciCleanupChannels - mov r0, r4 - bl ciCleanupCallbacks - add r0, r4, #0x1c - bl ciSocketDisconnect - mov r0, r4 - bl DWCi_GsFree - bl SocketShutDown - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02254474: .word Unk_ov66_0225AAA0 -_02254478: .word Unk_ov66_0225AA94 -_0225447C: .word Unk_ov66_0225A8E8 -_02254480: .word 0x000003EF -_02254484: .word Unk_ov66_0225AB2C -_02254488: .word Unk_ov66_0225ACF4 - arm_func_end chatDisconnect - - arm_func_start chatThink -chatThink: ; 0x0225448C - ldr ip, _02254498 ; =ciThink - mov r1, #0 - bx ip - ; .align 2, 0 -_02254498: .word ciThink - arm_func_end chatThink - - arm_func_start chatEnumChannelsA -chatEnumChannelsA: ; 0x0225449C - stmfd sp!, {r3, r4, r5, r6, r7, lr} - movs r4, r0 - mov r7, r1 - mov r6, r2 - mov r5, r3 - bne _022544C8 - ldr r0, _02254564 ; =0x0225AAA0 - ldr r1, _02254568 ; =0x0225AA94 - ldr r2, _0225456C ; =0x0225A918 - ldr r3, _02254570 ; =0x0000058E - bl __msl_assertion_failed -_022544C8: - cmp r4, #0 - ldrne r0, [r4] - cmpne r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - cmp r5, #0 - cmpeq r6, #0 - bne _022544F8 - ldr r0, _02254574 ; =0x0225AD64 - ldr r1, _02254568 ; =0x0225AA94 - ldr r2, _0225456C ; =0x0225A918 - ldr r3, _02254578 ; =0x00000591 - bl __msl_assertion_failed -_022544F8: - cmp r7, #0 - ldreq r7, _0225457C ; =0x0225AB2C - ldr r1, _02254580 ; =0x0225AD94 - mov r2, r7 - add r0, r4, #0x1c - bl ciSocketSendf - ldr r3, [sp, #0x18] - mov r0, r4 - mov r1, r6 - mov r2, r5 - bl ciAddLISTFilter - ldr r1, [sp, #0x1c] - mov r6, r0 - cmp r1, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r5, #0xa -_02254538: - mov r0, r4 - mov r1, r6 - bl ciThink - mov r0, r5 - bl msleep - mov r0, r4 - mov r1, r6 - bl ciCheckForID - cmp r0, #0 - bne _02254538 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02254564: .word Unk_ov66_0225AAA0 -_02254568: .word Unk_ov66_0225AA94 -_0225456C: .word Unk_ov66_0225A918 -_02254570: .word 0x0000058E -_02254574: .word Unk_ov66_0225AD64 -_02254578: .word 0x00000591 -_0225457C: .word Unk_ov66_0225AB2C -_02254580: .word Unk_ov66_0225AD94 - arm_func_end chatEnumChannelsA - - arm_func_start chatEnterChannelA -chatEnterChannelA: ; 0x02254584 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - movs r4, r0 - mov r7, r1 - mov r6, r2 - mov r5, r3 - bne _022545B4 - ldr r0, _022546A8 ; =0x0225AAA0 - ldr r1, _022546AC ; =0x0225AA94 - ldr r2, _022546B0 ; =0x0225A92C - ldr r3, _022546B4 ; =0x000005B3 - bl __msl_assertion_failed -_022545B4: - cmp r4, #0 - ldrne r0, [r4] - cmpne r0, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - cmp r7, #0 - bne _022545E4 - ldr r0, _022546B8 ; =0x0225AD9C - ldr r1, _022546AC ; =0x0225AA94 - ldr r2, _022546B0 ; =0x0225A92C - ldr r3, _022546BC ; =0x000005B6 - bl __msl_assertion_failed -_022545E4: - ldrsb r0, [r7] - cmp r0, #0 - bne _02254604 - ldr r0, _022546C0 ; =0x0225ADAC - ldr r1, _022546AC ; =0x0225AA94 - ldr r2, _022546B0 ; =0x0225A92C - ldr r3, _022546BC ; =0x000005B6 - bl __msl_assertion_failed -_02254604: - cmp r5, #0 - bne _02254620 - ldr r0, _022546C4 ; =0x0225AB48 - ldr r1, _022546AC ; =0x0225AA94 - ldr r2, _022546B0 ; =0x0225A92C - ldr r3, _022546C8 ; =0x000005B7 - bl __msl_assertion_failed -_02254620: - cmp r6, #0 - ldreq r6, _022546CC ; =0x0225AB2C - ldr r1, _022546D0 ; =0x0225ADC0 - mov r2, r7 - mov r3, r6 - add r0, r4, #0x1c - bl ciSocketSendf - ldr r2, [sp, #0x20] - ldr r3, [sp, #0x24] - mov r0, r4 - mov r1, r7 - stmia sp, {r5, r6} - bl ciAddJOINFilter - mov r6, r0 - mov r0, r4 - mov r1, r7 - bl ciChannelEntering - ldr r0, [sp, #0x28] - cmp r0, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r5, #0xa -_02254678: - mov r0, r4 - mov r1, r6 - bl ciThink - mov r0, r5 - bl msleep - mov r0, r4 - mov r1, r6 - bl ciCheckForID - cmp r0, #0 - bne _02254678 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_022546A8: .word Unk_ov66_0225AAA0 -_022546AC: .word Unk_ov66_0225AA94 -_022546B0: .word Unk_ov66_0225A92C -_022546B4: .word 0x000005B3 -_022546B8: .word Unk_ov66_0225AD9C -_022546BC: .word 0x000005B6 -_022546C0: .word Unk_ov66_0225ADAC -_022546C4: .word Unk_ov66_0225AB48 -_022546C8: .word 0x000005B7 -_022546CC: .word Unk_ov66_0225AB2C -_022546D0: .word Unk_ov66_0225ADC0 - arm_func_end chatEnterChannelA - - arm_func_start chatLeaveChannelA -chatLeaveChannelA: ; 0x022546D4 - stmfd sp!, {r4, r5, r6, lr} - movs r6, r0 - mov r5, r1 - mov r4, r2 - bne _022546FC - ldr r0, _02254774 ; =0x0225AAA0 - ldr r1, _02254778 ; =0x0225AA94 - ldr r2, _0225477C ; =0x0225A940 - ldr r3, _02254780 ; =0x000005DB - bl __msl_assertion_failed -_022546FC: - cmp r6, #0 - ldrne r0, [r6] - cmpne r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - cmp r5, #0 - bne _02254728 - ldr r0, _02254784 ; =0x0225AD9C - ldr r1, _02254778 ; =0x0225AA94 - ldr r2, _0225477C ; =0x0225A940 - ldr r3, _02254788 ; =0x000005DE - bl __msl_assertion_failed -_02254728: - ldrsb r0, [r5] - cmp r0, #0 - bne _02254748 - ldr r0, _0225478C ; =0x0225ADAC - ldr r1, _02254778 ; =0x0225AA94 - ldr r2, _0225477C ; =0x0225A940 - ldr r3, _02254788 ; =0x000005DE - bl __msl_assertion_failed -_02254748: - cmp r4, #0 - ldreq r4, _02254790 ; =0x0225AB2C - ldr r1, _02254794 ; =0x0225ADCC - mov r2, r5 - mov r3, r4 - add r0, r6, #0x1c - bl ciSocketSendf - mov r0, r6 - mov r1, r5 - bl ciChannelLeft - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_02254774: .word Unk_ov66_0225AAA0 -_02254778: .word Unk_ov66_0225AA94 -_0225477C: .word Unk_ov66_0225A940 -_02254780: .word 0x000005DB -_02254784: .word Unk_ov66_0225AD9C -_02254788: .word 0x000005DE -_0225478C: .word Unk_ov66_0225ADAC -_02254790: .word Unk_ov66_0225AB2C -_02254794: .word Unk_ov66_0225ADCC - arm_func_end chatLeaveChannelA - - arm_func_start chatSendChannelMessageA -chatSendChannelMessageA: ; 0x02254798 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x20 - movs r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bne _022547C8 - ldr r0, _02254948 ; =0x0225AAA0 - ldr r1, _0225494C ; =0x0225AA94 - ldr r2, _02254950 ; =0x0225AA6C - ldr r3, _02254954 ; =0x000005FC - bl __msl_assertion_failed -_022547C8: - cmp r7, #0 - ldrne r0, [r7] - cmpne r0, #0 - addeq sp, sp, #0x20 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - cmp r6, #0 - bne _022547F8 - ldr r0, _02254958 ; =0x0225AD9C - ldr r1, _0225494C ; =0x0225AA94 - ldr r2, _02254950 ; =0x0225AA6C - ldr r3, _0225495C ; =0x000005FF - bl __msl_assertion_failed -_022547F8: - ldrsb r0, [r6] - cmp r0, #0 - bne _02254818 - ldr r0, _02254960 ; =0x0225ADAC - ldr r1, _0225494C ; =0x0225AA94 - ldr r2, _02254950 ; =0x0225AA6C - ldr r3, _0225495C ; =0x000005FF - bl __msl_assertion_failed -_02254818: - cmp r4, #4 - bls _02254834 - ldr r0, _02254964 ; =0x0225ADD8 - ldr r1, _0225494C ; =0x0225AA94 - ldr r2, _02254950 ; =0x0225AA6C - mov r3, #0x600 - bl __msl_assertion_failed -_02254834: - cmp r5, #0 - ldrnesb r0, [r5] - cmpne r0, #0 - addeq sp, sp, #0x20 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - cmp r4, #0 - bne _02254868 - ldr r1, _02254968 ; =0x0225AE50 - mov r2, r6 - mov r3, r5 - add r0, r7, #0x1c - bl ciSocketSendf - b _022548E8 -_02254868: - cmp r4, #1 - bne _02254888 - ldr r1, _0225496C ; =0x0225AE60 - mov r2, r6 - mov r3, r5 - add r0, r7, #0x1c - bl ciSocketSendf - b _022548E8 -_02254888: - cmp r4, #2 - bne _022548A8 - ldr r1, _02254970 ; =0x0225AE78 - mov r2, r6 - mov r3, r5 - add r0, r7, #0x1c - bl ciSocketSendf - b _022548E8 -_022548A8: - cmp r4, #3 - bne _022548C8 - ldr r1, _02254974 ; =0x0225AE88 - mov r2, r6 - mov r3, r5 - add r0, r7, #0x1c - bl ciSocketSendf - b _022548E8 -_022548C8: - cmp r4, #4 - addne sp, sp, #0x20 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, _02254978 ; =0x0225AE94 - mov r2, r6 - mov r3, r5 - add r0, r7, #0x1c - bl ciSocketSendf -_022548E8: - mov r0, r7 - mov r1, r6 - bl ciGetChannelCallbacks - cmp r0, #0 - addeq sp, sp, #0x20 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - add r1, r7, #0x36c - str r1, [sp, #0x14] - str r6, [sp, #0x10] - str r5, [sp, #0x18] - str r4, [sp, #0x1c] - ldr r2, [r0, #0x2c] - mov r1, #0 - str r2, [sp] - stmib sp, {r1, r6} - mov r1, #0x10 - str r1, [sp, #0xc] - ldr r2, [r0, #0] - add r3, sp, #0x10 - mov r0, r7 - mov r1, #4 - bl ciAddCallback_ - add sp, sp, #0x20 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02254948: .word Unk_ov66_0225AAA0 -_0225494C: .word Unk_ov66_0225AA94 -_02254950: .word Unk_ov66_0225AA6C -_02254954: .word 0x000005FC -_02254958: .word Unk_ov66_0225AD9C -_0225495C: .word 0x000005FF -_02254960: .word Unk_ov66_0225ADAC -_02254964: .word Unk_ov66_0225ADD8 -_02254968: .word Unk_ov66_0225AE50 -_0225496C: .word Unk_ov66_0225AE60 -_02254970: .word Unk_ov66_0225AE78 -_02254974: .word Unk_ov66_0225AE88 -_02254978: .word Unk_ov66_0225AE94 - arm_func_end chatSendChannelMessageA - - arm_func_start chatSetChannelModeA -chatSetChannelModeA: ; 0x0225497C - stmfd sp!, {r4, r5, r6, lr} - sub sp, sp, #0x40 - movs r6, r0 - mov r5, r1 - mov r4, r2 - bne _022549A8 - ldr r0, _02254B4C ; =0x0225AAA0 - ldr r1, _02254B50 ; =0x0225AA94 - ldr r2, _02254B54 ; =0x0225A9CC - ldr r3, _02254B58 ; =0x0000067F - bl __msl_assertion_failed -_022549A8: - cmp r6, #0 - ldrne r0, [r6] - cmpne r0, #0 - addeq sp, sp, #0x40 - ldmeqia sp!, {r4, r5, r6, pc} - cmp r5, #0 - bne _022549D8 - ldr r0, _02254B5C ; =0x0225AD9C - ldr r1, _02254B50 ; =0x0225AA94 - ldr r2, _02254B54 ; =0x0225A9CC - ldr r3, _02254B60 ; =0x00000682 - bl __msl_assertion_failed -_022549D8: - ldrsb r0, [r5] - cmp r0, #0 - bne _022549F8 - ldr r0, _02254B64 ; =0x0225ADAC - ldr r1, _02254B50 ; =0x0225AA94 - ldr r2, _02254B54 ; =0x0225A9CC - ldr r3, _02254B60 ; =0x00000682 - bl __msl_assertion_failed -_022549F8: - cmp r4, #0 - bne _02254A14 - ldr r0, _02254B68 ; =0x0225AEB4 - ldr r1, _02254B50 ; =0x0225AA94 - ldr r2, _02254B54 ; =0x0225A9CC - ldr r3, _02254B6C ; =0x00000683 - bl __msl_assertion_failed -_02254A14: - ldr r3, _02254B70 ; =0x0225AEC4 - add ip, sp, #0 - mov r2, #8 -_02254A20: - ldrb r1, [r3] - ldrb r0, [r3, #1] - add r3, r3, #2 - strb r1, [ip] - strb r0, [ip, #1] - add ip, ip, #2 - subs r2, r2, #1 - bne _02254A20 - ldrb r0, [r3] - strb r0, [ip] - ldr r0, [r4, #0] - cmp r0, #0 - movne r0, #0x2b - strneb r0, [sp] - moveq r0, #0x2d - streqb r0, [sp] - ldr r0, [r4, #4] - cmp r0, #0 - movne r0, #0x2b - strneb r0, [sp, #2] - moveq r0, #0x2d - streqb r0, [sp, #2] - ldr r0, [r4, #8] - cmp r0, #0 - movne r0, #0x2b - strneb r0, [sp, #4] - moveq r0, #0x2d - streqb r0, [sp, #4] - ldr r0, [r4, #0xc] - cmp r0, #0 - movne r0, #0x2b - strneb r0, [sp, #6] - moveq r0, #0x2d - streqb r0, [sp, #6] - ldr r0, [r4, #0x10] - cmp r0, #0 - movne r0, #0x2b - strneb r0, [sp, #8] - moveq r0, #0x2d - streqb r0, [sp, #8] - ldr r0, [r4, #0x14] - cmp r0, #0 - movne r0, #0x2b - strneb r0, [sp, #0xa] - moveq r0, #0x2d - streqb r0, [sp, #0xa] - ldr r0, [r4, #0x1c] - cmp r0, #0 - movgt r0, #0x2b - strgtb r0, [sp, #0xc] - movle r0, #0x2d - strleb r0, [sp, #0xc] - ldr r0, [r4, #0x18] - cmp r0, #0 - movne r0, #0x2b - strneb r0, [sp, #0xe] - moveq r0, #0x2d - streqb r0, [sp, #0xe] - ldr r4, [r4, #0x1c] - cmp r4, #0 - ble _02254B30 - add r0, sp, #0 - bl strlen - add r3, sp, #0 - ldr r1, _02254B74 ; =0x0225AED8 - mov r2, r4 - add r0, r3, r0 - bl sprintf -_02254B30: - ldr r1, _02254B78 ; =0x0225AEDC - add r3, sp, #0 - mov r2, r5 - add r0, r6, #0x1c - bl ciSocketSendf - add sp, sp, #0x40 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_02254B4C: .word Unk_ov66_0225AAA0 -_02254B50: .word Unk_ov66_0225AA94 -_02254B54: .word Unk_ov66_0225A9CC -_02254B58: .word 0x0000067F -_02254B5C: .word Unk_ov66_0225AD9C -_02254B60: .word 0x00000682 -_02254B64: .word Unk_ov66_0225ADAC -_02254B68: .word Unk_ov66_0225AEB4 -_02254B6C: .word 0x00000683 -_02254B70: .word Unk_ov66_0225AEC4 -_02254B74: .word Unk_ov66_0225AED8 -_02254B78: .word Unk_ov66_0225AEDC - arm_func_end chatSetChannelModeA - - arm_func_start chatGetChannelModeA -chatGetChannelModeA: ; 0x02254B7C - stmfd sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x3c - movs r8, r0 - mov r7, r1 - mov r6, r2 - mov r5, r3 - bne _02254BAC - ldr r0, _02254D40 ; =0x0225AAA0 - ldr r1, _02254D44 ; =0x0225AA94 - ldr r2, _02254D48 ; =0x0225A9E0 - ldr r3, _02254D4C ; =0x000006C2 - bl __msl_assertion_failed -_02254BAC: - cmp r8, #0 - ldrne r0, [r8] - cmpne r0, #0 - addeq sp, sp, #0x3c - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} - cmp r7, #0 - bne _02254BDC - ldr r0, _02254D50 ; =0x0225AD9C - ldr r1, _02254D44 ; =0x0225AA94 - ldr r2, _02254D48 ; =0x0225A9E0 - ldr r3, _02254D54 ; =0x000006C5 - bl __msl_assertion_failed -_02254BDC: - ldrsb r0, [r7] - cmp r0, #0 - bne _02254BFC - ldr r0, _02254D58 ; =0x0225ADAC - ldr r1, _02254D44 ; =0x0225AA94 - ldr r2, _02254D48 ; =0x0225A9E0 - ldr r3, _02254D54 ; =0x000006C5 - bl __msl_assertion_failed -_02254BFC: - cmp r6, #0 - bne _02254C18 - ldr r0, _02254D5C ; =0x0225AEA0 - ldr r1, _02254D44 ; =0x0225AA94 - ldr r2, _02254D48 ; =0x0225A9E0 - ldr r3, _02254D60 ; =0x000006C6 - bl __msl_assertion_failed -_02254C18: - mov r0, r8 - mov r1, r7 - bl ciInChannel - cmp r0, #0 - beq _02254CD4 - add r2, sp, #0x1c - mov r0, r8 - mov r1, r7 - bl ciGetChannelMode - cmp r0, #0 - beq _02254CD4 - mov r0, r8 - bl ciGetNextID - add r1, sp, #0x1c - mov r2, #1 - str r2, [sp, #0x10] - str r1, [sp, #0x18] - str r7, [sp, #0x14] - mov r4, r0 - str r5, [sp] - str r4, [sp, #4] - mov r1, #0 - str r1, [sp, #8] - mov r5, #0xc - add r3, sp, #0x10 - mov r0, r8 - mov r2, r6 - mov r1, #0x11 - str r5, [sp, #0xc] - bl ciAddCallback_ - ldr r0, [sp, #0x58] - cmp r0, #0 - addeq sp, sp, #0x3c - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} - mov r5, #0xa -_02254CA4: - mov r0, r8 - mov r1, r4 - bl ciThink - mov r0, r5 - bl msleep - mov r0, r8 - mov r1, r4 - bl ciCheckForID - cmp r0, #0 - bne _02254CA4 - add sp, sp, #0x3c - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_02254CD4: - ldr r1, _02254D64 ; =0x0225AEE8 - mov r2, r7 - add r0, r8, #0x1c - bl ciSocketSendf - mov r0, r8 - mov r1, r7 - mov r2, r6 - mov r3, r5 - bl ciAddCMODEFilter - ldr r1, [sp, #0x58] - mov r5, r0 - cmp r1, #0 - addeq sp, sp, #0x3c - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} - mov r4, #0xa -_02254D10: - mov r0, r8 - mov r1, r5 - bl ciThink - mov r0, r4 - bl msleep - mov r0, r8 - mov r1, r5 - bl ciCheckForID - cmp r0, #0 - bne _02254D10 - add sp, sp, #0x3c - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_02254D40: .word Unk_ov66_0225AAA0 -_02254D44: .word Unk_ov66_0225AA94 -_02254D48: .word Unk_ov66_0225A9E0 -_02254D4C: .word 0x000006C2 -_02254D50: .word Unk_ov66_0225AD9C -_02254D54: .word 0x000006C5 -_02254D58: .word Unk_ov66_0225ADAC -_02254D5C: .word Unk_ov66_0225AEA0 -_02254D60: .word 0x000006C6 -_02254D64: .word Unk_ov66_0225AEE8 - arm_func_end chatGetChannelModeA - - arm_func_start chatSetChannelLimitA -chatSetChannelLimitA: ; 0x02254D68 - stmfd sp!, {r4, r5, r6, lr} - movs r6, r0 - mov r5, r1 - mov r4, r2 - bne _02254D90 - ldr r0, _02254E2C ; =0x0225AAA0 - ldr r1, _02254E30 ; =0x0225AA94 - ldr r2, _02254E34 ; =0x0225A9F4 - ldr r3, _02254E38 ; =0x0000074E - bl __msl_assertion_failed -_02254D90: - cmp r6, #0 - ldrne r0, [r6] - cmpne r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - cmp r5, #0 - bne _02254DBC - ldr r0, _02254E3C ; =0x0225AD9C - ldr r1, _02254E30 ; =0x0225AA94 - ldr r2, _02254E34 ; =0x0225A9F4 - ldr r3, _02254E40 ; =0x00000751 - bl __msl_assertion_failed -_02254DBC: - ldrsb r0, [r5] - cmp r0, #0 - bne _02254DDC - ldr r0, _02254E44 ; =0x0225ADAC - ldr r1, _02254E30 ; =0x0225AA94 - ldr r2, _02254E34 ; =0x0225A9F4 - ldr r3, _02254E40 ; =0x00000751 - bl __msl_assertion_failed -_02254DDC: - cmp r4, #0 - bge _02254DF8 - ldr r0, _02254E48 ; =0x0225AEF0 - ldr r1, _02254E30 ; =0x0225AA94 - ldr r2, _02254E34 ; =0x0225A9F4 - ldr r3, _02254E4C ; =0x00000752 - bl __msl_assertion_failed -_02254DF8: - cmp r4, #0 - beq _02254E18 - ldr r1, _02254E50 ; =0x0225AEFC - mov r2, r5 - mov r3, r4 - add r0, r6, #0x1c - bl ciSocketSendf - ldmia sp!, {r4, r5, r6, pc} -_02254E18: - ldr r1, _02254E54 ; =0x0225AF0C - mov r2, r5 - add r0, r6, #0x1c - bl ciSocketSendf - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_02254E2C: .word Unk_ov66_0225AAA0 -_02254E30: .word Unk_ov66_0225AA94 -_02254E34: .word Unk_ov66_0225A9F4 -_02254E38: .word 0x0000074E -_02254E3C: .word Unk_ov66_0225AD9C -_02254E40: .word 0x00000751 -_02254E44: .word Unk_ov66_0225ADAC -_02254E48: .word Unk_ov66_0225AEF0 -_02254E4C: .word 0x00000752 -_02254E50: .word Unk_ov66_0225AEFC -_02254E54: .word Unk_ov66_0225AF0C - arm_func_end chatSetChannelLimitA - - arm_func_start chatGetChannelNumUsersA -chatGetChannelNumUsersA: ; 0x02254E58 - stmfd sp!, {r3, r4, r5, lr} - movs r5, r0 - mov r4, r1 - bne _02254E7C - ldr r0, _02254F04 ; =0x0225AAA0 - ldr r1, _02254F08 ; =0x0225AA94 - ldr r2, _02254F0C ; =0x0225AA54 - ldr r3, _02254F10 ; =0x000007D6 - bl __msl_assertion_failed -_02254E7C: - ldr r0, [r5, #0] - cmp r0, #0 - mvneq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r4, #0 - bne _02254EA8 - ldr r0, _02254F14 ; =0x0225AD9C - ldr r1, _02254F08 ; =0x0225AA94 - ldr r2, _02254F0C ; =0x0225AA54 - ldr r3, _02254F18 ; =0x000007DA - bl __msl_assertion_failed -_02254EA8: - ldrsb r0, [r4] - cmp r0, #0 - bne _02254EC8 - ldr r0, _02254F1C ; =0x0225ADAC - ldr r1, _02254F08 ; =0x0225AA94 - ldr r2, _02254F0C ; =0x0225AA54 - ldr r3, _02254F18 ; =0x000007DA - bl __msl_assertion_failed -_02254EC8: - cmp r4, #0 - ldrnesb r0, [r4] - cmpne r0, #0 - mvneq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, r4 - bl ciInChannel - cmp r0, #0 - mvneq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, r4 - bl ciGetChannelNumUsers - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02254F04: .word Unk_ov66_0225AAA0 -_02254F08: .word Unk_ov66_0225AA94 -_02254F0C: .word Unk_ov66_0225AA54 -_02254F10: .word 0x000007D6 -_02254F14: .word Unk_ov66_0225AD9C -_02254F18: .word 0x000007DA -_02254F1C: .word Unk_ov66_0225ADAC - arm_func_end chatGetChannelNumUsersA - - arm_func_start chatInChannelA -chatInChannelA: ; 0x02254F20 - stmfd sp!, {r3, r4, r5, lr} - movs r5, r0 - mov r4, r1 - bne _02254F44 - ldr r0, _02254FB4 ; =0x0225AAA0 - ldr r1, _02254FB8 ; =0x0225AA94 - ldr r2, _02254FBC ; =0x0225A8D8 - ldr r3, _02254FC0 ; =0x000007F4 - bl __msl_assertion_failed -_02254F44: - ldr r0, [r5, #0] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r4, #0 - bne _02254F70 - ldr r0, _02254FC4 ; =0x0225AD9C - ldr r1, _02254FB8 ; =0x0225AA94 - ldr r2, _02254FBC ; =0x0225A8D8 - ldr r3, _02254FC8 ; =0x000007F8 - bl __msl_assertion_failed -_02254F70: - ldrsb r0, [r4] - cmp r0, #0 - bne _02254F90 - ldr r0, _02254FCC ; =0x0225ADAC - ldr r1, _02254FB8 ; =0x0225AA94 - ldr r2, _02254FBC ; =0x0225A8D8 - ldr r3, _02254FC8 ; =0x000007F8 - bl __msl_assertion_failed -_02254F90: - cmp r4, #0 - ldrnesb r0, [r4] - cmpne r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, r4 - bl ciInChannel - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02254FB4: .word Unk_ov66_0225AAA0 -_02254FB8: .word Unk_ov66_0225AA94 -_02254FBC: .word Unk_ov66_0225A8D8 -_02254FC0: .word 0x000007F4 -_02254FC4: .word Unk_ov66_0225AD9C -_02254FC8: .word 0x000007F8 -_02254FCC: .word Unk_ov66_0225ADAC - arm_func_end chatInChannelA - - arm_func_start ciEnumUsersCallback -ciEnumUsersCallback: ; 0x02254FD0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0xc - movs r8, r0 - mov r7, r1 - mov r6, r2 - mov r5, r3 - bne _02255000 - ldr r0, _022550D0 ; =0x0225AAA0 - ldr r1, _022550D4 ; =0x0225AA94 - ldr r2, _022550D8 ; =0x0225A990 - ldr r3, _022550DC ; =0x00000812 - bl __msl_assertion_failed -_02255000: - cmp r7, #0 - bne _0225501C - ldr r0, _022550E0 ; =0x0225AD9C - ldr r1, _022550D4 ; =0x0225AA94 - ldr r2, _022550D8 ; =0x0225A990 - ldr r3, _022550E4 ; =0x00000816 - bl __msl_assertion_failed -_0225501C: - ldrsb r0, [r7] - cmp r0, #0 - bne _0225503C - ldr r0, _022550E8 ; =0x0225ADAC - ldr r1, _022550D4 ; =0x0225AA94 - ldr r2, _022550D8 ; =0x0225A990 - ldr r3, _022550E4 ; =0x00000816 - bl __msl_assertion_failed -_0225503C: - cmp r6, #0 - bge _02255058 - ldr r0, _022550EC ; =0x0225AF18 - ldr r1, _022550D4 ; =0x0225AA94 - ldr r2, _022550D8 ; =0x0225A990 - ldr r3, _022550F0 ; =0x00000817 - bl __msl_assertion_failed -_02255058: - ldr r0, [sp, #0x2c] - cmp r0, #0 - bne _02255078 - ldr r0, _022550F4 ; =0x0225AF28 - ldr r1, _022550D4 ; =0x0225AA94 - ldr r2, _022550D8 ; =0x0225A990 - ldr r3, _022550F8 ; =0x00000827 - bl __msl_assertion_failed -_02255078: - ldr r4, [sp, #0x2c] - ldr r0, [r4, #0] - cmp r0, #0 - bne _0225509C - ldr r0, _022550FC ; =0x0225AF38 - ldr r1, _022550D4 ; =0x0225AA94 - ldr r2, _022550D8 ; =0x0225A990 - ldr r3, _02255100 ; =0x0000082C - bl __msl_assertion_failed -_0225509C: - ldr r0, [sp, #0x28] - str r5, [sp] - str r0, [sp, #4] - ldr r1, [r4, #4] - mov r0, r8 - str r1, [sp, #8] - ldr r4, [r4, #0] - mov r2, r7 - mov r3, r6 - mov r1, #1 - blx r4 - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_022550D0: .word Unk_ov66_0225AAA0 -_022550D4: .word Unk_ov66_0225AA94 -_022550D8: .word Unk_ov66_0225A990 -_022550DC: .word 0x00000812 -_022550E0: .word Unk_ov66_0225AD9C -_022550E4: .word 0x00000816 -_022550E8: .word Unk_ov66_0225ADAC -_022550EC: .word Unk_ov66_0225AF18 -_022550F0: .word 0x00000817 -_022550F4: .word Unk_ov66_0225AF28 -_022550F8: .word 0x00000827 -_022550FC: .word Unk_ov66_0225AF38 -_02255100: .word 0x0000082C - arm_func_end ciEnumUsersCallback - - arm_func_start chatEnumUsersA -chatEnumUsersA: ; 0x02255104 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - movs r4, r0 - mov r7, r1 - mov r6, r2 - mov r5, r3 - bne _02255134 - ldr r0, _02255228 ; =0x0225AAA0 - ldr r1, _0225522C ; =0x0225AA94 - ldr r2, _02255230 ; =0x0225A8F8 - ldr r3, _02255234 ; =0x00000847 - bl __msl_assertion_failed -_02255134: - cmp r4, #0 - ldrne r0, [r4] - cmpne r0, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - cmp r6, #0 - bne _02255164 - ldr r0, _02255238 ; =0x0225AEA0 - ldr r1, _0225522C ; =0x0225AA94 - ldr r2, _02255230 ; =0x0225A8F8 - ldr r3, _0225523C ; =0x0000084B - bl __msl_assertion_failed -_02255164: - cmp r7, #0 - ldreq r7, _02255240 ; =0x0225AB2C - ldrsb r0, [r7] - cmp r0, #0 - beq _022551B0 - mov r0, r4 - mov r1, r7 - bl ciInChannel - cmp r0, #0 - beq _022551B0 - ldr r2, _02255244 ; =ciEnumUsersCallback - add r3, sp, #0 - mov r0, r4 - mov r1, r7 - str r6, [sp] - str r5, [sp, #4] - bl ciChannelListUsers - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022551B0: - ldr r1, _02255248 ; =0x0225AF50 - mov r2, r7 - add r0, r4, #0x1c - bl ciSocketSendf - ldrsb r0, [r7] - mov r2, r6 - mov r3, r5 - cmp r0, #0 - moveq r7, #0 - mov r0, r4 - mov r1, r7 - bl ciAddNAMESFilter - ldr r1, [sp, #0x20] - mov r6, r0 - cmp r1, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r5, #0xa -_022551F8: - mov r0, r4 - mov r1, r6 - bl ciThink - mov r0, r5 - bl msleep - mov r0, r4 - mov r1, r6 - bl ciCheckForID - cmp r0, #0 - bne _022551F8 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02255228: .word Unk_ov66_0225AAA0 -_0225522C: .word Unk_ov66_0225AA94 -_02255230: .word Unk_ov66_0225A8F8 -_02255234: .word 0x00000847 -_02255238: .word Unk_ov66_0225AEA0 -_0225523C: .word 0x0000084B -_02255240: .word Unk_ov66_0225AB2C -_02255244: .word ciEnumUsersCallback -_02255248: .word Unk_ov66_0225AF50 - arm_func_end chatEnumUsersA - - arm_func_start chatSendUserMessageA -chatSendUserMessageA: ; 0x0225524C - stmfd sp!, {r3, r4, r5, r6, r7, lr} - movs r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bne _02255278 - ldr r0, _022553B4 ; =0x0225AAA0 - ldr r1, _022553B8 ; =0x0225AA94 - ldr r2, _022553BC ; =0x0225AA0C - ldr r3, _022553C0 ; =0x00000889 - bl __msl_assertion_failed -_02255278: - cmp r7, #0 - ldrne r0, [r7] - cmpne r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - cmp r6, #0 - bne _022552A4 - ldr r0, _022553C4 ; =0x0225AF5C - ldr r1, _022553B8 ; =0x0225AA94 - ldr r2, _022553BC ; =0x0225AA0C - ldr r3, _022553C8 ; =0x0000088C - bl __msl_assertion_failed -_022552A4: - ldrsb r0, [r6] - cmp r0, #0 - bne _022552C4 - ldr r0, _022553CC ; =0x0225AF6C - ldr r1, _022553B8 ; =0x0225AA94 - ldr r2, _022553BC ; =0x0225AA0C - ldr r3, _022553C8 ; =0x0000088C - bl __msl_assertion_failed -_022552C4: - mov r0, r6 - bl strlen - cmp r0, #0x80 - blo _022552E8 - ldr r0, _022553D0 ; =0x0225AF7C - ldr r1, _022553B8 ; =0x0225AA94 - ldr r2, _022553BC ; =0x0225AA0C - ldr r3, _022553C8 ; =0x0000088C - bl __msl_assertion_failed -_022552E8: - cmp r4, #4 - bls _02255304 - ldr r0, _022553D4 ; =0x0225ADD8 - ldr r1, _022553B8 ; =0x0225AA94 - ldr r2, _022553BC ; =0x0225AA0C - ldr r3, _022553D8 ; =0x0000088D - bl __msl_assertion_failed -_02255304: - cmp r5, #0 - ldrnesb r0, [r5] - cmpne r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - cmp r4, #0 - bne _02255334 - ldr r1, _022553DC ; =0x0225AE50 - mov r2, r6 - mov r3, r5 - add r0, r7, #0x1c - bl ciSocketSendf - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02255334: - cmp r4, #1 - bne _02255354 - ldr r1, _022553E0 ; =0x0225AE60 - mov r2, r6 - mov r3, r5 - add r0, r7, #0x1c - bl ciSocketSendf - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02255354: - cmp r4, #2 - bne _02255374 - ldr r1, _022553E4 ; =0x0225AE78 - mov r2, r6 - mov r3, r5 - add r0, r7, #0x1c - bl ciSocketSendf - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02255374: - cmp r4, #3 - bne _02255394 - ldr r1, _022553E8 ; =0x0225AE88 - mov r2, r6 - mov r3, r5 - add r0, r7, #0x1c - bl ciSocketSendf - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02255394: - cmp r4, #4 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, _022553EC ; =0x0225AE94 - mov r2, r6 - mov r3, r5 - add r0, r7, #0x1c - bl ciSocketSendf - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_022553B4: .word Unk_ov66_0225AAA0 -_022553B8: .word Unk_ov66_0225AA94 -_022553BC: .word Unk_ov66_0225AA0C -_022553C0: .word 0x00000889 -_022553C4: .word Unk_ov66_0225AF5C -_022553C8: .word 0x0000088C -_022553CC: .word Unk_ov66_0225AF6C -_022553D0: .word Unk_ov66_0225AF7C -_022553D4: .word Unk_ov66_0225ADD8 -_022553D8: .word 0x0000088D -_022553DC: .word Unk_ov66_0225AE50 -_022553E0: .word Unk_ov66_0225AE60 -_022553E4: .word Unk_ov66_0225AE78 -_022553E8: .word Unk_ov66_0225AE88 -_022553EC: .word Unk_ov66_0225AE94 - arm_func_end chatSendUserMessageA - - arm_func_start ciRandomCookie -ciRandomCookie: ; 0x022553F0 - stmfd sp!, {r4, lr} - ldr r3, _02255440 ; =0x0225B6F4 - ldr r0, _02255444 ; =0x0225B6F0 - ldr r2, [r3, #0] - ldr r1, _02255448 ; =0x0225AF9C - add r4, r2, #1 - str r4, [r3, #0] - bl sprintf - ldr ip, _02255440 ; =0x0225B6F4 - ldr r3, _0225544C ; =0x10624DD3 - ldr lr, [ip] - mov r2, #0x3e8 - mov r0, lr, lsr #0x1f - smull r1, r4, r3, lr - add r4, r0, r4, asr #6 - smull r0, r1, r2, r4 - sub r4, lr, r0 - ldr r0, _02255444 ; =0x0225B6F0 - str r4, [ip] - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02255440: .word Unk_ov66_0225B6F4 -_02255444: .word Unk_ov66_0225B6F0 -_02255448: .word Unk_ov66_0225AF9C -_0225544C: .word 0x10624DD3 - arm_func_end ciRandomCookie - - arm_func_start chatSetChannelKeysA -chatSetChannelKeysA: ; 0x02255450 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x200 - movs sl, r0 - mov r5, r1 - mov r4, r2 - mov sb, r3 - ldr r8, [sp, #0x228] - ldr r7, [sp, #0x22c] - bne _02255488 - ldr r0, _0225552C ; =0x0225AAA0 - ldr r1, _02255530 ; =0x0225AA94 - ldr r2, _02255534 ; =0x0225A9B8 - ldr r3, _02255538 ; =0x00000AD7 - bl __msl_assertion_failed -_02255488: - cmp sl, #0 - ldrne r0, [sl] - cmpne r0, #0 - addeq sp, sp, #0x200 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r4, #0 - ldrnesb r0, [r4] - cmpne r0, #0 - add r0, sp, #0 - bne _022554C0 - ldr r1, _0225553C ; =0x0225AFC4 - mov r2, r5 - bl sprintf - b _022554D0 -_022554C0: - ldr r1, _02255540 ; =0x0225AFD4 - mov r2, r5 - mov r3, r4 - bl sprintf -_022554D0: - cmp sb, #0 - mov r6, #0 - ble _02255518 - ldr fp, _02255544 ; =0x0225AB2C - add r4, sp, #0 -_022554E4: - ldr r5, [r7, r6, lsl #2] - mov r0, r4 - cmp r5, #0 - moveq r5, fp - bl strlen - ldr r2, [r8, r6, lsl #2] - ldr r1, _02255548 ; =0x0225AF94 - mov r3, r5 - add r0, r4, r0 - bl sprintf - add r6, r6, #1 - cmp r6, sb - blt _022554E4 -_02255518: - add r1, sp, #0 - add r0, sl, #0x1c - bl ciSocketSend - add sp, sp, #0x200 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0225552C: .word Unk_ov66_0225AAA0 -_02255530: .word Unk_ov66_0225AA94 -_02255534: .word Unk_ov66_0225A9B8 -_02255538: .word 0x00000AD7 -_0225553C: .word Unk_ov66_0225AFC4 -_02255540: .word Unk_ov66_0225AFD4 -_02255544: .word Unk_ov66_0225AB2C -_02255548: .word Unk_ov66_0225AF94 - arm_func_end chatSetChannelKeysA - - arm_func_start ciSendGetChannelKey -ciSendGetChannelKey: ; 0x0225554C - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x210 - str r0, [sp, #4] - cmp r0, #0 - mov r0, #0 - mov r5, r1 - str r2, [sp, #8] - mov r4, r3 - ldr sl, [sp, #0x238] - ldr sb, [sp, #0x23c] - str r0, [sp, #0xc] - bne _02255590 - ldr r0, _022557B0 ; =0x0225AAA0 - ldr r1, _022557B4 ; =0x0225AA94 - ldr r2, _022557B8 ; =0x0225A97C - ldr r3, _022557BC ; =0x00000B19 - bl __msl_assertion_failed -_02255590: - cmp r5, #0 - ldrnesb r0, [r5] - cmpne r0, #0 - bne _022555B4 - ldr r0, _022557C0 ; =0x0225AFE4 - ldr r1, _022557B4 ; =0x0225AA94 - ldr r2, _022557B8 ; =0x0225A97C - ldr r3, _022557C4 ; =0x00000B1B - bl __msl_assertion_failed -_022555B4: - cmp r4, #0 - ldrnesb r0, [r4] - cmpne r0, #0 - bne _022555D8 - ldr r0, _022557C8 ; =0x0225AFA4 - ldr r1, _022557B4 ; =0x0225AA94 - ldr r2, _022557B8 ; =0x0225A97C - ldr r3, _022557CC ; =0x00000B1C - bl __msl_assertion_failed -_022555D8: - cmp sl, #0 - beq _022555FC - cmp sb, #0 - bne _022555FC - ldr r0, _022557D0 ; =0x0225AFFC - ldr r1, _022557B4 ; =0x0225AA94 - ldr r2, _022557B8 ; =0x0225A97C - ldr r3, _022557D4 ; =0x00000B1D - bl __msl_assertion_failed -_022555FC: - ldr r0, [sp, #8] - cmp r0, #0 - ldrnesb r0, [r0] - cmpne r0, #0 - add r0, sp, #0x10 - bne _02255628 - ldr r1, _022557D8 ; =0x0225B00C - mov r2, r5 - mov r3, r4 - bl sprintf - b _0225563C -_02255628: - ldr r1, _022557DC ; =0x0225B024 - ldr r3, [sp, #8] - mov r2, r5 - str r4, [sp] - bl sprintf -_0225563C: - add r0, sp, #0x10 - bl strlen - mov r7, r0 - cmp sl, #0 - mov r5, #0 - ble _0225570C - mov r4, #0x2f - add fp, sp, #0x10 -_0225565C: - ldr r6, [sb, r5, lsl #2] - cmp r6, #0 - ldrnesb r0, [r6] - cmpne r0, #0 - beq _02255700 - ldr r1, _022557E0 ; =0x0225B03C - mov r0, r6 - bl strcmp - cmp r0, #0 - moveq r0, #1 - streq r0, [sp, #0xc] - beq _02255700 - mov r0, r6 - bl strlen - mov r6, r0 - add r0, r7, r6 - add r0, r0, #1 - cmp r0, #0x200 - bge _02255700 - mov r0, #0x5c - strb r0, [fp, r7] - add r7, r7, #1 - add r8, fp, r7 - ldr r1, [sb, r5, lsl #2] - mov r0, r8 - mov r2, r6 - bl memcpy - add r2, r7, r6 - mov r1, r7 - cmp r7, r2 - bge _022556F4 -_022556D8: - ldrsb r0, [r8] - add r1, r1, #1 - cmp r0, #0x5c - streqb r4, [r8] - add r8, r8, #1 - cmp r1, r2 - blt _022556D8 -_022556F4: - add r7, r7, r6 - mov r0, #0 - strb r0, [fp, r7] -_02255700: - add r5, r5, #1 - cmp r5, sl - blt _0225565C -_0225570C: - ldr r0, [sp, #0xc] - cmp r0, #0 - beq _0225575C - add r5, r7, #4 - cmp r5, #0x200 - bge _0225575C - ldr r3, _022557E4 ; =0x0225B040 - add r4, sp, #0x10 - ldrb r2, [r3] - ldrb r1, [r3, #1] - ldrb r0, [r3, #2] - strb r2, [r4, r7] - add r2, r4, r7 - strb r1, [r2, #1] - strb r0, [r2, #2] - ldrb r1, [r3, #3] - ldrb r0, [r3, #4] - mov r7, r5 - strb r1, [r2, #3] - strb r0, [r2, #4] -_0225575C: - cmp sl, #0 - bne _02255794 - ldr r0, [sp, #8] - cmp r0, #0 - ldrnesb r0, [r0] - cmpne r0, #0 - bne _02255794 - ldr r0, _022557E8 ; =0x0225AAC0 - add r2, sp, #0x10 - ldrb r1, [r0] - ldrb r0, [r0, #1] - add r3, r2, r7 - strb r1, [r2, r7] - strb r0, [r3, #1] -_02255794: - ldr r0, [sp, #4] - add r1, sp, #0x10 - add r0, r0, #0x1c - bl ciSocketSend - ldr r0, [sp, #0xc] - add sp, sp, #0x210 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_022557B0: .word Unk_ov66_0225AAA0 -_022557B4: .word Unk_ov66_0225AA94 -_022557B8: .word Unk_ov66_0225A97C -_022557BC: .word 0x00000B19 -_022557C0: .word Unk_ov66_0225AFE4 -_022557C4: .word 0x00000B1B -_022557C8: .word Unk_ov66_0225AFA4 -_022557CC: .word 0x00000B1C -_022557D0: .word Unk_ov66_0225AFFC -_022557D4: .word 0x00000B1D -_022557D8: .word Unk_ov66_0225B00C -_022557DC: .word Unk_ov66_0225B024 -_022557E0: .word Unk_ov66_0225B03C -_022557E4: .word Unk_ov66_0225B040 -_022557E8: .word Unk_ov66_0225AAC0 - arm_func_end ciSendGetChannelKey - - arm_func_start chatGetChannelKeysA -chatGetChannelKeysA: ; 0x022557EC - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x10 - movs sb, r0 - mov r5, r1 - mov r8, r2 - mov r7, r3 - ldr r6, [sp, #0x30] - bne _02255820 - ldr r0, _02255964 ; =0x0225AAA0 - ldr r1, _02255968 ; =0x0225AA94 - ldr r2, _0225596C ; =0x0225A9A4 - ldr r3, _02255970 ; =0x00000B6F - bl __msl_assertion_failed -_02255820: - cmp sb, #0 - ldrne r0, [sb] - cmpne r0, #0 - addeq sp, sp, #0x10 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - cmp r7, #0 - bge _02255850 - ldr r0, _02255974 ; =0x0225AFB8 - ldr r1, _02255968 ; =0x0225AA94 - ldr r2, _0225596C ; =0x0225A9A4 - ldr r3, _02255978 ; =0x00000B72 - bl __msl_assertion_failed -_02255850: - cmp r7, #0 - beq _02255874 - cmp r6, #0 - bne _02255874 - ldr r0, _0225597C ; =0x0225AFFC - ldr r1, _02255968 ; =0x0225AA94 - ldr r2, _0225596C ; =0x0225A9A4 - ldr r3, _02255980 ; =0x00000B73 - bl __msl_assertion_failed -_02255874: - bl ciRandomCookie - mov r4, r0 - str r7, [sp] - mov r0, sb - mov r1, r5 - mov r2, r8 - mov r3, r4 - str r6, [sp, #4] - bl ciSendGetChannelKey - mov r5, r0 - cmp r8, #0 - ldrnesb r0, [r8] - cmpne r0, #0 - bne _022558D8 - ldr r0, [sp, #0x34] - str r5, [sp] - str r0, [sp, #4] - ldr r5, [sp, #0x38] - mov r0, sb - mov r1, r4 - mov r2, r7 - mov r3, r6 - str r5, [sp, #8] - bl ciAddGETCHANKEYFilter - b _0225591C -_022558D8: - ldr r1, _02255984 ; =0x0225AAC0 - mov r0, r8 - bl strcmp - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - str r0, [sp] - str r5, [sp, #4] - ldr r0, [sp, #0x34] - ldr r5, [sp, #0x38] - str r0, [sp, #8] - mov r0, sb - mov r1, r4 - mov r2, r7 - mov r3, r6 - str r5, [sp, #0xc] - bl ciAddGETCKEYFilter -_0225591C: - mov r5, r0 - ldr r0, [sp, #0x3c] - cmp r0, #0 - addeq sp, sp, #0x10 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r4, #0xa -_02255934: - mov r0, sb - mov r1, r5 - bl ciThink - mov r0, r4 - bl msleep - mov r0, sb - mov r1, r5 - bl ciCheckForID - cmp r0, #0 - bne _02255934 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ; .align 2, 0 -_02255964: .word Unk_ov66_0225AAA0 -_02255968: .word Unk_ov66_0225AA94 -_0225596C: .word Unk_ov66_0225A9A4 -_02255970: .word 0x00000B6F -_02255974: .word Unk_ov66_0225AFB8 -_02255978: .word 0x00000B72 -_0225597C: .word Unk_ov66_0225AFFC -_02255980: .word 0x00000B73 -_02255984: .word Unk_ov66_0225AAC0 - arm_func_end chatGetChannelKeysA - - arm_func_start ciNickIsValid -ciNickIsValid: ; 0x02255988 - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - bl strlen - cmp r0, #0x15 - movhs r0, #6 - ldmhsia sp!, {r3, r4, r5, pc} - cmp r5, #0 - ldrnesb r0, [r5] - cmpne r0, #0 - moveq r0, #2 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r0, #0x40 - cmpne r0, #0x23 - cmpne r0, #0x2b - cmpne r0, #0x3a - moveq r0, #2 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r0, #0 - beq _022559FC - ldr r4, _02255A04 ; =0x0225AD04 -_022559D8: - ldrsb r1, [r5], #1 - mov r0, r4 - bl strchr - cmp r0, #0 - moveq r0, #2 - ldmeqia sp!, {r3, r4, r5, pc} - ldrsb r0, [r5] - cmp r0, #0 - bne _022559D8 -_022559FC: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02255A04: .word Unk_ov66_0225AD04 - arm_func_end ciNickIsValid - - arm_func_start ciNickError -ciNickError: ; 0x02255A08 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x20 - movs r4, r0 - mov r7, r1 - mov r6, r2 - mov r5, r3 - bne _02255A38 - ldr r0, _02255ACC ; =0x0225AAA0 - ldr r1, _02255AD0 ; =0x0225AA94 - ldr r2, _02255AD4 ; =0x0225A8C0 - ldr r3, _02255AD8 ; =0x00000BC9 - bl __msl_assertion_failed -_02255A38: - ldr r0, [r4, #0xc] - cmp r0, #0 - beq _02255A9C - add r3, sp, #0x10 - mov r2, #0 - str r2, [r3, #0] - str r2, [r3, #4] - str r2, [r3, #8] - ldr r0, [sp, #0x38] - str r2, [r3, #0xc] - str r0, [sp, #0x1c] - str r7, [sp, #0x10] - str r6, [sp, #0x14] - str r5, [sp, #0x18] - ldr r1, [r4, #0x18] - mov r0, #0x10 - stmia sp, {r1, r2} - str r2, [sp, #8] - str r0, [sp, #0xc] - ldr r2, [r4, #0xc] - mov r0, r4 - mov r1, #0x19 - bl ciAddCallback_ - add sp, sp, #0x20 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02255A9C: - mov r1, #0 - str r1, [r4, #4] - ldr ip, [r4, #0x14] - cmp ip, #0 - addeq sp, sp, #0x20 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r3, [r4, #0x18] - mov r0, r4 - mov r2, #1 - blx ip - add sp, sp, #0x20 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02255ACC: .word Unk_ov66_0225AAA0 -_02255AD0: .word Unk_ov66_0225AA94 -_02255AD4: .word Unk_ov66_0225A8C0 -_02255AD8: .word 0x00000BC9 - arm_func_end ciNickError - .data - - - .global ciVersionID -ciVersionID: ; 0x0225A89C - .incbin "incbin/overlay66_data.bin", 0x1B7C, 0x1B80 - 0x1B7C - - .global Unk_ov66_0225A8A0 -Unk_ov66_0225A8A0: ; 0x0225A8A0 - .incbin "incbin/overlay66_data.bin", 0x1B80, 0x1B88 - 0x1B80 - - .global Unk_ov66_0225A8A8 -Unk_ov66_0225A8A8: ; 0x0225A8A8 - .incbin "incbin/overlay66_data.bin", 0x1B88, 0x1B94 - 0x1B88 - - .global Unk_ov66_0225A8B4 -Unk_ov66_0225A8B4: ; 0x0225A8B4 - .incbin "incbin/overlay66_data.bin", 0x1B94, 0x1BA0 - 0x1B94 - - .global Unk_ov66_0225A8C0 -Unk_ov66_0225A8C0: ; 0x0225A8C0 - .incbin "incbin/overlay66_data.bin", 0x1BA0, 0x1BAC - 0x1BA0 - - .global Unk_ov66_0225A8CC -Unk_ov66_0225A8CC: ; 0x0225A8CC - .incbin "incbin/overlay66_data.bin", 0x1BAC, 0x1BB8 - 0x1BAC - - .global Unk_ov66_0225A8D8 -Unk_ov66_0225A8D8: ; 0x0225A8D8 - .incbin "incbin/overlay66_data.bin", 0x1BB8, 0x1BC8 - 0x1BB8 - - .global Unk_ov66_0225A8E8 -Unk_ov66_0225A8E8: ; 0x0225A8E8 - .incbin "incbin/overlay66_data.bin", 0x1BC8, 0x1BD8 - 0x1BC8 - - .global Unk_ov66_0225A8F8 -Unk_ov66_0225A8F8: ; 0x0225A8F8 - .incbin "incbin/overlay66_data.bin", 0x1BD8, 0x1BE8 - 0x1BD8 - - .global Unk_ov66_0225A908 -Unk_ov66_0225A908: ; 0x0225A908 - .incbin "incbin/overlay66_data.bin", 0x1BE8, 0x1BF8 - 0x1BE8 - - .global Unk_ov66_0225A918 -Unk_ov66_0225A918: ; 0x0225A918 - .incbin "incbin/overlay66_data.bin", 0x1BF8, 0x1C0C - 0x1BF8 - - .global Unk_ov66_0225A92C -Unk_ov66_0225A92C: ; 0x0225A92C - .incbin "incbin/overlay66_data.bin", 0x1C0C, 0x1C20 - 0x1C0C - - .global Unk_ov66_0225A940 -Unk_ov66_0225A940: ; 0x0225A940 - .incbin "incbin/overlay66_data.bin", 0x1C20, 0x1C34 - 0x1C20 - - .global Unk_ov66_0225A954 -Unk_ov66_0225A954: ; 0x0225A954 - .incbin "incbin/overlay66_data.bin", 0x1C34, 0x1C48 - 0x1C34 - - .global Unk_ov66_0225A968 -Unk_ov66_0225A968: ; 0x0225A968 - .incbin "incbin/overlay66_data.bin", 0x1C48, 0x1C5C - 0x1C48 - - .global Unk_ov66_0225A97C -Unk_ov66_0225A97C: ; 0x0225A97C - .incbin "incbin/overlay66_data.bin", 0x1C5C, 0x1C70 - 0x1C5C - - .global Unk_ov66_0225A990 -Unk_ov66_0225A990: ; 0x0225A990 - .incbin "incbin/overlay66_data.bin", 0x1C70, 0x1C84 - 0x1C70 - - .global Unk_ov66_0225A9A4 -Unk_ov66_0225A9A4: ; 0x0225A9A4 - .incbin "incbin/overlay66_data.bin", 0x1C84, 0x1C98 - 0x1C84 - - .global Unk_ov66_0225A9B8 -Unk_ov66_0225A9B8: ; 0x0225A9B8 - .incbin "incbin/overlay66_data.bin", 0x1C98, 0x1CAC - 0x1C98 - - .global Unk_ov66_0225A9CC -Unk_ov66_0225A9CC: ; 0x0225A9CC - .incbin "incbin/overlay66_data.bin", 0x1CAC, 0x1CC0 - 0x1CAC - - .global Unk_ov66_0225A9E0 -Unk_ov66_0225A9E0: ; 0x0225A9E0 - .incbin "incbin/overlay66_data.bin", 0x1CC0, 0x1CD4 - 0x1CC0 - - .global Unk_ov66_0225A9F4 -Unk_ov66_0225A9F4: ; 0x0225A9F4 - .incbin "incbin/overlay66_data.bin", 0x1CD4, 0x1CEC - 0x1CD4 - - .global Unk_ov66_0225AA0C -Unk_ov66_0225AA0C: ; 0x0225AA0C - .incbin "incbin/overlay66_data.bin", 0x1CEC, 0x1D04 - 0x1CEC - - .global Unk_ov66_0225AA24 -Unk_ov66_0225AA24: ; 0x0225AA24 - .incbin "incbin/overlay66_data.bin", 0x1D04, 0x1D1C - 0x1D04 - - .global Unk_ov66_0225AA3C -Unk_ov66_0225AA3C: ; 0x0225AA3C - .incbin "incbin/overlay66_data.bin", 0x1D1C, 0x1D34 - 0x1D1C - - .global Unk_ov66_0225AA54 -Unk_ov66_0225AA54: ; 0x0225AA54 - .incbin "incbin/overlay66_data.bin", 0x1D34, 0x1D4C - 0x1D34 - - .global Unk_ov66_0225AA6C -Unk_ov66_0225AA6C: ; 0x0225AA6C - .incbin "incbin/overlay66_data.bin", 0x1D4C, 0x1D64 - 0x1D4C - - .global Unk_ov66_0225AA84 -Unk_ov66_0225AA84: ; 0x0225AA84 - .incbin "incbin/overlay66_data.bin", 0x1D64, 0x1D74 - 0x1D64 - - .global Unk_ov66_0225AA94 -Unk_ov66_0225AA94: ; 0x0225AA94 - .incbin "incbin/overlay66_data.bin", 0x1D74, 0x1D80 - 0x1D74 - - .global Unk_ov66_0225AAA0 -Unk_ov66_0225AAA0: ; 0x0225AAA0 - .incbin "incbin/overlay66_data.bin", 0x1D80, 0x1D90 - 0x1D80 - - .global Unk_ov66_0225AAB0 -Unk_ov66_0225AAB0: ; 0x0225AAB0 - .incbin "incbin/overlay66_data.bin", 0x1D90, 0x1DA0 - 0x1D90 - - .global Unk_ov66_0225AAC0 -Unk_ov66_0225AAC0: ; 0x0225AAC0 - .incbin "incbin/overlay66_data.bin", 0x1DA0, 0x1DA4 - 0x1DA0 - - .global Unk_ov66_0225AAC4 -Unk_ov66_0225AAC4: ; 0x0225AAC4 - .incbin "incbin/overlay66_data.bin", 0x1DA4, 0x1DAC - 0x1DA4 - - .global Unk_ov66_0225AACC -Unk_ov66_0225AACC: ; 0x0225AACC - .incbin "incbin/overlay66_data.bin", 0x1DAC, 0x1DC0 - 0x1DAC - - .global Unk_ov66_0225AAE0 -Unk_ov66_0225AAE0: ; 0x0225AAE0 - .incbin "incbin/overlay66_data.bin", 0x1DC0, 0x1DCC - 0x1DC0 - - .global Unk_ov66_0225AAEC -Unk_ov66_0225AAEC: ; 0x0225AAEC - .incbin "incbin/overlay66_data.bin", 0x1DCC, 0x1DE0 - 0x1DCC - - .global Unk_ov66_0225AB00 -Unk_ov66_0225AB00: ; 0x0225AB00 - .incbin "incbin/overlay66_data.bin", 0x1DE0, 0x1DF0 - 0x1DE0 - - .global Unk_ov66_0225AB10 -Unk_ov66_0225AB10: ; 0x0225AB10 - .incbin "incbin/overlay66_data.bin", 0x1DF0, 0x1E08 - 0x1DF0 - - .global Unk_ov66_0225AB28 -Unk_ov66_0225AB28: ; 0x0225AB28 - .incbin "incbin/overlay66_data.bin", 0x1E08, 0x1E0C - 0x1E08 - - .global Unk_ov66_0225AB2C -Unk_ov66_0225AB2C: ; 0x0225AB2C - .incbin "incbin/overlay66_data.bin", 0x1E0C, 0x1E10 - 0x1E0C - - .global Unk_ov66_0225AB30 -Unk_ov66_0225AB30: ; 0x0225AB30 - .incbin "incbin/overlay66_data.bin", 0x1E10, 0x1E28 - 0x1E10 - - .global Unk_ov66_0225AB48 -Unk_ov66_0225AB48: ; 0x0225AB48 - .incbin "incbin/overlay66_data.bin", 0x1E28, 0x1E3C - 0x1E28 - - .global Unk_ov66_0225AB5C -Unk_ov66_0225AB5C: ; 0x0225AB5C - .incbin "incbin/overlay66_data.bin", 0x1E3C, 0x1E54 - 0x1E3C - - .global Unk_ov66_0225AB74 -Unk_ov66_0225AB74: ; 0x0225AB74 - .incbin "incbin/overlay66_data.bin", 0x1E54, 0x1E64 - 0x1E54 - - .global Unk_ov66_0225AB84 -Unk_ov66_0225AB84: ; 0x0225AB84 - .incbin "incbin/overlay66_data.bin", 0x1E64, 0x1E74 - 0x1E64 - - .global Unk_ov66_0225AB94 -Unk_ov66_0225AB94: ; 0x0225AB94 - .incbin "incbin/overlay66_data.bin", 0x1E74, 0x1E8C - 0x1E74 - - .global Unk_ov66_0225ABAC -Unk_ov66_0225ABAC: ; 0x0225ABAC - .incbin "incbin/overlay66_data.bin", 0x1E8C, 0x1E9C - 0x1E8C - - .global Unk_ov66_0225ABBC -Unk_ov66_0225ABBC: ; 0x0225ABBC - .incbin "incbin/overlay66_data.bin", 0x1E9C, 0x1EB8 - 0x1E9C - - .global Unk_ov66_0225ABD8 -Unk_ov66_0225ABD8: ; 0x0225ABD8 - .incbin "incbin/overlay66_data.bin", 0x1EB8, 0x1ED0 - 0x1EB8 - - .global Unk_ov66_0225ABF0 -Unk_ov66_0225ABF0: ; 0x0225ABF0 - .incbin "incbin/overlay66_data.bin", 0x1ED0, 0x1EE4 - 0x1ED0 - - .global Unk_ov66_0225AC04 -Unk_ov66_0225AC04: ; 0x0225AC04 - .incbin "incbin/overlay66_data.bin", 0x1EE4, 0x1EF8 - 0x1EE4 - - .global Unk_ov66_0225AC18 -Unk_ov66_0225AC18: ; 0x0225AC18 - .incbin "incbin/overlay66_data.bin", 0x1EF8, 0x1F18 - 0x1EF8 - - .global Unk_ov66_0225AC38 -Unk_ov66_0225AC38: ; 0x0225AC38 - .incbin "incbin/overlay66_data.bin", 0x1F18, 0x1F34 - 0x1F18 - - .global Unk_ov66_0225AC54 -Unk_ov66_0225AC54: ; 0x0225AC54 - .incbin "incbin/overlay66_data.bin", 0x1F34, 0x1F5C - 0x1F34 - - .global Unk_ov66_0225AC7C -Unk_ov66_0225AC7C: ; 0x0225AC7C - .incbin "incbin/overlay66_data.bin", 0x1F5C, 0x1F64 - 0x1F5C - - .global Unk_ov66_0225AC84 -Unk_ov66_0225AC84: ; 0x0225AC84 - .incbin "incbin/overlay66_data.bin", 0x1F64, 0x1F7C - 0x1F64 - - .global Unk_ov66_0225AC9C -Unk_ov66_0225AC9C: ; 0x0225AC9C - .incbin "incbin/overlay66_data.bin", 0x1F7C, 0x1F98 - 0x1F7C - - .global Unk_ov66_0225ACB8 -Unk_ov66_0225ACB8: ; 0x0225ACB8 - .incbin "incbin/overlay66_data.bin", 0x1F98, 0x1FA8 - 0x1F98 - - .global Unk_ov66_0225ACC8 -Unk_ov66_0225ACC8: ; 0x0225ACC8 - .incbin "incbin/overlay66_data.bin", 0x1FA8, 0x1FB0 - 0x1FA8 - - .global Unk_ov66_0225ACD0 -Unk_ov66_0225ACD0: ; 0x0225ACD0 - .incbin "incbin/overlay66_data.bin", 0x1FB0, 0x1FBC - 0x1FB0 - - .global Unk_ov66_0225ACDC -Unk_ov66_0225ACDC: ; 0x0225ACDC - .incbin "incbin/overlay66_data.bin", 0x1FBC, 0x1FD4 - 0x1FBC - - .global Unk_ov66_0225ACF4 -Unk_ov66_0225ACF4: ; 0x0225ACF4 - .incbin "incbin/overlay66_data.bin", 0x1FD4, 0x1FE4 - 0x1FD4 - - .global Unk_ov66_0225AD04 -Unk_ov66_0225AD04: ; 0x0225AD04 - .incbin "incbin/overlay66_data.bin", 0x1FE4, 0x2044 - 0x1FE4 - - .global Unk_ov66_0225AD64 -Unk_ov66_0225AD64: ; 0x0225AD64 - .incbin "incbin/overlay66_data.bin", 0x2044, 0x2074 - 0x2044 - - .global Unk_ov66_0225AD94 -Unk_ov66_0225AD94: ; 0x0225AD94 - .incbin "incbin/overlay66_data.bin", 0x2074, 0x207C - 0x2074 - - .global Unk_ov66_0225AD9C -Unk_ov66_0225AD9C: ; 0x0225AD9C - .incbin "incbin/overlay66_data.bin", 0x207C, 0x208C - 0x207C - - .global Unk_ov66_0225ADAC -Unk_ov66_0225ADAC: ; 0x0225ADAC - .incbin "incbin/overlay66_data.bin", 0x208C, 0x20A0 - 0x208C - - .global Unk_ov66_0225ADC0 -Unk_ov66_0225ADC0: ; 0x0225ADC0 - .incbin "incbin/overlay66_data.bin", 0x20A0, 0x20AC - 0x20A0 - - .global Unk_ov66_0225ADCC -Unk_ov66_0225ADCC: ; 0x0225ADCC - .incbin "incbin/overlay66_data.bin", 0x20AC, 0x20B8 - 0x20AC - - .global Unk_ov66_0225ADD8 -Unk_ov66_0225ADD8: ; 0x0225ADD8 - .incbin "incbin/overlay66_data.bin", 0x20B8, 0x2130 - 0x20B8 - - .global Unk_ov66_0225AE50 -Unk_ov66_0225AE50: ; 0x0225AE50 - .incbin "incbin/overlay66_data.bin", 0x2130, 0x2140 - 0x2130 - - .global Unk_ov66_0225AE60 -Unk_ov66_0225AE60: ; 0x0225AE60 - .incbin "incbin/overlay66_data.bin", 0x2140, 0x2158 - 0x2140 - - .global Unk_ov66_0225AE78 -Unk_ov66_0225AE78: ; 0x0225AE78 - .incbin "incbin/overlay66_data.bin", 0x2158, 0x2168 - 0x2158 - - .global Unk_ov66_0225AE88 -Unk_ov66_0225AE88: ; 0x0225AE88 - .incbin "incbin/overlay66_data.bin", 0x2168, 0x2174 - 0x2168 - - .global Unk_ov66_0225AE94 -Unk_ov66_0225AE94: ; 0x0225AE94 - .incbin "incbin/overlay66_data.bin", 0x2174, 0x2180 - 0x2174 - - .global Unk_ov66_0225AEA0 -Unk_ov66_0225AEA0: ; 0x0225AEA0 - .incbin "incbin/overlay66_data.bin", 0x2180, 0x2194 - 0x2180 - - .global Unk_ov66_0225AEB4 -Unk_ov66_0225AEB4: ; 0x0225AEB4 - .incbin "incbin/overlay66_data.bin", 0x2194, 0x21A4 - 0x2194 - - .global Unk_ov66_0225AEC4 -Unk_ov66_0225AEC4: ; 0x0225AEC4 - .incbin "incbin/overlay66_data.bin", 0x21A4, 0x21B8 - 0x21A4 - - .global Unk_ov66_0225AED8 -Unk_ov66_0225AED8: ; 0x0225AED8 - .incbin "incbin/overlay66_data.bin", 0x21B8, 0x21BC - 0x21B8 - - .global Unk_ov66_0225AEDC -Unk_ov66_0225AEDC: ; 0x0225AEDC - .incbin "incbin/overlay66_data.bin", 0x21BC, 0x21C8 - 0x21BC - - .global Unk_ov66_0225AEE8 -Unk_ov66_0225AEE8: ; 0x0225AEE8 - .incbin "incbin/overlay66_data.bin", 0x21C8, 0x21D0 - 0x21C8 - - .global Unk_ov66_0225AEF0 -Unk_ov66_0225AEF0: ; 0x0225AEF0 - .incbin "incbin/overlay66_data.bin", 0x21D0, 0x21DC - 0x21D0 - - .global Unk_ov66_0225AEFC -Unk_ov66_0225AEFC: ; 0x0225AEFC - .incbin "incbin/overlay66_data.bin", 0x21DC, 0x21EC - 0x21DC - - .global Unk_ov66_0225AF0C -Unk_ov66_0225AF0C: ; 0x0225AF0C - .incbin "incbin/overlay66_data.bin", 0x21EC, 0x21F8 - 0x21EC - - .global Unk_ov66_0225AF18 -Unk_ov66_0225AF18: ; 0x0225AF18 - .incbin "incbin/overlay66_data.bin", 0x21F8, 0x2208 - 0x21F8 - - .global Unk_ov66_0225AF28 -Unk_ov66_0225AF28: ; 0x0225AF28 - .incbin "incbin/overlay66_data.bin", 0x2208, 0x2218 - 0x2208 - - .global Unk_ov66_0225AF38 -Unk_ov66_0225AF38: ; 0x0225AF38 - .incbin "incbin/overlay66_data.bin", 0x2218, 0x2230 - 0x2218 - - .global Unk_ov66_0225AF50 -Unk_ov66_0225AF50: ; 0x0225AF50 - .incbin "incbin/overlay66_data.bin", 0x2230, 0x223C - 0x2230 - - .global Unk_ov66_0225AF5C -Unk_ov66_0225AF5C: ; 0x0225AF5C - .incbin "incbin/overlay66_data.bin", 0x223C, 0x224C - 0x223C - - .global Unk_ov66_0225AF6C -Unk_ov66_0225AF6C: ; 0x0225AF6C - .incbin "incbin/overlay66_data.bin", 0x224C, 0x225C - 0x224C - - .global Unk_ov66_0225AF7C -Unk_ov66_0225AF7C: ; 0x0225AF7C - .incbin "incbin/overlay66_data.bin", 0x225C, 0x2274 - 0x225C - - .global Unk_ov66_0225AF94 -Unk_ov66_0225AF94: ; 0x0225AF94 - .incbin "incbin/overlay66_data.bin", 0x2274, 0x227C - 0x2274 - - .global Unk_ov66_0225AF9C -Unk_ov66_0225AF9C: ; 0x0225AF9C - .incbin "incbin/overlay66_data.bin", 0x227C, 0x2284 - 0x227C - - .global Unk_ov66_0225AFA4 -Unk_ov66_0225AFA4: ; 0x0225AFA4 - .incbin "incbin/overlay66_data.bin", 0x2284, 0x2298 - 0x2284 - - .global Unk_ov66_0225AFB8 -Unk_ov66_0225AFB8: ; 0x0225AFB8 - .incbin "incbin/overlay66_data.bin", 0x2298, 0x22A4 - 0x2298 - - .global Unk_ov66_0225AFC4 -Unk_ov66_0225AFC4: ; 0x0225AFC4 - .incbin "incbin/overlay66_data.bin", 0x22A4, 0x22B4 - 0x22A4 - - .global Unk_ov66_0225AFD4 -Unk_ov66_0225AFD4: ; 0x0225AFD4 - .incbin "incbin/overlay66_data.bin", 0x22B4, 0x22C4 - 0x22B4 - - .global Unk_ov66_0225AFE4 -Unk_ov66_0225AFE4: ; 0x0225AFE4 - .incbin "incbin/overlay66_data.bin", 0x22C4, 0x22DC - 0x22C4 - - .global Unk_ov66_0225AFFC -Unk_ov66_0225AFFC: ; 0x0225AFFC - .incbin "incbin/overlay66_data.bin", 0x22DC, 0x22EC - 0x22DC - - .global Unk_ov66_0225B00C -Unk_ov66_0225B00C: ; 0x0225B00C - .incbin "incbin/overlay66_data.bin", 0x22EC, 0x2304 - 0x22EC - - .global Unk_ov66_0225B024 -Unk_ov66_0225B024: ; 0x0225B024 - .incbin "incbin/overlay66_data.bin", 0x2304, 0x231C - 0x2304 - - .global Unk_ov66_0225B03C -Unk_ov66_0225B03C: ; 0x0225B03C - .incbin "incbin/overlay66_data.bin", 0x231C, 0x2320 - 0x231C - - .global Unk_ov66_0225B040 -Unk_ov66_0225B040: ; 0x0225B040 - .incbin "incbin/overlay66_data.bin", 0x2320, 0x5 - - - .bss - - - .global Unk_ov66_0225B6F0 -Unk_ov66_0225B6F0: ; 0x0225B6F0 - .space 0x4 - - .global Unk_ov66_0225B6F4 -Unk_ov66_0225B6F4: ; 0x0225B6F4 - .space 0x4 - diff --git a/subprojects/gamespy/libraries/chat/asm/chatsocket.s b/subprojects/gamespy/libraries/chat/asm/chatsocket.s deleted file mode 100644 index 3b53fb6e00..0000000000 --- a/subprojects/gamespy/libraries/chat/asm/chatsocket.s +++ /dev/null @@ -1,2656 +0,0 @@ - .include "macros/function.inc" - .include "include/chatsocket.inc" - - - - .text - - - arm_func_start ciBufferInit -ciBufferInit: ; 0x02255ADC - stmfd sp!, {r4, lr} - movs r4, r0 - bne _02255AFC - ldr r0, _02255B30 ; =0x0225B148 - ldr r1, _02255B34 ; =0x0225B158 - ldr r2, _02255B38 ; =0x0225B074 - mov r3, #0x5f - bl __msl_assertion_failed -_02255AFC: - mov r0, #0 - mov r1, #0x2000 - str r0, [r4, #4] - add r0, r1, #1 - str r1, [r4, #8] - bl DWCi_GsMalloc - cmp r0, #0 - str r0, [r4, #0] - moveq r0, #0 - movne r1, #0 - strneb r1, [r0] - movne r0, #1 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02255B30: .word Unk_ov66_0225B148 -_02255B34: .word Unk_ov66_0225B158 -_02255B38: .word Unk_ov66_0225B074 - arm_func_end ciBufferInit - - arm_func_start ciBufferFree -ciBufferFree: ; 0x02255B3C - ldr ip, _02255B48 ; =DWCi_GsFree - ldr r0, [r0, #0] - bx ip - ; .align 2, 0 -_02255B48: .word DWCi_GsFree - arm_func_end ciBufferFree - - arm_func_start ciBufferPreAppend -ciBufferPreAppend: ; 0x02255B4C - stmfd sp!, {r3, r4, r5, lr} - movs r5, r0 - mov r4, r1 - bne _02255B70 - ldr r0, _02255C88 ; =0x0225B168 - ldr r1, _02255C8C ; =0x0225B158 - ldr r2, _02255C90 ; =0x0225B0E4 - mov r3, #0x78 - bl __msl_assertion_failed -_02255B70: - ldr r0, [r5, #8] - cmp r0, #0 - bge _02255B90 - ldr r0, _02255C94 ; =0x0225B17C - ldr r1, _02255C8C ; =0x0225B158 - ldr r2, _02255C90 ; =0x0225B0E4 - mov r3, #0x78 - bl __msl_assertion_failed -_02255B90: - ldr r0, [r5, #8] - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #19 - adds r0, r1, r0, ror #19 - beq _02255BB8 - ldr r0, _02255C98 ; =0x0225B190 - ldr r1, _02255C8C ; =0x0225B158 - ldr r2, _02255C90 ; =0x0225B0E4 - mov r3, #0x78 - bl __msl_assertion_failed -_02255BB8: - ldr r0, [r5, #4] - cmp r0, #0 - bge _02255BD8 - ldr r0, _02255C9C ; =0x0225B1B4 - ldr r1, _02255C8C ; =0x0225B158 - ldr r2, _02255C90 ; =0x0225B0E4 - mov r3, #0x78 - bl __msl_assertion_failed -_02255BD8: - ldr r1, [r5, #4] - ldr r0, [r5, #8] - cmp r1, r0 - ble _02255BFC - ldr r0, _02255CA0 ; =0x0225B1CC - ldr r1, _02255C8C ; =0x0225B158 - ldr r2, _02255C90 ; =0x0225B0E4 - mov r3, #0x78 - bl __msl_assertion_failed -_02255BFC: - cmp r4, #0 - bge _02255C18 - ldr r0, _02255CA4 ; =0x0225B1F0 - ldr r1, _02255C8C ; =0x0225B158 - ldr r2, _02255C90 ; =0x0225B0E4 - mov r3, #0x79 - bl __msl_assertion_failed -_02255C18: - ldr r0, _02255CA8 ; =0x00007FFF - cmp r4, r0 - ble _02255C38 - ldr r0, _02255CAC ; =0x0225B1FC - ldr r1, _02255C8C ; =0x0225B158 - ldr r2, _02255C90 ; =0x0225B0E4 - mov r3, #0x7a - bl __msl_assertion_failed -_02255C38: - ldr r1, [r5, #4] - ldr r0, [r5, #8] - add r1, r1, r4 - cmp r1, r0 - movle r0, #1 - ldmleia sp!, {r3, r4, r5, pc} - add r2, r1, #0x2000 - mov r1, r2, lsr #0x1f - rsb r0, r1, r2, lsl #19 - add r0, r1, r0, ror #19 - sub r4, r2, r0 - ldr r0, [r5, #0] - add r1, r4, #1 - bl DWCi_GsRealloc - cmp r0, #0 - moveq r0, #0 - strne r0, [r5] - strne r4, [r5, #8] - movne r0, #1 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02255C88: .word Unk_ov66_0225B168 -_02255C8C: .word Unk_ov66_0225B158 -_02255C90: .word Unk_ov66_0225B0E4 -_02255C94: .word Unk_ov66_0225B17C -_02255C98: .word Unk_ov66_0225B190 -_02255C9C: .word Unk_ov66_0225B1B4 -_02255CA0: .word Unk_ov66_0225B1CC -_02255CA4: .word Unk_ov66_0225B1F0 -_02255CA8: .word 0x00007FFF -_02255CAC: .word Unk_ov66_0225B1FC - arm_func_end ciBufferPreAppend - - arm_func_start ciBufferClipFront -ciBufferClipFront: ; 0x02255CB0 - stmfd sp!, {r3, r4, r5, lr} - movs r5, r0 - mov r4, r1 - bne _02255CD4 - ldr r0, _02255DC8 ; =0x0225B168 - ldr r1, _02255DCC ; =0x0225B158 - ldr r2, _02255DD0 ; =0x0225B0F8 - mov r3, #0x97 - bl __msl_assertion_failed -_02255CD4: - ldr r0, [r5, #8] - cmp r0, #0 - bge _02255CF4 - ldr r0, _02255DD4 ; =0x0225B17C - ldr r1, _02255DCC ; =0x0225B158 - ldr r2, _02255DD0 ; =0x0225B0F8 - mov r3, #0x97 - bl __msl_assertion_failed -_02255CF4: - ldr r0, [r5, #8] - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #19 - adds r0, r1, r0, ror #19 - beq _02255D1C - ldr r0, _02255DD8 ; =0x0225B190 - ldr r1, _02255DCC ; =0x0225B158 - ldr r2, _02255DD0 ; =0x0225B0F8 - mov r3, #0x97 - bl __msl_assertion_failed -_02255D1C: - ldr r0, [r5, #4] - cmp r0, #0 - bge _02255D3C - ldr r0, _02255DDC ; =0x0225B1B4 - ldr r1, _02255DCC ; =0x0225B158 - ldr r2, _02255DD0 ; =0x0225B0F8 - mov r3, #0x97 - bl __msl_assertion_failed -_02255D3C: - ldr r1, [r5, #4] - ldr r0, [r5, #8] - cmp r1, r0 - ble _02255D60 - ldr r0, _02255DE0 ; =0x0225B1CC - ldr r1, _02255DCC ; =0x0225B158 - ldr r2, _02255DD0 ; =0x0225B0F8 - mov r3, #0x97 - bl __msl_assertion_failed -_02255D60: - cmp r4, #0 - bge _02255D7C - ldr r0, _02255DE4 ; =0x0225B1F0 - ldr r1, _02255DCC ; =0x0225B158 - ldr r2, _02255DD0 ; =0x0225B0F8 - mov r3, #0x98 - bl __msl_assertion_failed -_02255D7C: - ldr r0, [r5, #4] - cmp r4, r0 - ble _02255D9C - ldr r0, _02255DE8 ; =0x0225B20C - ldr r1, _02255DCC ; =0x0225B158 - ldr r2, _02255DD0 ; =0x0225B0F8 - mov r3, #0x99 - bl __msl_assertion_failed -_02255D9C: - ldr r0, [r5, #4] - sub r2, r0, r4 - str r2, [r5, #4] - ldr r0, [r5, #0] - add r1, r0, r4 - bl memmove - ldr r1, [r5, #0] - ldr r0, [r5, #4] - mov r2, #0 - strb r2, [r1, r0] - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02255DC8: .word Unk_ov66_0225B168 -_02255DCC: .word Unk_ov66_0225B158 -_02255DD0: .word Unk_ov66_0225B0F8 -_02255DD4: .word Unk_ov66_0225B17C -_02255DD8: .word Unk_ov66_0225B190 -_02255DDC: .word Unk_ov66_0225B1B4 -_02255DE0: .word Unk_ov66_0225B1CC -_02255DE4: .word Unk_ov66_0225B1F0 -_02255DE8: .word Unk_ov66_0225B20C - arm_func_end ciBufferClipFront - - arm_func_start ciSocketInit -ciSocketInit: ; 0x02255DEC - stmfd sp!, {r4, lr} - movs r4, r0 - bne _02255E0C - ldr r0, _02255E5C ; =0x0225B224 - ldr r1, _02255E60 ; =0x0225B158 - ldr r2, _02255E64 ; =0x0225B094 - mov r3, #0xb1 - bl __msl_assertion_failed -_02255E0C: - mov r0, r4 - mov r1, #0 - mov r2, #0x350 - bl memset - mvn r1, #0 - add r0, r4, #0x108 - str r1, [r4, #0] - bl ciBufferInit - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - add r0, r4, #0x114 - bl ciBufferInit - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r4, pc} - add r0, r4, #0x108 - bl ciBufferFree - mov r0, #0 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02255E5C: .word Unk_ov66_0225B224 -_02255E60: .word Unk_ov66_0225B158 -_02255E64: .word Unk_ov66_0225B094 - arm_func_end ciSocketInit - - arm_func_start ciSocketConnect -ciSocketConnect: ; 0x02255E68 - stmfd sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - movs r6, r0 - mov r5, r1 - mov r4, r2 - bne _02255E94 - ldr r0, _02256164 ; =0x0225B234 - ldr r1, _02256168 ; =0x0225B158 - ldr r2, _0225616C ; =0x0225B0D4 - mov r3, #0xd8 - bl __msl_assertion_failed -_02255E94: - ldr r0, [r6, #4] - cmp r0, #2 - bls _02255EB4 - ldr r0, _02256170 ; =0x0225B244 - ldr r1, _02256168 ; =0x0225B158 - ldr r2, _0225616C ; =0x0225B0D4 - mov r3, #0xd8 - bl __msl_assertion_failed -_02255EB4: - adds r0, r6, #0x108 - bne _02255ED0 - ldr r0, _02256174 ; =0x0225B2C4 - ldr r1, _02256168 ; =0x0225B158 - ldr r2, _0225616C ; =0x0225B0D4 - mov r3, #0xd8 - bl __msl_assertion_failed -_02255ED0: - ldr r0, [r6, #0x110] - cmp r0, #0 - bge _02255EF0 - ldr r0, _02256178 ; =0x0225B2E4 - ldr r1, _02256168 ; =0x0225B158 - ldr r2, _0225616C ; =0x0225B0D4 - mov r3, #0xd8 - bl __msl_assertion_failed -_02255EF0: - ldr r0, [r6, #0x110] - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #19 - adds r0, r1, r0, ror #19 - beq _02255F18 - ldr r0, _0225617C ; =0x0225B308 - ldr r1, _02256168 ; =0x0225B158 - ldr r2, _0225616C ; =0x0225B0D4 - mov r3, #0xd8 - bl __msl_assertion_failed -_02255F18: - ldr r0, [r6, #0x10c] - cmp r0, #0 - bge _02255F38 - ldr r0, _02256180 ; =0x0225B338 - ldr r1, _02256168 ; =0x0225B158 - ldr r2, _0225616C ; =0x0225B0D4 - mov r3, #0xd8 - bl __msl_assertion_failed -_02255F38: - ldr r1, [r6, #0x10c] - ldr r0, [r6, #0x110] - cmp r1, r0 - ble _02255F5C - ldr r0, _02256184 ; =0x0225B35C - ldr r1, _02256168 ; =0x0225B158 - ldr r2, _0225616C ; =0x0225B0D4 - mov r3, #0xd8 - bl __msl_assertion_failed -_02255F5C: - adds r0, r6, #0x114 - bne _02255F78 - ldr r0, _02256188 ; =0x0225B39C - ldr r1, _02256168 ; =0x0225B158 - ldr r2, _0225616C ; =0x0225B0D4 - mov r3, #0xd8 - bl __msl_assertion_failed -_02255F78: - ldr r0, [r6, #0x11c] - cmp r0, #0 - bge _02255F98 - ldr r0, _0225618C ; =0x0225B3BC - ldr r1, _02256168 ; =0x0225B158 - ldr r2, _0225616C ; =0x0225B0D4 - mov r3, #0xd8 - bl __msl_assertion_failed -_02255F98: - ldr r0, [r6, #0x11c] - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #19 - adds r0, r1, r0, ror #19 - beq _02255FC0 - ldr r0, _02256190 ; =0x0225B3E0 - ldr r1, _02256168 ; =0x0225B158 - ldr r2, _0225616C ; =0x0225B0D4 - mov r3, #0xd8 - bl __msl_assertion_failed -_02255FC0: - ldr r0, [r6, #0x118] - cmp r0, #0 - bge _02255FE0 - ldr r0, _02256194 ; =0x0225B414 - ldr r1, _02256168 ; =0x0225B158 - ldr r2, _0225616C ; =0x0225B0D4 - mov r3, #0xd8 - bl __msl_assertion_failed -_02255FE0: - ldr r1, [r6, #0x118] - ldr r0, [r6, #0x11c] - cmp r1, r0 - ble _02256004 - ldr r0, _02256198 ; =0x0225B438 - ldr r1, _02256168 ; =0x0225B158 - ldr r2, _0225616C ; =0x0225B0D4 - mov r3, #0xd8 - bl __msl_assertion_failed -_02256004: - cmp r5, #0 - bne _02256020 - ldr r0, _0225619C ; =0x0225B478 - ldr r1, _02256168 ; =0x0225B158 - ldr r2, _0225616C ; =0x0225B0D4 - mov r3, #0xd9 - bl __msl_assertion_failed -_02256020: - cmp r4, #0 - bge _0225603C - ldr r0, _022561A0 ; =0x0225B490 - ldr r1, _02256168 ; =0x0225B158 - ldr r2, _0225616C ; =0x0225B0D4 - mov r3, #0xda - bl __msl_assertion_failed -_0225603C: - ldr r0, _022561A4 ; =0x0000FFFF - cmp r4, r0 - ble _0225605C - ldr r0, _022561A8 ; =0x0225B49C - ldr r1, _02256168 ; =0x0225B158 - ldr r2, _0225616C ; =0x0225B0D4 - mov r3, #0xdb - bl __msl_assertion_failed -_0225605C: - ldr r0, [r6, #4] - cmp r0, #0 - beq _0225607C - ldr r0, _022561AC ; =0x0225B4B0 - ldr r1, _02256168 ; =0x0225B158 - ldr r2, _0225616C ; =0x0225B0D4 - mov r3, #0xdc - bl __msl_assertion_failed -_0225607C: - mov r1, r5 - add r0, r6, #8 - mov r2, #0xff - bl strncpy - mov r1, #0 - mov r0, r5 - strb r1, [r6, #0x106] - bl inet_addr - mvn r1, #0 - cmp r0, r1 - bne _022560CC - mov r0, r5 - bl SOC_GetHostByName - cmp r0, #0 - addeq sp, sp, #8 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r0, [r0, #0xc] - ldr r0, [r0, #0] - ldr r0, [r0, #0] -_022560CC: - mov r1, r4, lsl #0x10 - mov r1, r1, lsr #0x10 - mov r3, r1, asr #8 - mov r1, r1, lsl #8 - add r4, sp, #0 - mov r2, #0 - str r2, [r4, #4] - and r3, r3, #0xff - and r1, r1, #0xff00 - orr r1, r3, r1 - str r2, [r4, #0] - mov r3, #2 - str r0, [sp, #4] - strh r1, [sp, #2] - mov r0, r3 - mov r1, #1 - strb r3, [sp, #1] - bl socket - mvn r1, #0 - cmp r0, r1 - str r0, [r6, #0] - addeq sp, sp, #8 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r1, r4 - mov r2, #8 - bl connect - mvn r1, #0 - cmp r0, r1 - movne r0, #1 - addne sp, sp, #8 - strne r0, [r6, #4] - ldmneia sp!, {r4, r5, r6, pc} - ldr r0, [r6, #0] - bl closesocket - mov r0, #0 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_02256164: .word Unk_ov66_0225B234 -_02256168: .word Unk_ov66_0225B158 -_0225616C: .word Unk_ov66_0225B0D4 -_02256170: .word Unk_ov66_0225B244 -_02256174: .word Unk_ov66_0225B2C4 -_02256178: .word Unk_ov66_0225B2E4 -_0225617C: .word Unk_ov66_0225B308 -_02256180: .word Unk_ov66_0225B338 -_02256184: .word Unk_ov66_0225B35C -_02256188: .word Unk_ov66_0225B39C -_0225618C: .word Unk_ov66_0225B3BC -_02256190: .word Unk_ov66_0225B3E0 -_02256194: .word Unk_ov66_0225B414 -_02256198: .word Unk_ov66_0225B438 -_0225619C: .word Unk_ov66_0225B478 -_022561A0: .word Unk_ov66_0225B490 -_022561A4: .word 0x0000FFFF -_022561A8: .word Unk_ov66_0225B49C -_022561AC: .word Unk_ov66_0225B4B0 - arm_func_end ciSocketConnect - - arm_func_start ciSocketDisconnect -ciSocketDisconnect: ; 0x022561B0 - stmfd sp!, {r3, r4, r5, lr} - movs r4, r0 - bne _022561D0 - ldr r0, _022563F0 ; =0x0225B234 - ldr r1, _022563F4 ; =0x0225B158 - ldr r2, _022563F8 ; =0x0225B134 - ldr r3, _022563FC ; =0x0000011B - bl __msl_assertion_failed -_022561D0: - ldr r0, [r4, #4] - cmp r0, #2 - bls _022561F0 - ldr r0, _02256400 ; =0x0225B244 - ldr r1, _022563F4 ; =0x0225B158 - ldr r2, _022563F8 ; =0x0225B134 - ldr r3, _022563FC ; =0x0000011B - bl __msl_assertion_failed -_022561F0: - adds r0, r4, #0x108 - bne _0225620C - ldr r0, _02256404 ; =0x0225B2C4 - ldr r1, _022563F4 ; =0x0225B158 - ldr r2, _022563F8 ; =0x0225B134 - ldr r3, _022563FC ; =0x0000011B - bl __msl_assertion_failed -_0225620C: - ldr r0, [r4, #0x110] - cmp r0, #0 - bge _0225622C - ldr r0, _02256408 ; =0x0225B2E4 - ldr r1, _022563F4 ; =0x0225B158 - ldr r2, _022563F8 ; =0x0225B134 - ldr r3, _022563FC ; =0x0000011B - bl __msl_assertion_failed -_0225622C: - ldr r0, [r4, #0x110] - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #19 - adds r0, r1, r0, ror #19 - beq _02256254 - ldr r0, _0225640C ; =0x0225B308 - ldr r1, _022563F4 ; =0x0225B158 - ldr r2, _022563F8 ; =0x0225B134 - ldr r3, _022563FC ; =0x0000011B - bl __msl_assertion_failed -_02256254: - ldr r0, [r4, #0x10c] - cmp r0, #0 - bge _02256274 - ldr r0, _02256410 ; =0x0225B338 - ldr r1, _022563F4 ; =0x0225B158 - ldr r2, _022563F8 ; =0x0225B134 - ldr r3, _022563FC ; =0x0000011B - bl __msl_assertion_failed -_02256274: - ldr r1, [r4, #0x10c] - ldr r0, [r4, #0x110] - cmp r1, r0 - ble _02256298 - ldr r0, _02256414 ; =0x0225B35C - ldr r1, _022563F4 ; =0x0225B158 - ldr r2, _022563F8 ; =0x0225B134 - ldr r3, _022563FC ; =0x0000011B - bl __msl_assertion_failed -_02256298: - adds r0, r4, #0x114 - bne _022562B4 - ldr r0, _02256418 ; =0x0225B39C - ldr r1, _022563F4 ; =0x0225B158 - ldr r2, _022563F8 ; =0x0225B134 - ldr r3, _022563FC ; =0x0000011B - bl __msl_assertion_failed -_022562B4: - ldr r0, [r4, #0x11c] - cmp r0, #0 - bge _022562D4 - ldr r0, _0225641C ; =0x0225B3BC - ldr r1, _022563F4 ; =0x0225B158 - ldr r2, _022563F8 ; =0x0225B134 - ldr r3, _022563FC ; =0x0000011B - bl __msl_assertion_failed -_022562D4: - ldr r0, [r4, #0x11c] - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #19 - adds r0, r1, r0, ror #19 - beq _022562FC - ldr r0, _02256420 ; =0x0225B3E0 - ldr r1, _022563F4 ; =0x0225B158 - ldr r2, _022563F8 ; =0x0225B134 - ldr r3, _022563FC ; =0x0000011B - bl __msl_assertion_failed -_022562FC: - ldr r0, [r4, #0x118] - cmp r0, #0 - bge _0225631C - ldr r0, _02256424 ; =0x0225B414 - ldr r1, _022563F4 ; =0x0225B158 - ldr r2, _022563F8 ; =0x0225B134 - ldr r3, _022563FC ; =0x0000011B - bl __msl_assertion_failed -_0225631C: - ldr r1, [r4, #0x118] - ldr r0, [r4, #0x11c] - cmp r1, r0 - ble _02256340 - ldr r0, _02256428 ; =0x0225B438 - ldr r1, _022563F4 ; =0x0225B158 - ldr r2, _022563F8 ; =0x0225B134 - ldr r3, _022563FC ; =0x0000011B - bl __msl_assertion_failed -_02256340: - ldr r0, [r4, #0] - mvn r1, #0 - cmp r0, r1 - beq _02256360 - mov r1, #2 - bl shutdown - ldr r0, [r4, #0] - bl closesocket -_02256360: - mov r1, #2 - add r0, r4, #0x108 - str r1, [r4, #4] - bl ciBufferFree - add r0, r4, #0x114 - bl ciBufferFree - ldr r0, [r4, #0x328] - bl DWCi_GsFree - ldr r0, [r4, #0x32c] - bl DWCi_GsFree - ldr r0, [r4, #0x330] - bl DWCi_GsFree - ldr r0, [r4, #0x334] - bl DWCi_GsFree - ldr r0, [r4, #0x338] - bl DWCi_GsFree - ldr r0, [r4, #0x33c] - bl DWCi_GsFree - ldr r0, [r4, #0x340] - bl DWCi_GsFree - ldr r0, [r4, #0x344] - bl DWCi_GsFree - ldr r0, [r4, #0x34c] - mov r5, #0 - cmp r0, #0 - ble _022563E4 -_022563C8: - ldr r0, [r4, #0x348] - ldr r0, [r0, r5, lsl #2] - bl DWCi_GsFree - ldr r0, [r4, #0x34c] - add r5, r5, #1 - cmp r5, r0 - blt _022563C8 -_022563E4: - ldr r0, [r4, #0x348] - bl DWCi_GsFree - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_022563F0: .word Unk_ov66_0225B234 -_022563F4: .word Unk_ov66_0225B158 -_022563F8: .word Unk_ov66_0225B134 -_022563FC: .word 0x0000011B -_02256400: .word Unk_ov66_0225B244 -_02256404: .word Unk_ov66_0225B2C4 -_02256408: .word Unk_ov66_0225B2E4 -_0225640C: .word Unk_ov66_0225B308 -_02256410: .word Unk_ov66_0225B338 -_02256414: .word Unk_ov66_0225B35C -_02256418: .word Unk_ov66_0225B39C -_0225641C: .word Unk_ov66_0225B3BC -_02256420: .word Unk_ov66_0225B3E0 -_02256424: .word Unk_ov66_0225B414 -_02256428: .word Unk_ov66_0225B438 - arm_func_end ciSocketDisconnect - - arm_func_start ciSocketSelect -ciSocketSelect: ; 0x0225642C - stmfd sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0xc - mov ip, #0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - add r1, sp, #8 - add r2, sp, #4 - add r3, sp, #0 - str ip, [sp, #8] - str ip, [sp, #4] - str ip, [sp] - bl GSISocketSelect - cmp r6, #0 - ldrne r0, [sp, #8] - strne r0, [r6] - cmp r5, #0 - ldrne r0, [sp, #4] - strne r0, [r5] - cmp r4, #0 - ldrne r0, [sp] - strne r0, [r4] - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end ciSocketSelect - - arm_func_start ciSocketThinkSend -ciSocketThinkSend: ; 0x0225648C - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - movs r6, r0 - bne _022564AC - ldr r0, _022566BC ; =0x0225B234 - ldr r1, _022566C0 ; =0x0225B158 - ldr r2, _022566C4 ; =0x0225B10C - mov r3, #0x154 - bl __msl_assertion_failed -_022564AC: - ldr r0, [r6, #4] - cmp r0, #2 - bls _022564CC - ldr r0, _022566C8 ; =0x0225B244 - ldr r1, _022566C0 ; =0x0225B158 - ldr r2, _022566C4 ; =0x0225B10C - mov r3, #0x154 - bl __msl_assertion_failed -_022564CC: - adds r0, r6, #0x108 - bne _022564E8 - ldr r0, _022566CC ; =0x0225B2C4 - ldr r1, _022566C0 ; =0x0225B158 - ldr r2, _022566C4 ; =0x0225B10C - mov r3, #0x154 - bl __msl_assertion_failed -_022564E8: - ldr r0, [r6, #0x110] - cmp r0, #0 - bge _02256508 - ldr r0, _022566D0 ; =0x0225B2E4 - ldr r1, _022566C0 ; =0x0225B158 - ldr r2, _022566C4 ; =0x0225B10C - mov r3, #0x154 - bl __msl_assertion_failed -_02256508: - ldr r0, [r6, #0x110] - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #19 - adds r0, r1, r0, ror #19 - beq _02256530 - ldr r0, _022566D4 ; =0x0225B308 - ldr r1, _022566C0 ; =0x0225B158 - ldr r2, _022566C4 ; =0x0225B10C - mov r3, #0x154 - bl __msl_assertion_failed -_02256530: - ldr r0, [r6, #0x10c] - cmp r0, #0 - bge _02256550 - ldr r0, _022566D8 ; =0x0225B338 - ldr r1, _022566C0 ; =0x0225B158 - ldr r2, _022566C4 ; =0x0225B10C - mov r3, #0x154 - bl __msl_assertion_failed -_02256550: - ldr r1, [r6, #0x10c] - ldr r0, [r6, #0x110] - cmp r1, r0 - ble _02256574 - ldr r0, _022566DC ; =0x0225B35C - ldr r1, _022566C0 ; =0x0225B158 - ldr r2, _022566C4 ; =0x0225B10C - mov r3, #0x154 - bl __msl_assertion_failed -_02256574: - adds r0, r6, #0x114 - bne _02256590 - ldr r0, _022566E0 ; =0x0225B39C - ldr r1, _022566C0 ; =0x0225B158 - ldr r2, _022566C4 ; =0x0225B10C - mov r3, #0x154 - bl __msl_assertion_failed -_02256590: - ldr r0, [r6, #0x11c] - cmp r0, #0 - bge _022565B0 - ldr r0, _022566E4 ; =0x0225B3BC - ldr r1, _022566C0 ; =0x0225B158 - ldr r2, _022566C4 ; =0x0225B10C - mov r3, #0x154 - bl __msl_assertion_failed -_022565B0: - ldr r0, [r6, #0x11c] - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #19 - adds r0, r1, r0, ror #19 - beq _022565D8 - ldr r0, _022566E8 ; =0x0225B3E0 - ldr r1, _022566C0 ; =0x0225B158 - ldr r2, _022566C4 ; =0x0225B10C - mov r3, #0x154 - bl __msl_assertion_failed -_022565D8: - ldr r0, [r6, #0x118] - cmp r0, #0 - bge _022565F8 - ldr r0, _022566EC ; =0x0225B414 - ldr r1, _022566C0 ; =0x0225B158 - ldr r2, _022566C4 ; =0x0225B10C - mov r3, #0x154 - bl __msl_assertion_failed -_022565F8: - ldr r1, [r6, #0x118] - ldr r0, [r6, #0x11c] - cmp r1, r0 - ble _0225661C - ldr r0, _022566F0 ; =0x0225B438 - ldr r1, _022566C0 ; =0x0225B158 - ldr r2, _022566C4 ; =0x0225B10C - mov r3, #0x154 - bl __msl_assertion_failed -_0225661C: - ldr r0, [r6, #4] - cmp r0, #1 - beq _0225663C - ldr r0, _022566F4 ; =0x0225B4D8 - ldr r1, _022566C0 ; =0x0225B158 - ldr r2, _022566C4 ; =0x0225B10C - ldr r3, _022566F8 ; =0x00000155 - bl __msl_assertion_failed -_0225663C: - ldr r0, [r6, #0x118] - cmp r0, #0 - ldmleia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r8, #0 - mov sb, #0x400 - mov r5, r8 - add r4, sp, #0 - mvn r7, #0 -_0225665C: - ldr r0, [r6, #0] - mov r1, r5 - mov r2, r4 - mov r3, r5 - bl ciSocketSelect - ldr r0, [sp] - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldr r2, [r6, #0x118] - ldr r0, [r6, #0] - cmp r2, #0x400 - ldr r1, [r6, #0x114] - movge r2, sb - mov r3, r8 - bl send - movs r1, r0 - cmpne r1, r7 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - add r0, r6, #0x114 - bl ciBufferClipFront - ldr r0, [r6, #0x118] - cmp r0, #0 - bgt _0225665C - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ; .align 2, 0 -_022566BC: .word Unk_ov66_0225B234 -_022566C0: .word Unk_ov66_0225B158 -_022566C4: .word Unk_ov66_0225B10C -_022566C8: .word Unk_ov66_0225B244 -_022566CC: .word Unk_ov66_0225B2C4 -_022566D0: .word Unk_ov66_0225B2E4 -_022566D4: .word Unk_ov66_0225B308 -_022566D8: .word Unk_ov66_0225B338 -_022566DC: .word Unk_ov66_0225B35C -_022566E0: .word Unk_ov66_0225B39C -_022566E4: .word Unk_ov66_0225B3BC -_022566E8: .word Unk_ov66_0225B3E0 -_022566EC: .word Unk_ov66_0225B414 -_022566F0: .word Unk_ov66_0225B438 -_022566F4: .word Unk_ov66_0225B4D8 -_022566F8: .word 0x00000155 - arm_func_end ciSocketThinkSend - - arm_func_start ciSocketThinkRecv -ciSocketThinkRecv: ; 0x022566FC - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - movs sl, r0 - bne _0225671C - ldr r0, _02256958 ; =0x0225B234 - ldr r1, _0225695C ; =0x0225B158 - ldr r2, _02256960 ; =0x0225B120 - ldr r3, _02256964 ; =0x0000017A - bl __msl_assertion_failed -_0225671C: - ldr r0, [sl, #4] - cmp r0, #2 - bls _0225673C - ldr r0, _02256968 ; =0x0225B244 - ldr r1, _0225695C ; =0x0225B158 - ldr r2, _02256960 ; =0x0225B120 - ldr r3, _02256964 ; =0x0000017A - bl __msl_assertion_failed -_0225673C: - adds r0, sl, #0x108 - bne _02256758 - ldr r0, _0225696C ; =0x0225B2C4 - ldr r1, _0225695C ; =0x0225B158 - ldr r2, _02256960 ; =0x0225B120 - ldr r3, _02256964 ; =0x0000017A - bl __msl_assertion_failed -_02256758: - ldr r0, [sl, #0x110] - cmp r0, #0 - bge _02256778 - ldr r0, _02256970 ; =0x0225B2E4 - ldr r1, _0225695C ; =0x0225B158 - ldr r2, _02256960 ; =0x0225B120 - ldr r3, _02256964 ; =0x0000017A - bl __msl_assertion_failed -_02256778: - ldr r0, [sl, #0x110] - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #19 - adds r0, r1, r0, ror #19 - beq _022567A0 - ldr r0, _02256974 ; =0x0225B308 - ldr r1, _0225695C ; =0x0225B158 - ldr r2, _02256960 ; =0x0225B120 - ldr r3, _02256964 ; =0x0000017A - bl __msl_assertion_failed -_022567A0: - ldr r0, [sl, #0x10c] - cmp r0, #0 - bge _022567C0 - ldr r0, _02256978 ; =0x0225B338 - ldr r1, _0225695C ; =0x0225B158 - ldr r2, _02256960 ; =0x0225B120 - ldr r3, _02256964 ; =0x0000017A - bl __msl_assertion_failed -_022567C0: - ldr r1, [sl, #0x10c] - ldr r0, [sl, #0x110] - cmp r1, r0 - ble _022567E4 - ldr r0, _0225697C ; =0x0225B35C - ldr r1, _0225695C ; =0x0225B158 - ldr r2, _02256960 ; =0x0225B120 - ldr r3, _02256964 ; =0x0000017A - bl __msl_assertion_failed -_022567E4: - adds r0, sl, #0x114 - bne _02256800 - ldr r0, _02256980 ; =0x0225B39C - ldr r1, _0225695C ; =0x0225B158 - ldr r2, _02256960 ; =0x0225B120 - ldr r3, _02256964 ; =0x0000017A - bl __msl_assertion_failed -_02256800: - ldr r0, [sl, #0x11c] - cmp r0, #0 - bge _02256820 - ldr r0, _02256984 ; =0x0225B3BC - ldr r1, _0225695C ; =0x0225B158 - ldr r2, _02256960 ; =0x0225B120 - ldr r3, _02256964 ; =0x0000017A - bl __msl_assertion_failed -_02256820: - ldr r0, [sl, #0x11c] - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #19 - adds r0, r1, r0, ror #19 - beq _02256848 - ldr r0, _02256988 ; =0x0225B3E0 - ldr r1, _0225695C ; =0x0225B158 - ldr r2, _02256960 ; =0x0225B120 - ldr r3, _02256964 ; =0x0000017A - bl __msl_assertion_failed -_02256848: - ldr r0, [sl, #0x118] - cmp r0, #0 - bge _02256868 - ldr r0, _0225698C ; =0x0225B414 - ldr r1, _0225695C ; =0x0225B158 - ldr r2, _02256960 ; =0x0225B120 - ldr r3, _02256964 ; =0x0000017A - bl __msl_assertion_failed -_02256868: - ldr r1, [sl, #0x118] - ldr r0, [sl, #0x11c] - cmp r1, r0 - ble _0225688C - ldr r0, _02256990 ; =0x0225B438 - ldr r1, _0225695C ; =0x0225B158 - ldr r2, _02256960 ; =0x0225B120 - ldr r3, _02256964 ; =0x0000017A - bl __msl_assertion_failed -_0225688C: - ldr r0, [sl, #4] - cmp r0, #1 - beq _022568AC - ldr r0, _02256994 ; =0x0225B4D8 - ldr r1, _0225695C ; =0x0225B158 - ldr r2, _02256960 ; =0x0225B120 - ldr r3, _02256998 ; =0x0000017B - bl __msl_assertion_failed -_022568AC: - mov r7, #0x1000 - mov fp, r7 - mov r4, #0 - add r8, sp, #0 -_022568BC: - mov r2, #0 - ldr r0, [sl] - mov r1, r8 - mov r3, r2 - bl ciSocketSelect - ldr r0, [sp] - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r1, r7 - add r0, sl, #0x108 - bl ciBufferPreAppend - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r6, [sl, #0x108] - ldr r5, [sl, #0x10c] - ldr r0, [sl] - mov r2, fp - mov r3, #0 - add r1, r6, r5 - bl recv - mov sb, r0 - cmp sb, #0 - movle r0, #2 - strle r0, [sl, #4] - ldmleia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [sl, #0x120] - cmp r0, #0 - beq _0225693C - mov r1, sb - add r0, r6, r5 - add r2, sl, #0x124 - bl gs_crypt -_0225693C: - ldr r0, [sl, #0x10c] - add r1, r0, sb - str r1, [sl, #0x10c] - ldr r0, [sl, #0x108] - strb r4, [r0, r1] - b _022568BC -_02256954: - .byte 0xF8, 0x8F, 0xBD, 0xE8 -_02256958: .word Unk_ov66_0225B234 -_0225695C: .word Unk_ov66_0225B158 -_02256960: .word Unk_ov66_0225B120 -_02256964: .word 0x0000017A -_02256968: .word Unk_ov66_0225B244 -_0225696C: .word Unk_ov66_0225B2C4 -_02256970: .word Unk_ov66_0225B2E4 -_02256974: .word Unk_ov66_0225B308 -_02256978: .word Unk_ov66_0225B338 -_0225697C: .word Unk_ov66_0225B35C -_02256980: .word Unk_ov66_0225B39C -_02256984: .word Unk_ov66_0225B3BC -_02256988: .word Unk_ov66_0225B3E0 -_0225698C: .word Unk_ov66_0225B414 -_02256990: .word Unk_ov66_0225B438 -_02256994: .word Unk_ov66_0225B4D8 -_02256998: .word 0x0000017B - arm_func_end ciSocketThinkRecv - - arm_func_start ciSocketThink -ciSocketThink: ; 0x0225699C - stmfd sp!, {r4, lr} - movs r4, r0 - bne _022569BC - ldr r0, _02256B6C ; =0x0225B234 - ldr r1, _02256B70 ; =0x0225B158 - ldr r2, _02256B74 ; =0x0225B0B4 - ldr r3, _02256B78 ; =0x000001BE - bl __msl_assertion_failed -_022569BC: - ldr r0, [r4, #4] - cmp r0, #2 - bls _022569DC - ldr r0, _02256B7C ; =0x0225B244 - ldr r1, _02256B70 ; =0x0225B158 - ldr r2, _02256B74 ; =0x0225B0B4 - ldr r3, _02256B78 ; =0x000001BE - bl __msl_assertion_failed -_022569DC: - adds r0, r4, #0x108 - bne _022569F8 - ldr r0, _02256B80 ; =0x0225B2C4 - ldr r1, _02256B70 ; =0x0225B158 - ldr r2, _02256B74 ; =0x0225B0B4 - ldr r3, _02256B78 ; =0x000001BE - bl __msl_assertion_failed -_022569F8: - ldr r0, [r4, #0x110] - cmp r0, #0 - bge _02256A18 - ldr r0, _02256B84 ; =0x0225B2E4 - ldr r1, _02256B70 ; =0x0225B158 - ldr r2, _02256B74 ; =0x0225B0B4 - ldr r3, _02256B78 ; =0x000001BE - bl __msl_assertion_failed -_02256A18: - ldr r0, [r4, #0x110] - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #19 - adds r0, r1, r0, ror #19 - beq _02256A40 - ldr r0, _02256B88 ; =0x0225B308 - ldr r1, _02256B70 ; =0x0225B158 - ldr r2, _02256B74 ; =0x0225B0B4 - ldr r3, _02256B78 ; =0x000001BE - bl __msl_assertion_failed -_02256A40: - ldr r0, [r4, #0x10c] - cmp r0, #0 - bge _02256A60 - ldr r0, _02256B8C ; =0x0225B338 - ldr r1, _02256B70 ; =0x0225B158 - ldr r2, _02256B74 ; =0x0225B0B4 - ldr r3, _02256B78 ; =0x000001BE - bl __msl_assertion_failed -_02256A60: - ldr r1, [r4, #0x10c] - ldr r0, [r4, #0x110] - cmp r1, r0 - ble _02256A84 - ldr r0, _02256B90 ; =0x0225B35C - ldr r1, _02256B70 ; =0x0225B158 - ldr r2, _02256B74 ; =0x0225B0B4 - ldr r3, _02256B78 ; =0x000001BE - bl __msl_assertion_failed -_02256A84: - adds r0, r4, #0x114 - bne _02256AA0 - ldr r0, _02256B94 ; =0x0225B39C - ldr r1, _02256B70 ; =0x0225B158 - ldr r2, _02256B74 ; =0x0225B0B4 - ldr r3, _02256B78 ; =0x000001BE - bl __msl_assertion_failed -_02256AA0: - ldr r0, [r4, #0x11c] - cmp r0, #0 - bge _02256AC0 - ldr r0, _02256B98 ; =0x0225B3BC - ldr r1, _02256B70 ; =0x0225B158 - ldr r2, _02256B74 ; =0x0225B0B4 - ldr r3, _02256B78 ; =0x000001BE - bl __msl_assertion_failed -_02256AC0: - ldr r0, [r4, #0x11c] - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #19 - adds r0, r1, r0, ror #19 - beq _02256AE8 - ldr r0, _02256B9C ; =0x0225B3E0 - ldr r1, _02256B70 ; =0x0225B158 - ldr r2, _02256B74 ; =0x0225B0B4 - ldr r3, _02256B78 ; =0x000001BE - bl __msl_assertion_failed -_02256AE8: - ldr r0, [r4, #0x118] - cmp r0, #0 - bge _02256B08 - ldr r0, _02256BA0 ; =0x0225B414 - ldr r1, _02256B70 ; =0x0225B158 - ldr r2, _02256B74 ; =0x0225B0B4 - ldr r3, _02256B78 ; =0x000001BE - bl __msl_assertion_failed -_02256B08: - ldr r1, [r4, #0x118] - ldr r0, [r4, #0x11c] - cmp r1, r0 - ble _02256B2C - ldr r0, _02256BA4 ; =0x0225B438 - ldr r1, _02256B70 ; =0x0225B158 - ldr r2, _02256B74 ; =0x0225B0B4 - ldr r3, _02256B78 ; =0x000001BE - bl __msl_assertion_failed -_02256B2C: - ldr r0, [r4, #4] - cmp r0, #1 - beq _02256B4C - ldr r0, _02256BA8 ; =0x0225B4D8 - ldr r1, _02256B70 ; =0x0225B158 - ldr r2, _02256B74 ; =0x0225B0B4 - ldr r3, _02256BAC ; =0x000001BF - bl __msl_assertion_failed -_02256B4C: - ldr r0, [r4, #4] - cmp r0, #2 - ldmeqia sp!, {r4, pc} - mov r0, r4 - bl ciSocketThinkSend - mov r0, r4 - bl ciSocketThinkRecv - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02256B6C: .word Unk_ov66_0225B234 -_02256B70: .word Unk_ov66_0225B158 -_02256B74: .word Unk_ov66_0225B0B4 -_02256B78: .word 0x000001BE -_02256B7C: .word Unk_ov66_0225B244 -_02256B80: .word Unk_ov66_0225B2C4 -_02256B84: .word Unk_ov66_0225B2E4 -_02256B88: .word Unk_ov66_0225B308 -_02256B8C: .word Unk_ov66_0225B338 -_02256B90: .word Unk_ov66_0225B35C -_02256B94: .word Unk_ov66_0225B39C -_02256B98: .word Unk_ov66_0225B3BC -_02256B9C: .word Unk_ov66_0225B3E0 -_02256BA0: .word Unk_ov66_0225B414 -_02256BA4: .word Unk_ov66_0225B438 -_02256BA8: .word Unk_ov66_0225B4D8 -_02256BAC: .word 0x000001BF - arm_func_end ciSocketThink - - arm_func_start ciSocketSend -ciSocketSend: ; 0x02256BB0 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - movs r8, r0 - mov r7, r1 - bne _02256BD4 - ldr r0, _02256E28 ; =0x0225B234 - ldr r1, _02256E2C ; =0x0225B158 - ldr r2, _02256E30 ; =0x0225B054 - mov r3, #0x1d8 - bl __msl_assertion_failed -_02256BD4: - ldr r0, [r8, #4] - cmp r0, #2 - bls _02256BF4 - ldr r0, _02256E34 ; =0x0225B244 - ldr r1, _02256E2C ; =0x0225B158 - ldr r2, _02256E30 ; =0x0225B054 - mov r3, #0x1d8 - bl __msl_assertion_failed -_02256BF4: - adds r0, r8, #0x108 - bne _02256C10 - ldr r0, _02256E38 ; =0x0225B2C4 - ldr r1, _02256E2C ; =0x0225B158 - ldr r2, _02256E30 ; =0x0225B054 - mov r3, #0x1d8 - bl __msl_assertion_failed -_02256C10: - ldr r0, [r8, #0x110] - cmp r0, #0 - bge _02256C30 - ldr r0, _02256E3C ; =0x0225B2E4 - ldr r1, _02256E2C ; =0x0225B158 - ldr r2, _02256E30 ; =0x0225B054 - mov r3, #0x1d8 - bl __msl_assertion_failed -_02256C30: - ldr r0, [r8, #0x110] - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #19 - adds r0, r1, r0, ror #19 - beq _02256C58 - ldr r0, _02256E40 ; =0x0225B308 - ldr r1, _02256E2C ; =0x0225B158 - ldr r2, _02256E30 ; =0x0225B054 - mov r3, #0x1d8 - bl __msl_assertion_failed -_02256C58: - ldr r0, [r8, #0x10c] - cmp r0, #0 - bge _02256C78 - ldr r0, _02256E44 ; =0x0225B338 - ldr r1, _02256E2C ; =0x0225B158 - ldr r2, _02256E30 ; =0x0225B054 - mov r3, #0x1d8 - bl __msl_assertion_failed -_02256C78: - ldr r1, [r8, #0x10c] - ldr r0, [r8, #0x110] - cmp r1, r0 - ble _02256C9C - ldr r0, _02256E48 ; =0x0225B35C - ldr r1, _02256E2C ; =0x0225B158 - ldr r2, _02256E30 ; =0x0225B054 - mov r3, #0x1d8 - bl __msl_assertion_failed -_02256C9C: - adds r0, r8, #0x114 - bne _02256CB8 - ldr r0, _02256E4C ; =0x0225B39C - ldr r1, _02256E2C ; =0x0225B158 - ldr r2, _02256E30 ; =0x0225B054 - mov r3, #0x1d8 - bl __msl_assertion_failed -_02256CB8: - ldr r0, [r8, #0x11c] - cmp r0, #0 - bge _02256CD8 - ldr r0, _02256E50 ; =0x0225B3BC - ldr r1, _02256E2C ; =0x0225B158 - ldr r2, _02256E30 ; =0x0225B054 - mov r3, #0x1d8 - bl __msl_assertion_failed -_02256CD8: - ldr r0, [r8, #0x11c] - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #19 - adds r0, r1, r0, ror #19 - beq _02256D00 - ldr r0, _02256E54 ; =0x0225B3E0 - ldr r1, _02256E2C ; =0x0225B158 - ldr r2, _02256E30 ; =0x0225B054 - mov r3, #0x1d8 - bl __msl_assertion_failed -_02256D00: - ldr r0, [r8, #0x118] - cmp r0, #0 - bge _02256D20 - ldr r0, _02256E58 ; =0x0225B414 - ldr r1, _02256E2C ; =0x0225B158 - ldr r2, _02256E30 ; =0x0225B054 - mov r3, #0x1d8 - bl __msl_assertion_failed -_02256D20: - ldr r1, [r8, #0x118] - ldr r0, [r8, #0x11c] - cmp r1, r0 - ble _02256D44 - ldr r0, _02256E5C ; =0x0225B438 - ldr r1, _02256E2C ; =0x0225B158 - ldr r2, _02256E30 ; =0x0225B054 - mov r3, #0x1d8 - bl __msl_assertion_failed -_02256D44: - ldr r0, [r8, #4] - cmp r0, #1 - beq _02256D64 - ldr r0, _02256E60 ; =0x0225B4D8 - ldr r1, _02256E2C ; =0x0225B158 - ldr r2, _02256E30 ; =0x0225B054 - ldr r3, _02256E64 ; =0x000001D9 - bl __msl_assertion_failed -_02256D64: - cmp r7, #0 - bne _02256D80 - ldr r0, _02256E68 ; =0x0225B148 - ldr r1, _02256E2C ; =0x0225B158 - ldr r2, _02256E30 ; =0x0225B054 - ldr r3, _02256E6C ; =0x000001DA - bl __msl_assertion_failed -_02256D80: - ldr r0, [r8, #4] - cmp r0, #2 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, r7 - bl strlen - mov r6, r0 - add r0, r8, #0x114 - add r1, r6, #2 - bl ciBufferPreAppend - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldr r5, [r8, #0x114] - ldr r4, [r8, #0x118] - mov r1, r7 - mov r2, r6 - add r0, r5, r4 - bl memcpy - ldr r0, [r8, #0x118] - mov r2, #0xd - add r3, r0, r6 - add r0, r3, #1 - str r0, [r8, #0x118] - ldr r0, [r8, #0x114] - mov r1, #0xa - strb r2, [r0, r3] - ldr r2, [r8, #0x118] - add r0, r2, #1 - str r0, [r8, #0x118] - ldr r0, [r8, #0x114] - strb r1, [r0, r2] - ldr r0, [r8, #0x120] - cmp r0, #0 - beq _02256E20 - add r2, r8, #0x26 - add r0, r5, r4 - add r1, r6, #2 - add r2, r2, #0x200 - bl gs_crypt -_02256E20: - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_02256E28: .word Unk_ov66_0225B234 -_02256E2C: .word Unk_ov66_0225B158 -_02256E30: .word Unk_ov66_0225B054 -_02256E34: .word Unk_ov66_0225B244 -_02256E38: .word Unk_ov66_0225B2C4 -_02256E3C: .word Unk_ov66_0225B2E4 -_02256E40: .word Unk_ov66_0225B308 -_02256E44: .word Unk_ov66_0225B338 -_02256E48: .word Unk_ov66_0225B35C -_02256E4C: .word Unk_ov66_0225B39C -_02256E50: .word Unk_ov66_0225B3BC -_02256E54: .word Unk_ov66_0225B3E0 -_02256E58: .word Unk_ov66_0225B414 -_02256E5C: .word Unk_ov66_0225B438 -_02256E60: .word Unk_ov66_0225B4D8 -_02256E64: .word 0x000001D9 -_02256E68: .word Unk_ov66_0225B148 -_02256E6C: .word 0x000001DA - arm_func_end ciSocketSend - - arm_func_start ciSocketSendf -ciSocketSendf: ; 0x02256E70 - stmfd sp!, {r0, r1, r2, r3} - stmfd sp!, {r4, lr} - movs r4, r0 - bne _02256E94 - ldr r0, _02257090 ; =0x0225B234 - ldr r1, _02257094 ; =0x0225B158 - ldr r2, _02257098 ; =0x0225B0A4 - ldr r3, _0225709C ; =0x00000213 - bl __msl_assertion_failed -_02256E94: - ldr r0, [r4, #4] - cmp r0, #2 - bls _02256EB4 - ldr r0, _022570A0 ; =0x0225B244 - ldr r1, _02257094 ; =0x0225B158 - ldr r2, _02257098 ; =0x0225B0A4 - ldr r3, _0225709C ; =0x00000213 - bl __msl_assertion_failed -_02256EB4: - adds r0, r4, #0x108 - bne _02256ED0 - ldr r0, _022570A4 ; =0x0225B2C4 - ldr r1, _02257094 ; =0x0225B158 - ldr r2, _02257098 ; =0x0225B0A4 - ldr r3, _0225709C ; =0x00000213 - bl __msl_assertion_failed -_02256ED0: - ldr r0, [r4, #0x110] - cmp r0, #0 - bge _02256EF0 - ldr r0, _022570A8 ; =0x0225B2E4 - ldr r1, _02257094 ; =0x0225B158 - ldr r2, _02257098 ; =0x0225B0A4 - ldr r3, _0225709C ; =0x00000213 - bl __msl_assertion_failed -_02256EF0: - ldr r0, [r4, #0x110] - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #19 - adds r0, r1, r0, ror #19 - beq _02256F18 - ldr r0, _022570AC ; =0x0225B308 - ldr r1, _02257094 ; =0x0225B158 - ldr r2, _02257098 ; =0x0225B0A4 - ldr r3, _0225709C ; =0x00000213 - bl __msl_assertion_failed -_02256F18: - ldr r0, [r4, #0x10c] - cmp r0, #0 - bge _02256F38 - ldr r0, _022570B0 ; =0x0225B338 - ldr r1, _02257094 ; =0x0225B158 - ldr r2, _02257098 ; =0x0225B0A4 - ldr r3, _0225709C ; =0x00000213 - bl __msl_assertion_failed -_02256F38: - ldr r1, [r4, #0x10c] - ldr r0, [r4, #0x110] - cmp r1, r0 - ble _02256F5C - ldr r0, _022570B4 ; =0x0225B35C - ldr r1, _02257094 ; =0x0225B158 - ldr r2, _02257098 ; =0x0225B0A4 - ldr r3, _0225709C ; =0x00000213 - bl __msl_assertion_failed -_02256F5C: - adds r0, r4, #0x114 - bne _02256F78 - ldr r0, _022570B8 ; =0x0225B39C - ldr r1, _02257094 ; =0x0225B158 - ldr r2, _02257098 ; =0x0225B0A4 - ldr r3, _0225709C ; =0x00000213 - bl __msl_assertion_failed -_02256F78: - ldr r0, [r4, #0x11c] - cmp r0, #0 - bge _02256F98 - ldr r0, _022570BC ; =0x0225B3BC - ldr r1, _02257094 ; =0x0225B158 - ldr r2, _02257098 ; =0x0225B0A4 - ldr r3, _0225709C ; =0x00000213 - bl __msl_assertion_failed -_02256F98: - ldr r0, [r4, #0x11c] - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #19 - adds r0, r1, r0, ror #19 - beq _02256FC0 - ldr r0, _022570C0 ; =0x0225B3E0 - ldr r1, _02257094 ; =0x0225B158 - ldr r2, _02257098 ; =0x0225B0A4 - ldr r3, _0225709C ; =0x00000213 - bl __msl_assertion_failed -_02256FC0: - ldr r0, [r4, #0x118] - cmp r0, #0 - bge _02256FE0 - ldr r0, _022570C4 ; =0x0225B414 - ldr r1, _02257094 ; =0x0225B158 - ldr r2, _02257098 ; =0x0225B0A4 - ldr r3, _0225709C ; =0x00000213 - bl __msl_assertion_failed -_02256FE0: - ldr r1, [r4, #0x118] - ldr r0, [r4, #0x11c] - cmp r1, r0 - ble _02257004 - ldr r0, _022570C8 ; =0x0225B438 - ldr r1, _02257094 ; =0x0225B158 - ldr r2, _02257098 ; =0x0225B0A4 - ldr r3, _0225709C ; =0x00000213 - bl __msl_assertion_failed -_02257004: - ldr r0, [r4, #4] - cmp r0, #1 - beq _02257024 - ldr r0, _022570CC ; =0x0225B4D8 - ldr r1, _02257094 ; =0x0225B158 - ldr r2, _02257098 ; =0x0225B0A4 - mov r3, #0x214 - bl __msl_assertion_failed -_02257024: - ldr r0, [r4, #4] - cmp r0, #2 - moveq r0, #1 - ldmeqia sp!, {r4, lr} - addeq sp, sp, #0x10 - bxeq lr - add r0, sp, #0xc - bic r2, r0, #3 - ldr r1, [sp, #0xc] - ldr r0, _022570D0 ; =0x0225B6F8 - add r2, r2, #4 - bl vsprintf - mvn r1, #0 - cmp r0, r1 - ldreq r0, _022570D0 ; =0x0225B6F8 - moveq r1, #0 - streqb r1, [r0, #0xfff] - beq _02257078 - ldr r1, _022570D0 ; =0x0225B6F8 - mov r2, #0 - strb r2, [r1, r0] -_02257078: - ldr r1, _022570D0 ; =0x0225B6F8 - mov r0, r4 - bl ciSocketSend - ldmia sp!, {r4, lr} - add sp, sp, #0x10 - bx lr - ; .align 2, 0 -_02257090: .word Unk_ov66_0225B234 -_02257094: .word Unk_ov66_0225B158 -_02257098: .word Unk_ov66_0225B0A4 -_0225709C: .word 0x00000213 -_022570A0: .word Unk_ov66_0225B244 -_022570A4: .word Unk_ov66_0225B2C4 -_022570A8: .word Unk_ov66_0225B2E4 -_022570AC: .word Unk_ov66_0225B308 -_022570B0: .word Unk_ov66_0225B338 -_022570B4: .word Unk_ov66_0225B35C -_022570B8: .word Unk_ov66_0225B39C -_022570BC: .word Unk_ov66_0225B3BC -_022570C0: .word Unk_ov66_0225B3E0 -_022570C4: .word Unk_ov66_0225B414 -_022570C8: .word Unk_ov66_0225B438 -_022570CC: .word Unk_ov66_0225B4D8 -_022570D0: .word Unk_ov66_0225B6F8 - arm_func_end ciSocketSendf - - arm_func_start ciParseUser -ciParseUser: ; 0x022570D4 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - movs sl, r0 - ldrnesb r0, [sl] - mov r4, #0 - mov sb, r1 - mov r5, r4 - mov r6, r4 - mov r7, r4 - mov r8, r4 - cmpne r0, #0 - bne _0225711C - ldr r0, _02257260 ; =0x0225B4FC - ldr r1, _02257264 ; =0x0225B158 - ldr r2, _02257268 ; =0x0225B048 - ldr r3, _0225726C ; =0x00000232 - bl __msl_assertion_failed - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_0225711C: - ldrsb r0, [sl] - mov r1, sl - cmp r0, #0 - beq _02257198 -_0225712C: - ldrsb r0, [r1] - cmp r0, #0x21 - addne r1, r1, #1 - addne r6, r6, #1 - bne _0225718C - ldrsb r0, [r1, #1]! - mov r4, r1 - cmp r0, #0 - beq _0225718C -_02257150: - cmp r0, #0x40 - addne r1, r1, #1 - addne r7, r7, #1 - bne _02257180 - ldrsb r0, [r1, #1]! - mov r5, r1 - cmp r0, #0 - beq _02257180 -_02257170: - ldrsb r0, [r1, #1]! - add r8, r8, #1 - cmp r0, #0 - bne _02257170 -_02257180: - ldrsb r0, [r1] - cmp r0, #0 - bne _02257150 -_0225718C: - ldrsb r0, [r1] - cmp r0, #0 - bne _0225712C -_02257198: - cmp r6, #0 - beq _022571D0 - add r0, r6, #1 - bl DWCi_GsMalloc - str r0, [sb, #8] - cmp r0, #0 - beq _022571D8 - mov r1, sl - mov r2, r6 - bl memcpy - ldr r0, [sb, #8] - mov r1, #0 - strb r1, [r0, r6] - b _022571D8 -_022571D0: - mov r0, #0 - str r0, [sb, #8] -_022571D8: - cmp r7, #0 - beq _02257210 - add r0, r7, #1 - bl DWCi_GsMalloc - str r0, [sb, #0xc] - cmp r0, #0 - beq _02257218 - mov r1, r4 - mov r2, r7 - bl memcpy - ldr r0, [sb, #0xc] - mov r1, #0 - strb r1, [r0, r7] - b _02257218 -_02257210: - mov r0, #0 - str r0, [sb, #0xc] -_02257218: - cmp r8, #0 - beq _02257250 - add r0, r8, #1 - bl DWCi_GsMalloc - str r0, [sb, #0x10] - cmp r0, #0 - beq _02257258 - mov r1, r5 - mov r2, r8 - bl memcpy - ldr r0, [sb, #0x10] - mov r1, #0 - strb r1, [r0, r8] - b _02257258 -_02257250: - mov r0, #0 - str r0, [sb, #0x10] -_02257258: - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ; .align 2, 0 -_02257260: .word Unk_ov66_0225B4FC -_02257264: .word Unk_ov66_0225B158 -_02257268: .word Unk_ov66_0225B048 -_0225726C: .word 0x00000232 - arm_func_end ciParseUser - - arm_func_start ciAddParam -ciAddParam: ; 0x02257270 - stmfd sp!, {r4, r5, r6, lr} - mov r5, r1 - ldr r1, [r5, #0x24] - mov r6, r0 - add r1, r1, #1 - ldr r0, [r5, #0x20] - mov r1, r1, lsl #2 - bl DWCi_GsRealloc - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - str r0, [r5, #0x20] - mov r0, r6 - bl strlen - add r0, r0, #1 - bl DWCi_GsMalloc - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r1, r6 - bl strcpy - ldr r2, [r5, #0x24] - mov r0, #1 - add r1, r2, #1 - str r1, [r5, #0x24] - ldr r1, [r5, #0x20] - str r4, [r1, r2, lsl #2] - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ciAddParam - - arm_func_start ciParseParam -ciParseParam: ; 0x022572E0 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - movs r6, r0 - mov r5, r1 - bne _02257304 - ldr r0, _02257404 ; =0x0225B500 - ldr r1, _02257408 ; =0x0225B158 - ldr r2, _0225740C ; =0x0225B084 - ldr r3, _02257410 ; =0x000002A1 - bl __msl_assertion_failed -_02257304: - cmp r5, #0 - bne _02257320 - ldr r0, _02257414 ; =0x0225B510 - ldr r1, _02257408 ; =0x0225B158 - ldr r2, _0225740C ; =0x0225B084 - ldr r3, _02257418 ; =0x000002A2 - bl __msl_assertion_failed -_02257320: - mov r0, r6 - bl strlen - add r0, r0, #1 - bl DWCi_GsMalloc - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r1, r6 - bl strcpy - ldrsb r0, [r4] - cmp r0, #0x3a - bne _02257360 - mov r0, #0 - strb r0, [r4] - add r8, r4, #1 - b _02257378 -_02257360: - ldr r1, _0225741C ; =0x0225B520 - mov r0, r4 - bl strstr - movs r8, r0 - movne r0, #0 - strneb r0, [r8], #2 -_02257378: - ldr r1, _02257420 ; =0x0225B524 - mov r0, r4 - bl strtok - cmp r0, #0 - beq _022573C8 - ldr r6, _02257420 ; =0x0225B524 - mov r7, #0 -_02257394: - mov r1, r5 - bl ciAddParam - cmp r0, #0 - bne _022573B4 - mov r0, r4 - bl DWCi_GsFree - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022573B4: - mov r0, r7 - mov r1, r6 - bl strtok - cmp r0, #0 - bne _02257394 -_022573C8: - cmp r8, #0 - beq _022573F4 - mov r0, r8 - mov r1, r5 - bl ciAddParam - cmp r0, #0 - bne _022573F4 - mov r0, r4 - bl DWCi_GsFree - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022573F4: - mov r0, r4 - bl DWCi_GsFree - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_02257404: .word Unk_ov66_0225B500 -_02257408: .word Unk_ov66_0225B158 -_0225740C: .word Unk_ov66_0225B084 -_02257410: .word 0x000002A1 -_02257414: .word Unk_ov66_0225B510 -_02257418: .word 0x000002A2 -_0225741C: .word Unk_ov66_0225B520 -_02257420: .word Unk_ov66_0225B524 - arm_func_end ciParseParam - - arm_func_start ciParseMessage -ciParseMessage: ; 0x02257424 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - movs sb, r1 - mov sl, r0 - ldrnesb r0, [sb] - mov r5, #0 - mov r6, r5 - mov r7, r5 - mov r8, r5 - cmpne r0, #0 - bne _02257468 - ldr r0, _02257858 ; =0x0225B4FC - ldr r1, _0225785C ; =0x0225B158 - ldr r2, _02257860 ; =0x0225B0C4 - mov r3, #0x2e4 - bl __msl_assertion_failed - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_02257468: - mov r0, sb - bl strlen - mov r4, r0 - add r0, r4, #1 - bl DWCi_GsMalloc - str r0, [sl, #0x328] - cmp r0, #0 - moveq r0, r5 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - mov r1, sb - mov r2, r4 - bl memcpy - ldr r0, [sl, #0x328] - mov r1, r5 - strb r1, [r0, r4] - b _022574AC -_022574A8: - add sb, sb, #1 -_022574AC: - ldrsb r0, [sb] - cmp r0, #0xa - cmpne r0, #0xd - beq _022574A8 - cmp r0, #0x3a - bne _022574F4 - add sb, sb, #1 - str sb, [sl, #0x32c] - ldrsb r0, [sb] - cmp r0, #0 - beq _022574F4 - b _022574E4 -_022574DC: - add r5, r5, #1 - add sb, sb, #1 -_022574E4: - ldrsb r0, [sb] - cmp r0, #0x20 - cmpne r0, #0 - bne _022574DC -_022574F4: - cmp r0, #0x20 - bne _02257508 -_022574FC: - ldrsb r0, [sb, #1]! - cmp r0, #0x20 - beq _022574FC -_02257508: - cmp r0, #0 - beq _02257530 - str sb, [sl, #0x33c] - b _02257520 -_02257518: - add r6, r6, #1 - add sb, sb, #1 -_02257520: - ldrsb r0, [sb] - cmp r0, #0x20 - cmpne r0, #0 - bne _02257518 -_02257530: - cmp r0, #0x20 - bne _02257544 -_02257538: - ldrsb r0, [sb, #1]! - cmp r0, #0x20 - beq _02257538 -_02257544: - cmp r0, #0x3a - cmpne r0, #0 - beq _02257570 - str sb, [sl, #0x340] - b _02257560 -_02257558: - add r7, r7, #1 - add sb, sb, #1 -_02257560: - ldrsb r0, [sb] - cmp r0, #0x20 - cmpne r0, #0 - bne _02257558 -_02257570: - cmp r0, #0x20 - bne _02257584 -_02257578: - ldrsb r0, [sb, #1]! - cmp r0, #0x20 - beq _02257578 -_02257584: - cmp r0, #0 - strne sb, [sl, #0x344] - ldrnesb r0, [sb] - cmpne r0, #0 - beq _022575A8 -_02257598: - ldrsb r0, [sb, #1]! - add r8, r8, #1 - cmp r0, #0 - bne _02257598 -_022575A8: - cmp r5, #0 - beq _0225762C - ldr r4, [sl, #0x32c] - add r0, r5, #1 - bl DWCi_GsMalloc - str r0, [sl, #0x32c] - cmp r0, #0 - beq _022575E0 - mov r1, r4 - mov r2, r5 - bl memcpy - ldr r0, [sl, #0x32c] - mov r1, #0 - strb r1, [r0, r5] -_022575E0: - ldr r0, [sl, #0x32c] - add r1, sl, #0x328 - bl ciParseUser - cmp r0, #0 - bne _02257640 - ldr r0, [sl, #0x328] - cmp r0, #0 - beq _0225760C - bl DWCi_GsFree - mov r0, #0 - str r0, [sl, #0x328] -_0225760C: - ldr r0, [sl, #0x32c] - cmp r0, #0 - beq _02257624 - bl DWCi_GsFree - mov r0, #0 - str r0, [sl, #0x32c] -_02257624: - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_0225762C: - mov r0, #0 - str r0, [sl, #0x32c] - str r0, [sl, #0x330] - str r0, [sl, #0x334] - str r0, [sl, #0x338] -_02257640: - cmp r7, #0 - beq _022576DC - ldr r0, [sl, #0x340] - add r1, sl, #0x328 - bl ciParseParam - cmp r0, #0 - bne _02257784 - ldr r0, [sl, #0x328] - cmp r0, #0 - beq _02257674 - bl DWCi_GsFree - mov r0, #0 - str r0, [sl, #0x328] -_02257674: - ldr r0, [sl, #0x32c] - cmp r0, #0 - beq _0225768C - bl DWCi_GsFree - mov r0, #0 - str r0, [sl, #0x32c] -_0225768C: - ldr r0, [sl, #0x330] - cmp r0, #0 - beq _022576A4 - bl DWCi_GsFree - mov r0, #0 - str r0, [sl, #0x330] -_022576A4: - ldr r0, [sl, #0x334] - cmp r0, #0 - beq _022576BC - bl DWCi_GsFree - mov r0, #0 - str r0, [sl, #0x334] -_022576BC: - ldr r0, [sl, #0x338] - cmp r0, #0 - beq _022576D4 - bl DWCi_GsFree - mov r0, #0 - str r0, [sl, #0x338] -_022576D4: - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022576DC: - cmp r8, #0 - beq _02257778 - ldr r0, [sl, #0x344] - add r1, sl, #0x328 - bl ciParseParam - cmp r0, #0 - bne _02257784 - ldr r0, [sl, #0x328] - cmp r0, #0 - beq _02257710 - bl DWCi_GsFree - mov r0, #0 - str r0, [sl, #0x328] -_02257710: - ldr r0, [sl, #0x32c] - cmp r0, #0 - beq _02257728 - bl DWCi_GsFree - mov r0, #0 - str r0, [sl, #0x32c] -_02257728: - ldr r0, [sl, #0x330] - cmp r0, #0 - beq _02257740 - bl DWCi_GsFree - mov r0, #0 - str r0, [sl, #0x330] -_02257740: - ldr r0, [sl, #0x334] - cmp r0, #0 - beq _02257758 - bl DWCi_GsFree - mov r0, #0 - str r0, [sl, #0x334] -_02257758: - ldr r0, [sl, #0x338] - cmp r0, #0 - beq _02257770 - bl DWCi_GsFree - mov r0, #0 - str r0, [sl, #0x338] -_02257770: - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_02257778: - mov r0, #0 - str r0, [sl, #0x348] - str r0, [sl, #0x34c] -_02257784: - cmp r8, #0 - beq _022577C0 - ldr r4, [sl, #0x344] - add r0, r8, #1 - bl DWCi_GsMalloc - str r0, [sl, #0x344] - cmp r0, #0 - beq _022577C8 - mov r1, r4 - mov r2, r8 - bl memcpy - ldr r0, [sl, #0x344] - mov r1, #0 - strb r1, [r0, r8] - b _022577C8 -_022577C0: - mov r0, #0 - str r0, [sl, #0x344] -_022577C8: - cmp r6, #0 - beq _02257804 - ldr r4, [sl, #0x33c] - add r0, r6, #1 - bl DWCi_GsMalloc - str r0, [sl, #0x33c] - cmp r0, #0 - beq _0225780C - mov r1, r4 - mov r2, r6 - bl memcpy - ldr r0, [sl, #0x33c] - mov r1, #0 - strb r1, [r0, r6] - b _0225780C -_02257804: - mov r0, #0 - str r0, [sl, #0x33c] -_0225780C: - cmp r7, #0 - beq _02257848 - ldr r4, [sl, #0x340] - add r0, r7, #1 - bl DWCi_GsMalloc - str r0, [sl, #0x340] - cmp r0, #0 - beq _02257850 - mov r1, r4 - mov r2, r7 - bl memcpy - ldr r0, [sl, #0x340] - mov r1, #0 - strb r1, [r0, r7] - b _02257850 -_02257848: - mov r0, #0 - str r0, [sl, #0x340] -_02257850: - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ; .align 2, 0 -_02257858: .word Unk_ov66_0225B4FC -_0225785C: .word Unk_ov66_0225B158 -_02257860: .word Unk_ov66_0225B0C4 - arm_func_end ciParseMessage - - arm_func_start ciParseInput -ciParseInput: ; 0x02257864 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov sl, r0 - ldr r5, [sl, #0x108] - ldrsb r0, [r5] - cmp r0, #0 - beq _02257A50 - b _02257884 -_02257880: - add r5, r5, #1 -_02257884: - ldrsb r0, [r5] - cmp r0, #0xd - cmpne r0, #0xa - beq _02257880 - cmp r0, #0 - beq _02257A50 - mov r6, r5 - mov r7, r5 - b _022578B4 -_022578A8: - cmp r0, #0x20 - movne r7, r6 - add r6, r6, #1 -_022578B4: - ldrsb r0, [r6] - cmp r0, #0xa - cmpne r0, #0xd - cmpne r0, #0 - bne _022578A8 - cmp r0, #0 - beq _02257A50 - ldrsb r8, [r7, #1] - mov r0, #0 - strb r0, [r7, #1] - ldr r0, [sl, #0x328] - cmp r0, #0 - beq _022578F4 - bl DWCi_GsFree - mov r0, #0 - str r0, [sl, #0x328] -_022578F4: - ldr r0, [sl, #0x32c] - cmp r0, #0 - beq _0225790C - bl DWCi_GsFree - mov r0, #0 - str r0, [sl, #0x32c] -_0225790C: - ldr r0, [sl, #0x330] - cmp r0, #0 - beq _02257924 - bl DWCi_GsFree - mov r0, #0 - str r0, [sl, #0x330] -_02257924: - ldr r0, [sl, #0x334] - cmp r0, #0 - beq _0225793C - bl DWCi_GsFree - mov r0, #0 - str r0, [sl, #0x334] -_0225793C: - ldr r0, [sl, #0x338] - cmp r0, #0 - beq _02257954 - bl DWCi_GsFree - mov r0, #0 - str r0, [sl, #0x338] -_02257954: - ldr r0, [sl, #0x33c] - cmp r0, #0 - beq _0225796C - bl DWCi_GsFree - mov r0, #0 - str r0, [sl, #0x33c] -_0225796C: - ldr r0, [sl, #0x340] - cmp r0, #0 - beq _02257984 - bl DWCi_GsFree - mov r0, #0 - str r0, [sl, #0x340] -_02257984: - ldr r0, [sl, #0x344] - cmp r0, #0 - beq _0225799C - bl DWCi_GsFree - mov r0, #0 - str r0, [sl, #0x344] -_0225799C: - ldr r0, [sl, #0x34c] - mov sb, #0 - cmp r0, #0 - ble _022579DC - mov r4, sb -_022579B0: - ldr r0, [sl, #0x348] - ldr r0, [r0, sb, lsl #2] - cmp r0, #0 - beq _022579CC - bl DWCi_GsFree - ldr r0, [sl, #0x348] - str r4, [r0, sb, lsl #2] -_022579CC: - ldr r0, [sl, #0x34c] - add sb, sb, #1 - cmp sb, r0 - blt _022579B0 -_022579DC: - ldr r0, [sl, #0x348] - cmp r0, #0 - beq _022579F4 - bl DWCi_GsFree - mov r0, #0 - str r0, [sl, #0x348] -_022579F4: - mov r1, #0 - add r0, sl, #0x328 - mov r2, #0x28 - str r1, [sl, #0x34c] - bl memset - mov r0, sl - mov r1, r5 - bl ciParseMessage - cmp r0, #0 - bne _02257A34 - add r0, sl, #0x328 - mov r1, #0 - mov r2, #0x28 - bl memset - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_02257A34: - strb r8, [r7, #1] - ldr r1, [sl, #0x108] - add r0, sl, #0x108 - sub r1, r6, r1 - bl ciBufferClipFront - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_02257A50: - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - arm_func_end ciParseInput - - arm_func_start ciSocketRecv -ciSocketRecv: ; 0x02257A58 - stmfd sp!, {r4, lr} - movs r4, r0 - bne _02257A78 - ldr r0, _02257C10 ; =0x0225B234 - ldr r1, _02257C14 ; =0x0225B158 - ldr r2, _02257C18 ; =0x0225B064 - ldr r3, _02257C1C ; =0x000003E9 - bl __msl_assertion_failed -_02257A78: - ldr r0, [r4, #4] - cmp r0, #2 - bls _02257A98 - ldr r0, _02257C20 ; =0x0225B244 - ldr r1, _02257C14 ; =0x0225B158 - ldr r2, _02257C18 ; =0x0225B064 - ldr r3, _02257C1C ; =0x000003E9 - bl __msl_assertion_failed -_02257A98: - adds r0, r4, #0x108 - bne _02257AB4 - ldr r0, _02257C24 ; =0x0225B2C4 - ldr r1, _02257C14 ; =0x0225B158 - ldr r2, _02257C18 ; =0x0225B064 - ldr r3, _02257C1C ; =0x000003E9 - bl __msl_assertion_failed -_02257AB4: - ldr r0, [r4, #0x110] - cmp r0, #0 - bge _02257AD4 - ldr r0, _02257C28 ; =0x0225B2E4 - ldr r1, _02257C14 ; =0x0225B158 - ldr r2, _02257C18 ; =0x0225B064 - ldr r3, _02257C1C ; =0x000003E9 - bl __msl_assertion_failed -_02257AD4: - ldr r0, [r4, #0x110] - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #19 - adds r0, r1, r0, ror #19 - beq _02257AFC - ldr r0, _02257C2C ; =0x0225B308 - ldr r1, _02257C14 ; =0x0225B158 - ldr r2, _02257C18 ; =0x0225B064 - ldr r3, _02257C1C ; =0x000003E9 - bl __msl_assertion_failed -_02257AFC: - ldr r0, [r4, #0x10c] - cmp r0, #0 - bge _02257B1C - ldr r0, _02257C30 ; =0x0225B338 - ldr r1, _02257C14 ; =0x0225B158 - ldr r2, _02257C18 ; =0x0225B064 - ldr r3, _02257C1C ; =0x000003E9 - bl __msl_assertion_failed -_02257B1C: - ldr r1, [r4, #0x10c] - ldr r0, [r4, #0x110] - cmp r1, r0 - ble _02257B40 - ldr r0, _02257C34 ; =0x0225B35C - ldr r1, _02257C14 ; =0x0225B158 - ldr r2, _02257C18 ; =0x0225B064 - ldr r3, _02257C1C ; =0x000003E9 - bl __msl_assertion_failed -_02257B40: - adds r0, r4, #0x114 - bne _02257B5C - ldr r0, _02257C38 ; =0x0225B39C - ldr r1, _02257C14 ; =0x0225B158 - ldr r2, _02257C18 ; =0x0225B064 - ldr r3, _02257C1C ; =0x000003E9 - bl __msl_assertion_failed -_02257B5C: - ldr r0, [r4, #0x11c] - cmp r0, #0 - bge _02257B7C - ldr r0, _02257C3C ; =0x0225B3BC - ldr r1, _02257C14 ; =0x0225B158 - ldr r2, _02257C18 ; =0x0225B064 - ldr r3, _02257C1C ; =0x000003E9 - bl __msl_assertion_failed -_02257B7C: - ldr r0, [r4, #0x11c] - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #19 - adds r0, r1, r0, ror #19 - beq _02257BA4 - ldr r0, _02257C40 ; =0x0225B3E0 - ldr r1, _02257C14 ; =0x0225B158 - ldr r2, _02257C18 ; =0x0225B064 - ldr r3, _02257C1C ; =0x000003E9 - bl __msl_assertion_failed -_02257BA4: - ldr r0, [r4, #0x118] - cmp r0, #0 - bge _02257BC4 - ldr r0, _02257C44 ; =0x0225B414 - ldr r1, _02257C14 ; =0x0225B158 - ldr r2, _02257C18 ; =0x0225B064 - ldr r3, _02257C1C ; =0x000003E9 - bl __msl_assertion_failed -_02257BC4: - ldr r1, [r4, #0x118] - ldr r0, [r4, #0x11c] - cmp r1, r0 - ble _02257BE8 - ldr r0, _02257C48 ; =0x0225B438 - ldr r1, _02257C14 ; =0x0225B158 - ldr r2, _02257C18 ; =0x0225B064 - ldr r3, _02257C1C ; =0x000003E9 - bl __msl_assertion_failed -_02257BE8: - ldr r0, [r4, #0x10c] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - mov r0, r4 - bl ciParseInput - cmp r0, #0 - addne r0, r4, #0x328 - moveq r0, #0 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02257C10: .word Unk_ov66_0225B234 -_02257C14: .word Unk_ov66_0225B158 -_02257C18: .word Unk_ov66_0225B064 -_02257C1C: .word 0x000003E9 -_02257C20: .word Unk_ov66_0225B244 -_02257C24: .word Unk_ov66_0225B2C4 -_02257C28: .word Unk_ov66_0225B2E4 -_02257C2C: .word Unk_ov66_0225B308 -_02257C30: .word Unk_ov66_0225B338 -_02257C34: .word Unk_ov66_0225B35C -_02257C38: .word Unk_ov66_0225B39C -_02257C3C: .word Unk_ov66_0225B3BC -_02257C40: .word Unk_ov66_0225B3E0 -_02257C44: .word Unk_ov66_0225B414 -_02257C48: .word Unk_ov66_0225B438 - arm_func_end ciSocketRecv - .data - - - .global Unk_ov66_0225B048 -Unk_ov66_0225B048: ; 0x0225B048 - .incbin "incbin/overlay66_data.bin", 0x2328, 0x2334 - 0x2328 - - .global Unk_ov66_0225B054 -Unk_ov66_0225B054: ; 0x0225B054 - .incbin "incbin/overlay66_data.bin", 0x2334, 0x2344 - 0x2334 - - .global Unk_ov66_0225B064 -Unk_ov66_0225B064: ; 0x0225B064 - .incbin "incbin/overlay66_data.bin", 0x2344, 0x2354 - 0x2344 - - .global Unk_ov66_0225B074 -Unk_ov66_0225B074: ; 0x0225B074 - .incbin "incbin/overlay66_data.bin", 0x2354, 0x2364 - 0x2354 - - .global Unk_ov66_0225B084 -Unk_ov66_0225B084: ; 0x0225B084 - .incbin "incbin/overlay66_data.bin", 0x2364, 0x2374 - 0x2364 - - .global Unk_ov66_0225B094 -Unk_ov66_0225B094: ; 0x0225B094 - .incbin "incbin/overlay66_data.bin", 0x2374, 0x2384 - 0x2374 - - .global Unk_ov66_0225B0A4 -Unk_ov66_0225B0A4: ; 0x0225B0A4 - .incbin "incbin/overlay66_data.bin", 0x2384, 0x2394 - 0x2384 - - .global Unk_ov66_0225B0B4 -Unk_ov66_0225B0B4: ; 0x0225B0B4 - .incbin "incbin/overlay66_data.bin", 0x2394, 0x23A4 - 0x2394 - - .global Unk_ov66_0225B0C4 -Unk_ov66_0225B0C4: ; 0x0225B0C4 - .incbin "incbin/overlay66_data.bin", 0x23A4, 0x23B4 - 0x23A4 - - .global Unk_ov66_0225B0D4 -Unk_ov66_0225B0D4: ; 0x0225B0D4 - .incbin "incbin/overlay66_data.bin", 0x23B4, 0x23C4 - 0x23B4 - - .global Unk_ov66_0225B0E4 -Unk_ov66_0225B0E4: ; 0x0225B0E4 - .incbin "incbin/overlay66_data.bin", 0x23C4, 0x23D8 - 0x23C4 - - .global Unk_ov66_0225B0F8 -Unk_ov66_0225B0F8: ; 0x0225B0F8 - .incbin "incbin/overlay66_data.bin", 0x23D8, 0x23EC - 0x23D8 - - .global Unk_ov66_0225B10C -Unk_ov66_0225B10C: ; 0x0225B10C - .incbin "incbin/overlay66_data.bin", 0x23EC, 0x2400 - 0x23EC - - .global Unk_ov66_0225B120 -Unk_ov66_0225B120: ; 0x0225B120 - .incbin "incbin/overlay66_data.bin", 0x2400, 0x2414 - 0x2400 - - .global Unk_ov66_0225B134 -Unk_ov66_0225B134: ; 0x0225B134 - .incbin "incbin/overlay66_data.bin", 0x2414, 0x2428 - 0x2414 - - .global Unk_ov66_0225B148 -Unk_ov66_0225B148: ; 0x0225B148 - .incbin "incbin/overlay66_data.bin", 0x2428, 0x2438 - 0x2428 - - .global Unk_ov66_0225B158 -Unk_ov66_0225B158: ; 0x0225B158 - .incbin "incbin/overlay66_data.bin", 0x2438, 0x2448 - 0x2438 - - .global Unk_ov66_0225B168 -Unk_ov66_0225B168: ; 0x0225B168 - .incbin "incbin/overlay66_data.bin", 0x2448, 0x245C - 0x2448 - - .global Unk_ov66_0225B17C -Unk_ov66_0225B17C: ; 0x0225B17C - .incbin "incbin/overlay66_data.bin", 0x245C, 0x2470 - 0x245C - - .global Unk_ov66_0225B190 -Unk_ov66_0225B190: ; 0x0225B190 - .incbin "incbin/overlay66_data.bin", 0x2470, 0x2494 - 0x2470 - - .global Unk_ov66_0225B1B4 -Unk_ov66_0225B1B4: ; 0x0225B1B4 - .incbin "incbin/overlay66_data.bin", 0x2494, 0x24AC - 0x2494 - - .global Unk_ov66_0225B1CC -Unk_ov66_0225B1CC: ; 0x0225B1CC - .incbin "incbin/overlay66_data.bin", 0x24AC, 0x24D0 - 0x24AC - - .global Unk_ov66_0225B1F0 -Unk_ov66_0225B1F0: ; 0x0225B1F0 - .incbin "incbin/overlay66_data.bin", 0x24D0, 0x24DC - 0x24D0 - - .global Unk_ov66_0225B1FC -Unk_ov66_0225B1FC: ; 0x0225B1FC - .incbin "incbin/overlay66_data.bin", 0x24DC, 0x24EC - 0x24DC - - .global Unk_ov66_0225B20C -Unk_ov66_0225B20C: ; 0x0225B20C - .incbin "incbin/overlay66_data.bin", 0x24EC, 0x2504 - 0x24EC - - .global Unk_ov66_0225B224 -Unk_ov66_0225B224: ; 0x0225B224 - .incbin "incbin/overlay66_data.bin", 0x2504, 0x2514 - 0x2504 - - .global Unk_ov66_0225B234 -Unk_ov66_0225B234: ; 0x0225B234 - .incbin "incbin/overlay66_data.bin", 0x2514, 0x2524 - 0x2514 - - .global Unk_ov66_0225B244 -Unk_ov66_0225B244: ; 0x0225B244 - .incbin "incbin/overlay66_data.bin", 0x2524, 0x25A4 - 0x2524 - - .global Unk_ov66_0225B2C4 -Unk_ov66_0225B2C4: ; 0x0225B2C4 - .incbin "incbin/overlay66_data.bin", 0x25A4, 0x25C4 - 0x25A4 - - .global Unk_ov66_0225B2E4 -Unk_ov66_0225B2E4: ; 0x0225B2E4 - .incbin "incbin/overlay66_data.bin", 0x25C4, 0x25E8 - 0x25C4 - - .global Unk_ov66_0225B308 -Unk_ov66_0225B308: ; 0x0225B308 - .incbin "incbin/overlay66_data.bin", 0x25E8, 0x2618 - 0x25E8 - - .global Unk_ov66_0225B338 -Unk_ov66_0225B338: ; 0x0225B338 - .incbin "incbin/overlay66_data.bin", 0x2618, 0x263C - 0x2618 - - .global Unk_ov66_0225B35C -Unk_ov66_0225B35C: ; 0x0225B35C - .incbin "incbin/overlay66_data.bin", 0x263C, 0x267C - 0x263C - - .global Unk_ov66_0225B39C -Unk_ov66_0225B39C: ; 0x0225B39C - .incbin "incbin/overlay66_data.bin", 0x267C, 0x269C - 0x267C - - .global Unk_ov66_0225B3BC -Unk_ov66_0225B3BC: ; 0x0225B3BC - .incbin "incbin/overlay66_data.bin", 0x269C, 0x26C0 - 0x269C - - .global Unk_ov66_0225B3E0 -Unk_ov66_0225B3E0: ; 0x0225B3E0 - .incbin "incbin/overlay66_data.bin", 0x26C0, 0x26F4 - 0x26C0 - - .global Unk_ov66_0225B414 -Unk_ov66_0225B414: ; 0x0225B414 - .incbin "incbin/overlay66_data.bin", 0x26F4, 0x2718 - 0x26F4 - - .global Unk_ov66_0225B438 -Unk_ov66_0225B438: ; 0x0225B438 - .incbin "incbin/overlay66_data.bin", 0x2718, 0x2758 - 0x2718 - - .global Unk_ov66_0225B478 -Unk_ov66_0225B478: ; 0x0225B478 - .incbin "incbin/overlay66_data.bin", 0x2758, 0x2770 - 0x2758 - - .global Unk_ov66_0225B490 -Unk_ov66_0225B490: ; 0x0225B490 - .incbin "incbin/overlay66_data.bin", 0x2770, 0x277C - 0x2770 - - .global Unk_ov66_0225B49C -Unk_ov66_0225B49C: ; 0x0225B49C - .incbin "incbin/overlay66_data.bin", 0x277C, 0x2790 - 0x277C - - .global Unk_ov66_0225B4B0 -Unk_ov66_0225B4B0: ; 0x0225B4B0 - .incbin "incbin/overlay66_data.bin", 0x2790, 0x27B8 - 0x2790 - - .global Unk_ov66_0225B4D8 -Unk_ov66_0225B4D8: ; 0x0225B4D8 - .incbin "incbin/overlay66_data.bin", 0x27B8, 0x27DC - 0x27B8 - - .global Unk_ov66_0225B4FC -Unk_ov66_0225B4FC: ; 0x0225B4FC - .incbin "incbin/overlay66_data.bin", 0x27DC, 0x27E0 - 0x27DC - - .global Unk_ov66_0225B500 -Unk_ov66_0225B500: ; 0x0225B500 - .incbin "incbin/overlay66_data.bin", 0x27E0, 0x27F0 - 0x27E0 - - .global Unk_ov66_0225B510 -Unk_ov66_0225B510: ; 0x0225B510 - .incbin "incbin/overlay66_data.bin", 0x27F0, 0x2800 - 0x27F0 - - .global Unk_ov66_0225B520 -Unk_ov66_0225B520: ; 0x0225B520 - .incbin "incbin/overlay66_data.bin", 0x2800, 0x2804 - 0x2800 - - .global Unk_ov66_0225B524 -Unk_ov66_0225B524: ; 0x0225B524 - .incbin "incbin/overlay66_data.bin", 0x2804, 0x2 - - - .bss - - - .global Unk_ov66_0225B6F8 -Unk_ov66_0225B6F8: ; 0x0225B6F8 - .space 0x1000 - diff --git a/subprojects/gamespy/libraries/chat/asm/incbin/overlay66_data.bin b/subprojects/gamespy/libraries/chat/asm/incbin/overlay66_data.bin deleted file mode 100644 index e7f8aa81e8..0000000000 Binary files a/subprojects/gamespy/libraries/chat/asm/incbin/overlay66_data.bin and /dev/null differ diff --git a/subprojects/gamespy/libraries/chat/asm/include/chatcallbacks.inc b/subprojects/gamespy/libraries/chat/asm/include/chatcallbacks.inc deleted file mode 100644 index edd9ea9923..0000000000 --- a/subprojects/gamespy/libraries/chat/asm/include/chatcallbacks.inc +++ /dev/null @@ -1,19 +0,0 @@ -.public __msl_assertion_failed -.public memcpy -.public strlen -.public DWCi_GsMalloc -.public DWCi_GsFree -.public ArrayNew -.public ArrayFree -.public ArrayLength -.public ArrayNth -.public ArrayAppend -.public ArrayDeleteAt -.public goastrdup -.public ciCallbacksArrayElementFreeFn -.public ciFreeCallbackData -.public ciCallCallback -.public ciGetCallbackIndexByID -.public ciInChannel -.public ciJoinCallbackCalled -.public ciWasJoinCallbackCalled diff --git a/subprojects/gamespy/libraries/chat/asm/include/chatchannel.inc b/subprojects/gamespy/libraries/chat/asm/include/chatchannel.inc deleted file mode 100644 index 28dea7d9d8..0000000000 --- a/subprojects/gamespy/libraries/chat/asm/include/chatchannel.inc +++ /dev/null @@ -1,38 +0,0 @@ -.public __msl_assertion_failed -.public memcpy -.public strlen -.public strncpy -.public strcasecmp -.public _s32_div_f -.public DWCi_GsMalloc -.public DWCi_GsRealloc -.public DWCi_GsFree -.public ArrayNew -.public ArrayFree -.public ArrayLength -.public ArrayNth -.public ArrayAppend -.public ArrayRemoveAt -.public ArraySearch -.public TableNew2 -.public TableFree -.public TableCount -.public TableEnter -.public TableRemove -.public TableLookup -.public TableMap -.public ciAddCallback_ -.public ciHashString -.public ciGetChannel -.public ciChannelTableHashFn -.public ciChannelTableCompareFn -.public ciChannelTableElementFreeFn -.public ciUserTableHashFn -.public ciUserTableCompareFn -.public ciUserTableElementFreeFn -.public ciEnteringChannelComparator -.public ciChannelListUsersMap -.public ciWasJoinCallbackCalled -.public ciUserEnumChannelsMap -.public ciUserChangeNickMap -.public ciSetUserBasicInfoMap diff --git a/subprojects/gamespy/libraries/chat/asm/include/chatcrypt.inc b/subprojects/gamespy/libraries/chat/asm/include/chatcrypt.inc deleted file mode 100644 index 3eaa2badd3..0000000000 --- a/subprojects/gamespy/libraries/chat/asm/include/chatcrypt.inc +++ /dev/null @@ -1 +0,0 @@ -.public _s32_div_f diff --git a/subprojects/gamespy/libraries/chat/asm/include/chathandlers.inc b/subprojects/gamespy/libraries/chat/asm/include/chathandlers.inc deleted file mode 100644 index 58d76dfc33..0000000000 --- a/subprojects/gamespy/libraries/chat/asm/include/chathandlers.inc +++ /dev/null @@ -1,56 +0,0 @@ -.public __msl_assertion_failed -.public memcpy -.public memset -.public strlen -.public strncpy -.public strcmp -.public strchr -.public strtok -.public strstr -.public atoi -.public strcasecmp -.public DWCi_GsMalloc -.public DWCi_GsRealloc -.public DWCi_GsFree -.public current_time -.public goastrdup -.public inet_addr -.public ciAddCallback_ -.public ciIsEnteringChannel -.public ciChannelEntered -.public ciChannelLeft -.public ciGetChannelCallbacks -.public ciInChannel -.public ciGetChannelMode -.public ciSetChannelMode -.public ciSetChannelPassword -.public ciJoinCallbackCalled -.public ciWasJoinCallbackCalled -.public ciSetChannelTopic -.public ciUserEnteredChannel -.public ciUserLeftChannel -.public ciUserEnumChannels -.public ciUserChangedNick -.public ciUserChangedMode -.public ciSetUserBasicInfo -.public gs_prepare_key -.public gs_xcode_buf -.public ciFindFilter -.public ciFindGetKeyFilter -.public ciDestroyFilter -.public ciRemoveFilter -.public ciFinishFilter -.public ciFilterTimedout -.public ciGetNextID -.public ciAddFilter -.public ciParseMode -.public ciApplyChangesToMode -.public ciQuitEnumChannelsCallback -.public ciKillEnumChannelsCallback -.public ciParseValue -.public ciHandleDisconnect -.public ciSendNickAndUser -.public ciSendLogin -.public ciNickError -.public ciSocketSend -.public ciSocketSendf diff --git a/subprojects/gamespy/libraries/chat/asm/include/chatmain.inc b/subprojects/gamespy/libraries/chat/asm/include/chatmain.inc deleted file mode 100644 index ad4e156ad9..0000000000 --- a/subprojects/gamespy/libraries/chat/asm/include/chatmain.inc +++ /dev/null @@ -1,60 +0,0 @@ -.public __msl_assertion_failed -.public memcpy -.public memset -.public sprintf -.public strlen -.public strncpy -.public strcmp -.public strchr -.public strcasecmp -.public DWCi_GsMalloc -.public DWCi_GsFree -.public MD5Digest -.public msleep -.public SocketStartUp -.public SocketShutDown -.public ciInitCallbacks -.public ciCleanupCallbacks -.public ciAddCallback_ -.public ciCallCallbacks -.public ciCheckCallbacksForID -.public ciInitChannels -.public ciCleanupChannels -.public ciChannelEntering -.public ciChannelLeft -.public ciGetChannelCallbacks -.public ciChannelListUsers -.public ciInChannel -.public ciGetChannelMode -.public ciGetChannelNumUsers -.public ciFilterThink -.public ciGetNextID -.public ciCheckFiltersForID -.public ciCleanupFilters -.public ciAddLISTFilter -.public ciAddJOINFilter -.public ciAddNAMESFilter -.public ciAddCMODEFilter -.public ciAddGETCKEYFilter -.public ciAddGETCHANKEYFilter -.public ciProcessServerMessage -.public ciCheckForID -.public ciHandleDisconnect -.public ciThink -.public ciSendNick -.public ciSendUser -.public ciSendNickAndUser -.public chatConnectDoit -.public chatDisconnect -.public ciEnumUsersCallback -.public ciRandomCookie -.public ciSendGetChannelKey -.public ciNickIsValid -.public ciNickError -.public ciSocketInit -.public ciSocketConnect -.public ciSocketDisconnect -.public ciSocketThink -.public ciSocketSend -.public ciSocketSendf -.public ciSocketRecv diff --git a/subprojects/gamespy/libraries/chat/asm/include/chatsocket.inc b/subprojects/gamespy/libraries/chat/asm/include/chatsocket.inc deleted file mode 100644 index 9ca467745d..0000000000 --- a/subprojects/gamespy/libraries/chat/asm/include/chatsocket.inc +++ /dev/null @@ -1,36 +0,0 @@ -.public __msl_assertion_failed -.public memcpy -.public memmove -.public memset -.public vsprintf -.public strlen -.public strcpy -.public strncpy -.public strtok -.public strstr -.public DWCi_GsMalloc -.public DWCi_GsRealloc -.public DWCi_GsFree -.public GSISocketSelect -.public socket -.public closesocket -.public shutdown -.public connect -.public recv -.public send -.public inet_addr -.public SOC_GetHostByName -.public gs_crypt -.public ciBufferInit -.public ciBufferFree -.public ciBufferPreAppend -.public ciBufferClipFront -.public ciSocketSelect -.public ciSocketThinkSend -.public ciSocketThinkRecv -.public ciSocketSend -.public ciParseUser -.public ciAddParam -.public ciParseParam -.public ciParseMessage -.public ciParseInput diff --git a/subprojects/gamespy/libraries/chat/asm/macros/function.inc b/subprojects/gamespy/libraries/chat/asm/macros/function.inc deleted file mode 100644 index f71cc4ccae..0000000000 --- a/subprojects/gamespy/libraries/chat/asm/macros/function.inc +++ /dev/null @@ -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 \ No newline at end of file diff --git a/subprojects/gamespy/libraries/chat/meson.build b/subprojects/gamespy/libraries/chat/meson.build deleted file mode 100644 index 9648b9596c..0000000000 --- a/subprojects/gamespy/libraries/chat/meson.build +++ /dev/null @@ -1,17 +0,0 @@ -libdwcgschat_srcs = files( - 'asm/chatcallbacks.s', - 'asm/chatchannel.s', - 'asm/chatcrypt.s', - 'asm/chathandlers.s', - 'asm/chatmain.s', - 'asm/chatsocket.s' -) - -libdwcgschat = static_library('dwcgschat', - sources: libdwcgschat_srcs, - nasm_args: asm_args, - include_directories: public_includes, - pic: false -) - -gamespy_libs += libdwcgschat diff --git a/subprojects/gamespy/libraries/common/asm/available.s b/subprojects/gamespy/libraries/common/asm/available.s deleted file mode 100644 index 7ad6b93b86..0000000000 --- a/subprojects/gamespy/libraries/common/asm/available.s +++ /dev/null @@ -1,306 +0,0 @@ - .include "macros/function.inc" - .include "include/available.inc" - - .text - - - arm_func_start get_sockaddrin -get_sockaddrin: ; 0x021E963C - stmfd sp!, {r3, r4, r5, lr} - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 - mov r3, r1, asr #8 - mov r1, r1, lsl #8 - mov r4, r2 - mov ip, #2 - and r2, r3, #0xff - and r1, r1, #0xff00 - strb ip, [r4, #1] - orr r1, r2, r1 - mov r5, r0 - strh r1, [r4, #2] - bl inet_addr - mvn r1, #0 - str r0, [r4, #4] - cmp r0, r1 - bne _021E96A8 - mov r0, r5 - bl SOC_GetHostByName - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, [r0, #0xc] - ldr r0, [r0, #0] - ldr r0, [r0, #0] - str r0, [r4, #4] -_021E96A8: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end get_sockaddrin - - arm_func_start SendPacket -SendPacket: ; 0x021E96B0 - stmfd sp!, {r3, lr} - sub sp, sp, #8 - ldr r1, _021E96F4 ; =0x0221AE58 - mov r0, #8 - str r1, [sp] - ldr r1, _021E96F8 ; =0x0221AE50 - str r0, [sp, #4] - ldr r0, [r1, #4] - ldr r2, [r1, #0x50] - ldr r1, _021E96FC ; =0x0221AE60 - mov r3, #0 - bl sendto - bl current_time - ldr r1, _021E96F8 ; =0x0221AE50 - str r0, [r1, #0x54] - add sp, sp, #8 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_021E96F4: .word 0x0221AE58 -_021E96F8: .word __GSIACResult -_021E96FC: .word 0x0221AE60 - arm_func_end SendPacket - - arm_func_start GSIStartAvailableCheckA -GSIStartAvailableCheckA: ; 0x021E9700 - stmfd sp!, {r3, r4, r5, lr} - sub sp, sp, #0x40 - mov r4, r0 - ldr r0, _021E97DC ; =0x0221AEEC - mov r1, r4 - bl strcpy - ldr r0, _021E97E0 ; =0x0221AE50 - mvn r1, #0 - str r1, [r0, #4] - bl SocketStartUp - ldr r0, _021E97E4 ; =0x0221AEAC - ldrsb r5, [r0] - cmp r5, #0 - bne _021E9748 - ldr r1, _021E97E8 ; =0x022176A4 - add r0, sp, #0 - mov r2, r4 - bl sprintf -_021E9748: - cmp r5, #0 - ldrne r0, _021E97E4 ; =0x0221AEAC - ldr r1, _021E97EC ; =0x00006CFC - ldr r2, _021E97F0 ; =0x0221AE58 - addeq r0, sp, #0 - bl get_sockaddrin - cmp r0, #0 - addeq sp, sp, #0x40 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, #2 - mov r1, r0 - mov r2, #0 - bl socket - ldr r2, _021E97E0 ; =0x0221AE50 - mvn r1, #0 - cmp r0, r1 - str r0, [r2, #4] - addeq sp, sp, #0x40 - ldmeqia sp!, {r3, r4, r5, pc} - mov r1, #9 - mov r0, r4 - strb r1, [r2, #0x10] - bl strlen - mov r5, r0 - ldr r0, _021E97F4 ; =0x0221AE65 - mov r1, r4 - add r2, r5, #1 - bl memcpy - ldr r0, _021E97E0 ; =0x0221AE50 - add r1, r5, #6 - str r1, [r0, #0x50] - bl SendPacket - ldr r0, _021E97E0 ; =0x0221AE50 - mov r1, #0 - str r1, [r0, #0x58] - add sp, sp, #0x40 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_021E97DC: .word 0x0221AEEC -_021E97E0: .word __GSIACResult -_021E97E4: .word GSIACHostname -_021E97E8: .word Unk_ov4_022176A4 -_021E97EC: .word 0x00006CFC -_021E97F0: .word 0x0221AE58 -_021E97F4: .word 0x0221AE65 - arm_func_end GSIStartAvailableCheckA - - arm_func_start HandlePacket -HandlePacket: ; 0x021E97F8 - stmfd sp!, {r4, r5, r6, lr} - mov r5, r0 - cmp r1, #7 - mov r6, r2 - mov r4, r3 - movlt r0, #1 - ldmltia sp!, {r4, r5, r6, pc} - ldr r1, _021E98A4 ; =0x0221AE5C - add r0, r6, #4 - mov r2, #4 - bl memcmp - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, pc} - ldr r0, _021E98A8 ; =0x0221AE50 - ldrh r1, [r6, #2] - ldrh r0, [r0, #0xa] - cmp r1, r0 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, pc} - ldr r1, _021E98AC ; =0x022176C8 - mov r0, r5 - mov r2, #3 - bl memcmp - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, pc} - ldrsb r2, [r5, #3] - ldrsb r1, [r5, #4] - ldrsb r0, [r5, #5] - mov r3, r2, lsl #0x18 - mov r2, r1, lsl #0x10 - mov r1, r0, lsl #8 - and r3, r3, #0xff000000 - and r2, r2, #0xff0000 - ldrb r0, [r5, #6] - orr r2, r3, r2 - and r1, r1, #0xff00 - orr r1, r2, r1 - orr r0, r1, r0 - str r0, [r4, #0] - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_021E98A4: .word 0x0221AE5C -_021E98A8: .word __GSIACResult -_021E98AC: .word Unk_ov4_022176C8 - arm_func_end HandlePacket - - arm_func_start GSIAvailableCheckThink -GSIAvailableCheckThink: ; 0x021E98B0 - stmfd sp!, {r3, lr} - sub sp, sp, #0x58 - ldr r2, _021E99E8 ; =0x0221AE50 - mov r3, #8 - ldr r0, [r2, #4] - sub r1, r3, #9 - cmp r0, r1 - str r3, [sp, #0xc] - moveq r0, #1 - streq r0, [r2] - addeq sp, sp, #0x58 - ldmeqia sp!, {r3, pc} - bl CanReceiveOnSocket - cmp r0, #0 - beq _021E9988 - add r0, sp, #0x10 - str r0, [sp] - add r1, sp, #0xc - str r1, [sp, #4] - ldr r0, _021E99E8 ; =0x0221AE50 - add r1, sp, #0x18 - ldr r0, [r0, #4] - mov r2, #0x40 - mov r3, #0 - bl recvfrom - mov r1, r0 - add r0, sp, #0x18 - add r2, sp, #0x10 - add r3, sp, #8 - bl HandlePacket - cmp r0, #0 - bne _021E9988 - ldr r0, _021E99E8 ; =0x0221AE50 - ldr r0, [r0, #4] - bl closesocket - ldr r0, [sp, #8] - tst r0, #1 - beq _021E9958 - ldr r0, _021E99E8 ; =0x0221AE50 - mov r1, #2 - str r1, [r0, #0] - b _021E9978 -_021E9958: - tst r0, #2 - ldreq r0, _021E99E8 ; =0x0221AE50 - moveq r1, #1 - streq r1, [r0] - beq _021E9978 - ldr r0, _021E99E8 ; =0x0221AE50 - mov r1, #3 - str r1, [r0, #0] -_021E9978: - ldr r0, _021E99E8 ; =0x0221AE50 - add sp, sp, #0x58 - ldr r0, [r0, #0] - ldmia sp!, {r3, pc} -_021E9988: - bl current_time - ldr r1, _021E99E8 ; =0x0221AE50 - ldr r2, [r1, #0x54] - add r2, r2, #0x7d0 - cmp r0, r2 - bls _021E99DC - ldr r0, [r1, #0x58] - cmp r0, #1 - bne _021E99C8 - ldr r0, [r1, #4] - bl closesocket - ldr r1, _021E99E8 ; =0x0221AE50 - mov r0, #1 - str r0, [r1, #0] - add sp, sp, #0x58 - ldmia sp!, {r3, pc} -_021E99C8: - bl SendPacket - ldr r0, _021E99E8 ; =0x0221AE50 - ldr r1, [r0, #0x58] - add r1, r1, #1 - str r1, [r0, #0x58] -_021E99DC: - mov r0, #0 - add sp, sp, #0x58 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_021E99E8: .word __GSIACResult - arm_func_end GSIAvailableCheckThink - - .data - - - .global Unk_ov4_022176A4 -Unk_ov4_022176A4: ; 0x022176A4 - .ascii "%s.available.gs.nintendowifi.net" - .space 0x4 - - .global Unk_ov4_022176C8 -Unk_ov4_022176C8: ; 0x022176C8 - .byte 0xFE, 0xFD, 0x9, 0x0 - - - - .bss - - - .global __GSIACResult -__GSIACResult: ; 0x0221AE50 - .space 0x4 - - .global Unk_ov4_0221AE54 -Unk_ov4_0221AE54: ; 0x0221AE54 - .space 0x58 - - .global GSIACHostname -GSIACHostname: ; 0x0221AEAC - .space 0x40 - - .global __GSIACGamename -__GSIACGamename: ; 0x0221AEEC - .space 0x40 - diff --git a/subprojects/gamespy/libraries/common/asm/darray.s b/subprojects/gamespy/libraries/common/asm/darray.s deleted file mode 100644 index 0df8287e50..0000000000 --- a/subprojects/gamespy/libraries/common/asm/darray.s +++ /dev/null @@ -1,765 +0,0 @@ - .include "macros/function.inc" - .include "include/darray.inc" - - - - .text - - - arm_func_start FreeElement -FreeElement: ; 0x021E99EC - stmfd sp!, {r4, lr} - mov r4, r0 - ldr r2, [r4, #0x10] - cmp r2, #0 - ldmeqia sp!, {r4, pc} - bl ArrayNth - ldr r1, [r4, #0x10] - blx r1 - ldmia sp!, {r4, pc} - arm_func_end FreeElement - - arm_func_start ArrayGrow -ArrayGrow: ; 0x021E9A10 - stmfd sp!, {r4, lr} - mov r4, r0 - ldr r1, [r4, #4] - ldr r0, [r4, #0xc] - add r2, r1, r0 - str r2, [r4, #4] - ldr r0, [r4, #8] - mul r1, r2, r0 - ldr r0, [r4, #0x14] - bl DWCi_GsRealloc - str r0, [r4, #0x14] - cmp r0, #0 - ldmneia sp!, {r4, pc} - ldr r0, _021E9A5C ; =0x02217790 - ldr r1, _021E9A60 ; =0x0221779C - ldr r2, _021E9A64 ; =0x022176FC - mov r3, #0x41 - bl __msl_assertion_failed - ldmia sp!, {r4, pc} - ; .align 2, 0 -_021E9A5C: .word Unk_ov4_02217790 -_021E9A60: .word Unk_ov4_0221779C -_021E9A64: .word Unk_ov4_022176FC - arm_func_end ArrayGrow - - arm_func_start SetElement -SetElement: ; 0x021E9A68 - stmfd sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r5, r0 - mov r1, r2 - bl ArrayNth - ldr r2, [r5, #8] - mov r1, r4 - bl memcpy - ldmia sp!, {r3, r4, r5, pc} - arm_func_end SetElement - - arm_func_start ArrayNew -ArrayNew: ; 0x021E9A8C - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r0, #0x18 - mov r6, r1 - mov r5, r2 - bl DWCi_GsMalloc - movs r4, r0 - bne _021E9AC0 - ldr r0, _021E9B3C ; =0x022177A8 - ldr r1, _021E9B40 ; =0x0221779C - ldr r2, _021E9B44 ; =0x022176E4 - mov r3, #0x52 - bl __msl_assertion_failed -_021E9AC0: - cmp r7, #0 - bne _021E9ADC - ldr r0, _021E9B48 ; =0x022177B0 - ldr r1, _021E9B40 ; =0x0221779C - ldr r2, _021E9B44 ; =0x022176E4 - mov r3, #0x53 - bl __msl_assertion_failed -_021E9ADC: - cmp r6, #0 - moveq r6, #8 - mov r0, #0 - stmia r4, {r0, r6, r7} - str r6, [r4, #0xc] - str r5, [r4, #0x10] - ldr r1, [r4, #4] - cmp r1, #0 - beq _021E9B30 - ldr r0, [r4, #8] - mul r0, r1, r0 - bl DWCi_GsMalloc - str r0, [r4, #0x14] - cmp r0, #0 - bne _021E9B34 - ldr r0, _021E9B4C ; =0x02217790 - ldr r1, _021E9B40 ; =0x0221779C - ldr r2, _021E9B44 ; =0x022176E4 - mov r3, #0x5e - bl __msl_assertion_failed - b _021E9B34 -_021E9B30: - str r0, [r4, #0x14] -_021E9B34: - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021E9B3C: .word Unk_ov4_022177A8 -_021E9B40: .word Unk_ov4_0221779C -_021E9B44: .word Unk_ov4_022176E4 -_021E9B48: .word Unk_ov4_022177B0 -_021E9B4C: .word Unk_ov4_02217790 - arm_func_end ArrayNew - - arm_func_start ArrayFree -ArrayFree: ; 0x021E9B50 - stmfd sp!, {r3, r4, r5, lr} - movs r5, r0 - bne _021E9B70 - ldr r0, _021E9BB0 ; =0x022177A8 - ldr r1, _021E9BB4 ; =0x0221779C - ldr r2, _021E9BB8 ; =0x022176F0 - mov r3, #0x69 - bl __msl_assertion_failed -_021E9B70: - ldr r0, [r5, #0] - mov r4, #0 - cmp r0, #0 - ble _021E9B9C -_021E9B80: - mov r0, r5 - mov r1, r4 - bl FreeElement - ldr r0, [r5, #0] - add r4, r4, #1 - cmp r4, r0 - blt _021E9B80 -_021E9B9C: - ldr r0, [r5, #0x14] - bl DWCi_GsFree - mov r0, r5 - bl DWCi_GsFree - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_021E9BB0: .word Unk_ov4_022177A8 -_021E9BB4: .word Unk_ov4_0221779C -_021E9BB8: .word Unk_ov4_022176F0 - arm_func_end ArrayFree - - arm_func_start ArrayLength -ArrayLength: ; 0x021E9BBC - ldr r0, [r0, #0] - bx lr - arm_func_end ArrayLength - - arm_func_start ArrayNth -ArrayNth: ; 0x021E9BC4 - stmfd sp!, {r3, r4, r5, lr} - movs r4, r1 - mov r5, r0 - bmi _021E9BE0 - ldr r0, [r5, #0] - cmp r4, r0 - blt _021E9BF4 -_021E9BE0: - ldr r0, _021E9C20 ; =0x022177BC - ldr r1, _021E9C24 ; =0x0221779C - ldr r2, _021E9C28 ; =0x022176D8 - mov r3, #0x94 - bl __msl_assertion_failed -_021E9BF4: - cmp r4, #0 - blt _021E9C08 - ldr r0, [r5, #0] - cmp r4, r0 - blt _021E9C10 -_021E9C08: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_021E9C10: - ldr r0, [r5, #0x14] - ldr r1, [r5, #8] - mla r0, r1, r4, r0 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_021E9C20: .word Unk_ov4_022177BC -_021E9C24: .word Unk_ov4_0221779C -_021E9C28: .word Unk_ov4_022176D8 - arm_func_end ArrayNth - - arm_func_start ArrayAppend -ArrayAppend: ; 0x021E9C2C - stmfd sp!, {r3, r4, r5, lr} - movs r5, r0 - mov r4, r1 - bne _021E9C50 - ldr r0, _021E9C6C ; =0x022177A8 - ldr r1, _021E9C70 ; =0x0221779C - ldr r2, _021E9C74 ; =0x02217708 - mov r3, #0xa0 - bl __msl_assertion_failed -_021E9C50: - cmp r5, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r2, [r5, #0] - mov r0, r5 - mov r1, r4 - bl ArrayInsertAt - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_021E9C6C: .word Unk_ov4_022177A8 -_021E9C70: .word Unk_ov4_0221779C -_021E9C74: .word Unk_ov4_02217708 - arm_func_end ArrayAppend - - arm_func_start ArrayInsertAt -ArrayInsertAt: ; 0x021E9C78 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - movs r4, r2 - mov r6, r0 - mov r5, r1 - bmi _021E9C98 - ldr r0, [r6, #0] - cmp r4, r0 - ble _021E9CAC -_021E9C98: - ldr r0, _021E9D24 ; =0x022177DC - ldr r1, _021E9D28 ; =0x0221779C - ldr r2, _021E9D2C ; =0x02217734 - mov r3, #0xa7 - bl __msl_assertion_failed -_021E9CAC: - ldr r1, [r6, #0] - ldr r0, [r6, #4] - cmp r1, r0 - bne _021E9CC4 - mov r0, r6 - bl ArrayGrow -_021E9CC4: - ldr r0, [r6, #0] - add r0, r0, #1 - sub r8, r0, #1 - str r0, [r6, #0] - cmp r4, r8 - bge _021E9D10 - mov r0, r6 - add r1, r4, #1 - bl ArrayNth - mov r7, r0 - mov r0, r6 - mov r1, r4 - bl ArrayNth - mov r1, r0 - ldr r3, [r6, #8] - sub r0, r8, r4 - mul r2, r3, r0 - mov r0, r7 - bl memmove -_021E9D10: - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl SetElement - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_021E9D24: .word Unk_ov4_022177DC -_021E9D28: .word Unk_ov4_0221779C -_021E9D2C: .word Unk_ov4_02217734 - arm_func_end ArrayInsertAt - - arm_func_start ArrayInsertSorted -ArrayInsertSorted: ; 0x021E9D30 - stmfd sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0xc - movs r4, r2 - mov r6, r0 - mov r5, r1 - bne _021E9D5C - ldr r0, _021E9DA4 ; =0x022177FC - ldr r1, _021E9DA8 ; =0x0221779C - ldr r2, _021E9DAC ; =0x02217768 - mov r3, #0xb7 - bl __msl_assertion_failed -_021E9D5C: - add r0, sp, #8 - str r4, [sp] - str r0, [sp, #4] - ldr r1, [r6, #0x14] - ldr r2, [r6, #0] - ldr r3, [r6, #8] - mov r0, r5 - bl mybsearch - ldr r2, [r6, #0x14] - ldr r1, [r6, #8] - sub r0, r0, r2 - bl _s32_div_f - mov r2, r0 - mov r0, r6 - mov r1, r5 - bl ArrayInsertAt - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, pc} - ; .align 2, 0 -_021E9DA4: .word Unk_ov4_022177FC -_021E9DA8: .word Unk_ov4_0221779C -_021E9DAC: .word Unk_ov4_02217768 - arm_func_end ArrayInsertSorted - - arm_func_start ArrayRemoveAt -ArrayRemoveAt: ; 0x021E9DB0 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - movs r7, r1 - mov r4, r0 - bmi _021E9DCC - ldr r0, [r4, #0] - cmp r7, r0 - blt _021E9DE0 -_021E9DCC: - ldr r0, _021E9E34 ; =0x022177BC - ldr r1, _021E9E38 ; =0x0221779C - ldr r2, _021E9E3C ; =0x02217714 - mov r3, #0xc0 - bl __msl_assertion_failed -_021E9DE0: - ldr r0, [r4, #0] - sub r6, r0, #1 - cmp r7, r6 - bge _021E9E24 - mov r0, r4 - mov r1, r7 - bl ArrayNth - mov r5, r0 - mov r0, r4 - add r1, r7, #1 - bl ArrayNth - mov r1, r0 - ldr r3, [r4, #8] - sub r0, r6, r7 - mul r2, r3, r0 - mov r0, r5 - bl memmove -_021E9E24: - ldr r0, [r4, #0] - sub r0, r0, #1 - str r0, [r4, #0] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021E9E34: .word Unk_ov4_022177BC -_021E9E38: .word Unk_ov4_0221779C -_021E9E3C: .word Unk_ov4_02217714 - arm_func_end ArrayRemoveAt - - arm_func_start ArrayDeleteAt -ArrayDeleteAt: ; 0x021E9E40 - stmfd sp!, {r3, r4, r5, lr} - movs r4, r1 - mov r5, r0 - bmi _021E9E5C - ldr r0, [r5, #0] - cmp r4, r0 - blt _021E9E70 -_021E9E5C: - ldr r0, _021E9E8C ; =0x022177BC - ldr r1, _021E9E90 ; =0x0221779C - ldr r2, _021E9E94 ; =0x02217724 - mov r3, #0xca - bl __msl_assertion_failed -_021E9E70: - mov r0, r5 - mov r1, r4 - bl FreeElement - mov r0, r5 - mov r1, r4 - bl ArrayRemoveAt - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_021E9E8C: .word Unk_ov4_022177BC -_021E9E90: .word Unk_ov4_0221779C -_021E9E94: .word Unk_ov4_02217724 - arm_func_end ArrayDeleteAt - - arm_func_start ArrayReplaceAt -ArrayReplaceAt: ; 0x021E9E98 - stmfd sp!, {r4, r5, r6, lr} - movs r4, r2 - mov r6, r0 - mov r5, r1 - bmi _021E9EB8 - ldr r0, [r6, #0] - cmp r4, r0 - blt _021E9ECC -_021E9EB8: - ldr r0, _021E9EEC ; =0x022177BC - ldr r1, _021E9EF0 ; =0x0221779C - ldr r2, _021E9EF4 ; =0x02217744 - mov r3, #0xd3 - bl __msl_assertion_failed -_021E9ECC: - mov r0, r6 - mov r1, r4 - bl FreeElement - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl SetElement - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_021E9EEC: .word Unk_ov4_022177BC -_021E9EF0: .word Unk_ov4_0221779C -_021E9EF4: .word Unk_ov4_02217744 - arm_func_end ArrayReplaceAt - - arm_func_start ArraySort -ArraySort: ; 0x021E9EF8 - ldr ip, _021E9F14 ; =qsort - mov r2, r0 - mov r3, r1 - ldr r0, [r2, #0x14] - ldr r1, [r2, #0] - ldr r2, [r2, #8] - bx ip - ; .align 2, 0 -_021E9F14: .word qsort - arm_func_end ArraySort - - arm_func_start ArraySearch -ArraySearch: ; 0x021E9F18 - stmfd sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0xc - mov ip, #1 - movs r7, r0 - str ip, [sp, #8] - ldrne r8, [r7] - mov r6, r1 - cmpne r8, #0 - mov r5, r2 - mov r4, r3 - addeq sp, sp, #0xc - mvneq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} - ldr r1, [sp, #0x28] - cmp r1, #0 - mov r1, r4 - beq _021E9F84 - bl ArrayNth - add r1, sp, #8 - str r5, [sp] - str r1, [sp, #4] - mov r1, r0 - ldr r3, [r7, #8] - mov r0, r6 - sub r2, r8, r4 - bl mybsearch - b _021E9FA0 -_021E9F84: - bl ArrayNth - str r5, [sp] - mov r1, r0 - ldr r3, [r7, #8] - mov r0, r6 - sub r2, r8, r4 - bl mylsearch -_021E9FA0: - cmp r0, #0 - ldrne r1, [sp, #8] - cmpne r1, #0 - addeq sp, sp, #0xc - mvneq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} - ldr r2, [r7, #0x14] - ldr r1, [r7, #8] - sub r0, r0, r2 - bl _s32_div_f - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - arm_func_end ArraySearch - - arm_func_start ArrayMap -ArrayMap: ; 0x021E9FD0 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - movs r6, r1 - mov r7, r0 - mov r5, r2 - bne _021E9FF8 - ldr r0, _021EA030 ; =0x02217808 - ldr r1, _021EA034 ; =0x0221779C - ldr r2, _021EA038 ; =0x022176CC - mov r3, #0xf9 - bl __msl_assertion_failed -_021E9FF8: - ldr r0, [r7, #0] - mov r4, #0 - cmp r0, #0 - ldmleia sp!, {r3, r4, r5, r6, r7, pc} -_021EA008: - mov r0, r7 - mov r1, r4 - bl ArrayNth - mov r1, r5 - blx r6 - ldr r0, [r7, #0] - add r4, r4, #1 - cmp r4, r0 - blt _021EA008 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021EA030: .word Unk_ov4_02217808 -_021EA034: .word Unk_ov4_0221779C -_021EA038: .word Unk_ov4_022176CC - arm_func_end ArrayMap - - arm_func_start ArrayMapBackwards -ArrayMapBackwards: ; 0x021EA03C - stmfd sp!, {r3, r4, r5, r6, r7, lr} - movs r6, r1 - mov r7, r0 - mov r5, r2 - bne _021EA064 - ldr r0, _021EA090 ; =0x02217808 - ldr r1, _021EA094 ; =0x0221779C - ldr r2, _021EA098 ; =0x02217754 - mov r3, #0x104 - bl __msl_assertion_failed -_021EA064: - ldr r0, [r7, #0] - subs r4, r0, #1 - ldmmiia sp!, {r3, r4, r5, r6, r7, pc} -_021EA070: - mov r0, r7 - mov r1, r4 - bl ArrayNth - mov r1, r5 - blx r6 - subs r4, r4, #1 - bpl _021EA070 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021EA090: .word Unk_ov4_02217808 -_021EA094: .word Unk_ov4_0221779C -_021EA098: .word Unk_ov4_02217754 - arm_func_end ArrayMapBackwards - - arm_func_start ArrayMapBackwards2 -ArrayMapBackwards2: ; 0x021EA09C - stmfd sp!, {r4, r5, r6, r7, r8, lr} - movs r7, r1 - mov r8, r0 - mov r6, r2 - bne _021EA0C4 - ldr r0, _021EA104 ; =0x02217808 - ldr r1, _021EA108 ; =0x0221779C - ldr r2, _021EA10C ; =0x0221777C - ldr r3, _021EA110 ; =0x00000121 - bl __msl_assertion_failed -_021EA0C4: - ldr r0, [r8] - subs r5, r0, #1 - bmi _021EA0FC -_021EA0D0: - mov r0, r8 - mov r1, r5 - bl ArrayNth - mov r1, r6 - mov r4, r0 - blx r7 - cmp r0, #0 - moveq r0, r4 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - subs r5, r5, #1 - bpl _021EA0D0 -_021EA0FC: - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_021EA104: .word Unk_ov4_02217808 -_021EA108: .word Unk_ov4_0221779C -_021EA10C: .word Unk_ov4_0221777C -_021EA110: .word 0x00000121 - arm_func_end ArrayMapBackwards2 - - arm_func_start ArrayClear -ArrayClear: ; 0x021EA114 - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - bl ArrayLength - subs r4, r0, #1 - ldmmiia sp!, {r3, r4, r5, pc} -_021EA128: - mov r0, r5 - mov r1, r4 - bl ArrayDeleteAt - subs r4, r4, #1 - bpl _021EA128 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ArrayClear - - arm_func_start mylsearch -mylsearch: ; 0x021EA140 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov r8, r2 - mov sl, r0 - mov sb, r1 - mov r7, r3 - cmp r8, #0 - ldr r6, [sp, #0x20] - mov r4, #0 - ble _021EA190 - mov r5, r4 -_021EA168: - mov r0, sl - add r1, sb, r5 - blx r6 - cmp r0, #0 - mlaeq r0, r7, r4, sb - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - add r4, r4, #1 - cmp r4, r8 - add r5, r5, r7 - blt _021EA168 -_021EA190: - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - arm_func_end mylsearch - - arm_func_start mybsearch -mybsearch: ; 0x021EA198 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r7, [sp, #0x2c] - mov r4, #0 - mov fp, r0 - mov sl, r1 - mov sb, r3 - str r4, [r7, #0] - subs r5, r2, #1 - ldr r8, [sp, #0x28] - bmi _021EA1F4 -_021EA1C0: - add r0, r4, r5 - mov r6, r0, asr #1 - mla r0, r6, sb, sl - mov r1, fp - blx r8 - cmp r0, #0 - moveq r1, #1 - streq r1, [r7] - cmp r0, #0 - addlt r4, r6, #1 - subge r5, r6, #1 - cmp r4, r5 - ble _021EA1C0 -_021EA1F4: - mla r0, r4, sb, sl - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end mybsearch - - .data - - - .global Unk_ov4_022176CC -Unk_ov4_022176CC: ; 0x022176CC - .ascii "ArrayMap" - .space 0x4 - - .global Unk_ov4_022176D8 -Unk_ov4_022176D8: ; 0x022176D8 - .ascii "ArrayNth" - .space 0x4 - - .global Unk_ov4_022176E4 -Unk_ov4_022176E4: ; 0x022176E4 - .ascii "ArrayNew" - .space 0x4 - - .global Unk_ov4_022176F0 -Unk_ov4_022176F0: ; 0x022176F0 - .asciz "ArrayFree" - .space 0x2 - - .global Unk_ov4_022176FC -Unk_ov4_022176FC: ; 0x022176FC - .asciz "ArrayGrow" - .space 0x2 - - .global Unk_ov4_02217708 -Unk_ov4_02217708: ; 0x02217708 - .asciz "ArrayAppend" - - .global Unk_ov4_02217714 -Unk_ov4_02217714: ; 0x02217714 - .asciz "ArrayRemoveAt" - .space 0x2 - - .global Unk_ov4_02217724 -Unk_ov4_02217724: ; 0x02217724 - .asciz "ArrayDeleteAt" - .space 0x2 - - .global Unk_ov4_02217734 -Unk_ov4_02217734: ; 0x02217734 - .asciz "ArrayInsertAt" - .space 0x2 - - .global Unk_ov4_02217744 -Unk_ov4_02217744: ; 0x02217744 - .ascii "ArrayReplaceAt" - .space 0x2 - - .global Unk_ov4_02217754 -Unk_ov4_02217754: ; 0x02217754 - .asciz "ArrayMapBackwards" - .space 0x2 - - .global Unk_ov4_02217768 -Unk_ov4_02217768: ; 0x02217768 - .asciz "ArrayInsertSorted" - .space 0x2 - - .global Unk_ov4_0221777C -Unk_ov4_0221777C: ; 0x0221777C - .ascii "ArrayMapBackwards2" - .space 0x2 - - .global Unk_ov4_02217790 -Unk_ov4_02217790: ; 0x02217790 - .asciz "array->list" - - .global Unk_ov4_0221779C -Unk_ov4_0221779C: ; 0x0221779C - .ascii "darray.c" - .space 0x4 - - .global Unk_ov4_022177A8 -Unk_ov4_022177A8: ; 0x022177A8 - .asciz "array" - .space 0x2 - - .global Unk_ov4_022177B0 -Unk_ov4_022177B0: ; 0x022177B0 - .ascii "elemSize" - .space 0x4 - - .global Unk_ov4_022177BC -Unk_ov4_022177BC: ; 0x022177BC - .ascii "(n >= 0) && (n < array->count)" - .space 0x2 - - .global Unk_ov4_022177DC -Unk_ov4_022177DC: ; 0x022177DC - .asciz "(n >= 0) && (n <= array->count)" - - .global Unk_ov4_022177FC -Unk_ov4_022177FC: ; 0x022177FC - .ascii "comparator" - .space 0x2 - - .global Unk_ov4_02217808 -Unk_ov4_02217808: ; 0x02217808 - .ascii "fn" - .space 0x2 - diff --git a/subprojects/gamespy/libraries/common/asm/hashtable.s b/subprojects/gamespy/libraries/common/asm/hashtable.s deleted file mode 100644 index ebbdc5a3ee..0000000000 --- a/subprojects/gamespy/libraries/common/asm/hashtable.s +++ /dev/null @@ -1,534 +0,0 @@ - .include "macros/function.inc" - .include "include/hashtable.inc" - - - - .text - - - arm_func_start TableNew -TableNew: ; 0x021EA1FC - stmfd sp!, {r3, lr} - sub sp, sp, #8 - ldr ip, [sp, #0x10] - str r3, [sp] - mov r3, r2 - mov r2, #4 - str ip, [sp, #4] - bl TableNew2 - add sp, sp, #8 - ldmia sp!, {r3, pc} - arm_func_end TableNew - - arm_func_start TableNew2 -TableNew2: ; 0x021EA224 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - movs r7, r3 - mov sl, r0 - mov sb, r1 - mov r8, r2 - ldr r6, [sp, #0x24] - bne _021EA254 - ldr r0, _021EA344 ; =0x02217880 - ldr r1, _021EA348 ; =0x02217888 - ldr r2, _021EA34C ; =0x02217818 - mov r3, #0x38 - bl __msl_assertion_failed -_021EA254: - ldr r0, [sp, #0x20] - cmp r0, #0 - bne _021EA274 - ldr r0, _021EA350 ; =0x02217894 - ldr r1, _021EA348 ; =0x02217888 - ldr r2, _021EA34C ; =0x02217818 - mov r3, #0x39 - bl __msl_assertion_failed -_021EA274: - cmp sl, #0 - bne _021EA290 - ldr r0, _021EA354 ; =0x0221789C - ldr r1, _021EA348 ; =0x02217888 - ldr r2, _021EA34C ; =0x02217818 - mov r3, #0x3a - bl __msl_assertion_failed -_021EA290: - cmp sb, #0 - bne _021EA2AC - ldr r0, _021EA358 ; =0x022178A8 - ldr r1, _021EA348 ; =0x02217888 - ldr r2, _021EA34C ; =0x02217818 - mov r3, #0x3b - bl __msl_assertion_failed -_021EA2AC: - mov r0, #0x14 - bl DWCi_GsMalloc - movs r4, r0 - bne _021EA2D0 - ldr r0, _021EA35C ; =0x022178B4 - ldr r1, _021EA348 ; =0x02217888 - ldr r2, _021EA34C ; =0x02217818 - mov r3, #0x3e - bl __msl_assertion_failed -_021EA2D0: - mov r0, sb, lsl #2 - bl DWCi_GsMalloc - str r0, [r4, #0] - cmp r0, #0 - bne _021EA2F8 - ldr r0, _021EA360 ; =0x022178BC - ldr r1, _021EA348 ; =0x02217888 - ldr r2, _021EA34C ; =0x02217818 - mov r3, #0x41 - bl __msl_assertion_failed -_021EA2F8: - cmp sb, #0 - mov r5, #0 - ble _021EA328 -_021EA304: - mov r0, sl - mov r1, r8 - mov r2, r6 - bl ArrayNew - ldr r1, [r4, #0] - str r0, [r1, r5, lsl #2] - add r5, r5, #1 - cmp r5, sb - blt _021EA304 -_021EA328: - str sb, [r4, #4] - ldr r0, [sp, #0x20] - str r6, [r4, #8] - str r0, [r4, #0x10] - mov r0, r4 - str r7, [r4, #0xc] - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ; .align 2, 0 -_021EA344: .word Unk_ov4_02217880 -_021EA348: .word Unk_ov4_02217888 -_021EA34C: .word Unk_ov4_02217818 -_021EA350: .word Unk_ov4_02217894 -_021EA354: .word Unk_ov4_0221789C -_021EA358: .word Unk_ov4_022178A8 -_021EA35C: .word Unk_ov4_022178B4 -_021EA360: .word Unk_ov4_022178BC - arm_func_end TableNew2 - - arm_func_start TableFree -TableFree: ; 0x021EA364 - stmfd sp!, {r3, r4, r5, lr} - movs r5, r0 - bne _021EA384 - ldr r0, _021EA3CC ; =0x022178B4 - ldr r1, _021EA3D0 ; =0x02217888 - ldr r2, _021EA3D4 ; =0x02217824 - mov r3, #0x51 - bl __msl_assertion_failed -_021EA384: - cmp r5, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, [r5, #4] - mov r4, #0 - cmp r0, #0 - ble _021EA3B8 -_021EA39C: - ldr r0, [r5, #0] - ldr r0, [r0, r4, lsl #2] - bl ArrayFree - ldr r0, [r5, #4] - add r4, r4, #1 - cmp r4, r0 - blt _021EA39C -_021EA3B8: - ldr r0, [r5, #0] - bl DWCi_GsFree - mov r0, r5 - bl DWCi_GsFree - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_021EA3CC: .word Unk_ov4_022178B4 -_021EA3D0: .word Unk_ov4_02217888 -_021EA3D4: .word Unk_ov4_02217824 - arm_func_end TableFree - - arm_func_start TableCount -TableCount: ; 0x021EA3D8 - stmfd sp!, {r4, r5, r6, lr} - movs r6, r0 - mov r5, #0 - bne _021EA3FC - ldr r0, _021EA440 ; =0x022178B4 - ldr r1, _021EA444 ; =0x02217888 - ldr r2, _021EA448 ; =0x0221783C - mov r3, #0x61 - bl __msl_assertion_failed -_021EA3FC: - cmp r6, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r0, [r6, #4] - mov r4, #0 - cmp r0, #0 - ble _021EA438 -_021EA418: - ldr r0, [r6, #0] - ldr r0, [r0, r4, lsl #2] - bl ArrayLength - ldr r1, [r6, #4] - add r4, r4, #1 - cmp r4, r1 - add r5, r5, r0 - blt _021EA418 -_021EA438: - mov r0, r5 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_021EA440: .word Unk_ov4_022178B4 -_021EA444: .word Unk_ov4_02217888 -_021EA448: .word Unk_ov4_0221783C - arm_func_end TableCount - - arm_func_start TableEnter -TableEnter: ; 0x021EA44C - stmfd sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - movs r6, r0 - mov r5, r1 - bne _021EA474 - ldr r0, _021EA4E8 ; =0x022178B4 - ldr r1, _021EA4EC ; =0x02217888 - ldr r2, _021EA4F0 ; =0x02217830 - mov r3, #0x71 - bl __msl_assertion_failed -_021EA474: - cmp r6, #0 - addeq sp, sp, #4 - ldmeqia sp!, {r3, r4, r5, r6, pc} - ldr r1, [r6, #4] - ldr r2, [r6, #0xc] - mov r0, r5 - blx r2 - mov r3, #0 - str r3, [sp] - ldr r1, [r6, #0] - mov r4, r0 - ldr r0, [r1, r4, lsl #2] - ldr r2, [r6, #0x10] - mov r1, r5 - bl ArraySearch - mov r2, r0 - mvn r0, #0 - cmp r2, r0 - ldr r0, [r6, #0] - mov r1, r5 - bne _021EA4D8 - ldr r0, [r0, r4, lsl #2] - bl ArrayAppend - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} -_021EA4D8: - ldr r0, [r0, r4, lsl #2] - bl ArrayReplaceAt - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - ; .align 2, 0 -_021EA4E8: .word Unk_ov4_022178B4 -_021EA4EC: .word Unk_ov4_02217888 -_021EA4F0: .word Unk_ov4_02217830 - arm_func_end TableEnter - - arm_func_start TableRemove -TableRemove: ; 0x021EA4F4 - stmfd sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - movs r6, r0 - mov r5, r1 - bne _021EA51C - ldr r0, _021EA58C ; =0x022178B4 - ldr r1, _021EA590 ; =0x02217888 - ldr r2, _021EA594 ; =0x02217848 - mov r3, #0x82 - bl __msl_assertion_failed -_021EA51C: - cmp r6, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, pc} - ldr r1, [r6, #4] - ldr r2, [r6, #0xc] - mov r0, r5 - blx r2 - mov r3, #0 - str r3, [sp] - ldr r1, [r6, #0] - mov r4, r0 - ldr r0, [r1, r4, lsl #2] - ldr r2, [r6, #0x10] - mov r1, r5 - bl ArraySearch - mov r1, r0 - mvn r0, #0 - cmp r1, r0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, pc} - ldr r0, [r6, #0] - ldr r0, [r0, r4, lsl #2] - bl ArrayDeleteAt - mov r0, #1 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - ; .align 2, 0 -_021EA58C: .word Unk_ov4_022178B4 -_021EA590: .word Unk_ov4_02217888 -_021EA594: .word Unk_ov4_02217848 - arm_func_end TableRemove - - arm_func_start TableLookup -TableLookup: ; 0x021EA598 - stmfd sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - movs r6, r0 - mov r5, r1 - bne _021EA5C0 - ldr r0, _021EA62C ; =0x022178B4 - ldr r1, _021EA630 ; =0x02217888 - ldr r2, _021EA634 ; =0x02217854 - mov r3, #0x94 - bl __msl_assertion_failed -_021EA5C0: - cmp r6, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, pc} - ldr r1, [r6, #4] - ldr r2, [r6, #0xc] - mov r0, r5 - blx r2 - mov r3, #0 - str r3, [sp] - ldr r1, [r6, #0] - mov r4, r0 - ldr r0, [r1, r4, lsl #2] - ldr r2, [r6, #0x10] - mov r1, r5 - bl ArraySearch - mov r1, r0 - mvn r0, #0 - cmp r1, r0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, pc} - ldr r0, [r6, #0] - ldr r0, [r0, r4, lsl #2] - bl ArrayNth - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - ; .align 2, 0 -_021EA62C: .word Unk_ov4_022178B4 -_021EA630: .word Unk_ov4_02217888 -_021EA634: .word Unk_ov4_02217854 - arm_func_end TableLookup - - arm_func_start TableMap -TableMap: ; 0x021EA638 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - movs r7, r0 - mov r6, r1 - mov r5, r2 - bne _021EA660 - ldr r0, _021EA6C0 ; =0x022178B4 - ldr r1, _021EA6C4 ; =0x02217888 - ldr r2, _021EA6C8 ; =0x0221780C - mov r3, #0xa7 - bl __msl_assertion_failed -_021EA660: - cmp r6, #0 - bne _021EA67C - ldr r0, _021EA6CC ; =0x022178CC - ldr r1, _021EA6C4 ; =0x02217888 - ldr r2, _021EA6C8 ; =0x0221780C - mov r3, #0xa8 - bl __msl_assertion_failed -_021EA67C: - cmp r7, #0 - cmpne r6, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r7, #4] - mov r4, #0 - cmp r0, #0 - ldmleia sp!, {r3, r4, r5, r6, r7, pc} -_021EA698: - ldr r0, [r7, #0] - mov r1, r6 - ldr r0, [r0, r4, lsl #2] - mov r2, r5 - bl ArrayMap - ldr r0, [r7, #4] - add r4, r4, #1 - cmp r4, r0 - blt _021EA698 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021EA6C0: .word Unk_ov4_022178B4 -_021EA6C4: .word Unk_ov4_02217888 -_021EA6C8: .word Unk_ov4_0221780C -_021EA6CC: .word Unk_ov4_022178CC - arm_func_end TableMap - - arm_func_start TableMapSafe -TableMapSafe: ; 0x021EA6D0 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - movs r6, r1 - mov r7, r0 - mov r5, r2 - bne _021EA6F8 - ldr r0, _021EA730 ; =0x022178CC - ldr r1, _021EA734 ; =0x02217888 - ldr r2, _021EA738 ; =0x02217860 - mov r3, #0xb6 - bl __msl_assertion_failed -_021EA6F8: - ldr r0, [r7, #4] - mov r4, #0 - cmp r0, #0 - ldmleia sp!, {r3, r4, r5, r6, r7, pc} -_021EA708: - ldr r0, [r7, #0] - mov r1, r6 - ldr r0, [r0, r4, lsl #2] - mov r2, r5 - bl ArrayMapBackwards - ldr r0, [r7, #4] - add r4, r4, #1 - cmp r4, r0 - blt _021EA708 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021EA730: .word Unk_ov4_022178CC -_021EA734: .word Unk_ov4_02217888 -_021EA738: .word Unk_ov4_02217860 - arm_func_end TableMapSafe - - arm_func_start TableMapSafe2 -TableMapSafe2: ; 0x021EA73C - stmfd sp!, {r3, r4, r5, r6, r7, lr} - movs r6, r1 - mov r7, r0 - mov r5, r2 - bne _021EA764 - ldr r0, _021EA7A8 ; =0x022178CC - ldr r1, _021EA7AC ; =0x02217888 - ldr r2, _021EA7B0 ; =0x02217870 - mov r3, #0xd3 - bl __msl_assertion_failed -_021EA764: - ldr r0, [r7, #4] - mov r4, #0 - cmp r0, #0 - ble _021EA7A0 -_021EA774: - ldr r0, [r7, #0] - mov r1, r6 - ldr r0, [r0, r4, lsl #2] - mov r2, r5 - bl ArrayMapBackwards2 - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r7, #4] - add r4, r4, #1 - cmp r4, r0 - blt _021EA774 -_021EA7A0: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021EA7A8: .word Unk_ov4_022178CC -_021EA7AC: .word Unk_ov4_02217888 -_021EA7B0: .word Unk_ov4_02217870 - arm_func_end TableMapSafe2 - - .data - - - .global Unk_ov4_0221780C -Unk_ov4_0221780C: ; 0x0221780C - .ascii "TableMap" - .space 0x4 - - .global Unk_ov4_02217818 -Unk_ov4_02217818: ; 0x02217818 - .asciz "TableNew2" - .space 0x2 - - .global Unk_ov4_02217824 -Unk_ov4_02217824: ; 0x02217824 - .asciz "TableFree" - .space 0x2 - - .global Unk_ov4_02217830 -Unk_ov4_02217830: ; 0x02217830 - .ascii "TableEnter" - .space 0x2 - - .global Unk_ov4_0221783C -Unk_ov4_0221783C: ; 0x0221783C - .ascii "TableCount" - .space 0x2 - - .global Unk_ov4_02217848 -Unk_ov4_02217848: ; 0x02217848 - .asciz "TableRemove" - - .global Unk_ov4_02217854 -Unk_ov4_02217854: ; 0x02217854 - .asciz "TableLookup" - - .global Unk_ov4_02217860 -Unk_ov4_02217860: ; 0x02217860 - .ascii "TableMapSafe" - .space 0x4 - - .global Unk_ov4_02217870 -Unk_ov4_02217870: ; 0x02217870 - .asciz "TableMapSafe2" - .space 0x2 - - .global Unk_ov4_02217880 -Unk_ov4_02217880: ; 0x02217880 - .ascii "hashFn" - .space 0x2 - - .global Unk_ov4_02217888 -Unk_ov4_02217888: ; 0x02217888 - .asciz "hashtable.c" - - .global Unk_ov4_02217894 -Unk_ov4_02217894: ; 0x02217894 - .ascii "compFn" - .space 0x2 - - .global Unk_ov4_0221789C -Unk_ov4_0221789C: ; 0x0221789C - .ascii "elemSize" - .space 0x4 - - .global Unk_ov4_022178A8 -Unk_ov4_022178A8: ; 0x022178A8 - .ascii "nBuckets" - .space 0x4 - - .global Unk_ov4_022178B4 -Unk_ov4_022178B4: ; 0x022178B4 - .asciz "table" - .space 0x2 - - .global Unk_ov4_022178BC -Unk_ov4_022178BC: ; 0x022178BC - .ascii "table->buckets" - .space 0x2 - - .global Unk_ov4_022178CC -Unk_ov4_022178CC: ; 0x022178CC - .ascii "fn" - .space 0x2 - diff --git a/subprojects/gamespy/libraries/common/asm/include/available.inc b/subprojects/gamespy/libraries/common/asm/include/available.inc deleted file mode 100644 index 1a0119d048..0000000000 --- a/subprojects/gamespy/libraries/common/asm/include/available.inc +++ /dev/null @@ -1,17 +0,0 @@ -.public memcpy -.public memcmp -.public sprintf -.public strlen -.public strcpy -.public get_sockaddrin -.public SendPacket -.public HandlePacket -.public current_time -.public SocketStartUp -.public CanReceiveOnSocket -.public socket -.public closesocket -.public recvfrom -.public sendto -.public inet_addr -.public SOC_GetHostByName diff --git a/subprojects/gamespy/libraries/common/asm/include/darray.inc b/subprojects/gamespy/libraries/common/asm/include/darray.inc deleted file mode 100644 index e4ae280b80..0000000000 --- a/subprojects/gamespy/libraries/common/asm/include/darray.inc +++ /dev/null @@ -1,18 +0,0 @@ -.public __msl_assertion_failed -.public memcpy -.public memmove -.public qsort -.public _s32_div_f -.public DWCi_GsMalloc -.public DWCi_GsRealloc -.public DWCi_GsFree -.public FreeElement -.public ArrayGrow -.public SetElement -.public ArrayLength -.public ArrayNth -.public ArrayInsertAt -.public ArrayRemoveAt -.public ArrayDeleteAt -.public mylsearch -.public mybsearch diff --git a/subprojects/gamespy/libraries/common/asm/include/hashtable.inc b/subprojects/gamespy/libraries/common/asm/include/hashtable.inc deleted file mode 100644 index 71696bcade..0000000000 --- a/subprojects/gamespy/libraries/common/asm/include/hashtable.inc +++ /dev/null @@ -1,15 +0,0 @@ -.public __msl_assertion_failed -.public DWCi_GsMalloc -.public DWCi_GsFree -.public ArrayNew -.public ArrayFree -.public ArrayLength -.public ArrayNth -.public ArrayAppend -.public ArrayDeleteAt -.public ArrayReplaceAt -.public ArraySearch -.public ArrayMap -.public ArrayMapBackwards -.public ArrayMapBackwards2 -.public TableNew2 diff --git a/subprojects/gamespy/libraries/common/asm/include/md5c.inc b/subprojects/gamespy/libraries/common/asm/include/md5c.inc deleted file mode 100644 index a54acd8469..0000000000 --- a/subprojects/gamespy/libraries/common/asm/include/md5c.inc +++ /dev/null @@ -1,5 +0,0 @@ -.public sprintf -.public MD5Print -.public MD5Init -.public MD5Update -.public MD5Final diff --git a/subprojects/gamespy/libraries/common/asm/include/nonport.inc b/subprojects/gamespy/libraries/common/asm/include/nonport.inc deleted file mode 100644 index e6f3a16d31..0000000000 --- a/subprojects/gamespy/libraries/common/asm/include/nonport.inc +++ /dev/null @@ -1,34 +0,0 @@ -.public OS_Sleep -.public OS_IsTickAvailable -.public OS_GetTick -.public MI_CpuFill8 -.public __msl_assertion_failed -.public strlen -.public strcpy -.public _ull_div -.public _s32_div_f -.public DWCi_GsMalloc -.public GSISocketSelect -.public CheckRcode -.public getsockopt -.public setsockopt -.public nextlongrand -.public longrand -.public TripToQuart -.public SOCL_GetHostID -.public SOC_Socket -.public SOC_Bind -.public SOC_Connect -.public SOC_Recv -.public SOC_RecvFrom -.public SOC_Send -.public SOC_SendTo -.public SOC_Shutdown -.public SOC_Close -.public SOC_GetSockName -.public SOC_Listen -.public SOC_Accept -.public SOC_Fcntl -.public SOC_InetAtoN -.public SOC_U32to4U8 -.public SOC_Poll diff --git a/subprojects/gamespy/libraries/common/asm/macros/function.inc b/subprojects/gamespy/libraries/common/asm/macros/function.inc deleted file mode 100644 index f71cc4ccae..0000000000 --- a/subprojects/gamespy/libraries/common/asm/macros/function.inc +++ /dev/null @@ -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 \ No newline at end of file diff --git a/subprojects/gamespy/libraries/common/asm/md5c.s b/subprojects/gamespy/libraries/common/asm/md5c.s deleted file mode 100644 index 5094c895ff..0000000000 --- a/subprojects/gamespy/libraries/common/asm/md5c.s +++ /dev/null @@ -1,61 +0,0 @@ - .include "macros/function.inc" - .include "include/md5c.inc" - - - - .text - - - arm_func_start MD5Print -MD5Print: ; 0x021EA7B4 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - mov r5, #0 - ldr r4, _021EA7F0 ; =0x022178D0 - mov r8, r0 - mov r7, r1 - mov r6, r5 -_021EA7CC: - ldrb r2, [r8, r5] - mov r1, r4 - add r0, r7, r6 - bl sprintf - add r5, r5, #1 - cmp r5, #0x10 - add r6, r6, #2 - blo _021EA7CC - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_021EA7F0: .word Unk_ov4_022178D0 - arm_func_end MD5Print - - arm_func_start MD5Digest -MD5Digest: ; 0x021EA7F4 - stmfd sp!, {r4, r5, r6, lr} - sub sp, sp, #0x68 - mov r6, r0 - add r0, sp, #0x10 - mov r5, r1 - mov r4, r2 - bl MD5Init - add r0, sp, #0x10 - mov r1, r6 - mov r2, r5 - bl MD5Update - add r0, sp, #0 - add r1, sp, #0x10 - bl MD5Final - add r0, sp, #0 - mov r1, r4 - bl MD5Print - add sp, sp, #0x68 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end MD5Digest - - .data - - - .global Unk_ov4_022178D0 -Unk_ov4_022178D0: ; 0x022178D0 - .ascii "%02x" - .space 0x4 - diff --git a/subprojects/gamespy/libraries/common/asm/nonport.s b/subprojects/gamespy/libraries/common/asm/nonport.s deleted file mode 100644 index fceb405f67..0000000000 --- a/subprojects/gamespy/libraries/common/asm/nonport.s +++ /dev/null @@ -1,919 +0,0 @@ - .include "macros/function.inc" - .include "include/nonport.inc" - - .extern __lower_mapC - - .text - - - arm_func_start current_time -current_time: ; 0x021EA840 - stmfd sp!, {r3, lr} - bl OS_IsTickAvailable - cmp r0, #1 - beq _021EA864 - ldr r0, _021EA884 ; =0x022178F4 - ldr r1, _021EA888 ; =0x02217914 - ldr r2, _021EA88C ; =0x022178E4 - ldr r3, _021EA890 ; =0x00000109 - bl __msl_assertion_failed -_021EA864: - bl OS_GetTick - mov r1, r1, lsl #6 - orr r1, r1, r0, lsr #26 - ldr r2, _021EA894 ; =0x000082EA - mov r0, r0, lsl #6 - mov r3, #0 - bl _ull_div - ldmia sp!, {r3, pc} - ; .align 2, 0 -_021EA884: .word Unk_ov4_022178F4 -_021EA888: .word Unk_ov4_02217914 -_021EA88C: .word Unk_ov4_022178E4 -_021EA890: .word 0x00000109 -_021EA894: .word 0x000082EA - arm_func_end current_time - - arm_func_start msleep -msleep: ; 0x021EA898 - ldr ip, _021EA8A0 ; =OS_Sleep - bx ip - ; .align 2, 0 -_021EA8A0: .word OS_Sleep - arm_func_end msleep - - arm_func_start SocketStartUp -SocketStartUp: ; 0x021EA8A4 - bx lr - arm_func_end SocketStartUp - - arm_func_start SocketShutDown -SocketShutDown: ; 0x021EA8A8 - bx lr - arm_func_end SocketShutDown - - arm_func_start goastrdup -goastrdup: ; 0x021EA8AC - stmfd sp!, {r3, r4, r5, lr} - movs r5, r0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - bl strlen - add r0, r0, #1 - bl DWCi_GsMalloc - movs r4, r0 - beq _021EA8D8 - mov r1, r5 - bl strcpy -_021EA8D8: - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end goastrdup - - arm_func_start _strlwr -_strlwr: ; 0x021EA8E0 - ldrsb r3, [r0] - mov r2, r0 - cmp r3, #0 - beq _021EA918 - ldr r1, _021EA920 ; =0x020FE764 -_021EA8F4: - cmp r3, #0 - blt _021EA908 - cmp r3, #0x80 - bge _021EA908 - ldrb r3, [r1, r3] -_021EA908: - strb r3, [r0] - ldrsb r3, [r0, #1]! - cmp r3, #0 - bne _021EA8F4 -_021EA918: - mov r0, r2 - bx lr - ; .align 2, 0 -_021EA920: .word __lower_mapC - arm_func_end _strlwr - - arm_func_start SetSockBlocking -SetSockBlocking: ; 0x021EA924 - stmfd sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r1, #3 - mov r2, #0 - mov r5, r0 - bl SOC_Fcntl - cmp r4, #0 - bicne r2, r0, #4 - orreq r2, r0, #4 - mov r0, r5 - mov r1, #4 - bl SOC_Fcntl - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end SetSockBlocking - - arm_func_start SetReceiveBufferSize -SetReceiveBufferSize: ; 0x021EA964 - stmfd sp!, {r0, r1, r2, r3} - stmfd sp!, {r3, lr} - ldr r1, _021EA9A0 ; =0x0000FFFF - mov ip, #4 - ldr r2, _021EA9A4 ; =0x00001002 - add r3, sp, #0xc - str ip, [sp] - bl setsockopt - mvn r1, #0 - cmp r0, r1 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, lr} - add sp, sp, #0x10 - bx lr - ; .align 2, 0 -_021EA9A0: .word 0x0000FFFF -_021EA9A4: .word 0x00001002 - arm_func_end SetReceiveBufferSize - - arm_func_start SetSendBufferSize -SetSendBufferSize: ; 0x021EA9A8 - stmfd sp!, {r0, r1, r2, r3} - stmfd sp!, {r3, lr} - ldr r1, _021EA9E4 ; =0x0000FFFF - mov ip, #4 - add r3, sp, #0xc - rsb r2, r1, #0x11000 - str ip, [sp] - bl setsockopt - mvn r1, #0 - cmp r0, r1 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, lr} - add sp, sp, #0x10 - bx lr - ; .align 2, 0 -_021EA9E4: .word 0x0000FFFF - arm_func_end SetSendBufferSize - - arm_func_start GetReceiveBufferSize -GetReceiveBufferSize: ; 0x021EA9E8 - stmdb sp!, {lr} - sub sp, sp, #0xc - mov r1, #4 - str r1, [sp, #4] - add ip, sp, #4 - ldr r1, _021EAA28 ; =0x0000FFFF - ldr r2, _021EAA2C ; =0x00001002 - add r3, sp, #8 - str ip, [sp] - bl getsockopt - mvn r1, #0 - cmp r0, r1 - ldrne r1, [sp, #8] - mov r0, r1 - add sp, sp, #0xc - ldmia sp!, {pc} - ; .align 2, 0 -_021EAA28: .word 0x0000FFFF -_021EAA2C: .word 0x00001002 - arm_func_end GetReceiveBufferSize - - arm_func_start GetSendBufferSize -GetSendBufferSize: ; 0x021EAA30 - stmdb sp!, {lr} - sub sp, sp, #0xc - ldr r1, _021EAA70 ; =0x0000FFFF - mov r2, #4 - str r2, [sp, #4] - add ip, sp, #4 - add r3, sp, #8 - rsb r2, r1, #0x11000 - str ip, [sp] - bl getsockopt - mvn r1, #0 - cmp r0, r1 - ldrne r1, [sp, #8] - mov r0, r1 - add sp, sp, #0xc - ldmia sp!, {pc} - ; .align 2, 0 -_021EAA70: .word 0x0000FFFF - arm_func_end GetSendBufferSize - - arm_func_start GSISocketSelect -GSISocketSelect: ; 0x021EAA74 - stmfd sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - movs r6, r1 - mov r1, #0 - strh r1, [sp, #4] - str r0, [sp] - ldrnesh r0, [sp, #4] - mov r5, r2 - mov r2, #0 - orrne r0, r0, #1 - strneh r0, [sp, #4] - cmp r5, #0 - ldrnesh r0, [sp, #4] - mov r4, r3 - mov r3, r2 - orrne r0, r0, #8 - strneh r0, [sp, #4] - add r0, sp, #0 - mov r1, #1 - strh r2, [sp, #6] - bl SOC_Poll - cmp r0, #0 - addlt sp, sp, #8 - mvnlt r0, #0 - ldmltia sp!, {r4, r5, r6, pc} - cmp r6, #0 - beq _021EAB04 - cmp r0, #0 - ble _021EAAFC - ldrsh r1, [sp, #6] - tst r1, #0x41 - movne r1, #1 - strne r1, [r6] - bne _021EAB04 -_021EAAFC: - mov r1, #0 - str r1, [r6, #0] -_021EAB04: - cmp r5, #0 - beq _021EAB30 - cmp r0, #0 - ble _021EAB28 - ldrsh r1, [sp, #6] - tst r1, #8 - movne r1, #1 - strne r1, [r5] - bne _021EAB30 -_021EAB28: - mov r1, #0 - str r1, [r5, #0] -_021EAB30: - cmp r4, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r4, r5, r6, pc} - cmp r0, #0 - ble _021EAB5C - ldrsh r1, [sp, #6] - tst r1, #0x20 - movne r1, #1 - addne sp, sp, #8 - strne r1, [r4] - ldmneia sp!, {r4, r5, r6, pc} -_021EAB5C: - mov r1, #0 - str r1, [r4, #0] - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end GSISocketSelect - - arm_func_start CanReceiveOnSocket -CanReceiveOnSocket: ; 0x021EAB6C - stmfd sp!, {r3, lr} - mov r2, #0 - add r1, sp, #0 - mov r3, r2 - str r2, [sp] - bl GSISocketSelect - cmp r0, #1 - ldreq r0, [sp] - movne r0, #0 - ldmia sp!, {r3, pc} - arm_func_end CanReceiveOnSocket - - arm_func_start CanSendOnSocket -CanSendOnSocket: ; 0x021EAB94 - stmfd sp!, {r3, lr} - mov r1, #0 - add r2, sp, #0 - mov r3, r1 - str r1, [sp] - bl GSISocketSelect - cmp r0, #1 - ldreq r0, [sp] - movne r0, #0 - ldmia sp!, {r3, pc} - arm_func_end CanSendOnSocket - - arm_func_start getlocalhost -getlocalhost: ; 0x021EABBC - stmfd sp!, {r3, lr} - ldr r2, _021EAC30 ; =0x02217920 - ldr r0, _021EAC34 ; =0x0221AF2C - ldr r1, _021EAC38 ; =0x0221AF2C - str r2, [r0, #8] - str r1, [r0, #0xc] - mov r1, #2 - strh r1, [r0, #0x10] - mov r2, #0 - ldr r1, _021EAC3C ; =0x0221AF58 - strh r2, [r0, #0x12] - str r1, [r0, #0x14] - str r2, [r0, #0x18] - bl SOCL_GetHostID - ldr r1, _021EAC40 ; =0x0221AF44 - bl SOC_U32to4U8 - ldr r1, _021EAC34 ; =0x0221AF2C - ldr r0, [r1, #0x18] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - ldr r2, _021EAC40 ; =0x0221AF44 - mov r0, #4 - str r2, [r1, #0x2c] - strh r0, [r1, #0x12] - mov r2, #0 - ldr r0, _021EAC44 ; =0x0221AF34 - str r2, [r1, #0x30] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_021EAC30: .word Unk_ov4_02217920 -_021EAC34: .word Unk_ov4_0221AF2C -_021EAC38: .word Unk_ov4_0221AF2C -_021EAC3C: .word Unk_ov4_0221AF58 -_021EAC40: .word Unk_ov4_0221AF44 -_021EAC44: .word Unk_ov4_0221AF34 - arm_func_end getlocalhost - - arm_func_start IsPrivateIP -IsPrivateIP: ; 0x021EAC48 - ldr r3, [r0, #0] - mov r1, r3, lsr #0x18 - mov r0, r3, lsr #8 - mov r2, r3, lsl #8 - and r1, r1, #0xff - and r0, r0, #0xff00 - mov r3, r3, lsl #0x18 - orr r0, r1, r0 - and r2, r2, #0xff0000 - and r1, r3, #0xff000000 - orr r0, r2, r0 - orr r1, r1, r0 - mov r0, r1, lsr #0x18 - and r2, r0, #0xff - mov r0, r1, lsr #0x10 - and r0, r0, #0xff - cmp r2, #0xa - moveq r0, #1 - bxeq lr - cmp r2, #0xac - bne _021EACB0 - cmp r0, #0x10 - blt _021EACB0 - cmp r0, #0x1f - movle r0, #1 - bxle lr -_021EACB0: - cmp r2, #0xc0 - cmpeq r0, #0xa8 - moveq r0, #1 - movne r0, #0 - bx lr - arm_func_end IsPrivateIP - - arm_func_start CheckRcode -CheckRcode: ; 0x021EACC4 - cmp r0, #0 - ldrlt r2, _021EACD8 ; =0x0221AF2C - strlt r0, [r2, #4] - movlt r0, r1 - bx lr - ; .align 2, 0 -_021EACD8: .word Unk_ov4_0221AF2C - arm_func_end CheckRcode - - arm_func_start socket -socket: ; 0x021EACDC - stmfd sp!, {r3, lr} - bl SOC_Socket - mvn r1, #0 - bl CheckRcode - ldmia sp!, {r3, pc} - arm_func_end socket - - arm_func_start closesocket -closesocket: ; 0x021EACF0 - stmfd sp!, {r3, lr} - bl SOC_Close - mvn r1, #0 - bl CheckRcode - ldmia sp!, {r3, pc} - arm_func_end closesocket - - arm_func_start shutdown -shutdown: ; 0x021EAD04 - stmfd sp!, {r3, lr} - bl SOC_Shutdown - mvn r1, #0 - bl CheckRcode - ldmia sp!, {r3, pc} - arm_func_end shutdown - - arm_func_start bind -bind: ; 0x021EAD18 - stmfd sp!, {r4, lr} - sub sp, sp, #8 - ldrh r3, [r1, #2] - cmp r3, #0 - addeq sp, sp, #8 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - add r4, sp, #0 - mov lr, #4 -_021EAD3C: - ldrb ip, [r1] - ldrb r3, [r1, #1] - add r1, r1, #2 - subs lr, lr, #1 - strb ip, [r4] - strb r3, [r4, #1] - add r4, r4, #2 - bne _021EAD3C - add r1, sp, #0 - strb r2, [sp] - bl SOC_Bind - mvn r1, #0 - bl CheckRcode - add sp, sp, #8 - ldmia sp!, {r4, pc} - arm_func_end bind - - arm_func_start connect -connect: ; 0x021EAD78 - stmfd sp!, {r4, lr} - sub sp, sp, #8 - add r4, sp, #0 - mov lr, #4 -_021EAD88: - ldrb ip, [r1] - ldrb r3, [r1, #1] - add r1, r1, #2 - subs lr, lr, #1 - strb ip, [r4] - strb r3, [r4, #1] - add r4, r4, #2 - bne _021EAD88 - add r1, sp, #0 - strb r2, [sp] - bl SOC_Connect - mvn r1, #0 - bl CheckRcode - add sp, sp, #8 - ldmia sp!, {r4, pc} - arm_func_end connect - - arm_func_start listen -listen: ; 0x021EADC4 - stmfd sp!, {r3, lr} - bl SOC_Listen - mvn r1, #0 - bl CheckRcode - ldmia sp!, {r3, pc} - arm_func_end listen - - arm_func_start accept -accept: ; 0x021EADD8 - stmfd sp!, {r3, r4, r5, lr} - mov r4, r2 - ldr r2, [r4, #0] - mov r5, r1 - strb r2, [r5] - bl SOC_Accept - ldrb r2, [r5] - mvn r1, #0 - str r2, [r4, #0] - bl CheckRcode - ldmia sp!, {r3, r4, r5, pc} - arm_func_end accept - - arm_func_start recv -recv: ; 0x021EAE04 - stmfd sp!, {r3, lr} - bl SOC_Recv - mvn r1, #0 - bl CheckRcode - ldmia sp!, {r3, pc} - arm_func_end recv - - arm_func_start recvfrom -recvfrom: ; 0x021EAE18 - stmfd sp!, {r3, r4, r5, lr} - ldr r4, [sp, #0x14] - ldr r5, [sp, #0x10] - ldr ip, [r4] - strb ip, [r5] - str r5, [sp] - bl SOC_RecvFrom - ldrb r2, [r5] - mvn r1, #0 - str r2, [r4, #0] - bl CheckRcode - ldmia sp!, {r3, r4, r5, pc} - arm_func_end recvfrom - - arm_func_start send -send: ; 0x021EAE48 - stmfd sp!, {r3, lr} - bl SOC_Send - mvn r1, #0 - bl CheckRcode - ldmia sp!, {r3, pc} - arm_func_end send - - arm_func_start sendto -sendto: ; 0x021EAE5C - stmfd sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0xc - ldr r5, [sp, #0x20] - add r6, sp, #4 - mov r4, #4 -_021EAE70: - ldrb lr, [r5] - ldrb ip, [r5, #1] - add r5, r5, #2 - subs r4, r4, #1 - strb lr, [r6] - strb ip, [r6, #1] - add r6, r6, #2 - bne _021EAE70 - ldr lr, [sp, #0x24] - add ip, sp, #4 - strb lr, [sp, #4] - str ip, [sp] - bl SOC_SendTo - mvn r1, #0 - bl CheckRcode - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end sendto - - arm_func_start getsockopt -getsockopt: ; 0x021EAEB4 - stmfd sp!, {r3, lr} - ldr r1, [sp, #8] - mov r0, r3 - ldr r2, [r1, #0] - mov r1, #0 - bl MI_CpuFill8 - mov r0, #0 - sub r1, r0, #1 - bl CheckRcode - ldmia sp!, {r3, pc} - arm_func_end getsockopt - - arm_func_start setsockopt -setsockopt: ; 0x021EAEDC - ldr ip, _021EAEEC ; =CheckRcode - mov r0, #0 - sub r1, r0, #1 - bx ip - ; .align 2, 0 -_021EAEEC: .word CheckRcode - arm_func_end setsockopt - - arm_func_start getsockname -getsockname: ; 0x021EAEF0 - stmfd sp!, {r3, r4, r5, lr} - mov r4, r2 - ldr r2, [r4, #0] - mov r5, r1 - strb r2, [r5] - bl SOC_GetSockName - ldrb r2, [r5] - mvn r1, #0 - str r2, [r4, #0] - bl CheckRcode - ldmia sp!, {r3, r4, r5, pc} - arm_func_end getsockname - - arm_func_start inet_addr -inet_addr: ; 0x021EAF1C - stmfd sp!, {r3, lr} - add r1, sp, #0 - bl SOC_InetAtoN - cmp r0, #0 - mvneq r0, #0 - ldrne r0, [sp] - ldmia sp!, {r3, pc} - arm_func_end inet_addr - - arm_func_start GOAGetLastError -GOAGetLastError: ; 0x021EAF38 - ldr r0, _021EAF44 ; =0x0221AF2C - ldr r0, [r0, #4] - bx lr - ; .align 2, 0 -_021EAF44: .word Unk_ov4_0221AF2C - arm_func_end GOAGetLastError - - arm_func_start time -time: ; 0x021EAF48 - stmfd sp!, {r4, lr} - mov r4, r0 - bl OS_IsTickAvailable - cmp r0, #1 - beq _021EAF70 - ldr r0, _021EAF98 ; =0x022178F4 - ldr r1, _021EAF9C ; =0x02217914 - ldr r2, _021EAFA0 ; =0x022178DC - ldr r3, _021EAFA4 ; =0x00000667 - bl __msl_assertion_failed -_021EAF70: - bl OS_GetTick - mov r1, r1, lsl #6 - orr r1, r1, r0, lsr #26 - ldr r2, _021EAFA8 ; =0x01FF6210 - mov r0, r0, lsl #6 - mov r3, #0 - bl _ull_div - cmp r4, #0 - strne r0, [r4] - ldmia sp!, {r4, pc} - ; .align 2, 0 -_021EAF98: .word Unk_ov4_022178F4 -_021EAF9C: .word Unk_ov4_02217914 -_021EAFA0: .word Unk_ov4_022178DC -_021EAFA4: .word 0x00000667 -_021EAFA8: .word 0x01FF6210 - arm_func_end time - - arm_func_start nextlongrand -nextlongrand: ; 0x021EAFAC - ldr r2, _021EAFF4 ; =0x000041A7 - mov r1, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - mul r3, r0, r2 - mov r1, r1, lsr #0x10 - mul r2, r1, r2 - mov r0, r3, lsl #0x11 - add r0, r2, r0, lsr #1 - mvn r1, #0x80000000 - cmp r0, r1 - bichi r0, r0, #0x80000000 - addhi r0, r0, #1 - add r0, r0, r3, lsr #15 - mvn r1, #0x80000000 - cmp r0, r1 - bichi r0, r0, #0x80000000 - addhi r0, r0, #1 - bx lr - ; .align 2, 0 -_021EAFF4: .word 0x000041A7 - arm_func_end nextlongrand - - arm_func_start longrand -longrand: ; 0x021EAFF8 - stmfd sp!, {r3, lr} - ldr r0, _021EB014 ; =0x022178D8 - ldr r0, [r0, #0] - bl nextlongrand - ldr r1, _021EB014 ; =0x022178D8 - str r0, [r1, #0] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_021EB014: .word randomnum - arm_func_end longrand - - arm_func_start Util_RandSeed -Util_RandSeed: ; 0x021EB018 - cmp r0, #0 - bicne r1, r0, #0x80000000 - ldr r0, _021EB030 ; =0x022178D8 - moveq r1, #1 - str r1, [r0, #0] - bx lr - ; .align 2, 0 -_021EB030: .word randomnum - arm_func_end Util_RandSeed - - arm_func_start Util_RandInt -Util_RandInt: ; 0x021EB034 - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - subs r4, r1, r5 - ldmeqia sp!, {r3, r4, r5, pc} - bl longrand - mov r1, r4 - bl _s32_div_f - add r0, r1, r5 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end Util_RandInt - - arm_func_start TripToQuart -TripToQuart: ; 0x021EB058 - stmfd sp!, {r3, lr} - cmp r2, #0 - mov ip, #0 - ble _021EB080 - add lr, sp, #0 -_021EB06C: - ldrsb r3, [r0, ip] - add ip, ip, #1 - cmp ip, r2 - strb r3, [lr], #1 - blt _021EB06C -_021EB080: - cmp ip, #3 - bge _021EB0A4 - add r0, sp, #0 - add r2, r0, ip - mov r0, #0 -_021EB094: - add ip, ip, #1 - cmp ip, #3 - strb r0, [r2], #1 - blt _021EB094 -_021EB0A4: - ldrb r0, [sp] - mov r0, r0, asr #2 - strb r0, [r1] - ldrb r2, [sp] - ldrb r0, [sp, #1] - mov r2, r2, lsl #0x1e - mov r0, r0, asr #4 - orr r0, r0, r2, lsr #26 - strb r0, [r1, #1] - ldrb r2, [sp, #1] - ldrb r0, [sp, #2] - mov r2, r2, lsl #0x1c - mov r0, r0, asr #6 - orr r0, r0, r2, lsr #26 - strb r0, [r1, #2] - ldrb r0, [sp, #2] - and r0, r0, #0x3f - strb r0, [r1, #3] - ldmia sp!, {r3, pc} - arm_func_end TripToQuart - - arm_func_start B64Encode -B64Encode: ; 0x021EB0F0 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov r7, r1 - mov r6, r2 - mov sl, r0 - mov r5, r7 - mov sb, r6 - cmp r3, #1 - beq _021EB11C - cmp r3, #2 - beq _021EB124 - b _021EB12C -_021EB11C: - ldr r4, _021EB218 ; =0x02215980 - b _021EB130 -_021EB124: - ldr r4, _021EB21C ; =0x02215984 - b _021EB130 -_021EB12C: - ldr r4, _021EB220 ; =0x02215988 -_021EB130: - cmp r6, #0 - ble _021EB168 - mov r8, #3 -_021EB13C: - cmp sb, #3 - movlt r2, sb - movge r2, r8 - mov r0, sl - mov r1, r7 - bl TripToQuart - sub sb, sb, #3 - cmp sb, #0 - add r7, r7, #4 - add sl, sl, #3 - bgt _021EB13C -_021EB168: - ldr r1, _021EB224 ; =0x55555556 - mov r2, #3 - smull r0, r3, r1, r6 - add r3, r3, r6, lsr #31 - smull r0, r1, r2, r3 - sub r3, r6, r0 - mov r1, r7 - cmp r3, #1 - subeq r1, r7, #2 - beq _021EB198 - cmp r3, #2 - subeq r1, r7, #1 -_021EB198: - mov r0, #0 - strb r0, [r7] - cmp r7, r5 - ldmlsia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_021EB1A8: - sub r7, r7, #1 - cmp r7, r1 - ldrhssb r0, [r4, #2] - strhsb r0, [r7] - bhs _021EB20C - ldrsb r0, [r7] - cmp r0, #0x19 - addle r0, r0, #0x41 - strleb r0, [r7] - ble _021EB20C - cmp r0, #0x33 - addle r0, r0, #0x47 - strleb r0, [r7] - ble _021EB20C - cmp r0, #0x3d - suble r0, r0, #4 - strleb r0, [r7] - ble _021EB20C - cmp r0, #0x3e - ldreqsb r0, [r4] - streqb r0, [r7] - beq _021EB20C - cmp r0, #0x3f - ldreqsb r0, [r4, #1] - streqb r0, [r7] -_021EB20C: - cmp r7, r5 - bhi _021EB1A8 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ; .align 2, 0 -_021EB218: .word alternateEncoding -_021EB21C: .word urlSafeEncodeing -_021EB220: .word defaultEncoding -_021EB224: .word 0x55555556 - arm_func_end B64Encode - - .rodata - - - .global alternateEncoding -alternateEncoding: ; 0x02215980 - .asciz "[]_" - - .global urlSafeEncodeing -urlSafeEncodeing: ; 0x02215984 - .asciz "-_=" - - .global defaultEncoding -defaultEncoding: ; 0x02215988 - .asciz "+/=" - - - - .data - - - .global randomnum -randomnum: ; 0x022178D8 - .word 0x1 - - .global Unk_ov4_022178DC -Unk_ov4_022178DC: ; 0x022178DC - .ascii "time" - .space 0x4 - - .global Unk_ov4_022178E4 -Unk_ov4_022178E4: ; 0x022178E4 - .ascii "current_time" - .space 0x4 - - .global Unk_ov4_022178F4 -Unk_ov4_022178F4: ; 0x022178F4 - .ascii "OS_IsTickAvailable() == TRUE" - .space 0x4 - - .global Unk_ov4_02217914 -Unk_ov4_02217914: ; 0x02217914 - .asciz "nonport.c" - .space 0x2 - - .global Unk_ov4_02217920 -Unk_ov4_02217920: ; 0x02217920 - .asciz "localhost" - .space 0x2 - - - .bss - - - .global Unk_ov4_0221AF2C -Unk_ov4_0221AF2C: ; 0x0221AF2C - .space 0x4 - - .global GSINitroErrno -GSINitroErrno: ; 0x0221AF30 - .space 0x4 - - .global Unk_ov4_0221AF34 -Unk_ov4_0221AF34: ; 0x0221AF34 - .space 0x10 - - .global Unk_ov4_0221AF44 -Unk_ov4_0221AF44: ; 0x0221AF44 - .space 0x14 - - .global Unk_ov4_0221AF58 -Unk_ov4_0221AF58: ; 0x0221AF58 - .space 0x18 - diff --git a/subprojects/gamespy/libraries/common/meson.build b/subprojects/gamespy/libraries/common/meson.build deleted file mode 100644 index cb7793cbce..0000000000 --- a/subprojects/gamespy/libraries/common/meson.build +++ /dev/null @@ -1,16 +0,0 @@ -libdwcgscommon_srcs = files( - 'asm/available.s', - 'asm/darray.s', - 'asm/hashtable.s', - 'asm/md5c.s', - 'asm/nonport.s' -) - -libdwcgscommon = static_library('dwcgscommon', - sources: libdwcgscommon_srcs, - nasm_args: asm_args, - include_directories: public_includes, - pic: false -) - -gamespy_libs += libdwcgscommon diff --git a/subprojects/gamespy/libraries/ghttp/asm/ghttpbuffer.s b/subprojects/gamespy/libraries/ghttp/asm/ghttpbuffer.s deleted file mode 100644 index c6cb496d49..0000000000 --- a/subprojects/gamespy/libraries/ghttp/asm/ghttpbuffer.s +++ /dev/null @@ -1,745 +0,0 @@ - .include "macros/function.inc" - .include "include/ghttpbuffer.inc" - - - - .text - - - arm_func_start ghiResizeBuffer -ghiResizeBuffer: ; 0x0221FE2C - stmfd sp!, {r3, r4, r5, lr} - movs r5, r0 - mov r4, r1 - bne _0221FE50 - ldr r0, _0221FEA8 ; =0x02228FD4 - ldr r1, _0221FEAC ; =0x02228FDC - ldr r2, _0221FEB0 ; =0x02228F68 - mov r3, #0x20 - bl __msl_assertion_failed -_0221FE50: - cmp r4, #0 - bgt _0221FE6C - ldr r0, _0221FEB4 ; =0x02228FEC - ldr r1, _0221FEAC ; =0x02228FDC - ldr r2, _0221FEB0 ; =0x02228F68 - mov r3, #0x21 - bl __msl_assertion_failed -_0221FE6C: - cmp r5, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r4, #0 - movle r0, #0 - ldmleia sp!, {r3, r4, r5, pc} - ldmib r5, {r0, r1} - add r4, r1, r4 - mov r1, r4 - bl DWCi_GsRealloc - cmp r0, #0 - moveq r0, #0 - stmneib r5, {r0, r4} - movne r0, #1 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_0221FEA8: .word Unk_ov60_02228FD4 -_0221FEAC: .word Unk_ov60_02228FDC -_0221FEB0: .word Unk_ov60_02228F68 -_0221FEB4: .word Unk_ov60_02228FEC - arm_func_end ghiResizeBuffer - - arm_func_start ghiInitBuffer -ghiInitBuffer: ; 0x0221FEB8 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - movs r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bne _0221FEE4 - ldr r0, _0221FFBC ; =0x02229000 - ldr r1, _0221FFC0 ; =0x02228FDC - ldr r2, _0221FFC4 ; =0x02228F48 - mov r3, #0x43 - bl __msl_assertion_failed -_0221FEE4: - cmp r6, #0 - bne _0221FF00 - ldr r0, _0221FFC8 ; =0x02228FD4 - ldr r1, _0221FFC0 ; =0x02228FDC - ldr r2, _0221FFC4 ; =0x02228F48 - mov r3, #0x44 - bl __msl_assertion_failed -_0221FF00: - cmp r5, #0 - bgt _0221FF1C - ldr r0, _0221FFCC ; =0x0222900C - ldr r1, _0221FFC0 ; =0x02228FDC - ldr r2, _0221FFC4 ; =0x02228F48 - mov r3, #0x45 - bl __msl_assertion_failed -_0221FF1C: - cmp r4, #0 - bgt _0221FF38 - ldr r0, _0221FFD0 ; =0x02228FEC - ldr r1, _0221FFC0 ; =0x02228FDC - ldr r2, _0221FFC4 ; =0x02228F48 - mov r3, #0x46 - bl __msl_assertion_failed -_0221FF38: - cmp r7, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - cmp r6, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - cmp r5, #0 - movle r0, #0 - ldmleia sp!, {r3, r4, r5, r6, r7, pc} - cmp r4, #0 - movle r0, #0 - ldmleia sp!, {r3, r4, r5, r6, r7, pc} - str r7, [r6, #0] - mov r2, #0 - str r2, [r6, #4] - str r2, [r6, #8] - str r2, [r6, #0xc] - str r2, [r6, #0x10] - str r4, [r6, #0x14] - str r2, [r6, #0x18] - str r2, [r6, #0x1c] - mov r0, r6 - mov r1, r5 - str r2, [r6, #0x20] - bl ghiResizeBuffer - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r6, #4] - mov r1, #0 - strb r1, [r0] - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_0221FFBC: .word Unk_ov60_02229000 -_0221FFC0: .word Unk_ov60_02228FDC -_0221FFC4: .word Unk_ov60_02228F48 -_0221FFC8: .word Unk_ov60_02228FD4 -_0221FFCC: .word Unk_ov60_0222900C -_0221FFD0: .word Unk_ov60_02228FEC - arm_func_end ghiInitBuffer - - arm_func_start ghiInitFixedBuffer -ghiInitFixedBuffer: ; 0x0221FFD4 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - movs r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bne _02220000 - ldr r0, _022200B8 ; =0x02229000 - ldr r1, _022200BC ; =0x02228FDC - ldr r2, _022200C0 ; =0x02228F78 - mov r3, #0x74 - bl __msl_assertion_failed -_02220000: - cmp r6, #0 - bne _0222001C - ldr r0, _022200C4 ; =0x02228FD4 - ldr r1, _022200BC ; =0x02228FDC - ldr r2, _022200C0 ; =0x02228F78 - mov r3, #0x75 - bl __msl_assertion_failed -_0222001C: - cmp r5, #0 - bne _02220038 - ldr r0, _022200C8 ; =0x0222901C - ldr r1, _022200BC ; =0x02228FDC - ldr r2, _022200C0 ; =0x02228F78 - mov r3, #0x76 - bl __msl_assertion_failed -_02220038: - cmp r4, #0 - bgt _02220054 - ldr r0, _022200CC ; =0x02229028 - ldr r1, _022200BC ; =0x02228FDC - ldr r2, _022200C0 ; =0x02228F78 - mov r3, #0x77 - bl __msl_assertion_failed -_02220054: - cmp r7, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - cmp r6, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - cmp r5, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - cmp r4, #0 - movle r0, #0 - ldmleia sp!, {r3, r4, r5, r6, r7, pc} - str r7, [r6, #0] - str r5, [r6, #4] - str r4, [r6, #8] - mov r2, #0 - str r2, [r6, #0xc] - str r2, [r6, #0x14] - mov r0, #1 - str r0, [r6, #0x18] - str r0, [r6, #0x1c] - str r2, [r6, #0x20] - ldr r1, [r6, #4] - strb r2, [r1] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_022200B8: .word Unk_ov60_02229000 -_022200BC: .word Unk_ov60_02228FDC -_022200C0: .word Unk_ov60_02228F78 -_022200C4: .word Unk_ov60_02228FD4 -_022200C8: .word Unk_ov60_0222901C -_022200CC: .word Unk_ov60_02229028 - arm_func_end ghiInitFixedBuffer - - arm_func_start ghiFreeBuffer -ghiFreeBuffer: ; 0x022200D0 - stmfd sp!, {r4, lr} - movs r4, r0 - bne _022200F0 - ldr r0, _02220124 ; =0x02228FD4 - ldr r1, _02220128 ; =0x02228FDC - ldr r2, _0222012C ; =0x02228F38 - mov r3, #0x9b - bl __msl_assertion_failed -_022200F0: - cmp r4, #0 - ldrne r0, [r4, #4] - cmpne r0, #0 - ldmeqia sp!, {r4, pc} - ldr r1, [r4, #0x1c] - cmp r1, #0 - bne _02220110 - bl DWCi_GsFree -_02220110: - mov r0, r4 - mov r1, #0 - mov r2, #0x24 - bl memset - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02220124: .word Unk_ov60_02228FD4 -_02220128: .word Unk_ov60_02228FDC -_0222012C: .word Unk_ov60_02228F38 - arm_func_end ghiFreeBuffer - - arm_func_start ghiAppendDataToBuffer -ghiAppendDataToBuffer: ; 0x02220130 - stmfd sp!, {r0, r1, r2, r3} - stmfd sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0xc - movs sb, r0 - mov r8, r1 - ldr r6, [sb] - bne _02220160 - ldr r0, _022203D4 ; =0x02228FD4 - ldr r1, _022203D8 ; =0x02228FDC - ldr r2, _022203DC ; =0x02228FA4 - mov r3, #0xb7 - bl __msl_assertion_failed -_02220160: - cmp r8, #0 - bne _0222017C - ldr r0, _022203E0 ; =0x02229034 - ldr r1, _022203D8 ; =0x02228FDC - ldr r2, _022203DC ; =0x02228FA4 - mov r3, #0xb8 - bl __msl_assertion_failed -_0222017C: - ldr r0, [sp, #0x30] - cmp r0, #0 - bge _0222019C - ldr r0, _022203E4 ; =0x0222903C - ldr r1, _022203D8 ; =0x02228FDC - ldr r2, _022203DC ; =0x02228FA4 - mov r3, #0xb9 - bl __msl_assertion_failed -_0222019C: - cmp sb, #0 - addeq sp, sp, #0xc - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, lr} - addeq sp, sp, #0x10 - bxeq lr - cmp r8, #0 - addeq sp, sp, #0xc - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, lr} - addeq sp, sp, #0x10 - bxeq lr - ldr r0, [sp, #0x30] - cmp r0, #0 - addlt sp, sp, #0xc - movlt r0, #0 - ldmltia sp!, {r4, r5, r6, r7, r8, sb, lr} - addlt sp, sp, #0x10 - bxlt lr - bne _022201F8 - mov r0, r8 - bl strlen - str r0, [sp, #0x30] -_022201F8: - ldr r0, [sb, #0x20] - cmp r0, #1 - bne _02220300 - ldr r0, [r6, #0x168] - cmp r0, #0 - bne _02220224 - ldr r0, _022203E8 ; =0x0222904C - ldr r1, _022203D8 ; =0x02228FDC - ldr r2, _022203DC ; =0x02228FA4 - mov r3, #0xce - bl __msl_assertion_failed -_02220224: - add r5, sp, #8 - add r4, sp, #0x30 -_0222022C: - ldr r2, [sb, #8] - ldr r1, [sb, #0xc] - mov r0, r6 - sub r1, r2, r1 - str r1, [sp, #8] - ldr r3, [sb, #4] - ldr r1, [sb, #0xc] - mov r2, r8 - add r1, r3, r1 - stmia sp, {r1, r5} - ldr r7, [r6, #0x17c] - mov r3, r4 - add r1, r6, #0x164 - blx r7 - mov r7, r0 - cmp r7, #2 - bne _022202E4 - ldr r0, [sb, #0x18] - cmp r0, #0 - beq _022202A8 - ldr r0, [sb] - mov r1, #1 - str r1, [r0, #0xfc] - ldr r0, [sb] - mov r1, #2 - str r1, [r0, #0x38] - add sp, sp, #0xc - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} - add sp, sp, #0x10 - bx lr -_022202A8: - ldr r1, [sb, #0x14] - mov r0, sb - bl ghiResizeBuffer - cmp r0, #0 - beq _022202F4 - ldr r0, [sb] - mov r2, #1 - str r2, [r0, #0xfc] - ldr r1, [sb] - add sp, sp, #0xc - str r2, [r1, #0x38] - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} - add sp, sp, #0x10 - bx lr -_022202E4: - ldr r1, [sb, #0xc] - ldr r0, [sp, #8] - add r0, r1, r0 - str r0, [sb, #0xc] -_022202F4: - cmp r7, #2 - beq _0222022C - b _022203C0 -_02220300: - ldr r2, [sb, #0xc] - ldr r1, [sp, #0x30] - ldr r0, [sb, #8] - add r4, r2, r1 - cmp r4, r0 - blt _02220398 -_02220318: - ldr r0, [sb, #0x18] - cmp r0, #0 - beq _02220350 - ldr r0, [sb] - mov r1, #1 - str r1, [r0, #0xfc] - ldr r0, [sb] - mov r1, #2 - str r1, [r0, #0x38] - add sp, sp, #0xc - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} - add sp, sp, #0x10 - bx lr -_02220350: - ldr r1, [sb, #0x14] - mov r0, sb - bl ghiResizeBuffer - cmp r0, #0 - bne _0222038C - ldr r0, [sb] - mov r2, #1 - str r2, [r0, #0xfc] - ldr r1, [sb] - add sp, sp, #0xc - str r2, [r1, #0x38] - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} - add sp, sp, #0x10 - bx lr -_0222038C: - ldr r0, [sb, #8] - cmp r4, r0 - bge _02220318 -_02220398: - ldr r3, [sb, #4] - ldr r0, [sb, #0xc] - ldr r2, [sp, #0x30] - mov r1, r8 - add r0, r3, r0 - bl memcpy - str r4, [sb, #0xc] - ldr r0, [sb, #4] - mov r1, #0 - strb r1, [r0, r4] -_022203C0: - mov r0, #1 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} - add sp, sp, #0x10 - bx lr - ; .align 2, 0 -_022203D4: .word Unk_ov60_02228FD4 -_022203D8: .word Unk_ov60_02228FDC -_022203DC: .word Unk_ov60_02228FA4 -_022203E0: .word Unk_ov60_02229034 -_022203E4: .word Unk_ov60_0222903C -_022203E8: .word Unk_ov60_0222904C - arm_func_end ghiAppendDataToBuffer - - arm_func_start ghiAppendHeaderToBuffer -ghiAppendHeaderToBuffer: ; 0x022203EC - stmfd sp!, {r3, r4, r5, lr} - mov r4, r2 - mov r2, #0 - mov r5, r0 - bl ghiAppendDataToBuffer - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, _02220464 ; =0x02229088 - mov r0, r5 - mov r2, #2 - bl ghiAppendDataToBuffer - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, r4 - mov r2, #0 - bl ghiAppendDataToBuffer - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, _02220468 ; =0x0222908C - mov r0, r5 - mov r2, #2 - bl ghiAppendDataToBuffer - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02220464: .word Unk_ov60_02229088 -_02220468: .word Unk_ov60_0222908C - arm_func_end ghiAppendHeaderToBuffer - - arm_func_start ghiAppendCharToBuffer -ghiAppendCharToBuffer: ; 0x0222046C - stmfd sp!, {r3, r4, lr} - sub sp, sp, #4 - movs r4, r0 - strb r1, [sp] - bne _02220494 - ldr r0, _022204BC ; =0x02228FD4 - ldr r1, _022204C0 ; =0x02228FDC - ldr r2, _022204C4 ; =0x02228F8C - ldr r3, _022204C8 ; =0x00000131 - bl __msl_assertion_failed -_02220494: - cmp r4, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, pc} - add r1, sp, #0 - mov r0, r4 - mov r2, #1 - bl ghiAppendDataToBuffer - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - ; .align 2, 0 -_022204BC: .word Unk_ov60_02228FD4 -_022204C0: .word Unk_ov60_02228FDC -_022204C4: .word Unk_ov60_02228F8C -_022204C8: .word 0x00000131 - arm_func_end ghiAppendCharToBuffer - - arm_func_start ghiAppendIntToBuffer -ghiAppendIntToBuffer: ; 0x022204CC - stmfd sp!, {r4, lr} - sub sp, sp, #0x10 - mov r2, r1 - mov r4, r0 - ldr r1, _02220500 ; =0x02229090 - add r0, sp, #0 - bl sprintf - add r1, sp, #0 - mov r0, r4 - mov r2, #0 - bl ghiAppendDataToBuffer - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02220500: .word Unk_ov60_02229090 - arm_func_end ghiAppendIntToBuffer - - arm_func_start ghiResetBuffer -ghiResetBuffer: ; 0x02220504 - stmfd sp!, {r4, lr} - movs r4, r0 - bne _02220524 - ldr r0, _0222053C ; =0x02228FD4 - ldr r1, _02220540 ; =0x02228FDC - ldr r2, _02220544 ; =0x02228F58 - mov r3, #0x16c - bl __msl_assertion_failed -_02220524: - mov r1, #0 - str r1, [r4, #0xc] - str r1, [r4, #0x10] - ldr r0, [r4, #4] - strb r1, [r0] - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0222053C: .word Unk_ov60_02228FD4 -_02220540: .word Unk_ov60_02228FDC -_02220544: .word Unk_ov60_02228F58 - arm_func_end ghiResetBuffer - - arm_func_start ghiSendBufferedData -ghiSendBufferedData: ; 0x02220548 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #8 - mov r7, r0 - mov r6, #0 - add r5, sp, #4 - add r4, sp, #0 - mvn r8, #0 -_02220564: - ldr r0, [r7, #0x48] - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl GSISocketSelect - cmp r0, r8 - beq _0222058C - ldr r0, [sp] - cmp r0, #0 - beq _022205B4 -_0222058C: - mov r0, #1 - str r0, [r7, #0xfc] - mov r0, #5 - str r0, [r7, #0x38] - ldr r0, [r7, #0x48] - bl GOAGetLastError - str r0, [r7, #0x4c] - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022205B4: - ldr r0, [sp, #4] - cmp r0, #0 - addeq sp, sp, #8 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldr r3, [r7, #0x60] - ldr r1, [r7, #0x54] - ldr r2, [r7, #0x5c] - mov r0, r7 - add r1, r1, r3 - sub r2, r2, r3 - bl ghiDoSend - cmp r0, r8 - addeq sp, sp, #8 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldr r1, [r7, #0x60] - add r1, r1, r0 - str r1, [r7, #0x60] - ldr r0, [r7, #0x5c] - cmp r1, r0 - blt _02220564 - mov r0, #1 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end ghiSendBufferedData - - arm_func_start ghiReadDataFromBuffer -ghiReadDataFromBuffer: ; 0x02220618 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - movs r7, r0 - mov r6, r1 - mov r5, r2 - bne _02220640 - ldr r0, _022206C0 ; =0x02229094 - ldr r1, _022206C4 ; =0x02228FDC - ldr r2, _022206C8 ; =0x02228FBC - ldr r3, _022206CC ; =0x000001B7 - bl __msl_assertion_failed -_02220640: - cmp r5, #0 - bne _0222065C - ldr r0, _022206D0 ; =0x022290A8 - ldr r1, _022206C4 ; =0x02228FDC - ldr r2, _022206C8 ; =0x02228FBC - mov r3, #0x1b8 - bl __msl_assertion_failed -_0222065C: - ldr r4, [r5, #0] - cmp r4, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r3, [r7, #0x10] - ldr r0, [r7, #0xc] - sub r0, r0, r3 - cmp r0, #0 - movle r0, #0 - ldmleia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, [r7, #4] - cmp r4, r0 - movge r4, r0 - mov r0, r6 - mov r2, r4 - add r1, r1, r3 - bl memcpy - mov r0, #0 - strb r0, [r6, r4] - str r4, [r5, #0] - ldr r1, [r7, #0x10] - mov r0, #1 - add r1, r1, r4 - str r1, [r7, #0x10] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_022206C0: .word Unk_ov60_02229094 -_022206C4: .word Unk_ov60_02228FDC -_022206C8: .word Unk_ov60_02228FBC -_022206CC: .word 0x000001B7 -_022206D0: .word Unk_ov60_022290A8 - arm_func_end ghiReadDataFromBuffer - - .data - - - .global Unk_ov60_02228F38 -Unk_ov60_02228F38: ; 0x02228F38 - .incbin "incbin/overlay60_data.bin", 0xF8, 0x108 - 0xF8 - - .global Unk_ov60_02228F48 -Unk_ov60_02228F48: ; 0x02228F48 - .incbin "incbin/overlay60_data.bin", 0x108, 0x118 - 0x108 - - .global Unk_ov60_02228F58 -Unk_ov60_02228F58: ; 0x02228F58 - .incbin "incbin/overlay60_data.bin", 0x118, 0x128 - 0x118 - - .global Unk_ov60_02228F68 -Unk_ov60_02228F68: ; 0x02228F68 - .incbin "incbin/overlay60_data.bin", 0x128, 0x138 - 0x128 - - .global Unk_ov60_02228F78 -Unk_ov60_02228F78: ; 0x02228F78 - .incbin "incbin/overlay60_data.bin", 0x138, 0x14C - 0x138 - - .global Unk_ov60_02228F8C -Unk_ov60_02228F8C: ; 0x02228F8C - .incbin "incbin/overlay60_data.bin", 0x14C, 0x164 - 0x14C - - .global Unk_ov60_02228FA4 -Unk_ov60_02228FA4: ; 0x02228FA4 - .incbin "incbin/overlay60_data.bin", 0x164, 0x17C - 0x164 - - .global Unk_ov60_02228FBC -Unk_ov60_02228FBC: ; 0x02228FBC - .incbin "incbin/overlay60_data.bin", 0x17C, 0x194 - 0x17C - - .global Unk_ov60_02228FD4 -Unk_ov60_02228FD4: ; 0x02228FD4 - .incbin "incbin/overlay60_data.bin", 0x194, 0x19C - 0x194 - - .global Unk_ov60_02228FDC -Unk_ov60_02228FDC: ; 0x02228FDC - .incbin "incbin/overlay60_data.bin", 0x19C, 0x1AC - 0x19C - - .global Unk_ov60_02228FEC -Unk_ov60_02228FEC: ; 0x02228FEC - .incbin "incbin/overlay60_data.bin", 0x1AC, 0x1C0 - 0x1AC - - .global Unk_ov60_02229000 -Unk_ov60_02229000: ; 0x02229000 - .incbin "incbin/overlay60_data.bin", 0x1C0, 0x1CC - 0x1C0 - - .global Unk_ov60_0222900C -Unk_ov60_0222900C: ; 0x0222900C - .incbin "incbin/overlay60_data.bin", 0x1CC, 0x1DC - 0x1CC - - .global Unk_ov60_0222901C -Unk_ov60_0222901C: ; 0x0222901C - .incbin "incbin/overlay60_data.bin", 0x1DC, 0x1E8 - 0x1DC - - .global Unk_ov60_02229028 -Unk_ov60_02229028: ; 0x02229028 - .incbin "incbin/overlay60_data.bin", 0x1E8, 0x1F4 - 0x1E8 - - .global Unk_ov60_02229034 -Unk_ov60_02229034: ; 0x02229034 - .incbin "incbin/overlay60_data.bin", 0x1F4, 0x1FC - 0x1F4 - - .global Unk_ov60_0222903C -Unk_ov60_0222903C: ; 0x0222903C - .incbin "incbin/overlay60_data.bin", 0x1FC, 0x20C - 0x1FC - - .global Unk_ov60_0222904C -Unk_ov60_0222904C: ; 0x0222904C - .incbin "incbin/overlay60_data.bin", 0x20C, 0x248 - 0x20C - - .global Unk_ov60_02229088 -Unk_ov60_02229088: ; 0x02229088 - .incbin "incbin/overlay60_data.bin", 0x248, 0x24C - 0x248 - - .global Unk_ov60_0222908C -Unk_ov60_0222908C: ; 0x0222908C - .incbin "incbin/overlay60_data.bin", 0x24C, 0x250 - 0x24C - - .global Unk_ov60_02229090 -Unk_ov60_02229090: ; 0x02229090 - .incbin "incbin/overlay60_data.bin", 0x250, 0x254 - 0x250 - - .global Unk_ov60_02229094 -Unk_ov60_02229094: ; 0x02229094 - .incbin "incbin/overlay60_data.bin", 0x254, 0x268 - 0x254 - - .global Unk_ov60_022290A8 -Unk_ov60_022290A8: ; 0x022290A8 - .incbin "incbin/overlay60_data.bin", 0x268, 0xC - diff --git a/subprojects/gamespy/libraries/ghttp/asm/ghttpcallbacks.s b/subprojects/gamespy/libraries/ghttp/asm/ghttpcallbacks.s deleted file mode 100644 index cfb3411a0d..0000000000 --- a/subprojects/gamespy/libraries/ghttp/asm/ghttpcallbacks.s +++ /dev/null @@ -1,141 +0,0 @@ - .include "macros/function.inc" - .include "include/ghttpcallbacks.inc" - - - - .text - - - arm_func_start ghiCallCompletedCallback -ghiCallCompletedCallback: ; 0x022206D4 - stmfd sp!, {r3, r4, r5, lr} - movs r5, r0 - bne _022206F4 - ldr r0, _02220748 ; =0x022290FC - ldr r1, _0222074C ; =0x02229108 - ldr r2, _02220750 ; =0x022290E0 - mov r3, #0x1b - bl __msl_assertion_failed -_022206F4: - ldr ip, [r5, #0x40] - cmp ip, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, [r5, #0xc] - cmp r0, #0 - movne r4, #0 - movne r3, r4 - ldreq r4, [r5, #0xc0] - ldreq r3, [r5, #0x100] - ldr r0, [r5, #0x44] - mov r2, r4 - str r0, [sp] - ldr r0, [r5, #4] - ldr r1, [r5, #0x38] - blx ip - cmp r4, #0 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r0, #0 - moveq r0, #1 - streq r0, [r5, #0xd8] - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02220748: .word Unk_ov60_022290FC -_0222074C: .word Unk_ov60_02229108 -_02220750: .word Unk_ov60_022290E0 - arm_func_end ghiCallCompletedCallback - - arm_func_start ghiCallProgressCallback -ghiCallProgressCallback: ; 0x02220754 - stmfd sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0xc - movs r6, r0 - mov r5, r1 - mov r4, r2 - bne _02220780 - ldr r0, _022207C4 ; =0x022290FC - ldr r1, _022207C8 ; =0x02229108 - ldr r2, _022207CC ; =0x022290C8 - mov r3, #0x45 - bl __msl_assertion_failed -_02220780: - ldr ip, [r6, #0x3c] - cmp ip, #0 - addeq sp, sp, #0xc - ldmeqia sp!, {r3, r4, r5, r6, pc} - ldr r0, [r6, #0x100] - mov r2, r5 - str r0, [sp] - ldr r0, [r6, #0x104] - mov r3, r4 - str r0, [sp, #4] - ldr r0, [r6, #0x44] - str r0, [sp, #8] - ldr r0, [r6, #4] - ldr r1, [r6, #0x10] - blx ip - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, pc} - ; .align 2, 0 -_022207C4: .word Unk_ov60_022290FC -_022207C8: .word Unk_ov60_02229108 -_022207CC: .word Unk_ov60_022290C8 - arm_func_end ghiCallProgressCallback - - arm_func_start ghiCallPostCallback -ghiCallPostCallback: ; 0x022207D0 - stmfd sp!, {r4, lr} - sub sp, sp, #8 - movs r4, r0 - bne _022207F4 - ldr r0, _02220838 ; =0x022290FC - ldr r1, _0222083C ; =0x02229108 - ldr r2, _02220840 ; =0x022290B4 - mov r3, #0x5e - bl __msl_assertion_failed -_022207F4: - ldr r0, [r4, #0x150] - cmp r0, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r4, pc} - ldr r0, [r4, #0x140] - bl ArrayLength - str r0, [sp] - ldr r0, [r4, #0x44] - str r0, [sp, #4] - ldr r0, [r4, #4] - ldr r1, [r4, #0x148] - ldr r2, [r4, #0x14c] - ldr r3, [r4, #0x144] - ldr ip, [r4, #0x150] - blx ip - add sp, sp, #8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02220838: .word Unk_ov60_022290FC -_0222083C: .word Unk_ov60_02229108 -_02220840: .word Unk_ov60_022290B4 - arm_func_end ghiCallPostCallback - - .data - - - .global Unk_ov60_022290B4 -Unk_ov60_022290B4: ; 0x022290B4 - .incbin "incbin/overlay60_data.bin", 0x274, 0x288 - 0x274 - - .global Unk_ov60_022290C8 -Unk_ov60_022290C8: ; 0x022290C8 - .incbin "incbin/overlay60_data.bin", 0x288, 0x2A0 - 0x288 - - .global Unk_ov60_022290E0 -Unk_ov60_022290E0: ; 0x022290E0 - .incbin "incbin/overlay60_data.bin", 0x2A0, 0x2BC - 0x2A0 - - .global Unk_ov60_022290FC -Unk_ov60_022290FC: ; 0x022290FC - .incbin "incbin/overlay60_data.bin", 0x2BC, 0x2C8 - 0x2BC - - .global Unk_ov60_02229108 -Unk_ov60_02229108: ; 0x02229108 - .incbin "incbin/overlay60_data.bin", 0x2C8, 0x11 - diff --git a/subprojects/gamespy/libraries/ghttp/asm/ghttpcommon.s b/subprojects/gamespy/libraries/ghttp/asm/ghttpcommon.s deleted file mode 100644 index 3c130f270f..0000000000 --- a/subprojects/gamespy/libraries/ghttp/asm/ghttpcommon.s +++ /dev/null @@ -1,347 +0,0 @@ - .include "macros/function.inc" - .include "include/ghttpcommon.inc" - - - - .text - - - arm_func_start ghiCreateLock -ghiCreateLock: ; 0x02220844 - bx lr - arm_func_end ghiCreateLock - - arm_func_start ghiFreeLock -ghiFreeLock: ; 0x02220848 - bx lr - arm_func_end ghiFreeLock - - arm_func_start ghiLock -ghiLock: ; 0x0222084C - bx lr - arm_func_end ghiLock - - arm_func_start ghiUnlock -ghiUnlock: ; 0x02220850 - bx lr - arm_func_end ghiUnlock - - arm_func_start ghiDecryptReceivedData -ghiDecryptReceivedData: ; 0x02220854 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x10 - mov r1, #0 - mov r7, r0 - str r1, [sp, #0xc] - str r1, [sp, #8] - add r5, sp, #8 - add r4, sp, #0xc -_02220874: - ldr ip, [r7, #0xa8] - ldr r0, [r7, #0xa4] - ldr r2, [r7, #0x9c] - sub r0, r0, ip - str r0, [sp, #0xc] - ldr r3, [r7, #0x80] - ldr r0, [r7, #0x7c] - ldr r1, [r7, #0x78] - sub r0, r0, r3 - str r0, [sp, #8] - add r0, r1, r3 - stmia sp, {r0, r5} - ldr r6, [r7, #0x180] - mov r0, r7 - mov r3, r4 - add r1, r7, #0x164 - add r2, r2, ip - blx r6 - mov r6, r0 - cmp r6, #2 - bne _022208E4 - ldr r1, [r7, #0x88] - add r0, r7, #0x74 - bl ghiResizeBuffer - cmp r0, #0 - addeq sp, sp, #0x10 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} -_022208E4: - cmp r6, #2 - ldreq r0, [sp, #8] - cmpeq r0, #0 - beq _02220874 - ldr r1, [r7, #0xa8] - ldr r0, [sp, #0xc] - add r0, r1, r0 - str r0, [r7, #0xa8] - ldr r1, [r7, #0x80] - ldr r0, [sp, #8] - add r0, r1, r0 - str r0, [r7, #0x80] - ldr r1, [r7, #0xa8] - cmp r1, #0xff - ble _02220954 - ldr r0, [r7, #0xa4] - subs r4, r0, r1 - bne _02220938 - add r0, r7, #0x98 - bl ghiResetBuffer - b _02220954 -_02220938: - ldr r0, [r7, #0x9c] - mov r2, r4 - add r1, r0, r1 - bl memmove - mov r0, #0 - str r0, [r7, #0xa8] - str r4, [r7, #0xa4] -_02220954: - cmp r6, #3 - addne sp, sp, #0x10 - mov r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - str r0, [r7, #0xfc] - mov r0, #0x11 - str r0, [r7, #0x38] - mov r0, #0 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ghiDecryptReceivedData - - arm_func_start ghiDoReceive -ghiDoReceive: ; 0x0222097C - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r5, r2 - ldr r2, [r5, #0] - ldr r0, [r7, #0x134] - mov r6, r1 - cmp r0, #0 - sub r4, r2, #1 - beq _022209D0 - bl current_time - ldr r1, _02220B8C ; =0x0222911C - ldr r3, [r7, #0x138] - ldr r2, [r1, #0] - add r2, r3, r2 - cmp r0, r2 - movlo r0, #1 - ldmloia sp!, {r3, r4, r5, r6, r7, pc} - str r0, [r7, #0x138] - ldr r0, [r1, #4] - cmp r4, r0 - movge r4, r0 -_022209D0: - ldr r1, [r7, #0x84] - ldr r0, [r7, #0x80] - cmp r1, r0 - bge _02220A18 - mov r1, r6 - mov r2, r5 - add r0, r7, #0x74 - bl ghiReadDataFromBuffer - ldr r1, [r7, #0x84] - ldr r0, [r7, #0x80] - cmp r1, r0 - bne _02220A10 - ldr r0, [r7, #0xf8] - str r0, [r7, #0x80] - ldr r0, [r7, #0xf8] - str r0, [r7, #0x84] -_02220A10: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02220A18: - ldr r0, [r7, #0x48] - mov r1, r6 - mov r2, r4 - mov r3, #0 - bl recv - mov r2, r0 - mvn r0, #0 - str r2, [sp] - cmp r2, r0 - bne _02220A88 - ldr r0, [r7, #0x48] - bl GOAGetLastError - mvn r2, #5 - cmp r0, r2 - subne r1, r2, #0x14 - cmpne r0, r1 - subne r1, r2, #0x46 - cmpne r0, r1 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r2, #1 - str r2, [r7, #0xfc] - mov r1, #5 - str r1, [r7, #0x38] - str r0, [r7, #0x4c] - str r2, [r7, #0x130] - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02220A88: - cmp r2, #0 - bne _02220AA0 - mov r0, #1 - str r0, [r7, #0x130] - mov r0, #2 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02220AA0: - ldr r0, [r7, #0x168] - cmp r0, #0 - beq _02220B6C - mov r1, r6 - add r0, r7, #0x98 - bl ghiAppendDataToBuffer - cmp r0, #0 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r7 - bl ghiDecryptReceivedData - cmp r0, #0 - bne _02220AEC - mov r0, #1 - str r0, [r7, #0xfc] - mov r0, #0x11 - str r0, [r7, #0x38] - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02220AEC: - ldr r1, [r7, #0x80] - ldr r0, [r7, #0x84] - sub r0, r1, r0 - cmp r0, #0 - bgt _02220B14 - mov r0, #0 - strb r0, [r6] - str r0, [r5, #0] - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02220B14: - ldr r0, [r5, #0] - add r2, sp, #0 - sub r3, r0, #1 - mov r1, r6 - add r0, r7, #0x74 - str r3, [sp] - bl ghiReadDataFromBuffer - cmp r0, #0 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, [r7, #0x84] - ldr r0, [r7, #0x80] - cmp r1, r0 - bne _02220B5C - ldr r0, [r7, #0xf8] - str r0, [r7, #0x80] - ldr r0, [r7, #0xf8] - str r0, [r7, #0x84] -_02220B5C: - ldr r2, [sp] - cmp r2, #0 - movle r0, #1 - ldmleia sp!, {r3, r4, r5, r6, r7, pc} -_02220B6C: - mov r0, #0 - strb r0, [r6, r2] - ldr r1, [sp] - str r1, [r5, #0] - ldr r1, [sp] - cmp r1, #0 - movle r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02220B8C: .word ghiThrottleTimeDelay - arm_func_end ghiDoReceive - - arm_func_start ghiDoSend -ghiDoSend: ; 0x02220B90 - stmfd sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4, #0x48] - mov r3, #0 - bl send - mvn r1, #0 - cmp r0, r1 - bne _02220BF4 - ldr r0, [r4, #0x48] - bl GOAGetLastError - mvn r2, #5 - cmp r0, r2 - subne r1, r2, #0x14 - cmpne r0, r1 - subne r1, r2, #0x46 - cmpne r0, r1 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - mov r1, #1 - str r1, [r4, #0xfc] - mov r1, #5 - str r1, [r4, #0x38] - str r0, [r4, #0x4c] - sub r0, r1, #6 - ldmia sp!, {r4, pc} -_02220BF4: - ldr r1, [r4, #0x10] - cmp r1, #4 - ldreq r1, [r4, #0x148] - addeq r1, r1, r0 - streq r1, [r4, #0x148] - ldmia sp!, {r4, pc} - arm_func_end ghiDoSend - - arm_func_start ghiTrySendThenBuffer -ghiTrySendThenBuffer: ; 0x02220C0C - stmfd sp!, {r4, r5, r6, lr} - mov r6, r0 - ldr r3, [r6, #0x5c] - mov r5, r1 - mov r4, r2 - cmp r3, #0 - mov r3, #0 - bne _02220C50 - bl ghiDoSend - mov r3, r0 - mvn r0, #0 - cmp r3, r0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - cmp r3, r4 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, pc} -_02220C50: - add r0, r6, #0x50 - add r1, r5, r3 - sub r2, r4, r3 - bl ghiAppendDataToBuffer - cmp r0, #0 - moveq r0, #0 - movne r0, #2 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ghiTrySendThenBuffer - - .data - - - .global ghiThrottleTimeDelay -ghiThrottleTimeDelay: ; 0x0222911C - .incbin "incbin/overlay60_data.bin", 0x2DC, 0x2E0 - 0x2DC - - .global ghiThrottleBufferSize -ghiThrottleBufferSize: ; 0x02229120 - .incbin "incbin/overlay60_data.bin", 0x2E0, 0x4 - - - - .bss - - - .global Unk_ov60_02229E24 -Unk_ov60_02229E24: ; 0x02229E24 - .space 0x4 - - .global Unk_ov60_02229E28 -Unk_ov60_02229E28: ; 0x02229E28 - .space 0x4 - diff --git a/subprojects/gamespy/libraries/ghttp/asm/ghttpconnection.s b/subprojects/gamespy/libraries/ghttp/asm/ghttpconnection.s deleted file mode 100644 index e4b56cfa14..0000000000 --- a/subprojects/gamespy/libraries/ghttp/asm/ghttpconnection.s +++ /dev/null @@ -1,607 +0,0 @@ - .include "macros/function.inc" - .include "include/ghttpconnection.inc" - - - - .text - - - arm_func_start ghiFindFreeSlot -ghiFindFreeSlot: ; 0x02220C70 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r1, _02220D7C ; =0x02229E2C - mov r0, #0 - ldr r3, [r1, #0xc] - cmp r3, #0 - ble _02220CA8 - ldr r2, [r1, #4] -_02220C8C: - ldr r1, [r2, r0, lsl #2] - ldr r1, [r1, #0] - cmp r1, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - add r0, r0, #1 - cmp r0, r3 - blt _02220C8C -_02220CA8: - ldr r0, _02220D7C ; =0x02229E2C - ldr r0, [r0, #0] - cmp r0, r3 - beq _02220CCC - ldr r0, _02220D80 ; =0x02229178 - ldr r1, _02220D84 ; =0x022291A0 - ldr r2, _02220D88 ; =0x02229124 - mov r3, #0x33 - bl __msl_assertion_failed -_02220CCC: - ldr r0, _02220D7C ; =0x02229E2C - ldr r6, [r0, #0xc] - ldr r0, [r0, #4] - add r5, r6, #4 - mov r1, r5, lsl #2 - bl DWCi_GsRealloc - cmp r0, #0 - mvneq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldr r8, _02220D7C ; =0x02229E2C - mov r7, r6 - str r0, [r8, #4] - cmp r6, r5 - bge _02220D6C - mov sb, #0 - mov r4, #0x184 -_02220D0C: - mov r0, r4 - bl DWCi_GsMalloc - ldr r1, [r8, #4] - str r0, [r1, r7, lsl #2] - ldr r0, [r8, #4] - ldr r0, [r0, r7, lsl #2] - cmp r0, #0 - bne _02220D5C - sub r7, r7, #1 - cmp r7, r6 - blt _02220D54 - ldr r4, _02220D7C ; =0x02229E2C -_02220D3C: - ldr r0, [r4, #4] - ldr r0, [r0, r7, lsl #2] - bl DWCi_GsFree - sub r7, r7, #1 - cmp r7, r6 - bge _02220D3C -_02220D54: - mvn r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_02220D5C: - add r7, r7, #1 - str sb, [r0] - cmp r7, r5 - blt _02220D0C -_02220D6C: - ldr r1, _02220D7C ; =0x02229E2C - mov r0, r6 - str r5, [r1, #0xc] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ; .align 2, 0 -_02220D7C: .word Unk_ov60_02229E2C -_02220D80: .word Unk_ov60_02229178 -_02220D84: .word Unk_ov60_022291A0 -_02220D88: .word Unk_ov60_02229124 - arm_func_end ghiFindFreeSlot - - arm_func_start ghiNewConnection -ghiNewConnection: ; 0x02220D8C - stmfd sp!, {r3, r4, r5, lr} - bl ghiLock - bl ghiFindFreeSlot - mov r5, r0 - mvn r0, #0 - cmp r5, r0 - bne _02220DB4 - bl ghiUnlock - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_02220DB4: - ldr r0, _02220F20 ; =0x02229E2C - mov r1, #0 - ldr r0, [r0, #4] - mov r2, #0x184 - ldr r4, [r0, r5, lsl #2] - mov r0, r4 - bl memset - mov r0, #1 - str r0, [r4, #0] - ldr r0, _02220F20 ; =0x02229E2C - str r5, [r4, #4] - ldr r2, [r0, #8] - mov ip, #0 - add r1, r2, #1 - str r1, [r0, #8] - str r2, [r4, #8] - str ip, [r4, #0xc] - str ip, [r4, #0x10] - str ip, [r4, #0x14] - str ip, [r4, #0x18] - str ip, [r4, #0x1c] - strh ip, [r4, #0x20] - str ip, [r4, #0x24] - str ip, [r4, #0x28] - str ip, [r4, #0x2c] - str ip, [r4, #0x30] - str ip, [r4, #0x34] - str ip, [r4, #0x38] - str ip, [r4, #0x3c] - str ip, [r4, #0x40] - str ip, [r4, #0x44] - sub r0, ip, #1 - str r0, [r4, #0x48] - str ip, [r4, #0x4c] - str ip, [r4, #0xe0] - str ip, [r4, #0xe4] - str ip, [r4, #0xe8] - str ip, [r4, #0xec] - str ip, [r4, #0xf0] - str ip, [r4, #0xf4] - str ip, [r4, #0xf8] - str ip, [r4, #0xfc] - str ip, [r4, #0x100] - str r0, [r4, #0x104] - str ip, [r4, #0x108] - str ip, [r4, #0x10c] - str ip, [r4, #0x110] - str ip, [r4, #0x12c] - str ip, [r4, #0x134] - str ip, [r4, #0x138] - str ip, [r4, #0x13c] - mov r0, #0x1f4 - str r0, [r4, #0x158] - add r0, r4, #0x100 - mov r1, #0x50 - strh r1, [r0, #0x60] - str ip, [r4, #0x15c] - mov r0, r4 - add r1, r4, #0x50 - mov r2, #0x800 - mov r3, #0x1000 - str ip, [r4, #0x164] - bl ghiInitBuffer - cmp r0, #0 - beq _02220ECC - mov r2, #0x800 - mov r0, r4 - mov r3, r2 - add r1, r4, #0x74 - bl ghiInitBuffer -_02220ECC: - cmp r0, #0 - beq _02220EE8 - mov r0, r4 - add r1, r4, #0x98 - mov r2, #0x800 - mov r3, #0x400 - bl ghiInitBuffer -_02220EE8: - cmp r0, #0 - bne _02220F04 - mov r0, r4 - bl ghiFreeConnection - bl ghiUnlock - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_02220F04: - ldr r0, _02220F20 ; =0x02229E2C - ldr r1, [r0, #0] - add r1, r1, #1 - str r1, [r0, #0] - bl ghiUnlock - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02220F20: .word Unk_ov60_02229E2C - arm_func_end ghiNewConnection - - arm_func_start ghiFreeConnection -ghiFreeConnection: ; 0x02220F24 - stmfd sp!, {r4, lr} - movs r4, r0 - bne _02220F44 - ldr r0, _022210EC ; =0x022291B4 - ldr r1, _022210F0 ; =0x022291A0 - ldr r2, _022210F4 ; =0x02229134 - mov r3, #0xb3 - bl __msl_assertion_failed -_02220F44: - ldr r0, [r4, #4] - cmp r0, #0 - bge _02220F64 - ldr r0, _022210F8 ; =0x022291C0 - ldr r1, _022210F0 ; =0x022291A0 - ldr r2, _022210F4 ; =0x02229134 - mov r3, #0xb4 - bl __msl_assertion_failed -_02220F64: - ldr r0, _022210FC ; =0x02229E2C - ldr r1, [r4, #4] - ldr r0, [r0, #0xc] - cmp r1, r0 - blt _02220F8C - ldr r0, _02221100 ; =0x022291DC - ldr r1, _022210F0 ; =0x022291A0 - ldr r2, _022210F4 ; =0x02229134 - mov r3, #0xb5 - bl __msl_assertion_failed -_02220F8C: - ldr r0, [r4, #0] - cmp r0, #0 - bne _02220FAC - ldr r0, _02221104 ; =0x02229204 - ldr r1, _022210F0 ; =0x022291A0 - ldr r2, _022210F4 ; =0x02229134 - mov r3, #0xb6 - bl __msl_assertion_failed -_02220FAC: - cmp r4, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldr r0, [r4, #0] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldr r1, [r4, #4] - cmp r1, #0 - movlt r0, #0 - ldmltia sp!, {r4, pc} - ldr r0, _022210FC ; =0x02229E2C - ldr r0, [r0, #0xc] - cmp r1, r0 - movge r0, #0 - ldmgeia sp!, {r4, pc} - bl ghiLock - ldr r0, [r4, #0x14] - bl DWCi_GsFree - ldr r0, [r4, #0x18] - bl DWCi_GsFree - ldr r0, [r4, #0x24] - bl DWCi_GsFree - ldr r0, [r4, #0x28] - bl DWCi_GsFree - ldr r0, [r4, #0x108] - bl DWCi_GsFree - ldr r0, [r4, #0x15c] - bl DWCi_GsFree - ldr r0, [r4, #0x48] - mvn r1, #0 - cmp r0, r1 - beq _02221040 - mov r1, #2 - bl shutdown - ldr r0, [r4, #0x48] - bl closesocket -_02221040: - add r0, r4, #0x50 - bl ghiFreeBuffer - add r0, r4, #0x74 - bl ghiFreeBuffer - add r0, r4, #0x98 - bl ghiFreeBuffer - add r0, r4, #0xbc - bl ghiFreeBuffer - ldr r0, [r4, #0x140] - cmp r0, #0 - beq _02221074 - mov r0, r4 - bl ghiPostCleanupState -_02221074: - ldr r0, [r4, #0x13c] - cmp r0, #0 - beq _0222109C - bl ghiIsPostAutoFree - cmp r0, #0 - beq _0222109C - ldr r0, [r4, #0x13c] - bl ghiFreePost - mov r0, #0 - str r0, [r4, #0x13c] -_0222109C: - ldr r0, [r4, #0x16c] - cmp r0, #0 - beq _022210C8 - ldr r2, [r4, #0x178] - cmp r2, #0 - beq _022210C0 - mov r0, r4 - add r1, r4, #0x164 - blx r2 -_022210C0: - mov r0, #0 - str r0, [r4, #0x16c] -_022210C8: - mov r1, #0 - ldr r0, _022210FC ; =0x02229E2C - str r1, [r4, #0] - ldr r1, [r0, #0] - sub r1, r1, #1 - str r1, [r0, #0] - bl ghiUnlock - mov r0, #1 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_022210EC: .word Unk_ov60_022291B4 -_022210F0: .word Unk_ov60_022291A0 -_022210F4: .word Unk_ov60_02229134 -_022210F8: .word Unk_ov60_022291C0 -_022210FC: .word Unk_ov60_02229E2C -_02221100: .word Unk_ov60_022291DC -_02221104: .word Unk_ov60_02229204 - arm_func_end ghiFreeConnection - - arm_func_start ghiRequestToConnection -ghiRequestToConnection: ; 0x02221108 - stmfd sp!, {r4, lr} - movs r4, r0 - bpl _02221128 - ldr r0, _02221194 ; =0x02229218 - ldr r1, _02221198 ; =0x022291A0 - ldr r2, _0222119C ; =0x02229160 - ldr r3, _022211A0 ; =0x00000101 - bl __msl_assertion_failed -_02221128: - ldr r0, _022211A4 ; =0x02229E2C - ldr r0, [r0, #0xc] - cmp r4, r0 - blt _0222114C - ldr r0, _022211A8 ; =0x02229228 - ldr r1, _02221198 ; =0x022291A0 - ldr r2, _0222119C ; =0x02229160 - ldr r3, _022211AC ; =0x00000102 - bl __msl_assertion_failed -_0222114C: - bl ghiLock - cmp r4, #0 - blt _02221168 - ldr r0, _022211A4 ; =0x02229E2C - ldr r1, [r0, #0xc] - cmp r4, r1 - blt _02221174 -_02221168: - bl ghiUnlock - mov r0, #0 - ldmia sp!, {r4, pc} -_02221174: - ldr r0, [r0, #4] - ldr r4, [r0, r4, lsl #2] - ldr r0, [r4, #0] - cmp r0, #0 - moveq r4, #0 - bl ghiUnlock - mov r0, r4 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02221194: .word Unk_ov60_02229218 -_02221198: .word Unk_ov60_022291A0 -_0222119C: .word Unk_ov60_02229160 -_022211A0: .word 0x00000101 -_022211A4: .word Unk_ov60_02229E2C -_022211A8: .word Unk_ov60_02229228 -_022211AC: .word 0x00000102 - arm_func_end ghiRequestToConnection - - arm_func_start ghiEnumConnections -ghiEnumConnections: ; 0x022211B0 - stmfd sp!, {r4, r5, r6, lr} - ldr r1, _02221210 ; =0x02229E2C - mov r4, r0 - ldr r0, [r1, #0] - cmp r0, #0 - ldmleia sp!, {r4, r5, r6, pc} - bl ghiLock - ldr r5, _02221210 ; =0x02229E2C - mov r6, #0 - ldr r0, [r5, #0xc] - cmp r0, #0 - ble _02221208 -_022211E0: - ldr r0, [r5, #4] - ldr r0, [r0, r6, lsl #2] - ldr r1, [r0, #0] - cmp r1, #0 - beq _022211F8 - blx r4 -_022211F8: - ldr r0, [r5, #0xc] - add r6, r6, #1 - cmp r6, r0 - blt _022211E0 -_02221208: - bl ghiUnlock - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_02221210: .word Unk_ov60_02229E2C - arm_func_end ghiEnumConnections - - arm_func_start ghiRedirectConnection -ghiRedirectConnection: ; 0x02221214 - stmfd sp!, {r4, lr} - movs r4, r0 - bne _02221234 - ldr r0, _02221300 ; =0x022291B4 - ldr r1, _02221304 ; =0x022291A0 - ldr r2, _02221308 ; =0x02229148 - ldr r3, _0222130C ; =0x00000132 - bl __msl_assertion_failed -_02221234: - ldr r0, [r4, #0x108] - cmp r0, #0 - bne _02221254 - ldr r0, _02221310 ; =0x02229244 - ldr r1, _02221304 ; =0x022291A0 - ldr r2, _02221308 ; =0x02229148 - ldr r3, _02221314 ; =0x00000133 - bl __msl_assertion_failed -_02221254: - mov r0, #0 - str r0, [r4, #0x10] - ldr r0, [r4, #0x14] - bl DWCi_GsFree - ldr r1, [r4, #0x108] - mov r0, #0 - str r1, [r4, #0x14] - str r0, [r4, #0x108] - ldr r0, [r4, #0x18] - bl DWCi_GsFree - mov r0, #0 - str r0, [r4, #0x18] - str r0, [r4, #0x1c] - strh r0, [r4, #0x20] - ldr r0, [r4, #0x24] - bl DWCi_GsFree - mov r0, #0 - str r0, [r4, #0x24] - ldr r0, [r4, #0x48] - mov r1, #2 - bl shutdown - ldr r0, [r4, #0x48] - bl closesocket - mvn r1, #0 - add r0, r4, #0x50 - str r1, [r4, #0x48] - bl ghiResetBuffer - add r0, r4, #0x74 - bl ghiResetBuffer - add r0, r4, #0x98 - bl ghiResetBuffer - mov r0, #0 - str r0, [r4, #0xe4] - str r0, [r4, #0xe8] - str r0, [r4, #0xec] - str r0, [r4, #0xf0] - str r0, [r4, #0xf4] - str r0, [r4, #0xf8] - str r0, [r4, #0x130] - ldr r0, [r4, #0x10c] - add r0, r0, #1 - str r0, [r4, #0x10c] - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02221300: .word Unk_ov60_022291B4 -_02221304: .word Unk_ov60_022291A0 -_02221308: .word Unk_ov60_02229148 -_0222130C: .word 0x00000132 -_02221310: .word Unk_ov60_02229244 -_02221314: .word 0x00000133 - arm_func_end ghiRedirectConnection - - arm_func_start ghiCleanupConnections -ghiCleanupConnections: ; 0x02221318 - stmfd sp!, {r3, r4, r5, lr} - ldr r0, _02221388 ; =0x02229E2C - ldr r0, [r0, #4] - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, _0222138C ; =ghiFreeConnection - bl ghiEnumConnections - ldr r4, _02221388 ; =0x02229E2C - mov r5, #0 - ldr r0, [r4, #0xc] - cmp r0, #0 - ble _02221364 -_02221348: - ldr r0, [r4, #4] - ldr r0, [r0, r5, lsl #2] - bl DWCi_GsFree - ldr r0, [r4, #0xc] - add r5, r5, #1 - cmp r5, r0 - blt _02221348 -_02221364: - ldr r0, _02221388 ; =0x02229E2C - ldr r0, [r0, #4] - bl DWCi_GsFree - ldr r0, _02221388 ; =0x02229E2C - mov r1, #0 - str r1, [r0, #4] - str r1, [r0, #0xc] - str r1, [r0, #0] - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02221388: .word Unk_ov60_02229E2C -_0222138C: .word ghiFreeConnection - arm_func_end ghiCleanupConnections - - .data - - - .global Unk_ov60_02229124 -Unk_ov60_02229124: ; 0x02229124 - .incbin "incbin/overlay60_data.bin", 0x2E4, 0x2F4 - 0x2E4 - - .global Unk_ov60_02229134 -Unk_ov60_02229134: ; 0x02229134 - .incbin "incbin/overlay60_data.bin", 0x2F4, 0x308 - 0x2F4 - - .global Unk_ov60_02229148 -Unk_ov60_02229148: ; 0x02229148 - .incbin "incbin/overlay60_data.bin", 0x308, 0x320 - 0x308 - - .global Unk_ov60_02229160 -Unk_ov60_02229160: ; 0x02229160 - .incbin "incbin/overlay60_data.bin", 0x320, 0x338 - 0x320 - - .global Unk_ov60_02229178 -Unk_ov60_02229178: ; 0x02229178 - .incbin "incbin/overlay60_data.bin", 0x338, 0x360 - 0x338 - - .global Unk_ov60_022291A0 -Unk_ov60_022291A0: ; 0x022291A0 - .incbin "incbin/overlay60_data.bin", 0x360, 0x374 - 0x360 - - .global Unk_ov60_022291B4 -Unk_ov60_022291B4: ; 0x022291B4 - .incbin "incbin/overlay60_data.bin", 0x374, 0x380 - 0x374 - - .global Unk_ov60_022291C0 -Unk_ov60_022291C0: ; 0x022291C0 - .incbin "incbin/overlay60_data.bin", 0x380, 0x39C - 0x380 - - .global Unk_ov60_022291DC -Unk_ov60_022291DC: ; 0x022291DC - .incbin "incbin/overlay60_data.bin", 0x39C, 0x3C4 - 0x39C - - .global Unk_ov60_02229204 -Unk_ov60_02229204: ; 0x02229204 - .incbin "incbin/overlay60_data.bin", 0x3C4, 0x3D8 - 0x3C4 - - .global Unk_ov60_02229218 -Unk_ov60_02229218: ; 0x02229218 - .incbin "incbin/overlay60_data.bin", 0x3D8, 0x3E8 - 0x3D8 - - .global Unk_ov60_02229228 -Unk_ov60_02229228: ; 0x02229228 - .incbin "incbin/overlay60_data.bin", 0x3E8, 0x404 - 0x3E8 - - .global Unk_ov60_02229244 -Unk_ov60_02229244: ; 0x02229244 - .incbin "incbin/overlay60_data.bin", 0x404, 0x18 - - - - .bss - - - .global Unk_ov60_02229E2C -Unk_ov60_02229E2C: ; 0x02229E2C - .space 0x4 - - .global Unk_ov60_02229E30 -Unk_ov60_02229E30: ; 0x02229E30 - .space 0x4 - - .global Unk_ov60_02229E34 -Unk_ov60_02229E34: ; 0x02229E34 - .space 0x4 - - .global Unk_ov60_02229E38 -Unk_ov60_02229E38: ; 0x02229E38 - .space 0x4 - diff --git a/subprojects/gamespy/libraries/ghttp/asm/ghttpmain.s b/subprojects/gamespy/libraries/ghttp/asm/ghttpmain.s deleted file mode 100644 index 705cceca3f..0000000000 --- a/subprojects/gamespy/libraries/ghttp/asm/ghttpmain.s +++ /dev/null @@ -1,475 +0,0 @@ - .include "macros/function.inc" - .include "include/ghttpmain.inc" - - .extern Unk_ov60_02229E28 - - .extern ghiThrottleTimeDelay - .extern ghiThrottleBufferSize - .text - - - arm_func_start ghiHandleStatus -ghiHandleStatus: ; 0x02221390 - stmfd sp!, {r3, lr} - ldr lr, [r0, #0xec] - ldr r3, _02221448 ; =0x51EB851F - mov r1, lr, lsr #0x1f - smull r2, ip, r3, lr - add ip, r1, ip, asr #5 - cmp ip, #5 - addls pc, pc, ip, lsl #2 - ldmia sp!, {r3, pc} -_022213B4: ; jump table - ldmia sp!, {r3, pc} ; case 0 - b _022213CC ; case 1 - b _022213CC ; case 2 - b _022213CC ; case 3 - b _022213D0 ; case 4 - b _0222143C ; case 5 -_022213CC: - ldmia sp!, {r3, pc} -_022213D0: - sub r1, lr, #0x91 - sub r1, r1, #0x100 - cmp r1, #9 - addls pc, pc, r1, lsl #2 - b _02221430 -_022213E4: ; jump table - b _0222140C ; case 0 - b _02221430 ; case 1 - b _02221418 ; case 2 - b _02221424 ; case 3 - b _02221430 ; case 4 - b _02221430 ; case 5 - b _02221430 ; case 6 - b _02221430 ; case 7 - b _02221430 ; case 8 - b _02221424 ; case 9 -_0222140C: - mov r1, #9 - str r1, [r0, #0x38] - ldmia sp!, {r3, pc} -_02221418: - mov r1, #0xa - str r1, [r0, #0x38] - ldmia sp!, {r3, pc} -_02221424: - mov r1, #0xb - str r1, [r0, #0x38] - ldmia sp!, {r3, pc} -_02221430: - mov r1, #8 - str r1, [r0, #0x38] - ldmia sp!, {r3, pc} -_0222143C: - mov r1, #0xc - str r1, [r0, #0x38] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02221448: .word 0x51EB851F - arm_func_end ghiHandleStatus - - arm_func_start ghiProcessConnection -ghiProcessConnection: ; 0x0222144C - stmfd sp!, {r3, r4, r5, lr} - movs r4, r0 - bne _0222146C - ldr r0, _022215A4 ; =0x02229280 - ldr r1, _022215A8 ; =0x0222928C - ldr r2, _022215AC ; =0x02229268 - mov r3, #0x5b - bl __msl_assertion_failed -_0222146C: - ldr r0, [r4, #4] - bl ghiRequestToConnection - cmp r0, r4 - beq _02221490 - ldr r0, _022215B0 ; =0x02229298 - ldr r1, _022215A8 ; =0x0222928C - ldr r2, _022215AC ; =0x02229268 - mov r3, #0x5c - bl __msl_assertion_failed -_02221490: - ldr r0, [r4, #0x12c] - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, #1 - str r0, [r4, #0x12c] - ldr r0, [r4, #0x10] - cmp r0, #0 - bne _022214BC - mov r0, r4 - bl ghiDoHostLookup -_022214BC: - ldr r0, [r4, #0x10] - cmp r0, #1 - bne _022214D0 - mov r0, r4 - bl ghiDoConnecting -_022214D0: - ldr r0, [r4, #0x10] - cmp r0, #2 - bne _022214E4 - mov r0, r4 - bl ghiDoSecuringSession -_022214E4: - ldr r0, [r4, #0x10] - cmp r0, #3 - bne _022214F8 - mov r0, r4 - bl ghiDoSendingRequest -_022214F8: - ldr r0, [r4, #0x10] - cmp r0, #4 - bne _0222150C - mov r0, r4 - bl ghiDoPosting -_0222150C: - ldr r0, [r4, #0x10] - cmp r0, #5 - bne _02221520 - mov r0, r4 - bl ghiDoWaiting -_02221520: - ldr r0, [r4, #0x10] - cmp r0, #6 - bne _02221534 - mov r0, r4 - bl ghiDoReceivingStatus -_02221534: - ldr r0, [r4, #0x10] - cmp r0, #7 - bne _02221548 - mov r0, r4 - bl ghiDoReceivingHeaders -_02221548: - ldr r0, [r4, #0x10] - cmp r0, #8 - bne _0222155C - mov r0, r4 - bl ghiDoReceivingFile -_0222155C: - ldr r0, [r4, #0x108] - cmp r0, #0 - beq _02221570 - mov r0, r4 - bl ghiRedirectConnection -_02221570: - ldr r5, [r4, #0xfc] - cmp r5, #0 - moveq r0, #0 - streq r0, [r4, #0x12c] - beq _0222159C - mov r0, r4 - bl ghiHandleStatus - mov r0, r4 - bl ghiCallCompletedCallback - mov r0, r4 - bl ghiFreeConnection -_0222159C: - mov r0, r5 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_022215A4: .word Unk_ov60_02229280 -_022215A8: .word Unk_ov60_0222928C -_022215AC: .word Unk_ov60_02229268 -_022215B0: .word Unk_ov60_02229298 - arm_func_end ghiProcessConnection - - arm_func_start ghttpStartup -ghttpStartup: ; 0x022215B4 - stmfd sp!, {r3, lr} - bl ghiLock - ldr r0, _022215FC ; =0x02229E3C - ldr r1, [r0, #0] - add r1, r1, #1 - str r1, [r0, #0] - cmp r1, #1 - bne _022215F4 - bl ghiCreateLock - ldr r0, _02221600 ; =0x0222911C - mov r2, #0xfa - ldr r1, _02221604 ; =0x02229120 - mov r3, #0x7d - str r2, [r0, #0] - str r3, [r1, #0] - ldmia sp!, {r3, pc} -_022215F4: - bl ghiUnlock - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022215FC: .word Unk_ov60_02229E3C -_02221600: .word ghiThrottleTimeDelay -_02221604: .word ghiThrottleBufferSize - arm_func_end ghttpStartup - - arm_func_start ghttpCleanup -ghttpCleanup: ; 0x02221608 - stmfd sp!, {r3, lr} - bl ghiLock - ldr r0, _0222165C ; =0x02229E3C - ldr r1, [r0, #0] - subs r1, r1, #1 - str r1, [r0, #0] - bne _02221654 - bl ghiCleanupConnections - ldr r0, _02221660 ; =0x02229E28 - ldr r0, [r0, #0] - cmp r0, #0 - beq _02221648 - bl DWCi_GsFree - ldr r0, _02221660 ; =0x02229E28 - mov r1, #0 - str r1, [r0, #0] -_02221648: - bl ghiUnlock - bl ghiFreeLock - ldmia sp!, {r3, pc} -_02221654: - bl ghiUnlock - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0222165C: .word Unk_ov60_02229E3C -_02221660: .word Unk_ov60_02229E28 - arm_func_end ghttpCleanup - - arm_func_start ghttpGetA -ghttpGetA: ; 0x02221664 - stmfd sp!, {r3, lr} - sub sp, sp, #0x18 - mov ip, #0 - str ip, [sp] - str ip, [sp, #4] - str r1, [sp, #8] - str ip, [sp, #0xc] - str r2, [sp, #0x10] - str r3, [sp, #0x14] - mov r1, ip - mov r2, ip - mov r3, ip - bl ghttpGetExA - add sp, sp, #0x18 - ldmia sp!, {r3, pc} - arm_func_end ghttpGetA - - arm_func_start ghttpGetExA -ghttpGetExA: ; 0x022216A0 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - movs r8, r0 - ldrnesb r0, [r8] - mov r7, r1 - mov r6, r2 - mov r5, r3 - cmpne r0, #0 - bne _022216D4 - ldr r0, _022218CC ; =0x022292D4 - ldr r1, _022218D0 ; =0x0222928C - ldr r2, _022218D4 ; =0x0222925C - mov r3, #0x128 - bl __msl_assertion_failed -_022216D4: - cmp r5, #0 - bge _022216F0 - ldr r0, _022218D8 ; =0x022292E4 - ldr r1, _022218D0 ; =0x0222928C - ldr r2, _022218D4 ; =0x0222925C - ldr r3, _022218DC ; =0x00000129 - bl __msl_assertion_failed -_022216F0: - cmp r6, #0 - beq _02221714 - cmp r5, #0 - bne _02221714 - ldr r0, _022218E0 ; =0x022292F4 - ldr r1, _022218D0 ; =0x0222928C - ldr r2, _022218D4 ; =0x0222925C - ldr r3, _022218E4 ; =0x0000012A - bl __msl_assertion_failed -_02221714: - cmp r8, #0 - ldrnesb r0, [r8] - cmpne r0, #0 - mvneq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - cmp r5, #0 - mvnlt r0, #0 - ldmltia sp!, {r4, r5, r6, r7, r8, pc} - cmp r6, #0 - beq _02221748 - cmp r5, #0 - mvneq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} -_02221748: - ldr r0, _022218E8 ; =0x02229E3C - ldr r0, [r0, #0] - cmp r0, #0 - bne _0222175C - bl ghttpStartup -_0222175C: - bl ghiNewConnection - movs r4, r0 - mvneq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r1, #0 - mov r0, r8 - str r1, [r4, #0xc] - bl goastrdup - str r0, [r4, #0x14] - cmp r0, #0 - bne _02221798 - mov r0, r4 - bl ghiFreeConnection - mvn r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02221798: - cmp r7, #0 - ldrnesb r0, [r7] - cmpne r0, #0 - beq _022217CC - mov r0, r7 - bl goastrdup - str r0, [r4, #0x28] - cmp r0, #0 - bne _022217CC - mov r0, r4 - bl ghiFreeConnection - mvn r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022217CC: - ldr r1, [sp, #0x18] - ldr r0, [sp, #0x20] - str r1, [r4, #0x13c] - str r0, [r4, #0x30] - ldr r1, [sp, #0x24] - ldr r0, [sp, #0x28] - str r1, [r4, #0x3c] - str r0, [r4, #0x40] - ldr r1, [sp, #0x2c] - ldr r0, [sp, #0x1c] - str r1, [r4, #0x44] - str r0, [r4, #0x134] - cmp r6, #0 - movne r0, #1 - moveq r0, #0 - str r0, [r4, #0xe0] - cmp r0, #0 - beq _0222182C - mov r0, r4 - mov r2, r6 - mov r3, r5 - add r1, r4, #0xbc - bl ghiInitFixedBuffer - b _02221840 -_0222182C: - mov r2, #0x800 - mov r0, r4 - mov r3, r2 - add r1, r4, #0xbc - bl ghiInitBuffer -_02221840: - cmp r0, #0 - bne _02221858 - mov r0, r4 - bl ghiFreeConnection - mvn r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02221858: - ldr r0, [sp, #0x18] - cmp r0, #0 - beq _02221884 - mov r0, r4 - bl ghiPostInitState - cmp r0, #0 - bne _02221884 - mov r0, r4 - bl ghiFreeConnection - mvn r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02221884: - ldr r0, [sp, #0x20] - cmp r0, #0 - beq _022218C4 - mov r0, r4 - bl ghiProcessConnection - cmp r0, #0 - bne _022218BC - mov r5, #0xa -_022218A4: - mov r0, r5 - bl msleep - mov r0, r4 - bl ghiProcessConnection - cmp r0, #0 - beq _022218A4 -_022218BC: - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022218C4: - ldr r0, [r4, #4] - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_022218CC: .word Unk_ov60_022292D4 -_022218D0: .word Unk_ov60_0222928C -_022218D4: .word Unk_ov60_0222925C -_022218D8: .word Unk_ov60_022292E4 -_022218DC: .word 0x00000129 -_022218E0: .word Unk_ov60_022292F4 -_022218E4: .word 0x0000012A -_022218E8: .word Unk_ov60_02229E3C - arm_func_end ghttpGetExA - - arm_func_start ghttpThink -ghttpThink: ; 0x022218EC - ldr ip, _022218F8 ; =ghiEnumConnections - ldr r0, _022218FC ; =ghiProcessConnection - bx ip - ; .align 2, 0 -_022218F8: .word ghiEnumConnections -_022218FC: .word ghiProcessConnection - arm_func_end ghttpThink - - .data - - - .global Unk_ov60_0222925C -Unk_ov60_0222925C: ; 0x0222925C - .incbin "incbin/overlay60_data.bin", 0x41C, 0x428 - 0x41C - - .global Unk_ov60_02229268 -Unk_ov60_02229268: ; 0x02229268 - .incbin "incbin/overlay60_data.bin", 0x428, 0x440 - 0x428 - - .global Unk_ov60_02229280 -Unk_ov60_02229280: ; 0x02229280 - .incbin "incbin/overlay60_data.bin", 0x440, 0x44C - 0x440 - - .global Unk_ov60_0222928C -Unk_ov60_0222928C: ; 0x0222928C - .incbin "incbin/overlay60_data.bin", 0x44C, 0x458 - 0x44C - - .global Unk_ov60_02229298 -Unk_ov60_02229298: ; 0x02229298 - .incbin "incbin/overlay60_data.bin", 0x458, 0x494 - 0x458 - - .global Unk_ov60_022292D4 -Unk_ov60_022292D4: ; 0x022292D4 - .incbin "incbin/overlay60_data.bin", 0x494, 0x4A4 - 0x494 - - .global Unk_ov60_022292E4 -Unk_ov60_022292E4: ; 0x022292E4 - .incbin "incbin/overlay60_data.bin", 0x4A4, 0x4B4 - 0x4A4 - - .global Unk_ov60_022292F4 -Unk_ov60_022292F4: ; 0x022292F4 - .incbin "incbin/overlay60_data.bin", 0x4B4, 0x16 - - - - .bss - - - .global Unk_ov60_02229E3C -Unk_ov60_02229E3C: ; 0x02229E3C - .space 0x4 - diff --git a/subprojects/gamespy/libraries/ghttp/asm/ghttppost.s b/subprojects/gamespy/libraries/ghttp/asm/ghttppost.s deleted file mode 100644 index c66a13089d..0000000000 --- a/subprojects/gamespy/libraries/ghttp/asm/ghttppost.s +++ /dev/null @@ -1,1324 +0,0 @@ - .include "macros/function.inc" - .include "include/ghttppost.inc" - - - - .text - - - arm_func_start ghiIsPostAutoFree -ghiIsPostAutoFree: ; 0x02221900 - ldr r0, [r0, #0x10] - bx lr - arm_func_end ghiIsPostAutoFree - - arm_func_start ghiFreePost -ghiFreePost: ; 0x02221908 - stmfd sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4, #0] - bl ArrayFree - mov r0, r4 - bl DWCi_GsFree - ldmia sp!, {r4, pc} - arm_func_end ghiFreePost - - arm_func_start ghiPostGetContentType -ghiPostGetContentType: ; 0x02221924 - stmfd sp!, {r4, lr} - ldr r4, [r0, #0x13c] - cmp r4, #0 - bne _02221948 - ldr r0, _02221968 ; =0x02229494 - ldr r1, _0222196C ; =0x02229444 - ldr r2, _02221970 ; =0x02229374 - ldr r3, _02221974 ; =0x00000192 - bl __msl_assertion_failed -_02221948: - cmp r4, #0 - ldreq r0, _02221978 ; =0x0222949C - ldmeqia sp!, {r4, pc} - ldr r0, [r4, #0xc] - cmp r0, #0 - ldrne r0, _0222197C ; =0x022294A0 - ldreq r0, _02221980 ; =0x022294E4 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02221968: .word Unk_ov60_02229494 -_0222196C: .word Unk_ov60_02229444 -_02221970: .word Unk_ov60_02229374 -_02221974: .word 0x00000192 -_02221978: .word Unk_ov60_0222949C -_0222197C: .word Unk_ov60_022294A0 -_02221980: .word Unk_ov60_022294E4 - arm_func_end ghiPostGetContentType - - arm_func_start ghiPostGetNoFilesContentLength -ghiPostGetNoFilesContentLength: ; 0x02221984 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r6, [r0, #0x13c] - mov sl, #0 - ldr r0, [r6, #0] - bl ArrayLength - movs sb, r0 - moveq r0, sl - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp sb, #0 - mov r8, sl - ble _02221A18 - ldr r5, _02221A24 ; =0x02229508 - ldr r4, _02221A28 ; =0x02229444 - ldr fp, _02221A2C ; =0x022293E0 -_022219BC: - ldr r0, [r6, #0] - mov r1, r8 - bl ArrayNth - mov r7, r0 - ldr r0, [r7, #0] - cmp r0, #0 - beq _022219EC - mov r0, r5 - mov r1, r4 - mov r2, fp - mov r3, #0x1b0 - bl __msl_assertion_failed -_022219EC: - ldr r0, [r7, #4] - bl strlen - add r8, r8, #1 - ldr r1, [r7, #0xc] - add r2, sl, r0 - ldr r0, [r7, #0x14] - add r1, r2, r1 - add r0, r1, r0, lsl #1 - cmp r8, sb - add sl, r0, #1 - blt _022219BC -_02221A18: - sub r0, sb, #1 - add r0, sl, r0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_02221A24: .word Unk_ov60_02229508 -_02221A28: .word Unk_ov60_02229444 -_02221A2C: .word Unk_ov60_022293E0 - arm_func_end ghiPostGetNoFilesContentLength - - arm_func_start ghiPostGetHasFilesContentLength -ghiPostGetHasFilesContentLength: ; 0x02221A30 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r1, _02221BB4 ; =0x02229E40 - mov r4, r0 - ldr r0, [r1, #8] - ldr r7, [r4, #0x13c] - cmp r0, #0 - mov sl, #0 - bne _02221A78 - ldr r0, _02221BB8 ; =0x02229520 - bl strlen - ldr r1, _02221BB4 ; =0x02229E40 - add r2, r0, #0x2f - str r0, [r1, #8] - str r2, [r1, #4] - add r2, r0, #0x4c - str r2, [r1, #0xc] - add r0, r0, #4 - str r0, [r1, #0] -_02221A78: - ldr r0, [r7, #0] - bl ArrayLength - mov sb, r0 - cmp sb, #0 - mov r8, #0 - ble _02221BA4 - ldr fp, _02221BBC ; =0x02229548 - ldr r5, _02221BB4 ; =0x02229E40 -_02221A98: - ldr r0, [r7, #0] - mov r1, r8 - bl ArrayNth - mov r6, r0 - ldr r0, [r6, #0] - cmp r0, #0 - bne _02221AD4 - ldr r1, [r5, #4] - ldr r0, [r6, #4] - add sl, sl, r1 - bl strlen - ldr r1, [r6, #0xc] - add r0, sl, r0 - add sl, r0, r1 - b _02221B98 -_02221AD4: - cmp r0, #1 - bne _02221B3C - ldr r1, [r5, #0xc] - ldr r0, [r6, #4] - add sl, sl, r1 - bl strlen - add sl, sl, r0 - ldr r0, [r6, #0xc] - bl strlen - add sl, sl, r0 - ldr r0, [r6, #0x10] - bl strlen - add sl, sl, r0 - ldr r0, [r4, #0x140] - mov r1, r8 - bl ArrayNth - movs r6, r0 - bne _02221B30 - ldr r1, _02221BC0 ; =0x02229444 - ldr r2, _02221BC4 ; =0x02229420 - mov r0, fp - mov r3, #0x1ec - bl __msl_assertion_failed -_02221B30: - ldr r0, [r6, #0xc] - add sl, sl, r0 - b _02221B98 -_02221B3C: - cmp r0, #2 - bne _02221B7C - ldr r1, [r5, #0xc] - ldr r0, [r6, #4] - add sl, sl, r1 - bl strlen - add sl, sl, r0 - ldr r0, [r6, #0x10] - bl strlen - add sl, sl, r0 - ldr r0, [r6, #0x14] - bl strlen - add r1, sl, r0 - ldr r0, [r6, #0xc] - add sl, r1, r0 - b _02221B98 -_02221B7C: - ldr r0, _02221BC8 ; =0x02229440 - ldr r1, _02221BC0 ; =0x02229444 - ldr r2, _02221BC4 ; =0x02229420 - ldr r3, _02221BCC ; =0x000001F9 - bl __msl_assertion_failed - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02221B98: - add r8, r8, #1 - cmp r8, sb - blt _02221A98 -_02221BA4: - ldr r0, _02221BB4 ; =0x02229E40 - ldr r0, [r0, #0] - add r0, sl, r0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_02221BB4: .word Unk_ov60_02229E40 -_02221BB8: .word Unk_ov60_02229520 -_02221BBC: .word Unk_ov60_02229548 -_02221BC0: .word Unk_ov60_02229444 -_02221BC4: .word Unk_ov60_02229420 -_02221BC8: .word Unk_ov60_02229440 -_02221BCC: .word 0x000001F9 - arm_func_end ghiPostGetHasFilesContentLength - - arm_func_start ghiPostGetContentLength -ghiPostGetContentLength: ; 0x02221BD0 - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r4, [r5, #0x13c] - cmp r4, #0 - bne _02221BF8 - ldr r0, _02221C24 ; =0x02229494 - ldr r1, _02221C28 ; =0x02229444 - ldr r2, _02221C2C ; =0x0222938C - mov r3, #0x20c - bl __msl_assertion_failed -_02221BF8: - cmp r4, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, [r4, #0xc] - cmp r0, #0 - mov r0, r5 - beq _02221C1C - bl ghiPostGetHasFilesContentLength - ldmia sp!, {r3, r4, r5, pc} -_02221C1C: - bl ghiPostGetNoFilesContentLength - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02221C24: .word Unk_ov60_02229494 -_02221C28: .word Unk_ov60_02229444 -_02221C2C: .word Unk_ov60_0222938C - arm_func_end ghiPostGetContentLength - - arm_func_start ghiPostStateInit -ghiPostStateInit: ; 0x02221C30 - stmfd sp!, {r4, lr} - mov r4, r0 - ldr r1, [r4, #0] - mvn r0, #0 - ldr r1, [r1, #0] - str r0, [r4, #4] - cmp r1, #0 - beq _02221CCC - cmp r1, #1 - bne _02221CA8 - ldr r0, [r4, #8] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - mov r1, #0 - mov r2, #2 - bl fseek - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, pc} - ldr r0, [r4, #8] - bl ftell - mvn r1, #0 - str r0, [r4, #0xc] - cmp r0, r1 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldr r0, [r4, #8] - bl rewind - b _02221CCC -_02221CA8: - cmp r1, #2 - beq _02221CCC - ldr r0, _02221CD4 ; =0x02229440 - ldr r1, _02221CD8 ; =0x02229444 - ldr r2, _02221CDC ; =0x02229334 - mov r3, #0x244 - bl __msl_assertion_failed - mov r0, #0 - ldmia sp!, {r4, pc} -_02221CCC: - mov r0, #1 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02221CD4: .word Unk_ov60_02229440 -_02221CD8: .word Unk_ov60_02229444 -_02221CDC: .word Unk_ov60_02229334 - arm_func_end ghiPostStateInit - - arm_func_start ghiPostStateCleanup -ghiPostStateCleanup: ; 0x02221CE0 - stmfd sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4, #0] - ldr r0, [r0, #0] - cmp r0, #0 - ldmeqia sp!, {r4, pc} - cmp r0, #1 - bne _02221D1C - ldr r0, [r4, #8] - cmp r0, #0 - beq _02221D10 - bl fclose -_02221D10: - mov r0, #0 - str r0, [r4, #8] - ldmia sp!, {r4, pc} -_02221D1C: - cmp r0, #2 - ldmeqia sp!, {r4, pc} - ldr r0, _02221D3C ; =0x02229440 - ldr r1, _02221D40 ; =0x02229444 - ldr r2, _02221D44 ; =0x02229348 - ldr r3, _02221D48 ; =0x00000269 - bl __msl_assertion_failed - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02221D3C: .word Unk_ov60_02229440 -_02221D40: .word Unk_ov60_02229444 -_02221D44: .word Unk_ov60_02229348 -_02221D48: .word 0x00000269 - arm_func_end ghiPostStateCleanup - - arm_func_start ghiPostInitState -ghiPostInitState: ; 0x02221D4C - stmfd sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, [r4, #0x13c] - cmp r0, #0 - bne _02221D78 - ldr r0, _02221EC8 ; =0x02229550 - ldr r1, _02221ECC ; =0x02229444 - ldr r2, _02221ED0 ; =0x0222930C - mov r3, #0x278 - bl __msl_assertion_failed -_02221D78: - ldr r0, [r4, #0x13c] - cmp r0, #0 - addeq sp, sp, #0x10 - mov r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - str r0, [r4, #0x144] - str r0, [r4, #0x148] - str r0, [r4, #0x14c] - ldr r0, [r4, #0x13c] - ldr r0, [r0, #4] - str r0, [r4, #0x150] - ldr r0, [r4, #0x13c] - ldr r0, [r0, #8] - str r0, [r4, #0x154] - ldr r0, [r4, #0x13c] - ldr r0, [r0, #0] - bl ArrayLength - mov r8, r0 - mov r1, r8 - mov r0, #0x10 - mov r2, #0 - bl ArrayNew - cmp r0, #0 - str r0, [r4, #0x140] - addeq sp, sp, #0x10 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - cmp r8, #0 - mov r7, #0 - ble _02221E7C - add r6, sp, #0 - mov r5, r7 -_02221DF8: - ldr r0, [r4, #0x13c] - mov r1, r7 - ldr r0, [r0, #0] - bl ArrayNth - str r5, [r6, #0] - str r0, [sp] - mov r0, r6 - str r5, [r6, #4] - str r5, [r6, #8] - str r5, [r6, #0xc] - bl ghiPostStateInit - cmp r0, #0 - bne _02221E64 - subs r7, r7, #1 - bmi _02221E4C -_02221E34: - ldr r0, [r4, #0x140] - mov r1, r7 - bl ArrayNth - bl ghiPostStateCleanup - subs r7, r7, #1 - bpl _02221E34 -_02221E4C: - ldr r0, [r4, #0x140] - bl ArrayFree - mov r0, #0 - add sp, sp, #0x10 - str r0, [r4, #0x140] - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02221E64: - ldr r0, [r4, #0x140] - mov r1, r6 - bl ArrayAppend - add r7, r7, #1 - cmp r7, r8 - blt _02221DF8 -_02221E7C: - ldr r0, [r4, #0x13c] - ldr r0, [r0, #0] - bl ArrayLength - mov r5, r0 - ldr r0, [r4, #0x140] - bl ArrayLength - cmp r5, r0 - beq _02221EB0 - ldr r0, _02221ED4 ; =0x02229564 - ldr r1, _02221ECC ; =0x02229444 - ldr r2, _02221ED0 ; =0x0222930C - ldr r3, _02221ED8 ; =0x000002B1 - bl __msl_assertion_failed -_02221EB0: - mov r0, r4 - bl ghiPostGetContentLength - str r0, [r4, #0x14c] - mov r0, #1 - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_02221EC8: .word Unk_ov60_02229550 -_02221ECC: .word Unk_ov60_02229444 -_02221ED0: .word Unk_ov60_0222930C -_02221ED4: .word Unk_ov60_02229564 -_02221ED8: .word 0x000002B1 - arm_func_end ghiPostInitState - - arm_func_start ghiPostCleanupState -ghiPostCleanupState: ; 0x02221EDC - stmfd sp!, {r4, r5, r6, lr} - mov r6, r0 - ldr r0, [r6, #0x140] - cmp r0, #0 - beq _02221F30 - bl ArrayLength - mov r5, r0 - cmp r5, #0 - mov r4, #0 - ble _02221F20 -_02221F04: - ldr r0, [r6, #0x140] - mov r1, r4 - bl ArrayNth - bl ghiPostStateCleanup - add r4, r4, #1 - cmp r4, r5 - blt _02221F04 -_02221F20: - ldr r0, [r6, #0x140] - bl ArrayFree - mov r0, #0 - str r0, [r6, #0x140] -_02221F30: - ldr r0, [r6, #0x13c] - cmp r0, #0 - ldrne r1, [r0, #0x10] - cmpne r1, #0 - ldmeqia sp!, {r4, r5, r6, pc} - bl ghiFreePost - mov r0, #0 - str r0, [r6, #0x13c] - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ghiPostCleanupState - - arm_func_start ghiPostStringStateDoPosting -ghiPostStringStateDoPosting: ; 0x02221F54 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r4, r0 - ldr r0, [r4, #4] - mov sl, r1 - cmp r0, #0 - bge _02221F80 - ldr r0, _0222210C ; =0x022295B8 - ldr r1, _02222110 ; =0x02229444 - ldr r2, _02222114 ; =0x022293A4 - ldr r3, _02222118 ; =0x000002E7 - bl __msl_assertion_failed -_02221F80: - ldr r0, [r4, #0] - ldr r1, [r0, #0xc] - cmp r1, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [r4, #4] - cmp r0, r1 - blt _02221FB4 - ldr r0, _0222211C ; =0x022295C8 - ldr r1, _02222110 ; =0x02229444 - ldr r2, _02222114 ; =0x022293A4 - ldr r3, _02222120 ; =0x000002EE - bl __msl_assertion_failed -_02221FB4: - ldr r0, [sl, #0x13c] - ldr r0, [r0, #0xc] - cmp r0, #0 - bne _022220C0 - ldr r1, [r4, #0] - ldr r0, [r1, #0x10] - cmp r0, #0 - beq _022220C0 - ldr r0, _02222124 ; =0x02228C60 - ldr r8, [r1, #8] - ldrb r2, [r0] - ldrb r1, [r0, #1] - add r5, sp, #0 - strb r2, [sp] - strb r1, [sp, #1] - ldrb r1, [r0, #2] - ldrb r0, [r0, #3] - mov r6, #0 - strb r1, [sp, #2] - strb r0, [sp, #3] - ldrsb r7, [r8] - cmp r7, #0 - beq _022220B8 - ldr r4, _02222128 ; =0x02229604 - ldr fp, _0222212C ; =0x02229450 -_02222018: - mov r0, fp - mov r1, r7 - bl strchr - cmp r0, #0 - beq _0222203C - mov r1, r7 - add r0, sl, #0x50 - bl ghiAppendCharToBuffer - b _022220A8 -_0222203C: - cmp r7, #0x20 - bne _02222054 - mov r1, #0x2b - add r0, sl, #0x50 - bl ghiAppendCharToBuffer - b _022220A8 -_02222054: - mov r0, r7, asr #3 - add r0, r7, r0, lsr #28 - mov sb, r0, asr #4 - cmp sb, #0x10 - blt _0222207C - ldr r0, _02222130 ; =0x022295F4 - ldr r1, _02222110 ; =0x02229444 - ldr r2, _02222114 ; =0x022293A4 - ldr r3, _02222134 ; =0x0000030D - bl __msl_assertion_failed -_0222207C: - ldrsb r2, [r4, sb] - mov r1, r7, lsr #0x1f - rsb r0, r1, r7, lsl #28 - add r0, r1, r0, ror #28 - strb r2, [sp, #1] - ldrsb r2, [r4, r0] - mov r1, r5 - add r0, sl, #0x50 - strb r2, [sp, #2] - mov r2, #3 - bl ghiAppendDataToBuffer -_022220A8: - add r6, r6, #1 - ldrsb r7, [r8, r6] - cmp r7, #0 - bne _02222018 -_022220B8: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022220C0: - ldr r1, [r4, #0] - ldr r0, [r4, #4] - ldr r2, [r1, #0xc] - ldr r1, [r1, #8] - sub r5, r2, r0 - mov r0, sl - mov r2, r5 - bl ghiDoSend - mvn r1, #0 - cmp r0, r1 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [r4, #4] - cmp r0, r5 - add r0, r1, r0 - str r0, [r4, #4] - moveq r0, #1 - movne r0, #2 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0222210C: .word Unk_ov60_022295B8 -_02222110: .word Unk_ov60_02229444 -_02222114: .word Unk_ov60_022293A4 -_02222118: .word 0x000002E7 -_0222211C: .word Unk_ov60_022295C8 -_02222120: .word 0x000002EE -_02222124: .word Unk_ov60_02228C60 -_02222128: .word Unk_ov60_02229604 -_0222212C: .word Unk_ov60_02229450 -_02222130: .word Unk_ov60_022295F4 -_02222134: .word 0x0000030D - arm_func_end ghiPostStringStateDoPosting - - arm_func_start ghiPostFileDiskStateDoPosting -ghiPostFileDiskStateDoPosting: ; 0x02222138 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x1000 - mov r8, r0 - ldr r0, [r8, #4] - mov r7, r1 - cmp r0, #0 - bge _02222168 - ldr r0, _02222278 ; =0x022295B8 - ldr r1, _0222227C ; =0x02229444 - ldr r2, _02222280 ; =0x022293C0 - ldr r3, _02222284 ; =0x00000336 - bl __msl_assertion_failed -_02222168: - ldr r1, [r8, #4] - ldr r0, [r8, #0xc] - cmp r1, r0 - blt _0222218C - ldr r0, _02222288 ; =0x02229618 - ldr r1, _0222227C ; =0x02229444 - ldr r2, _02222280 ; =0x022293C0 - ldr r3, _0222228C ; =0x00000337 - bl __msl_assertion_failed -_0222218C: - ldr r0, [r8, #8] - bl ftell - ldr r1, [r8, #4] - cmp r1, r0 - beq _022221B4 - ldr r0, _02222290 ; =0x02229640 - ldr r1, _0222227C ; =0x02229444 - ldr r2, _02222280 ; =0x022293C0 - mov r3, #0x338 - bl __msl_assertion_failed -_022221B4: - add r6, sp, #0 - mov r5, #1 - mov r4, #0x1000 -_022221C0: - ldr r3, [r8, #8] - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl fread - mov r2, r0 - cmp r2, #0 - bgt _022221FC - mov r0, #1 - str r0, [r7, #0xfc] - mov r0, #0xe - str r0, [r7, #0x38] - add sp, sp, #0x1000 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022221FC: - ldr r0, [r8, #4] - add r1, r0, r2 - str r1, [r8, #4] - ldr r0, [r8, #0xc] - cmp r1, r0 - ble _02222230 - mov r0, #1 - str r0, [r7, #0xfc] - mov r0, #0xe - str r0, [r7, #0x38] - add sp, sp, #0x1000 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02222230: - mov r0, r7 - mov r1, r6 - bl ghiTrySendThenBuffer - cmp r0, #0 - addeq sp, sp, #0x1000 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldr r2, [r8, #4] - ldr r1, [r8, #0xc] - cmp r2, r1 - addeq sp, sp, #0x1000 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - cmp r0, #1 - beq _022221C0 - mov r0, #2 - add sp, sp, #0x1000 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_02222278: .word Unk_ov60_022295B8 -_0222227C: .word Unk_ov60_02229444 -_02222280: .word Unk_ov60_022293C0 -_02222284: .word 0x00000336 -_02222288: .word Unk_ov60_02229618 -_0222228C: .word 0x00000337 -_02222290: .word Unk_ov60_02229640 - arm_func_end ghiPostFileDiskStateDoPosting - - arm_func_start ghiPostFileMemoryStateDoPosting -ghiPostFileMemoryStateDoPosting: ; 0x02222294 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r0 - ldr r0, [r6, #4] - mov r5, r1 - cmp r0, #0 - bge _022222C0 - ldr r0, _0222235C ; =0x022295B8 - ldr r1, _02222360 ; =0x02229444 - ldr r2, _02222364 ; =0x02229400 - ldr r3, _02222368 ; =0x0000036E - bl __msl_assertion_failed -_022222C0: - ldr r0, [r6, #0] - ldr r1, [r0, #0xc] - cmp r1, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r6, #4] - cmp r0, r1 - blt _022222F4 - ldr r0, _0222236C ; =0x02229678 - ldr r1, _02222360 ; =0x02229444 - ldr r2, _02222364 ; =0x02229400 - ldr r3, _02222370 ; =0x00000375 - bl __msl_assertion_failed -_022222F4: - mov r4, #0x8000 - mvn r7, #0 -_022222FC: - ldmia r6, {r1, r3} - ldr r0, [r1, #0xc] - ldr r1, [r1, #8] - sub r2, r0, r3 - cmp r2, #0x8000 - movge r2, r4 - mov r0, r5 - add r1, r1, r3 - bl ghiDoSend - cmp r0, r7 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, [r6, #4] - add r2, r1, r0 - str r2, [r6, #4] - ldr r1, [r6, #0] - ldr r1, [r1, #0xc] - cmp r1, r2 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - cmp r0, #0 - bne _022222FC - mov r0, #2 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_0222235C: .word Unk_ov60_022295B8 -_02222360: .word Unk_ov60_02229444 -_02222364: .word Unk_ov60_02229400 -_02222368: .word 0x0000036E -_0222236C: .word Unk_ov60_02229678 -_02222370: .word 0x00000375 - arm_func_end ghiPostFileMemoryStateDoPosting - - arm_func_start ghiPostStateDoPosting -ghiPostStateDoPosting: ; 0x02222374 - stmfd sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - sub sp, sp, #0x800 - mov r6, r0 - ldr r0, [r6, #4] - mvn r3, #0 - mov r5, r1 - mov r4, r2 - cmp r0, r3 - bne _022224CC - mov r0, #0 - str r0, [r6, #4] - ldr r0, [r5, #0x13c] - ldr r0, [r0, #0xc] - cmp r0, #0 - bne _02222404 - ldr r0, [r6, #0] - ldr r0, [r0, #0] - cmp r0, #0 - beq _022223D8 - ldr r0, _02222548 ; =0x022296A8 - ldr r1, _0222254C ; =0x02229444 - ldr r2, _02222550 ; =0x0222935C - rsb r3, r3, #0x3a8 - bl __msl_assertion_failed -_022223D8: - ldr r1, [r6, #0] - cmp r4, #0 - add r0, sp, #8 - ldr r2, [r1, #4] - beq _022223F8 - ldr r1, _02222554 ; =0x022296C8 - bl sprintf - b _0222248C -_022223F8: - ldr r1, _02222558 ; =0x022296CC - bl sprintf - b _0222248C -_02222404: - ldr r3, [r6, #0] - ldr r1, [r3, #0] - cmp r1, #0 - bne _02222434 - cmp r4, #0 - ldrne r2, _0222255C ; =0x022296D4 - ldr r3, [r3, #4] - ldreq r2, _02222560 ; =0x022296FC - ldr r1, _02222564 ; =0x02229728 - add r0, sp, #8 - bl sprintf - b _0222248C -_02222434: - sub r0, r1, #1 - cmp r0, #1 - bhi _02222478 - cmp r1, #1 - ldreq r0, [r3, #0xc] - ldreq r1, [r3, #0x10] - ldrne r0, [r3, #0x10] - ldrne r1, [r3, #0x14] - cmp r4, #0 - stmia sp, {r0, r1} - ldrne r2, _0222255C ; =0x022296D4 - ldr r3, [r3, #4] - ldreq r2, _02222560 ; =0x022296FC - ldr r1, _02222568 ; =0x02229758 - add r0, sp, #8 - bl sprintf - b _0222248C -_02222478: - ldr r0, _0222256C ; =0x02229440 - ldr r1, _0222254C ; =0x02229444 - ldr r2, _02222550 ; =0x0222935C - mov r3, #0x3dc - bl __msl_assertion_failed -_0222248C: - add r0, sp, #8 - bl strlen - mov r2, r0 - add r1, sp, #8 - mov r0, r5 - bl ghiTrySendThenBuffer - cmp r0, #0 - addeq sp, sp, #8 - addeq sp, sp, #0x800 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - cmp r0, #2 - addeq sp, sp, #8 - addeq sp, sp, #0x800 - moveq r0, #2 - ldmeqia sp!, {r4, r5, r6, pc} -_022224CC: - ldr r0, [r6, #0] - ldr r0, [r0, #0] - cmp r0, #0 - bne _022224F4 - mov r0, r6 - mov r1, r5 - bl ghiPostStringStateDoPosting - add sp, sp, #8 - add sp, sp, #0x800 - ldmia sp!, {r4, r5, r6, pc} -_022224F4: - cmp r0, #1 - bne _02222514 - mov r0, r6 - mov r1, r5 - bl ghiPostFileDiskStateDoPosting - add sp, sp, #8 - add sp, sp, #0x800 - ldmia sp!, {r4, r5, r6, pc} -_02222514: - cmp r0, #2 - beq _02222530 - ldr r0, _02222570 ; =0x022297AC - ldr r1, _0222254C ; =0x02229444 - ldr r2, _02222550 ; =0x0222935C - ldr r3, _02222574 ; =0x000003F5 - bl __msl_assertion_failed -_02222530: - mov r0, r6 - mov r1, r5 - bl ghiPostFileMemoryStateDoPosting - add sp, sp, #8 - add sp, sp, #0x800 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_02222548: .word Unk_ov60_022296A8 -_0222254C: .word Unk_ov60_02229444 -_02222550: .word Unk_ov60_0222935C -_02222554: .word Unk_ov60_022296C8 -_02222558: .word Unk_ov60_022296CC -_0222255C: .word Unk_ov60_022296D4 -_02222560: .word Unk_ov60_022296FC -_02222564: .word Unk_ov60_02229728 -_02222568: .word Unk_ov60_02229758 -_0222256C: .word Unk_ov60_02229440 -_02222570: .word Unk_ov60_022297AC -_02222574: .word 0x000003F5 - arm_func_end ghiPostStateDoPosting - - arm_func_start ghiPostDoPosting -ghiPostDoPosting: ; 0x02222578 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - movs sl, r0 - bne _02222598 - ldr r0, _022227AC ; =0x022297D0 - ldr r1, _022227B0 ; =0x02229444 - ldr r2, _022227B4 ; =0x02229320 - ldr r3, _022227B8 ; =0x00000404 - bl __msl_assertion_failed -_02222598: - ldr r0, [sl, #0x13c] - cmp r0, #0 - bne _022225B8 - ldr r0, _022227BC ; =0x02229550 - ldr r1, _022227B0 ; =0x02229444 - ldr r2, _022227B4 ; =0x02229320 - ldr r3, _022227C0 ; =0x00000405 - bl __msl_assertion_failed -_022225B8: - ldr r0, [sl, #0x140] - cmp r0, #0 - bne _022225D8 - ldr r0, _022227C4 ; =0x022297DC - ldr r1, _022227B0 ; =0x02229444 - ldr r2, _022227B4 ; =0x02229320 - ldr r3, _022227C8 ; =0x00000406 - bl __msl_assertion_failed -_022225D8: - ldr r0, [sl, #0x13c] - ldr r0, [r0, #0] - bl ArrayLength - mov r4, r0 - ldr r0, [sl, #0x140] - bl ArrayLength - cmp r4, r0 - beq _0222260C - ldr r0, _022227CC ; =0x02229564 - ldr r1, _022227B0 ; =0x02229444 - ldr r2, _022227B4 ; =0x02229320 - ldr r3, _022227D0 ; =0x00000407 - bl __msl_assertion_failed -_0222260C: - ldr r0, [sl, #0x144] - cmp r0, #0 - bge _0222262C - ldr r0, _022227D4 ; =0x022297FC - ldr r1, _022227B0 ; =0x02229444 - ldr r2, _022227B4 ; =0x02229320 - ldr r3, _022227D8 ; =0x00000408 - bl __msl_assertion_failed -_0222262C: - ldr r0, [sl, #0x140] - bl ArrayLength - ldr r1, [sl, #0x144] - cmp r1, r0 - ble _02222654 - ldr r0, _022227DC ; =0x02229820 - ldr r1, _022227B0 ; =0x02229444 - ldr r2, _022227B4 ; =0x02229320 - ldr r3, _022227E0 ; =0x00000409 - bl __msl_assertion_failed -_02222654: - ldr r0, [sl, #0x140] - bl ArrayLength - ldr r1, [sl, #0x5c] - mov sb, r0 - cmp r1, #0 - beq _022226AC - mov r0, sl - bl ghiSendBufferedData - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [sl, #0x60] - ldr r0, [sl, #0x5c] - cmp r1, r0 - movlt r0, #2 - ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r0, sl, #0x50 - bl ghiResetBuffer - ldr r0, [sl, #0x144] - cmp r0, sb - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022226AC: - ldr r1, [sl, #0x144] - cmp r1, sb - bge _02222764 - ldr r7, _022227E4 ; =0x02229870 - ldr r6, _022227B0 ; =0x02229444 - ldr r5, _022227B4 ; =0x02229320 - ldr r4, _022227E8 ; =0x0000042F - mov fp, #1 -_022226CC: - ldr r0, [sl, #0x140] - bl ArrayNth - movs r8, r0 - bne _022226F0 - mov r0, r7 - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl __msl_assertion_failed -_022226F0: - ldr r0, [sl, #0x144] - mov r1, sl - cmp r0, #0 - moveq r2, fp - movne r2, #0 - mov r0, r8 - bl ghiPostStateDoPosting - cmp r0, #0 - bne _02222744 - ldr r0, [sl, #0xfc] - cmp r0, #0 - ldrne r0, [sl, #0x38] - cmpne r0, #0 - bne _0222273C - ldr r0, _022227EC ; =0x0222987C - ldr r1, _022227B0 ; =0x02229444 - ldr r2, _022227B4 ; =0x02229320 - ldr r3, _022227F0 ; =0x0000043B - bl __msl_assertion_failed -_0222273C: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02222744: - cmp r0, #2 - moveq r0, #2 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [sl, #0x144] - add r1, r0, #1 - str r1, [sl, #0x144] - cmp r1, sb - blt _022226CC -_02222764: - ldr r0, [sl, #0x13c] - ldr r0, [r0, #0xc] - cmp r0, #0 - beq _02222798 - ldr r0, _022227F4 ; =0x022298A8 - bl strlen - mov r2, r0 - ldr r1, _022227F4 ; =0x022298A8 - mov r0, sl - bl ghiTrySendThenBuffer - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02222798: - ldr r0, [sl, #0x5c] - cmp r0, #0 - movne r0, #2 - moveq r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_022227AC: .word Unk_ov60_022297D0 -_022227B0: .word Unk_ov60_02229444 -_022227B4: .word Unk_ov60_02229320 -_022227B8: .word 0x00000404 -_022227BC: .word Unk_ov60_02229550 -_022227C0: .word 0x00000405 -_022227C4: .word Unk_ov60_022297DC -_022227C8: .word 0x00000406 -_022227CC: .word Unk_ov60_02229564 -_022227D0: .word 0x00000407 -_022227D4: .word Unk_ov60_022297FC -_022227D8: .word 0x00000408 -_022227DC: .word Unk_ov60_02229820 -_022227E0: .word 0x00000409 -_022227E4: .word Unk_ov60_02229870 -_022227E8: .word 0x0000042F -_022227EC: .word Unk_ov60_0222987C -_022227F0: .word 0x0000043B -_022227F4: .word Unk_ov60_022298A8 - arm_func_end ghiPostDoPosting - - .rodata - - - .global Unk_ov60_02228C60 -Unk_ov60_02228C60: ; 0x02228C60 - .asciz "%00" - - - - .data - - - .global Unk_ov60_0222930C -Unk_ov60_0222930C: ; 0x0222930C - .incbin "incbin/overlay60_data.bin", 0x4CC, 0x4E0 - 0x4CC - - .global Unk_ov60_02229320 -Unk_ov60_02229320: ; 0x02229320 - .incbin "incbin/overlay60_data.bin", 0x4E0, 0x4F4 - 0x4E0 - - .global Unk_ov60_02229334 -Unk_ov60_02229334: ; 0x02229334 - .incbin "incbin/overlay60_data.bin", 0x4F4, 0x508 - 0x4F4 - - .global Unk_ov60_02229348 -Unk_ov60_02229348: ; 0x02229348 - .incbin "incbin/overlay60_data.bin", 0x508, 0x51C - 0x508 - - .global Unk_ov60_0222935C -Unk_ov60_0222935C: ; 0x0222935C - .incbin "incbin/overlay60_data.bin", 0x51C, 0x534 - 0x51C - - .global Unk_ov60_02229374 -Unk_ov60_02229374: ; 0x02229374 - .incbin "incbin/overlay60_data.bin", 0x534, 0x54C - 0x534 - - .global Unk_ov60_0222938C -Unk_ov60_0222938C: ; 0x0222938C - .incbin "incbin/overlay60_data.bin", 0x54C, 0x564 - 0x54C - - .global Unk_ov60_022293A4 -Unk_ov60_022293A4: ; 0x022293A4 - .incbin "incbin/overlay60_data.bin", 0x564, 0x580 - 0x564 - - .global Unk_ov60_022293C0 -Unk_ov60_022293C0: ; 0x022293C0 - .incbin "incbin/overlay60_data.bin", 0x580, 0x5A0 - 0x580 - - .global Unk_ov60_022293E0 -Unk_ov60_022293E0: ; 0x022293E0 - .incbin "incbin/overlay60_data.bin", 0x5A0, 0x5C0 - 0x5A0 - - .global Unk_ov60_02229400 -Unk_ov60_02229400: ; 0x02229400 - .incbin "incbin/overlay60_data.bin", 0x5C0, 0x5E0 - 0x5C0 - - .global Unk_ov60_02229420 -Unk_ov60_02229420: ; 0x02229420 - .incbin "incbin/overlay60_data.bin", 0x5E0, 0x600 - 0x5E0 - - .global Unk_ov60_02229440 -Unk_ov60_02229440: ; 0x02229440 - .incbin "incbin/overlay60_data.bin", 0x600, 0x604 - 0x600 - - .global Unk_ov60_02229444 -Unk_ov60_02229444: ; 0x02229444 - .incbin "incbin/overlay60_data.bin", 0x604, 0x610 - 0x604 - - .global Unk_ov60_02229450 -Unk_ov60_02229450: ; 0x02229450 - .incbin "incbin/overlay60_data.bin", 0x610, 0x654 - 0x610 - - .global Unk_ov60_02229494 -Unk_ov60_02229494: ; 0x02229494 - .incbin "incbin/overlay60_data.bin", 0x654, 0x65C - 0x654 - - .global Unk_ov60_0222949C -Unk_ov60_0222949C: ; 0x0222949C - .incbin "incbin/overlay60_data.bin", 0x65C, 0x660 - 0x65C - - .global Unk_ov60_022294A0 -Unk_ov60_022294A0: ; 0x022294A0 - .incbin "incbin/overlay60_data.bin", 0x660, 0x6A4 - 0x660 - - .global Unk_ov60_022294E4 -Unk_ov60_022294E4: ; 0x022294E4 - .incbin "incbin/overlay60_data.bin", 0x6A4, 0x6C8 - 0x6A4 - - .global Unk_ov60_02229508 -Unk_ov60_02229508: ; 0x02229508 - .incbin "incbin/overlay60_data.bin", 0x6C8, 0x6E0 - 0x6C8 - - .global Unk_ov60_02229520 -Unk_ov60_02229520: ; 0x02229520 - .incbin "incbin/overlay60_data.bin", 0x6E0, 0x708 - 0x6E0 - - .global Unk_ov60_02229548 -Unk_ov60_02229548: ; 0x02229548 - .incbin "incbin/overlay60_data.bin", 0x708, 0x710 - 0x708 - - .global Unk_ov60_02229550 -Unk_ov60_02229550: ; 0x02229550 - .incbin "incbin/overlay60_data.bin", 0x710, 0x724 - 0x710 - - .global Unk_ov60_02229564 -Unk_ov60_02229564: ; 0x02229564 - .incbin "incbin/overlay60_data.bin", 0x724, 0x778 - 0x724 - - .global Unk_ov60_022295B8 -Unk_ov60_022295B8: ; 0x022295B8 - .incbin "incbin/overlay60_data.bin", 0x778, 0x788 - 0x778 - - .global Unk_ov60_022295C8 -Unk_ov60_022295C8: ; 0x022295C8 - .incbin "incbin/overlay60_data.bin", 0x788, 0x7B4 - 0x788 - - .global Unk_ov60_022295F4 -Unk_ov60_022295F4: ; 0x022295F4 - .incbin "incbin/overlay60_data.bin", 0x7B4, 0x7C4 - 0x7B4 - - .global Unk_ov60_02229604 -Unk_ov60_02229604: ; 0x02229604 - .incbin "incbin/overlay60_data.bin", 0x7C4, 0x7D8 - 0x7C4 - - .global Unk_ov60_02229618 -Unk_ov60_02229618: ; 0x02229618 - .incbin "incbin/overlay60_data.bin", 0x7D8, 0x800 - 0x7D8 - - .global Unk_ov60_02229640 -Unk_ov60_02229640: ; 0x02229640 - .incbin "incbin/overlay60_data.bin", 0x800, 0x838 - 0x800 - - .global Unk_ov60_02229678 -Unk_ov60_02229678: ; 0x02229678 - .incbin "incbin/overlay60_data.bin", 0x838, 0x868 - 0x838 - - .global Unk_ov60_022296A8 -Unk_ov60_022296A8: ; 0x022296A8 - .incbin "incbin/overlay60_data.bin", 0x868, 0x888 - 0x868 - - .global Unk_ov60_022296C8 -Unk_ov60_022296C8: ; 0x022296C8 - .incbin "incbin/overlay60_data.bin", 0x888, 0x88C - 0x888 - - .global Unk_ov60_022296CC -Unk_ov60_022296CC: ; 0x022296CC - .incbin "incbin/overlay60_data.bin", 0x88C, 0x894 - 0x88C - - .global Unk_ov60_022296D4 -Unk_ov60_022296D4: ; 0x022296D4 - .incbin "incbin/overlay60_data.bin", 0x894, 0x8BC - 0x894 - - .global Unk_ov60_022296FC -Unk_ov60_022296FC: ; 0x022296FC - .incbin "incbin/overlay60_data.bin", 0x8BC, 0x8E8 - 0x8BC - - .global Unk_ov60_02229728 -Unk_ov60_02229728: ; 0x02229728 - .incbin "incbin/overlay60_data.bin", 0x8E8, 0x918 - 0x8E8 - - .global Unk_ov60_02229758 -Unk_ov60_02229758: ; 0x02229758 - .incbin "incbin/overlay60_data.bin", 0x918, 0x96C - 0x918 - - .global Unk_ov60_022297AC -Unk_ov60_022297AC: ; 0x022297AC - .incbin "incbin/overlay60_data.bin", 0x96C, 0x990 - 0x96C - - .global Unk_ov60_022297D0 -Unk_ov60_022297D0: ; 0x022297D0 - .incbin "incbin/overlay60_data.bin", 0x990, 0x99C - 0x990 - - .global Unk_ov60_022297DC -Unk_ov60_022297DC: ; 0x022297DC - .incbin "incbin/overlay60_data.bin", 0x99C, 0x9BC - 0x99C - - .global Unk_ov60_022297FC -Unk_ov60_022297FC: ; 0x022297FC - .incbin "incbin/overlay60_data.bin", 0x9BC, 0x9E0 - 0x9BC - - .global Unk_ov60_02229820 -Unk_ov60_02229820: ; 0x02229820 - .incbin "incbin/overlay60_data.bin", 0x9E0, 0xA30 - 0x9E0 - - .global Unk_ov60_02229870 -Unk_ov60_02229870: ; 0x02229870 - .incbin "incbin/overlay60_data.bin", 0xA30, 0xA3C - 0xA30 - - .global Unk_ov60_0222987C -Unk_ov60_0222987C: ; 0x0222987C - .incbin "incbin/overlay60_data.bin", 0xA3C, 0xA68 - 0xA3C - - .global Unk_ov60_022298A8 -Unk_ov60_022298A8: ; 0x022298A8 - .incbin "incbin/overlay60_data.bin", 0xA68, 0x2C - - - - .bss - - - .global Unk_ov60_02229E40 -Unk_ov60_02229E40: ; 0x02229E40 - .space 0x4 - - .global Unk_ov60_02229E44 -Unk_ov60_02229E44: ; 0x02229E44 - .space 0x4 - - .global Unk_ov60_02229E48 -Unk_ov60_02229E48: ; 0x02229E48 - .space 0x4 - - .global Unk_ov60_02229E4C -Unk_ov60_02229E4C: ; 0x02229E4C - .space 0x4 - diff --git a/subprojects/gamespy/libraries/ghttp/asm/ghttpprocess.s b/subprojects/gamespy/libraries/ghttp/asm/ghttpprocess.s deleted file mode 100644 index 2c4fc3f7d9..0000000000 --- a/subprojects/gamespy/libraries/ghttp/asm/ghttpprocess.s +++ /dev/null @@ -1,1765 +0,0 @@ - .include "macros/function.inc" - .include "include/ghttpprocess.inc" - - .extern Unk_ov60_02229E28 - .extern Unk_ov60_02229E24 - - .extern ghiThrottleBufferSize - .text - - - arm_func_start ghiParseURL -ghiParseURL: ; 0x022227F8 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - movs r5, r0 - bne _02222818 - ldr r0, _0222298C ; =0x02229968 - ldr r1, _02222990 ; =0x02229974 - ldr r2, _02222994 ; =0x022298D4 - mov r3, #0x25 - bl __msl_assertion_failed -_02222818: - cmp r5, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldr r0, [r5, #0x14] - cmp r0, #0 - bne _02222844 - ldr r0, _02222998 ; =0x02229984 - ldr r1, _02222990 ; =0x02229974 - ldr r2, _02222994 ; =0x022298D4 - mov r3, #0x2b - bl __msl_assertion_failed -_02222844: - ldr r4, [r5, #0x14] - cmp r4, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldr r1, _0222299C ; =0x02229994 - mov r0, r4 - mov r2, #7 - bl strncmp - cmp r0, #0 - addeq r4, r4, #7 - moveq r8, #0 - beq _0222289C - ldr r1, _022229A0 ; =0x0222999C - mov r0, r4 - mov r2, #8 - bl strncmp - cmp r0, #0 - addeq r4, r4, #8 - moveq r8, #1 - beq _0222289C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0222289C: - ldr r1, _022229A4 ; =0x022299A8 - mov r0, r4 - bl strcspn - mov r6, r0 - ldrsb r7, [r4, r6] - mov r1, #0 - mov r0, r4 - strb r1, [r4, r6] - bl goastrdup - str r0, [r5, #0x18] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - strb r7, [r4, r6] - ldrsb r0, [r4, r6]! - cmp r0, #0x3a - bne _02222918 - add r4, r4, #1 - mov r0, r4 - bl atoi - strh r0, [r5, #0x20] - ldrh r0, [r5, #0x20] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} -_02222900: - ldrsb r0, [r4, #1]! - cmp r0, #0 - beq _0222292C - cmp r0, #0x2f - bne _02222900 - b _0222292C -_02222918: - cmp r8, #0 - ldrne r0, _022229A8 ; =0x000001BB - strneh r0, [r5, #0x20] - moveq r0, #0x50 - streqh r0, [r5, #0x20] -_0222292C: - ldrsb r0, [r4] - cmp r0, #0 - ldreq r4, _022229AC ; =0x022299AC - mov r0, r4 - bl goastrdup - mov r1, #0x20 - mov r7, r0 - str r0, [r5, #0x24] - bl strchr - cmp r0, #0 - beq _0222297C - mov r6, #0x2b - mov r4, #0x20 -_02222960: - strb r6, [r0] - ldr r7, [r5, #0x24] - mov r1, r4 - mov r0, r7 - bl strchr - cmp r0, #0 - bne _02222960 -_0222297C: - cmp r7, #0 - moveq r0, #0 - movne r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_0222298C: .word Unk_ov60_02229968 -_02222990: .word Unk_ov60_02229974 -_02222994: .word Unk_ov60_022298D4 -_02222998: .word Unk_ov60_02229984 -_0222299C: .word Unk_ov60_02229994 -_022229A0: .word Unk_ov60_0222999C -_022229A4: .word Unk_ov60_022299A8 -_022229A8: .word 0x000001BB -_022229AC: .word Unk_ov60_022299AC - arm_func_end ghiParseURL - - arm_func_start ghiDoHostLookup -ghiDoHostLookup: ; 0x022229B0 - stmfd sp!, {r3, r4, r5, lr} - mov r1, #0 - mov r4, r0 - mov r2, r1 - bl ghiCallProgressCallback - bl SocketStartUp - mov r0, r4 - bl ghiParseURL - cmp r0, #0 - bne _022229EC - mov r0, #1 - str r0, [r4, #0xfc] - mov r0, #3 - str r0, [r4, #0x38] - ldmia sp!, {r3, r4, r5, pc} -_022229EC: - ldr r5, [r4, #0x15c] - cmp r5, #0 - bne _02222A08 - ldr r0, _02222A70 ; =0x02229E28 - ldr r5, [r0, #0] - cmp r5, #0 - ldreq r5, [r4, #0x18] -_02222A08: - mov r0, r5 - bl inet_addr - mvn r1, #0 - str r0, [r4, #0x1c] - cmp r0, r1 - bne _02222A54 - mov r0, r5 - bl SOC_GetHostByName - cmp r0, #0 - bne _02222A44 - mov r0, #1 - str r0, [r4, #0xfc] - mov r0, #4 - str r0, [r4, #0x38] - ldmia sp!, {r3, r4, r5, pc} -_02222A44: - ldr r0, [r0, #0xc] - ldr r0, [r0, #0] - ldr r0, [r0, #0] - str r0, [r4, #0x1c] -_02222A54: - mov r1, #0 - mov r3, #1 - mov r0, r4 - mov r2, r1 - str r3, [r4, #0x10] - bl ghiCallProgressCallback - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02222A70: .word Unk_ov60_02229E28 - arm_func_end ghiDoHostLookup - - arm_func_start ghiDoConnecting -ghiDoConnecting: ; 0x02222A74 - stmfd sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r1, [r4, #0x48] - mvn r0, #0 - cmp r1, r0 - bne _02222C20 - mov r0, #2 - mov r1, #1 - mov r2, #0 - bl socket - mvn r1, #0 - str r0, [r4, #0x48] - cmp r0, r1 - bne _02222AD4 - mov r0, #1 - str r0, [r4, #0xfc] - mov r0, #5 - str r0, [r4, #0x38] - ldr r0, [r4, #0x48] - bl GOAGetLastError - add sp, sp, #0x10 - str r0, [r4, #0x4c] - ldmia sp!, {r4, pc} -_02222AD4: - mov r1, #0 - bl SetSockBlocking - cmp r0, #0 - bne _02222B08 - mov r0, #1 - str r0, [r4, #0xfc] - mov r0, #5 - str r0, [r4, #0x38] - ldr r0, [r4, #0x48] - bl GOAGetLastError - add sp, sp, #0x10 - str r0, [r4, #0x4c] - ldmia sp!, {r4, pc} -_02222B08: - ldr r0, [r4, #0x134] - cmp r0, #0 - beq _02222B24 - ldr r1, _02222CB8 ; =0x02229120 - ldr r0, [r4, #0x48] - ldr r1, [r1, #0] - bl SetReceiveBufferSize -_02222B24: - add r2, sp, #8 - mov r1, #0 - str r1, [r2, #0] - mov r0, #2 - str r1, [r2, #4] - strb r0, [sp, #9] - ldr r0, [r4, #0x15c] - cmp r0, #0 - beq _02222B6C - add r0, r4, #0x100 - ldrh r0, [r0, #0x60] - mov r1, r0, asr #8 - mov r0, r0, lsl #8 - and r1, r1, #0xff - and r0, r0, #0xff00 - orr r0, r1, r0 - strh r0, [sp, #0xa] - b _02222BBC -_02222B6C: - ldr r0, _02222CBC ; =0x02229E28 - ldr r0, [r0, #0] - cmp r0, #0 - beq _02222BA0 - ldr r0, _02222CC0 ; =0x02229E24 - ldrh r0, [r0] - mov r1, r0, asr #8 - mov r0, r0, lsl #8 - and r1, r1, #0xff - and r0, r0, #0xff00 - orr r0, r1, r0 - strh r0, [sp, #0xa] - b _02222BBC -_02222BA0: - ldrh r0, [r4, #0x20] - mov r1, r0, asr #8 - mov r0, r0, lsl #8 - and r1, r1, #0xff - and r0, r0, #0xff00 - orr r0, r1, r0 - strh r0, [sp, #0xa] -_02222BBC: - ldr r0, [r4, #0x1c] - add r1, sp, #8 - str r0, [sp, #0xc] - ldr r0, [r4, #0x48] - mov r2, #8 - bl connect - mvn r1, #0 - cmp r0, r1 - bne _02222C20 - ldr r0, [r4, #0x48] - bl GOAGetLastError - mvn r2, #5 - cmp r0, r2 - subne r1, r2, #0x14 - cmpne r0, r1 - subne r1, r2, #0x46 - cmpne r0, r1 - beq _02222C20 - mov r1, #1 - str r1, [r4, #0xfc] - mov r1, #6 - str r1, [r4, #0x38] - add sp, sp, #0x10 - str r0, [r4, #0x4c] - ldmia sp!, {r4, pc} -_02222C20: - ldr r0, [r4, #0x48] - add r2, sp, #4 - add r3, sp, #0 - mov r1, #0 - bl GSISocketSelect - cmp r0, #0 - movgt r1, #1 - movle r1, #0 - mvn r0, #0 - cmp r1, r0 - beq _02222C58 - ldr r0, [sp] - cmp r0, #0 - beq _02222C88 -_02222C58: - mov r0, #1 - str r0, [r4, #0xfc] - mov r0, #6 - cmp r1, #0 - addne sp, sp, #0x10 - str r0, [r4, #0x38] - ldmneia sp!, {r4, pc} - ldr r0, [r4, #0x48] - bl GOAGetLastError - add sp, sp, #0x10 - str r0, [r4, #0x4c] - ldmia sp!, {r4, pc} -_02222C88: - ldr r0, [sp, #4] - cmp r0, #0 - addeq sp, sp, #0x10 - ldmeqia sp!, {r4, pc} - mov r1, #0 - mov r3, #2 - mov r0, r4 - mov r2, r1 - str r3, [r4, #0x10] - bl ghiCallProgressCallback - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02222CB8: .word ghiThrottleBufferSize -_02222CBC: .word Unk_ov60_02229E28 -_02222CC0: .word Unk_ov60_02229E24 - arm_func_end ghiDoConnecting - - arm_func_start ghiDoSecuringSession -ghiDoSecuringSession: ; 0x02222CC4 - stmfd sp!, {r3, r4, lr} - sub sp, sp, #4 - sub sp, sp, #0x400 - mov r4, r0 - ldr r1, [r4, #0x168] - cmp r1, #0 - bne _02222D38 - ldr r0, [r4, #0x14] - ldr r1, _02222E10 ; =0x0222999C - mov r2, #8 - bl strncmp - cmp r0, #0 - bne _02222D14 - mov r0, #1 - add sp, sp, #4 - str r0, [r4, #0xfc] - mov r0, #0x11 - add sp, sp, #0x400 - str r0, [r4, #0x38] - ldmia sp!, {r3, r4, pc} -_02222D14: - mov r1, #0 - mov r3, #3 - mov r0, r4 - mov r2, r1 - str r3, [r4, #0x10] - bl ghiCallProgressCallback - add sp, sp, #4 - add sp, sp, #0x400 - ldmia sp!, {r3, r4, pc} -_02222D38: - ldr r1, [r4, #0x170] - cmp r1, #0 - beq _02222D64 - mov r1, #0 - mov r3, #3 - mov r2, r1 - str r3, [r4, #0x10] - bl ghiCallProgressCallback - add sp, sp, #4 - add sp, sp, #0x400 - ldmia sp!, {r3, r4, pc} -_02222D64: - ldr r1, [r4, #0x16c] - cmp r1, #0 - bne _02222DA4 - ldr r2, [r4, #0x174] - add r1, r4, #0x164 - blx r2 - cmp r0, #3 - bne _02222DA4 - ldr r0, _02222E14 ; =0x022299B0 - ldr r1, _02222E18 ; =0x02229974 - ldr r2, _02222E1C ; =0x02229914 - ldr r3, _02222E20 ; =0x00000146 - bl __msl_assertion_failed - add sp, sp, #4 - add sp, sp, #0x400 - ldmia sp!, {r3, r4, pc} -_02222DA4: - ldr r1, [r4, #0x60] - ldr r0, [r4, #0x5c] - cmp r1, r0 - bge _02222DEC - mov r0, r4 - bl ghiSendBufferedData - cmp r0, #0 - addeq sp, sp, #4 - addeq sp, sp, #0x400 - ldmeqia sp!, {r3, r4, pc} - ldr r1, [r4, #0x60] - ldr r0, [r4, #0x5c] - cmp r1, r0 - addlt sp, sp, #4 - addlt sp, sp, #0x400 - ldmltia sp!, {r3, r4, pc} - add r0, r4, #0x50 - bl ghiResetBuffer -_02222DEC: - mov r3, #0x400 - add r1, sp, #4 - add r2, sp, #0 - mov r0, r4 - str r3, [sp] - bl ghiDoReceive - add sp, sp, #4 - add sp, sp, #0x400 - ldmia sp!, {r3, r4, pc} - ; .align 2, 0 -_02222E10: .word Unk_ov60_0222999C -_02222E14: .word Unk_ov60_022299B0 -_02222E18: .word Unk_ov60_02229974 -_02222E1C: .word Unk_ov60_02229914 -_02222E20: .word 0x00000146 - arm_func_end ghiDoSecuringSession - - arm_func_start ghiDoSendingRequest -ghiDoSendingRequest: ; 0x02222E24 - stmfd sp!, {r3, r4, r5, lr} - sub sp, sp, #0x10 - mov r5, r0 - ldr r0, [r5, #0x5c] - cmp r0, #0 - bne _02222FFC - ldr r0, [r5, #0x13c] - add r4, r5, #0x50 - cmp r0, #0 - ldrne r1, _02223058 ; =0x022299B4 - bne _02222E60 - ldr r0, [r5, #0xc] - cmp r0, #3 - ldreq r1, _0222305C ; =0x022299BC - ldrne r1, _02223060 ; =0x022299C4 -_02222E60: - mov r0, r4 - mov r2, #0 - bl ghiAppendDataToBuffer - ldr r0, [r5, #0x15c] - mov r2, #0 - cmp r0, #0 - ldreq r0, _02223064 ; =0x02229E28 - ldreq r0, [r0] - cmpeq r0, #0 - beq _02222E98 - ldr r1, [r5, #0x14] - mov r0, r4 - bl ghiAppendDataToBuffer - b _02222EA4 -_02222E98: - ldr r1, [r5, #0x24] - mov r0, r4 - bl ghiAppendDataToBuffer -_02222EA4: - ldr r1, _02223068 ; =0x022299CC - mov r0, r4 - mov r2, #0 - bl ghiAppendDataToBuffer - ldrh r0, [r5, #0x20] - cmp r0, #0x50 - bne _02222ED4 - ldr r2, [r5, #0x18] - ldr r1, _0222306C ; =0x022299D8 - mov r0, r4 - bl ghiAppendHeaderToBuffer - b _02222F1C -_02222ED4: - ldr r1, _02223070 ; =0x022299E0 - mov r0, r4 - mov r2, #0 - bl ghiAppendDataToBuffer - ldr r1, [r5, #0x18] - mov r0, r4 - mov r2, #0 - bl ghiAppendDataToBuffer - mov r0, r4 - mov r1, #0x3a - bl ghiAppendCharToBuffer - ldrh r1, [r5, #0x20] - mov r0, r4 - bl ghiAppendIntToBuffer - mov r0, r4 - ldr r1, _02223074 ; =0x022299E8 - mov r2, #2 - bl ghiAppendDataToBuffer -_02222F1C: - ldr r0, [r5, #0x28] - cmp r0, #0 - beq _02222F38 - ldr r1, _02223078 ; =0x022299EC - bl strstr - cmp r0, #0 - bne _02222F48 -_02222F38: - ldr r1, _02223078 ; =0x022299EC - ldr r2, _0222307C ; =0x022299F8 - mov r0, r4 - bl ghiAppendHeaderToBuffer -_02222F48: - ldr r0, [r5, #0x34] - cmp r0, #0 - beq _02222F68 - ldr r1, _02223080 ; =0x02229A08 - ldr r2, _02223084 ; =0x02229A14 - mov r0, r4 - bl ghiAppendHeaderToBuffer - b _02222F78 -_02222F68: - ldr r1, _02223080 ; =0x02229A08 - ldr r2, _02223088 ; =0x02229A20 - mov r0, r4 - bl ghiAppendHeaderToBuffer -_02222F78: - ldr r0, [r5, #0x13c] - cmp r0, #0 - beq _02222FBC - ldr r2, [r5, #0x14c] - ldr r1, _0222308C ; =0x02229A28 - add r0, sp, #0 - bl sprintf - ldr r1, _02223090 ; =0x02229A2C - add r2, sp, #0 - mov r0, r4 - bl ghiAppendHeaderToBuffer - mov r0, r5 - bl ghiPostGetContentType - mov r2, r0 - ldr r1, _02223094 ; =0x02229A3C - mov r0, r4 - bl ghiAppendHeaderToBuffer -_02222FBC: - ldr r1, [r5, #0x28] - cmp r1, #0 - beq _02222FD4 - mov r0, r4 - mov r2, #0 - bl ghiAppendDataToBuffer -_02222FD4: - ldr r1, _02223074 ; =0x022299E8 - mov r0, r4 - mov r2, #2 - bl ghiAppendDataToBuffer - add r0, r5, #0x50 - cmp r4, r0 - beq _02222FFC - ldr r1, [r4, #4] - ldr r2, [r4, #0xc] - bl ghiAppendDataToBuffer -_02222FFC: - mov r0, r5 - bl ghiSendBufferedData - cmp r0, #0 - addeq sp, sp, #0x10 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, [r5, #0x60] - ldr r0, [r5, #0x5c] - cmp r1, r0 - addlt sp, sp, #0x10 - ldmltia sp!, {r3, r4, r5, pc} - add r0, r5, #0x50 - bl ghiResetBuffer - ldr r0, [r5, #0x13c] - mov r1, #0 - cmp r0, #0 - movne r0, #4 - moveq r0, #5 - str r0, [r5, #0x10] - mov r0, r5 - mov r2, r1 - bl ghiCallProgressCallback - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02223058: .word Unk_ov60_022299B4 -_0222305C: .word Unk_ov60_022299BC -_02223060: .word Unk_ov60_022299C4 -_02223064: .word Unk_ov60_02229E28 -_02223068: .word Unk_ov60_022299CC -_0222306C: .word Unk_ov60_022299D8 -_02223070: .word Unk_ov60_022299E0 -_02223074: .word Unk_ov60_022299E8 -_02223078: .word Unk_ov60_022299EC -_0222307C: .word Unk_ov60_022299F8 -_02223080: .word Unk_ov60_02229A08 -_02223084: .word Unk_ov60_02229A14 -_02223088: .word Unk_ov60_02229A20 -_0222308C: .word Unk_ov60_02229A28 -_02223090: .word Unk_ov60_02229A2C -_02223094: .word Unk_ov60_02229A3C - arm_func_end ghiDoSendingRequest - - arm_func_start ghiDoPosting -ghiDoPosting: ; 0x02223098 - stmfd sp!, {r4, r5, r6, lr} - mov r6, r0 - ldr r5, [r6, #0x148] - bl ghiPostDoPosting - movs r4, r0 - bne _022230E4 - ldr r0, [r6, #0xfc] - cmp r0, #0 - ldrne r0, [r6, #0x38] - cmpne r0, #0 - bne _022230D8 - ldr r0, _02223124 ; =0x02229A4C - ldr r1, _02223128 ; =0x02229974 - ldr r2, _0222312C ; =0x022298E0 - mov r3, #0x200 - bl __msl_assertion_failed -_022230D8: - mov r0, r6 - bl ghiPostCleanupState - ldmia sp!, {r4, r5, r6, pc} -_022230E4: - ldr r0, [r6, #0x148] - cmp r5, r0 - beq _022230F8 - mov r0, r6 - bl ghiCallPostCallback -_022230F8: - cmp r4, #1 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r6 - bl ghiPostCleanupState - mov r1, #0 - mov r3, #5 - mov r0, r6 - mov r2, r1 - str r3, [r6, #0x10] - bl ghiCallProgressCallback - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_02223124: .word Unk_ov60_02229A4C -_02223128: .word Unk_ov60_02229974 -_0222312C: .word Unk_ov60_022298E0 - arm_func_end ghiDoPosting - - arm_func_start ghiDoWaiting -ghiDoWaiting: ; 0x02223130 - stmfd sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, r0 - mov r2, #0 - ldr r0, [r4, #0x48] - add r1, sp, #0 - mov r3, r2 - bl GSISocketSelect - mvn r1, #0 - cmp r0, r1 - bne _02223180 - mov r0, #1 - str r0, [r4, #0xfc] - mov r0, #5 - str r0, [r4, #0x38] - ldr r0, [r4, #0x48] - bl GOAGetLastError - add sp, sp, #4 - str r0, [r4, #0x4c] - ldmia sp!, {r3, r4, pc} -_02223180: - ldr r0, [sp] - cmp r0, #0 - addeq sp, sp, #4 - ldmeqia sp!, {r3, r4, pc} - mov r1, #0 - mov r3, #6 - mov r0, r4 - mov r2, r1 - str r3, [r4, #0x10] - bl ghiCallProgressCallback - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - arm_func_end ghiDoWaiting - - arm_func_start ghiParseStatus -ghiParseStatus: ; 0x022231B0 - stmfd sp!, {r4, r5, r6, lr} - sub sp, sp, #0x18 - movs r4, r0 - bne _022231D4 - ldr r0, _022232DC ; =0x02229968 - ldr r1, _022232E0 ; =0x02229974 - ldr r2, _022232E4 ; =0x022298F0 - ldr r3, _022232E8 ; =0x0000024E - bl __msl_assertion_failed -_022231D4: - ldr r0, [r4, #0x80] - cmp r0, #0 - bgt _022231F4 - ldr r0, _022232EC ; =0x02229A78 - ldr r1, _022232E0 ; =0x02229974 - ldr r2, _022232E4 ; =0x022298F0 - ldr r3, _022232F0 ; =0x0000024F - bl __msl_assertion_failed -_022231F4: - add r1, sp, #0xc - str r1, [sp] - add r0, sp, #8 - str r0, [sp, #4] - ldr r0, [r4, #0x78] - ldr r1, _022232F4 ; =0x02229A98 - add r2, sp, #0x14 - add r3, sp, #0x10 - bl sscanf - mov ip, #0 - ldr r5, [sp, #8] - mov lr, #1 - ldr r2, _022232F8 ; =0x020FE864 - mov r3, ip - b _02223238 -_02223230: - add r5, r5, #1 - str r5, [sp, #8] -_02223238: - ldr r1, [r4, #0x78] - ldrsb r1, [r1, r5] - cmp r1, #0 - beq _02223274 - mov r6, lr - blt _02223258 - cmp r1, #0x80 - movlt r6, ip -_02223258: - cmp r6, #0 - movne r1, r3 - moveq r1, r1, lsl #1 - ldreqh r1, [r2, r1] - andeq r1, r1, #0x100 - cmp r1, #0 - bne _02223230 -_02223274: - cmp r0, #3 - bne _02223298 - ldr r1, [sp, #0x14] - cmp r1, #1 - ldrge r0, [sp, #0xc] - cmpge r0, #0x64 - blt _02223298 - cmp r0, #0x258 - blt _022232B4 -_02223298: - mov r0, #1 - str r0, [r4, #0xfc] - mov r0, #7 - str r0, [r4, #0x38] - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_022232B4: - str r1, [r4, #0xe4] - ldr r1, [sp, #0x10] - mov r0, #1 - str r1, [r4, #0xe8] - ldr r1, [sp, #0xc] - str r1, [r4, #0xec] - ldr r1, [sp, #8] - str r1, [r4, #0xf0] - add sp, sp, #0x18 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_022232DC: .word Unk_ov60_02229968 -_022232E0: .word Unk_ov60_02229974 -_022232E4: .word Unk_ov60_022298F0 -_022232E8: .word 0x0000024E -_022232EC: .word Unk_ov60_02229A78 -_022232F0: .word 0x0000024F -_022232F4: .word Unk_ov60_02229A98 -_022232F8: .word 0x020FE864 - arm_func_end ghiParseStatus - - arm_func_start ghiDoReceivingStatus -ghiDoReceivingStatus: ; 0x022232FC - stmfd sp!, {r4, r5, lr} - sub sp, sp, #4 - sub sp, sp, #0x400 - mov r3, #0x400 - add r1, sp, #4 - add r2, sp, #0 - mov r4, r0 - str r3, [sp] - bl ghiDoReceive - mov r5, r0 - cmp r5, #3 - addeq sp, sp, #4 - addeq sp, sp, #0x400 - ldmeqia sp!, {r4, r5, pc} - cmp r5, #1 - ldreq r1, [r4, #0x84] - ldreq r0, [r4, #0x80] - cmpeq r1, r0 - addeq sp, sp, #4 - addeq sp, sp, #0x400 - ldmeqia sp!, {r4, r5, pc} - cmp r5, #0 - bne _02223378 - ldr r2, [sp] - add r1, sp, #4 - add r0, r4, #0x74 - bl ghiAppendDataToBuffer - cmp r0, #0 - addeq sp, sp, #4 - addeq sp, sp, #0x400 - ldmeqia sp!, {r4, r5, pc} -_02223378: - ldr r0, [r4, #0x78] - ldr r1, _02223420 ; =0x022299E8 - bl strstr - cmp r0, #0 - beq _022233E8 - mov r1, #0 - strb r1, [r0] - ldr r1, [r4, #0x78] - sub r5, r0, r1 - add r1, r5, #1 - mov r0, r4 - str r1, [r4, #0xf8] - bl ghiParseStatus - cmp r0, #0 - addeq sp, sp, #4 - addeq sp, sp, #0x400 - ldmeqia sp!, {r4, r5, pc} - add r3, r5, #2 - mov r1, #0 - str r3, [r4, #0x84] - mov r3, #7 - mov r0, r4 - mov r2, r1 - str r3, [r4, #0x10] - bl ghiCallProgressCallback - add sp, sp, #4 - add sp, sp, #0x400 - ldmia sp!, {r4, r5, pc} -_022233E8: - cmp r5, #2 - addne sp, sp, #4 - addne sp, sp, #0x400 - ldmneia sp!, {r4, r5, pc} - mov r0, #1 - str r0, [r4, #0xfc] - mov r0, #7 - str r0, [r4, #0x38] - ldr r0, [r4, #0x48] - bl GOAGetLastError - str r0, [r4, #0x4c] - add sp, sp, #4 - add sp, sp, #0x400 - ldmia sp!, {r4, r5, pc} - ; .align 2, 0 -_02223420: .word Unk_ov60_022299E8 - arm_func_end ghiDoReceivingStatus - - arm_func_start ghiDeliverIncomingFileData -ghiDeliverIncomingFileData: ; 0x02223424 - stmfd sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4, #0x100] - mov ip, #0 - add r3, r0, r2 - str r3, [r4, #0x100] - ldr r0, [r4, #0x104] - mov lr, ip - cmp r3, r0 - beq _02223458 - ldr r0, [r4, #0x130] - cmp r0, #0 - beq _02223460 -_02223458: - mov r0, #1 - str r0, [r4, #0xfc] -_02223460: - ldr r0, [r4, #0xc] - cmp r0, #0 - bne _0222348C - add r0, r4, #0xbc - bl ghiAppendDataToBuffer - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldr ip, [r4, #0xc0] - ldr lr, [r4, #0xc8] - b _022234CC -_0222348C: - cmp r0, #1 - bne _022234C0 - cmp r2, #0 - beq _022234B4 - mov r0, #1 - str r0, [r4, #0xfc] - mov r0, #0xd - str r0, [r4, #0x38] - mov r0, #0 - ldmia sp!, {r4, pc} -_022234B4: - mov ip, r1 - mov lr, r2 - b _022234CC -_022234C0: - cmp r0, #2 - moveq ip, r1 - moveq lr, r2 -_022234CC: - mov r0, r4 - mov r1, ip - mov r2, lr - bl ghiCallProgressCallback - mov r0, #1 - ldmia sp!, {r4, pc} - arm_func_end ghiDeliverIncomingFileData - - arm_func_start ghiParseChunkSize -ghiParseChunkSize: ; 0x022234E4 - stmfd sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, r0 - ldr r0, [r4, #0x120] - cmp r0, #0 - bne _02223510 - ldr r0, _02223534 ; =0x02229AA8 - ldr r1, _02223538 ; =0x02229974 - ldr r2, _0222353C ; =0x02229900 - ldr r3, _02223540 ; =0x00000321 - bl __msl_assertion_failed -_02223510: - ldr r1, _02223544 ; =0x02229AAC - add r2, sp, #0 - add r0, r4, #0x114 - bl sscanf - cmp r0, #1 - mvnne r0, #0 - ldreq r0, [sp] - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - ; .align 2, 0 -_02223534: .word Unk_ov60_02229AA8 -_02223538: .word Unk_ov60_02229974 -_0222353C: .word Unk_ov60_02229900 -_02223540: .word 0x00000321 -_02223544: .word Unk_ov60_02229AAC - arm_func_end ghiParseChunkSize - - arm_func_start ghiAppendToChunkHeaderBuffer -ghiAppendToChunkHeaderBuffer: ; 0x02223548 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - movs r4, r0 - mov r7, r1 - mov r6, r2 - bne _02223570 - ldr r0, _022235F8 ; =0x02229968 - ldr r1, _022235FC ; =0x02229974 - ldr r2, _02223600 ; =0x02229948 - ldr r3, _02223604 ; =0x00000333 - bl __msl_assertion_failed -_02223570: - cmp r7, #0 - bne _0222358C - ldr r0, _02223608 ; =0x02229AB0 - ldr r1, _022235FC ; =0x02229974 - ldr r2, _02223600 ; =0x02229948 - mov r3, #0x334 - bl __msl_assertion_failed -_0222358C: - cmp r6, #0 - bge _022235A8 - ldr r0, _0222360C ; =0x02229AB8 - ldr r1, _022235FC ; =0x02229974 - ldr r2, _02223600 ; =0x02229948 - ldr r3, _02223610 ; =0x00000335 - bl __msl_assertion_failed -_022235A8: - cmp r6, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r3, [r4, #0x120] - cmp r3, #0xa - ldmgeia sp!, {r3, r4, r5, r6, r7, pc} - rsb r5, r3, #0xa - cmp r5, r6 - movge r5, r6 - add r0, r4, #0x114 - mov r1, r7 - mov r2, r5 - add r0, r0, r3 - bl memcpy - ldr r0, [r4, #0x120] - mov r1, #0 - add r0, r0, r5 - str r0, [r4, #0x120] - add r0, r4, r0 - strb r1, [r0, #0x114] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_022235F8: .word Unk_ov60_02229968 -_022235FC: .word Unk_ov60_02229974 -_02223600: .word Unk_ov60_02229948 -_02223604: .word 0x00000333 -_02223608: .word Unk_ov60_02229AB0 -_0222360C: .word Unk_ov60_02229AB8 -_02223610: .word 0x00000335 - arm_func_end ghiAppendToChunkHeaderBuffer - - arm_func_start ghiProcessIncomingFileData -ghiProcessIncomingFileData: ; 0x02223614 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - movs r6, r0 - mov r5, r1 - mov r4, r2 - bne _0222363C - ldr r0, _02223810 ; =0x02229968 - ldr r1, _02223814 ; =0x02229974 - ldr r2, _02223818 ; =0x0222992C - ldr r3, _0222381C ; =0x0000035D - bl __msl_assertion_failed -_0222363C: - cmp r5, #0 - bne _02223658 - ldr r0, _02223820 ; =0x02229AB0 - ldr r1, _02223814 ; =0x02229974 - ldr r2, _02223818 ; =0x0222992C - ldr r3, _02223824 ; =0x0000035E - bl __msl_assertion_failed -_02223658: - cmp r4, #0 - bgt _02223674 - ldr r0, _02223828 ; =0x02229AC4 - ldr r1, _02223814 ; =0x02229974 - ldr r2, _02223818 ; =0x0222992C - ldr r3, _0222382C ; =0x0000035F - bl __msl_assertion_failed -_02223674: - ldr r0, [r6, #0x110] - cmp r0, #0 - beq _022237FC - cmp r4, #0 - ble _022237F4 - mov r8, #0 - mov fp, #1 - mov sb, #3 - mvn r7, #0 -_02223698: - ldr r0, [r6, #0x128] - cmp r0, #0 - bne _0222372C - mov r0, r5 - mov r1, #0xa - bl strchr - movs sl, r0 - beq _02223714 - mov r0, r6 - mov r1, r5 - sub r2, sl, r5 - bl ghiAppendToChunkHeaderBuffer - add r1, sl, #1 - sub r2, r1, r5 - mov r0, r6 - sub r4, r4, r2 - mov r5, r1 - bl ghiParseChunkSize - str r0, [r6, #0x124] - cmp r0, r7 - bne _02223704 - mov r0, #1 - str r0, [r6, #0xfc] - mov r0, #7 - str r0, [r6, #0x38] - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02223704: - cmp r0, #0 - streq sb, [r6, #0x128] - strne fp, [r6, #0x128] - b _022237EC -_02223714: - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl ghiAppendToChunkHeaderBuffer - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0222372C: - cmp r0, #1 - bne _0222377C - ldr sl, [r6, #0x124] - mov r0, r6 - cmp sl, r4 - movge sl, r4 - mov r1, r5 - mov r2, sl - bl ghiDeliverIncomingFileData - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [r6, #0x124] - add r5, r5, sl - subs r0, r0, sl - str r0, [r6, #0x124] - moveq r0, #2 - sub r4, r4, sl - streq r0, [r6, #0x128] - b _022237EC -_0222377C: - cmp r0, #2 - bne _022237C0 - mov r0, r5 - mov r1, #0xa - bl strchr - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - strb r8, [r6, #0x114] - str r8, [r6, #0x120] - add r0, r0, #1 - sub r1, r0, r5 - str r8, [r6, #0x124] - mov r5, r0 - str r8, [r6, #0x128] - sub r4, r4, r1 - b _022237EC -_022237C0: - cmp r0, #3 - moveq r0, #1 - streq r0, [r6, #0xfc] - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, _02223830 ; =0x022299B0 - ldr r1, _02223814 ; =0x02229974 - ldr r2, _02223818 ; =0x0222992C - ldr r3, _02223834 ; =0x000003E3 - bl __msl_assertion_failed - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022237EC: - cmp r4, #0 - bgt _02223698 -_022237F4: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022237FC: - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl ghiDeliverIncomingFileData - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_02223810: .word Unk_ov60_02229968 -_02223814: .word Unk_ov60_02229974 -_02223818: .word Unk_ov60_0222992C -_0222381C: .word 0x0000035D -_02223820: .word Unk_ov60_02229AB0 -_02223824: .word 0x0000035E -_02223828: .word Unk_ov60_02229AC4 -_0222382C: .word 0x0000035F -_02223830: .word Unk_ov60_022299B0 -_02223834: .word 0x000003E3 - arm_func_end ghiProcessIncomingFileData - - arm_func_start ghiDoReceivingHeaders -ghiDoReceivingHeaders: ; 0x02223838 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x18 - mov sl, r0 - mov r0, #0x1000 - bl DWCi_GsMalloc - str r0, [sp, #4] - cmp r0, #0 - bne _0222386C - mov r0, #1 - str r0, [sl, #0xfc] - add sp, sp, #0x18 - str r0, [sl, #0x38] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0222386C: - ldr r1, [sp, #4] - mov r3, #0x1000 - add r2, sp, #8 - mov r0, sl - str r3, [sp, #8] - bl ghiDoReceive - mov r6, r0 - cmp r6, #3 - beq _02223C74 - cmp r6, #1 - ldreq r1, [sl, #0x84] - ldreq r0, [sl, #0x80] - cmpeq r1, r0 - beq _02223C74 - cmp r6, #0 - bne _022238C4 - ldr r2, [sp, #8] - ldr r1, [sp, #4] - add r0, sl, #0x74 - bl ghiAppendDataToBuffer - cmp r0, #0 - beq _02223C74 -_022238C4: - ldr r5, [sl, #0x84] - ldr r4, [sl, #0x78] - ldr r1, _02223C84 ; =0x02229ACC - add r0, r4, r5 - str r5, [sl, #0xf4] - bl strstr - cmp r0, #0 - bne _022238F0 - ldr r1, _02223C88 ; =0x02229AD4 - add r0, r4, r5 - bl strstr -_022238F0: - cmp r0, #0 - beq _02223C50 - mov r1, #0 - strb r1, [r0, #2] - ldr r2, [sl, #0x78] - add r7, r0, #2 - ldr r1, [sl, #0x80] - sub r3, r7, r2 - str r3, [sl, #0x80] - add r6, r0, #4 - ldr r3, [sl, #0x78] - sub r2, r6, r2 - sub r0, r7, r3 - str r0, [sl, #0xf8] - str r0, [sl, #0x84] - ldr r3, [sl, #0xec] - ldr r7, _02223C8C ; =0x51EB851F - mov r0, r3, lsr #0x1f - smull r3, r8, r7, r3 - add r8, r0, r8, asr #5 - cmp r8, #1 - sub r7, r1, r2 - bne _02223998 - cmp r7, #0 - beq _02223974 - ldr r0, [sl, #0x78] - mov r1, r6 - add r2, r7, #1 - bl memmove - str r7, [sl, #0x80] - mov r0, #0 - str r0, [sl, #0x84] - b _0222397C -_02223974: - add r0, sl, #0x74 - bl ghiResetBuffer -_0222397C: - mov r1, #0 - mov r3, #6 - mov r0, sl - mov r2, r1 - str r3, [sl, #0x10] - bl ghiCallProgressCallback - b _02223C74 -_02223998: - cmp r8, #3 - bne _02223AE8 - ldr r0, [sl, #0x10c] - cmp r0, #0xa - ble _022239C0 - mov r0, #1 - str r0, [sl, #0xfc] - mov r0, #0xb - str r0, [sl, #0x38] - b _02223C74 -_022239C0: - ldr r1, _02223C90 ; =0x02229AD8 - add r0, r4, r5 - bl strstr - cmp r0, #0 - beq _02223AE8 - add r4, r0, #9 - ldr r1, _02223C94 ; =0x020FE864 - mov r2, #0 - b _022239E8 -_022239E4: - add r4, r4, #1 -_022239E8: - ldrsb r0, [r4] - cmp r0, #0 - blt _022239FC - cmp r0, #0x80 - blt _02223A04 -_022239FC: - mov r0, r2 - b _02223A10 -_02223A04: - mov r0, r0, lsl #1 - ldrh r0, [r1, r0] - and r0, r0, #0x100 -_02223A10: - cmp r0, #0 - bne _022239E4 - mov r3, r4 - ldr r1, _02223C94 ; =0x020FE864 - mov r2, #0 - b _02223A2C -_02223A28: - add r3, r3, #1 -_02223A2C: - ldrsb r0, [r3] - cmp r0, #0 - beq _02223A60 - blt _02223A44 - cmp r0, #0x80 - blt _02223A4C -_02223A44: - mov r0, r2 - b _02223A58 -_02223A4C: - mov r0, r0, lsl #1 - ldrh r0, [r1, r0] - and r0, r0, #0x100 -_02223A58: - cmp r0, #0 - beq _02223A28 -_02223A60: - mov r0, #0 - strb r0, [r3] - ldrsb r0, [r4] - cmp r0, #0x2f - bne _02223AC4 - ldr r0, [sl, #0x18] - bl strlen - mov r5, r0 - mov r0, r4 - bl strlen - add r1, r5, #0xe - add r0, r1, r0 - bl DWCi_GsMalloc - str r0, [sl, #0x108] - cmp r0, #0 - moveq r0, #1 - streq r0, [sl, #0xfc] - streq r0, [sl, #0x38] - str r4, [sp] - ldrh r3, [sl, #0x20] - ldr r0, [sl, #0x108] - ldr r2, [sl, #0x18] - ldr r1, _02223C98 ; =0x02229AE4 - bl sprintf - b _02223C74 -_02223AC4: - mov r0, r4 - bl goastrdup - str r0, [sl, #0x108] - cmp r0, #0 - bne _02223C74 - mov r0, #1 - str r0, [sl, #0xfc] - str r0, [sl, #0x38] - b _02223C74 -_02223AE8: - ldr r1, _02223C9C ; =0x02229AF4 - add r0, r4, r5 - bl strstr - movs fp, r0 - beq _02223BC0 - ldr r8, _02223CA0 ; =0x02228C6C - add r1, sp, #0xc - mov r3, #5 -_02223B08: - ldrb r2, [r8] - ldrb r0, [r8, #1] - add r8, r8, #2 - strb r2, [r1] - strb r0, [r1, #1] - add r1, r1, #2 - subs r3, r3, #1 - bne _02223B08 - ldrb r2, [r8] - add r8, fp, #0x10 - add r0, sp, #0xc - mov sb, r8 - strb r2, [r1] - bl strlen - b _02223B48 -_02223B44: - add sb, sb, #1 -_02223B48: - cmp sb, #0 - ldrnesb r1, [sb] - cmpne r1, #0 - cmpne r1, #0xa - cmpne r1, #0xd - cmpne r1, #0x20 - bne _02223B44 - sub r2, sb, r8 - cmp r2, r0 - ble _02223B84 - mov r0, #1 - str r0, [sl, #0xfc] - mov r0, #0x10 - str r0, [sl, #0x38] - b _02223C74 -_02223B84: - cmp r0, r2 - bne _02223BB4 - add r1, sp, #0xc - mov r0, r8 - bl strncmp - cmp r0, #0 - blt _02223BB4 - mov r0, #1 - str r0, [sl, #0xfc] - mov r0, #0x10 - str r0, [sl, #0x38] - b _02223C74 -_02223BB4: - mov r0, r8 - bl atoi - str r0, [sl, #0x104] -_02223BC0: - ldr r1, _02223CA4 ; =0x02229B04 - add r0, r4, r5 - bl strstr - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - str r0, [sl, #0x110] - cmp r0, #0 - beq _02223BF8 - mov r0, #0 - strb r0, [sl, #0x114] - str r0, [sl, #0x120] - str r0, [sl, #0x124] - str r0, [sl, #0x128] -_02223BF8: - ldr r0, [sl, #0xc] - sub r0, r0, #3 - cmp r0, #1 - movls r0, #1 - strls r0, [sl, #0xfc] - bls _02223C74 - mov r0, #8 - str r0, [sl, #0x10] - cmp fp, #0 - beq _02223C34 - ldr r0, [sl, #0x104] - cmp r0, #0 - moveq r0, #1 - streq r0, [sl, #0xfc] - beq _02223C74 -_02223C34: - cmp r7, #0 - ble _02223C74 - mov r0, sl - mov r1, r6 - mov r2, r7 - bl ghiProcessIncomingFileData - b _02223C74 -_02223C50: - cmp r6, #2 - bne _02223C74 - mov r0, #1 - str r0, [sl, #0xfc] - mov r0, #7 - str r0, [sl, #0x38] - ldr r0, [sl, #0x48] - bl GOAGetLastError - str r0, [sl, #0x4c] -_02223C74: - ldr r0, [sp, #4] - bl DWCi_GsFree - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_02223C84: .word Unk_ov60_02229ACC -_02223C88: .word Unk_ov60_02229AD4 -_02223C8C: .word 0x51EB851F -_02223C90: .word Unk_ov60_02229AD8 -_02223C94: .word 0x020FE864 -_02223C98: .word Unk_ov60_02229AE4 -_02223C9C: .word Unk_ov60_02229AF4 -_02223CA0: .word Unk_ov60_02228C6C -_02223CA4: .word Unk_ov60_02229B04 - arm_func_end ghiDoReceivingHeaders - - arm_func_start ghiDoReceivingFile -ghiDoReceivingFile: ; 0x02223CA8 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov sb, r0 - bl current_time - mov r7, r0 - mov r0, #0x2000 - mov r8, #0 - bl DWCi_GsMalloc - movs r6, r0 - bne _02223CDC - mov r0, #1 - str r0, [sb, #0xfc] - str r0, [sb, #0x38] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_02223CDC: - mov r5, #0x2000 - add r4, sp, #0 - b _02223D58 -_02223CE8: - mov r0, sb - mov r1, r6 - mov r2, r4 - str r5, [sp] - bl ghiDoReceive - cmp r0, #3 - cmpne r0, #1 - beq _02223D70 - cmp r0, #2 - bne _02223D38 - mov r0, #1 - str r0, [sb, #0xfc] - ldr r1, [sb, #0x104] - cmp r1, #0 - ble _02223D70 - ldr r0, [sb, #0x100] - cmp r0, r1 - movlt r0, #0xf - strlt r0, [sb, #0x38] - b _02223D70 -_02223D38: - ldr r2, [sp] - mov r0, sb - mov r1, r6 - bl ghiProcessIncomingFileData - cmp r0, #0 - beq _02223D70 - bl current_time - sub r8, r0, r7 -_02223D58: - ldr r0, [sb, #0xfc] - cmp r0, #0 - bne _02223D70 - ldr r0, [sb, #0x158] - cmp r8, r0 - blo _02223CE8 -_02223D70: - mov r0, r6 - bl DWCi_GsFree - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end ghiDoReceivingFile - - .rodata - - - .global Unk_ov60_02228C64 -Unk_ov60_02228C64: ; 0x02228C64 - .word 0x2000 - - .global Unk_ov60_02228C68 -Unk_ov60_02228C68: ; 0x02228C68 - .word 0x1000 - - .global Unk_ov60_02228C6C -Unk_ov60_02228C6C: ; 0x02228C6C - .ascii "2147483647" - .space 0x2 - - - - .data - - - .global Unk_ov60_022298D4 -Unk_ov60_022298D4: ; 0x022298D4 - .incbin "incbin/overlay60_data.bin", 0xA94, 0xAA0 - 0xA94 - - .global Unk_ov60_022298E0 -Unk_ov60_022298E0: ; 0x022298E0 - .incbin "incbin/overlay60_data.bin", 0xAA0, 0xAB0 - 0xAA0 - - .global Unk_ov60_022298F0 -Unk_ov60_022298F0: ; 0x022298F0 - .incbin "incbin/overlay60_data.bin", 0xAB0, 0xAC0 - 0xAB0 - - .global Unk_ov60_02229900 -Unk_ov60_02229900: ; 0x02229900 - .incbin "incbin/overlay60_data.bin", 0xAC0, 0xAD4 - 0xAC0 - - .global Unk_ov60_02229914 -Unk_ov60_02229914: ; 0x02229914 - .incbin "incbin/overlay60_data.bin", 0xAD4, 0xAEC - 0xAD4 - - .global Unk_ov60_0222992C -Unk_ov60_0222992C: ; 0x0222992C - .incbin "incbin/overlay60_data.bin", 0xAEC, 0xB08 - 0xAEC - - .global Unk_ov60_02229948 -Unk_ov60_02229948: ; 0x02229948 - .incbin "incbin/overlay60_data.bin", 0xB08, 0xB28 - 0xB08 - - .global Unk_ov60_02229968 -Unk_ov60_02229968: ; 0x02229968 - .incbin "incbin/overlay60_data.bin", 0xB28, 0xB34 - 0xB28 - - .global Unk_ov60_02229974 -Unk_ov60_02229974: ; 0x02229974 - .incbin "incbin/overlay60_data.bin", 0xB34, 0xB44 - 0xB34 - - .global Unk_ov60_02229984 -Unk_ov60_02229984: ; 0x02229984 - .incbin "incbin/overlay60_data.bin", 0xB44, 0xB54 - 0xB44 - - .global Unk_ov60_02229994 -Unk_ov60_02229994: ; 0x02229994 - .incbin "incbin/overlay60_data.bin", 0xB54, 0xB5C - 0xB54 - - .global Unk_ov60_0222999C -Unk_ov60_0222999C: ; 0x0222999C - .incbin "incbin/overlay60_data.bin", 0xB5C, 0xB68 - 0xB5C - - .global Unk_ov60_022299A8 -Unk_ov60_022299A8: ; 0x022299A8 - .incbin "incbin/overlay60_data.bin", 0xB68, 0xB6C - 0xB68 - - .global Unk_ov60_022299AC -Unk_ov60_022299AC: ; 0x022299AC - .incbin "incbin/overlay60_data.bin", 0xB6C, 0xB70 - 0xB6C - - .global Unk_ov60_022299B0 -Unk_ov60_022299B0: ; 0x022299B0 - .incbin "incbin/overlay60_data.bin", 0xB70, 0xB74 - 0xB70 - - .global Unk_ov60_022299B4 -Unk_ov60_022299B4: ; 0x022299B4 - .incbin "incbin/overlay60_data.bin", 0xB74, 0xB7C - 0xB74 - - .global Unk_ov60_022299BC -Unk_ov60_022299BC: ; 0x022299BC - .incbin "incbin/overlay60_data.bin", 0xB7C, 0xB84 - 0xB7C - - .global Unk_ov60_022299C4 -Unk_ov60_022299C4: ; 0x022299C4 - .incbin "incbin/overlay60_data.bin", 0xB84, 0xB8C - 0xB84 - - .global Unk_ov60_022299CC -Unk_ov60_022299CC: ; 0x022299CC - .incbin "incbin/overlay60_data.bin", 0xB8C, 0xB98 - 0xB8C - - .global Unk_ov60_022299D8 -Unk_ov60_022299D8: ; 0x022299D8 - .incbin "incbin/overlay60_data.bin", 0xB98, 0xBA0 - 0xB98 - - .global Unk_ov60_022299E0 -Unk_ov60_022299E0: ; 0x022299E0 - .incbin "incbin/overlay60_data.bin", 0xBA0, 0xBA8 - 0xBA0 - - .global Unk_ov60_022299E8 -Unk_ov60_022299E8: ; 0x022299E8 - .incbin "incbin/overlay60_data.bin", 0xBA8, 0xBAC - 0xBA8 - - .global Unk_ov60_022299EC -Unk_ov60_022299EC: ; 0x022299EC - .incbin "incbin/overlay60_data.bin", 0xBAC, 0xBB8 - 0xBAC - - .global Unk_ov60_022299F8 -Unk_ov60_022299F8: ; 0x022299F8 - .incbin "incbin/overlay60_data.bin", 0xBB8, 0xBC8 - 0xBB8 - - .global Unk_ov60_02229A08 -Unk_ov60_02229A08: ; 0x02229A08 - .incbin "incbin/overlay60_data.bin", 0xBC8, 0xBD4 - 0xBC8 - - .global Unk_ov60_02229A14 -Unk_ov60_02229A14: ; 0x02229A14 - .incbin "incbin/overlay60_data.bin", 0xBD4, 0xBE0 - 0xBD4 - - .global Unk_ov60_02229A20 -Unk_ov60_02229A20: ; 0x02229A20 - .incbin "incbin/overlay60_data.bin", 0xBE0, 0xBE8 - 0xBE0 - - .global Unk_ov60_02229A28 -Unk_ov60_02229A28: ; 0x02229A28 - .incbin "incbin/overlay60_data.bin", 0xBE8, 0xBEC - 0xBE8 - - .global Unk_ov60_02229A2C -Unk_ov60_02229A2C: ; 0x02229A2C - .incbin "incbin/overlay60_data.bin", 0xBEC, 0xBFC - 0xBEC - - .global Unk_ov60_02229A3C -Unk_ov60_02229A3C: ; 0x02229A3C - .incbin "incbin/overlay60_data.bin", 0xBFC, 0xC0C - 0xBFC - - .global Unk_ov60_02229A4C -Unk_ov60_02229A4C: ; 0x02229A4C - .incbin "incbin/overlay60_data.bin", 0xC0C, 0xC38 - 0xC0C - - .global Unk_ov60_02229A78 -Unk_ov60_02229A78: ; 0x02229A78 - .incbin "incbin/overlay60_data.bin", 0xC38, 0xC58 - 0xC38 - - .global Unk_ov60_02229A98 -Unk_ov60_02229A98: ; 0x02229A98 - .incbin "incbin/overlay60_data.bin", 0xC58, 0xC68 - 0xC58 - - .global Unk_ov60_02229AA8 -Unk_ov60_02229AA8: ; 0x02229AA8 - .incbin "incbin/overlay60_data.bin", 0xC68, 0xC6C - 0xC68 - - .global Unk_ov60_02229AAC -Unk_ov60_02229AAC: ; 0x02229AAC - .incbin "incbin/overlay60_data.bin", 0xC6C, 0xC70 - 0xC6C - - .global Unk_ov60_02229AB0 -Unk_ov60_02229AB0: ; 0x02229AB0 - .incbin "incbin/overlay60_data.bin", 0xC70, 0xC78 - 0xC70 - - .global Unk_ov60_02229AB8 -Unk_ov60_02229AB8: ; 0x02229AB8 - .incbin "incbin/overlay60_data.bin", 0xC78, 0xC84 - 0xC78 - - .global Unk_ov60_02229AC4 -Unk_ov60_02229AC4: ; 0x02229AC4 - .incbin "incbin/overlay60_data.bin", 0xC84, 0xC8C - 0xC84 - - .global Unk_ov60_02229ACC -Unk_ov60_02229ACC: ; 0x02229ACC - .incbin "incbin/overlay60_data.bin", 0xC8C, 0xC94 - 0xC8C - - .global Unk_ov60_02229AD4 -Unk_ov60_02229AD4: ; 0x02229AD4 - .incbin "incbin/overlay60_data.bin", 0xC94, 0xC98 - 0xC94 - - .global Unk_ov60_02229AD8 -Unk_ov60_02229AD8: ; 0x02229AD8 - .incbin "incbin/overlay60_data.bin", 0xC98, 0xCA4 - 0xC98 - - .global Unk_ov60_02229AE4 -Unk_ov60_02229AE4: ; 0x02229AE4 - .incbin "incbin/overlay60_data.bin", 0xCA4, 0xCB4 - 0xCA4 - - .global Unk_ov60_02229AF4 -Unk_ov60_02229AF4: ; 0x02229AF4 - .incbin "incbin/overlay60_data.bin", 0xCB4, 0xCC4 - 0xCB4 - - .global Unk_ov60_02229B04 -Unk_ov60_02229B04: ; 0x02229B04 - .incbin "incbin/overlay60_data.bin", 0xCC4, 0x1C - diff --git a/subprojects/gamespy/libraries/ghttp/asm/incbin/overlay60_data.bin b/subprojects/gamespy/libraries/ghttp/asm/incbin/overlay60_data.bin deleted file mode 100644 index ad131e893e..0000000000 Binary files a/subprojects/gamespy/libraries/ghttp/asm/incbin/overlay60_data.bin and /dev/null differ diff --git a/subprojects/gamespy/libraries/ghttp/asm/include/ghttpbuffer.inc b/subprojects/gamespy/libraries/ghttp/asm/include/ghttpbuffer.inc deleted file mode 100644 index 4637288871..0000000000 --- a/subprojects/gamespy/libraries/ghttp/asm/include/ghttpbuffer.inc +++ /dev/null @@ -1,12 +0,0 @@ -.public __msl_assertion_failed -.public memcpy -.public memset -.public sprintf -.public strlen -.public DWCi_GsRealloc -.public DWCi_GsFree -.public GSISocketSelect -.public GOAGetLastError -.public ghiResizeBuffer -.public ghiAppendDataToBuffer -.public ghiDoSend diff --git a/subprojects/gamespy/libraries/ghttp/asm/include/ghttpcallbacks.inc b/subprojects/gamespy/libraries/ghttp/asm/include/ghttpcallbacks.inc deleted file mode 100644 index 0734cf078c..0000000000 --- a/subprojects/gamespy/libraries/ghttp/asm/include/ghttpcallbacks.inc +++ /dev/null @@ -1,2 +0,0 @@ -.public __msl_assertion_failed -.public ArrayLength diff --git a/subprojects/gamespy/libraries/ghttp/asm/include/ghttpcommon.inc b/subprojects/gamespy/libraries/ghttp/asm/include/ghttpcommon.inc deleted file mode 100644 index cbe3bba42a..0000000000 --- a/subprojects/gamespy/libraries/ghttp/asm/include/ghttpcommon.inc +++ /dev/null @@ -1,11 +0,0 @@ -.public memmove -.public current_time -.public recv -.public send -.public GOAGetLastError -.public ghiResizeBuffer -.public ghiAppendDataToBuffer -.public ghiResetBuffer -.public ghiReadDataFromBuffer -.public ghiDecryptReceivedData -.public ghiDoSend diff --git a/subprojects/gamespy/libraries/ghttp/asm/include/ghttpconnection.inc b/subprojects/gamespy/libraries/ghttp/asm/include/ghttpconnection.inc deleted file mode 100644 index 5ec299f874..0000000000 --- a/subprojects/gamespy/libraries/ghttp/asm/include/ghttpconnection.inc +++ /dev/null @@ -1,18 +0,0 @@ -.public __msl_assertion_failed -.public memset -.public DWCi_GsMalloc -.public DWCi_GsRealloc -.public DWCi_GsFree -.public closesocket -.public shutdown -.public ghiInitBuffer -.public ghiFreeBuffer -.public ghiResetBuffer -.public ghiLock -.public ghiUnlock -.public ghiFindFreeSlot -.public ghiFreeConnection -.public ghiEnumConnections -.public ghiIsPostAutoFree -.public ghiFreePost -.public ghiPostCleanupState diff --git a/subprojects/gamespy/libraries/ghttp/asm/include/ghttpmain.inc b/subprojects/gamespy/libraries/ghttp/asm/include/ghttpmain.inc deleted file mode 100644 index 55ee439bd6..0000000000 --- a/subprojects/gamespy/libraries/ghttp/asm/include/ghttpmain.inc +++ /dev/null @@ -1,31 +0,0 @@ -.public __msl_assertion_failed -.public DWCi_GsFree -.public msleep -.public goastrdup -.public ghiInitBuffer -.public ghiInitFixedBuffer -.public ghiCallCompletedCallback -.public ghiCreateLock -.public ghiFreeLock -.public ghiLock -.public ghiUnlock -.public ghiNewConnection -.public ghiFreeConnection -.public ghiRequestToConnection -.public ghiEnumConnections -.public ghiRedirectConnection -.public ghiCleanupConnections -.public ghiHandleStatus -.public ghiProcessConnection -.public ghttpStartup -.public ghttpGetExA -.public ghiPostInitState -.public ghiDoHostLookup -.public ghiDoConnecting -.public ghiDoSecuringSession -.public ghiDoSendingRequest -.public ghiDoPosting -.public ghiDoWaiting -.public ghiDoReceivingStatus -.public ghiDoReceivingHeaders -.public ghiDoReceivingFile diff --git a/subprojects/gamespy/libraries/ghttp/asm/include/ghttppost.inc b/subprojects/gamespy/libraries/ghttp/asm/include/ghttppost.inc deleted file mode 100644 index 6a6dbda477..0000000000 --- a/subprojects/gamespy/libraries/ghttp/asm/include/ghttppost.inc +++ /dev/null @@ -1,31 +0,0 @@ -.public __msl_assertion_failed -.public fread -.public fclose -.public ftell -.public fseek -.public rewind -.public sprintf -.public strlen -.public strchr -.public DWCi_GsFree -.public ArrayNew -.public ArrayFree -.public ArrayLength -.public ArrayNth -.public ArrayAppend -.public ghiAppendDataToBuffer -.public ghiAppendCharToBuffer -.public ghiResetBuffer -.public ghiSendBufferedData -.public ghiDoSend -.public ghiTrySendThenBuffer -.public ghiFreePost -.public ghiPostGetNoFilesContentLength -.public ghiPostGetHasFilesContentLength -.public ghiPostGetContentLength -.public ghiPostStateInit -.public ghiPostStateCleanup -.public ghiPostStringStateDoPosting -.public ghiPostFileDiskStateDoPosting -.public ghiPostFileMemoryStateDoPosting -.public ghiPostStateDoPosting diff --git a/subprojects/gamespy/libraries/ghttp/asm/include/ghttpprocess.inc b/subprojects/gamespy/libraries/ghttp/asm/include/ghttpprocess.inc deleted file mode 100644 index f42e2a89ac..0000000000 --- a/subprojects/gamespy/libraries/ghttp/asm/include/ghttpprocess.inc +++ /dev/null @@ -1,42 +0,0 @@ -.public __msl_assertion_failed -.public memcpy -.public memmove -.public sprintf -.public sscanf -.public strlen -.public strncmp -.public strchr -.public strcspn -.public strstr -.public atoi -.public DWCi_GsMalloc -.public DWCi_GsFree -.public current_time -.public SocketStartUp -.public goastrdup -.public SetSockBlocking -.public SetReceiveBufferSize -.public GSISocketSelect -.public socket -.public connect -.public inet_addr -.public GOAGetLastError -.public SOC_GetHostByName -.public ghiAppendDataToBuffer -.public ghiAppendHeaderToBuffer -.public ghiAppendCharToBuffer -.public ghiAppendIntToBuffer -.public ghiResetBuffer -.public ghiSendBufferedData -.public ghiCallProgressCallback -.public ghiCallPostCallback -.public ghiDoReceive -.public ghiPostGetContentType -.public ghiPostCleanupState -.public ghiPostDoPosting -.public ghiParseURL -.public ghiParseStatus -.public ghiDeliverIncomingFileData -.public ghiParseChunkSize -.public ghiAppendToChunkHeaderBuffer -.public ghiProcessIncomingFileData diff --git a/subprojects/gamespy/libraries/ghttp/asm/macros/function.inc b/subprojects/gamespy/libraries/ghttp/asm/macros/function.inc deleted file mode 100644 index f71cc4ccae..0000000000 --- a/subprojects/gamespy/libraries/ghttp/asm/macros/function.inc +++ /dev/null @@ -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 \ No newline at end of file diff --git a/subprojects/gamespy/libraries/ghttp/meson.build b/subprojects/gamespy/libraries/ghttp/meson.build deleted file mode 100644 index c10ccbf62a..0000000000 --- a/subprojects/gamespy/libraries/ghttp/meson.build +++ /dev/null @@ -1,18 +0,0 @@ -libdwcgsghttp_srcs = files( - 'asm/ghttpbuffer.s', - 'asm/ghttpcallbacks.s', - 'asm/ghttpcommon.s', - 'asm/ghttpconnection.s', - 'asm/ghttpmain.s', - 'asm/ghttppost.s', - 'asm/ghttpprocess.s' -) - -libdwcgsghttp = static_library('dwcgsghttp', - sources: libdwcgsghttp_srcs, - nasm_args: asm_args, - include_directories: public_includes, - pic: false -) - -gamespy_libs += libdwcgsghttp diff --git a/subprojects/gamespy/libraries/gp/asm/gp.s b/subprojects/gamespy/libraries/gp/asm/gp.s deleted file mode 100644 index 75f4dbacf0..0000000000 --- a/subprojects/gamespy/libraries/gp/asm/gp.s +++ /dev/null @@ -1,966 +0,0 @@ - .include "macros/function.inc" - .include "include/gp.inc" - - .extern __GSIACResult - - .text - - - arm_func_start gpInitialize -gpInitialize: ; 0x021EB228 - stmfd sp!, {r3, lr} - ldr r3, _021EB254 ; =0x0221AE50 - ldr r3, [r3, #0] - cmp r3, #1 - movne r0, #2 - ldmneia sp!, {r3, pc} - cmp r0, #0 - moveq r0, #2 - ldmeqia sp!, {r3, pc} - bl gpiInitialize - ldmia sp!, {r3, pc} - ; .align 2, 0 -_021EB254: .word __GSIACResult - arm_func_end gpInitialize - - arm_func_start gpDestroy -gpDestroy: ; 0x021EB258 - stmfd sp!, {r3, lr} - cmp r0, #0 - ldrne r1, [r0] - cmpne r1, #0 - ldmeqia sp!, {r3, pc} - bl gpiDestroy - ldmia sp!, {r3, pc} - arm_func_end gpDestroy - - arm_func_start gpProcess -gpProcess: ; 0x021EB274 - stmfd sp!, {r3, lr} - cmp r0, #0 - ldrne r1, [r0] - cmpne r1, #0 - moveq r0, #2 - ldmeqia sp!, {r3, pc} - ldr r1, [r1, #0x108] - cmp r1, #0 - movne r0, #0 - ldmneia sp!, {r3, pc} - mov r1, #0 - bl gpiProcess - ldmia sp!, {r3, pc} - arm_func_end gpProcess - - arm_func_start gpSetCallback -gpSetCallback: ; 0x021EB2A8 - stmfd sp!, {r3, lr} - cmp r0, #0 - ldrne ip, [r0] - cmpne ip, #0 - moveq r0, #2 - ldmeqia sp!, {r3, pc} - cmp r1, #0 - blt _021EB2D0 - cmp r1, #6 - blt _021EB2E0 -_021EB2D0: - ldr r1, _021EB2F4 ; =0x02217940 - bl gpiSetErrorString - mov r0, #2 - ldmia sp!, {r3, pc} -_021EB2E0: - add r0, ip, r1, lsl #3 - str r2, [r0, #0x1a4] - str r3, [r0, #0x1a8] - mov r0, #0 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_021EB2F4: .word Unk_ov4_02217940 - arm_func_end gpSetCallback - - arm_func_start gpConnectPreAuthenticatedA -gpConnectPreAuthenticatedA: ; 0x021EB2F8 - stmfd sp!, {r3, r4, lr} - sub sp, sp, #0x44 - movs lr, r0 - ldrne ip, [lr] - cmpne ip, #0 - addeq sp, sp, #0x44 - moveq r0, #2 - ldmeqia sp!, {r3, r4, pc} - cmp r1, #0 - ldrnesb r4, [r1] - cmpne r4, #0 - addeq sp, sp, #0x44 - moveq r0, #2 - ldmeqia sp!, {r3, r4, pc} - cmp r2, #0 - ldrnesb r4, [r2] - cmpne r4, #0 - addeq sp, sp, #0x44 - moveq r0, #2 - ldmeqia sp!, {r3, r4, pc} - ldr r4, [sp, #0x54] - cmp r4, #0 - bne _021EB368 - ldr r1, _021EB3F4 ; =0x02217950 - bl gpiSetErrorString - add sp, sp, #0x44 - mov r0, #2 - ldmia sp!, {r3, r4, pc} -_021EB368: - ldr ip, [ip, #0x108] - cmp ip, #0 - beq _021EB3B0 - add r3, sp, #0x24 - mov r0, #0 - mov r2, r3 - mov r1, r0 - stmia r2!, {r0, r1} - stmia r2!, {r0, r1} - stmia r2!, {r0, r1} - stmia r2, {r0, r1} - ldr r2, [sp, #0x58] - mov r0, lr - mov r1, r3 - blx r4 - add sp, sp, #0x44 - mov r0, #0 - ldmia sp!, {r3, r4, pc} -_021EB3B0: - ldr lr, _021EB3F8 ; =0x02217960 - mov ip, #0 - str lr, [sp] - stmib sp, {r1, r2, ip} - str r3, [sp, #0x10] - str ip, [sp, #0x14] - ldr r1, [sp, #0x50] - ldr ip, [sp, #0x58] - str r1, [sp, #0x18] - str r4, [sp, #0x1c] - mov r1, lr - mov r2, lr - mov r3, lr - str ip, [sp, #0x20] - bl gpiConnect - add sp, sp, #0x44 - ldmia sp!, {r3, r4, pc} - ; .align 2, 0 -_021EB3F4: .word Unk_ov4_02217950 -_021EB3F8: .word Unk_ov4_02217960 - arm_func_end gpConnectPreAuthenticatedA - - arm_func_start gpDisconnect -gpDisconnect: ; 0x021EB3FC - stmfd sp!, {r4, lr} - movs r4, r0 - ldrne r1, [r4] - cmpne r1, #0 - ldmeqia sp!, {r4, pc} - ldr r1, [r1, #0x108] - cmp r1, #0 - ldmneia sp!, {r4, pc} - mov r1, #1 - bl gpiDisconnect - mov r0, r4 - bl gpiReset - ldmia sp!, {r4, pc} - arm_func_end gpDisconnect - - arm_func_start gpProfileSearchA -gpProfileSearchA: ; 0x021EB430 - stmfd sp!, {r3, r4, lr} - sub sp, sp, #0x2c - cmp r0, #0 - ldrne r4, [r0] - cmpne r4, #0 - addeq sp, sp, #0x2c - moveq r0, #2 - ldmeqia sp!, {r3, r4, pc} - ldr ip, [sp, #0x48] - cmp ip, #0 - bne _021EB470 - ldr r1, _021EB4F0 ; =0x02217950 - bl gpiSetErrorString - add sp, sp, #0x2c - mov r0, #2 - ldmia sp!, {r3, r4, pc} -_021EB470: - ldr r4, [r4, #0x108] - cmp r4, #0 - beq _021EB4B0 - add r1, sp, #0x1c - mov r4, #0 - ldr r2, [sp, #0x4c] - ldr r3, _021EB4F4 ; =0x00000601 - str r4, [r1, #8] - str r4, [r1, #0] - str r4, [r1, #4] - str r4, [r1, #0xc] - str r3, [sp, #0x24] - blx ip - add sp, sp, #0x2c - mov r0, r4 - ldmia sp!, {r3, r4, pc} -_021EB4B0: - ldr r4, [sp, #0x38] - ldr lr, [sp, #0x3c] - str r4, [sp] - ldr r4, [sp, #0x40] - str lr, [sp, #4] - str r4, [sp, #8] - mov r4, #0 - ldr lr, [sp, #0x44] - str r4, [sp, #0xc] - str lr, [sp, #0x10] - ldr lr, [sp, #0x4c] - str ip, [sp, #0x14] - str lr, [sp, #0x18] - bl gpiProfileSearch - add sp, sp, #0x2c - ldmia sp!, {r3, r4, pc} - ; .align 2, 0 -_021EB4F0: .word Unk_ov4_02217950 -_021EB4F4: .word 0x00000601 - arm_func_end gpProfileSearchA - - arm_func_start gpGetInfo -gpGetInfo: ; 0x021EB4F8 - stmfd sp!, {r4, r5, lr} - sub sp, sp, #0x20c - movs r5, r0 - ldrne r4, [r5] - cmpne r4, #0 - cmpne r1, #0 - addeq sp, sp, #0x20c - moveq r0, #2 - ldmeqia sp!, {r4, r5, pc} - ldr lr, [sp, #0x218] - cmp lr, #0 - bne _021EB53C - ldr r1, _021EB5CC ; =0x02217950 - bl gpiSetErrorString - add sp, sp, #0x20c - mov r0, #2 - ldmia sp!, {r4, r5, pc} -_021EB53C: - ldr ip, [r4, #0x108] - cmp ip, #0 - beq _021EB594 - mov r0, #0 - add lr, sp, #8 - mov r1, r0 - mov r2, r0 - mov r3, r0 - mov ip, #0x10 -_021EB560: - stmia lr!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - subs ip, ip, #1 - bne _021EB560 - ldr r2, [sp, #0x21c] - str r0, [lr] - ldr r3, [sp, #0x218] - add r1, sp, #8 - mov r0, r5 - blx r3 - add sp, sp, #0x20c - mov r0, #0 - ldmia sp!, {r4, r5, pc} -_021EB594: - ldr ip, [r4, #0x1d8] - cmp ip, #4 - bne _021EB5B4 - ldr r1, _021EB5D0 ; =0x02217964 - bl gpiSetErrorString - add sp, sp, #0x20c - mov r0, #2 - ldmia sp!, {r4, r5, pc} -_021EB5B4: - ldr ip, [sp, #0x21c] - str lr, [sp] - str ip, [sp, #4] - bl gpiGetInfo - add sp, sp, #0x20c - ldmia sp!, {r4, r5, pc} - ; .align 2, 0 -_021EB5CC: .word Unk_ov4_02217950 -_021EB5D0: .word Unk_ov4_02217964 - arm_func_end gpGetInfo - - arm_func_start gpSetInfosA -gpSetInfosA: ; 0x021EB5D4 - stmfd sp!, {r3, lr} - cmp r0, #0 - ldrne ip, [r0] - cmpne ip, #0 - moveq r0, #2 - ldmeqia sp!, {r3, pc} - ldr r3, [ip, #0x108] - cmp r3, #0 - movne r0, #0 - ldmneia sp!, {r3, pc} - ldr r3, [ip, #0x1d8] - cmp r3, #4 - bne _021EB618 - ldr r1, _021EB620 ; =0x02217964 - bl gpiSetErrorString - mov r0, #2 - ldmia sp!, {r3, pc} -_021EB618: - bl gpiSetInfos - ldmia sp!, {r3, pc} - ; .align 2, 0 -_021EB620: .word Unk_ov4_02217964 - arm_func_end gpSetInfosA - - arm_func_start gpSendBuddyRequestA -gpSendBuddyRequestA: ; 0x021EB624 - stmfd sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - sub sp, sp, #0x400 - movs r6, r0 - ldrne r4, [r6] - mov r5, r1 - cmpne r4, #0 - addeq sp, sp, #4 - addeq sp, sp, #0x400 - moveq r0, #2 - ldmeqia sp!, {r3, r4, r5, r6, pc} - ldr r1, [r4, #0x108] - cmp r1, #0 - addne sp, sp, #4 - addne sp, sp, #0x400 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, pc} - ldr r1, [r4, #0x1d8] - cmp r1, #4 - bne _021EB68C - ldr r1, _021EB778 ; =0x02217964 - bl gpiSetErrorString - add sp, sp, #4 - add sp, sp, #0x400 - mov r0, #2 - ldmia sp!, {r3, r4, r5, r6, pc} -_021EB68C: - cmp r2, #0 - bne _021EB6AC - ldr r1, _021EB77C ; =0x02217994 - bl gpiSetErrorString - add sp, sp, #4 - add sp, sp, #0x400 - mov r0, #2 - ldmia sp!, {r3, r4, r5, r6, pc} -_021EB6AC: - mov r1, r2 - ldr r2, _021EB780 ; =0x00000401 - add r0, sp, #0 - bl strzcpy - ldrsb r0, [sp] - cmp r0, #0 - beq _021EB6E8 - add r2, sp, #0 - mov r1, #0x2f -_021EB6D0: - ldrsb r0, [r2] - cmp r0, #0x5c - streqb r1, [r2] - ldrsb r0, [r2, #1]! - cmp r0, #0 - bne _021EB6D0 -_021EB6E8: - ldr r2, _021EB784 ; =0x022179A4 - mov r0, r6 - add r1, r4, #0x1f4 - bl gpiAppendStringToBuffer - ldr r2, _021EB788 ; =0x022179B0 - mov r0, r6 - add r1, r4, #0x1f4 - bl gpiAppendStringToBuffer - ldr r2, [r4, #0x198] - mov r0, r6 - add r1, r4, #0x1f4 - bl gpiAppendIntToBuffer - ldr r2, _021EB78C ; =0x022179BC - mov r0, r6 - add r1, r4, #0x1f4 - bl gpiAppendStringToBuffer - mov r2, r5 - mov r0, r6 - add r1, r4, #0x1f4 - bl gpiAppendIntToBuffer - ldr r2, _021EB790 ; =0x022179CC - mov r0, r6 - add r1, r4, #0x1f4 - bl gpiAppendStringToBuffer - mov r0, r6 - add r1, r4, #0x1f4 - add r2, sp, #0 - bl gpiAppendStringToBuffer - ldr r2, _021EB794 ; =0x022179D8 - mov r0, r6 - add r1, r4, #0x1f4 - bl gpiAppendStringToBuffer - mov r0, #0 - add sp, sp, #4 - add sp, sp, #0x400 - ldmia sp!, {r3, r4, r5, r6, pc} - ; .align 2, 0 -_021EB778: .word Unk_ov4_02217964 -_021EB77C: .word Unk_ov4_02217994 -_021EB780: .word 0x00000401 -_021EB784: .word Unk_ov4_022179A4 -_021EB788: .word Unk_ov4_022179B0 -_021EB78C: .word Unk_ov4_022179BC -_021EB790: .word Unk_ov4_022179CC -_021EB794: .word Unk_ov4_022179D8 - arm_func_end gpSendBuddyRequestA - - arm_func_start gpAuthBuddyRequest -gpAuthBuddyRequest: ; 0x021EB798 - stmfd sp!, {r3, lr} - cmp r0, #0 - ldrne r3, [r0] - cmpne r3, #0 - moveq r0, #2 - ldmeqia sp!, {r3, pc} - ldr r2, [r3, #0x108] - cmp r2, #0 - movne r0, #0 - ldmneia sp!, {r3, pc} - ldr r2, [r3, #0x1d8] - cmp r2, #4 - bne _021EB7DC - ldr r1, _021EB7E4 ; =0x02217964 - bl gpiSetErrorString - mov r0, #2 - ldmia sp!, {r3, pc} -_021EB7DC: - bl gpiAuthBuddyRequest - ldmia sp!, {r3, pc} - ; .align 2, 0 -_021EB7E4: .word Unk_ov4_02217964 - arm_func_end gpAuthBuddyRequest - - arm_func_start gpDenyBuddyRequest -gpDenyBuddyRequest: ; 0x021EB7E8 - stmfd sp!, {r3, r4, r5, lr} - movs r4, r0 - ldrne r5, [r4] - cmpne r5, #0 - moveq r0, #2 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r2, [r5, #0x108] - cmp r2, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - ldr r2, [r5, #0x1d8] - cmp r2, #4 - bne _021EB82C - ldr r1, _021EB8A4 ; =0x02217964 - bl gpiSetErrorString - mov r0, #2 - ldmia sp!, {r3, r4, r5, pc} -_021EB82C: - add r2, sp, #0 - bl gpiGetProfile - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, [sp] - ldr r0, [r1, #0x14] - sub r0, r0, #1 - str r0, [r1, #0x14] - ldr r0, [r5, #0x100] - cmp r0, #0 - bne _021EB89C - ldr r1, [sp] - ldr r0, [r1, #0x14] - cmp r0, #0 - bgt _021EB89C - ldr r0, [r1, #0x10] - bl DWCi_GsFree - ldr r0, [sp] - mov r1, #0 - str r1, [r0, #0x10] - ldr r0, [sp] - bl gpiCanFreeProfile - cmp r0, #0 - beq _021EB89C - ldr r1, [sp] - mov r0, r4 - bl gpiRemoveProfile -_021EB89C: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_021EB8A4: .word Unk_ov4_02217964 - arm_func_end gpDenyBuddyRequest - - arm_func_start gpGetNumBuddies -gpGetNumBuddies: ; 0x021EB8A8 - cmp r0, #0 - ldrne r2, [r0] - cmpne r2, #0 - moveq r0, #2 - bxeq lr - ldr r0, [r2, #0x108] - cmp r0, #0 - mov r0, #0 - strne r0, [r1] - ldreq r2, [r2, #0x430] - streq r2, [r1] - bx lr - arm_func_end gpGetNumBuddies - - arm_func_start gpGetBuddyStatus -gpGetBuddyStatus: ; 0x021EB8D8 - stmfd sp!, {r4, r5, r6, lr} - movs r4, r0 - ldrne r3, [r4] - mov r5, r2 - cmpne r3, #0 - moveq r0, #2 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r2, [r3, #0x108] - cmp r2, #0 - beq _021EB918 - mov r0, r5 - mov r1, #0 - mov r2, #0x210 - bl memset - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_021EB918: - cmp r5, #0 - bne _021EB930 - ldr r1, _021EBA00 ; =0x022179E0 - bl gpiSetErrorString - mov r0, #2 - ldmia sp!, {r4, r5, r6, pc} -_021EB930: - cmp r1, #0 - ldr r2, [r3, #0x430] - blt _021EB944 - cmp r1, r2 - blt _021EB958 -_021EB944: - ldr r1, _021EBA04 ; =0x022179F0 - mov r0, r4 - bl gpiSetErrorString - mov r0, #2 - ldmia sp!, {r4, r5, r6, pc} -_021EB958: - bl gpiFindBuddy - movs r6, r0 - bne _021EB978 - ldr r1, _021EBA04 ; =0x022179F0 - mov r0, r4 - bl gpiSetErrorString - mov r0, #2 - ldmia sp!, {r4, r5, r6, pc} -_021EB978: - ldr r4, [r6, #8] - cmp r4, #0 - bne _021EB998 - ldr r0, _021EBA08 ; =0x02217A00 - ldr r1, _021EBA0C ; =0x02217A0C - ldr r2, _021EBA10 ; =0x0221792C - ldr r3, _021EBA14 ; =0x000005CF - bl __msl_assertion_failed -_021EB998: - ldr r0, [r6, #0] - str r0, [r5, #0] - ldr r0, [r4, #4] - str r0, [r5, #4] - ldr r1, [r4, #8] - cmp r1, #0 - moveq r0, #0 - streqb r0, [r1] - beq _021EB9C8 - add r0, r5, #8 - mov r2, #0x100 - bl strzcpy -_021EB9C8: - ldr r1, [r4, #0xc] - cmp r1, #0 - moveq r0, #0 - streqb r0, [r1] - beq _021EB9E8 - add r0, r5, #0x108 - mov r2, #0x100 - bl strzcpy -_021EB9E8: - ldr r1, [r4, #0x10] - mov r0, #0 - str r1, [r5, #0x208] - ldr r1, [r4, #0x14] - str r1, [r5, #0x20c] - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_021EBA00: .word Unk_ov4_022179E0 -_021EBA04: .word Unk_ov4_022179F0 -_021EBA08: .word Unk_ov4_02217A00 -_021EBA0C: .word Unk_ov4_02217A0C -_021EBA10: .word Unk_ov4_0221792C -_021EBA14: .word 0x000005CF - arm_func_end gpGetBuddyStatus - - arm_func_start gpGetBuddyIndex -gpGetBuddyIndex: ; 0x021EBA18 - stmfd sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, r2 - cmp r0, #0 - ldrne r2, [r0] - cmpne r2, #0 - addeq sp, sp, #4 - moveq r0, #2 - ldmeqia sp!, {r3, r4, pc} - ldr r2, [r2, #0x108] - cmp r2, #0 - movne r0, #0 - addne sp, sp, #4 - strne r0, [r4] - ldmneia sp!, {r3, r4, pc} - add r2, sp, #0 - bl gpiGetProfile - cmp r0, #0 - ldrne r0, [sp] - ldrne r0, [r0, #8] - cmpne r0, #0 - ldrne r0, [r0] - strne r0, [r4] - mvneq r0, #0 - streq r0, [r4] - mov r0, #0 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - arm_func_end gpGetBuddyIndex - - arm_func_start gpIsBuddy -gpIsBuddy: ; 0x021EBA88 - stmfd sp!, {r3, lr} - cmp r0, #0 - ldrne r2, [r0] - cmpne r2, #0 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - ldr r2, [r2, #0x108] - cmp r2, #0 - movne r0, #0 - ldmneia sp!, {r3, pc} - add r2, sp, #0 - bl gpiGetProfile - cmp r0, #0 - ldrne r0, [sp] - ldrne r0, [r0, #8] - cmpne r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, pc} - arm_func_end gpIsBuddy - - arm_func_start gpDeleteBuddy -gpDeleteBuddy: ; 0x021EBAD4 - stmfd sp!, {r3, lr} - cmp r0, #0 - ldrne r3, [r0] - cmpne r3, #0 - moveq r0, #2 - ldmeqia sp!, {r3, pc} - ldr r2, [r3, #0x108] - cmp r2, #0 - movne r0, #0 - ldmneia sp!, {r3, pc} - ldr r2, [r3, #0x1d8] - cmp r2, #4 - bne _021EBB18 - ldr r1, _021EBB28 ; =0x02217964 - bl gpiSetErrorString - mov r0, #2 - ldmia sp!, {r3, pc} -_021EBB18: - bl gpiDeleteBuddy - cmp r0, #0 - moveq r0, #0 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_021EBB28: .word Unk_ov4_02217964 - arm_func_end gpDeleteBuddy - - arm_func_start gpSetStatusA -gpSetStatusA: ; 0x021EBB2C - stmfd sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x200 - movs r7, r0 - ldrne r4, [r7] - mov r6, r1 - cmpne r4, #0 - mov r5, r3 - addeq sp, sp, #0x200 - moveq r0, #2 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, [r4, #0x108] - cmp r1, #0 - addne sp, sp, #0x200 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, [r4, #0x1d8] - cmp r1, #4 - bne _021EBB88 - ldr r1, _021EBD38 ; =0x02217964 - bl gpiSetErrorString - add sp, sp, #0x200 - mov r0, #2 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_021EBB88: - cmp r2, #0 - bne _021EBBA4 - ldr r1, _021EBD3C ; =0x02217A14 - bl gpiSetErrorString - add sp, sp, #0x200 - mov r0, #2 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_021EBBA4: - cmp r5, #0 - bne _021EBBC0 - ldr r1, _021EBD40 ; =0x02217A2C - bl gpiSetErrorString - add sp, sp, #0x200 - mov r0, #2 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_021EBBC0: - mov r1, r2 - add r0, sp, #0x100 - mov r2, #0x100 - bl strzcpy - add r0, sp, #0x100 - ldrsb r0, [r0] - cmp r0, #0 - beq _021EBC00 - add r2, sp, #0x100 - mov r1, #0x2f -_021EBBE8: - ldrsb r0, [r2] - cmp r0, #0x5c - streqb r1, [r2] - ldrsb r0, [r2, #1]! - cmp r0, #0 - bne _021EBBE8 -_021EBC00: - add r0, sp, #0 - mov r1, r5 - mov r2, #0x100 - bl strzcpy - ldrsb r0, [sp] - cmp r0, #0 - beq _021EBC3C - add r2, sp, #0 - mov r1, #0x2f -_021EBC24: - ldrsb r0, [r2] - cmp r0, #0x5c - streqb r1, [r2] - ldrsb r0, [r2, #1]! - cmp r0, #0 - bne _021EBC24 -_021EBC3C: - ldr r0, [r4, #0x214] - cmp r6, r0 - bne _021EBC78 - add r0, sp, #0x100 - add r1, r4, #0x218 - bl strcmp - cmp r0, #0 - bne _021EBC78 - add r0, sp, #0 - add r1, r4, #0x318 - bl strcmp - cmp r0, #0 - addeq sp, sp, #0x200 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} -_021EBC78: - add r1, sp, #0x100 - add r0, r4, #0x218 - mov r2, #0x100 - str r6, [r4, #0x214] - bl strzcpy - add r1, sp, #0 - add r0, r4, #0x318 - mov r2, #0x100 - bl strzcpy - ldr r2, _021EBD44 ; =0x02217A44 - mov r0, r7 - add r1, r4, #0x1f4 - bl gpiAppendStringToBuffer - mov r0, r7 - mov r2, r6 - add r1, r4, #0x1f4 - bl gpiAppendIntToBuffer - ldr r2, _021EBD48 ; =0x022179B0 - mov r0, r7 - add r1, r4, #0x1f4 - bl gpiAppendStringToBuffer - ldr r2, [r4, #0x198] - mov r0, r7 - add r1, r4, #0x1f4 - bl gpiAppendIntToBuffer - ldr r2, _021EBD4C ; =0x02217A50 - mov r0, r7 - add r1, r4, #0x1f4 - bl gpiAppendStringToBuffer - mov r0, r7 - add r1, r4, #0x1f4 - add r2, sp, #0x100 - bl gpiAppendStringToBuffer - ldr r2, _021EBD50 ; =0x02217A60 - mov r0, r7 - add r1, r4, #0x1f4 - bl gpiAppendStringToBuffer - mov r0, r7 - add r1, r4, #0x1f4 - add r2, sp, #0 - bl gpiAppendStringToBuffer - ldr r2, _021EBD54 ; =0x022179D8 - mov r0, r7 - add r1, r4, #0x1f4 - bl gpiAppendStringToBuffer - mov r0, #0 - add sp, sp, #0x200 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021EBD38: .word Unk_ov4_02217964 -_021EBD3C: .word Unk_ov4_02217A14 -_021EBD40: .word Unk_ov4_02217A2C -_021EBD44: .word Unk_ov4_02217A44 -_021EBD48: .word Unk_ov4_022179B0 -_021EBD4C: .word Unk_ov4_02217A50 -_021EBD50: .word Unk_ov4_02217A60 -_021EBD54: .word Unk_ov4_022179D8 - arm_func_end gpSetStatusA - - arm_func_start gpSendBuddyMessageA -gpSendBuddyMessageA: ; 0x021EBD58 - stmfd sp!, {r3, lr} - cmp r0, #0 - ldrne ip, [r0] - mov r3, r2 - cmpne ip, #0 - moveq r0, #2 - ldmeqia sp!, {r3, pc} - ldr r2, [ip, #0x108] - cmp r2, #0 - movne r0, #0 - ldmneia sp!, {r3, pc} - ldr r2, [ip, #0x1d8] - cmp r2, #4 - bne _021EBDA0 - ldr r1, _021EBDC4 ; =0x02217964 - bl gpiSetErrorString - mov r0, #2 - ldmia sp!, {r3, pc} -_021EBDA0: - cmp r3, #0 - bne _021EBDB8 - ldr r1, _021EBDC8 ; =0x02217A6C - bl gpiSetErrorString - mov r0, #2 - ldmia sp!, {r3, pc} -_021EBDB8: - mov r2, #1 - bl gpiSendBuddyMessage - ldmia sp!, {r3, pc} - ; .align 2, 0 -_021EBDC4: .word Unk_ov4_02217964 -_021EBDC8: .word Unk_ov4_02217A6C - arm_func_end gpSendBuddyMessageA - - .data - - - .global Unk_ov4_0221792C -Unk_ov4_0221792C: ; 0x0221792C - .incbin "incbin/overlay4_data.bin", 0x1AAC, 0x1AC0 - 0x1AAC - - .global Unk_ov4_02217940 -Unk_ov4_02217940: ; 0x02217940 - .incbin "incbin/overlay4_data.bin", 0x1AC0, 0x1AD0 - 0x1AC0 - - .global Unk_ov4_02217950 -Unk_ov4_02217950: ; 0x02217950 - .incbin "incbin/overlay4_data.bin", 0x1AD0, 0x1AE0 - 0x1AD0 - - .global Unk_ov4_02217960 -Unk_ov4_02217960: ; 0x02217960 - .incbin "incbin/overlay4_data.bin", 0x1AE0, 0x1AE4 - 0x1AE0 - - .global Unk_ov4_02217964 -Unk_ov4_02217964: ; 0x02217964 - .incbin "incbin/overlay4_data.bin", 0x1AE4, 0x1B14 - 0x1AE4 - - .global Unk_ov4_02217994 -Unk_ov4_02217994: ; 0x02217994 - .incbin "incbin/overlay4_data.bin", 0x1B14, 0x1B24 - 0x1B14 - - .global Unk_ov4_022179A4 -Unk_ov4_022179A4: ; 0x022179A4 - .incbin "incbin/overlay4_data.bin", 0x1B24, 0x1B30 - 0x1B24 - - .global Unk_ov4_022179B0 -Unk_ov4_022179B0: ; 0x022179B0 - .incbin "incbin/overlay4_data.bin", 0x1B30, 0x1B3C - 0x1B30 - - .global Unk_ov4_022179BC -Unk_ov4_022179BC: ; 0x022179BC - .incbin "incbin/overlay4_data.bin", 0x1B3C, 0x1B4C - 0x1B3C - - .global Unk_ov4_022179CC -Unk_ov4_022179CC: ; 0x022179CC - .incbin "incbin/overlay4_data.bin", 0x1B4C, 0x1B58 - 0x1B4C - - .global Unk_ov4_022179D8 -Unk_ov4_022179D8: ; 0x022179D8 - .incbin "incbin/overlay4_data.bin", 0x1B58, 0x1B60 - 0x1B58 - - .global Unk_ov4_022179E0 -Unk_ov4_022179E0: ; 0x022179E0 - .incbin "incbin/overlay4_data.bin", 0x1B60, 0x1B70 - 0x1B60 - - .global Unk_ov4_022179F0 -Unk_ov4_022179F0: ; 0x022179F0 - .incbin "incbin/overlay4_data.bin", 0x1B70, 0x1B80 - 0x1B70 - - .global Unk_ov4_02217A00 -Unk_ov4_02217A00: ; 0x02217A00 - .incbin "incbin/overlay4_data.bin", 0x1B80, 0x1B8C - 0x1B80 - - .global Unk_ov4_02217A0C -Unk_ov4_02217A0C: ; 0x02217A0C - .incbin "incbin/overlay4_data.bin", 0x1B8C, 0x1B94 - 0x1B8C - - .global Unk_ov4_02217A14 -Unk_ov4_02217A14: ; 0x02217A14 - .incbin "incbin/overlay4_data.bin", 0x1B94, 0x1BAC - 0x1B94 - - .global Unk_ov4_02217A2C -Unk_ov4_02217A2C: ; 0x02217A2C - .incbin "incbin/overlay4_data.bin", 0x1BAC, 0x1BC4 - 0x1BAC - - .global Unk_ov4_02217A44 -Unk_ov4_02217A44: ; 0x02217A44 - .incbin "incbin/overlay4_data.bin", 0x1BC4, 0x1BD0 - 0x1BC4 - - .global Unk_ov4_02217A50 -Unk_ov4_02217A50: ; 0x02217A50 - .incbin "incbin/overlay4_data.bin", 0x1BD0, 0x1BE0 - 0x1BD0 - - .global Unk_ov4_02217A60 -Unk_ov4_02217A60: ; 0x02217A60 - .incbin "incbin/overlay4_data.bin", 0x1BE0, 0x1BEC - 0x1BE0 - - .global Unk_ov4_02217A6C -Unk_ov4_02217A6C: ; 0x02217A6C - .incbin "incbin/overlay4_data.bin", 0x1BEC, 0x11 - diff --git a/subprojects/gamespy/libraries/gp/asm/gpi.s b/subprojects/gamespy/libraries/gp/asm/gpi.s deleted file mode 100644 index 0a5dd1e2a4..0000000000 --- a/subprojects/gamespy/libraries/gp/asm/gpi.s +++ /dev/null @@ -1,620 +0,0 @@ - .include "macros/function.inc" - .include "include/gpi.inc" - - - - .text - - - arm_func_start gpiInitialize -gpiInitialize: ; 0x021EBDCC - stmfd sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r6, r0 - mov r0, #0 - str r0, [r6, #0] - mov r0, #0x490 - mov r5, r1 - mov r4, r2 - bl DWCi_GsMalloc - str r0, [sp] - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, pc} - mov r1, #0 - mov r2, #0x490 - bl memset - ldr r0, [sp] - mov r3, #0 - strb r3, [r0] - ldr r0, [sp] - mov r2, #1 - str r3, [r0, #0x418] - ldr r1, [sp] - add r0, sp, #0 - str r2, [r1, #0x100] - ldr r1, [sp] - str r3, [r1, #0x104] - ldr r1, [sp] - str r3, [r1, #0x108] - ldr r1, [sp] - str r3, [r1, #0x10c] - ldr r1, [sp] - str r5, [r1, #0x46c] - ldr r1, [sp] - str r4, [r1, #0x470] - bl gpiInitProfiles - cmp r0, #0 - bne _021EBE84 - ldr r0, [sp] - bl DWCi_GsFree - mov r0, #0 - str r0, [sp] - add sp, sp, #4 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, pc} -_021EBE84: - ldr r0, [sp] - mov r1, #0 - str r1, [r0, #0x420] - mov r3, r1 -_021EBE94: - ldr r0, [sp] - add r0, r0, r1, lsl #3 - str r3, [r0, #0x1a4] - ldr r0, [sp] - add r0, r0, r1, lsl #3 - add r1, r1, #1 - str r3, [r0, #0x1a8] - cmp r1, #6 - blt _021EBE94 - ldr r2, [sp] - ldr r1, _021EBF10 ; =0x02217A8C - add r0, sp, #0 - str r3, [r2, #0x460] - bl gpiDebug - add r0, sp, #0 - bl gpiReset - movs r4, r0 - beq _021EBEF0 - add r0, sp, #0 - bl gpiDestroy - add sp, sp, #4 - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, pc} -_021EBEF0: - bl SocketStartUp - bl current_time - bl srand - ldr r1, [sp] - mov r0, #0 - str r1, [r6, #0] - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - ; .align 2, 0 -_021EBF10: .word Unk_ov4_02217A8C - arm_func_end gpiInitialize - - arm_func_start gpiDestroy -gpiDestroy: ; 0x021EBF14 - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r4, [r5, #0] - mov r1, #1 - bl gpiDisconnect - ldr r0, [r4, #0x460] - bl DWCi_GsFree - mov r0, #0 - str r0, [r4, #0x460] - ldr r0, [r4, #0x428] - bl TableFree - mov r0, r4 - bl DWCi_GsFree - mov r0, #0 - str r0, [r5, #0] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end gpiDestroy - - arm_func_start gpiResetProfile -gpiResetProfile: ; 0x021EBF54 - mov r0, #0 - str r0, [r1, #8] - str r0, [r1, #0x10] - str r0, [r1, #0x14] - str r0, [r1, #0x18] - mov r0, #1 - bx lr - arm_func_end gpiResetProfile - - arm_func_start gpiReset -gpiReset: ; 0x021EBF70 - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r4, [r5, #0] - mov r1, #0 - strb r1, [r4, #0x110] - strb r1, [r4, #0x12f] - strb r1, [r4, #0x144] - sub r0, r1, #1 - str r0, [r4, #0x1d4] - str r1, [r4, #0x1d8] - str r1, [r4, #0x1e4] - str r1, [r4, #0x1e8] - str r1, [r4, #0x1e0] - ldr r0, [r4, #0x1dc] - bl DWCi_GsFree - mov r0, #0 - str r0, [r4, #0x1dc] - str r0, [r4, #0x1f0] - ldr r0, [r4, #0x1ec] - bl DWCi_GsFree - mov r0, #0 - str r0, [r4, #0x1ec] - str r0, [r4, #0x1fc] - str r0, [r4, #0x200] - str r0, [r4, #0x1f8] - ldr r0, [r4, #0x1f4] - bl DWCi_GsFree - mov r0, #0 - str r0, [r4, #0x1f4] - str r0, [r4, #0x448] - str r0, [r4, #0x44c] - str r0, [r4, #0x444] - ldr r0, [r4, #0x440] - bl DWCi_GsFree - mov r0, #0 - str r0, [r4, #0x440] - str r0, [r4, #0x458] - str r0, [r4, #0x45c] - str r0, [r4, #0x454] - ldr r0, [r4, #0x450] - bl DWCi_GsFree - mov r0, #0 - str r0, [r4, #0x450] - sub r0, r0, #1 - str r0, [r4, #0x204] - mov r0, #2 - str r0, [r4, #0x20c] - ldr r1, [r4, #0x424] - cmp r1, #0 - beq _021EC04C -_021EC038: - mov r0, r5 - bl gpiRemoveOperation - ldr r1, [r4, #0x424] - cmp r1, #0 - bne _021EC038 -_021EC04C: - mov r2, #0 - str r2, [r4, #0x424] - ldr r1, _021EC094 ; =gpiResetProfile - mov r0, r5 - str r2, [r4, #0x430] - bl gpiProfileMap - mov r0, #0 - str r0, [r4, #0x19c] - str r0, [r4, #0x1a0] - str r0, [r4, #0x198] - str r0, [r4, #0x210] - str r0, [r4, #0x41c] - str r0, [r4, #0x434] - sub r1, r0, #1 - str r1, [r4, #0x214] - strb r0, [r4, #0x218] - strb r0, [r4, #0x318] - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_021EC094: .word gpiResetProfile - arm_func_end gpiReset - - arm_func_start gpiProcessConnectionManager -gpiProcessConnectionManager: ; 0x021EC098 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - mov r1, #0 - mov r4, r0 - str r1, [sp, #8] - ldr sl, [r4] -_021EC0B0: - mov r0, r4 - add r1, sl, #0x1f4 - bl gpiAddLocalInfo - mov r1, #1 - ldr r0, _021EC384 ; =0x02217AB0 - str r1, [sp] - str r0, [sp, #4] - ldr r1, [sl, #0x1d4] - add r3, sp, #8 - mov r0, r4 - add r2, sl, #0x1f4 - bl gpiSendFromBuffer - cmp r0, #0 - addne sp, sp, #0x14 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r1, sp, #8 - ldr r0, _021EC384 ; =0x02217AB0 - str r1, [sp] - str r0, [sp, #4] - ldr r1, [sl, #0x1d4] - add r3, sp, #0xc - mov r0, r4 - add r2, sl, #0x1dc - bl gpiRecvToBuffer - cmp r0, #0 - beq _021EC150 - cmp r0, #3 - addne sp, sp, #0x14 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r2, _021EC388 ; =0x02217AB4 - mov r0, r4 - mov r1, #5 - bl gpiSetError - mov r0, r4 - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x14 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021EC150: - ldr r0, [sl, #0x1dc] - ldr r1, _021EC38C ; =0x02217AE0 - bl strstr - movs r5, r0 - beq _021EC320 - ldr r6, _021EC390 ; =0x02217B04 - ldr r8, _021EC394 ; =0x02217AE8 - add fp, sp, #0x10 - mov r7, #0x800 - mov sb, #0 -_021EC178: - strb sb, [r5] - mov r0, r4 - mov r1, r8 - ldr r2, [sl, #0x1dc] - bl gpiDebug - ldr r0, [sl, #0x1dc] - sub r1, r5, r0 - str r1, [sp, #0xc] - ldr r0, [sl, #0x1f0] - cmp r1, r0 - ble _021EC1E8 - ldr r0, [sl, #0x1f0] - cmp r1, #0x800 - movlt r1, r7 - add r0, r0, r1 - str r0, [sl, #0x1f0] - add r1, r0, #1 - ldr r0, [sl, #0x1ec] - bl DWCi_GsRealloc - cmp r0, #0 - bne _021EC1E4 - ldr r1, _021EC398 ; =0x02217AF4 - mov r0, r4 - bl gpiSetErrorString - add sp, sp, #0x14 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021EC1E4: - str r0, [sl, #0x1ec] -_021EC1E8: - ldr r2, [sp, #0xc] - ldr r0, [sl, #0x1ec] - ldr r1, [sl, #0x1dc] - add r2, r2, #1 - bl memcpy - ldr r0, [sl, #0x1dc] - add r1, r5, #7 - ldr r2, [sl, #0x1e4] - sub r0, r1, r0 - sub r0, r2, r0 - str r0, [sl, #0x1e4] - add r2, r0, #1 - ldr r0, [sl, #0x1dc] - bl memmove - ldr r5, [sl, #0x1ec] - mov r1, r6 - mov r0, r5 - bl strstr - cmp r0, #0 - beq _021EC290 - add r0, r0, #4 - bl atoi - mov r5, r0 - mov r0, r4 - mov r1, fp - mov r2, r5 - bl gpiFindOperationByID - cmp r0, #0 - bne _021EC270 - ldr r1, _021EC39C ; =0x02217B0C - mov r2, r5 - mov r0, r4 - bl gpiDebug - b _021EC30C -_021EC270: - mov r0, r4 - ldr r1, [sp, #0x10] - ldr r2, [sl, #0x1ec] - bl gpiProcessOperation - cmp r0, #0 - beq _021EC30C - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021EC290: - mov r1, r5 - mov r0, r4 - mov r2, #1 - bl gpiCheckForError - cmp r0, #0 - addne sp, sp, #0x14 - movne r0, #4 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r5, [sl, #0x1ec] - ldr r1, _021EC3A0 ; =0x02217B34 - mov r0, r5 - mov r2, #4 - bl strncmp - cmp r0, #0 - bne _021EC2E8 - mov r1, r5 - mov r0, r4 - bl gpiProcessRecvBuddyMessage - cmp r0, #0 - beq _021EC30C - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021EC2E8: - ldr r1, _021EC3A4 ; =0x02217B3C - mov r0, r5 - mov r2, #0xa - bl strncmp - cmp r0, #0 - beq _021EC30C - ldr r1, _021EC3A8 ; =0x02217B44 - mov r0, r4 - bl gpiDebug -_021EC30C: - ldr r0, [sl, #0x1dc] - ldr r1, _021EC38C ; =0x02217AE0 - bl strstr - movs r5, r0 - bne _021EC178 -_021EC320: - ldr r0, [sp, #8] - cmp r0, #0 - beq _021EC358 - ldr r2, _021EC3AC ; =0x02217B74 - mov r0, r4 - mov r1, #7 - bl gpiSetError - mov r0, r4 - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x14 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021EC358: - mov r0, r4 - bl gpiOperationsAreBlocking - movs r5, r0 - beq _021EC370 - mov r0, #0xa - bl msleep -_021EC370: - cmp r5, #0 - bne _021EC0B0 - mov r0, #0 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_021EC384: .word Unk_ov4_02217AB0 -_021EC388: .word Unk_ov4_02217AB4 -_021EC38C: .word Unk_ov4_02217AE0 -_021EC390: .word Unk_ov4_02217B04 -_021EC394: .word Unk_ov4_02217AE8 -_021EC398: .word Unk_ov4_02217AF4 -_021EC39C: .word Unk_ov4_02217B0C -_021EC3A0: .word Unk_ov4_02217B34 -_021EC3A4: .word Unk_ov4_02217B3C -_021EC3A8: .word Unk_ov4_02217B44 -_021EC3AC: .word Unk_ov4_02217B74 - arm_func_end gpiProcessConnectionManager - - arm_func_start gpiProcess -gpiProcess: ; 0x021EC3B0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - ldr r6, [sl] - mov sb, r1 - ldr r0, [r6, #0x1d8] - mov r7, #0 - cmp r0, #4 - bls _021EC3E4 - ldr r0, _021EC550 ; =0x02217B9C - ldr r1, _021EC554 ; =0x02217C94 - ldr r2, _021EC558 ; =0x02217A80 - ldr r3, _021EC55C ; =0x000001B6 - bl __msl_assertion_failed -_021EC3E4: - ldr r0, [r6, #0x1d8] - cmp r0, #1 - bne _021EC484 - mov r4, #0 - mov r5, #1 - mov fp, #0xa -_021EC3FC: - mov r0, sl - bl gpiCheckConnect - movs r7, r0 - bne _021EC424 - cmp sb, #0 - beq _021EC424 - ldr r0, [r6, #0x1d8] - cmp r0, #1 - moveq r8, r5 - beq _021EC428 -_021EC424: - mov r8, r4 -_021EC428: - cmp r8, #0 - beq _021EC438 - mov r0, fp - bl msleep -_021EC438: - cmp r8, #0 - bne _021EC3FC - cmp r7, #0 - beq _021EC484 - add r1, sp, #0 - mov r0, sl - mov r2, #1 - bl gpiFindOperationByID - cmp r0, #0 - beq _021EC470 - ldr r0, [sp] - mov r1, #4 - str r1, [r0, #0x1c] - b _021EC484 -_021EC470: - ldr r0, _021EC560 ; =0x02217C9C - ldr r1, _021EC554 ; =0x02217C94 - ldr r2, _021EC558 ; =0x02217A80 - mov r3, #0x1dc - bl __msl_assertion_failed -_021EC484: - ldr r0, [r6, #0x1d8] - sub r0, r0, #2 - cmp r0, #1 - bhi _021EC4BC - cmp r7, #0 - bne _021EC4A8 - mov r0, sl - bl gpiProcessConnectionManager - mov r7, r0 -_021EC4A8: - cmp r7, #0 - bne _021EC4BC - mov r0, sl - bl gpiProcessPeers - mov r7, r0 -_021EC4BC: - cmp r7, #0 - bne _021EC4D0 - mov r0, sl - bl gpiProcessSearches - mov r7, r0 -_021EC4D0: - ldr r1, [r6, #0x424] - str r1, [sp] - cmp r1, #0 - beq _021EC51C -_021EC4E0: - ldr r0, [r1, #0x1c] - cmp r0, #0 - ldreq r0, [r1, #0x20] - streq r0, [sp] - beq _021EC510 - mov r0, sl - bl gpiFailedOpCallback - ldr r1, [sp] - mov r0, sl - ldr r2, [r1, #0x20] - str r2, [sp] - bl gpiRemoveOperation -_021EC510: - ldr r1, [sp] - cmp r1, #0 - bne _021EC4E0 -_021EC51C: - mov r0, sl - mov r1, sb - bl gpiProcessCallbacks - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [r6, #0x41c] - cmp r0, #0 - beq _021EC548 - mov r0, sl - mov r1, #0 - bl gpiDisconnect -_021EC548: - mov r0, r7 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_021EC550: .word Unk_ov4_02217B9C -_021EC554: .word Unk_ov4_02217C94 -_021EC558: .word Unk_ov4_02217A80 -_021EC55C: .word 0x000001B6 -_021EC560: .word Unk_ov4_02217C9C - arm_func_end gpiProcess - - .data - - - .global Unk_ov4_02217A80 -Unk_ov4_02217A80: ; 0x02217A80 - .incbin "incbin/overlay4_data.bin", 0x1C00, 0x1C0C - 0x1C00 - - .global Unk_ov4_02217A8C -Unk_ov4_02217A8C: ; 0x02217A8C - .incbin "incbin/overlay4_data.bin", 0x1C0C, 0x1C30 - 0x1C0C - - .global Unk_ov4_02217AB0 -Unk_ov4_02217AB0: ; 0x02217AB0 - .incbin "incbin/overlay4_data.bin", 0x1C30, 0x1C34 - 0x1C30 - - .global Unk_ov4_02217AB4 -Unk_ov4_02217AB4: ; 0x02217AB4 - .incbin "incbin/overlay4_data.bin", 0x1C34, 0x1C60 - 0x1C34 - - .global Unk_ov4_02217AE0 -Unk_ov4_02217AE0: ; 0x02217AE0 - .incbin "incbin/overlay4_data.bin", 0x1C60, 0x1C68 - 0x1C60 - - .global Unk_ov4_02217AE8 -Unk_ov4_02217AE8: ; 0x02217AE8 - .incbin "incbin/overlay4_data.bin", 0x1C68, 0x1C74 - 0x1C68 - - .global Unk_ov4_02217AF4 -Unk_ov4_02217AF4: ; 0x02217AF4 - .incbin "incbin/overlay4_data.bin", 0x1C74, 0x1C84 - 0x1C74 - - .global Unk_ov4_02217B04 -Unk_ov4_02217B04: ; 0x02217B04 - .incbin "incbin/overlay4_data.bin", 0x1C84, 0x1C8C - 0x1C84 - - .global Unk_ov4_02217B0C -Unk_ov4_02217B0C: ; 0x02217B0C - .incbin "incbin/overlay4_data.bin", 0x1C8C, 0x1CB4 - 0x1C8C - - .global Unk_ov4_02217B34 -Unk_ov4_02217B34: ; 0x02217B34 - .incbin "incbin/overlay4_data.bin", 0x1CB4, 0x1CBC - 0x1CB4 - - .global Unk_ov4_02217B3C -Unk_ov4_02217B3C: ; 0x02217B3C - .incbin "incbin/overlay4_data.bin", 0x1CBC, 0x1CC4 - 0x1CBC - - .global Unk_ov4_02217B44 -Unk_ov4_02217B44: ; 0x02217B44 - .incbin "incbin/overlay4_data.bin", 0x1CC4, 0x1CF4 - 0x1CC4 - - .global Unk_ov4_02217B74 -Unk_ov4_02217B74: ; 0x02217B74 - .incbin "incbin/overlay4_data.bin", 0x1CF4, 0x1D1C - 0x1CF4 - - .global Unk_ov4_02217B9C -Unk_ov4_02217B9C: ; 0x02217B9C - .incbin "incbin/overlay4_data.bin", 0x1D1C, 0x1E14 - 0x1D1C - - .global Unk_ov4_02217C94 -Unk_ov4_02217C94: ; 0x02217C94 - .incbin "incbin/overlay4_data.bin", 0x1E14, 0x1E1C - 0x1E14 - - .global Unk_ov4_02217C9C -Unk_ov4_02217C9C: ; 0x02217C9C - .incbin "incbin/overlay4_data.bin", 0x1E1C, 0x2 - diff --git a/subprojects/gamespy/libraries/gp/asm/gpibuddy.s b/subprojects/gamespy/libraries/gp/asm/gpibuddy.s deleted file mode 100644 index 7837ec8b2d..0000000000 --- a/subprojects/gamespy/libraries/gp/asm/gpibuddy.s +++ /dev/null @@ -1,1143 +0,0 @@ - .include "macros/function.inc" - .include "include/gpibuddy.inc" - - - - .text - - - arm_func_start gpiSendAuthBuddyRequest -gpiSendAuthBuddyRequest: ; 0x021EC564 - stmfd sp!, {r4, r5, r6, lr} - mov r6, r0 - ldr r4, [r6, #0] - ldr r2, _021EC5F8 ; =0x02217CB0 - mov r5, r1 - add r1, r4, #0x1f4 - bl gpiAppendStringToBuffer - ldr r2, _021EC5FC ; =0x02217CBC - mov r0, r6 - add r1, r4, #0x1f4 - bl gpiAppendStringToBuffer - ldr r2, [r4, #0x198] - mov r0, r6 - add r1, r4, #0x1f4 - bl gpiAppendIntToBuffer - ldr r2, _021EC600 ; =0x02217CC8 - mov r0, r6 - add r1, r4, #0x1f4 - bl gpiAppendStringToBuffer - mov r0, r6 - add r1, r4, #0x1f4 - ldr r2, [r5, #0] - bl gpiAppendIntToBuffer - mov r0, r6 - add r1, r4, #0x1f4 - ldr r2, _021EC604 ; =0x02217CD8 - bl gpiAppendStringToBuffer - ldr r2, [r5, #0x10] - mov r0, r6 - add r1, r4, #0x1f4 - bl gpiAppendStringToBuffer - mov r0, r6 - add r1, r4, #0x1f4 - ldr r2, _021EC608 ; =0x02217CE0 - bl gpiAppendStringToBuffer - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_021EC5F8: .word Unk_ov4_02217CB0 -_021EC5FC: .word Unk_ov4_02217CBC -_021EC600: .word Unk_ov4_02217CC8 -_021EC604: .word Unk_ov4_02217CD8 -_021EC608: .word Unk_ov4_02217CE0 - arm_func_end gpiSendAuthBuddyRequest - - arm_func_start gpiProcessRecvBuddyMessage -gpiProcessRecvBuddyMessage: ; 0x021EC60C - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x138 - sub sp, sp, #0x1000 - mov r7, r1 - mov sl, r0 - ldr r1, _021ECF80 ; =0x02217CE8 - add r2, sp, #0x138 - mov r0, r7 - mov r3, #0x1000 - ldr r8, [sl] - bl gpiValueForKey - cmp r0, #0 - bne _021EC670 - ldr r2, _021ECF84 ; =0x02217CF0 - mov r0, sl - mov r1, #1 - bl gpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x138 - add sp, sp, #0x1000 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021EC670: - add r0, sp, #0x138 - bl atoi - mov r4, r0 - ldr r1, _021ECF88 ; =0x02217D20 - add r2, sp, #0x138 - mov r0, r7 - mov r3, #0x1000 - bl gpiValueForKey - cmp r0, #0 - bne _021EC6C8 - ldr r2, _021ECF84 ; =0x02217CF0 - mov r0, sl - mov r1, #1 - bl gpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x138 - add sp, sp, #0x1000 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021EC6C8: - add r0, sp, #0x138 - bl atoi - mov r6, r0 - ldr r1, _021ECF8C ; =0x02217D24 - add r2, sp, #0x138 - mov r0, r7 - mov r3, #0x1000 - bl gpiValueForKey - cmp r0, #0 - beq _021EC6FC - add r0, sp, #0x138 - bl atoi - b _021EC704 -_021EC6FC: - mov r0, #0 - bl time -_021EC704: - mov sb, r0 - cmp r4, #0x64 - bgt _021EC734 - bge _021ECA20 - cmp r4, #2 - bgt _021ECF70 - cmp r4, #1 - blt _021ECF70 - beq _021EC754 - cmp r4, #2 - beq _021EC860 - b _021ECF70 -_021EC734: - cmp r4, #0x66 - bgt _021ECF70 - cmp r4, #0x65 - blt _021ECF70 - beq _021ECD80 - cmp r4, #0x66 - beq _021ECF10 - b _021ECF70 -_021EC754: - ldr r1, [r8, #0x1bc] - ldr r0, [r8, #0x1c0] - str r1, [sp, #0x20] - str r0, [sp, #0x24] - cmp r1, #0 - beq _021ECF70 - mov r0, #0xc - bl DWCi_GsMalloc - movs r4, r0 - bne _021EC798 - ldr r1, _021ECF90 ; =0x02217D2C - mov r0, sl - bl gpiSetErrorString - add sp, sp, #0x138 - add sp, sp, #0x1000 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021EC798: - ldr r1, _021ECF94 ; =0x02217D3C - add r2, sp, #0x138 - mov r0, r7 - mov r3, #0x1000 - bl gpiValueForKey - cmp r0, #0 - bne _021EC7E4 - ldr r2, _021ECF84 ; =0x02217CF0 - mov r0, sl - mov r1, #1 - bl gpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x138 - add sp, sp, #0x1000 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021EC7E4: - add r0, sp, #0x138 - bl strlen - add r0, r0, #1 - bl DWCi_GsMalloc - str r0, [r4, #8] - cmp r0, #0 - bne _021EC81C - ldr r1, _021ECF90 ; =0x02217D2C - mov r0, sl - bl gpiSetErrorString - add sp, sp, #0x138 - add sp, sp, #0x1000 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021EC81C: - add r1, sp, #0x138 - bl strcpy - stmia r4, {r6, sb} - mov r2, #0 - str r2, [sp] - mov r2, #2 - add r1, sp, #0x20 - str r2, [sp, #4] - mov r0, sl - mov r3, r4 - ldmia r1, {r1, r2} - bl gpiAddCallback - cmp r0, #0 - beq _021ECF70 - add sp, sp, #0x138 - add sp, sp, #0x1000 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021EC860: - mov r0, sl - mov r1, r6 - bl gpiProfileListAdd - movs r5, r0 - bne _021EC890 - ldr r1, _021ECF90 ; =0x02217D2C - mov r0, sl - bl gpiSetErrorString - add sp, sp, #0x138 - add sp, sp, #0x1000 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021EC890: - ldr r1, _021ECF94 ; =0x02217D3C - add r2, sp, #0x138 - mov r0, r7 - mov r3, #0x1000 - bl gpiValueForKey - cmp r0, #0 - bne _021EC8DC - ldr r2, _021ECF84 ; =0x02217CF0 - mov r0, sl - mov r1, #1 - bl gpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x138 - add sp, sp, #0x1000 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021EC8DC: - ldr r1, _021ECF98 ; =0x02217D44 - add r0, sp, #0x138 - bl strstr - movs r4, r0 - bne _021EC920 - ldr r2, _021ECF84 ; =0x02217CF0 - mov r0, sl - mov r1, #1 - bl gpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x138 - add sp, sp, #0x1000 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021EC920: - mov r1, #0 - add r0, r4, #8 - strb r1, [r4] - bl strlen - cmp r0, #0x20 - beq _021EC968 - ldr r2, _021ECF84 ; =0x02217CF0 - mov r0, sl - mov r1, #1 - bl gpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x138 - add sp, sp, #0x1000 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021EC968: - ldr r0, [r5, #0x10] - bl DWCi_GsFree - mov r0, #0 - str r0, [r5, #0x10] - add r0, r4, #8 - bl goastrdup - str r0, [r5, #0x10] - ldr r0, [r5, #0x14] - add r0, r0, #1 - str r0, [r5, #0x14] - ldr r1, [r8, #0x1ac] - ldr r0, [r8, #0x1b0] - str r1, [sp, #8] - str r0, [sp, #0xc] - cmp r1, #0 - beq _021ECF70 - ldr r0, _021ECF9C ; =0x0000040C - bl DWCi_GsMalloc - movs r4, r0 - bne _021EC9D4 - ldr r1, _021ECF90 ; =0x02217D2C - mov r0, sl - bl gpiSetErrorString - add sp, sp, #0x138 - add sp, sp, #0x1000 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021EC9D4: - ldr r2, _021ECFA0 ; =0x00000401 - add r1, sp, #0x138 - add r0, r4, #8 - bl strzcpy - stmia r4, {r6, sb} - mov r2, #0 - str r2, [sp] - mov r2, #6 - add r1, sp, #8 - str r2, [sp, #4] - mov r0, sl - mov r3, r4 - ldmia r1, {r1, r2} - bl gpiAddCallback - cmp r0, #0 - beq _021ECF70 - add sp, sp, #0x138 - add sp, sp, #0x1000 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021ECA20: - mov r0, sl - mov r1, r6 - bl gpiProfileListAdd - movs r4, r0 - bne _021ECA50 - ldr r1, _021ECF90 ; =0x02217D2C - mov r0, sl - bl gpiSetErrorString - add sp, sp, #0x138 - add sp, sp, #0x1000 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021ECA50: - ldr r0, [r4, #8] - cmp r0, #0 - bne _021ECAC4 - mov r0, #0x18 - bl DWCi_GsMalloc - str r0, [r4, #8] - cmp r0, #0 - bne _021ECA8C - ldr r1, _021ECF90 ; =0x02217D2C - mov r0, sl - bl gpiSetErrorString - add sp, sp, #0x138 - add sp, sp, #0x1000 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021ECA8C: - mov r2, #6 - mov r1, #0 -_021ECA94: - strb r1, [r0] - strb r1, [r0, #1] - strb r1, [r0, #2] - strb r1, [r0, #3] - add r0, r0, #4 - subs r2, r2, #1 - bne _021ECA94 - ldr r1, [r8, #0x430] - add r0, r1, #1 - str r0, [r8, #0x430] - ldr r0, [r4, #8] - str r1, [r0, #0] -_021ECAC4: - ldr r1, _021ECF94 ; =0x02217D3C - mov r0, r7 - add r2, sp, #0x138 - mov r3, #0x1000 - ldr r7, [r4, #8] - bl gpiValueForKey - cmp r0, #0 - bne _021ECB14 - ldr r2, _021ECF84 ; =0x02217CF0 - mov r0, sl - mov r1, #1 - bl gpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x138 - add sp, sp, #0x1000 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021ECB14: - ldr r1, _021ECFA4 ; =0x02217D50 - add r0, sp, #0x138 - add r2, sp, #0x28 - mov r3, #0x10 - bl gpiValueForKey - cmp r0, #0 - bne _021ECB60 - ldr r2, _021ECF84 ; =0x02217CF0 - mov r0, sl - mov r1, #1 - bl gpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x138 - add sp, sp, #0x1000 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021ECB60: - add r0, sp, #0x28 - bl atoi - str r0, [r7, #4] - ldr r0, [r7, #8] - bl DWCi_GsFree - mov r0, #0 - str r0, [r7, #8] - ldr r1, _021ECFA8 ; =0x02217D54 - add r0, sp, #0x138 - add r2, sp, #0x38 - mov r3, #0x100 - bl gpiValueForKey - cmp r0, #0 - moveq r0, #0 - streqb r0, [sp, #0x38] - add r0, sp, #0x38 - bl goastrdup - str r0, [r7, #8] - cmp r0, #0 - bne _021ECBCC - ldr r1, _021ECF90 ; =0x02217D2C - mov r0, sl - bl gpiSetErrorString - add sp, sp, #0x138 - add sp, sp, #0x1000 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021ECBCC: - ldr r0, [r7, #0xc] - bl DWCi_GsFree - mov r4, #0 - ldr r1, _021ECFAC ; =0x02217D5C - add r0, sp, #0x138 - add r2, sp, #0x38 - mov r3, #0x100 - str r4, [r7, #0xc] - bl gpiValueForKey - cmp r0, #0 - moveq r0, r4 - streqb r0, [sp, #0x38] - add r0, sp, #0x38 - bl goastrdup - str r0, [r7, #0xc] - cmp r0, #0 - bne _021ECC2C - ldr r1, _021ECF90 ; =0x02217D2C - mov r0, sl - bl gpiSetErrorString - add sp, sp, #0x138 - add sp, sp, #0x1000 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021ECC2C: - ldr r1, _021ECFB0 ; =0x02217D64 - add r0, sp, #0x138 - add r2, sp, #0x28 - mov r3, #0x10 - bl gpiValueForKey - cmp r0, #0 - moveq r0, #0 - beq _021ECCA4 - add r0, sp, #0x28 - bl atoi - mov r5, r0 - add r0, sp, #0x28 - bl atoi - mov fp, r0 - add r0, sp, #0x28 - bl atoi - mov r4, r0 - add r0, sp, #0x28 - bl atoi - mov r1, r4, lsr #0x18 - mov r0, r0, lsr #8 - mov r2, fp, lsl #8 - and r1, r1, #0xff - and r0, r0, #0xff00 - mov r3, r5, lsl #0x18 - orr r0, r1, r0 - and r2, r2, #0xff0000 - and r1, r3, #0xff000000 - orr r0, r2, r0 - orr r0, r1, r0 -_021ECCA4: - ldr r1, _021ECFB4 ; =0x02217D6C - str r0, [r7, #0x10] - add r0, sp, #0x138 - add r2, sp, #0x28 - mov r3, #0x10 - bl gpiValueForKey - cmp r0, #0 - moveq r0, #0 - beq _021ECCF4 - add r0, sp, #0x28 - bl atoi - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r1, r0, asr #8 - mov r0, r0, lsl #8 - and r1, r1, #0xff - and r0, r0, #0xff00 - orr r0, r1, r0 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 -_021ECCF4: - str r0, [r7, #0x14] - ldr r1, [r8, #0x1b4] - ldr r0, [r8, #0x1b8] - str r1, [sp, #0x10] - str r0, [sp, #0x14] - cmp r1, #0 - beq _021ECF70 - mov r0, #0xc - bl DWCi_GsMalloc - movs r3, r0 - bne _021ECD3C - ldr r1, _021ECF90 ; =0x02217D2C - mov r0, sl - bl gpiSetErrorString - add sp, sp, #0x138 - add sp, sp, #0x1000 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021ECD3C: - str r6, [r3, #0] - ldr r0, [r7, #0] - mov r2, #0 - str r0, [r3, #8] - str sb, [r3, #4] - str r2, [sp] - mov r2, #5 - add r1, sp, #0x10 - str r2, [sp, #4] - mov r0, sl - ldmia r1, {r1, r2} - bl gpiAddCallback - cmp r0, #0 - beq _021ECF70 - add sp, sp, #0x138 - add sp, sp, #0x1000 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021ECD80: - ldr r1, _021ECF94 ; =0x02217D3C - add r2, sp, #0x138 - mov r0, r7 - mov r3, #0x1000 - bl gpiValueForKey - cmp r0, #0 - bne _021ECDCC - ldr r2, _021ECF84 ; =0x02217CF0 - mov r0, sl - mov r1, #1 - bl gpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x138 - add sp, sp, #0x1000 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021ECDCC: - ldr r1, _021ECFB4 ; =0x02217D6C - add r0, sp, #0x138 - bl strstr - cmp r0, #0 - bne _021ECE10 - ldr r2, _021ECF84 ; =0x02217CF0 - mov r0, sl - mov r1, #1 - bl gpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x138 - add sp, sp, #0x1000 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021ECE10: - ldrsb r1, [r0, #3] - cmp r1, #0 - bne _021ECE4C - ldr r2, _021ECF84 ; =0x02217CF0 - mov r0, sl - mov r1, #1 - bl gpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x138 - add sp, sp, #0x1000 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021ECE4C: - add r0, r0, #3 - bl atoi - mov r4, r0 - ldr r1, _021ECFB8 ; =0x02217D70 - add r0, sp, #0x138 - bl strstr - movs r1, r0 - moveq r0, #0 - streqb r0, [sp, #0x38] - beq _021ECE84 - add r0, sp, #0x38 - add r1, r1, #3 - mov r2, #0x100 - bl strzcpy -_021ECE84: - ldr r1, [r8, #0x1c4] - ldr r0, [r8, #0x1c8] - str r1, [sp, #0x18] - str r0, [sp, #0x1c] - cmp r1, #0 - beq _021ECF70 - mov r0, #0x108 - bl DWCi_GsMalloc - movs r5, r0 - bne _021ECEC8 - ldr r1, _021ECF90 ; =0x02217D2C - mov r0, sl - bl gpiSetErrorString - add sp, sp, #0x138 - add sp, sp, #0x1000 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021ECEC8: - str r6, [r5, #0] - add r1, sp, #0x38 - add r0, r5, #8 - str r4, [r5, #4] - bl strcpy - mov r2, #0 - str r2, [sp] - add r1, sp, #0x18 - str r2, [sp, #4] - mov r0, sl - mov r3, r5 - ldmia r1, {r1, r2} - bl gpiAddCallback - cmp r0, #0 - beq _021ECF70 - add sp, sp, #0x138 - add sp, sp, #0x1000 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021ECF10: - ldr r1, _021ECF94 ; =0x02217D3C - add r2, sp, #0x138 - mov r0, r7 - mov r3, #0x1000 - bl gpiValueForKey - cmp r0, #0 - bne _021ECF5C - ldr r2, _021ECF84 ; =0x02217CF0 - mov r0, sl - mov r1, #1 - bl gpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x138 - add sp, sp, #0x1000 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021ECF5C: - ldr r3, _021ECFBC ; =0x02217D74 - mov r0, sl - mov r1, r6 - mov r2, #0x67 - bl gpiSendBuddyMessage -_021ECF70: - mov r0, #0 - add sp, sp, #0x138 - add sp, sp, #0x1000 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_021ECF80: .word Unk_ov4_02217CE8 -_021ECF84: .word Unk_ov4_02217CF0 -_021ECF88: .word Unk_ov4_02217D20 -_021ECF8C: .word Unk_ov4_02217D24 -_021ECF90: .word Unk_ov4_02217D2C -_021ECF94: .word Unk_ov4_02217D3C -_021ECF98: .word Unk_ov4_02217D44 -_021ECF9C: .word 0x0000040C -_021ECFA0: .word 0x00000401 -_021ECFA4: .word Unk_ov4_02217D50 -_021ECFA8: .word Unk_ov4_02217D54 -_021ECFAC: .word Unk_ov4_02217D5C -_021ECFB0: .word Unk_ov4_02217D64 -_021ECFB4: .word Unk_ov4_02217D6C -_021ECFB8: .word Unk_ov4_02217D70 -_021ECFBC: .word Unk_ov4_02217D74 - arm_func_end gpiProcessRecvBuddyMessage - - arm_func_start gpiSendServerBuddyMessage -gpiSendServerBuddyMessage: ; 0x021ECFC0 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0xdb0 - mov r7, r0 - mov r5, r2 - mov r6, r1 - ldr r2, _021ED084 ; =0x00000DAD - add r0, sp, #0 - mov r1, r3 - ldr r4, [r7, #0] - bl strzcpy - ldr r2, _021ED088 ; =0x02217CE8 - mov r0, r7 - add r1, r4, #0x1f4 - bl gpiAppendStringToBuffer - mov r0, r7 - mov r2, r5 - add r1, r4, #0x1f4 - bl gpiAppendIntToBuffer - ldr r2, _021ED08C ; =0x02217CBC - mov r0, r7 - add r1, r4, #0x1f4 - bl gpiAppendStringToBuffer - ldr r2, [r4, #0x198] - mov r0, r7 - add r1, r4, #0x1f4 - bl gpiAppendIntToBuffer - ldr r2, _021ED090 ; =0x02217D78 - mov r0, r7 - add r1, r4, #0x1f4 - bl gpiAppendStringToBuffer - mov r2, r6 - mov r0, r7 - add r1, r4, #0x1f4 - bl gpiAppendIntToBuffer - ldr r2, _021ED094 ; =0x02217D3C - mov r0, r7 - add r1, r4, #0x1f4 - bl gpiAppendStringToBuffer - mov r0, r7 - add r1, r4, #0x1f4 - add r2, sp, #0 - bl gpiAppendStringToBuffer - ldr r2, _021ED098 ; =0x02217CE0 - mov r0, r7 - add r1, r4, #0x1f4 - bl gpiAppendStringToBuffer - mov r0, #0 - add sp, sp, #0xdb0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021ED084: .word 0x00000DAD -_021ED088: .word Unk_ov4_02217CE8 -_021ED08C: .word Unk_ov4_02217CBC -_021ED090: .word Unk_ov4_02217D78 -_021ED094: .word Unk_ov4_02217D3C -_021ED098: .word Unk_ov4_02217CE0 - arm_func_end gpiSendServerBuddyMessage - - arm_func_start gpiSendBuddyMessage -gpiSendBuddyMessage: ; 0x021ED09C - stmfd sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl gpiGetConnectedPeer - movs r8, r0 - bne _021ED160 - add r2, sp, #0 - mov r0, r7 - mov r1, r6 - bl gpiGetProfile - cmp r0, #0 - ldrne r0, [sp] - ldrne r0, [r0, #8] - cmpne r0, #0 - ldrne r0, [r0, #0x14] - cmpne r0, #0 - mov r0, r7 - bne _021ED108 - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl gpiSendServerBuddyMessage - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_021ED108: - mov r1, r6 - mov r2, #1 - bl gpiAddPeer - movs r8, r0 - addeq sp, sp, #4 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} - ldr r0, [sp] - mov r1, r8 - ldr r0, [r0, #0x18] - cmp r0, #0 - mov r0, r7 - bne _021ED150 - bl gpiPeerGetSig - cmp r0, #0 - beq _021ED160 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_021ED150: - bl gpiPeerStartConnect - cmp r0, #0 - addne sp, sp, #4 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} -_021ED160: - mov r0, r7 - mov r1, r8 - mov r2, r5 - mov r3, r4 - bl gpiPeerAddMessage - cmp r0, #0 - moveq r0, #0 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - arm_func_end gpiSendBuddyMessage - - arm_func_start gpiAuthBuddyRequest -gpiAuthBuddyRequest: ; 0x021ED184 - stmfd sp!, {r3, r4, r5, lr} - mov r4, r0 - add r2, sp, #0 - ldr r5, [r4, #0] - bl gpiGetProfile - cmp r0, #0 - bne _021ED1B4 - ldr r1, _021ED24C ; =0x02217D7C - mov r0, r4 - bl gpiSetErrorString - mov r0, #2 - ldmia sp!, {r3, r4, r5, pc} -_021ED1B4: - ldr r1, [sp] - ldr r0, [r1, #0x10] - cmp r0, #0 - bne _021ED1D8 - ldr r1, _021ED24C ; =0x02217D7C - mov r0, r4 - bl gpiSetErrorString - mov r0, #2 - ldmia sp!, {r3, r4, r5, pc} -_021ED1D8: - mov r0, r4 - bl gpiSendAuthBuddyRequest - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - ldr r1, [sp] - ldr r0, [r1, #0x14] - sub r0, r0, #1 - str r0, [r1, #0x14] - ldr r0, [r5, #0x100] - cmp r0, #0 - bne _021ED244 - ldr r1, [sp] - ldr r0, [r1, #0x14] - cmp r0, #0 - bgt _021ED244 - ldr r0, [r1, #0x10] - bl DWCi_GsFree - ldr r0, [sp] - mov r1, #0 - str r1, [r0, #0x10] - ldr r0, [sp] - bl gpiCanFreeProfile - cmp r0, #0 - beq _021ED244 - ldr r1, [sp] - mov r0, r4 - bl gpiRemoveProfile -_021ED244: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_021ED24C: .word Unk_ov4_02217D7C - arm_func_end gpiAuthBuddyRequest - - arm_func_start gpiFixBuddyIndices -gpiFixBuddyIndices: ; 0x021ED250 - ldr r1, [r1, #8] - cmp r1, #0 - beq _021ED26C - ldr r0, [r1, #0] - cmp r0, r2 - subgt r0, r0, #1 - strgt r0, [r1] -_021ED26C: - mov r0, #1 - bx lr - arm_func_end gpiFixBuddyIndices - - arm_func_start gpiDeleteBuddy -gpiDeleteBuddy: ; 0x021ED274 - stmfd sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r6, r0 - add r2, sp, #0 - ldr r4, [r6, #0] - bl gpiGetProfile - cmp r0, #0 - bne _021ED2AC - ldr r1, _021ED3F4 ; =0x02217D7C - mov r0, r6 - bl gpiSetErrorString - add sp, sp, #4 - mov r0, #2 - ldmia sp!, {r3, r4, r5, r6, pc} -_021ED2AC: - ldr r2, _021ED3F8 ; =0x02217D90 - mov r0, r6 - add r1, r4, #0x1f4 - bl gpiAppendStringToBuffer - ldr r2, _021ED3FC ; =0x02217CBC - mov r0, r6 - add r1, r4, #0x1f4 - bl gpiAppendStringToBuffer - ldr r2, [r4, #0x198] - mov r0, r6 - add r1, r4, #0x1f4 - bl gpiAppendIntToBuffer - ldr r2, _021ED400 ; =0x02217D9C - mov r0, r6 - add r1, r4, #0x1f4 - bl gpiAppendStringToBuffer - mov r0, r6 - add r1, r4, #0x1f4 - ldr r2, [sp] - ldr r2, [r2, #0] - bl gpiAppendIntToBuffer - mov r0, r6 - add r1, r4, #0x1f4 - ldr r2, _021ED404 ; =0x02217CE0 - bl gpiAppendStringToBuffer - ldr r0, [sp] - ldr r0, [r0, #8] - cmp r0, #0 - beq _021ED3E8 - ldr r5, [r0, #0] - cmp r5, #0 - bge _021ED340 - ldr r0, _021ED408 ; =0x02217DAC - ldr r1, _021ED40C ; =0x02217DB8 - ldr r2, _021ED410 ; =0x02217CA0 - ldr r3, _021ED414 ; =0x000001FD - bl __msl_assertion_failed -_021ED340: - ldr r0, [sp] - ldr r0, [r0, #8] - ldr r0, [r0, #8] - bl DWCi_GsFree - ldr r0, [sp] - mov r1, #0 - ldr r0, [r0, #8] - str r1, [r0, #8] - ldr r0, [sp] - ldr r0, [r0, #8] - ldr r0, [r0, #0xc] - bl DWCi_GsFree - ldr r0, [sp] - mov r1, #0 - ldr r0, [r0, #8] - str r1, [r0, #0xc] - ldr r0, [sp] - ldr r0, [r0, #8] - bl DWCi_GsFree - ldr r0, [sp] - mov r1, #0 - str r1, [r0, #8] - ldr r0, [sp] - bl gpiCanFreeProfile - cmp r0, #0 - beq _021ED3B4 - ldr r1, [sp] - mov r0, r6 - bl gpiRemoveProfile -_021ED3B4: - ldr r0, [r4, #0x430] - subs r0, r0, #1 - str r0, [r4, #0x430] - bpl _021ED3D8 - ldr r0, _021ED418 ; =0x02217DC4 - ldr r1, _021ED40C ; =0x02217DB8 - ldr r2, _021ED410 ; =0x02217CA0 - mov r3, #0x204 - bl __msl_assertion_failed -_021ED3D8: - ldr r1, _021ED41C ; =gpiFixBuddyIndices - mov r0, r6 - mov r2, r5 - bl gpiProfileMap -_021ED3E8: - mov r0, #0 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - ; .align 2, 0 -_021ED3F4: .word Unk_ov4_02217D7C -_021ED3F8: .word Unk_ov4_02217D90 -_021ED3FC: .word Unk_ov4_02217CBC -_021ED400: .word Unk_ov4_02217D9C -_021ED404: .word Unk_ov4_02217CE0 -_021ED408: .word Unk_ov4_02217DAC -_021ED40C: .word Unk_ov4_02217DB8 -_021ED410: .word Unk_ov4_02217CA0 -_021ED414: .word 0x000001FD -_021ED418: .word Unk_ov4_02217DC4 -_021ED41C: .word gpiFixBuddyIndices - arm_func_end gpiDeleteBuddy - - .data - - - .global Unk_ov4_02217CA0 -Unk_ov4_02217CA0: ; 0x02217CA0 - .incbin "incbin/overlay4_data.bin", 0x1E20, 0x1E30 - 0x1E20 - - .global Unk_ov4_02217CB0 -Unk_ov4_02217CB0: ; 0x02217CB0 - .incbin "incbin/overlay4_data.bin", 0x1E30, 0x1E3C - 0x1E30 - - .global Unk_ov4_02217CBC -Unk_ov4_02217CBC: ; 0x02217CBC - .incbin "incbin/overlay4_data.bin", 0x1E3C, 0x1E48 - 0x1E3C - - .global Unk_ov4_02217CC8 -Unk_ov4_02217CC8: ; 0x02217CC8 - .incbin "incbin/overlay4_data.bin", 0x1E48, 0x1E58 - 0x1E48 - - .global Unk_ov4_02217CD8 -Unk_ov4_02217CD8: ; 0x02217CD8 - .incbin "incbin/overlay4_data.bin", 0x1E58, 0x1E60 - 0x1E58 - - .global Unk_ov4_02217CE0 -Unk_ov4_02217CE0: ; 0x02217CE0 - .incbin "incbin/overlay4_data.bin", 0x1E60, 0x1E68 - 0x1E60 - - .global Unk_ov4_02217CE8 -Unk_ov4_02217CE8: ; 0x02217CE8 - .incbin "incbin/overlay4_data.bin", 0x1E68, 0x1E70 - 0x1E68 - - .global Unk_ov4_02217CF0 -Unk_ov4_02217CF0: ; 0x02217CF0 - .incbin "incbin/overlay4_data.bin", 0x1E70, 0x1EA0 - 0x1E70 - - .global Unk_ov4_02217D20 -Unk_ov4_02217D20: ; 0x02217D20 - .incbin "incbin/overlay4_data.bin", 0x1EA0, 0x1EA4 - 0x1EA0 - - .global Unk_ov4_02217D24 -Unk_ov4_02217D24: ; 0x02217D24 - .incbin "incbin/overlay4_data.bin", 0x1EA4, 0x1EAC - 0x1EA4 - - .global Unk_ov4_02217D2C -Unk_ov4_02217D2C: ; 0x02217D2C - .incbin "incbin/overlay4_data.bin", 0x1EAC, 0x1EBC - 0x1EAC - - .global Unk_ov4_02217D3C -Unk_ov4_02217D3C: ; 0x02217D3C - .incbin "incbin/overlay4_data.bin", 0x1EBC, 0x1EC4 - 0x1EBC - - .global Unk_ov4_02217D44 -Unk_ov4_02217D44: ; 0x02217D44 - .incbin "incbin/overlay4_data.bin", 0x1EC4, 0x1ED0 - 0x1EC4 - - .global Unk_ov4_02217D50 -Unk_ov4_02217D50: ; 0x02217D50 - .incbin "incbin/overlay4_data.bin", 0x1ED0, 0x1ED4 - 0x1ED0 - - .global Unk_ov4_02217D54 -Unk_ov4_02217D54: ; 0x02217D54 - .incbin "incbin/overlay4_data.bin", 0x1ED4, 0x1EDC - 0x1ED4 - - .global Unk_ov4_02217D5C -Unk_ov4_02217D5C: ; 0x02217D5C - .incbin "incbin/overlay4_data.bin", 0x1EDC, 0x1EE4 - 0x1EDC - - .global Unk_ov4_02217D64 -Unk_ov4_02217D64: ; 0x02217D64 - .incbin "incbin/overlay4_data.bin", 0x1EE4, 0x1EEC - 0x1EE4 - - .global Unk_ov4_02217D6C -Unk_ov4_02217D6C: ; 0x02217D6C - .incbin "incbin/overlay4_data.bin", 0x1EEC, 0x1EF0 - 0x1EEC - - .global Unk_ov4_02217D70 -Unk_ov4_02217D70: ; 0x02217D70 - .incbin "incbin/overlay4_data.bin", 0x1EF0, 0x1EF4 - 0x1EF0 - - .global Unk_ov4_02217D74 -Unk_ov4_02217D74: ; 0x02217D74 - .incbin "incbin/overlay4_data.bin", 0x1EF4, 0x1EF8 - 0x1EF4 - - .global Unk_ov4_02217D78 -Unk_ov4_02217D78: ; 0x02217D78 - .incbin "incbin/overlay4_data.bin", 0x1EF8, 0x1EFC - 0x1EF8 - - .global Unk_ov4_02217D7C -Unk_ov4_02217D7C: ; 0x02217D7C - .incbin "incbin/overlay4_data.bin", 0x1EFC, 0x1F10 - 0x1EFC - - .global Unk_ov4_02217D90 -Unk_ov4_02217D90: ; 0x02217D90 - .incbin "incbin/overlay4_data.bin", 0x1F10, 0x1F1C - 0x1F10 - - .global Unk_ov4_02217D9C -Unk_ov4_02217D9C: ; 0x02217D9C - .incbin "incbin/overlay4_data.bin", 0x1F1C, 0x1F2C - 0x1F1C - - .global Unk_ov4_02217DAC -Unk_ov4_02217DAC: ; 0x02217DAC - .incbin "incbin/overlay4_data.bin", 0x1F2C, 0x1F38 - 0x1F2C - - .global Unk_ov4_02217DB8 -Unk_ov4_02217DB8: ; 0x02217DB8 - .incbin "incbin/overlay4_data.bin", 0x1F38, 0x1F44 - 0x1F38 - - .global Unk_ov4_02217DC4 -Unk_ov4_02217DC4: ; 0x02217DC4 - .incbin "incbin/overlay4_data.bin", 0x1F44, 0x29 - diff --git a/subprojects/gamespy/libraries/gp/asm/gpibuffer.s b/subprojects/gamespy/libraries/gp/asm/gpibuffer.s deleted file mode 100644 index b0bd55b1b7..0000000000 --- a/subprojects/gamespy/libraries/gp/asm/gpibuffer.s +++ /dev/null @@ -1,877 +0,0 @@ - .include "macros/function.inc" - .include "include/gpibuffer.inc" - - - - .text - - - arm_func_start gpiAppendCharToBuffer -gpiAppendCharToBuffer: ; 0x021ED420 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - movs r4, r1 - mov r8, r0 - mov r7, r2 - bne _021ED448 - ldr r0, _021ED4A8 ; =0x02217E78 - ldr r1, _021ED4AC ; =0x02217E90 - ldr r2, _021ED4B0 ; =0x02217E28 - mov r3, #0x25 - bl __msl_assertion_failed -_021ED448: - ldr r5, [r4, #8] - ldmia r4, {r0, r6} - cmp r6, r5 - bne _021ED480 - add r6, r6, #0x800 - add r1, r6, #1 - bl DWCi_GsRealloc - cmp r0, #0 - bne _021ED480 - ldr r1, _021ED4B4 ; =0x02217E9C - mov r0, r8 - bl gpiSetErrorString - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_021ED480: - strb r7, [r0, r5] - add r1, r5, #1 - mov r2, #0 - strb r2, [r0, r1] - ldr r1, [r4, #8] - add r1, r1, #1 - str r1, [r4, #8] - stmia r4, {r0, r6} - mov r0, r2 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_021ED4A8: .word Unk_ov4_02217E78 -_021ED4AC: .word Unk_ov4_02217E90 -_021ED4B0: .word Unk_ov4_02217E28 -_021ED4B4: .word Unk_ov4_02217E9C - arm_func_end gpiAppendCharToBuffer - - arm_func_start gpiAppendStringToBufferLen -gpiAppendStringToBufferLen: ; 0x021ED4B8 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - movs r8, r2 - mov sl, r0 - mov sb, r1 - mov r7, r3 - bne _021ED4E4 - ldr r0, _021ED5AC ; =0x02217EAC - ldr r1, _021ED5B0 ; =0x02217E90 - ldr r2, _021ED5B4 ; =0x02217E5C - mov r3, #0x51 - bl __msl_assertion_failed -_021ED4E4: - cmp r7, #0 - bge _021ED500 - ldr r0, _021ED5B8 ; =0x02217EBC - ldr r1, _021ED5B0 ; =0x02217E90 - ldr r2, _021ED5B4 ; =0x02217E5C - mov r3, #0x52 - bl __msl_assertion_failed -_021ED500: - cmp sb, #0 - bne _021ED51C - ldr r0, _021ED5BC ; =0x02217E78 - ldr r1, _021ED5B0 ; =0x02217E90 - ldr r2, _021ED5B4 ; =0x02217E5C - mov r3, #0x53 - bl __msl_assertion_failed -_021ED51C: - cmp r8, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldr r4, [sb, #8] - ldr r5, [sb, #4] - ldr r6, [sb] - sub r0, r5, r4 - cmp r0, r7 - bge _021ED578 - cmp r7, #0x800 - movlt r0, #0x800 - movge r0, r7 - add r5, r5, r0 - mov r0, r6 - add r1, r5, #1 - bl DWCi_GsRealloc - movs r6, r0 - bne _021ED578 - ldr r1, _021ED5C0 ; =0x02217E9C - mov r0, sl - bl gpiSetErrorString - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_021ED578: - mov r1, r8 - mov r2, r7 - add r0, r6, r4 - bl memcpy - add r1, r4, r7 - mov r0, #0 - strb r0, [r6, r1] - ldr r1, [sb, #8] - add r1, r1, r7 - str r1, [sb, #8] - str r5, [sb, #4] - str r6, [sb] - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ; .align 2, 0 -_021ED5AC: .word Unk_ov4_02217EAC -_021ED5B0: .word Unk_ov4_02217E90 -_021ED5B4: .word Unk_ov4_02217E5C -_021ED5B8: .word Unk_ov4_02217EBC -_021ED5BC: .word Unk_ov4_02217E78 -_021ED5C0: .word Unk_ov4_02217E9C - arm_func_end gpiAppendStringToBufferLen - - arm_func_start gpiAppendStringToBuffer -gpiAppendStringToBuffer: ; 0x021ED5C4 - stmfd sp!, {r4, r5, r6, lr} - mov r4, r2 - mov r6, r0 - mov r5, r1 - mov r0, r4 - bl strlen - mov r3, r0 - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl gpiAppendStringToBufferLen - ldmia sp!, {r4, r5, r6, pc} - arm_func_end gpiAppendStringToBuffer - - arm_func_start gpiAppendIntToBuffer -gpiAppendIntToBuffer: ; 0x021ED5F4 - stmfd sp!, {r3, r4, r5, lr} - sub sp, sp, #0x10 - mov r4, r1 - mov r5, r0 - ldr r1, _021ED628 ; =0x02217ECC - add r0, sp, #0 - bl sprintf - add r2, sp, #0 - mov r0, r5 - mov r1, r4 - bl gpiAppendStringToBuffer - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_021ED628: .word Unk_ov4_02217ECC - arm_func_end gpiAppendIntToBuffer - - arm_func_start gpiSendData -gpiSendData: ; 0x021ED62C - stmfd sp!, {r4, r5, r6, r7, r8, lr} - mov r8, r1 - mov r7, r0 - mov r1, r2 - mov r2, r3 - mov r0, r8 - mov r3, #0 - ldr r6, [sp, #0x18] - ldr r5, [sp, #0x1c] - ldr r4, [sp, #0x20] - bl send - mvn r1, #0 - cmp r0, r1 - bne _021ED6D8 - mov r0, r8 - bl GOAGetLastError - mvn r2, #5 - cmp r0, r2 - subne r1, r2, #0x14 - cmpne r0, r1 - subne r1, r2, #0x46 - cmpne r0, r1 - beq _021ED6C8 - ldrsb r0, [r4] - cmp r0, #0x50 - ldreqsb r0, [r4, #1] - cmpeq r0, #0x52 - moveq r0, #3 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldr r2, _021ED714 ; =0x02217ED0 - mov r0, r7 - mov r1, #5 - bl gpiSetError - mov r0, r7 - mov r1, #3 - mov r2, #0 - bl gpiCallErrorCallback - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_021ED6C8: - mov r0, #0 - str r0, [r5, #0] - str r0, [r6, #0] - b _021ED70C -_021ED6D8: - cmp r0, #0 - strne r0, [r5] - movne r0, #0 - strne r0, [r6] - bne _021ED70C - ldr r1, _021ED718 ; =0x02217EF8 - mov r0, r7 - mov r2, r4 - bl gpiDebug - mov r0, #0 - str r0, [r5, #0] - mov r0, #1 - str r0, [r6, #0] -_021ED70C: - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_021ED714: .word Unk_ov4_02217ED0 -_021ED718: .word Unk_ov4_02217EF8 - arm_func_end gpiSendData - - arm_func_start gpiSendOrBufferChar -gpiSendOrBufferChar: ; 0x021ED71C - stmfd sp!, {r0, r1, r2, r3} - stmfd sp!, {r4, r5, lr} - sub sp, sp, #0x14 - mov r4, r1 - ldr r1, [r4, #0x28] - mov r5, r0 - cmp r1, #0 - bne _021ED750 - ldr r0, _021ED7EC ; =0x02217F1C - ldr r1, _021ED7F0 ; =0x02217E90 - ldr r2, _021ED7F4 ; =0x02217E14 - mov r3, #0xde - bl __msl_assertion_failed -_021ED750: - ldr r1, [r4, #0x30] - ldr r0, [r4, #0x34] - subs r0, r1, r0 - bne _021ED7CC - ldr r0, [r4, #0x38] - bl ArrayLength - cmp r0, #0 - bne _021ED7CC - add r0, sp, #0x10 - str r0, [sp] - add r1, sp, #0xc - ldr r0, _021ED7F8 ; =0x02217F40 - str r1, [sp, #4] - str r0, [sp, #8] - ldr r1, [r4, #8] - add r2, sp, #0x28 - mov r0, r5 - mov r3, #1 - bl gpiSendData - cmp r0, #0 - addne sp, sp, #0x14 - ldmneia sp!, {r4, r5, lr} - addne sp, sp, #0x10 - bxne lr - ldr r0, [sp, #0xc] - cmp r0, #0 - addne sp, sp, #0x14 - movne r0, #0 - ldmneia sp!, {r4, r5, lr} - addne sp, sp, #0x10 - bxne lr -_021ED7CC: - ldrsb r2, [sp, #0x28] - mov r0, r5 - add r1, r4, #0x28 - bl gpiAppendCharToBuffer - add sp, sp, #0x14 - ldmia sp!, {r4, r5, lr} - add sp, sp, #0x10 - bx lr - ; .align 2, 0 -_021ED7EC: .word Unk_ov4_02217F1C -_021ED7F0: .word Unk_ov4_02217E90 -_021ED7F4: .word Unk_ov4_02217E14 -_021ED7F8: .word Unk_ov4_02217F40 - arm_func_end gpiSendOrBufferChar - - arm_func_start gpiSendOrBufferStringLen -gpiSendOrBufferStringLen: ; 0x021ED7FC - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - mov sb, r1 - ldr r1, [sb, #0x28] - mov sl, r0 - mov r8, r2 - mov r7, r3 - cmp r1, #0 - bne _021ED834 - ldr r0, _021ED8EC ; =0x02217F1C - ldr r1, _021ED8F0 ; =0x02217E90 - ldr r2, _021ED8F4 ; =0x02217E40 - mov r3, #0xfb - bl __msl_assertion_failed -_021ED834: - cmp r7, #0 - mov r6, #0 - addeq sp, sp, #0x14 - moveq r0, r6 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [sb, #0x30] - ldr r0, [sb, #0x34] - subs r0, r1, r0 - bne _021ED8B8 - ldr r0, [sb, #0x38] - bl ArrayLength - cmp r0, #0 - bne _021ED8B8 - ldr fp, _021ED8F8 ; =0x02217F40 - add r5, sp, #0x10 - add r4, sp, #0xc -_021ED874: - str r5, [sp] - stmib sp, {r4, fp} - ldr r1, [sb, #8] - mov r0, sl - mov r3, r7 - add r2, r8, r6 - bl gpiSendData - cmp r0, #0 - addne sp, sp, #0x14 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [sp, #0xc] - cmp r0, #0 - subne r7, r7, r0 - addne r6, r6, r0 - cmp r0, #0 - cmpne r7, #0 - bne _021ED874 -_021ED8B8: - cmp r7, #0 - beq _021ED8E0 - mov r0, sl - mov r3, r7 - add r1, sb, #0x28 - add r2, r8, r6 - bl gpiAppendStringToBufferLen - cmp r0, #0 - addne sp, sp, #0x14 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021ED8E0: - mov r0, #0 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_021ED8EC: .word Unk_ov4_02217F1C -_021ED8F0: .word Unk_ov4_02217E90 -_021ED8F4: .word Unk_ov4_02217E40 -_021ED8F8: .word Unk_ov4_02217F40 - arm_func_end gpiSendOrBufferStringLen - - arm_func_start gpiSendOrBufferString -gpiSendOrBufferString: ; 0x021ED8FC - stmfd sp!, {r4, r5, r6, lr} - mov r4, r2 - mov r6, r0 - mov r5, r1 - mov r0, r4 - bl strlen - mov r3, r0 - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl gpiSendOrBufferStringLen - ldmia sp!, {r4, r5, r6, pc} - arm_func_end gpiSendOrBufferString - - arm_func_start gpiRecvToBuffer -gpiRecvToBuffer: ; 0x021ED92C - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x18 - str r0, [sp] - ldr r0, [sp, #0x44] - mov sl, r1 - mvn r1, #0 - str r2, [sp, #4] - str r3, [sp, #8] - cmp sl, r1 - str r0, [sp, #0x44] - bne _021ED96C - ldr r0, _021EDB20 ; =0x02217F44 - ldr r1, _021EDB24 ; =0x02217E90 - ldr r2, _021EDB28 ; =0x02217DF0 - mov r3, #0x150 - bl __msl_assertion_failed -_021ED96C: - ldr r0, [sp, #4] - cmp r0, #0 - bne _021ED98C - ldr r0, _021EDB2C ; =0x02217F5C - ldr r1, _021EDB24 ; =0x02217E90 - ldr r2, _021EDB28 ; =0x02217DF0 - ldr r3, _021EDB30 ; =0x00000151 - bl __msl_assertion_failed -_021ED98C: - ldr r0, [sp, #8] - cmp r0, #0 - bne _021ED9AC - ldr r0, _021EDB34 ; =0x02217F70 - ldr r1, _021EDB24 ; =0x02217E90 - ldr r2, _021EDB28 ; =0x02217DF0 - ldr r3, _021EDB38 ; =0x00000152 - bl __msl_assertion_failed -_021ED9AC: - ldr r0, [sp, #0x40] - cmp r0, #0 - bne _021ED9CC - ldr r0, _021EDB3C ; =0x02217F84 - ldr r1, _021EDB24 ; =0x02217E90 - ldr r2, _021EDB28 ; =0x02217DF0 - ldr r3, _021EDB40 ; =0x00000153 - bl __msl_assertion_failed -_021ED9CC: - ldr r0, [sp, #4] - mvn r4, #0 - ldr r6, [r0, #8] - ldmia r0, {r5, r7} - sub r0, r4, #0x4b - str r0, [sp, #0x14] - sub r0, r4, #0x19 - mov sb, #0 - str r0, [sp, #0x10] - sub r0, r4, #5 - mov fp, sb - str r0, [sp, #0xc] -_021ED9FC: - add r0, r6, #0x800 - cmp r0, r7 - ble _021EDA38 - mov r7, r0 - add r1, r0, #1 - mov r0, r5 - bl DWCi_GsRealloc - movs r5, r0 - bne _021EDA38 - ldr r1, _021EDB44 ; =0x02217E9C - ldr r0, [sp] - bl gpiSetErrorString - add sp, sp, #0x18 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021EDA38: - mov r0, sl - add r1, r5, r6 - sub r2, r7, r6 - mov r3, #0 - bl recv - mov r8, r0 - cmp r8, r4 - bne _021EDA94 - mov r0, sl - bl GOAGetLastError - ldr r1, [sp, #0xc] - cmp r0, r1 - ldrne r1, [sp, #0x10] - cmpne r0, r1 - ldrne r1, [sp, #0x14] - cmpne r0, r1 - beq _021EDAB8 - ldr r1, _021EDB48 ; =0x02217F98 - ldr r0, [sp] - bl gpiSetErrorString - add sp, sp, #0x18 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021EDA94: - cmp r8, #0 - addne r6, r6, r8 - addne sb, sb, r8 - bne _021EDAB8 - ldr r0, [sp] - ldr r1, _021EDB4C ; =0x02217FC4 - ldr r2, [sp, #0x44] - mov fp, #1 - bl gpiDebug -_021EDAB8: - mov r0, #0 - cmp r8, r4 - strb r0, [r5, r6] - beq _021EDAD8 - cmp fp, #0 - bne _021EDAD8 - cmp sb, #0x20000 - blt _021ED9FC -_021EDAD8: - cmp sb, #0 - beq _021EDAF4 - ldr r1, _021EDB50 ; =0x02217FE8 - ldr r0, [sp] - ldr r2, [sp, #0x44] - mov r3, sb - bl gpiDebug -_021EDAF4: - ldr r0, [sp, #4] - ldr r1, [sp, #0x40] - str r5, [r0, #0] - str r6, [r0, #8] - str r7, [r0, #4] - ldr r0, [sp, #8] - str sb, [r0] - str fp, [r1] - mov r0, #0 - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_021EDB20: .word Unk_ov4_02217F44 -_021EDB24: .word Unk_ov4_02217E90 -_021EDB28: .word Unk_ov4_02217DF0 -_021EDB2C: .word Unk_ov4_02217F5C -_021EDB30: .word 0x00000151 -_021EDB34: .word Unk_ov4_02217F70 -_021EDB38: .word 0x00000152 -_021EDB3C: .word Unk_ov4_02217F84 -_021EDB40: .word 0x00000153 -_021EDB44: .word Unk_ov4_02217E9C -_021EDB48: .word Unk_ov4_02217F98 -_021EDB4C: .word Unk_ov4_02217FC4 -_021EDB50: .word Unk_ov4_02217FE8 - arm_func_end gpiRecvToBuffer - - arm_func_start gpiSendFromBuffer -gpiSendFromBuffer: ; 0x021EDB54 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x1c - mov sl, r0 - str r2, [sp, #0xc] - mov sb, r1 - str r3, [sp, #0x10] - movs r0, r2 - ldr r8, [sp, #0x44] - bne _021EDB8C - ldr r0, _021EDCB0 ; =0x02217E78 - ldr r1, _021EDCB4 ; =0x02217E90 - ldr r2, _021EDCB8 ; =0x02217E00 - ldr r3, _021EDCBC ; =0x000001B9 - bl __msl_assertion_failed -_021EDB8C: - ldr r0, [sp, #0xc] - mov r4, #0 - ldr fp, [r0, #8] - ldr r7, [r0, #0xc] - ldr r6, [r0, #0] - subs r5, fp, r7 - addeq sp, sp, #0x1c - moveq r0, r4 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021EDBB0: - add r0, sp, #0x18 - str r0, [sp] - add r1, r7, r4 - add r0, sp, #0x14 - str r0, [sp, #4] - add r2, r6, r1 - mov r0, sl - mov r1, sb - mov r3, r5 - str r8, [sp, #8] - bl gpiSendData - cmp r0, #0 - addne sp, sp, #0x1c - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [sp, #0x14] - cmp r0, #0 - subne r5, r5, r0 - addne r4, r4, r0 - cmp r0, #0 - cmpne r5, #0 - bne _021EDBB0 - ldr r0, [sp, #0x40] - cmp r0, #0 - beq _021EDC30 - cmp r4, #0 - ble _021EDC34 - mov r0, r6 - add r1, r6, r4 - add r2, r5, #1 - bl memmove - sub fp, fp, r4 - b _021EDC34 -_021EDC30: - add r7, r7, r4 -_021EDC34: - cmp fp, #0 - bge _021EDC50 - ldr r0, _021EDCC0 ; =0x02217FFC - ldr r1, _021EDCB4 ; =0x02217E90 - ldr r2, _021EDCB8 ; =0x02217E00 - ldr r3, _021EDCC4 ; =0x000001DE - bl __msl_assertion_failed -_021EDC50: - cmp r7, #0 - bge _021EDC6C - ldr r0, _021EDCC8 ; =0x02218008 - ldr r1, _021EDCB4 ; =0x02217E90 - ldr r2, _021EDCB8 ; =0x02217E00 - ldr r3, _021EDCCC ; =0x000001DF - bl __msl_assertion_failed -_021EDC6C: - cmp r7, fp - ble _021EDC88 - ldr r0, _021EDCD0 ; =0x02218014 - ldr r1, _021EDCB4 ; =0x02217E90 - ldr r2, _021EDCB8 ; =0x02217E00 - mov r3, #0x1e0 - bl __msl_assertion_failed -_021EDC88: - ldr r0, [sp, #0xc] - str fp, [r0, #8] - str r7, [r0, #0xc] - ldr r0, [sp, #0x10] - cmp r0, #0 - ldrne r1, [sp, #0x18] - strne r1, [r0] - mov r0, #0 - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_021EDCB0: .word Unk_ov4_02217E78 -_021EDCB4: .word Unk_ov4_02217E90 -_021EDCB8: .word Unk_ov4_02217E00 -_021EDCBC: .word 0x000001B9 -_021EDCC0: .word Unk_ov4_02217FFC -_021EDCC4: .word 0x000001DE -_021EDCC8: .word Unk_ov4_02218008 -_021EDCCC: .word 0x000001DF -_021EDCD0: .word Unk_ov4_02218014 - arm_func_end gpiSendFromBuffer - - arm_func_start gpiReadMessageFromBuffer -gpiReadMessageFromBuffer: ; 0x021EDCD4 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x10 - mov r5, r2 - mov r0, #0 - mov r6, r1 - str r0, [r5, #0] - ldr r1, [r6, #8] - mov r7, r3 - cmp r1, #5 - addlt sp, sp, #0x10 - ldmltia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r6, #0] - mov r1, #0xa - bl strchr - movs r4, r0 - beq _021EDDF8 - ldr r1, _021EDE04 ; =0x02218020 - sub r0, r4, #5 - mov r2, #5 - bl strncmp - cmp r0, #0 - addne sp, sp, #0x10 - movne r0, #3 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, #0 - strb r0, [r4] - ldr r0, [r6, #0] - ldr r1, _021EDE08 ; =0x02218028 - add r2, sp, #0 - mov r3, #0x10 - bl gpiValueForKey - cmp r0, #0 - addeq sp, sp, #0x10 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - add r0, sp, #0 - bl atoi - str r0, [r7, #0] - ldr r0, [r6, #0] - ldr r1, _021EDE0C ; =0x0221802C - add r2, sp, #0 - mov r3, #0x10 - bl gpiValueForKey - cmp r0, #0 - addeq sp, sp, #0x10 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - add r0, sp, #0 - bl atoi - ldr r2, [r6, #0] - add r1, r0, #1 - sub r2, r4, r2 - ldr r3, [r6, #8] - add r2, r1, r2 - cmp r3, r2 - ble _021EDDF0 - ldrsb r2, [r4, r1] - cmp r2, #0 - addne sp, sp, #0x10 - movne r0, #3 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - add r3, r4, #1 - ldr r2, [sp, #0x28] - str r3, [r5, #0] - str r0, [r2, #0] - ldr r0, [r6, #0] - sub r0, r4, r0 - add r0, r1, r0 - add r0, r0, #1 - str r0, [r6, #0xc] - b _021EDDF8 -_021EDDF0: - mov r0, #0xa - strb r0, [r4] -_021EDDF8: - mov r0, #0 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021EDE04: .word Unk_ov4_02218020 -_021EDE08: .word Unk_ov4_02218028 -_021EDE0C: .word Unk_ov4_0221802C - arm_func_end gpiReadMessageFromBuffer - - arm_func_start gpiClipBufferToPosition -gpiClipBufferToPosition: ; 0x021EDE10 - stmfd sp!, {r4, lr} - movs r4, r1 - ldrne r0, [r4] - cmpne r0, #0 - ldrne r1, [r4, #0xc] - cmpne r1, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldr r0, [r4, #8] - subs r2, r0, r1 - str r2, [r4, #8] - beq _021EDE50 - ldr r0, [r4, #0] - ldr r1, [r4, #0xc] - add r1, r0, r1 - bl memmove -_021EDE50: - ldr r2, [r4, #0] - ldr r1, [r4, #8] - mov r0, #0 - strb r0, [r2, r1] - str r0, [r4, #0xc] - ldmia sp!, {r4, pc} - arm_func_end gpiClipBufferToPosition - - .data - - - .global Unk_ov4_02217DF0 -Unk_ov4_02217DF0: ; 0x02217DF0 - .incbin "incbin/overlay4_data.bin", 0x1F70, 0x1F80 - 0x1F70 - - .global Unk_ov4_02217E00 -Unk_ov4_02217E00: ; 0x02217E00 - .incbin "incbin/overlay4_data.bin", 0x1F80, 0x1F94 - 0x1F80 - - .global Unk_ov4_02217E14 -Unk_ov4_02217E14: ; 0x02217E14 - .incbin "incbin/overlay4_data.bin", 0x1F94, 0x1FA8 - 0x1F94 - - .global Unk_ov4_02217E28 -Unk_ov4_02217E28: ; 0x02217E28 - .incbin "incbin/overlay4_data.bin", 0x1FA8, 0x1FC0 - 0x1FA8 - - .global Unk_ov4_02217E40 -Unk_ov4_02217E40: ; 0x02217E40 - .incbin "incbin/overlay4_data.bin", 0x1FC0, 0x1FDC - 0x1FC0 - - .global Unk_ov4_02217E5C -Unk_ov4_02217E5C: ; 0x02217E5C - .incbin "incbin/overlay4_data.bin", 0x1FDC, 0x1FF8 - 0x1FDC - - .global Unk_ov4_02217E78 -Unk_ov4_02217E78: ; 0x02217E78 - .incbin "incbin/overlay4_data.bin", 0x1FF8, 0x2010 - 0x1FF8 - - .global Unk_ov4_02217E90 -Unk_ov4_02217E90: ; 0x02217E90 - .incbin "incbin/overlay4_data.bin", 0x2010, 0x201C - 0x2010 - - .global Unk_ov4_02217E9C -Unk_ov4_02217E9C: ; 0x02217E9C - .incbin "incbin/overlay4_data.bin", 0x201C, 0x202C - 0x201C - - .global Unk_ov4_02217EAC -Unk_ov4_02217EAC: ; 0x02217EAC - .incbin "incbin/overlay4_data.bin", 0x202C, 0x203C - 0x202C - - .global Unk_ov4_02217EBC -Unk_ov4_02217EBC: ; 0x02217EBC - .incbin "incbin/overlay4_data.bin", 0x203C, 0x204C - 0x203C - - .global Unk_ov4_02217ECC -Unk_ov4_02217ECC: ; 0x02217ECC - .incbin "incbin/overlay4_data.bin", 0x204C, 0x2050 - 0x204C - - .global Unk_ov4_02217ED0 -Unk_ov4_02217ED0: ; 0x02217ED0 - .incbin "incbin/overlay4_data.bin", 0x2050, 0x2078 - 0x2050 - - .global Unk_ov4_02217EF8 -Unk_ov4_02217EF8: ; 0x02217EF8 - .incbin "incbin/overlay4_data.bin", 0x2078, 0x209C - 0x2078 - - .global Unk_ov4_02217F1C -Unk_ov4_02217F1C: ; 0x02217F1C - .incbin "incbin/overlay4_data.bin", 0x209C, 0x20C0 - 0x209C - - .global Unk_ov4_02217F40 -Unk_ov4_02217F40: ; 0x02217F40 - .incbin "incbin/overlay4_data.bin", 0x20C0, 0x20C4 - 0x20C0 - - .global Unk_ov4_02217F44 -Unk_ov4_02217F44: ; 0x02217F44 - .incbin "incbin/overlay4_data.bin", 0x20C4, 0x20DC - 0x20C4 - - .global Unk_ov4_02217F5C -Unk_ov4_02217F5C: ; 0x02217F5C - .incbin "incbin/overlay4_data.bin", 0x20DC, 0x20F0 - 0x20DC - - .global Unk_ov4_02217F70 -Unk_ov4_02217F70: ; 0x02217F70 - .incbin "incbin/overlay4_data.bin", 0x20F0, 0x2104 - 0x20F0 - - .global Unk_ov4_02217F84 -Unk_ov4_02217F84: ; 0x02217F84 - .incbin "incbin/overlay4_data.bin", 0x2104, 0x2118 - 0x2104 - - .global Unk_ov4_02217F98 -Unk_ov4_02217F98: ; 0x02217F98 - .incbin "incbin/overlay4_data.bin", 0x2118, 0x2144 - 0x2118 - - .global Unk_ov4_02217FC4 -Unk_ov4_02217FC4: ; 0x02217FC4 - .incbin "incbin/overlay4_data.bin", 0x2144, 0x2168 - 0x2144 - - .global Unk_ov4_02217FE8 -Unk_ov4_02217FE8: ; 0x02217FE8 - .incbin "incbin/overlay4_data.bin", 0x2168, 0x217C - 0x2168 - - .global Unk_ov4_02217FFC -Unk_ov4_02217FFC: ; 0x02217FFC - .incbin "incbin/overlay4_data.bin", 0x217C, 0x2188 - 0x217C - - .global Unk_ov4_02218008 -Unk_ov4_02218008: ; 0x02218008 - .incbin "incbin/overlay4_data.bin", 0x2188, 0x2194 - 0x2188 - - .global Unk_ov4_02218014 -Unk_ov4_02218014: ; 0x02218014 - .incbin "incbin/overlay4_data.bin", 0x2194, 0x21A0 - 0x2194 - - .global Unk_ov4_02218020 -Unk_ov4_02218020: ; 0x02218020 - .incbin "incbin/overlay4_data.bin", 0x21A0, 0x21A8 - 0x21A0 - - .global Unk_ov4_02218028 -Unk_ov4_02218028: ; 0x02218028 - .incbin "incbin/overlay4_data.bin", 0x21A8, 0x21AC - 0x21A8 - - .global Unk_ov4_0221802C -Unk_ov4_0221802C: ; 0x0221802C - .incbin "incbin/overlay4_data.bin", 0x21AC, 0x6 - diff --git a/subprojects/gamespy/libraries/gp/asm/gpicallback.s b/subprojects/gamespy/libraries/gp/asm/gpicallback.s deleted file mode 100644 index b02c9c42aa..0000000000 --- a/subprojects/gamespy/libraries/gp/asm/gpicallback.s +++ /dev/null @@ -1,378 +0,0 @@ - .include "macros/function.inc" - .include "include/gpicallback.inc" - - - - .text - - - arm_func_start gpiCallErrorCallback -gpiCallErrorCallback: ; 0x021EDE68 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r5, [r4, #0] - mov r7, r1 - mov r6, r2 - cmp r5, #0 - bne _021EDE9C - ldr r0, _021EDF48 ; =0x0221805C - ldr r1, _021EDF4C ; =0x02218070 - ldr r2, _021EDF50 ; =0x02218044 - mov r3, #0x23 - bl __msl_assertion_failed -_021EDE9C: - cmp r7, #0 - bne _021EDEB8 - ldr r0, _021EDF54 ; =0x02218080 - ldr r1, _021EDF4C ; =0x02218070 - ldr r2, _021EDF50 ; =0x02218044 - mov r3, #0x24 - bl __msl_assertion_failed -_021EDEB8: - cmp r6, #1 - cmpne r6, #0 - beq _021EDED8 - ldr r0, _021EDF58 ; =0x02218098 - ldr r1, _021EDF4C ; =0x02218070 - ldr r2, _021EDF50 ; =0x02218044 - mov r3, #0x25 - bl __msl_assertion_failed -_021EDED8: - cmp r6, #1 - moveq r0, #1 - streq r0, [r5, #0x41c] - ldr r1, [r5, #0x1a4] - ldr r0, [r5, #0x1a8] - str r1, [sp, #8] - str r0, [sp, #0xc] - cmp r1, #0 - addeq sp, sp, #0x10 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, #0x10 - bl DWCi_GsMalloc - movs r3, r0 - beq _021EDF20 - str r7, [r3, #0] - str r6, [r3, #0xc] - ldr r0, [r5, #0x418] - stmib r3, {r0, r5} -_021EDF20: - mov r2, #0 - str r2, [sp] - mov r2, #1 - add r1, sp, #8 - str r2, [sp, #4] - mov r0, r4 - ldmia r1, {r1, r2} - bl gpiAddCallback - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021EDF48: .word Unk_ov4_0221805C -_021EDF4C: .word Unk_ov4_02218070 -_021EDF50: .word Unk_ov4_02218044 -_021EDF54: .word Unk_ov4_02218080 -_021EDF58: .word Unk_ov4_02218098 - arm_func_end gpiCallErrorCallback - - arm_func_start gpiAddCallback -gpiAddCallback: ; 0x021EDF5C - stmfd sp!, {r0, r1, r2, r3} - stmfd sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r0, #0x18 - mov r5, r3 - ldr r4, [r6, #0] - bl DWCi_GsMalloc - cmp r0, #0 - bne _021EDF9C - ldr r1, _021EDFFC ; =0x022180C8 - mov r0, r6 - bl gpiSetErrorString - mov r0, #1 - ldmia sp!, {r4, r5, r6, lr} - add sp, sp, #0x10 - bx lr -_021EDF9C: - ldr r1, [sp, #0x14] - ldr r2, [sp, #0x18] - str r1, [r0, #0] - ldr r1, [sp, #0x20] - stmib r0, {r2, r5} - cmp r1, #0 - ldrne r1, [r1, #0x18] - ldr r2, [sp, #0x24] - moveq r1, #0 - str r1, [r0, #0x10] - mov r1, #0 - str r2, [r0, #0xc] - str r1, [r0, #0x14] - ldr r1, [r4, #0x438] - cmp r1, #0 - streq r0, [r4, #0x438] - ldr r1, [r4, #0x43c] - cmp r1, #0 - strne r0, [r1, #0x14] - str r0, [r4, #0x43c] - mov r0, #0 - ldmia sp!, {r4, r5, r6, lr} - add sp, sp, #0x10 - bx lr - ; .align 2, 0 -_021EDFFC: .word Unk_ov4_022180C8 - arm_func_end gpiAddCallback - - arm_func_start gpiCallCallback -gpiCallCallback: ; 0x021EE000 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - mov r7, r1 - ldr r1, [r7, #0] - mov r4, r0 - cmp r1, #0 - bne _021EE02C - ldr r0, _021EE1E8 ; =0x022180D8 - ldr r1, _021EE1EC ; =0x02218070 - ldr r2, _021EE1F0 ; =0x02218034 - mov r3, #0x6e - bl __msl_assertion_failed -_021EE02C: - ldr r0, [r7, #8] - cmp r0, #0 - bne _021EE04C - ldr r0, _021EE1F4 ; =0x022180F8 - ldr r1, _021EE1EC ; =0x02218070 - ldr r2, _021EE1F0 ; =0x02218034 - mov r3, #0x6f - bl __msl_assertion_failed -_021EE04C: - ldr r1, [r7, #8] - ldr r2, [r7, #4] - ldr r3, [r7, #0] - mov r0, r4 - blx r3 - ldr r0, [r7, #0xc] - cmp r0, #2 - bne _021EE088 - ldr r0, [r7, #8] - ldr r0, [r0, #8] - bl DWCi_GsFree - ldr r0, [r7, #8] - mov r1, #0 - str r1, [r0, #8] - b _021EE1CC -_021EE088: - cmp r0, #3 - bne _021EE108 - ldr r6, [r7, #8] - mov r5, #0 - ldr r0, [r6, #0x38] - cmp r0, #0 - ble _021EE0E4 - mov r4, r5 - mov r8, r5 -_021EE0AC: - ldr r0, [r6, #0x3c] - ldr r0, [r0, r5, lsl #2] - bl DWCi_GsFree - ldr r0, [r6, #0x3c] - str r4, [r0, r5, lsl #2] - ldr r0, [r6, #0x40] - ldr r0, [r0, r5, lsl #2] - bl DWCi_GsFree - ldr r0, [r6, #0x40] - str r8, [r0, r5, lsl #2] - ldr r0, [r6, #0x38] - add r5, r5, #1 - cmp r5, r0 - blt _021EE0AC -_021EE0E4: - ldr r0, [r6, #0x3c] - bl DWCi_GsFree - mov r0, #0 - str r0, [r6, #0x3c] - ldr r0, [r6, #0x40] - bl DWCi_GsFree - mov r0, #0 - str r0, [r6, #0x40] - b _021EE1CC -_021EE108: - cmp r0, #4 - bne _021EE128 - ldr r4, [r7, #8] - ldr r0, [r4, #0xc] - bl DWCi_GsFree - mov r0, #0 - str r0, [r4, #0xc] - b _021EE1CC -_021EE128: - cmp r0, #7 - bne _021EE150 - ldr r4, [r7, #8] - ldr r0, [r4, #0x10] - cmp r0, #0 - beq _021EE1CC - bl DWCi_GsFree - mov r0, #0 - str r0, [r4, #0x10] - b _021EE1CC -_021EE150: - cmp r0, #8 - bne _021EE178 - ldr r4, [r7, #8] - ldr r0, [r4, #8] - cmp r0, #0 - beq _021EE1CC - bl DWCi_GsFree - mov r0, #0 - str r0, [r4, #8] - b _021EE1CC -_021EE178: - cmp r0, #9 - bne _021EE1CC - ldr r5, [r7, #8] - mov r4, #0 - ldr r0, [r5, #4] - cmp r0, #0 - ble _021EE1BC - mov r6, r4 -_021EE198: - ldr r0, [r5, #8] - ldr r0, [r0, r4, lsl #2] - bl DWCi_GsFree - ldr r0, [r5, #8] - str r6, [r0, r4, lsl #2] - ldr r0, [r5, #4] - add r4, r4, #1 - cmp r4, r0 - blt _021EE198 -_021EE1BC: - ldr r0, [r5, #8] - bl DWCi_GsFree - mov r0, #0 - str r0, [r5, #8] -_021EE1CC: - ldr r0, [r7, #8] - bl DWCi_GsFree - mov r1, #0 - mov r0, r7 - str r1, [r7, #8] - bl DWCi_GsFree - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_021EE1E8: .word Unk_ov4_022180D8 -_021EE1EC: .word Unk_ov4_02218070 -_021EE1F0: .word Unk_ov4_02218034 -_021EE1F4: .word Unk_ov4_022180F8 - arm_func_end gpiCallCallback - - arm_func_start gpiProcessCallbacks -gpiProcessCallbacks: ; 0x021EE1F8 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov sl, r0 - movs sb, r1 - ldr r4, [sl] - beq _021EE294 - ldr r5, [r4, #0x438] - ldr r6, [r4, #0x43c] - mov r7, #0 - str r7, [r4, #0x438] - mov r1, r5 - str r7, [r4, #0x43c] - cmp r5, #0 - beq _021EE274 -_021EE22C: - ldr r0, [r1, #0x10] - ldr r8, [r1, #0x14] - cmp r0, sb - ldrne r0, [r1, #0xc] - cmpne r0, #1 - bne _021EE264 - mov r0, sl - cmp r7, #0 - strne r8, [r7, #0x14] - moveq r5, r8 - cmp r6, r1 - moveq r6, r7 - bl gpiCallCallback - b _021EE268 -_021EE264: - mov r7, r1 -_021EE268: - mov r1, r8 - cmp r8, #0 - bne _021EE22C -_021EE274: - ldr r0, [r4, #0x438] - cmp r0, #0 - ldrne r0, [r4, #0x43c] - strne r5, [r0, #0x14] - streq r5, [r4, #0x438] - str r6, [r4, #0x43c] - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_021EE294: - ldr r1, [r4, #0x438] - cmp r1, #0 - beq _021EE2D8 - mov r5, #0 -_021EE2A4: - str r5, [r4, #0x438] - str r5, [r4, #0x43c] - cmp r1, #0 - beq _021EE2CC -_021EE2B4: - ldr r6, [r1, #0x14] - mov r0, sl - bl gpiCallCallback - mov r1, r6 - cmp r6, #0 - bne _021EE2B4 -_021EE2CC: - ldr r1, [r4, #0x438] - cmp r1, #0 - bne _021EE2A4 -_021EE2D8: - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - arm_func_end gpiProcessCallbacks - - .data - - - .global Unk_ov4_02218034 -Unk_ov4_02218034: ; 0x02218034 - .incbin "incbin/overlay4_data.bin", 0x21B4, 0x21C4 - 0x21B4 - - .global Unk_ov4_02218044 -Unk_ov4_02218044: ; 0x02218044 - .incbin "incbin/overlay4_data.bin", 0x21C4, 0x21DC - 0x21C4 - - .global Unk_ov4_0221805C -Unk_ov4_0221805C: ; 0x0221805C - .incbin "incbin/overlay4_data.bin", 0x21DC, 0x21F0 - 0x21DC - - .global Unk_ov4_02218070 -Unk_ov4_02218070: ; 0x02218070 - .incbin "incbin/overlay4_data.bin", 0x21F0, 0x2200 - 0x21F0 - - .global Unk_ov4_02218080 -Unk_ov4_02218080: ; 0x02218080 - .incbin "incbin/overlay4_data.bin", 0x2200, 0x2218 - 0x2200 - - .global Unk_ov4_02218098 -Unk_ov4_02218098: ; 0x02218098 - .incbin "incbin/overlay4_data.bin", 0x2218, 0x2248 - 0x2218 - - .global Unk_ov4_022180C8 -Unk_ov4_022180C8: ; 0x022180C8 - .incbin "incbin/overlay4_data.bin", 0x2248, 0x2258 - 0x2248 - - .global Unk_ov4_022180D8 -Unk_ov4_022180D8: ; 0x022180D8 - .incbin "incbin/overlay4_data.bin", 0x2258, 0x2278 - 0x2258 - - .global Unk_ov4_022180F8 -Unk_ov4_022180F8: ; 0x022180F8 - .incbin "incbin/overlay4_data.bin", 0x2278, 0x12 - diff --git a/subprojects/gamespy/libraries/gp/asm/gpiconnect.s b/subprojects/gamespy/libraries/gp/asm/gpiconnect.s deleted file mode 100644 index cc1dff791d..0000000000 --- a/subprojects/gamespy/libraries/gp/asm/gpiconnect.s +++ /dev/null @@ -1,1775 +0,0 @@ - .include "macros/function.inc" - .include "include/gpiconnect.inc" - - - - .text - - - arm_func_start randomString -randomString: ; 0x021EE2E0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r8, r1 - mov sb, r0 - cmp r8, #0 - mov r7, #0 - ble _021EE334 - ldr r6, _021EE340 ; =0x0221816C - ldr r5, _021EE344 ; =0x08421085 - mov r4, #0x3e -_021EE304: - bl rand - umull r1, r2, r0, r5 - sub r1, r0, r2 - add r2, r2, r1, lsr #1 - mov r2, r2, lsr #5 - umull r1, r2, r4, r2 - sub r2, r0, r1 - ldrsb r0, [r6, r2] - strb r0, [sb, r7] - add r7, r7, #1 - cmp r7, r8 - blt _021EE304 -_021EE334: - mov r0, #0 - strb r0, [sb, r7] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ; .align 2, 0 -_021EE340: .word Unk_ov4_0221816C -_021EE344: .word 0x08421085 - arm_func_end randomString - - arm_func_start gpiStartConnect -gpiStartConnect: ; 0x021EE348 - stmfd sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0xc - mov r6, r0 - ldr r4, [r6, #0] - mov r5, r1 - ldr r0, [r4, #0x10c] - cmp r0, #0 - bne _021EE4E8 - mov r0, #2 - mov r1, #1 - mov r2, #0 - bl socket - mvn r1, #0 - str r0, [r4, #0x204] - cmp r0, r1 - bne _021EE3B4 - ldr r2, _021EE68C ; =0x022181AC - mov r0, r6 - mov r1, #5 - bl gpiSetError - mov r0, r6 - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0xc - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, pc} -_021EE3B4: - mov r1, #0 - bl SetSockBlocking - cmp r0, #0 - bne _021EE3F0 - ldr r2, _021EE690 ; =0x022181D4 - mov r0, r6 - mov r1, #5 - bl gpiSetError - mov r0, r6 - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0xc - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, pc} -_021EE3F0: - add r1, sp, #4 - mov r2, #0 - str r2, [r1, #0] - mov r0, #2 - str r2, [r1, #4] - strb r0, [sp, #5] - ldr r0, [r4, #0x204] - mov r2, #8 - bl bind - mvn r1, #0 - cmp r0, r1 - mov r1, #5 - bne _021EE44C - ldr r2, _021EE694 ; =0x02218208 - mov r0, r6 - bl gpiSetError - mov r0, r6 - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0xc - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, pc} -_021EE44C: - ldr r0, [r4, #0x204] - bl listen - mvn r1, #0 - cmp r0, r1 - bne _021EE48C - ldr r2, _021EE698 ; =0x02218230 - mov r0, r6 - mov r1, #5 - bl gpiSetError - mov r0, r6 - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0xc - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, pc} -_021EE48C: - mov r0, #8 - str r0, [sp] - ldr r0, [r4, #0x204] - add r1, sp, #4 - add r2, sp, #0 - bl getsockname - mvn r1, #0 - cmp r0, r1 - bne _021EE4DC - ldr r2, _021EE69C ; =0x0221825C - mov r0, r6 - mov r1, #5 - bl gpiSetError - mov r0, r6 - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0xc - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, pc} -_021EE4DC: - ldrh r0, [sp, #6] - str r0, [r4, #0x208] - b _021EE4F8 -_021EE4E8: - mvn r0, #0 - str r0, [r4, #0x204] - mov r0, #0 - str r0, [r4, #0x208] -_021EE4F8: - mov r0, #2 - mov r1, #1 - mov r2, #0 - bl socket - mvn r1, #0 - str r0, [r4, #0x1d4] - cmp r0, r1 - bne _021EE544 - ldr r2, _021EE68C ; =0x022181AC - mov r0, r6 - mov r1, #5 - bl gpiSetError - mov r0, r6 - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0xc - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, pc} -_021EE544: - mov r1, #0 - bl SetSockBlocking - cmp r0, #0 - bne _021EE580 - ldr r2, _021EE690 ; =0x022181D4 - mov r0, r6 - mov r1, #5 - bl gpiSetError - mov r0, r6 - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0xc - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, pc} -_021EE580: - ldr r0, _021EE6A0 ; =0x0221812C - bl SOC_GetHostByName - cmp r0, #0 - bne _021EE5BC - ldr r2, _021EE6A4 ; =0x0221828C - mov r0, r6 - mov r1, #5 - bl gpiSetError - mov r0, r6 - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0xc - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, pc} -_021EE5BC: - add r3, sp, #4 - mov r2, #0 - str r2, [r3, #0] - mov r1, #2 - str r2, [r3, #4] - strb r1, [sp, #5] - ldr r0, [r0, #0xc] - ldr r0, [r0, #0] - ldr r0, [r0, #0] - str r0, [sp, #8] - cmp r0, #0 - bne _021EE600 - ldr r0, _021EE6A8 ; =0x022182C0 - ldr r1, _021EE6AC ; =0x022182E0 - ldr r2, _021EE6B0 ; =0x0221810C - mov r3, #0x90 - bl __msl_assertion_failed -_021EE600: - ldr r0, _021EE6B4 ; =0x0000CC74 - add r1, sp, #4 - strh r0, [sp, #6] - ldr r0, [r4, #0x1d4] - mov r2, #8 - bl connect - mvn r1, #0 - cmp r0, r1 - bne _021EE674 - ldr r0, [r4, #0x1d4] - bl GOAGetLastError - mvn r2, #5 - cmp r0, r2 - subne r1, r2, #0x14 - cmpne r0, r1 - subne r1, r2, #0x46 - cmpne r0, r1 - beq _021EE674 - ldr r2, _021EE6B8 ; =0x022182F0 - mov r0, r6 - mov r1, #5 - bl gpiSetError - mov r0, r6 - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0xc - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, pc} -_021EE674: - mov r0, #1 - str r0, [r5, #0x14] - str r0, [r4, #0x1d8] - mov r0, #0 - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, pc} - ; .align 2, 0 -_021EE68C: .word Unk_ov4_022181AC -_021EE690: .word Unk_ov4_022181D4 -_021EE694: .word Unk_ov4_02218208 -_021EE698: .word Unk_ov4_02218230 -_021EE69C: .word Unk_ov4_0221825C -_021EE6A0: .word GPConnectionManagerHostname -_021EE6A4: .word Unk_ov4_0221828C -_021EE6A8: .word Unk_ov4_022182C0 -_021EE6AC: .word Unk_ov4_022182E0 -_021EE6B0: .word Unk_ov4_0221810C -_021EE6B4: .word 0x0000CC74 -_021EE6B8: .word Unk_ov4_022182F0 - arm_func_end gpiStartConnect - - arm_func_start gpiConnect -gpiConnect: ; 0x021EE6BC - stmfd sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x10 - mov r8, r0 - ldr r4, [r8] - mov r7, r1 - ldr r1, [r4, #0x1d8] - mov r6, r2 - mov r5, r3 - cmp r1, #4 - bne _021EE6F4 - bl gpiReset - cmp r0, #0 - addne sp, sp, #0x10 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} -_021EE6F4: - ldr r0, [r4, #0x1d8] - cmp r0, #0 - beq _021EE718 - ldr r1, _021EE8F4 ; =0x02218318 - mov r0, r8 - bl gpiSetErrorString - add sp, sp, #0x10 - mov r0, #2 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_021EE718: - ldr r0, [sp, #0x38] - cmp r0, #0 - beq _021EE738 - cmp r0, #1 - bne _021EE744 - mov r0, #1 - str r0, [r4, #0x10c] - b _021EE75C -_021EE738: - mov r0, #0 - str r0, [r4, #0x10c] - b _021EE75C -_021EE744: - ldr r1, _021EE8F8 ; =0x0221832C - mov r0, r8 - bl gpiSetErrorString - add sp, sp, #0x10 - mov r0, #2 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_021EE75C: - mov r3, #1 - mov r1, r7 - add r0, r4, #0x110 - mov r2, #0x1f - str r3, [r4, #0x10c] - bl strzcpy - add r0, r4, #0x2f - mov r1, r6 - add r0, r0, #0x100 - mov r2, #0x15 - bl strzcpy - mov r1, r5 - add r0, r4, #0x144 - mov r2, #0x33 - bl strzcpy - add r0, r4, #0x77 - ldr r1, [sp, #0x28] - add r0, r0, #0x100 - mov r2, #0x1f - bl strzcpy - add r0, r4, #0x144 - bl _strlwr - mov r0, #0x308 - bl DWCi_GsMalloc - movs r4, r0 - bne _021EE7DC - ldr r1, _021EE8FC ; =0x02218340 - mov r0, r8 - bl gpiSetErrorString - add sp, sp, #0x10 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_021EE7DC: - mov r1, #0 - mov r2, #0x308 - bl memset - ldr r0, [sp, #0x3c] - ldr r1, [sp, #0x2c] - str r0, [r4, #0x304] - ldrsb r0, [r1] - cmp r0, #0 - ldrne r0, [sp, #0x30] - ldrnesb r0, [r0] - cmpne r0, #0 - beq _021EE82C - add r0, r4, #0xc2 - mov r2, #0x100 - bl strzcpy - add r0, r4, #0xc2 - ldr r1, [sp, #0x30] - add r0, r0, #0x100 - mov r2, #0x100 - bl strzcpy -_021EE82C: - ldr r1, [sp, #0x34] - cmp r1, #0 - beq _021EE848 - add r0, r4, #0xc2 - add r0, r0, #0x200 - mov r2, #0x41 - bl strzcpy -_021EE848: - ldr r1, [sp, #0x40] - ldr r0, [sp, #0x44] - str r1, [sp] - str r0, [sp, #4] - ldr r5, [sp, #0x48] - add r3, sp, #0xc - mov r0, r8 - mov r2, r4 - mov r1, #0 - str r5, [sp, #8] - bl gpiAddOperation - cmp r0, #0 - addne sp, sp, #0x10 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - ldr r1, [sp, #0xc] - mov r0, r8 - bl gpiStartConnect - movs r4, r0 - beq _021EE8C0 - ldr r1, [sp, #0xc] - mov r0, r8 - str r4, [r1, #0x1c] - ldr r1, [sp, #0xc] - bl gpiFailedOpCallback - mov r0, r8 - mov r1, #0 - bl gpiDisconnect - add sp, sp, #0x10 - mov r0, r4 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_021EE8C0: - ldr r1, [sp, #0xc] - ldr r0, [r1, #8] - cmp r0, #0 - beq _021EE8E8 - ldr r1, [r1, #0x18] - mov r0, r8 - bl gpiProcess - cmp r0, #0 - addne sp, sp, #0x10 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} -_021EE8E8: - mov r0, #0 - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_021EE8F4: .word Unk_ov4_02218318 -_021EE8F8: .word Unk_ov4_0221832C -_021EE8FC: .word Unk_ov4_02218340 - arm_func_end gpiConnect - - arm_func_start gpiSendLogin -gpiSendLogin: ; 0x021EE900 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x288 - mov r5, r1 - mov r6, r0 - add r0, r5, #0x80 - mov r1, #0x20 - ldr r4, [r6, #0] - bl randomString - add r0, r5, #0x100 - ldrsb r0, [r0, #0xc2] - cmp r0, #0 - addne r0, r5, #0xc2 - addeq r0, r4, #0x77 - add r7, r0, #0x100 - mov r0, r7 - bl strlen - mov r1, r0 - mov r0, r7 - add r2, r5, #0xa1 - bl MD5Digest - ldrsb r0, [r5, #0xc2] - cmp r0, #0 - addne r0, r5, #0xc2 - bne _021EE990 - add r0, r4, #0x100 - ldrsb r0, [r0, #0x2f] - cmp r0, #0 - addne r0, r4, #0x2f - addne r0, r0, #0x100 - bne _021EE990 - ldr r1, _021EEC54 ; =0x02218350 - add r0, sp, #0x35 - add r2, r4, #0x110 - add r3, r4, #0x144 - bl sprintf - add r0, sp, #0x35 -_021EE990: - str r0, [sp] - add r0, r5, #0x80 - str r0, [sp, #4] - ldr r1, _021EEC58 ; =0x02218358 - ldr r3, _021EEC5C ; =0x02218368 - add r0, sp, #0x87 - str r5, [sp, #8] - add r2, r5, #0xa1 - str r2, [sp, #0xc] - bl sprintf - add r0, sp, #0x87 - bl strlen - mov r1, r0 - add r0, sp, #0x87 - add r2, sp, #0x14 - bl MD5Digest - ldr r0, [r4, #0x100] - cmp r0, #0 - beq _021EEA10 - add r3, sp, #0x10 - mov r0, r6 - add r1, r4, #0x110 - add r2, r4, #0x144 - bl gpiFindProfileByUser - ldr r0, [sp, #0x10] - cmp r0, #0 - beq _021EEA10 - ldr r0, [r0, #4] - str r0, [r4, #0x19c] - ldr r0, [sp, #0x10] - ldr r0, [r0, #0] - str r0, [r4, #0x1a0] -_021EEA10: - ldr r2, _021EEC60 ; =0x0221839C - mov r0, r6 - add r1, r4, #0x1f4 - bl gpiAppendStringToBuffer - ldr r2, _021EEC64 ; =0x022183A4 - mov r0, r6 - add r1, r4, #0x1f4 - bl gpiAppendStringToBuffer - mov r0, r6 - add r1, r4, #0x1f4 - add r2, r5, #0x80 - bl gpiAppendStringToBuffer - ldrsb r0, [r5, #0xc2] - cmp r0, #0 - beq _021EEA70 - ldr r2, _021EEC68 ; =0x022183B0 - mov r0, r6 - add r1, r4, #0x1f4 - bl gpiAppendStringToBuffer - mov r0, r6 - add r1, r4, #0x1f4 - add r2, r5, #0xc2 - bl gpiAppendStringToBuffer - b _021EEAE8 -_021EEA70: - add r0, r4, #0x100 - ldrsb r0, [r0, #0x2f] - cmp r0, #0 - beq _021EEAA8 - ldr r2, _021EEC6C ; =0x022183BC - mov r0, r6 - add r1, r4, #0x1f4 - bl gpiAppendStringToBuffer - add r2, r4, #0x2f - mov r0, r6 - add r1, r4, #0x1f4 - add r2, r2, #0x100 - bl gpiAppendStringToBuffer - b _021EEAE8 -_021EEAA8: - ldr r2, _021EEC70 ; =0x022183CC - mov r0, r6 - add r1, r4, #0x1f4 - bl gpiAppendStringToBuffer - mov r0, r6 - add r1, r4, #0x1f4 - add r2, r4, #0x110 - bl gpiAppendStringToBuffer - ldr r2, _021EEC74 ; =0x022183D4 - mov r0, r6 - add r1, r4, #0x1f4 - bl gpiAppendStringToBuffer - mov r0, r6 - add r1, r4, #0x1f4 - add r2, r4, #0x144 - bl gpiAppendStringToBuffer -_021EEAE8: - ldr r0, [r4, #0x19c] - cmp r0, #0 - beq _021EEB14 - ldr r2, _021EEC78 ; =0x022183D8 - mov r0, r6 - add r1, r4, #0x1f4 - bl gpiAppendStringToBuffer - ldr r2, [r4, #0x19c] - mov r0, r6 - add r1, r4, #0x1f4 - bl gpiAppendIntToBuffer -_021EEB14: - ldr r0, [r4, #0x1a0] - cmp r0, #0 - beq _021EEB40 - ldr r2, _021EEC7C ; =0x022183E4 - mov r0, r6 - add r1, r4, #0x1f4 - bl gpiAppendStringToBuffer - ldr r2, [r4, #0x1a0] - mov r0, r6 - add r1, r4, #0x1f4 - bl gpiAppendIntToBuffer -_021EEB40: - ldr r2, _021EEC80 ; =0x022183F0 - mov r0, r6 - add r1, r4, #0x1f4 - bl gpiAppendStringToBuffer - add r2, sp, #0x14 - mov r0, r6 - add r1, r4, #0x1f4 - bl gpiAppendStringToBuffer - ldr r0, [r4, #0x10c] - cmp r0, #1 - bne _021EEB7C - ldr r2, _021EEC84 ; =0x022183FC - mov r0, r6 - add r1, r4, #0x1f4 - bl gpiAppendStringToBuffer -_021EEB7C: - ldr r2, _021EEC88 ; =0x02218408 - mov r0, r6 - add r1, r4, #0x1f4 - bl gpiAppendStringToBuffer - ldr r1, [r4, #0x208] - mov r0, r6 - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 - mov r2, r1, asr #8 - mov r1, r1, lsl #8 - and r2, r2, #0xff - and r1, r1, #0xff00 - orr r1, r2, r1 - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 - mov r2, r1, lsl #0x10 - add r1, r4, #0x1f4 - mov r2, r2, asr #0x10 - bl gpiAppendIntToBuffer - ldr r2, _021EEC8C ; =0x02218410 - mov r0, r6 - add r1, r4, #0x1f4 - bl gpiAppendStringToBuffer - ldr r2, [r4, #0x46c] - mov r0, r6 - add r1, r4, #0x1f4 - bl gpiAppendIntToBuffer - mov r0, r6 - add r1, r4, #0x1f4 - ldr r2, _021EEC90 ; =0x0221841C - bl gpiAppendStringToBuffer - mov r0, r6 - add r1, r4, #0x1f4 - ldr r2, _021EEC94 ; =0x0221AEEC - bl gpiAppendStringToBuffer - mov r0, r6 - add r1, r4, #0x1f4 - ldr r2, _021EEC98 ; =0x02218428 - bl gpiAppendStringToBuffer - mov r0, r6 - add r1, r4, #0x1f4 - ldr r2, [r4, #0x470] - bl gpiAppendIntToBuffer - mov r0, r6 - add r1, r4, #0x1f4 - ldr r2, _021EEC9C ; =0x02218438 - bl gpiAppendStringToBuffer - mov r0, r6 - add r1, r4, #0x1f4 - ldr r2, _021EECA0 ; =0x02218440 - bl gpiAppendStringToBuffer - mov r0, #0 - add sp, sp, #0x288 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021EEC54: .word Unk_ov4_02218350 -_021EEC58: .word Unk_ov4_02218358 -_021EEC5C: .word Unk_ov4_02218368 -_021EEC60: .word Unk_ov4_0221839C -_021EEC64: .word Unk_ov4_022183A4 -_021EEC68: .word Unk_ov4_022183B0 -_021EEC6C: .word Unk_ov4_022183BC -_021EEC70: .word Unk_ov4_022183CC -_021EEC74: .word Unk_ov4_022183D4 -_021EEC78: .word Unk_ov4_022183D8 -_021EEC7C: .word Unk_ov4_022183E4 -_021EEC80: .word Unk_ov4_022183F0 -_021EEC84: .word Unk_ov4_022183FC -_021EEC88: .word Unk_ov4_02218408 -_021EEC8C: .word Unk_ov4_02218410 -_021EEC90: .word Unk_ov4_0221841C -_021EEC94: .word 0x0221AEEC -_021EEC98: .word Unk_ov4_02218428 -_021EEC9C: .word Unk_ov4_02218438 -_021EECA0: .word Unk_ov4_02218440 - arm_func_end gpiSendLogin - - arm_func_start gpiSendNewuser -gpiSendNewuser: ; 0x021EECA4 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xe8 - mov sl, r0 - ldr r5, [sl] - mov sb, r1 - add r0, r5, #0x77 - add r0, r0, #0x100 - bl strlen - mov r7, r0 - ldr r0, _021EEEFC ; =0x79707367 - bl Util_RandSeed - cmp r7, #0 - mov r6, #0 - bls _021EED18 - add r8, sp, #0x2d - mov r4, r6 - mov fp, #0xff -_021EECE8: - mov r0, r4 - mov r1, fp - bl Util_RandInt - add r1, r5, r6 - add r1, r1, #0x100 - add r6, r6, #1 - ldrsb r1, [r1, #0x77] - mov r0, r0, lsl #0x18 - cmp r6, r7 - eor r0, r1, r0, asr #24 - strb r0, [r8], #1 - blo _021EECE8 -_021EED18: - add r0, sp, #0x2d - mov r4, #0 - add r1, sp, #0 - mov r2, r7 - mov r3, #1 - strb r4, [r0, r6] - bl B64Encode - ldr r2, _021EEF00 ; =0x02218448 - mov r0, sl - add r1, r5, #0x1f4 - bl gpiAppendStringToBuffer - ldr r2, _021EEF04 ; =0x02218454 - mov r0, sl - add r1, r5, #0x1f4 - bl gpiAppendStringToBuffer - mov r0, sl - add r1, r5, #0x1f4 - add r2, r5, #0x144 - bl gpiAppendStringToBuffer - ldr r2, _021EEF08 ; =0x0221845C - mov r0, sl - add r1, r5, #0x1f4 - bl gpiAppendStringToBuffer - mov r0, sl - add r1, r5, #0x1f4 - add r2, r5, #0x110 - bl gpiAppendStringToBuffer - ldr r2, _021EEF0C ; =0x02218464 - mov r0, sl - add r1, r5, #0x1f4 - bl gpiAppendStringToBuffer - mov r0, sl - add r1, r5, #0x1f4 - add r2, sp, #0 - bl gpiAppendStringToBuffer - ldr r2, _021EEF10 ; =0x02218410 - mov r0, sl - add r1, r5, #0x1f4 - bl gpiAppendStringToBuffer - ldr r2, [r5, #0x46c] - mov r0, sl - add r1, r5, #0x1f4 - bl gpiAppendIntToBuffer - ldr r2, _021EEF14 ; =0x0221841C - mov r0, sl - add r1, r5, #0x1f4 - bl gpiAppendStringToBuffer - ldr r2, _021EEF18 ; =0x0221AEEC - mov r0, sl - add r1, r5, #0x1f4 - bl gpiAppendStringToBuffer - ldr r2, _021EEF1C ; =0x02218428 - mov r0, sl - add r1, r5, #0x1f4 - bl gpiAppendStringToBuffer - ldr r2, [r5, #0x470] - mov r0, sl - add r1, r5, #0x1f4 - bl gpiAppendIntToBuffer - ldr r2, _021EEF20 ; =0x022183BC - mov r0, sl - add r1, r5, #0x1f4 - bl gpiAppendStringToBuffer - add r2, r5, #0x2f - mov r0, sl - add r1, r5, #0x1f4 - add r2, r2, #0x100 - bl gpiAppendStringToBuffer - add r0, sb, #0x200 - ldrsb r0, [r0, #0xc2] - cmp r0, #0 - beq _021EEED0 - add r0, sb, #0xc2 - add r0, r0, #0x200 - bl strlen - mov r6, r0 - ldr r0, _021EEEFC ; =0x79707367 - bl Util_RandSeed - cmp r6, #0 - mov r8, r4 - bls _021EEE94 - add r7, sp, #0xa6 - mov fp, #0xff -_021EEE64: - mov r0, r4 - mov r1, fp - bl Util_RandInt - add r1, sb, r8 - add r1, r1, #0x200 - add r8, r8, #1 - ldrsb r1, [r1, #0xc2] - mov r0, r0, lsl #0x18 - cmp r8, r6 - eor r0, r1, r0, asr #24 - strb r0, [r7], #1 - blo _021EEE64 -_021EEE94: - add r0, sp, #0xa6 - mov r4, #0 - add r1, sp, #0x4c - mov r2, r6 - mov r3, #1 - strb r4, [r0, r8] - bl B64Encode - ldr r2, _021EEF24 ; =0x02218474 - mov r0, sl - add r1, r5, #0x1f4 - bl gpiAppendStringToBuffer - add r2, sp, #0x4c - mov r0, sl - add r1, r5, #0x1f4 - bl gpiAppendStringToBuffer -_021EEED0: - ldr r2, _021EEF28 ; =0x02218438 - mov r0, sl - add r1, r5, #0x1f4 - bl gpiAppendStringToBuffer - ldr r2, _021EEF2C ; =0x02218440 - mov r0, sl - add r1, r5, #0x1f4 - bl gpiAppendStringToBuffer - mov r0, #0 - add sp, sp, #0xe8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_021EEEFC: .word 0x79707367 -_021EEF00: .word Unk_ov4_02218448 -_021EEF04: .word Unk_ov4_02218454 -_021EEF08: .word Unk_ov4_0221845C -_021EEF0C: .word Unk_ov4_02218464 -_021EEF10: .word Unk_ov4_02218410 -_021EEF14: .word Unk_ov4_0221841C -_021EEF18: .word 0x0221AEEC -_021EEF1C: .word Unk_ov4_02218428 -_021EEF20: .word Unk_ov4_022183BC -_021EEF24: .word Unk_ov4_02218474 -_021EEF28: .word Unk_ov4_02218438 -_021EEF2C: .word Unk_ov4_02218440 - arm_func_end gpiSendNewuser - - arm_func_start gpiProcessConnect -gpiProcessConnect: ; 0x021EEF30 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x2a0 - mov r6, r2 - mov r8, r0 - mov r7, r1 - mov r1, r6 - mov r2, #0 - ldr r5, [r8] - bl gpiCheckForError - cmp r0, #0 - beq _021EF028 - ldr r2, [r5, #0x418] - ldr r0, _021EF5A0 ; =0x00000106 - cmp r2, r0 - bne _021EEF90 - ldr r1, [r5, #0x1a0] - cmp r1, #0 - beq _021EEF90 - mov r0, r8 - bl gpiRemoveProfileByID - mov r0, #0 - str r0, [r5, #0x19c] - str r0, [r5, #0x1a0] - b _021EEFC4 -_021EEF90: - ldr r0, _021EF5A4 ; =0x00000201 - cmp r2, r0 - bne _021EEFC4 - ldr r1, _021EF5A8 ; =0x02218480 - add r2, sp, #0xa0 - mov r0, r6 - mov r3, #0x200 - bl gpiValueForKey - cmp r0, #0 - beq _021EEFC4 - add r0, sp, #0xa0 - bl atoi - str r0, [r5, #0x1a0] -_021EEFC4: - ldr r1, _021EF5AC ; =0x02218488 - mov r0, r6 - bl strstr - cmp r0, #0 - ldr r1, [r5, #0x418] - mov r0, r8 - beq _021EF004 - mov r2, r5 - bl gpiSetError - mov r0, r8 - mov r1, #4 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x2a0 - mov r0, #4 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_021EF004: - mov r2, r5 - bl gpiSetError - mov r0, r8 - mov r1, #4 - mov r2, #0 - bl gpiCallErrorCallback - add sp, sp, #0x2a0 - mov r0, #4 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_021EF028: - ldr r0, [r7, #0x14] - ldr r4, [r7, #4] - cmp r0, #1 - beq _021EF04C - cmp r0, #2 - beq _021EF234 - cmp r0, #3 - beq _021EF124 - b _021EF594 -_021EF04C: - ldr r1, _021EF5B0 ; =0x02218490 - mov r0, r6 - mov r2, #5 - bl strncmp - cmp r0, #0 - beq _021EF090 - ldr r2, _021EF5B4 ; =0x02218498 - mov r0, r8 - mov r1, #1 - bl gpiSetError - mov r0, r8 - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x2a0 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_021EF090: - ldr r1, _021EF5B8 ; =0x022183A4 - mov r0, r6 - mov r2, r4 - mov r3, #0x80 - bl gpiValueForKey - cmp r0, #0 - bne _021EF0D8 - ldr r2, _021EF5B4 ; =0x02218498 - mov r0, r8 - mov r1, #1 - bl gpiSetError - mov r0, r8 - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x2a0 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_021EF0D8: - ldr r0, [r4, #0x304] - mov r1, r4 - cmp r0, #0 - mov r0, r8 - beq _021EF108 - bl gpiSendNewuser - cmp r0, #0 - addne sp, sp, #0x2a0 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, #3 - str r0, [r7, #0x14] - b _021EF594 -_021EF108: - bl gpiSendLogin - cmp r0, #0 - addne sp, sp, #0x2a0 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, #2 - str r0, [r7, #0x14] - b _021EF594 -_021EF124: - ldr r1, _021EF5BC ; =0x022184C8 - mov r0, r6 - mov r2, #5 - bl strncmp - cmp r0, #0 - beq _021EF168 - ldr r2, _021EF5B4 ; =0x02218498 - mov r0, r8 - mov r1, #1 - bl gpiSetError - mov r0, r8 - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x2a0 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_021EF168: - ldr r1, _021EF5C0 ; =0x022183D8 - add r2, sp, #0xa0 - mov r0, r6 - mov r3, #0x200 - bl gpiValueForKey - cmp r0, #0 - bne _021EF1B0 - ldr r2, _021EF5C4 ; =0x022184D0 - mov r0, r8 - mov r1, #1 - bl gpiSetError - mov r0, r8 - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x2a0 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_021EF1B0: - add r0, sp, #0xa0 - bl atoi - str r0, [r5, #0x19c] - ldr r1, _021EF5C8 ; =0x022183E4 - add r2, sp, #0xa0 - mov r0, r6 - mov r3, #0x200 - bl gpiValueForKey - cmp r0, #0 - bne _021EF204 - ldr r2, _021EF5C4 ; =0x022184D0 - mov r0, r8 - mov r1, #1 - bl gpiSetError - mov r0, r8 - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x2a0 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_021EF204: - add r0, sp, #0xa0 - bl atoi - str r0, [r5, #0x1a0] - mov r0, r8 - mov r1, r4 - bl gpiSendLogin - cmp r0, #0 - addne sp, sp, #0x2a0 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, #2 - str r0, [r7, #0x14] - b _021EF594 -_021EF234: - ldr r1, _021EF5CC ; =0x02218500 - mov r0, r6 - mov r2, #5 - bl strncmp - cmp r0, #0 - beq _021EF278 - ldr r2, _021EF5B4 ; =0x02218498 - mov r0, r8 - mov r1, #1 - bl gpiSetError - mov r0, r8 - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x2a0 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_021EF278: - ldr r1, _021EF5D0 ; =0x02218508 - add r2, sp, #0xa0 - mov r0, r6 - mov r3, #0x200 - bl gpiValueForKey - cmp r0, #0 - bne _021EF2C0 - ldr r2, _021EF5C4 ; =0x022184D0 - mov r0, r8 - mov r1, #1 - bl gpiSetError - mov r0, r8 - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x2a0 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_021EF2C0: - add r0, sp, #0xa0 - bl atoi - str r0, [r5, #0x198] - ldr r1, _021EF5C0 ; =0x022183D8 - add r2, sp, #0xa0 - mov r0, r6 - mov r3, #0x200 - bl gpiValueForKey - cmp r0, #0 - bne _021EF314 - ldr r2, _021EF5C4 ; =0x022184D0 - mov r0, r8 - mov r1, #1 - bl gpiSetError - mov r0, r8 - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x2a0 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_021EF314: - add r0, sp, #0xa0 - bl atoi - str r0, [r5, #0x19c] - ldr r1, _021EF5C8 ; =0x022183E4 - add r2, sp, #0xa0 - mov r0, r6 - mov r3, #0x200 - bl gpiValueForKey - cmp r0, #0 - bne _021EF368 - ldr r2, _021EF5C4 ; =0x022184D0 - mov r0, r8 - mov r1, #1 - bl gpiSetError - mov r0, r8 - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x2a0 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_021EF368: - add r0, sp, #0xa0 - bl atoi - str r0, [r5, #0x1a0] - ldr r1, _021EF5D4 ; =0x022183BC - add r2, sp, #0x18 - mov r0, r6 - mov r3, #0x15 - bl gpiValueForKey - cmp r0, #0 - moveq r0, #0 - add r2, r5, #0x74 - streqb r0, [sp, #0x18] - ldr r1, _021EF5D8 ; =0x02218514 - mov r0, r6 - add r2, r2, #0x400 - mov r3, #0x19 - bl gpiValueForKey - cmp r0, #0 - moveq r0, #0 - streqb r0, [r5, #0x474] - ldrsb r0, [r4, #0xc2] - cmp r0, #0 - addne r0, r4, #0xc2 - bne _021EF3F8 - add r0, r5, #0x100 - ldrsb r0, [r0, #0x2f] - cmp r0, #0 - addne r0, r5, #0x2f - addne r0, r0, #0x100 - bne _021EF3F8 - ldr r1, _021EF5DC ; =0x02218350 - add r0, sp, #0x4e - add r2, r5, #0x110 - add r3, r5, #0x144 - bl sprintf - add r0, sp, #0x4e -_021EF3F8: - stmia sp, {r0, r4} - add r2, r4, #0x80 - str r2, [sp, #8] - add r2, r4, #0xa1 - ldr r1, _021EF5E0 ; =0x02218358 - ldr r3, _021EF5E4 ; =0x02218368 - add r0, sp, #0xa0 - str r2, [sp, #0xc] - bl sprintf - add r0, sp, #0xa0 - bl strlen - mov r1, r0 - add r0, sp, #0xa0 - add r2, sp, #0x2d - bl MD5Digest - ldr r1, _021EF5E8 ; =0x0221851C - mov r0, r6 - add r2, sp, #0xa0 - mov r3, #0x200 - bl gpiValueForKey - cmp r0, #0 - bne _021EF47C - ldr r2, _021EF5C4 ; =0x022184D0 - mov r0, r8 - mov r1, #1 - bl gpiSetError - mov r0, r8 - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x2a0 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_021EF47C: - add r0, sp, #0x2d - add r1, sp, #0xa0 - mov r2, #0x20 - bl memcmp - cmp r0, #0 - beq _021EF4C0 - ldr r2, _021EF5EC ; =0x02218524 - mov r0, r8 - mov r1, #0x108 - bl gpiSetError - mov r0, r8 - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x2a0 - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_021EF4C0: - ldr r0, [r5, #0x100] - cmp r0, #0 - beq _021EF4E8 - ldr r1, [r5, #0x1a0] - mov r0, r8 - bl gpiProfileListAdd - ldr r1, [r5, #0x1a0] - str r1, [r0, #0] - ldr r1, [r5, #0x19c] - str r1, [r0, #4] -_021EF4E8: - mov r0, #3 - str r0, [r5, #0x1d8] - ldr r1, [r7, #0xc] - ldr r0, [r7, #0x10] - str r1, [sp, #0x10] - str r0, [sp, #0x14] - cmp r1, #0 - beq _021EF588 - mov r0, #0x20 - bl DWCi_GsMalloc - movs r4, r0 - bne _021EF530 - ldr r1, _021EF5F0 ; =0x02218340 - mov r0, r8 - bl gpiSetErrorString - add sp, sp, #0x2a0 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_021EF530: - mov r1, #0 - mov r2, #0x20 - bl memset - ldr r0, [r5, #0x1a0] - mov r3, #0 - str r0, [r4, #4] - add r1, sp, #0x18 - add r0, r4, #8 - mov r2, #0x15 - str r3, [r4, #0] - bl strzcpy - add r1, sp, #0x10 - mov r0, r8 - mov r3, r4 - str r7, [sp] - mov r2, #0 - str r2, [sp, #4] - ldmia r1, {r1, r2} - bl gpiAddCallback - cmp r0, #0 - addne sp, sp, #0x2a0 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} -_021EF588: - mov r0, r8 - mov r1, r7 - bl gpiRemoveOperation -_021EF594: - mov r0, #0 - add sp, sp, #0x2a0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_021EF5A0: .word 0x00000106 -_021EF5A4: .word 0x00000201 -_021EF5A8: .word Unk_ov4_02218480 -_021EF5AC: .word Unk_ov4_02218488 -_021EF5B0: .word Unk_ov4_02218490 -_021EF5B4: .word Unk_ov4_02218498 -_021EF5B8: .word Unk_ov4_022183A4 -_021EF5BC: .word Unk_ov4_022184C8 -_021EF5C0: .word Unk_ov4_022183D8 -_021EF5C4: .word Unk_ov4_022184D0 -_021EF5C8: .word Unk_ov4_022183E4 -_021EF5CC: .word Unk_ov4_02218500 -_021EF5D0: .word Unk_ov4_02218508 -_021EF5D4: .word Unk_ov4_022183BC -_021EF5D8: .word Unk_ov4_02218514 -_021EF5DC: .word Unk_ov4_02218350 -_021EF5E0: .word Unk_ov4_02218358 -_021EF5E4: .word Unk_ov4_02218368 -_021EF5E8: .word Unk_ov4_0221851C -_021EF5EC: .word Unk_ov4_02218524 -_021EF5F0: .word Unk_ov4_02218340 - arm_func_end gpiProcessConnect - - arm_func_start gpiCheckConnect -gpiCheckConnect: ; 0x021EF5F4 - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r4, [r5, #0] - add r2, sp, #0 - ldr r1, [r4, #0x1d4] - bl gpiCheckSocketConnect - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, [sp] - cmp r0, #4 - bne _021EF648 - ldr r1, _021EF680 ; =0x00000107 - ldr r2, _021EF684 ; =0x02218544 - mov r0, r5 - bl gpiSetError - mov r0, r5 - mov r1, #4 - mov r2, #1 - bl gpiCallErrorCallback - mov r0, #4 - ldmia sp!, {r3, r4, r5, pc} -_021EF648: - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r0, #3 - beq _021EF670 - ldr r0, _021EF688 ; =0x0221856C - ldr r1, _021EF68C ; =0x022182E0 - ldr r2, _021EF690 ; =0x0221811C - ldr r3, _021EF694 ; =0x000002EF - bl __msl_assertion_failed -_021EF670: - mov r0, #2 - str r0, [r4, #0x1d8] - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_021EF680: .word 0x00000107 -_021EF684: .word Unk_ov4_02218544 -_021EF688: .word Unk_ov4_0221856C -_021EF68C: .word Unk_ov4_022182E0 -_021EF690: .word Unk_ov4_0221811C -_021EF694: .word 0x000002EF - arm_func_end gpiCheckConnect - - arm_func_start gpiDisconnectCleanupProfile -gpiDisconnectCleanupProfile: ; 0x021EF698 - stmfd sp!, {r4, r5, r6, lr} - mov r5, r1 - ldr r1, [r5, #8] - mov r6, r0 - cmp r1, #0 - ldr r4, [r6, #0] - beq _021EF6FC - ldr r0, [r4, #0x104] - cmp r0, #0 - bne _021EF6FC - ldr r0, [r1, #8] - bl DWCi_GsFree - ldr r0, [r5, #8] - mov r1, #0 - str r1, [r0, #8] - ldr r0, [r5, #8] - ldr r0, [r0, #0xc] - bl DWCi_GsFree - ldr r0, [r5, #8] - mov r1, #0 - str r1, [r0, #0xc] - ldr r0, [r5, #8] - bl DWCi_GsFree - mov r0, #0 - str r0, [r5, #8] -_021EF6FC: - ldr r0, [r5, #0x10] - bl DWCi_GsFree - mov r0, #0 - str r0, [r5, #0x10] - ldr r0, [r5, #0x18] - bl DWCi_GsFree - mov r0, #0 - str r0, [r5, #0x18] - str r0, [r5, #0x14] - ldr r0, [r5, #0xc] - cmp r0, #0 - beq _021EF740 - ldr r0, [r4, #0x104] - cmp r0, #1 - ldreq r0, [r5, #8] - cmpeq r0, #0 - bne _021EF754 -_021EF740: - mov r0, r6 - mov r1, r5 - bl gpiRemoveProfile - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_021EF754: - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end gpiDisconnectCleanupProfile - - arm_func_start gpiDisconnect -gpiDisconnect: ; 0x021EF75C - stmfd sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0xc - mov r5, r0 - ldr r4, [r5, #0] - ldr r2, [r4, #0x1d8] - cmp r2, #4 - addeq sp, sp, #0xc - ldmeqia sp!, {r3, r4, r5, r6, pc} - cmp r2, #0 - beq _021EF848 - cmp r1, #0 - beq _021EF7C0 - cmp r2, #3 - bne _021EF7C0 - ldr r2, _021EF914 ; =0x02218584 - add r1, r4, #0x1f4 - bl gpiAppendStringToBuffer - ldr r2, [r4, #0x198] - mov r0, r5 - add r1, r4, #0x1f4 - bl gpiAppendIntToBuffer - ldr r2, _021EF918 ; =0x02218440 - mov r0, r5 - add r1, r4, #0x1f4 - bl gpiAppendStringToBuffer -_021EF7C0: - mov r1, #1 - ldr r0, _021EF91C ; =0x02218598 - str r1, [sp] - str r0, [sp, #4] - ldr r1, [r4, #0x1d4] - add r3, sp, #8 - mov r0, r5 - add r2, r4, #0x1f4 - bl gpiSendFromBuffer - ldr r0, [r4, #0x1d4] - mvn r1, #0 - cmp r0, r1 - beq _021EF80C - mov r1, #2 - bl shutdown - ldr r0, [r4, #0x1d4] - bl closesocket - mvn r0, #0 - str r0, [r4, #0x1d4] -_021EF80C: - ldr r0, [r4, #0x204] - mvn r1, #0 - cmp r0, r1 - beq _021EF834 - mov r1, #2 - bl shutdown - ldr r0, [r4, #0x204] - bl closesocket - mvn r0, #0 - str r0, [r4, #0x204] -_021EF834: - mov r0, #4 - str r0, [r4, #0x1d8] - mov r0, #0 - str r0, [r4, #0x19c] - str r0, [r4, #0x1a0] -_021EF848: - ldr r0, [r4, #0x1dc] - bl DWCi_GsFree - mov r0, #0 - str r0, [r4, #0x1dc] - ldr r0, [r4, #0x1ec] - bl DWCi_GsFree - mov r0, #0 - str r0, [r4, #0x1ec] - ldr r0, [r4, #0x1f4] - bl DWCi_GsFree - mov r0, #0 - str r0, [r4, #0x1f4] - ldr r0, [r4, #0x440] - bl DWCi_GsFree - mov r0, #0 - str r0, [r4, #0x440] - ldr r0, [r4, #0x450] - bl DWCi_GsFree - mov r0, #0 - str r0, [r4, #0x450] - ldr r1, [r4, #0x424] - cmp r1, #0 - beq _021EF8B8 -_021EF8A4: - mov r0, r5 - bl gpiRemoveOperation - ldr r1, [r4, #0x424] - cmp r1, #0 - bne _021EF8A4 -_021EF8B8: - mov r0, #0 - str r0, [r4, #0x424] - ldr r6, [r4, #0x434] - cmp r6, #0 - beq _021EF8E4 -_021EF8CC: - mov r1, r6 - ldr r6, [r6, #0x3c] - mov r0, r5 - bl gpiDestroyPeer - cmp r6, #0 - bne _021EF8CC -_021EF8E4: - mov r0, #0 - str r0, [r4, #0x434] - ldr r6, _021EF920 ; =gpiDisconnectCleanupProfile - mov r4, r0 -_021EF8F4: - mov r0, r5 - mov r1, r6 - mov r2, r4 - bl gpiProfileMap - cmp r0, #0 - beq _021EF8F4 - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, pc} - ; .align 2, 0 -_021EF914: .word Unk_ov4_02218584 -_021EF918: .word Unk_ov4_02218440 -_021EF91C: .word Unk_ov4_02218598 -_021EF920: .word gpiDisconnectCleanupProfile - arm_func_end gpiDisconnect - - .data - - - .global Unk_ov4_0221810C -Unk_ov4_0221810C: ; 0x0221810C - .incbin "incbin/overlay4_data.bin", 0x228C, 0x229C - 0x228C - - .global Unk_ov4_0221811C -Unk_ov4_0221811C: ; 0x0221811C - .incbin "incbin/overlay4_data.bin", 0x229C, 0x22AC - 0x229C - - .global GPConnectionManagerHostname -GPConnectionManagerHostname: ; 0x0221812C - .incbin "incbin/overlay4_data.bin", 0x22AC, 0x22EC - 0x22AC - - .global Unk_ov4_0221816C -Unk_ov4_0221816C: ; 0x0221816C - .incbin "incbin/overlay4_data.bin", 0x22EC, 0x232C - 0x22EC - - .global Unk_ov4_022181AC -Unk_ov4_022181AC: ; 0x022181AC - .incbin "incbin/overlay4_data.bin", 0x232C, 0x2354 - 0x232C - - .global Unk_ov4_022181D4 -Unk_ov4_022181D4: ; 0x022181D4 - .incbin "incbin/overlay4_data.bin", 0x2354, 0x2388 - 0x2354 - - .global Unk_ov4_02218208 -Unk_ov4_02218208: ; 0x02218208 - .incbin "incbin/overlay4_data.bin", 0x2388, 0x23B0 - 0x2388 - - .global Unk_ov4_02218230 -Unk_ov4_02218230: ; 0x02218230 - .incbin "incbin/overlay4_data.bin", 0x23B0, 0x23DC - 0x23B0 - - .global Unk_ov4_0221825C -Unk_ov4_0221825C: ; 0x0221825C - .incbin "incbin/overlay4_data.bin", 0x23DC, 0x240C - 0x23DC - - .global Unk_ov4_0221828C -Unk_ov4_0221828C: ; 0x0221828C - .incbin "incbin/overlay4_data.bin", 0x240C, 0x2440 - 0x240C - - .global Unk_ov4_022182C0 -Unk_ov4_022182C0: ; 0x022182C0 - .incbin "incbin/overlay4_data.bin", 0x2440, 0x2460 - 0x2440 - - .global Unk_ov4_022182E0 -Unk_ov4_022182E0: ; 0x022182E0 - .incbin "incbin/overlay4_data.bin", 0x2460, 0x2470 - 0x2460 - - .global Unk_ov4_022182F0 -Unk_ov4_022182F0: ; 0x022182F0 - .incbin "incbin/overlay4_data.bin", 0x2470, 0x2498 - 0x2470 - - .global Unk_ov4_02218318 -Unk_ov4_02218318: ; 0x02218318 - .incbin "incbin/overlay4_data.bin", 0x2498, 0x24AC - 0x2498 - - .global Unk_ov4_0221832C -Unk_ov4_0221832C: ; 0x0221832C - .incbin "incbin/overlay4_data.bin", 0x24AC, 0x24C0 - 0x24AC - - .global Unk_ov4_02218340 -Unk_ov4_02218340: ; 0x02218340 - .incbin "incbin/overlay4_data.bin", 0x24C0, 0x24D0 - 0x24C0 - - .global Unk_ov4_02218350 -Unk_ov4_02218350: ; 0x02218350 - .incbin "incbin/overlay4_data.bin", 0x24D0, 0x24D8 - 0x24D0 - - .global Unk_ov4_02218358 -Unk_ov4_02218358: ; 0x02218358 - .incbin "incbin/overlay4_data.bin", 0x24D8, 0x24E8 - 0x24D8 - - .global Unk_ov4_02218368 -Unk_ov4_02218368: ; 0x02218368 - .incbin "incbin/overlay4_data.bin", 0x24E8, 0x251C - 0x24E8 - - .global Unk_ov4_0221839C -Unk_ov4_0221839C: ; 0x0221839C - .incbin "incbin/overlay4_data.bin", 0x251C, 0x2524 - 0x251C - - .global Unk_ov4_022183A4 -Unk_ov4_022183A4: ; 0x022183A4 - .incbin "incbin/overlay4_data.bin", 0x2524, 0x2530 - 0x2524 - - .global Unk_ov4_022183B0 -Unk_ov4_022183B0: ; 0x022183B0 - .incbin "incbin/overlay4_data.bin", 0x2530, 0x253C - 0x2530 - - .global Unk_ov4_022183BC -Unk_ov4_022183BC: ; 0x022183BC - .incbin "incbin/overlay4_data.bin", 0x253C, 0x254C - 0x253C - - .global Unk_ov4_022183CC -Unk_ov4_022183CC: ; 0x022183CC - .incbin "incbin/overlay4_data.bin", 0x254C, 0x2554 - 0x254C - - .global Unk_ov4_022183D4 -Unk_ov4_022183D4: ; 0x022183D4 - .incbin "incbin/overlay4_data.bin", 0x2554, 0x2558 - 0x2554 - - .global Unk_ov4_022183D8 -Unk_ov4_022183D8: ; 0x022183D8 - .incbin "incbin/overlay4_data.bin", 0x2558, 0x2564 - 0x2558 - - .global Unk_ov4_022183E4 -Unk_ov4_022183E4: ; 0x022183E4 - .incbin "incbin/overlay4_data.bin", 0x2564, 0x2570 - 0x2564 - - .global Unk_ov4_022183F0 -Unk_ov4_022183F0: ; 0x022183F0 - .incbin "incbin/overlay4_data.bin", 0x2570, 0x257C - 0x2570 - - .global Unk_ov4_022183FC -Unk_ov4_022183FC: ; 0x022183FC - .incbin "incbin/overlay4_data.bin", 0x257C, 0x2588 - 0x257C - - .global Unk_ov4_02218408 -Unk_ov4_02218408: ; 0x02218408 - .incbin "incbin/overlay4_data.bin", 0x2588, 0x2590 - 0x2588 - - .global Unk_ov4_02218410 -Unk_ov4_02218410: ; 0x02218410 - .incbin "incbin/overlay4_data.bin", 0x2590, 0x259C - 0x2590 - - .global Unk_ov4_0221841C -Unk_ov4_0221841C: ; 0x0221841C - .incbin "incbin/overlay4_data.bin", 0x259C, 0x25A8 - 0x259C - - .global Unk_ov4_02218428 -Unk_ov4_02218428: ; 0x02218428 - .incbin "incbin/overlay4_data.bin", 0x25A8, 0x25B8 - 0x25A8 - - .global Unk_ov4_02218438 -Unk_ov4_02218438: ; 0x02218438 - .incbin "incbin/overlay4_data.bin", 0x25B8, 0x25C0 - 0x25B8 - - .global Unk_ov4_02218440 -Unk_ov4_02218440: ; 0x02218440 - .incbin "incbin/overlay4_data.bin", 0x25C0, 0x25C8 - 0x25C0 - - .global Unk_ov4_02218448 -Unk_ov4_02218448: ; 0x02218448 - .incbin "incbin/overlay4_data.bin", 0x25C8, 0x25D4 - 0x25C8 - - .global Unk_ov4_02218454 -Unk_ov4_02218454: ; 0x02218454 - .incbin "incbin/overlay4_data.bin", 0x25D4, 0x25DC - 0x25D4 - - .global Unk_ov4_0221845C -Unk_ov4_0221845C: ; 0x0221845C - .incbin "incbin/overlay4_data.bin", 0x25DC, 0x25E4 - 0x25DC - - .global Unk_ov4_02218464 -Unk_ov4_02218464: ; 0x02218464 - .incbin "incbin/overlay4_data.bin", 0x25E4, 0x25F4 - 0x25E4 - - .global Unk_ov4_02218474 -Unk_ov4_02218474: ; 0x02218474 - .incbin "incbin/overlay4_data.bin", 0x25F4, 0x2600 - 0x25F4 - - .global Unk_ov4_02218480 -Unk_ov4_02218480: ; 0x02218480 - .incbin "incbin/overlay4_data.bin", 0x2600, 0x2608 - 0x2600 - - .global Unk_ov4_02218488 -Unk_ov4_02218488: ; 0x02218488 - .incbin "incbin/overlay4_data.bin", 0x2608, 0x2610 - 0x2608 - - .global Unk_ov4_02218490 -Unk_ov4_02218490: ; 0x02218490 - .incbin "incbin/overlay4_data.bin", 0x2610, 0x2618 - 0x2610 - - .global Unk_ov4_02218498 -Unk_ov4_02218498: ; 0x02218498 - .incbin "incbin/overlay4_data.bin", 0x2618, 0x2648 - 0x2618 - - .global Unk_ov4_022184C8 -Unk_ov4_022184C8: ; 0x022184C8 - .incbin "incbin/overlay4_data.bin", 0x2648, 0x2650 - 0x2648 - - .global Unk_ov4_022184D0 -Unk_ov4_022184D0: ; 0x022184D0 - .incbin "incbin/overlay4_data.bin", 0x2650, 0x2680 - 0x2650 - - .global Unk_ov4_02218500 -Unk_ov4_02218500: ; 0x02218500 - .incbin "incbin/overlay4_data.bin", 0x2680, 0x2688 - 0x2680 - - .global Unk_ov4_02218508 -Unk_ov4_02218508: ; 0x02218508 - .incbin "incbin/overlay4_data.bin", 0x2688, 0x2694 - 0x2688 - - .global Unk_ov4_02218514 -Unk_ov4_02218514: ; 0x02218514 - .incbin "incbin/overlay4_data.bin", 0x2694, 0x269C - 0x2694 - - .global Unk_ov4_0221851C -Unk_ov4_0221851C: ; 0x0221851C - .incbin "incbin/overlay4_data.bin", 0x269C, 0x26A4 - 0x269C - - .global Unk_ov4_02218524 -Unk_ov4_02218524: ; 0x02218524 - .incbin "incbin/overlay4_data.bin", 0x26A4, 0x26C4 - 0x26A4 - - .global Unk_ov4_02218544 -Unk_ov4_02218544: ; 0x02218544 - .incbin "incbin/overlay4_data.bin", 0x26C4, 0x26EC - 0x26C4 - - .global Unk_ov4_0221856C -Unk_ov4_0221856C: ; 0x0221856C - .incbin "incbin/overlay4_data.bin", 0x26EC, 0x2704 - 0x26EC - - .global Unk_ov4_02218584 -Unk_ov4_02218584: ; 0x02218584 - .incbin "incbin/overlay4_data.bin", 0x2704, 0x2718 - 0x2704 - - .global Unk_ov4_02218598 -Unk_ov4_02218598: ; 0x02218598 - .incbin "incbin/overlay4_data.bin", 0x2718, 0x3 - diff --git a/subprojects/gamespy/libraries/gp/asm/gpiinfo.s b/subprojects/gamespy/libraries/gp/asm/gpiinfo.s deleted file mode 100644 index ef6ace278d..0000000000 --- a/subprojects/gamespy/libraries/gp/asm/gpiinfo.s +++ /dev/null @@ -1,2358 +0,0 @@ - .include "macros/function.inc" - .include "include/gpiinfo.inc" - - - - .text - - - arm_func_start gpiIsValidDate -gpiIsValidDate: ; 0x021EF924 - stmfd sp!, {r3, r4, r5, lr} - cmp r0, #0 - cmpeq r1, #0 - cmpeq r2, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r0, #0 - cmpge r1, #0 - cmpge r2, #0 - movlt r0, #0 - ldmltia sp!, {r3, r4, r5, pc} - cmp r1, #0xc - addls pc, pc, r1, lsl #2 - b _021EFA2C -_021EF95C: ; jump table - b _021EF990 ; case 0 - b _021EF9A0 ; case 1 - b _021EF9C0 ; case 2 - b _021EF9A0 ; case 3 - b _021EF9B0 ; case 4 - b _021EF9A0 ; case 5 - b _021EF9B0 ; case 6 - b _021EF9A0 ; case 7 - b _021EF9A0 ; case 8 - b _021EF9B0 ; case 9 - b _021EF9A0 ; case 10 - b _021EF9B0 ; case 11 - b _021EF9A0 ; case 12 -_021EF990: - cmp r0, #0 - beq _021EFA34 - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_021EF9A0: - cmp r0, #0x1f - ble _021EFA34 - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_021EF9B0: - cmp r0, #0x1e - ble _021EFA34 - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_021EF9C0: - mov r4, r2, lsr #0x1f - rsb r3, r4, r2, lsl #30 - adds r3, r4, r3, ror #30 - bne _021EF9EC - ldr ip, _021EFA7C ; =0x51EB851F - mov lr, #0x64 - smull r3, r5, ip, r2 - add r5, r4, r5, asr #5 - smull r3, ip, lr, r5 - subs r5, r2, r3 - bne _021EFA0C -_021EF9EC: - ldr lr, _021EFA7C ; =0x51EB851F - mov r3, r2, lsr #0x1f - smull ip, r4, lr, r2 - add r4, r3, r4, asr #7 - mov lr, #0x190 - smull r3, ip, lr, r4 - subs r4, r2, r3 - bne _021EFA1C -_021EFA0C: - cmp r0, #0x1d - ble _021EFA34 - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_021EFA1C: - cmp r0, #0x1c - ble _021EFA34 - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_021EFA2C: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_021EFA34: - ldr ip, _021EFA80 ; =0x0000076C - cmp r2, ip - movlt r0, #0 - ldmltia sp!, {r3, r4, r5, pc} - add r3, ip, #0xb3 - cmp r2, r3 - movgt r0, #0 - ldmgtia sp!, {r3, r4, r5, pc} - bne _021EFA74 - cmp r1, #6 - movgt r0, #0 - ldmgtia sp!, {r3, r4, r5, pc} - bne _021EFA74 - cmp r0, #6 - movgt r0, #0 - ldmgtia sp!, {r3, r4, r5, pc} -_021EFA74: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_021EFA7C: .word 0x51EB851F -_021EFA80: .word 0x0000076C - arm_func_end gpiIsValidDate - - arm_func_start gpiIntToDate -gpiIntToDate: ; 0x021EFA84 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov lr, r1, asr #0x18 - mov ip, r1, asr #0x10 - mov r1, r1, lsl #0x10 - and r5, ip, #0xff - and r4, lr, #0xff - mov sb, r0 - mov r6, r1, lsr #0x10 - mov r8, r2 - mov r0, r4 - mov r1, r5 - mov r2, r6 - mov r7, r3 - bl gpiIsValidDate - cmp r0, #0 - bne _021EFAD8 - ldr r0, _021EFB1C ; =0x022185DC - ldr r1, _021EFB20 ; =0x022185C0 - ldr r2, _021EFB24 ; =0x0221859C - mov r3, #0xb7 - bl __msl_assertion_failed -_021EFAD8: - mov r0, r4 - mov r1, r5 - mov r2, r6 - bl gpiIsValidDate - cmp r0, #0 - bne _021EFB04 - ldr r1, _021EFB28 ; =0x022185CC - mov r0, sb - bl gpiSetErrorString - mov r0, #2 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_021EFB04: - str r4, [r8] - ldr r0, [sp, #0x20] - str r5, [r7, #0] - str r6, [r0, #0] - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ; .align 2, 0 -_021EFB1C: .word Unk_ov4_022185DC -_021EFB20: .word Unk_ov4_022185C0 -_021EFB24: .word Unk_ov4_0221859C -_021EFB28: .word Unk_ov4_022185CC - arm_func_end gpiIntToDate - - arm_func_start gpiInfoCacheToArg -gpiInfoCacheToArg: ; 0x021EFB2C - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - ldr r1, [r5, #0] - cmp r1, #0 - moveq r0, #0 - streqb r0, [r4, #8] - beq _021EFB58 - add r0, r4, #8 - mov r2, #0x1f - bl strzcpy -_021EFB58: - ldr r1, [r5, #4] - cmp r1, #0 - moveq r0, #0 - streqb r0, [r4, #0x27] - beq _021EFB78 - add r0, r4, #0x27 - mov r2, #0x15 - bl strzcpy -_021EFB78: - ldr r1, [r5, #8] - cmp r1, #0 - moveq r0, #0 - streqb r0, [r4, #0x3c] - beq _021EFB98 - add r0, r4, #0x3c - mov r2, #0x33 - bl strzcpy -_021EFB98: - ldr r1, [r5, #0xc] - cmp r1, #0 - moveq r0, #0 - streqb r0, [r4, #0x6f] - beq _021EFBB8 - add r0, r4, #0x6f - mov r2, #0x1f - bl strzcpy -_021EFBB8: - ldr r1, [r5, #0x10] - cmp r1, #0 - moveq r0, #0 - streqb r0, [r4, #0x8e] - beq _021EFBD8 - add r0, r4, #0x8e - mov r2, #0x1f - bl strzcpy -_021EFBD8: - ldr r1, [r5, #0x14] - cmp r1, #0 - moveq r0, #0 - streqb r0, [r4, #0xad] - beq _021EFBF8 - add r0, r4, #0xad - mov r2, #0x4c - bl strzcpy -_021EFBF8: - ldr r3, [r5, #0x18] - add r0, r4, #0x100 - add r1, r5, #0x1c - mov r2, #0xb - str r3, [r4, #0xfc] - bl strzcpy - add r0, r4, #0xb - add r0, r0, #0x100 - add r1, r5, #0x27 - mov r2, #3 - bl strzcpy - ldr r0, [r5, #0x2c] - adds r1, r5, #0x34 - str r0, [r4, #0x110] - ldr r0, [r5, #0x30] - str r0, [r4, #0x114] - moveq r0, #0 - streqb r0, [r4, #0x118] - beq _021EFC50 - add r0, r4, #0x118 - mov r2, #0x80 - bl strzcpy -_021EFC50: - ldr r0, [r5, #0xb4] - str r0, [r4, #0x198] - ldr r0, [r5, #0xb8] - str r0, [r4, #0x19c] - ldr r0, [r5, #0xbc] - str r0, [r4, #0x1a0] - ldr r0, [r5, #0xc0] - str r0, [r4, #0x1a4] - ldr r0, [r5, #0xc4] - str r0, [r4, #0x1a8] - ldr r1, [r5, #0xc8] - cmp r1, #0 - moveq r0, #0 - streqb r0, [r4, #0x1ac] - beq _021EFC98 - add r0, r4, #0x1ac - mov r2, #0x33 - bl strzcpy -_021EFC98: - ldr r0, [r5, #0x18] - str r0, [r4, #0xfc] - ldr r0, [r5, #0x2c] - str r0, [r4, #0x110] - ldr r0, [r5, #0x30] - str r0, [r4, #0x114] - ldr r0, [r5, #0xb4] - str r0, [r4, #0x198] - ldr r0, [r5, #0xb8] - str r0, [r4, #0x19c] - ldr r0, [r5, #0xbc] - str r0, [r4, #0x1a0] - ldr r0, [r5, #0xc0] - str r0, [r4, #0x1a4] - ldr r0, [r5, #0xc4] - str r0, [r4, #0x1a8] - ldr r0, [r5, #0xcc] - str r0, [r4, #0x1e0] - ldr r0, [r5, #0xd0] - str r0, [r4, #0x1e4] - ldr r0, [r5, #0xd4] - str r0, [r4, #0x1e8] - ldr r0, [r5, #0xd8] - str r0, [r4, #0x1ec] - ldr r0, [r5, #0xdc] - str r0, [r4, #0x1f0] - ldr r0, [r5, #0xe0] - str r0, [r4, #0x1f4] - ldr r0, [r5, #0xe4] - str r0, [r4, #0x1f8] - ldr r0, [r5, #0xe8] - str r0, [r4, #0x1fc] - ldr r0, [r5, #0xec] - str r0, [r4, #0x200] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end gpiInfoCacheToArg - - arm_func_start gpiProcessGetInfo -gpiProcessGetInfo: ; 0x021EFD24 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x268 - mov r4, r2 - mov sl, r0 - mov fp, r1 - mov r1, r4 - mov r2, #1 - ldr r6, [sl] - bl gpiCheckForError - cmp r0, #0 - addne sp, sp, #0x268 - movne r0, #4 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, _021F04AC ; =0x022185F4 - mov r0, r4 - mov r2, #4 - bl strncmp - cmp r0, #0 - beq _021EFD9C - ldr r2, _021F04B0 ; =0x022185FC - mov r0, sl - mov r1, #1 - bl gpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x268 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021EFD9C: - ldr r1, _021F04B4 ; =0x0221862C - add r2, sp, #0xec - mov r0, r4 - mov r3, #0x40 - bl gpiValueForKey - cmp r0, #0 - bne _021EFDE4 - ldr r2, _021F04B0 ; =0x022185FC - mov r0, sl - mov r1, #1 - bl gpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x268 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021EFDE4: - add r0, sp, #0xec - bl atoi - mov sb, r0 - cmp sb, #0 - bgt _021EFE0C - ldr r0, _021F04B8 ; =0x02218638 - ldr r1, _021F04BC ; =0x022185C0 - ldr r2, _021F04C0 ; =0x022185AC - ldr r3, _021F04C4 ; =0x0000015A - bl __msl_assertion_failed -_021EFE0C: - add r2, sp, #0x10 - mov r0, sl - mov r1, sb - bl gpiGetProfile - mov r0, #0 - add r7, sp, #0x178 - mov r1, r0 - mov r2, r0 - mov r3, r0 - mov r5, #7 -_021EFE34: - stmia r7!, {r0, r1, r2, r3} - stmia r7!, {r0, r1, r2, r3} - subs r5, r5, #1 - bne _021EFE34 - stmia r7!, {r0, r1, r2, r3} - add r3, sp, #0xb8 - add r1, sp, #0x66 - add r2, sp, #0xcd - add r5, sp, #0x85 - add r0, sp, #0x47 - str r3, [sp, #0x17c] - add r3, sp, #0x12c - str r1, [sp, #0x184] - str r5, [sp, #0x180] - add r5, sp, #0x14 - str r0, [sp, #0x188] - str r3, [sp, #0x18c] - ldr r1, _021F04C8 ; =0x02218648 - mov r0, r4 - mov r3, #0x1f - str r2, [sp, #0x178] - str r5, [sp, #0x240] - bl gpiValueForKey - cmp r0, #0 - ldreq r0, [sp, #0x178] - moveq r1, #0 - streqb r1, [r0] - ldr r2, [sp, #0x17c] - ldr r1, _021F04CC ; =0x02218650 - mov r0, r4 - mov r3, #0x15 - bl gpiValueForKey - cmp r0, #0 - ldreq r0, [sp, #0x17c] - moveq r1, #0 - streqb r1, [r0] - ldr r2, [sp, #0x180] - ldr r1, _021F04D0 ; =0x02218660 - mov r0, r4 - mov r3, #0x33 - bl gpiValueForKey - cmp r0, #0 - ldreq r0, [sp, #0x180] - moveq r1, #0 - streqb r1, [r0] - ldr r2, [sp, #0x184] - ldr r1, _021F04D4 ; =0x02218668 - mov r0, r4 - mov r3, #0x1f - bl gpiValueForKey - cmp r0, #0 - ldreq r0, [sp, #0x184] - moveq r1, #0 - streqb r1, [r0] - ldr r2, [sp, #0x188] - ldr r1, _021F04D8 ; =0x02218674 - mov r0, r4 - mov r3, #0x1f - bl gpiValueForKey - cmp r0, #0 - ldreq r0, [sp, #0x188] - moveq r1, #0 - streqb r1, [r0] - ldr r1, _021F04DC ; =0x02218680 - add r2, sp, #0xec - mov r0, r4 - mov r3, #0x40 - bl gpiValueForKey - cmp r0, #0 - mvneq r0, #0 - streq r0, [sp, #0x190] - beq _021EFF60 - add r0, sp, #0xec - bl atoi - str r0, [sp, #0x190] -_021EFF60: - ldr r2, [sp, #0x18c] - ldr r1, _021F04E0 ; =0x0221868C - mov r0, r4 - mov r3, #0x4c - bl gpiValueForKey - cmp r0, #0 - ldreq r0, [sp, #0x18c] - moveq r1, #0 - streqb r1, [r0] - ldr r1, _021F04E4 ; =0x02218698 - add r2, sp, #0x194 - mov r0, r4 - mov r3, #0xb - bl gpiValueForKey - cmp r0, #0 - moveq r0, #0 - add r2, sp, #0x100 - streqb r0, [sp, #0x194] - ldr r1, _021F04E8 ; =0x022186A4 - add r2, r2, #0x9f - mov r0, r4 - mov r3, #3 - bl gpiValueForKey - cmp r0, #0 - moveq r0, #0 - streqb r0, [sp, #0x19f] - ldr r1, _021F04EC ; =0x022186B4 - add r2, sp, #0xec - mov r0, r4 - mov r3, #0x40 - bl gpiValueForKey - cmp r0, #0 - moveq r0, #0 - streq r0, [sp, #0x1a4] - beq _021EFFFC - add r0, sp, #0xec - bl atof - bl _d_dtof - str r0, [sp, #0x1a4] -_021EFFFC: - ldr r1, _021F04F0 ; =0x022186BC - add r2, sp, #0xec - mov r0, r4 - mov r3, #0x40 - bl gpiValueForKey - cmp r0, #0 - moveq r0, #0 - streq r0, [sp, #0x1a8] - beq _021F0030 - add r0, sp, #0xec - bl atof - bl _d_dtof - str r0, [sp, #0x1a8] -_021F0030: - ldr r1, _021F04F4 ; =0x022186C4 - add r2, sp, #0x1ac - mov r0, r4 - mov r3, #0x80 - bl gpiValueForKey - cmp r0, #0 - moveq r0, #0 - streqb r0, [sp, #0x1ac] - ldr r1, _021F04F8 ; =0x022186CC - add r2, sp, #0xec - mov r0, r4 - mov r3, #0x40 - bl gpiValueForKey - cmp r0, #0 - bne _021F0080 - mov r0, #0 - str r0, [sp, #0x22c] - str r0, [sp, #0x230] - str r0, [sp, #0x234] - b _021F00B0 -_021F0080: - add r0, sp, #0xec - bl atoi - add r5, sp, #0x234 - mov r1, r0 - add r2, sp, #0x22c - add r3, sp, #0x230 - mov r0, sl - str r5, [sp] - bl gpiIntToDate - cmp r0, #0 - addne sp, sp, #0x268 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F00B0: - ldr r1, _021F04FC ; =0x022186D8 - add r2, sp, #0xec - mov r0, r4 - mov r3, #0x40 - bl gpiValueForKey - cmp r0, #0 - ldreq r0, _021F0500 ; =0x00000502 - streq r0, [sp, #0x238] - beq _021F00FC - ldrsb r0, [sp, #0xec] - cmp r0, #0x30 - moveq r0, #0x500 - streq r0, [sp, #0x238] - beq _021F00FC - cmp r0, #0x31 - ldreq r0, _021F0504 ; =0x00000501 - streq r0, [sp, #0x238] - ldrne r0, _021F0500 ; =0x00000502 - strne r0, [sp, #0x238] -_021F00FC: - ldr r1, _021F0508 ; =0x022186E0 - add r2, sp, #0xec - mov r0, r4 - mov r3, #0x40 - bl gpiValueForKey - cmp r0, #0 - mvneq r0, #0 - streq r0, [sp, #0x23c] - beq _021F012C - add r0, sp, #0xec - bl atoi - str r0, [sp, #0x23c] -_021F012C: - ldr r2, [sp, #0x240] - ldr r1, _021F050C ; =0x022186E8 - mov r0, r4 - mov r3, #0x33 - bl gpiValueForKey - cmp r0, #0 - ldreq r0, [sp, #0x240] - moveq r1, #0 - streqb r1, [r0] - ldr r1, _021F0510 ; =0x022186F0 - add r2, sp, #0xec - mov r0, r4 - mov r3, #0x40 - bl gpiValueForKey - cmp r0, #0 - moveq r0, #0 - streq r0, [sp, #0x244] - beq _021F0180 - add r0, sp, #0xec - bl atoi - str r0, [sp, #0x244] -_021F0180: - ldr r1, _021F0514 ; =0x022186F8 - add r2, sp, #0xec - mov r0, r4 - mov r3, #0x40 - bl gpiValueForKey - cmp r0, #0 - moveq r0, #0 - streq r0, [sp, #0x248] - beq _021F01B0 - add r0, sp, #0xec - bl atoi - str r0, [sp, #0x248] -_021F01B0: - ldr r1, _021F0518 ; =0x02218700 - add r2, sp, #0xec - mov r0, r4 - mov r3, #0x40 - bl gpiValueForKey - cmp r0, #0 - moveq r0, #0 - streq r0, [sp, #0x24c] - beq _021F01E0 - add r0, sp, #0xec - bl atoi - str r0, [sp, #0x24c] -_021F01E0: - ldr r1, _021F051C ; =0x02218708 - add r2, sp, #0xec - mov r0, r4 - mov r3, #0x40 - bl gpiValueForKey - cmp r0, #0 - moveq r0, #0 - streq r0, [sp, #0x250] - beq _021F0210 - add r0, sp, #0xec - bl atoi - str r0, [sp, #0x250] -_021F0210: - ldr r1, _021F0520 ; =0x02218710 - add r2, sp, #0xec - mov r0, r4 - mov r3, #0x40 - bl gpiValueForKey - cmp r0, #0 - moveq r0, #0 - streq r0, [sp, #0x254] - beq _021F0240 - add r0, sp, #0xec - bl atoi - str r0, [sp, #0x254] -_021F0240: - ldr r1, _021F0524 ; =0x02218718 - add r2, sp, #0xec - mov r0, r4 - mov r3, #0x40 - bl gpiValueForKey - cmp r0, #0 - moveq r0, #0 - streq r0, [sp, #0x258] - beq _021F0270 - add r0, sp, #0xec - bl atoi - str r0, [sp, #0x258] -_021F0270: - ldr r1, _021F0528 ; =0x02218720 - add r2, sp, #0xec - mov r0, r4 - mov r3, #0x40 - bl gpiValueForKey - cmp r0, #0 - moveq r0, #0 - streq r0, [sp, #0x25c] - beq _021F02A0 - add r0, sp, #0xec - bl atoi - str r0, [sp, #0x25c] -_021F02A0: - ldr r1, _021F052C ; =0x02218728 - add r2, sp, #0xec - mov r0, r4 - mov r3, #0x40 - bl gpiValueForKey - cmp r0, #0 - moveq r0, #0 - streq r0, [sp, #0x260] - beq _021F02D0 - add r0, sp, #0xec - bl atoi - str r0, [sp, #0x260] -_021F02D0: - ldr r1, _021F0530 ; =0x02218730 - add r2, sp, #0xec - mov r0, r4 - mov r3, #0x40 - bl gpiValueForKey - cmp r0, #0 - moveq r0, #0 - streq r0, [sp, #0x264] - beq _021F0300 - add r0, sp, #0xec - bl atoi - str r0, [sp, #0x264] -_021F0300: - ldr r1, _021F0534 ; =0x02218738 - add r2, sp, #0xec - mov r0, r4 - mov r3, #0x40 - bl gpiValueForKey - cmp r0, #0 - bne _021F0348 - ldr r2, _021F04B0 ; =0x022185FC - mov r0, sl - mov r1, #1 - bl gpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x268 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F0348: - ldr r7, [r6, #0x434] - ldr r8, [r6, #0x100] - cmp r7, #0 - beq _021F03A4 - mov r5, #0x66 - mov r4, #1 -_021F0360: - ldr r0, [r7, #0xc] - cmp r0, sb - ldreq r0, [r7] - cmpeq r0, #0x65 - bne _021F0398 - ldr r0, [sp, #0x10] - cmp r0, #0 - bne _021F0390 - mov r0, sl - mov r1, sb - bl gpiProfileListAdd - str r0, [sp, #0x10] -_021F0390: - mov r8, r4 - str r5, [r7, #0] -_021F0398: - ldr r7, [r7, #0x3c] - cmp r7, #0 - bne _021F0360 -_021F03A4: - ldr r0, [sp, #0x10] - cmp r0, #0 - bne _021F03CC - ldr r0, [r6, #0x100] - cmp r0, #0 - beq _021F03CC - mov r0, sl - mov r1, sb - bl gpiProfileListAdd - str r0, [sp, #0x10] -_021F03CC: - cmp r8, #0 - beq _021F03FC - ldr r0, [sp, #0x10] - ldr r0, [r0, #0x18] - bl DWCi_GsFree - ldr r1, [sp, #0x10] - mov r2, #0 - add r0, sp, #0xec - str r2, [r1, #0x18] - bl goastrdup - ldr r1, [sp, #0x10] - str r0, [r1, #0x18] -_021F03FC: - ldr r0, [r6, #0x100] - cmp r0, #0 - beq _021F0418 - ldr r1, [sp, #0x10] - add r2, sp, #0x178 - mov r0, sl - bl gpiSetInfoCache -_021F0418: - ldr r1, [fp, #0xc] - ldr r0, [fp, #0x10] - str r1, [sp, #8] - str r0, [sp, #0xc] - cmp r1, #0 - beq _021F0494 - mov r0, #0x204 - bl DWCi_GsMalloc - movs r4, r0 - bne _021F0458 - ldr r1, _021F0538 ; =0x02218740 - mov r0, sl - bl gpiSetErrorString - add sp, sp, #0x268 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F0458: - add r0, sp, #0x178 - mov r1, r4 - bl gpiInfoCacheToArg - mov r2, #0 - stmia r4, {r2, sb} - str fp, [sp] - add r1, sp, #8 - str r2, [sp, #4] - mov r0, sl - mov r3, r4 - ldmia r1, {r1, r2} - bl gpiAddCallback - cmp r0, #0 - addne sp, sp, #0x268 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F0494: - mov r0, sl - mov r1, fp - bl gpiRemoveOperation - mov r0, #0 - add sp, sp, #0x268 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_021F04AC: .word Unk_ov4_022185F4 -_021F04B0: .word Unk_ov4_022185FC -_021F04B4: .word Unk_ov4_0221862C -_021F04B8: .word Unk_ov4_02218638 -_021F04BC: .word Unk_ov4_022185C0 -_021F04C0: .word Unk_ov4_022185AC -_021F04C4: .word 0x0000015A -_021F04C8: .word Unk_ov4_02218648 -_021F04CC: .word Unk_ov4_02218650 -_021F04D0: .word Unk_ov4_02218660 -_021F04D4: .word Unk_ov4_02218668 -_021F04D8: .word Unk_ov4_02218674 -_021F04DC: .word Unk_ov4_02218680 -_021F04E0: .word Unk_ov4_0221868C -_021F04E4: .word Unk_ov4_02218698 -_021F04E8: .word Unk_ov4_022186A4 -_021F04EC: .word Unk_ov4_022186B4 -_021F04F0: .word Unk_ov4_022186BC -_021F04F4: .word Unk_ov4_022186C4 -_021F04F8: .word Unk_ov4_022186CC -_021F04FC: .word Unk_ov4_022186D8 -_021F0500: .word 0x00000502 -_021F0504: .word 0x00000501 -_021F0508: .word Unk_ov4_022186E0 -_021F050C: .word Unk_ov4_022186E8 -_021F0510: .word Unk_ov4_022186F0 -_021F0514: .word Unk_ov4_022186F8 -_021F0518: .word Unk_ov4_02218700 -_021F051C: .word Unk_ov4_02218708 -_021F0520: .word Unk_ov4_02218710 -_021F0524: .word Unk_ov4_02218718 -_021F0528: .word Unk_ov4_02218720 -_021F052C: .word Unk_ov4_02218728 -_021F0530: .word Unk_ov4_02218730 -_021F0534: .word Unk_ov4_02218738 -_021F0538: .word Unk_ov4_02218740 - arm_func_end gpiProcessGetInfo - - arm_func_start gpiAddLocalInfo -gpiAddLocalInfo: ; 0x021F053C - stmfd sp!, {r4, r5, r6, lr} - mov r6, r0 - ldr r4, [r6, #0] - mov r5, r1 - ldr r2, [r4, #0x448] - cmp r2, #0 - ble _021F0598 - ldr r2, _021F05F4 ; =0x02218750 - bl gpiAppendStringToBuffer - ldr r2, [r4, #0x198] - mov r0, r6 - mov r1, r5 - bl gpiAppendIntToBuffer - ldr r2, [r4, #0x440] - mov r0, r6 - mov r1, r5 - bl gpiAppendStringToBuffer - ldr r2, _021F05F8 ; =0x02218768 - mov r0, r6 - mov r1, r5 - bl gpiAppendStringToBuffer - mov r0, #0 - str r0, [r4, #0x448] -_021F0598: - ldr r0, [r4, #0x458] - cmp r0, #0 - ble _021F05EC - ldr r2, _021F05FC ; =0x02218770 - mov r0, r6 - mov r1, r5 - bl gpiAppendStringToBuffer - ldr r2, [r4, #0x198] - mov r0, r6 - mov r1, r5 - bl gpiAppendIntToBuffer - ldr r2, [r4, #0x450] - mov r0, r6 - mov r1, r5 - bl gpiAppendStringToBuffer - ldr r2, _021F05F8 ; =0x02218768 - mov r0, r6 - mov r1, r5 - bl gpiAppendStringToBuffer - mov r0, #0 - str r0, [r4, #0x458] -_021F05EC: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_021F05F4: .word Unk_ov4_02218750 -_021F05F8: .word Unk_ov4_02218768 -_021F05FC: .word Unk_ov4_02218770 - arm_func_end gpiAddLocalInfo - - arm_func_start gpiSendLocalInfo -gpiSendLocalInfo: ; 0x021F0600 - stmfd sp!, {r4, r5, r6, lr} - mov r6, r0 - ldr r4, [r6, #0] - mov r5, r2 - mov r2, r1 - add r1, r4, #0x440 - bl gpiAppendStringToBuffer - cmp r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r2, r5 - add r1, r4, #0x440 - bl gpiAppendStringToBuffer - cmp r0, #0 - moveq r0, #0 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end gpiSendLocalInfo - - arm_func_start gpiSendUserInfo -gpiSendUserInfo: ; 0x021F0640 - stmfd sp!, {r4, r5, r6, lr} - mov r6, r0 - ldr r4, [r6, #0] - mov r5, r2 - mov r2, r1 - add r1, r4, #0x450 - bl gpiAppendStringToBuffer - cmp r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r2, r5 - add r1, r4, #0x450 - bl gpiAppendStringToBuffer - cmp r0, #0 - moveq r0, #0 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end gpiSendUserInfo - - arm_func_start gpiSetInfoi -gpiSetInfoi: ; 0x021F0680 - stmfd sp!, {r4, lr} - sub sp, sp, #0x10 - sub r1, r1, #6 - sub r1, r1, #0x700 - mov r4, r0 - cmp r1, #0x18 - addls pc, pc, r1, lsl #2 - b _021F0AC4 -_021F06A0: ; jump table - b _021F07D8 ; case 0 - b _021F0AC4 ; case 1 - b _021F0704 ; case 2 - b _021F0AC4 ; case 3 - b _021F0AC4 ; case 4 - b _021F074C ; case 5 - b _021F0804 ; case 6 - b _021F0830 ; case 7 - b _021F085C ; case 8 - b _021F0AC4 ; case 9 - b _021F0894 ; case 10 - b _021F0AC4 ; case 11 - b _021F08CC ; case 12 - b _021F0904 ; case 13 - b _021F0930 ; case 14 - b _021F095C ; case 15 - b _021F0AC4 ; case 16 - b _021F0AC4 ; case 17 - b _021F0990 ; case 18 - b _021F09BC ; case 19 - b _021F09E8 ; case 20 - b _021F0A14 ; case 21 - b _021F0A40 ; case 22 - b _021F0A6C ; case 23 - b _021F0A98 ; case 24 -_021F0704: - cmp r2, #0 - bge _021F0720 - ldr r1, _021F0AE8 ; =0x02218784 - bl gpiSetErrorString - add sp, sp, #0x10 - mov r0, #2 - ldmia sp!, {r4, pc} -_021F0720: - ldr r1, _021F0AEC ; =0x02218798 - add r0, sp, #0 - bl sprintf - ldr r1, _021F0AF0 ; =0x02218698 - add r2, sp, #0 - mov r0, r4 - bl gpiSendLocalInfo - cmp r0, #0 - beq _021F0ADC - add sp, sp, #0x10 - ldmia sp!, {r4, pc} -_021F074C: - cmp r2, #0x500 - beq _021F0770 - ldr r1, _021F0AF4 ; =0x00000501 - cmp r2, r1 - beq _021F078C - add r1, r1, #1 - cmp r2, r1 - beq _021F07A8 - b _021F07C4 -_021F0770: - ldr r1, _021F0AF8 ; =0x022186D8 - ldr r2, _021F0AFC ; =0x0221879C - bl gpiSendLocalInfo - cmp r0, #0 - beq _021F0ADC - add sp, sp, #0x10 - ldmia sp!, {r4, pc} -_021F078C: - ldr r1, _021F0AF8 ; =0x022186D8 - ldr r2, _021F0B00 ; =0x022187A0 - bl gpiSendLocalInfo - cmp r0, #0 - beq _021F0ADC - add sp, sp, #0x10 - ldmia sp!, {r4, pc} -_021F07A8: - ldr r1, _021F0AF8 ; =0x022186D8 - ldr r2, _021F0B04 ; =0x022187A4 - bl gpiSendLocalInfo - cmp r0, #0 - beq _021F0ADC - add sp, sp, #0x10 - ldmia sp!, {r4, pc} -_021F07C4: - ldr r1, _021F0B08 ; =0x022187A8 - bl gpiSetErrorString - add sp, sp, #0x10 - mov r0, #2 - ldmia sp!, {r4, pc} -_021F07D8: - ldr r1, _021F0AEC ; =0x02218798 - add r0, sp, #0 - bl sprintf - ldr r1, _021F0B0C ; =0x02218680 - add r2, sp, #0 - mov r0, r4 - bl gpiSendLocalInfo - cmp r0, #0 - beq _021F0ADC - add sp, sp, #0x10 - ldmia sp!, {r4, pc} -_021F0804: - ldr r1, _021F0AEC ; =0x02218798 - add r0, sp, #0 - bl sprintf - ldr r1, _021F0B10 ; =0x022187B8 - add r2, sp, #0 - mov r0, r4 - bl gpiSendUserInfo - cmp r0, #0 - beq _021F0ADC - add sp, sp, #0x10 - ldmia sp!, {r4, pc} -_021F0830: - ldr r1, _021F0AEC ; =0x02218798 - add r0, sp, #0 - bl sprintf - ldr r1, _021F0B14 ; =0x022187C8 - add r2, sp, #0 - mov r0, r4 - bl gpiSendUserInfo - cmp r0, #0 - beq _021F0ADC - add sp, sp, #0x10 - ldmia sp!, {r4, pc} -_021F085C: - mov r0, r2, asr #3 - add r2, r2, r0, lsr #28 - ldr r1, _021F0AEC ; =0x02218798 - add r0, sp, #0 - mov r2, r2, asr #4 - bl sprintf - ldr r1, _021F0B18 ; =0x022187D4 - add r2, sp, #0 - mov r0, r4 - bl gpiSendUserInfo - cmp r0, #0 - beq _021F0ADC - add sp, sp, #0x10 - ldmia sp!, {r4, pc} -_021F0894: - mov r0, r2, asr #1 - add r2, r2, r0, lsr #30 - ldr r1, _021F0AEC ; =0x02218798 - add r0, sp, #0 - mov r2, r2, asr #2 - bl sprintf - ldr r1, _021F0B1C ; =0x022187E0 - add r2, sp, #0 - mov r0, r4 - bl gpiSendUserInfo - cmp r0, #0 - beq _021F0ADC - add sp, sp, #0x10 - ldmia sp!, {r4, pc} -_021F08CC: - mov r0, r2, asr #1 - add r2, r2, r0, lsr #30 - ldr r1, _021F0AEC ; =0x02218798 - add r0, sp, #0 - mov r2, r2, asr #2 - bl sprintf - ldr r1, _021F0B20 ; =0x022187F0 - add r2, sp, #0 - mov r0, r4 - bl gpiSendUserInfo - cmp r0, #0 - beq _021F0ADC - add sp, sp, #0x10 - ldmia sp!, {r4, pc} -_021F0904: - ldr r1, _021F0AEC ; =0x02218798 - add r0, sp, #0 - bl sprintf - ldr r1, _021F0B24 ; =0x02218800 - add r2, sp, #0 - mov r0, r4 - bl gpiSendUserInfo - cmp r0, #0 - beq _021F0ADC - add sp, sp, #0x10 - ldmia sp!, {r4, pc} -_021F0930: - ldr r1, _021F0AEC ; =0x02218798 - add r0, sp, #0 - bl sprintf - ldr r1, _021F0B28 ; =0x02218810 - add r2, sp, #0 - mov r0, r4 - bl gpiSendUserInfo - cmp r0, #0 - beq _021F0ADC - add sp, sp, #0x10 - ldmia sp!, {r4, pc} -_021F095C: - ldr r1, _021F0AEC ; =0x02218798 - cmp r2, #0 - movne r2, #1 - add r0, sp, #0 - bl sprintf - ldr r1, _021F0B2C ; =0x02218824 - add r2, sp, #0 - mov r0, r4 - bl gpiSendUserInfo - cmp r0, #0 - beq _021F0ADC - add sp, sp, #0x10 - ldmia sp!, {r4, pc} -_021F0990: - ldr r1, _021F0AEC ; =0x02218798 - add r0, sp, #0 - bl sprintf - ldr r1, _021F0B30 ; =0x022186F0 - add r2, sp, #0 - mov r0, r4 - bl gpiSendLocalInfo - cmp r0, #0 - beq _021F0ADC - add sp, sp, #0x10 - ldmia sp!, {r4, pc} -_021F09BC: - ldr r1, _021F0AEC ; =0x02218798 - add r0, sp, #0 - bl sprintf - ldr r1, _021F0B34 ; =0x022186F8 - add r2, sp, #0 - mov r0, r4 - bl gpiSendLocalInfo - cmp r0, #0 - beq _021F0ADC - add sp, sp, #0x10 - ldmia sp!, {r4, pc} -_021F09E8: - ldr r1, _021F0AEC ; =0x02218798 - add r0, sp, #0 - bl sprintf - ldr r1, _021F0B38 ; =0x02218700 - add r2, sp, #0 - mov r0, r4 - bl gpiSendLocalInfo - cmp r0, #0 - beq _021F0ADC - add sp, sp, #0x10 - ldmia sp!, {r4, pc} -_021F0A14: - ldr r1, _021F0AEC ; =0x02218798 - add r0, sp, #0 - bl sprintf - ldr r1, _021F0B3C ; =0x02218708 - add r2, sp, #0 - mov r0, r4 - bl gpiSendLocalInfo - cmp r0, #0 - beq _021F0ADC - add sp, sp, #0x10 - ldmia sp!, {r4, pc} -_021F0A40: - ldr r1, _021F0AEC ; =0x02218798 - add r0, sp, #0 - bl sprintf - ldr r1, _021F0B40 ; =0x02218710 - add r2, sp, #0 - mov r0, r4 - bl gpiSendLocalInfo - cmp r0, #0 - beq _021F0ADC - add sp, sp, #0x10 - ldmia sp!, {r4, pc} -_021F0A6C: - ldr r1, _021F0AEC ; =0x02218798 - add r0, sp, #0 - bl sprintf - ldr r1, _021F0B44 ; =0x02218718 - add r2, sp, #0 - mov r0, r4 - bl gpiSendLocalInfo - cmp r0, #0 - beq _021F0ADC - add sp, sp, #0x10 - ldmia sp!, {r4, pc} -_021F0A98: - ldr r1, _021F0AEC ; =0x02218798 - add r0, sp, #0 - bl sprintf - ldr r1, _021F0B48 ; =0x02218720 - add r2, sp, #0 - mov r0, r4 - bl gpiSendLocalInfo - cmp r0, #0 - beq _021F0ADC - add sp, sp, #0x10 - ldmia sp!, {r4, pc} -_021F0AC4: - ldr r1, _021F0B4C ; =0x02218834 - mov r0, r4 - bl gpiSetErrorString - add sp, sp, #0x10 - mov r0, #2 - ldmia sp!, {r4, pc} -_021F0ADC: - mov r0, #0 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_021F0AE8: .word Unk_ov4_02218784 -_021F0AEC: .word Unk_ov4_02218798 -_021F0AF0: .word Unk_ov4_02218698 -_021F0AF4: .word 0x00000501 -_021F0AF8: .word Unk_ov4_022186D8 -_021F0AFC: .word Unk_ov4_0221879C -_021F0B00: .word Unk_ov4_022187A0 -_021F0B04: .word Unk_ov4_022187A4 -_021F0B08: .word Unk_ov4_022187A8 -_021F0B0C: .word Unk_ov4_02218680 -_021F0B10: .word Unk_ov4_022187B8 -_021F0B14: .word Unk_ov4_022187C8 -_021F0B18: .word Unk_ov4_022187D4 -_021F0B1C: .word Unk_ov4_022187E0 -_021F0B20: .word Unk_ov4_022187F0 -_021F0B24: .word Unk_ov4_02218800 -_021F0B28: .word Unk_ov4_02218810 -_021F0B2C: .word Unk_ov4_02218824 -_021F0B30: .word Unk_ov4_022186F0 -_021F0B34: .word Unk_ov4_022186F8 -_021F0B38: .word Unk_ov4_02218700 -_021F0B3C: .word Unk_ov4_02218708 -_021F0B40: .word Unk_ov4_02218710 -_021F0B44: .word Unk_ov4_02218718 -_021F0B48: .word Unk_ov4_02218720 -_021F0B4C: .word Unk_ov4_02218834 - arm_func_end gpiSetInfoi - - arm_func_start gpiSetInfos -gpiSetInfos: ; 0x021F0B50 - stmfd sp!, {r4, r5, r6, lr} - sub sp, sp, #0x100 - mov r6, r0 - movs r5, r2 - ldr r4, [r6, #0] - bne _021F0B7C - ldr r1, _021F12A0 ; =0x02218844 - bl gpiSetErrorString - add sp, sp, #0x100 - mov r0, #2 - ldmia sp!, {r4, r5, r6, pc} -_021F0B7C: - sub r1, r1, #0x700 - cmp r1, #0x1e - addls pc, pc, r1, lsl #2 - b _021F127C -_021F0B8C: ; jump table - b _021F0C08 ; case 0 - b _021F0C68 ; case 1 - b _021F0CCC ; case 2 - b _021F0D34 ; case 3 - b _021F0D98 ; case 4 - b _021F0DC8 ; case 5 - b _021F0F4C ; case 6 - b _021F0DF8 ; case 7 - b _021F0E28 ; case 8 - b _021F0E58 ; case 9 - b _021F127C ; case 10 - b _021F0EB0 ; case 11 - b _021F127C ; case 12 - b _021F0F7C ; case 13 - b _021F0FA4 ; case 14 - b _021F0FCC ; case 15 - b _021F0FFC ; case 16 - b _021F1024 ; case 17 - b _021F1054 ; case 18 - b _021F127C ; case 19 - b _021F107C ; case 20 - b _021F10A4 ; case 21 - b _021F10CC ; case 22 - b _021F10FC ; case 23 - b _021F112C ; case 24 - b _021F115C ; case 25 - b _021F118C ; case 26 - b _021F11BC ; case 27 - b _021F11EC ; case 28 - b _021F121C ; case 29 - b _021F124C ; case 30 -_021F0C08: - ldrsb r1, [r5] - cmp r1, #0 - bne _021F0C28 - ldr r1, _021F12A0 ; =0x02218844 - bl gpiSetErrorString - add sp, sp, #0x100 - mov r0, #2 - ldmia sp!, {r4, r5, r6, pc} -_021F0C28: - add r0, sp, #0 - mov r1, r5 - mov r2, #0x1f - bl strzcpy - add r1, sp, #0 - add r0, r4, #0x110 - mov r2, #0x1f - bl strzcpy - ldr r1, _021F12A4 ; =0x02218648 - add r2, sp, #0 - mov r0, r6 - bl gpiSendLocalInfo - cmp r0, #0 - beq _021F1294 - add sp, sp, #0x100 - ldmia sp!, {r4, r5, r6, pc} -_021F0C68: - ldrsb r1, [r5] - cmp r1, #0 - bne _021F0C88 - ldr r1, _021F12A0 ; =0x02218844 - bl gpiSetErrorString - add sp, sp, #0x100 - mov r0, #2 - ldmia sp!, {r4, r5, r6, pc} -_021F0C88: - add r0, sp, #0 - mov r1, r5 - mov r2, #0x15 - bl strzcpy - add r0, r4, #0x2f - add r1, sp, #0 - add r0, r0, #0x100 - mov r2, #0x15 - bl strzcpy - ldr r1, _021F12A8 ; =0x02218650 - add r2, sp, #0 - mov r0, r6 - bl gpiSendLocalInfo - cmp r0, #0 - beq _021F1294 - add sp, sp, #0x100 - ldmia sp!, {r4, r5, r6, pc} -_021F0CCC: - ldrsb r1, [r5] - cmp r1, #0 - bne _021F0CEC - ldr r1, _021F12A0 ; =0x02218844 - bl gpiSetErrorString - add sp, sp, #0x100 - mov r0, #2 - ldmia sp!, {r4, r5, r6, pc} -_021F0CEC: - add r0, sp, #0 - mov r1, r5 - mov r2, #0x33 - bl strzcpy - add r0, sp, #0 - bl _strlwr - add r1, sp, #0 - add r0, r4, #0x144 - mov r2, #0x33 - bl strzcpy - ldr r1, _021F12AC ; =0x02218660 - add r2, sp, #0 - mov r0, r6 - bl gpiSendUserInfo - cmp r0, #0 - beq _021F1294 - add sp, sp, #0x100 - ldmia sp!, {r4, r5, r6, pc} -_021F0D34: - ldrsb r1, [r5] - cmp r1, #0 - bne _021F0D54 - ldr r1, _021F12A0 ; =0x02218844 - bl gpiSetErrorString - add sp, sp, #0x100 - mov r0, #2 - ldmia sp!, {r4, r5, r6, pc} -_021F0D54: - add r0, sp, #0 - mov r1, r5 - mov r2, #0x1f - bl strzcpy - add r0, r4, #0x77 - add r1, sp, #0 - add r0, r0, #0x100 - mov r2, #0x1f - bl strzcpy - ldr r1, _021F12B0 ; =0x02218854 - add r2, sp, #0 - mov r0, r6 - bl gpiSendUserInfo - cmp r0, #0 - beq _021F1294 - add sp, sp, #0x100 - ldmia sp!, {r4, r5, r6, pc} -_021F0D98: - add r0, sp, #0 - mov r1, r5 - mov r2, #0x1f - bl strzcpy - ldr r1, _021F12B4 ; =0x02218668 - add r2, sp, #0 - mov r0, r6 - bl gpiSendLocalInfo - cmp r0, #0 - beq _021F1294 - add sp, sp, #0x100 - ldmia sp!, {r4, r5, r6, pc} -_021F0DC8: - add r0, sp, #0 - mov r1, r5 - mov r2, #0x1f - bl strzcpy - ldr r1, _021F12B8 ; =0x02218674 - add r2, sp, #0 - mov r0, r6 - bl gpiSendLocalInfo - cmp r0, #0 - beq _021F1294 - add sp, sp, #0x100 - ldmia sp!, {r4, r5, r6, pc} -_021F0DF8: - add r0, sp, #0 - mov r1, r5 - mov r2, #0x4c - bl strzcpy - ldr r1, _021F12BC ; =0x0221868C - add r2, sp, #0 - mov r0, r6 - bl gpiSendLocalInfo - cmp r0, #0 - beq _021F1294 - add sp, sp, #0x100 - ldmia sp!, {r4, r5, r6, pc} -_021F0E28: - add r0, sp, #0 - mov r1, r5 - mov r2, #0xb - bl strzcpy - ldr r1, _021F12C0 ; =0x02218698 - add r2, sp, #0 - mov r0, r6 - bl gpiSendLocalInfo - cmp r0, #0 - beq _021F1294 - add sp, sp, #0x100 - ldmia sp!, {r4, r5, r6, pc} -_021F0E58: - mov r0, r5 - bl strlen - cmp r0, #2 - beq _021F0E80 - ldr r1, _021F12C4 ; =0x02218860 - mov r0, r6 - bl gpiSetErrorString - add sp, sp, #0x100 - mov r0, #2 - ldmia sp!, {r4, r5, r6, pc} -_021F0E80: - add r0, sp, #0 - mov r1, r5 - mov r2, #3 - bl strzcpy - ldr r1, _021F12C8 ; =0x022186A4 - add r2, sp, #0 - mov r0, r6 - bl gpiSendLocalInfo - cmp r0, #0 - beq _021F1294 - add sp, sp, #0x100 - ldmia sp!, {r4, r5, r6, pc} -_021F0EB0: - ldrsb r1, [r5] - cmp r1, #0 - blt _021F0ECC - cmp r1, #0x80 - bge _021F0ECC - ldr r0, _021F12CC ; =0x020FE7E4 - ldrb r1, [r0, r1] -_021F0ECC: - mov r0, r1, lsl #0x18 - mov r0, r0, asr #0x18 - cmp r0, #0x4d - add r2, sp, #0 - bne _021F0EF8 - ldr r0, _021F12D0 ; =0x0221879C - ldrb r1, [r0] - ldrb r0, [r0, #1] - strb r1, [r2] - strb r0, [r2, #1] - b _021F0F2C -_021F0EF8: - cmp r0, #0x46 - bne _021F0F18 - ldr r0, _021F12D4 ; =0x022187A0 - ldrb r1, [r0] - ldrb r0, [r0, #1] - strb r1, [r2] - strb r0, [r2, #1] - b _021F0F2C -_021F0F18: - ldr r0, _021F12D8 ; =0x022187A4 - ldrb r1, [r0] - ldrb r0, [r0, #1] - strb r1, [r2] - strb r0, [r2, #1] -_021F0F2C: - ldr r1, _021F12DC ; =0x022186D8 - add r2, sp, #0 - mov r0, r6 - bl gpiSendLocalInfo - cmp r0, #0 - beq _021F1294 - add sp, sp, #0x100 - ldmia sp!, {r4, r5, r6, pc} -_021F0F4C: - add r0, sp, #0 - mov r1, r5 - mov r2, #0x100 - bl strzcpy - ldr r1, _021F12E0 ; =0x02218680 - add r2, sp, #0 - mov r0, r6 - bl gpiSendLocalInfo - cmp r0, #0 - beq _021F1294 - add sp, sp, #0x100 - ldmia sp!, {r4, r5, r6, pc} -_021F0F7C: - mov r0, r5 - bl atoi - mov r2, r0 - ldr r1, _021F12E4 ; =0x0000070D - mov r0, r6 - bl gpiSetInfoi - cmp r0, #0 - beq _021F1294 - add sp, sp, #0x100 - ldmia sp!, {r4, r5, r6, pc} -_021F0FA4: - mov r0, r5 - bl atoi - mov r2, r0 - ldr r1, _021F12E8 ; =0x0000070E - mov r0, r6 - bl gpiSetInfoi - cmp r0, #0 - beq _021F1294 - add sp, sp, #0x100 - ldmia sp!, {r4, r5, r6, pc} -_021F0FCC: - add r0, sp, #0 - mov r1, r5 - mov r2, #0x100 - bl strzcpy - ldr r1, _021F12EC ; =0x02218878 - add r2, sp, #0 - mov r0, r6 - bl gpiSendLocalInfo - cmp r0, #0 - beq _021F1294 - add sp, sp, #0x100 - ldmia sp!, {r4, r5, r6, pc} -_021F0FFC: - mov r0, r5 - bl atoi - mov r2, r0 - mov r0, r6 - mov r1, #0x710 - bl gpiSetInfoi - cmp r0, #0 - beq _021F1294 - add sp, sp, #0x100 - ldmia sp!, {r4, r5, r6, pc} -_021F1024: - add r0, sp, #0 - mov r1, r5 - mov r2, #0x100 - bl strzcpy - ldr r1, _021F12F0 ; =0x0221888C - add r2, sp, #0 - mov r0, r6 - bl gpiSendLocalInfo - cmp r0, #0 - beq _021F1294 - add sp, sp, #0x100 - ldmia sp!, {r4, r5, r6, pc} -_021F1054: - mov r0, r5 - bl atoi - mov r2, r0 - ldr r1, _021F12F4 ; =0x00000712 - mov r0, r6 - bl gpiSetInfoi - cmp r0, #0 - beq _021F1294 - add sp, sp, #0x100 - ldmia sp!, {r4, r5, r6, pc} -_021F107C: - mov r0, r5 - bl atoi - mov r2, r0 - ldr r1, _021F12F8 ; =0x00000714 - mov r0, r6 - bl gpiSetInfoi - cmp r0, #0 - beq _021F1294 - add sp, sp, #0x100 - ldmia sp!, {r4, r5, r6, pc} -_021F10A4: - mov r0, r5 - bl atoi - mov r2, r0 - ldr r1, _021F12FC ; =0x00000715 - mov r0, r6 - bl gpiSetInfoi - cmp r0, #0 - beq _021F1294 - add sp, sp, #0x100 - ldmia sp!, {r4, r5, r6, pc} -_021F10CC: - add r0, sp, #0 - mov r1, r5 - mov r2, #0x100 - bl strzcpy - ldr r1, _021F1300 ; =0x022188A0 - add r2, sp, #0 - mov r0, r6 - bl gpiSendLocalInfo - cmp r0, #0 - beq _021F1294 - add sp, sp, #0x100 - ldmia sp!, {r4, r5, r6, pc} -_021F10FC: - add r0, sp, #0 - mov r1, r5 - mov r2, #0x33 - bl strzcpy - ldr r1, _021F1304 ; =0x022186E8 - add r2, sp, #0 - mov r0, r6 - bl gpiSendLocalInfo - cmp r0, #0 - beq _021F1294 - add sp, sp, #0x100 - ldmia sp!, {r4, r5, r6, pc} -_021F112C: - add r0, sp, #0 - mov r1, r5 - mov r2, #0x100 - bl strzcpy - ldr r1, _021F1308 ; =0x022186F0 - add r2, sp, #0 - mov r0, r6 - bl gpiSendLocalInfo - cmp r0, #0 - beq _021F1294 - add sp, sp, #0x100 - ldmia sp!, {r4, r5, r6, pc} -_021F115C: - add r0, sp, #0 - mov r1, r5 - mov r2, #0x100 - bl strzcpy - ldr r1, _021F130C ; =0x022186F8 - add r2, sp, #0 - mov r0, r6 - bl gpiSendLocalInfo - cmp r0, #0 - beq _021F1294 - add sp, sp, #0x100 - ldmia sp!, {r4, r5, r6, pc} -_021F118C: - add r0, sp, #0 - mov r1, r5 - mov r2, #0x100 - bl strzcpy - ldr r1, _021F1310 ; =0x02218700 - add r2, sp, #0 - mov r0, r6 - bl gpiSendLocalInfo - cmp r0, #0 - beq _021F1294 - add sp, sp, #0x100 - ldmia sp!, {r4, r5, r6, pc} -_021F11BC: - add r0, sp, #0 - mov r1, r5 - mov r2, #0x100 - bl strzcpy - ldr r1, _021F1314 ; =0x02218708 - add r2, sp, #0 - mov r0, r6 - bl gpiSendLocalInfo - cmp r0, #0 - beq _021F1294 - add sp, sp, #0x100 - ldmia sp!, {r4, r5, r6, pc} -_021F11EC: - add r0, sp, #0 - mov r1, r5 - mov r2, #0x100 - bl strzcpy - ldr r1, _021F1318 ; =0x02218710 - add r2, sp, #0 - mov r0, r6 - bl gpiSendLocalInfo - cmp r0, #0 - beq _021F1294 - add sp, sp, #0x100 - ldmia sp!, {r4, r5, r6, pc} -_021F121C: - add r0, sp, #0 - mov r1, r5 - mov r2, #0x100 - bl strzcpy - ldr r1, _021F131C ; =0x02218718 - add r2, sp, #0 - mov r0, r6 - bl gpiSendLocalInfo - cmp r0, #0 - beq _021F1294 - add sp, sp, #0x100 - ldmia sp!, {r4, r5, r6, pc} -_021F124C: - add r0, sp, #0 - mov r1, r5 - mov r2, #0x100 - bl strzcpy - ldr r1, _021F1320 ; =0x02218720 - add r2, sp, #0 - mov r0, r6 - bl gpiSendLocalInfo - cmp r0, #0 - beq _021F1294 - add sp, sp, #0x100 - ldmia sp!, {r4, r5, r6, pc} -_021F127C: - ldr r1, _021F1324 ; =0x02218834 - mov r0, r6 - bl gpiSetErrorString - add sp, sp, #0x100 - mov r0, #2 - ldmia sp!, {r4, r5, r6, pc} -_021F1294: - mov r0, #0 - add sp, sp, #0x100 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_021F12A0: .word Unk_ov4_02218844 -_021F12A4: .word Unk_ov4_02218648 -_021F12A8: .word Unk_ov4_02218650 -_021F12AC: .word Unk_ov4_02218660 -_021F12B0: .word Unk_ov4_02218854 -_021F12B4: .word Unk_ov4_02218668 -_021F12B8: .word Unk_ov4_02218674 -_021F12BC: .word Unk_ov4_0221868C -_021F12C0: .word Unk_ov4_02218698 -_021F12C4: .word Unk_ov4_02218860 -_021F12C8: .word Unk_ov4_022186A4 -_021F12CC: .word 0x020FE7E4 -_021F12D0: .word Unk_ov4_0221879C -_021F12D4: .word Unk_ov4_022187A0 -_021F12D8: .word Unk_ov4_022187A4 -_021F12DC: .word Unk_ov4_022186D8 -_021F12E0: .word Unk_ov4_02218680 -_021F12E4: .word 0x0000070D -_021F12E8: .word 0x0000070E -_021F12EC: .word Unk_ov4_02218878 -_021F12F0: .word Unk_ov4_0221888C -_021F12F4: .word 0x00000712 -_021F12F8: .word 0x00000714 -_021F12FC: .word 0x00000715 -_021F1300: .word Unk_ov4_022188A0 -_021F1304: .word Unk_ov4_022186E8 -_021F1308: .word Unk_ov4_022186F0 -_021F130C: .word Unk_ov4_022186F8 -_021F1310: .word Unk_ov4_02218700 -_021F1314: .word Unk_ov4_02218708 -_021F1318: .word Unk_ov4_02218710 -_021F131C: .word Unk_ov4_02218718 -_021F1320: .word Unk_ov4_02218720 -_021F1324: .word Unk_ov4_02218834 - arm_func_end gpiSetInfos - - arm_func_start gpiSendGetInfo -gpiSendGetInfo: ; 0x021F1328 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - ldr r4, [r7, #0] - mov r5, r2 - mov r6, r1 - ldr r2, _021F13B0 ; =0x022188AC - add r1, r4, #0x1f4 - bl gpiAppendStringToBuffer - ldr r2, [r4, #0x198] - mov r0, r7 - add r1, r4, #0x1f4 - bl gpiAppendIntToBuffer - ldr r2, _021F13B4 ; =0x0221862C - mov r0, r7 - add r1, r4, #0x1f4 - bl gpiAppendStringToBuffer - mov r2, r6 - mov r0, r7 - add r1, r4, #0x1f4 - bl gpiAppendIntToBuffer - mov r0, r7 - add r1, r4, #0x1f4 - ldr r2, _021F13B8 ; =0x022188C4 - bl gpiAppendStringToBuffer - mov r2, r5 - mov r0, r7 - add r1, r4, #0x1f4 - bl gpiAppendIntToBuffer - mov r0, r7 - add r1, r4, #0x1f4 - ldr r2, _021F13BC ; =0x02218768 - bl gpiAppendStringToBuffer - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021F13B0: .word Unk_ov4_022188AC -_021F13B4: .word Unk_ov4_0221862C -_021F13B8: .word Unk_ov4_022188C4 -_021F13BC: .word Unk_ov4_02218768 - arm_func_end gpiSendGetInfo - - arm_func_start gpiGetInfo -gpiGetInfo: ; 0x021F13C0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x1c - mov r8, r0 - ldr r0, [r8] - mov r4, #0 - str r4, [sp, #0x14] - ldr r0, [r0, #0x100] - cmp r2, #1 - moveq r4, #1 - cmp r0, #0 - ldr r5, [sp, #0x38] - moveq r4, #0 - cmp r5, #0 - mov r7, r1 - mov r6, r3 - cmpne r4, #0 - beq _021F14E0 - add r2, sp, #0x18 - mov r0, r8 - mov r1, r7 - bl gpiGetProfile - cmp r0, #0 - ldrne r0, [sp, #0x18] - ldrne r0, [r0, #0xc] - cmpne r0, #0 - beq _021F14E0 - mov r0, #0x204 - bl DWCi_GsMalloc - movs r4, r0 - bne _021F1450 - ldr r1, _021F1560 ; =0x02218740 - mov r0, r8 - bl gpiSetErrorString - add sp, sp, #0x1c - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_021F1450: - ldr r0, [sp, #0x18] - mov r1, r4 - ldr r0, [r0, #0xc] - bl gpiInfoCacheToArg - mov r2, #0 - ldr ip, [sp, #0x3c] - stmia r4, {r2, r7} - mov r0, #1 - stmia sp, {r0, r5} - add r3, sp, #0x14 - mov r0, r8 - mov r1, #2 - str r5, [sp, #0xc] - str ip, [sp, #0x10] - str ip, [sp, #8] - bl gpiAddOperation - cmp r0, #0 - addne sp, sp, #0x1c - ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} - ldr r2, [sp, #0x14] - add r1, sp, #0xc - ldr r5, [r2, #0x18] - mov r0, r8 - str r2, [sp] - mov r2, #0 - str r2, [sp, #4] - mov r3, r4 - ldmia r1, {r1, r2} - bl gpiAddCallback - cmp r0, #0 - addne sp, sp, #0x1c - ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} - ldr r1, [sp, #0x14] - mov r0, r8 - bl gpiRemoveOperation - b _021F1534 -_021F14E0: - str r6, [sp] - ldr r4, [sp, #0x3c] - str r5, [sp, #4] - add r3, sp, #0x14 - mov r0, r8 - mov r1, #2 - mov r2, #0 - str r4, [sp, #8] - bl gpiAddOperation - cmp r0, #0 - addne sp, sp, #0x1c - ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} - ldr r1, [sp, #0x14] - mov r0, r8 - ldr r5, [r1, #0x18] - mov r1, r7 - mov r2, r5 - bl gpiSendGetInfo - cmp r0, #0 - addne sp, sp, #0x1c - ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} -_021F1534: - cmp r6, #0 - beq _021F1554 - mov r0, r8 - mov r1, r5 - bl gpiProcess - cmp r0, #0 - addne sp, sp, #0x1c - ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} -_021F1554: - mov r0, #0 - add sp, sp, #0x1c - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_021F1560: .word Unk_ov4_02218740 - arm_func_end gpiGetInfo - - arm_func_start gpiSetInfoCache -gpiSetInfoCache: ; 0x021F1564 - stmfd sp!, {r4, r5, r6, lr} - ldr r0, [r0, #0] - mov r5, r1 - ldr r0, [r0, #0x100] - mov r4, r2 - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r5 - bl gpiFreeInfoCache - mov r0, #0xf0 - bl DWCi_GsMalloc - movs r6, r0 - str r0, [r5, #0xc] - beq _021F1628 - mov lr, r4 - mov ip, #0xf -_021F15A8: - ldmia lr!, {r0, r1, r2, r3} - stmia r6!, {r0, r1, r2, r3} - subs ip, ip, #1 - bne _021F15A8 - ldr r0, [r4, #0] - bl goastrdup - ldr r1, [r5, #0xc] - str r0, [r1, #0] - ldr r0, [r4, #4] - bl goastrdup - ldr r1, [r5, #0xc] - str r0, [r1, #4] - ldr r0, [r4, #8] - bl goastrdup - ldr r1, [r5, #0xc] - str r0, [r1, #8] - ldr r0, [r4, #0xc] - bl goastrdup - ldr r1, [r5, #0xc] - str r0, [r1, #0xc] - ldr r0, [r4, #0x10] - bl goastrdup - ldr r1, [r5, #0xc] - str r0, [r1, #0x10] - ldr r0, [r4, #0x14] - bl goastrdup - ldr r1, [r5, #0xc] - str r0, [r1, #0x14] - ldr r0, [r4, #0xc8] - bl goastrdup - ldr r1, [r5, #0xc] - str r0, [r1, #0xc8] -_021F1628: - ldr r0, [r5, #0xc] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end gpiSetInfoCache - - arm_func_start gpiFreeInfoCache -gpiFreeInfoCache: ; 0x021F163C - stmfd sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4, #0xc] - cmp r0, #0 - ldmeqia sp!, {r4, pc} - ldr r0, [r0, #0] - bl DWCi_GsFree - ldr r0, [r4, #0xc] - mov r1, #0 - str r1, [r0, #0] - ldr r0, [r4, #0xc] - ldr r0, [r0, #4] - bl DWCi_GsFree - ldr r0, [r4, #0xc] - mov r1, #0 - str r1, [r0, #4] - ldr r0, [r4, #0xc] - ldr r0, [r0, #8] - bl DWCi_GsFree - ldr r0, [r4, #0xc] - mov r1, #0 - str r1, [r0, #8] - ldr r0, [r4, #0xc] - ldr r0, [r0, #0xc] - bl DWCi_GsFree - ldr r0, [r4, #0xc] - mov r1, #0 - str r1, [r0, #0xc] - ldr r0, [r4, #0xc] - ldr r0, [r0, #0x10] - bl DWCi_GsFree - ldr r0, [r4, #0xc] - mov r1, #0 - str r1, [r0, #0x10] - ldr r0, [r4, #0xc] - ldr r0, [r0, #0x14] - bl DWCi_GsFree - ldr r0, [r4, #0xc] - mov r1, #0 - str r1, [r0, #0x14] - ldr r0, [r4, #0xc] - ldr r0, [r0, #0xc8] - bl DWCi_GsFree - ldr r0, [r4, #0xc] - mov r1, #0 - str r1, [r0, #0xc8] - ldr r0, [r4, #0xc] - bl DWCi_GsFree - mov r0, #0 - str r0, [r4, #0xc] - ldmia sp!, {r4, pc} - arm_func_end gpiFreeInfoCache - - .data - - - .global Unk_ov4_0221859C -Unk_ov4_0221859C: ; 0x0221859C - .incbin "incbin/overlay4_data.bin", 0x271C, 0x272C - 0x271C - - .global Unk_ov4_022185AC -Unk_ov4_022185AC: ; 0x022185AC - .incbin "incbin/overlay4_data.bin", 0x272C, 0x2740 - 0x272C - - .global Unk_ov4_022185C0 -Unk_ov4_022185C0: ; 0x022185C0 - .incbin "incbin/overlay4_data.bin", 0x2740, 0x274C - 0x2740 - - .global Unk_ov4_022185CC -Unk_ov4_022185CC: ; 0x022185CC - .incbin "incbin/overlay4_data.bin", 0x274C, 0x275C - 0x274C - - .global Unk_ov4_022185DC -Unk_ov4_022185DC: ; 0x022185DC - .incbin "incbin/overlay4_data.bin", 0x275C, 0x2774 - 0x275C - - .global Unk_ov4_022185F4 -Unk_ov4_022185F4: ; 0x022185F4 - .incbin "incbin/overlay4_data.bin", 0x2774, 0x277C - 0x2774 - - .global Unk_ov4_022185FC -Unk_ov4_022185FC: ; 0x022185FC - .incbin "incbin/overlay4_data.bin", 0x277C, 0x27AC - 0x277C - - .global Unk_ov4_0221862C -Unk_ov4_0221862C: ; 0x0221862C - .incbin "incbin/overlay4_data.bin", 0x27AC, 0x27B8 - 0x27AC - - .global Unk_ov4_02218638 -Unk_ov4_02218638: ; 0x02218638 - .incbin "incbin/overlay4_data.bin", 0x27B8, 0x27C8 - 0x27B8 - - .global Unk_ov4_02218648 -Unk_ov4_02218648: ; 0x02218648 - .incbin "incbin/overlay4_data.bin", 0x27C8, 0x27D0 - 0x27C8 - - .global Unk_ov4_02218650 -Unk_ov4_02218650: ; 0x02218650 - .incbin "incbin/overlay4_data.bin", 0x27D0, 0x27E0 - 0x27D0 - - .global Unk_ov4_02218660 -Unk_ov4_02218660: ; 0x02218660 - .incbin "incbin/overlay4_data.bin", 0x27E0, 0x27E8 - 0x27E0 - - .global Unk_ov4_02218668 -Unk_ov4_02218668: ; 0x02218668 - .incbin "incbin/overlay4_data.bin", 0x27E8, 0x27F4 - 0x27E8 - - .global Unk_ov4_02218674 -Unk_ov4_02218674: ; 0x02218674 - .incbin "incbin/overlay4_data.bin", 0x27F4, 0x2800 - 0x27F4 - - .global Unk_ov4_02218680 -Unk_ov4_02218680: ; 0x02218680 - .incbin "incbin/overlay4_data.bin", 0x2800, 0x280C - 0x2800 - - .global Unk_ov4_0221868C -Unk_ov4_0221868C: ; 0x0221868C - .incbin "incbin/overlay4_data.bin", 0x280C, 0x2818 - 0x280C - - .global Unk_ov4_02218698 -Unk_ov4_02218698: ; 0x02218698 - .incbin "incbin/overlay4_data.bin", 0x2818, 0x2824 - 0x2818 - - .global Unk_ov4_022186A4 -Unk_ov4_022186A4: ; 0x022186A4 - .incbin "incbin/overlay4_data.bin", 0x2824, 0x2834 - 0x2824 - - .global Unk_ov4_022186B4 -Unk_ov4_022186B4: ; 0x022186B4 - .incbin "incbin/overlay4_data.bin", 0x2834, 0x283C - 0x2834 - - .global Unk_ov4_022186BC -Unk_ov4_022186BC: ; 0x022186BC - .incbin "incbin/overlay4_data.bin", 0x283C, 0x2844 - 0x283C - - .global Unk_ov4_022186C4 -Unk_ov4_022186C4: ; 0x022186C4 - .incbin "incbin/overlay4_data.bin", 0x2844, 0x284C - 0x2844 - - .global Unk_ov4_022186CC -Unk_ov4_022186CC: ; 0x022186CC - .incbin "incbin/overlay4_data.bin", 0x284C, 0x2858 - 0x284C - - .global Unk_ov4_022186D8 -Unk_ov4_022186D8: ; 0x022186D8 - .incbin "incbin/overlay4_data.bin", 0x2858, 0x2860 - 0x2858 - - .global Unk_ov4_022186E0 -Unk_ov4_022186E0: ; 0x022186E0 - .incbin "incbin/overlay4_data.bin", 0x2860, 0x2868 - 0x2860 - - .global Unk_ov4_022186E8 -Unk_ov4_022186E8: ; 0x022186E8 - .incbin "incbin/overlay4_data.bin", 0x2868, 0x2870 - 0x2868 - - .global Unk_ov4_022186F0 -Unk_ov4_022186F0: ; 0x022186F0 - .incbin "incbin/overlay4_data.bin", 0x2870, 0x2878 - 0x2870 - - .global Unk_ov4_022186F8 -Unk_ov4_022186F8: ; 0x022186F8 - .incbin "incbin/overlay4_data.bin", 0x2878, 0x2880 - 0x2878 - - .global Unk_ov4_02218700 -Unk_ov4_02218700: ; 0x02218700 - .incbin "incbin/overlay4_data.bin", 0x2880, 0x2888 - 0x2880 - - .global Unk_ov4_02218708 -Unk_ov4_02218708: ; 0x02218708 - .incbin "incbin/overlay4_data.bin", 0x2888, 0x2890 - 0x2888 - - .global Unk_ov4_02218710 -Unk_ov4_02218710: ; 0x02218710 - .incbin "incbin/overlay4_data.bin", 0x2890, 0x2898 - 0x2890 - - .global Unk_ov4_02218718 -Unk_ov4_02218718: ; 0x02218718 - .incbin "incbin/overlay4_data.bin", 0x2898, 0x28A0 - 0x2898 - - .global Unk_ov4_02218720 -Unk_ov4_02218720: ; 0x02218720 - .incbin "incbin/overlay4_data.bin", 0x28A0, 0x28A8 - 0x28A0 - - .global Unk_ov4_02218728 -Unk_ov4_02218728: ; 0x02218728 - .incbin "incbin/overlay4_data.bin", 0x28A8, 0x28B0 - 0x28A8 - - .global Unk_ov4_02218730 -Unk_ov4_02218730: ; 0x02218730 - .incbin "incbin/overlay4_data.bin", 0x28B0, 0x28B8 - 0x28B0 - - .global Unk_ov4_02218738 -Unk_ov4_02218738: ; 0x02218738 - .incbin "incbin/overlay4_data.bin", 0x28B8, 0x28C0 - 0x28B8 - - .global Unk_ov4_02218740 -Unk_ov4_02218740: ; 0x02218740 - .incbin "incbin/overlay4_data.bin", 0x28C0, 0x28D0 - 0x28C0 - - .global Unk_ov4_02218750 -Unk_ov4_02218750: ; 0x02218750 - .incbin "incbin/overlay4_data.bin", 0x28D0, 0x28E8 - 0x28D0 - - .global Unk_ov4_02218768 -Unk_ov4_02218768: ; 0x02218768 - .incbin "incbin/overlay4_data.bin", 0x28E8, 0x28F0 - 0x28E8 - - .global Unk_ov4_02218770 -Unk_ov4_02218770: ; 0x02218770 - .incbin "incbin/overlay4_data.bin", 0x28F0, 0x2904 - 0x28F0 - - .global Unk_ov4_02218784 -Unk_ov4_02218784: ; 0x02218784 - .incbin "incbin/overlay4_data.bin", 0x2904, 0x2918 - 0x2904 - - .global Unk_ov4_02218798 -Unk_ov4_02218798: ; 0x02218798 - .incbin "incbin/overlay4_data.bin", 0x2918, 0x291C - 0x2918 - - .global Unk_ov4_0221879C -Unk_ov4_0221879C: ; 0x0221879C - .incbin "incbin/overlay4_data.bin", 0x291C, 0x2920 - 0x291C - - .global Unk_ov4_022187A0 -Unk_ov4_022187A0: ; 0x022187A0 - .incbin "incbin/overlay4_data.bin", 0x2920, 0x2924 - 0x2920 - - .global Unk_ov4_022187A4 -Unk_ov4_022187A4: ; 0x022187A4 - .incbin "incbin/overlay4_data.bin", 0x2924, 0x2928 - 0x2924 - - .global Unk_ov4_022187A8 -Unk_ov4_022187A8: ; 0x022187A8 - .incbin "incbin/overlay4_data.bin", 0x2928, 0x2938 - 0x2928 - - .global Unk_ov4_022187B8 -Unk_ov4_022187B8: ; 0x022187B8 - .incbin "incbin/overlay4_data.bin", 0x2938, 0x2948 - 0x2938 - - .global Unk_ov4_022187C8 -Unk_ov4_022187C8: ; 0x022187C8 - .incbin "incbin/overlay4_data.bin", 0x2948, 0x2954 - 0x2948 - - .global Unk_ov4_022187D4 -Unk_ov4_022187D4: ; 0x022187D4 - .incbin "incbin/overlay4_data.bin", 0x2954, 0x2960 - 0x2954 - - .global Unk_ov4_022187E0 -Unk_ov4_022187E0: ; 0x022187E0 - .incbin "incbin/overlay4_data.bin", 0x2960, 0x2970 - 0x2960 - - .global Unk_ov4_022187F0 -Unk_ov4_022187F0: ; 0x022187F0 - .incbin "incbin/overlay4_data.bin", 0x2970, 0x2980 - 0x2970 - - .global Unk_ov4_02218800 -Unk_ov4_02218800: ; 0x02218800 - .incbin "incbin/overlay4_data.bin", 0x2980, 0x2990 - 0x2980 - - .global Unk_ov4_02218810 -Unk_ov4_02218810: ; 0x02218810 - .incbin "incbin/overlay4_data.bin", 0x2990, 0x29A4 - 0x2990 - - .global Unk_ov4_02218824 -Unk_ov4_02218824: ; 0x02218824 - .incbin "incbin/overlay4_data.bin", 0x29A4, 0x29B4 - 0x29A4 - - .global Unk_ov4_02218834 -Unk_ov4_02218834: ; 0x02218834 - .incbin "incbin/overlay4_data.bin", 0x29B4, 0x29C4 - 0x29B4 - - .global Unk_ov4_02218844 -Unk_ov4_02218844: ; 0x02218844 - .incbin "incbin/overlay4_data.bin", 0x29C4, 0x29D4 - 0x29C4 - - .global Unk_ov4_02218854 -Unk_ov4_02218854: ; 0x02218854 - .incbin "incbin/overlay4_data.bin", 0x29D4, 0x29E0 - 0x29D4 - - .global Unk_ov4_02218860 -Unk_ov4_02218860: ; 0x02218860 - .incbin "incbin/overlay4_data.bin", 0x29E0, 0x29F8 - 0x29E0 - - .global Unk_ov4_02218878 -Unk_ov4_02218878: ; 0x02218878 - .incbin "incbin/overlay4_data.bin", 0x29F8, 0x2A0C - 0x29F8 - - .global Unk_ov4_0221888C -Unk_ov4_0221888C: ; 0x0221888C - .incbin "incbin/overlay4_data.bin", 0x2A0C, 0x2A20 - 0x2A0C - - .global Unk_ov4_022188A0 -Unk_ov4_022188A0: ; 0x022188A0 - .incbin "incbin/overlay4_data.bin", 0x2A20, 0x2A2C - 0x2A20 - - .global Unk_ov4_022188AC -Unk_ov4_022188AC: ; 0x022188AC - .incbin "incbin/overlay4_data.bin", 0x2A2C, 0x2A44 - 0x2A2C - - .global Unk_ov4_022188C4 -Unk_ov4_022188C4: ; 0x022188C4 - .incbin "incbin/overlay4_data.bin", 0x2A44, 0x5 - diff --git a/subprojects/gamespy/libraries/gp/asm/gpioperation.s b/subprojects/gamespy/libraries/gp/asm/gpioperation.s deleted file mode 100644 index 8ca395200a..0000000000 --- a/subprojects/gamespy/libraries/gp/asm/gpioperation.s +++ /dev/null @@ -1,514 +0,0 @@ - .include "macros/function.inc" - .include "include/gpioperation.inc" - - - - .text - - - arm_func_start gpiFailedOpCallback -gpiFailedOpCallback: ; 0x021F1708 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x10 - movs r7, r0 - mov r6, r1 - ldr r4, [r7, #0] - bne _021F1734 - ldr r0, _021F1A34 ; =0x02218908 - ldr r1, _021F1A38 ; =0x0221891C - ldr r2, _021F1A3C ; =0x022188E0 - mov r3, #0x22 - bl __msl_assertion_failed -_021F1734: - ldr r0, [r7, #0] - cmp r0, #0 - bne _021F1754 - ldr r0, _021F1A40 ; =0x0221892C - ldr r1, _021F1A38 ; =0x0221891C - ldr r2, _021F1A3C ; =0x022188E0 - mov r3, #0x23 - bl __msl_assertion_failed -_021F1754: - cmp r6, #0 - bne _021F1770 - ldr r0, _021F1A44 ; =0x02218940 - ldr r1, _021F1A38 ; =0x0221891C - ldr r2, _021F1A3C ; =0x022188E0 - mov r3, #0x24 - bl __msl_assertion_failed -_021F1770: - ldr r1, [r6, #0xc] - ldr r0, [r6, #0x10] - str r1, [sp, #8] - str r0, [sp, #0xc] - cmp r1, #0 - beq _021F1A28 - ldr r0, [r6, #0] - cmp r0, #4 - addls pc, pc, r0, lsl #2 - b _021F1A14 -_021F1798: ; jump table - b _021F17AC ; case 0 - b _021F1838 ; case 1 - b _021F18B4 ; case 2 - b _021F1920 ; case 3 - b _021F19A8 ; case 4 -_021F17AC: - mov r0, #0x20 - bl DWCi_GsMalloc - movs r5, r0 - bne _021F17D4 - ldr r1, _021F1A48 ; =0x02218954 - mov r0, r7 - bl gpiSetErrorString - add sp, sp, #0x10 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_021F17D4: - mov r1, #0 - mov r2, #0x20 - bl memset - ldr r1, [r6, #0x1c] - ldr r0, _021F1A4C ; =0x00000201 - str r1, [r5, #0] - ldr r1, [r4, #0x418] - cmp r1, r0 - bne _021F1808 - ldr r1, [r4, #0x1a0] - mov r0, #0 - str r1, [r5, #4] - str r0, [r4, #0x1a0] -_021F1808: - add r1, sp, #8 - mov r0, r7 - mov r3, r5 - str r6, [sp] - mov r2, #0 - str r2, [sp, #4] - ldmia r1, {r1, r2} - bl gpiAddCallback - cmp r0, #0 - beq _021F1A28 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_021F1838: - mov r0, #8 - bl DWCi_GsMalloc - movs r3, r0 - bne _021F1860 - ldr r1, _021F1A48 ; =0x02218954 - mov r0, r7 - bl gpiSetErrorString - add sp, sp, #0x10 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_021F1860: - mov r2, #0 - strb r2, [r3] - strb r2, [r3, #1] - strb r2, [r3, #2] - strb r2, [r3, #3] - strb r2, [r3, #4] - strb r2, [r3, #5] - strb r2, [r3, #6] - strb r2, [r3, #7] - ldr r0, [r6, #0x1c] - add r1, sp, #8 - str r0, [r3, #0] - str r6, [sp] - str r2, [sp, #4] - mov r0, r7 - ldmia r1, {r1, r2} - bl gpiAddCallback - cmp r0, #0 - beq _021F1A28 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_021F18B4: - mov r0, #0x204 - bl DWCi_GsMalloc - movs r4, r0 - bne _021F18DC - ldr r1, _021F1A48 ; =0x02218954 - mov r0, r7 - bl gpiSetErrorString - add sp, sp, #0x10 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_021F18DC: - mov r1, #0 - mov r2, #0x204 - bl memset - ldr r0, [r6, #0x1c] - add r1, sp, #8 - str r0, [r4, #0] - mov r0, r7 - mov r3, r4 - str r6, [sp] - mov r2, #0 - str r2, [sp, #4] - ldmia r1, {r1, r2} - bl gpiAddCallback - cmp r0, #0 - beq _021F1A28 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_021F1920: - mov r0, #0x10 - bl DWCi_GsMalloc - movs r3, r0 - bne _021F1948 - ldr r1, _021F1A48 ; =0x02218954 - mov r0, r7 - bl gpiSetErrorString - add sp, sp, #0x10 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_021F1948: - mov r2, r3 - mov r1, #4 - mov r0, #0 -_021F1954: - strb r0, [r2] - strb r0, [r2, #1] - strb r0, [r2, #2] - strb r0, [r2, #3] - add r2, r2, #4 - subs r1, r1, #1 - bne _021F1954 - ldr r0, [r6, #0x1c] - mov r2, #0 - str r0, [r3, #0] - str r2, [r3, #0xc] - str r6, [sp] - add r1, sp, #8 - str r2, [sp, #4] - mov r0, r7 - ldmia r1, {r1, r2} - bl gpiAddCallback - cmp r0, #0 - beq _021F1A28 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_021F19A8: - mov r0, #4 - bl DWCi_GsMalloc - movs r3, r0 - bne _021F19D0 - ldr r1, _021F1A48 ; =0x02218954 - mov r0, r7 - bl gpiSetErrorString - add sp, sp, #0x10 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_021F19D0: - mov r2, #0 - strb r2, [r3] - strb r2, [r3, #1] - strb r2, [r3, #2] - strb r2, [r3, #3] - ldr r0, [r6, #0x1c] - add r1, sp, #8 - str r0, [r3, #0] - str r6, [sp] - str r2, [sp, #4] - mov r0, r7 - ldmia r1, {r1, r2} - bl gpiAddCallback - cmp r0, #0 - beq _021F1A28 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_021F1A14: - ldr r0, _021F1A50 ; =0x02218964 - ldr r1, _021F1A38 ; =0x0221891C - ldr r2, _021F1A3C ; =0x022188E0 - mov r3, #0x6b - bl __msl_assertion_failed -_021F1A28: - mov r0, #0 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021F1A34: .word Unk_ov4_02218908 -_021F1A38: .word Unk_ov4_0221891C -_021F1A3C: .word Unk_ov4_022188E0 -_021F1A40: .word Unk_ov4_0221892C -_021F1A44: .word Unk_ov4_02218940 -_021F1A48: .word Unk_ov4_02218954 -_021F1A4C: .word 0x00000201 -_021F1A50: .word Unk_ov4_02218964 - arm_func_end gpiFailedOpCallback - - arm_func_start gpiAddOperation -gpiAddOperation: ; 0x021F1A54 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - mov r8, r0 - mov r0, #0x24 - mov r7, r1 - mov r6, r2 - mov r5, r3 - ldr r4, [r8] - bl DWCi_GsMalloc - cmp r0, #0 - bne _021F1A90 - ldr r1, _021F1B08 ; =0x02218954 - mov r0, r8 - bl gpiSetErrorString - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_021F1A90: - str r7, [r0, #0] - ldr r1, [sp, #0x18] - str r6, [r0, #4] - str r1, [r0, #8] - mov r1, #0 - str r1, [r0, #0x14] - cmp r7, #0 - moveq r1, #1 - streq r1, [r0, #0x18] - beq _021F1AD8 - ldr r2, [r4, #0x20c] - add r1, r2, #1 - str r1, [r4, #0x20c] - str r2, [r0, #0x18] - ldr r1, [r4, #0x20c] - cmp r1, #2 - movlt r1, #2 - strlt r1, [r4, #0x20c] -_021F1AD8: - mov r3, #0 - ldr r2, [sp, #0x1c] - str r3, [r0, #0x1c] - ldr r1, [sp, #0x20] - str r2, [r0, #0xc] - str r1, [r0, #0x10] - ldr r1, [r4, #0x424] - str r1, [r0, #0x20] - str r0, [r4, #0x424] - str r0, [r5, #0] - mov r0, r3 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_021F1B08: .word Unk_ov4_02218954 - arm_func_end gpiAddOperation - - arm_func_start gpiDestroyOperation -gpiDestroyOperation: ; 0x021F1B0C - stmfd sp!, {r3, r4, r5, lr} - mov r4, r1 - ldr r1, [r4, #0] - ldr r2, [r0, #0] - cmp r1, #3 - bne _021F1B80 - ldr r0, [r2, #0x210] - ldr r5, [r4, #4] - subs r0, r0, #1 - str r0, [r2, #0x210] - bpl _021F1B4C - ldr r0, _021F1B9C ; =0x02218968 - ldr r1, _021F1BA0 ; =0x0221891C - ldr r2, _021F1BA4 ; =0x022188CC - mov r3, #0xb6 - bl __msl_assertion_failed -_021F1B4C: - ldr r0, [r5, #4] - mov r1, #2 - bl shutdown - ldr r0, [r5, #4] - bl closesocket - ldr r0, [r5, #0x18] - bl DWCi_GsFree - mov r0, #0 - str r0, [r5, #0x18] - ldr r0, [r5, #8] - bl DWCi_GsFree - mov r0, #0 - str r0, [r5, #8] -_021F1B80: - ldr r0, [r4, #4] - bl DWCi_GsFree - mov r1, #0 - mov r0, r4 - str r1, [r4, #4] - bl DWCi_GsFree - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_021F1B9C: .word Unk_ov4_02218968 -_021F1BA0: .word Unk_ov4_0221891C -_021F1BA4: .word Unk_ov4_022188CC - arm_func_end gpiDestroyOperation - - arm_func_start gpiRemoveOperation -gpiRemoveOperation: ; 0x021F1BA8 - stmfd sp!, {r3, lr} - ldr r3, [r0, #0] - mov ip, #0 - ldr r2, [r3, #0x424] - cmp r2, #0 - ldmeqia sp!, {r3, pc} -_021F1BC0: - cmp r2, r1 - bne _021F1BE4 - cmp ip, #0 - ldreq r2, [r2, #0x20] - streq r2, [r3, #0x424] - ldrne r2, [r1, #0x20] - strne r2, [ip, #0x20] - bl gpiDestroyOperation - ldmia sp!, {r3, pc} -_021F1BE4: - mov ip, r2 - ldr r2, [r2, #0x20] - cmp r2, #0 - bne _021F1BC0 - ldmia sp!, {r3, pc} - arm_func_end gpiRemoveOperation - - arm_func_start gpiFindOperationByID -gpiFindOperationByID: ; 0x021F1BF8 - ldr r0, [r0, #0] - ldr r3, [r0, #0x424] - cmp r3, #0 - beq _021F1C30 -_021F1C08: - ldr r0, [r3, #0x18] - cmp r0, r2 - bne _021F1C24 - cmp r1, #0 - strne r3, [r1] - mov r0, #1 - bx lr -_021F1C24: - ldr r3, [r3, #0x20] - cmp r3, #0 - bne _021F1C08 -_021F1C30: - cmp r1, #0 - movne r0, #0 - strne r0, [r1] - mov r0, #0 - bx lr - arm_func_end gpiFindOperationByID - - arm_func_start gpiOperationsAreBlocking -gpiOperationsAreBlocking: ; 0x021F1C44 - ldr r0, [r0, #0] - ldr r1, [r0, #0x424] - cmp r1, #0 - beq _021F1C78 -_021F1C54: - ldr r0, [r1, #8] - cmp r0, #0 - ldrne r0, [r1] - cmpne r0, #3 - movne r0, #1 - bxne lr - ldr r1, [r1, #0x20] - cmp r1, #0 - bne _021F1C54 -_021F1C78: - mov r0, #0 - bx lr - arm_func_end gpiOperationsAreBlocking - - arm_func_start gpiProcessOperation -gpiProcessOperation: ; 0x021F1C80 - stmfd sp!, {r3, r4, r5, lr} - mov r5, r1 - ldr r3, [r5, #0] - mov r4, #0 - cmp r3, #4 - addls pc, pc, r3, lsl #2 - b _021F1CE0 -_021F1C9C: ; jump table - b _021F1CB0 ; case 0 - b _021F1CBC ; case 1 - b _021F1CC8 ; case 2 - b _021F1CE0 ; case 3 - b _021F1CD4 ; case 4 -_021F1CB0: - bl gpiProcessConnect - mov r4, r0 - b _021F1D00 -_021F1CBC: - bl gpiProcessNewProfile - mov r4, r0 - b _021F1D00 -_021F1CC8: - bl gpiProcessGetInfo - mov r4, r0 - b _021F1D00 -_021F1CD4: - bl gpiProcessRegisterUniqueNick - mov r4, r0 - b _021F1D00 -_021F1CE0: - ldr r1, _021F1D10 ; =0x02218988 - mov r2, r3 - bl gpiDebug - ldr r0, _021F1D14 ; =0x02218964 - ldr r1, _021F1D18 ; =0x0221891C - ldr r2, _021F1D1C ; =0x022188F4 - ldr r3, _021F1D20 ; =0x00000146 - bl __msl_assertion_failed -_021F1D00: - cmp r4, #0 - strne r4, [r5, #0x1c] - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_021F1D10: .word Unk_ov4_02218988 -_021F1D14: .word Unk_ov4_02218964 -_021F1D18: .word Unk_ov4_0221891C -_021F1D1C: .word Unk_ov4_022188F4 -_021F1D20: .word 0x00000146 - arm_func_end gpiProcessOperation - - .data - - - .global Unk_ov4_022188CC -Unk_ov4_022188CC: ; 0x022188CC - .incbin "incbin/overlay4_data.bin", 0x2A4C, 0x2A60 - 0x2A4C - - .global Unk_ov4_022188E0 -Unk_ov4_022188E0: ; 0x022188E0 - .incbin "incbin/overlay4_data.bin", 0x2A60, 0x2A74 - 0x2A60 - - .global Unk_ov4_022188F4 -Unk_ov4_022188F4: ; 0x022188F4 - .incbin "incbin/overlay4_data.bin", 0x2A74, 0x2A88 - 0x2A74 - - .global Unk_ov4_02218908 -Unk_ov4_02218908: ; 0x02218908 - .incbin "incbin/overlay4_data.bin", 0x2A88, 0x2A9C - 0x2A88 - - .global Unk_ov4_0221891C -Unk_ov4_0221891C: ; 0x0221891C - .incbin "incbin/overlay4_data.bin", 0x2A9C, 0x2AAC - 0x2A9C - - .global Unk_ov4_0221892C -Unk_ov4_0221892C: ; 0x0221892C - .incbin "incbin/overlay4_data.bin", 0x2AAC, 0x2AC0 - 0x2AAC - - .global Unk_ov4_02218940 -Unk_ov4_02218940: ; 0x02218940 - .incbin "incbin/overlay4_data.bin", 0x2AC0, 0x2AD4 - 0x2AC0 - - .global Unk_ov4_02218954 -Unk_ov4_02218954: ; 0x02218954 - .incbin "incbin/overlay4_data.bin", 0x2AD4, 0x2AE4 - 0x2AD4 - - .global Unk_ov4_02218964 -Unk_ov4_02218964: ; 0x02218964 - .incbin "incbin/overlay4_data.bin", 0x2AE4, 0x2AE8 - 0x2AE4 - - .global Unk_ov4_02218968 -Unk_ov4_02218968: ; 0x02218968 - .incbin "incbin/overlay4_data.bin", 0x2AE8, 0x2B08 - 0x2AE8 - - .global Unk_ov4_02218988 -Unk_ov4_02218988: ; 0x02218988 - .incbin "incbin/overlay4_data.bin", 0x2B08, 0x47 - diff --git a/subprojects/gamespy/libraries/gp/asm/gpipeer.s b/subprojects/gamespy/libraries/gp/asm/gpipeer.s deleted file mode 100644 index f10bdf016f..0000000000 --- a/subprojects/gamespy/libraries/gp/asm/gpipeer.s +++ /dev/null @@ -1,1483 +0,0 @@ - .include "macros/function.inc" - .include "include/gpipeer.inc" - - - - .text - - - arm_func_start gpiProcessPeerInitiatingConnection -gpiProcessPeerInitiatingConnection: ; 0x021F1D24 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x18 - mov r6, r1 - ldr r2, [r6, #0] - mov r7, r0 - sub r2, r2, #0x65 - ldr r4, [r7, #0] - cmp r2, #3 - addls pc, pc, r2, lsl #2 - b _021F1FE4 -_021F1D4C: ; jump table - b _021F1FF8 ; case 0 - b _021F1D5C ; case 1 - b _021F1D70 ; case 2 - b _021F1EF4 ; case 3 -_021F1D5C: - bl gpiPeerStartConnect - cmp r0, #0 - beq _021F1FF8 - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_021F1D70: - ldr r1, [r6, #8] - add r2, sp, #0x14 - bl gpiCheckSocketConnect - cmp r0, #0 - addne sp, sp, #0x18 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [sp, #0x14] - cmp r0, #4 - bne _021F1DAC - ldr r1, _021F2048 ; =0x02218A88 - mov r0, r7 - bl gpiSetErrorString - add sp, sp, #0x18 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_021F1DAC: - cmp r0, #3 - bne _021F1FF8 - ldr r1, [r6, #0xc] - add r2, sp, #8 - mov r0, r7 - mov r5, #1 - bl gpiGetProfile - cmp r0, #0 - bne _021F1DE8 - ldr r1, _021F2048 ; =0x02218A88 - mov r0, r7 - bl gpiSetErrorString - add sp, sp, #0x18 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_021F1DE8: - ldr r2, _021F204C ; =0x02218AA4 - mov r0, r7 - add r1, r6, #0x28 - bl gpiAppendStringToBuffer - ldr r2, _021F2050 ; =0x02218AAC - mov r0, r7 - add r1, r6, #0x28 - bl gpiAppendStringToBuffer - ldr r2, [r4, #0x1a0] - mov r0, r7 - add r1, r6, #0x28 - bl gpiAppendIntToBuffer - ldr r2, _021F2054 ; =0x02218AB4 - mov r0, r7 - add r1, r6, #0x28 - bl gpiAppendStringToBuffer - mov r0, r7 - add r1, r6, #0x28 - add r2, r4, #0x110 - bl gpiAppendStringToBuffer - mov r0, r7 - add r1, r6, #0x28 - ldr r2, _021F2058 ; =0x02218ABC - bl gpiAppendStringToBuffer - mov r0, r7 - add r1, r6, #0x28 - ldr r2, [sp, #8] - ldr r2, [r2, #0x18] - bl gpiAppendStringToBuffer - mov r0, r7 - add r1, r6, #0x28 - ldr r2, _021F205C ; =0x02218AC4 - bl gpiAppendStringToBuffer - ldr r2, [r4, #0x434] - cmp r2, #0 - beq _021F1EAC - ldr r3, [r6, #0xc] - mov r0, #0 -_021F1E80: - ldr r1, [r2, #0xc] - cmp r1, r3 - bne _021F1EA0 - cmp r2, r6 - beq _021F1EA0 - ldr r1, [r2, #0] - cmp r1, #0x67 - movle r5, r0 -_021F1EA0: - ldr r2, [r2, #0x3c] - cmp r2, #0 - bne _021F1E80 -_021F1EAC: - cmp r5, #0 - beq _021F1EE8 - ldr r0, [sp, #8] - ldr r0, [r0, #0x18] - bl DWCi_GsFree - ldr r0, [sp, #8] - mov r1, #0 - str r1, [r0, #0x18] - ldr r0, [sp, #8] - bl gpiCanFreeProfile - cmp r0, #0 - beq _021F1EE8 - ldr r1, [sp, #8] - mov r0, r7 - bl gpiRemoveProfile -_021F1EE8: - mov r0, #0x68 - str r0, [r6, #0] - b _021F1FF8 -_021F1EF4: - add r2, sp, #0xc - str r2, [sp] - ldr r1, _021F2060 ; =0x02218ACC - add r3, sp, #0x10 - str r1, [sp, #4] - ldr r1, [r6, #8] - add r2, r6, #0x18 - bl gpiRecvToBuffer - cmp r0, #0 - addne sp, sp, #0x18 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r6, #0x18] - ldr r1, _021F205C ; =0x02218AC4 - bl strstr - cmp r0, #0 - beq _021F1FF8 - mov r1, #0 - strb r1, [r0] - ldr r4, [r6, #0x18] - ldr r1, _021F2064 ; =0x02218AD0 - mov r0, r4 - mov r2, #7 - bl strncmp - cmp r0, #0 - bne _021F1FA0 - ldr r0, [r6, #0x14] - add r0, r0, #1 - str r0, [r6, #0x14] - cmp r0, #1 - ble _021F1F84 - ldr r1, _021F2068 ; =0x02218AD8 - mov r0, r7 - bl gpiSetErrorString - add sp, sp, #0x18 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_021F1F84: - mov r0, r7 - mov r1, r6 - bl gpiPeerGetSig - cmp r0, #0 - beq _021F1FD0 - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_021F1FA0: - ldr r1, _021F206C ; =0x02218AFC - mov r0, r4 - mov r2, #6 - bl strncmp - cmp r0, #0 - beq _021F1FD0 - ldr r1, _021F2070 ; =0x02218B04 - mov r0, r7 - bl gpiSetErrorString - add sp, sp, #0x18 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_021F1FD0: - mov r0, #0x69 - str r0, [r6, #0] - mov r0, #0 - str r0, [r6, #0x20] - b _021F1FF8 -_021F1FE4: - ldr r0, _021F2074 ; =0x02218B24 - ldr r1, _021F2078 ; =0x02218B28 - ldr r2, _021F207C ; =0x02218A64 - mov r3, #0x9f - bl __msl_assertion_failed -_021F1FF8: - ldr r0, [r6, #0x30] - cmp r0, #0 - ble _021F203C - mov r1, #1 - ldr r0, _021F2060 ; =0x02218ACC - str r1, [sp] - str r0, [sp, #4] - ldr r1, [r6, #8] - add r3, sp, #0xc - mov r0, r7 - add r2, r6, #0x28 - bl gpiSendFromBuffer - ldr r1, [sp, #0xc] - cmp r1, #0 - cmpeq r0, #0 - movne r0, #0x6a - strne r0, [r6] -_021F203C: - mov r0, #0 - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021F2048: .word Unk_ov4_02218A88 -_021F204C: .word Unk_ov4_02218AA4 -_021F2050: .word Unk_ov4_02218AAC -_021F2054: .word Unk_ov4_02218AB4 -_021F2058: .word Unk_ov4_02218ABC -_021F205C: .word Unk_ov4_02218AC4 -_021F2060: .word Unk_ov4_02218ACC -_021F2064: .word Unk_ov4_02218AD0 -_021F2068: .word Unk_ov4_02218AD8 -_021F206C: .word Unk_ov4_02218AFC -_021F2070: .word Unk_ov4_02218B04 -_021F2074: .word Unk_ov4_02218B24 -_021F2078: .word Unk_ov4_02218B28 -_021F207C: .word Unk_ov4_02218A64 - arm_func_end gpiProcessPeerInitiatingConnection - - arm_func_start gpiProcessPeerAcceptingConnection -gpiProcessPeerAcceptingConnection: ; 0x021F2080 - stmfd sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x184 - mov r5, r1 - ldr r1, [r5, #0] - mov r6, r0 - cmp r1, #0x68 - ldr r4, [r6, #0] - beq _021F20B4 - ldr r0, _021F22AC ; =0x02218B34 - ldr r1, _021F22B0 ; =0x02218B28 - ldr r2, _021F22B4 ; =0x02218A40 - mov r3, #0xc1 - bl __msl_assertion_failed -_021F20B4: - add r1, sp, #8 - ldr r0, _021F22B8 ; =0x02218ACC - str r1, [sp] - str r0, [sp, #4] - ldr r1, [r5, #8] - add r3, sp, #0xc - mov r0, r6 - add r2, r5, #0x18 - bl gpiRecvToBuffer - cmp r0, #0 - addne sp, sp, #0x184 - ldmneia sp!, {r4, r5, r6, r7, pc} - ldr r0, [sp, #8] - cmp r0, #0 - beq _021F2104 - mov r0, #0x6a - str r0, [r5, #0] - add sp, sp, #0x184 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, pc} -_021F2104: - ldr r0, [r5, #0x18] - ldr r1, _021F22BC ; =0x02218AC4 - bl strstr - cmp r0, #0 - beq _021F22A0 - mov r1, #0 - strb r1, [r0] - ldr r7, [r5, #0x18] - ldr r1, _021F22C0 ; =0x02218AA4 - mov r0, r7 - mov r2, #6 - bl strncmp - cmp r0, #0 - bne _021F2284 - ldr r1, _021F22C4 ; =0x02218AAC - add r2, sp, #0x71 - mov r0, r7 - mov r3, #0x10 - bl gpiValueForKey - cmp r0, #0 - bne _021F216C - mov r0, #0x6a - str r0, [r5, #0] - add sp, sp, #0x184 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, pc} -_021F216C: - add r0, sp, #0x71 - bl atoi - mov r7, r0 - ldr r0, [r5, #0x18] - ldr r1, _021F22C8 ; =0x02218AB4 - add r2, sp, #0x52 - mov r3, #0x1f - bl gpiValueForKey - cmp r0, #0 - bne _021F21A8 - mov r0, #0x6a - str r0, [r5, #0] - add sp, sp, #0x184 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, pc} -_021F21A8: - ldr r0, [r5, #0x18] - ldr r1, _021F22CC ; =0x02218ABC - add r2, sp, #0x31 - mov r3, #0x21 - bl gpiValueForKey - cmp r0, #0 - bne _021F21D8 - mov r0, #0x6a - str r0, [r5, #0] - add sp, sp, #0x184 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, pc} -_021F21D8: - str r7, [sp] - add r2, r4, #0x77 - ldr r3, [r4, #0x1a0] - ldr r1, _021F22D0 ; =0x02218B54 - add r0, sp, #0x81 - add r2, r2, #0x100 - bl sprintf - add r0, sp, #0x81 - bl strlen - mov r1, r0 - add r0, sp, #0x81 - add r2, sp, #0x10 - bl MD5Digest - add r0, sp, #0x31 - add r1, sp, #0x10 - bl strcmp - cmp r0, #0 - beq _021F2254 - ldr r2, _021F22D4 ; =0x02218AD0 - mov r0, r6 - add r1, r5, #0x28 - bl gpiAppendStringToBuffer - ldr r2, _021F22BC ; =0x02218AC4 - mov r0, r6 - add r1, r5, #0x28 - bl gpiAppendStringToBuffer - mov r0, #0x6a - str r0, [r5, #0] - add sp, sp, #0x184 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, pc} -_021F2254: - ldr r2, _021F22D8 ; =0x02218AFC - mov r0, r6 - add r1, r5, #0x28 - bl gpiAppendStringToBuffer - ldr r2, _021F22BC ; =0x02218AC4 - mov r0, r6 - add r1, r5, #0x28 - bl gpiAppendStringToBuffer - mov r0, #0x69 - str r0, [r5, #0] - str r7, [r5, #0xc] - b _021F2298 -_021F2284: - mov r0, #0x6a - str r0, [r5, #0] - add sp, sp, #0x184 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, pc} -_021F2298: - mov r0, #0 - str r0, [r5, #0x20] -_021F22A0: - mov r0, #0 - add sp, sp, #0x184 - ldmia sp!, {r4, r5, r6, r7, pc} - ; .align 2, 0 -_021F22AC: .word Unk_ov4_02218B34 -_021F22B0: .word Unk_ov4_02218B28 -_021F22B4: .word Unk_ov4_02218A40 -_021F22B8: .word Unk_ov4_02218ACC -_021F22BC: .word Unk_ov4_02218AC4 -_021F22C0: .word Unk_ov4_02218AA4 -_021F22C4: .word Unk_ov4_02218AAC -_021F22C8: .word Unk_ov4_02218AB4 -_021F22CC: .word Unk_ov4_02218ABC -_021F22D0: .word Unk_ov4_02218B54 -_021F22D4: .word Unk_ov4_02218AD0 -_021F22D8: .word Unk_ov4_02218AFC - arm_func_end gpiProcessPeerAcceptingConnection - - arm_func_start gpiPeerSendMessages -gpiPeerSendMessages: ; 0x021F22DC - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc - mov sb, r1 - ldr r1, [sb, #0x30] - mov sl, r0 - cmp r1, #0 - addne sp, sp, #0xc - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [sb, #0x38] - bl ArrayLength - cmp r0, #0 - beq _021F23A0 - mov fp, #0 - ldr r5, _021F23AC ; =0x02218ACC - mov r8, fp - mov r6, fp - add r4, sp, #8 -_021F2324: - ldr r0, [sb, #0x38] - mov r1, r8 - bl ArrayNth - mov r7, r0 - str r6, [sp] - str r5, [sp, #4] - ldr r1, [sb, #8] - mov r0, sl - mov r2, r7 - mov r3, r4 - bl gpiSendFromBuffer - ldr r1, [sp, #8] - cmp r1, #0 - cmpeq r0, #0 - beq _021F2374 - mov r0, #0x6a - str r0, [sb] - add sp, sp, #0xc - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F2374: - ldr r1, [r7, #0xc] - ldr r0, [r7, #8] - cmp r1, r0 - bne _021F23A0 - ldr r0, [sb, #0x38] - mov r1, fp - bl ArrayDeleteAt - ldr r0, [sb, #0x38] - bl ArrayLength - cmp r0, #0 - bne _021F2324 -_021F23A0: - mov r0, #0 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_021F23AC: .word Unk_ov4_02218ACC - arm_func_end gpiPeerSendMessages - - arm_func_start gpiProcessPeerConnected -gpiProcessPeerConnected: ; 0x021F23B0 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x24 - mov r8, r1 - ldr r1, [r8, #0x30] - mov sb, r0 - cmp r1, #0 - ldr r7, [sb] - beq _021F2414 - mov r2, #1 - str r2, [sp] - ldr r1, _021F2624 ; =0x02218ACC - add r3, sp, #0x1c - str r1, [sp, #4] - ldr r1, [r8, #8] - add r2, r8, #0x28 - bl gpiSendFromBuffer - ldr r1, [sp, #0x1c] - cmp r1, #0 - cmpeq r0, #0 - beq _021F2414 - mov r0, #0x6a - str r0, [r8] - add sp, sp, #0x24 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F2414: - ldr r0, [r8, #0x30] - cmp r0, #0 - bne _021F244C - mov r0, sb - mov r1, r8 - bl gpiPeerSendMessages - cmp r0, #0 - addne sp, sp, #0x24 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [r8] - cmp r0, #0x6a - addeq sp, sp, #0x24 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F244C: - add r1, sp, #0x1c - ldr r0, _021F2624 ; =0x02218ACC - str r1, [sp] - str r0, [sp, #4] - ldr r1, [r8, #8] - add r3, sp, #0x20 - mov r0, sb - add r2, r8, #0x18 - bl gpiRecvToBuffer - cmp r0, #0 - beq _021F248C - mov r0, #0x6a - str r0, [r8] - add sp, sp, #0x24 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F248C: - ldr r0, [sp, #0x20] - cmp r0, #0 - ble _021F24A8 - mov r0, #0 - bl time - add r0, r0, #0x12c - str r0, [r8, #0x10] -_021F24A8: - mov r4, #0 - mov sl, #2 - add fp, sp, #0x14 - add r6, sp, #8 -_021F24B8: - mov r0, sb - add r1, r8, #0x18 - add r2, sp, #0x10 - add r3, sp, #0xc - str r6, [sp] - bl gpiReadMessageFromBuffer - cmp r0, #0 - addne sp, sp, #0x24 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [sp, #0x10] - cmp r1, #0 - beq _021F25FC - ldr r2, [sp, #0xc] - cmp r2, #0x66 - bgt _021F2504 - bge _021F25BC - cmp r2, #1 - beq _021F2538 - b _021F25F0 -_021F2504: - sub r0, r2, #0xc8 - cmp r0, #8 - addls pc, pc, r0, lsl #2 - b _021F25F0 -_021F2514: ; jump table - b _021F25D4 ; case 0 - b _021F25D4 ; case 1 - b _021F25D4 ; case 2 - b _021F25D4 ; case 3 - b _021F25D4 ; case 4 - b _021F25D4 ; case 5 - b _021F25D4 ; case 6 - b _021F25D4 ; case 7 - b _021F25D4 ; case 8 -_021F2538: - ldr r1, [r7, #0x1bc] - ldr r0, [r7, #0x1c0] - str r1, [sp, #0x14] - str r0, [sp, #0x18] - cmp r1, #0 - beq _021F25F0 - mov r0, #0xc - bl DWCi_GsMalloc - movs r5, r0 - bne _021F2578 - ldr r1, _021F2628 ; =0x02218B5C - mov r0, sb - bl gpiSetErrorString - add sp, sp, #0x24 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F2578: - ldr r0, [r8, #0xc] - str r0, [r5, #0] - ldr r0, [sp, #0x10] - bl goastrdup - str r0, [r5, #8] - mov r0, #0 - bl time - str r0, [r5, #4] - mov r3, r5 - mov r0, sb - stmia sp, {r4, sl} - ldmia fp, {r1, r2} - bl gpiAddCallback - cmp r0, #0 - beq _021F25F0 - add sp, sp, #0x24 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F25BC: - ldr r1, [r8, #0xc] - ldr r3, _021F262C ; =0x02218B6C - mov r0, sb - mov r2, #0x67 - bl gpiSendBuddyMessage - b _021F25F0 -_021F25D4: - str r1, [sp] - ldr r1, [sp, #8] - mov r0, sb - str r1, [sp, #4] - mov r1, r8 - ldr r3, [r8, #0x18] - bl gpiHandleTransferMessage -_021F25F0: - mov r0, sb - add r1, r8, #0x18 - bl gpiClipBufferToPosition -_021F25FC: - ldr r0, [sp, #0x10] - cmp r0, #0 - bne _021F24B8 - ldr r0, [sp, #0x1c] - cmp r0, #0 - movne r0, #0x6a - strne r0, [r8] - mov r0, #0 - add sp, sp, #0x24 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_021F2624: .word Unk_ov4_02218ACC -_021F2628: .word Unk_ov4_02218B5C -_021F262C: .word Unk_ov4_02218B6C - arm_func_end gpiProcessPeerConnected - - arm_func_start gpiProcessPeer -gpiProcessPeer: ; 0x021F2630 - stmfd sp!, {r4, r5, r6, lr} - mov r5, r1 - ldr r1, [r5, #0] - mov r6, r0 - cmp r1, #0x64 - mov r4, #0 - bne _021F2660 - ldr r0, _021F26BC ; =0x02218B70 - ldr r1, _021F26C0 ; =0x02218B28 - ldr r2, _021F26C4 ; =0x022189E0 - ldr r3, _021F26C8 ; =0x000001D9 - bl __msl_assertion_failed -_021F2660: - ldr r0, [r5, #0] - cmp r0, #0x69 - beq _021F2694 - ldr r0, [r5, #4] - mov r1, r5 - cmp r0, #0 - mov r0, r6 - beq _021F268C - bl gpiProcessPeerInitiatingConnection - mov r4, r0 - b _021F2694 -_021F268C: - bl gpiProcessPeerAcceptingConnection - mov r4, r0 -_021F2694: - cmp r4, #0 - ldreq r0, [r5] - cmpeq r0, #0x69 - bne _021F26B4 - mov r0, r6 - mov r1, r5 - bl gpiProcessPeerConnected - mov r4, r0 -_021F26B4: - mov r0, r4 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_021F26BC: .word Unk_ov4_02218B70 -_021F26C0: .word Unk_ov4_02218B28 -_021F26C4: .word Unk_ov4_022189E0 -_021F26C8: .word 0x000001D9 - arm_func_end gpiProcessPeer - - arm_func_start gpiDestroyPeer -gpiDestroyPeer: ; 0x021F26CC - stmfd sp!, {r4, lr} - mov r4, r1 - ldr r0, [r4, #8] - mov r1, #2 - bl shutdown - ldr r0, [r4, #8] - bl closesocket - ldr r0, [r4, #0x18] - bl DWCi_GsFree - mov r0, #0 - str r0, [r4, #0x18] - ldr r0, [r4, #0x28] - bl DWCi_GsFree - mov r0, #0 - str r0, [r4, #0x28] - ldr r0, [r4, #0x38] - cmp r0, #0 - beq _021F2720 - bl ArrayFree - mov r0, #0 - str r0, [r4, #0x38] -_021F2720: - mov r0, r4 - bl DWCi_GsFree - ldmia sp!, {r4, pc} - arm_func_end gpiDestroyPeer - - arm_func_start gpiRemovePeer -gpiRemovePeer: ; 0x021F272C - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r5, r0 - movs r4, r1 - ldr r6, [r5, #0] - bne _021F2754 - ldr r0, _021F282C ; =0x02218B98 - ldr r1, _021F2830 ; =0x02218B28 - ldr r2, _021F2834 ; =0x022189D0 - ldr r3, _021F2838 ; =0x00000213 - bl __msl_assertion_failed -_021F2754: - ldr r1, [r6, #0x434] - cmp r1, r4 - ldreq r0, [r4, #0x3c] - streq r0, [r6, #0x434] - beq _021F27B8 - ldr r0, [r1, #0x3c] - cmp r0, r4 - beq _021F27B0 -_021F2774: - cmp r0, #0 - bne _021F27A0 - ldr r0, _021F283C ; =0x02218B24 - ldr r1, _021F2830 ; =0x02218B28 - ldr r2, _021F2834 ; =0x022189D0 - ldr r3, _021F2840 ; =0x00000225 - bl __msl_assertion_failed - ldr r1, _021F2844 ; =0x02218BA8 - mov r0, r5 - bl gpiDebug - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_021F27A0: - mov r1, r0 - ldr r0, [r0, #0x3c] - cmp r0, r4 - bne _021F2774 -_021F27B0: - ldr r0, [r4, #0x3c] - str r0, [r1, #0x3c] -_021F27B8: - ldr r0, [r4, #0x38] - bl ArrayLength - cmp r0, #0 - beq _021F281C - mov r6, #0 - mov r7, r6 -_021F27D0: - ldr r0, [r4, #0x38] - mov r1, r7 - bl ArrayNth - ldr r2, [r0, #0x10] - cmp r2, #0x64 - bge _021F2800 - ldr ip, [r0] - ldr r3, [r0, #0x14] - ldr r1, [r4, #0xc] - mov r0, r5 - add r3, ip, r3 - bl gpiSendServerBuddyMessage -_021F2800: - ldr r0, [r4, #0x38] - mov r1, r6 - bl ArrayDeleteAt - ldr r0, [r4, #0x38] - bl ArrayLength - cmp r0, #0 - bne _021F27D0 -_021F281C: - mov r0, r5 - mov r1, r4 - bl gpiDestroyPeer - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021F282C: .word Unk_ov4_02218B98 -_021F2830: .word Unk_ov4_02218B28 -_021F2834: .word Unk_ov4_022189D0 -_021F2838: .word 0x00000213 -_021F283C: .word Unk_ov4_02218B24 -_021F2840: .word 0x00000225 -_021F2844: .word Unk_ov4_02218BA8 - arm_func_end gpiRemovePeer - - arm_func_start gpiSetPeerSocketSizes -gpiSetPeerSocketSizes: ; 0x021F2848 - stmfd sp!, {r4, lr} - mov r4, r0 - mov r1, #0x4000 - bl SetReceiveBufferSize - mov r0, r4 - mov r1, #0x8000 - bl SetReceiveBufferSize - mov r0, r4 - mov r1, #0x10000 - bl SetReceiveBufferSize - mov r0, r4 - mov r1, #0x20000 - bl SetReceiveBufferSize - mov r0, r4 - mov r1, #0x40000 - bl SetReceiveBufferSize - mov r0, r4 - mov r1, #0x4000 - bl SetSendBufferSize - mov r0, r4 - mov r1, #0x8000 - bl SetSendBufferSize - mov r0, r4 - mov r1, #0x10000 - bl SetSendBufferSize - mov r0, r4 - bl GetReceiveBufferSize - mov r0, r4 - bl GetSendBufferSize - ldmia sp!, {r4, pc} - arm_func_end gpiSetPeerSocketSizes - - arm_func_start gpiProcessPeers -gpiProcessPeers: ; 0x021F28C0 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r4, r0 - ldr r7, [r4, #0] - mvn r1, #0 - ldr r0, [r7, #0x204] - cmp r0, r1 - beq _021F2948 - bl CanReceiveOnSocket - cmp r0, #0 - beq _021F2948 - mov r1, #0 - ldr r0, [r7, #0x204] - mov r2, r1 - bl accept - mov r6, r0 - mvn r1, #0 - cmp r6, r1 - beq _021F2948 - mov r0, r4 - mov r2, #0 - bl gpiAddPeer - movs r5, r0 - beq _021F2940 - mov r0, #0x68 - str r0, [r5, #0] - mov r0, r6 - str r6, [r5, #8] - mov r1, #0 - bl SetSockBlocking - ldr r0, [r5, #8] - bl gpiSetPeerSocketSizes - b _021F2948 -_021F2940: - mov r0, r6 - bl closesocket -_021F2948: - ldr r7, [r7, #0x434] - cmp r7, #0 - beq _021F29A8 - mov r5, #0 -_021F2958: - mov r0, r4 - mov r1, r7 - ldr r6, [r7, #0x3c] - bl gpiProcessPeer - ldr r1, [r7, #0] - cmp r1, #0x6a - beq _021F2990 - cmp r0, #0 - bne _021F2990 - mov r0, r5 - bl time - ldr r1, [r7, #0x10] - cmp r0, r1 - ble _021F299C -_021F2990: - mov r0, r4 - mov r1, r7 - bl gpiRemovePeer -_021F299C: - mov r7, r6 - cmp r6, #0 - bne _021F2958 -_021F29A8: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end gpiProcessPeers - - arm_func_start gpiGetConnectedPeer -gpiGetConnectedPeer: ; 0x021F29B0 - ldr r0, [r0, #0] - ldr r0, [r0, #0x434] - cmp r0, #0 - beq _021F29E0 -_021F29C0: - ldr r2, [r0, #0xc] - cmp r2, r1 - ldreq r2, [r0] - cmpeq r2, #0x69 - bxeq lr - ldr r0, [r0, #0x3c] - cmp r0, #0 - bne _021F29C0 -_021F29E0: - mov r0, #0 - bx lr - arm_func_end gpiGetConnectedPeer - - arm_func_start gpiFreeMessage -gpiFreeMessage: ; 0x021F29E8 - stmfd sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4, #0] - bl DWCi_GsFree - mov r0, #0 - str r0, [r4, #0] - ldmia sp!, {r4, pc} - arm_func_end gpiFreeMessage - - arm_func_start gpiAddPeer -gpiAddPeer: ; 0x021F2A04 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - ldr r5, [r0, #0] - mov r0, #0x40 - mov r7, r1 - mov r6, r2 - bl DWCi_GsMalloc - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r1, #0 - mov r2, #0x40 - bl memset - mov r0, #0x64 - stmia r4, {r0, r6} - sub r0, r0, #0x65 - str r0, [r4, #8] - mov r0, #0 - str r7, [r4, #0xc] - bl time - add r0, r0, #0x12c - str r0, [r4, #0x10] - ldr r3, [r5, #0x434] - ldr r2, _021F2A80 ; =gpiFreeMessage - mov r0, #0x18 - mov r1, #0 - str r3, [r4, #0x3c] - bl ArrayNew - str r0, [r4, #0x38] - mov r0, r4 - str r4, [r5, #0x434] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021F2A80: .word gpiFreeMessage - arm_func_end gpiAddPeer - - arm_func_start gpiPeerGetSig -gpiPeerGetSig: ; 0x021F2A84 - stmfd sp!, {r3, r4, r5, lr} - sub sp, sp, #0x10 - mov r2, #0 - str r2, [sp] - mov r4, r1 - str r2, [sp, #4] - add r3, sp, #0xc - mov r1, #2 - mov r5, r0 - str r2, [sp, #8] - bl gpiAddOperation - cmp r0, #0 - addne sp, sp, #0x10 - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, [sp, #0xc] - ldr r1, [r4, #0xc] - ldr r2, [r0, #0x18] - mov r0, r5 - bl gpiSendGetInfo - cmp r0, #0 - moveq r0, #0x65 - streq r0, [r4] - moveq r0, #0 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end gpiPeerGetSig - - arm_func_start gpiPeerStartConnect -gpiPeerStartConnect: ; 0x021F2AE8 - stmfd sp!, {r4, r5, lr} - sub sp, sp, #0xc - mov r4, r1 - ldr r1, [r4, #0xc] - add r2, sp, #0 - mov r5, r0 - bl gpiGetProfile - cmp r0, #0 - bne _021F2B24 - ldr r1, _021F2C64 ; =0x02218A88 - mov r0, r5 - bl gpiSetErrorString - add sp, sp, #0xc - mov r0, #3 - ldmia sp!, {r4, r5, pc} -_021F2B24: - mov r0, #2 - mov r1, #1 - mov r2, #0 - bl socket - mvn r1, #0 - str r0, [r4, #8] - cmp r0, r1 - bne _021F2B70 - ldr r2, _021F2C68 ; =0x02218BCC - mov r0, r5 - mov r1, #5 - bl gpiSetError - mov r0, r5 - mov r1, #3 - mov r2, #0 - bl gpiCallErrorCallback - add sp, sp, #0xc - mov r0, #3 - ldmia sp!, {r4, r5, pc} -_021F2B70: - mov r1, #0 - bl SetSockBlocking - cmp r0, #0 - bne _021F2BAC - ldr r2, _021F2C6C ; =0x02218BF4 - mov r0, r5 - mov r1, #5 - bl gpiSetError - mov r0, r5 - mov r1, #3 - mov r2, #0 - bl gpiCallErrorCallback - add sp, sp, #0xc - mov r0, #3 - ldmia sp!, {r4, r5, pc} -_021F2BAC: - ldr r0, [r4, #8] - bl gpiSetPeerSocketSizes - add r1, sp, #4 - mov r2, #0 - ldr r3, [sp] - str r2, [r1, #0] - mov r0, #2 - str r2, [r1, #4] - strb r0, [sp, #5] - ldr r0, [r3, #8] - mov r2, #8 - ldr r0, [r0, #0x10] - str r0, [sp, #8] - ldr r0, [r3, #8] - ldr r0, [r0, #0x14] - strh r0, [sp, #6] - ldr r0, [r4, #8] - bl connect - mvn r1, #0 - cmp r0, r1 - bne _021F2C50 - ldr r0, [r4, #8] - bl GOAGetLastError - mvn r2, #5 - cmp r0, r2 - subne r1, r2, #0x14 - cmpne r0, r1 - subne r1, r2, #0x46 - cmpne r0, r1 - beq _021F2C50 - ldr r2, _021F2C70 ; =0x02218C28 - mov r0, r5 - mov r1, #5 - bl gpiSetError - mov r0, r5 - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0xc - mov r0, #3 - ldmia sp!, {r4, r5, pc} -_021F2C50: - mov r0, #0x67 - str r0, [r4, #0] - mov r0, #0 - add sp, sp, #0xc - ldmia sp!, {r4, r5, pc} - ; .align 2, 0 -_021F2C64: .word Unk_ov4_02218A88 -_021F2C68: .word Unk_ov4_02218BCC -_021F2C6C: .word Unk_ov4_02218BF4 -_021F2C70: .word Unk_ov4_02218C28 - arm_func_end gpiPeerStartConnect - - arm_func_start gpiPeerAddMessage -gpiPeerAddMessage: ; 0x021F2C74 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x18 - movs r7, r1 - mov r8, r0 - mov r6, r2 - mov r5, r3 - bne _021F2CA4 - ldr r0, _021F2DE4 ; =0x02218B98 - ldr r1, _021F2DE8 ; =0x02218B28 - ldr r2, _021F2DEC ; =0x022189F0 - mov r3, #0x340 - bl __msl_assertion_failed -_021F2CA4: - cmp r5, #0 - bne _021F2CC0 - ldr r0, _021F2DF0 ; =0x02218C50 - ldr r1, _021F2DE8 ; =0x02218B28 - ldr r2, _021F2DEC ; =0x022189F0 - ldr r3, _021F2DF4 ; =0x00000341 - bl __msl_assertion_failed -_021F2CC0: - mov r0, r5 - bl strlen - mov r4, r0 - add r1, sp, #0 - mov r3, #0 - str r3, [r1, #0x10] - ldr r2, _021F2DF8 ; =0x02218C60 - mov r0, r8 - str r3, [r1, #0] - str r3, [r1, #4] - str r3, [r1, #8] - str r3, [r1, #0xc] - str r3, [r1, #0x14] - str r6, [sp, #0x10] - bl gpiAppendStringToBuffer - cmp r0, #0 - addne sp, sp, #0x18 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - add r1, sp, #0 - mov r0, r8 - mov r2, r6 - bl gpiAppendIntToBuffer - cmp r0, #0 - addne sp, sp, #0x18 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - ldr r2, _021F2DFC ; =0x02218C64 - add r1, sp, #0 - mov r0, r8 - bl gpiAppendStringToBuffer - cmp r0, #0 - addne sp, sp, #0x18 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - add r1, sp, #0 - mov r0, r8 - mov r2, r4 - bl gpiAppendIntToBuffer - cmp r0, #0 - addne sp, sp, #0x18 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - ldr r2, _021F2E00 ; =0x02218C6C - add r1, sp, #0 - mov r0, r8 - bl gpiAppendStringToBuffer - cmp r0, #0 - addne sp, sp, #0x18 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - ldr ip, [sp, #8] - add r1, sp, #0 - mov r0, r8 - mov r2, r5 - mov r3, r4 - str ip, [sp, #0x14] - bl gpiAppendStringToBufferLen - cmp r0, #0 - addne sp, sp, #0x18 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - add r1, sp, #0 - mov r0, r8 - mov r2, #0 - bl gpiAppendCharToBuffer - cmp r0, #0 - addne sp, sp, #0x18 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - ldr r0, [r7, #0x38] - add r1, sp, #0 - bl ArrayAppend - mov r0, #0 - bl time - add r0, r0, #0x12c - str r0, [r7, #0x10] - mov r0, #0 - add sp, sp, #0x18 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_021F2DE4: .word Unk_ov4_02218B98 -_021F2DE8: .word Unk_ov4_02218B28 -_021F2DEC: .word Unk_ov4_022189F0 -_021F2DF0: .word Unk_ov4_02218C50 -_021F2DF4: .word 0x00000341 -_021F2DF8: .word Unk_ov4_02218C60 -_021F2DFC: .word Unk_ov4_02218C64 -_021F2E00: .word Unk_ov4_02218C6C - arm_func_end gpiPeerAddMessage - - arm_func_start gpiPeerStartTransferMessage -gpiPeerStartTransferMessage: ; 0x021F2E04 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x48 - mov sb, r0 - mov r8, r1 - mov r7, r2 - cmp r3, #0 - ldr r5, [r3, #0] - ldmib r3, {r4, r6} - bne _021F2E3C - ldr r0, _021F2E6C ; =0x02218C74 - ldr r1, _021F2E70 ; =0x02218B28 - ldr r2, _021F2E74 ; =0x02218A04 - ldr r3, _021F2E78 ; =0x00000376 - bl __msl_assertion_failed -_021F2E3C: - ldr r1, _021F2E7C ; =0x02218C80 - add r0, sp, #8 - mov r2, r7 - mov r3, r5 - stmia sp, {r4, r6} - bl sprintf - add r2, sp, #8 - mov r0, sb - mov r1, r8 - bl gpiSendOrBufferString - add sp, sp, #0x48 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ; .align 2, 0 -_021F2E6C: .word Unk_ov4_02218C74 -_021F2E70: .word Unk_ov4_02218B28 -_021F2E74: .word Unk_ov4_02218A04 -_021F2E78: .word 0x00000376 -_021F2E7C: .word Unk_ov4_02218C80 - arm_func_end gpiPeerStartTransferMessage - - arm_func_start gpiPeerFinishTransferMessage -gpiPeerFinishTransferMessage: ; 0x021F2E80 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x20 - movs r6, r1 - mov r7, r0 - mov r5, r2 - mov r4, r3 - bne _021F2EB0 - ldr r0, _021F2F54 ; =0x02218B98 - ldr r1, _021F2F58 ; =0x02218B28 - ldr r2, _021F2F5C ; =0x02218A20 - ldr r3, _021F2F60 ; =0x00000389 - bl __msl_assertion_failed -_021F2EB0: - mvn r0, #0 - cmp r5, #0 - ldreq r5, _021F2F64 ; =0x02218C94 - cmp r4, r0 - bne _021F2ED0 - mov r0, r5 - bl strlen - mov r4, r0 -_021F2ED0: - ldr r1, _021F2F68 ; =0x02218C98 - add r0, sp, #0 - mov r2, r4 - bl sprintf - add r2, sp, #0 - mov r0, r7 - mov r1, r6 - bl gpiSendOrBufferString - cmp r0, #0 - addne sp, sp, #0x20 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r7 - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl gpiSendOrBufferStringLen - cmp r0, #0 - addne sp, sp, #0x20 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r7 - mov r1, r6 - mov r2, #0 - bl gpiSendOrBufferChar - cmp r0, #0 - addne sp, sp, #0x20 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, #0 - bl time - add r0, r0, #0x12c - str r0, [r6, #0x10] - mov r0, #0 - add sp, sp, #0x20 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021F2F54: .word Unk_ov4_02218B98 -_021F2F58: .word Unk_ov4_02218B28 -_021F2F5C: .word Unk_ov4_02218A20 -_021F2F60: .word 0x00000389 -_021F2F64: .word Unk_ov4_02218C94 -_021F2F68: .word Unk_ov4_02218C98 - arm_func_end gpiPeerFinishTransferMessage - - .data - - - .global Unk_ov4_022189D0 -Unk_ov4_022189D0: ; 0x022189D0 - .incbin "incbin/overlay4_data.bin", 0x2B50, 0x2B60 - 0x2B50 - - .global Unk_ov4_022189E0 -Unk_ov4_022189E0: ; 0x022189E0 - .incbin "incbin/overlay4_data.bin", 0x2B60, 0x2B70 - 0x2B60 - - .global Unk_ov4_022189F0 -Unk_ov4_022189F0: ; 0x022189F0 - .incbin "incbin/overlay4_data.bin", 0x2B70, 0x2B84 - 0x2B70 - - .global Unk_ov4_02218A04 -Unk_ov4_02218A04: ; 0x02218A04 - .incbin "incbin/overlay4_data.bin", 0x2B84, 0x2BA0 - 0x2B84 - - .global Unk_ov4_02218A20 -Unk_ov4_02218A20: ; 0x02218A20 - .incbin "incbin/overlay4_data.bin", 0x2BA0, 0x2BC0 - 0x2BA0 - - .global Unk_ov4_02218A40 -Unk_ov4_02218A40: ; 0x02218A40 - .incbin "incbin/overlay4_data.bin", 0x2BC0, 0x2BE4 - 0x2BC0 - - .global Unk_ov4_02218A64 -Unk_ov4_02218A64: ; 0x02218A64 - .incbin "incbin/overlay4_data.bin", 0x2BE4, 0x2C08 - 0x2BE4 - - .global Unk_ov4_02218A88 -Unk_ov4_02218A88: ; 0x02218A88 - .incbin "incbin/overlay4_data.bin", 0x2C08, 0x2C24 - 0x2C08 - - .global Unk_ov4_02218AA4 -Unk_ov4_02218AA4: ; 0x02218AA4 - .incbin "incbin/overlay4_data.bin", 0x2C24, 0x2C2C - 0x2C24 - - .global Unk_ov4_02218AAC -Unk_ov4_02218AAC: ; 0x02218AAC - .incbin "incbin/overlay4_data.bin", 0x2C2C, 0x2C34 - 0x2C2C - - .global Unk_ov4_02218AB4 -Unk_ov4_02218AB4: ; 0x02218AB4 - .incbin "incbin/overlay4_data.bin", 0x2C34, 0x2C3C - 0x2C34 - - .global Unk_ov4_02218ABC -Unk_ov4_02218ABC: ; 0x02218ABC - .incbin "incbin/overlay4_data.bin", 0x2C3C, 0x2C44 - 0x2C3C - - .global Unk_ov4_02218AC4 -Unk_ov4_02218AC4: ; 0x02218AC4 - .incbin "incbin/overlay4_data.bin", 0x2C44, 0x2C4C - 0x2C44 - - .global Unk_ov4_02218ACC -Unk_ov4_02218ACC: ; 0x02218ACC - .incbin "incbin/overlay4_data.bin", 0x2C4C, 0x2C50 - 0x2C4C - - .global Unk_ov4_02218AD0 -Unk_ov4_02218AD0: ; 0x02218AD0 - .incbin "incbin/overlay4_data.bin", 0x2C50, 0x2C58 - 0x2C50 - - .global Unk_ov4_02218AD8 -Unk_ov4_02218AD8: ; 0x02218AD8 - .incbin "incbin/overlay4_data.bin", 0x2C58, 0x2C7C - 0x2C58 - - .global Unk_ov4_02218AFC -Unk_ov4_02218AFC: ; 0x02218AFC - .incbin "incbin/overlay4_data.bin", 0x2C7C, 0x2C84 - 0x2C7C - - .global Unk_ov4_02218B04 -Unk_ov4_02218B04: ; 0x02218B04 - .incbin "incbin/overlay4_data.bin", 0x2C84, 0x2CA4 - 0x2C84 - - .global Unk_ov4_02218B24 -Unk_ov4_02218B24: ; 0x02218B24 - .incbin "incbin/overlay4_data.bin", 0x2CA4, 0x2CA8 - 0x2CA4 - - .global Unk_ov4_02218B28 -Unk_ov4_02218B28: ; 0x02218B28 - .incbin "incbin/overlay4_data.bin", 0x2CA8, 0x2CB4 - 0x2CA8 - - .global Unk_ov4_02218B34 -Unk_ov4_02218B34: ; 0x02218B34 - .incbin "incbin/overlay4_data.bin", 0x2CB4, 0x2CD4 - 0x2CB4 - - .global Unk_ov4_02218B54 -Unk_ov4_02218B54: ; 0x02218B54 - .incbin "incbin/overlay4_data.bin", 0x2CD4, 0x2CDC - 0x2CD4 - - .global Unk_ov4_02218B5C -Unk_ov4_02218B5C: ; 0x02218B5C - .incbin "incbin/overlay4_data.bin", 0x2CDC, 0x2CEC - 0x2CDC - - .global Unk_ov4_02218B6C -Unk_ov4_02218B6C: ; 0x02218B6C - .incbin "incbin/overlay4_data.bin", 0x2CEC, 0x2CF0 - 0x2CEC - - .global Unk_ov4_02218B70 -Unk_ov4_02218B70: ; 0x02218B70 - .incbin "incbin/overlay4_data.bin", 0x2CF0, 0x2D18 - 0x2CF0 - - .global Unk_ov4_02218B98 -Unk_ov4_02218B98: ; 0x02218B98 - .incbin "incbin/overlay4_data.bin", 0x2D18, 0x2D28 - 0x2D18 - - .global Unk_ov4_02218BA8 -Unk_ov4_02218BA8: ; 0x02218BA8 - .incbin "incbin/overlay4_data.bin", 0x2D28, 0x2D4C - 0x2D28 - - .global Unk_ov4_02218BCC -Unk_ov4_02218BCC: ; 0x02218BCC - .incbin "incbin/overlay4_data.bin", 0x2D4C, 0x2D74 - 0x2D4C - - .global Unk_ov4_02218BF4 -Unk_ov4_02218BF4: ; 0x02218BF4 - .incbin "incbin/overlay4_data.bin", 0x2D74, 0x2DA8 - 0x2D74 - - .global Unk_ov4_02218C28 -Unk_ov4_02218C28: ; 0x02218C28 - .incbin "incbin/overlay4_data.bin", 0x2DA8, 0x2DD0 - 0x2DA8 - - .global Unk_ov4_02218C50 -Unk_ov4_02218C50: ; 0x02218C50 - .incbin "incbin/overlay4_data.bin", 0x2DD0, 0x2DE0 - 0x2DD0 - - .global Unk_ov4_02218C60 -Unk_ov4_02218C60: ; 0x02218C60 - .incbin "incbin/overlay4_data.bin", 0x2DE0, 0x2DE4 - 0x2DE0 - - .global Unk_ov4_02218C64 -Unk_ov4_02218C64: ; 0x02218C64 - .incbin "incbin/overlay4_data.bin", 0x2DE4, 0x2DEC - 0x2DE4 - - .global Unk_ov4_02218C6C -Unk_ov4_02218C6C: ; 0x02218C6C - .incbin "incbin/overlay4_data.bin", 0x2DEC, 0x2DF4 - 0x2DEC - - .global Unk_ov4_02218C74 -Unk_ov4_02218C74: ; 0x02218C74 - .incbin "incbin/overlay4_data.bin", 0x2DF4, 0x2E00 - 0x2DF4 - - .global Unk_ov4_02218C80 -Unk_ov4_02218C80: ; 0x02218C80 - .incbin "incbin/overlay4_data.bin", 0x2E00, 0x2E14 - 0x2E00 - - .global Unk_ov4_02218C94 -Unk_ov4_02218C94: ; 0x02218C94 - .incbin "incbin/overlay4_data.bin", 0x2E14, 0x2E18 - 0x2E14 - - .global Unk_ov4_02218C98 -Unk_ov4_02218C98: ; 0x02218C98 - .incbin "incbin/overlay4_data.bin", 0x2E18, 0xE - diff --git a/subprojects/gamespy/libraries/gp/asm/gpiprofile.s b/subprojects/gamespy/libraries/gp/asm/gpiprofile.s deleted file mode 100644 index b5504846db..0000000000 --- a/subprojects/gamespy/libraries/gp/asm/gpiprofile.s +++ /dev/null @@ -1,462 +0,0 @@ - .include "macros/function.inc" - .include "include/gpiprofile.inc" - - - - .text - - - arm_func_start gpiProfilesTableHash -gpiProfilesTableHash: ; 0x021F2F6C - stmfd sp!, {r3, lr} - ldr r0, [r0, #0] - bl _s32_div_f - mov r0, r1 - ldmia sp!, {r3, pc} - arm_func_end gpiProfilesTableHash - - arm_func_start gpiProfilesTableCompare -gpiProfilesTableCompare: ; 0x021F2F80 - ldr r2, [r0, #0] - ldr r0, [r1, #0] - sub r0, r2, r0 - bx lr - arm_func_end gpiProfilesTableCompare - - arm_func_start gpiProfilesTableFree -gpiProfilesTableFree: ; 0x021F2F90 - stmfd sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4, #8] - cmp r0, #0 - beq _021F2FE0 - ldr r0, [r0, #8] - bl DWCi_GsFree - ldr r0, [r4, #8] - mov r1, #0 - str r1, [r0, #8] - ldr r0, [r4, #8] - ldr r0, [r0, #0xc] - bl DWCi_GsFree - ldr r0, [r4, #8] - mov r1, #0 - str r1, [r0, #0xc] - ldr r0, [r4, #8] - bl DWCi_GsFree - mov r0, #0 - str r0, [r4, #8] -_021F2FE0: - mov r0, r4 - bl gpiFreeInfoCache - ldr r0, [r4, #0x10] - bl DWCi_GsFree - mov r0, #0 - str r0, [r4, #0x10] - ldr r0, [r4, #0x18] - bl DWCi_GsFree - mov r0, #0 - str r0, [r4, #0x18] - ldmia sp!, {r4, pc} - arm_func_end gpiProfilesTableFree - - arm_func_start gpiInitProfiles -gpiInitProfiles: ; 0x021F300C - stmfd sp!, {r3, r4, lr} - sub sp, sp, #4 - ldr r4, [r0, #0] - mov r0, #0 - str r0, [r4, #0x430] - str r0, [r4, #0x42c] - ldr ip, _021F3058 ; =gpiProfilesTableFree - ldr r2, _021F305C ; =gpiProfilesTableHash - ldr r3, _021F3060 ; =gpiProfilesTableCompare - mov r0, #0x1c - mov r1, #4 - str ip, [sp] - bl TableNew - str r0, [r4, #0x428] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - ; .align 2, 0 -_021F3058: .word gpiProfilesTableFree -_021F305C: .word gpiProfilesTableHash -_021F3060: .word gpiProfilesTableCompare - arm_func_end gpiInitProfiles - - arm_func_start gpiProcessNewProfile -gpiProcessNewProfile: ; 0x021F3064 - stmfd sp!, {r4, r5, r6, lr} - sub sp, sp, #0x20 - mov r6, r2 - mov r4, r1 - mov r1, r6 - mov r2, #1 - mov r5, r0 - bl gpiCheckForError - cmp r0, #0 - addne sp, sp, #0x20 - movne r0, #4 - ldmneia sp!, {r4, r5, r6, pc} - ldr r1, _021F31B4 ; =0x02218CBC - mov r0, r6 - mov r2, #5 - bl strncmp - cmp r0, #0 - beq _021F30D8 - ldr r2, _021F31B8 ; =0x02218CC4 - mov r0, r5 - mov r1, #1 - bl gpiSetError - mov r0, r5 - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x20 - mov r0, #3 - ldmia sp!, {r4, r5, r6, pc} -_021F30D8: - ldr r1, _021F31BC ; =0x02218CF4 - add r2, sp, #0x10 - mov r0, r6 - mov r3, #0x10 - bl gpiValueForKey - cmp r0, #0 - bne _021F3120 - ldr r2, _021F31B8 ; =0x02218CC4 - mov r0, r5 - mov r1, #1 - bl gpiSetError - mov r0, r5 - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x20 - mov r0, #3 - ldmia sp!, {r4, r5, r6, pc} -_021F3120: - add r0, sp, #0x10 - bl atoi - ldr r2, [r4, #0xc] - ldr r1, [r4, #0x10] - mov r6, r0 - str r2, [sp, #8] - str r1, [sp, #0xc] - cmp r2, #0 - beq _021F319C - mov r0, #8 - bl DWCi_GsMalloc - movs r3, r0 - bne _021F316C - ldr r1, _021F31C0 ; =0x02218D00 - mov r0, r5 - bl gpiSetErrorString - add sp, sp, #0x20 - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} -_021F316C: - str r6, [r3, #4] - mov r2, #0 - str r2, [r3, #0] - str r4, [sp] - add r1, sp, #8 - str r2, [sp, #4] - mov r0, r5 - ldmia r1, {r1, r2} - bl gpiAddCallback - cmp r0, #0 - addne sp, sp, #0x20 - ldmneia sp!, {r4, r5, r6, pc} -_021F319C: - mov r0, r5 - mov r1, r4 - bl gpiRemoveOperation - mov r0, #0 - add sp, sp, #0x20 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_021F31B4: .word Unk_ov4_02218CBC -_021F31B8: .word Unk_ov4_02218CC4 -_021F31BC: .word Unk_ov4_02218CF4 -_021F31C0: .word Unk_ov4_02218D00 - arm_func_end gpiProcessNewProfile - - arm_func_start gpiProfileListAdd -gpiProfileListAdd: ; 0x021F31C4 - stmfd sp!, {r4, r5, r6, lr} - sub sp, sp, #0x20 - mov r6, r0 - mov r5, r1 - cmp r5, #0 - ldr r4, [r6, #0] - bgt _021F31F4 - ldr r0, _021F3298 ; =0x02218D10 - ldr r1, _021F329C ; =0x02218D18 - ldr r2, _021F32A0 ; =0x02218CA8 - ldr r3, _021F32A4 ; =0x000002B5 - bl __msl_assertion_failed -_021F31F4: - cmp r5, #0 - addle sp, sp, #0x20 - movle r0, #0 - ldmleia sp!, {r4, r5, r6, pc} - add r2, sp, #0 - mov r0, r6 - mov r1, r5 - bl gpiGetProfile - cmp r0, #0 - ldrne r0, [sp] - addne sp, sp, #0x20 - ldmneia sp!, {r4, r5, r6, pc} - add r1, sp, #4 - mov r0, #0 - str r0, [r1, #0] - str r0, [r1, #4] - str r0, [r1, #0xc] - str r0, [r1, #0x10] - str r0, [r1, #0x14] - str r0, [r1, #0x18] - str r5, [sp, #4] - str r0, [r1, #8] - str r0, [sp, #8] - str r0, [sp, #0x10] - str r0, [sp, #0x14] - str r0, [sp, #0x1c] - str r0, [sp, #0x18] - ldr r0, [r4, #0x428] - bl TableEnter - ldr r0, [r4, #0x42c] - add r2, sp, #0 - add r3, r0, #1 - mov r0, r6 - mov r1, r5 - str r3, [r4, #0x42c] - bl gpiGetProfile - cmp r0, #0 - ldrne r0, [sp] - moveq r0, #0 - add sp, sp, #0x20 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_021F3298: .word Unk_ov4_02218D10 -_021F329C: .word Unk_ov4_02218D18 -_021F32A0: .word Unk_ov4_02218CA8 -_021F32A4: .word 0x000002B5 - arm_func_end gpiProfileListAdd - - arm_func_start gpiGetProfile -gpiGetProfile: ; 0x021F32A8 - stmfd sp!, {r3, r4, lr} - sub sp, sp, #0x1c - ldr r0, [r0, #0] - mov r4, r2 - str r1, [sp] - ldr r0, [r0, #0x428] - add r1, sp, #0 - bl TableLookup - cmp r4, #0 - strne r0, [r4] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - add sp, sp, #0x1c - ldmia sp!, {r3, r4, pc} - arm_func_end gpiGetProfile - - arm_func_start gpiRemoveProfileByID -gpiRemoveProfileByID: ; 0x021F32E4 - stmfd sp!, {r3, r4, lr} - sub sp, sp, #4 - add r2, sp, #0 - ldr r4, [r0, #0] - bl gpiGetProfile - cmp r0, #0 - addeq sp, sp, #4 - ldmeqia sp!, {r3, r4, pc} - ldr r0, [r4, #0x428] - ldr r1, [sp] - bl TableRemove - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - arm_func_end gpiRemoveProfileByID - - arm_func_start gpiRemoveProfile -gpiRemoveProfile: ; 0x021F3318 - ldr r0, [r0, #0] - ldr ip, _021F3328 ; =TableRemove - ldr r0, [r0, #0x428] - bx ip - ; .align 2, 0 -_021F3328: .word TableRemove - arm_func_end gpiRemoveProfile - - arm_func_start gpiCheckProfileForUser -gpiCheckProfileForUser: ; 0x021F332C - stmfd sp!, {r4, r5, r6, lr} - mov r6, r1 - ldr r4, [r6, #0xc] - mov r5, r2 - cmp r4, #0 - beq _021F3384 - ldr r0, [r5, #0] - ldr r1, [r4, #0] - bl strcmp - cmp r0, #0 - bne _021F3384 - ldr r0, [r5, #4] - ldr r1, [r4, #8] - bl strcmp - cmp r0, #0 - bne _021F3384 - ldr r1, [r5, #8] - mov r0, #1 - str r6, [r1, #0] - str r0, [r5, #0xc] - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_021F3384: - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end gpiCheckProfileForUser - - arm_func_start gpiFindProfileByUser -gpiFindProfileByUser: ; 0x021F338C - stmfd sp!, {r4, lr} - sub sp, sp, #0x10 - str r1, [sp] - mov ip, #0 - str r2, [sp, #4] - mov r4, r3 - ldr r1, _021F33D4 ; =gpiCheckProfileForUser - add r2, sp, #0 - str ip, [sp, #0xc] - str r4, [sp, #8] - bl gpiProfileMap - ldr r0, [sp, #0xc] - cmp r0, #0 - moveq r0, #0 - streq r0, [r4] - mov r0, #0 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_021F33D4: .word gpiCheckProfileForUser - arm_func_end gpiFindProfileByUser - - arm_func_start gpiProfileMapCallback -gpiProfileMapCallback: ; 0x021F33D8 - stmfd sp!, {r3, lr} - mov ip, r0 - ldr r2, [r1, #8] - ldmia r1, {r0, r3} - mov r1, ip - blx r3 - ldmia sp!, {r3, pc} - arm_func_end gpiProfileMapCallback - - arm_func_start gpiProfileMap -gpiProfileMap: ; 0x021F33F4 - stmdb sp!, {lr} - sub sp, sp, #0xc - ldr r3, [r0, #0] - str r1, [sp, #4] - str r2, [sp, #8] - str r0, [sp] - ldr r0, [r3, #0x428] - ldr r1, _021F3430 ; =gpiProfileMapCallback - add r2, sp, #0 - bl TableMapSafe2 - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - add sp, sp, #0xc - ldmia sp!, {pc} - ; .align 2, 0 -_021F3430: .word gpiProfileMapCallback - arm_func_end gpiProfileMap - - arm_func_start gpiCheckForBuddy -gpiCheckForBuddy: ; 0x021F3434 - ldr r0, [r1, #8] - cmp r0, #0 - beq _021F3458 - ldr r3, [r2, #0] - ldr r0, [r0, #0] - cmp r3, r0 - streq r1, [r2, #4] - moveq r0, #0 - bxeq lr -_021F3458: - mov r0, #1 - bx lr - arm_func_end gpiCheckForBuddy - - arm_func_start gpiFindBuddy -gpiFindBuddy: ; 0x021F3460 - stmfd sp!, {r3, lr} - sub sp, sp, #8 - str r1, [sp] - mov r3, #0 - ldr r1, _021F348C ; =gpiCheckForBuddy - add r2, sp, #0 - str r3, [sp, #4] - bl gpiProfileMap - ldr r0, [sp, #4] - add sp, sp, #8 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_021F348C: .word gpiCheckForBuddy - arm_func_end gpiFindBuddy - - arm_func_start gpiCanFreeProfile -gpiCanFreeProfile: ; 0x021F3490 - cmp r0, #0 - beq _021F34C0 - ldr r1, [r0, #0xc] - cmp r1, #0 - ldreq r1, [r0, #8] - cmpeq r1, #0 - ldreq r1, [r0, #0x18] - cmpeq r1, #0 - ldreq r0, [r0, #0x10] - cmpeq r0, #0 - moveq r0, #1 - bxeq lr -_021F34C0: - mov r0, #0 - bx lr - arm_func_end gpiCanFreeProfile - - .data - - - .global Unk_ov4_02218CA8 -Unk_ov4_02218CA8: ; 0x02218CA8 - .incbin "incbin/overlay4_data.bin", 0x2E28, 0x2E3C - 0x2E28 - - .global Unk_ov4_02218CBC -Unk_ov4_02218CBC: ; 0x02218CBC - .incbin "incbin/overlay4_data.bin", 0x2E3C, 0x2E44 - 0x2E3C - - .global Unk_ov4_02218CC4 -Unk_ov4_02218CC4: ; 0x02218CC4 - .incbin "incbin/overlay4_data.bin", 0x2E44, 0x2E74 - 0x2E44 - - .global Unk_ov4_02218CF4 -Unk_ov4_02218CF4: ; 0x02218CF4 - .incbin "incbin/overlay4_data.bin", 0x2E74, 0x2E80 - 0x2E74 - - .global Unk_ov4_02218D00 -Unk_ov4_02218D00: ; 0x02218D00 - .incbin "incbin/overlay4_data.bin", 0x2E80, 0x2E90 - 0x2E80 - - .global Unk_ov4_02218D10 -Unk_ov4_02218D10: ; 0x02218D10 - .incbin "incbin/overlay4_data.bin", 0x2E90, 0x2E98 - 0x2E90 - - .global Unk_ov4_02218D18 -Unk_ov4_02218D18: ; 0x02218D18 - .incbin "incbin/overlay4_data.bin", 0x2E98, 0xD - diff --git a/subprojects/gamespy/libraries/gp/asm/gpisearch.s b/subprojects/gamespy/libraries/gp/asm/gpisearch.s deleted file mode 100644 index e9b6a06200..0000000000 --- a/subprojects/gamespy/libraries/gp/asm/gpisearch.s +++ /dev/null @@ -1,2574 +0,0 @@ - .include "macros/function.inc" - .include "include/gpisearch.inc" - - - - .text - - - arm_func_start gpiStartProfileSearch -gpiStartProfileSearch: ; 0x021F34C8 - stmfd sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - mov r5, r1 - ldr r4, [r5, #4] - mov r1, #0x1000 - mov r6, r0 - add r0, r1, #1 - str r1, [r4, #0xc] - bl DWCi_GsMalloc - str r0, [r4, #8] - cmp r0, #0 - bne _021F3510 - ldr r1, _021F36A0 ; =0x02218DA8 - mov r0, r6 - bl gpiSetErrorString - add sp, sp, #8 - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} -_021F3510: - mov r0, #2 - mov r1, #1 - mov r2, #0 - bl socket - mvn r1, #0 - str r0, [r4, #4] - cmp r0, r1 - bne _021F355C - ldr r2, _021F36A4 ; =0x02218DB8 - mov r0, r6 - mov r1, #5 - bl gpiSetError - mov r0, r6 - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #8 - mov r0, #3 - ldmia sp!, {r4, r5, r6, pc} -_021F355C: - mov r1, #0 - bl SetSockBlocking - cmp r0, #0 - bne _021F3598 - ldr r2, _021F36A8 ; =0x02218DE0 - mov r0, r6 - mov r1, #5 - bl gpiSetError - mov r0, r6 - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #8 - mov r0, #3 - ldmia sp!, {r4, r5, r6, pc} -_021F3598: - ldr r0, _021F36AC ; =0x02218D68 - bl SOC_GetHostByName - cmp r0, #0 - bne _021F35D4 - ldr r2, _021F36B0 ; =0x02218E14 - mov r0, r6 - mov r1, #5 - bl gpiSetError - mov r0, r6 - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #8 - mov r0, #3 - ldmia sp!, {r4, r5, r6, pc} -_021F35D4: - add r3, sp, #0 - mov r2, #0 - str r2, [r3, #0] - mov r1, #2 - str r2, [r3, #4] - strb r1, [sp, #1] - ldr r0, [r0, #0xc] - ldr r0, [r0, #0] - ldr r0, [r0, #0] - str r0, [sp, #4] - cmp r0, #0 - bne _021F3618 - ldr r0, _021F36B4 ; =0x02218E44 - ldr r1, _021F36B8 ; =0x02218E64 - ldr r2, _021F36BC ; =0x02218D50 - mov r3, #0x59 - bl __msl_assertion_failed -_021F3618: - ldr r0, _021F36C0 ; =0x0000CD74 - add r1, sp, #0 - strh r0, [sp, #2] - ldr r0, [r4, #4] - mov r2, #8 - bl connect - mvn r1, #0 - cmp r0, r1 - bne _021F368C - ldr r0, [r4, #4] - bl GOAGetLastError - mvn r2, #5 - cmp r0, r2 - subne r1, r2, #0x14 - cmpne r0, r1 - subne r1, r2, #0x46 - cmpne r0, r1 - beq _021F368C - ldr r2, _021F36C4 ; =0x02218E70 - mov r0, r6 - mov r1, #5 - bl gpiSetError - mov r0, r6 - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #8 - mov r0, #3 - ldmia sp!, {r4, r5, r6, pc} -_021F368C: - mov r0, #1 - str r0, [r5, #0x14] - mov r0, #0 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_021F36A0: .word Unk_ov4_02218DA8 -_021F36A4: .word Unk_ov4_02218DB8 -_021F36A8: .word Unk_ov4_02218DE0 -_021F36AC: .word GPSearchManagerHostname -_021F36B0: .word Unk_ov4_02218E14 -_021F36B4: .word Unk_ov4_02218E44 -_021F36B8: .word Unk_ov4_02218E64 -_021F36BC: .word Unk_ov4_02218D50 -_021F36C0: .word 0x0000CD74 -_021F36C4: .word Unk_ov4_02218E70 - arm_func_end gpiStartProfileSearch - - arm_func_start gpiInitSearchData -gpiInitSearchData: ; 0x021F36C8 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r0, #0x144 - mov r6, r1 - mov r5, r2 - bl DWCi_GsMalloc - movs r4, r0 - bne _021F36FC - ldr r1, _021F3774 ; =0x02218DA8 - mov r0, r7 - bl gpiSetErrorString - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_021F36FC: - mov r1, #0 - mov r2, #0x144 - bl memset - str r5, [r4, #0] - mvn r0, #0 - str r0, [r4, #4] - mov r0, #0 - str r0, [r4, #8] - str r0, [r4, #0x10] - str r0, [r4, #0x14] - str r0, [r4, #0xc] - str r0, [r4, #0x20] - mov r1, #0x1000 - str r0, [r4, #0x24] - add r0, r1, #1 - str r1, [r4, #0x1c] - bl DWCi_GsMalloc - str r0, [r4, #0x18] - cmp r0, #0 - bne _021F3760 - ldr r1, _021F3774 ; =0x02218DA8 - mov r0, r7 - bl gpiSetErrorString - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_021F3760: - mov r0, #0 - str r0, [r4, #0x13c] - str r0, [r4, #0x140] - str r4, [r6, #0] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021F3774: .word Unk_ov4_02218DA8 - arm_func_end gpiInitSearchData - - arm_func_start gpiStartSearch -gpiStartSearch: ; 0x021F3778 - stmfd sp!, {r3, r4, r5, lr} - sub sp, sp, #0x10 - mov r5, r0 - ldr r4, [r5, #0] - ldr ip, [sp, #0x20] - ldr lr, [r4, #0x210] - add lr, lr, #1 - str lr, [r4, #0x210] - stmia sp, {r2, r3} - mov r2, r1 - add r3, sp, #0xc - mov r1, #3 - str ip, [sp, #8] - bl gpiAddOperation - cmp r0, #0 - addne sp, sp, #0x10 - ldmneia sp!, {r3, r4, r5, pc} - ldr r1, [sp, #0xc] - mov r0, r5 - bl gpiStartProfileSearch - cmp r0, #0 - addne sp, sp, #0x10 - ldmneia sp!, {r3, r4, r5, pc} - ldr r1, [sp, #0xc] - ldr r0, [r1, #8] - cmp r0, #0 - beq _021F37FC - ldr r1, [r1, #0x18] - mov r0, r5 - bl gpiProcess - cmp r0, #0 - addne sp, sp, #0x10 - ldmneia sp!, {r3, r4, r5, pc} -_021F37FC: - mov r0, #0 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end gpiStartSearch - - arm_func_start gpiProfileSearch -gpiProfileSearch: ; 0x021F3808 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #8 - movs r8, r1 - mov sb, r0 - ldrnesb r0, [r8] - mov r7, r2 - mov r6, r3 - ldr r5, [sp, #0x28] - ldr r4, [sp, #0x2c] - cmpne r0, #0 - bne _021F3898 - cmp r6, #0 - ldrnesb r0, [r6] - cmpne r0, #0 - bne _021F3898 - cmp r5, #0 - ldrnesb r0, [r5] - cmpne r0, #0 - bne _021F3898 - cmp r4, #0 - ldrnesb r0, [r4] - cmpne r0, #0 - bne _021F3898 - ldr r0, [sp, #0x30] - cmp r0, #0 - bne _021F3898 - cmp r7, #0 - ldrnesb r0, [r7] - cmpne r0, #0 - bne _021F3898 - ldr r1, _021F39F0 ; =0x02218E98 - mov r0, sb - bl gpiSetErrorString - add sp, sp, #8 - mov r0, #2 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_021F3898: - add r1, sp, #4 - mov r0, sb - mov r2, #1 - bl gpiInitSearchData - cmp r0, #0 - addne sp, sp, #8 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - cmp r8, #0 - bne _021F38CC - ldr r0, [sp, #4] - mov r1, #0 - strb r1, [r0, #0x28] - b _021F38E0 -_021F38CC: - ldr r0, [sp, #4] - mov r1, r8 - add r0, r0, #0x28 - mov r2, #0x1f - bl strzcpy -_021F38E0: - cmp r7, #0 - bne _021F38F8 - ldr r0, [sp, #4] - mov r1, #0 - strb r1, [r0, #0x47] - b _021F390C -_021F38F8: - ldr r0, [sp, #4] - mov r1, r7 - add r0, r0, #0x47 - mov r2, #0x15 - bl strzcpy -_021F390C: - cmp r6, #0 - bne _021F3924 - ldr r0, [sp, #4] - mov r1, #0 - strb r1, [r0, #0x5c] - b _021F3938 -_021F3924: - ldr r0, [sp, #4] - mov r1, r6 - add r0, r0, #0x5c - mov r2, #0x33 - bl strzcpy -_021F3938: - ldr r0, [sp, #4] - add r0, r0, #0x5c - bl _strlwr - cmp r5, #0 - bne _021F395C - ldr r0, [sp, #4] - mov r1, #0 - strb r1, [r0, #0x8f] - b _021F3970 -_021F395C: - ldr r0, [sp, #4] - mov r1, r5 - add r0, r0, #0x8f - mov r2, #0x1f - bl strzcpy -_021F3970: - cmp r4, #0 - bne _021F3988 - ldr r0, [sp, #4] - mov r1, #0 - strb r1, [r0, #0xae] - b _021F399C -_021F3988: - ldr r0, [sp, #4] - mov r1, r4 - add r0, r0, #0xae - mov r2, #0x1f - bl strzcpy -_021F399C: - ldr r0, [sp, #0x34] - ldr r2, [sp, #0x30] - ldr r1, [sp, #4] - cmp r0, #0 - movlt r0, #0 - strlt r0, [sp, #0x34] - str r2, [r1, #0x130] - ldr r2, [sp, #0x34] - ldr r1, [sp, #4] - ldr r0, [sp, #0x40] - str r2, [r1, #0x134] - str r0, [sp] - ldr r1, [sp, #4] - ldr r2, [sp, #0x38] - ldr r3, [sp, #0x3c] - mov r0, sb - bl gpiStartSearch - cmp r0, #0 - moveq r0, #0 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ; .align 2, 0 -_021F39F0: .word Unk_ov4_02218E98 - arm_func_end gpiProfileSearch - - arm_func_start gpiProcessSearch -gpiProcessSearch: ; 0x021F39F4 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x490 - mov sl, r0 - ldr r0, [sl] - str r1, [sp, #0x1c] - ldr r1, [r1, #8] - str r0, [sp, #0x28] - ldr r0, [sp, #0x1c] - cmp r1, #0 - movne r4, #1 - ldr r6, [r0, #4] - moveq r4, #0 -_021F3A24: - mov r1, #1 - ldr r0, _021F482C ; =0x02218EAC - str r1, [sp] - str r0, [sp, #4] - ldr r1, [r6, #4] - add r3, sp, #0x68 - mov r0, sl - add r2, r6, #0x18 - bl gpiSendFromBuffer - cmp r0, #0 - addne sp, sp, #0x490 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [sp, #0x1c] - ldr r0, [r0, #0x14] - cmp r0, #1 - bne _021F4088 - ldr r1, [r6, #4] - add r2, sp, #0x7c - mov r0, sl - bl gpiCheckSocketConnect - cmp r0, #0 - addne sp, sp, #0x490 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [sp, #0x7c] - cmp r0, #4 - bne _021F3AB8 - ldr r1, _021F4830 ; =0x00000D01 - ldr r2, _021F4834 ; =0x02218EB0 - mov r0, sl - bl gpiSetError - mov r0, sl - mov r1, #4 - mov r2, #0 - bl gpiCallErrorCallback - add sp, sp, #0x490 - mov r0, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F3AB8: - cmp r0, #3 - bne _021F5444 - ldr r0, [r6, #0] - cmp r0, #1 - bne _021F3C80 - ldr r2, _021F4838 ; =0x02218EDC - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendStringToBuffer - ldr r2, _021F483C ; =0x02218EE8 - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendStringToBuffer - ldr r0, [sp, #0x28] - add r1, r6, #0x18 - ldr r2, [r0, #0x198] - mov r0, sl - bl gpiAppendIntToBuffer - ldr r2, _021F4840 ; =0x02218EF4 - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendStringToBuffer - ldr r2, [sp, #0x28] - mov r0, sl - ldr r2, [r2, #0x1a0] - add r1, r6, #0x18 - bl gpiAppendIntToBuffer - ldr r2, _021F4844 ; =0x02218F00 - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendStringToBuffer - ldr r2, [sp, #0x28] - mov r0, sl - ldr r2, [r2, #0x470] - add r1, r6, #0x18 - bl gpiAppendIntToBuffer - ldrsb r0, [r6, #0x28] - cmp r0, #0 - beq _021F3B74 - ldr r2, _021F4848 ; =0x02218F10 - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendStringToBuffer - mov r0, sl - add r1, r6, #0x18 - add r2, r6, #0x28 - bl gpiAppendStringToBuffer -_021F3B74: - ldrsb r0, [r6, #0x47] - cmp r0, #0 - beq _021F3BA0 - ldr r2, _021F484C ; =0x02218F18 - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendStringToBuffer - mov r0, sl - add r1, r6, #0x18 - add r2, r6, #0x47 - bl gpiAppendStringToBuffer -_021F3BA0: - ldrsb r0, [r6, #0x5c] - cmp r0, #0 - beq _021F3BCC - ldr r2, _021F4850 ; =0x02218F28 - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendStringToBuffer - mov r0, sl - add r1, r6, #0x18 - add r2, r6, #0x5c - bl gpiAppendStringToBuffer -_021F3BCC: - ldrsb r0, [r6, #0x8f] - cmp r0, #0 - beq _021F3BF8 - ldr r2, _021F4854 ; =0x02218F30 - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendStringToBuffer - mov r0, sl - add r1, r6, #0x18 - add r2, r6, #0x8f - bl gpiAppendStringToBuffer -_021F3BF8: - ldrsb r0, [r6, #0xae] - cmp r0, #0 - beq _021F3C24 - ldr r2, _021F4858 ; =0x02218F3C - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendStringToBuffer - mov r0, sl - add r1, r6, #0x18 - add r2, r6, #0xae - bl gpiAppendStringToBuffer -_021F3C24: - ldr r0, [r6, #0x130] - cmp r0, #0 - beq _021F3C50 - ldr r2, _021F485C ; =0x02218F48 - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendStringToBuffer - ldr r2, [r6, #0x130] - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendIntToBuffer -_021F3C50: - ldr r0, [r6, #0x134] - cmp r0, #0 - ble _021F4048 - ldr r2, _021F4860 ; =0x02218F54 - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendStringToBuffer - ldr r2, [r6, #0x134] - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendIntToBuffer - b _021F4048 -_021F3C80: - cmp r0, #2 - bne _021F3CBC - ldr r2, _021F4864 ; =0x02218F5C - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendStringToBuffer - ldr r2, _021F4850 ; =0x02218F28 - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendStringToBuffer - mov r0, sl - add r1, r6, #0x18 - add r2, r6, #0x5c - bl gpiAppendStringToBuffer - b _021F4048 -_021F3CBC: - cmp r0, #3 - bne _021F3D3C - ldr r2, _021F4868 ; =0x02218F64 - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendStringToBuffer - ldr r2, _021F4850 ; =0x02218F28 - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendStringToBuffer - mov r0, sl - add r1, r6, #0x18 - add r2, r6, #0x5c - bl gpiAppendStringToBuffer - ldr r2, _021F486C ; =0x02218F6C - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendStringToBuffer - mov r0, sl - add r1, r6, #0x18 - add r2, r6, #0xcd - bl gpiAppendStringToBuffer - ldr r2, _021F4844 ; =0x02218F00 - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendStringToBuffer - ldr r2, [sp, #0x28] - mov r0, sl - ldr r2, [r2, #0x470] - add r1, r6, #0x18 - bl gpiAppendIntToBuffer - b _021F4048 -_021F3D3C: - cmp r0, #4 - bne _021F3DC0 - ldr r2, _021F4870 ; =0x02218F74 - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendStringToBuffer - ldr r2, _021F483C ; =0x02218EE8 - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendStringToBuffer - ldr r0, [sp, #0x28] - add r1, r6, #0x18 - ldr r2, [r0, #0x198] - mov r0, sl - bl gpiAppendIntToBuffer - ldr r2, _021F4840 ; =0x02218EF4 - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendStringToBuffer - ldr r2, [sp, #0x28] - mov r0, sl - ldr r2, [r2, #0x1a0] - add r1, r6, #0x18 - bl gpiAppendIntToBuffer - ldr r2, _021F4874 ; =0x02218F80 - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendStringToBuffer - ldr r2, [r6, #0x138] - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendIntToBuffer - b _021F4048 -_021F3DC0: - cmp r0, #5 - bne _021F3E3C - ldr r2, _021F4878 ; =0x02218F8C - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendStringToBuffer - ldr r2, _021F4848 ; =0x02218F10 - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendStringToBuffer - mov r0, sl - add r1, r6, #0x18 - add r2, r6, #0x28 - bl gpiAppendStringToBuffer - mov r0, sl - add r1, r6, #0x18 - ldr r2, _021F4850 ; =0x02218F28 - bl gpiAppendStringToBuffer - mov r0, sl - add r1, r6, #0x18 - add r2, r6, #0x5c - bl gpiAppendStringToBuffer - mov r0, sl - add r1, r6, #0x18 - ldr r2, _021F486C ; =0x02218F6C - bl gpiAppendStringToBuffer - mov r0, sl - add r1, r6, #0x18 - add r2, r6, #0xcd - bl gpiAppendStringToBuffer - b _021F4048 -_021F3E3C: - cmp r0, #6 - bne _021F3F4C - ldr r2, _021F487C ; =0x02218F94 - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendStringToBuffer - ldr r2, _021F4848 ; =0x02218F10 - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendStringToBuffer - mov r0, sl - add r1, r6, #0x18 - add r2, r6, #0x28 - bl gpiAppendStringToBuffer - ldr r2, _021F4850 ; =0x02218F28 - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendStringToBuffer - mov r0, sl - add r1, r6, #0x18 - add r2, r6, #0x5c - bl gpiAppendStringToBuffer - ldr r2, _021F486C ; =0x02218F6C - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendStringToBuffer - mov r0, sl - add r1, r6, #0x18 - add r2, r6, #0xcd - bl gpiAppendStringToBuffer - ldr r2, _021F4880 ; =0x02218FA0 - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendStringToBuffer - ldr r2, [sp, #0x28] - mov r0, sl - ldr r2, [r2, #0x46c] - add r1, r6, #0x18 - bl gpiAppendIntToBuffer - ldr r2, _021F4844 ; =0x02218F00 - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendStringToBuffer - ldr r2, [sp, #0x28] - mov r0, sl - ldr r2, [r2, #0x470] - add r1, r6, #0x18 - bl gpiAppendIntToBuffer - ldr r2, _021F484C ; =0x02218F18 - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendStringToBuffer - mov r0, sl - add r1, r6, #0x18 - add r2, r6, #0x47 - bl gpiAppendStringToBuffer - ldrsb r0, [r6, #0xec] - cmp r0, #0 - beq _021F4048 - ldr r2, _021F4884 ; =0x02218FAC - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendStringToBuffer - mov r0, sl - add r1, r6, #0x18 - add r2, r6, #0xec - bl gpiAppendStringToBuffer - b _021F4048 -_021F3F4C: - cmp r0, #7 - bne _021F3FD4 - ldr r2, _021F4888 ; =0x02218FB4 - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendStringToBuffer - ldr r2, _021F483C ; =0x02218EE8 - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendStringToBuffer - ldr r0, [sp, #0x28] - add r1, r6, #0x18 - ldr r2, [r0, #0x198] - mov r0, sl - bl gpiAppendIntToBuffer - ldr r2, _021F4840 ; =0x02218EF4 - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendStringToBuffer - ldr r2, [sp, #0x28] - mov r0, sl - ldr r2, [r2, #0x1a0] - add r1, r6, #0x18 - bl gpiAppendIntToBuffer - ldr r2, _021F4844 ; =0x02218F00 - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendStringToBuffer - ldr r2, [sp, #0x28] - mov r0, sl - ldr r2, [r2, #0x470] - add r1, r6, #0x18 - bl gpiAppendIntToBuffer - b _021F4048 -_021F3FD4: - cmp r0, #8 - bne _021F4034 - ldr r2, _021F488C ; =0x02218FC0 - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendStringToBuffer - ldr r2, _021F4890 ; =0x02218FD0 - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendStringToBuffer - mov r0, sl - add r1, r6, #0x18 - add r2, r6, #0x47 - bl gpiAppendStringToBuffer - ldr r2, _021F4844 ; =0x02218F00 - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendStringToBuffer - ldr r2, [sp, #0x28] - mov r0, sl - ldr r2, [r2, #0x470] - add r1, r6, #0x18 - bl gpiAppendIntToBuffer - b _021F4048 -_021F4034: - ldr r0, _021F4894 ; =0x02218FE0 - ldr r1, _021F4898 ; =0x02218E64 - ldr r2, _021F489C ; =0x02218D28 - ldr r3, _021F48A0 ; =0x00000275 - bl __msl_assertion_failed -_021F4048: - ldr r2, _021F48A4 ; =0x02218FE4 - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendStringToBuffer - ldr r2, _021F48A8 ; =0x0221AEEC - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendStringToBuffer - ldr r2, _021F48AC ; =0x02218FF0 - mov r0, sl - add r1, r6, #0x18 - bl gpiAppendStringToBuffer - ldr r0, [sp, #0x1c] - mov r1, #4 - str r1, [r0, #0x14] - b _021F5444 -_021F4088: - cmp r0, #4 - bne _021F5444 - add r1, sp, #0x68 - ldr r0, _021F482C ; =0x02218EAC - str r1, [sp] - str r0, [sp, #4] - ldr r1, [r6, #4] - add r3, sp, #0x6c - mov r0, sl - add r2, r6, #8 - bl gpiRecvToBuffer - cmp r0, #0 - beq _021F40F4 - cmp r0, #3 - addne sp, sp, #0x490 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, _021F4830 ; =0x00000D01 - ldr r2, _021F48B0 ; =0x02218FF8 - mov r0, sl - bl gpiSetError - mov r0, sl - mov r1, #3 - mov r2, #0 - bl gpiCallErrorCallback - add sp, sp, #0x490 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F40F4: - ldr r0, [r6, #8] - ldr r1, _021F48AC ; =0x02218FF0 - bl strstr - cmp r0, #0 - beq _021F5444 - mov r0, #0 - str r0, [sp, #0x78] - ldr r0, [sp, #0x1c] - mov r1, #5 - str r1, [r0, #0x14] - ldr r1, [r6, #8] - mov r0, sl - mov r2, #1 - bl gpiCheckForError - cmp r0, #0 - beq _021F4148 - mov r0, #1 - str r0, [r6, #0x140] - add sp, sp, #0x490 - mov r0, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F4148: - ldr r0, [r6, #0] - cmp r0, #1 - bne _021F44B8 - ldr r1, _021F48B4 ; =0x00000601 - mov r0, #0 - str r0, [sp, #0x2c] - str r0, [sp, #0x80] - str r0, [sp, #0x84] - str r0, [sp, #0x8c] - str r1, [sp, #0x88] - add r4, sp, #0x290 - add r5, sp, #0x90 - add fp, sp, #0x78 -_021F417C: - str r5, [sp] - ldr r1, [r6, #8] - mov r0, sl - mov r2, fp - mov r3, r4 - bl gpiReadKeyAndValue - cmp r0, #0 - addne sp, sp, #0x490 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, _021F48B8 ; =0x02219024 - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _021F4210 - str r5, [sp] - ldr r1, [r6, #8] - mov r0, sl - mov r2, fp - mov r3, r4 - bl gpiReadKeyAndValue - cmp r0, #0 - addne sp, sp, #0x490 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, _021F48BC ; =0x0221902C - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _021F4204 - ldr r1, _021F4894 ; =0x02218FE0 - mov r0, r5 - bl strcmp - cmp r0, #0 - movne r0, #0x600 - strne r0, [sp, #0x88] -_021F4204: - mov r0, #1 - str r0, [sp, #0x2c] - b _021F43F0 -_021F4210: - ldr r1, _021F48C0 ; =0x02219034 - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _021F43C4 - ldr r1, [sp, #0x84] - ldr r0, [sp, #0x8c] - add r2, r1, #1 - mov r1, #0xac - mul r1, r2, r1 - str r2, [sp, #0x84] - bl DWCi_GsRealloc - movs r7, r0 - str r7, [sp, #0x8c] - bne _021F4264 - ldr r1, _021F48C4 ; =0x02218DA8 - mov r0, sl - bl gpiSetErrorString - add sp, sp, #0x490 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F4264: - ldr r0, [sp, #0x84] - mov r1, #0 - sub r2, r0, #1 - mov r0, #0xac - mul r8, r2, r0 - add sb, r7, r8 - mov r0, sb - mov r2, #0xac - bl memset - mov r0, r5 - bl atoi - str r0, [r7, r8] - mov r8, #0 -_021F4298: - ldr r7, [sp, #0x78] - mov r0, sl - str r5, [sp] - ldr r1, [r6, #8] - mov r2, fp - mov r3, r4 - bl gpiReadKeyAndValue - cmp r0, #0 - addne sp, sp, #0x490 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, _021F48C8 ; =0x02219038 - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _021F42E8 - add r0, sb, #4 - mov r1, r5 - mov r2, #0x1f - bl strzcpy - b _021F43B8 -_021F42E8: - ldr r1, _021F48CC ; =0x02219040 - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _021F4310 - add r0, sb, #0x23 - mov r1, r5 - mov r2, #0x15 - bl strzcpy - b _021F43B8 -_021F4310: - ldr r1, _021F48D0 ; =0x0221904C - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _021F4338 - add r0, sb, #0x38 - mov r1, r5 - mov r2, #0x1f - bl strzcpy - b _021F43B8 -_021F4338: - ldr r1, _021F48D4 ; =0x02219058 - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _021F4360 - add r0, sb, #0x57 - mov r1, r5 - mov r2, #0x1f - bl strzcpy - b _021F43B8 -_021F4360: - ldr r1, _021F48D8 ; =0x02219064 - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _021F4388 - add r0, sb, #0x76 - mov r1, r5 - mov r2, #0x33 - bl strzcpy - b _021F43B8 -_021F4388: - ldr r1, _021F48C0 ; =0x02219034 - mov r0, r4 - bl strcmp - cmp r0, #0 - beq _021F43B0 - ldr r1, _021F48B8 ; =0x02219024 - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _021F43B8 -_021F43B0: - str r7, [sp, #0x78] - mov r8, #1 -_021F43B8: - cmp r8, #0 - beq _021F4298 - b _021F43F0 -_021F43C4: - ldr r2, _021F48DC ; =0x0221906C - mov r0, sl - mov r1, #1 - bl gpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x490 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F43F0: - ldr r0, [sp, #0x2c] - cmp r0, #0 - beq _021F417C - ldr r0, [sp, #0x1c] - ldr r4, [sp, #0x88] - ldr r3, [r0, #0xc] - ldr r2, [r0, #0x10] - str r3, [sp, #0x70] - str r2, [sp, #0x74] - cmp r3, #0 - beq _021F4428 - add r1, sp, #0x80 - mov r0, sl - blx r3 -_021F4428: - cmp r4, #0x600 - ldreq r0, [sp, #0x88] - cmpeq r0, #0x600 - bne _021F44A4 - add r0, r6, #0x8f - str r0, [sp] - add r0, r6, #0xae - str r0, [sp, #4] - ldr r1, [r6, #0x130] - mov r0, sl - str r1, [sp, #8] - ldr r3, [sp, #0x84] - ldr r2, [r6, #0x134] - add r1, r6, #0x28 - add r2, r3, r2 - str r2, [sp, #0xc] - ldr r2, [sp, #0x1c] - ldr r3, [r2, #8] - add r2, r6, #0x47 - str r3, [sp, #0x10] - ldr r3, [sp, #0x1c] - ldr r4, [r3, #0xc] - add r3, r6, #0x5c - str r4, [sp, #0x14] - ldr r4, [sp, #0x1c] - ldr r4, [r4, #0x10] - str r4, [sp, #0x18] - bl gpiProfileSearch - cmp r0, #0 - addne sp, sp, #0x490 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F44A4: - ldr r0, [sp, #0x8c] - bl DWCi_GsFree - mov r0, #0 - str r0, [sp, #0x8c] - b _021F5438 -_021F44B8: - cmp r0, #2 - bne _021F45CC - ldr r0, [sp, #0x1c] - ldr r1, [r0, #0xc] - ldr r0, [r0, #0x10] - str r1, [sp, #0x30] - str r0, [sp, #0x34] - cmp r1, #0 - beq _021F5438 - add r0, sp, #0x90 - str r0, [sp] - ldr r1, [r6, #8] - add r2, sp, #0x78 - add r3, sp, #0x290 - mov r0, sl - bl gpiReadKeyAndValue - cmp r0, #0 - addne sp, sp, #0x490 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, _021F48E0 ; =0x02219094 - add r0, sp, #0x290 - bl strcmp - cmp r0, #0 - beq _021F4544 - ldr r2, _021F48DC ; =0x0221906C - mov r0, sl - mov r1, #1 - bl gpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x490 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F4544: - mov r0, #0x3c - bl DWCi_GsMalloc - movs r4, r0 - bne _021F456C - ldr r1, _021F48C4 ; =0x02218DA8 - mov r0, sl - bl gpiSetErrorString - add sp, sp, #0x490 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F456C: - mov r0, #0 - str r0, [r4, #0] - add r0, r4, #4 - add r1, r6, #0x5c - mov r2, #0x33 - bl strzcpy - ldrsb r0, [sp, #0x90] - ldr r1, [sp, #0x1c] - add r2, sp, #0x30 - cmp r0, #0x30 - moveq r0, #0 - movne r0, #1 - str r0, [r4, #0x38] - str r1, [sp] - mov r1, #0 - str r1, [sp, #4] - mov r0, sl - mov r3, r4 - ldmia r2, {r1, r2} - bl gpiAddCallback - cmp r0, #0 - beq _021F5438 - add sp, sp, #0x490 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F45CC: - cmp r0, #3 - bne _021F4974 - ldr r0, [sp, #0x1c] - ldr r1, [r0, #0xc] - ldr r0, [r0, #0x10] - str r1, [sp, #0x38] - str r0, [sp, #0x3c] - cmp r1, #0 - beq _021F5438 - mov r0, #0x44 - bl DWCi_GsMalloc - movs r8, r0 - bne _021F4618 - ldr r1, _021F48C4 ; =0x02218DA8 - mov r0, sl - bl gpiSetErrorString - add sp, sp, #0x490 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F4618: - mov r2, #0 - add r0, r8, #4 - add r1, r6, #0x5c - str r2, [r8] - bl strcpy - mov r1, #0 - str r1, [r8, #0x38] - str r1, [r8, #0x3c] - add r0, sp, #0x90 - str r1, [r8, #0x40] - str r0, [sp] - ldr r1, [r6, #8] - add r2, sp, #0x78 - add r3, sp, #0x290 - mov r0, sl - bl gpiReadKeyAndValue - cmp r0, #0 - addne sp, sp, #0x490 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, _021F48E4 ; =0x02219098 - add r0, sp, #0x290 - bl strcmp - cmp r0, #0 - beq _021F46A4 - ldr r2, _021F48DC ; =0x0221906C - mov r0, sl - mov r1, #1 - bl gpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x490 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F46A4: - ldr fp, _021F48C8 ; =0x02219038 - mov sb, #0 - add r4, sp, #0x290 - add r7, sp, #0x90 - add r5, sp, #0x78 -_021F46B8: - str r7, [sp] - ldr r1, [r6, #8] - mov r0, sl - mov r2, r5 - mov r3, r4 - bl gpiReadKeyAndValue - cmp r0, #0 - addne sp, sp, #0x490 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, r4 - mov r1, fp - bl strcmp - cmp r0, #0 - bne _021F4784 - ldr r0, [r8, #0x3c] - ldr r1, [r8, #0x38] - add r1, r1, #1 - mov r1, r1, lsl #2 - bl DWCi_GsRealloc - cmp r0, #0 - bne _021F4724 - ldr r1, _021F48C4 ; =0x02218DA8 - mov r0, sl - bl gpiSetErrorString - add sp, sp, #0x490 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F4724: - str r0, [r8, #0x3c] - mov r0, #0x1f - bl DWCi_GsMalloc - cmp r0, #0 - bne _021F4750 - ldr r1, _021F48C4 ; =0x02218DA8 - mov r0, sl - bl gpiSetErrorString - add sp, sp, #0x490 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F4750: - ldr r3, [r8, #0x3c] - ldr r2, [r8, #0x38] - mov r1, r7 - str r0, [r3, r2, lsl #2] - ldr r3, [r8, #0x3c] - ldr r0, [r8, #0x38] - mov r2, #0x1f - ldr r0, [r3, r0, lsl #2] - bl strzcpy - ldr r0, [r8, #0x38] - add r0, r0, #1 - str r0, [r8, #0x38] - b _021F4938 -_021F4784: - ldr r1, _021F48CC ; =0x02219040 - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _021F48F4 - ldr r0, [r8, #0x38] - cmp r0, #0 - ble _021F4938 - mov r1, r0, lsl #2 - ldr r0, [r8, #0x40] - bl DWCi_GsRealloc - cmp r0, #0 - bne _021F47D0 - ldr r1, _021F48C4 ; =0x02218DA8 - mov r0, sl - bl gpiSetErrorString - add sp, sp, #0x490 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F47D0: - str r0, [r8, #0x40] - mov r0, #0x15 - bl DWCi_GsMalloc - cmp r0, #0 - bne _021F47FC - ldr r1, _021F48C4 ; =0x02218DA8 - mov r0, sl - bl gpiSetErrorString - add sp, sp, #0x490 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F47FC: - ldr r3, [r8, #0x40] - ldr r2, [r8, #0x38] - mov r1, r7 - add r2, r3, r2, lsl #2 - str r0, [r2, #-4] - ldr r3, [r8, #0x40] - ldr r0, [r8, #0x38] - mov r2, #0x15 - add r0, r3, r0, lsl #2 - ldr r0, [r0, #-4] - bl strzcpy - b _021F4938 - ; .align 2, 0 -_021F482C: .word Unk_ov4_02218EAC -_021F4830: .word 0x00000D01 -_021F4834: .word Unk_ov4_02218EB0 -_021F4838: .word Unk_ov4_02218EDC -_021F483C: .word Unk_ov4_02218EE8 -_021F4840: .word Unk_ov4_02218EF4 -_021F4844: .word Unk_ov4_02218F00 -_021F4848: .word Unk_ov4_02218F10 -_021F484C: .word Unk_ov4_02218F18 -_021F4850: .word Unk_ov4_02218F28 -_021F4854: .word Unk_ov4_02218F30 -_021F4858: .word Unk_ov4_02218F3C -_021F485C: .word Unk_ov4_02218F48 -_021F4860: .word Unk_ov4_02218F54 -_021F4864: .word Unk_ov4_02218F5C -_021F4868: .word Unk_ov4_02218F64 -_021F486C: .word Unk_ov4_02218F6C -_021F4870: .word Unk_ov4_02218F74 -_021F4874: .word Unk_ov4_02218F80 -_021F4878: .word Unk_ov4_02218F8C -_021F487C: .word Unk_ov4_02218F94 -_021F4880: .word Unk_ov4_02218FA0 -_021F4884: .word Unk_ov4_02218FAC -_021F4888: .word Unk_ov4_02218FB4 -_021F488C: .word Unk_ov4_02218FC0 -_021F4890: .word Unk_ov4_02218FD0 -_021F4894: .word Unk_ov4_02218FE0 -_021F4898: .word Unk_ov4_02218E64 -_021F489C: .word Unk_ov4_02218D28 -_021F48A0: .word 0x00000275 -_021F48A4: .word Unk_ov4_02218FE4 -_021F48A8: .word 0x0221AEEC -_021F48AC: .word Unk_ov4_02218FF0 -_021F48B0: .word Unk_ov4_02218FF8 -_021F48B4: .word 0x00000601 -_021F48B8: .word Unk_ov4_02219024 -_021F48BC: .word Unk_ov4_0221902C -_021F48C0: .word Unk_ov4_02219034 -_021F48C4: .word Unk_ov4_02218DA8 -_021F48C8: .word Unk_ov4_02219038 -_021F48CC: .word Unk_ov4_02219040 -_021F48D0: .word Unk_ov4_0221904C -_021F48D4: .word Unk_ov4_02219058 -_021F48D8: .word Unk_ov4_02219064 -_021F48DC: .word Unk_ov4_0221906C -_021F48E0: .word Unk_ov4_02219094 -_021F48E4: .word Unk_ov4_02219098 -_021F48E8: .word Unk_ov4_0221909C -_021F48EC: .word Unk_ov4_022190A4 -_021F48F0: .word Unk_ov4_022190AC -_021F48F4: - ldr r1, _021F48E8 ; =0x0221909C - mov r0, r4 - bl strcmp - cmp r0, #0 - moveq sb, #1 - beq _021F4938 - ldr r2, _021F48DC ; =0x0221906C - mov r0, sl - mov r1, #1 - bl gpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x490 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F4938: - cmp sb, #0 - beq _021F46B8 - ldr r1, [sp, #0x1c] - add r2, sp, #0x38 - str r1, [sp] - mov r1, #3 - str r1, [sp, #4] - mov r0, sl - mov r3, r8 - ldmia r2, {r1, r2} - bl gpiAddCallback - cmp r0, #0 - beq _021F5438 - add sp, sp, #0x490 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F4974: - cmp r0, #4 - bne _021F4BF0 - ldr r0, [sp, #0x1c] - ldr r1, [r0, #0xc] - ldr r0, [r0, #0x10] - str r1, [sp, #0x40] - str r0, [sp, #0x44] - cmp r1, #0 - beq _021F5438 - mov r0, #0x10 - bl DWCi_GsMalloc - movs fp, r0 - bne _021F49C0 - ldr r1, _021F48C4 ; =0x02218DA8 - mov r0, sl - bl gpiSetErrorString - add sp, sp, #0x490 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F49C0: - ldr r1, [r6, #0x138] - mov r0, #0 - stmia fp, {r0, r1} - str r0, [fp, #8] - str r0, [sp, #0x20] - str r0, [fp, #0xc] - add r4, sp, #0x290 - add r5, sp, #0x90 -_021F49E0: - str r5, [sp] - ldr r1, [r6, #8] - mov r0, sl - add r2, sp, #0x78 - mov r3, r4 - bl gpiReadKeyAndValue - cmp r0, #0 - addne sp, sp, #0x490 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, _021F48EC ; =0x022190A4 - mov r0, r4 - bl strcmp - cmp r0, #0 - moveq r0, #1 - streq r0, [sp, #0x20] - beq _021F4BB0 - ldr r1, _021F48F0 ; =0x022190AC - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _021F4B84 - ldr r0, [fp, #8] - add r2, r0, #1 - mov r0, #0x128 - mul r1, r2, r0 - str r2, [fp, #8] - ldr r0, [fp, #0xc] - bl DWCi_GsRealloc - str r0, [fp, #0xc] - movs r8, r0 - bne _021F4A74 - ldr r1, _021F48C4 ; =0x02218DA8 - mov r0, sl - bl gpiSetErrorString - add sp, sp, #0x490 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F4A74: - ldr r0, [fp, #8] - mov r1, #0 - sub r2, r0, #1 - mov r0, #0x128 - mul sb, r2, r0 - add r7, r8, sb - mov r0, r7 - mov r2, #0x128 - bl memset - mov r0, #1 - str r0, [r7, #0x24] - mov r0, r5 - bl atoi - str r0, [r8, sb] - mov r8, #0 -_021F4AB0: - ldr sb, [sp, #0x78] - mov r0, sl - str r5, [sp] - ldr r1, [r6, #8] - add r2, sp, #0x78 - mov r3, r4 - bl gpiReadKeyAndValue - cmp r0, #0 - addne sp, sp, #0x490 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, _021F5468 ; =0x022190B0 - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _021F4B00 - add r0, r7, #0x28 - mov r1, r5 - mov r2, #0x100 - bl strzcpy - b _021F4B24 -_021F4B00: - ldr r1, _021F48C8 ; =0x02219038 - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _021F4B24 - add r0, r7, #4 - mov r1, r5 - mov r2, #0x1f - bl strzcpy -_021F4B24: - ldr r1, _021F546C ; =0x022190B8 - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _021F4B48 - mov r0, r5 - bl atoi - str r0, [r7, #0x24] - b _021F4B78 -_021F4B48: - ldr r1, _021F48F0 ; =0x022190AC - mov r0, r4 - bl strcmp - cmp r0, #0 - beq _021F4B70 - ldr r1, _021F48EC ; =0x022190A4 - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _021F4B78 -_021F4B70: - str sb, [sp, #0x78] - mov r8, #1 -_021F4B78: - cmp r8, #0 - beq _021F4AB0 - b _021F4BB0 -_021F4B84: - ldr r2, _021F48DC ; =0x0221906C - mov r0, sl - mov r1, #1 - bl gpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x490 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F4BB0: - ldr r0, [sp, #0x20] - cmp r0, #0 - beq _021F49E0 - ldr r1, [sp, #0x1c] - add r2, sp, #0x40 - str r1, [sp] - mov r1, #4 - str r1, [sp, #4] - mov r0, sl - mov r3, fp - ldmia r2, {r1, r2} - bl gpiAddCallback - cmp r0, #0 - beq _021F5438 - add sp, sp, #0x490 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F4BF0: - cmp r0, #5 - bne _021F4D4C - ldr r0, [sp, #0x1c] - ldr r1, [r0, #0xc] - ldr r0, [r0, #0x10] - str r1, [sp, #0x48] - str r0, [sp, #0x4c] - cmp r1, #0 - beq _021F5438 - add r0, sp, #0x90 - str r0, [sp] - ldr r1, [r6, #8] - add r2, sp, #0x78 - add r3, sp, #0x290 - mov r0, sl - bl gpiReadKeyAndValue - cmp r0, #0 - addne sp, sp, #0x490 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, _021F5470 ; =0x022190C4 - add r0, sp, #0x290 - bl strcmp - cmp r0, #0 - beq _021F4C7C - ldr r2, _021F48DC ; =0x0221906C - mov r0, sl - mov r1, #1 - bl gpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x490 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F4C7C: - add r0, sp, #0x90 - bl atoi - movs r4, r0 - beq _021F4C9C - ldr r0, [sp, #0x28] - mov r5, #0 - str r4, [r0, #0x418] - b _021F4CF0 -_021F4C9C: - ldr r0, [r6, #8] - ldr r1, _021F5474 ; =0x022190C8 - add r2, sp, #0x90 - mov r3, #0x200 - bl gpiValueForKey - cmp r0, #0 - bne _021F4CE4 - ldr r2, _021F48DC ; =0x0221906C - mov r0, sl - mov r1, #1 - bl gpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x490 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F4CE4: - add r0, sp, #0x90 - bl atoi - mov r5, r0 -_021F4CF0: - mov r0, #8 - bl DWCi_GsMalloc - movs r3, r0 - bne _021F4D18 - ldr r1, _021F48C4 ; =0x02218DA8 - mov r0, sl - bl gpiSetErrorString - add sp, sp, #0x490 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F4D18: - stmia r3, {r4, r5} - ldr r1, [sp, #0x1c] - add r2, sp, #0x48 - str r1, [sp] - mov r1, #0 - str r1, [sp, #4] - mov r0, sl - ldmia r2, {r1, r2} - bl gpiAddCallback - cmp r0, #0 - beq _021F5438 - add sp, sp, #0x490 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F4D4C: - cmp r0, #6 - bne _021F4EAC - ldr r0, [sp, #0x1c] - ldr r1, [r0, #0xc] - ldr r0, [r0, #0x10] - str r1, [sp, #0x50] - str r0, [sp, #0x54] - cmp r1, #0 - beq _021F5438 - add r0, sp, #0x90 - str r0, [sp] - ldr r1, [r6, #8] - add r2, sp, #0x78 - add r3, sp, #0x290 - mov r0, sl - bl gpiReadKeyAndValue - cmp r0, #0 - addne sp, sp, #0x490 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, _021F5478 ; =0x022190D0 - add r0, sp, #0x290 - bl strcmp - cmp r0, #0 - beq _021F4DD8 - ldr r2, _021F48DC ; =0x0221906C - mov r0, sl - mov r1, #1 - bl gpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x490 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F4DD8: - add r0, sp, #0x90 - bl atoi - movs r4, r0 - ldrne r0, [sp, #0x28] - ldr r1, _021F5474 ; =0x022190C8 - strne r4, [r0, #0x418] - ldr r0, [r6, #8] - add r2, sp, #0x90 - mov r3, #0x200 - bl gpiValueForKey - cmp r0, #0 - bne _021F4E44 - cmp r4, #0 - bne _021F4E3C - ldr r2, _021F48DC ; =0x0221906C - mov r0, sl - mov r1, #1 - bl gpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x490 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F4E3C: - mov r5, #0 - b _021F4E50 -_021F4E44: - add r0, sp, #0x90 - bl atoi - mov r5, r0 -_021F4E50: - mov r0, #8 - bl DWCi_GsMalloc - movs r3, r0 - bne _021F4E78 - ldr r1, _021F48C4 ; =0x02218DA8 - mov r0, sl - bl gpiSetErrorString - add sp, sp, #0x490 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F4E78: - stmia r3, {r4, r5} - ldr r1, [sp, #0x1c] - add r2, sp, #0x50 - str r1, [sp] - mov r1, #0 - str r1, [sp, #4] - mov r0, sl - ldmia r2, {r1, r2} - bl gpiAddCallback - cmp r0, #0 - beq _021F5438 - add sp, sp, #0x490 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F4EAC: - cmp r0, #7 - bne _021F51E8 - ldr r0, [sp, #0x1c] - ldr r1, [r0, #0xc] - ldr r0, [r0, #0x10] - str r1, [sp, #0x58] - str r0, [sp, #0x5c] - cmp r1, #0 - beq _021F5438 - mov r0, #0xc - bl DWCi_GsMalloc - movs fp, r0 - bne _021F4EF8 - ldr r1, _021F48C4 ; =0x02218DA8 - mov r0, sl - bl gpiSetErrorString - add sp, sp, #0x490 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F4EF8: - mov r1, #0 - str r1, [fp] - str r1, [fp, #4] - add r0, sp, #0x90 - str r1, [fp, #8] - str r0, [sp] - ldr r1, [r6, #8] - add r2, sp, #0x78 - add r3, sp, #0x290 - mov r0, sl - bl gpiReadKeyAndValue - cmp r0, #0 - addne sp, sp, #0x490 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, _021F547C ; =0x022190D4 - add r0, sp, #0x290 - bl strcmp - cmp r0, #0 - beq _021F4F70 - ldr r2, _021F48DC ; =0x0221906C - mov r0, sl - mov r1, #1 - bl gpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x490 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F4F70: - mov r0, #0 - str r0, [sp, #0x24] - add r4, sp, #0x290 - add r5, sp, #0x90 -_021F4F80: - str r5, [sp] - ldr r1, [r6, #8] - mov r0, sl - add r2, sp, #0x78 - mov r3, r4 - bl gpiReadKeyAndValue - cmp r0, #0 - addne sp, sp, #0x490 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, _021F5480 ; =0x022190DC - mov r0, r4 - bl strcmp - cmp r0, #0 - moveq r0, #1 - streq r0, [sp, #0x24] - beq _021F51A8 - ldr r1, _021F5484 ; =0x022190E4 - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _021F517C - ldr r1, [fp, #4] - ldr r0, [fp, #8] - add r2, r1, #1 - mov r1, #0xac - mul r1, r2, r1 - bl DWCi_GsRealloc - cmp r0, #0 - bne _021F500C - ldr r1, _021F48C4 ; =0x02218DA8 - mov r0, sl - bl gpiSetErrorString - add sp, sp, #0x490 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F500C: - str r0, [fp, #8] - ldr r2, [fp, #4] - mov r8, r0 - mov r0, #0xac - mul sb, r2, r0 - add r7, r8, sb - mov r1, #0 - mov r0, r7 - mov r2, #0xac - bl memset - ldr r1, [fp, #4] - mov r0, r5 - add r1, r1, #1 - str r1, [fp, #4] - bl atoi - str r0, [r8, sb] - mov r8, #0 -_021F5050: - ldr sb, [sp, #0x78] - mov r0, sl - str r5, [sp] - ldr r1, [r6, #8] - add r2, sp, #0x78 - mov r3, r4 - bl gpiReadKeyAndValue - cmp r0, #0 - addne sp, sp, #0x490 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, _021F48C8 ; =0x02219038 - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _021F50A0 - add r0, r7, #4 - mov r1, r5 - mov r2, #0x1f - bl strzcpy - b _021F5170 -_021F50A0: - ldr r1, _021F48CC ; =0x02219040 - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _021F50C8 - add r0, r7, #0x23 - mov r1, r5 - mov r2, #0x15 - bl strzcpy - b _021F5170 -_021F50C8: - ldr r1, _021F5488 ; =0x022190E8 - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _021F50F0 - add r0, r7, #0x38 - mov r1, r5 - mov r2, #0x1f - bl strzcpy - b _021F5170 -_021F50F0: - ldr r1, _021F548C ; =0x022190F0 - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _021F5118 - add r0, r7, #0x57 - mov r1, r5 - mov r2, #0x1f - bl strzcpy - b _021F5170 -_021F5118: - ldr r1, _021F48D8 ; =0x02219064 - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _021F5140 - add r0, r7, #0x76 - mov r1, r5 - mov r2, #0x33 - bl strzcpy - b _021F5170 -_021F5140: - ldr r1, _021F5484 ; =0x022190E4 - mov r0, r4 - bl strcmp - cmp r0, #0 - beq _021F5168 - ldr r1, _021F5480 ; =0x022190DC - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _021F5170 -_021F5168: - str sb, [sp, #0x78] - mov r8, #1 -_021F5170: - cmp r8, #0 - beq _021F5050 - b _021F51A8 -_021F517C: - ldr r2, _021F48DC ; =0x0221906C - mov r0, sl - mov r1, #1 - bl gpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x490 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F51A8: - ldr r0, [sp, #0x24] - cmp r0, #0 - beq _021F4F80 - ldr r1, [sp, #0x1c] - add r2, sp, #0x58 - str r1, [sp] - mov r1, #8 - str r1, [sp, #4] - mov r0, sl - mov r3, fp - ldmia r2, {r1, r2} - bl gpiAddCallback - cmp r0, #0 - beq _021F5438 - add sp, sp, #0x490 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F51E8: - cmp r0, #8 - bne _021F5424 - ldr r0, [sp, #0x1c] - ldr r1, [r0, #0xc] - ldr r0, [r0, #0x10] - str r1, [sp, #0x60] - str r0, [sp, #0x64] - cmp r1, #0 - beq _021F5438 - mov r0, #0xc - mov r7, #0 - bl DWCi_GsMalloc - movs r8, r0 - bne _021F5238 - ldr r1, _021F48C4 ; =0x02218DA8 - mov r0, sl - bl gpiSetErrorString - add sp, sp, #0x490 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F5238: - mov r1, r7 - str r1, [r8] - str r1, [r8, #4] - add r0, sp, #0x90 - str r1, [r8, #8] - str r0, [sp] - ldr r1, [r6, #8] - add r2, sp, #0x78 - add r3, sp, #0x290 - mov r0, sl - bl gpiReadKeyAndValue - cmp r0, #0 - addne sp, sp, #0x490 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, _021F5490 ; =0x022190F8 - add r0, sp, #0x290 - bl strcmp - cmp r0, #0 - beq _021F52B0 - ldr r2, _021F48DC ; =0x0221906C - mov r0, sl - mov r1, #1 - bl gpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x490 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F52B0: - add r0, sp, #0x90 - bl atoi - str r0, [r8, #4] - mov r0, r0, lsl #2 - bl DWCi_GsMalloc - str r0, [r8, #8] - cmp r0, #0 - bne _021F52E8 - ldr r1, _021F48C4 ; =0x02218DA8 - mov r0, sl - bl gpiSetErrorString - add sp, sp, #0x490 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F52E8: - mov sb, r7 - add r4, sp, #0x290 - add r5, sp, #0x90 - add fp, sp, #0x78 -_021F52F8: - str r5, [sp] - ldr r1, [r6, #8] - mov r0, sl - mov r2, fp - mov r3, r4 - bl gpiReadKeyAndValue - cmp r0, #0 - addne sp, sp, #0x490 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, _021F48C8 ; =0x02219038 - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _021F537C - mov r0, #0x15 - bl DWCi_GsMalloc - ldr r1, [r8, #8] - str r0, [r1, r7, lsl #2] - ldr r0, [r8, #8] - ldr r0, [r0, r7, lsl #2] - cmp r0, #0 - bne _021F5368 - ldr r1, _021F48C4 ; =0x02218DA8 - mov r0, sl - bl gpiSetErrorString - add sp, sp, #0x490 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F5368: - mov r1, r5 - mov r2, #0x15 - bl strzcpy - add r7, r7, #1 - b _021F53E8 -_021F537C: - ldr r1, _021F5494 ; =0x022190FC - mov r0, r4 - bl strcmp - cmp r0, #0 - bne _021F53BC - ldr r0, [r8, #4] - cmp r7, r0 - beq _021F53B0 - ldr r0, _021F5498 ; =0x02219104 - ldr r1, _021F4898 ; =0x02218E64 - ldr r2, _021F489C ; =0x02218D28 - ldr r3, _021F549C ; =0x00000515 - bl __msl_assertion_failed -_021F53B0: - str r7, [r8, #4] - mov sb, #1 - b _021F53E8 -_021F53BC: - ldr r2, _021F48DC ; =0x0221906C - mov r0, sl - mov r1, #1 - bl gpiSetError - mov r0, sl - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x490 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F53E8: - cmp sb, #0 - beq _021F52F8 - ldr r1, [sp, #0x1c] - add r2, sp, #0x60 - str r1, [sp] - mov r1, #9 - str r1, [sp, #4] - mov r0, sl - mov r3, r8 - ldmia r2, {r1, r2} - bl gpiAddCallback - cmp r0, #0 - beq _021F5438 - add sp, sp, #0x490 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F5424: - ldr r0, _021F4894 ; =0x02218FE0 - ldr r1, _021F4898 ; =0x02218E64 - ldr r2, _021F489C ; =0x02218D28 - ldr r3, _021F54A0 ; =0x0000052A - bl __msl_assertion_failed -_021F5438: - mov r0, #1 - str r0, [r6, #0x140] - mov r4, #0 -_021F5444: - cmp r4, #0 - beq _021F5454 - mov r0, #0xa - bl msleep -_021F5454: - cmp r4, #0 - bne _021F3A24 - mov r0, #0 - add sp, sp, #0x490 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_021F5468: .word Unk_ov4_022190B0 -_021F546C: .word Unk_ov4_022190B8 -_021F5470: .word Unk_ov4_022190C4 -_021F5474: .word Unk_ov4_022190C8 -_021F5478: .word Unk_ov4_022190D0 -_021F547C: .word Unk_ov4_022190D4 -_021F5480: .word Unk_ov4_022190DC -_021F5484: .word Unk_ov4_022190E4 -_021F5488: .word Unk_ov4_022190E8 -_021F548C: .word Unk_ov4_022190F0 -_021F5490: .word Unk_ov4_022190F8 -_021F5494: .word Unk_ov4_022190FC -_021F5498: .word Unk_ov4_02219104 -_021F549C: .word 0x00000515 -_021F54A0: .word 0x0000052A - arm_func_end gpiProcessSearch - - arm_func_start gpiProcessSearches -gpiProcessSearches: ; 0x021F54A4 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - ldr r6, [sl] - mov sb, #0 - ldr r0, [r6, #0x210] - cmp r0, #0 - ble _021F55D8 - mov r0, r0, lsl #2 - bl DWCi_GsMalloc - movs r7, r0 - bne _021F54E4 - ldr r1, _021F55E0 ; =0x02218DA8 - mov r0, sl - bl gpiSetErrorString - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F54E4: - ldr r8, [r6, #0x424] - cmp r8, #0 - beq _021F5560 - ldr r5, _021F55E4 ; =0x02219124 - ldr fp, _021F55E8 ; =0x02218E64 - mov r4, #1 -_021F54FC: - ldr r0, [r8] - cmp r0, #3 - bne _021F5554 - ldr r0, [r8, #0x14] - cmp r0, #5 - beq _021F5554 - ldr r0, [r8, #4] - ldr r0, [r0, #0x13c] - cmp r0, #0 - bne _021F5554 - ldr r0, [r6, #0x210] - cmp sb, r0 - blt _021F5544 - ldr r2, _021F55EC ; =0x02218D3C - ldr r3, _021F55F0 ; =0x00000563 - mov r0, r5 - mov r1, fp - bl __msl_assertion_failed -_021F5544: - str r8, [r7, sb, lsl #2] - ldr r0, [r8, #4] - add sb, sb, #1 - str r4, [r0, #0x13c] -_021F5554: - ldr r8, [r8, #0x20] - cmp r8, #0 - bne _021F54FC -_021F5560: - cmp sb, #0 - mov r4, #0 - ble _021F5590 -_021F556C: - ldr r1, [r7, r4, lsl #2] - mov r0, sl - bl gpiProcessSearch - cmp r0, #0 - ldrne r1, [r7, r4, lsl #2] - add r4, r4, #1 - strne r0, [r1, #0x1c] - cmp r4, sb - blt _021F556C -_021F5590: - cmp sb, #0 - mov r4, #0 - ble _021F55D0 - mov r5, r4 -_021F55A0: - ldr r0, [r7, r4, lsl #2] - ldr r0, [r0, #4] - str r5, [r0, #0x13c] - ldr r0, [r0, #0x140] - cmp r0, #0 - beq _021F55C4 - ldr r1, [r7, r4, lsl #2] - mov r0, sl - bl gpiRemoveOperation -_021F55C4: - add r4, r4, #1 - cmp r4, sb - blt _021F55A0 -_021F55D0: - mov r0, r7 - bl DWCi_GsFree -_021F55D8: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_021F55E0: .word Unk_ov4_02218DA8 -_021F55E4: .word Unk_ov4_02219124 -_021F55E8: .word Unk_ov4_02218E64 -_021F55EC: .word Unk_ov4_02218D3C -_021F55F0: .word 0x00000563 - arm_func_end gpiProcessSearches - - .data - - - .global Unk_ov4_02218D28 -Unk_ov4_02218D28: ; 0x02218D28 - .incbin "incbin/overlay4_data.bin", 0x2EA8, 0x2EBC - 0x2EA8 - - .global Unk_ov4_02218D3C -Unk_ov4_02218D3C: ; 0x02218D3C - .incbin "incbin/overlay4_data.bin", 0x2EBC, 0x2ED0 - 0x2EBC - - .global Unk_ov4_02218D50 -Unk_ov4_02218D50: ; 0x02218D50 - .incbin "incbin/overlay4_data.bin", 0x2ED0, 0x2EE8 - 0x2ED0 - - .global GPSearchManagerHostname -GPSearchManagerHostname: ; 0x02218D68 - .incbin "incbin/overlay4_data.bin", 0x2EE8, 0x2F28 - 0x2EE8 - - .global Unk_ov4_02218DA8 -Unk_ov4_02218DA8: ; 0x02218DA8 - .incbin "incbin/overlay4_data.bin", 0x2F28, 0x2F38 - 0x2F28 - - .global Unk_ov4_02218DB8 -Unk_ov4_02218DB8: ; 0x02218DB8 - .incbin "incbin/overlay4_data.bin", 0x2F38, 0x2F60 - 0x2F38 - - .global Unk_ov4_02218DE0 -Unk_ov4_02218DE0: ; 0x02218DE0 - .incbin "incbin/overlay4_data.bin", 0x2F60, 0x2F94 - 0x2F60 - - .global Unk_ov4_02218E14 -Unk_ov4_02218E14: ; 0x02218E14 - .incbin "incbin/overlay4_data.bin", 0x2F94, 0x2FC4 - 0x2F94 - - .global Unk_ov4_02218E44 -Unk_ov4_02218E44: ; 0x02218E44 - .incbin "incbin/overlay4_data.bin", 0x2FC4, 0x2FE4 - 0x2FC4 - - .global Unk_ov4_02218E64 -Unk_ov4_02218E64: ; 0x02218E64 - .incbin "incbin/overlay4_data.bin", 0x2FE4, 0x2FF0 - 0x2FE4 - - .global Unk_ov4_02218E70 -Unk_ov4_02218E70: ; 0x02218E70 - .incbin "incbin/overlay4_data.bin", 0x2FF0, 0x3018 - 0x2FF0 - - .global Unk_ov4_02218E98 -Unk_ov4_02218E98: ; 0x02218E98 - .incbin "incbin/overlay4_data.bin", 0x3018, 0x302C - 0x3018 - - .global Unk_ov4_02218EAC -Unk_ov4_02218EAC: ; 0x02218EAC - .incbin "incbin/overlay4_data.bin", 0x302C, 0x3030 - 0x302C - - .global Unk_ov4_02218EB0 -Unk_ov4_02218EB0: ; 0x02218EB0 - .incbin "incbin/overlay4_data.bin", 0x3030, 0x305C - 0x3030 - - .global Unk_ov4_02218EDC -Unk_ov4_02218EDC: ; 0x02218EDC - .incbin "incbin/overlay4_data.bin", 0x305C, 0x3068 - 0x305C - - .global Unk_ov4_02218EE8 -Unk_ov4_02218EE8: ; 0x02218EE8 - .incbin "incbin/overlay4_data.bin", 0x3068, 0x3074 - 0x3068 - - .global Unk_ov4_02218EF4 -Unk_ov4_02218EF4: ; 0x02218EF4 - .incbin "incbin/overlay4_data.bin", 0x3074, 0x3080 - 0x3074 - - .global Unk_ov4_02218F00 -Unk_ov4_02218F00: ; 0x02218F00 - .incbin "incbin/overlay4_data.bin", 0x3080, 0x3090 - 0x3080 - - .global Unk_ov4_02218F10 -Unk_ov4_02218F10: ; 0x02218F10 - .incbin "incbin/overlay4_data.bin", 0x3090, 0x3098 - 0x3090 - - .global Unk_ov4_02218F18 -Unk_ov4_02218F18: ; 0x02218F18 - .incbin "incbin/overlay4_data.bin", 0x3098, 0x30A8 - 0x3098 - - .global Unk_ov4_02218F28 -Unk_ov4_02218F28: ; 0x02218F28 - .incbin "incbin/overlay4_data.bin", 0x30A8, 0x30B0 - 0x30A8 - - .global Unk_ov4_02218F30 -Unk_ov4_02218F30: ; 0x02218F30 - .incbin "incbin/overlay4_data.bin", 0x30B0, 0x30BC - 0x30B0 - - .global Unk_ov4_02218F3C -Unk_ov4_02218F3C: ; 0x02218F3C - .incbin "incbin/overlay4_data.bin", 0x30BC, 0x30C8 - 0x30BC - - .global Unk_ov4_02218F48 -Unk_ov4_02218F48: ; 0x02218F48 - .incbin "incbin/overlay4_data.bin", 0x30C8, 0x30D4 - 0x30C8 - - .global Unk_ov4_02218F54 -Unk_ov4_02218F54: ; 0x02218F54 - .incbin "incbin/overlay4_data.bin", 0x30D4, 0x30DC - 0x30D4 - - .global Unk_ov4_02218F5C -Unk_ov4_02218F5C: ; 0x02218F5C - .incbin "incbin/overlay4_data.bin", 0x30DC, 0x30E4 - 0x30DC - - .global Unk_ov4_02218F64 -Unk_ov4_02218F64: ; 0x02218F64 - .incbin "incbin/overlay4_data.bin", 0x30E4, 0x30EC - 0x30E4 - - .global Unk_ov4_02218F6C -Unk_ov4_02218F6C: ; 0x02218F6C - .incbin "incbin/overlay4_data.bin", 0x30EC, 0x30F4 - 0x30EC - - .global Unk_ov4_02218F74 -Unk_ov4_02218F74: ; 0x02218F74 - .incbin "incbin/overlay4_data.bin", 0x30F4, 0x3100 - 0x30F4 - - .global Unk_ov4_02218F80 -Unk_ov4_02218F80: ; 0x02218F80 - .incbin "incbin/overlay4_data.bin", 0x3100, 0x310C - 0x3100 - - .global Unk_ov4_02218F8C -Unk_ov4_02218F8C: ; 0x02218F8C - .incbin "incbin/overlay4_data.bin", 0x310C, 0x3114 - 0x310C - - .global Unk_ov4_02218F94 -Unk_ov4_02218F94: ; 0x02218F94 - .incbin "incbin/overlay4_data.bin", 0x3114, 0x3120 - 0x3114 - - .global Unk_ov4_02218FA0 -Unk_ov4_02218FA0: ; 0x02218FA0 - .incbin "incbin/overlay4_data.bin", 0x3120, 0x312C - 0x3120 - - .global Unk_ov4_02218FAC -Unk_ov4_02218FAC: ; 0x02218FAC - .incbin "incbin/overlay4_data.bin", 0x312C, 0x3134 - 0x312C - - .global Unk_ov4_02218FB4 -Unk_ov4_02218FB4: ; 0x02218FB4 - .incbin "incbin/overlay4_data.bin", 0x3134, 0x3140 - 0x3134 - - .global Unk_ov4_02218FC0 -Unk_ov4_02218FC0: ; 0x02218FC0 - .incbin "incbin/overlay4_data.bin", 0x3140, 0x3150 - 0x3140 - - .global Unk_ov4_02218FD0 -Unk_ov4_02218FD0: ; 0x02218FD0 - .incbin "incbin/overlay4_data.bin", 0x3150, 0x3160 - 0x3150 - - .global Unk_ov4_02218FE0 -Unk_ov4_02218FE0: ; 0x02218FE0 - .incbin "incbin/overlay4_data.bin", 0x3160, 0x3164 - 0x3160 - - .global Unk_ov4_02218FE4 -Unk_ov4_02218FE4: ; 0x02218FE4 - .incbin "incbin/overlay4_data.bin", 0x3164, 0x3170 - 0x3164 - - .global Unk_ov4_02218FF0 -Unk_ov4_02218FF0: ; 0x02218FF0 - .incbin "incbin/overlay4_data.bin", 0x3170, 0x3178 - 0x3170 - - .global Unk_ov4_02218FF8 -Unk_ov4_02218FF8: ; 0x02218FF8 - .incbin "incbin/overlay4_data.bin", 0x3178, 0x31A4 - 0x3178 - - .global Unk_ov4_02219024 -Unk_ov4_02219024: ; 0x02219024 - .incbin "incbin/overlay4_data.bin", 0x31A4, 0x31AC - 0x31A4 - - .global Unk_ov4_0221902C -Unk_ov4_0221902C: ; 0x0221902C - .incbin "incbin/overlay4_data.bin", 0x31AC, 0x31B4 - 0x31AC - - .global Unk_ov4_02219034 -Unk_ov4_02219034: ; 0x02219034 - .incbin "incbin/overlay4_data.bin", 0x31B4, 0x31B8 - 0x31B4 - - .global Unk_ov4_02219038 -Unk_ov4_02219038: ; 0x02219038 - .incbin "incbin/overlay4_data.bin", 0x31B8, 0x31C0 - 0x31B8 - - .global Unk_ov4_02219040 -Unk_ov4_02219040: ; 0x02219040 - .incbin "incbin/overlay4_data.bin", 0x31C0, 0x31CC - 0x31C0 - - .global Unk_ov4_0221904C -Unk_ov4_0221904C: ; 0x0221904C - .incbin "incbin/overlay4_data.bin", 0x31CC, 0x31D8 - 0x31CC - - .global Unk_ov4_02219058 -Unk_ov4_02219058: ; 0x02219058 - .incbin "incbin/overlay4_data.bin", 0x31D8, 0x31E4 - 0x31D8 - - .global Unk_ov4_02219064 -Unk_ov4_02219064: ; 0x02219064 - .incbin "incbin/overlay4_data.bin", 0x31E4, 0x31EC - 0x31E4 - - .global Unk_ov4_0221906C -Unk_ov4_0221906C: ; 0x0221906C - .incbin "incbin/overlay4_data.bin", 0x31EC, 0x3214 - 0x31EC - - .global Unk_ov4_02219094 -Unk_ov4_02219094: ; 0x02219094 - .incbin "incbin/overlay4_data.bin", 0x3214, 0x3218 - 0x3214 - - .global Unk_ov4_02219098 -Unk_ov4_02219098: ; 0x02219098 - .incbin "incbin/overlay4_data.bin", 0x3218, 0x321C - 0x3218 - - .global Unk_ov4_0221909C -Unk_ov4_0221909C: ; 0x0221909C - .incbin "incbin/overlay4_data.bin", 0x321C, 0x3224 - 0x321C - - .global Unk_ov4_022190A4 -Unk_ov4_022190A4: ; 0x022190A4 - .incbin "incbin/overlay4_data.bin", 0x3224, 0x322C - 0x3224 - - .global Unk_ov4_022190AC -Unk_ov4_022190AC: ; 0x022190AC - .incbin "incbin/overlay4_data.bin", 0x322C, 0x3230 - 0x322C - - .global Unk_ov4_022190B0 -Unk_ov4_022190B0: ; 0x022190B0 - .incbin "incbin/overlay4_data.bin", 0x3230, 0x3238 - 0x3230 - - .global Unk_ov4_022190B8 -Unk_ov4_022190B8: ; 0x022190B8 - .incbin "incbin/overlay4_data.bin", 0x3238, 0x3244 - 0x3238 - - .global Unk_ov4_022190C4 -Unk_ov4_022190C4: ; 0x022190C4 - .incbin "incbin/overlay4_data.bin", 0x3244, 0x3248 - 0x3244 - - .global Unk_ov4_022190C8 -Unk_ov4_022190C8: ; 0x022190C8 - .incbin "incbin/overlay4_data.bin", 0x3248, 0x3250 - 0x3248 - - .global Unk_ov4_022190D0 -Unk_ov4_022190D0: ; 0x022190D0 - .incbin "incbin/overlay4_data.bin", 0x3250, 0x3254 - 0x3250 - - .global Unk_ov4_022190D4 -Unk_ov4_022190D4: ; 0x022190D4 - .incbin "incbin/overlay4_data.bin", 0x3254, 0x325C - 0x3254 - - .global Unk_ov4_022190DC -Unk_ov4_022190DC: ; 0x022190DC - .incbin "incbin/overlay4_data.bin", 0x325C, 0x3264 - 0x325C - - .global Unk_ov4_022190E4 -Unk_ov4_022190E4: ; 0x022190E4 - .incbin "incbin/overlay4_data.bin", 0x3264, 0x3268 - 0x3264 - - .global Unk_ov4_022190E8 -Unk_ov4_022190E8: ; 0x022190E8 - .incbin "incbin/overlay4_data.bin", 0x3268, 0x3270 - 0x3268 - - .global Unk_ov4_022190F0 -Unk_ov4_022190F0: ; 0x022190F0 - .incbin "incbin/overlay4_data.bin", 0x3270, 0x3278 - 0x3270 - - .global Unk_ov4_022190F8 -Unk_ov4_022190F8: ; 0x022190F8 - .incbin "incbin/overlay4_data.bin", 0x3278, 0x327C - 0x3278 - - .global Unk_ov4_022190FC -Unk_ov4_022190FC: ; 0x022190FC - .incbin "incbin/overlay4_data.bin", 0x327C, 0x3284 - 0x327C - - .global Unk_ov4_02219104 -Unk_ov4_02219104: ; 0x02219104 - .incbin "incbin/overlay4_data.bin", 0x3284, 0x32A4 - 0x3284 - - .global Unk_ov4_02219124 -Unk_ov4_02219124: ; 0x02219124 - .incbin "incbin/overlay4_data.bin", 0x32A4, 0x1F - diff --git a/subprojects/gamespy/libraries/gp/asm/gpitransfer.s b/subprojects/gamespy/libraries/gp/asm/gpitransfer.s deleted file mode 100644 index fefd9f6628..0000000000 --- a/subprojects/gamespy/libraries/gp/asm/gpitransfer.s +++ /dev/null @@ -1,111 +0,0 @@ - .include "macros/function.inc" - .include "include/gpitransfer.inc" - - - - .text - - - arm_func_start gpiSendTransferReply -gpiSendTransferReply: ; 0x021F55F4 - stmfd sp!, {r4, r5, r6, lr} - sub sp, sp, #0x20 - ldr ip, [sp, #0x30] - mov r5, r2 - mov r6, r0 - cmp ip, #0 - ldreq r0, _021F5690 ; =0x02219144 - mov lr, r1 - mov r4, r3 - streq r0, [sp, #0x30] - mov r0, r6 - mov r1, r5 - mov r3, lr - mov r2, #0xc9 - bl gpiPeerStartTransferMessage - cmp r0, #0 - addne sp, sp, #0x20 - ldmneia sp!, {r4, r5, r6, pc} - ldr r1, _021F5694 ; =0x02219148 - add r0, sp, #0 - mov r3, r4 - mov r2, #1 - bl sprintf - add r2, sp, #0 - mov r0, r6 - mov r1, r5 - bl gpiSendOrBufferString - cmp r0, #0 - addne sp, sp, #0x20 - ldmneia sp!, {r4, r5, r6, pc} - ldr r2, [sp, #0x30] - mov r0, r6 - mov r1, r5 - mvn r3, #0 - bl gpiPeerFinishTransferMessage - cmp r0, #0 - moveq r0, #0 - add sp, sp, #0x20 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_021F5690: .word Unk_ov4_02219144 -_021F5694: .word Unk_ov4_02219148 - arm_func_end gpiSendTransferReply - - arm_func_start gpiHandleTransferMessage -gpiHandleTransferMessage: ; 0x021F5698 - stmfd sp!, {r3, r4, r5, lr} - sub sp, sp, #0x50 - mov r4, r1 - mov r5, r0 - mov r0, r3 - ldr r1, _021F5714 ; =0x02219160 - add r2, sp, #0x10 - mov r3, #0x40 - bl gpiValueForKey - cmp r0, #0 - addeq sp, sp, #0x50 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, _021F5718 ; =0x02219168 - add ip, sp, #0xc - add r0, sp, #0x10 - add r2, sp, #4 - add r3, sp, #8 - str ip, [sp] - bl sscanf - cmp r0, #3 - addne sp, sp, #0x50 - ldmneia sp!, {r3, r4, r5, pc} - mov ip, #0 - add r1, sp, #4 - mov r0, r5 - mov r2, r4 - mov r3, #2 - str ip, [sp] - bl gpiSendTransferReply - add sp, sp, #0x50 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_021F5714: .word Unk_ov4_02219160 -_021F5718: .word Unk_ov4_02219168 - arm_func_end gpiHandleTransferMessage - - .data - - - .global Unk_ov4_02219144 -Unk_ov4_02219144: ; 0x02219144 - .incbin "incbin/overlay4_data.bin", 0x32C4, 0x32C8 - 0x32C4 - - .global Unk_ov4_02219148 -Unk_ov4_02219148: ; 0x02219148 - .incbin "incbin/overlay4_data.bin", 0x32C8, 0x32E0 - 0x32C8 - - .global Unk_ov4_02219160 -Unk_ov4_02219160: ; 0x02219160 - .incbin "incbin/overlay4_data.bin", 0x32E0, 0x32E8 - 0x32E0 - - .global Unk_ov4_02219168 -Unk_ov4_02219168: ; 0x02219168 - .incbin "incbin/overlay4_data.bin", 0x32E8, 0x9 - diff --git a/subprojects/gamespy/libraries/gp/asm/gpiunique.s b/subprojects/gamespy/libraries/gp/asm/gpiunique.s deleted file mode 100644 index dad2055f98..0000000000 --- a/subprojects/gamespy/libraries/gp/asm/gpiunique.s +++ /dev/null @@ -1,96 +0,0 @@ - .include "macros/function.inc" - .include "include/gpiunique.inc" - - - - .text - - - arm_func_start gpiProcessRegisterUniqueNick -gpiProcessRegisterUniqueNick: ; 0x021F571C - stmfd sp!, {r4, r5, r6, lr} - sub sp, sp, #0x10 - mov r4, r2 - mov r5, r1 - mov r1, r4 - mov r2, #1 - mov r6, r0 - bl gpiCheckForError - cmp r0, #0 - addne sp, sp, #0x10 - movne r0, #4 - ldmneia sp!, {r4, r5, r6, pc} - ldr r1, _021F5814 ; =0x02219174 - mov r0, r4 - mov r2, #4 - bl strncmp - cmp r0, #0 - beq _021F5790 - ldr r2, _021F5818 ; =0x0221917C - mov r0, r6 - mov r1, #1 - bl gpiSetError - mov r0, r6 - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #0x10 - mov r0, #3 - ldmia sp!, {r4, r5, r6, pc} -_021F5790: - ldr r1, [r5, #0xc] - ldr r0, [r5, #0x10] - str r1, [sp, #8] - str r0, [sp, #0xc] - cmp r1, #0 - beq _021F57FC - mov r0, #4 - bl DWCi_GsMalloc - movs r3, r0 - bne _021F57D0 - ldr r1, _021F581C ; =0x022191AC - mov r0, r6 - bl gpiSetErrorString - add sp, sp, #0x10 - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} -_021F57D0: - mov r2, #0 - str r2, [r3, #0] - str r5, [sp] - add r1, sp, #8 - str r2, [sp, #4] - mov r0, r6 - ldmia r1, {r1, r2} - bl gpiAddCallback - cmp r0, #0 - addne sp, sp, #0x10 - ldmneia sp!, {r4, r5, r6, pc} -_021F57FC: - mov r0, r6 - mov r1, r5 - bl gpiRemoveOperation - mov r0, #0 - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_021F5814: .word Unk_ov4_02219174 -_021F5818: .word Unk_ov4_0221917C -_021F581C: .word Unk_ov4_022191AC - arm_func_end gpiProcessRegisterUniqueNick - - .data - - - .global Unk_ov4_02219174 -Unk_ov4_02219174: ; 0x02219174 - .incbin "incbin/overlay4_data.bin", 0x32F4, 0x32FC - 0x32F4 - - .global Unk_ov4_0221917C -Unk_ov4_0221917C: ; 0x0221917C - .incbin "incbin/overlay4_data.bin", 0x32FC, 0x332C - 0x32FC - - .global Unk_ov4_022191AC -Unk_ov4_022191AC: ; 0x022191AC - .incbin "incbin/overlay4_data.bin", 0x332C, 0xF - diff --git a/subprojects/gamespy/libraries/gp/asm/gpiutility.s b/subprojects/gamespy/libraries/gp/asm/gpiutility.s deleted file mode 100644 index c2c9885982..0000000000 --- a/subprojects/gamespy/libraries/gp/asm/gpiutility.s +++ /dev/null @@ -1,498 +0,0 @@ - .include "macros/function.inc" - .include "include/gpiutility.inc" - - - - .text - - - arm_func_start strzcpy -strzcpy: ; 0x021F5820 - stmfd sp!, {r4, r5, r6, lr} - movs r6, r0 - mov r5, r1 - mov r4, r2 - bne _021F5848 - ldr r0, _021F5884 ; =0x022191E8 - ldr r1, _021F5888 ; =0x022191F8 - ldr r2, _021F588C ; =0x022191BC - mov r3, #0x2f - bl __msl_assertion_failed -_021F5848: - cmp r5, #0 - bne _021F5864 - ldr r0, _021F5890 ; =0x02219208 - ldr r1, _021F5888 ; =0x022191F8 - ldr r2, _021F588C ; =0x022191BC - mov r3, #0x30 - bl __msl_assertion_failed -_021F5864: - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl strncpy - add r0, r6, r4 - mov r1, #0 - strb r1, [r0, #-1] - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_021F5884: .word Unk_ov4_022191E8 -_021F5888: .word Unk_ov4_022191F8 -_021F588C: .word Unk_ov4_022191BC -_021F5890: .word Unk_ov4_02219208 - arm_func_end strzcpy - - arm_func_start gpiDebug -gpiDebug: ; 0x021F5894 - stmfd sp!, {r0, r1, r2, r3} - add sp, sp, #0x10 - bx lr - arm_func_end gpiDebug - - arm_func_start gpiCheckForError -gpiCheckForError: ; 0x021F58A0 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x10 - mov r6, r1 - mov r7, r0 - mov r5, r2 - ldr r1, _021F5968 ; =0x02219214 - mov r0, r6 - mov r2, #7 - ldr r4, [r7, #0] - bl strncmp - cmp r0, #0 - bne _021F595C - ldr r1, _021F596C ; =0x0221921C - add r2, sp, #0 - mov r0, r6 - mov r3, #0x10 - bl gpiValueForKey - cmp r0, #0 - beq _021F58F8 - add r0, sp, #0 - bl atoi - str r0, [r4, #0x418] -_021F58F8: - ldr r1, _021F5970 ; =0x02219224 - mov r0, r6 - mov r2, r4 - mov r3, #0x100 - bl gpiValueForKey - cmp r0, #0 - moveq r0, #0 - streqb r0, [r4] - cmp r5, #0 - beq _021F5950 - ldr r1, _021F5974 ; =0x02219230 - mov r0, r6 - bl strstr - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - cmp r0, #0 - movne r2, #1 - moveq r2, #0 - mov r0, r7 - mov r1, #4 - bl gpiCallErrorCallback -_021F5950: - add sp, sp, #0x10 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_021F595C: - mov r0, #0 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021F5968: .word Unk_ov4_02219214 -_021F596C: .word Unk_ov4_0221921C -_021F5970: .word Unk_ov4_02219224 -_021F5974: .word Unk_ov4_02219230 - arm_func_end gpiCheckForError - - arm_func_start gpiValueForKey -gpiValueForKey: ; 0x021F5978 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - movs r5, r0 - mov r8, r1 - mov r4, r2 - mov r7, r3 - bne _021F59A4 - ldr r0, _021F5A5C ; =0x02219238 - ldr r1, _021F5A60 ; =0x022191F8 - ldr r2, _021F5A64 ; =0x022191C4 - ldr r3, _021F5A68 ; =0x0000010D - bl __msl_assertion_failed -_021F59A4: - cmp r8, #0 - bne _021F59C0 - ldr r0, _021F5A6C ; =0x02219248 - ldr r1, _021F5A60 ; =0x022191F8 - ldr r2, _021F5A64 ; =0x022191C4 - ldr r3, _021F5A70 ; =0x0000010E - bl __msl_assertion_failed -_021F59C0: - cmp r4, #0 - bne _021F59DC - ldr r0, _021F5A74 ; =0x02219254 - ldr r1, _021F5A60 ; =0x022191F8 - ldr r2, _021F5A64 ; =0x022191C4 - ldr r3, _021F5A78 ; =0x0000010F - bl __msl_assertion_failed -_021F59DC: - cmp r7, #0 - bgt _021F59F8 - ldr r0, _021F5A7C ; =0x02219264 - ldr r1, _021F5A60 ; =0x022191F8 - ldr r2, _021F5A64 ; =0x022191C4 - mov r3, #0x110 - bl __msl_assertion_failed -_021F59F8: - ldrsb r6, [r8] - mov r0, r5 - mov r1, r8 - bl strstr - movs r5, r0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, r8 - bl strlen - add r1, r5, r0 - mov r3, #0 - sub r0, r7, #1 - b _021F5A34 -_021F5A2C: - strb r2, [r4, r3] - add r3, r3, #1 -_021F5A34: - cmp r3, r0 - bge _021F5A4C - ldrsb r2, [r1, r3] - cmp r2, #0 - cmpne r2, r6 - bne _021F5A2C -_021F5A4C: - mov r0, #0 - strb r0, [r4, r3] - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_021F5A5C: .word Unk_ov4_02219238 -_021F5A60: .word Unk_ov4_022191F8 -_021F5A64: .word Unk_ov4_022191C4 -_021F5A68: .word 0x0000010D -_021F5A6C: .word Unk_ov4_02219248 -_021F5A70: .word 0x0000010E -_021F5A74: .word Unk_ov4_02219254 -_021F5A78: .word 0x0000010F -_021F5A7C: .word Unk_ov4_02219264 - arm_func_end gpiValueForKey - - arm_func_start gpiCheckSocketConnect -gpiCheckSocketConnect: ; 0x021F5A80 - stmfd sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - mov ip, #0 - mov r4, r2 - mov r5, r0 - mov r0, r1 - add r2, sp, #4 - add r3, sp, #0 - mov r1, ip - str ip, [sp, #4] - str ip, [sp] - bl GSISocketSelect - mvn r1, #0 - cmp r0, r1 - bne _021F5AF4 - ldr r1, _021F5B64 ; =0x0221926C - mov r0, r5 - bl gpiDebug - ldr r2, _021F5B68 ; =0x02219280 - mov r0, r5 - mov r1, #5 - bl gpiSetError - mov r0, r5 - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - add sp, sp, #8 - mov r0, #3 - ldmia sp!, {r3, r4, r5, pc} -_021F5AF4: - cmp r0, #0 - ble _021F5B54 - ldr r0, [sp] - cmp r0, #0 - beq _021F5B28 - ldr r1, _021F5B6C ; =0x022192B8 - mov r0, r5 - bl gpiDebug - mov r0, #4 - str r0, [r4, #0] - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_021F5B28: - ldr r0, [sp, #4] - cmp r0, #0 - beq _021F5B54 - ldr r1, _021F5B70 ; =0x022192D0 - mov r0, r5 - bl gpiDebug - mov r0, #3 - str r0, [r4, #0] - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_021F5B54: - mov r0, #0 - str r0, [r4, #0] - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_021F5B64: .word Unk_ov4_0221926C -_021F5B68: .word Unk_ov4_02219280 -_021F5B6C: .word Unk_ov4_022192B8 -_021F5B70: .word Unk_ov4_022192D0 - arm_func_end gpiCheckSocketConnect - - arm_func_start gpiReadKeyAndValue -gpiReadKeyAndValue: ; 0x021F5B74 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - movs r7, r1 - mov r8, r0 - mov r6, r2 - mov r5, r3 - ldr r4, [sp, #0x18] - bne _021F5BA4 - ldr r0, _021F5D1C ; =0x022192E8 - ldr r1, _021F5D20 ; =0x022191F8 - ldr r2, _021F5D24 ; =0x022191D4 - ldr r3, _021F5D28 ; =0x00000199 - bl __msl_assertion_failed -_021F5BA4: - cmp r5, #0 - bne _021F5BC0 - ldr r0, _021F5D2C ; =0x02219248 - ldr r1, _021F5D20 ; =0x022191F8 - ldr r2, _021F5D24 ; =0x022191D4 - ldr r3, _021F5D30 ; =0x0000019A - bl __msl_assertion_failed -_021F5BC0: - cmp r4, #0 - bne _021F5BDC - ldr r0, _021F5D34 ; =0x02219254 - ldr r1, _021F5D20 ; =0x022191F8 - ldr r2, _021F5D24 ; =0x022191D4 - ldr r3, _021F5D38 ; =0x0000019B - bl __msl_assertion_failed -_021F5BDC: - ldr r1, [r6, #0] - ldrsb r0, [r7, r1] - add r3, r7, r1 - cmp r0, #0x5c - beq _021F5C18 - ldr r2, _021F5D3C ; =0x022192F8 - mov r0, r8 - mov r1, #1 - bl gpiSetError - mov r0, r8 - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_021F5C18: - ldrsb r1, [r3, #1] - add r7, r3, #2 - mov r2, #0 - cmp r1, #0x5c - beq _021F5CA4 - ldr r0, _021F5D40 ; =0x000001FF -_021F5C30: - cmp r1, #0 - bne _021F5C60 - ldr r2, _021F5D3C ; =0x022192F8 - mov r0, r8 - mov r1, #1 - bl gpiSetError - mov r0, r8 - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_021F5C60: - cmp r2, r0 - bne _021F5C90 - ldr r2, _021F5D3C ; =0x022192F8 - mov r0, r8 - mov r1, #1 - bl gpiSetError - mov r0, r8 - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_021F5C90: - strb r1, [r5], #1 - ldrsb r1, [r7], #1 - add r2, r2, #1 - cmp r1, #0x5c - bne _021F5C30 -_021F5CA4: - mov r1, #0 - strb r1, [r5] - ldr r0, _021F5D40 ; =0x000001FF - b _021F5CEC -_021F5CB4: - cmp r1, r0 - bne _021F5CE4 - ldr r2, _021F5D3C ; =0x022192F8 - mov r0, r8 - mov r1, #1 - bl gpiSetError - mov r0, r8 - mov r1, #3 - mov r2, #1 - bl gpiCallErrorCallback - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_021F5CE4: - strb r2, [r4], #1 - add r1, r1, #1 -_021F5CEC: - ldrsb r2, [r7], #1 - cmp r2, #0x5c - cmpne r2, #0 - bne _021F5CB4 - mov r0, #0 - strb r0, [r4] - sub r1, r7, r3 - ldr r2, [r6, #0] - sub r1, r1, #1 - add r1, r2, r1 - str r1, [r6, #0] - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_021F5D1C: .word Unk_ov4_022192E8 -_021F5D20: .word Unk_ov4_022191F8 -_021F5D24: .word Unk_ov4_022191D4 -_021F5D28: .word 0x00000199 -_021F5D2C: .word Unk_ov4_02219248 -_021F5D30: .word 0x0000019A -_021F5D34: .word Unk_ov4_02219254 -_021F5D38: .word 0x0000019B -_021F5D3C: .word Unk_ov4_022192F8 -_021F5D40: .word 0x000001FF - arm_func_end gpiReadKeyAndValue - - arm_func_start gpiSetError -gpiSetError: ; 0x021F5D44 - stmfd sp!, {r3, r4, r5, lr} - ldr r4, [r0, #0] - mov r5, r1 - mov r1, r2 - mov r0, r4 - mov r2, #0x100 - bl strzcpy - str r5, [r4, #0x418] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end gpiSetError - - arm_func_start gpiSetErrorString -gpiSetErrorString: ; 0x021F5D68 - ldr ip, _021F5D78 ; =strzcpy - ldr r0, [r0, #0] - mov r2, #0x100 - bx ip - ; .align 2, 0 -_021F5D78: .word strzcpy - arm_func_end gpiSetErrorString - - .data - - - .global Unk_ov4_022191BC -Unk_ov4_022191BC: ; 0x022191BC - .incbin "incbin/overlay4_data.bin", 0x333C, 0x3344 - 0x333C - - .global Unk_ov4_022191C4 -Unk_ov4_022191C4: ; 0x022191C4 - .incbin "incbin/overlay4_data.bin", 0x3344, 0x3354 - 0x3344 - - .global Unk_ov4_022191D4 -Unk_ov4_022191D4: ; 0x022191D4 - .incbin "incbin/overlay4_data.bin", 0x3354, 0x3368 - 0x3354 - - .global Unk_ov4_022191E8 -Unk_ov4_022191E8: ; 0x022191E8 - .incbin "incbin/overlay4_data.bin", 0x3368, 0x3378 - 0x3368 - - .global Unk_ov4_022191F8 -Unk_ov4_022191F8: ; 0x022191F8 - .incbin "incbin/overlay4_data.bin", 0x3378, 0x3388 - 0x3378 - - .global Unk_ov4_02219208 -Unk_ov4_02219208: ; 0x02219208 - .incbin "incbin/overlay4_data.bin", 0x3388, 0x3394 - 0x3388 - - .global Unk_ov4_02219214 -Unk_ov4_02219214: ; 0x02219214 - .incbin "incbin/overlay4_data.bin", 0x3394, 0x339C - 0x3394 - - .global Unk_ov4_0221921C -Unk_ov4_0221921C: ; 0x0221921C - .incbin "incbin/overlay4_data.bin", 0x339C, 0x33A4 - 0x339C - - .global Unk_ov4_02219224 -Unk_ov4_02219224: ; 0x02219224 - .incbin "incbin/overlay4_data.bin", 0x33A4, 0x33B0 - 0x33A4 - - .global Unk_ov4_02219230 -Unk_ov4_02219230: ; 0x02219230 - .incbin "incbin/overlay4_data.bin", 0x33B0, 0x33B8 - 0x33B0 - - .global Unk_ov4_02219238 -Unk_ov4_02219238: ; 0x02219238 - .incbin "incbin/overlay4_data.bin", 0x33B8, 0x33C8 - 0x33B8 - - .global Unk_ov4_02219248 -Unk_ov4_02219248: ; 0x02219248 - .incbin "incbin/overlay4_data.bin", 0x33C8, 0x33D4 - 0x33C8 - - .global Unk_ov4_02219254 -Unk_ov4_02219254: ; 0x02219254 - .incbin "incbin/overlay4_data.bin", 0x33D4, 0x33E4 - 0x33D4 - - .global Unk_ov4_02219264 -Unk_ov4_02219264: ; 0x02219264 - .incbin "incbin/overlay4_data.bin", 0x33E4, 0x33EC - 0x33E4 - - .global Unk_ov4_0221926C -Unk_ov4_0221926C: ; 0x0221926C - .incbin "incbin/overlay4_data.bin", 0x33EC, 0x3400 - 0x33EC - - .global Unk_ov4_02219280 -Unk_ov4_02219280: ; 0x02219280 - .incbin "incbin/overlay4_data.bin", 0x3400, 0x3438 - 0x3400 - - .global Unk_ov4_022192B8 -Unk_ov4_022192B8: ; 0x022192B8 - .incbin "incbin/overlay4_data.bin", 0x3438, 0x3450 - 0x3438 - - .global Unk_ov4_022192D0 -Unk_ov4_022192D0: ; 0x022192D0 - .incbin "incbin/overlay4_data.bin", 0x3450, 0x3468 - 0x3450 - - .global Unk_ov4_022192E8 -Unk_ov4_022192E8: ; 0x022192E8 - .incbin "incbin/overlay4_data.bin", 0x3468, 0x3478 - 0x3468 - - .global Unk_ov4_022192F8 -Unk_ov4_022192F8: ; 0x022192F8 - .incbin "incbin/overlay4_data.bin", 0x3478, 0xD - diff --git a/subprojects/gamespy/libraries/gp/asm/incbin/overlay4_data.bin b/subprojects/gamespy/libraries/gp/asm/incbin/overlay4_data.bin deleted file mode 100644 index 589ef237e2..0000000000 Binary files a/subprojects/gamespy/libraries/gp/asm/incbin/overlay4_data.bin and /dev/null differ diff --git a/subprojects/gamespy/libraries/gp/asm/include/gp.inc b/subprojects/gamespy/libraries/gp/asm/include/gp.inc deleted file mode 100644 index 3207f92be7..0000000000 --- a/subprojects/gamespy/libraries/gp/asm/include/gp.inc +++ /dev/null @@ -1,24 +0,0 @@ -.public __msl_assertion_failed -.public memset -.public strcmp -.public DWCi_GsFree -.public gpiInitialize -.public gpiDestroy -.public gpiReset -.public gpiProcess -.public gpiSendBuddyMessage -.public gpiAuthBuddyRequest -.public gpiDeleteBuddy -.public gpiAppendStringToBuffer -.public gpiAppendIntToBuffer -.public gpiConnect -.public gpiDisconnect -.public gpiSetInfos -.public gpiGetInfo -.public gpiGetProfile -.public gpiRemoveProfile -.public gpiFindBuddy -.public gpiCanFreeProfile -.public gpiProfileSearch -.public strzcpy -.public gpiSetErrorString diff --git a/subprojects/gamespy/libraries/gp/asm/include/gpi.inc b/subprojects/gamespy/libraries/gp/asm/include/gpi.inc deleted file mode 100644 index ffd75a8097..0000000000 --- a/subprojects/gamespy/libraries/gp/asm/include/gpi.inc +++ /dev/null @@ -1,40 +0,0 @@ -.public __msl_assertion_failed -.public memcpy -.public memmove -.public memset -.public srand -.public strncmp -.public strstr -.public atoi -.public DWCi_GsMalloc -.public DWCi_GsRealloc -.public DWCi_GsFree -.public TableFree -.public current_time -.public msleep -.public SocketStartUp -.public gpiDestroy -.public gpiResetProfile -.public gpiReset -.public gpiProcessConnectionManager -.public gpiProcessRecvBuddyMessage -.public gpiRecvToBuffer -.public gpiSendFromBuffer -.public gpiCallErrorCallback -.public gpiProcessCallbacks -.public gpiCheckConnect -.public gpiDisconnect -.public gpiAddLocalInfo -.public gpiFailedOpCallback -.public gpiRemoveOperation -.public gpiFindOperationByID -.public gpiOperationsAreBlocking -.public gpiProcessOperation -.public gpiProcessPeers -.public gpiInitProfiles -.public gpiProfileMap -.public gpiProcessSearches -.public gpiDebug -.public gpiCheckForError -.public gpiSetError -.public gpiSetErrorString diff --git a/subprojects/gamespy/libraries/gp/asm/include/gpibuddy.inc b/subprojects/gamespy/libraries/gp/asm/include/gpibuddy.inc deleted file mode 100644 index 6e9cf11f90..0000000000 --- a/subprojects/gamespy/libraries/gp/asm/include/gpibuddy.inc +++ /dev/null @@ -1,31 +0,0 @@ -.public __msl_assertion_failed -.public strlen -.public strcpy -.public strstr -.public atoi -.public DWCi_GsMalloc -.public DWCi_GsFree -.public goastrdup -.public time -.public gpiSendAuthBuddyRequest -.public gpiSendServerBuddyMessage -.public gpiSendBuddyMessage -.public gpiFixBuddyIndices -.public gpiAppendStringToBuffer -.public gpiAppendIntToBuffer -.public gpiCallErrorCallback -.public gpiAddCallback -.public gpiGetConnectedPeer -.public gpiAddPeer -.public gpiPeerGetSig -.public gpiPeerStartConnect -.public gpiPeerAddMessage -.public gpiProfileListAdd -.public gpiGetProfile -.public gpiRemoveProfile -.public gpiProfileMap -.public gpiCanFreeProfile -.public strzcpy -.public gpiValueForKey -.public gpiSetError -.public gpiSetErrorString diff --git a/subprojects/gamespy/libraries/gp/asm/include/gpibuffer.inc b/subprojects/gamespy/libraries/gp/asm/include/gpibuffer.inc deleted file mode 100644 index 794f3c46d7..0000000000 --- a/subprojects/gamespy/libraries/gp/asm/include/gpibuffer.inc +++ /dev/null @@ -1,23 +0,0 @@ -.public __msl_assertion_failed -.public memcpy -.public memmove -.public sprintf -.public strlen -.public strncmp -.public strchr -.public atoi -.public DWCi_GsRealloc -.public ArrayLength -.public recv -.public send -.public GOAGetLastError -.public gpiAppendCharToBuffer -.public gpiAppendStringToBufferLen -.public gpiAppendStringToBuffer -.public gpiSendData -.public gpiSendOrBufferStringLen -.public gpiCallErrorCallback -.public gpiDebug -.public gpiValueForKey -.public gpiSetError -.public gpiSetErrorString diff --git a/subprojects/gamespy/libraries/gp/asm/include/gpicallback.inc b/subprojects/gamespy/libraries/gp/asm/include/gpicallback.inc deleted file mode 100644 index accabb694f..0000000000 --- a/subprojects/gamespy/libraries/gp/asm/include/gpicallback.inc +++ /dev/null @@ -1,6 +0,0 @@ -.public __msl_assertion_failed -.public DWCi_GsMalloc -.public DWCi_GsFree -.public gpiAddCallback -.public gpiCallCallback -.public gpiSetErrorString diff --git a/subprojects/gamespy/libraries/gp/asm/include/gpiconnect.inc b/subprojects/gamespy/libraries/gp/asm/include/gpiconnect.inc deleted file mode 100644 index 46f0fde59a..0000000000 --- a/subprojects/gamespy/libraries/gp/asm/include/gpiconnect.inc +++ /dev/null @@ -1,54 +0,0 @@ -.public __msl_assertion_failed -.public memset -.public memcmp -.public sprintf -.public rand -.public strlen -.public strncmp -.public strstr -.public atoi -.public DWCi_GsMalloc -.public DWCi_GsFree -.public MD5Digest -.public _strlwr -.public SetSockBlocking -.public socket -.public closesocket -.public shutdown -.public bind -.public connect -.public listen -.public getsockname -.public GOAGetLastError -.public Util_RandSeed -.public Util_RandInt -.public B64Encode -.public gpiReset -.public gpiProcess -.public gpiAppendStringToBuffer -.public gpiAppendIntToBuffer -.public gpiSendFromBuffer -.public gpiCallErrorCallback -.public gpiAddCallback -.public randomString -.public gpiStartConnect -.public gpiSendLogin -.public gpiSendNewuser -.public gpiDisconnectCleanupProfile -.public gpiDisconnect -.public gpiFailedOpCallback -.public gpiAddOperation -.public gpiRemoveOperation -.public gpiDestroyPeer -.public gpiProfileListAdd -.public gpiRemoveProfileByID -.public gpiRemoveProfile -.public gpiFindProfileByUser -.public gpiProfileMap -.public strzcpy -.public gpiCheckForError -.public gpiValueForKey -.public gpiCheckSocketConnect -.public gpiSetError -.public gpiSetErrorString -.public SOC_GetHostByName diff --git a/subprojects/gamespy/libraries/gp/asm/include/gpiinfo.inc b/subprojects/gamespy/libraries/gp/asm/include/gpiinfo.inc deleted file mode 100644 index 3616ff7124..0000000000 --- a/subprojects/gamespy/libraries/gp/asm/include/gpiinfo.inc +++ /dev/null @@ -1,34 +0,0 @@ -.public __msl_assertion_failed -.public sprintf -.public strlen -.public strncmp -.public atof -.public atoi -.public _d_dtof -.public DWCi_GsMalloc -.public DWCi_GsFree -.public goastrdup -.public _strlwr -.public gpiProcess -.public gpiAppendStringToBuffer -.public gpiAppendIntToBuffer -.public gpiCallErrorCallback -.public gpiAddCallback -.public gpiIsValidDate -.public gpiIntToDate -.public gpiInfoCacheToArg -.public gpiSendLocalInfo -.public gpiSendUserInfo -.public gpiSetInfoi -.public gpiSendGetInfo -.public gpiSetInfoCache -.public gpiFreeInfoCache -.public gpiAddOperation -.public gpiRemoveOperation -.public gpiProfileListAdd -.public gpiGetProfile -.public strzcpy -.public gpiCheckForError -.public gpiValueForKey -.public gpiSetError -.public gpiSetErrorString diff --git a/subprojects/gamespy/libraries/gp/asm/include/gpioperation.inc b/subprojects/gamespy/libraries/gp/asm/include/gpioperation.inc deleted file mode 100644 index 6ddcb45a79..0000000000 --- a/subprojects/gamespy/libraries/gp/asm/include/gpioperation.inc +++ /dev/null @@ -1,14 +0,0 @@ -.public __msl_assertion_failed -.public memset -.public DWCi_GsMalloc -.public DWCi_GsFree -.public closesocket -.public shutdown -.public gpiAddCallback -.public gpiProcessConnect -.public gpiProcessGetInfo -.public gpiDestroyOperation -.public gpiProcessNewProfile -.public gpiProcessRegisterUniqueNick -.public gpiDebug -.public gpiSetErrorString diff --git a/subprojects/gamespy/libraries/gp/asm/include/gpipeer.inc b/subprojects/gamespy/libraries/gp/asm/include/gpipeer.inc deleted file mode 100644 index 7c0cda9b5e..0000000000 --- a/subprojects/gamespy/libraries/gp/asm/include/gpipeer.inc +++ /dev/null @@ -1,69 +0,0 @@ -.public __msl_assertion_failed -.public memset -.public sprintf -.public strlen -.public strcmp -.public strncmp -.public strstr -.public atoi -.public DWCi_GsMalloc -.public DWCi_GsFree -.public ArrayNew -.public ArrayFree -.public ArrayLength -.public ArrayNth -.public ArrayAppend -.public ArrayDeleteAt -.public MD5Digest -.public goastrdup -.public SetSockBlocking -.public SetReceiveBufferSize -.public SetSendBufferSize -.public GetReceiveBufferSize -.public GetSendBufferSize -.public CanReceiveOnSocket -.public socket -.public closesocket -.public shutdown -.public connect -.public accept -.public GOAGetLastError -.public time -.public gpiSendServerBuddyMessage -.public gpiSendBuddyMessage -.public gpiAppendCharToBuffer -.public gpiAppendStringToBufferLen -.public gpiAppendStringToBuffer -.public gpiAppendIntToBuffer -.public gpiSendOrBufferChar -.public gpiSendOrBufferStringLen -.public gpiSendOrBufferString -.public gpiRecvToBuffer -.public gpiSendFromBuffer -.public gpiReadMessageFromBuffer -.public gpiClipBufferToPosition -.public gpiCallErrorCallback -.public gpiAddCallback -.public gpiSendGetInfo -.public gpiAddOperation -.public gpiProcessPeerInitiatingConnection -.public gpiProcessPeerAcceptingConnection -.public gpiPeerSendMessages -.public gpiProcessPeerConnected -.public gpiProcessPeer -.public gpiDestroyPeer -.public gpiRemovePeer -.public gpiSetPeerSocketSizes -.public gpiFreeMessage -.public gpiAddPeer -.public gpiPeerGetSig -.public gpiPeerStartConnect -.public gpiGetProfile -.public gpiRemoveProfile -.public gpiCanFreeProfile -.public gpiHandleTransferMessage -.public gpiDebug -.public gpiValueForKey -.public gpiCheckSocketConnect -.public gpiSetError -.public gpiSetErrorString diff --git a/subprojects/gamespy/libraries/gp/asm/include/gpiprofile.inc b/subprojects/gamespy/libraries/gp/asm/include/gpiprofile.inc deleted file mode 100644 index 59d789b5d7..0000000000 --- a/subprojects/gamespy/libraries/gp/asm/include/gpiprofile.inc +++ /dev/null @@ -1,28 +0,0 @@ -.public __msl_assertion_failed -.public strcmp -.public strncmp -.public atoi -.public _s32_div_f -.public DWCi_GsMalloc -.public DWCi_GsFree -.public TableNew -.public TableEnter -.public TableRemove -.public TableLookup -.public TableMapSafe2 -.public gpiCallErrorCallback -.public gpiAddCallback -.public gpiFreeInfoCache -.public gpiRemoveOperation -.public gpiProfilesTableHash -.public gpiProfilesTableCompare -.public gpiProfilesTableFree -.public gpiGetProfile -.public gpiCheckProfileForUser -.public gpiProfileMapCallback -.public gpiProfileMap -.public gpiCheckForBuddy -.public gpiCheckForError -.public gpiValueForKey -.public gpiSetError -.public gpiSetErrorString diff --git a/subprojects/gamespy/libraries/gp/asm/include/gpisearch.inc b/subprojects/gamespy/libraries/gp/asm/include/gpisearch.inc deleted file mode 100644 index 3074f45389..0000000000 --- a/subprojects/gamespy/libraries/gp/asm/include/gpisearch.inc +++ /dev/null @@ -1,37 +0,0 @@ -.public __msl_assertion_failed -.public memset -.public strcpy -.public strcmp -.public strstr -.public atoi -.public DWCi_GsMalloc -.public DWCi_GsRealloc -.public DWCi_GsFree -.public msleep -.public _strlwr -.public SetSockBlocking -.public socket -.public connect -.public GOAGetLastError -.public gpiProcess -.public gpiAppendStringToBuffer -.public gpiAppendIntToBuffer -.public gpiRecvToBuffer -.public gpiSendFromBuffer -.public gpiCallErrorCallback -.public gpiAddCallback -.public gpiAddOperation -.public gpiRemoveOperation -.public gpiStartProfileSearch -.public gpiInitSearchData -.public gpiStartSearch -.public gpiProfileSearch -.public gpiProcessSearch -.public strzcpy -.public gpiCheckForError -.public gpiValueForKey -.public gpiCheckSocketConnect -.public gpiReadKeyAndValue -.public gpiSetError -.public gpiSetErrorString -.public SOC_GetHostByName diff --git a/subprojects/gamespy/libraries/gp/asm/include/gpitransfer.inc b/subprojects/gamespy/libraries/gp/asm/include/gpitransfer.inc deleted file mode 100644 index 120168f08f..0000000000 --- a/subprojects/gamespy/libraries/gp/asm/include/gpitransfer.inc +++ /dev/null @@ -1,7 +0,0 @@ -.public sprintf -.public sscanf -.public gpiSendOrBufferString -.public gpiPeerStartTransferMessage -.public gpiPeerFinishTransferMessage -.public gpiSendTransferReply -.public gpiValueForKey diff --git a/subprojects/gamespy/libraries/gp/asm/include/gpiunique.inc b/subprojects/gamespy/libraries/gp/asm/include/gpiunique.inc deleted file mode 100644 index cd59e6d2a9..0000000000 --- a/subprojects/gamespy/libraries/gp/asm/include/gpiunique.inc +++ /dev/null @@ -1,8 +0,0 @@ -.public strncmp -.public DWCi_GsMalloc -.public gpiCallErrorCallback -.public gpiAddCallback -.public gpiRemoveOperation -.public gpiCheckForError -.public gpiSetError -.public gpiSetErrorString diff --git a/subprojects/gamespy/libraries/gp/asm/include/gpiutility.inc b/subprojects/gamespy/libraries/gp/asm/include/gpiutility.inc deleted file mode 100644 index e38c25d67c..0000000000 --- a/subprojects/gamespy/libraries/gp/asm/include/gpiutility.inc +++ /dev/null @@ -1,12 +0,0 @@ -.public __msl_assertion_failed -.public strlen -.public strncpy -.public strncmp -.public strstr -.public atoi -.public GSISocketSelect -.public gpiCallErrorCallback -.public strzcpy -.public gpiDebug -.public gpiValueForKey -.public gpiSetError diff --git a/subprojects/gamespy/libraries/gp/asm/macros/function.inc b/subprojects/gamespy/libraries/gp/asm/macros/function.inc deleted file mode 100644 index f71cc4ccae..0000000000 --- a/subprojects/gamespy/libraries/gp/asm/macros/function.inc +++ /dev/null @@ -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 \ No newline at end of file diff --git a/subprojects/gamespy/libraries/gp/meson.build b/subprojects/gamespy/libraries/gp/meson.build deleted file mode 100644 index 06c901fd19..0000000000 --- a/subprojects/gamespy/libraries/gp/meson.build +++ /dev/null @@ -1,25 +0,0 @@ -libdwcgsgp_srcs = files( - 'asm/gp.s', - 'asm/gpi.s', - 'asm/gpibuddy.s', - 'asm/gpibuffer.s', - 'asm/gpicallback.s', - 'asm/gpiconnect.s', - 'asm/gpiinfo.s', - 'asm/gpioperation.s', - 'asm/gpipeer.s', - 'asm/gpiprofile.s', - 'asm/gpisearch.s', - 'asm/gpitransfer.s', - 'asm/gpiunique.s', - 'asm/gpiutility.s' -) - -libdwcgsgp = static_library('dwcgsgp', - sources: libdwcgsgp_srcs, - nasm_args: asm_args, - include_directories: public_includes, - pic: false -) - -gamespy_libs += libdwcgsgp diff --git a/subprojects/gamespy/libraries/gstats/asm/gbucket.s b/subprojects/gamespy/libraries/gstats/asm/gbucket.s deleted file mode 100644 index 17c854b740..0000000000 --- a/subprojects/gamespy/libraries/gstats/asm/gbucket.s +++ /dev/null @@ -1,504 +0,0 @@ - .include "macros/function.inc" - .include "include/gbucket.inc" - - - - .text - - - arm_func_start BucketNew -BucketNew: ; 0x021F5D7C - stmfd sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x14 - movs r7, r0 - ldreq r0, _021F5E08 ; =0x0221AF70 - mov r6, r1 - ldreq r7, [r0, #4] - mov r5, r2 - mov r4, r3 - cmp r7, #0 - bne _021F5DB8 - ldr r0, _021F5E0C ; =0x0221932C - ldr r1, _021F5E10 ; =0x02219330 - ldr r2, _021F5E14 ; =0x02219310 - mov r3, #0x78 - bl __msl_assertion_failed -_021F5DB8: - mov r0, r6 - bl goastrdup - mov r3, #0 - mov r2, #1 - str r0, [sp] - add r0, sp, #0 - mov r1, r4 - str r5, [sp, #4] - str r3, [sp, #0xc] - str r2, [sp, #8] - bl DoSet - ldr r0, [r7, #0] - add r1, sp, #0 - bl TableEnter - mov r0, r7 - mov r1, r6 - bl DoFind - bl DoGet - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, pc} - ; .align 2, 0 -_021F5E08: .word Unk_ov4_0221AF70 -_021F5E0C: .word Unk_ov4_0221932C -_021F5E10: .word Unk_ov4_02219330 -_021F5E14: .word Unk_ov4_02219310 - arm_func_end BucketNew - - arm_func_start BucketSet -BucketSet: ; 0x021F5E18 - stmfd sp!, {r4, lr} - mov r4, r2 - bl DoFind - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - mov r2, #0 - mov r1, r4 - str r2, [r0, #8] - bl DoSet - ldmia sp!, {r4, pc} - arm_func_end BucketSet - - arm_func_start BucketAdd -BucketAdd: ; 0x021F5E44 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - bl DoFind - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, [r4, #4] - cmp r1, #0 - bne _021F5E94 - bl DoGet - ldr r1, [r5, #0] - ldr r0, [r0, #0] - add r0, r1, r0 - bl bint - mov r1, r0 - mov r0, r4 - bl DoSet - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_021F5E94: - cmp r1, #1 - bne _021F5EC4 - bl DoGet - mov r3, r0 - ldmia r5, {r0, r1} - ldmia r3, {r2, r3} - bl _d_add - bl bfloat - mov r1, r0 - mov r0, r4 - bl DoSet - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_021F5EC4: - mov r0, r7 - mov r1, r6 - mov r2, r5 - bl BucketConcat - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end BucketAdd - - arm_func_start BucketSub -BucketSub: ; 0x021F5ED8 - stmfd sp!, {r3, r4, r5, lr} - mov r5, r2 - bl DoFind - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, [r4, #4] - cmp r1, #0 - bne _021F5F20 - bl DoGet - ldr r1, [r0, #0] - ldr r0, [r5, #0] - sub r0, r1, r0 - bl bint - mov r1, r0 - mov r0, r4 - bl DoSet - ldmia sp!, {r3, r4, r5, pc} -_021F5F20: - cmp r1, #1 - bne _021F5F54 - bl DoGet - ldr ip, [r0] - ldr r1, [r0, #4] - mov r0, ip - ldmia r5, {r2, r3} - bl _dsub - bl bfloat - mov r1, r0 - mov r0, r4 - bl DoSet - ldmia sp!, {r3, r4, r5, pc} -_021F5F54: - bl DoGet - ldmia sp!, {r3, r4, r5, pc} - arm_func_end BucketSub - - arm_func_start BucketMult -BucketMult: ; 0x021F5F5C - stmfd sp!, {r3, r4, r5, lr} - mov r5, r2 - bl DoFind - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, [r4, #4] - cmp r1, #0 - bne _021F5FA4 - bl DoGet - ldr r1, [r5, #0] - ldr r0, [r0, #0] - mul r0, r1, r0 - bl bint - mov r1, r0 - mov r0, r4 - bl DoSet - ldmia sp!, {r3, r4, r5, pc} -_021F5FA4: - cmp r1, #1 - bne _021F5FD4 - bl DoGet - mov r3, r0 - ldmia r5, {r0, r1} - ldmia r3, {r2, r3} - bl _d_mul - bl bfloat - mov r1, r0 - mov r0, r4 - bl DoSet - ldmia sp!, {r3, r4, r5, pc} -_021F5FD4: - bl DoGet - ldmia sp!, {r3, r4, r5, pc} - arm_func_end BucketMult - - arm_func_start BucketDiv -BucketDiv: ; 0x021F5FDC - stmfd sp!, {r3, r4, r5, lr} - mov r5, r2 - bl DoFind - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, [r4, #4] - cmp r1, #0 - bne _021F6024 - bl DoGet - ldr r0, [r0, #0] - ldr r1, [r5, #0] - bl _s32_div_f - bl bint - mov r1, r0 - mov r0, r4 - bl DoSet - ldmia sp!, {r3, r4, r5, pc} -_021F6024: - cmp r1, #1 - bne _021F6058 - bl DoGet - ldr ip, [r0] - ldr r1, [r0, #4] - mov r0, ip - ldmia r5, {r2, r3} - bl _d_div - bl bfloat - mov r1, r0 - mov r0, r4 - bl DoSet - ldmia sp!, {r3, r4, r5, pc} -_021F6058: - bl DoGet - ldmia sp!, {r3, r4, r5, pc} - arm_func_end BucketDiv - - arm_func_start BucketConcat -BucketConcat: ; 0x021F6060 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r2 - bl DoFind - movs r6, r0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r6, #4] - cmp r0, #2 - beq _021F6098 - ldr r0, _021F60F8 ; =0x0221933C - ldr r1, _021F60FC ; =0x02219330 - ldr r2, _021F6100 ; =0x0221931C - mov r3, #0xd1 - bl __msl_assertion_failed -_021F6098: - mov r0, r6 - bl DoGet - mov r5, r0 - bl strlen - mov r4, r0 - mov r0, r7 - bl strlen - add r0, r4, r0 - add r0, r0, #1 - bl DWCi_GsMalloc - mov r4, r0 - mov r1, r5 - bl strcpy - mov r0, r4 - mov r1, r7 - bl strcat - mov r0, r6 - mov r1, r4 - bl DoSet - mov r0, r4 - bl DWCi_GsFree - mov r0, r6 - bl DoGet - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021F60F8: .word Unk_ov4_0221933C -_021F60FC: .word Unk_ov4_02219330 -_021F6100: .word Unk_ov4_0221931C - arm_func_end BucketConcat - - arm_func_start BucketAvg -BucketAvg: ; 0x021F6104 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r2 - bl DoFind - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, [r4, #4] - cmp r1, #0 - bne _021F615C - bl DoGet - ldr r1, [r4, #8] - add r1, r1, #1 - str r1, [r4, #8] - ldr r2, [r7, #0] - ldr r0, [r0, #0] - mla r0, r1, r0, r2 - bl _s32_div_f - bl bint - mov r1, r0 - mov r0, r4 - bl DoSet - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_021F615C: - cmp r1, #1 - bne _021F61D0 - bl DoGet - ldr r1, [r4, #8] - mov r5, r0 - add r6, r1, #1 - mov r0, r6 - str r6, [r4, #8] - bl _d_itod - ldmia r5, {r2, r3} - bl _d_mul - mov r2, r0 - mov r3, r1 - ldmia r7, {r0, r1} - bl _d_add - mov r5, r0 - mov r0, r6 - mov r6, r1 - bl _d_itod - mov r2, r0 - mov r3, r1 - mov r0, r5 - mov r1, r6 - bl _d_div - bl bfloat - mov r1, r0 - mov r0, r4 - bl DoSet - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_021F61D0: - bl DoGet - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end BucketAvg - - arm_func_start bint -bint: ; 0x021F61D8 - ldr r1, _021F61E8 ; =0x0221AF70 - str r0, [r1, #0] - ldr r0, _021F61EC ; =0x0221AF70 - bx lr - ; .align 2, 0 -_021F61E8: .word Unk_ov4_0221AF70 -_021F61EC: .word Unk_ov4_0221AF70 - arm_func_end bint - - arm_func_start bfloat -bfloat: ; 0x021F61F0 - ldr r2, _021F6204 ; =0x0221AF70 - str r0, [r2, #8] - ldr r0, _021F6208 ; =0x0221AF78 - str r1, [r2, #0xc] - bx lr - ; .align 2, 0 -_021F6204: .word Unk_ov4_0221AF70 -_021F6208: .word Unk_ov4_0221AF78 - arm_func_end bfloat - - arm_func_start stripchars -stripchars: ; 0x021F620C - ldrsb r3, [r0] - mov r2, r0 - cmp r3, #0 - beq _021F6234 - mov r1, #0x2f -_021F6220: - cmp r3, #0x5c - streqb r1, [r0] - ldrsb r3, [r0, #1]! - cmp r3, #0 - bne _021F6220 -_021F6234: - mov r0, r2 - bx lr - arm_func_end stripchars - - arm_func_start DoSet -DoSet: ; 0x021F623C - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r0, [r5, #4] - mov r4, r1 - cmp r0, #0 - ldreq r0, [r4] - streq r0, [r5, #0xc] - beq _021F62AC - cmp r0, #1 - bne _021F6278 - ldr r1, [r4, #0] - ldr r0, [r4, #4] - str r1, [r5, #0xc] - str r0, [r5, #0x10] - b _021F62AC -_021F6278: - cmp r0, #2 - bne _021F62AC - ldr r0, [r5, #0xc] - cmp r0, #0 - beq _021F6290 - bl DWCi_GsFree -_021F6290: - cmp r4, #0 - moveq r0, #0 - beq _021F62A8 - mov r0, r4 - bl goastrdup - bl stripchars -_021F62A8: - str r0, [r5, #0xc] -_021F62AC: - mov r0, r5 - bl DoGet - ldmia sp!, {r3, r4, r5, pc} - arm_func_end DoSet - - arm_func_start DoGet -DoGet: ; 0x021F62B8 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r1, [r0, #4] - cmp r1, #2 - ldreq r0, [r0, #0xc] - addne r0, r0, #0xc - bx lr - arm_func_end DoGet - - arm_func_start DoFind -DoFind: ; 0x021F62D8 - stmfd sp!, {r4, r5, lr} - sub sp, sp, #0x14 - movs r5, r0 - ldreq r0, _021F6324 ; =0x0221AF70 - mov r4, r1 - ldreq r5, [r0, #4] - cmp r5, #0 - bne _021F630C - ldr r0, _021F6328 ; =0x0221932C - ldr r1, _021F632C ; =0x02219330 - ldr r2, _021F6330 ; =0x02219308 - ldr r3, _021F6334 ; =0x00000153 - bl __msl_assertion_failed -_021F630C: - str r4, [sp] - ldr r0, [r5, #0] - add r1, sp, #0 - bl TableLookup - add sp, sp, #0x14 - ldmia sp!, {r4, r5, pc} - ; .align 2, 0 -_021F6324: .word Unk_ov4_0221AF70 -_021F6328: .word Unk_ov4_0221932C -_021F632C: .word Unk_ov4_02219330 -_021F6330: .word Unk_ov4_02219308 -_021F6334: .word 0x00000153 - arm_func_end DoFind - - .data - - - .global Unk_ov4_02219308 -Unk_ov4_02219308: ; 0x02219308 - .ascii "DoFind" - .space 0x2 - - .global Unk_ov4_02219310 -Unk_ov4_02219310: ; 0x02219310 - .asciz "BucketNew" - .space 0x2 - - .global Unk_ov4_0221931C -Unk_ov4_0221931C: ; 0x0221931C - .ascii "BucketConcat" - .space 0x4 - - .global Unk_ov4_0221932C -Unk_ov4_0221932C: ; 0x0221932C - .asciz "set" - - .global Unk_ov4_02219330 -Unk_ov4_02219330: ; 0x02219330 - .asciz "gbucket.c" - .space 0x2 - - .global Unk_ov4_0221933C -Unk_ov4_0221933C: ; 0x0221933C - .ascii "pbucket->type == bt_string" - .space 0x2 - - - - .bss - - - .global Unk_ov4_0221AF70 -Unk_ov4_0221AF70: ; 0x0221AF70 - .space 0x4 - - .global g_buckets -g_buckets: ; 0x0221AF74 - .space 0x4 - - .global Unk_ov4_0221AF78 -Unk_ov4_0221AF78: ; 0x0221AF78 - .space 0x8 - diff --git a/subprojects/gamespy/libraries/gstats/asm/gstats.s b/subprojects/gamespy/libraries/gstats/asm/gstats.s deleted file mode 100644 index e8d3c39b3f..0000000000 --- a/subprojects/gamespy/libraries/gstats/asm/gstats.s +++ /dev/null @@ -1,1328 +0,0 @@ - .include "macros/function.inc" - .include "include/gstats.inc" - - - - .text - - - arm_func_start CloseStatsConnection -CloseStatsConnection: ; 0x021F6338 - stmfd sp!, {r3, lr} - ldr r0, _021F63A0 ; =0x02219358 - mvn r1, #0 - ldr r0, [r0, #0] - cmp r0, r1 - beq _021F6364 - mov r1, #2 - bl shutdown - ldr r0, _021F63A0 ; =0x02219358 - ldr r0, [r0, #0] - bl closesocket -_021F6364: - ldr r0, _021F63A0 ; =0x02219358 - mvn r1, #0 - str r1, [r0, #0] - bl ClosePendingCallbacks - ldr r0, _021F63A4 ; =0x0221AF80 - ldr r0, [r0, #0xc] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl DWCi_GsFree - ldr r0, _021F63A4 ; =0x0221AF80 - mov r1, #0 - str r1, [r0, #0xc] - str r1, [r0, #0x2c] - str r1, [r0, #0] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_021F63A0: .word sock -_021F63A4: .word rcvlen - arm_func_end CloseStatsConnection - - arm_func_start IsStatsConnected -IsStatsConnected: ; 0x021F63A8 - ldr r1, _021F63C4 ; =0x02219358 - mvn r0, #0 - ldr r1, [r1, #0] - cmp r1, r0 - movne r0, #1 - moveq r0, #0 - bx lr - ; .align 2, 0 -_021F63C4: .word sock - arm_func_end IsStatsConnected - - arm_func_start PersistThink -PersistThink: ; 0x021F63C8 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - ldr r0, _021F6510 ; =0x02219358 - mvn r1, #0 - ldr r0, [r0, #0] - cmp r0, r1 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldr r1, _021F6514 ; =0x0221AF80 - ldr r1, [r1, #0x10] - cmp r1, #5 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - bl SocketReadable - cmp r0, #0 - beq _021F64F4 - mov r7, #0 - ldr sl, _021F6514 ; =0x0221AF80 - ldr sb, _021F6510 ; =0x02219358 - mov r8, #0x100 - mov r6, r7 - mov r4, r7 -_021F641C: - ldr r1, [sl, #0x2c] - ldr r0, [sl] - sub r0, r1, r0 - cmp r0, #0x80 - bge _021F6460 - cmp r1, #0x100 - strlt r8, [sl, #0x2c] - movge r0, r1, lsl #1 - strge r0, [sl, #0x2c] - ldr r1, [sl, #0x2c] - ldr r0, [sl, #0xc] - add r1, r1, #1 - bl DWCi_GsRealloc - str r0, [sl, #0xc] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_021F6460: - ldr r5, [sl] - ldr r1, [sl, #0xc] - ldr r2, [sl, #0x2c] - ldr r0, [sb] - mov r3, r7 - add r1, r1, r5 - sub r2, r2, r5 - bl recv - cmp r0, #0 - bgt _021F6494 - bl CloseStatsConnection - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_021F6494: - ldr r1, [sl] - add r1, r1, r0 - str r1, [sl] - ldr r0, [sl, #0xc] - strb r6, [r0, r1] - ldr r0, [sl, #0xc] - ldr r1, [sl] - bl ProcessInBuffer - ldr r1, [sl] - mov r5, r0 - cmp r5, r1 - streq r4, [sl] - beq _021F64E4 - ldr r0, [sl, #0xc] - sub r2, r1, r5 - add r1, r0, r5 - bl memmove - ldr r0, [sl] - sub r0, r0, r5 - str r0, [sl] -_021F64E4: - ldr r0, [sb] - bl SocketReadable - cmp r0, #0 - bne _021F641C -_021F64F4: - ldr r1, _021F6510 ; =0x02219358 - mvn r0, #0 - ldr r1, [r1, #0] - cmp r1, r0 - moveq r0, #0 - movne r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ; .align 2, 0 -_021F6510: .word sock -_021F6514: .word rcvlen - arm_func_end PersistThink - - arm_func_start xcode_buf -xcode_buf: ; 0x021F6518 - stmfd sp!, {r4, lr} - ldr r2, _021F655C ; =0x02219358 - cmp r1, #0 - ldr r4, [r2, #8] - mov lr, #0 - ldmleia sp!, {r4, pc} -_021F6530: - ldrsb ip, [r0, lr] - ldrsb r3, [r4] - eor r3, ip, r3 - strb r3, [r0, lr] - ldrsb r3, [r4, #1]! - add lr, lr, #1 - cmp r3, #0 - ldreq r4, [r2, #8] - cmp lr, r1 - blt _021F6530 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_021F655C: .word sock - arm_func_end xcode_buf - - arm_func_start value_for_key -value_for_key: ; 0x021F6560 - stmfd sp!, {r4, lr} - sub sp, sp, #0x100 - ldr lr, _021F6624 ; =0x02215B27 - add ip, sp, #0 - mov r4, r0 - mov r3, #0x80 -_021F6578: - ldrb r2, [lr] - ldrb r0, [lr, #1] - add lr, lr, #2 - strb r2, [ip] - strb r0, [ip, #1] - add ip, ip, #2 - subs r3, r3, #1 - bne _021F6578 - ldr r2, _021F6628 ; =0x0221AF80 - add r0, sp, #0 - ldr r3, [r2, #0x24] - eor r3, r3, #1 - str r3, [r2, #0x24] - bl strcat - ldr r1, _021F662C ; =0x022193C8 - add r0, sp, #0 - bl strcat - add r1, sp, #0 - mov r0, r4 - bl strstr - movs r4, r0 - addeq sp, sp, #0x100 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - add r0, sp, #0 - bl strlen - ldr r1, _021F6628 ; =0x0221AF80 - ldr r2, _021F6630 ; =0x0221AFB0 - ldr r1, [r1, #0x24] - add r3, r4, r0 - add r0, r2, r1, lsl #8 - mov r2, r0 - b _021F6604 -_021F65FC: - ldrsb r1, [r3], #1 - strb r1, [r2], #1 -_021F6604: - ldrsb r1, [r3] - cmp r1, #0 - cmpne r1, #0x5c - bne _021F65FC - mov r1, #0 - strb r1, [r2] - add sp, sp, #0x100 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_021F6624: .word Unk_ov4_02215B27 -_021F6628: .word rcvlen -_021F662C: .word Unk_ov4_022193C8 -_021F6630: .word Unk_ov4_0221AFB0 - arm_func_end value_for_key - - arm_func_start value_for_key_safe -value_for_key_safe: ; 0x021F6634 - stmfd sp!, {r3, lr} - bl value_for_key - cmp r0, #0 - ldreq r0, _021F6648 ; =0x022193C4 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_021F6648: .word Unk_ov4_022193C4 - arm_func_end value_for_key_safe - - arm_func_start SocketReadable -SocketReadable: ; 0x021F664C - ldr ip, _021F6654 ; =CanReceiveOnSocket - bx ip - ; .align 2, 0 -_021F6654: .word CanReceiveOnSocket - arm_func_end SocketReadable - - arm_func_start FindFinal -FindFinal: ; 0x021F6658 - sub r3, r1, #6 - mov r2, r0 - cmp r3, #0 - ble _021F66B8 -_021F6668: - ldrsb r1, [r2] - cmp r1, #0x5c - ldreqsb r1, [r2, #1] - cmpeq r1, #0x66 - ldreqsb r1, [r2, #2] - cmpeq r1, #0x69 - ldreqsb r1, [r2, #3] - cmpeq r1, #0x6e - ldreqsb r1, [r2, #4] - cmpeq r1, #0x61 - ldreqsb r1, [r2, #5] - cmpeq r1, #0x6c - ldreqsb r1, [r2, #6] - cmpeq r1, #0x5c - moveq r0, r2 - bxeq lr - add r2, r2, #1 - sub r1, r2, r0 - cmp r1, r3 - blt _021F6668 -_021F66B8: - mov r0, #0 - bx lr - arm_func_end FindFinal - - arm_func_start FindRequest -FindRequest: ; 0x021F66C0 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - ldr r3, _021F6740 ; =0x0221AF80 - mov r7, r0 - ldr r0, [r3, #4] - mov r6, r1 - cmp r0, #0 - mov r5, r2 - mvneq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r4, #0 - bl ArrayLength - cmp r0, #0 - ble _021F6738 - ldr r8, _021F6740 ; =0x0221AF80 -_021F66F8: - ldr r0, [r8, #4] - mov r1, r4 - bl ArrayNth - ldr r1, [r0, #0] - cmp r1, r7 - ldreq r1, [r0, #4] - cmpeq r1, r6 - ldreq r0, [r0, #8] - cmpeq r0, r5 - moveq r0, r4 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldr r0, [r8, #4] - add r4, r4, #1 - bl ArrayLength - cmp r4, r0 - blt _021F66F8 -_021F6738: - mvn r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_021F6740: .word rcvlen - arm_func_end FindRequest - - arm_func_start ProcessPlayerAuth -ProcessPlayerAuth: ; 0x021F6744 - stmfd sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - ldr r1, _021F67E4 ; =0x022193CC - mov r6, r0 - bl value_for_key_safe - bl atoi - mov r5, r0 - ldr r1, _021F67E8 ; =0x022193D4 - mov r0, r6 - bl value_for_key_safe - bl atoi - mov r4, r0 - ldr r1, _021F67EC ; =0x022193D8 - mov r0, r6 - bl value_for_key_safe - mov r6, r0 - mov r0, #0 - mov r1, r4 - mov r2, r0 - bl FindRequest - mov r4, r0 - mvn r0, #0 - cmp r4, r0 - addeq sp, sp, #4 - ldmeqia sp!, {r3, r4, r5, r6, pc} - ldr r0, _021F67F0 ; =0x0221AF80 - mov r1, r4 - ldr r0, [r0, #4] - bl ArrayNth - cmp r5, #0 - movgt r1, #1 - str r5, [r0, #8] - mov r2, #0 - movle r1, #0 - mov r0, r4 - mov r3, r6 - str r2, [sp] - bl CallReqCallback - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - ; .align 2, 0 -_021F67E4: .word Unk_ov4_022193CC -_021F67E8: .word Unk_ov4_022193D4 -_021F67EC: .word Unk_ov4_022193D8 -_021F67F0: .word rcvlen - arm_func_end ProcessPlayerAuth - - arm_func_start ProcessGetPid -ProcessGetPid: ; 0x021F67F4 - stmfd sp!, {r3, r4, r5, lr} - ldr r1, _021F6874 ; =0x022193E0 - mov r5, r0 - bl value_for_key_safe - bl atoi - mov r4, r0 - ldr r1, _021F6878 ; =0x022193D4 - mov r0, r5 - bl value_for_key_safe - bl atoi - mov r1, r0 - mov r0, #3 - mov r2, #0 - bl FindRequest - mov r5, r0 - mvn r0, #0 - cmp r5, r0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, _021F687C ; =0x0221AF80 - mov r1, r5 - ldr r0, [r0, #4] - bl ArrayNth - cmp r4, #0 - movgt r1, #1 - mov r2, #0 - str r4, [r0, #8] - movle r1, #0 - mov r0, r5 - mov r3, r2 - str r2, [sp] - bl CallReqCallback - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_021F6874: .word Unk_ov4_022193E0 -_021F6878: .word Unk_ov4_022193D4 -_021F687C: .word rcvlen - arm_func_end ProcessGetPid - - arm_func_start ProcessGetData -ProcessGetData: ; 0x021F6880 - stmfd sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - ldr r1, _021F6948 ; =0x022193E8 - mov r4, r0 - bl value_for_key_safe - bl atoi - mov r7, r0 - ldr r1, _021F694C ; =0x022193D4 - mov r0, r4 - bl value_for_key_safe - bl atoi - mov r6, r0 - ldr r1, _021F6950 ; =0x022193F0 - mov r0, r4 - bl value_for_key_safe - bl atoi - mov r5, r0 - ldr r1, _021F6954 ; =0x022193F4 - mov r0, r4 - bl value_for_key_safe - bl atoi - mov r8, r0 - mov r1, r6 - mov r2, r5 - mov r0, #1 - bl FindRequest - mov r5, r0 - mvn r0, #0 - cmp r5, r0 - addeq sp, sp, #4 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} - ldr r1, _021F6958 ; =0x022193F8 - mov r0, r4 - bl value_for_key_safe - bl atoi - mov r6, r0 - ldr r1, _021F695C ; =0x02219400 - mov r0, r4 - bl strstr - cmp r0, #0 - ldreq r3, _021F6960 ; =0x022193C4 - moveq r6, #0 - addne r3, r0, #6 - mov r0, r5 - mov r1, r7 - mov r2, r8 - str r6, [sp] - bl CallReqCallback - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_021F6948: .word Unk_ov4_022193E8 -_021F694C: .word Unk_ov4_022193D4 -_021F6950: .word Unk_ov4_022193F0 -_021F6954: .word Unk_ov4_022193F4 -_021F6958: .word Unk_ov4_022193F8 -_021F695C: .word Unk_ov4_02219400 -_021F6960: .word Unk_ov4_022193C4 - arm_func_end ProcessGetData - - arm_func_start ProcessSetData -ProcessSetData: ; 0x021F6964 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - ldr r1, _021F69EC ; =0x02219408 - mov r7, r0 - bl value_for_key_safe - bl atoi - mov r6, r0 - ldr r1, _021F69F0 ; =0x022193F0 - mov r0, r7 - bl value_for_key_safe - bl atoi - mov r5, r0 - ldr r1, _021F69F4 ; =0x022193D4 - mov r0, r7 - bl value_for_key_safe - bl atoi - mov r4, r0 - ldr r1, _021F69F8 ; =0x022193F4 - mov r0, r7 - bl value_for_key_safe - bl atoi - mov r1, r4 - mov r4, r0 - mov r2, r5 - mov r0, #2 - bl FindRequest - mvn r1, #0 - cmp r0, r1 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r3, #0 - mov r1, r6 - mov r2, r4 - str r3, [sp] - bl CallReqCallback - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021F69EC: .word Unk_ov4_02219408 -_021F69F0: .word Unk_ov4_022193F0 -_021F69F4: .word Unk_ov4_022193D4 -_021F69F8: .word Unk_ov4_022193F4 - arm_func_end ProcessSetData - - arm_func_start ProcessStatement -ProcessStatement: ; 0x021F69FC - stmfd sp!, {r3, r4, r5, lr} - mov r4, r1 - ldr r1, _021F6AD4 ; =0x02219410 - mov r5, r0 - mov r3, #0 - mov r2, #8 - strb r3, [r5, r4] - bl strncmp - cmp r0, #0 - bne _021F6A34 - mov r0, r5 - mov r1, r4 - bl ProcessPlayerAuth - ldmia sp!, {r3, r4, r5, pc} -_021F6A34: - ldr r1, _021F6AD8 ; =0x0221941C - mov r0, r5 - mov r2, #9 - bl strncmp - cmp r0, #0 - bne _021F6A5C - mov r0, r5 - mov r1, r4 - bl ProcessGetPid - ldmia sp!, {r3, r4, r5, pc} -_021F6A5C: - ldr r1, _021F6AD8 ; =0x0221941C - mov r0, r5 - mov r2, #9 - bl strncmp - cmp r0, #0 - bne _021F6A84 - mov r0, r5 - mov r1, r4 - bl ProcessGetPid - ldmia sp!, {r3, r4, r5, pc} -_021F6A84: - ldr r1, _021F6ADC ; =0x02219428 - mov r0, r5 - mov r2, #8 - bl strncmp - cmp r0, #0 - bne _021F6AAC - mov r0, r5 - mov r1, r4 - bl ProcessGetData - ldmia sp!, {r3, r4, r5, pc} -_021F6AAC: - ldr r1, _021F6AE0 ; =0x02219434 - mov r0, r5 - mov r2, #8 - bl strncmp - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, r4 - bl ProcessSetData - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_021F6AD4: .word Unk_ov4_02219410 -_021F6AD8: .word Unk_ov4_0221941C -_021F6ADC: .word Unk_ov4_02219428 -_021F6AE0: .word Unk_ov4_02219434 - arm_func_end ProcessStatement - - arm_func_start ProcessInBuffer -ProcessInBuffer: ; 0x021F6AE4 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov sb, r1 - mov sl, r0 - mov r7, sb - bl FindFinal - mov r6, r0 - ldr r5, _021F6B64 ; =0x022193A4 - ldr r4, _021F6B68 ; =0x02219358 - b _021F6B4C -_021F6B08: - sub r8, r6, sl - mov r0, sl - mov r1, r8 - str r5, [r4, #8] - bl xcode_buf - mov r0, sl - mov r1, r8 - bl ProcessStatement - add r0, r8, #7 - sub sb, sb, r0 - cmp sb, #0 - add sl, r6, #7 - ble _021F6B4C - mov r0, sl - mov r1, sb - bl FindFinal - mov r6, r0 -_021F6B4C: - cmp sb, #0 - ble _021F6B5C - cmp r6, #0 - bne _021F6B08 -_021F6B5C: - sub r0, r7, sb - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ; .align 2, 0 -_021F6B64: .word enc1 -_021F6B68: .word sock - arm_func_end ProcessInBuffer - - arm_func_start CallReqCallback -CallReqCallback: ; 0x021F6B6C - stmfd sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x14 - movs r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - addmi sp, sp, #0x14 - ldmmiia sp!, {r4, r5, r6, r7, pc} - ldr r0, _021F6C6C ; =0x0221AF80 - ldr r0, [r0, #4] - bl ArrayLength - cmp r7, r0 - addge sp, sp, #0x14 - ldmgeia sp!, {r4, r5, r6, r7, pc} - ldr r0, _021F6C6C ; =0x0221AF80 - mov r1, r7 - ldr r0, [r0, #4] - bl ArrayNth - mov r3, r0 - ldr ip, [r3, #0x18] - cmp ip, #0 - beq _021F6C54 - ldr r0, [r3, #0] - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _021F6C54 -_021F6BD4: ; jump table - b _021F6BE4 ; case 0 - b _021F6C00 ; case 1 - b _021F6C28 ; case 2 - b _021F6C44 ; case 3 -_021F6BE4: - ldr r0, [r3, #0x14] - mov r2, r6 - str r0, [sp] - ldmib r3, {r0, r1} - mov r3, r4 - blx ip - b _021F6C54 -_021F6C00: - str r6, [sp] - str r5, [sp, #4] - ldr r0, [sp, #0x28] - str r4, [sp, #8] - str r0, [sp, #0xc] - ldr r0, [r3, #0x14] - str r0, [sp, #0x10] - ldmib r3, {r0, r1, r2, r3} - blx ip - b _021F6C54 -_021F6C28: - str r6, [sp] - str r5, [sp, #4] - ldr r0, [r3, #0x14] - str r0, [sp, #8] - ldmib r3, {r0, r1, r2, r3} - blx ip - b _021F6C54 -_021F6C44: - ldmib r3, {r0, r1} - ldr r3, [r3, #0x14] - mov r2, r6 - blx ip -_021F6C54: - ldr r0, _021F6C6C ; =0x0221AF80 - mov r1, r7 - ldr r0, [r0, #4] - bl ArrayDeleteAt - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, pc} - ; .align 2, 0 -_021F6C6C: .word rcvlen - arm_func_end CallReqCallback - - arm_func_start ClosePendingCallbacks -ClosePendingCallbacks: ; 0x021F6C70 - stmfd sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x24 - ldr r0, _021F6D54 ; =0x0221AF80 - ldr r0, [r0, #4] - cmp r0, #0 - addeq sp, sp, #0x24 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} - bl ArrayLength - subs r4, r0, #1 - bmi _021F6D34 - ldr r5, _021F6D58 ; =0x022159A4 - add r3, sp, #4 - mov r2, #8 -_021F6CA4: - ldrb r1, [r5] - ldrb r0, [r5, #1] - add r5, r5, #2 - strb r1, [r3] - strb r0, [r3, #1] - add r3, r3, #2 - subs r2, r2, #1 - bne _021F6CA4 - ldr sb, _021F6D5C ; =0x022193B4 - ldr r5, _021F6D60 ; =0x02219358 - add r8, sp, #0x14 - mov r7, #0xf - mov r6, #0 -_021F6CD8: - add ip, sp, #4 - add r3, sp, #0x14 - mov r2, #8 -_021F6CE4: - ldrb r1, [ip] - ldrb r0, [ip, #1] - add ip, ip, #2 - strb r1, [r3] - strb r0, [r3, #1] - add r3, r3, #2 - subs r2, r2, #1 - bne _021F6CE4 - mov r0, r8 - mov r1, r7 - str sb, [r5, #8] - bl xcode_buf - mov r0, r4 - mov r1, r6 - mov r2, r6 - mov r3, r8 - str r6, [sp] - bl CallReqCallback - subs r4, r4, #1 - bpl _021F6CD8 -_021F6D34: - ldr r0, _021F6D54 ; =0x0221AF80 - ldr r0, [r0, #4] - bl ArrayFree - ldr r0, _021F6D54 ; =0x0221AF80 - mov r1, #0 - str r1, [r0, #4] - add sp, sp, #0x24 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - ; .align 2, 0 -_021F6D54: .word rcvlen -_021F6D58: .word Unk_ov4_022159A4 -_021F6D5C: .word enc3 -_021F6D60: .word sock - arm_func_end ClosePendingCallbacks - - arm_func_start GetTeamIndex -GetTeamIndex: ; 0x021F6D64 - stmfd sp!, {r3, lr} - cmp r0, #0 - ldreq r0, _021F6D90 ; =0x0221AF80 - ldreq r0, [r0, #0x28] - cmp r0, #0 - moveq r0, r1 - ldmeqia sp!, {r3, pc} - ldr r0, [r0, #0x20] - bl ArrayNth - ldr r0, [r0, #0] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_021F6D90: .word rcvlen - arm_func_end GetTeamIndex - - arm_func_start GetPlayerIndex -GetPlayerIndex: ; 0x021F6D94 - stmfd sp!, {r3, lr} - cmp r0, #0 - ldreq r0, _021F6DC0 ; =0x0221AF80 - ldreq r0, [r0, #0x28] - cmp r0, #0 - moveq r0, r1 - ldmeqia sp!, {r3, pc} - ldr r0, [r0, #0x1c] - bl ArrayNth - ldr r0, [r0, #0] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_021F6DC0: .word rcvlen - arm_func_end GetPlayerIndex - - arm_func_start ServerOpInt -ServerOpInt: ; 0x021F6DC4 - stmfd sp!, {r0, r1, r2, r3} - stmfd sp!, {r3, r4, r5, lr} - movs r5, r0 - ldreq r0, _021F6E28 ; =0x0221AF80 - mov r4, r1 - ldreq r5, [r0, #0x28] - mov r3, r2 - cmp r5, #0 - addeq r0, sp, #0x1c - beq _021F6E18 - ldr r0, [r5, #0xc] - add r2, sp, #0x1c - mov r1, r4 - blx r3 - cmp r0, #0 - bne _021F6E18 - ldr r0, [r5, #0xc] - add r3, sp, #0x1c - mov r1, r4 - mov r2, #0 - bl BucketNew -_021F6E18: - ldr r0, [r0, #0] - ldmia sp!, {r3, r4, r5, lr} - add sp, sp, #0x10 - bx lr - ; .align 2, 0 -_021F6E28: .word rcvlen - arm_func_end ServerOpInt - - arm_func_start ServerOpFloat -ServerOpFloat: ; 0x021F6E2C - stmfd sp!, {r0, r1, r2, r3} - stmfd sp!, {r3, r4, r5, lr} - movs r5, r0 - ldreq r0, _021F6E98 ; =0x0221AF80 - mov r4, r1 - ldreq r5, [r0, #0x28] - mov r3, r2 - cmp r5, #0 - addeq r0, sp, #0x1c - beq _021F6E80 - ldr r0, [r5, #0xc] - add r2, sp, #0x1c - mov r1, r4 - blx r3 - cmp r0, #0 - bne _021F6E80 - ldr r0, [r5, #0xc] - add r3, sp, #0x1c - mov r1, r4 - mov r2, #1 - bl BucketNew -_021F6E80: - ldr r2, [r0, #0] - ldr r1, [r0, #4] - mov r0, r2 - ldmia sp!, {r3, r4, r5, lr} - add sp, sp, #0x10 - bx lr - ; .align 2, 0 -_021F6E98: .word rcvlen - arm_func_end ServerOpFloat - - arm_func_start ServerOpString -ServerOpString: ; 0x021F6E9C - stmfd sp!, {r4, r5, r6, lr} - movs r6, r0 - ldreq r0, _021F6EF4 ; =0x0221AF80 - mov r5, r1 - ldreq r6, [r0, #0x28] - mov r4, r3 - cmp r6, #0 - mov ip, r2 - moveq r0, r4 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r0, [r6, #0xc] - mov r1, r5 - mov r2, r4 - blx ip - cmp r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - ldr r0, [r6, #0xc] - mov r1, r5 - mov r3, r4 - mov r2, #2 - bl BucketNew - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_021F6EF4: .word rcvlen - arm_func_end ServerOpString - - arm_func_start TeamOpInt -TeamOpInt: ; 0x021F6EF8 - stmfd sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x44 - mov r6, r1 - ldr r1, [sp, #0x58] - mov r7, r0 - mov r5, r2 - mov r4, r3 - bl GetTeamIndex - mov r3, r0 - ldr r1, _021F6F50 ; =0x02219440 - add r0, sp, #4 - mov r2, r6 - bl sprintf - ldr ip, [sp, #0x58] - mov r0, r7 - mov r2, r5 - mov r3, r4 - add r1, sp, #4 - str ip, [sp] - bl ServerOpInt - add sp, sp, #0x44 - ldmia sp!, {r4, r5, r6, r7, pc} - ; .align 2, 0 -_021F6F50: .word Unk_ov4_02219440 - arm_func_end TeamOpInt - - arm_func_start TeamOpFloat -TeamOpFloat: ; 0x021F6F54 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x48 - mov r7, r1 - ldr r1, [sp, #0x64] - mov r8, r0 - mov r6, r2 - mov r5, r3 - ldr r4, [sp, #0x60] - bl GetTeamIndex - mov r3, r0 - ldr r1, _021F6FB0 ; =0x02219440 - add r0, sp, #8 - mov r2, r7 - bl sprintf - ldr ip, [sp, #0x64] - mov r3, r5 - mov r0, r8 - mov r2, r6 - add r1, sp, #8 - stmia sp, {r4, ip} - bl ServerOpFloat - add sp, sp, #0x48 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_021F6FB0: .word Unk_ov4_02219440 - arm_func_end TeamOpFloat - - arm_func_start TeamOpString -TeamOpString: ; 0x021F6FB4 - stmfd sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x44 - mov r6, r1 - ldr r1, [sp, #0x58] - mov r7, r0 - mov r5, r2 - mov r4, r3 - bl GetTeamIndex - mov r3, r0 - ldr r1, _021F700C ; =0x02219440 - add r0, sp, #4 - mov r2, r6 - bl sprintf - ldr ip, [sp, #0x58] - mov r0, r7 - mov r2, r5 - mov r3, r4 - add r1, sp, #4 - str ip, [sp] - bl ServerOpString - add sp, sp, #0x44 - ldmia sp!, {r4, r5, r6, r7, pc} - ; .align 2, 0 -_021F700C: .word Unk_ov4_02219440 - arm_func_end TeamOpString - - arm_func_start PlayerOpInt -PlayerOpInt: ; 0x021F7010 - stmfd sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x44 - mov r6, r1 - ldr r1, [sp, #0x58] - mov r7, r0 - mov r5, r2 - mov r4, r3 - bl GetPlayerIndex - mov r3, r0 - ldr r1, _021F7068 ; =0x02219448 - add r0, sp, #4 - mov r2, r6 - bl sprintf - ldr ip, [sp, #0x58] - mov r0, r7 - mov r2, r5 - mov r3, r4 - add r1, sp, #4 - str ip, [sp] - bl ServerOpInt - add sp, sp, #0x44 - ldmia sp!, {r4, r5, r6, r7, pc} - ; .align 2, 0 -_021F7068: .word Unk_ov4_02219448 - arm_func_end PlayerOpInt - - arm_func_start PlayerOpFloat -PlayerOpFloat: ; 0x021F706C - stmfd sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x48 - mov r7, r1 - ldr r1, [sp, #0x64] - mov r8, r0 - mov r6, r2 - mov r5, r3 - ldr r4, [sp, #0x60] - bl GetPlayerIndex - mov r3, r0 - ldr r1, _021F70C8 ; =0x02219448 - add r0, sp, #8 - mov r2, r7 - bl sprintf - ldr ip, [sp, #0x64] - mov r3, r5 - mov r0, r8 - mov r2, r6 - add r1, sp, #8 - stmia sp, {r4, ip} - bl ServerOpFloat - add sp, sp, #0x48 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_021F70C8: .word Unk_ov4_02219448 - arm_func_end PlayerOpFloat - - arm_func_start PlayerOpString -PlayerOpString: ; 0x021F70CC - stmfd sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x44 - mov r6, r1 - ldr r1, [sp, #0x58] - mov r7, r0 - mov r5, r2 - mov r4, r3 - bl GetPlayerIndex - mov r3, r0 - ldr r1, _021F7124 ; =0x02219448 - add r0, sp, #4 - mov r2, r6 - bl sprintf - ldr ip, [sp, #0x58] - mov r0, r7 - mov r2, r5 - mov r3, r4 - add r1, sp, #4 - str ip, [sp] - bl ServerOpString - add sp, sp, #0x44 - ldmia sp!, {r4, r5, r6, r7, pc} - ; .align 2, 0 -_021F7124: .word Unk_ov4_02219448 - arm_func_end PlayerOpString - - .rodata - - - .global Unk_ov4_0221598C -Unk_ov4_0221598C: ; 0x0221598C - .incbin "incbin/gstats.bin", 0x0, 0x8 - - .global Unk_ov4_02215994 -Unk_ov4_02215994: ; 0x02215994 - .incbin "incbin/gstats.bin", 0x8, 0x18 - 0x8 - - .global Unk_ov4_022159A4 -Unk_ov4_022159A4: ; 0x022159A4 - .incbin "incbin/gstats.bin", 0x18, 0x28 - 0x18 - - .global Unk_ov4_022159B4 -Unk_ov4_022159B4: ; 0x022159B4 - .incbin "incbin/gstats.bin", 0x28, 0x46 - 0x28 - - .global Unk_ov4_022159D2 -Unk_ov4_022159D2: ; 0x022159D2 - .incbin "incbin/gstats.bin", 0x46, 0x65 - 0x46 - - .global Unk_ov4_022159F1 -Unk_ov4_022159F1: ; 0x022159F1 - .incbin "incbin/gstats.bin", 0x65, 0x88 - 0x65 - - .global Unk_ov4_02215A14 -Unk_ov4_02215A14: ; 0x02215A14 - .incbin "incbin/gstats.bin", 0x88, 0xAC - 0x88 - - .global Unk_ov4_02215A38 -Unk_ov4_02215A38: ; 0x02215A38 - .incbin "incbin/gstats.bin", 0xAC, 0xD5 - 0xAC - - .global Unk_ov4_02215A61 -Unk_ov4_02215A61: ; 0x02215A61 - .incbin "incbin/gstats.bin", 0xD5, 0xFF - 0xD5 - - .global Unk_ov4_02215A8B -Unk_ov4_02215A8B: ; 0x02215A8B - .incbin "incbin/gstats.bin", 0xFF, 0x12B - 0xFF - - .global Unk_ov4_02215AB7 -Unk_ov4_02215AB7: ; 0x02215AB7 - .incbin "incbin/gstats.bin", 0x12B, 0x15C - 0x12B - - .global Unk_ov4_02215AE8 -Unk_ov4_02215AE8: ; 0x02215AE8 - .incbin "incbin/gstats.bin", 0x15C, 0x19B - 0x15C - - .global Unk_ov4_02215B27 -Unk_ov4_02215B27: ; 0x02215B27 - .incbin "incbin/gstats.bin", 0x19B, 0x101 - - - - .data - - - .global sock -sock: ; 0x02219358 - .word 0xFFFFFFFF - - .global inittimeout -inittimeout: ; 0x0221935C - .ascii " N" - .space 0x2 - - .global enc -enc: ; 0x02219360 - .word enc1 - - .global bucketfuncs -bucketfuncs: ; 0x02219364 - .word BucketSet - .word BucketAdd - .word BucketSub - .word BucketMult - .word BucketDiv - .word BucketConcat - .word BucketAvg - - .global bopfuncs -bopfuncs: ; 0x02219380 - .word ServerOpInt - .word ServerOpFloat - .word ServerOpString - .word TeamOpInt - .word TeamOpFloat - .word TeamOpString - .word PlayerOpInt - .word PlayerOpFloat - .word PlayerOpString - - .global enc1 -enc1: ; 0x022193A4 - .space 0x1 - .asciz "ameSpy3D" - .space 0x6 - - .global enc3 -enc3: ; 0x022193B4 - .space 0x1 - .ascii "rojectAphex" - .space 0x4 - - .global Unk_ov4_022193C4 -Unk_ov4_022193C4: ; 0x022193C4 - .space 0x4 - - .global Unk_ov4_022193C8 -Unk_ov4_022193C8: ; 0x022193C8 - .word 0x5C - - .global Unk_ov4_022193CC -Unk_ov4_022193CC: ; 0x022193CC - .ascii "pauthr" - .space 0x2 - - .global Unk_ov4_022193D4 -Unk_ov4_022193D4: ; 0x022193D4 - .asciz "lid" - - .global Unk_ov4_022193D8 -Unk_ov4_022193D8: ; 0x022193D8 - .ascii "errmsg" - .space 0x2 - - .global Unk_ov4_022193E0 -Unk_ov4_022193E0: ; 0x022193E0 - .asciz "getpidr" - - .global Unk_ov4_022193E8 -Unk_ov4_022193E8: ; 0x022193E8 - .ascii "getpdr" - .space 0x2 - - .global Unk_ov4_022193F0 -Unk_ov4_022193F0: ; 0x022193F0 - .asciz "pid" - - .global Unk_ov4_022193F4 -Unk_ov4_022193F4: ; 0x022193F4 - .asciz "mod" - - .global Unk_ov4_022193F8 -Unk_ov4_022193F8: ; 0x022193F8 - .ascii "length" - .space 0x2 - - .global Unk_ov4_02219400 -Unk_ov4_02219400: ; 0x02219400 - .ascii "\\data\\" - .space 0x2 - - .global Unk_ov4_02219408 -Unk_ov4_02219408: ; 0x02219408 - .ascii "setpdr" - .space 0x2 - - .global Unk_ov4_02219410 -Unk_ov4_02219410: ; 0x02219410 - .ascii "\\pauthr\\" - .space 0x4 - - .global Unk_ov4_0221941C -Unk_ov4_0221941C: ; 0x0221941C - .asciz "\\getpidr\\" - .space 0x2 - - .global Unk_ov4_02219428 -Unk_ov4_02219428: ; 0x02219428 - .ascii "\\getpdr\\" - .space 0x4 - - .global Unk_ov4_02219434 -Unk_ov4_02219434: ; 0x02219434 - .ascii "\\setpdr\\" - .space 0x4 - - .global Unk_ov4_02219440 -Unk_ov4_02219440: ; 0x02219440 - .ascii "%s_t%d" - .space 0x2 - - .global Unk_ov4_02219448 -Unk_ov4_02219448: ; 0x02219448 - .asciz "%s_%d" - .space 0x2 - - - - .bss - - - .global rcvlen -rcvlen: ; 0x0221AF80 - .space 0x4 - - .global serverreqs -serverreqs: ; 0x0221AF84 - .space 0x4 - - .global initstart -initstart: ; 0x0221AF88 - .space 0x4 - - .global rcvbuffer -rcvbuffer: ; 0x0221AF8C - .space 0x4 - - .global stats_initstate -stats_initstate: ; 0x0221AF90 - .space 0x4 - - .global gameport -gameport: ; 0x0221AF94 - .space 0x4 - - .global sesskey -sesskey: ; 0x0221AF98 - .space 0x4 - - .global internal_init -internal_init: ; 0x0221AF9C - .space 0x4 - - .global connid -connid: ; 0x0221AFA0 - .space 0x4 - - .global Unk_ov4_0221AFA4 -Unk_ov4_0221AFA4: ; 0x0221AFA4 - .space 0x4 - - .global g_statsgame -g_statsgame: ; 0x0221AFA8 - .space 0x4 - - .global rcvmax -rcvmax: ; 0x0221AFAC - .space 0x4 - - .global Unk_ov4_0221AFB0 -Unk_ov4_0221AFB0: ; 0x0221AFB0 - .space 0x200 - - .global gcd_gamename -gcd_gamename: ; 0x0221B1B0 - .space 0x100 - - .global gcd_secret_key -gcd_secret_key: ; 0x0221B2B0 - .space 0x100 - diff --git a/subprojects/gamespy/libraries/gstats/asm/incbin/gstats.bin b/subprojects/gamespy/libraries/gstats/asm/incbin/gstats.bin deleted file mode 100644 index cfc8a99cec..0000000000 Binary files a/subprojects/gamespy/libraries/gstats/asm/incbin/gstats.bin and /dev/null differ diff --git a/subprojects/gamespy/libraries/gstats/asm/include/gbucket.inc b/subprojects/gamespy/libraries/gstats/asm/include/gbucket.inc deleted file mode 100644 index d2e2e09a3f..0000000000 --- a/subprojects/gamespy/libraries/gstats/asm/include/gbucket.inc +++ /dev/null @@ -1,22 +0,0 @@ -.public __msl_assertion_failed -.public strlen -.public strcpy -.public strcat -.public _d_add -.public _d_itod -.public _d_mul -.public _dsub -.public _s32_div_f -.public _d_div -.public DWCi_GsMalloc -.public DWCi_GsFree -.public TableEnter -.public TableLookup -.public goastrdup -.public BucketConcat -.public bint -.public bfloat -.public stripchars -.public DoSet -.public DoGet -.public DoFind diff --git a/subprojects/gamespy/libraries/gstats/asm/include/gstats.inc b/subprojects/gamespy/libraries/gstats/asm/include/gstats.inc deleted file mode 100644 index dcdfc7d1d6..0000000000 --- a/subprojects/gamespy/libraries/gstats/asm/include/gstats.inc +++ /dev/null @@ -1,46 +0,0 @@ -.public memmove -.public sprintf -.public strlen -.public strcat -.public strncmp -.public strstr -.public atoi -.public DWCi_GsRealloc -.public DWCi_GsFree -.public ArrayFree -.public ArrayLength -.public ArrayNth -.public ArrayDeleteAt -.public CanReceiveOnSocket -.public closesocket -.public shutdown -.public recv -.public BucketNew -.public BucketSet -.public BucketAdd -.public BucketSub -.public BucketMult -.public BucketDiv -.public BucketConcat -.public BucketAvg -.public CloseStatsConnection -.public xcode_buf -.public value_for_key -.public value_for_key_safe -.public SocketReadable -.public FindFinal -.public FindRequest -.public ProcessPlayerAuth -.public ProcessGetPid -.public ProcessGetData -.public ProcessSetData -.public ProcessStatement -.public ProcessInBuffer -.public CallReqCallback -.public ClosePendingCallbacks -.public GetTeamIndex -.public GetPlayerIndex -.public ServerOpInt -.public ServerOpFloat -.public ServerOpString - diff --git a/subprojects/gamespy/libraries/gstats/asm/macros/function.inc b/subprojects/gamespy/libraries/gstats/asm/macros/function.inc deleted file mode 100644 index f71cc4ccae..0000000000 --- a/subprojects/gamespy/libraries/gstats/asm/macros/function.inc +++ /dev/null @@ -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 \ No newline at end of file diff --git a/subprojects/gamespy/libraries/gstats/meson.build b/subprojects/gamespy/libraries/gstats/meson.build deleted file mode 100644 index dbe22d7777..0000000000 --- a/subprojects/gamespy/libraries/gstats/meson.build +++ /dev/null @@ -1,13 +0,0 @@ -libdwcgsgstats_asm = files( - 'asm/gbucket.s', - 'asm/gstats.s' -) - -libdwcgsgstats = static_library('dwcgsgstats', - sources: libdwcgsgstats_asm, - nasm_args: asm_args, - include_directories: public_includes, - pic: false -) - -gamespy_libs += libdwcgsgstats diff --git a/subprojects/gamespy/libraries/gt2/asm/gt2auth.s b/subprojects/gamespy/libraries/gt2/asm/gt2auth.s deleted file mode 100644 index 8029332ad8..0000000000 --- a/subprojects/gamespy/libraries/gt2/asm/gt2auth.s +++ /dev/null @@ -1,251 +0,0 @@ - .include "macros/function.inc" - .include "include/gt2auth.inc" - - - - .text - - - arm_func_start gti2VerifyChallenge -gti2VerifyChallenge: ; 0x021F7128 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - ldrb r5, [r0] - mov lr, #0 - mov r4, #1 - and r6, r5, #1 - mov r3, lr - mov ip, r4 - mov r1, lr - mov r2, r4 -_021F714C: - add r7, r0, r4 - ldrb sl, [r7, #-1] - cmp sl, r5 - eor sl, r4, sl - movlo r8, ip - and sl, sl, #1 - movhs r8, r3 - cmp r5, #0x4f - movlo sb, r2 - eor sl, lr, sl - movhs sb, r1 - eor sl, r6, sl - eor sb, sl, sb - eors lr, sb, r8 - beq _021F7194 - ldrb r8, [r7] - tst r8, #1 - beq _021F71A8 -_021F7194: - cmp lr, #0 - ldreqb r7, [r7] - andeq r7, r7, #1 - cmpeq r7, #1 - bne _021F71B0 -_021F71A8: - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_021F71B0: - add r4, r4, #1 - cmp r4, #0x20 - blt _021F714C - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - arm_func_end gti2VerifyChallenge - - arm_func_start gti2GetChallenge -gti2GetChallenge: ; 0x021F71C4 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - movs sl, r0 - bne _021F71E4 - ldr r0, _021F72D0 ; =0x02219488 - ldr r1, _021F72D4 ; =0x02219490 - ldr r2, _021F72D8 ; =0x02219450 - mov r3, #0x2b - bl __msl_assertion_failed -_021F71E4: - bl current_time - bl srand - bl rand - ldr r5, _021F72DC ; =0x2C0B02C1 - mov r1, r0, lsr #0x1f - smull r2, r4, r5, r0 - mov r8, #0 - mov r7, #1 - add r4, r1, r4, asr #4 - mov r3, #0x5d - smull r1, r2, r3, r4 - sub r4, r0, r1 - add r0, r4, #0x21 - strb r0, [sl] - mov fp, r8 - mov r6, r7 - mov r4, r3 -_021F7228: - add sb, sl, r7 - ldrb r3, [sb, #-1] - ldrb r0, [sl] - cmp r3, r0 - eor r3, r7, r3 - movlo r1, r6 - and r3, r3, #1 - movhs r1, fp - cmp r0, #0x4f - movlo r2, #1 - and r0, r0, #1 - eor r3, r8, r3 - movhs r2, #0 - eor r0, r0, r3 - eor r0, r0, r2 - eor r8, r0, r1 - bl rand - smull r2, r3, r5, r0 - mov r1, r0, lsr #0x1f - add r3, r1, r3, asr #4 - smull r1, r2, r4, r3 - sub r3, r0, r1 - add r0, r3, #0x21 - cmp r8, #0 - strb r0, [sb] - beq _021F729C - ldrb r0, [sb] - tst r0, #1 - beq _021F72B0 -_021F729C: - cmp r8, #0 - ldreqb r0, [sb] - andeq r0, r0, #1 - cmpeq r0, #1 - bne _021F72BC -_021F72B0: - ldrb r0, [sb] - add r0, r0, #1 - strb r0, [sb] -_021F72BC: - add r7, r7, #1 - cmp r7, #0x20 - blt _021F7228 - mov r0, sl - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_021F72D0: .word Unk_ov4_02219488 -_021F72D4: .word Unk_ov4_02219490 -_021F72D8: .word Unk_ov4_02219450 -_021F72DC: .word 0x2C0B02C1 - arm_func_end gti2GetChallenge - - arm_func_start gti2GetResponse -gti2GetResponse: ; 0x021F72E0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r5, r0 - ldr r0, _021F73E0 ; =0x02219464 - mov r4, r1 - bl strlen - mov r7, r0 - mov r0, r4 - bl gti2VerifyChallenge - mov sl, #0 - mov fp, r0 - mov r8, sl -_021F730C: - cmp fp, #0 - cmpne sl, #0 - cmpne sl, #0xd - bne _021F7344 - bl rand - ldr r1, _021F73E4 ; =0x2C0B02C1 - mov r2, r0, lsr #0x1f - smull r3, r6, r1, r0 - add r6, r2, r6, asr #4 - mov r1, #0x5d - smull r2, r3, r1, r6 - sub r6, r0, r2 - add r0, r6, #0x21 - b _021F73C0 -_021F7344: - cmp sl, #1 - cmpne sl, #0xe - ldreqsb r6, [r4, sl] - addne r0, r4, sl - ldrb sb, [r4, sl] - ldrnesb r6, [r0, #-1] - mov r1, r7 - add r0, sl, sb - bl _s32_div_f - mul r0, r6, r8 - mov r6, r1 - mov r1, r7 - bl _s32_div_f - ldr r0, _021F73E0 ; =0x02219464 - ldrsb r3, [r0, r6] - ldrsb r2, [r0, r1] - mla r0, sl, sb, r3 - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #27 - add r0, r1, r0, ror #27 - ldrb r0, [r4, r0] - eor r0, r0, r2 - bl abs - ldr r1, _021F73E4 ; =0x2C0B02C1 - smull r2, r3, r1, r0 - mov r1, r0, lsr #0x1f - add r3, r1, r3, asr #4 - mov r1, #0x5d - smull r2, r3, r1, r3 - sub r3, r0, r2 - add r0, r3, #0x21 -_021F73C0: - strb r0, [r5, sl] - add r0, r8, #0x47 - add sl, sl, #1 - cmp sl, #0x20 - add r8, r0, #0x4600 - blt _021F730C - mov r0, r5 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_021F73E0: .word GT2ChallengeKey -_021F73E4: .word 0x2C0B02C1 - arm_func_end gti2GetResponse - - arm_func_start gti2CheckResponse -gti2CheckResponse: ; 0x021F73E8 - mov ip, #0 -_021F73EC: - cmp ip, #0 - cmpne ip, #0xd - ldrneb r3, [r0, ip] - ldrneb r2, [r1, ip] - cmpne r3, r2 - movne r0, #0 - bxne lr - add ip, ip, #1 - cmp ip, #0x20 - blt _021F73EC - mov r0, #1 - bx lr - arm_func_end gti2CheckResponse - - .data - - - .global Unk_ov4_02219450 -Unk_ov4_02219450: ; 0x02219450 - .ascii "gti2GetChallenge" - .space 0x4 - - .global GT2ChallengeKey -GT2ChallengeKey: ; 0x02219464 - .ascii "3b8dd8995f7c40a9a5c5b7dd5b481341" - .space 0x4 - - .global Unk_ov4_02219488 -Unk_ov4_02219488: ; 0x02219488 - .ascii "buffer" - .space 0x2 - - .global Unk_ov4_02219490 -Unk_ov4_02219490: ; 0x02219490 - .asciz "gt2Auth.c" - .space 0x2 - diff --git a/subprojects/gamespy/libraries/gt2/asm/gt2buffer.s b/subprojects/gamespy/libraries/gt2/asm/gt2buffer.s deleted file mode 100644 index a3b1f1f864..0000000000 --- a/subprojects/gamespy/libraries/gt2/asm/gt2buffer.s +++ /dev/null @@ -1,227 +0,0 @@ - .include "macros/function.inc" - .include "include/gt2buffer.inc" - - - - .text - - - arm_func_start gti2AllocateBuffer -gti2AllocateBuffer: ; 0x021F741C - stmfd sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r5, r0 - mov r0, r4 - bl DWCi_GsMalloc - str r0, [r5, #0] - cmp r0, #0 - moveq r0, #0 - strne r4, [r5, #4] - movne r0, #1 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end gti2AllocateBuffer - - arm_func_start gti2GetBufferFreeSpace -gti2GetBufferFreeSpace: ; 0x021F7448 - ldr r1, [r0, #4] - ldr r0, [r0, #8] - sub r0, r1, r0 - bx lr - arm_func_end gti2GetBufferFreeSpace - - arm_func_start gti2BufferWriteByte -gti2BufferWriteByte: ; 0x021F7458 - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - ldmib r5, {r0, r2} - mov r4, r1 - cmp r2, r0 - blt _021F7484 - ldr r0, _021F749C ; =0x022194F0 - ldr r1, _021F74A0 ; =0x0221950C - ldr r2, _021F74A4 ; =0x022194C4 - mov r3, #0x23 - bl __msl_assertion_failed -_021F7484: - ldr r1, [r5, #8] - add r0, r1, #1 - str r0, [r5, #8] - ldr r0, [r5, #0] - strb r4, [r0, r1] - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_021F749C: .word Unk_ov4_022194F0 -_021F74A0: .word Unk_ov4_0221950C -_021F74A4: .word Unk_ov4_022194C4 - arm_func_end gti2BufferWriteByte - - arm_func_start gti2BufferWriteUShort -gti2BufferWriteUShort: ; 0x021F74A8 - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - ldmib r5, {r0, r2} - add r2, r2, #2 - mov r4, r1 - cmp r2, r0 - ble _021F74D8 - ldr r0, _021F7508 ; =0x02219518 - ldr r1, _021F750C ; =0x0221950C - ldr r2, _021F7510 ; =0x022194D8 - mov r3, #0x2e - bl __msl_assertion_failed -_021F74D8: - ldr r2, [r5, #8] - mov r1, r4, asr #8 - add r0, r2, #1 - str r0, [r5, #8] - ldr r0, [r5, #0] - strb r1, [r0, r2] - ldr r1, [r5, #8] - add r0, r1, #1 - str r0, [r5, #8] - ldr r0, [r5, #0] - strb r4, [r0, r1] - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_021F7508: .word Unk_ov4_02219518 -_021F750C: .word Unk_ov4_0221950C -_021F7510: .word Unk_ov4_022194D8 - arm_func_end gti2BufferWriteUShort - - arm_func_start gti2BufferWriteData -gti2BufferWriteData: ; 0x021F7514 - stmfd sp!, {r4, r5, r6, lr} - movs r5, r1 - mov r4, r2 - mov r6, r0 - cmpne r4, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mvn r0, #0 - cmp r4, r0 - bne _021F7544 - mov r0, r5 - bl strlen - mov r4, r0 -_021F7544: - ldmib r6, {r0, r1} - add r1, r1, r4 - cmp r1, r0 - ble _021F7568 - ldr r0, _021F7590 ; =0x0221953C - ldr r1, _021F7594 ; =0x0221950C - ldr r2, _021F7598 ; =0x022194B0 - mov r3, #0x40 - bl __msl_assertion_failed -_021F7568: - ldr r3, [r6, #0] - ldr r0, [r6, #8] - mov r1, r5 - mov r2, r4 - add r0, r3, r0 - bl memcpy - ldr r0, [r6, #8] - add r0, r0, r4 - str r0, [r6, #8] - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_021F7590: .word Unk_ov4_0221953C -_021F7594: .word Unk_ov4_0221950C -_021F7598: .word Unk_ov4_022194B0 - arm_func_end gti2BufferWriteData - - arm_func_start gti2BufferShorten -gti2BufferShorten: ; 0x021F759C - stmfd sp!, {r4, r5, r6, lr} - mov r5, r1 - mvn r1, #0 - mov r6, r0 - cmp r5, r1 - ldreq r0, [r6, #8] - mov r4, r2 - subeq r5, r0, r4 - ldr r0, [r6, #8] - cmp r5, r0 - ble _021F75DC - ldr r0, _021F762C ; =0x02219560 - ldr r1, _021F7630 ; =0x0221950C - ldr r2, _021F7634 ; =0x0221949C - mov r3, #0x4f - bl __msl_assertion_failed -_021F75DC: - ldr r0, [r6, #8] - sub r0, r0, r5 - cmp r4, r0 - ble _021F7600 - ldr r0, _021F7638 ; =0x02219578 - ldr r1, _021F7630 ; =0x0221950C - ldr r2, _021F7634 ; =0x0221949C - mov r3, #0x50 - bl __msl_assertion_failed -_021F7600: - ldr r0, [r6, #0] - ldr r1, [r6, #8] - add r0, r0, r5 - sub r2, r1, r5 - add r1, r0, r4 - sub r2, r2, r4 - bl memmove - ldr r0, [r6, #8] - sub r0, r0, r4 - str r0, [r6, #8] - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_021F762C: .word Unk_ov4_02219560 -_021F7630: .word Unk_ov4_0221950C -_021F7634: .word Unk_ov4_0221949C -_021F7638: .word Unk_ov4_02219578 - arm_func_end gti2BufferShorten - - .data - - - .global Unk_ov4_0221949C -Unk_ov4_0221949C: ; 0x0221949C - .asciz "gti2BufferShorten" - .space 0x2 - - .global Unk_ov4_022194B0 -Unk_ov4_022194B0: ; 0x022194B0 - .asciz "gti2BufferWriteData" - - .global Unk_ov4_022194C4 -Unk_ov4_022194C4: ; 0x022194C4 - .asciz "gti2BufferWriteByte" - - .global Unk_ov4_022194D8 -Unk_ov4_022194D8: ; 0x022194D8 - .asciz "gti2BufferWriteUShort" - .space 0x2 - - .global Unk_ov4_022194F0 -Unk_ov4_022194F0: ; 0x022194F0 - .ascii "buffer->len < buffer->size" - .space 0x2 - - .global Unk_ov4_0221950C -Unk_ov4_0221950C: ; 0x0221950C - .asciz "gt2Buffer.c" - - .global Unk_ov4_02219518 -Unk_ov4_02219518: ; 0x02219518 - .asciz "(buffer->len + 2) <= buffer->size" - .space 0x2 - - .global Unk_ov4_0221953C -Unk_ov4_0221953C: ; 0x0221953C - .asciz "(buffer->len + len) <= buffer->size" - - .global Unk_ov4_02219560 -Unk_ov4_02219560: ; 0x02219560 - .ascii "start <= buffer->len" - .space 0x4 - - .global Unk_ov4_02219578 -Unk_ov4_02219578: ; 0x02219578 - .ascii "shortenBy <= (buffer->len - start)" - .space 0x2 - diff --git a/subprojects/gamespy/libraries/gt2/asm/gt2callback.s b/subprojects/gamespy/libraries/gt2/asm/gt2callback.s deleted file mode 100644 index 684f9e9a3d..0000000000 --- a/subprojects/gamespy/libraries/gt2/asm/gt2callback.s +++ /dev/null @@ -1,731 +0,0 @@ - .include "macros/function.inc" - .include "include/gt2callback.inc" - - - - .text - - - arm_func_start gti2SocketErrorCallback -gti2SocketErrorCallback: ; 0x021F763C - stmfd sp!, {r4, lr} - movs r4, r0 - bne _021F765C - ldr r0, _021F76CC ; =0x02219690 - ldr r1, _021F76D0 ; =0x02219698 - ldr r2, _021F76D4 ; =0x02219620 - mov r3, #0x1b - bl __msl_assertion_failed -_021F765C: - cmp r4, #0 - moveq r0, #1 - ldmeqia sp!, {r4, pc} - ldr r0, [r4, #0x24] - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r4, pc} - ldr r1, [r4, #0x1c] - mov r0, r4 - add r1, r1, #1 - str r1, [r4, #0x1c] - ldr r1, [r4, #0x24] - blx r1 - ldr r0, [r4, #0x1c] - sub r0, r0, #1 - str r0, [r4, #0x1c] - ldr r0, [r4, #0x14] - cmp r0, #0 - beq _021F76C4 - ldr r0, [r4, #0x1c] - cmp r0, #0 - bne _021F76C4 - mov r0, r4 - bl gti2CloseSocket - mov r0, #0 - ldmia sp!, {r4, pc} -_021F76C4: - mov r0, #1 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_021F76CC: .word Unk_ov4_02219690 -_021F76D0: .word Unk_ov4_02219698 -_021F76D4: .word Unk_ov4_02219620 - arm_func_end gti2SocketErrorCallback - - arm_func_start gti2ConnectAttemptCallback -gti2ConnectAttemptCallback: ; 0x021F76D8 - stmfd sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0xc - mov r6, r1 - movs r7, r0 - mov r5, r2 - mov r4, r3 - cmpne r6, #0 - bne _021F770C - ldr r0, _021F77E8 ; =0x022196A8 - ldr r1, _021F77EC ; =0x02219698 - ldr r2, _021F77F0 ; =0x02219654 - mov r3, #0x3d - bl __msl_assertion_failed -_021F770C: - cmp r7, #0 - cmpne r6, #0 - addeq sp, sp, #0xc - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, r7, pc} - ldr r0, [r7, #0x20] - cmp r0, #0 - addeq sp, sp, #0xc - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, r7, pc} - ldr r1, [r7, #0x1c] - ldr r0, [sp, #0x28] - add r1, r1, #1 - cmp r0, #0 - ldrne r0, [sp, #0x24] - str r1, [r7, #0x1c] - ldr r2, [r6, #0x24] - cmpne r0, #0 - moveq r0, #0 - streq r0, [sp, #0x24] - streq r0, [sp, #0x28] - add r2, r2, #1 - str r2, [r6, #0x24] - ldr r0, [sp, #0x20] - ldr r1, [sp, #0x24] - str r0, [sp] - str r1, [sp, #4] - ldr r0, [sp, #0x28] - mov r1, r6 - str r0, [sp, #8] - ldr ip, [r7, #0x20] - mov r0, r7 - mov r2, r5 - mov r3, r4 - blx ip - ldr r0, [r7, #0x1c] - sub r0, r0, #1 - str r0, [r7, #0x1c] - ldr r0, [r6, #0x24] - sub r0, r0, #1 - str r0, [r6, #0x24] - ldr r0, [r7, #0x14] - cmp r0, #0 - beq _021F77DC - ldr r0, [r7, #0x1c] - cmp r0, #0 - bne _021F77DC - mov r0, r7 - bl gti2CloseSocket - add sp, sp, #0xc - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, pc} -_021F77DC: - mov r0, #1 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, pc} - ; .align 2, 0 -_021F77E8: .word Unk_ov4_022196A8 -_021F77EC: .word Unk_ov4_02219698 -_021F77F0: .word Unk_ov4_02219654 - arm_func_end gti2ConnectAttemptCallback - - arm_func_start gti2ConnectedCallback -gti2ConnectedCallback: ; 0x021F77F4 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - movs r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bne _021F7820 - ldr r0, _021F78D0 ; =0x022196C0 - ldr r1, _021F78D4 ; =0x02219698 - ldr r2, _021F78D8 ; =0x022195F0 - mov r3, #0x69 - bl __msl_assertion_failed -_021F7820: - cmp r7, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - str r6, [r7, #0x18] - ldr r0, [r7, #0x28] - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, [r7, #0x24] - cmp r4, #0 - add r1, r1, #1 - str r1, [r7, #0x24] - ldr ip, [r7, #8] - cmpne r5, #0 - ldr r3, [ip, #0x1c] - moveq r5, #0 - add r3, r3, #1 - str r3, [ip, #0x1c] - moveq r4, r5 - mov r2, r5 - ldr r5, [r7, #0x28] - mov r0, r7 - mov r1, r6 - mov r3, r4 - blx r5 - ldr r0, [r7, #0x24] - sub r0, r0, #1 - str r0, [r7, #0x24] - ldr r1, [r7, #8] - ldr r0, [r1, #0x1c] - sub r0, r0, #1 - str r0, [r1, #0x1c] - ldr r0, [r7, #8] - ldr r1, [r0, #0x14] - cmp r1, #0 - beq _021F78C8 - ldr r1, [r0, #0x1c] - cmp r1, #0 - bne _021F78C8 - bl gti2CloseSocket - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_021F78C8: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021F78D0: .word Unk_ov4_022196C0 -_021F78D4: .word Unk_ov4_02219698 -_021F78D8: .word Unk_ov4_022195F0 - arm_func_end gti2ConnectedCallback - - arm_func_start gti2ReceivedCallback -gti2ReceivedCallback: ; 0x021F78DC - stmfd sp!, {r3, r4, r5, r6, r7, lr} - movs r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bne _021F7908 - ldr r0, _021F79B4 ; =0x022196C0 - ldr r1, _021F79B8 ; =0x02219698 - ldr r2, _021F79BC ; =0x022195D8 - mov r3, #0x94 - bl __msl_assertion_failed -_021F7908: - cmp r7, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r7, #0x2c] - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, [r7, #0x24] - cmp r5, #0 - add r1, r1, #1 - str r1, [r7, #0x24] - ldr ip, [r7, #8] - cmpne r6, #0 - ldr r3, [ip, #0x1c] - moveq r6, #0 - add r3, r3, #1 - moveq r5, r6 - str r3, [ip, #0x1c] - mov r2, r5 - ldr r5, [r7, #0x2c] - mov r0, r7 - mov r1, r6 - mov r3, r4 - blx r5 - ldr r0, [r7, #0x24] - sub r0, r0, #1 - str r0, [r7, #0x24] - ldr r1, [r7, #8] - ldr r0, [r1, #0x1c] - sub r0, r0, #1 - str r0, [r1, #0x1c] - ldr r0, [r7, #8] - ldr r1, [r0, #0x14] - cmp r1, #0 - beq _021F79AC - ldr r1, [r0, #0x1c] - cmp r1, #0 - bne _021F79AC - bl gti2CloseSocket - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_021F79AC: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021F79B4: .word Unk_ov4_022196C0 -_021F79B8: .word Unk_ov4_02219698 -_021F79BC: .word Unk_ov4_022195D8 - arm_func_end gti2ReceivedCallback - - arm_func_start gti2ClosedCallback -gti2ClosedCallback: ; 0x021F79C0 - stmfd sp!, {r3, r4, r5, lr} - movs r4, r0 - mov r5, r1 - bne _021F79E4 - ldr r0, _021F7A78 ; =0x022196C0 - ldr r1, _021F7A7C ; =0x02219698 - ldr r2, _021F7A80 ; =0x022195C4 - mov r3, #0xba - bl __msl_assertion_failed -_021F79E4: - cmp r4, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, [r4, #0x30] - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, [r4, #0x24] - mov r0, r4 - add r1, r1, #1 - str r1, [r4, #0x24] - ldr r3, [r4, #8] - mov r1, r5 - ldr r2, [r3, #0x1c] - add r2, r2, #1 - str r2, [r3, #0x1c] - ldr r2, [r4, #0x30] - blx r2 - ldr r0, [r4, #0x24] - sub r0, r0, #1 - str r0, [r4, #0x24] - ldr r1, [r4, #8] - ldr r0, [r1, #0x1c] - sub r0, r0, #1 - str r0, [r1, #0x1c] - ldr r0, [r4, #8] - ldr r1, [r0, #0x14] - cmp r1, #0 - beq _021F7A70 - ldr r1, [r0, #0x1c] - cmp r1, #0 - bne _021F7A70 - bl gti2CloseSocket - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_021F7A70: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_021F7A78: .word Unk_ov4_022196C0 -_021F7A7C: .word Unk_ov4_02219698 -_021F7A80: .word Unk_ov4_022195C4 - arm_func_end gti2ClosedCallback - - arm_func_start gti2PingCallback -gti2PingCallback: ; 0x021F7A84 - stmfd sp!, {r3, r4, r5, lr} - movs r4, r0 - mov r5, r1 - bne _021F7AA8 - ldr r0, _021F7B3C ; =0x022196C0 - ldr r1, _021F7B40 ; =0x02219698 - ldr r2, _021F7B44 ; =0x022195B0 - mov r3, #0xd9 - bl __msl_assertion_failed -_021F7AA8: - cmp r4, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, [r4, #0x34] - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, [r4, #0x24] - mov r0, r4 - add r1, r1, #1 - str r1, [r4, #0x24] - ldr r3, [r4, #8] - mov r1, r5 - ldr r2, [r3, #0x1c] - add r2, r2, #1 - str r2, [r3, #0x1c] - ldr r2, [r4, #0x34] - blx r2 - ldr r0, [r4, #0x24] - sub r0, r0, #1 - str r0, [r4, #0x24] - ldr r1, [r4, #8] - ldr r0, [r1, #0x1c] - sub r0, r0, #1 - str r0, [r1, #0x1c] - ldr r0, [r4, #8] - ldr r1, [r0, #0x14] - cmp r1, #0 - beq _021F7B34 - ldr r1, [r0, #0x1c] - cmp r1, #0 - bne _021F7B34 - bl gti2CloseSocket - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_021F7B34: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_021F7B3C: .word Unk_ov4_022196C0 -_021F7B40: .word Unk_ov4_02219698 -_021F7B44: .word Unk_ov4_022195B0 - arm_func_end gti2PingCallback - - arm_func_start gti2SendFilterCallback -gti2SendFilterCallback: ; 0x021F7B48 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - movs r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bne _021F7B74 - ldr r0, _021F7C30 ; =0x022196C0 - ldr r1, _021F7C34 ; =0x02219698 - ldr r2, _021F7C38 ; =0x02219608 - ldr r3, _021F7C3C ; =0x00000101 - bl __msl_assertion_failed -_021F7B74: - cmp r7, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r7, #0x98] - mov r1, r6 - bl ArrayNth - movs lr, r0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r7, #0x24] - cmp r4, #0 - add r0, r0, #1 - str r0, [r7, #0x24] - ldr ip, [r7, #8] - cmpne r5, #0 - ldr r3, [ip, #0x1c] - moveq r5, #0 - add r3, r3, #1 - ldr r2, [sp, #0x18] - str r3, [ip, #0x1c] - str r2, [sp] - moveq r4, r5 - mov r1, r6 - ldr r6, [lr] - mov r0, r7 - mov r2, r5 - mov r3, r4 - blx r6 - ldr r0, [r7, #0x24] - sub r0, r0, #1 - str r0, [r7, #0x24] - ldr r1, [r7, #8] - ldr r0, [r1, #0x1c] - sub r0, r0, #1 - str r0, [r1, #0x1c] - ldr r0, [r7, #8] - ldr r1, [r0, #0x14] - cmp r1, #0 - beq _021F7C28 - ldr r1, [r0, #0x1c] - cmp r1, #0 - bne _021F7C28 - bl gti2CloseSocket - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_021F7C28: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021F7C30: .word Unk_ov4_022196C0 -_021F7C34: .word Unk_ov4_02219698 -_021F7C38: .word Unk_ov4_02219608 -_021F7C3C: .word 0x00000101 - arm_func_end gti2SendFilterCallback - - arm_func_start gti2ReceiveFilterCallback -gti2ReceiveFilterCallback: ; 0x021F7C40 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - movs r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bne _021F7C6C - ldr r0, _021F7D28 ; =0x022196C0 - ldr r1, _021F7D2C ; =0x02219698 - ldr r2, _021F7D30 ; =0x02219638 - ldr r3, _021F7D34 ; =0x0000012D - bl __msl_assertion_failed -_021F7C6C: - cmp r7, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r7, #0x9c] - mov r1, r6 - bl ArrayNth - movs lr, r0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r7, #0x24] - cmp r4, #0 - add r0, r0, #1 - str r0, [r7, #0x24] - ldr ip, [r7, #8] - cmpne r5, #0 - ldr r3, [ip, #0x1c] - moveq r5, #0 - add r3, r3, #1 - ldr r2, [sp, #0x18] - str r3, [ip, #0x1c] - str r2, [sp] - moveq r4, r5 - mov r1, r6 - ldr r6, [lr] - mov r0, r7 - mov r2, r5 - mov r3, r4 - blx r6 - ldr r0, [r7, #0x24] - sub r0, r0, #1 - str r0, [r7, #0x24] - ldr r1, [r7, #8] - ldr r0, [r1, #0x1c] - sub r0, r0, #1 - str r0, [r1, #0x1c] - ldr r0, [r7, #8] - ldr r1, [r0, #0x14] - cmp r1, #0 - beq _021F7D20 - ldr r1, [r0, #0x1c] - cmp r1, #0 - bne _021F7D20 - bl gti2CloseSocket - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_021F7D20: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021F7D28: .word Unk_ov4_022196C0 -_021F7D2C: .word Unk_ov4_02219698 -_021F7D30: .word Unk_ov4_02219638 -_021F7D34: .word 0x0000012D - arm_func_end gti2ReceiveFilterCallback - - arm_func_start gti2DumpCallback -gti2DumpCallback: ; 0x021F7D38 - stmfd sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0xc - movs r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bne _021F7D68 - ldr r0, _021F7E50 ; =0x02219690 - ldr r1, _021F7E54 ; =0x02219698 - ldr r2, _021F7E58 ; =0x0221959C - mov r3, #0x160 - bl __msl_assertion_failed -_021F7D68: - cmp r7, #0 - addeq sp, sp, #0xc - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, r7, pc} - ldr r0, [sp, #0x2c] - cmp r0, #0 - ldrne ip, [r7, #0x28] - ldreq ip, [r7, #0x2c] - cmp ip, #0 - addeq sp, sp, #0xc - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, r7, pc} - ldr r0, [sp, #0x28] - ldr r1, [sp, #0x20] - cmp r0, #0 - ldrne r0, [sp, #0x24] - mov r2, r5 - cmpne r0, #0 - moveq r0, #0 - streq r0, [sp, #0x28] - streq r0, [sp, #0x24] - ldr r0, [r7, #0x1c] - cmp r6, #0 - add r0, r0, #1 - str r0, [r7, #0x1c] - ldrne r0, [r6, #0x24] - ldr lr, [sp, #0x28] - addne r0, r0, #1 - strne r0, [r6, #0x24] - str r1, [sp] - ldr r0, [sp, #0x24] - mov r1, r6 - str r0, [sp, #4] - mov r0, r7 - mov r3, r4 - str lr, [sp, #8] - blx ip - ldr r0, [r7, #0x1c] - cmp r6, #0 - sub r0, r0, #1 - str r0, [r7, #0x1c] - ldrne r0, [r6, #0x24] - subne r0, r0, #1 - strne r0, [r6, #0x24] - ldr r0, [r7, #0x14] - cmp r0, #0 - beq _021F7E44 - ldr r0, [r7, #0x1c] - cmp r0, #0 - bne _021F7E44 - mov r0, r7 - bl gti2CloseSocket - add sp, sp, #0xc - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, pc} -_021F7E44: - mov r0, #1 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, pc} - ; .align 2, 0 -_021F7E50: .word Unk_ov4_02219690 -_021F7E54: .word Unk_ov4_02219698 -_021F7E58: .word Unk_ov4_0221959C - arm_func_end gti2DumpCallback - - arm_func_start gti2UnrecognizedMessageCallback -gti2UnrecognizedMessageCallback: ; 0x021F7E5C - stmfd sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - ldr r4, [sp, #0x24] - movs r8, r0 - mov r0, #0 - mov r7, r1 - mov r6, r2 - mov r5, r3 - str r0, [r4, #0] - bne _021F7E98 - ldr r0, _021F7F44 ; =0x02219690 - ldr r1, _021F7F48 ; =0x02219698 - ldr r2, _021F7F4C ; =0x02219670 - ldr r3, _021F7F50 ; =0x00000197 - bl __msl_assertion_failed -_021F7E98: - cmp r8, #0 - addeq sp, sp, #4 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} - ldr r0, [r8, #0x30] - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} - ldr r0, [sp, #0x20] - ldr r1, [r8, #0x1c] - cmp r0, #0 - cmpne r5, #0 - moveq r5, #0 - streq r5, [sp, #0x20] - add r1, r1, #1 - str r1, [r8, #0x1c] - ldr r0, [sp, #0x20] - mov r1, r7 - str r0, [sp] - ldr ip, [r8, #0x30] - mov r0, r8 - mov r2, r6 - mov r3, r5 - blx ip - str r0, [r4, #0] - ldr r0, [r8, #0x1c] - sub r0, r0, #1 - str r0, [r8, #0x1c] - ldr r0, [r8, #0x14] - cmp r0, #0 - beq _021F7F38 - ldr r0, [r8, #0x1c] - cmp r0, #0 - bne _021F7F38 - mov r0, r8 - bl gti2CloseSocket - add sp, sp, #4 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_021F7F38: - mov r0, #1 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_021F7F44: .word Unk_ov4_02219690 -_021F7F48: .word Unk_ov4_02219698 -_021F7F4C: .word Unk_ov4_02219670 -_021F7F50: .word 0x00000197 - arm_func_end gti2UnrecognizedMessageCallback - - .data - - - .global Unk_ov4_0221959C -Unk_ov4_0221959C: ; 0x0221959C - .ascii "gti2DumpCallback" - .space 0x4 - - .global Unk_ov4_022195B0 -Unk_ov4_022195B0: ; 0x022195B0 - .ascii "gti2PingCallback" - .space 0x4 - - .global Unk_ov4_022195C4 -Unk_ov4_022195C4: ; 0x022195C4 - .ascii "gti2ClosedCallback" - .space 0x2 - - .global Unk_ov4_022195D8 -Unk_ov4_022195D8: ; 0x022195D8 - .ascii "gti2ReceivedCallback" - .space 0x4 - - .global Unk_ov4_022195F0 -Unk_ov4_022195F0: ; 0x022195F0 - .asciz "gti2ConnectedCallback" - .space 0x2 - - .global Unk_ov4_02219608 -Unk_ov4_02219608: ; 0x02219608 - .ascii "gti2SendFilterCallback" - .space 0x2 - - .global Unk_ov4_02219620 -Unk_ov4_02219620: ; 0x02219620 - .asciz "gti2SocketErrorCallback" - - .global Unk_ov4_02219638 -Unk_ov4_02219638: ; 0x02219638 - .asciz "gti2ReceiveFilterCallback" - .space 0x2 - - .global Unk_ov4_02219654 -Unk_ov4_02219654: ; 0x02219654 - .ascii "gti2ConnectAttemptCallback" - .space 0x2 - - .global Unk_ov4_02219670 -Unk_ov4_02219670: ; 0x02219670 - .asciz "gti2UnrecognizedMessageCallback" - - .global Unk_ov4_02219690 -Unk_ov4_02219690: ; 0x02219690 - .ascii "socket" - .space 0x2 - - .global Unk_ov4_02219698 -Unk_ov4_02219698: ; 0x02219698 - .asciz "gt2Callback.c" - .space 0x2 - - .global Unk_ov4_022196A8 -Unk_ov4_022196A8: ; 0x022196A8 - .ascii "socket && connection" - .space 0x4 - - .global Unk_ov4_022196C0 -Unk_ov4_022196C0: ; 0x022196C0 - .ascii "connection" - .space 0x2 - diff --git a/subprojects/gamespy/libraries/gt2/asm/gt2connection.s b/subprojects/gamespy/libraries/gt2/asm/gt2connection.s deleted file mode 100644 index e865ec0267..0000000000 --- a/subprojects/gamespy/libraries/gt2/asm/gt2connection.s +++ /dev/null @@ -1,409 +0,0 @@ - .include "macros/function.inc" - .include "include/gt2connection.inc" - - - - .text - - - arm_func_start gti2NewOutgoingConnection -gti2NewOutgoingConnection: ; 0x021F7F54 - stmfd sp!, {r4, lr} - mov r4, r1 - bl gti2NewSocketConnection - cmp r0, #0 - ldmneia sp!, {r4, pc} - ldr r1, [r4, #0] - mov r0, #0 - str r0, [r1, #0xc] - ldr r1, [r4, #0] - mov r2, #1 - str r2, [r1, #0x10] - ldmia sp!, {r4, pc} - arm_func_end gti2NewOutgoingConnection - - arm_func_start gti2NewIncomingConnection -gti2NewIncomingConnection: ; 0x021F7F84 - stmfd sp!, {r4, lr} - mov r4, r1 - bl gti2NewSocketConnection - cmp r0, #0 - ldmneia sp!, {r4, pc} - ldr r0, [r4, #0] - mov r1, #2 - str r1, [r0, #0xc] - ldr r1, [r4, #0] - mov r0, #0 - str r0, [r1, #0x10] - ldmia sp!, {r4, pc} - arm_func_end gti2NewIncomingConnection - - arm_func_start gti2StartConnectionAttempt -gti2StartConnectionAttempt: ; 0x021F7FB4 - stmfd sp!, {r0, r1, r2, r3} - stmfd sp!, {r3, r4, r5, lr} - sub sp, sp, #0x20 - mov r5, r0 - add r0, sp, #0x34 - add r1, sp, #0x38 - mov r4, r3 - bl gti2MessageCheck - ldr r0, [sp, #0x38] - cmp r0, #0 - ble _021F8014 - bl DWCi_GsMalloc - cmp r0, #0 - str r0, [r5, #0x38] - addeq sp, sp, #0x20 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, lr} - addeq sp, sp, #0x10 - bxeq lr - ldr r1, [sp, #0x34] - ldr r2, [sp, #0x38] - bl memcpy - ldr r0, [sp, #0x38] - str r0, [r5, #0x3c] -_021F8014: - cmp r4, #0 - addne ip, r5, #0x28 - ldmneia r4, {r0, r1, r2, r3} - stmneia ip, {r0, r1, r2, r3} - add r0, sp, #0 - bl gti2GetChallenge - add r1, sp, #0 - add r0, r5, #0x68 - bl gti2GetResponse - add r1, sp, #0 - mov r0, r5 - bl gti2SendClientChallenge - mov r0, #0 - str r0, [r5, #0xc] - add sp, sp, #0x20 - ldmia sp!, {r3, r4, r5, lr} - add sp, sp, #0x10 - bx lr - arm_func_end gti2StartConnectionAttempt - - arm_func_start gti2AcceptConnection -gti2AcceptConnection: ; 0x021F805C - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r2, [r5, #0x14] - mov r4, r1 - cmp r2, #0 - movne r0, #0 - strne r0, [r5, #0x14] - ldmneia sp!, {r3, r4, r5, pc} - mov r2, #0 - str r2, [r5, #0x14] - ldr r1, [r5, #0xc] - cmp r1, #4 - movne r0, r2 - ldmneia sp!, {r3, r4, r5, pc} - bl gti2SendAccept - mov r0, #5 - cmp r4, #0 - str r0, [r5, #0xc] - addne ip, r5, #0x28 - ldmneia r4, {r0, r1, r2, r3} - stmneia ip, {r0, r1, r2, r3} - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end gti2AcceptConnection - - arm_func_start gti2RejectConnection -gti2RejectConnection: ; 0x021F80B8 - stmfd sp!, {r0, r1, r2, r3} - stmfd sp!, {r4, lr} - mov r4, r0 - mov r0, #0 - str r0, [r4, #0x14] - ldr r0, [r4, #0xc] - cmp r0, #4 - ldmneia sp!, {r4, lr} - addne sp, sp, #0x10 - bxne lr - add r0, sp, #0xc - add r1, sp, #0x10 - bl gti2MessageCheck - ldr r1, [sp, #0xc] - ldr r2, [sp, #0x10] - mov r0, r4 - bl gti2SendReject - mov r0, #6 - str r0, [r4, #0xc] - ldmia sp!, {r4, lr} - add sp, sp, #0x10 - bx lr - arm_func_end gti2RejectConnection - - arm_func_start gti2ConnectionSendData -gti2ConnectionSendData: ; 0x021F8110 - stmfd sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, r0 - str r2, [sp] - mov r3, r1 - ldrh r2, [r4, #4] - ldr r0, [r4, #8] - ldr r1, [r4, #0] - bl gti2SocketSend - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, pc} - bl current_time - str r0, [r4, #0x88] - mov r0, #1 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - arm_func_end gti2ConnectionSendData - - arm_func_start gti2CheckTimeout -gti2CheckTimeout: ; 0x021F8158 - stmfd sp!, {r4, lr} - mov r4, r0 - ldr r2, [r4, #0xc] - cmp r2, #5 - bge _021F81F0 - ldr r0, [r4, #0x10] - mov r3, #0 - cmp r0, #0 - beq _021F819C - ldr r2, [r4, #0x20] - cmp r2, #0 - beq _021F81B8 - ldr r0, [r4, #0x1c] - sub r0, r1, r0 - cmp r0, r2 - movhi r3, #1 - b _021F81B8 -_021F819C: - cmp r2, #4 - bge _021F81B8 - ldr r2, [r4, #0x1c] - ldr r0, _021F81F8 ; =0x0000EA60 - sub r1, r1, r2 - cmp r1, r0 - movhi r3, #1 -_021F81B8: - cmp r3, #0 - beq _021F81F0 - mov r0, r4 - bl gti2SendClosed - mov r0, r4 - bl gti2ConnectionClosed - mov r2, #0 - mov r0, r4 - mov r3, r2 - mov r1, #6 - bl gti2ConnectedCallback - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} -_021F81F0: - mov r0, #1 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_021F81F8: .word 0x0000EA60 - arm_func_end gti2CheckTimeout - - arm_func_start gti2SendRetries -gti2SendRetries: ; 0x021F81FC - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - ldr r0, [r7, #0x60] - mov r6, r1 - bl ArrayLength - mov r5, r0 - cmp r5, #0 - mov r4, #0 - ble _021F8260 -_021F8220: - ldr r0, [r7, #0x60] - mov r1, r4 - bl ArrayNth - mov r1, r0 - ldr r0, [r1, #0xc] - sub r0, r6, r0 - cmp r0, #0x3e8 - bls _021F8254 - mov r0, r7 - bl gti2ResendMessage - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} -_021F8254: - add r4, r4, #1 - cmp r4, r5 - blt _021F8220 -_021F8260: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end gti2SendRetries - - arm_func_start gti2CheckPendingAck -gti2CheckPendingAck: ; 0x021F8268 - stmfd sp!, {r3, lr} - ldr r2, [r0, #0x90] - cmp r2, #0 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - ldr r2, [r0, #0x94] - sub r1, r1, r2 - cmp r1, #0x64 - bls _021F829C - bl gti2SendAck - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, pc} -_021F829C: - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end gti2CheckPendingAck - - arm_func_start gti2CheckKeepAlive -gti2CheckKeepAlive: ; 0x021F82A4 - stmfd sp!, {r3, lr} - ldr r3, [r0, #0x88] - ldr r2, _021F82D4 ; =0x00007530 - sub r1, r1, r3 - cmp r1, r2 - bls _021F82CC - bl gti2SendKeepAlive - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, pc} -_021F82CC: - mov r0, #1 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_021F82D4: .word 0x00007530 - arm_func_end gti2CheckKeepAlive - - arm_func_start gti2ConnectionThink -gti2ConnectionThink: ; 0x021F82D8 - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl gti2CheckTimeout - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, r4 - bl gti2CheckKeepAlive - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, r4 - bl gti2SendRetries - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, r4 - bl gti2CheckPendingAck - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end gti2ConnectionThink - - arm_func_start gti2CloseConnection -gti2CloseConnection: ; 0x021F8340 - stmfd sp!, {r4, lr} - mov r4, r0 - cmp r1, #0 - beq _021F8380 - ldr r1, [r4, #0xc] - cmp r1, #7 - ldmgeia sp!, {r4, pc} - bl gti2ConnectionClosed - mov r0, r4 - bl gti2SendClosed - mov r0, r4 - mov r1, #0 - bl gti2ClosedCallback - mov r0, r4 - bl gti2FreeSocketConnection - ldmia sp!, {r4, pc} -_021F8380: - mov r1, #6 - str r1, [r4, #0xc] - bl gti2SendClose - ldmia sp!, {r4, pc} - arm_func_end gti2CloseConnection - - arm_func_start gti2ConnectionClosed -gti2ConnectionClosed: ; 0x021F8390 - stmfd sp!, {r0, r1, r2, r3} - stmfd sp!, {r3, lr} - ldr r1, [sp, #8] - ldr r0, [r1, #0xc] - cmp r0, #7 - ldmeqia sp!, {r3, lr} - addeq sp, sp, #0x10 - bxeq lr - mov r0, #7 - str r0, [r1, #0xc] - ldr r0, [sp, #8] - add r1, sp, #8 - ldr r0, [r0, #8] - ldr r0, [r0, #0xc] - bl TableRemove - ldr r0, [sp, #8] - add r1, sp, #8 - ldr r0, [r0, #8] - ldr r0, [r0, #0x10] - bl ArrayAppend - ldmia sp!, {r3, lr} - add sp, sp, #0x10 - bx lr - arm_func_end gti2ConnectionClosed - - arm_func_start gti2ConnectionCleanup -gti2ConnectionCleanup: ; 0x021F83EC - stmfd sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4, #0x38] - cmp r0, #0 - beq _021F8404 - bl DWCi_GsFree -_021F8404: - ldr r0, [r4, #0x44] - cmp r0, #0 - beq _021F8414 - bl DWCi_GsFree -_021F8414: - ldr r0, [r4, #0x50] - cmp r0, #0 - beq _021F8424 - bl DWCi_GsFree -_021F8424: - ldr r0, [r4, #0x5c] - cmp r0, #0 - beq _021F8434 - bl ArrayFree -_021F8434: - ldr r0, [r4, #0x60] - cmp r0, #0 - beq _021F8444 - bl ArrayFree -_021F8444: - ldr r0, [r4, #0x98] - cmp r0, #0 - beq _021F8454 - bl ArrayFree -_021F8454: - ldr r0, [r4, #0x9c] - cmp r0, #0 - beq _021F8464 - bl ArrayFree -_021F8464: - mov r0, r4 - bl DWCi_GsFree - ldmia sp!, {r4, pc} - arm_func_end gti2ConnectionCleanup \ No newline at end of file diff --git a/subprojects/gamespy/libraries/gt2/asm/gt2main.s b/subprojects/gamespy/libraries/gt2/asm/gt2main.s deleted file mode 100644 index 5d8f711c72..0000000000 --- a/subprojects/gamespy/libraries/gt2/asm/gt2main.s +++ /dev/null @@ -1,347 +0,0 @@ - .include "macros/function.inc" - .include "include/gt2main.inc" - - - - .text - - - arm_func_start gt2CreateSocket -gt2CreateSocket: ; 0x021F8470 - stmfd sp!, {r3, lr} - ldr ip, [sp, #8] - str ip, [sp] - bl gti2CreateSocket - ldmia sp!, {r3, pc} - arm_func_end gt2CreateSocket - - arm_func_start gt2CloseSocket -gt2CloseSocket: ; 0x021F8484 - stmfd sp!, {r4, lr} - mov r4, r0 - bl gt2CloseAllConnectionsHard - mov r0, r4 - bl gti2CloseSocket - ldmia sp!, {r4, pc} - arm_func_end gt2CloseSocket - - arm_func_start gt2Think -gt2Think: ; 0x021F849C - stmfd sp!, {r4, lr} - mov r4, r0 - bl gti2ReceiveMessages - cmp r0, #0 - ldmeqia sp!, {r4, pc} - mov r0, r4 - bl gti2SocketConnectionsThink - cmp r0, #0 - ldmeqia sp!, {r4, pc} - mov r0, r4 - bl gti2FreeClosedConnections - ldmia sp!, {r4, pc} - arm_func_end gt2Think - - arm_func_start gt2Listen -gt2Listen: ; 0x021F84CC - ldr ip, _021F84D4 ; =gti2Listen - bx ip - ; .align 2, 0 -_021F84D4: .word gti2Listen - arm_func_end gt2Listen - - arm_func_start gt2Accept -gt2Accept: ; 0x021F84D8 - ldr ip, _021F84E0 ; =gti2AcceptConnection - bx ip - ; .align 2, 0 -_021F84E0: .word gti2AcceptConnection - arm_func_end gt2Accept - - arm_func_start gt2Reject -gt2Reject: ; 0x021F84E4 - ldr ip, _021F84EC ; =gti2RejectConnection - bx ip - ; .align 2, 0 -_021F84EC: .word gti2RejectConnection - arm_func_end gt2Reject - - arm_func_start gt2Connect -gt2Connect: ; 0x021F84F0 - stmfd sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0xc - mov r6, r0 - mov r5, r1 - mov r0, r2 - add r1, sp, #4 - add r2, sp, #0 - mov r4, r3 - bl gt2StringToAddress - cmp r0, #0 - ldrne r2, [sp, #4] - cmpne r2, #0 - ldrneh r3, [sp] - cmpne r3, #0 - addeq sp, sp, #0xc - moveq r0, #4 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} - mov r1, r2, lsr #0x18 - mov r0, r2, lsr #8 - mov r7, r2, lsl #8 - and r1, r1, #0xff - and r0, r0, #0xff00 - mov r8, r2, lsl #0x18 - orr r0, r1, r0 - and r7, r7, #0xff0000 - and r1, r8, #0xff000000 - orr r0, r7, r0 - orr r0, r1, r0 - and r0, r0, #0xe0000000 - cmp r0, #-0x20000000 - addeq sp, sp, #0xc - moveq r0, #4 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} - add r1, sp, #8 - mov r0, r6 - bl gti2NewOutgoingConnection - cmp r0, #0 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc} - ldr r1, [sp, #0x2c] - ldr r0, [sp, #8] - ldr r2, [sp, #0x28] - str r1, [r0, #0x20] - ldr r0, [sp, #8] - ldr r3, [sp, #0x30] - mov r1, r4 - bl gti2StartConnectionAttempt - movs r4, r0 - beq _021F85C8 - ldr r0, [sp, #8] - bl gti2FreeSocketConnection - add sp, sp, #0xc - mov r0, r4 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_021F85C8: - ldr r0, [sp, #0x34] - cmp r0, #0 - bne _021F85EC - cmp r5, #0 - ldrne r0, [sp, #8] - add sp, sp, #0xc - strne r0, [r5] - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_021F85EC: - ldr r1, [sp, #8] - mov r8, #1 - ldr r0, [r1, #0x24] - mov r7, #0 - add r0, r0, #1 - str r0, [r1, #0x24] - mov r4, r8 -_021F8608: - mov r0, r6 - bl gt2Think - ldr r0, [sp, #8] - ldr r0, [r0, #0xc] - cmp r0, #5 - movge sb, r8 - movlt sb, r7 - cmp sb, #0 - bne _021F8634 - mov r0, r4 - bl msleep -_021F8634: - cmp sb, #0 - beq _021F8608 - ldr r1, [sp, #8] - ldr r0, [r1, #0x24] - sub r0, r0, #1 - str r0, [r1, #0x24] - ldr r1, [sp, #8] - ldr r0, [r1, #0xc] - cmp r0, #5 - streq r1, [r5] - ldr r0, [sp, #8] - ldr r0, [r0, #0x18] - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - arm_func_end gt2Connect - - arm_func_start gt2Send -gt2Send: ; 0x021F866C - stmfd sp!, {r0, r1, r2, r3} - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r0, [r5, #0xc] - mov r4, r3 - cmp r0, #5 - ldmneia sp!, {r3, r4, r5, lr} - addne sp, sp, #0x10 - bxne lr - add r0, sp, #0x14 - add r1, sp, #0x18 - bl gti2MessageCheck - ldr r0, [r5, #0x98] - bl ArrayLength - cmp r0, #0 - beq _021F86D0 - str r4, [sp] - ldr r2, [sp, #0x14] - ldr r3, [sp, #0x18] - mov r0, r5 - mov r1, #0 - bl gti2SendFilterCallback - ldmia sp!, {r3, r4, r5, lr} - add sp, sp, #0x10 - bx lr -_021F86D0: - ldr r1, [sp, #0x14] - ldr r2, [sp, #0x18] - mov r0, r5 - mov r3, r4 - bl gti2Send - ldmia sp!, {r3, r4, r5, lr} - add sp, sp, #0x10 - bx lr - arm_func_end gt2Send - - arm_func_start gt2CloseConnectionHard -gt2CloseConnectionHard: ; 0x021F86F0 - ldr ip, _021F86FC ; =gti2CloseConnection - mov r1, #1 - bx ip - ; .align 2, 0 -_021F86FC: .word gti2CloseConnection - arm_func_end gt2CloseConnectionHard - - arm_func_start gti2CloseAllConnectionsHardMap -gti2CloseAllConnectionsHardMap: ; 0x021F8700 - ldr ip, _021F870C ; =gt2CloseConnectionHard - ldr r0, [r0, #0] - bx ip - ; .align 2, 0 -_021F870C: .word gt2CloseConnectionHard - arm_func_end gti2CloseAllConnectionsHardMap - - arm_func_start gt2CloseAllConnectionsHard -gt2CloseAllConnectionsHard: ; 0x021F8710 - stmfd sp!, {r3, lr} - ldr r1, _021F874C ; =0x0221B3B0 - ldr r2, [r1, #0] - cmp r2, #1 - ldmeqia sp!, {r3, pc} - mov r2, #1 - str r2, [r1, #0] - ldr r0, [r0, #0xc] - ldr r1, _021F8750 ; =gti2CloseAllConnectionsHardMap - mov r2, #0 - bl TableMapSafe - ldr r0, _021F874C ; =0x0221B3B0 - mov r1, #0 - str r1, [r0, #0] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_021F874C: .word Unk_ov4_0221B3B0 -_021F8750: .word gti2CloseAllConnectionsHardMap - arm_func_end gt2CloseAllConnectionsHard - - arm_func_start gt2GetLocalPort -gt2GetLocalPort: ; 0x021F8754 - ldrh r0, [r0, #8] - bx lr - arm_func_end gt2GetLocalPort - - arm_func_start gt2GetOutgoingBufferFreeSpace -gt2GetOutgoingBufferFreeSpace: ; 0x021F875C - ldr r1, [r0, #0x54] - ldr r0, [r0, #0x58] - sub r0, r1, r0 - bx lr - arm_func_end gt2GetOutgoingBufferFreeSpace - - arm_func_start gt2GetSocketSOCKET -gt2GetSocketSOCKET: ; 0x021F876C - ldr r0, [r0, #0] - bx lr - arm_func_end gt2GetSocketSOCKET - - arm_func_start gt2SetUnrecognizedMessageCallback -gt2SetUnrecognizedMessageCallback: ; 0x021F8774 - str r1, [r0, #0x30] - bx lr - arm_func_end gt2SetUnrecognizedMessageCallback - - arm_func_start gt2SetConnectionData -gt2SetConnectionData: ; 0x021F877C - stmfd sp!, {r3, r4, r5, lr} - movs r5, r0 - mov r4, r1 - bne _021F87A0 - ldr r0, _021F87A8 ; =0x02219708 - ldr r1, _021F87AC ; =0x022196FC - ldr r2, _021F87B0 ; =0x022196CC - ldr r3, _021F87B4 ; =0x000001A3 - bl __msl_assertion_failed -_021F87A0: - str r4, [r5, #0x40] - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_021F87A8: .word Unk_ov4_02219708 -_021F87AC: .word Unk_ov4_022196FC -_021F87B0: .word Unk_ov4_022196CC -_021F87B4: .word 0x000001A3 - arm_func_end gt2SetConnectionData - - arm_func_start gt2GetConnectionData -gt2GetConnectionData: ; 0x021F87B8 - stmfd sp!, {r4, lr} - movs r4, r0 - bne _021F87D8 - ldr r0, _021F87E0 ; =0x02219708 - ldr r1, _021F87E4 ; =0x022196FC - ldr r2, _021F87E8 ; =0x022196E4 - ldr r3, _021F87EC ; =0x000001AA - bl __msl_assertion_failed -_021F87D8: - ldr r0, [r4, #0x40] - ldmia sp!, {r4, pc} - ; .align 2, 0 -_021F87E0: .word Unk_ov4_02219708 -_021F87E4: .word Unk_ov4_022196FC -_021F87E8: .word Unk_ov4_022196E4 -_021F87EC: .word 0x000001AA - arm_func_end gt2GetConnectionData - - .data - - - .global Unk_ov4_022196CC -Unk_ov4_022196CC: ; 0x022196CC - .ascii "gt2SetConnectionData" - .space 0x4 - - .global Unk_ov4_022196E4 -Unk_ov4_022196E4: ; 0x022196E4 - .ascii "gt2GetConnectionData" - .space 0x4 - - .global Unk_ov4_022196FC -Unk_ov4_022196FC: ; 0x022196FC - .asciz "gt2Main.c" - .space 0x2 - - .global Unk_ov4_02219708 -Unk_ov4_02219708: ; 0x02219708 - .ascii "connection" - .space 0x2 - - - - .bss - - - .global Unk_ov4_0221B3B0 -Unk_ov4_0221B3B0: ; 0x0221B3B0 - .space 0x4 - diff --git a/subprojects/gamespy/libraries/gt2/asm/gt2message.s b/subprojects/gamespy/libraries/gt2/asm/gt2message.s deleted file mode 100644 index 5d6fcfb05f..0000000000 --- a/subprojects/gamespy/libraries/gt2/asm/gt2message.s +++ /dev/null @@ -1,2098 +0,0 @@ - .include "macros/function.inc" - .include "include/gt2message.inc" - - - - .text - - - arm_func_start gti2UShortFromBuffer -gti2UShortFromBuffer: ; 0x021F87F0 - ldrb r2, [r0, r1] - add r1, r1, #1 - ldrb r1, [r0, r1] - mov r0, r2, lsl #8 - and r0, r0, #0xff00 - mov r0, r0, lsl #0x10 - orr r0, r1, r0, lsr #16 - bx lr - arm_func_end gti2UShortFromBuffer - - arm_func_start gti2UShortToBuffer -gti2UShortToBuffer: ; 0x021F8810 - mov r3, r2, asr #8 - strb r3, [r0, r1] - add r1, r1, #1 - strb r2, [r0, r1] - bx lr - arm_func_end gti2UShortToBuffer - - arm_func_start gti2SNDiff -gti2SNDiff: ; 0x021F8824 - sub r0, r0, r1 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - bx lr - arm_func_end gti2SNDiff - - arm_func_start gti2ConnectionError -gti2ConnectionError: ; 0x021F8834 - stmfd sp!, {r4, r5, r6, lr} - mov r6, r0 - ldr r3, [r6, #0xc] - mov r5, r1 - mov r4, r2 - cmp r3, #5 - bge _021F889C - ldr r1, [r6, #0x10] - cmp r1, #0 - beq _021F8884 - bl gti2ConnectionClosed - mov r2, #0 - mov r0, r6 - mov r1, r5 - mov r3, r2 - bl gti2ConnectedCallback - cmp r0, #0 - bne _021F88C0 - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_021F8884: - cmp r3, #4 - moveq r0, #1 - streq r0, [r6, #0x14] - mov r0, r6 - bl gti2ConnectionClosed - b _021F88C0 -_021F889C: - cmp r3, #7 - beq _021F88C0 - bl gti2ConnectionClosed - mov r0, r6 - mov r1, r4 - bl gti2ClosedCallback - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} -_021F88C0: - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end gti2ConnectionError - - arm_func_start gti2ConnectionCommunicationError -gti2ConnectionCommunicationError: ; 0x021F88C8 - ldr ip, _021F88D8 ; =gti2ConnectionError - mov r1, #7 - mov r2, #2 - bx ip - ; .align 2, 0 -_021F88D8: .word gti2ConnectionError - arm_func_end gti2ConnectionCommunicationError - - arm_func_start gti2ConnectionMemoryError -gti2ConnectionMemoryError: ; 0x021F88DC - stmfd sp!, {r4, lr} - mov r4, r0 - bl gti2SendClosed - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - mov r0, r4 - mov r1, #1 - mov r2, #4 - bl gti2ConnectionError - ldmia sp!, {r4, pc} - arm_func_end gti2ConnectionMemoryError - - arm_func_start gti2HandleESN -gti2HandleESN: ; 0x021F8908 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r4, r0 - ldr r0, [r4, #0x60] - mov r7, r1 - bl ArrayLength - movs r5, r0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - cmp r5, #0 - mov r6, #0 - ble _021F895C -_021F8934: - ldr r0, [r4, #0x60] - mov r1, r6 - bl ArrayNth - ldrh r0, [r0, #8] - mov r1, r7 - bl gti2SNDiff - cmp r0, #0 - addlt r6, r6, #1 - cmplt r6, r5 - blt _021F8934 -_021F895C: - cmp r6, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - cmp r6, #0 - sub r6, r6, #1 - beq _021F898C -_021F8974: - ldr r0, [r4, #0x60] - mov r1, r6 - bl ArrayDeleteAt - cmp r6, #0 - sub r6, r6, #1 - bne _021F8974 -_021F898C: - ldr r0, [r4, #0x60] - bl ArrayLength - movs r6, r0 - bne _021F89AC - mov r0, #0 - str r0, [r4, #0x58] - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_021F89AC: - ldr r0, [r4, #0x60] - mov r1, #0 - bl ArrayNth - cmp r6, #0 - ldr r5, [r0, #0] - mov r7, #0 - ble _021F89EC -_021F89C8: - ldr r0, [r4, #0x60] - mov r1, r7 - bl ArrayNth - ldr r1, [r0, #0] - add r7, r7, #1 - sub r1, r1, r5 - str r1, [r0, #0] - cmp r7, r6 - blt _021F89C8 -_021F89EC: - mov r2, r5 - add r0, r4, #0x50 - mov r1, #0 - bl gti2BufferShorten - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end gti2HandleESN - - arm_func_start gti2HandleAppUnreliable -gti2HandleAppUnreliable: ; 0x021F8A04 - stmfd sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r6, r0 - ldr r0, [r6, #0xc] - mov r5, r1 - cmp r0, #5 - cmpne r0, #6 - mov r4, r2 - addne sp, sp, #4 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, pc} - ldr r0, [r6, #0x9c] - bl ArrayLength - cmp r0, #0 - beq _021F8A6C - mov r1, #0 - mov r0, r6 - mov r2, r5 - mov r3, r4 - str r1, [sp] - bl gti2ReceiveFilterCallback - cmp r0, #0 - movne r0, #1 - add sp, sp, #4 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, r6, pc} -_021F8A6C: - mov r0, r6 - mov r1, r5 - mov r2, r4 - mov r3, #0 - bl gti2ReceivedCallback - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end gti2HandleAppUnreliable - - arm_func_start gti2HandleAppReliable -gti2HandleAppReliable: ; 0x021F8A94 - stmfd sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r6, r0 - ldr r3, [r6, #0xc] - mov r5, r1 - cmp r3, #5 - mov r4, r2 - cmpne r3, #6 - beq _021F8AD0 - bl gti2ConnectionCommunicationError - cmp r0, #0 - bne _021F8B34 - add sp, sp, #4 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, pc} -_021F8AD0: - ldr r0, [r6, #0x9c] - bl ArrayLength - cmp r0, #0 - beq _021F8B10 - mov ip, #1 - mov r0, r6 - mov r2, r5 - mov r3, r4 - mov r1, #0 - str ip, [sp] - bl gti2ReceiveFilterCallback - cmp r0, #0 - movne r0, #1 - add sp, sp, #4 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, r6, pc} -_021F8B10: - mov r0, r6 - mov r1, r5 - mov r2, r4 - mov r3, #1 - bl gti2ReceivedCallback - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, pc} -_021F8B34: - mov r0, #1 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end gti2HandleAppReliable - - arm_func_start gti2HandleClientChallenge -gti2HandleClientChallenge: ; 0x021F8B40 - stmfd sp!, {r4, lr} - sub sp, sp, #0x40 - mov r4, r0 - ldr r3, [r4, #0xc] - cmp r3, #2 - beq _021F8B70 - bl gti2ConnectionCommunicationError - cmp r0, #0 - movne r0, #1 - add sp, sp, #0x40 - moveq r0, #0 - ldmia sp!, {r4, pc} -_021F8B70: - cmp r2, #0x20 - bge _021F8B90 - bl gti2ConnectionCommunicationError - cmp r0, #0 - movne r0, #1 - add sp, sp, #0x40 - moveq r0, #0 - ldmia sp!, {r4, pc} -_021F8B90: - add r0, sp, #0x20 - bl gti2GetResponse - add r0, sp, #0 - bl gti2GetChallenge - add r1, sp, #0 - add r0, r4, #0x68 - bl gti2GetResponse - add r1, sp, #0x20 - add r2, sp, #0 - mov r0, r4 - bl gti2SendServerChallenge - cmp r0, #0 - moveq r0, #0 - movne r0, #3 - strne r0, [r4, #0xc] - movne r0, #1 - add sp, sp, #0x40 - ldmia sp!, {r4, pc} - arm_func_end gti2HandleClientChallenge - - arm_func_start gti2HandleServerChallenge -gti2HandleServerChallenge: ; 0x021F8BD8 - stmfd sp!, {r3, r4, r5, lr} - sub sp, sp, #0x20 - mov r5, r0 - ldr r3, [r5, #0xc] - mov r4, r1 - cmp r3, #0 - beq _021F8C0C - bl gti2ConnectionCommunicationError - cmp r0, #0 - movne r0, #1 - add sp, sp, #0x20 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_021F8C0C: - cmp r2, #0x40 - bge _021F8C2C - bl gti2ConnectionCommunicationError - cmp r0, #0 - movne r0, #1 - add sp, sp, #0x20 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_021F8C2C: - mov r0, r4 - add r1, r5, #0x68 - bl gti2CheckResponse - cmp r0, #0 - bne _021F8C5C - mov r0, r5 - bl gti2ConnectionCommunicationError - cmp r0, #0 - movne r0, #1 - add sp, sp, #0x20 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_021F8C5C: - add r0, sp, #0 - add r1, r4, #0x20 - bl gti2GetResponse - ldr r2, [r5, #0x38] - ldr r3, [r5, #0x3c] - add r1, sp, #0 - mov r0, r5 - bl gti2SendClientResponse - cmp r0, #0 - addeq sp, sp, #0x20 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, [r5, #0x38] - cmp r0, #0 - beq _021F8CA4 - bl DWCi_GsFree - mov r0, #0 - str r0, [r5, #0x38] -_021F8CA4: - mov r0, #1 - str r0, [r5, #0xc] - add sp, sp, #0x20 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end gti2HandleServerChallenge - - arm_func_start gti2HandleClientResponse -gti2HandleClientResponse: ; 0x021F8CB4 - stmfd sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0xc - mov r6, r0 - ldr r3, [r6, #0xc] - mov r5, r1 - mov r4, r2 - cmp r3, #3 - beq _021F8CEC - bl gti2ConnectionCommunicationError - cmp r0, #0 - movne r0, #1 - add sp, sp, #0xc - moveq r0, #0 - ldmia sp!, {r3, r4, r5, r6, pc} -_021F8CEC: - cmp r4, #0x20 - bge _021F8D0C - bl gti2ConnectionCommunicationError - cmp r0, #0 - movne r0, #1 - add sp, sp, #0xc - moveq r0, #0 - ldmia sp!, {r3, r4, r5, r6, pc} -_021F8D0C: - mov r0, r5 - add r1, r6, #0x68 - bl gti2CheckResponse - cmp r0, #0 - bne _021F8D3C - mov r0, r6 - bl gti2ConnectionCommunicationError - cmp r0, #0 - movne r0, #1 - add sp, sp, #0xc - moveq r0, #0 - ldmia sp!, {r3, r4, r5, r6, pc} -_021F8D3C: - ldr r0, [r6, #8] - ldr r0, [r0, #0x20] - cmp r0, #0 - bne _021F8D78 - mov r0, r6 - bl gti2SendClosed - cmp r0, #0 - addeq sp, sp, #0xc - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, pc} - mov r0, r6 - bl gti2ConnectionClosed - add sp, sp, #0xc - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, pc} -_021F8D78: - mov r0, #4 - str r0, [r6, #0xc] - bl current_time - ldr r2, [r6, #0x8c] - add r1, r5, #0x20 - sub r0, r0, r2 - stmia sp, {r0, r1} - sub r0, r4, #0x20 - str r0, [sp, #8] - ldrh r3, [r6, #4] - ldr r0, [r6, #8] - ldr r2, [r6, #0] - mov r1, r6 - bl gti2ConnectAttemptCallback - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end gti2HandleClientResponse - - arm_func_start gti2HandleAccept -gti2HandleAccept: ; 0x021F8DC4 - stmfd sp!, {r3, lr} - ldr r1, [r0, #0xc] - cmp r1, #1 - beq _021F8DE8 - bl gti2ConnectionCommunicationError - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, pc} -_021F8DE8: - mov r1, #0 - mov ip, #5 - mov r2, r1 - mov r3, r1 - str ip, [r0, #0xc] - bl gti2ConnectedCallback - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, pc} - arm_func_end gti2HandleAccept - - arm_func_start gti2HandleReject -gti2HandleReject: ; 0x021F8E10 - stmfd sp!, {r4, r5, r6, lr} - mov r6, r0 - ldr r3, [r6, #0xc] - mov r5, r1 - mov r4, r2 - cmp r3, #1 - beq _021F8E40 - bl gti2ConnectionCommunicationError - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_021F8E40: - bl gti2ConnectionClosed - mov r0, r6 - bl gti2SendClosed - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r2, r5 - mov r3, r4 - mov r1, #2 - bl gti2ConnectedCallback - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end gti2HandleReject - - arm_func_start gti2HandleClose -gti2HandleClose: ; 0x021F8E7C - stmfd sp!, {r4, lr} - mov r4, r0 - bl gti2SendClosed - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldr r0, [r4, #0xc] - mov r1, #2 - cmp r0, #6 - moveq r2, #0 - movne r2, #1 - mov r0, r4 - bl gti2ConnectionError - cmp r0, #0 - moveq r0, #0 - movne r0, #1 - ldmia sp!, {r4, pc} - arm_func_end gti2HandleClose - - arm_func_start gti2DeliverReliableMessage -gti2DeliverReliableMessage: ; 0x021F8EC0 - stmfd sp!, {r3, lr} - ldrh ip, [r0, #0x66] - cmp r1, #0 - add ip, ip, #1 - strh ip, [r0, #0x66] - bne _021F8EF4 - mov r1, r2 - mov r2, r3 - bl gti2HandleAppReliable - cmp r0, #0 - bne _021F8FB8 - mov r0, #0 - ldmia sp!, {r3, pc} -_021F8EF4: - cmp r1, #1 - bne _021F8F18 - mov r1, r2 - mov r2, r3 - bl gti2HandleClientChallenge - cmp r0, #0 - bne _021F8FB8 - mov r0, #0 - ldmia sp!, {r3, pc} -_021F8F18: - cmp r1, #2 - bne _021F8F3C - mov r1, r2 - mov r2, r3 - bl gti2HandleServerChallenge - cmp r0, #0 - bne _021F8FB8 - mov r0, #0 - ldmia sp!, {r3, pc} -_021F8F3C: - cmp r1, #3 - bne _021F8F60 - mov r1, r2 - mov r2, r3 - bl gti2HandleClientResponse - cmp r0, #0 - bne _021F8FB8 - mov r0, #0 - ldmia sp!, {r3, pc} -_021F8F60: - cmp r1, #4 - bne _021F8F7C - bl gti2HandleAccept - cmp r0, #0 - bne _021F8FB8 - mov r0, #0 - ldmia sp!, {r3, pc} -_021F8F7C: - cmp r1, #5 - bne _021F8FA0 - mov r1, r2 - mov r2, r3 - bl gti2HandleReject - cmp r0, #0 - bne _021F8FB8 - mov r0, #0 - ldmia sp!, {r3, pc} -_021F8FA0: - cmp r1, #6 - bne _021F8FB8 - bl gti2HandleClose - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, pc} -_021F8FB8: - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end gti2DeliverReliableMessage - - arm_func_start gti2IncomingBufferMessageCompare -gti2IncomingBufferMessageCompare: ; 0x021F8FC0 - ldr ip, _021F8FD0 ; =gti2SNDiff - ldrh r0, [r0, #0xc] - ldrh r1, [r1, #0xc] - bx ip - ; .align 2, 0 -_021F8FD0: .word gti2SNDiff - arm_func_end gti2IncomingBufferMessageCompare - - arm_func_start gti2BufferIncomingMessage -gti2BufferIncomingMessage: ; 0x021F8FD4 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x10 - mov sb, r0 - ldr r0, [sb, #0x5c] - mov r8, r1 - mov r7, r2 - mov r6, r3 - ldr r5, [sp, #0x34] - bl ArrayLength - mov r4, r0 - cmp r4, #0 - mov sl, #0 - ble _021F9050 -_021F9008: - ldr r0, [sb, #0x5c] - mov r1, sl - bl ArrayNth - ldrh r0, [r0, #0xc] - cmp r0, r7 - bne _021F9034 - mov r0, #0 - str r0, [r5, #0] - add sp, sp, #0x10 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_021F9034: - mov r1, r7 - bl gti2SNDiff - cmp r0, #0 - bgt _021F9050 - add sl, sl, #1 - cmp sl, r4 - blt _021F9008 -_021F9050: - add r0, sb, #0x44 - bl gti2GetBufferFreeSpace - ldr r2, [sp, #0x30] - cmp r0, r2 - movlt r0, #1 - addlt sp, sp, #0x10 - strlt r0, [r5] - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldr r0, [sb, #0x4c] - add r1, sp, #0 - str r2, [sp, #4] - str r8, [sp, #8] - strh r7, [sp, #0xc] - str r0, [sp] - ldr r0, [sb, #0x5c] - ldr r2, _021F9184 ; =gti2IncomingBufferMessageCompare - bl ArrayInsertSorted - ldr r0, [sb, #0x5c] - bl ArrayLength - add r1, r4, #1 - cmp r1, r0 - movne r0, #1 - addne sp, sp, #0x10 - strne r0, [r5] - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldr r2, [sp, #0x30] - mov r1, r6 - add r0, sb, #0x44 - bl gti2BufferWriteData - cmp r4, #0 - bne _021F90F8 - sub r0, r7, #1 - mov r2, r0, lsl #0x10 - ldrh r1, [sb, #0x66] - mov r0, sb - mov r2, r2, lsr #0x10 - bl gti2SendNack - cmp r0, #0 - bne _021F9170 - add sp, sp, #0x10 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_021F90F8: - ldr r0, [sb, #0x5c] - mov r1, r4 - bl ArrayNth - ldrh r0, [r0, #0xc] - cmp r0, r7 - bne _021F9170 - ldr r0, [sb, #0x5c] - sub r1, r4, #1 - bl ArrayNth - mov r4, r0 - ldrh r1, [r4, #0xc] - mov r0, r7 - bl gti2SNDiff - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #1 - bls _021F9170 - ldrh r1, [r4, #0xc] - sub r0, r7, #1 - mov r2, r0, lsl #0x10 - add r0, r1, #1 - mov r1, r0, lsl #0x10 - mov r0, sb - mov r1, r1, lsr #0x10 - mov r2, r2, lsr #0x10 - bl gti2SendNack - cmp r0, #0 - addeq sp, sp, #0x10 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_021F9170: - mov r0, #0 - str r0, [r5, #0] - mov r0, #1 - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ; .align 2, 0 -_021F9184: .word gti2IncomingBufferMessageCompare - arm_func_end gti2BufferIncomingMessage - - arm_func_start gti2RemoveHoldMessage -gti2RemoveHoldMessage: ; 0x021F9188 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov sb, r0 - ldr r0, [sb, #0x5c] - ldmia r1, {r4, r5} - mov r1, r2 - mov r8, #0 - bl ArrayDeleteAt - ldr r0, [sb, #0x5c] - bl ArrayLength - mov r6, r0 - cmp r6, #0 - mov r7, r8 - ble _021F91F8 -_021F91BC: - ldr r0, [sb, #0x5c] - mov r1, r7 - bl ArrayNth - ldr r1, [r0, #0] - cmp r1, r4 - ble _021F91EC - sub r1, r1, r5 - str r1, [r0, #0] - ldr r0, [r0, #4] - add r0, r1, r0 - cmp r8, r0 - movle r8, r0 -_021F91EC: - add r7, r7, #1 - cmp r7, r6 - blt _021F91BC -_021F91F8: - mov r1, r4 - mov r2, r5 - add r0, sb, #0x44 - bl gti2BufferShorten - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end gti2RemoveHoldMessage - - arm_func_start gti2DeliverHoldMessages -gti2DeliverHoldMessages: ; 0x021F920C - stmfd sp!, {r4, r5, r6, lr} - mov r6, r0 -_021F9214: - ldr r0, [r6, #0x5c] - bl ArrayLength - subs r5, r0, #1 - bmi _021F9284 -_021F9224: - ldr r0, [r6, #0x5c] - mov r1, r5 - bl ArrayNth - mov r4, r0 - ldrh r1, [r4, #0xc] - ldrh r0, [r6, #0x66] - cmp r1, r0 - bne _021F927C - ldr ip, [r6, #0x44] - ldr r1, [r4, #8] - ldmia r4, {r2, r3} - mov r0, r6 - add r2, ip, r2 - bl gti2DeliverReliableMessage - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl gti2RemoveHoldMessage - b _021F9214 -_021F927C: - subs r5, r5, #1 - bpl _021F9224 -_021F9284: - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end gti2DeliverHoldMessages - - arm_func_start gti2SetPendingAck -gti2SetPendingAck: ; 0x021F928C - stmfd sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4, #0x90] - cmp r0, #0 - ldmneia sp!, {r4, pc} - mov r0, #1 - str r0, [r4, #0x90] - bl current_time - str r0, [r4, #0x94] - ldmia sp!, {r4, pc} - arm_func_end gti2SetPendingAck - - arm_func_start gti2HandleReliableMessage -gti2HandleReliableMessage: ; 0x021F92B4 - stmfd sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0xc - mov r6, r3 - mov r4, r0 - mov r8, r1 - mov r7, r2 - cmp r6, #7 - bge _021F92EC - bl gti2ConnectionCommunicationError - cmp r0, #0 - movne r0, #1 - add sp, sp, #0xc - moveq r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_021F92EC: - mov r0, r7 - mov r1, #3 - bl gti2UShortFromBuffer - mov r5, r0 - mov r0, r7 - mov r1, #5 - bl gti2UShortFromBuffer - mov r1, r0 - mov r0, r4 - bl gti2HandleESN - cmp r0, #0 - addeq sp, sp, #0xc - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} - ldrh r1, [r4, #0x66] - cmp r5, r1 - bne _021F9378 - mov r0, r4 - bl gti2SetPendingAck - mov r0, r4 - mov r1, r8 - add r2, r7, #7 - sub r3, r6, #7 - bl gti2DeliverReliableMessage - cmp r0, #0 - addeq sp, sp, #0xc - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} - mov r0, r4 - bl gti2DeliverHoldMessages - cmp r0, #0 - movne r0, #1 - add sp, sp, #0xc - moveq r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_021F9378: - mov r0, r5 - bl gti2SNDiff - cmp r0, #0 - bge _021F939C - mov r0, r4 - bl gti2SetPendingAck - add sp, sp, #0xc - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_021F939C: - sub r0, r6, #7 - str r0, [sp] - add ip, sp, #8 - mov r0, r4 - mov r1, r8 - mov r2, r5 - add r3, r7, #7 - str ip, [sp, #4] - bl gti2BufferIncomingMessage - cmp r0, #0 - addeq sp, sp, #0xc - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} - ldr r0, [sp, #8] - cmp r0, #0 - beq _021F93F4 - mov r0, r4 - bl gti2ConnectionMemoryError - cmp r0, #0 - addeq sp, sp, #0xc - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} -_021F93F4: - mov r0, #1 - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - arm_func_end gti2HandleReliableMessage - - arm_func_start gti2HandleAck -gti2HandleAck: ; 0x021F9400 - stmfd sp!, {r4, lr} - mov r4, r0 - cmp r2, #2 - beq _021F9424 - bl gti2ConnectionCommunicationError - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r4, pc} -_021F9424: - mov r0, r1 - mov r1, #0 - bl gti2UShortFromBuffer - mov r1, r0 - mov r0, r4 - bl gti2HandleESN - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r4, pc} - arm_func_end gti2HandleAck - - arm_func_start gti2HandleNack -gti2HandleNack: ; 0x021F944C - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r7, r1 - mov r4, r0 - mov r0, r7 - mov r1, #0 - mov r5, r2 - bl gti2UShortFromBuffer - mov r6, r0 - cmp r5, #2 - moveq r7, r6 - beq _021F94AC - cmp r5, #4 - bne _021F9494 - mov r0, r7 - mov r1, #2 - bl gti2UShortFromBuffer - mov r7, r0 - b _021F94AC -_021F9494: - mov r0, r4 - bl gti2ConnectionCommunicationError - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_021F94AC: - ldr r0, [r4, #0x60] - bl ArrayLength - mov r8, r0 - cmp r8, #0 - mov sb, #0 - ble _021F9520 -_021F94C4: - ldr r0, [r4, #0x60] - mov r1, sb - bl ArrayNth - mov r5, r0 - ldrh r0, [r5, #8] - mov r1, r6 - bl gti2SNDiff - cmp r0, #0 - blt _021F9514 - ldrh r0, [r5, #8] - mov r1, r7 - bl gti2SNDiff - cmp r0, #0 - bgt _021F9514 - mov r0, r4 - mov r1, r5 - bl gti2ResendMessage - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_021F9514: - add sb, sb, #1 - cmp sb, r8 - blt _021F94C4 -_021F9520: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end gti2HandleNack - - arm_func_start gti2HandlePing -gti2HandlePing: ; 0x021F9528 - ldr ip, _021F9530 ; =gti2SendPong - bx ip - ; .align 2, 0 -_021F9530: .word gti2SendPong - arm_func_end gti2HandlePing - - arm_func_start gti2HandlePong -gti2HandlePong: ; 0x021F9534 - stmfd sp!, {r3, r4, r5, lr} - mov r4, r0 - ldr r0, [r4, #0x34] - mov r5, r1 - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r2, #8 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} - ldr r1, _021F95C4 ; =0x0221972C - mov r0, r5 - mov r2, #4 - bl memcmp - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} - ldrb r1, [r5, #4] - ldrb r0, [r5, #5] - add r2, sp, #0 - strb r1, [r2] - strb r0, [r2, #1] - ldrb r1, [r5, #6] - ldrb r0, [r5, #7] - strb r1, [r2, #2] - strb r0, [r2, #3] - bl current_time - mov r2, r0 - ldr r1, [sp] - mov r0, r4 - sub r1, r2, r1 - bl gti2PingCallback - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_021F95C4: .word Unk_ov4_0221972C - arm_func_end gti2HandlePong - - arm_func_start gti2HandleClosed -gti2HandleClosed: ; 0x021F95C8 - stmfd sp!, {r3, lr} - ldr r1, [r0, #0xc] - cmp r1, #7 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - cmp r1, #6 - moveq r2, #0 - movne r2, #1 - mov r1, #2 - bl gti2ConnectionError - cmp r0, #0 - moveq r0, #0 - movne r0, #1 - ldmia sp!, {r3, pc} - arm_func_end gti2HandleClosed - - arm_func_start gti2HandleUnreliableMessage -gti2HandleUnreliableMessage: ; 0x021F9600 - stmfd sp!, {r3, lr} - cmp r1, #0x64 - sub ip, r3, #3 - bne _021F962C - add r1, r2, #3 - mov r2, ip - bl gti2HandleAck - cmp r0, #0 - bne _021F96B0 - mov r0, #0 - ldmia sp!, {r3, pc} -_021F962C: - cmp r1, #0x65 - bne _021F9650 - add r1, r2, #3 - mov r2, ip - bl gti2HandleNack - cmp r0, #0 - bne _021F96B0 - mov r0, #0 - ldmia sp!, {r3, pc} -_021F9650: - cmp r1, #0x66 - bne _021F9674 - mov r1, r2 - mov r2, r3 - bl gti2HandlePing - cmp r0, #0 - bne _021F96B0 - mov r0, #0 - ldmia sp!, {r3, pc} -_021F9674: - cmp r1, #0x67 - bne _021F9698 - add r1, r2, #3 - mov r2, ip - bl gti2HandlePong - cmp r0, #0 - bne _021F96B0 - mov r0, #0 - ldmia sp!, {r3, pc} -_021F9698: - cmp r1, #0x68 - bne _021F96B0 - bl gti2HandleClosed - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, pc} -_021F96B0: - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end gti2HandleUnreliableMessage - - arm_func_start gti2HandleMessage -gti2HandleMessage: ; 0x021F96B8 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x18 - ldr r5, [sp, #0x38] - mov r6, r3 - mov r8, r1 - mov r7, r2 - mov r1, r6 - mov r2, r5 - mov sb, r0 - bl gti2SocketFindConnection - str r0, [sp, #0x14] - ldr r0, [sb, #0x2c] - cmp r0, #0 - beq _021F9724 - mov r0, #0 - stmia sp, {r0, r8} - str r7, [sp, #8] - str r0, [sp, #0xc] - ldr r1, [sp, #0x14] - mov r0, sb - mov r2, r6 - mov r3, r5 - bl gti2DumpCallback - cmp r0, #0 - addeq sp, sp, #0x18 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_021F9724: - cmp r7, #2 - ble _021F9748 - ldr r1, _021F9964 ; =0x02219734 - mov r0, r8 - mov r2, #2 - bl memcmp - cmp r0, #0 - moveq r4, #1 - beq _021F974C -_021F9748: - mov r4, #0 -_021F974C: - ldr r0, [sp, #0x14] - cmp r0, #0 - bne _021F9850 - add ip, sp, #0x10 - mov r0, sb - mov r1, r6 - mov r2, r5 - mov r3, r8 - stmia sp, {r7, ip} - bl gti2UnrecognizedMessageCallback - cmp r0, #0 - addeq sp, sp, #0x18 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldr r0, [sp, #0x10] - cmp r0, #0 - addne sp, sp, #0x18 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - cmp r4, #0 - beq _021F97AC - ldrb r0, [r8, #2] - cmp r0, #1 - beq _021F97EC -_021F97AC: - cmp r4, #0 - beq _021F97C0 - ldrb r0, [r8, #2] - cmp r0, #0x68 - beq _021F97E0 -_021F97C0: - mov r0, sb - mov r1, r6 - mov r2, r5 - bl gti2SendClosedOnSocket - cmp r0, #0 - addeq sp, sp, #0x18 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_021F97E0: - add sp, sp, #0x18 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_021F97EC: - ldr r0, [sb, #0x20] - cmp r0, #0 - addeq sp, sp, #0x18 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - add r1, sp, #0x14 - mov r0, sb - mov r2, r6 - mov r3, r5 - bl gti2NewIncomingConnection - cmp r0, #0 - beq _021F9850 - cmp r0, #5 - beq _021F9844 - mov r0, sb - mov r1, r6 - mov r2, r5 - bl gti2SendClosedOnSocket - cmp r0, #0 - addeq sp, sp, #0x18 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_021F9844: - add sp, sp, #0x18 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_021F9850: - ldr r5, [sp, #0x14] - ldr r0, [r5, #0xc] - cmp r0, #7 - bne _021F9898 - cmp r4, #0 - beq _021F9874 - ldrb r0, [r8, #2] - cmp r0, #0x68 - beq _021F988C -_021F9874: - mov r0, r5 - bl gti2SendClosed - cmp r0, #0 - addeq sp, sp, #0x18 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_021F988C: - add sp, sp, #0x18 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_021F9898: - cmp r4, #0 - beq _021F98C8 - cmp r7, #4 - blt _021F98C8 - ldr r1, _021F9964 ; =0x02219734 - add r0, r8, #2 - mov r2, #2 - bl memcmp - cmp r0, #0 - addeq r8, r8, #2 - subeq r7, r7, #2 - moveq r4, #0 -_021F98C8: - cmp r4, #0 - bne _021F98F4 - mov r0, r5 - mov r1, r8 - mov r2, r7 - bl gti2HandleAppUnreliable - cmp r0, #0 - movne r0, #1 - add sp, sp, #0x18 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_021F98F4: - ldrb r1, [r8, #2] - cmp r1, #0 - bge _021F991C - mov r0, r5 - bl gti2ConnectionCommunicationError - cmp r0, #0 - movne r0, #1 - add sp, sp, #0x18 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_021F991C: - cmp r1, #8 - mov r0, r5 - mov r2, r8 - bge _021F9948 - mov r3, r7 - bl gti2HandleReliableMessage - cmp r0, #0 - movne r0, #1 - add sp, sp, #0x18 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_021F9948: - mov r3, r7 - bl gti2HandleUnreliableMessage - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ; .align 2, 0 -_021F9964: .word Unk_ov4_02219734 - arm_func_end gti2HandleMessage - - arm_func_start gti2HandleConnectionReset -gti2HandleConnectionReset: ; 0x021F9968 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x10 - mov r7, r0 - mov r6, r1 - mov r5, r2 - bl gti2SocketFindConnection - ldr r1, [r7, #0x2c] - mov r4, r0 - cmp r1, #0 - beq _021F99CC - mov r0, #1 - str r0, [sp] - mov ip, #0 - str ip, [sp, #4] - str ip, [sp, #8] - mov r0, r7 - mov r1, r4 - mov r2, r6 - mov r3, r5 - str ip, [sp, #0xc] - bl gti2DumpCallback - cmp r0, #0 - addeq sp, sp, #0x10 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} -_021F99CC: - cmp r4, #0 - addeq sp, sp, #0x10 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r4, #0xc] - cmp r0, #0 - bne _021F9A3C - ldr r0, [r4, #0x20] - cmp r0, #0 - beq _021F9A0C - bl current_time - ldr r2, [r4, #0x1c] - ldr r1, [r4, #0x20] - sub r0, r0, r2 - cmp r0, r1 - bhs _021F9A18 -_021F9A0C: - add sp, sp, #0x10 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_021F9A18: - mov r0, r4 - mov r1, #6 - mov r2, #1 - bl gti2ConnectionError - cmp r0, #0 - bne _021F9A5C - add sp, sp, #0x10 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_021F9A3C: - mov r0, r4 - mov r1, #2 - mov r2, #1 - bl gti2ConnectionError - cmp r0, #0 - addeq sp, sp, #0x10 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} -_021F9A5C: - mov r0, #1 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end gti2HandleConnectionReset - - arm_func_start gti2ReceiveMessages -gti2ReceiveMessages: ; 0x021F9A68 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x5f0 - mov sl, r0 - ldr r0, [sl] - bl CanReceiveOnSocket - cmp r0, #0 - beq _021F9B88 - mvn r5, #0xe - sub r4, r5, #0x14 - add r6, r5, #0xe - add r7, sp, #0x14 - mov sb, #8 - add r8, sp, #0xc - add fp, sp, #8 -_021F9AA0: - str sb, [sp, #8] - stmia sp, {r8, fp} - ldr r0, [sl] - ldr r2, _021F9B94 ; =0x000005DC - mov r1, r7 - mov r3, #0 - bl recvfrom - mov r2, r0 - cmp r2, r6 - bne _021F9B34 - ldr r0, [sl] - bl GOAGetLastError - cmp r0, r5 - bne _021F9B18 - ldrh ip, [sp, #0xe] - ldr r1, [sp, #0x10] - mov r0, sl - mov r2, ip, asr #8 - and r3, r2, #0xff - mov r2, ip, lsl #8 - and r2, r2, #0xff00 - orr r2, r3, r2 - mov r2, r2, lsl #0x10 - mov r2, r2, lsr #0x10 - bl gti2HandleConnectionReset - cmp r0, #0 - bne _021F9B78 - add sp, sp, #0x5f0 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F9B18: - cmp r0, r4 - beq _021F9B78 - mov r0, sl - bl gti2SocketError - add sp, sp, #0x5f0 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F9B34: - ldrh ip, [sp, #0xe] - mov r0, sl - mov r1, r7 - mov r3, ip, asr #8 - mov ip, ip, lsl #8 - and r3, r3, #0xff - and ip, ip, #0xff00 - orr r3, r3, ip - mov r3, r3, lsl #0x10 - mov r3, r3, lsr #0x10 - str r3, [sp] - ldr r3, [sp, #0x10] - bl gti2HandleMessage - cmp r0, #0 - addeq sp, sp, #0x5f0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021F9B78: - ldr r0, [sl] - bl CanReceiveOnSocket - cmp r0, #0 - bne _021F9AA0 -_021F9B88: - mov r0, #1 - add sp, sp, #0x5f0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_021F9B94: .word 0x000005DC - arm_func_end gti2ReceiveMessages - - arm_func_start gti2StoreOutgoingReliableMessageInfo -gti2StoreOutgoingReliableMessageInfo: ; 0x021F9B98 - stmfd sp!, {r3, r4, r5, lr} - sub sp, sp, #0x10 - add r4, sp, #0 - mov r3, #0 - mov r5, r0 - str r3, [r4, #0] - str r3, [r4, #4] - str r3, [r4, #8] - str r3, [r4, #0xc] - ldr r0, [r5, #0x58] - str r0, [sp] - str r2, [sp, #4] - strh r1, [sp, #8] - bl current_time - str r0, [sp, #0xc] - ldr r0, [r5, #0x60] - bl ArrayLength - mov r4, r0 - ldr r0, [r5, #0x60] - add r1, sp, #0 - bl ArrayAppend - ldr r0, [r5, #0x60] - bl ArrayLength - add r1, r4, #1 - cmp r1, r0 - moveq r0, #1 - movne r0, #0 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end gti2StoreOutgoingReliableMessageInfo - - arm_func_start gti2BeginReliableMessage -gti2BeginReliableMessage: ; 0x021F9C0C - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r5, r2 - add r0, r7, #0x50 - mov r6, r1 - mov r4, r3 - bl gti2GetBufferFreeSpace - cmp r0, r5 - bge _021F9C4C - mov r0, r7 - bl gti2ConnectionMemoryError - cmp r0, #0 - moveq r0, #0 - movne r0, #1 - strne r0, [r4] - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_021F9C4C: - ldrh r1, [r7, #0x64] - mov r0, r7 - mov r2, r5 - bl gti2StoreOutgoingReliableMessageInfo - cmp r0, #0 - bne _021F9C80 - mov r0, r7 - bl gti2ConnectionMemoryError - cmp r0, #0 - moveq r0, #0 - movne r0, #1 - strne r0, [r4] - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_021F9C80: - ldr r1, _021F9CCC ; =0x02219734 - add r0, r7, #0x50 - mov r2, #2 - bl gti2BufferWriteData - add r0, r7, #0x50 - and r1, r6, #0xff - bl gti2BufferWriteByte - ldrh r1, [r7, #0x64] - add r0, r7, #0x50 - add r2, r1, #1 - strh r2, [r7, #0x64] - bl gti2BufferWriteUShort - ldrh r1, [r7, #0x66] - add r0, r7, #0x50 - bl gti2BufferWriteUShort - mov r0, #0 - str r0, [r4, #0] - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021F9CCC: .word Unk_ov4_02219734 - arm_func_end gti2BeginReliableMessage - - arm_func_start gti2EndReliableMessage -gti2EndReliableMessage: ; 0x021F9CD0 - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r0, [r5, #0x60] - bl ArrayLength - mov r4, r0 - cmp r4, #0 - bgt _021F9D00 - ldr r0, _021F9D34 ; =0x02219738 - ldr r1, _021F9D38 ; =0x02219740 - ldr r2, _021F9D3C ; =0x02219714 - ldr r3, _021F9D40 ; =0x00000475 - bl __msl_assertion_failed -_021F9D00: - ldr r0, [r5, #0x60] - sub r1, r4, #1 - bl ArrayNth - ldmia r0, {r1, r2} - ldr r3, [r5, #0x50] - mov r0, r5 - add r1, r3, r1 - bl gti2ConnectionSendData - cmp r0, #0 - mov r0, #0 - strne r0, [r5, #0x90] - movne r0, #1 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_021F9D34: .word Unk_ov4_02219738 -_021F9D38: .word Unk_ov4_02219740 -_021F9D3C: .word Unk_ov4_02219714 -_021F9D40: .word 0x00000475 - arm_func_end gti2EndReliableMessage - - arm_func_start gti2SendAppReliable -gti2SendAppReliable: ; 0x021F9D44 - stmfd sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r4, r2 - mov r5, r1 - add r3, sp, #0 - add r2, r4, #7 - mov r1, #0 - mov r6, r0 - bl gti2BeginReliableMessage - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, pc} - ldr r0, [sp] - cmp r0, #0 - addne sp, sp, #4 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, pc} - mov r1, r5 - mov r2, r4 - add r0, r6, #0x50 - bl gti2BufferWriteData - mov r0, r6 - bl gti2EndReliableMessage - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end gti2SendAppReliable - - arm_func_start gti2SendClientChallenge -gti2SendClientChallenge: ; 0x021F9DB8 - stmfd sp!, {r3, r4, r5, lr} - mov r4, r1 - add r3, sp, #0 - mov r1, #1 - mov r2, #0x27 - mov r5, r0 - bl gti2BeginReliableMessage - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, [sp] - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} - mov r1, r4 - add r0, r5, #0x50 - mov r2, #0x20 - bl gti2BufferWriteData - mov r0, r5 - bl gti2EndReliableMessage - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end gti2SendClientChallenge - - arm_func_start gti2SendServerChallenge -gti2SendServerChallenge: ; 0x021F9E18 - stmfd sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r5, r1 - mov r4, r2 - add r3, sp, #0 - mov r1, #2 - mov r2, #0x47 - mov r6, r0 - bl gti2BeginReliableMessage - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, pc} - ldr r0, [sp] - cmp r0, #0 - addne sp, sp, #4 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, pc} - mov r1, r5 - add r0, r6, #0x50 - mov r2, #0x20 - bl gti2BufferWriteData - mov r1, r4 - add r0, r6, #0x50 - mov r2, #0x20 - bl gti2BufferWriteData - mov r0, r6 - bl gti2EndReliableMessage - cmp r0, #0 - ldrne r1, [r6, #0x88] - moveq r0, #0 - movne r0, #1 - strne r1, [r6, #0x8c] - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end gti2SendServerChallenge - - arm_func_start gti2SendClientResponse -gti2SendClientResponse: ; 0x021F9EA4 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r4, r3 - mov r6, r1 - mov r5, r2 - add r3, sp, #0 - add r2, r4, #0x27 - mov r1, #3 - mov r7, r0 - bl gti2BeginReliableMessage - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [sp] - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r1, r6 - add r0, r7, #0x50 - mov r2, #0x20 - bl gti2BufferWriteData - mov r1, r5 - mov r2, r4 - add r0, r7, #0x50 - bl gti2BufferWriteData - mov r0, r7 - bl gti2EndReliableMessage - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end gti2SendClientResponse - - arm_func_start gti2SendAccept -gti2SendAccept: ; 0x021F9F1C - stmfd sp!, {r3, r4, lr} - sub sp, sp, #4 - add r3, sp, #0 - mov r1, #4 - mov r2, #7 - mov r4, r0 - bl gti2BeginReliableMessage - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, pc} - ldr r0, [sp] - cmp r0, #0 - addne sp, sp, #4 - movne r0, #1 - ldmneia sp!, {r3, r4, pc} - mov r0, r4 - bl gti2EndReliableMessage - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - arm_func_end gti2SendAccept - - arm_func_start gti2SendReject -gti2SendReject: ; 0x021F9F78 - stmfd sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r4, r2 - mov r5, r1 - add r3, sp, #0 - add r2, r4, #7 - mov r1, #5 - mov r6, r0 - bl gti2BeginReliableMessage - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, pc} - ldr r0, [sp] - cmp r0, #0 - addne sp, sp, #4 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, pc} - mov r1, r5 - mov r2, r4 - add r0, r6, #0x50 - bl gti2BufferWriteData - mov r0, r6 - bl gti2EndReliableMessage - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end gti2SendReject - - arm_func_start gti2SendClose -gti2SendClose: ; 0x021F9FEC - stmfd sp!, {r3, r4, lr} - sub sp, sp, #4 - add r3, sp, #0 - mov r1, #6 - mov r2, #7 - mov r4, r0 - bl gti2BeginReliableMessage - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, pc} - ldr r0, [sp] - cmp r0, #0 - addne sp, sp, #4 - movne r0, #1 - ldmneia sp!, {r3, r4, pc} - mov r0, r4 - bl gti2EndReliableMessage - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - arm_func_end gti2SendClose - - arm_func_start gti2SendKeepAlive -gti2SendKeepAlive: ; 0x021FA048 - stmfd sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r1, #7 - add r3, sp, #0 - mov r2, r1 - mov r4, r0 - bl gti2BeginReliableMessage - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, pc} - ldr r0, [sp] - cmp r0, #0 - addne sp, sp, #4 - movne r0, #1 - ldmneia sp!, {r3, r4, pc} - mov r0, r4 - bl gti2EndReliableMessage - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - arm_func_end gti2SendKeepAlive - - arm_func_start gti2SendAppUnreliable -gti2SendAppUnreliable: ; 0x021FA0A4 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r7, r2 - mov sb, r0 - mov r8, r1 - cmp r7, #2 - blt _021FA0D4 - ldr r1, _021FA168 ; =0x02219734 - mov r0, r8 - mov r2, #2 - bl memcmp - cmp r0, #0 - beq _021FA0F4 -_021FA0D4: - mov r0, sb - mov r1, r8 - mov r2, r7 - bl gti2ConnectionSendData - cmp r0, #0 - moveq r0, #0 - movne r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_021FA0F4: - add r6, r7, #2 - add r0, sb, #0x50 - bl gti2GetBufferFreeSpace - cmp r0, r6 - movlt r0, #1 - ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldr r1, _021FA168 ; =0x02219734 - add r0, sb, #0x50 - ldr r5, [sb, #0x50] - ldr r4, [sb, #0x58] - mov r2, #2 - bl gti2BufferWriteData - mov r1, r8 - mov r2, r7 - add r0, sb, #0x50 - bl gti2BufferWriteData - mov r0, sb - mov r2, r6 - add r1, r5, r4 - bl gti2ConnectionSendData - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r2, r6 - add r0, sb, #0x50 - mvn r1, #0 - bl gti2BufferShorten - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ; .align 2, 0 -_021FA168: .word Unk_ov4_02219734 - arm_func_end gti2SendAppUnreliable - - arm_func_start gti2SendAck -gti2SendAck: ; 0x021FA16C - stmfd sp!, {r4, lr} - sub sp, sp, #8 - ldr r1, _021FA1CC ; =0x02219734 - mov r4, r0 - ldrb r3, [r1] - ldrb r2, [r1, #1] - add r0, sp, #0 - mov r1, #0x64 - strb r1, [sp, #2] - strb r3, [r0] - strb r2, [r0, #1] - ldrh r2, [r4, #0x66] - mov r1, #3 - bl gti2UShortToBuffer - add r1, sp, #0 - mov r0, r4 - mov r2, #5 - bl gti2ConnectionSendData - cmp r0, #0 - mov r0, #0 - strne r0, [r4, #0x90] - movne r0, #1 - add sp, sp, #8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_021FA1CC: .word Unk_ov4_02219734 - arm_func_end gti2SendAck - - arm_func_start gti2SendNack -gti2SendNack: ; 0x021FA1D0 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - ldr r3, _021FA258 ; =0x02219734 - mov r4, r1 - ldrb lr, [r3] - ldrb ip, [r3, #1] - mov r5, r0 - add r0, sp, #0 - mov r7, r2 - mov r3, #0x65 - mov r2, r4 - mov r6, #0 - mov r1, #3 - strb lr, [r0] - strb ip, [r0, #1] - strb r3, [sp, #2] - bl gti2UShortToBuffer - cmp r4, r7 - add r6, r6, #5 - beq _021FA234 - add r0, sp, #0 - mov r1, r6 - mov r2, r7 - bl gti2UShortToBuffer - add r6, r6, #2 -_021FA234: - add r1, sp, #0 - mov r0, r5 - mov r2, r6 - bl gti2ConnectionSendData - cmp r0, #0 - moveq r0, #0 - movne r0, #1 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021FA258: .word Unk_ov4_02219734 - arm_func_end gti2SendNack - - arm_func_start gti2SendPong -gti2SendPong: ; 0x021FA25C - ldr ip, _021FA26C ; =gti2ConnectionSendData - mov r3, #0x67 - strb r3, [r1, #2] - bx ip - ; .align 2, 0 -_021FA26C: .word gti2ConnectionSendData - arm_func_end gti2SendPong - - arm_func_start gti2SendClosed -gti2SendClosed: ; 0x021FA270 - ldr ip, _021FA288 ; =gti2SendClosedOnSocket - mov r1, r0 - ldrh r2, [r1, #4] - ldr r0, [r1, #8] - ldr r1, [r1, #0] - bx ip - ; .align 2, 0 -_021FA288: .word gti2SendClosedOnSocket - arm_func_end gti2SendClosed - - arm_func_start gti2SendClosedOnSocket -gti2SendClosedOnSocket: ; 0x021FA28C - stmfd sp!, {r4, lr} - sub sp, sp, #8 - ldr lr, _021FA2D4 ; =0x02219734 - mov ip, #0x68 - ldrb r4, [lr] - ldrb lr, [lr, #1] - add r3, sp, #4 - strb ip, [sp, #6] - strb r4, [r3] - strb lr, [r3, #1] - mov ip, #3 - str ip, [sp] - bl gti2SocketSend - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - add sp, sp, #8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_021FA2D4: .word Unk_ov4_02219734 - arm_func_end gti2SendClosedOnSocket - - arm_func_start gti2ResendMessage -gti2ResendMessage: ; 0x021FA2D8 - stmfd sp!, {r3, r4, r5, lr} - mov r4, r0 - mov r5, r1 - ldr r1, [r5, #0] - ldrh r2, [r4, #0x66] - ldr r0, [r4, #0x50] - add r1, r1, #5 - bl gti2UShortToBuffer - ldr r3, [r4, #0x50] - ldmia r5, {r1, r2} - mov r0, r4 - add r1, r3, r1 - bl gti2ConnectionSendData - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, [r4, #0x88] - str r0, [r5, #0xc] - ldr r0, [r5, #0] - ldr r1, [r4, #0x50] - add r0, r0, #2 - ldrb r0, [r1, r0] - cmp r0, #2 - ldreq r0, [r4, #0x88] - streq r0, [r4, #0x8c] - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end gti2ResendMessage - - arm_func_start gti2Send -gti2Send: ; 0x021FA344 - stmfd sp!, {r3, lr} - cmp r3, #0 - beq _021FA358 - bl gti2SendAppReliable - ldmia sp!, {r3, pc} -_021FA358: - bl gti2SendAppUnreliable - ldmia sp!, {r3, pc} - arm_func_end gti2Send - - .data - - - .global Unk_ov4_02219714 -Unk_ov4_02219714: ; 0x02219714 - .ascii "gti2EndReliableMessage" - .space 0x2 - - .global Unk_ov4_0221972C -Unk_ov4_0221972C: ; 0x0221972C - .ascii "time" - .space 0x4 - - .global Unk_ov4_02219734 -Unk_ov4_02219734: ; 0x02219734 - .byte 0xFE, 0xFE, 0x0, 0x0 - - .global Unk_ov4_02219738 -Unk_ov4_02219738: ; 0x02219738 - .asciz "len > 0" - - .global Unk_ov4_02219740 -Unk_ov4_02219740: ; 0x02219740 - .ascii "gt2Message.c" - .space 0x4 - diff --git a/subprojects/gamespy/libraries/gt2/asm/gt2socket.s b/subprojects/gamespy/libraries/gt2/asm/gt2socket.s deleted file mode 100644 index 875f98d31f..0000000000 --- a/subprojects/gamespy/libraries/gt2/asm/gt2socket.s +++ /dev/null @@ -1,641 +0,0 @@ - .include "macros/function.inc" - .include "include/gt2socket.inc" - - - - .text - - - arm_func_start gti2ConnectionHash -gti2ConnectionHash: ; 0x021FA360 - stmfd sp!, {r3, lr} - ldr r2, [r0, #0] - ldrh r0, [r2, #4] - ldr r2, [r2, #0] - mul r0, r2, r0 - bl _u32_div_f - mov r0, r1 - ldmia sp!, {r3, pc} - arm_func_end gti2ConnectionHash - - arm_func_start gti2ConnectionCompare -gti2ConnectionCompare: ; 0x021FA380 - ldr r3, [r0, #0] - ldr r2, [r1, #0] - ldr r0, [r3, #0] - ldr r1, [r2, #0] - cmp r0, r1 - subne r0, r0, r1 - bxne lr - ldrh r1, [r3, #4] - ldrh r0, [r2, #4] - sub r0, r1, r0 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - bx lr - arm_func_end gti2ConnectionCompare - - arm_func_start gti2ConnectionFree -gti2ConnectionFree: ; 0x021FA3B4 - ldr ip, _021FA3C0 ; =gti2ConnectionCleanup - ldr r0, [r0, #0] - bx ip - ; .align 2, 0 -_021FA3C0: .word gti2ConnectionCleanup - arm_func_end gti2ConnectionFree - - arm_func_start gti2SocketFindConnection -gti2SocketFindConnection: ; 0x021FA3C4 - stmdb sp!, {lr} - sub sp, sp, #0xa4 - add r3, sp, #4 - str r1, [sp, #4] - strh r2, [sp, #8] - str r3, [sp] - ldr r0, [r0, #0xc] - add r1, sp, #0 - bl TableLookup - cmp r0, #0 - ldrne r0, [r0] - moveq r0, #0 - add sp, sp, #0xa4 - ldmia sp!, {pc} - arm_func_end gti2SocketFindConnection - - arm_func_start gti2CreateSocket -gti2CreateSocket: ; 0x021FA3FC - stmfd sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x1c - mov r4, r1 - mov r6, r3 - mov r5, r0 - mov r7, r2 - bl SocketStartUp - cmp r6, #0 - moveq r6, #0x10000 - cmp r7, #0 - add r1, sp, #0x10 - add r2, sp, #8 - mov r0, r4 - moveq r7, #0x10000 - bl gt2StringToAddress - cmp r0, #0 - addeq sp, sp, #0x1c - moveq r0, #4 - ldmeqia sp!, {r4, r5, r6, r7, pc} - mov r0, #0x44 - bl DWCi_GsMalloc - movs r4, r0 - addeq sp, sp, #0x1c - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, r7, pc} - mov r1, #0 - mov r2, #0x44 - bl memset - mvn r0, #0 - str r0, [r4, #0] - str r6, [r4, #0x3c] - ldr r1, [sp, #0x30] - str r7, [r4, #0x38] - str r1, [r4, #0x24] - ldr r0, _021FA610 ; =gti2ConnectionCompare - ldr r3, _021FA614 ; =gti2ConnectionHash - str r0, [sp] - mov ip, #0 - mov r0, #4 - mov r1, #0x20 - mov r2, #2 - str ip, [sp, #4] - bl TableNew2 - str r0, [r4, #0xc] - cmp r0, #0 - bne _021FA4C8 - mov r0, r4 - bl DWCi_GsFree - add sp, sp, #0x1c - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, pc} -_021FA4C8: - mov r0, #4 - ldr r2, _021FA618 ; =gti2ConnectionFree - mov r1, r0 - bl ArrayNew - str r0, [r4, #0x10] - cmp r0, #0 - bne _021FA500 - ldr r0, [r4, #0xc] - bl TableFree - mov r0, r4 - bl DWCi_GsFree - add sp, sp, #0x1c - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, pc} -_021FA500: - mov r0, #2 - mov r1, r0 - mov r2, #0 - bl socket - mvn r1, #0 - str r0, [r4, #0] - cmp r0, r1 - bne _021FA544 - ldr r0, [r4, #0xc] - bl TableFree - ldr r0, [r4, #0x10] - bl ArrayFree - mov r0, r4 - bl DWCi_GsFree - add sp, sp, #0x1c - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, pc} -_021FA544: - ldrh r0, [sp, #8] - add r1, sp, #0x14 - mov ip, #0 - mov r2, r0, asr #8 - mov r0, r0, lsl #8 - and r2, r2, #0xff - and r0, r0, #0xff00 - orr r0, r2, r0 - str ip, [r1] - mov r2, #2 - strb r2, [sp, #0x15] - ldr r3, [sp, #0x10] - str ip, [r1, #4] - str r3, [sp, #0x18] - strh r0, [sp, #0x16] - ldr r0, [r4, #0] - mov r2, #8 - bl bind - mvn r1, #0 - cmp r0, r1 - bne _021FA5C4 - ldr r0, [r4, #0] - bl closesocket - ldr r0, [r4, #0xc] - bl TableFree - ldr r0, [r4, #0x10] - bl ArrayFree - mov r0, r4 - bl DWCi_GsFree - add sp, sp, #0x1c - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, pc} -_021FA5C4: - mov r0, #8 - str r0, [sp, #0xc] - ldr r0, [r4, #0] - add r1, sp, #0x14 - add r2, sp, #0xc - bl getsockname - ldr r1, [sp, #0x18] - mov r0, #0 - str r1, [r4, #4] - ldrh r1, [sp, #0x16] - mov r2, r1, asr #8 - mov r1, r1, lsl #8 - and r2, r2, #0xff - and r1, r1, #0xff00 - orr r1, r2, r1 - strh r1, [r4, #8] - str r4, [r5, #0] - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, pc} - ; .align 2, 0 -_021FA610: .word gti2ConnectionCompare -_021FA614: .word gti2ConnectionHash -_021FA618: .word gti2ConnectionFree - arm_func_end gti2CreateSocket - - arm_func_start gti2CloseSocket -gti2CloseSocket: ; 0x021FA61C - stmfd sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4, #0x1c] - cmp r0, #0 - movne r0, #1 - strne r0, [r4, #0x14] - ldmneia sp!, {r4, pc} - ldr r0, [r4, #0] - bl closesocket - ldr r0, [r4, #0xc] - bl TableFree - ldr r0, [r4, #0x10] - bl ArrayFree - mov r0, r4 - bl DWCi_GsFree - bl SocketShutDown - ldmia sp!, {r4, pc} - arm_func_end gti2CloseSocket - - arm_func_start gti2Listen -gti2Listen: ; 0x021FA660 - str r1, [r0, #0x20] - bx lr - arm_func_end gti2Listen - - arm_func_start gti2CreateConnectionObject -gti2CreateConnectionObject: ; 0x021FA668 - ldr ip, _021FA674 ; =DWCi_GsMalloc - mov r0, #0xa0 - bx ip - ; .align 2, 0 -_021FA674: .word DWCi_GsMalloc - arm_func_end gti2CreateConnectionObject - - arm_func_start gti2NewSocketConnection -gti2NewSocketConnection: ; 0x021FA678 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r4, r3 - mov r5, r2 - mov r3, #0 - mov r6, r1 - mov r1, r5 - mov r2, r4 - mov r7, r0 - str r3, [sp] - bl gti2SocketFindConnection - cmp r0, #0 - movne r0, #5 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - bl gti2CreateConnectionObject - str r0, [sp] - cmp r0, #0 - beq _021FA808 - mov r1, #0 - mov r2, #0xa0 - bl memset - ldr r0, [sp] - str r5, [r0, #0] - ldr r0, [sp] - strh r4, [r0, #4] - ldr r0, [sp] - str r7, [r0, #8] - bl current_time - ldr r2, [sp] - mov r1, #0 - str r0, [r2, #0x1c] - ldr r2, [sp] - ldr r0, [r2, #0x1c] - str r0, [r2, #0x88] - ldr r0, [sp] - strh r1, [r0, #0x64] - ldr r0, [sp] - strh r1, [r0, #0x66] - ldr r0, [sp] - ldr r1, [r7, #0x3c] - add r0, r0, #0x44 - bl gti2AllocateBuffer - cmp r0, #0 - beq _021FA808 - ldr r0, [sp] - ldr r1, [r7, #0x38] - add r0, r0, #0x50 - bl gti2AllocateBuffer - cmp r0, #0 - beq _021FA808 - mov r0, #0x10 - mov r1, #0x40 - mov r2, #0 - bl ArrayNew - ldr r1, [sp] - str r0, [r1, #0x5c] - ldr r0, [sp] - ldr r0, [r0, #0x5c] - cmp r0, #0 - beq _021FA808 - mov r0, #0x10 - mov r1, #0x40 - mov r2, #0 - bl ArrayNew - ldr r1, [sp] - str r0, [r1, #0x60] - ldr r0, [sp] - ldr r0, [r0, #0x60] - cmp r0, #0 - beq _021FA808 - mov r0, #4 - mov r1, #2 - mov r2, #0 - bl ArrayNew - ldr r1, [sp] - str r0, [r1, #0x98] - ldr r0, [sp] - ldr r0, [r0, #0x98] - cmp r0, #0 - beq _021FA808 - mov r0, #4 - mov r1, #2 - mov r2, #0 - bl ArrayNew - ldr r1, [sp] - str r0, [r1, #0x9c] - ldr r0, [sp] - ldr r0, [r0, #0x9c] - cmp r0, #0 - beq _021FA808 - ldr r0, [r7, #0xc] - add r1, sp, #0 - bl TableEnter - mov r0, r7 - mov r1, r5 - mov r2, r4 - bl gti2SocketFindConnection - str r0, [r6, #0] - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} -_021FA808: - ldr r0, [sp] - cmp r0, #0 - beq _021FA880 - ldr r0, [r0, #0x44] - bl DWCi_GsFree - ldr r0, [sp] - ldr r0, [r0, #0x50] - bl DWCi_GsFree - ldr r0, [sp] - ldr r0, [r0, #0x5c] - cmp r0, #0 - beq _021FA83C - bl ArrayFree -_021FA83C: - ldr r0, [sp] - ldr r0, [r0, #0x60] - cmp r0, #0 - beq _021FA850 - bl ArrayFree -_021FA850: - ldr r0, [sp] - ldr r0, [r0, #0x98] - cmp r0, #0 - beq _021FA864 - bl ArrayFree -_021FA864: - ldr r0, [sp] - ldr r0, [r0, #0x9c] - cmp r0, #0 - beq _021FA878 - bl ArrayFree -_021FA878: - ldr r0, [sp] - bl DWCi_GsFree -_021FA880: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end gti2NewSocketConnection - - arm_func_start gti2FreeSocketConnection -gti2FreeSocketConnection: ; 0x021FA888 - stmfd sp!, {r0, r1, r2, r3} - stmfd sp!, {r4, r5, r6, lr} - ldr r1, [sp, #0x10] - ldr r0, [r1, #0x14] - cmp r0, #0 - ldreq r0, [r1, #0x24] - cmpeq r0, #0 - ldmneia sp!, {r4, r5, r6, lr} - addne sp, sp, #0x10 - bxne lr - ldr r0, [r1, #0xc] - cmp r0, #7 - ldr r0, [r1, #8] - bne _021FA934 - ldr r0, [r0, #0x10] - bl ArrayLength - mov r4, r0 - mov r5, #0 - cmp r4, #0 - ldmleia sp!, {r4, r5, r6, lr} - addle sp, sp, #0x10 - bxle lr -_021FA8E0: - ldr r6, [sp, #0x10] - mov r1, r5 - ldr r0, [r6, #8] - ldr r0, [r0, #0x10] - bl ArrayNth - ldr r0, [r0, #0] - cmp r6, r0 - bne _021FA91C - ldr r0, [r6, #8] - mov r1, r5 - ldr r0, [r0, #0x10] - bl ArrayDeleteAt - ldmia sp!, {r4, r5, r6, lr} - add sp, sp, #0x10 - bx lr -_021FA91C: - add r5, r5, #1 - cmp r5, r4 - blt _021FA8E0 - ldmia sp!, {r4, r5, r6, lr} - add sp, sp, #0x10 - bx lr -_021FA934: - ldr r0, [r0, #0xc] - add r1, sp, #0x10 - bl TableRemove - ldmia sp!, {r4, r5, r6, lr} - add sp, sp, #0x10 - bx lr - arm_func_end gti2FreeSocketConnection - - arm_func_start gti2SocketSend -gti2SocketSend: ; 0x021FA94C - stmfd sp!, {r0, r1, r2, r3} - stmfd sp!, {r4, r5, r6, lr} - sub sp, sp, #0x18 - mov r6, r0 - mov r5, r1 - add r0, sp, #0x34 - add r1, sp, #0x38 - mov r4, r2 - bl gti2MessageCheck - ldr r0, [r6, #0] - bl CanSendOnSocket - cmp r0, #0 - addeq sp, sp, #0x18 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, lr} - addeq sp, sp, #0x10 - bxeq lr - mov r1, r4, asr #8 - mov r0, r4, lsl #8 - add r2, sp, #0x10 - mov r3, #0 - str r3, [r2, #4] - and r1, r1, #0xff - and r0, r0, #0xff00 - orr r0, r1, r0 - str r3, [r2, #0] - mov r1, #2 - strh r0, [sp, #0x12] - strb r1, [sp, #0x11] - str r5, [sp, #0x14] - str r2, [sp] - mov r0, #8 - str r0, [sp, #4] - ldr r0, [r6, #0] - ldr r1, [sp, #0x34] - ldr r2, [sp, #0x38] - bl sendto - mvn r1, #0 - cmp r0, r1 - bne _021FAA78 - ldr r0, [r6, #0] - bl GOAGetLastError - mvn r2, #0xe - cmp r0, r2 - bne _021FAA2C - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl gti2HandleConnectionReset - cmp r0, #0 - bne _021FAAE0 - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, lr} - add sp, sp, #0x10 - bx lr -_021FAA2C: - sub r1, r2, #0x1b - cmp r0, r1 - addne r1, r2, #9 - cmpne r0, r1 - addeq sp, sp, #0x18 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, lr} - addeq sp, sp, #0x10 - bxeq lr - sub r1, r2, #0x14 - cmp r0, r1 - beq _021FAAE0 - mov r0, r6 - bl gti2SocketError - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, lr} - add sp, sp, #0x10 - bx lr -_021FAA78: - ldr r0, [r6, #0x28] - cmp r0, #0 - beq _021FAAE0 - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl gti2SocketFindConnection - mov r1, #0 - str r1, [sp] - ldr r2, [sp, #0x34] - mov r1, r0 - str r2, [sp, #4] - ldr ip, [sp, #0x38] - mov r3, r4 - mov r0, r6 - mov r2, r5 - str ip, [sp, #8] - mov r4, #1 - str r4, [sp, #0xc] - bl gti2DumpCallback - cmp r0, #0 - addeq sp, sp, #0x18 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, lr} - addeq sp, sp, #0x10 - bxeq lr -_021FAAE0: - mov r0, #1 - add sp, sp, #0x18 - ldmia sp!, {r4, r5, r6, lr} - add sp, sp, #0x10 - bx lr - arm_func_end gti2SocketSend - - arm_func_start gti2SocketConnectionsThinkMap -gti2SocketConnectionsThinkMap: ; 0x021FAAF4 - stmfd sp!, {r4, lr} - ldr r4, [r0, #0] - ldr r1, [r1, #0] - ldr r0, [r4, #0xc] - cmp r0, #7 - beq _021FAB20 - mov r0, r4 - bl gti2ConnectionThink - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} -_021FAB20: - ldr r0, [r4, #0xc] - cmp r0, #7 - ldreq r0, [r4, #0x14] - cmpeq r0, #0 - ldreq r0, [r4, #0x24] - cmpeq r0, #0 - bne _021FAB44 - mov r0, r4 - bl gti2FreeSocketConnection -_021FAB44: - mov r0, #1 - ldmia sp!, {r4, pc} - arm_func_end gti2SocketConnectionsThinkMap - - arm_func_start gti2SocketConnectionsThink -gti2SocketConnectionsThink: ; 0x021FAB4C - stmfd sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, r0 - bl current_time - str r0, [sp] - ldr r0, [r4, #0xc] - ldr r1, _021FAB84 ; =gti2SocketConnectionsThinkMap - add r2, sp, #0 - bl TableMapSafe2 - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - ; .align 2, 0 -_021FAB84: .word gti2SocketConnectionsThinkMap - arm_func_end gti2SocketConnectionsThink - - arm_func_start gti2FreeClosedConnections -gti2FreeClosedConnections: ; 0x021FAB88 - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r0, [r5, #0x10] - bl ArrayLength - subs r4, r0, #1 - ldmmiia sp!, {r3, r4, r5, pc} -_021FABA0: - ldr r0, [r5, #0x10] - mov r1, r4 - bl ArrayNth - ldr r0, [r0, #0] - bl gti2FreeSocketConnection - subs r4, r4, #1 - bpl _021FABA0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end gti2FreeClosedConnections - - arm_func_start gti2SocketError -gti2SocketError: ; 0x021FABC0 - stmfd sp!, {r4, lr} - mov r4, r0 - ldr r1, [r4, #0x18] - cmp r1, #0 - ldmneia sp!, {r4, pc} - mov r1, #1 - str r1, [r4, #0x18] - bl gt2CloseAllConnectionsHard - mov r0, r4 - bl gti2SocketErrorCallback - cmp r0, #0 - ldmeqia sp!, {r4, pc} - mov r0, r4 - bl gti2CloseSocket - ldmia sp!, {r4, pc} - arm_func_end gti2SocketError \ No newline at end of file diff --git a/subprojects/gamespy/libraries/gt2/asm/gt2utility.s b/subprojects/gamespy/libraries/gt2/asm/gt2utility.s deleted file mode 100644 index d7b0c25e08..0000000000 --- a/subprojects/gamespy/libraries/gt2/asm/gt2utility.s +++ /dev/null @@ -1,249 +0,0 @@ - .include "macros/function.inc" - .include "include/gt2utility.inc" - - - - .text - - - arm_func_start gt2AddressToString -gt2AddressToString: ; 0x021FABFC - stmfd sp!, {r3, r4, r5, lr} - movs r4, r2 - mov r5, r1 - bne _021FAC28 - ldr r2, _021FAC98 ; =0x0221B3B4 - ldr r3, _021FAC9C ; =0x0221B3B8 - ldr ip, [r2] - mov r1, #0x16 - eor ip, ip, #1 - mla r4, ip, r1, r3 - str ip, [r2] -_021FAC28: - cmp r0, #0 - beq _021FAC70 - str r0, [sp] - cmp r5, #0 - beq _021FAC58 - bl SOC_InetNtoA - mov r2, r0 - ldr r1, _021FACA0 ; =0x02219764 - mov r0, r4 - mov r3, r5 - bl sprintf - b _021FAC90 -_021FAC58: - bl SOC_InetNtoA - mov r2, r0 - ldr r1, _021FACA4 ; =0x0221976C - mov r0, r4 - bl sprintf - b _021FAC90 -_021FAC70: - cmp r5, #0 - moveq r0, #0 - streqb r0, [r4] - beq _021FAC90 - ldr r1, _021FACA8 ; =0x02219770 - mov r0, r4 - mov r2, r5 - bl sprintf -_021FAC90: - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_021FAC98: .word Unk_ov4_0221B3B4 -_021FAC9C: .word Unk_ov4_0221B3B8 -_021FACA0: .word Unk_ov4_02219764 -_021FACA4: .word Unk_ov4_0221976C -_021FACA8: .word Unk_ov4_02219770 - arm_func_end gt2AddressToString - - arm_func_start gt2StringToAddress -gt2StringToAddress: ; 0x021FACAC - stmfd sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x104 - movs r8, r0 - mov r7, r1 - ldrnesb r1, [r8] - mov r6, r2 - cmpne r1, #0 - moveq r4, #0 - moveq r5, r4 - beq _021FAE00 - mov r1, #0x3a - bl strchr - movs r5, r0 - moveq r5, #0 - beq _021FADBC - cmp r5, r8 - moveq r8, #0 - moveq r4, r8 - beq _021FAD34 - sub sb, r5, r8 - cmp sb, #0x100 - blt _021FAD18 - ldr r0, _021FAE1C ; =0x02219774 - ldr r1, _021FAE20 ; =0x02219794 - ldr r2, _021FAE24 ; =0x02219750 - mov r3, #0x81 - bl __msl_assertion_failed -_021FAD18: - add r0, sp, #0 - mov r1, r8 - mov r2, sb - bl memcpy - add r8, sp, #0 - mov r0, #0 - strb r0, [r8, sb] -_021FAD34: - ldrsb r0, [r5, #1] - add r3, r5, #1 - cmp r0, #0 - beq _021FAD8C - ldr r1, _021FAE28 ; =0x020FE864 - mov r2, #0 -_021FAD4C: - cmp r0, #0 - blt _021FAD5C - cmp r0, #0x80 - blt _021FAD64 -_021FAD5C: - mov r0, r2 - b _021FAD70 -_021FAD64: - mov r0, r0, lsl #1 - ldrh r0, [r1, r0] - and r0, r0, #8 -_021FAD70: - cmp r0, #0 - addeq sp, sp, #0x104 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} - ldrsb r0, [r3, #1]! - cmp r0, #0 - bne _021FAD4C -_021FAD8C: - add r0, r5, #1 - bl atoi - cmp r0, #0 - blt _021FADA8 - ldr r1, _021FAE2C ; =0x0000FFFF - cmp r0, r1 - ble _021FADB4 -_021FADA8: - add sp, sp, #0x104 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_021FADB4: - mov r0, r0, lsl #0x10 - mov r5, r0, lsr #0x10 -_021FADBC: - cmp r8, #0 - beq _021FAE00 - mov r0, r8 - bl inet_addr - mov r4, r0 - mvn r0, #0 - cmp r4, r0 - bne _021FAE00 - mov r0, r8 - bl SOC_GetHostByName - cmp r0, #0 - addeq sp, sp, #0x104 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} - ldr r0, [r0, #0xc] - ldr r0, [r0, #0] - ldr r4, [r0, #0] -_021FAE00: - cmp r7, #0 - strne r4, [r7] - cmp r6, #0 - strneh r5, [r6] - mov r0, #1 - add sp, sp, #0x104 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - ; .align 2, 0 -_021FAE1C: .word Unk_ov4_02219774 -_021FAE20: .word Unk_ov4_02219794 -_021FAE24: .word Unk_ov4_02219750 -_021FAE28: .word 0x020FE864 -_021FAE2C: .word 0x0000FFFF - arm_func_end gt2StringToAddress - - arm_func_start gti2MessageCheck -gti2MessageCheck: ; 0x021FAE30 - stmfd sp!, {r4, lr} - ldr r2, [r0, #0] - mov r4, r1 - cmp r2, #0 - bne _021FAE58 - ldr r2, _021FAE7C ; =0x022197A4 - mov r1, #0 - str r2, [r0, #0] - str r1, [r4, #0] - ldmia sp!, {r4, pc} -_021FAE58: - ldr r1, [r4, #0] - mvn r0, #0 - cmp r1, r0 - ldmneia sp!, {r4, pc} - mov r0, r2 - bl strlen - add r0, r0, #1 - str r0, [r4, #0] - ldmia sp!, {r4, pc} - ; .align 2, 0 -_021FAE7C: .word Unk_ov4_022197A4 - arm_func_end gti2MessageCheck - - .data - - - .global Unk_ov4_02219750 -Unk_ov4_02219750: ; 0x02219750 - .ascii "gt2StringToAddress" - .space 0x2 - - .global Unk_ov4_02219764 -Unk_ov4_02219764: ; 0x02219764 - .asciz "%s:%d" - .space 0x2 - - .global Unk_ov4_0221976C -Unk_ov4_0221976C: ; 0x0221976C - .ascii "%s" - .space 0x2 - - .global Unk_ov4_02219770 -Unk_ov4_02219770: ; 0x02219770 - .asciz ":%d" - - .global Unk_ov4_02219774 -Unk_ov4_02219774: ; 0x02219774 - .ascii "len < GTI2_STACK_HOSTLEN_MAX" - .space 0x4 - - .global Unk_ov4_02219794 -Unk_ov4_02219794: ; 0x02219794 - .ascii "gt2Utility.c" - .space 0x4 - - .global Unk_ov4_022197A4 -Unk_ov4_022197A4: ; 0x022197A4 - .space 0x1 - - - - .bss - - - .global Unk_ov4_0221B3B4 -Unk_ov4_0221B3B4: ; 0x0221B3B4 - .space 0x4 - - .global Unk_ov4_0221B3B8 -Unk_ov4_0221B3B8: ; 0x0221B3B8 - .space 0x2C - diff --git a/subprojects/gamespy/libraries/gt2/asm/include/gt2auth.inc b/subprojects/gamespy/libraries/gt2/asm/include/gt2auth.inc deleted file mode 100644 index bb8cc80d62..0000000000 --- a/subprojects/gamespy/libraries/gt2/asm/include/gt2auth.inc +++ /dev/null @@ -1,8 +0,0 @@ -.public abs -.public __msl_assertion_failed -.public rand -.public srand -.public strlen -.public _s32_div_f -.public current_time -.public gti2VerifyChallenge diff --git a/subprojects/gamespy/libraries/gt2/asm/include/gt2buffer.inc b/subprojects/gamespy/libraries/gt2/asm/include/gt2buffer.inc deleted file mode 100644 index 393ecc239e..0000000000 --- a/subprojects/gamespy/libraries/gt2/asm/include/gt2buffer.inc +++ /dev/null @@ -1,5 +0,0 @@ -.public __msl_assertion_failed -.public memcpy -.public memmove -.public strlen -.public DWCi_GsMalloc diff --git a/subprojects/gamespy/libraries/gt2/asm/include/gt2callback.inc b/subprojects/gamespy/libraries/gt2/asm/include/gt2callback.inc deleted file mode 100644 index d5261a7a19..0000000000 --- a/subprojects/gamespy/libraries/gt2/asm/include/gt2callback.inc +++ /dev/null @@ -1,3 +0,0 @@ -.public __msl_assertion_failed -.public ArrayNth -.public gti2CloseSocket diff --git a/subprojects/gamespy/libraries/gt2/asm/include/gt2connection.inc b/subprojects/gamespy/libraries/gt2/asm/include/gt2connection.inc deleted file mode 100644 index a345f3c23a..0000000000 --- a/subprojects/gamespy/libraries/gt2/asm/include/gt2connection.inc +++ /dev/null @@ -1,30 +0,0 @@ -.public memcpy -.public DWCi_GsMalloc -.public DWCi_GsFree -.public ArrayFree -.public ArrayLength -.public ArrayNth -.public ArrayAppend -.public TableRemove -.public current_time -.public gti2GetChallenge -.public gti2GetResponse -.public gti2ConnectedCallback -.public gti2ClosedCallback -.public gti2CheckTimeout -.public gti2SendRetries -.public gti2CheckPendingAck -.public gti2CheckKeepAlive -.public gti2ConnectionClosed -.public gti2SendClientChallenge -.public gti2SendAccept -.public gti2SendReject -.public gti2SendClose -.public gti2SendKeepAlive -.public gti2SendAck -.public gti2SendClosed -.public gti2ResendMessage -.public gti2NewSocketConnection -.public gti2FreeSocketConnection -.public gti2SocketSend -.public gti2MessageCheck diff --git a/subprojects/gamespy/libraries/gt2/asm/include/gt2main.inc b/subprojects/gamespy/libraries/gt2/asm/include/gt2main.inc deleted file mode 100644 index 372fc1f447..0000000000 --- a/subprojects/gamespy/libraries/gt2/asm/include/gt2main.inc +++ /dev/null @@ -1,24 +0,0 @@ -.public __msl_assertion_failed -.public ArrayLength -.public TableMapSafe -.public msleep -.public gti2SendFilterCallback -.public gti2NewOutgoingConnection -.public gti2StartConnectionAttempt -.public gti2AcceptConnection -.public gti2RejectConnection -.public gti2CloseConnection -.public gt2Think -.public gt2CloseConnectionHard -.public gti2CloseAllConnectionsHardMap -.public gt2CloseAllConnectionsHard -.public gti2ReceiveMessages -.public gti2Send -.public gti2CreateSocket -.public gti2CloseSocket -.public gti2Listen -.public gti2FreeSocketConnection -.public gti2SocketConnectionsThink -.public gti2FreeClosedConnections -.public gt2StringToAddress -.public gti2MessageCheck diff --git a/subprojects/gamespy/libraries/gt2/asm/include/gt2message.inc b/subprojects/gamespy/libraries/gt2/asm/include/gt2message.inc deleted file mode 100644 index 59a6a8571d..0000000000 --- a/subprojects/gamespy/libraries/gt2/asm/include/gt2message.inc +++ /dev/null @@ -1,76 +0,0 @@ -.public __msl_assertion_failed -.public memcmp -.public DWCi_GsFree -.public ArrayLength -.public ArrayNth -.public ArrayAppend -.public ArrayInsertSorted -.public ArrayDeleteAt -.public current_time -.public CanReceiveOnSocket -.public recvfrom -.public GOAGetLastError -.public gti2GetChallenge -.public gti2GetResponse -.public gti2CheckResponse -.public gti2GetBufferFreeSpace -.public gti2BufferWriteByte -.public gti2BufferWriteUShort -.public gti2BufferWriteData -.public gti2BufferShorten -.public gti2ConnectAttemptCallback -.public gti2ConnectedCallback -.public gti2ReceivedCallback -.public gti2ClosedCallback -.public gti2PingCallback -.public gti2ReceiveFilterCallback -.public gti2DumpCallback -.public gti2UnrecognizedMessageCallback -.public gti2NewIncomingConnection -.public gti2ConnectionSendData -.public gti2ConnectionClosed -.public gti2UShortFromBuffer -.public gti2UShortToBuffer -.public gti2SNDiff -.public gti2ConnectionError -.public gti2ConnectionCommunicationError -.public gti2ConnectionMemoryError -.public gti2HandleESN -.public gti2HandleAppUnreliable -.public gti2HandleAppReliable -.public gti2HandleClientChallenge -.public gti2HandleServerChallenge -.public gti2HandleClientResponse -.public gti2HandleAccept -.public gti2HandleReject -.public gti2HandleClose -.public gti2DeliverReliableMessage -.public gti2IncomingBufferMessageCompare -.public gti2BufferIncomingMessage -.public gti2RemoveHoldMessage -.public gti2DeliverHoldMessages -.public gti2SetPendingAck -.public gti2HandleReliableMessage -.public gti2HandleAck -.public gti2HandleNack -.public gti2HandlePing -.public gti2HandlePong -.public gti2HandleClosed -.public gti2HandleUnreliableMessage -.public gti2HandleMessage -.public gti2HandleConnectionReset -.public gti2StoreOutgoingReliableMessageInfo -.public gti2BeginReliableMessage -.public gti2EndReliableMessage -.public gti2SendAppReliable -.public gti2SendServerChallenge -.public gti2SendClientResponse -.public gti2SendAppUnreliable -.public gti2SendNack -.public gti2SendPong -.public gti2SendClosed -.public gti2SendClosedOnSocket -.public gti2ResendMessage -.public gti2SocketFindConnection -.public gti2SocketSend -.public gti2SocketError diff --git a/subprojects/gamespy/libraries/gt2/asm/include/gt2socket.inc b/subprojects/gamespy/libraries/gt2/asm/include/gt2socket.inc deleted file mode 100644 index 856ca1b473..0000000000 --- a/subprojects/gamespy/libraries/gt2/asm/include/gt2socket.inc +++ /dev/null @@ -1,43 +0,0 @@ -.public memset -.public _u32_div_f -.public DWCi_GsMalloc -.public DWCi_GsFree -.public ArrayNew -.public ArrayFree -.public ArrayLength -.public ArrayNth -.public ArrayDeleteAt -.public TableNew2 -.public TableFree -.public TableEnter -.public TableRemove -.public TableLookup -.public TableMapSafe2 -.public current_time -.public SocketStartUp -.public SocketShutDown -.public CanSendOnSocket -.public socket -.public closesocket -.public bind -.public sendto -.public getsockname -.public GOAGetLastError -.public gti2AllocateBuffer -.public gti2SocketErrorCallback -.public gti2DumpCallback -.public gti2ConnectionThink -.public gti2ConnectionCleanup -.public gt2CloseAllConnectionsHard -.public gti2HandleConnectionReset -.public gti2ConnectionHash -.public gti2ConnectionCompare -.public gti2ConnectionFree -.public gti2SocketFindConnection -.public gti2CloseSocket -.public gti2CreateConnectionObject -.public gti2FreeSocketConnection -.public gti2SocketConnectionsThinkMap -.public gti2SocketError -.public gt2StringToAddress -.public gti2MessageCheck diff --git a/subprojects/gamespy/libraries/gt2/asm/include/gt2utility.inc b/subprojects/gamespy/libraries/gt2/asm/include/gt2utility.inc deleted file mode 100644 index a6be7a8daf..0000000000 --- a/subprojects/gamespy/libraries/gt2/asm/include/gt2utility.inc +++ /dev/null @@ -1,9 +0,0 @@ -.public __msl_assertion_failed -.public memcpy -.public sprintf -.public strlen -.public strchr -.public atoi -.public inet_addr -.public SOC_GetHostByName -.public SOC_InetNtoA diff --git a/subprojects/gamespy/libraries/gt2/asm/macros/function.inc b/subprojects/gamespy/libraries/gt2/asm/macros/function.inc deleted file mode 100644 index f71cc4ccae..0000000000 --- a/subprojects/gamespy/libraries/gt2/asm/macros/function.inc +++ /dev/null @@ -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 \ No newline at end of file diff --git a/subprojects/gamespy/libraries/gt2/meson.build b/subprojects/gamespy/libraries/gt2/meson.build deleted file mode 100644 index 03445de666..0000000000 --- a/subprojects/gamespy/libraries/gt2/meson.build +++ /dev/null @@ -1,19 +0,0 @@ -libdwcgsgt2_srcs = files( - 'asm/gt2auth.s', - 'asm/gt2buffer.s', - 'asm/gt2callback.s', - 'asm/gt2connection.s', - 'asm/gt2main.s', - 'asm/gt2message.s', - 'asm/gt2socket.s', - 'asm/gt2utility.s' -) - -libdwcgsgt2 = static_library('dwcgsgt2', - sources: libdwcgsgt2_srcs, - nasm_args: asm_args, - include_directories: public_includes, - pic: false -) - -gamespy_libs += libdwcgsgt2 diff --git a/subprojects/gamespy/libraries/meson.build b/subprojects/gamespy/libraries/meson.build deleted file mode 100644 index 53e8290c68..0000000000 --- a/subprojects/gamespy/libraries/meson.build +++ /dev/null @@ -1,9 +0,0 @@ -subdir('chat') -subdir('common') -subdir('ghttp') -subdir('gp') -subdir('gstats') -subdir('gt2') -subdir('natneg') -subdir('qr2') -subdir('serverbrowsing') diff --git a/subprojects/gamespy/libraries/natneg/asm/include/natneg.inc b/subprojects/gamespy/libraries/natneg/asm/include/natneg.inc deleted file mode 100644 index 78a3ca1cd2..0000000000 --- a/subprojects/gamespy/libraries/natneg/asm/include/natneg.inc +++ /dev/null @@ -1,41 +0,0 @@ -.public memcmp -.public snprintf -.public strlen -.public strcpy -.public ArrayNew -.public ArrayFree -.public ArrayLength -.public ArrayNth -.public ArrayAppend -.public ArrayRemoveAt -.public current_time -.public CanReceiveOnSocket -.public getlocalhost -.public IsPrivateIP -.public socket -.public closesocket -.public recvfrom -.public sendto -.public getsockname -.public inet_addr -.public FindNegotiatorForCookie -.public NegotiatorFree -.public AddNegotiator -.public RemoveNegotiator -.public CheckMagic -.public SendPacket -.public GetLocalIP -.public GetLocalPort -.public SendInitPackets -.public SendPingPacket -.public NameToIp -.public ResolveServer -.public ResolveServers -.public NNCancel -.public NegotiateThink -.public SendConnectAck -.public ProcessConnectPacket -.public ProcessPingPacket -.public ProcessInitPacket -.public NNProcessData -.public SOC_GetHostByName diff --git a/subprojects/gamespy/libraries/natneg/asm/macros/function.inc b/subprojects/gamespy/libraries/natneg/asm/macros/function.inc deleted file mode 100644 index f71cc4ccae..0000000000 --- a/subprojects/gamespy/libraries/natneg/asm/macros/function.inc +++ /dev/null @@ -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 \ No newline at end of file diff --git a/subprojects/gamespy/libraries/natneg/asm/natneg.s b/subprojects/gamespy/libraries/natneg/asm/natneg.s deleted file mode 100644 index 31df3d963b..0000000000 --- a/subprojects/gamespy/libraries/natneg/asm/natneg.s +++ /dev/null @@ -1,1168 +0,0 @@ - .include "macros/function.inc" - .include "include/natneg.inc" - - .extern __GSIACResult - - .text - - - arm_func_start FindNegotiatorForCookie -FindNegotiatorForCookie: ; 0x021FAE80 - stmfd sp!, {r4, r5, r6, lr} - ldr r1, _021FAEE4 ; =0x0221B3E4 - mov r6, r0 - ldr r0, [r1, #0x10] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r5, #0 - bl ArrayLength - cmp r0, #0 - ble _021FAEDC - ldr r4, _021FAEE4 ; =0x0221B3E4 -_021FAEB0: - ldr r0, [r4, #0x10] - mov r1, r5 - bl ArrayNth - ldr r1, [r0, #8] - cmp r1, r6 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r0, [r4, #0x10] - add r5, r5, #1 - bl ArrayLength - cmp r5, r0 - blt _021FAEB0 -_021FAEDC: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_021FAEE4: .word Matchup2Hostname - arm_func_end FindNegotiatorForCookie - - arm_func_start NegotiatorFree -NegotiatorFree: ; 0x021FAEE8 - stmfd sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4, #0] - mvn r1, #0 - cmp r0, r1 - beq _021FAF04 - bl closesocket -_021FAF04: - mvn r0, #0 - str r0, [r4, #0] - mov r0, #4 - str r0, [r4, #0x10] - ldmia sp!, {r4, pc} - arm_func_end NegotiatorFree - - arm_func_start AddNegotiator -AddNegotiator: ; 0x021FAF18 - stmfd sp!, {r3, lr} - sub sp, sp, #0x40 - mov r0, #0 - add r3, sp, #0 - mov r1, r0 - stmia r3!, {r0, r1} - stmia r3!, {r0, r1} - stmia r3!, {r0, r1} - stmia r3!, {r0, r1} - stmia r3!, {r0, r1} - stmia r3!, {r0, r1} - ldr r2, _021FAFA8 ; =0x0221B3E4 - stmia r3!, {r0, r1} - ldr r2, [r2, #0x10] - stmia r3, {r0, r1} - cmp r2, #0 - bne _021FAF74 - ldr r2, _021FAFAC ; =NegotiatorFree - mov r0, #0x40 - mov r1, #4 - bl ArrayNew - ldr r1, _021FAFA8 ; =0x0221B3E4 - str r0, [r1, #0x10] -_021FAF74: - ldr r0, _021FAFA8 ; =0x0221B3E4 - add r1, sp, #0 - ldr r0, [r0, #0x10] - bl ArrayAppend - ldr r0, _021FAFA8 ; =0x0221B3E4 - ldr r0, [r0, #0x10] - bl ArrayLength - ldr r2, _021FAFA8 ; =0x0221B3E4 - sub r1, r0, #1 - ldr r0, [r2, #0x10] - bl ArrayNth - add sp, sp, #0x40 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_021FAFA8: .word Matchup2Hostname -_021FAFAC: .word NegotiatorFree - arm_func_end AddNegotiator - - arm_func_start RemoveNegotiator -RemoveNegotiator: ; 0x021FAFB0 - stmfd sp!, {r4, r5, r6, lr} - ldr r1, _021FB014 ; =0x0221B3E4 - mov r6, r0 - ldr r0, [r1, #0x10] - mov r5, #0 - bl ArrayLength - cmp r0, #0 - ldmleia sp!, {r4, r5, r6, pc} - ldr r4, _021FB014 ; =0x0221B3E4 -_021FAFD4: - ldr r0, [r4, #0x10] - mov r1, r5 - bl ArrayNth - cmp r6, r0 - bne _021FAFFC - ldr r0, _021FB014 ; =0x0221B3E4 - mov r1, r5 - ldr r0, [r0, #0x10] - bl ArrayRemoveAt - ldmia sp!, {r4, r5, r6, pc} -_021FAFFC: - ldr r0, [r4, #0x10] - add r5, r5, #1 - bl ArrayLength - cmp r5, r0 - blt _021FAFD4 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_021FB014: .word Matchup2Hostname - arm_func_end RemoveNegotiator - - arm_func_start NNFreeNegotiateList -NNFreeNegotiateList: ; 0x021FB018 - stmfd sp!, {r3, lr} - ldr r0, _021FB040 ; =0x0221B3E4 - ldr r0, [r0, #0x10] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl ArrayFree - ldr r0, _021FB040 ; =0x0221B3E4 - mov r1, #0 - str r1, [r0, #0x10] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_021FB040: .word Matchup2Hostname - arm_func_end NNFreeNegotiateList - - arm_func_start CheckMagic -CheckMagic: ; 0x021FB044 - stmfd sp!, {r3, lr} - ldr r1, _021FB064 ; =0x022197A8 - mov r2, #6 - bl memcmp - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_021FB064: .word NNMagicData - arm_func_end CheckMagic - - arm_func_start SendPacket -SendPacket: ; 0x021FB068 - stmfd sp!, {r3, lr} - sub sp, sp, #0x10 - mov ip, r2, asr #8 - mov r2, r2, lsl #8 - str r1, [sp, #0xc] - mov r1, r3 - and r3, ip, #0xff - and r2, r2, #0xff00 - orr r2, r3, r2 - mov lr, #2 - strh r2, [sp, #0xa] - add r3, sp, #8 - strb lr, [sp, #9] - str r3, [sp] - mov ip, #8 - ldr r2, [sp, #0x18] - mov r3, #0 - str ip, [sp, #4] - bl sendto - add sp, sp, #0x10 - ldmia sp!, {r3, pc} - arm_func_end SendPacket - - arm_func_start GetLocalIP -GetLocalIP: ; 0x021FB0BC - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r7, #0 - bl getlocalhost - movs r6, r0 - moveq r0, r7 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r4, _021FB11C ; =0x0100007F - mov r5, r7 -_021FB0DC: - ldr r0, [r6, #0xc] - ldr r0, [r0, r5, lsl #2] - cmp r0, #0 - beq _021FB114 - ldr r1, [r0, #0] - cmp r1, r4 - beq _021FB10C - mov r7, r1 - bl IsPrivateIP - cmp r0, #0 - movne r0, r7 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} -_021FB10C: - add r5, r5, #1 - b _021FB0DC -_021FB114: - mov r0, r7 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021FB11C: .word 0x0100007F - arm_func_end GetLocalIP - - arm_func_start GetLocalPort -GetLocalPort: ; 0x021FB120 - stmdb sp!, {lr} - sub sp, sp, #0xc - mov r3, #8 - add r1, sp, #4 - add r2, sp, #0 - str r3, [sp] - bl getsockname - mvn r1, #0 - cmp r0, r1 - moveq r0, #0 - ldrneh r0, [sp, #6] - add sp, sp, #0xc - ldmia sp!, {pc} - arm_func_end GetLocalPort - - arm_func_start SendInitPackets -SendInitPackets: ; 0x021FB154 - stmfd sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x5c - ldr r2, _021FB38C ; =0x022197A8 - mov r1, #0 - ldrb lr, [r2] - ldrb ip, [r2, #1] - add r5, sp, #4 - ldrb r8, [r2, #2] - ldrb r7, [r2, #3] - ldrb r4, [r2, #4] - ldrb r3, [r2, #5] - mov r2, #2 - mov r6, r0 - strb lr, [r5] - strb ip, [r5, #1] - strb r8, [r5, #2] - strb r7, [r5, #3] - strb r4, [r5, #4] - strb r3, [r5, #5] - strb r1, [r5, #7] - strb r2, [r5, #6] - ldr r2, [r6, #0xc] - sub r0, r1, #1 - strb r2, [r5, #0xd] - ldr r7, [r6, #8] - mov r3, r7, lsr #0x18 - mov r2, r7, lsr #8 - mov r4, r7, lsl #8 - and r3, r3, #0xff - and r2, r2, #0xff00 - mov r7, r7, lsl #0x18 - orr r2, r3, r2 - and r4, r4, #0xff0000 - and r3, r7, #0xff000000 - orr r2, r4, r2 - orr r2, r3, r2 - str r2, [r5, #8] - ldr r2, [r6, #4] - cmp r2, r0 - movne r1, #1 - strb r1, [r5, #0xe] - bl GetLocalIP - mov r7, r0 - bl GetLocalIP - mov r8, r0 - bl GetLocalIP - mov r4, r0 - bl GetLocalIP - mov r2, #0 - mov r1, r7, lsl #0x18 - and r7, r1, #0xff000000 - mov r1, r8, lsl #8 - mov r0, r0, lsr #8 - and r3, r1, #0xff0000 - mov r1, r4, lsr #0x18 - and r1, r1, #0xff - and r0, r0, #0xff00 - orr r0, r1, r0 - orr r0, r3, r0 - orr r3, r7, r0 - mov r1, r3, lsr #0x18 - strb r1, [sp, #0x13] - mov r1, r3, lsr #8 - mov r0, r3, lsr #0x10 - strb r1, [sp, #0x15] - strb r0, [sp, #0x14] - ldr r1, _021FB390 ; =0x0221AEEC - add r0, sp, #0x19 - strb r3, [sp, #0x16] - strb r2, [sp, #0x17] - strb r2, [sp, #0x18] - bl strcpy - ldr r0, _021FB390 ; =0x0221AEEC - bl strlen - ldrb r1, [r5, #0xe] - add r4, r0, #0x16 - cmp r1, #0 - beq _021FB2BC - ldr r0, [r6, #0x14] - cmp r0, #0 - bne _021FB2BC - mov r0, #0 - strb r0, [r5, #0xc] - str r4, [sp] - ldr r1, _021FB394 ; =0x0221B3E4 - ldr r0, [r6, #4] - ldr r1, [r1, #0xc] - ldr r2, _021FB398 ; =0x00006CFD - mov r3, r5 - bl SendPacket -_021FB2BC: - ldr r0, [r6, #0x18] - cmp r0, #0 - bne _021FB2EC - mov r0, #1 - strb r0, [r5, #0xc] - str r4, [sp] - ldr r1, _021FB394 ; =0x0221B3E4 - ldr r0, [r6, #0] - ldr r1, [r1, #0xc] - ldr r2, _021FB398 ; =0x00006CFD - mov r3, r5 - bl SendPacket -_021FB2EC: - ldrb r0, [r5, #0xe] - cmp r0, #0 - ldrne r8, [r6, #4] - ldreq r8, [r6] - cmp r0, #0 - ldrne r0, [r6, #4] - ldreq r0, [r6] - bl GetLocalPort - mov r7, r0 - mov r0, r8 - bl GetLocalPort - mov r1, r7, asr #8 - mov r0, r0, lsl #8 - and r1, r1, #0xff - and r0, r0, #0xff00 - orr r0, r1, r0 - mov r0, r0, lsl #0x10 - mov r1, r0, lsr #0x10 - mov r0, r1, asr #8 - strb r1, [sp, #0x18] - strb r0, [sp, #0x17] - ldr r0, [r6, #0x1c] - cmp r0, #0 - bne _021FB370 - mov r0, #2 - strb r0, [r5, #0xc] - str r4, [sp] - ldr r1, _021FB394 ; =0x0221B3E4 - ldr r0, [r6, #0] - ldr r1, [r1, #8] - ldr r2, _021FB398 ; =0x00006CFD - mov r3, r5 - bl SendPacket -_021FB370: - bl current_time - add r0, r0, #0x1f4 - str r0, [r6, #0x28] - mov r0, #0x1e - str r0, [r6, #0x24] - add sp, sp, #0x5c - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_021FB38C: .word NNMagicData -_021FB390: .word 0x0221AEEC -_021FB394: .word Matchup2Hostname -_021FB398: .word 0x00006CFD - arm_func_end SendInitPackets - - arm_func_start SendPingPacket -SendPingPacket: ; 0x021FB39C - stmfd sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x18 - ldr r1, _021FB4B8 ; =0x022197A8 - mov r2, #2 - ldrb r7, [r1] - ldrb r6, [r1, #1] - add r8, sp, #4 - ldrb r5, [r1, #2] - ldrb lr, [r1, #3] - ldrb ip, [r1, #4] - ldrb r3, [r1, #5] - mov r1, #7 - mov r4, r0 - strb r7, [r8] - strb r6, [r8, #1] - strb r5, [r8, #2] - strb lr, [r8, #3] - strb ip, [r8, #4] - strb r2, [sp, #0xa] - strb r1, [sp, #0xb] - strb r3, [r8, #5] - ldr r3, [r4, #8] - mov r1, r3, lsr #0x18 - mov r0, r3, lsr #8 - mov r2, r3, lsl #8 - and r1, r1, #0xff - and r0, r0, #0xff00 - mov r3, r3, lsl #0x18 - orr r0, r1, r0 - and r2, r2, #0xff0000 - and r1, r3, #0xff000000 - orr r0, r2, r0 - orr r0, r1, r0 - str r0, [sp, #0xc] - ldr r0, [r4, #0x2c] - add r3, sp, #4 - str r0, [sp, #0x10] - ldrh r0, [r4, #0x30] - mov r1, r0, asr #8 - mov r0, r0, lsl #8 - and r1, r1, #0xff - and r0, r0, #0xff00 - orr r0, r1, r0 - strh r0, [sp, #0x14] - ldrb r0, [r4, #0x32] - mvn r1, #0 - strb r0, [sp, #0x16] - ldr r0, [r4, #0x10] - cmp r0, #2 - movne r0, #1 - moveq r0, #0 - strb r0, [sp, #0x17] - ldr r0, [r4, #4] - cmp r0, r1 - ldreq r0, [r4] - mov r1, #0x14 - str r1, [sp] - ldrh r2, [r4, #0x30] - ldr r1, [r4, #0x2c] - bl SendPacket - bl current_time - add r0, r0, #0x2bc - str r0, [r4, #0x28] - mov r0, #0xc - str r0, [r4, #0x24] - ldrb r0, [r4, #0x32] - cmp r0, #0 - movne r0, #1 - strneb r0, [r4, #0x33] - add sp, sp, #0x18 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_021FB4B8: .word NNMagicData - arm_func_end SendPingPacket - - arm_func_start NameToIp -NameToIp: ; 0x021FB4BC - stmfd sp!, {r4, lr} - mov r4, r0 - bl inet_addr - mvn r1, #0 - cmp r0, r1 - ldmneia sp!, {r4, pc} - mov r0, r4 - bl SOC_GetHostByName - cmp r0, #0 - moveq r0, #0 - ldrne r0, [r0, #0xc] - ldrne r0, [r0] - ldrne r0, [r0] - ldmia sp!, {r4, pc} - arm_func_end NameToIp - - arm_func_start ResolveServer -ResolveServer: ; 0x021FB4F4 - stmdb sp!, {lr} - sub sp, sp, #0x84 - cmp r0, #0 - bne _021FB520 - ldr r2, _021FB52C ; =0x022197B0 - str r1, [sp] - ldr r3, _021FB530 ; =0x0221AEEC - add r0, sp, #4 - mov r1, #0x80 - bl snprintf - add r0, sp, #4 -_021FB520: - bl NameToIp - add sp, sp, #0x84 - ldmia sp!, {pc} - ; .align 2, 0 -_021FB52C: .word Unk_ov4_022197B0 -_021FB530: .word 0x0221AEEC - arm_func_end ResolveServer - - arm_func_start ResolveServers -ResolveServers: ; 0x021FB534 - stmfd sp!, {r3, lr} - ldr r0, _021FB5A0 ; =0x0221B3E4 - ldr r1, [r0, #0xc] - cmp r1, #0 - bne _021FB55C - ldr r0, [r0, #4] - ldr r1, _021FB5A4 ; =0x022197B8 - bl ResolveServer - ldr r1, _021FB5A0 ; =0x0221B3E4 - str r0, [r1, #0xc] -_021FB55C: - ldr r0, _021FB5A0 ; =0x0221B3E4 - ldr r1, [r0, #8] - cmp r1, #0 - bne _021FB580 - ldr r0, [r0, #0] - ldr r1, _021FB5A8 ; =0x022197D4 - bl ResolveServer - ldr r1, _021FB5A0 ; =0x0221B3E4 - str r0, [r1, #8] -_021FB580: - ldr r0, _021FB5A0 ; =0x0221B3E4 - ldr r1, [r0, #0xc] - cmp r1, #0 - ldrne r0, [r0, #8] - cmpne r0, #0 - moveq r0, #0 - movne r0, #1 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_021FB5A0: .word Matchup2Hostname -_021FB5A4: .word Unk_ov4_022197B8 -_021FB5A8: .word Unk_ov4_022197D4 - arm_func_end ResolveServers - - arm_func_start NNBeginNegotiationWithSocket -NNBeginNegotiationWithSocket: ; 0x021FB5AC - stmfd sp!, {r4, r5, r6, r7, r8, lr} - ldr ip, _021FB670 ; =0x0221AE50 - mov r8, r0 - ldr r0, [ip] - mov r7, r1 - cmp r0, #1 - mov r6, r2 - mov r5, r3 - movne r0, #2 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - bl ResolveServers - cmp r0, #0 - moveq r0, #3 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - bl AddNegotiator - movs r4, r0 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - str r8, [r4, #4] - str r6, [r4, #0xc] - str r7, [r4, #8] - ldr r1, [sp, #0x18] - str r5, [r4, #0x34] - ldr r2, [sp, #0x1c] - str r1, [r4, #0x38] - mov r0, #2 - str r2, [r4, #0x3c] - mov r1, r0 - mov r2, #0 - bl socket - mov r2, #0 - str r0, [r4, #0] - str r2, [r4, #0x20] - strb r2, [r4, #0x32] - strb r2, [r4, #0x33] - str r2, [r4, #0x2c] - strh r2, [r4, #0x30] - str r2, [r4, #0x24] - ldr r1, [r4, #0] - sub r0, r2, #1 - cmp r1, r0 - mov r0, r4 - bne _021FB664 - bl RemoveNegotiator - mov r0, #2 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_021FB664: - bl SendInitPackets - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_021FB670: .word __GSIACResult - arm_func_end NNBeginNegotiationWithSocket - - arm_func_start NNCancel -NNCancel: ; 0x021FB674 - stmfd sp!, {r4, lr} - bl FindNegotiatorForCookie - movs r4, r0 - ldmeqia sp!, {r4, pc} - ldr r0, [r4, #0] - mvn r1, #0 - cmp r0, r1 - beq _021FB698 - bl closesocket -_021FB698: - mvn r0, #0 - str r0, [r4, #0] - mov r0, #4 - str r0, [r4, #0x10] - ldmia sp!, {r4, pc} - arm_func_end NNCancel - - arm_func_start NegotiateThink -NegotiateThink: ; 0x021FB6AC - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x1c - mov r2, #8 - mov sb, r0 - str r2, [sp, #0x10] - ldr r1, [sb, #0x10] - cmp r1, #4 - bne _021FB6D8 - bl RemoveNegotiator - add sp, sp, #0x1c - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} -_021FB6D8: - ldr r0, [sb] - sub r1, r2, #9 - cmp r0, r1 - beq _021FB754 - ldr r6, _021FB898 ; =0x0221B3F8 - add r8, sp, #0x14 - add r7, sp, #0x10 - mov r5, #0x200 - mov r4, #0 - mvn sl, #0 -_021FB700: - bl CanReceiveOnSocket - cmp r0, #0 - beq _021FB754 - str r8, [sp] - str r7, [sp, #4] - ldr r0, [sb] - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl recvfrom - mov r1, r0 - cmp r1, sl - beq _021FB754 - mov r0, r6 - mov r2, r8 - bl NNProcessData - ldr r0, [sb, #0x10] - cmp r0, #4 - ldrne r0, [sb] - cmpne r0, sl - bne _021FB700 -_021FB754: - ldr r0, [sb, #0x10] - cmp r0, #0 - cmpne r0, #2 - bne _021FB7CC - bl current_time - ldr r1, [sb, #0x28] - cmp r0, r1 - bls _021FB7CC - ldr r1, [sb, #0x20] - ldr r0, [sb, #0x24] - cmp r1, r0 - ble _021FB7A8 - mov r0, #2 - ldr r3, [sb, #0x3c] - ldr r4, [sb, #0x38] - sub r1, r0, #3 - mov r2, #0 - blx r4 - ldr r0, [sb, #8] - bl NNCancel - b _021FB7CC -_021FB7A8: - add r0, r1, #1 - str r0, [sb, #0x20] - ldr r0, [sb, #0x10] - cmp r0, #0 - mov r0, sb - bne _021FB7C8 - bl SendInitPackets - b _021FB7CC -_021FB7C8: - bl SendPingPacket -_021FB7CC: - ldr r0, [sb, #0x10] - cmp r0, #3 - bne _021FB84C - bl current_time - ldr r1, [sb, #0x28] - cmp r0, r1 - bls _021FB84C - ldr r1, [sb, #4] - mvn r0, #0 - cmp r1, r0 - bne _021FB844 - mov r0, #2 - strb r0, [sp, #9] - ldrh r1, [sb, #0x30] - add r2, sp, #8 - mov r0, #0 - mov r3, r1, asr #8 - mov r1, r1, lsl #8 - and r3, r3, #0xff - and r1, r1, #0xff00 - orr r1, r3, r1 - strh r1, [sp, #0xa] - ldr r1, [sb, #0x2c] - str r1, [sp, #0xc] - ldr r1, [sb] - ldr r3, [sb, #0x3c] - ldr r4, [sb, #0x38] - blx r4 - mvn r0, #0 - str r0, [sb] -_021FB844: - ldr r0, [sb, #8] - bl NNCancel -_021FB84C: - ldr r0, [sb, #0x10] - cmp r0, #1 - addne sp, sp, #0x1c - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - bl current_time - ldr r1, [sb, #0x28] - cmp r0, r1 - addls sp, sp, #0x1c - ldmlsia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - mov r0, #1 - ldr r3, [sb, #0x3c] - ldr r4, [sb, #0x38] - sub r1, r0, #2 - mov r2, #0 - blx r4 - ldr r0, [sb, #8] - bl NNCancel - add sp, sp, #0x1c - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - ; .align 2, 0 -_021FB898: .word Unk_ov4_0221B3F8 - arm_func_end NegotiateThink - - arm_func_start NNThink -NNThink: ; 0x021FB89C - stmfd sp!, {r3, r4, r5, lr} - ldr r0, _021FB8DC ; =0x0221B3E4 - ldr r0, [r0, #0x10] - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - bl ArrayLength - subs r5, r0, #1 - ldmmiia sp!, {r3, r4, r5, pc} - ldr r4, _021FB8DC ; =0x0221B3E4 -_021FB8C0: - ldr r0, [r4, #0x10] - mov r1, r5 - bl ArrayNth - bl NegotiateThink - subs r5, r5, #1 - bpl _021FB8C0 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_021FB8DC: .word Matchup2Hostname - arm_func_end NNThink - - arm_func_start SendConnectAck -SendConnectAck: ; 0x021FB8E0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x1c - ldr r2, _021FB9A8 ; =0x022197A8 - mov r4, #2 - ldrb r8, [r2] - ldrb r7, [r2, #1] - add r3, sp, #4 - ldrb r6, [r2, #2] - ldrb lr, [r2, #3] - ldrb ip, [r2, #4] - ldrb r5, [r2, #5] - mov r2, #6 - strb r2, [sp, #0xb] - strb r8, [r3] - strb r7, [r3, #1] - strb r6, [r3, #2] - strb lr, [r3, #3] - strb ip, [r3, #4] - strb r5, [r3, #5] - strb r4, [sp, #0xa] - ldr r4, [r0, #0xc] - mov r2, #0x15 - strb r4, [sp, #0x11] - ldr r5, [r0, #8] - mov lr, r5, lsr #0x18 - mov ip, r5, lsr #8 - mov r4, r5, lsl #8 - mov r5, r5, lsl #0x18 - and lr, lr, #0xff - and ip, ip, #0xff00 - and r4, r4, #0xff0000 - orr ip, lr, ip - and r5, r5, #0xff000000 - orr r4, r4, ip - orr r4, r5, r4 - str r4, [sp, #0xc] - ldrh lr, [r1, #2] - str r2, [sp] - mov ip, lr, asr #8 - mov r2, lr, lsl #8 - and ip, ip, #0xff - and r2, r2, #0xff00 - orr r2, ip, r2 - mov r2, r2, lsl #0x10 - ldr r0, [r0, #0] - ldr r1, [r1, #4] - mov r2, r2, lsr #0x10 - bl SendPacket - add sp, sp, #0x1c - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_021FB9A8: .word NNMagicData - arm_func_end SendConnectAck - - arm_func_start ProcessConnectPacket -ProcessConnectPacket: ; 0x021FB9AC - stmfd sp!, {r3, r4, r5, lr} - mov r5, r1 - ldrb r1, [r5, #0x13] - mov r4, r0 - cmp r1, #0 - bne _021FB9CC - mov r1, r2 - bl SendConnectAck -_021FB9CC: - ldr r0, [r4, #0x10] - cmp r0, #2 - ldmgeia sp!, {r3, r4, r5, pc} - ldrb r1, [r5, #0x13] - cmp r1, #0 - beq _021FBA1C - mov r0, #3 - cmp r1, #1 - moveq r0, #1 - beq _021FB9FC - cmp r1, #2 - moveq r0, #2 -_021FB9FC: - ldr r3, [r4, #0x3c] - ldr ip, [r4, #0x38] - mvn r1, #0 - mov r2, #0 - blx ip - ldr r0, [r4, #8] - bl NNCancel - ldmia sp!, {r3, r4, r5, pc} -_021FBA1C: - ldr r1, [r5, #0xc] - mov r0, #2 - str r1, [r4, #0x2c] - ldrh r2, [r5, #0x10] - mov r1, #0 - mov r3, r2, asr #8 - mov r2, r2, lsl #8 - and r3, r3, #0xff - and r2, r2, #0xff00 - orr r2, r3, r2 - strh r2, [r4, #0x30] - str r1, [r4, #0x20] - str r0, [r4, #0x10] - ldr r1, [r4, #0x3c] - ldr r2, [r4, #0x34] - blx r2 - mov r0, r4 - bl SendPingPacket - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ProcessConnectPacket - - arm_func_start ProcessPingPacket -ProcessPingPacket: ; 0x021FBA68 - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r3, [r5, #0x10] - mov r4, r2 - cmp r3, #2 - ldmltia sp!, {r3, r4, r5, pc} - ldr r3, [r4, #4] - mov r2, #1 - str r3, [r5, #0x2c] - ldrh r3, [r4, #2] - mov ip, r3, asr #8 - mov r3, r3, lsl #8 - and ip, ip, #0xff - and r3, r3, #0xff00 - orr r3, ip, r3 - strh r3, [r5, #0x30] - strb r2, [r5, #0x32] - ldrb r2, [r1, #0x12] - cmp r2, #0 - bne _021FBAC0 - bl SendPingPacket - ldmia sp!, {r3, r4, r5, pc} -_021FBAC0: - ldr r2, [r5, #0x10] - cmp r2, #2 - bne _021FBB1C - ldrb r1, [r5, #0x33] - cmp r1, #0 - bne _021FBADC - bl SendPingPacket -_021FBADC: - mov r0, #3 - str r0, [r5, #0x10] - bl current_time - add r0, r0, #0x388 - add r0, r0, #0x1000 - str r0, [r5, #0x28] - ldr r1, [r5, #4] - mvn r0, #0 - cmp r1, r0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r3, [r5, #0x3c] - ldr r5, [r5, #0x38] - mov r2, r4 - mov r0, #0 - blx r5 - ldmia sp!, {r3, r4, r5, pc} -_021FBB1C: - ldrb r1, [r1, #0x13] - cmp r1, #0 - ldmneia sp!, {r3, r4, r5, pc} - bl SendPingPacket - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ProcessPingPacket - - arm_func_start ProcessInitPacket -ProcessInitPacket: ; 0x021FBB30 - stmfd sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r3, r1 - ldrb r1, [r3, #7] - mov r4, r0 - cmp r1, #1 - beq _021FBB5C - cmp r1, #2 - beq _021FBBF0 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} -_021FBB5C: - ldrb r0, [r3, #0xc] - cmp r0, #2 - addhi sp, sp, #4 - ldmhiia sp!, {r3, r4, pc} - add r0, r4, r0, lsl #2 - mov r2, #1 - str r2, [r0, #0x14] - ldr r0, [r4, #0x10] - cmp r0, #0 - addne sp, sp, #4 - ldmneia sp!, {r3, r4, pc} - ldr r0, [r4, #0x18] - cmp r0, #0 - ldrne r0, [r4, #0x1c] - cmpne r0, #0 - addeq sp, sp, #4 - ldmeqia sp!, {r3, r4, pc} - ldr r1, [r4, #4] - sub r0, r2, #2 - cmp r1, r0 - beq _021FBBC0 - ldr r0, [r4, #0x14] - cmp r0, #0 - addeq sp, sp, #4 - ldmeqia sp!, {r3, r4, pc} -_021FBBC0: - mov r0, #1 - str r0, [r4, #0x10] - bl current_time - add r0, r0, #0x710 - add r0, r0, #0x2000 - str r0, [r4, #0x28] - ldr r0, [r4, #0x10] - ldr r1, [r4, #0x3c] - ldr r2, [r4, #0x34] - blx r2 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} -_021FBBF0: - mov r0, #3 - strb r0, [r3, #7] - ldrh r0, [r2, #2] - mov ip, #0x15 - mov r1, r0, asr #8 - mov r0, r0, lsl #8 - str ip, [sp] - and r1, r1, #0xff - and r0, r0, #0xff00 - orr r0, r1, r0 - mov ip, r0, lsl #0x10 - ldr r1, [r2, #4] - ldr r0, [r4, #0] - mov r2, ip, lsr #0x10 - bl SendPacket - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - arm_func_end ProcessInitPacket - - arm_func_start NNProcessData -NNProcessData: ; 0x021FBC34 - stmfd sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x2c - mov r6, r0 - mov r7, r1 - mov r5, r2 - bl CheckMagic - cmp r0, #0 - addeq sp, sp, #0x2c - ldmeqia sp!, {r4, r5, r6, r7, pc} - ldrb r4, [r6, #7] - cmp r4, #5 - cmpne r4, #7 - bne _021FBD04 - cmp r7, #0x14 - addlt sp, sp, #0x2c - ldmltia sp!, {r4, r5, r6, r7, pc} - add r3, sp, #0x18 - mov r2, #0xa -_021FBC7C: - ldrb r1, [r6] - ldrb r0, [r6, #1] - add r6, r6, #2 - subs r2, r2, #1 - strb r1, [r3] - strb r0, [r3, #1] - add r3, r3, #2 - bne _021FBC7C - ldr r3, [sp, #0x20] - mov r1, r3, lsr #0x18 - mov r0, r3, lsr #8 - mov r2, r3, lsl #8 - and r1, r1, #0xff - and r0, r0, #0xff00 - mov r3, r3, lsl #0x18 - orr r0, r1, r0 - and r2, r2, #0xff0000 - and r1, r3, #0xff000000 - orr r0, r2, r0 - orr r0, r1, r0 - bl FindNegotiatorForCookie - cmp r0, #0 - addeq sp, sp, #0x2c - ldmeqia sp!, {r4, r5, r6, r7, pc} - cmp r4, #5 - add r1, sp, #0x18 - mov r2, r5 - bne _021FBCF8 - bl ProcessConnectPacket - add sp, sp, #0x2c - ldmia sp!, {r4, r5, r6, r7, pc} -_021FBCF8: - bl ProcessPingPacket - add sp, sp, #0x2c - ldmia sp!, {r4, r5, r6, r7, pc} -_021FBD04: - cmp r7, #0x15 - addlt sp, sp, #0x2c - ldmltia sp!, {r4, r5, r6, r7, pc} - add r3, sp, #0 - mov r2, #0xa -_021FBD18: - ldrb r1, [r6] - ldrb r0, [r6, #1] - add r6, r6, #2 - subs r2, r2, #1 - strb r1, [r3] - strb r0, [r3, #1] - add r3, r3, #2 - bne _021FBD18 - ldrb r0, [r6] - strb r0, [r3] - ldr r3, [sp, #8] - mov r1, r3, lsr #0x18 - mov r0, r3, lsr #8 - mov r2, r3, lsl #8 - and r1, r1, #0xff - and r0, r0, #0xff00 - mov r3, r3, lsl #0x18 - orr r0, r1, r0 - and r2, r2, #0xff0000 - and r1, r3, #0xff000000 - orr r0, r2, r0 - orr r0, r1, r0 - bl FindNegotiatorForCookie - cmp r0, #0 - addeq sp, sp, #0x2c - ldmeqia sp!, {r4, r5, r6, r7, pc} - add r1, sp, #0 - mov r2, r5 - bl ProcessInitPacket - add sp, sp, #0x2c - ldmia sp!, {r4, r5, r6, r7, pc} - arm_func_end NNProcessData - - .data - - - .global NNMagicData -NNMagicData: ; 0x022197A8 - .byte 0xFD, 0xFC, 0x1E, 0x66, 0x6A, 0xB2 - .space 0x2 - - .global Unk_ov4_022197B0 -Unk_ov4_022197B0: ; 0x022197B0 - .asciz "%s.%s" - .space 0x2 - - .global Unk_ov4_022197B8 -Unk_ov4_022197B8: ; 0x022197B8 - .asciz "natneg1.gs.nintendowifi.net" - - .global Unk_ov4_022197D4 -Unk_ov4_022197D4: ; 0x022197D4 - .asciz "natneg2.gs.nintendowifi.net" - - - - .bss - - - .global Matchup2Hostname -Matchup2Hostname: ; 0x0221B3E4 - .space 0x4 - - .global Matchup1Hostname -Matchup1Hostname: ; 0x0221B3E8 - .space 0x4 - - .global matchup2ip -matchup2ip: ; 0x0221B3EC - .space 0x4 - - .global matchup1ip -matchup1ip: ; 0x0221B3F0 - .space 0x4 - - .global negotiateList -negotiateList: ; 0x0221B3F4 - .space 0x4 - - .global Unk_ov4_0221B3F8 -Unk_ov4_0221B3F8: ; 0x0221B3F8 - .space 0x200 - diff --git a/subprojects/gamespy/libraries/natneg/meson.build b/subprojects/gamespy/libraries/natneg/meson.build deleted file mode 100644 index 4ac4ff16e9..0000000000 --- a/subprojects/gamespy/libraries/natneg/meson.build +++ /dev/null @@ -1,10 +0,0 @@ -libdwcgsnatneg_srcs = files('asm/natneg.s') - -libdwcgsnatneg = static_library('dwcgsnatneg', - sources: libdwcgsnatneg_srcs, - nasm_args: asm_args, - include_directories: public_includes, - pic: false -) - -gamespy_libs += libdwcgsnatneg diff --git a/subprojects/gamespy/libraries/qr2/asm/include/qr2.inc b/subprojects/gamespy/libraries/qr2/asm/include/qr2.inc deleted file mode 100644 index dc74d2ce32..0000000000 --- a/subprojects/gamespy/libraries/qr2/asm/include/qr2.inc +++ /dev/null @@ -1,44 +0,0 @@ -.public memcpy -.public sprintf -.public rand -.public srand -.public sscanf -.public strlen -.public strcpy -.public strcmp -.public _s32_div_f -.public DWCi_GsMalloc -.public DWCi_GsFree -.public current_time -.public SocketShutDown -.public CanReceiveOnSocket -.public getlocalhost -.public closesocket -.public recvfrom -.public sendto -.public inet_addr -.public qr2_check_queries -.public qr2_check_send_heartbeat -.public qr2_buffer_add_int -.public qr2_buffer_addA -.public enum_local_ips -.public get_sockaddrin -.public swap_byte -.public encode_ct -.public gs_encode -.public gs_encrypt -.public qr_add_packet_header -.public compute_challenge_response -.public handle_public_address -.public qr_build_partial_query_reply -.public qr_build_query_reply -.public qr_process_query -.public qr_build_partial_old_query_reply -.public qr_process_old_query -.public qr_process_client_message -.public qr_got_recent_message -.public qr2_parse_queryA -.public send_keepalive -.public send_heartbeat -.public SOC_GetHostByName -.public SOC_InetNtoA diff --git a/subprojects/gamespy/libraries/qr2/asm/macros/function.inc b/subprojects/gamespy/libraries/qr2/asm/macros/function.inc deleted file mode 100644 index f71cc4ccae..0000000000 --- a/subprojects/gamespy/libraries/qr2/asm/macros/function.inc +++ /dev/null @@ -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 \ No newline at end of file diff --git a/subprojects/gamespy/libraries/qr2/asm/qr2.s b/subprojects/gamespy/libraries/qr2/asm/qr2.s deleted file mode 100644 index b556ec4904..0000000000 --- a/subprojects/gamespy/libraries/qr2/asm/qr2.s +++ /dev/null @@ -1,1844 +0,0 @@ - .include "macros/function.inc" - .include "include/qr2.inc" - - - - .extern qr2_registered_key_list - .text - - - arm_func_start qr2_init_socketA -qr2_init_socketA: ; 0x021FBD94 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x40 - movs r5, r0 - mov r8, r1 - mov r4, r2 - mov r7, r3 - ldreq r6, _021FBF40 ; =0x022197F4 - beq _021FBDC4 - mov r0, #0x110 - bl DWCi_GsMalloc - mov r6, r0 - str r0, [r5, #0] -_021FBDC4: - bl current_time - bl srand - mov r1, r7 - add r0, r6, #4 - bl strcpy - ldr r1, [sp, #0x58] - add r0, r6, #0x44 - bl strcpy - str r4, [r6, #0xc0] - mov r5, #0 - str r5, [r6, #0xac] - str r5, [r6, #0xb0] - str r8, [r6] - mov r1, #1 - str r1, [r6, #0xb8] - ldr r0, [sp, #0x7c] - ldr r1, [sp, #0x64] - str r0, [r6, #0x10c] - str r1, [r6, #0x88] - ldr r0, [sp, #0x68] - ldr r1, [sp, #0x6c] - str r0, [r6, #0x8c] - str r1, [r6, #0x90] - ldr r0, [sp, #0x70] - ldr r1, [sp, #0x74] - str r0, [r6, #0x94] - ldr r0, [sp, #0x78] - str r1, [r6, #0x98] - str r0, [r6, #0x9c] - str r5, [r6, #0xa0] - str r5, [r6, #0xa4] - ldr r0, [sp, #0x5c] - str r5, [r6, #0xd4] - str r0, [r6, #0xbc] - ldr r0, [sp, #0x60] - str r5, [r6, #0xc4] - str r0, [r6, #0xc8] - str r5, [r6, #0x104] - add r0, r6, #0x100 - strh r5, [r0, #8] - str r5, [r6, #0xa8] - ldr r4, _021FBF44 ; =0x80808081 - str r5, [r6, #0xb4] - mov r8, #0xff -_021FBE74: - bl rand - smull r1, r2, r4, r0 - add r3, r6, r5 - add r5, r5, #1 - add r2, r0, r2 - mov r1, r0, lsr #0x1f - add r2, r1, r2, asr #7 - smull r1, r2, r8, r2 - sub r2, r0, r1 - strb r2, [r3, #0x84] - cmp r5, #4 - blt _021FBE74 - mov r2, #0 - mvn r1, #0 -_021FBEAC: - add r0, r6, r2, lsl #2 - add r2, r2, #1 - str r1, [r0, #0xd8] - cmp r2, #0xa - blt _021FBEAC - mov r1, #0 - ldr r0, _021FBF48 ; =0x0221B5F8 - str r1, [r6, #0x100] - ldr r0, [r0, #0] - cmp r0, #0 - bne _021FBEDC - bl enum_local_ips -_021FBEDC: - ldr r0, [sp, #0x5c] - cmp r0, #0 - beq _021FBF28 - ldr r0, _021FBF4C ; =0x0221B610 - ldrsb r4, [r0] - cmp r4, #0 - bne _021FBF08 - ldr r1, _021FBF50 ; =0x02219904 - add r0, sp, #0 - mov r2, r7 - bl sprintf -_021FBF08: - cmp r4, #0 - ldrne r0, _021FBF4C ; =0x0221B610 - ldr r1, _021FBF54 ; =0x00006CFC - addeq r0, sp, #0 - add r2, r6, #0xcc - mov r3, #0 - bl get_sockaddrin - b _021FBF2C -_021FBF28: - mov r0, #1 -_021FBF2C: - cmp r0, #0 - moveq r0, #3 - movne r0, #0 - add sp, sp, #0x40 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_021FBF40: .word Unk_ov4_022197F4 -_021FBF44: .word 0x80808081 -_021FBF48: .word Unk_ov4_0221B5F8 -_021FBF4C: .word Unk_ov4_0221B610 -_021FBF50: .word Unk_ov4_02219904 -_021FBF54: .word 0x00006CFC - arm_func_end qr2_init_socketA - - arm_func_start qr2_register_natneg_callback -qr2_register_natneg_callback: ; 0x021FBF58 - cmp r0, #0 - ldreq r0, _021FBF6C ; =0x022197F0 - ldreq r0, [r0] - str r1, [r0, #0xa0] - bx lr - ; .align 2, 0 -_021FBF6C: .word Unk_ov4_022197F0 - arm_func_end qr2_register_natneg_callback - - arm_func_start qr2_register_clientmessage_callback -qr2_register_clientmessage_callback: ; 0x021FBF70 - cmp r0, #0 - ldreq r0, _021FBF84 ; =0x022197F0 - ldreq r0, [r0] - str r1, [r0, #0xa4] - bx lr - ; .align 2, 0 -_021FBF84: .word Unk_ov4_022197F0 - arm_func_end qr2_register_clientmessage_callback - - arm_func_start qr2_register_publicaddress_callback -qr2_register_publicaddress_callback: ; 0x021FBF88 - cmp r0, #0 - ldreq r0, _021FBF9C ; =0x022197F0 - ldreq r0, [r0] - str r1, [r0, #0xa8] - bx lr - ; .align 2, 0 -_021FBF9C: .word Unk_ov4_022197F0 - arm_func_end qr2_register_publicaddress_callback - - arm_func_start qr2_think -qr2_think: ; 0x021FBFA0 - stmfd sp!, {r4, lr} - movs r4, r0 - ldreq r0, _021FBFD0 ; =0x022197F0 - ldreq r4, [r0] - ldr r0, [r4, #0xbc] - cmp r0, #0 - beq _021FBFC4 - mov r0, r4 - bl qr2_check_send_heartbeat -_021FBFC4: - mov r0, r4 - bl qr2_check_queries - ldmia sp!, {r4, pc} - ; .align 2, 0 -_021FBFD0: .word Unk_ov4_022197F0 - arm_func_end qr2_think - - arm_func_start qr2_check_queries -qr2_check_queries: ; 0x021FBFD4 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - mov r1, #8 - mov sl, r0 - str r1, [sp, #8] - ldr r0, [sl, #0xc4] - cmp r0, #0 - addeq sp, sp, #0x14 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [sl] - bl CanReceiveOnSocket - cmp r0, #0 - addeq sp, sp, #0x14 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r5, #0 - ldr r7, _021FC07C ; =0x0221B650 - add sb, sp, #0xc - add r8, sp, #8 - mov r6, #0xff - mov fp, r5 - mvn r4, #0 -_021FC028: - str sb, [sp] - str r8, [sp, #4] - ldr r0, [sl] - mov r1, r7 - mov r2, r6 - mov r3, fp - bl recvfrom - mov r2, r0 - cmp r2, r4 - beq _021FC064 - mov r0, sl - mov r1, r7 - mov r3, sb - strb r5, [r7, r2] - bl qr2_parse_queryA -_021FC064: - ldr r0, [sl] - bl CanReceiveOnSocket - cmp r0, #0 - bne _021FC028 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_021FC07C: .word Unk_ov4_0221B650 - arm_func_end qr2_check_queries - - arm_func_start qr2_check_send_heartbeat -qr2_check_send_heartbeat: ; 0x021FC080 - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - bl current_time - ldr r2, [r5, #0] - mvn r1, #0 - mov r4, r0 - cmp r2, r1 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r2, [r5, #0xb8] - cmp r2, #0 - ble _021FC104 - ldr r1, [r5, #0xac] - ldr r0, _021FC184 ; =0x00002710 - sub r1, r4, r1 - cmp r1, r0 - bls _021FC104 - cmp r2, #4 - blt _021FC0E8 - mov r0, #0 - str r0, [r5, #0xb8] - ldr r2, [r5, #0x10c] - ldr r3, [r5, #0x9c] - ldr r1, _021FC188 ; =0x02219924 - mov r0, #5 - blx r3 - ldmia sp!, {r3, r4, r5, pc} -_021FC0E8: - mov r0, r5 - mov r1, #3 - bl send_heartbeat - ldr r0, [r5, #0xb8] - add r0, r0, #1 - str r0, [r5, #0xb8] - b _021FC164 -_021FC104: - ldr r0, [r5, #0xb4] - cmp r0, #0 - beq _021FC134 - ldr r1, [r5, #0xac] - ldr r0, _021FC184 ; =0x00002710 - sub r1, r4, r1 - cmp r1, r0 - bls _021FC134 - mov r0, r5 - mov r1, #1 - bl send_heartbeat - b _021FC164 -_021FC134: - ldr r2, [r5, #0xac] - ldr r0, _021FC18C ; =0x0000EA60 - sub r1, r4, r2 - cmp r1, r0 - bhi _021FC158 - cmp r2, #0 - beq _021FC158 - cmp r4, r2 - bhs _021FC164 -_021FC158: - mov r0, r5 - mov r1, #0 - bl send_heartbeat -_021FC164: - ldr r1, [r5, #0xb0] - ldr r0, _021FC190 ; =0x00004E20 - sub r1, r4, r1 - cmp r1, r0 - ldmlsia sp!, {r3, r4, r5, pc} - mov r0, r5 - bl send_keepalive - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_021FC184: .word 0x00002710 -_021FC188: .word Unk_ov4_02219924 -_021FC18C: .word 0x0000EA60 -_021FC190: .word 0x00004E20 - arm_func_end qr2_check_send_heartbeat - - arm_func_start qr2_send_statechanged -qr2_send_statechanged: ; 0x021FC194 - stmfd sp!, {r4, lr} - movs r4, r0 - ldreq r0, _021FC1E8 ; =0x022197F0 - ldreq r4, [r0] - ldr r0, [r4, #0xbc] - cmp r0, #0 - ldmeqia sp!, {r4, pc} - bl current_time - ldr r2, [r4, #0xac] - ldr r1, _021FC1EC ; =0x00002710 - sub r0, r0, r2 - cmp r0, r1 - movlo r0, #1 - strlo r0, [r4, #0xb4] - ldmloia sp!, {r4, pc} - mov r0, r4 - mov r1, #1 - bl send_heartbeat - mov r0, #0 - str r0, [r4, #0xb4] - ldmia sp!, {r4, pc} - ; .align 2, 0 -_021FC1E8: .word Unk_ov4_022197F0 -_021FC1EC: .word 0x00002710 - arm_func_end qr2_send_statechanged - - arm_func_start qr2_shutdown -qr2_shutdown: ; 0x021FC1F0 - stmfd sp!, {r4, lr} - movs r4, r0 - ldreq r0, _021FC26C ; =0x022197F0 - ldreq r4, [r0] - ldr r0, [r4, #0xbc] - cmp r0, #0 - beq _021FC218 - mov r0, r4 - mov r1, #2 - bl send_heartbeat -_021FC218: - ldr r0, [r4, #0] - mvn r1, #0 - cmp r0, r1 - ldrne r1, [r4, #0xc4] - cmpne r1, #0 - beq _021FC234 - bl closesocket -_021FC234: - mvn r0, #0 - str r0, [r4, #0] - mov r0, #0 - str r0, [r4, #0xac] - ldr r0, [r4, #0xc4] - cmp r0, #0 - beq _021FC254 - bl SocketShutDown -_021FC254: - ldr r0, _021FC270 ; =0x022197F4 - cmp r4, r0 - ldmeqia sp!, {r4, pc} - mov r0, r4 - bl DWCi_GsFree - ldmia sp!, {r4, pc} - ; .align 2, 0 -_021FC26C: .word Unk_ov4_022197F0 -_021FC270: .word Unk_ov4_022197F4 - arm_func_end qr2_shutdown - - arm_func_start qr2_keybuffer_add -qr2_keybuffer_add: ; 0x021FC274 - ldr r3, [r0, #0x100] - cmp r3, #0xfe - bxge lr - cmp r1, #1 - bxlt lr - cmp r1, #0xfe - bxgt lr - add r2, r3, #1 - str r2, [r0, #0x100] - strb r1, [r0, r3] - bx lr - arm_func_end qr2_keybuffer_add - - arm_func_start qr2_buffer_add_int -qr2_buffer_add_int: ; 0x021FC2A0 - stmfd sp!, {r3, r4, lr} - sub sp, sp, #0x14 - mov r2, r1 - mov r4, r0 - ldr r1, _021FC2D0 ; =0x0221995C - add r0, sp, #0 - bl sprintf - add r1, sp, #0 - mov r0, r4 - bl qr2_buffer_addA - add sp, sp, #0x14 - ldmia sp!, {r3, r4, pc} - ; .align 2, 0 -_021FC2D0: .word Unk_ov4_0221995C - arm_func_end qr2_buffer_add_int - - arm_func_start qr2_buffer_addA -qr2_buffer_addA: ; 0x021FC2D4 - stmfd sp!, {r4, r5, r6, lr} - mov r6, r1 - mov r4, r0 - mov r0, r6 - bl strlen - ldr r3, [r4, #0x800] - add r5, r0, #1 - rsb r0, r3, #0x800 - cmp r5, r0 - movgt r5, r0 - cmp r5, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r1, r6 - mov r2, r5 - add r0, r4, r3 - bl memcpy - ldr r0, [r4, #0x800] - mov r1, #0 - add r0, r0, r5 - str r0, [r4, #0x800] - sub r0, r0, #1 - strb r1, [r4, r0] - ldmia sp!, {r4, r5, r6, pc} - arm_func_end qr2_buffer_addA - - arm_func_start enum_local_ips -enum_local_ips: ; 0x021FC330 - stmfd sp!, {r4, r5, r6, lr} - bl getlocalhost - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r1, _021FC39C ; =0x0221B5F8 - mov r6, #0 - ldr ip, _021FC3A0 ; =0x0221B5FC - str r6, [r1, #0] -_021FC350: - ldr r2, [r0, #0xc] - mov r5, r6, lsl #2 - ldr r4, [r2, r6, lsl #2] - cmp r4, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldrb r3, [r4] - ldrb r2, [r4, #1] - add r6, r6, #1 - add lr, ip, r5 - strb r3, [ip, r5] - strb r2, [lr, #1] - ldrb r3, [r4, #2] - ldrb r2, [r4, #3] - cmp r6, #5 - strb r3, [lr, #2] - strb r2, [lr, #3] - str r6, [r1, #0] - blt _021FC350 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_021FC39C: .word Unk_ov4_0221B5F8 -_021FC3A0: .word Unk_ov4_0221B5FC - arm_func_end enum_local_ips - - arm_func_start get_sockaddrin -get_sockaddrin: ; 0x021FC3A4 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 - mov r4, r1, asr #8 - mov r1, r1, lsl #8 - mov r6, r2 - mov r5, #2 - and r2, r4, #0xff - and r1, r1, #0xff00 - strb r5, [r6, #1] - orr r1, r2, r1 - strh r1, [r6, #2] - mov r4, #0 - movs r7, r0 - mov r5, r3 - streq r4, [r6, #4] - beq _021FC3F0 - bl inet_addr - str r0, [r6, #4] -_021FC3F0: - ldr r1, [r6, #4] - mvn r0, #0 - cmp r1, r0 - bne _021FC438 - ldr r1, _021FC448 ; =0x02219960 - mov r0, r7 - bl strcmp - cmp r0, #0 - beq _021FC438 - mov r0, r7 - bl SOC_GetHostByName - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r4, #0xc] - ldr r0, [r0, #0] - ldr r0, [r0, #0] - str r0, [r6, #4] -_021FC438: - cmp r5, #0 - strne r4, [r5] - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021FC448: .word Unk_ov4_02219960 - arm_func_end get_sockaddrin - - arm_func_start swap_byte -swap_byte: ; 0x021FC44C - ldrb r3, [r0] - ldrb r2, [r1] - strb r2, [r0] - strb r3, [r1] - bx lr - arm_func_end swap_byte - - arm_func_start encode_ct -encode_ct: ; 0x021FC460 - cmp r0, #0x1a - addlo r0, r0, #0x41 - andlo r0, r0, #0xff - bxlo lr - cmp r0, #0x34 - addlo r0, r0, #0x47 - andlo r0, r0, #0xff - bxlo lr - cmp r0, #0x3e - sublo r0, r0, #4 - andlo r0, r0, #0xff - bxlo lr - moveq r0, #0x2b - bxeq lr - cmp r0, #0x3f - moveq r0, #0x2f - movne r0, #0 - bx lr - arm_func_end encode_ct - - arm_func_start gs_encode -gs_encode: ; 0x021FC4A8 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #8 - mov r7, r1 - mov r8, r0 - mov r6, r2 - cmp r7, #0 - mov r4, #0 - ble _021FC55C -_021FC4C8: - mov r2, #0 - add r3, sp, #4 - mov r0, r2 -_021FC4D4: - cmp r4, r7 - ldrltb r1, [r8], #1 - add r2, r2, #1 - add r4, r4, #1 - strltb r1, [r3] - strgeb r0, [r3] - cmp r2, #2 - add r3, r3, #1 - ble _021FC4D4 - ldrb r0, [sp, #4] - ldrb r5, [sp, #5] - ldrb r2, [sp, #6] - mov r3, r0, lsl #0x1e - mov r1, r5, asr #4 - add ip, r1, r3, lsr #26 - and r1, r2, #0x3f - mov r3, r5, lsl #0x1c - mov r2, r2, asr #6 - mov r0, r0, asr #2 - add r2, r2, r3, lsr #26 - add r5, sp, #0 - strb r0, [sp] - strb ip, [sp, #1] - strb r2, [sp, #2] - strb r1, [sp, #3] - mov sb, #0 -_021FC53C: - ldrb r0, [r5], #1 - bl encode_ct - add sb, sb, #1 - cmp sb, #3 - strb r0, [r6], #1 - ble _021FC53C - cmp r4, r7 - blt _021FC4C8 -_021FC55C: - mov r0, #0 - strb r0, [r6] - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end gs_encode - - arm_func_start gs_encrypt -gs_encrypt: ; 0x021FC56C - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x104 - str r1, [sp] - add r4, sp, #4 - mov sl, r0 - mov sb, r2 - mov r8, r3 - mov r1, #0 -_021FC58C: - add r0, r1, #1 - mov r0, r0, lsl #0x10 - strb r1, [r4], #1 - mov r1, r0, asr #0x10 - cmp r1, #0x100 - blt _021FC58C - mov r4, #0 - add r6, sp, #4 - mov r5, r4 - mov r7, r4 - mov fp, r6 -_021FC5B8: - ldrb r3, [r6] - ldrb r2, [sl, r4] - ldr r1, [sp] - add r0, r4, #1 - add r2, r3, r2 - add r2, r5, r2 - mov r3, r2, lsr #0x1f - rsb r2, r3, r2, lsl #24 - add r2, r3, r2, ror #24 - and r5, r2, #0xff - bl _s32_div_f - and r4, r1, #0xff - mov r0, r6 - add r1, fp, r5 - bl swap_byte - add r0, r7, #1 - mov r0, r0, lsl #0x10 - mov r7, r0, asr #0x10 - cmp r7, #0x100 - add r6, r6, #1 - blt _021FC5B8 - mov r6, #0 - cmp r8, #0 - mov r7, r6 - mov r5, r6 - addle sp, sp, #0x104 - ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r4, sp, #4 -_021FC628: - ldrb r0, [sb, r5] - add r0, r6, r0 - add r0, r0, #1 - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #24 - add r0, r1, r0, ror #24 - and r6, r0, #0xff - ldrb r1, [r4, r6] - add r0, r4, r6 - add r1, r1, r7 - mov r2, r1, lsr #0x1f - rsb r1, r2, r1, lsl #24 - add r1, r2, r1, ror #24 - and r7, r1, #0xff - add r1, r4, r7 - bl swap_byte - ldrb r3, [r4, r6] - ldrb r1, [r4, r7] - add r0, r5, #1 - mov r2, r0, lsl #0x10 - add r0, r3, r1 - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #24 - add r0, r1, r0, ror #24 - and r0, r0, #0xff - ldrb r1, [sb, r5] - ldrb r0, [r4, r0] - cmp r8, r2, asr #16 - eor r0, r1, r0 - strb r0, [sb, r5] - mov r5, r2, asr #0x10 - bgt _021FC628 - add sp, sp, #0x104 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end gs_encrypt - - arm_func_start qr_add_packet_header -qr_add_packet_header: ; 0x021FC6B0 - strb r1, [r0] - ldrb ip, [r2] - ldrb r3, [r2, #1] - mov r1, #5 - strb ip, [r0, #1] - strb r3, [r0, #2] - ldrb r3, [r2, #2] - ldrb r2, [r2, #3] - strb r3, [r0, #3] - strb r2, [r0, #4] - str r1, [r0, #0x800] - bx lr - arm_func_end qr_add_packet_header - - arm_func_start compute_challenge_response -compute_challenge_response: ; 0x021FC6E0 - stmfd sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0x44 - mov r5, r3 - cmp r5, #1 - mov r6, r0 - mov r4, r1 - addlt sp, sp, #0x44 - ldmltia sp!, {r3, r4, r5, r6, pc} - cmp r5, #0x41 - addgt sp, sp, #0x44 - ldmgtia sp!, {r3, r4, r5, r6, pc} - sub r0, r5, #1 - ldrsb r0, [r2, r0] - cmp r0, #0 - addne sp, sp, #0x44 - ldmneia sp!, {r3, r4, r5, r6, pc} - add r0, sp, #0 - mov r1, r2 - bl strcpy - add r0, r6, #0x44 - bl strlen - mov r1, r0 - add r2, sp, #0 - add r0, r6, #0x44 - sub r3, r5, #1 - bl gs_encrypt - ldr r2, [r4, #0x800] - sub r1, r5, #1 - add r0, sp, #0 - add r2, r4, r2 - bl gs_encode - ldr r0, [r4, #0x800] - add r0, r4, r0 - bl strlen - ldr r1, [r4, #0x800] - add r0, r0, #1 - add r0, r1, r0 - str r0, [r4, #0x800] - add sp, sp, #0x44 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end compute_challenge_response - - arm_func_start handle_public_address -handle_public_address: ; 0x021FC780 - stmfd sp!, {r4, lr} - sub sp, sp, #8 - mov r4, r0 - mov r0, r1 - ldr r1, _021FC82C ; =0x02219970 - add r2, sp, #4 - add r3, sp, #0 - bl sscanf - ldr r0, [sp, #4] - ldr lr, [sp] - mov r2, r0, lsr #0x18 - mov r1, r0, lsr #8 - mov r3, r0, lsl #8 - mov ip, r0, lsl #0x18 - and r2, r2, #0xff - and r1, r1, #0xff00 - orr r1, r2, r1 - and r3, r3, #0xff0000 - mov r0, lr, lsl #0x10 - and r2, ip, #0xff000000 - orr r1, r3, r1 - orrs r2, r2, r1 - mov r1, r0, lsr #0x10 - str r2, [sp, #4] - cmpne r1, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r4, pc} - ldr r0, [r4, #0x104] - cmp r0, r2 - addeq r0, r4, #0x100 - ldreqh r0, [r0, #8] - cmpeq r0, r1 - addeq sp, sp, #8 - ldmeqia sp!, {r4, pc} - str r2, [r4, #0x104] - add r0, r4, #0x100 - strh r1, [r0, #8] - ldr r0, [sp, #4] - ldr r2, [r4, #0x10c] - ldr r3, [r4, #0xa8] - blx r3 - add sp, sp, #8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_021FC82C: .word Unk_ov4_02219970 - arm_func_end handle_public_address - - arm_func_start qr_build_partial_query_reply -qr_build_partial_query_reply: ; 0x021FC830 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x10c - movs fp, r3 - mov r3, #0 - ldr r7, [sp, #0x130] - str r3, [sp, #0x108] - mov sl, r0 - mov sb, r1 - mov r8, r2 - addeq sp, sp, #0x10c - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - sub r0, r8, #1 - cmp r0, #1 - bhi _021FC8DC - ldr r0, [sb, #0x800] - rsb r0, r0, #0x800 - cmp r0, #2 - addlo sp, sp, #0x10c - ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [sl, #0x10c] - ldr r2, [sl, #0x98] - mov r0, r8 - blx r2 - str r0, [sp] - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r1, r0, asr #8 - mov r0, r0, lsl #8 - and r1, r1, #0xff - and r0, r0, #0xff00 - orr r0, r1, r0 - strh r0, [sp, #4] - add r0, sp, #4 - ldrb r1, [r0] - ldr r2, [sb, #0x800] - ldrb r0, [r0, #1] - add r3, sb, r2 - strb r1, [sb, r2] - strb r0, [r3, #1] - ldr r0, [sb, #0x800] - add r0, r0, #2 - str r0, [sb, #0x800] - b _021FC8E4 -_021FC8DC: - mov r0, #1 - str r0, [sp] -_021FC8E4: - cmp fp, #0xff - bne _021FC9B8 - ldr r2, [sl, #0x10c] - ldr r3, [sl, #0x94] - add r1, sp, #8 - mov r0, r8 - blx r3 - ldr r0, [sp, #0x108] - mov r5, #0 - cmp r0, #0 - ble _021FC980 - ldr fp, _021FCA7C ; =0x0221997C - ldr r4, _021FCA80 ; =0x02219B38 - add r7, sp, #8 -_021FC91C: - ldrb r0, [r7] - ldr r1, [r4, r0, lsl #2] - mov r0, sb - cmp r1, #0 - moveq r1, fp - bl qr2_buffer_addA - cmp r8, #0 - bne _021FC96C - ldrb r0, [r7] - ldr r2, [sl, #0x10c] - ldr r3, [sl, #0x88] - mov r1, sb - ldr r6, [sb, #0x800] - blx r3 - ldr r0, [sb, #0x800] - cmp r6, r0 - bne _021FC96C - ldr r1, _021FCA84 ; =0x02219984 - mov r0, sb - bl qr2_buffer_addA -_021FC96C: - ldr r0, [sp, #0x108] - add r5, r5, #1 - cmp r5, r0 - add r7, r7, #1 - blt _021FC91C -_021FC980: - ldr r1, [sb, #0x800] - rsb r0, r1, #0x800 - cmp r0, #1 - addlt sp, sp, #0x10c - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r0, r1, #1 - str r0, [sb, #0x800] - mov r0, #0 - strb r0, [sb, r1] - ldr fp, [sp, #0x108] - cmp r8, #0 - add r7, sp, #8 - addeq sp, sp, #0x10c - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021FC9B8: - ldr r0, [sp] - mov r4, #0 - cmp r0, #0 - addle sp, sp, #0x10c - ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021FC9CC: - mov r5, #0 - cmp fp, #0 - ble _021FCA64 -_021FC9D8: - cmp r8, #0 - ldr r6, [sb, #0x800] - bne _021FC9FC - ldrb r0, [r7, r5] - ldr r2, [sl, #0x10c] - ldr r3, [sl, #0x88] - mov r1, sb - blx r3 - b _021FCA40 -_021FC9FC: - cmp r8, #1 - bne _021FCA20 - ldrb r0, [r7, r5] - ldr r3, [sl, #0x10c] - ldr ip, [sl, #0x8c] - mov r1, r4 - mov r2, sb - blx ip - b _021FCA40 -_021FCA20: - cmp r8, #2 - bne _021FCA40 - ldrb r0, [r7, r5] - ldr r3, [sl, #0x10c] - ldr ip, [sl, #0x90] - mov r1, r4 - mov r2, sb - blx ip -_021FCA40: - ldr r0, [sb, #0x800] - cmp r6, r0 - bne _021FCA58 - ldr r1, _021FCA84 ; =0x02219984 - mov r0, sb - bl qr2_buffer_addA -_021FCA58: - add r5, r5, #1 - cmp r5, fp - blt _021FC9D8 -_021FCA64: - ldr r0, [sp] - add r4, r4, #1 - cmp r4, r0 - blt _021FC9CC - add sp, sp, #0x10c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_021FCA7C: .word Unk_ov4_0221997C -_021FCA80: .word qr2_registered_key_list -_021FCA84: .word Unk_ov4_02219984 - arm_func_end qr_build_partial_query_reply - - arm_func_start qr_build_query_reply -qr_build_query_reply: ; 0x021FCA88 - stmfd sp!, {r3, r4, r5, lr} - str r3, [sp] - mov r3, r2 - mov r2, #0 - mov r5, r0 - mov r4, r1 - bl qr_build_partial_query_reply - ldr ip, [sp, #0x14] - ldr r3, [sp, #0x10] - mov r0, r5 - mov r1, r4 - mov r2, #1 - str ip, [sp] - bl qr_build_partial_query_reply - ldr r0, [sp, #0x1c] - ldr r3, [sp, #0x18] - str r0, [sp] - mov r0, r5 - mov r1, r4 - mov r2, #2 - bl qr_build_partial_query_reply - ldmia sp!, {r3, r4, r5, pc} - arm_func_end qr_build_query_reply - - arm_func_start qr_process_query -qr_process_query: ; 0x021FCAE0 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x10 - mov r5, #0 - cmp r3, #3 - mov r6, r5 - mov r7, r5 - addlt sp, sp, #0x10 - ldmltia sp!, {r3, r4, r5, r6, r7, pc} - ldrb ip, [r2], #1 - sub r3, r3, #1 - cmp ip, #0 - cmpne ip, #0xff - movne r5, r2 - subne r3, r3, ip - addne r2, r2, ip - cmp r3, #2 - addlt sp, sp, #0x10 - ldmltia sp!, {r3, r4, r5, r6, r7, pc} - ldrb lr, [r2], #1 - sub r3, r3, #1 - cmp lr, #0 - cmpne lr, #0xff - movne r6, r2 - subne r3, r3, lr - addne r2, r2, lr - cmp r3, #1 - addlt sp, sp, #0x10 - ldmltia sp!, {r3, r4, r5, r6, r7, pc} - ldrb r4, [r2] - sub r3, r3, #1 - cmp r4, #0 - cmpne r4, #0xff - subne r3, r3, r4 - addne r7, r2, #1 - cmp r3, #0 - addlt sp, sp, #0x10 - ldmltia sp!, {r3, r4, r5, r6, r7, pc} - str lr, [sp] - str r6, [sp, #4] - str r4, [sp, #8] - mov r2, ip - mov r3, r5 - str r7, [sp, #0xc] - bl qr_build_query_reply - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end qr_process_query - - arm_func_start qr_build_partial_old_query_reply -qr_build_partial_old_query_reply: ; 0x021FCB98 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x188 - mov r8, r2 - sub r2, r8, #1 - mov r3, #0 - cmp r2, #1 - mov sl, r0 - mov sb, r1 - str r3, [sp, #0x104] - movhi fp, #1 - bhi _021FCBD8 - ldr r1, [sl, #0x10c] - ldr r2, [sl, #0x98] - mov r0, r8 - blx r2 - mov fp, r0 -_021FCBD8: - ldr r2, [sl, #0x10c] - ldr r3, [sl, #0x94] - add r1, sp, #4 - mov r0, r8 - blx r3 - ldr r1, [sp, #0x104] - mov r0, #0 - str r0, [sp] - cmp r1, #0 - addle sp, sp, #0x188 - ldmleia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r6, sp, #4 -_021FCC08: - ldrb r1, [r6] - ldr r0, _021FCD60 ; =0x02219B38 - ldr r5, [r0, r1, lsl #2] - cmp r5, #0 - ldreq r5, _021FCD64 ; =0x0221997C - cmp r8, #0 - bne _021FCC84 - mov r0, sb - mov r1, r5 - bl qr2_buffer_addA - ldr r0, [sb, #0x800] - mov r1, #0x5c - add r0, sb, r0 - strb r1, [r0, #-1] - ldrb r0, [r6] - ldr r2, [sl, #0x10c] - ldr r3, [sl, #0x88] - mov r1, sb - ldr r4, [sb, #0x800] - blx r3 - ldr r0, [sb, #0x800] - cmp r4, r0 - bne _021FCC70 - ldr r1, _021FCD68 ; =0x02219984 - mov r0, sb - bl qr2_buffer_addA -_021FCC70: - ldr r0, [sb, #0x800] - mov r1, #0x5c - add r0, sb, r0 - strb r1, [r0, #-1] - b _021FCD3C -_021FCC84: - cmp fp, #0 - mov r4, #0 - ble _021FCD3C -_021FCC90: - ldr r1, _021FCD6C ; =0x02219988 - add r0, sp, #0x108 - mov r2, r5 - mov r3, r4 - bl sprintf - mov r0, sb - add r1, sp, #0x108 - bl qr2_buffer_addA - ldr r0, [sb, #0x800] - cmp r8, #1 - add r1, sb, r0 - mov r0, #0x5c - strb r0, [r1, #-1] - ldr r7, [sb, #0x800] - bne _021FCCE8 - ldrb r0, [r6] - mov r1, r4 - mov r2, sb - ldr r3, [sl, #0x10c] - ldr ip, [sl, #0x8c] - blx ip - b _021FCD08 -_021FCCE8: - cmp r8, #2 - bne _021FCD08 - ldrb r0, [r6] - mov r1, r4 - mov r2, sb - ldr r3, [sl, #0x10c] - ldr ip, [sl, #0x90] - blx ip -_021FCD08: - ldr r0, [sb, #0x800] - cmp r7, r0 - bne _021FCD20 - ldr r1, _021FCD68 ; =0x02219984 - mov r0, sb - bl qr2_buffer_addA -_021FCD20: - ldr r0, [sb, #0x800] - add r4, r4, #1 - add r1, sb, r0 - mov r0, #0x5c - strb r0, [r1, #-1] - cmp r4, fp - blt _021FCC90 -_021FCD3C: - ldr r0, [sp] - ldr r1, [sp, #0x104] - add r0, r0, #1 - str r0, [sp] - cmp r0, r1 - add r6, r6, #1 - blt _021FCC08 - add sp, sp, #0x188 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_021FCD60: .word qr2_registered_key_list -_021FCD64: .word Unk_ov4_0221997C -_021FCD68: .word Unk_ov4_02219984 -_021FCD6C: .word Unk_ov4_02219988 - arm_func_end qr_build_partial_old_query_reply - - arm_func_start qr_process_old_query -qr_process_old_query: ; 0x021FCD70 - stmfd sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r2, #1 - mov r5, r0 - str r2, [r4, #0x800] - mov r3, #0x5c - mov r2, #0 - strb r3, [r4] - bl qr_build_partial_old_query_reply - mov r0, r5 - mov r1, r4 - mov r2, #1 - bl qr_build_partial_old_query_reply - mov r0, r5 - mov r1, r4 - mov r2, #2 - bl qr_build_partial_old_query_reply - ldr r1, _021FCDD0 ; =0x02219990 - mov r0, r4 - bl qr2_buffer_addA - ldr r0, [r4, #0x800] - sub r0, r0, #1 - str r0, [r4, #0x800] - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_021FCDD0: .word Unk_ov4_02219990 - arm_func_end qr_process_old_query - - arm_func_start qr_process_client_message -qr_process_client_message: ; 0x021FCDD4 - stmfd sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0xc - ldr ip, _021FCEF8 ; =0x02215C28 - mov r3, r0 - ldrb r4, [ip] - ldrb r0, [ip, #1] - ldrb lr, [ip, #2] - strb r4, [sp, #4] - strb r0, [sp, #5] - ldrb r0, [ip, #3] - cmp r2, #0xa - add r6, sp, #4 - strb lr, [sp, #6] - strb r0, [sp, #7] - ldrb lr, [ip, #4] - ldrb r0, [ip, #5] - mov r5, #1 - strb lr, [sp, #8] - strb r0, [sp, #9] - blt _021FCE50 - mov r4, #0 -_021FCE28: - ldrb ip, [r6] - ldrb r0, [r1, r4] - cmp ip, r0 - movne r5, #0 - bne _021FCE54 - add r4, r4, #1 - cmp r4, #6 - add r6, r6, #1 - blt _021FCE28 - b _021FCE54 -_021FCE50: - mov r5, #0 -_021FCE54: - cmp r5, #0 - beq _021FCED0 - ldrb r2, [r1, #6] - ldrb r0, [r1, #7] - add ip, sp, #0 - strb r2, [ip] - strb r0, [ip, #1] - ldrb r2, [r1, #8] - ldrb r0, [r1, #9] - strb r0, [ip, #3] - strb r2, [ip, #2] - ldr r2, [r3, #0xa0] - cmp r2, #0 - addeq sp, sp, #0xc - ldmeqia sp!, {r3, r4, r5, r6, pc} - ldr lr, [sp] - ldr r1, [r3, #0x10c] - mov r3, lr, lsr #0x18 - mov r0, lr, lsr #8 - mov ip, lr, lsl #8 - and r3, r3, #0xff - and r0, r0, #0xff00 - mov lr, lr, lsl #0x18 - orr r0, r3, r0 - and ip, ip, #0xff0000 - and r3, lr, #0xff000000 - orr r0, ip, r0 - orr r0, r3, r0 - blx r2 - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, pc} -_021FCED0: - ldr ip, [r3, #0xa4] - cmp ip, #0 - addeq sp, sp, #0xc - ldmeqia sp!, {r3, r4, r5, r6, pc} - mov r0, r1 - mov r1, r2 - ldr r2, [r3, #0x10c] - blx ip - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, pc} - ; .align 2, 0 -_021FCEF8: .word Unk_ov4_02215C28 - arm_func_end qr_process_client_message - - arm_func_start qr_got_recent_message -qr_got_recent_message: ; 0x021FCEFC - stmfd sp!, {r4, lr} - mov r3, #0 -_021FCF04: - add r2, r0, r3, lsl #2 - ldr r2, [r2, #0xd8] - cmp r1, r2 - moveq r0, #1 - ldmeqia sp!, {r4, pc} - add r3, r3, #1 - cmp r3, #0xa - blt _021FCF04 - ldr r2, [r0, #0x100] - ldr ip, _021FCF5C ; =0x66666667 - add lr, r2, #1 - smull r3, r4, ip, lr - mov r2, lr, lsr #0x1f - add r4, r2, r4, asr #2 - mov ip, #0xa - smull r2, r3, ip, r4 - sub r4, lr, r2 - str r4, [r0, #0x100] - add r0, r0, r4, lsl #2 - str r1, [r0, #0xd8] - mov r0, #0 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_021FCF5C: .word 0x66666667 - arm_func_end qr_got_recent_message - - arm_func_start qr2_parse_queryA -qr2_parse_queryA: ; 0x021FCF60 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x810 - movs r8, r0 - mov r0, #0 - str r0, [sp, #0x80c] - ldreq r0, _021FD270 ; =0x022197F0 - mov r7, r2 - ldreq r8, [r0] - ldrsb r0, [r1] - mov r6, r3 - cmp r0, #0x3b - bne _021FCFB8 - ldr r3, [r8, #0xd4] - cmp r3, #0 - addeq sp, sp, #0x810 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, r1 - mov r1, r7 - mov r2, r6 - blx r3 - add sp, sp, #0x810 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_021FCFB8: - cmp r0, #0x5c - bne _021FCFF4 - add r1, sp, #0xc - mov r0, r8 - bl qr_process_old_query - str r6, [sp] - mov r0, #8 - str r0, [sp, #4] - ldr r0, [r8] - ldr r2, [sp, #0x80c] - add r1, sp, #0xc - mov r3, #0 - bl sendto - add sp, sp, #0x810 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_021FCFF4: - cmp r7, #7 - addlt sp, sp, #0x810 - ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - and r0, r0, #0xff - cmp r0, #0xfe - ldreqb r0, [r1, #1] - cmpeq r0, #0xfd - addne sp, sp, #0x810 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldr r0, [r8, #0xb8] - add r4, r1, #3 - cmp r0, #0 - movgt r0, #0 - strgt r0, [r8, #0xb8] - ldrsb sb, [r1, #2] - add r5, r1, #7 - add r0, sp, #0xc - mov r1, sb - mov r2, r4 - sub r7, r7, #7 - bl qr_add_packet_header - cmp sb, #8 - addls pc, pc, sb, lsl #2 - b _021FD240 -_021FD054: ; jump table - b _021FD078 ; case 0 - b _021FD090 ; case 1 - b _021FD0CC ; case 2 - b _021FD240 ; case 3 - b _021FD104 ; case 4 - b _021FD240 ; case 5 - b _021FD178 ; case 6 - b _021FD240 ; case 7 - b _021FD240 ; case 8 -_021FD078: - add r1, sp, #0xc - mov r0, r8 - mov r2, r5 - mov r3, r7 - bl qr_process_query - b _021FD248 -_021FD090: - cmp r7, #0xd - blt _021FD0B4 - ldr r0, [r8, #0xa8] - cmp r0, #0 - beq _021FD0B4 - add r1, r5, r7 - mov r0, r8 - sub r1, r1, #0xd - bl handle_public_address -_021FD0B4: - add r1, sp, #0xc - mov r0, r8 - mov r2, r5 - mov r3, r7 - bl compute_challenge_response - b _021FD248 -_021FD0CC: - ldr r0, [sp, #0x80c] - cmp r7, #0x20 - movgt r7, #0x20 - add r3, sp, #0xc - mov r4, #5 - mov r1, r5 - mov r2, r7 - add r0, r3, r0 - strb r4, [sp, #0xc] - bl memcpy - ldr r0, [sp, #0x80c] - add r0, r0, r7 - str r0, [sp, #0x80c] - b _021FD248 -_021FD104: - ldr r1, [r8, #0xb8] - mvn r0, #0 - cmp r1, r0 - addeq sp, sp, #0x810 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r2, #0 - str r2, [sp, #8] -_021FD120: - add r0, r8, r2 - ldrsb r1, [r4, r2] - ldrsb r0, [r0, #0x84] - cmp r1, r0 - addne sp, sp, #0x810 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - add r2, r2, #1 - str r2, [sp, #8] - cmp r2, #4 - blt _021FD120 - cmp r7, #2 - addlt sp, sp, #0x810 - ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mvn r0, #0 - str r0, [r8, #0xb8] - ldrsb r0, [r5] - ldr r2, [r8, #0x10c] - ldr r3, [r8, #0x9c] - add r1, r5, #1 - blx r3 - add sp, sp, #0x810 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_021FD178: - mov r2, #0 - str r2, [sp, #8] -_021FD180: - add r0, r8, r2 - ldrsb r1, [r4, r2] - ldrsb r0, [r0, #0x84] - cmp r1, r0 - addne sp, sp, #0x810 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - add r2, r2, #1 - str r2, [sp, #8] - cmp r2, #4 - blt _021FD180 - cmp r7, #4 - addlt sp, sp, #0x810 - ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, #7 - strb r0, [sp, #0xc] - ldrb r1, [r5] - ldrb r0, [r5, #1] - ldr r2, [sp, #0x80c] - add r4, sp, #0xc - strb r1, [r4, r2] - add r4, r4, r2 - strb r0, [r4, #1] - ldrb r2, [r5, #2] - ldrb r1, [r5, #3] - add r3, sp, #8 - mov r0, r8 - strb r2, [r4, #2] - strb r1, [r4, #3] - ldr r1, [sp, #0x80c] - add r1, r1, #4 - str r1, [sp, #0x80c] - ldrb r2, [r5] - ldrb r1, [r5, #1] - strb r2, [r3] - strb r1, [r3, #1] - ldrb r2, [r5, #2] - ldrb r1, [r5, #3] - strb r2, [r3, #2] - strb r1, [r3, #3] - ldr r1, [sp, #8] - bl qr_got_recent_message - cmp r0, #0 - bne _021FD248 - mov r0, r8 - add r1, r5, #4 - sub r2, r7, #4 - bl qr_process_client_message - b _021FD248 -_021FD240: - add sp, sp, #0x810 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_021FD248: - str r6, [sp] - mov r0, #8 - str r0, [sp, #4] - ldr r0, [r8] - ldr r2, [sp, #0x80c] - add r1, sp, #0xc - mov r3, #0 - bl sendto - add sp, sp, #0x810 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ; .align 2, 0 -_021FD270: .word Unk_ov4_022197F0 - arm_func_end qr2_parse_queryA - - arm_func_start send_keepalive -send_keepalive: ; 0x021FD274 - stmfd sp!, {r3, r4, lr} - sub sp, sp, #0xc - sub sp, sp, #0x800 - mov r4, r0 - mov r3, #0 - add r0, sp, #8 - add r2, r4, #0x84 - mov r1, #8 - str r3, [sp, #0x808] - bl qr_add_packet_header - add r0, r4, #0xcc - str r0, [sp] - mov r0, #8 - str r0, [sp, #4] - ldr r0, [r4, #0] - ldr r2, [sp, #0x808] - add r1, sp, #8 - mov r3, #0 - bl sendto - bl current_time - str r0, [r4, #0xb0] - add sp, sp, #0xc - add sp, sp, #0x800 - ldmia sp!, {r3, r4, pc} - arm_func_end send_keepalive - - arm_func_start send_heartbeat -send_heartbeat: ; 0x021FD2D4 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x28 - sub sp, sp, #0x800 - mov sl, r0 - mov sb, r1 - mov r3, #0 - add r0, sp, #0x24 - add r2, sl, #0x84 - mov r1, #3 - str r3, [sp, #0x824] - bl qr_add_packet_header - ldr r4, _021FD4B4 ; =0x0221B5F8 - mov r8, #0 - ldr r0, [r4, #0] - cmp r0, #0 - ble _021FD364 - ldr fp, _021FD4B8 ; =0x022199A4 - ldr r5, _021FD4BC ; =0x0221B5FC - add r7, sp, #0x10 - add r6, sp, #0x24 -_021FD324: - mov r0, r7 - mov r1, fp - mov r2, r8 - bl sprintf - mov r0, r6 - mov r1, r7 - bl qr2_buffer_addA - ldr r0, [r5, r8, lsl #2] - bl SOC_InetNtoA - mov r1, r0 - mov r0, r6 - bl qr2_buffer_addA - add r8, r8, #1 - ldr r0, [r4, #0] - cmp r8, r0 - blt _021FD324 -_021FD364: - ldr r1, _021FD4C0 ; =0x022199B0 - add r0, sp, #0x24 - bl qr2_buffer_addA - ldr r1, [sl, #0xc0] - add r0, sp, #0x24 - bl qr2_buffer_add_int - ldr r1, _021FD4C4 ; =0x022199BC - add r0, sp, #0x24 - bl qr2_buffer_addA - ldr r0, [sl, #0xc8] - cmp r0, #0 - ldrne r1, _021FD4C8 ; =0x022199C4 - add r0, sp, #0x24 - ldreq r1, _021FD4CC ; =0x022199C8 - bl qr2_buffer_addA - cmp sb, #0 - beq _021FD3C0 - ldr r1, _021FD4D0 ; =0x022199CC - add r0, sp, #0x24 - bl qr2_buffer_addA - add r0, sp, #0x24 - mov r1, sb - bl qr2_buffer_add_int -_021FD3C0: - ldr r1, _021FD4D4 ; =0x022199DC - add r0, sp, #0x24 - bl qr2_buffer_addA - add r0, sp, #0x24 - add r1, sl, #4 - bl qr2_buffer_addA - ldr r0, [sl, #0xa8] - cmp r0, #0 - beq _021FD418 - ldr r1, _021FD4D8 ; =0x022199E8 - add r0, sp, #0x24 - bl qr2_buffer_addA - ldr r1, [sl, #0x104] - add r0, sp, #0x24 - bl qr2_buffer_add_int - ldr r1, _021FD4DC ; =0x022199F4 - add r0, sp, #0x24 - bl qr2_buffer_addA - add r0, sl, #0x100 - ldrh r1, [r0, #8] - add r0, sp, #0x24 - bl qr2_buffer_add_int -_021FD418: - cmp sb, #2 - beq _021FD448 - mov r2, #0xff - str r2, [sp] - mov r3, #0 - str r3, [sp, #4] - str r2, [sp, #8] - add r1, sp, #0x24 - mov r0, sl - str r3, [sp, #0xc] - bl qr_build_query_reply - b _021FD46C -_021FD448: - ldr r2, [sp, #0x824] - rsb r0, r2, #0x800 - cmp r0, #1 - blt _021FD46C - add r1, r2, #1 - str r1, [sp, #0x824] - add r0, sp, #0x24 - mov r1, #0 - strb r1, [r0, r2] -_021FD46C: - add r0, sl, #0xcc - str r0, [sp] - mov r0, #8 - str r0, [sp, #4] - ldr r0, [sl] - ldr r2, [sp, #0x824] - add r1, sp, #0x24 - mov r3, #0 - bl sendto - bl current_time - str r0, [sl, #0xac] - str r0, [sl, #0xb0] - cmp sb, #0 - movne r0, #0 - strne r0, [sl, #0xb4] - add sp, sp, #0x28 - add sp, sp, #0x800 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_021FD4B4: .word Unk_ov4_0221B5F8 -_021FD4B8: .word Unk_ov4_022199A4 -_021FD4BC: .word Unk_ov4_0221B5FC -_021FD4C0: .word Unk_ov4_022199B0 -_021FD4C4: .word Unk_ov4_022199BC -_021FD4C8: .word Unk_ov4_022199C4 -_021FD4CC: .word Unk_ov4_022199C8 -_021FD4D0: .word Unk_ov4_022199CC -_021FD4D4: .word Unk_ov4_022199DC -_021FD4D8: .word Unk_ov4_022199E8 -_021FD4DC: .word Unk_ov4_022199F4 - arm_func_end send_heartbeat - - .rodata - - - .global Unk_ov4_02215C28 -Unk_ov4_02215C28: ; 0x02215C28 - .byte 0xFD, 0xFC, 0x1E, 0x66, 0x6A, 0xB2 - .space 0x2 - - - - .data - - - .global Unk_ov4_022197F0 -Unk_ov4_022197F0: ; 0x022197F0 - .word Unk_ov4_022197F4 - - .global Unk_ov4_022197F4 -Unk_ov4_022197F4: ; 0x022197F4 - .word 0xFFFFFFFF - .space 0x10C - - .global Unk_ov4_02219904 -Unk_ov4_02219904: ; 0x02219904 - .asciz "%s.master.gs.nintendowifi.net" - .space 0x2 - - .global Unk_ov4_02219924 -Unk_ov4_02219924: ; 0x02219924 - .asciz "No challenge value was received from the master server." - - .global Unk_ov4_0221995C -Unk_ov4_0221995C: ; 0x0221995C - .ascii "%d" - .space 0x2 - - .global Unk_ov4_02219960 -Unk_ov4_02219960: ; 0x02219960 - .asciz "255.255.255.255" - - .global Unk_ov4_02219970 -Unk_ov4_02219970: ; 0x02219970 - .ascii "%08X%04X" - .space 0x4 - - .global Unk_ov4_0221997C -Unk_ov4_0221997C: ; 0x0221997C - .asciz "unknown" - - .global Unk_ov4_02219984 -Unk_ov4_02219984: ; 0x02219984 - .space 0x4 - - .global Unk_ov4_02219988 -Unk_ov4_02219988: ; 0x02219988 - .ascii "%s%d" - .space 0x4 - - .global Unk_ov4_02219990 -Unk_ov4_02219990: ; 0x02219990 - .ascii "final\\\\queryid\\1.1" - .space 0x2 - - .global Unk_ov4_022199A4 -Unk_ov4_022199A4: ; 0x022199A4 - .asciz "localip%d" - .space 0x2 - - .global Unk_ov4_022199B0 -Unk_ov4_022199B0: ; 0x022199B0 - .asciz "localport" - .space 0x2 - - .global Unk_ov4_022199BC -Unk_ov4_022199BC: ; 0x022199BC - .ascii "natneg" - .space 0x2 - - .global Unk_ov4_022199C4 -Unk_ov4_022199C4: ; 0x022199C4 - .word 0x31 - - .global Unk_ov4_022199C8 -Unk_ov4_022199C8: ; 0x022199C8 - .word 0x30 - - .global Unk_ov4_022199CC -Unk_ov4_022199CC: ; 0x022199CC - .ascii "statechanged" - .space 0x4 - - .global Unk_ov4_022199DC -Unk_ov4_022199DC: ; 0x022199DC - .ascii "gamename" - .space 0x4 - - .global Unk_ov4_022199E8 -Unk_ov4_022199E8: ; 0x022199E8 - .ascii "publicip" - .space 0x4 - - .global Unk_ov4_022199F4 -Unk_ov4_022199F4: ; 0x022199F4 - .ascii "publicport" - .space 0x2 - - - .bss - - - .global Unk_ov4_0221B5F8 -Unk_ov4_0221B5F8: ; 0x0221B5F8 - .space 0x4 - - .global Unk_ov4_0221B5FC -Unk_ov4_0221B5FC: ; 0x0221B5FC - .space 0x14 - - .global Unk_ov4_0221B610 -Unk_ov4_0221B610: ; 0x0221B610 - .space 0x40 - - .global Unk_ov4_0221B650 -Unk_ov4_0221B650: ; 0x0221B650 - .space 0x100 - diff --git a/subprojects/gamespy/libraries/qr2/asm/qr2regkeys.s b/subprojects/gamespy/libraries/qr2/asm/qr2regkeys.s deleted file mode 100644 index b0f04a6f79..0000000000 --- a/subprojects/gamespy/libraries/qr2/asm/qr2regkeys.s +++ /dev/null @@ -1,196 +0,0 @@ - .include "macros/function.inc" - - .text - - - arm_func_start qr2_register_keyA -qr2_register_keyA: ; 0x021FD4E0 - cmp r0, #0x32 - bxlt lr - cmp r0, #0xfe - bxgt lr - ldr r2, _021FD4FC ; =0x02219B38 - str r1, [r2, r0, lsl #2] - bx lr - ; .align 2, 0 -_021FD4FC: .word qr2_registered_key_list - arm_func_end qr2_register_keyA - - .data - - - .global Unk_ov4_02219A00 -Unk_ov4_02219A00: ; 0x02219A00 - .space 0x4 - - .global Unk_ov4_02219A04 -Unk_ov4_02219A04: ; 0x02219A04 - .ascii "pid_" - .space 0x4 - - .global Unk_ov4_02219A0C -Unk_ov4_02219A0C: ; 0x02219A0C - .asciz "ping_" - .space 0x2 - - .global Unk_ov4_02219A14 -Unk_ov4_02219A14: ; 0x02219A14 - .asciz "team_" - .space 0x2 - - .global Unk_ov4_02219A1C -Unk_ov4_02219A1C: ; 0x02219A1C - .ascii "score_" - .space 0x2 - - .global Unk_ov4_02219A24 -Unk_ov4_02219A24: ; 0x02219A24 - .ascii "team_t" - .space 0x2 - - .global Unk_ov4_02219A2C -Unk_ov4_02219A2C: ; 0x02219A2C - .ascii "skill_" - .space 0x2 - - .global Unk_ov4_02219A34 -Unk_ov4_02219A34: ; 0x02219A34 - .asciz "groupid" - - .global Unk_ov4_02219A3C -Unk_ov4_02219A3C: ; 0x02219A3C - .asciz "deaths_" - - .global Unk_ov4_02219A44 -Unk_ov4_02219A44: ; 0x02219A44 - .asciz "gamever" - - .global Unk_ov4_02219A4C -Unk_ov4_02219A4C: ; 0x02219A4C - .asciz "player_" - - .global Unk_ov4_02219A54 -Unk_ov4_02219A54: ; 0x02219A54 - .asciz "score_t" - - .global Unk_ov4_02219A5C -Unk_ov4_02219A5C: ; 0x02219A5C - .asciz "mapname" - - .global Unk_ov4_02219A64 -Unk_ov4_02219A64: ; 0x02219A64 - .ascii "gamename" - .space 0x4 - - .global Unk_ov4_02219A70 -Unk_ov4_02219A70: ; 0x02219A70 - .ascii "hostport" - .space 0x4 - - .global Unk_ov4_02219A7C -Unk_ov4_02219A7C: ; 0x02219A7C - .ascii "password" - .space 0x4 - - .global Unk_ov4_02219A88 -Unk_ov4_02219A88: ; 0x02219A88 - .ascii "gametype" - .space 0x4 - - .global Unk_ov4_02219A94 -Unk_ov4_02219A94: ; 0x02219A94 - .ascii "numteams" - .space 0x4 - - .global Unk_ov4_02219AA0 -Unk_ov4_02219AA0: ; 0x02219AA0 - .ascii "gamemode" - .space 0x4 - - .global Unk_ov4_02219AAC -Unk_ov4_02219AAC: ; 0x02219AAC - .ascii "teamplay" - .space 0x4 - - .global Unk_ov4_02219AB8 -Unk_ov4_02219AB8: ; 0x02219AB8 - .ascii "hostname" - .space 0x4 - - .global Unk_ov4_02219AC4 -Unk_ov4_02219AC4: ; 0x02219AC4 - .asciz "fraglimit" - .space 0x2 - - .global Unk_ov4_02219AD0 -Unk_ov4_02219AD0: ; 0x02219AD0 - .asciz "timelimit" - .space 0x2 - - .global Unk_ov4_02219ADC -Unk_ov4_02219ADC: ; 0x02219ADC - .asciz "roundtime" - .space 0x2 - - .global Unk_ov4_02219AE8 -Unk_ov4_02219AE8: ; 0x02219AE8 - .ascii "numplayers" - .space 0x2 - - .global Unk_ov4_02219AF4 -Unk_ov4_02219AF4: ; 0x02219AF4 - .ascii "maxplayers" - .space 0x2 - - .global Unk_ov4_02219B00 -Unk_ov4_02219B00: ; 0x02219B00 - .asciz "gamevariant" - - .global Unk_ov4_02219B0C -Unk_ov4_02219B0C: ; 0x02219B0C - .asciz "timeelapsed" - - .global Unk_ov4_02219B18 -Unk_ov4_02219B18: ; 0x02219B18 - .ascii "roundelapsed" - .space 0x4 - - .global Unk_ov4_02219B28 -Unk_ov4_02219B28: ; 0x02219B28 - .asciz "teamfraglimit" - .space 0x2 - - .global qr2_registered_key_list -qr2_registered_key_list: ; 0x02219B38 - .word Unk_ov4_02219A00 - .word Unk_ov4_02219AB8 - .word Unk_ov4_02219A64 - .word Unk_ov4_02219A44 - .word Unk_ov4_02219A70 - .word Unk_ov4_02219A5C - .word Unk_ov4_02219A88 - .word Unk_ov4_02219B00 - .word Unk_ov4_02219AE8 - .word Unk_ov4_02219A94 - .word Unk_ov4_02219AF4 - .word Unk_ov4_02219AA0 - .word Unk_ov4_02219AAC - .word Unk_ov4_02219AC4 - .word Unk_ov4_02219B28 - .word Unk_ov4_02219B0C - .word Unk_ov4_02219AD0 - .word Unk_ov4_02219ADC - .word Unk_ov4_02219B18 - .word Unk_ov4_02219A7C - .word Unk_ov4_02219A34 - .word Unk_ov4_02219A4C - .word Unk_ov4_02219A1C - .word Unk_ov4_02219A2C - .word Unk_ov4_02219A0C - .word Unk_ov4_02219A14 - .word Unk_ov4_02219A3C - .word Unk_ov4_02219A04 - .word Unk_ov4_02219A24 - .word Unk_ov4_02219A54 - .space 0x380 - diff --git a/subprojects/gamespy/libraries/qr2/meson.build b/subprojects/gamespy/libraries/qr2/meson.build deleted file mode 100644 index d8b1390278..0000000000 --- a/subprojects/gamespy/libraries/qr2/meson.build +++ /dev/null @@ -1,13 +0,0 @@ -libdwcgsqr2_srcs = files( - 'asm/qr2.s', - 'asm/qr2regkeys.s' -) - -libdwcgsqr2 = static_library('dwcgsqr2', - sources: libdwcgsqr2_srcs, - nasm_args: asm_args, - include_directories: public_includes, - pic: false -) - -gamespy_libs += libdwcgsqr2 diff --git a/subprojects/gamespy/libraries/serverbrowsing/asm/include/sb_crypt.inc b/subprojects/gamespy/libraries/serverbrowsing/asm/include/sb_crypt.inc deleted file mode 100644 index 986872cf53..0000000000 --- a/subprojects/gamespy/libraries/serverbrowsing/asm/include/sb_crypt.inc +++ /dev/null @@ -1,4 +0,0 @@ -.public _u32_div_f -.public keyrand -.public GOAHashInit -.public GOADecryptByte diff --git a/subprojects/gamespy/libraries/serverbrowsing/asm/include/sb_queryengine.inc b/subprojects/gamespy/libraries/serverbrowsing/asm/include/sb_queryengine.inc deleted file mode 100644 index c956dbc5f6..0000000000 --- a/subprojects/gamespy/libraries/serverbrowsing/asm/include/sb_queryengine.inc +++ /dev/null @@ -1,24 +0,0 @@ -.public strstr -.public current_time -.public SocketStartUp -.public CanReceiveOnSocket -.public socket -.public closesocket -.public recvfrom -.public sendto -.public FIFOAddRear -.public FIFOAddFront -.public FIFOGetFirst -.public FIFORemove -.public FIFOClear -.public QEStartQuery -.public ParseSingleQR2Reply -.public ParseSingleGOAReply -.public ParseSingleICMPReply -.public ProcessIncomingReplies -.public TimeoutOldQueries -.public QueueNextQueries -.public SBServerAddKeyValue -.public SBServerParseKeyVals -.public SBServerParseQR2FullKeys -.public NTSLengthSB diff --git a/subprojects/gamespy/libraries/serverbrowsing/asm/include/sb_server.inc b/subprojects/gamespy/libraries/serverbrowsing/asm/include/sb_server.inc deleted file mode 100644 index da29f5de7a..0000000000 --- a/subprojects/gamespy/libraries/serverbrowsing/asm/include/sb_server.inc +++ /dev/null @@ -1,30 +0,0 @@ -.public __msl_assertion_failed -.public sprintf -.public strlen -.public strcmp -.public atof -.public atoi -.public strcasecmp -.public _u32_div_f -.public DWCi_GsMalloc -.public DWCi_GsFree -.public TableNew2 -.public TableFree -.public TableCount -.public TableEnter -.public TableLookup -.public RefStringHash -.public RefStringCompare -.public RefStringFree -.public SBServerAddKeyValue -.public SBServerGetStringValueA -.public CheckValidKey -.public mytok -.public StringHash -.public KeyValFree -.public KeyValHashKey -.public KeyValCompareKey -.public SBServerGetPing -.public SBRefStr -.public SBReleaseStr -.public NTSLengthSB diff --git a/subprojects/gamespy/libraries/serverbrowsing/asm/include/sb_serverbrowsing.inc b/subprojects/gamespy/libraries/serverbrowsing/asm/include/sb_serverbrowsing.inc deleted file mode 100644 index 9efefc7adc..0000000000 --- a/subprojects/gamespy/libraries/serverbrowsing/asm/include/sb_serverbrowsing.inc +++ /dev/null @@ -1,33 +0,0 @@ -.public sprintf -.public strlen -.public DWCi_GsMalloc -.public DWCi_GsFree -.public ArrayLength -.public msleep -.public inet_addr -.public SBQueryEngineInit -.public SBQueryEngineSetPublicIP -.public SBEngineHaltUpdates -.public SBEngineCleanup -.public SBQueryEngineUpdateServer -.public SBQueryEngineThink -.public SBQueryEngineAddQueryKey -.public SBQueryEngineRemoveServerFromFIFOs -.public ListCallback -.public EngineCallback -.public ServerBrowserBeginUpdate2 -.public ServerBrowserThink -.public ServerBrowserHalt -.public SBServerListSort -.public SBServerListFindServer -.public SBServerListRemoveAt -.public SBServerListCount -.public SBServerListNth -.public SBServerListClear -.public SBServerListInit -.public SBServerListConnectAndQuery -.public SBServerListDisconnect -.public SBServerListCleanup -.public SBSendMessageToServer -.public SBSendNatNegotiateCookieToServer -.public SBListThink diff --git a/subprojects/gamespy/libraries/serverbrowsing/asm/include/sb_serverlist.inc b/subprojects/gamespy/libraries/serverbrowsing/asm/include/sb_serverlist.inc deleted file mode 100644 index fe0c4a9658..0000000000 --- a/subprojects/gamespy/libraries/serverbrowsing/asm/include/sb_serverlist.inc +++ /dev/null @@ -1,110 +0,0 @@ -.public __msl_assertion_failed -.public memcpy -.public memmove -.public memcmp -.public sprintf -.public rand -.public srand -.public strlen -.public strcpy -.public strcmp -.public strncmp -.public strcasecmp -.public _d_dtof -.public _dsub -.public _f_fgt -.public _f_flt -.public _s32_div_f -.public _u32_div_f -.public DWCi_GsMalloc -.public DWCi_GsFree -.public ArrayNew -.public ArrayFree -.public ArrayLength -.public ArrayNth -.public ArrayAppend -.public ArrayDeleteAt -.public ArraySort -.public ArrayClear -.public TableEnter -.public TableRemove -.public TableLookup -.public current_time -.public SocketStartUp -.public goastrdup -.public CanReceiveOnSocket -.public socket -.public closesocket -.public connect -.public recv -.public recvfrom -.public send -.public inet_addr -.public GOACryptInit -.public GOADecrypt -.public SBRefStrHash -.public SBRefStrHashCleanup -.public SBServerFree -.public SBServerAddKeyValue -.public SBServerAddIntKeyValue -.public SBServerGetStringValueA -.public SBServerGetIntValueA -.public SBServerGetFloatValueA -.public SBServerGetPublicInetAddress -.public SBServerGetPublicQueryPortNBO -.public SBServerSetNext -.public SBServerGetNext -.public SBAllocServer -.public SBServerSetFlags -.public SBServerSetPrivateAddr -.public SBServerSetICMPIP -.public SBServerSetState -.public SBServerGetState -.public SBIsNullServer -.public IntKeyCompare -.public FloatKeyCompare -.public StrCaseKeyCompare -.public StrNoCaseKeyCompare -.public SBServerListAppendServer -.public SBServerListFindServerByIP -.public AddServerToDeadlist -.public SBServerListRemoveAt -.public SBServerListNth -.public SBFreeDeadList -.public SBServerListClear -.public SBAllocateServerList -.public SBRefStr -.public SBReleaseStr -.public NTSLengthSB -.public ErrorDisconnect -.public StringHash -.public ServerListConnect -.public BufferAddNTS -.public BufferAddByte -.public BufferAddInt -.public BufferAddData -.public SetupListChallenge -.public SendWithRetry -.public SBServerListConnectAndQuery -.public FreePopularValues -.public FreeKeyList -.public SBServerListDisconnect -.public InitCryptKey -.public ServerSizeForFlags -.public FullRulesPresent -.public AllKeysPresent -.public ParseServerIPPort -.public ParseServer -.public IncomingListParseServer -.public SBSetLastListErrorPtr -.public ProcessMainListData -.public ProcessPushKeyList -.public ProcessPlayerSearch -.public ProcessMaploop -.public ProcessDeleteServer -.public ProcessPushServer -.public ProcessAdHocData -.public ProcessIncomingData -.public SBSendMessageToServer -.public ProcessLanData -.public SOC_GetHostByName diff --git a/subprojects/gamespy/libraries/serverbrowsing/asm/macros/function.inc b/subprojects/gamespy/libraries/serverbrowsing/asm/macros/function.inc deleted file mode 100644 index f71cc4ccae..0000000000 --- a/subprojects/gamespy/libraries/serverbrowsing/asm/macros/function.inc +++ /dev/null @@ -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 \ No newline at end of file diff --git a/subprojects/gamespy/libraries/serverbrowsing/asm/sb_crypt.s b/subprojects/gamespy/libraries/serverbrowsing/asm/sb_crypt.s deleted file mode 100644 index f1779fc642..0000000000 --- a/subprojects/gamespy/libraries/serverbrowsing/asm/sb_crypt.s +++ /dev/null @@ -1,215 +0,0 @@ - .include "macros/function.inc" - .include "include/sb_crypt.inc" - - - - .text - - - arm_func_start keyrand -keyrand: ; 0x021FD500 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r7, [sp, #0x28] - ldr r6, [sp, #0x2c] - movs sb, r1 - mov sl, r0 - mov fp, r2 - mov r8, r3 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp sb, #1 - mov r4, #0 - mov r5, #1 - bls _021FD544 -_021FD534: - mov r0, r5, lsl #1 - add r5, r0, #1 - cmp r5, sb - blo _021FD534 -_021FD544: - ldr r2, [r6, #0] - add r0, r2, #1 - str r0, [r6, #0] - ldrb r1, [r7] - ldrb r0, [fp, r2] - ldrb r1, [sl, r1] - add r0, r1, r0 - strb r0, [r7] - ldr r0, [r6, #0] - cmp r0, r8 - blo _021FD584 - mov r0, #0 - str r0, [r6, #0] - ldrb r0, [r7] - add r0, r0, r8 - strb r0, [r7] -_021FD584: - ldrb r0, [r7] - add r4, r4, #1 - cmp r4, #0xb - and r0, r5, r0 - bls _021FD5A4 - mov r1, sb - bl _u32_div_f - mov r0, r1 -_021FD5A4: - cmp r0, sb - bhi _021FD544 - and r0, r0, #0xff - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end keyrand - - arm_func_start GOAHashInit -GOAHashInit: ; 0x021FD5B4 - mov r1, #1 - strb r1, [r0, #0x100] - mov r1, #3 - strb r1, [r0, #0x101] - mov r1, #5 - strb r1, [r0, #0x102] - mov r1, #7 - strb r1, [r0, #0x103] - mov r1, #0xb - strb r1, [r0, #0x104] - mov r1, #0 - mov r2, #0xff -_021FD5E4: - strb r2, [r0, r1] - add r1, r1, #1 - cmp r1, #0x100 - sub r2, r2, #1 - blt _021FD5E4 - bx lr - arm_func_end GOAHashInit - - arm_func_start GOACryptInit -GOACryptInit: ; 0x021FD5FC - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x10 - mov r7, r2 - mov sb, r0 - mov r8, r1 - cmp r7, #1 - bhs _021FD624 - bl GOAHashInit - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_021FD624: - mov r0, #0 -_021FD628: - strb r0, [sb, r0] - add r0, r0, #1 - cmp r0, #0x100 - blt _021FD628 - mov r0, #0 - str r0, [sp, #0xc] - strb r0, [sp, #8] - mov r6, #0xff - add r5, sp, #8 - add r4, sp, #0xc -_021FD650: - str r5, [sp] - mov r0, sb - mov r1, r6 - mov r2, r8 - mov r3, r7 - str r4, [sp, #4] - bl keyrand - ldrb r2, [sb, r6] - ldrb r1, [sb, r0] - strb r1, [sb, r6] - strb r2, [sb, r0] - subs r6, r6, #1 - bpl _021FD650 - ldrb r1, [sb, #1] - mov r0, #0 - strb r1, [sb, #0x100] - ldrb r1, [sb, #3] - strb r1, [sb, #0x101] - ldrb r1, [sb, #5] - strb r1, [sb, #0x102] - ldrb r1, [sb, #7] - strb r1, [sb, #0x103] - ldrb r1, [sp, #8] - ldrb r1, [sb, r1] - strb r1, [sb, #0x104] - strb r0, [sp, #8] - str r0, [sp, #0xc] - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end GOACryptInit - - arm_func_start GOADecryptByte -GOADecryptByte: ; 0x021FD6C4 - stmfd sp!, {r4, lr} - ldrb r4, [r0, #0x100] - add r2, r4, #1 - strb r2, [r0, #0x100] - ldrb r3, [r0, #0x101] - ldrb r2, [r0, r4] - add r2, r3, r2 - strb r2, [r0, #0x101] - ldrb r3, [r0, #0x104] - and r2, r2, #0xff - ldrb r2, [r0, r2] - ldrb r4, [r0, r3] - strb r2, [r0, r3] - ldrb r3, [r0, #0x103] - ldrb r2, [r0, #0x101] - ldrb r3, [r0, r3] - strb r3, [r0, r2] - ldrb r3, [r0, #0x100] - ldrb r2, [r0, #0x103] - ldrb r3, [r0, r3] - strb r3, [r0, r2] - ldrb r2, [r0, #0x100] - strb r4, [r0, r2] - ldrb r3, [r0, #0x102] - ldrb r2, [r0, r4] - add r4, r3, r2 - strb r4, [r0, #0x102] - ldrb r3, [r0, #0x103] - ldrb r2, [r0, #0x104] - ldrb ip, [r0, #0x101] - ldrb lr, [r0, #0x100] - and r4, r4, #0xff - ldrb r3, [r0, r3] - ldrb r2, [r0, r2] - ldrb ip, [r0, ip] - ldrb r4, [r0, r4] - add r2, r3, r2 - ldrb r3, [r0, lr] - add r2, ip, r2 - and r2, r2, #0xff - add r3, r4, r3 - ldrb r2, [r0, r2] - and r3, r3, #0xff - ldrb r3, [r0, r3] - ldrb r2, [r0, r2] - eor r3, r1, r3 - eor r2, r3, r2 - strb r2, [r0, #0x103] - strb r1, [r0, #0x104] - ldrb r0, [r0, #0x103] - ldmia sp!, {r4, pc} - arm_func_end GOADecryptByte - - arm_func_start GOADecrypt -GOADecrypt: ; 0x021FD790 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r5, r2 - mov r7, r0 - mov r6, r1 - mov r4, #0 - cmp r5, #0 - ldmleia sp!, {r3, r4, r5, r6, r7, pc} -_021FD7AC: - ldrb r1, [r6, r4] - mov r0, r7 - bl GOADecryptByte - strb r0, [r6, r4] - add r4, r4, #1 - cmp r4, r5 - blt _021FD7AC - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end GOADecrypt \ No newline at end of file diff --git a/subprojects/gamespy/libraries/serverbrowsing/asm/sb_queryengine.s b/subprojects/gamespy/libraries/serverbrowsing/asm/sb_queryengine.s deleted file mode 100644 index 65827fa036..0000000000 --- a/subprojects/gamespy/libraries/serverbrowsing/asm/sb_queryengine.s +++ /dev/null @@ -1,717 +0,0 @@ - .include "macros/function.inc" - .include "include/sb_queryengine.inc" - - .extern __GSIACResult - - .extern qr2_registered_key_list - .text - - - arm_func_start FIFOAddRear -FIFOAddRear: ; 0x021FD7CC - ldr r2, [r0, #4] - cmp r2, #0 - strne r1, [r2, #0x20] - str r1, [r0, #4] - mov r2, #0 - str r2, [r1, #0x20] - ldr r2, [r0, #0] - cmp r2, #0 - streq r1, [r0] - ldr r1, [r0, #8] - add r1, r1, #1 - str r1, [r0, #8] - bx lr - arm_func_end FIFOAddRear - - arm_func_start FIFOAddFront -FIFOAddFront: ; 0x021FD800 - ldr r2, [r0, #0] - str r2, [r1, #0x20] - str r1, [r0, #0] - ldr r2, [r0, #4] - cmp r2, #0 - streq r1, [r0, #4] - ldr r1, [r0, #8] - add r1, r1, #1 - str r1, [r0, #8] - bx lr - arm_func_end FIFOAddFront - - arm_func_start FIFOGetFirst -FIFOGetFirst: ; 0x021FD828 - ldr r2, [r0, #0] - cmp r2, #0 - beq _021FD854 - ldr r1, [r2, #0x20] - str r1, [r0, #0] - cmp r1, #0 - moveq r1, #0 - streq r1, [r0, #4] - ldr r1, [r0, #8] - sub r1, r1, #1 - str r1, [r0, #8] -_021FD854: - mov r0, r2 - bx lr - arm_func_end FIFOGetFirst - - arm_func_start FIFORemove -FIFORemove: ; 0x021FD85C - ldr r2, [r0, #0] - mov r3, #0 - cmp r2, #0 - beq _021FD8C0 -_021FD86C: - cmp r2, r1 - bne _021FD8B0 - cmp r3, #0 - ldrne r1, [r2, #0x20] - strne r1, [r3, #0x20] - ldr r1, [r0, #0] - cmp r1, r2 - ldreq r1, [r2, #0x20] - streq r1, [r0] - ldr r1, [r0, #4] - cmp r1, r2 - streq r3, [r0, #4] - ldr r1, [r0, #8] - sub r1, r1, #1 - str r1, [r0, #8] - mov r0, #1 - bx lr -_021FD8B0: - mov r3, r2 - ldr r2, [r2, #0x20] - cmp r2, #0 - bne _021FD86C -_021FD8C0: - mov r0, #0 - bx lr - arm_func_end FIFORemove - - arm_func_start FIFOClear -FIFOClear: ; 0x021FD8C8 - mov r1, #0 - str r1, [r0, #4] - str r1, [r0, #0] - str r1, [r0, #8] - bx lr - arm_func_end FIFOClear - - arm_func_start QEStartQuery -QEStartQuery: ; 0x021FD8DC - stmfd sp!, {r3, r4, r5, lr} - sub sp, sp, #0x110 - mov r5, r0 - mov r4, r1 - add r0, r5, #8 - bl FIFOAddRear - bl current_time - str r0, [r4, #0x1c] - mov r0, #2 - strb r0, [sp, #9] - ldrb r1, [r4, #0x14] - tst r1, #0x20 - addne sp, sp, #0x110 - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, [r5, #0] - cmp r0, #1 - bne _021FD9E0 - mov r2, #0xfe - mov r1, #0xfd - mov r0, #0 - strb r2, [sp, #0x10] - strb r1, [sp, #0x11] - strb r0, [sp, #0x12] - ldrb r2, [r4, #0x1c] - ldrb r1, [r4, #0x1d] - add r3, sp, #0x13 - strb r2, [r3] - strb r1, [r3, #1] - ldrb r2, [r4, #0x1e] - ldrb r1, [r4, #0x1f] - strb r2, [r3, #2] - strb r1, [r3, #3] - ldrb r1, [r4, #0x14] - tst r1, #4 - beq _021FD9C8 - ldr r1, [r5, #0x40] - strb r1, [sp, #0x17] - ldr r3, [r5, #0x40] - cmp r3, #0 - ble _021FD9A0 - add r2, sp, #0x10 -_021FD980: - add r1, r5, r0 - ldrb r1, [r1, #0x2c] - add r0, r0, #1 - strb r1, [r2, #8] - ldr r3, [r5, #0x40] - add r2, r2, #1 - cmp r0, r3 - blt _021FD980 -_021FD9A0: - add r1, sp, #0x10 - add r0, r3, #8 - mov r2, #0 - strb r2, [r1, r0] - ldr r0, [r5, #0x40] - add r0, r0, #9 - strb r2, [r1, r0] - ldr r0, [r5, #0x40] - add r2, r0, #0xa - b _021FDA50 -_021FD9C8: - mov r0, #0xff - strb r0, [sp, #0x17] - strb r0, [sp, #0x18] - strb r0, [sp, #0x19] - mov r2, #0xa - b _021FDA50 -_021FD9E0: - tst r1, #4 - add ip, sp, #0x10 - beq _021FDA24 - ldr r3, _021FDAB4 ; =0x02219F30 - mov r2, #6 -_021FD9F4: - ldrb r1, [r3] - ldrb r0, [r3, #1] - add r3, r3, #2 - strb r1, [ip] - strb r0, [ip, #1] - add ip, ip, #2 - subs r2, r2, #1 - bne _021FD9F4 - ldrb r0, [r3] - mov r2, #0xd - strb r0, [ip] - b _021FDA50 -_021FDA24: - ldr r3, _021FDAB8 ; =0x02219F40 - mov r2, #4 -_021FDA2C: - ldrb r1, [r3] - ldrb r0, [r3, #1] - add r3, r3, #2 - strb r1, [ip] - strb r0, [ip, #1] - add ip, ip, #2 - subs r2, r2, #1 - bne _021FDA2C - mov r2, #8 -_021FDA50: - ldr r1, [r4, #0] - ldr r0, [r5, #0x28] - cmp r1, r0 - bne _021FDA80 - ldrb r0, [r4, #0x15] - tst r0, #2 - beq _021FDA80 - ldr r0, [r4, #8] - str r0, [sp, #0xc] - ldrh r0, [r4, #0xc] - strh r0, [sp, #0xa] - b _021FDA8C -_021FDA80: - str r1, [sp, #0xc] - ldrh r0, [r4, #4] - strh r0, [sp, #0xa] -_021FDA8C: - add r1, sp, #8 - str r1, [sp] - mov r0, #8 - str r0, [sp, #4] - ldr r0, [r5, #0x20] - add r1, sp, #0x10 - mov r3, #0 - bl sendto - add sp, sp, #0x110 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_021FDAB4: .word Unk_ov4_02219F30 -_021FDAB8: .word Unk_ov4_02219F40 - arm_func_end QEStartQuery - - arm_func_start SBQueryEngineInit -SBQueryEngineInit: ; 0x021FDABC - stmfd sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - cmp r3, #0 - bne _021FDAE4 - ldr r0, _021FDB2C ; =0x0221AE50 - ldr r0, [r0, #0] - cmp r0, #1 - ldmneia sp!, {r4, r5, r6, pc} -_021FDAE4: - bl SocketStartUp - stmia r6, {r4, r5} - mov r2, #0 - ldr r3, [sp, #0x10] - str r2, [r6, #0x40] - ldr r1, [sp, #0x14] - str r3, [r6, #0x44] - str r1, [r6, #0x48] - mov r0, #2 - mov r1, r0 - str r2, [r6, #0x28] - bl socket - str r0, [r6, #0x20] - add r0, r6, #0x14 - bl FIFOClear - add r0, r6, #8 - bl FIFOClear - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_021FDB2C: .word __GSIACResult - arm_func_end SBQueryEngineInit - - arm_func_start SBQueryEngineSetPublicIP -SBQueryEngineSetPublicIP: ; 0x021FDB30 - str r1, [r0, #0x28] - bx lr - arm_func_end SBQueryEngineSetPublicIP - - arm_func_start SBEngineHaltUpdates -SBEngineHaltUpdates: ; 0x021FDB38 - stmfd sp!, {r4, lr} - mov r4, r0 - add r0, r4, #0x14 - bl FIFOClear - add r0, r4, #8 - bl FIFOClear - ldmia sp!, {r4, pc} - arm_func_end SBEngineHaltUpdates - - arm_func_start SBEngineCleanup -SBEngineCleanup: ; 0x021FDB54 - stmfd sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4, #0x20] - bl closesocket - mvn r1, #0 - add r0, r4, #0x14 - str r1, [r4, #0x20] - bl FIFOClear - add r0, r4, #8 - bl FIFOClear - ldmia sp!, {r4, pc} - arm_func_end SBEngineCleanup - - arm_func_start SBQueryEngineUpdateServer -SBQueryEngineUpdateServer: ; 0x021FDB80 - stmfd sp!, {r3, lr} - ldrb ip, [r1, #0x14] - cmp r3, #0 - and ip, ip, #0xc3 - strb ip, [r1, #0x14] - bne _021FDBA8 - ldrb r3, [r1, #0x14] - orr r3, r3, #4 - strb r3, [r1, #0x14] - b _021FDBC8 -_021FDBA8: - cmp r3, #1 - bne _021FDBC0 - ldrb r3, [r1, #0x14] - orr r3, r3, #8 - strb r3, [r1, #0x14] - b _021FDBC8 -_021FDBC0: - cmp r3, #2 - ldmeqia sp!, {r3, pc} -_021FDBC8: - ldr ip, [r0, #0x10] - ldr r3, [r0, #4] - cmp ip, r3 - bge _021FDBE0 - bl QEStartQuery - ldmia sp!, {r3, pc} -_021FDBE0: - cmp r2, #0 - add r0, r0, #0x14 - beq _021FDBF4 - bl FIFOAddFront - ldmia sp!, {r3, pc} -_021FDBF4: - bl FIFOAddRear - ldmia sp!, {r3, pc} - arm_func_end SBQueryEngineUpdateServer - - arm_func_start ParseSingleQR2Reply -ParseSingleQR2Reply: ; 0x021FDBFC - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov r8, r2 - ldrsb r2, [r8] - mov sl, r0 - mov sb, r1 - mov r7, r3 - cmp r2, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldrb r0, [sb, #0x14] - add r8, r8, #5 - sub r7, r7, #5 - tst r0, #4 - beq _021FDC98 - ldr r0, [sl, #0x40] - mov r6, #0 - cmp r0, #0 - ble _021FDC88 - ldr r4, _021FDCF8 ; =0x02219B38 -_021FDC44: - mov r0, r8 - mov r1, r7 - bl NTSLengthSB - movs r5, r0 - bmi _021FDC88 - add r0, sl, r6 - ldrb r1, [r0, #0x2c] - mov r0, sb - mov r2, r8 - ldr r1, [r4, r1, lsl #2] - bl SBServerAddKeyValue - ldr r0, [sl, #0x40] - add r6, r6, #1 - cmp r6, r0 - add r8, r8, r5 - sub r7, r7, r5 - blt _021FDC44 -_021FDC88: - ldrb r0, [sb, #0x14] - orr r0, r0, #0x41 - strb r0, [sb, #0x14] - b _021FDCB4 -_021FDC98: - mov r0, sb - mov r1, r8 - mov r2, r7 - bl SBServerParseQR2FullKeys - ldrb r0, [sb, #0x14] - orr r0, r0, #0x43 - strb r0, [sb, #0x14] -_021FDCB4: - ldrb r0, [sb, #0x14] - and r0, r0, #0xf3 - strb r0, [sb, #0x14] - bl current_time - ldr r2, [sb, #0x1c] - mov r1, sb - sub r0, r0, r2 - str r0, [sb, #0x1c] - add r0, sl, #8 - bl FIFORemove - ldr r3, [sl, #0x48] - ldr r4, [sl, #0x44] - mov r0, sl - mov r2, sb - mov r1, #0 - blx r4 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ; .align 2, 0 -_021FDCF8: .word qr2_registered_key_list - arm_func_end ParseSingleQR2Reply - - arm_func_start ParseSingleGOAReply -ParseSingleGOAReply: ; 0x021FDCFC - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r4, r1 - mov r7, r2 - mov r5, r0 - ldr r1, _021FDD90 ; =0x02219F4C - mov r0, r7 - bl strstr - cmp r0, #0 - movne r6, #1 - moveq r6, #0 - mov r0, r4 - mov r1, r7 - bl SBServerParseKeyVals - cmp r6, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldrb r0, [r4, #0x14] - tst r0, #4 - orrne r0, r0, #0x41 - orreq r0, r0, #0x42 - strb r0, [r4, #0x14] - ldrb r0, [r4, #0x14] - and r0, r0, #0xf3 - strb r0, [r4, #0x14] - bl current_time - ldr r2, [r4, #0x1c] - mov r1, r4 - sub r0, r0, r2 - str r0, [r4, #0x1c] - add r0, r5, #8 - bl FIFORemove - ldr r3, [r5, #0x48] - ldr ip, [r5, #0x44] - mov r0, r5 - mov r2, r4 - mov r1, #0 - blx ip - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021FDD90: .word Unk_ov4_02219F4C - arm_func_end ParseSingleGOAReply - - arm_func_start ParseSingleICMPReply -ParseSingleICMPReply: ; 0x021FDD94 - mov r0, #1 - bx lr - arm_func_end ParseSingleICMPReply - - arm_func_start ProcessIncomingReplies -ProcessIncomingReplies: ; 0x021FDD9C - stmfd sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x14 - sub sp, sp, #0x800 - movs r8, r1 - mov r1, #8 - mov sb, r0 - str r1, [sp, #8] - ldrne r7, [sb, #0x24] - ldreq r7, [sb, #0x20] - mov r0, r7 - bl CanReceiveOnSocket - cmp r0, #0 - addeq sp, sp, #0x14 - addeq sp, sp, #0x800 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} -_021FDDD8: - add r0, sp, #0xc - str r0, [sp] - add r4, sp, #8 - ldr r2, _021FDF2C ; =0x000007FF - add r1, sp, #0x14 - mov r0, r7 - mov r3, #0 - str r4, [sp, #4] - bl recvfrom - mov r5, r0 - mvn r0, #0 - cmp r5, r0 - addeq sp, sp, #0x14 - addeq sp, sp, #0x800 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} - add r4, sp, #0x14 - mov r0, #0 - strb r0, [r4, r5] - ldr r6, [sb, #8] - cmp r6, #0 - beq _021FDF10 -_021FDE2C: - cmp r8, #0 - beq _021FDE50 - ldrb r0, [r6, #0x15] - tst r0, #8 - beq _021FDE50 - ldr r1, [r6, #0x10] - ldr r0, [sp, #0x10] - cmp r1, r0 - beq _021FDEA8 -_021FDE50: - ldr r3, [sp, #0x10] - ldr r2, [r6, #0] - cmp r2, r3 - bne _021FDE78 - ldrh r1, [r6, #4] - ldrh r0, [sp, #0xe] - cmp r1, r0 - beq _021FDEA8 - cmp r8, #0 - bne _021FDEA8 -_021FDE78: - ldr r0, [sb, #0x28] - cmp r2, r0 - bne _021FDF04 - ldrb r0, [r6, #0x15] - tst r0, #2 - beq _021FDF04 - ldr r0, [r6, #8] - cmp r0, r3 - ldreqh r1, [r6, #0xc] - ldreqh r0, [sp, #0xe] - cmpeq r1, r0 - bne _021FDF04 -_021FDEA8: - cmp r8, #0 - beq _021FDED0 - mov r0, sb - mov r1, r6 - mov r2, r4 - mov r3, r5 - bl ParseSingleICMPReply - cmp r0, #0 - bne _021FDF10 - b _021FDF04 -_021FDED0: - ldr r0, [sb] - add r2, sp, #0x14 - cmp r0, #1 - mov r0, sb - bne _021FDEF4 - mov r1, r6 - mov r3, r5 - bl ParseSingleQR2Reply - b _021FDF10 -_021FDEF4: - mov r1, r6 - mov r3, r5 - bl ParseSingleGOAReply - b _021FDF10 -_021FDF04: - ldr r6, [r6, #0x20] - cmp r6, #0 - bne _021FDE2C -_021FDF10: - mov r0, r7 - bl CanReceiveOnSocket - cmp r0, #0 - bne _021FDDD8 - add sp, sp, #0x14 - add sp, sp, #0x800 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - ; .align 2, 0 -_021FDF2C: .word 0x000007FF - arm_func_end ProcessIncomingReplies - - arm_func_start TimeoutOldQueries -TimeoutOldQueries: ; 0x021FDF30 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r0 - bl current_time - ldr r3, [r6, #8] - mov r5, r0 - cmp r3, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r4, _021FDFBC ; =0x000009C4 - mov r7, #1 -_021FDF54: - ldr r0, [r3, #0x1c] - add r0, r0, #0x1c4 - add r0, r0, #0x800 - cmp r5, r0 - ldmlsia sp!, {r3, r4, r5, r6, r7, pc} - ldrb r2, [r3, #0x15] - mov r0, r6 - mov r1, r7 - orr r2, r2, #0x10 - strb r2, [r3, #0x15] - ldr r2, [r6, #8] - str r4, [r2, #0x1c] - ldr r3, [r6, #8] - ldrb r2, [r3, #0x15] - and r2, r2, #0xd3 - strb r2, [r3, #0x15] - ldr r2, [r6, #8] - ldr r3, [r6, #0x48] - ldr ip, [r6, #0x44] - blx ip - add r0, r6, #8 - bl FIFOGetFirst - ldr r3, [r6, #8] - cmp r3, #0 - bne _021FDF54 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021FDFBC: .word 0x000009C4 - arm_func_end TimeoutOldQueries - - arm_func_start QueueNextQueries -QueueNextQueries: ; 0x021FDFC0 - stmfd sp!, {r4, lr} - mov r4, r0 - b _021FDFE0 -_021FDFCC: - add r0, r4, #0x14 - bl FIFOGetFirst - mov r1, r0 - mov r0, r4 - bl QEStartQuery -_021FDFE0: - ldr r1, [r4, #0x10] - ldr r0, [r4, #4] - cmp r1, r0 - ldmgeia sp!, {r4, pc} - ldr r0, [r4, #0x1c] - cmp r0, #0 - bgt _021FDFCC - ldmia sp!, {r4, pc} - arm_func_end QueueNextQueries - - arm_func_start SBQueryEngineThink -SBQueryEngineThink: ; 0x021FE000 - stmfd sp!, {r4, lr} - mov r4, r0 - ldr r1, [r4, #0x10] - cmp r1, #0 - ldmeqia sp!, {r4, pc} - mov r1, #0 - bl ProcessIncomingReplies - mov r0, r4 - bl TimeoutOldQueries - ldr r0, [r4, #0x1c] - cmp r0, #0 - ble _021FE038 - mov r0, r4 - bl QueueNextQueries -_021FE038: - ldr r0, [r4, #0x10] - cmp r0, #0 - ldmneia sp!, {r4, pc} - ldr r3, [r4, #0x48] - ldr ip, [r4, #0x44] - mov r0, r4 - mov r1, #2 - mov r2, #0 - blx ip - ldmia sp!, {r4, pc} - arm_func_end SBQueryEngineThink - - arm_func_start SBQueryEngineAddQueryKey -SBQueryEngineAddQueryKey: ; 0x021FE060 - ldr r3, [r0, #0x40] - cmp r3, #0x14 - bxge lr - add r2, r3, #1 - str r2, [r0, #0x40] - add r0, r0, r3 - strb r1, [r0, #0x2c] - bx lr - arm_func_end SBQueryEngineAddQueryKey - - arm_func_start SBQueryEngineRemoveServerFromFIFOs -SBQueryEngineRemoveServerFromFIFOs: ; 0x021FE080 - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - add r0, r5, #8 - mov r4, r1 - bl FIFORemove - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r1, r4 - add r0, r5, #0x14 - bl FIFORemove - ldmia sp!, {r3, r4, r5, pc} - arm_func_end SBQueryEngineRemoveServerFromFIFOs - - .data - - - .global Unk_ov4_02219F30 -Unk_ov4_02219F30: ; 0x02219F30 - .asciz "\\basic\\\\info\\" - .space 0x2 - - .global Unk_ov4_02219F40 -Unk_ov4_02219F40: ; 0x02219F40 - .ascii "\\status\\" - .space 0x4 - - .global Unk_ov4_02219F4C -Unk_ov4_02219F4C: ; 0x02219F4C - .asciz "\\final\\" - diff --git a/subprojects/gamespy/libraries/serverbrowsing/asm/sb_server.s b/subprojects/gamespy/libraries/serverbrowsing/asm/sb_server.s deleted file mode 100644 index 0387abbff1..0000000000 --- a/subprojects/gamespy/libraries/serverbrowsing/asm/sb_server.s +++ /dev/null @@ -1,768 +0,0 @@ - .include "macros/function.inc" - .include "include/sb_server.inc" - - .extern __lower_mapC - - .text - - - arm_func_start RefStringHash -RefStringHash: ; 0x021FE0AC - ldr ip, _021FE0B8 ; =StringHash - ldr r0, [r0, #0] - bx ip - ; .align 2, 0 -_021FE0B8: .word StringHash - arm_func_end RefStringHash - - arm_func_start RefStringCompare -RefStringCompare: ; 0x021FE0BC - ldr ip, _021FE0CC ; =strcasecmp - ldr r0, [r0, #0] - ldr r1, [r1, #0] - bx ip - ; .align 2, 0 -_021FE0CC: .word strcasecmp - arm_func_end RefStringCompare - - arm_func_start RefStringFree -RefStringFree: ; 0x021FE0D0 - ldr ip, _021FE0DC ; =DWCi_GsFree - ldr r0, [r0, #0] - bx ip - ; .align 2, 0 -_021FE0DC: .word DWCi_GsFree - arm_func_end RefStringFree - - arm_func_start SBRefStrHash -SBRefStrHash: ; 0x021FE0E0 - stmfd sp!, {r3, lr} - sub sp, sp, #8 - ldr r0, _021FE134 ; =0x0221B750 - ldr r0, [r0, #8] - cmp r0, #0 - bne _021FE124 - ldr r0, _021FE138 ; =RefStringCompare - ldr ip, _021FE13C ; =RefStringFree - str r0, [sp] - ldr r3, _021FE140 ; =RefStringHash - mov r0, #8 - mov r1, #0x64 - mov r2, #2 - str ip, [sp, #4] - bl TableNew2 - ldr r1, _021FE134 ; =0x0221B750 - str r0, [r1, #8] -_021FE124: - ldr r0, _021FE134 ; =0x0221B750 - ldr r0, [r0, #8] - add sp, sp, #8 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_021FE134: .word Unk_ov4_0221B750 -_021FE138: .word RefStringCompare -_021FE13C: .word RefStringFree -_021FE140: .word RefStringHash - arm_func_end SBRefStrHash - - arm_func_start SBRefStrHashCleanup -SBRefStrHashCleanup: ; 0x021FE144 - stmfd sp!, {r3, lr} - ldr r0, _021FE180 ; =0x0221B750 - ldr r0, [r0, #8] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl TableCount - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _021FE180 ; =0x0221B750 - ldr r0, [r0, #8] - bl TableFree - ldr r0, _021FE180 ; =0x0221B750 - mov r1, #0 - str r1, [r0, #8] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_021FE180: .word Unk_ov4_0221B750 - arm_func_end SBRefStrHashCleanup - - arm_func_start SBServerFree -SBServerFree: ; 0x021FE184 - stmfd sp!, {r4, lr} - ldr r4, [r0, #0] - ldr r0, [r4, #0x18] - bl TableFree - mov r1, #0 - mov r0, r4 - str r1, [r4, #0x18] - bl DWCi_GsFree - ldmia sp!, {r4, pc} - arm_func_end SBServerFree - - arm_func_start SBServerAddKeyValue -SBServerAddKeyValue: ; 0x021FE1A8 - stmfd sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - mov r5, r0 - mov r4, r2 - mov r0, #0 - bl SBRefStr - str r0, [sp] - mov r1, r4 - mov r0, #0 - bl SBRefStr - str r0, [sp, #4] - ldr r0, [r5, #0x18] - add r1, sp, #0 - bl TableEnter - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end SBServerAddKeyValue - - arm_func_start SBServerAddIntKeyValue -SBServerAddIntKeyValue: ; 0x021FE1E8 - stmfd sp!, {r4, r5, lr} - sub sp, sp, #0x14 - mov r4, r1 - mov r5, r0 - ldr r1, _021FE21C ; =0x02219F7C - add r0, sp, #0 - bl sprintf - add r2, sp, #0 - mov r0, r5 - mov r1, r4 - bl SBServerAddKeyValue - add sp, sp, #0x14 - ldmia sp!, {r4, r5, pc} - ; .align 2, 0 -_021FE21C: .word Unk_ov4_02219F7C - arm_func_end SBServerAddIntKeyValue - - arm_func_start SBServerGetStringValueA -SBServerGetStringValueA: ; 0x021FE220 - stmfd sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - movs r6, r0 - mov r5, r1 - mov r4, r2 - bne _021FE24C - ldr r0, _021FE280 ; =0x02219F80 - ldr r1, _021FE284 ; =0x02219F88 - ldr r2, _021FE288 ; =0x02219F64 - mov r3, #0x97 - bl __msl_assertion_failed -_021FE24C: - cmp r6, #0 - addeq sp, sp, #8 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - str r5, [sp] - ldr r0, [r6, #0x18] - add r1, sp, #0 - bl TableLookup - cmp r0, #0 - ldrne r4, [r0, #4] - mov r0, r4 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_021FE280: .word Unk_ov4_02219F80 -_021FE284: .word Unk_ov4_02219F88 -_021FE288: .word Unk_ov4_02219F64 - arm_func_end SBServerGetStringValueA - - arm_func_start SBServerGetIntValueA -SBServerGetIntValueA: ; 0x021FE28C - stmfd sp!, {r4, r5, r6, lr} - mov r5, r1 - mov r6, r0 - ldr r1, _021FE314 ; =0x02219F94 - mov r0, r5 - mov r4, r2 - bl strcmp - cmp r0, #0 - mov r0, r6 - bne _021FE2BC - bl SBServerGetPing - ldmia sp!, {r4, r5, r6, pc} -_021FE2BC: - mov r1, r5 - mov r2, #0 - bl SBServerGetStringValueA - cmp r0, #0 - beq _021FE304 - ldrb r2, [r0] - cmp r2, #0 - blt _021FE2E4 - cmp r2, #0x80 - blt _021FE2EC -_021FE2E4: - mov r1, #0 - b _021FE2FC -_021FE2EC: - ldr r1, _021FE318 ; =0x020FE864 - mov r2, r2, lsl #1 - ldrh r1, [r1, r2] - and r1, r1, #8 -_021FE2FC: - cmp r1, #0 - bne _021FE30C -_021FE304: - mov r0, r4 - ldmia sp!, {r4, r5, r6, pc} -_021FE30C: - bl atoi - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_021FE314: .word Unk_ov4_02219F94 -_021FE318: .word 0x020FE864 - arm_func_end SBServerGetIntValueA - - arm_func_start SBServerGetFloatValueA -SBServerGetFloatValueA: ; 0x021FE31C - stmfd sp!, {r3, r4, r5, lr} - mov r5, r2 - mov r2, #0 - mov r4, r3 - bl SBServerGetStringValueA - cmp r0, #0 - beq _021FE344 - bl atof - mov r5, r0 - mov r4, r1 -_021FE344: - mov r0, r5 - mov r1, r4 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end SBServerGetFloatValueA - - arm_func_start SBServerGetPublicInetAddress -SBServerGetPublicInetAddress: ; 0x021FE350 - ldr r0, [r0, #0] - bx lr - arm_func_end SBServerGetPublicInetAddress - - arm_func_start SBServerGetPublicQueryPort -SBServerGetPublicQueryPort: ; 0x021FE358 - ldrh r0, [r0, #4] - mov r1, r0, asr #8 - mov r0, r0, lsl #8 - and r1, r1, #0xff - and r0, r0, #0xff00 - orr r0, r1, r0 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bx lr - arm_func_end SBServerGetPublicQueryPort - - arm_func_start SBServerGetPublicQueryPortNBO -SBServerGetPublicQueryPortNBO: ; 0x021FE37C - ldrh r0, [r0, #4] - bx lr - arm_func_end SBServerGetPublicQueryPortNBO - - arm_func_start SBServerHasPrivateAddress -SBServerHasPrivateAddress: ; 0x021FE384 - ldrb r0, [r0, #0x15] - and r0, r0, #2 - cmp r0, #2 - moveq r0, #1 - movne r0, #0 - bx lr - arm_func_end SBServerHasPrivateAddress - - arm_func_start SBServerGetPrivateInetAddress -SBServerGetPrivateInetAddress: ; 0x021FE39C - ldr r0, [r0, #8] - bx lr - arm_func_end SBServerGetPrivateInetAddress - - arm_func_start SBServerGetPrivateQueryPort -SBServerGetPrivateQueryPort: ; 0x021FE3A4 - ldrh r0, [r0, #0xc] - mov r1, r0, asr #8 - mov r0, r0, lsl #8 - and r1, r1, #0xff - and r0, r0, #0xff00 - orr r0, r1, r0 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bx lr - arm_func_end SBServerGetPrivateQueryPort - - arm_func_start SBServerSetNext -SBServerSetNext: ; 0x021FE3C8 - str r1, [r0, #0x20] - bx lr - arm_func_end SBServerSetNext - - arm_func_start SBServerGetNext -SBServerGetNext: ; 0x021FE3D0 - ldr r0, [r0, #0x20] - bx lr - arm_func_end SBServerGetNext - - arm_func_start CheckValidKey -CheckValidKey: ; 0x021FE3D8 - stmfd sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - ldr r1, _021FE434 ; =0x02215C30 - add r4, sp, #0 - ldr r2, [r1, #0] - ldr r1, [r1, #4] - mov r6, r0 - str r2, [sp] - str r1, [sp, #4] - mov r5, #0 -_021FE400: - ldr r1, [r4, r5, lsl #2] - mov r0, r6 - bl strcmp - cmp r0, #0 - addeq sp, sp, #8 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - add r5, r5, #1 - cmp r5, #2 - blo _021FE400 - mov r0, #1 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_021FE434: .word Unk_ov4_02215C30 - arm_func_end CheckValidKey - - arm_func_start mytok -mytok: ; 0x021FE438 - cmp r0, #0 - ldrne r2, _021FE498 ; =0x0221B750 - strne r0, [r2] - ldr r2, _021FE498 ; =0x0221B750 - ldr r0, [r2, #0] - mov ip, r0 - b _021FE45C -_021FE454: - add ip, ip, #1 - str ip, [r2] -_021FE45C: - ldrsb r3, [ip] - cmp r3, #0 - cmpne r3, r1 - bne _021FE454 - cmp ip, r0 - moveq r0, #0 - cmp r3, #0 - bxeq lr - ldr r1, _021FE498 ; =0x0221B750 - mov r2, #0 - ldr r3, [r1, #0] - strb r2, [ip] - add r2, r3, #1 - str r2, [r1, #0] - bx lr - ; .align 2, 0 -_021FE498: .word Unk_ov4_0221B750 - arm_func_end mytok - - arm_func_start SBServerParseKeyVals -SBServerParseKeyVals: ; 0x021FE49C - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - add r0, r1, #1 - mov r1, #0x5c - bl mytok - movs r8, r0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r4, #0 - mov fp, #0x5c - ldr r5, _021FE518 ; =0x02219F9C - mov r7, r4 - mov r6, fp -_021FE4CC: - mov r0, r7 - mov r1, r6 - bl mytok - movs sb, r0 - mov r0, r8 - moveq sb, r5 - bl CheckValidKey - cmp r0, #0 - beq _021FE500 - mov r0, sl - mov r1, r8 - mov r2, sb - bl SBServerAddKeyValue -_021FE500: - mov r0, r4 - mov r1, fp - bl mytok - movs r8, r0 - bne _021FE4CC - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_021FE518: .word Unk_ov4_02219F9C - arm_func_end SBServerParseKeyVals - - arm_func_start SBServerParseQR2FullKeys -SBServerParseQR2FullKeys: ; 0x021FE51C - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x8c - mov sl, r1 - ldrsb r1, [sl] - mov fp, r0 - mov sb, r2 - cmp r1, #0 - beq _021FE59C -_021FE53C: - mov r0, sl - mov r1, sb - bl NTSLengthSB - cmp r0, #0 - addlt sp, sp, #0x8c - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r4, sl - sub sb, sb, r0 - add sl, sl, r0 - mov r0, sl - mov r1, sb - bl NTSLengthSB - cmp r0, #0 - addlt sp, sp, #0x8c - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r2, sl - mov r1, r4 - add sl, sl, r0 - sub sb, sb, r0 - mov r0, fp - bl SBServerAddKeyValue - ldrsb r0, [sl] - cmp r0, #0 - bne _021FE53C -_021FE59C: - mov r0, #0 - add sl, sl, #1 - sub sb, sb, #1 - str r0, [sp] -_021FE5AC: - cmp sb, #2 - addlt sp, sp, #0x8c - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrb r1, [sl] - ldrb r0, [sl, #1] - add r2, sp, #8 - add sl, sl, #2 - strb r1, [r2] - strb r0, [r2, #1] - ldrh r0, [sp, #8] - str sl, [sp, #4] - sub sb, sb, #2 - mov r1, r0, asr #8 - mov r0, r0, lsl #8 - and r1, r1, #0xff - and r0, r0, #0xff00 - orr r0, r1, r0 - strh r0, [sp, #8] - ldrsb r0, [sl] - mov r5, #0 - cmp r0, #0 - beq _021FE63C -_021FE604: - mov r0, sl - mov r1, sb - bl NTSLengthSB - cmp r0, #0 - addlt sp, sp, #0x8c - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r0, #0x64 - addgt sp, sp, #0x8c - ldmgtia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrsb r1, [sl, r0]! - add r5, r5, #1 - sub sb, sb, r0 - cmp r1, #0 - bne _021FE604 -_021FE63C: - ldrh r0, [sp, #8] - add sl, sl, #1 - sub sb, sb, #1 - cmp r0, #0 - mov r6, #0 - ble _021FE6D4 -_021FE654: - ldr r8, [sp, #4] - mov r7, #0 - cmp r5, #0 - ble _021FE6C4 -_021FE664: - mov r0, sl - mov r1, sb - bl NTSLengthSB - movs r4, r0 - addmi sp, sp, #0x8c - ldmmiia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, _021FE6F0 ; =0x02219FA0 - add r0, sp, #0xa - mov r2, r8 - mov r3, r6 - bl sprintf - mov r0, fp - add r1, sp, #0xa - mov r2, sl - bl SBServerAddKeyValue - mov r0, r8 - add sl, sl, r4 - sub sb, sb, r4 - bl strlen - add r0, r0, #1 - add r7, r7, #1 - add r8, r8, r0 - cmp r7, r5 - blt _021FE664 -_021FE6C4: - ldrh r0, [sp, #8] - add r6, r6, #1 - cmp r6, r0 - blt _021FE654 -_021FE6D4: - ldr r0, [sp] - add r0, r0, #1 - str r0, [sp] - cmp r0, #2 - blt _021FE5AC - add sp, sp, #0x8c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_021FE6F0: .word Unk_ov4_02219FA0 - arm_func_end SBServerParseQR2FullKeys - - arm_func_start StringHash -StringHash: ; 0x021FE6F4 - stmfd sp!, {r3, lr} - ldrsb lr, [r0] - mov ip, #0 - cmp lr, #0 - beq _021FE734 - ldr r3, _021FE744 ; =0x020FE764 - ldr r2, _021FE748 ; =0x9CCF9319 -_021FE710: - cmp lr, #0 - blt _021FE724 - cmp lr, #0x80 - bge _021FE724 - ldrb lr, [r3, lr] -_021FE724: - mla ip, r2, ip, lr - ldrsb lr, [r0, #1]! - cmp lr, #0 - bne _021FE710 -_021FE734: - mov r0, ip - bl _u32_div_f - mov r0, r1 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_021FE744: .word __lower_mapC -_021FE748: .word 0x9CCF9319 - arm_func_end StringHash - - arm_func_start KeyValFree -KeyValFree: ; 0x021FE74C - stmfd sp!, {r4, lr} - mov r4, r0 - ldr r1, [r4, #0] - mov r0, #0 - bl SBReleaseStr - ldr r1, [r4, #4] - mov r0, #0 - bl SBReleaseStr - ldmia sp!, {r4, pc} - arm_func_end KeyValFree - - arm_func_start KeyValHashKey -KeyValHashKey: ; 0x021FE770 - ldr ip, _021FE77C ; =StringHash - ldr r0, [r0, #0] - bx ip - ; .align 2, 0 -_021FE77C: .word StringHash - arm_func_end KeyValHashKey - - arm_func_start KeyValCompareKey -KeyValCompareKey: ; 0x021FE780 - ldr ip, _021FE790 ; =strcasecmp - ldr r0, [r0, #0] - ldr r1, [r1, #0] - bx ip - ; .align 2, 0 -_021FE790: .word strcasecmp - arm_func_end KeyValCompareKey - - arm_func_start SBServerGetPing -SBServerGetPing: ; 0x021FE794 - ldr r0, [r0, #0x1c] - bx lr - arm_func_end SBServerGetPing - - arm_func_start SBAllocServer -SBAllocServer: ; 0x021FE79C - stmfd sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - mov r0, #0x24 - mov r6, r1 - mov r5, r2 - bl DWCi_GsMalloc - movs r4, r0 - addeq sp, sp, #8 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r1, _021FE83C ; =KeyValCompareKey - ldr ip, _021FE840 ; =KeyValFree - str r1, [sp] - mov r0, #8 - ldr r3, _021FE844 ; =KeyValHashKey - mov r1, r0 - mov r2, #4 - str ip, [sp, #4] - bl TableNew2 - str r0, [r4, #0x18] - cmp r0, #0 - bne _021FE808 - mov r0, r4 - bl DWCi_GsFree - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_021FE808: - mov r1, #0 - strb r1, [r4, #0x14] - strb r1, [r4, #0x15] - str r1, [r4, #0x20] - str r1, [r4, #0x1c] - str r1, [r4, #0x10] - str r6, [r4, #0] - strh r5, [r4, #4] - str r1, [r4, #8] - mov r0, r4 - strh r1, [r4, #0xc] - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_021FE83C: .word KeyValCompareKey -_021FE840: .word KeyValFree -_021FE844: .word KeyValHashKey - arm_func_end SBAllocServer - - arm_func_start SBServerSetFlags -SBServerSetFlags: ; 0x021FE848 - strb r1, [r0, #0x15] - bx lr - arm_func_end SBServerSetFlags - - arm_func_start SBServerSetPrivateAddr -SBServerSetPrivateAddr: ; 0x021FE850 - str r1, [r0, #8] - strh r2, [r0, #0xc] - bx lr - arm_func_end SBServerSetPrivateAddr - - arm_func_start SBServerSetICMPIP -SBServerSetICMPIP: ; 0x021FE85C - str r1, [r0, #0x10] - bx lr - arm_func_end SBServerSetICMPIP - - arm_func_start SBServerSetState -SBServerSetState: ; 0x021FE864 - strb r1, [r0, #0x14] - bx lr - arm_func_end SBServerSetState - - arm_func_start SBServerGetState -SBServerGetState: ; 0x021FE86C - ldrb r0, [r0, #0x14] - bx lr - arm_func_end SBServerGetState - - arm_func_start SBIsNullServer -SBIsNullServer: ; 0x021FE874 - ldr r1, _021FE88C ; =0x0221B750 - ldr r1, [r1, #4] - cmp r0, r1 - moveq r0, #1 - movne r0, #0 - bx lr - ; .align 2, 0 -_021FE88C: .word Unk_ov4_0221B750 - arm_func_end SBIsNullServer - - .rodata - - - .global Unk_ov4_02215C30 -Unk_ov4_02215C30: ; 0x02215C30 - .word Unk_ov4_02219F5C - .word Unk_ov4_02219F54 - - - - .data - - - .global Unk_ov4_02219F54 -Unk_ov4_02219F54: ; 0x02219F54 - .asciz "final" - .space 0x2 - - .global Unk_ov4_02219F5C -Unk_ov4_02219F5C: ; 0x02219F5C - .asciz "queryid" - - .global Unk_ov4_02219F64 -Unk_ov4_02219F64: ; 0x02219F64 - .asciz "SBServerGetStringValueA" - - .global Unk_ov4_02219F7C -Unk_ov4_02219F7C: ; 0x02219F7C - .ascii "%d" - .space 0x2 - - .global Unk_ov4_02219F80 -Unk_ov4_02219F80: ; 0x02219F80 - .ascii "server" - .space 0x2 - - .global Unk_ov4_02219F88 -Unk_ov4_02219F88: ; 0x02219F88 - .asciz "sb_server.c" - - .global Unk_ov4_02219F94 -Unk_ov4_02219F94: ; 0x02219F94 - .ascii "ping" - .space 0x4 - - .global Unk_ov4_02219F9C -Unk_ov4_02219F9C: ; 0x02219F9C - .space 0x4 - - .global Unk_ov4_02219FA0 -Unk_ov4_02219FA0: ; 0x02219FA0 - .ascii "%s%d" - .space 0x4 - - - - .bss - - - .global Unk_ov4_0221B750 -Unk_ov4_0221B750: ; 0x0221B750 - .space 0x4 - - .global Unk_ov4_0221B754 -Unk_ov4_0221B754: ; 0x0221B754 - .space 0x4 - - .global Unk_ov4_0221B758 -Unk_ov4_0221B758: ; 0x0221B758 - .space 0x4 - diff --git a/subprojects/gamespy/libraries/serverbrowsing/asm/sb_serverbrowsing.s b/subprojects/gamespy/libraries/serverbrowsing/asm/sb_serverbrowsing.s deleted file mode 100644 index ac684ba69a..0000000000 --- a/subprojects/gamespy/libraries/serverbrowsing/asm/sb_serverbrowsing.s +++ /dev/null @@ -1,512 +0,0 @@ - .include "macros/function.inc" - .include "include/sb_serverbrowsing.inc" - - - .extern __GSIACResult - - .extern qr2_registered_key_list - .text - - - arm_func_start ListCallback -ListCallback: ; 0x021FE890 - stmfd sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r2 - mov r4, r3 - cmp r1, #6 - addls pc, pc, r1, lsl #2 - b _021FEA14 -_021FE8AC: ; jump table - b _021FE8C8 ; case 0 - b _021FE940 ; case 1 - b _021FE974 ; case 2 - b _021FE9A8 ; case 3 - b _021FEA14 ; case 4 - b _021FE9EC ; case 5 - b _021FEA08 ; case 6 -_021FE8C8: - ldr r3, [r4, #0x634] - ldr ip, [r4, #0x630] - mov r0, r4 - mov r1, #0 - blx ip - ldrb r0, [r5, #0x14] - tst r0, #3 - beq _021FE8F0 - tst r0, #0x40 - bne _021FEA14 -_021FE8F0: - tst r0, #0x2c - ldreq r0, [r4, #0x624] - cmpeq r0, #0 - bne _021FEA14 - ldrb r0, [r5, #0x15] - tst r0, #1 - beq _021FE928 - ldr r0, [r4, #0x4c] - cmp r0, #0 - ldrne r0, [r4, #0x40] - cmpne r0, #0 - moveq r3, #1 - movne r3, #0 - b _021FE92C -_021FE928: - mov r3, #2 -_021FE92C: - mov r0, r4 - mov r1, r5 - mov r2, #0 - bl SBQueryEngineUpdateServer - b _021FEA14 -_021FE940: - ldrb r0, [r5, #0x14] - ldr r3, [r4, #0x634] - ldr ip, [r4, #0x630] - tst r0, #0x43 - bne _021FE964 - mov r0, r4 - mov r1, #2 - blx ip - b _021FEA14 -_021FE964: - mov r0, r4 - mov r1, #1 - blx ip - b _021FEA14 -_021FE974: - ldrb r0, [r5, #0x14] - tst r0, #0x2c - beq _021FE98C - mov r0, r4 - mov r1, r5 - bl SBQueryEngineRemoveServerFromFIFOs -_021FE98C: - ldr r3, [r4, #0x634] - ldr ip, [r4, #0x630] - mov r0, r4 - mov r2, r5 - mov r1, #3 - blx ip - b _021FEA14 -_021FE9A8: - ldr r1, [r4, #0x620] - cmp r1, #0 - beq _021FE9B8 - bl SBServerListDisconnect -_021FE9B8: - ldr r0, [r6, #4] - bl ArrayLength - cmp r0, #0 - ldrne r0, [r4, #0x10] - cmpne r0, #0 - bne _021FEA14 - ldr r3, [r4, #0x634] - ldr ip, [r4, #0x630] - mov r0, r4 - mov r1, #4 - mov r2, #0 - blx ip - b _021FEA14 -_021FE9EC: - ldr r3, [r4, #0x634] - ldr ip, [r4, #0x630] - mov r0, r4 - mov r1, #5 - mov r2, #0 - blx ip - b _021FEA14 -_021FEA08: - ldr r1, [r4, #0x4ec] - mov r0, r4 - bl SBQueryEngineSetPublicIP -_021FEA14: - cmp r5, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r1, [r5, #0] - ldr r0, [r4, #0x628] - cmp r1, r0 - ldmneia sp!, {r4, r5, r6, pc} - add r0, r4, #0x600 - ldrh r1, [r5, #4] - ldrh r0, [r0, #0x2c] - cmp r1, r0 - moveq r0, #0 - streq r0, [r4, #0x628] - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ListCallback - - arm_func_start EngineCallback -EngineCallback: ; 0x021FEA48 - stmfd sp!, {r3, r4, r5, lr} - mov r5, r2 - mov r4, r3 - cmp r1, #0 - beq _021FEA88 - cmp r1, #1 - beq _021FEA70 - cmp r1, #2 - beq _021FEAA0 - b _021FEAB4 -_021FEA70: - ldr r3, [r4, #0x634] - ldr ip, [r4, #0x630] - mov r0, r4 - mov r1, #2 - blx ip - b _021FEAB4 -_021FEA88: - ldr r3, [r4, #0x634] - ldr ip, [r4, #0x630] - mov r0, r4 - mov r1, #1 - blx ip - b _021FEAB4 -_021FEAA0: - ldr r3, [r4, #0x634] - ldr ip, [r4, #0x630] - mov r0, r4 - mov r1, #4 - blx ip -_021FEAB4: - cmp r5, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, [r5, #0] - ldr r0, [r4, #0x628] - cmp r1, r0 - ldmneia sp!, {r3, r4, r5, pc} - add r0, r4, #0x600 - ldrh r1, [r5, #4] - ldrh r0, [r0, #0x2c] - cmp r1, r0 - moveq r0, #0 - streq r0, [r4, #0x628] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end EngineCallback - - arm_func_start ServerBrowserNewA -ServerBrowserNewA: ; 0x021FEAE8 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x10 - ldr r4, [sp, #0x30] - mov r8, r0 - mov r7, r1 - mov r6, r2 - mov r5, r3 - cmp r4, #0 - bne _021FEB24 - ldr r0, _021FEBAC ; =0x0221AE50 - ldr r0, [r0, #0] - cmp r0, #1 - addne sp, sp, #0x10 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} -_021FEB24: - ldr r0, _021FEBB0 ; =0x00000638 - bl DWCi_GsMalloc - movs r4, r0 - addeq sp, sp, #0x10 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldr r1, [sp, #0x34] - ldr r0, [sp, #0x38] - str r1, [r4, #0x630] - str r0, [r4, #0x634] - mov r0, #0 - str r0, [r4, #0x624] - ldr r1, [sp, #0x30] - str r5, [sp] - ldr r0, _021FEBB4 ; =ListCallback - str r1, [sp, #4] - str r0, [sp, #8] - mov r1, r8 - mov r2, r7 - mov r3, r6 - add r0, r4, #0x4c - str r4, [sp, #0xc] - bl SBServerListInit - ldr r0, _021FEBB8 ; =EngineCallback - ldr r1, [sp, #0x28] - str r0, [sp] - ldr r2, [sp, #0x2c] - ldr r3, [sp, #0x30] - mov r0, r4 - str r4, [sp, #4] - bl SBQueryEngineInit - mov r0, r4 - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_021FEBAC: .word __GSIACResult -_021FEBB0: .word 0x00000638 -_021FEBB4: .word ListCallback -_021FEBB8: .word EngineCallback - arm_func_end ServerBrowserNewA - - arm_func_start ServerBrowserFree -ServerBrowserFree: ; 0x021FEBBC - stmfd sp!, {r4, lr} - mov r4, r0 - add r0, r4, #0x4c - bl SBServerListCleanup - mov r0, r4 - bl SBEngineCleanup - mov r0, r4 - bl DWCi_GsFree - ldmia sp!, {r4, pc} - arm_func_end ServerBrowserFree - - arm_func_start ServerBrowserBeginUpdate2 -ServerBrowserBeginUpdate2: ; 0x021FEBE0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x108 - ldr r8, [sp, #0x130] - mov sl, r0 - str r1, [sp, #4] - add r4, sp, #8 - mov sb, r3 - mov r1, #0x40 - mov r0, #0 -_021FEC04: - strb r0, [r4] - strb r0, [r4, #1] - strb r0, [r4, #2] - strb r0, [r4, #3] - add r4, r4, #4 - subs r1, r1, #1 - bne _021FEC04 - mov r5, #0 - str r2, [sl, #0x620] - mov r6, r5 - str r5, [sl, #0x40] - cmp r8, #0 - ble _021FEC8C - ldr r4, _021FED08 ; =0x02219B38 - add fp, sp, #8 -_021FEC40: - ldrb r0, [sb, r6] - ldr r7, [r4, r0, lsl #2] - mov r0, r7 - bl strlen - add r0, r5, r0 - add r0, r0, #1 - cmp r0, #0x100 - bge _021FEC8C - ldr r1, _021FED0C ; =0x02219FA8 - mov r2, r7 - add r0, fp, r5 - bl sprintf - add r5, r5, r0 - ldrb r1, [sb, r6] - mov r0, sl - bl SBQueryEngineAddQueryKey - add r6, r6, #1 - cmp r6, r8 - blt _021FEC40 -_021FEC8C: - ldr r4, [sp, #0x13c] - ldr r2, [sp, #0x134] - ldr r3, [sp, #0x138] - add r1, sp, #8 - add r0, sl, #0x4c - str r4, [sp] - bl SBServerListConnectAndQuery - cmp r0, #0 - addne sp, sp, #0x108 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [sp, #4] - cmp r1, #0 - addne sp, sp, #0x108 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r4, #0xa - b _021FECDC -_021FECCC: - mov r0, r4 - bl msleep - mov r0, sl - bl ServerBrowserThink -_021FECDC: - ldr r1, [sl, #0x4c] - cmp r1, #3 - beq _021FECCC - ldr r1, [sl, #0x10] - cmp r1, #0 - addle sp, sp, #0x108 - ldmleia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r0, #0 - beq _021FECCC - add sp, sp, #0x108 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_021FED08: .word qr2_registered_key_list -_021FED0C: .word Unk_ov4_02219FA8 - arm_func_end ServerBrowserBeginUpdate2 - - arm_func_start ServerBrowserLimitUpdateA -ServerBrowserLimitUpdateA: ; 0x021FED10 - stmfd sp!, {r3, lr} - sub sp, sp, #0x10 - ldr lr, [sp, #0x18] - ldr ip, [sp, #0x1c] - str lr, [sp] - str ip, [sp, #4] - mov lr, #0x80 - ldr ip, [sp, #0x20] - str lr, [sp, #8] - str ip, [sp, #0xc] - bl ServerBrowserBeginUpdate2 - add sp, sp, #0x10 - ldmia sp!, {r3, pc} - arm_func_end ServerBrowserLimitUpdateA - - arm_func_start ServerBrowserSendMessageToServerA -ServerBrowserSendMessageToServerA: ; 0x021FED44 - stmfd sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r5, r0 - mov r6, r2 - mov r0, r1 - mov r4, r3 - bl inet_addr - mov r3, r6, asr #8 - mov r2, r6, lsl #8 - ldr ip, [sp, #0x18] - mov r1, r0 - str ip, [sp] - and r3, r3, #0xff - and r0, r2, #0xff00 - orr r0, r3, r0 - mov r2, r0, lsl #0x10 - mov r3, r4 - add r0, r5, #0x4c - mov r2, r2, lsr #0x10 - bl SBSendMessageToServer - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end ServerBrowserSendMessageToServerA - - arm_func_start ServerBrowserSendNatNegotiateCookieToServerA -ServerBrowserSendNatNegotiateCookieToServerA: ; 0x021FED9C - stmfd sp!, {r4, r5, r6, lr} - mov r5, r0 - mov r6, r2 - mov r0, r1 - mov r4, r3 - bl inet_addr - mov r3, r6, asr #8 - mov r2, r6, lsl #8 - mov r1, r0 - and r3, r3, #0xff - and r0, r2, #0xff00 - orr r0, r3, r0 - mov r2, r0, lsl #0x10 - mov r3, r4 - add r0, r5, #0x4c - mov r2, r2, lsr #0x10 - bl SBSendNatNegotiateCookieToServer - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ServerBrowserSendNatNegotiateCookieToServerA - - arm_func_start ServerBrowserRemoveServer -ServerBrowserRemoveServer: ; 0x021FEDE4 - stmfd sp!, {r4, lr} - mov r4, r0 - add r0, r4, #0x4c - bl SBServerListFindServer - mov r1, r0 - mvn r0, #0 - cmp r1, r0 - ldmeqia sp!, {r4, pc} - add r0, r4, #0x4c - bl SBServerListRemoveAt - ldmia sp!, {r4, pc} - arm_func_end ServerBrowserRemoveServer - - arm_func_start ServerBrowserThink -ServerBrowserThink: ; 0x021FEE10 - stmfd sp!, {r4, lr} - mov r4, r0 - bl SBQueryEngineThink - add r0, r4, #0x4c - bl SBListThink - ldmia sp!, {r4, pc} - arm_func_end ServerBrowserThink - - arm_func_start ServerBrowserHalt -ServerBrowserHalt: ; 0x021FEE28 - stmfd sp!, {r4, lr} - mov r4, r0 - add r0, r4, #0x4c - bl SBServerListDisconnect - mov r0, r4 - bl SBEngineHaltUpdates - ldmia sp!, {r4, pc} - arm_func_end ServerBrowserHalt - - arm_func_start ServerBrowserClear -ServerBrowserClear: ; 0x021FEE44 - stmfd sp!, {r4, lr} - mov r4, r0 - bl ServerBrowserHalt - add r0, r4, #0x4c - bl SBServerListClear - ldmia sp!, {r4, pc} - arm_func_end ServerBrowserClear - - arm_func_start ServerBrowserState -ServerBrowserState: ; 0x021FEE5C - ldr r1, [r0, #0x10] - cmp r1, #0 - movgt r0, #2 - bxgt lr - ldr r0, [r0, #0x4c] - cmp r0, #3 - cmpne r0, #0 - moveq r0, #1 - bxeq lr - cmp r0, #1 - moveq r0, #0 - movne r0, #3 - bx lr - arm_func_end ServerBrowserState - - arm_func_start ServerBrowserGetServer -ServerBrowserGetServer: ; 0x021FEE90 - ldr ip, _021FEE9C ; =SBServerListNth - add r0, r0, #0x4c - bx ip - ; .align 2, 0 -_021FEE9C: .word SBServerListNth - arm_func_end ServerBrowserGetServer - - arm_func_start ServerBrowserCount -ServerBrowserCount: ; 0x021FEEA0 - ldr ip, _021FEEAC ; =SBServerListCount - add r0, r0, #0x4c - bx ip - ; .align 2, 0 -_021FEEAC: .word SBServerListCount - arm_func_end ServerBrowserCount - - arm_func_start ServerBrowserSortA -ServerBrowserSortA: ; 0x021FEEB0 - ldr ip, _021FEEBC ; =SBServerListSort - add r0, r0, #0x4c - bx ip - ; .align 2, 0 -_021FEEBC: .word SBServerListSort - arm_func_end ServerBrowserSortA - - arm_func_start ServerBrowserGetMyPublicIPAddr -ServerBrowserGetMyPublicIPAddr: ; 0x021FEEC0 - ldr r0, [r0, #0x4ec] - bx lr - arm_func_end ServerBrowserGetMyPublicIPAddr - - .data - - - .global Unk_ov4_02219FA8 -Unk_ov4_02219FA8: ; 0x02219FA8 - .asciz "\\%s" - diff --git a/subprojects/gamespy/libraries/serverbrowsing/asm/sb_serverlist.s b/subprojects/gamespy/libraries/serverbrowsing/asm/sb_serverlist.s deleted file mode 100644 index 85e6df5f1a..0000000000 --- a/subprojects/gamespy/libraries/serverbrowsing/asm/sb_serverlist.s +++ /dev/null @@ -1,2931 +0,0 @@ - .include "macros/function.inc" - .include "include/sb_serverlist.inc" - - .extern __lower_mapC - .extern __GSIACResult - .extern Unk_ov4_0221B754 - - .text - - - arm_func_start IntKeyCompare -IntKeyCompare: ; 0x021FEEC8 - stmfd sp!, {r3, r4, r5, lr} - ldr r2, _021FEF20 ; =0x0221B75C - ldr r0, [r0, #0] - ldr r2, [r2, #0] - ldr r5, [r1, #0] - ldr r1, [r2, #0x498] - mov r2, #0 - bl SBServerGetIntValueA - ldr r1, _021FEF20 ; =0x0221B75C - mov r4, r0 - ldr r1, [r1, #0] - mov r0, r5 - ldr r1, [r1, #0x498] - mov r2, #0 - bl SBServerGetIntValueA - ldr r1, _021FEF20 ; =0x0221B75C - sub r0, r4, r0 - ldr r1, [r1, #0] - ldr r1, [r1, #0x49c] - cmp r1, #0 - rsbeq r0, r0, #0 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_021FEF20: .word Unk_ov4_0221B75C - arm_func_end IntKeyCompare - - arm_func_start FloatKeyCompare -FloatKeyCompare: ; 0x021FEF24 - stmfd sp!, {r4, r5, r6, lr} - ldr r3, _021FEFF8 ; =0x0221B75C - mov r2, #0 - ldr r3, [r3, #0] - ldr r5, [r1, #0] - ldr r0, [r0, #0] - ldr r1, [r3, #0x498] - mov r3, r2 - bl SBServerGetFloatValueA - ldr r3, _021FEFF8 ; =0x0221B75C - mov r2, #0 - mov r4, r0 - ldr r0, [r3, #0] - mov r6, r1 - ldr r1, [r0, #0x498] - mov r0, r5 - mov r3, r2 - bl SBServerGetFloatValueA - mov r2, r0 - mov r3, r1 - mov r0, r4 - mov r1, r6 - bl _dsub - ldr r2, _021FEFF8 ; =0x0221B75C - mov r4, r0 - ldr r0, [r2, #0] - mov r5, r1 - ldr r0, [r0, #0x49c] - cmp r0, #0 - bne _021FEFB8 - mov r0, #0 - mov r1, r0 - mov r2, r4 - mov r3, r5 - bl _dsub - mov r4, r0 - mov r5, r1 -_021FEFB8: - mov r0, r4 - mov r1, r5 - bl _d_dtof - mov r1, #0 - bl _f_fgt - movhi r0, #1 - ldmhiia sp!, {r4, r5, r6, pc} - mov r0, r4 - mov r1, r5 - bl _d_dtof - mov r1, #0 - bl _f_flt - movlo r0, #1 - movhs r0, #0 - rsb r0, r0, #0 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_021FEFF8: .word Unk_ov4_0221B75C - arm_func_end FloatKeyCompare - - arm_func_start StrCaseKeyCompare -StrCaseKeyCompare: ; 0x021FEFFC - stmfd sp!, {r3, r4, r5, lr} - ldr r2, _021FF05C ; =0x0221B75C - mov r5, r1 - ldr r1, [r2, #0] - ldr r0, [r0, #0] - ldr r1, [r1, #0x498] - ldr r2, _021FF060 ; =0x0221A038 - bl SBServerGetStringValueA - ldr r1, _021FF05C ; =0x0221B75C - mov r4, r0 - ldr r1, [r1, #0] - ldr r0, [r5, #0] - ldr r1, [r1, #0x498] - ldr r2, _021FF060 ; =0x0221A038 - bl SBServerGetStringValueA - mov r1, r0 - mov r0, r4 - bl strcmp - ldr r1, _021FF05C ; =0x0221B75C - ldr r1, [r1, #0] - ldr r1, [r1, #0x49c] - cmp r1, #0 - rsbeq r0, r0, #0 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_021FF05C: .word Unk_ov4_0221B75C -_021FF060: .word Unk_ov4_0221A038 - arm_func_end StrCaseKeyCompare - - arm_func_start StrNoCaseKeyCompare -StrNoCaseKeyCompare: ; 0x021FF064 - stmfd sp!, {r3, r4, r5, lr} - ldr r2, _021FF0C4 ; =0x0221B75C - mov r5, r1 - ldr r1, [r2, #0] - ldr r0, [r0, #0] - ldr r1, [r1, #0x498] - ldr r2, _021FF0C8 ; =0x0221A038 - bl SBServerGetStringValueA - ldr r1, _021FF0C4 ; =0x0221B75C - mov r4, r0 - ldr r1, [r1, #0] - ldr r0, [r5, #0] - ldr r1, [r1, #0x498] - ldr r2, _021FF0C8 ; =0x0221A038 - bl SBServerGetStringValueA - mov r1, r0 - mov r0, r4 - bl strcasecmp - ldr r1, _021FF0C4 ; =0x0221B75C - ldr r1, [r1, #0] - ldr r1, [r1, #0x49c] - cmp r1, #0 - rsbeq r0, r0, #0 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_021FF0C4: .word Unk_ov4_0221B75C -_021FF0C8: .word Unk_ov4_0221A038 - arm_func_end StrNoCaseKeyCompare - - arm_func_start SBServerListSort -SBServerListSort: ; 0x021FF0CC - cmp r3, #3 - addls pc, pc, r3, lsl #2 - b _021FF108 -_021FF0D8: ; jump table - b _021FF0E8 ; case 0 - b _021FF0F0 ; case 1 - b _021FF0F8 ; case 2 - b _021FF100 ; case 3 -_021FF0E8: - ldr r3, _021FF12C ; =IntKeyCompare - b _021FF10C -_021FF0F0: - ldr r3, _021FF130 ; =FloatKeyCompare - b _021FF10C -_021FF0F8: - ldr r3, _021FF134 ; =StrCaseKeyCompare - b _021FF10C -_021FF100: - ldr r3, _021FF138 ; =StrNoCaseKeyCompare - b _021FF10C -_021FF108: - ldr r3, _021FF138 ; =StrNoCaseKeyCompare -_021FF10C: - str r2, [r0, #0x498] - str r1, [r0, #0x49c] - ldr r2, _021FF13C ; =0x0221B75C - ldr ip, _021FF140 ; =ArraySort - str r0, [r2, #0] - mov r1, r3 - ldr r0, [r0, #4] - bx ip - ; .align 2, 0 -_021FF12C: .word IntKeyCompare -_021FF130: .word FloatKeyCompare -_021FF134: .word StrCaseKeyCompare -_021FF138: .word StrNoCaseKeyCompare -_021FF13C: .word Unk_ov4_0221B75C -_021FF140: .word ArraySort - arm_func_end SBServerListSort - - arm_func_start SBServerListAppendServer -SBServerListAppendServer: ; 0x021FF144 - stmfd sp!, {r0, r1, r2, r3} - stmfd sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4, #4] - add r1, sp, #0xc - bl ArrayAppend - ldr r2, [sp, #0xc] - ldr r3, [r4, #0x494] - ldr ip, [r4, #0x488] - mov r0, r4 - mov r1, #0 - blx ip - ldmia sp!, {r4, lr} - add sp, sp, #0x10 - bx lr - arm_func_end SBServerListAppendServer - - arm_func_start SBServerListFindServer -SBServerListFindServer: ; 0x021FF180 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - ldr r0, [r7, #4] - mov r6, r1 - bl ArrayLength - mov r4, r0 - cmp r4, #0 - mov r5, #0 - ble _021FF1CC -_021FF1A4: - ldr r0, [r7, #4] - mov r1, r5 - bl ArrayNth - ldr r0, [r0, #0] - cmp r6, r0 - moveq r0, r5 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - add r5, r5, #1 - cmp r5, r4 - blt _021FF1A4 -_021FF1CC: - mvn r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end SBServerListFindServer - - arm_func_start SBServerListFindServerByIP -SBServerListFindServerByIP: ; 0x021FF1D4 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov sb, r0 - ldr r0, [sb, #4] - mov r8, r1 - mov r7, r2 - bl ArrayLength - mov r4, r0 - cmp r4, #0 - mov r6, #0 - ble _021FF23C -_021FF1FC: - ldr r0, [sb, #4] - mov r1, r6 - bl ArrayNth - ldr r5, [r0, #0] - mov r0, r5 - bl SBServerGetPublicInetAddress - cmp r8, r0 - bne _021FF230 - mov r0, r5 - bl SBServerGetPublicQueryPortNBO - cmp r7, r0 - moveq r0, r6 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_021FF230: - add r6, r6, #1 - cmp r6, r4 - blt _021FF1FC -_021FF23C: - mvn r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end SBServerListFindServerByIP - - arm_func_start AddServerToDeadlist -AddServerToDeadlist: ; 0x021FF244 - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - ldr r1, [r5, #0x5d0] - mov r0, r4 - cmp r1, #0 - bne _021FF26C - mov r1, #0 - bl SBServerSetNext - b _021FF270 -_021FF26C: - bl SBServerSetNext -_021FF270: - str r4, [r5, #0x5d0] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end AddServerToDeadlist - - arm_func_start SBServerListRemoveAt -SBServerListRemoveAt: ; 0x021FF278 - stmfd sp!, {r4, r5, r6, lr} - mov r6, r0 - ldr r0, [r6, #4] - mov r5, r1 - bl ArrayNth - ldr r4, [r0, #0] - ldr r3, [r6, #0x494] - ldr ip, [r6, #0x488] - mov r0, r6 - mov r2, r4 - mov r1, #2 - blx ip - ldr r0, [r6, #4] - mov r1, r5 - bl ArrayDeleteAt - mov r0, r6 - mov r1, r4 - bl AddServerToDeadlist - ldmia sp!, {r4, r5, r6, pc} - arm_func_end SBServerListRemoveAt - - arm_func_start SBServerListCount -SBServerListCount: ; 0x021FF2C4 - ldr ip, _021FF2D0 ; =ArrayLength - ldr r0, [r0, #4] - bx ip - ; .align 2, 0 -_021FF2D0: .word ArrayLength - arm_func_end SBServerListCount - - arm_func_start SBServerListNth -SBServerListNth: ; 0x021FF2D4 - stmfd sp!, {r3, lr} - ldr r0, [r0, #4] - bl ArrayNth - ldr r0, [r0, #0] - ldmia sp!, {r3, pc} - arm_func_end SBServerListNth - - arm_func_start SBFreeDeadList -SBFreeDeadList: ; 0x021FF2E8 - stmfd sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r6, r0 - ldr r5, [r6, #0x5d0] - cmp r5, #0 - addeq sp, sp, #4 - ldmeqia sp!, {r3, r4, r5, r6, pc} - str r5, [sp] - beq _021FF330 - add r4, sp, #0 -_021FF310: - mov r0, r5 - bl SBServerGetNext - mov r5, r0 - mov r0, r4 - bl SBServerFree - str r5, [sp] - cmp r5, #0 - bne _021FF310 -_021FF330: - mov r0, #0 - str r0, [r6, #0x5d0] - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end SBFreeDeadList - - arm_func_start SBServerListClear -SBServerListClear: ; 0x021FF340 - stmfd sp!, {r4, r5, r6, lr} - mov r6, r0 - ldr r0, [r6, #4] - bl ArrayLength - mov r5, r0 - cmp r5, #0 - mov r4, #0 - ble _021FF384 -_021FF360: - ldr r0, [r6, #4] - mov r1, r4 - bl ArrayNth - ldr r1, [r0, #0] - mov r0, r6 - bl AddServerToDeadlist - add r4, r4, #1 - cmp r4, r5 - blt _021FF360 -_021FF384: - ldr r0, [r6, #4] - bl ArrayClear - mov r0, r6 - bl SBFreeDeadList - ldmia sp!, {r4, r5, r6, pc} - arm_func_end SBServerListClear - - arm_func_start SBAllocateServerList -SBAllocateServerList: ; 0x021FF398 - stmfd sp!, {r4, lr} - mov r4, r0 - mov r0, #4 - mov r1, #0x64 - mov r2, #0 - bl ArrayNew - str r0, [r4, #4] - mov r0, #0 - str r0, [r4, #0x5d0] - ldmia sp!, {r4, pc} - arm_func_end SBAllocateServerList - - arm_func_start SBRefStr -SBRefStr: ; 0x021FF3C0 - stmfd sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - mov r4, r1 - mov r5, r0 - str r4, [sp] - bl SBRefStrHash - add r1, sp, #0 - bl TableLookup - cmp r0, #0 - beq _021FF400 - ldr r1, [r0, #4] - add sp, sp, #8 - add r1, r1, #1 - str r1, [r0, #4] - ldr r0, [r0, #0] - ldmia sp!, {r3, r4, r5, pc} -_021FF400: - mov r0, r4 - bl goastrdup - str r0, [sp] - mov r1, #1 - mov r0, r5 - str r1, [sp, #4] - bl SBRefStrHash - add r1, sp, #0 - bl TableEnter - ldr r0, [sp] - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end SBRefStr - - arm_func_start SBReleaseStr -SBReleaseStr: ; 0x021FF430 - stmfd sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - mov r5, r0 - str r1, [sp] - bl SBRefStrHash - add r1, sp, #0 - bl TableLookup - movs r4, r0 - bne _021FF468 - ldr r0, _021FF4A0 ; =0x0221A03C - ldr r1, _021FF4A4 ; =0x0221A048 - ldr r2, _021FF4A8 ; =0x02219FB0 - mov r3, #0xf4 - bl __msl_assertion_failed -_021FF468: - cmp r4, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, [r4, #4] - subs r0, r0, #1 - addne sp, sp, #8 - str r0, [r4, #4] - ldmneia sp!, {r3, r4, r5, pc} - mov r0, r5 - bl SBRefStrHash - add r1, sp, #0 - bl TableRemove - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_021FF4A0: .word Unk_ov4_0221A03C -_021FF4A4: .word Unk_ov4_0221A048 -_021FF4A8: .word Unk_ov4_02219FB0 - arm_func_end SBReleaseStr - - arm_func_start NTSLengthSB -NTSLengthSB: ; 0x021FF4AC - cmp r1, #0 - mov r3, #0 - ble _021FF4D4 -_021FF4B8: - ldrsb r2, [r0, r3] - cmp r2, #0 - addeq r0, r3, #1 - bxeq lr - add r3, r3, #1 - cmp r3, r1 - blt _021FF4B8 -_021FF4D4: - mvn r0, #0 - bx lr - arm_func_end NTSLengthSB - - arm_func_start SBServerListInit -SBServerListInit: ; 0x021FF4DC - stmfd sp!, {r3, r4, r5, r6, r7, lr} - movs r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bne _021FF508 - ldr r0, _021FF5EC ; =0x0221A058 - ldr r1, _021FF5F0 ; =0x0221A048 - ldr r2, _021FF5F4 ; =0x02219FE0 - mov r3, #0x11c - bl __msl_assertion_failed -_021FF508: - ldr r0, [sp, #0x1c] - cmp r0, #0 - bne _021FF524 - ldr r0, _021FF5F8 ; =0x0221AE50 - ldr r0, [r0, #0] - cmp r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} -_021FF524: - mov r1, #1 - mov r0, r7 - str r1, [r7, #0] - bl SBAllocateServerList - mov r0, r7 - bl SBRefStrHash - mov r1, r6 - add r0, r7, #0xc - bl strcpy - mov r1, r5 - add r0, r7, #0x30 - bl strcpy - mov r1, r4 - add r0, r7, #0x54 - bl strcpy - ldr r1, [sp, #0x20] - mov r0, #0 - str r1, [r7, #0x488] - str r0, [r7, #0x48c] - cmp r1, #0 - bne _021FF58C - ldr r0, _021FF5FC ; =0x0221A068 - ldr r1, _021FF5F0 ; =0x0221A048 - ldr r2, _021FF5F4 ; =0x02219FE0 - ldr r3, _021FF600 ; =0x00000132 - bl __msl_assertion_failed -_021FF58C: - ldr r0, [sp, #0x24] - ldr r1, _021FF604 ; =0x0221A038 - str r0, [r7, #0x494] - mov r3, #0 - str r1, [r7, #0x498] - str r3, [r7, #0x4a0] - sub r0, r3, #1 - str r0, [r7, #0x4b0] - str r3, [r7, #0x7c] - str r3, [r7, #0x80] - str r3, [r7, #8] - str r0, [r7, #0x484] - str r3, [r7, #0x480] - ldr r2, [sp, #0x18] - str r3, [r7, #0x4a4] - mov r0, r7 - str r2, [r7, #0x4b8] - bl SBSetLastListErrorPtr - mov r0, #0 - str r0, [r7, #0x5cc] - bl current_time - bl srand - bl SocketStartUp - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021FF5EC: .word Unk_ov4_0221A058 -_021FF5F0: .word Unk_ov4_0221A048 -_021FF5F4: .word Unk_ov4_02219FE0 -_021FF5F8: .word __GSIACResult -_021FF5FC: .word Unk_ov4_0221A068 -_021FF600: .word 0x00000132 -_021FF604: .word Unk_ov4_0221A038 - arm_func_end SBServerListInit - - arm_func_start ErrorDisconnect -ErrorDisconnect: ; 0x021FF608 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r4, r0 - ldr r5, [r4, #0x80] - cmp r5, #0 - ble _021FF694 - ldr r0, _021FF6BC ; =0x02219FAC - ldr r6, [r0, #0] - mov r0, r6 - bl strlen - cmp r5, r0 - bls _021FF694 - ldr r0, _021FF6BC ; =0x02219FAC - ldr r5, [r4, #0x7c] - ldr r7, [r0, #0] - mov r0, r7 - bl strlen - mov r2, r0 - mov r0, r5 - mov r1, r7 - bl strncmp - cmp r0, #0 - bne _021FF694 - mov r0, r6 - bl strlen - mov r1, r0 - mov r0, r4 - add r1, r5, r1 - bl SBSetLastListErrorPtr - ldr r0, _021FF6C0 ; =0x0221B754 - ldr r3, [r4, #0x494] - ldr r2, [r0, #0] - ldr ip, [r4, #0x488] - mov r0, r4 - mov r1, #5 - blx ip -_021FF694: - ldr r0, _021FF6C0 ; =0x0221B754 - ldr r3, [r4, #0x494] - ldr r2, [r0, #0] - ldr ip, [r4, #0x488] - mov r0, r4 - mov r1, #4 - blx ip - mov r0, r4 - bl SBServerListDisconnect - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021FF6BC: .word Unk_ov4_02219FAC -_021FF6C0: .word Unk_ov4_0221B754 - arm_func_end ErrorDisconnect - - arm_func_start StringHash -StringHash: ; 0x021FF6C4 - stmfd sp!, {r3, lr} - ldrsb lr, [r0] - mov ip, #0 - cmp lr, #0 - beq _021FF704 - ldr r3, _021FF714 ; =0x020FE764 - ldr r2, _021FF718 ; =0x9CCF9319 -_021FF6E0: - cmp lr, #0 - blt _021FF6F4 - cmp lr, #0x80 - bge _021FF6F4 - ldrb lr, [r3, lr] -_021FF6F4: - mla ip, r2, ip, lr - ldrsb lr, [r0, #1]! - cmp lr, #0 - bne _021FF6E0 -_021FF704: - mov r0, ip - bl _u32_div_f - mov r0, r1 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_021FF714: .word __lower_mapC -_021FF718: .word 0x9CCF9319 - arm_func_end StringHash - - arm_func_start ServerListConnect -ServerListConnect: ; 0x021FF71C - stmfd sp!, {r4, lr} - sub sp, sp, #0x88 - mov r4, r0 - add r0, r4, #0xc - mov r1, #0x14 - bl StringHash - ldr r1, _021FF83C ; =0x0221B75C - mov r3, r0 - ldr r1, [r1, #4] - add r0, sp, #8 - cmp r1, #0 - beq _021FF754 - bl strcpy - b _021FF760 -_021FF754: - ldr r1, _021FF840 ; =0x0221A07C - add r2, r4, #0xc - bl sprintf -_021FF760: - ldr r1, _021FF844 ; =0x0000EE70 - mov r2, #2 - add r0, sp, #8 - strb r2, [sp, #1] - strh r1, [sp, #2] - bl inet_addr - mvn r1, #0 - str r0, [sp, #4] - cmp r0, r1 - bne _021FF7CC - add r0, sp, #8 - bl SOC_GetHostByName - cmp r0, #0 - addeq sp, sp, #0x88 - moveq r0, #2 - ldmeqia sp!, {r4, pc} - ldr r0, [r0, #0xc] - add r3, sp, #4 - ldr r2, [r0, #0] - ldrb r1, [r2] - ldrb r0, [r2, #1] - strb r1, [r3] - strb r0, [r3, #1] - ldrb r1, [r2, #2] - ldrb r0, [r2, #3] - strb r1, [r3, #2] - strb r0, [r3, #3] -_021FF7CC: - ldr r0, [r4, #0x4b0] - mvn r1, #0 - cmp r0, r1 - bne _021FF804 - mov r0, #2 - mov r1, #1 - mov r2, #0 - bl socket - mvn r1, #0 - cmp r0, r1 - str r0, [r4, #0x4b0] - addeq sp, sp, #0x88 - moveq r0, #1 - ldmeqia sp!, {r4, pc} -_021FF804: - add r1, sp, #0 - mov r2, #8 - bl connect - cmp r0, #0 - addeq sp, sp, #0x88 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldr r0, [r4, #0x4b0] - bl closesocket - mvn r0, #0 - str r0, [r4, #0x4b0] - mov r0, #3 - add sp, sp, #0x88 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_021FF83C: .word Unk_ov4_0221B75C -_021FF840: .word Unk_ov4_0221A07C -_021FF844: .word 0x0000EE70 - arm_func_end ServerListConnect - - arm_func_start BufferAddNTS -BufferAddNTS: ; 0x021FF848 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - movs r7, r1 - ldreq r7, _021FF894 ; =0x0221A038 - mov r4, r0 - mov r0, r7 - mov r6, r2 - bl strlen - add r5, r0, #1 - ldr r0, [r4, #0] - mov r1, r7 - mov r2, r5 - bl memcpy - ldr r0, [r6, #0] - add r0, r0, r5 - str r0, [r6, #0] - ldr r0, [r4, #0] - add r0, r0, r5 - str r0, [r4, #0] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021FF894: .word Unk_ov4_0221A038 - arm_func_end BufferAddNTS - - arm_func_start BufferAddByte -BufferAddByte: ; 0x021FF898 - ldr r3, [r0, #0] - strb r1, [r3] - ldr r1, [r2, #0] - add r1, r1, #1 - str r1, [r2, #0] - ldr r1, [r0, #0] - add r1, r1, #1 - str r1, [r0, #0] - bx lr - arm_func_end BufferAddByte - - arm_func_start BufferAddInt -BufferAddInt: ; 0x021FF8BC - stmfd sp!, {r0, r1, r2, r3} - stmfd sp!, {r3, lr} - add ip, sp, #0xc - ldrb r3, [ip] - ldrb r1, [ip, #1] - ldr lr, [r0] - strb r3, [lr] - strb r1, [lr, #1] - ldrb r3, [ip, #2] - ldrb r1, [ip, #3] - strb r3, [lr, #2] - strb r1, [lr, #3] - ldr r1, [r2, #0] - add r1, r1, #4 - str r1, [r2, #0] - ldr r1, [r0, #0] - add r1, r1, #4 - str r1, [r0, #0] - ldmia sp!, {r3, lr} - add sp, sp, #0x10 - bx lr - arm_func_end BufferAddInt - - arm_func_start BufferAddData -BufferAddData: ; 0x021FF910 - stmfd sp!, {r4, r5, r6, lr} - mov r6, r0 - ldr r0, [r6, #0] - mov r4, r3 - mov r5, r2 - bl memcpy - ldr r0, [r4, #0] - add r0, r0, r5 - str r0, [r4, #0] - ldr r0, [r6, #0] - add r0, r0, r5 - str r0, [r6, #0] - ldmia sp!, {r4, r5, r6, pc} - arm_func_end BufferAddData - - arm_func_start SetupListChallenge -SetupListChallenge: ; 0x021FF944 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - bl rand - ldr r5, _021FFA2C ; =0x2C0B02C1 - mov r8, #0 - smull r2, r4, r5, r0 - mov r1, r0, lsr #0x1f - add r4, r1, r4, asr #4 - mov r3, #0x5d - smull r1, r2, r3, r4 - sub r4, r0, r1 - add r0, r4, #0x21 - mov r7, #1 - strb r0, [sl, #0x74] - mov fp, r8 - mov r6, r7 - mov r4, r3 -_021FF988: - add sb, sl, r7 - ldrsb r3, [sb, #0x73] - ldrsb r0, [sl, #0x74] - cmp r3, r0 - eor r3, r7, r3 - movlt r1, r6 - and r3, r3, #1 - movge r1, fp - cmp r0, #0x4f - movlt r2, #1 - and r0, r0, #1 - eor r3, r8, r3 - movge r2, #0 - eor r0, r0, r3 - eor r0, r0, r2 - eor r8, r0, r1 - bl rand - smull r2, r3, r5, r0 - mov r1, r0, lsr #0x1f - add r3, r1, r3, asr #4 - smull r1, r2, r4, r3 - sub r3, r0, r1 - add r0, r3, #0x21 - cmp r8, #0 - strb r0, [sb, #0x74] - beq _021FF9FC - ldrsb r0, [sb, #0x74] - tst r0, #1 - beq _021FFA10 -_021FF9FC: - cmp r8, #0 - ldreqsb r0, [sb, #0x74] - andeq r0, r0, #1 - cmpeq r0, #1 - bne _021FFA1C -_021FFA10: - ldrsb r0, [sb, #0x74] - add r0, r0, #1 - strb r0, [sb, #0x74] -_021FFA1C: - add r7, r7, #1 - cmp r7, #8 - blt _021FF988 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_021FFA2C: .word 0x2C0B02C1 - arm_func_end SetupListChallenge - - arm_func_start SendWithRetry -SendWithRetry: ; 0x021FFA30 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - mov sb, r1 - mov r8, r2 - mov r7, #1 - mov fp, #2 - mov r5, #0 -_021FFA4C: - ldr r0, [sl, #0x4b0] - mov r1, sb - mov r2, r8 - mov r3, r5 - sub r7, r7, #1 - bl send - mov r6, r0 - cmp r6, #0 - bgt _021FFAB8 - cmp r7, #0 - blt _021FFAB8 - mov r0, sl - bl SBServerListDisconnect - mov r1, #0 - mov r2, r1 - mov r0, sl - mov r3, fp - str r2, [sp] - bl SBServerListConnectAndQuery - movs r4, r0 - beq _021FFAB0 - mov r0, sl - bl ErrorDisconnect - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_021FFAB0: - cmp r7, #0 - bge _021FFA4C -_021FFAB8: - cmp r6, #0 - movle r0, #3 - movgt r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end SendWithRetry - - arm_func_start SBServerListConnectAndQuery -SBServerListConnectAndQuery: ; 0x021FFAC8 - stmfd sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x30c - mov r5, r0 - ldr r0, [r5, #0] - mov r7, r1 - mov r6, r2 - mov r4, r3 - cmp r0, #1 - beq _021FFB00 - ldr r0, _021FFD24 ; =0x0221A098 - ldr r1, _021FFD28 ; =0x0221A048 - ldr r2, _021FFD2C ; =0x0221A01C - ldr r3, _021FFD30 ; =0x0000020A - bl __msl_assertion_failed -_021FFB00: - cmp r7, #0 - ldreq r7, _021FFD34 ; =0x0221A038 - cmp r6, #0 - ldreq r6, _021FFD34 ; =0x0221A038 - mov r0, r7 - bl strlen - cmp r0, #0x100 - addhi sp, sp, #0x30c - movhi r0, #6 - ldmhiia sp!, {r4, r5, r6, r7, pc} - mov r0, r6 - bl strlen - cmp r0, #0x100 - addhi sp, sp, #0x30c - movhi r0, #6 - ldmhiia sp!, {r4, r5, r6, r7, pc} - mov r0, r5 - bl ServerListConnect - cmp r0, #0 - addne sp, sp, #0x30c - ldmneia sp!, {r4, r5, r6, r7, pc} - mov r0, r5 - str r4, [r5, #0x5c4] - bl SetupListChallenge - add r3, sp, #0xe - mov ip, #2 - add r0, sp, #4 - add r2, sp, #8 - mov r1, #0 - str ip, [sp, #8] - str r3, [sp, #4] - bl BufferAddByte - add r0, sp, #4 - add r2, sp, #8 - mov r1, #1 - bl BufferAddByte - add r0, sp, #4 - mov r1, #3 - add r2, sp, #8 - bl BufferAddByte - ldr r1, [r5, #0x4b8] - add r0, sp, #4 - add r2, sp, #8 - bl BufferAddInt - add r0, sp, #4 - add r1, r5, #0xc - add r2, sp, #8 - bl BufferAddNTS - add r0, sp, #4 - add r1, r5, #0x30 - add r2, sp, #8 - bl BufferAddNTS - add r0, sp, #4 - add r1, r5, #0x74 - mov r2, #8 - add r3, sp, #8 - bl BufferAddData - mov r1, r6 - add r0, sp, #4 - add r2, sp, #8 - bl BufferAddNTS - mov r1, r7 - add r0, sp, #4 - add r2, sp, #8 - bl BufferAddNTS - mov r1, r4, lsl #0x18 - and ip, r1, #0xff000000 - mov r1, r4, lsl #8 - and r3, r1, #0xff0000 - mov r1, r4, lsr #0x18 - and r2, r1, #0xff - mov r1, r4, lsr #8 - and r1, r1, #0xff00 - orr r1, r2, r1 - orr r1, r3, r1 - add r0, sp, #4 - orr r1, ip, r1 - add r2, sp, #8 - bl BufferAddInt - ldr r0, [r5, #0x5c4] - tst r0, #8 - beq _021FFC58 - ldr r1, [r5, #0x4a4] - add r0, sp, #4 - add r2, sp, #8 - bl BufferAddInt -_021FFC58: - ldr r0, [r5, #0x5c4] - tst r0, #0x80 - beq _021FFC74 - ldr r1, [sp, #0x320] - add r0, sp, #4 - add r2, sp, #8 - bl BufferAddInt -_021FFC74: - ldr r2, [sp, #8] - add r4, sp, #0 - mov r0, r2, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r1, r0, asr #8 - mov r0, r0, lsl #8 - and r1, r1, #0xff - and r0, r0, #0xff00 - orr r0, r1, r0 - strh r0, [sp] - ldrb r3, [r4] - add r1, sp, #0xc - ldrb r0, [r4, #1] - strb r3, [r1] - mov r3, #0 - strb r0, [r1, #1] - ldr r0, [r5, #0x4b0] - bl send - cmp r0, #0 - bgt _021FFCD8 - mov r0, r5 - bl SBServerListDisconnect - add sp, sp, #0x30c - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, pc} -_021FFCD8: - mov r0, #3 - str r0, [r5, #0] - mov r0, #0 - str r0, [r5, #0x5c8] - ldr r0, [r5, #0x7c] - cmp r0, #0 - bne _021FFD18 - mov r0, #0x1000 - bl DWCi_GsMalloc - cmp r0, #0 - str r0, [r5, #0x7c] - addeq sp, sp, #0x30c - moveq r0, #5 - ldmeqia sp!, {r4, r5, r6, r7, pc} - mov r0, #0 - str r0, [r5, #0x80] -_021FFD18: - mov r0, #0 - add sp, sp, #0x30c - ldmia sp!, {r4, r5, r6, r7, pc} - ; .align 2, 0 -_021FFD24: .word Unk_ov4_0221A098 -_021FFD28: .word Unk_ov4_0221A048 -_021FFD2C: .word Unk_ov4_0221A01C -_021FFD30: .word 0x0000020A -_021FFD34: .word Unk_ov4_0221A038 - arm_func_end SBServerListConnectAndQuery - - arm_func_start FreePopularValues -FreePopularValues: ; 0x021FFD38 - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r0, [r5, #0x480] - mov r4, #0 - cmp r0, #0 - ble _021FFD70 -_021FFD50: - add r0, r5, r4, lsl #2 - ldr r1, [r0, #0x84] - mov r0, r5 - bl SBReleaseStr - ldr r0, [r5, #0x480] - add r4, r4, #1 - cmp r4, r0 - blt _021FFD50 -_021FFD70: - mov r0, #0 - str r0, [r5, #0x480] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end FreePopularValues - - arm_func_start FreeKeyList -FreeKeyList: ; 0x021FFD7C - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r0, [r5, #8] - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r4, #0 - bl ArrayLength - cmp r0, #0 - ble _021FFDCC -_021FFDA0: - ldr r0, [r5, #8] - mov r1, r4 - bl ArrayNth - ldr r1, [r0, #0] - mov r0, r5 - bl SBReleaseStr - ldr r0, [r5, #8] - add r4, r4, #1 - bl ArrayLength - cmp r4, r0 - blt _021FFDA0 -_021FFDCC: - ldr r0, [r5, #8] - bl ArrayFree - mov r0, #0 - str r0, [r5, #8] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end FreeKeyList - - arm_func_start SBServerListDisconnect -SBServerListDisconnect: ; 0x021FFDE0 - stmfd sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4, #0x7c] - cmp r0, #0 - beq _021FFDF8 - bl DWCi_GsFree -_021FFDF8: - mov r1, #0 - str r1, [r4, #0x7c] - str r1, [r4, #0x80] - ldr r0, [r4, #0x4b0] - sub r1, r1, #1 - cmp r0, r1 - beq _021FFE18 - bl closesocket -_021FFE18: - mvn r1, #0 - mov r0, r4 - str r1, [r4, #0x4b0] - mov r1, #1 - str r1, [r4, #0] - bl FreeKeyList - mvn r1, #0 - mov r0, r4 - str r1, [r4, #0x484] - bl FreePopularValues - ldmia sp!, {r4, pc} - arm_func_end SBServerListDisconnect - - arm_func_start SBServerListCleanup -SBServerListCleanup: ; 0x021FFE44 - stmfd sp!, {r4, lr} - mov r4, r0 - bl SBServerListDisconnect - mov r0, r4 - bl SBServerListClear - mov r0, r4 - bl SBRefStrHashCleanup - ldr r0, [r4, #4] - cmp r0, #0 - beq _021FFE70 - bl ArrayFree -_021FFE70: - mov r0, #0 - str r0, [r4, #4] - ldmia sp!, {r4, pc} - arm_func_end SBServerListCleanup - - arm_func_start InitCryptKey -InitCryptKey: ; 0x021FFE7C - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov sb, r0 - mov r7, r2 - add r0, sb, #0x54 - mov r8, r1 - bl strlen - mov r5, r0 - cmp r7, #0 - add r6, sb, #0x54 - mov r4, #0 - ble _021FFF04 -_021FFEA8: - mov r0, r4 - mov r1, r5 - bl _s32_div_f - ldrsb r1, [r6, r1] - mov r2, r4, lsr #0x1f - rsb r0, r2, r4, lsl #29 - mul r3, r4, r1 - mov r1, r3, lsr #0x1f - add r2, r2, r0, ror #29 - rsb r0, r1, r3, lsl #29 - add r2, sb, r2 - add r3, r1, r0, ror #29 - ldrsb r0, [r8, r4] - ldrsb r1, [r2, #0x74] - add r2, sb, r3 - add r4, r4, #1 - eor r0, r1, r0 - ldrsb r1, [r2, #0x74] - mov r0, r0, lsl #0x18 - cmp r4, r7 - eor r0, r1, r0, asr #24 - strb r0, [r2, #0x74] - blt _021FFEA8 -_021FFF04: - add r0, sb, #0xbc - add r0, r0, #0x400 - add r1, sb, #0x74 - mov r2, #8 - bl GOACryptInit - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end InitCryptKey - - arm_func_start ServerSizeForFlags -ServerSizeForFlags: ; 0x021FFF1C - mov r1, #5 - tst r0, #2 - addne r1, r1, #4 - tst r0, #8 - addne r1, r1, #4 - tst r0, #0x10 - addne r1, r1, #2 - tst r0, #0x20 - addne r1, r1, #2 - mov r0, r1 - bx lr - arm_func_end ServerSizeForFlags - - arm_func_start FullRulesPresent -FullRulesPresent: ; 0x021FFF48 - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - b _021FFF98 -_021FFF58: - mov r0, r5 - mov r1, r4 - bl NTSLengthSB - cmp r0, #0 - movlt r0, #0 - ldmltia sp!, {r3, r4, r5, pc} - sub r4, r4, r0 - add r5, r5, r0 - mov r0, r5 - mov r1, r4 - bl NTSLengthSB - cmp r0, #0 - movlt r0, #0 - ldmltia sp!, {r3, r4, r5, pc} - add r5, r5, r0 - sub r4, r4, r0 -_021FFF98: - cmp r4, #0 - ble _021FFFAC - ldrsb r0, [r5] - cmp r0, #0 - bne _021FFF58 -_021FFFAC: - cmp r4, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldrsb r0, [r5] - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end FullRulesPresent - - arm_func_start AllKeysPresent -AllKeysPresent: ; 0x021FFFCC - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r8, r0 - ldr r0, [r8, #8] - mov r7, r1 - mov r6, r2 - bl ArrayLength - mov r4, r0 - cmp r4, #0 - mov r5, #0 - ble _022000B0 - mvn sb, #0 -_021FFFF8: - ldr r0, [r8, #8] - mov r1, r5 - bl ArrayNth - ldr r0, [r0, #4] - cmp r0, #0 - beq _0220003C - cmp r0, #1 - beq _02200024 - cmp r0, #2 - beq _02200030 - b _0220007C -_02200024: - add r7, r7, #1 - sub r6, r6, #1 - b _02200098 -_02200030: - add r7, r7, #2 - sub r6, r6, #2 - b _02200098 -_0220003C: - cmp r6, #1 - movlt r0, #0 - ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldrb r0, [r7], #1 - sub r6, r6, #1 - cmp r0, #0xff - bne _02200098 - mov r0, r7 - mov r1, r6 - bl NTSLengthSB - cmp r0, sb - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - add r7, r7, r0 - sub r6, r6, r0 - b _02200098 -_0220007C: - ldr r0, _022000B8 ; =0x0221A0B8 - ldr r1, _022000BC ; =0x0221A048 - ldr r2, _022000C0 ; =0x02219FD0 - ldr r3, _022000C4 ; =0x00000317 - bl __msl_assertion_failed - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_02200098: - cmp r6, #0 - movlt r0, #0 - ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - add r5, r5, #1 - cmp r5, r4 - blt _021FFFF8 -_022000B0: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ; .align 2, 0 -_022000B8: .word Unk_ov4_0221A0B8 -_022000BC: .word Unk_ov4_0221A048 -_022000C0: .word Unk_ov4_02219FD0 -_022000C4: .word 0x00000317 - arm_func_end AllKeysPresent - - arm_func_start ParseServerIPPort -ParseServerIPPort: ; 0x022000C8 - stmfd sp!, {r4, lr} - cmp r2, #5 - ldmltia sp!, {r4, pc} - ldrb r4, [r1] - ldrb lr, [r1, #1] - ldrb ip, [r1, #2] - tst r4, #0x10 - strb lr, [r3] - strb ip, [r3, #1] - ldrb lr, [r1, #3] - ldrb ip, [r1, #4] - strb lr, [r3, #2] - strb ip, [r3, #3] - beq _02200124 - sub r0, r2, #5 - cmp r0, #2 - ldmltia sp!, {r4, pc} - ldrb r2, [r1, #5] - ldrb r0, [r1, #6] - ldr r1, [sp, #8] - strb r2, [r1] - strb r0, [r1, #1] - ldmia sp!, {r4, pc} -_02200124: - add r0, r0, #0x400 - ldrh r1, [r0, #0xa8] - ldr r0, [sp, #8] - strh r1, [r0] - ldmia sp!, {r4, pc} - arm_func_end ParseServerIPPort - - arm_func_start ParseServer -ParseServer: ; 0x02200138 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x10 - mov r8, r2 - ldrb r2, [r8], #5 - mov sb, r1 - mov sl, r0 - mov r7, r3 - str r2, [sp] - mov r0, sb - mov r1, r2 - str r7, [sp, #4] - ldr r6, [sp, #0x38] - bl SBServerSetFlags - ldr r0, [sp] - sub r7, r7, #5 - tst r0, #0x10 - ldr r0, [sp] - addne r8, r8, #2 - subne r7, r7, #2 - tst r0, #2 - moveq r0, #0 - streq r0, [sp, #0xc] - beq _022001C0 - ldrb r1, [r8] - ldrb r0, [r8, #1] - add r2, sp, #0xc - sub r7, r7, #4 - strb r1, [r2] - strb r0, [r2, #1] - ldrb r1, [r8, #2] - ldrb r0, [r8, #3] - add r8, r8, #4 - strb r1, [r2, #2] - strb r0, [r2, #3] -_022001C0: - ldr r0, [sp] - tst r0, #0x20 - addeq r0, sl, #0x400 - ldreqh r0, [r0, #0xa8] - streqh r0, [sp, #8] - beq _022001F4 - ldrb r1, [r8] - ldrb r0, [r8, #1] - add r2, sp, #8 - add r8, r8, #2 - strb r1, [r2] - strb r0, [r2, #1] - sub r7, r7, #2 -_022001F4: - ldrh r2, [sp, #8] - ldr r1, [sp, #0xc] - mov r0, sb - bl SBServerSetPrivateAddr - ldr r0, [sp] - tst r0, #8 - beq _02200248 - ldrb r2, [r8] - ldrb r1, [r8, #1] - add r3, sp, #0xc - mov r0, sb - strb r2, [r3] - strb r1, [r3, #1] - ldrb r2, [r8, #2] - ldrb r1, [r8, #3] - add r8, r8, #4 - sub r7, r7, #4 - strb r2, [r3, #2] - strb r1, [r3, #3] - ldr r1, [sp, #0xc] - bl SBServerSetICMPIP -_02200248: - ldr r0, [sp] - tst r0, #0x40 - beq _02200378 - ldr r0, [sl, #8] - bl ArrayLength - mov r4, r0 - cmp r4, #0 - mov r5, #0 - ble _02200360 - add fp, sp, #0xa -_02200270: - ldr r0, [sl, #8] - mov r1, r5 - bl ArrayNth - mov r1, r0 - ldr r0, [r1, #4] - cmp r0, #0 - beq _02200300 - cmp r0, #1 - beq _022002A0 - cmp r0, #2 - beq _022002B8 - b _02200354 -_022002A0: - ldrb r2, [r8], #1 - ldr r1, [r1, #0] - mov r0, sb - bl SBServerAddIntKeyValue - sub r7, r7, #1 - b _02200354 -_022002B8: - ldrb r3, [r8] - ldrb r2, [r8, #1] - mov r0, sb - strb r3, [fp] - strb r2, [fp, #1] - ldrh r3, [sp, #0xa] - ldr r1, [r1, #0] - mov r2, r3, asr #8 - and r2, r2, #0xff - mov r3, r3, lsl #8 - and r3, r3, #0xff00 - orr r2, r2, r3 - mov r2, r2, lsl #0x10 - mov r2, r2, lsr #0x10 - bl SBServerAddIntKeyValue - add r8, r8, #2 - sub r7, r7, #2 - b _02200354 -_02200300: - cmp r6, #0 - ldrneb r0, [r8], #1 - subne r7, r7, #1 - moveq r0, #0xff - cmp r0, #0xff - bne _02200340 - ldr r1, [r1, #0] - mov r0, sb - mov r2, r8 - bl SBServerAddKeyValue - mov r0, r8 - bl strlen - add r0, r0, #1 - add r8, r8, r0 - sub r7, r7, r0 - b _02200354 -_02200340: - add r0, sl, r0, lsl #2 - ldr r1, [r1, #0] - ldr r2, [r0, #0x84] - mov r0, sb - bl SBServerAddKeyValue -_02200354: - add r5, r5, #1 - cmp r5, r4 - blt _02200270 -_02200360: - mov r0, sb - bl SBServerGetState - orr r1, r0, #1 - mov r0, sb - and r1, r1, #0xff - bl SBServerSetState -_02200378: - ldr r0, [sp] - tst r0, #0x80 - beq _022003F4 - b _022003C4 -_02200388: - mov r0, r8 - mov r4, r8 - bl strlen - add r3, r0, #1 - add r8, r8, r3 - mov r0, sb - mov r1, r4 - mov r2, r8 - sub r7, r7, r3 - bl SBServerAddKeyValue - mov r0, r8 - bl strlen - add r0, r0, #1 - add r8, r8, r0 - sub r7, r7, r0 -_022003C4: - ldrsb r0, [r8] - cmp r0, #0 - beq _022003D8 - cmp r7, #0 - bgt _02200388 -_022003D8: - mov r0, sb - sub r7, r7, #1 - bl SBServerGetState - orr r1, r0, #2 - mov r0, sb - and r1, r1, #0xff - bl SBServerSetState -_022003F4: - ldr r0, [sp, #4] - sub r0, r0, r7 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end ParseServer - - arm_func_start IncomingListParseServer -IncomingListParseServer: ; 0x02200404 - stmfd sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0xc - mov r4, r2 - cmp r4, #1 - mov r6, r0 - mov r5, r1 - addlt sp, sp, #0xc - movlt r0, #0 - ldmltia sp!, {r3, r4, r5, r6, r7, r8, pc} - ldrb r8, [r5] - mov r0, r8 - bl ServerSizeForFlags - mov r7, r0 - cmp r4, r7 - addlt sp, sp, #0xc - movlt r0, #0 - ldmltia sp!, {r3, r4, r5, r6, r7, r8, pc} - tst r8, #0x40 - beq _02200470 - mov r0, r6 - add r1, r5, r7 - sub r2, r4, r7 - bl AllKeysPresent - cmp r0, #0 - addeq sp, sp, #0xc - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} -_02200470: - tst r8, #0x80 - beq _02200494 - add r0, r5, r7 - sub r1, r4, r7 - bl FullRulesPresent - cmp r0, #0 - addeq sp, sp, #0xc - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} -_02200494: - ldr r1, _02200530 ; =0x0221A0BC - add r0, r5, #1 - mov r2, #4 - bl memcmp - cmp r0, #0 - addeq sp, sp, #0xc - mvneq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} - add r7, sp, #4 - add r3, sp, #8 - mov r0, r6 - mov r1, r5 - mov r2, r4 - str r7, [sp] - bl ParseServerIPPort - ldrh r2, [sp, #4] - ldr r1, [sp, #8] - mov r0, r6 - bl SBAllocServer - mov r7, r0 - bl SBIsNullServer - cmp r0, #0 - addne sp, sp, #0xc - mvnne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} - mov ip, #1 - mov r0, r6 - mov r1, r7 - mov r2, r5 - mov r3, r4 - str ip, [sp] - bl ParseServer - mov r4, r0 - mov r0, r6 - mov r1, r7 - bl SBServerListAppendServer - mov r0, r4 - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_02200530: .word Unk_ov4_0221A0BC - arm_func_end IncomingListParseServer - - arm_func_start SBSetLastListErrorPtr -SBSetLastListErrorPtr: ; 0x02200534 - str r1, [r0, #0x4ac] - bx lr - arm_func_end SBSetLastListErrorPtr - - arm_func_start ProcessMainListData -ProcessMainListData: ; 0x0220053C - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #8 - mov r7, r0 - ldr r1, [r7, #0x5c8] - ldr r5, [r7, #0x7c] - ldr r6, [r7, #0x80] - cmp r1, #4 - addls pc, pc, r1, lsl #2 - b _022008FC -_02200560: ; jump table - b _02200574 ; case 0 - b _022005D4 ; case 1 - b _022006D4 ; case 2 - b _022007C0 ; case 3 - b _0220086C ; case 4 -_02200574: - cmp r6, #1 - blt _022008FC - ldrb r1, [r5] - eor r1, r1, #0xec - add r3, r1, #2 - cmp r6, r3 - blt _022008FC - sub r1, r3, #1 - ldrb r1, [r5, r1] - eor r2, r1, #0xea - add r4, r3, r2 - cmp r6, r4 - blt _022008FC - add r1, r5, r3 - bl InitCryptKey - add r5, r5, r4 - sub r6, r6, r4 - add r0, r7, #0xbc - mov r3, #1 - mov r1, r5 - mov r2, r6 - add r0, r0, #0x400 - str r3, [r7, #0x5c8] - bl GOADecrypt -_022005D4: - cmp r6, #6 - blt _022008FC - ldrb r3, [r5] - ldrb r1, [r5, #1] - ldr r2, _02200950 ; =0x0221B754 - mov r0, r7 - strb r3, [r7, #0x4a0] - strb r1, [r7, #0x4a1] - ldrb r4, [r5, #2] - ldrb r3, [r5, #3] - mov r1, #6 - strb r4, [r7, #0x4a2] - strb r3, [r7, #0x4a3] - ldr r2, [r2, #0] - ldr r3, [r7, #0x494] - ldr r4, [r7, #0x488] - blx r4 - ldrb r3, [r5, #4] - ldrb r2, [r5, #5] - add r0, r7, #0x400 - ldr r1, _02200954 ; =0x0000FFFF - strb r3, [r7, #0x4a8] - strb r2, [r7, #0x4a9] - ldrh r0, [r0, #0xa8] - cmp r0, r1 - bne _02200688 - add r0, r5, #6 - sub r1, r6, #6 - bl NTSLengthSB - mvn r1, #0 - cmp r0, r1 - beq _022008FC - mov r0, r7 - add r1, r5, #6 - bl SBSetLastListErrorPtr - ldr r0, _02200950 ; =0x0221B754 - ldr r3, [r7, #0x494] - ldr r2, [r0, #0] - ldr r4, [r7, #0x488] - mov r0, r7 - mov r1, #5 - blx r4 - ldr r0, [r7, #0x7c] - cmp r0, #0 - beq _022008FC -_02200688: - ldr r0, [r7, #0x5c4] - add r5, r5, #6 - tst r0, #2 - sub r6, r6, #6 - bne _022006B0 - add r0, r7, #0x400 - ldrh r1, [r0, #0xa8] - ldr r0, _02200954 ; =0x0000FFFF - cmp r1, r0 - bne _022006C4 -_022006B0: - mov r0, #5 - str r0, [r7, #0x5c8] - mov r0, #2 - str r0, [r7, #0] - b _022008FC -_022006C4: - mov r0, #2 - str r0, [r7, #0x5c8] - sub r0, r0, #3 - str r0, [r7, #0x484] -_022006D4: - ldr r1, [r7, #0x484] - mvn r0, #0 - cmp r1, r0 - bne _0220071C - cmp r6, #1 - blt _022008FC - ldrb r1, [r5] - mov r0, #8 - mov r2, #0 - str r1, [r7, #0x484] - bl ArrayNew - cmp r0, #0 - str r0, [r7, #8] - addeq sp, sp, #8 - moveq r0, #5 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - add r5, r5, #1 - sub r6, r6, #1 -_0220071C: - ldr r0, [r7, #8] - bl ArrayLength - ldr r1, [r7, #0x484] - cmp r1, r0 - ble _0220079C - add r8, sp, #0 - mvn r4, #0 -_02200738: - cmp r6, #2 - blt _0220079C - add r0, r5, #1 - sub r1, r6, #1 - bl NTSLengthSB - mov sb, r0 - cmp sb, r4 - beq _0220079C - ldrb r2, [r5] - mov r0, r7 - add r1, r5, #1 - str r2, [sp, #4] - bl SBRefStr - str r0, [sp] - ldr r0, [r7, #8] - mov r1, r8 - bl ArrayAppend - add r1, sb, #1 - ldr r0, [r7, #8] - add r5, r5, r1 - sub r6, r6, r1 - bl ArrayLength - ldr r1, [r7, #0x484] - cmp r1, r0 - bgt _02200738 -_0220079C: - ldr r0, [r7, #8] - bl ArrayLength - ldr r1, [r7, #0x484] - cmp r1, r0 - bgt _022008FC - mov r0, #3 - str r0, [r7, #0x5c8] - sub r0, r0, #4 - str r0, [r7, #0x484] -_022007C0: - ldr r1, [r7, #0x484] - mvn r0, #0 - cmp r1, r0 - bne _022007EC - cmp r6, #1 - blt _022008FC - ldrb r1, [r5], #1 - mov r0, #0 - sub r6, r6, #1 - str r1, [r7, #0x484] - str r0, [r7, #0x480] -_022007EC: - ldr r1, [r7, #0x484] - ldr r0, [r7, #0x480] - cmp r1, r0 - ble _02200854 - mvn r8, #0 -_02200800: - mov r0, r5 - mov r1, r6 - bl NTSLengthSB - mov r4, r0 - cmp r4, r8 - beq _02200854 - mov r0, r7 - mov r1, r5 - bl SBRefStr - ldr r1, [r7, #0x480] - add r5, r5, r4 - mov r2, r1 - add r1, r1, #1 - str r1, [r7, #0x480] - add r1, r7, r2, lsl #2 - str r0, [r1, #0x84] - ldr r1, [r7, #0x484] - ldr r0, [r7, #0x480] - sub r6, r6, r4 - cmp r1, r0 - bgt _02200800 -_02200854: - ldr r1, [r7, #0x484] - ldr r0, [r7, #0x480] - cmp r1, r0 - bgt _022008FC - mov r0, #4 - str r0, [r7, #0x5c8] -_0220086C: - cmp r6, #5 - blt _022008FC - mvn r4, #0 - sub r8, r4, #1 - mov sb, #0 -_02200880: - mov r0, r7 - mov r1, r5 - mov r2, r6 - bl IncomingListParseServer - cmp r0, r8 - addeq sp, sp, #8 - moveq r0, #5 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - cmp r0, r4 - bne _022008E0 - mov r0, #5 - str r0, [r7, #0x5c8] - mov r0, #2 - str r0, [r7, #0] - ldr r0, _02200950 ; =0x0221B754 - ldr r3, [r7, #0x494] - ldr r2, [r0, #0] - ldr r4, [r7, #0x488] - mov r0, r7 - mov r1, #3 - sub r6, r6, #5 - add r5, r5, #5 - blx r4 - b _022008FC -_022008E0: - ldr r1, [r7, #0x7c] - add r5, r5, r0 - cmp r1, #0 - sub r6, r6, r0 - moveq r0, sb - cmp r0, #0 - bne _02200880 -_022008FC: - cmp r6, #0 - bge _02200918 - ldr r0, _02200958 ; =0x0221A0C4 - ldr r1, _0220095C ; =0x0221A048 - ldr r2, _02200960 ; =0x0221A008 - ldr r3, _02200964 ; =0x000004AF - bl __msl_assertion_failed -_02200918: - ldr r0, [r7, #0x7c] - cmp r0, #0 - addeq sp, sp, #8 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - cmp r6, #0 - beq _02200940 - mov r1, r5 - mov r2, r6 - bl memmove -_02200940: - str r6, [r7, #0x80] - mov r0, #0 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ; .align 2, 0 -_02200950: .word Unk_ov4_0221B754 -_02200954: .word 0x0000FFFF -_02200958: .word Unk_ov4_0221A0C4 -_0220095C: .word Unk_ov4_0221A048 -_02200960: .word Unk_ov4_0221A008 -_02200964: .word 0x000004AF - arm_func_end ProcessMainListData - - arm_func_start ProcessPushKeyList -ProcessPushKeyList: ; 0x02200968 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - mov sl, r0 - ldr r3, [sl, #8] - mov sb, r1 - mov r8, r2 - cmp r3, #0 - sub r8, r8, #1 - ldrb r7, [sb], #1 - beq _02200994 - bl FreeKeyList -_02200994: - mov r1, r7 - mov r0, #8 - mov r2, #0 - bl ArrayNew - cmp r0, #0 - str r0, [sl, #8] - addeq sp, sp, #8 - moveq r0, #5 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r7, #0 - mov r6, #0 - ble _02200A38 - add fp, sp, #0 - mvn r4, #0 -_022009CC: - cmp r8, #2 - addlt sp, sp, #8 - movlt r0, #4 - ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r0, sb, #1 - sub r1, r8, #1 - bl NTSLengthSB - mov r5, r0 - cmp r5, r4 - addeq sp, sp, #8 - moveq r0, #4 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrb r2, [sb] - mov r0, sl - add r1, sb, #1 - str r2, [sp, #4] - bl SBRefStr - str r0, [sp] - ldr r0, [sl, #8] - mov r1, fp - bl ArrayAppend - add r0, r5, #1 - add r6, r6, #1 - cmp r6, r7 - add sb, sb, r0 - sub r8, r8, r0 - blt _022009CC -_02200A38: - mov r0, #0 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end ProcessPushKeyList - - arm_func_start ProcessPlayerSearch -ProcessPlayerSearch: ; 0x02200A44 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x24 - mov r8, r2 - cmp r8, #2 - mov sl, r0 - mov sb, r1 - addlt sp, sp, #0x24 - movlt r0, #4 - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrb r0, [sb, #1] - sub r8, r8, #2 - mov fp, #0 - str r0, [sp, #0xc] - ldrb r0, [sb], #2 - str r0, [sp, #0x14] - ldr r0, [sp, #0xc] - cmp r0, #0 - ble _02200BC0 - add r7, sp, #0x20 - add r6, sp, #0x1c - mvn r4, #0 -_02200A98: - mov r0, sb - mov r1, r8 - str sb, [sp, #0x10] - bl NTSLengthSB - cmp r0, r4 - addeq sp, sp, #0x24 - moveq r0, #4 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - sub r3, r8, r0 - cmp r3, #0xb - add r2, sb, r0 - addlt sp, sp, #0x24 - movlt r0, #4 - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrb r1, [r2] - ldrb r0, [r2, #1] - sub r8, r3, #0xa - add sb, r2, #0xa - strb r1, [r7] - strb r0, [r7, #1] - ldrb r5, [r2, #2] - ldrb r3, [r2, #3] - mov r0, sb - mov r1, r8 - strb r3, [r7, #3] - strb r5, [r7, #2] - ldrb ip, [r2, #4] - ldrb r5, [r2, #5] - add r3, sp, #0x18 - strb ip, [r3] - strb r5, [r3, #1] - ldrb r5, [r2, #6] - ldrb r3, [r2, #7] - strb r5, [r6] - strb r3, [r6, #1] - ldrb r3, [r2, #8] - ldrb r2, [r2, #9] - strb r3, [r6, #2] - strb r2, [r6, #3] - ldr ip, [sp, #0x1c] - mov r2, ip, lsl #0x18 - and r5, r2, #0xff000000 - mov r2, ip, lsl #8 - and r3, r2, #0xff0000 - mov r2, ip, lsr #0x18 - mov ip, ip, lsr #8 - and r2, r2, #0xff - and ip, ip, #0xff00 - orr r2, r2, ip - orr r2, r3, r2 - orr r2, r5, r2 - str r2, [sp, #0x1c] - bl NTSLengthSB - mov r5, r0 - cmp r5, r4 - addeq sp, sp, #0x24 - moveq r0, #4 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [sp, #0x1c] - mov r0, sl - stmia sp, {r1, sb} - ldr r2, [sl, #0x494] - ldr r1, [sp, #0x10] - str r2, [sp, #8] - ldrh r3, [sp, #0x18] - ldr r2, [sp, #0x20] - ldr ip, [sl, #0x490] - blx ip - ldr r0, [sp, #0xc] - add fp, fp, #1 - cmp fp, r0 - add sb, sb, r5 - sub r8, r8, r5 - blt _02200A98 -_02200BC0: - ldr r0, [sp, #0x14] - cmp r0, #0 - beq _02200BF4 - mov r1, #0 - str r1, [sp] - str r1, [sp, #4] - ldr r2, [sl, #0x494] - mov r0, sl - str r2, [sp, #8] - ldr r4, [sl, #0x490] - mov r2, r1 - mov r3, r1 - blx r4 -_02200BF4: - mov r0, #0 - add sp, sp, #0x24 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end ProcessPlayerSearch - - arm_func_start ProcessMaploop -ProcessMaploop: ; 0x02200C00 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x54 - mov r8, r2 - cmp r8, #0xb - mov sl, r0 - mov sb, r1 - addlt sp, sp, #0x54 - movlt r0, #4 - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrb r2, [sb] - ldrb r1, [sb, #1] - add r3, sp, #0xc - add r4, sp, #8 - strb r2, [r3] - strb r1, [r3, #1] - ldrb r2, [sb, #2] - ldrb r1, [sb, #3] - strb r1, [r3, #3] - strb r2, [r3, #2] - ldrb r3, [sb, #4] - ldrb r2, [sb, #5] - ldr r1, [sp, #0xc] - strb r3, [r4] - strb r2, [r4, #1] - ldrh r2, [sp, #8] - bl SBServerListFindServerByIP - mov r1, r0 - mvn r0, #0 - cmp r1, r0 - addeq sp, sp, #0x54 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, sl - bl SBServerListNth - ldrb r2, [sb, #6] - ldrb r1, [sb, #7] - add r3, sp, #0x10 - mov fp, r0 - strb r2, [r3] - strb r1, [r3, #1] - ldrb r1, [sb, #8] - ldrb r0, [sb, #9] - sub r8, r8, #0xb - mov r7, #0 - strb r1, [r3, #2] - strb r0, [r3, #3] - ldr r3, [sp, #0x10] - add r5, sp, #0x14 - mov r1, r3, lsr #0x18 - mov r0, r3, lsr #8 - mov r2, r3, lsl #8 - and r1, r1, #0xff - and r0, r0, #0xff00 - mov r3, r3, lsl #0x18 - orr r0, r1, r0 - and r2, r2, #0xff0000 - and r1, r3, #0xff000000 - orr r0, r2, r0 - orr r0, r1, r0 - str r0, [sp, #0x10] - ldrb r6, [sb, #0xa] - add sb, sb, #0xb - mvn r4, #0 - b _02200D34 -_02200D00: - cmp r8, #1 - blt _02200D40 - mov r0, sb - mov r1, r8 - bl NTSLengthSB - cmp r0, r4 - addeq sp, sp, #0x54 - moveq r0, #4 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - str sb, [r5, r7, lsl #2] - add sb, sb, r0 - sub r8, r8, r0 - add r7, r7, #1 -_02200D34: - cmp r7, r6 - cmplt r7, #0x10 - blt _02200D00 -_02200D40: - ldr r4, [sl, #0x48c] - cmp r4, #0 - addeq sp, sp, #0x54 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r1, sp, #0x14 - str r1, [sp] - ldr r2, [sl, #0x494] - mov r0, sl - str r2, [sp, #4] - ldr r2, [sp, #0x10] - mov r1, fp - mov r3, r7 - blx r4 - mov r0, #0 - add sp, sp, #0x54 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end ProcessMaploop - - arm_func_start ProcessDeleteServer -ProcessDeleteServer: ; 0x02200D84 - stmfd sp!, {r4, lr} - sub sp, sp, #8 - cmp r2, #6 - mov r4, r0 - addlt sp, sp, #8 - movlt r0, #4 - ldmltia sp!, {r4, pc} - ldrb r3, [r1] - ldrb r2, [r1, #1] - add lr, sp, #4 - add ip, sp, #0 - strb r3, [lr] - strb r2, [lr, #1] - ldrb r3, [r1, #2] - ldrb r2, [r1, #3] - strb r3, [lr, #2] - strb r2, [lr, #3] - ldrb r3, [r1, #4] - ldrb r2, [r1, #5] - ldr r1, [sp, #4] - strb r3, [ip] - strb r2, [ip, #1] - ldrh r2, [sp] - bl SBServerListFindServerByIP - mov r1, r0 - mvn r0, #0 - cmp r1, r0 - addeq sp, sp, #8 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - mov r0, r4 - bl SBServerListRemoveAt - mov r0, #0 - add sp, sp, #8 - ldmia sp!, {r4, pc} - arm_func_end ProcessDeleteServer - - arm_func_start ProcessPushServer -ProcessPushServer: ; 0x02200E10 - stmfd sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0xc - mov r6, r2 - cmp r6, #5 - mov r8, r0 - mov r7, r1 - addlt sp, sp, #0xc - movlt r0, #4 - ldmltia sp!, {r3, r4, r5, r6, r7, r8, pc} - add r4, sp, #4 - add r3, sp, #8 - str r4, [sp] - bl ParseServerIPPort - ldrh r2, [sp, #4] - ldr r1, [sp, #8] - mov r0, r8 - bl SBServerListFindServerByIP - mov r5, r0 - mvn r0, #0 - cmp r5, r0 - bne _02200E90 - ldrh r2, [sp, #4] - ldr r1, [sp, #8] - mov r0, r8 - bl SBAllocServer - mov r4, r0 - bl SBIsNullServer - cmp r0, #0 - beq _02200EA0 - add sp, sp, #0xc - mov r0, #5 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_02200E90: - mov r0, r8 - mov r1, r5 - bl SBServerListNth - mov r4, r0 -_02200EA0: - mov ip, #0 - mov r0, r8 - mov r1, r4 - mov r2, r7 - mov r3, r6 - str ip, [sp] - bl ParseServer - cmp r0, #0 - addlt sp, sp, #0xc - movlt r0, #4 - ldmltia sp!, {r3, r4, r5, r6, r7, r8, pc} - mvn r0, #0 - cmp r5, r0 - bne _02200EE4 - mov r0, r8 - mov r1, r4 - bl SBServerListAppendServer -_02200EE4: - ldr r3, [r8, #0x494] - ldr r5, [r8, #0x488] - mov r0, r8 - mov r2, r4 - mov r1, #1 - blx r5 - mov r0, #0 - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - arm_func_end ProcessPushServer - - arm_func_start ProcessAdHocData -ProcessAdHocData: ; 0x02200F08 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sb, r0 - ldr r0, [sb, #0x80] - mov r8, #0 - cmp r0, #3 - blt _022010A4 - ldr r5, _022010BC ; =0x0221A0D0 - ldr r4, _022010C0 ; =0x0221A048 - ldr sl, _022010C4 ; =0x02219FF4 - ldr fp, _022010C8 ; =0x000005B4 - mov r6, r8 - add r7, sp, #0 -_02200F38: - ldr r0, [sb, #0x7c] - ldrb r1, [r0] - ldrb r0, [r0, #1] - strb r1, [r7] - strb r0, [r7, #1] - ldrh r0, [sp] - mov r1, r0, asr #8 - mov r0, r0, lsl #8 - and r1, r1, #0xff - and r0, r0, #0xff00 - orr r0, r1, r0 - strh r0, [sp] - ldrh r2, [sp] - cmp r2, #0x1000 - movhi r8, #4 - bhi _022010A4 - ldr r0, [sb, #0x80] - cmp r0, r2 - movlt r0, #0 - ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [sb, #0x7c] - ldrsb r0, [r1, #2] - cmp r0, #6 - addls pc, pc, r0, lsl #2 - b _02201048 -_02200F9C: ; jump table - b _02201048 ; case 0 - b _02200FB8 ; case 1 - b _02200FD0 ; case 2 - b _02200FE8 ; case 3 - b _02201004 ; case 4 - b _0220101C ; case 5 - b _02201034 ; case 6 -_02200FB8: - mov r0, sb - add r1, r1, #3 - sub r2, r2, #3 - bl ProcessPushKeyList - mov r8, r0 - b _02201048 -_02200FD0: - mov r0, sb - add r1, r1, #3 - sub r2, r2, #3 - bl ProcessPushServer - mov r8, r0 - b _02201048 -_02200FE8: - ldr r0, [sb, #0x4b0] - mov r3, r6 - bl send - cmp r0, #0 - bgt _02201048 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02201004: - mov r0, sb - add r1, r1, #3 - sub r2, r2, #3 - bl ProcessDeleteServer - mov r8, r0 - b _02201048 -_0220101C: - mov r0, sb - add r1, r1, #3 - sub r2, r2, #3 - bl ProcessMaploop - mov r8, r0 - b _02201048 -_02201034: - mov r0, sb - add r1, r1, #3 - sub r2, r2, #3 - bl ProcessPlayerSearch - mov r8, r0 -_02201048: - ldrh r0, [sp] - ldr r1, [sb, #0x80] - subs r0, r1, r0 - str r0, [sb, #0x80] - bpl _02201070 - mov r0, r5 - mov r1, r4 - mov r2, sl - mov r3, fp - bl __msl_assertion_failed -_02201070: - ldr r2, [sb, #0x80] - cmp r2, #0 - ldrne r0, [sb, #0x7c] - cmpne r0, #0 - beq _02201090 - ldrh r1, [sp] - add r1, r0, r1 - bl memmove -_02201090: - cmp r8, #0 - bne _022010A4 - ldr r0, [sb, #0x80] - cmp r0, #3 - bge _02200F38 -_022010A4: - cmp r8, #0 - beq _022010B4 - mov r0, sb - bl ErrorDisconnect -_022010B4: - mov r0, r8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_022010BC: .word Unk_ov4_0221A0D0 -_022010C0: .word Unk_ov4_0221A048 -_022010C4: .word Unk_ov4_02219FF4 -_022010C8: .word 0x000005B4 - arm_func_end ProcessAdHocData - - arm_func_start ProcessIncomingData -ProcessIncomingData: ; 0x022010CC - stmfd sp!, {r4, r5, r6, lr} - mov r6, r0 - ldr r0, [r6, #0x4b0] - bl CanReceiveOnSocket - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r5, [r6, #0x80] - ldr r1, [r6, #0x7c] - ldr r0, [r6, #0x4b0] - add r1, r1, r5 - rsb r2, r5, #0x1000 - mov r3, #0 - bl recv - add r1, r0, #1 - cmp r1, #1 - bhi _02201120 - mov r0, r6 - bl ErrorDisconnect - mov r0, #3 - ldmia sp!, {r4, r5, r6, pc} -_02201120: - ldr r1, [r6, #0x80] - mov r4, #0 - add r0, r1, r0 - str r0, [r6, #0x80] - ldr r0, [r6, #0] - cmp r0, #2 - beq _02201148 - ldr r0, [r6, #0x5c8] - cmp r0, #0 - ble _02201164 -_02201148: - ldr r1, [r6, #0x7c] - ldr r2, [r6, #0x80] - add r0, r6, #0xbc - add r0, r0, #0x400 - add r1, r1, r5 - sub r2, r2, r5 - bl GOADecrypt -_02201164: - ldr r0, [r6, #0] - cmp r0, #3 - bne _0220117C - mov r0, r6 - bl ProcessMainListData - mov r4, r0 -_0220117C: - cmp r4, #0 - movne r0, r4 - ldmneia sp!, {r4, r5, r6, pc} - ldr r0, [r6, #0] - cmp r0, #2 - bne _022011AC - ldr r0, [r6, #0x80] - cmp r0, #0 - ble _022011AC - mov r0, r6 - bl ProcessAdHocData - ldmia sp!, {r4, r5, r6, pc} -_022011AC: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ProcessIncomingData - - arm_func_start SBSendMessageToServer -SBSendMessageToServer: ; 0x022011B4 - stmfd sp!, {r0, r1, r2, r3} - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x18 - mov r5, r0 - ldr r1, [r5, #0] - mov r4, r3 - cmp r1, #1 - bne _022011E8 - mov r1, #0 - mov r2, r1 - mov r3, #2 - str r1, [sp] - bl SBServerListConnectAndQuery -_022011E8: - ldr r0, [r5, #0] - cmp r0, #1 - addeq sp, sp, #0x18 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - addeq sp, sp, #0x10 - bxeq lr - ldr r0, [sp, #0x50] - add r6, sp, #0x44 - add r0, r0, #9 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r2, r0, asr #8 - mov r1, r0, lsl #8 - and r2, r2, #0xff - and r1, r1, #0xff00 - orr r1, r2, r1 - strh r1, [sp, #4] - add r2, sp, #4 - ldrb r3, [r2] - add r0, sp, #0x48 - add r1, sp, #6 - ldrb r2, [r2, #1] - strb r3, [r1] - mov fp, #2 - strb r2, [r1, #1] - ldrb sb, [r6] - add sl, sp, #9 - ldrb r8, [r6, #1] - ldrb r7, [r6, #2] - ldrb r6, [r6, #3] - ldrb ip, [r0] - ldrb r3, [r0, #1] - add lr, sp, #0xd - mov r0, r5 - mov r2, #9 - strb fp, [sp, #8] - strb sb, [sl] - strb r8, [sl, #1] - strb r7, [sl, #2] - strb r6, [sl, #3] - strb ip, [lr] - strb r3, [lr, #1] - bl SendWithRetry - cmp r0, #0 - addne sp, sp, #0x18 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - addne sp, sp, #0x10 - bxne lr - ldr r0, [r5, #0x4b0] - ldr r2, [sp, #0x50] - mov r1, r4 - mov r3, #0 - bl send - cmp r0, #0 - movlt r0, #3 - movge r0, #0 - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr - arm_func_end SBSendMessageToServer - - arm_func_start SBSendNatNegotiateCookieToServer -SBSendNatNegotiateCookieToServer: ; 0x022012DC - stmfd sp!, {r0, r1, r2, r3} - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x10 - ldr r5, [sp, #0x44] - mov r7, #0xfd - mov r4, r5, lsr #0x18 - mov r8, r5, lsl #0x18 - mov r3, r5, lsr #8 - mov r6, r5, lsl #8 - and r5, r4, #0xff - and r4, r3, #0xff00 - orr sb, r5, r4 - and r3, r6, #0xff0000 - mov r6, #0xfc - mov r5, #0x1e - mov r4, #0x66 - mov lr, #0x6a - mov fp, #0xb2 - strb r4, [sp, #7] - and r8, r8, #0xff000000 - orr r3, r3, sb - orr r8, r8, r3 - add r3, sp, #0x44 - str r8, [sp, #0x44] - strb r7, [sp, #4] - ldrb sl, [r3] - add ip, sp, #0xa - ldrb sb, [r3, #1] - ldrb r8, [r3, #2] - ldrb r7, [r3, #3] - add r3, sp, #4 - strb r6, [sp, #5] - strb r5, [sp, #6] - strb lr, [sp, #8] - strb fp, [sp, #9] - strb sl, [ip] - strb sb, [ip, #1] - strb r8, [ip, #2] - strb r7, [ip, #3] - mov r4, #0xa - str r4, [sp] - bl SBSendMessageToServer - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr - arm_func_end SBSendNatNegotiateCookieToServer - - arm_func_start ProcessLanData -ProcessLanData: ; 0x02201394 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x5f0 - mov r1, #8 - mov sl, r0 - str r1, [sp, #8] - ldr r0, [sl, #0x4b0] - bl CanReceiveOnSocket - cmp r0, #0 - beq _0220145C - ldr r6, _022014B0 ; =0x000005DB - add sb, sp, #0xc - add r8, sp, #8 - add r7, sp, #0x14 - mov fp, #0 - mvn r4, #0 -_022013D0: - str sb, [sp] - str r8, [sp, #4] - ldr r0, [sl, #0x4b0] - mov r1, r7 - mov r2, r6 - mov r3, fp - bl recvfrom - cmp r0, r4 - beq _0220144C - ldrh r2, [sp, #0xe] - ldr r1, [sp, #0x10] - mov r0, sl - bl SBServerListFindServerByIP - cmp r0, r4 - bne _0220144C - ldrh r2, [sp, #0xe] - ldr r1, [sp, #0x10] - mov r0, sl - bl SBAllocServer - mov r5, r0 - bl SBIsNullServer - cmp r0, #0 - addne sp, sp, #0x5f0 - movne r0, #5 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, r5 - mov r1, #0x11 - bl SBServerSetFlags - mov r0, sl - mov r1, r5 - bl SBServerListAppendServer -_0220144C: - ldr r0, [sl, #0x4b0] - bl CanReceiveOnSocket - cmp r0, #0 - bne _022013D0 -_0220145C: - bl current_time - ldr r1, [sl, #0x4b4] - sub r0, r0, r1 - cmp r0, #0x7d0 - bls _022014A4 - ldr r0, [sl, #0x4b0] - bl closesocket - mvn r0, #0 - str r0, [sl, #0x4b0] - mov r0, #1 - str r0, [sl] - ldr r0, _022014B4 ; =0x0221B754 - ldr r3, [sl, #0x494] - ldr r2, [r0, #0] - ldr r4, [sl, #0x488] - mov r0, sl - mov r1, #3 - blx r4 -_022014A4: - mov r0, #0 - add sp, sp, #0x5f0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_022014B0: .word 0x000005DB -_022014B4: .word Unk_ov4_0221B754 - arm_func_end ProcessLanData - - arm_func_start SBListThink -SBListThink: ; 0x022014B8 - stmfd sp!, {r4, lr} - mov r4, r0 - bl SBFreeDeadList - ldr r0, [r4, #0] - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _022014FC -_022014D4: ; jump table - b _022014F0 ; case 0 - b _022014FC ; case 1 - b _022014E4 ; case 2 - b _022014E4 ; case 3 -_022014E4: - mov r0, r4 - bl ProcessIncomingData - ldmia sp!, {r4, pc} -_022014F0: - mov r0, r4 - bl ProcessLanData - ldmia sp!, {r4, pc} -_022014FC: - mov r0, #0 - ldmia sp!, {r4, pc} - arm_func_end SBListThink - - .data - - - .global Unk_ov4_02219FAC -Unk_ov4_02219FAC: ; 0x02219FAC - .word Unk_ov4_02219FC0 - - .global Unk_ov4_02219FB0 -Unk_ov4_02219FB0: ; 0x02219FB0 - .ascii "SBReleaseStr" - .space 0x4 - - .global Unk_ov4_02219FC0 -Unk_ov4_02219FC0: ; 0x02219FC0 - .asciz "Query Error: " - .space 0x2 - - .global Unk_ov4_02219FD0 -Unk_ov4_02219FD0: ; 0x02219FD0 - .ascii "AllKeysPresent" - .space 0x2 - - .global Unk_ov4_02219FE0 -Unk_ov4_02219FE0: ; 0x02219FE0 - .ascii "SBServerListInit" - .space 0x4 - - .global Unk_ov4_02219FF4 -Unk_ov4_02219FF4: ; 0x02219FF4 - .ascii "ProcessAdHocData" - .space 0x4 - - .global Unk_ov4_0221A008 -Unk_ov4_0221A008: ; 0x0221A008 - .asciz "ProcessMainListData" - - .global Unk_ov4_0221A01C -Unk_ov4_0221A01C: ; 0x0221A01C - .asciz "SBServerListConnectAndQuery" - - .global Unk_ov4_0221A038 -Unk_ov4_0221A038: ; 0x0221A038 - .space 0x4 - - .global Unk_ov4_0221A03C -Unk_ov4_0221A03C: ; 0x0221A03C - .asciz "val != NULL" - - .global Unk_ov4_0221A048 -Unk_ov4_0221A048: ; 0x0221A048 - .asciz "sb_serverlist.c" - - .global Unk_ov4_0221A058 -Unk_ov4_0221A058: ; 0x0221A058 - .asciz "slist != NULL" - .space 0x2 - - .global Unk_ov4_0221A068 -Unk_ov4_0221A068: ; 0x0221A068 - .ascii "callback != NULL" - .space 0x4 - - .global Unk_ov4_0221A07C -Unk_ov4_0221A07C: ; 0x0221A07C - .asciz "%s.ms%d.gs.nintendowifi.net" - - .global Unk_ov4_0221A098 -Unk_ov4_0221A098: ; 0x0221A098 - .asciz "slist->state == sl_disconnected" - - .global Unk_ov4_0221A0B8 -Unk_ov4_0221A0B8: ; 0x0221A0B8 - .word 0x30 - - .global Unk_ov4_0221A0BC -Unk_ov4_0221A0BC: ; 0x0221A0BC - .word 0xFFFFFFFF - .word 0x0 - - .global Unk_ov4_0221A0C4 -Unk_ov4_0221A0C4: ; 0x0221A0C4 - .ascii "inlen >= 0" - .space 0x2 - - .global Unk_ov4_0221A0D0 -Unk_ov4_0221A0D0: ; 0x0221A0D0 - .asciz "slist->inbufferlen >= 0" - - - - .bss - - - .global Unk_ov4_0221B75C -Unk_ov4_0221B75C: ; 0x0221B75C - .space 0x4 - - .global Unk_ov4_0221B760 -Unk_ov4_0221B760: ; 0x0221B760 - .space 0x20 - diff --git a/subprojects/gamespy/libraries/serverbrowsing/meson.build b/subprojects/gamespy/libraries/serverbrowsing/meson.build deleted file mode 100644 index b2182e76a4..0000000000 --- a/subprojects/gamespy/libraries/serverbrowsing/meson.build +++ /dev/null @@ -1,16 +0,0 @@ -libdwcgsserverbrowsing_srcs = files( - 'asm/sb_crypt.s', - 'asm/sb_queryengine.s', - 'asm/sb_server.s', - 'asm/sb_serverbrowsing.s', - 'asm/sb_serverlist.s' -) - -libdwcgsserverbrowsing = static_library('dwcgsserverbrowsing', - sources: libdwcgsserverbrowsing_srcs, - nasm_args: asm_args, - include_directories: public_includes, - pic: false -) - -gamespy_libs += libdwcgsserverbrowsing diff --git a/subprojects/gamespy/meson.build b/subprojects/gamespy/meson.build deleted file mode 100644 index d9c553f1cc..0000000000 --- a/subprojects/gamespy/meson.build +++ /dev/null @@ -1,30 +0,0 @@ -project('gamespy', ['c', 'nasm']) - -asm_args = [ - '-proc', 'arm5TE', - '-gccinc' -] - -# Public includes -public_includes = include_directories('include') - -# Dependencies -nitrosdk_dep = dependency('NitroSDK', fallback : ['NitroSDK', 'nitrosdk_dep']) -nitrosystem_dep = dependency('NitroSystem', fallback : ['NitroSystem', 'nitrosystem_dep']) -nitrowifi_dep = dependency('NitroWiFi', fallback : ['NitroWiFi', 'nitrowifi_dep']) - -# Libraries -gamespy_libs = [] -subdir('libraries') - -# Own dependency for consumers -gamespy_dep = declare_dependency( - compile_args: '-D_NITRO', - dependencies: [ - nitrosdk_dep, - nitrosystem_dep, - nitrowifi_dep - ], - include_directories: public_includes, - link_with: gamespy_libs -) \ No newline at end of file diff --git a/subprojects/libVCT/asm/adpcm.s b/subprojects/libVCT/asm/adpcm.s deleted file mode 100644 index aca246dfa6..0000000000 --- a/subprojects/libVCT/asm/adpcm.s +++ /dev/null @@ -1,1275 +0,0 @@ - .include "macros/function.inc" - .include "include/adpcm.inc" - - - - .text - - - arm_func_start ov4_02201504 -ov4_02201504: ; 0x02201504 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r6, #0 - cmp r2, #0 - ldmlsia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r4, #0x8000 - ldr lr, _0220164C ; =0x00007FFF - ldr ip, _02201650 ; =0x02215C44 - ldr r5, _02201654 ; =0x02215C54 - rsb r4, r4, #0 -_02201528: - ldrb r7, [r3, #2] - ldrb sl, [r0] - ldrsh r8, [r3] - mov sb, r7, lsl #1 - ldrsh fp, [r5, sb] - and sl, sl, #0xf - tst sl, #4 - mov sb, fp, asr #3 - addne sb, sb, fp - tst sl, #2 - addne sb, sb, fp, asr #1 - tst sl, #1 - addne sb, sb, fp, asr #2 - tst sl, #8 - beq _02201574 - sub r8, r8, sb - cmp r8, r4 - movlt r8, r4 - b _02201580 -_02201574: - add r8, r8, sb - cmp r8, lr - movgt r8, lr -_02201580: - ldrsb sb, [ip, sl] - adds r7, r7, sb - movmi r7, #0 - bmi _02201598 - cmp r7, #0x58 - movgt r7, #0x58 -_02201598: - mov r8, r8, lsl #0x10 - mov r8, r8, asr #0x10 - strh r8, [r3] - strb r7, [r3, #2] - strh r8, [r1] - ldrb r7, [r3, #2] - ldrb sl, [r0] - ldrsh r8, [r3] - mov sb, r7, lsl #1 - ldrsh fp, [r5, sb] - mov sl, sl, asr #4 - and sl, sl, #0xf - mov sb, fp, asr #3 - tst sl, #4 - addne sb, sb, fp - tst sl, #2 - addne sb, sb, fp, asr #1 - tst sl, #1 - addne sb, sb, fp, asr #2 - tst sl, #8 - beq _022015FC - sub r8, r8, sb - cmp r8, r4 - movlt r8, r4 - b _02201608 -_022015FC: - add r8, r8, sb - cmp r8, lr - movgt r8, lr -_02201608: - ldrsb sb, [ip, sl] - adds r7, r7, sb - movmi r7, #0 - bmi _02201620 - cmp r7, #0x58 - movgt r7, #0x58 -_02201620: - mov r8, r8, lsl #0x10 - mov r8, r8, asr #0x10 - strh r8, [r3] - strb r7, [r3, #2] - add r6, r6, #1 - strh r8, [r1, #2] - cmp r6, r2 - add r1, r1, #4 - add r0, r0, #1 - blo _02201528 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0220164C: .word 0x00007FFF -_02201650: .word Unk_ov4_02215C44 -_02201654: .word Unk_ov4_02215C54 - arm_func_end ov4_02201504 - - arm_func_start ov4_02201658 -ov4_02201658: ; 0x02201658 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - movs r8, r2, lsr #1 - mov r4, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov ip, #0x8000 - rsb ip, ip, #0 - ldr lr, _022017DC ; =0x02215C54 - mov r2, ip, lsr #0x11 -_02201678: - ldrb r6, [r3, #2] - ldrsh r7, [r3] - ldrsh r5, [r1] - mov sb, r6, lsl #1 - ldrsh sb, [lr, sb] - subs sl, r5, r7 - movmi r5, #8 - rsbmi sl, sl, #0 - movpl r5, #0 - cmp sl, sb - orrge r5, r5, #4 - subge sl, sl, sb - cmp sl, sb, asr #1 - orrge r5, r5, #2 - subge sl, sl, sb, asr #1 - cmp sl, sb, asr #2 - orrge r5, r5, #1 - mov sl, sb, asr #3 - tst r5, #4 - addne sl, sl, sb - tst r5, #2 - addne sl, sl, sb, asr #1 - tst r5, #1 - addne sl, sl, sb, asr #2 - tst r5, #8 - rsbne sl, sl, #0 - add sb, r7, sl - ldr r7, _022017E0 ; =0x02215C44 - cmp sb, ip - movlt sb, ip - cmp sb, ip, lsr #17 - ldrsb r7, [r7, r5] - movgt sb, r2 - adds r6, r6, r7 - movmi r6, #0 - bmi _02201710 - cmp r6, #0x58 - movgt r6, #0x58 -_02201710: - strh sb, [r3] - strb r6, [r3, #2] - and r7, r6, #0xff - ldrsh r6, [r1, #2] - ldrsh sb, [r3] - mov sl, r7, lsl #1 - ldrsh sl, [lr, sl] - subs fp, r6, sb - movmi r6, #8 - rsbmi fp, fp, #0 - movpl r6, #0 - cmp fp, sl - orrge r6, r6, #4 - subge fp, fp, sl - cmp fp, sl, asr #1 - orrge r6, r6, #2 - subge fp, fp, sl, asr #1 - cmp fp, sl, asr #2 - orrge r6, r6, #1 - mov fp, sl, asr #3 - tst r6, #4 - addne fp, fp, sl - tst r6, #2 - addne fp, fp, sl, asr #1 - tst r6, #1 - addne fp, fp, sl, asr #2 - tst r6, #8 - rsbne fp, fp, #0 - add sl, sb, fp - ldr sb, _022017E0 ; =0x02215C44 - cmp sl, ip - movlt sl, ip - cmp sl, ip, lsr #17 - ldrsb sb, [sb, r6] - movgt sl, r2 - and r5, r5, #0xff - adds r7, r7, sb - add r1, r1, #4 - movmi r7, #0 - bmi _022017B8 - cmp r7, #0x58 - movgt r7, #0x58 -_022017B8: - strh sl, [r3] - strb r7, [r3, #2] - and r6, r6, #0xff - orr r5, r5, r6, lsl #4 - strb r5, [r0], #1 - add r4, r4, #1 - cmp r4, r8 - blo _02201678 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_022017DC: .word Unk_ov4_02215C54 -_022017E0: .word Unk_ov4_02215C44 - arm_func_end ov4_02201658 - - arm_func_start ov4_022017E4 -ov4_022017E4: ; 0x022017E4 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x10 - ldr r5, _02201C68 ; =0xAAAAAAAB - mov r4, #0 - str r4, [sp, #0xc] - umull r5, r4, r2, r5 - movs r2, r4, lsr #1 - str r2, [sp] - addeq sp, sp, #0x10 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r4, #0x8000 - ldr lr, _02201C6C ; =0x00007FFF - ldr r5, _02201C70 ; =0x02215C54 - rsb r4, r4, #0 -_0220181C: - ldrb r7, [r3, #2] - ldrb fp, [r0] - ldrb r2, [r0, #1] - mov r6, r7, lsl #1 - ldrsh r6, [r5, r6] - mov sb, fp, asr #5 - tst sb, #2 - str r6, [sp, #8] - ldrne sl, [sp, #8] - mov r6, r6, asr #2 - addne r6, r6, sl - tst sb, #1 - ldrne sl, [sp, #8] - ldrb ip, [r0, #2] - addne r6, r6, sl, asr #1 - ldrsh r8, [r3] - tst sb, #4 - beq _02201874 - sub r8, r8, r6 - cmp r8, r4 - movlt r8, r4 - b _02201880 -_02201874: - add r8, r8, r6 - cmp r8, lr - movgt r8, lr -_02201880: - ldr r6, _02201C74 ; =0x02215C3C - ldrsb r6, [r6, sb] - adds r7, r7, r6 - movmi r7, #0 - bmi _0220189C - cmp r7, #0x58 - movgt r7, #0x58 -_0220189C: - mov r6, r8, lsl #0x10 - mov r6, r6, asr #0x10 - strh r6, [r3] - strb r7, [r3, #2] - strh r6, [r1] - ldrb r7, [r3, #2] - mov sb, fp, asr #2 - tst sb, #2 - mov r6, r7, lsl #1 - ldrsh r6, [r5, r6] - ldrsh r8, [r3] - str r6, [sp, #4] - ldrne sl, [sp, #4] - mov r6, r6, asr #2 - addne r6, r6, sl - tst sb, #1 - ldrne sl, [sp, #4] - addne r6, r6, sl, asr #1 - tst sb, #4 - beq _022018FC - sub r8, r8, r6 - cmp r8, r4 - movlt r8, r4 - b _02201908 -_022018FC: - add r8, r8, r6 - cmp r8, lr - movgt r8, lr -_02201908: - ldr r6, _02201C74 ; =0x02215C3C - and sb, sb, #7 - ldrsb r6, [r6, sb] - adds r7, r7, r6 - movmi r7, #0 - bmi _02201928 - cmp r7, #0x58 - movgt r7, #0x58 -_02201928: - mov r6, r8, lsl #0x10 - mov r6, r6, asr #0x10 - strh r6, [r3] - strb r7, [r3, #2] - strh r6, [r1, #2] - ldrb r6, [r3, #2] - mov r8, fp, lsl #1 - and r8, r8, #7 - mov sb, r6, lsl #1 - ldrsh sl, [r5, sb] - orr r8, r8, r2, asr #7 - tst r8, #2 - mov sb, sl, asr #2 - addne sb, sb, sl - tst r8, #1 - addne sb, sb, sl, asr #1 - ldrsh r7, [r3] - tst r8, #4 - beq _02201984 - sub r7, r7, sb - cmp r7, r4 - movlt r7, r4 - b _02201990 -_02201984: - add r7, r7, sb - cmp r7, lr - movgt r7, lr -_02201990: - ldr sb, _02201C74 ; =0x02215C3C - ldrsb r8, [sb, r8] - adds r6, r6, r8 - movmi r6, #0 - bmi _022019AC - cmp r6, #0x58 - movgt r6, #0x58 -_022019AC: - mov r7, r7, lsl #0x10 - mov r7, r7, asr #0x10 - strh r7, [r3] - strb r6, [r3, #2] - strh r7, [r1, #4] - ldrb r6, [r3, #2] - mov r8, r2, asr #4 - tst r8, #2 - mov sb, r6, lsl #1 - ldrsh sl, [r5, sb] - ldrsh r7, [r3] - mov sb, sl, asr #2 - addne sb, sb, sl - tst r8, #1 - addne sb, sb, sl, asr #1 - tst r8, #4 - beq _02201A00 - sub r7, r7, sb - cmp r7, r4 - movlt r7, r4 - b _02201A0C -_02201A00: - add r7, r7, sb - cmp r7, lr - movgt r7, lr -_02201A0C: - and sb, r8, #7 - ldr r8, _02201C74 ; =0x02215C3C - ldrsb r8, [r8, sb] - adds r6, r6, r8 - movmi r6, #0 - bmi _02201A2C - cmp r6, #0x58 - movgt r6, #0x58 -_02201A2C: - mov r7, r7, lsl #0x10 - mov r7, r7, asr #0x10 - strh r7, [r3] - strb r6, [r3, #2] - strh r7, [r1, #6] - ldrb r6, [r3, #2] - mov r8, r2, asr #1 - tst r8, #2 - mov sb, r6, lsl #1 - ldrsh sl, [r5, sb] - ldrsh r7, [r3] - mov sb, sl, asr #2 - addne sb, sb, sl - tst r8, #1 - addne sb, sb, sl, asr #1 - tst r8, #4 - beq _02201A80 - sub r7, r7, sb - cmp r7, r4 - movlt r7, r4 - b _02201A8C -_02201A80: - add r7, r7, sb - cmp r7, lr - movgt r7, lr -_02201A8C: - and sb, r8, #7 - ldr r8, _02201C74 ; =0x02215C3C - ldrsb r8, [r8, sb] - adds r6, r6, r8 - movmi r6, #0 - bmi _02201AAC - cmp r6, #0x58 - movgt r6, #0x58 -_02201AAC: - mov r7, r7, lsl #0x10 - mov r8, r7, asr #0x10 - strh r8, [r3] - mov r2, r2, lsl #2 - strb r6, [r3, #2] - and r2, r2, #7 - strh r8, [r1, #8] - orr r7, r2, ip, asr #6 - ldrb r2, [r3, #2] - tst r7, #2 - ldrsh r6, [r3] - mov r8, r2, lsl #1 - ldrsh sb, [r5, r8] - mov r8, sb, asr #2 - addne r8, r8, sb - tst r7, #1 - addne r8, r8, sb, asr #1 - tst r7, #4 - beq _02201B08 - sub r6, r6, r8 - cmp r6, r4 - movlt r6, r4 - b _02201B14 -_02201B08: - add r6, r6, r8 - cmp r6, lr - movgt r6, lr -_02201B14: - ldr r8, _02201C74 ; =0x02215C3C - ldrsb r7, [r8, r7] - adds r2, r2, r7 - movmi r2, #0 - bmi _02201B30 - cmp r2, #0x58 - movgt r2, #0x58 -_02201B30: - mov r6, r6, lsl #0x10 - mov r6, r6, asr #0x10 - strh r6, [r3] - strb r2, [r3, #2] - strh r6, [r1, #0xa] - ldrb r2, [r3, #2] - mov sb, ip, asr #3 - tst sb, #2 - mov r7, r2, lsl #1 - ldrsh r8, [r5, r7] - ldrsh r6, [r3] - mov r7, r8, asr #2 - addne r7, r7, r8 - tst sb, #1 - addne r7, r7, r8, asr #1 - tst sb, #4 - beq _02201B84 - sub r6, r6, r7 - cmp r6, r4 - movlt r6, r4 - b _02201B90 -_02201B84: - add r6, r6, r7 - cmp r6, lr - movgt r6, lr -_02201B90: - ldr r7, _02201C74 ; =0x02215C3C - and r8, sb, #7 - ldrsb r7, [r7, r8] - adds r2, r2, r7 - movmi r2, #0 - bmi _02201BB0 - cmp r2, #0x58 - movgt r2, #0x58 -_02201BB0: - mov r6, r6, lsl #0x10 - mov r6, r6, asr #0x10 - strh r6, [r3] - strb r2, [r3, #2] - strh r6, [r1, #0xc] - ldrb r2, [r3, #2] - tst ip, #2 - ldrsh r6, [r3] - mov r7, r2, lsl #1 - ldrsh r8, [r5, r7] - mov r7, r8, asr #2 - addne r7, r7, r8 - tst ip, #1 - addne r7, r7, r8, asr #1 - tst ip, #4 - beq _02201C00 - sub r6, r6, r7 - cmp r6, r4 - movlt r6, r4 - b _02201C0C -_02201C00: - add r6, r6, r7 - cmp r6, lr - movgt r6, lr -_02201C0C: - ldr r7, _02201C74 ; =0x02215C3C - and r8, ip, #7 - ldrsb r7, [r7, r8] - adds r2, r2, r7 - movmi r2, #0 - bmi _02201C2C - cmp r2, #0x58 - movgt r2, #0x58 -_02201C2C: - mov r6, r6, lsl #0x10 - mov r6, r6, asr #0x10 - strh r6, [r3] - strb r2, [r3, #2] - ldr r2, [sp, #0xc] - strh r6, [r1, #0xe] - add r6, r2, #1 - ldr r2, [sp] - add r0, r0, #3 - add r1, r1, #0x10 - str r6, [sp, #0xc] - cmp r6, r2 - blo _0220181C - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_02201C68: .word 0xAAAAAAAB -_02201C6C: .word 0x00007FFF -_02201C70: .word Unk_ov4_02215C54 -_02201C74: .word Unk_ov4_02215C3C - arm_func_end ov4_022017E4 - - arm_func_start ov4_02201C78 -ov4_02201C78: ; 0x02201C78 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - movs r2, r2, lsr #3 - str r2, [sp] - mov r2, #0 - str r2, [sp, #4] - addeq sp, sp, #8 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r6, #0x8000 - rsb r6, r6, #0 - ldr r7, _0220217C ; =0x02215C54 - ldr r4, _02202180 ; =0x02215C3C - mov r5, r6, lsr #0x11 -_02201CAC: - ldrsh r2, [r3] - ldrsh sb, [r1] - ldrb r8, [r3, #2] - subs fp, sb, r2 - mov sb, r8, lsl #1 - movmi sl, #4 - ldrsh sb, [r7, sb] - rsbmi fp, fp, #0 - movpl sl, #0 - cmp fp, sb - orrge sl, sl, #2 - subge fp, fp, sb - cmp fp, sb, asr #1 - orrge sl, sl, #1 - mov fp, sb, asr #2 - tst sl, #2 - addne fp, fp, sb - tst sl, #1 - addne fp, fp, sb, asr #1 - tst sl, #4 - rsbne fp, fp, #0 - add sb, r2, fp - cmp sb, r6 - movlt sb, r6 - cmp sb, r6, lsr #17 - ldrsb r2, [r4, sl] - movgt sb, r5 - adds r8, r8, r2 - movmi r8, #0 - bmi _02201D2C - cmp r8, #0x58 - movgt r8, #0x58 -_02201D2C: - strh sb, [r3] - strb r8, [r3, #2] - and r2, sl, #0xff - and sb, r8, #0xff - mov fp, sb, lsl #1 - ldrsh sl, [r3] - ldrsh r8, [r1, #2] - ldrsh fp, [r7, fp] - mov r2, r2, lsl #5 - subs ip, r8, sl - movmi r8, #4 - rsbmi ip, ip, #0 - movpl r8, #0 - cmp ip, fp - orrge r8, r8, #2 - subge ip, ip, fp - cmp ip, fp, asr #1 - orrge r8, r8, #1 - mov ip, fp, asr #2 - tst r8, #2 - addne ip, ip, fp - tst r8, #1 - addne ip, ip, fp, asr #1 - tst r8, #4 - rsbne ip, ip, #0 - add fp, sl, ip - cmp fp, r6 - movlt fp, r6 - cmp fp, r6, lsr #17 - ldrsb sl, [r4, r8] - movgt fp, r5 - and r2, r2, #0xff - adds sb, sb, sl - movmi sb, #0 - bmi _02201DC0 - cmp sb, #0x58 - movgt sb, #0x58 -_02201DC0: - strh fp, [r3] - strb sb, [r3, #2] - and r8, r8, #0xff - orr r2, r2, r8, lsl #2 - and sb, sb, #0xff - mov fp, sb, lsl #1 - ldrsh sl, [r3] - ldrsh r8, [r1, #4] - ldrsh fp, [r7, fp] - and r2, r2, #0xff - subs ip, r8, sl - movmi r8, #4 - rsbmi ip, ip, #0 - movpl r8, #0 - cmp ip, fp - orrge r8, r8, #2 - subge ip, ip, fp - cmp ip, fp, asr #1 - orrge r8, r8, #1 - mov ip, fp, asr #2 - tst r8, #2 - addne ip, ip, fp - tst r8, #1 - addne ip, ip, fp, asr #1 - tst r8, #4 - rsbne ip, ip, #0 - add fp, sl, ip - cmp fp, r6 - movlt fp, r6 - cmp fp, r6, lsr #17 - ldrsb sl, [r4, r8] - movgt fp, r5 - adds sb, sb, sl - movmi sb, #0 - bmi _02201E54 - cmp sb, #0x58 - movgt sb, #0x58 -_02201E54: - strh fp, [r3] - and lr, r8, #0xff - strb sb, [r3, #2] - orr r2, r2, lr, asr #1 - strb r2, [r0] - ldrb sb, [r3, #2] - ldrsh r8, [r3] - ldrsh r2, [r1, #6] - mov sl, sb, lsl #1 - ldrsh sl, [r7, sl] - subs fp, r2, r8 - movmi r2, #4 - rsbmi fp, fp, #0 - movpl r2, #0 - cmp fp, sl - orrge r2, r2, #2 - subge fp, fp, sl - cmp fp, sl, asr #1 - orrge r2, r2, #1 - mov fp, sl, asr #2 - tst r2, #2 - addne fp, fp, sl - tst r2, #1 - addne fp, fp, sl, asr #1 - tst r2, #4 - rsbne fp, fp, #0 - add sl, r8, fp - cmp sl, r6 - movlt sl, r6 - cmp sl, r6, lsr #17 - ldrsb r8, [r4, r2] - movgt sl, r5 - adds sb, sb, r8 - movmi sb, #0 - bmi _02201EE8 - cmp sb, #0x58 - movgt sb, #0x58 -_02201EE8: - strh sl, [r3] - and r2, r2, #0xff - mov r2, r2, lsl #4 - strb sb, [r3, #2] - and r8, r2, #0xff - and ip, sb, #0xff - ldrsh r2, [r3] - ldrsh sb, [r1, #8] - subs fp, sb, r2 - mov sb, ip, lsl #1 - movmi sl, #4 - ldrsh sb, [r7, sb] - rsbmi fp, fp, #0 - movpl sl, #0 - cmp fp, sb - orrge sl, sl, #2 - subge fp, fp, sb - cmp fp, sb, asr #1 - orrge sl, sl, #1 - mov fp, sb, asr #2 - tst sl, #2 - addne fp, fp, sb - tst sl, #1 - addne fp, fp, sb, asr #1 - tst sl, #4 - rsbne fp, fp, #0 - add sb, r2, fp - cmp sb, r6 - movlt sb, r6 - cmp sb, r6, lsr #17 - ldrsb r2, [r4, sl] - movgt sb, r5 - adds ip, ip, r2 - movmi ip, #0 - bmi _02201F7C - cmp ip, #0x58 - movgt ip, #0x58 -_02201F7C: - strh sb, [r3] - strb ip, [r3, #2] - and r2, sl, #0xff - orr r2, r8, r2, lsl #1 - and r8, r2, #0xff - ldrsh r2, [r3] - ldrsh sb, [r1, #0xa] - and ip, ip, #0xff - subs fp, sb, r2 - mov sb, ip, lsl #1 - movmi sl, #4 - ldrsh sb, [r7, sb] - rsbmi fp, fp, #0 - movpl sl, #0 - cmp fp, sb - orrge sl, sl, #2 - subge fp, fp, sb - cmp fp, sb, asr #1 - orrge sl, sl, #1 - mov fp, sb, asr #2 - tst sl, #2 - addne fp, fp, sb - tst sl, #1 - addne fp, fp, sb, asr #1 - tst sl, #4 - rsbne fp, fp, #0 - add r2, r2, fp - cmp r2, r6 - movlt r2, r6 - cmp r2, r6, lsr #17 - ldrsb sb, [r4, sl] - movgt r2, r5 - adds ip, ip, sb - movmi ip, #0 - bmi _02202010 - cmp ip, #0x58 - movgt ip, #0x58 -_02202010: - strh r2, [r3] - orr r8, r8, lr, lsl #7 - and r2, sl, #0xff - strb ip, [r3, #2] - orr r8, r8, r2, asr #2 - strb r8, [r0, #1] - ldrb sb, [r3, #2] - ldrsh sl, [r3] - ldrsh r8, [r1, #0xc] - mov fp, sb, lsl #1 - ldrsh fp, [r7, fp] - subs ip, r8, sl - movmi r8, #4 - rsbmi ip, ip, #0 - movpl r8, #0 - cmp ip, fp - orrge r8, r8, #2 - subge ip, ip, fp - cmp ip, fp, asr #1 - orrge r8, r8, #1 - mov ip, fp, asr #2 - tst r8, #2 - addne ip, ip, fp - tst r8, #1 - addne ip, ip, fp, asr #1 - tst r8, #4 - rsbne ip, ip, #0 - add fp, sl, ip - cmp fp, r6 - movlt fp, r6 - cmp fp, r6, lsr #17 - ldrsb sl, [r4, r8] - movgt fp, r5 - adds sb, sb, sl - movmi sb, #0 - bmi _022020A8 - cmp sb, #0x58 - movgt sb, #0x58 -_022020A8: - strh fp, [r3] - and r8, r8, #0xff - mov r8, r8, lsl #3 - strb sb, [r3, #2] - and ip, r8, #0xff - and sl, sb, #0xff - ldrsh r8, [r1, #0xe] - ldrsh fp, [r3] - mov lr, sl, lsl #1 - ldrsh lr, [r7, lr] - subs sb, r8, fp - movmi r8, #4 - rsbmi sb, sb, #0 - movpl r8, #0 - cmp sb, lr - orrge r8, r8, #2 - subge sb, sb, lr - cmp sb, lr, asr #1 - orrge r8, r8, #1 - mov sb, lr, asr #2 - tst r8, #2 - addne sb, sb, lr - tst r8, #1 - addne sb, sb, lr, asr #1 - tst r8, #4 - rsbne sb, sb, #0 - add fp, fp, sb - cmp fp, r6 - movlt fp, r6 - cmp fp, r6, lsr #17 - ldrsb sb, [r4, r8] - movgt fp, r5 - add r1, r1, #0x10 - adds sl, sl, sb - movmi sl, #0 - bmi _02202140 - cmp sl, #0x58 - movgt sl, #0x58 -_02202140: - and r8, r8, #0xff - strh fp, [r3] - orr r8, ip, r8 - strb sl, [r3, #2] - orr r2, r8, r2, lsl #6 - strb r2, [r0, #2] - ldr r2, [sp, #4] - add r0, r0, #3 - add r8, r2, #1 - ldr r2, [sp] - str r8, [sp, #4] - cmp r8, r2 - blo _02201CAC - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0220217C: .word Unk_ov4_02215C54 -_02202180: .word Unk_ov4_02215C3C - arm_func_end ov4_02201C78 - - arm_func_start ov4_02202184 -ov4_02202184: ; 0x02202184 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r7, #0 - cmp r2, #0 - ldmlsia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r4, #0x8000 - ldr lr, _02202390 ; =0x00007FFF - ldr ip, _02202394 ; =0x02215C38 - ldr r6, _02202398 ; =0x02215C54 - rsb r4, r4, #0 - mov r5, r7 -_022021AC: - ldrb sl, [r0] - ldrb r8, [r3, #2] - ldrsh sb, [r3] - and fp, sl, #3 - mov sl, r8, lsl #1 - ldrsh sl, [r6, sl] - tst fp, #1 - moveq sl, r5 - tst fp, #2 - beq _022021E4 - sub sb, sb, sl - cmp sb, r4 - movlt sb, r4 - b _022021F0 -_022021E4: - add sb, sb, sl - cmp sb, lr - movgt sb, lr -_022021F0: - ldrsb sl, [ip, fp] - adds r8, r8, sl - movmi r8, #0 - bmi _02202208 - cmp r8, #0x58 - movgt r8, #0x58 -_02202208: - mov sb, sb, lsl #0x10 - mov sb, sb, asr #0x10 - strh sb, [r3] - strb r8, [r3, #2] - strh sb, [r1] - ldrb sl, [r0] - ldrb r8, [r3, #2] - ldrsh sb, [r3] - mov sl, sl, asr #2 - and fp, sl, #3 - mov sl, r8, lsl #1 - ldrsh sl, [r6, sl] - tst fp, #1 - moveq sl, #0 - tst fp, #2 - beq _02202258 - sub sb, sb, sl - cmp sb, r4 - movlt sb, r4 - b _02202264 -_02202258: - add sb, sb, sl - cmp sb, lr - movgt sb, lr -_02202264: - ldrsb sl, [ip, fp] - adds r8, r8, sl - movmi r8, #0 - bmi _0220227C - cmp r8, #0x58 - movgt r8, #0x58 -_0220227C: - mov sb, sb, lsl #0x10 - mov sb, sb, asr #0x10 - strh sb, [r3] - strb r8, [r3, #2] - strh sb, [r1, #2] - ldrb sl, [r0] - ldrb r8, [r3, #2] - ldrsh sb, [r3] - mov sl, sl, asr #4 - and fp, sl, #3 - mov sl, r8, lsl #1 - ldrsh sl, [r6, sl] - tst fp, #1 - moveq sl, #0 - tst fp, #2 - beq _022022CC - sub sb, sb, sl - cmp sb, r4 - movlt sb, r4 - b _022022D8 -_022022CC: - add sb, sb, sl - cmp sb, lr - movgt sb, lr -_022022D8: - ldrsb sl, [ip, fp] - adds r8, r8, sl - movmi r8, #0 - bmi _022022F0 - cmp r8, #0x58 - movgt r8, #0x58 -_022022F0: - mov sb, sb, lsl #0x10 - mov sb, sb, asr #0x10 - strh sb, [r3] - strb r8, [r3, #2] - strh sb, [r1, #4] - ldrb sl, [r0] - ldrb r8, [r3, #2] - ldrsh sb, [r3] - mov sl, sl, asr #6 - and fp, sl, #3 - mov sl, r8, lsl #1 - ldrsh sl, [r6, sl] - tst fp, #1 - moveq sl, #0 - tst fp, #2 - beq _02202340 - sub sb, sb, sl - cmp sb, r4 - movlt sb, r4 - b _0220234C -_02202340: - add sb, sb, sl - cmp sb, lr - movgt sb, lr -_0220234C: - ldrsb sl, [ip, fp] - adds r8, r8, sl - movmi r8, #0 - bmi _02202364 - cmp r8, #0x58 - movgt r8, #0x58 -_02202364: - mov sb, sb, lsl #0x10 - mov sb, sb, asr #0x10 - strh sb, [r3] - strb r8, [r3, #2] - add r7, r7, #1 - strh sb, [r1, #6] - add r1, r1, #8 - add r0, r0, #1 - cmp r7, r2 - blo _022021AC - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_02202390: .word 0x00007FFF -_02202394: .word Unk_ov4_02215C38 -_02202398: .word Unk_ov4_02215C54 - arm_func_end ov4_02202184 - - arm_func_start ov4_0220239C -ov4_0220239C: ; 0x0220239C - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - movs r2, r2, lsr #2 - mov fp, #0 - str r2, [sp] - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r4, #0x8000 - rsb r4, r4, #0 - ldr r5, _022025C4 ; =0x02215C54 - ldr ip, _022025C8 ; =0x02215C38 - mov lr, r4, lsr #0x11 -_022023C4: - ldrb r7, [r3, #2] - ldrsh r6, [r3] - ldrsh r2, [r1] - mov r8, r7, lsl #1 - ldrsh r8, [r5, r8] - subs sb, r2, r6 - movmi r2, #2 - rsbmi sb, sb, #0 - movpl r2, #0 - cmp sb, r8 - orrge r2, r2, #1 - tst r2, #1 - moveq r8, #0 - tst r2, #2 - rsbne r8, r8, #0 - add r8, r6, r8 - cmp r8, r4 - movlt r8, r4 - cmp r8, r4, lsr #17 - ldrsb r6, [ip, r2] - movgt r8, lr - adds r7, r7, r6 - movmi r7, #0 - bmi _0220242C - cmp r7, #0x58 - movgt r7, #0x58 -_0220242C: - strh r8, [r3] - strb r7, [r3, #2] - and r6, r2, #0xff - ldrsh sl, [r3] - ldrsh r2, [r1, #2] - and sb, r7, #0xff - subs r8, r2, sl - mov r2, sb, lsl #1 - movmi r7, #2 - ldrsh r2, [r5, r2] - rsbmi r8, r8, #0 - movpl r7, #0 - cmp r8, r2 - orrge r7, r7, #1 - tst r7, #1 - moveq r2, #0 - tst r7, #2 - rsbne r2, r2, #0 - add r8, sl, r2 - cmp r8, r4 - movlt r8, r4 - cmp r8, r4, lsr #17 - ldrsb r2, [ip, r7] - movgt r8, lr - adds sb, sb, r2 - movmi sb, #0 - bmi _022024A0 - cmp sb, #0x58 - movgt sb, #0x58 -_022024A0: - strh r8, [r3] - strb sb, [r3, #2] - and r2, r7, #0xff - orr r2, r6, r2, lsl #2 - and r6, r2, #0xff - ldrsh sl, [r3] - ldrsh r2, [r1, #4] - and sb, sb, #0xff - subs r8, r2, sl - mov r2, sb, lsl #1 - movmi r7, #2 - ldrsh r2, [r5, r2] - rsbmi r8, r8, #0 - movpl r7, #0 - cmp r8, r2 - orrge r7, r7, #1 - tst r7, #1 - moveq r2, #0 - tst r7, #2 - rsbne r2, r2, #0 - add r8, sl, r2 - cmp r8, r4 - movlt r8, r4 - cmp r8, r4, lsr #17 - ldrsb r2, [ip, r7] - movgt r8, lr - adds sb, sb, r2 - movmi sb, #0 - bmi _0220251C - cmp sb, #0x58 - movgt sb, #0x58 -_0220251C: - strh r8, [r3] - strb sb, [r3, #2] - and r2, r7, #0xff - orr r2, r6, r2, lsl #4 - and r6, r2, #0xff - ldrsh r2, [r1, #6] - ldrsh sl, [r3] - and sb, sb, #0xff - add r1, r1, #8 - subs r8, r2, sl - mov r2, sb, lsl #1 - movmi r7, #2 - ldrsh r2, [r5, r2] - rsbmi r8, r8, #0 - movpl r7, #0 - cmp r8, r2 - orrge r7, r7, #1 - tst r7, #1 - moveq r2, #0 - tst r7, #2 - rsbne r2, r2, #0 - add r8, sl, r2 - cmp r8, r4 - movlt r8, r4 - cmp r8, r4, lsr #17 - ldrsb r2, [ip, r7] - movgt r8, lr - adds sb, sb, r2 - movmi sb, #0 - bmi _0220259C - cmp sb, #0x58 - movgt sb, #0x58 -_0220259C: - strh r8, [r3] - and r2, r7, #0xff - strb sb, [r3, #2] - orr r2, r6, r2, lsl #6 - strb r2, [r0], #1 - ldr r2, [sp] - add fp, fp, #1 - cmp fp, r2 - blo _022023C4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_022025C4: .word Unk_ov4_02215C54 -_022025C8: .word Unk_ov4_02215C38 - arm_func_end ov4_0220239C - - arm_func_start ov4_022025CC -ov4_022025CC: ; 0x022025CC - stmfd sp!, {r3, lr} - ldrsh ip, [r0] - cmp r3, #2 - strh ip, [sp] - ldrb ip, [r0, #2] - strb ip, [sp, #2] - beq _022025FC - cmp r3, #3 - beq _02202610 - cmp r3, #4 - beq _02202624 - ldmia sp!, {r3, pc} -_022025FC: - add r3, sp, #0 - add r0, r0, #4 - sub r2, r2, #4 - bl ov4_02202184 - ldmia sp!, {r3, pc} -_02202610: - add r3, sp, #0 - add r0, r0, #4 - sub r2, r2, #4 - bl ov4_022017E4 - ldmia sp!, {r3, pc} -_02202624: - add r3, sp, #0 - add r0, r0, #4 - sub r2, r2, #4 - bl ov4_02201504 - ldmia sp!, {r3, pc} - arm_func_end ov4_022025CC - - arm_func_start ov4_02202638 -ov4_02202638: ; 0x02202638 - stmfd sp!, {r4, lr} - ldrsh r4, [r3] - ldr ip, [sp, #8] - mov lr, #0 - strh r4, [r0] - ldrb r4, [r3, #2] - cmp ip, #2 - strb r4, [r0, #2] - strb lr, [r0, #3] - beq _02202674 - cmp ip, #3 - beq _02202680 - cmp ip, #4 - beq _0220268C - ldmia sp!, {r4, pc} -_02202674: - add r0, r0, #4 - bl ov4_0220239C - ldmia sp!, {r4, pc} -_02202680: - add r0, r0, #4 - bl ov4_02201C78 - ldmia sp!, {r4, pc} -_0220268C: - add r0, r0, #4 - bl ov4_02201658 - ldmia sp!, {r4, pc} - arm_func_end ov4_02202638 - - .rodata - - - .global Unk_ov4_02215C38 -Unk_ov4_02215C38: ; 0x02215C38 - .short 0x1FF - .short 0x1FF - - .global Unk_ov4_02215C3C -Unk_ov4_02215C3C: ; 0x02215C3C - .word 0x201FFFF - .word 0x201FFFF - - .global Unk_ov4_02215C44 -Unk_ov4_02215C44: ; 0x02215C44 - .word 0xFFFFFFFF - .byte 0x2, 0x4, 0x6, 0x8 - .word 0xFFFFFFFF - .byte 0x2, 0x4, 0x6, 0x8 - - .global Unk_ov4_02215C54 -Unk_ov4_02215C54: ; 0x02215C54 - .short 0x7, 0x8 - .short 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0x10, 0x11 - .short 0x13, 0x15, 0x17, 0x19, 0x1C, 0x1F, 0x22, 0x25 - .short 0x29, 0x2D, 0x32, 0x37, 0x3C, 0x42, 0x49, 0x50 - .short 0x58, 0x61, 0x6B, 0x76, 0x82, 0x8F, 0x9D, 0xAD - .short 0xBE, 0xD1, 0xE6, 0xFD, 0x117, 0x133, 0x151, 0x173 - .short 0x198, 0x1C1, 0x1EE, 0x220, 0x256, 0x292, 0x2D4, 0x31C - .short 0x36C, 0x3C3, 0x424, 0x48E, 0x502, 0x583, 0x610, 0x6AB - .short 0x756, 0x812, 0x8E0, 0x9C3, 0xABD, 0xBD0, 0xCFF, 0xE4C - .short 0xFBA, 0x114C, 0x1307, 0x14EE, 0x1706, 0x1954, 0x1BDC, 0x1EA5 - .short 0x21B6, 0x2515, 0x28CA, 0x2CDF, 0x315B, 0x364B, 0x3BB9, 0x41B2 - .short 0x4844, 0x4F7E, 0x5771, 0x602F, 0x69CE, 0x7462, 0x7FFF - .space 0x2 - diff --git a/subprojects/libVCT/asm/audio.s b/subprojects/libVCT/asm/audio.s deleted file mode 100644 index 53d27a7164..0000000000 --- a/subprojects/libVCT/asm/audio.s +++ /dev/null @@ -1,1155 +0,0 @@ - .include "macros/function.inc" - .include "include/audio.inc" - - .extern Unk_ov4_0221DBD8 - - .text - - - arm_func_start ov4_02202698 -ov4_02202698: ; 0x02202698 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - bl OS_GetTickLo - ldr r2, _0220277C ; =0x0221B780 - ldr r1, _02202780 ; =0x0221A0E8 - mov r3, #1 - str r3, [r1, #0] - strh r0, [r2] - mov r1, #0 - str r1, [r2, #0x20] - ldr r0, _02202784 ; =0x0221DBD8 - str r1, [r2, #4] - ldr r0, [r0, #0x10] - ldr r3, _02202788 ; =0x02215D08 - cmp r0, #1 - streq r1, [r2, #0x1c] - movne r0, #4 - strne r0, [r2, #0x1c] - ldr r1, _0220277C ; =0x0221B780 - mov r0, #0x440 - str r0, [r1, #0x24] - ldr r5, [r1, #0x1c] - mov r0, #0x44 - add r2, r3, r5, lsl #1 - ldrb r4, [r2, #1] - ldrb r3, [r3, r5, lsl #1] - mov r2, #0 - mla r0, r3, r0, r4 - add r0, r0, #0xc - str r0, [r1, #0xc] - str r2, [r1, #0xf00] - str r2, [r1, #0xf04] - str r2, [r1, #0xf0c] - str r2, [r1, #0xf08] - str r2, [r1, #0xf10] - str r2, [r1, #0xf14] - bl ov4_022054BC - mov sb, #0 - mov r8, sb - ldr r7, _0220278C ; =0x0221B7AC - ldr r6, _02202790 ; =0x0221B7B8 - mvn r5, #0 - mov r4, #0x94 - b _02202764 -_02202744: - mov r0, sb - str r8, [r7, sb, lsl #2] - bl ov4_022038F4 - mla r0, sb, r4, r6 - mov r1, sb - mov r2, r5 - bl ov4_02203BD4 - add sb, sb, #1 -_02202764: - cmp sb, #3 - blo _02202744 - bl ov4_02203504 - bl ov4_022055D0 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ; .align 2, 0 -_0220277C: .word Unk_ov4_0221B780 -_02202780: .word Unk_ov4_0221A0E8 -_02202784: .word Unk_ov4_0221DBD8 -_02202788: .word Unk_ov4_02215D08 -_0220278C: .word Unk_ov4_0221B7AC -_02202790: .word Unk_ov4_0221B7B8 - arm_func_end ov4_02202698 - - arm_func_start ov4_02202794 -ov4_02202794: ; 0x02202794 - ldr r0, _022027A4 ; =0x0221B780 - mov r1, #0 - str r1, [r0, #0x20] - bx lr - ; .align 2, 0 -_022027A4: .word Unk_ov4_0221B780 - arm_func_end ov4_02202794 - - arm_func_start VCT_StartStreaming -VCT_StartStreaming: ; 0x022027A8 - stmfd sp!, {r3, r4, r5, lr} - movs r5, r0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, _022028D4 ; =0x0221B780 - ldr r0, [r0, #0x20] - cmp r0, #3 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, [r5, #0xc] - cmp r0, #2 - cmpne r0, #3 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r4, #0 - ldr r1, _022028D8 ; =0x0221B7AC - b _02202800 -_022027EC: - ldr r0, [r1, r4, lsl #2] - cmp r0, r5 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - add r4, r4, #1 -_02202800: - cmp r4, #3 - blo _022027EC - mov r4, #0 - ldr r1, _022028D8 ; =0x0221B7AC - b _02202828 -_02202814: - ldr r0, [r1, r4, lsl #2] - cmp r0, #0 - streq r5, [r1, r4, lsl #2] - beq _02202830 - add r4, r4, #1 -_02202828: - cmp r4, #3 - blo _02202814 -_02202830: - ldr r1, _022028D4 ; =0x0221B780 - ldr r2, _022028DC ; =0x0221B7B8 - ldr r3, [r1, #0x20] - mov r0, #0x94 - add r3, r3, #1 - str r3, [r1, #0x20] - ldr ip, [r1, #4] - ldr r3, [r5, #8] - mla r0, r4, r0, r2 - orr r2, ip, r3 - str r2, [r1, #4] - ldrb r2, [r5, #5] - mov r1, r4 - bl ov4_02203BD4 - mov r0, r4 - bl ov4_022038F4 - ldr r0, [r5, #0xc] - cmp r0, #2 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, _022028D4 ; =0x0221B780 - ldr r0, [r0, #0x20] - cmp r0, #1 - bne _022028CC - bl ov4_02205270 - bl OS_GetTickLo - ldr r1, _022028D4 ; =0x0221B780 - mov r2, #0 - strh r0, [r1] - strh r2, [r1, #0x10] - strb r2, [r1, #0x12] - mov r0, #1 - str r0, [r1, #0x14] - str r2, [r1, #0xf00] - str r2, [r1, #0xf04] - str r2, [r1, #0xf0c] - str r2, [r1, #0xf08] - str r2, [r1, #0xf10] - str r2, [r1, #0xf14] -_022028CC: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_022028D4: .word Unk_ov4_0221B780 -_022028D8: .word Unk_ov4_0221B7AC -_022028DC: .word Unk_ov4_0221B7B8 - arm_func_end VCT_StartStreaming - - arm_func_start VCT_StopStreaming -VCT_StopStreaming: ; 0x022028E0 - stmfd sp!, {r3, r4, r5, lr} - ldr ip, _02202988 ; =0x0221B7AC - mov r5, r0 - mov r4, #0 -_022028F0: - ldr r0, [ip, r4, lsl #2] - cmp r0, r5 - bne _02202950 - ldr r1, _0220298C ; =0x0221B7B8 - mov r0, #0x94 - mla r0, r4, r0, r1 - ldr r1, _02202990 ; =0x0221B780 - mov r3, #0 - ldr r2, [r1, #0x20] - str r3, [ip, r4, lsl #2] - sub r2, r2, #1 - str r2, [r1, #0x20] - bl ov4_02203C60 - mov r0, r4 - bl ov4_02203930 - mov r0, r4 - bl ov4_02203544 - ldr r0, _02202990 ; =0x0221B780 - ldr r1, [r5, #8] - ldr r2, [r0, #4] - mvn r1, r1 - and r1, r2, r1 - str r1, [r0, #4] - b _0220295C -_02202950: - add r4, r4, #1 - cmp r4, #3 - blo _022028F0 -_0220295C: - ldr r0, _02202990 ; =0x0221B780 - ldr r1, [r0, #0x20] - cmp r1, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r1, #1 - str r1, [r0, #0x14] - bl ov4_02205270 - ldr r0, _02202990 ; =0x0221B780 - mov r1, #0 - str r1, [r0, #4] - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02202988: .word Unk_ov4_0221B7AC -_0220298C: .word Unk_ov4_0221B7B8 -_02202990: .word Unk_ov4_0221B780 - arm_func_end VCT_StopStreaming - - arm_func_start VCT_SendAudio -VCT_SendAudio: ; 0x02202994 - stmfd sp!, {r4, lr} - ldr r3, _02202A94 ; =0x0221B780 - mov r2, r1 - ldr r1, [r3, #0x24] - mov ip, #0 - cmp r2, r1 - movne r0, ip - ldmneia sp!, {r4, pc} - ldr r1, [r3, #0x20] - cmp r1, #0 - moveq r0, ip - ldmeqia sp!, {r4, pc} - mov r4, ip - ldr r3, _02202A98 ; =0x0221B7AC - b _022029F0 -_022029D0: - ldr r1, [r3, r4, lsl #2] - cmp r1, #0 - beq _022029EC - ldr r1, [r1, #0xc] - cmp r1, #2 - moveq ip, #1 - beq _022029F8 -_022029EC: - add r4, r4, #1 -_022029F0: - cmp r4, #3 - blo _022029D0 -_022029F8: - cmp ip, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldr r1, _02202A94 ; =0x0221B780 - ldr ip, _02202A9C ; =0x0221BDC0 - ldr r1, [r1, #0xf04] - ldr r3, _02202AA0 ; =0x5F564354 - tst r1, #1 - ldr r1, _02202A94 ; =0x0221B780 - movne r4, #0 - moveq r4, #0x460 - ldr r1, [r1, #0x1c] - str r3, [ip, r4] - cmp r1, #2 - add r4, ip, r4 - blt _02202A44 - add r1, r4, #0x10 - bl MIi_CpuCopyFast - b _02202A4C -_02202A44: - add r1, r4, #0xc - bl MIi_CpuCopyFast -_02202A4C: - ldr r0, _02202A94 ; =0x0221B780 - mov r1, #0x40 - ldrh r2, [r0] - strb r1, [r4, #4] - add r1, r2, #1 - strh r1, [r0] - strh r2, [r4, #6] - bl OS_GetTick - mov r2, #0x40 - mov r3, #0 - bl _ull_div - str r0, [r4, #8] - ldr r1, _02202A94 ; =0x0221B780 - mov r0, #1 - ldr r2, [r1, #0xf04] - add r2, r2, #1 - str r2, [r1, #0xf04] - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02202A94: .word Unk_ov4_0221B780 -_02202A98: .word Unk_ov4_0221B7AC -_02202A9C: .word Unk_ov4_0221BDC0 -_02202AA0: .word 0x5F564354 - arm_func_end VCT_SendAudio - - arm_func_start ov4_02202AA4 -ov4_02202AA4: ; 0x02202AA4 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - ldr r4, _02202CE8 ; =0x0221B7B8 - mov sl, r2 - mov r2, #0x94 - mla r6, sl, r2, r4 - str r0, [sp] - mov r0, sl - str r1, [sp, #4] - mov fp, r3 - mov r7, #1 - bl ov4_02203BC4 - movs r4, r0 - beq _02202CC4 -_02202ADC: - bl OS_GetTick - mov r8, r0 - mov r0, sl - mov sb, r1 - bl ov4_02203B20 - movs r5, r0 - beq _02202CAC - ldr r1, [r5, #0x46c] - adds r3, r8, #0x34 - ldr r0, [r5, #0x470] - adc r2, sb, #0 - cmp r0, r2 - cmpeq r1, r3 - bls _02202B90 - ldr r0, [r5, #0x45c] - cmp r0, #0 - bne _02202B84 - ldr r0, [r6, #0x3c] - cmp r0, #0 - beq _02202B84 - ldr r0, [r6, #0x20] - ldr r1, [sp] - add r0, r0, #1 - str r0, [r6, #0x20] - ldr r0, [r6, #0x3c] - ldr r2, [sp, #4] - ldr r0, [r0, #0x474] - bl MIi_CpuCopyFast - ldr r0, [r6, #0x3c] - bl ov4_0220523C - mov r0, #0 - str r0, [r6, #0x3c] - cmp fp, #0 - beq _02202B78 - ldrb r0, [r5, #0x10] - ldr r2, [fp] - mov r1, #1 - orr r0, r2, r1, lsl r0 - str r0, [fp] -_02202B78: - add sp, sp, #8 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02202B84: - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02202B90: - ldr r2, _02202CEC ; =0x00008B4C - adds r2, r1, r2 - adc r0, r0, #0 - cmp sb, r0 - cmpeq r8, r2 - bls _02202BD0 - ldr r2, [r5, #0x18] - mov r0, r6 - mov r1, r5 - str r2, [r6, #0x58] - bl ov4_02203C8C - mov r4, r0 - mov r0, sl - bl ov4_02203B20 - mov r7, #0 - b _02202CBC -_02202BD0: - ldr r1, [r6, #0x58] - ldr r2, [r5, #0x18] - add r0, r1, #1 - cmp r0, r2 - cmpne r1, #0 - beq _02202C04 - cmp r1, r2 - bhi _02202C04 - ldr r0, [r5, #0x45c] - cmp r0, #0 - ldreq r0, [r6, #0x14] - addeq r0, r0, #1 - streq r0, [r6, #0x14] -_02202C04: - ldr r0, [r5, #0x18] - cmp r7, #0 - str r0, [r6, #0x58] - ldrne r0, [r6, #0x70] - cmpne r0, #0 - beq _02202C44 - mov r0, r6 - mov r1, r5 - bl ov4_02203C8C - mov r4, r0 - mov r0, sl - bl ov4_02203B20 - ldr r0, [r6, #0x70] - sub r0, r0, #1 - str r0, [r6, #0x70] - b _02202CBC -_02202C44: - ldr r1, [r5, #0x464] - ldr r0, [r6, #0x28] - subs r1, r8, r1 - sub r0, r1, r0 - sub r0, r0, r1 - str r1, [r6, #0x28] - add r0, r1, r0, lsr #4 - str r0, [r6, #0x2c] - str r0, [r6, #0] - ldr r0, [r5, #0x474] - ldr r1, [sp] - ldr r2, [sp, #4] - bl MIi_CpuCopyFast - mov r0, r6 - mov r1, r5 - bl ov4_02203C8C - cmp fp, #0 - beq _02202CA0 - ldrb r0, [r5, #0x10] - ldr r2, [fp] - mov r1, #1 - orr r0, r2, r1, lsl r0 - str r0, [fp] -_02202CA0: - add sp, sp, #8 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02202CAC: - add sp, sp, #8 - str r4, [r6, #8] - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02202CBC: - cmp r4, #0 - bne _02202ADC -_02202CC4: - ldr r0, [r6, #0x3c] - cmp r0, #0 - beq _02202CDC - bl ov4_0220523C - mov r0, #0 - str r0, [r6, #0x3c] -_02202CDC: - mov r0, #0 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_02202CE8: .word Unk_ov4_0221B7B8 -_02202CEC: .word 0x00008B4C - arm_func_end ov4_02202AA4 - - arm_func_start VCT_ReceiveAudio -VCT_ReceiveAudio: ; 0x02202CF0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - movs r5, r2 - mov r7, r0 - movne r0, #0 - strne r0, [r5] - ldr r0, _02202E04 ; =0x0221B780 - mov r6, r1 - ldr r1, [r0, #0x24] - mov r4, #0 - cmp r6, r1 - bne _02202DCC - ldr r0, [r0, #0x20] - cmp r0, #0 - beq _02202DCC - mov r8, r4 -_02202D2C: - mov r0, r7 - mov r1, r6 - mov r2, r8 - mov r3, r5 - bl ov4_02202AA4 - cmp r0, #1 - moveq r4, #1 - beq _02202D58 - add r8, r8, #1 - cmp r8, #3 - blo _02202D2C -_02202D58: - cmp r4, #0 - beq _02202DB8 - add sb, r8, #1 - cmp sb, #3 - moveq r4, #1 - beq _02202DE0 - bhs _02202DE0 - ldr r8, _02202E08 ; =0x0221B974 -_02202D78: - mov r0, r8 - mov r1, r6 - mov r2, sb - mov r3, r5 - bl ov4_02202AA4 - cmp r0, #1 - bne _02202DA8 - mov r0, r7 - mov r1, r8 - mov r2, r7 - mov r3, r6 - bl ov4_022058A0 -_02202DA8: - add sb, sb, #1 - cmp sb, #3 - blo _02202D78 - b _02202DE0 -_02202DB8: - mov r1, r7 - mov r2, r6 - mov r0, #0 - bl MIi_CpuClearFast - b _02202DE0 -_02202DCC: - mov r1, r7 - mov r2, r6 - mov r0, #0 - bl MIi_CpuClearFast - mov r4, #0 -_02202DE0: - ldr r0, _02202E04 ; =0x0221B780 - ldr r0, [r0, #0x18] - cmp r0, #0 - beq _02202DFC - mov r0, r7 - mov r1, r6 - bl ov4_0220564C -_02202DFC: - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ; .align 2, 0 -_02202E04: .word Unk_ov4_0221B780 -_02202E08: .word Unk_ov4_0221B974 - arm_func_end VCT_ReceiveAudio - - arm_func_start VCT_SetCodec -VCT_SetCodec: ; 0x02202E0C - cmp r0, #5 - movge r0, #0 - bxge lr - ldr r1, _02202E70 ; =0x0221DBD8 - ldr r1, [r1, #0x10] - cmp r1, #1 - beq _02202E34 - cmp r0, #1 - movls r0, #0 - bxls lr -_02202E34: - ldr r2, _02202E74 ; =0x02215D09 - ldr r1, _02202E78 ; =0x02215D08 - ldrb ip, [r2, r0, lsl #1] - ldrb r3, [r1, r0, lsl #1] - mov r1, #0x44 - ldr r2, _02202E7C ; =0x0221B780 - mla r1, r3, r1, ip - add r1, r1, #0xc - str r1, [r2, #0xc] - str r0, [r2, #0x1c] - mov r0, #0 - strh r0, [r2, #0x10] - strb r0, [r2, #0x12] - mov r0, #1 - bx lr - ; .align 2, 0 -_02202E70: .word Unk_ov4_0221DBD8 -_02202E74: .word 0x02215D09 -_02202E78: .word Unk_ov4_02215D08 -_02202E7C: .word Unk_ov4_0221B780 - arm_func_end VCT_SetCodec - - arm_func_start VCT_EnableVAD -VCT_EnableVAD: ; 0x02202E80 - stmfd sp!, {r4, lr} - ldr r1, _02202EA8 ; =0x0221A0E8 - mov r4, r0 - str r4, [r1, #0] - bl ov4_02205270 - cmp r4, #0 - ldreq r0, _02202EAC ; =0x0221B780 - moveq r1, #1 - streq r1, [r0, #8] - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02202EA8: .word Unk_ov4_0221A0E8 -_02202EAC: .word Unk_ov4_0221B780 - arm_func_end VCT_EnableVAD - - arm_func_start VCT_EnableEchoCancel -VCT_EnableEchoCancel: ; 0x02202EB0 - ldr r1, _02202EBC ; =0x0221B780 - str r0, [r1, #0x18] - bx lr - ; .align 2, 0 -_02202EBC: .word Unk_ov4_0221B780 - arm_func_end VCT_EnableEchoCancel - - arm_func_start ov4_02202EC0 -ov4_02202EC0: ; 0x02202EC0 - stmfd sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - ldr r0, _02203120 ; =0x0221B780 - ldr r2, [r0, #0xf04] - ldr r1, [r0, #0xf00] - ldr r8, [r0, #0x1c] - sub r1, r2, r1 - cmp r1, #1 - subhi r1, r2, #1 - strhi r1, [r0, #0xf00] - movhi r1, #1 - cmp r1, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} - ldr r0, _02203120 ; =0x0221B780 - ldr r0, [r0, #0xf00] - tst r0, #1 - movne r1, #0 - moveq r1, #0x460 - ldr r0, _02203124 ; =0x0221BDC0 - cmp r8, #2 - add r5, r0, r1 - ldr r1, _02203120 ; =0x0221B780 - add r4, r5, #0xc - addge r4, r4, #4 - ldr r1, [r1, #0x24] - mov r0, r4 - bl ov4_022054E4 - ldr r1, _02203128 ; =0x040002B0 - mov r2, #0 - mov r6, r0 - strh r2, [r1] - str r6, [r1, #8] -_02202F48: - ldrh r0, [r1] - tst r0, #0x8000 - bne _02202F48 - ldr r0, _02203120 ; =0x0221B780 - ldr r2, _0220312C ; =0x040002B4 - ldr r1, [r0, #0x18] - ldr r7, [r2, #0] - cmp r1, #0 - beq _02202F7C - ldr r1, [r0, #0x24] - mov r0, r4 - mov r2, r7 - bl ov4_02205880 -_02202F7C: - ldr r0, _02203130 ; =0x0221A0E8 - strb r8, [r5, #5] - ldr r0, [r0, #0] - cmp r0, #0 - beq _02202FEC - mov r0, r6 - mov r1, r7 - mov r2, #0 - bl ov4_022052DC - ldr r1, _02203120 ; =0x0221B780 - cmp r0, #0 - str r0, [r1, #0x28] - beq _02202FC8 - cmp r0, #1 - beq _02202FE0 - cmp r0, #3 - moveq r0, #0x41 - streqb r0, [r5, #4] - b _02202FEC -_02202FC8: - ldr r2, [r1, #0xf00] - add sp, sp, #4 - add r2, r2, #1 - str r2, [r1, #0xf00] - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_02202FE0: - ldrb r0, [r5, #5] - orr r0, r0, #0x80 - strb r0, [r5, #5] -_02202FEC: - ldr r0, _02203130 ; =0x0221A0E8 - ldr r0, [r0, #0] - cmp r0, #0 - bne _02203020 - ldr r0, _02203120 ; =0x0221B780 - ldr r1, [r0, #8] - cmp r1, #0 - beq _02203020 - ldrb r2, [r5, #5] - mov r1, #0 - str r1, [r0, #8] - orr r0, r2, #0x80 - strb r0, [r5, #5] -_02203020: - ldr r0, _02203120 ; =0x0221B780 - ldr r1, [r0, #0x14] - cmp r1, #0 - beq _02203044 - ldrb r2, [r5, #5] - mov r1, #0 - str r1, [r0, #0x14] - orr r0, r2, #0x80 - strb r0, [r5, #5] -_02203044: - cmp r8, #2 - blt _0220308C - ldrb r0, [r5, #5] - tst r0, #0x80 - beq _02203068 - ldr r0, _02203120 ; =0x0221B780 - mov r1, #0 - strh r1, [r0, #0x10] - strb r1, [r0, #0x12] -_02203068: - ldr r0, _02203120 ; =0x0221B780 - str r8, [sp] - ldr r2, [r0, #0x24] - ldr r3, _02203134 ; =0x0221B790 - mov r1, r4 - sub r0, r4, #4 - mov r2, r2, lsr #1 - bl ov4_02202638 - b _022030D0 -_0220308C: - cmp r8, #1 - bne _022030B0 - ldr r1, _02203120 ; =0x0221B780 - mov r0, r4 - ldr r2, [r1, #0x24] - mov r1, r4 - mov r2, r2, lsr #1 - bl ov4_02203798 - b _022030D0 -_022030B0: - cmp r8, #0 - bne _022030D0 - ldr r1, _02203120 ; =0x0221B780 - mov r0, r4 - ldr r2, [r1, #0x24] - mov r1, r4 - mov r2, r2, lsr #1 - bl ov4_02203898 -_022030D0: - ldr r1, _02203120 ; =0x0221B780 - ldr r0, _02203138 ; =0x0221DBD8 - ldr r3, [r1, #4] - mov r2, #1 - str r3, [r1, #0xf0c] - ldrb r0, [r0] - mvn r0, r2, lsl r0 - and r0, r3, r0 - str r0, [r1, #0xf0c] - bl MATH_CountPopulation - sub r0, r0, #1 - ldr r1, _02203120 ; =0x0221B780 - cmp r0, #7 - str r0, [r1, #0xf14] - movgt r0, #0 - movle r2, #0 - movle r0, r5 - strle r2, [r1, #0xf10] - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_02203120: .word Unk_ov4_0221B780 -_02203124: .word Unk_ov4_0221BDC0 -_02203128: .word 0x040002B0 -_0220312C: .word 0x040002B4 -_02203130: .word Unk_ov4_0221A0E8 -_02203134: .word Unk_ov4_0221B790 -_02203138: .word Unk_ov4_0221DBD8 - arm_func_end ov4_02202EC0 - - arm_func_start ov4_0220313C -ov4_0220313C: ; 0x0220313C - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r4, _02203318 ; =0x0221B780 - mov sl, r0 - ldr r0, [r4, #0x20] - ldr r7, [sp, #0x28] - mov sb, r1 - mov r8, r2 - mov fp, r3 - mov r5, #0 - cmp r0, #0 - moveq r0, r5 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, _0220331C ; =0x0221B7B8 - mov r2, r5 -_02203174: - ldr r0, [r1, #0x38] - cmp sl, r0 - bne _02203190 - ldr r1, _0220331C ; =0x0221B7B8 - mov r0, #0x94 - mla r5, r2, r0, r1 - b _022031A0 -_02203190: - add r2, r2, #1 - cmp r2, #3 - add r1, r1, #0x94 - blo _02203174 -_022031A0: - cmp r5, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrb r0, [sb, #4] - cmp r0, #0x41 - bne _022031D4 - ldrh r2, [sb, #6] - mov r0, #0 - mov r1, #1 - str r2, [r5, #0x30] - str r0, [r5, #0x4c] - str r1, [r5, #0x6c] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022031D4: - cmp r0, #0x40 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrb r0, [sb, #5] - and r6, r0, #0x7f - cmp r6, #5 - str r6, [r5, #0x24] - movge r0, #0 - ldmgeia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, _02203320 ; =0x02215D09 - ldr r0, _02203324 ; =0x02215D08 - ldrb r2, [r1, r6, lsl #1] - ldrb r1, [r0, r6, lsl #1] - mov r0, #0x44 - mla r0, r1, r0, r2 - add r0, r0, #0xc - cmp r8, r0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp sl, #0 - movne r0, #1 - movne r1, r0, lsl sl - ldr r0, _02203318 ; =0x0221B780 - moveq r1, #1 - ldr r0, [r0, #4] - tst r0, r1 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl ov4_02205208 - movs r4, r0 - bne _02203288 - ldr r0, [r5, #0x34] - bl ov4_02203930 - ldr r0, [r5, #0x34] - bl ov4_02203544 - bl ov4_02205208 - movs r4, r0 - bne _0220327C - bl ov4_022039A0 - bl ov4_022035A0 - bl ov4_02205208 - mov r4, r0 -_0220327C: - cmp r4, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02203288: - add r0, r4, #0x5c - add r0, r0, #0x400 - sub r2, r8, #0xc - sub r1, r0, r2 - add r0, sb, #0xc - str r1, [sp] - bl MI_CpuCopy8 - ldr r0, [r5, #0x34] - sub r1, r8, #0xc - strb r0, [r4, #0x11] - ldr r0, [sp] - str r6, [r4, #0xc] - str r0, [r4, #0x474] - str r1, [r4, #0x14] - str fp, [r4, #0x464] - str r7, [r4, #0x468] - strb sl, [r4, #0x10] - ldrb r2, [sb, #5] - mov r0, r5 - mov r1, r4 - and r2, r2, #0x80 - str r2, [r4, #0x45c] - ldr r2, [sb, #8] - str r2, [r4, #0x460] - ldrh r2, [sb, #6] - str r2, [r4, #0x18] - bl ov4_02203DB0 - cmp r0, #0 - mov r0, r4 - bne _0220330C - bl ov4_0220523C - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0220330C: - bl ov4_0220360C - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_02203318: .word Unk_ov4_0221B780 -_0220331C: .word Unk_ov4_0221B7B8 -_02203320: .word 0x02215D09 -_02203324: .word Unk_ov4_02215D08 - arm_func_end ov4_0220313C - - arm_func_start ov4_02203328 -ov4_02203328: ; 0x02203328 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - bl ov4_02203694 - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - bl OS_DisableInterrupts - ldrb r6, [r4, #0x11] - mov r7, r0 - mov r0, r6 - bl ov4_022036A4 - mov r5, r0 - cmp r5, #0 - mov r4, #0 - ble _022033E8 -_02203360: - mov r0, r6 - bl ov4_022036B4 - mov r8, r0 - ldr r3, [r8, #0xc] - cmp r3, #2 - blt _0220338C - ldr r0, [r8, #0x474] - ldr r2, [r8, #0x14] - add r1, r8, #0x1c - bl ov4_022025CC - b _022033B0 -_0220338C: - cmp r3, #1 - ldr r0, [r8, #0x474] - ldr r2, [r8, #0x14] - bne _022033A8 - add r1, r8, #0x1c - bl ov4_02203844 - b _022033B0 -_022033A8: - add r1, r8, #0x1c - bl ov4_022038C4 -_022033B0: - add r1, r8, #0x1c - mov r0, r8 - str r1, [r8, #0x474] - bl ov4_02203704 - ldrb r1, [r8, #0x11] - mov r0, r8 - bl ov4_02203A20 - cmp r0, #0 - bge _022033DC - mov r0, r8 - bl ov4_0220523C -_022033DC: - add r4, r4, #1 - cmp r4, r5 - blt _02203360 -_022033E8: - mov r0, r7 - bl OS_RestoreInterrupts - mov r0, r5 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end ov4_02203328 - - arm_func_start ov4_022033F8 -ov4_022033F8: ; 0x022033F8 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - ldr r1, _022034F8 ; =0x0221B780 - ldr r0, [r1, #0x20] - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r1, #0xf08] - cmp r0, #0 - bne _02203440 - bl ov4_02202EC0 - ldr r1, _022034F8 ; =0x0221B780 - cmp r0, #0 - str r0, [r1, #0xf08] - ldrne r0, [r1, #0x18] - cmpne r0, #0 - movne r0, #0 - moveq r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02203440: - ldr r0, _022034FC ; =0x0221DBD8 - mov r5, #1 - ldr r0, [r0, #0x10] - cmp r0, #2 - bne _02203474 - ldr r3, [r1, #0xf10] - ldr r0, _02203500 ; =0x02215D12 - add r2, r3, #1 - str r2, [r1, #0xf10] - ldr r1, [r1, #0xf14] - add r1, r1, r1, lsl #1 - add r0, r0, r1 - ldrb r5, [r3, r0] -_02203474: - mov r4, #0 - mov r7, #-0x80000000 - ldr r6, _022034F8 ; =0x0221B780 - b _022034E8 -_02203484: - ldr r1, [r6, #0xf0c] - mov r2, r1 - clz r2, r2 - cmp r2, #0x20 - beq _022034F0 - mvn r0, r7, lsr r2 - and r0, r1, r0 - str r0, [r6, #0xf0c] - rsb r0, r2, #0x1f - ldr r1, [r6, #0xf08] - ldr r2, [r6, #0xc] - and r0, r0, #0xff - bl DWC_SendUnreliable - ldr r0, [r6, #0xf0c] - cmp r0, #0 - bne _022034E4 - ldr r0, _022034F8 ; =0x0221B780 - mov r1, #0 - ldr r2, [r0, #0xf00] - add r2, r2, #1 - str r2, [r0, #0xf00] - str r1, [r0, #0xf08] - str r1, [r0, #0xf0c] - b _022034F0 -_022034E4: - add r4, r4, #1 -_022034E8: - cmp r4, r5 - blt _02203484 -_022034F0: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_022034F8: .word Unk_ov4_0221B780 -_022034FC: .word Unk_ov4_0221DBD8 -_02203500: .word Unk_ov4_02215D12 - arm_func_end ov4_022033F8 - - .rodata - - - .global Unk_ov4_02215D08 -Unk_ov4_02215D08: ; 0x02215D08 - .short 0x8, 0x8 - .byte 0x2, 0x4, 0x3, 0x4, 0x4, 0x4 - - .global Unk_ov4_02215D12 -Unk_ov4_02215D12: ; 0x02215D12 - .byte 0x1, 0x0, 0x0, 0x1, 0x1, 0x0 - .byte 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2 - .short 0x3 - - - .data - - - .global Unk_ov4_0221A0E8 -Unk_ov4_0221A0E8: ; 0x0221A0E8 - .word 0x1 - - - - .bss - - - .global Unk_ov4_0221B780 -Unk_ov4_0221B780: ; 0x0221B780 - .space 0x4 - - .global Unk_ov4_0221B784 -Unk_ov4_0221B784: ; 0x0221B784 - .space 0x4 - - .global Unk_ov4_0221B788 -Unk_ov4_0221B788: ; 0x0221B788 - .space 0x4 - - .global Unk_ov4_0221B78C -Unk_ov4_0221B78C: ; 0x0221B78C - .space 0x4 - - .global Unk_ov4_0221B790 -Unk_ov4_0221B790: ; 0x0221B790 - .space 0x4 - - .global Unk_ov4_0221B794 -Unk_ov4_0221B794: ; 0x0221B794 - .space 0x4 - - .global Unk_ov4_0221B798 -Unk_ov4_0221B798: ; 0x0221B798 - .space 0x4 - - .global Unk_ov4_0221B79C -Unk_ov4_0221B79C: ; 0x0221B79C - .space 0x4 - - .global Unk_ov4_0221B7A0 -Unk_ov4_0221B7A0: ; 0x0221B7A0 - .space 0x4 - - .global Unk_ov4_0221B7A4 -Unk_ov4_0221B7A4: ; 0x0221B7A4 - .space 0x4 - - .global Unk_ov4_0221B7A8 -Unk_ov4_0221B7A8: ; 0x0221B7A8 - .space 0x4 - - .global Unk_ov4_0221B7AC -Unk_ov4_0221B7AC: ; 0x0221B7AC - .space 0xC - - .global Unk_ov4_0221B7B8 -Unk_ov4_0221B7B8: ; 0x0221B7B8 - .space 0x1BC - - .global Unk_ov4_0221B974 -Unk_ov4_0221B974: ; 0x0221B974 - .space 0x44C - - .global Unk_ov4_0221BDC0 -Unk_ov4_0221BDC0: ; 0x0221BDC0 - .space 0x8D8 - diff --git a/subprojects/libVCT/asm/decoder.s b/subprojects/libVCT/asm/decoder.s deleted file mode 100644 index bafc90c72b..0000000000 --- a/subprojects/libVCT/asm/decoder.s +++ /dev/null @@ -1,241 +0,0 @@ - .include "macros/function.inc" - .include "include/decoder.inc" - - - - .text - - - arm_func_start ov4_02203504 -ov4_02203504: ; 0x02203504 - stmfd sp!, {r3, lr} - bl OS_DisableInterrupts - mov r3, #0 - ldr r1, _0220353C ; =0x0221C698 - mov r2, r3 - str r3, [r1, #4] - str r3, [r1, #0] - ldr r1, _02203540 ; =0x0221C6A0 -_02203524: - str r2, [r1, r3, lsl #2] - add r3, r3, #1 - cmp r3, #3 - blt _02203524 - bl OS_RestoreInterrupts - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0220353C: .word Unk_ov4_0221C698 -_02203540: .word Unk_ov4_0221C6A0 - arm_func_end ov4_02203504 - - arm_func_start ov4_02203544 -ov4_02203544: ; 0x02203544 - stmfd sp!, {r4, r5, r6, lr} - mov r6, r0 - bl OS_DisableInterrupts - mov r4, r0 - mov r0, r6 - bl ov4_022036B4 - movs r5, r0 - beq _02203584 -_02203564: - mov r0, r5 - bl ov4_02203704 - mov r0, r5 - bl ov4_0220523C - mov r0, r6 - bl ov4_022036B4 - movs r5, r0 - bne _02203564 -_02203584: - ldr r1, _0220359C ; =0x0221C6A0 - mov r2, #0 - mov r0, r4 - str r2, [r1, r6, lsl #2] - bl OS_RestoreInterrupts - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_0220359C: .word Unk_ov4_0221C6A0 - arm_func_end ov4_02203544 - - arm_func_start ov4_022035A0 -ov4_022035A0: ; 0x022035A0 - stmfd sp!, {r3, r4, r5, lr} - bl OS_DisableInterrupts - ldr r1, _02203604 ; =0x0221C698 - mov r4, r0 - ldr r5, [r1, #0] - cmp r5, #0 - beq _022035D0 -_022035BC: - mov r0, r5 - ldr r5, [r5, #8] - bl ov4_0220523C - cmp r5, #0 - bne _022035BC -_022035D0: - ldr r0, _02203604 ; =0x0221C698 - mov r2, #0 - str r2, [r0, #0] - str r2, [r0, #4] - ldr r0, _02203608 ; =0x0221C6A0 - mov r1, r2 -_022035E8: - str r1, [r0, r2, lsl #2] - add r2, r2, #1 - cmp r2, #3 - blt _022035E8 - mov r0, r4 - bl OS_RestoreInterrupts - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02203604: .word Unk_ov4_0221C698 -_02203608: .word Unk_ov4_0221C6A0 - arm_func_end ov4_022035A0 - - arm_func_start ov4_0220360C -ov4_0220360C: ; 0x0220360C - stmfd sp!, {r4, lr} - mov r4, r0 - bl OS_DisableInterrupts - ldr r1, _0220368C ; =0x0221C698 - ldr r2, [r1, #0] - cmp r2, #0 - bne _02203648 - str r4, [r1, #0] - mov r3, #0 - str r3, [r4, #4] - ldr r2, [r1, #0] - str r3, [r2, #8] - ldr r2, [r1, #0] - str r2, [r1, #4] - b _02203664 -_02203648: - ldr r3, [r1, #4] - mov r2, #0 - str r3, [r4, #4] - str r2, [r4, #8] - ldr r2, [r1, #4] - str r4, [r2, #8] - str r4, [r1, #4] -_02203664: - ldrb r2, [r4, #0x11] - ldr r3, _02203690 ; =0x0221C6A0 - ldr r1, [r3, r2, lsl #2] - add r1, r1, #1 - str r1, [r3, r2, lsl #2] - bl OS_RestoreInterrupts - ldrb r1, [r4, #0x11] - ldr r0, _02203690 ; =0x0221C6A0 - ldr r0, [r0, r1, lsl #2] - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0220368C: .word Unk_ov4_0221C698 -_02203690: .word Unk_ov4_0221C6A0 - arm_func_end ov4_0220360C - - arm_func_start ov4_02203694 -ov4_02203694: ; 0x02203694 - ldr r0, _022036A0 ; =0x0221C698 - ldr r0, [r0, #0] - bx lr - ; .align 2, 0 -_022036A0: .word Unk_ov4_0221C698 - arm_func_end ov4_02203694 - - arm_func_start ov4_022036A4 -ov4_022036A4: ; 0x022036A4 - ldr r1, _022036B0 ; =0x0221C6A0 - ldr r0, [r1, r0, lsl #2] - bx lr - ; .align 2, 0 -_022036B0: .word Unk_ov4_0221C6A0 - arm_func_end ov4_022036A4 - - arm_func_start ov4_022036B4 -ov4_022036B4: ; 0x022036B4 - stmfd sp!, {r3, r4, r5, lr} - ldr r1, _02203700 ; =0x0221C698 - mov r5, r0 - ldr r4, [r1, #0] - bl OS_DisableInterrupts - cmp r4, #0 - beq _022036F4 -_022036D0: - ldrb r1, [r4, #0x11] - cmp r1, r5 - bne _022036E8 - bl OS_RestoreInterrupts - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} -_022036E8: - ldr r4, [r4, #8] - cmp r4, #0 - bne _022036D0 -_022036F4: - bl OS_RestoreInterrupts - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02203700: .word Unk_ov4_0221C698 - arm_func_end ov4_022036B4 - - arm_func_start ov4_02203704 -ov4_02203704: ; 0x02203704 - stmfd sp!, {r4, lr} - mov r4, r0 - bl OS_DisableInterrupts - ldr r2, [r4, #4] - cmp r2, #0 - ldrne r1, [r4, #8] - strne r1, [r2, #8] - bne _0220373C - ldr r2, [r4, #8] - ldr r1, _02203790 ; =0x0221C698 - cmp r2, #0 - str r2, [r1, #0] - movne r1, #0 - strne r1, [r2, #4] -_0220373C: - ldr r2, [r4, #8] - cmp r2, #0 - ldrne r1, [r4, #4] - strne r1, [r2, #4] - bne _02203768 - ldr r2, [r4, #4] - ldr r1, _02203790 ; =0x0221C698 - cmp r2, #0 - str r2, [r1, #4] - movne r1, #0 - strne r1, [r2, #8] -_02203768: - ldrb r2, [r4, #0x11] - ldr r3, _02203794 ; =0x0221C6A0 - ldr r1, [r3, r2, lsl #2] - sub r1, r1, #1 - str r1, [r3, r2, lsl #2] - bl OS_RestoreInterrupts - ldrb r1, [r4, #0x11] - ldr r0, _02203794 ; =0x0221C6A0 - ldr r0, [r0, r1, lsl #2] - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02203790: .word Unk_ov4_0221C698 -_02203794: .word Unk_ov4_0221C6A0 - arm_func_end ov4_02203704 - - .bss - - - .global Unk_ov4_0221C698 -Unk_ov4_0221C698: ; 0x0221C698 - .space 0x4 - - .global Unk_ov4_0221C69C -Unk_ov4_0221C69C: ; 0x0221C69C - .space 0x4 - - .global Unk_ov4_0221C6A0 -Unk_ov4_0221C6A0: ; 0x0221C6A0 - .space 0xC - diff --git a/subprojects/libVCT/asm/fir.s b/subprojects/libVCT/asm/fir.s deleted file mode 100644 index de42aaced4..0000000000 --- a/subprojects/libVCT/asm/fir.s +++ /dev/null @@ -1,333 +0,0 @@ - .include "macros/function.inc" - .include "include/fir.inc" - - - - .text - - - arm_func_start ov4_022054E4 -ov4_022054E4: ; 0x022054E4 - stmfd sp!, {r4, r5, r6, r7, r8, lr} - ldrsh r2, [r0] - ldr r3, _022055BC ; =0x0221C748 - ldr r5, _022055C0 ; =0x00000E9F - ldr r4, [r3, #4] - smulbb r7, r2, r5 - ldr r2, [r3, #0x10] - ldr r6, _022055C4 ; =0x00000D3E - add r4, r7, r4 - mla r4, r2, r6, r4 - mov r4, r4, asr #0xc - mul lr, r4, r4 - mov r1, r1, lsr #1 - str r4, [r3, #0x10] - rsb r2, r7, #0 - str r2, [r3, #4] - cmp r1, #1 - mov ip, lr, asr #0x1f - mov r3, #1 - bls _0220557C -_02205534: - mov r7, r3, lsl #1 - ldrsh r8, [r0, r7] - add r7, r0, r3, lsl #1 - add r3, r3, #1 - smulbb r8, r8, r5 - add r2, r8, r2 - mla r2, r4, r6, r2 - strh r4, [r7, #-2] - mov r4, r2, asr #0xc - mul r2, r4, r4 - adds lr, lr, r2 - adc ip, ip, r2, asr #31 - rsb r2, r8, #0 - cmp r3, r1 - blo _02205534 - ldr r3, _022055BC ; =0x0221C748 - str r2, [r3, #4] - str r4, [r3, #0x10] -_0220557C: - add r0, r0, r1, lsl #1 - strh r4, [r0, #-2] - ldr r2, _022055C8 ; =0x04000280 - mov r0, #1 - strh r0, [r2] - str lr, [r2, #0x10] - str ip, [r2, #0x14] - str r1, [r2, #0x18] - mov r0, #0 - str r0, [r2, #0x1c] -_022055A4: - ldrh r0, [r2] - tst r0, #0x8000 - bne _022055A4 - ldr r0, _022055CC ; =0x040002A0 - ldr r0, [r0, #0] - ldmia sp!, {r4, r5, r6, r7, r8, pc} - ; .align 2, 0 -_022055BC: .word Unk_ov4_0221C748 -_022055C0: .word 0x00000E9F -_022055C4: .word 0x00000D3E -_022055C8: .word 0x04000280 -_022055CC: .word 0x040002A0 - arm_func_end ov4_022054E4 - - arm_func_start ov4_022055D0 -ov4_022055D0: ; 0x022055D0 - stmfd sp!, {r3, lr} - ldr r0, _02205634 ; =0x0221C748 - mov r2, #0 - ldr r1, _02205638 ; =0x0000019D - str r2, [r0, #0xc] - str r1, [r0, #8] - ldr ip, _0220563C ; =0x0221A124 - ldr r0, _02205640 ; =0x0221CBCC - mov lr, r2 -_022055F4: - mov r1, r2, lsl #1 - add r2, r2, #1 - strh lr, [r0, r1] - cmp r2, #0x800 - blt _022055F4 - ldr r2, _02205644 ; =0x0221C774 - ldr r0, _02205648 ; =0x0221C75C - mov r3, #0 -_02205614: - mov r1, lr, lsl #1 - ldrsh r1, [ip, r1] - str r3, [r2, lr, lsl #2] - str r1, [r0, lr, lsl #2] - add lr, lr, #1 - cmp lr, #6 - blt _02205614 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02205634: .word Unk_ov4_0221C748 -_02205638: .word 0x0000019D -_0220563C: .word Unk_ov4_0221A124 -_02205640: .word Unk_ov4_0221CBCC -_02205644: .word Unk_ov4_0221C774 -_02205648: .word Unk_ov4_0221C75C - arm_func_end ov4_022055D0 - - arm_func_start ov4_0220564C -ov4_0220564C: ; 0x0220564C - ldr ip, _0220565C ; =MIi_CpuCopyFast - mov r2, r1 - ldr r1, _02205660 ; =0x0221C78C - bx ip - ; .align 2, 0 -_0220565C: .word MIi_CpuCopyFast -_02205660: .word Unk_ov4_0221C78C - arm_func_end ov4_0220564C - - arm_func_start ov4_02205664 -ov4_02205664: ; 0x02205664 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x10 - mov r4, #0 - str r4, [sp, #8] - str r4, [sp, #0xc] - mov r8, r4 - movs r2, r2, lsr #1 - beq _0220578C - ldr lr, _02205868 ; =0x3FFF8000 - ldr ip, _0220586C ; =0x0221C748 -_0220568C: - mov r4, r8, lsl #1 - ldr r7, [ip, #0xc] - ldrsh r6, [r1, r4] - ldr r4, _02205870 ; =0x0221CBCC - mov r5, r7, lsl #1 - strh r6, [r4, r5] - ldr r4, [ip, #8] - str r4, [sp] - mov r5, r4, lsl #1 - ldr r4, _02205870 ; =0x0221CBCC - ldrsh r6, [r4, r5] - str r6, [ip, #0x2c] - ldr sb, [ip, #0x3c] - ldr sl, [ip, #0x24] - ldr r5, [ip, #0x40] - mul sl, sb, sl - ldr r4, [ip, #0x28] - str sb, [sp, #4] - mla r4, r5, r4, sl - mov r5, sb - str r5, [ip, #0x40] - ldr sb, [ip, #0x38] - ldr r5, [ip, #0x20] - mla r5, sb, r5, r4 - str sb, [ip, #0x3c] - ldr sb, [ip, #0x34] - ldr r4, [ip, #0x1c] - mla r5, sb, r4, r5 - str sb, [ip, #0x38] - ldr sb, [ip, #0x30] - ldr r4, [ip, #0x18] - mla r5, sb, r4, r5 - str sb, [ip, #0x34] - ldr r4, [ip, #0x14] - mla r4, r6, r4, r5 - cmp r4, lr - str r6, [ip, #0x30] - movgt r4, lr - bgt _02205730 - cmp r4, #-0x40000000 - movlt r4, #-0x40000000 -_02205730: - add r5, r7, #1 - and r5, r5, lr, lsr #19 - str r5, [ip, #0xc] - ldr r5, [sp] - mov r6, r8, lsl #1 - add r5, r5, #1 - and r5, r5, lr, lsr #19 - str r5, [ip, #8] - mov r4, r4, asr #0xf - strh r4, [r1, r6] - ldrsh r5, [r1, r6] - ldrsh r4, [r0, r6] - add r8, r8, #1 - smulbb r5, r5, r5 - strh r4, [r1, r6] - ldr r4, [sp, #8] - adds r4, r4, r5 - str r4, [sp, #8] - ldr r4, [sp, #0xc] - adc r4, r4, r5, asr #31 - str r4, [sp, #0xc] - cmp r8, r2 - blo _0220568C -_0220578C: - ldr r4, _02205874 ; =0x04000280 - mov r1, #1 - strh r1, [r4] - ldr r1, [sp, #8] - str r1, [r4, #0x10] - ldr r1, [sp, #0xc] - str r1, [r4, #0x14] - str r2, [r4, #0x18] - mov r1, #0 - str r1, [r4, #0x1c] -_022057B4: - ldrh r1, [r4] - tst r1, #0x8000 - bne _022057B4 - ldr r5, _02205878 ; =0x040002A0 - mov r1, #0 - ldr r4, [r5, #0] - strh r1, [r5, #0x10] - str r4, [r5, #0x18] -_022057D4: - ldrh r1, [r5, #0x10] - tst r1, #0x8000 - bne _022057D4 - ldr r1, _0220587C ; =0x040002B4 - ldr r4, [r1, #0] - add r1, r4, r4, lsl #1 - cmp r1, r3, lsl #1 - bhs _02205808 - ldr r0, _0220586C ; =0x0221C748 - mov r1, #0 - add sp, sp, #0x10 - strh r1, [r0] - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_02205808: - cmp r3, r4 - ldrlo r1, _0220586C ; =0x0221C748 - movlo r3, #4 - strloh r3, [r1] - ldr r1, _0220586C ; =0x0221C748 - mov r5, #0 - ldrsh r3, [r1] - cmp r3, #4 - addlt r3, r3, #1 - strlth r3, [r1] - cmp r2, #0 - addls sp, sp, #0x10 - ldmlsia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldr r1, _0220586C ; =0x0221C748 - ldrsh r4, [r1] -_02205844: - mov r3, r5, lsl #1 - ldrsh r1, [r0, r3] - add r5, r5, #1 - cmp r5, r2 - mov r1, r1, asr r4 - strh r1, [r0, r3] - blo _02205844 - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ; .align 2, 0 -_02205868: .word 0x3FFF8000 -_0220586C: .word Unk_ov4_0221C748 -_02205870: .word Unk_ov4_0221CBCC -_02205874: .word 0x04000280 -_02205878: .word 0x040002A0 -_0220587C: .word 0x040002B4 - arm_func_end ov4_02205664 - - arm_func_start ov4_02205880 -ov4_02205880: ; 0x02205880 - stmfd sp!, {r3, lr} - mov ip, r1 - mov r3, r2 - ldr r1, _0220589C ; =0x0221C78C - mov r2, ip - bl ov4_02205664 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0220589C: .word Unk_ov4_0221C78C - arm_func_end ov4_02205880 - - .data - - - .global Unk_ov4_0221A124 -Unk_ov4_0221A124: ; 0x0221A124 - .byte 0xFB, 0xE9, 0x3D, 0x40, 0xBC, 0xC7, 0xD1, 0x2C, 0x2A, 0xD0, 0x7C, 0x3 - .byte 0xF0, 0x8, 0x93, 0xF5 - - - - .bss - - - .global Unk_ov4_0221C748 -Unk_ov4_0221C748: ; 0x0221C748 - .space 0x4 - - .global Unk_ov4_0221C74C -Unk_ov4_0221C74C: ; 0x0221C74C - .space 0x4 - - .global Unk_ov4_0221C750 -Unk_ov4_0221C750: ; 0x0221C750 - .space 0x4 - - .global Unk_ov4_0221C754 -Unk_ov4_0221C754: ; 0x0221C754 - .space 0x4 - - .global Unk_ov4_0221C758 -Unk_ov4_0221C758: ; 0x0221C758 - .space 0x4 - - .global Unk_ov4_0221C75C -Unk_ov4_0221C75C: ; 0x0221C75C - .space 0x18 - - .global Unk_ov4_0221C774 -Unk_ov4_0221C774: ; 0x0221C774 - .space 0x18 - - .global Unk_ov4_0221C78C -Unk_ov4_0221C78C: ; 0x0221C78C - .space 0x440 - - .global Unk_ov4_0221CBCC -Unk_ov4_0221CBCC: ; 0x0221CBCC - .space 0x1000 - diff --git a/subprojects/libVCT/asm/g711.s b/subprojects/libVCT/asm/g711.s deleted file mode 100644 index 67b63400a0..0000000000 --- a/subprojects/libVCT/asm/g711.s +++ /dev/null @@ -1,127 +0,0 @@ - .include "macros/function.inc" - - - - .text - - - arm_func_start ov4_02203798 -ov4_02203798: ; 0x02203798 - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r7, #0 - cmp r2, #0 - ldmlsia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr ip, _0220383C ; =0x00001FDF - ldr r3, _02203840 ; =0x0221A0EC - mov lr, #0xff - mov r4, #0x7f -_022037B8: - mov r5, r7, lsl #1 - ldrsh r5, [r1, r5] - mov fp, r3 - movs sl, r5, asr #2 - movmi r6, r4 - ldr r5, _0220383C ; =0x00001FDF - rsbmi sl, sl, #0 - movpl r6, lr - cmp sl, r5 - movgt sl, ip - mov r5, #0 - add sb, sl, #0x21 -_022037E8: - ldr r8, [fp], #4 - cmp sb, r8 - ble _02203804 - add r5, r5, #1 - cmp r5, #8 - blt _022037E8 - mov r5, #8 -_02203804: - cmp r5, #8 - eorge r5, r6, #0x7f - bge _02203828 - add sb, sl, #0x21 - add r8, r5, #1 - mov r8, sb, asr r8 - and r8, r8, #0xf - orr r5, r8, r5, lsl #4 - eor r5, r5, r6 -_02203828: - strb r5, [r0, r7] - add r7, r7, #1 - cmp r7, r2 - blo _022037B8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_0220383C: .word 0x00001FDF -_02203840: .word Unk_ov4_0221A0EC - arm_func_end ov4_02203798 - - arm_func_start ov4_02203844 -ov4_02203844: ; 0x02203844 - stmfd sp!, {r4, lr} - mov r4, #0 - cmp r2, #0 - ldmlsia sp!, {r4, pc} -_02203854: - ldrb r3, [r0, r4] - mvn lr, r3 - mov r3, lr, lsl #0x1c - mov ip, r3, lsr #0x19 - and r3, lr, #0x70 - add ip, ip, #0x84 - mov r3, r3, asr #4 - mov r3, ip, lsl r3 - tst lr, #0x80 - rsbne ip, r3, #0x84 - subeq ip, r3, #0x84 - mov r3, r4, lsl #1 - add r4, r4, #1 - strh ip, [r1, r3] - cmp r4, r2 - blo _02203854 - ldmia sp!, {r4, pc} - arm_func_end ov4_02203844 - - arm_func_start ov4_02203898 -ov4_02203898: ; 0x02203898 - cmp r2, #0 - mov ip, #0 - bxls lr -_022038A4: - mov r3, ip, lsl #1 - ldrsh r3, [r1, r3] - mov r3, r3, asr #8 - strb r3, [r0, ip] - add ip, ip, #1 - cmp ip, r2 - blo _022038A4 - bx lr - arm_func_end ov4_02203898 - - arm_func_start ov4_022038C4 -ov4_022038C4: ; 0x022038C4 - stmfd sp!, {r3, lr} - cmp r2, #0 - mov lr, #0 - ldmlsia sp!, {r3, pc} -_022038D4: - ldrsb ip, [r0, lr] - mov r3, lr, lsl #1 - add lr, lr, #1 - mov ip, ip, lsl #8 - strh ip, [r1, r3] - cmp lr, r2 - blo _022038D4 - ldmia sp!, {r3, pc} - arm_func_end ov4_022038C4 - - .data - - - .global Unk_ov4_0221A0EC -Unk_ov4_0221A0EC: ; 0x0221A0EC - .word 0x3F - .word 0x7F, 0xFF, 0x1FF, 0x3FF - .word 0x7FF, 0xFFF, 0x1FFF - diff --git a/subprojects/libVCT/asm/incbin/ssp.bin b/subprojects/libVCT/asm/incbin/ssp.bin deleted file mode 100644 index ee4fe6ae29..0000000000 Binary files a/subprojects/libVCT/asm/incbin/ssp.bin and /dev/null differ diff --git a/subprojects/libVCT/asm/include/adpcm.inc b/subprojects/libVCT/asm/include/adpcm.inc deleted file mode 100644 index aeffa64ccc..0000000000 --- a/subprojects/libVCT/asm/include/adpcm.inc +++ /dev/null @@ -1,6 +0,0 @@ -.public ov4_02201504 -.public ov4_02201658 -.public ov4_022017E4 -.public ov4_02201C78 -.public ov4_02202184 -.public ov4_0220239C diff --git a/subprojects/libVCT/asm/include/audio.inc b/subprojects/libVCT/asm/include/audio.inc deleted file mode 100644 index ebaf569a96..0000000000 --- a/subprojects/libVCT/asm/include/audio.inc +++ /dev/null @@ -1,46 +0,0 @@ -.public OS_GetTick -.public OS_GetTickLo -.public OS_DisableInterrupts -.public OS_RestoreInterrupts -.public MIi_CpuClearFast -.public MIi_CpuCopyFast -.public MI_CpuCopy8 -.public MATH_CountPopulation -.public _ull_div -.public DWC_SendUnreliable -.public ov4_022025CC -.public ov4_02202638 -.public ov4_02202AA4 -.public ov4_02202EC0 -.public ov4_02203504 -.public ov4_02203544 -.public ov4_022035A0 -.public ov4_0220360C -.public ov4_02203694 -.public ov4_022036A4 -.public ov4_022036B4 -.public ov4_02203704 -.public ov4_02203798 -.public ov4_02203844 -.public ov4_02203898 -.public ov4_022038C4 -.public ov4_022038F4 -.public ov4_02203930 -.public ov4_022039A0 -.public ov4_02203A20 -.public ov4_02203B20 -.public ov4_02203BC4 -.public ov4_02203BD4 -.public ov4_02203C60 -.public ov4_02203C8C -.public ov4_02203DB0 -.public ov4_02205208 -.public ov4_0220523C -.public ov4_02205270 -.public ov4_022052DC -.public ov4_022054BC -.public ov4_022054E4 -.public ov4_022055D0 -.public ov4_0220564C -.public ov4_02205880 -.public ov4_022058A0 diff --git a/subprojects/libVCT/asm/include/decoder.inc b/subprojects/libVCT/asm/include/decoder.inc deleted file mode 100644 index a8d4fc87c6..0000000000 --- a/subprojects/libVCT/asm/include/decoder.inc +++ /dev/null @@ -1,5 +0,0 @@ -.public OS_DisableInterrupts -.public OS_RestoreInterrupts -.public ov4_022036B4 -.public ov4_02203704 -.public ov4_0220523C diff --git a/subprojects/libVCT/asm/include/fir.inc b/subprojects/libVCT/asm/include/fir.inc deleted file mode 100644 index 25edf9f2a6..0000000000 --- a/subprojects/libVCT/asm/include/fir.inc +++ /dev/null @@ -1,2 +0,0 @@ -.public MIi_CpuCopyFast -.public ov4_02205664 diff --git a/subprojects/libVCT/asm/include/queue.inc b/subprojects/libVCT/asm/include/queue.inc deleted file mode 100644 index 843266facd..0000000000 --- a/subprojects/libVCT/asm/include/queue.inc +++ /dev/null @@ -1,3 +0,0 @@ -.public OS_DisableInterrupts -.public OS_RestoreInterrupts -.public ov4_0220523C diff --git a/subprojects/libVCT/asm/include/ssp.inc b/subprojects/libVCT/asm/include/ssp.inc deleted file mode 100644 index 7f8140bb2a..0000000000 --- a/subprojects/libVCT/asm/include/ssp.inc +++ /dev/null @@ -1,25 +0,0 @@ -.public OS_GetTick -.public MI_CpuFill8 -.public DWC_SendReliable -.public VCT_CreateSession -.public VCT_DeleteSession -.public ov4_02204244 -.public ov4_02204318 -.public ov4_02204700 -.public ov4_0220476C -.public ov4_022047B0 -.public ov4_022047F4 -.public ov4_0220481C -.public ov4_022048DC -.public ov4_0220491C -.public ov4_02204964 -.public ov4_022049A4 -.public ov4_02204A50 -.public ov4_02204A98 -.public ov4_02204B70 -.public ov4_02204BBC -.public ov4_02204C44 -.public ov4_02204CC4 -.public ov4_02204E00 -.public ov4_02204F90 -.public ov4_02205008 diff --git a/subprojects/libVCT/asm/include/stream_vct.inc b/subprojects/libVCT/asm/include/stream_vct.inc deleted file mode 100644 index 404d5dc7d0..0000000000 --- a/subprojects/libVCT/asm/include/stream_vct.inc +++ /dev/null @@ -1,6 +0,0 @@ -.public OS_GetTick -.public MI_CpuFill8 -.public ov4_02203B5C -.public ov4_02203CB8 -.public ov4_02203CD8 -.public ov4_0220523C diff --git a/subprojects/libVCT/asm/include/udp_buffer.inc b/subprojects/libVCT/asm/include/udp_buffer.inc deleted file mode 100644 index 2e4c8abbcd..0000000000 --- a/subprojects/libVCT/asm/include/udp_buffer.inc +++ /dev/null @@ -1,3 +0,0 @@ -.public OS_DisableInterrupts -.public OS_RestoreInterrupts -.public MIi_CpuClearFast diff --git a/subprojects/libVCT/asm/include/vad.inc b/subprojects/libVCT/asm/include/vad.inc deleted file mode 100644 index 7d768c681f..0000000000 --- a/subprojects/libVCT/asm/include/vad.inc +++ /dev/null @@ -1,2 +0,0 @@ -.public MI_CpuCopy8 -.public ov4_02205270 diff --git a/subprojects/libVCT/asm/include/vct_main.inc b/subprojects/libVCT/asm/include/vct_main.inc deleted file mode 100644 index 9fcbff8e23..0000000000 --- a/subprojects/libVCT/asm/include/vct_main.inc +++ /dev/null @@ -1,15 +0,0 @@ -.public OSi_ReferSymbol -.public OS_GetTick -.public MI_CpuFill8 -.public ov4_02202698 -.public ov4_02202794 -.public ov4_0220313C -.public ov4_02203328 -.public ov4_022033F8 -.public ov4_022044AC -.public ov4_022045C0 -.public ov4_022045D8 -.public ov4_02204684 -.public ov4_02205128 -.public ov4_022051F0 -.public ov4_02205BA0 diff --git a/subprojects/libVCT/asm/macros/function.inc b/subprojects/libVCT/asm/macros/function.inc deleted file mode 100644 index f71cc4ccae..0000000000 --- a/subprojects/libVCT/asm/macros/function.inc +++ /dev/null @@ -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 \ No newline at end of file diff --git a/subprojects/libVCT/asm/mixer.s b/subprojects/libVCT/asm/mixer.s deleted file mode 100644 index e5c3d4f441..0000000000 --- a/subprojects/libVCT/asm/mixer.s +++ /dev/null @@ -1,73 +0,0 @@ - .include "macros/function.inc" - - - - .text - - - arm_func_start ov4_022058A0 -ov4_022058A0: ; 0x022058A0 - stmfd sp!, {r4, r5, r6, lr} - mov r4, #0 - movs lr, r3, lsr #1 - ldmeqia sp!, {r4, r5, r6, pc} - mov r3, #0x8000 - rsb r3, r3, #0 - mov ip, r3, lsr #0x11 -_022058BC: - mov r5, r4, lsl #1 - ldrsh r6, [r0, r5] - ldrsh r5, [r1, r5] - add r6, r6, r5 - cmp r6, r3, lsr #17 - movgt r6, ip - bgt _022058E0 - cmp r6, r3 - movlt r6, r3 -_022058E0: - mov r5, r4, lsl #1 - strh r6, [r2, r5] - add r6, r0, r4, lsl #1 - add r5, r1, r4, lsl #1 - ldrsh r6, [r6, #2] - ldrsh r5, [r5, #2] - add r6, r6, r5 - cmp r6, r3, lsr #17 - movgt r6, ip - bgt _02205910 - cmp r6, r3 - movlt r6, r3 -_02205910: - add r5, r2, r4, lsl #1 - strh r6, [r5, #2] - add r6, r0, r4, lsl #1 - add r5, r1, r4, lsl #1 - ldrsh r6, [r6, #4] - ldrsh r5, [r5, #4] - add r6, r6, r5 - cmp r6, r3, lsr #17 - movgt r6, ip - bgt _02205940 - cmp r6, r3 - movlt r6, r3 -_02205940: - add r5, r2, r4, lsl #1 - strh r6, [r5, #4] - add r6, r0, r4, lsl #1 - add r5, r1, r4, lsl #1 - ldrsh r6, [r6, #6] - ldrsh r5, [r5, #6] - add r6, r6, r5 - cmp r6, r3, lsr #17 - movgt r6, ip - bgt _02205970 - cmp r6, r3 - movlt r6, r3 -_02205970: - add r5, r2, r4, lsl #1 - add r4, r4, #4 - strh r6, [r5, #6] - cmp r4, lr - blo _022058BC - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ov4_022058A0 \ No newline at end of file diff --git a/subprojects/libVCT/asm/queue.s b/subprojects/libVCT/asm/queue.s deleted file mode 100644 index 0d2cffb783..0000000000 --- a/subprojects/libVCT/asm/queue.s +++ /dev/null @@ -1,255 +0,0 @@ - .include "macros/function.inc" - .include "include/queue.inc" - - - - .text - - - arm_func_start ov4_022038F4 -ov4_022038F4: ; 0x022038F4 - stmfd sp!, {r4, lr} - mov r4, r0 - bl OS_DisableInterrupts - ldr r3, _02203924 ; =0x0221C6C4 - mov ip, #0 - ldr r1, _02203928 ; =0x0221C6B8 - ldr r2, _0220392C ; =0x0221C6AC - str ip, [r3, r4, lsl #2] - str ip, [r2, r4, lsl #2] - str ip, [r1, r4, lsl #2] - bl OS_RestoreInterrupts - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02203924: .word Unk_ov4_0221C6C4 -_02203928: .word Unk_ov4_0221C6B8 -_0220392C: .word Unk_ov4_0221C6AC - arm_func_end ov4_022038F4 - - arm_func_start ov4_02203930 -ov4_02203930: ; 0x02203930 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r5, r0 - bl OS_DisableInterrupts - ldr r7, _02203994 ; =0x0221C6AC - mov r4, r0 - ldr r0, [r7, r5, lsl #2] - cmp r0, #0 - beq _02203974 - mov r6, #0 -_02203954: - ldr r1, [r0, #8] - str r1, [r7, r5, lsl #2] - cmp r1, #0 - strne r6, [r1, #4] - bl ov4_0220523C - ldr r0, [r7, r5, lsl #2] - cmp r0, #0 - bne _02203954 -_02203974: - ldr r2, _02203998 ; =0x0221C6C4 - mov r3, #0 - ldr r1, _0220399C ; =0x0221C6B8 - mov r0, r4 - str r3, [r2, r5, lsl #2] - str r3, [r1, r5, lsl #2] - bl OS_RestoreInterrupts - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02203994: .word Unk_ov4_0221C6AC -_02203998: .word Unk_ov4_0221C6C4 -_0220399C: .word Unk_ov4_0221C6B8 - arm_func_end ov4_02203930 - - arm_func_start ov4_022039A0 -ov4_022039A0: ; 0x022039A0 - stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - bl OS_DisableInterrupts - mov r6, #0 - mov r5, r0 - mov sl, r6 - ldr r4, _02203A14 ; =0x0221C6AC - mov sb, r6 - ldr r8, _02203A18 ; =0x0221C6C4 - ldr r7, _02203A1C ; =0x0221C6B8 - b _02203A00 -_022039C8: - ldr r0, [r4, r6, lsl #2] - cmp r0, #0 - beq _022039F4 -_022039D4: - ldr r1, [r0, #8] - str r1, [r4, r6, lsl #2] - cmp r1, #0 - strne sl, [r1, #4] - bl ov4_0220523C - ldr r0, [r4, r6, lsl #2] - cmp r0, #0 - bne _022039D4 -_022039F4: - str sb, [r8, r6, lsl #2] - str sb, [r7, r6, lsl #2] - add r6, r6, #1 -_02203A00: - cmp r6, #3 - blt _022039C8 - mov r0, r5 - bl OS_RestoreInterrupts - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ; .align 2, 0 -_02203A14: .word Unk_ov4_0221C6AC -_02203A18: .word Unk_ov4_0221C6C4 -_02203A1C: .word Unk_ov4_0221C6B8 - arm_func_end ov4_022039A0 - - arm_func_start ov4_02203A20 -ov4_02203A20: ; 0x02203A20 - stmfd sp!, {r3, r4, r5, lr} - movs r5, r0 - mov r4, r1 - mvneq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r4, #3 - mvnhs r0, #0 - ldmhsia sp!, {r3, r4, r5, pc} - bl OS_DisableInterrupts - ldr ip, _02203B14 ; =0x0221C6AC - ldr r1, [ip, r4, lsl #2] - cmp r1, #0 - bne _02203A78 - str r5, [ip, r4, lsl #2] - mov r3, #0 - str r3, [r5, #4] - ldr r2, [ip, r4, lsl #2] - ldr r1, _02203B18 ; =0x0221C6C4 - str r3, [r2, #8] - ldr r2, [ip, r4, lsl #2] - str r2, [r1, r4, lsl #2] - b _02203AF4 -_02203A78: - ldr r1, _02203B18 ; =0x0221C6C4 - ldr r3, [r1, r4, lsl #2] - cmp r3, #0 - beq _02203AD4 - ldr r2, [r5, #0x18] -_02203A8C: - ldr r1, [r3, #0x18] - cmp r1, r2 - bhs _02203AC8 - str r3, [r5, #4] - ldr r1, [r3, #8] - ldr r2, _02203B18 ; =0x0221C6C4 - str r1, [r5, #8] - str r5, [r3, #8] - ldr r1, [r5, #8] - cmp r1, #0 - strne r5, [r1, #4] - ldr r1, [r2, r4, lsl #2] - cmp r3, r1 - streq r5, [r2, r4, lsl #2] - b _02203AF4 -_02203AC8: - ldr r3, [r3, #4] - cmp r3, #0 - bne _02203A8C -_02203AD4: - mov r1, #0 - ldr r2, _02203B14 ; =0x0221C6AC - str r1, [r5, #4] - ldr r1, [r2, r4, lsl #2] - str r1, [r5, #8] - ldr r1, [r2, r4, lsl #2] - str r5, [r1, #4] - str r5, [r2, r4, lsl #2] -_02203AF4: - ldr r2, _02203B1C ; =0x0221C6B8 - ldr r1, [r2, r4, lsl #2] - add r1, r1, #1 - str r1, [r2, r4, lsl #2] - bl OS_RestoreInterrupts - ldr r0, _02203B1C ; =0x0221C6B8 - ldr r0, [r0, r4, lsl #2] - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02203B14: .word Unk_ov4_0221C6AC -_02203B18: .word Unk_ov4_0221C6C4 -_02203B1C: .word Unk_ov4_0221C6B8 - arm_func_end ov4_02203A20 - - arm_func_start ov4_02203B20 -ov4_02203B20: ; 0x02203B20 - stmfd sp!, {r4, lr} - mov r4, r0 - bl OS_DisableInterrupts - ldr r1, _02203B58 ; =0x0221C6AC - ldr r1, [r1, r4, lsl #2] - cmp r1, #0 - beq _02203B4C - bl OS_RestoreInterrupts - ldr r0, _02203B58 ; =0x0221C6AC - ldr r0, [r0, r4, lsl #2] - ldmia sp!, {r4, pc} -_02203B4C: - bl OS_RestoreInterrupts - mov r0, #0 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02203B58: .word Unk_ov4_0221C6AC - arm_func_end ov4_02203B20 - - arm_func_start ov4_02203B5C -ov4_02203B5C: ; 0x02203B5C - stmfd sp!, {r4, lr} - mov r4, r0 - bl OS_DisableInterrupts - ldr ip, _02203BB8 ; =0x0221C6AC - ldr r1, [ip, r4, lsl #2] - cmp r1, #0 - beq _02203BA8 - ldr r2, _02203BBC ; =0x0221C6B8 - ldr r3, [r1, #8] - ldr r1, [r2, r4, lsl #2] - str r3, [ip, r4, lsl #2] - sub r1, r1, #1 - str r1, [r2, r4, lsl #2] - cmp r3, #0 - movne r1, #0 - strne r1, [r3, #4] - ldreq r1, _02203BC0 ; =0x0221C6C4 - moveq r2, #0 - streq r2, [r1, r4, lsl #2] -_02203BA8: - bl OS_RestoreInterrupts - ldr r0, _02203BBC ; =0x0221C6B8 - ldr r0, [r0, r4, lsl #2] - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02203BB8: .word Unk_ov4_0221C6AC -_02203BBC: .word Unk_ov4_0221C6B8 -_02203BC0: .word Unk_ov4_0221C6C4 - arm_func_end ov4_02203B5C - - arm_func_start ov4_02203BC4 -ov4_02203BC4: ; 0x02203BC4 - ldr r1, _02203BD0 ; =0x0221C6B8 - ldr r0, [r1, r0, lsl #2] - bx lr - ; .align 2, 0 -_02203BD0: .word Unk_ov4_0221C6B8 - arm_func_end ov4_02203BC4 - - .bss - - - .global Unk_ov4_0221C6AC -Unk_ov4_0221C6AC: ; 0x0221C6AC - .space 0xC - - .global Unk_ov4_0221C6B8 -Unk_ov4_0221C6B8: ; 0x0221C6B8 - .space 0xC - - .global Unk_ov4_0221C6C4 -Unk_ov4_0221C6C4: ; 0x0221C6C4 - .space 0xC - diff --git a/subprojects/libVCT/asm/ssp.s b/subprojects/libVCT/asm/ssp.s deleted file mode 100644 index 40f90223b4..0000000000 --- a/subprojects/libVCT/asm/ssp.s +++ /dev/null @@ -1,1290 +0,0 @@ - .include "macros/function.inc" - .include "include/ssp.inc" - - .extern Unk_ov4_0221DBD8 - - .text - - - arm_func_start VCT_CreateSession -VCT_CreateSession: ; 0x02204160 - stmfd sp!, {r3, lr} - ldr r1, _02204184 ; =0x0221DBD8 - ldr r1, [r1, #0x10] - cmp r1, #0 - cmpne r1, #2 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - bl ov4_02204700 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02204184: .word Unk_ov4_0221DBD8 - arm_func_end VCT_CreateSession - - arm_func_start VCT_DeleteSession -VCT_DeleteSession: ; 0x02204188 - stmfd sp!, {r3, lr} - ldr r2, _02204238 ; =0x0221C6D0 - mov ip, #0 - cmp r0, #0 - ldr lr, [r2, #0x14] - moveq r0, ip - ldmeqia sp!, {r3, pc} - ldr r1, _0220423C ; =0x0221DBD8 - ldr r1, [r1, #0x10] - cmp r1, #2 - bne _022041C8 - ldr r1, _02204240 ; =0x0221C70C - cmp r0, r1 - streq ip, [r2, #0x3c] - mov r0, #1 - ldmia sp!, {r3, pc} -_022041C8: - cmp lr, #0 - beq _02204230 -_022041D0: - cmp lr, r0 - bne _02204220 - mov r3, #0 - str r3, [r0, #0] - cmp ip, #0 - ldrne r1, [r0, #0x14] - strne r1, [ip, #0x14] - bne _02204208 - ldr r2, [lr, #0x14] - cmp r2, #0 - ldrne r1, _02204238 ; =0x0221C6D0 - strne r2, [r1, #0x14] - ldreq r1, _02204238 ; =0x0221C6D0 - streq r3, [r1, #0x14] -_02204208: - ldr r1, _02204238 ; =0x0221C6D0 - ldr r2, [r1, #0x10] - str r2, [r0, #0x14] - str r0, [r1, #0x10] - mov r0, #1 - ldmia sp!, {r3, pc} -_02204220: - mov ip, lr - ldr lr, [lr, #0x14] - cmp lr, #0 - bne _022041D0 -_02204230: - mov r0, #0 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02204238: .word Unk_ov4_0221C6D0 -_0220423C: .word Unk_ov4_0221DBD8 -_02204240: .word 0x0221C70C - arm_func_end VCT_DeleteSession - - arm_func_start ov4_02204244 -ov4_02204244: ; 0x02204244 - stmfd sp!, {r4, r5, r6, lr} - movs r5, r0 - mov r4, r1 - mov r6, r2 - mvneq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - cmp r3, #0x10 - mvnlo r0, #0 - ldmloia sp!, {r4, r5, r6, pc} - ldr r1, _022042F0 ; =0x0221DBD8 - ldr r1, [r1, #0xc] - cmp r1, #1 - mvneq r0, #2 - ldmeqia sp!, {r4, r5, r6, pc} - cmp r4, #0 - blt _0220428C - cmp r4, #5 - blt _02204294 -_0220428C: - mvn r0, #2 - ldmia sp!, {r4, r5, r6, pc} -_02204294: - mov r3, #0xff - mov r1, r6 - and r2, r4, #0xff - strb r3, [r6, #4] - bl ov4_02204A50 - mov r0, r5 - mov r1, r6 - bl ov4_02204BBC - cmp r0, #0 - mvneq r0, #2 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r0, _022042F0 ; =0x0221DBD8 - ldr r0, [r0, #0x10] - cmp r0, #1 - cmpeq r4, #0 - bne _022042E8 - mov r0, r5 - bl ov4_02204B70 - cmp r0, #0 - mvneq r0, #2 - ldmeqia sp!, {r4, r5, r6, pc} -_022042E8: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_022042F0: .word Unk_ov4_0221DBD8 - arm_func_end ov4_02204244 - - arm_func_start VCT_Request -VCT_Request: ; 0x022042F4 - stmfd sp!, {r3, lr} - ldr r2, _02204314 ; =0x0221DBD8 - ldr r2, [r2, #0x10] - cmp r2, #2 - mvneq r0, #2 - ldmeqia sp!, {r3, pc} - bl ov4_0220476C - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02204314: .word Unk_ov4_0221DBD8 - arm_func_end VCT_Request - - arm_func_start ov4_02204318 -ov4_02204318: ; 0x02204318 - stmfd sp!, {r4, r5, r6, lr} - movs r5, r0 - mov r6, r1 - mov r4, r2 - mvneq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - cmp r3, #0x10 - mvnlo r0, #0 - ldmloia sp!, {r4, r5, r6, pc} - cmp r6, #0 - blt _0220434C - cmp r6, #6 - blt _02204354 -_0220434C: - mvn r0, #2 - ldmia sp!, {r4, r5, r6, pc} -_02204354: - mov r3, #0 - mov r1, r4 - and r2, r6, #0xff - strb r3, [r4, #4] - bl ov4_02204A50 - cmp r6, #0 - bne _022043B0 - ldr r0, _022043CC ; =0x0221DBD8 - ldr r0, [r0, #0x10] - cmp r0, #1 - ldreq r0, [r5, #0xc] - cmpeq r0, #4 - bne _0220439C - mov r0, r5 - bl ov4_02204B70 - cmp r0, #0 - mvneq r0, #2 - ldmeqia sp!, {r4, r5, r6, pc} -_0220439C: - ldrb r1, [r5, #4] - mov r0, #1 - cmp r1, #0 - movne r0, r0, lsl r1 - str r0, [r5, #8] -_022043B0: - mov r0, r5 - mov r1, r4 - bl ov4_02204BBC - cmp r0, #0 - mvneq r0, #2 - movne r0, #0 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_022043CC: .word Unk_ov4_0221DBD8 - arm_func_end ov4_02204318 - - arm_func_start VCT_Response -VCT_Response: ; 0x022043D0 - stmfd sp!, {r3, lr} - ldr r2, _022043F0 ; =0x0221DBD8 - ldr r2, [r2, #0x10] - cmp r2, #2 - mvneq r0, #2 - ldmeqia sp!, {r3, pc} - bl ov4_022047B0 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022043F0: .word Unk_ov4_0221DBD8 - arm_func_end VCT_Response - - arm_func_start VCT_AddConferenceClient -VCT_AddConferenceClient: ; 0x022043F4 - stmfd sp!, {r4, lr} - ldr r2, _022044A4 ; =0x0221DBD8 - mov r4, r0 - ldr r1, [r2, #0x10] - cmp r1, #3 - mvnne r0, #1 - ldmneia sp!, {r4, pc} - ldr r1, _022044A8 ; =0x0221C6D0 - ldr r1, [r1, #0] - cmp r1, #3 - mvneq r0, #5 - ldmeqia sp!, {r4, pc} - ldrb r1, [r2] - cmp r4, r1 - mvneq r0, #0 - ldmeqia sp!, {r4, pc} - bl ov4_02204C44 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, pc} - mov r0, r4 - bl VCT_CreateSession - movs r2, r0 - mvneq r0, #0 - ldmeqia sp!, {r4, pc} - strb r4, [r2, #4] - mov r0, #1 - strb r4, [r2, #5] - mov r3, #2 - mov r1, r0, lsl r4 - str r3, [r2, #0xc] - ldr r0, _022044A4 ; =0x0221DBD8 - str r1, [r2, #8] - ldr r3, [r0, #8] - ldr ip, [r0, #4] - mov r0, r4 - mov r1, #7 - blx ip - ldr r1, _022044A8 ; =0x0221C6D0 - mov r0, #0 - ldr r2, [r1, #0] - add r2, r2, #1 - str r2, [r1, #0] - ldmia sp!, {r4, pc} - ; .align 2, 0 -_022044A4: .word Unk_ov4_0221DBD8 -_022044A8: .word Unk_ov4_0221C6D0 - arm_func_end VCT_AddConferenceClient - - arm_func_start ov4_022044AC -ov4_022044AC: ; 0x022044AC - stmfd sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4, #0] - cmp r0, #0 - ldrne r1, [r4, #4] - cmpne r1, #0 - beq _022044D0 - cmp r1, #8 - bls _022044D8 -_022044D0: - mov r0, #0 - ldmia sp!, {r4, pc} -_022044D8: - ldr r1, _022045A4 ; =0x0221C6D0 - mov r2, #0x18 - str r0, [r1, #0x10] - ldr r3, [r4, #4] - mov r1, #0 - mul r2, r3, r2 - bl MI_CpuFill8 - ldr r0, _022045A8 ; =0x0221C70C - mov r1, #0 - mov r2, #0x18 - bl MI_CpuFill8 - ldr r0, _022045AC ; =0x0221C6F4 - mov r1, #0 - mov r2, #0x18 - bl MI_CpuFill8 - ldr r3, [r4, #4] - mov ip, #0 - subs r0, r3, #1 - beq _02204558 - ldr r1, _022045A4 ; =0x0221C6D0 - mov lr, ip - mov r0, #0x18 -_02204530: - ldr r2, [r1, #0x10] - add ip, ip, #1 - mla r3, ip, r0, r2 - add r2, r2, lr - str r3, [r2, #0x14] - ldr r3, [r4, #4] - add lr, lr, #0x18 - sub r2, r3, #1 - cmp ip, r2 - blo _02204530 -_02204558: - ldr r1, _022045A4 ; =0x0221C6D0 - mov r0, #0x18 - ldr r2, [r1, #0x10] - mov r4, #0 - mla r0, r3, r0, r2 - str r4, [r0, #-4] - str r4, [r1, #0x14] - str r4, [r1, #4] - ldr r0, _022045B0 ; =0x0221DBD8 - str r4, [r1, #0] - ldr r3, _022045B4 ; =OS_GetTick - str r4, [r0, #0x14] - ldr r2, _022045B8 ; =0x5D588B65 - str r3, [r1, #0x18] - ldr r0, _022045BC ; =0x00269EC3 - str r2, [r1, #0x1c] - str r0, [r1, #0x20] - mov r0, #1 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_022045A4: .word Unk_ov4_0221C6D0 -_022045A8: .word 0x0221C70C -_022045AC: .word 0x0221C6F4 -_022045B0: .word Unk_ov4_0221DBD8 -_022045B4: .word OS_GetTick -_022045B8: .word 0x5D588B65 -_022045BC: .word 0x00269EC3 - arm_func_end ov4_022044AC - - arm_func_start ov4_022045C0 -ov4_022045C0: ; 0x022045C0 - ldr r0, _022045D4 ; =0x0221C6D0 - mov r1, #0 - str r1, [r0, #0x14] - str r1, [r0, #0x10] - bx lr - ; .align 2, 0 -_022045D4: .word Unk_ov4_0221C6D0 - arm_func_end ov4_022045C0 - - arm_func_start ov4_022045D8 -ov4_022045D8: ; 0x022045D8 - stmfd sp!, {r3, r4, r5, lr} - bl OS_GetTick - ldr r2, _02204674 ; =0x0221DBD8 - ldr r3, [r2, #0x10] - cmp r3, #2 - ldmneia sp!, {r3, r4, r5, pc} - ldr r2, [r2, #0xc] - cmp r2, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r3, _02204678 ; =0x0221C6D0 - mov ip, #0 - ldr r5, [r3, #0xc] - ldr r4, [r3, #8] - cmp r5, #0 - cmpeq r4, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r2, _0220467C ; =0x0221A10C - subs r4, r0, r4 - ldr lr, [r2] - ldr r0, [r2, #4] - sbc r1, r1, r5 - cmp r1, r0 - cmpeq r4, lr - ldmlsia sp!, {r3, r4, r5, pc} - str ip, [r3, #8] - str ip, [r3, #0xc] - str ip, [r3, #0x3c] - mov r0, ip - str ip, [r3, #0x48] - bl ov4_022048DC - ldr r1, _02204674 ; =0x0221DBD8 - ldr r0, _02204678 ; =0x0221C6D0 - ldr r3, [r1, #8] - ldrb r0, [r0, #0x40] - ldr ip, [r1, #4] - ldr r2, _02204680 ; =0x0221C70C - mov r1, #9 - blx ip - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02204674: .word Unk_ov4_0221DBD8 -_02204678: .word Unk_ov4_0221C6D0 -_0220467C: .word Unk_ov4_0221A10C -_02204680: .word 0x0221C70C - arm_func_end ov4_022045D8 - - arm_func_start ov4_02204684 -ov4_02204684: ; 0x02204684 - stmfd sp!, {r3, lr} - cmp r2, #0x10 - movne r0, #0 - ldmneia sp!, {r3, pc} - ldrb r2, [r1, #8] - cmp r2, r0 - bne _022046B4 - ldr r0, _022046FC ; =0x0221DBD8 - ldrb ip, [r1, #9] - ldrb r2, [r0] - cmp ip, r2 - beq _022046BC -_022046B4: - mov r0, #0 - ldmia sp!, {r3, pc} -_022046BC: - ldrb r2, [r1, #5] - cmp r2, #0x10 - beq _022046D8 - mov r0, r1 - mov r1, r3 - bl ov4_02204F90 - ldmia sp!, {r3, pc} -_022046D8: - ldr r0, [r0, #0xc] - cmp r0, #0 - mov r0, r1 - mov r1, r3 - bne _022046F4 - bl ov4_02204CC4 - ldmia sp!, {r3, pc} -_022046F4: - bl ov4_02204E00 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022046FC: .word Unk_ov4_0221DBD8 - arm_func_end ov4_02204684 - - arm_func_start ov4_02204700 -ov4_02204700: ; 0x02204700 - stmfd sp!, {r4, lr} - mov r1, r0 - cmp r1, #0x20 - movhs r0, #0 - ldmhsia sp!, {r4, pc} - ldr r0, _02204764 ; =0x0221DBD8 - ldrb r0, [r0] - cmp r1, r0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldr r2, _02204768 ; =0x0221C6D0 - ldr r4, [r2, #0x10] - cmp r4, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldr r3, [r4, #0x14] - mov r0, r4 - str r3, [r2, #0x10] - bl ov4_0220491C - ldr r1, _02204768 ; =0x0221C6D0 - mov r0, r4 - ldr r2, [r1, #0x14] - str r2, [r4, #0x14] - str r4, [r1, #0x14] - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02204764: .word Unk_ov4_0221DBD8 -_02204768: .word Unk_ov4_0221C6D0 - arm_func_end ov4_02204700 - - arm_func_start ov4_0220476C -ov4_0220476C: ; 0x0220476C - stmfd sp!, {r4, lr} - sub sp, sp, #0x10 - add r2, sp, #0 - mov r3, #0x10 - mov r4, r0 - bl ov4_02204244 - cmp r0, #0 - addne sp, sp, #0x10 - ldmneia sp!, {r4, pc} - add r1, sp, #0 - mov r0, r4 - bl ov4_02204964 - cmp r0, #0 - movne r0, #0 - mvneq r0, #3 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov4_0220476C - - arm_func_start ov4_022047B0 -ov4_022047B0: ; 0x022047B0 - stmfd sp!, {r4, lr} - sub sp, sp, #0x10 - add r2, sp, #0 - mov r3, #0x10 - mov r4, r0 - bl ov4_02204318 - cmp r0, #0 - addne sp, sp, #0x10 - ldmneia sp!, {r4, pc} - add r1, sp, #0 - mov r0, r4 - bl ov4_02204964 - cmp r0, #0 - movne r0, #0 - mvneq r0, #3 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov4_022047B0 - - arm_func_start ov4_022047F4 -ov4_022047F4: ; 0x022047F4 - ldrb r2, [r1, #0xa] - cmp r2, #1 - bxne lr - ldrb r2, [r0, #4] - ldr r0, _02204818 ; =0x0221C6D0 - strb r2, [r1, #0xb] - ldr r0, [r0, #4] - str r0, [r1, #0xc] - bx lr - ; .align 2, 0 -_02204818: .word Unk_ov4_0221C6D0 - arm_func_end ov4_022047F4 - - arm_func_start ov4_0220481C -ov4_0220481C: ; 0x0220481C - stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - str r0, [sp] - mov sl, r1 - mov r8, #0 - bl ov4_022047F4 - mov r6, #1 - ldr r4, _022048D4 ; =0x0221DBD8 - ldr r5, _022048D8 ; =0x0221C6D0 - mov sb, r8 - mov r7, r6 - mov fp, #0x10 -_02204848: - cmp sb, #0 - movne r1, r7, lsl sb - ldr r0, [r5, #4] - moveq r1, r6 - tst r0, r1 - ldrneb r0, [r4] - cmpne sb, r0 - beq _02204884 - mov r0, sb - mov r1, sl - mov r2, fp - strb sb, [sl, #9] - bl DWC_SendReliable - cmp r0, #0 - addne r8, r8, #1 -_02204884: - add r0, sb, #1 - and sb, r0, #0xff - cmp sb, #0x20 - blo _02204848 - ldrb r0, [sl, #0xa] - cmp r0, #1 - bne _022048B4 - ldr r0, _022048D8 ; =0x0221C6D0 - ldr r1, [r0, #4] - ldr r0, [sp] - str r1, [r0, #8] - b _022048C4 -_022048B4: - cmp r0, #0 - ldreq r0, [sp] - moveq r1, #0 - streq r1, [r0, #8] -_022048C4: - cmp r8, #0 - mvneq r0, #3 - movne r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ; .align 2, 0 -_022048D4: .word Unk_ov4_0221DBD8 -_022048D8: .word Unk_ov4_0221C6D0 - arm_func_end ov4_0220481C - - arm_func_start ov4_022048DC -ov4_022048DC: ; 0x022048DC - stmfd sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r3, #0xff - ldr r0, _02204918 ; =0x0221C70C - add r1, sp, #0 - mov r2, #4 - strb r3, [sp, #4] - bl ov4_02204A50 - ldr r0, _02204918 ; =0x0221C70C - add r1, sp, #0 - strb r4, [sp, #0xa] - bl ov4_0220481C - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02204918: .word 0x0221C70C - arm_func_end ov4_022048DC - - arm_func_start ov4_0220491C -ov4_0220491C: ; 0x0220491C - mov ip, r0 - mov r3, #6 - mov r2, #0 -_02204928: - strb r2, [ip] - strb r2, [ip, #1] - strb r2, [ip, #2] - strb r2, [ip, #3] - add ip, ip, #4 - subs r3, r3, #1 - bne _02204928 - ldr r2, _02204960 ; =0x0221DBD8 - mov r3, #0 - ldr r2, [r2, #0x10] - str r2, [r0, #0] - str r3, [r0, #0xc] - strb r1, [r0, #4] - bx lr - ; .align 2, 0 -_02204960: .word Unk_ov4_0221DBD8 - arm_func_end ov4_0220491C - - arm_func_start ov4_02204964 -ov4_02204964: ; 0x02204964 - stmfd sp!, {r3, lr} - ldrb r2, [r1, #4] - cmp r2, #0xff - ldreqb r2, [r1, #6] - cmpeq r2, #4 - bne _02204984 - bl ov4_0220481C - b _0220499C -_02204984: - ldrb r0, [r0, #4] - mov r2, #0x10 - bl DWC_SendReliable - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, pc} -_0220499C: - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov4_02204964 - - arm_func_start ov4_022049A4 -ov4_022049A4: ; 0x022049A4 - ldrb r2, [r0, #0xb] - strb r2, [r1, #5] - ldrb r2, [r0, #4] - cmp r2, #0xff - bne _022049E8 - ldrb r2, [r0, #6] - cmp r2, #0 - bne _022049D8 - ldrb r3, [r1, #4] - mov r2, #1 - cmp r3, #0 - movne r2, r2, lsl r3 - str r2, [r1, #8] -_022049D8: - ldrb r1, [r0, #6] - ldr r0, _02204A48 ; =0x02215D28 - ldrb r0, [r0, r1] - bx lr -_022049E8: - cmp r2, #0 - bne _02204A40 - ldrb r2, [r0, #6] - cmp r2, #0 - bne _02204A34 - ldr r0, [r1, #0xc] - cmp r0, #1 - bne _02204A24 - ldrb r2, [r1, #4] - mov r0, #1 - cmp r2, #0 - movne r0, r0, lsl r2 - str r0, [r1, #8] - mov r0, #7 - bx lr -_02204A24: - cmp r0, #5 - moveq r0, #9 - movne r0, #0xc - bx lr -_02204A34: - ldr r0, _02204A4C ; =0x02215D30 - ldrb r0, [r0, r2] - bx lr -_02204A40: - mov r0, #0xc - bx lr - ; .align 2, 0 -_02204A48: .word Unk_ov4_02215D28 -_02204A4C: .word Unk_ov4_02215D30 - arm_func_end ov4_022049A4 - - arm_func_start ov4_02204A50 -ov4_02204A50: ; 0x02204A50 - ldr ip, _02204A90 ; =0x5F564354 - mov r3, #0x10 - str ip, [r1] - strb r3, [r1, #5] - ldr r3, _02204A94 ; =0x0221DBD8 - strb r2, [r1, #6] - ldrb r2, [r3] - strb r2, [r1, #8] - ldrb r2, [r0, #4] - mov r0, #0 - strb r2, [r1, #9] - strb r0, [r1, #0xa] - ldrb r2, [r3] - strb r2, [r1, #0xb] - str r0, [r1, #0xc] - bx lr - ; .align 2, 0 -_02204A90: .word 0x5F564354 -_02204A94: .word Unk_ov4_0221DBD8 - arm_func_end ov4_02204A50 - - arm_func_start ov4_02204A98 -ov4_02204A98: ; 0x02204A98 - stmfd sp!, {r3, r4, r5, lr} - ldrb r2, [r1, #4] - ldrb r3, [r1, #6] - mov r4, r0 - cmp r2, #0 - addeq r3, r3, #5 - cmp r3, #0 - blt _02204AC0 - cmp r3, #0xb - blt _02204AC4 -_02204AC0: - mvn r3, #0 -_02204AC4: - cmp r3, #0 - mvnlt r0, #0 - ldmltia sp!, {r3, r4, r5, pc} - ldr r0, _02204B64 ; =0x0221DBD8 - ldr r2, [r4, #0xc] - ldr r0, [r0, #0x10] - cmp r0, #1 - ldreq r1, _02204B68 ; =0x02215DFE - mov r0, #0xb - ldrne r1, _02204B6C ; =0x02215D38 - mla r0, r2, r0, r1 - ldrsb r5, [r3, r0] - mvn r1, #2 - cmp r5, r1 - beq _02204B40 - add r0, r1, #1 - cmp r5, r0 - beq _02204B20 - add r0, r1, #2 - cmp r5, r0 - mov r0, r5 - bne _02204B60 - ldmia sp!, {r3, r4, r5, pc} -_02204B20: - mov r0, r4 - mov r1, #1 - bl ov4_022047B0 - mov r1, #0 - str r1, [r4, #0xc] - mov r0, r5 - str r1, [r4, #0] - ldmia sp!, {r3, r4, r5, pc} -_02204B40: - mov r0, r4 - mov r1, #3 - bl ov4_022047B0 - mov r1, #0 - str r1, [r4, #0xc] - mov r0, r5 - str r1, [r4, #0] - ldmia sp!, {r3, r4, r5, pc} -_02204B60: - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02204B64: .word Unk_ov4_0221DBD8 -_02204B68: .word Unk_ov4_02215DFE -_02204B6C: .word Unk_ov4_02215D38 - arm_func_end ov4_02204A98 - - arm_func_start ov4_02204B70 -ov4_02204B70: ; 0x02204B70 - ldr r1, _02204BB8 ; =0x0221C6D0 - ldr r2, [r1, #0x14] - cmp r2, #0 - beq _02204BB0 -_02204B80: - ldr r1, [r2, #0] - cmp r1, #0 - beq _02204BA4 - ldr r1, [r2, #0xc] - cmp r1, #2 - bne _02204BA4 - cmp r0, r2 - movne r0, #0 - bxne lr -_02204BA4: - ldr r2, [r2, #0x14] - cmp r2, #0 - bne _02204B80 -_02204BB0: - mov r0, #1 - bx lr - ; .align 2, 0 -_02204BB8: .word Unk_ov4_0221C6D0 - arm_func_end ov4_02204B70 - - arm_func_start ov4_02204BBC -ov4_02204BBC: ; 0x02204BBC - ldrb r2, [r1, #4] - ldrb ip, [r1, #6] - cmp r2, #0 - addeq ip, ip, #5 - cmp ip, #0 - blt _02204BDC - cmp ip, #0xb - blt _02204BE0 -_02204BDC: - mvn ip, #0 -_02204BE0: - cmp ip, #0 - mvnlt r0, #0 - bxlt lr - ldr r1, _02204C38 ; =0x0221DBD8 - ldr r3, [r0, #0xc] - ldr r1, [r1, #0x10] - cmp r1, #1 - ldreq r2, _02204C3C ; =0x02215D7A - mov r1, #0xb - ldrne r2, _02204C40 ; =0x02215DBC - mla r1, r3, r1, r2 - ldrsb r2, [ip, r1] - mvn r1, #0 - cmp r2, r1 - moveq r0, #1 - bxeq lr - sub r1, r1, #1 - cmp r2, r1 - moveq r0, #0 - strne r2, [r0, #0xc] - movne r0, #1 - bx lr - ; .align 2, 0 -_02204C38: .word Unk_ov4_0221DBD8 -_02204C3C: .word Unk_ov4_02215D7A -_02204C40: .word Unk_ov4_02215DBC - arm_func_end ov4_02204BBC - - arm_func_start ov4_02204C44 -ov4_02204C44: ; 0x02204C44 - ldr r1, _02204CB8 ; =0x0221DBD8 - ldr r2, _02204CBC ; =0x0221C6D0 - ldr r1, [r1, #0x10] - ldr r3, [r2, #0x14] - cmp r1, #2 - bne _02204C80 - ldr r1, [r2, #0x3c] - cmp r1, #0 - beq _02204C78 - ldrb r1, [r2, #0x40] - cmp r1, r0 - ldreq r0, _02204CC0 ; =0x0221C70C - bxeq lr -_02204C78: - mov r0, #0 - bx lr -_02204C80: - cmp r3, #0 - beq _02204CB0 -_02204C88: - ldr r1, [r3, #0] - cmp r1, #0 - beq _02204CA4 - ldrb r1, [r3, #4] - cmp r1, r0 - moveq r0, r3 - bxeq lr -_02204CA4: - ldr r3, [r3, #0x14] - cmp r3, #0 - bne _02204C88 -_02204CB0: - mov r0, #0 - bx lr - ; .align 2, 0 -_02204CB8: .word Unk_ov4_0221DBD8 -_02204CBC: .word Unk_ov4_0221C6D0 -_02204CC0: .word 0x0221C70C - arm_func_end ov4_02204C44 - - arm_func_start ov4_02204CC4 -ov4_02204CC4: ; 0x02204CC4 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r0 - ldrb r2, [r6, #4] - mov r5, r1 - cmp r2, #0xff - bne _02204CFC - ldrb r2, [r6, #6] - cmp r2, #4 - bne _02204CF0 - bl ov4_02205008 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02204CF0: - cmp r2, #3 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} -_02204CFC: - ldrb r0, [r6, #8] - bl ov4_02204C44 - movs r4, r0 - beq _02204D7C - mov r1, r6 - bl ov4_02204A98 - mov r7, r0 - mvn r0, #1 - cmp r7, r0 - beq _02204D38 - add r0, r0, #1 - cmp r7, r0 - bne _02204D54 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02204D38: - mov r0, #0xc - str r0, [r5, #0] - mov r0, #0 - str r0, [r4, #0] - str r4, [r5, #4] - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02204D54: - mov r0, r6 - mov r1, r4 - bl ov4_022049A4 - stmia r5, {r0, r4} - str r7, [r4, #0xc] - ldr r0, [r5, #0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02204D7C: - ldrb r0, [r6, #8] - bl ov4_02204700 - movs r7, r0 - bne _02204DAC - ldrb r1, [r6, #8] - ldr r0, _02204DFC ; =0x0221C6F4 - bl ov4_0220491C - ldr r0, _02204DFC ; =0x0221C6F4 - mov r1, #3 - bl ov4_022047B0 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02204DAC: - mov r1, r6 - bl ov4_02204A98 - mov r4, r0 - add r0, r4, #2 - cmp r0, #1 - bhi _02204DD4 - mov r0, r7 - bl VCT_DeleteSession - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02204DD4: - mov r0, r6 - mov r1, r7 - bl ov4_022049A4 - stmia r5, {r0, r7} - str r4, [r7, #0xc] - ldr r0, [r5, #0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02204DFC: .word 0x0221C6F4 - arm_func_end ov4_02204CC4 - - arm_func_start ov4_02204E00 -ov4_02204E00: ; 0x02204E00 - stmfd sp!, {r4, r5, r6, lr} - ldr r2, _02204F88 ; =0x0221C6D0 - mov r5, r0 - ldr r0, [r2, #0x3c] - mov r4, r1 - cmp r0, #2 - bne _02204EB0 - ldrb r1, [r2, #0x40] - ldrb r0, [r5, #8] - cmp r1, r0 - bne _02204EA0 - ldr r0, _02204F8C ; =0x0221C70C - mov r1, r5 - bl ov4_02204A98 - mov r6, r0 - mvn r1, #2 - cmp r6, r1 - beq _02204E7C - add r0, r1, #1 - cmp r6, r0 - beq _02204E64 - add r0, r1, #2 - cmp r6, r0 - beq _02204E7C - b _02204E84 -_02204E64: - mov r0, #0xc - str r0, [r4, #0] - mov r0, #0 - str r0, [r4, #4] - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} -_02204E7C: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_02204E84: - ldr r1, _02204F8C ; =0x0221C70C - mov r0, r5 - bl ov4_022049A4 - ldr r1, _02204F8C ; =0x0221C70C - stmia r4, {r0, r1} - str r6, [r1, #0xc] - b _02204F40 -_02204EA0: - mov r0, #1 - bl ov4_022048DC - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_02204EB0: - ldrb r1, [r5, #8] - ldr r2, _02204F88 ; =0x0221C6D0 - cmp r1, #0 - movne r0, #1 - movne r3, r0, lsl r1 - ldr r0, [r2, #4] - moveq r3, #1 - tst r0, r3 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - strb r1, [r2, #0x40] - mov r3, #2 - str r3, [r2, #0x3c] - mov r3, #0 - ldr r0, _02204F8C ; =0x0221C70C - mov r1, r5 - str r3, [r2, #0x48] - bl ov4_02204A98 - mov r6, r0 - mvn r1, #2 - cmp r6, r1 - addne r0, r1, #1 - cmpne r6, r0 - addne r0, r1, #2 - cmpne r6, r0 - bne _02204F28 - ldr r1, _02204F88 ; =0x0221C6D0 - mov r0, #0 - str r0, [r1, #0x3c] - ldmia sp!, {r4, r5, r6, pc} -_02204F28: - ldr r1, _02204F8C ; =0x0221C70C - mov r0, r5 - bl ov4_022049A4 - ldr r1, _02204F8C ; =0x0221C70C - stmia r4, {r0, r1} - str r6, [r1, #0xc] -_02204F40: - ldr r0, [r4, #0] - cmp r0, #0xa - bne _02204F68 - mov r0, #1 - bl ov4_022048DC - bl OS_GetTick - ldr r2, _02204F88 ; =0x0221C6D0 - str r0, [r2, #8] - str r1, [r2, #0xc] - b _02204F80 -_02204F68: - mov r0, #0 - bl ov4_022048DC - ldr r0, _02204F88 ; =0x0221C6D0 - mov r1, #0 - str r1, [r0, #8] - str r1, [r0, #0xc] -_02204F80: - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_02204F88: .word Unk_ov4_0221C6D0 -_02204F8C: .word 0x0221C70C - arm_func_end ov4_02204E00 - - arm_func_start ov4_02204F90 -ov4_02204F90: ; 0x02204F90 - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - ldrb r0, [r5, #4] - mov r4, r1 - cmp r0, #0xff - ldreqb r0, [r5, #6] - cmpeq r0, #4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldrb r0, [r5, #8] - bl ov4_02204C44 - cmp r0, #0 - beq _02204FE4 - mov r1, #2 - str r1, [r4, #0] - str r0, [r4, #4] - mov r2, #0 - str r2, [r0, #0] - bl ov4_022047B0 - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} -_02204FE4: - ldrb r1, [r5, #8] - ldr r0, _02205004 ; =0x0221C6F4 - bl ov4_0220491C - ldr r0, _02205004 ; =0x0221C6F4 - mov r1, #2 - bl ov4_022047B0 - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - ; .align 2, 0 -_02205004: .word 0x0221C6F4 - arm_func_end ov4_02204F90 - - arm_func_start ov4_02205008 -ov4_02205008: ; 0x02205008 - stmfd sp!, {r3, lr} - ldr r3, _0220511C ; =0x0221DBD8 - ldr r2, [r3, #0x10] - cmp r2, #2 - movne r0, #0 - ldmneia sp!, {r3, pc} - ldrb ip, [r3, #1] - ldrb r2, [r0, #8] - cmp ip, r2 - movne r0, #0 - ldmneia sp!, {r3, pc} - ldrb r2, [r0, #0xa] - cmp r2, #0 - beq _0220504C - cmp r2, #1 - beq _02205098 - b _0220510C -_0220504C: - ldr r0, _02205120 ; =0x0221C6D0 - ldr r2, [r0, #0x3c] - cmp r2, #0 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - ldr r0, [r0, #0x48] - mov r3, #0 - cmp r0, #5 - cmpne r0, #2 - moveq r0, #9 - streq r0, [r1] - movne r0, #5 - strne r0, [r1] - ldr r0, _02205120 ; =0x0221C6D0 - ldr r2, _02205124 ; =0x0221C70C - str r3, [r0, #0x3c] - str r3, [r0, #0x48] - str r2, [r1, #4] - b _02205114 -_02205098: - ldr r2, _02205120 ; =0x0221C6D0 - mov lr, #2 - str lr, [r2, #0x3c] - ldrb ip, [r0, #0xb] - ldrb r3, [r3] - cmp ip, r3 - bne _022050C8 - str lr, [r2, #0x48] - mov r3, #7 - str r3, [r1, #0] - ldr r3, [r0, #0xc] - b _022050F0 -_022050C8: - mov r3, #3 - str r3, [r2, #0x48] - mov r2, #6 - str r2, [r1, #0] - ldrb r3, [r0, #0xb] - cmp r3, #0 - movne r2, #1 - movne r3, r2, lsl r3 - ldr r2, _02205120 ; =0x0221C6D0 - moveq r3, #1 -_022050F0: - str r3, [r2, #0x44] - ldrb r3, [r0, #0xb] - ldr r0, _02205120 ; =0x0221C6D0 - ldr r2, _02205124 ; =0x0221C70C - strb r3, [r0, #0x41] - str r2, [r1, #4] - b _02205114 -_0220510C: - mov r0, #0 - ldmia sp!, {r3, pc} -_02205114: - mov r0, #1 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_0220511C: .word Unk_ov4_0221DBD8 -_02205120: .word Unk_ov4_0221C6D0 -_02205124: .word 0x0221C70C - arm_func_end ov4_02205008 - - .rodata - - - .global Unk_ov4_02215D28 -Unk_ov4_02215D28: ; 0x02215D28 - .byte 0x1, 0x8, 0x4, 0xA - .space 0x4 - - .global Unk_ov4_02215D30 -Unk_ov4_02215D30: ; 0x02215D30 - .byte 0x7, 0xC, 0x2, 0x3, 0x9, 0x2 - .space 0x2 - - .global Unk_ov4_02215D38 -Unk_ov4_02215D38: ; 0x02215D38 - .incbin "incbin/ssp.bin", 0x0, 0x42 - - .global Unk_ov4_02215D7A -Unk_ov4_02215D7A: ; 0x02215D7A - .incbin "incbin/ssp.bin", 0x42, 0x84 - 0x42 - - .global Unk_ov4_02215DBC -Unk_ov4_02215DBC: ; 0x02215DBC - .incbin "incbin/ssp.bin", 0x84, 0xC6 - 0x84 - - .global Unk_ov4_02215DFE -Unk_ov4_02215DFE: ; 0x02215DFE - .incbin "incbin/ssp.bin", 0xC6, 0x42 - - - - .data - - - .global Unk_ov4_0221A10C -Unk_ov4_0221A10C: ; 0x0221A10C - .byte 0xF7, 0xB5, 0xEF, 0x0 - .space 0x4 - - - - .bss - - - .global Unk_ov4_0221C6D0 -Unk_ov4_0221C6D0: ; 0x0221C6D0 - .space 0x4 - - .global Unk_ov4_0221C6D4 -Unk_ov4_0221C6D4: ; 0x0221C6D4 - .space 0x4 - - .global Unk_ov4_0221C6D8 -Unk_ov4_0221C6D8: ; 0x0221C6D8 - .space 0x8 - - .global Unk_ov4_0221C6E0 -Unk_ov4_0221C6E0: ; 0x0221C6E0 - .space 0x44 - diff --git a/subprojects/libVCT/asm/stream_vct.s b/subprojects/libVCT/asm/stream_vct.s deleted file mode 100644 index 7c82f5e958..0000000000 --- a/subprojects/libVCT/asm/stream_vct.s +++ /dev/null @@ -1,411 +0,0 @@ - .include "macros/function.inc" - .include "include/stream_vct.inc" - - - - .text - - - arm_func_start ov4_02203BD4 -ov4_02203BD4: ; 0x02203BD4 - stmfd sp!, {r4, r5, r6, lr} - mov r5, r1 - mov r4, r2 - mov r1, #0 - mov r2, #0x28 - mov r6, r0 - bl MI_CpuFill8 - ldr r0, _02203C5C ; =0x000134DF - mov r1, #0 - str r0, [r6, #4] - str r1, [r6, #0x28] - str r1, [r6, #0x2c] - str r5, [r6, #0x34] - str r4, [r6, #0x38] - str r1, [r6, #0x7c] - str r1, [r6, #0x80] - str r1, [r6, #0x84] - str r1, [r6, #0x88] - str r0, [r6, #0x8c] - str r1, [r6, #0x90] - str r1, [r6, #0x4c] - str r1, [r6, #0x44] - str r1, [r6, #0x48] - str r1, [r6, #0x6c] - str r1, [r6, #0x70] - str r1, [r6, #0x50] - str r1, [r6, #0x54] - str r1, [r6, #0x58] - mov r0, #1 - str r0, [r6, #0x5c] - str r1, [r6, #0x3c] - str r1, [r6, #0x40] - str r1, [r6, #0x30] - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_02203C5C: .word 0x000134DF - arm_func_end ov4_02203BD4 - - arm_func_start ov4_02203C60 -ov4_02203C60: ; 0x02203C60 - stmfd sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4, #0x3c] - cmp r0, #0 - beq _02203C80 - bl ov4_0220523C - mov r0, #0 - str r0, [r4, #0x3c] -_02203C80: - mvn r0, #0 - str r0, [r4, #0x38] - ldmia sp!, {r4, pc} - arm_func_end ov4_02203C60 - - arm_func_start ov4_02203C8C -ov4_02203C8C: ; 0x02203C8C - stmfd sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r0, [r5, #0x3c] - mov r4, r1 - cmp r0, #0 - beq _02203CA8 - bl ov4_0220523C -_02203CA8: - str r4, [r5, #0x3c] - ldr r0, [r5, #0x34] - bl ov4_02203B5C - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov4_02203C8C - - arm_func_start ov4_02203CB8 -ov4_02203CB8: ; 0x02203CB8 - ldr r2, _02203CD4 ; =0x00010001 - strh r1, [r0, #0x68] - str r2, [r0, #0x64] - mov r1, #0 - str r1, [r0, #0x60] - str r1, [r0, #0x5c] - bx lr - ; .align 2, 0 -_02203CD4: .word 0x00010001 - arm_func_end ov4_02203CB8 - - arm_func_start ov4_02203CD8 -ov4_02203CD8: ; 0x02203CD8 - stmfd sp!, {r4, r5, r6, lr} - mov r6, r0 - ldrh ip, [r6, #0x68] - mov r4, r2 - ldr r3, _02203DA8 ; =0x00000BB8 - sub r2, r4, ip - mov r2, r2, lsl #0x10 - mov r5, r1 - cmp r3, r2, lsr #16 - mov r2, r2, lsr #0x10 - bls _02203D1C - cmp r4, ip - ldrlo r0, [r6, #0x60] - addlo r0, r0, #0x10000 - strlo r0, [r6, #0x60] - strh r4, [r6, #0x68] - b _02203D94 -_02203D1C: - ldr r1, _02203DAC ; =0x0000FF9C - cmp r2, r1 - bhi _02203D68 - ldr r1, [r6, #0x64] - cmp r4, r1 - bne _02203D50 - mov r1, r4 - bl ov4_02203CB8 - sub r0, r4, #1 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - str r0, [r6, #0x54] - b _02203D94 -_02203D50: - add r0, r4, #1 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - str r0, [r6, #0x64] - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_02203D68: - ldr r0, [r6, #0x54] - ldr r1, [r6, #0x60] - add r0, r0, #0x39c - add r1, r4, r1 - add r0, r0, #0xfc00 - cmp r1, r0 - bls _02203D94 - sub r0, r1, #0x10000 - str r0, [r5, #0x18] - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} -_02203D94: - ldr r1, [r6, #0x60] - mov r0, #1 - add r1, r4, r1 - str r1, [r5, #0x18] - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_02203DA8: .word 0x00000BB8 -_02203DAC: .word 0x0000FF9C - arm_func_end ov4_02203CD8 - - arm_func_start ov4_02203DB0 -ov4_02203DB0: ; 0x02203DB0 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - ldr r2, [r7, #0x5c] - mov r6, r1 - cmp r2, #0 - mov r5, #0 - beq _02203DE0 - ldr r1, [r6, #0x18] - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 - bl ov4_02203CB8 - b _02203E78 -_02203DE0: - ldr r2, [r6, #0x18] - mov r2, r2, lsl #0x10 - mov r2, r2, lsr #0x10 - bl ov4_02203CD8 - cmp r0, #0 - bne _02203E0C - ldr r1, [r7, #0x14] - mov r0, r5 - add r1, r1, #1 - str r1, [r7, #0x14] - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02203E0C: - ldr r0, [r6, #0x18] - str r0, [r7, #0x10] - ldr r1, [r6, #0x18] - ldr r2, [r7, #0x54] - cmp r2, r1 - bne _02203E38 - ldr r1, [r7, #0x14] - mov r0, r5 - add r1, r1, #1 - str r1, [r7, #0x14] - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02203E38: - add r0, r2, #1 - cmp r0, r1 - beq _02203E78 - ldr r0, [r6, #0x45c] - cmp r0, #0 - bne _02203E78 - subs r0, r1, r2 - rsbmi r0, r0, #0 - cmp r0, #0x64 - strgt r1, [r7, #0x54] - movgt r0, #0 - ldmgtia sp!, {r3, r4, r5, r6, r7, pc} - cmp r2, r1 - ldrhi r0, [r7, #0x1c] - addhi r0, r0, #1 - strhi r0, [r7, #0x1c] -_02203E78: - ldr r0, [r6, #0x18] - str r0, [r7, #0x54] - ldr r0, [r7, #0x4c] - cmp r0, #0 - bne _02203EB0 - ldr r1, [r6, #0x460] - add r0, r6, #0x64 - str r1, [r7, #0x4c] - add r1, r0, #0x400 - add r0, r7, #0x44 - ldmia r1, {r2, r3} - stmia r0, {r2, r3} - mov r0, #0 - str r0, [r7, #0x6c] -_02203EB0: - ldr r2, [r6, #0x460] - ldr r0, [r7, #0x4c] - ldr r3, [r6, #0x464] - ldr r1, [r7, #0x44] - sub r0, r2, r0 - ldr r2, [r7, #0x80] - mov r0, r0, lsl #6 - subs r1, r3, r1 - subs r4, r0, r1 - cmp r2, #0 - beq _02203EE8 - ldr r1, [r6, #0x45c] - cmp r1, #0 - beq _02203EF0 -_02203EE8: - str r4, [r7, #0x80] - b _02203F64 -_02203EF0: - str r4, [r7, #0x80] - subs r1, r4, r2 - ldr r2, [r7, #0x7c] - rsbmi r1, r1, #0 - add r2, r2, #0x318 - add r2, r2, #0x8800 - mov ip, r2, lsl #1 - ldr r3, _02204140 ; =0x0000CC8D - mov r2, #0 - adds r3, ip, r3 - mov lr, r1, asr #0x1f - adc r2, r2, ip, asr #31 - cmp lr, r2 - cmpeq r1, r3 - bls _02203F44 - ldr ip, _02204144 ; =0x75CA82CB - mov r2, r1, lsr #0x1f - smull r3, lr, ip, r1 - add lr, r2, lr, asr #14 - add r2, lr, #2 - str r2, [r7, #0x84] -_02203F44: - ldr r2, [r7, #0x84] - cmp r2, #0 - bgt _02203F64 - ldr r2, [r7, #0x7c] - sub r1, r1, r2 - add r1, r2, r1, asr #4 - str r1, [r7, #0x7c] - str r1, [r7, #0x18] -_02203F64: - ldr r2, [r7, #0x44] - ldr r3, [r7, #4] - ldr r1, [r7, #0x48] - adds r2, r0, r2 - adc r0, r1, #0 - adds r1, r3, r2 - str r1, [r6, #0x46c] - adc r0, r0, #0 - str r0, [r6, #0x470] - bl OS_GetTick - ldr ip, [r6, #0x46c] - ldr r2, _02204148 ; =0x00008B18 - ldr lr, [r6, #0x470] - adds r6, ip, r2 - adc r3, lr, #0 - cmp r3, r1 - mov r3, #0 - cmpeq r6, r0 - movlo r0, r3 - ldmloia sp!, {r3, r4, r5, r6, r7, pc} - ldr r6, _0220414C ; =0x0007FD88 - adds r6, r0, r6 - adc r0, r1, r3 - cmp lr, r0 - cmpeq ip, r6 - movhi r0, r3 - ldmhiia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r7, #0x84] - cmp r0, #0 - bgt _0220412C - ldr r0, [r7, #0x7c] - ldr r6, _02204144 ; =0x75CA82CB - add ip, r0, r0, lsl #1 - smull r1, r0, r6, ip - ldr r6, [r7, #0x8c] - mov r1, ip, lsr #0x1f - cmp ip, r6 - add r0, r1, r0, asr #14 - bls _02204038 - add r1, r0, #1 - mul r6, r1, r2 - mul r1, r0, r2 - add r0, r6, #0xdf - add r2, r0, #0x13400 - ldr r0, _02204150 ; =0xFFFF2F5C - add r1, r1, #0xdf - str r2, [r7, #0x8c] - add r0, r2, r0 - str r0, [r7, #0x88] - add r0, r1, #0x13400 - str r0, [r7, #4] - str r3, [r7, #0x90] - b _02204098 -_02204038: - ldr r1, [r7, #0x88] - cmp ip, r1 - bge _02204098 - ldr r1, [r7, #0x90] - add r1, r1, #1 - str r1, [r7, #0x90] - cmp r1, #0x46 - bls _02204098 - add r1, r0, #1 - mul ip, r1, r2 - add r1, ip, #0xdf - add r1, r1, #0x13400 - ldr r6, _02204154 ; =0xFFFFBA74 - str r1, [r7, #0x8c] - ldr r1, _02204148 ; =0x00008B18 - mlas r2, r0, r2, r6 - str r2, [r7, #0x88] - mul r1, r0, r1 - add r0, r1, #0xdf - strmi r3, [r7, #0x88] - add r0, r0, #0x13400 - mov r2, #0 - str r0, [r7, #4] - str r2, [r7, #0x90] -_02204098: - ldr r1, [r7, #4] - ldr r0, _02204158 ; =0x00068520 - cmp r1, r0 - strhi r0, [r7, #4] - ldr r0, [r7, #0x6c] - cmp r0, #0x10 - bhs _022040C8 - add r0, r0, #1 - str r0, [r7, #0x6c] - str r4, [r7, #0x74] - str r4, [r7, #0x78] - b _022040E4 -_022040C8: - ldr r0, [r7, #0x74] - rsb r0, r0, r0, lsl #5 - add r1, r4, r0 - mov r0, r1, asr #4 - add r0, r1, r0, lsr #27 - mov r0, r0, asr #5 - str r0, [r7, #0x74] -_022040E4: - ldr r2, [r7, #0x78] - ldr r1, [r7, #0x74] - ldr r0, _0220415C ; =0x00008701 - sub r1, r2, r1 - cmp r1, r0 - mvn r0, #0x8700 - movgt r5, #1 - str r1, [r7, #0xc] - cmp r1, r0 - bge _0220411C - ldr r1, [r7, #0x70] - add r5, r0, #0x8700 - add r0, r1, #1 - str r0, [r7, #0x70] -_0220411C: - cmp r5, #0 - movne r0, #0 - strne r0, [r7, #0x6c] - strne r0, [r7, #0x4c] -_0220412C: - ldr r1, [r7, #0x84] - mov r0, #1 - sub r1, r1, #1 - str r1, [r7, #0x84] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02204140: .word 0x0000CC8D -_02204144: .word 0x75CA82CB -_02204148: .word 0x00008B18 -_0220414C: .word 0x0007FD88 -_02204150: .word 0xFFFF2F5C -_02204154: .word 0xFFFFBA74 -_02204158: .word 0x00068520 -_0220415C: .word 0x00008701 - arm_func_end ov4_02203DB0 \ No newline at end of file diff --git a/subprojects/libVCT/asm/udp_buffer.s b/subprojects/libVCT/asm/udp_buffer.s deleted file mode 100644 index b3e86bf2fd..0000000000 --- a/subprojects/libVCT/asm/udp_buffer.s +++ /dev/null @@ -1,125 +0,0 @@ - .include "macros/function.inc" - .include "include/udp_buffer.inc" - - - - .text - - - arm_func_start ov4_02205128 -ov4_02205128: ; 0x02205128 - stmfd sp!, {r4, r5, r6, lr} - ldr r3, _022051E4 ; =0xE525982B - mov r2, r1 - umull r1, r4, r2, r3 - ldr r1, _022051E8 ; =0x0221C724 - mov r4, r4, lsr #0xa - str r0, [r1, #4] - cmp r4, #4 - blo _02205154 - cmp r4, #0x48 - bls _0220515C -_02205154: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_0220515C: - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - tst r0, #0x1f - movne r0, #0 - strne r0, [r1, #4] - ldmneia sp!, {r4, r5, r6, pc} - mov r1, r0 - mov r0, #0 - bl MIi_CpuClearFast - subs lr, r4, #1 - mov r5, #0 - beq _022051BC - ldr r2, _022051E8 ; =0x0221C724 - ldr r0, _022051EC ; =0x00000478 - mov r6, r5 -_0220519C: - ldr ip, [r2, #4] - add r5, r5, #1 - mla r3, r5, r0, ip - add r1, r6, #0x78 - str r3, [ip, r6] - cmp r5, lr - add r6, r1, #0x400 - blo _0220519C -_022051BC: - ldr r1, _022051E8 ; =0x0221C724 - ldr r0, _022051EC ; =0x00000478 - ldr r2, [r1, #4] - mov r3, #0 - mla r0, r4, r0, r2 - str r3, [r0, #-0x478] - ldr r2, [r1, #4] - mov r0, #1 - str r2, [r1, #0] - ldmia sp!, {r4, r5, r6, pc} - ; .align 2, 0 -_022051E4: .word 0xE525982B -_022051E8: .word Unk_ov4_0221C724 -_022051EC: .word 0x00000478 - arm_func_end ov4_02205128 - - arm_func_start ov4_022051F0 -ov4_022051F0: ; 0x022051F0 - ldr r0, _02205204 ; =0x0221C724 - mov r1, #0 - str r1, [r0, #0] - str r1, [r0, #4] - bx lr - ; .align 2, 0 -_02205204: .word Unk_ov4_0221C724 - arm_func_end ov4_022051F0 - - arm_func_start ov4_02205208 -ov4_02205208: ; 0x02205208 - stmfd sp!, {r4, lr} - mov r4, #0 - bl OS_DisableInterrupts - ldr r1, _02205238 ; =0x0221C724 - ldr r3, [r1, #0] - cmp r3, #0 - ldrne r2, [r3] - movne r4, r3 - strne r2, [r1] - bl OS_RestoreInterrupts - mov r0, r4 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02205238: .word Unk_ov4_0221C724 - arm_func_end ov4_02205208 - - arm_func_start ov4_0220523C -ov4_0220523C: ; 0x0220523C - stmfd sp!, {r4, lr} - mov r4, r0 - bl OS_DisableInterrupts - ldr r1, _0220526C ; =0x0221C724 - mov r2, #0 - ldr r3, [r1, #0] - str r3, [r4, #0] - str r4, [r1, #0] - str r2, [r4, #4] - str r2, [r4, #8] - bl OS_RestoreInterrupts - ldmia sp!, {r4, pc} - ; .align 2, 0 -_0220526C: .word Unk_ov4_0221C724 - arm_func_end ov4_0220523C - - .bss - - - .global Unk_ov4_0221C724 -Unk_ov4_0221C724: ; 0x0221C724 - .space 0x4 - - .global Unk_ov4_0221C728 -Unk_ov4_0221C728: ; 0x0221C728 - .space 0x4 - diff --git a/subprojects/libVCT/asm/vad.s b/subprojects/libVCT/asm/vad.s deleted file mode 100644 index 8475c4d00f..0000000000 --- a/subprojects/libVCT/asm/vad.s +++ /dev/null @@ -1,228 +0,0 @@ - .include "macros/function.inc" - .include "include/vad.inc" - - - - .text - - - arm_func_start ov4_02205270 -ov4_02205270: ; 0x02205270 - ldr r0, _022052B0 ; =0x0221C738 - mov r2, #0 - mov r1, #0x1000000 -_0220527C: - str r1, [r0, r2, lsl #2] - add r2, r2, #1 - cmp r2, #4 - blt _0220527C - ldr r1, _022052B4 ; =0x0221C72C - mov r2, #0 - str r2, [r1, #4] - ldr r0, _022052B8 ; =0x0221A114 - str r2, [r1, #0] - str r2, [r0, #0] - str r2, [r0, #4] - str r2, [r1, #8] - bx lr - ; .align 2, 0 -_022052B0: .word Unk_ov4_0221C738 -_022052B4: .word Unk_ov4_0221C72C -_022052B8: .word Unk_ov4_0221A114 - arm_func_end ov4_02205270 - - arm_func_start VCT_GetVADInfo -VCT_GetVADInfo: ; 0x022052BC - stmfd sp!, {r3, lr} - movs r1, r0 - ldmeqia sp!, {r3, pc} - ldr r0, _022052D8 ; =0x0221A114 - mov r2, #0x10 - bl MI_CpuCopy8 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_022052D8: .word Unk_ov4_0221A114 - arm_func_end VCT_GetVADInfo - - arm_func_start ov4_022052DC -ov4_022052DC: ; 0x022052DC - stmfd sp!, {r4, lr} - ldr r3, _022054A8 ; =0x0221A114 - mov ip, r1, lsr #8 - str ip, [r3, #4] - cmp r2, #0 - strneb ip, [r2] - ldr r2, _022054A8 ; =0x0221A114 - ldr r2, [r2, #0] - cmp r2, #0 - bne _022053F0 - mov ip, #0 - ldr r3, _022054AC ; =0x0221C738 - mov lr, ip -_02205310: - ldr r2, [r3, lr, lsl #2] - add lr, lr, #1 - cmp lr, #4 - add ip, ip, r2 - blt _02205310 - ldr r3, _022054B0 ; =0x040002B0 - mov r2, #0 - strh r2, [r3] - mov r2, ip, lsr #2 - str r2, [r3, #8] -_02205338: - ldrh r2, [r3] - tst r2, #0x8000 - bne _02205338 - ldr r2, _022054B4 ; =0x040002B4 - cmp r1, #0 - ldr r2, [r2, #0] - beq _022053CC - cmp r1, r2, lsl #1 - blo _022053CC - mov r3, #0 - ldr r2, _022054AC ; =0x0221C738 - mov ip, r3 -_02205368: - ldr r1, [r2, ip, lsl #2] - add ip, ip, #1 - cmp ip, #4 - add r3, r3, r1 - blo _02205368 - ldr r2, _022054B0 ; =0x040002B0 - mov r1, #0 - strh r1, [r2] - mov r1, r3, lsr #2 - str r1, [r2, #8] -_02205390: - ldrh r1, [r2] - tst r1, #0x8000 - bne _02205390 - ldr r1, _022054B4 ; =0x040002B4 - ldr r2, _022054B8 ; =0x0221C72C - ldr r1, [r1, #0] - mov r3, #0 - add r1, r1, r1, lsl #1 - mov r1, r1, lsr #1 - str r1, [r2, #0] - ldr r1, _022054A8 ; =0x0221A114 - str r3, [r2, #4] - mov lr, #1 - str lr, [r1] - b _022053D0 -_022053CC: - mov lr, #0 -_022053D0: - ldr r1, _022054B8 ; =0x0221C72C - ldr r3, _022054AC ; =0x0221C738 - ldr ip, [r1, #4] - add r2, ip, #1 - and r2, r2, #3 - str r0, [r3, ip, lsl #2] - str r2, [r1, #4] - b _022054A0 -_022053F0: - ldr r1, _022054B8 ; =0x0221C72C - mov lr, #0 - ldr ip, [r1, #4] - ldr r3, _022054AC ; =0x0221C738 - add r2, ip, #1 - and r2, r2, #3 - mov r4, lr - str r0, [r3, ip, lsl #2] - str r2, [r1, #4] -_02205414: - ldr r0, [r3, r4, lsl #2] - add r4, r4, #1 - cmp r4, #4 - add lr, lr, r0 - blt _02205414 - ldr r1, _022054B0 ; =0x040002B0 - mov r0, #0 - strh r0, [r1] - mov r0, lr, lsr #2 - str r0, [r1, #8] -_0220543C: - ldrh r0, [r1] - tst r0, #0x8000 - bne _0220543C - ldr r0, _022054B4 ; =0x040002B4 - ldr r1, _022054B8 ; =0x0221C72C - ldr r2, [r0, #0] - ldr r0, [r1, #0] - cmp r2, r0 - bhi _02205494 - ldr r2, [r1, #8] - ldr r0, _022054A8 ; =0x0221A114 - add r3, r2, #1 - str r3, [r1, #8] - ldr r2, [r0, #8] - cmp r3, r2 - ble _0220549C - mov r2, #0 - str r2, [r0, #0] - str r2, [r1, #8] - str r2, [r1, #4] - mov r0, #3 - ldmia sp!, {r4, pc} -_02205494: - mov r0, #0 - str r0, [r1, #8] -_0220549C: - mov lr, #2 -_022054A0: - mov r0, lr - ldmia sp!, {r4, pc} - ; .align 2, 0 -_022054A8: .word Unk_ov4_0221A114 -_022054AC: .word Unk_ov4_0221C738 -_022054B0: .word 0x040002B0 -_022054B4: .word 0x040002B4 -_022054B8: .word Unk_ov4_0221C72C - arm_func_end ov4_022052DC - - arm_func_start ov4_022054BC -ov4_022054BC: ; 0x022054BC - mov r2, #0xf - ldr r1, _022054DC ; =0x0221A114 - mov r0, #0x44 - smulbb r0, r2, r0 - str r2, [r1, #8] - ldr ip, _022054E0 ; =ov4_02205270 - str r0, [r1, #0xc] - bx ip - ; .align 2, 0 -_022054DC: .word Unk_ov4_0221A114 -_022054E0: .word ov4_02205270 - arm_func_end ov4_022054BC - - .data - - - .global Unk_ov4_0221A114 -Unk_ov4_0221A114: ; 0x0221A114 - .space 0x8 - .word 0xF - .word 0x3FC - - - - .bss - - - .global Unk_ov4_0221C72C -Unk_ov4_0221C72C: ; 0x0221C72C - .space 0x4 - - .global Unk_ov4_0221C730 -Unk_ov4_0221C730: ; 0x0221C730 - .space 0x4 - - .global Unk_ov4_0221C734 -Unk_ov4_0221C734: ; 0x0221C734 - .space 0x4 - - .global Unk_ov4_0221C738 -Unk_ov4_0221C738: ; 0x0221C738 - .space 0x10 - diff --git a/subprojects/libVCT/asm/vct_main.s b/subprojects/libVCT/asm/vct_main.s deleted file mode 100644 index b9ef1c70e1..0000000000 --- a/subprojects/libVCT/asm/vct_main.s +++ /dev/null @@ -1,257 +0,0 @@ - .include "macros/function.inc" - .include "include/vct_main.inc" - - - - .text - - - arm_func_start VCT_Init -VCT_Init: ; 0x02205988 - stmfd sp!, {r4, lr} - mov r4, r0 - ldr r0, _02205AB4 ; =0x02000C14 - bl OSi_ReferSymbol - cmp r4, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldr r0, _02205AB8 ; =0x0221DBCC - ldr r0, [r0, #8] - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r4, pc} - ldr r0, [r4, #8] - cmp r0, #1 - cmpne r0, #2 - cmpne r0, #3 - movne r0, #0 - ldmneia sp!, {r4, pc} - ldr r0, [r4, #0x18] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldr r2, [r4, #0x10] - cmp r2, #0 - ldrne r0, [r4, #0x14] - cmpne r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - mov r1, r2, lsr #0x1f - rsb r0, r1, r2, lsl #27 - adds r0, r1, r0, ror #27 - movne r0, #0 - ldmneia sp!, {r4, pc} - ldr r0, _02205ABC ; =0x0221DBD8 - mov r1, #0 - mov r2, #0x18 - bl MI_CpuFill8 - ldr r2, [r4, #0x18] - ldr r1, _02205AB8 ; =0x0221DBCC - mov r0, #0 - str r2, [r1, #0x10] - ldr r2, [r4, #0x1c] - str r2, [r1, #0x14] - ldr r2, [r4, #8] - str r2, [r1, #0x1c] - str r0, [r1, #0x18] - ldrb r2, [r4, #0xc] - cmp r2, #0x20 - ldmhsia sp!, {r4, pc} - strb r2, [r1, #0xc] - ldr r0, [r4, #0x10] - ldr r1, [r4, #0x14] - bl ov4_02205128 - cmp r0, #0 - bne _02205A70 - bl ov4_022051F0 - mov r0, #0 - ldmia sp!, {r4, pc} -_02205A70: - mov r0, r4 - bl ov4_022044AC - cmp r0, #0 - bne _02205A8C - bl ov4_022051F0 - mov r0, #0 - ldmia sp!, {r4, pc} -_02205A8C: - bl ov4_02202698 - cmp r0, #0 - ldrne r1, _02205AB8 ; =0x0221DBCC - movne r0, #1 - strne r0, [r1, #8] - ldmneia sp!, {r4, pc} - bl ov4_022045C0 - bl ov4_022051F0 - mov r0, #0 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02205AB4: .word Unk_02000C14 -_02205AB8: .word Unk_ov4_0221DBCC -_02205ABC: .word Unk_ov4_0221DBD8 - arm_func_end VCT_Init - - arm_func_start VCT_Cleanup -VCT_Cleanup: ; 0x02205AC0 - stmfd sp!, {r3, lr} - bl ov4_02202794 - bl ov4_022045C0 - bl ov4_022051F0 - ldr r0, _02205AE4 ; =0x0221DBCC - mov r1, #0 - str r1, [r0, #0x1c] - str r1, [r0, #8] - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02205AE4: .word Unk_ov4_0221DBCC - arm_func_end VCT_Cleanup - - arm_func_start VCT_Main -VCT_Main: ; 0x02205AE8 - stmfd sp!, {r3, lr} - ldr r0, _02205B28 ; =0x0221DBCC - ldr r1, [r0, #8] - cmp r1, #0 - ldmeqia sp!, {r3, pc} - ldr r1, [r0, #0] - add r1, r1, #1 - str r1, [r0, #0] - tst r1, #0xf - bne _02205B14 - bl ov4_022045D8 -_02205B14: - bl ov4_022033F8 - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl ov4_02203328 - ldmia sp!, {r3, pc} - ; .align 2, 0 -_02205B28: .word Unk_ov4_0221DBCC - arm_func_end VCT_Main - - arm_func_start VCT_HandleData -VCT_HandleData: ; 0x02205B2C - stmfd sp!, {r4, lr} - sub sp, sp, #8 - add r3, sp, #0 - mov r4, r0 - bl ov4_02205BA0 - cmp r0, #0 - beq _02205B90 - cmp r0, #1 - beq _02205B5C - cmp r0, #2 - beq _02205B84 - b _02205B90 -_02205B5C: - ldr r0, _02205B9C ; =0x0221DBCC - ldr r1, [sp] - ldr r2, [sp, #4] - ldr r3, [r0, #0x14] - ldr ip, [r0, #0x10] - mov r0, r4 - blx ip - add sp, sp, #8 - mov r0, #1 - ldmia sp!, {r4, pc} -_02205B84: - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r4, pc} -_02205B90: - mov r0, #1 - add sp, sp, #8 - ldmia sp!, {r4, pc} - ; .align 2, 0 -_02205B9C: .word Unk_ov4_0221DBCC - arm_func_end VCT_HandleData - - arm_func_start ov4_02205BA0 -ov4_02205BA0: ; 0x02205BA0 - stmfd sp!, {r3, r4, r5, r6, r7, lr} - movs r6, r1 - mov r7, r0 - mov r5, r2 - mov r4, r3 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, [r6, #0] - ldr r0, _02205C74 ; =0x5F564354 - cmp r1, r0 - movne r0, #2 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, _02205C78 ; =0x0221DBCC - ldr r1, [r0, #0x1c] - cmp r1, #0 - ldrne r0, [r0, #8] - cmpne r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, #0 - str r0, [r4, #0] - str r0, [r4, #4] - bl OS_GetTick - ldrb r2, [r6, #4] - and r3, r2, #0xf0 - cmp r3, #0x40 - bne _02205C3C - ldr r2, _02205C78 ; =0x0221DBCC - mov r3, r0 - ldr r4, [r2, #4] - mov r0, r7 - add r4, r4, #1 - str r4, [r2, #4] - str r1, [sp] - mov r1, r6 - mov r2, r5 - bl ov4_0220313C - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02205C3C: - cmp r2, #0 - cmpne r2, #0xff - bne _02205C6C - mov r0, r7 - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl ov4_02204684 - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02205C6C: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02205C74: .word 0x5F564354 -_02205C78: .word Unk_ov4_0221DBCC - arm_func_end ov4_02205BA0 - - - .section .version, 4,1,2 - - .global Unk_02000C14 -Unk_02000C14: ; 0x02000C14 - .asciz "[SDK+Abiosso:libVCT 1.3.1]" - - - .bss - - - .global Unk_ov4_0221DBCC -Unk_ov4_0221DBCC: ; 0x0221DBCC - .space 0x4 - - .global Unk_ov4_0221DBD0 -Unk_ov4_0221DBD0: ; 0x0221DBD0 - .space 0x4 - - .global Unk_ov4_0221DBD4 -Unk_ov4_0221DBD4: ; 0x0221DBD4 - .space 0x4 - - .global Unk_ov4_0221DBD8 -Unk_ov4_0221DBD8: ; 0x0221DBD8 - .space 0x18 - diff --git a/subprojects/libVCT/include/vct.h b/subprojects/libVCT/include/vct.h deleted file mode 100644 index 9c41ded66d..0000000000 --- a/subprojects/libVCT/include/vct.h +++ /dev/null @@ -1,180 +0,0 @@ -#ifndef VCT_VOICECHAT_H_ -#define VCT_VOICECHAT_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define VCT_ERROR_NONE 0 -#define VCT_ERROR_BAD_PARAM -1 -#define VCT_ERROR_BAD_MODE -2 -#define VCT_ERROR_BAD_REQUEST -3 -#define VCT_ERROR_SEND_FAIL -4 -#define VCT_ERROR_TRANSCEIVER_BUSY -5 -#define VCT_ERROR_EXHAUST_CLIENTS -6 -#define VCT_MAX_SESSION 8 -#define VCT_MAX_TRANSCEIVER_CLIENT 8 -#define VCT_MAX_CONFERENCE_CLIENT 4 -#define VCT_MAX_AUDIO_STREAM (VCT_MAX_CONFERENCE_CLIENT - 1) -#define VCT_MAGIC_PACKET_HEADER '_VCT' -#define VCT_AUDIO_FRAME_LENGTH 68 -#define VCT_AUDIO_FRAME_RATE 8000 -#define VCT_AUDIO_BUFFER_SIZE 1144 -#define VCT_DEFAULT_AUDIO_BUFFER_COUNT 8 -#define VCT_MIN_AUDIO_BUFFER_COUNT 4 -#define VCT_MAX_AUDIO_BUFFER_COUNT (24 * VCT_MAX_AUDIO_STREAM) - -typedef struct _VCTSession VCTSession; - -typedef enum { - VCT_CODEC_8BIT_RAW, - VCT_CODEC_G711_ULAW, - VCT_CODEC_2BIT_ADPCM, - VCT_CODEC_3BIT_ADPCM, - VCT_CODEC_4BIT_ADPCM, - VCT_CODEC_END -} VCTCodec; - -typedef enum { - VCT_MODE_NULL, - VCT_MODE_PHONE, - VCT_MODE_TRANSCEIVER, - VCT_MODE_CONFERENCE -} VCTMode; - -typedef enum { - VCT_EVENT_NONE, - VCT_EVENT_INCOMING, - VCT_EVENT_REJECT, - VCT_EVENT_BUSY, - VCT_EVENT_CANCEL, - VCT_EVENT_NOTIFY_FREE, - VCT_EVENT_NOTIFY_BUSY, - VCT_EVENT_CONNECTED, - VCT_EVENT_RESPONDBYE, - VCT_EVENT_DISCONNECTED, - VCT_EVENT_CONTACT, - VCT_EVENT_TIMEOUT, - VCT_EVENT_ABORT -} VCTEvent; - -typedef enum { - VCT_REQUEST_INVITE = 0, - VCT_REQUEST_BYE, - VCT_REQUEST_CANCEL, - VCT_REQUEST_CONTACT, - VCT_REQUEST_NOTIFY, - VCT_REQUEST_END -} VCTRequestCode; - -typedef enum { - VCT_RESPONSE_OK, - VCT_RESPONSE_BAD_REQUEST, - VCT_RESPONSE_NOT_ACCEPTABLE, - VCT_RESPONSE_BUSY_HERE, - VCT_RESPONSE_TERMINATED, - VCT_RESPONSE_DECLINE, - VCT_RESPONSE_END -} VCTResponseCode; - -typedef enum { - VCT_STATE_INIT, - VCT_STATE_OUTGOING, - VCT_STATE_TALKING, - VCT_STATE_CONNECTED, - VCT_STATE_INCOMING, - VCT_STATE_DISCONNECTING -} VCTState; - -typedef enum { - VCT_REPORTLEVEL_NONE, - VCT_REPORTLEVEL_ALL -} VCTReportLevel; - -typedef struct VCTAudioInfo { - u32 internalLatency; - u32 bufferLatency; - u32 bufferCount; - int clockSkew; - u32 sequence; - u32 dropCount; - u32 jitter; - u32 jamCount; - u32 recoverCount; - VCTCodec codec; -} VCTAudioInfo; - -typedef void (* VCTEventCallback)(u8 aid, VCTEvent result, VCTSession * session, void * param); - -typedef struct { - VCTSession * session; - u32 numSession; - VCTMode mode; - u8 aid; - u8 padding__[3]; - void * audioBuffer; - u32 audioBufferSize; - VCTEventCallback callback; - void * userData; -} VCTConfig; - -struct _VCTSession { - VCTMode mode; - u8 aid; - u8 talking; - u16 padding__; - u32 aidBitmap; - VCTState state; - void * userData; - VCTSession * _next; -}; - -typedef struct _VCTVADInfo { - BOOL activity; - int scale; - int releaseCount; - int releaseTime; -} VCTVADInfo; - -BOOL VCT_Init(VCTConfig * config); -void VCT_Cleanup(void); -void VCT_Main(); -BOOL VCT_HandleData(u8 aid, u8 * buffer, int size); -int VCT_Request(VCTSession * session, VCTRequestCode request); -int VCT_Response(VCTSession * session, VCTResponseCode response); -int VCT_Contact(VCTSession ** outSession); -int VCT_Release(VCTSession * session); -void VCT_SetTransceiverMode(BOOL true_or_false); -int VCT_SetTransceiverServer(u8 aid); -int VCT_SetTransceiverClients(u8 aidList[], int num_of_aid); -void VCT_SetTransceiverTimeout(u32 sec); -int VCT_AddConferenceClient(u8 aid); -int VCT_RemoveConferenceClient(u8 aid); -VCTSession * VCT_CreateSession(u8 aid); -BOOL VCT_DeleteSession(VCTSession * session); -BOOL VCT_StartStreaming(VCTSession * session); -void VCT_StopStreaming(VCTSession * session); -BOOL VCT_SendAudio(void * audio_data, u32 length); -BOOL VCT_ReceiveAudio(void * audio_data, u32 length, u32 * outAIDBitmap); -BOOL VCT_SetCodec(VCTCodec codec); -VCTCodec VCT_GetCodec(void); -void VCT_GetAudioInfo(u32 channel, VCTAudioInfo * info); -void VCT_EnableVAD(BOOL flag); -void VCT_SetVADReleaseTime(int count); -void VCT_ResetVAD(void); -void VCT_GetVADInfo(VCTVADInfo * outInfo); -void VCT_EnableEchoCancel(BOOL flag); - -#ifndef SDK_FINALROM -void VCT_SetReportLevel(VCTReportLevel level); -#else -#define VCT_SetReportLevel(level) ((void)0) -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/subprojects/libVCT/meson.build b/subprojects/libVCT/meson.build deleted file mode 100644 index f227a30372..0000000000 --- a/subprojects/libVCT/meson.build +++ /dev/null @@ -1,34 +0,0 @@ -project('libVCT', ['c', 'nasm']) - -asm_args = [ - '-proc', 'arm5TE', - '-gccinc' -] - -public_includes = include_directories('include') - -libvct_srcs = files( - 'asm/adpcm.s', - 'asm/audio.s', - 'asm/decoder.s', - 'asm/g711.s', - 'asm/queue.s', - 'asm/stream_vct.s', - 'asm/ssp.s', - 'asm/udp_buffer.s', - 'asm/vad.s', - 'asm/fir.s', - 'asm/mixer.s', - 'asm/vct_main.s' -) - -libvct = static_library('vct', - sources: libvct_srcs, - nasm_args: asm_args, - pic: false -) - -libvct_dep = declare_dependency( - include_directories: public_includes, - link_with: libvct -) \ No newline at end of file diff --git a/subprojects/libcrypto/meson.build b/subprojects/libcrypto/meson.build index bfbb03510b..6939c74ad1 100644 --- a/subprojects/libcrypto/meson.build +++ b/subprojects/libcrypto/meson.build @@ -34,4 +34,6 @@ libcrypto_ov97 = static_library('crypto_ov97', libcrypto_dep = declare_dependency( include_directories: public_includes, link_with: [libcrypto_static, libcrypto_ov97] -) \ No newline at end of file +) + +meson.override_dependency('libcrypto', libcrypto_dep) diff --git a/subprojects/libsyscall/meson.build b/subprojects/libsyscall/meson.build index 9f4b958410..646077d472 100644 --- a/subprojects/libsyscall/meson.build +++ b/subprojects/libsyscall/meson.build @@ -14,4 +14,6 @@ libsyscall = static_library('syscall', libsyscall_dep = declare_dependency( link_with: libsyscall -) \ No newline at end of file +) + +meson.override_dependency('libsyscall', libsyscall_dep) diff --git a/subprojects/libvct.wrap b/subprojects/libvct.wrap new file mode 100644 index 0000000000..075882a52c --- /dev/null +++ b/subprojects/libvct.wrap @@ -0,0 +1,8 @@ +[wrap-git] +url = https://github.com/Nomura-RH/libvct.git +revision = head +depth = 1 +directory = libvct-1.3.1 + +[provide] +dependency_names = libvct \ No newline at end of file diff --git a/subprojects/nitrogfx.wrap b/subprojects/nitrogfx.wrap index 2118370632..6abba70289 100644 --- a/subprojects/nitrogfx.wrap +++ b/subprojects/nitrogfx.wrap @@ -2,3 +2,4 @@ url = https://github.com/red031000/nitrogfx.git revision = head depth = 1 +patch_directory = nitrogfx_patch diff --git a/subprojects/packagefiles/libpng_patch/.gitignore b/subprojects/packagefiles/libpng_patch/.gitignore new file mode 100644 index 0000000000..c96a04f008 --- /dev/null +++ b/subprojects/packagefiles/libpng_patch/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore \ No newline at end of file diff --git a/subprojects/packagefiles/nitrogfx_patch/.gitignore b/subprojects/packagefiles/nitrogfx_patch/.gitignore new file mode 100644 index 0000000000..c96a04f008 --- /dev/null +++ b/subprojects/packagefiles/nitrogfx_patch/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore \ No newline at end of file diff --git a/subprojects/packagefiles/zlib_patch/.gitignore b/subprojects/packagefiles/zlib_patch/.gitignore new file mode 100644 index 0000000000..c96a04f008 --- /dev/null +++ b/subprojects/packagefiles/zlib_patch/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore \ No newline at end of file diff --git a/subprojects/ppwlobby/meson.build b/subprojects/ppwlobby/meson.build index 7dfe7c0b67..479bc2b3f2 100644 --- a/subprojects/ppwlobby/meson.build +++ b/subprojects/ppwlobby/meson.build @@ -49,4 +49,6 @@ ppwlobby_dep = declare_dependency( dependencies: [nitrodwc_dep], include_directories: public_includes, link_with: ppwlobby_libs -) \ No newline at end of file +) + +meson.override_dependency('ppwlobby', ppwlobby_dep) \ No newline at end of file diff --git a/tools/cw/mwrap.c b/tools/cw/mwrap.c index 784480785a..8146cd6f22 100644 --- a/tools/cw/mwrap.c +++ b/tools/cw/mwrap.c @@ -483,7 +483,7 @@ int _tmain(int argc, _TCHAR *argv[]) #endif // Build standard library paths for environment variables - size_t mwcincludes_size = _tcslen(tool_dir) + 140; + size_t mwcincludes_size = _tcslen(tool_dir) * 3 + 46; _TCHAR *MWCIncludes = malloc(sizeof(_TCHAR) * mwcincludes_size); _sntprintf(MWCIncludes, mwcincludes_size, _T( FMT_TS "/" FMT_TS FMT_TS FMT_TS "/" FMT_TS FMT_TS FMT_TS "/" FMT_TS), diff --git a/tools/postconf/postconf.py b/tools/postconf/postconf.py index ada00a233a..fc6dec75a0 100644 --- a/tools/postconf/postconf.py +++ b/tools/postconf/postconf.py @@ -34,9 +34,11 @@ def main(): build_ninja_string = backslash_to_forward_slash(build_ninja_string) build_ninja_string = fix_static_libs(build_ninja_string) build_ninja_string = nasm_to_asm(build_ninja_string) + build_ninja_string = relativize_prebuilt_lib_paths(build_ninja_string) # compile_commands.json edits compile_commands_string = backslash_to_forward_slash(compile_commands_string) + compile_commands_string = relativize_prebuilt_lib_paths(compile_commands_string) # For WSL accessing Windows, paths to PCH input files must be relative if is_wsl_accessing_windows(): @@ -51,10 +53,13 @@ def main(): def nasm_to_asm(fileString: str) -> str: return fileString.replace('Nasm', 'ASM') +def relativize_prebuilt_lib_paths(fileString: str) -> str: + '''Make paths to prebuilt .a files relative''' + return re.sub(r'/[\w/\-.]+?(subprojects[\w/\-.]+?prebuilt)', r'../\1', fileString) def relativize_pch_paths(fileString: str) -> str: '''Make paths to headers to be precompiled relative (for WSL)''' - return re.sub(r'c_PCH [\w/]+?subprojects', r'c_PCH ../subprojects', fileString) + return re.sub(r'c_PCH [\w/\-.]+?subprojects', r'c_PCH ../subprojects', fileString) if __name__ == '__main__':