summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/sound/disc_mth.h
diff options
context:
space:
mode:
author Couriersud <couriersud@users.noreply.github.com>2011-01-20 21:05:26 +0000
committer Couriersud <couriersud@users.noreply.github.com>2011-01-20 21:05:26 +0000
commit2118896d564cea749426b80aa6923d07593a2918 (patch)
tree1771b24d037a968a92299b43ffff0905cecd84f2 /src/emu/sound/disc_mth.h
parent2d4add99bc8c81a2e3c02821cdb730199f6aaa1a (diff)
Optimized RC_INTEGRATE and TRANSFORM. Nice improvement. [Couriersud]
Diffstat (limited to 'src/emu/sound/disc_mth.h')
-rw-r--r--src/emu/sound/disc_mth.h40
1 files changed, 39 insertions, 1 deletions
diff --git a/src/emu/sound/disc_mth.h b/src/emu/sound/disc_mth.h
index cc0bce53d02..465c2a0280d 100644
--- a/src/emu/sound/disc_mth.h
+++ b/src/emu/sound/disc_mth.h
@@ -97,7 +97,45 @@ DISCRETE_CLASS_STEP(dst_switch, 1, /* no context */ );
DISCRETE_CLASS_STEP(dst_aswitch, 1, /* no context */ );
-DISCRETE_CLASS_STEP(dst_transform, 1, /* no context */ );
+DISCRETE_CLASS_STEP(, 1, /* no context */ );
+class DISCRETE_CLASS_NAME(dst_transform): public discrete_base_node, public discrete_step_interface
+{
+ DISCRETE_CLASS_CONSTRUCTOR(dst_transform, base)
+ DISCRETE_CLASS_DESTRUCTOR(dst_transform)
+public:
+ enum token {
+ TOK_END = 0,
+ TOK_MULT,
+ TOK_DIV,
+ TOK_ADD,
+ TOK_MINUS,
+ TOK_0,
+ TOK_1,
+ TOK_2,
+ TOK_3,
+ TOK_4,
+ TOK_DUP,
+ TOK_ABS, /* absolute value */
+ TOK_NEG, /* * -1 */
+ TOK_NOT, /* Logical NOT of Last Value */
+ TOK_EQUAL, /* Logical = */
+ TOK_GREATER, /* Logical > */
+ TOK_LESS, /* Logical < */
+ TOK_AND, /* Bitwise AND */
+ TOK_OR, /* Bitwise OR */
+ TOK_XOR /* Bitwise XOR */
+ };
+ void step(void);
+ void reset(void);
+protected:
+private:
+ DISCRETE_CLASS_INPUT(I_IN0, 0);
+ DISCRETE_CLASS_INPUT(I_IN1, 1);
+ DISCRETE_CLASS_INPUT(I_IN2, 2);
+ DISCRETE_CLASS_INPUT(I_IN3, 3);
+ DISCRETE_CLASS_INPUT(I_IN4, 4);
+ enum token precomp[32];
+};
/* Component specific */