[Project64] Add Write32VideoInterface
This commit is contained in:
parent
adc422fca7
commit
1a02c7130c
|
@ -2663,60 +2663,7 @@ bool CMipsMemoryVM::SW_NonMemory(uint32_t PAddr, uint32_t Value)
|
||||||
break;
|
break;
|
||||||
case 0x04100000: Write32DPCommandRegisters(); break;
|
case 0x04100000: Write32DPCommandRegisters(); break;
|
||||||
case 0x04300000: Write32MIPSInterface(); break;
|
case 0x04300000: Write32MIPSInterface(); break;
|
||||||
case 0x04400000:
|
case 0x04400000: Write32VideoInterface(); break;
|
||||||
switch (PAddr)
|
|
||||||
{
|
|
||||||
case 0x04400000:
|
|
||||||
if (g_Reg->VI_STATUS_REG != Value)
|
|
||||||
{
|
|
||||||
g_Reg->VI_STATUS_REG = Value;
|
|
||||||
if (g_Plugins->Gfx()->ViStatusChanged != NULL)
|
|
||||||
{
|
|
||||||
g_Plugins->Gfx()->ViStatusChanged();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 0x04400004:
|
|
||||||
#ifdef CFB_READ
|
|
||||||
if (g_Reg->VI_ORIGIN_REG > 0x280)
|
|
||||||
{
|
|
||||||
SetFrameBuffer(g_Reg->VI_ORIGIN_REG, (uint32_t)(VI_WIDTH_REG * (VI_WIDTH_REG *.75)));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
g_Reg->VI_ORIGIN_REG = (Value & 0xFFFFFF);
|
|
||||||
//if (UpdateScreen != NULL )
|
|
||||||
//{
|
|
||||||
// UpdateScreen();
|
|
||||||
//}
|
|
||||||
break;
|
|
||||||
case 0x04400008:
|
|
||||||
if (g_Reg->VI_WIDTH_REG != Value)
|
|
||||||
{
|
|
||||||
g_Reg->VI_WIDTH_REG = Value;
|
|
||||||
if (g_Plugins->Gfx()->ViWidthChanged != NULL)
|
|
||||||
{
|
|
||||||
g_Plugins->Gfx()->ViWidthChanged();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 0x0440000C: g_Reg->VI_INTR_REG = Value; break;
|
|
||||||
case 0x04400010:
|
|
||||||
g_Reg->MI_INTR_REG &= ~MI_INTR_VI;
|
|
||||||
g_Reg->CheckInterrupts();
|
|
||||||
break;
|
|
||||||
case 0x04400014: g_Reg->VI_BURST_REG = Value; break;
|
|
||||||
case 0x04400018: g_Reg->VI_V_SYNC_REG = Value; break;
|
|
||||||
case 0x0440001C: g_Reg->VI_H_SYNC_REG = Value; break;
|
|
||||||
case 0x04400020: g_Reg->VI_LEAP_REG = Value; break;
|
|
||||||
case 0x04400024: g_Reg->VI_H_START_REG = Value; break;
|
|
||||||
case 0x04400028: g_Reg->VI_V_START_REG = Value; break;
|
|
||||||
case 0x0440002C: g_Reg->VI_V_BURST_REG = Value; break;
|
|
||||||
case 0x04400030: g_Reg->VI_X_SCALE_REG = Value; break;
|
|
||||||
case 0x04400034: g_Reg->VI_Y_SCALE_REG = Value; break;
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 0x04500000:
|
case 0x04500000:
|
||||||
switch (PAddr)
|
switch (PAddr)
|
||||||
{
|
{
|
||||||
|
@ -5743,4 +5690,63 @@ void CMipsMemoryVM::Write32MIPSInterface(void)
|
||||||
g_Notify->BreakPoint(__FILE__, __LINE__);
|
g_Notify->BreakPoint(__FILE__, __LINE__);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CMipsMemoryVM::Write32VideoInterface(void)
|
||||||
|
{
|
||||||
|
switch ((m_MemLookupAddress & 0xFFFFFFF))
|
||||||
|
{
|
||||||
|
case 0x04400000:
|
||||||
|
if (g_Reg->VI_STATUS_REG != m_MemLookupValue.UW[0])
|
||||||
|
{
|
||||||
|
g_Reg->VI_STATUS_REG = m_MemLookupValue.UW[0];
|
||||||
|
if (g_Plugins->Gfx()->ViStatusChanged != NULL)
|
||||||
|
{
|
||||||
|
g_Plugins->Gfx()->ViStatusChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 0x04400004:
|
||||||
|
#ifdef CFB_READ
|
||||||
|
if (g_Reg->VI_ORIGIN_REG > 0x280)
|
||||||
|
{
|
||||||
|
SetFrameBuffer(g_Reg->VI_ORIGIN_REG, (uint32_t)(VI_WIDTH_REG * (VI_WIDTH_REG *.75)));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
g_Reg->VI_ORIGIN_REG = (m_MemLookupValue.UW[0] & 0xFFFFFF);
|
||||||
|
//if (UpdateScreen != NULL )
|
||||||
|
//{
|
||||||
|
// UpdateScreen();
|
||||||
|
//}
|
||||||
|
break;
|
||||||
|
case 0x04400008:
|
||||||
|
if (g_Reg->VI_WIDTH_REG != m_MemLookupValue.UW[0])
|
||||||
|
{
|
||||||
|
g_Reg->VI_WIDTH_REG = m_MemLookupValue.UW[0];
|
||||||
|
if (g_Plugins->Gfx()->ViWidthChanged != NULL)
|
||||||
|
{
|
||||||
|
g_Plugins->Gfx()->ViWidthChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 0x0440000C: g_Reg->VI_INTR_REG = m_MemLookupValue.UW[0]; break;
|
||||||
|
case 0x04400010:
|
||||||
|
g_Reg->MI_INTR_REG &= ~MI_INTR_VI;
|
||||||
|
g_Reg->CheckInterrupts();
|
||||||
|
break;
|
||||||
|
case 0x04400014: g_Reg->VI_BURST_REG = m_MemLookupValue.UW[0]; break;
|
||||||
|
case 0x04400018: g_Reg->VI_V_SYNC_REG = m_MemLookupValue.UW[0]; break;
|
||||||
|
case 0x0440001C: g_Reg->VI_H_SYNC_REG = m_MemLookupValue.UW[0]; break;
|
||||||
|
case 0x04400020: g_Reg->VI_LEAP_REG = m_MemLookupValue.UW[0]; break;
|
||||||
|
case 0x04400024: g_Reg->VI_H_START_REG = m_MemLookupValue.UW[0]; break;
|
||||||
|
case 0x04400028: g_Reg->VI_V_START_REG = m_MemLookupValue.UW[0]; break;
|
||||||
|
case 0x0440002C: g_Reg->VI_V_BURST_REG = m_MemLookupValue.UW[0]; break;
|
||||||
|
case 0x04400030: g_Reg->VI_X_SCALE_REG = m_MemLookupValue.UW[0]; break;
|
||||||
|
case 0x04400034: g_Reg->VI_Y_SCALE_REG = m_MemLookupValue.UW[0]; break;
|
||||||
|
default:
|
||||||
|
if (bHaveDebugger())
|
||||||
|
{
|
||||||
|
g_Notify->BreakPoint(__FILE__, __LINE__);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -200,6 +200,7 @@ private:
|
||||||
static void Write32SPRegisters(void);
|
static void Write32SPRegisters(void);
|
||||||
static void Write32DPCommandRegisters(void);
|
static void Write32DPCommandRegisters(void);
|
||||||
static void Write32MIPSInterface(void);
|
static void Write32MIPSInterface(void);
|
||||||
|
static void Write32VideoInterface(void);
|
||||||
|
|
||||||
CMipsMemory_CallBack * const m_CBClass;
|
CMipsMemory_CallBack * const m_CBClass;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue