PS2SDK
PS2 Homebrew Libraries
Loading...
Searching...
No Matches
s_w.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
13unsigned int SpuWrite(u8 *addr, unsigned int size)
14{
15 unsigned int size_tmp;
16
17 size_tmp = size;
18 if ( size > 0x1FAFF0 )
19 size_tmp = 0x1FAFF0;
20 _spu_Fw(addr, size_tmp);
21 if ( !_spu_transferCallback )
22 _spu_inTransfer = 0;
23 return size_tmp;
24}
25
26unsigned int SpuAutoDMAWrite(u8 *addr, unsigned int size, unsigned int mode, ...)
27{
28#ifdef LIB_1300
29 if ( mode == SPU_AUTODMA_LOOP )
30 size >>= 1;
31 _spu_FwAutoDMA(addr, size, mode);
32 return size;
33#else
34 u8 *v6;
35 va_list va;
36 unsigned int mode_masked_1;
37
38 va_start(va, mode);
39 v6 = va_arg(va, u8 *);
40 va_end(va);
41#ifdef LIB_1600
42 mode_masked_1 = mode & 1;
43#else
44 mode_masked_1 = mode;
45#endif
46 if ( (mode & SPU_AUTODMA_LOOP) != 0 )
47 size >>= 1;
48 if ( (mode & SPU_AUTODMA_START_ADDR) != 0 )
49 return _spu_FwAutoDMAfrom(addr, size, mode_masked_1, v6);
50 return _spu_FwAutoDMA(addr, size, mode_masked_1);
51#endif
52}
53
54int SpuAutoDMAStop(void)
55{
56 return _spu_StopAutoDMA();
57}
58
59int SpuAutoDMAGetStatus(void)
60{
61 return _spu_AutoDMAGetStatus();
62}