git-svn-id: https://localhost/svn/Project64/trunk@51 111125ac-702d-7242-af9c-5ba8ae61c1ef

This commit is contained in:
zilmar 2011-01-04 09:10:28 +00:00
parent d4c874abca
commit e815584b59
12 changed files with 54 additions and 27 deletions

View File

@ -111,6 +111,7 @@ void CTraceLog::WriteTrace ( TraceType Type, LPCTSTR Message)
else if ((Type & TraceRSP )!= 0) { nPos += _stprintf(pBuffer+nPos,_T("%s"),_T("RSP : ")); } else if ((Type & TraceRSP )!= 0) { nPos += _stprintf(pBuffer+nPos,_T("%s"),_T("RSP : ")); }
else if ((Type & TraceTLB )!= 0) { nPos += _stprintf(pBuffer+nPos,_T("%s"),_T("TLB : ")); } else if ((Type & TraceTLB )!= 0) { nPos += _stprintf(pBuffer+nPos,_T("%s"),_T("TLB : ")); }
else if ((Type & TraceValidate )!= 0) { nPos += _stprintf(pBuffer+nPos,_T("%s"),_T("Valid : ")); } else if ((Type & TraceValidate )!= 0) { nPos += _stprintf(pBuffer+nPos,_T("%s"),_T("Valid : ")); }
else if ((Type & TraceAudio )!= 0) { nPos += _stprintf(pBuffer+nPos,_T("%s"),_T("Audio : ")); }
else { nPos += _stprintf(pBuffer+nPos,_T("%s"),_T("Unknown: ")); } else { nPos += _stprintf(pBuffer+nPos,_T("%s"),_T("Unknown: ")); }
for (int i = 0; i < (int)m_Modules.size(); i++ ) for (int i = 0; i < (int)m_Modules.size(); i++ )

View File

@ -12,6 +12,7 @@ enum TraceType
TraceRSP = 0x00000040, TraceRSP = 0x00000040,
TraceTLB = 0x00000080, TraceTLB = 0x00000080,
TraceValidate = 0x00000100, TraceValidate = 0x00000100,
TraceAudio = 0x00000200,
TraceNoHeader = 0x80000000, TraceNoHeader = 0x80000000,
}; };

View File

