コード例 #1
0
ファイル: accuracy.c プロジェクト: tomtix/osux
static struct spacing_count *
tro_spacing_init(const struct tr_object *objs, int i)
{
    struct spacing_count *spc = spc_new(equal_i);
    for (int j = i; j >= 0; j--) {
        if (objs[j].ps == MISS)
            continue;
        double influ = tro_spacing_influence(&objs[j], &objs[i]);
        if (influ == 0)
            break; /* j-- influence won't increase */
        spc_add(spc, objs[j].rest, influ);
    }
    return spc;
}
コード例 #2
0
ファイル: comm.c プロジェクト: FelipeBudinich/js-snes-player
int main()
{
	int i;
	
	/* Data to upload */
	static unsigned char const data [4] = "\xFA\xDE\xD1";
	unsigned const data_addr = 0xF5; /* second I/O port */
	
	snes_spc = spc_new();
	if ( !snes_spc ) error( "Out of memory" );
	spc_init_rom( snes_spc, spc_rom );
	spc_reset( snes_spc );
	
	/* Simulate reads and writes that SNES code would do */
	
	/* Wait for SPC to be ready */
	while ( pread( 0 ) != 0xAA || pread( 1 ) != 0xBB ) { }
	
	/* Start address */
	pwrite( 2, data_addr & 0xFF );
	pwrite( 3, data_addr >> 8 );
	
	/* Tell SPC to start transfer and wait for acknowledgement */
	pwrite( 0, 0xCC );
	pwrite( 1, 0x01 );
	while ( pread( 0 ) != 0xCC ) { }
	
	/* Send each byte and wait for acknowledgement */
	for ( i = 0; i < 4; i++ )
	{
		printf( "%02X ", data [i] );
		pwrite( 1, data [i] );
		pwrite( 0, i );
		while ( pread( 0 ) != i ) { }
	}
	printf( "\n" );
	
	/* Verify that data was transferred properly */
	for ( i = 0; i < 3; i++ )
		printf( "%02X ", pread( i + 1 ) );
	printf( "\n" );
	
	printf( "Cycles: %ld\n", (long) stime );
	
	spc_delete( snes_spc );
	
	return 0;
}
コード例 #3
0
int main( int argc, char** argv )
{
	snes_spc = spc_new();
	if ( !snes_spc ) error( "Out of memory" );
	
	/* Make new state if it doesn't exist, otherwise load it and
	record to wave file */
	if ( !file_exists( "state.bin" ) )
		make_save_state( (argc > 1) ? argv [1] : "test.spc" );
	else
		use_save_state();
	
	spc_delete( snes_spc );
	
	return 0;
}
コード例 #4
0
ファイル: play_spc.c プロジェクト: MisterZeus/SNES-Tracker
int main( int argc, char** argv )
{
	/* Create emulator and filter */
	SNES_SPC* snes_spc = spc_new();
	SPC_Filter* filter = spc_filter_new();
	if ( !snes_spc || !filter ) error( "Out of memory" );
	
	/* Load SPC */
	{
		/* Load file into memory */
		long spc_size;
		void* spc = load_file( (argc > 1) ? argv [1] : "test.spc", &spc_size );
		
		/* Load SPC data into emulator */
		error( spc_load_spc( snes_spc, spc, spc_size ) );
		free( spc ); /* emulator makes copy of data */
		
		/* Most SPC files have garbage data in the echo buffer, so clear that */
		spc_clear_echo( snes_spc );
		
		/* Clear filter before playing */
		spc_filter_clear( filter );
	}
	
	/* Record 20 seconds to wave file */
	wave_open( spc_sample_rate, "out.wav" );
	wave_enable_stereo();
	while ( wave_sample_count() < 60 * spc_sample_rate * 2 )
	{
		/* Play into buffer */
		#define BUF_SIZE 2048
		short buf [BUF_SIZE];
		error( spc_play( snes_spc, BUF_SIZE, buf ) );
		
		/* Filter samples */
		spc_filter_run( filter, buf, BUF_SIZE );
		
		wave_write( buf, BUF_SIZE );
	}
	
	/* Cleanup */
	spc_filter_delete( filter );
	spc_delete( snes_spc );
	wave_close();
	
	return 0;
}
コード例 #5
0
ファイル: SpcDecoder.cpp プロジェクト: xor-mind/solarus
/**
 * @brief Creates an SPC decoder.
 */
SpcDecoder::SpcDecoder() {

  // initialize the SPC library
  snes_spc_manager = spc_new();
  snes_spc_filter = spc_filter_new();
}
コード例 #6
0
ファイル: SpcDecoder.cpp プロジェクト: Codex-NG/solarus
/**
 * \brief Creates an SPC decoder.
 */
SpcDecoder::SpcDecoder():
  snes_spc_manager(spc_new()),
  snes_spc_filter(spc_filter_new()) {
}