From 239062ea9dfc034d5f0fa99c0150508f2fe70f0c Mon Sep 17 00:00:00 2001 From: Nomura <72407407+Nomura-RH@users.noreply.github.com> Date: Fri, 30 Dec 2022 11:57:36 +0100 Subject: [PATCH] Match ov4_021D0D80.c and ov4_021D2808.c --- asm/include/overlay18.inc | 2 +- asm/include/overlay4_arm.inc | 18 +- asm/include/overlay4_thumb.inc | 104 +- asm/overlay004/ov4_021D0D80.inc | 124 -- asm/overlay004/ov4_021D0D80.s | 3538 ------------------------------ asm/overlay004/ov4_021D2808.inc | 54 - asm/overlay004/ov4_021D2808.s | 1088 --------- asm/overlay004/ov4_021D78C8.inc | 10 +- asm/overlay004/ov4_021D78C8.s | 58 +- asm/overlay004/ov4_021D8C08.inc | 4 +- asm/overlay004/ov4_021D8C08.s | 88 +- asm/overlay004/ov4_021DB170.s | 18 +- asm/overlay004/ov4_021DC734.s | 24 +- asm/overlay004/ov4_021E4A58.inc | 4 +- asm/overlay004/ov4_021E4A58.s | 52 +- asm/overlay004/ov4_02202698.s | 42 +- asm/overlay004/ov4_02204160.inc | 4 +- asm/overlay004/ov4_02204160.s | 34 +- asm/overlay004/ov4_02205270.s | 6 +- asm/overlay004/ov4_02205988.s | 24 +- asm/overlay018/ov18_0221F800.inc | 2 +- asm/overlay018/ov18_0221F800.s | 2 +- asm/overlay061/ov61_0222B008.inc | 2 +- asm/overlay061/ov61_0222B008.s | 2 +- asm/overlay061/ov61_0222BF44.inc | 16 +- asm/overlay061/ov61_0222BF44.s | 22 +- asm/overlay094/ov94_02244950.inc | 16 +- asm/overlay094/ov94_02244950.s | 30 +- asm/overlay096/ov96_0223BCE0.inc | 16 +- asm/overlay096/ov96_0223BCE0.s | 28 +- asm/overlay097/ov97_02238D74.inc | 14 +- asm/overlay097/ov97_02238D74.s | 16 +- asm/overlay098/ov98_022471C8.inc | 16 +- asm/overlay098/ov98_022471C8.s | 26 +- lib/include/vct.h | 180 ++ main.lsf | 6 +- src/overlay004/ov4_021D0D80.c | 1617 ++++++++++++++ src/overlay004/ov4_021D2808.c | 589 +++++ 38 files changed, 2739 insertions(+), 5157 deletions(-) delete mode 100644 asm/overlay004/ov4_021D0D80.inc delete mode 100644 asm/overlay004/ov4_021D0D80.s delete mode 100644 asm/overlay004/ov4_021D2808.inc delete mode 100644 asm/overlay004/ov4_021D2808.s create mode 100644 lib/include/vct.h create mode 100644 src/overlay004/ov4_021D0D80.c create mode 100644 src/overlay004/ov4_021D2808.c diff --git a/asm/include/overlay18.inc b/asm/include/overlay18.inc index 0b0410bc23..7603abdd21 100644 --- a/asm/include/overlay18.inc +++ b/asm/include/overlay18.inc @@ -5,5 +5,5 @@ .public OS_InitAlarm .public OS_DisableInterrupts .public OS_RestoreInterrupts -.public ov4_021D792C +.public DWC_SetAuthServer .public ov18_0222F20C diff --git a/asm/include/overlay4_arm.inc b/asm/include/overlay4_arm.inc index 929cc1f809..e892d6425b 100644 --- a/asm/include/overlay4_arm.inc +++ b/asm/include/overlay4_arm.inc @@ -215,12 +215,12 @@ .public ov4_021D7880 .public ov4_021D7894 .public ov4_021D78B0 -.public ov4_021D78C8 -.public ov4_021D797C +.public DWC_InitInetEx +.public DWC_ConnectInetAsync .public ov4_021D7A30 -.public ov4_021D7AE4 -.public ov4_021D7BFC -.public ov4_021D7DB0 +.public DWC_ProcessInet +.public DWC_GetInetStatus +.public DWC_CleanupInet .public ov4_021D7E80 .public DWC_UpdateConnection .public ov4_021D8144 @@ -236,9 +236,9 @@ .public ov4_021D8ABC .public ov4_021D8BDC .public ov4_021D97F4 -.public ov4_021D9968 +.public DWC_GetMyAID .public ov4_021D9984 -.public ov4_021D9A08 +.public DWC_IsValidAID .public ov4_021D9A40 .public ov4_021D9A5C .public ov4_021D9B24 @@ -1127,8 +1127,8 @@ .public ov4_02203CB8 .public ov4_02203CD8 .public ov4_02203DB0 -.public ov4_02204160 -.public ov4_02204188 +.public VCT_CreateSession +.public VCT_DeleteSession .public ov4_02204244 .public ov4_02204318 .public ov4_022044AC diff --git a/asm/include/overlay4_thumb.inc b/asm/include/overlay4_thumb.inc index 5571b6aaa5..d86ee3a30e 100644 --- a/asm/include/overlay4_thumb.inc +++ b/asm/include/overlay4_thumb.inc @@ -115,56 +115,56 @@ .public DWC_GetLastErrorEx .public DWC_ClearError .public DWC_SetMemFunc -.public ov4_021D78C8 -.public ov4_021D792C -.public ov4_021D797C -.public ov4_021D7A8C -.public ov4_021D7AE4 -.public ov4_021D7BFC -.public ov4_021D7DB0 -.public ov4_021D8C08 -.public ov4_021D8E8C -.public ov4_021D8FF4 -.public ov4_021D9244 -.public ov4_021D934C -.public ov4_021D93F4 -.public ov4_021D9494 -.public ov4_021D952C -.public ov4_021D9724 -.public ov4_021D9750 -.public ov4_021D985C -.public ov4_021D9920 -.public ov4_021D9968 +.public DWC_InitInetEx +.public DWC_SetAuthServer +.public DWC_ConnectInetAsync +.public DWC_CheckInet +.public DWC_ProcessInet +.public DWC_GetInetStatus +.public DWC_CleanupInet +.public DWC_InitFriendsMatch +.public DWC_ShutdownFriendsMatch +.public DWC_ProcessFriendsMatch +.public DWC_LoginAsync +.public DWC_UpdateServersAsync +.public DWC_ConnectToAnybodyAsync +.public DWC_SetupGameServer +.public DWC_ConnectToGameServerAsync +.public DWC_SetConnectionClosedCallback +.public DWC_CloseAllConnectionsHard +.public DWC_CloseConnectionHardBitmap +.public DWC_GetNumConnectionHost +.public DWC_GetMyAID .public DWC_GetAIDBitmap -.public ov4_021D9A08 -.public ov4_021DB2A4 -.public ov4_021DB350 -.public ov4_021DB3DC -.public ov4_021DC75C -.public ov4_021DC7C8 -.public ov4_021DC87C -.public ov4_021DC9AC -.public ov4_021E4A58 -.public ov4_021E4C28 -.public ov4_021E4D28 -.public ov4_021E4D74 -.public ov4_021E4D94 -.public ov4_021E4DB4 -.public ov4_021E4E60 -.public ov4_022027A8 -.public ov4_022028E0 -.public ov4_02202994 -.public ov4_02202CF0 -.public ov4_02202E0C -.public ov4_02202E80 -.public ov4_02202EB0 -.public ov4_02204160 -.public ov4_02204188 -.public ov4_022042F4 -.public ov4_022043D0 -.public ov4_022043F4 -.public ov4_022052BC -.public ov4_02205988 -.public ov4_02205AC0 -.public ov4_02205AE8 -.public ov4_02205B2C +.public DWC_IsValidAID +.public DWC_GetFriendStatusData +.public DWC_SetOwnStatusData +.public DWC_SetBuddyFriendCallback +.public DWC_CancelMatching +.public DWC_StopSCMatchingAsync +.public DWC_AddMatchKeyString +.public DWC_SetMatchingOption +.public DWC_IsSendableReliable +.public DWC_SendReliableBitmap +.public DWC_SetRecvBuffer +.public DWC_SetUserSendCallback +.public DWC_SetUserRecvCallback +.public DWC_SetUserRecvTimeoutCallback +.public DWC_SetRecvTimeoutTime +.public VCT_StartStreaming +.public VCT_StopStreaming +.public VCT_SendAudio +.public VCT_ReceiveAudio +.public VCT_SetCodec +.public VCT_EnableVAD +.public VCT_EnableEchoCancel +.public VCT_CreateSession +.public VCT_DeleteSession +.public VCT_Request +.public VCT_Response +.public VCT_AddConferenceClient +.public VCT_GetVADInfo +.public VCT_Init +.public VCT_Cleanup +.public VCT_Main +.public VCT_HandleData diff --git a/asm/overlay004/ov4_021D0D80.inc b/asm/overlay004/ov4_021D0D80.inc deleted file mode 100644 index 4c78e27e37..0000000000 --- a/asm/overlay004/ov4_021D0D80.inc +++ /dev/null @@ -1,124 +0,0 @@ -.public sub_02018144 -.public sub_020181C4 -.public sub_02018238 -.public GF_AssertFail -.public sub_0202AD28 -.public sub_0202AED8 -.public sub_0202B270 -.public sub_0202B370 -.public sub_0203068C -.public sub_020307F0 -.public sub_0203272C -.public sub_02032740 -.public sub_02035E18 -.public sub_02037F94 -.public sub_0203895C -.public sub_02038AE0 -.public DWC_IsBuddyFriendData -.public DWC_GetFriendDataType -.public DWC_CheckHasProfile -.public DWC_CheckValidConsole -.public DWC_CheckDirtyFlag -.public DWC_ClearDirtyFlag -.public DWC_CreateExchangeToken -.public NNS_FndCreateExpHeapEx -.public NNS_FndDestroyExpHeap -.public NNS_FndAllocFromExpHeapEx -.public NNS_FndFreeToExpHeap -.public NNS_FndGetTotalFreeSizeForExpHeap -.public NNS_FndSetGroupIDForExpHeap -.public NNS_FndGetGroupIDForMBlockExpHeap -.public OS_DisableInterrupts -.public OS_RestoreInterrupts -.public OS_GetOwnerInfo -.public MI_CpuFill8 -.public MI_CpuCopy8 -.public sprintf -.public strlen -.public _s32_div_f -.public ov4_021D0F68 -.public ov4_021D12B4 -.public ov4_021D1650 -.public ov4_021D16E8 -.public ov4_021D171C -.public ov4_021D1740 -.public ov4_021D1744 -.public ov4_021D17A0 -.public ov4_021D17A4 -.public ov4_021D17C0 -.public ov4_021D1854 -.public ov4_021D1898 -.public ov4_021D18F0 -.public ov4_021D18F4 -.public ov4_021D1918 -.public ov4_021D1950 -.public ov4_021D1A20 -.public ov4_021D1AA0 -.public ov4_021D1B04 -.public ov4_021D1B5C -.public ov4_021D1C5C -.public ov4_021D1CAC -.public ov4_021D1D1C -.public ov4_021D1E60 -.public ov4_021D1E74 -.public ov4_021D1F18 -.public ov4_021D21B4 -.public ov4_021D23A4 -.public ov4_021D2488 -.public ov4_021D24AC -.public ov4_021D24D8 -.public ov4_021D25AC -.public ov4_021D25FC -.public ov4_021D2700 -.public ov4_021D2748 -.public ov4_021D27CC -.public ov4_021D27E0 -.public ov4_021D2B28 -.public ov4_021D2C70 -.public ov4_021D2CC0 -.public ov4_021D2EA4 -.public ov4_021D2EF4 -.public ov4_021D2F08 -.public ov4_021D2F7C -.public ov4_021D2FA4 -.public ov4_021D2FB8 -.public ov4_021D2FCC -.public DWC_GetLastErrorEx -.public DWC_ClearError -.public DWC_SetMemFunc -.public ov4_021D78C8 -.public ov4_021D792C -.public ov4_021D797C -.public ov4_021D7A8C -.public ov4_021D7AE4 -.public ov4_021D7BFC -.public ov4_021D7DB0 -.public ov4_021D8C08 -.public ov4_021D8E8C -.public ov4_021D8FF4 -.public ov4_021D9244 -.public ov4_021D934C -.public ov4_021D93F4 -.public ov4_021D9494 -.public ov4_021D952C -.public ov4_021D9724 -.public ov4_021D9750 -.public ov4_021D985C -.public ov4_021D9920 -.public ov4_021D9968 -.public DWC_GetAIDBitmap -.public ov4_021D9A08 -.public ov4_021DB2A4 -.public ov4_021DB350 -.public ov4_021DB3DC -.public ov4_021DC75C -.public ov4_021DC7C8 -.public ov4_021DC87C -.public ov4_021DC9AC -.public ov4_021E4A58 -.public ov4_021E4C28 -.public ov4_021E4D28 -.public ov4_021E4D74 -.public ov4_021E4D94 -.public ov4_021E4DB4 -.public ov4_021E4E60 diff --git a/asm/overlay004/ov4_021D0D80.s b/asm/overlay004/ov4_021D0D80.s deleted file mode 100644 index 1a87c76781..0000000000 --- a/asm/overlay004/ov4_021D0D80.s +++ /dev/null @@ -1,3538 +0,0 @@ - .include "macros/function.inc" - .include "overlay004/ov4_021D0D80.inc" - - - - .text - - - thumb_func_start ov4_021D0D80 -ov4_021D0D80: ; 0x021D0D80 - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - str r0, [sp, #4] - ldr r0, _021D0F44 ; =0x0221A400 - add r5, r1, #0 - ldr r0, [r0, #0] - add r4, r2, #0 - str r3, [sp] - cmp r0, #0 - beq _021D0D98 - bl GF_AssertFail -_021D0D98: - ldr r1, _021D0F48 ; =0x00001108 - add r0, r5, #0 - bl sub_02018144 - ldr r2, _021D0F48 ; =0x00001108 - add r6, r0, #0 - mov r1, #0 - bl MI_CpuFill8 - add r2, r6, #0 - add r2, #0x1f - mov r0, #0x1f - bic r2, r0 - ldr r1, _021D0F44 ; =0x0221A400 - ldr r0, _021D0F4C ; =0x00000F7C - str r2, [r1, #0] - str r6, [r2, r0] - ldr r6, [r1, #0] - ldr r2, [sp, #4] - sub r3, r0, #4 - str r2, [r6, r3] - add r3, r0, #0 - ldr r6, [r1, #0] - mov r2, #0 - add r3, #0x28 - str r2, [r6, r3] - add r3, r0, #0 - ldr r6, [r1, #0] - add r3, #0x2c - str r2, [r6, r3] - add r3, r0, #0 - ldr r6, [r1, #0] - add r3, #0x44 - str r2, [r6, r3] - ldr r3, [r1, #0] - add r0, #0xf4 - str r2, [r3, r0] - ldr r0, [r1, #0] - ldr r2, _021D0F50 ; =0x00001084 - str r5, [r0, r2] - add r0, r2, #4 - ldr r3, [r1, #0] - add r2, #8 - str r5, [r3, r0] - ldr r0, [r1, #0] - ldr r1, _021D0F54 ; =0x00003020 - str r4, [r0, r2] - add r0, r5, #0 - add r1, r4, r1 - bl sub_02018144 - ldr r3, _021D0F44 ; =0x0221A400 - mov r1, #0xf9 - ldr r2, [r3, #0] - lsl r1, r1, #4 - str r0, [r2, r1] - add r0, r1, #0 - ldr r5, [r3, #0] - mov r2, #0 - add r0, #8 - str r2, [r5, r0] - ldr r0, [r3, #0] - ldr r0, [r0, r1] - mov r1, #0x1f - add r0, #0x1f - bic r0, r1 - add r1, r4, #0 - bl NNS_FndCreateExpHeapEx - ldr r4, _021D0F44 ; =0x0221A400 - mov r6, #0 - ldr r2, [r4, #0] - ldr r1, _021D0F58 ; =0x00000F94 - sub r7, r6, #1 - str r0, [r2, r1] - add r0, r1, #0 - ldr r2, [r4, #0] - add r0, #8 - str r6, [r2, r0] - ldr r0, [r4, #0] - ldr r2, _021D0F5C ; =0x000010A4 - str r6, [r0, r2] - add r0, r2, #0 - ldr r3, [r4, #0] - sub r0, #0x10 - str r7, [r3, r0] - add r0, r2, #0 - ldr r3, [r4, #0] - sub r0, #0x38 - str r6, [r3, r0] - add r3, r2, #0 - ldr r5, [r4, #0] - ldr r0, [sp] - sub r3, #0x28 - str r0, [r5, r3] - add r0, r2, #0 - ldr r3, [r4, #0] - sub r0, #0x24 - str r6, [r3, r0] - add r0, r2, #0 - ldr r3, [r4, #0] - add r0, #0x34 - str r6, [r3, r0] - add r0, r2, #0 - ldr r3, [r4, #0] - sub r0, #0xc - str r7, [r3, r0] - add r3, r2, #0 - ldr r5, [r4, #0] - mov r0, #1 - sub r3, #8 - str r0, [r5, r3] - add r3, r2, #0 - ldr r5, [r4, #0] - add r3, #0x3a - strb r6, [r5, r3] - add r3, r2, #0 - ldr r5, [r4, #0] - add r3, #0x28 - str r6, [r5, r3] - add r3, r2, #0 - ldr r5, [r4, #0] - add r3, #0x38 - strb r6, [r5, r3] - add r3, r2, #0 - ldr r5, [r4, #0] - add r3, #0x39 - strb r6, [r5, r3] - add r3, r2, #0 - ldr r5, [r4, #0] - add r3, #0x30 - strh r0, [r5, r3] - add r3, r2, #0 - ldr r5, [r4, #0] - add r3, #0x2c - str r0, [r5, r3] - ldr r3, [r4, #0] - add r2, #0x32 - strh r0, [r3, r2] - ldr r0, [sp, #4] - cmp r0, #0 - beq _021D0EE6 - ldr r0, [r4, #0] - sub r1, #0x1c - ldr r0, [r0, r1] - bl sub_0202B370 - bl sub_0202AD28 - add r2, r4, #0 - mov r1, #0xf1 - ldr r3, [r2, #0] - lsl r1, r1, #4 - str r0, [r3, r1] - ldr r0, [r2, #0] - add r1, #0x68 - ldr r0, [r0, r1] - bl sub_0202B370 - add r1, r6, #0 - bl sub_0202AED8 - add r1, r4, #0 - ldr r2, [r1, #0] - mov r1, #1 - lsl r1, r1, #8 - str r0, [r2, r1] -_021D0EE6: - ldr r2, _021D0F44 ; =0x0221A400 - ldr r1, _021D0F60 ; =0x000010E5 - ldr r0, [r2, #0] - mov r3, #1 - strb r3, [r0, r1] - mov r0, #0 - ldr r3, [r2, #0] - sub r1, #0x81 - str r0, [r3, r1] - ldr r1, _021D0F64 ; =0x00001044 - add r4, r0, #0 -_021D0EFC: - ldr r3, [r2, #0] - add r3, r3, r0 - add r0, r0, #1 - strb r4, [r3, r1] - cmp r0, #0x20 - blt _021D0EFC - bl ov4_021D24D8 - ldr r0, _021D0F44 ; =0x0221A400 - ldr r1, [r0, #0] - mov r0, #0xf1 - lsl r0, r0, #4 - ldr r0, [r1, r0] - bl DWC_CheckHasProfile - cmp r0, #0 - bne _021D0F24 - add sp, #8 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D0F24: - ldr r0, _021D0F44 ; =0x0221A400 - ldr r1, [r0, #0] - mov r0, #0xf1 - lsl r0, r0, #4 - ldr r0, [r1, r0] - bl DWC_CheckValidConsole - cmp r0, #0 - beq _021D0F3C - add sp, #8 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_021D0F3C: - mov r0, #2 - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - nop -_021D0F44: .word 0x0221A400 -_021D0F48: .word 0x00001108 -_021D0F4C: .word 0x00000F7C -_021D0F50: .word 0x00001084 -_021D0F54: .word 0x00003020 -_021D0F58: .word 0x00000F94 -_021D0F5C: .word 0x000010A4 -_021D0F60: .word 0x000010E5 -_021D0F64: .word 0x00001044 - thumb_func_end ov4_021D0D80 - - thumb_func_start ov4_021D0F68 -ov4_021D0F68: ; 0x021D0F68 - push {r3, lr} - ldr r0, _021D0FD8 ; =0x0221A400 - ldr r0, [r0, #0] - cmp r0, #0 - beq _021D0FD2 - bl ov4_021D27CC - ldr r0, _021D0FD8 ; =0x0221A400 - ldr r2, [r0, #0] - ldr r0, _021D0FDC ; =0x00000F98 - ldr r1, [r2, r0] - cmp r1, #0 - beq _021D0FA0 - add r0, r0, #4 - ldr r0, [r2, r0] - bl NNS_FndDestroyExpHeap - ldr r0, _021D0FD8 ; =0x0221A400 - ldr r1, [r0, #0] - ldr r0, _021D0FDC ; =0x00000F98 - ldr r0, [r1, r0] - bl sub_020181C4 - ldr r0, _021D0FD8 ; =0x0221A400 - mov r2, #0 - ldr r1, [r0, #0] - ldr r0, _021D0FDC ; =0x00000F98 - str r2, [r1, r0] -_021D0FA0: - ldr r0, _021D0FD8 ; =0x0221A400 - ldr r1, [r0, #0] - ldr r0, _021D0FE0 ; =0x00000F94 - ldr r0, [r1, r0] - bl NNS_FndDestroyExpHeap - ldr r0, _021D0FD8 ; =0x0221A400 - ldr r1, _021D0FE4 ; =0x00001084 - ldr r2, [r0, #0] - ldr r0, [r2, r1] - sub r1, #0xf4 - ldr r1, [r2, r1] - bl sub_02018238 - ldr r0, _021D0FD8 ; =0x0221A400 - ldr r1, _021D0FE8 ; =0x00000F7C - ldr r2, [r0, #0] - ldr r0, _021D0FE4 ; =0x00001084 - ldr r1, [r2, r1] - ldr r0, [r2, r0] - bl sub_02018238 - ldr r0, _021D0FD8 ; =0x0221A400 - mov r1, #0 - str r1, [r0, #0] -_021D0FD2: - blx DWC_ClearError - pop {r3, pc} - ; .align 2, 0 -_021D0FD8: .word 0x0221A400 -_021D0FDC: .word 0x00000F98 -_021D0FE0: .word 0x00000F94 -_021D0FE4: .word 0x00001084 -_021D0FE8: .word 0x00000F7C - thumb_func_end ov4_021D0F68 - - thumb_func_start ov4_021D0FEC -ov4_021D0FEC: ; 0x021D0FEC - push {r3, lr} - sub sp, #0x68 - ldr r0, _021D10E0 ; =0x0221A400 - ldr r1, [r0, #0] - ldr r0, _021D10E4 ; =0x00001070 - ldr r0, [r1, r0] - cmp r0, #4 - bhi _021D10D6 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021D1008: ; jump table - .short _021D1012 - _021D1008 - 2 ; case 0 - .short _021D1048 - _021D1008 - 2 ; case 1 - .short _021D1076 - _021D1008 - 2 ; case 2 - .short _021D10C6 - _021D1008 - 2 ; case 3 - .short _021D10CC - _021D1008 - 2 ; case 4 -_021D1012: - ldr r0, _021D10E8 ; =ov4_021D1AA0 - ldr r1, _021D10EC ; =ov4_021D1B04 - blx DWC_SetMemFunc - ldr r0, _021D10E0 ; =0x0221A400 - mov r2, #1 - ldr r1, [r0, #0] - ldr r0, _021D10F0 ; =0x00000F14 - mov r3, #0x14 - add r0, r1, r0 - mov r1, #2 - blx ov4_021D78C8 - mov r0, #2 - blx ov4_021D792C - blx ov4_021D797C - ldr r1, _021D10E0 ; =0x0221A400 - ldr r0, _021D10E4 ; =0x00001070 - ldr r2, [r1, #0] - mov r3, #1 - str r3, [r2, r0] - ldr r1, [r1, #0] - mov r2, #0 - add r0, #0x20 - str r2, [r1, r0] -_021D1048: - blx ov4_021D7A8C - cmp r0, #0 - beq _021D1070 - blx ov4_021D7BFC - cmp r0, #4 - bne _021D1064 - ldr r0, _021D10E0 ; =0x0221A400 - mov r2, #2 - ldr r1, [r0, #0] - ldr r0, _021D10E4 ; =0x00001070 - str r2, [r1, r0] - b _021D1076 -_021D1064: - ldr r0, _021D10E0 ; =0x0221A400 - mov r2, #0xc - ldr r1, [r0, #0] - ldr r0, _021D10E4 ; =0x00001070 - str r2, [r1, r0] - b _021D1076 -_021D1070: - blx ov4_021D7AE4 - b _021D10D6 -_021D1076: - bl ov4_021D1B5C - cmp r0, #0 - bne _021D10DA - ldr r0, _021D10E0 ; =0x0221A400 - mov r2, #0xf1 - ldr r1, [r0, #0] - ldr r0, _021D10F4 ; =0x02215E8C - lsl r2, r2, #4 - str r0, [sp] - mov r0, #0 - str r0, [sp, #4] - str r0, [sp, #8] - mov r0, #1 - lsl r0, r0, #8 - ldr r0, [r1, r0] - ldr r3, _021D10F8 ; =0x02215E80 - str r0, [sp, #0xc] - mov r0, #0x20 - str r0, [sp, #0x10] - add r0, #0xe4 - add r0, r1, r0 - ldr r1, [r1, r2] - ldr r2, _021D10FC ; =0x000029E7 - blx ov4_021D8C08 - add r0, sp, #0x14 - bl OS_GetOwnerInfo - mov r1, #0 - ldr r2, _021D1100 ; =ov4_021D1650 - add r0, sp, #0x18 - add r3, r1, #0 - blx ov4_021D9244 - ldr r0, _021D10E0 ; =0x0221A400 - mov r2, #3 - ldr r1, [r0, #0] - ldr r0, _021D10E4 ; =0x00001070 - str r2, [r1, r0] -_021D10C6: - blx ov4_021D8FF4 - b _021D10D6 -_021D10CC: - blx ov4_021D8FF4 - add sp, #0x68 - mov r0, #0x1b - pop {r3, pc} -_021D10D6: - bl ov4_021D1B5C -_021D10DA: - add sp, #0x68 - pop {r3, pc} - nop -_021D10E0: .word 0x0221A400 -_021D10E4: .word 0x00001070 -_021D10E8: .word ov4_021D1AA0 -_021D10EC: .word ov4_021D1B04 -_021D10F0: .word 0x00000F14 -_021D10F4: .word 0x02215E8C -_021D10F8: .word 0x02215E80 -_021D10FC: .word 0x000029E7 -_021D1100: .word ov4_021D1650 - thumb_func_end ov4_021D0FEC - - thumb_func_start ov4_021D1104 -ov4_021D1104: ; 0x021D1104 - push {r3, r4} - ldr r3, _021D1118 ; =0x0221A400 - ldr r2, _021D111C ; =0x00000FA4 - ldr r4, [r3, #0] - str r0, [r4, r2] - ldr r3, [r3, #0] - add r0, r2, #4 - str r1, [r3, r0] - pop {r3, r4} - bx lr - ; .align 2, 0 -_021D1118: .word 0x0221A400 -_021D111C: .word 0x00000FA4 - thumb_func_end ov4_021D1104 - - thumb_func_start ov4_021D1120 -ov4_021D1120: ; 0x021D1120 - push {r3, r4} - ldr r3, _021D1134 ; =0x0221A400 - ldr r2, _021D1138 ; =0x00000FAC - ldr r4, [r3, #0] - str r0, [r4, r2] - ldr r3, [r3, #0] - add r0, r2, #4 - str r1, [r3, r0] - pop {r3, r4} - bx lr - ; .align 2, 0 -_021D1134: .word 0x0221A400 -_021D1138: .word 0x00000FAC - thumb_func_end ov4_021D1120 - - thumb_func_start ov4_021D113C -ov4_021D113C: ; 0x021D113C - ldr r1, _021D1148 ; =0x0221A400 - ldr r2, [r1, #0] - ldr r1, _021D114C ; =0x00000FBC - str r0, [r2, r1] - bx lr - nop -_021D1148: .word 0x0221A400 -_021D114C: .word 0x00000FBC - thumb_func_end ov4_021D113C - - thumb_func_start ov4_021D1150 -ov4_021D1150: ; 0x021D1150 - push {r3, r4} - ldr r3, _021D1164 ; =0x0221A400 - ldr r2, _021D1168 ; =0x00000FB4 - ldr r4, [r3, #0] - str r0, [r4, r2] - ldr r3, [r3, #0] - add r0, r2, #4 - str r1, [r3, r0] - pop {r3, r4} - bx lr - ; .align 2, 0 -_021D1164: .word 0x0221A400 -_021D1168: .word 0x00000FB4 - thumb_func_end ov4_021D1150 - - thumb_func_start ov4_021D116C -ov4_021D116C: ; 0x021D116C - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x10 - add r5, r0, #0 - ldr r0, _021D127C ; =0x0221A400 - add r4, r1, #0 - ldr r0, [r0, #0] - add r6, r2, #0 - add r7, r3, #0 - cmp r0, #0 - bne _021D1184 - bl GF_AssertFail -_021D1184: - ldr r0, _021D127C ; =0x0221A400 - ldr r1, [r0, #0] - ldr r0, _021D1280 ; =0x00001070 - ldr r0, [r1, r0] - cmp r0, #4 - beq _021D1196 - add sp, #0x10 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_021D1196: - bl ov4_021D27CC - ldr r2, _021D1284 ; =0x02215868 - add r1, sp, #8 - ldmia r2!, {r0, r2} - str r0, [sp, #8] - mov r0, #0xfa - lsl r0, r0, #2 - str r2, [sp, #0xc] - mul r0, r7 - str r0, [sp, #0xc] - mov r0, #0 - mov r2, #8 - blx ov4_021DC9AC - cmp r0, #0 - beq _021D11BC - bl GF_AssertFail -_021D11BC: - ldr r1, _021D1288 ; =0x02215E94 - mov r0, #0 - add r2, r5, #0 - blx ov4_021DC87C - cmp r0, #0 - bne _021D11CE - bl GF_AssertFail -_021D11CE: - ldr r0, _021D127C ; =0x0221A400 - mov r2, #0x80 - ldr r1, [r0, #0] - ldr r0, _021D128C ; =0x00000FC4 - add r0, r1, r0 - mov r1, #0 - bl MI_CpuFill8 - ldr r0, _021D127C ; =0x0221A400 - ldr r2, _021D1288 ; =0x02215E94 - ldr r1, [r0, #0] - ldr r0, _021D128C ; =0x00000FC4 - add r3, r5, #0 - add r0, r1, r0 - ldr r1, _021D1290 ; =0x02215870 - bl sprintf - ldr r0, _021D127C ; =0x0221A400 - ldr r1, [r0, #0] - ldr r0, _021D128C ; =0x00000FC4 - add r0, r1, r0 - bl strlen - cmp r0, #0x80 - blo _021D1204 - bl GF_AssertFail -_021D1204: - cmp r6, #0 - beq _021D1218 - ldr r0, _021D127C ; =0x0221A400 - ldr r2, _021D128C ; =0x00000FC4 - ldr r3, [r0, #0] - mov r0, #1 - add r1, r3, r2 - add r2, r3, r2 - blx ov4_021DC87C -_021D1218: - ldr r2, _021D127C ; =0x0221A400 - ldr r1, _021D1280 ; =0x00001070 - ldr r0, [r2, #0] - mov r3, #5 - str r3, [r0, r1] - add r0, r1, #0 - ldr r3, [r2, #0] - add r0, #0xc - str r4, [r3, r0] - ldr r0, _021D1294 ; =ov4_021D18F0 - mov r3, #0 - str r0, [sp] - str r3, [sp, #4] - lsl r0, r4, #0x18 - ldr r2, [r2, #0] - sub r1, #0xac - add r1, r2, r1 - ldr r2, _021D1298 ; =ov4_021D1898 - lsr r0, r0, #0x18 - blx ov4_021D93F4 - ldr r0, _021D127C ; =0x0221A400 - mov r2, #0 - ldr r1, [r0, #0] - ldr r0, _021D129C ; =0x00001074 - str r2, [r1, r0] - ldr r0, _021D12A0 ; =ov4_021D18F4 - blx ov4_021E4D74 - ldr r0, _021D12A4 ; =ov4_021D1950 - blx ov4_021E4D94 - ldr r0, _021D12A8 ; =ov4_021D1A20 - mov r1, #0 - blx ov4_021D9724 - ldr r0, _021D12AC ; =ov4_021D16E8 - blx ov4_021E4DB4 - ldr r2, _021D127C ; =0x0221A400 - ldr r1, _021D12B0 ; =0x00001078 - ldr r0, [r2, #0] - mov r3, #0 - str r3, [r0, r1] - ldr r2, [r2, #0] - mov r0, #1 - add r1, #0x6d - strb r0, [r2, r1] - add sp, #0x10 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021D127C: .word 0x0221A400 -_021D1280: .word 0x00001070 -_021D1284: .word 0x02215868 -_021D1288: .word 0x02215E94 -_021D128C: .word 0x00000FC4 -_021D1290: .word 0x02215870 -_021D1294: .word ov4_021D18F0 -_021D1298: .word ov4_021D1898 -_021D129C: .word 0x00001074 -_021D12A0: .word ov4_021D18F4 -_021D12A4: .word ov4_021D1950 -_021D12A8: .word ov4_021D1A20 -_021D12AC: .word ov4_021D16E8 -_021D12B0: .word 0x00001078 - thumb_func_end ov4_021D116C - - thumb_func_start ov4_021D12B4 -ov4_021D12B4: ; 0x021D12B4 - ldr r0, _021D12CC ; =0x0221A400 - ldr r2, [r0, #0] - ldr r0, _021D12D0 ; =0x00001070 - ldr r1, [r2, r0] - cmp r1, #0xa - bne _021D12C6 - mov r1, #0xb - str r1, [r2, r0] - bx lr -_021D12C6: - mov r1, #9 - str r1, [r2, r0] - bx lr - ; .align 2, 0 -_021D12CC: .word 0x0221A400 -_021D12D0: .word 0x00001070 - thumb_func_end ov4_021D12B4 - - thumb_func_start ov4_021D12D4 -ov4_021D12D4: ; 0x021D12D4 - push {r4, lr} - ldr r2, _021D13F0 ; =0x0221A400 - ldr r1, _021D13F4 ; =0x00001070 - ldr r3, [r2, #0] - ldr r4, [r3, r1] - cmp r4, #0x10 - bls _021D12E4 - b _021D13E8 -_021D12E4: - add r4, r4, r4 - add r4, pc - ldrh r4, [r4, #6] - lsl r4, r4, #0x10 - asr r4, r4, #0x10 - add pc, r4 -_021D12F0: ; jump table - .short _021D13E8 - _021D12F0 - 2 ; case 0 - .short _021D13E8 - _021D12F0 - 2 ; case 1 - .short _021D13E8 - _021D12F0 - 2 ; case 2 - .short _021D13E8 - _021D12F0 - 2 ; case 3 - .short _021D13E8 - _021D12F0 - 2 ; case 4 - .short _021D1312 - _021D12F0 - 2 ; case 5 - .short _021D1344 - _021D12F0 - 2 ; case 6 - .short _021D135C - _021D12F0 - 2 ; case 7 - .short _021D13E8 - _021D12F0 - 2 ; case 8 - .short _021D1398 - _021D12F0 - 2 ; case 9 - .short _021D1344 - _021D12F0 - 2 ; case 10 - .short _021D13B2 - _021D12F0 - 2 ; case 11 - .short _021D13CC - _021D12F0 - 2 ; case 12 - .short _021D13E8 - _021D12F0 - 2 ; case 13 - .short _021D13E8 - _021D12F0 - 2 ; case 14 - .short _021D13E8 - _021D12F0 - 2 ; case 15 - .short _021D13D2 - _021D12F0 - 2 ; case 16 -_021D1312: - cmp r0, #0 - beq _021D131A - mov r0, #6 - str r0, [r3, r1] -_021D131A: - ldr r0, _021D13F0 ; =0x0221A400 - ldr r2, _021D13F8 ; =0x00001074 - ldr r0, [r0, #0] - ldr r1, [r0, r2] - cmp r1, #2 - bne _021D13E8 - add r1, r2, #0 - add r1, #0x20 - ldr r1, [r0, r1] - cmp r1, #0 - blt _021D13E8 - add r3, r0, r1 - add r1, r2, #0 - sub r1, #0x30 - ldrb r1, [r3, r1] - cmp r1, #6 - beq _021D13E8 - mov r3, #0xa - sub r1, r2, #4 - str r3, [r0, r1] - b _021D13E8 -_021D1344: - add r0, r1, #4 - ldr r0, [r3, r0] - cmp r0, #0 - bne _021D1352 - blx ov4_021DC75C - b _021D13E8 -_021D1352: - blx ov4_021D9750 - bl ov4_021D12B4 - b _021D13E8 -_021D135C: - bl sub_0203895C - bl sub_0203272C - cmp r0, #0 - bne _021D1374 - ldr r0, _021D13F0 ; =0x0221A400 - ldr r1, [r0, #0] - ldr r0, _021D13FC ; =0x00001084 - ldr r0, [r1, r0] - bl ov4_021D1E74 -_021D1374: - ldr r0, _021D13F0 ; =0x0221A400 - ldr r2, [r0, #0] - ldr r0, _021D1400 ; =0x0000109C - ldr r1, [r2, r0] - cmp r1, #0 - beq _021D1384 - mov r1, #1 - b _021D1386 -_021D1384: - mov r1, #0 -_021D1386: - add r0, #0x38 - strh r1, [r2, r0] - ldr r0, _021D13F0 ; =0x0221A400 - mov r2, #8 - ldr r1, [r0, #0] - ldr r0, _021D13F4 ; =0x00001070 - str r2, [r1, r0] - mov r0, #0x14 - pop {r4, pc} -_021D1398: - mov r0, #4 - str r0, [r3, r1] - add r0, r1, #0 - ldr r3, [r2, #0] - mov r4, #0 - add r0, #8 - str r4, [r3, r0] - ldr r0, [r2, #0] - sub r3, r4, #1 - add r1, #0x28 - str r3, [r0, r1] - mov r0, #0x15 - pop {r4, pc} -_021D13B2: - mov r0, #4 - str r0, [r3, r1] - add r0, r1, #0 - ldr r3, [r2, #0] - mov r4, #0 - add r0, #8 - str r4, [r3, r0] - ldr r0, [r2, #0] - sub r3, r4, #1 - add r1, #0x28 - str r3, [r0, r1] - mov r0, #0x16 - pop {r4, pc} -_021D13CC: - bl ov4_021D1B5C - pop {r4, pc} -_021D13D2: - add r1, #0x20 - ldr r0, [r3, r1] - cmp r0, #0 - bne _021D13E8 - blx ov4_021D9750 - ldr r0, _021D13F0 ; =0x0221A400 - mov r2, #0x11 - ldr r1, [r0, #0] - ldr r0, _021D13F4 ; =0x00001070 - str r2, [r1, r0] -_021D13E8: - bl ov4_021D1D1C - pop {r4, pc} - nop -_021D13F0: .word 0x0221A400 -_021D13F4: .word 0x00001070 -_021D13F8: .word 0x00001074 -_021D13FC: .word 0x00001084 -_021D1400: .word 0x0000109C - thumb_func_end ov4_021D12D4 - - thumb_func_start ov4_021D1404 -ov4_021D1404: ; 0x021D1404 - push {r3, lr} - ldr r0, _021D1424 ; =0x0221A400 - ldr r1, [r0, #0] - ldr r0, _021D1428 ; =0x00001078 - ldr r0, [r1, r0] - cmp r0, #0 - bne _021D141E - bl ov4_021D1C5C - cmp r0, #0 - beq _021D141E - mov r0, #1 - pop {r3, pc} -_021D141E: - mov r0, #0 - pop {r3, pc} - nop -_021D1424: .word 0x0221A400 -_021D1428: .word 0x00001078 - thumb_func_end ov4_021D1404 - - thumb_func_start ov4_021D142C -ov4_021D142C: ; 0x021D142C - push {r4, r5, r6, lr} - add r5, r0, #0 - mov r0, #1 - add r4, r1, #0 - lsl r0, r0, #8 - cmp r4, r0 - blt _021D143E - mov r0, #0 - pop {r4, r5, r6, pc} -_021D143E: - blx ov4_021D9968 - cmp r0, #0 - bne _021D1460 - ldr r0, _021D14C4 ; =0x0221A400 - ldr r1, [r0, #0] - ldr r0, _021D14C8 ; =0x00000FA4 - ldr r3, [r1, r0] - cmp r3, #0 - beq _021D145C - lsl r2, r4, #0x10 - mov r0, #0 - add r1, r5, #0 - lsr r2, r2, #0x10 - blx r3 -_021D145C: - mov r0, #1 - pop {r4, r5, r6, pc} -_021D1460: - ldr r0, _021D14C4 ; =0x0221A400 - ldr r1, [r0, #0] - ldr r0, _021D14CC ; =0x00001078 - ldr r0, [r1, r0] - cmp r0, #0 - bne _021D1474 - bl ov4_021D1C5C - cmp r0, #0 - bne _021D1478 -_021D1474: - mov r0, #0 - pop {r4, r5, r6, pc} -_021D1478: - ldr r1, _021D14C4 ; =0x0221A400 - ldr r0, _021D14D0 ; =0x000010D4 - ldr r2, [r1, #0] - ldrh r3, [r2, r0] - lsl r6, r3, #8 - mov r3, #1 - orr r3, r6 - str r3, [r2, #0] - add r3, r0, #0 - ldr r2, [r1, #0] - add r3, #8 - ldrb r3, [r2, r3] - add r6, r3, #1 - add r3, r0, #0 - add r3, #8 - strb r6, [r2, r3] - ldr r2, [r1, #0] - add r0, #8 - ldrb r0, [r2, r0] - strb r0, [r2, #2] - ldr r1, [r1, #0] - add r0, r5, #0 - add r1, r1, #4 - add r2, r4, #0 - bl MI_CpuCopy8 - ldr r2, _021D14C4 ; =0x0221A400 - ldr r1, _021D14CC ; =0x00001078 - ldr r3, [r2, #0] - mov r0, #1 - str r0, [r3, r1] - ldr r1, [r2, #0] - add r2, r4, #4 - blx ov4_021E4C28 - mov r0, #1 - pop {r4, r5, r6, pc} - nop -_021D14C4: .word 0x0221A400 -_021D14C8: .word 0x00000FA4 -_021D14CC: .word 0x00001078 -_021D14D0: .word 0x000010D4 - thumb_func_end ov4_021D142C - - thumb_func_start ov4_021D14D4 -ov4_021D14D4: ; 0x021D14D4 - push {r4, r5, r6, lr} - add r5, r0, #0 - mov r0, #1 - add r4, r1, #0 - lsl r0, r0, #8 - cmp r4, r0 - blt _021D14E6 - mov r0, #0 - pop {r4, r5, r6, pc} -_021D14E6: - blx ov4_021D9968 - cmp r0, #0 - beq _021D14F2 - mov r0, #0 - pop {r4, r5, r6, pc} -_021D14F2: - ldr r0, _021D1580 ; =0x0221A400 - ldr r1, [r0, #0] - ldr r0, _021D1584 ; =0x00001078 - ldr r0, [r1, r0] - cmp r0, #0 - bne _021D1506 - bl ov4_021D1C5C - cmp r0, #0 - bne _021D150A -_021D1506: - mov r0, #0 - pop {r4, r5, r6, pc} -_021D150A: - ldr r1, _021D1580 ; =0x0221A400 - ldr r0, _021D1588 ; =0x000010D4 - ldr r2, [r1, #0] - ldrh r3, [r2, r0] - lsl r6, r3, #8 - mov r3, #1 - orr r3, r6 - str r3, [r2, #0] - add r3, r0, #0 - ldr r2, [r1, #0] - add r3, #8 - ldrb r3, [r2, r3] - add r6, r3, #1 - add r3, r0, #0 - add r3, #8 - strb r6, [r2, r3] - ldr r2, [r1, #0] - add r0, #8 - ldrb r0, [r2, r0] - strb r0, [r2, #2] - ldr r1, [r1, #0] - add r0, r5, #0 - add r1, r1, #4 - add r2, r4, #0 - bl MI_CpuCopy8 - ldr r0, _021D1580 ; =0x0221A400 - mov r2, #1 - ldr r1, [r0, #0] - ldr r0, _021D1584 ; =0x00001078 - str r2, [r1, r0] - blx DWC_GetAIDBitmap - ldr r1, _021D1580 ; =0x0221A400 - add r2, r4, #4 - ldr r1, [r1, #0] - blx ov4_021E4C28 - cmp r0, #0 - bne _021D1566 - ldr r1, _021D1580 ; =0x0221A400 - mov r0, #0 - ldr r2, [r1, #0] - ldr r1, _021D1584 ; =0x00001078 - str r0, [r2, r1] - pop {r4, r5, r6, pc} -_021D1566: - ldr r0, _021D1580 ; =0x0221A400 - ldr r1, [r0, #0] - ldr r0, _021D158C ; =0x00000FA8 - ldr r3, [r1, r0] - cmp r3, #0 - beq _021D157C - lsl r2, r4, #0x10 - mov r0, #0 - add r1, r5, #0 - lsr r2, r2, #0x10 - blx r3 -_021D157C: - mov r0, #1 - pop {r4, r5, r6, pc} - ; .align 2, 0 -_021D1580: .word 0x0221A400 -_021D1584: .word 0x00001078 -_021D1588: .word 0x000010D4 -_021D158C: .word 0x00000FA8 - thumb_func_end ov4_021D14D4 - - thumb_func_start ov4_021D1590 -ov4_021D1590: ; 0x021D1590 - push {r4, r5, r6, lr} - add r5, r0, #0 - mov r0, #1 - add r4, r1, #0 - lsl r0, r0, #8 - cmp r4, r0 - blt _021D15A2 - mov r0, #0 - pop {r4, r5, r6, pc} -_021D15A2: - ldr r0, _021D1640 ; =0x0221A400 - ldr r1, [r0, #0] - ldr r0, _021D1644 ; =0x00001078 - ldr r0, [r1, r0] - cmp r0, #0 - bne _021D15B6 - bl ov4_021D1C5C - cmp r0, #0 - bne _021D15BA -_021D15B6: - mov r0, #0 - pop {r4, r5, r6, pc} -_021D15BA: - ldr r1, _021D1640 ; =0x0221A400 - ldr r0, _021D1648 ; =0x000010D4 - ldr r2, [r1, #0] - ldrh r3, [r2, r0] - lsl r6, r3, #8 - mov r3, #1 - orr r3, r6 - str r3, [r2, #0] - add r3, r0, #0 - ldr r2, [r1, #0] - add r3, #8 - ldrb r3, [r2, r3] - add r6, r3, #1 - add r3, r0, #0 - add r3, #8 - strb r6, [r2, r3] - ldr r2, [r1, #0] - add r0, #8 - ldrb r0, [r2, r0] - strb r0, [r2, #2] - ldr r1, [r1, #0] - add r0, r5, #0 - add r1, r1, #4 - add r2, r4, #0 - bl MI_CpuCopy8 - ldr r0, _021D1640 ; =0x0221A400 - mov r2, #1 - ldr r1, [r0, #0] - ldr r0, _021D1644 ; =0x00001078 - str r2, [r1, r0] - blx DWC_GetAIDBitmap - ldr r1, _021D1640 ; =0x0221A400 - lsl r0, r0, #0x10 - lsr r6, r0, #0x10 - ldr r1, [r1, #0] - add r0, r6, #0 - add r2, r4, #4 - blx ov4_021E4C28 - cmp r6, r0 - beq _021D161C - ldr r1, _021D1640 ; =0x0221A400 - mov r0, #0 - ldr r2, [r1, #0] - ldr r1, _021D1644 ; =0x00001078 - str r0, [r2, r1] - pop {r4, r5, r6, pc} -_021D161C: - ldr r0, _021D1640 ; =0x0221A400 - ldr r1, [r0, #0] - ldr r0, _021D164C ; =0x00000FA8 - ldr r0, [r1, r0] - cmp r0, #0 - beq _021D163C - blx ov4_021D9968 - lsl r2, r4, #0x10 - ldr r3, _021D1640 ; =0x0221A400 - add r1, r5, #0 - ldr r4, [r3, #0] - ldr r3, _021D164C ; =0x00000FA8 - lsr r2, r2, #0x10 - ldr r3, [r4, r3] - blx r3 -_021D163C: - mov r0, #1 - pop {r4, r5, r6, pc} - ; .align 2, 0 -_021D1640: .word 0x0221A400 -_021D1644: .word 0x00001078 -_021D1648: .word 0x000010D4 -_021D164C: .word 0x00000FA8 - thumb_func_end ov4_021D1590 - - thumb_func_start ov4_021D1650 -ov4_021D1650: ; 0x021D1650 - push {r4, r5, lr} - sub sp, #0xc - add r5, r0, #0 - ldr r0, _021D16CC ; =0x0221A400 - add r4, r2, #0 - ldr r1, [r0, #0] - mov r0, #0xf1 - lsl r0, r0, #4 - ldr r0, [r1, r0] - bl DWC_CheckDirtyFlag - cmp r0, #0 - beq _021D1682 - ldr r0, _021D16CC ; =0x0221A400 - ldr r1, [r0, #0] - mov r0, #0xf1 - lsl r0, r0, #4 - ldr r0, [r1, r0] - bl DWC_ClearDirtyFlag - ldr r0, _021D16CC ; =0x0221A400 - mov r2, #1 - ldr r1, [r0, #0] - ldr r0, _021D16D0 ; =0x000010E6 - strb r2, [r1, r0] -_021D1682: - cmp r5, #0 - bne _021D16BC - ldr r0, _021D16D4 ; =ov4_021D1744 - str r4, [sp] - str r0, [sp, #4] - ldr r2, _021D16CC ; =0x0221A400 - str r4, [sp, #8] - ldr r3, [r2, #0] - mov r2, #0xf1 - lsl r2, r2, #4 - ldr r2, [r3, r2] - ldr r1, _021D16D8 ; =ov4_021D171C - ldr r3, _021D16DC ; =ov4_021D1740 - mov r0, #0 - blx ov4_021D934C - cmp r0, #0 - bne _021D16B0 - mov r0, #1 - bl sub_02038AE0 - add sp, #0xc - pop {r4, r5, pc} -_021D16B0: - ldr r0, _021D16E0 ; =ov4_021D17A0 - mov r1, #0 - blx ov4_021DB3DC - add sp, #0xc - pop {r4, r5, pc} -_021D16BC: - ldr r0, _021D16CC ; =0x0221A400 - mov r2, #0xc - ldr r1, [r0, #0] - ldr r0, _021D16E4 ; =0x00001070 - str r2, [r1, r0] - add sp, #0xc - pop {r4, r5, pc} - nop -_021D16CC: .word 0x0221A400 -_021D16D0: .word 0x000010E6 -_021D16D4: .word ov4_021D1744 -_021D16D8: .word ov4_021D171C -_021D16DC: .word ov4_021D1740 -_021D16E0: .word ov4_021D17A0 -_021D16E4: .word 0x00001070 - thumb_func_end ov4_021D1650 - - thumb_func_start ov4_021D16E8 -ov4_021D16E8: ; 0x021D16E8 - push {r3, lr} - ldr r0, _021D1710 ; =0x0221A400 - ldr r1, [r0, #0] - ldr r0, _021D1714 ; =0x000010A8 - ldr r0, [r1, r0] - cmp r0, #0 - beq _021D170E - blx ov4_021D9750 - ldr r1, _021D1710 ; =0x0221A400 - mov r3, #0 - ldr r2, [r1, #0] - ldr r0, _021D1718 ; =0x00001098 - mvn r3, r3 - str r3, [r2, r0] - ldr r1, [r1, #0] - mov r2, #0x12 - sub r0, #0x28 - str r2, [r1, r0] -_021D170E: - pop {r3, pc} - ; .align 2, 0 -_021D1710: .word 0x0221A400 -_021D1714: .word 0x000010A8 -_021D1718: .word 0x00001098 - thumb_func_end ov4_021D16E8 - - thumb_func_start ov4_021D171C -ov4_021D171C: ; 0x021D171C - cmp r0, #0 - bne _021D172C - ldr r0, _021D1738 ; =0x0221A400 - mov r2, #4 - ldr r1, [r0, #0] - ldr r0, _021D173C ; =0x00001070 - str r2, [r1, r0] - bx lr -_021D172C: - ldr r0, _021D1738 ; =0x0221A400 - mov r2, #0xc - ldr r1, [r0, #0] - ldr r0, _021D173C ; =0x00001070 - str r2, [r1, r0] - bx lr - ; .align 2, 0 -_021D1738: .word 0x0221A400 -_021D173C: .word 0x00001070 - thumb_func_end ov4_021D171C - - thumb_func_start ov4_021D1740 -ov4_021D1740: ; 0x021D1740 - bx lr - ; .align 2, 0 - thumb_func_end ov4_021D1740 - - thumb_func_start ov4_021D1744 -ov4_021D1744: ; 0x021D1744 - push {r3, r4, r5, lr} - add r5, r0, #0 - ldr r0, _021D1798 ; =0x0221A400 - add r4, r1, #0 - ldr r1, [r0, #0] - ldr r0, _021D179C ; =0x00000F78 - ldr r0, [r1, r0] - bl sub_0202B370 - mov r1, #0 - bl sub_0202AED8 - add r1, r0, #0 - ldr r0, _021D1798 ; =0x0221A400 - mov r2, #1 - ldr r0, [r0, #0] - lsl r2, r2, #8 - ldr r0, [r0, r2] - add r2, #0x80 - bl MI_CpuCopy8 - ldr r0, _021D1798 ; =0x0221A400 - ldr r1, [r0, #0] - ldr r0, _021D179C ; =0x00000F78 - ldr r0, [r1, r0] - bl sub_0202B370 - add r1, r5, #0 - add r2, r4, #0 - bl sub_0202B270 - ldr r0, _021D1798 ; =0x0221A400 - ldr r1, [r0, #0] - ldr r0, _021D179C ; =0x00000F78 - ldr r0, [r1, r0] - bl sub_0203068C - add r1, r5, #0 - add r2, r4, #0 - bl sub_020307F0 - pop {r3, r4, r5, pc} - ; .align 2, 0 -_021D1798: .word 0x0221A400 -_021D179C: .word 0x00000F78 - thumb_func_end ov4_021D1744 - - thumb_func_start ov4_021D17A0 -ov4_021D17A0: ; 0x021D17A0 - bx lr - ; .align 2, 0 - thumb_func_end ov4_021D17A0 - - thumb_func_start ov4_021D17A4 -ov4_021D17A4: ; 0x021D17A4 - ldr r0, _021D17B4 ; =0x0221A400 - ldr r3, _021D17B8 ; =MI_CpuFill8 - ldr r1, [r0, #0] - ldr r0, _021D17BC ; =0x000010AC - mov r2, #0x20 - add r0, r1, r0 - mov r1, #0 - bx r3 - ; .align 2, 0 -_021D17B4: .word 0x0221A400 -_021D17B8: .word MI_CpuFill8 -_021D17BC: .word 0x000010AC - thumb_func_end ov4_021D17A4 - - thumb_func_start ov4_021D17C0 -ov4_021D17C0: ; 0x021D17C0 - push {r3, r4, r5, r6, r7, lr} - mov r5, #0 - add r4, r5, #0 -_021D17C6: - lsl r0, r5, #0x18 - lsr r0, r0, #0x18 - add r1, r4, #0 - blx ov4_021E4E60 - add r5, r5, #1 - cmp r5, #4 - blt _021D17C6 - blx ov4_021D9968 - cmp r0, #0 - bne _021D1822 - ldr r6, _021D1844 ; =0x0221A400 - ldr r0, _021D1848 ; =0x0000107C - ldr r1, [r6, #0] - mov r5, #0 - ldr r0, [r1, r0] - cmp r0, #0 - ble _021D1832 - ldr r7, _021D1848 ; =0x0000107C - mov r4, #1 -_021D17F0: - blx ov4_021D9968 - cmp r5, r0 - beq _021D1816 - blx DWC_GetAIDBitmap - add r1, r4, #0 - lsl r1, r5 - tst r0, r1 - beq _021D1816 - lsl r0, r5, #0x18 - ldr r1, _021D184C ; =0x00002710 - lsr r0, r0, #0x18 - blx ov4_021E4E60 - cmp r0, #0 - bne _021D1816 - bl GF_AssertFail -_021D1816: - ldr r0, [r6, #0] - add r5, r5, #1 - ldr r0, [r0, r7] - cmp r5, r0 - blt _021D17F0 - b _021D1832 -_021D1822: - ldr r1, _021D184C ; =0x00002710 - mov r0, #0 - blx ov4_021E4E60 - cmp r0, #0 - bne _021D1832 - bl GF_AssertFail -_021D1832: - ldr r0, _021D1844 ; =0x0221A400 - mov r2, #1 - ldr r1, [r0, #0] - ldr r0, _021D1850 ; =0x000010A8 - str r2, [r1, r0] - bl ov4_021D17A4 - pop {r3, r4, r5, r6, r7, pc} - nop -_021D1844: .word 0x0221A400 -_021D1848: .word 0x0000107C -_021D184C: .word 0x00002710 -_021D1850: .word 0x000010A8 - thumb_func_end ov4_021D17C0 - - thumb_func_start ov4_021D1854 -ov4_021D1854: ; 0x021D1854 - push {r4, r5, r6, lr} - ldr r4, _021D188C ; =0x0221A400 - ldr r0, _021D1890 ; =0x00001070 - ldr r1, [r4, #0] - mov r2, #7 - str r2, [r1, r0] - ldr r1, [r4, #0] - add r0, #0xc - ldr r0, [r1, r0] - mov r5, #0 - cmp r0, #0 - ble _021D1886 - ldr r6, _021D1894 ; =0x0000107C -_021D186E: - blx ov4_021D9968 - cmp r5, r0 - beq _021D187C - add r0, r5, #0 - bl ov4_021D2748 -_021D187C: - ldr r0, [r4, #0] - add r5, r5, #1 - ldr r0, [r0, r6] - cmp r5, r0 - blt _021D186E -_021D1886: - bl ov4_021D17C0 - pop {r4, r5, r6, pc} - ; .align 2, 0 -_021D188C: .word 0x0221A400 -_021D1890: .word 0x00001070 -_021D1894: .word 0x0000107C - thumb_func_end ov4_021D1854 - - thumb_func_start ov4_021D1898 -ov4_021D1898: ; 0x021D1898 - push {r4, lr} - cmp r0, #0 - bne _021D18B6 - cmp r1, #0 - bne _021D18B0 - blx ov4_021D9968 - mov r1, #1 - sub r0, r1, r0 - bl ov4_021D1854 - b _021D18C0 -_021D18B0: - bl ov4_021D12B4 - b _021D18C0 -_021D18B6: - ldr r0, _021D18E0 ; =0x0221A400 - mov r2, #0xc - ldr r1, [r0, #0] - ldr r0, _021D18E4 ; =0x00001070 - str r2, [r1, r0] -_021D18C0: - ldr r0, _021D18E0 ; =0x0221A400 - ldr r4, [r0, #0] - ldr r0, _021D18E8 ; =0x00000FB4 - ldr r0, [r4, r0] - cmp r0, #0 - beq _021D18DE - blx ov4_021D9968 - ldr r3, _021D18E0 ; =0x0221A400 - ldr r2, _021D18EC ; =0x00000FB8 - ldr r3, [r3, #0] - ldr r1, [r4, r2] - sub r2, r2, #4 - ldr r2, [r3, r2] - blx r2 -_021D18DE: - pop {r4, pc} - ; .align 2, 0 -_021D18E0: .word 0x0221A400 -_021D18E4: .word 0x00001070 -_021D18E8: .word 0x00000FB4 -_021D18EC: .word 0x00000FB8 - thumb_func_end ov4_021D1898 - - thumb_func_start ov4_021D18F0 -ov4_021D18F0: ; 0x021D18F0 - mov r0, #1 - bx lr - thumb_func_end ov4_021D18F0 - - thumb_func_start ov4_021D18F4 -ov4_021D18F4: ; 0x021D18F4 - push {r3, r4} - ldr r2, _021D1910 ; =0x0221A400 - ldr r0, _021D1914 ; =0x00001078 - ldr r3, [r2, #0] - mov r4, #0 - str r4, [r3, r0] - ldr r2, [r2, #0] - lsl r1, r1, #2 - add r1, r2, r1 - add r0, #0x34 - str r4, [r1, r0] - pop {r3, r4} - bx lr - nop -_021D1910: .word 0x0221A400 -_021D1914: .word 0x00001078 - thumb_func_end ov4_021D18F4 - - thumb_func_start ov4_021D1918 -ov4_021D1918: ; 0x021D1918 - push {r4, lr} - add r4, r0, #0 - bl sub_0203895C - bl sub_0203272C - cmp r0, #0 - bne _021D1946 - mov r0, #1 - lsl r0, r0, #8 - tst r0, r4 - beq _021D193C - ldr r0, _021D1948 ; =0x0221A400 - mov r2, #1 - ldr r1, [r0, #0] - ldr r0, _021D194C ; =0x000010D0 - str r2, [r1, r0] - pop {r4, pc} -_021D193C: - ldr r0, _021D1948 ; =0x0221A400 - mov r2, #0 - ldr r1, [r0, #0] - ldr r0, _021D194C ; =0x000010D0 - str r2, [r1, r0] -_021D1946: - pop {r4, pc} - ; .align 2, 0 -_021D1948: .word 0x0221A400 -_021D194C: .word 0x000010D0 - thumb_func_end ov4_021D1918 - - thumb_func_start ov4_021D1950 -ov4_021D1950: ; 0x021D1950 - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - str r0, [sp] - add r4, r1, #0 - ldrb r3, [r4, #1] - ldrb r6, [r4] - add r7, r2, #0 - lsl r3, r3, #8 - mov ip, r3 - ldrb r3, [r4, #3] - lsl r5, r3, #0x18 - ldrb r3, [r4, #2] - lsl r3, r3, #0x10 - orr r3, r5 - mov r5, ip - orr r3, r5 - orr r3, r6 - str r3, [sp, #4] - ldr r3, _021D1A10 ; =0x0221A400 - ldr r5, _021D1A14 ; =0x000010A8 - ldr r6, [r3, #0] - mov r3, #1 - str r3, [r6, r5] - ldr r3, [sp, #4] - lsl r3, r3, #0x18 - lsr r3, r3, #0x18 - cmp r3, #1 - bne _021D199C - ldr r0, [sp, #4] - bl ov4_021D1918 - ldr r0, _021D1A10 ; =0x0221A400 - ldrb r2, [r4, #2] - ldr r1, [r0, #0] - add r0, r5, #0 - add r0, #0x35 - strb r2, [r1, r0] - b _021D19AE -_021D199C: - bl ov4_021D2C70 - cmp r0, #0 - bne _021D1A0C - ldr r0, [sp, #4] - bl ov4_021D1918 - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} -_021D19AE: - sub r6, r7, #4 - mov r0, #0 - add r1, r6, #0 - mov r2, #4 - bl ov4_021D1AA0 - add r5, r0, #0 - beq _021D1A0C - add r0, r4, #4 - add r1, r5, #0 - add r2, r6, #0 - bl MI_CpuCopy8 - blx ov4_021D9968 - cmp r0, #0 - bne _021D19EA - ldr r0, _021D1A10 ; =0x0221A400 - ldr r1, [r0, #0] - ldr r0, _021D1A18 ; =0x00000FA4 - ldr r3, [r1, r0] - cmp r3, #0 - beq _021D1A02 - add r2, r6, #0 - lsl r2, r2, #0x10 - ldr r0, [sp] - add r1, r5, #0 - lsr r2, r2, #0x10 - blx r3 - b _021D1A02 -_021D19EA: - ldr r0, _021D1A10 ; =0x0221A400 - ldr r1, [r0, #0] - ldr r0, _021D1A1C ; =0x00000FA8 - ldr r3, [r1, r0] - cmp r3, #0 - beq _021D1A02 - add r2, r6, #0 - lsl r2, r2, #0x10 - ldr r0, [sp] - add r1, r5, #0 - lsr r2, r2, #0x10 - blx r3 -_021D1A02: - mov r0, #0 - add r1, r5, #0 - add r2, r6, #0 - bl ov4_021D1B04 -_021D1A0C: - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021D1A10: .word 0x0221A400 -_021D1A14: .word 0x000010A8 -_021D1A18: .word 0x00000FA4 -_021D1A1C: .word 0x00000FA8 - thumb_func_end ov4_021D1950 - - thumb_func_start ov4_021D1A20 -ov4_021D1A20: ; 0x021D1A20 - push {r4, r5, r6, lr} - ldr r5, _021D1A8C ; =0x0221A400 - add r4, r3, #0 - ldr r3, [r5, #0] - ldr r2, _021D1A90 ; =0x00001078 - mov r1, #0 - str r1, [r3, r2] - add r3, r2, #0 - ldr r6, [r5, #0] - add r3, #0x54 - str r1, [r6, r3] - add r3, r2, #0 - add r3, #0x28 - ldr r6, [r5, #0] - cmp r0, #0 - str r1, [r6, r3] - bne _021D1A74 - ldr r0, [r5, #0] - add r2, #0x6d - ldrb r0, [r0, r2] - cmp r0, #1 - bne _021D1A74 - blx ov4_021D9920 - cmp r0, #1 - bne _021D1A74 - add r0, r5, #0 - ldr r2, [r0, #0] - ldr r0, _021D1A94 ; =0x00001070 - ldr r1, [r2, r0] - cmp r1, #6 - beq _021D1A64 - mov r1, #0x10 - str r1, [r2, r0] -_021D1A64: - ldr r0, _021D1A8C ; =0x0221A400 - ldr r1, [r0, #0] - ldr r0, _021D1A98 ; =0x00001090 - ldr r0, [r1, r0] - cmp r0, #0 - beq _021D1A74 - bl ov4_021D1F18 -_021D1A74: - ldr r0, _021D1A8C ; =0x0221A400 - ldr r1, _021D1A9C ; =0x00000FAC - ldr r3, [r0, #0] - ldr r2, [r3, r1] - cmp r2, #0 - beq _021D1A88 - add r1, r1, #4 - ldr r1, [r3, r1] - add r0, r4, #0 - blx r2 -_021D1A88: - pop {r4, r5, r6, pc} - nop -_021D1A8C: .word 0x0221A400 -_021D1A90: .word 0x00001078 -_021D1A94: .word 0x00001070 -_021D1A98: .word 0x00001090 -_021D1A9C: .word 0x00000FAC - thumb_func_end ov4_021D1A20 - - thumb_func_start ov4_021D1AA0 -ov4_021D1AA0: ; 0x021D1AA0 - push {r3, r4, r5, r6, r7, lr} - add r5, r1, #0 - add r6, r2, #0 - bl OS_DisableInterrupts - add r7, r0, #0 - ldr r0, _021D1AF8 ; =0x0221A400 - add r2, r6, #0 - ldr r1, [r0, #0] - ldr r0, _021D1AFC ; =0x00000F94 - ldr r0, [r1, r0] - add r1, r5, #0 - bl NNS_FndAllocFromExpHeapEx - add r4, r0, #0 - bne _021D1ADA - ldr r0, _021D1AF8 ; =0x0221A400 - ldr r1, _021D1B00 ; =0x00000F98 - ldr r0, [r0, #0] - ldr r2, [r0, r1] - cmp r2, #0 - beq _021D1ADA - add r1, r1, #4 - ldr r0, [r0, r1] - add r1, r5, #0 - add r2, r6, #0 - bl NNS_FndAllocFromExpHeapEx - add r4, r0, #0 -_021D1ADA: - cmp r4, #0 - bne _021D1AEE - mov r0, #1 - bl sub_02038AE0 - add r0, r7, #0 - bl OS_RestoreInterrupts - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_021D1AEE: - add r0, r7, #0 - bl OS_RestoreInterrupts - add r0, r4, #0 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021D1AF8: .word 0x0221A400 -_021D1AFC: .word 0x00000F94 -_021D1B00: .word 0x00000F98 - thumb_func_end ov4_021D1AA0 - - thumb_func_start ov4_021D1B04 -ov4_021D1B04: ; 0x021D1B04 - push {r3, r4, r5, lr} - add r5, r1, #0 - beq _021D1B4E - bl OS_DisableInterrupts - add r4, r0, #0 - add r0, r5, #0 - bl NNS_FndGetGroupIDForMBlockExpHeap - cmp r0, #0x10 - bne _021D1B3A - ldr r0, _021D1B50 ; =0x0221A400 - ldr r2, [r0, #0] - ldr r0, _021D1B54 ; =0x00000F98 - ldr r1, [r2, r0] - cmp r1, #0 - bne _021D1B2E - mov r0, #1 - bl sub_02038AE0 - pop {r3, r4, r5, pc} -_021D1B2E: - add r0, r0, #4 - ldr r0, [r2, r0] - add r1, r5, #0 - bl NNS_FndFreeToExpHeap - b _021D1B48 -_021D1B3A: - ldr r0, _021D1B50 ; =0x0221A400 - ldr r1, [r0, #0] - ldr r0, _021D1B58 ; =0x00000F94 - ldr r0, [r1, r0] - add r1, r5, #0 - bl NNS_FndFreeToExpHeap -_021D1B48: - add r0, r4, #0 - bl OS_RestoreInterrupts -_021D1B4E: - pop {r3, r4, r5, pc} - ; .align 2, 0 -_021D1B50: .word 0x0221A400 -_021D1B54: .word 0x00000F98 -_021D1B58: .word 0x00000F94 - thumb_func_end ov4_021D1B04 - - thumb_func_start ov4_021D1B5C -ov4_021D1B5C: ; 0x021D1B5C - push {r3, r4, r5, lr} - sub sp, #8 - add r0, sp, #4 - add r1, sp, #0 - mov r4, #0 - blx DWC_GetLastErrorEx - add r5, r0, #0 - beq _021D1C2E - ldr r4, [sp, #4] - cmp r4, #0 - beq _021D1B7A - ldr r0, [sp] - cmp r0, #1 - bne _021D1B7C -_021D1B7A: - add r4, r5, #0 -_021D1B7C: - ldr r0, [sp] - cmp r0, #7 - bhi _021D1C2E - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021D1B8E: ; jump table - .short _021D1C2E - _021D1B8E - 2 ; case 0 - .short _021D1B9E - _021D1B8E - 2 ; case 1 - .short _021D1BA4 - _021D1B8E - 2 ; case 2 - .short _021D1BAA - _021D1B8E - 2 ; case 3 - .short _021D1BAA - _021D1B8E - 2 ; case 4 - .short _021D1BAA - _021D1B8E - 2 ; case 5 - .short _021D1BAA - _021D1B8E - 2 ; case 6 - .short _021D1C10 - _021D1B8E - 2 ; case 7 -_021D1B9E: - blx DWC_ClearError - b _021D1C2E -_021D1BA4: - blx DWC_ClearError - b _021D1C2E -_021D1BAA: - ldr r0, _021D1C50 ; =0x0221A400 - ldr r1, [r0, #0] - cmp r1, #0 - beq _021D1C00 - ldr r0, _021D1C54 ; =0x00001070 - ldr r0, [r1, r0] - cmp r0, #0x12 - bhi _021D1BFC - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021D1BC6: ; jump table - .short _021D1BF0 - _021D1BC6 - 2 ; case 0 - .short _021D1BF0 - _021D1BC6 - 2 ; case 1 - .short _021D1BF0 - _021D1BC6 - 2 ; case 2 - .short _021D1BEC - _021D1BC6 - 2 ; case 3 - .short _021D1BEC - _021D1BC6 - 2 ; case 4 - .short _021D1BEC - _021D1BC6 - 2 ; case 5 - .short _021D1BEC - _021D1BC6 - 2 ; case 6 - .short _021D1BEC - _021D1BC6 - 2 ; case 7 - .short _021D1BEC - _021D1BC6 - 2 ; case 8 - .short _021D1BEC - _021D1BC6 - 2 ; case 9 - .short _021D1BFC - _021D1BC6 - 2 ; case 10 - .short _021D1BFC - _021D1BC6 - 2 ; case 11 - .short _021D1BEC - _021D1BC6 - 2 ; case 12 - .short _021D1BFC - _021D1BC6 - 2 ; case 13 - .short _021D1BFC - _021D1BC6 - 2 ; case 14 - .short _021D1BFC - _021D1BC6 - 2 ; case 15 - .short _021D1BEC - _021D1BC6 - 2 ; case 16 - .short _021D1BEC - _021D1BC6 - 2 ; case 17 - .short _021D1BEC - _021D1BC6 - 2 ; case 18 -_021D1BEC: - blx ov4_021D8E8C -_021D1BF0: - bl sub_0203895C - cmp r0, #0x21 - beq _021D1BFC - blx ov4_021D7DB0 -_021D1BFC: - blx DWC_ClearError -_021D1C00: - ldr r0, _021D1C50 ; =0x0221A400 - ldr r2, [r0, #0] - cmp r2, #0 - beq _021D1C2E - ldr r0, _021D1C54 ; =0x00001070 - mov r1, #0xe - str r1, [r2, r0] - b _021D1C2E -_021D1C10: - ldr r1, _021D1C50 ; =0x0221A400 - ldr r3, [r1, #0] - cmp r3, #0 - beq _021D1C2E - ldr r0, _021D1C54 ; =0x00001070 - mov r2, #0xf - str r2, [r3, r0] - ldr r1, [r1, #0] - sub r0, #0xb0 - ldr r1, [r1, r0] - cmp r1, #0 - beq _021D1C2E - ldr r0, [sp, #4] - neg r0, r0 - blx r1 -_021D1C2E: - ldr r0, _021D1C50 ; =0x0221A400 - ldr r1, [r0, #0] - ldr r0, _021D1C58 ; =0x000010DE - ldrb r0, [r1, r0] - cmp r0, #0 - beq _021D1C3C - mov r4, #0x1a -_021D1C3C: - cmp r5, #0 - beq _021D1C4A - ldr r0, [sp, #4] - ldr r1, [sp] - add r2, r5, #0 - bl sub_02037F94 -_021D1C4A: - add r0, r4, #0 - add sp, #8 - pop {r3, r4, r5, pc} - ; .align 2, 0 -_021D1C50: .word 0x0221A400 -_021D1C54: .word 0x00001070 -_021D1C58: .word 0x000010DE - thumb_func_end ov4_021D1B5C - - thumb_func_start ov4_021D1C5C -ov4_021D1C5C: ; 0x021D1C5C - push {r3, r4, r5, r6, r7, lr} - ldr r6, _021D1CA4 ; =0x0221A400 - mov r5, #0 - ldr r1, [r6, #0] - ldr r0, _021D1CA8 ; =0x0000107C - add r4, r5, #0 - ldr r0, [r1, r0] - cmp r0, #0 - ble _021D1CA0 - ldr r7, _021D1CA8 ; =0x0000107C -_021D1C70: - blx ov4_021D9968 - cmp r4, r0 - beq _021D1C96 - lsl r0, r4, #0x18 - lsr r0, r0, #0x18 - blx ov4_021D9A08 - cmp r0, #0 - beq _021D1C96 - lsl r0, r4, #0x18 - lsr r0, r0, #0x18 - mov r5, #1 - blx ov4_021E4A58 - cmp r0, #0 - bne _021D1C96 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_021D1C96: - ldr r0, [r6, #0] - add r4, r4, #1 - ldr r0, [r0, r7] - cmp r4, r0 - blt _021D1C70 -_021D1CA0: - add r0, r5, #0 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021D1CA4: .word 0x0221A400 -_021D1CA8: .word 0x0000107C - thumb_func_end ov4_021D1C5C - - thumb_func_start ov4_021D1CAC -ov4_021D1CAC: ; 0x021D1CAC - push {r4, lr} - add r4, r0, #0 - ldr r0, _021D1D0C ; =0x0221A400 - ldr r1, [r0, #0] - ldr r0, _021D1D10 ; =0x00001078 - ldr r0, [r1, r0] - cmp r0, #0 - bne _021D1D06 - bl ov4_021D1C5C - cmp r0, #0 - beq _021D1D06 - blx DWC_GetAIDBitmap - ldr r1, _021D1D14 ; =0x0000FFFE - tst r0, r1 - beq _021D1D06 - ldr r1, _021D1D0C ; =0x0221A400 - ldr r0, _021D1D10 ; =0x00001078 - ldr r2, [r1, #0] - mov r3, #1 - str r3, [r2, r0] - ldr r2, [r1, #0] - add r0, #0x5c - ldrh r0, [r2, r0] - lsl r1, r0, #8 - mov r0, #2 - orr r0, r1 - str r0, [r2, #0] - blx DWC_GetAIDBitmap - ldr r1, _021D1D0C ; =0x0221A400 - mov r2, #4 - ldr r1, [r1, #0] - blx ov4_021E4C28 - ldr r0, _021D1D0C ; =0x0221A400 - mov r2, #0 - ldr r1, [r0, #0] - lsl r0, r4, #2 - add r1, r1, r0 - ldr r0, _021D1D18 ; =0x000010AC - str r2, [r1, r0] - mov r0, #1 - pop {r4, pc} -_021D1D06: - mov r0, #0 - pop {r4, pc} - nop -_021D1D0C: .word 0x0221A400 -_021D1D10: .word 0x00001078 -_021D1D14: .word 0x0000FFFE -_021D1D18: .word 0x000010AC - thumb_func_end ov4_021D1CAC - - thumb_func_start ov4_021D1D1C -ov4_021D1D1C: ; 0x021D1D1C - push {r3, r4, r5, r6, r7, lr} - blx ov4_021D8FF4 - bl ov4_021D21B4 - ldr r0, _021D1E18 ; =0x0221A400 - ldr r1, _021D1E1C ; =0x00001090 - ldr r2, [r0, #0] - ldr r0, [r2, r1] - cmp r0, #0 - beq _021D1DA4 - add r0, r1, #0 - add r0, #0x44 - ldrh r0, [r2, r0] - cmp r0, #1 - bne _021D1D54 - add r0, r1, #0 - add r0, #0x40 - ldr r0, [r2, r0] - cmp r0, #1 - bne _021D1D54 - add r1, #0x46 - ldrh r0, [r2, r1] - cmp r0, #1 - bne _021D1D54 - bl ov4_021D2FB8 - b _021D1D58 -_021D1D54: - bl ov4_021D2FA4 -_021D1D58: - bl ov4_021D2B28 - ldr r0, _021D1E18 ; =0x0221A400 - ldr r4, [r0, #0] - blx DWC_GetAIDBitmap - mov r1, #0x42 - lsl r1, r1, #6 - ldr r2, [r4, r1] - cmp r2, r0 - beq _021D1DA4 - add r0, r1, #0 - add r0, #0x5f - ldrb r0, [r4, r0] - cmp r0, #0 - bne _021D1DA4 - add r1, #0x1c - ldr r0, [r4, r1] - cmp r0, #0 - beq _021D1DA4 - blx DWC_GetAIDBitmap - add r4, r0, #0 - blx ov4_021D9968 - add r1, r0, #0 - add r0, r4, #0 - bl ov4_021D2FCC - cmp r0, #0 - beq _021D1DA4 - blx DWC_GetAIDBitmap - ldr r1, _021D1E18 ; =0x0221A400 - ldr r2, [r1, #0] - mov r1, #0x42 - lsl r1, r1, #6 - str r0, [r2, r1] -_021D1DA4: - ldr r6, _021D1E18 ; =0x0221A400 - ldr r1, _021D1E20 ; =0x00001070 - ldr r0, [r6, #0] - ldr r2, [r0, r1] - cmp r2, #0x12 - bne _021D1DBC - bl ov4_021D1B5C - cmp r0, #0 - bne _021D1E16 - mov r0, #0x17 - pop {r3, r4, r5, r6, r7, pc} -_021D1DBC: - cmp r2, #0x11 - bne _021D1DC4 - mov r0, #0x18 - pop {r3, r4, r5, r6, r7, pc} -_021D1DC4: - sub r2, r2, #7 - cmp r2, #1 - bhi _021D1E12 - add r1, #0xc - ldr r1, [r0, r1] - mov r4, #0 - cmp r1, #0 - ble _021D1E12 - ldr r7, _021D1E24 ; =0x000010AC - add r5, r4, #0 -_021D1DD8: - ldr r2, _021D1E24 ; =0x000010AC - add r1, r0, r5 - ldr r0, _021D1E24 ; =0x000010AC - ldr r2, [r1, r2] - ldr r0, [r1, r0] - add r2, r2, #1 - str r2, [r1, r7] - cmp r0, #0x78 - blt _021D1E04 - ldr r1, [r6, #0] - ldr r0, _021D1E28 ; =0x00001078 - ldr r0, [r1, r0] - cmp r0, #0 - bne _021D1E04 - add r0, r4, #0 - bl ov4_021D1CAC - cmp r0, #0 - beq _021D1E04 - bl ov4_021D17A4 - b _021D1E12 -_021D1E04: - ldr r0, [r6, #0] - ldr r1, _021D1E2C ; =0x0000107C - add r4, r4, #1 - ldr r1, [r0, r1] - add r5, r5, #4 - cmp r4, r1 - blt _021D1DD8 -_021D1E12: - bl ov4_021D1B5C -_021D1E16: - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021D1E18: .word 0x0221A400 -_021D1E1C: .word 0x00001090 -_021D1E20: .word 0x00001070 -_021D1E24: .word 0x000010AC -_021D1E28: .word 0x00001078 -_021D1E2C: .word 0x0000107C - thumb_func_end ov4_021D1D1C - - thumb_func_start ov4_021D1E30 -ov4_021D1E30: ; 0x021D1E30 - push {r3, lr} - ldr r0, _021D1E58 ; =0x0221A400 - ldr r1, [r0, #0] - cmp r1, #0 - beq _021D1E50 - ldr r0, _021D1E5C ; =0x00001070 - ldr r0, [r1, r0] - cmp r0, #7 - beq _021D1E4A - cmp r0, #8 - beq _021D1E4A - cmp r0, #0x10 - bne _021D1E50 -_021D1E4A: - blx ov4_021D9968 - pop {r3, pc} -_021D1E50: - mov r0, #0 - mvn r0, r0 - pop {r3, pc} - nop -_021D1E58: .word 0x0221A400 -_021D1E5C: .word 0x00001070 - thumb_func_end ov4_021D1E30 - - thumb_func_start ov4_021D1E60 -ov4_021D1E60: ; 0x021D1E60 - ldr r0, _021D1E6C ; =0x0221A400 - mov r2, #0 - ldr r1, [r0, #0] - ldr r0, _021D1E70 ; =0x00001090 - str r2, [r1, r0] - bx lr - ; .align 2, 0 -_021D1E6C: .word 0x0221A400 -_021D1E70: .word 0x00001090 - thumb_func_end ov4_021D1E60 - - thumb_func_start ov4_021D1E74 -ov4_021D1E74: ; 0x021D1E74 - push {r3, r4, r5, r6, r7, lr} - add r7, r0, #0 - mov r4, #1 - bl sub_0203895C - bl sub_0203272C - add r5, r0, #0 - beq _021D1EA8 - bl sub_02035E18 - sub r4, r0, #1 - cmp r4, #1 - bge _021D1E92 - mov r4, #1 -_021D1E92: - ldr r1, _021D1F08 ; =0x0221A400 - ldr r6, _021D1F0C ; =0x000010D4 - ldr r0, [r1, #0] - mov r3, #1 - strh r3, [r0, r6] - ldr r2, [r1, #0] - sub r0, r6, #4 - str r3, [r2, r0] - ldr r0, [r1, #0] - add r1, r6, #2 - strh r3, [r0, r1] -_021D1EA8: - ldr r0, _021D1F08 ; =0x0221A400 - ldr r2, [r0, #0] - ldr r0, _021D1F10 ; =0x00001090 - ldr r1, [r2, r0] - cmp r1, #0 - bne _021D1F06 - add r0, #0x14 - ldr r0, [r2, r0] - cmp r0, #5 - bhi _021D1EE4 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021D1EC8: ; jump table - .short _021D1EE4 - _021D1EC8 - 2 ; case 0 - .short _021D1EE4 - _021D1EC8 - 2 ; case 1 - .short _021D1ED4 - _021D1EC8 - 2 ; case 2 - .short _021D1ED8 - _021D1EC8 - 2 ; case 3 - .short _021D1EDC - _021D1EC8 - 2 ; case 4 - .short _021D1EE0 - _021D1EC8 - 2 ; case 5 -_021D1ED4: - mov r1, #1 - b _021D1EEE -_021D1ED8: - mov r1, #2 - b _021D1EEE -_021D1EDC: - mov r1, #3 - b _021D1EEE -_021D1EE0: - mov r1, #4 - b _021D1EEE -_021D1EE4: - cmp r5, #0 - bne _021D1EEC - mov r1, #4 - b _021D1EEE -_021D1EEC: - mov r1, #3 -_021D1EEE: - add r0, r7, #0 - add r2, r4, #0 - bl ov4_021D2CC0 - ldr r0, _021D1F14 ; =ov4_021D1E60 - bl ov4_021D2EF4 - ldr r0, _021D1F08 ; =0x0221A400 - mov r2, #1 - ldr r1, [r0, #0] - ldr r0, _021D1F10 ; =0x00001090 - str r2, [r1, r0] -_021D1F06: - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021D1F08: .word 0x0221A400 -_021D1F0C: .word 0x000010D4 -_021D1F10: .word 0x00001090 -_021D1F14: .word ov4_021D1E60 - thumb_func_end ov4_021D1E74 - - thumb_func_start ov4_021D1F18 -ov4_021D1F18: ; 0x021D1F18 - push {r3, lr} - bl ov4_021D2F08 - ldr r1, _021D1F34 ; =0x0221A400 - ldr r3, [r1, #0] - cmp r3, #0 - beq _021D1F32 - ldr r0, _021D1F38 ; =0x00001090 - mov r2, #0 - str r2, [r3, r0] - ldr r1, [r1, #0] - sub r0, #0x10 - str r2, [r1, r0] -_021D1F32: - pop {r3, pc} - ; .align 2, 0 -_021D1F34: .word 0x0221A400 -_021D1F38: .word 0x00001090 - thumb_func_end ov4_021D1F18 - - thumb_func_start ov4_021D1F3C -ov4_021D1F3C: ; 0x021D1F3C - push {r4, r5, r6, lr} - add r6, r1, #0 - mov r1, #0x64 - add r4, r0, #0 - bl _s32_div_f - mov r1, #0xfa - add r5, r0, #0 - add r0, r4, #0 - lsl r1, r1, #2 - bl _s32_div_f - ldr r2, _021D2094 ; =0x00004E85 - cmp r4, r2 - bne _021D1F5E - mov r0, #1 - pop {r4, r5, r6, pc} -_021D1F5E: - cmp r0, #0x17 - bne _021D1F66 - mov r0, #1 - pop {r4, r5, r6, pc} -_021D1F66: - add r1, r2, #7 - cmp r4, r1 - bne _021D1F70 - mov r0, #2 - pop {r4, r5, r6, pc} -_021D1F70: - add r2, #9 - cmp r4, r2 - bne _021D1F7A - mov r0, #3 - pop {r4, r5, r6, pc} -_021D1F7A: - mov r1, #2 - lsl r1, r1, #8 - cmp r5, r1 - bne _021D1F86 - mov r0, #4 - pop {r4, r5, r6, pc} -_021D1F86: - add r2, r1, #0 - sub r2, #0xc - cmp r5, r2 - bne _021D1F92 - mov r0, #5 - pop {r4, r5, r6, pc} -_021D1F92: - ldr r2, _021D2098 ; =0x0000C79F - cmp r4, r2 - bne _021D1F9C - mov r0, #7 - pop {r4, r5, r6, pc} -_021D1F9C: - sub r2, r1, #2 - cmp r5, r2 - bne _021D1FA6 - mov r0, #6 - pop {r4, r5, r6, pc} -_021D1FA6: - sub r2, r1, #1 - cmp r5, r2 - bne _021D1FB0 - mov r0, #6 - pop {r4, r5, r6, pc} -_021D1FB0: - add r1, r1, #1 - cmp r5, r1 - bne _021D1FBA - mov r0, #6 - pop {r4, r5, r6, pc} -_021D1FBA: - ldr r1, _021D209C ; =0x0000CB20 - cmp r4, r1 - blt _021D1FCA - add r1, r1, #3 - cmp r4, r1 - bgt _021D1FCA - mov r0, #8 - pop {r4, r5, r6, pc} -_021D1FCA: - ldr r1, _021D20A0 ; =0x0000CB84 - cmp r4, r1 - blt _021D1FDA - add r1, r1, #3 - cmp r4, r1 - bgt _021D1FDA - mov r0, #8 - pop {r4, r5, r6, pc} -_021D1FDA: - ldr r1, _021D20A4 ; =0x0000CBE8 - cmp r4, r1 - blt _021D1FEA - add r1, r1, #3 - cmp r4, r1 - bgt _021D1FEA - mov r0, #8 - pop {r4, r5, r6, pc} -_021D1FEA: - ldr r1, _021D20A8 ; =0x00013A2E - cmp r4, r1 - bne _021D1FF4 - mov r0, #9 - pop {r4, r5, r6, pc} -_021D1FF4: - cmp r0, #0x14 - bne _021D1FFC - mov r0, #0 - pop {r4, r5, r6, pc} -_021D1FFC: - mov r1, #0x82 - lsl r1, r1, #2 - cmp r5, r1 - bne _021D2008 - mov r0, #0 - pop {r4, r5, r6, pc} -_021D2008: - add r2, r1, #1 - cmp r5, r2 - bne _021D2012 - mov r0, #0 - pop {r4, r5, r6, pc} -_021D2012: - add r2, r1, #2 - cmp r5, r2 - bne _021D201C - mov r0, #0 - pop {r4, r5, r6, pc} -_021D201C: - add r2, r1, #3 - cmp r5, r2 - bne _021D2026 - mov r0, #0 - pop {r4, r5, r6, pc} -_021D2026: - add r2, r1, #0 - add r2, #0xa - cmp r5, r2 - bne _021D2032 - mov r0, #0 - pop {r4, r5, r6, pc} -_021D2032: - add r2, r1, #0 - add r2, #0xb - cmp r5, r2 - bne _021D203E - mov r0, #0 - pop {r4, r5, r6, pc} -_021D203E: - add r1, #0xc - cmp r5, r1 - bne _021D2048 - mov r0, #0 - pop {r4, r5, r6, pc} -_021D2048: - ldr r1, _021D20AC ; =0x00002710 - cmp r4, r1 - bge _021D2052 - mov r0, #0xe - pop {r4, r5, r6, pc} -_021D2052: - cmp r0, #0x1f - bne _021D205A - mov r0, #0xc - pop {r4, r5, r6, pc} -_021D205A: - cmp r6, #7 - bhi _021D2082 - add r0, r6, r6 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021D206A: ; jump table - .short _021D207A - _021D206A - 2 ; case 0 - .short _021D207A - _021D206A - 2 ; case 1 - .short _021D207A - _021D206A - 2 ; case 2 - .short _021D207E - _021D206A - 2 ; case 3 - .short _021D207E - _021D206A - 2 ; case 4 - .short _021D207E - _021D206A - 2 ; case 5 - .short _021D207E - _021D206A - 2 ; case 6 - .short _021D2088 - _021D206A - 2 ; case 7 -_021D207A: - mov r0, #0xb - pop {r4, r5, r6, pc} -_021D207E: - mov r0, #0xa - pop {r4, r5, r6, pc} -_021D2082: - bl GF_AssertFail - b _021D208C -_021D2088: - mov r0, #0xf - pop {r4, r5, r6, pc} -_021D208C: - mov r0, #0 - mvn r0, r0 - pop {r4, r5, r6, pc} - nop -_021D2094: .word 0x00004E85 -_021D2098: .word 0x0000C79F -_021D209C: .word 0x0000CB20 -_021D20A0: .word 0x0000CB84 -_021D20A4: .word 0x0000CBE8 -_021D20A8: .word 0x00013A2E -_021D20AC: .word 0x00002710 - thumb_func_end ov4_021D1F3C - - thumb_func_start ov4_021D20B0 -ov4_021D20B0: ; 0x021D20B0 - push {r3, lr} - cmp r0, #0 - bne _021D2110 - ldr r0, _021D212C ; =0x0221A400 - ldr r2, _021D2130 ; =0x00001070 - ldr r0, [r0, #0] - ldr r1, [r0, r2] - cmp r1, #0x12 - bhi _021D2128 - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021D20CE: ; jump table - .short _021D2128 - _021D20CE - 2 ; case 0 - .short _021D2128 - _021D20CE - 2 ; case 1 - .short _021D2128 - _021D20CE - 2 ; case 2 - .short _021D2128 - _021D20CE - 2 ; case 3 - .short _021D210C - _021D20CE - 2 ; case 4 - .short _021D20F4 - _021D20CE - 2 ; case 5 - .short _021D2128 - _021D20CE - 2 ; case 6 - .short _021D20F4 - _021D20CE - 2 ; case 7 - .short _021D20F4 - _021D20CE - 2 ; case 8 - .short _021D2128 - _021D20CE - 2 ; case 9 - .short _021D2128 - _021D20CE - 2 ; case 10 - .short _021D2128 - _021D20CE - 2 ; case 11 - .short _021D2128 - _021D20CE - 2 ; case 12 - .short _021D2128 - _021D20CE - 2 ; case 13 - .short _021D210C - _021D20CE - 2 ; case 14 - .short _021D2128 - _021D20CE - 2 ; case 15 - .short _021D2128 - _021D20CE - 2 ; case 16 - .short _021D210C - _021D20CE - 2 ; case 17 - .short _021D210C - _021D20CE - 2 ; case 18 -_021D20F4: - add r2, #0x20 - ldr r0, [r0, r2] - cmp r0, #0 - beq _021D2100 - bl ov4_021D2EA4 -_021D2100: - ldr r0, _021D212C ; =0x0221A400 - mov r2, #0x10 - ldr r1, [r0, #0] - ldr r0, _021D2130 ; =0x00001070 - str r2, [r1, r0] - b _021D2128 -_021D210C: - mov r0, #1 - pop {r3, pc} -_021D2110: - ldr r0, _021D212C ; =0x0221A400 - ldr r1, [r0, #0] - ldr r0, _021D2130 ; =0x00001070 - ldr r0, [r1, r0] - cmp r0, #4 - beq _021D2124 - cmp r0, #0x11 - beq _021D2124 - cmp r0, #0x12 - bne _021D2128 -_021D2124: - mov r0, #1 - pop {r3, pc} -_021D2128: - mov r0, #0 - pop {r3, pc} - ; .align 2, 0 -_021D212C: .word 0x0221A400 -_021D2130: .word 0x00001070 - thumb_func_end ov4_021D20B0 - - thumb_func_start ov4_021D2134 -ov4_021D2134: ; 0x021D2134 - push {r3, lr} - ldr r0, _021D2168 ; =0x0221A400 - ldr r2, [r0, #0] - ldr r0, _021D216C ; =0x00001070 - ldr r0, [r2, r0] - cmp r0, #0x11 - beq _021D214A - cmp r0, #0x12 - beq _021D214A - cmp r0, #4 - bne _021D2162 -_021D214A: - ldr r0, _021D216C ; =0x00001070 - mov r1, #4 - str r1, [r2, r0] - sub r2, r1, #5 - ldr r1, _021D2168 ; =0x0221A400 - add r0, #0x28 - ldr r1, [r1, #0] - str r2, [r1, r0] - bl ov4_021D25FC - mov r0, #1 - pop {r3, pc} -_021D2162: - mov r0, #0 - pop {r3, pc} - nop -_021D2168: .word 0x0221A400 -_021D216C: .word 0x00001070 - thumb_func_end ov4_021D2134 - - thumb_func_start ov4_021D2170 -ov4_021D2170: ; 0x021D2170 - ldr r1, _021D2180 ; =0x0221A400 - ldr r2, [r1, #0] - cmp r2, #0 - beq _021D217E - mov r1, #0x3f - lsl r1, r1, #6 - str r0, [r2, r1] -_021D217E: - bx lr - ; .align 2, 0 -_021D2180: .word 0x0221A400 - thumb_func_end ov4_021D2170 - - thumb_func_start ov4_021D2184 -ov4_021D2184: ; 0x021D2184 - push {r3, lr} - blx ov4_021D8E8C - blx ov4_021D7DB0 - bl ov4_021D1F18 - bl ov4_021D0F68 - pop {r3, pc} - thumb_func_end ov4_021D2184 - - thumb_func_start ov4_021D2198 -ov4_021D2198: ; 0x021D2198 - push {r3, r4} - ldr r3, _021D21AC ; =0x0221A400 - ldr r2, _021D21B0 ; =0x00001064 - ldr r4, [r3, #0] - str r0, [r4, r2] - ldr r3, [r3, #0] - add r0, r2, #4 - str r1, [r3, r0] - pop {r3, r4} - bx lr - ; .align 2, 0 -_021D21AC: .word 0x0221A400 -_021D21B0: .word 0x00001064 - thumb_func_end ov4_021D2198 - - thumb_func_start ov4_021D21B4 -ov4_021D21B4: ; 0x021D21B4 - push {r3, r4, r5, lr} - ldr r0, _021D221C ; =0x0221A400 - ldr r1, _021D2220 ; =0x00001064 - ldr r0, [r0, #0] - ldr r2, [r0, r1] - cmp r2, #0 - beq _021D221A - add r1, #8 - ldr r2, [r0, r1] - mov r1, #0x1f - add r5, r2, #0 - and r5, r1 - mov r1, #0xc - add r4, r5, #0 - mul r4, r1 - add r1, #0xf4 - ldr r0, [r0, r1] - add r0, r0, r4 - bl DWC_IsBuddyFriendData - cmp r0, #0 - beq _021D220A - ldr r0, _021D221C ; =0x0221A400 - ldr r3, _021D2220 ; =0x00001064 - ldr r2, [r0, #0] - mov r0, #1 - lsl r0, r0, #8 - ldr r1, [r2, r3] - ldr r0, [r2, r0] - add r3, r3, #4 - ldr r2, [r2, r3] - add r0, r0, r4 - add r3, r2, #0 - mul r3, r5 - add r1, r1, r3 - add r2, sp, #0 - blx ov4_021DB2A4 - ldr r1, _021D221C ; =0x0221A400 - ldr r1, [r1, #0] - add r2, r1, r5 - ldr r1, _021D2224 ; =0x00001044 - strb r0, [r2, r1] -_021D220A: - ldr r0, _021D221C ; =0x0221A400 - ldr r1, _021D2228 ; =0x0000106C - ldr r3, [r0, #0] - ldr r0, [r3, r1] - add r2, r0, #1 - mov r0, #0x1f - and r0, r2 - str r0, [r3, r1] -_021D221A: - pop {r3, r4, r5, pc} - ; .align 2, 0 -_021D221C: .word 0x0221A400 -_021D2220: .word 0x00001064 -_021D2224: .word 0x00001044 -_021D2228: .word 0x0000106C - thumb_func_end ov4_021D21B4 - - thumb_func_start ov4_021D222C -ov4_021D222C: ; 0x021D222C - ldr r3, _021D2230 ; =ov4_021DB350 - bx r3 - ; .align 2, 0 -_021D2230: .word ov4_021DB350 - thumb_func_end ov4_021D222C - - thumb_func_start ov4_021D2234 -ov4_021D2234: ; 0x021D2234 - ldr r1, _021D2240 ; =0x0221A400 - ldr r1, [r1, #0] - add r1, r1, r0 - ldr r0, _021D2244 ; =0x00001044 - ldrb r0, [r1, r0] - bx lr - ; .align 2, 0 -_021D2240: .word 0x0221A400 -_021D2244: .word 0x00001044 - thumb_func_end ov4_021D2234 - - thumb_func_start ov4_021D2248 -ov4_021D2248: ; 0x021D2248 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - add r4, r1, #0 - add r7, r2, #0 - bl ov4_021D27E0 - cmp r0, #0 - beq _021D225E - mov r0, #3 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_021D225E: - ldr r1, _021D2350 ; =0x0221A400 - ldr r0, _021D2354 ; =0x00001070 - ldr r2, [r1, #0] - ldr r3, [r2, r0] - cmp r3, #4 - beq _021D228E - add r3, r0, #0 - add r3, #0x5c - ldr r3, [r2, r3] - add r4, r3, #1 - add r3, r0, #0 - add r3, #0x5c - str r4, [r2, r3] - ldr r1, [r1, #0] - add r0, #0x5c - ldr r0, [r1, r0] - cmp r0, #0x78 - ble _021D2288 - mov r0, #2 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_021D2288: - mov r0, #0 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_021D228E: - bl ov4_021D27CC - ldr r2, _021D2350 ; =0x0221A400 - ldr r1, _021D2358 ; =0x000010D8 - ldr r0, [r2, #0] - mov r3, #0 - str r3, [r0, r1] - add r0, r1, #0 - ldr r3, [r2, #0] - mov r6, #1 - add r0, #0xd - strb r6, [r3, r0] - add r0, r1, #0 - ldr r3, [r2, #0] - sub r0, #0x44 - str r5, [r3, r0] - sub r1, #0x5c - ldr r0, [r2, #0] - cmp r7, #0 - str r4, [r0, r1] - beq _021D22BA - mov r4, #2 -_021D22BA: - ldr r0, _021D2350 ; =0x0221A400 - mov r2, #1 - ldr r1, [r0, #0] - ldr r0, _021D235C ; =0x000010A0 - cmp r5, #0 - str r2, [r1, r0] - bge _021D22DE - lsl r0, r4, #0x18 - mov r2, #0 - ldr r1, _021D2360 ; =ov4_021D23A4 - ldr r3, _021D2364 ; =ov4_021D24AC - lsr r0, r0, #0x18 - str r2, [sp] - blx ov4_021D9494 - mov r3, #1 - ldr r1, _021D2350 ; =0x0221A400 - b _021D22F0 -_021D22DE: - ldr r1, _021D2368 ; =ov4_021D2488 - mov r2, #0 - ldr r3, _021D2364 ; =ov4_021D24AC - add r0, r5, #0 - str r2, [sp] - blx ov4_021D952C - ldr r1, _021D2350 ; =0x0221A400 - mov r3, #2 -_021D22F0: - ldr r2, [r1, #0] - ldr r1, _021D236C ; =0x00001074 - cmp r0, #0 - str r3, [r2, r1] - ldr r0, _021D2370 ; =0x000010CC - bne _021D231A - ldr r1, _021D2350 ; =0x0221A400 - ldr r3, [r1, #0] - ldr r2, [r3, r0] - add r2, r2, #1 - str r2, [r3, r0] - ldr r1, [r1, #0] - ldr r0, [r1, r0] - cmp r0, #0x78 - ble _021D2314 - mov r0, #2 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_021D2314: - mov r0, #1 - mvn r0, r0 - pop {r3, r4, r5, r6, r7, pc} -_021D231A: - ldr r1, _021D2350 ; =0x0221A400 - mov r3, #0 - ldr r2, [r1, #0] - str r3, [r2, r0] - ldr r1, [r1, #0] - mov r2, #5 - sub r0, #0x5c - str r2, [r1, r0] - ldr r0, _021D2374 ; =ov4_021D18F4 - blx ov4_021E4D74 - ldr r0, _021D2378 ; =ov4_021D1950 - blx ov4_021E4D94 - ldr r0, _021D237C ; =ov4_021D1A20 - mov r1, #0 - blx ov4_021D9724 - ldr r0, _021D2380 ; =ov4_021D16E8 - blx ov4_021E4DB4 - ldr r1, _021D2350 ; =0x0221A400 - mov r0, #0 - ldr r2, [r1, #0] - ldr r1, _021D2384 ; =0x00001078 - str r0, [r2, r1] - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021D2350: .word 0x0221A400 -_021D2354: .word 0x00001070 -_021D2358: .word 0x000010D8 -_021D235C: .word 0x000010A0 -_021D2360: .word ov4_021D23A4 -_021D2364: .word ov4_021D24AC -_021D2368: .word ov4_021D2488 -_021D236C: .word 0x00001074 -_021D2370: .word 0x000010CC -_021D2374: .word ov4_021D18F4 -_021D2378: .word ov4_021D1950 -_021D237C: .word ov4_021D1A20 -_021D2380: .word ov4_021D16E8 -_021D2384: .word 0x00001078 - thumb_func_end ov4_021D2248 - - thumb_func_start ov4_021D2388 -ov4_021D2388: ; 0x021D2388 - ldr r0, _021D239C ; =0x0221A400 - ldr r1, [r0, #0] - cmp r1, #0 - beq _021D2396 - ldr r0, _021D23A0 ; =0x00001094 - ldr r0, [r1, r0] - bx lr -_021D2396: - mov r0, #0 - mvn r0, r0 - bx lr - ; .align 2, 0 -_021D239C: .word 0x0221A400 -_021D23A0: .word 0x00001094 - thumb_func_end ov4_021D2388 - - thumb_func_start ov4_021D23A4 -ov4_021D23A4: ; 0x021D23A4 - push {r3, r4, r5, r6, r7, lr} - ldr r7, _021D246C ; =0x0221A400 - add r3, r0, #0 - add r0, r1, #0 - add r6, r2, #0 - mov r4, #0 - ldr r2, [r7, #0] - ldr r1, _021D2470 ; =0x000010A0 - ldr r5, [sp, #0x18] - str r4, [r2, r1] - cmp r3, #0 - bne _021D246A - cmp r0, #0 - bne _021D245E - bl sub_0203895C - bl sub_02032740 - cmp r0, #0 - beq _021D23D4 - sub r0, r4, #1 - cmp r5, r0 - bne _021D23D4 - mov r4, #1 -_021D23D4: - ldr r0, _021D246C ; =0x0221A400 - ldr r1, [r0, #0] - ldr r0, _021D2474 ; =0x00000FBC - ldr r1, [r1, r0] - cmp r1, #0 - beq _021D23EA - add r0, r5, #0 - blx r1 - cmp r0, #0 - bne _021D23EA - mov r4, #1 -_021D23EA: - ldr r0, _021D246C ; =0x0221A400 - ldr r1, [r0, #0] - ldr r0, _021D2478 ; =0x000010E0 - ldrb r0, [r1, r0] - cmp r0, #0 - bne _021D23FA - cmp r4, #0 - beq _021D2432 -_021D23FA: - blx DWC_GetAIDBitmap - ldr r1, _021D246C ; =0x0221A400 - ldr r2, [r1, #0] - ldr r1, _021D247C ; =0x000010D8 - ldr r1, [r2, r1] - mvn r1, r1 - and r0, r1 - str r0, [sp] - blx DWC_GetAIDBitmap - add r4, r0, #0 - ldr r0, [sp] - cmp r0, #0 - beq _021D2432 - add r0, sp, #0 - blx ov4_021D985C - ldr r0, [sp] - eor r0, r4 - cmp r0, #1 - bne _021D246A - ldr r0, _021D246C ; =0x0221A400 - mov r2, #6 - ldr r1, [r0, #0] - ldr r0, _021D2480 ; =0x00001070 - str r2, [r1, r0] - pop {r3, r4, r5, r6, r7, pc} -_021D2432: - ldr r0, _021D246C ; =0x0221A400 - ldr r1, [r0, #0] - ldr r0, _021D2484 ; =0x00001094 - str r5, [r1, r0] - blx DWC_GetAIDBitmap - ldr r2, _021D246C ; =0x0221A400 - ldr r1, _021D247C ; =0x000010D8 - ldr r3, [r2, #0] - str r0, [r3, r1] - ldr r2, [r2, #0] - ldr r0, [r2, r1] - cmp r0, #1 - bne _021D2456 - mov r0, #6 - sub r1, #0x68 - str r0, [r2, r1] - pop {r3, r4, r5, r6, r7, pc} -_021D2456: - add r0, r5, #0 - bl ov4_021D1854 - pop {r3, r4, r5, r6, r7, pc} -_021D245E: - cmp r6, #0 - bne _021D246A - ldr r0, [r7, #0] - sub r2, r4, #1 - sub r1, #8 - str r2, [r0, r1] -_021D246A: - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021D246C: .word 0x0221A400 -_021D2470: .word 0x000010A0 -_021D2474: .word 0x00000FBC -_021D2478: .word 0x000010E0 -_021D247C: .word 0x000010D8 -_021D2480: .word 0x00001070 -_021D2484: .word 0x00001094 - thumb_func_end ov4_021D23A4 - - thumb_func_start ov4_021D2488 -ov4_021D2488: ; 0x021D2488 - push {r4, lr} - ldr r2, _021D24A4 ; =0x0221A400 - mov r4, #0 - ldr r3, [r2, #0] - ldr r2, _021D24A8 ; =0x000010A0 - cmp r0, #0 - str r4, [r3, r2] - bne _021D24A2 - cmp r1, #0 - bne _021D24A2 - ldr r0, [sp, #8] - bl ov4_021D1854 -_021D24A2: - pop {r4, pc} - ; .align 2, 0 -_021D24A4: .word 0x0221A400 -_021D24A8: .word 0x000010A0 - thumb_func_end ov4_021D2488 - - thumb_func_start ov4_021D24AC -ov4_021D24AC: ; 0x021D24AC - push {r3, lr} - ldr r2, _021D24D0 ; =0x0221A400 - ldr r1, _021D24D4 ; =0x00001098 - ldr r3, [r2, #0] - str r0, [r3, r1] - ldr r3, [r2, #0] - add r2, r1, #0 - sub r2, #0xe4 - ldr r2, [r3, r2] - cmp r2, #0 - beq _021D24CC - sub r1, #0xe0 - lsl r0, r0, #0x10 - ldr r1, [r3, r1] - lsr r0, r0, #0x10 - blx r2 -_021D24CC: - pop {r3, pc} - nop -_021D24D0: .word 0x0221A400 -_021D24D4: .word 0x00001098 - thumb_func_end ov4_021D24AC - - thumb_func_start ov4_021D24D8 -ov4_021D24D8: ; 0x021D24D8 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x18 - ldr r0, _021D2540 ; =0x0221A400 - ldr r1, [r0, #0] - mov r0, #0xf1 - lsl r0, r0, #4 - ldr r0, [r1, r0] - bl DWC_CheckHasProfile - cmp r0, #0 - bne _021D2500 - ldr r0, _021D2540 ; =0x0221A400 - ldr r1, [r0, #0] - mov r0, #0xf1 - lsl r0, r0, #4 - ldr r0, [r1, r0] - add r1, sp, #0xc - bl DWC_CreateExchangeToken - b _021D2510 -_021D2500: - ldr r0, _021D2540 ; =0x0221A400 - ldr r1, [r0, #0] - mov r0, #0xf1 - lsl r0, r0, #4 - ldr r0, [r1, r0] - add r1, sp, #0 - bl DWC_CreateExchangeToken -_021D2510: - mov r4, #0 - mov r7, #1 - ldr r6, _021D2540 ; =0x0221A400 - add r5, r4, #0 - lsl r7, r7, #8 -_021D251A: - mov r0, #1 - ldr r1, [r6, #0] - lsl r0, r0, #8 - ldr r0, [r1, r0] - add r0, r0, r5 - bl DWC_GetFriendDataType - ldr r0, [r6, #0] - ldr r0, [r0, r7] - add r0, r0, r5 - bl DWC_IsBuddyFriendData - add r4, r4, #1 - add r5, #0xc - cmp r4, #0x20 - blt _021D251A - add sp, #0x18 - pop {r3, r4, r5, r6, r7, pc} - nop -_021D2540: .word 0x0221A400 - thumb_func_end ov4_021D24D8 - - thumb_func_start ov4_021D2544 -ov4_021D2544: ; 0x021D2544 - ldr r3, _021D2548 ; =ov4_021D2F7C - bx r3 - ; .align 2, 0 -_021D2548: .word ov4_021D2F7C - thumb_func_end ov4_021D2544 - - thumb_func_start ov4_021D254C -ov4_021D254C: ; 0x021D254C - ldr r0, _021D2560 ; =0x0221A400 - ldr r1, [r0, #0] - cmp r1, #0 - beq _021D255A - ldr r0, _021D2564 ; =0x0000109C - ldr r0, [r1, r0] - bx lr -_021D255A: - mov r0, #0 - bx lr - nop -_021D2560: .word 0x0221A400 -_021D2564: .word 0x0000109C - thumb_func_end ov4_021D254C - - thumb_func_start ov4_021D2568 -ov4_021D2568: ; 0x021D2568 - ldr r0, _021D257C ; =0x0221A400 - ldr r1, [r0, #0] - cmp r1, #0 - beq _021D2576 - ldr r0, _021D2580 ; =0x00001098 - ldr r0, [r1, r0] - bx lr -_021D2576: - mov r0, #0 - bx lr - nop -_021D257C: .word 0x0221A400 -_021D2580: .word 0x00001098 - thumb_func_end ov4_021D2568 - - thumb_func_start ov4_021D2584 -ov4_021D2584: ; 0x021D2584 - ldr r1, _021D2590 ; =0x0221A400 - ldr r2, [r1, #0] - ldr r1, _021D2594 ; =0x0000109C - str r0, [r2, r1] - bx lr - nop -_021D2590: .word 0x0221A400 -_021D2594: .word 0x0000109C - thumb_func_end ov4_021D2584 - - thumb_func_start ov4_021D2598 -ov4_021D2598: ; 0x021D2598 - ldr r1, _021D25A4 ; =0x0221A400 - ldr r2, [r1, #0] - ldr r1, _021D25A8 ; =0x000010D6 - strh r0, [r2, r1] - bx lr - nop -_021D25A4: .word 0x0221A400 -_021D25A8: .word 0x000010D6 - thumb_func_end ov4_021D2598 - - thumb_func_start ov4_021D25AC -ov4_021D25AC: ; 0x021D25AC - ldr r0, _021D25B8 ; =0x0221A400 - mov r2, #2 - ldr r1, [r0, #0] - ldr r0, _021D25BC ; =0x000010E0 - strb r2, [r1, r0] - bx lr - ; .align 2, 0 -_021D25B8: .word 0x0221A400 -_021D25BC: .word 0x000010E0 - thumb_func_end ov4_021D25AC - - thumb_func_start ov4_021D25C0 -ov4_021D25C0: ; 0x021D25C0 - push {r3, lr} - ldr r0, _021D25F0 ; =0x0221A400 - ldr r2, [r0, #0] - ldr r0, _021D25F4 ; =0x000010E0 - ldrb r1, [r2, r0] - cmp r1, #0 - bne _021D25DA - mov r1, #1 - strb r1, [r2, r0] - ldr r0, _021D25F8 ; =ov4_021D25AC - mov r1, #0 - blx ov4_021DC7C8 -_021D25DA: - ldr r0, _021D25F0 ; =0x0221A400 - ldr r1, [r0, #0] - ldr r0, _021D25F4 ; =0x000010E0 - ldrb r0, [r1, r0] - cmp r0, #2 - bne _021D25EA - mov r0, #1 - pop {r3, pc} -_021D25EA: - mov r0, #0 - pop {r3, pc} - nop -_021D25F0: .word 0x0221A400 -_021D25F4: .word 0x000010E0 -_021D25F8: .word ov4_021D25AC - thumb_func_end ov4_021D25C0 - - thumb_func_start ov4_021D25FC -ov4_021D25FC: ; 0x021D25FC - ldr r0, _021D2608 ; =0x0221A400 - mov r2, #0 - ldr r1, [r0, #0] - ldr r0, _021D260C ; =0x000010E0 - strb r2, [r1, r0] - bx lr - ; .align 2, 0 -_021D2608: .word 0x0221A400 -_021D260C: .word 0x000010E0 - thumb_func_end ov4_021D25FC - - thumb_func_start ov4_021D2610 -ov4_021D2610: ; 0x021D2610 - ldr r3, _021D2614 ; =ov4_021D9920 - bx r3 - ; .align 2, 0 -_021D2614: .word ov4_021D9920 - thumb_func_end ov4_021D2610 - - thumb_func_start ov4_021D2618 -ov4_021D2618: ; 0x021D2618 - push {r4, lr} - cmp r0, #0 - beq _021D2680 - ldr r2, _021D26D4 ; =0x0221A400 - ldr r0, _021D26D8 ; =0x00001088 - ldr r3, [r2, #0] - mov r4, #0xb - str r4, [r3, r0] - ldr r2, [r2, #0] - sub r0, #0xf0 - ldr r0, [r2, r0] - cmp r0, #0 - bne _021D26D0 - add r0, r1, #0 - ldr r1, _021D26DC ; =0x0000F020 - bl sub_02018144 - ldr r2, _021D26D4 ; =0x0221A400 - ldr r1, _021D26E0 ; =0x00000F98 - ldr r3, [r2, #0] - str r0, [r3, r1] - ldr r0, [r2, #0] - mov r2, #0 - ldr r0, [r0, r1] - mov r1, #0x1f - add r0, #0x1f - bic r0, r1 - mov r1, #0xf - lsl r1, r1, #0xc - bl NNS_FndCreateExpHeapEx - ldr r2, _021D26D4 ; =0x0221A400 - ldr r1, _021D26E4 ; =0x00000F9C - ldr r3, [r2, #0] - str r0, [r3, r1] - ldr r0, [r2, #0] - ldr r0, [r0, r1] - mov r1, #0x10 - bl NNS_FndSetGroupIDForExpHeap - ldr r0, _021D26D4 ; =0x0221A400 - ldr r1, [r0, #0] - ldr r0, _021D26E4 ; =0x00000F9C - ldr r0, [r1, r0] - bl NNS_FndGetTotalFreeSizeForExpHeap - ldr r1, _021D26D4 ; =0x0221A400 - ldr r2, [r1, #0] - mov r1, #0xfa - lsl r1, r1, #4 - str r0, [r2, r1] - pop {r4, pc} -_021D2680: - ldr r2, _021D26D4 ; =0x0221A400 - ldr r0, _021D26E8 ; =0x00001084 - ldr r4, [r2, #0] - add r1, r0, #4 - ldr r3, [r4, r0] - str r3, [r4, r1] - add r1, r0, #0 - ldr r4, [r2, #0] - sub r1, #0xec - ldr r1, [r4, r1] - cmp r1, #0 - beq _021D26D0 - sub r0, #0xe8 - ldr r0, [r4, r0] - bl NNS_FndGetTotalFreeSizeForExpHeap - mov r1, #0xfa - lsl r1, r1, #4 - ldr r2, [r4, r1] - cmp r2, r0 - beq _021D26B2 - mov r0, #1 - bl sub_02038AE0 - pop {r4, pc} -_021D26B2: - sub r0, r1, #4 - ldr r0, [r4, r0] - bl NNS_FndDestroyExpHeap - ldr r0, _021D26D4 ; =0x0221A400 - ldr r1, [r0, #0] - ldr r0, _021D26E0 ; =0x00000F98 - ldr r0, [r1, r0] - bl sub_020181C4 - ldr r0, _021D26D4 ; =0x0221A400 - mov r2, #0 - ldr r1, [r0, #0] - ldr r0, _021D26E0 ; =0x00000F98 - str r2, [r1, r0] -_021D26D0: - pop {r4, pc} - nop -_021D26D4: .word 0x0221A400 -_021D26D8: .word 0x00001088 -_021D26DC: .word 0x0000F020 -_021D26E0: .word 0x00000F98 -_021D26E4: .word 0x00000F9C -_021D26E8: .word 0x00001084 - thumb_func_end ov4_021D2618 - - thumb_func_start ov4_021D26EC -ov4_021D26EC: ; 0x021D26EC - ldr r1, _021D26F8 ; =0x0221A400 - ldr r2, [r1, #0] - ldr r1, _021D26FC ; =0x000010E5 - strb r0, [r2, r1] - bx lr - nop -_021D26F8: .word 0x0221A400 -_021D26FC: .word 0x000010E5 - thumb_func_end ov4_021D26EC - - thumb_func_start ov4_021D2700 -ov4_021D2700: ; 0x021D2700 - push {r4, lr} - ldr r1, _021D2740 ; =0x0221A400 - lsl r4, r0, #2 - ldr r3, [r1, #0] - mov r1, #0x3e - add r2, r3, r4 - lsl r1, r1, #6 - ldr r1, [r2, r1] - cmp r1, #0 - beq _021D273C - add r2, r3, r0 - ldr r0, _021D2744 ; =0x000010E1 - ldrb r0, [r2, r0] - cmp r0, #1 - bne _021D2726 - add r0, r1, #0 - bl sub_020181C4 - b _021D272E -_021D2726: - mov r0, #0 - add r2, r0, #0 - bl ov4_021D1B04 -_021D272E: - ldr r0, _021D2740 ; =0x0221A400 - mov r2, #0 - ldr r0, [r0, #0] - add r1, r0, r4 - mov r0, #0x3e - lsl r0, r0, #6 - str r2, [r1, r0] -_021D273C: - pop {r4, pc} - nop -_021D2740: .word 0x0221A400 -_021D2744: .word 0x000010E1 - thumb_func_end ov4_021D2700 - - thumb_func_start ov4_021D2748 -ov4_021D2748: ; 0x021D2748 - push {r3, r4, r5, lr} - add r5, r0, #0 - bl ov4_021D2700 - ldr r0, _021D27C0 ; =0x0221A400 - lsl r4, r5, #2 - ldr r2, [r0, #0] - mov r0, #0x3e - add r1, r2, r4 - lsl r0, r0, #6 - ldr r0, [r1, r0] - cmp r0, #0 - bne _021D27BC - ldr r1, _021D27C4 ; =0x00001088 - ldr r0, [r2, r1] - cmp r0, #0xb - bne _021D2780 - sub r1, #0x68 - bl sub_02018144 - ldr r2, _021D27C0 ; =0x0221A400 - ldr r1, [r2, #0] - add r3, r1, r4 - mov r1, #0x3e - lsl r1, r1, #6 - str r0, [r3, r1] - mov r3, #1 - b _021D2798 -_021D2780: - mov r0, #0 - sub r1, #0x88 - mov r2, #0x20 - bl ov4_021D1AA0 - ldr r2, _021D27C0 ; =0x0221A400 - ldr r1, [r2, #0] - add r3, r1, r4 - mov r1, #0x3e - lsl r1, r1, #6 - str r0, [r3, r1] - mov r3, #0 -_021D2798: - ldr r0, [r2, #0] - mov r2, #0x3e - add r1, r0, r5 - ldr r0, _021D27C8 ; =0x000010E1 - lsl r2, r2, #6 - strb r3, [r1, r0] - ldr r1, _021D27C0 ; =0x0221A400 - lsl r0, r5, #0x18 - ldr r1, [r1, #0] - mov r3, #0x1f - add r1, r1, r4 - ldr r1, [r1, r2] - lsr r0, r0, #0x18 - add r1, #0x1f - bic r1, r3 - add r2, #0x80 - blx ov4_021E4D28 -_021D27BC: - pop {r3, r4, r5, pc} - nop -_021D27C0: .word 0x0221A400 -_021D27C4: .word 0x00001088 -_021D27C8: .word 0x000010E1 - thumb_func_end ov4_021D2748 - - thumb_func_start ov4_021D27CC -ov4_021D27CC: ; 0x021D27CC - push {r4, lr} - mov r4, #0 -_021D27D0: - add r0, r4, #0 - bl ov4_021D2700 - add r4, r4, #1 - cmp r4, #4 - blt _021D27D0 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov4_021D27CC - - thumb_func_start ov4_021D27E0 -ov4_021D27E0: ; 0x021D27E0 - ldr r0, _021D27EC ; =0x0221A400 - ldr r1, [r0, #0] - ldr r0, _021D27F0 ; =0x000010E6 - ldrb r0, [r1, r0] - bx lr - nop -_021D27EC: .word 0x0221A400 -_021D27F0: .word 0x000010E6 - thumb_func_end ov4_021D27E0 - - thumb_func_start ov4_021D27F4 -ov4_021D27F4: ; 0x021D27F4 - ldr r0, _021D2800 ; =0x0221A400 - mov r2, #0 - ldr r1, [r0, #0] - ldr r0, _021D2804 ; =0x000010E6 - strb r2, [r1, r0] - bx lr - ; .align 2, 0 -_021D2800: .word 0x0221A400 -_021D2804: .word 0x000010E6 - thumb_func_end ov4_021D27F4 - - .rodata - - - .global Unk_ov4_02215868 -Unk_ov4_02215868: ; 0x02215868 - .incbin "incbin/overlay4_rodata.bin", 0x0, 0x8 - 0x0 - - .global Unk_ov4_02215870 -Unk_ov4_02215870: ; 0x02215870 - .incbin "incbin/overlay4_rodata.bin", 0x8, 0xC - - - - .data - - - .global Unk_ov4_02215E80 -Unk_ov4_02215E80: ; 0x02215E80 - .incbin "incbin/overlay4_data.bin", 0x0, 0xC - 0x0 - - .global Unk_ov4_02215E8C -Unk_ov4_02215E8C: ; 0x02215E8C - .incbin "incbin/overlay4_data.bin", 0xC, 0x14 - 0xC - - .global Unk_ov4_02215E94 -Unk_ov4_02215E94: ; 0x02215E94 - .incbin "incbin/overlay4_data.bin", 0x14, 0xA - - - - .bss - - - .global Unk_ov4_0221A400 -Unk_ov4_0221A400: ; 0x0221A400 - .space 0x4 - diff --git a/asm/overlay004/ov4_021D2808.inc b/asm/overlay004/ov4_021D2808.inc deleted file mode 100644 index 994c386bf9..0000000000 --- a/asm/overlay004/ov4_021D2808.inc +++ /dev/null @@ -1,54 +0,0 @@ -.public sub_02018144 -.public sub_02018238 -.public GF_AssertFail -.public sub_0203272C -.public sub_0203895C -.public NNS_SndInit -.public NNS_SndStrmInit -.public NNS_SndStrmAllocChannel -.public NNS_SndStrmFreeChannel -.public NNS_SndStrmSetup -.public NNS_SndStrmStart -.public NNS_SndStrmStop -.public NNS_SndStrmSetVolume -.public OS_GetTick -.public MIi_CpuClearFast -.public MI_CpuFill8 -.public MIC_Init -.public MIC_StartAutoSamplingAsync -.public MIC_StopAutoSampling -.public MIC_GetLastSamplingAddress -.public PM_Init -.public PM_SetAmp -.public PM_SetAmpGain -.public _u32_div_f -.public ov4_021D1E30 -.public ov4_021D1F18 -.public ov4_021D2808 -.public ov4_021D28B0 -.public ov4_021D28B4 -.public ov4_021D2974 -.public ov4_021D29C8 -.public ov4_021D2A10 -.public ov4_021D2A38 -.public ov4_021D2B04 -.public ov4_021D2C98 -.public ov4_021D2E8C -.public ov4_021D9968 -.public ov4_022027A8 -.public ov4_022028E0 -.public ov4_02202994 -.public ov4_02202CF0 -.public ov4_02202E0C -.public ov4_02202E80 -.public ov4_02202EB0 -.public ov4_02204160 -.public ov4_02204188 -.public ov4_022042F4 -.public ov4_022043D0 -.public ov4_022043F4 -.public ov4_022052BC -.public ov4_02205988 -.public ov4_02205AC0 -.public ov4_02205AE8 -.public ov4_02205B2C diff --git a/asm/overlay004/ov4_021D2808.s b/asm/overlay004/ov4_021D2808.s deleted file mode 100644 index 68882cac61..0000000000 --- a/asm/overlay004/ov4_021D2808.s +++ /dev/null @@ -1,1088 +0,0 @@ - .include "macros/function.inc" - .include "overlay004/ov4_021D2808.inc" - - - - .text - - - thumb_func_start ov4_021D2808 -ov4_021D2808: ; 0x021D2808 - push {r3, r4, r5, lr} - bl MIC_Init - bl PM_Init - mov r0, #1 - bl PM_SetAmp - mov r0, #3 - bl PM_SetAmpGain - ldr r0, _021D2898 ; =0x0221A404 - mov r2, #0 - ldr r1, [r0, #4] - ldr r3, _021D289C ; =0x00001A78 - add r5, r2, #0 - str r2, [r1, r3] - add r1, r3, #0 - ldr r4, [r0, #4] - add r1, #0xc - str r2, [r4, r1] - ldr r4, [r0, #4] - add r1, r3, #4 - str r2, [r4, r1] - add r1, r3, #0 - ldr r4, [r0, #4] - add r1, #8 - str r2, [r4, r1] - ldr r1, [r0, #4] - add r3, #0x10 - str r2, [r1, r3] - ldr r3, _021D28A0 ; =0x00001A8C - add r1, r2, #0 -_021D284A: - ldr r4, [r0, #4] - add r2, r2, #1 - add r4, r4, r5 - add r5, r5, #2 - strh r1, [r4, r3] - cmp r2, #0x10 - blt _021D284A - ldr r0, _021D2898 ; =0x0221A404 - ldr r2, [r0, #4] - ldr r0, _021D28A4 ; =0x00001AAC - str r1, [r2, r0] - mov r0, #1 - blx ov4_02202E80 - bl NNS_SndInit - ldr r0, _021D2898 ; =0x0221A404 - ldr r1, [r0, #4] - ldr r0, _021D28A8 ; =0x000019F8 - add r0, r1, r0 - bl NNS_SndStrmInit - ldr r1, _021D2898 ; =0x0221A404 - mov r0, #0 - ldr r2, [r1, #4] - ldr r1, _021D28AC ; =0x0000110C - add r1, r2, r1 - mov r2, #0x22 - lsl r2, r2, #6 - bl MIi_CpuClearFast - ldr r0, _021D2898 ; =0x0221A404 - mov r1, #0 - str r1, [r0, #0] - mov r0, #1 - blx ov4_02202EB0 - pop {r3, r4, r5, pc} - nop -_021D2898: .word 0x0221A404 -_021D289C: .word 0x00001A78 -_021D28A0: .word 0x00001A8C -_021D28A4: .word 0x00001AAC -_021D28A8: .word 0x000019F8 -_021D28AC: .word 0x0000110C - thumb_func_end ov4_021D2808 - - thumb_func_start ov4_021D28B0 -ov4_021D28B0: ; 0x021D28B0 - bx lr - ; .align 2, 0 - thumb_func_end ov4_021D28B0 - - thumb_func_start ov4_021D28B4 -ov4_021D28B4: ; 0x021D28B4 - push {r3, r4, r5, r6, r7, lr} - add r5, r1, #0 - add r4, r2, #0 - add r6, r3, #0 - ldr r7, [sp, #0x1c] - cmp r0, #0 - bne _021D28DC - mov r7, #0 - cmp r5, #0 - bls _021D2956 -_021D28C8: - ldr r0, [r4, #0] - mov r1, #0 - add r2, r6, #0 - bl MI_CpuFill8 - add r7, r7, #1 - add r4, r4, #4 - cmp r7, r5 - blo _021D28C8 - pop {r3, r4, r5, r6, r7, pc} -_021D28DC: - ldr r0, _021D2958 ; =0x0221A404 - ldr r1, _021D295C ; =0x00001A59 - ldr r0, [r0, #4] - ldrb r2, [r0, r1] - cmp r2, #0 - beq _021D28FE - add r1, r1, #3 - add r0, r0, r1 - ldr r1, _021D2960 ; =ov4_021D28B0 - mov r2, #0 - bl MIC_StartAutoSamplingAsync - ldr r1, _021D2958 ; =0x0221A404 - mov r0, #0 - ldr r2, [r1, #4] - ldr r1, _021D295C ; =0x00001A59 - strb r0, [r2, r1] -_021D28FE: - bl MIC_GetLastSamplingAddress - sub r0, r0, r7 - cmp r0, r6 - bhs _021D290A - add r7, r7, r6 -_021D290A: - ldr r0, _021D2964 ; =0x027FFFA8 - ldrh r1, [r0] - mov r0, #2 - lsl r0, r0, #0xe - and r0, r1 - asr r0, r0, #0xf - beq _021D2920 - ldr r0, _021D2958 ; =0x0221A404 - ldr r1, [r0, #4] - ldr r0, _021D2968 ; =0x0000110C - add r7, r1, r0 -_021D2920: - ldr r0, _021D2958 ; =0x0221A404 - ldr r1, [r0, #4] - ldr r0, _021D296C ; =0x000019F0 - ldr r0, [r1, r0] - cmp r0, #0 - bne _021D2934 - add r0, r7, #0 - add r1, r6, #0 - blx ov4_02202994 -_021D2934: - mov r7, #0 - cmp r5, #0 - bls _021D294C -_021D293A: - ldr r0, [r4, #0] - add r1, r6, #0 - mov r2, #0 - blx ov4_02202CF0 - add r7, r7, #1 - add r4, r4, #4 - cmp r7, r5 - blo _021D293A -_021D294C: - ldr r0, _021D2958 ; =0x0221A404 - mov r2, #2 - ldr r1, [r0, #4] - ldr r0, _021D2970 ; =0x00001A58 - strb r2, [r1, r0] -_021D2956: - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021D2958: .word 0x0221A404 -_021D295C: .word 0x00001A59 -_021D2960: .word ov4_021D28B0 -_021D2964: .word 0x027FFFA8 -_021D2968: .word 0x0000110C -_021D296C: .word 0x000019F0 -_021D2970: .word 0x00001A58 - thumb_func_end ov4_021D28B4 - - thumb_func_start ov4_021D2974 -ov4_021D2974: ; 0x021D2974 - push {r4, lr} - ldr r1, _021D29C0 ; =0x0221A404 - ldr r2, [r1, #4] - ldr r1, _021D29C4 ; =0x00001A54 - ldr r4, [r2, r1] - cmp r4, #0 - bne _021D2996 - blx ov4_02204160 - add r4, r0, #0 - bne _021D298E - mov r0, #0 - pop {r4, pc} -_021D298E: - mov r1, #0 - blx ov4_022042F4 - b _021D299E -_021D2996: - add r0, r4, #0 - mov r1, #0 - blx ov4_022042F4 -_021D299E: - cmp r0, #0 - beq _021D29B4 - add r0, r4, #0 - blx ov4_02204188 - ldr r1, _021D29C0 ; =0x0221A404 - mov r0, #0 - ldr r2, [r1, #4] - ldr r1, _021D29C4 ; =0x00001A54 - str r0, [r2, r1] - pop {r4, pc} -_021D29B4: - ldr r0, _021D29C0 ; =0x0221A404 - ldr r1, [r0, #4] - ldr r0, _021D29C4 ; =0x00001A54 - str r4, [r1, r0] - mov r0, #1 - pop {r4, pc} - ; .align 2, 0 -_021D29C0: .word 0x0221A404 -_021D29C4: .word 0x00001A54 - thumb_func_end ov4_021D2974 - - thumb_func_start ov4_021D29C8 -ov4_021D29C8: ; 0x021D29C8 - push {r3, lr} - ldr r0, _021D2A08 ; =0x0221A404 - ldr r1, [r0, #4] - ldr r0, _021D2A0C ; =0x00001A54 - ldr r0, [r1, r0] - cmp r0, #0 - beq _021D2A02 - ldr r1, [r0, #0xc] - cmp r1, #4 - bne _021D2A02 - mov r1, #0 - blx ov4_022043D0 - cmp r0, #0 - beq _021D29EA - mov r0, #0 - pop {r3, pc} -_021D29EA: - ldr r0, _021D2A08 ; =0x0221A404 - ldr r1, [r0, #4] - ldr r0, _021D2A0C ; =0x00001A54 - ldr r0, [r1, r0] - blx ov4_022027A8 - cmp r0, #0 - beq _021D29FE - mov r0, #1 - pop {r3, pc} -_021D29FE: - mov r0, #0 - pop {r3, pc} -_021D2A02: - mov r0, #0 - pop {r3, pc} - nop -_021D2A08: .word 0x0221A404 -_021D2A0C: .word 0x00001A54 - thumb_func_end ov4_021D29C8 - - thumb_func_start ov4_021D2A10 -ov4_021D2A10: ; 0x021D2A10 - push {r3, lr} - cmp r1, #7 - beq _021D2A28 - cmp r1, #9 - beq _021D2A20 - cmp r1, #0xc - beq _021D2A30 - pop {r3, pc} -_021D2A20: - add r0, r2, #0 - bl ov4_021D2B04 - pop {r3, pc} -_021D2A28: - add r0, r2, #0 - blx ov4_022027A8 - pop {r3, pc} -_021D2A30: - add r0, r2, #0 - bl ov4_021D2B04 - pop {r3, pc} - thumb_func_end ov4_021D2A10 - - thumb_func_start ov4_021D2A38 -ov4_021D2A38: ; 0x021D2A38 - push {r4, lr} - add r4, r2, #0 - cmp r1, #0xc - bhi _021D2AF0 - add r0, r1, r1 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021D2A4C: ; jump table - .short _021D2AF0 - _021D2A4C - 2 ; case 0 - .short _021D2A66 - _021D2A4C - 2 ; case 1 - .short _021D2AE2 - _021D2A4C - 2 ; case 2 - .short _021D2AEA - _021D2A4C - 2 ; case 3 - .short _021D2AA6 - _021D2A4C - 2 ; case 4 - .short _021D2AF0 - _021D2A4C - 2 ; case 5 - .short _021D2AF0 - _021D2A4C - 2 ; case 6 - .short _021D2AB6 - _021D2A4C - 2 ; case 7 - .short _021D2A86 - _021D2A4C - 2 ; case 8 - .short _021D2A9A - _021D2A4C - 2 ; case 9 - .short _021D2AF0 - _021D2A4C - 2 ; case 10 - .short _021D2AEA - _021D2A4C - 2 ; case 11 - .short _021D2AEA - _021D2A4C - 2 ; case 12 -_021D2A66: - ldr r0, _021D2AF4 ; =0x0221A404 - ldr r2, [r0, #4] - ldr r0, _021D2AF8 ; =0x00001A54 - ldr r1, [r2, r0] - cmp r1, #0 - beq _021D2A82 - add r0, r4, #0 - mov r1, #3 - blx ov4_022043D0 - add r0, r4, #0 - blx ov4_02204188 - pop {r4, pc} -_021D2A82: - str r4, [r2, r0] - pop {r4, pc} -_021D2A86: - add r0, r4, #0 - mov r1, #0 - blx ov4_022043D0 - add r0, r4, #0 - bl ov4_021D2B04 - bl ov4_021D1F18 - pop {r4, pc} -_021D2A9A: - add r0, r4, #0 - bl ov4_021D2B04 - bl ov4_021D1F18 - pop {r4, pc} -_021D2AA6: - add r0, r4, #0 - mov r1, #4 - blx ov4_022043D0 - add r0, r4, #0 - bl ov4_021D2B04 - pop {r4, pc} -_021D2AB6: - ldr r0, _021D2AF4 ; =0x0221A404 - ldr r2, [r4, #0] - ldr r1, [r0, #4] - ldr r0, _021D2AFC ; =0x000019E8 - ldr r0, [r1, r0] - cmp r2, r0 - beq _021D2ACC - add r0, r4, #0 - bl ov4_021D2B04 - pop {r4, pc} -_021D2ACC: - add r0, r4, #0 - blx ov4_022027A8 - cmp r0, #0 - beq _021D2AF0 - ldr r0, _021D2AF4 ; =0x0221A404 - mov r2, #2 - ldr r1, [r0, #4] - ldr r0, _021D2B00 ; =0x000019EC - str r2, [r1, r0] - pop {r4, pc} -_021D2AE2: - add r0, r4, #0 - bl ov4_021D2B04 - pop {r4, pc} -_021D2AEA: - add r0, r4, #0 - bl ov4_021D2B04 -_021D2AF0: - pop {r4, pc} - nop -_021D2AF4: .word 0x0221A404 -_021D2AF8: .word 0x00001A54 -_021D2AFC: .word 0x000019E8 -_021D2B00: .word 0x000019EC - thumb_func_end ov4_021D2A38 - - thumb_func_start ov4_021D2B04 -ov4_021D2B04: ; 0x021D2B04 - push {r4, lr} - add r4, r0, #0 - blx ov4_022028E0 - add r0, r4, #0 - blx ov4_02204188 - ldr r0, _021D2B20 ; =0x0221A404 - mov r2, #0 - ldr r1, [r0, #4] - ldr r0, _021D2B24 ; =0x00001A54 - str r2, [r1, r0] - pop {r4, pc} - nop -_021D2B20: .word 0x0221A404 -_021D2B24: .word 0x00001A54 - thumb_func_end ov4_021D2B04 - - thumb_func_start ov4_021D2B28 -ov4_021D2B28: ; 0x021D2B28 - push {r4, r5, r6, lr} - bl OS_GetTick - add r4, r0, #0 - ldr r0, _021D2C58 ; =0x0221A404 - add r5, r1, #0 - ldr r0, [r0, #8] - sub r1, r4, r0 - mov r0, #0xfa - lsl r0, r0, #8 - mul r0, r1 - ldr r1, _021D2C5C ; =0x000082EA - bl _u32_div_f - ldr r1, _021D2C58 ; =0x0221A404 - ldr r3, _021D2C60 ; =0x0000411A - ldr r2, [r1, #0] - sub r0, r0, r3 - add r2, r2, r0 - ldr r0, _021D2C64 ; =0xFFFFD8F0 - str r2, [r1, #0] - cmp r2, r0 - bge _021D2B5A - mov r0, #0 - str r0, [r1, #0] -_021D2B5A: - ldr r0, _021D2C58 ; =0x0221A404 - str r4, [r0, #8] - str r5, [r0, #0xc] - blx ov4_02205AE8 - ldr r4, _021D2C58 ; =0x0221A404 - ldr r0, _021D2C60 ; =0x0000411A - ldr r1, [r4, #0] - cmp r1, r0 - blt _021D2B80 - add r6, r0, #0 - add r5, r0, #0 -_021D2B72: - blx ov4_02205AE8 - ldr r0, [r4, #0] - sub r0, r0, r6 - str r0, [r4, #0] - cmp r0, r5 - bge _021D2B72 -_021D2B80: - ldr r0, _021D2C58 ; =0x0221A404 - ldr r2, [r0, #4] - mov r0, #0x6a - lsl r0, r0, #6 - ldr r1, [r2, r0] - cmp r1, #0 - beq _021D2BD4 - sub r0, r0, #4 - ldr r0, [r2, r0] - cmp r0, #3 - bhi _021D2BC8 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021D2BA2: ; jump table - .short _021D2BAA - _021D2BA2 - 2 ; case 0 - .short _021D2BB2 - _021D2BA2 - 2 ; case 1 - .short _021D2BBA - _021D2BA2 - 2 ; case 2 - .short _021D2BC2 - _021D2BA2 - 2 ; case 3 -_021D2BAA: - mov r0, #3 - bl PM_SetAmpGain - b _021D2BC8 -_021D2BB2: - mov r0, #2 - bl PM_SetAmpGain - b _021D2BC8 -_021D2BBA: - mov r0, #1 - bl PM_SetAmpGain - b _021D2BC8 -_021D2BC2: - mov r0, #0 - bl PM_SetAmpGain -_021D2BC8: - ldr r0, _021D2C58 ; =0x0221A404 - mov r2, #0 - ldr r1, [r0, #4] - mov r0, #0x6a - lsl r0, r0, #6 - str r2, [r1, r0] -_021D2BD4: - ldr r3, _021D2C58 ; =0x0221A404 - ldr r2, _021D2C68 ; =0x000019E8 - ldr r0, [r3, #4] - ldr r1, [r0, r2] - cmp r1, #3 - beq _021D2C54 - add r1, r2, #4 - ldr r1, [r0, r1] - cmp r1, #0 - beq _021D2BF0 - cmp r1, #1 - beq _021D2C34 - cmp r1, #2 - pop {r4, r5, r6, pc} -_021D2BF0: - bl ov4_021D1E30 - cmp r0, #0 - bne _021D2C16 - mov r0, #1 - bl ov4_021D2974 - cmp r0, #0 - beq _021D2C54 - ldr r1, _021D2C58 ; =0x0221A404 - ldr r0, _021D2C6C ; =0x000019EC - ldr r2, [r1, #4] - mov r3, #1 - str r3, [r2, r0] - ldr r1, [r1, #4] - mov r2, #0x3c - add r0, #0x6e - strh r2, [r1, r0] - pop {r4, r5, r6, pc} -_021D2C16: - bl ov4_021D1E30 - cmp r0, #1 - bne _021D2C54 - mov r0, #0 - bl ov4_021D29C8 - cmp r0, #0 - beq _021D2C54 - ldr r0, _021D2C58 ; =0x0221A404 - mov r2, #2 - ldr r1, [r0, #4] - ldr r0, _021D2C6C ; =0x000019EC - str r2, [r1, r0] - pop {r4, r5, r6, pc} -_021D2C34: - add r1, r2, #0 - add r1, #0x72 - ldrh r1, [r0, r1] - sub r4, r1, #1 - add r1, r2, #0 - add r1, #0x72 - strh r4, [r0, r1] - add r0, r2, #0 - ldr r3, [r3, #4] - add r0, #0x72 - ldrh r0, [r3, r0] - cmp r0, #0 - bne _021D2C54 - mov r1, #0 - add r0, r2, #4 - str r1, [r3, r0] -_021D2C54: - pop {r4, r5, r6, pc} - nop -_021D2C58: .word 0x0221A404 -_021D2C5C: .word 0x000082EA -_021D2C60: .word 0x0000411A -_021D2C64: .word 0xFFFFD8F0 -_021D2C68: .word 0x000019E8 -_021D2C6C: .word 0x000019EC - thumb_func_end ov4_021D2B28 - - thumb_func_start ov4_021D2C70 -ov4_021D2C70: ; 0x021D2C70 - push {r3, lr} - ldr r3, _021D2C94 ; =0x0221A404 - ldr r3, [r3, #4] - cmp r3, #0 - bne _021D2C7E - mov r0, #0 - pop {r3, pc} -_021D2C7E: - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - blx ov4_02205B2C - cmp r0, #0 - beq _021D2C8E - mov r0, #1 - pop {r3, pc} -_021D2C8E: - mov r0, #0 - pop {r3, pc} - nop -_021D2C94: .word 0x0221A404 - thumb_func_end ov4_021D2C70 - - thumb_func_start ov4_021D2C98 -ov4_021D2C98: ; 0x021D2C98 - push {r4, r5, r6, lr} - add r4, r2, #0 - add r4, #0x20 - add r5, r0, #0 - add r6, r1, #0 - add r0, r3, #0 - add r1, r4, #0 - bl sub_02018144 - str r0, [r5, #0] - mov r1, #0 - add r2, r4, #0 - bl MI_CpuFill8 - ldr r1, [r5, #0] - mov r0, #0x1f - add r1, #0x1f - bic r1, r0 - str r1, [r6, #0] - pop {r4, r5, r6, pc} - thumb_func_end ov4_021D2C98 - - thumb_func_start ov4_021D2CC0 -ov4_021D2CC0: ; 0x021D2CC0 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x38 - add r6, r1, #0 - ldr r1, _021D2E50 ; =0x0221587C - add r4, r2, #0 - ldrb r2, [r1] - add r5, r0, #0 - add r0, sp, #0x10 - strb r2, [r0, #4] - ldrb r2, [r1, #1] - ldrb r1, [r1, #2] - strb r2, [r0, #5] - strb r1, [r0, #6] - ldr r0, _021D2E54 ; =0x0221A404 - ldr r0, [r0, #4] - cmp r0, #0 - bne _021D2D2C - mov r0, #0 - str r0, [sp, #0x10] - ldr r1, _021D2E58 ; =0x0221A408 - ldr r2, _021D2E5C ; =0x00001AB0 - add r0, sp, #0x10 - add r3, r5, #0 - bl ov4_021D2C98 - ldr r0, _021D2E54 ; =0x0221A404 - mov r2, #0x22 - ldr r3, [sp, #0x10] - ldr r1, [r0, #4] - lsl r2, r2, #6 - str r3, [r1, r2] - ldr r1, [r0, #4] - add r0, r2, #0 - add r0, #8 - add r2, r2, #4 - add r0, r1, r0 - add r1, r1, r2 - mov r2, #0x8f - lsl r2, r2, #6 - mul r2, r4 - add r2, #0x20 - add r3, r5, #0 - bl ov4_021D2C98 - ldr r1, _021D2E54 ; =0x0221A404 - ldr r0, _021D2E60 ; =0x000019F4 - ldr r2, [r1, #4] - str r5, [r2, r0] - ldr r1, [r1, #4] - mov r2, #0 - sub r0, #0x68 - str r2, [r1, r0] - bl ov4_021D2808 -_021D2D2C: - ldr r3, _021D2E54 ; =0x0221A404 - mov r5, #0x22 - ldr r0, [r3, #4] - ldr r2, _021D2E64 ; =0x00001A5C - mov r1, #3 - str r1, [r0, r2] - ldr r1, [r3, #4] - add r0, r2, #4 - str r1, [r1, r0] - add r0, r2, #0 - ldr r1, [r3, #4] - lsl r5, r5, #6 - add r0, #8 - str r5, [r1, r0] - mov r5, #0x41 - add r0, r2, #0 - ldr r1, [r3, #4] - lsl r5, r5, #6 - add r0, #0xc - str r5, [r1, r0] - add r0, r2, #0 - ldr r5, [r3, #4] - mov r1, #1 - add r0, #0x10 - str r1, [r5, r0] - add r0, r2, #0 - ldr r5, [r3, #4] - mov r7, #0 - add r0, #0x14 - str r7, [r5, r0] - add r0, r2, #0 - ldr r5, [r3, #4] - add r0, #0x18 - str r7, [r5, r0] - sub r0, r2, #3 - ldr r5, [r3, #4] - sub r2, #0x64 - strb r1, [r5, r0] - ldr r0, [r3, #4] - add r0, r0, r2 - add r2, sp, #0x14 - bl NNS_SndStrmAllocChannel - ldr r0, _021D2E54 ; =0x0221A404 - ldr r1, [r0, #4] - ldr r0, _021D2E68 ; =0x000019F8 - add r0, r1, r0 - add r1, r7, #0 - bl NNS_SndStrmSetVolume - ldr r0, _021D2E54 ; =0x0221A404 - ldr r3, _021D2E6C ; =0x0000088C - ldr r2, [r0, #4] - mov r0, #0x41 - str r0, [sp] - mov r0, #2 - str r0, [sp, #4] - ldr r0, _021D2E70 ; =ov4_021D28B4 - mov r1, #1 - str r0, [sp, #8] - ldr r0, _021D2E68 ; =0x000019F8 - str r2, [sp, #0xc] - add r0, r2, r0 - add r2, r2, r3 - sub r3, #0xc - bl NNS_SndStrmSetup - ldr r1, _021D2E54 ; =0x0221A404 - ldr r0, _021D2E74 ; =0x000019EC - ldr r2, [r1, #4] - add r3, r7, #0 - str r3, [r2, r0] - ldr r1, [r1, #4] - add r0, #0x68 - str r3, [r1, r0] - bl sub_0203895C - bl sub_0203272C - cmp r0, #0 - bne _021D2DD4 - mov r0, #1 - str r0, [sp, #0x20] - b _021D2DD8 -_021D2DD4: - mov r0, #3 - str r0, [sp, #0x20] -_021D2DD8: - ldr r1, _021D2E54 ; =0x0221A404 - ldr r3, [sp, #0x20] - ldr r2, [r1, #4] - ldr r0, _021D2E78 ; =0x000019E8 - str r3, [r2, r0] - ldr r1, [r1, #4] - sub r0, #0x58 - add r0, r1, r0 - str r0, [sp, #0x18] - str r4, [sp, #0x1c] - blx ov4_021D9968 - add r1, sp, #0x10 - strb r0, [r1, #0x14] - mov r0, #0 - ldrb r1, [r1, #0x14] - mvn r0, r0 - cmp r1, r0 - bne _021D2E02 - bl GF_AssertFail -_021D2E02: - ldr r0, _021D2E54 ; =0x0221A404 - ldr r1, _021D2E78 ; =0x000019E8 - ldr r0, [r0, #4] - ldr r1, [r0, r1] - cmp r1, #3 - bne _021D2E14 - ldr r1, _021D2E7C ; =ov4_021D2A10 - str r1, [sp, #0x30] - b _021D2E18 -_021D2E14: - ldr r1, _021D2E80 ; =ov4_021D2A38 - str r1, [sp, #0x30] -_021D2E18: - mov r1, #0 - str r1, [sp, #0x34] - ldr r1, _021D2E84 ; =0x00000884 - ldr r0, [r0, r1] - str r0, [sp, #0x28] - mov r0, #0x8f - lsl r0, r0, #6 - mul r0, r4 - add r0, #0x20 - str r0, [sp, #0x2c] - add r0, sp, #0x18 - blx ov4_02205988 - ldr r0, _021D2E54 ; =0x0221A404 - mov r2, #0 - ldr r1, [r0, #4] - ldr r0, _021D2E88 ; =0x000019F0 - str r2, [r1, r0] - add r0, r6, #0 - blx ov4_02202E0C - bl ov4_021D2E8C - mov r0, #1 - blx ov4_02202EB0 - add sp, #0x38 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021D2E50: .word 0x0221587C -_021D2E54: .word 0x0221A404 -_021D2E58: .word 0x0221A408 -_021D2E5C: .word 0x00001AB0 -_021D2E60: .word 0x000019F4 -_021D2E64: .word 0x00001A5C -_021D2E68: .word 0x000019F8 -_021D2E6C: .word 0x0000088C -_021D2E70: .word ov4_021D28B4 -_021D2E74: .word 0x000019EC -_021D2E78: .word 0x000019E8 -_021D2E7C: .word ov4_021D2A10 -_021D2E80: .word ov4_021D2A38 -_021D2E84: .word 0x00000884 -_021D2E88: .word 0x000019F0 - thumb_func_end ov4_021D2CC0 - - thumb_func_start ov4_021D2E8C -ov4_021D2E8C: ; 0x021D2E8C - ldr r0, _021D2E98 ; =0x0221A404 - ldr r3, _021D2E9C ; =NNS_SndStrmStart - ldr r1, [r0, #4] - ldr r0, _021D2EA0 ; =0x000019F8 - add r0, r1, r0 - bx r3 - ; .align 2, 0 -_021D2E98: .word 0x0221A404 -_021D2E9C: .word NNS_SndStrmStart -_021D2EA0: .word 0x000019F8 - thumb_func_end ov4_021D2E8C - - thumb_func_start ov4_021D2EA4 -ov4_021D2EA4: ; 0x021D2EA4 - push {r3, lr} - ldr r0, _021D2EEC ; =0x0221A404 - ldr r1, _021D2EF0 ; =0x00001A54 - ldr r2, [r0, #4] - ldr r0, [r2, r1] - cmp r0, #0 - beq _021D2EBA - sub r1, #0x68 - ldr r1, [r2, r1] - cmp r1, #0 - bne _021D2EC0 -_021D2EBA: - bl ov4_021D1F18 - pop {r3, pc} -_021D2EC0: - cmp r1, #1 - bne _021D2ED4 - mov r1, #2 - blx ov4_022042F4 - cmp r0, #0 - beq _021D2ED4 - bl ov4_021D1F18 - pop {r3, pc} -_021D2ED4: - ldr r0, _021D2EEC ; =0x0221A404 - ldr r1, [r0, #4] - ldr r0, _021D2EF0 ; =0x00001A54 - ldr r0, [r1, r0] - mov r1, #1 - blx ov4_022042F4 - cmp r0, #0 - beq _021D2EEA - bl ov4_021D1F18 -_021D2EEA: - pop {r3, pc} - ; .align 2, 0 -_021D2EEC: .word 0x0221A404 -_021D2EF0: .word 0x00001A54 - thumb_func_end ov4_021D2EA4 - - thumb_func_start ov4_021D2EF4 -ov4_021D2EF4: ; 0x021D2EF4 - ldr r1, _021D2F00 ; =0x0221A404 - ldr r2, [r1, #4] - ldr r1, _021D2F04 ; =0x0000198C - str r0, [r2, r1] - bx lr - nop -_021D2F00: .word 0x0221A404 -_021D2F04: .word 0x0000198C - thumb_func_end ov4_021D2EF4 - - thumb_func_start ov4_021D2F08 -ov4_021D2F08: ; 0x021D2F08 - push {r4, lr} - ldr r0, _021D2F68 ; =0x0221A404 - ldr r1, [r0, #4] - cmp r1, #0 - beq _021D2F64 - ldr r0, _021D2F6C ; =0x0000198C - ldr r4, [r1, r0] - bl MIC_StopAutoSampling - ldr r0, _021D2F68 ; =0x0221A404 - ldr r1, [r0, #4] - ldr r0, _021D2F70 ; =0x000019F8 - add r0, r1, r0 - bl NNS_SndStrmStop - ldr r0, _021D2F68 ; =0x0221A404 - ldr r1, [r0, #4] - ldr r0, _021D2F70 ; =0x000019F8 - add r0, r1, r0 - bl NNS_SndStrmFreeChannel - blx ov4_02205AC0 - ldr r0, _021D2F68 ; =0x0221A404 - ldr r1, _021D2F74 ; =0x00000888 - ldr r2, [r0, #4] - ldr r0, _021D2F78 ; =0x000019F4 - ldr r1, [r2, r1] - ldr r0, [r2, r0] - bl sub_02018238 - ldr r0, _021D2F68 ; =0x0221A404 - mov r1, #0x22 - ldr r2, [r0, #4] - ldr r0, _021D2F78 ; =0x000019F4 - lsl r1, r1, #6 - ldr r0, [r2, r0] - ldr r1, [r2, r1] - bl sub_02018238 - mov r1, #0 - ldr r0, _021D2F68 ; =0x0221A404 - cmp r4, #0 - str r1, [r0, #4] - beq _021D2F64 - blx r4 -_021D2F64: - pop {r4, pc} - nop -_021D2F68: .word 0x0221A404 -_021D2F6C: .word 0x0000198C -_021D2F70: .word 0x000019F8 -_021D2F74: .word 0x00000888 -_021D2F78: .word 0x000019F4 - thumb_func_end ov4_021D2F08 - - thumb_func_start ov4_021D2F7C -ov4_021D2F7C: ; 0x021D2F7C - push {r3, lr} - sub sp, #0x10 - ldr r0, _021D2FA0 ; =0x0221A404 - ldr r0, [r0, #4] - cmp r0, #0 - beq _021D2F9A - add r0, sp, #0 - blx ov4_022052BC - ldr r0, [sp, #4] - cmp r0, #2 - ble _021D2F9A - ldr r0, [sp] - add sp, #0x10 - pop {r3, pc} -_021D2F9A: - mov r0, #0 - add sp, #0x10 - pop {r3, pc} - ; .align 2, 0 -_021D2FA0: .word 0x0221A404 - thumb_func_end ov4_021D2F7C - - thumb_func_start ov4_021D2FA4 -ov4_021D2FA4: ; 0x021D2FA4 - ldr r0, _021D2FB0 ; =0x0221A404 - mov r2, #1 - ldr r1, [r0, #4] - ldr r0, _021D2FB4 ; =0x000019F0 - str r2, [r1, r0] - bx lr - ; .align 2, 0 -_021D2FB0: .word 0x0221A404 -_021D2FB4: .word 0x000019F0 - thumb_func_end ov4_021D2FA4 - - thumb_func_start ov4_021D2FB8 -ov4_021D2FB8: ; 0x021D2FB8 - ldr r0, _021D2FC4 ; =0x0221A404 - mov r2, #0 - ldr r1, [r0, #4] - ldr r0, _021D2FC8 ; =0x000019F0 - str r2, [r1, r0] - bx lr - ; .align 2, 0 -_021D2FC4: .word 0x0221A404 -_021D2FC8: .word 0x000019F0 - thumb_func_end ov4_021D2FB8 - - thumb_func_start ov4_021D2FCC -ov4_021D2FCC: ; 0x021D2FCC - push {r3, r4, r5, r6, r7, lr} - add r6, r0, #0 - ldr r0, _021D302C ; =0x0221A404 - add r7, r1, #0 - ldr r1, [r0, #4] - cmp r1, #0 - beq _021D2FE2 - ldr r0, _021D3030 ; =0x000019E8 - ldr r0, [r1, r0] - cmp r0, #3 - beq _021D2FE6 -_021D2FE2: - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_021D2FE6: - mov r4, #0 - add r5, r4, #0 -_021D2FEA: - cmp r4, r7 - beq _021D3020 - mov r0, #1 - lsl r0, r4 - tst r0, r6 - beq _021D3020 - ldr r0, _021D302C ; =0x0221A404 - ldr r0, [r0, #4] - add r1, r0, r5 - ldr r0, _021D3034 ; =0x000019D8 - ldr r0, [r1, r0] - cmp r0, #1 - beq _021D3020 - lsl r0, r4, #0x18 - lsr r0, r0, #0x18 - blx ov4_022043F4 - cmp r0, #0 - beq _021D3014 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_021D3014: - ldr r0, _021D302C ; =0x0221A404 - mov r1, #1 - ldr r0, [r0, #4] - add r2, r0, r5 - ldr r0, _021D3034 ; =0x000019D8 - str r1, [r2, r0] -_021D3020: - add r4, r4, #1 - add r5, r5, #4 - cmp r4, #4 - blt _021D2FEA - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021D302C: .word 0x0221A404 -_021D3030: .word 0x000019E8 -_021D3034: .word 0x000019D8 - thumb_func_end ov4_021D2FCC - - .rodata - - - .global Unk_ov4_0221587C -Unk_ov4_0221587C: ; 0x0221587C - .incbin "incbin/overlay4_rodata.bin", 0x14, 0x4 - - - - .bss - - - .global Unk_ov4_0221A404 -Unk_ov4_0221A404: ; 0x0221A404 - .space 0x4 - - .global Unk_ov4_0221A408 -Unk_ov4_0221A408: ; 0x0221A408 - .space 0x4 - - .global Unk_ov4_0221A40C -Unk_ov4_0221A40C: ; 0x0221A40C - .space 0x8 - diff --git a/asm/overlay004/ov4_021D78C8.inc b/asm/overlay004/ov4_021D78C8.inc index 6f9ab360af..163297e991 100644 --- a/asm/overlay004/ov4_021D78C8.inc +++ b/asm/overlay004/ov4_021D78C8.inc @@ -8,12 +8,12 @@ .public ov4_021D7724 .public ov4_021D7780 .public ov4_021D77C4 -.public ov4_021D78C8 -.public ov4_021D797C +.public DWC_InitInetEx +.public DWC_ConnectInetAsync .public ov4_021D7A30 -.public ov4_021D7AE4 -.public ov4_021D7BFC -.public ov4_021D7DB0 +.public DWC_ProcessInet +.public DWC_GetInetStatus +.public DWC_CleanupInet .public ov4_021D7E80 .public ov4_021E5C34 .public ov4_021E5DDC diff --git a/asm/overlay004/ov4_021D78C8.s b/asm/overlay004/ov4_021D78C8.s index 00eea6d3a2..5f3c89582b 100644 --- a/asm/overlay004/ov4_021D78C8.s +++ b/asm/overlay004/ov4_021D78C8.s @@ -6,8 +6,8 @@ .text - arm_func_start ov4_021D78C8 -ov4_021D78C8: ; 0x021D78C8 + arm_func_start DWC_InitInetEx +DWC_InitInetEx: ; 0x021D78C8 stmfd sp!, {r4, r5, r6, lr} ldr r2, _021D7928 ; =0x0221A4DC mov r4, r0 @@ -34,10 +34,10 @@ ov4_021D78C8: ; 0x021D78C8 ldmia sp!, {r4, r5, r6, pc} ; .align 2, 0 _021D7928: .word 0x0221A4DC - arm_func_end ov4_021D78C8 + arm_func_end DWC_InitInetEx - arm_func_start ov4_021D792C -ov4_021D792C: ; 0x021D792C + arm_func_start DWC_SetAuthServer +DWC_SetAuthServer: ; 0x021D792C stmfd sp!, {r3, lr} cmp r0, #0 beq _021D794C @@ -62,10 +62,10 @@ _021D7964: _021D7970: .word 0x022173B8 _021D7974: .word 0x022173E0 _021D7978: .word 0x02217404 - arm_func_end ov4_021D792C + arm_func_end DWC_SetAuthServer - arm_func_start ov4_021D797C -ov4_021D797C: ; 0x021D797C + arm_func_start DWC_ConnectInetAsync +DWC_ConnectInetAsync: ; 0x021D797C stmdb sp!, {lr} sub sp, sp, #0xc ldr r0, _021D7A20 ; =0x0221A4DC @@ -113,7 +113,7 @@ _021D7A20: .word 0x0221A4DC _021D7A24: .word ov4_021D7780 _021D7A28: .word ov4_021D77C4 _021D7A2C: .word 0xFFFF3BE9 - arm_func_end ov4_021D797C + arm_func_end DWC_ConnectInetAsync arm_func_start ov4_021D7A30 ov4_021D7A30: ; 0x021D7A30 @@ -122,13 +122,13 @@ ov4_021D7A30: ; 0x021D7A30 mov r6, r1 mov r5, r2 mov r4, r3 - bl ov4_021D797C + bl DWC_ConnectInetAsync ldr r0, _021D7A88 ; =0x0221A4DC ldr r1, [r0, #4] cmp r1, #0 movne r0, #1 strneb r0, [r1, #0xc] - bl ov4_021D7BFC + bl DWC_GetInetStatus cmp r0, #2 ldmneia sp!, {r3, r4, r5, r6, r7, pc} ldr ip, [sp, #0x18] @@ -143,8 +143,8 @@ ov4_021D7A30: ; 0x021D7A30 _021D7A88: .word 0x0221A4DC arm_func_end ov4_021D7A30 - arm_func_start ov4_021D7A8C -ov4_021D7A8C: ; 0x021D7A8C + arm_func_start DWC_CheckInet +DWC_CheckInet: ; 0x021D7A8C stmfd sp!, {r3, lr} ldr r0, _021D7AE0 ; =0x0221A4DC ldr r1, [r0, #4] @@ -156,7 +156,7 @@ ov4_021D7A8C: ; 0x021D7A8C beq _021D7AD8 mov r0, #3 strh r0, [r1, #4] - bl ov4_021D7BFC + bl DWC_GetInetStatus ldr r0, _021D7AE0 ; =0x0221A4DC ldr r0, [r0, #4] ldrb r0, [r0, #0xc] @@ -169,10 +169,10 @@ _021D7AD8: ldmia sp!, {r3, pc} ; .align 2, 0 _021D7AE0: .word 0x0221A4DC - arm_func_end ov4_021D7A8C + arm_func_end DWC_CheckInet - arm_func_start ov4_021D7AE4 -ov4_021D7AE4: ; 0x021D7AE4 + arm_func_start DWC_ProcessInet +DWC_ProcessInet: ; 0x021D7AE4 stmfd sp!, {r3, lr} ldr r0, _021D7BF8 ; =0x0221A4DC ldr r1, [r0, #4] @@ -251,10 +251,10 @@ _021D7BB8: ldmia sp!, {r3, pc} ; .align 2, 0 _021D7BF8: .word 0x0221A4DC - arm_func_end ov4_021D7AE4 + arm_func_end DWC_ProcessInet - arm_func_start ov4_021D7BFC -ov4_021D7BFC: ; 0x021D7BFC + arm_func_start DWC_GetInetStatus +DWC_GetInetStatus: ; 0x021D7BFC stmfd sp!, {r3, r4, r5, r6, r7, lr} ldr r0, _021D7DA8 ; =0x0221A4DC ldr r1, [r0, #4] @@ -278,7 +278,7 @@ _021D7C40: mov r0, #2 ldmia sp!, {r3, r4, r5, r6, r7, pc} _021D7C48: - bl ov4_021D7AE4 + bl DWC_ProcessInet ldr r1, _021D7DA8 ; =0x0221A4DC mov r0, #5 ldr r1, [r1, #0] @@ -337,13 +337,13 @@ _021D7CFC: ldr r1, _021D7DA8 ; =0x0221A4DC mov r6, r0 str r4, [r1, #0] - bl ov4_021D7DB0 + bl DWC_CleanupInet mov r2, r6, lsl #0x10 mov r3, r2, lsr #0x10 mov r0, r5 mov r1, r7 mov r2, #1 - bl ov4_021D78C8 + bl DWC_InitInetEx ldr r0, _021D7DA8 ; =0x0221A4DC ldr r0, [r0, #4] add r0, r0, #0x14 @@ -375,10 +375,10 @@ _021D7DA0: ; .align 2, 0 _021D7DA8: .word 0x0221A4DC _021D7DAC: .word 0xFFFF3BE9 - arm_func_end ov4_021D7BFC + arm_func_end DWC_GetInetStatus - arm_func_start ov4_021D7DB0 -ov4_021D7DB0: ; 0x021D7DB0 + arm_func_start DWC_CleanupInet +DWC_CleanupInet: ; 0x021D7DB0 stmfd sp!, {r4, lr} ldr r0, _021D7E0C ; =0x0221A4DC ldr r1, [r0, #4] @@ -406,7 +406,7 @@ _021D7DFC: ldmia sp!, {r4, pc} ; .align 2, 0 _021D7E0C: .word 0x0221A4DC - arm_func_end ov4_021D7DB0 + arm_func_end DWC_CleanupInet arm_func_start ov4_021D7E10 ov4_021D7E10: ; 0x021D7E10 @@ -477,7 +477,7 @@ ov4_021D7EB8: ; 0x021D7EB8 bl MI_CpuFill8 mov r0, #0xff str r0, [r4, #4] - bl ov4_021D7BFC + bl DWC_GetInetStatus cmp r0, #4 addne sp, sp, #0xc movne r0, #0 @@ -570,7 +570,7 @@ _021D800C: arm_func_start DWC_UpdateConnection DWC_UpdateConnection: ; 0x021D8018 stmfd sp!, {r3, lr} - bl ov4_021D7AE4 + bl DWC_ProcessInet bl ov4_021D7E80 cmp r0, #0 beq _021D8060 diff --git a/asm/overlay004/ov4_021D8C08.inc b/asm/overlay004/ov4_021D8C08.inc index 9b8a12d202..48e3e4a542 100644 --- a/asm/overlay004/ov4_021D8C08.inc +++ b/asm/overlay004/ov4_021D8C08.inc @@ -10,13 +10,13 @@ .public DWC_ClearError .public ov4_021D7708 .public ov4_021D7724 -.public ov4_021D7BFC +.public DWC_GetInetStatus .public DWC_UpdateConnection .public ov4_021D89C0 .public ov4_021D8ABC .public ov4_021D8BDC .public ov4_021D97F4 -.public ov4_021D9968 +.public DWC_GetMyAID .public ov4_021D9984 .public ov4_021D9B24 .public ov4_021D9B98 diff --git a/asm/overlay004/ov4_021D8C08.s b/asm/overlay004/ov4_021D8C08.s index f91323fd59..5991116e4e 100644 --- a/asm/overlay004/ov4_021D8C08.s +++ b/asm/overlay004/ov4_021D8C08.s @@ -6,8 +6,8 @@ .text - arm_func_start ov4_021D8C08 -ov4_021D8C08: ; 0x021D8C08 + arm_func_start DWC_InitFriendsMatch +DWC_InitFriendsMatch: ; 0x021D8C08 stmfd sp!, {r4, r5, r6, lr} sub sp, sp, #0x10 ldr ip, _021D8E6C ; =0x0221A504 @@ -172,10 +172,10 @@ _021D8E7C: .word ov4_021DA680 _021D8E80: .word 0x0221B1B0 _021D8E84: .word 0x0221B2B0 _021D8E88: .word ov4_021D9F4C - arm_func_end ov4_021D8C08 + arm_func_end DWC_InitFriendsMatch - arm_func_start ov4_021D8E8C -ov4_021D8E8C: ; 0x021D8E8C + arm_func_start DWC_ShutdownFriendsMatch +DWC_ShutdownFriendsMatch: ; 0x021D8E8C stmfd sp!, {r3, lr} ldr r0, _021D8FF0 ; =0x0221A504 ldr r0, [r0, #0] @@ -271,10 +271,10 @@ _021D8FE0: ldmia sp!, {r3, pc} ; .align 2, 0 _021D8FF0: .word 0x0221A504 - arm_func_end ov4_021D8E8C + arm_func_end DWC_ShutdownFriendsMatch - arm_func_start ov4_021D8FF4 -ov4_021D8FF4: ; 0x021D8FF4 + arm_func_start DWC_ProcessFriendsMatch +DWC_ProcessFriendsMatch: ; 0x021D8FF4 stmfd sp!, {r3, lr} bl DWC_UpdateConnection cmp r0, #0 @@ -437,10 +437,10 @@ _021D9234: .word ov4_021DB768 _021D9238: .word ov4_021DB810 _021D923C: .word 0xFFFFB172 _021D9240: .word 0xFFFFB17B - arm_func_end ov4_021D8FF4 + arm_func_end DWC_ProcessFriendsMatch - arm_func_start ov4_021D9244 -ov4_021D9244: ; 0x021D9244 + arm_func_start DWC_LoginAsync +DWC_LoginAsync: ; 0x021D9244 stmfd sp!, {r4, r5, r6, lr} movs r4, r0 mov r6, r2 @@ -493,7 +493,7 @@ _021D92F0: ldr r0, [r0, #0] add r0, r0, r5, lsl #1 strh r1, [r0, #0x2e] - bl ov4_021D7BFC + bl DWC_GetInetStatus cmp r0, #4 beq _021D9324 ldr r1, _021D9348 ; =0xFFFF1596 @@ -513,10 +513,10 @@ _021D9324: ; .align 2, 0 _021D9344: .word 0x0221A504 _021D9348: .word 0xFFFF1596 - arm_func_end ov4_021D9244 + arm_func_end DWC_LoginAsync - arm_func_start ov4_021D934C -ov4_021D934C: ; 0x021D934C + arm_func_start DWC_UpdateServersAsync +DWC_UpdateServersAsync: ; 0x021D934C stmfd sp!, {r4, r5, r6, lr} sub sp, sp, #0x10 mov r6, r1 @@ -562,10 +562,10 @@ _021D9394: ; .align 2, 0 _021D93EC: .word 0x0221A504 _021D93F0: .word ov4_021D9FAC - arm_func_end ov4_021D934C + arm_func_end DWC_UpdateServersAsync - arm_func_start ov4_021D93F4 -ov4_021D93F4: ; 0x021D93F4 + arm_func_start DWC_ConnectToAnybodyAsync +DWC_ConnectToAnybodyAsync: ; 0x021D93F4 stmfd sp!, {r3, r4, r5, r6, r7, lr} sub sp, sp, #8 mov r7, r0 @@ -609,10 +609,10 @@ _021D9438: ; .align 2, 0 _021D948C: .word 0x0221A504 _021D9490: .word ov4_021D9FF4 - arm_func_end ov4_021D93F4 + arm_func_end DWC_ConnectToAnybodyAsync - arm_func_start ov4_021D9494 -ov4_021D9494: ; 0x021D9494 + arm_func_start DWC_SetupGameServer +DWC_SetupGameServer: ; 0x021D9494 stmfd sp!, {r3, r4, r5, r6, r7, lr} mov r7, r0 mov r6, r1 @@ -654,10 +654,10 @@ _021D94D0: ; .align 2, 0 _021D9524: .word 0x0221A504 _021D9528: .word ov4_021D9FF4 - arm_func_end ov4_021D9494 + arm_func_end DWC_SetupGameServer - arm_func_start ov4_021D952C -ov4_021D952C: ; 0x021D952C + arm_func_start DWC_ConnectToGameServerAsync +DWC_ConnectToGameServerAsync: ; 0x021D952C stmfd sp!, {r3, r4, r5, r6, r7, lr} sub sp, sp, #0x220 mvn ip, #0 @@ -791,10 +791,10 @@ _021D9714: .word 0x0221746C _021D9718: .word 0x02217470 _021D971C: .word ov4_021D9FF4 _021D9720: .word 0x02217474 - arm_func_end ov4_021D952C + arm_func_end DWC_ConnectToGameServerAsync - arm_func_start ov4_021D9724 -ov4_021D9724: ; 0x021D9724 + arm_func_start DWC_SetConnectionClosedCallback +DWC_SetConnectionClosedCallback: ; 0x021D9724 ldr r2, _021D974C ; =0x0221A504 ldr r3, [r2, #0] cmp r3, #0 @@ -807,10 +807,10 @@ ov4_021D9724: ; 0x021D9724 bx lr ; .align 2, 0 _021D974C: .word 0x0221A504 - arm_func_end ov4_021D9724 + arm_func_end DWC_SetConnectionClosedCallback - arm_func_start ov4_021D9750 -ov4_021D9750: ; 0x021D9750 + arm_func_start DWC_CloseAllConnectionsHard +DWC_CloseAllConnectionsHard: ; 0x021D9750 stmfd sp!, {r3, lr} ldr r0, _021D97EC ; =0x0221A504 ldr r0, [r0, #0] @@ -856,7 +856,7 @@ _021D97C0: ; .align 2, 0 _021D97EC: .word 0x0221A504 _021D97F0: .word 0x02217474 - arm_func_end ov4_021D9750 + arm_func_end DWC_CloseAllConnectionsHard arm_func_start ov4_021D97F4 ov4_021D97F4: ; 0x021D97F4 @@ -891,8 +891,8 @@ _021D9838: _021D9858: .word 0x0221A504 arm_func_end ov4_021D97F4 - arm_func_start ov4_021D985C -ov4_021D985C: ; 0x021D985C + arm_func_start DWC_CloseConnectionHardBitmap +DWC_CloseConnectionHardBitmap: ; 0x021D985C stmfd sp!, {r4, r5, r6, lr} ldr r1, _021D991C ; =0x0221A504 mov r6, r0 @@ -919,7 +919,7 @@ _021D98AC: ldr r0, [r6, #0] tst r0, r4, lsl r5 beq _021D98F8 - bl ov4_021D9968 + bl DWC_GetMyAID cmp r5, r0 bne _021D98D8 mvn r0, r4, lsl r5 @@ -948,10 +948,10 @@ _021D98F8: ldmia sp!, {r4, r5, r6, pc} ; .align 2, 0 _021D991C: .word 0x0221A504 - arm_func_end ov4_021D985C + arm_func_end DWC_CloseConnectionHardBitmap - arm_func_start ov4_021D9920 -ov4_021D9920: ; 0x021D9920 + arm_func_start DWC_GetNumConnectionHost +DWC_GetNumConnectionHost: ; 0x021D9920 stmfd sp!, {r3, lr} ldr r0, _021D9964 ; =0x0221A504 ldr r1, [r0, #0] @@ -972,10 +972,10 @@ _021D9958: ldmia sp!, {r3, pc} ; .align 2, 0 _021D9964: .word 0x0221A504 - arm_func_end ov4_021D9920 + arm_func_end DWC_GetNumConnectionHost - arm_func_start ov4_021D9968 -ov4_021D9968: ; 0x021D9968 + arm_func_start DWC_GetMyAID +DWC_GetMyAID: ; 0x021D9968 ldr r0, _021D9980 ; =0x0221A504 ldr r0, [r0, #0] cmp r0, #0 @@ -984,7 +984,7 @@ ov4_021D9968: ; 0x021D9968 bx lr ; .align 2, 0 _021D9980: .word 0x0221A504 - arm_func_end ov4_021D9968 + arm_func_end DWC_GetMyAID arm_func_start ov4_021D9984 ov4_021D9984: ; 0x021D9984 @@ -1030,8 +1030,8 @@ DWC_GetAIDBitmap: ; 0x021D99D4 _021D9A04: .word 0x0221A504 arm_func_end DWC_GetAIDBitmap - arm_func_start ov4_021D9A08 -ov4_021D9A08: ; 0x021D9A08 + arm_func_start DWC_IsValidAID +DWC_IsValidAID: ; 0x021D9A08 stmfd sp!, {r3, lr} ldr r1, _021D9A3C ; =0x0221A504 ldr r1, [r1, #0] @@ -1047,7 +1047,7 @@ ov4_021D9A08: ; 0x021D9A08 ldmia sp!, {r3, pc} ; .align 2, 0 _021D9A3C: .word 0x0221A504 - arm_func_end ov4_021D9A08 + arm_func_end DWC_IsValidAID arm_func_start ov4_021D9A40 ov4_021D9A40: ; 0x021D9A40 diff --git a/asm/overlay004/ov4_021DB170.s b/asm/overlay004/ov4_021DB170.s index 2b4ba725fc..643e59f90f 100644 --- a/asm/overlay004/ov4_021DB170.s +++ b/asm/overlay004/ov4_021DB170.s @@ -98,8 +98,8 @@ _021DB29C: .word 0x02217488 _021DB2A0: .word 0x0221748C arm_func_end ov4_021DB188 - arm_func_start ov4_021DB2A4 -ov4_021DB2A4: ; 0x021DB2A4 + arm_func_start DWC_GetFriendStatusData +DWC_GetFriendStatusData: ; 0x021DB2A4 stmfd sp!, {r3, lr} mov r3, r1 mov r1, #0 @@ -107,7 +107,7 @@ ov4_021DB2A4: ; 0x021DB2A4 mov r2, r1 bl ov4_021DB2C0 ldmia sp!, {r3, pc} - arm_func_end ov4_021DB2A4 + arm_func_end DWC_GetFriendStatusData arm_func_start ov4_021DB2C0 ov4_021DB2C0: ; 0x021DB2C0 @@ -149,8 +149,8 @@ ov4_021DB2C0: ; 0x021DB2C0 ldmia sp!, {r4, r5, r6, pc} arm_func_end ov4_021DB2C0 - arm_func_start ov4_021DB350 -ov4_021DB350: ; 0x021DB350 + arm_func_start DWC_SetOwnStatusData +DWC_SetOwnStatusData: ; 0x021DB350 stmfd sp!, {r3, r4, r5, lr} sub sp, sp, #0x100 ldr r2, _021DB3D8 ; =0x0221A698 @@ -189,10 +189,10 @@ _021DB388: ldmia sp!, {r3, r4, r5, pc} ; .align 2, 0 _021DB3D8: .word 0x0221A698 - arm_func_end ov4_021DB350 + arm_func_end DWC_SetOwnStatusData - arm_func_start ov4_021DB3DC -ov4_021DB3DC: ; 0x021DB3DC + arm_func_start DWC_SetBuddyFriendCallback +DWC_SetBuddyFriendCallback: ; 0x021DB3DC ldr r2, _021DB404 ; =0x0221A698 ldr r3, [r2, #8] cmp r3, #0 @@ -205,7 +205,7 @@ ov4_021DB3DC: ; 0x021DB3DC bx lr ; .align 2, 0 _021DB404: .word 0x0221A698 - arm_func_end ov4_021DB3DC + arm_func_end DWC_SetBuddyFriendCallback arm_func_start ov4_021DB408 ov4_021DB408: ; 0x021DB408 diff --git a/asm/overlay004/ov4_021DC734.s b/asm/overlay004/ov4_021DC734.s index 7e99a8bab3..94e5785327 100644 --- a/asm/overlay004/ov4_021DC734.s +++ b/asm/overlay004/ov4_021DC734.s @@ -21,8 +21,8 @@ ov4_021DC734: ; 0x021DC734 _021DC758: .word 0x0221A6A8 arm_func_end ov4_021DC734 - arm_func_start ov4_021DC75C -ov4_021DC75C: ; 0x021DC75C + arm_func_start DWC_CancelMatching +DWC_CancelMatching: ; 0x021DC75C stmfd sp!, {r3, lr} bl ov4_021DC77C cmp r0, #0 @@ -31,7 +31,7 @@ ov4_021DC75C: ; 0x021DC75C bl ov4_021E2080 mov r0, #1 ldmia sp!, {r3, pc} - arm_func_end ov4_021DC75C + arm_func_end DWC_CancelMatching arm_func_start ov4_021DC77C ov4_021DC77C: ; 0x021DC77C @@ -58,8 +58,8 @@ _021DC7C0: ldmia sp!, {r3, pc} arm_func_end ov4_021DC77C - arm_func_start ov4_021DC7C8 -ov4_021DC7C8: ; 0x021DC7C8 + arm_func_start DWC_StopSCMatchingAsync +DWC_StopSCMatchingAsync: ; 0x021DC7C8 stmfd sp!, {r4, r5, r6, lr} mov r6, r0 mov r5, r1 @@ -109,10 +109,10 @@ _021DC858: _021DC874: mov r0, #1 ldmia sp!, {r4, r5, r6, pc} - arm_func_end ov4_021DC7C8 + arm_func_end DWC_StopSCMatchingAsync - arm_func_start ov4_021DC87C -ov4_021DC87C: ; 0x021DC87C + arm_func_start DWC_AddMatchKeyString +DWC_AddMatchKeyString: ; 0x021DC87C stmfd sp!, {r4, r5, r6, r7, r8, lr} movs r6, r1 mov r5, r2 @@ -194,10 +194,10 @@ _021DC99C: .word 0x0221A6C9 _021DC9A0: .word 0x0221A6CA _021DC9A4: .word 0xFFFEC77F _021DC9A8: .word 0x0221A6D0 - arm_func_end ov4_021DC87C + arm_func_end DWC_AddMatchKeyString - arm_func_start ov4_021DC9AC -ov4_021DC9AC: ; 0x021DC9AC + arm_func_start DWC_SetMatchingOption +DWC_SetMatchingOption: ; 0x021DC9AC stmfd sp!, {r3, r4, r5, lr} mov r5, r0 mov r4, r1 @@ -287,7 +287,7 @@ _021DCAEC: ldmia sp!, {r3, r4, r5, pc} ; .align 2, 0 _021DCAF4: .word 0x0221A6A8 - arm_func_end ov4_021DC9AC + arm_func_end DWC_SetMatchingOption arm_func_start ov4_021DCAF8 ov4_021DCAF8: ; 0x021DCAF8 diff --git a/asm/overlay004/ov4_021E4A58.inc b/asm/overlay004/ov4_021E4A58.inc index 4f3512f80c..dbb43bb090 100644 --- a/asm/overlay004/ov4_021E4A58.inc +++ b/asm/overlay004/ov4_021E4A58.inc @@ -6,9 +6,9 @@ .public _ull_div .public ov4_021D7708 .public ov4_021D7724 -.public ov4_021D9968 +.public DWC_GetMyAID .public ov4_021D9984 -.public ov4_021D9A08 +.public DWC_IsValidAID .public ov4_021D9B24 .public ov4_021D9B88 .public ov4_021D9C8C diff --git a/asm/overlay004/ov4_021E4A58.s b/asm/overlay004/ov4_021E4A58.s index 24fbb01723..e6d6642cd0 100644 --- a/asm/overlay004/ov4_021E4A58.s +++ b/asm/overlay004/ov4_021E4A58.s @@ -6,14 +6,14 @@ .text - arm_func_start ov4_021E4A58 -ov4_021E4A58: ; 0x021E4A58 + arm_func_start DWC_IsSendableReliable +DWC_IsSendableReliable: ; 0x021E4A58 ldr ip, _021E4A64 ; =ov4_021E4A68 mov r1, #1 bx ip ; .align 2, 0 _021E4A64: .word ov4_021E4A68 - arm_func_end ov4_021E4A58 + arm_func_end DWC_IsSendableReliable arm_func_start ov4_021E4A68 ov4_021E4A68: ; 0x021E4A68 @@ -26,7 +26,7 @@ ov4_021E4A68: ; 0x021E4A68 cmp r5, #1 bne _021E4A98 mov r0, r4 - bl ov4_021D9A08 + bl DWC_IsValidAID cmp r0, #0 beq _021E4AA8 _021E4A98: @@ -144,8 +144,8 @@ _021E4C18: _021E4C24: .word 0x0221AE20 arm_func_end ov4_021E4B08 - arm_func_start ov4_021E4C28 -ov4_021E4C28: ; 0x021E4C28 + arm_func_start DWC_SendReliableBitmap +DWC_SendReliableBitmap: ; 0x021E4C28 stmfd sp!, {r4, r5, r6, r7, r8, sb, sl, lr} mov r7, #1 mov r6, r0 @@ -159,7 +159,7 @@ _021E4C44: moveq sl, r7 tst r6, sl beq _021E4C80 - bl ov4_021D9968 + bl DWC_GetMyAID cmp sb, r0 beq _021E4C80 mov r0, sb @@ -176,7 +176,7 @@ _021E4C80: blo _021E4C44 mov r0, r6 ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - arm_func_end ov4_021E4C28 + arm_func_end DWC_SendReliableBitmap arm_func_start ov4_021E4C98 ov4_021E4C98: ; 0x021E4C98 @@ -189,7 +189,7 @@ ov4_021E4C98: ; 0x021E4C98 movne r0, #0 ldmneia sp!, {r4, r5, r6, pc} mov r0, r5 - bl ov4_021D9A08 + bl DWC_IsValidAID cmp r0, #0 moveq r0, #0 ldmeqia sp!, {r4, r5, r6, pc} @@ -220,8 +220,8 @@ _021E4D1C: _021E4D24: .word 0x0221AE20 arm_func_end ov4_021E4C98 - arm_func_start ov4_021E4D28 -ov4_021E4D28: ; 0x021E4D28 + arm_func_start DWC_SetRecvBuffer +DWC_SetRecvBuffer: ; 0x021E4D28 stmfd sp!, {r3, r4, r5, r6, r7, lr} mov r7, r0 mov r6, r1 @@ -241,10 +241,10 @@ ov4_021E4D28: ; 0x021E4D28 str r1, [r4, #0x10] str r1, [r4, #0x18] ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov4_021E4D28 + arm_func_end DWC_SetRecvBuffer - arm_func_start ov4_021E4D74 -ov4_021E4D74: ; 0x021E4D74 + arm_func_start DWC_SetUserSendCallback +DWC_SetUserSendCallback: ; 0x021E4D74 ldr r1, _021E4D90 ; =0x0221AE20 ldr r1, [r1, #0] cmp r1, #0 @@ -254,10 +254,10 @@ ov4_021E4D74: ; 0x021E4D74 bx lr ; .align 2, 0 _021E4D90: .word 0x0221AE20 - arm_func_end ov4_021E4D74 + arm_func_end DWC_SetUserSendCallback - arm_func_start ov4_021E4D94 -ov4_021E4D94: ; 0x021E4D94 + arm_func_start DWC_SetUserRecvCallback +DWC_SetUserRecvCallback: ; 0x021E4D94 ldr r1, _021E4DB0 ; =0x0221AE20 ldr r1, [r1, #0] cmp r1, #0 @@ -267,10 +267,10 @@ ov4_021E4D94: ; 0x021E4D94 bx lr ; .align 2, 0 _021E4DB0: .word 0x0221AE20 - arm_func_end ov4_021E4D94 + arm_func_end DWC_SetUserRecvCallback - arm_func_start ov4_021E4DB4 -ov4_021E4DB4: ; 0x021E4DB4 + arm_func_start DWC_SetUserRecvTimeoutCallback +DWC_SetUserRecvTimeoutCallback: ; 0x021E4DB4 ldr r1, _021E4DD0 ; =0x0221AE20 ldr r1, [r1, #0] cmp r1, #0 @@ -280,7 +280,7 @@ ov4_021E4DB4: ; 0x021E4DB4 bx lr ; .align 2, 0 _021E4DD0: .word 0x0221AE20 - arm_func_end ov4_021E4DB4 + arm_func_end DWC_SetUserRecvTimeoutCallback arm_func_start ov4_021E4DD4 ov4_021E4DD4: ; 0x021E4DD4 @@ -332,8 +332,8 @@ _021E4E58: bx lr arm_func_end ov4_021E4E40 - arm_func_start ov4_021E4E60 -ov4_021E4E60: ; 0x021E4E60 + arm_func_start DWC_SetRecvTimeoutTime +DWC_SetRecvTimeoutTime: ; 0x021E4E60 stmfd sp!, {r4, lr} ldr r2, _021E4EA8 ; =0x0221AE20 ldr r3, [r2, #0] @@ -354,7 +354,7 @@ ov4_021E4E60: ; 0x021E4E60 ldmia sp!, {r4, pc} ; .align 2, 0 _021E4EA8: .word 0x0221AE20 - arm_func_end ov4_021E4E60 + arm_func_end DWC_SetRecvTimeoutTime arm_func_start ov4_021E4EAC ov4_021E4EAC: ; 0x021E4EAC @@ -437,7 +437,7 @@ _021E4F98: ldr r0, [sp] ldrb sb, [r0, r8] mov r0, sb - bl ov4_021D9A08 + bl DWC_IsValidAID cmp r0, #0 beq _021E502C mov r0, sb @@ -472,7 +472,7 @@ _021E4F98: str r5, [r6, #0x24] str sl, [r6, #0x28] _021E502C: - bl ov4_021D9968 + bl DWC_GetMyAID cmp sb, r0 beq _021E50E0 mov r0, sb diff --git a/asm/overlay004/ov4_02202698.s b/asm/overlay004/ov4_02202698.s index 4161103227..58d0459193 100644 --- a/asm/overlay004/ov4_02202698.s +++ b/asm/overlay004/ov4_02202698.s @@ -86,8 +86,8 @@ ov4_02202794: ; 0x02202794 _022027A4: .word 0x0221B780 arm_func_end ov4_02202794 - arm_func_start ov4_022027A8 -ov4_022027A8: ; 0x022027A8 + arm_func_start VCT_StartStreaming +VCT_StartStreaming: ; 0x022027A8 stmfd sp!, {r3, r4, r5, lr} movs r5, r0 moveq r0, #0 @@ -173,10 +173,10 @@ _022028CC: _022028D4: .word 0x0221B780 _022028D8: .word 0x0221B7AC _022028DC: .word 0x0221B7B8 - arm_func_end ov4_022027A8 + arm_func_end VCT_StartStreaming - arm_func_start ov4_022028E0 -ov4_022028E0: ; 0x022028E0 + arm_func_start VCT_StopStreaming +VCT_StopStreaming: ; 0x022028E0 stmfd sp!, {r3, r4, r5, lr} ldr ip, _02202988 ; =0x0221B7AC mov r5, r0 @@ -226,10 +226,10 @@ _0220295C: _02202988: .word 0x0221B7AC _0220298C: .word 0x0221B7B8 _02202990: .word 0x0221B780 - arm_func_end ov4_022028E0 + arm_func_end VCT_StopStreaming - arm_func_start ov4_02202994 -ov4_02202994: ; 0x02202994 + arm_func_start VCT_SendAudio +VCT_SendAudio: ; 0x02202994 stmfd sp!, {r4, lr} ldr r3, _02202A94 ; =0x0221B780 mov r2, r1 @@ -305,7 +305,7 @@ _02202A94: .word 0x0221B780 _02202A98: .word 0x0221B7AC _02202A9C: .word 0x0221BDC0 _02202AA0: .word 0x5F564354 - arm_func_end ov4_02202994 + arm_func_end VCT_SendAudio arm_func_start ov4_02202AA4 ov4_02202AA4: ; 0x02202AA4 @@ -471,8 +471,8 @@ _02202CE8: .word 0x0221B7B8 _02202CEC: .word 0x00008B4C arm_func_end ov4_02202AA4 - arm_func_start ov4_02202CF0 -ov4_02202CF0: ; 0x02202CF0 + arm_func_start VCT_ReceiveAudio +VCT_ReceiveAudio: ; 0x02202CF0 stmfd sp!, {r3, r4, r5, r6, r7, r8, sb, lr} movs r5, r2 mov r7, r0 @@ -553,10 +553,10 @@ _02202DFC: ; .align 2, 0 _02202E04: .word 0x0221B780 _02202E08: .word 0x0221B974 - arm_func_end ov4_02202CF0 + arm_func_end VCT_ReceiveAudio - arm_func_start ov4_02202E0C -ov4_02202E0C: ; 0x02202E0C + arm_func_start VCT_SetCodec +VCT_SetCodec: ; 0x02202E0C cmp r0, #5 movge r0, #0 bxge lr @@ -588,10 +588,10 @@ _02202E70: .word 0x0221DBD8 _02202E74: .word 0x02215D09 _02202E78: .word 0x02215D08 _02202E7C: .word 0x0221B780 - arm_func_end ov4_02202E0C + arm_func_end VCT_SetCodec - arm_func_start ov4_02202E80 -ov4_02202E80: ; 0x02202E80 + arm_func_start VCT_EnableVAD +VCT_EnableVAD: ; 0x02202E80 stmfd sp!, {r4, lr} ldr r1, _02202EA8 ; =0x0221A0E8 mov r4, r0 @@ -605,16 +605,16 @@ ov4_02202E80: ; 0x02202E80 ; .align 2, 0 _02202EA8: .word 0x0221A0E8 _02202EAC: .word 0x0221B780 - arm_func_end ov4_02202E80 + arm_func_end VCT_EnableVAD - arm_func_start ov4_02202EB0 -ov4_02202EB0: ; 0x02202EB0 + arm_func_start VCT_EnableEchoCancel +VCT_EnableEchoCancel: ; 0x02202EB0 ldr r1, _02202EBC ; =0x0221B780 str r0, [r1, #0x18] bx lr ; .align 2, 0 _02202EBC: .word 0x0221B780 - arm_func_end ov4_02202EB0 + arm_func_end VCT_EnableEchoCancel arm_func_start ov4_02202EC0 ov4_02202EC0: ; 0x02202EC0 diff --git a/asm/overlay004/ov4_02204160.inc b/asm/overlay004/ov4_02204160.inc index cf3391cbca..e927f1dce3 100644 --- a/asm/overlay004/ov4_02204160.inc +++ b/asm/overlay004/ov4_02204160.inc @@ -1,8 +1,8 @@ .public OS_GetTick .public MI_CpuFill8 .public ov4_021E4AE8 -.public ov4_02204160 -.public ov4_02204188 +.public VCT_CreateSession +.public VCT_DeleteSession .public ov4_02204244 .public ov4_02204318 .public ov4_02204700 diff --git a/asm/overlay004/ov4_02204160.s b/asm/overlay004/ov4_02204160.s index 9dd40c3766..bdf34520c2 100644 --- a/asm/overlay004/ov4_02204160.s +++ b/asm/overlay004/ov4_02204160.s @@ -6,8 +6,8 @@ .text - arm_func_start ov4_02204160 -ov4_02204160: ; 0x02204160 + arm_func_start VCT_CreateSession +VCT_CreateSession: ; 0x02204160 stmfd sp!, {r3, lr} ldr r1, _02204184 ; =0x0221DBD8 ldr r1, [r1, #0x10] @@ -19,10 +19,10 @@ ov4_02204160: ; 0x02204160 ldmia sp!, {r3, pc} ; .align 2, 0 _02204184: .word 0x0221DBD8 - arm_func_end ov4_02204160 + arm_func_end VCT_CreateSession - arm_func_start ov4_02204188 -ov4_02204188: ; 0x02204188 + arm_func_start VCT_DeleteSession +VCT_DeleteSession: ; 0x02204188 stmfd sp!, {r3, lr} ldr r2, _02204238 ; =0x0221C6D0 mov ip, #0 @@ -76,7 +76,7 @@ _02204230: _02204238: .word 0x0221C6D0 _0220423C: .word 0x0221DBD8 _02204240: .word 0x0221C70C - arm_func_end ov4_02204188 + arm_func_end VCT_DeleteSession arm_func_start ov4_02204244 ov4_02204244: ; 0x02204244 @@ -130,8 +130,8 @@ _022042E8: _022042F0: .word 0x0221DBD8 arm_func_end ov4_02204244 - arm_func_start ov4_022042F4 -ov4_022042F4: ; 0x022042F4 + arm_func_start VCT_Request +VCT_Request: ; 0x022042F4 stmfd sp!, {r3, lr} ldr r2, _02204314 ; =0x0221DBD8 ldr r2, [r2, #0x10] @@ -142,7 +142,7 @@ ov4_022042F4: ; 0x022042F4 ldmia sp!, {r3, pc} ; .align 2, 0 _02204314: .word 0x0221DBD8 - arm_func_end ov4_022042F4 + arm_func_end VCT_Request arm_func_start ov4_02204318 ov4_02204318: ; 0x02204318 @@ -199,8 +199,8 @@ _022043B0: _022043CC: .word 0x0221DBD8 arm_func_end ov4_02204318 - arm_func_start ov4_022043D0 -ov4_022043D0: ; 0x022043D0 + arm_func_start VCT_Response +VCT_Response: ; 0x022043D0 stmfd sp!, {r3, lr} ldr r2, _022043F0 ; =0x0221DBD8 ldr r2, [r2, #0x10] @@ -211,10 +211,10 @@ ov4_022043D0: ; 0x022043D0 ldmia sp!, {r3, pc} ; .align 2, 0 _022043F0: .word 0x0221DBD8 - arm_func_end ov4_022043D0 + arm_func_end VCT_Response - arm_func_start ov4_022043F4 -ov4_022043F4: ; 0x022043F4 + arm_func_start VCT_AddConferenceClient +VCT_AddConferenceClient: ; 0x022043F4 stmfd sp!, {r4, lr} ldr r2, _022044A4 ; =0x0221DBD8 mov r4, r0 @@ -236,7 +236,7 @@ ov4_022043F4: ; 0x022043F4 movne r0, #0 ldmneia sp!, {r4, pc} mov r0, r4 - bl ov4_02204160 + bl VCT_CreateSession movs r2, r0 mvneq r0, #0 ldmeqia sp!, {r4, pc} @@ -262,7 +262,7 @@ ov4_022043F4: ; 0x022043F4 ; .align 2, 0 _022044A4: .word 0x0221DBD8 _022044A8: .word 0x0221C6D0 - arm_func_end ov4_022043F4 + arm_func_end VCT_AddConferenceClient arm_func_start ov4_022044AC ov4_022044AC: ; 0x022044AC @@ -977,7 +977,7 @@ _02204DAC: cmp r0, #1 bhi _02204DD4 mov r0, r7 - bl ov4_02204188 + bl VCT_DeleteSession mov r0, #0 ldmia sp!, {r3, r4, r5, r6, r7, pc} _02204DD4: diff --git a/asm/overlay004/ov4_02205270.s b/asm/overlay004/ov4_02205270.s index b8ab957549..ccaadb8a9a 100644 --- a/asm/overlay004/ov4_02205270.s +++ b/asm/overlay004/ov4_02205270.s @@ -31,8 +31,8 @@ _022052B4: .word 0x0221C72C _022052B8: .word 0x0221A114 arm_func_end ov4_02205270 - arm_func_start ov4_022052BC -ov4_022052BC: ; 0x022052BC + arm_func_start VCT_GetVADInfo +VCT_GetVADInfo: ; 0x022052BC stmfd sp!, {r3, lr} movs r1, r0 ldmeqia sp!, {r3, pc} @@ -42,7 +42,7 @@ ov4_022052BC: ; 0x022052BC ldmia sp!, {r3, pc} ; .align 2, 0 _022052D8: .word 0x0221A114 - arm_func_end ov4_022052BC + arm_func_end VCT_GetVADInfo arm_func_start ov4_022052DC ov4_022052DC: ; 0x022052DC diff --git a/asm/overlay004/ov4_02205988.s b/asm/overlay004/ov4_02205988.s index 7e2849ba43..642e33d31c 100644 --- a/asm/overlay004/ov4_02205988.s +++ b/asm/overlay004/ov4_02205988.s @@ -6,8 +6,8 @@ .text - arm_func_start ov4_02205988 -ov4_02205988: ; 0x02205988 + arm_func_start VCT_Init +VCT_Init: ; 0x02205988 stmfd sp!, {r4, lr} mov r4, r0 ldr r0, _02205AB4 ; =0x02000C14 @@ -89,10 +89,10 @@ _02205A8C: _02205AB4: .word 0x02000C14 _02205AB8: .word 0x0221DBCC _02205ABC: .word 0x0221DBD8 - arm_func_end ov4_02205988 + arm_func_end VCT_Init - arm_func_start ov4_02205AC0 -ov4_02205AC0: ; 0x02205AC0 + arm_func_start VCT_Cleanup +VCT_Cleanup: ; 0x02205AC0 stmfd sp!, {r3, lr} bl ov4_02202794 bl ov4_022045C0 @@ -104,10 +104,10 @@ ov4_02205AC0: ; 0x02205AC0 ldmia sp!, {r3, pc} ; .align 2, 0 _02205AE4: .word 0x0221DBCC - arm_func_end ov4_02205AC0 + arm_func_end VCT_Cleanup - arm_func_start ov4_02205AE8 -ov4_02205AE8: ; 0x02205AE8 + arm_func_start VCT_Main +VCT_Main: ; 0x02205AE8 stmfd sp!, {r3, lr} ldr r0, _02205B28 ; =0x0221DBCC ldr r1, [r0, #8] @@ -127,10 +127,10 @@ _02205B14: ldmia sp!, {r3, pc} ; .align 2, 0 _02205B28: .word 0x0221DBCC - arm_func_end ov4_02205AE8 + arm_func_end VCT_Main - arm_func_start ov4_02205B2C -ov4_02205B2C: ; 0x02205B2C + arm_func_start VCT_HandleData +VCT_HandleData: ; 0x02205B2C stmfd sp!, {r4, lr} sub sp, sp, #8 add r3, sp, #0 @@ -164,7 +164,7 @@ _02205B90: ldmia sp!, {r4, pc} ; .align 2, 0 _02205B9C: .word 0x0221DBCC - arm_func_end ov4_02205B2C + arm_func_end VCT_HandleData arm_func_start ov4_02205BA0 ov4_02205BA0: ; 0x02205BA0 diff --git a/asm/overlay018/ov18_0221F800.inc b/asm/overlay018/ov18_0221F800.inc index 0b0410bc23..7603abdd21 100644 --- a/asm/overlay018/ov18_0221F800.inc +++ b/asm/overlay018/ov18_0221F800.inc @@ -5,5 +5,5 @@ .public OS_InitAlarm .public OS_DisableInterrupts .public OS_RestoreInterrupts -.public ov4_021D792C +.public DWC_SetAuthServer .public ov18_0222F20C diff --git a/asm/overlay018/ov18_0221F800.s b/asm/overlay018/ov18_0221F800.s index 17bbab9f4d..31e06d925d 100644 --- a/asm/overlay018/ov18_0221F800.s +++ b/asm/overlay018/ov18_0221F800.s @@ -16,7 +16,7 @@ ov18_0221F800: ; 0x0221F800 bl OS_DisableInterrupts add r5, r0, #0 mov r0, #2 - bl ov4_021D792C + bl DWC_SetAuthServer mov r1, #1 add r0, r4, #0 lsl r1, r1, #0x12 diff --git a/asm/overlay061/ov61_0222B008.inc b/asm/overlay061/ov61_0222B008.inc index d311e1c56d..8fd6562d7c 100644 --- a/asm/overlay061/ov61_0222B008.inc +++ b/asm/overlay061/ov61_0222B008.inc @@ -24,7 +24,7 @@ .public MI_CpuCopy8 .public ov4_021D1F3C .public DWC_ClearError -.public ov4_021D7DB0 +.public DWC_CleanupInet .public ov61_0222AE60 .public ov61_0222AE88 .public ov61_0222AF88 diff --git a/asm/overlay061/ov61_0222B008.s b/asm/overlay061/ov61_0222B008.s index e3c64122f5..9b91e316e1 100644 --- a/asm/overlay061/ov61_0222B008.s +++ b/asm/overlay061/ov61_0222B008.s @@ -165,7 +165,7 @@ ov61_0222B14C: ; 0x0222B14C push {r4, lr} add r4, r0, #0 bl DWC_ClearError - bl ov4_021D7DB0 + bl DWC_CleanupInet bl sub_0203848C mov r0, #0xf2 mov r1, #0 diff --git a/asm/overlay061/ov61_0222BF44.inc b/asm/overlay061/ov61_0222BF44.inc index b209ca814e..6ecb8aaa9b 100644 --- a/asm/overlay061/ov61_0222BF44.inc +++ b/asm/overlay061/ov61_0222BF44.inc @@ -96,17 +96,17 @@ .public ov4_021D75D4 .public DWC_GetLastErrorEx .public DWC_ClearError -.public ov4_021D78C8 -.public ov4_021D792C -.public ov4_021D797C -.public ov4_021D7A8C -.public ov4_021D7AE4 -.public ov4_021D7BFC -.public ov4_021D7DB0 +.public DWC_InitInetEx +.public DWC_SetAuthServer +.public DWC_ConnectInetAsync +.public DWC_CheckInet +.public DWC_ProcessInet +.public DWC_GetInetStatus +.public DWC_CleanupInet .public ov4_021D7EB8 .public ov4_021D81DC .public ov4_021D82A0 -.public ov4_021D8E8C +.public DWC_ShutdownFriendsMatch .public ov4_021E55B0 .public ov61_0222C1FC .public ov61_0222C224 diff --git a/asm/overlay061/ov61_0222BF44.s b/asm/overlay061/ov61_0222BF44.s index 5f4e09c34c..cb3b9841df 100644 --- a/asm/overlay061/ov61_0222BF44.s +++ b/asm/overlay061/ov61_0222BF44.s @@ -1403,10 +1403,10 @@ _0222CA82: add r0, #0x14 mov r2, #1 mov r3, #0x14 - bl ov4_021D78C8 + bl DWC_InitInetEx mov r0, #2 - bl ov4_021D792C - bl ov4_021D797C + bl DWC_SetAuthServer + bl DWC_ConnectInetAsync mov r0, #2 str r0, [r4, #8] _0222CA9E: @@ -1422,11 +1422,11 @@ ov61_0222CAA8: ; 0x0222CAA8 push {r4, lr} sub sp, #0x48 add r4, r0, #0 - bl ov4_021D7AE4 - bl ov4_021D7A8C + bl DWC_ProcessInet + bl DWC_CheckInet cmp r0, #0 beq _0222CB26 - bl ov4_021D7BFC + bl DWC_GetInetStatus cmp r0, #8 bhi _0222CB06 add r0, r0, r0 @@ -1455,7 +1455,7 @@ _0222CAE0: ldr r0, [sp, #4] str r0, [r4, #0x1c] bl DWC_ClearError - bl ov4_021D7DB0 + bl DWC_CleanupInet add r0, r4, #0 bl ov61_0222C86C mov r0, #6 @@ -1530,7 +1530,7 @@ _0222CB68: ldr r0, [sp] str r0, [r4, #0x1c] bl DWC_ClearError - bl ov4_021D7DB0 + bl DWC_CleanupInet mov r0, #6 str r0, [r4, #8] ldr r1, [sp] @@ -1563,7 +1563,7 @@ _0222CBBC: str r0, [r4, #8] b _0222CBCE _0222CBC0: - bl ov4_021D8E8C + bl DWC_ShutdownFriendsMatch mov r0, #6 str r0, [r4, #8] b _0222CBCE @@ -1822,7 +1822,7 @@ _0222CD98: cmp r0, #0 bne _0222CE08 bl sub_0203848C - bl ov4_021D7DB0 + bl DWC_CleanupInet add r0, r4, #0 add r0, #0x90 ldr r0, [r0, #0] @@ -1940,7 +1940,7 @@ _0222CE60: str r0, [r4, #0] b _0222CED2 _0222CE7E: - bl ov4_021D7DB0 + bl DWC_CleanupInet bl sub_0203848C add r0, r4, #0 add r0, #0x90 diff --git a/asm/overlay094/ov94_02244950.inc b/asm/overlay094/ov94_02244950.inc index a28445209f..75becdb986 100644 --- a/asm/overlay094/ov94_02244950.inc +++ b/asm/overlay094/ov94_02244950.inc @@ -59,17 +59,17 @@ .public ov4_021D75D4 .public DWC_GetLastErrorEx .public DWC_ClearError -.public ov4_021D78C8 -.public ov4_021D792C -.public ov4_021D797C -.public ov4_021D7A8C -.public ov4_021D7AE4 -.public ov4_021D7BFC -.public ov4_021D7DB0 +.public DWC_InitInetEx +.public DWC_SetAuthServer +.public DWC_ConnectInetAsync +.public DWC_CheckInet +.public DWC_ProcessInet +.public DWC_GetInetStatus +.public DWC_CleanupInet .public ov4_021D7EB8 .public ov4_021D81DC .public ov4_021D82A0 -.public ov4_021D8E8C +.public DWC_ShutdownFriendsMatch .public ov4_021E55B0 .public ov94_0223B140 .public ov94_0223B7B8 diff --git a/asm/overlay094/ov94_02244950.s b/asm/overlay094/ov94_02244950.s index e1f55eb28e..127f8924ec 100644 --- a/asm/overlay094/ov94_02244950.s +++ b/asm/overlay094/ov94_02244950.s @@ -45,7 +45,7 @@ ov94_02244950: ; 0x02244950 bl sub_02038438 add r0, r4, #0 bl ov94_02245934 - bl ov4_021D7A8C + bl DWC_CheckInet cmp r0, #0 bne _022449EA ldr r0, [r4, #0] @@ -873,7 +873,7 @@ ov94_0224505C: ; 0x0224505C sub r1, r1, #1 cmp r0, r1 bne _0224509A - bl ov4_021D7A8C + bl DWC_CheckInet cmp r0, #0 bne _02245086 mov r0, #0 @@ -890,10 +890,10 @@ _02245086: str r0, [r4, #0x2c] b _022450B8 _0224509A: - bl ov4_021D7A8C + bl DWC_CheckInet cmp r0, #0 beq _022450A6 - bl ov4_021D7DB0 + bl DWC_CleanupInet _022450A6: bl sub_0203848C mov r1, #0 @@ -938,7 +938,7 @@ ov94_022450EC: ; 0x022450EC push {r4, lr} add r4, r0, #0 bl sub_0203848C - bl ov4_021D7DB0 + bl DWC_CleanupInet mov r1, #0 add r0, r4, #0 add r2, r1, #0 @@ -982,10 +982,10 @@ ov94_02245138: ; 0x02245138 mov r1, #2 mov r2, #1 mov r3, #0x14 - bl ov4_021D78C8 + bl DWC_InitInetEx mov r0, #2 - bl ov4_021D792C - bl ov4_021D797C + bl DWC_SetAuthServer + bl DWC_ConnectInetAsync mov r0, #3 str r0, [r4, #0x2c] pop {r4, pc} @@ -996,11 +996,11 @@ ov94_02245158: ; 0x02245158 push {r4, lr} sub sp, #0x48 add r4, r0, #0 - bl ov4_021D7AE4 - bl ov4_021D7A8C + bl DWC_ProcessInet + bl DWC_CheckInet cmp r0, #0 beq _022451D6 - bl ov4_021D7BFC + bl DWC_GetInetStatus cmp r0, #8 bhi _022451B6 add r0, r0, r0 @@ -1029,7 +1029,7 @@ _02245190: ldr r0, [sp, #4] str r0, [r4, #0x48] bl DWC_ClearError - bl ov4_021D7DB0 + bl DWC_CleanupInet add r0, r4, #0 bl ov94_0223C5F4 mov r0, #0x17 @@ -1102,7 +1102,7 @@ _02245218: ldr r0, [sp, #4] str r0, [r4, #0x44] bl DWC_ClearError - bl ov4_021D7DB0 + bl DWC_CleanupInet mov r0, #0x17 str r0, [r4, #0x2c] ldr r1, [sp] @@ -1135,7 +1135,7 @@ _02245268: str r0, [r4, #0x2c] b _0224527A _0224526C: - bl ov4_021D8E8C + bl DWC_ShutdownFriendsMatch mov r0, #0x17 str r0, [r4, #0x2c] b _0224527A @@ -1773,7 +1773,7 @@ _0224570C: cmp r0, #0 bne _02245784 bl sub_0203848C - bl ov4_021D7DB0 + bl DWC_CleanupInet mov r0, #0x52 lsl r0, r0, #6 ldrsh r1, [r4, r0] diff --git a/asm/overlay096/ov96_0223BCE0.inc b/asm/overlay096/ov96_0223BCE0.inc index f112aeaa45..d519283157 100644 --- a/asm/overlay096/ov96_0223BCE0.inc +++ b/asm/overlay096/ov96_0223BCE0.inc @@ -76,18 +76,18 @@ .public ov4_021D75D4 .public DWC_GetLastErrorEx .public DWC_ClearError -.public ov4_021D78C8 -.public ov4_021D792C -.public ov4_021D797C -.public ov4_021D7A8C -.public ov4_021D7AE4 -.public ov4_021D7BFC -.public ov4_021D7DB0 +.public DWC_InitInetEx +.public DWC_SetAuthServer +.public DWC_ConnectInetAsync +.public DWC_CheckInet +.public DWC_ProcessInet +.public DWC_GetInetStatus +.public DWC_CleanupInet .public ov4_021D7EB8 .public ov4_021D806C .public ov4_021D81DC .public ov4_021D82A0 -.public ov4_021D8E8C +.public DWC_ShutdownFriendsMatch .public ov4_021E55B0 .public ov96_0223B140 .public ov96_0223B3D4 diff --git a/asm/overlay096/ov96_0223BCE0.s b/asm/overlay096/ov96_0223BCE0.s index 3175945fae..e2fa6cc266 100644 --- a/asm/overlay096/ov96_0223BCE0.s +++ b/asm/overlay096/ov96_0223BCE0.s @@ -65,7 +65,7 @@ ov96_0223BCE0: ; 0x0223BCE0 ldr r0, _0223BDB0 ; =0x00000F0C mov r1, #0 str r1, [r4, r0] - bl ov4_021D7A8C + bl DWC_CheckInet cmp r0, #0 bne _0223BDA4 ldr r0, [r4, #0] @@ -957,7 +957,7 @@ ov96_0223C4B8: ; 0x0223C4B8 sub r1, r1, #1 cmp r0, r1 bne _0223C4E8 - bl ov4_021D7A8C + bl DWC_CheckInet cmp r0, #0 bne _0223C4E2 mov r0, #0 @@ -968,7 +968,7 @@ _0223C4E2: str r0, [r4, #0x1c] b _0223C508 _0223C4E8: - bl ov4_021D7A8C + bl DWC_CheckInet cmp r0, #0 bne _0223C4FE mov r1, #0 @@ -999,10 +999,10 @@ ov96_0223C510: ; 0x0223C510 mov r1, #2 mov r2, #1 mov r3, #0x14 - bl ov4_021D78C8 + bl DWC_InitInetEx mov r0, #2 - bl ov4_021D792C - bl ov4_021D797C + bl DWC_SetAuthServer + bl DWC_ConnectInetAsync mov r0, #3 str r0, [r4, #0x1c] pop {r4, pc} @@ -1013,11 +1013,11 @@ ov96_0223C530: ; 0x0223C530 push {r3, r4, lr} sub sp, #0x44 add r4, r0, #0 - bl ov4_021D7AE4 - bl ov4_021D7A8C + bl DWC_ProcessInet + bl DWC_CheckInet cmp r0, #0 beq _0223C5B0 - bl ov4_021D7BFC + bl DWC_GetInetStatus cmp r0, #8 bhi _0223C58E add r0, r0, r0 @@ -1046,7 +1046,7 @@ _0223C568: add r0, r1, #4 str r2, [r4, r0] bl DWC_ClearError - bl ov4_021D7DB0 + bl DWC_CleanupInet add r0, r4, #0 bl ov96_0223D99C mov r0, #0x37 @@ -1125,7 +1125,7 @@ _0223C5F8: add r0, r1, #4 str r2, [r4, r0] bl DWC_ClearError - bl ov4_021D7DB0 + bl DWC_CleanupInet mov r0, #0x37 str r0, [r4, #0x1c] ldr r1, [sp] @@ -1158,7 +1158,7 @@ _0223C64E: str r0, [r4, #0x1c] b _0223C660 _0223C652: - bl ov4_021D8E8C + bl DWC_ShutdownFriendsMatch mov r0, #0x37 str r0, [r4, #0x1c] b _0223C660 @@ -3045,7 +3045,7 @@ _0223D4CC: .word 0x00000BDC ov96_0223D4D0: ; 0x0223D4D0 push {r4, lr} add r4, r0, #0 - bl ov4_021D7DB0 + bl DWC_CleanupInet mov r1, #0 add r0, r4, #0 add r2, r1, #0 @@ -3252,7 +3252,7 @@ _0223D63C: cmp r0, #0 bne _0223D6B4 bl sub_0203848C - bl ov4_021D7DB0 + bl DWC_CleanupInet mov r0, #0xf9 lsl r0, r0, #4 ldrsh r1, [r4, r0] diff --git a/asm/overlay097/ov97_02238D74.inc b/asm/overlay097/ov97_02238D74.inc index 187af48424..5a4c616a57 100644 --- a/asm/overlay097/ov97_02238D74.inc +++ b/asm/overlay097/ov97_02238D74.inc @@ -17,13 +17,13 @@ .public DWC_GetLastErrorEx .public DWC_ClearError .public DWC_SetMemFunc -.public ov4_021D78C8 -.public ov4_021D792C -.public ov4_021D797C -.public ov4_021D7A8C -.public ov4_021D7AE4 -.public ov4_021D7BFC -.public ov4_021D7DB0 +.public DWC_InitInetEx +.public DWC_SetAuthServer +.public DWC_ConnectInetAsync +.public DWC_CheckInet +.public DWC_ProcessInet +.public DWC_GetInetStatus +.public DWC_CleanupInet .public ov4_021D7E10 .public ov4_021D7EB8 .public ov4_021D81DC diff --git a/asm/overlay097/ov97_02238D74.s b/asm/overlay097/ov97_02238D74.s index 18b402cc48..3790f6d049 100644 --- a/asm/overlay097/ov97_02238D74.s +++ b/asm/overlay097/ov97_02238D74.s @@ -82,7 +82,7 @@ _02238DF4: .word 0x0000100F ov97_02238DF8: ; 0x02238DF8 push {lr} sub sp, #0x3c - bl ov4_021D7BFC + bl DWC_GetInetStatus cmp r0, #4 beq _02238E0C cmp r0, #7 @@ -257,10 +257,10 @@ _02238F3C: add r0, r4, r0 mov r2, #1 mov r3, #0x14 - bl ov4_021D78C8 + bl DWC_InitInetEx mov r0, #2 - bl ov4_021D792C - bl ov4_021D797C + bl DWC_SetAuthServer + bl DWC_ConnectInetAsync bl sub_02039734 ldr r0, _022391C4 ; =0x00001003 mov r1, #0 @@ -269,8 +269,8 @@ _02238F3C: str r1, [r4, r0] b _022392C4 _02238F64: - bl ov4_021D7AE4 - bl ov4_021D7A8C + bl DWC_ProcessInet + bl DWC_CheckInet cmp r0, #0 beq _02238F9C add r0, r4, #0 @@ -333,7 +333,7 @@ _02238FDA: add r0, r4, #0 bl ov97_02238DA4 str r0, [r5, #0] - bl ov4_021D7DB0 + bl DWC_CleanupInet b _02238FFA _02238FEC: cmp r0, #5 @@ -607,7 +607,7 @@ _0223923E: str r0, [r5, #0] b _022392C4 _02239244: - bl ov4_021D7DB0 + bl DWC_CleanupInet ldr r0, _022392C8 ; =0x00001010 str r0, [r5, #0] b _022392C4 diff --git a/asm/overlay098/ov98_022471C8.inc b/asm/overlay098/ov98_022471C8.inc index d3deb5a1bf..7b35ac965a 100644 --- a/asm/overlay098/ov98_022471C8.inc +++ b/asm/overlay098/ov98_022471C8.inc @@ -125,17 +125,17 @@ .public ov4_021D75D4 .public DWC_GetLastErrorEx .public DWC_ClearError -.public ov4_021D78C8 -.public ov4_021D792C -.public ov4_021D797C -.public ov4_021D7A8C -.public ov4_021D7AE4 -.public ov4_021D7BFC -.public ov4_021D7DB0 +.public DWC_InitInetEx +.public DWC_SetAuthServer +.public DWC_ConnectInetAsync +.public DWC_CheckInet +.public DWC_ProcessInet +.public DWC_GetInetStatus +.public DWC_CleanupInet .public ov4_021D7EB8 .public ov4_021D81DC .public ov4_021D82A0 -.public ov4_021D8E8C +.public DWC_ShutdownFriendsMatch .public ov4_021E55B0 .public ov94_0223B140 .public ov94_0223B7AC diff --git a/asm/overlay098/ov98_022471C8.s b/asm/overlay098/ov98_022471C8.s index 20504424f0..ff4396128f 100644 --- a/asm/overlay098/ov98_022471C8.s +++ b/asm/overlay098/ov98_022471C8.s @@ -130,7 +130,7 @@ ov98_022471C8: ; 0x022471C8 beq _0224731A b _02247330 _022472EE: - bl ov4_021D7A8C + bl DWC_CheckInet cmp r0, #0 bne _02247314 ldr r0, [r5, #0] @@ -2929,7 +2929,7 @@ ov98_0224897C: ; 0x0224897C push {r4, lr} add r4, r0, #0 bl sub_0203859C - bl ov4_021D7DB0 + bl DWC_CleanupInet bl sub_02039794 mov r0, #4 bl sub_02017B8C @@ -3029,10 +3029,10 @@ _02248A3C: add r0, #0x14 mov r2, #1 mov r3, #0x14 - bl ov4_021D78C8 + bl DWC_InitInetEx mov r0, #2 - bl ov4_021D792C - bl ov4_021D797C + bl DWC_SetAuthServer + bl DWC_ConnectInetAsync mov r0, #0xd str r0, [r4, #8] _02248A5E: @@ -3048,11 +3048,11 @@ ov98_02248A68: ; 0x02248A68 push {r4, lr} sub sp, #0x48 add r4, r0, #0 - bl ov4_021D7AE4 - bl ov4_021D7A8C + bl DWC_ProcessInet + bl DWC_CheckInet cmp r0, #0 beq _02248B0E - bl ov4_021D7BFC + bl DWC_GetInetStatus cmp r0, #8 bhi _02248AEE add r0, r0, r0 @@ -3081,7 +3081,7 @@ _02248AA0: ldr r0, [sp, #4] str r0, [r4, #0x1c] bl DWC_ClearError - bl ov4_021D7DB0 + bl DWC_CleanupInet bl sub_02039794 bl sub_0203859C mov r0, #4 @@ -3171,7 +3171,7 @@ _02248B50: ldr r0, [sp, #4] str r0, [r4, #0x18] bl DWC_ClearError - bl ov4_021D7DB0 + bl DWC_CleanupInet bl sub_02039794 bl sub_0203859C mov r0, #4 @@ -3221,7 +3221,7 @@ _02248BC8: str r0, [r4, #8] b _02248BDA _02248BCC: - bl ov4_021D8E8C + bl DWC_ShutdownFriendsMatch mov r0, #0x1b str r0, [r4, #8] b _02248BDA @@ -4233,7 +4233,7 @@ _02249356: str r0, [r4, #0] b _0224940A _02249374: - bl ov4_021D7DB0 + bl DWC_CleanupInet bl sub_02039794 bl sub_0203859C mov r0, #4 @@ -4601,7 +4601,7 @@ _02249604: cmp r0, #0 bne _0224969E bl sub_0203859C - bl ov4_021D7DB0 + bl DWC_CleanupInet bl sub_02039794 mov r0, #4 bl sub_02017B8C diff --git a/lib/include/vct.h b/lib/include/vct.h new file mode 100644 index 0000000000..9c41ded66d --- /dev/null +++ b/lib/include/vct.h @@ -0,0 +1,180 @@ +#ifndef VCT_VOICECHAT_H_ +#define VCT_VOICECHAT_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define VCT_ERROR_NONE 0 +#define VCT_ERROR_BAD_PARAM -1 +#define VCT_ERROR_BAD_MODE -2 +#define VCT_ERROR_BAD_REQUEST -3 +#define VCT_ERROR_SEND_FAIL -4 +#define VCT_ERROR_TRANSCEIVER_BUSY -5 +#define VCT_ERROR_EXHAUST_CLIENTS -6 +#define VCT_MAX_SESSION 8 +#define VCT_MAX_TRANSCEIVER_CLIENT 8 +#define VCT_MAX_CONFERENCE_CLIENT 4 +#define VCT_MAX_AUDIO_STREAM (VCT_MAX_CONFERENCE_CLIENT - 1) +#define VCT_MAGIC_PACKET_HEADER '_VCT' +#define VCT_AUDIO_FRAME_LENGTH 68 +#define VCT_AUDIO_FRAME_RATE 8000 +#define VCT_AUDIO_BUFFER_SIZE 1144 +#define VCT_DEFAULT_AUDIO_BUFFER_COUNT 8 +#define VCT_MIN_AUDIO_BUFFER_COUNT 4 +#define VCT_MAX_AUDIO_BUFFER_COUNT (24 * VCT_MAX_AUDIO_STREAM) + +typedef struct _VCTSession VCTSession; + +typedef enum { + VCT_CODEC_8BIT_RAW, + VCT_CODEC_G711_ULAW, + VCT_CODEC_2BIT_ADPCM, + VCT_CODEC_3BIT_ADPCM, + VCT_CODEC_4BIT_ADPCM, + VCT_CODEC_END +} VCTCodec; + +typedef enum { + VCT_MODE_NULL, + VCT_MODE_PHONE, + VCT_MODE_TRANSCEIVER, + VCT_MODE_CONFERENCE +} VCTMode; + +typedef enum { + VCT_EVENT_NONE, + VCT_EVENT_INCOMING, + VCT_EVENT_REJECT, + VCT_EVENT_BUSY, + VCT_EVENT_CANCEL, + VCT_EVENT_NOTIFY_FREE, + VCT_EVENT_NOTIFY_BUSY, + VCT_EVENT_CONNECTED, + VCT_EVENT_RESPONDBYE, + VCT_EVENT_DISCONNECTED, + VCT_EVENT_CONTACT, + VCT_EVENT_TIMEOUT, + VCT_EVENT_ABORT +} VCTEvent; + +typedef enum { + VCT_REQUEST_INVITE = 0, + VCT_REQUEST_BYE, + VCT_REQUEST_CANCEL, + VCT_REQUEST_CONTACT, + VCT_REQUEST_NOTIFY, + VCT_REQUEST_END +} VCTRequestCode; + +typedef enum { + VCT_RESPONSE_OK, + VCT_RESPONSE_BAD_REQUEST, + VCT_RESPONSE_NOT_ACCEPTABLE, + VCT_RESPONSE_BUSY_HERE, + VCT_RESPONSE_TERMINATED, + VCT_RESPONSE_DECLINE, + VCT_RESPONSE_END +} VCTResponseCode; + +typedef enum { + VCT_STATE_INIT, + VCT_STATE_OUTGOING, + VCT_STATE_TALKING, + VCT_STATE_CONNECTED, + VCT_STATE_INCOMING, + VCT_STATE_DISCONNECTING +} VCTState; + +typedef enum { + VCT_REPORTLEVEL_NONE, + VCT_REPORTLEVEL_ALL +} VCTReportLevel; + +typedef struct VCTAudioInfo { + u32 internalLatency; + u32 bufferLatency; + u32 bufferCount; + int clockSkew; + u32 sequence; + u32 dropCount; + u32 jitter; + u32 jamCount; + u32 recoverCount; + VCTCodec codec; +} VCTAudioInfo; + +typedef void (* VCTEventCallback)(u8 aid, VCTEvent result, VCTSession * session, void * param); + +typedef struct { + VCTSession * session; + u32 numSession; + VCTMode mode; + u8 aid; + u8 padding__[3]; + void * audioBuffer; + u32 audioBufferSize; + VCTEventCallback callback; + void * userData; +} VCTConfig; + +struct _VCTSession { + VCTMode mode; + u8 aid; + u8 talking; + u16 padding__; + u32 aidBitmap; + VCTState state; + void * userData; + VCTSession * _next; +}; + +typedef struct _VCTVADInfo { + BOOL activity; + int scale; + int releaseCount; + int releaseTime; +} VCTVADInfo; + +BOOL VCT_Init(VCTConfig * config); +void VCT_Cleanup(void); +void VCT_Main(); +BOOL VCT_HandleData(u8 aid, u8 * buffer, int size); +int VCT_Request(VCTSession * session, VCTRequestCode request); +int VCT_Response(VCTSession * session, VCTResponseCode response); +int VCT_Contact(VCTSession ** outSession); +int VCT_Release(VCTSession * session); +void VCT_SetTransceiverMode(BOOL true_or_false); +int VCT_SetTransceiverServer(u8 aid); +int VCT_SetTransceiverClients(u8 aidList[], int num_of_aid); +void VCT_SetTransceiverTimeout(u32 sec); +int VCT_AddConferenceClient(u8 aid); +int VCT_RemoveConferenceClient(u8 aid); +VCTSession * VCT_CreateSession(u8 aid); +BOOL VCT_DeleteSession(VCTSession * session); +BOOL VCT_StartStreaming(VCTSession * session); +void VCT_StopStreaming(VCTSession * session); +BOOL VCT_SendAudio(void * audio_data, u32 length); +BOOL VCT_ReceiveAudio(void * audio_data, u32 length, u32 * outAIDBitmap); +BOOL VCT_SetCodec(VCTCodec codec); +VCTCodec VCT_GetCodec(void); +void VCT_GetAudioInfo(u32 channel, VCTAudioInfo * info); +void VCT_EnableVAD(BOOL flag); +void VCT_SetVADReleaseTime(int count); +void VCT_ResetVAD(void); +void VCT_GetVADInfo(VCTVADInfo * outInfo); +void VCT_EnableEchoCancel(BOOL flag); + +#ifndef SDK_FINALROM +void VCT_SetReportLevel(VCTReportLevel level); +#else +#define VCT_SetReportLevel(level) ((void)0) +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/main.lsf b/main.lsf index 844cee212f..df4e95c446 100644 --- a/main.lsf +++ b/main.lsf @@ -690,9 +690,9 @@ Overlay overlay3 Overlay overlay4 { - After main - Object asm/overlay004/ov4_021D0D80.o - Object asm/overlay004/ov4_021D2808.o + After main + Object src/overlay004/ov4_021D0D80.o + Object src/overlay004/ov4_021D2808.o Object asm/overlay004/ov4_021D3038.o Object asm/overlay004/ov4_021D3E5C.o Object asm/overlay004/ov4_021D4478.o diff --git a/src/overlay004/ov4_021D0D80.c b/src/overlay004/ov4_021D0D80.c new file mode 100644 index 0000000000..4fdd856f11 --- /dev/null +++ b/src/overlay004/ov4_021D0D80.c @@ -0,0 +1,1617 @@ +#include +#include +#include +#include +#include + +#include "struct_decls/struct_021C0794_decl.h" + +#include "overlay004/funcptr_ov4_021D1104.h" +#include "overlay004/funcptr_ov4_021D1120.h" +#include "overlay004/funcptr_ov4_021D113C.h" +#include "overlay004/funcptr_ov4_021D1150.h" + +#include "unk_02017E74.h" +#include "unk_0202ACE0.h" +#include "unk_0203061C.h" +#include "unk_0203266C.h" +#include "unk_02034198.h" +#include "unk_020366A0.h" +#include "overlay004/ov4_021D0D80.h" +#include "overlay004/ov4_021D2808.h" + +typedef struct { + u8 unk_00[256]; + DWCFriendData * unk_100; + DWCFriendsMatchControl unk_104; + DWCUserData * unk_F08; + DWCInetControl unk_F0C; + UnkStruct_021C0794 * unk_F6C; + void * unk_F70; + void * unk_F74[4]; + void * unk_F84; + NNSFndHeapHandle unk_F88; + void * unk_F8C; + NNSFndHeapHandle unk_F90; + u32 unk_F94; + UnkFuncPtr_ov4_021D1104 unk_F98; + UnkFuncPtr_ov4_021D1104 unk_F9C; + UnkFuncPtr_ov4_021D1120 unk_FA0; + void * unk_FA4; + UnkFuncPtr_ov4_021D1150 unk_FA8; + void * unk_FAC; + UnkFuncPtr_ov4_021D113C unk_FB0; + void (* unk_FB4)(int param0); + u8 unk_FB8[128]; + u8 unk_1038[32]; + void * unk_1058; + int unk_105C; + u32 unk_1060; + int unk_1064; + int unk_1068; + int unk_106C; + int unk_1070; + u32 unk_1074; + int unk_1078; + int unk_107C; + int unk_1080; + int unk_1084; + int unk_1088; + int unk_108C; + BOOL unk_1090; + BOOL unk_1094; + int unk_1098; + int unk_109C; + int unk_10A0[8]; + int unk_10C0; + int unk_10C4; + u16 unk_10C8; + u16 unk_10CA; + u32 unk_10CC; + u8 unk_10D0; + u8 unk_10D1; + u8 unk_10D2; + u8 unk_10D3; + u8 unk_10D4; + u8 unk_10D5[4]; + u8 unk_10D9; + u8 unk_10DA; +} UnkStruct_ov4_0221A400; + +static void ov4_021D1650(DWCError param0, int param1, void * param2); +static void ov4_021D171C(DWCError param0, BOOL param1, void * param2); +static void ov4_021D1740(int param0, u8 param1, const char * param2, void * param3); +static void ov4_021D1744(int param0, int param1, void * param2); +static void ov4_021D17A0(int param0, void * param1); +static void ov4_021D1898(DWCError param0, BOOL param1, void * param2); +static void ov4_021D18F4(int param0, u8 param1); +static void ov4_021D1950(u8 param0, u8 * param1, int param2); +static void ov4_021D1A20(DWCError param0, BOOL param1, BOOL param2, u8 param3, int param4, void * param5); +static int ov4_021D18F0(int param0, void * param1); +static int ov4_021D1D1C(void); +static void ov4_021D16E8(u8 param0); +static BOOL ov4_021D1C5C(void); +static void ov4_021D2700(int param0); +static void ov4_021D27CC(void); +static void ov4_021D2748(int param0); +static void ov4_021D21B4(void); +static void ov4_021D23A4(DWCError param0, BOOL param1, BOOL param2, BOOL param3, int param4, void * param5); +static void ov4_021D2488(DWCError param0, BOOL param1, BOOL param2, BOOL param3, int param4, void * param5); +static void ov4_021D24AC(int param0, void * param1); + +static UnkStruct_ov4_0221A400 * Unk_ov4_0221A400 = NULL; + +int ov4_021D0D80 (UnkStruct_021C0794 * param0, int param1, int param2, int param3) +{ + void * v0; + + GF_ASSERT(Unk_ov4_0221A400 == NULL); + + v0 = sub_02018144(param1, sizeof(UnkStruct_ov4_0221A400) + 32); + MI_CpuClear8(v0, sizeof(UnkStruct_ov4_0221A400) + 32); + + Unk_ov4_0221A400 = (UnkStruct_ov4_0221A400 *)(((u32)v0 + 31) / 32 * 32); + Unk_ov4_0221A400->unk_F70 = v0; + Unk_ov4_0221A400->unk_F6C = param0; + Unk_ov4_0221A400->unk_F98 = NULL; + Unk_ov4_0221A400->unk_F9C = NULL; + Unk_ov4_0221A400->unk_FB4 = NULL; + Unk_ov4_0221A400->unk_1064 = 0; + Unk_ov4_0221A400->unk_1078 = param1; + Unk_ov4_0221A400->unk_107C = param1; + Unk_ov4_0221A400->unk_1080 = param2; + Unk_ov4_0221A400->unk_F84 = sub_02018144(param1, param2 + ((4 * 1024) * 3) + 32); + Unk_ov4_0221A400->unk_F8C = NULL; + Unk_ov4_0221A400->unk_F88 = NNS_FndCreateExpHeap((void *)(((u32)Unk_ov4_0221A400->unk_F84 + 31) / 32 * 32), param2); + Unk_ov4_0221A400->unk_F90 = NULL; + Unk_ov4_0221A400->unk_1098 = 0; + Unk_ov4_0221A400->unk_1088 = -1; + Unk_ov4_0221A400->unk_1060 = 0; + Unk_ov4_0221A400->unk_1070 = param3; + Unk_ov4_0221A400->unk_1074 = 0; + Unk_ov4_0221A400->unk_10CC = 0; + Unk_ov4_0221A400->unk_108C = -1; + Unk_ov4_0221A400->unk_1090 = 1; + Unk_ov4_0221A400->unk_10D2 = 0; + Unk_ov4_0221A400->unk_10C0 = 0; + Unk_ov4_0221A400->unk_10D0 = 0; + Unk_ov4_0221A400->unk_10D1 = 0; + Unk_ov4_0221A400->unk_10C8 = 1; + Unk_ov4_0221A400->unk_10C4 = 1; + Unk_ov4_0221A400->unk_10CA = 1; + + if (param0 != NULL) { + Unk_ov4_0221A400->unk_F08 = sub_0202AD28(sub_0202B370(Unk_ov4_0221A400->unk_F6C)); + Unk_ov4_0221A400->unk_100 = (DWCFriendData *)sub_0202AED8(sub_0202B370(Unk_ov4_0221A400->unk_F6C), 0); + } + + Unk_ov4_0221A400->unk_10D9 = 1; + Unk_ov4_0221A400->unk_1058 = NULL; + + { + int v1; + + for (v1 = 0; v1 < 32; v1++) { + Unk_ov4_0221A400->unk_1038[v1] = DWC_STATUS_OFFLINE; + } + } + + ov4_021D24D8(); + + if (!DWC_CheckHasProfile(Unk_ov4_0221A400->unk_F08)) { + return 1; + } + + if (!DWC_CheckValidConsole(Unk_ov4_0221A400->unk_F08)) { + return 2; + } + + return 0; +} + +void ov4_021D0F68 () +{ + if (Unk_ov4_0221A400) { + ov4_021D27CC(); + + if (Unk_ov4_0221A400->unk_F8C != NULL) { + NNS_FndDestroyExpHeap(Unk_ov4_0221A400->unk_F90); + sub_020181C4(Unk_ov4_0221A400->unk_F8C); + Unk_ov4_0221A400->unk_F8C = NULL; + } + + NNS_FndDestroyExpHeap(Unk_ov4_0221A400->unk_F88); + + sub_02018238(Unk_ov4_0221A400->unk_1078, Unk_ov4_0221A400->unk_F84); + sub_02018238(Unk_ov4_0221A400->unk_1078, Unk_ov4_0221A400->unk_F70); + + Unk_ov4_0221A400 = NULL; + } + + DWC_ClearError(); +} + +int ov4_021D0FEC () +{ + switch (Unk_ov4_0221A400->unk_1064) { + case 0: + { + DWC_SetMemFunc(ov4_021D1AA0, ov4_021D1B04); + DWC_InitInetEx(&Unk_ov4_0221A400->unk_F0C, 2, 1, 20); + DWC_SetAuthServer((DWC_CONNECTINET_AUTH_RELEASE)); + DWC_ConnectInetAsync(); + + Unk_ov4_0221A400->unk_1064 = 1; + Unk_ov4_0221A400->unk_1084 = 0; + } + case 1: + { + if (DWC_CheckInet()) { + if (DWC_GetInetStatus() == DWC_CONNECTINET_STATE_CONNECTED) { + Unk_ov4_0221A400->unk_1064 = 2; + } else { + Unk_ov4_0221A400->unk_1064 = 12; + } + } else { + DWC_ProcessInet(); + break; + } + } + case 2: + { + int v0 = ov4_021D1B5C(); + + if (v0 != 0) { + return v0; + } + } + + DWC_InitFriendsMatch(&(Unk_ov4_0221A400->unk_104), (Unk_ov4_0221A400->unk_F08), 10727, "pokemondpds", "1vTlwb", 0, 0, Unk_ov4_0221A400->unk_100, 32); + + { + OSOwnerInfo v1; + OS_GetOwnerInfo(&v1); + DWC_LoginAsync(&(v1.nickName[0]), NULL, ov4_021D1650, NULL); + } + + Unk_ov4_0221A400->unk_1064 = 3; + case 3: + DWC_ProcessFriendsMatch(); + break; + case 4: + DWC_ProcessFriendsMatch(); + return (DWC_ERROR_NUM)+7; + } + + return ov4_021D1B5C(); +} + +void ov4_021D1104 (UnkFuncPtr_ov4_021D1104 param0, UnkFuncPtr_ov4_021D1104 param1) +{ + Unk_ov4_0221A400->unk_F98 = param0; + Unk_ov4_0221A400->unk_F9C = param1; +} + +void ov4_021D1120 (UnkFuncPtr_ov4_021D1120 param0, void * param1) +{ + Unk_ov4_0221A400->unk_FA0 = param0; + Unk_ov4_0221A400->unk_FA4 = param1; +} + +void ov4_021D113C (UnkFuncPtr_ov4_021D113C param0) +{ + Unk_ov4_0221A400->unk_FB0 = param0; +} + +void ov4_021D1150 (UnkFuncPtr_ov4_021D1150 param0, void * param1) +{ + Unk_ov4_0221A400->unk_FA8 = param0; + Unk_ov4_0221A400->unk_FAC = param1; +} + +const static char Unk_ov4_02215870[] = "%s = \'%s\'"; + +int ov4_021D116C (u8 * param0, int param1, BOOL param2, u32 param3) +{ + GF_ASSERT(Unk_ov4_0221A400 != NULL); + + if (Unk_ov4_0221A400->unk_1064 != 4) { + return 0; + } + + ov4_021D27CC(); + + { + int v0; + DWCMatchOptMinComplete v1 = {1, 2, {0, 0}, 0}; + + v1.timeout = param3 * 1000; + v0 = DWC_SetMatchingOption(DWC_MATCH_OPTION_MIN_COMPLETE, &v1, sizeof(v1)); + + GF_ASSERT(v0 == DWC_SET_MATCH_OPT_RESULT_SUCCESS); + } + + GF_ASSERT(DWC_AddMatchKeyString(0, PPW_LOBBY_MATCHMAKING_KEY, (const char *)param0) != 0); + + { + MI_CpuClear8(Unk_ov4_0221A400->unk_FB8, 128); + sprintf((char *)Unk_ov4_0221A400->unk_FB8, Unk_ov4_02215870, PPW_LOBBY_MATCHMAKING_KEY, param0); + GF_ASSERT(strlen((const char *)Unk_ov4_0221A400->unk_FB8) < 128); + } + + if (param2) { + DWC_AddMatchKeyString(1, (const char *)Unk_ov4_0221A400->unk_FB8, (const char *)Unk_ov4_0221A400->unk_FB8); + } + + Unk_ov4_0221A400->unk_1064 = 5; + Unk_ov4_0221A400->unk_1070 = param1; + DWC_ConnectToAnybodyAsync(param1, (const char *)Unk_ov4_0221A400->unk_FB8, ov4_021D1898, NULL, ov4_021D18F0, NULL); + Unk_ov4_0221A400->unk_1068 = 0; + + DWC_SetUserSendCallback(ov4_021D18F4); + DWC_SetUserRecvCallback(ov4_021D1950); + DWC_SetConnectionClosedCallback(ov4_021D1A20, NULL); + DWC_SetUserRecvTimeoutCallback(ov4_021D16E8); + + Unk_ov4_0221A400->unk_106C = 0; + Unk_ov4_0221A400->unk_10D9 = 1; + + return 1; +} + +static void ov4_021D12B4 () +{ + if (Unk_ov4_0221A400->unk_1064 == 10) { + Unk_ov4_0221A400->unk_1064 = 11; + } else { + Unk_ov4_0221A400->unk_1064 = 9; + } +} + +int ov4_021D12D4 (int param0) +{ + switch (Unk_ov4_0221A400->unk_1064) { + case 5: + if (param0) { + Unk_ov4_0221A400->unk_1064 = 6; + } + + if (Unk_ov4_0221A400->unk_1068 == 2) { + if (Unk_ov4_0221A400->unk_1088 >= 0) { + if (Unk_ov4_0221A400->unk_1038[Unk_ov4_0221A400->unk_1088] != DWC_STATUS_MATCH_SC_SV) { + Unk_ov4_0221A400->unk_1064 = 10; + } + } + } + break; + case 6: + case 10: + if (Unk_ov4_0221A400->unk_1068 == 0) { + if (!DWC_CancelMatching()) { + (void)0; + } + break; + } else { + int v0; + + v0 = DWC_CloseAllConnectionsHard(); + ov4_021D12B4(); + } + break; + case 7: + { + if (!sub_0203272C(sub_0203895C())) { + ov4_021D1E74(Unk_ov4_0221A400->unk_1078); + } + + if (Unk_ov4_0221A400->unk_1090) { + Unk_ov4_0221A400->unk_10C8 = 1; + } else { + Unk_ov4_0221A400->unk_10C8 = 0; + } + + Unk_ov4_0221A400->unk_1064 = 8; + return DWC_ERROR_NUM; + } + break; + case 9: + Unk_ov4_0221A400->unk_1064 = 4; + Unk_ov4_0221A400->unk_106C = 0; + Unk_ov4_0221A400->unk_108C = -1; + return (DWC_ERROR_NUM)+1; + case 11: + Unk_ov4_0221A400->unk_1064 = 4; + Unk_ov4_0221A400->unk_106C = 0; + Unk_ov4_0221A400->unk_108C = -1; + return (DWC_ERROR_NUM)+2; + case 12: + return ov4_021D1B5C(); + case 16: + if (Unk_ov4_0221A400->unk_1084 == 0) { + DWC_CloseAllConnectionsHard( ); + Unk_ov4_0221A400->unk_1064 = 17; + break; + } + default: + break; + } + + return ov4_021D1D1C(); +} + +BOOL ov4_021D1404 () +{ + return (Unk_ov4_0221A400->unk_106C == 0) && ov4_021D1C5C(); +} + +int ov4_021D142C (void * param0, int param1) +{ + if (!(param1 < 256)) { + return 0; + } + + if (DWC_GetMyAID() == 0) { + if (Unk_ov4_0221A400->unk_F98 != NULL) { + Unk_ov4_0221A400->unk_F98(0, param0, param1); + } + + return 1; + } else { + if (Unk_ov4_0221A400->unk_106C || !ov4_021D1C5C()) { + return 0; + } + + *((u32 *)&(Unk_ov4_0221A400->unk_00[0])) = 0x1 | (Unk_ov4_0221A400->unk_10C8 << 8); + Unk_ov4_0221A400->unk_00[2] = ++Unk_ov4_0221A400->unk_10D0; + + MI_CpuCopy8(param0, &(Unk_ov4_0221A400->unk_00[4]), param1); + Unk_ov4_0221A400->unk_106C = 1; + + DWC_SendReliableBitmap(0x1, &(Unk_ov4_0221A400->unk_00[0]), param1 + 4); + + return 1; + } +} + +int ov4_021D14D4 (void * param0, int param1) +{ + if (!(param1 < 256)) { + return 0; + } + + if (!(DWC_GetMyAID() == 0)) { + return 0; + } + + { + if (Unk_ov4_0221A400->unk_106C || !ov4_021D1C5C()) { + return 0; + } + + *((u32 *)&(Unk_ov4_0221A400->unk_00[0])) = 0x1 | (Unk_ov4_0221A400->unk_10C8 << 8); + Unk_ov4_0221A400->unk_00[2] = ++Unk_ov4_0221A400->unk_10D0; + MI_CpuCopy8(param0, &(Unk_ov4_0221A400->unk_00[4]), param1); + Unk_ov4_0221A400->unk_106C = 1; + + if (!DWC_SendReliableBitmap(DWC_GetAIDBitmap(), &(Unk_ov4_0221A400->unk_00[0]), param1 + 4)) { + Unk_ov4_0221A400->unk_106C = 0; + return 0; + } + } + + if (Unk_ov4_0221A400->unk_F9C != NULL) { + Unk_ov4_0221A400->unk_F9C(0, param0, param1); + } + + return 1; +} + +int ov4_021D1590 (void * param0, int param1) +{ + u16 v0; + + if (!(param1 < 256)) { + return 0; + } + + { + if (Unk_ov4_0221A400->unk_106C || !ov4_021D1C5C()) { + return 0; + } + + *((u32 *)&(Unk_ov4_0221A400->unk_00[0])) = 0x1 | (Unk_ov4_0221A400->unk_10C8 << 8); + Unk_ov4_0221A400->unk_00[2] = ++Unk_ov4_0221A400->unk_10D0; + MI_CpuCopy8(param0, &(Unk_ov4_0221A400->unk_00[4]), param1); + Unk_ov4_0221A400->unk_106C = 1; + + v0 = DWC_GetAIDBitmap(); + + if (v0 != DWC_SendReliableBitmap(v0, &(Unk_ov4_0221A400->unk_00[0]), param1 + 4)) { + Unk_ov4_0221A400->unk_106C = 0; + return 0; + } + } + + { + if (Unk_ov4_0221A400->unk_F9C != NULL) { + Unk_ov4_0221A400->unk_F9C(DWC_GetMyAID(), param0, param1); + } + } + + return 1; +} + +static void ov4_021D1650 (DWCError param0, int param1, void * param2) +{ + BOOL v0; + + if (DWC_CheckDirtyFlag((Unk_ov4_0221A400->unk_F08))) { + DWCUserData * v1 = NULL; + + DWC_ClearDirtyFlag(Unk_ov4_0221A400->unk_F08); + Unk_ov4_0221A400->unk_10DA = 1; + } + + if (param0 == DWC_ERROR_NONE) { + v0 = DWC_UpdateServersAsync(NULL, ov4_021D171C, Unk_ov4_0221A400->unk_F08, ov4_021D1740, param2, ov4_021D1744, param2); + + if (v0 == 0) { + sub_02038AE0(1); + return; + } + + DWC_SetBuddyFriendCallback(ov4_021D17A0, NULL); + } else { + Unk_ov4_0221A400->unk_1064 = 12; + } +} + +static void ov4_021D16E8 (u8 param0) +{ + if (Unk_ov4_0221A400->unk_109C) { + DWC_CloseAllConnectionsHard( ); + Unk_ov4_0221A400->unk_108C = -1; + Unk_ov4_0221A400->unk_1064 = 18; + } +} + +static void ov4_021D171C (DWCError param0, BOOL param1, void * param2) +{ +#pragma unused(param2) + if (param0 == DWC_ERROR_NONE) { + if (param1) { + (void)0; + } + + Unk_ov4_0221A400->unk_1064 = 4; + } else { + Unk_ov4_0221A400->unk_1064 = 12; + } +} + +static void ov4_021D1740 (int param0, u8 param1, const char * param2, void * param3) +{ +#pragma unused(param3) + return; +} + +static void ov4_021D1744 (int param0, int param1, void * param2) +{ +#pragma unused(param2) + + MI_CpuCopy8(Unk_ov4_0221A400->unk_100, sub_0202AED8(sub_0202B370(Unk_ov4_0221A400->unk_F6C), 0), 32 * sizeof(DWCFriendData)); + + sub_0202B270(sub_0202B370(Unk_ov4_0221A400->unk_F6C), param0, param1); + sub_020307F0(sub_0203068C(Unk_ov4_0221A400->unk_F6C), param0, param1); +} + +static void ov4_021D17A0 (int param0, void * param1) +{ +#pragma unused(param1) + return; +} + +static void ov4_021D17A4 (void) +{ + MI_CpuClear8(Unk_ov4_0221A400->unk_10A0, sizeof(Unk_ov4_0221A400->unk_10A0)); +} + +static void ov4_021D17C0 (void) +{ + int v0; + + for (v0 = 0; v0 < 3 + 1; v0++) { + DWC_SetRecvTimeoutTime(v0, 0); + } + + if (DWC_GetMyAID() == 0) { + for (v0 = 0; v0 < Unk_ov4_0221A400->unk_1070; v0++) { + if (DWC_GetMyAID() != v0) { + if (DWC_GetAIDBitmap() & (0x1 << v0)) { + GF_ASSERT(DWC_SetRecvTimeoutTime(v0, 10 * 1000)); + } + } + } + } else { + GF_ASSERT(DWC_SetRecvTimeoutTime(0, 10 * 1000)); + } + + Unk_ov4_0221A400->unk_109C = 1; + ov4_021D17A4(); +} + +static void ov4_021D1854 (int param0) +{ + int v0, v1; + + Unk_ov4_0221A400->unk_1064 = 7; + + for (v0 = 0, v1 = 0; v0 < Unk_ov4_0221A400->unk_1070; v0++) { + if (DWC_GetMyAID() != v0) { + ov4_021D2748(v0); + } + } + + ov4_021D17C0(); +} + +static void ov4_021D1898 (DWCError param0, BOOL param1, void * param2) +{ +#pragma unused(param2) + + if (param0 == DWC_ERROR_NONE) { + if (!param1) { + ov4_021D1854(1 - DWC_GetMyAID()); + } else { + ov4_021D12B4(); + } + } else { + Unk_ov4_0221A400->unk_1064 = 12; + } + + if (Unk_ov4_0221A400->unk_FA8) { + Unk_ov4_0221A400->unk_FA8(DWC_GetMyAID(), Unk_ov4_0221A400->unk_FAC); + } +} + +static int ov4_021D18F0 (int param0, void * param1) +{ +#pragma unused(param0,param1) + return 1; +} + +static void ov4_021D18F4 (int param0, u8 param1) +{ +#pragma unused(param0) + Unk_ov4_0221A400->unk_106C = 0; + Unk_ov4_0221A400->unk_10A0[param1] = 0; +} + +static void ov4_021D1918 (u32 param0) +{ + if (!sub_0203272C(sub_0203895C())) { + if (param0 & 0x100) { + Unk_ov4_0221A400->unk_10C4 = 1; + } else { + Unk_ov4_0221A400->unk_10C4 = 0; + } + } +} + +static void ov4_021D1950 (u8 param0, u8 * param1, int param2) +{ +#pragma unused( param0, param1, param2 ) + + u32 v0; + v0 = (param1[3] << 24) | (param1[2] << 16) | (param1[1] << 8) | param1[0]; + + Unk_ov4_0221A400->unk_109C = 1; + + if ((v0 & 0xff) == 0x1) { + ov4_021D1918(v0); + Unk_ov4_0221A400->unk_10D1 = param1[2]; + } else { + if (ov4_021D2C70(param0, param1, param2)) { + return; + } + + ov4_021D1918(v0); + return; + } + + { + u16 * v1 = (u16 *)ov4_021D1AA0(NULL, param2 - 4, 4); + + if (v1 == NULL) { + return; + } + + MI_CpuCopy8(param1 + 4, (void *)v1, param2 - 4); + + if (DWC_GetMyAID() == 0) { + if (Unk_ov4_0221A400->unk_F98 != NULL) { + Unk_ov4_0221A400->unk_F98(param0, v1, param2 - 4); + } + } else { + if (Unk_ov4_0221A400->unk_F9C != NULL) { + Unk_ov4_0221A400->unk_F9C(param0, v1, param2 - 4); + } + } + + ov4_021D1B04(NULL, v1, param2 - 4); + } +} + +static void ov4_021D1A20 (DWCError param0, BOOL param1, BOOL param2, u8 param3, int param4, void * param5) +{ +#pragma unused(param5, param4) + + Unk_ov4_0221A400->unk_106C = 0; + Unk_ov4_0221A400->unk_10C0 = 0; + Unk_ov4_0221A400->unk_1094 = 0; + + if (param0 == DWC_ERROR_NONE) { + if (((Unk_ov4_0221A400->unk_10D9 == 1) && (DWC_GetNumConnectionHost() == 1))) { + if (Unk_ov4_0221A400->unk_1064 == 6) { + (void)0; + } else { + Unk_ov4_0221A400->unk_1064 = 16; + } + + if (Unk_ov4_0221A400->unk_1084) { + ov4_021D1F18(); + } + } + + if (param1) { + (void)0; + } else { + (void)0; + } + } else { + (void)0; + } + + if (Unk_ov4_0221A400->unk_FA0) { + Unk_ov4_0221A400->unk_FA0(param3, Unk_ov4_0221A400->unk_FA4); + } +} + +void * ov4_021D1AA0 (DWCAllocType param0, u32 param1, int param2) +{ +#pragma unused( param0 ) + void * v0; + OSIntrMode v1; + + v1 = OS_DisableInterrupts(); + v0 = NNS_FndAllocFromExpHeapEx(Unk_ov4_0221A400->unk_F88, param1, param2); + + if (v0 == NULL) { + if (Unk_ov4_0221A400->unk_F8C != NULL) { + v0 = NNS_FndAllocFromExpHeapEx(Unk_ov4_0221A400->unk_F90, param1, param2); + } + } + + if (v0 == NULL) { + sub_02038AE0(1); + OS_RestoreInterrupts(v1); + + return NULL; + } + + OS_RestoreInterrupts(v1); + + return v0; +} + +void ov4_021D1B04 (DWCAllocType param0, void * param1, u32 param2) +{ +#pragma unused( param0, param2 ) + OSIntrMode v0; + u16 v1; + + if (!param1) { + return; + } + + v0 = OS_DisableInterrupts(); + v1 = NNS_FndGetGroupIDForMBlockExpHeap(param1); + + if (v1 == 16) { + if (Unk_ov4_0221A400->unk_F8C == NULL) { + sub_02038AE0(1); + return; + } + + NNS_FndFreeToExpHeap(Unk_ov4_0221A400->unk_F90, param1); + } else { + NNS_FndFreeToExpHeap(Unk_ov4_0221A400->unk_F88, param1); + } + + OS_RestoreInterrupts(v0); +} + +int ov4_021D1B5C (void) +{ + int v0; + DWCErrorType v1; + int v2; + int v3 = 0; + + v2 = DWC_GetLastErrorEx(&v0, &v1); + + if (v2 != 0) { + v3 = v0; + + if ((v0 == 0) || (v1 == DWC_ETYPE_LIGHT)) { + v3 = v2; + } + + switch (v1) { + case DWC_ETYPE_LIGHT: + DWC_ClearError(); + break; + case DWC_ETYPE_SHOW_ERROR: + DWC_ClearError(); + break; + case DWC_ETYPE_SHUTDOWN_FM: + case DWC_ETYPE_SHUTDOWN_GHTTP: + case DWC_ETYPE_SHUTDOWN_ND: + case DWC_ETYPE_DISCONNECT: + if (Unk_ov4_0221A400) { + switch (Unk_ov4_0221A400->unk_1064) { + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + case 12: + case 18: + case 16: + case 17: + DWC_ShutdownFriendsMatch( ); + case 0: + case 1: + case 2: + if (sub_0203895C() != 33) { + DWC_CleanupInet( ); + } + } + + DWC_ClearError(); + } + + if (Unk_ov4_0221A400) { + Unk_ov4_0221A400->unk_1064 = 14; + } + break; + case DWC_ETYPE_FATAL: + if (Unk_ov4_0221A400) { + Unk_ov4_0221A400->unk_1064 = 15; + + if (Unk_ov4_0221A400->unk_FB4 != NULL) { + Unk_ov4_0221A400->unk_FB4(-v0); + } + } + break; + } + } + + if (Unk_ov4_0221A400->unk_10D2) { + v3 = ((DWC_ERROR_NUM)+6); + } + + if (v2 != 0) { + sub_02037F94(v0, v1, v2); + } + + return v3; +} + +static BOOL ov4_021D1C5C (void) +{ + int v0; + BOOL v1 = 0; + + for (v0 = 0; v0 < Unk_ov4_0221A400->unk_1070; v0++) { + if (DWC_GetMyAID() == v0) { + continue; + } + + if (DWC_IsValidAID(v0)) { + v1 = 1; + + if (!DWC_IsSendableReliable(v0)) { + return 0; + } + } + } + + return v1; +} + +static BOOL ov4_021D1CAC (int param0) +{ + if ((Unk_ov4_0221A400->unk_106C == 0) && ov4_021D1C5C() && (0xfffe & DWC_GetAIDBitmap())) { + Unk_ov4_0221A400->unk_106C = 1; + *((u32 *)&(Unk_ov4_0221A400->unk_00[0])) = 0x2 | (Unk_ov4_0221A400->unk_10C8 << 8); + + DWC_SendReliableBitmap(DWC_GetAIDBitmap(), &(Unk_ov4_0221A400->unk_00[0]), 4); + + Unk_ov4_0221A400->unk_10A0[param0] = 0; + + return 1; + } + + return 0; +} + +static int ov4_021D1D1C (void) +{ + int v0, v1; + + DWC_ProcessFriendsMatch(); + ov4_021D21B4(); + + if (Unk_ov4_0221A400->unk_1084) { + if ((Unk_ov4_0221A400->unk_10C8 == 1) && (Unk_ov4_0221A400->unk_10C4 == 1) && (Unk_ov4_0221A400->unk_10CA == 1)) { + ov4_021D2FB8(); + } else { + ov4_021D2FA4(); + } + + ov4_021D2B28(); + + if (Unk_ov4_0221A400->unk_1074 != DWC_GetAIDBitmap()) { + if (!Unk_ov4_0221A400->unk_10D3 && Unk_ov4_0221A400->unk_1090) { + if (ov4_021D2FCC(DWC_GetAIDBitmap(), DWC_GetMyAID())) { + Unk_ov4_0221A400->unk_1074 = DWC_GetAIDBitmap(); + } + } + } + } + + if (Unk_ov4_0221A400->unk_1064 == 18) { + v1 = ov4_021D1B5C(); + + if (v1 != 0) { + return v1; + } + + return (DWC_ERROR_NUM)+3; + } + + if (Unk_ov4_0221A400->unk_1064 == 17) { + return (DWC_ERROR_NUM)+4; + } + + if ((Unk_ov4_0221A400->unk_1064 == 7) || (Unk_ov4_0221A400->unk_1064 == 8)) { + for (v0 = 0; v0 < Unk_ov4_0221A400->unk_1070; v0++) { + if ((Unk_ov4_0221A400->unk_10A0[v0]++ >= 120) && (Unk_ov4_0221A400->unk_106C == 0)) { + if (ov4_021D1CAC(v0)) { + ov4_021D17A4(); + break; + } + } + } + } + + return ov4_021D1B5C(); +} + +int ov4_021D1E30 () +{ + if (Unk_ov4_0221A400) { + if ((Unk_ov4_0221A400->unk_1064 == 7) || (Unk_ov4_0221A400->unk_1064 == 8) || (Unk_ov4_0221A400->unk_1064 == 16)) { + return DWC_GetMyAID(); + } + } + + return -1; +} + +static void ov4_021D1E60 () +{ + Unk_ov4_0221A400->unk_1084 = 0; +} + +void ov4_021D1E74 (int param0) +{ + int v0; + int v1 = 1; + BOOL v2 = sub_0203272C(sub_0203895C()); + + if (v2) { + v1 = sub_02035E18() - 1; + + if (v1 < 1) { + v1 = 1; + } + + Unk_ov4_0221A400->unk_10C8 = 1; + Unk_ov4_0221A400->unk_10C4 = 1; + Unk_ov4_0221A400->unk_10CA = 1; + } + + if (Unk_ov4_0221A400->unk_1084 == 0) { + switch (Unk_ov4_0221A400->unk_1098) { + case 2: + v0 = VCT_CODEC_G711_ULAW; + break; + case 3: + v0 = VCT_CODEC_2BIT_ADPCM; + break; + case 4: + v0 = VCT_CODEC_3BIT_ADPCM; + break; + case 5: + v0 = VCT_CODEC_4BIT_ADPCM; + break; + default: + if (!v2) { + v0 = VCT_CODEC_4BIT_ADPCM; + } else { + v0 = VCT_CODEC_3BIT_ADPCM; + } + break; + } + + ov4_021D2CC0(param0, v0, v1); + ov4_021D2EF4(ov4_021D1E60); + + Unk_ov4_0221A400->unk_1084 = 1; + } +} + +void ov4_021D1F18 (void) +{ + ov4_021D2F08(); + + if (Unk_ov4_0221A400 != NULL) { + Unk_ov4_0221A400->unk_1084 = 0; + Unk_ov4_0221A400->unk_1074 = 0; + } +} + +int ov4_021D1F3C (int param0, int param1) +{ + int v0 = param0 / 100; + int v1 = param0 / 1000; + + if (param0 == 20101) { + return 1; + } + + if (v1 == 23) { + return 1; + } + + if (param0 == 20108) { + return 2; + } + + if (param0 == 20110) { + return 3; + } + + if (v0 == 512) { + return 4; + } + + if (v0 == 500) { + return 5; + } + + if (param0 == 51103) { + return 7; + } + + if (v0 == 510) { + return 6; + } + + if (v0 == 511) { + return 6; + } + + if (v0 == 513) { + return 6; + } + + if ((param0 >= 52000) && (param0 <= 52003)) { + return 8; + } + + if ((param0 >= 52100) && (param0 <= 52103)) { + return 8; + } + + if ((param0 >= 52200) && (param0 <= 52203)) { + return 8; + } + + if (param0 == 80430) { + return 9; + } + + if (v1 == 20) { + return 0; + } + + if (v0 == 520) { + return 0; + } + + if (v0 == 521) { + return 0; + } + + if (v0 == 522) { + return 0; + } + + if (v0 == 523) { + return 0; + } + + if (v0 == 530) { + return 0; + } + + if (v0 == 531) { + return 0; + } + + if (v0 == 532) { + return 0; + } + + if (param0 < 10000) { + return 14; + } + + if (v1 == 31) { + return 12; + } + + switch (param1) { + case DWC_ETYPE_NO_ERROR: + case DWC_ETYPE_LIGHT: + case DWC_ETYPE_SHOW_ERROR: + return 11; + case DWC_ETYPE_SHUTDOWN_FM: + case DWC_ETYPE_SHUTDOWN_GHTTP: + case DWC_ETYPE_SHUTDOWN_ND: + case DWC_ETYPE_DISCONNECT: + return 10; + default: + GF_ASSERT(0); + break; + case DWC_ETYPE_FATAL: + return 15; + } + + return -1; +} + +int ov4_021D20B0 (int param0) +{ + if (param0 == 0) { + switch (Unk_ov4_0221A400->unk_1064) { + case 5: + case 7: + case 8: + if (Unk_ov4_0221A400->unk_1084) { + ov4_021D2EA4(); + } + + Unk_ov4_0221A400->unk_1064 = 16; + break; + case 4: + case 14: + case 17: + case 18: + return 1; + } + } else { + switch (Unk_ov4_0221A400->unk_1064) { + case 4: + case 17: + case 18: + return 1; + } + } + + return 0; +} + +int ov4_021D2134 () +{ + if ((Unk_ov4_0221A400->unk_1064 == 17) || (Unk_ov4_0221A400->unk_1064 == 18) || (Unk_ov4_0221A400->unk_1064 == 4)) { + Unk_ov4_0221A400->unk_1064 = 4; + Unk_ov4_0221A400->unk_108C = -1; + ov4_021D25FC(); + return 1; + } + + return 0; +} + +void ov4_021D2170 (void (* func)(int)) +{ + if (Unk_ov4_0221A400) { + Unk_ov4_0221A400->unk_FB4 = func; + } +} + +void ov4_021D2184 (void) +{ + DWC_ShutdownFriendsMatch(); + DWC_CleanupInet(); + + ov4_021D1F18(); + ov4_021D0F68(); +} + +void ov4_021D2198 (void * param0, int param1) +{ + Unk_ov4_0221A400->unk_1058 = param0; + Unk_ov4_0221A400->unk_105C = param1; +} + +static void ov4_021D21B4 (void) +{ + int v0; + + if (Unk_ov4_0221A400->unk_1058 == NULL) { + return; + } + + for (v0 = 0; v0 < 1; v0++) { + int v1 = Unk_ov4_0221A400->unk_1060 % 32; + int v2; + + if (DWC_IsBuddyFriendData(&(Unk_ov4_0221A400->unk_100[v1]))) { + Unk_ov4_0221A400->unk_1038[v1] = DWC_GetFriendStatusData(&Unk_ov4_0221A400->unk_100[v1], (void *)(((u32)Unk_ov4_0221A400->unk_1058) + Unk_ov4_0221A400->unk_105C * v1), &v2); + + if (v2 > Unk_ov4_0221A400->unk_105C) { + (void)0; + } + } + + Unk_ov4_0221A400->unk_1060 = (Unk_ov4_0221A400->unk_1060 + 1) % 32; + } +} + +BOOL ov4_021D222C (const void * param0, int param1) +{ + return DWC_SetOwnStatusData(param0, param1); +} + +u8 ov4_021D2234 (int param0) +{ + return Unk_ov4_0221A400->unk_1038[param0]; +} + +int ov4_021D2248 (int param0, int param1, BOOL param2) +{ + int v0, v1 = param1; + + if (ov4_021D27E0()) { + return -4; + } + + if (Unk_ov4_0221A400->unk_1064 != 4) { + Unk_ov4_0221A400->unk_10C0++; + + if (Unk_ov4_0221A400->unk_10C0 > 120) { + return -3; + } + + return -1; + } + + ov4_021D27CC(); + + Unk_ov4_0221A400->unk_10CC = 0; + Unk_ov4_0221A400->unk_10D9 = 1; + Unk_ov4_0221A400->unk_1088 = param0; + Unk_ov4_0221A400->unk_1070 = param1; + + if (param2) { + v1 = 2; + } + + Unk_ov4_0221A400->unk_1094 = 1; + + if (param0 < 0) { + v0 = DWC_SetupGameServer((u8)v1, ov4_021D23A4, NULL, ov4_021D24AC, NULL); + Unk_ov4_0221A400->unk_1068 = 1; + } else { + v0 = DWC_ConnectToGameServerAsync(param0, ov4_021D2488, NULL, ov4_021D24AC, NULL); + Unk_ov4_0221A400->unk_1068 = 2; + } + + if (!v0) { + Unk_ov4_0221A400->unk_10C0++; + + if (Unk_ov4_0221A400->unk_10C0 > 120) { + return -3; + } + + return -2; + } + + Unk_ov4_0221A400->unk_10C0 = 0; + Unk_ov4_0221A400->unk_1064 = 5; + + DWC_SetUserSendCallback(ov4_021D18F4); + DWC_SetUserRecvCallback(ov4_021D1950); + DWC_SetConnectionClosedCallback(ov4_021D1A20, NULL); + DWC_SetUserRecvTimeoutCallback(ov4_021D16E8); + + Unk_ov4_0221A400->unk_106C = 0; + + return 0; +} + +int ov4_021D2388 () +{ + if (Unk_ov4_0221A400) { + return Unk_ov4_0221A400->unk_1088; + } + + return -1; +} + +static void ov4_021D23A4 (DWCError param0, BOOL param1, BOOL param2, BOOL param3, int param4, void * param5) +{ +#pragma unused(param3, param5) + BOOL v0 = 0; + + Unk_ov4_0221A400->unk_1094 = 0; + + if (param0 == DWC_ERROR_NONE) { + if (!param1) { + if (sub_02032740(sub_0203895C()) && (param4 == -1)) { + v0 = 1; + } + + if (Unk_ov4_0221A400->unk_FB0) { + if (0 == Unk_ov4_0221A400->unk_FB0(param4)) { + v0 = 1; + } + } + + if (Unk_ov4_0221A400->unk_10D4 || v0) { + u32 v1 = ~Unk_ov4_0221A400->unk_10CC & DWC_GetAIDBitmap(); + u32 v2 = DWC_GetAIDBitmap(); + + if (v1) { + DWC_CloseConnectionHardBitmap(&v1); + + if ((v1 ^ v2) == 0x1) { + Unk_ov4_0221A400->unk_1064 = 6; + } + + return; + } + } + + Unk_ov4_0221A400->unk_1088 = param4; + Unk_ov4_0221A400->unk_10CC = DWC_GetAIDBitmap(); + + if (Unk_ov4_0221A400->unk_10CC == 0x1) { + Unk_ov4_0221A400->unk_1064 = 6; + } else { + ov4_021D1854(param4); + } + } else { + if (param2) { + (void)0; + } else { + Unk_ov4_0221A400->unk_108C = -1; + } + } + } else { + (void)0; + } +} + +static void ov4_021D2488 (DWCError param0, BOOL param1, BOOL param2, BOOL param3, int param4, void * param5) +{ +#pragma unused(param5) + Unk_ov4_0221A400->unk_1094 = 0; + + if (param0 == DWC_ERROR_NONE) { + if (!param1) { + if (param2) { + (void)0; + } else { + (void)0; + } + + ov4_021D1854(param4); + } else { + if (param2) { + (void)0; + } else { + if (param3) { + (void)0; + } else { + (void)0; + } + } + } + } +} + +static void ov4_021D24AC (int param0, void * param1) +{ +#pragma unused(param1) + + Unk_ov4_0221A400->unk_108C = param0; + + if (param0 != -1) { + (void)0; + } else { + (void)0; + } + + if (Unk_ov4_0221A400->unk_FA8) { + Unk_ov4_0221A400->unk_FA8(param0, Unk_ov4_0221A400->unk_FAC); + } +} + +void ov4_021D24D8 () +{ + int v0; + + if (!DWC_CheckHasProfile(Unk_ov4_0221A400->unk_F08)) { + DWCFriendData v1; + u32 * v2; + + DWC_CreateExchangeToken(Unk_ov4_0221A400->unk_F08, &v1); + v2 = (u32 *)&v1; + } else { + DWCFriendData v3; + + DWC_CreateExchangeToken(Unk_ov4_0221A400->unk_F08, &v3); + } + + for (v0 = 0; v0 < 32; v0++) { + int v4 = DWC_GetFriendDataType(&(Unk_ov4_0221A400->unk_100[v0])); + u32 * v5 = (u32 *)(&Unk_ov4_0221A400->unk_100[v0]); + + switch (v4) { + case DWC_FRIENDDATA_LOGIN_ID: + break; + case DWC_FRIENDDATA_FRIEND_KEY: + break; + case DWC_FRIENDDATA_GS_PROFILE_ID: + break; + case DWC_FRIENDDATA_NODATA: + default: + break; + } + + if (DWC_IsBuddyFriendData(&(Unk_ov4_0221A400->unk_100[v0]))) { + (void)0; + } + } +} + +BOOL ov4_021D2544 (void) +{ + return ov4_021D2F7C(); +} + +BOOL ov4_021D254C (void) +{ + if (Unk_ov4_0221A400) { + return Unk_ov4_0221A400->unk_1090; + } + + return 0; +} + +BOOL ov4_021D2568 (void) +{ + if (Unk_ov4_0221A400) { + return Unk_ov4_0221A400->unk_108C; + } + + return 0; +} + +void ov4_021D2584 (BOOL param0) +{ + Unk_ov4_0221A400->unk_1090 = param0; +} + +static void sendPacket () +{ + int v0; + + if (Unk_ov4_0221A400->unk_106C || !ov4_021D1C5C()) { + Unk_ov4_0221A400->unk_106C = 1; + *((u32 *)&(Unk_ov4_0221A400->unk_00[0])) = 0x2 | (Unk_ov4_0221A400->unk_10C8 << 8); + + DWC_SendReliableBitmap(DWC_GetAIDBitmap(), &(Unk_ov4_0221A400->unk_00[0]), 4); + ov4_021D17A4(); + } +} + +void ov4_021D2598 (BOOL param0) +{ + Unk_ov4_0221A400->unk_10CA = param0; +} + +static void ov4_021D25AC (void * param0) +{ + Unk_ov4_0221A400->unk_10D4 = 2; +} + +int ov4_021D25C0 (void) +{ + if (Unk_ov4_0221A400->unk_10D4 == 0) { + Unk_ov4_0221A400->unk_10D4 = 1; + DWC_StopSCMatchingAsync(ov4_021D25AC, NULL); + } + + return Unk_ov4_0221A400->unk_10D4 == 2; +} + +void ov4_021D25FC (void) +{ + Unk_ov4_0221A400->unk_10D4 = 0; +} + +int ov4_021D2610 (void) +{ + return DWC_GetNumConnectionHost(); +} + +void ov4_021D2618 (BOOL param0, int param1) +{ + if (param0) { + Unk_ov4_0221A400->unk_107C = 11; + + if (Unk_ov4_0221A400->unk_F8C == NULL) { + Unk_ov4_0221A400->unk_F8C = sub_02018144(param1, 0xf000 + 32); + Unk_ov4_0221A400->unk_F90 = NNS_FndCreateExpHeap((void *)(((u32)Unk_ov4_0221A400->unk_F8C + 31) / 32 * 32), 0xf000); + NNS_FndSetGroupIDForExpHeap(Unk_ov4_0221A400->unk_F90, 16); + Unk_ov4_0221A400->unk_F94 = NNS_FndGetTotalFreeSizeForExpHeap(Unk_ov4_0221A400->unk_F90); + } + } else { + Unk_ov4_0221A400->unk_107C = Unk_ov4_0221A400->unk_1078; + + if (Unk_ov4_0221A400->unk_F8C != NULL) { + if (NNS_FndGetTotalFreeSizeForExpHeap(Unk_ov4_0221A400->unk_F90) != Unk_ov4_0221A400->unk_F94) { + sub_02038AE0(1); + return; + } + + NNS_FndDestroyExpHeap(Unk_ov4_0221A400->unk_F90); + sub_020181C4(Unk_ov4_0221A400->unk_F8C); + + Unk_ov4_0221A400->unk_F8C = NULL; + } + } +} + +void ov4_021D26EC (BOOL param0) +{ + Unk_ov4_0221A400->unk_10D9 = param0; +} + +void ov4_021D2700 (int param0) +{ + if (Unk_ov4_0221A400->unk_F74[param0] != NULL) { + if (Unk_ov4_0221A400->unk_10D5[param0] == 1) { + sub_020181C4(Unk_ov4_0221A400->unk_F74[param0]); + } else { + ov4_021D1B04(0, Unk_ov4_0221A400->unk_F74[param0], 0); + } + + Unk_ov4_0221A400->unk_F74[param0] = NULL; + } +} + +void ov4_021D2748 (int param0) +{ + ov4_021D2700(param0); + + if (Unk_ov4_0221A400->unk_F74[param0] == NULL) { + if (Unk_ov4_0221A400->unk_107C == 11) { + Unk_ov4_0221A400->unk_F74[param0] = sub_02018144(Unk_ov4_0221A400->unk_107C, (4 * 1024) + 32); + Unk_ov4_0221A400->unk_10D5[param0] = 1; + } else { + Unk_ov4_0221A400->unk_F74[param0] = ov4_021D1AA0(0, (4 * 1024), 32); + Unk_ov4_0221A400->unk_10D5[param0] = 0; + } + + DWC_SetRecvBuffer(param0, (u8 *)(((u32)Unk_ov4_0221A400->unk_F74[param0] + 31) / 32 * 32), (4 * 1024)); + } +} + +void ov4_021D27CC (void) +{ + int v0; + + for (v0 = 0; v0 < 3 + 1; v0++) { + ov4_021D2700(v0); + } +} + +u8 ov4_021D27E0 (void) +{ + return Unk_ov4_0221A400->unk_10DA; +} + +void ov4_021D27F4 (void) +{ + Unk_ov4_0221A400->unk_10DA = 0; +} diff --git a/src/overlay004/ov4_021D2808.c b/src/overlay004/ov4_021D2808.c new file mode 100644 index 0000000000..e7cdcb5e01 --- /dev/null +++ b/src/overlay004/ov4_021D2808.c @@ -0,0 +1,589 @@ +#include +#include +#include +#include + +#include "unk_02017E74.h" +#include "unk_0203266C.h" +#include "unk_020366A0.h" +#include "overlay004/ov4_021D0D80.h" +#include "overlay004/ov4_021D2808.h" + +typedef struct { + u8 unk_00[2176]; + void * unk_880; + u8 * unk_884; + u8 * unk_888; + u8 unk_88C[2176]; + u8 unk_110C[2176]; + void (* unk_198C)(void); + VCTSession unk_1990[3]; + BOOL unk_19D8[4]; + int unk_19E8; + int unk_19EC; + int unk_19F0; + int unk_19F4; + struct NNSSndStrm unk_19F8; + VCTSession * unk_1A54; + u8 unk_1A58; + u8 unk_1A59; + u16 unk_1A5A; + MICAutoParam unk_1A5C; + int unk_1A78; + int unk_1A7C; + int unk_1A80; + int unk_1A84; + int unk_1A88; + u16 unk_1A8C[16]; + int unk_1AAC; +} UnkStruct_ov4_0221A408; + +static void ov4_021D2E8C(void); +static void ov4_021D2B04(VCTSession * param0); + +static UnkStruct_ov4_0221A408 * Unk_ov4_0221A408 = NULL; +static OSTick Unk_ov4_0221A40C; +static int Unk_ov4_0221A404 = 0; + +static void ov4_021D2808 (void) +{ + MIC_Init(); + PM_Init(); + + { + u32 v0; + + v0 = PM_SetAmp(PM_AMP_ON); + + if (v0 == PM_RESULT_SUCCESS) { + (void)0; + } else { + (void)0; + } + } + + { + u32 v1; + + v1 = PM_SetAmpGain(PM_AMPGAIN_160); + + if (v1 == PM_RESULT_SUCCESS) { + (void)0; + } else { + (void)0; + } + } + + Unk_ov4_0221A408->unk_1A78 = 0; + Unk_ov4_0221A408->unk_1A84 = 0; + Unk_ov4_0221A408->unk_1A7C = 0; + Unk_ov4_0221A408->unk_1A80 = 0; + Unk_ov4_0221A408->unk_1A88 = 0; + + { + int v2; + + for (v2 = 0; v2 < 16; v2++) { + Unk_ov4_0221A408->unk_1A8C[v2] = 0; + } + + Unk_ov4_0221A408->unk_1AAC = 0; + } + + VCT_EnableVAD(1); + + NNS_SndInit(); + NNS_SndStrmInit(&Unk_ov4_0221A408->unk_19F8); + MI_CpuClearFast(Unk_ov4_0221A408->unk_110C, sizeof(Unk_ov4_0221A408->unk_110C)); + + Unk_ov4_0221A404 = 0; + + VCT_EnableEchoCancel(1); +} + +static void ov4_021D28B0 (MICResult param0, void * param1) +{ +#pragma unused(param0, param1) + return; +} + +static void ov4_021D28B4 (NNSSndStrmCallbackStatus param0, int param1, void * param2[], u32 param3, NNSSndStrmFormat param4, void * param5) +{ +#pragma unused(param4) + + OSTick v0; + const void * v1; + u32 v2; + u8 * v3; + u32 v4; + + v3 = (u8 *)param5; + + if (param0 == NNS_SND_STRM_CALLBACK_SETUP) { + for (v4 = 0; v4 < param1; ++v4) { + MI_CpuClear8(param2[v4], param3); + } + + return; + } + + if (Unk_ov4_0221A408->unk_1A59) { + MIC_StartAutoSamplingAsync(&(Unk_ov4_0221A408->unk_1A5C), ov4_021D28B0, NULL); + Unk_ov4_0221A408->unk_1A59 = 0; + } + + v1 = MIC_GetLastSamplingAddress(); + v2 = (u32)((u8 *)v1 - v3); + + if (v2 < param3) { + v3 = v3 + param3; + } + + if (PAD_DetectFold()) { + v3 = Unk_ov4_0221A408->unk_110C; + } + + if (Unk_ov4_0221A408->unk_19F0 == 0) { + VCT_SendAudio(v3, param3); + } else { + (void)0; + } + + for (v4 = 0; v4 < param1; ++v4) { + if (!VCT_ReceiveAudio(param2[v4], param3, NULL)) { + (void)0; + } + } + + Unk_ov4_0221A408->unk_1A58 = 2; + return; +} + +static int ov4_021D2974 (u8 param0) +{ + BOOL v0; + VCTSession * v1; + + if (Unk_ov4_0221A408->unk_1A54 == NULL) { + v1 = VCT_CreateSession(param0); + + if (v1 == NULL) { + return 0; + } + + v0 = VCT_Request(v1, VCT_REQUEST_INVITE); + } else { + v1 = Unk_ov4_0221A408->unk_1A54; + v0 = VCT_Request(v1, VCT_REQUEST_INVITE); + } + + if (v0 != VCT_ERROR_NONE) { + VCT_DeleteSession(v1); + Unk_ov4_0221A408->unk_1A54 = NULL; + return 0; + } else { + Unk_ov4_0221A408->unk_1A54 = v1; + } + + return 1; +} + +static int ov4_021D29C8 (u8 param0) +{ + BOOL v0; + + if ((Unk_ov4_0221A408->unk_1A54 != NULL) && (Unk_ov4_0221A408->unk_1A54->state == VCT_STATE_INCOMING)) { + v0 = VCT_Response(Unk_ov4_0221A408->unk_1A54, VCT_RESPONSE_OK); + + if (v0 != VCT_ERROR_NONE) { + return 0; + } + + if (!VCT_StartStreaming(Unk_ov4_0221A408->unk_1A54)) { + return 0; + } else { + (void)0; + } + + return 1; + } + + return 0; +} + +static void ov4_021D2A10 (u8 param0, VCTEvent param1, VCTSession * param2, void * param3) +{ +#pragma unused(param0, param3) + + switch (param1) { + case VCT_EVENT_DISCONNECTED: + ov4_021D2B04(param2); + break; + case VCT_EVENT_CONNECTED: + VCT_StartStreaming(param2); + break; + case VCT_EVENT_ABORT: + ov4_021D2B04(param2); + break; + default: + break; + } +} + +static void ov4_021D2A38 (u8 param0, VCTEvent param1, VCTSession * param2, void * param3) +{ +#pragma unused(param0, param3) + + int v0; + + switch (param1) { + case VCT_EVENT_INCOMING: + if (Unk_ov4_0221A408->unk_1A54) { + v0 = VCT_Response(param2, VCT_RESPONSE_BUSY_HERE); + VCT_DeleteSession(param2); + break; + } + + Unk_ov4_0221A408->unk_1A54 = param2; + break; + case VCT_EVENT_RESPONDBYE: + v0 = VCT_Response(param2, VCT_RESPONSE_OK); + + if (v0 != VCT_ERROR_NONE) { + (void)0; + } + + ov4_021D2B04(param2); + ov4_021D1F18(); + break; + case VCT_EVENT_DISCONNECTED: + ov4_021D2B04(param2); + ov4_021D1F18(); + break; + case VCT_EVENT_CANCEL: + v0 = VCT_Response(param2, VCT_RESPONSE_TERMINATED); + + if (v0 != VCT_ERROR_NONE) { + (void)0; + } + + ov4_021D2B04(param2); + break; + case VCT_EVENT_CONNECTED: + if (param2->mode != Unk_ov4_0221A408->unk_19E8) { + ov4_021D2B04(param2); + return; + } + + if (VCT_StartStreaming(param2)) { + Unk_ov4_0221A408->unk_19EC = 2; + } else { + (void)0; + } + break; + case VCT_EVENT_REJECT: + ov4_021D2B04(param2); + break; + case VCT_EVENT_BUSY: + case VCT_EVENT_TIMEOUT: + case VCT_EVENT_ABORT: + ov4_021D2B04(param2); + break; + default: + break; + } +} + +static void ov4_021D2B04 (VCTSession * param0) +{ + VCT_StopStreaming(param0); + VCT_DeleteSession(param0); + Unk_ov4_0221A408->unk_1A54 = NULL; +} + +void ov4_021D2B28 (void) +{ + OSTick v0; + + v0 = OS_GetTick(); + + Unk_ov4_0221A404 += OS_TicksToMicroSeconds32(v0 - Unk_ov4_0221A40C) - 1000 * 1000 / 60; + + if (Unk_ov4_0221A404 < -10000) { + Unk_ov4_0221A404 = 0; + } + + Unk_ov4_0221A40C = v0; + VCT_Main(); + + while (Unk_ov4_0221A404 >= 1000 * 1000 / 60) { + VCT_Main(); + Unk_ov4_0221A404 -= 1000 * 1000 / 60; + } + + if (Unk_ov4_0221A408->unk_1A80) { + switch (Unk_ov4_0221A408->unk_1A7C) { + case 0: + PM_SetAmpGain(PM_AMPGAIN_160); + break; + case 1: + PM_SetAmpGain(PM_AMPGAIN_80); + break; + case 2: + PM_SetAmpGain(PM_AMPGAIN_40); + break; + case 3: + PM_SetAmpGain(PM_AMPGAIN_20); + break; + } + + Unk_ov4_0221A408->unk_1A80 = 0; + } + + if (Unk_ov4_0221A408->unk_19E8 != VCT_MODE_CONFERENCE) { + switch (Unk_ov4_0221A408->unk_19EC) { + case 0: + { + if (ov4_021D1E30() == 0) { + if (ov4_021D2974(1)) { + Unk_ov4_0221A408->unk_19EC = 1; + Unk_ov4_0221A408->unk_1A5A = 60; + } + } else if (ov4_021D1E30() == 1) { + if (ov4_021D29C8(0)) { + Unk_ov4_0221A408->unk_19EC = 2; + } + } + break; + } + case 1: + Unk_ov4_0221A408->unk_1A5A--; + + if (Unk_ov4_0221A408->unk_1A5A == 0) { + Unk_ov4_0221A408->unk_19EC = 0; + } + break; + case 2: + break; + } + } +} + +BOOL ov4_021D2C70 (int param0, void * param1, int param2) +{ + if (Unk_ov4_0221A408 == NULL) { + return 0; + } + + if (VCT_HandleData(param0, param1, param2)) { + return 1; + } + + return 0; +} + +static void ov4_021D2C98 (void ** param0, void ** param1, int param2, int param3) +{ + *param0 = sub_02018144(param3, param2 + 32); + MI_CpuClear8(*param0, param2 + 32); + *param1 = (UnkStruct_ov4_0221A408 *)(((u32) * param0 + 31) / 32 * 32); +} + +void ov4_021D2CC0 (int param0, int param1, int param2) +{ + u8 v0[3] = {13, 13, 13}; + u32 v1; + BOOL v2; + int v3; + + if (Unk_ov4_0221A408 == NULL) { + void * v4 = NULL; + + ov4_021D2C98(&v4, (void **)&Unk_ov4_0221A408, sizeof(UnkStruct_ov4_0221A408), param0); + Unk_ov4_0221A408->unk_880 = v4; + ov4_021D2C98((void **)&Unk_ov4_0221A408->unk_888, (void **)&Unk_ov4_0221A408->unk_884, VCT_AUDIO_BUFFER_SIZE * param2 * VCT_DEFAULT_AUDIO_BUFFER_COUNT + 32, param0); + + Unk_ov4_0221A408->unk_19F4 = param0; + Unk_ov4_0221A408->unk_198C = NULL; + + ov4_021D2808(); + } + + v1 = (u32)(8000 * VCT_AUDIO_FRAME_LENGTH * 2) / 1000; + + { + Unk_ov4_0221A408->unk_1A5C.type = MIC_SAMPLING_TYPE_SIGNED_12BIT; + Unk_ov4_0221A408->unk_1A5C.buffer = Unk_ov4_0221A408->unk_00; + Unk_ov4_0221A408->unk_1A5C.size = v1 * 2; + Unk_ov4_0221A408->unk_1A5C.rate = (u32)((NNS_SND_STRM_TIMER_CLOCK / 8000) * 64); + Unk_ov4_0221A408->unk_1A5C.loop_enable = 1; + Unk_ov4_0221A408->unk_1A5C.full_callback = NULL; + Unk_ov4_0221A408->unk_1A5C.full_arg = NULL; + Unk_ov4_0221A408->unk_1A59 = 1; + } + + NNS_SndStrmAllocChannel(&Unk_ov4_0221A408->unk_19F8, 1, v0); + NNS_SndStrmSetVolume(&Unk_ov4_0221A408->unk_19F8, 0); + + v2 = NNS_SndStrmSetup(&Unk_ov4_0221A408->unk_19F8, NNS_SND_STRM_FORMAT_PCM16, Unk_ov4_0221A408->unk_88C, v1 * 2 * 1, NNS_SND_STRM_TIMER_CLOCK / 8000, 2, ov4_021D28B4, Unk_ov4_0221A408->unk_00); + + Unk_ov4_0221A408->unk_19EC = 0; + Unk_ov4_0221A408->unk_1A54 = NULL; + + { + VCTConfig v5; + + if (!sub_0203272C(sub_0203895C())) { + v5.mode = VCT_MODE_PHONE; + } else { + v5.mode = VCT_MODE_CONFERENCE; + } + + Unk_ov4_0221A408->unk_19E8 = v5.mode; + + v5.session = Unk_ov4_0221A408->unk_1990; + v5.numSession = param2; + v5.aid = DWC_GetMyAID(); + + GF_ASSERT((v5.aid != -1)); + + if (Unk_ov4_0221A408->unk_19E8 == VCT_MODE_CONFERENCE) { + v5.callback = ov4_021D2A10; + } else { + v5.callback = ov4_021D2A38; + } + + v5.userData = NULL; + v5.audioBuffer = Unk_ov4_0221A408->unk_884; + v5.audioBufferSize = VCT_AUDIO_BUFFER_SIZE * param2 * VCT_DEFAULT_AUDIO_BUFFER_COUNT + 32; + + if (!VCT_Init(&v5)) { + (void)0; + } + } + + Unk_ov4_0221A408->unk_19F0 = 0; + + VCT_SetCodec(param1); + ov4_021D2E8C(); + VCT_EnableEchoCancel(1); + + return; +} + +static void ov4_021D2E8C (void) +{ + NNS_SndStrmStart(&Unk_ov4_0221A408->unk_19F8); +} + +void ov4_021D2EA4 (void) +{ + int v0; + + if ((Unk_ov4_0221A408->unk_1A54 == NULL) || (Unk_ov4_0221A408->unk_19EC == 0)) { + ov4_021D1F18(); + return; + } + + if (Unk_ov4_0221A408->unk_19EC == 1) { + v0 = VCT_Request(Unk_ov4_0221A408->unk_1A54, VCT_REQUEST_CANCEL); + + if (v0 != VCT_ERROR_NONE) { + ov4_021D1F18(); + return; + } + } + + v0 = VCT_Request(Unk_ov4_0221A408->unk_1A54, VCT_REQUEST_BYE); + + if (v0 != VCT_ERROR_NONE) { + ov4_021D1F18(); + return; + } + + return; +} + +void ov4_021D2EF4 (void (* func)()) +{ + Unk_ov4_0221A408->unk_198C = func; +} + +void ov4_021D2F08 (void) +{ + void (* v0)(void); + + if (Unk_ov4_0221A408 != NULL) { + v0 = Unk_ov4_0221A408->unk_198C; + + (void)MIC_StopAutoSampling(); + NNS_SndStrmStop(&Unk_ov4_0221A408->unk_19F8); + NNS_SndStrmFreeChannel(&Unk_ov4_0221A408->unk_19F8); + + VCT_Cleanup(); + + sub_02018238(Unk_ov4_0221A408->unk_19F4, Unk_ov4_0221A408->unk_888); + sub_02018238(Unk_ov4_0221A408->unk_19F4, Unk_ov4_0221A408->unk_880); + Unk_ov4_0221A408 = NULL; + + if (v0 != NULL) { + v0(); + } + } +} + +BOOL ov4_021D2F7C (void) +{ + if (Unk_ov4_0221A408) { + VCTVADInfo v0; + + VCT_GetVADInfo(&v0); + + if (v0.scale > 2) { + return v0.activity; + } + } + + return 0; +} + +void ov4_021D2FA4 (void) +{ + Unk_ov4_0221A408->unk_19F0 = 1; +} + +void ov4_021D2FB8 (void) +{ + Unk_ov4_0221A408->unk_19F0 = 0; +} + +BOOL ov4_021D2FCC (int param0, int param1) +{ + int v0, v1; + + if (!(Unk_ov4_0221A408) || (Unk_ov4_0221A408->unk_19E8 != VCT_MODE_CONFERENCE)) { + return 0; + } + + for (v0 = 0; v0 < 4; v0++) { + if (v0 == param1) { + continue; + } + + if (param0 & (1 << v0)) { + if (Unk_ov4_0221A408->unk_19D8[v0] == 1) { + continue; + } + + v1 = VCT_AddConferenceClient(v0); + + if (v1 != VCT_ERROR_NONE) { + return 0; + } else { + Unk_ov4_0221A408->unk_19D8[v0] = 1; + } + } + } + + return 1; +}