Merge pull request #44 from Gumball2415/feature-add-2a03-interference
Refactor audio interference code
This commit is contained in:
commit
c5ac9ecb74
6 changed files with 12 additions and 11 deletions
|
@ -473,10 +473,10 @@ void Console::ProcessCpuClock()
|
|||
|
||||
void Console::ProcessInterferenceAudio()
|
||||
{
|
||||
_InvA13 = (_ppu->_A13pinLow == 1) ? 0 : 1; // invert relative to 2A03
|
||||
_InvA13 = _ppu->_A13pinLowSum;
|
||||
_ppu->_A13pinLowSum = 0;
|
||||
|
||||
_controlManager->GetInvOE1(_controlManager->_address);
|
||||
_InvOE1 = (_controlManager->_OE1pinLow == 1) ? 0 : 1; // invert relative to 2A03
|
||||
_InvOE1 = !_controlManager->GetInvOE1(_controlManager->_address); // invert relative to 2A03
|
||||
|
||||
if (_controlManager->_strobed == true)
|
||||
_controlManager->_strobed = false;
|
||||
|
|
|
@ -351,11 +351,12 @@ void ControlManager::WriteRAM(uint16_t addr, uint8_t value)
|
|||
}
|
||||
}
|
||||
|
||||
void ControlManager::GetInvOE1(uint16_t addr)
|
||||
bool ControlManager::GetInvOE1(uint16_t addr)
|
||||
{
|
||||
// pull low for only one clock
|
||||
if (addr == 0x4016)
|
||||
_OE1pinLow = (_strobed) ? 0 : 1;
|
||||
_OE1pinLow = !_strobed;
|
||||
return _OE1pinLow;
|
||||
}
|
||||
|
||||
void ControlManager::Reset(bool softReset)
|
||||
|
|
|
@ -43,7 +43,7 @@ protected:
|
|||
virtual uint8_t GetOpenBusMask(uint8_t port);
|
||||
|
||||
public:
|
||||
uint8_t _OE1pinLow;
|
||||
bool _OE1pinLow;
|
||||
uint16_t _address;
|
||||
bool _strobed;
|
||||
|
||||
|
@ -85,5 +85,5 @@ public:
|
|||
virtual uint8_t ReadRAM(uint16_t addr) override;
|
||||
virtual void WriteRAM(uint16_t addr, uint8_t value) override;
|
||||
|
||||
void GetInvOE1(uint16_t addr);
|
||||
bool GetInvOE1(uint16_t addr);
|
||||
};
|
||||
|
|
|
@ -466,7 +466,7 @@ void PPU::WriteRAM(uint16_t addr, uint8_t value)
|
|||
void PPU::GetInvA13()
|
||||
{
|
||||
// pull level high when PPU/VRAM addr bit 13 is low
|
||||
_A13pinLow = (_ppuBusAddress & 0x2000) ? 0 : 1;
|
||||
_A13pinLowSum += (bool)(_ppuBusAddress & 0x2000); // invert relative to 2A03
|
||||
}
|
||||
|
||||
uint8_t PPU::ReadPaletteRAM(uint16_t addr)
|
||||
|
|
|
@ -180,7 +180,7 @@ class PPU : public IMemoryHandler, public Snapshotable
|
|||
static constexpr int32_t OutputBufferSize = 256*240*2;
|
||||
static constexpr int32_t OamDecayCycleCount = 3000;
|
||||
|
||||
uint8_t _A13pinLow;
|
||||
uint8_t _A13pinLowSum;
|
||||
|
||||
PPU(shared_ptr<Console> console);
|
||||
virtual ~PPU();
|
||||
|
|
|
@ -277,8 +277,8 @@ int16_t SoundMixer::GetOutputVolume(bool forRightChannel)
|
|||
#endif
|
||||
GetChannelOutput(AudioChannel::EPSM_L, forRightChannel) * 4 +
|
||||
GetChannelOutput(AudioChannel::EPSM_R, forRightChannel) * 4 +
|
||||
GetChannelOutput(AudioChannel::InvA13, forRightChannel) * 20 +
|
||||
GetChannelOutput(AudioChannel::InvOE1, forRightChannel) * 1000
|
||||
(GetChannelOutput(AudioChannel::InvA13, forRightChannel) * 20) / 3.0 + // 3 PPU samples per CPU clock
|
||||
GetChannelOutput(AudioChannel::InvOE1, forRightChannel) * 100
|
||||
);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue