Good bye for node->node

This commit is contained in:
Couriersud 2009-09-06 17:36:56 +00:00
parent ac6238dc59
commit 64c1866c1b
8 changed files with 29 additions and 28 deletions

View File

@ -548,7 +548,7 @@ static DISCRETE_RESET(dsd_555_mstbl)
context->output_type = info->options & DISC_555_OUT_MASK; context->output_type = info->options & DISC_555_OUT_MASK;
if ((context->output_type == DISC_555_OUT_COUNT_F) || (context->output_type == DISC_555_OUT_COUNT_R)) if ((context->output_type == DISC_555_OUT_COUNT_F) || (context->output_type == DISC_555_OUT_COUNT_R))
{ {
discrete_log(node->info, "Invalid Output type in NODE_%d.\n", node->node - NODE_00); discrete_log(node->info, "Invalid Output type in NODE_%d.\n", NODE_BLOCKINDEX(node));
context->output_type = DISC_555_OUT_SQW; context->output_type = DISC_555_OUT_SQW;
} }
@ -1522,7 +1522,7 @@ static DISCRETE_RESET(dsd_566)
context->error = 0; context->error = 0;
if (info->v_neg >= info->v_pos) if (info->v_neg >= info->v_pos)
{ {
logerror("[v_neg >= v_pos] - NODE_%d DISABLED!\n", node->node - NODE_00); logerror("[v_neg >= v_pos] - NODE_%d DISABLED!\n", NODE_BLOCKINDEX(node));
context->error = 1; context->error = 1;
return; return;
} }

View File

@ -786,17 +786,17 @@ static DISCRETE_RESET( dst_rcdisc4)
/* some error checking. */ /* some error checking. */
if (DST_RCDISC4__R1 <= 0 || DST_RCDISC4__R2 <= 0 || DST_RCDISC4__C1 <= 0 || (DST_RCDISC4__R3 <= 0 && context->type == 1)) if (DST_RCDISC4__R1 <= 0 || DST_RCDISC4__R2 <= 0 || DST_RCDISC4__C1 <= 0 || (DST_RCDISC4__R3 <= 0 && context->type == 1))
{ {
discrete_log(node->info, "Invalid component values in NODE_%d.\n", node->node - NODE_00); discrete_log(node->info, "Invalid component values in NODE_%d.\n", NODE_BLOCKINDEX(node));
return; return;
} }
if (DST_RCDISC4__VP < 3) if (DST_RCDISC4__VP < 3)
{ {
discrete_log(node->info, "vP must be >= 3V in NODE_%d.\n", node->node - NODE_00); discrete_log(node->info, "vP must be >= 3V in NODE_%d.\n", NODE_BLOCKINDEX(node));
return; return;
} }
if (DST_RCDISC4__TYPE < 1 || DST_RCDISC4__TYPE > 3) if (DST_RCDISC4__TYPE < 1 || DST_RCDISC4__TYPE > 3)
{ {
discrete_log(node->info, "Invalid circuit type in NODE_%d.\n", node->node - NODE_00); discrete_log(node->info, "Invalid circuit type in NODE_%d.\n", NODE_BLOCKINDEX(node));
return; return;
} }

View File

@ -183,7 +183,7 @@ static DISCRETE_RESET(dss_adjustment)
{ {
context->port = input_port_by_tag(node->info->device->machine->portconfig, (const char *)node->custom); context->port = input_port_by_tag(node->info->device->machine->portconfig, (const char *)node->custom);
if (context->port == NULL) if (context->port == NULL)
fatalerror("DISCRETE_ADJUSTMENT_TAG - NODE_%d has invalid tag", node->node-NODE_00); fatalerror("DISCRETE_ADJUSTMENT_TAG - NODE_%d has invalid tag", NODE_BLOCKINDEX(node));
} }
else else
context->port = input_port_by_index(node->info->device->machine->portconfig, DSS_ADJUSTMENT__PORT); context->port = input_port_by_index(node->info->device->machine->portconfig, DSS_ADJUSTMENT__PORT);

