summaryrefslogtreecommitdiff
path: root/Source/Core/DSPCore/Src/DSPAnalyzer.cpp
diff options
context:
space:
mode:
authorMarko Pusljar <LM1234@gmail.com>2010-03-28 17:10:36 +0000
committerMarko Pusljar <LM1234@gmail.com>2010-03-28 17:10:36 +0000
commit6bcae13ff8603a8a26e7a5e7ad2f9cd09734f4a0 (patch)
treedf7daa0864a9dfba15d282f744188c1383ea5ef4 /Source/Core/DSPCore/Src/DSPAnalyzer.cpp
parent4fb21aa137ba16e9794cf349c714c93a17d27e20 (diff)
DSPLLE - small idleskip improvment for zelda
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5248 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Core/DSPCore/Src/DSPAnalyzer.cpp')
-rw-r--r--Source/Core/DSPCore/Src/DSPAnalyzer.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/Source/Core/DSPCore/Src/DSPAnalyzer.cpp b/Source/Core/DSPCore/Src/DSPAnalyzer.cpp
index 740002ba75..9dc09eba2a 100644
--- a/Source/Core/DSPCore/Src/DSPAnalyzer.cpp
+++ b/Source/Core/DSPCore/Src/DSPAnalyzer.cpp
@@ -30,7 +30,7 @@ u8 code_flags[ISPACE];
// as well give up its time slice immediately, after executing once.
// Max signature length is 6. A 0 in a signature is ignored.
-#define NUM_IDLE_SIGS 7
+#define NUM_IDLE_SIGS 8
#define MAX_IDLE_SIG_SIZE 6
// 0xFFFF means ignore.
@@ -65,7 +65,12 @@ const u16 idle_skip_sigs[NUM_IDLE_SIGS][MAX_IDLE_SIG_SIZE + 1] =
{ 0x00de, 0xFFFE, // LR $AC0.M, @CMBH
0x02c0, 0x8000, // ANDCF $AC0.M, #0x8000
0x029c, 0xFFFF, // JLNZ 0x05cf
- 0 }
+ 0 },
+ // From Zelda - experimental
+ { 0x00da, 0x0352, // lr $AX0.H, @0x0352
+ 0x8600, // tstaxh $AX0.H
+ 0x0295, 0xFFFF, // jz 0x????
+ 0, 0 }
};
void Reset()
@@ -121,7 +126,7 @@ void AnalyzeRange(int start_addr, int end_addr)
}
if (found)
{
- NOTICE_LOG(DSPLLE, "Idle skip location found at %02x", addr);
+ NOTICE_LOG(DSPLLE, "Idle skip location found at %02x (sigNum:%d)", addr, s+1);
code_flags[addr] |= CODE_IDLE_SKIP;
}
}