1 #pragma once 2 3 #include "iop/Iop_SubSystem.h" 4 #include "PsfVmSubSystem.h" 5 6 namespace Iop 7 { 8 class CPsfSubSystem : public CPsfVmSubSystem 9 { 10 public: 11 CPsfSubSystem(bool ps2Mode); 12 virtual ~CPsfSubSystem() = default; 13 14 void Reset() override; 15 CMIPS& GetCpu() override; 16 uint8* GetRam() override; 17 Iop::CSpuBase& GetSpuCore(unsigned int) override; 18 19 #ifdef DEBUGGER_INCLUDED 20 bool MustBreak() override; 21 void DisableBreakpointsOnce() override; 22 CBiosDebugInfoProvider* GetBiosDebugInfoProvider() override; 23 void LoadDebugTags(Framework::Xml::CNode*) override; 24 void SaveDebugTags(Framework::Xml::CNode*) override; 25 #endif 26 27 void Update(bool, CSoundHandler*) override; 28 29 Iop::CBiosBase* GetBios() const; 30 31 private: 32 CSubSystem m_iop; 33 uint32 m_frameTicks; 34 uint32 m_spuUpdateTicks; 35 int m_frameCounter; 36 int m_spuUpdateCounter; 37 38 enum 39 { 40 SAMPLE_COUNT = 44, 41 BLOCK_SIZE = SAMPLE_COUNT * 2, 42 BLOCK_COUNT = 10, 43 }; 44 45 int16 m_samples[BLOCK_SIZE * BLOCK_COUNT]; 46 int m_currentBlock; 47 }; 48 49 typedef std::shared_ptr<CPsfSubSystem> PsfSubSystemPtr; 50 } 51