View File

@ -491,7 +491,7 @@ static DISCRETE_STEP(dst_divide)
if(DST_DIVIDE__DIV == 0) if(DST_DIVIDE__DIV == 0)
{ {
node->output[0 ]= DBL_MAX; /* Max out but don't break */ node->output[0 ]= DBL_MAX; /* Max out but don't break */
discrete_log(node->info, "dst_divider_step() - Divide by Zero attempted in NODE_%02d.\n",NODE_INDEX(node->node)); discrete_log(node->info, "dst_divider_step() - Divide by Zero attempted in NODE_%02d.\n",NODE_BLOCKINDEX(node));
} }
else else
{ {
@ -1354,7 +1354,7 @@ static DISCRETE_STEP(dst_multiplex)
else else
{ {
/* Bad address. We will leave the output alone. */ /* Bad address. We will leave the output alone. */
discrete_log(node->info, "NODE_%02d - Address = %d. Out of bounds\n", node->node-NODE_00, addr); discrete_log(node->info, "NODE_%02d - Address = %d. Out of bounds\n", NODE_BLOCKINDEX(node), addr);
} }
} }
else else

View File

@ -66,17 +66,17 @@ static DISCRETE_START( dso_task )
int i; int i;
found = 0; found = 0;
for (i = 0; i < task->numbuffered; i++) for (i = 0; i < task->numbuffered; i++)
if (task->nodes[i] == inputnode) if (task->nodes[i]->block->node == inputnode)
found = 1; found = 1;
if (!found) if (!found)
{ {
if (task->numbuffered >= DISCRETE_MAX_TASK_OUTPUTS) if (task->numbuffered >= DISCRETE_MAX_TASK_OUTPUTS)
fatalerror("dso_task_start - Number of maximum buffered nodes exceeded"); fatalerror("dso_task_start - Number of maximum buffered nodes exceeded");
discrete_log(node->info, "dso_task_start - buffering %d(%d) in task %p referenced by %d", NODE_INDEX(inputnode), NODE_CHILD_NODE_NUM(inputnode), task, NODE_INDEX(snode->node)); discrete_log(node->info, "dso_task_start - buffering %d(%d) in task %p referenced by %d", NODE_INDEX(inputnode), NODE_CHILD_NODE_NUM(inputnode), task, NODE_BLOCKINDEX(snode));
task->node_buf[task->numbuffered] = auto_alloc_array(node->info->device->machine, double, 2048); task->node_buf[task->numbuffered] = auto_alloc_array(node->info->device->machine, double, 2048);
task->dest[task->numbuffered] = (double **) &snode->input[inputnum]; task->dest[task->numbuffered] = (double **) &snode->input[inputnum];
task->nodes[task->numbuffered] = inputnode; task->nodes[task->numbuffered] = discrete_find_node(node->info, inputnode);
task->numbuffered++; task->numbuffered++;
} }
} }

View File

@ -500,7 +500,7 @@ static DISCRETE_RESET(dss_lfsr)
context->out_lfsr_reg = (lfsr_desc->flags & DISC_LFSR_FLAG_OUTPUT_SR_SN1) ? 1 : 0; context->out_lfsr_reg = (lfsr_desc->flags & DISC_LFSR_FLAG_OUTPUT_SR_SN1) ? 1 : 0;
if ((lfsr_desc->clock_type < DISC_CLK_ON_F_EDGE) || (lfsr_desc->clock_type > DISC_CLK_IS_FREQ)) if ((lfsr_desc->clock_type < DISC_CLK_ON_F_EDGE) || (lfsr_desc->clock_type > DISC_CLK_IS_FREQ))
discrete_log(node->info, "Invalid clock type passed in NODE_%d\n", NODE_INDEX(node->node)); discrete_log(node->info, "Invalid clock type passed in NODE_%d\n", NODE_BLOCKINDEX(node));
context->last = (DSS_COUNTER__CLOCK != 0); context->last = (DSS_COUNTER__CLOCK != 0);
if (lfsr_desc->clock_type == DISC_CLK_IS_FREQ) context->t_clock = 1.0 / DSS_LFSR_NOISE__CLOCK; if (lfsr_desc->clock_type == DISC_CLK_IS_FREQ) context->t_clock = 1.0 / DSS_LFSR_NOISE__CLOCK;
@ -1569,7 +1569,7 @@ static DISCRETE_STEP(dss_inverter_osc)
vG2 = dss_inverter_tf(node,vG3); vG2 = dss_inverter_tf(node,vG3);
break; break;
default: default:
fatalerror("DISCRETE_INVERTER_OSC - Wrong type on NODE_%02d", node->node - NODE_00); fatalerror("DISCRETE_INVERTER_OSC - Wrong type on NODE_%02d", NODE_BLOCKINDEX(node));
} }
switch (info->options & DISC_OSC_INVERTER_TYPE_MASK) switch (info->options & DISC_OSC_INVERTER_TYPE_MASK)
{ {
@ -1628,7 +1628,7 @@ static DISCRETE_STEP(dss_inverter_osc)
diff = diff - diff * exp(-node->info->sample_time/(context->c * rMix)); diff = diff - diff * exp(-node->info->sample_time/(context->c * rMix));
break; break;
default: default:
fatalerror("DISCRETE_INVERTER_OSC - Wrong type on NODE_%02d", node->node - NODE_00); fatalerror("DISCRETE_INVERTER_OSC - Wrong type on NODE_%02d", NODE_BLOCKINDEX(node));
} }
context->v_cap += diff; context->v_cap += diff;
context->v_g2_old = vG2; context->v_g2_old = vG2;

View File

@ -556,7 +556,7 @@ static void display_profiling(discrete_info *info)
node_description *node = (node_description *) entry->ptr; node_description *node = (node_description *) entry->ptr;
if (node->run_time > tresh) if (node->run_time > tresh)
printf("%3d: %20s %8.2f %10.2f\n", NODE_INDEX(node->node), node->module->name, (float) node->run_time / (float) total * 100.0, ((float) node->run_time) / (float) info->total_samples); printf("%3d: %20s %8.2f %10.2f\n", NODE_BLOCKINDEX(node), node->module->name, (float) node->run_time / (float) total * 100.0, ((float) node->run_time) / (float) info->total_samples);
} }
/* Task information */ /* Task information */
@ -782,7 +782,7 @@ static void init_nodes(discrete_info *info, linked_list_entry *block_list, const
/* static inits */ /* static inits */
node->context = NULL; node->context = NULL;
node->info = info; node->info = info;
node->node = block->node; //node->node = block->node;
node->module = &module_list[modulenum]; node->module = &module_list[modulenum];
node->output[0] = 0.0; node->output[0] = 0.0;
node->block = block; node->block = block;
@ -900,8 +900,8 @@ static void init_nodes(discrete_info *info, linked_list_entry *block_list, const
} }
/* and register save state */ /* and register save state */
if (node->node != NODE_SPECIAL) if (node->block->node != NODE_SPECIAL)
state_save_register_device_item_array(device, node->node, node->output); state_save_register_device_item_array(device, node->block->node, node->output);
} }
/* if no outputs, give an error */ /* if no outputs, give an error */
@ -937,10 +937,10 @@ static void find_input_nodes(discrete_info *info)
{ {
node_description *node_ref = info->indexed_node[NODE_INDEX(inputnode)]; node_description *node_ref = info->indexed_node[NODE_INDEX(inputnode)];
if (!node_ref) if (!node_ref)
fatalerror("discrete_start - NODE_%02d referenced a non existent node NODE_%02d", NODE_INDEX(node->node), NODE_INDEX(inputnode)); fatalerror("discrete_start - NODE_%02d referenced a non existent node NODE_%02d", NODE_BLOCKINDEX(node), NODE_INDEX(inputnode));
if (NODE_CHILD_NODE_NUM(inputnode) >= node_ref->module->num_output) if (NODE_CHILD_NODE_NUM(inputnode) >= node_ref->module->num_output)
fatalerror("discrete_start - NODE_%02d referenced non existent output %d on node NODE_%02d", NODE_INDEX(node->node), NODE_CHILD_NODE_NUM(inputnode), NODE_INDEX(inputnode)); fatalerror("discrete_start - NODE_%02d referenced non existent output %d on node NODE_%02d", NODE_BLOCKINDEX(node), NODE_CHILD_NODE_NUM(inputnode), NODE_INDEX(inputnode));
node->input[inputnum] = &(node_ref->output[NODE_CHILD_NODE_NUM(inputnode)]); /* Link referenced node out to input */ node->input[inputnum] = &(node_ref->output[NODE_CHILD_NODE_NUM(inputnode)]); /* Link referenced node out to input */
node->input_is_node |= 1 << inputnum; /* Bit flag if input is node */ node->input_is_node |= 1 << inputnum; /* Bit flag if input is node */
@ -950,9 +950,9 @@ static void find_input_nodes(discrete_info *info)
/* warn if trying to use a node for an input that can only be static */ /* warn if trying to use a node for an input that can only be static */
if IS_VALUE_A_NODE(block->initial[inputnum]) if IS_VALUE_A_NODE(block->initial[inputnum])
{ {
discrete_log(info, "Warning - discrete_start - NODE_%02d trying to use a node on static input %d", NODE_INDEX(node->node), inputnum); discrete_log(info, "Warning - discrete_start - NODE_%02d trying to use a node on static input %d", NODE_BLOCKINDEX(node), inputnum);
/* also report it in the error log so it is not missed */ /* also report it in the error log so it is not missed */
logerror("Warning - discrete_start - NODE_%02d trying to use a node on static input %d", NODE_INDEX(node->node), inputnum); logerror("Warning - discrete_start - NODE_%02d trying to use a node on static input %d", NODE_BLOCKINDEX(node), inputnum);
} }
} }
} }

