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

📄 gb_sound.cpp

📁 gameboy 模拟器的源代码
💻 CPP
字号:
// gb_SOUND.CPP

#include "gb_Sound.h"
#include <e32svr.h>


_LIT(KAudioApi2,"WILDSOUNDAPI2");


_LIT(KStreamPlayer,"Stream");



CGBSound::CGBSound()
	{
	iSoundOn = ETrue;
	}

CGBSound::~CGBSound()
	{
	CloseAudio();
	}

void CGBSound::ConstructL()
	{
	GetAudioL();
	StartAudio();
	}


void CGBSound::GetAudioL()
	{
	iAudio = NULL;
	TInt err= iAudioLib.Load(KAudioApi2);
	if (err != KErrNone)
		{
		return;
		}
	CleanupClosePushL(iAudioLib);
	TLibraryFunction func = iAudioLib.Lookup(1);
	iAudio = (MAudioBase*)(func());
	CleanupStack::Pop();	//iLib
	}

void CGBSound::StartAudio()
	{
	if (iAudio)
		{
		TInt err = iAudio->Connect(2);
		if (err != KErrNone)
			{
			iAudio->Close();
			iAudio = NULL;
			return;
			}
		err = iAudio->LoadAudioPlayer(KStreamPlayer);
		if (err != KErrNone)
			{
			iAudio->Close();
			iAudio = NULL;
			return;
			}
		iAudio->Play();
		iAudio->Command(1, 1);
		iConnected = ETrue;
		}
	}

void CGBSound::CloseAudio()
	{
	if (iAudio)
		{
		iAudio->Stop();
		iAudio->Close();
		delete iAudio;
		iAudio = NULL;
		}
	}

TBool CGBSound::SubmitAudio(char* aPtr, TInt aLen)
	{
	if (iAudio && iSoundOn && !iSoundHasTerminated)
		{
		TInt err = iAudio->Message(1, TPtrC16((unsigned short*)aPtr, aLen));
		if (err == KErrNotReady)
			{
			iSoundHasTerminated = ETrue;
			return ETrue;
			}
		}
	return EFalse;
	}




TBool CGBSound::IsSoundOn()
	{
	if (iConnected && iSoundOn)
		{
		return ETrue;
		}
	return EFalse;
	}

void CGBSound::SetSoundOn(TBool aTrue)
	{
	iSoundOn = aTrue;
	}

⌨️ 快捷键说明

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