diff --git a/Source/Project64-core/N64System/Mips/Dma.cpp b/Source/Project64-core/N64System/Mips/Dma.cpp index 50922c825..4efd3bcb2 100644 --- a/Source/Project64-core/N64System/Mips/Dma.cpp +++ b/Source/Project64-core/N64System/Mips/Dma.cpp @@ -38,6 +38,7 @@ void CDMA::OnFirstDMA() case CIC_NUS_5167: offset = +0x0318; break; case CIC_NUS_8303: offset = +0x0318; break; case CIC_NUS_DDUS: offset = +0x0318; break; + case CIC_NUS_DDTL: offset = +0x0318; break; case CIC_UNKNOWN: case CIC_NUS_6102: offset = +0x0318; break; case CIC_NUS_6103: offset = +0x0318; break; diff --git a/Source/Project64-core/N64System/N64Class.cpp b/Source/Project64-core/N64System/N64Class.cpp index 814d9cab7..7831d0ef8 100644 --- a/Source/Project64-core/N64System/N64Class.cpp +++ b/Source/Project64-core/N64System/N64Class.cpp @@ -903,6 +903,8 @@ void CN64System::InitRegisters(bool bPostPif, CMipsMemoryVM & MMU) //64DD Registers m_Reg.ASIC_STATUS = DD_STATUS_RST_STATE; m_Reg.ASIC_ID_REG = 0x00030000; + if (g_DDRom && g_DDRom->CicChipID() == CIC_NUS_DDTL) + m_Reg.ASIC_ID_REG = 0x00040000; //m_Reg.REVISION_REGISTER = 0x00000511; m_Reg.FixFpuLocations(); @@ -989,6 +991,7 @@ void CN64System::InitRegisters(bool bPostPif, CMipsMemoryVM & MMU) case CIC_NUS_5167: case CIC_NUS_8303: case CIC_NUS_DDUS: + case CIC_NUS_DDTL: default: //no specific values break; @@ -1005,6 +1008,7 @@ void CN64System::InitRegisters(bool bPostPif, CMipsMemoryVM & MMU) m_Reg.m_GPR[22].DW = 0x000000000000003F; break; case CIC_NUS_8303: //64DD IPL CIC + case CIC_NUS_DDTL: //64DD IPL TOOL CIC case CIC_NUS_5167: //64DD CONVERSION CIC m_Reg.m_GPR[22].DW = 0x00000000000000DD; break; diff --git a/Source/Project64-core/N64System/N64RomClass.cpp b/Source/Project64-core/N64System/N64RomClass.cpp index 867db420b..c573a9c78 100644 --- a/Source/Project64-core/N64System/N64RomClass.cpp +++ b/Source/Project64-core/N64System/N64RomClass.cpp @@ -289,7 +289,7 @@ CICChip CN64Rom::GetCicChipID(uint8_t * RomData, uint64_t * CRC) case 0x000000D6D5BE5580: return CIC_NUS_6106; case 0x000001053BC19870: return CIC_NUS_5167; //64DD CONVERSION CIC case 0x000000D2E53EF008: return CIC_NUS_8303; //64DD IPL - case 0x000000D2E53EF39F: return CIC_NUS_8303; //64DD IPL TOOL + case 0x000000D2E53EF39F: return CIC_NUS_DDTL; //64DD IPL TOOL case 0x000000D2E53E5DDA: return CIC_NUS_DDUS; //64DD IPL US (different CIC) default: return CIC_UNKNOWN; @@ -422,6 +422,7 @@ bool CN64Rom::IsLoadedRomDDIPL() { case CIC_NUS_8303: case CIC_NUS_DDUS: + case CIC_NUS_DDTL: return true; default: return false; diff --git a/Source/Project64-core/N64System/N64Types.h b/Source/Project64-core/N64System/N64Types.h index 204c9adab..f06d1f865 100644 --- a/Source/Project64-core/N64System/N64Types.h +++ b/Source/Project64-core/N64System/N64Types.h @@ -67,7 +67,7 @@ enum CICChip { CIC_UNKNOWN = -1, CIC_NUS_6101 = 1, CIC_NUS_6102 = 2, CIC_NUS_6103 = 3, CIC_NUS_6104 = 4, CIC_NUS_6105 = 5, CIC_NUS_6106 = 6, CIC_NUS_5167 = 7, - CIC_NUS_8303 = 8, CIC_NUS_DDUS = 9 + CIC_NUS_8303 = 8, CIC_NUS_DDUS = 9, CIC_NUS_DDTL = 10 }; enum Country