コード例 #1
0
void BNSDecoder::OpenFile()
{
	u8 * tempbuff = new (std::nothrow) u8[file_fd->size()];
	if(!tempbuff)
	{
		CloseFile();
		return;
	}

	int done = 0;

	while(done < file_fd->size())
	{
		int read = file_fd->read(tempbuff+done, file_fd->size()-done);
		if(read > 0)
			done += read;
		else
		{
			CloseFile();
			return;
		}
	}

	SoundData = DecodefromBNS(tempbuff, done);
	if(SoundData.buffer == NULL)
	{
		CloseFile();
		return;
	}

	delete [] tempbuff;
	tempbuff = NULL;

	Decode();
}
コード例 #2
0
void BNSDecoder::OpenFile()
{
	u8 *tempbuff = (u8*)MEM2_alloc(file_fd->size());
	if(!tempbuff)
	{
		CloseFile();
		return;
	}

	int done = 0;

	while(done < file_fd->size())
	{
		int read = file_fd->read(tempbuff+done, file_fd->size()-done);
		if(read > 0)
			done += read;
		else
		{
			CloseFile();
			MEM2_free(tempbuff);
			return;
		}
	}

	SoundData = DecodefromBNS(tempbuff, done);
	MEM2_free(tempbuff);
	if(SoundData.buffer == NULL)
	{
		CloseFile();
		return;
	}
	Decode();
}