mirror of
https://github.com/libretro/Play-.git
synced 2025-02-26 14:35:38 +00:00
git-svn-id: http://svn.purei.org/purei/trunk@403 b36208d7-6611-0410-8bec-b1987f11c4a2
This commit is contained in:
parent
35ea190fbd
commit
fab031b4dd
@ -41,11 +41,7 @@ CIoman::~CIoman()
|
||||
{
|
||||
delete fileIterator->second;
|
||||
}
|
||||
for(DeviceMapType::iterator deviceIterator(m_devices.begin());
|
||||
m_devices.end() != deviceIterator; deviceIterator++)
|
||||
{
|
||||
delete deviceIterator->second;
|
||||
}
|
||||
m_devices.clear();
|
||||
if(m_fileIoHandler != NULL)
|
||||
{
|
||||
delete m_fileIoHandler;
|
||||
@ -57,7 +53,7 @@ std::string CIoman::GetId() const
|
||||
return "ioman";
|
||||
}
|
||||
|
||||
void CIoman::RegisterDevice(const char* name, Ioman::CDevice* device)
|
||||
void CIoman::RegisterDevice(const char* name, const DevicePtr& device)
|
||||
{
|
||||
m_devices[name] = device;
|
||||
}
|
||||
|
@ -2,6 +2,7 @@
|
||||
#define _IOP_IOMAN_H_
|
||||
|
||||
#include <map>
|
||||
#include <memory>
|
||||
#include "Iop_SifMan.h"
|
||||
#include "Iop_Module.h"
|
||||
#include "Ioman_Device.h"
|
||||
@ -139,6 +140,8 @@ namespace Iop
|
||||
SIF_MODULE_ID = 0x80000001
|
||||
};
|
||||
|
||||
typedef std::tr1::shared_ptr<Ioman::CDevice> DevicePtr;
|
||||
|
||||
CIoman(uint8*, CSifMan&);
|
||||
virtual ~CIoman();
|
||||
|
||||
@ -146,7 +149,7 @@ namespace Iop
|
||||
virtual void Invoke(CMIPS&, unsigned int);
|
||||
virtual void Invoke(uint32, uint32*, uint32, uint32*, uint32, uint8*);
|
||||
|
||||
void RegisterDevice(const char*, Ioman::CDevice*);
|
||||
void RegisterDevice(const char*, const DevicePtr&);
|
||||
|
||||
uint32 Open(uint32, const char*);
|
||||
uint32 Close(uint32);
|
||||
@ -159,7 +162,7 @@ namespace Iop
|
||||
|
||||
private:
|
||||
typedef std::map<uint32, Framework::CStream*> FileMapType;
|
||||
typedef std::map<std::string, Ioman::CDevice*> DeviceMapType;
|
||||
typedef std::map<std::string, DevicePtr> DeviceMapType;
|
||||
|
||||
void Open(CMIPS&);
|
||||
|
||||
|
@ -222,8 +222,8 @@ void CSpu::Render(int16* samples, unsigned int sampleCount, unsigned int sampleR
|
||||
}
|
||||
else
|
||||
{
|
||||
uint8* repeat = reader.GetRepeat();
|
||||
channel.repeat = (repeat - m_ram) / 8;
|
||||
// uint8* repeat = reader.GetRepeat();
|
||||
// channel.repeat = (repeat - m_ram) / 8;
|
||||
}
|
||||
int16 readSample = 0;
|
||||
reader.SetPitch(m_baseSamplingRate, channel.pitch);
|
||||
@ -508,6 +508,10 @@ void CSpu::WriteRegister(uint32 address, uint16 value)
|
||||
|
||||
uint32 CSpu::ReceiveDma(uint8* buffer, uint32 blockSize, uint32 blockAmount)
|
||||
{
|
||||
#ifdef _DEBUG
|
||||
CLog::GetInstance().Print(LOG_NAME, "Receiving DMA transfer to 0x%0.8X. Size = 0x%0.8X bytes.\r\n",
|
||||
m_bufferAddr, blockSize * blockAmount);
|
||||
#endif
|
||||
unsigned int blocksTransfered = 0;
|
||||
for(unsigned int i = 0; i < blockAmount; i++)
|
||||
{
|
||||
|
@ -42,7 +42,7 @@
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=""$(FrameworkRoot)\include";"$(ProjectDir)\..\..\Source";"$(ProjectDir)\Source""
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MSVC;_CRT_SECURE_NO_WARNINGS;_PSX;_NULL_SIFMAN"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MSVC;_CRT_SECURE_NO_WARNINGS;_PSX;_NULL_SIFMAN;DEBUGGER_INCLUDED"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
|
@ -41,6 +41,8 @@ void CCore::Reset()
|
||||
}
|
||||
// memset(m_ram, 0, RAMSIZE);
|
||||
// m_transferAddress.f = 0;
|
||||
m_tempReverb = 0;
|
||||
m_tempReverbA = 0;
|
||||
m_coreAttr = 0;
|
||||
}
|
||||
|
||||
@ -129,8 +131,14 @@ uint32 CCore::ReadRegisterCore(unsigned int channelId, uint32 address, uint32 va
|
||||
result = (transferAddress >> (16 + 1));
|
||||
}
|
||||
break;
|
||||
case A_ESA_LO:
|
||||
result = (m_tempReverb & 0xFFFF);
|
||||
break;
|
||||
case A_EEA_HI:
|
||||
result = (m_tempReverbA >> 16);
|
||||
break;
|
||||
}
|
||||
LogRead(address);
|
||||
LogRead(address, result);
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -197,6 +205,15 @@ uint32 CCore::WriteRegisterCore(unsigned int channelId, uint32 address, uint32 v
|
||||
m_spuBase->SetTransferAddress(transferAddress);
|
||||
}
|
||||
break;
|
||||
case A_ESA_HI:
|
||||
m_tempReverb = (m_tempReverb & 0xFFFF) | (value << 16);
|
||||
break;
|
||||
case A_ESA_LO:
|
||||
m_tempReverb = (m_tempReverb & 0xF0000) | (value);
|
||||
break;
|
||||
case A_EEA_HI:
|
||||
m_tempReverbA = ((value & 0x0F) << 16) | 0xFFFF;
|
||||
break;
|
||||
}
|
||||
LogWrite(address, value);
|
||||
return 0;
|
||||
@ -214,6 +231,9 @@ uint32 CCore::ReadRegisterChannel(unsigned int channelId, uint32 address, uint32
|
||||
CSpu::CHANNEL& channel(m_spuBase->GetChannel(channelId));
|
||||
switch(address)
|
||||
{
|
||||
case VP_ENVX:
|
||||
return (channel.adsrVolume >> 16);
|
||||
break;
|
||||
case VA_NAX_HI:
|
||||
result = ((channel.current) >> (16 + 1)) & 0xFFFF;
|
||||
break;
|
||||
@ -232,6 +252,7 @@ uint32 CCore::WriteRegisterChannel(unsigned int channelId, uint32 address, uint3
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
LogChannelWrite(channelId, address, value);
|
||||
if(!m_spuBase) return 0;
|
||||
CSpu::CHANNEL& channel(m_spuBase->GetChannel(channelId));
|
||||
switch(address)
|
||||
@ -327,11 +348,10 @@ uint32 CCore::WriteRegisterChannel(unsigned int channelId, uint32 address, uint3
|
||||
break;
|
||||
}
|
||||
*/
|
||||
LogChannelWrite(channelId, address, value);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void CCore::LogRead(uint32 address)
|
||||
void CCore::LogRead(uint32 address, uint32 value)
|
||||
{
|
||||
const char* logName = m_logName.c_str();
|
||||
switch(address)
|
||||
@ -343,8 +363,14 @@ void CCore::LogRead(uint32 address)
|
||||
CLog::GetInstance().Print(logName, "= STATX\r\n");
|
||||
break;
|
||||
case A_TSA_HI:
|
||||
CLog::GetInstance().Print(logName, "= A_TSA_HI.\r\n");
|
||||
CLog::GetInstance().Print(logName, "= A_TSA_HI = 0x%0.4X.\r\n", value);
|
||||
break;
|
||||
case A_ESA_LO:
|
||||
CLog::GetInstance().Print(logName, "= A_ESA_LO = 0x%0.4X.\r\n", value);
|
||||
break;
|
||||
case A_EEA_HI:
|
||||
CLog::GetInstance().Print(logName, "= A_EEA_HI = 0x%0.4X.\r\n", value);
|
||||
break;
|
||||
default:
|
||||
CLog::GetInstance().Print(logName, "Read an unknown register 0x%0.4X.\r\n", address);
|
||||
break;
|
||||
@ -380,6 +406,15 @@ void CCore::LogWrite(uint32 address, uint32 value)
|
||||
case A_STD:
|
||||
CLog::GetInstance().Print(logName, "A_STD = 0x%0.4X\r\n", value);
|
||||
break;
|
||||
case A_ESA_LO:
|
||||
CLog::GetInstance().Print(logName, "A_ESA_LO = 0x%0.4X\r\n", value);
|
||||
break;
|
||||
case A_ESA_HI:
|
||||
CLog::GetInstance().Print(logName, "A_ESA_HI = 0x%0.4X\r\n", value);
|
||||
break;
|
||||
case A_EEA_HI:
|
||||
CLog::GetInstance().Print(logName, "A_EEA_HI = 0x%0.4X\r\n", value);
|
||||
break;
|
||||
default:
|
||||
CLog::GetInstance().Print(logName, "Write 0x%0.4X to an unknown register 0x%0.4X.\r\n", value, address);
|
||||
break;
|
||||
@ -391,6 +426,10 @@ void CCore::LogChannelRead(unsigned int channelId, uint32 address, uint32 result
|
||||
const char* logName = m_logName.c_str();
|
||||
switch(address)
|
||||
{
|
||||
case VP_ENVX:
|
||||
CLog::GetInstance().Print(logName, "ch%0.2i: = VP_ENVX = 0x%0.4X.\r\n",
|
||||
channelId, result);
|
||||
break;
|
||||
case VA_NAX_HI:
|
||||
CLog::GetInstance().Print(logName, "ch%0.2i: = VA_NAX_HI = 0x%0.4X.\r\n",
|
||||
channelId, result);
|
||||
|
@ -55,6 +55,10 @@ namespace PS2
|
||||
VA_NAX_HI = 0x1F9001C8,
|
||||
VA_NAX_LO = 0x1F9001CA,
|
||||
R_REG_BASE = 0x1F9002E0, //Reverb Base
|
||||
A_ESA_HI = 0x1F9002E0,
|
||||
A_ESA_LO = 0x1F9002E2,
|
||||
A_EEA_HI = 0x1F90033C,
|
||||
A_EEA_LO = 0x1F90033E,
|
||||
STATX = 0x1F900344,
|
||||
};
|
||||
|
||||
@ -90,7 +94,7 @@ namespace PS2
|
||||
uint32 ReadRegisterChannel(unsigned int, uint32, uint32);
|
||||
uint32 WriteRegisterChannel(unsigned int, uint32, uint32);
|
||||
|
||||
void LogRead(uint32);
|
||||
void LogRead(uint32, uint32);
|
||||
void LogWrite(uint32, uint32);
|
||||
void LogChannelRead(unsigned int, uint32, uint32);
|
||||
void LogChannelWrite(unsigned int, uint32, uint32);
|
||||
@ -104,6 +108,8 @@ namespace PS2
|
||||
// UNION32_16 m_transferAddress;
|
||||
std::string m_logName;
|
||||
CSpu* m_spuBase;
|
||||
uint32 m_tempReverb;
|
||||
uint32 m_tempReverbA;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
Binary file not shown.
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user