⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vgsndmem.c

📁 adc 3208 上面实现图片旋转的实例
💻 C
字号:

#include "vgSnd.h"
#include "vgSndMem.h"

// Simple Memory functions
U32		_VR0_SND_MStart[SOUND_MEMORY_BANK_COUNT], 
		_VR0_SND_MSize[SOUND_MEMORY_BANK_COUNT], 
		_VR0_SND_MOffset[SOUND_MEMORY_BANK_COUNT];

void	VR0SndInitMemory( int select, U32 addr, U32 size )
{
	_VR0_SND_MStart[select] = addr;
	_VR0_SND_MSize[select]	= size;
	_VR0_SND_MOffset[select] = 0;
}

void	*VR0SndMalloc( int select, U32 size )
{
	U32	ret;

//zy	_VGMSG(( "VR0SndMalloc : %ld -> ", size ));
	
	// Samples must be align on DWord.(4Byte)
	if( size & 0x3 )	size = size + (4 - (size&0x3));

	if( _VR0_SND_MOffset[select] + size > _VR0_SND_MSize[select] )	return (void *)vgNULL;
	ret = _VR0_SND_MStart[select] + _VR0_SND_MOffset[select];
	_VR0_SND_MOffset[select] += size;
//zy	_VGMSG(( "ret : %08X\r\n", ret ));

	return (void *)ret;
}

void	VR0SndAllFree( int select )
{
	_VR0_SND_MOffset[select] = 0;
}
/*
// VR0 Read & Write : We support only a 16bit access.
U16 VR0MemRead( U32 addr )
{
	U16 * p = (U16 * )addr;
	U16 data;
	data = *p;
	return data;
}

void VR0MemWrite( U32 addr, U16 data )
{
	volatile U16 * p = (volatile U16 * )addr;
	*p = data;
}
*/
void	VR0SndCopyMemory( S16 *pdst, S16 *psrc, U32 size )
{
	U32 i;
	U32	addr = (U32)pdst;
	
	for( i=0 ; i<size/2 ; i++, addr+=2 )
		CPUWrite16( addr, (U16)psrc[i] );

#ifdef _DEBUG
// Verifying....	
	addr = (U32)pdst;	
	for( i=0 ; i<size/2 ; i++, addr+=2 )
		if( CPURead16(addr) != (U16)psrc[i] )
//zy			uartprintf( "Verify Error (0x%08X) : %04X - %04X\r\n", addr, CPURead16(addr), (U16)psrc[i] );
#endif /* _DEBUG */			
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -