mirror of
https://github.com/pret/pokediamond.git
synced 2026-09-30 20:36:48 -05:00
@@ -1,6 +1,9 @@
|
||||
dist: bionic
|
||||
sudo: false
|
||||
language: c
|
||||
env:
|
||||
global:
|
||||
- LM_LICENSE_FILE="$TRAVIS_BUILD_DIR/tools/mwccarm/license.dat"
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
@@ -24,8 +27,10 @@ install:
|
||||
- mv NITRO\ SDK\ v3.0/include/nitro/specfiles/ARM9-TS.lcf.template arm9
|
||||
|
||||
script:
|
||||
- export LM_LICENSE_FILE="$(pwd)/tools/mwccarm/license.dat"
|
||||
- make
|
||||
|
||||
notifications:
|
||||
email: false
|
||||
|
||||
after_success:
|
||||
- .travis/calcrom/webhook.sh
|
||||
|
||||
1
.travis/calcrom/.gitignore
vendored
Normal file
1
.travis/calcrom/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
calcrom
|
||||
17
.travis/calcrom/Makefile
Normal file
17
.travis/calcrom/Makefile
Normal file
@@ -0,0 +1,17 @@
|
||||
CXX := g++
|
||||
CXXFLAGS := -O3 -std=c++11
|
||||
|
||||
ifeq ($(OS),Windows_NT)
|
||||
EXE := .exe
|
||||
else
|
||||
EXE :=
|
||||
endif
|
||||
|
||||
TARGET := calcrom$(EXE)
|
||||
|
||||
.PHONY: all
|
||||
|
||||
all: $(TARGET)
|
||||
|
||||
$(TARGET): calcrom.cpp
|
||||
$(CXX) $(CXXFLAGS) -o $@ $^
|
||||
121
.travis/calcrom/calcrom.cpp
Normal file
121
.travis/calcrom/calcrom.cpp
Normal file
@@ -0,0 +1,121 @@
|
||||
/*
|
||||
* CALCROM.CPP
|
||||
* © PikalaxALT 2020
|
||||
*
|
||||
* Simple C++ executable to measure the completion rate of Pokémon Diamond
|
||||
* reverse engineering (decompilation).
|
||||
*
|
||||
* Requirements:
|
||||
* - Must have C++11 compliant compiler.
|
||||
* - MacOS X: Must provide elf.h on the include (-I) path.
|
||||
* - Must be placed in ".travis/calcrom/".
|
||||
*
|
||||
* Changelog:
|
||||
* - 1.0 (26 May 2020): Initial implementation
|
||||
*/
|
||||
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <sstream>
|
||||
#include <elf.h>
|
||||
#include <glob.h>
|
||||
#include <string.h>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
using namespace std;
|
||||
|
||||
struct Glob : public vector<char const *> {
|
||||
glob_t glob_result;
|
||||
public:
|
||||
Glob(string const & pattern) {
|
||||
int result = glob(pattern.c_str(), GLOB_TILDE | GLOB_BRACE, NULL, &glob_result);
|
||||
if (result) {
|
||||
stringstream ss;
|
||||
ss << "Glob(" << pattern << ") failed with error " << result << endl;
|
||||
throw runtime_error(ss.str());
|
||||
}
|
||||
assign(glob_result.gl_pathv, glob_result.gl_pathv + glob_result.gl_pathc);
|
||||
};
|
||||
void operator~() {
|
||||
globfree(&glob_result);
|
||||
}
|
||||
};
|
||||
|
||||
int main()
|
||||
{
|
||||
fstream elf;
|
||||
Elf32_Ehdr ehdr;
|
||||
vector<Elf32_Shdr> shdr;
|
||||
|
||||
// Accumulate sizes
|
||||
// src asm
|
||||
// data _____|_____
|
||||
// text |
|
||||
unsigned sizes[2][2] = {{0, 0}, {0, 0}};
|
||||
char * shstrtab = NULL;
|
||||
size_t shstrsz = 0;
|
||||
for (char const * & fname : Glob("../../arm9/{src,asm,lib/{src,asm},modules/*/{src,asm}}/*.{c,s,cpp}"))
|
||||
{
|
||||
string fname_s(fname);
|
||||
string ext = fname_s.substr(fname_s.rfind('.'), 4);
|
||||
bool is_asm = ext == ".s";
|
||||
fname_s = fname_s.replace(fname_s.find("arm9"), 4, "arm9/build");
|
||||
fname_s = fname_s.replace(fname_s.rfind('.'), 4, ".o");
|
||||
elf.open(fname_s, ios_base::in | ios_base::binary);
|
||||
elf.read((char *)&ehdr, sizeof(ehdr));
|
||||
if (memcmp(ehdr.e_ident, ELFMAG, SELFMAG) != 0) {
|
||||
elf.close();
|
||||
stringstream ss;
|
||||
ss << "Error validating " << fname_s << " as an ELF file" << endl;
|
||||
throw runtime_error(ss.str());
|
||||
}
|
||||
// Read ELF sections
|
||||
elf.seekg(ehdr.e_shoff);
|
||||
shdr.resize(ehdr.e_shnum);
|
||||
elf.read((char *)shdr.data(), ehdr.e_shnum * ehdr.e_shentsize);
|
||||
|
||||
// Read .shstrtab
|
||||
if (shstrsz < shdr[ehdr.e_shstrndx].sh_size) {
|
||||
shstrtab = (char *)realloc(shstrtab, shdr[ehdr.e_shstrndx].sh_size);
|
||||
shstrsz = shdr[ehdr.e_shstrndx].sh_size;
|
||||
}
|
||||
elf.seekg(shdr[ehdr.e_shstrndx].sh_offset);
|
||||
elf.read(shstrtab, shdr[ehdr.e_shstrndx].sh_size);
|
||||
elf.close();
|
||||
|
||||
// Analyze sections
|
||||
for (Elf32_Shdr & hdr : shdr) {
|
||||
string shname = shstrtab + hdr.sh_name;
|
||||
bool is_text = (shname == ".text" || shname == ".init");
|
||||
bool is_data = (shname == ".data" || shname == ".rodata" || shname == ".sdata");
|
||||
size_t size = hdr.sh_size + (hdr.sh_size & 3 ? 4 - (hdr.sh_size & 3) : 0);
|
||||
if (is_text || is_data)
|
||||
{
|
||||
sizes[is_text][is_asm] += size;
|
||||
}
|
||||
}
|
||||
}
|
||||
free(shstrtab);
|
||||
|
||||
cout << "Analysis of ARM9 binary:" << endl;
|
||||
// Report code
|
||||
unsigned total_text = sizes[1][0] + sizes[1][1];
|
||||
double total_text_d = total_text;
|
||||
double src_text_d = sizes[1][0];
|
||||
double asm_text_d = sizes[1][1];
|
||||
cout << total_text << " total bytes of code" << endl;
|
||||
cout << " " << sizes[1][0] << " bytes of code in src (" << (src_text_d / total_text_d * 100.0) << "%)" << endl;
|
||||
cout << " " << sizes[1][1] << " bytes of code in asm (" << (asm_text_d / total_text_d * 100.0) << "%)" << endl;
|
||||
cout << endl;
|
||||
// Report data
|
||||
unsigned total_data = sizes[0][0] + sizes[0][1];
|
||||
double total_data_d = total_data;
|
||||
double src_data_d = sizes[0][0];
|
||||
double asm_data_d = sizes[0][1];
|
||||
cout << total_data << " total bytes of data" << endl;
|
||||
cout << " " << sizes[0][0] << " bytes of data in src (" << (src_data_d / total_data_d * 100.0) << "%)" << endl;
|
||||
cout << " " << sizes[0][1] << " bytes of data in asm (" << (asm_data_d / total_data_d * 100.0) << "%)" << endl;
|
||||
// Let vectors fall to gc
|
||||
return 0;
|
||||
}
|
||||
19
.travis/calcrom/webhook.sh
Normal file
19
.travis/calcrom/webhook.sh
Normal file
@@ -0,0 +1,19 @@
|
||||
#!/bin/bash -ex
|
||||
|
||||
# Only run this script if it's the master branch build.
|
||||
if [[ "$TRAVIS_BRANCH" != "master" || "$TRAVIS_PULL_REQUEST" != "false" ]]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
build_name=$1
|
||||
map_file=$(dirname "$0")/../../arm9/build/arm9.elf.xMAP
|
||||
if [ ! -f $map_file ]; then
|
||||
echo "$map_file does not exist!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
pushd $(dirname "$0")
|
||||
make
|
||||
output=$(./calcrom | sed -E ':a;N;$!ba;s/\r{0,1}\n/\\n/g')
|
||||
curl -d "{\"username\": \"$CALCROM_DISCORD_WEBHOOK_USERNAME\", \"avatar_url\": \"$CALCROM_DISCORD_WEBHOOK_AVATAR_URL\", \"content\":\"\`\`\`$build_name progress:\\n$output\`\`\`\"}" -H "Content-Type: application/json" -X POST $CALCROM_DISCORD_WEBHOOK_URL
|
||||
popd
|
||||
@@ -1,5 +1,6 @@
|
||||
cmake_minimum_required (VERSION 2.8.11)
|
||||
project(PokeDiamond)
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
|
||||
# TODO: Add commands
|
||||
|
||||
@@ -9,3 +10,6 @@ file(GLOB_RECURSE SOURCES RELATIVE ${CMAKE_SOURCE_DIR} "*.c" "*.cpp")
|
||||
|
||||
add_executable(PokeDiamond ${SOURCES})
|
||||
target_include_directories(PokeDiamond PRIVATE include include-mw arm9/lib/include)
|
||||
|
||||
add_executable(calcrom .travis/calcrom/calcrom.cpp)
|
||||
target_include_directories(calcrom PRIVATE /usr/local/include)
|
||||
|
||||
@@ -431,7 +431,38 @@ SECTIONS {
|
||||
unk_0208AC14.o (.text)
|
||||
custom_allocator.o (.text)
|
||||
unk_020910EC.o (.text)
|
||||
unk_020AF030.o (.text)
|
||||
DWC_backup.o (.text)
|
||||
DWC_bm_init.o (.text)
|
||||
DWC_util_wifiidtool.o (.text)
|
||||
DWC_init.o (.text)
|
||||
DWC_account.o (.text)
|
||||
SOC_socl_startup.o (.text)
|
||||
SOC_socl_command.o (.text)
|
||||
SOC_socl_create.o (.text)
|
||||
SOC_socl_bind.o (.text)
|
||||
SOC_socl_read.o (.text)
|
||||
SOC_socl_shutdown.o (.text)
|
||||
SOC_socl_close.o (.text)
|
||||
SOC_socl_cleanup.o (.text)
|
||||
SOC_socl_poll.o (.text)
|
||||
SOC_socl_const.o (.text)
|
||||
SOC_socl_misc.o (.text)
|
||||
SOC_socl_list.o (.text)
|
||||
SOC_soc.o (.text)
|
||||
SOC_socl_ssl.o (.text)
|
||||
CPS_network.o (.text)
|
||||
SSL_ssl.o (.text)
|
||||
SSL_md5.o (.text)
|
||||
SSL_sha1.o (.text)
|
||||
SSL_rca4.o (.text)
|
||||
SSL_biginteger.o (.text)
|
||||
WCM_system.o (.text)
|
||||
WCM_aplist.o (.text)
|
||||
WCM_cpsif.o (.text)
|
||||
WCM_util.o (.text)
|
||||
WIFI_stubsmd5_dummy.o (.text)
|
||||
libVCT.o (.text)
|
||||
unk_020ADA84.o (.text)
|
||||
/* Nitro SDK */
|
||||
FX_mtx22.o (.text)
|
||||
FX_mtx33.o (.text)
|
||||
@@ -706,7 +737,18 @@ SECTIONS {
|
||||
unk_02089F24.o (.rodata)
|
||||
unk_0208A998.o (.rodata)
|
||||
unk_020910EC.o (.rodata)
|
||||
unk_020AF030.o (.rodata)
|
||||
DWC_bm_init.o (.rodata)
|
||||
DWC_util_wifiidtool.o (.rodata)
|
||||
SOC_soc.o (.rodata)
|
||||
CPS_network.o (.rodata)
|
||||
SSL_ssl.o (.rodata)
|
||||
SSL_md5.o (.rodata)
|
||||
SSL_sha1.o (.rodata)
|
||||
SSL_rca4.o (.rodata)
|
||||
SSL_biginteger.o (.rodata)
|
||||
WCM_system.o (.rodata)
|
||||
libVCT.o (.rodata)
|
||||
unk_020ADA84.o (.rodata)
|
||||
FX_atan.o (.rodata)
|
||||
GX_load3d.o (.rodata)
|
||||
SND_util.o (.rodata)
|
||||
@@ -760,7 +802,18 @@ SECTIONS {
|
||||
unk_020893E0.o (.data)
|
||||
unk_0208AC14.o (.data)
|
||||
unk_020910EC.o (.data)
|
||||
unk_020AF030.o (.data)
|
||||
DWC_backup.o (.data)
|
||||
DWC_account.o (.data)
|
||||
SOC_socl_bind.o (.data)
|
||||
SOC_soc.o (.data)
|
||||
CPS_network.o (.data)
|
||||
SSL_ssl.o (.data)
|
||||
SSL_md5.o (.data)
|
||||
SSL_sha1.o (.data)
|
||||
SSL_rca4.o (.data)
|
||||
SSL_biginteger.o (.data)
|
||||
libVCT.o (.data)
|
||||
unk_020ADA84.o (.data)
|
||||
GX.o (.data)
|
||||
OS_irqHandler.o (.data)
|
||||
OS_emulator.o (.data)
|
||||
@@ -840,7 +893,23 @@ SECTIONS {
|
||||
unk_0208AC14.o (.bss)
|
||||
custom_allocator.o (.bss)
|
||||
unk_020910EC.o (.bss)
|
||||
unk_020AF030.o (.bss)
|
||||
DWC_backup.o (.bss)
|
||||
SOC_socl_startup.o (.bss)
|
||||
SOC_socl_command.o (.bss)
|
||||
SOC_socl_read.o (.bss)
|
||||
SOC_socl_list.o (.bss)
|
||||
SOC_soc.o (.bss)
|
||||
CPS_network.o (.bss)
|
||||
SSL_ssl.o (.bss)
|
||||
SSL_md5.o (.bss)
|
||||
SSL_sha1.o (.bss)
|
||||
SSL_rca4.o (.bss)
|
||||
SSL_biginteger.o (.bss)
|
||||
WCM_system.o (.bss)
|
||||
WCM_cpsif.o (.bss)
|
||||
WCM_util.o (.bss)
|
||||
libVCT.o (.bss)
|
||||
unk_020ADA84.o (.bss)
|
||||
GX.o (.bss)
|
||||
GX_state.o (.bss)
|
||||
GX_load2d.o (.bss)
|
||||
|
||||
6410
arm9/asm/CPS_network.s
Normal file
6410
arm9/asm/CPS_network.s
Normal file
File diff suppressed because it is too large
Load Diff
847
arm9/asm/DWC_account.s
Normal file
847
arm9/asm/DWC_account.s
Normal file
@@ -0,0 +1,847 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.section .data
|
||||
|
||||
.global UNK_0210618C
|
||||
UNK_0210618C: ; 0x0210618C
|
||||
.asciz "%s%c%c%c%c%s"
|
||||
|
||||
.balign 4, 0
|
||||
.global UNK_0210619C
|
||||
UNK_0210619C: ; 0x0210619C
|
||||
; .asciz "0123456789abcdefghijklmnopqrstuvwxyz"
|
||||
.byte 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66
|
||||
.byte 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start DWC_IsEqualFriendData
|
||||
DWC_IsEqualFriendData: ; 0x02096B78
|
||||
stmdb sp!, {r4-r7,lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r4, r1
|
||||
mov r7, r0
|
||||
bl DWCi_Acc_GetFlag_DataType
|
||||
mov r5, r0
|
||||
mov r0, r4
|
||||
bl DWCi_Acc_GetFlag_DataType
|
||||
cmp r5, r0
|
||||
addne sp, sp, #0x4
|
||||
movne r0, #0x0
|
||||
ldmneia sp!, {r4-r7,pc}
|
||||
cmp r5, #0x3
|
||||
bne _02096BD8
|
||||
mov r0, r7
|
||||
bl DWCi_Acc_GetGsProfileId
|
||||
mov r5, r0
|
||||
mov r0, r4
|
||||
bl DWCi_Acc_GetGsProfileId
|
||||
cmp r5, r0
|
||||
moveq r0, #0x1
|
||||
add sp, sp, #0x4
|
||||
movne r0, #0x0
|
||||
ldmia sp!, {r4-r7,pc}
|
||||
_02096BD8:
|
||||
cmp r5, #0x1
|
||||
bne _02096C34
|
||||
mov r0, r7
|
||||
bl DWCi_Acc_GetUserId
|
||||
mov r5, r0
|
||||
mov r6, r1
|
||||
mov r0, r4
|
||||
bl DWCi_Acc_GetUserId
|
||||
cmp r6, r1
|
||||
cmpeq r5, r0
|
||||
bne _02096C28
|
||||
mov r0, r7
|
||||
bl DWCi_Acc_GetPlayerId
|
||||
mov r5, r0
|
||||
mov r0, r4
|
||||
bl DWCi_Acc_GetPlayerId
|
||||
cmp r5, r0
|
||||
addeq sp, sp, #0x4
|
||||
moveq r0, #0x1
|
||||
ldmeqia sp!, {r4-r7,pc}
|
||||
_02096C28:
|
||||
add sp, sp, #0x4
|
||||
mov r0, #0x0
|
||||
ldmia sp!, {r4-r7,pc}
|
||||
_02096C34:
|
||||
cmp r5, #0x2
|
||||
bne _02096C6C
|
||||
mov r0, r7
|
||||
bl DWCi_Acc_GetFriendKey
|
||||
mov r5, r0
|
||||
mov r6, r1
|
||||
mov r0, r4
|
||||
bl DWCi_Acc_GetFriendKey
|
||||
cmp r6, r1
|
||||
cmpeq r5, r0
|
||||
moveq r0, #0x1
|
||||
add sp, sp, #0x4
|
||||
movne r0, #0x0
|
||||
ldmia sp!, {r4-r7,pc}
|
||||
_02096C6C:
|
||||
mov r0, #0x0
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r7,pc}
|
||||
|
||||
arm_func_start DWC_LoginIdToUserName
|
||||
DWC_LoginIdToUserName: ; 0x02096C78
|
||||
ldr ip, _02096C8C ; =DWCi_Acc_LoginIdToUserName
|
||||
mov r3, r0
|
||||
mov r0, r1
|
||||
ldr r1, [r3, #0x24]
|
||||
bx r12
|
||||
.balign 4
|
||||
_02096C8C: .word DWCi_Acc_LoginIdToUserName
|
||||
|
||||
arm_func_start DWC_SetGsProfileId
|
||||
DWC_SetGsProfileId: ; 0x02096C90
|
||||
stmdb sp!, {r4-r5,lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r4, r1
|
||||
mov r5, r0
|
||||
mov r1, #0x0
|
||||
mov r2, #0xc
|
||||
bl MI_CpuFill8
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
bl DWCi_Acc_SetGsProfileId
|
||||
mov r0, r5
|
||||
mov r1, #0x3
|
||||
bl DWCi_Acc_SetFlag_DataType
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r5,pc}
|
||||
|
||||
arm_func_start DWC_CreateExchangeToken
|
||||
DWC_CreateExchangeToken: ; 0x02096CCC
|
||||
stmdb sp!, {r4-r5,lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r4, r1
|
||||
mov r5, r0
|
||||
mov r0, r4
|
||||
mov r1, #0x0
|
||||
mov r2, #0xc
|
||||
bl MI_CpuFill8
|
||||
mov r0, r5
|
||||
bl DWCi_Acc_IsAuthentic
|
||||
cmp r0, #0x0
|
||||
addeq r0, r5, #0x4
|
||||
ldmeqia r0, {r0-r2}
|
||||
addeq sp, sp, #0x4
|
||||
stmeqia r4, {r0-r2}
|
||||
ldmeqia sp!, {r4-r5,pc}
|
||||
ldr r1, [r5, #0x1c]
|
||||
mov r0, r4
|
||||
bl DWCi_Acc_SetGsProfileId
|
||||
mov r0, r4
|
||||
mov r1, #0x3
|
||||
bl DWCi_Acc_SetFlag_DataType
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r5,pc}
|
||||
|
||||
arm_func_start DWC_CreateFriendKeyToken
|
||||
DWC_CreateFriendKeyToken: ; 0x02096D2C
|
||||
stmdb sp!, {r4-r6,lr}
|
||||
mov r5, r1
|
||||
mov r4, r2
|
||||
mov r6, r0
|
||||
mov r1, #0x0
|
||||
mov r2, #0xc
|
||||
bl MI_CpuFill8
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
mov r2, r4
|
||||
bl DWCi_Acc_SetFriendKey
|
||||
mov r0, r6
|
||||
mov r1, #0x2
|
||||
bl DWCi_Acc_SetFlag_DataType
|
||||
ldmia sp!, {r4-r6,pc}
|
||||
|
||||
arm_func_start DWC_CreateFriendKey
|
||||
DWC_CreateFriendKey: ; 0x02096D68
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r3, r0
|
||||
ldr r0, [r3, #0x1c]
|
||||
mov r2, #0x0
|
||||
mov r1, r2
|
||||
cmp r0, #0x0
|
||||
beq _02096D94
|
||||
ldr r1, [r3, #0x24]
|
||||
bl DWC_Acc_CreateFriendKey
|
||||
mov r2, r0
|
||||
_02096D94:
|
||||
mov r0, r2
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {pc}
|
||||
|
||||
arm_func_start DWC_GetGsProfileId
|
||||
DWC_GetGsProfileId: ; 0x02096DA0
|
||||
stmdb sp!, {r4-r6,lr}
|
||||
mov r4, r1
|
||||
mov r6, r0
|
||||
mov r0, r4
|
||||
bl DWCi_Acc_GetFlag_DataType
|
||||
cmp r0, #0x1
|
||||
beq _02096E14
|
||||
cmp r0, #0x2
|
||||
beq _02096DD0
|
||||
cmp r0, #0x3
|
||||
beq _02096E08
|
||||
b _02096E1C
|
||||
_02096DD0:
|
||||
mov r0, r4
|
||||
bl DWCi_Acc_GetFriendKey
|
||||
ldr r2, [r6, #0x24]
|
||||
mov r4, r0
|
||||
mov r5, r1
|
||||
bl DWC_Acc_CheckFriendKey
|
||||
cmp r0, #0x0
|
||||
moveq r0, #0x0
|
||||
ldmeqia sp!, {r4-r6,pc}
|
||||
ldr r2, [r6, #0x24]
|
||||
mov r0, r4
|
||||
mov r1, r5
|
||||
bl DWC_Acc_FriendKeyToGsProfileId
|
||||
ldmia sp!, {r4-r6,pc}
|
||||
_02096E08:
|
||||
mov r0, r4
|
||||
bl DWCi_Acc_GetGsProfileId
|
||||
ldmia sp!, {r4-r6,pc}
|
||||
_02096E14:
|
||||
mvn r0, #0x0
|
||||
ldmia sp!, {r4-r6,pc}
|
||||
_02096E1C:
|
||||
mov r0, #0x0
|
||||
ldmia sp!, {r4-r6,pc}
|
||||
|
||||
arm_func_start DWC_GetFriendKey
|
||||
DWC_GetFriendKey: ; 0x02096E24
|
||||
stmdb sp!, {r4,lr}
|
||||
mov r4, r0
|
||||
bl DWCi_Acc_GetFlag_DataType
|
||||
cmp r0, #0x2
|
||||
movne r0, #0x0
|
||||
movne r1, r0
|
||||
ldmneia sp!, {r4,pc}
|
||||
mov r0, r4
|
||||
bl DWCi_Acc_GetFriendKey
|
||||
ldmia sp!, {r4,pc}
|
||||
|
||||
arm_func_start DWCi_Acc_ClearDirty
|
||||
DWCi_Acc_ClearDirty: ; 0x02096E4C
|
||||
stmdb sp!, {r4,lr}
|
||||
sub sp, sp, #0x400
|
||||
mov r4, r0
|
||||
ldr r1, [r4, #0x20]
|
||||
add r0, sp, #0x0
|
||||
bic r2, r1, #0x1
|
||||
ldr r1, _02096E8C ; =0xEDB88320
|
||||
str r2, [r4, #0x20]
|
||||
bl MATHi_CRC32InitTableRev
|
||||
add r0, sp, #0x0
|
||||
mov r1, r4
|
||||
mov r2, #0x3c
|
||||
bl MATH_CalcCRC32
|
||||
str r0, [r4, #0x3c]
|
||||
add sp, sp, #0x400
|
||||
ldmia sp!, {r4,pc}
|
||||
.balign 4
|
||||
_02096E8C: .word 0xEDB88320
|
||||
|
||||
arm_func_start DWC_ClearDirtyFlag
|
||||
DWC_ClearDirtyFlag: ; 0x02096E90
|
||||
ldr ip, _02096E98 ; =DWCi_Acc_ClearDirty
|
||||
bx r12
|
||||
.balign 4
|
||||
_02096E98: .word DWCi_Acc_ClearDirty
|
||||
|
||||
arm_func_start DWCi_Acc_IsDirty
|
||||
DWCi_Acc_IsDirty: ; 0x02096E9C
|
||||
ldr r0, [r0, #0x20]
|
||||
and r0, r0, #0x1
|
||||
cmp r0, #0x1
|
||||
moveq r0, #0x1
|
||||
movne r0, #0x0
|
||||
bx lr
|
||||
|
||||
arm_func_start DWC_CheckDirtyFlag
|
||||
DWC_CheckDirtyFlag: ; 0x02096EB4
|
||||
ldr ip, _02096EBC ; =DWCi_Acc_IsDirty
|
||||
bx r12
|
||||
.balign 4
|
||||
_02096EBC: .word DWCi_Acc_IsDirty
|
||||
|
||||
arm_func_start DWCi_Acc_SetLoginIdToUserData
|
||||
DWCi_Acc_SetLoginIdToUserData: ; 0x02096EC0
|
||||
stmdb sp!, {r4,lr}
|
||||
sub sp, sp, #0x400
|
||||
mov r4, r0
|
||||
add r3, r4, #0x10
|
||||
mov r12, r2
|
||||
ldmia r1, {r0-r2}
|
||||
stmia r3, {r0-r2}
|
||||
ldr r1, _02096F14 ; =0xEDB88320
|
||||
add r0, sp, #0x0
|
||||
str r12, [r4, #0x1c]
|
||||
bl MATHi_CRC32InitTableRev
|
||||
add r0, sp, #0x0
|
||||
mov r1, r4
|
||||
mov r2, #0x3c
|
||||
bl MATH_CalcCRC32
|
||||
str r0, [r4, #0x3c]
|
||||
ldr r0, [r4, #0x20]
|
||||
orr r0, r0, #0x1
|
||||
str r0, [r4, #0x20]
|
||||
add sp, sp, #0x400
|
||||
ldmia sp!, {r4,pc}
|
||||
.balign 4
|
||||
_02096F14: .word 0xEDB88320
|
||||
|
||||
arm_func_start DWC_CheckValidConsole
|
||||
DWC_CheckValidConsole: ; 0x02096F18
|
||||
stmdb sp!, {r4,lr}
|
||||
sub sp, sp, #0x18
|
||||
mov r4, r0
|
||||
add r0, r4, #0x10
|
||||
bl DWCi_Acc_GetFlag_DataType
|
||||
cmp r0, #0x0
|
||||
addeq sp, sp, #0x18
|
||||
moveq r0, #0x1
|
||||
ldmeqia sp!, {r4,pc}
|
||||
add r0, sp, #0x0
|
||||
bl DWC_Auth_GetId
|
||||
ldr r0, [sp, #0x10]
|
||||
cmp r0, #0x0
|
||||
addeq sp, sp, #0x18
|
||||
moveq r0, #0x0
|
||||
ldmeqia sp!, {r4,pc}
|
||||
add r0, r4, #0x10
|
||||
bl DWCi_Acc_GetUserId
|
||||
ldr r2, [sp, #0x4]
|
||||
ldr r3, [sp, #0x0]
|
||||
cmp r2, r1
|
||||
cmpeq r3, r0
|
||||
moveq r0, #0x1
|
||||
movne r0, #0x0
|
||||
add sp, sp, #0x18
|
||||
ldmia sp!, {r4,pc}
|
||||
|
||||
arm_func_start DWC_CheckHasProfile
|
||||
DWC_CheckHasProfile: ; 0x02096F80
|
||||
stmdb sp!, {r4,lr}
|
||||
mov r4, r0
|
||||
add r0, r4, #0x10
|
||||
bl DWCi_Acc_IsValidLoginId
|
||||
cmp r0, #0x0
|
||||
beq _02096FA8
|
||||
ldr r0, [r4, #0x1c]
|
||||
cmp r0, #0x0
|
||||
movgt r0, #0x1
|
||||
ldmgtia sp!, {r4,pc}
|
||||
_02096FA8:
|
||||
mov r0, #0x0
|
||||
ldmia sp!, {r4,pc}
|
||||
|
||||
arm_func_start DWC_CheckUserData
|
||||
DWC_CheckUserData: ; 0x02096FB0
|
||||
stmdb sp!, {r4,lr}
|
||||
sub sp, sp, #0x400
|
||||
ldr r1, _02096FF0 ; =0xEDB88320
|
||||
mov r4, r0
|
||||
add r0, sp, #0x0
|
||||
bl MATHi_CRC32InitTableRev
|
||||
add r0, sp, #0x0
|
||||
mov r1, r4
|
||||
mov r2, #0x3c
|
||||
bl MATH_CalcCRC32
|
||||
ldr r1, [r4, #0x3c]
|
||||
cmp r0, r1
|
||||
moveq r0, #0x1
|
||||
movne r0, #0x0
|
||||
add sp, sp, #0x400
|
||||
ldmia sp!, {r4,pc}
|
||||
.balign 4
|
||||
_02096FF0: .word 0xEDB88320
|
||||
|
||||
arm_func_start DWC_CreateUserData
|
||||
DWC_CreateUserData: ; 0x02096FF4
|
||||
ldr ip, _02096FFC ; =DWCi_Acc_CreateUserData
|
||||
bx r12
|
||||
.balign 4
|
||||
_02096FFC: .word DWCi_Acc_CreateUserData
|
||||
|
||||
arm_func_start DWCi_Acc_IsValidFriendData
|
||||
DWCi_Acc_IsValidFriendData: ; 0x02097000
|
||||
ldr ip, _02097008 ; =DWC_IsValidFriendData
|
||||
bx r12
|
||||
.balign 4
|
||||
_02097008: .word DWC_IsValidFriendData
|
||||
|
||||
arm_func_start DWC_IsValidFriendData
|
||||
DWC_IsValidFriendData: ; 0x0209700C
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0x4
|
||||
bl DWCi_Acc_GetFlag_DataType
|
||||
cmp r0, #0x0
|
||||
movne r0, #0x1
|
||||
moveq r0, #0x0
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {pc}
|
||||
|
||||
arm_func_start DWCi_Acc_IsAuthentic
|
||||
DWCi_Acc_IsAuthentic:
|
||||
ldr ip, _02097038 ; =DWCi_Acc_IsValidLoginId
|
||||
add r0, r0, #0x10
|
||||
bx r12
|
||||
.balign 4
|
||||
_02097038: .word DWCi_Acc_IsValidLoginId
|
||||
|
||||
arm_func_start DWCi_Acc_IsValidLoginId
|
||||
DWCi_Acc_IsValidLoginId:
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0x4
|
||||
bl DWCi_Acc_GetFlag_DataType
|
||||
cmp r0, #0x1
|
||||
moveq r0, #0x1
|
||||
movne r0, #0x0
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {pc}
|
||||
|
||||
arm_func_start DWCi_Acc_CheckConsoleUserId
|
||||
DWCi_Acc_CheckConsoleUserId: ; 0x0209705C
|
||||
stmdb sp!, {r4,lr}
|
||||
sub sp, sp, #0x18
|
||||
mov r4, r0
|
||||
add r0, sp, #0x0
|
||||
bl DWC_Auth_GetId
|
||||
ldr r0, [sp, #0x10]
|
||||
cmp r0, #0x0
|
||||
beq _020970A4
|
||||
mov r0, r4
|
||||
bl DWCi_Acc_GetUserId
|
||||
ldr r2, [sp, #0x4]
|
||||
ldr r3, [sp, #0x0]
|
||||
cmp r2, r1
|
||||
cmpeq r3, r0
|
||||
moveq r0, #0x1
|
||||
add sp, sp, #0x18
|
||||
movne r0, #0x0
|
||||
ldmia sp!, {r4,pc}
|
||||
_020970A4:
|
||||
mov r0, r4
|
||||
bl DWCi_Acc_GetUserId
|
||||
ldr r2, [sp, #0xc]
|
||||
ldr r3, [sp, #0x8]
|
||||
cmp r2, r1
|
||||
cmpeq r3, r0
|
||||
moveq r0, #0x1
|
||||
movne r0, #0x0
|
||||
add sp, sp, #0x18
|
||||
ldmia sp!, {r4,pc}
|
||||
|
||||
arm_func_start DWCi_Acc_CreateTempLoginId
|
||||
DWCi_Acc_CreateTempLoginId: ; 0x020970CC
|
||||
stmdb sp!, {r4-r6,lr}
|
||||
sub sp, sp, #0x38
|
||||
mov r6, r0
|
||||
add r0, sp, #0x14
|
||||
bl OS_GetLowEntropyData
|
||||
mov r3, #0x1
|
||||
add r2, sp, #0x14
|
||||
_020970E8:
|
||||
add r0, r2, r3, lsl #0x2
|
||||
ldr r1, [r2, r3, lsl #0x2]
|
||||
ldr r0, [r0, #-0x4]
|
||||
eor r0, r1, r0
|
||||
str r0, [r2, r3, lsl #0x2]
|
||||
add r3, r3, #0x1
|
||||
cmp r3, #0x8
|
||||
blo _020970E8
|
||||
add r0, sp, #0x0
|
||||
ldr r5, [sp, #0x30]
|
||||
mov r4, #0x0
|
||||
bl DWC_Auth_GetId
|
||||
ldr r0, [sp, #0x10]
|
||||
cmp r0, #0x0
|
||||
beq _02097138
|
||||
ldr r1, [sp, #0x0]
|
||||
ldr r2, [sp, #0x4]
|
||||
mov r0, r6
|
||||
bl DWCi_Acc_SetUserId
|
||||
b _02097148
|
||||
_02097138:
|
||||
ldr r1, [sp, #0x8]
|
||||
ldr r2, [sp, #0xc]
|
||||
mov r0, r6
|
||||
bl DWCi_Acc_SetUserId
|
||||
_02097148:
|
||||
ldr r0, _02097184 ; =0x6C078965
|
||||
ldr r1, _02097188 ; =0x5D588B65
|
||||
umull r3, r2, r5, r0
|
||||
mla r2, r5, r1, r2
|
||||
ldr r1, _0209718C ; =0x00269EC3
|
||||
mla r2, r4, r0, r2
|
||||
adds r0, r3, r1
|
||||
mov r0, r6
|
||||
adc r1, r2, #0x0
|
||||
bl DWCi_Acc_SetPlayerId
|
||||
mov r0, r6
|
||||
mov r1, #0x1
|
||||
bl DWCi_Acc_SetFlag_DataType
|
||||
add sp, sp, #0x38
|
||||
ldmia sp!, {r4-r6,pc}
|
||||
.balign 4
|
||||
_02097184: .word 0x6C078965
|
||||
_02097188: .word 0x5D588B65
|
||||
_0209718C: .word 0x00269EC3
|
||||
|
||||
arm_func_start DWCi_Acc_CreateUserData
|
||||
DWCi_Acc_CreateUserData: ; 0x02097190
|
||||
stmdb sp!, {r4-r5,lr}
|
||||
ldr ip, _02097210 ; =0x00000404
|
||||
sub sp, sp, r12
|
||||
mov r4, r1
|
||||
mov r1, #0x0
|
||||
mov r2, #0x40
|
||||
mov r5, r0
|
||||
bl MI_CpuFill8
|
||||
mov r0, #0x40
|
||||
str r0, [r5, #0x0]
|
||||
mov r0, #0x0
|
||||
str r0, [r5, #0x1c]
|
||||
add r0, r5, #0x4
|
||||
str r4, [r5, #0x24]
|
||||
bl DWCi_Acc_CreateTempLoginId
|
||||
add r0, r5, #0x10
|
||||
mov r1, #0x0
|
||||
bl DWCi_Acc_SetFlag_DataType
|
||||
ldr r1, _02097214 ; =0xEDB88320
|
||||
add r0, sp, #0x0
|
||||
bl MATHi_CRC32InitTableRev
|
||||
add r0, sp, #0x0
|
||||
mov r1, r5
|
||||
mov r2, #0x3c
|
||||
bl MATH_CalcCRC32
|
||||
str r0, [r5, #0x3c]
|
||||
ldr r0, [r5, #0x20]
|
||||
orr r0, r0, #0x1
|
||||
str r0, [r5, #0x20]
|
||||
ldr ip, _02097210 ; =0x00000404
|
||||
add sp, sp, r12
|
||||
ldmia sp!, {r4-r5,pc}
|
||||
.balign 4
|
||||
_02097210: .word 0x00000404
|
||||
_02097214: .word 0xEDB88320
|
||||
|
||||
arm_func_start DWCi_Acc_LoginIdToUserName
|
||||
DWCi_Acc_LoginIdToUserName: ; 0x02097218
|
||||
stmdb sp!, {r4-r6,lr}
|
||||
sub sp, sp, #0x40
|
||||
mov r6, r0
|
||||
mov r4, r1
|
||||
mov r5, r2
|
||||
bl DWCi_Acc_GetUserId
|
||||
add r3, sp, #0x14
|
||||
mov r2, #0x2b
|
||||
bl DWCi_Acc_U64ToString32
|
||||
mov r0, r6
|
||||
bl DWCi_Acc_GetPlayerId
|
||||
mov r1, #0x0
|
||||
mov r2, #0x20
|
||||
add r3, sp, #0x29
|
||||
bl DWCi_Acc_U64ToString32
|
||||
mov r1, r4, lsr #0x18
|
||||
and r1, r1, #0xff
|
||||
str r1, [sp, #0x0]
|
||||
mov r1, r4, lsr #0x10
|
||||
and r1, r1, #0xff
|
||||
str r1, [sp, #0x4]
|
||||
mov r1, r4, lsr #0x8
|
||||
and r1, r1, #0xff
|
||||
str r1, [sp, #0x8]
|
||||
and r1, r4, #0xff
|
||||
str r1, [sp, #0xc]
|
||||
add r2, sp, #0x29
|
||||
str r2, [sp, #0x10]
|
||||
ldr r2, _020972A4 ; =UNK_0210618C
|
||||
mov r0, r5
|
||||
mov r1, #0x15
|
||||
add r3, sp, #0x14
|
||||
bl OS_SNPrintf
|
||||
add sp, sp, #0x40
|
||||
ldmia sp!, {r4-r6,pc}
|
||||
.balign 4
|
||||
_020972A4: .word UNK_0210618C
|
||||
|
||||
arm_func_start DWCi_Acc_U64ToString32
|
||||
DWCi_Acc_U64ToString32: ; 0x020972A8
|
||||
stmdb sp!, {r4-r7,lr}
|
||||
sub sp, sp, #0x4
|
||||
ldr lr, _0209731C ; =0x66666667
|
||||
add r4, r2, #0x4
|
||||
smull r12, r2, lr, r4
|
||||
mov r2, r2, asr #0x1
|
||||
mov r12, r4, lsr #0x1f
|
||||
add r2, r12, r2
|
||||
cmp r2, #0x0
|
||||
ldr r6, _02097320 ; =UNK_0210619C
|
||||
mov r7, #0x0
|
||||
ble _0209730C
|
||||
add r4, r3, r2
|
||||
sub r4, r4, #0x1
|
||||
mov r12, #0x1f
|
||||
_020972E4:
|
||||
and r5, r0, r12
|
||||
ldrsb r5, [r6, r5]
|
||||
mov r0, r0, lsr #0x5
|
||||
mov lr, r1, lsr #0x5
|
||||
strb r5, [r4, -r7]
|
||||
add r7, r7, #0x1
|
||||
orr r0, r0, r1, lsl #0x1b
|
||||
mov r1, lr
|
||||
cmp r7, r2
|
||||
blt _020972E4
|
||||
_0209730C:
|
||||
mov r0, #0x0
|
||||
strb r0, [r3, r2]
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r7,pc}
|
||||
.balign 4
|
||||
_0209731C: .word 0x66666667
|
||||
_02097320: .word UNK_0210619C
|
||||
|
||||
arm_func_start DWC_Acc_FriendKeyToGsProfileId
|
||||
DWC_Acc_FriendKeyToGsProfileId: ; 0x02097324
|
||||
stmdb sp!, {r4,lr}
|
||||
mov r4, r0
|
||||
bl DWC_Acc_CheckFriendKey
|
||||
cmp r0, #0x0
|
||||
mvnne r0, #0x0
|
||||
andne r0, r4, r0
|
||||
moveq r0, #0x0
|
||||
ldmia sp!, {r4,pc}
|
||||
|
||||
arm_func_start DWC_Acc_CheckFriendKey
|
||||
DWC_Acc_CheckFriendKey: ; 0x02097334
|
||||
stmdb sp!, {r4,lr}
|
||||
sub sp, sp, #0x108
|
||||
mov r4, r1
|
||||
and r3, r4, #0x0
|
||||
mov r1, #0x0
|
||||
and r12, r0, #0x80000000
|
||||
cmp r3, r1
|
||||
cmpeq r12, r1
|
||||
addne sp, sp, #0x108
|
||||
movne r0, r1
|
||||
ldmneia sp!, {r4,pc}
|
||||
str r0, [sp, #0x0]
|
||||
add r0, sp, #0x8
|
||||
mov r1, #0x7
|
||||
str r2, [sp, #0x4]
|
||||
bl MATHi_CRC8InitTable
|
||||
add r0, sp, #0x8
|
||||
add r1, sp, #0x0
|
||||
mov r2, #0x8
|
||||
bl MATH_CalcCRC8
|
||||
and r2, r0, #0x7f
|
||||
mov r1, r2, asr #0x1f
|
||||
mov r0, #0x0
|
||||
cmp r1, r0
|
||||
cmpeq r2, r4
|
||||
moveq r0, #0x1
|
||||
add sp, sp, #0x108
|
||||
ldmia sp!, {r4,pc}
|
||||
|
||||
arm_func_start DWC_CheckFriendKey
|
||||
DWC_CheckFriendKey: ; 0x020973B4
|
||||
ldr ip, _020973CC ; =DWC_Acc_CheckFriendKey
|
||||
mov r3, r0
|
||||
mov r0, r1
|
||||
mov r1, r2
|
||||
ldr r2, [r3, #0x24]
|
||||
bx r12
|
||||
.balign 4
|
||||
_020973CC: .word DWC_Acc_CheckFriendKey
|
||||
|
||||
arm_func_start DWC_Acc_CreateFriendKey
|
||||
DWC_Acc_CreateFriendKey: ; 0x020973D0
|
||||
stmdb sp!, {r4,lr}
|
||||
sub sp, sp, #0x108
|
||||
mov r4, r0
|
||||
str r1, [sp, #0x4]
|
||||
add r0, sp, #0x8
|
||||
mov r1, #0x7
|
||||
str r4, [sp, #0x0]
|
||||
bl MATHi_CRC8InitTable
|
||||
add r0, sp, #0x8
|
||||
add r1, sp, #0x0
|
||||
mov r2, #0x8
|
||||
bl MATH_CalcCRC8
|
||||
and r0, r0, #0x7f
|
||||
orr r1, r0, #0x0
|
||||
orr r0, r4, #0x0
|
||||
add sp, sp, #0x108
|
||||
ldmia sp!, {r4,pc}
|
||||
|
||||
arm_func_start DWCi_SetBuddyFriendData
|
||||
DWCi_SetBuddyFriendData: ; 0x02097414
|
||||
stmdb sp!, {r4,lr}
|
||||
mov r4, r0
|
||||
bl DWCi_Acc_GetFlag_DataType
|
||||
cmp r0, #0x3
|
||||
ldmneia sp!, {r4,pc}
|
||||
mov r0, r4
|
||||
bl DWCi_Acc_GetFlags
|
||||
orr r1, r0, #0x4
|
||||
mov r0, r4
|
||||
bl DWCi_Acc_SetFlags
|
||||
ldmia sp!, {r4,pc}
|
||||
|
||||
arm_func_start DWCi_Acc_SetFlag_DataType
|
||||
DWCi_Acc_SetFlag_DataType: ; 0x02097440
|
||||
stmdb sp!, {r4-r5,lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r5, r0
|
||||
mov r4, r1
|
||||
bl DWCi_Acc_GetFlags
|
||||
bic r1, r0, #0x3
|
||||
mov r0, r5
|
||||
orr r1, r1, r4
|
||||
bl DWCi_Acc_SetFlags
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r5,pc}
|
||||
|
||||
arm_func_start DWCi_Acc_SetFlags
|
||||
DWCi_Acc_SetFlags: ; 0x0209746C
|
||||
ldr ip, _0209747C ; =DWCi_Acc_SetMaskBits
|
||||
ldr r3, _02097480 ; =0x001FFFFF
|
||||
mov r2, #0xb
|
||||
bx r12
|
||||
.balign 4
|
||||
_0209747C: .word DWCi_Acc_SetMaskBits
|
||||
_02097480: .word 0x001FFFFF
|
||||
|
||||
arm_func_start DWC_GetFriendDataType
|
||||
DWC_GetFriendDataType: ; 0x02097484
|
||||
ldr ip, _0209748C ; =DWCi_Acc_GetFlag_DataType
|
||||
bx r12
|
||||
.balign 4
|
||||
_0209748C: .word DWCi_Acc_GetFlag_DataType
|
||||
|
||||
arm_func_start DWC_IsBuddyFriendData
|
||||
DWC_IsBuddyFriendData: ; 0x02097490
|
||||
stmdb sp!, {r4,lr}
|
||||
mov r4, r0
|
||||
bl DWCi_Acc_GetFlag_DataType
|
||||
cmp r0, #0x3
|
||||
bne _020974C0
|
||||
mov r0, r4
|
||||
bl DWCi_Acc_GetFlags
|
||||
and r0, r0, #0x4
|
||||
cmp r0, #0x4
|
||||
moveq r0, #0x1
|
||||
movne r0, #0x0
|
||||
ldmia sp!, {r4,pc}
|
||||
_020974C0:
|
||||
mov r0, #0x0
|
||||
ldmia sp!, {r4,pc}
|
||||
|
||||
arm_func_start DWCi_Acc_GetFlag_DataType
|
||||
DWCi_Acc_GetFlag_DataType: ; 0x020974C8
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0x4
|
||||
bl DWCi_Acc_GetFlags
|
||||
and r0, r0, #0x3
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {pc}
|
||||
|
||||
arm_func_start DWCi_Acc_GetFlags
|
||||
DWCi_Acc_GetFlags: ; 0x020974E0
|
||||
ldr r1, [r0, #0x0]
|
||||
ldr r0, _020974F0 ; =0x001FFFFF
|
||||
and r0, r0, r1, lsr #0xb
|
||||
bx lr
|
||||
.balign 4
|
||||
_020974F0: .word 0x001FFFFF
|
||||
|
||||
arm_func_start DWCi_Acc_SetGsProfileId
|
||||
DWCi_Acc_SetGsProfileId: ; 0x020974F4
|
||||
str r1, [r0, #0x4]
|
||||
bx lr
|
||||
|
||||
arm_func_start DWCi_Acc_SetFriendKey
|
||||
DWCi_Acc_SetFriendKey: ; 0x020974FC
|
||||
str r1, [r0, #0x4]
|
||||
str r2, [r0, #0x8]
|
||||
bx lr
|
||||
|
||||
arm_func_start DWCi_Acc_SetPlayerId
|
||||
DWCi_Acc_SetPlayerId: ; 0x02097508
|
||||
str r1, [r0, #0x8]
|
||||
bx lr
|
||||
|
||||
arm_func_start DWCi_Acc_SetUserId
|
||||
DWCi_Acc_SetUserId: ; 0x02097510
|
||||
stmdb sp!, {r4-r5,lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r12, #0x0
|
||||
mov r4, r1
|
||||
mov r1, r2
|
||||
ldr r3, _02097540 ; =0x000007FF
|
||||
mov r2, r12
|
||||
mov r5, r0
|
||||
bl DWCi_Acc_SetMaskBits
|
||||
str r4, [r5, #0x4]
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r5,pc}
|
||||
.balign 4
|
||||
_02097540: .word 0x000007FF
|
||||
|
||||
arm_func_start DWCi_Acc_GetGsProfileId
|
||||
DWCi_Acc_GetGsProfileId:
|
||||
ldr r0, [r0, #0x4]
|
||||
bx lr
|
||||
|
||||
arm_func_start DWCi_Acc_GetFriendKey
|
||||
DWCi_Acc_GetFriendKey: ; 0x0209754C
|
||||
ldr r1, [r0, #0x8]
|
||||
ldr r0, [r0, #0x4]
|
||||
orr r1, r1, #0x0
|
||||
orr r0, r0, #0x0
|
||||
bx lr
|
||||
|
||||
arm_func_start DWCi_Acc_GetPlayerId
|
||||
DWCi_Acc_GetPlayerId:
|
||||
ldr r0, [r0, #0x8]
|
||||
bx lr
|
||||
|
||||
arm_func_start DWCi_Acc_GetUserId
|
||||
DWCi_Acc_GetUserId: ; 0x02097568
|
||||
ldr r2, [r0, #0x0]
|
||||
ldr r1, _02097584 ; =0x000007FF
|
||||
ldr r0, [r0, #0x4]
|
||||
and r1, r2, r1
|
||||
orr r1, r1, #0x0
|
||||
orr r0, r0, #0x0
|
||||
bx lr
|
||||
.balign 4
|
||||
_02097584: .word 0x000007FF
|
||||
|
||||
arm_func_start DWCi_Acc_SetMaskBits
|
||||
DWCi_Acc_SetMaskBits: ; 0x02097588
|
||||
mvn r12, r3
|
||||
ands r12, r1, r12
|
||||
movne r0, #0x0
|
||||
bxne lr
|
||||
mvn r3, r3, lsl r2
|
||||
ldr r12, [r0, #0x0]
|
||||
and r3, r12, r3
|
||||
orr r1, r3, r1, lsl r2
|
||||
str r1, [r0, #0x0]
|
||||
mov r0, #0x1
|
||||
bx lr
|
||||
959
arm9/asm/DWC_backup.s
Normal file
959
arm9/asm/DWC_backup.s
Normal file
@@ -0,0 +1,959 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.section .bss
|
||||
|
||||
.global nv_result
|
||||
nv_result: ; 0x021C8C78
|
||||
.space 0x4
|
||||
|
||||
.global nv_cb_occurred
|
||||
nv_cb_occurred: ; 0x021C8C7C
|
||||
.space 0x4
|
||||
|
||||
.global Address
|
||||
Address: ; 0x021C8C80
|
||||
.space 0x4
|
||||
|
||||
.global Wifi
|
||||
Wifi: ; 0x021C8C84
|
||||
.space 0x1c
|
||||
|
||||
.global Work
|
||||
Work: ; 0x021C8CA0
|
||||
.space 0x20
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start DWCi_BACKUPlGetWifi
|
||||
DWCi_BACKUPlGetWifi: ; 0x02095324
|
||||
ldr r0, _0209532C ; =Wifi
|
||||
bx lr
|
||||
.balign 4
|
||||
_0209532C: .word Wifi
|
||||
|
||||
arm_func_start DWCi_BACKUPlConvWifiInfo
|
||||
DWCi_BACKUPlConvWifiInfo: ; 0x02095330
|
||||
stmdb sp!, {r4,lr}
|
||||
sub sp, sp, #0x8
|
||||
mov r4, r0
|
||||
ldr r3, [r4, #0x8]
|
||||
ldr r2, [r4, #0xc]
|
||||
ldr r1, _020953E4 ; =Wifi
|
||||
str r2, [sp, #0x4]
|
||||
str r3, [sp, #0x0]
|
||||
mov r2, #0x5
|
||||
bl MI_CpuCopy8
|
||||
ldr r1, [sp, #0x0]
|
||||
ldr r2, [r4, #0x4]
|
||||
ldr r0, [sp, #0x4]
|
||||
mov r2, r2, lsr #0x8
|
||||
mov r12, r1, lsr #0x5
|
||||
mov r3, r0, lsr #0x5
|
||||
orr r12, r12, r0, lsl #0x1b
|
||||
and lr, r2, #0x7
|
||||
and r0, r1, #0x1f
|
||||
orr lr, lr, r0, lsl #0x3
|
||||
ldr r2, _020953E4 ; =Wifi
|
||||
ldr r1, _020953E8 ; =Wifi + 0x6
|
||||
strb lr, [r2, #0x5]
|
||||
add r0, sp, #0x0
|
||||
str r12, [sp, #0x0]
|
||||
str r3, [sp, #0x4]
|
||||
mov r2, #0x4
|
||||
bl MI_CpuCopy8
|
||||
ldrh r0, [r4, #0x10]
|
||||
ldr r1, [sp, #0x4]
|
||||
ldr r3, _020953E4 ; =Wifi
|
||||
and r1, r1, #0x3f
|
||||
and r0, r0, #0x3
|
||||
orr r0, r1, r0, lsl #0x6
|
||||
strb r0, [r3, #0xa]
|
||||
ldrh r2, [r4, #0x10]
|
||||
add r0, r4, #0x12
|
||||
ldr r1, _020953EC ; =Wifi + 0xc
|
||||
mov r4, r2, asr #0x2
|
||||
mov r2, #0x2
|
||||
strb r4, [r3, #0xb]
|
||||
bl MI_CpuCopy8
|
||||
ldr r0, _020953E4 ; =Wifi
|
||||
add sp, sp, #0x8
|
||||
ldmia sp!, {r4,pc}
|
||||
.balign 4
|
||||
_020953E4: .word Wifi
|
||||
_020953E8: .word Wifi + 0x6
|
||||
_020953EC: .word Wifi + 0xc
|
||||
|
||||
arm_func_start Callback_NVRAM
|
||||
Callback_NVRAM: ; 0x020953F0
|
||||
ldr r3, _02095420 ; =nv_result
|
||||
and r12, r1, #0xff
|
||||
ldr r0, _02095424 ; =nv_cb_occurred
|
||||
mov r1, #0x1
|
||||
strh r12, [r3, #0x0]
|
||||
str r1, [r0, #0x0]
|
||||
cmp r2, #0x0
|
||||
movne r0, #0xff
|
||||
strneh r0, [r3, #0x0]
|
||||
ldr r0, _02095420 ; =nv_result
|
||||
ldrh r0, [r0, #0x0]
|
||||
bx lr
|
||||
.balign 4
|
||||
_02095420: .word nv_result
|
||||
_02095424: .word nv_cb_occurred
|
||||
|
||||
arm_func_start writeDisable
|
||||
writeDisable:
|
||||
stmdb sp!, {r4-r6,lr}
|
||||
mov r5, #0x4
|
||||
mov r4, #0x1
|
||||
_02095434:
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
bl PXI_IsCallbackReady
|
||||
cmp r0, #0x0
|
||||
beq _02095434
|
||||
ldr r1, _02095490 ; =Callback_NVRAM
|
||||
mov r0, #0x4
|
||||
bl PXI_SetFifoRecvCallback
|
||||
mov r4, #0x40000
|
||||
mov r6, #0x7
|
||||
mov r5, #0x0
|
||||
_02095460:
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
mov r2, r5
|
||||
mov r3, r5
|
||||
bl NVRAMm_ExecuteCommand
|
||||
cmp r0, #0x1
|
||||
beq _02095488
|
||||
mov r0, r4
|
||||
bl SVC_WaitByLoop
|
||||
b _02095460
|
||||
_02095488:
|
||||
mov r0, #0x1
|
||||
ldmia sp!, {r4-r6,pc}
|
||||
.balign 4
|
||||
_02095490: .word Callback_NVRAM
|
||||
|
||||
arm_func_start verify
|
||||
verify:
|
||||
stmdb sp!, {r4-r6,lr}
|
||||
mov r5, r2
|
||||
mov r4, r3
|
||||
mov r6, r0
|
||||
mov r0, r1
|
||||
mov r1, r5
|
||||
mov r2, r4
|
||||
bl readNvram
|
||||
cmp r0, #0x0
|
||||
moveq r0, #0x0
|
||||
ldmeqia sp!, {r4-r6,pc}
|
||||
mov r0, r6
|
||||
mov r1, r4
|
||||
mov r2, r5
|
||||
bl memcmp
|
||||
cmp r0, #0x0
|
||||
moveq r0, #0x1
|
||||
movne r0, #0x0
|
||||
ldmia sp!, {r4-r6,pc}
|
||||
|
||||
arm_func_start writeNvram
|
||||
writeNvram: ; 0x020954E0
|
||||
stmdb sp!, {r4-r8,lr}
|
||||
mov r8, r0
|
||||
mov r7, r1
|
||||
mov r6, r2
|
||||
mov r5, #0x4
|
||||
mov r4, #0x1
|
||||
_020954F8:
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
bl PXI_IsCallbackReady
|
||||
cmp r0, #0x0
|
||||
beq _020954F8
|
||||
ldr r1, _02095558 ; =Callback_NVRAM
|
||||
mov r0, #0x4
|
||||
bl PXI_SetFifoRecvCallback
|
||||
mov r0, r6
|
||||
mov r1, r7
|
||||
bl DC_StoreRange
|
||||
mov r4, #0x40000
|
||||
mov r5, #0x2
|
||||
_0209552C:
|
||||
mov r0, r5
|
||||
mov r1, r8
|
||||
mov r2, r7
|
||||
mov r3, r6
|
||||
bl NVRAMm_ExecuteCommand
|
||||
cmp r0, #0x1
|
||||
ldmeqia sp!, {r4-r8,pc}
|
||||
mov r0, r4
|
||||
bl SVC_WaitByLoop
|
||||
b _0209552C
|
||||
ldmia sp!, {r4-r8,pc}
|
||||
.balign 4
|
||||
_02095558: .word Callback_NVRAM
|
||||
|
||||
arm_func_start readNvram
|
||||
readNvram:
|
||||
stmdb sp!, {r4-r9,lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r4, r2
|
||||
mov r6, r0
|
||||
mov r0, r4
|
||||
mov r5, r1
|
||||
bl DC_InvalidateRange
|
||||
mov r8, #0x4
|
||||
mov r7, #0x1
|
||||
_02095580:
|
||||
mov r0, r8
|
||||
mov r1, r7
|
||||
bl PXI_IsCallbackReady
|
||||
cmp r0, #0x0
|
||||
beq _02095580
|
||||
ldr r1, _020955F0 ; =Callback_NVRAM
|
||||
mov r0, #0x4
|
||||
bl PXI_SetFifoRecvCallback
|
||||
mov r0, r5, lsl #0x10
|
||||
mov r8, r0, lsr #0x10
|
||||
mov r7, #0x40000
|
||||
mov r9, #0x1
|
||||
_020955B0:
|
||||
mov r0, r9
|
||||
mov r1, r6
|
||||
mov r2, r8
|
||||
mov r3, r4
|
||||
bl NVRAMm_ExecuteCommand
|
||||
cmp r0, #0x1
|
||||
beq _020955D8
|
||||
mov r0, r7
|
||||
bl SVC_WaitByLoop
|
||||
b _020955B0
|
||||
_020955D8:
|
||||
mov r0, r4
|
||||
mov r1, r5
|
||||
bl DC_InvalidateRange
|
||||
mov r0, #0x1
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r9,pc}
|
||||
.balign 4
|
||||
_020955F0: .word Callback_NVRAM
|
||||
|
||||
arm_func_start NVRAMm_ExecuteCommand
|
||||
NVRAMm_ExecuteCommand: ; 0x020955F4
|
||||
stmdb sp!, {r4-r11,lr}
|
||||
sub sp, sp, #0xc4
|
||||
ldr ip, _02095AAC ; =0x0000FFFF
|
||||
ldr sl, _02095AB0 ; =Work
|
||||
and r8, r2, r12
|
||||
and r7, r1, r12
|
||||
mov r5, r1, lsr #0x10
|
||||
mov r4, r3, lsr #0x10
|
||||
and r1, r3, r12
|
||||
orr r3, r8, #0x30000
|
||||
str r3, [sp, #0xc]
|
||||
ldr r3, _02095AB4 ; =0x01050000
|
||||
orr r2, r2, #0x20000
|
||||
orr r3, r1, r3
|
||||
str r3, [sp, #0x14]
|
||||
orr r1, r1, #0x1040000
|
||||
mov r9, r0
|
||||
and r0, r5, #0xff
|
||||
str r2, [sp, #0x1c]
|
||||
str r1, [sp, #0x24]
|
||||
ldr r1, _02095AB8 ; =0x02002200
|
||||
mov r8, #0x0
|
||||
orr r2, r4, #0x40000
|
||||
orr r1, r1, r10, lsr #0x18
|
||||
str r1, [sp, #0x28]
|
||||
and r1, r12, r10, lsr #0x8
|
||||
orr r1, r1, #0x10000
|
||||
ldr r3, _02095ABC ; =0x02002300
|
||||
str r2, [sp, #0x10]
|
||||
orr r2, r0, r3
|
||||
str r2, [sp, #0x8]
|
||||
orr r2, r4, #0x30000
|
||||
str r2, [sp, #0x20]
|
||||
ldr r2, _02095AC0 ; =0x02002500
|
||||
mov r6, r10, lsl #0x8
|
||||
str r1, [sp, #0x2c]
|
||||
and r1, r6, #0xff00
|
||||
orr r0, r0, r2
|
||||
ldr r3, _02095AC4 ; =0x01020000
|
||||
str r0, [sp, #0x18]
|
||||
orr r0, r1, r3
|
||||
str r0, [sp, #0x30]
|
||||
mov r0, #0x20000
|
||||
str r0, [sp, #0x40]
|
||||
mov r0, #0x5
|
||||
str r0, [sp, #0xac]
|
||||
mov r0, #0x3
|
||||
str r0, [sp, #0xb0]
|
||||
mov r0, #0x6
|
||||
str r0, [sp, #0xb8]
|
||||
mov r0, #0x4000
|
||||
orr r7, r7, #0x10000
|
||||
str r8, [sp, #0xb4]
|
||||
mov r4, #0x1
|
||||
str r8, [sp, #0xa8]
|
||||
mov r5, #0x4
|
||||
str r8, [sp, #0xa4]
|
||||
str r8, [sp, #0xa0]
|
||||
str r8, [sp, #0x90]
|
||||
str r8, [sp, #0x98]
|
||||
str r8, [sp, #0x9c]
|
||||
str r8, [sp, #0x94]
|
||||
str r8, [sp, #0x8c]
|
||||
str r8, [sp, #0x6c]
|
||||
str r8, [sp, #0x74]
|
||||
str r8, [sp, #0x7c]
|
||||
str r8, [sp, #0x84]
|
||||
str r8, [sp, #0x88]
|
||||
str r8, [sp, #0x80]
|
||||
str r8, [sp, #0x78]
|
||||
str r8, [sp, #0x70]
|
||||
str r8, [sp, #0x68]
|
||||
str r8, [sp, #0x64]
|
||||
str r8, [sp, #0x38]
|
||||
str r8, [sp, #0x44]
|
||||
str r8, [sp, #0x4c]
|
||||
str r8, [sp, #0x54]
|
||||
str r8, [sp, #0x5c]
|
||||
str r8, [sp, #0x60]
|
||||
str r8, [sp, #0x58]
|
||||
str r8, [sp, #0x50]
|
||||
str r8, [sp, #0x48]
|
||||
str r8, [sp, #0x3c]
|
||||
str r8, [sp, #0x34]
|
||||
mov r6, r8
|
||||
str r0, [sp, #0xbc]
|
||||
_0209574C:
|
||||
cmp r8, #0x0
|
||||
bne _02095988
|
||||
ldr r0, _02095AC8 ; =nv_cb_occurred
|
||||
cmp r9, #0x7
|
||||
str r6, [r0, #0x0]
|
||||
addls pc, pc, r9, lsl #0x2
|
||||
b _0209574C
|
||||
_02095768: ; jump table
|
||||
b _0209574C ; case 0
|
||||
b _02095788 ; case 1
|
||||
b _02095834 ; case 2
|
||||
b _02095854 ; case 3
|
||||
b _020958F0 ; case 4
|
||||
b _020958F0 ; case 5
|
||||
b _02095948 ; case 6
|
||||
b _02095968 ; case 7
|
||||
_02095788:
|
||||
ldr r1, [sp, #0x8]
|
||||
mov r0, r5
|
||||
mov r2, r6
|
||||
bl PXI_SendWordByFifo
|
||||
cmp r0, #0x0
|
||||
ldrlt r8, [sp, #0x34]
|
||||
blt _0209574C
|
||||
ldr r2, [sp, #0x38]
|
||||
mov r0, r5
|
||||
mov r1, r7
|
||||
bl PXI_SendWordByFifo
|
||||
cmp r0, #0x0
|
||||
ldrlt r8, [sp, #0x3c]
|
||||
blt _0209574C
|
||||
ldr r1, [sp, #0x40]
|
||||
ldr r2, [sp, #0x44]
|
||||
mov r0, r5
|
||||
bl PXI_SendWordByFifo
|
||||
cmp r0, #0x0
|
||||
ldrlt r8, [sp, #0x48]
|
||||
blt _0209574C
|
||||
ldr r1, [sp, #0xc]
|
||||
ldr r2, [sp, #0x4c]
|
||||
mov r0, r5
|
||||
bl PXI_SendWordByFifo
|
||||
cmp r0, #0x0
|
||||
ldrlt r8, [sp, #0x50]
|
||||
blt _0209574C
|
||||
ldr r1, [sp, #0x10]
|
||||
ldr r2, [sp, #0x54]
|
||||
mov r0, r5
|
||||
bl PXI_SendWordByFifo
|
||||
cmp r0, #0x0
|
||||
ldrlt r8, [sp, #0x58]
|
||||
blt _0209574C
|
||||
ldr r1, [sp, #0x14]
|
||||
ldr r2, [sp, #0x5c]
|
||||
mov r0, r5
|
||||
bl PXI_SendWordByFifo
|
||||
cmp r0, #0x0
|
||||
ldrlt r8, [sp, #0x60]
|
||||
movge r8, r4
|
||||
b _0209574C
|
||||
_02095834:
|
||||
ldr r1, _02095ACC ; =0x03002000
|
||||
mov r0, r5
|
||||
mov r2, r6
|
||||
bl PXI_SendWordByFifo
|
||||
cmp r0, #0x0
|
||||
movge r8, r4
|
||||
ldrlt r8, [sp, #0x64]
|
||||
b _0209574C
|
||||
_02095854:
|
||||
ldr r1, [sp, #0x18]
|
||||
mov r0, r5
|
||||
mov r2, r6
|
||||
bl PXI_SendWordByFifo
|
||||
cmp r0, #0x0
|
||||
ldrlt r8, [sp, #0x68]
|
||||
blt _020958E0
|
||||
ldr r2, [sp, #0x6c]
|
||||
mov r0, r5
|
||||
mov r1, r7
|
||||
bl PXI_SendWordByFifo
|
||||
cmp r0, #0x0
|
||||
ldrlt r8, [sp, #0x70]
|
||||
blt _020958E0
|
||||
ldr r1, [sp, #0x1c]
|
||||
ldr r2, [sp, #0x74]
|
||||
mov r0, r5
|
||||
bl PXI_SendWordByFifo
|
||||
cmp r0, #0x0
|
||||
ldrlt r8, [sp, #0x78]
|
||||
blt _020958E0
|
||||
ldr r1, [sp, #0x20]
|
||||
ldr r2, [sp, #0x7c]
|
||||
mov r0, r5
|
||||
bl PXI_SendWordByFifo
|
||||
cmp r0, #0x0
|
||||
ldrlt r8, [sp, #0x80]
|
||||
blt _020958E0
|
||||
ldr r1, [sp, #0x24]
|
||||
ldr r2, [sp, #0x84]
|
||||
mov r0, r5
|
||||
bl PXI_SendWordByFifo
|
||||
cmp r0, #0x0
|
||||
ldrlt r8, [sp, #0x88]
|
||||
movge r8, r4
|
||||
_020958E0:
|
||||
bl OS_GetTick
|
||||
str r0, [sp, #0x0]
|
||||
mov r11, r1
|
||||
b _0209574C
|
||||
_020958F0:
|
||||
ldr r1, [sp, #0x28]
|
||||
mov r0, r5
|
||||
mov r2, r6
|
||||
bl PXI_SendWordByFifo
|
||||
cmp r0, #0x0
|
||||
ldrlt r8, [sp, #0x8c]
|
||||
blt _0209574C
|
||||
ldr r1, [sp, #0x2c]
|
||||
ldr r2, [sp, #0x90]
|
||||
mov r0, r5
|
||||
bl PXI_SendWordByFifo
|
||||
cmp r0, #0x0
|
||||
ldrlt r8, [sp, #0x94]
|
||||
blt _0209574C
|
||||
ldr r1, [sp, #0x30]
|
||||
ldr r2, [sp, #0x98]
|
||||
mov r0, r5
|
||||
bl PXI_SendWordByFifo
|
||||
cmp r0, #0x0
|
||||
ldrlt r8, [sp, #0x9c]
|
||||
movge r8, r4
|
||||
b _0209574C
|
||||
_02095948:
|
||||
ldr r1, _02095AD0 ; =0x03002D00
|
||||
mov r0, r5
|
||||
mov r2, r6
|
||||
bl PXI_SendWordByFifo
|
||||
cmp r0, #0x0
|
||||
movge r8, r4
|
||||
ldrlt r8, [sp, #0xa0]
|
||||
b _0209574C
|
||||
_02095968:
|
||||
ldr r1, _02095AD4 ; =0x03002100
|
||||
mov r0, r5
|
||||
mov r2, r6
|
||||
bl PXI_SendWordByFifo
|
||||
cmp r0, #0x0
|
||||
movge r8, r4
|
||||
ldrlt r8, [sp, #0xa4]
|
||||
b _0209574C
|
||||
_02095988:
|
||||
ldr r0, _02095AC8 ; =nv_cb_occurred
|
||||
ldr r0, [r0, #0x0]
|
||||
cmp r0, #0x1
|
||||
bne _0209574C
|
||||
ldr r0, _02095AD8 ; =nv_result
|
||||
ldr r8, [sp, #0xa8]
|
||||
ldrh r0, [r0, #0x0]
|
||||
cmp r0, #0x0
|
||||
bne _02095AA0
|
||||
cmp r9, #0x7
|
||||
addls pc, pc, r9, lsl #0x2
|
||||
b _0209574C
|
||||
_020959B8: ; jump table
|
||||
b _0209574C ; case 0
|
||||
b _020959D8 ; case 1
|
||||
b _020959E4 ; case 2
|
||||
b _020959EC ; case 3
|
||||
b _020959F4 ; case 4
|
||||
b _020959F4 ; case 5
|
||||
b _02095A88 ; case 6
|
||||
b _02095A94 ; case 7
|
||||
_020959D8:
|
||||
add sp, sp, #0xc4
|
||||
mov r0, #0x1
|
||||
ldmia sp!, {r4-r11,pc}
|
||||
_020959E4:
|
||||
mov r9, r5
|
||||
b _0209574C
|
||||
_020959EC:
|
||||
ldr r9, [sp, #0xac]
|
||||
b _0209574C
|
||||
_020959F4:
|
||||
mov r0, r10
|
||||
mov r1, r4
|
||||
bl DC_InvalidateRange
|
||||
cmp r9, #0x4
|
||||
bne _02095A24
|
||||
ldrb r0, [r10, #0x0]
|
||||
ands r0, r0, #0x2
|
||||
ldrne r9, [sp, #0xb0]
|
||||
bne _0209574C
|
||||
add sp, sp, #0xc4
|
||||
mov r0, #0x0
|
||||
ldmia sp!, {r4-r11,pc}
|
||||
_02095A24:
|
||||
ldrb r1, [r10, #0x0]
|
||||
ands r0, r1, #0x1
|
||||
addeq sp, sp, #0xc4
|
||||
moveq r0, #0x1
|
||||
ldmeqia sp!, {r4-r11,pc}
|
||||
ands r0, r1, #0x20
|
||||
bne _02095A74
|
||||
bl OS_GetTick
|
||||
ldr r2, [sp, #0x0]
|
||||
ldr r3, [sp, #0xb4]
|
||||
subs r2, r0, r2
|
||||
sbc r0, r1, r11
|
||||
mov r1, r0, lsl #0x6
|
||||
orr r1, r1, r2, lsr #0x1a
|
||||
mov r0, r2, lsl #0x6
|
||||
ldr r2, _02095ADC ; =0x000082EA
|
||||
bl _ll_udiv
|
||||
cmp r1, #0x0
|
||||
cmpeq r0, #0xfa0
|
||||
bls _02095A7C
|
||||
_02095A74:
|
||||
ldr r9, [sp, #0xb8]
|
||||
b _0209574C
|
||||
_02095A7C:
|
||||
ldr r0, [sp, #0xbc]
|
||||
bl SVC_WaitByLoop
|
||||
b _0209574C
|
||||
_02095A88:
|
||||
add sp, sp, #0xc4
|
||||
mov r0, r8
|
||||
ldmia sp!, {r4-r11,pc}
|
||||
_02095A94:
|
||||
add sp, sp, #0xc4
|
||||
mov r0, #0x1
|
||||
ldmia sp!, {r4-r11,pc}
|
||||
_02095AA0:
|
||||
mov r0, r8
|
||||
add sp, sp, #0xc4
|
||||
ldmia sp!, {r4-r11,pc}
|
||||
.balign 4
|
||||
_02095AAC: .word 0x0000FFFF
|
||||
_02095AB0: .word Work
|
||||
_02095AB4: .word 0x01050000
|
||||
_02095AB8: .word 0x02002200
|
||||
_02095ABC: .word 0x02002300
|
||||
_02095AC0: .word 0x02002500
|
||||
_02095AC4: .word 0x01020000
|
||||
_02095AC8: .word nv_cb_occurred
|
||||
_02095ACC: .word 0x03002000
|
||||
_02095AD0: .word 0x03002D00
|
||||
_02095AD4: .word 0x03002100
|
||||
_02095AD8: .word nv_result
|
||||
_02095ADC: .word 0x000082EA
|
||||
|
||||
arm_func_start DWC_BACKUPlCheckAddress
|
||||
DWC_BACKUPlCheckAddress:
|
||||
ldrb r0, [r0, #0x0]
|
||||
cmp r0, #0x7f
|
||||
moveq r0, #0x0
|
||||
bxeq lr
|
||||
cmp r0, #0x1
|
||||
movcc r0, #0x0
|
||||
bxcc lr
|
||||
cmp r0, #0xdf
|
||||
movls r0, #0x1
|
||||
movhi r0, #0x0
|
||||
bx lr
|
||||
|
||||
arm_func_start DWC_BACKUPlCheckIp
|
||||
DWC_BACKUPlCheckIp:
|
||||
stmdb sp!, {r4-r5,lr}
|
||||
sub sp, sp, #0xc
|
||||
mov r5, r0
|
||||
mov r4, r1
|
||||
bl DWC_BACKUPlCheckAddress
|
||||
cmp r0, #0x0
|
||||
addeq sp, sp, #0xc
|
||||
moveq r0, #0x0
|
||||
ldmeqia sp!, {r4-r5,pc}
|
||||
add r1, sp, #0x0
|
||||
mov r0, r5
|
||||
mov r2, #0x4
|
||||
bl MI_CpuCopy8
|
||||
add r1, sp, #0x4
|
||||
mov r0, r4
|
||||
mov r2, #0x4
|
||||
bl MI_CpuCopy8
|
||||
ldr r3, [sp, #0x4]
|
||||
ldr r2, [sp, #0x0]
|
||||
mvn r0, #0x1
|
||||
orr r1, r2, r3
|
||||
cmp r1, r0
|
||||
addeq sp, sp, #0xc
|
||||
moveq r0, #0x0
|
||||
ldmeqia sp!, {r4-r5,pc}
|
||||
mvn r0, r3
|
||||
ands r0, r2, r0
|
||||
movne r0, #0x1
|
||||
moveq r0, #0x0
|
||||
add sp, sp, #0xc
|
||||
ldmia sp!, {r4-r5,pc}
|
||||
|
||||
arm_func_start DWC_BACKUPlCheckSsid
|
||||
DWC_BACKUPlCheckSsid:
|
||||
mov r2, #0x0
|
||||
_02095B8C:
|
||||
ldrb r1, [r0, r2]
|
||||
cmp r1, #0x0
|
||||
movne r0, #0x1
|
||||
bxne lr
|
||||
add r2, r2, #0x1
|
||||
cmp r2, #0x20
|
||||
blt _02095B8C
|
||||
mov r0, #0x0
|
||||
bx lr
|
||||
|
||||
arm_func_start DWCi_BACKUPlConvMaskAddr
|
||||
DWCi_BACKUPlConvMaskAddr: ; 0x02095BB0
|
||||
mvn r2, #0x0
|
||||
mov r12, #0x0
|
||||
eor r3, r2, r2, lsr r0
|
||||
mov r2, r12
|
||||
_02095BC0:
|
||||
rsb r0, r2, #0x18
|
||||
mov r0, r3, lsr r0
|
||||
strb r0, [r1, r12]
|
||||
add r12, r12, #0x1
|
||||
cmp r12, #0x4
|
||||
add r2, r2, #0x8
|
||||
blt _02095BC0
|
||||
bx lr
|
||||
|
||||
arm_func_start DWCi_BACKUPlConvMaskCidr
|
||||
DWCi_BACKUPlConvMaskCidr: ; 0x02095BE0
|
||||
stmdb sp!, {r4,lr}
|
||||
mov lr, #0x0
|
||||
mov r4, lr
|
||||
mov r2, lr
|
||||
_02095BF0:
|
||||
ldrb r3, [r0, lr]
|
||||
mov r12, r2
|
||||
_02095BF8:
|
||||
mov r1, r3, asr r12
|
||||
ands r1, r1, #0x1
|
||||
add r12, r12, #0x1
|
||||
addne r4, r4, #0x1
|
||||
cmp r12, #0x8
|
||||
blt _02095BF8
|
||||
add lr, lr, #0x1
|
||||
cmp lr, #0x4
|
||||
blt _02095BF0
|
||||
and r0, r4, #0xff
|
||||
ldmia sp!, {r4,pc}
|
||||
|
||||
arm_func_start DWCi_BACKUPlSetWiFi
|
||||
DWCi_BACKUPlSetWiFi: ; 0x02095C24
|
||||
ldr ip, _02095C34 ; =MI_CpuCopy8
|
||||
ldr r1, _02095C38 ; =Wifi
|
||||
mov r2, #0xe
|
||||
bx r12
|
||||
.balign 4
|
||||
_02095C34: .word MI_CpuCopy8
|
||||
_02095C38: .word Wifi
|
||||
|
||||
arm_func_start DWCi_BACKUPlWriteAll
|
||||
DWCi_BACKUPlWriteAll:
|
||||
stmdb sp!, {r4-r11,lr}
|
||||
sub sp, sp, #0x4
|
||||
ldr r1, _02095CD8 ; =Address
|
||||
mov r10, r0
|
||||
ldr r8, [r1, #0x0]
|
||||
mov r7, r10
|
||||
mov r9, #0x0
|
||||
add r4, r10, #0x400
|
||||
add r6, r10, #0x500
|
||||
mov r5, #0x100
|
||||
mov r11, #0xfe
|
||||
_02095C68:
|
||||
mov r0, r6
|
||||
mov r1, r7
|
||||
mov r2, r11
|
||||
bl MATH_CalcCRC16
|
||||
add r1, r10, r9, lsl #0x8
|
||||
strh r0, [r1, #0xfe]
|
||||
_02095C80:
|
||||
mov r0, r8
|
||||
mov r1, r5
|
||||
mov r2, r7
|
||||
bl writeNvram
|
||||
mov r0, r7
|
||||
mov r1, r8
|
||||
mov r2, r5
|
||||
mov r3, r4
|
||||
bl verify
|
||||
cmp r0, #0x0
|
||||
beq _02095C80
|
||||
add r9, r9, #0x1
|
||||
cmp r9, #0x4
|
||||
add r7, r7, #0x100
|
||||
add r8, r8, #0x100
|
||||
blt _02095C68
|
||||
bl writeDisable
|
||||
cmp r0, #0x0
|
||||
movne r0, #0x1
|
||||
moveq r0, #0x0
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r11,pc}
|
||||
.balign 4
|
||||
_02095CD8: .word Address
|
||||
|
||||
arm_func_start DWCi_BACKUPlWritePage
|
||||
DWCi_BACKUPlWritePage: ; 0x02095CDC
|
||||
stmdb sp!, {r4-r9,lr}
|
||||
sub sp, sp, #0x4
|
||||
ldr r3, _02095D64 ; =Address
|
||||
mov r4, r0
|
||||
ldr r6, [r3, #0x0]
|
||||
mov r9, r1
|
||||
mov r8, r2
|
||||
mov r7, #0x0
|
||||
mov r5, #0x100
|
||||
_02095D00:
|
||||
ldr r0, [r9, r7, lsl #0x2]
|
||||
cmp r0, #0x0
|
||||
beq _02095D38
|
||||
_02095D0C:
|
||||
mov r0, r6
|
||||
mov r1, r5
|
||||
mov r2, r4
|
||||
bl writeNvram
|
||||
mov r0, r4
|
||||
mov r1, r6
|
||||
mov r2, r5
|
||||
mov r3, r8
|
||||
bl verify
|
||||
cmp r0, #0x0
|
||||
beq _02095D0C
|
||||
_02095D38:
|
||||
add r7, r7, #0x1
|
||||
cmp r7, #0x4
|
||||
add r4, r4, #0x100
|
||||
add r6, r6, #0x100
|
||||
blt _02095D00
|
||||
bl writeDisable
|
||||
cmp r0, #0x0
|
||||
movne r0, #0x1
|
||||
moveq r0, #0x0
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r9,pc}
|
||||
.balign 4
|
||||
_02095D64: .word Address
|
||||
|
||||
arm_func_start DWCi_BACKUPlRead
|
||||
DWCi_BACKUPlRead:
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0x4
|
||||
ldr r1, _02095D98 ; =Address
|
||||
mov r2, r0
|
||||
ldr r0, [r1, #0x0]
|
||||
mov r1, #0x400
|
||||
bl readNvram
|
||||
cmp r0, #0x0
|
||||
movne r0, #0x1
|
||||
moveq r0, #0x0
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {pc}
|
||||
.balign 4
|
||||
_02095D98: .word Address
|
||||
|
||||
arm_func_start DWCi_BACKUPlInit
|
||||
DWCi_BACKUPlInit:
|
||||
stmdb sp!, {r4,lr}
|
||||
mov r4, r0
|
||||
mov r0, #0x20
|
||||
mov r1, r0
|
||||
mov r2, r4
|
||||
bl readNvram
|
||||
cmp r0, #0x0
|
||||
moveq r0, #0x0
|
||||
ldmeqia sp!, {r4,pc}
|
||||
ldrh r2, [r4, #0x0]
|
||||
ldr r1, _02095DDC ; =Address
|
||||
mov r0, #0x1
|
||||
mov r2, r2, lsl #0x3
|
||||
sub r2, r2, #0x400
|
||||
str r2, [r1, #0x0]
|
||||
ldmia sp!, {r4,pc}
|
||||
.balign 4
|
||||
_02095DDC: .word Address
|
||||
|
||||
arm_func_start DWCi_BM_SetWiFiInfo
|
||||
DWCi_BM_SetWiFiInfo:
|
||||
stmdb sp!, {r4-r11,lr}
|
||||
sub sp, sp, #0x4
|
||||
ldr r2, _02095EBC ; =Address
|
||||
mov r10, r1
|
||||
ldr r8, [r2, #0x0]
|
||||
bl DWCi_BACKUPlConvWifiInfo
|
||||
ldr r1, _02095EC0 ; =0x0000A001
|
||||
add r0, r10, #0x200
|
||||
bl MATHi_CRC16InitTableRev
|
||||
mov r9, #0x0
|
||||
add r4, r10, #0x100
|
||||
add r6, r10, #0xf0
|
||||
mov r7, #0x100
|
||||
mov r5, #0xe
|
||||
mov r11, #0xfe
|
||||
_02095E1C:
|
||||
mov r0, r8
|
||||
mov r1, r7
|
||||
mov r2, r10
|
||||
bl readNvram
|
||||
cmp r0, #0x0
|
||||
bne _02095E44
|
||||
bl OS_Terminate
|
||||
add sp, sp, #0x4
|
||||
mov r0, #0x0
|
||||
ldmia sp!, {r4-r11,pc}
|
||||
_02095E44:
|
||||
ldr r0, _02095EC4 ; =Wifi
|
||||
mov r1, r6
|
||||
mov r2, r5
|
||||
bl MI_CpuCopy8
|
||||
mov r1, r10
|
||||
mov r2, r11
|
||||
add r0, r10, #0x200
|
||||
bl MATH_CalcCRC16
|
||||
strh r0, [r10, #0xfe]
|
||||
_02095E68:
|
||||
mov r0, r8
|
||||
mov r1, r7
|
||||
mov r2, r10
|
||||
bl writeNvram
|
||||
mov r0, r10
|
||||
mov r1, r8
|
||||
mov r2, r7
|
||||
mov r3, r4
|
||||
bl verify
|
||||
cmp r0, #0x0
|
||||
beq _02095E68
|
||||
add r9, r9, #0x1
|
||||
cmp r9, #0x2
|
||||
add r8, r8, #0x100
|
||||
blt _02095E1C
|
||||
bl writeDisable
|
||||
cmp r0, #0x0
|
||||
movne r0, #0x1
|
||||
moveq r0, #0x0
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r11,pc}
|
||||
.balign 4
|
||||
_02095EBC: .word Address
|
||||
_02095EC0: .word 0x0000A001
|
||||
_02095EC4: .word Wifi
|
||||
|
||||
arm_func_start DWCi_BM_GetWiFiInfo
|
||||
DWCi_BM_GetWiFiInfo:
|
||||
stmdb sp!, {r4,lr}
|
||||
mov r4, r0
|
||||
ldr r0, _02095F90 ; =Wifi
|
||||
mov r1, r4
|
||||
mov r2, #0x6
|
||||
bl MI_CpuCopy8
|
||||
ldr r3, [r4, #0x0]
|
||||
mvn r0, #0x0
|
||||
ldr r2, [r4, #0x4]
|
||||
ldr r1, _02095F94 ; =0x000007FF
|
||||
and r0, r3, r0
|
||||
str r0, [r4, #0x0]
|
||||
and r1, r2, r1
|
||||
ldr r0, _02095F98 ; =Wifi + 0x5
|
||||
str r1, [r4, #0x4]
|
||||
add r1, r4, #0x8
|
||||
mov r2, #0x6
|
||||
bl MI_CpuCopy8
|
||||
add r12, r4, #0x8
|
||||
ldr r1, [r4, #0x8]
|
||||
ldr r0, [r12, #0x4]
|
||||
mov r1, r1, lsr #0x3
|
||||
orr r1, r1, r0, lsl #0x1d
|
||||
str r1, [r4, #0x8]
|
||||
mov r0, r0, lsr #0x3
|
||||
str r0, [r12, #0x4]
|
||||
ldr r3, [r4, #0x8]
|
||||
mvn r0, #0x0
|
||||
ldr r2, [r12, #0x4]
|
||||
ldr r1, _02095F94 ; =0x000007FF
|
||||
and r0, r3, r0
|
||||
str r0, [r4, #0x8]
|
||||
and r1, r2, r1
|
||||
ldr r0, _02095F9C ; =Wifi + 0xa
|
||||
str r1, [r12, #0x4]
|
||||
add r1, r4, #0x10
|
||||
mov r2, #0x2
|
||||
bl MI_CpuCopy8
|
||||
ldrh r1, [r4, #0x10]
|
||||
ldr r3, _02095FA0 ; =0x000003FF
|
||||
ldr r0, _02095FA4 ; =Wifi + 0xc
|
||||
mov r1, r1, asr #0x6
|
||||
strh r1, [r4, #0x10]
|
||||
ldrh r12, [r4, #0x10]
|
||||
add r1, r4, #0x12
|
||||
mov r2, #0x2
|
||||
and r3, r12, r3
|
||||
strh r3, [r4, #0x10]
|
||||
bl MI_CpuCopy8
|
||||
ldmia sp!, {r4,pc}
|
||||
.balign 4
|
||||
_02095F90: .word Wifi
|
||||
_02095F94: .word 0x000007FF
|
||||
_02095F98: .word Wifi + 0x5
|
||||
_02095F9C: .word Wifi + 0xa
|
||||
_02095FA0: .word 0x000003FF
|
||||
_02095FA4: .word Wifi + 0xc
|
||||
|
||||
arm_func_start DWCi_BM_GetApInfo
|
||||
DWCi_BM_GetApInfo: ; 0x02095FA8
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0x4
|
||||
ldr r1, _02095FD8 ; =Address
|
||||
mov r2, r0
|
||||
ldr r0, [r1, #0x0]
|
||||
mov r1, #0x300
|
||||
bl readNvram
|
||||
cmp r0, #0x0
|
||||
movne r0, #0x1
|
||||
moveq r0, #0x0
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {pc}
|
||||
.balign 4
|
||||
_02095FD8: .word Address
|
||||
357
arm9/asm/DWC_bm_init.s
Normal file
357
arm9/asm/DWC_bm_init.s
Normal file
@@ -0,0 +1,357 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.section .rodata
|
||||
|
||||
.global DWCi_SETTING_NONE
|
||||
DWCi_SETTING_NONE: ; 0x020FF574
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start initPage
|
||||
initPage: ; 0x02095FDC
|
||||
stmdb sp!, {r4-r5,lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r5, r0
|
||||
mov r4, r1
|
||||
add r1, r5, r4, lsl #0x8
|
||||
mov r0, #0x0
|
||||
mov r2, #0x100
|
||||
bl MIi_CpuClear16
|
||||
add r0, r5, r4, lsl #0x8
|
||||
mov r1, #0xff
|
||||
strb r1, [r0, #0xe7]
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r5,pc}
|
||||
|
||||
arm_func_start init
|
||||
init: ; 0x02096010
|
||||
stmdb sp!, {r4-r7,lr}
|
||||
sub sp, sp, #0x14
|
||||
mov r7, r0
|
||||
mov r1, r7
|
||||
mov r0, #0x0
|
||||
mov r2, #0x400
|
||||
bl MIi_CpuClear16
|
||||
mov r2, #0x0
|
||||
mov r1, #0xff
|
||||
_02096034:
|
||||
add r0, r7, r2, lsl #0x8
|
||||
add r2, r2, #0x1
|
||||
strb r1, [r0, #0xe7]
|
||||
cmp r2, #0x3
|
||||
blt _02096034
|
||||
add r0, sp, #0x0
|
||||
bl DWCi_AUTH_GetNewWiFiInfo
|
||||
add r0, sp, #0x0
|
||||
bl DWCi_BACKUPlConvWifiInfo
|
||||
mov r6, r0
|
||||
mov r5, #0x0
|
||||
mov r4, #0xe
|
||||
_02096064:
|
||||
mov r0, r6
|
||||
mov r2, r4
|
||||
add r1, r7, #0xf0
|
||||
bl MI_CpuCopy8
|
||||
add r5, r5, #0x1
|
||||
cmp r5, #0x2
|
||||
add r7, r7, #0x100
|
||||
blt _02096064
|
||||
mov r0, #0x0
|
||||
add sp, sp, #0x14
|
||||
ldmia sp!, {r4-r7,pc}
|
||||
|
||||
arm_func_start checkAp
|
||||
checkAp:
|
||||
stmdb sp!, {r4,lr}
|
||||
sub sp, sp, #0x8
|
||||
mov r4, r0
|
||||
ldrb r0, [r4, #0xe7]
|
||||
cmp r0, #0xff
|
||||
addeq sp, sp, #0x8
|
||||
moveq r0, #0x1
|
||||
ldmeqia sp!, {r4,pc}
|
||||
cmp r0, #0x2
|
||||
addhi sp, sp, #0x8
|
||||
movhi r0, #0x0
|
||||
ldmhiia sp!, {r4,pc}
|
||||
add r0, r4, #0x40
|
||||
bl DWC_BACKUPlCheckSsid
|
||||
cmp r0, #0x0
|
||||
addeq sp, sp, #0x8
|
||||
moveq r0, #0x0
|
||||
ldmeqia sp!, {r4,pc}
|
||||
ldr r1, _0209618C ; =DWCi_SETTING_NONE
|
||||
add r0, r4, #0xc0
|
||||
mov r2, #0x4
|
||||
bl memcmp
|
||||
cmp r0, #0x0
|
||||
beq _02096140
|
||||
add r0, r4, #0xc4
|
||||
bl DWC_BACKUPlCheckAddress
|
||||
cmp r0, #0x0
|
||||
addeq sp, sp, #0x8
|
||||
moveq r0, #0x0
|
||||
ldmeqia sp!, {r4,pc}
|
||||
ldrb r0, [r4, #0xd0]
|
||||
cmp r0, #0x20
|
||||
addhi sp, sp, #0x8
|
||||
movhi r0, #0x0
|
||||
ldmhiia sp!, {r4,pc}
|
||||
add r1, sp, #0x0
|
||||
bl DWCi_BACKUPlConvMaskAddr
|
||||
add r1, sp, #0x0
|
||||
add r0, r4, #0xc0
|
||||
bl DWC_BACKUPlCheckIp
|
||||
cmp r0, #0x0
|
||||
addeq sp, sp, #0x8
|
||||
moveq r0, #0x0
|
||||
ldmeqia sp!, {r4,pc}
|
||||
_02096140:
|
||||
ldr r1, _0209618C ; =DWCi_SETTING_NONE
|
||||
add r0, r4, #0xc8
|
||||
mov r2, #0x4
|
||||
bl memcmp
|
||||
cmp r0, #0x0
|
||||
beq _02096180
|
||||
add r0, r4, #0xc8
|
||||
bl DWC_BACKUPlCheckAddress
|
||||
cmp r0, #0x0
|
||||
bne _02096180
|
||||
add r0, r4, #0xcc
|
||||
bl DWC_BACKUPlCheckAddress
|
||||
cmp r0, #0x0
|
||||
addeq sp, sp, #0x8
|
||||
moveq r0, #0x0
|
||||
ldmeqia sp!, {r4,pc}
|
||||
_02096180:
|
||||
mov r0, #0x1
|
||||
add sp, sp, #0x8
|
||||
ldmia sp!, {r4,pc}
|
||||
.balign 4
|
||||
_0209618C: .word DWCi_SETTING_NONE
|
||||
|
||||
arm_func_start DWC_BM_Init
|
||||
DWC_BM_Init: ; 0x02096190
|
||||
stmdb sp!, {r4-r11,lr}
|
||||
sub sp, sp, #0x14
|
||||
mov r10, r0
|
||||
mov r1, #0x0
|
||||
mov r2, #0x700
|
||||
bl MI_CpuFill8
|
||||
mov r0, r10
|
||||
bl DWCi_BACKUPlInit
|
||||
cmp r0, #0x0
|
||||
addeq sp, sp, #0x14
|
||||
ldreq r0, _020964B4 ; =0xFFFFD8EF
|
||||
ldmeqia sp!, {r4-r11,pc}
|
||||
ldr r1, _020964B8 ; =0x0000A001
|
||||
add r0, r10, #0x500
|
||||
bl MATHi_CRC16InitTableRev
|
||||
mov r0, r10
|
||||
bl DWCi_BACKUPlRead
|
||||
cmp r0, #0x0
|
||||
addeq sp, sp, #0x14
|
||||
ldreq r0, _020964B4 ; =0xFFFFD8EF
|
||||
ldmeqia sp!, {r4-r11,pc}
|
||||
add r0, sp, #0x0
|
||||
mov r1, #0x0
|
||||
mov r2, #0x10
|
||||
bl MI_CpuFill8
|
||||
mov r8, r10
|
||||
mov r7, r10
|
||||
mov r9, #0x0
|
||||
add r11, sp, #0x0
|
||||
add r6, r10, #0x500
|
||||
mov r4, #0x1
|
||||
mov r5, #0xfe
|
||||
_02096210:
|
||||
mov r0, r6
|
||||
mov r1, r8
|
||||
mov r2, r5
|
||||
bl MATH_CalcCRC16
|
||||
add r1, r10, r9, lsl #0x8
|
||||
ldrh r1, [r1, #0xfe]
|
||||
cmp r0, r1
|
||||
bne _02096240
|
||||
mov r0, r7
|
||||
bl checkAp
|
||||
cmp r0, #0x0
|
||||
strne r4, [r11, r9, lsl #0x2]
|
||||
_02096240:
|
||||
add r9, r9, #0x1
|
||||
cmp r9, #0x3
|
||||
add r8, r8, #0x100
|
||||
add r7, r7, #0x100
|
||||
blt _02096210
|
||||
add r0, r10, #0x500
|
||||
add r1, r10, #0x300
|
||||
mov r2, #0xfe
|
||||
bl MATH_CalcCRC16
|
||||
add r1, r10, #0x300
|
||||
ldrh r1, [r1, #0xfe]
|
||||
cmp r0, r1
|
||||
moveq r0, #0x1
|
||||
ldr r1, [sp, #0x0]
|
||||
streq r0, [sp, #0xc]
|
||||
cmp r1, #0x0
|
||||
beq _020962BC
|
||||
ldr r0, [sp, #0x4]
|
||||
cmp r0, #0x0
|
||||
beq _020962BC
|
||||
ldr r0, [sp, #0x8]
|
||||
cmp r0, #0x0
|
||||
beq _020962BC
|
||||
ldr r0, [sp, #0xc]
|
||||
cmp r0, #0x0
|
||||
beq _020962BC
|
||||
add r0, r10, #0xf0
|
||||
bl DWCi_BACKUPlSetWiFi
|
||||
add sp, sp, #0x14
|
||||
mov r0, #0x0
|
||||
ldmia sp!, {r4-r11,pc}
|
||||
_020962BC:
|
||||
cmp r1, #0x0
|
||||
bne _0209630C
|
||||
ldr r0, [sp, #0x4]
|
||||
cmp r0, #0x0
|
||||
bne _0209630C
|
||||
ldr r0, [sp, #0x8]
|
||||
cmp r0, #0x0
|
||||
bne _0209630C
|
||||
ldr r0, [sp, #0xc]
|
||||
cmp r0, #0x0
|
||||
bne _0209630C
|
||||
mov r0, r10
|
||||
bl init
|
||||
mov r0, r10
|
||||
bl DWCi_BACKUPlWriteAll
|
||||
cmp r0, #0x0
|
||||
movne r0, #0x0
|
||||
add sp, sp, #0x14
|
||||
ldreq r0, _020964BC ; =0xFFFFD8F0
|
||||
ldmia sp!, {r4-r11,pc}
|
||||
_0209630C:
|
||||
cmp r1, #0x0
|
||||
beq _02096320
|
||||
ldr r0, [sp, #0x4]
|
||||
cmp r0, #0x0
|
||||
bne _0209635C
|
||||
_02096320:
|
||||
ldr r0, [sp, #0x8]
|
||||
cmp r0, #0x0
|
||||
beq _02096338
|
||||
ldr r0, [sp, #0xc]
|
||||
cmp r0, #0x0
|
||||
bne _0209635C
|
||||
_02096338:
|
||||
mov r0, r10
|
||||
bl init
|
||||
mov r0, r10
|
||||
bl DWCi_BACKUPlWriteAll
|
||||
cmp r0, #0x0
|
||||
movne r0, #0x0
|
||||
add sp, sp, #0x14
|
||||
ldreq r0, _020964BC ; =0xFFFFD8F0
|
||||
ldmia sp!, {r4-r11,pc}
|
||||
_0209635C:
|
||||
cmp r1, #0x0
|
||||
bne _02096394
|
||||
ldr r0, [sp, #0x4]
|
||||
cmp r0, #0x0
|
||||
bne _02096394
|
||||
mov r0, r10
|
||||
bl init
|
||||
mov r0, r10
|
||||
bl DWCi_BACKUPlWriteAll
|
||||
cmp r0, #0x0
|
||||
ldrne r0, _020964C0 ; =0xFFFFD8ED
|
||||
add sp, sp, #0x14
|
||||
ldreq r0, _020964BC ; =0xFFFFD8F0
|
||||
ldmia sp!, {r4-r11,pc}
|
||||
_02096394:
|
||||
cmp r1, #0x0
|
||||
bne _020963C4
|
||||
mov r0, r10
|
||||
mov r1, #0x0
|
||||
bl initPage
|
||||
add r0, r10, #0x1f0
|
||||
add r1, r10, #0xf0
|
||||
mov r2, #0xe
|
||||
bl MI_CpuCopy8
|
||||
ldrb r0, [r10, #0x1ef]
|
||||
strb r0, [r10, #0xef]
|
||||
b _020963F4
|
||||
_020963C4:
|
||||
ldr r0, [sp, #0x4]
|
||||
cmp r0, #0x0
|
||||
bne _020963F4
|
||||
mov r0, r10
|
||||
mov r1, #0x1
|
||||
bl initPage
|
||||
add r0, r10, #0xf0
|
||||
add r1, r10, #0x1f0
|
||||
mov r2, #0xe
|
||||
bl MI_CpuCopy8
|
||||
ldrb r0, [r10, #0xef]
|
||||
strb r0, [r10, #0x1ef]
|
||||
_020963F4:
|
||||
add r0, r10, #0xf0
|
||||
bl DWCi_BACKUPlSetWiFi
|
||||
ldr r0, [sp, #0x8]
|
||||
cmp r0, #0x0
|
||||
bne _02096414
|
||||
mov r0, r10
|
||||
mov r1, #0x2
|
||||
bl initPage
|
||||
_02096414:
|
||||
ldr r0, [sp, #0xc]
|
||||
cmp r0, #0x0
|
||||
bne _02096430
|
||||
add r1, r10, #0x300
|
||||
mov r0, #0x0
|
||||
mov r2, #0x100
|
||||
bl MIi_CpuClear16
|
||||
_02096430:
|
||||
mov r4, #0x0
|
||||
mov r1, r4
|
||||
add r0, sp, #0x0
|
||||
add r5, r10, #0xef
|
||||
mov r6, #0x1
|
||||
_02096444:
|
||||
ldr r2, [r0, r1, lsl #0x2]
|
||||
cmp r2, #0x0
|
||||
bne _0209647C
|
||||
ldrb r2, [r10, #0xef]
|
||||
mov r7, r6, lsl r1
|
||||
ands r2, r2, r7
|
||||
beq _0209647C
|
||||
ldrb r3, [r5, #0x0]
|
||||
mvn r2, r7
|
||||
mov r4, r6
|
||||
and r2, r3, r2
|
||||
strb r2, [r5, #0x0]
|
||||
ldrb r2, [r10, #0xef]
|
||||
strb r2, [r10, #0x1ef]
|
||||
_0209647C:
|
||||
add r1, r1, #0x1
|
||||
cmp r1, #0x3
|
||||
blt _02096444
|
||||
mov r0, r10
|
||||
bl DWCi_BACKUPlWriteAll
|
||||
cmp r0, #0x0
|
||||
addeq sp, sp, #0x14
|
||||
ldreq r0, _020964BC ; =0xFFFFD8F0
|
||||
ldmeqia sp!, {r4-r11,pc}
|
||||
cmp r4, #0x0
|
||||
ldrne r0, _020964C4 ; =0xFFFFD8EE
|
||||
moveq r0, #0x0
|
||||
add sp, sp, #0x14
|
||||
ldmia sp!, {r4-r11,pc}
|
||||
.balign 4
|
||||
_020964B4: .word 0xFFFFD8EF
|
||||
_020964B8: .word 0x0000A001
|
||||
_020964BC: .word 0xFFFFD8F0
|
||||
_020964C0: .word 0xFFFFD8ED
|
||||
_020964C4: .word 0xFFFFD8EE
|
||||
37
arm9/asm/DWC_init.s
Normal file
37
arm9/asm/DWC_init.s
Normal file
@@ -0,0 +1,37 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.text
|
||||
|
||||
.extern _SDK_NintendoDWC
|
||||
|
||||
arm_func_start DWC_Init
|
||||
DWC_Init: ; 0x02096B14
|
||||
stmdb sp!, {r4-r6,lr}
|
||||
mov r6, r0
|
||||
ldr r0, _02096B74 ; =_SDK_NintendoDWC
|
||||
mov r4, #0x0
|
||||
bl OSi_ReferSymbol
|
||||
mov r0, r6
|
||||
bl DWC_BM_Init
|
||||
mov r5, r0
|
||||
bl DWC_Auth_CheckWiFiIDNeedCreate
|
||||
cmp r0, #0x0
|
||||
beq _02096B4C
|
||||
mov r0, r6
|
||||
bl DWCi_AUTH_MakeWiFiID
|
||||
mov r4, #0x1
|
||||
_02096B4C:
|
||||
cmp r5, #0x0
|
||||
bge _02096B64
|
||||
cmp r4, #0x0
|
||||
movne r0, #0x2
|
||||
moveq r0, #0x3
|
||||
ldmia sp!, {r4-r6,pc}
|
||||
_02096B64:
|
||||
cmp r4, #0x0
|
||||
movne r0, #0x1
|
||||
moveq r0, #0x0
|
||||
ldmia sp!, {r4-r6,pc}
|
||||
.balign 4
|
||||
_02096B74: .word _SDK_NintendoDWC
|
||||
2
arm9/asm/DWC_report.s
Normal file
2
arm9/asm/DWC_report.s
Normal file
@@ -0,0 +1,2 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
458
arm9/asm/DWC_util_wifiidtool.s
Normal file
458
arm9/asm/DWC_util_wifiidtool.s
Normal file
@@ -0,0 +1,458 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.section .rodata
|
||||
|
||||
.global UNK_020FF578
|
||||
UNK_020FF578: ; 0x020FF578
|
||||
.byte 0x01, 0x02, 0x00, 0x04, 0x03, 0x05, 0x06, 0x07
|
||||
|
||||
.global UNK_020FF580
|
||||
UNK_020FF580: ; 0x020FF580
|
||||
.byte 0x05, 0x09, 0x01, 0x0E, 0x0C, 0x02, 0x0A, 0x00, 0x0B, 0x0D, 0x03, 0x04, 0x08, 0x06, 0x0F, 0x07
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start DWC_Auth_CheckWiFiIDNeedCreate
|
||||
DWC_Auth_CheckWiFiIDNeedCreate:
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0x14
|
||||
add r0, sp, #0x0
|
||||
bl DWCi_BM_GetWiFiInfo
|
||||
ldr r2, [sp, #0x8]
|
||||
ldr r1, [sp, #0xc]
|
||||
mov r0, #0x0
|
||||
cmp r1, r0
|
||||
cmpeq r2, r0
|
||||
bne _0209650C
|
||||
ldr r1, [sp, #0x4]
|
||||
ldr r2, [sp, #0x0]
|
||||
cmp r1, r0
|
||||
cmpeq r2, r0
|
||||
addeq sp, sp, #0x14
|
||||
moveq r0, #0x1
|
||||
ldmeqia sp!, {pc}
|
||||
_0209650C:
|
||||
mov r0, #0x0
|
||||
add sp, sp, #0x14
|
||||
ldmia sp!, {pc}
|
||||
|
||||
arm_func_start DWC_Auth_GetId
|
||||
DWC_Auth_GetId: ; 0x02096518
|
||||
stmdb sp!, {r4,lr}
|
||||
sub sp, sp, #0x18
|
||||
mov r4, r0
|
||||
add r0, sp, #0x0
|
||||
bl DWCi_BM_GetWiFiInfo
|
||||
add r0, sp, #0x0
|
||||
ldmia r0, {r2-r3}
|
||||
stmia r4, {r2-r3}
|
||||
add r1, sp, #0x8
|
||||
add r0, r4, #0x8
|
||||
ldmia r1, {r2-r3}
|
||||
stmia r0, {r2-r3}
|
||||
ldr r2, [sp, #0x0]
|
||||
ldr r1, [sp, #0x4]
|
||||
mov r0, #0x0
|
||||
cmp r1, r0
|
||||
cmpeq r2, r0
|
||||
streq r0, [r4, #0x10]
|
||||
movne r0, #0x1
|
||||
strne r0, [r4, #0x10]
|
||||
add sp, sp, #0x18
|
||||
ldmia sp!, {r4,pc}
|
||||
|
||||
arm_func_start FUN_02096570
|
||||
FUN_02096570: ; 0x02096570
|
||||
stmdb sp!, {r4-r10,lr}
|
||||
sub sp, sp, #0x28
|
||||
add r2, sp, #0x0
|
||||
mov r1, #0x0
|
||||
strb r1, [r2, #0x0]
|
||||
strb r1, [r2, #0x1]
|
||||
strb r1, [r2, #0x2]
|
||||
strb r1, [r2, #0x3]
|
||||
strb r1, [r2, #0x4]
|
||||
mov r5, r0
|
||||
strb r1, [r2, #0x5]
|
||||
bl DWCi_BM_GetWiFiInfo
|
||||
bl RTC_Init
|
||||
add r0, sp, #0x8
|
||||
bl RTC_GetDate
|
||||
cmp r0, #0x0
|
||||
addne sp, sp, #0x28
|
||||
movne r0, #0x0
|
||||
ldmneia sp!, {r4-r10,pc}
|
||||
add r0, sp, #0x18
|
||||
bl RTC_GetTime
|
||||
cmp r0, #0x0
|
||||
addne sp, sp, #0x28
|
||||
movne r0, #0x0
|
||||
ldmneia sp!, {r4-r10,pc}
|
||||
add r0, sp, #0x8
|
||||
add r1, sp, #0x18
|
||||
bl RTC_ConvertDateTimeToSecond
|
||||
mov r4, r0
|
||||
mov r0, #0x0
|
||||
subs r2, r4, r0
|
||||
sbcs r2, r1, r0
|
||||
addlt sp, sp, #0x28
|
||||
ldmltia sp!, {r4-r10,pc}
|
||||
bl OS_IsTickAvailable
|
||||
cmp r0, #0x0
|
||||
beq _0209660C
|
||||
ldr r0, _02096700 ; =OS_GetTick
|
||||
adds r4, r4, r0
|
||||
_0209660C:
|
||||
add r0, sp, #0x0
|
||||
bl OS_GetMacAddress
|
||||
ldrb r1, [sp, #0x0]
|
||||
ldr r6, _02096704 ; =0x5D588B65
|
||||
ldr r7, _02096708 ; =0x00269EC3
|
||||
ldrb r0, [sp, #0x1]
|
||||
mla r9, r4, r6, r7
|
||||
mov r1, r1, lsl #0x10
|
||||
orr r1, r1, r0, lsl #0x8
|
||||
ldrb r2, [sp, #0x2]
|
||||
ldr r0, _0209670C ; =0x000009BF
|
||||
ldrb r8, [sp, #0x3]
|
||||
orr r1, r2, r1
|
||||
cmp r1, r0
|
||||
movne r1, #0x1
|
||||
mov r2, r9, lsr #0x10
|
||||
mov r0, #0x3e8
|
||||
mul r3, r2, r0
|
||||
mov r2, r3, lsr #0x10
|
||||
mov r3, r8, lsl #0x10
|
||||
ldrb r4, [sp, #0x4]
|
||||
ldrb r0, [sp, #0x5]
|
||||
mov r8, #0x0
|
||||
orr r10, r3, r4, lsl #0x8
|
||||
strh r2, [r5, #0x10]
|
||||
str r8, [r5, #0x8]
|
||||
str r8, [r5, #0xc]
|
||||
moveq r1, #0x0
|
||||
ldr r2, [r5, #0xc]
|
||||
ldr r3, [r5, #0x8]
|
||||
cmp r2, r8
|
||||
cmpeq r3, r8
|
||||
and r4, r1, #0xff
|
||||
orr r10, r0, r10
|
||||
bne _020966F4
|
||||
_02096698:
|
||||
mla r9, r6, r9, r7
|
||||
b _020966A4
|
||||
_020966A0:
|
||||
mla r9, r6, r9, r7
|
||||
_020966A4:
|
||||
cmp r9, #0x0
|
||||
beq _020966A0
|
||||
ldrh r1, [r5, #0x12]
|
||||
mov r0, r9, lsl #0x10
|
||||
mov r0, r0, lsr #0x10
|
||||
cmp r1, r0
|
||||
beq _020966A0
|
||||
strh r0, [r5, #0x12]
|
||||
ldrh r0, [r5, #0x12]
|
||||
mov r1, r10
|
||||
mov r2, r4
|
||||
mov r3, r8
|
||||
bl FUN_02096988
|
||||
str r0, [r5, #0x8]
|
||||
str r1, [r5, #0xc]
|
||||
ldr r0, [r5, #0xc]
|
||||
ldr r1, [r5, #0x8]
|
||||
cmp r0, r8
|
||||
cmpeq r1, r8
|
||||
beq _02096698
|
||||
_020966F4:
|
||||
mov r0, #0x1
|
||||
add sp, sp, #0x28
|
||||
ldmia sp!, {r4-r10,pc}
|
||||
.balign 4
|
||||
_02096700: .word OS_GetTick
|
||||
_02096704: .word 0x5D588B65
|
||||
_02096708: .word 0x00269EC3
|
||||
_0209670C: .word 0x000009BF
|
||||
|
||||
arm_func_start FUN_02096710
|
||||
FUN_02096710: ; 0x02096710
|
||||
stmdb sp!, {r4-r5,lr}
|
||||
sub sp, sp, #0x14
|
||||
mov r5, r0
|
||||
add r0, sp, #0x0
|
||||
mov r4, r1
|
||||
bl DWCi_BM_GetWiFiInfo
|
||||
add r12, r5, #0x8
|
||||
ldmia r12, {r2-r3}
|
||||
stmia r5, {r2-r3}
|
||||
add r1, sp, #0x8
|
||||
ldmia r1, {r2-r3}
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
stmia r12, {r2-r3}
|
||||
bl DWCi_BM_SetWiFiInfo
|
||||
cmp r0, #0x0
|
||||
movne r0, #0x1
|
||||
moveq r0, #0x0
|
||||
add sp, sp, #0x14
|
||||
ldmia sp!, {r4-r5,pc}
|
||||
|
||||
arm_func_start DWCi_AUTH_MakeWiFiID
|
||||
DWCi_AUTH_MakeWiFiID: ; 0x02096760
|
||||
stmdb sp!, {r4,lr}
|
||||
sub sp, sp, #0x18
|
||||
mov r4, r0
|
||||
add r0, sp, #0x0
|
||||
bl DWCi_AUTH_GetNewWiFiInfo
|
||||
cmp r0, #0x0
|
||||
addeq sp, sp, #0x18
|
||||
moveq r0, #0x0
|
||||
ldmeqia sp!, {r4,pc}
|
||||
add r0, sp, #0x0
|
||||
mov r1, r4
|
||||
bl DWCi_BM_SetWiFiInfo
|
||||
cmp r0, #0x0
|
||||
movne r0, #0x1
|
||||
moveq r0, #0x0
|
||||
add sp, sp, #0x18
|
||||
ldmia sp!, {r4,pc}
|
||||
|
||||
arm_func_start DWCi_AUTH_GetNewWiFiInfo
|
||||
DWCi_AUTH_GetNewWiFiInfo:
|
||||
stmdb sp!, {r4-r10,lr}
|
||||
sub sp, sp, #0x28
|
||||
mov r8, r0
|
||||
bl DWCi_BM_GetWiFiInfo
|
||||
bl RTC_Init
|
||||
add r0, sp, #0x8
|
||||
bl RTC_GetDate
|
||||
cmp r0, #0x0
|
||||
addne sp, sp, #0x28
|
||||
movne r0, #0x0
|
||||
ldmneia sp!, {r4-r10,pc}
|
||||
add r0, sp, #0x18
|
||||
bl RTC_GetTime
|
||||
cmp r0, #0x0
|
||||
addne sp, sp, #0x28
|
||||
movne r0, #0x0
|
||||
ldmneia sp!, {r4-r10,pc}
|
||||
add r0, sp, #0x8
|
||||
add r1, sp, #0x18
|
||||
bl RTC_ConvertDateTimeToSecond
|
||||
mov r4, r0
|
||||
mov r0, #0x0
|
||||
subs r2, r4, r0
|
||||
sbcs r2, r1, r0
|
||||
addlt sp, sp, #0x28
|
||||
ldmltia sp!, {r4-r10,pc}
|
||||
bl OS_IsTickAvailable
|
||||
cmp r0, #0x0
|
||||
beq _02096820
|
||||
ldr r0, _02096978 ; =OS_GetTick
|
||||
adds r4, r4, r0
|
||||
_02096820:
|
||||
add r0, sp, #0x0
|
||||
bl OS_GetMacAddress
|
||||
ldrb r1, [sp, #0x0]
|
||||
ldr sb, _0209697C ; =0x5D588B65
|
||||
ldr sl, _02096980 ; =0x00269EC3
|
||||
ldrb r0, [sp, #0x1]
|
||||
mla r5, r4, r9, r10
|
||||
mov r1, r1, lsl #0x10
|
||||
orr r1, r1, r0, lsl #0x8
|
||||
ldrb r2, [sp, #0x2]
|
||||
ldr r0, _02096984 ; =0x000009BF
|
||||
ldrb r6, [sp, #0x3]
|
||||
orr r1, r2, r1
|
||||
cmp r1, r0
|
||||
movne r1, #0x1
|
||||
moveq r1, #0x0
|
||||
mov r2, r5, lsr #0x10
|
||||
mov r0, #0x3e8
|
||||
mul r3, r2, r0
|
||||
mov r2, r3, lsr #0x10
|
||||
ldrb r0, [sp, #0x5]
|
||||
ldrb r4, [sp, #0x4]
|
||||
mov r3, r6, lsl #0x10
|
||||
and r7, r1, #0xff
|
||||
orr r3, r3, r4, lsl #0x8
|
||||
strh r2, [r8, #0x10]
|
||||
mov r4, #0x0
|
||||
str r4, [r8, #0x0]
|
||||
str r4, [r8, #0x4]
|
||||
ldrh r2, [r8, #0x12]
|
||||
orr r6, r0, r3
|
||||
cmp r2, #0x0
|
||||
bne _02096910
|
||||
str r4, [r8, #0x8]
|
||||
str r4, [r8, #0xc]
|
||||
ldr r0, [r8, #0xc]
|
||||
ldr r1, [r8, #0x8]
|
||||
cmp r0, r4
|
||||
cmpeq r1, r4
|
||||
bne _0209696C
|
||||
_020968C0:
|
||||
mul r0, r5, r9
|
||||
adds r5, r0, r10
|
||||
bne _020968D8
|
||||
_020968CC:
|
||||
mul r0, r5, r9
|
||||
adds r5, r0, r10
|
||||
beq _020968CC
|
||||
_020968D8:
|
||||
strh r5, [r8, #0x12]
|
||||
ldrh r0, [r8, #0x12]
|
||||
mov r1, r6
|
||||
mov r2, r7
|
||||
mov r3, r4
|
||||
bl FUN_02096988
|
||||
str r0, [r8, #0x8]
|
||||
str r1, [r8, #0xc]
|
||||
ldr r0, [r8, #0xc]
|
||||
ldr r1, [r8, #0x8]
|
||||
cmp r0, r4
|
||||
cmpeq r1, #0x0
|
||||
beq _020968C0
|
||||
b _0209696C
|
||||
_02096910:
|
||||
str r4, [r8, #0x8]
|
||||
str r4, [r8, #0xc]
|
||||
ldr r0, [r8, #0xc]
|
||||
ldr r1, [r8, #0x8]
|
||||
cmp r0, r4
|
||||
cmpeq r1, r4
|
||||
bne _0209696C
|
||||
add r5, r8, #0x12
|
||||
_02096930:
|
||||
ldrh r0, [r5, #0x0]
|
||||
mov r1, r6
|
||||
mov r2, r7
|
||||
add r0, r0, #0x1
|
||||
strh r0, [r5, #0x0]
|
||||
ldrh r0, [r8, #0x12]
|
||||
mov r3, r4
|
||||
bl FUN_02096988
|
||||
str r0, [r8, #0x8]
|
||||
str r1, [r8, #0xc]
|
||||
ldr r0, [r8, #0xc]
|
||||
ldr r1, [r8, #0x8]
|
||||
cmp r0, r4
|
||||
cmpeq r1, r4
|
||||
beq _02096930
|
||||
_0209696C:
|
||||
mov r0, #0x1
|
||||
add sp, sp, #0x28
|
||||
ldmia sp!, {r4-r10,pc}
|
||||
.balign 4
|
||||
_02096978: .word OS_GetTick
|
||||
_0209697C: .word 0x5D588B65
|
||||
_02096980: .word 0x00269EC3
|
||||
_02096984: .word 0x000009BF
|
||||
|
||||
arm_func_start FUN_02096988
|
||||
FUN_02096988: ; 0x02096988
|
||||
stmdb sp!, {r4-r7,lr}
|
||||
sub sp, sp, #0x14
|
||||
mov lr, #0x0
|
||||
and r12, lr, #0x0
|
||||
mvn r5, #0xff000000
|
||||
ldr r4, _02096B08 ; =0x0000FFFF
|
||||
and r2, r2, #0x1
|
||||
mov r6, r12, lsl #0x2
|
||||
and r3, r3, #0x3
|
||||
and r5, r1, r5
|
||||
orr r1, r3, r2, lsl #0x2
|
||||
orr r6, r6, r2, lsr #0x1e
|
||||
mov r7, r12, lsl #0x3
|
||||
and r2, r0, r4
|
||||
orr r0, r1, r5, lsl #0x3
|
||||
orr r1, r0, r2, lsl #0x1b
|
||||
mov r3, r12, lsl #0x1b
|
||||
orr r3, r3, r2, lsr #0x5
|
||||
orr r7, r7, r5, lsr #0x1d
|
||||
orr r0, r12, r6
|
||||
orr r0, r7, r0
|
||||
orr r0, r3, r0
|
||||
add r2, sp, #0x0
|
||||
str r1, [sp, #0x0]
|
||||
str r0, [sp, #0x4]
|
||||
_020969EC:
|
||||
ldrb r0, [r2, #0x0]
|
||||
add lr, lr, #0x1
|
||||
cmp lr, #0x6
|
||||
eor r0, r0, #0xd6
|
||||
strb r0, [r2], #0x1
|
||||
blt _020969EC
|
||||
ldr r2, _02096B0C ; =UNK_020FF580
|
||||
add r5, sp, #0x0
|
||||
mov r4, #0x0
|
||||
_02096A10:
|
||||
ldrb r3, [r5, #0x0]
|
||||
add r4, r4, #0x1
|
||||
cmp r4, #0x5
|
||||
mov r0, r3, asr #0x4
|
||||
and r1, r0, #0xf
|
||||
and r0, r3, #0xf
|
||||
ldrb r1, [r2, r1]
|
||||
ldrb r0, [r2, r0]
|
||||
orr r0, r0, r1, lsl #0x4
|
||||
strb r0, [r5], #0x1
|
||||
blt _02096A10
|
||||
add r0, sp, #0x0
|
||||
add r1, sp, #0x8
|
||||
mov r2, #0x8
|
||||
bl MI_CpuCopy8
|
||||
ldr r4, _02096B10 ; =UNK_020FF578
|
||||
add r5, sp, #0x8
|
||||
mov r3, #0x0
|
||||
add r1, sp, #0x0
|
||||
_02096A5C:
|
||||
ldrb r2, [r5, #0x0]
|
||||
ldrb r0, [r4, #0x0]
|
||||
add r3, r3, #0x1
|
||||
cmp r3, #0x5
|
||||
strb r2, [r1, r0]
|
||||
add r5, r5, #0x1
|
||||
add r4, r4, #0x1
|
||||
blt _02096A5C
|
||||
ldrb r2, [sp, #0x5]
|
||||
mov r0, #0x0
|
||||
ldr r3, [sp, #0x0]
|
||||
and r2, r2, #0x7
|
||||
strb r0, [sp, #0x7]
|
||||
strb r0, [sp, #0x6]
|
||||
strb r2, [sp, #0x5]
|
||||
ldr r2, [sp, #0x4]
|
||||
mov r4, r3, lsl #0x1
|
||||
mov r2, r2, lsl #0x1
|
||||
orr r2, r2, r3, lsr #0x1f
|
||||
str r2, [sp, #0x4]
|
||||
ldrb r2, [sp, #0x5]
|
||||
str r4, [sp, #0x0]
|
||||
ldrb r3, [sp, #0x0]
|
||||
mov r2, r2, asr #0x3
|
||||
and r2, r2, #0x1
|
||||
orr r2, r3, r2
|
||||
strb r2, [sp, #0x0]
|
||||
_02096AC8:
|
||||
ldrb r2, [r1, #0x0]
|
||||
add r0, r0, #0x1
|
||||
cmp r0, #0x6
|
||||
eor r2, r2, #0x67
|
||||
strb r2, [r1], #0x1
|
||||
blt _02096AC8
|
||||
ldrb r0, [sp, #0x5]
|
||||
mov r1, #0x0
|
||||
strb r1, [sp, #0x7]
|
||||
and r0, r0, #0x7
|
||||
strb r1, [sp, #0x6]
|
||||
strb r0, [sp, #0x5]
|
||||
ldr r0, [sp, #0x0]
|
||||
ldr r1, [sp, #0x4]
|
||||
add sp, sp, #0x14
|
||||
ldmia sp!, {r4-r7,pc}
|
||||
.balign 4
|
||||
_02096B08: .word 0x0000FFFF
|
||||
_02096B0C: .word UNK_020FF580
|
||||
_02096B10: .word UNK_020FF578
|
||||
758
arm9/asm/SOC_soc.s
Normal file
758
arm9/asm/SOC_soc.s
Normal file
@@ -0,0 +1,758 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.section .data
|
||||
|
||||
.global SOCLSocketParamUDP
|
||||
SOCLSocketParamUDP: ; 0x021061C4
|
||||
.byte 0x01, 0x01, 0xC0, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08
|
||||
.byte 0x00, 0x08, 0x0C, 0x20, 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.global SOCLSocketParamTCP
|
||||
SOCLSocketParamTCP: ; 0x021061DC
|
||||
.byte 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x66, 0x04, 0x00, 0x00, 0x00, 0x00, 0x61, 0x08, 0x00, 0x00
|
||||
.byte 0x00, 0x08, 0x0C, 0x20, 0x00, 0x08, 0x0D, 0x20
|
||||
|
||||
.global SOCLSocketParamUDPSend
|
||||
SOCLSocketParamUDPSend: ; 0x021061F4
|
||||
.byte 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEA, 0x05, 0x00, 0x00, 0x00, 0x00, 0xEB, 0x06, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0D, 0x20
|
||||
|
||||
.global UNK_0210620C
|
||||
UNK_0210620C: ; 0x0210620C
|
||||
.byte 0x25, 0x64, 0x2E, 0x25, 0x64, 0x2E, 0x25, 0x64, 0x2E, 0x25, 0x64, 0x00
|
||||
|
||||
.section .bss
|
||||
|
||||
.global UNK_021C8D38
|
||||
UNK_021C8D38: ; 0x021C8D38
|
||||
.space 0x4
|
||||
|
||||
.global FreeFunc_SOC
|
||||
FreeFunc_SOC: ; 0x021C8D3C
|
||||
.space 0x4
|
||||
|
||||
.global AllocFunc_SOC
|
||||
AllocFunc_SOC: ; 0x021C8D40
|
||||
.space 0x4
|
||||
|
||||
.global UNK_021C8D44
|
||||
UNK_021C8D44: ; 0x021C8D44
|
||||
.space 0x8
|
||||
|
||||
.global UNK_021C8D4C
|
||||
UNK_021C8D4C: ; 0x021C8D4C
|
||||
.space 0x10
|
||||
|
||||
.global UNK_021C8D5C
|
||||
UNK_021C8D5C: ; 0x021C8D5C
|
||||
.space 0x10
|
||||
|
||||
.global UNK_021C8D6C
|
||||
UNK_021C8D6C: ; 0x021C8D6C
|
||||
.space 0x38
|
||||
|
||||
.global UNK_021C8DA4
|
||||
UNK_021C8DA4: ; 0x021C8DA4
|
||||
.space 0x104
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start SOC_Poll
|
||||
SOC_Poll: ; 0x0209A0AC
|
||||
stmdb sp!, {r4-r11,lr}
|
||||
sub sp, sp, #0xc
|
||||
mov r9, r2
|
||||
str r0, [sp, #0x0]
|
||||
mov r0, #0x1
|
||||
str r0, [sp, #0x8]
|
||||
mov r0, #0x0
|
||||
mov r8, r3
|
||||
mvn r2, #0x0
|
||||
cmp r8, r2
|
||||
cmpeq r9, r2
|
||||
movne r11, #0x1
|
||||
mov r10, r1
|
||||
moveq r11, #0x0
|
||||
str r0, [sp, #0x4]
|
||||
_0209A0E8:
|
||||
ldr r5, [sp, #0x4]
|
||||
ldr r7, [sp, #0x0]
|
||||
mov r6, r5
|
||||
cmp r10, #0x0
|
||||
bls _0209A128
|
||||
_0209A0FC:
|
||||
ldrsh r1, [r7, #0x4]
|
||||
ldr r0, [r7, #0x0]
|
||||
orr r4, r1, #0xe0
|
||||
bl SOCL_GetStatus
|
||||
ands r0, r4, r0
|
||||
strh r0, [r7, #0x6]
|
||||
add r6, r6, #0x1
|
||||
addne r5, r5, #0x1
|
||||
cmp r6, r10
|
||||
add r7, r7, #0x8
|
||||
blo _0209A0FC
|
||||
_0209A128:
|
||||
cmp r5, #0x0
|
||||
bgt _0209A160
|
||||
cmp r11, #0x0
|
||||
beq _0209A148
|
||||
mov r1, #0x0
|
||||
subs r0, r1, r9
|
||||
sbcs r0, r1, r8
|
||||
bge _0209A160
|
||||
_0209A148:
|
||||
ldr r0, [sp, #0x8]
|
||||
bl OS_Sleep
|
||||
ldr r0, _0209A170 ; =0x0000020B
|
||||
subs r9, r9, r0
|
||||
sbc r8, r8, #0x0
|
||||
b _0209A0E8
|
||||
_0209A160:
|
||||
mov r0, r5
|
||||
add sp, sp, #0xc
|
||||
ldmia sp!, {r4-r11,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_0209A170: .word 0x0000020B
|
||||
|
||||
arm_func_start SOC_U32to4U8
|
||||
SOC_U32to4U8: ; 0x0209A174
|
||||
mov r2, r0, lsr #0x18
|
||||
strb r2, [r1, #0x0]
|
||||
mov r2, r0, lsr #0x10
|
||||
strb r2, [r1, #0x1]
|
||||
mov r2, r0, lsr #0x8
|
||||
strb r2, [r1, #0x2]
|
||||
strb r0, [r1, #0x3]
|
||||
bx lr
|
||||
|
||||
arm_func_start SOC_InetNtoP
|
||||
SOC_InetNtoP: ; 0x0209A194
|
||||
stmdb sp!, {r4,lr}
|
||||
sub sp, sp, #0x18
|
||||
cmp r0, #0x2
|
||||
mov r4, r2
|
||||
addne sp, sp, #0x18
|
||||
movne r0, #0x0
|
||||
ldmneia sp!, {r4,lr}
|
||||
bxne lr
|
||||
cmp r3, #0x10
|
||||
addcc sp, sp, #0x18
|
||||
movcc r0, #0x0
|
||||
ldmccia sp!, {r4,lr}
|
||||
bxcc lr
|
||||
mov r0, r1
|
||||
add r1, sp, #0xc
|
||||
mov r2, #0x4
|
||||
bl MI_CpuCopy8
|
||||
ldr r0, [sp, #0xc]
|
||||
add r1, sp, #0x10
|
||||
bl SOC_U32to4U8
|
||||
ldrb r1, [sp, #0x12]
|
||||
ldr r2, _0209A220 ; =UNK_0210620C
|
||||
mov r0, r4
|
||||
str r1, [sp, #0x0]
|
||||
ldrb r3, [sp, #0x11]
|
||||
mov r1, #0x10
|
||||
str r3, [sp, #0x4]
|
||||
ldrb r3, [sp, #0x10]
|
||||
str r3, [sp, #0x8]
|
||||
ldrb r3, [sp, #0x13]
|
||||
bl OS_SNPrintf
|
||||
mov r0, r4
|
||||
add sp, sp, #0x18
|
||||
ldmia sp!, {r4,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_0209A220: .word UNK_0210620C
|
||||
|
||||
arm_func_start SOC_InetAtoN
|
||||
SOC_InetAtoN: ; 0x0209A224
|
||||
stmdb sp!, {r4,lr}
|
||||
mov r4, r1
|
||||
bl SOCL_InetAtoH
|
||||
cmp r0, #0x0
|
||||
moveq r0, #0x0
|
||||
ldmeqia sp!, {r4,lr}
|
||||
bxeq lr
|
||||
mov r2, r0, lsr #0x18
|
||||
mov r1, r0, lsr #0x8
|
||||
mov r3, r0, lsl #0x8
|
||||
mov r12, r0, lsl #0x18
|
||||
and r2, r2, #0xff
|
||||
and r0, r1, #0xff00
|
||||
and r1, r3, #0xff0000
|
||||
orr r0, r2, r0
|
||||
and r2, r12, #0xff000000
|
||||
orr r0, r1, r0
|
||||
orr r0, r2, r0
|
||||
str r0, [r4, #0x0]
|
||||
mov r0, #0x1
|
||||
ldmia sp!, {r4,lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start SOC_InetNtoA
|
||||
SOC_InetNtoA: ; 0x0209A27C
|
||||
stmdb sp!, {r0-r3}
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0x4
|
||||
ldr r2, _0209A2B0 ; =UNK_021C8D5C
|
||||
add r1, sp, #0x8
|
||||
mov r0, #0x2
|
||||
mov r3, #0x10
|
||||
bl SOC_InetNtoP
|
||||
ldr r0, _0209A2B0 ; =UNK_021C8D5C
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {lr}
|
||||
add sp, sp, #0x10
|
||||
bx lr
|
||||
.balign 4
|
||||
_0209A2B0: .word UNK_021C8D5C
|
||||
|
||||
arm_func_start SOC_Cleanup
|
||||
SOC_Cleanup: ; 0x0209A2B4
|
||||
ldr ip, _0209A2BC ; =SOCL_Cleanup
|
||||
bx r12
|
||||
.balign 4
|
||||
_0209A2BC: .word SOCL_Cleanup
|
||||
|
||||
arm_func_start SOC_Startup
|
||||
SOC_Startup: ; 0x0209A2C0
|
||||
stmdb sp!, {r4-r8,lr}
|
||||
ldr r1, [r0, #0xc]
|
||||
ldr ip, _0209A430 ; =UNK_021C8D6C
|
||||
cmp r1, #0x1
|
||||
moveq r1, #0x1
|
||||
movne r1, #0x0
|
||||
str r1, [r12, #0x0]
|
||||
ldr r6, [r0, #0x10]
|
||||
ldr r5, _0209A434 ; =AllocFunc_SOCL
|
||||
mov r2, r6, lsr #0x18
|
||||
mov r1, r6, lsr #0x8
|
||||
mov r3, r6, lsl #0x8
|
||||
and r2, r2, #0xff
|
||||
and r1, r1, #0xff00
|
||||
mov r6, r6, lsl #0x18
|
||||
orr r1, r2, r1
|
||||
and r3, r3, #0xff0000
|
||||
orr r1, r3, r1
|
||||
and r2, r6, #0xff000000
|
||||
orr r1, r2, r1
|
||||
str r1, [r12, #0x4]
|
||||
ldr r7, [r0, #0x14]
|
||||
ldr r4, _0209A438 ; =FreeFunc_SOCL
|
||||
mov r2, r7, lsr #0x18
|
||||
mov r1, r7, lsr #0x8
|
||||
mov r6, r7, lsl #0x8
|
||||
and r2, r2, #0xff
|
||||
and r1, r1, #0xff00
|
||||
mov r7, r7, lsl #0x18
|
||||
orr r1, r2, r1
|
||||
and r6, r6, #0xff0000
|
||||
and r2, r7, #0xff000000
|
||||
orr r1, r6, r1
|
||||
orr r1, r2, r1
|
||||
str r1, [r12, #0x8]
|
||||
ldr r1, [r0, #0x18]
|
||||
ldr r3, _0209A43C ; =AllocFunc_SOC
|
||||
mov r7, r1, lsr #0x18
|
||||
mov r6, r1, lsr #0x8
|
||||
mov r8, r1, lsl #0x8
|
||||
and r7, r7, #0xff
|
||||
and r6, r6, #0xff00
|
||||
mov r1, r1, lsl #0x18
|
||||
orr r6, r7, r6
|
||||
and r8, r8, #0xff0000
|
||||
and r7, r1, #0xff000000
|
||||
orr r1, r8, r6
|
||||
orr r1, r7, r1
|
||||
str r1, [r12, #0xc]
|
||||
ldr r1, [r0, #0x1c]
|
||||
ldr r2, _0209A440 ; =FreeFunc_SOC
|
||||
mov r7, r1, lsr #0x18
|
||||
mov r6, r1, lsr #0x8
|
||||
mov r8, r1, lsl #0x8
|
||||
and r7, r7, #0xff
|
||||
and r6, r6, #0xff00
|
||||
mov r1, r1, lsl #0x18
|
||||
orr r6, r7, r6
|
||||
and r8, r8, #0xff0000
|
||||
and r7, r1, #0xff000000
|
||||
orr r1, r8, r6
|
||||
orr r1, r7, r1
|
||||
str r1, [r12, #0x10]
|
||||
ldr r1, [r0, #0x20]
|
||||
mov lr, #0x40
|
||||
mov r7, r1, lsr #0x18
|
||||
mov r6, r1, lsr #0x8
|
||||
mov r8, r1, lsl #0x8
|
||||
and r7, r7, #0xff
|
||||
and r6, r6, #0xff00
|
||||
mov r1, r1, lsl #0x18
|
||||
orr r6, r7, r6
|
||||
and r8, r8, #0xff0000
|
||||
and r7, r1, #0xff000000
|
||||
orr r1, r8, r6
|
||||
orr r1, r7, r1
|
||||
str r5, [r12, #0x18]
|
||||
str r4, [r12, #0x1c]
|
||||
str r1, [r12, #0x14]
|
||||
ldr r1, [r0, #0x4]
|
||||
str r1, [r3, #0x0]
|
||||
ldr r1, [r0, #0x8]
|
||||
str lr, [r12, #0x20]
|
||||
str r1, [r2, #0x0]
|
||||
ldr r1, [r0, #0x2c]
|
||||
str r1, [r12, #0x30]
|
||||
ldr r1, [r0, #0x30]
|
||||
mov r0, r12
|
||||
str r1, [r12, #0x34]
|
||||
bl SOCL_Startup
|
||||
ldmia sp!, {r4-r8,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_0209A430: .word UNK_021C8D6C
|
||||
_0209A434: .word AllocFunc_SOCL
|
||||
_0209A438: .word FreeFunc_SOCL
|
||||
_0209A43C: .word AllocFunc_SOC
|
||||
_0209A440: .word FreeFunc_SOC
|
||||
|
||||
arm_func_start FreeFunc_SOCL
|
||||
FreeFunc_SOCL: ; 0x0209A444
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0x4
|
||||
cmp r0, #0x0
|
||||
addeq sp, sp, #0x4
|
||||
ldmeqia sp!, {lr}
|
||||
bxeq lr
|
||||
ldr r1, _0209A480 ; =FreeFunc_SOC
|
||||
ldr r2, [r0, #-0x4]
|
||||
ldr r3, [r1, #0x0]
|
||||
sub r1, r0, #0x4
|
||||
mov r0, #0x0
|
||||
blx r3
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_0209A480: .word FreeFunc_SOC
|
||||
|
||||
arm_func_start AllocFunc_SOCL
|
||||
AllocFunc_SOCL: ; 0x0209A484
|
||||
stmdb sp!, {r4,lr}
|
||||
ldr r1, _0209A4B0 ; =AllocFunc_SOC
|
||||
add r4, r0, #0x4
|
||||
ldr r2, [r1, #0x0]
|
||||
mov r1, r4
|
||||
mov r0, #0x0
|
||||
blx r2
|
||||
cmp r0, #0x0
|
||||
strne r4, [r0], #0x4
|
||||
ldmia sp!, {r4,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_0209A4B0: .word AllocFunc_SOC
|
||||
|
||||
arm_func_start SOC_Fcntl
|
||||
SOC_Fcntl: ; 0x0209A4B4
|
||||
cmp r0, #0x0
|
||||
mvneq r0, #0x0
|
||||
bxeq lr
|
||||
cmp r1, #0x3
|
||||
beq _0209A4D4
|
||||
cmp r1, #0x4
|
||||
beq _0209A4E8
|
||||
b _0209A4FC
|
||||
_0209A4D4:
|
||||
ldrsb r0, [r0, #0x72]
|
||||
cmp r0, #0x1
|
||||
moveq r0, #0x0
|
||||
movne r0, #0x4
|
||||
bx lr
|
||||
_0209A4E8:
|
||||
ands r1, r2, #0x4
|
||||
movne r1, #0x0
|
||||
strneb r1, [r0, #0x72]
|
||||
moveq r1, #0x1
|
||||
streqb r1, [r0, #0x72]
|
||||
_0209A4FC:
|
||||
mov r0, #0x0
|
||||
bx lr
|
||||
|
||||
arm_func_start SOC_Accept
|
||||
SOC_Accept: ; 0x0209A504
|
||||
stmdb sp!, {r4,lr}
|
||||
sub sp, sp, #0x8
|
||||
mov r4, r1
|
||||
add r1, sp, #0x0
|
||||
add r2, sp, #0x4
|
||||
bl SOCL_Accept
|
||||
cmp r0, #0x0
|
||||
addlt sp, sp, #0x8
|
||||
ldmltia sp!, {r4,lr}
|
||||
bxlt lr
|
||||
ldrh r1, [sp, #0x0]
|
||||
mov r2, r1, asr #0x8
|
||||
mov r1, r1, lsl #0x8
|
||||
and r2, r2, #0xff
|
||||
and r1, r1, #0xff00
|
||||
orr r1, r2, r1
|
||||
strh r1, [r4, #0x2]
|
||||
ldr r12, [sp, #0x4]
|
||||
mov r2, r12, lsr #0x18
|
||||
mov r1, r12, lsr #0x8
|
||||
mov r3, r12, lsl #0x8
|
||||
mov r12, r12, lsl #0x18
|
||||
and r2, r2, #0xff
|
||||
and r1, r1, #0xff00
|
||||
and r3, r3, #0xff0000
|
||||
orr r1, r2, r1
|
||||
and r2, r12, #0xff000000
|
||||
orr r1, r3, r1
|
||||
orr r1, r2, r1
|
||||
str r1, [r4, #0x4]
|
||||
add sp, sp, #0x8
|
||||
ldmia sp!, {r4,lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start SOC_Listen
|
||||
SOC_Listen: ; 0x0209A588
|
||||
ldr ip, _0209A590 ; =SOCL_Listen
|
||||
bx r12
|
||||
.balign 4
|
||||
_0209A590: .word SOCL_Listen
|
||||
|
||||
arm_func_start SOC_GetResolver
|
||||
SOC_GetResolver: ; 0x0209A594
|
||||
stmdb sp!, {r4-r5,lr}
|
||||
sub sp, sp, #0x4
|
||||
ldr r12, [r1, #0x0]
|
||||
ldr r0, [r0, #0x0]
|
||||
mov r2, r12, lsr #0x18
|
||||
mov r4, r0, lsr #0x18
|
||||
mov lr, r0, lsr #0x8
|
||||
mov r1, r12, lsr #0x8
|
||||
mov r5, r0, lsl #0x8
|
||||
mov r3, r12, lsl #0x8
|
||||
mov r0, r0, lsl #0x18
|
||||
mov r12, r12, lsl #0x18
|
||||
and r4, r4, #0xff
|
||||
and lr, lr, #0xff00
|
||||
and r2, r2, #0xff
|
||||
and r1, r1, #0xff00
|
||||
and r5, r5, #0xff0000
|
||||
orr r4, r4, lr
|
||||
and r3, r3, #0xff0000
|
||||
orr r1, r2, r1
|
||||
and lr, r0, #0xff000000
|
||||
orr r0, r5, r4
|
||||
and r2, r12, #0xff000000
|
||||
orr r1, r3, r1
|
||||
orr r0, lr, r0
|
||||
orr r1, r2, r1
|
||||
bl SOCL_SetResolver
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r5,lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start SOC_GetHostID
|
||||
SOC_GetHostID: ; 0x0209A60C
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0x4
|
||||
bl SOCL_GetHostID
|
||||
mov r2, r0, lsr #0x18
|
||||
mov r1, r0, lsr #0x8
|
||||
mov r3, r0, lsl #0x8
|
||||
mov r12, r0, lsl #0x18
|
||||
and r2, r2, #0xff
|
||||
and r0, r1, #0xff00
|
||||
and r1, r3, #0xff0000
|
||||
orr r0, r2, r0
|
||||
and r2, r12, #0xff000000
|
||||
orr r0, r1, r0
|
||||
orr r0, r2, r0
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start SOC_GetSockName
|
||||
SOC_GetSockName: ; 0x0209A650
|
||||
stmdb sp!, {r4-r6,lr}
|
||||
movs r5, r0
|
||||
mov r4, r1
|
||||
mvneq r0, #0x26
|
||||
ldmeqia sp!, {r4-r6,lr}
|
||||
bxeq lr
|
||||
bl SOCL_GetHostID
|
||||
cmp r5, #0x0
|
||||
ldrneh r1, [r5, #0x74]
|
||||
mov r2, r0, lsr #0x18
|
||||
mov r6, #0x8
|
||||
moveq r1, #0x0
|
||||
cmp r0, #0x0
|
||||
moveq r1, #0x0
|
||||
mov r1, r1, lsl #0x10
|
||||
mov r3, r1, lsr #0x10
|
||||
mov r5, r3, asr #0x8
|
||||
mov lr, r3, lsl #0x8
|
||||
strb r6, [r4, #0x0]
|
||||
mov r6, #0x2
|
||||
mov r1, r0, lsr #0x8
|
||||
mov r3, r0, lsl #0x8
|
||||
mov r12, r0, lsl #0x18
|
||||
and r0, r1, #0xff00
|
||||
and r2, r2, #0xff
|
||||
orr r0, r2, r0
|
||||
and r1, r3, #0xff0000
|
||||
and r5, r5, #0xff
|
||||
and lr, lr, #0xff00
|
||||
strb r6, [r4, #0x1]
|
||||
orr r3, r5, lr
|
||||
and r2, r12, #0xff000000
|
||||
orr r0, r1, r0
|
||||
strh r3, [r4, #0x2]
|
||||
orr r0, r2, r0
|
||||
str r0, [r4, #0x4]
|
||||
mov r0, #0x0
|
||||
ldmia sp!, {r4-r6,lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start SOC_GetHostByAddr
|
||||
SOC_GetHostByAddr: ; 0x0209A6EC
|
||||
stmdb sp!, {r4-r5,lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r5, r0
|
||||
bl SOCL_Resolve
|
||||
movs r4, r0
|
||||
addeq sp, sp, #0x4
|
||||
moveq r0, #0x0
|
||||
ldmeqia sp!, {r4-r5,lr}
|
||||
bxeq lr
|
||||
ldr r0, _0209A7A4 ; =UNK_021C8DA4
|
||||
ldr r2, _0209A7A8 ; =0x00000101
|
||||
mov r1, #0x0
|
||||
bl MI_CpuFill8
|
||||
ldr r0, _0209A7A4 ; =UNK_021C8DA4
|
||||
ldr r2, _0209A7A8 ; =0x00000101
|
||||
mov r1, r5
|
||||
bl STD_CopyLString
|
||||
mov r1, r4, lsr #0x18
|
||||
mov r0, r4, lsr #0x8
|
||||
mov r2, r4, lsl #0x8
|
||||
mov r3, r4, lsl #0x18
|
||||
and r1, r1, #0xff
|
||||
and r0, r0, #0xff00
|
||||
and r2, r2, #0xff0000
|
||||
orr r0, r1, r0
|
||||
and r3, r3, #0xff000000
|
||||
orr r1, r2, r0
|
||||
ldr r5, _0209A7A4 ; =UNK_021C8DA4
|
||||
ldr r0, _0209A7AC ; =UNK_021C8D4C
|
||||
ldr ip, _0209A7B0 ; =UNK_021C8D44
|
||||
mov r4, #0x0
|
||||
ldr r2, _0209A7B4 ; =UNK_021C8D38
|
||||
orr r1, r3, r1
|
||||
mov lr, #0x2
|
||||
mov r3, #0x4
|
||||
str r5, [r0, #0x0]
|
||||
str r4, [r0, #0x4]
|
||||
strh lr, [r0, #0x8]
|
||||
strh r3, [r0, #0xa]
|
||||
str r12, [r0, #0xc]
|
||||
str r2, [r12, #0x0]
|
||||
str r4, [r12, #0x4]
|
||||
str r1, [r2, #0x0]
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r5,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_0209A7A4: .word UNK_021C8DA4 ; entName
|
||||
_0209A7A8: .word 0x00000101
|
||||
_0209A7AC: .word UNK_021C8D4C ; hostent
|
||||
_0209A7B0: .word UNK_021C8D44 ; hostAddrList
|
||||
_0209A7B4: .word UNK_021C8D38 ; hostip
|
||||
|
||||
arm_func_start SOC_Close
|
||||
SOC_Close: ; 0x0209A7B8
|
||||
ldr ip, _0209A7C0 ; =SOCL_Close
|
||||
bx r12
|
||||
.balign 4
|
||||
_0209A7C0: .word SOCL_Close
|
||||
|
||||
arm_func_start SOC_Shutdown
|
||||
SOC_Shutdown: ; 0x0209A7C4
|
||||
ldr ip, _0209A7CC ; =SOCL_Shutdown
|
||||
bx r12
|
||||
.balign 4
|
||||
_0209A7CC: .word SOCL_Shutdown
|
||||
|
||||
arm_func_start SOC_SendTo
|
||||
SOC_SendTo: ; 0x0209A7D0
|
||||
stmdb sp!, {r4-r7,lr}
|
||||
sub sp, sp, #0xc
|
||||
ldr r5, [sp, #0x20]
|
||||
cmp r5, #0x0
|
||||
moveq r5, #0x0
|
||||
moveq r4, r5
|
||||
beq _0209A83C
|
||||
ldrh r4, [r5, #0x2]
|
||||
ldr r6, [r5, #0x4]
|
||||
mov r7, r4, asr #0x8
|
||||
mov r12, r4, lsl #0x8
|
||||
mov r4, r6, lsr #0x18
|
||||
mov lr, r6, lsr #0x8
|
||||
mov r5, r6, lsl #0x8
|
||||
mov r6, r6, lsl #0x18
|
||||
and r7, r7, #0xff
|
||||
and r12, r12, #0xff00
|
||||
orr r7, r7, r12
|
||||
and r4, r4, #0xff
|
||||
and lr, lr, #0xff00
|
||||
and r5, r5, #0xff0000
|
||||
orr r4, r4, lr
|
||||
mov r12, r7, lsl #0x10
|
||||
orr r4, r5, r4
|
||||
and r6, r6, #0xff000000
|
||||
mov r5, r12, lsr #0x10
|
||||
orr r4, r6, r4
|
||||
_0209A83C:
|
||||
str r4, [sp, #0x0]
|
||||
str r3, [sp, #0x4]
|
||||
mov r3, r5
|
||||
bl SOCL_WriteTo
|
||||
add sp, sp, #0xc
|
||||
ldmia sp!, {r4-r7,lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start SOC_Send
|
||||
SOC_Send: ; 0x0209A858
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0xc
|
||||
mov r12, #0x0
|
||||
str r12, [sp, #0x0]
|
||||
str r3, [sp, #0x4]
|
||||
mov r3, r12
|
||||
bl SOCL_WriteTo
|
||||
add sp, sp, #0xc
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start SOC_RecvFrom
|
||||
SOC_RecvFrom: ; 0x0209A880
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0x14
|
||||
add r12, sp, #0xc
|
||||
str r12, [sp, #0x0]
|
||||
str r3, [sp, #0x4]
|
||||
add r3, sp, #0x8
|
||||
bl SOCLi_ReadFrom
|
||||
cmp r0, #0x0
|
||||
addlt sp, sp, #0x14
|
||||
ldmltia sp!, {lr}
|
||||
bxlt lr
|
||||
ldr r1, [sp, #0x18]
|
||||
cmp r1, #0x0
|
||||
addeq sp, sp, #0x14
|
||||
ldmeqia sp!, {lr}
|
||||
bxeq lr
|
||||
ldrh r2, [sp, #0x8]
|
||||
mov r3, r2, asr #0x8
|
||||
mov r2, r2, lsl #0x8
|
||||
and r3, r3, #0xff
|
||||
and r2, r2, #0xff00
|
||||
orr r2, r3, r2
|
||||
strh r2, [r1, #0x2]
|
||||
ldr lr, [sp, #0xc]
|
||||
mov r3, lr, lsr #0x18
|
||||
mov r2, lr, lsr #0x8
|
||||
mov r12, lr, lsl #0x8
|
||||
mov lr, lr, lsl #0x18
|
||||
and r3, r3, #0xff
|
||||
and r2, r2, #0xff00
|
||||
and r12, r12, #0xff0000
|
||||
orr r2, r3, r2
|
||||
and r3, lr, #0xff000000
|
||||
orr r2, r12, r2
|
||||
orr r2, r3, r2
|
||||
str r2, [r1, #0x4]
|
||||
add sp, sp, #0x14
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start SOC_Read
|
||||
SOC_Read: ; 0x0209A91C
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0xc
|
||||
mov r12, #0x0
|
||||
str r12, [sp, #0x0]
|
||||
str r3, [sp, #0x4]
|
||||
mov r3, r12
|
||||
bl SOCLi_ReadFrom
|
||||
add sp, sp, #0xc
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start SOC_Connect
|
||||
SOC_Connect: ; 0x0209A944
|
||||
stmdb sp!, {r4,lr}
|
||||
ldrh r2, [r1, #0x2]
|
||||
ldr lr, [r1, #0x4]
|
||||
mov r4, r2, asr #0x8
|
||||
mov r1, r2, lsl #0x8
|
||||
mov r3, lr, lsr #0x18
|
||||
mov r2, lr, lsr #0x8
|
||||
mov r12, lr, lsl #0x8
|
||||
mov lr, lr, lsl #0x18
|
||||
and r4, r4, #0xff
|
||||
and r1, r1, #0xff00
|
||||
orr r1, r4, r1
|
||||
mov r1, r1, lsl #0x10
|
||||
and r3, r3, #0xff
|
||||
and r2, r2, #0xff00
|
||||
and r12, r12, #0xff0000
|
||||
orr r2, r3, r2
|
||||
and r3, lr, #0xff000000
|
||||
orr r2, r12, r2
|
||||
mov r1, r1, lsr #0x10
|
||||
orr r2, r3, r2
|
||||
bl SOCL_Connect
|
||||
ldmia sp!, {r4,lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start SOC_Bind
|
||||
SOC_Bind: ; 0x0209A9A4
|
||||
ldrh r1, [r1, #0x2]
|
||||
ldr ip, _0209A9CC ; =SOCL_Bind
|
||||
mov r2, r1, asr #0x8
|
||||
mov r1, r1, lsl #0x8
|
||||
and r2, r2, #0xff
|
||||
and r1, r1, #0xff00
|
||||
orr r1, r2, r1
|
||||
mov r1, r1, lsl #0x10
|
||||
mov r1, r1, lsr #0x10
|
||||
bx r12
|
||||
.balign 4
|
||||
_0209A9CC: .word SOCL_Bind
|
||||
|
||||
arm_func_start SOC_Socket
|
||||
SOC_Socket: ; 0x0209A9D0
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0x4
|
||||
cmp r1, #0x1
|
||||
bne _0209A9F4
|
||||
ldr r0, _0209AA08 ; =SOCLSocketParamTCP
|
||||
bl SOCL_CreateSocket
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
_0209A9F4:
|
||||
ldr r0, _0209AA0C ; =SOCLSocketParamUDP
|
||||
bl SOCL_CreateSocket
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_0209AA08: .word SOCLSocketParamTCP
|
||||
_0209AA0C: .word SOCLSocketParamUDP
|
||||
198
arm9/asm/SOC_socl_bind.s
Normal file
198
arm9/asm/SOC_socl_bind.s
Normal file
@@ -0,0 +1,198 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.section .data
|
||||
|
||||
.balign 4, 0
|
||||
.global SOCLiResultCodeInConnecting
|
||||
SOCLiResultCodeInConnecting: ; 0x021061C0
|
||||
.word -26
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start SOCLi_BindCallBack
|
||||
SOCLi_BindCallBack: ; 0x020982C4
|
||||
stmdb sp!, {r4-r7,lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r7, r0
|
||||
ldr r4, [r7, #0x4]
|
||||
mov r5, #0x0
|
||||
ldr r6, [r4, #0x64]
|
||||
add r0, r6, #0xe0
|
||||
bl OS_LockMutex
|
||||
ldrh r0, [r7, #0x10]
|
||||
ldrh r1, [r7, #0x12]
|
||||
ldr r2, [r7, #0x14]
|
||||
bl CPS_SocPingMode
|
||||
mov r0, r5
|
||||
str r0, [r6, #0xf8]
|
||||
ldrsb r0, [r7, #0xc]
|
||||
cmp r0, #0x0
|
||||
beq _02098310
|
||||
cmp r0, #0x4
|
||||
bne _02098318
|
||||
_02098310:
|
||||
bl CPS_TcpConnect
|
||||
mov r5, r0
|
||||
_02098318:
|
||||
add r0, r6, #0xe0
|
||||
bl OS_UnlockMutex
|
||||
cmp r5, #0x0
|
||||
ldrnesh r1, [r4, #0x70]
|
||||
mvnne r0, #0x4b
|
||||
moveq r0, #0x0
|
||||
orrne r1, r1, #0x40
|
||||
strneh r1, [r4, #0x70]
|
||||
ldreqsh r1, [r4, #0x70]
|
||||
orreq r1, r1, #0x4
|
||||
streqh r1, [r4, #0x70]
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r7,lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start SOCLi_ExecBindCommand
|
||||
SOCLi_ExecBindCommand: ; 0x02098350
|
||||
stmdb sp!, {r4,lr}
|
||||
mov r4, r0
|
||||
ldrsb r2, [r4, #0x72]
|
||||
ldr r0, _020983AC ; =SOCLi_BindCallBack
|
||||
mov r1, r4
|
||||
bl SOCLi_CreateCommandPacket
|
||||
movs r1, r0
|
||||
mvneq r0, #0x20
|
||||
ldmeqia sp!, {r4,lr}
|
||||
bxeq lr
|
||||
ldrh r2, [r4, #0x74]
|
||||
mov r0, r4
|
||||
strh r2, [r1, #0x10]
|
||||
ldrh r2, [r4, #0x76]
|
||||
strh r2, [r1, #0x12]
|
||||
ldr r2, [r4, #0x78]
|
||||
str r2, [r1, #0x14]
|
||||
ldrsh r2, [r4, #0x70]
|
||||
orr r2, r2, #0x2
|
||||
strh r2, [r4, #0x70]
|
||||
bl SOCLi_ExecCommandPacketInRecvPipe
|
||||
ldmia sp!, {r4,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020983AC: .word SOCLi_BindCallBack
|
||||
|
||||
arm_func_start SOCL_Connect
|
||||
SOCL_Connect: ; 0x020983B0
|
||||
stmdb sp!, {r4-r6,lr}
|
||||
mov r6, r0
|
||||
mov r5, r1
|
||||
mov r4, r2
|
||||
bl SOCL_SocketIsInvalid
|
||||
cmp r0, #0x0
|
||||
bne _020983D8
|
||||
ldrsh r0, [r6, #0x70]
|
||||
ands r0, r0, #0x8
|
||||
beq _020983E4
|
||||
_020983D8:
|
||||
mvn r0, #0x1b
|
||||
ldmia sp!, {r4-r6,lr}
|
||||
bx lr
|
||||
_020983E4:
|
||||
cmp r6, #0x0
|
||||
mov r1, #0x0
|
||||
beq _020983FC
|
||||
ldrsh r0, [r6, #0x70]
|
||||
ands r0, r0, #0x1
|
||||
movne r1, #0x1
|
||||
_020983FC:
|
||||
cmp r1, #0x0
|
||||
mvneq r0, #0x26
|
||||
ldmeqia sp!, {r4-r6,lr}
|
||||
bxeq lr
|
||||
ldrsb r0, [r6, #0x73]
|
||||
mov r1, #0x1
|
||||
cmp r0, #0x0
|
||||
beq _02098424
|
||||
cmp r0, #0x4
|
||||
movne r1, #0x0
|
||||
_02098424:
|
||||
cmp r1, #0x0
|
||||
beq _0209849C
|
||||
ldrsh r0, [r6, #0x70]
|
||||
ands r0, r0, #0x4
|
||||
beq _02098450
|
||||
ldrsb r0, [r6, #0x72]
|
||||
cmp r0, #0x1
|
||||
mvneq r0, #0x1d
|
||||
movne r0, #0x0
|
||||
ldmia sp!, {r4-r6,lr}
|
||||
bx lr
|
||||
_02098450:
|
||||
ldrsh r0, [r6, #0x70]
|
||||
ands r0, r0, #0x2
|
||||
beq _02098478
|
||||
ldrsh r0, [r6, #0x70]
|
||||
ands r0, r0, #0x40
|
||||
ldrne r0, [r6, #0x6c]
|
||||
ldreq r0, _020984B0 ; =SOCLiResultCodeInConnecting
|
||||
ldreq r0, [r0, #0x0]
|
||||
ldmia sp!, {r4-r6,lr}
|
||||
bx lr
|
||||
_02098478:
|
||||
strh r5, [r6, #0x76]
|
||||
mov r0, r6
|
||||
str r4, [r6, #0x78]
|
||||
bl SOCLi_ExecBindCommand
|
||||
ldrsb r1, [r6, #0x72]
|
||||
cmp r1, #0x1
|
||||
mvnne r0, #0x19
|
||||
ldmia sp!, {r4-r6,lr}
|
||||
bx lr
|
||||
_0209849C:
|
||||
strh r5, [r6, #0x76]
|
||||
str r4, [r6, #0x78]
|
||||
mov r0, #0x0
|
||||
ldmia sp!, {r4-r6,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020984B0: .word SOCLiResultCodeInConnecting
|
||||
|
||||
arm_func_start SOCL_Bind
|
||||
SOCL_Bind:
|
||||
stmdb sp!, {r4-r5,lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r4, r0
|
||||
mov r5, r1
|
||||
bl SOCL_SocketIsInvalid
|
||||
cmp r0, #0x0
|
||||
addne sp, sp, #0x4
|
||||
mvnne r0, #0x1b
|
||||
ldmneia sp!, {r4-r5,lr}
|
||||
bxne lr
|
||||
cmp r4, #0x0
|
||||
mov r1, #0x0
|
||||
beq _020984F4
|
||||
ldrsh r0, [r4, #0x70]
|
||||
ands r0, r0, #0x1
|
||||
movne r1, #0x1
|
||||
_020984F4:
|
||||
cmp r1, #0x0
|
||||
addeq sp, sp, #0x4
|
||||
mvneq r0, #0x26
|
||||
ldmeqia sp!, {r4-r5,lr}
|
||||
bxeq lr
|
||||
ldrsh r0, [r4, #0x70]
|
||||
ands r0, r0, #0x2
|
||||
addne sp, sp, #0x4
|
||||
mvnne r0, #0x6
|
||||
ldmneia sp!, {r4-r5,lr}
|
||||
bxne lr
|
||||
strh r5, [r4, #0x74]
|
||||
ldrsb r0, [r4, #0x73]
|
||||
cmp r0, #0x1
|
||||
addne sp, sp, #0x4
|
||||
movne r0, #0x0
|
||||
ldmneia sp!, {r4-r5,lr}
|
||||
bxne lr
|
||||
mov r0, r4
|
||||
bl SOCLi_ExecBindCommand
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r5,lr}
|
||||
bx lr
|
||||
283
arm9/asm/SOC_socl_cleanup.s
Normal file
283
arm9/asm/SOC_socl_cleanup.s
Normal file
@@ -0,0 +1,283 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start SOCL_CalmDown
|
||||
SOCL_CalmDown: ; 0x02099A94
|
||||
stmdb sp!, {r4,lr}
|
||||
ldr r0, _02099B10 ; =SOCLiUDPSendSocket
|
||||
ldr r0, [r0, #0x0]
|
||||
cmp r0, #0x0
|
||||
beq _02099AE8
|
||||
bl SOCL_CloseAll
|
||||
movs r4, r0
|
||||
bne _02099AE0
|
||||
ldr r0, _02099B10 ; =SOCLiUDPSendSocket
|
||||
ldr r0, [r0, #0x0]
|
||||
bl SOCL_Close
|
||||
ldr r0, _02099B10 ; =SOCLiUDPSendSocket
|
||||
ldr r0, [r0, #0x0]
|
||||
bl SOCL_IsClosed
|
||||
cmp r0, #0x0
|
||||
ldrne r0, _02099B10 ; =SOCLiUDPSendSocket
|
||||
movne r1, #0x0
|
||||
strne r1, [r0, #0x0]
|
||||
mvn r4, #0x19
|
||||
_02099AE0:
|
||||
bl SOCLi_TrashSocket
|
||||
b _02099B04
|
||||
_02099AE8:
|
||||
bl CPS_CalmDown
|
||||
cmp r0, #0x0
|
||||
mvneq r4, #0x19
|
||||
beq _02099B04
|
||||
mov r0, #0x0
|
||||
bl WCM_SetRecvDCFCallback
|
||||
mov r4, #0x0
|
||||
_02099B04:
|
||||
mov r0, r4
|
||||
ldmia sp!, {r4,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_02099B10: .word SOCLiUDPSendSocket
|
||||
|
||||
arm_func_start SOCL_CloseAll
|
||||
SOCL_CloseAll: ; 0x02099B14
|
||||
stmdb sp!, {r4-r6,lr}
|
||||
ldr r4, _02099BBC ; =SOCLiUDPSendSocket
|
||||
ldr r5, _02099BC0 ; =SOCLiSocketList
|
||||
_02099B20:
|
||||
bl OS_DisableInterrupts
|
||||
ldr r6, [r5, #0x0]
|
||||
cmp r6, #0x0
|
||||
beq _02099B54
|
||||
ldr r2, [r4, #0x0]
|
||||
_02099B34:
|
||||
cmp r6, r2
|
||||
beq _02099B48
|
||||
ldrsh r1, [r6, #0x70]
|
||||
ands r1, r1, #0x10
|
||||
beq _02099B54
|
||||
_02099B48:
|
||||
ldr r6, [r6, #0x7c]
|
||||
cmp r6, #0x0
|
||||
bne _02099B34
|
||||
_02099B54:
|
||||
bl OS_RestoreInterrupts
|
||||
cmp r6, #0x0
|
||||
beq _02099B6C
|
||||
mov r0, r6
|
||||
bl SOCL_Close
|
||||
b _02099B20
|
||||
_02099B6C:
|
||||
ldr r0, _02099BC0 ; =SOCLiSocketList
|
||||
ldr r1, [r0, #0x0]
|
||||
cmp r1, #0x0
|
||||
beq _02099B98
|
||||
ldr r0, _02099BBC ; =SOCLiUDPSendSocket
|
||||
ldr r0, [r0, #0x0]
|
||||
cmp r1, r0
|
||||
bne _02099BB0
|
||||
ldr r0, [r1, #0x7c]
|
||||
cmp r0, #0x0
|
||||
bne _02099BB0
|
||||
_02099B98:
|
||||
ldr r0, _02099BC4 ; =SOCLiSocketListTrash
|
||||
ldr r0, [r0, #0x0]
|
||||
cmp r0, #0x0
|
||||
moveq r0, #0x0
|
||||
ldmeqia sp!, {r4-r6,lr}
|
||||
bxeq lr
|
||||
_02099BB0:
|
||||
mvn r0, #0x19
|
||||
ldmia sp!, {r4-r6,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_02099BBC: .word SOCLiUDPSendSocket
|
||||
_02099BC0: .word SOCLiSocketList
|
||||
_02099BC4: .word SOCLiSocketListTrash
|
||||
|
||||
arm_func_start SOCL_Cleanup
|
||||
SOCL_Cleanup: ; 0x02099BC8
|
||||
stmdb sp!, {r4-r5,lr}
|
||||
sub sp, sp, #0x4
|
||||
ldr r1, _02099C68 ; =SOCLiRequestedIP
|
||||
ldr r0, [r1, #0x0]
|
||||
cmp r0, #0x0
|
||||
ldreq r0, _02099C6C ; =CPSMyIp
|
||||
ldreq r0, [r0, #0x0]
|
||||
streq r0, [r1, #0x0]
|
||||
bl SOCL_CalmDown
|
||||
mvn r4, #0x19
|
||||
cmp r0, r4
|
||||
bne _02099C10
|
||||
mov r5, #0x64
|
||||
_02099BFC:
|
||||
mov r0, r5
|
||||
bl OS_Sleep
|
||||
bl SOCL_CalmDown
|
||||
cmp r0, r4
|
||||
beq _02099BFC
|
||||
_02099C10:
|
||||
bl SOCLi_CleanupCommandPacketQueue
|
||||
movs r4, r0
|
||||
bmi _02099C58
|
||||
bl CPS_Cleanup
|
||||
mov r0, #0x0
|
||||
bl CPS_SetScavengerCallback
|
||||
ldr r0, _02099C70 ; =SOCLiConfigPtr
|
||||
ldr r1, [r0, #0x0]
|
||||
ldr r0, [r1, #0x28]
|
||||
cmp r0, #0x0
|
||||
bne _02099C4C
|
||||
ldr r0, _02099C74 ; =SOCLiCPSConfig
|
||||
ldr r1, [r1, #0x1c]
|
||||
ldr r0, [r0, #0x1c]
|
||||
blx r1
|
||||
_02099C4C:
|
||||
ldr r0, _02099C70 ; =SOCLiConfigPtr
|
||||
mov r1, #0x0
|
||||
str r1, [r0, #0x0]
|
||||
_02099C58:
|
||||
mov r0, r4
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r5,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_02099C68: .word SOCLiRequestedIP
|
||||
_02099C6C: .word CPSMyIp
|
||||
_02099C70: .word SOCLiConfigPtr
|
||||
_02099C74: .word SOCLiCPSConfig
|
||||
|
||||
arm_func_start SOCL_GetHostID
|
||||
SOCL_GetHostID: ; 02099C78
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0x4
|
||||
ldr r0, _02099CE0 ; =CPSMyIp
|
||||
ldr r2, [r0, #0x0]
|
||||
cmp r2, #0x0
|
||||
bne _02099CBC
|
||||
ldr r0, _02099CE4 ; =SOCLiDhcpState
|
||||
ldr r0, [r0, #0x0]
|
||||
and r0, r0, #0x3
|
||||
cmp r0, #0x1
|
||||
bne _02099CCC
|
||||
bl OS_GetProcMode
|
||||
cmp r0, #0x12
|
||||
beq _02099CCC
|
||||
mov r0, #0xa
|
||||
bl OS_Sleep
|
||||
b _02099CCC
|
||||
_02099CBC:
|
||||
ldr r0, _02099CE8 ; =SOCLiRequestedIP
|
||||
ldr r1, [r0, #0x0]
|
||||
cmp r1, #0x0
|
||||
streq r2, [r0, #0x0]
|
||||
_02099CCC:
|
||||
ldr r0, _02099CE0 ; =CPSMyIp
|
||||
ldr r0, [r0, #0x0]
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_02099CE0: .word CPSMyIp
|
||||
_02099CE4: .word SOCLiDhcpState
|
||||
_02099CE8: .word SOCLiRequestedIP
|
||||
|
||||
arm_func_start SOCL_SetResolver
|
||||
SOCL_SetResolver: ; 0x02099CEC
|
||||
stmdb sp!, {r4-r5,lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r5, r0
|
||||
mov r4, r1
|
||||
bl SOCL_GetHostID
|
||||
cmp r0, #0x0
|
||||
ldrne r1, _02099D24 ; =CPSDnsIp
|
||||
mvneq r0, #0x26
|
||||
movne r0, #0x0
|
||||
strne r5, [r1, #0x0]
|
||||
strne r4, [r1, #0x4]
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r5,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_02099D24: .word CPSDnsIp
|
||||
|
||||
arm_func_start SOCL_InetAtoH
|
||||
SOCL_InetAtoH: ; 0x022099D28
|
||||
stmdb sp!, {r4-r7,lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r4, r0
|
||||
bl OS_DisableInterrupts
|
||||
ldr r1, _02099D84 ; =CPSDnsIp
|
||||
mov r5, r0
|
||||
ldr r7, [r1, #0x0]
|
||||
mov r2, #0x0
|
||||
ldr r6, [r1, #0x4]
|
||||
mov r0, r4
|
||||
str r2, [r1, #0x0]
|
||||
str r2, [r1, #0x4]
|
||||
bl CPS_Resolve
|
||||
ldr r1, _02099D84 ; =CPSDnsIp
|
||||
mov r4, r0
|
||||
mov r0, r5
|
||||
str r7, [r1, #0x0]
|
||||
str r6, [r1, #0x4]
|
||||
bl OS_RestoreInterrupts
|
||||
mov r0, r4
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r7,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_02099D84: .word CPSDnsIp
|
||||
|
||||
arm_func_start SOCL_Resolve
|
||||
SOCL_Resolve: ; 0x02099D88
|
||||
stmdb sp!, {r4-r5,lr}
|
||||
sub sp, sp, #0x64
|
||||
movs r4, r0
|
||||
addeq sp, sp, #0x64
|
||||
moveq r0, #0x0
|
||||
ldmeqia sp!, {r4-r5,lr}
|
||||
bxeq lr
|
||||
ldr r1, _02099E34 ; =SOCLiConfigPtr
|
||||
mov r0, #0xfd0
|
||||
ldr r1, [r1, #0x0]
|
||||
ldr r1, [r1, #0x18]
|
||||
blx r1
|
||||
movs r5, r0
|
||||
addeq sp, sp, #0x64
|
||||
moveq r0, #0x0
|
||||
ldmeqia sp!, {r4-r5,lr}
|
||||
bxeq lr
|
||||
add r0, sp, #0x0
|
||||
mov r1, #0x0
|
||||
mov r2, #0x64
|
||||
bl MI_CpuFill8
|
||||
ldr r3, _02099E38 ; =0x00000B68
|
||||
ldr r1, _02099E3C ; =0x00000466
|
||||
add r2, r5, r3
|
||||
add r0, sp, #0x0
|
||||
str r5, [sp, #0x40]
|
||||
str r3, [sp, #0x3c]
|
||||
str r2, [sp, #0x4c]
|
||||
str r1, [sp, #0x48]
|
||||
bl CPS_SocRegister
|
||||
mov r0, r4
|
||||
bl CPS_Resolve
|
||||
mov r4, r0
|
||||
bl CPS_SocUnRegister
|
||||
ldr r1, _02099E34 ; =SOCLiConfigPtr
|
||||
mov r0, r5
|
||||
ldr r1, [r1, #0x0]
|
||||
ldr r1, [r1, #0x1c]
|
||||
blx r1
|
||||
mov r0, r4
|
||||
add sp, sp, #0x64
|
||||
ldmia sp!, {r4-r5,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_02099E34: .word SOCLiConfigPtr
|
||||
_02099E38: .word 0x00000B68
|
||||
_02099E3C: .word 0x00000466
|
||||
288
arm9/asm/SOC_socl_close.s
Normal file
288
arm9/asm/SOC_socl_close.s
Normal file
@@ -0,0 +1,288 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start SOCLi_TrashSocket
|
||||
SOCLi_TrashSocket: ; 0x020996C0
|
||||
stmdb sp!, {r4-r5,lr}
|
||||
sub sp, sp, #0x4
|
||||
bl OS_DisableInterrupts
|
||||
ldr r4, _02099704 ; =SOCLiSocketListTrash
|
||||
mov r5, r0
|
||||
ldr r0, [r4, #0x0]
|
||||
cmp r0, #0x0
|
||||
beq _020996F0
|
||||
_020996E0:
|
||||
bl SOCLi_CleanupSocket
|
||||
ldr r0, [r4, #0x0]
|
||||
cmp r0, #0x0
|
||||
bne _020996E0
|
||||
_020996F0:
|
||||
mov r0, r5
|
||||
bl OS_RestoreInterrupts
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r5,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_02099704: .word SOCLiSocketListTrash
|
||||
|
||||
arm_func_start SOCLi_FreeCommandPipe
|
||||
SOCLi_FreeCommandPipe: ; 0x02099708
|
||||
stmdb sp!, {r4-r8,lr}
|
||||
sub sp, sp, #0x8
|
||||
movs r8, r0
|
||||
addeq sp, sp, #0x8
|
||||
ldmeqia sp!, {r4-r8,lr}
|
||||
bxeq lr
|
||||
add r0, r8, #0x20
|
||||
bl OS_JoinThread
|
||||
bl OS_DisableInterrupts
|
||||
mov r7, r0
|
||||
bl OS_DisableScheduler
|
||||
add r1, sp, #0x0
|
||||
mov r0, r8
|
||||
mov r2, #0x0
|
||||
bl OS_ReceiveMessage
|
||||
cmp r0, #0x0
|
||||
beq _0209979C
|
||||
add r4, sp, #0x0
|
||||
mvn r6, #0xa
|
||||
mov r5, #0x0
|
||||
_02099758:
|
||||
ldr r0, [sp, #0x0]
|
||||
cmp r0, #0x0
|
||||
beq _02099784
|
||||
ldr r0, [r0, #0x8]
|
||||
cmp r0, #0x0
|
||||
beq _0209977C
|
||||
mov r1, r6
|
||||
mov r2, r5
|
||||
bl OS_SendMessage
|
||||
_0209977C:
|
||||
ldr r0, [sp, #0x0]
|
||||
bl SOCLi_FreeCommandPacket
|
||||
_02099784:
|
||||
mov r0, r8
|
||||
mov r1, r4
|
||||
mov r2, r5
|
||||
bl OS_ReceiveMessage
|
||||
cmp r0, #0x0
|
||||
bne _02099758
|
||||
_0209979C:
|
||||
bl OS_EnableScheduler
|
||||
bl OS_RescheduleThread
|
||||
mov r0, r7
|
||||
bl OS_RestoreInterrupts
|
||||
add sp, sp, #0x8
|
||||
ldmia sp!, {r4-r8,lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start SOCLi_CleanupSocket
|
||||
SOCLi_CleanupSocket:
|
||||
stmdb sp!, {r4-r6,lr}
|
||||
movs r4, r0
|
||||
ldmeqia sp!, {r4-r6,lr}
|
||||
bxeq lr
|
||||
mov r0, #0x0
|
||||
strh r0, [r4, #0x70]
|
||||
ldrsb r1, [r4, #0x73]
|
||||
mov r2, #0x1
|
||||
cmp r1, #0x0
|
||||
beq _020997E8
|
||||
cmp r1, #0x4
|
||||
movne r2, r0
|
||||
_020997E8:
|
||||
cmp r2, #0x0
|
||||
beq _02099804
|
||||
ldr r0, [r4, #0x68]
|
||||
bl SOCLi_FreeCommandPipe
|
||||
ldr r0, [r4, #0x64]
|
||||
bl SOCLi_FreeCommandPipe
|
||||
b _02099884
|
||||
_02099804:
|
||||
cmp r1, #0x1
|
||||
bne _02099874
|
||||
ldr r0, [r4, #0x64]
|
||||
ldr r0, [r0, #0x104]
|
||||
cmp r0, #0x0
|
||||
beq _0209983C
|
||||
ldr r5, _020998C0 ; =SOCLiConfigPtr
|
||||
_02099820:
|
||||
ldr r1, [r5, #0x0]
|
||||
ldr r6, [r0, #0x0]
|
||||
ldr r1, [r1, #0x1c]
|
||||
blx r1
|
||||
mov r0, r6
|
||||
cmp r6, #0x0
|
||||
bne _02099820
|
||||
_0209983C:
|
||||
ldr r0, [r4, #0x64]
|
||||
mov r1, #0x0
|
||||
add r0, r0, #0x100
|
||||
strh r1, [r0, #0x8]
|
||||
ldr r0, [r4, #0x64]
|
||||
str r1, [r0, #0x100]
|
||||
ldr r0, [r4, #0x64]
|
||||
str r1, [r0, #0x104]
|
||||
ldr r0, [r4, #0x64]
|
||||
add r0, r0, #0x10c
|
||||
bl OS_WakeupThread
|
||||
ldr r0, [r4, #0x64]
|
||||
bl SOCLi_FreeCommandPipe
|
||||
b _02099884
|
||||
_02099874:
|
||||
cmp r1, #0x2
|
||||
bne _02099884
|
||||
ldr r0, [r4, #0x68]
|
||||
bl SOCLi_FreeCommandPipe
|
||||
_02099884:
|
||||
bl OS_DisableInterrupts
|
||||
mov r5, r0
|
||||
mov r0, r4
|
||||
bl SOCLi_SocketUnregister
|
||||
mov r0, r4
|
||||
bl SOCLi_SocketUnregisterTrash
|
||||
ldr r1, _020998C0 ; =SOCLiConfigPtr
|
||||
mov r0, r4
|
||||
ldr r1, [r1, #0x0]
|
||||
ldr r1, [r1, #0x1c]
|
||||
blx r1
|
||||
mov r0, r5
|
||||
bl OS_RestoreInterrupts
|
||||
ldmia sp!, {r4-r6,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020998C0: .word SOCLiConfigPtr
|
||||
|
||||
arm_func_start SOCLi_CloseCallBack
|
||||
SOCLi_CloseCallBack: ; 0x020998C4
|
||||
stmdb sp!, {r4-r5,lr}
|
||||
sub sp, sp, #0x4
|
||||
ldr r4, [r0, #0x4]
|
||||
mov r1, #0x1
|
||||
ldrsb r0, [r4, #0x73]
|
||||
cmp r0, #0x0
|
||||
beq _020998E8
|
||||
cmp r0, #0x4
|
||||
movne r1, #0x0
|
||||
_020998E8:
|
||||
cmp r1, #0x0
|
||||
beq _02099908
|
||||
ldr r0, [r4, #0x68]
|
||||
add r0, r0, #0x20
|
||||
bl OS_JoinThread
|
||||
bl CPS_TcpShutdown
|
||||
bl CPS_TcpClose
|
||||
bl CPS_SocRelease
|
||||
_02099908:
|
||||
bl CPS_SocUnRegister
|
||||
ldrsh r0, [r4, #0x70]
|
||||
mov r1, #0x0
|
||||
bic r0, r0, #0x6
|
||||
strh r0, [r4, #0x70]
|
||||
ldrsb r0, [r4, #0x73]
|
||||
cmp r0, #0x2
|
||||
ldreq r0, [r4, #0x68]
|
||||
ldrne r0, [r4, #0x64]
|
||||
bl SOCLi_SendCommandPacket
|
||||
bl OS_DisableInterrupts
|
||||
mov r5, r0
|
||||
mov r0, r4
|
||||
bl SOCLi_SocketUnregister
|
||||
mov r0, r4
|
||||
bl SOCLi_SocketRegisterTrash
|
||||
mov r0, r5
|
||||
bl OS_RestoreInterrupts
|
||||
ldrsh r1, [r4, #0x70]
|
||||
mov r0, #0x0
|
||||
orr r1, r1, #0x20
|
||||
strh r1, [r4, #0x70]
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r5,lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start SOCL_Close
|
||||
SOCL_Close: ; 0x0209996C
|
||||
stmdb sp!, {r4,lr}
|
||||
mov r4, r0
|
||||
cmp r4, #0x0
|
||||
mvnle r0, #0x1b
|
||||
ldmleia sp!, {r4,lr}
|
||||
bxle lr
|
||||
bl SOCL_SocketIsInTrash
|
||||
cmp r0, #0x0
|
||||
mvnne r0, #0x19
|
||||
ldmneia sp!, {r4,lr}
|
||||
bxne lr
|
||||
mov r0, r4
|
||||
bl SOCL_SocketIsInvalid
|
||||
cmp r0, #0x0
|
||||
movne r0, #0x0
|
||||
ldmneia sp!, {r4,lr}
|
||||
bxne lr
|
||||
cmp r4, #0x0
|
||||
mov r1, #0x0
|
||||
beq _020999C8
|
||||
ldrsh r0, [r4, #0x70]
|
||||
ands r0, r0, #0x1
|
||||
movne r1, #0x1
|
||||
_020999C8:
|
||||
cmp r1, #0x0
|
||||
mvneq r0, #0x26
|
||||
ldmeqia sp!, {r4,lr}
|
||||
bxeq lr
|
||||
ldrsh r0, [r4, #0x70]
|
||||
ands r0, r0, #0x10
|
||||
mvnne r0, #0x19
|
||||
ldmneia sp!, {r4,lr}
|
||||
bxne lr
|
||||
ldrsh r0, [r4, #0x70]
|
||||
mov r1, #0x1
|
||||
orr r0, r0, #0x18
|
||||
strh r0, [r4, #0x70]
|
||||
ldrsb r0, [r4, #0x73]
|
||||
cmp r0, #0x0
|
||||
beq _02099A10
|
||||
cmp r0, #0x4
|
||||
movne r1, #0x0
|
||||
_02099A10:
|
||||
cmp r1, #0x0
|
||||
beq _02099A24
|
||||
ldr r0, [r4, #0x68]
|
||||
mov r1, #0x0
|
||||
bl SOCLi_SendCommandPacket
|
||||
_02099A24:
|
||||
ldr r0, _02099A54 ; =SOCLi_CloseCallBack
|
||||
mov r1, r4
|
||||
mov r2, #0x1
|
||||
bl SOCLi_CreateCommandPacket
|
||||
mov r1, r0
|
||||
mov r2, #0x0
|
||||
mov r0, r4
|
||||
str r2, [r1, #0x8]
|
||||
bl SOCLi_SendCommandPacketToCtrlPipe
|
||||
mov r0, #0x0
|
||||
ldmia sp!, {r4,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_02099A54: .word SOCLi_CloseCallBack
|
||||
|
||||
arm_func_start SOCL_IsClosed
|
||||
SOCL_IsClosed:
|
||||
stmdb sp!, {r4,lr}
|
||||
movs r4, r0
|
||||
bmi _02099A88
|
||||
bl SOCL_SocketIsInvalid
|
||||
cmp r0, #0x0
|
||||
beq _02099A88
|
||||
mov r0, r4
|
||||
bl SOCL_SocketIsInTrash
|
||||
cmp r0, #0x0
|
||||
moveq r0, #0x1
|
||||
ldmeqia sp!, {r4,lr}
|
||||
bxeq lr
|
||||
_02099A88:
|
||||
mov r0, #0x0
|
||||
ldmia sp!, {r4,lr}
|
||||
bx lr
|
||||
300
arm9/asm/SOC_socl_command.s
Normal file
300
arm9/asm/SOC_socl_command.s
Normal file
@@ -0,0 +1,300 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.section .bss
|
||||
|
||||
.global SOCLiCommandPackets
|
||||
SOCLiCommandPackets: ; 0x021C8D04
|
||||
.space 0x4
|
||||
|
||||
.global SOCLiCommandPacketQueue
|
||||
SOCLiCommandPacketQueue: ; 0x021C8D08
|
||||
.space 0x20
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start SOCLi_CommandPacketHandler
|
||||
SOCLi_CommandPacketHandler: ; 0x02097878
|
||||
stmdb sp!, {r4-r9,lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r9, r0
|
||||
add r6, sp, #0x0
|
||||
mov r4, #0x0
|
||||
mov r5, #0x1
|
||||
_02097890:
|
||||
mov r0, r9
|
||||
mov r1, r6
|
||||
mov r2, r5
|
||||
bl OS_ReadMessage
|
||||
ldr r0, [sp, #0x0]
|
||||
cmp r0, #0x0
|
||||
addeq sp, sp, #0x4
|
||||
ldmeqia sp!, {r4-r9,lr}
|
||||
bxeq lr
|
||||
ldr r1, [r0, #0x0]
|
||||
blx r1
|
||||
mov r7, r0
|
||||
bl OS_DisableInterrupts
|
||||
mov r8, r0
|
||||
bl OS_DisableScheduler
|
||||
mov r0, r9
|
||||
mov r1, r4
|
||||
mov r2, r4
|
||||
bl OS_ReceiveMessage
|
||||
ldr r0, [sp, #0x0]
|
||||
ldr r0, [r0, #0x4]
|
||||
cmp r0, #0x0
|
||||
strne r7, [r0, #0x6c]
|
||||
ldr r0, [sp, #0x0]
|
||||
ldr r0, [r0, #0x8]
|
||||
cmp r0, #0x0
|
||||
beq _02097908
|
||||
mov r1, r7
|
||||
mov r2, r4
|
||||
bl OS_SendMessage
|
||||
_02097908:
|
||||
ldr r0, [sp, #0x0]
|
||||
bl SOCLi_FreeCommandPacket
|
||||
bl OS_EnableScheduler
|
||||
mov r0, r8
|
||||
bl OS_RestoreInterrupts
|
||||
b _02097890
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r9,lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start SOCLi_ExecCommandPacketInCtrlPipe
|
||||
SOCLi_ExecCommandPacketInCtrlPipe: ; 0x0209792C
|
||||
stmdb sp!, {r4,lr}
|
||||
mov r4, r1
|
||||
bl SOCLi_GetCtrlPipe
|
||||
mov r1, r4
|
||||
bl SOCLi_ExecCommandPacket
|
||||
ldmia sp!, {r4,lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start SOCLi_ExecCommandPacketInSendPipe
|
||||
SOCLi_ExecCommandPacketInSendPipe:
|
||||
ldr ip, _02097954 ; =SOCLi_ExecCommandPacket
|
||||
ldr r0, [r0, #0x68]
|
||||
bx r12
|
||||
.balign 4
|
||||
_02097954: .word SOCLi_ExecCommandPacket
|
||||
|
||||
arm_func_start SOCLi_ExecCommandPacketInRecvPipe
|
||||
SOCLi_ExecCommandPacketInRecvPipe: ; 0x02097958
|
||||
ldr ip, _02097964 ; =SOCLi_ExecCommandPacket
|
||||
ldr r0, [r0, #0x64]
|
||||
bx r12
|
||||
.balign 4
|
||||
_02097964: .word SOCLi_ExecCommandPacket
|
||||
|
||||
arm_func_start SOCLi_ExecCommandPacket
|
||||
SOCLi_ExecCommandPacket: ; 0x02097968
|
||||
stmdb sp!, {r4-r5,lr}
|
||||
sub sp, sp, #0x2c
|
||||
mov r4, r1
|
||||
ldrsb r2, [r4, #0xd]
|
||||
mov r5, r0
|
||||
cmp r2, #0x1
|
||||
bne _020979BC
|
||||
add r0, sp, #0x8
|
||||
add r1, sp, #0x4
|
||||
mov r2, #0x1
|
||||
bl OS_InitMessageQueue
|
||||
add r2, sp, #0x8
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
str r2, [r4, #0x8]
|
||||
bl SOCLi_SendCommandPacket
|
||||
add r0, sp, #0x8
|
||||
add r1, sp, #0x0
|
||||
mov r2, #0x1
|
||||
bl OS_ReceiveMessage
|
||||
b _020979CC
|
||||
_020979BC:
|
||||
mov r2, #0x0
|
||||
str r2, [r4, #0x8]
|
||||
bl SOCLi_SendCommandPacket
|
||||
str r0, [sp, #0x0]
|
||||
_020979CC:
|
||||
ldr r0, [sp, #0x0]
|
||||
add sp, sp, #0x2c
|
||||
ldmia sp!, {r4-r5,lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start SOCLi_SendCommandPacketToCtrlPipe
|
||||
SOCLi_SendCommandPacketToCtrlPipe:
|
||||
stmdb sp!, {r4,lr}
|
||||
mov r4, r1
|
||||
bl SOCLi_GetCtrlPipe
|
||||
mov r1, r4
|
||||
bl SOCLi_SendCommandPacket
|
||||
ldmia sp!, {r4,lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start SOCLi_SendCommandPacket
|
||||
SOCLi_SendCommandPacket:
|
||||
stmdb sp!, {r4-r5,lr}
|
||||
sub sp, sp, #0x4
|
||||
movs r5, r1
|
||||
beq _02097A14
|
||||
ldrsb r1, [r5, #0xd]
|
||||
ands r1, r1, #0x1
|
||||
beq _02097A1C
|
||||
_02097A14:
|
||||
mov r2, #0x1
|
||||
b _02097A20
|
||||
_02097A1C:
|
||||
mov r2, #0x0
|
||||
_02097A20:
|
||||
mov r1, r5
|
||||
bl OS_SendMessage
|
||||
movs r4, r0
|
||||
bne _02097A38
|
||||
mov r0, r5
|
||||
bl SOCLi_FreeCommandPacket
|
||||
_02097A38:
|
||||
cmp r4, #0x0
|
||||
movne r0, #0x0
|
||||
mvneq r0, #0x29
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r5,lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start SOCLi_GetCtrlPipe
|
||||
SOCLi_GetCtrlPipe: ; 0x02097A50
|
||||
ldr r1, [r0, #0x64]
|
||||
cmp r1, #0x0
|
||||
ldreq r1, [r0, #0x68]
|
||||
mov r0, r1
|
||||
bx lr
|
||||
|
||||
arm_func_start SOCLi_FreeCommandPacket
|
||||
SOCLi_FreeCommandPacket:
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0x4
|
||||
movs r1, r0
|
||||
addeq sp, sp, #0x4
|
||||
ldmeqia sp!, {lr}
|
||||
bxeq lr
|
||||
ldr r0, _02097A94 ; =SOCLiCommandPacketQueue
|
||||
mov r2, #0x0
|
||||
bl OS_SendMessage
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_02097A94: .word SOCLiCommandPacketQueue
|
||||
|
||||
arm_func_start SOCLi_CreateCommandPacket
|
||||
SOCLi_CreateCommandPacket: ; 0x02097A98
|
||||
stmdb sp!, {r4-r6,lr}
|
||||
mov r4, r2
|
||||
mov r6, r0
|
||||
mov r0, r4
|
||||
mov r5, r1
|
||||
bl SOCLi_AllocCommandPacket
|
||||
cmp r0, #0x0
|
||||
ldmeqia sp!, {r4-r6,lr}
|
||||
bxeq lr
|
||||
str r6, [r0, #0x0]
|
||||
str r5, [r0, #0x4]
|
||||
mov r1, #0x0
|
||||
str r1, [r0, #0x8]
|
||||
ldrsb r1, [r5, #0x73]
|
||||
strb r1, [r0, #0xc]
|
||||
strb r4, [r0, #0xd]
|
||||
ldmia sp!, {r4-r6,lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start SOCLi_AllocCommandPacket
|
||||
SOCLi_AllocCommandPacket:
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r2, r0
|
||||
ldr r0, _02097B10 ; =SOCLiCommandPacketQueue
|
||||
add r1, sp, #0x0
|
||||
bl OS_ReceiveMessage
|
||||
cmp r0, #0x0
|
||||
ldrne r0, [sp, #0x0]
|
||||
moveq r0, #0x0
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_02097B10: .word SOCLiCommandPacketQueue
|
||||
|
||||
arm_func_start SOCLi_CleanupCommandPacketQueue
|
||||
SOCLi_CleanupCommandPacketQueue: ; 0x02097B14
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0x4
|
||||
ldr r0, _02097B6C ; =SOCLiCommandPacketQueue
|
||||
ldr r1, [r0, #0x1c]
|
||||
ldr r0, [r0, #0x14]
|
||||
cmp r1, r0
|
||||
addlt sp, sp, #0x4
|
||||
mvnlt r0, #0x0
|
||||
ldmltia sp!, {lr}
|
||||
bxlt lr
|
||||
ldr r0, _02097B70 ; =SOCLiConfigPtr
|
||||
ldr r1, _02097B74 ; =SOCLiCommandPackets
|
||||
ldr r2, [r0, #0x0]
|
||||
ldr r0, [r1, #0x0]
|
||||
ldr r1, [r2, #0x1c]
|
||||
blx r1
|
||||
ldr r1, _02097B74 ; =SOCLiCommandPackets
|
||||
mov r0, #0x0
|
||||
str r0, [r1, #0x0]
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_02097B6C: .word SOCLiCommandPacketQueue
|
||||
_02097B70: .word SOCLiConfigPtr
|
||||
_02097B74: .word SOCLiCommandPackets
|
||||
|
||||
arm_func_start SOCLi_StartupCommandPacketQueue
|
||||
SOCLi_StartupCommandPacketQueue: ; 0x02097B78
|
||||
stmdb sp!, {r4-r6,lr}
|
||||
mov r4, r0
|
||||
mov r0, #0x2c
|
||||
mul r1, r4, r0
|
||||
ldr r0, _02097C08 ; =SOCLiConfigPtr
|
||||
mov r2, r4, lsl #0x2
|
||||
add r2, r2, #0x3
|
||||
ldr r0, [r0, #0x0]
|
||||
add r1, r1, #0x3
|
||||
bic r5, r2, #0x3
|
||||
bic r2, r1, #0x3
|
||||
ldr r1, [r0, #0x18]
|
||||
add r0, r2, r5
|
||||
blx r1
|
||||
movs r6, r0
|
||||
mvneq r0, #0x0
|
||||
ldmeqia sp!, {r4-r6,lr}
|
||||
bxeq lr
|
||||
ldr r0, _02097C0C ; =SOCLiCommandPacketQueue
|
||||
mov r1, r6
|
||||
mov r2, r4
|
||||
bl OS_InitMessageQueue
|
||||
cmp r4, #0x0
|
||||
add r5, r6, r5
|
||||
ble _02097BF4
|
||||
_02097BDC:
|
||||
mov r0, r5
|
||||
bl SOCLi_FreeCommandPacket
|
||||
sub r4, r4, #0x1
|
||||
cmp r4, #0x0
|
||||
add r5, r5, #0x2c
|
||||
bgt _02097BDC
|
||||
_02097BF4:
|
||||
ldr r1, _02097C10 ; =SOCLiCommandPackets
|
||||
mov r0, #0x0
|
||||
str r6, [r1, #0x0]
|
||||
ldmia sp!, {r4-r6,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_02097C08: .word SOCLiConfigPtr
|
||||
_02097C0C: .word SOCLiCommandPacketQueue
|
||||
_02097C10: .word SOCLiCommandPackets
|
||||
2
arm9/asm/SOC_socl_const.s
Normal file
2
arm9/asm/SOC_socl_const.s
Normal file
@@ -0,0 +1,2 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
491
arm9/asm/SOC_socl_create.s
Normal file
491
arm9/asm/SOC_socl_create.s
Normal file
@@ -0,0 +1,491 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start SOCLi_InitCommandPipe
|
||||
SOCLi_InitCommandPipe: ; 0x02097C14
|
||||
stmdb sp!, {r4-r7,lr}
|
||||
sub sp, sp, #0xc
|
||||
mov r5, r2
|
||||
mov r7, r0
|
||||
mov r0, r5
|
||||
mov r6, r1
|
||||
bl SOCLi_GetSizeCommandPipe
|
||||
add r4, r7, r0
|
||||
ldrb r2, [r5, #0x3]
|
||||
mov r0, r6
|
||||
mov r1, r7
|
||||
bl OS_InitMessageQueue
|
||||
add r0, r6, #0xe0
|
||||
bl OS_InitMutex
|
||||
ldrh r2, [r5, #0x0]
|
||||
add r0, r6, #0x20
|
||||
ldr r1, _02097C88 ; =SOCLi_CommandPacketHandler
|
||||
str r2, [sp, #0x0]
|
||||
ldrb r12, [r5, #0x2]
|
||||
mov r2, r6
|
||||
mov r3, r4
|
||||
str r12, [sp, #0x4]
|
||||
bl OS_CreateThread
|
||||
add r0, r6, #0x20
|
||||
bl OS_WakeupThreadDirect
|
||||
mov r0, r4
|
||||
add sp, sp, #0xc
|
||||
ldmia sp!, {r4-r7,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_02097C88: .word SOCLi_CommandPacketHandler
|
||||
|
||||
arm_func_start SOCLi_InitSocketBuffer
|
||||
SOCLi_InitSocketBuffer: ; 0x02097C8C
|
||||
stmdb sp!, {r4,lr}
|
||||
mov r4, r0
|
||||
cmp r2, #0x0
|
||||
moveq r0, #0x0
|
||||
str r0, [r1, #0x4]
|
||||
mov r0, r2
|
||||
str r2, [r1, #0x0]
|
||||
bl SOCLi_RoundUp4
|
||||
add r0, r4, r0
|
||||
ldmia sp!, {r4,lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start SOCLi_InitSocket
|
||||
SOCLi_InitSocket: ; 0x02097CB8
|
||||
stmdb sp!, {r4-r7,lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r6, r1
|
||||
ldrsb r1, [r6, #0x0]
|
||||
mov r7, r0
|
||||
add r4, r7, #0x80
|
||||
strb r1, [r7, #0x73]
|
||||
ldrsb r0, [r6, #0x1]
|
||||
strb r0, [r7, #0x72]
|
||||
ldrh r0, [r6, #0x2]
|
||||
cmp r0, #0x0
|
||||
beq _02097D40
|
||||
str r4, [r7, #0x64]
|
||||
ldrh r2, [r6, #0x4]
|
||||
mov r1, r4
|
||||
add r0, r4, #0x114
|
||||
strh r2, [r4, #0xfc]
|
||||
add r2, r6, #0x10
|
||||
mov r5, r4
|
||||
bl SOCLi_InitCommandPipe
|
||||
ldrh r2, [r6, #0x2]
|
||||
add r1, r7, #0x3c
|
||||
bl SOCLi_InitSocketBuffer
|
||||
ldrh r2, [r6, #0x8]
|
||||
add r1, r7, #0x50
|
||||
bl SOCLi_InitSocketBuffer
|
||||
ldrh r3, [r6, #0xe]
|
||||
add r1, r5, #0x100
|
||||
mov r2, #0x0
|
||||
strh r3, [r1, #0xa]
|
||||
str r2, [r5, #0x110]
|
||||
ldr r1, [r5, #0x110]
|
||||
mov r4, r0
|
||||
str r1, [r5, #0x10c]
|
||||
_02097D40:
|
||||
ldrh r0, [r6, #0x6]
|
||||
cmp r0, #0x0
|
||||
ldreq r0, _02097DC0 ; =SOCLiUDPSendSocket
|
||||
ldreq r0, [r0, #0x0]
|
||||
ldreq r0, [r0, #0x68]
|
||||
streq r0, [r7, #0x68]
|
||||
beq _02097DB0
|
||||
str r4, [r7, #0x68]
|
||||
mov r1, r4
|
||||
str r7, [r4, #0x10c]
|
||||
add r0, r4, #0x110
|
||||
add r2, r6, #0x14
|
||||
mov r5, r4
|
||||
bl SOCLi_InitCommandPipe
|
||||
ldrh r2, [r6, #0x6]
|
||||
add r1, r7, #0x48
|
||||
bl SOCLi_InitSocketBuffer
|
||||
ldrh r2, [r6, #0xa]
|
||||
add r1, r7, #0x58
|
||||
bl SOCLi_InitSocketBuffer
|
||||
ldrh r2, [r6, #0xc]
|
||||
add r1, r4, #0xf8
|
||||
bl SOCLi_InitSocketBuffer
|
||||
mov r1, #0x0
|
||||
str r1, [r5, #0x108]
|
||||
ldr r1, [r5, #0x108]
|
||||
mov r4, r0
|
||||
str r1, [r5, #0x104]
|
||||
_02097DB0:
|
||||
mov r0, r4
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r7,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_02097DC0: .word SOCLiUDPSendSocket
|
||||
|
||||
arm_func_start SOCLi_GetSizeCommandPipe
|
||||
SOCLi_GetSizeCommandPipe: ; 0x02097DC4
|
||||
stmdb sp!, {r4-r5,lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r5, r0
|
||||
ldrb r0, [r5, #0x3]
|
||||
mov r0, r0, lsl #0x2
|
||||
bl SOCLi_RoundUp4
|
||||
mov r4, r0
|
||||
ldrh r0, [r5, #0x0]
|
||||
bl SOCLi_RoundUp4
|
||||
add r0, r4, r0
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r5,lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start SOCLi_GetSizeSocket
|
||||
SOCLi_GetSizeSocket: ; 0x02097DF8
|
||||
stmdb sp!, {r4-r5,lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r5, r0
|
||||
ldrh r0, [r5, #0x2]
|
||||
mov r4, #0x80
|
||||
cmp r0, #0x0
|
||||
beq _02097E38
|
||||
add r4, r4, #0x114
|
||||
bl SOCLi_RoundUp4
|
||||
add r4, r4, r0
|
||||
ldrh r0, [r5, #0x8]
|
||||
bl SOCLi_RoundUp4
|
||||
add r4, r4, r0
|
||||
add r0, r5, #0x10
|
||||
bl SOCLi_GetSizeCommandPipe
|
||||
add r4, r4, r0
|
||||
_02097E38:
|
||||
ldrh r0, [r5, #0x6]
|
||||
cmp r0, #0x0
|
||||
beq _02097E74
|
||||
add r4, r4, #0x110
|
||||
bl SOCLi_RoundUp4
|
||||
add r4, r4, r0
|
||||
ldrh r0, [r5, #0xa]
|
||||
bl SOCLi_RoundUp4
|
||||
add r4, r4, r0
|
||||
ldrh r0, [r5, #0xc]
|
||||
bl SOCLi_RoundUp4
|
||||
add r4, r4, r0
|
||||
add r0, r5, #0x14
|
||||
bl SOCLi_GetSizeCommandPipe
|
||||
add r4, r4, r0
|
||||
_02097E74:
|
||||
mov r0, r4
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r5,lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start SOCLi_StartupSocket
|
||||
SOCLi_StartupSocket: ; 0x02097E84
|
||||
stmdb sp!, {r4-r7,lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r7, r0
|
||||
bl SOCLi_GetSizeSocket
|
||||
mov r4, r0
|
||||
bl OS_DisableInterrupts
|
||||
ldr r1, _02097EF4 ; =SOCLiConfigPtr
|
||||
mov r5, r0
|
||||
ldr r1, [r1, #0x0]
|
||||
mov r0, r4
|
||||
ldr r1, [r1, #0x18]
|
||||
blx r1
|
||||
movs r6, r0
|
||||
beq _02097EDC
|
||||
mov r2, r4
|
||||
mov r1, #0x0
|
||||
bl MI_CpuFill8
|
||||
mov r0, r6
|
||||
mov r1, r7
|
||||
bl SOCLi_InitSocket
|
||||
mov r0, r6
|
||||
bl SOCLi_SocketRegister
|
||||
_02097EDC:
|
||||
mov r0, r5
|
||||
bl OS_RestoreInterrupts
|
||||
mov r0, r6
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r7,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_02097EF4: .word SOCLiConfigPtr
|
||||
|
||||
arm_func_start SOCLi_CreateSocketCallBack
|
||||
SOCLi_CreateSocketCallBack: ; 0x02097EF8
|
||||
stmdb sp!, {r4,lr}
|
||||
ldr r4, [r0, #0x4]
|
||||
mov r0, r4
|
||||
bl CPS_SocRegister
|
||||
ldrsb r0, [r4, #0x73]
|
||||
ldr r1, [r4, #0x68]
|
||||
cmp r0, #0x4
|
||||
addls pc, pc, r0, lsl #0x2
|
||||
b _02097F58
|
||||
_02097F1C: ; jump table
|
||||
b _02097F30 ; case 0
|
||||
b _02097F40 ; case 1
|
||||
b _02097F54 ; case 2
|
||||
b _02097F58 ; case 3
|
||||
b _02097F30 ; case 4
|
||||
_02097F30:
|
||||
add r0, r1, #0x20
|
||||
bl CPS_SocDup
|
||||
bl CPS_SocUse
|
||||
b _02097F58
|
||||
_02097F40:
|
||||
bl CPS_SocUse
|
||||
bl CPS_SocDatagramMode
|
||||
ldr r0, _02097F6C ; =SOCLi_UdpRecvCallback
|
||||
bl CPS_SetUdpCallback
|
||||
b _02097F58
|
||||
_02097F54:
|
||||
bl CPS_SocDatagramMode
|
||||
_02097F58:
|
||||
mov r0, #0x1
|
||||
strh r0, [r4, #0x70]
|
||||
mov r0, #0x0
|
||||
ldmia sp!, {r4,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_02097F6C: .word SOCLi_UdpRecvCallback
|
||||
|
||||
arm_func_start SOCL_CreateSocket
|
||||
SOCL_CreateSocket: ; 0x02097F70
|
||||
stmdb sp!, {r4,lr}
|
||||
bl SOCLi_StartupSocket
|
||||
movs r4, r0
|
||||
mvneq r0, #0x30
|
||||
ldmeqia sp!, {r4,lr}
|
||||
bxeq lr
|
||||
ldr r0, _02097FB0 ; =SOCLi_CreateSocketCallBack
|
||||
mov r1, r4
|
||||
mov r2, #0x1
|
||||
bl SOCLi_CreateCommandPacket
|
||||
mov r1, r0
|
||||
mov r0, r4
|
||||
bl SOCLi_ExecCommandPacketInCtrlPipe
|
||||
mov r0, r4
|
||||
ldmia sp!, {r4,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_02097FB0: .word SOCLi_CreateSocketCallBack
|
||||
|
||||
arm_func_start SOCLi_ListenAcceptCallBack
|
||||
SOCLi_ListenAcceptCallBack: ; 0x02097FB4
|
||||
stmdb sp!, {r4-r6,lr}
|
||||
sub sp, sp, #0x8
|
||||
mov r6, r0
|
||||
ldr r4, [r6, #0x4]
|
||||
ldr r5, [r4, #0x64]
|
||||
add r0, r5, #0xe0
|
||||
bl OS_LockMutex
|
||||
mov r1, #0x0
|
||||
ldrh r0, [r6, #0x10]
|
||||
mov r2, r1
|
||||
bl CPS_SocPingMode
|
||||
bl CPS_TcpListen
|
||||
mov r2, #0x0
|
||||
add r0, sp, #0x0
|
||||
add r1, sp, #0x4
|
||||
str r2, [r5, #0xf8]
|
||||
bl CPS_SocWho
|
||||
ldrh r2, [sp, #0x0]
|
||||
ldr r1, [r6, #0x14]
|
||||
strh r2, [r1, #0x0]
|
||||
ldr r1, [r6, #0x18]
|
||||
str r0, [r1, #0x0]
|
||||
ldrsh r1, [r4, #0x70]
|
||||
add r0, r5, #0xe0
|
||||
orr r1, r1, #0x4
|
||||
strh r1, [r4, #0x70]
|
||||
bl OS_UnlockMutex
|
||||
mov r0, #0x0
|
||||
add sp, sp, #0x8
|
||||
ldmia sp!, {r4-r6,lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start SOCL_ListenAccept
|
||||
SOCL_ListenAccept:
|
||||
stmdb sp!, {r4-r6,lr}
|
||||
mov r6, r0
|
||||
mov r5, r1
|
||||
mov r4, r2
|
||||
bl SOCL_SocketIsInvalid
|
||||
cmp r0, #0x0
|
||||
mvnne r0, #0x1b
|
||||
ldmneia sp!, {r4-r6,lr}
|
||||
bxne lr
|
||||
cmp r6, #0x0
|
||||
mov r1, #0x0
|
||||
beq _0209806C
|
||||
ldrsh r0, [r6, #0x70]
|
||||
ands r0, r0, #0x1
|
||||
movne r1, #0x1
|
||||
_0209806C:
|
||||
cmp r1, #0x0
|
||||
mvneq r0, #0x26
|
||||
ldmeqia sp!, {r4-r6,lr}
|
||||
bxeq lr
|
||||
ldrsh r0, [r6, #0x70]
|
||||
ands r0, r0, #0x2
|
||||
mvnne r0, #0x1b
|
||||
ldmneia sp!, {r4-r6,lr}
|
||||
bxne lr
|
||||
ldrsb r0, [r6, #0x73]
|
||||
mov r1, #0x1
|
||||
cmp r0, #0x0
|
||||
beq _020980A8
|
||||
cmp r0, #0x4
|
||||
movne r1, #0x0
|
||||
_020980A8:
|
||||
cmp r1, #0x0
|
||||
mvneq r0, #0x1b
|
||||
ldmeqia sp!, {r4-r6,lr}
|
||||
bxeq lr
|
||||
ldrsb r2, [r6, #0x72]
|
||||
cmp r2, #0x1
|
||||
mvnne r0, #0x5
|
||||
ldmneia sp!, {r4-r6,lr}
|
||||
bxne lr
|
||||
ldrh r0, [r6, #0x74]
|
||||
cmp r0, #0x0
|
||||
mvneq r0, #0x1b
|
||||
ldmeqia sp!, {r4-r6,lr}
|
||||
bxeq lr
|
||||
ldr r0, _0209811C ; =SOCLi_ListenAcceptCallBack
|
||||
mov r1, r6
|
||||
bl SOCLi_CreateCommandPacket
|
||||
mov r1, r0
|
||||
ldrh r2, [r6, #0x74]
|
||||
mov r0, r6
|
||||
strh r2, [r1, #0x10]
|
||||
str r5, [r1, #0x14]
|
||||
str r4, [r1, #0x18]
|
||||
ldrsh r2, [r6, #0x70]
|
||||
orr r2, r2, #0x2
|
||||
strh r2, [r6, #0x70]
|
||||
bl SOCLi_ExecCommandPacketInRecvPipe
|
||||
ldmia sp!, {r4-r6,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_0209811C: .word SOCLi_ListenAcceptCallBack
|
||||
|
||||
arm_func_start SOCL_Accept
|
||||
SOCL_Accept:
|
||||
stmdb sp!, {r4-r7,lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r6, r0
|
||||
mov r5, r1
|
||||
mov r4, r2
|
||||
bl SOCL_SocketIsInvalid
|
||||
cmp r0, #0x0
|
||||
addne sp, sp, #0x4
|
||||
mvnne r0, #0x1b
|
||||
ldmneia sp!, {r4-r7,lr}
|
||||
bxne lr
|
||||
cmp r6, #0x0
|
||||
mov r1, #0x0
|
||||
beq _02098164
|
||||
ldrsh r0, [r6, #0x70]
|
||||
ands r0, r0, #0x1
|
||||
movne r1, #0x1
|
||||
_02098164:
|
||||
cmp r1, #0x0
|
||||
addeq sp, sp, #0x4
|
||||
mvneq r0, #0x26
|
||||
ldmeqia sp!, {r4-r7,lr}
|
||||
bxeq lr
|
||||
ldrsh r0, [r6, #0x70]
|
||||
ands r0, r0, #0x2
|
||||
addne sp, sp, #0x4
|
||||
mvnne r0, #0x1b
|
||||
ldmneia sp!, {r4-r7,lr}
|
||||
bxne lr
|
||||
ldrsb r0, [r6, #0x73]
|
||||
mov r1, #0x1
|
||||
cmp r0, #0x0
|
||||
beq _020981A8
|
||||
cmp r0, #0x4
|
||||
movne r1, #0x0
|
||||
_020981A8:
|
||||
cmp r1, #0x0
|
||||
addeq sp, sp, #0x4
|
||||
mvneq r0, #0x1b
|
||||
ldmeqia sp!, {r4-r7,lr}
|
||||
bxeq lr
|
||||
ldrsb r0, [r6, #0x72]
|
||||
cmp r0, #0x1
|
||||
addne sp, sp, #0x4
|
||||
mvnne r0, #0x5
|
||||
ldmneia sp!, {r4-r7,lr}
|
||||
bxne lr
|
||||
ldr r0, _02098228 ; =SOCLSocketParamTCP
|
||||
bl SOCL_CreateSocket
|
||||
movs r7, r0
|
||||
addmi sp, sp, #0x4
|
||||
ldmmiia sp!, {r4-r7,lr}
|
||||
bxmi lr
|
||||
ldrh r1, [r6, #0x74]
|
||||
bl SOCL_Bind
|
||||
cmp r0, #0x0
|
||||
addlt sp, sp, #0x4
|
||||
ldmltia sp!, {r4-r7,lr}
|
||||
bxlt lr
|
||||
mov r0, r7
|
||||
mov r1, r5
|
||||
mov r2, r4
|
||||
bl SOCL_ListenAccept
|
||||
cmp r0, #0x0
|
||||
movge r0, r7
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r7,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_02098228: .word SOCLSocketParamTCP
|
||||
|
||||
arm_func_start SOCL_Listen
|
||||
SOCL_Listen: ; 0x0209822C
|
||||
stmdb sp!, {r4,lr}
|
||||
mov r4, r0
|
||||
bl SOCL_SocketIsInvalid
|
||||
cmp r0, #0x0
|
||||
mvnne r0, #0x1b
|
||||
ldmneia sp!, {r4,lr}
|
||||
bxne lr
|
||||
cmp r4, #0x0
|
||||
mov r1, #0x0
|
||||
beq _02098260
|
||||
ldrsh r0, [r4, #0x70]
|
||||
ands r0, r0, #0x1
|
||||
movne r1, #0x1
|
||||
_02098260:
|
||||
cmp r1, #0x0
|
||||
mvneq r0, #0x26
|
||||
ldmeqia sp!, {r4,lr}
|
||||
bxeq lr
|
||||
ldrsh r0, [r4, #0x70]
|
||||
ands r0, r0, #0x2
|
||||
mvnne r0, #0x1b
|
||||
ldmneia sp!, {r4,lr}
|
||||
bxne lr
|
||||
ldrsb r0, [r4, #0x73]
|
||||
mov r1, #0x1
|
||||
cmp r0, #0x0
|
||||
beq _0209829C
|
||||
cmp r0, #0x4
|
||||
movne r1, #0x0
|
||||
_0209829C:
|
||||
cmp r1, #0x0
|
||||
mvneq r0, #0x1b
|
||||
ldmeqia sp!, {r4,lr}
|
||||
bxeq lr
|
||||
ldrsb r0, [r4, #0x72]
|
||||
cmp r0, #0x1
|
||||
moveq r0, #0x0
|
||||
mvnne r0, #0x5
|
||||
ldmia sp!, {r4,lr}
|
||||
bx lr
|
||||
128
arm9/asm/SOC_socl_list.s
Normal file
128
arm9/asm/SOC_socl_list.s
Normal file
@@ -0,0 +1,128 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.section .bss
|
||||
|
||||
.global SOCLiSocketList
|
||||
SOCLiSocketList: ; 0x021C8D30
|
||||
.space 0x4
|
||||
|
||||
.global SOCLiSocketListTrash
|
||||
SOCLiSocketListTrash: ; 0x021C8D34
|
||||
.space 0x4
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start SOCL_SocketIsInTrash
|
||||
SOCL_SocketIsInTrash:
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r1, r0
|
||||
ldr r0, _02099FA4 ; =SOCLiSocketListTrash
|
||||
bl SOCLi_SocketGetNextPtr
|
||||
cmp r0, #0x0
|
||||
movne r0, #0x1
|
||||
moveq r0, #0x0
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_02099FA4: .word SOCLiSocketListTrash
|
||||
|
||||
arm_func_start SOCL_SocketIsInvalid
|
||||
SOCL_SocketIsInvalid:
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r1, r0
|
||||
cmp r1, #0x0
|
||||
ble _02099FCC
|
||||
ldr r0, _02099FEC ; =SOCLiSocketList
|
||||
bl SOCLi_SocketGetNextPtr
|
||||
cmp r0, #0x0
|
||||
bne _02099FDC
|
||||
_02099FCC:
|
||||
add sp, sp, #0x4
|
||||
mov r0, #0x1
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
_02099FDC:
|
||||
mov r0, #0x0
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_02099FEC: .word SOCLiSocketList
|
||||
|
||||
arm_func_start SOCLi_SocketUnregisterTrash
|
||||
SOCLi_SocketUnregisterTrash: ; 0x02099FF0
|
||||
ldr ip, _0209A000 ; =SOCLi_SocketUnregisterList
|
||||
mov r1, r0
|
||||
ldr r0, _0209A004 ; =SOCLiSocketListTrash
|
||||
bx r12
|
||||
.balign 4
|
||||
_0209A000: .word SOCLi_SocketUnregisterList
|
||||
_0209A004: .word SOCLiSocketListTrash
|
||||
|
||||
arm_func_start SOCLi_SocketGetNextPtr
|
||||
SOCLi_SocketGetNextPtr:
|
||||
ldr r2, [r0, #0x0]
|
||||
cmp r2, #0x0
|
||||
beq _0209A02C
|
||||
_0209A014:
|
||||
cmp r2, r1
|
||||
bxeq lr
|
||||
add r0, r2, #0x7c
|
||||
ldr r2, [r2, #0x7c]
|
||||
cmp r2, #0x0
|
||||
bne _0209A014
|
||||
_0209A02C:
|
||||
mov r0, #0x0
|
||||
bx lr
|
||||
|
||||
arm_func_start SOCLi_SocketUnregisterList
|
||||
SOCLi_SocketUnregisterList: ; 0x0209A034
|
||||
stmdb sp!, {r4,lr}
|
||||
mov r4, r1
|
||||
bl SOCLi_SocketGetNextPtr
|
||||
cmp r0, #0x0
|
||||
ldrne r1, [r4, #0x7c]
|
||||
strne r1, [r0, #0x0]
|
||||
ldmia sp!, {r4,lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start SOCLi_SocketUnregister
|
||||
SOCLi_SocketUnregister: ; 0x0209A054
|
||||
ldr ip, _0209A064 ; =SOCLi_SocketUnregisterList
|
||||
mov r1, r0
|
||||
ldr r0, _0209A068 ; =SOCLiSocketList
|
||||
bx r12
|
||||
.balign 4
|
||||
_0209A064: .word SOCLi_SocketUnregisterList
|
||||
_0209A068: .word SOCLiSocketList
|
||||
|
||||
arm_func_start SOCLi_SocketRegisterTrash
|
||||
SOCLi_SocketRegisterTrash: ; 0x0209A06C
|
||||
ldr ip, _0209A07C ; =SOCLi_SocketRegisterList
|
||||
mov r1, r0
|
||||
ldr r0, _0209A080 ; =SOCLiSocketListTrash
|
||||
bx r12
|
||||
.balign 4
|
||||
_0209A07C: .word SOCLi_SocketRegisterList
|
||||
_0209A080: .word SOCLiSocketListTrash
|
||||
|
||||
arm_func_start SOCLi_SocketRegisterList
|
||||
SOCLi_SocketRegisterList: ; 0x0209A084
|
||||
ldr r2, [r0, #0x0]
|
||||
str r2, [r1, #0x7c]
|
||||
str r1, [r0, #0x0]
|
||||
bx lr
|
||||
|
||||
arm_func_start SOCLi_SocketRegister
|
||||
SOCLi_SocketRegister: ; 0x0209A094
|
||||
ldr ip, _0209A0A4 ; =SOCLi_SocketRegisterList
|
||||
mov r1, r0
|
||||
ldr r0, _0209A0A8 ; =SOCLiSocketList
|
||||
bx r12
|
||||
.balign 4
|
||||
_0209A0A4: .word SOCLi_SocketRegisterList
|
||||
_0209A0A8: .word SOCLiSocketList
|
||||
10
arm9/asm/SOC_socl_misc.s
Normal file
10
arm9/asm/SOC_socl_misc.s
Normal file
@@ -0,0 +1,10 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start SOCLi_RoundUp4
|
||||
SOCLi_RoundUp4:
|
||||
add r0, r0, #0x3
|
||||
bic r0, r0, #0x3
|
||||
bx lr
|
||||
93
arm9/asm/SOC_socl_poll.s
Normal file
93
arm9/asm/SOC_socl_poll.s
Normal file
@@ -0,0 +1,93 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start SOCLi_GetReadBufferOccpiedSize
|
||||
SOCLi_GetReadBufferOccpiedSize:
|
||||
ldr r2, [r0, #0x64]
|
||||
mov r3, #0x0
|
||||
cmp r2, #0x0
|
||||
beq _02099E88
|
||||
ldrsb r1, [r0, #0x73]
|
||||
cmp r1, #0x1
|
||||
bne _02099E6C
|
||||
ldr r0, [r2, #0x104]
|
||||
cmp r0, #0x0
|
||||
ldrneh r3, [r0, #0x4]
|
||||
b _02099E88
|
||||
_02099E6C:
|
||||
cmp r1, #0x0
|
||||
beq _02099E7C
|
||||
cmp r1, #0x4
|
||||
bne _02099E88
|
||||
_02099E7C:
|
||||
ldr r1, [r0, #0x44]
|
||||
ldr r0, [r2, #0xf8]
|
||||
sub r3, r1, r0
|
||||
_02099E88:
|
||||
mov r0, r3
|
||||
bx lr
|
||||
|
||||
arm_func_start SOCL_GetStatus
|
||||
SOCL_GetStatus:
|
||||
stmdb sp!, {r4-r6,lr}
|
||||
mov r4, #0x0
|
||||
mov r5, r0
|
||||
bl SOCL_SocketIsInvalid
|
||||
cmp r0, #0x0
|
||||
orrne r4, r4, #0x80
|
||||
bne _02099F60
|
||||
ldrsh r0, [r5, #0x70]
|
||||
ands r0, r0, #0x40
|
||||
ldrsb r0, [r5, #0x73]
|
||||
orrne r4, r4, #0x20
|
||||
cmp r0, #0x1
|
||||
beq _02099ED0
|
||||
ldrsh r0, [r5, #0x70]
|
||||
ands r0, r0, #0x4
|
||||
beq _02099F00
|
||||
_02099ED0:
|
||||
bl OS_DisableInterrupts
|
||||
mov r6, r0
|
||||
mov r0, r5
|
||||
bl SOCLi_GetReadBufferOccpiedSize
|
||||
cmp r0, #0x0
|
||||
mov r0, r5
|
||||
orrgt r4, r4, #0x1
|
||||
bl SOCLi_GetWriteBufferFreeSize
|
||||
cmp r0, #0x0
|
||||
mov r0, r6
|
||||
orrgt r4, r4, #0x8
|
||||
bl OS_RestoreInterrupts
|
||||
_02099F00:
|
||||
ldrsb r0, [r5, #0x73]
|
||||
mov r1, #0x1
|
||||
cmp r0, #0x0
|
||||
beq _02099F18
|
||||
cmp r0, #0x4
|
||||
movne r1, #0x0
|
||||
_02099F18:
|
||||
cmp r1, #0x0
|
||||
beq _02099F60
|
||||
ldrsh r0, [r5, #0x70]
|
||||
ands r0, r0, #0x4
|
||||
beq _02099F48
|
||||
ldrb r0, [r5, #0x8]
|
||||
cmp r0, #0x4
|
||||
beq _02099F48
|
||||
ands r0, r4, #0x1
|
||||
ldreqsh r0, [r5, #0x70]
|
||||
biceq r0, r0, #0x6
|
||||
streqh r0, [r5, #0x70]
|
||||
_02099F48:
|
||||
ldrsh r0, [r5, #0x70]
|
||||
ands r0, r0, #0x2
|
||||
bne _02099F60
|
||||
ldrsh r0, [r5, #0x70]
|
||||
ands r0, r0, #0x4
|
||||
orreq r4, r4, #0x40
|
||||
_02099F60:
|
||||
mov r0, r4
|
||||
ldmia sp!, {r4-r6,lr}
|
||||
bx lr
|
||||
1203
arm9/asm/SOC_socl_read.s
Normal file
1203
arm9/asm/SOC_socl_read.s
Normal file
File diff suppressed because it is too large
Load Diff
90
arm9/asm/SOC_socl_shutdown.s
Normal file
90
arm9/asm/SOC_socl_shutdown.s
Normal file
@@ -0,0 +1,90 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start SOCLi_ShutdownCallBack
|
||||
SOCLi_ShutdownCallBack: ; 0x0209959C
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0x4
|
||||
ldr r0, [r0, #0x4]
|
||||
mov r1, #0x1
|
||||
ldrsb r0, [r0, #0x73]
|
||||
cmp r0, #0x0
|
||||
beq _020995C0
|
||||
cmp r0, #0x4
|
||||
movne r1, #0x0
|
||||
_020995C0:
|
||||
cmp r1, #0x0
|
||||
beq _020995CC
|
||||
bl CPS_TcpShutdown
|
||||
_020995CC:
|
||||
mov r0, #0x0
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start SOCL_Shutdown
|
||||
SOCL_Shutdown: ; 0x020995DC
|
||||
stmdb sp!, {r4-r5,lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r4, r0
|
||||
bl SOCL_SocketIsInvalid
|
||||
cmp r0, #0x0
|
||||
addne sp, sp, #0x4
|
||||
mvnne r0, #0x1b
|
||||
ldmneia sp!, {r4-r5,lr}
|
||||
bxne lr
|
||||
cmp r4, #0x0
|
||||
mov r1, #0x0
|
||||
beq _02099618
|
||||
ldrsh r0, [r4, #0x70]
|
||||
ands r0, r0, #0x1
|
||||
movne r1, #0x1
|
||||
_02099618:
|
||||
cmp r1, #0x0
|
||||
addeq sp, sp, #0x4
|
||||
mvneq r0, #0x26
|
||||
ldmeqia sp!, {r4-r5,lr}
|
||||
bxeq lr
|
||||
ldrsh r0, [r4, #0x70]
|
||||
ands r0, r0, #0x4
|
||||
beq _02099644
|
||||
ldrsh r0, [r4, #0x70]
|
||||
ands r0, r0, #0x8
|
||||
beq _02099654
|
||||
_02099644:
|
||||
add sp, sp, #0x4
|
||||
mvn r0, #0x37
|
||||
ldmia sp!, {r4-r5,lr}
|
||||
bx lr
|
||||
_02099654:
|
||||
ldrsh r0, [r4, #0x70]
|
||||
orr r0, r0, #0x8
|
||||
strh r0, [r4, #0x70]
|
||||
ldr r5, [r4, #0x68]
|
||||
cmp r5, #0x0
|
||||
beq _020996AC
|
||||
ldr r1, [r5, #0x10c]
|
||||
cmp r1, #0x0
|
||||
beq _020996AC
|
||||
ldrsb r2, [r4, #0x72]
|
||||
ldr r0, _020996BC ; =SOCLi_ShutdownCallBack
|
||||
bl SOCLi_CreateCommandPacket
|
||||
movs r1, r0
|
||||
addeq sp, sp, #0x4
|
||||
mvneq r0, #0x20
|
||||
ldmeqia sp!, {r4-r5,lr}
|
||||
bxeq lr
|
||||
ldr r0, [r5, #0x10c]
|
||||
bl SOCLi_ExecCommandPacketInSendPipe
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r5,lr}
|
||||
bx lr
|
||||
_020996AC:
|
||||
mov r0, #0x0
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r5,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020996BC: .word SOCLi_ShutdownCallBack
|
||||
110
arm9/asm/SOC_socl_ssl.s
Normal file
110
arm9/asm/SOC_socl_ssl.s
Normal file
@@ -0,0 +1,110 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start SOCLi_EnableSslCallBack
|
||||
SOCLi_EnableSslCallBack: ; 0x0209AA10
|
||||
stmdb sp!, {r4-r7,lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r7, r0
|
||||
ldr r6, [r7, #0x4]
|
||||
ldr r5, [r6, #0x64]
|
||||
add r0, r5, #0xe0
|
||||
ldr r4, [r5, #0xc4]
|
||||
bl OS_LockMutex
|
||||
ldr r1, [r7, #0x10]
|
||||
cmp r1, #0x0
|
||||
beq _0209AA54
|
||||
mov r0, #0x1
|
||||
str r1, [r4, #0xc]
|
||||
bl CPS_SetSsl
|
||||
mov r0, #0x4
|
||||
strb r0, [r6, #0x73]
|
||||
b _0209AA68
|
||||
_0209AA54:
|
||||
mov r0, #0x0
|
||||
strb r0, [r6, #0x73]
|
||||
bl CPS_SetSsl
|
||||
mov r0, #0x0
|
||||
str r0, [r4, #0xc]
|
||||
_0209AA68:
|
||||
add r0, r5, #0xe0
|
||||
bl OS_UnlockMutex
|
||||
mov r0, #0x0
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r7,lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start SOCLi_ExecEnableSslCommand
|
||||
SOCLi_ExecEnableSslCommand: ; 0x0209AA80
|
||||
stmdb sp!, {r4-r5,lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r5, r0
|
||||
mov r4, r1
|
||||
ldr r0, _0209AACC ; =SOCLi_EnableSslCallBack
|
||||
mov r1, r5
|
||||
mov r2, #0x1
|
||||
bl SOCLi_CreateCommandPacket
|
||||
movs r1, r0
|
||||
addeq sp, sp, #0x4
|
||||
mvneq r0, #0x20
|
||||
ldmeqia sp!, {r4-r5,lr}
|
||||
bxeq lr
|
||||
mov r0, r5
|
||||
str r4, [r1, #0x10]
|
||||
bl SOCLi_ExecCommandPacketInRecvPipe
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r5,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_0209AACC: .word SOCLi_EnableSslCallBack
|
||||
|
||||
arm_func_start SOCL_EnableSsl
|
||||
SOCL_EnableSsl: ; 0x0209AAD0
|
||||
stmdb sp!, {r4-r5,lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r5, r0
|
||||
mov r4, r1
|
||||
bl SOCL_SocketIsInvalid
|
||||
cmp r0, #0x0
|
||||
addne sp, sp, #0x4
|
||||
mvnne r0, #0x1b
|
||||
ldmneia sp!, {r4-r5,lr}
|
||||
bxne lr
|
||||
ldrsb r0, [r5, #0x73]
|
||||
mov r1, #0x1
|
||||
cmp r0, #0x0
|
||||
beq _0209AB10
|
||||
cmp r0, #0x4
|
||||
movne r1, #0x0
|
||||
_0209AB10:
|
||||
cmp r1, #0x0
|
||||
addeq sp, sp, #0x4
|
||||
mvneq r0, #0x1b
|
||||
ldmeqia sp!, {r4-r5,lr}
|
||||
bxeq lr
|
||||
cmp r5, #0x0
|
||||
mov r1, #0x0
|
||||
beq _0209AB3C
|
||||
ldrsh r0, [r5, #0x70]
|
||||
ands r0, r0, #0x1
|
||||
movne r1, #0x1
|
||||
_0209AB3C:
|
||||
cmp r1, #0x0
|
||||
addeq sp, sp, #0x4
|
||||
mvneq r0, #0x26
|
||||
ldmeqia sp!, {r4-r5,lr}
|
||||
bxeq lr
|
||||
ldrsh r0, [r5, #0x70]
|
||||
ands r0, r0, #0x2
|
||||
addne sp, sp, #0x4
|
||||
mvnne r0, #0x1b
|
||||
ldmneia sp!, {r4-r5,lr}
|
||||
bxne lr
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
bl SOCLi_ExecEnableSslCommand
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r5,lr}
|
||||
bx lr
|
||||
236
arm9/asm/SOC_socl_startup.s
Normal file
236
arm9/asm/SOC_socl_startup.s
Normal file
@@ -0,0 +1,236 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.section .bss
|
||||
|
||||
.global SOCLiConfigPtr
|
||||
SOCLiConfigPtr: ; 0x021C8CC0
|
||||
.space 0x4
|
||||
|
||||
.global SOCLiYieldWait
|
||||
SOCLiYieldWait: ; 0x021C8CC4
|
||||
.space 0x4
|
||||
|
||||
.global SOCLiRequestedIP
|
||||
SOCLiRequestedIP: ; 0x021C8CC8
|
||||
.space 0x4
|
||||
|
||||
.global SOCLiDhcpState
|
||||
SOCLiDhcpState: ; 0x021C8CCC
|
||||
.space 0x4
|
||||
|
||||
.global SOCLiUDPSendSocket
|
||||
SOCLiUDPSendSocket: ; 0x021C8CD0
|
||||
.space 0x4
|
||||
|
||||
.global SOCLiCPSConfig
|
||||
SOCLiCPSConfig: ; 0x021C8CD4
|
||||
.space 0x30
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start SOCL_LinkIsOn
|
||||
SOCL_LinkIsOn: ; 0x020975B4
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0x4
|
||||
bl WCM_GetApMacAddress
|
||||
cmp r0, #0x0
|
||||
movne r0, #0x1
|
||||
moveq r0, #0x0
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start SOCLi_DhcpTimeout
|
||||
SOCLi_DhcpTimeout: ; 0x020975D8
|
||||
ldr r0, _020975EC ; =SOCLiDhcpState
|
||||
ldr r1, [r0, #0x0]
|
||||
orr r1, r1, #0x2
|
||||
str r1, [r0, #0x0]
|
||||
bx lr
|
||||
.balign 4
|
||||
_020975EC: .word SOCLiDhcpState
|
||||
|
||||
arm_func_start SOCLi_SetMyIP
|
||||
SOCLi_SetMyIP: ; 0x020975F0
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0x4
|
||||
ldr r1, _02097654 ; =SOCLiConfigPtr
|
||||
ldr r0, _02097658 ; =SOCLiDhcpState
|
||||
ldr lr, [r1, #0x0]
|
||||
ldr r3, [r0, #0x0]
|
||||
ldr r12, [lr, #0x4]
|
||||
ldr r2, _0209765C ; =CPSMyIp
|
||||
ldr r1, _02097660 ; =CPSNetMask
|
||||
str r12, [r2, #0x0]
|
||||
ldr r12, [lr, #0x8]
|
||||
ldr r2, _02097664 ; =CPSGatewayIp
|
||||
str r12, [r1, #0x0]
|
||||
ldr r12, [lr, #0xc]
|
||||
ldr r1, _02097668 ; =CPSDnsIp
|
||||
str r12, [r2, #0x0]
|
||||
ldr r12, [lr, #0x10]
|
||||
orr r2, r3, #0x2
|
||||
str r12, [r1, #0x0]
|
||||
ldr r3, [lr, #0x14]
|
||||
str r3, [r1, #0x4]
|
||||
str r2, [r0, #0x0]
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_02097654: .word SOCLiConfigPtr
|
||||
_02097658: .word SOCLiDhcpState
|
||||
_0209765C: .word CPSMyIp
|
||||
_02097660: .word CPSNetMask
|
||||
_02097664: .word CPSGatewayIp
|
||||
_02097668: .word CPSDnsIp
|
||||
|
||||
arm_func_start SOCLi_StartupCPS
|
||||
SOCLi_StartupCPS: ; 0x0209766C
|
||||
stmdb sp!, {r4-r5,lr}
|
||||
sub sp, sp, #0x4
|
||||
ldr r0, _020977C0 ; =SOCLiConfigPtr
|
||||
ldr r5, _020977C4 ; =SOCLiCPSConfig
|
||||
ldr r4, [r0, #0x0]
|
||||
mov r0, r5
|
||||
mov r1, #0x0
|
||||
mov r2, #0x30
|
||||
bl MI_CpuFill8
|
||||
ldr r0, _020977C8 ; =SOCLiYieldWait
|
||||
ldr r2, [r4, #0x18]
|
||||
mov r1, r5
|
||||
str r2, [r1, #0x4]
|
||||
ldr r12, [r4, #0x1c]
|
||||
mov r2, #0x0
|
||||
ldr r3, _020977CC ; =SOCL_LinkIsOn
|
||||
ldr r0, [r0, #0x0]
|
||||
str r12, [r1, #0x8]
|
||||
str r3, [r1, #0x10]
|
||||
str r2, [r1, #0x14]
|
||||
str r2, [r1, #0x18]
|
||||
str r0, [r1, #0x2c]
|
||||
ldr r0, [r4, #0x24]
|
||||
cmp r0, #0x0
|
||||
strne r0, [r5, #0x20]
|
||||
moveq r0, #0x4000
|
||||
streq r0, [r5, #0x20]
|
||||
ldr r0, [r4, #0x28]
|
||||
cmp r0, #0x0
|
||||
strne r0, [r5, #0x1c]
|
||||
bne _02097700
|
||||
ldr r1, _020977C0 ; =SOCLiConfigPtr
|
||||
ldr r0, [r5, #0x20]
|
||||
ldr r1, [r1, #0x0]
|
||||
ldr r1, [r1, #0x18]
|
||||
blx r1
|
||||
str r0, [r5, #0x1c]
|
||||
_02097700:
|
||||
ldr r0, [r4, #0x30]
|
||||
ldr r12, [r4, #0x34]
|
||||
cmp r0, #0x0
|
||||
moveq r0, #0x240
|
||||
cmp r12, #0x0
|
||||
sub r2, r0, #0x28
|
||||
moveq r12, #0x10c0
|
||||
add r0, r12, r12, lsr #0x1f
|
||||
str r2, [r5, #0x24]
|
||||
ldr r1, _020977D0 ; =SOCLSocketParamTCP
|
||||
mov r3, r0, asr #0x1
|
||||
ldr r0, _020977D4 ; =CPSMyIp
|
||||
mov r2, #0x0
|
||||
strh r12, [r1, #0x2]
|
||||
strh r3, [r1, #0x4]
|
||||
str r2, [r0, #0x0]
|
||||
ldr r0, [r4, #0x0]
|
||||
cmp r0, #0x0
|
||||
beq _02097774
|
||||
ldr r0, _020977D8 ; =SOCLiDhcpState
|
||||
mov r1, #0x1
|
||||
str r1, [r0, #0x0]
|
||||
ldr r1, _020977DC ; =SOCLi_DhcpTimeout
|
||||
str r2, [r5, #0x0]
|
||||
ldr r0, _020977E0 ; =SOCLiRequestedIP
|
||||
str r1, [r5, #0xc]
|
||||
ldr r0, [r0, #0x0]
|
||||
str r0, [r5, #0x28]
|
||||
b _0209778C
|
||||
_02097774:
|
||||
ldr r0, _020977D8 ; =SOCLiDhcpState
|
||||
mov r1, #0x1
|
||||
str r2, [r0, #0x0]
|
||||
ldr r0, _020977E4 ; =SOCLi_SetMyIP
|
||||
str r1, [r5, #0x0]
|
||||
str r0, [r5, #0xc]
|
||||
_0209778C:
|
||||
ldr r0, [r4, #0x2c]
|
||||
cmp r0, #0x0
|
||||
moveq r0, #0xb
|
||||
bl CPS_SetThreadPriority
|
||||
ldr r0, _020977E8 ; =CPSi_RecvCallbackFunc
|
||||
bl WCM_SetRecvDCFCallback
|
||||
ldr r0, _020977EC ; =SOCLi_TrashSocket
|
||||
bl CPS_SetScavengerCallback
|
||||
mov r0, r5
|
||||
bl CPS_Startup
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r5,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020977C0: .word SOCLiConfigPtr
|
||||
_020977C4: .word SOCLiCPSConfig
|
||||
_020977C8: .word SOCLiYieldWait
|
||||
_020977CC: .word SOCL_LinkIsOn
|
||||
_020977D0: .word SOCLSocketParamTCP
|
||||
_020977D4: .word CPSMyIp
|
||||
_020977D8: .word SOCLiDhcpState
|
||||
_020977DC: .word SOCLi_DhcpTimeout
|
||||
_020977E0: .word SOCLiRequestedIP
|
||||
_020977E4: .word SOCLi_SetMyIP
|
||||
_020977E8: .word CPSi_RecvCallbackFunc
|
||||
_020977EC: .word SOCLi_TrashSocket
|
||||
|
||||
arm_func_start SOCLi_StartupSOCL
|
||||
SOCLi_StartupSOCL: ; 0x020977F0
|
||||
stmdb sp!, {r4,lr}
|
||||
ldr r0, _02097828 ; =SOCLiConfigPtr
|
||||
ldr r0, [r0, #0x0]
|
||||
ldr r0, [r0, #0x20]
|
||||
bl SOCLi_StartupCommandPacketQueue
|
||||
movs r4, r0
|
||||
bmi _0209781C
|
||||
ldr r0, _0209782C ; =SOCLSocketParamUDPSend
|
||||
bl SOCL_CreateSocket
|
||||
ldr r1, _02097830 ; =SOCLiUDPSendSocket
|
||||
str r0, [r1, #0x0]
|
||||
_0209781C:
|
||||
mov r0, r4
|
||||
ldmia sp!, {r4,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_02097828: .word SOCLiConfigPtr
|
||||
_0209782C: .word SOCLSocketParamUDPSend
|
||||
_02097830: .word SOCLiUDPSendSocket
|
||||
|
||||
.extern _SDK_NintendoWiFi
|
||||
|
||||
arm_func_start SOCL_Startup
|
||||
SOCL_Startup: ; 0x02097834
|
||||
stmdb sp!, {r4,lr}
|
||||
mov r4, r0
|
||||
ldr r0, _02097870 ; =_SDK_NintendoWiFi
|
||||
bl OSi_ReferSymbol
|
||||
ldr r0, _02097874 ; =SOCLiConfigPtr
|
||||
ldr r1, [r0, #0x0]
|
||||
cmp r1, #0x0
|
||||
movne r0, #0x0
|
||||
ldmneia sp!, {r4,lr}
|
||||
bxne lr
|
||||
str r4, [r0, #0x0]
|
||||
bl SOCLi_StartupCPS
|
||||
bl SOCLi_StartupSOCL
|
||||
ldmia sp!, {r4,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_02097870: .word _SDK_NintendoWiFi
|
||||
_02097874: .word SOCLiConfigPtr
|
||||
1136
arm9/asm/SSL_biginteger.s
Normal file
1136
arm9/asm/SSL_biginteger.s
Normal file
File diff suppressed because it is too large
Load Diff
454
arm9/asm/SSL_md5.s
Normal file
454
arm9/asm/SSL_md5.s
Normal file
@@ -0,0 +1,454 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.section .data
|
||||
|
||||
.global itab
|
||||
itab: ; 0x021062AC
|
||||
.byte 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F
|
||||
.byte 0x01, 0x06, 0x0B, 0x00, 0x05, 0x0A, 0x0F, 0x04, 0x09, 0x0E, 0x03, 0x08, 0x0D, 0x02, 0x07, 0x0C
|
||||
.byte 0x05, 0x08, 0x0B, 0x0E, 0x01, 0x04, 0x07, 0x0A, 0x0D, 0x00, 0x03, 0x06, 0x09, 0x0C, 0x0F, 0x02
|
||||
.byte 0x00, 0x07, 0x0E, 0x05, 0x0C, 0x03, 0x0A, 0x01, 0x08, 0x0F, 0x06, 0x0D, 0x04, 0x0B, 0x02, 0x09
|
||||
|
||||
.global padding
|
||||
padding: ; 0x021062EC
|
||||
.byte 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.global ktab
|
||||
ktab: ; 0x0210632C
|
||||
.byte 0x78, 0xA4, 0x6A, 0xD7, 0x56, 0xB7, 0xC7, 0xE8, 0xDB, 0x70, 0x20, 0x24, 0xEE, 0xCE, 0xBD, 0xC1
|
||||
.byte 0xAF, 0x0F, 0x7C, 0xF5, 0x2A, 0xC6, 0x87, 0x47, 0x13, 0x46, 0x30, 0xA8, 0x01, 0x95, 0x46, 0xFD
|
||||
.byte 0xD8, 0x98, 0x80, 0x69, 0xAF, 0xF7, 0x44, 0x8B, 0xB1, 0x5B, 0xFF, 0xFF, 0xBE, 0xD7, 0x5C, 0x89
|
||||
.byte 0x22, 0x11, 0x90, 0x6B, 0x93, 0x71, 0x98, 0xFD, 0x8E, 0x43, 0x79, 0xA6, 0x21, 0x08, 0xB4, 0x49
|
||||
.byte 0x62, 0x25, 0x1E, 0xF6, 0x40, 0xB3, 0x40, 0xC0, 0x51, 0x5A, 0x5E, 0x26, 0xAA, 0xC7, 0xB6, 0xE9
|
||||
.byte 0x5D, 0x10, 0x2F, 0xD6, 0x53, 0x14, 0x44, 0x02, 0x81, 0xE6, 0xA1, 0xD8, 0xC8, 0xFB, 0xD3, 0xE7
|
||||
.byte 0xE6, 0xCD, 0xE1, 0x21, 0xD6, 0x07, 0x37, 0xC3, 0x87, 0x0D, 0xD5, 0xF4, 0xED, 0x14, 0x5A, 0x45
|
||||
.byte 0x05, 0xE9, 0xE3, 0xA9, 0xF8, 0xA3, 0xEF, 0xFC, 0xD9, 0x02, 0x6F, 0x67, 0x8A, 0x4C, 0x2A, 0x8D
|
||||
.byte 0x42, 0x39, 0xFA, 0xFF, 0x81, 0xF6, 0x71, 0x87, 0x22, 0x61, 0x9D, 0x6D, 0x0C, 0x38, 0xE5, 0xFD
|
||||
.byte 0x44, 0xEA, 0xBE, 0xA4, 0xA9, 0xCF, 0xDE, 0x4B, 0x60, 0x4B, 0xBB, 0xF6, 0x70, 0xBC, 0xBF, 0xBE
|
||||
.byte 0xC6, 0x7E, 0x9B, 0x28, 0xFA, 0x27, 0xA1, 0xEA, 0x85, 0x30, 0xEF, 0xD4, 0x05, 0x1D, 0x88, 0x04
|
||||
.byte 0x39, 0xD0, 0xD4, 0xD9, 0xE5, 0x99, 0xDB, 0xE6, 0xF8, 0x7C, 0xA2, 0x1F, 0x65, 0x56, 0xAC, 0xC4
|
||||
.byte 0x44, 0x22, 0x29, 0xF4, 0x97, 0xFF, 0x2A, 0x43, 0xA7, 0x23, 0x94, 0xAB, 0x39, 0xA0, 0x93, 0xFC
|
||||
.byte 0xC3, 0x59, 0x5B, 0x65, 0x92, 0xCC, 0x0C, 0x8F, 0x7D, 0xF4, 0xEF, 0xFF, 0xD1, 0x5D, 0x84, 0x85
|
||||
.byte 0x4F, 0x7E, 0xA8, 0x6F, 0xE0, 0xE6, 0x2C, 0xFE, 0x14, 0x43, 0x01, 0xA3, 0xA1, 0x11, 0x08, 0x4E
|
||||
.byte 0x82, 0x7E, 0x53, 0xF7, 0x35, 0xF2, 0x3A, 0xBD, 0xBB, 0xD2, 0xD7, 0x2A, 0x91, 0xD3, 0x86, 0xEB
|
||||
|
||||
.section .text
|
||||
|
||||
arm_func_start CPSi_md5_result
|
||||
CPSi_md5_result: ; 0x020A3A58
|
||||
stmdb sp!, {r4-r5,lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r5, r0
|
||||
mov r4, r1
|
||||
mov r0, r4
|
||||
add r1, r5, #0x10
|
||||
mov r2, #0x8
|
||||
bl char_from_long
|
||||
ldr r0, [r5, #0x10]
|
||||
ldr r1, _020A3AC8 ; =padding
|
||||
mov r0, r0, lsr #0x3
|
||||
and r0, r0, #0x3f
|
||||
cmp r0, #0x38
|
||||
rsblt r2, r0, #0x38
|
||||
rsbge r2, r0, #0x78
|
||||
mov r0, r5
|
||||
bl CPSi_md5_calc
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
mov r2, #0x8
|
||||
bl CPSi_md5_calc
|
||||
mov r0, r4
|
||||
mov r1, r5
|
||||
mov r2, #0x10
|
||||
bl char_from_long
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r5,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020A3AC8: .word padding
|
||||
|
||||
arm_func_start CPSi_md5_calc
|
||||
CPSi_md5_calc:
|
||||
stmdb sp!, {r4-r8,lr}
|
||||
mov r8, r0
|
||||
ldr r3, [r8, #0x10]
|
||||
mov r6, r2
|
||||
add r0, r3, r6, lsl #0x3
|
||||
str r0, [r8, #0x10]
|
||||
ldr r0, [r8, #0x10]
|
||||
mov r2, r3, lsr #0x3
|
||||
cmp r0, r6, lsl #0x3
|
||||
ldrcc r0, [r8, #0x14]
|
||||
and r4, r2, #0x3f
|
||||
addcc r0, r0, #0x1
|
||||
strcc r0, [r8, #0x14]
|
||||
ldr r0, [r8, #0x14]
|
||||
rsb r5, r4, #0x40
|
||||
add r0, r0, r6, lsr #0x1d
|
||||
mov r7, r1
|
||||
str r0, [r8, #0x14]
|
||||
cmp r6, r5
|
||||
blo _020A3B6C
|
||||
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, #0x0
|
||||
bl CPSi_md5_block
|
||||
add r0, r5, #0x3f
|
||||
cmp r0, r6
|
||||
bhs _020A3B70
|
||||
_020A3B4C:
|
||||
mov r0, r8
|
||||
add r1, r7, r5
|
||||
bl CPSi_md5_block
|
||||
add r5, r5, #0x40
|
||||
add r0, r5, #0x3f
|
||||
cmp r0, r6
|
||||
blo _020A3B4C
|
||||
b _020A3B70
|
||||
_020A3B6C:
|
||||
mov r5, #0x0
|
||||
_020A3B70:
|
||||
add r1, r8, #0x18
|
||||
add r0, r7, r5
|
||||
add r1, r1, r4
|
||||
sub r2, r6, r5
|
||||
bl MI_CpuCopy8
|
||||
ldmia sp!, {r4-r8,lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start CPSi_md5_init
|
||||
CPSi_md5_init: ; 0x020A3B8C
|
||||
stmdb sp!, {r4,lr}
|
||||
mov r1, #0x0
|
||||
mov r2, #0x58
|
||||
mov r4, r0
|
||||
bl MI_CpuFill8
|
||||
ldr r1, _020A3BC8 ; =0x67452301
|
||||
ldr r0, _020A3BCC ; =0xEFCDAB89
|
||||
str r1, [r4, #0x0]
|
||||
ldr r1, _020A3BD0 ; =0x98BADCFE
|
||||
str r0, [r4, #0x4]
|
||||
ldr r0, _020A3BD4 ; =0x10325476
|
||||
str r1, [r4, #0x8]
|
||||
str r0, [r4, #0xc]
|
||||
ldmia sp!, {r4,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020A3BC8: .word 0x67452301
|
||||
_020A3BCC: .word 0xEFCDAB89
|
||||
_020A3BD0: .word 0x98BADCFE
|
||||
_020A3BD4: .word 0x10325476
|
||||
|
||||
arm_func_start CPSi_md5_block
|
||||
CPSi_md5_block: ; 0x020A3BD8
|
||||
stmdb sp!, {r4-r11,lr}
|
||||
sub sp, sp, #0x44
|
||||
str r0, [sp, #0x0]
|
||||
ldr r3, [sp, #0x0]
|
||||
add r0, sp, #0x4
|
||||
mov r2, #0x40
|
||||
ldr r7, [r3, #0x0]
|
||||
ldr r6, [r3, #0x4]
|
||||
ldr r5, [r3, #0x8]
|
||||
ldr r4, [r3, #0xc]
|
||||
bl long_from_char
|
||||
ldr r2, _020A4024 ; =itab
|
||||
mov r3, #0x0
|
||||
ldr r1, _020A4028 ; =ktab
|
||||
mov r11, r3
|
||||
add r0, sp, #0x4
|
||||
mov r10, r2
|
||||
_020A3C1C:
|
||||
ldrb r9, [r2, #0x0]
|
||||
add r8, r3, #0x1
|
||||
eor r12, r5, r4
|
||||
and r12, r6, r12
|
||||
eor r12, r4, r12
|
||||
ldr r9, [r0, r9, lsl #0x2]
|
||||
ldr lr, [r1, r3, lsl #0x2]
|
||||
add r9, r12, r9
|
||||
add r9, lr, r9
|
||||
add r9, r7, r9
|
||||
mov r7, r9, lsl #0x7
|
||||
orr r7, r7, r9, lsr #0x19
|
||||
ldrb r9, [r10, r8]
|
||||
add r7, r6, r7
|
||||
ldr r8, [r1, r8, lsl #0x2]
|
||||
ldr r9, [r0, r9, lsl #0x2]
|
||||
eor r12, r6, r5
|
||||
and r12, r7, r12
|
||||
eor r12, r5, r12
|
||||
add r9, r12, r9
|
||||
add r9, r8, r9
|
||||
add r8, r3, #0x2
|
||||
add r9, r4, r9
|
||||
mov r4, r9, lsl #0xc
|
||||
orr r4, r4, r9, lsr #0x14
|
||||
add r4, r7, r4
|
||||
ldr r9, [r1, r8, lsl #0x2]
|
||||
ldrb r12, [r10, r8]
|
||||
eor r8, r7, r6
|
||||
and r8, r4, r8
|
||||
eor r8, r6, r8
|
||||
ldr lr, [r0, r12, lsl #0x2]
|
||||
add r12, r3, #0x3
|
||||
add r8, r8, lr
|
||||
add r8, r9, r8
|
||||
add r8, r5, r8
|
||||
mov r5, r8, lsl #0x11
|
||||
orr r5, r5, r8, lsr #0xf
|
||||
add r5, r4, r5
|
||||
ldr r9, [r1, r12, lsl #0x2]
|
||||
ldrb r12, [r10, r12]
|
||||
eor r8, r4, r7
|
||||
and r8, r5, r8
|
||||
eor r8, r7, r8
|
||||
ldr r12, [r0, r12, lsl #0x2]
|
||||
add r2, r2, #0x4
|
||||
add r8, r8, r12
|
||||
add r8, r9, r8
|
||||
add r8, r6, r8
|
||||
mov r6, r8, lsl #0x16
|
||||
orr r6, r6, r8, lsr #0xa
|
||||
add r6, r5, r6
|
||||
add r3, r3, #0x4
|
||||
add r11, r11, #0x1
|
||||
cmp r11, #0x4
|
||||
blt _020A3C1C
|
||||
add r8, r10, r3
|
||||
mov r2, #0x0
|
||||
ldr r1, _020A4028 ; =ktab
|
||||
add r0, sp, #0x4
|
||||
ldr lr, _020A4024 ; =itab
|
||||
_020A3D10:
|
||||
ldrb r10, [r8, #0x0]
|
||||
add r9, r3, #0x1
|
||||
eor r11, r6, r5
|
||||
and r11, r4, r11
|
||||
eor r11, r5, r11
|
||||
ldr r10, [r0, r10, lsl #0x2]
|
||||
ldr r12, [r1, r3, lsl #0x2]
|
||||
add r10, r11, r10
|
||||
add r10, r12, r10
|
||||
add r10, r7, r10
|
||||
mov r7, r10, lsl #0x5
|
||||
orr r7, r7, r10, lsr #0x1b
|
||||
ldrb r10, [lr, r9]
|
||||
add r7, r6, r7
|
||||
ldr r9, [r1, r9, lsl #0x2]
|
||||
ldr r10, [r0, r10, lsl #0x2]
|
||||
eor r11, r7, r6
|
||||
and r11, r5, r11
|
||||
eor r11, r6, r11
|
||||
add r10, r11, r10
|
||||
add r10, r9, r10
|
||||
add r9, r3, #0x2
|
||||
add r10, r4, r10
|
||||
mov r4, r10, lsl #0x9
|
||||
orr r4, r4, r10, lsr #0x17
|
||||
add r4, r7, r4
|
||||
ldr r12, [r1, r9, lsl #0x2]
|
||||
ldrb r9, [lr, r9]
|
||||
eor r10, r4, r7
|
||||
and r10, r6, r10
|
||||
eor r11, r7, r10
|
||||
ldr r10, [r0, r9, lsl #0x2]
|
||||
add r9, r3, #0x3
|
||||
add r10, r11, r10
|
||||
add r10, r12, r10
|
||||
add r10, r5, r10
|
||||
mov r5, r10, lsl #0xe
|
||||
orr r5, r5, r10, lsr #0x12
|
||||
add r5, r4, r5
|
||||
ldr r10, [r1, r9, lsl #0x2]
|
||||
ldrb r11, [lr, r9]
|
||||
eor r9, r5, r4
|
||||
and r9, r7, r9
|
||||
eor r9, r4, r9
|
||||
ldr r11, [r0, r11, lsl #0x2]
|
||||
add r8, r8, #0x4
|
||||
add r9, r9, r11
|
||||
add r9, r10, r9
|
||||
add r9, r6, r9
|
||||
mov r6, r9, lsl #0x14
|
||||
orr r6, r6, r9, lsr #0xc
|
||||
add r6, r5, r6
|
||||
add r3, r3, #0x4
|
||||
add r2, r2, #0x1
|
||||
cmp r2, #0x4
|
||||
blt _020A3D10
|
||||
add r8, lr, r3
|
||||
mov lr, #0x0
|
||||
ldr r2, _020A4028 ; =ktab
|
||||
add r0, sp, #0x4
|
||||
_020A3E00:
|
||||
ldrb r1, [r8, #0x0]
|
||||
eor r12, r6, r5
|
||||
add lr, lr, #0x1
|
||||
ldr r11, [r0, r1, lsl #0x2]
|
||||
eor r12, r4, r12
|
||||
ldr r1, [r2, r3, lsl #0x2]
|
||||
add r11, r12, r11
|
||||
add r1, r1, r11
|
||||
add r7, r7, r1
|
||||
mov r1, r7, lsl #0x4
|
||||
orr r1, r1, r7, lsr #0x1c
|
||||
add r7, r6, r1
|
||||
add r10, r3, #0x1
|
||||
ldr r1, _020A4024 ; =itab
|
||||
ldr r12, [r2, r10, lsl #0x2]
|
||||
ldrb r1, [r1, r10]
|
||||
eor r10, r7, r6
|
||||
eor r11, r5, r10
|
||||
ldr r10, [r0, r1, lsl #0x2]
|
||||
add r9, r3, #0x2
|
||||
add r10, r11, r10
|
||||
add r10, r12, r10
|
||||
add r4, r4, r10
|
||||
ldr sl, _020A4024 ; =itab
|
||||
ldr r1, [r2, r9, lsl #0x2]
|
||||
ldrb r9, [r10, r9]
|
||||
mov r10, r4, lsl #0xb
|
||||
orr r4, r10, r4, lsr #0x15
|
||||
add r4, r7, r4
|
||||
eor r10, r4, r7
|
||||
ldr r9, [r0, r9, lsl #0x2]
|
||||
eor r10, r6, r10
|
||||
add r9, r10, r9
|
||||
add r1, r1, r9
|
||||
add r5, r5, r1
|
||||
add r10, r3, #0x3
|
||||
ldr sb, _020A4024 ; =itab
|
||||
mov r1, r5, lsl #0x10
|
||||
ldrb r9, [r9, r10]
|
||||
orr r1, r1, r5, lsr #0x10
|
||||
add r5, r4, r1
|
||||
ldr r1, [r2, r10, lsl #0x2]
|
||||
eor r10, r5, r4
|
||||
ldr r9, [r0, r9, lsl #0x2]
|
||||
eor r10, r7, r10
|
||||
add r9, r10, r9
|
||||
add r1, r1, r9
|
||||
add r6, r6, r1
|
||||
mov r1, r6, lsl #0x17
|
||||
orr r1, r1, r6, lsr #0x9
|
||||
add r8, r8, #0x4
|
||||
add r6, r5, r1
|
||||
add r3, r3, #0x4
|
||||
cmp lr, #0x4
|
||||
blt _020A3E00
|
||||
ldr r0, _020A4024 ; =itab
|
||||
ldr r1, _020A4028 ; =ktab
|
||||
add r8, r0, r3
|
||||
ldr lr, _020A4024 ; =itab
|
||||
mov r2, #0x0
|
||||
add r0, sp, #0x4
|
||||
_020A3EF4:
|
||||
ldrb r10, [r8, #0x0]
|
||||
add r9, r3, #0x1
|
||||
mvn r11, r4
|
||||
orr r11, r6, r11
|
||||
eor r11, r5, r11
|
||||
ldr r10, [r0, r10, lsl #0x2]
|
||||
ldr r12, [r1, r3, lsl #0x2]
|
||||
add r10, r11, r10
|
||||
add r10, r12, r10
|
||||
add r10, r7, r10
|
||||
mov r7, r10, lsl #0x6
|
||||
orr r7, r7, r10, lsr #0x1a
|
||||
ldrb r10, [lr, r9]
|
||||
add r7, r6, r7
|
||||
ldr r9, [r1, r9, lsl #0x2]
|
||||
ldr r10, [r0, r10, lsl #0x2]
|
||||
mvn r11, r5
|
||||
orr r11, r7, r11
|
||||
eor r11, r6, r11
|
||||
add r10, r11, r10
|
||||
add r10, r9, r10
|
||||
add r9, r3, #0x2
|
||||
add r10, r4, r10
|
||||
mov r4, r10, lsl #0xa
|
||||
orr r4, r4, r10, lsr #0x16
|
||||
add r4, r7, r4
|
||||
ldr r12, [r1, r9, lsl #0x2]
|
||||
ldrb r9, [lr, r9]
|
||||
mvn r10, r6
|
||||
orr r10, r4, r10
|
||||
eor r11, r7, r10
|
||||
ldr r10, [r0, r9, lsl #0x2]
|
||||
add r9, r3, #0x3
|
||||
add r10, r11, r10
|
||||
add r10, r12, r10
|
||||
add r10, r5, r10
|
||||
mov r5, r10, lsl #0xf
|
||||
orr r5, r5, r10, lsr #0x11
|
||||
add r5, r4, r5
|
||||
ldr r10, [r1, r9, lsl #0x2]
|
||||
ldrb r11, [lr, r9]
|
||||
mvn r9, r7
|
||||
orr r9, r5, r9
|
||||
eor r9, r4, r9
|
||||
ldr r11, [r0, r11, lsl #0x2]
|
||||
add r8, r8, #0x4
|
||||
add r9, r9, r11
|
||||
add r9, r10, r9
|
||||
add r9, r6, r9
|
||||
mov r6, r9, lsl #0x15
|
||||
orr r6, r6, r9, lsr #0xb
|
||||
add r6, r5, r6
|
||||
add r3, r3, #0x4
|
||||
add r2, r2, #0x1
|
||||
cmp r2, #0x4
|
||||
blt _020A3EF4
|
||||
ldr r0, [sp, #0x0]
|
||||
ldr r0, [r0, #0x0]
|
||||
add r1, r0, r7
|
||||
ldr r0, [sp, #0x0]
|
||||
str r1, [r0, #0x0]
|
||||
ldr r0, [r0, #0x4]
|
||||
add r1, r0, r6
|
||||
ldr r0, [sp, #0x0]
|
||||
str r1, [r0, #0x4]
|
||||
ldr r0, [r0, #0x8]
|
||||
add r1, r0, r5
|
||||
ldr r0, [sp, #0x0]
|
||||
str r1, [r0, #0x8]
|
||||
ldr r0, [r0, #0xc]
|
||||
add r1, r0, r4
|
||||
ldr r0, [sp, #0x0]
|
||||
str r1, [r0, #0xc]
|
||||
add sp, sp, #0x44
|
||||
ldmia sp!, {r4-r11,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020A4024: .word itab
|
||||
_020A4028: .word ktab
|
||||
|
||||
arm_func_start long_from_char
|
||||
long_from_char: ; 0x020A402C
|
||||
ldr ip, _020A4040 ; =MI_CpuCopy8
|
||||
mov r3, r0
|
||||
mov r0, r1
|
||||
mov r1, r3
|
||||
bx r12
|
||||
.balign 4
|
||||
_020A4040: .word MI_CpuCopy8
|
||||
|
||||
arm_func_start char_from_long
|
||||
char_from_long: ; 0x020A4044
|
||||
ldr ip, _020A4058 ; =MI_CpuCopy8
|
||||
mov r3, r0
|
||||
mov r0, r1
|
||||
mov r1, r3
|
||||
bx r12
|
||||
.balign 4
|
||||
_020A4058: .word MI_CpuCopy8
|
||||
74
arm9/asm/SSL_rca4.s
Normal file
74
arm9/asm/SSL_rca4.s
Normal file
@@ -0,0 +1,74 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.section .text
|
||||
|
||||
arm_func_start CPSi_rc4_crypt
|
||||
CPSi_rc4_crypt: ; 0x020A49CC
|
||||
stmdb sp!, {r4-r6,lr}
|
||||
cmp r2, #0x0
|
||||
add r3, r0, #0x2
|
||||
ldrb lr, [r0, #0x0]
|
||||
ldrb r12, [r0, #0x1]
|
||||
mov r4, #0x0
|
||||
ble _020A4A2C
|
||||
_020A49E8:
|
||||
add r5, lr, #0x1
|
||||
and lr, r5, #0xff
|
||||
ldrb r6, [r3, lr]
|
||||
add r5, r12, r6
|
||||
and r12, r5, #0xff
|
||||
ldrb r5, [r3, r12]
|
||||
strb r5, [r3, lr]
|
||||
add r5, r6, r5
|
||||
strb r6, [r3, r12]
|
||||
and r5, r5, #0xff
|
||||
ldrb r6, [r1, r4]
|
||||
ldrb r5, [r3, r5]
|
||||
eor r5, r6, r5
|
||||
strb r5, [r1, r4]
|
||||
add r4, r4, #0x1
|
||||
cmp r4, r2
|
||||
blt _020A49E8
|
||||
_020A4A2C:
|
||||
strb lr, [r0, #0x0]
|
||||
strb r12, [r0, #0x1]
|
||||
ldmia sp!, {r4-r6,lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start CPSi_rc4_init
|
||||
CPSi_rc4_init: ; 0x020A4A3C
|
||||
stmdb sp!, {r4-r7,lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r3, #0x0
|
||||
strb r3, [r0, #0x0]
|
||||
strb r3, [r0, #0x1]
|
||||
add r7, r0, #0x2
|
||||
_020A4A54:
|
||||
strb r3, [r7, r3]
|
||||
add r3, r3, #0x1
|
||||
cmp r3, #0x100
|
||||
blt _020A4A54
|
||||
mov r5, #0x0
|
||||
mov r6, r5
|
||||
mov r4, r5
|
||||
mov r0, r5
|
||||
_020A4A74:
|
||||
ldrb lr, [r7, r4]
|
||||
ldrb r12, [r1, r5]
|
||||
add r3, r5, #0x1
|
||||
and r5, r3, #0xff
|
||||
add r3, lr, r12
|
||||
add r3, r6, r3
|
||||
and r6, r3, #0xff
|
||||
ldrb r3, [r7, r6]
|
||||
cmp r5, r2
|
||||
movge r5, r0
|
||||
strb r3, [r7, r4]
|
||||
add r4, r4, #0x1
|
||||
strb lr, [r7, r6]
|
||||
cmp r4, #0x100
|
||||
blt _020A4A74
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r7,lr}
|
||||
bx lr
|
||||
655
arm9/asm/SSL_sha1.s
Normal file
655
arm9/asm/SSL_sha1.s
Normal file
@@ -0,0 +1,655 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.section .data
|
||||
|
||||
.global ssl_sha1_padding
|
||||
ssl_sha1_padding: ; 0x0210642C
|
||||
.byte 0x80
|
||||
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.section .text
|
||||
|
||||
arm_func_start CPSi_sha1_result_prng
|
||||
CPSi_sha1_result_prng: ; 0x020A405C
|
||||
stmdb sp!, {r4-r5,lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r4, r1
|
||||
ldr r1, _020A4094 ; =ssl_sha1_padding+1
|
||||
mov r5, r0
|
||||
mov r2, #0x2c
|
||||
bl CPSi_sha1_calc
|
||||
mov r0, r4
|
||||
mov r1, r5
|
||||
mov r2, #0x14
|
||||
bl ssl_sha1_char_from_long
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r5,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020A4094: .word ssl_sha1_padding+1
|
||||
|
||||
arm_func_start CPSi_sha1_result
|
||||
CPSi_sha1_result: ; 0x020A4098
|
||||
stmdb sp!, {r4-r5,lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r5, r0
|
||||
mov r4, r1
|
||||
mov r0, r4
|
||||
add r1, r5, #0x14
|
||||
mov r2, #0x8
|
||||
bl ssl_sha1_char_from_long
|
||||
ldr r0, [r5, #0x18]
|
||||
ldr r1, _020A4108 ; =ssl_sha1_padding
|
||||
mov r0, r0, lsr #0x3
|
||||
and r0, r0, #0x3f
|
||||
cmp r0, #0x38
|
||||
rsblt r2, r0, #0x38
|
||||
rsbge r2, r0, #0x78
|
||||
mov r0, r5
|
||||
bl CPSi_sha1_calc
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
mov r2, #0x8
|
||||
bl CPSi_sha1_calc
|
||||
mov r0, r4
|
||||
mov r1, r5
|
||||
mov r2, #0x14
|
||||
bl ssl_sha1_char_from_long
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r5,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020A4108: .word ssl_sha1_padding
|
||||
|
||||
arm_func_start CPSi_sha1_calc
|
||||
CPSi_sha1_calc:
|
||||
stmdb sp!, {r4-r8,lr}
|
||||
mov r8, r0
|
||||
ldr r3, [r8, #0x18]
|
||||
mov r6, r2
|
||||
add r0, r3, r6, lsl #0x3
|
||||
str r0, [r8, #0x18]
|
||||
ldr r0, [r8, #0x18]
|
||||
mov r2, r3, lsr #0x3
|
||||
cmp r0, r6, lsl #0x3
|
||||
ldrcc r0, [r8, #0x14]
|
||||
and r4, r2, #0x3f
|
||||
addcc r0, r0, #0x1
|
||||
strcc r0, [r8, #0x14]
|
||||
ldr r0, [r8, #0x14]
|
||||
rsb r5, r4, #0x40
|
||||
add r0, r0, r6, lsr #0x1d
|
||||
mov r7, r1
|
||||
str r0, [r8, #0x14]
|
||||
cmp r6, r5
|
||||
blo _020A41AC
|
||||
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, #0x0
|
||||
bl CPSi_sha1_block
|
||||
add r0, r5, #0x3f
|
||||
cmp r0, r6
|
||||
bhs _020A41B0
|
||||
_020A418C:
|
||||
mov r0, r8
|
||||
add r1, r7, r5
|
||||
bl CPSi_sha1_block
|
||||
add r5, r5, #0x40
|
||||
add r0, r5, #0x3f
|
||||
cmp r0, r6
|
||||
blo _020A418C
|
||||
b _020A41B0
|
||||
_020A41AC:
|
||||
mov r5, #0x0
|
||||
_020A41B0:
|
||||
add r1, r8, #0x1c
|
||||
add r0, r7, r5
|
||||
add r1, r1, r4
|
||||
sub r2, r6, r5
|
||||
bl MI_CpuCopy8
|
||||
ldmia sp!, {r4-r8,lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start CPSi_sha1_init
|
||||
CPSi_sha1_init: ; 0x020A41CC
|
||||
stmdb sp!, {r4,lr}
|
||||
mov r1, #0x0
|
||||
mov r2, #0x5c
|
||||
mov r4, r0
|
||||
bl MI_CpuFill8
|
||||
ldr r0, _020A4210 ; =0x67452301
|
||||
ldr r1, _020A4214 ; =0xEFCDAB89
|
||||
str r0, [r4, #0x0]
|
||||
ldr r0, _020A4218 ; =0x98BADCFE
|
||||
str r1, [r4, #0x4]
|
||||
ldr r1, _020A421C ; =0x10325476
|
||||
str r0, [r4, #0x8]
|
||||
ldr r0, _020A4220 ; =0xC3D2E1F0
|
||||
str r1, [r4, #0xc]
|
||||
str r0, [r4, #0x10]
|
||||
ldmia sp!, {r4,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020A4210: .word 0x67452301
|
||||
_020A4214: .word 0xEFCDAB89
|
||||
_020A4218: .word 0x98BADCFE
|
||||
_020A421C: .word 0x10325476
|
||||
_020A4220: .word 0xC3D2E1F0
|
||||
|
||||
arm_func_start CPSi_sha1_block
|
||||
CPSi_sha1_block: ; 0x020A4224
|
||||
stmdb sp!, {r4-r11,lr}
|
||||
sub sp, sp, #0x54
|
||||
str r0, [sp, #0x0]
|
||||
ldr r3, [sp, #0x0]
|
||||
add r0, sp, #0x10
|
||||
mov r2, #0x40
|
||||
ldr r6, [r3, #0x0]
|
||||
ldr r7, [r3, #0x4]
|
||||
ldr r8, [r3, #0x8]
|
||||
ldr r5, [r3, #0xc]
|
||||
ldr r4, [r3, #0x10]
|
||||
bl ssl_sha1_long_from_char
|
||||
mov r2, #0x0
|
||||
ldr r3, _020A48BC ; =0x5A827999
|
||||
mov r0, r2
|
||||
add r1, sp, #0x10
|
||||
_020A4264:
|
||||
eor r9, r8, r5
|
||||
mov r10, r6, lsl #0x5
|
||||
and r9, r7, r9
|
||||
orr r10, r10, r6, lsr #0x1b
|
||||
eor r9, r5, r9
|
||||
mov r11, r7, lsl #0x1e
|
||||
orr r7, r11, r7, lsr #0x2
|
||||
eor r11, r7, r8
|
||||
add r9, r10, r9
|
||||
ldr r12, [r1, r2, lsl #0x2]
|
||||
and r10, r6, r11
|
||||
add r9, r12, r9
|
||||
add r9, r9, r3
|
||||
add r4, r4, r9
|
||||
add r9, r2, #0x1
|
||||
ldr r9, [r1, r9, lsl #0x2]
|
||||
eor r10, r8, r10
|
||||
mov r11, r4, lsl #0x5
|
||||
orr r11, r11, r4, lsr #0x1b
|
||||
add r10, r11, r10
|
||||
add r10, r9, r10
|
||||
mov r9, r6, lsl #0x1e
|
||||
add r10, r10, r3
|
||||
add r5, r5, r10
|
||||
orr r6, r9, r6, lsr #0x2
|
||||
add r9, r2, #0x2
|
||||
ldr r10, [r1, r9, lsl #0x2]
|
||||
mov r9, r5, lsl #0x5
|
||||
orr r9, r9, r5, lsr #0x1b
|
||||
eor r11, r6, r7
|
||||
and r11, r4, r11
|
||||
eor r11, r7, r11
|
||||
add r9, r9, r11
|
||||
add r9, r10, r9
|
||||
add r9, r9, r3
|
||||
add r8, r8, r9
|
||||
mov r9, r4, lsl #0x1e
|
||||
orr r4, r9, r4, lsr #0x2
|
||||
add r9, r2, #0x3
|
||||
ldr r10, [r1, r9, lsl #0x2]
|
||||
mov r9, r8, lsl #0x5
|
||||
orr r9, r9, r8, lsr #0x1b
|
||||
eor r11, r4, r6
|
||||
and r11, r5, r11
|
||||
eor r11, r6, r11
|
||||
add r9, r9, r11
|
||||
add r9, r10, r9
|
||||
add r9, r9, r3
|
||||
add r7, r7, r9
|
||||
mov r9, r5, lsl #0x1e
|
||||
orr r5, r9, r5, lsr #0x2
|
||||
add r9, r2, #0x4
|
||||
ldr r10, [r1, r9, lsl #0x2]
|
||||
mov r9, r7, lsl #0x5
|
||||
orr r9, r9, r7, lsr #0x1b
|
||||
eor r11, r5, r4
|
||||
and r11, r8, r11
|
||||
eor r11, r4, r11
|
||||
add r9, r9, r11
|
||||
add r9, r10, r9
|
||||
add r9, r9, r3
|
||||
add r6, r6, r9
|
||||
mov r9, r8, lsl #0x1e
|
||||
orr r8, r9, r8, lsr #0x2
|
||||
add r2, r2, #0x5
|
||||
add r0, r0, #0x1
|
||||
cmp r0, #0x3
|
||||
blt _020A4264
|
||||
eor r0, r8, r5
|
||||
mov r2, r6, lsl #0x5
|
||||
and r0, r7, r0
|
||||
orr r3, r2, r6, lsr #0x1b
|
||||
eor r0, r5, r0
|
||||
add r3, r3, r0
|
||||
ldr r9, [sp, #0x4c]
|
||||
ldr r0, _020A48BC ; =0x5A827999
|
||||
add r3, r9, r3
|
||||
add r3, r3, r0
|
||||
mov r2, r7, lsl #0x1e
|
||||
orr r9, r2, r7, lsr #0x2
|
||||
mov r0, #0x0
|
||||
add r4, r4, r3
|
||||
bl R
|
||||
eor r1, r9, r8
|
||||
mov r3, r4, lsl #0x5
|
||||
and r1, r6, r1
|
||||
mov r2, r6, lsl #0x1e
|
||||
orr r3, r3, r4, lsr #0x1b
|
||||
eor r1, r8, r1
|
||||
add r1, r3, r1
|
||||
add r3, r1, r0
|
||||
ldr r0, _020A48BC ; =0x5A827999
|
||||
add r1, sp, #0x10
|
||||
add r3, r3, r0
|
||||
orr r10, r2, r6, lsr #0x2
|
||||
mov r0, #0x1
|
||||
add r5, r5, r3
|
||||
bl R
|
||||
eor r1, r10, r9
|
||||
mov r2, r5, lsl #0x5
|
||||
and r1, r4, r1
|
||||
orr r2, r2, r5, lsr #0x1b
|
||||
eor r1, r9, r1
|
||||
add r1, r2, r1
|
||||
add r2, r1, r0
|
||||
ldr r0, _020A48BC ; =0x5A827999
|
||||
mov r1, r4, lsl #0x1e
|
||||
add r0, r2, r0
|
||||
orr r6, r1, r4, lsr #0x2
|
||||
add r8, r8, r0
|
||||
add r1, sp, #0x10
|
||||
mov r0, #0x2
|
||||
bl R
|
||||
mov r1, r8, lsl #0x5
|
||||
orr r2, r1, r8, lsr #0x1b
|
||||
eor r1, r6, r10
|
||||
and r1, r5, r1
|
||||
eor r1, r10, r1
|
||||
add r1, r2, r1
|
||||
add r2, r1, r0
|
||||
ldr r0, _020A48BC ; =0x5A827999
|
||||
mov r1, r5, lsl #0x1e
|
||||
add r0, r2, r0
|
||||
orr r7, r1, r5, lsr #0x2
|
||||
add r9, r9, r0
|
||||
mov r0, #0x3
|
||||
add r1, sp, #0x10
|
||||
bl R
|
||||
mov r1, r9, lsl #0x5
|
||||
orr r2, r1, r9, lsr #0x1b
|
||||
eor r1, r7, r6
|
||||
and r1, r8, r1
|
||||
eor r1, r6, r1
|
||||
add r1, r2, r1
|
||||
add r2, r1, r0
|
||||
ldr r0, _020A48BC ; =0x5A827999
|
||||
mov r1, r8, lsl #0x1e
|
||||
add r0, r2, r0
|
||||
add r10, r10, r0
|
||||
mov r0, #0x0
|
||||
ldr r4, _020A48C0 ; =0x6ED9EBA1
|
||||
orr r8, r1, r8, lsr #0x2
|
||||
mov r5, #0x4
|
||||
str r0, [sp, #0xc]
|
||||
add r11, sp, #0x10
|
||||
_020A44A8:
|
||||
mov r0, r5
|
||||
mov r1, r11
|
||||
bl R
|
||||
mov r2, r10, lsl #0x5
|
||||
eor r1, r9, r8
|
||||
orr r2, r2, r10, lsr #0x1b
|
||||
eor r1, r7, r1
|
||||
add r1, r2, r1
|
||||
add r0, r1, r0
|
||||
add r1, r0, r4
|
||||
mov r0, r9, lsl #0x1e
|
||||
add r6, r6, r1
|
||||
orr r9, r0, r9, lsr #0x2
|
||||
add r0, r5, #0x1
|
||||
mov r1, r11
|
||||
bl R
|
||||
mov r1, r6, lsl #0x5
|
||||
orr r2, r1, r6, lsr #0x1b
|
||||
eor r1, r10, r9
|
||||
eor r1, r8, r1
|
||||
add r1, r2, r1
|
||||
add r0, r1, r0
|
||||
add r0, r0, r4
|
||||
add r7, r7, r0
|
||||
mov r0, r10, lsl #0x1e
|
||||
orr r10, r0, r10, lsr #0x2
|
||||
add r0, r5, #0x2
|
||||
and r5, r0, #0xf
|
||||
mov r0, r5
|
||||
mov r1, r11
|
||||
bl R
|
||||
mov r1, r7, lsl #0x5
|
||||
orr r2, r1, r7, lsr #0x1b
|
||||
eor r1, r6, r10
|
||||
eor r1, r9, r1
|
||||
add r1, r2, r1
|
||||
add r0, r1, r0
|
||||
add r0, r0, r4
|
||||
add r8, r8, r0
|
||||
mov r0, r6, lsl #0x1e
|
||||
orr r6, r0, r6, lsr #0x2
|
||||
add r0, r5, #0x1
|
||||
mov r1, r11
|
||||
bl R
|
||||
mov r1, r8, lsl #0x5
|
||||
orr r2, r1, r8, lsr #0x1b
|
||||
eor r1, r7, r6
|
||||
eor r1, r10, r1
|
||||
add r1, r2, r1
|
||||
add r0, r1, r0
|
||||
add r0, r0, r4
|
||||
add r9, r9, r0
|
||||
mov r0, r7, lsl #0x1e
|
||||
orr r7, r0, r7, lsr #0x2
|
||||
add r0, r5, #0x2
|
||||
mov r1, r11
|
||||
bl R
|
||||
mov r1, r9, lsl #0x5
|
||||
orr r2, r1, r9, lsr #0x1b
|
||||
eor r1, r8, r7
|
||||
eor r1, r6, r1
|
||||
add r1, r2, r1
|
||||
add r0, r1, r0
|
||||
add r0, r0, r4
|
||||
add r10, r10, r0
|
||||
mov r0, r8, lsl #0x1e
|
||||
orr r8, r0, r8, lsr #0x2
|
||||
ldr r0, [sp, #0xc]
|
||||
add r5, r5, #0x3
|
||||
add r0, r0, #0x1
|
||||
str r0, [sp, #0xc]
|
||||
cmp r0, #0x4
|
||||
blt _020A44A8
|
||||
mov r0, #0x0
|
||||
ldr r4, _020A48C4 ; =0x8F1BBCDC
|
||||
str r0, [sp, #0x8]
|
||||
add r11, sp, #0x10
|
||||
_020A45DC:
|
||||
mov r0, r5
|
||||
mov r1, r11
|
||||
bl R
|
||||
orr r2, r8, r7
|
||||
mov r1, r10, lsl #0x5
|
||||
and r3, r9, r2
|
||||
and r2, r8, r7
|
||||
orr r1, r1, r10, lsr #0x1b
|
||||
orr r2, r3, r2
|
||||
add r1, r1, r2
|
||||
add r1, r1, r0
|
||||
mov r0, r9, lsl #0x1e
|
||||
add r1, r1, r4
|
||||
add r6, r6, r1
|
||||
orr r9, r0, r9, lsr #0x2
|
||||
add r0, r5, #0x1
|
||||
mov r1, r11
|
||||
bl R
|
||||
orr r2, r9, r8
|
||||
mov r1, r6, lsl #0x5
|
||||
and r3, r10, r2
|
||||
and r2, r9, r8
|
||||
orr r1, r1, r6, lsr #0x1b
|
||||
orr r2, r3, r2
|
||||
add r1, r1, r2
|
||||
add r0, r1, r0
|
||||
add r0, r0, r4
|
||||
add r7, r7, r0
|
||||
mov r0, r10, lsl #0x1e
|
||||
orr r10, r0, r10, lsr #0x2
|
||||
add r0, r5, #0x2
|
||||
mov r1, r11
|
||||
bl R
|
||||
orr r2, r10, r9
|
||||
mov r1, r7, lsl #0x5
|
||||
and r3, r6, r2
|
||||
and r2, r10, r9
|
||||
orr r1, r1, r7, lsr #0x1b
|
||||
orr r2, r3, r2
|
||||
add r1, r1, r2
|
||||
add r0, r1, r0
|
||||
add r0, r0, r4
|
||||
add r8, r8, r0
|
||||
mov r0, r6, lsl #0x1e
|
||||
orr r6, r0, r6, lsr #0x2
|
||||
add r0, r5, #0x3
|
||||
and r5, r0, #0xf
|
||||
mov r0, r5
|
||||
mov r1, r11
|
||||
bl R
|
||||
orr r2, r6, r10
|
||||
mov r1, r8, lsl #0x5
|
||||
and r3, r7, r2
|
||||
and r2, r6, r10
|
||||
orr r1, r1, r8, lsr #0x1b
|
||||
orr r2, r3, r2
|
||||
add r1, r1, r2
|
||||
add r0, r1, r0
|
||||
add r0, r0, r4
|
||||
add r9, r9, r0
|
||||
mov r0, r7, lsl #0x1e
|
||||
orr r7, r0, r7, lsr #0x2
|
||||
add r0, r5, #0x1
|
||||
mov r1, r11
|
||||
bl R
|
||||
orr r2, r7, r6
|
||||
mov r1, r9, lsl #0x5
|
||||
and r3, r8, r2
|
||||
and r2, r7, r6
|
||||
orr r1, r1, r9, lsr #0x1b
|
||||
orr r2, r3, r2
|
||||
add r1, r1, r2
|
||||
add r0, r1, r0
|
||||
add r0, r0, r4
|
||||
add r10, r10, r0
|
||||
mov r0, r8, lsl #0x1e
|
||||
orr r8, r0, r8, lsr #0x2
|
||||
ldr r0, [sp, #0x8]
|
||||
add r5, r5, #0x2
|
||||
add r0, r0, #0x1
|
||||
str r0, [sp, #0x8]
|
||||
cmp r0, #0x4
|
||||
blt _020A45DC
|
||||
mov r0, #0x0
|
||||
ldr r4, _020A48C8 ; =0xCA62C1D6
|
||||
str r0, [sp, #0x4]
|
||||
add r11, sp, #0x10
|
||||
_020A4738:
|
||||
mov r0, r5
|
||||
mov r1, r11
|
||||
bl R
|
||||
mov r2, r10, lsl #0x5
|
||||
eor r1, r9, r8
|
||||
orr r2, r2, r10, lsr #0x1b
|
||||
eor r1, r7, r1
|
||||
add r1, r2, r1
|
||||
add r0, r1, r0
|
||||
add r1, r0, r4
|
||||
mov r0, r9, lsl #0x1e
|
||||
add r6, r6, r1
|
||||
orr r9, r0, r9, lsr #0x2
|
||||
add r0, r5, #0x1
|
||||
mov r1, r11
|
||||
bl R
|
||||
mov r1, r6, lsl #0x5
|
||||
orr r2, r1, r6, lsr #0x1b
|
||||
eor r1, r10, r9
|
||||
eor r1, r8, r1
|
||||
add r1, r2, r1
|
||||
add r0, r1, r0
|
||||
add r0, r0, r4
|
||||
add r7, r7, r0
|
||||
mov r0, r10, lsl #0x1e
|
||||
orr r10, r0, r10, lsr #0x2
|
||||
add r0, r5, #0x2
|
||||
mov r1, r11
|
||||
bl R
|
||||
mov r1, r7, lsl #0x5
|
||||
orr r2, r1, r7, lsr #0x1b
|
||||
eor r1, r6, r10
|
||||
eor r1, r9, r1
|
||||
add r1, r2, r1
|
||||
add r0, r1, r0
|
||||
add r0, r0, r4
|
||||
add r8, r8, r0
|
||||
mov r0, r6, lsl #0x1e
|
||||
orr r6, r0, r6, lsr #0x2
|
||||
add r0, r5, #0x3
|
||||
mov r1, r11
|
||||
bl R
|
||||
mov r1, r8, lsl #0x5
|
||||
orr r2, r1, r8, lsr #0x1b
|
||||
eor r1, r7, r6
|
||||
eor r1, r10, r1
|
||||
add r1, r2, r1
|
||||
add r0, r1, r0
|
||||
add r0, r0, r4
|
||||
add r9, r9, r0
|
||||
mov r0, r7, lsl #0x1e
|
||||
orr r7, r0, r7, lsr #0x2
|
||||
add r0, r5, #0x4
|
||||
and r5, r0, #0xf
|
||||
mov r0, r5
|
||||
mov r1, r11
|
||||
bl R
|
||||
mov r1, r9, lsl #0x5
|
||||
orr r2, r1, r9, lsr #0x1b
|
||||
eor r1, r8, r7
|
||||
eor r1, r6, r1
|
||||
add r1, r2, r1
|
||||
add r0, r1, r0
|
||||
add r0, r0, r4
|
||||
add r10, r10, r0
|
||||
mov r0, r8, lsl #0x1e
|
||||
orr r8, r0, r8, lsr #0x2
|
||||
ldr r0, [sp, #0x4]
|
||||
add r5, r5, #0x1
|
||||
add r0, r0, #0x1
|
||||
str r0, [sp, #0x4]
|
||||
cmp r0, #0x4
|
||||
blt _020A4738
|
||||
ldr r0, [sp, #0x0]
|
||||
ldr r0, [r0, #0x0]
|
||||
add r1, r0, r10
|
||||
ldr r0, [sp, #0x0]
|
||||
str r1, [r0, #0x0]
|
||||
ldr r0, [r0, #0x4]
|
||||
add r1, r0, r9
|
||||
ldr r0, [sp, #0x0]
|
||||
str r1, [r0, #0x4]
|
||||
ldr r0, [r0, #0x8]
|
||||
add r1, r0, r8
|
||||
ldr r0, [sp, #0x0]
|
||||
str r1, [r0, #0x8]
|
||||
ldr r0, [r0, #0xc]
|
||||
add r1, r0, r7
|
||||
ldr r0, [sp, #0x0]
|
||||
str r1, [r0, #0xc]
|
||||
ldr r0, [r0, #0x10]
|
||||
add r1, r0, r6
|
||||
ldr r0, [sp, #0x0]
|
||||
str r1, [r0, #0x10]
|
||||
add sp, sp, #0x54
|
||||
ldmia sp!, {r4-r11,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020A48BC: .word 0x5A827999
|
||||
_020A48C0: .word 0x6ED9EBA1
|
||||
_020A48C4: .word 0x8F1BBCDC
|
||||
_020A48C8: .word 0xCA62C1D6
|
||||
|
||||
arm_func_start ssl_sha1_long_from_char
|
||||
ssl_sha1_long_from_char: ; 0x020A48CC
|
||||
stmdb sp!, {r4-r5,lr}
|
||||
sub sp, sp, #0x4
|
||||
cmp r2, #0x0
|
||||
addls sp, sp, #0x4
|
||||
mov r3, #0x0
|
||||
ldmlsia sp!, {r4-r5,lr}
|
||||
bxls lr
|
||||
_020A48E8:
|
||||
add r12, r3, #0x1
|
||||
ldrb lr, [r1, r3]
|
||||
add r4, r3, #0x2
|
||||
add r5, r3, #0x3
|
||||
ldrb r12, [r1, r12]
|
||||
mov lr, lr, lsl #0x18
|
||||
add r3, r3, #0x4
|
||||
ldrb r4, [r1, r4]
|
||||
orr r12, lr, r12, lsl #0x10
|
||||
ldrb lr, [r1, r5]
|
||||
orr r4, r12, r4, lsl #0x8
|
||||
cmp r3, r2
|
||||
orr r4, lr, r4
|
||||
str r4, [r0], #0x4
|
||||
blo _020A48E8
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r5,lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start ssl_sha1_char_from_long
|
||||
ssl_sha1_char_from_long: ; 0x020A4930
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0x4
|
||||
movs r12, r2, lsr #0x2
|
||||
mov lr, #0x0
|
||||
addeq sp, sp, #0x4
|
||||
ldmeqia sp!, {lr}
|
||||
bxeq lr
|
||||
_020A494C:
|
||||
ldr r3, [r1], #0x4
|
||||
add lr, lr, #0x1
|
||||
mov r2, r3, lsr #0x18
|
||||
strb r2, [r0, #0x0]
|
||||
mov r2, r3, lsr #0x10
|
||||
strb r2, [r0, #0x1]
|
||||
mov r2, r3, lsr #0x8
|
||||
strb r2, [r0, #0x2]
|
||||
strb r3, [r0, #0x3]
|
||||
cmp lr, r12
|
||||
add r0, r0, #0x4
|
||||
blo _020A494C
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start R
|
||||
R: ; 0x020A4988
|
||||
add r2, r0, #0xd
|
||||
add r12, r0, #0x2
|
||||
and r3, r2, #0xf
|
||||
eor r2, r0, #0x8
|
||||
and r12, r12, #0xf
|
||||
ldr r3, [r1, r3, lsl #0x2]
|
||||
ldr r2, [r1, r2, lsl #0x2]
|
||||
ldr r12, [r1, r12, lsl #0x2]
|
||||
eor r2, r3, r2
|
||||
ldr r3, [r1, r0, lsl #0x2]
|
||||
eor r2, r12, r2
|
||||
eor r3, r3, r2
|
||||
mov r2, r3, lsl #0x1
|
||||
orr r2, r2, r3, lsr #0x1f
|
||||
str r2, [r1, r0, lsl #0x2]
|
||||
ldr r0, [r1, r0, lsl #0x2]
|
||||
bx lr
|
||||
4114
arm9/asm/SSL_ssl.s
Normal file
4114
arm9/asm/SSL_ssl.s
Normal file
File diff suppressed because it is too large
Load Diff
408
arm9/asm/WCM_aplist.s
Normal file
408
arm9/asm/WCM_aplist.s
Normal file
@@ -0,0 +1,408 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start WcmAppendApList
|
||||
WcmAppendApList: ; 0x020A7FB0
|
||||
stmdb sp!, {r4,lr}
|
||||
mov r4, r0
|
||||
bl WCMi_GetSystemWork
|
||||
add r1, r0, #0x2000
|
||||
cmp r4, #0x0
|
||||
ldr r0, [r1, #0x270]
|
||||
ldmeqia sp!, {r4,lr}
|
||||
bxeq lr
|
||||
cmp r0, #0x0
|
||||
ldmeqia sp!, {r4,lr}
|
||||
bxeq lr
|
||||
ldr r1, [r1, #0x274]
|
||||
cmp r1, #0xc
|
||||
ldmlsia sp!, {r4,lr}
|
||||
bxls lr
|
||||
ldr r3, [r0, #0x4]
|
||||
cmp r3, #0x0
|
||||
beq _020A8040
|
||||
_020A7FF8:
|
||||
cmp r3, r4
|
||||
bne _020A8034
|
||||
ldr r2, [r3, #0x8]
|
||||
cmp r2, #0x0
|
||||
ldrne r1, [r3, #0xc]
|
||||
strne r1, [r2, #0xc]
|
||||
ldreq r1, [r3, #0xc]
|
||||
streq r1, [r0, #0x4]
|
||||
ldr r2, [r3, #0xc]
|
||||
cmp r2, #0x0
|
||||
ldrne r1, [r3, #0x8]
|
||||
strne r1, [r2, #0x8]
|
||||
ldreq r1, [r3, #0x8]
|
||||
streq r1, [r0, #0x8]
|
||||
b _020A8040
|
||||
_020A8034:
|
||||
ldr r3, [r3, #0xc]
|
||||
cmp r3, #0x0
|
||||
bne _020A7FF8
|
||||
_020A8040:
|
||||
mov r1, #0x0
|
||||
str r1, [r4, #0xc]
|
||||
ldr r1, [r0, #0x8]
|
||||
str r1, [r4, #0x8]
|
||||
str r4, [r0, #0x8]
|
||||
ldr r1, [r4, #0x8]
|
||||
cmp r1, #0x0
|
||||
strne r4, [r1, #0xc]
|
||||
streq r4, [r0, #0x4]
|
||||
cmp r3, #0x0
|
||||
ldreq r1, [r0, #0x0]
|
||||
streq r1, [r4, #0x4]
|
||||
ldreq r1, [r0, #0x0]
|
||||
addeq r1, r1, #0x1
|
||||
streq r1, [r0, #0x0]
|
||||
ldmia sp!, {r4,lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start WcmSearchIndexedApList
|
||||
WcmSearchIndexedApList: ; 0x020A8084
|
||||
stmdb sp!, {r4,lr}
|
||||
mov r4, r0
|
||||
bl WCMi_GetSystemWork
|
||||
add r1, r0, #0x2000
|
||||
ldr r2, [r1, #0x270]
|
||||
mov r0, #0x0
|
||||
cmp r2, #0x0
|
||||
ldmeqia sp!, {r4,lr}
|
||||
bxeq lr
|
||||
ldr r1, [r1, #0x274]
|
||||
cmp r1, #0xc
|
||||
ldmlsia sp!, {r4,lr}
|
||||
bxls lr
|
||||
ldr r0, [r2, #0x4]
|
||||
cmp r0, #0x0
|
||||
ldmeqia sp!, {r4,lr}
|
||||
bxeq lr
|
||||
_020A80C8:
|
||||
ldr r1, [r0, #0x4]
|
||||
cmp r1, r4
|
||||
ldmeqia sp!, {r4,lr}
|
||||
bxeq lr
|
||||
ldr r0, [r0, #0xc]
|
||||
cmp r0, #0x0
|
||||
bne _020A80C8
|
||||
ldmia sp!, {r4,lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start WcmSearchApList
|
||||
WcmSearchApList: ; 0x020A80EC
|
||||
stmdb sp!, {r4-r5,lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r5, r0
|
||||
bl WCMi_GetSystemWork
|
||||
add r0, r0, #0x2000
|
||||
cmp r5, #0x0
|
||||
mov r4, #0x0
|
||||
ldr r1, [r0, #0x270]
|
||||
addeq sp, sp, #0x4
|
||||
moveq r0, r4
|
||||
ldmeqia sp!, {r4-r5,lr}
|
||||
bxeq lr
|
||||
cmp r1, #0x0
|
||||
beq _020A8160
|
||||
ldr r0, [r0, #0x274]
|
||||
cmp r0, #0xc
|
||||
bls _020A8160
|
||||
ldr r4, [r1, #0x4]
|
||||
cmp r4, #0x0
|
||||
beq _020A8160
|
||||
_020A813C:
|
||||
add r0, r4, #0x10
|
||||
mov r1, r5
|
||||
add r0, r0, #0x4
|
||||
bl WCM_CompareBssID
|
||||
cmp r0, #0x0
|
||||
bne _020A8160
|
||||
ldr r4, [r4, #0xc]
|
||||
cmp r4, #0x0
|
||||
bne _020A813C
|
||||
_020A8160:
|
||||
mov r0, r4
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r5,lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start WcmGetLastApList
|
||||
WcmGetLastApList: ; 0x020A8170
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0x4
|
||||
bl WCMi_GetSystemWork
|
||||
add r0, r0, #0x2000
|
||||
ldr r1, [r0, #0x270]
|
||||
cmp r1, #0x0
|
||||
beq _020A81A4
|
||||
ldr r0, [r0, #0x274]
|
||||
cmp r0, #0xc
|
||||
addhi sp, sp, #0x4
|
||||
ldrhi r0, [r1, #0x4]
|
||||
ldmhiia sp!, {lr}
|
||||
bxhi lr
|
||||
_020A81A4:
|
||||
mov r0, #0x0
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start WcmAllocApList
|
||||
WcmAllocApList: ; 0x020A81B4
|
||||
stmdb sp!, {r4,lr}
|
||||
bl WCMi_GetSystemWork
|
||||
add r2, r0, #0x2000
|
||||
ldr r1, [r2, #0x270]
|
||||
mov r0, #0x0
|
||||
cmp r1, #0x0
|
||||
ldmeqia sp!, {r4,lr}
|
||||
bxeq lr
|
||||
ldr r3, [r2, #0x274]
|
||||
cmp r3, #0xc
|
||||
ldmlsia sp!, {r4,lr}
|
||||
bxls lr
|
||||
ldr r2, _020A8294 ; =0x4EC4EC4F
|
||||
sub r3, r3, #0xc
|
||||
umull r2, r4, r3, r2
|
||||
movs r4, r4, lsr #0x6
|
||||
ldmeqia sp!, {r4,lr}
|
||||
bxeq lr
|
||||
ldr r2, [r1, #0x0]
|
||||
cmp r4, r2
|
||||
ldmlsia sp!, {r4,lr}
|
||||
bxls lr
|
||||
mov lr, r0
|
||||
cmp r4, #0x0
|
||||
bls _020A8240
|
||||
add r12, r1, #0xc
|
||||
mov r2, #0xd0
|
||||
_020A8220:
|
||||
mul r0, lr, r2
|
||||
ldrb r3, [r12, r0]
|
||||
add r0, r12, r0
|
||||
cmp r3, #0x0
|
||||
beq _020A8240
|
||||
add lr, lr, #0x1
|
||||
cmp lr, r4
|
||||
blo _020A8220
|
||||
_020A8240:
|
||||
cmp lr, r4
|
||||
ldmcsia sp!, {r4,lr}
|
||||
bxcs lr
|
||||
mov r2, #0x1
|
||||
strb r2, [r0, #0x0]
|
||||
ldr r3, [r1, #0x0]
|
||||
mov r2, #0x0
|
||||
str r3, [r0, #0x4]
|
||||
str r2, [r0, #0xc]
|
||||
ldr r2, [r1, #0x8]
|
||||
str r2, [r0, #0x8]
|
||||
str r0, [r1, #0x8]
|
||||
ldr r2, [r0, #0x8]
|
||||
cmp r2, #0x0
|
||||
strne r0, [r2, #0xc]
|
||||
streq r0, [r1, #0x4]
|
||||
ldr r2, [r1, #0x0]
|
||||
add r2, r2, #0x1
|
||||
str r2, [r1, #0x0]
|
||||
ldmia sp!, {r4,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020A8294: .word 0x4EC4EC4F
|
||||
|
||||
arm_func_start WCMi_EntryApList
|
||||
WCMi_EntryApList: ; 0x020A8298
|
||||
stmdb sp!, {r4-r7,lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r5, r0
|
||||
mov r4, r1
|
||||
bl WCMi_GetSystemWork
|
||||
movs r7, r0
|
||||
addeq sp, sp, #0x4
|
||||
ldmeqia sp!, {r4-r7,lr}
|
||||
bxeq lr
|
||||
add r0, r7, #0x2000
|
||||
ldrb r0, [r0, #0x26a]
|
||||
cmp r0, #0x0
|
||||
addne sp, sp, #0x4
|
||||
ldmneia sp!, {r4-r7,lr}
|
||||
bxne lr
|
||||
ldrh r0, [r5, #0x3c]
|
||||
cmp r0, #0x0
|
||||
addne sp, sp, #0x4
|
||||
ldmneia sp!, {r4-r7,lr}
|
||||
bxne lr
|
||||
add r0, r5, #0x4
|
||||
bl WcmSearchApList
|
||||
movs r6, r0
|
||||
bne _020A8300
|
||||
bl WcmAllocApList
|
||||
mov r6, r0
|
||||
_020A8300:
|
||||
cmp r6, #0x0
|
||||
bne _020A8320
|
||||
add r0, r7, #0x2000
|
||||
ldr r0, [r0, #0x278]
|
||||
cmp r0, #0x1
|
||||
bne _020A8320
|
||||
bl WcmGetLastApList
|
||||
mov r6, r0
|
||||
_020A8320:
|
||||
cmp r6, #0x0
|
||||
addeq sp, sp, #0x4
|
||||
ldmeqia sp!, {r4-r7,lr}
|
||||
bxeq lr
|
||||
mov r0, r5
|
||||
add r1, r6, #0x10
|
||||
mov r2, #0xc0
|
||||
strh r4, [r6, #0x2]
|
||||
bl MIi_CpuCopyFast
|
||||
mov r0, r6
|
||||
bl WcmAppendApList
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r7,lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start WCM_PointApList
|
||||
WCM_PointApList: ; 0x020A8358
|
||||
stmdb sp!, {r4-r5,lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r4, r0
|
||||
bl OS_DisableInterrupts
|
||||
mov r5, r0
|
||||
bl WCMi_GetSystemWork
|
||||
cmp r0, #0x0
|
||||
bne _020A8390
|
||||
mov r0, r5
|
||||
bl OS_RestoreInterrupts
|
||||
add sp, sp, #0x4
|
||||
mov r0, #0x0
|
||||
ldmia sp!, {r4-r5,lr}
|
||||
bx lr
|
||||
_020A8390:
|
||||
mov r0, r4
|
||||
bl WcmSearchIndexedApList
|
||||
movs r4, r0
|
||||
bne _020A83B8
|
||||
mov r0, r5
|
||||
bl OS_RestoreInterrupts
|
||||
add sp, sp, #0x4
|
||||
mov r0, #0x0
|
||||
ldmia sp!, {r4-r5,lr}
|
||||
bx lr
|
||||
_020A83B8:
|
||||
mov r0, r5
|
||||
bl OS_RestoreInterrupts
|
||||
add r0, r4, #0x10
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r5,lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start WCM_LockApList
|
||||
WCM_LockApList: ; 0x020A83D0
|
||||
stmdb sp!, {r4-r5,lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r5, r0
|
||||
bl OS_DisableInterrupts
|
||||
mov r4, r0
|
||||
bl WCMi_GetSystemWork
|
||||
cmp r0, #0x0
|
||||
bne _020A8408
|
||||
mov r0, r4
|
||||
bl OS_RestoreInterrupts
|
||||
add sp, sp, #0x4
|
||||
mov r0, #0x0
|
||||
ldmia sp!, {r4-r5,lr}
|
||||
bx lr
|
||||
_020A8408:
|
||||
cmp r5, #0x0
|
||||
beq _020A8434
|
||||
add r1, r0, #0x2000
|
||||
ldrb r1, [r1, #0x26a]
|
||||
add r0, r0, #0x2000
|
||||
cmp r1, #0x0
|
||||
movne r5, #0x1
|
||||
mov r1, #0x1
|
||||
moveq r5, #0x0
|
||||
strb r1, [r0, #0x26a]
|
||||
b _020A8454
|
||||
_020A8434:
|
||||
add r1, r0, #0x2000
|
||||
ldrb r1, [r1, #0x26a]
|
||||
add r0, r0, #0x2000
|
||||
cmp r1, #0x0
|
||||
movne r5, #0x1
|
||||
mov r1, #0x0
|
||||
moveq r5, #0x0
|
||||
strb r1, [r0, #0x26a]
|
||||
_020A8454:
|
||||
mov r0, r4
|
||||
bl OS_RestoreInterrupts
|
||||
mov r0, r5
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r5,lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start WCM_CountApList
|
||||
WCM_CountApList: ; 0x020A846C
|
||||
stmdb sp!, {r4-r5,lr}
|
||||
sub sp, sp, #0x4
|
||||
bl OS_DisableInterrupts
|
||||
mov r5, r0
|
||||
bl WCMi_GetSystemWork
|
||||
cmp r0, #0x0
|
||||
mov r4, #0x0
|
||||
bne _020A84A4
|
||||
mov r0, r5
|
||||
bl OS_RestoreInterrupts
|
||||
add sp, sp, #0x4
|
||||
mov r0, r4
|
||||
ldmia sp!, {r4-r5,lr}
|
||||
bx lr
|
||||
_020A84A4:
|
||||
add r0, r0, #0x2000
|
||||
ldr r1, [r0, #0x270]
|
||||
cmp r1, #0x0
|
||||
beq _020A84C0
|
||||
ldr r0, [r0, #0x274]
|
||||
cmp r0, #0xc
|
||||
ldrhi r4, [r1, #0x0]
|
||||
_020A84C0:
|
||||
mov r0, r5
|
||||
bl OS_RestoreInterrupts
|
||||
mov r0, r4
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r5,lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start WCM_ClearApList
|
||||
WCM_ClearApList: ; 0x020A84D8
|
||||
stmdb sp!, {r4,lr}
|
||||
bl OS_DisableInterrupts
|
||||
mov r4, r0
|
||||
bl WCMi_GetSystemWork
|
||||
cmp r0, #0x0
|
||||
bne _020A8500
|
||||
mov r0, r4
|
||||
bl OS_RestoreInterrupts
|
||||
ldmia sp!, {r4,lr}
|
||||
bx lr
|
||||
_020A8500:
|
||||
add r1, r0, #0x2000
|
||||
ldr r0, [r1, #0x270]
|
||||
cmp r0, #0x0
|
||||
beq _020A8524
|
||||
ldr r2, [r1, #0x274]
|
||||
cmp r2, #0x0
|
||||
ble _020A8524
|
||||
mov r1, #0x0
|
||||
bl MI_CpuFill8
|
||||
_020A8524:
|
||||
mov r0, r4
|
||||
bl OS_RestoreInterrupts
|
||||
ldmia sp!, {r4,lr}
|
||||
bx lr
|
||||
361
arm9/asm/WCM_cpsif.s
Normal file
361
arm9/asm/WCM_cpsif.s
Normal file
@@ -0,0 +1,361 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.bss
|
||||
|
||||
.global wcmCpsifw
|
||||
wcmCpsifw: ; 0x021CA870
|
||||
.space 0x2C
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start WcmCpsifUnlockMutexInIRQ
|
||||
WcmCpsifUnlockMutexInIRQ: ; 0x020A8534
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0x4
|
||||
ldr r2, [r0, #0x8]
|
||||
ldr r1, _020A858C ; =OS_IrqHandler
|
||||
cmp r2, r1
|
||||
addne sp, sp, #0x4
|
||||
ldmneia sp!, {lr}
|
||||
bxne lr
|
||||
ldr r1, [r0, #0xc]
|
||||
sub r1, r1, #0x1
|
||||
str r1, [r0, #0xc]
|
||||
ldr r1, [r0, #0xc]
|
||||
cmp r1, #0x0
|
||||
addne sp, sp, #0x4
|
||||
ldmneia sp!, {lr}
|
||||
bxne lr
|
||||
mov r1, #0x0
|
||||
str r1, [r0, #0x8]
|
||||
bl OS_WakeupThread
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020A858C: .word OS_IrqHandler
|
||||
|
||||
arm_func_start WcmCpsifTryLockMutexInIRQ
|
||||
WcmCpsifTryLockMutexInIRQ: ; 0x020A8590
|
||||
ldr r2, [r0, #0x8]
|
||||
cmp r2, #0x0
|
||||
bne _020A85B8
|
||||
ldr r1, _020A85D8 ; =OS_IrqHandler
|
||||
str r1, [r0, #0x8]
|
||||
ldr r1, [r0, #0xc]
|
||||
add r1, r1, #0x1
|
||||
str r1, [r0, #0xc]
|
||||
mov r0, #0x1
|
||||
bx lr
|
||||
_020A85B8:
|
||||
ldr r1, _020A85D8 ; =OS_IrqHandler
|
||||
cmp r2, r1
|
||||
ldreq r1, [r0, #0xc]
|
||||
addeq r1, r1, #0x1
|
||||
streq r1, [r0, #0xc]
|
||||
moveq r0, #0x1
|
||||
movne r0, #0x0
|
||||
bx lr
|
||||
.balign 4
|
||||
_020A85D8: .word OS_IrqHandler
|
||||
|
||||
arm_func_start WcmCpsifKACallback
|
||||
WcmCpsifKACallback: ; 0x020A85DC
|
||||
ldr ip, _020A85E8 ; =WcmCpsifUnlockMutexInIRQ
|
||||
ldr r0, _020A85EC ; =wcmCpsifw+0xC
|
||||
bx r12
|
||||
.balign 4
|
||||
_020A85E8: .word WcmCpsifUnlockMutexInIRQ
|
||||
_020A85EC: .word wcmCpsifw+0xC
|
||||
|
||||
arm_func_start WcmCpsifWmCallback
|
||||
WcmCpsifWmCallback: ; 0x020A85F0
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0x4
|
||||
ldrh r1, [r0, #0x0]
|
||||
cmp r1, #0x12
|
||||
addne sp, sp, #0x4
|
||||
ldmneia sp!, {lr}
|
||||
bxne lr
|
||||
ldrh r2, [r0, #0x2]
|
||||
ldr r1, _020A863C ; =wcmCpsifw
|
||||
str r2, [r1, #0x24]
|
||||
ldrh r0, [r0, #0x2]
|
||||
cmp r0, #0x0
|
||||
bne _020A8628
|
||||
bl WCMi_ResetKeepAliveAlarm
|
||||
_020A8628:
|
||||
ldr r0, _020A8640 ; =wcmCpsifw+0x4
|
||||
bl OS_WakeupThread
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020A863C: .word wcmCpsifw
|
||||
_020A8640: .word wcmCpsifw+0x4
|
||||
|
||||
arm_func_start WCM_SendDCFData
|
||||
WCM_SendDCFData: ; 0x020A8644
|
||||
stmdb sp!, {r4-r8,lr}
|
||||
mov r8, r0
|
||||
mov r7, r1
|
||||
mov r6, r2
|
||||
bl OS_DisableInterrupts
|
||||
mov r5, r0
|
||||
bl WCMi_GetSystemWork
|
||||
cmp r0, #0x0
|
||||
bne _020A867C
|
||||
mov r0, r5
|
||||
bl OS_RestoreInterrupts
|
||||
mvn r0, #0x0
|
||||
ldmia sp!, {r4-r8,lr}
|
||||
bx lr
|
||||
_020A867C:
|
||||
ldr r0, _020A87AC ; =wcmCpsifw+0xC
|
||||
bl OS_LockMutex
|
||||
bl WCMi_GetSystemWork
|
||||
movs r4, r0
|
||||
bne _020A86AC
|
||||
ldr r0, _020A87AC ; =wcmCpsifw+0xC
|
||||
bl OS_UnlockMutex
|
||||
mov r0, r5
|
||||
bl OS_RestoreInterrupts
|
||||
mvn r0, #0x0
|
||||
ldmia sp!, {r4-r8,lr}
|
||||
bx lr
|
||||
_020A86AC:
|
||||
add r0, r4, #0x2000
|
||||
ldr r1, [r0, #0x260]
|
||||
cmp r1, #0x9
|
||||
bne _020A86C8
|
||||
ldrb r0, [r0, #0x26b]
|
||||
cmp r0, #0x1
|
||||
bne _020A86E4
|
||||
_020A86C8:
|
||||
ldr r0, _020A87AC ; =wcmCpsifw+0xC
|
||||
bl OS_UnlockMutex
|
||||
mov r0, r5
|
||||
bl OS_RestoreInterrupts
|
||||
mvn r0, #0x3
|
||||
ldmia sp!, {r4-r8,lr}
|
||||
bx lr
|
||||
_020A86E4:
|
||||
mov r0, r7
|
||||
mov r2, r6
|
||||
add r1, r4, #0xf00
|
||||
bl MI_CpuCopy8
|
||||
mov r3, r6, lsl #0x10
|
||||
ldr r0, _020A87B0 ; =WcmCpsifWmCallback
|
||||
mov r1, r8
|
||||
add r2, r4, #0xf00
|
||||
mov r3, r3, lsr #0x10
|
||||
bl WM_SetDCFData
|
||||
cmp r0, #0x8
|
||||
addls pc, pc, r0, lsl #0x2
|
||||
b _020A873C
|
||||
_020A8718: ; jump table
|
||||
b _020A873C ; case 0
|
||||
b _020A873C ; case 1
|
||||
b _020A8758 ; case 2
|
||||
b _020A873C ; case 3
|
||||
b _020A873C ; case 4
|
||||
b _020A873C ; case 5
|
||||
b _020A873C ; case 6
|
||||
b _020A873C ; case 7
|
||||
b _020A873C ; case 8
|
||||
_020A873C:
|
||||
ldr r0, _020A87AC ; =wcmCpsifw+0xC
|
||||
bl OS_UnlockMutex
|
||||
mov r0, r5
|
||||
bl OS_RestoreInterrupts
|
||||
mvn r0, #0x4
|
||||
ldmia sp!, {r4-r8,lr}
|
||||
bx lr
|
||||
_020A8758:
|
||||
ldr r0, _020A87B4 ; =wcmCpsifw+0x4
|
||||
bl OS_SleepThread
|
||||
ldr r0, _020A87B8 ; =wcmCpsifw
|
||||
ldr r0, [r0, #0x24]
|
||||
cmp r0, #0x0
|
||||
beq _020A8790
|
||||
cmp r0, #0x1
|
||||
ldr r0, _020A87AC ; =wcmCpsifw+0xC
|
||||
bl OS_UnlockMutex
|
||||
mov r0, r5
|
||||
bl OS_RestoreInterrupts
|
||||
mvn r0, #0x4
|
||||
ldmia sp!, {r4-r8,lr}
|
||||
bx lr
|
||||
_020A8790:
|
||||
ldr r0, _020A87AC ; =wcmCpsifw+0xC
|
||||
bl OS_UnlockMutex
|
||||
mov r0, r5
|
||||
bl OS_RestoreInterrupts
|
||||
mov r0, r6
|
||||
ldmia sp!, {r4-r8,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020A87AC: .word wcmCpsifw+0xC
|
||||
_020A87B0: .word WcmCpsifWmCallback
|
||||
_020A87B4: .word wcmCpsifw+0x4
|
||||
_020A87B8: .word wcmCpsifw
|
||||
|
||||
arm_func_start WCM_SetRecvDCFCallback
|
||||
WCM_SetRecvDCFCallback: ; 0x020A87BC
|
||||
stmdb sp!, {r4,lr}
|
||||
mov r4, r0
|
||||
bl OS_DisableInterrupts
|
||||
ldr r1, _020A87DC ; =wcmCpsifw
|
||||
str r4, [r1, #0x28]
|
||||
bl OS_RestoreInterrupts
|
||||
ldmia sp!, {r4,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020A87DC: .word wcmCpsifw
|
||||
|
||||
arm_func_start WCM_GetApEssid
|
||||
WCM_GetApEssid: ; 0x020A87E0
|
||||
stmdb sp!, {r4-r7,lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r7, #0x0
|
||||
mov r4, r0
|
||||
mov r6, r7
|
||||
bl WCMi_GetSystemWork
|
||||
mov r5, r0
|
||||
bl OS_DisableInterrupts
|
||||
cmp r5, #0x0
|
||||
beq _020A8830
|
||||
add r1, r5, #0x2000
|
||||
ldr r2, [r1, #0x260]
|
||||
cmp r2, #0x9
|
||||
bne _020A8830
|
||||
ldrb r1, [r1, #0x26b]
|
||||
cmp r1, #0x0
|
||||
addeq r2, r5, #0x2100
|
||||
ldreq r1, _020A884C ; =0x0000214C
|
||||
ldreqh r6, [r2, #0x4a]
|
||||
addeq r7, r5, r1
|
||||
_020A8830:
|
||||
bl OS_RestoreInterrupts
|
||||
cmp r4, #0x0
|
||||
strneh r6, [r4, #0x0]
|
||||
mov r0, r7
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r7,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020A884C: .word 0x0000214C
|
||||
|
||||
arm_func_start WCM_GetApMacAddress
|
||||
WCM_GetApMacAddress:
|
||||
stmdb sp!, {r4-r5,lr}
|
||||
sub sp, sp, #0x4
|
||||
mov r5, #0x0
|
||||
bl WCMi_GetSystemWork
|
||||
mov r4, r0
|
||||
bl OS_DisableInterrupts
|
||||
cmp r4, #0x0
|
||||
beq _020A8890
|
||||
add r1, r4, #0x2000
|
||||
ldr r2, [r1, #0x260]
|
||||
cmp r2, #0x9
|
||||
bne _020A8890
|
||||
ldrb r1, [r1, #0x26b]
|
||||
cmp r1, #0x0
|
||||
ldreq r1, _020A88A4 ; =0x00002144
|
||||
addeq r5, r4, r1
|
||||
_020A8890:
|
||||
bl OS_RestoreInterrupts
|
||||
mov r0, r5
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r5,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020A88A4: .word 0x00002144
|
||||
|
||||
arm_func_start WCMi_CpsifSendNullPacket
|
||||
WCMi_CpsifSendNullPacket: ; 0x020A88A8
|
||||
stmdb sp!, {r4,lr}
|
||||
bl WCMi_GetSystemWork
|
||||
movs r4, r0
|
||||
ldmeqia sp!, {r4,lr}
|
||||
bxeq lr
|
||||
add r0, r4, #0x2000
|
||||
ldr r1, [r0, #0x260]
|
||||
cmp r1, #0x9
|
||||
ldmneia sp!, {r4,lr}
|
||||
bxne lr
|
||||
ldrb r0, [r0, #0x26b]
|
||||
cmp r0, #0x1
|
||||
ldmeqia sp!, {r4,lr}
|
||||
bxeq lr
|
||||
ldr r0, _020A8928 ; =wcmCpsifw+0xC
|
||||
bl WcmCpsifTryLockMutexInIRQ
|
||||
cmp r0, #0x0
|
||||
ldmeqia sp!, {r4,lr}
|
||||
bxeq lr
|
||||
ldr r1, _020A892C ; =0x00002144
|
||||
ldr r0, _020A8930 ; =WcmCpsifKACallback
|
||||
add r1, r4, r1
|
||||
add r2, r4, #0xf00
|
||||
mov r3, #0x0
|
||||
bl WM_SetDCFData
|
||||
cmp r0, #0x2
|
||||
ldmeqia sp!, {r4,lr}
|
||||
bxeq lr
|
||||
ldr r0, _020A8928 ; =wcmCpsifw+0xC
|
||||
bl WcmCpsifUnlockMutexInIRQ
|
||||
ldmia sp!, {r4,lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020A8928: .word wcmCpsifw+0xC
|
||||
_020A892C: .word 0x00002144
|
||||
_020A8930: .word WcmCpsifKACallback
|
||||
|
||||
arm_func_start WCMi_CpsifRecvCallback
|
||||
WCMi_CpsifRecvCallback: ; 0x020A8934
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0x4
|
||||
ldr r1, _020A8978 ; =wcmCpsifw
|
||||
mov r2, r0
|
||||
ldr r12, [r1, #0x28]
|
||||
cmp r12, #0x0
|
||||
addeq sp, sp, #0x4
|
||||
ldmeqia sp!, {lr}
|
||||
bxeq lr
|
||||
ldrh r3, [r2, #0x6]
|
||||
add r0, r2, #0x1e
|
||||
add r1, r2, #0x18
|
||||
add r2, r2, #0x2c
|
||||
blx r12
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020A8978: .word wcmCpsifw
|
||||
|
||||
arm_func_start WCMi_InitCpsif
|
||||
WCMi_InitCpsif: ; 0x020A897C
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0x4
|
||||
ldr r1, _020A89C8 ; =wcmCpsifw
|
||||
ldrb r0, [r1, #0x0]
|
||||
cmp r0, #0x0
|
||||
addne sp, sp, #0x4
|
||||
ldmneia sp!, {lr}
|
||||
bxne lr
|
||||
ldr r0, _020A89CC ; =wcmCpsifw+0xC
|
||||
mov r2, #0x0
|
||||
mov r3, #0x1
|
||||
strb r3, [r1, #0x0]
|
||||
str r2, [r1, #0x24]
|
||||
str r2, [r1, #0x8]
|
||||
str r2, [r1, #0x4]
|
||||
bl OS_InitMutex
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020A89C8: .word wcmCpsifw
|
||||
_020A89CC: .word wcmCpsifw+0xC
|
||||
2748
arm9/asm/WCM_system.s
Normal file
2748
arm9/asm/WCM_system.s
Normal file
File diff suppressed because it is too large
Load Diff
156
arm9/asm/WCM_util.s
Normal file
156
arm9/asm/WCM_util.s
Normal file
@@ -0,0 +1,156 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.bss
|
||||
|
||||
.global wcmRssiIndex
|
||||
wcmRssiIndex: ; 0x021CA89C
|
||||
.space 0x4
|
||||
|
||||
.global wcmRssi
|
||||
wcmRssi: ; 0x021CA8A0
|
||||
.space 0x10
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start WCMi_ShelterRssi
|
||||
WCMi_ShelterRssi: ; 0x020A89D0
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0x4
|
||||
ldr r2, _020A8A48 ; =wcmRssiIndex
|
||||
ands r1, r0, #0x2
|
||||
ldrb r12, [r2, #0x0]
|
||||
movne r0, r0, asr #0x2
|
||||
andne lr, r0, #0xff
|
||||
moveq r0, r0, asr #0x2
|
||||
addeq r0, r0, #0x19
|
||||
andeq lr, r0, #0xff
|
||||
mov r1, r12, lsr #0x1f
|
||||
rsb r0, r1, r12, lsl #0x1c
|
||||
cmp r12, #0x10
|
||||
ldr r3, _020A8A4C ; =wcmRssi
|
||||
add r0, r1, r0, ror #0x1c
|
||||
strb lr, [r3, r0]
|
||||
addcc r0, r12, #0x1
|
||||
strccb r0, [r2, #0x0]
|
||||
addcc sp, sp, #0x4
|
||||
ldmccia sp!, {lr}
|
||||
bxcc lr
|
||||
add r0, r12, #0x1
|
||||
mov r1, r0, lsr #0x1f
|
||||
rsb r0, r1, r0, lsl #0x1c
|
||||
add r0, r1, r0, ror #0x1c
|
||||
add r0, r0, #0x10
|
||||
strb r0, [r2, #0x0]
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020A8A48: .word wcmRssiIndex
|
||||
_020A8A4C: .word wcmRssi
|
||||
|
||||
arm_func_start WcmGetLinkLevel
|
||||
WcmGetLinkLevel: ; 0x020A8A50
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0x4
|
||||
bl WCMi_GetRssiAverage
|
||||
mov r1, #0x0
|
||||
cmp r0, #0x1c
|
||||
movcs r1, #0x3
|
||||
bhs _020A8A80
|
||||
cmp r0, #0x16
|
||||
movcs r1, #0x2
|
||||
bhs _020A8A80
|
||||
cmp r0, #0x10
|
||||
movcs r1, #0x1
|
||||
_020A8A80:
|
||||
mov r0, r1
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start WCMi_GetRssiAverage
|
||||
WCMi_GetRssiAverage: ; 0x020A8A90
|
||||
stmdb sp!, {lr}
|
||||
sub sp, sp, #0x4
|
||||
ldr r1, _020A8B20 ; =wcmRssiIndex
|
||||
mov r0, #0x0
|
||||
ldrb r1, [r1, #0x0]
|
||||
cmp r1, #0x10
|
||||
bls _020A8ADC
|
||||
ldr r2, _020A8B24 ; =wcmRssi
|
||||
mov r3, r0
|
||||
_020A8AB4:
|
||||
ldrb r1, [r2, #0x0]
|
||||
add r3, r3, #0x1
|
||||
cmp r3, #0x10
|
||||
add r0, r0, r1
|
||||
add r2, r2, #0x1
|
||||
blt _020A8AB4
|
||||
mov r1, r0, asr #0x3
|
||||
add r0, r0, r1, lsr #0x1c
|
||||
mov r0, r0, asr #0x4
|
||||
b _020A8B10
|
||||
_020A8ADC:
|
||||
cmp r1, #0x0
|
||||
beq _020A8B10
|
||||
mov r3, r0
|
||||
cmp r1, #0x0
|
||||
ble _020A8B0C
|
||||
ldr ip, _020A8B24 ; =wcmRssi
|
||||
_020A8AF4:
|
||||
ldrb r2, [r12, #0x0]
|
||||
add r3, r3, #0x1
|
||||
cmp r3, r1
|
||||
add r0, r0, r2
|
||||
add r12, r12, #0x1
|
||||
blt _020A8AF4
|
||||
_020A8B0C:
|
||||
bl _s32_div_f
|
||||
_020A8B10:
|
||||
and r0, r0, #0xff
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {lr}
|
||||
bx lr
|
||||
.balign 4
|
||||
_020A8B20: .word wcmRssiIndex
|
||||
_020A8B24: .word wcmRssi
|
||||
|
||||
arm_func_start WCM_GetLinkLevel
|
||||
WCM_GetLinkLevel: ; 0x020A8B28
|
||||
stmdb sp!, {r4-r5,lr}
|
||||
sub sp, sp, #0x4
|
||||
bl OS_DisableInterrupts
|
||||
mov r5, r0
|
||||
bl WCMi_GetSystemWork
|
||||
cmp r0, #0x0
|
||||
mov r4, #0x0
|
||||
beq _020A8B60
|
||||
add r0, r0, #0x2000
|
||||
ldr r0, [r0, #0x260]
|
||||
cmp r0, #0x9
|
||||
bne _020A8B60
|
||||
bl WcmGetLinkLevel
|
||||
mov r4, r0
|
||||
_020A8B60:
|
||||
mov r0, r5
|
||||
bl OS_RestoreInterrupts
|
||||
mov r0, r4
|
||||
add sp, sp, #0x4
|
||||
ldmia sp!, {r4-r5,lr}
|
||||
bx lr
|
||||
|
||||
arm_func_start WCM_CompareBssID
|
||||
WCM_CompareBssID:
|
||||
mov r12, #0x0
|
||||
_020A8B7C:
|
||||
ldrb r3, [r0, r12]
|
||||
ldrb r2, [r1, r12]
|
||||
cmp r3, r2
|
||||
movne r0, #0x0
|
||||
bxne lr
|
||||
add r12, r12, #0x1
|
||||
cmp r12, #0x6
|
||||
blt _020A8B7C
|
||||
mov r0, #0x1
|
||||
bx lr
|
||||
25
arm9/asm/WIFI_stubsmd5_dummy.s
Normal file
25
arm9/asm/WIFI_stubsmd5_dummy.s
Normal file
@@ -0,0 +1,25 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "global.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start MD5Final
|
||||
MD5Final: ; 0x020A8BA4
|
||||
ldr ip, _020A8BAC ; =DGT_Hash1GetDigest_R
|
||||
bx r12
|
||||
.balign 4
|
||||
_020A8BAC: .word DGT_Hash1GetDigest_R
|
||||
|
||||
arm_func_start MD5Update
|
||||
MD5Update: ; 0x020A8BB0
|
||||
ldr ip, _020A8BB8 ; =DGT_Hash1SetSource
|
||||
bx r12
|
||||
.balign 4
|
||||
_020A8BB8: .word DGT_Hash1SetSource
|
||||
|
||||
arm_func_start MD5Init
|
||||
MD5Init: ; 0x020A8BBC
|
||||
ldr ip, _020A8BC4 ; =DGT_Hash1Reset
|
||||
bx r12
|
||||
.balign 4
|
||||
_020A8BC4: .word DGT_Hash1Reset
|
||||
6020
arm9/asm/libVCT.s
Normal file
6020
arm9/asm/libVCT.s
Normal file
File diff suppressed because it is too large
Load Diff
228
arm9/asm/libc.s
228
arm9/asm/libc.s
@@ -630,7 +630,6 @@ __exit: ; 0x020DE1BC
|
||||
stmdb sp!, {r3-r5,lr}
|
||||
ldr r0, _020DE2CC ; =UNK_021D70D0
|
||||
bl OS_TryLockMutex
|
||||
_020DE1C8: ; 0x020DE1C8
|
||||
cmp r0, #0x0
|
||||
bne _020DE1F4
|
||||
ldr r0, _020DE2D0 ; =OSi_ThreadInfo
|
||||
@@ -746,7 +745,6 @@ _020DE31C:
|
||||
cmp r1, #0x1
|
||||
bne _020DE35C
|
||||
bl fflush
|
||||
_020DE354: ; 0x020DE354
|
||||
cmp r0, #0x0
|
||||
movne r4, r9
|
||||
_020DE35C:
|
||||
@@ -780,7 +778,6 @@ _020DE3A8:
|
||||
movs r1, r1, lsr #0x1d
|
||||
beq _020DE3C4
|
||||
bl fflush
|
||||
_020DE3BC: ; 0x020DE3BC
|
||||
cmp r0, #0x0
|
||||
movne r4, r9
|
||||
_020DE3C4:
|
||||
@@ -870,7 +867,6 @@ __load_buffer:
|
||||
strne r1, [r6, #0x0]
|
||||
cmp r0, #0x0
|
||||
ldmneia sp!, {r4-r6,pc}
|
||||
_020DE4C8: ; 0x020DE4C8
|
||||
ldr r1, [r4, #0x18]
|
||||
ldr r0, [r4, #0x28]
|
||||
add r0, r1, r0
|
||||
@@ -915,7 +911,6 @@ _020DE538:
|
||||
strne r1, [r4, #0x0]
|
||||
cmp r0, #0x0
|
||||
ldmneia sp!, {r3-r5,pc}
|
||||
_020DE564: ; 0x020DE564
|
||||
ldr r1, [r5, #0x18]
|
||||
ldr r0, [r5, #0x28]
|
||||
add r0, r1, r0
|
||||
@@ -923,7 +918,6 @@ _020DE564: ; 0x020DE564
|
||||
_020DE574:
|
||||
mov r0, r5
|
||||
bl __prep_buffer
|
||||
_020DE57C: ; 0x020DE57C
|
||||
mov r0, #0x0
|
||||
ldmia sp!, {r3-r5,pc}
|
||||
|
||||
@@ -943,7 +937,6 @@ fread: ; 0x020DE584
|
||||
add r0, r5, r4
|
||||
mov r8, r2
|
||||
bl OS_TryLockMutex
|
||||
_020DE5BC: ; 0x020DE5BC
|
||||
cmp r0, #0x0
|
||||
bne _020DE5E8
|
||||
ldr r0, _020DE684 ; =OSi_ThreadInfo
|
||||
@@ -1014,7 +1007,6 @@ __fread: ; 0x020DE690
|
||||
mov r1, #0x0
|
||||
mov r4, r2
|
||||
bl fwide
|
||||
_020DE6B4: ; 0x020DE6B4
|
||||
cmp r0, #0x0
|
||||
bne _020DE6C8
|
||||
mov r0, r7
|
||||
@@ -1075,7 +1067,6 @@ _020DE778:
|
||||
tst r0, #0x1
|
||||
beq _020DE7B0
|
||||
bl __flush_line_buffered_output_files
|
||||
_020DE790: ; 0x020DE790
|
||||
cmp r0, #0x0
|
||||
beq _020DE7B0
|
||||
mov r0, #0x1
|
||||
@@ -1154,7 +1145,6 @@ _020DE890:
|
||||
mov r1, r10
|
||||
mov r2, r10
|
||||
bl __load_buffer
|
||||
_020DE8AC: ; 0x020DE8AC
|
||||
cmp r0, #0x0
|
||||
beq _020DE8E4
|
||||
cmp r0, #0x1
|
||||
@@ -1205,7 +1195,6 @@ _020DE938:
|
||||
mov r2, #0x1
|
||||
str r4, [r7, #0x20]
|
||||
bl __load_buffer
|
||||
_020DE968: ; 0x020DE968
|
||||
cmp r0, #0x0
|
||||
beq _020DE9A4
|
||||
cmp r0, #0x1
|
||||
@@ -1229,7 +1218,6 @@ _020DE9A4:
|
||||
str r10, [r7, #0x20]
|
||||
add r5, r5, r1
|
||||
bl __prep_buffer
|
||||
_020DE9BC: ; 0x020DE9BC
|
||||
mov r0, #0x0
|
||||
str r0, [r7, #0x28]
|
||||
_020DE9C4:
|
||||
@@ -1250,7 +1238,6 @@ __fwrite:
|
||||
mov r1, #0x0
|
||||
mov r4, r2
|
||||
bl fwide
|
||||
_020DE9FC: ; 0x020DE9FC
|
||||
cmp r0, #0x0
|
||||
bne _020DEA10
|
||||
mov r0, r9
|
||||
@@ -1373,7 +1360,6 @@ _020DEBB4:
|
||||
mov r0, r9
|
||||
mov r1, #0x0
|
||||
bl __flush_buffer
|
||||
_020DEBC0: ; 0x020DEBC0
|
||||
cmp r0, #0x0
|
||||
beq _020DEBDC
|
||||
mov r0, #0x1
|
||||
@@ -1401,7 +1387,6 @@ _020DEBF0:
|
||||
mov r0, r9
|
||||
str r2, [r9, #0x24]
|
||||
bl __flush_buffer
|
||||
_020DEC24: ; 0x020DEC24
|
||||
cmp r0, #0x0
|
||||
ldreq r0, [sp, #0x4]
|
||||
addeq r6, r6, r0
|
||||
@@ -1415,7 +1400,6 @@ _020DEC44:
|
||||
mov r0, r9
|
||||
str r7, [r9, #0x20]
|
||||
bl __prep_buffer
|
||||
_020DEC54: ; 0x020DEC54
|
||||
mov r0, #0x0
|
||||
str r0, [r9, #0x28]
|
||||
_020DEC5C:
|
||||
@@ -1437,13 +1421,11 @@ fclose: ; 0x020DEC88
|
||||
movs r5, r0
|
||||
mvneq r0, #0x0
|
||||
ldmeqia sp!, {r3-r5,pc}
|
||||
_020DEC98: ; 0x020DEC98
|
||||
ldr r1, [r5, #0x4]
|
||||
mov r1, r1, lsl #0x16
|
||||
movs r1, r1, lsr #0x1d
|
||||
moveq r0, #0x0
|
||||
ldmeqia sp!, {r3-r5,pc}
|
||||
_020DECAC: ; 0x020DECAC
|
||||
bl fflush
|
||||
mov r4, r0
|
||||
ldr r0, [r5, #0x0]
|
||||
@@ -1459,7 +1441,6 @@ _020DECAC: ; 0x020DECAC
|
||||
movs r1, r1, lsr #0x1f
|
||||
subne r0, r2, #0x1
|
||||
ldmneia sp!, {r3-r5,pc}
|
||||
_020DECE8: ; 0x020DECE8
|
||||
cmp r4, #0x0
|
||||
cmpeq r0, #0x0
|
||||
movne r2, #0x1
|
||||
@@ -1490,7 +1471,6 @@ _020DED34:
|
||||
cmp r0, #0x1
|
||||
moveq r0, #0x0
|
||||
ldmeqia sp!, {r4,pc}
|
||||
_020DED48: ; 0x020DED48
|
||||
ldr r0, [r4, #0x8]
|
||||
mov r1, r0, lsl #0x1d
|
||||
mov r1, r1, lsr #0x1d
|
||||
@@ -1517,7 +1497,6 @@ _020DEDA0:
|
||||
mov r0, r4
|
||||
mov r1, #0x0
|
||||
bl __flush_buffer
|
||||
_020DEDAC: ; 0x020DEDAC
|
||||
cmp r0, #0x0
|
||||
mov r0, #0x0
|
||||
beq _020DEDCC
|
||||
@@ -1593,7 +1572,6 @@ _020DEE98:
|
||||
ldr r5, _020DEF6C ; =UNK_021D70D0
|
||||
add r0, r5, r4
|
||||
bl OS_TryLockMutex
|
||||
_020DEEAC: ; 0x020DEEAC
|
||||
cmp r0, #0x0
|
||||
bne _020DEED8
|
||||
ldr r0, _020DEF70 ; =OSi_ThreadInfo
|
||||
@@ -1681,7 +1659,6 @@ _020DEFC8:
|
||||
bne _020DF018
|
||||
mov r1, #0x0
|
||||
bl __flush_buffer
|
||||
_020DEFE4: ; 0x020DEFE4
|
||||
cmp r0, #0x0
|
||||
beq _020DF018
|
||||
mov r0, #0x1
|
||||
@@ -1812,7 +1789,6 @@ _020DF1A4:
|
||||
ldr r5, _020DF280 ; =UNK_021D70D0
|
||||
add r0, r5, r4
|
||||
bl OS_TryLockMutex
|
||||
_020DF1B8: ; 0x020DF1B8
|
||||
cmp r0, #0x0
|
||||
bne _020DF1E4
|
||||
ldr r0, _020DF284 ; =OSi_ThreadInfo
|
||||
@@ -1881,7 +1857,6 @@ rewind: ; 0x020DF290
|
||||
mov r2, r1
|
||||
strb r1, [r4, #0xd]
|
||||
bl fseek
|
||||
_020DF2A8: ; 0x020DF2A8
|
||||
mov r0, #0x0
|
||||
strb r0, [r4, #0xd]
|
||||
ldmia sp!, {r4,pc}
|
||||
@@ -1955,7 +1930,6 @@ _020DF368:
|
||||
mov r1, r7
|
||||
mov r2, r5
|
||||
bl mbtowc
|
||||
_020DF384: ; 0x020DF384
|
||||
cmp r0, #0x0
|
||||
add r8, r8, #0x2
|
||||
addgt r7, r7, r0
|
||||
@@ -1985,7 +1959,6 @@ wcstombs:
|
||||
mov r7, #0x0
|
||||
moveq r0, #0x0
|
||||
ldmeqia sp!, {r3-r9,pc}
|
||||
_020DF3E0: ; 0x020DF3E0
|
||||
add r6, sp, #0x0
|
||||
_020DF3E4:
|
||||
ldrh r1, [r9, #0x0]
|
||||
@@ -2416,19 +2389,12 @@ _020DF920:
|
||||
subs r0, r3, #0x41
|
||||
addpl pc, pc, r0, lsl #0x2
|
||||
b _020DFB68
|
||||
_020DF94C: ; 0x020DF94C
|
||||
b _020DFA5C
|
||||
_020DF950: ; 0x020DF950
|
||||
b _020DFB68
|
||||
_020DF954: ; 0x020DF954
|
||||
b _020DFB68
|
||||
_020DF958: ; 0x020DF958
|
||||
b _020DFB68
|
||||
_020DF95C: ; 0x020DF95C
|
||||
b _020DFAA4
|
||||
_020DF960: ; 0x020DF960
|
||||
b _020DFA24
|
||||
_020DF964: ; 0x020DF964
|
||||
b _020DFA94
|
||||
_020DF968:
|
||||
cmp r3, #0x58
|
||||
@@ -3325,7 +3291,6 @@ _020E05C0:
|
||||
ldrb lr, [r0, #0x4]
|
||||
cmp r1, lr
|
||||
ldmgeia sp!, {r4,pc}
|
||||
_020E05CC: ; 0x020E05CC
|
||||
add r12, r0, #0x5
|
||||
add r2, r12, r1
|
||||
add r2, r2, #0x1
|
||||
@@ -3991,19 +3956,12 @@ _020E0ED4:
|
||||
subs r0, r1, #0x41
|
||||
addpl pc, pc, r0, lsl #0x2
|
||||
b _020E0F28
|
||||
_020E0F0C: ; 0x020E0F0C
|
||||
b _020E12A4
|
||||
_020E0F10: ; 0x020E0F10
|
||||
b _020E148C
|
||||
_020E0F14: ; 0x020E0F14
|
||||
b _020E148C
|
||||
_020E0F18: ; 0x020E0F18
|
||||
b _020E148C
|
||||
_020E0F1C: ; 0x020E0F1C
|
||||
b _020E123C
|
||||
_020E0F20: ; 0x020E0F20
|
||||
b _020E123C
|
||||
_020E0F24: ; 0x020E0F24
|
||||
b _020E123C
|
||||
_020E0F28:
|
||||
cmp r1, #0x25
|
||||
@@ -4019,41 +3977,23 @@ _020E0F40:
|
||||
subs r0, r1, #0x64
|
||||
addpl pc, pc, r0, lsl #0x2
|
||||
b _020E0F9C
|
||||
_020E0F54: ; 0x020E0F54
|
||||
b _020E0FC0
|
||||
_020E0F58: ; 0x020E0F58
|
||||
b _020E123C
|
||||
_020E0F5C: ; 0x020E0F5C
|
||||
b _020E123C
|
||||
_020E0F60: ; 0x020E0F60
|
||||
b _020E123C
|
||||
_020E0F64: ; 0x020E0F64
|
||||
b _020E148C
|
||||
_020E0F68: ; 0x020E0F68
|
||||
b _020E0FC0
|
||||
_020E0F6C: ; 0x020E0F6C
|
||||
b _020E148C
|
||||
_020E0F70: ; 0x020E0F70
|
||||
b _020E148C
|
||||
_020E0F74: ; 0x020E0F74
|
||||
b _020E148C
|
||||
_020E0F78: ; 0x020E0F78
|
||||
b _020E148C
|
||||
_020E0F7C: ; 0x020E0F7C
|
||||
b _020E13CC
|
||||
_020E0F80: ; 0x020E0F80
|
||||
b _020E1100
|
||||
_020E0F84: ; 0x020E0F84
|
||||
b _020E148C
|
||||
_020E0F88: ; 0x020E0F88
|
||||
b _020E148C
|
||||
_020E0F8C: ; 0x020E0F8C
|
||||
b _020E148C
|
||||
_020E0F90: ; 0x020E0F90
|
||||
b _020E130C
|
||||
_020E0F94: ; 0x020E0F94
|
||||
b _020E148C
|
||||
_020E0F98: ; 0x020E0F98
|
||||
b _020E1100
|
||||
_020E0F9C:
|
||||
cmp r1, #0x63
|
||||
@@ -4313,7 +4253,6 @@ _020E130C:
|
||||
cmp r1, #0x0
|
||||
ldreq r1, _020E163C ; =UNK_02106DD8
|
||||
bl wcstombs
|
||||
_020E133C: ; 0x020E133C
|
||||
cmp r0, #0x0
|
||||
blt _020E148C
|
||||
add r7, sp, #0x2c
|
||||
@@ -4346,7 +4285,6 @@ _020E1390:
|
||||
mov r2, r6
|
||||
mov r1, #0x0
|
||||
bl memchr
|
||||
_020E13B0: ; 0x020E13B0
|
||||
cmp r0, #0x0
|
||||
subne r6, r0, r7
|
||||
b _020E14D8
|
||||
@@ -4554,7 +4492,6 @@ __FileWrite: ; 0x020E1644
|
||||
mov r1, #0x1
|
||||
mov r4, r2
|
||||
bl __fwrite
|
||||
_020E1660: ; 0x020E1660
|
||||
cmp r4, r0
|
||||
movne r5, #0x0
|
||||
mov r0, r5
|
||||
@@ -4587,7 +4524,6 @@ printf: ; 0x020E16B4
|
||||
ldr r0, _020E17B4 ; =UNK_02106AA4
|
||||
mvn r1, #0x0
|
||||
bl fwide
|
||||
_020E16C8: ; 0x020E16C8
|
||||
cmp r0, #0x0
|
||||
mvnge r0, #0x0
|
||||
ldmgeia sp!, {r4,lr}
|
||||
@@ -4595,7 +4531,6 @@ _020E16C8: ; 0x020E16C8
|
||||
bxge lr
|
||||
ldr r0, _020E17B8 ; =UNK_021D7118
|
||||
bl OS_TryLockMutex
|
||||
_020E16E4: ; 0x020E16E4
|
||||
cmp r0, #0x0
|
||||
bne _020E1710
|
||||
ldr r0, _020E17BC ; =OSi_ThreadInfo
|
||||
@@ -4673,17 +4608,14 @@ vsnprintf: ; 0x020E17CC
|
||||
str r4, [sp, #0x4]
|
||||
str r12, [sp, #0x8]
|
||||
bl __pformatter
|
||||
_020E17F8: ; 0x020E17F8
|
||||
cmp r5, #0x0
|
||||
addeq sp, sp, #0xc
|
||||
ldmeqia sp!, {r4-r5,pc}
|
||||
_020E1804: ; 0x020E1804
|
||||
cmp r0, r4
|
||||
movcc r1, #0x0
|
||||
addcc sp, sp, #0xc
|
||||
strccb r1, [r5, r0]
|
||||
ldmccia sp!, {r4-r5,pc}
|
||||
_020E1818: ; 0x020E1818
|
||||
cmp r4, #0x0
|
||||
addne r1, r5, r4
|
||||
movne r2, #0x0
|
||||
@@ -4731,7 +4663,6 @@ qsort: ; 0x020E1888
|
||||
mov r7, r3
|
||||
addcc sp, sp, #0x10
|
||||
ldmccia sp!, {r3-r11,pc}
|
||||
_020E18AC: ; 0x020E18AC
|
||||
mov r0, r9, lsr #0x1
|
||||
add r11, r0, #0x1
|
||||
sub r0, r11, #0x1
|
||||
@@ -4774,7 +4705,6 @@ _020E1934:
|
||||
cmp r9, #0x1
|
||||
addeq sp, sp, #0x10
|
||||
ldmeqia sp!, {r3-r11,pc}
|
||||
_020E1944: ; 0x020E1944
|
||||
ldr r0, [sp, #0x8]
|
||||
sub r0, r0, r8
|
||||
str r0, [sp, #0x8]
|
||||
@@ -4820,7 +4750,6 @@ _020E19D8:
|
||||
cmp r9, r4, lsl #0x1
|
||||
bhs _020E196C
|
||||
b _020E18E0
|
||||
_020E19E4: ; 0x020E19E4
|
||||
add sp, sp, #0x10
|
||||
ldmia sp!, {r3-r11,pc}
|
||||
|
||||
@@ -5014,19 +4943,12 @@ _020E1C3C:
|
||||
subs r1, r0, #0x41
|
||||
addpl pc, pc, r1, lsl #0x2
|
||||
b _020E1EF0
|
||||
_020E1C68: ; 0x020E1C68
|
||||
b _020E1D1C
|
||||
_020E1C6C: ; 0x020E1C6C
|
||||
b _020E1EF0
|
||||
_020E1C70: ; 0x020E1C70
|
||||
b _020E1EF0
|
||||
_020E1C74: ; 0x020E1C74
|
||||
b _020E1EF0
|
||||
_020E1C78: ; 0x020E1C78
|
||||
b _020E1D1C
|
||||
_020E1C7C: ; 0x020E1C7C
|
||||
b _020E1D1C
|
||||
_020E1C80: ; 0x020E1C80
|
||||
b _020E1D1C
|
||||
_020E1C84:
|
||||
cmp r0, #0x58
|
||||
@@ -5410,19 +5332,12 @@ _020E2158:
|
||||
subs r0, r1, #0x41
|
||||
addpl pc, pc, r0, lsl #0x2
|
||||
b _020E2198
|
||||
_020E217C: ; 0x020E217C
|
||||
b _020E2600
|
||||
_020E2180: ; 0x020E2180
|
||||
b _020E2C3C
|
||||
_020E2184: ; 0x020E2184
|
||||
b _020E2C3C
|
||||
_020E2188: ; 0x020E2188
|
||||
b _020E2C3C
|
||||
_020E218C: ; 0x020E218C
|
||||
b _020E2600
|
||||
_020E2190: ; 0x020E2190
|
||||
b _020E2600
|
||||
_020E2194: ; 0x020E2194
|
||||
b _020E2600
|
||||
_020E2198:
|
||||
cmp r1, #0x25
|
||||
@@ -5438,49 +5353,27 @@ _020E21B0:
|
||||
subs r0, r1, #0x63
|
||||
addpl pc, pc, r0, lsl #0x2
|
||||
b _020E221C
|
||||
_020E21C4: ; 0x020E21C4
|
||||
b _020E26C4
|
||||
_020E21C8: ; 0x020E21C8
|
||||
b _020E2230
|
||||
_020E21CC: ; 0x020E21CC
|
||||
b _020E2600
|
||||
_020E21D0: ; 0x020E21D0
|
||||
b _020E2600
|
||||
_020E21D4: ; 0x020E21D4
|
||||
b _020E2600
|
||||
_020E21D8: ; 0x020E21D8
|
||||
b _020E2C3C
|
||||
_020E21DC: ; 0x020E21DC
|
||||
b _020E2238
|
||||
_020E21E0: ; 0x020E21E0
|
||||
b _020E2C3C
|
||||
_020E21E4: ; 0x020E21E4
|
||||
b _020E2C3C
|
||||
_020E21E8: ; 0x020E21E8
|
||||
b _020E2C3C
|
||||
_020E21EC: ; 0x020E21EC
|
||||
b _020E2C3C
|
||||
_020E21F0: ; 0x020E21F0
|
||||
b _020E2BC8
|
||||
_020E21F4: ; 0x020E21F4
|
||||
b _020E242C
|
||||
_020E21F8: ; 0x020E21F8
|
||||
b _020E2C3C
|
||||
_020E21FC: ; 0x020E21FC
|
||||
b _020E2C3C
|
||||
_020E2200: ; 0x020E2200
|
||||
b _020E2C3C
|
||||
_020E2204: ; 0x020E2204
|
||||
b _020E2908
|
||||
_020E2208: ; 0x020E2208
|
||||
b _020E2C3C
|
||||
_020E220C: ; 0x020E220C
|
||||
b _020E2434
|
||||
_020E2210: ; 0x020E2210
|
||||
b _020E2C3C
|
||||
_020E2214: ; 0x020E2214
|
||||
b _020E2C3C
|
||||
_020E2218: ; 0x020E2218
|
||||
b _020E243C
|
||||
_020E221C:
|
||||
cmp r1, #0x61
|
||||
@@ -5814,7 +5707,6 @@ _020E261C:
|
||||
ldr r0, _020E2C78 ; =UNK_02106B78
|
||||
ldr r0, [r0, #0x0]
|
||||
bl _f2d
|
||||
_020E2660: ; 0x020E2660
|
||||
b _020E2668
|
||||
_020E2664:
|
||||
add r4, r4, r2
|
||||
@@ -5831,7 +5723,6 @@ _020E2668:
|
||||
b _020E26A0
|
||||
_020E2690:
|
||||
bl _d2f
|
||||
_020E2694: ; 0x020E2694
|
||||
str r0, [r5, #0x0]
|
||||
b _020E26A0
|
||||
_020E269C:
|
||||
@@ -6371,7 +6262,6 @@ _020E2D94:
|
||||
_020E2D9C:
|
||||
ldr r0, _020E2E98 ; =UNK_021D7178
|
||||
bl OS_TryLockMutex
|
||||
_020E2DA4: ; 0x020E2DA4
|
||||
cmp r0, #0x0
|
||||
bne _020E2DD0
|
||||
ldr r0, _020E2E9C ; =OSi_ThreadInfo
|
||||
@@ -6472,7 +6362,6 @@ strcpy: ; 0x020E2EC8
|
||||
strb r3, [r0, #0x0]
|
||||
cmp r3, #0x0
|
||||
ldmeqia sp!, {r3-r5,pc}
|
||||
_020E2EF8: ; 0x020E2EF8
|
||||
rsbs r4, r4, #0x3
|
||||
beq _020E2F18
|
||||
_020E2F00:
|
||||
@@ -6480,7 +6369,6 @@ _020E2F00:
|
||||
cmp r3, #0x0
|
||||
strb r3, [r2, #0x1]!
|
||||
ldmeqia sp!, {r3-r5,pc}
|
||||
_020E2F10: ; 0x020E2F10
|
||||
subs r4, r4, #0x1
|
||||
bne _020E2F00
|
||||
_020E2F18:
|
||||
@@ -6535,7 +6423,6 @@ _020E2FA0:
|
||||
bne _020E2FD4
|
||||
subs r2, r2, #0x1
|
||||
ldmeqia sp!, {r3,pc}
|
||||
_020E2FC0: ; 0x020E2FC0
|
||||
mov r1, #0x0
|
||||
_020E2FC4:
|
||||
strb r1, [lr], #0x1
|
||||
@@ -6598,7 +6485,6 @@ strcmp: ; 0x020E3060
|
||||
subs r3, r2, r3
|
||||
movne r0, r3
|
||||
ldmneia sp!, {r4,pc}
|
||||
_020E3078: ; 0x020E3078
|
||||
and r4, r0, #0x3
|
||||
and r3, r1, #0x3
|
||||
cmp r3, r4
|
||||
@@ -6608,7 +6494,6 @@ _020E3078: ; 0x020E3078
|
||||
cmp r2, #0x0
|
||||
moveq r0, #0x0
|
||||
ldmeqia sp!, {r4,pc}
|
||||
_020E309C: ; 0x020E309C
|
||||
rsbs r4, r4, #0x3
|
||||
beq _020E30CC
|
||||
_020E30A4:
|
||||
@@ -6617,11 +6502,9 @@ _020E30A4:
|
||||
subs r2, r3, r2
|
||||
movne r0, r2
|
||||
ldmneia sp!, {r4,pc}
|
||||
_020E30B8: ; 0x020E30B8
|
||||
cmp r3, #0x0
|
||||
moveq r0, #0x0
|
||||
ldmeqia sp!, {r4,pc}
|
||||
_020E30C4: ; 0x020E30C4
|
||||
subs r4, r4, #0x1
|
||||
bne _020E30A4
|
||||
_020E30CC:
|
||||
@@ -6667,7 +6550,6 @@ _020E3148:
|
||||
subs r2, r3, r2
|
||||
movne r0, r2
|
||||
ldmneia sp!, {r4,pc}
|
||||
_020E315C: ; 0x020E315C
|
||||
cmp r3, #0x0
|
||||
bne _020E3148
|
||||
mov r0, #0x0
|
||||
@@ -6777,7 +6659,6 @@ strstr: ; 0x020E32A4
|
||||
ldrneb r2, [r1, #0x0]
|
||||
cmpne r2, #0x0
|
||||
ldmeqia sp!, {r4,pc}
|
||||
_020E32B8: ; 0x020E32B8
|
||||
ldrb r3, [r0, #0x0]
|
||||
add r4, r0, #0x1
|
||||
cmp r3, #0x0
|
||||
@@ -6888,23 +6769,14 @@ _020E3418:
|
||||
cmp r5, #0x0
|
||||
addge pc, pc, r5, lsl #0x2
|
||||
b _020E4104
|
||||
_020E3444: ; 0x020E3444
|
||||
b _020E4104
|
||||
_020E3448: ; 0x020E3448
|
||||
b _020E34D4
|
||||
_020E344C: ; 0x020E344C
|
||||
b _020E38B8
|
||||
_020E3450: ; 0x020E3450
|
||||
b _020E4104
|
||||
_020E3454: ; 0x020E3454
|
||||
b _020E3968
|
||||
_020E3458: ; 0x020E3458
|
||||
b _020E4104
|
||||
_020E345C: ; 0x020E345C
|
||||
b _020E4104
|
||||
_020E3460: ; 0x020E3460
|
||||
b _020E4104
|
||||
_020E3464: ; 0x020E3464
|
||||
b _020E3990
|
||||
_020E3468:
|
||||
cmp r5, #0x10
|
||||
@@ -7219,7 +7091,6 @@ _020E3854:
|
||||
mov r3, r1
|
||||
mov r1, r0
|
||||
bl _dsub
|
||||
_020E3884: ; 0x020E3884
|
||||
b _020E388C
|
||||
_020E3888:
|
||||
bl nan
|
||||
@@ -7533,23 +7404,14 @@ _020E3C98:
|
||||
cmp r10, #0x0
|
||||
addge pc, pc, r10, lsl #0x2
|
||||
b _020E4104
|
||||
_020E3CB8: ; 0x020E3CB8
|
||||
b _020E4104
|
||||
_020E3CBC: ; 0x020E3CBC
|
||||
b _020E3D0C
|
||||
_020E3CC0: ; 0x020E3CC0
|
||||
b _020E3D5C
|
||||
_020E3CC4: ; 0x020E3CC4
|
||||
b _020E4104
|
||||
_020E3CC8: ; 0x020E3CC8
|
||||
b _020E3D84
|
||||
_020E3CCC: ; 0x020E3CCC
|
||||
b _020E4104
|
||||
_020E3CD0: ; 0x020E3CD0
|
||||
b _020E4104
|
||||
_020E3CD4: ; 0x020E3CD4
|
||||
b _020E4104
|
||||
_020E3CD8: ; 0x020E3CD8
|
||||
b _020E3E94
|
||||
_020E3CDC:
|
||||
cmp r10, #0x10
|
||||
@@ -7951,14 +7813,12 @@ _020E423C:
|
||||
addne sp, sp, #0xa8
|
||||
movne r1, r0
|
||||
ldmneia sp!, {r3-r11,pc}
|
||||
_020E4264: ; 0x020E4264
|
||||
ldr r0, [sp, #0x28]
|
||||
cmp r0, #0x0
|
||||
ldreq r1, _020E4310 ; =UNK_02106B7C
|
||||
addeq sp, sp, #0xa8
|
||||
ldmeqia r1, {r0-r1}
|
||||
ldmeqia sp!, {r3-r11,pc}
|
||||
_020E427C: ; 0x020E427C
|
||||
ldr r1, _020E4310 ; =UNK_02106B7C
|
||||
mov r0, #0x0
|
||||
ldmia r1, {r2-r3}
|
||||
@@ -8289,23 +8149,14 @@ _020E4710:
|
||||
cmp r4, #0x0
|
||||
addge pc, pc, r4, lsl #0x2
|
||||
b _020E49C8
|
||||
_020E4724: ; 0x020E4724
|
||||
b _020E49C8
|
||||
_020E4728: ; 0x020E4728
|
||||
b _020E4754
|
||||
_020E472C: ; 0x020E472C
|
||||
b _020E4800
|
||||
_020E4730: ; 0x020E4730
|
||||
b _020E49C8
|
||||
_020E4734: ; 0x020E4734
|
||||
b _020E483C
|
||||
_020E4738: ; 0x020E4738
|
||||
b _020E49C8
|
||||
_020E473C: ; 0x020E473C
|
||||
b _020E49C8
|
||||
_020E4740: ; 0x020E4740
|
||||
b _020E49C8
|
||||
_020E4744: ; 0x020E4744
|
||||
b _020E487C
|
||||
_020E4748:
|
||||
cmp r4, #0x10
|
||||
@@ -8594,23 +8445,14 @@ _020E4B0C:
|
||||
cmp r4, #0x0
|
||||
addge pc, pc, r4, lsl #0x2
|
||||
b _020E4E08
|
||||
_020E4B20: ; 0x020E4B20
|
||||
b _020E4E08
|
||||
_020E4B24: ; 0x020E4B24
|
||||
b _020E4B50
|
||||
_020E4B28: ; 0x020E4B28
|
||||
b _020E4BFC
|
||||
_020E4B2C: ; 0x020E4B2C
|
||||
b _020E4E08
|
||||
_020E4B30: ; 0x020E4B30
|
||||
b _020E4C38
|
||||
_020E4B34: ; 0x020E4B34
|
||||
b _020E4E08
|
||||
_020E4B38: ; 0x020E4B38
|
||||
b _020E4E08
|
||||
_020E4B3C: ; 0x020E4B3C
|
||||
b _020E4E08
|
||||
_020E4B40: ; 0x020E4B40
|
||||
b _020E4C78
|
||||
_020E4B44:
|
||||
cmp r4, #0x10
|
||||
@@ -8873,7 +8715,6 @@ strtoul: ; 0x020E4E80
|
||||
sub r1, lr, #0x80000001
|
||||
str r12, [sp, #0x8]
|
||||
bl __strtoul
|
||||
_020E4EC8: ; 0x020E4EC8
|
||||
cmp r4, #0x0
|
||||
ldrne r1, [sp, #0x1c]
|
||||
addne r1, r5, r1
|
||||
@@ -8917,7 +8758,6 @@ strtold2: ; 0x020E4F18
|
||||
sub r1, lr, #0x80000001
|
||||
str r12, [sp, #0x8]
|
||||
bl __strtoul
|
||||
_020E4F60: ; 0x020E4F60
|
||||
cmp r4, #0x0
|
||||
ldrne r1, [sp, #0x1c]
|
||||
addne r1, r5, r1
|
||||
@@ -9265,19 +9105,12 @@ _020E53A8:
|
||||
subs r0, r3, #0x41
|
||||
addpl pc, pc, r0, lsl #0x2
|
||||
b _020E55EC
|
||||
_020E53D4: ; 0x020E53D4
|
||||
b _020E54E0
|
||||
_020E53D8: ; 0x020E53D8
|
||||
b _020E55EC
|
||||
_020E53DC: ; 0x020E53DC
|
||||
b _020E55EC
|
||||
_020E53E0: ; 0x020E53E0
|
||||
b _020E55EC
|
||||
_020E53E4: ; 0x020E53E4
|
||||
b _020E5528
|
||||
_020E53E8: ; 0x020E53E8
|
||||
b _020E54A8
|
||||
_020E53EC: ; 0x020E53EC
|
||||
b _020E5518
|
||||
_020E53F0:
|
||||
cmp r3, #0x58
|
||||
@@ -10097,7 +9930,6 @@ _020E5F0C:
|
||||
ldrb lr, [r0, #0x4]
|
||||
cmp r1, lr
|
||||
ldmgeia sp!, {r4,pc}
|
||||
_020E5F18: ; 0x020E5F18
|
||||
add r12, r0, #0x5
|
||||
add r2, r12, r1
|
||||
add r2, r2, #0x1
|
||||
@@ -10690,19 +10522,12 @@ _020E6710:
|
||||
subs r0, r1, #0x41
|
||||
addpl pc, pc, r0, lsl #0x2
|
||||
b _020E6768
|
||||
_020E674C: ; 0x020E674C
|
||||
b _020E6AEC
|
||||
_020E6750: ; 0x020E6750
|
||||
b _020E6D90
|
||||
_020E6754: ; 0x020E6754
|
||||
b _020E6D90
|
||||
_020E6758: ; 0x020E6758
|
||||
b _020E6D90
|
||||
_020E675C: ; 0x020E675C
|
||||
b _020E6A7C
|
||||
_020E6760: ; 0x020E6760
|
||||
b _020E6A7C
|
||||
_020E6764: ; 0x020E6764
|
||||
b _020E6A7C
|
||||
_020E6768:
|
||||
cmp r1, #0x25
|
||||
@@ -10718,41 +10543,23 @@ _020E6780:
|
||||
subs r0, r1, #0x64
|
||||
addpl pc, pc, r0, lsl #0x2
|
||||
b _020E67DC
|
||||
_020E6794: ; 0x020E6794
|
||||
b _020E6804
|
||||
_020E6798: ; 0x020E6798
|
||||
b _020E6A7C
|
||||
_020E679C: ; 0x020E679C
|
||||
b _020E6A7C
|
||||
_020E67A0: ; 0x020E67A0
|
||||
b _020E6A7C
|
||||
_020E67A4: ; 0x020E67A4
|
||||
b _020E6D90
|
||||
_020E67A8: ; 0x020E67A8
|
||||
b _020E6804
|
||||
_020E67AC: ; 0x020E67AC
|
||||
b _020E6D90
|
||||
_020E67B0: ; 0x020E67B0
|
||||
b _020E6D90
|
||||
_020E67B4: ; 0x020E67B4
|
||||
b _020E6D90
|
||||
_020E67B8: ; 0x020E67B8
|
||||
b _020E6D90
|
||||
_020E67BC: ; 0x020E67BC
|
||||
b _020E6C98
|
||||
_020E67C0: ; 0x020E67C0
|
||||
b _020E6940
|
||||
_020E67C4: ; 0x020E67C4
|
||||
b _020E6D90
|
||||
_020E67C8: ; 0x020E67C8
|
||||
b _020E6D90
|
||||
_020E67CC: ; 0x020E67CC
|
||||
b _020E6D90
|
||||
_020E67D0: ; 0x020E67D0
|
||||
b _020E6B5C
|
||||
_020E67D4: ; 0x020E67D4
|
||||
b _020E6D90
|
||||
_020E67D8: ; 0x020E67D8
|
||||
b _020E6940
|
||||
_020E67DC:
|
||||
cmp r1, #0x63
|
||||
@@ -11034,7 +10841,6 @@ _020E6BB0:
|
||||
mov r2, r7
|
||||
mov r1, #0x0
|
||||
bl wmemchr
|
||||
_020E6BD0: ; 0x020E6BD0
|
||||
cmp r0, #0x0
|
||||
beq _020E6DDC
|
||||
sub r0, r0, r6
|
||||
@@ -11074,7 +10880,6 @@ _020E6C40:
|
||||
mov r2, r6
|
||||
mov r1, #0x0
|
||||
bl memchr
|
||||
_020E6C60: ; 0x020E6C60
|
||||
cmp r0, #0x0
|
||||
subne r6, r0, r5
|
||||
b _020E6C78
|
||||
@@ -11340,11 +11145,9 @@ vswprintf: ; 0x020E6FAC
|
||||
str r4, [sp, #0x4]
|
||||
str r12, [sp, #0x8]
|
||||
bl __wpformatter
|
||||
_020E6FD8: ; 0x020E6FD8
|
||||
cmp r0, #0x0
|
||||
addlt sp, sp, #0xc
|
||||
ldmltia sp!, {r4-r5,pc}
|
||||
_020E6FE4: ; 0x020E6FE4
|
||||
cmp r0, r4
|
||||
bhs _020E7000
|
||||
mov r1, r0, lsl #0x1
|
||||
@@ -12061,7 +11864,6 @@ _020E7794:
|
||||
mov r2, r4
|
||||
mov r3, r10
|
||||
bl _dadd
|
||||
_020E7A6C: ; 0x020E7A6C
|
||||
mov r0, #0x0
|
||||
ldr r3, _020E76B0 ; =0x40080000
|
||||
mov r2, r0
|
||||
@@ -12109,7 +11911,6 @@ _020E7A6C: ; 0x020E7A6C
|
||||
mov r2, r9
|
||||
mov r3, r11
|
||||
bl _dadd
|
||||
_020E7B28: ; 0x020E7B28
|
||||
mov r0, #0x0
|
||||
mov r2, r4
|
||||
mov r3, r10
|
||||
@@ -12860,7 +12661,6 @@ _020E85EC:
|
||||
_020E8620:
|
||||
strb r1, [r12], #-0x1
|
||||
b _020E85EC
|
||||
_020E8628: ; 0x020E8628
|
||||
bx lr
|
||||
|
||||
arm_func_start __rounddec
|
||||
@@ -12870,16 +12670,13 @@ __rounddec: ; 0x020E862C
|
||||
mov r5, r0
|
||||
cmp r4, #0x0
|
||||
ldmleia sp!, {r3-r5,pc}
|
||||
_020E8640: ; 0x020E8640
|
||||
ldrb r2, [r5, #0x4]
|
||||
cmp r4, r2
|
||||
ldmgeia sp!, {r3-r5,pc}
|
||||
_020E864C: ; 0x020E864C
|
||||
bl __must_round
|
||||
strb r4, [r5, #0x4]
|
||||
cmp r0, #0x0
|
||||
ldmltia sp!, {r3-r5,pc}
|
||||
_020E865C: ; 0x020E865C
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
bl __dorounddecup
|
||||
@@ -13027,12 +12824,10 @@ _020E8850:
|
||||
addcs sp, sp, #0x40
|
||||
strb r3, [r0, #0x4]
|
||||
ldmcsia sp!, {r3-r11,pc}
|
||||
_020E8860: ; 0x020E8860
|
||||
ldrb r1, [r6, #0x0]
|
||||
cmp r1, #0x5
|
||||
addcc sp, sp, #0x40
|
||||
ldmccia sp!, {r3-r11,pc}
|
||||
_020E8870: ; 0x020E8870
|
||||
bne _020E88A8
|
||||
add r2, r6, #0x1
|
||||
cmp r2, r7
|
||||
@@ -13081,10 +12876,8 @@ _020E88F8:
|
||||
ldrsb r2, [r1, #0x0]
|
||||
cmp r2, #0x0
|
||||
ldmeqia sp!, {r3,pc}
|
||||
_020E8908: ; 0x020E8908
|
||||
cmp r2, #0x5
|
||||
ldmltia sp!, {r3,pc}
|
||||
_020E8910: ; 0x020E8910
|
||||
bgt _020E894C
|
||||
ldrsb r2, [r1, #0x1]
|
||||
add r1, r1, #0x1
|
||||
@@ -13348,7 +13141,6 @@ _020E8BE4:
|
||||
tst r4, #0x1
|
||||
addeq sp, sp, #0x4c
|
||||
ldmeqia sp!, {r4-r5,pc}
|
||||
_020E8C14: ; 0x020E8C14
|
||||
add r3, sp, #0x0
|
||||
mov r12, r5
|
||||
mov r2, #0x9
|
||||
@@ -13444,7 +13236,6 @@ _020E8D4C:
|
||||
cmp r3, r2
|
||||
movne r0, #0x0
|
||||
ldmneia sp!, {r4,pc}
|
||||
_020E8D68: ; 0x020E8D68
|
||||
add r12, r12, #0x1
|
||||
cmp r12, lr
|
||||
blt _020E8D4C
|
||||
@@ -13460,7 +13251,6 @@ _020E8D88:
|
||||
cmp r1, #0x0
|
||||
movne r0, #0x0
|
||||
ldmneia sp!, {r4,pc}
|
||||
_020E8D9C: ; 0x020E8D9C
|
||||
ldrb r1, [r0, #0x4]
|
||||
add r12, r12, #0x1
|
||||
cmp r12, r1
|
||||
@@ -13488,7 +13278,6 @@ _020E8DE0:
|
||||
cmp r2, #0x0
|
||||
moveq r0, #0x0
|
||||
ldmeqia sp!, {r3-r5,pc}
|
||||
_020E8DF0: ; 0x020E8DF0
|
||||
ldrsh r3, [r1, #0x2]
|
||||
ldrsh r2, [r0, #0x2]
|
||||
cmp r2, r3
|
||||
@@ -13509,11 +13298,9 @@ _020E8E20:
|
||||
cmp r2, r3
|
||||
movcc r0, #0x1
|
||||
ldmccia sp!, {r3-r5,pc}
|
||||
_020E8E3C: ; 0x020E8E3C
|
||||
cmp r3, r2
|
||||
movcc r0, #0x0
|
||||
ldmccia sp!, {r3-r5,pc}
|
||||
_020E8E48: ; 0x020E8E48
|
||||
add r12, r12, #0x1
|
||||
cmp r12, lr
|
||||
blt _020E8E20
|
||||
@@ -13528,7 +13315,6 @@ _020E8E64:
|
||||
cmp r0, #0x0
|
||||
movne r0, #0x1
|
||||
ldmneia sp!, {r3-r5,pc}
|
||||
_020E8E78: ; 0x020E8E78
|
||||
ldrb r0, [r1, #0x4]
|
||||
add r12, r12, #0x1
|
||||
cmp r12, r0
|
||||
@@ -13560,7 +13346,6 @@ _020E8EA8:
|
||||
ldrb r1, [r2, #0x5]
|
||||
cmp r1, #0x0
|
||||
ldmeqia sp!, {r3-r7,pc}
|
||||
_020E8EDC: ; 0x020E8EDC
|
||||
ldrb r7, [r0, #0x4]
|
||||
ldrb r3, [r2, #0x4]
|
||||
ldrsh r4, [r0, #0x2]
|
||||
@@ -13748,7 +13533,6 @@ __num2dec_internal:
|
||||
mov r0, r8
|
||||
mov r1, r6
|
||||
bl __signbitf
|
||||
_020E9160: ; 0x020E9160
|
||||
cmp r0, #0x0
|
||||
movne r1, #0x1
|
||||
moveq r1, #0x0
|
||||
@@ -13851,7 +13635,6 @@ __num2dec_internal2: ; 0x020E92C0
|
||||
ldrb r0, [r4, #0x5]
|
||||
cmp r0, #0x9
|
||||
ldmhiia sp!, {r3-r5,pc}
|
||||
_020E92E0: ; 0x020E92E0
|
||||
cmp r5, #0x20
|
||||
movgt r5, #0x20
|
||||
mov r0, r4
|
||||
@@ -14002,7 +13785,6 @@ _020E94C8:
|
||||
add r0, sp, #0xb0
|
||||
add r1, sp, #0xd6
|
||||
bl __less_dec
|
||||
_020E94FC: ; 0x020E94FC
|
||||
cmp r0, #0x0
|
||||
beq _020E9538
|
||||
ldrsb r0, [r4, #0x0]
|
||||
@@ -14061,7 +13843,6 @@ _020E9594:
|
||||
mov r0, r4
|
||||
mov r1, r9
|
||||
bl _dadd
|
||||
_020E95D4: ; 0x020E95D4
|
||||
cmp r6, #0x0
|
||||
mov r6, r0
|
||||
mov r10, r1
|
||||
@@ -14135,13 +13916,11 @@ _020E96C0:
|
||||
add r0, sp, #0x8a
|
||||
add r1, sp, #0xd6
|
||||
bl __equals_dec
|
||||
_020E96E4: ; 0x020E96E4
|
||||
cmp r0, #0x0
|
||||
bne _020E9934
|
||||
add r0, sp, #0x8a
|
||||
add r1, sp, #0xd6
|
||||
bl __less_dec
|
||||
_020E96F8: ; 0x020E96F8
|
||||
cmp r0, #0x0
|
||||
movne r5, #0x1
|
||||
ldr r1, [sp, #0x8]
|
||||
@@ -14174,13 +13953,11 @@ _020E975C:
|
||||
ldr r2, [sp, #0x4]
|
||||
add r0, sp, #0x64
|
||||
bl __num2dec_internal
|
||||
_020E976C: ; 0x020E976C
|
||||
cmp r5, #0x0
|
||||
beq _020E9788
|
||||
add r0, sp, #0x64
|
||||
add r1, sp, #0xd6
|
||||
bl __less_dec
|
||||
_020E9780: ; 0x020E9780
|
||||
cmp r0, #0x0
|
||||
beq _020E98AC
|
||||
_020E9788:
|
||||
@@ -14189,7 +13966,6 @@ _020E9788:
|
||||
add r0, sp, #0xd6
|
||||
add r1, sp, #0x64
|
||||
bl __less_dec
|
||||
_020E979C: ; 0x020E979C
|
||||
cmp r0, #0x0
|
||||
bne _020E9864
|
||||
add r3, sp, #0x8a
|
||||
@@ -14275,7 +14051,6 @@ _020E98AC:
|
||||
add r0, sp, #0x3e
|
||||
add r1, sp, #0x18
|
||||
bl __equals_dec
|
||||
_020E98D8: ; 0x020E98D8
|
||||
cmp r0, #0x0
|
||||
beq _020E9910
|
||||
ldr r1, [sp, #0x8]
|
||||
@@ -14294,7 +14069,6 @@ _020E9910:
|
||||
add r0, sp, #0x3e
|
||||
add r1, sp, #0x18
|
||||
bl __less_dec
|
||||
_020E991C: ; 0x020E991C
|
||||
cmp r0, #0x0
|
||||
bne _020E9934
|
||||
ldr r1, [sp, #0x0]
|
||||
@@ -14448,10 +14222,8 @@ _020E9B0C:
|
||||
cmp r12, r2
|
||||
mvncc r0, #0x0
|
||||
ldmccia sp!, {r3,pc}
|
||||
_020E9B1C: ; 0x020E9B1C
|
||||
movhi r0, #0x1
|
||||
ldmhiia sp!, {r3,pc}
|
||||
_020E9B24: ; 0x020E9B24
|
||||
cmp r12, #0x0
|
||||
bne _020E9AD8
|
||||
mov r0, #0x0
|
||||
|
||||
@@ -347,7 +347,7 @@ _0202843A:
|
||||
add r5, #0x40
|
||||
mul r0, r4
|
||||
add r0, r5, r0
|
||||
bl FUN_0209700C
|
||||
bl DWC_IsValidFriendData
|
||||
pop {r3-r5, pc}
|
||||
|
||||
thumb_func_start FUN_02028448
|
||||
|
||||
@@ -198,7 +198,7 @@ FUN_0202DBE0: ; 0x0202DBE0
|
||||
ldr r1, [r1, #0x0]
|
||||
add r1, #0x48
|
||||
add r1, r1, r5
|
||||
bl FUN_02096CCC
|
||||
bl DWC_CreateExchangeToken
|
||||
ldr r0, _0202DCD8 ; =UNK_021C59E4
|
||||
mov r1, #0x0
|
||||
ldr r0, [r0, #0x0]
|
||||
|
||||
@@ -13,7 +13,7 @@ FUN_020337E8: ; 0x020337E8
|
||||
add r0, #0x1f
|
||||
mov r1, #0x1f
|
||||
bic r0, r1
|
||||
bl FUN_02096B14
|
||||
bl DWC_Init
|
||||
add r5, r0, #0x0
|
||||
add r0, r4, #0x0
|
||||
bl FUN_02016A18
|
||||
@@ -26,14 +26,14 @@ FUN_0203380C: ; 0x0203380C
|
||||
push {r4, lr}
|
||||
bl FUN_02028228
|
||||
add r4, r0, #0x0
|
||||
bl FUN_02096FB0
|
||||
bl DWC_CheckUserData
|
||||
cmp r0, #0x0
|
||||
bne _0203382A
|
||||
ldr r1, _0203382C ; =0x4144414A
|
||||
add r0, r4, #0x0
|
||||
bl thunk_FUN_02097190
|
||||
bl DWC_CreateUserData
|
||||
add r0, r4, #0x0
|
||||
bl thunk_FUN_02096e4c
|
||||
bl DWC_ClearDirtyFlag
|
||||
_0203382A:
|
||||
pop {r4, pc}
|
||||
.balign 4
|
||||
@@ -46,10 +46,10 @@ FUN_02033830: ; 0x02033830
|
||||
bl FUN_02028228
|
||||
add r4, r0, #0x0
|
||||
add r1, sp, #0x0
|
||||
bl FUN_02096CCC
|
||||
bl DWC_CreateExchangeToken
|
||||
add r0, r4, #0x0
|
||||
add r1, sp, #0x0
|
||||
bl FUN_02096DA0
|
||||
bl DWC_GetGsProfileId
|
||||
add sp, #0xc
|
||||
pop {r3-r4, pc}
|
||||
|
||||
@@ -59,11 +59,11 @@ FUN_0203384C: ; 0x0203384C
|
||||
bl FUN_020286EC
|
||||
bl FUN_02028228
|
||||
add r4, r0, #0x0
|
||||
bl FUN_02096F80
|
||||
bl DWC_CheckHasProfile
|
||||
cmp r0, #0x0
|
||||
beq _0203386E
|
||||
add r0, r4, #0x0
|
||||
bl FUN_02096F18
|
||||
bl DWC_CheckValidConsole
|
||||
cmp r0, #0x0
|
||||
beq _0203386E
|
||||
mov r0, #0x1
|
||||
|
||||
@@ -23,7 +23,7 @@ FUN_02033874: ; 0x02033874
|
||||
mvn r1, r1
|
||||
str r1, [r0, #0x0]
|
||||
add r0, r5, #0x0
|
||||
bl FUN_0209700C
|
||||
bl DWC_IsValidFriendData
|
||||
cmp r0, #0x0
|
||||
bne _020338AE
|
||||
add sp, #0x8
|
||||
@@ -34,7 +34,7 @@ _020338AE:
|
||||
_020338B0:
|
||||
add r0, r5, #0x0
|
||||
add r1, r4, #0x0
|
||||
bl FUN_02096B78
|
||||
bl DWC_IsEqualFriendData
|
||||
cmp r0, #0x0
|
||||
beq _020338C6
|
||||
ldr r0, [sp, #0x0]
|
||||
@@ -45,16 +45,16 @@ _020338B0:
|
||||
_020338C6:
|
||||
add r0, r6, #0x0
|
||||
add r1, r5, #0x0
|
||||
bl FUN_02096DA0
|
||||
bl DWC_GetGsProfileId
|
||||
cmp r0, #0x0
|
||||
ble _020338F4
|
||||
add r0, r6, #0x0
|
||||
add r1, r5, #0x0
|
||||
bl FUN_02096DA0
|
||||
bl DWC_GetGsProfileId
|
||||
str r0, [sp, #0x4]
|
||||
add r0, r6, #0x0
|
||||
add r1, r4, #0x0
|
||||
bl FUN_02096DA0
|
||||
bl DWC_GetGsProfileId
|
||||
ldr r1, [sp, #0x4]
|
||||
cmp r1, r0
|
||||
bne _020338F4
|
||||
@@ -69,7 +69,7 @@ _020338F4:
|
||||
cmp r0, #0x0
|
||||
bge _0203390A
|
||||
add r0, r4, #0x0
|
||||
bl FUN_0209700C
|
||||
bl DWC_IsValidFriendData
|
||||
cmp r0, #0x0
|
||||
bne _0203390A
|
||||
ldr r0, [sp, #0x0]
|
||||
@@ -102,7 +102,7 @@ FUN_02033918: ; 0x02033918
|
||||
ldr r1, [sp, #0x0]
|
||||
ldr r2, [sp, #0x4]
|
||||
add r0, r7, #0x0
|
||||
bl FUN_020973B4
|
||||
bl DWC_CheckFriendKey
|
||||
cmp r0, #0x0
|
||||
bne _02033950
|
||||
add sp, #0x18
|
||||
@@ -112,10 +112,10 @@ _02033950:
|
||||
ldr r1, [sp, #0x0]
|
||||
ldr r2, [sp, #0x4]
|
||||
add r0, sp, #0xc
|
||||
bl FUN_02096D2C
|
||||
bl DWC_CreateFriendKeyToken
|
||||
add r0, r7, #0x0
|
||||
add r1, sp, #0xc
|
||||
bl FUN_02096DA0
|
||||
bl DWC_GetGsProfileId
|
||||
cmp r0, #0x0
|
||||
bgt _0203396C
|
||||
add sp, #0x18
|
||||
@@ -129,11 +129,11 @@ _0203396C:
|
||||
_02033974:
|
||||
add r0, r7, #0x0
|
||||
add r1, sp, #0xc
|
||||
bl FUN_02096DA0
|
||||
bl DWC_GetGsProfileId
|
||||
str r0, [sp, #0x8]
|
||||
add r0, r7, #0x0
|
||||
add r1, r5, #0x0
|
||||
bl FUN_02096DA0
|
||||
bl DWC_GetGsProfileId
|
||||
ldr r1, [sp, #0x8]
|
||||
cmp r1, r0
|
||||
bne _02033994
|
||||
@@ -146,7 +146,7 @@ _02033994:
|
||||
cmp r0, #0x0
|
||||
bge _020339A6
|
||||
add r0, r5, #0x0
|
||||
bl FUN_0209700C
|
||||
bl DWC_IsValidFriendData
|
||||
cmp r0, #0x0
|
||||
bne _020339A6
|
||||
str r4, [r6, #0x0]
|
||||
|
||||
31192
arm9/asm/unk_020910EC.s
31192
arm9/asm/unk_020910EC.s
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
420
arm9/global.inc
420
arm9/global.inc
@@ -21,6 +21,78 @@
|
||||
.extern CARDi_SetTask
|
||||
.extern CARDi_TaskThread
|
||||
.extern CARDi_WaitAsync
|
||||
.extern CPSDnsIp
|
||||
.extern CPSGatewayIp
|
||||
.extern CPSMyIp
|
||||
.extern CPSNetMask
|
||||
.extern CPS_CalmDown
|
||||
.extern CPS_Cleanup
|
||||
.extern CPS_Resolve
|
||||
.extern CPS_SetRootCa
|
||||
.extern CPS_SetScavengerCallback
|
||||
.extern CPS_SetSsl
|
||||
.extern CPS_SetSslHandshakePriority
|
||||
.extern CPS_SetThreadPriority
|
||||
.extern CPS_SetUdpCallback
|
||||
.extern CPS_SocConsume
|
||||
.extern CPS_SocDatagramMode
|
||||
.extern CPS_SocDup
|
||||
.extern CPS_SocGetChar
|
||||
.extern CPS_SocGetEport
|
||||
.extern CPS_SocGetLength
|
||||
.extern CPS_SocPingMode
|
||||
.extern CPS_SocRead
|
||||
.extern CPS_SocRegister
|
||||
.extern CPS_SocRelease
|
||||
.extern CPS_SocUnRegister
|
||||
.extern CPS_SocUse
|
||||
.extern CPS_SocWho
|
||||
.extern CPS_SocWrite
|
||||
.extern CPS_SslAddRandomSeed
|
||||
.extern CPS_Startup
|
||||
.extern CPS_TcpClose
|
||||
.extern CPS_TcpConnect
|
||||
.extern CPS_TcpListen
|
||||
.extern CPS_TcpShutdown
|
||||
.extern CPSiAlloc
|
||||
.extern CPSiFree
|
||||
.extern CPSiRand32ctx
|
||||
.extern CPSi_RecvCallbackFunc
|
||||
.extern CPSi_SocConsumeRaw
|
||||
.extern CPSi_SslCleanup
|
||||
.extern CPSi_SslClose
|
||||
.extern CPSi_SslConnect
|
||||
.extern CPSi_SslConsume
|
||||
.extern CPSi_SslGetLength
|
||||
.extern CPSi_SslListen
|
||||
.extern CPSi_SslPeriodical
|
||||
.extern CPSi_SslRead
|
||||
.extern CPSi_SslShutdown
|
||||
.extern CPSi_SslWrite2
|
||||
.extern CPSi_TcpConnectRaw
|
||||
.extern CPSi_TcpListenRaw
|
||||
.extern CPSi_TcpReadRaw
|
||||
.extern CPSi_TcpShutdownRaw
|
||||
.extern CPSi_TcpWrite2Raw
|
||||
.extern CPSi_big_add
|
||||
.extern CPSi_big_div
|
||||
.extern CPSi_big_from_char
|
||||
.extern CPSi_big_montpower
|
||||
.extern CPSi_big_mult
|
||||
.extern CPSi_big_negate
|
||||
.extern CPSi_big_power
|
||||
.extern CPSi_big_sign
|
||||
.extern CPSi_big_sub
|
||||
.extern CPSi_char_from_big
|
||||
.extern CPSi_md5_calc
|
||||
.extern CPSi_md5_init
|
||||
.extern CPSi_md5_result
|
||||
.extern CPSi_rc4_crypt
|
||||
.extern CPSi_rc4_init
|
||||
.extern CPSi_sha1_calc
|
||||
.extern CPSi_sha1_init
|
||||
.extern CPSi_sha1_result
|
||||
.extern CPSi_sha1_result_prng
|
||||
.extern CP_RestoreContext
|
||||
.extern CP_SaveContext
|
||||
.extern CTRDG_CpuCopy16
|
||||
@@ -110,7 +182,6 @@
|
||||
.extern FSi_SendCommand
|
||||
.extern FSi_TranslateCommand
|
||||
.extern FUNRTC_Init
|
||||
.extern SVC_CpuSet
|
||||
.extern FUN_02000DF4
|
||||
.extern FUN_02000E7C
|
||||
.extern FUN_02000EE8
|
||||
@@ -196,7 +267,6 @@
|
||||
.extern FUN_02003B98
|
||||
.extern FUN_02003C10
|
||||
.extern FUN_02003CE8
|
||||
.extern GetSoundDataPointer
|
||||
.extern FUN_02003D38
|
||||
.extern FUN_02003F3C
|
||||
.extern FUN_02003F64
|
||||
@@ -4305,6 +4375,11 @@
|
||||
.extern FUN_0205C380
|
||||
.extern FUN_0205C390
|
||||
.extern FUN_0205C3AC
|
||||
.extern FUN_0205C3B0
|
||||
.extern FUN_0205C3D0
|
||||
.extern FUN_0205C490
|
||||
.extern FUN_0205C4A8
|
||||
.extern FUN_0205C4D8
|
||||
.extern FUN_0205C598
|
||||
.extern FUN_0205C888
|
||||
.extern FUN_0205C8B4
|
||||
@@ -5377,119 +5452,87 @@
|
||||
.extern FUN_0208A334
|
||||
.extern FUN_0208A338
|
||||
.extern FUN_0208A9B8
|
||||
.extern FUN_0208AC14
|
||||
.extern FUN_0208AC58
|
||||
.extern FUN_0208ACEC
|
||||
.extern FUN_0208AD80
|
||||
.extern FUN_0208AE48
|
||||
.extern FUN_0208AF80
|
||||
.extern FUN_0208AF94
|
||||
.extern FUN_0208AFA8
|
||||
.extern FUN_0208B05C
|
||||
.extern FUN_0208B128
|
||||
.extern FUN_0208B4A0
|
||||
.extern FUN_020905D0
|
||||
.extern FUN_02090664
|
||||
.extern FUN_02090780
|
||||
.extern FUN_02090858
|
||||
.extern FUN_020908DC
|
||||
.extern FUN_020909A4
|
||||
.extern FUN_02090CC8
|
||||
.extern FUN_02090DB8
|
||||
.extern FUN_020910EC
|
||||
.extern FUN_0209521C
|
||||
.extern FUN_020952AC
|
||||
.extern FUN_02095324
|
||||
.extern FUN_02095330
|
||||
.extern FUN_02095AE0
|
||||
.extern FUN_02095B0C
|
||||
.extern FUN_02095BB0
|
||||
.extern FUN_02095BE0
|
||||
.extern FUN_02095CDC
|
||||
.extern FUN_02095D68
|
||||
.extern FUN_02095EC8
|
||||
.extern FUN_02095FA8
|
||||
.extern FUN_02096190
|
||||
.extern DWCi_BACKUPlGetWifi
|
||||
.extern DWCi_BACKUPlConvWifiInfo
|
||||
.extern DWC_BACKUPlCheckAddress
|
||||
.extern DWC_BACKUPlCheckIp
|
||||
.extern DWCi_BACKUPlConvMaskAddr
|
||||
.extern DWCi_BACKUPlConvMaskCidr
|
||||
.extern DWCi_BACKUPlWritePage
|
||||
.extern DWCi_BACKUPlRead
|
||||
.extern DWCi_BM_GetWiFiInfo
|
||||
.extern DWCi_BM_GetApInfo
|
||||
.extern DWC_BM_Init
|
||||
.extern FUN_02096570
|
||||
.extern FUN_02096710
|
||||
.extern FUN_02096760
|
||||
.extern FUN_020967A4
|
||||
.extern FUN_02096B14
|
||||
.extern FUN_02096B78
|
||||
.extern FUN_02096C78
|
||||
.extern FUN_02096C90
|
||||
.extern FUN_02096CCC
|
||||
.extern FUN_02096D2C
|
||||
.extern FUN_02096D68
|
||||
.extern FUN_02096DA0
|
||||
.extern FUN_02096E24
|
||||
.extern FUN_02096EB4
|
||||
.extern FUN_02096EC0
|
||||
.extern FUN_02096F18
|
||||
.extern FUN_02096F80
|
||||
.extern FUN_02096FB0
|
||||
.extern FUN_02097000
|
||||
.extern FUN_0209700C
|
||||
.extern FUN_0209702C
|
||||
.extern FUN_0209703C
|
||||
.extern FUN_0209705C
|
||||
.extern FUN_020970CC
|
||||
.extern FUN_02097218
|
||||
.extern FUN_020973B4
|
||||
.extern FUN_02097414
|
||||
.extern FUN_02097484
|
||||
.extern FUN_02097490
|
||||
.extern FUN_02097508
|
||||
.extern FUN_02099A94
|
||||
.extern FUN_02099C78
|
||||
.extern FUN_02099D88
|
||||
.extern FUN_0209A0AC
|
||||
.extern FUN_0209A174
|
||||
.extern FUN_0209A224
|
||||
.extern FUN_0209A27C
|
||||
.extern FUN_0209A2C0
|
||||
.extern FUN_0209A4B4
|
||||
.extern FUN_0209A504
|
||||
.extern FUN_0209A588
|
||||
.extern FUN_0209A594
|
||||
.extern FUN_0209A60C
|
||||
.extern FUN_0209A650
|
||||
.extern FUN_0209A6EC
|
||||
.extern FUN_0209A7D0
|
||||
.extern FUN_0209A858
|
||||
.extern FUN_0209A880
|
||||
.extern FUN_0209A91C
|
||||
.extern FUN_0209A944
|
||||
.extern FUN_0209A9A4
|
||||
.extern FUN_0209A9D0
|
||||
.extern FUN_0209AAD0
|
||||
.extern FUN_0209BF4C
|
||||
.extern FUN_0209BF9C
|
||||
.extern FUN_0209C030
|
||||
.extern FUN_0209C52C
|
||||
.extern FUN_0209C638
|
||||
.extern FUN_0209C7AC
|
||||
.extern FUN_0209C840
|
||||
.extern FUN_0209C934
|
||||
.extern FUN_0209CB24
|
||||
.extern FUN_0209CB44
|
||||
.extern FUN_0209CB78
|
||||
.extern FUN_0209CC10
|
||||
.extern FUN_0209CC28
|
||||
.extern FUN_020A02EC
|
||||
.extern FUN_020A136C
|
||||
.extern FUN_020A3688
|
||||
.extern FUN_020A374C
|
||||
.extern FUN_020A71F8
|
||||
.extern FUN_020A722C
|
||||
.extern FUN_020A7488
|
||||
.extern FUN_020A75C0
|
||||
.extern FUN_020A7820
|
||||
.extern FUN_020A7A90
|
||||
.extern FUN_020A7AC8
|
||||
.extern FUN_020A7BD4
|
||||
.extern FUN_020A7E0C
|
||||
.extern FUN_020A7E80
|
||||
.extern FUN_020A8358
|
||||
.extern FUN_020A83D0
|
||||
.extern FUN_020A846C
|
||||
.extern FUN_020A84D8
|
||||
.extern FUN_020A87E0
|
||||
.extern FUN_020A8850
|
||||
.extern FUN_020A8BA4
|
||||
.extern FUN_020A8BB0
|
||||
.extern FUN_020A8BBC
|
||||
.extern DWCi_AUTH_MakeWiFiID
|
||||
.extern DWCi_AUTH_GetNewWiFiInfo
|
||||
.extern DWC_Init
|
||||
.extern DWC_IsEqualFriendData
|
||||
.extern DWC_LoginIdToUserName
|
||||
.extern DWC_SetGsProfileId
|
||||
.extern DWC_CreateExchangeToken
|
||||
.extern DWC_CreateFriendKeyToken
|
||||
.extern DWC_CreateFriendKey
|
||||
.extern DWC_GetGsProfileId
|
||||
.extern DWC_GetFriendKey
|
||||
.extern DWC_CheckDirtyFlag
|
||||
.extern DWCi_Acc_SetLoginIdToUserData
|
||||
.extern DWC_CheckValidConsole
|
||||
.extern DWC_CheckHasProfile
|
||||
.extern DWC_CheckUserData
|
||||
.extern DWCi_Acc_IsValidFriendData
|
||||
.extern DWC_IsValidFriendData
|
||||
.extern DWCi_Acc_IsAuthentic
|
||||
.extern DWCi_Acc_IsValidLoginId
|
||||
.extern DWCi_Acc_CheckConsoleUserId
|
||||
.extern DWCi_Acc_CreateTempLoginId
|
||||
.extern DWCi_Acc_LoginIdToUserName
|
||||
.extern DWC_CheckFriendKey
|
||||
.extern DWCi_SetBuddyFriendData
|
||||
.extern DWC_GetFriendDataType
|
||||
.extern DWC_IsBuddyFriendData
|
||||
.extern DWCi_Acc_SetPlayerId
|
||||
.extern WCM_GetPhase
|
||||
.extern WCM_TerminateAsync
|
||||
.extern WCM_DisconnectAsync
|
||||
.extern WCM_ConnectAsync
|
||||
.extern WCM_EndSearchAsync
|
||||
.extern WCM_SearchAsync
|
||||
.extern WCM_CleanupAsync
|
||||
.extern WCM_StartupAsync
|
||||
.extern WCM_Finish
|
||||
.extern WCM_Init
|
||||
.extern WCM_PointApList
|
||||
.extern WCM_LockApList
|
||||
.extern WCM_CountApList
|
||||
.extern WCM_ClearApList
|
||||
.extern WCM_GetApEssid
|
||||
.extern MD5Final
|
||||
.extern MD5Update
|
||||
.extern MD5Init
|
||||
.extern FUN_020AA760
|
||||
.extern FUN_020AA770
|
||||
.extern FUN_020AA7A0
|
||||
@@ -5502,10 +5545,10 @@
|
||||
.extern FUN_020ACC84
|
||||
.extern FUN_020ACD54
|
||||
.extern FUN_020AD144
|
||||
.extern FUN_020AD834
|
||||
.extern FUN_020AD8A8
|
||||
.extern FUN_020AD904
|
||||
.extern FUN_020AD93C
|
||||
.extern VCT_HandleData
|
||||
.extern VCT_Main
|
||||
.extern VCT_Cleanup
|
||||
.extern VCT_Init
|
||||
.extern FUN_020ADA84
|
||||
.extern FUN_020ADA98
|
||||
.extern FUN_020ADAB0
|
||||
@@ -5557,6 +5600,7 @@
|
||||
.extern FUN_020B0250
|
||||
.extern FUN_020B02C8
|
||||
.extern FUN_020B0448
|
||||
.extern FUN_020B04FC
|
||||
.extern FUN_020B0830
|
||||
.extern FUN_020B0870
|
||||
.extern FUN_020B0888
|
||||
@@ -5901,6 +5945,7 @@
|
||||
.extern GX_SetGraphicsMode
|
||||
.extern GX_VBlankIntr
|
||||
.extern GXx_SetMasterBrightness_
|
||||
.extern GetSoundDataPointer
|
||||
.extern HandleLoadOverlay
|
||||
.extern IC_InvalidateAll
|
||||
.extern IC_InvalidateRange
|
||||
@@ -6177,6 +6222,11 @@
|
||||
.extern MOD05_021DAF78
|
||||
.extern MOD05_021DAF98
|
||||
.extern MOD05_021DB030
|
||||
.extern MOD05_021DB040
|
||||
.extern MOD05_021DB144
|
||||
.extern MOD05_021DB1D0
|
||||
.extern MOD05_021DB250
|
||||
.extern MOD05_021DB380
|
||||
.extern MOD05_021DB44C
|
||||
.extern MOD05_021DB4B0
|
||||
.extern MOD05_021DB52C
|
||||
@@ -6561,6 +6611,7 @@
|
||||
.extern MOD06_0224C6F4
|
||||
.extern MOD06_0224C700
|
||||
.extern MOD06_0224C8C8
|
||||
.extern MOD06_0224C8E8
|
||||
.extern MOD06_0224CA58
|
||||
.extern MOD06_0224CA88
|
||||
.extern MOD06_0224CB30
|
||||
@@ -7188,9 +7239,9 @@
|
||||
.extern OS_TryLockCard
|
||||
.extern OS_TryLockCartridge
|
||||
.extern OS_TryLockMutex
|
||||
.extern OS_UnLockCartridge
|
||||
.extern OS_UnlockByWord
|
||||
.extern OS_UnlockCard
|
||||
.extern OS_UnLockCartridge
|
||||
.extern OS_UnlockCartridge
|
||||
.extern OS_UnlockMutex
|
||||
.extern OS_WaitIrq
|
||||
@@ -7452,7 +7503,78 @@
|
||||
.extern SNDi_LockMutex
|
||||
.extern SNDi_SetAlarmHandler
|
||||
.extern SNDi_UnlockMutex
|
||||
.extern SOCLSocketParamTCP
|
||||
.extern SOCLSocketParamUDPSend
|
||||
.extern SOCL_Accept
|
||||
.extern SOCL_Bind
|
||||
.extern SOCL_CalmDown
|
||||
.extern SOCL_Cleanup
|
||||
.extern SOCL_Close
|
||||
.extern SOCL_Connect
|
||||
.extern SOCL_CreateSocket
|
||||
.extern SOCL_EnableSsl
|
||||
.extern SOCL_GetHostID
|
||||
.extern SOCL_GetStatus
|
||||
.extern SOCL_InetAtoH
|
||||
.extern SOCL_IsClosed
|
||||
.extern SOCL_Listen
|
||||
.extern SOCL_Resolve
|
||||
.extern SOCL_SetResolver
|
||||
.extern SOCL_Shutdown
|
||||
.extern SOCL_SocketIsInTrash
|
||||
.extern SOCL_SocketIsInvalid
|
||||
.extern SOCL_Startup
|
||||
.extern SOCL_WriteTo
|
||||
.extern SOCLiCPSConfig
|
||||
.extern SOCLiConfigPtr
|
||||
.extern SOCLiDhcpState
|
||||
.extern SOCLiRequestedIP
|
||||
.extern SOCLiSocketList
|
||||
.extern SOCLiSocketListTrash
|
||||
.extern SOCLiUDPSendSocket
|
||||
.extern SOCLi_CleanupCommandPacketQueue
|
||||
.extern SOCLi_CommandPacketHandler
|
||||
.extern SOCLi_CreateCommandPacket
|
||||
.extern SOCLi_ExecCommandPacketInCtrlPipe
|
||||
.extern SOCLi_ExecCommandPacketInRecvPipe
|
||||
.extern SOCLi_ExecCommandPacketInSendPipe
|
||||
.extern SOCLi_FreeCommandPacket
|
||||
.extern SOCLi_GetWriteBufferFreeSize
|
||||
.extern SOCLi_ReadFrom
|
||||
.extern SOCLi_RoundUp4
|
||||
.extern SOCLi_SendCommandPacket
|
||||
.extern SOCLi_SendCommandPacketToCtrlPipe
|
||||
.extern SOCLi_SocketRegister
|
||||
.extern SOCLi_SocketRegisterTrash
|
||||
.extern SOCLi_SocketUnregister
|
||||
.extern SOCLi_SocketUnregisterTrash
|
||||
.extern SOCLi_StartupCommandPacketQueue
|
||||
.extern SOCLi_TrashSocket
|
||||
.extern SOCLi_UdpRecvCallback
|
||||
.extern SOC_Accept
|
||||
.extern SOC_Bind
|
||||
.extern SOC_Cleanup
|
||||
.extern SOC_Close
|
||||
.extern SOC_Connect
|
||||
.extern SOC_Fcntl
|
||||
.extern SOC_GetHostByAddr
|
||||
.extern SOC_GetHostID
|
||||
.extern SOC_GetResolver
|
||||
.extern SOC_GetSockName
|
||||
.extern SOC_InetAtoN
|
||||
.extern SOC_InetNtoA
|
||||
.extern SOC_Listen
|
||||
.extern SOC_Poll
|
||||
.extern SOC_Read
|
||||
.extern SOC_RecvFrom
|
||||
.extern SOC_Send
|
||||
.extern SOC_SendTo
|
||||
.extern SOC_Shutdown
|
||||
.extern SOC_Socket
|
||||
.extern SOC_Startup
|
||||
.extern SOC_U32to4U8
|
||||
.extern STD_CopyLString
|
||||
.extern SVC_CpuSet
|
||||
.extern SVC_GetCRC16
|
||||
.extern SVC_Sqrt
|
||||
.extern SVC_WaitByLoop
|
||||
@@ -7471,7 +7593,6 @@
|
||||
.extern StringLength
|
||||
.extern StringNotEqual
|
||||
.extern StringNotEqualN
|
||||
.extern THUNK_FUN_02099BC8
|
||||
.extern TP_CheckError
|
||||
.extern TP_GetCalibratedPoint
|
||||
.extern TP_GetLatestIndexInAuto
|
||||
@@ -7484,6 +7605,11 @@
|
||||
.extern TP_SetCalibrateParam
|
||||
.extern TP_WaitBusy
|
||||
.extern TP_WaitRawResult
|
||||
.extern UNK05_021F64C8
|
||||
.extern UNK05_021F9080
|
||||
.extern UNK05_021F9194
|
||||
.extern UNK05_021F9494
|
||||
.extern UNK63_021DBAB8
|
||||
.extern UNK_020FB6F8
|
||||
.extern UNK_020FB704
|
||||
.extern UNK_020FB710
|
||||
@@ -7491,6 +7617,37 @@
|
||||
.extern UNK_020FB740
|
||||
.extern UNK_020FB764
|
||||
.extern UNK_020FD144
|
||||
.extern UNK_021C8ECC
|
||||
.extern UNK_021C8ED0
|
||||
.extern UNK_021C8ED4
|
||||
.extern UNK_021C8ED8
|
||||
.extern UNK_021C8EDC
|
||||
.extern UNK_021C8EE0
|
||||
.extern UNK_021C8EE4
|
||||
.extern UNK_021C8EE8
|
||||
.extern UNK_021C8EEC
|
||||
.extern UNK_021C8EF0
|
||||
.extern UNK_021C8EF8
|
||||
.extern UNK_021C8EFC
|
||||
.extern UNK_021C8F00
|
||||
.extern UNK_021C8F04
|
||||
.extern UNK_021C8F08
|
||||
.extern UNK_021C8F0C
|
||||
.extern UNK_021C8F10
|
||||
.extern UNK_021C8F14
|
||||
.extern UNK_021C8F1C
|
||||
.extern UNK_021C8F5E
|
||||
.extern UNK_021C8F78
|
||||
.extern UNK_021C8F82
|
||||
.extern UNK_021C8FD8
|
||||
.extern UNK_021C903C
|
||||
.extern UNK_021C90A0
|
||||
.extern UNK_021C9160
|
||||
.extern UNK_021C9220
|
||||
.extern UNK_021C924A
|
||||
.extern UNK_021C93A0
|
||||
.extern UNK_021C9520
|
||||
.extern UNK_021C9EE0
|
||||
.extern Unk_0210683C
|
||||
.extern Unk_02106840
|
||||
.extern Unk_02106900
|
||||
@@ -7508,6 +7665,9 @@
|
||||
.extern VEC_MultAdd
|
||||
.extern VEC_Normalize
|
||||
.extern VEC_Subtract
|
||||
.extern WCM_GetApMacAddress
|
||||
.extern WCM_SendDCFData
|
||||
.extern WCM_SetRecvDCFCallback
|
||||
.extern WM_Disable
|
||||
.extern WM_Disconnect
|
||||
.extern WM_Enable
|
||||
@@ -7677,6 +7837,7 @@
|
||||
.extern memmove
|
||||
.extern memset
|
||||
.extern nan
|
||||
.extern pool_initialized
|
||||
.extern pow
|
||||
.extern printf
|
||||
.extern qsort
|
||||
@@ -7713,10 +7874,8 @@
|
||||
.extern sys_writec
|
||||
.extern tempName_NNS_FndAllocFromExpHeapEx
|
||||
.extern tempName_NNS_FndCreateExpHeapEx
|
||||
.extern thunk_FUN_02096e4c
|
||||
.extern thunk_FUN_02097190
|
||||
.extern thunk_FUN_020995dc
|
||||
.extern thunk_FUN_0209996c
|
||||
.extern DWC_ClearDirtyFlag
|
||||
.extern DWC_CreateUserData
|
||||
.extern thunk_FUN_020adc8c
|
||||
.extern thunk_FUN_020adc8c_2
|
||||
.extern thunk_FUN_020ae84c
|
||||
@@ -7730,29 +7889,18 @@
|
||||
.extern wcstombs
|
||||
.extern wctomb
|
||||
.extern wmemcpy
|
||||
.extern FUN_0208AC14
|
||||
.extern FUN_0208AC58
|
||||
.extern FUN_0208AE48
|
||||
.extern FUN_020905D0
|
||||
.extern FUN_02090664
|
||||
.extern FUN_02090780
|
||||
.extern FUN_02090858
|
||||
.extern FUN_020908DC
|
||||
.extern FUN_020909A4
|
||||
.extern FUN_020B04FC
|
||||
.extern UNK63_021DBAB8
|
||||
.extern UNK05_021F64C8
|
||||
.extern MOD06_0224C8E8
|
||||
.extern MOD05_021DB144
|
||||
.extern MOD05_021DB1D0
|
||||
.extern MOD05_021DB250
|
||||
.extern MOD05_021DB380
|
||||
.extern MOD05_021DB040
|
||||
.extern UNK05_021F9080
|
||||
.extern UNK05_021F9194
|
||||
.extern UNK05_021F9494
|
||||
.extern FUN_0205C3B0
|
||||
.extern FUN_0205C3D0
|
||||
.extern FUN_0205C490
|
||||
.extern FUN_0205C4A8
|
||||
.extern FUN_0205C4D8
|
||||
.extern WCMi_GetSystemWork
|
||||
.extern WCM_CompareBssID
|
||||
.extern WCMi_ResetKeepAliveAlarm
|
||||
.extern WCMi_CpsifSendNullPacket
|
||||
.extern WCMi_InitCpsif
|
||||
.extern WCMi_EntryApList
|
||||
.extern WCMi_CpsifRecvCallback
|
||||
.extern WCMi_ShelterRssi
|
||||
.extern DWC_Auth_GetId
|
||||
.extern DWC_BACKUPlCheckSsid
|
||||
.extern DWCi_BACKUPlInit
|
||||
.extern DWCi_BACKUPlSetWiFi
|
||||
.extern DWCi_BACKUPlWriteAll
|
||||
.extern DWCi_BM_SetWiFiInfo
|
||||
.extern DWC_Auth_CheckWiFiIDNeedCreate
|
||||
|
||||
@@ -6,6 +6,8 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
// Include all nitro files
|
||||
#include "sections.h"
|
||||
#include "misc.h"
|
||||
#include "types.h"
|
||||
#include "consts.h"
|
||||
#include "OS_init.h"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -159,7 +159,7 @@ _021D7608:
|
||||
ldr r1, [r0]
|
||||
ldr r0, _021D7658 ; =0x00001EF0
|
||||
ldr r0, [r1, r0]
|
||||
bl FUN_02096F80
|
||||
bl DWC_CheckHasProfile
|
||||
cmp r0, #0
|
||||
bne _021D762C
|
||||
mov r0, #1
|
||||
@@ -169,7 +169,7 @@ _021D762C:
|
||||
ldr r1, [r0]
|
||||
ldr r0, _021D7658 ; =0x00001EF0
|
||||
ldr r0, [r1, r0]
|
||||
bl FUN_02096F18
|
||||
bl DWC_CheckValidConsole
|
||||
cmp r0, #0
|
||||
beq _021D7640
|
||||
mov r0, #0
|
||||
@@ -719,14 +719,14 @@ MOD04_021D7A7C: ; 0x021D7A7C
|
||||
ldr r1, [r0]
|
||||
ldr r0, _021D7AFC ; =0x00001EF0
|
||||
ldr r0, [r1, r0]
|
||||
bl FUN_02096EB4
|
||||
bl DWC_CheckDirtyFlag
|
||||
cmp r0, #0
|
||||
beq _021D7AB0
|
||||
ldr r0, _021D7AF8 ; =0x0220FBC0
|
||||
ldr r1, [r0]
|
||||
ldr r0, _021D7AFC ; =0x00001EF0
|
||||
ldr r0, [r1, r0]
|
||||
bl thunk_FUN_02096e4c
|
||||
bl DWC_ClearDirtyFlag
|
||||
ldr r0, _021D7AF8 ; =0x0220FBC0
|
||||
ldr r1, [r0]
|
||||
mov r0, #0x1f
|
||||
@@ -1979,7 +1979,7 @@ _021D8400:
|
||||
lsl r1, r1, #8
|
||||
ldr r0, [r0, r1]
|
||||
add r0, r0, r4
|
||||
bl FUN_02097490
|
||||
bl DWC_IsBuddyFriendData
|
||||
cmp r0, #0
|
||||
beq _021D844A
|
||||
mov r0, #0x11
|
||||
@@ -2192,7 +2192,7 @@ MOD04_021D85B4: ; 0x021D85B4
|
||||
ldr r1, [r0]
|
||||
ldr r0, _021D8618 ; =0x00001EF0
|
||||
ldr r0, [r1, r0]
|
||||
bl FUN_02096F80
|
||||
bl DWC_CheckHasProfile
|
||||
cmp r0, #0
|
||||
bne _021D85D8
|
||||
ldr r0, _021D8614 ; =0x0220FBC0
|
||||
@@ -2200,7 +2200,7 @@ MOD04_021D85B4: ; 0x021D85B4
|
||||
ldr r0, _021D8618 ; =0x00001EF0
|
||||
ldr r0, [r1, r0]
|
||||
add r1, sp, #0xc
|
||||
bl FUN_02096CCC
|
||||
bl DWC_CreateExchangeToken
|
||||
b _021D85E6
|
||||
_021D85D8:
|
||||
ldr r0, _021D8614 ; =0x0220FBC0
|
||||
@@ -2208,7 +2208,7 @@ _021D85D8:
|
||||
ldr r0, _021D8618 ; =0x00001EF0
|
||||
ldr r0, [r1, r0]
|
||||
add r1, sp, #0
|
||||
bl FUN_02096CCC
|
||||
bl DWC_CreateExchangeToken
|
||||
_021D85E6:
|
||||
mov r4, #0
|
||||
mov r7, #0x11
|
||||
@@ -2221,11 +2221,11 @@ _021D85F0:
|
||||
lsl r0, r0, #8
|
||||
ldr r0, [r1, r0]
|
||||
add r0, r0, r5
|
||||
bl FUN_02097484
|
||||
bl DWC_GetFriendDataType
|
||||
ldr r0, [r6]
|
||||
ldr r0, [r0, r7]
|
||||
add r0, r0, r5
|
||||
bl FUN_02097490
|
||||
bl DWC_IsBuddyFriendData
|
||||
add r4, r4, #1
|
||||
add r5, #0xc
|
||||
cmp r4, #0x20
|
||||
@@ -2673,7 +2673,7 @@ _021D8976:
|
||||
ldr r0, _021D8A3C ; =0x0220FBC8
|
||||
str r4, [r0, #0xc]
|
||||
str r5, [r0, #0x10]
|
||||
bl FUN_020AD8A8
|
||||
bl VCT_Main
|
||||
ldr r4, _021D8A3C ; =0x0220FBC8
|
||||
ldr r0, _021D8A44 ; =0x0000411A
|
||||
ldr r1, [r4, #8]
|
||||
@@ -2682,7 +2682,7 @@ _021D8976:
|
||||
add r6, r0, #0
|
||||
add r5, r0, #0
|
||||
_021D898E:
|
||||
bl FUN_020AD8A8
|
||||
bl VCT_Main
|
||||
ldr r0, [r4, #8]
|
||||
sub r0, r0, r6
|
||||
str r0, [r4, #8]
|
||||
@@ -2791,7 +2791,7 @@ MOD04_021D8A54: ; 0x021D8A54
|
||||
_021D8A62:
|
||||
lsl r0, r0, #0x18
|
||||
lsr r0, r0, #0x18
|
||||
bl FUN_020AD834
|
||||
bl VCT_HandleData
|
||||
cmp r0, #0
|
||||
beq _021D8A72
|
||||
mov r0, #1
|
||||
@@ -2946,7 +2946,7 @@ _021D8ACA:
|
||||
lsl r0, r0, #6
|
||||
str r0, [sp, #0x28]
|
||||
add r0, sp, #0x14
|
||||
bl FUN_020AD93C
|
||||
bl VCT_Init
|
||||
cmp r0, #0
|
||||
ldr r0, _021D8BCC ; =0x0220FBC8
|
||||
add r2, r5, #0
|
||||
@@ -3058,7 +3058,7 @@ MOD04_021D8C6C: ; 0x021D8C6C
|
||||
ldr r0, _021D8CC4 ; =0x00003504
|
||||
add r0, r1, r0
|
||||
bl FUN_020C1674
|
||||
bl FUN_020AD904
|
||||
bl VCT_Cleanup
|
||||
ldr r1, _021D8CBC ; =0x0220FBC8
|
||||
mov r0, #0x35
|
||||
ldr r2, [r1, #4]
|
||||
|
||||
@@ -5713,7 +5713,7 @@ _0222338C:
|
||||
mov r1, #0x20
|
||||
bl MOD13_0223B004
|
||||
str r0, [sp]
|
||||
bl FUN_02096190
|
||||
bl DWC_BM_Init
|
||||
add r0, sp, #0
|
||||
bl MOD13_0223AF90
|
||||
add sp, sp, #4
|
||||
@@ -7885,7 +7885,7 @@ MOD13_02224FEC: ; 0x02224FEC
|
||||
mov r0, fp
|
||||
bl MOD13_0223A4F0
|
||||
add r0, sp, #0x1c
|
||||
bl FUN_02095EC8
|
||||
bl DWCi_BM_GetWiFiInfo
|
||||
ldr sb, [sp, #0x1c]
|
||||
ldr sl, [sp, #0x20]
|
||||
mov r3, #0
|
||||
@@ -8250,7 +8250,7 @@ _02225578:
|
||||
b _022255E4
|
||||
_02225584:
|
||||
add r0, sp, #0
|
||||
bl FUN_02095EC8
|
||||
bl DWCi_BM_GetWiFiInfo
|
||||
ldr r0, _022255F4 ; =0x0224308C
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
@@ -8485,7 +8485,7 @@ _02225844:
|
||||
bl MOD13_022393D8
|
||||
mov r5, r0
|
||||
add r0, sp, #0x30
|
||||
bl FUN_02095EC8
|
||||
bl DWCi_BM_GetWiFiInfo
|
||||
ldr r1, [sp, #0x30]
|
||||
ldr r0, [sp, #0x34]
|
||||
mov r6, #0
|
||||
@@ -14113,7 +14113,7 @@ _0222A464:
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
||||
_0222A48C:
|
||||
add r0, sp, #8
|
||||
bl FUN_02095AE0
|
||||
bl DWC_BACKUPlCheckAddress
|
||||
cmp r0, #0
|
||||
movne r0, #1
|
||||
moveq r0, #0
|
||||
@@ -15568,11 +15568,11 @@ MOD13_0222B87C: ; 0x0222B87C
|
||||
cmp r0, #0
|
||||
bne _0222B8C8
|
||||
add r0, r4, #0xc8
|
||||
bl FUN_02095AE0
|
||||
bl DWC_BACKUPlCheckAddress
|
||||
cmp r0, #0
|
||||
bne _0222B8C8
|
||||
add r0, r4, #0xcc
|
||||
bl FUN_02095AE0
|
||||
bl DWC_BACKUPlCheckAddress
|
||||
cmp r0, #0
|
||||
moveq r0, #0
|
||||
ldmeqia sp!, {r4, pc}
|
||||
@@ -15581,18 +15581,18 @@ _0222B8C8:
|
||||
cmp r0, #0
|
||||
bne _0222B914
|
||||
add r0, r4, #0xc0
|
||||
bl FUN_02095AE0
|
||||
bl DWC_BACKUPlCheckAddress
|
||||
cmp r0, #0
|
||||
moveq r0, #0
|
||||
ldmeqia sp!, {r4, pc}
|
||||
add r0, r4, #0xc4
|
||||
bl FUN_02095AE0
|
||||
bl DWC_BACKUPlCheckAddress
|
||||
cmp r0, #0
|
||||
moveq r0, #0
|
||||
ldmeqia sp!, {r4, pc}
|
||||
add r0, r4, #0xc0
|
||||
add r1, r4, #0xf0
|
||||
bl FUN_02095B0C
|
||||
bl DWC_BACKUPlCheckIp
|
||||
cmp r0, #0
|
||||
moveq r0, #0
|
||||
ldmeqia sp!, {r4, pc}
|
||||
@@ -17255,7 +17255,7 @@ _0222D02C:
|
||||
bl MOD13_02234164
|
||||
mov r4, r0
|
||||
add r0, r4, #0xf0
|
||||
bl FUN_02095BE0
|
||||
bl DWCi_BACKUPlConvMaskCidr
|
||||
strb r0, [r4, #0xd0]
|
||||
ldrb r0, [r4, #0xf5]
|
||||
cmp r0, #0
|
||||
@@ -21999,11 +21999,11 @@ MOD13_02231090: ; 0x02231090
|
||||
bl MOD04_021EB9D8
|
||||
cmp r0, #0
|
||||
ldmeqia sp!, {r4, pc}
|
||||
bl FUN_02095324
|
||||
bl DWCi_BACKUPlGetWifi
|
||||
add r1, r4, #0xf0
|
||||
mov r2, #0xe
|
||||
bl MI_CpuCopy8
|
||||
bl FUN_02095324
|
||||
bl DWCi_BACKUPlGetWifi
|
||||
add r1, r4, #0x1f0
|
||||
mov r2, #0xe
|
||||
bl MI_CpuCopy8
|
||||
@@ -24971,7 +24971,7 @@ _022337BC:
|
||||
add r1, sp, #4
|
||||
ldr r0, [r0]
|
||||
str r2, [sp]
|
||||
bl FUN_02095CDC
|
||||
bl DWCi_BACKUPlWritePage
|
||||
add r0, sp, #0
|
||||
bl MOD13_0223AF90
|
||||
add sp, sp, #0x14
|
||||
@@ -25000,9 +25000,9 @@ _02233830:
|
||||
cmp r3, #3
|
||||
blt _02233830
|
||||
add r0, sp, #0
|
||||
bl FUN_020967A4
|
||||
bl DWCi_AUTH_GetNewWiFiInfo
|
||||
add r0, sp, #0
|
||||
bl FUN_02095330
|
||||
bl DWCi_BACKUPlConvWifiInfo
|
||||
mov r6, #0
|
||||
ldr r4, _022338B4 ; =0x02243150
|
||||
mov r8, r0
|
||||
@@ -25257,7 +25257,7 @@ _02233BB4:
|
||||
mov r2, #4
|
||||
bl MI_CpuCopy8
|
||||
add r0, r5, #0xf0
|
||||
bl FUN_02095BE0
|
||||
bl DWCi_BACKUPlConvMaskCidr
|
||||
strb r0, [r4, #0xd0]
|
||||
_02233BE0:
|
||||
ldrb r0, [r5, #0xf6]
|
||||
@@ -25340,7 +25340,7 @@ _02233CE8:
|
||||
ldrb r0, [r4, #0xd0]
|
||||
ldr r1, [r1]
|
||||
add r1, r1, #0x4f0
|
||||
bl FUN_02095BB0
|
||||
bl DWCi_BACKUPlConvMaskAddr
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {r4, r5, pc}
|
||||
.align 2, 0
|
||||
@@ -25734,7 +25734,7 @@ MOD13_0223418C: ; 0x0223418C
|
||||
bl MATHi_CRC16InitTableRev
|
||||
ldr r0, _022341D0 ; =0x02243150
|
||||
ldr r0, [r0]
|
||||
bl FUN_02095D68
|
||||
bl DWCi_BACKUPlRead
|
||||
add sp, sp, #4
|
||||
ldmia sp!, {pc}
|
||||
.align 2, 0
|
||||
@@ -31696,7 +31696,7 @@ MOD13_0223923C: ; 0x0223923C
|
||||
ldr r0, _0223932C ; =0x0000064C
|
||||
ldr r1, [r1]
|
||||
add r0, r1, r0
|
||||
bl FUN_02095D68
|
||||
bl DWCi_BACKUPlRead
|
||||
bl OS_GetTick
|
||||
bl MOD13_022338FC
|
||||
ldr r1, _02239328 ; =0x0224318C
|
||||
|
||||
@@ -215,7 +215,7 @@ MOD13_02217440: ; 0x02217440
|
||||
ldr r4, [sp, #0x10]
|
||||
strb r5, [r4]
|
||||
str r4, [sp]
|
||||
bl FUN_0209A7D0
|
||||
bl SOC_SendTo
|
||||
add sp, #4
|
||||
pop {r4, r5}
|
||||
pop {r3}
|
||||
@@ -250,7 +250,7 @@ MOD13_02217458: ; 0x02217458
|
||||
add r0, sp, #0
|
||||
mov r1, #1
|
||||
add r3, r4, #0
|
||||
bl FUN_0209A0AC
|
||||
bl SOC_Poll
|
||||
add sp, #8
|
||||
pop {r4, r5, r6}
|
||||
pop {r3}
|
||||
@@ -267,7 +267,7 @@ MOD13_022174A4: ; 0x022174A4
|
||||
ldr r4, [sp, #0x10]
|
||||
strb r5, [r4]
|
||||
str r4, [sp]
|
||||
bl FUN_0209A880
|
||||
bl SOC_RecvFrom
|
||||
add sp, #4
|
||||
pop {r4, r5}
|
||||
pop {r3}
|
||||
@@ -323,7 +323,7 @@ _022174FA:
|
||||
MOD13_02217504: ; 0x02217504
|
||||
push {lr}
|
||||
sub sp, #4
|
||||
bl THUNK_FUN_02099BC8
|
||||
bl SOC_Cleanup
|
||||
cmp r0, #0
|
||||
bge _0221751A
|
||||
mov r0, #0
|
||||
@@ -363,7 +363,7 @@ MOD13_02217530: ; 0x02217530
|
||||
ldr r1, _0221758C ; =0x0223F7C8
|
||||
str r0, [r1, #0x18]
|
||||
add r0, r1, #0
|
||||
bl FUN_0209A2C0
|
||||
bl SOC_Startup
|
||||
cmp r0, #0
|
||||
bge _0221756A
|
||||
mov r0, #0
|
||||
@@ -4941,7 +4941,7 @@ _0221994E:
|
||||
ldr r2, [sp, #4]
|
||||
ldr r2, [r2, #0x28]
|
||||
bl MI_CpuCopy8
|
||||
bl FUN_020A84D8
|
||||
bl WCM_ClearApList
|
||||
mov r0, #0
|
||||
ldr r1, [sp, #4]
|
||||
add r1, r1, #4
|
||||
@@ -5769,7 +5769,7 @@ MOD13_02219F54: ; 0x02219F54
|
||||
ldr r0, _0221A030 ; =0x02241A60
|
||||
ldr r0, [r0]
|
||||
ldr r1, _0221A044 ; =0x00002300
|
||||
bl FUN_020A7E80
|
||||
bl WCM_Init
|
||||
cmp r0, #0
|
||||
beq _02219FD4
|
||||
add r0, r4, #0
|
||||
@@ -5791,7 +5791,7 @@ _02219FDA:
|
||||
ldr r0, _0221A02C ; =0x02241A68
|
||||
ldr r0, [r0]
|
||||
ldr r1, _0221A048 ; =MOD13_0221A3CC
|
||||
bl FUN_020A7BD4
|
||||
bl WCM_StartupAsync
|
||||
cmp r0, #3
|
||||
beq _0221A000
|
||||
add r0, r4, #0
|
||||
@@ -5886,7 +5886,7 @@ _0221A0A8:
|
||||
ldr r1, [r1]
|
||||
ldr r2, _0221A0EC ; =0x02241A6C
|
||||
ldr r2, [r2]
|
||||
bl FUN_020A75C0
|
||||
bl WCM_ConnectAsync
|
||||
cmp r0, #3
|
||||
bne _0221A0DA
|
||||
mov r1, #8
|
||||
@@ -5922,7 +5922,7 @@ MOD13_0221A0FC: ; 0x0221A0FC
|
||||
ldr r0, [r0]
|
||||
cmp r0, #3
|
||||
bne _0221A136
|
||||
bl FUN_020A7AC8
|
||||
bl WCM_CleanupAsync
|
||||
cmp r0, #3
|
||||
beq _0221A122
|
||||
add r0, r4, #0
|
||||
@@ -5973,7 +5973,7 @@ MOD13_0221A164: ; 0x0221A164
|
||||
ldr r0, [r0]
|
||||
cmp r0, #7
|
||||
bne _0221A190
|
||||
bl FUN_020A7488
|
||||
bl WCM_DisconnectAsync
|
||||
cmp r0, #3
|
||||
bne _0221A190
|
||||
mov r1, #4
|
||||
@@ -6007,7 +6007,7 @@ MOD13_0221A1A4: ; 0x0221A1A4
|
||||
mov r0, #0
|
||||
add r1, r0, #0
|
||||
add r2, r0, #0
|
||||
bl FUN_020A7A90
|
||||
bl WCM_SearchAsync
|
||||
cmp r0, #3
|
||||
bne _0221A1D6
|
||||
mov r1, #4
|
||||
@@ -6121,7 +6121,7 @@ _0221A27C:
|
||||
ldr r1, [r1]
|
||||
ldr r2, _0221A2DC ; =0x02241A64
|
||||
ldr r2, [r2]
|
||||
bl FUN_020A7A90
|
||||
bl WCM_SearchAsync
|
||||
cmp r0, #3
|
||||
bne _0221A2CC
|
||||
mov r1, #6
|
||||
@@ -6173,8 +6173,8 @@ MOD13_0221A2FC: ; 0x0221A2FC
|
||||
add r5, r0, #0
|
||||
add r7, r1, #0
|
||||
mov r0, #1
|
||||
bl FUN_020A83D0
|
||||
bl FUN_020A846C
|
||||
bl WCM_LockApList
|
||||
bl WCM_CountApList
|
||||
add r6, r0, #0
|
||||
cmp r6, #0
|
||||
ble _0221A336
|
||||
@@ -6186,7 +6186,7 @@ _0221A31A:
|
||||
bge _0221A336
|
||||
lsl r0, r4, #0x10
|
||||
lsr r0, r0, #0x10
|
||||
bl FUN_020A8358
|
||||
bl WCM_PointApList
|
||||
add r1, r5, #0
|
||||
mov r2, #0xc0
|
||||
bl MIi_CpuCopy32
|
||||
@@ -6196,7 +6196,7 @@ _0221A31A:
|
||||
blt _0221A31A
|
||||
_0221A336:
|
||||
mov r0, #0
|
||||
bl FUN_020A83D0
|
||||
bl WCM_LockApList
|
||||
add r0, r6, #0
|
||||
add sp, #4
|
||||
pop {r4, r5, r6, r7}
|
||||
@@ -6233,7 +6233,7 @@ _0221A374:
|
||||
mov r0, #0
|
||||
add r1, r0, #0
|
||||
add r2, r0, #0
|
||||
bl FUN_020A7A90
|
||||
bl WCM_SearchAsync
|
||||
cmp r0, #3
|
||||
beq _0221A3B8
|
||||
mov r0, #0
|
||||
@@ -6241,7 +6241,7 @@ _0221A374:
|
||||
pop {r3}
|
||||
bx r3
|
||||
_0221A38A:
|
||||
bl FUN_020A7488
|
||||
bl WCM_DisconnectAsync
|
||||
cmp r0, #3
|
||||
beq _0221A3B8
|
||||
mov r0, #0
|
||||
@@ -6252,7 +6252,7 @@ _0221A39A:
|
||||
ldr r0, _0221A3C4 ; =0x02241A68
|
||||
ldr r0, [r0]
|
||||
ldr r1, _0221A3C8 ; =MOD13_0221A3CC
|
||||
bl FUN_020A7BD4
|
||||
bl WCM_StartupAsync
|
||||
cmp r0, #3
|
||||
beq _0221A3B8
|
||||
mov r0, #0
|
||||
@@ -6335,7 +6335,7 @@ _0221A426:
|
||||
ldr r1, [r1]
|
||||
ldr r2, _0221A768 ; =0x02241A64
|
||||
ldr r2, [r2]
|
||||
bl FUN_020A7A90
|
||||
bl WCM_SearchAsync
|
||||
cmp r0, #3
|
||||
bne _0221A440
|
||||
b _0221A750
|
||||
@@ -6366,7 +6366,7 @@ _0221A462:
|
||||
ldr r1, [r1]
|
||||
ldr r2, _0221A774 ; =0x02241A6C
|
||||
ldr r2, [r2]
|
||||
bl FUN_020A75C0
|
||||
bl WCM_ConnectAsync
|
||||
cmp r0, #3
|
||||
bne _0221A478
|
||||
b _0221A750
|
||||
@@ -6510,7 +6510,7 @@ _0221A55E:
|
||||
ldr r1, [r1]
|
||||
ldr r2, _0221A768 ; =0x02241A64
|
||||
ldr r2, [r2]
|
||||
bl FUN_020A7A90
|
||||
bl WCM_SearchAsync
|
||||
cmp r0, #3
|
||||
bne _0221A578
|
||||
b _0221A750
|
||||
@@ -6533,7 +6533,7 @@ _0221A588:
|
||||
_0221A594:
|
||||
cmp r2, #2
|
||||
bne _0221A5BE
|
||||
bl FUN_020A7AC8
|
||||
bl WCM_CleanupAsync
|
||||
cmp r0, #3
|
||||
bne _0221A5A2
|
||||
b _0221A750
|
||||
@@ -6564,7 +6564,7 @@ _0221A5C4:
|
||||
ldr r1, [r1]
|
||||
ldr r2, _0221A774 ; =0x02241A6C
|
||||
ldr r2, [r2]
|
||||
bl FUN_020A75C0
|
||||
bl WCM_ConnectAsync
|
||||
cmp r0, #3
|
||||
bne _0221A5DA
|
||||
b _0221A750
|
||||
@@ -6630,7 +6630,7 @@ _0221A638:
|
||||
ldr r1, [r1]
|
||||
ldr r2, _0221A768 ; =0x02241A64
|
||||
ldr r2, [r2]
|
||||
bl FUN_020A7A90
|
||||
bl WCM_SearchAsync
|
||||
cmp r0, #3
|
||||
beq _0221A750
|
||||
mov r1, #3
|
||||
@@ -6649,7 +6649,7 @@ _0221A638:
|
||||
_0221A66A:
|
||||
cmp r2, #2
|
||||
bne _0221A690
|
||||
bl FUN_020A7AC8
|
||||
bl WCM_CleanupAsync
|
||||
cmp r0, #3
|
||||
beq _0221A750
|
||||
mov r1, #3
|
||||
@@ -6674,7 +6674,7 @@ _0221A690:
|
||||
ldr r1, [r1]
|
||||
ldr r2, _0221A774 ; =0x02241A6C
|
||||
ldr r2, [r2]
|
||||
bl FUN_020A75C0
|
||||
bl WCM_ConnectAsync
|
||||
cmp r0, #3
|
||||
beq _0221A750
|
||||
mov r1, #3
|
||||
@@ -6718,7 +6718,7 @@ _0221A6E4:
|
||||
ldr r0, [r0]
|
||||
cmp r0, #2
|
||||
bne _0221A750
|
||||
bl FUN_020A7E0C
|
||||
bl WCM_Finish
|
||||
mov r1, #0
|
||||
ldr r0, _0221A758 ; =0x02241A78
|
||||
str r1, [r0]
|
||||
@@ -10807,7 +10807,7 @@ _0221C6FC:
|
||||
mov r0, #2
|
||||
lsl r1, r0, #0
|
||||
ldr r2, [sp, #0x10]
|
||||
bl FUN_0209A9D0
|
||||
bl SOC_Socket
|
||||
add r4, r0, #0
|
||||
cmp r4, #0
|
||||
bge _0221C716
|
||||
@@ -10831,7 +10831,7 @@ _0221C716:
|
||||
ldr r1, [sp, #0x18]
|
||||
str r1, [sp, #0x48]
|
||||
add r1, sp, #0x44
|
||||
bl FUN_0209A9A4
|
||||
bl SOC_Bind
|
||||
str r0, [sp, #4]
|
||||
cmp r0, #0
|
||||
bge _0221C746
|
||||
@@ -10851,7 +10851,7 @@ _0221C74C:
|
||||
cmp r0, r1
|
||||
blo _0221C768
|
||||
add r0, r4, #0
|
||||
bl thunk_FUN_0209996c
|
||||
bl SOC_Close
|
||||
ldr r0, [sp, #0x1c]
|
||||
str r0, [sp, #4]
|
||||
mov r0, #1
|
||||
@@ -10870,7 +10870,7 @@ _0221C768:
|
||||
ldr r1, _0221C9F8 ; =0x022427E4
|
||||
ldr r2, _0221C9FC ; =0x00000800
|
||||
mov r3, #4
|
||||
bl FUN_0209A880
|
||||
bl SOC_RecvFrom
|
||||
cmp r0, #0
|
||||
bgt _0221C78C
|
||||
b _0221CA3C
|
||||
@@ -10916,7 +10916,7 @@ _0221C7D8:
|
||||
cmp r0, r1
|
||||
blo _0221C7F4
|
||||
add r0, r4, #0
|
||||
bl thunk_FUN_0209996c
|
||||
bl SOC_Close
|
||||
ldr r0, [sp, #0x20]
|
||||
str r0, [sp, #4]
|
||||
mov r0, #1
|
||||
@@ -10929,7 +10929,7 @@ _0221C7F4:
|
||||
ldr r1, _0221C9F8 ; =0x022427E4
|
||||
ldr r2, _0221C9FC ; =0x00000800
|
||||
mov r3, #4
|
||||
bl FUN_0209A880
|
||||
bl SOC_RecvFrom
|
||||
cmp r0, #0
|
||||
ble _0221C86A
|
||||
ldr r0, _0221C9F8 ; =0x022427E4
|
||||
@@ -11042,7 +11042,7 @@ _0221C8DE:
|
||||
ldr r1, _0221C9F8 ; =0x022427E4
|
||||
ldr r2, _0221C9FC ; =0x00000800
|
||||
mov r3, #4
|
||||
bl FUN_0209A880
|
||||
bl SOC_RecvFrom
|
||||
cmp r0, #0
|
||||
ble _0221C932
|
||||
ldr r0, _0221C9F8 ; =0x022427E4
|
||||
@@ -11090,7 +11090,7 @@ _0221C932:
|
||||
cmp r0, #0xa
|
||||
blt _0221C95A
|
||||
add r0, r4, #0
|
||||
bl thunk_FUN_0209996c
|
||||
bl SOC_Close
|
||||
ldr r0, [sp, #0x14]
|
||||
str r0, [sp, #4]
|
||||
mov r0, #1
|
||||
@@ -11197,7 +11197,7 @@ _0221CA4C:
|
||||
cmp r4, #0
|
||||
beq _0221CA56
|
||||
add r0, r4, #0
|
||||
bl thunk_FUN_0209996c
|
||||
bl SOC_Close
|
||||
_0221CA56:
|
||||
ldr r0, _0221CA70 ; =0x02241AC0
|
||||
ldr r0, [r0]
|
||||
@@ -12531,9 +12531,9 @@ MOD13_0221D414: ; 0x0221D414
|
||||
str r0, [sp, #8]
|
||||
ldr r0, _0221D454 ; =0x000001E6
|
||||
strh r0, [r1, #2]
|
||||
bl FUN_02099C78
|
||||
bl SOCL_GetHostID
|
||||
add r1, sp, #0xc
|
||||
bl FUN_0209A174
|
||||
bl SOC_U32to4U8
|
||||
str r4, [sp]
|
||||
add r0, r5, #0
|
||||
add r1, sp, #4
|
||||
@@ -12555,7 +12555,7 @@ MOD13_0221D458: ; 0x0221D458
|
||||
add r1, r3, #0
|
||||
ldr r2, [sp, #8]
|
||||
mov r3, #0
|
||||
bl FUN_0209A7D0
|
||||
bl SOC_SendTo
|
||||
cmp r0, #0
|
||||
bge _0221D470
|
||||
mov r0, #3
|
||||
@@ -13228,7 +13228,7 @@ _0221D982:
|
||||
beq _0221D992
|
||||
mov r1, #0
|
||||
str r1, [r0]
|
||||
bl THUNK_FUN_02099BC8
|
||||
bl SOC_Cleanup
|
||||
_0221D992:
|
||||
pop {r4, r5, r6}
|
||||
pop {r3}
|
||||
@@ -13379,7 +13379,7 @@ _0221DA9A:
|
||||
ldr r0, _0221DAE8 ; =0x02241AD0
|
||||
str r1, [r0]
|
||||
ldr r0, _0221DAEC ; =0x0223F8D4
|
||||
bl FUN_0209A2C0
|
||||
bl SOC_Startup
|
||||
cmp r0, #0
|
||||
bge _0221DABC
|
||||
mov r0, #1
|
||||
@@ -13768,7 +13768,7 @@ MOD13_0221DD4C: ; 0x0221DD4C
|
||||
ldr r0, _0221DE28 ; =0x02241AEC
|
||||
ldr r0, [r0]
|
||||
ldr r1, _0221DE3C ; =0x00002300
|
||||
bl FUN_020A7E80
|
||||
bl WCM_Init
|
||||
cmp r0, #0
|
||||
beq _0221DDCC
|
||||
add r0, r4, #0
|
||||
@@ -13790,7 +13790,7 @@ _0221DDD2:
|
||||
ldr r0, _0221DE24 ; =0x02241AB8
|
||||
ldr r0, [r0]
|
||||
ldr r1, _0221DE40 ; =MOD13_0221E178
|
||||
bl FUN_020A7BD4
|
||||
bl WCM_StartupAsync
|
||||
cmp r0, #3
|
||||
beq _0221DDF8
|
||||
add r0, r4, #0
|
||||
@@ -13885,7 +13885,7 @@ _0221DEA0:
|
||||
ldr r1, [r1]
|
||||
ldr r2, _0221DEE4 ; =0x02241B08
|
||||
ldr r2, [r2]
|
||||
bl FUN_020A75C0
|
||||
bl WCM_ConnectAsync
|
||||
cmp r0, #3
|
||||
bne _0221DED2
|
||||
mov r1, #8
|
||||
@@ -13921,7 +13921,7 @@ MOD13_0221DEF4: ; 0x0221DEF4
|
||||
ldr r0, [r0]
|
||||
cmp r0, #3
|
||||
bne _0221DF2E
|
||||
bl FUN_020A7AC8
|
||||
bl WCM_CleanupAsync
|
||||
cmp r0, #3
|
||||
beq _0221DF1A
|
||||
add r0, r4, #0
|
||||
@@ -13972,7 +13972,7 @@ MOD13_0221DF5C: ; 0x0221DF5C
|
||||
ldr r0, [r0]
|
||||
cmp r0, #7
|
||||
bne _0221DF88
|
||||
bl FUN_020A7488
|
||||
bl WCM_DisconnectAsync
|
||||
cmp r0, #3
|
||||
bne _0221DF88
|
||||
mov r1, #4
|
||||
@@ -14081,7 +14081,7 @@ _0221E02A:
|
||||
ldr r1, [r1]
|
||||
ldr r2, _0221E088 ; =0x02241B10
|
||||
ldr r2, [r2]
|
||||
bl FUN_020A7A90
|
||||
bl WCM_SearchAsync
|
||||
cmp r0, #3
|
||||
bne _0221E078
|
||||
mov r1, #6
|
||||
@@ -14133,8 +14133,8 @@ MOD13_0221E0A8: ; 0x0221E0A8
|
||||
add r5, r0, #0
|
||||
add r7, r1, #0
|
||||
mov r0, #1
|
||||
bl FUN_020A83D0
|
||||
bl FUN_020A846C
|
||||
bl WCM_LockApList
|
||||
bl WCM_CountApList
|
||||
add r6, r0, #0
|
||||
cmp r6, #0
|
||||
ble _0221E0E2
|
||||
@@ -14146,7 +14146,7 @@ _0221E0C6:
|
||||
bge _0221E0E2
|
||||
lsl r0, r4, #0x10
|
||||
lsr r0, r0, #0x10
|
||||
bl FUN_020A8358
|
||||
bl WCM_PointApList
|
||||
add r1, r5, #0
|
||||
mov r2, #0xc0
|
||||
bl MIi_CpuCopy32
|
||||
@@ -14156,7 +14156,7 @@ _0221E0C6:
|
||||
blt _0221E0C6
|
||||
_0221E0E2:
|
||||
mov r0, #0
|
||||
bl FUN_020A83D0
|
||||
bl WCM_LockApList
|
||||
add r0, r6, #0
|
||||
add sp, #4
|
||||
pop {r4, r5, r6, r7}
|
||||
@@ -14193,7 +14193,7 @@ _0221E120:
|
||||
mov r0, #0
|
||||
add r1, r0, #0
|
||||
add r2, r0, #0
|
||||
bl FUN_020A7A90
|
||||
bl WCM_SearchAsync
|
||||
cmp r0, #3
|
||||
beq _0221E164
|
||||
mov r0, #0
|
||||
@@ -14201,7 +14201,7 @@ _0221E120:
|
||||
pop {r3}
|
||||
bx r3
|
||||
_0221E136:
|
||||
bl FUN_020A7488
|
||||
bl WCM_DisconnectAsync
|
||||
cmp r0, #3
|
||||
beq _0221E164
|
||||
mov r0, #0
|
||||
@@ -14212,7 +14212,7 @@ _0221E146:
|
||||
ldr r0, _0221E170 ; =0x02241AB8
|
||||
ldr r0, [r0]
|
||||
ldr r1, _0221E174 ; =MOD13_0221E178
|
||||
bl FUN_020A7BD4
|
||||
bl WCM_StartupAsync
|
||||
cmp r0, #3
|
||||
beq _0221E164
|
||||
mov r0, #0
|
||||
@@ -14297,7 +14297,7 @@ _0221E1D6:
|
||||
ldr r1, [r1]
|
||||
ldr r2, _0221E528 ; =0x02241B10
|
||||
ldr r2, [r2]
|
||||
bl FUN_020A7A90
|
||||
bl WCM_SearchAsync
|
||||
cmp r0, #3
|
||||
bne _0221E1F0
|
||||
b _0221E556
|
||||
@@ -14328,7 +14328,7 @@ _0221E212:
|
||||
ldr r1, [r1]
|
||||
ldr r2, _0221E534 ; =0x02241B08
|
||||
ldr r2, [r2]
|
||||
bl FUN_020A75C0
|
||||
bl WCM_ConnectAsync
|
||||
cmp r0, #3
|
||||
bne _0221E228
|
||||
b _0221E556
|
||||
@@ -14472,7 +14472,7 @@ _0221E30E:
|
||||
ldr r1, [r1]
|
||||
ldr r2, _0221E528 ; =0x02241B10
|
||||
ldr r2, [r2]
|
||||
bl FUN_020A7A90
|
||||
bl WCM_SearchAsync
|
||||
cmp r0, #3
|
||||
bne _0221E328
|
||||
b _0221E556
|
||||
@@ -14495,7 +14495,7 @@ _0221E338:
|
||||
_0221E344:
|
||||
cmp r2, #2
|
||||
bne _0221E36E
|
||||
bl FUN_020A7AC8
|
||||
bl WCM_CleanupAsync
|
||||
cmp r0, #3
|
||||
bne _0221E352
|
||||
b _0221E556
|
||||
@@ -14526,7 +14526,7 @@ _0221E374:
|
||||
ldr r1, [r1]
|
||||
ldr r2, _0221E534 ; =0x02241B08
|
||||
ldr r2, [r2]
|
||||
bl FUN_020A75C0
|
||||
bl WCM_ConnectAsync
|
||||
cmp r0, #3
|
||||
bne _0221E38A
|
||||
b _0221E556
|
||||
@@ -14592,7 +14592,7 @@ _0221E3E8:
|
||||
ldr r1, [r1]
|
||||
ldr r2, _0221E528 ; =0x02241B10
|
||||
ldr r2, [r2]
|
||||
bl FUN_020A7A90
|
||||
bl WCM_SearchAsync
|
||||
cmp r0, #3
|
||||
bne _0221E402
|
||||
b _0221E556
|
||||
@@ -14615,7 +14615,7 @@ _0221E412:
|
||||
_0221E41E:
|
||||
cmp r2, #2
|
||||
bne _0221E448
|
||||
bl FUN_020A7AC8
|
||||
bl WCM_CleanupAsync
|
||||
cmp r0, #3
|
||||
bne _0221E42C
|
||||
b _0221E556
|
||||
@@ -14644,7 +14644,7 @@ _0221E448:
|
||||
ldr r1, [r1]
|
||||
ldr r2, _0221E534 ; =0x02241B08
|
||||
ldr r2, [r2]
|
||||
bl FUN_020A75C0
|
||||
bl WCM_ConnectAsync
|
||||
cmp r0, #3
|
||||
beq _0221E556
|
||||
mov r1, #3
|
||||
@@ -14690,7 +14690,7 @@ _0221E4A0:
|
||||
ldr r0, [r0]
|
||||
cmp r0, #2
|
||||
bne _0221E556
|
||||
bl FUN_020A7E0C
|
||||
bl WCM_Finish
|
||||
mov r1, #0
|
||||
ldr r0, _0221E518 ; =0x02241ADC
|
||||
str r1, [r0]
|
||||
|
||||
@@ -2086,7 +2086,7 @@ _021D85B2:
|
||||
ldr r0, [sp, #4]
|
||||
add r6, r1, #0
|
||||
bl FUN_02028228
|
||||
bl FUN_02096D68
|
||||
bl DWC_CreateFriendKey
|
||||
eor r1, r6
|
||||
eor r0, r7
|
||||
orr r0, r1
|
||||
@@ -3492,7 +3492,7 @@ MOD55_021D90D8: ; 0x021D90D8
|
||||
ldrb r1, [r1, #0x18]
|
||||
sub r1, r1, #1
|
||||
bl FUN_0202838C
|
||||
bl FUN_02096E24
|
||||
bl DWC_GetFriendKey
|
||||
str r1, [sp, #4]
|
||||
add r4, r0, #0
|
||||
ldr r0, [sp, #4]
|
||||
@@ -3557,7 +3557,7 @@ MOD55_021D9184: ; 0x021D9184
|
||||
add r7, r1, #0
|
||||
bl FUN_020286EC
|
||||
bl FUN_02028228
|
||||
bl FUN_02096D68
|
||||
bl DWC_CreateFriendKey
|
||||
add r6, r0, #0
|
||||
add r4, r1, #0
|
||||
ldr r0, [r5, #4]
|
||||
@@ -5538,7 +5538,7 @@ MOD55_021DA224: ; 0x021DA224
|
||||
bl FUN_02028228
|
||||
add r1, r4, #0
|
||||
add r2, r6, #0
|
||||
bl FUN_020973B4
|
||||
bl DWC_CheckFriendKey
|
||||
cmp r0, #0
|
||||
bne _021DA24C
|
||||
mov r0, #0
|
||||
@@ -5562,7 +5562,7 @@ _021DA262:
|
||||
bl FUN_0202838C
|
||||
add r1, r4, #0
|
||||
add r2, r6, #0
|
||||
bl FUN_02096D2C
|
||||
bl DWC_CreateFriendKeyToken
|
||||
_021DA276:
|
||||
mov r0, #0
|
||||
pop {r3, r4, r5, r6, r7, pc}
|
||||
|
||||
@@ -1539,7 +1539,7 @@ _02212A9A:
|
||||
bl MOD56_022128A4
|
||||
ldr r0, [r5]
|
||||
bl FUN_02028228
|
||||
bl FUN_02096F80
|
||||
bl DWC_CheckHasProfile
|
||||
cmp r0, #0
|
||||
bne _02212AFA
|
||||
mov r0, #0
|
||||
@@ -1577,7 +1577,7 @@ _02212A9A:
|
||||
_02212AFA:
|
||||
ldr r0, [r5]
|
||||
bl FUN_02028228
|
||||
bl FUN_02096F18
|
||||
bl DWC_CheckValidConsole
|
||||
cmp r0, #0
|
||||
bne _02212B1A
|
||||
add r0, r5, #0
|
||||
|
||||
@@ -4723,7 +4723,7 @@ _022164D4:
|
||||
cmp r1, r0
|
||||
bne _02216524
|
||||
mov r0, r5
|
||||
bl FUN_0209A6EC
|
||||
bl SOC_GetHostByAddr
|
||||
cmp r0, #0
|
||||
moveq r0, #1
|
||||
streq r0, [r4, #0xfc]
|
||||
|
||||
@@ -1346,7 +1346,7 @@ _0222DFB4:
|
||||
mvn r0, r0
|
||||
cmp r4, r0
|
||||
beq _0222DFCC
|
||||
bl FUN_020A71F8
|
||||
bl WCM_GetPhase
|
||||
cmp r0, #9
|
||||
beq _0222DFC8
|
||||
mov r4, #0xd
|
||||
@@ -18661,7 +18661,7 @@ _022369CC:
|
||||
bl FUN_02023830
|
||||
add r6, r0, #0
|
||||
add r0, r4, #0
|
||||
bl FUN_02096D68
|
||||
bl DWC_CreateFriendKey
|
||||
add r3, r0, #0
|
||||
add r2, r1, #0
|
||||
add r0, r6, #0
|
||||
|
||||
@@ -596,7 +596,7 @@ _0222DA18:
|
||||
mvn r0, r0
|
||||
cmp r4, r0
|
||||
beq _0222DA30
|
||||
bl FUN_020A71F8
|
||||
bl WCM_GetPhase
|
||||
cmp r0, #9
|
||||
beq _0222DA2C
|
||||
mov r4, #5
|
||||
@@ -2282,7 +2282,7 @@ _0222E7C2:
|
||||
add r4, r0, #0
|
||||
ldr r0, [r5]
|
||||
ldr r0, [r0, #0x14]
|
||||
bl FUN_02096D68
|
||||
bl DWC_CreateFriendKey
|
||||
add r3, r0, #0
|
||||
add r2, r1, #0
|
||||
add r0, r4, #0
|
||||
|
||||
13
include/misc.h
Normal file
13
include/misc.h
Normal file
@@ -0,0 +1,13 @@
|
||||
#ifndef GUARD_MISC_H
|
||||
#define GUARD_MISC_H
|
||||
|
||||
// specify force-link.
|
||||
void OSi_ReferSymbol(void *symbol);
|
||||
#define SDK_REFER_SYMBOL(symbol) OSi_ReferSymbol((void*)(symbol))
|
||||
|
||||
// for embedding middleware version string in VERSION section.
|
||||
#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)
|
||||
|
||||
#endif //GUARD_MISC_H
|
||||
9
include/sections.h
Normal file
9
include/sections.h
Normal file
@@ -0,0 +1,9 @@
|
||||
#ifndef GUARD_SECTIONS_H
|
||||
#define GUARD_SECTIONS_H
|
||||
|
||||
#pragma define_section ITCM ".itcm" ".itcm.bss" abs32 RWX
|
||||
#pragma define_section DTCM ".dtcm" ".dtcm.bss" abs32 RWX
|
||||
#pragma define_section VERSION ".version" abs32 RWX
|
||||
#pragma define_section PARENT ".parent" abs32 RWX
|
||||
|
||||
#endif //GUARD_SECTIONS_H
|
||||
Reference in New Issue
Block a user