Cleanups and version bump.

This commit is contained in:
Aaron Giles 2008-06-12 19:59:19 +00:00
parent 1855238186
commit 5a162da3d4
48 changed files with 466 additions and 466 deletions

View File

@ -7876,7 +7876,7 @@ static int select_search_region_menu(running_machine *machine, cheat_menu_stack
else
{
/* in case of no search region */
/* in case of no search region */
menu_item[total] = "No Search Region";
menu_sub_item[total++] = NULL;
}
@ -11128,7 +11128,7 @@ static UINT32 read_region_data(search_region *region, UINT32 offset, UINT8 size,
UINT8 *buf = (UINT8 *)region->cached_pointer;
if(buf)
// return do_memory_read(region->cached_pointer, address, size, swap, &raw_cpu_info);
// return do_memory_read(region->cached_pointer, address, size, swap, &raw_cpu_info);
return do_memory_read(buf, address, size, cpu_needs_swap(region->target_idx) ^ swap, get_cpu_info(region->target_idx));
else
return 0;

View File

@ -14,8 +14,8 @@
TODO:
- when is the microbus int cleared?
- CKO sync input
- save internal RAM when CKO is RAM power supply pin
- CKO sync input
- save internal RAM when CKO is RAM power supply pin
- run interrupt test suite
- run production test suite
- run microbus test suite

View File

@ -436,7 +436,7 @@ static void drcbec_generate(drcbe_state *drcbe, drcuml_block *block, const drcum
dst->inst = (drcbec_instruction *)drclabel_get_codeptr(drcbe->labels, inst->param[0].value, fixup_label, dst);
dst++;
break;
/* generically handle everything else */
default:

View File

@ -19,11 +19,11 @@
* Identify common pairs and optimize output
* Convert AND 0xff/0xffff to movzx
* Convert SUB a,0,b to NEG
* Optimize, e.g., and [r5],i0,$FF to use rbx as temporary register
(avoid initial move) if i0 is not needed going forward
(avoid initial move) if i0 is not needed going forward
****************************************************************************
@ -1240,7 +1240,7 @@ static void emit_mov_r32_p32(drcbe_state *drcbe, x86code **dst, UINT8 reg, const
/*-------------------------------------------------
emit_mov_r32_p32_keepflags - move a 32-bit
emit_mov_r32_p32_keepflags - move a 32-bit
parameter into a register without affecting
any flags
-------------------------------------------------*/
@ -1995,7 +1995,7 @@ static void emit_mov_r64_p64(drcbe_state *drcbe, x86code **dst, UINT8 reg, const
/*-------------------------------------------------
emit_mov_r64_p64_keepflags - move a 64-bit
emit_mov_r64_p64_keepflags - move a 64-bit
parameter into a register without affecting
any flags
-------------------------------------------------*/
@ -2978,7 +2978,7 @@ static x86code *op_handle(drcbe_state *drcbe, x86code *dst, const drcuml_instruc
assert_no_flags(inst);
assert(inst->numparams == 1);
assert(inst->param[0].type == DRCUML_PTYPE_MEMORY);
/* emit a jump around the stack adjust in case code falls through here */
emit_jmp_short_link(&dst, &skip); // jmp skip
@ -3539,7 +3539,7 @@ static x86code *op_getflgs(drcbe_state *drcbe, x86code *dst, const drcuml_instru
/* pick a target register for the general case */
dstreg = param_select_register(REG_EAX, &dstp, NULL);
/* compute mask for flags */
if (maskp.value & DRCUML_FLAG_C) flagmask |= 0x001;
if (maskp.value & DRCUML_FLAG_V) flagmask |= 0x800;
@ -6079,7 +6079,7 @@ static x86code *op_fstore(drcbe_state *drcbe, x86code *dst, const drcuml_instruc
assert(inst->size == 4 || inst->size == 8);
assert_no_condition(inst);
assert_no_flags(inst);
/* normalize parameters */
param_normalize_3(drcbe, inst, &basep, PTYPE_M, &indp, PTYPE_MRI, &srcp, PTYPE_MF);

View File

@ -19,11 +19,11 @@
* Identify common pairs and optimize output
* Convert AND 0xff/0xffff to movzx
* Convert SUB a,0,b to NEG
* Optimize, e.g., and [r5],i0,$FF to use ebx as temporary register
(avoid initial move) if i0 is not needed going forward
(avoid initial move) if i0 is not needed going forward
****************************************************************************
@ -1044,7 +1044,7 @@ static void emit_mov_r32_p32(drcbe_state *drcbe, x86code **dst, UINT8 reg, const
/*-------------------------------------------------
emit_mov_r32_p32_keepflags - move a 32-bit
emit_mov_r32_p32_keepflags - move a 32-bit
parameter into a register without affecting
any flags
-------------------------------------------------*/
@ -1845,7 +1845,7 @@ static void emit_mov_r64_p64(drcbe_state *drcbe, x86code **dst, UINT8 reglo, UIN
/*-------------------------------------------------
emit_mov_r64_p64_keepflags - move a 64-bit
emit_mov_r64_p64_keepflags - move a 64-bit
parameter into a pair of registers without
affecting any flags
-------------------------------------------------*/

View File

@ -12,8 +12,8 @@
Future improvements/changes:
* more aggressive handling of needed registers for conditional
intrablock branches
* more aggressive handling of needed registers for conditional
intrablock branches
***************************************************************************/
@ -485,23 +485,23 @@ static void accumulate_required_backwards(opcode_desc *desc, UINT32 *reqmask)
/* recursively handle delay slots */
if (desc->delay != NULL)
accumulate_required_backwards(desc->delay, reqmask);
/* if this is a branch, we have to reset our requests */
if (desc->flags & OPFLAG_IS_BRANCH)
reqmask[0] = reqmask[1] = reqmask[2] = reqmask[3] = 0xffffffff;
/* determine the required registers */
desc->regreq[0] = desc->regout[0] & reqmask[0];
desc->regreq[1] = desc->regout[1] & reqmask[1];
desc->regreq[2] = desc->regout[2] & reqmask[2];
desc->regreq[3] = desc->regout[3] & reqmask[3];
/* any registers modified by this instruction aren't required upstream until referenced */
reqmask[0] &= ~desc->regout[0];
reqmask[1] &= ~desc->regout[1];
reqmask[2] &= ~desc->regout[2];
reqmask[3] &= ~desc->regout[3];
/* any registers required by this instruction now get marked required */
reqmask[0] |= desc->regin[0];
reqmask[1] |= desc->regin[1];

View File

@ -475,7 +475,7 @@ INLINE void convert_to_nop(drcuml_instruction *inst)
/*-------------------------------------------------
convert_to_mov_immediate - convert an
convert_to_mov_immediate - convert an
instruction inline to a MOV immediate
-------------------------------------------------*/
@ -490,7 +490,7 @@ INLINE void convert_to_mov_immediate(drcuml_instruction *inst, UINT64 immediate)
/*-------------------------------------------------
convert_to_mov_param - convert an
convert_to_mov_param - convert an
instruction inline to a MOV with a source
parameter given by the existing parameter
index pnum
@ -588,15 +588,15 @@ void drcuml_reset(drcuml_state *drcuml)
(*drcuml->beintf->be_reset)(drcuml->bestate);
/* do a one-time validation if requested */
/* if (VALIDATE_BACKEND)
{
static int validated = FALSE;
if (!validated)
{
validated = TRUE;
validate_backend(drcuml);
}
}*/
/* if (VALIDATE_BACKEND)
{
static int validated = FALSE;
if (!validated)
{
validated = TRUE;
validate_backend(drcuml);
}
}*/
}
@ -624,7 +624,7 @@ void drcuml_free(drcuml_state *drcuml)
free(block->inst);
free(block);
}
/* free all the symbols */
while (drcuml->symlist != NULL)
{
@ -853,7 +853,7 @@ void drcuml_block_end(drcuml_block *block)
drcuml_state *drcuml = block->drcuml;
assert(block->inuse);
/* optimize the resulting code first */
optimize_block(block);
@ -1003,7 +1003,7 @@ const char *drcuml_handle_name(const drcuml_codehandle *handle)
***************************************************************************/
/*-------------------------------------------------
drcuml_symbol_add - add a symbol to the
drcuml_symbol_add - add a symbol to the
internal symbol table
-------------------------------------------------*/
@ -1015,13 +1015,13 @@ void drcuml_symbol_add(drcuml_state *drcuml, void *base, UINT32 length, const ch
symbol = malloc(sizeof(*symbol) + strlen(name));
if (symbol == NULL)
fatalerror("Out of memory allocating symbol in drcuml_symbol_add");
/* fill in the structure */
symbol->next = NULL;
symbol->base = (drccodeptr)base;
symbol->length = length;
strcpy(symbol->symname, name);
/* add to the tail of the list */
*drcuml->symtailptr = symbol;
drcuml->symtailptr = &symbol->next;
@ -1029,8 +1029,8 @@ void drcuml_symbol_add(drcuml_state *drcuml, void *base, UINT32 length, const ch
/*-------------------------------------------------
drcuml_symbol_find - look up a symbol from the
internal symbol table or return NULL if not
drcuml_symbol_find - look up a symbol from the
internal symbol table or return NULL if not
found
-------------------------------------------------*/
@ -1038,7 +1038,7 @@ const char *drcuml_symbol_find(drcuml_state *drcuml, void *base, UINT32 *offset)
{
drccodeptr search = base;
drcuml_symbol *symbol;
/* simple linear search */
for (symbol = drcuml->symlist; symbol != NULL; symbol = symbol->next)
if (search >= symbol->base && search < symbol->base + symbol->length)
@ -1046,13 +1046,13 @@ const char *drcuml_symbol_find(drcuml_state *drcuml, void *base, UINT32 *offset)
/* if no offset pointer, only match perfectly */
if (offset == NULL && search != symbol->base)
continue;
/* return the offset and name */
if (offset != NULL)
*offset = search - symbol->base;
return symbol->symname;
}
/* not found; return NULL */
return NULL;
}
@ -1125,7 +1125,7 @@ void drcuml_disasm(const drcuml_instruction *inst, char *buffer, drcuml_state *d
int pnum;
assert(inst->opcode != DRCUML_OP_INVALID && inst->opcode < DRCUML_OP_MAX);
/* start with the raw mnemonic and substitute sizes */
for (opsrc = opinfo->mnemonic; *opsrc != 0; opsrc++)
if (*opsrc == '!')
@ -1134,11 +1134,11 @@ void drcuml_disasm(const drcuml_instruction *inst, char *buffer, drcuml_state *d
dest += sprintf(dest, "%s", pound_size[inst->size]);
else
*dest++ = *opsrc;
/* pad to 8 spaces */
while (dest < &buffer[8])
*dest++ = ' ';
/* iterate through parameters */
for (pnum = 0; pnum < inst->numparams; pnum++)
{
@ -1150,35 +1150,35 @@ void drcuml_disasm(const drcuml_instruction *inst, char *buffer, drcuml_state *d
/* start with a comma for all except the first parameter */
if (pnum != 0)
*dest++ = ',';
/* ouput based on type */
switch (param->type)
{
/* immediates have several special cases */
case DRCUML_PTYPE_IMMEDIATE:
/* size immediate */
if (typemask == PTYPES_SIZE)
dest += sprintf(dest, "%s", sizes[param->value]);
/* address space immediate */
else if (typemask == PTYPES_SPACE)
dest += sprintf(dest, "%s", address_space_names[param->value]);
/* size + address space immediate */
else if (typemask == PTYPES_SPSZ)
dest += sprintf(dest, "%s_%s", address_space_names[param->value / 16], sizes[param->value % 16]);
/* fmod immediate */
else if (typemask == PTYPES_FMOD)
dest += sprintf(dest, "%s", fmods[param->value]);
/* general immediate */
else
{
int size = effective_psize(inst, opinfo, pnum);
UINT64 value = param->value;
/* truncate to size */
if (size == 1) value = (UINT8)value;
if (size == 2) value = (UINT16)value;
@ -1189,7 +1189,7 @@ void drcuml_disasm(const drcuml_instruction *inst, char *buffer, drcuml_state *d
dest += sprintf(dest, "$%X%08X", (UINT32)(value >> 32), (UINT32)value);
}
break;
/* integer registers */
case DRCUML_PTYPE_INT_REGISTER:
if (param->value >= DRCUML_REG_I0 && param->value < DRCUML_REG_I_END)
@ -1216,15 +1216,15 @@ void drcuml_disasm(const drcuml_instruction *inst, char *buffer, drcuml_state *d
/* memory */
case DRCUML_PTYPE_MEMORY:
/* handle pointer */
if (typemask == PTYPES_HAND)
dest += sprintf(dest, "%s", drcuml_handle_name((const drcuml_codehandle *)(FPTR)param->value));
/* string pointer */
else if (typemask == PTYPES_STR)
dest += sprintf(dest, "%s", (const char *)(FPTR)param->value);
/* symbol */
else if (drcuml != NULL && (symbol = drcuml_symbol_find(drcuml, (drccodeptr)(FPTR)param->value, &symoffset)) != NULL)
{
@ -1233,26 +1233,26 @@ void drcuml_disasm(const drcuml_instruction *inst, char *buffer, drcuml_state *d
else
dest += sprintf(dest, "[%s+$%X]", symbol, symoffset);
}
/* cache memory */
else if (drcuml != NULL && drccache_contains_pointer(drcuml->cache, (void *)(FPTR)param->value))
dest += sprintf(dest, "[+$%X]", (UINT32)(FPTR)((drccodeptr)(FPTR)param->value - drccache_near(drcuml->cache)));
/* general memory */
else
dest += sprintf(dest, "[[$%p]]", (void *)(FPTR)param->value);
break;
default:
dest += sprintf(dest, "???");
break;
}
}
/* if there's a condition, append it */
if (inst->condition != DRCUML_COND_ALWAYS)
dest += sprintf(dest, ",%s", conditions[inst->condition & 0x0f]);
/* if there are flags, append them */
if (inst->flags != 0)
{
@ -1268,7 +1268,7 @@ void drcuml_disasm(const drcuml_instruction *inst, char *buffer, drcuml_state *d
if (inst->flags & DRCUML_FLAG_C)
*dest++ = 'C';
}
/* ensure we are NULL-terminated */
*dest = 0;
}
@ -1296,29 +1296,29 @@ static void optimize_block(drcuml_block *block)
const drcuml_opcode_info *opinfo = opcode_info_table[inst->opcode];
UINT8 remainingflags;
int scannum, pnum;
/* first compute what flags we need */
inst->flags = 0;
remainingflags = effective_outflags(inst, opinfo);
/* scan ahead until we run out of possible remaining flags */
for (scannum = instnum + 1; remainingflags != 0 && scannum < block->nextinst; scannum++)
{
const drcuml_instruction *scan = &block->inst[scannum];
const drcuml_opcode_info *scaninfo = opcode_info_table[scan->opcode];
/* any input flags are required */
inst->flags |= effective_inflags(scan, scaninfo);
/* if the scanahead instruction is unconditional, assume his flags are modified */
if (scan->condition == DRCUML_COND_ALWAYS)
remainingflags &= ~scaninfo->modflags;
}
/* track mapvars */
if (inst->opcode == DRCUML_OP_MAPVAR)
mapvar[inst->param[0].value - DRCUML_MAPVAR_M0] = inst->param[1].value;
/* convert all mapvar parameters to immediates */
else if (inst->opcode != DRCUML_OP_RECOVER)
for (pnum = 0; pnum < inst->numparams; pnum++)
@ -1327,7 +1327,7 @@ static void optimize_block(drcuml_block *block)
inst->param[pnum].type = DRCUML_PTYPE_IMMEDIATE;
inst->param[pnum].value = mapvar[inst->param[pnum].value - DRCUML_MAPVAR_M0];
}
/* if we don't need any flags, then we can eliminate a lot of dumb operations */
if (inst->flags == 0)
simplify_instruction_with_no_flags(block, inst);
@ -1371,19 +1371,19 @@ static void simplify_instruction_with_no_flags(drcuml_block *block, drcuml_instr
inst->param[2] = inst->param[3];
}
break;
/* SET: convert to MOV if constant condition */
case DRCUML_OP_SET:
if (inst->condition == DRCUML_COND_ALWAYS)
convert_to_mov_immediate(inst, 1);
break;
/* MOV: convert to NOP if move-to-self */
case DRCUML_OP_MOV:
if (param_equal(inst, 0, 1))
convert_to_nop(inst);
break;
/* SEXT: convert immediates to MOV */
case DRCUML_OP_SEXT:
if (param_is_immediate(inst, 1))
@ -1395,7 +1395,7 @@ static void simplify_instruction_with_no_flags(drcuml_block *block, drcuml_instr
case DRCUML_SIZE_QWORD: convert_to_mov_immediate(inst, (INT64)inst->param[1].value); break;
}
break;
/* ROLAND: convert to MOV if all immediate, or to ROL or AND if one is not needed, or to SHL/SHR if the mask is right */
case DRCUML_OP_ROLAND:
if (param_is_immediate(inst, 1) && param_is_immediate(inst, 2) && param_is_immediate(inst, 3))
@ -1428,13 +1428,13 @@ static void simplify_instruction_with_no_flags(drcuml_block *block, drcuml_instr
inst->param[2].value = 8 * inst->size - inst->param[2].value;
}
break;
/* ROLINS: convert to ROLAND if the mask is full */
case DRCUML_OP_ROLINS:
if (param_is_immediate_value(inst, 3, instsizemask[inst->size]))
inst->opcode = DRCUML_OP_ROLAND;
break;
/* ADD: convert to MOV if immediate, or if adding 0 */
case DRCUML_OP_ADD:
if (param_is_immediate(inst, 1) && param_is_immediate(inst, 2))
@ -1444,7 +1444,7 @@ static void simplify_instruction_with_no_flags(drcuml_block *block, drcuml_instr
else if (param_is_immediate_value(inst, 2, 0))
convert_to_mov_param(inst, 1);
break;
/* SUB: convert to MOV if immediate, or if subtracting 0 */
case DRCUML_OP_SUB:
if (param_is_immediate(inst, 1) && param_is_immediate(inst, 2))
@ -1452,7 +1452,7 @@ static void simplify_instruction_with_no_flags(drcuml_block *block, drcuml_instr
else if (param_is_immediate_value(inst, 2, 0))
convert_to_mov_param(inst, 1);
break;
/* CMP: no-op if no flags needed, compare i0 to i0 if the parameters are equal */
case DRCUML_OP_CMP:
if (inst->flags == 0)
@ -1463,7 +1463,7 @@ static void simplify_instruction_with_no_flags(drcuml_block *block, drcuml_instr
inst->param[1].value = inst->param[2].value = DRCUML_REG_I0;
}
break;
/* MULU: convert simple form to MOV if immediate, or if multiplying by 0 */
case DRCUML_OP_MULU:
if (param_equal(inst, 0, 1))
@ -1479,7 +1479,7 @@ static void simplify_instruction_with_no_flags(drcuml_block *block, drcuml_instr
}
}
break;
/* MULS: convert simple form to MOV if immediate, or if multiplying by 0 */
case DRCUML_OP_MULS:
if (param_equal(inst, 0, 1))
@ -1545,7 +1545,7 @@ static void simplify_instruction_with_no_flags(drcuml_block *block, drcuml_instr
if (inst->flags == 0)
convert_to_nop(inst);
break;
/* OR: convert to MOV if immediate, or if oring against 0 or 0xffffffff */
case DRCUML_OP_OR:
if (param_is_immediate_value(inst, 1, instsizemask[inst->size]) || param_is_immediate_value(inst, 2, instsizemask[inst->size]))
@ -1557,7 +1557,7 @@ static void simplify_instruction_with_no_flags(drcuml_block *block, drcuml_instr
else if (param_is_immediate_value(inst, 2, 0))
convert_to_mov_param(inst, 1);
break;
/* XOR: convert to MOV if immediate, or if xoring against 0 */
case DRCUML_OP_XOR:
if (param_is_immediate(inst, 1) && param_is_immediate(inst, 2))
@ -1567,7 +1567,7 @@ static void simplify_instruction_with_no_flags(drcuml_block *block, drcuml_instr
else if (param_is_immediate_value(inst, 2, 0))
convert_to_mov_param(inst, 1);
break;
/* LZCNT: convert to MOV if immediate */
case DRCUML_OP_LZCNT:
if (param_is_immediate(inst, 1))
@ -1583,7 +1583,7 @@ static void simplify_instruction_with_no_flags(drcuml_block *block, drcuml_instr
}
}
break;
/* BSWAP: convert to MOV if immediate */
case DRCUML_OP_BSWAP:
if (param_is_immediate(inst, 1))
@ -1594,7 +1594,7 @@ static void simplify_instruction_with_no_flags(drcuml_block *block, drcuml_instr
convert_to_mov_immediate(inst, FLIPENDIAN_INT64(inst->param[1].value));
}
break;
/* SHL: convert to MOV if immediate or shifting by 0 */
case DRCUML_OP_SHL:
if (param_is_immediate(inst, 1) && param_is_immediate(inst, 2))
@ -1602,7 +1602,7 @@ static void simplify_instruction_with_no_flags(drcuml_block *block, drcuml_instr
else if (param_is_immediate_value(inst, 2, 0))
convert_to_mov_param(inst, 1);
break;
/* SHR: convert to MOV if immediate or shifting by 0 */
case DRCUML_OP_SHR:
if (param_is_immediate(inst, 1) && param_is_immediate(inst, 2))
@ -1615,7 +1615,7 @@ static void simplify_instruction_with_no_flags(drcuml_block *block, drcuml_instr
else if (param_is_immediate_value(inst, 2, 0))
convert_to_mov_param(inst, 1);
break;
/* SAR: convert to MOV if immediate or shifting by 0 */
case DRCUML_OP_SAR:
if (param_is_immediate(inst, 1) && param_is_immediate(inst, 2))
@ -1628,7 +1628,7 @@ static void simplify_instruction_with_no_flags(drcuml_block *block, drcuml_instr
else if (param_is_immediate_value(inst, 2, 0))
convert_to_mov_param(inst, 1);
break;
/* ROL: convert to NOP if immediate or rotating by 0 */
case DRCUML_OP_ROL:
if (param_is_immediate(inst, 1) && param_is_immediate(inst, 2))
@ -1641,7 +1641,7 @@ static void simplify_instruction_with_no_flags(drcuml_block *block, drcuml_instr
else if (param_is_immediate_value(inst, 2, 0))
convert_to_mov_param(inst, 1);
break;
/* ROR: convert to NOP if immediate or rotating by 0 */
case DRCUML_OP_ROR:
if (param_is_immediate(inst, 1) && param_is_immediate(inst, 2))
@ -1660,11 +1660,11 @@ static void simplify_instruction_with_no_flags(drcuml_block *block, drcuml_instr
if (param_equal(inst, 0, 1))
convert_to_nop(inst);
break;
default:
break;
}
#if LOG_SIMPLIFICATIONS
if (memcmp(&orig, inst, sizeof(orig)) != 0)
{
@ -1704,14 +1704,14 @@ static void disassemble_block(drcuml_block *block)
{
const drcuml_instruction *inst = &block->inst[instnum];
int flushcomments = FALSE;
/* remember comments and mapvars for later */
if (inst->opcode == DRCUML_OP_COMMENT || inst->opcode == DRCUML_OP_MAPVAR)
{
if (firstcomment == -1)
firstcomment = instnum;
}
/* print labels, handles, and hashes left justified */
else if (inst->opcode == DRCUML_OP_LABEL)
drcuml_log_printf(block->drcuml, "$%X:\n", (UINT32)inst->param[0].value);
@ -1725,7 +1725,7 @@ static void disassemble_block(drcuml_block *block)
{
char dasm[256];
drcuml_disasm(&block->inst[instnum], dasm, block->drcuml);
/* include the first accumulated comment with this line */
if (firstcomment != -1)
{
@ -1736,7 +1736,7 @@ static void disassemble_block(drcuml_block *block)
else
drcuml_log_printf(block->drcuml, "\t%s\n", dasm);
}
/* flush any comments pending */
if (firstcomment != -1 && (flushcomments || instnum == block->nextinst - 1))
{
@ -1762,18 +1762,18 @@ static void disassemble_block(drcuml_block *block)
static const char *get_comment_text(const drcuml_instruction *inst)
{
static char tempbuf[100];
/* comments return their strings */
if (inst->opcode == DRCUML_OP_COMMENT)
return (char *)(FPTR)inst->param[0].value;
/* mapvars comment about their values */
else if (inst->opcode == DRCUML_OP_MAPVAR)
{
sprintf(tempbuf, "m%d = $%X", (int)inst->param[0].value - DRCUML_MAPVAR_M0, (UINT32)inst->param[1].value);
return tempbuf;
}
/* everything else is NULL */
return NULL;
}
@ -1797,21 +1797,21 @@ static void validate_instruction(drcuml_block *block, const drcuml_instruction *
/* validate raw information */
assert(inst->opcode != DRCUML_OP_INVALID && inst->opcode < DRCUML_OP_MAX);
assert(inst->size == 1 || inst->size == 2 || inst->size == 4 || inst->size == 8);
/* validate against opcode limits */
assert((opinfo->sizes & inst->size) != 0);
assert(inst->condition == DRCUML_COND_ALWAYS || opinfo->condition);
/* validate each parameter */
for (pnum = 0; pnum < inst->numparams; pnum++)
{
const drcuml_parameter *param = &inst->param[pnum];
UINT16 typemask = opinfo->param[pnum].typemask;
/* ensure the type is correct */
assert(param->type > DRCUML_PTYPE_NONE && param->type < DRCUML_PTYPE_MAX);
assert((typemask >> param->type) & 1);
/* validate various parameter types */
switch (param->type)
{
@ -1820,7 +1820,7 @@ static void validate_instruction(drcuml_block *block, const drcuml_instruction *
if (typemask != PTYPES_PTR && typemask != PTYPES_STATE && typemask != PTYPES_STR && typemask != PTYPES_CFUNC)
assert_in_near_cache(block->drcuml->cache, (void *)(FPTR)param->value);
break;
case DRCUML_PTYPE_IMMEDIATE:
/* many special parameter types are encoded as immediately; ensure they are in range */
if (typemask == PTYPES_SIZE)
@ -1835,19 +1835,19 @@ static void validate_instruction(drcuml_block *block, const drcuml_instruction *
else if (typemask == PTYPES_FMOD)
assert(param->value >= DRCUML_FMOD_TRUNC && param->value <= DRCUML_FMOD_DEFAULT);
break;
case DRCUML_PTYPE_MAPVAR:
assert(param->value >= DRCUML_MAPVAR_M0 && param->value < DRCUML_MAPVAR_END);
break;
case DRCUML_PTYPE_INT_REGISTER:
assert(param->value >= DRCUML_REG_I0 && param->value < DRCUML_REG_I_END);
break;
case DRCUML_PTYPE_FLOAT_REGISTER:
assert(param->value >= DRCUML_REG_F0 && param->value < DRCUML_REG_F_END);
break;
default:
assert(FALSE);
break;

View File

@ -202,7 +202,7 @@ INLINE void execute_one(int opcode)
break;
case 0x03: i8085_ICount -= (I.cputype) ? 6 : 5; /* INX B */
I.BC.w.l++;
if( I.cputype )
if( I.cputype )
{
if (I.BC.b.l == 0x00) I.AF.b.l |= XF; else I.AF.b.l &= ~XF;
}
@ -236,8 +236,8 @@ INLINE void execute_one(int opcode)
break;
case 0x0b: i8085_ICount -= (I.cputype) ? 6 : 5; /* DCX B */
I.BC.w.l--;
if( I.cputype )
{
if( I.cputype )
{
if (I.BC.b.l == 0xff) I.AF.b.l |= XF; else I.AF.b.l &= ~XF;
}
break;
@ -271,8 +271,8 @@ INLINE void execute_one(int opcode)
break;
case 0x13: i8085_ICount -= (I.cputype) ? 6 : 5; /* INX D */
I.DE.w.l++;
if( I.cputype )
{
if( I.cputype )
{
if (I.DE.b.l == 0x00) I.AF.b.l |= XF; else I.AF.b.l &= ~XF;
}
break;
@ -308,7 +308,7 @@ INLINE void execute_one(int opcode)
break;
case 0x1b: i8085_ICount -= (I.cputype) ? 6 : 5; /* DCX D */
I.DE.w.l--;
if( I.cputype )
if( I.cputype )
{
if (I.DE.b.l == 0xff) I.AF.b.l |= XF; else I.AF.b.l &= ~XF;
}
@ -348,8 +348,8 @@ INLINE void execute_one(int opcode)
break;
case 0x23: i8085_ICount -= (I.cputype) ? 6 : 5; /* INX H */
I.HL.w.l++;
if( I.cputype )
{
if( I.cputype )
{
if (I.HL.b.l == 0x00) I.AF.b.l |= XF; else I.AF.b.l &= ~XF;
}
break;
@ -368,7 +368,7 @@ INLINE void execute_one(int opcode)
if (I.AF.b.l & HF) I.XX.d |= 0x200;
if (I.AF.b.l & NF) I.XX.d |= 0x400;
I.AF.w.l = DAA[I.XX.d];
if( I.cputype==0 )
if( I.cputype==0 )
{
I.AF.b.l &= 0xd5; // Ignore not used flags
}
@ -394,7 +394,7 @@ INLINE void execute_one(int opcode)
break;
case 0x2b: i8085_ICount -= (I.cputype) ? 6 : 5; /* DCX H */
I.HL.w.l--;
if( I.cputype )
if( I.cputype )
{
if (I.HL.b.l == 0xff) I.AF.b.l |= XF; else I.AF.b.l &= ~XF;
}
@ -453,7 +453,7 @@ INLINE void execute_one(int opcode)
break;
case 0x33: i8085_ICount -= (I.cputype) ? 6 : 5; /* INX SP */
I.SP.w.l++;
if( I.cputype )
if( I.cputype )
{
if (I.SP.b.l == 0x00) I.AF.b.l |= XF; else I.AF.b.l &= ~XF;
}
@ -494,8 +494,8 @@ INLINE void execute_one(int opcode)
break;
case 0x3b: i8085_ICount -= (I.cputype) ? 6 : 5; /* DCX SP */
I.SP.w.l--;
if( I.cputype )
{
if( I.cputype )
{
if (I.SP.b.l == 0xff) I.AF.b.l |= XF; else I.AF.b.l &= ~XF;
}
break;
@ -508,7 +508,7 @@ INLINE void execute_one(int opcode)
case 0x3e: i8085_ICount -= 7; /* MVI A,nn */
M_MVI(I.AF.b.h);
break;
case 0x3f: i8085_ICount -= 4; /* CMC */
case 0x3f: i8085_ICount -= 4; /* CMC */
I.AF.b.l = (I.AF.b.l & 0xfe) | ((I.AF.b.l & CF)==1 ? 0 : 1);
break;

View File

@ -36,8 +36,8 @@
#define ADDR_RST75 0x003c
#define ADDR_INTR 0x0038
#define M_INR(R) {UINT8 hc = ((R & 0x0f) == 0x0f) ? HF : 0; ++R; I.AF.b.l= (I.AF.b.l & CF ) | ZSP[R] | hc; }
#define M_DCR(R) {UINT8 hc = ((R & 0x0f) == 0x00) ? HF : 0; --R; I.AF.b.l= (I.AF.b.l & CF ) | ZSP[R] | hc | NF; }
#define M_INR(R) {UINT8 hc = ((R & 0x0f) == 0x0f) ? HF : 0; ++R; I.AF.b.l= (I.AF.b.l & CF ) | ZSP[R] | hc; }
#define M_DCR(R) {UINT8 hc = ((R & 0x0f) == 0x00) ? HF : 0; --R; I.AF.b.l= (I.AF.b.l & CF ) | ZSP[R] | hc | NF; }
#define M_MVI(R) R=ARG()
#define M_ANA(R) { int i = ((I.AF.b.h | R)>>3)&1 * HF; I.AF.b.h&=R; I.AF.b.l=ZSP[I.AF.b.h]; if( I.cputype ) { I.AF.b.l |= HF; } else {I.AF.b.l |= i; } }

View File

@ -314,7 +314,7 @@ static const int insnminx_cycles[256] = {
8, 8, 8, 8, 12, 16, 8, 8, 8, 8, 8, 8, 12, 16, 8, 8,
8, 8, 8, 8, 12, 16, 8, 8, 8, 8, 8, 8, 12, 16, 8, 8,
8, 8, 8, 8, 12, 16, 8, 8, 8, 8, 8, 8, 12, 16, 8, 8,
4, 4, 4, 4, 12, 8, 8, 8, 4, 4, 4, 4, 12, 8, 8, 8,
4, 4, 4, 4, 12, 8, 8, 8, 4, 4, 4, 4, 12, 8, 8, 8,
8, 8, 8, 8, 16, 12, 12, 12, 8, 8, 8, 8, 16, 12, 12, 12,

View File

@ -1,8 +1,8 @@
/***************************************************************************
mips3.h
Interface file for the universal machine language-based
Interface file for the universal machine language-based
MIPS III/IV emulator.
Copyright Aaron Giles

View File

@ -2,7 +2,7 @@
ppc.h
Interface file for the universal machine language-based
Interface file for the universal machine language-based
PowerPC emulator.
Copyright Aaron Giles

View File

@ -476,18 +476,18 @@ void ppccom_tlb_fill(powerpc_state *ppc)
int transtype = ppc->param1;
offs_t transaddr = address;
UINT32 entryval;
/* 4xx case: "TLB" really just caches writes and checks compare registers */
if (ppc->cap & PPCCAP_4XX)
{
/* assume success and direct translation */
ppc->param0 = 1;
transaddr = address & 0x7fffffff;
/* we don't support the MMU of the 403GCX */
if (ppc->flavor == PPC_MODEL_403GCX && (ppc->msr & MSROEA_DR))
fatalerror("MMU enabled but not supported!");
/* only check if PE is enabled */
if (transtype == TRANSLATE_WRITE && (ppc->msr & MSR4XX_PE))
{
@ -500,11 +500,11 @@ void ppccom_tlb_fill(powerpc_state *ppc)
ppc->param0 = 2;
}
}
/* OEA case: perform an address translation */
else
ppc->param0 = ppccom_translate_address_internal(ppc, transtype | transuser, &transaddr);
/* log information and return upon failure */
if (PRINTF_TLB_FILL)
printf("tlb_fill: %08X (%s%s) -> ", address, (transtype == TRANSLATE_READ) ? "R" : (transtype == TRANSLATE_WRITE) ? "W" : "F", transuser ? "U" : "S");
@ -1386,7 +1386,7 @@ static int ppc4xx_dma_decrement_count(powerpc_state *ppc, int dmachan)
/* set the complete bit and handle interrupts */
ppc->dcr[DCR4XX_DMASR] |= 1 << (31 - dmachan);
// ppc->dcr[DCR4XX_DMASR] |= 1 << (27 - dmachan);
// ppc->dcr[DCR4XX_DMASR] |= 1 << (27 - dmachan);
ppc4xx_dma_update_irq_states(ppc);
return TRUE;
}
@ -1644,7 +1644,7 @@ static void ppc4xx_spu_rx_data(powerpc_state *ppc, UINT8 data)
new_rxin = (ppc->spu.rxin + 1) % ARRAY_LENGTH(ppc->spu.rxbuffer);
if (new_rxin == ppc->spu.rxout)
fatalerror("ppc4xx_spu_rx_data: buffer overrun!");
/* store the data and accept the new in index */
ppc->spu.rxbuffer[ppc->spu.rxin] = data;
ppc->spu.rxin = new_rxin;
@ -1719,7 +1719,7 @@ static TIMER_CALLBACK( ppc4xx_spu_callback )
{
int operation = (ppc->spu.regs[SPU4XX_RX_COMMAND] >> 5) & 3;
UINT8 rxbyte;
/* consume the byte and advance the out pointer */
rxbyte = ppc->spu.rxbuffer[ppc->spu.rxout];
ppc->spu.rxout = (ppc->spu.rxout + 1) % ARRAY_LENGTH(ppc->spu.rxbuffer);

View File

@ -12,7 +12,7 @@
Future improvements/changes:
* crxor a,a,a / creqv a,a,a / cror a,a,a
* crxor a,a,a / creqv a,a,a / cror a,a,a
***************************************************************************/
@ -582,7 +582,7 @@ static void ppcdrc_init(powerpc_flavor flavor, UINT8 cap, int tb_divisor, int cl
ppc->impstate->drcuml = drcuml_alloc(cache, flags, 8, 32, 2);
if (ppc->impstate->drcuml == NULL)
fatalerror("Error initializing the UML");
/* add symbols for our stuff */
drcuml_symbol_add(ppc->impstate->drcuml, &ppc->pc, sizeof(ppc->pc), "pc");
drcuml_symbol_add(ppc->impstate->drcuml, &ppc->icount, sizeof(ppc->icount), "icount");
@ -1798,14 +1798,14 @@ static void static_generate_memory_accessor(drcuml_state *drcuml, int mode, int
UML_LOAD(block, IREG(3), ppc->tlb_table, IREG(3), DWORD); // load i3,[tlb_table],i3,dword
UML_JMP(block, tlbreturn); // jmp tlbreturn
UML_LABEL(block, dsi); // dsi:
/* 4XX case: protection exception */
if (ppc->cap & PPCCAP_4XX)
{
UML_MOV(block, SPR32(SPR4XX_DEAR), IREG(0)); // mov [dear],i0
UML_EXH(block, ppc->impstate->exception[EXCEPTION_DSI], IREG(0)); // exh dsi,i0
}
/* 603 case: TLBMISS exception */
else if (ppc->cap & PPCCAP_603_MMU)
{
@ -1818,7 +1818,7 @@ static void static_generate_memory_accessor(drcuml_state *drcuml, int mode, int
else
UML_EXH(block, ppc->impstate->exception[EXCEPTION_DTLBMISSL], IREG(0)); // exh dtlbmissl,i0
}
/* general case: DSI exception */
else
{
@ -1887,7 +1887,7 @@ static void static_generate_lsw_entries(drcuml_state *drcuml, int mode)
for (regnum = 0; regnum < 32; regnum++)
{
char temp[20];
/* allocate a handle */
sprintf(temp, "lsw%d", regnum);
alloc_handle(drcuml, &ppc->impstate->lsw[mode][regnum], temp);
@ -1947,7 +1947,7 @@ static void static_generate_stsw_entries(drcuml_state *drcuml, int mode)
for (regnum = 0; regnum < 32; regnum++)
{
char temp[20];
/* allocate a handle */
sprintf(temp, "stsw%d", regnum);
alloc_handle(drcuml, &ppc->impstate->stsw[mode][regnum], temp);
@ -1994,7 +1994,7 @@ static void generate_update_mode(drcuml_block *block)
{
/* LE in bit 0 of mode */
UML_AND(block, IREG(0), MSR32, IMM(MSR_LE)); // and i0,msr,MSR_LE
/* DR (OEA and 403GCX) in bit 1 of mode */
if ((ppc->cap & PPCCAP_OEA) || ppc->flavor == PPC_MODEL_403GCX)
{
@ -2008,7 +2008,7 @@ static void generate_update_mode(drcuml_block *block)
UML_ROLAND(block, IREG(1), MSR32, IMM(30), IMM(0x02)); // roland i1,[msr],30,0x02
UML_OR(block, IREG(0), IREG(0), IREG(1)); // or i0,i0,i1
}
/* PR in bit 2 of mode */
UML_ROLAND(block, IREG(1), MSR32, IMM(20), IMM(0x04)); // roland i1,[msr],20,0x04
UML_OR(block, MEM(&ppc->impstate->mode), IREG(0), IREG(1)); // or [mode],i0,i1

View File

@ -655,7 +655,7 @@ static int describe_instruction_1f(powerpc_state *ppc, UINT32 op, opcode_desc *d
if (op & M_RC)
CR_MODIFIED(desc, 0);
return TRUE;
case 0x2c8: /* SUBFZEOx */
case 0x2ca: /* ADDZEOx */
case 0x2e8: /* SUBFMEOx */
@ -1066,7 +1066,7 @@ static int describe_instruction_1f(powerpc_state *ppc, UINT32 op, opcode_desc *d
GPR_USED(desc, regnum);
desc->flags |= OPFLAG_WRITES_MEMORY;
return TRUE;
case 0x2d5: /* STSWI */
GPR_USED_OR_ZERO(desc, G_RA(op));
for (regnum = 0; regnum < ((G_NB(op) - 1) & 0x1f) + 1; regnum += 4)

View File

@ -12,12 +12,12 @@
const char* duart68681_reg_read_names[0x10] =
{
"MRA", "SRA", "BRG Test", "RHRA", "IPCR", "ISR", "CTU", "CTL", "MRB", "SRB", "1X/16X Test", "RHRB", "IVR", "Input Ports", "Start Counter", "Stop Counter"
"MRA", "SRA", "BRG Test", "RHRA", "IPCR", "ISR", "CTU", "CTL", "MRB", "SRB", "1X/16X Test", "RHRB", "IVR", "Input Ports", "Start Counter", "Stop Counter"
};
const char* duart68681_reg_write_names[0x10] =
{
"MRA", "CSRA", "CRA", "THRA", "ACR", "IMR", "CRUR", "CTLR", "MRB", "CSRB", "CRB", "THRB", "IVR", "OPCR", "Set OP Bits", "Reset OP Bits"
"MRA", "CSRA", "CRA", "THRA", "ACR", "IMR", "CRUR", "CTLR", "MRB", "CSRB", "CRB", "THRB", "IVR", "OPCR", "Set OP Bits", "Reset OP Bits"
};
#define INT_INPUT_PORT_CHANGE 0x80

View File

@ -105,7 +105,7 @@ static UINT32 cosine_table[2049];
***************************************************************************/
/*-------------------------------------------------
round_nearest - round to nearest in a
round_nearest - round to nearest in a
predictable way
-------------------------------------------------*/
@ -166,7 +166,7 @@ INLINE UINT32 ycc_to_rgb(UINT32 ycc)
/*-------------------------------------------------
get_texel_palette16_nearest - return the
get_texel_palette16_nearest - return the
nearest neighbor texel from a palettized
16bpp source
-------------------------------------------------*/
@ -178,7 +178,7 @@ INLINE UINT32 get_texel_palette16_nearest(const UINT16 *texbase, INT32 texrp, IN
/*-------------------------------------------------
get_texel_palette16_bilinear - return a
get_texel_palette16_bilinear - return a
bilinear filtered texel from a palettized
16bpp source
-------------------------------------------------*/
@ -196,7 +196,7 @@ INLINE UINT32 get_texel_palette16_bilinear(const UINT16 *texbase, INT32 texrp, I
/*-------------------------------------------------
get_texel_rgb15_nearest - return the
get_texel_rgb15_nearest - return the
nearest neighbor texel from a 15bpp RGB source
-------------------------------------------------*/
@ -207,8 +207,8 @@ INLINE UINT32 get_texel_rgb15_nearest(const UINT16 *texbase, INT32 texrp, INT32
/*-------------------------------------------------
get_texel_rgb15_bilinear - return the
bilinear filtered texel from a 15bpp RGB
get_texel_rgb15_bilinear - return the
bilinear filtered texel from a 15bpp RGB
source
-------------------------------------------------*/
@ -230,7 +230,7 @@ INLINE UINT32 get_texel_rgb15_bilinear(const UINT16 *texbase, INT32 texrp, INT32
/*-------------------------------------------------
get_texel_yuy16_nearest - return the
get_texel_yuy16_nearest - return the
nearest neighbor texel from a 16bpp YCbCr
source (pixel is returned as Cr-Cb-Y
-------------------------------------------------*/
@ -243,7 +243,7 @@ INLINE UINT32 get_texel_yuy16_nearest(const UINT16 *texbase, INT32 texrp, INT32
/*-------------------------------------------------
get_texel_yuy16_bilinear - return the
get_texel_yuy16_bilinear - return the
nearest neighbor texel from a 16bpp YCbCr
source (pixel is returned as Cr-Cb-Y
-------------------------------------------------*/
@ -277,7 +277,7 @@ INLINE UINT32 get_texel_yuy16_bilinear(const UINT16 *texbase, INT32 texrp, INT32
/*-------------------------------------------------
get_texel_rgb32_nearest - return the
get_texel_rgb32_nearest - return the
nearest neighbor texel from a 32bpp RGB source
-------------------------------------------------*/
@ -288,8 +288,8 @@ INLINE UINT32 get_texel_rgb32_nearest(const UINT32 *texbase, INT32 texrp, INT32
/*-------------------------------------------------
get_texel_rgb32_bilinear - return the
bilinear filtered texel from a 32bpp RGB
get_texel_rgb32_bilinear - return the
bilinear filtered texel from a 32bpp RGB
source
-------------------------------------------------*/
@ -306,8 +306,8 @@ INLINE UINT32 get_texel_rgb32_bilinear(const UINT32 *texbase, INT32 texrp, INT32
/*-------------------------------------------------
get_texel_argb32_nearest - return the
nearest neighbor texel from a 32bpp ARGB
get_texel_argb32_nearest - return the
nearest neighbor texel from a 32bpp ARGB
source
-------------------------------------------------*/
@ -318,8 +318,8 @@ INLINE UINT32 get_texel_argb32_nearest(const UINT32 *texbase, INT32 texrp, INT32
/*-------------------------------------------------
get_texel_argb32_bilinear - return the
bilinear filtered texel from a 32bpp ARGB
get_texel_argb32_bilinear - return the
bilinear filtered texel from a 32bpp ARGB
source
-------------------------------------------------*/

View File

@ -30,7 +30,7 @@
the function is similar than update with 0x80 set to 1
23/04/2007 : Lord Nightmare
Major update, implement all three different noise generation algorithms and a
Major update, implement all three different noise generation algorithms and a
set_variant call to discern among them.
TODO: Implement a function for setting stereo regs for the game gear.

View File

@ -316,7 +316,7 @@ int ui_display_startup_screens(running_machine *machine, int first_time, int sho
int state;
/* disable everything if we are using -str for 300 or fewer seconds, or if we're the empty driver,
or if we are debugging */
or if we are debugging */
if (!first_time || (str > 0 && str < 60*5) || machine->gamedrv == &driver_empty || machine->debug_mode)
show_gameinfo = show_warnings = show_disclaimer = FALSE;

View File

@ -279,7 +279,7 @@
[2008-06-09]
- Added Videomat (polish bootleg).
[2008-06-02]

View File

@ -779,8 +779,8 @@ ROM_END
Squash (Itisa)
Anno 1984
Produttore Itisa-Valadon-gecas
Anno 1984
Produttore Itisa-Valadon-gecas
CPU

View File

@ -292,7 +292,7 @@ static READ16_HANDLER( mechatt_gun_r )
{
int baseport=0,x,y;
static const char *port[] = { "IN2", "IN3", "IN4", "IN5" };
if (offset) baseport=2; /* Player 2 */
x=input_port_read(machine, port[baseport]);

View File

@ -1,6 +1,6 @@
/*
Black Touch '96
Black Touch '96
Black Touch 96
@ -493,7 +493,7 @@ static MACHINE_DRIVER_START( blackt96 )
MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MDRV_SCREEN_SIZE(64*16, 64*8)
// MDRV_SCREEN_VISIBLE_AREA(0*8, 16*32-1, 0*8, 16*32-1)
// MDRV_SCREEN_VISIBLE_AREA(0*8, 16*32-1, 0*8, 16*32-1)
MDRV_SCREEN_VISIBLE_AREA(0*8, 8*32-1, 2*8, 8*30-1)
MDRV_PALETTE_LENGTH(0x800)

View File

@ -160,7 +160,7 @@ static INPUT_PORTS_START( blockade )
PORT_DIPSETTING( 0x70, "6" )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(1)
/* this is really used for the coin latch, */
/* see blockade_interrupt() */
/* see blockade_interrupt() */
PORT_START_TAG("IN1") /* IN1 */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(2)
@ -202,7 +202,7 @@ static INPUT_PORTS_START( comotion )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(1)
/* this is really used for the coin latch, */
/* see blockade_interrupt() */
/* see blockade_interrupt() */
PORT_START_TAG("IN1") /* IN1 */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(1)
@ -247,7 +247,7 @@ static INPUT_PORTS_START( blasto )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(1)
/* this is really used for the coin latch, */
/* see blockade_interrupt() */
/* see blockade_interrupt() */
PORT_START_TAG("IN1") /* IN1 */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
@ -290,7 +290,7 @@ static INPUT_PORTS_START( hustle )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(1)
/* this is really used for the coin latch, */
/* see blockade_interrupt() */
/* see blockade_interrupt() */
PORT_START_TAG("IN1") /* IN1 */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(2)
@ -333,7 +333,7 @@ static INPUT_PORTS_START( mineswpr )
PORT_DIPSETTING( 0x70, "6" )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(1)
/* this is really used for the coin latch, */
/* see blockade_interrupt() */
/* see blockade_interrupt() */
PORT_START_TAG("IN1") /* IN1 */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(1)
@ -375,7 +375,7 @@ static INPUT_PORTS_START( minesw4p )
PORT_DIPSETTING( 0x70, "6" )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(1)
/* this is really used for the coin latch, */
/* see blockade_interrupt() */
/* see blockade_interrupt() */
PORT_START_TAG("IN1") /* IN1 */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(1)

View File

@ -72,7 +72,7 @@ static MACHINE_RESET( blstroid )
static READ16_HANDLER( inputs_r )
{
static const char *iptnames[] = { "IN0", "IN1" };
static const char *iptnames[] = { "IN0", "IN1" };
int temp = input_port_read(machine, iptnames[offset & 1]);
if (atarigen_cpu_to_sound_ready) temp ^= 0x0040;

View File

@ -511,7 +511,7 @@ INLINE int read_trackball(running_machine *machine, int idx, int switch_port)
UINT8 newpos;
static const char *portnames[] = { "IN0", "IN1", "IN2" };
static const char *tracknames[] = { "TRACK0_X", "TRACK0_Y", "TRACK1_X", "TRACK1_Y" };
/* adjust idx if we're cocktail flipped */
if (centiped_flipscreen)
idx += 2;
@ -1510,7 +1510,7 @@ static INPUT_PORTS_START( bullsdrt )
/* 2008-06 FP: was bullsdrt available as cocktail? If not, these can be removed */
PORT_START_TAG("TRACK1_X")
PORT_START_TAG("TRACK1_Y")
PORT_START_TAG("TRACK1_Y")
INPUT_PORTS_END

View File

@ -163,7 +163,7 @@ static WRITE8_HANDLER( cliff_port_bank_w )
static READ8_HANDLER( cliff_port_r )
{
static const char *banknames[] = { "BANK0", "BANK1", "BANK2", "BANK3", "BANK4", "BANK5", "BANK6" };
if ( port_bank < 7 )
{
return input_port_read(machine, banknames[port_bank]);

View File

@ -164,7 +164,7 @@ static READ8_HANDLER( trackball_r )
{
int i,dir[4];
static const char *tracknames[] = { "TRACK0_Y", "TRACK0_X", "TRACK1_Y", "TRACK1_X" };
for (i = 0; i < 4; i++)
{
UINT8 curr;

View File

@ -4,16 +4,16 @@
Kick Boy (c) 1983 Nichibutsu
Driver by Pierpaolo Prazzoli
TODO:
- Add colors when proms are dumped
Mods by Tomasz Slanina (2008.06.12):
- fixed sound cpu interrupts (mode 2 (two vectors)+ nmi)
- added sound and music.
- ay/msm clocks are arbitrary
- just a guess - upper nibble of byte from port 3 _probably_
- added sound and music.
- ay/msm clocks are arbitrary
- just a guess - upper nibble of byte from port 3 _probably_
contains sound command (sound cpu writes it to port c)
******************************************************************************/
@ -55,7 +55,7 @@ static WRITE8_HANDLER( bg_bank_w )
}
flip_screen_set(data & 0xc); // probably one bit for flipx and one for flipy
}
static WRITE8_HANDLER( coins_w )
@ -427,13 +427,13 @@ static MACHINE_DRIVER_START( dacholer )
/* sound hardware */
MDRV_SPEAKER_STANDARD_MONO("mono")
MDRV_SOUND_ADD(AY8910, 1500000)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)
MDRV_SOUND_ADD(AY8910, 1500000)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)
MDRV_SOUND_ADD(AY8910, 1500000)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)

View File

@ -260,7 +260,7 @@ static READ32_HANDLER( v_rom_r )
static READ32_HANDLER( inp1_r )
{
UINT32 result = (input_port_read(machine, "DSW3")<<24) | (input_port_read(machine, "IN2")<<16) | (input_port_read(machine, "IN1")<<8) | input_port_read(machine, "IN0");
UINT32 result = (input_port_read(machine, "DSW3")<<24) | (input_port_read(machine, "IN2")<<16) | (input_port_read(machine, "IN1")<<8) | input_port_read(machine, "IN0");
return result;
}

View File

@ -119,7 +119,7 @@ static READ8_HANDLER( dragrace_input_r )
{
int val = input_port_read(machine, "IN2");
static const char *portnames[] = { "IN0", "IN1" };
UINT8 maskA = 1 << (offset % 8);
UINT8 maskB = 1 << (offset / 8);

View File

@ -1369,8 +1369,8 @@ REF: 950510-1
Notes
-----
Gaelco's PROMs IC70 and IC69 has DIP42 package (many wires are routed to GAE1 506, so I guess that they are a gfx rom)
Gaelco's PROM IC68 has DIP32 package (may be a sound rom)
Gaelco's PROMs IC70 and IC69 has DIP42 package (many wires are routed to GAE1 506, so I guess that they are a gfx rom)
Gaelco's PROM IC68 has DIP32 package (may be a sound rom)
TI F20L8 is a Texas Ins. DIP24 (may be a PAL). Is marked as F 406 XF 21869 F20L8-25CNT
TLC569 (IC2 and IC7) is a 8-bit serial ADC

View File

@ -2202,7 +2202,7 @@ static INPUT_PORTS_START( moonwar_common )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_COCKTAIL
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_START_TAG("IN1")
PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
PORT_DIPSETTING( 0x00, "3" )
@ -2216,7 +2216,7 @@ static INPUT_PORTS_START( moonwar_common )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 )
INPUT_PORTS_END
static INPUT_PORTS_START( moonwar )
PORT_INCLUDE( moonwar_common )

View File

@ -281,10 +281,10 @@ static READ8_HANDLER( sysreg_r )
case 1:
case 3:
return input_port_read_indexed(machine, offset);
case 2:
return adc1038_sars_r(machine) << 7;
case 4:
{
// 7 0
@ -297,7 +297,7 @@ static READ8_HANDLER( sysreg_r )
UINT32 adc_bit = (adc1038_do_r() << 2);
return (eeprom_bit | adc_bit);
}
default:
mame_printf_debug("sysreg_r %d\n", offset);
break;
@ -312,7 +312,7 @@ static WRITE8_HANDLER( sysreg_w )
case 0:
gticlub_led_reg0 = data;
break;
case 1:
gticlub_led_reg1 = data;
break;
@ -322,7 +322,7 @@ static WRITE8_HANDLER( sysreg_w )
eeprom_set_clock_line((data & 0x02) ? ASSERT_LINE : CLEAR_LINE);
eeprom_set_cs_line((data & 0x04) ? CLEAR_LINE : ASSERT_LINE);
break;
case 4:
if (data & 0x80) /* CG Board 1 IRQ Ack */
cpunum_set_input_line(machine, 0, INPUT_LINE_IRQ1, CLEAR_LINE);
@ -378,8 +378,8 @@ WRITE8_HANDLER( K056230_w )
timer_set(ATTOTIME_IN_USEC(1), NULL, 0, network_irq_clear);
}
}
// else
// cpunum_set_input_line(Machine, 0, INPUT_LINE_IRQ2, CLEAR_LINE);
// else
// cpunum_set_input_line(Machine, 0, INPUT_LINE_IRQ2, CLEAR_LINE);
break;
}
case 2: // Sub ID register

View File

@ -202,7 +202,7 @@ MACHINE_DRIVER_END
*************************/
/* Euro Jolly X5
CPU:
1x M30624FGAFP-03001A4 (u1)(main)
@ -213,7 +213,7 @@ It has 256 KB of internal flash ROM + 20 KB of RAM.
1x OKI M6295 (u22)(sound)
1x TDA2003 (u25)(sound)
1x LM358M (u23)(sound)
1x oscillator 16.000MHz (u20)
1x oscillator 16.000MHz (u20)
ROMs:
@ -259,7 +259,7 @@ ROM_END
/* Grand Prix
CPU:
1x M30624FGAFP-251G108 (u21)(main)
@ -270,7 +270,7 @@ It has 256 KB of internal flash ROM + 20 KB of RAM.
1x OKI M6295 (u2)(sound)
1x TDA2003 (u1)(sound)
1x LM358M (u23)(sound)
1x oscillator 16.000MHz (u9)
1x oscillator 16.000MHz (u9)
ROMs:
@ -297,7 +297,7 @@ Note:
1x red led (d1)
1x pushbutton (test mode) (RDP2)
PCB N° KGS0243-DF070283/03 made in Italy
PCB N? KGS0243-DF070283/03 made in Italy
*/

View File

@ -511,8 +511,8 @@ ROM_END
/********** DIFFERENT HARDWARE **********/
/* Mystery Number
/* Mystery Number
CPU:
1x HD64F3048F16 (main)(u2)

View File

@ -87,7 +87,7 @@ static WRITE16_HANDLER( quizf1_bankswitch_w )
/*
static WRITE16_HANDLER( unknown_w )
{
printf("%04x ",data);
printf("%04x ",data);
}
*/
@ -136,11 +136,11 @@ static ADDRESS_MAP_START( dynablsb_cpu_io, ADDRESS_SPACE_IO, 16 )
AM_RANGE(0x00, 0x01) AM_READ(input_port_0_word_r) /* Player 1 & Player 2 */
AM_RANGE(0x02, 0x03) AM_WRITE(m90_coincounter_w)
AM_RANGE(0x02, 0x03) AM_READ(input_port_1_word_r) /* Coins */
// AM_RANGE(0x04, 0x05) AM_WRITE(unknown_w) /* dynablsb: write continuosly 0x6000 */
// AM_RANGE(0x04, 0x05) AM_WRITE(unknown_w) /* dynablsb: write continuosly 0x6000 */
AM_RANGE(0x04, 0x05) AM_READ(input_port_2_word_r) /* Dip 1 & Dip 2 */
AM_RANGE(0x06, 0x07) AM_READ(input_port_3_word_r) /* Player 3 & Player 4 */
AM_RANGE(0x80, 0x8f) AM_WRITE(m90_video_control_w)
// AM_RANGE(0x90, 0x91) AM_WRITE(unknown_w)
// AM_RANGE(0x90, 0x91) AM_WRITE(unknown_w)
ADDRESS_MAP_END
/*****************************************************************************/

View File

@ -404,169 +404,169 @@ INPUT_PORTS_END
/***************************************************************************
Neo-Geo game pcb infos:
=======================
Neo-Geo game pcb infos:
=======================
The Neo-Geo games for AES (home) and MVS (arcade) systems are cartridge based.
The Neo-Geo games for AES (home) and MVS (arcade) systems are cartridge based.
Each cartridge consists of two pcb's: CHA and PROG.
Each cartridge consists of two pcb's: CHA and PROG.
CHA pcb contains gfx data ('C' - rom), text layer data ('S' - rom) and sound driver ('M' - rom).
PROG pcb contains sample data ('V' - rom) and program code ('P' - rom).
CHA pcb contains gfx data ('C' - rom), text layer data ('S' - rom) and sound driver ('M' - rom).
PROG pcb contains sample data ('V' - rom) and program code ('P' - rom).
On most pcb's various custom/protection chips can also be found:
On most pcb's various custom/protection chips can also be found:
CHA:
. NEO-273
. NEO-CMC
. NEO-ZMC
. NEO-ZMC2
. PRO-CT0
. SNK-9201
CHA:
. NEO-273
. NEO-CMC
. NEO-ZMC
. NEO-ZMC2
. PRO-CT0
. SNK-9201
PROG:
. ALTERA
. NEO-COMA
. NEO-PCM2 (SNK 1999)
. NEO-PCM2 (PLAYMORE 2002)
. NEO-PVC
. NEO-SMA
. PCM
. PRO-CT0
. SNK-9201
PROG:
. ALTERA
. NEO-COMA
. NEO-PCM2 (SNK 1999)
. NEO-PCM2 (PLAYMORE 2002)
. NEO-PVC
. NEO-SMA
. PCM
. PRO-CT0
. SNK-9201
Known pcb's:
============
Known pcb's:
============
MVS CHA:
-- SNK --
. NEO-MVS CHA-32
. NEO-MVS CHA-8M
. NEO-MVS CHA42G
. NEO-MVS CHA42G-1
. NEO-MVS CHA 42G-2
. NEO-MVS CHA 42G-3
. NEO-MVS CHA42G-3B
. NEO-MVS CHA256
. NEO-MVS CHA256B
. NEO-MVS PSTM CHA136
. NEO-MVS CHA512Y
. NEO-MVS CHAFIO (1999.6.14)
. MVS CHAFIO REV1.0 (KOF-2001)
. NEO-MVS CHAFIO (SNK 2002) - MADE IN KOREA
-- SNKPLAYMORE --
. NEO-MVS CHAFIO (2003.7.24)
MVS CHA:
-- SNK --
. NEO-MVS CHA-32
. NEO-MVS CHA-8M
. NEO-MVS CHA42G
. NEO-MVS CHA42G-1
. NEO-MVS CHA 42G-2
. NEO-MVS CHA 42G-3
. NEO-MVS CHA42G-3B
. NEO-MVS CHA256
. NEO-MVS CHA256B
. NEO-MVS PSTM CHA136
. NEO-MVS CHA512Y
. NEO-MVS CHAFIO (1999.6.14)
. MVS CHAFIO REV1.0 (KOF-2001)
. NEO-MVS CHAFIO (SNK 2002) - MADE IN KOREA
-- SNKPLAYMORE --
. NEO-MVS CHAFIO (2003.7.24)
MVS PROG:
-- SNK --
. NEO-MVS PROG-HERO
. NEO-MVS PROG-EP
. NEO-MVS PROG8M42
. NEO-MVS PROG16
. NEO-MVS PROG42G
. NEO-MVS PROG42G-1
. NEO-MVS PROG-G2
. NEO-MVS PROG 4096
. NEO-MVS PROG 4096 B
. NEO-MVS PROGGSC
. NEO-MVS PROGGS3
. NEO-MVS PROGTOP
. NEO-MVS PROGSF1 (1998.6.17)
. NEO-MVS PROGEOP (1999.2.2)
. NEO-MVS PROGLBA (1999.4.12) - LBA-SUB (2000.2.24)
. NEO-MVS PROGBK1
. NEO-MVS PROGBK2 (2000.3.21)
. MVS PROGBK2 REV1.0 (KOF-2001)
. NEO-MVS PROGBK2 (SNK 2002) - MADE IN KOREA
-- SNKPLAYMORE --
. NEO-MVS PROGBK2R (2003.8.26) - NEO-HYCS (2003.9.29)
. NEO-MVS PROGBK3R (2003.9.2) - NEO-HYCS (2003.9.29)
. NEO-MVS PROGBK3S (2003.10.1)
. NEO-MVS PROGBK2S (2003.10.xx)
MVS PROG:
-- SNK --
. NEO-MVS PROG-HERO
. NEO-MVS PROG-EP
. NEO-MVS PROG8M42
. NEO-MVS PROG16
. NEO-MVS PROG42G
. NEO-MVS PROG42G-1
. NEO-MVS PROG-G2
. NEO-MVS PROG 4096
. NEO-MVS PROG 4096 B
. NEO-MVS PROGGSC
. NEO-MVS PROGGS3
. NEO-MVS PROGTOP
. NEO-MVS PROGSF1 (1998.6.17)
. NEO-MVS PROGEOP (1999.2.2)
. NEO-MVS PROGLBA (1999.4.12) - LBA-SUB (2000.2.24)
. NEO-MVS PROGBK1
. NEO-MVS PROGBK2 (2000.3.21)
. MVS PROGBK2 REV1.0 (KOF-2001)
. NEO-MVS PROGBK2 (SNK 2002) - MADE IN KOREA
-- SNKPLAYMORE --
. NEO-MVS PROGBK2R (2003.8.26) - NEO-HYCS (2003.9.29)
. NEO-MVS PROGBK3R (2003.9.2) - NEO-HYCS (2003.9.29)
. NEO-MVS PROGBK3S (2003.10.1)
. NEO-MVS PROGBK2S (2003.10.xx)
AES CHA:
-- SNK --
. NEO-AEG CHA-32
. NEO-AEG CHA-8M
. NEO-AEG CHA42G
. NEO-AEG CHA42G-1
. NEO-AEG CHA42G-2B
. NEO-AEG CHA42G-3
. NEO-AEG CHA42G-4
. NEO-AEG CHA256
. NEO-AEG CHA256[B]
. NEO-AEG CHA256RY
. NEO-AEG CHA512Y
. NEO-AEG CHAFIO (1999.8.10)
-- SNKPLAYMORE --
. NEO-AEG CHAFIO (2003.7.24)
AES CHA:
-- SNK --
. NEO-AEG CHA-32
. NEO-AEG CHA-8M
. NEO-AEG CHA42G
. NEO-AEG CHA42G-1
. NEO-AEG CHA42G-2B
. NEO-AEG CHA42G-3
. NEO-AEG CHA42G-4
. NEO-AEG CHA256
. NEO-AEG CHA256[B]
. NEO-AEG CHA256RY
. NEO-AEG CHA512Y
. NEO-AEG CHAFIO (1999.8.10)
-- SNKPLAYMORE --
. NEO-AEG CHAFIO (2003.7.24)
AES PROG:
-- SNK --
. NEO-AEG PROG-NAM
. NEO-AEG PROG-HERO
. NEO-AEG PROG-4A
. NEO-AEG PROG-4B
. NEO-AEG PROG 8M42
. NEO-AEG PROG B
. NEO-AEG PROG16
. NEO-AEG PROG42G
. NEO-AEG PROG42G-COM
. NEO-AEG PROG42G-1
. NEO-AEG PROG-G2
. NEO-AEG PROG4096 B
. NEO-AEG PROGGS
. NEO-AEG PROGTOP2
. NEO-AEG PROGLBA (1999.7.6)
. NEO-AEG PROGRK
. NEO-AEG PROGRKB
. NEO-AEG PROGBK1Y
. NEO-AEG PROGBK1F
-- PLAYMORE --
. NEO-AEG PROGBK2 (2002.4.1)
-- SNKPLAYMORE --
. NEO-AEG PROGBK3R (2003.8.29) - NEO-HYCS (2003.9.29)
AES PROG:
-- SNK --
. NEO-AEG PROG-NAM
. NEO-AEG PROG-HERO
. NEO-AEG PROG-4A
. NEO-AEG PROG-4B
. NEO-AEG PROG 8M42
. NEO-AEG PROG B
. NEO-AEG PROG16
. NEO-AEG PROG42G
. NEO-AEG PROG42G-COM
. NEO-AEG PROG42G-1
. NEO-AEG PROG-G2
. NEO-AEG PROG4096 B
. NEO-AEG PROGGS
. NEO-AEG PROGTOP2
. NEO-AEG PROGLBA (1999.7.6)
. NEO-AEG PROGRK
. NEO-AEG PROGRKB
. NEO-AEG PROGBK1Y
. NEO-AEG PROGBK1F
-- PLAYMORE --
. NEO-AEG PROGBK2 (2002.4.1)
-- SNKPLAYMORE --
. NEO-AEG PROGBK3R (2003.8.29) - NEO-HYCS (2003.9.29)
Cartridge colours:
==================
Cartridge colours:
==================
MVS cartridges were produced in different colours.
Known cartridge colours:
. Black
. Green
. Grey
. Transparent
. Transparent Blue
. Transparent Green
. White
. Yellow
MVS cartridges were produced in different colours.
The above listed only covers SNK / PLAYMORE / SNKPLAYMORE pcb's. There also exists a
wide range of 'bootleg' pcb's.
Known cartridge colours:
. Black
. Green
. Grey
. Transparent
. Transparent Blue
. Transparent Green
. White
. Yellow
Neo-Geo game pcb infos by Johnboy
The above listed only covers SNK / PLAYMORE / SNKPLAYMORE pcb's. There also exists a
wide range of 'bootleg' pcb's.
Neo-Geo game pcb infos by Johnboy
****************************************************************************/
/****************************************************************************
General set notes:
==================
General set notes:
==================
NOTES BELOW APPLY TO OEM SETS ONLY!
NOTES BELOW APPLY TO OEM SETS ONLY!
Many 'M1' roms contain mirrored data (64k mirrored or 128k mirrored).
Found on several early sets (ID 0001 ~ 0045) and on the last sets (ID 0267 ~ 0272).
This caused some confusion and incorrect rom sizes.
Minimum 'M1' size is 1mbit, maximum size 4mbit.
The remaining 64k 'M1' are marked BAD_DUMP.
Many 'M1' roms contain mirrored data (64k mirrored or 128k mirrored).
Found on several early sets (ID 0001 ~ 0045) and on the last sets (ID 0267 ~ 0272).
This caused some confusion and incorrect rom sizes.
Minimum 'M1' size is 1mbit, maximum size 4mbit.
The remaining 64k 'M1' are marked BAD_DUMP.
All 'S1' roms found on prom are 1mbit.
The remainig 64k 'S1' are marked BAD_DUMP.
All 'S1' roms found on prom are 1mbit.
The remainig 64k 'S1' are marked BAD_DUMP.
****************************************************************************/
@ -2689,8 +2689,8 @@ ROM_END
ROM_START( pbobblen ) /* MVS VERSION */
/* This set uses CHA and PROG board from Power Spikes II. Six Power Spikes II prom's are replaced with
Puzzle Bobble prom's. Confirmed on two original carts. Do other layouts also exist? Later production run set? */
Puzzle Bobble prom's. Confirmed on two original carts. Do other layouts also exist? Later production run set? */
ROM_REGION( 0x100000, NEOGEO_REGION_MAIN_CPU_CARTRIDGE, 0 )
ROM_LOAD16_WORD_SWAP( "d96-07.ep1", 0x000000, 0x080000, CRC(6102ca14) SHA1(328429d11de5b327a0654ae0548da4d0025a2ae6) )

View File

@ -35,7 +35,7 @@ static WRITE8_HANDLER( subsino_tiles_offset_w )
{
tiles_offset = (data & 1) ? 0x1000: 0;
tilemap_mark_tile_dirty(tmap, offset);
// popmessage("gfx %02x",data);
// popmessage("gfx %02x",data);
}
static WRITE8_HANDLER( subsino_videoram_w )
@ -94,12 +94,12 @@ static PALETTE_INIT( subsino_depth4 )
static WRITE8_HANDLER( subsino_out_a_w )
{
coin_counter_w( 0, data & 0x02 );
// popmessage("Out A %02x",data);
// popmessage("Out A %02x",data);
}
static WRITE8_HANDLER( subsino_out_b_w )
{
// leds
// popmessage("Out B %02x",data);
// popmessage("Out B %02x",data);
}
static ADDRESS_MAP_START( srider_map, ADDRESS_SPACE_PROGRAM, 8 )
@ -278,7 +278,7 @@ static MACHINE_DRIVER_START( victor5 )
MDRV_GFXDECODE(subsino_depth3)
MDRV_PALETTE_LENGTH(0x100)
// MDRV_PALETTE_INIT(subsino_depth3) // no proms?
// MDRV_PALETTE_INIT(subsino_depth3) // no proms?
MDRV_VIDEO_START(subsino)
MDRV_VIDEO_UPDATE(subsino)
@ -421,7 +421,7 @@ Sticker on PCB reads V12040
Info by f205v, Corrado Tomaselli (20/04/2008)
***************************************************************************/
ROM_START( victor21 )
ROM_REGION( 0x10000, REGION_CPU1, 0 )
ROM_LOAD( "1.u1", 0x00000, 0x10000, CRC(43999b2d) SHA1(7ce26fd332ffe35fd826a1a6166b228d4bc370b8) )

View File

@ -1,12 +1,12 @@
/*
TODO:
TODO:
- LDV1000 mode
- PR7820 INT/_EXT line
- coin counter
- convert SSI-263 to a sound device
- dump laserdisc
- LDV1000 mode
- PR7820 INT/_EXT line
- coin counter
- convert SSI-263 to a sound device
- dump laserdisc
*/
@ -82,18 +82,18 @@ static READ8_HANDLER( irqstate_r )
{
/*
bit description
bit description
0
1
2 SSI263 A/_R
3 tied to +5V
4 _TIMER INT
5 _DATA RDY INT
6 _CART PRES
7
0
1
2 SSI263 A/_R
3 tied to +5V
4 _TIMER INT
5 _DATA RDY INT
6 _CART PRES
7
*/
*/
return (data_rdy_int << 5) | (timer_int << 4) | 0x08 | (ssi_data_request << 2);
}
@ -116,14 +116,14 @@ static WRITE8_HANDLER( cop_d_w )
{
/*
bit description
bit description
D0 _TIMER INT
D1 _DATA RDY INT
D2
D3
D0 _TIMER INT
D1 _DATA RDY INT
D2
D3
*/
*/
if (!BIT(data, 0))
{
@ -178,14 +178,14 @@ static READ8_HANDLER( cop_g_r )
{
/*
bit description
bit description
G0 U16 Q0
G1 U16 Q1
G2 U16 Q2
G3
G0 U16 Q0
G1 U16 Q1
G2 U16 Q2
G3
*/
*/
return cop_cmd_latch;
}
@ -194,18 +194,18 @@ static WRITE8_HANDLER( control_w )
{
/*
bit description
bit description
0
1 _CS128A
2 _BANKSEL1
3
4
5 COP G0
6 COP G1
7 COP G2
0
1 _CS128A
2 _BANKSEL1
3
4
5 COP G0
6 COP G1
7 COP G2
*/
*/
cop_cmd_latch = (data >> 5) & 0x07;
}
@ -214,14 +214,14 @@ static WRITE8_HANDLER( cop_g_w )
{
/*
bit description
bit description
G0
G1
G2
G3 U17 enable
G0
G1
G2
G3 U17 enable
*/
*/
cop_data_latch_enable = BIT(data, 3);
}
@ -234,11 +234,11 @@ static READ8_HANDLER(cop_si_r)
/*
Serial communications format
Serial communications format
1, 1, 0, 1, Q8, P0, P1, P2, P3, 0
1, 1, 0, 1, Q8, P0, P1, P2, P3, 0
*/
*/
switch (rx_bit)
{
@ -298,18 +298,18 @@ static WRITE8_HANDLER( control2_w )
{
/*
bit description
bit description
0
1 _RESOI (?)
2 _ENCARTDET
3
4
5
6
7
0
1 _RESOI (?)
2 _ENCARTDET
3
4
5
6
7
*/
*/
if (!BIT(data, 2) & cart_present)
{
@ -336,18 +336,18 @@ static WRITE8_HANDLER( laserdsc_control_w )
{
/*
bit description
bit description
0
1
2
3
4 coin counter
5 U16 output enable
6 ENTER if switch B5 closed
7 INT/_EXT
0
1
2
3
4 coin counter
5 U16 output enable
6 ENTER if switch B5 closed
7 INT/_EXT
*/
*/
coin_counter_w(0, BIT(data, 4));
@ -376,18 +376,18 @@ static WRITE8_HANDLER( den1_w )
{
/*
bit description
bit description
0 DD0
1 DD1
2 DD2
3 DD3
4 DA0
5 DA1
6 DA2
7 DA3
0 DD0
1 DD1
2 DD2
3 DD3
4 DA0
5 DA1
6 DA2
7 DA3
*/
*/
output_set_digit_value(data >> 4, led_map[data & 0x0f]);
}
@ -396,29 +396,29 @@ static WRITE8_HANDLER( den2_w )
{
/*
bit description
bit description
0 DD0
1 DD1
2 DD2
3 DD3
4 DA0
5 DA1
6 DA2
7 DA3
0 DD0
1 DD1
2 DD2
3 DD3
4 DA0
5 DA1
6 DA2
7 DA3
*/
*/
output_set_digit_value(8 + (data >> 4), led_map[data & 0x0f]);
}
/* SSI-263 */
/*
/*
The following information is from the SSI-263A data sheet.
The following information is from the SSI-263A data sheet.
Thayer's Quest uses an SSI-263, so this might be inaccurate, but it works for now
Thayer's Quest uses an SSI-263, so this might be inaccurate, but it works for now
*/
@ -426,7 +426,7 @@ static WRITE8_HANDLER( den2_w )
static const char SSI263_PHONEMES[0x40][5] =
{
"PA", "E", "E1", "Y", "YI", "AY", "IE", "I", "A", "AI", "EH", "EH1", "AE", "AE1", "AH", "AH1", "W", "O", "OU", "OO", "IU", "IU1", "U", "U1", "UH", "UH1", "UH2", "UH3", "ER", "R", "R1", "R2",
"PA", "E", "E1", "Y", "YI", "AY", "IE", "I", "A", "AI", "EH", "EH1", "AE", "AE1", "AH", "AH1", "W", "O", "OU", "OO", "IU", "IU1", "U", "U1", "UH", "UH1", "UH2", "UH3", "ER", "R", "R1", "R2",
"L", "L1", "LF", "W", "B", "D", "KV", "P", "T", "K", "HV", "HVC", "HF", "HFC", "HN", "Z", "S", "J", "SCH", "V", "F", "THV", "TH", "M", "N", "NG", ":A", ":OH", ":U", ":UH", "E2", "LB"
};
@ -570,7 +570,7 @@ static ADDRESS_MAP_START( thayers_io_map, ADDRESS_SPACE_IO, 8 )
AM_RANGE(0x00, 0x07) AM_READWRITE(ssi263_register_r, ssi263_register_w)
AM_RANGE(0x20, 0x20) AM_WRITE(control_w)
AM_RANGE(0x40, 0x40) AM_READWRITE(irqstate_r, control2_w)
AM_RANGE(0x80, 0x80) AM_READWRITE(cop_data_r, cop_data_w)
AM_RANGE(0x80, 0x80) AM_READWRITE(cop_data_r, cop_data_w)
AM_RANGE(0xa0, 0xa0) AM_WRITE(timer_int_ack_w)
AM_RANGE(0xc0, 0xc0) AM_WRITE(data_rdy_int_ack_w)
AM_RANGE(0xf0, 0xf0) AM_READ(laserdsc_data_r)
@ -578,7 +578,7 @@ static ADDRESS_MAP_START( thayers_io_map, ADDRESS_SPACE_IO, 8 )
AM_RANGE(0xf2, 0xf2) AM_READ_PORT("DSWA")
AM_RANGE(0xf3, 0xf3) AM_WRITE(intrq_w)
AM_RANGE(0xf4, 0xf4) AM_WRITE(laserdsc_data_w)
AM_RANGE(0xf5, 0xf5) AM_WRITE(laserdsc_control_w)
AM_RANGE(0xf5, 0xf5) AM_WRITE(laserdsc_control_w)
AM_RANGE(0xf6, 0xf6) AM_WRITE(den1_w)
AM_RANGE(0xf7, 0xf7) AM_WRITE(den2_w)
ADDRESS_MAP_END
@ -824,6 +824,6 @@ ROM_END
/* Game Drivers */
/* YEAR NAME PARENT MACHINE INPUT INIT MONITOR COMPANY FULLNAME FLAGS LAYOUT */
/* YEAR NAME PARENT MACHINE INPUT INIT MONITOR COMPANY FULLNAME FLAGS LAYOUT */
GAMEL( 1984, thayers, 0, thayers, thayers, 0, ROT0, "RDI Video Systems", "Thayer's Quest", GAME_NOT_WORKING | GAME_NO_SOUND, layout_dlair)
GAMEL( 1984, thayersa, thayers, thayers, thayers, 0, ROT0, "RDI Video Systems", "Thayer's Quest (Alternate Set)", GAME_NOT_WORKING | GAME_NO_SOUND, layout_dlair)

View File

@ -37,7 +37,7 @@ void deco16_tilemap_4_draw(bitmap_t *bitmap, const rectangle *cliprect, int flag
void deco16_tilemap_34_combine_draw(bitmap_t *bitmap, const rectangle *cliprect, int flags, UINT32 priority);
void deco16_clear_sprite_priority_bitmap(void);
void deco16_pdrawgfx(running_machine *machine,
void deco16_pdrawgfx(running_machine *machine,
bitmap_t *dest,const gfx_element *gfx,
UINT32 code,UINT32 color,int flipx,int flipy,int sx,int sy,
const rectangle *clip,int transparency,int transparent_color,UINT32 pri_mask,UINT32 sprite_mask,UINT8 write_pri);

View File

@ -346,7 +346,7 @@ static WRITE8_HANDLER( combascb_sh_irqtrigger_w )
static READ8_HANDLER( combascb_io_r )
{
static const char *portnames[] = { "IN0", "IN1", "DSW1", "DSW2" };
return input_port_read(machine, portnames[offset]);
}

View File

@ -1362,7 +1362,7 @@ void mshuttle_extend_sprite_info(const UINT8 *base, UINT8 *sx, UINT8 *sy, UINT8
void calipso_extend_sprite_info(const UINT8 *base, UINT8 *sx, UINT8 *sy, UINT8 *flipx, UINT8 *flipy, UINT16 *code, UINT8 *color)
{
/* same as the others, but no sprite flipping, but instead the bits are used
as extra sprite code bits, giving 256 sprite images */
as extra sprite code bits, giving 256 sprite images */
/* No flips */
*code = base[1];
*flipx = 0;

View File

@ -242,7 +242,7 @@ INLINE void get_crosshair_xy(running_machine *machine, int player, int *x, int *
int width = visarea->max_x + 1 - visarea->min_x;
int height = visarea->max_y + 1 - visarea->min_y;
/* only 2 lightguns are connected */
*x = visarea->min_x + (((input_port_read(machine, player ? "FAKE2_X" : "FAKE1_X") & 0xff) * width) >> 8);
*x = visarea->min_x + (((input_port_read(machine, player ? "FAKE2_X" : "FAKE1_X") & 0xff) * width) >> 8);
*y = visarea->min_y + (((input_port_read(machine, player ? "FAKE2_Y" : "FAKE1_Y") & 0xff) * height) >> 8);
}

View File

@ -262,7 +262,7 @@ static void dynablsb_draw_sprites(running_machine *machine, bitmap_t *bitmap,con
WRITE16_HANDLER( m90_video_control_w )
{
COMBINE_DATA(&m90_video_control_data[offset]);
// printf("%04x-%04x ",offset,m90_video_control_data[offset]);
// printf("%04x-%04x ",offset,m90_video_control_data[offset]);
}
static void markdirty(tilemap *tmap,int page,offs_t offset)

View File

@ -29,7 +29,7 @@ static bitmap_t *tilemap_bitmapflags_higher;
/* draws ROZ with linescroll OR columnscroll to 16-bit indexed bitmap */
static void suprnova_draw_roz(bitmap_t* bitmap, bitmap_t* bitmapflags, const rectangle *cliprect, tilemap *tmap, UINT32 startx, UINT32 starty, int incxx, int incxy, int incyx, int incyy, int wraparound, int columnscroll, UINT32* scrollram)
{
// const pen_t *clut = &Machine->pens[0];
// const pen_t *clut = &Machine->pens[0];
//bitmap_t *destbitmap = bitmap;
bitmap_t *srcbitmap = tilemap_get_pixmap(tmap);
bitmap_t *srcbitmapflags = tilemap_get_flagsmap(tmap);
@ -46,7 +46,7 @@ static void suprnova_draw_roz(bitmap_t* bitmap, bitmap_t* bitmapflags, const rec
int ey;
UINT16 *dest;
UINT8* destflags;
// UINT8 *pri;
// UINT8 *pri;
//const UINT16 *src;
//const UINT8 *maskptr;
//int destadvance = destbitmap->bpp / 8;
@ -98,7 +98,7 @@ static void suprnova_draw_roz(bitmap_t* bitmap, bitmap_t* bitmapflags, const rec
x++;
dest++;
destflags++;
// pri++;
// pri++;
}
/* advance in Y */
@ -1075,7 +1075,7 @@ VIDEO_UPDATE(skns)
UINT16 pri, pri2, pri3;
UINT16 bgpri;
const pen_t *clut = &Machine->pens[0];
// int drawpri;
// int drawpri;
for (y=0;y<240;y++)
@ -1225,5 +1225,5 @@ VIDEO_UPDATE(skns)
VIDEO_EOF(skns)
{
// buffer_spriteram32_w(machine,0,0,0xffffffff);
// buffer_spriteram32_w(machine,0,0,0xffffffff);
}

View File

@ -630,7 +630,7 @@ extent_x=extent_y=0;
for (w=0; w<x_width; w++) {
if (rotate)
roundupt_drawgfxzoomrotate(machine,
roundupt_drawgfxzoomrotate(machine,
temp_bitmap,machine->gfx[0],
base,
color,fx,0,x_pos,render_y,

View File

@ -9,4 +9,4 @@
***************************************************************************/
const char build_version[] = "0.125u4 ("__DATE__")";
const char build_version[] = "0.125u5 ("__DATE__")";