blargg_err_t SNES_SPC::load_spc( void const* data, long size ) { spc_file_t const* const spc = (spc_file_t const*) data; // be sure compiler didn't insert any padding into fle_t assert( sizeof (spc_file_t) == spc_min_file_size + 0x80 ); // Check signature and file size if ( size < signature_size || memcmp( spc, signature, 27 ) ) return "Not an SPC file"; if ( size < spc_min_file_size ) return "Corrupt SPC file"; // CPU registers m.cpu_regs.pc = spc->pch * 0x100 + spc->pcl; m.cpu_regs.a = spc->a; m.cpu_regs.x = spc->x; m.cpu_regs.y = spc->y; m.cpu_regs.psw = spc->psw; m.cpu_regs.sp = spc->sp; // RAM and registers memcpy( RAM, spc->ram, 0x10000 ); ram_loaded(); // DSP registers dsp.load( spc->dsp ); reset_time_regs(); return 0; }
void SNES_SPC::reset() { memset( RAM, 0xFF, 0x10000 ); ram_loaded(); reset_common( 0x0F ); dsp.reset(); }
void Snes_Spc::reset() { memset( RAM, 0xFF, 0x10000 ); ram_loaded(); reset_common( 0x0F ); dsp.reset(); }
blargg_err_t SNES_SPC::load_spc( void const* data, long size ) { spc_file_t const* const spc = (spc_file_t const*) data; // be sure compiler didn't insert any padding into fle_t assert( sizeof (spc_file_t) == spc_min_file_size + 0x80 ); // Check signature and file size if ( size < signature_size || memcmp( spc, signature, 27 ) ) return "Not an SPC file"; if ( size < spc_min_file_size ) return "Corrupt SPC file"; // CPU registers smp->SetRegPc(spc->pch * 0x100 + spc->pcl); smp->SetRegA(spc->a); smp->SetRegX(spc->x); smp->SetRegY(spc->y); smp->SetPsw(spc->psw); smp->SetRegSp(spc->sp); // RAM and registers memcpy( ram, spc->ram, 0x10000 ); ram_loaded(); // DSP registers dsp->load( spc->dsp ); reset_time_regs(); return 0; }
void SNES_SPC::Reset() { memset( ram, 0xFF, 0x10000 ); ram_loaded(); reset_common( 0x0F ); dsp->reset(); }
void SNES_SPC::reset() { m.cpu_regs.pc = 0xFFC0; m.cpu_regs.a = 0x00; m.cpu_regs.x = 0x00; m.cpu_regs.y = 0x00; m.cpu_regs.psw = 0x02; m.cpu_regs.sp = 0xEF; memset( RAM, 0x00, 0x10000 ); ram_loaded(); reset_common( 0x0F ); dsp.reset(); }