rlm@0: // snes_spc 0.9.0. http://www.slack.net/~ant/ rlm@0: rlm@0: #include "dsp.h" rlm@0: rlm@0: #include "SPC_DSP.h" rlm@0: rlm@0: /* Copyright (C) 2007 Shay Green. This module is free software; you rlm@0: can redistribute it and/or modify it under the terms of the GNU Lesser rlm@0: General Public License as published by the Free Software Foundation; either rlm@0: version 2.1 of the License, or (at your option) any later version. This rlm@0: module is distributed in the hope that it will be useful, but WITHOUT ANY rlm@0: WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS rlm@0: FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more rlm@0: details. You should have received a copy of the GNU Lesser General Public rlm@0: License along with this module; if not, write to the Free Software Foundation, rlm@0: Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ rlm@0: rlm@0: #include "blargg_source.h" rlm@0: rlm@0: SPC_DSP* spc_dsp_new( void ) rlm@0: { rlm@0: // be sure constants match rlm@0: assert( spc_dsp_voice_count == (int) SPC_DSP::voice_count ); rlm@0: assert( spc_dsp_register_count == (int) SPC_DSP::register_count ); rlm@0: #if !SPC_NO_COPY_STATE_FUNCS rlm@0: assert( spc_dsp_state_size == (int) SPC_DSP::state_size ); rlm@0: #endif rlm@0: rlm@0: return new SPC_DSP; rlm@0: } rlm@0: rlm@0: void spc_dsp_delete ( SPC_DSP* s ) { delete s; } rlm@0: void spc_dsp_init ( SPC_DSP* s, void* ram_64k ) { s->init( ram_64k ); } rlm@0: void spc_dsp_set_output ( SPC_DSP* s, spc_dsp_sample_t* p, int n ) { s->set_output( p, n ); } rlm@0: int spc_dsp_sample_count( SPC_DSP const* s ) { return s->sample_count(); } rlm@0: void spc_dsp_reset ( SPC_DSP* s ) { s->reset(); } rlm@0: void spc_dsp_soft_reset ( SPC_DSP* s ) { s->soft_reset(); } rlm@0: int spc_dsp_read ( SPC_DSP const* s, int addr ) { return s->read( addr ); } rlm@0: void spc_dsp_write ( SPC_DSP* s, int addr, int data ) { s->write( addr, data ); } rlm@0: void spc_dsp_run ( SPC_DSP* s, int clock_count ) { s->run( clock_count ); } rlm@0: void spc_dsp_mute_voices ( SPC_DSP* s, int mask ) { s->mute_voices( mask ); } rlm@0: void spc_dsp_disable_surround( SPC_DSP* s, int disable ) { s->disable_surround( disable ); } rlm@0: void spc_dsp_load ( SPC_DSP* s, unsigned char const regs [spc_dsp_register_count] ) { s->load( regs ); } rlm@0: rlm@0: #if !SPC_NO_COPY_STATE_FUNCS rlm@0: void spc_dsp_copy_state ( SPC_DSP* s, unsigned char** p, spc_dsp_copy_func_t f ) { s->copy_state( p, f ); } rlm@0: int spc_dsp_check_kon ( SPC_DSP* s ) { return s->check_kon(); } rlm@0: #endif