SCC: optimize

This commit is contained in:
tildearrow 2023-02-11 22:20:47 -05:00
parent 0dcdce2c6d
commit 989743152a
2 changed files with 13 additions and 12 deletions

View File

@ -13,10 +13,10 @@
void scc_core::tick(const int cycles)
{
m_out = 0;
for (auto &elem : m_voice)
for (int elem=0; elem<5; elem++)
{
elem.tick(cycles);
m_out += elem.out();
m_voice[elem].tick(cycles);
m_out += m_voice[elem].out();
}
}
@ -64,19 +64,19 @@ void scc_core::voice_t::tick(const int cycles)
void scc_core::reset()
{
for (auto &elem : m_voice)
for (int elem=0; elem<5; elem++)
{
elem.reset();
m_voice[elem].reset();
}
m_test.reset();
m_out = 0;
std::fill(m_reg.begin(), m_reg.end(), 0);
memset(m_reg,0,256);
}
void scc_core::voice_t::reset()
{
std::fill(m_wave.begin(), m_wave.end(), 0);
memset(m_wave,0,32);
m_enable = false;
m_pitch = 0;
m_volume = 0;

View File

@ -14,6 +14,7 @@
#include "../core/core.hpp"
#include "../core/util/mem_intf.hpp"
#include <string.h>
using namespace vgsound_emu;
@ -36,7 +37,7 @@ class scc_core : public vgsound_emu_core
, m_counter(0)
, m_out(0)
{
m_wave.fill(0);
memset(m_wave,0,32);
}
// internal state
@ -69,7 +70,7 @@ class scc_core : public vgsound_emu_core
private:
// registers
scc_core &m_host;
std::array<s8, 32> m_wave; // internal waveform
s8 m_wave[32]; // internal waveform
bool m_enable = false; // output enable flag
u16 m_pitch : 12; // pitch
u16 m_volume : 4; // volume
@ -139,7 +140,7 @@ class scc_core : public vgsound_emu_core
, m_test(test_t())
, m_out(0)
{
m_reg.fill(0);
memset(m_reg,0,256);
}
// destructor
@ -168,12 +169,12 @@ class scc_core : public vgsound_emu_core
void freq_vol_enable_w(u8 address, u8 data);
// internal values
std::array<voice_t, 5> m_voice; // 5 voices
voice_t m_voice[5]; // 5 voices
test_t m_test; // test register
s32 m_out = 0; // output to DA0...10
std::array<u8, 256> m_reg; // register pool
u8 m_reg[256]; // register pool
};
// SCC core