Match ov4_021D0D80.c and ov4_021D2808.c

This commit is contained in:
Nomura 2022-12-30 11:57:36 +01:00
parent e06d31d00d
commit 239062ea9d
38 changed files with 2739 additions and 5157 deletions

View File

@ -5,5 +5,5 @@
.public OS_InitAlarm
.public OS_DisableInterrupts
.public OS_RestoreInterrupts
.public ov4_021D792C
.public DWC_SetAuthServer
.public ov18_0222F20C

View File

@ -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

View File

@ -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

View File

@ -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

File diff suppressed because it is too large Load Diff

View File

@ -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

File diff suppressed because it is too large Load Diff

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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:

View File

@ -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

View File

@ -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

View File

@ -5,5 +5,5 @@
.public OS_InitAlarm
.public OS_DisableInterrupts
.public OS_RestoreInterrupts
.public ov4_021D792C
.public DWC_SetAuthServer
.public ov18_0222F20C

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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]

View File

@ -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

View File

@ -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]

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

180
lib/include/vct.h Normal file
View File

@ -0,0 +1,180 @@
#ifndef VCT_VOICECHAT_H_
#define VCT_VOICECHAT_H_
#include <nitro/types.h>
#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

View File

@ -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

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,589 @@
#include <nitro.h>
#include <string.h>
#include <vct.h>
#include <dwc.h>
#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;
}