コード例 #1
0
ファイル: init.cpp プロジェクト: yslyxqysl/RhythmRunner
VOID GameInit()
{
	readBeats((global.currSong().name + _T("/") + global.currSong().osuFile).data());
	global.accummulatedTime = 0;
	global.isGamePaused = false;
	QueryPerformanceCounter(&global.beginTime);
	if (global.currSong().audioLeadIn > 0)
	{
		global.accummulatedTime = -global.currSong().audioLeadIn;
		WCHAR firstMp3File[200];
		wsprintf(firstMp3File, TEXT("%s/%s"), global.currSong().name.data(), global.currSong().audioFilename.data());
		AudioOpen(firstMp3File);
		AudioPlayOnce();
		AudioPause();
	}
	else
		SwitchSong();

	killAnimator(&global.blood);
	global.blood = 100.;
	global.accuracyIndicator = 0.;
	for (int i = 0; i < 4; i++)
	{
		global.heroes[i].height = 0.;
		global.heroes[i].startHeight = 0.;
		global.heroes[i].jpCount = 0;
		global.heroes[i].jpStartTime = INT_MIN;
		global.fHeight[i] = 0.;
		global.keySequence[i].clear();
	}
	global.status = global.GS_PLAYING;
}
コード例 #2
0
ファイル: msu1.cpp プロジェクト: Juraldinio/SNES9x-Core
void S9xMSU1PostLoadState(void)
{
	if (DataOpen())
	{
        REVERT_STREAM(dataStream, MSU1.MSU1_DATA_POS, 0);
	}

	if (MSU1.MSU1_STATUS & AudioPlaying)
	{
		if (AudioOpen())
		{
            REVERT_STREAM(audioStream, 4, 0);
            READ_STREAM((char *)&audioLoopPos, 4, audioStream);
			audioLoopPos = GET_LE32(&audioLoopPos);
			audioLoopPos <<= 2;
			audioLoopPos += 8;

            REVERT_STREAM(audioStream, MSU1.MSU1_AUDIO_POS, 0);
		}
		else
		{
			MSU1.MSU1_STATUS &= ~(AudioPlaying | AudioRepeating);
			MSU1.MSU1_STATUS |= AudioError;
		}
	}

	bufPos = 0;
	bufBegin = 0;
	bufEnd = 0;

	partial_frames = 0;
}
コード例 #3
0
ファイル: msu1.cpp プロジェクト: libretro/snes9x
void S9xMSU1PostLoadState(void)
{
	if (DataOpen())
	{
        REVERT_STREAM(dataStream, MSU1.MSU1_DATA_POS, 0);
	}

	if (MSU1.MSU1_STATUS & AudioPlaying)
	{
		uint32 savedPosition = MSU1.MSU1_AUDIO_POS;

		if (AudioOpen())
		{
            REVERT_STREAM(audioStream, 4, 0);
            READ_STREAM((char *)&audioLoopPos, 4, audioStream);
			audioLoopPos = GET_LE32(&audioLoopPos);
			audioLoopPos <<= 2;
			audioLoopPos += 8;

			MSU1.MSU1_AUDIO_POS = savedPosition;
            REVERT_STREAM(audioStream, MSU1.MSU1_AUDIO_POS, 0);
		}
		else
		{
			MSU1.MSU1_STATUS &= ~(AudioPlaying | AudioRepeating);
			MSU1.MSU1_STATUS |= AudioError;
		}
	}

	if (msu_resampler)
		msu_resampler->clear();

	partial_frames = 0;
}
コード例 #4
0
int main(int argc, char* argv[])
{
    int           rc;
    unsigned int  i;

    memset(recordedSamples, 0, N_SAMPLES_TO_RECORD * sizeof(typeSample));

    rc = AudioSetInputFormat(SAMPLING_RATE, N_CHANNELS_PER_TUPLE);
    if (rc != 0)
    {
        printf("ERROR: AudioSetInputFormat() returns %d\n", rc);
        exit(1);
    }

    rc = AudioOpen();
    if (rc < 0)
    {
        printf("ERROR: AudioOpen() returns %d (device handle/ID)\n", rc);
        exit(1);
    }
        
    i = 0;
    while (i <= N_SAMPLES_TO_RECORD - N_SAMPLES_PER_BUFFER)
    {
        rc = AudioRead(&(recordedSamples[i]), N_FRAMES_PER_BUFFER);
        if (rc > 0)
            i += (rc * N_TUPLES_PER_FRAME * N_CHANNELS_PER_TUPLE);
        else
            printf("ERROR: AudioRead() returns %d\n", rc);
    }

    rc = AudioClose();
    if (rc != 0)
    {
        printf("ERROR: AudioClose() returns %d\n", rc);
        exit(1);
    }

    /* write to file  */
    {
        FILE *fpOutput;
        char *szFilename = "output_AudioHardwareRecord.pcm";

        fpOutput = fopen(szFilename, "wb");
        if (fpOutput == NULL)
        {
            printf("ERROR: cannot create '%s'\n", szFilename);
            exit(1);
        }
        fwrite(recordedSamples, sizeof(typeSample), i, fpOutput);
        fclose(fpOutput);
    }

    return 0;
}
コード例 #5
0
ファイル: msu1.cpp プロジェクト: Juraldinio/SNES9x-Core
void S9xMSU1WritePort(uint8 port, uint8 byte)
{
	switch (port)
	{
	case 0:
		MSU1.MSU1_DATA_SEEK &= 0xFFFFFF00;
		MSU1.MSU1_DATA_SEEK |= byte << 0;
		break;
	case 1:
		MSU1.MSU1_DATA_SEEK &= 0xFFFF00FF;
		MSU1.MSU1_DATA_SEEK |= byte << 8;
		break;
	case 2:
		MSU1.MSU1_DATA_SEEK &= 0xFF00FFFF;
		MSU1.MSU1_DATA_SEEK |= byte << 16;
		break;
	case 3:
		MSU1.MSU1_DATA_SEEK &= 0x00FFFFFF;
		MSU1.MSU1_DATA_SEEK |= byte << 24;
		MSU1.MSU1_DATA_POS = MSU1.MSU1_DATA_SEEK;
        if (dataStream)
        {
            REVERT_STREAM(dataStream, MSU1.MSU1_DATA_POS, 0);
        }
		break;
	case 4:
		MSU1.MSU1_TRACK_SEEK &= 0xFF00;
		MSU1.MSU1_TRACK_SEEK |= byte;
		break;
	case 5:
		MSU1.MSU1_TRACK_SEEK &= 0x00FF;
		MSU1.MSU1_TRACK_SEEK |= (byte << 8);
		MSU1.MSU1_CURRENT_TRACK = MSU1.MSU1_TRACK_SEEK;

		MSU1.MSU1_STATUS &= ~AudioPlaying;
		MSU1.MSU1_STATUS &= ~AudioRepeating;

		if (AudioOpen())
		{
			if (MSU1.MSU1_CURRENT_TRACK == MSU1.MSU1_RESUME_TRACK)
			{
				MSU1.MSU1_AUDIO_POS = MSU1.MSU1_RESUME_POS;
				MSU1.MSU1_RESUME_POS = 0;
				MSU1.MSU1_RESUME_TRACK = ~0;
			}
			else
			{
				MSU1.MSU1_AUDIO_POS = 8;
			}

            REVERT_STREAM(audioStream, MSU1.MSU1_AUDIO_POS, 0);
		}
		break;
	case 6:
		MSU1.MSU1_VOLUME = byte;
		break;
	case 7:
		if (MSU1.MSU1_STATUS & (AudioBusy | AudioError))
			break;

		MSU1.MSU1_STATUS = (MSU1.MSU1_STATUS & ~0x30) | ((byte & 0x03) << 4);

		if ((byte & (Play | Resume)) == Resume)
		{
			MSU1.MSU1_RESUME_TRACK = MSU1.MSU1_CURRENT_TRACK;
			MSU1.MSU1_RESUME_POS = MSU1.MSU1_AUDIO_POS;
		}
		break;
	}
}
コード例 #6
0
static int OpenAndPrepareSound(unsigned long ulFrequency)
{
#if defined(ANDROID)

  /* Only support certain frequencies.  Modify this to check frequency
     against a structure of valid frequencies */
#ifdef FILTER_ON
  if ( ulFrequency == 11025 )
  {
    if ( AudioSetInputFormat ( 44100, NR_OF_CHANNELS ) != 0 ) /* sample at 44100 then downsample */
    {
      PLogError ( "Audio In Error OpenAndPrepareSound - AudioSetInputFormat failed!\n");
      return LHS_E_AUDIOIN_COULDNOTOPENDEVICE; 
    }
  }
  else
  {
    PLogError ( "Audio In Error OpenAndPrepareSound - invalid frequency!");
    return LHS_E_AUDIOIN_COULDNOTOPENDEVICE;
  }
#else
  if ( ( ulFrequency == 11025 ) || ( ulFrequency == 8000 ) )
  {
    if ( AudioSetInputFormat ( ulFrequency, NR_OF_CHANNELS ) != 0 )
    {
      PLogError ( "Audio In Error OpenAndPrepareSound - AudioSetInputFormat failed!");
      return LHS_E_AUDIOIN_COULDNOTOPENDEVICE; 
    }
  }
  else
  {
    PLogError ( "Audio In Error OpenAndPrepareSound - invalid frequency!");
    return LHS_E_AUDIOIN_COULDNOTOPENDEVICE;
  }
#endif

  /* set some variables */
  gAudioInInfo.u32SamplesAvailable = 0;

  /* Open Audio driver */
  if (AudioOpen() < 0)
  {
    PLogError ( "Audio In Error OpenAndPrepareSound - AudioOpen failed!");
    return ~LHS_AUDIOIN_OK;
  }

#else

  snd_pcm_hw_params_t *hwparams;
  unsigned int         exact_rate;
  int                  dir;
  int                  rc;

  /* step 1 : open the sound device */
  /* ------------------------------ */
  if ((rc = snd_pcm_open(&ghPCM, "default", SND_PCM_STREAM_CAPTURE, 0)) < 0)
  {
    PLogError ( "Audio In Error snd_pcm_open() (rc = %d: %s)\n", rc, snd_strerror(rc));
    return LHS_E_AUDIOIN_COULDNOTOPENDEVICE;
  }

  if ((rc = snd_pcm_hw_params_malloc(&hwparams)) < 0)
  {
    PLogError ( "Audio In Error snd_pcm_hw_params_malloc() (rc = %d: %s)\n", rc, snd_strerror(rc));
    return LHS_E_AUDIOIN_COULDNOTOPENDEVICE;
  }

  /* step 2 : configuring the audio channel */
  /* -------------------------------------- */

  if ((rc = snd_pcm_hw_params_any(ghPCM, hwparams)) < 0)
  {
    PLogError ( "Audio In Error snd_pcm_hw_params_any() (rc = %d: %s)\n", rc, snd_strerror(rc));
    return LHS_E_AUDIOIN_COULDNOTOPENDEVICE;
  }

  if ((rc = snd_pcm_hw_params_set_access(ghPCM, hwparams, SND_PCM_ACCESS_RW_INTERLEAVED)) < 0)
  {
    PLogError ( "Audio In Error snd_pcm_hw_params_set_access() (rc = %d: %s)\n", rc, snd_strerror(rc));
    return LHS_E_AUDIOIN_COULDNOTOPENDEVICE;
  }

  if ((rc = snd_pcm_hw_params_set_format(ghPCM, hwparams, SND_PCM_FORMAT_S16_LE)) < 0)
  {
    PLogError ( "Audio In Error snd_pcm_hw_params_set_format() (rc = %d: %s)\n", rc, snd_strerror(rc));
    return LHS_E_AUDIOIN_COULDNOTOPENDEVICE;
  }

#ifdef FILTER_ON
  if (ulFrequency == 11025)
  {
    exact_rate = 44100;
  }
  else
    return LHS_E_AUDIOIN_COULDNOTOPENDEVICE;
#else
  exact_rate = ulFrequency;
#endif  

  dir = 0;

#if 0
  /* This version seems to have problems when the code is compiled into a shared library.
     The subsequent call to snd_pcm_hw_params() fails. */
  if ((rc = snd_pcm_hw_params_set_rate_near(ghPCM, hwparams, &exact_rate, &dir)) < 0)
  {
    PLogError ( "Audio In Error snd_pcm_hw_params_set_rate_near() (rc = %d: %s)\n", rc, snd_strerror(rc));
    return LHS_E_AUDIOIN_COULDNOTOPENDEVICE;
  }
#else
  /* This version works better and in fact makes more sense. */
  if ((rc = snd_pcm_hw_params_set_rate(ghPCM, hwparams, exact_rate, dir)) < 0)
  {
    PLogError ( "Audio In Error snd_pcm_hw_params_set_rate() (rc = %d: %s)\n", rc, snd_strerror(rc));
    return LHS_E_AUDIOIN_COULDNOTOPENDEVICE;
  }
#endif


  if ((rc = snd_pcm_hw_params_set_channels(ghPCM, hwparams, NR_OF_CHANNELS)) < 0)
  {
    PLogError ( "Audio In Error snd_pcm_hw_params_set_channels() (rc = %d: %s)\n", rc, snd_strerror(rc));
    return LHS_E_AUDIOIN_COULDNOTOPENDEVICE;
  }

  if ((rc = snd_pcm_hw_params(ghPCM, hwparams)) < 0)
  {
    PLogError ( "Audio In Error snd_pcm_hw_params() (rc = %d: %s)\n", rc, snd_strerror(rc));
    return LHS_E_AUDIOIN_COULDNOTOPENDEVICE;
  }

  /* step 3 : preparing for read */
  /* --------------------------- */

  /*prepare the channel */

  if ((rc = snd_pcm_prepare(ghPCM)) < 0)
  {
    PLogError ( "Audio In Error snd_pcm_prepare() (rc = %d: %s)\n", rc, snd_strerror(rc));
    return LHS_E_AUDIOIN_COULDNOTOPENDEVICE;
  }

  /* set some variables */
  gAudioInInfo.u32SamplesAvailable = 0;


#endif

  /* prepare to read samples */
  setCloseOff();

  return 0;
}