mirror of
https://github.com/holub/mame
synced 2025-07-05 09:57:47 +03:00
Cleanups and version bump.
This commit is contained in:
parent
a86f8758fc
commit
5df39c5473
@ -1136,7 +1136,7 @@ static CPU_EXPORT_STATE( i808x )
|
||||
case I8085_SID:
|
||||
{
|
||||
int sid = devcb_call_read_line(&cpustate->in_sid_func);
|
||||
|
||||
|
||||
cpustate->ietemp = ((cpustate->IM & IM_SID) != 0);
|
||||
cpustate->ietemp = (sid != 0);
|
||||
}
|
||||
|
@ -619,19 +619,19 @@ static void superfx_add_clocks_internal(superfx_state *cpustate, INT32 clocks)
|
||||
{
|
||||
//printf( "superfx_add_clocks: %d\n", clocks);
|
||||
/*
|
||||
if(cpustate->romcl)
|
||||
{
|
||||
printf( "ROM is accessing\n" );
|
||||
printf( "romcl = %d, -= MIN(%d, %d) (= %d)\n", cpustate->romcl, clocks, cpustate->romcl, MIN(clocks, cpustate->romcl));
|
||||
cpustate->romcl -= MIN(clocks, cpustate->romcl);
|
||||
if(cpustate->romcl == 0)
|
||||
{
|
||||
cpustate->sfr &= ~SUPERFX_SFR_R;
|
||||
printf( "superfx_op_read: reading from rom, calling superfx_bus_read: %08x\n", (cpustate->rombr << 16) + cpustate->r[14] );
|
||||
cpustate->romdr = superfx_bus_read(cpustate, (cpustate->rombr << 16) + cpustate->r[14]);
|
||||
}
|
||||
}
|
||||
*/
|
||||
if(cpustate->romcl)
|
||||
{
|
||||
printf( "ROM is accessing\n" );
|
||||
printf( "romcl = %d, -= MIN(%d, %d) (= %d)\n", cpustate->romcl, clocks, cpustate->romcl, MIN(clocks, cpustate->romcl));
|
||||
cpustate->romcl -= MIN(clocks, cpustate->romcl);
|
||||
if(cpustate->romcl == 0)
|
||||
{
|
||||
cpustate->sfr &= ~SUPERFX_SFR_R;
|
||||
printf( "superfx_op_read: reading from rom, calling superfx_bus_read: %08x\n", (cpustate->rombr << 16) + cpustate->r[14] );
|
||||
cpustate->romdr = superfx_bus_read(cpustate, (cpustate->rombr << 16) + cpustate->r[14]);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
if(cpustate->ramcl)
|
||||
{
|
||||
|
@ -686,7 +686,7 @@ static DISCRETE_STEP(dst_rcdisc3)
|
||||
else
|
||||
diff = diff - (diff * context->exponent0);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if( diff < 0 )
|
||||
@ -1102,7 +1102,7 @@ static DISCRETE_STEP(dst_rcfilter_sw)
|
||||
break;
|
||||
default:
|
||||
rs = 0;
|
||||
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
if (( bits & (1 << i)) != 0)
|
||||
|
@ -132,7 +132,7 @@ static void *task_callback(void *param, int threadid)
|
||||
ti->context->ptr[i] = &ti->context->node_buf[i][0];
|
||||
|
||||
samples = ti->samples;
|
||||
while (samples-- > 0)
|
||||
while (samples-- > 0)
|
||||
{
|
||||
step_nodes_in_list(&ti->context->list);
|
||||
}
|
||||
@ -162,7 +162,7 @@ static DISCRETE_STEP( dso_output )
|
||||
{
|
||||
stream_sample_t **output = (stream_sample_t **) &node->context;
|
||||
double val;
|
||||
|
||||
|
||||
/* Add gain to the output and put into the buffers */
|
||||
/* Clipping will be handled by the main sound system */
|
||||
val = DISCRETE_INPUT(0) * DISCRETE_INPUT(1);
|
||||
@ -200,10 +200,10 @@ static int linked_list_count(linked_list_entry *list)
|
||||
{
|
||||
int cnt = 0;
|
||||
linked_list_entry *entry;
|
||||
|
||||
|
||||
for (entry = list; entry != NULL; entry = entry->next)
|
||||
cnt++;
|
||||
|
||||
|
||||
return cnt;
|
||||
}
|
||||
|
||||
@ -239,7 +239,7 @@ static const discrete_module module_list[] =
|
||||
{ DSO_TASK_START ,"DSO_TASK_START" , 0 ,0 ,NULL ,NULL },
|
||||
{ DSO_TASK_END ,"DSO_TASK_END" , 0 ,0 ,dso_task_reset ,dso_task_step },
|
||||
{ DSO_TASK_SYNC ,"DSO_TASK_SYNC" , 0 ,0 ,NULL ,NULL },
|
||||
|
||||
|
||||
/* nop */
|
||||
{ DSS_NOP ,"DSS_NOP" , 0 ,0 ,NULL ,NULL },
|
||||
|
||||
@ -376,7 +376,7 @@ static void discrete_build_list(discrete_info *info, discrete_sound_block *intf,
|
||||
else if (intf[node_count].type == DSO_REPLACE)
|
||||
{
|
||||
linked_list_entry *entry;
|
||||
|
||||
|
||||
node_count++;
|
||||
if (intf[node_count].type == DSS_NULL)
|
||||
fatalerror("discrete_build_list: DISCRETE_REPLACE at end of node_list");
|
||||
@ -384,7 +384,7 @@ static void discrete_build_list(discrete_info *info, discrete_sound_block *intf,
|
||||
for (entry = info->block_list; entry != NULL; entry = entry->next)
|
||||
{
|
||||
discrete_sound_block *block = (discrete_sound_block *) entry->ptr;
|
||||
|
||||
|
||||
if (block->type != NODE_SPECIAL )
|
||||
if (block->node == intf[node_count].node)
|
||||
{
|
||||
@ -438,12 +438,12 @@ static void discrete_sanity_check(discrete_info *info)
|
||||
{
|
||||
linked_list_entry *entry;
|
||||
int node_count = 0;
|
||||
|
||||
|
||||
discrete_log(info, "discrete_start() - Doing node list sanity check");
|
||||
for (entry = info->block_list; entry != NULL; entry = entry->next)
|
||||
{
|
||||
discrete_sound_block *block = (discrete_sound_block *) entry->ptr;
|
||||
|
||||
|
||||
/* make sure we don't have too many nodes overall */
|
||||
if (node_count > DISCRETE_MAX_NODES)
|
||||
fatalerror("discrete_start() - Upper limit of %d nodes exceeded, have you terminated the interface block?", DISCRETE_MAX_NODES);
|
||||
@ -503,7 +503,7 @@ static DEVICE_START( discrete )
|
||||
|
||||
/* first pass through the nodes: sanity check, fill in the indexed_nodes, and make a total count */
|
||||
discrete_sanity_check(info);
|
||||
|
||||
|
||||
/* Start with empty lists */
|
||||
info->node_list = NULL;
|
||||
info->step_list = NULL;
|
||||
@ -524,9 +524,9 @@ static DEVICE_START( discrete )
|
||||
info->discrete_stream = stream_create(device,linked_list_count(info->input_list), linked_list_count(info->output_list), info->sample_rate, info, discrete_stream_update);
|
||||
|
||||
/* allocate a queue */
|
||||
|
||||
|
||||
info->queue = osd_work_queue_alloc(WORK_QUEUE_FLAG_MULTI | WORK_QUEUE_FLAG_HIGH_FREQ);
|
||||
|
||||
|
||||
setup_disc_logs(info);
|
||||
}
|
||||
|
||||
@ -544,11 +544,11 @@ static DEVICE_STOP( discrete )
|
||||
int log_num;
|
||||
|
||||
osd_work_queue_free(info->queue);
|
||||
|
||||
|
||||
if (DISCRETE_PROFILING)
|
||||
{
|
||||
int count = 0;
|
||||
linked_list_entry *entry;
|
||||
linked_list_entry *entry;
|
||||
osd_ticks_t total = 0;
|
||||
osd_ticks_t tresh;
|
||||
|
||||
@ -783,13 +783,13 @@ static STREAM_UPDATE( discrete_stream_update )
|
||||
|
||||
if (samples == 0)
|
||||
return;
|
||||
|
||||
|
||||
/* Setup any output streams */
|
||||
for (entry = info->output_list, outputnum = 0; entry != NULL; entry = entry->next, outputnum++)
|
||||
{
|
||||
((node_description *) entry->ptr)->context = (void *) outputs[outputnum];
|
||||
}
|
||||
|
||||
|
||||
/* Setup any input streams */
|
||||
for (entry = info->input_list; entry != NULL; entry = entry->next)
|
||||
{
|
||||
@ -851,7 +851,7 @@ static void init_nodes(discrete_info *info, linked_list_entry *block_list, const
|
||||
linked_list_entry **task_list = &info->task_list;
|
||||
linked_list_entry **output_list = &info->output_list;
|
||||
linked_list_entry **input_list = &info->input_list;
|
||||
|
||||
|
||||
/* loop over all nodes */
|
||||
for (entry = block_list; entry != NULL; entry = entry->next)
|
||||
{
|
||||
|
@ -2272,7 +2272,7 @@
|
||||
* IN1 >------------------------' |/
|
||||
*
|
||||
* --------------------------------------------------
|
||||
*
|
||||
*
|
||||
* DISC_OP_AMP_FILTER_IS_HIGH_PASS_1
|
||||
* First Order High Pass Filter
|
||||
*
|
||||
@ -2529,7 +2529,7 @@
|
||||
* diode junction voltage)
|
||||
*
|
||||
* The polarity of the diode junction voltage determines the polarity of the diode.
|
||||
*
|
||||
*
|
||||
* Example config line
|
||||
*
|
||||
* DISCRETE_RCDISC3(NODE_11,NODE_10,10,100,220,CAP_U(1), 0.5)
|
||||
@ -3237,12 +3237,12 @@
|
||||
* custom = address of specific initialization data
|
||||
*
|
||||
* In most case, you should be able to use
|
||||
*
|
||||
*
|
||||
* discrete_custom_info = {DISCRETE_CUSTOM_MODULE(basename, context type), custom}
|
||||
*
|
||||
* if you have used DISCRETE_STEP(basename) and DISCRETE_RESET(basename) to define
|
||||
*
|
||||
* if you have used DISCRETE_STEP(basename) and DISCRETE_RESET(basename) to define
|
||||
* the step/reset procedures.
|
||||
*
|
||||
*
|
||||
* EXAMPLES: see Donkey Kong, Mario Bros.
|
||||
*
|
||||
***********************************************************************
|
||||
@ -3638,7 +3638,7 @@ struct _node_description
|
||||
|
||||
void * context; /* Contextual information specific to this node type */
|
||||
const void * custom; /* Custom function specific initialisation data */
|
||||
|
||||
|
||||
const discrete_module *module; /* Node's module info */
|
||||
const discrete_sound_block *block; /* Points to the node's setup block. */
|
||||
const discrete_info *info; /* Points to the parent */
|
||||
@ -3646,7 +3646,7 @@ struct _node_description
|
||||
osd_ticks_t run_time;
|
||||
};
|
||||
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Core runtime info
|
||||
@ -3686,16 +3686,16 @@ struct _discrete_info
|
||||
|
||||
/* internal node tracking */
|
||||
node_description **indexed_node;
|
||||
|
||||
|
||||
/* list of all nodes */
|
||||
linked_list_entry *node_list; /* node_description * */
|
||||
|
||||
|
||||
/* list of nodes which step */
|
||||
linked_list_entry *step_list; /* node_description * */
|
||||
|
||||
/* list of discrete blocks after prescan (IMPORT, DELETE, REPLACE) */
|
||||
linked_list_entry *block_list; /* discrete_sound_block * */
|
||||
|
||||
|
||||
/* tasks */
|
||||
linked_list_entry *task_list; /* discrete_task_context * */
|
||||
|
||||
@ -3723,9 +3723,9 @@ struct _discrete_info
|
||||
node_description *wavelog_node[DISCRETE_MAX_WAVELOGS];
|
||||
|
||||
/* parallel tasks */
|
||||
|
||||
|
||||
osd_work_queue *queue;
|
||||
|
||||
|
||||
/* profiling */
|
||||
int total_samples;
|
||||
};
|
||||
@ -4224,7 +4224,7 @@ enum
|
||||
DSO_IMPORT, /* import from another discrete block */
|
||||
DSO_REPLACE, /* replace next node */
|
||||
DSO_DELETE, /* delete nodes */
|
||||
|
||||
|
||||
/* Marks end of this enum -- must be last entry ! */
|
||||
DSO_LAST
|
||||
};
|
||||
@ -4417,7 +4417,7 @@ enum
|
||||
#define DISCRETE_TASK_END3(BNODE1,BNODE2,BNODE3) { NODE_SPECIAL, DSO_TASK_END , 3, { BNODE1,BNODE2,BNODE3 }, { BNODE1,BNODE2,BNODE3 }, NULL, "DISCRETE_TASK_END3" },
|
||||
#define DISCRETE_TASK_END4(BNODE1,BNODE2,BNODE3,BNODE4) { NODE_SPECIAL, DSO_TASK_END , 4, { BNODE1,BNODE2,BNODE3,BNODE4 }, { BNODE1,BNODE2,BNODE3,BNODE4 }, NULL, "DISCRETE_TASK_END4" },
|
||||
#define DISCRETE_TASK_END5(BNODE1,BNODE2,BNODE3,BNODE4,BNODE5) { NODE_SPECIAL, DSO_TASK_END , 5, { BNODE1,BNODE2,BNODE3,BNODE4,BNODE5 }, { BNODE1,BNODE2,BNODE3,BNODE4,BNODE5 }, NULL, "DISCRETE_TASK_END5" },
|
||||
//#define DISCRETE_TASK_SYNC() { NODE_SPECIAL, DSO_TASK_SYNC, 0, { 0 }, { 0 }, NULL, "DISCRETE_TASK_SYNC" },
|
||||
//#define DISCRETE_TASK_SYNC() { NODE_SPECIAL, DSO_TASK_SYNC, 0, { 0 }, { 0 }, NULL, "DISCRETE_TASK_SYNC" },
|
||||
|
||||
/* output */
|
||||
#define DISCRETE_OUTPUT(OPNODE,GAIN) { NODE_SPECIAL, DSO_OUTPUT , 2, { OPNODE,NODE_NC }, { 0,GAIN }, NULL, "DISCRETE_OUTPUT" },
|
||||
|
@ -327,9 +327,9 @@ DEVICE_GET_INFO( bzone_sound )
|
||||
#define BZ_R8 RES_K(100)
|
||||
#define BZ_R9 RES_K(22)
|
||||
|
||||
//#define RT (1.0/BZ_R5 + 1.0/BZ_R6 * 1.0/BZ_R7)
|
||||
//#define RT (1.0/BZ_R5 + 1.0/BZ_R6 * 1.0/BZ_R7)
|
||||
|
||||
#define BZ_R10 RES_K(100)
|
||||
#define BZ_R10 RES_K(100)
|
||||
#define BZ_R11 RES_K(250)
|
||||
#define BZ_R12 RES_K(33)
|
||||
#define BZ_R13 RES_K(10)
|
||||
@ -385,7 +385,7 @@ static const discrete_lfsr_desc bzone_lfsr =
|
||||
15 /* Output bit */
|
||||
};
|
||||
|
||||
static const discrete_op_amp_filt_info bzone_explo_0 =
|
||||
static const discrete_op_amp_filt_info bzone_explo_0 =
|
||||
{
|
||||
BZ_R18 + BZ_R19, 0, 0, 0, /* r1, r2, r3, r4 */
|
||||
BZ_R33, /* rF */
|
||||
@ -394,7 +394,7 @@ static const discrete_op_amp_filt_info bzone_explo_0 =
|
||||
22, 0 /* vP, vN */
|
||||
};
|
||||
|
||||
static const discrete_op_amp_filt_info bzone_explo_1 =
|
||||
static const discrete_op_amp_filt_info bzone_explo_1 =
|
||||
{
|
||||
BZ_R18, 0, 0, 0, /* r1, r2, r3, r4 */
|
||||
BZ_R33, /* rF */
|
||||
@ -403,7 +403,7 @@ static const discrete_op_amp_filt_info bzone_explo_1 =
|
||||
22, 0 /* vP, vN */
|
||||
};
|
||||
|
||||
static const discrete_op_amp_filt_info bzone_shell_0 =
|
||||
static const discrete_op_amp_filt_info bzone_shell_0 =
|
||||
{
|
||||
BZ_R13 + BZ_R12, 0, 0, 0, /* r1, r2, r3, r4 */
|
||||
BZ_R32, /* rF */
|
||||
@ -412,7 +412,7 @@ static const discrete_op_amp_filt_info bzone_shell_0 =
|
||||
22, 0 /* vP, vN */
|
||||
};
|
||||
|
||||
static const discrete_op_amp_filt_info bzone_shell_1 =
|
||||
static const discrete_op_amp_filt_info bzone_shell_1 =
|
||||
{
|
||||
BZ_R13, 0, 0, 0, /* r1, r2, r3, r4 */
|
||||
BZ_R32, /* rF */
|
||||
@ -432,7 +432,7 @@ static const discrete_555_desc bzone_vco_desc =
|
||||
static const discrete_mixer_desc bzone_eng_mixer_desc =
|
||||
{
|
||||
DISC_MIXER_IS_RESISTOR,
|
||||
{BZ_R20, BZ_R21, BZ_R34, BZ_R35},
|
||||
{BZ_R20, BZ_R21, BZ_R34, BZ_R35},
|
||||
{0, 0, 0, 0},
|
||||
{0, 0, 0, 0},
|
||||
0, 0,
|
||||
@ -444,7 +444,7 @@ static const discrete_mixer_desc bzone_eng_mixer_desc =
|
||||
static const discrete_mixer_desc bzone_final_mixer_desc =
|
||||
{
|
||||
DISC_MIXER_IS_RESISTOR,
|
||||
{BZ_R28, BZ_R25, BZ_R26, BZ_R27},
|
||||
{BZ_R28, BZ_R25, BZ_R26, BZ_R27},
|
||||
{0, 0, 0, 0},
|
||||
{0, 0, 0, 0},
|
||||
0, BZ_R29,
|
||||
@ -467,14 +467,14 @@ static DISCRETE_SOUND_START(bzone)
|
||||
DISCRETE_INPUT_DATA(BZ_INPUT)
|
||||
|
||||
/* decode the bits */
|
||||
DISCRETE_BITS_DECODE(NODE_10, BZ_INPUT, 0, 7, 5.7)// TTL_OUT) /* QA-QD 74393 */
|
||||
DISCRETE_BITS_DECODE(NODE_10, BZ_INPUT, 0, 7, 5.7)// TTL_OUT) /* QA-QD 74393 */
|
||||
DISCRETE_ADJUSTMENT_TAG(NODE_11, 0, RES_K(250), DISC_LINADJ, "R11")
|
||||
|
||||
|
||||
|
||||
/************************************************/
|
||||
/* NOISE */
|
||||
/************************************************/
|
||||
|
||||
|
||||
/* 12Khz clock is divided by two by B4 74LS109 */
|
||||
DISCRETE_LFSR_NOISE(NODE_30, 1, 1, BZ_NOISE_CLOCK / 2, 1.0, 0, 0.5, &bzone_lfsr)
|
||||
|
||||
@ -486,7 +486,7 @@ static DISCRETE_SOUND_START(bzone)
|
||||
DISCRETE_LOGIC_NAND4(NODE_33,1,NODE_SUB(32,0),NODE_SUB(32,1),NODE_SUB(32,2),NODE_SUB(32,3))
|
||||
/* divide by 2 */
|
||||
DISCRETE_COUNTER(NODE_34, 1, 0, NODE_33, 1, DISC_COUNT_UP, 0, DISC_CLK_ON_R_EDGE)
|
||||
|
||||
|
||||
/************************************************/
|
||||
/* Explosion */
|
||||
/************************************************/
|
||||
@ -494,15 +494,15 @@ static DISCRETE_SOUND_START(bzone)
|
||||
/* FIXME: +0.7 for diode */
|
||||
DISCRETE_RCDISC5(NODE_40, NODE_34, BZ_INP_EXPLO, BZ_R17 + BZ_R16, BZ_C14)
|
||||
DISCRETE_MULTIPLY(NODE_41, 1, BZ_R16 / (BZ_R17 + BZ_R16), NODE_40)
|
||||
|
||||
|
||||
/* one of two filter configurations active */
|
||||
DISCRETE_LOGIC_INVERT(NODE_42, 1, BZ_INP_EXPLOLS)
|
||||
DISCRETE_OP_AMP_FILTER(NODE_43, BZ_INP_EXPLOLS, 0, NODE_41,
|
||||
DISCRETE_OP_AMP_FILTER(NODE_43, BZ_INP_EXPLOLS, 0, NODE_41,
|
||||
DISC_OP_AMP_FILTER_IS_LOW_PASS_1M, &bzone_explo_1)
|
||||
DISCRETE_OP_AMP_FILTER(NODE_44, NODE_42, 0, NODE_41,
|
||||
DISCRETE_OP_AMP_FILTER(NODE_44, NODE_42, 0, NODE_41,
|
||||
DISC_OP_AMP_FILTER_IS_LOW_PASS_1M, &bzone_explo_0)
|
||||
DISCRETE_ADDER2(NODE_45, 1, NODE_43, NODE_44)
|
||||
|
||||
|
||||
/************************************************/
|
||||
/* Shell */
|
||||
/************************************************/
|
||||
@ -512,22 +512,22 @@ static DISCRETE_SOUND_START(bzone)
|
||||
|
||||
/* one of two filter configurations active */
|
||||
DISCRETE_LOGIC_INVERT(NODE_52, 1, BZ_INP_SHELLLS)
|
||||
DISCRETE_OP_AMP_FILTER(NODE_53, BZ_INP_SHELLLS, 0, NODE_51,
|
||||
DISCRETE_OP_AMP_FILTER(NODE_53, BZ_INP_SHELLLS, 0, NODE_51,
|
||||
DISC_OP_AMP_FILTER_IS_LOW_PASS_1M, &bzone_shell_1)
|
||||
DISCRETE_OP_AMP_FILTER(NODE_54, NODE_52, 0, NODE_51,
|
||||
DISCRETE_OP_AMP_FILTER(NODE_54, NODE_52, 0, NODE_51,
|
||||
DISC_OP_AMP_FILTER_IS_LOW_PASS_1M, &bzone_shell_0)
|
||||
DISCRETE_ADDER2(NODE_55, 1, NODE_53, NODE_54)
|
||||
|
||||
/************************************************/
|
||||
/* Engine */
|
||||
/************************************************/
|
||||
|
||||
|
||||
|
||||
|
||||
DISCRETE_TRANSFORM2(NODE_60, BZ_INP_ENGREV, 0.0, "01=")
|
||||
// FIXME: from R5 .. R7
|
||||
DISCRETE_MULTIPLEX2(NODE_61, 1, NODE_60, 2.5, 4.2)
|
||||
DISCRETE_RCDISC3(NODE_62, 1, NODE_61, BZ_R8, BZ_R9, BZ_C13, -0.5)
|
||||
|
||||
|
||||
/* R11 taken from adjuster port */
|
||||
DISCRETE_555_ASTABLE_CV(NODE_63, 1, BZ_R10, NODE_11, BZ_C11, NODE_62, &bzone_vco_desc)
|
||||
|
||||
@ -535,13 +535,13 @@ static DISCRETE_SOUND_START(bzone)
|
||||
DISCRETE_COUNTER(NODE_65, BZ_INP_MOTEN, 0, NODE_63, 11, DISC_COUNT_UP, 0, DISC_CLK_ON_R_EDGE)
|
||||
DISCRETE_TRANSFORM2(NODE_66, NODE_65, 3, "01>") /* QD */
|
||||
DISCRETE_TRANSFORM2(NODE_67, NODE_65, 11, "01=") /* Ripple */
|
||||
|
||||
|
||||
DISCRETE_COUNTER(NODE_68, BZ_INP_MOTEN, 0, NODE_63, 9, DISC_COUNT_UP, 0, DISC_CLK_ON_R_EDGE)
|
||||
DISCRETE_TRANSFORM2(NODE_69, NODE_68, 1, "01>") /* QD */
|
||||
DISCRETE_TRANSFORM2(NODE_70, NODE_68, 9, "01=") /* Ripple */
|
||||
|
||||
|
||||
DISCRETE_MIXER4(NODE_75, 1, NODE_66, NODE_67, NODE_69, NODE_70, &bzone_eng_mixer_desc)
|
||||
|
||||
|
||||
/************************************************/
|
||||
/* FINAL MIX */
|
||||
/************************************************/
|
||||
@ -574,7 +574,7 @@ WRITE8_DEVICE_HANDLER( bzone_sounds_w )
|
||||
MACHINE_DRIVER_START( bzone_audio )
|
||||
|
||||
MDRV_SPEAKER_STANDARD_MONO("mono")
|
||||
|
||||
|
||||
MDRV_SOUND_ADD("pokey", POKEY, BZONE_MASTER_CLOCK / 8)
|
||||
MDRV_SOUND_CONFIG(bzone_pokey_interface)
|
||||
MDRV_SOUND_ROUTE_EX(0, "discrete", 1.0, 0)
|
||||
|
@ -391,7 +391,7 @@ static DISCRETE_SOUND_START(dkong2b)
|
||||
DISCRETE_RCINTEGRATE(NODE_22,NODE_20,DK_R5, RES_2_PARALLEL(DK_R4+DK_R3,DK_R6),0,DK_C19,DK_SUP_V,DISC_RC_INTEGRATE_TYPE1)
|
||||
DISCRETE_MULTIPLY(DS_OUT_SOUND0,1,NODE_22,DK_R3/R_SERIES(DK_R3,DK_R4))
|
||||
DISCRETE_TASK_END(DS_OUT_SOUND0)
|
||||
|
||||
|
||||
/************************************************/
|
||||
/* Jump */
|
||||
/************************************************/
|
||||
@ -637,7 +637,7 @@ static DISCRETE_SOUND_START(radarscp)
|
||||
DISCRETE_INPUT_NOT(DS_SOUND6_INV)
|
||||
DISCRETE_INPUT_NOT(DS_SOUND7_INV)
|
||||
DISCRETE_INPUT_NOT(DS_DISCHARGE_INV)
|
||||
|
||||
|
||||
/* Must be in task if tasks added */
|
||||
DISCRETE_INPUTX_STREAM(DS_DAC, 0, 1.0, 0)
|
||||
//DISCRETE_INPUT_DATA(DS_DAC)
|
||||
@ -1262,7 +1262,7 @@ MACHINE_DRIVER_START( dkong2b_audio )
|
||||
MDRV_CPU_IO_MAP(dkong_sound_io_map)
|
||||
|
||||
MDRV_SPEAKER_STANDARD_MONO("mono")
|
||||
|
||||
|
||||
MDRV_SOUND_ADD("discdac", DISCRETE, 0)
|
||||
MDRV_SOUND_CONFIG_DISCRETE(dkong2b_dac)
|
||||
MDRV_SOUND_ROUTE_EX(0, "discrete", 1.0, 0)
|
||||
|
@ -317,7 +317,7 @@ static DISCRETE_SOUND_START(galaxian)
|
||||
/************************************************/
|
||||
/* HIT */
|
||||
/************************************************/
|
||||
|
||||
|
||||
/* NOISE */
|
||||
/* since only a sample of the LFSR is latched @V2 we let the lfsr
|
||||
* run at a lower speed
|
||||
@ -325,7 +325,7 @@ static DISCRETE_SOUND_START(galaxian)
|
||||
DISCRETE_LFSR_NOISE(NODE_150, 1, 1, RNG_RATE/100, 1.0, 0, 0.5, &galaxian_lfsr)
|
||||
DISCRETE_SQUAREWFIX(NODE_151,1,60*264/2,1.0,50,0.5,0) /* 2V signal */
|
||||
DISCRETE_LOGIC_DFLIPFLOP(NODE_152,1,1,1,NODE_151,NODE_150)
|
||||
|
||||
|
||||
|
||||
/* Not 100% correct - switching causes high impedance input for node_157
|
||||
* this is not emulated */
|
||||
|
@ -582,7 +582,7 @@ static MACHINE_DRIVER_START( bzone )
|
||||
MDRV_IMPORT_FROM(bzone_audio)
|
||||
#else
|
||||
MDRV_SPEAKER_STANDARD_MONO("mono")
|
||||
|
||||
|
||||
MDRV_SOUND_ADD("pokey", POKEY, MASTER_CLOCK / 8)
|
||||
MDRV_SOUND_CONFIG(bzone_pokey_interface)
|
||||
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||
|
@ -109,7 +109,7 @@ MACHINE_RESET( kaneko16 )
|
||||
kaneko16_sprite_yoffs = 0;
|
||||
|
||||
kaneko16_sprite_fliptype = 0;
|
||||
|
||||
|
||||
/*
|
||||
Sx = Sprites with priority x, x = tiles with priority x,
|
||||
Sprites - Tiles Order (bottom -> top):
|
||||
@ -247,7 +247,7 @@ static MACHINE_RESET( shogwarr )
|
||||
|
||||
kaneko16_sprite_type = 0;
|
||||
kaneko16_sprite_fliptype = 1;
|
||||
|
||||
|
||||
kaneko16_priority.sprite[0] = 1; // below all
|
||||
kaneko16_priority.sprite[1] = 3; // above tile[0], below the others
|
||||
kaneko16_priority.sprite[2] = 5; // above all
|
||||
@ -2085,7 +2085,7 @@ static INTERRUPT_GEN( shogwarr_interrupt )
|
||||
|
||||
// the code for this interupt is provided by the MCU..
|
||||
case 0: cpu_set_input_line(device, 4, HOLD_LINE);
|
||||
|
||||
|
||||
calc3_mcu_run(device->machine);
|
||||
break;
|
||||
/*case 0:
|
||||
@ -2102,44 +2102,44 @@ static INTERRUPT_GEN( shogwarr_interrupt )
|
||||
|
||||
/*
|
||||
unsigned char shogwarr_default_eeprom[128] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x4B, 0x41, 0x4E, 0x45, 0x4B, 0x4F, 0x2F, 0x41, 0x54, 0x4F, 0x50, 0x20, 0x31, 0x39, 0x39, 0x32,
|
||||
0x46, 0x55, 0x4A, 0x49, 0xFF, 0xFF, 0x4D, 0x41, 0x20, 0x42, 0x55, 0x53, 0x54, 0x45, 0x52, 0x20,
|
||||
0x20, 0x53, 0x48, 0x4F, 0xFF, 0xFF, 0x4E, 0x20, 0x57, 0x41, 0x52, 0x52, 0x49, 0x4F, 0x52, 0x53,
|
||||
0xFF, 0xFF, 0x70, 0x79, 0x72, 0x69, 0xFF, 0xFF, 0x74, 0x20, 0x4B, 0x41, 0x4E, 0x45, 0x4B, 0x4F,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x4B, 0x41, 0x4E, 0x45, 0x4B, 0x4F, 0x2F, 0x41, 0x54, 0x4F, 0x50, 0x20, 0x31, 0x39, 0x39, 0x32,
|
||||
0x46, 0x55, 0x4A, 0x49, 0xFF, 0xFF, 0x4D, 0x41, 0x20, 0x42, 0x55, 0x53, 0x54, 0x45, 0x52, 0x20,
|
||||
0x20, 0x53, 0x48, 0x4F, 0xFF, 0xFF, 0x4E, 0x20, 0x57, 0x41, 0x52, 0x52, 0x49, 0x4F, 0x52, 0x53,
|
||||
0xFF, 0xFF, 0x70, 0x79, 0x72, 0x69, 0xFF, 0xFF, 0x74, 0x20, 0x4B, 0x41, 0x4E, 0x45, 0x4B, 0x4F,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF
|
||||
};
|
||||
*/
|
||||
// the above eeprom looks corrupt, some of the text is wrong, the game never writes this text tho.. maybe it should be as below
|
||||
// leaving both here incase they relate to which tables get 'locked out' by the MCU somehow
|
||||
UINT8 shogwarr_default_eeprom[128] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x4B, 0x41, 0x4E, 0x45, 0x4B, 0x4F, 0x2F, 0x41, 0x54, 0x4F, 0x50, 0x20, 0x31, 0x39, 0x39, 0x32,
|
||||
0x46, 0x55, 0x4A, 0x49, 0x59, 0x41, 0x4D, 0x41, 0x20, 0x42, 0x55, 0x53, 0x54, 0x45, 0x52, 0x20,
|
||||
0x20, 0x53, 0x48, 0x4F, 0x47, 0x55, 0x4E, 0x20, 0x57, 0x41, 0x52, 0x52, 0x49, 0x4F, 0x52, 0x53,
|
||||
0x63, 0x6F, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x4B, 0x41, 0x4E, 0x45, 0x4B, 0x4F,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x4B, 0x41, 0x4E, 0x45, 0x4B, 0x4F, 0x2F, 0x41, 0x54, 0x4F, 0x50, 0x20, 0x31, 0x39, 0x39, 0x32,
|
||||
0x46, 0x55, 0x4A, 0x49, 0x59, 0x41, 0x4D, 0x41, 0x20, 0x42, 0x55, 0x53, 0x54, 0x45, 0x52, 0x20,
|
||||
0x20, 0x53, 0x48, 0x4F, 0x47, 0x55, 0x4E, 0x20, 0x57, 0x41, 0x52, 0x52, 0x49, 0x4F, 0x52, 0x53,
|
||||
0x63, 0x6F, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x4B, 0x41, 0x4E, 0x45, 0x4B, 0x4F,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF
|
||||
};
|
||||
|
||||
UINT8 brapboys_default_eeprom[128] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x20, 0x30, 0x00, 0x03, 0x68, 0x18, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x00, 0x01, 0x00, 0x04, 0x00, 0x08, 0x4B, 0x41, 0x4E, 0x45, 0x4B, 0x4F, 0x20, 0x20,
|
||||
0x42, 0x65, 0x20, 0x52, 0x61, 0x70, 0x20, 0x42, 0x6F, 0x79, 0x73, 0x00, 0x30, 0x30, 0x30, 0x2E,
|
||||
0x30, 0x38, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x20, 0x30, 0x00, 0x03, 0x68, 0x18, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x00, 0x01, 0x00, 0x04, 0x00, 0x08, 0x4B, 0x41, 0x4E, 0x45, 0x4B, 0x4F, 0x20, 0x20,
|
||||
0x42, 0x65, 0x20, 0x52, 0x61, 0x70, 0x20, 0x42, 0x6F, 0x79, 0x73, 0x00, 0x30, 0x30, 0x30, 0x2E,
|
||||
0x30, 0x38, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
|
||||
};
|
||||
|
||||
static NVRAM_HANDLER( shogwarr )
|
||||
{
|
||||
int isbrap = ( !strcmp(machine->gamedrv->name,"brapboysj") || !strcmp(machine->gamedrv->name,"brapboys"));
|
||||
|
||||
|
||||
if (read_or_write)
|
||||
eeprom_save(file);
|
||||
else
|
||||
@ -2181,7 +2181,7 @@ static MACHINE_DRIVER_START( shogwarr )
|
||||
MDRV_VIDEO_UPDATE(kaneko16)
|
||||
|
||||
MDRV_NVRAM_HANDLER(shogwarr)
|
||||
|
||||
|
||||
/* sound hardware */
|
||||
MDRV_SPEAKER_STANDARD_MONO("mono")
|
||||
|
||||
@ -3673,8 +3673,8 @@ ROM_START( brapboysj ) /* The Japanese version has an extra rom??? and used a ro
|
||||
ROM_LOAD( "rb-024.u79", 0x400000, 0x080000, CRC(65fa6447) SHA1(551e540d7bf412753b4a7098e25e6f9d8774bcf4) ) // correct, both halves identical when dumped as larger
|
||||
ROM_LOAD( "rb-025.u4", 0x500000, 0x080000, CRC(aa795ba5) SHA1(c5256dcceded2e76f548b60c18e51d0dd0209d81) ) // eprom, special title screen
|
||||
ROM_LOAD( "rb-026.u5", 0x580000, 0x080000, CRC(bb7604d4) SHA1(57d51ce4ea2000f9a50bae326cfcb66ec494249f) ) // eprom, logs that bounce past
|
||||
|
||||
|
||||
|
||||
|
||||
ROM_REGION( 0x400000, "gfx2", 0 ) /* Tiles (scrambled) */
|
||||
ROM_LOAD( "rb-010.u65", 0x000000, 0x100000, CRC(ffd73f87) SHA1(1a661f71976be61c22d9b962850e738ba17f1d45) )
|
||||
ROM_LOAD( "rb-011.u66", 0x100000, 0x100000, CRC(d9325f78) SHA1(346832608664aa8f3ac9260a549903386b4125a8) )
|
||||
@ -3803,20 +3803,20 @@ DRIVER_INIT( calc3 )
|
||||
static DRIVER_INIT( brapboys )
|
||||
{
|
||||
/*
|
||||
Expand the OKI sample data
|
||||
Expand the OKI sample data
|
||||
|
||||
OKI 1:
|
||||
Address space 0x00000-0x2ffff is fixed
|
||||
Address space 0x30000-0x3ffff is banked (13 banks)
|
||||
OKI 1:
|
||||
Address space 0x00000-0x2ffff is fixed
|
||||
Address space 0x30000-0x3ffff is banked (13 banks)
|
||||
|
||||
OKI 2:
|
||||
Address space 0x00000-0x1ffff is fixed
|
||||
Address space 0x20000-0x3ffff is banked (15 banks)
|
||||
OKI 2:
|
||||
Address space 0x00000-0x1ffff is fixed
|
||||
Address space 0x20000-0x3ffff is banked (15 banks)
|
||||
|
||||
The current sound device implementation can't handle
|
||||
the banking dynamically so we have to expand all the bank
|
||||
combinations here and use use okim6295_set_bank_base().
|
||||
*/
|
||||
The current sound device implementation can't handle
|
||||
the banking dynamically so we have to expand all the bank
|
||||
combinations here and use use okim6295_set_bank_base().
|
||||
*/
|
||||
int bank;
|
||||
UINT8 *src = memory_region(machine, "samples");
|
||||
UINT8 *dst1 = memory_region(machine, "oki1");
|
||||
|
@ -218,7 +218,7 @@
|
||||
1x KN2222A (Epitaxial planar general purpose NPN transistor)
|
||||
1x VR/POT
|
||||
|
||||
.------. .------------. .-------.
|
||||
.------. .------------. .-------.
|
||||
| | | D5555C | |KN2222A|
|
||||
| | 4| |3 R3 | | -->
|
||||
| PC7|------------------------------|RST OUT|-----ZZZZ------|B E|>----ZZZZZ-----> Audio Out.
|
||||
@ -1043,7 +1043,7 @@ ROM_END
|
||||
/*
|
||||
Noraut Joker Poker
|
||||
|
||||
Program:27C64
|
||||
Program:27C64
|
||||
Marked:
|
||||
"MX10A JOKER G.L
|
||||
N.C.R C.C M.S"
|
||||
@ -1119,7 +1119,7 @@ CHAR Eprom:2732
|
||||
Marked: "GU27"
|
||||
|
||||
daughter card is connected on to another card containing only pcb tracks no components
|
||||
This second board connects to main board with ribbon cable to the 40pin socket where
|
||||
This second board connects to main board with ribbon cable to the 40pin socket where
|
||||
the original cpu would of been.
|
||||
|
||||
No date info on board or found in rom.
|
||||
|
@ -1172,11 +1172,11 @@ ROM_START(kollon)
|
||||
DISK_REGION( "card" )
|
||||
DISK_IMAGE( "kollon", 0, SHA1(d8ea5b5b0ee99004b16ef89883e23de6c7ddd7ce))
|
||||
ROM_END
|
||||
|
||||
|
||||
ROM_START(kollonc)
|
||||
TAITOGNET_BIOS
|
||||
ROM_DEFAULT_BIOS( "v2" )
|
||||
|
||||
|
||||
DISK_REGION( "card" )
|
||||
DISK_IMAGE( "kollonc", 0, SHA1(ce62181659701cfb8f7c564870ab902be4d8e060)) /* Original Taito Compact Flash version */
|
||||
ROM_END
|
||||
|
@ -632,7 +632,7 @@ static WRITE16_HANDLER( galgames_cart_sel_w )
|
||||
switch( data & 0xff )
|
||||
{
|
||||
case 0x07: // 7 resets the eeprom
|
||||
for (i = 0; i < 5; i++)
|
||||
for (i = 0; i < 5; i++)
|
||||
eepromdev_set_cs_line(devtag_get_device(space->machine, galgames_eeprom_names[i]), ASSERT_LINE);
|
||||
break;
|
||||
|
||||
@ -1448,7 +1448,7 @@ ROM_START( galgbios )
|
||||
|
||||
ROM_REGION( 0x200000, "blitter", 0 )
|
||||
ROM_COPY( "maincpu", 0, 0, 0x200000 )
|
||||
|
||||
|
||||
ROM_REGION( 0x40000, "oki", ROMREGION_ERASE )
|
||||
// RAM, filled by the 68000 and fed to the OKI
|
||||
|
||||
@ -1461,9 +1461,9 @@ Galaxy Games StarPak 2
|
||||
|
||||
NAMCO 307 Cartridge, has surface mount Flash chips in it:
|
||||
|
||||
.u1 am29f800BB
|
||||
.u2 am29f800BB
|
||||
.u4 pic 12c508
|
||||
.u1 am29f800BB
|
||||
.u2 am29f800BB
|
||||
.u4 pic 12c508
|
||||
|
||||
Board silkscreened 237-0209-00
|
||||
REV.-C
|
||||
|
@ -244,8 +244,8 @@ READ16_HANDLER(bloodwar_calc_r)
|
||||
}
|
||||
|
||||
/*
|
||||
B Rap Boys
|
||||
Shogun Warriors
|
||||
B Rap Boys
|
||||
Shogun Warriors
|
||||
|
||||
*/
|
||||
|
||||
@ -253,21 +253,21 @@ READ16_HANDLER(bloodwar_calc_r)
|
||||
static struct {
|
||||
int x1p, y1p, z1p, x1s, y1s, z1s;
|
||||
int x2p, y2p, z2p, x2s, y2s, z2s;
|
||||
|
||||
|
||||
int x1po, y1po, z1po, x1so, y1so, z1so;
|
||||
int x2po, y2po, z2po, x2so, y2so, z2so;
|
||||
|
||||
int x12, y12, z12, x21, y21, z21;
|
||||
|
||||
|
||||
int x_coll, y_coll, z_coll;
|
||||
|
||||
|
||||
int x1tox2, y1toy2, z1toz2;
|
||||
|
||||
UINT16 mult_a, mult_b;
|
||||
|
||||
|
||||
UINT16 flags;
|
||||
UINT16 mode;
|
||||
|
||||
|
||||
} shogwarr_hit;
|
||||
|
||||
|
||||
@ -276,32 +276,32 @@ static struct {
|
||||
static int shogwarr_calc_compute(int x1, int w1, int x2, int w2)
|
||||
{
|
||||
int dist;
|
||||
|
||||
|
||||
if(x2>=x1 && x2+w2<=(x1+w1))
|
||||
{
|
||||
//x2 inside x1
|
||||
dist=w2;
|
||||
dist=w2;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(x1>=x2 && x1+w1<=(x2+w2))
|
||||
{
|
||||
//x1 inside x2
|
||||
dist=w1;
|
||||
dist=w1;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(x2<x1)
|
||||
{
|
||||
//swap
|
||||
//swap
|
||||
int tmp=x1;
|
||||
x1=x2;
|
||||
x2=tmp;
|
||||
tmp=w1;
|
||||
w1=w2;
|
||||
w2=tmp;
|
||||
}
|
||||
dist=x1+w1-x2;
|
||||
}
|
||||
dist=x1+w1-x2;
|
||||
}
|
||||
}
|
||||
return dist;
|
||||
@ -318,42 +318,42 @@ static void shogwarr_calc_org(int mode, int x0, int s0, int* x1, int* s1)
|
||||
case 2: *x1=x0-s0; *s1=s0; break;
|
||||
case 3: *x1=x0-s0; *s1=2*s0; break;
|
||||
}
|
||||
//x1 is the left most coord, s1 = width
|
||||
//x1 is the left most coord, s1 = width
|
||||
}
|
||||
|
||||
static void shogwarr_recalc_collisions(void)
|
||||
{
|
||||
//calculate positions and sizes
|
||||
|
||||
|
||||
int mode=shogwarr_hit.mode;
|
||||
|
||||
|
||||
shogwarr_hit.flags=0;
|
||||
|
||||
|
||||
shogwarr_calc_org(mode&3, shogwarr_hit.x1po, shogwarr_hit.x1so, &shogwarr_hit.x1p, &shogwarr_hit.x1s);
|
||||
mode>>=2;
|
||||
shogwarr_calc_org(mode&3, shogwarr_hit.y1po, shogwarr_hit.y1so, &shogwarr_hit.y1p, &shogwarr_hit.y1s);
|
||||
mode>>=2;
|
||||
shogwarr_calc_org(mode&3, shogwarr_hit.z1po, shogwarr_hit.z1so, &shogwarr_hit.z1p, &shogwarr_hit.z1s);
|
||||
|
||||
|
||||
mode>>=4;
|
||||
|
||||
|
||||
shogwarr_calc_org(mode&3, shogwarr_hit.x2po, shogwarr_hit.x2so, &shogwarr_hit.x2p, &shogwarr_hit.x2s);
|
||||
mode>>=2;
|
||||
shogwarr_calc_org(mode&3, shogwarr_hit.y2po, shogwarr_hit.y2so, &shogwarr_hit.y2p, &shogwarr_hit.y2s);
|
||||
mode>>=2;
|
||||
shogwarr_calc_org(mode&3, shogwarr_hit.z2po, shogwarr_hit.z2so, &shogwarr_hit.z2p, &shogwarr_hit.z2s);
|
||||
|
||||
|
||||
|
||||
shogwarr_hit.x1tox2=abs(shogwarr_hit.x2po-shogwarr_hit.x1po);
|
||||
shogwarr_hit.y1toy2=abs(shogwarr_hit.y2po-shogwarr_hit.y1po);
|
||||
shogwarr_hit.z1toz2=abs(shogwarr_hit.z2po-shogwarr_hit.z1po);
|
||||
|
||||
|
||||
|
||||
|
||||
shogwarr_hit.x_coll = shogwarr_calc_compute(shogwarr_hit.x1p, shogwarr_hit.x1s, shogwarr_hit.x2p, shogwarr_hit.x2s);
|
||||
shogwarr_hit.y_coll = shogwarr_calc_compute(shogwarr_hit.y1p, shogwarr_hit.y1s, shogwarr_hit.y2p, shogwarr_hit.y2s);
|
||||
shogwarr_hit.z_coll = shogwarr_calc_compute(shogwarr_hit.z1p, shogwarr_hit.z1s, shogwarr_hit.z2p, shogwarr_hit.z2s);
|
||||
|
||||
|
||||
|
||||
|
||||
// 4th nibble: Y Absolute Collision -> possible values = 9,8,4,3,2
|
||||
if (shogwarr_hit.y1p > shogwarr_hit.y2p) shogwarr_hit.flags |= 0x2000;
|
||||
else if (shogwarr_hit.y1p == shogwarr_hit.y2p) shogwarr_hit.flags |= 0x4000;
|
||||
@ -372,7 +372,7 @@ static void shogwarr_recalc_collisions(void)
|
||||
else if (shogwarr_hit.z1p < shogwarr_hit.z2p) shogwarr_hit.flags |= 0x0080;
|
||||
if (shogwarr_hit.z_coll<0) shogwarr_hit.flags |= 0x0010;
|
||||
|
||||
// 1st nibble: XYZ Overlap Collision
|
||||
// 1st nibble: XYZ Overlap Collision
|
||||
if ((shogwarr_hit.x_coll>=0)&&(shogwarr_hit.y_coll>=0)&&(shogwarr_hit.z_coll>=0)) shogwarr_hit.flags |= 0x0008;
|
||||
if ((shogwarr_hit.x_coll>=0)&&(shogwarr_hit.z_coll>=0)) shogwarr_hit.flags |= 0x0004;
|
||||
if ((shogwarr_hit.y_coll>=0)&&(shogwarr_hit.z_coll>=0)) shogwarr_hit.flags |= 0x0002;
|
||||
@ -388,66 +388,66 @@ WRITE16_HANDLER(shogwarr_calc_w)
|
||||
// p is position, s is size
|
||||
case 0x00:
|
||||
case 0x28:
|
||||
|
||||
|
||||
shogwarr_hit.x1po = data; break;
|
||||
|
||||
|
||||
case 0x04:
|
||||
case 0x2c:
|
||||
shogwarr_hit.x1so = data; break;
|
||||
|
||||
case 0x08:
|
||||
|
||||
case 0x08:
|
||||
case 0x30:
|
||||
shogwarr_hit.y1po = data; break;
|
||||
|
||||
case 0x0c:
|
||||
|
||||
case 0x0c:
|
||||
case 0x34:
|
||||
shogwarr_hit.y1so = data; break;
|
||||
|
||||
case 0x10:
|
||||
case 0x10:
|
||||
case 0x58:
|
||||
shogwarr_hit.x2po = data; break;
|
||||
|
||||
case 0x14:
|
||||
|
||||
case 0x14:
|
||||
case 0x5c:
|
||||
shogwarr_hit.x2so = data; break;
|
||||
|
||||
case 0x18:
|
||||
|
||||
case 0x18:
|
||||
case 0x60:
|
||||
shogwarr_hit.y2po = data; break;
|
||||
|
||||
case 0x1c:
|
||||
|
||||
case 0x1c:
|
||||
case 0x64:
|
||||
shogwarr_hit.y2so = data; break;
|
||||
|
||||
|
||||
case 0x38:
|
||||
case 0x50:
|
||||
shogwarr_hit.z1po = data; break;
|
||||
case 0x3c:
|
||||
case 0x3c:
|
||||
case 0x54:
|
||||
shogwarr_hit.z1so = data; break;
|
||||
|
||||
case 0x20:
|
||||
|
||||
case 0x20:
|
||||
case 0x68:
|
||||
shogwarr_hit.z2po = data; break;
|
||||
|
||||
case 0x24:
|
||||
|
||||
case 0x24:
|
||||
case 0x6c:
|
||||
shogwarr_hit.z2so = data; break;
|
||||
|
||||
|
||||
case 0x70:
|
||||
shogwarr_hit.mode=data;break;
|
||||
|
||||
|
||||
default:
|
||||
logerror("CPU #0 PC %06x: warning - write unmapped hit address %06x [ %06x] = %06x\n",cpu_get_pc(space->cpu),offset<<1, idx, data);
|
||||
}
|
||||
|
||||
|
||||
shogwarr_recalc_collisions();
|
||||
}
|
||||
|
||||
|
||||
READ16_HANDLER(shogwarr_calc_r)
|
||||
{
|
||||
|
||||
|
||||
int idx=offset*4;
|
||||
|
||||
switch (idx)
|
||||
@ -459,11 +459,11 @@ READ16_HANDLER(shogwarr_calc_r)
|
||||
case 0x04: // Y distance
|
||||
case 0x14:
|
||||
return shogwarr_hit.y_coll;
|
||||
|
||||
|
||||
case 0x18: // Z distance
|
||||
return shogwarr_hit.z_coll;
|
||||
|
||||
case 0x08:
|
||||
case 0x08:
|
||||
case 0x1c:
|
||||
|
||||
return shogwarr_hit.flags;
|
||||
@ -484,7 +484,7 @@ READ16_HANDLER(shogwarr_calc_r)
|
||||
case 0x64: return shogwarr_hit.y2so;
|
||||
case 0x68: return shogwarr_hit.z2po;
|
||||
case 0x6c: return shogwarr_hit.z2so;
|
||||
|
||||
|
||||
case 0x80: return shogwarr_hit.x1tox2;
|
||||
case 0x84: return shogwarr_hit.y1toy2;
|
||||
case 0x88: return shogwarr_hit.z1toz2;
|
||||
@ -724,7 +724,7 @@ static UINT8 calc3_key04[64] = {
|
||||
0x9c,0x8e,0x45,0xe8,0x5b,0xe1,0xdd,0xaf,0x99,0xa8,0x47,0x79,0x67,0x00,0x38,0xf4,
|
||||
0x43,0xbe,0x47,0x32,0x8f,0x0e,0xfd,0x64,0x42,0x59,0x2b,0xe5,0xde,0x6d,0x80,0x7a,
|
||||
};
|
||||
|
||||
|
||||
static UINT8 calc3_key05[64] = {
|
||||
0x5e,0xd8,0xa6,0xd7,0x00,0x94,0x23,0x66,0xaf,0xea,0xbe,0x45,0x38,0x90,0x8e,0x8d,
|
||||
0x5b,0x14,0x2c,0xda,0x55,0x7e,0x9d,0x08,0x2d,0x31,0xfd,0x3a,0xbe,0x13,0xeb,0x21,
|
||||
@ -830,7 +830,7 @@ static UINT8 calc3_keybc[64] = {
|
||||
0xd5,0xf9,0x42,0x57,0x7a,0xf8,0x30,0x2e,0xea,0x49,0xe5,0xd5,0x34,0x6a,0xcd,0x5b,
|
||||
0xfa,0x8e,0x71,0x32,0xfa,0x42,0x69,0xec,0x5d,0x50,0x02,0x42,0xc2,0xe4,0xae,0x5a,
|
||||
};
|
||||
|
||||
|
||||
static UINT8 calc3_keybf[64] = {
|
||||
0x9a,0x8e,0xcf,0x66,0xe0,0xd8,0xd4,0x2a,0x0f,0x4d,0xad,0x64,0x8c,0x6d,0xcb,0x37,
|
||||
0x2e,0x0e,0x9f,0xc4,0xca,0xff,0x85,0xf1,0x7f,0xec,0x71,0x69,0xc2,0x81,0x5c,0xe4,
|
||||
@ -868,7 +868,7 @@ static UINT8 shift_bits(UINT8 dat, int bits)
|
||||
if (bits==5) return BITSWAP8(dat, 2,1,0,7,6,5,4,3);
|
||||
if (bits==6) return BITSWAP8(dat, 1,0,7,6,5,4,3,2);
|
||||
if (bits==7) return BITSWAP8(dat, 0,7,6,5,4,3,2,1);
|
||||
|
||||
|
||||
return dat;
|
||||
}
|
||||
|
||||
@ -902,7 +902,7 @@ int calc3_decompress_table(running_machine* machine, int tabnum, UINT8* dstram,
|
||||
length = rom[offset+0] | (rom[offset+1]<<8);
|
||||
offset+=length+2;
|
||||
}
|
||||
|
||||
|
||||
// we're at the start of the block, get the info about it
|
||||
{
|
||||
UINT16 inline_table_base = 0;
|
||||
@ -927,7 +927,7 @@ int calc3_decompress_table(running_machine* machine, int tabnum, UINT8* dstram,
|
||||
offset+= calc3_blocksize_offset+1;
|
||||
length = rom[offset+0] | (rom[offset+1]<<8);
|
||||
offset+=2;
|
||||
|
||||
|
||||
#if CALC3_VERBOSE_OUTPUT
|
||||
if (inline_table_size)
|
||||
{
|
||||
@ -948,16 +948,16 @@ int calc3_decompress_table(running_machine* machine, int tabnum, UINT8* dstram,
|
||||
// shogwarr does this with 'mode' as 0x08, which probably has some special meaning
|
||||
//printf("CALC3: requested 0 length table!\n");
|
||||
// -- seems to be 'reset stack' to default for the protection table writes
|
||||
|
||||
// except this will break shogun going into game, must be specific conditions for
|
||||
|
||||
// except this will break shogun going into game, must be specific conditions for
|
||||
// this, or it can remember addresses and restore those
|
||||
|
||||
// hack, set it to a known address instead of trying to restore to anywhere specific..
|
||||
|
||||
// hack, set it to a known address instead of trying to restore to anywhere specific..
|
||||
// might break at some point tho, eg if it doesn't write command 06 often enough because it trys to use another one like 07...
|
||||
// need to understand the meaning of this (test hw?)
|
||||
|
||||
|
||||
// !dstram is used because we don't want to process these during our initial table scan, only when the game asks!
|
||||
|
||||
|
||||
if (calc3_mode==0x06)
|
||||
{
|
||||
calc3_writeaddress_current = 0x202000;
|
||||
@ -965,7 +965,7 @@ int calc3_decompress_table(running_machine* machine, int tabnum, UINT8* dstram,
|
||||
else if (calc3_mode==0x07)
|
||||
{
|
||||
// also calls empty table with Mode? 07
|
||||
// maybe they reset to different points?
|
||||
// maybe they reset to different points?
|
||||
}
|
||||
else if (calc3_mode==0x08 && !dstram)
|
||||
{
|
||||
@ -976,12 +976,12 @@ int calc3_decompress_table(running_machine* machine, int tabnum, UINT8* dstram,
|
||||
UINT8 *dat;
|
||||
|
||||
dat = (UINT8 *)eeprom_get_data_pointer(&length, &size);
|
||||
|
||||
|
||||
for (i=0;i<0x80;i++)
|
||||
{
|
||||
dat[i] = memory_read_byte(space, calc3_eeprom_addr+0x200000+i);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@ -989,7 +989,7 @@ int calc3_decompress_table(running_machine* machine, int tabnum, UINT8* dstram,
|
||||
{
|
||||
printf("unknown blank table command\n");
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -998,14 +998,14 @@ int calc3_decompress_table(running_machine* machine, int tabnum, UINT8* dstram,
|
||||
// these should be derived from the inline table somehow, probably just a +/- swap like the normal stuff.. maybe
|
||||
UINT8 extra[] = { 0x14,0xf0,0xf8,0xd2,0xbe,0xfc,0xac,0x86,0x64,0x08,0x0c,0x74,0xd6,0x6a,0x24,0x12,0x1a,0x72,0xba,0x48,0x76,0x66,0x4a,0x7c,0x5c,0x82,0x0a,0x86,0x82,0x02,0xe6 };
|
||||
UINT8 extra2[] = { 0x2f,0x04,0xd1,0x69,0xad,0xeb,0x10,0x95,0xb0,0x2f,0x0a,0x83,0x7d,0x4e,0x2a,0x07,0x89,0x52,0xca,0x41,0xf1,0x4f,0xaf,0x1c,0x01,0xe9,0x89,0xd2,0xaf,0xcd };
|
||||
|
||||
|
||||
|
||||
|
||||
for (i=0;i<length;i++)
|
||||
{
|
||||
UINT8 dat=0;
|
||||
int extrasign = -1;
|
||||
|
||||
|
||||
|
||||
|
||||
if (
|
||||
(tabnum==0x11 && isbrap) ||
|
||||
(tabnum==0x1a && isbrap) ||
|
||||
@ -1015,12 +1015,12 @@ int calc3_decompress_table(running_machine* machine, int tabnum, UINT8* dstram,
|
||||
/*(tabnum==0x40 && !isbrap)*/
|
||||
)
|
||||
extrasign = 0;
|
||||
|
||||
|
||||
if ((tabnum==0x25 && isbrap))
|
||||
extrasign = 1;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if (extrasign !=-1)
|
||||
{
|
||||
if ( ((i / inline_table_size)&1)==0)
|
||||
@ -1034,10 +1034,10 @@ int calc3_decompress_table(running_machine* machine, int tabnum, UINT8* dstram,
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
|
||||
UINT8 inlinet = rom[inline_table_base + (i%inline_table_size)];
|
||||
dat = rom[offset+i];
|
||||
|
||||
|
||||
if (extrasign==0)
|
||||
{
|
||||
dat -= inlinet;
|
||||
@ -1046,9 +1046,9 @@ int calc3_decompress_table(running_machine* machine, int tabnum, UINT8* dstram,
|
||||
else
|
||||
{
|
||||
dat += inlinet;
|
||||
dat += extra[(i%inline_table_size)>>1];
|
||||
dat += extra[(i%inline_table_size)>>1];
|
||||
}
|
||||
|
||||
|
||||
dat = shift_bits(dat, 8-calc3_shift);
|
||||
}
|
||||
}
|
||||
@ -1059,12 +1059,12 @@ int calc3_decompress_table(running_machine* machine, int tabnum, UINT8* dstram,
|
||||
UINT8 inlinet = rom[inline_table_base + (i%inline_table_size)];
|
||||
dat = rom[offset+i];
|
||||
dat -= inlinet;
|
||||
dat = shift_bits(dat, calc3_shift);
|
||||
dat = shift_bits(dat, calc3_shift);
|
||||
}
|
||||
else
|
||||
{
|
||||
dat = rom[offset+i];
|
||||
|
||||
|
||||
if (extrasign==0)
|
||||
{
|
||||
dat -= extra2[(i%inline_table_size)>>1];
|
||||
@ -1075,7 +1075,7 @@ int calc3_decompress_table(running_machine* machine, int tabnum, UINT8* dstram,
|
||||
}
|
||||
dat = shift_bits(dat, 8-calc3_shift);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// the above rule doesn't work for this case... hmm ..
|
||||
else if (tabnum==0x40 && !isbrap) // fjbuster / shogun warriors japanese character select (what enables this extra?)
|
||||
@ -1096,7 +1096,7 @@ int calc3_decompress_table(running_machine* machine, int tabnum, UINT8* dstram,
|
||||
{
|
||||
if (i==1)
|
||||
printf("unhandled inline case\n");
|
||||
|
||||
|
||||
}
|
||||
|
||||
if(local_counter>1)
|
||||
@ -1105,7 +1105,7 @@ int calc3_decompress_table(running_machine* machine, int tabnum, UINT8* dstram,
|
||||
{
|
||||
memory_write_byte(space, dstoffset+i, dat);
|
||||
}
|
||||
|
||||
|
||||
// debug, used to output tables at the start
|
||||
if (dstram)
|
||||
{
|
||||
@ -1114,7 +1114,7 @@ int calc3_decompress_table(running_machine* machine, int tabnum, UINT8* dstram,
|
||||
}
|
||||
else
|
||||
data_header[local_counter]=dat;
|
||||
|
||||
|
||||
++local_counter;
|
||||
}
|
||||
}
|
||||
@ -1128,7 +1128,7 @@ int calc3_decompress_table(running_machine* machine, int tabnum, UINT8* dstram,
|
||||
// each key seems to relate directly to a 0x40 byte decryption table, only these ones handled so far
|
||||
if (calc3_decryption_key_byte == 0x01) key = calc3_key01;
|
||||
if (calc3_decryption_key_byte == 0x04) key = calc3_key04;
|
||||
if (calc3_decryption_key_byte == 0x05) key = calc3_key05;
|
||||
if (calc3_decryption_key_byte == 0x05) key = calc3_key05;
|
||||
if (calc3_decryption_key_byte == 0x15) key = calc3_key15;
|
||||
if (calc3_decryption_key_byte == 0x17) key = calc3_key17;
|
||||
if (calc3_decryption_key_byte == 0x19) key = calc3_key19;
|
||||
@ -1136,7 +1136,7 @@ int calc3_decompress_table(running_machine* machine, int tabnum, UINT8* dstram,
|
||||
if (calc3_decryption_key_byte == 0x24) key = calc3_key24;
|
||||
if (calc3_decryption_key_byte == 0x31) key = calc3_key31;
|
||||
if (calc3_decryption_key_byte == 0x39) key = calc3_key39;
|
||||
if (calc3_decryption_key_byte == 0x3f) key = calc3_key3f;
|
||||
if (calc3_decryption_key_byte == 0x3f) key = calc3_key3f;
|
||||
if (calc3_decryption_key_byte == 0x80) key = calc3_key80;
|
||||
if (calc3_decryption_key_byte == 0x89) key = calc3_key89;
|
||||
if (calc3_decryption_key_byte == 0xa1) key = calc3_keya1;
|
||||
@ -1194,9 +1194,9 @@ int calc3_decompress_table(running_machine* machine, int tabnum, UINT8* dstram,
|
||||
// note we've already seen this table, but like many others, it's + instead of - on some bytes..
|
||||
if ((i&1)==1) dat += key[i&0x3f];
|
||||
else dat -= key[i&0x3f];
|
||||
|
||||
|
||||
if ((i&1)==0) dat = shift_bits(dat, 8-calc3_shift);
|
||||
else dat = shift_bits(dat, calc3_shift);
|
||||
else dat = shift_bits(dat, calc3_shift);
|
||||
}
|
||||
else if (tabnum==0x12 && isbrap)
|
||||
{
|
||||
@ -1216,7 +1216,7 @@ int calc3_decompress_table(running_machine* machine, int tabnum, UINT8* dstram,
|
||||
{
|
||||
memory_write_byte(space, dstoffset+i, dat);
|
||||
}
|
||||
|
||||
|
||||
// debug, used to output tables at the start
|
||||
if (dstram)
|
||||
{
|
||||
@ -1225,7 +1225,7 @@ int calc3_decompress_table(running_machine* machine, int tabnum, UINT8* dstram,
|
||||
}
|
||||
else
|
||||
data_header[local_counter]=dat;
|
||||
|
||||
|
||||
++local_counter;
|
||||
|
||||
//dstram[(dstoffset+i)^1] = dat;
|
||||
@ -1302,7 +1302,7 @@ DRIVER_INIT(calc3_scantables)
|
||||
// to that extra block of data
|
||||
|
||||
// dump out the 0x1000 sized block at the end
|
||||
#if CALC3_VERBOSE_OUTPUT
|
||||
#if CALC3_VERBOSE_OUTPUT
|
||||
{
|
||||
FILE *fp;
|
||||
char filename[256];
|
||||
@ -1334,7 +1334,7 @@ void calc3_mcu_run(running_machine *machine)
|
||||
|
||||
if (calc3_dsw_addr) memory_write_byte(space, calc3_dsw_addr+0x200000, ( ~input_port_read(machine, "DSW1"))&0xff); // // DSW // dsw actually updates in realtime - mcu reads+writes it every frame
|
||||
|
||||
|
||||
|
||||
//calc3_mcu_status = 0;
|
||||
|
||||
mcu_command = kaneko16_mcu_ram[calc3_mcu_command_offset/2 + 0];
|
||||
@ -1362,7 +1362,7 @@ void calc3_mcu_run(running_machine *machine)
|
||||
cakc3_checkumaddress = kaneko16_mcu_ram[(0>>1) + 5];
|
||||
calc3_writeaddress = (kaneko16_mcu_ram[(0>>1) + 6] << 16) |
|
||||
(kaneko16_mcu_ram[(0>>1) + 7]);
|
||||
|
||||
|
||||
// set our current write / stack pointer to the address specified
|
||||
calc3_writeaddress_current = calc3_writeaddress;
|
||||
#if CALC3_VERBOSE_OUTPUT
|
||||
@ -1373,30 +1373,30 @@ void calc3_mcu_run(running_machine *machine)
|
||||
printf("Calc 3 Init Command - %04x ROM Checksum Address\n", cakc3_checkumaddress);
|
||||
printf("Calc 3 Init Command - %08x Data Write Address\n", calc3_writeaddress);
|
||||
#endif
|
||||
// memory_write_byte(space, calc3_dsw_addr+0x200000, ( ~input_port_read(machine, "DSW1"))&0xff); // // DSW // dsw actually updates in realtime - mcu reads+writes it every frame
|
||||
|
||||
// memory_write_byte(space, calc3_dsw_addr+0x200000, ( ~input_port_read(machine, "DSW1"))&0xff); // // DSW // dsw actually updates in realtime - mcu reads+writes it every frame
|
||||
|
||||
kaneko16_mcu_ram[cakc3_checkumaddress / 2] = calc3_mcu_crc; // MCU Rom Checksum!
|
||||
|
||||
/*
|
||||
for (i=0;i<0x40;i++)
|
||||
{
|
||||
kaneko16_mcu_ram[(calc3_eeprom_addr / 2)+i] = kaneko16_eeprom_data[i];//((eepromData[i]&0xff00)>>8) | ((eepromData[i]&0x00ff)<<8);
|
||||
}
|
||||
*/
|
||||
for (i=0;i<0x40;i++)
|
||||
{
|
||||
kaneko16_mcu_ram[(calc3_eeprom_addr / 2)+i] = kaneko16_eeprom_data[i];//((eepromData[i]&0xff00)>>8) | ((eepromData[i]&0x00ff)<<8);
|
||||
}
|
||||
*/
|
||||
|
||||
{
|
||||
UINT32 length, size;
|
||||
UINT8 *dat;
|
||||
|
||||
dat = (UINT8 *)eeprom_get_data_pointer(&length, &size);
|
||||
|
||||
|
||||
for (i=0;i<0x80;i++)
|
||||
{
|
||||
memory_write_byte(space, calc3_eeprom_addr+0x200000+i, dat[i]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
/* otherwise the command number is the number of transfer operations to perform */
|
||||
else
|
||||
@ -1421,15 +1421,15 @@ void calc3_mcu_run(running_machine *machine)
|
||||
#endif
|
||||
{
|
||||
int length;
|
||||
|
||||
|
||||
length = calc3_decompress_table(machine, commandtabl, 0, calc3_writeaddress_current-2);
|
||||
|
||||
|
||||
if (length)
|
||||
{
|
||||
int write=commandaddr;
|
||||
#if CALC3_VERBOSE_OUTPUT
|
||||
#if CALC3_VERBOSE_OUTPUT
|
||||
printf("writing back address %08x to %08x %08x\n", calc3_writeaddress_current, commandaddr,write);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
//memory_write_byte(space,write+0x200001, data_header[0]); // maybe not.. check first boss brapboysj
|
||||
memory_write_byte(space,write+0x200001, data_header[1]);
|
||||
|
@ -181,7 +181,7 @@ static WRITE16_HANDLER( mk_prot_w )
|
||||
static READ16_HANDLER( mkturbo_prot_r )
|
||||
{
|
||||
/* the security GAL overlays a counter of some sort at 0xfffff400 in ROM space.
|
||||
* A startup protection check expects to read back two different values in succession */
|
||||
* A startup protection check expects to read back two different values in succession */
|
||||
return mame_rand(space->machine);
|
||||
}
|
||||
|
||||
|
@ -580,18 +580,18 @@ void kaneko16_draw_sprites(running_machine *machine, bitmap_t *bitmap, const rec
|
||||
else
|
||||
code = s->code; // .. or latch this value
|
||||
|
||||
|
||||
|
||||
if (flags & USE_LATCHED_COLOR)
|
||||
{
|
||||
s->color = color;
|
||||
s->priority = priority;
|
||||
s->xoffs = xoffs;
|
||||
s->yoffs = yoffs;
|
||||
|
||||
|
||||
if (kaneko16_sprite_fliptype==0)
|
||||
{
|
||||
s->flipx = flipx;
|
||||
s->flipy = flipy;
|
||||
s->flipy = flipy;
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -600,21 +600,21 @@ void kaneko16_draw_sprites(running_machine *machine, bitmap_t *bitmap, const rec
|
||||
priority = s->priority;
|
||||
xoffs = s->xoffs;
|
||||
yoffs = s->yoffs;
|
||||
|
||||
|
||||
if (kaneko16_sprite_fliptype==0)
|
||||
{
|
||||
flipx = s->flipx;
|
||||
flipy = s->flipy;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// brap boys explicitly doesn't want the flip to be latched, maybe there is a different bit to enable that behavior?
|
||||
if (kaneko16_sprite_fliptype==1)
|
||||
{
|
||||
flipx = s->flipx;
|
||||
flipy = s->flipy;
|
||||
}
|
||||
|
||||
|
||||
if (flags & USE_LATCHED_XY)
|
||||
{
|
||||
s->x += x;
|
||||
|
@ -53,7 +53,7 @@ static emu_timer *scanline_timer;
|
||||
static TIMER_CALLBACK( scanline_callback )
|
||||
{
|
||||
int scanline = param;
|
||||
|
||||
|
||||
/* update the DACs */
|
||||
if (!(leland_dac_control & 0x01))
|
||||
leland_dac_update(0, leland_video_ram[(last_scanline) * 256 + 160]);
|
||||
|
@ -1210,8 +1210,8 @@ VIDEO_UPDATE( taitof2_driftout )
|
||||
UINT16 pen;
|
||||
|
||||
/* send palette, workaround for bug http://www.mametesters.org/view.php?id=3356 (just for this game)
|
||||
driftout writes twice per frame to the palette, this causes glitches on some setups due to
|
||||
VIDEO_UPDATE not being synced to renderer update when multithreading is on. */
|
||||
driftout writes twice per frame to the palette, this causes glitches on some setups due to
|
||||
VIDEO_UPDATE not being synced to renderer update when multithreading is on. */
|
||||
for (pen=0;pen<4096;pen++)
|
||||
palette_set_color_rgb(screen->machine, pen, pal5bit(paletteram_buffer[pen] >> 10), pal5bit(paletteram_buffer[pen] >> 5), pal5bit(paletteram_buffer[pen] >> 0));
|
||||
|
||||
|
@ -272,7 +272,7 @@ static const dasm_table_entry dasm_table[] =
|
||||
{ "ssem", _32le, 0, CPU_DISASSEMBLE_NAME(ssem) },
|
||||
{ "ssp1601", _16be, -1, CPU_DISASSEMBLE_NAME(ssp1601) },
|
||||
{ "t11", _16le, 0, CPU_DISASSEMBLE_NAME(t11) },
|
||||
// { "t90", _8bit, 0, CPU_DISASSEMBLE_NAME(t90) },
|
||||
// { "t90", _8bit, 0, CPU_DISASSEMBLE_NAME(t90) },
|
||||
{ "tlcs900", _8bit, 0, CPU_DISASSEMBLE_NAME(tlcs900) },
|
||||
{ "tms0980", _16be, 0, CPU_DISASSEMBLE_NAME(tms0980) },
|
||||
{ "tms1000", _8bit, 0, CPU_DISASSEMBLE_NAME(tms1000) },
|
||||
@ -293,7 +293,7 @@ static const dasm_table_entry dasm_table[] =
|
||||
{ "v70", _8bit, 0, CPU_DISASSEMBLE_NAME(v70) },
|
||||
{ "v810", _16le, 0, CPU_DISASSEMBLE_NAME(v810) },
|
||||
{ "z180", _8bit, 0, CPU_DISASSEMBLE_NAME(z180) },
|
||||
// { "z8000", _16be, 0, CPU_DISASSEMBLE_NAME(z8000) },
|
||||
// { "z8000", _16be, 0, CPU_DISASSEMBLE_NAME(z8000) },
|
||||
{ "z80", _8bit, 0, CPU_DISASSEMBLE_NAME(z80) },
|
||||
};
|
||||
|
||||
@ -306,7 +306,7 @@ void CLIB_DECL fatalerror(const char *text, ...)
|
||||
va_start(arg, text);
|
||||
vfprintf(stderr, text, arg);
|
||||
va_end(arg);
|
||||
|
||||
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@ -332,18 +332,18 @@ int parse_options(int argc, char *argv[], options *opts)
|
||||
int arg;
|
||||
|
||||
memset(opts, 0, sizeof(*opts));
|
||||
|
||||
|
||||
// loop through arguments
|
||||
for (arg = 1; arg < argc; arg++)
|
||||
{
|
||||
char *curarg = argv[arg];
|
||||
|
||||
|
||||
// is it a switch?
|
||||
if (curarg[0] == '-')
|
||||
{
|
||||
if (pending_base || pending_arch)
|
||||
goto usage;
|
||||
|
||||
|
||||
if (tolower(curarg[1]) == 'a')
|
||||
pending_arch = TRUE;
|
||||
else if (tolower(curarg[1]) == 'b')
|
||||
@ -357,7 +357,7 @@ int parse_options(int argc, char *argv[], options *opts)
|
||||
else
|
||||
goto usage;
|
||||
}
|
||||
|
||||
|
||||
// base PC
|
||||
else if (pending_base)
|
||||
{
|
||||
@ -369,7 +369,7 @@ int parse_options(int argc, char *argv[], options *opts)
|
||||
sscanf(&curarg[0], "%x", &opts->basepc);
|
||||
pending_base = FALSE;
|
||||
}
|
||||
|
||||
|
||||
// architecture
|
||||
else if (pending_arch)
|
||||
{
|
||||
@ -381,21 +381,21 @@ int parse_options(int argc, char *argv[], options *opts)
|
||||
opts->dasm = &dasm_table[curarch];
|
||||
pending_arch = FALSE;
|
||||
}
|
||||
|
||||
|
||||
// filename
|
||||
else if (opts->filename == NULL)
|
||||
opts->filename = curarg;
|
||||
|
||||
|
||||
// fail
|
||||
else
|
||||
goto usage;
|
||||
}
|
||||
|
||||
|
||||
// if no file or no architecture, fail
|
||||
if (opts->filename == NULL || opts->dasm == NULL)
|
||||
goto usage;
|
||||
return 0;
|
||||
|
||||
|
||||
usage:
|
||||
printf("Usage: %s <filename> -arch <architecture> [-basepc <pc>] [-norawbytes] [-upper] [-lower]\n", argv[0]);
|
||||
printf("\n");
|
||||
@ -428,11 +428,11 @@ int main(int argc, char *argv[])
|
||||
int numbytes;
|
||||
void *data;
|
||||
char *p;
|
||||
|
||||
|
||||
// parse options first
|
||||
if (parse_options(argc, argv, &opts))
|
||||
return 1;
|
||||
|
||||
|
||||
// load the file
|
||||
filerr = core_fload(opts.filename, &data, &length);
|
||||
if (filerr != FILERR_NONE)
|
||||
@ -440,7 +440,7 @@ int main(int argc, char *argv[])
|
||||
fprintf(stderr, "Error opening file '%s'\n", opts.filename);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
// precompute parameters
|
||||
displaychunk = (opts.dasm->display / 2) + 1;
|
||||
displayendian = opts.dasm->display % 2;
|
||||
@ -450,7 +450,7 @@ int main(int argc, char *argv[])
|
||||
case 2: maxchunks = 3; break;
|
||||
default: maxchunks = 1; break;
|
||||
}
|
||||
|
||||
|
||||
// run it
|
||||
curpc = opts.basepc;
|
||||
for (curbyte = 0; curbyte < length; curbyte += numbytes)
|
||||
@ -466,7 +466,7 @@ int main(int argc, char *argv[])
|
||||
numbytes = pcdelta << -opts.dasm->pcshift;
|
||||
else
|
||||
numbytes = pcdelta >> opts.dasm->pcshift;
|
||||
|
||||
|
||||
// round to the nearest display chunk
|
||||
numbytes = ((numbytes + displaychunk - 1) / displaychunk) * displaychunk;
|
||||
if (numbytes == 0)
|
||||
@ -475,7 +475,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
// output the address
|
||||
printf("%08X: ", curpc);
|
||||
|
||||
|
||||
// output the raw bytes
|
||||
if (!opts.norawbytes)
|
||||
{
|
||||
@ -492,7 +492,7 @@ int main(int argc, char *argv[])
|
||||
printf("%*s ", displaychunk * 2, "");
|
||||
printf(" ");
|
||||
}
|
||||
|
||||
|
||||
// output the disassembly
|
||||
if (opts.lower)
|
||||
{
|
||||
@ -504,7 +504,7 @@ int main(int argc, char *argv[])
|
||||
*p = toupper(*p);
|
||||
}
|
||||
printf("%s\n", buffer);
|
||||
|
||||
|
||||
// output additional raw bytes
|
||||
if (!opts.norawbytes && numchunks > maxchunks)
|
||||
{
|
||||
|
@ -10,4 +10,4 @@
|
||||
***************************************************************************/
|
||||
|
||||
extern const char build_version[];
|
||||
const char build_version[] = "0.133u3 ("__DATE__")";
|
||||
const char build_version[] = "0.133u4 ("__DATE__")";
|
||||
|
Loading…
Reference in New Issue
Block a user