summaryrefslogtreecommitdiff
path: root/Source/Core/DSPCore
diff options
context:
space:
mode:
authorMarko Pusljar <LM1234@gmail.com>2010-05-23 08:41:58 +0000
committerMarko Pusljar <LM1234@gmail.com>2010-05-23 08:41:58 +0000
commita0c44df6c0cb2bd33a71590ac221dbd2f4bedaf3 (patch)
tree3225034637cc4b48d12c3957ed64aa8efb577fd8 /Source/Core/DSPCore
parent1883b32f3350f4276ab55d1de984fe072af6e1fa (diff)
misc stuff
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5468 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Core/DSPCore')
-rw-r--r--Source/Core/DSPCore/Src/DSPIntExtOps.cpp12
-rw-r--r--Source/Core/DSPCore/Src/DSPIntUtil.h1
-rw-r--r--Source/Core/DSPCore/Src/DSPTables.cpp2
3 files changed, 4 insertions, 11 deletions
diff --git a/Source/Core/DSPCore/Src/DSPIntExtOps.cpp b/Source/Core/DSPCore/Src/DSPIntExtOps.cpp
index 690dccf0a3..0928d57af7 100644
--- a/Source/Core/DSPCore/Src/DSPIntExtOps.cpp
+++ b/Source/Core/DSPCore/Src/DSPIntExtOps.cpp
@@ -19,22 +19,14 @@
#include "DSPIntExtOps.h"
// Extended opcodes do not exist on their own. These opcodes can only be
-// attached to opcodes that allow extending (8 lower bits of opcode not used by
+// attached to opcodes that allow extending (8 (or 7) lower bits of opcode not used by
// opcode). Extended opcodes do not modify program counter $pc register.
// Most of the suffixes increment or decrement one or more addressing registers
// (the first four, ARx). The increment/decrement is either 1, or the
// corresponding "index" register (the second four, IXx). The addressing
// registers will wrap in odd ways, dictated by the corresponding wrapping
-// register, WP0-3.
-
-// The following should be applied as a decrement (and is applied by
-// dsp_decrement_addr_reg):
-// ar[i] = (ar[i] & wp[i]) == 0 ? ar[i] | wp[i] : ar[i] - 1;
-// I have not found the corresponding algorithms for increments yet.
-// It's gotta be fairly simple though. See R3123, R3125 in Google Code.
-// (May have something to do with (ar[i] ^ wp[i]) == 0)
-
+// register, WR0-3.
namespace DSPInterpreter
{
diff --git a/Source/Core/DSPCore/Src/DSPIntUtil.h b/Source/Core/DSPCore/Src/DSPIntUtil.h
index c48b049403..4c19b5955a 100644
--- a/Source/Core/DSPCore/Src/DSPIntUtil.h
+++ b/Source/Core/DSPCore/Src/DSPIntUtil.h
@@ -57,6 +57,7 @@ inline bool dsp_SR_is_flag_set(int flag)
//
// increment, decrement 100% ok (as far as i can tell), increase, decrease still probs
+// NextPowerOf2()-1
inline u16 ToMask(u16 a)
{
a = a | (a >> 8);
diff --git a/Source/Core/DSPCore/Src/DSPTables.cpp b/Source/Core/DSPCore/Src/DSPTables.cpp
index 97b8aabd5d..486ac7e6d0 100644
--- a/Source/Core/DSPCore/Src/DSPTables.cpp
+++ b/Source/Core/DSPCore/Src/DSPTables.cpp
@@ -205,7 +205,6 @@ const DSPOPCTemplate opcodes[] =
{"SRS", 0x2800, 0xf800, DSPInterpreter::srs, NULL, 1, 2, {{P_MEM, 1, 0, 0, 0x00ff}, {P_REG18, 1, 0, 8, 0x0700}}, false, false},
// opcodes that can be extended
-// extended opcodes, note size of opcode will be set to 0
//3 - main opcode defined by 9 bits, extension defined by last 7 bits!!
{"XORR", 0x3000, 0xfc80, DSPInterpreter::xorr, NULL, 1 , 2, {{P_ACCM, 1, 0, 8, 0x0100},{P_REG1A, 1, 0, 9, 0x0200}}, true, false},
@@ -303,6 +302,7 @@ const DSPOPCTemplate opcodes[] =
const DSPOPCTemplate cw =
{"CW", 0x0000, 0x0000, NULL, NULL, 1, 1, {{P_VAL, 2, 0, 0, 0xffff}}, false, false};
+// extended opcodes
const DSPOPCTemplate opcodes_ext[] =
{