From fb07d985ea6cd032747ca92fb1f4b2f419e8d1c0 Mon Sep 17 00:00:00 2001 From: Chris Moeller Date: Sat, 26 Oct 2013 14:47:36 -0700 Subject: [PATCH] Simplified SPC register initialization and eliminated an unnecessary function --- Frameworks/GME/gme/Spc_Emu.cpp | 8 +++----- Frameworks/GME/gme/higan/processor/spc700/spc700.hpp | 2 -- Frameworks/GME/gme/higan/smp/memory.cpp | 6 ------ Frameworks/GME/gme/higan/smp/smp.hpp | 2 -- 4 files changed, 3 insertions(+), 15 deletions(-) diff --git a/Frameworks/GME/gme/Spc_Emu.cpp b/Frameworks/GME/gme/Spc_Emu.cpp index 41873026f..f323b15b5 100644 --- a/Frameworks/GME/gme/Spc_Emu.cpp +++ b/Frameworks/GME/gme/Spc_Emu.cpp @@ -377,11 +377,9 @@ blargg_err_t Spc_Emu::start_track_( int track ) memcpy( smp.apuram, ptr, 0x10000 ); memcpy( smp.sfm_last, ptr + 0xF4, 4 ); - smp.op_buswrite( 0xF1, ptr[ 0xF1 ] ); - smp.op_buswrite( 0xF2, ptr[ 0xF2 ] ); - smp.op_buswrite( 0xFA, ptr[ 0xFA ] ); - smp.op_buswrite( 0xFB, ptr[ 0xFB ] ); - smp.op_buswrite( 0xFC, ptr[ 0xFC ] ); + + static const uint8_t regs_to_copy[] = { 0xF1, 0xF2, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC }; + for (auto n : regs_to_copy) smp.op_buswrite( n, ptr[ n ] ); ptr += 0x10000; smp.dsp.spc_dsp.load( ptr ); diff --git a/Frameworks/GME/gme/higan/processor/spc700/spc700.hpp b/Frameworks/GME/gme/higan/processor/spc700/spc700.hpp index 490ff0266..c8b231c26 100755 --- a/Frameworks/GME/gme/higan/processor/spc700/spc700.hpp +++ b/Frameworks/GME/gme/higan/processor/spc700/spc700.hpp @@ -11,8 +11,6 @@ struct SPC700 { virtual void op_write(uint16_t addr, uint8_t data) = 0; void op_step(); - virtual uint8_t disassembler_read(uint16_t addr) = 0; - #include "registers.hpp" #include "memory.hpp" diff --git a/Frameworks/GME/gme/higan/smp/memory.cpp b/Frameworks/GME/gme/higan/smp/memory.cpp index f32927634..951b719d0 100755 --- a/Frameworks/GME/gme/higan/smp/memory.cpp +++ b/Frameworks/GME/gme/higan/smp/memory.cpp @@ -182,10 +182,4 @@ void SMP::op_write(uint16_t addr, uint8_t data) { cycle_edge(); } -uint8_t SMP::disassembler_read(uint16_t addr) { - if((addr & 0xfff0) == 0x00f0) return 0x00; - if((addr & 0xffc0) == 0xffc0 && status.iplrom_enable) return iplrom[addr & 0x3f]; - return apuram[addr]; -} - #endif diff --git a/Frameworks/GME/gme/higan/smp/smp.hpp b/Frameworks/GME/gme/higan/smp/smp.hpp index 1ca011ef5..6aee02723 100755 --- a/Frameworks/GME/gme/higan/smp/smp.hpp +++ b/Frameworks/GME/gme/higan/smp/smp.hpp @@ -90,8 +90,6 @@ public: uint8_t op_read(uint16_t addr); void op_write(uint16_t addr, uint8_t data); - uint8_t disassembler_read(uint16_t addr); - //timing.cpp template struct Timer {