improve PE logging + misc

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2716 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
hrydgard 2009-03-21 18:00:54 +00:00
parent 81996b890b
commit 76d24f2c0d
5 changed files with 41 additions and 14 deletions

View File

@ -15,6 +15,11 @@
// Official SVN repository and contact information can be found at
// http://code.google.com/p/dolphin-emu/
// http://developer.nvidia.com/object/General_FAQ.html#t6 !!!!!
#include "Common.h"
#include "ChunkFile.h"
@ -34,8 +39,13 @@ namespace PixelEngine
// internal hardware addresses
enum
{
CTRL_REGISTER = 0x00a,
TOKEN_REG = 0x00e,
PE_CTRL_REGISTER = 0x00a,
PE_TOKEN_REG = 0x00e,
PE_ZCONF = 0x000,
PE_ALPHACONF = 0x002,
PE_DSTALPHACONF = 0x004,
PE_ALPHAMODE = 0x006,
PE_ALPHAREAD = 0x008,
};
// fifo Control Register
@ -90,16 +100,21 @@ void Read16(u16& _uReturnValue, const u32 _iAddress)
switch (_iAddress & 0xFFF)
{
case CTRL_REGISTER:
case PE_CTRL_REGISTER:
_uReturnValue = g_ctrlReg.Hex;
INFO_LOG(PIXELENGINE,"\t CTRL_REGISTER : %04x", _uReturnValue);
return;
case TOKEN_REG:
case PE_TOKEN_REG:
_uReturnValue = CommandProcessor::fifo.PEToken;
INFO_LOG(PIXELENGINE,"\t TOKEN_REG : %04x", _uReturnValue);
return;
case PE_ALPHACONF:
// Most games read this early. no idea why.
INFO_LOG(PIXELENGINE, "(r16): PE_ALPHACONF");
break;
default:
WARN_LOG(PIXELENGINE, "(r16): unknown @ %08x", _iAddress);
break;
@ -115,11 +130,9 @@ void Write32(const u32 _iValue, const u32 _iAddress)
void Write16(const u16 _iValue, const u32 _iAddress)
{
DEBUG_LOG(PIXELENGINE, "(w16): 0x%04x @ 0x%08x",_iValue,_iAddress);
switch (_iAddress & 0xFFF)
{
case CTRL_REGISTER:
case PE_CTRL_REGISTER:
{
UPECtrlReg tmpCtrl(_iValue);
@ -131,17 +144,25 @@ void Write16(const u16 _iValue, const u32 _iAddress)
g_ctrlReg.PEToken = 0; // this flag is write only
g_ctrlReg.PEFinish = 0; // this flag is write only
DEBUG_LOG(PIXELENGINE, "(w16): PE_CTRL_REGISTER: 0x%04x", _iValue);
UpdateInterrupts();
}
break;
case TOKEN_REG:
case PE_TOKEN_REG:
//LOG(PIXELENGINE,"WEIRD: program wrote token: %i",_iValue);
PanicAlert("PIXELENGINE : (w16) WTF? PowerPC program wrote token: %i", _iValue);
PanicAlert("(w16) WTF? PowerPC program wrote token: %i", _iValue);
//only the gx pipeline is supposed to be able to write here
//g_token = _iValue;
break;
// These are probably the settings for direct CPU EFB access. Ugh.
case PE_ZCONF: INFO_LOG("(w16) ZCONF: %02x", _iValue); break;
case PE_ALPHACONF: INFO_LOG("(w16) ALPHACONF: %02x", _iValue); break;
case PE_DSTALPHACONF: INFO_LOG("(w16) DSTALPHACONF: %02x", _iValue); break;
case PE_ALPHAMODE: INFO_LOG("(w16) ALPHAMODE: %02x", _iValue); break;
case PE_ALPHAREAD: INFO_LOG("(w16) ALPHAREAD: %02x", _iValue); break;
default:
WARN_LOG(PIXELENGINE, "Write16: unknown %04x @ %08x", _iValue, _iAddress);
break;

View File

@ -463,6 +463,10 @@ namespace CPUCompare
// get start tic
PROFILER_QUERY_PERFORMACE_COUNTER(&b->ticStart);
}
#if defined(_DEBUG) || defined(DEBUGFAST)
// should help logged stacktraces become more accurate
MOV(32, M(&PC), Imm32(js.blockStart));
#endif
//Start up the register allocators
//They use the information in gpa/fpa to preload commonly used registers.

View File

@ -315,7 +315,7 @@ void JitBlockCache::GetBlockNumbersFromAddress(u32 em_address, std::vector<int>
//overwritten. We should have thrown it out before, on instruction cache invalidate or something.
//Not ne cessarily bad though , if a game has simply thrown away a lot of code and is now using the space
//for something else, then it's fine.
WARN_LOG(MASTER_LOG, "WARNING - ClearCache detected code overwrite @ %08x", blocks[blocknum].originalAddress);
DEBUG_LOG(MASTER_LOG, "WARNING - ClearCache detected code overwrite @ %08x", blocks[blocknum].originalAddress);
}
// We don't unlink blocks, we just send anyone who tries to run them back to the dispatcher.

View File

@ -25,6 +25,7 @@
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="4"
CharacterSet="0"
WholeProgramOptimization="0"
>
<Tool
Name="VCPreBuildEventTool"
@ -88,6 +89,7 @@
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="4"
CharacterSet="0"
WholeProgramOptimization="0"
>
<Tool
Name="VCPreBuildEventTool"
@ -152,7 +154,7 @@
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="4"
CharacterSet="0"
WholeProgramOptimization="1"
WholeProgramOptimization="0"
>
<Tool
Name="VCPreBuildEventTool"
@ -218,7 +220,7 @@
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="4"
CharacterSet="0"
WholeProgramOptimization="1"
WholeProgramOptimization="0"
>
<Tool
Name="VCPreBuildEventTool"
@ -284,7 +286,7 @@
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="4"
CharacterSet="0"
WholeProgramOptimization="1"
WholeProgramOptimization="0"
>
<Tool
Name="VCPreBuildEventTool"

View File

@ -267,7 +267,7 @@ int ReadOutPBs(u32 pbs_address, AXParamBlock* _pPBs, int _num)
if (pSrc != NULL)
{
short *pDest = (short *)&_pPBs[i];
for (size_t p = 0; p < sizeof(AXParamBlock) / 2; p++)
for (int p = 0; p < (int)sizeof(AXParamBlock) / 2; p++)
{
pDest[p] = Common::swap16(pSrc[p]);