sdk-core
v2026.11.05
PS2 SDK - core tier (build-critical EE/IOP modules)
Toggle main menu visibility
Loading...
Searching...
No Matches
s_w0.c
1
/*
2
# _____ ___ ____ ___ ____
3
# ____| | ____| | | |____|
4
# | ___| |____ ___| ____| | \ PS2DEV Open Source Project.
5
#-----------------------------------------------------------------------
6
# Copyright ps2dev - http://www.ps2dev.org
7
# Licenced under Academic Free License version 2.0
8
# Review ps2sdk README & LICENSE files for further details.
9
*/
10
11
#include "
libspu2_internal.h
"
12
13
unsigned
int
SpuWrite0(
unsigned
int
size)
14
{
15
u32 old_tmode;
16
int
ck_1;
17
int
ck_2;
18
u32 tsa;
19
unsigned
int
written;
20
void (*bk)(void);
21
22
old_tmode = _spu_transMode;
23
bk = 0;
24
ck_1 = 0;
25
if
( _spu_transMode == 1 )
26
{
27
_spu_transMode = 0;
28
ck_1 = 1;
29
}
30
ck_2 = 1;
31
tsa = _spu_tsa[1];
32
written = 0;
33
if
( _spu_transferCallback )
34
{
35
bk = _spu_transferCallback;
36
_spu_transferCallback = 0;
37
written = 0;
38
}
39
while
( ck_2 )
40
{
41
unsigned
int
bsize_1;
42
int
bsize_2;
43
44
bsize_1 = size >> 6;
45
if
( size < 0x401 )
46
{
47
bsize_2 = bsize_1 << 6;
48
ck_2 = 0;
49
if
( (
unsigned
int
)bsize_2 < size )
50
bsize_2 += 64;
51
}
52
else
53
{
54
bsize_2 = 1024;
55
}
56
_spu_t(2, tsa);
57
_spu_t(1);
58
FlushDcache();
59
_spu_t(3, _spu_zerobuf, bsize_2);
60
while
( !gDMADeliverEvent )
61
;
62
gDMADeliverEvent = 0;
63
size -= 1024;
64
tsa += 512;
65
written += bsize_2;
66
}
67
if
( ck_1 )
68
_spu_transMode = old_tmode;
69
if
( bk )
70
{
71
_spu_transferCallback = bk;
72
}
73
return
written;
74
}
libspu2_internal.h
core
libspu2
src
s_w0.c
Generated by
1.18.0