2015-05-06 00:54:15 -04:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "Types.h"
|
|
|
|
#include "DMAC.h"
|
|
|
|
#include "zip/ZipArchiveWriter.h"
|
|
|
|
#include "zip/ZipArchiveReader.h"
|
|
|
|
|
|
|
|
class CINTC
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
enum REGISTER
|
|
|
|
{
|
|
|
|
INTC_STAT = 0x1000F000,
|
|
|
|
INTC_MASK = 0x1000F010,
|
|
|
|
};
|
|
|
|
|
|
|
|
enum LINES
|
|
|
|
{
|
2018-04-30 21:01:23 +01:00
|
|
|
INTC_LINE_GS = 0,
|
2021-12-03 13:44:24 -05:00
|
|
|
INTC_LINE_SBUS = 1,
|
2018-04-30 21:01:23 +01:00
|
|
|
INTC_LINE_VBLANK_START = 2,
|
|
|
|
INTC_LINE_VBLANK_END = 3,
|
|
|
|
INTC_LINE_VIF0 = 4,
|
|
|
|
INTC_LINE_VIF1 = 5,
|
2024-07-30 17:59:27 -04:00
|
|
|
INTC_LINE_VU0 = 6,
|
|
|
|
INTC_LINE_VU1 = 7,
|
2018-04-30 21:01:23 +01:00
|
|
|
INTC_LINE_IPU = 8,
|
|
|
|
INTC_LINE_TIMER0 = 9,
|
|
|
|
INTC_LINE_TIMER1 = 10,
|
|
|
|
INTC_LINE_TIMER2 = 11,
|
|
|
|
INTC_LINE_TIMER3 = 12,
|
2015-05-06 00:54:15 -04:00
|
|
|
};
|
|
|
|
|
2021-12-03 13:44:24 -05:00
|
|
|
CINTC();
|
2018-07-03 19:10:50 -04:00
|
|
|
virtual ~CINTC() = default;
|
2015-05-06 00:54:15 -04:00
|
|
|
|
2018-04-30 21:01:23 +01:00
|
|
|
void Reset();
|
|
|
|
bool IsInterruptPending() const;
|
2015-05-06 00:54:15 -04:00
|
|
|
|
2018-04-30 21:01:23 +01:00
|
|
|
uint32 GetRegister(uint32);
|
|
|
|
void SetRegister(uint32, uint32);
|
2015-05-06 00:54:15 -04:00
|
|
|
|
2018-04-30 21:01:23 +01:00
|
|
|
void AssertLine(uint32);
|
2015-05-06 00:54:15 -04:00
|
|
|
|
2018-04-30 21:01:23 +01:00
|
|
|
void LoadState(Framework::CZipArchiveReader&);
|
|
|
|
void SaveState(Framework::CZipArchiveWriter&);
|
2015-05-06 00:54:15 -04:00
|
|
|
|
|
|
|
private:
|
2018-04-30 21:01:23 +01:00
|
|
|
uint32 m_INTC_STAT;
|
|
|
|
uint32 m_INTC_MASK;
|
2015-05-06 00:54:15 -04:00
|
|
|
};
|