View File

@ -3638,7 +3638,6 @@ struct _discrete_module
struct _node_description struct _node_description
{ {
int node; /* The node's index number in the node list */
double output[DISCRETE_MAX_OUTPUTS]; /* The node's last output value */ double output[DISCRETE_MAX_OUTPUTS]; /* The node's last output value */
int active_inputs; /* Number of active inputs on this node type */ int active_inputs; /* Number of active inputs on this node type */
@ -3678,11 +3677,11 @@ struct _discrete_task_context
{ {
linked_list_entry *list; linked_list_entry *list;
int numbuffered; int numbuffered;
double *ptr[DISCRETE_MAX_TASK_OUTPUTS]; double *ptr[DISCRETE_MAX_TASK_OUTPUTS];
double *node_buf[DISCRETE_MAX_TASK_OUTPUTS]; double *node_buf[DISCRETE_MAX_TASK_OUTPUTS];
int nodes[DISCRETE_MAX_TASK_OUTPUTS]; node_description *nodes[DISCRETE_MAX_TASK_OUTPUTS];
double **dest[DISCRETE_MAX_TASK_OUTPUTS]; double **dest[DISCRETE_MAX_TASK_OUTPUTS];
}; };
@ -4080,6 +4079,8 @@ enum {
#error "DISCRETE_MAX_OUTPUTS != 8" #error "DISCRETE_MAX_OUTPUTS != 8"
#endif #endif
#define NODE_BLOCKINDEX(_node) NODE_INDEX((_node)->block->node)
#define NODE_RELATIVE(_x, _y) (NODE(NODE_INDEX(_x) + (_y))) #define NODE_RELATIVE(_x, _y) (NODE(NODE_INDEX(_x) + (_y)))
#define NODE_NC NODE_00 #define NODE_NC NODE_00