mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-29 17:19:44 -06:00
dsp stuff - the same ucode hash under lle and hle now (had to rename couple of dissasms), ucode dumping under hle (debug only), small dsp:read32 change (needed for some homebrew)
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6059 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
@ -65,20 +65,16 @@ void DSPHost_InterruptRequest()
|
||||
|
||||
u32 DSPHost_CodeLoaded(const u8 *ptr, int size)
|
||||
{
|
||||
u32 crc = GenerateCRC(ptr, size);
|
||||
u32 ector_crc = HashEctor(ptr, size);
|
||||
|
||||
#if defined(_DEBUG) || defined(DEBUGFAST)
|
||||
DumpDSPCode(ptr, size, crc);
|
||||
DumpDSPCode(ptr, size, ector_crc);
|
||||
#endif
|
||||
|
||||
// HLE plugin uses this crc method
|
||||
u32 ector_crc = HashEctor(ptr, size);
|
||||
|
||||
DSPSymbols::Clear();
|
||||
|
||||
// Auto load text file - if none just disassemble.
|
||||
|
||||
// TODO: Don't hardcode for Zelda.
|
||||
NOTICE_LOG(DSPLLE, "ector_crc: %08x", ector_crc);
|
||||
|
||||
DSPSymbols::Clear();
|
||||
@ -87,12 +83,14 @@ u32 DSPHost_CodeLoaded(const u8 *ptr, int size)
|
||||
{
|
||||
case 0x86840740: success = DSPSymbols::ReadAnnotatedAssembly("../../docs/DSP/DSP_UC_Zelda.txt"); break;
|
||||
case 0x42f64ac4: success = DSPSymbols::ReadAnnotatedAssembly("../../docs/DSP/DSP_UC_Luigi.txt"); break;
|
||||
case 0x07f88145: success = DSPSymbols::ReadAnnotatedAssembly("../../docs/DSP/DSP_UC_4CB8233B.txt"); break;
|
||||
case 0x3ad3b7ac: success = DSPSymbols::ReadAnnotatedAssembly("../../docs/DSP/DSP_UC_8A7A05E2.txt"); break;
|
||||
case 0x3daf59b9: success = DSPSymbols::ReadAnnotatedAssembly("../../docs/DSP/DSP_UC_D9D066EA.txt"); break;
|
||||
case 0x4e8a8b21: success = DSPSymbols::ReadAnnotatedAssembly("../../docs/DSP/DSP_UC_6A696CE7.txt"); break;
|
||||
case 0xe2136399: success = DSPSymbols::ReadAnnotatedAssembly("../../docs/DSP/DSP_UC_EB79C705.txt"); break;
|
||||
case 0xdd7e72d5: success = DSPSymbols::ReadAnnotatedAssembly("../../docs/DSP/DSP_UC_3B3B30CA.txt"); break;
|
||||
case 0x07f88145: success = DSPSymbols::ReadAnnotatedAssembly("../../docs/DSP/DSP_UC_AX_07F88145.txt"); break;
|
||||
case 0x3ad3b7ac: success = DSPSymbols::ReadAnnotatedAssembly("../../docs/DSP/DSP_UC_AX_3AD3B7AC.txt"); break;
|
||||
case 0x3daf59b9: success = DSPSymbols::ReadAnnotatedAssembly("../../docs/DSP/DSP_UC_AX_3DAF59B9.txt"); break;
|
||||
case 0x4e8a8b21: success = DSPSymbols::ReadAnnotatedAssembly("../../docs/DSP/DSP_UC_AX_4E8A8B21.txt"); break;
|
||||
case 0xe2136399: success = DSPSymbols::ReadAnnotatedAssembly("../../docs/DSP/DSP_UC_AX_E2136399.txt"); break;
|
||||
case 0xdd7e72d5: success = DSPSymbols::ReadAnnotatedAssembly("../../docs/DSP/DSP_UC_GBA.txt"); break;
|
||||
case 0x347112BA: success = DSPSymbols::ReadAnnotatedAssembly("../../docs/DSP/DSP_UC_AXWii.txt"); break;
|
||||
case 0xD643001F: success = DSPSymbols::ReadAnnotatedAssembly("../../docs/DSP/DSP_UC_SuperMarioGalaxy.txt"); break;
|
||||
default: success = false; break;
|
||||
}
|
||||
|
||||
@ -106,7 +104,7 @@ u32 DSPHost_CodeLoaded(const u8 *ptr, int size)
|
||||
if (m_DebuggerFrame)
|
||||
m_DebuggerFrame->Refresh();
|
||||
#endif
|
||||
return crc;
|
||||
return ector_crc;
|
||||
}
|
||||
|
||||
void DSPHost_UpdateDebugger()
|
||||
|
@ -67,28 +67,6 @@ bool DumpDSPCode(const u8 *code_be, int size_in_bytes, u32 crc)
|
||||
return File::WriteStringToFile(true, text, txtFile);
|
||||
}
|
||||
|
||||
u32 GenerateCRC(const unsigned char* _pBuffer, int _pLength)
|
||||
{
|
||||
unsigned long CRC = 0xFFFFFFFF;
|
||||
|
||||
while (_pLength--)
|
||||
{
|
||||
unsigned long Temp = (unsigned long)((CRC & 0xFF) ^ *_pBuffer++);
|
||||
|
||||
for (int j = 0; j < 8; j++)
|
||||
{
|
||||
if (Temp & 0x1)
|
||||
Temp = (Temp >> 1) ^ 0xEDB88320;
|
||||
else
|
||||
Temp >>= 1;
|
||||
}
|
||||
|
||||
CRC = (CRC >> 8) ^ Temp;
|
||||
}
|
||||
|
||||
return CRC ^ 0xFFFFFFFF;
|
||||
}
|
||||
|
||||
// TODO make this useful :p
|
||||
bool DumpCWCode(u32 _Address, u32 _Length)
|
||||
{
|
||||
|
@ -19,7 +19,6 @@
|
||||
#define _DSPLLE_TOOLS_H
|
||||
|
||||
bool DumpDSPCode(const u8 *code_be, int size_in_bytes, u32 crc);
|
||||
u32 GenerateCRC(const unsigned char* _pBuffer, int _pLength);
|
||||
bool DumpCWCode(u32 _Address, u32 _Length);
|
||||
|
||||
#endif //_DSPLLE_TOOLS_H
|
||||
|
Reference in New Issue
Block a user