@ -11,7 +11,6 @@ CAudio::~CAudio (void)
void CAudio::Reset ( void ) void CAudio::Reset ( void )
{ {
m_CurrentLength = 0;
m_SecondBuff = 0; m_SecondBuff = 0;
m_Status = 0; m_Status = 0;
m_BytesPerSecond = 0; m_BytesPerSecond = 0;
@ -36,18 +35,20 @@ DWORD CAudio::GetStatus ( void )
void CAudio::LenChanged ( void ) void CAudio::LenChanged ( void )
{ {
WriteTraceF(TraceAudio,__FUNCTION__ ": _Reg->AI_LEN_REG = %d",_Reg->AI_LEN_REG);
if (_Reg->AI_LEN_REG != 0) if (_Reg->AI_LEN_REG != 0)
{ {
if (m_CurrentLength == 0) { DWORD NewLength = GetLength() + _Reg->AI_LEN_REG;
_SystemTimer->SetTimer(CSystemTimer::AiTimer,NewLength * m_CountsPerByte,false);
WriteTraceF(TraceAudio,__FUNCTION__ ": NewLength = %d",NewLength);
/*if (m_CurrentLength == 0) {
m_CurrentLength = _Reg->AI_LEN_REG; m_CurrentLength = _Reg->AI_LEN_REG;
_SystemTimer->SetTimer(CSystemTimer::AiTimer,m_CurrentLength * m_CountsPerByte,false);
} else { } else {
m_SecondBuff = _Reg->AI_LEN_REG; m_SecondBuff = _Reg->AI_LEN_REG;
m_Status |= 0x80000000; //m_Status |= 0x80000000;
} }*/
} else { } else {
_SystemTimer->StopTimer(CSystemTimer::AiTimer); _SystemTimer->StopTimer(CSystemTimer::AiTimer);
m_CurrentLength = 0;
m_SecondBuff = 0; m_SecondBuff = 0;
m_Status = 0; m_Status = 0;
} }
@ -60,7 +61,7 @@ void CAudio::LenChanged ( void )
void CAudio::TimerDone ( void ) void CAudio::TimerDone ( void )
{ {
_Reg->MI_INTR_REG |= MI_INTR_AI; /*_Reg->MI_INTR_REG |= MI_INTR_AI;
_Reg->CheckInterrupts(); _Reg->CheckInterrupts();
if (m_SecondBuff != 0) { if (m_SecondBuff != 0) {
@ -69,6 +70,8 @@ void CAudio::TimerDone ( void )
m_CurrentLength = m_SecondBuff; m_CurrentLength = m_SecondBuff;
m_SecondBuff = 0; m_SecondBuff = 0;
m_Status &= 0x7FFFFFFF; m_Status &= 0x7FFFFFFF;
*/
m_SecondBuff = 0;
} }
void CAudio::SetViIntr ( DWORD VI_INTR_TIME ) void CAudio::SetViIntr ( DWORD VI_INTR_TIME )
@ -83,6 +86,7 @@ void CAudio::SetViIntr ( DWORD VI_INTR_TIME )
void CAudio::SetFrequency (DWORD Dacrate, DWORD System) void CAudio::SetFrequency (DWORD Dacrate, DWORD System)
{ {
WriteTraceF(TraceAudio,__FUNCTION__ "(Dacrate: %X System: %d): AI_BITRATE_REG = %X",Dacrate,System,_Reg->AI_BITRATE_REG);
DWORD Frequency; DWORD Frequency;
switch (System) { switch (System) {
@ -93,6 +97,8 @@ void CAudio::SetFrequency (DWORD Dacrate, DWORD System)
//nBlockAlign = 16 / 8 * 2; //nBlockAlign = 16 / 8 * 2;
m_BytesPerSecond = Frequency * 4; m_BytesPerSecond = Frequency * 4;
m_BytesPerSecond = 194532;
m_BytesPerSecond = 128024;
if (System == SYSTEM_PAL) { if (System == SYSTEM_PAL) {
m_FramesPerSecond = 50; m_FramesPerSecond = 50;

View File

@ -12,20 +12,10 @@ public:
void SetViIntr ( DWORD VI_INTR_TIME ); void SetViIntr ( DWORD VI_INTR_TIME );
void SetFrequency ( DWORD Dacrate, DWORD System ); void SetFrequency ( DWORD Dacrate, DWORD System );
/* void AiCallBack ( void );
void UpdateAudioTimer ( DWORD CountsPerFrame );
*/
private: private:
DWORD m_CurrentLength;
DWORD m_SecondBuff; DWORD m_SecondBuff;
DWORD m_Status; DWORD m_Status;
DWORD m_BytesPerSecond; DWORD m_BytesPerSecond;
int m_CountsPerByte; int m_CountsPerByte;
int m_FramesPerSecond; int m_FramesPerSecond;
/* float m_VSyncTiming;
double m_FramesPerSecond;
DWORD m_Length;
DWORD m_CurrentCount;
DWORD m_IntScheduled;*/
}; };

View File

@ -875,7 +875,7 @@ void CMipsMemoryVM::Compile_SW_Const ( DWORD Value, DWORD VAddr ) {
case 0x0450000C: case 0x0450000C:
/* Clear Interrupt */; /* Clear Interrupt */;
AndConstToVariable(~MI_INTR_AI,&_Reg->MI_INTR_REG,"MI_INTR_REG"); AndConstToVariable(~MI_INTR_AI,&_Reg->MI_INTR_REG,"MI_INTR_REG");
if (bFixedAudio()) if (!bFixedAudio())
{ {
AndConstToVariable(~MI_INTR_AI,&_Reg->m_AudioIntrReg,"m_AudioIntrReg"); AndConstToVariable(~MI_INTR_AI,&_Reg->m_AudioIntrReg,"m_AudioIntrReg");
} }
@ -1141,7 +1141,10 @@ void CMipsMemoryVM::Compile_SW_Register (x86Reg Reg, DWORD VAddr )
case 0x0450000C: case 0x0450000C:
/* Clear Interrupt */; /* Clear Interrupt */;
AndConstToVariable(~MI_INTR_AI,&_Reg->MI_INTR_REG,"MI_INTR_REG"); AndConstToVariable(~MI_INTR_AI,&_Reg->MI_INTR_REG,"MI_INTR_REG");
AndConstToVariable(~MI_INTR_AI,&_Reg->m_AudioIntrReg,"m_AudioIntrReg"); if (!bFixedAudio())
{
AndConstToVariable(~MI_INTR_AI,&_Reg->m_AudioIntrReg,"m_AudioIntrReg");
}
BeforeCallDirect(m_RegWorkingSet); BeforeCallDirect(m_RegWorkingSet);
MoveConstToX86reg((DWORD)_Reg,x86_ECX); MoveConstToX86reg((DWORD)_Reg,x86_ECX);
Call_Direct(AddressOf(&CRegisters::CheckInterrupts),"CRegisters::CheckInterrupts"); Call_Direct(AddressOf(&CRegisters::CheckInterrupts),"CRegisters::CheckInterrupts");

View File

@ -449,6 +449,10 @@ void CN64System::DisplayRomInfo ( WND_HANDLE hParent ) {
void CN64System::Pause(void) void CN64System::Pause(void)
{ {
if (m_EndEmulation)
{
return;
}
ResetEvent(m_hPauseEvent); ResetEvent(m_hPauseEvent);
_Settings->SaveBool(GameRunning_CPU_Paused,true); _Settings->SaveBool(GameRunning_CPU_Paused,true);
_Notify->RefreshMenu(); _Notify->RefreshMenu();

View File

@ -816,7 +816,7 @@ CCompiledFunc * CRecompiler::CompilerCode ( void )
void CRecompiler::ClearRecompCode_Phys(DWORD Address, int length, REMOVE_REASON Reason ) { void CRecompiler::ClearRecompCode_Phys(DWORD Address, int length, REMOVE_REASON Reason ) {
WriteTraceF(TraceError,"CRecompiler::ClearRecompCode_Phys Not Implemented (Address: %X, Length: %d Reason: %d)",Address,length,Reason); //WriteTraceF(TraceError,"CRecompiler::ClearRecompCode_Phys Not Implemented (Address: %X, Length: %d Reason: %d)",Address,length,Reason);
if (LookUpMode() == FuncFind_VirtualLookup) if (LookUpMode() == FuncFind_VirtualLookup)
{ {

View File

@ -242,7 +242,9 @@ bool CAudioPlugin::ValidPluginVersion(PLUGIN_INFO * PluginInfo) {
void CAudioPlugin::UnloadPlugin(void) { void CAudioPlugin::UnloadPlugin(void) {
if (m_hAudioThread) { if (m_hAudioThread)
{
WriteTraceF(TraceAudio,__FUNCTION__ ": Terminate Audio Thread");
TerminateThread(m_hAudioThread,0); TerminateThread(m_hAudioThread,0);
m_hAudioThread = NULL; m_hAudioThread = NULL;
} }
@ -264,6 +266,8 @@ void CAudioPlugin::UnloadPlugin(void) {
void CAudioPlugin::DacrateChanged (SystemType Type) void CAudioPlugin::DacrateChanged (SystemType Type)
{ {
if (!Initilized()) { return; } if (!Initilized()) { return; }
WriteTraceF(TraceAudio,__FUNCTION__ ": SystemType: %s", Type == SYSTEM_NTSC ? "SYSTEM_NTSC" : "SYSTEM_PAL");
DWORD Frequency = _Reg->AI_DACRATE_REG * 30; DWORD Frequency = _Reg->AI_DACRATE_REG * 30;
DWORD CountsPerSecond = (_Reg->VI_V_SYNC_REG != 0 ? (_Reg->VI_V_SYNC_REG + 1) * _Settings->LoadDword(Game_ViRefreshRate) : 500000) * 60; DWORD CountsPerSecond = (_Reg->VI_V_SYNC_REG != 0 ? (_Reg->VI_V_SYNC_REG + 1) * _Settings->LoadDword(Game_ViRefreshRate) : 500000) * 60;
m_DacrateChanged(Type); m_DacrateChanged(Type);
@ -271,7 +275,8 @@ void CAudioPlugin::DacrateChanged (SystemType Type)
void CAudioPlugin::AudioThread (CAudioPlugin * _this) { void CAudioPlugin::AudioThread (CAudioPlugin * _this) {
SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL ); SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL );
for (;;) { for (;;)
{
_this->Update(true); _this->Update(true);
} }
} }

View File

@ -430,6 +430,19 @@ bool CMainMenu::ProcessMessage(WND_HANDLE hWnd, DWORD FromAccelerator, DWORD Men
_Settings->SaveDword(Debugger_AppLogLevel, LogLevel ); _Settings->SaveDword(Debugger_AppLogLevel, LogLevel );
} }
break; break;
case ID_DEBUGGER_APPLOG_AUDIO_EMU:
{
DWORD LogLevel = _Settings->LoadDword(Debugger_AppLogLevel);
if ((LogLevel & TraceAudio) != 0)
{
LogLevel &= ~TraceAudio;
} else {
LogLevel |= TraceAudio;
}
_Settings->SaveDword(Debugger_AppLogLevel, LogLevel );
}
break;
case ID_DEBUGGER_APPLOG_FLUSH: case ID_DEBUGGER_APPLOG_FLUSH:
_Settings->SaveBool(Debugger_AppLogFlush,!_Settings->LoadBool(Debugger_AppLogFlush)); _Settings->SaveBool(Debugger_AppLogFlush,!_Settings->LoadBool(Debugger_AppLogFlush));
break; break;
@ -1004,6 +1017,10 @@ void CMainMenu::FillOutMenu ( MENU_HANDLE hMenu ) {
if ((LogLevel & TraceGfxPlugin) != 0) { Item.ItemTicked = true; } if ((LogLevel & TraceGfxPlugin) != 0) { Item.ItemTicked = true; }
DebugAppLoggingMenu.push_back(Item); DebugAppLoggingMenu.push_back(Item);
Item.Reset(ID_DEBUGGER_APPLOG_AUDIO_EMU,EMPTY_STRING,EMPTY_STDSTR,NULL,"Audio Emulation" );
if ((LogLevel & TraceAudio) != 0) { Item.ItemTicked = true; }
DebugAppLoggingMenu.push_back(Item);
Item.Reset(ID_DEBUGGER_APPLOG_DEBUG,EMPTY_STRING,EMPTY_STDSTR,NULL,"Debug Messages" ); Item.Reset(ID_DEBUGGER_APPLOG_DEBUG,EMPTY_STRING,EMPTY_STDSTR,NULL,"Debug Messages" );
if ((LogLevel & TraceDebug) != 0) { Item.ItemTicked = true; } if ((LogLevel & TraceDebug) != 0) { Item.ItemTicked = true; }
DebugAppLoggingMenu.push_back(Item); DebugAppLoggingMenu.push_back(Item);

View File

@ -40,7 +40,7 @@ enum MainMenuID {
// App logging // App logging
ID_DEBUGGER_APPLOG_ERRORS, ID_DEBUGGER_APPLOG_SETTINGS, ID_DEBUGGER_APPLOG_GFX_PLUGIN, ID_DEBUGGER_APPLOG_ERRORS, ID_DEBUGGER_APPLOG_SETTINGS, ID_DEBUGGER_APPLOG_GFX_PLUGIN,
ID_DEBUGGER_APPLOG_DEBUG, ID_DEBUGGER_APPLOG_FLUSH, ID_DEBUGGER_APPLOG_RECOMPILER, ID_DEBUGGER_APPLOG_DEBUG, ID_DEBUGGER_APPLOG_FLUSH, ID_DEBUGGER_APPLOG_RECOMPILER,
ID_DEBUGGER_APPLOG_RSP, ID_DEBUGGER_APPLOG_TLB, ID_DEBUGGER_APPLOG_RSP, ID_DEBUGGER_APPLOG_TLB, ID_DEBUGGER_APPLOG_AUDIO_EMU,
//Profile Menu //Profile Menu
ID_PROFILE_PROFILE, ID_PROFILE_RESETCOUNTER, ID_PROFILE_GENERATELOG, ID_PROFILE_PROFILE, ID_PROFILE_RESETCOUNTER, ID_PROFILE_GENERATELOG,

View File

@ -925,8 +925,8 @@ END
// //
VS_VERSION_INFO VERSIONINFO VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,7,51,50 FILEVERSION 1,7,51,51
PRODUCTVERSION 1,7,51,50 PRODUCTVERSION 1,7,51,51
FILEFLAGSMASK 0x3fL FILEFLAGSMASK 0x3fL
#ifdef _DEBUG #ifdef _DEBUG
FILEFLAGS 0x1L FILEFLAGS 0x1L
@ -943,12 +943,12 @@ BEGIN
BEGIN BEGIN
VALUE "CompanyName", " " VALUE "CompanyName", " "
VALUE "FileDescription", "Project64" VALUE "FileDescription", "Project64"
VALUE "FileVersion", "1, 7, 51, 50" VALUE "FileVersion", "1, 7, 51, 51"
VALUE "InternalName", "Project64" VALUE "InternalName", "Project64"
VALUE "LegalCopyright", "Copyright © 2010" VALUE "LegalCopyright", "Copyright © 2010"
VALUE "OriginalFilename", "Project64.exe" VALUE "OriginalFilename", "Project64.exe"
VALUE "ProductName", " Project64" VALUE "ProductName", " Project64"
VALUE "ProductVersion", "1, 7, 51, 50" VALUE "ProductVersion", "1, 7, 51, 51"
END END
END END
BLOCK "VarFileInfo" BLOCK "VarFileInfo"