mirror of
https://github.com/holub/mame
synced 2025-05-20 20:58:51 +03:00
Cleanups and version bump.
This commit is contained in:
parent
ed893fe35c
commit
835ace034d
@ -435,7 +435,7 @@ int cli_info_listclones(core_options *options, const char *gamename)
|
|||||||
|
|
||||||
|
|
||||||
/*-------------------------------------------------
|
/*-------------------------------------------------
|
||||||
cli_info_listbrothers - output the name and
|
cli_info_listbrothers - output the name and
|
||||||
source filename of one or more games
|
source filename of one or more games
|
||||||
-------------------------------------------------*/
|
-------------------------------------------------*/
|
||||||
|
|
||||||
@ -444,7 +444,7 @@ int cli_info_listbrothers(core_options *options, const char *gamename)
|
|||||||
UINT8 *didit = malloc_or_die(driver_list_get_count(drivers));
|
UINT8 *didit = malloc_or_die(driver_list_get_count(drivers));
|
||||||
astring *filename = astring_alloc();
|
astring *filename = astring_alloc();
|
||||||
int drvindex, count = 0;
|
int drvindex, count = 0;
|
||||||
|
|
||||||
memset(didit, 0, driver_list_get_count(drivers));
|
memset(didit, 0, driver_list_get_count(drivers));
|
||||||
|
|
||||||
/* iterate over drivers */
|
/* iterate over drivers */
|
||||||
@ -452,7 +452,7 @@ int cli_info_listbrothers(core_options *options, const char *gamename)
|
|||||||
if (!didit[drvindex] && mame_strwildcmp(gamename, drivers[drvindex]->name) == 0)
|
if (!didit[drvindex] && mame_strwildcmp(gamename, drivers[drvindex]->name) == 0)
|
||||||
{
|
{
|
||||||
int matchindex;
|
int matchindex;
|
||||||
|
|
||||||
didit[drvindex] = TRUE;
|
didit[drvindex] = TRUE;
|
||||||
if (count > 0)
|
if (count > 0)
|
||||||
mame_printf_info("\n");
|
mame_printf_info("\n");
|
||||||
@ -464,7 +464,7 @@ int cli_info_listbrothers(core_options *options, const char *gamename)
|
|||||||
{
|
{
|
||||||
const char *matchstring = (mame_strwildcmp(gamename, drivers[matchindex]->name) == 0) ? "-> " : " ";
|
const char *matchstring = (mame_strwildcmp(gamename, drivers[matchindex]->name) == 0) ? "-> " : " ";
|
||||||
const game_driver *clone_of = driver_get_clone(drivers[matchindex]);
|
const game_driver *clone_of = driver_get_clone(drivers[matchindex]);
|
||||||
|
|
||||||
if (clone_of != NULL && (clone_of->flags & GAME_IS_BIOS_ROOT) == 0)
|
if (clone_of != NULL && (clone_of->flags & GAME_IS_BIOS_ROOT) == 0)
|
||||||
mame_printf_info("%s%-8s [%s]\n", matchstring, drivers[matchindex]->name, clone_of->name);
|
mame_printf_info("%s%-8s [%s]\n", matchstring, drivers[matchindex]->name, clone_of->name);
|
||||||
else
|
else
|
||||||
|
@ -62,7 +62,7 @@
|
|||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
UINT16 ram[32];
|
UINT16 ram[32];
|
||||||
UINT16 acc;
|
UINT16 acc;
|
||||||
UINT16 d_latch;
|
UINT16 d_latch;
|
||||||
@ -74,7 +74,7 @@ typedef struct
|
|||||||
UINT8 immflag;
|
UINT8 immflag;
|
||||||
UINT8 ct;
|
UINT8 ct;
|
||||||
UINT8 t;
|
UINT8 t;
|
||||||
|
|
||||||
/* Instruction latches - current and previous values */
|
/* Instruction latches - current and previous values */
|
||||||
UINT8 l1, pl1;
|
UINT8 l1, pl1;
|
||||||
UINT8 l2, pl2;
|
UINT8 l2, pl2;
|
||||||
@ -139,7 +139,7 @@ static STATE_POSTLOAD( esrip_postload )
|
|||||||
|
|
||||||
//static void esrip_state_register(int index, const char *type)
|
//static void esrip_state_register(int index, const char *type)
|
||||||
//{
|
//{
|
||||||
// state_save_register_item_pointer(type, index, cpustate->ipt_ram, IPT_RAM_SIZE / 2);
|
// state_save_register_item_pointer(type, index, cpustate->ipt_ram, IPT_RAM_SIZE / 2);
|
||||||
//}
|
//}
|
||||||
|
|
||||||
|
|
||||||
@ -261,9 +261,9 @@ static CPU_INIT( esrip )
|
|||||||
cpustate->draw = _config->draw;
|
cpustate->draw = _config->draw;
|
||||||
|
|
||||||
cpustate->ipt_ram = auto_malloc(IPT_RAM_SIZE);
|
cpustate->ipt_ram = auto_malloc(IPT_RAM_SIZE);
|
||||||
//state_save_register_global_pointer(cpustate->ipt_ram, IPT_RAM_SIZE / 2); // TODO
|
//state_save_register_global_pointer(cpustate->ipt_ram, IPT_RAM_SIZE / 2); // TODO
|
||||||
|
|
||||||
// esrip_state_register(index, "esrip");
|
// esrip_state_register(index, "esrip");
|
||||||
cpustate->device = device;
|
cpustate->device = device;
|
||||||
cpustate->program = memory_find_address_space(device, ADDRESS_SPACE_PROGRAM);
|
cpustate->program = memory_find_address_space(device, ADDRESS_SPACE_PROGRAM);
|
||||||
|
|
||||||
@ -1667,7 +1667,7 @@ static CPU_EXECUTE( esrip )
|
|||||||
am29116_execute(cpustate, (cpustate->l7 << 8) | cpustate->l6, BIT(cpustate->l5, 2));
|
am29116_execute(cpustate, (cpustate->l7 << 8) | cpustate->l6, BIT(cpustate->l5, 2));
|
||||||
|
|
||||||
y_bus = cpustate->result;
|
y_bus = cpustate->result;
|
||||||
|
|
||||||
if (BIT(cpustate->l5, 0))
|
if (BIT(cpustate->l5, 0))
|
||||||
cpustate->d_latch = y_bus;
|
cpustate->d_latch = y_bus;
|
||||||
}
|
}
|
||||||
@ -1741,7 +1741,7 @@ static CPU_EXECUTE( esrip )
|
|||||||
cpustate->l6 = (in_h >> 16);
|
cpustate->l6 = (in_h >> 16);
|
||||||
cpustate->l7 = (in_h >> 24);
|
cpustate->l7 = (in_h >> 24);
|
||||||
|
|
||||||
// if (RISING_EDGE(cpustate->pl7, cpustate->l2, 7))
|
// if (RISING_EDGE(cpustate->pl7, cpustate->l2, 7))
|
||||||
|
|
||||||
/* Colour latch */
|
/* Colour latch */
|
||||||
if (RISING_EDGE(cpustate->pl3, cpustate->l3, 0))
|
if (RISING_EDGE(cpustate->pl3, cpustate->l3, 0))
|
||||||
@ -1773,7 +1773,7 @@ static CPU_EXECUTE( esrip )
|
|||||||
cpustate->y_scale = x_bus & 0xff;
|
cpustate->y_scale = x_bus & 0xff;
|
||||||
|
|
||||||
/* Unknown */
|
/* Unknown */
|
||||||
// if (RISING_EDGE(cpustate->pl4, cpustate->l4, 7))
|
// if (RISING_EDGE(cpustate->pl4, cpustate->l4, 7))
|
||||||
|
|
||||||
/* Image ROM address */
|
/* Image ROM address */
|
||||||
if (RISING_EDGE(cpustate->pl3, cpustate->l3, 5))
|
if (RISING_EDGE(cpustate->pl3, cpustate->l3, 5))
|
||||||
@ -1821,7 +1821,7 @@ static CPU_EXECUTE( esrip )
|
|||||||
static CPU_DISASSEMBLE( esrip )
|
static CPU_DISASSEMBLE( esrip )
|
||||||
{
|
{
|
||||||
#if 0
|
#if 0
|
||||||
static const char* const jmp_types[] =
|
static const char* const jmp_types[] =
|
||||||
{
|
{
|
||||||
"JCT",
|
"JCT",
|
||||||
"JT1",
|
"JT1",
|
||||||
@ -1833,7 +1833,7 @@ static CPU_DISASSEMBLE( esrip )
|
|||||||
"JMP",
|
"JMP",
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char* const njmp_types[] =
|
static const char* const njmp_types[] =
|
||||||
{
|
{
|
||||||
"JNCT",
|
"JNCT",
|
||||||
"JNT1",
|
"JNT1",
|
||||||
@ -1967,7 +1967,7 @@ CPU_GET_INFO( esrip )
|
|||||||
case CPUINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
|
case CPUINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
|
||||||
case CPUINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Philip J Bennett"); break;
|
case CPUINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright Philip J Bennett"); break;
|
||||||
|
|
||||||
case CPUINFO_STR_FLAGS: sprintf(info->s, "%c%c%c%c%c%c%c%c%c",
|
case CPUINFO_STR_FLAGS: sprintf(info->s, "%c%c%c%c%c%c%c%c%c",
|
||||||
cpustate->status & 0x80 ? '3' : '.',
|
cpustate->status & 0x80 ? '3' : '.',
|
||||||
cpustate->status & 0x40 ? '2' : '.',
|
cpustate->status & 0x40 ? '2' : '.',
|
||||||
cpustate->status & 0x20 ? '1' : '.',
|
cpustate->status & 0x20 ? '1' : '.',
|
||||||
|
@ -106,7 +106,7 @@ CPU_GET_INFO( i860 )
|
|||||||
case CPUINFO_STR_CORE_VERSION: strcpy(info->s, "0.1"); break;
|
case CPUINFO_STR_CORE_VERSION: strcpy(info->s, "0.1"); break;
|
||||||
case CPUINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
|
case CPUINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
|
||||||
case CPUINFO_STR_CORE_CREDITS: strcpy(info->s, "Jason Eckhardt and Andrew Gardner"); break;
|
case CPUINFO_STR_CORE_CREDITS: strcpy(info->s, "Jason Eckhardt and Andrew Gardner"); break;
|
||||||
|
|
||||||
case CPUINFO_INT_PC: info->i = i860->pc; break;
|
case CPUINFO_INT_PC: info->i = i860->pc; break;
|
||||||
case CPUINFO_INT_PREVIOUSPC: info->i = i860->ppc; break;
|
case CPUINFO_INT_PREVIOUSPC: info->i = i860->ppc; break;
|
||||||
}
|
}
|
||||||
|
@ -48,9 +48,9 @@ CPU_DISASSEMBLE( i860 )
|
|||||||
|
|
||||||
/* Little Endian */
|
/* Little Endian */
|
||||||
const UINT32 op = (oprom[3] << 24) | (oprom[2] << 16) | (oprom[1] << 8) | (oprom[0] << 0);
|
const UINT32 op = (oprom[3] << 24) | (oprom[2] << 16) | (oprom[1] << 8) | (oprom[0] << 0);
|
||||||
//const UINT32 op = (oprom[2] << 24) | (oprom[3] << 16) | (oprom[0] << 8) | (oprom[1] << 0); /* Mixed Endian */
|
//const UINT32 op = (oprom[2] << 24) | (oprom[3] << 16) | (oprom[0] << 8) | (oprom[1] << 0); /* Mixed Endian */
|
||||||
//const UINT32 op = (oprom[0] << 24) | (oprom[1] << 16) | (oprom[2] << 8) | (oprom[3] << 0); /* Big Endian */
|
//const UINT32 op = (oprom[0] << 24) | (oprom[1] << 16) | (oprom[2] << 8) | (oprom[3] << 0); /* Big Endian */
|
||||||
//const UINT32 op = (oprom[1] << 24) | (oprom[0] << 16) | (oprom[3] << 8) | (oprom[2] << 0); /* Mixed Endian */
|
//const UINT32 op = (oprom[1] << 24) | (oprom[0] << 16) | (oprom[3] << 8) | (oprom[2] << 0); /* Mixed Endian */
|
||||||
|
|
||||||
/* The opcode is the top 6 bits */
|
/* The opcode is the top 6 bits */
|
||||||
UINT8 opcode = (op >> 26) & 0x3f;
|
UINT8 opcode = (op >> 26) & 0x3f;
|
||||||
@ -61,53 +61,53 @@ CPU_DISASSEMBLE( i860 )
|
|||||||
/* Main decode */
|
/* Main decode */
|
||||||
switch (opcode)
|
switch (opcode)
|
||||||
{
|
{
|
||||||
case 0x00:
|
case 0x00:
|
||||||
case 0x01:
|
case 0x01:
|
||||||
case 0x04:
|
case 0x04:
|
||||||
case 0x05: i860_dasm_ldx(op, tempB); break;
|
case 0x05: i860_dasm_ldx(op, tempB); break;
|
||||||
|
|
||||||
case 0x03:
|
case 0x03:
|
||||||
case 0x07: i860_dasm_stx(op, tempB); break;
|
case 0x07: i860_dasm_stx(op, tempB); break;
|
||||||
|
|
||||||
case 0x02: i860_dasm_ixfr(op, tempB); break;
|
case 0x02: i860_dasm_ixfr(op, tempB); break;
|
||||||
|
|
||||||
case 0x06: sprintf(tempB, "(reserved)"); break;
|
case 0x06: sprintf(tempB, "(reserved)"); break;
|
||||||
|
|
||||||
case 0x08:
|
case 0x08:
|
||||||
case 0x09:
|
case 0x09:
|
||||||
case 0x0a:
|
case 0x0a:
|
||||||
case 0x0b: i860_dasm_fid_fst(op, tempB); break;
|
case 0x0b: i860_dasm_fid_fst(op, tempB); break;
|
||||||
|
|
||||||
case 0x0d: i860_dasm_flush(op, tempB); break;
|
case 0x0d: i860_dasm_flush(op, tempB); break;
|
||||||
|
|
||||||
case 0x0f: i860_dasm_pstd(op, tempB); break;
|
case 0x0f: i860_dasm_pstd(op, tempB); break;
|
||||||
|
|
||||||
case 0x0c:
|
case 0x0c:
|
||||||
case 0x0e: i860_dasm_ldc_sdc(op, tempB); break;
|
case 0x0e: i860_dasm_ldc_sdc(op, tempB); break;
|
||||||
|
|
||||||
case 0x10: i860_dasm_bri(op, tempB); break;
|
case 0x10: i860_dasm_bri(op, tempB); break;
|
||||||
|
|
||||||
case 0x11: i860_dasm_trap(op, tempB); break;
|
case 0x11: i860_dasm_trap(op, tempB); break;
|
||||||
|
|
||||||
case 0x12: i860_dasm_floating_point_dasm(op, tempB); break; /* Floating point operation sub-group */
|
case 0x12: i860_dasm_floating_point_dasm(op, tempB); break; /* Floating point operation sub-group */
|
||||||
|
|
||||||
case 0x13: i860_dasm_core_dasm(op, tempB); break; /* Core operation sub-group */
|
case 0x13: i860_dasm_core_dasm(op, tempB); break; /* Core operation sub-group */
|
||||||
|
|
||||||
case 0x14:
|
case 0x14:
|
||||||
case 0x15:
|
case 0x15:
|
||||||
case 0x16:
|
case 0x16:
|
||||||
case 0x17: i860_dasm_bte_btne(op, tempB); break;
|
case 0x17: i860_dasm_bte_btne(op, tempB); break;
|
||||||
|
|
||||||
case 0x18:
|
case 0x18:
|
||||||
case 0x19: i860_dasm_pfidy(op, tempB); break;
|
case 0x19: i860_dasm_pfidy(op, tempB); break;
|
||||||
|
|
||||||
case 0x1a:
|
case 0x1a:
|
||||||
case 0x1b:
|
case 0x1b:
|
||||||
case 0x1c:
|
case 0x1c:
|
||||||
case 0x1d:
|
case 0x1d:
|
||||||
case 0x1e:
|
case 0x1e:
|
||||||
case 0x1f: i860_dasm_CTRL_dasm(op, tempB); break; /* CTRL operation sub-group */
|
case 0x1f: i860_dasm_CTRL_dasm(op, tempB); break; /* CTRL operation sub-group */
|
||||||
|
|
||||||
case 0x20:
|
case 0x20:
|
||||||
case 0x21:
|
case 0x21:
|
||||||
case 0x22:
|
case 0x22:
|
||||||
@ -116,39 +116,39 @@ CPU_DISASSEMBLE( i860 )
|
|||||||
case 0x25:
|
case 0x25:
|
||||||
case 0x26:
|
case 0x26:
|
||||||
case 0x27: i860_dasm_addu_subu(op, tempB); break;
|
case 0x27: i860_dasm_addu_subu(op, tempB); break;
|
||||||
|
|
||||||
case 0x28:
|
case 0x28:
|
||||||
case 0x29:
|
case 0x29:
|
||||||
case 0x2a:
|
case 0x2a:
|
||||||
case 0x2b: i860_dasm_shl_shr(op, tempB); break;
|
case 0x2b: i860_dasm_shl_shr(op, tempB); break;
|
||||||
|
|
||||||
case 0x2c: i860_dasm_shrd(op, tempB); break;
|
case 0x2c: i860_dasm_shrd(op, tempB); break;
|
||||||
|
|
||||||
case 0x2d: i860_dasm_bla(op, tempB); break;
|
case 0x2d: i860_dasm_bla(op, tempB); break;
|
||||||
|
|
||||||
case 0x2e:
|
case 0x2e:
|
||||||
case 0x2f: i860_dasm_shra(op, tempB); break;
|
case 0x2f: i860_dasm_shra(op, tempB); break;
|
||||||
|
|
||||||
case 0x30:
|
case 0x30:
|
||||||
case 0x31:
|
case 0x31:
|
||||||
case 0x32:
|
case 0x32:
|
||||||
case 0x33: i860_dasm_and_andh(op, tempB); break;
|
case 0x33: i860_dasm_and_andh(op, tempB); break;
|
||||||
|
|
||||||
case 0x34:
|
case 0x34:
|
||||||
case 0x35:
|
case 0x35:
|
||||||
case 0x36:
|
case 0x36:
|
||||||
case 0x37: i860_dasm_andnot_andnoth(op, tempB); break;
|
case 0x37: i860_dasm_andnot_andnoth(op, tempB); break;
|
||||||
|
|
||||||
case 0x38:
|
case 0x38:
|
||||||
case 0x39:
|
case 0x39:
|
||||||
case 0x3a:
|
case 0x3a:
|
||||||
case 0x3b: i860_dasm_or_orh(op, tempB); break;
|
case 0x3b: i860_dasm_or_orh(op, tempB); break;
|
||||||
|
|
||||||
case 0x3c:
|
case 0x3c:
|
||||||
case 0x3d:
|
case 0x3d:
|
||||||
case 0x3e:
|
case 0x3e:
|
||||||
case 0x3f: i860_dasm_xor_xorh(op, tempB); break;
|
case 0x3f: i860_dasm_xor_xorh(op, tempB); break;
|
||||||
|
|
||||||
default: sprintf(tempB, "(reserved)"); break;
|
default: sprintf(tempB, "(reserved)"); break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -228,11 +228,11 @@ static void i860_dasm_stx(const UINT32 op, char* buffer)
|
|||||||
|
|
||||||
static void i860_dasm_ixfr(const UINT32 op, char* buffer)
|
static void i860_dasm_ixfr(const UINT32 op, char* buffer)
|
||||||
{
|
{
|
||||||
// UINT16 val = op & 0x7ff;
|
// UINT16 val = op & 0x7ff;
|
||||||
// UINT8 opc = (op >> 26) & 0x3f;
|
// UINT8 opc = (op >> 26) & 0x3f;
|
||||||
// UINT8 src2 = (op >> 21) & 0x1f;
|
// UINT8 src2 = (op >> 21) & 0x1f;
|
||||||
// UINT8 dest = (op >> 16) & 0x1f;
|
// UINT8 dest = (op >> 16) & 0x1f;
|
||||||
// UINT8 src1 = (op >> 11) & 0x1f;
|
// UINT8 src1 = (op >> 11) & 0x1f;
|
||||||
|
|
||||||
sprintf(buffer, "ixfr");
|
sprintf(buffer, "ixfr");
|
||||||
}
|
}
|
||||||
|
@ -55,7 +55,7 @@ enum
|
|||||||
M68K_SFC, M68K_DFC, M68K_CACR, M68K_CAAR, M68K_PREF_ADDR, M68K_PREF_DATA,
|
M68K_SFC, M68K_DFC, M68K_CACR, M68K_CAAR, M68K_PREF_ADDR, M68K_PREF_DATA,
|
||||||
M68K_D0, M68K_D1, M68K_D2, M68K_D3, M68K_D4, M68K_D5, M68K_D6, M68K_D7,
|
M68K_D0, M68K_D1, M68K_D2, M68K_D3, M68K_D4, M68K_D5, M68K_D6, M68K_D7,
|
||||||
M68K_A0, M68K_A1, M68K_A2, M68K_A3, M68K_A4, M68K_A5, M68K_A6, M68K_A7,
|
M68K_A0, M68K_A1, M68K_A2, M68K_A3, M68K_A4, M68K_A5, M68K_A6, M68K_A7,
|
||||||
|
|
||||||
M68K_GENPC = REG_GENPC,
|
M68K_GENPC = REG_GENPC,
|
||||||
M68K_GENSP = REG_GENSP,
|
M68K_GENSP = REG_GENSP,
|
||||||
M68K_GENPCBASE = REG_GENPCBASE
|
M68K_GENPCBASE = REG_GENPCBASE
|
||||||
|
@ -669,7 +669,7 @@ static CPU_IMPORT_STATE( m68k )
|
|||||||
case M68K_SR:
|
case M68K_SR:
|
||||||
m68ki_set_sr(m68k, m68k->iotemp);
|
m68ki_set_sr(m68k, m68k->iotemp);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case M68K_ISP:
|
case M68K_ISP:
|
||||||
if (m68k->s_flag && !m68k->m_flag)
|
if (m68k->s_flag && !m68k->m_flag)
|
||||||
REG_SP = m68k->iotemp;
|
REG_SP = m68k->iotemp;
|
||||||
@ -707,7 +707,7 @@ static CPU_EXPORT_STATE( m68k )
|
|||||||
case M68K_SR:
|
case M68K_SR:
|
||||||
m68k->iotemp = m68ki_get_sr(m68k);
|
m68k->iotemp = m68ki_get_sr(m68k);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case M68K_ISP:
|
case M68K_ISP:
|
||||||
m68k->iotemp = (m68k->s_flag && !m68k->m_flag) ? REG_SP : REG_ISP;
|
m68k->iotemp = (m68k->s_flag && !m68k->m_flag) ? REG_SP : REG_ISP;
|
||||||
break;
|
break;
|
||||||
|
@ -591,7 +591,7 @@ struct _m68ki_cpu_core
|
|||||||
m68k_memory_interface memory;
|
m68k_memory_interface memory;
|
||||||
offs_t encrypted_start;
|
offs_t encrypted_start;
|
||||||
offs_t encrypted_end;
|
offs_t encrypted_end;
|
||||||
|
|
||||||
cpu_state_table state;
|
cpu_state_table state;
|
||||||
UINT32 iotemp;
|
UINT32 iotemp;
|
||||||
|
|
||||||
|
@ -40,27 +40,27 @@ T0 output clock
|
|||||||
|
|
||||||
****************************************************************************
|
****************************************************************************
|
||||||
|
|
||||||
UPI-41/42 chips are MCS-48 derived, with some opcode changes:
|
UPI-41/42 chips are MCS-48 derived, with some opcode changes:
|
||||||
|
|
||||||
MCS-48 opcode UPI-41/42 opcode
|
MCS-48 opcode UPI-41/42 opcode
|
||||||
------------- ----------------
|
------------- ----------------
|
||||||
02: OUTL BUS,A OUT DBB,A
|
02: OUTL BUS,A OUT DBB,A
|
||||||
08: INS BUS,A <illegal>
|
08: INS BUS,A <illegal>
|
||||||
22: <illegal> IN DBB,A
|
22: <illegal> IN DBB,A
|
||||||
75: ENT0 CLK <illegal>
|
75: ENT0 CLK <illegal>
|
||||||
80: MOVX A,@R0 <illegal>
|
80: MOVX A,@R0 <illegal>
|
||||||
81: MOVX A,@R1 <illegal>
|
81: MOVX A,@R1 <illegal>
|
||||||
86: JNI <dest> JOBF <dest>
|
86: JNI <dest> JOBF <dest>
|
||||||
88: ORL BUS,#n <illegal>
|
88: ORL BUS,#n <illegal>
|
||||||
90: MOVX @R0,A MOV STS,A
|
90: MOVX @R0,A MOV STS,A
|
||||||
91: MOVX @R1,A <illegal>
|
91: MOVX @R1,A <illegal>
|
||||||
98: ANL BUS,#n <illegal>
|
98: ANL BUS,#n <illegal>
|
||||||
D6: <illegal> JNIBF <dest>
|
D6: <illegal> JNIBF <dest>
|
||||||
E5: SEL MB0 EN DMA
|
E5: SEL MB0 EN DMA
|
||||||
F5: SEL MB1 EN FLAGS
|
F5: SEL MB1 EN FLAGS
|
||||||
|
|
||||||
|
Chip numbers are similar to the MCS-48 series:
|
||||||
|
|
||||||
Chip numbers are similar to the MCS-48 series:
|
|
||||||
|
|
||||||
Chip RAM ROM I/O
|
Chip RAM ROM I/O
|
||||||
---- --- --- ---
|
---- --- --- ---
|
||||||
8041 128 1k
|
8041 128 1k
|
||||||
@ -160,7 +160,7 @@ struct _mcs48_state
|
|||||||
|
|
||||||
UINT8 feature_mask; /* processor feature flags */
|
UINT8 feature_mask; /* processor feature flags */
|
||||||
UINT16 int_rom_size; /* internal rom size */
|
UINT16 int_rom_size; /* internal rom size */
|
||||||
|
|
||||||
cpu_state_table state; /* state table */
|
cpu_state_table state; /* state table */
|
||||||
UINT8 rtemp; /* temporary for import/export */
|
UINT8 rtemp; /* temporary for import/export */
|
||||||
};
|
};
|
||||||
@ -195,7 +195,7 @@ static const cpu_state_entry state_array[] =
|
|||||||
|
|
||||||
MCS48_STATE_ENTRY(P1, "%02X", p1, 0xff, 0)
|
MCS48_STATE_ENTRY(P1, "%02X", p1, 0xff, 0)
|
||||||
MCS48_STATE_ENTRY(P2, "%02X", p2, 0xff, 0)
|
MCS48_STATE_ENTRY(P2, "%02X", p2, 0xff, 0)
|
||||||
|
|
||||||
MCS48_STATE_ENTRY(R0, "%02X", rtemp, 0xff, CPUSTATE_IMPORT | CPUSTATE_EXPORT)
|
MCS48_STATE_ENTRY(R0, "%02X", rtemp, 0xff, CPUSTATE_IMPORT | CPUSTATE_EXPORT)
|
||||||
MCS48_STATE_ENTRY(R1, "%02X", rtemp, 0xff, CPUSTATE_IMPORT | CPUSTATE_EXPORT)
|
MCS48_STATE_ENTRY(R1, "%02X", rtemp, 0xff, CPUSTATE_IMPORT | CPUSTATE_EXPORT)
|
||||||
MCS48_STATE_ENTRY(R2, "%02X", rtemp, 0xff, CPUSTATE_IMPORT | CPUSTATE_EXPORT)
|
MCS48_STATE_ENTRY(R2, "%02X", rtemp, 0xff, CPUSTATE_IMPORT | CPUSTATE_EXPORT)
|
||||||
@ -332,7 +332,7 @@ INLINE void pull_pc_psw(mcs48_state *cpustate)
|
|||||||
|
|
||||||
|
|
||||||
/*-------------------------------------------------
|
/*-------------------------------------------------
|
||||||
pull_pc - pull the PC value from the stack,
|
pull_pc - pull the PC value from the stack,
|
||||||
leaving the upper part of PSW intact
|
leaving the upper part of PSW intact
|
||||||
-------------------------------------------------*/
|
-------------------------------------------------*/
|
||||||
|
|
||||||
@ -437,7 +437,7 @@ INLINE UINT8 p2_mask(mcs48_state *cpustate)
|
|||||||
|
|
||||||
|
|
||||||
/*-------------------------------------------------
|
/*-------------------------------------------------
|
||||||
expander_operation - perform an operation via
|
expander_operation - perform an operation via
|
||||||
the 8243 expander chip
|
the 8243 expander chip
|
||||||
-------------------------------------------------*/
|
-------------------------------------------------*/
|
||||||
|
|
||||||
@ -445,10 +445,10 @@ INLINE void expander_operation(mcs48_state *cpustate, UINT8 operation, UINT8 por
|
|||||||
{
|
{
|
||||||
/* put opcode/data on low 4 bits of P2 */
|
/* put opcode/data on low 4 bits of P2 */
|
||||||
port_w(2, cpustate->p2 = (cpustate->p2 & 0xf0) | (operation << 2) | (port & 3));
|
port_w(2, cpustate->p2 = (cpustate->p2 & 0xf0) | (operation << 2) | (port & 3));
|
||||||
|
|
||||||
/* generate high-to-low transition on PROG line */
|
/* generate high-to-low transition on PROG line */
|
||||||
prog_w(0);
|
prog_w(0);
|
||||||
|
|
||||||
/* put data on low 4 bits of P2 */
|
/* put data on low 4 bits of P2 */
|
||||||
if (operation != 0)
|
if (operation != 0)
|
||||||
port_w(2, cpustate->p2 = (cpustate->p2 & 0xf0) | (cpustate->a & 0x0f));
|
port_w(2, cpustate->p2 = (cpustate->p2 & 0xf0) | (cpustate->a & 0x0f));
|
||||||
@ -737,7 +737,7 @@ OPHANDLER( out_dbb_a )
|
|||||||
/* copy to the DBBO and update the bit in STS */
|
/* copy to the DBBO and update the bit in STS */
|
||||||
cpustate->dbbo = cpustate->a;
|
cpustate->dbbo = cpustate->a;
|
||||||
cpustate->sts |= STS_OBF;
|
cpustate->sts |= STS_OBF;
|
||||||
|
|
||||||
/* if P2 flags are enabled, update the state of P2 */
|
/* if P2 flags are enabled, update the state of P2 */
|
||||||
if (cpustate->flags_enabled && (cpustate->p2 & P2_OBF) == 0)
|
if (cpustate->flags_enabled && (cpustate->p2 & P2_OBF) == 0)
|
||||||
port_w(2, cpustate->p2 |= P2_OBF);
|
port_w(2, cpustate->p2 |= P2_OBF);
|
||||||
@ -824,37 +824,37 @@ SPLIT_OPHANDLER( split_f5, sel_mb1, en_flags )
|
|||||||
static const mcs48_ophandler opcode_table[256]=
|
static const mcs48_ophandler opcode_table[256]=
|
||||||
{
|
{
|
||||||
nop, illegal, split_02, add_a_n, jmp_0, en_i, illegal, dec_a, /* 00 */
|
nop, illegal, split_02, add_a_n, jmp_0, en_i, illegal, dec_a, /* 00 */
|
||||||
split_08, in_a_p1, in_a_p2, illegal, movd_a_p4, movd_a_p5, movd_a_p6, movd_a_p7,
|
split_08, in_a_p1, in_a_p2, illegal, movd_a_p4, movd_a_p5, movd_a_p6, movd_a_p7,
|
||||||
inc_xr0, inc_xr1, jb_0, adc_a_n, call_0, dis_i, jtf, inc_a, /* 10 */
|
inc_xr0, inc_xr1, jb_0, adc_a_n, call_0, dis_i, jtf, inc_a, /* 10 */
|
||||||
inc_r0, inc_r1, inc_r2, inc_r3, inc_r4, inc_r5, inc_r6, inc_r7,
|
inc_r0, inc_r1, inc_r2, inc_r3, inc_r4, inc_r5, inc_r6, inc_r7,
|
||||||
xch_a_xr0, xch_a_xr1, split_22, mov_a_n, jmp_1, en_tcnti, jnt_0, clr_a, /* 20 */
|
xch_a_xr0, xch_a_xr1, split_22, mov_a_n, jmp_1, en_tcnti, jnt_0, clr_a, /* 20 */
|
||||||
xch_a_r0, xch_a_r1, xch_a_r2, xch_a_r3, xch_a_r4, xch_a_r5, xch_a_r6, xch_a_r7,
|
xch_a_r0, xch_a_r1, xch_a_r2, xch_a_r3, xch_a_r4, xch_a_r5, xch_a_r6, xch_a_r7,
|
||||||
xchd_a_xr0, xchd_a_xr1, jb_1, illegal, call_1, dis_tcnti, jt_0, cpl_a, /* 30 */
|
xchd_a_xr0, xchd_a_xr1, jb_1, illegal, call_1, dis_tcnti, jt_0, cpl_a, /* 30 */
|
||||||
illegal, outl_p1_a, outl_p2_a, illegal, movd_p4_a, movd_p5_a, movd_p6_a, movd_p7_a,
|
illegal, outl_p1_a, outl_p2_a, illegal, movd_p4_a, movd_p5_a, movd_p6_a, movd_p7_a,
|
||||||
orl_a_xr0, orl_a_xr1, mov_a_t, orl_a_n, jmp_2, strt_cnt, jnt_1, swap_a, /* 40 */
|
orl_a_xr0, orl_a_xr1, mov_a_t, orl_a_n, jmp_2, strt_cnt, jnt_1, swap_a, /* 40 */
|
||||||
orl_a_r0, orl_a_r1, orl_a_r2, orl_a_r3, orl_a_r4, orl_a_r5, orl_a_r6, orl_a_r7,
|
orl_a_r0, orl_a_r1, orl_a_r2, orl_a_r3, orl_a_r4, orl_a_r5, orl_a_r6, orl_a_r7,
|
||||||
anl_a_xr0, anl_a_xr1, jb_2, anl_a_n, call_2, strt_t, jt_1, da_a, /* 50 */
|
anl_a_xr0, anl_a_xr1, jb_2, anl_a_n, call_2, strt_t, jt_1, da_a, /* 50 */
|
||||||
anl_a_r0, anl_a_r1, anl_a_r2, anl_a_r3, anl_a_r4, anl_a_r5, anl_a_r6, anl_a_r7,
|
anl_a_r0, anl_a_r1, anl_a_r2, anl_a_r3, anl_a_r4, anl_a_r5, anl_a_r6, anl_a_r7,
|
||||||
add_a_xr0, add_a_xr1, mov_t_a, illegal, jmp_3, stop_tcnt, illegal, rrc_a, /* 60 */
|
add_a_xr0, add_a_xr1, mov_t_a, illegal, jmp_3, stop_tcnt, illegal, rrc_a, /* 60 */
|
||||||
add_a_r0, add_a_r1, add_a_r2, add_a_r3, add_a_r4, add_a_r5, add_a_r6, add_a_r7,
|
add_a_r0, add_a_r1, add_a_r2, add_a_r3, add_a_r4, add_a_r5, add_a_r6, add_a_r7,
|
||||||
adc_a_xr0, adc_a_xr1, jb_3, illegal, call_3, split_75, jf1, rr_a, /* 70 */
|
adc_a_xr0, adc_a_xr1, jb_3, illegal, call_3, split_75, jf1, rr_a, /* 70 */
|
||||||
adc_a_r0, adc_a_r1, adc_a_r2, adc_a_r3, adc_a_r4, adc_a_r5, adc_a_r6, adc_a_r7,
|
adc_a_r0, adc_a_r1, adc_a_r2, adc_a_r3, adc_a_r4, adc_a_r5, adc_a_r6, adc_a_r7,
|
||||||
split_80, split_81, illegal, ret, jmp_4, clr_f0, split_86, illegal, /* 80 */
|
split_80, split_81, illegal, ret, jmp_4, clr_f0, split_86, illegal, /* 80 */
|
||||||
split_88, orl_p1_n, orl_p2_n, illegal, orld_p4_a, orld_p5_a, orld_p6_a, orld_p7_a,
|
split_88, orl_p1_n, orl_p2_n, illegal, orld_p4_a, orld_p5_a, orld_p6_a, orld_p7_a,
|
||||||
split_90, split_91, jb_4, retr, call_4, cpl_f0, jnz, clr_c, /* 90 */
|
split_90, split_91, jb_4, retr, call_4, cpl_f0, jnz, clr_c, /* 90 */
|
||||||
split_98, anl_p1_n, anl_p2_n, illegal, anld_p4_a, anld_p5_a, anld_p6_a, anld_p7_a,
|
split_98, anl_p1_n, anl_p2_n, illegal, anld_p4_a, anld_p5_a, anld_p6_a, anld_p7_a,
|
||||||
mov_xr0_a, mov_xr1_a, illegal, movp_a_xa, jmp_5, clr_f1, illegal, cpl_c, /* A0 */
|
mov_xr0_a, mov_xr1_a, illegal, movp_a_xa, jmp_5, clr_f1, illegal, cpl_c, /* A0 */
|
||||||
mov_r0_a, mov_r1_a, mov_r2_a, mov_r3_a, mov_r4_a, mov_r5_a, mov_r6_a, mov_r7_a,
|
mov_r0_a, mov_r1_a, mov_r2_a, mov_r3_a, mov_r4_a, mov_r5_a, mov_r6_a, mov_r7_a,
|
||||||
mov_xr0_n, mov_xr1_n, jb_5, jmpp_xa, call_5, cpl_f1, jf0, illegal, /* B0 */
|
mov_xr0_n, mov_xr1_n, jb_5, jmpp_xa, call_5, cpl_f1, jf0, illegal, /* B0 */
|
||||||
mov_r0_n, mov_r1_n, mov_r2_n, mov_r3_n, mov_r4_n, mov_r5_n, mov_r6_n, mov_r7_n,
|
mov_r0_n, mov_r1_n, mov_r2_n, mov_r3_n, mov_r4_n, mov_r5_n, mov_r6_n, mov_r7_n,
|
||||||
illegal, illegal, illegal, illegal, jmp_6, sel_rb0, jz, mov_a_psw, /* C0 */
|
illegal, illegal, illegal, illegal, jmp_6, sel_rb0, jz, mov_a_psw, /* C0 */
|
||||||
dec_r0, dec_r1, dec_r2, dec_r3, dec_r4, dec_r5, dec_r6, dec_r7,
|
dec_r0, dec_r1, dec_r2, dec_r3, dec_r4, dec_r5, dec_r6, dec_r7,
|
||||||
xrl_a_xr0, xrl_a_xr1, jb_6, xrl_a_n, call_6, sel_rb1, split_d6, mov_psw_a, /* D0 */
|
xrl_a_xr0, xrl_a_xr1, jb_6, xrl_a_n, call_6, sel_rb1, split_d6, mov_psw_a, /* D0 */
|
||||||
xrl_a_r0, xrl_a_r1, xrl_a_r2, xrl_a_r3, xrl_a_r4, xrl_a_r5, xrl_a_r6, xrl_a_r7,
|
xrl_a_r0, xrl_a_r1, xrl_a_r2, xrl_a_r3, xrl_a_r4, xrl_a_r5, xrl_a_r6, xrl_a_r7,
|
||||||
illegal, illegal, illegal, movp3_a_xa,jmp_7, split_e5, jnc, rl_a, /* E0 */
|
illegal, illegal, illegal, movp3_a_xa,jmp_7, split_e5, jnc, rl_a, /* E0 */
|
||||||
djnz_r0, djnz_r1, djnz_r2, djnz_r3, djnz_r4, djnz_r5, djnz_r6, djnz_r7,
|
djnz_r0, djnz_r1, djnz_r2, djnz_r3, djnz_r4, djnz_r5, djnz_r6, djnz_r7,
|
||||||
mov_a_xr0, mov_a_xr1, jb_7, illegal, call_7, split_f5, jc, rlc_a, /* F0 */
|
mov_a_xr0, mov_a_xr1, jb_7, illegal, call_7, split_f5, jc, rlc_a, /* F0 */
|
||||||
mov_a_r0, mov_a_r1, mov_a_r2, mov_a_r3, mov_a_r4, mov_a_r5, mov_a_r6, mov_a_r7
|
mov_a_r0, mov_a_r1, mov_a_r2, mov_a_r3, mov_a_r4, mov_a_r5, mov_a_r6, mov_a_r7
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -926,7 +926,7 @@ static void mcs48_init(const device_config *device, cpu_irq_callback irqcallback
|
|||||||
|
|
||||||
|
|
||||||
/*-------------------------------------------------
|
/*-------------------------------------------------
|
||||||
mcs48_norom_init - initialization for systems
|
mcs48_norom_init - initialization for systems
|
||||||
with no internal ROM
|
with no internal ROM
|
||||||
-------------------------------------------------*/
|
-------------------------------------------------*/
|
||||||
|
|
||||||
@ -937,7 +937,7 @@ static CPU_INIT( mcs48_norom )
|
|||||||
|
|
||||||
|
|
||||||
/*-------------------------------------------------
|
/*-------------------------------------------------
|
||||||
mcs48_1k_rom_init - initialization for systems
|
mcs48_1k_rom_init - initialization for systems
|
||||||
with 1k of internal ROM
|
with 1k of internal ROM
|
||||||
-------------------------------------------------*/
|
-------------------------------------------------*/
|
||||||
|
|
||||||
@ -948,7 +948,7 @@ static CPU_INIT( mcs48_1k_rom )
|
|||||||
|
|
||||||
|
|
||||||
/*-------------------------------------------------
|
/*-------------------------------------------------
|
||||||
mcs48_2k_rom - initialization for systems
|
mcs48_2k_rom - initialization for systems
|
||||||
with 2k of internal ROM
|
with 2k of internal ROM
|
||||||
-------------------------------------------------*/
|
-------------------------------------------------*/
|
||||||
|
|
||||||
@ -959,7 +959,7 @@ static CPU_INIT( mcs48_2k_rom )
|
|||||||
|
|
||||||
|
|
||||||
/*-------------------------------------------------
|
/*-------------------------------------------------
|
||||||
mcs48_4k_rom - initialization for systems
|
mcs48_4k_rom - initialization for systems
|
||||||
with 2k of internal ROM
|
with 2k of internal ROM
|
||||||
-------------------------------------------------*/
|
-------------------------------------------------*/
|
||||||
|
|
||||||
@ -970,7 +970,7 @@ static CPU_INIT( mcs48_4k_rom )
|
|||||||
|
|
||||||
|
|
||||||
/*-------------------------------------------------
|
/*-------------------------------------------------
|
||||||
upi41_1k_rom_init - initialization for systems
|
upi41_1k_rom_init - initialization for systems
|
||||||
with 1k of internal ROM
|
with 1k of internal ROM
|
||||||
-------------------------------------------------*/
|
-------------------------------------------------*/
|
||||||
|
|
||||||
@ -981,7 +981,7 @@ static CPU_INIT( upi41_1k_rom )
|
|||||||
|
|
||||||
|
|
||||||
/*-------------------------------------------------
|
/*-------------------------------------------------
|
||||||
upi41_2k_rom_init - initialization for systems
|
upi41_2k_rom_init - initialization for systems
|
||||||
with 2k of internal ROM
|
with 2k of internal ROM
|
||||||
-------------------------------------------------*/
|
-------------------------------------------------*/
|
||||||
|
|
||||||
@ -1136,7 +1136,7 @@ static CPU_EXECUTE( mcs48 )
|
|||||||
do
|
do
|
||||||
{
|
{
|
||||||
unsigned opcode;
|
unsigned opcode;
|
||||||
|
|
||||||
/* fetch next opcode */
|
/* fetch next opcode */
|
||||||
cpustate->prevpc = cpustate->pc;
|
cpustate->prevpc = cpustate->pc;
|
||||||
debugger_instruction_hook(device, cpustate->pc);
|
debugger_instruction_hook(device, cpustate->pc);
|
||||||
@ -1169,7 +1169,7 @@ static CPU_EXECUTE( mcs48 )
|
|||||||
UINT8 upi41_master_r(const device_config *device, UINT8 a0)
|
UINT8 upi41_master_r(const device_config *device, UINT8 a0)
|
||||||
{
|
{
|
||||||
mcs48_state *cpustate = device->token;
|
mcs48_state *cpustate = device->token;
|
||||||
|
|
||||||
/* if just reading the status, return it */
|
/* if just reading the status, return it */
|
||||||
if ((a0 & 1) != 0)
|
if ((a0 & 1) != 0)
|
||||||
return cpustate->sts;
|
return cpustate->sts;
|
||||||
@ -1196,10 +1196,10 @@ static TIMER_CALLBACK( master_callback )
|
|||||||
mcs48_state *cpustate = device->token;
|
mcs48_state *cpustate = device->token;
|
||||||
UINT8 a0 = (param >> 8) & 1;
|
UINT8 a0 = (param >> 8) & 1;
|
||||||
UINT8 data = param;
|
UINT8 data = param;
|
||||||
|
|
||||||
/* data always goes to the input buffer */
|
/* data always goes to the input buffer */
|
||||||
cpustate->dbbi = data;
|
cpustate->dbbi = data;
|
||||||
|
|
||||||
/* set the appropriate flags */
|
/* set the appropriate flags */
|
||||||
if ((cpustate->sts & STS_IBF) == 0)
|
if ((cpustate->sts & STS_IBF) == 0)
|
||||||
{
|
{
|
||||||
@ -1207,7 +1207,7 @@ static TIMER_CALLBACK( master_callback )
|
|||||||
if (cpustate->flags_enabled)
|
if (cpustate->flags_enabled)
|
||||||
port_w(2, cpustate->p2 &= ~P2_NIBF);
|
port_w(2, cpustate->p2 &= ~P2_NIBF);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* set F1 accordingly */
|
/* set F1 accordingly */
|
||||||
if (a0 == 0)
|
if (a0 == 0)
|
||||||
cpustate->sts &= ~STS_F1;
|
cpustate->sts &= ~STS_F1;
|
||||||
|
@ -44,7 +44,7 @@ enum
|
|||||||
MCS48_STS, /* UPI-41 systems only */
|
MCS48_STS, /* UPI-41 systems only */
|
||||||
MCS48_DBBO, /* UPI-41 systems only */
|
MCS48_DBBO, /* UPI-41 systems only */
|
||||||
MCS48_DBBI, /* UPI-41 systems only */
|
MCS48_DBBI, /* UPI-41 systems only */
|
||||||
|
|
||||||
MCS48_GENPC = REG_GENPC,
|
MCS48_GENPC = REG_GENPC,
|
||||||
MCS48_GENSP = REG_GENSP,
|
MCS48_GENSP = REG_GENSP,
|
||||||
MCS48_GENPCBASE = REG_GENPCBASE
|
MCS48_GENPCBASE = REG_GENPCBASE
|
||||||
|
@ -14,7 +14,7 @@ static UINT32 common_dasm(const device_config *device, char *buffer, offs_t pc,
|
|||||||
{
|
{
|
||||||
const UINT8 *startram = opram;
|
const UINT8 *startram = opram;
|
||||||
UINT32 flags = 0;
|
UINT32 flags = 0;
|
||||||
|
|
||||||
opram++;
|
opram++;
|
||||||
switch (*oprom++)
|
switch (*oprom++)
|
||||||
{
|
{
|
||||||
@ -293,7 +293,7 @@ static UINT32 common_dasm(const device_config *device, char *buffer, offs_t pc,
|
|||||||
case 0xfe: sprintf(buffer, "mov a,r6"); break;
|
case 0xfe: sprintf(buffer, "mov a,r6"); break;
|
||||||
case 0xff: sprintf(buffer, "mov a,r7"); break;
|
case 0xff: sprintf(buffer, "mov a,r7"); break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (opram - startram) | flags | DASMFLAG_SUPPORTED;
|
return (opram - startram) | flags | DASMFLAG_SUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1191,7 +1191,7 @@ static int describe_instruction_1f(powerpc_state *ppc, UINT32 op, opcode_desc *d
|
|||||||
if (op & MSR_EE)
|
if (op & MSR_EE)
|
||||||
desc->flags |= OPFLAG_CAN_EXPOSE_EXTERNAL_INT;
|
desc->flags |= OPFLAG_CAN_EXPOSE_EXTERNAL_INT;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
case 0x254: /* ESA */
|
case 0x254: /* ESA */
|
||||||
case 0x274: /* DSA */
|
case 0x274: /* DSA */
|
||||||
if (!is_602_class(ppc))
|
if (!is_602_class(ppc))
|
||||||
|
@ -256,18 +256,18 @@ void cpuexec_timeslice(running_machine *machine)
|
|||||||
timer_execution_state *timerexec = timer_get_execution_state(machine);
|
timer_execution_state *timerexec = timer_get_execution_state(machine);
|
||||||
cpuexec_private *global = machine->cpuexec_data;
|
cpuexec_private *global = machine->cpuexec_data;
|
||||||
int ran;
|
int ran;
|
||||||
|
|
||||||
/* build the execution list if we don't have one yet */
|
/* build the execution list if we don't have one yet */
|
||||||
if (global->executelist == NULL)
|
if (global->executelist == NULL)
|
||||||
rebuild_execute_list(machine);
|
rebuild_execute_list(machine);
|
||||||
|
|
||||||
/* loop until we hit the next timer */
|
/* loop until we hit the next timer */
|
||||||
while (ATTOTIME_LT(timerexec->basetime, timerexec->nextfire))
|
while (ATTOTIME_LT(timerexec->basetime, timerexec->nextfire))
|
||||||
{
|
{
|
||||||
cpu_class_data *classdata;
|
cpu_class_data *classdata;
|
||||||
UINT32 suspendchanged;
|
UINT32 suspendchanged;
|
||||||
attotime target;
|
attotime target;
|
||||||
|
|
||||||
/* by default, assume our target is the end of the next quantum */
|
/* by default, assume our target is the end of the next quantum */
|
||||||
target.seconds = timerexec->basetime.seconds;
|
target.seconds = timerexec->basetime.seconds;
|
||||||
target.attoseconds = timerexec->basetime.attoseconds + timerexec->curquantum;
|
target.attoseconds = timerexec->basetime.attoseconds + timerexec->curquantum;
|
||||||
@ -290,7 +290,7 @@ void cpuexec_timeslice(running_machine *machine)
|
|||||||
classdata->nextsuspend &= ~SUSPEND_REASON_TIMESLICE;
|
classdata->nextsuspend &= ~SUSPEND_REASON_TIMESLICE;
|
||||||
classdata->eatcycles = classdata->nexteatcycles;
|
classdata->eatcycles = classdata->nexteatcycles;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* recompute the execute list if any CPUs changed their suspension state */
|
/* recompute the execute list if any CPUs changed their suspension state */
|
||||||
if (suspendchanged != 0)
|
if (suspendchanged != 0)
|
||||||
rebuild_execute_list(machine);
|
rebuild_execute_list(machine);
|
||||||
@ -302,7 +302,7 @@ void cpuexec_timeslice(running_machine *machine)
|
|||||||
if (target.seconds >= classdata->localtime.seconds)
|
if (target.seconds >= classdata->localtime.seconds)
|
||||||
{
|
{
|
||||||
attoseconds_t delta, actualdelta;
|
attoseconds_t delta, actualdelta;
|
||||||
|
|
||||||
/* compute how many attoseconds to execute this CPU */
|
/* compute how many attoseconds to execute this CPU */
|
||||||
delta = target.attoseconds - classdata->localtime.attoseconds;
|
delta = target.attoseconds - classdata->localtime.attoseconds;
|
||||||
if (delta < 0 && target.seconds > classdata->localtime.seconds)
|
if (delta < 0 && target.seconds > classdata->localtime.seconds)
|
||||||
@ -340,10 +340,10 @@ void cpuexec_timeslice(running_machine *machine)
|
|||||||
ran -= classdata->cycles_stolen;
|
ran -= classdata->cycles_stolen;
|
||||||
profiler_mark(PROFILER_END);
|
profiler_mark(PROFILER_END);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* account for these cycles */
|
/* account for these cycles */
|
||||||
classdata->totalcycles += ran;
|
classdata->totalcycles += ran;
|
||||||
|
|
||||||
/* update the local time for this CPU */
|
/* update the local time for this CPU */
|
||||||
actualdelta = classdata->attoseconds_per_cycle * ran;
|
actualdelta = classdata->attoseconds_per_cycle * ran;
|
||||||
classdata->localtime.attoseconds += actualdelta;
|
classdata->localtime.attoseconds += actualdelta;
|
||||||
@ -355,7 +355,7 @@ void cpuexec_timeslice(running_machine *machine)
|
|||||||
{
|
{
|
||||||
assert(attotime_compare(classdata->localtime, target) < 0);
|
assert(attotime_compare(classdata->localtime, target) < 0);
|
||||||
target = classdata->localtime;
|
target = classdata->localtime;
|
||||||
|
|
||||||
/* however, if this puts us before the base, clamp to the base as a minimum */
|
/* however, if this puts us before the base, clamp to the base as a minimum */
|
||||||
if (ATTOTIME_LT(target, timerexec->basetime))
|
if (ATTOTIME_LT(target, timerexec->basetime))
|
||||||
{
|
{
|
||||||
|
@ -382,7 +382,7 @@ int debug_cpu_translate(const address_space *space, int intention, offs_t *addre
|
|||||||
|
|
||||||
|
|
||||||
/*-------------------------------------------------
|
/*-------------------------------------------------
|
||||||
debug_cpu_disassemble - disassemble a line at
|
debug_cpu_disassemble - disassemble a line at
|
||||||
a given PC on a given CPU
|
a given PC on a given CPU
|
||||||
-------------------------------------------------*/
|
-------------------------------------------------*/
|
||||||
|
|
||||||
@ -441,7 +441,7 @@ offs_t debug_cpu_disassemble(const device_config *device, char *buffer, offs_t p
|
|||||||
|
|
||||||
|
|
||||||
/*-------------------------------------------------
|
/*-------------------------------------------------
|
||||||
debug_cpu_set_dasm_override - set an override
|
debug_cpu_set_dasm_override - set an override
|
||||||
handler for disassembly
|
handler for disassembly
|
||||||
-------------------------------------------------*/
|
-------------------------------------------------*/
|
||||||
|
|
||||||
|
@ -83,7 +83,7 @@ WRITE8_DEVICE_HANDLER( i8243_prog_w )
|
|||||||
{
|
{
|
||||||
i8243_state *i8243 = get_safe_token(device);
|
i8243_state *i8243 = get_safe_token(device);
|
||||||
i8243_config *config = get_safe_config(device);
|
i8243_config *config = get_safe_config(device);
|
||||||
|
|
||||||
/* only care about low bit */
|
/* only care about low bit */
|
||||||
data &= 1;
|
data &= 1;
|
||||||
|
|
||||||
@ -91,7 +91,7 @@ WRITE8_DEVICE_HANDLER( i8243_prog_w )
|
|||||||
if (i8243->prog && !data)
|
if (i8243->prog && !data)
|
||||||
{
|
{
|
||||||
i8243->opcode = i8243->p2;
|
i8243->opcode = i8243->p2;
|
||||||
|
|
||||||
/* if this is a read opcode, copy result to p2out */
|
/* if this is a read opcode, copy result to p2out */
|
||||||
if ((i8243->opcode >> 2) == MCS48_EXPANDER_OP_READ)
|
if ((i8243->opcode >> 2) == MCS48_EXPANDER_OP_READ)
|
||||||
{
|
{
|
||||||
@ -100,7 +100,7 @@ WRITE8_DEVICE_HANDLER( i8243_prog_w )
|
|||||||
i8243->p2out = i8243->p[i8243->opcode & 3] & 0x0f;
|
i8243->p2out = i8243->p[i8243->opcode & 3] & 0x0f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* on low->high transition state, act on opcode */
|
/* on low->high transition state, act on opcode */
|
||||||
else if (!i8243->prog && data)
|
else if (!i8243->prog && data)
|
||||||
{
|
{
|
||||||
@ -111,13 +111,13 @@ WRITE8_DEVICE_HANDLER( i8243_prog_w )
|
|||||||
if (config->writehandler != NULL)
|
if (config->writehandler != NULL)
|
||||||
(*config->writehandler)(device, i8243->opcode & 3, i8243->p[i8243->opcode & 3]);
|
(*config->writehandler)(device, i8243->opcode & 3, i8243->p[i8243->opcode & 3]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MCS48_EXPANDER_OP_OR:
|
case MCS48_EXPANDER_OP_OR:
|
||||||
i8243->p[i8243->opcode & 3] |= i8243->p2 & 0x0f;
|
i8243->p[i8243->opcode & 3] |= i8243->p2 & 0x0f;
|
||||||
if (config->writehandler != NULL)
|
if (config->writehandler != NULL)
|
||||||
(*config->writehandler)(device, i8243->opcode & 3, i8243->p[i8243->opcode & 3]);
|
(*config->writehandler)(device, i8243->opcode & 3, i8243->p[i8243->opcode & 3]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MCS48_EXPANDER_OP_AND:
|
case MCS48_EXPANDER_OP_AND:
|
||||||
i8243->p[i8243->opcode & 3] &= i8243->p2 & 0x0f;
|
i8243->p[i8243->opcode & 3] &= i8243->p2 & 0x0f;
|
||||||
if (config->writehandler != NULL)
|
if (config->writehandler != NULL)
|
||||||
@ -125,7 +125,7 @@ WRITE8_DEVICE_HANDLER( i8243_prog_w )
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* remember the state */
|
/* remember the state */
|
||||||
i8243->prog = data;
|
i8243->prog = data;
|
||||||
}
|
}
|
||||||
@ -153,7 +153,7 @@ static DEVICE_START( i8243 )
|
|||||||
static DEVICE_RESET( i8243 )
|
static DEVICE_RESET( i8243 )
|
||||||
{
|
{
|
||||||
i8243_state *i8243 = get_safe_token(device);
|
i8243_state *i8243 = get_safe_token(device);
|
||||||
|
|
||||||
i8243->p2 = 0x0f;
|
i8243->p2 = 0x0f;
|
||||||
i8243->p2out = 0x0f;
|
i8243->p2out = 0x0f;
|
||||||
i8243->prog = 1;
|
i8243->prog = 1;
|
||||||
|
@ -1287,7 +1287,7 @@ static void init_disc(const device_config *device)
|
|||||||
laserdisc_state *ld = get_safe_token(device);
|
laserdisc_state *ld = get_safe_token(device);
|
||||||
ldcore_data *ldcore = ld->core;
|
ldcore_data *ldcore = ld->core;
|
||||||
chd_error err;
|
chd_error err;
|
||||||
|
|
||||||
/* get a handle to the disc to play */
|
/* get a handle to the disc to play */
|
||||||
if (config->getdisc != NULL)
|
if (config->getdisc != NULL)
|
||||||
ldcore->disc = (*config->getdisc)(device);
|
ldcore->disc = (*config->getdisc)(device);
|
||||||
@ -1456,7 +1456,7 @@ static DEVICE_START( laserdisc )
|
|||||||
assert(ld->screen != NULL);
|
assert(ld->screen != NULL);
|
||||||
if (!ld->screen->started)
|
if (!ld->screen->started)
|
||||||
return DEVICE_START_MISSING_DEPENDENCY;
|
return DEVICE_START_MISSING_DEPENDENCY;
|
||||||
|
|
||||||
/* save a copy of the device pointer */
|
/* save a copy of the device pointer */
|
||||||
ld->device = device;
|
ld->device = device;
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ profiler_state global_profiler;
|
|||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
/*-------------------------------------------------
|
/*-------------------------------------------------
|
||||||
_profiler_mark - mark the beginning/end of a
|
_profiler_mark - mark the beginning/end of a
|
||||||
profiler entry
|
profiler entry
|
||||||
-------------------------------------------------*/
|
-------------------------------------------------*/
|
||||||
|
|
||||||
@ -70,21 +70,21 @@ void _profiler_mark(int type)
|
|||||||
profiler_filo_entry *preventry = entry - 1;
|
profiler_filo_entry *preventry = entry - 1;
|
||||||
data->duration[preventry->type] += curticks - preventry->start;
|
data->duration[preventry->type] += curticks - preventry->start;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* fill in this entry */
|
/* fill in this entry */
|
||||||
entry->type = type;
|
entry->type = type;
|
||||||
entry->start = curticks;
|
entry->start = curticks;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* if we're ending an existing bucket, update the time */
|
/* if we're ending an existing bucket, update the time */
|
||||||
else if (global_profiler.filoindex > 0)
|
else if (global_profiler.filoindex > 0)
|
||||||
{
|
{
|
||||||
int index = --global_profiler.filoindex;
|
int index = --global_profiler.filoindex;
|
||||||
profiler_filo_entry *entry = &global_profiler.filo[index];
|
profiler_filo_entry *entry = &global_profiler.filo[index];
|
||||||
|
|
||||||
/* account for the time taken */
|
/* account for the time taken */
|
||||||
data->duration[entry->type] += curticks - entry->start;
|
data->duration[entry->type] += curticks - entry->start;
|
||||||
|
|
||||||
/* if we have a previous entry, restart his time now */
|
/* if we have a previous entry, restart his time now */
|
||||||
if (index != 0)
|
if (index != 0)
|
||||||
{
|
{
|
||||||
@ -96,7 +96,7 @@ void _profiler_mark(int type)
|
|||||||
|
|
||||||
|
|
||||||
/*-------------------------------------------------
|
/*-------------------------------------------------
|
||||||
_profiler_get_text - return the current text
|
_profiler_get_text - return the current text
|
||||||
in an astring
|
in an astring
|
||||||
-------------------------------------------------*/
|
-------------------------------------------------*/
|
||||||
|
|
||||||
@ -130,13 +130,13 @@ astring *_profiler_get_text(running_machine *machine, astring *string)
|
|||||||
int curtype, curmem, switches;
|
int curtype, curmem, switches;
|
||||||
|
|
||||||
profiler_mark(PROFILER_PROFILER);
|
profiler_mark(PROFILER_PROFILER);
|
||||||
|
|
||||||
/* compute the total time for all bits, not including profiler or idle */
|
/* compute the total time for all bits, not including profiler or idle */
|
||||||
computed = 0;
|
computed = 0;
|
||||||
for (curtype = 0; curtype < PROFILER_PROFILER; curtype++)
|
for (curtype = 0; curtype < PROFILER_PROFILER; curtype++)
|
||||||
for (curmem = 0; curmem < ARRAY_LENGTH(global_profiler.data); curmem++)
|
for (curmem = 0; curmem < ARRAY_LENGTH(global_profiler.data); curmem++)
|
||||||
computed += global_profiler.data[curmem].duration[curtype];
|
computed += global_profiler.data[curmem].duration[curtype];
|
||||||
|
|
||||||
/* save that result in normalize, and continue adding the rest */
|
/* save that result in normalize, and continue adding the rest */
|
||||||
normalize = computed;
|
normalize = computed;
|
||||||
for ( ; curtype < PROFILER_TOTAL; curtype++)
|
for ( ; curtype < PROFILER_TOTAL; curtype++)
|
||||||
@ -161,14 +161,14 @@ astring *_profiler_get_text(running_machine *machine, astring *string)
|
|||||||
if (global_profiler.dataready && computed != 0)
|
if (global_profiler.dataready && computed != 0)
|
||||||
{
|
{
|
||||||
int nameindex;
|
int nameindex;
|
||||||
|
|
||||||
/* start with the un-normalized percentage */
|
/* start with the un-normalized percentage */
|
||||||
astring_catprintf(string, "%02d%% ", (int)((computed * 100 + total/2) / total));
|
astring_catprintf(string, "%02d%% ", (int)((computed * 100 + total/2) / total));
|
||||||
|
|
||||||
/* followed by the normalized percentage for everything but profiler and idle */
|
/* followed by the normalized percentage for everything but profiler and idle */
|
||||||
if (curtype < PROFILER_PROFILER)
|
if (curtype < PROFILER_PROFILER)
|
||||||
astring_catprintf(string, "%02d%% ", (int)((computed * 100 + normalize/2) / normalize));
|
astring_catprintf(string, "%02d%% ", (int)((computed * 100 + normalize/2) / normalize));
|
||||||
|
|
||||||
/* and then the text */
|
/* and then the text */
|
||||||
if (curtype >= PROFILER_CPU_FIRST && curtype <= PROFILER_CPU_MAX)
|
if (curtype >= PROFILER_CPU_FIRST && curtype <= PROFILER_CPU_MAX)
|
||||||
astring_catprintf(string, "CPU '%s'", device_list_find_by_index(machine->config->devicelist, CPU, curtype - PROFILER_CPU_FIRST)->tag);
|
astring_catprintf(string, "CPU '%s'", device_list_find_by_index(machine->config->devicelist, CPU, curtype - PROFILER_CPU_FIRST)->tag);
|
||||||
@ -179,7 +179,7 @@ astring *_profiler_get_text(running_machine *machine, astring *string)
|
|||||||
astring_catc(string, names[nameindex].string);
|
astring_catc(string, names[nameindex].string);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* followed by a carriage return */
|
/* followed by a carriage return */
|
||||||
astring_catc(string, "\n");
|
astring_catc(string, "\n");
|
||||||
}
|
}
|
||||||
|
@ -9,14 +9,14 @@
|
|||||||
|
|
||||||
****************************************************************************
|
****************************************************************************
|
||||||
|
|
||||||
To start profiling a certain section, e.g. video:
|
To start profiling a certain section, e.g. video:
|
||||||
profiler_mark(PROFILER_VIDEO);
|
profiler_mark(PROFILER_VIDEO);
|
||||||
|
|
||||||
to end profiling the current section:
|
to end profiling the current section:
|
||||||
profiler_mark(PROFILER_END);
|
profiler_mark(PROFILER_END);
|
||||||
|
|
||||||
|
the profiler handles a FILO list so calls may be nested.
|
||||||
|
|
||||||
the profiler handles a FILO list so calls may be nested.
|
|
||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
@ -277,7 +277,7 @@ bitmap_t *auto_bitmap_alloc_file_line(int width, int height, bitmap_format forma
|
|||||||
|
|
||||||
/*-------------------------------------------------
|
/*-------------------------------------------------
|
||||||
validate_auto_malloc_memory - validate that a
|
validate_auto_malloc_memory - validate that a
|
||||||
block of memory has been allocated by
|
block of memory has been allocated by
|
||||||
auto_malloc()
|
auto_malloc()
|
||||||
-------------------------------------------------*/
|
-------------------------------------------------*/
|
||||||
|
|
||||||
|
@ -278,7 +278,7 @@ astring *rom_region_name(astring *result, const game_driver *drv, const rom_sour
|
|||||||
|
|
||||||
|
|
||||||
/*-------------------------------------------------
|
/*-------------------------------------------------
|
||||||
rom_file_size - return the expected size of a
|
rom_file_size - return the expected size of a
|
||||||
file given the ROM description
|
file given the ROM description
|
||||||
-------------------------------------------------*/
|
-------------------------------------------------*/
|
||||||
|
|
||||||
@ -300,7 +300,7 @@ UINT32 rom_file_size(const rom_entry *romp)
|
|||||||
maxlength = MAX(maxlength, curlength);
|
maxlength = MAX(maxlength, curlength);
|
||||||
}
|
}
|
||||||
while (ROMENTRY_ISRELOAD(romp));
|
while (ROMENTRY_ISRELOAD(romp));
|
||||||
|
|
||||||
return maxlength;
|
return maxlength;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -338,9 +338,9 @@ static void determine_bios_rom(rom_load_data *romdata)
|
|||||||
const rom_entry *rom;
|
const rom_entry *rom;
|
||||||
int default_no = 1;
|
int default_no = 1;
|
||||||
int bios_count = 0;
|
int bios_count = 0;
|
||||||
|
|
||||||
romdata->system_bios = 0;
|
romdata->system_bios = 0;
|
||||||
|
|
||||||
/* first determine the default BIOS name */
|
/* first determine the default BIOS name */
|
||||||
for (rom = romdata->machine->gamedrv->rom; !ROMENTRY_ISEND(rom); rom++)
|
for (rom = romdata->machine->gamedrv->rom; !ROMENTRY_ISEND(rom); rom++)
|
||||||
if (ROMENTRY_ISDEFAULT_BIOS(rom))
|
if (ROMENTRY_ISDEFAULT_BIOS(rom))
|
||||||
@ -837,7 +837,7 @@ static int read_rom_data(rom_load_data *romdata, const rom_entry *romp)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
free(tempbuf);
|
free(tempbuf);
|
||||||
|
|
||||||
LOG((" All done\n"));
|
LOG((" All done\n"));
|
||||||
return ROM_GETLENGTH(romp);
|
return ROM_GETLENGTH(romp);
|
||||||
}
|
}
|
||||||
@ -1010,8 +1010,8 @@ chd_error open_disk_image(const game_driver *gamedrv, const rom_entry *romp, mam
|
|||||||
|
|
||||||
|
|
||||||
/*-------------------------------------------------
|
/*-------------------------------------------------
|
||||||
open_disk_image_options - open a disk image,
|
open_disk_image_options - open a disk image,
|
||||||
searching up the parent and loading by
|
searching up the parent and loading by
|
||||||
checksum
|
checksum
|
||||||
-------------------------------------------------*/
|
-------------------------------------------------*/
|
||||||
|
|
||||||
@ -1338,7 +1338,7 @@ void rom_init(running_machine *machine)
|
|||||||
memset(&romdata, 0, sizeof(romdata));
|
memset(&romdata, 0, sizeof(romdata));
|
||||||
romdata.machine = machine;
|
romdata.machine = machine;
|
||||||
romdata.errorstring = astring_alloc();
|
romdata.errorstring = astring_alloc();
|
||||||
|
|
||||||
/* figure out which BIOS we are using */
|
/* figure out which BIOS we are using */
|
||||||
determine_bios_rom(&romdata);
|
determine_bios_rom(&romdata);
|
||||||
|
|
||||||
|
@ -95,7 +95,7 @@ struct _timer_private
|
|||||||
emu_timer * activelist; /* head of the active list */
|
emu_timer * activelist; /* head of the active list */
|
||||||
emu_timer * freelist; /* head of the free list */
|
emu_timer * freelist; /* head of the free list */
|
||||||
emu_timer * freelist_tail; /* tail of the free list */
|
emu_timer * freelist_tail; /* tail of the free list */
|
||||||
|
|
||||||
/* execution state */
|
/* execution state */
|
||||||
timer_execution_state exec; /* current global execution state */
|
timer_execution_state exec; /* current global execution state */
|
||||||
|
|
||||||
@ -361,7 +361,7 @@ timer_execution_state *timer_get_execution_state(running_machine *machine)
|
|||||||
|
|
||||||
|
|
||||||
/*-------------------------------------------------
|
/*-------------------------------------------------
|
||||||
timer_execute_timers - execute timers and
|
timer_execute_timers - execute timers and
|
||||||
update scheduling quanta
|
update scheduling quanta
|
||||||
-------------------------------------------------*/
|
-------------------------------------------------*/
|
||||||
|
|
||||||
|
@ -140,7 +140,7 @@ static chd_file *get_disc(const device_config *device)
|
|||||||
/* if we failed, pop a message and exit */
|
/* if we failed, pop a message and exit */
|
||||||
if (image_file == NULL)
|
if (image_file == NULL)
|
||||||
fatalerror("No valid image file found!\n");
|
fatalerror("No valid image file found!\n");
|
||||||
|
|
||||||
return get_disk_handle("laserdisc");
|
return get_disk_handle("laserdisc");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -593,7 +593,7 @@ MACHINE_DRIVER_START( gottlieb_soundrev2 )
|
|||||||
|
|
||||||
MDRV_CPU_ADD("speech", M6502, SOUND2_CLOCK/4)
|
MDRV_CPU_ADD("speech", M6502, SOUND2_CLOCK/4)
|
||||||
MDRV_CPU_PROGRAM_MAP(gottlieb_speech2_map,0)
|
MDRV_CPU_PROGRAM_MAP(gottlieb_speech2_map,0)
|
||||||
|
|
||||||
/* sound hardware */
|
/* sound hardware */
|
||||||
MDRV_SOUND_START( gottlieb2 )
|
MDRV_SOUND_START( gottlieb2 )
|
||||||
|
|
||||||
|
@ -836,7 +836,7 @@ MACHINE_DRIVER_START( monsterb_sound_board )
|
|||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
MDRV_CPU_ADD("audio", N7751, 6000000)
|
MDRV_CPU_ADD("audio", N7751, 6000000)
|
||||||
MDRV_CPU_IO_MAP(monsterb_7751_portmap,0)
|
MDRV_CPU_IO_MAP(monsterb_7751_portmap,0)
|
||||||
|
|
||||||
MDRV_I8243_ADD("audio_8243", NULL, n7751_rom_control_w)
|
MDRV_I8243_ADD("audio_8243", NULL, n7751_rom_control_w)
|
||||||
|
|
||||||
/* sound hardware */
|
/* sound hardware */
|
||||||
@ -959,7 +959,7 @@ static WRITE8_DEVICE_HANDLER( n7751_rom_control_w )
|
|||||||
case 2:
|
case 2:
|
||||||
sound_addr = (sound_addr & ~0xf00) | ((data & 0x0f) << 8);
|
sound_addr = (sound_addr & ~0xf00) | ((data & 0x0f) << 8);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 3:
|
case 3:
|
||||||
sound_addr &= 0xfff;
|
sound_addr &= 0xfff;
|
||||||
{
|
{
|
||||||
@ -993,7 +993,7 @@ static WRITE8_DEVICE_HANDLER( n7751_p2_w )
|
|||||||
{
|
{
|
||||||
/* write to P2; low 4 bits go to 8243 */
|
/* write to P2; low 4 bits go to 8243 */
|
||||||
i8243_p2_w(device, offset, data & 0x0f);
|
i8243_p2_w(device, offset, data & 0x0f);
|
||||||
|
|
||||||
/* output of bit $80 indicates we are ready (1) or busy (0) */
|
/* output of bit $80 indicates we are ready (1) or busy (0) */
|
||||||
/* no other outputs are used */
|
/* no other outputs are used */
|
||||||
n7751_busy = data >> 7;
|
n7751_busy = data >> 7;
|
||||||
|
@ -448,7 +448,7 @@ static STREAM_UPDATE( buggyboy_stream_update )
|
|||||||
gain0 = BIT(ym2_outputb, 3) ? 1.0 : 2.0;
|
gain0 = BIT(ym2_outputb, 3) ? 1.0 : 2.0;
|
||||||
else
|
else
|
||||||
gain0 = BIT(ym1_outputa, 3) ? 1.0 : 2.0;
|
gain0 = BIT(ym1_outputa, 3) ? 1.0 : 2.0;
|
||||||
|
|
||||||
n1_en = BIT(ym2_outputb, 4);
|
n1_en = BIT(ym2_outputb, 4);
|
||||||
n2_en = BIT(ym2_outputb, 5);
|
n2_en = BIT(ym2_outputb, 5);
|
||||||
|
|
||||||
|
@ -395,7 +395,7 @@ static INTERRUPT_GEN( drill_interrupt )
|
|||||||
/* WRONG,it does something with 60000c & 700002,likely to be called when the player throws the ball.*/
|
/* WRONG,it does something with 60000c & 700002,likely to be called when the player throws the ball.*/
|
||||||
static void irqhandler(running_machine *machine, int irq)
|
static void irqhandler(running_machine *machine, int irq)
|
||||||
{
|
{
|
||||||
// cpu_set_input_line(machine->cpu[0],5,irq ? ASSERT_LINE : CLEAR_LINE);
|
// cpu_set_input_line(machine->cpu[0],5,irq ? ASSERT_LINE : CLEAR_LINE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const ym2610_interface ym2610_config =
|
static const ym2610_interface ym2610_config =
|
||||||
|
@ -84,13 +84,13 @@ static WRITE16_HANDLER( main_sound_latch_w )
|
|||||||
static WRITE8_HANDLER( bingoc_play_w )
|
static WRITE8_HANDLER( bingoc_play_w )
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
---- --x- sound rom banking
|
---- --x- sound rom banking
|
||||||
---- ---x start-stop sample
|
---- ---x start-stop sample
|
||||||
*/
|
*/
|
||||||
UINT8 *upd = memory_region(space->machine, "upd");
|
UINT8 *upd = memory_region(space->machine, "upd");
|
||||||
memcpy(&upd[0x00000], &upd[0x20000 + (((data & 2)>>1) * 0x20000)], 0x20000);
|
memcpy(&upd[0x00000], &upd[0x20000 + (((data & 2)>>1) * 0x20000)], 0x20000);
|
||||||
upd7759_start_w(0, data & 1);
|
upd7759_start_w(0, data & 1);
|
||||||
// printf("%02x\n",data);
|
// printf("%02x\n",data);
|
||||||
}
|
}
|
||||||
|
|
||||||
static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
|
static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||||
|
@ -257,7 +257,7 @@ static VIDEO_UPDATE( bishjan )
|
|||||||
if (layers_ctrl & 1) tilemap_draw(bitmap,cliprect, tmap_1, 0, 0);
|
if (layers_ctrl & 1) tilemap_draw(bitmap,cliprect, tmap_1, 0, 0);
|
||||||
if (layers_ctrl & 2) tilemap_draw(bitmap,cliprect, tmap_2, 0, 0);
|
if (layers_ctrl & 2) tilemap_draw(bitmap,cliprect, tmap_2, 0, 0);
|
||||||
|
|
||||||
// popmessage("SCROLL: %03x,%03x - %03x,%03x DISABLE: %02x", bishjan_scroll_1_x,bishjan_scroll_1_y, bishjan_scroll_2_x,bishjan_scroll_2_y, bishjan_disable);
|
// popmessage("SCROLL: %03x,%03x - %03x,%03x DISABLE: %02x", bishjan_scroll_1_x,bishjan_scroll_1_y, bishjan_scroll_2_x,bishjan_scroll_2_y, bishjan_disable);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -447,7 +447,7 @@ static WRITE8_HANDLER( saklove_outputs_w )
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// popmessage("0: %02x - 1: %02x - 2: %02x - 3: %02x", saklove_outputs[0], saklove_outputs[1], saklove_outputs[2], saklove_outputs[3]);
|
// popmessage("0: %02x - 1: %02x - 2: %02x - 3: %02x", saklove_outputs[0], saklove_outputs[1], saklove_outputs[2], saklove_outputs[3]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static WRITE8_HANDLER( saklove_oki_bank_w )
|
static WRITE8_HANDLER( saklove_oki_bank_w )
|
||||||
@ -992,7 +992,7 @@ Notes:
|
|||||||
HSync - 15.3234kHz
|
HSync - 15.3234kHz
|
||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
ROM_START( saklove )
|
ROM_START( saklove )
|
||||||
ROM_REGION( 0x20000, "main", 0 ) // AM188-EM
|
ROM_REGION( 0x20000, "main", 0 ) // AM188-EM
|
||||||
ROM_LOAD( "1.u23", 0x00000, 0x20000, CRC(02319bfb) SHA1(1a425dcdeecae92d8b7457d1897c700ac7856a9d) )
|
ROM_LOAD( "1.u23", 0x00000, 0x20000, CRC(02319bfb) SHA1(1a425dcdeecae92d8b7457d1897c700ac7856a9d) )
|
||||||
|
@ -102,8 +102,8 @@ static MACHINE_START( btime )
|
|||||||
static WRITE8_HANDLER( audio_nmi_enable_w )
|
static WRITE8_HANDLER( audio_nmi_enable_w )
|
||||||
{
|
{
|
||||||
/* for most games, this serves as the NMI enable for the audio CPU; however,
|
/* for most games, this serves as the NMI enable for the audio CPU; however,
|
||||||
lnc and disco use bit 0 of the first AY-8910's port A instead; many other
|
lnc and disco use bit 0 of the first AY-8910's port A instead; many other
|
||||||
games also write there in addition to this address */
|
games also write there in addition to this address */
|
||||||
if (audio_nmi_enable_type == AUDIO_ENABLE_DIRECT)
|
if (audio_nmi_enable_type == AUDIO_ENABLE_DIRECT)
|
||||||
{
|
{
|
||||||
audio_nmi_enabled = data & 1;
|
audio_nmi_enabled = data & 1;
|
||||||
@ -1238,7 +1238,7 @@ static MACHINE_DRIVER_START( btime )
|
|||||||
MDRV_SCREEN_ADD("main", RASTER)
|
MDRV_SCREEN_ADD("main", RASTER)
|
||||||
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
|
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
|
||||||
MDRV_SCREEN_RAW_PARAMS(HCLK, 384, 8, 248, 272, 8, 248)
|
MDRV_SCREEN_RAW_PARAMS(HCLK, 384, 8, 248, 272, 8, 248)
|
||||||
|
|
||||||
MDRV_MACHINE_START(btime)
|
MDRV_MACHINE_START(btime)
|
||||||
|
|
||||||
MDRV_GFXDECODE(btime)
|
MDRV_GFXDECODE(btime)
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
Cherry Bonus 2001 (c)2000/2001 Dyna
|
Cherry Bonus 2001 (c)2000/2001 Dyna
|
||||||
|
|
||||||
|
|
||||||
Produttore Dyna
|
Produttore Dyna
|
||||||
N.revisione
|
N.revisione
|
||||||
CPU
|
CPU
|
||||||
|
|
||||||
@ -46,37 +46,37 @@ In test mode (c) is 2000
|
|||||||
|
|
||||||
const UINT8 cb2001_decryption_table[256] = {
|
const UINT8 cb2001_decryption_table[256] = {
|
||||||
0xe8,xxxx,xxxx,xxxx,xxxx,0x61,xxxx,xxxx, xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx, /* 00 */
|
0xe8,xxxx,xxxx,xxxx,xxxx,0x61,xxxx,xxxx, xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx, /* 00 */
|
||||||
// pppp ????
|
// pppp ????
|
||||||
xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx, 0x32,xxxx,xxxx,xxxx,0x3a,xxxx,xxxx,0x1f, /* 10 */
|
xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx, 0x32,xxxx,xxxx,xxxx,0x3a,xxxx,xxxx,0x1f, /* 10 */
|
||||||
// pppp pppp ????
|
// pppp pppp ????
|
||||||
xxxx,0x8e,xxxx,0x0f,xxxx,0x49,0xbc,xxxx, xxxx,xxxx,xxxx,0x75,xxxx,xxxx,xxxx,xxxx, /* 20 */
|
xxxx,0x8e,xxxx,0x0f,xxxx,0x49,0xbc,xxxx, xxxx,xxxx,xxxx,0x75,xxxx,xxxx,xxxx,xxxx, /* 20 */
|
||||||
// !!!! ???? ???? ???? pppp
|
// !!!! ???? ???? ???? pppp
|
||||||
0x9d,xxxx,xxxx,xxxx,xxxx,xxxx,0xbe,xxxx, xxxx,xxxx,0x74,xxxx,xxxx,0xa6,0xbf,xxxx, /* 30 */
|
0x9d,xxxx,xxxx,xxxx,xxxx,xxxx,0xbe,xxxx, xxxx,xxxx,0x74,xxxx,xxxx,0xa6,0xbf,xxxx, /* 30 */
|
||||||
// ???? pppp ???? ???? ????
|
// ???? pppp ???? ???? ????
|
||||||
xxxx,0xea,xxxx,xxxx,xxxx,0xb0,xxxx,xxxx, xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx, /* 40 */
|
xxxx,0xea,xxxx,xxxx,xxxx,0xb0,xxxx,xxxx, xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx, /* 40 */
|
||||||
// !!!! gggg
|
// !!!! gggg
|
||||||
xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,0x42,xxxx, xxxx,xxxx,xxxx,xxxx,0xeb,xxxx,xxxx,xxxx, /* 50 */
|
xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,0x42,xxxx, xxxx,xxxx,xxxx,xxxx,0xeb,xxxx,xxxx,xxxx, /* 50 */
|
||||||
// ???? ????
|
// ???? ????
|
||||||
xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx, xxxx,0xa5,xxxx,xxxx,xxxx,xxxx,0xba,xxxx, /* 60 */
|
xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx, xxxx,0xa5,xxxx,xxxx,xxxx,xxxx,0xba,xxxx, /* 60 */
|
||||||
// ???? gggg
|
// ???? gggg
|
||||||
0xc3,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx, 0x72,xxxx,0xf2,xxxx,xxxx,xxxx,xxxx,xxxx, /* 70 */
|
0xc3,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx, 0x72,xxxx,0xf2,xxxx,xxxx,xxxx,xxxx,xxxx, /* 70 */
|
||||||
// pppp ???? ????
|
// pppp ???? ????
|
||||||
xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,0x34, xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx, /* 80 */
|
xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,0x34, xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx, /* 80 */
|
||||||
// ????
|
// ????
|
||||||
xxxx,xxxx,0xe9,xxxx,xxxx,0xbe,xxxx,xxxx, xxxx,xxxx,xxxx,xxxx,0xb9,xxxx,xxxx,xxxx, /* 90 */
|
xxxx,xxxx,0xe9,xxxx,xxxx,0xbe,xxxx,xxxx, xxxx,xxxx,xxxx,xxxx,0xb9,xxxx,xxxx,xxxx, /* 90 */
|
||||||
// ???? ???? pppp
|
// ???? ???? pppp
|
||||||
xxxx,xxxx,xxxx,0x06,0xaa,0x9c,xxxx,0xb8, xxxx,xxxx,0xfc,xxxx,xxxx,xxxx,xxxx,xxxx, /* A0 */
|
xxxx,xxxx,xxxx,0x06,0xaa,0x9c,xxxx,0xb8, xxxx,xxxx,0xfc,xxxx,xxxx,xxxx,xxxx,xxxx, /* A0 */
|
||||||
// ???? ???? ???? !!!! ????
|
// ???? ???? ???? !!!! ????
|
||||||
xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx, xxxx,xxxx,xxxx,xxxx,0x1e,xxxx,0x07,0xcf, /* B0 */
|
xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx, xxxx,xxxx,xxxx,xxxx,0x1e,xxxx,0x07,0xcf, /* B0 */
|
||||||
// ???? ???? ????
|
// ???? ???? ????
|
||||||
xxxx,xxxx,0xee,xxxx,xxxx,0xe2,xxxx,xxxx, xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,0xa4,xxxx, /* C0 */
|
xxxx,xxxx,0xee,xxxx,xxxx,0xe2,xxxx,xxxx, xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,0xa4,xxxx, /* C0 */
|
||||||
// ???? pppp ????
|
// ???? pppp ????
|
||||||
xxxx,xxxx,0x46,xxxx,0x60,xxxx,xxxx,xxxx, 0x88,xxxx,xxxx,xxxx,xxxx,0xfa,0xc7,xxxx, /* D0 */
|
xxxx,xxxx,0x46,xxxx,0x60,xxxx,xxxx,xxxx, 0x88,xxxx,xxxx,xxxx,xxxx,0xfa,0xc7,xxxx, /* D0 */
|
||||||
// pppp ???? pppp ???? !!!!
|
// pppp ???? pppp ???? !!!!
|
||||||
0x8a,xxxx,xxxx,0xc6,xxxx,xxxx,xxxx,xxxx, xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx, /* E0 */
|
0x8a,xxxx,xxxx,0xc6,xxxx,xxxx,xxxx,xxxx, xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx, /* E0 */
|
||||||
// ???? !!!!
|
// ???? !!!!
|
||||||
xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx, xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx, /* F0 */
|
xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx, xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx, /* F0 */
|
||||||
//
|
//
|
||||||
};
|
};
|
||||||
|
|
||||||
/* robiza notes:
|
/* robiza notes:
|
||||||
@ -99,7 +99,7 @@ c2 -> ee (out dw,al)
|
|||||||
probably:
|
probably:
|
||||||
|
|
||||||
2b -> conditional jmp for sure (75)
|
2b -> conditional jmp for sure (75)
|
||||||
36 -> be
|
36 -> be
|
||||||
9c -> it's a counter (like mov cw,#value) -> not sure the register (cw,bw,....) -> b9 (cw)
|
9c -> it's a counter (like mov cw,#value) -> not sure the register (cw,bw,....) -> b9 (cw)
|
||||||
c5 -> 75 (loop?)
|
c5 -> 75 (loop?)
|
||||||
|
|
||||||
@ -150,7 +150,7 @@ INPUT_PORTS_END
|
|||||||
|
|
||||||
static INTERRUPT_GEN( vblank_irq )
|
static INTERRUPT_GEN( vblank_irq )
|
||||||
{
|
{
|
||||||
// cpu_set_input_line_and_vector(device,0,HOLD_LINE,0x08/4);
|
// cpu_set_input_line_and_vector(device,0,HOLD_LINE,0x08/4);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const nec_config cb2001_config = { cb2001_decryption_table, };
|
static const nec_config cb2001_config = { cb2001_decryption_table, };
|
||||||
|
@ -19,12 +19,12 @@ This one should be a simple project, it uses a Z80 and a Seta graphics chipset a
|
|||||||
|
|
||||||
There are 3 banks of dipswitches, 4,8,8. Battery backup of a 4364 cpu ram. 2 6264 video rams. All 5 eproms are 27512
|
There are 3 banks of dipswitches, 4,8,8. Battery backup of a 4364 cpu ram. 2 6264 video rams. All 5 eproms are 27512
|
||||||
|
|
||||||
Chip checksum
|
Chip checksum
|
||||||
cpu $ba0d
|
cpu $ba0d
|
||||||
cha0 $2ed7
|
cha0 $2ed7
|
||||||
cha1 $dc81
|
cha1 $dc81
|
||||||
cha2 $cca8
|
cha2 $cca8
|
||||||
cha3 $10d8
|
cha3 $10d8
|
||||||
|
|
||||||
2 color proms for the output. will get those dumped as well.
|
2 color proms for the output. will get those dumped as well.
|
||||||
|
|
||||||
@ -43,7 +43,7 @@ static WRITE8_HANDLER( output_0_w )
|
|||||||
//---- --x- divider?
|
//---- --x- divider?
|
||||||
coin_lockout_w(0,~data & 1);
|
coin_lockout_w(0,~data & 1);
|
||||||
|
|
||||||
// coin_counter_w(0,~data & 1);
|
// coin_counter_w(0,~data & 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static UINT8 hop_io,bell_io;
|
static UINT8 hop_io,bell_io;
|
||||||
@ -92,8 +92,8 @@ static INPUT_PORTS_START( cchance )
|
|||||||
PORT_START("SP")
|
PORT_START("SP")
|
||||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Opt 1") PORT_CODE(KEYCODE_A)
|
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Opt 1") PORT_CODE(KEYCODE_A)
|
||||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Opt 2") PORT_CODE(KEYCODE_S)
|
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Opt 2") PORT_CODE(KEYCODE_S)
|
||||||
// PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Payout") PORT_CODE(KEYCODE_D)
|
// PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Payout") PORT_CODE(KEYCODE_D)
|
||||||
// PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Hop Over") PORT_CODE(KEYCODE_F)
|
// PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Hop Over") PORT_CODE(KEYCODE_F)
|
||||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Slottle") PORT_CODE(KEYCODE_Z)
|
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Slottle") PORT_CODE(KEYCODE_Z)
|
||||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Drop SW") PORT_CODE(KEYCODE_H)
|
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Drop SW") PORT_CODE(KEYCODE_H)
|
||||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Reset Key") PORT_CODE(KEYCODE_J)
|
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Reset Key") PORT_CODE(KEYCODE_J)
|
||||||
|
@ -7943,7 +7943,7 @@ Notes:
|
|||||||
YM2413- clock 3.579545MHz [28.63636/8]
|
YM2413- clock 3.579545MHz [28.63636/8]
|
||||||
VSync - 60.8516Hz
|
VSync - 60.8516Hz
|
||||||
HSync - 15.2782kHz
|
HSync - 15.2782kHz
|
||||||
|
|
||||||
Hardware info by Guru
|
Hardware info by Guru
|
||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
@ -308,7 +308,7 @@ static const gfx_layout tilelayout =
|
|||||||
|
|
||||||
static const UINT32 objlayout_xoffset[64] =
|
static const UINT32 objlayout_xoffset[64] =
|
||||||
{
|
{
|
||||||
STEP8(7*8,1), STEP8(6*8,1), STEP8(5*8,1), STEP8(4*8,1),
|
STEP8(7*8,1), STEP8(6*8,1), STEP8(5*8,1), STEP8(4*8,1),
|
||||||
STEP8(3*8,1), STEP8(2*8,1), STEP8(1*8,1), STEP8(0*8,1)
|
STEP8(3*8,1), STEP8(2*8,1), STEP8(1*8,1), STEP8(0*8,1)
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -384,7 +384,7 @@ static MACHINE_DRIVER_START( decocass )
|
|||||||
|
|
||||||
MDRV_MACHINE_START(decocass)
|
MDRV_MACHINE_START(decocass)
|
||||||
MDRV_MACHINE_RESET(decocass)
|
MDRV_MACHINE_RESET(decocass)
|
||||||
|
|
||||||
MDRV_DECOCASS_TAPE_ADD("cassette")
|
MDRV_DECOCASS_TAPE_ADD("cassette")
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
|
@ -100,18 +100,18 @@ static READ8_HANDLER( input_r )
|
|||||||
static WRITE8_HANDLER( output_w )
|
static WRITE8_HANDLER( output_w )
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
---- x--- refill meter [4]
|
---- x--- refill meter [4]
|
||||||
---- x--- token out meter [5]
|
---- x--- token out meter [5]
|
||||||
---- x--- token in meter [6]
|
---- x--- token in meter [6]
|
||||||
---- x--- cash out meter [7]
|
---- x--- cash out meter [7]
|
||||||
---- -x-- coin out (meter) [0-3]
|
---- -x-- coin out (meter) [0-3]
|
||||||
---- -x-- coin lockout token [4]
|
---- -x-- coin lockout token [4]
|
||||||
---- -x-- coin counter (meter) [5]
|
---- -x-- coin counter (meter) [5]
|
||||||
---- --x- coin lockout [0-3]
|
---- --x- coin lockout [0-3]
|
||||||
---- ---x lamp [0-6]
|
---- ---x lamp [0-6]
|
||||||
*/
|
*/
|
||||||
io_port[offset] = data;
|
io_port[offset] = data;
|
||||||
// popmessage("%02x|%02x|%02x|%02x|%02x|%02x|%02x|%02x|",io_port[0],io_port[1],io_port[2],io_port[3],io_port[4],io_port[5],io_port[6],io_port[7]);
|
// popmessage("%02x|%02x|%02x|%02x|%02x|%02x|%02x|%02x|",io_port[0],io_port[1],io_port[2],io_port[3],io_port[4],io_port[5],io_port[6],io_port[7]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static ADDRESS_MAP_START( memmap, ADDRESS_SPACE_PROGRAM, 8 )
|
static ADDRESS_MAP_START( memmap, ADDRESS_SPACE_PROGRAM, 8 )
|
||||||
|
@ -54,8 +54,8 @@ static WRITE8_HANDLER( p2_w )
|
|||||||
static WRITE8_HANDLER( prog_w )
|
static WRITE8_HANDLER( prog_w )
|
||||||
{
|
{
|
||||||
/* this is written via an out to port 4, but unless there is an 8243 port expander,
|
/* this is written via an out to port 4, but unless there is an 8243 port expander,
|
||||||
it is more likely that the port 4 output is used to toggle the PROG line; see
|
it is more likely that the port 4 output is used to toggle the PROG line; see
|
||||||
videopkr */
|
videopkr */
|
||||||
prog = data;
|
prog = data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -597,9 +597,9 @@ static WRITE8_HANDLER( dac_w )
|
|||||||
UINT16 dac_data = (dac_msb << 8) | data;
|
UINT16 dac_data = (dac_msb << 8) | data;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
The 8-bit DAC modulates the 10-bit DAC.
|
The 8-bit DAC modulates the 10-bit DAC.
|
||||||
Shift down to prevent clipping.
|
Shift down to prevent clipping.
|
||||||
*/
|
*/
|
||||||
dac_signed_data_16_w(0, (dac_vol * dac_data) >> 1);
|
dac_signed_data_16_w(0, (dac_vol * dac_data) >> 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -684,8 +684,8 @@ static DRIVER_INIT( esripsys )
|
|||||||
memory_set_bankptr(machine, 4, &ROM[0x0000+0x8000]);
|
memory_set_bankptr(machine, 4, &ROM[0x0000+0x8000]);
|
||||||
|
|
||||||
/* TODO: Finish me! */
|
/* TODO: Finish me! */
|
||||||
// state_save_register_global_pointer(fdt_a, FDT_RAM_SIZE);
|
// state_save_register_global_pointer(fdt_a, FDT_RAM_SIZE);
|
||||||
// state_save_register_global_pointer(fdt_b, FDT_RAM_SIZE);
|
// state_save_register_global_pointer(fdt_b, FDT_RAM_SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static NVRAM_HANDLER( esripsys )
|
static NVRAM_HANDLER( esripsys )
|
||||||
@ -987,6 +987,6 @@ ROM_END
|
|||||||
* Game drivers
|
* Game drivers
|
||||||
*
|
*
|
||||||
*************************************/
|
*************************************/
|
||||||
|
|
||||||
GAME( 1985, turbosub, 0, esripsys, turbosub, esripsys, ROT0, "Entertainment Sciences", "Turbo Sub (prototype rev. TSCA)", GAME_IMPERFECT_SOUND )
|
GAME( 1985, turbosub, 0, esripsys, turbosub, esripsys, ROT0, "Entertainment Sciences", "Turbo Sub (prototype rev. TSCA)", GAME_IMPERFECT_SOUND )
|
||||||
GAME( 1985, turbosba, turbosub, esripsys, turbosub, esripsys, ROT0, "Entertainment Sciences", "Turbo Sub (prototype rev. TSC6)", GAME_IMPERFECT_SOUND )
|
GAME( 1985, turbosba, turbosub, esripsys, turbosub, esripsys, ROT0, "Entertainment Sciences", "Turbo Sub (prototype rev. TSC6)", GAME_IMPERFECT_SOUND )
|
||||||
|
@ -3025,7 +3025,7 @@ ROM_END
|
|||||||
* The letter "B" is silkscreened in the P12 corner (on right side of
|
* The letter "B" is silkscreened in the P12 corner (on right side of
|
||||||
the edge connector).
|
the edge connector).
|
||||||
* Also, the three Z80's are located on the opposite side of the edge connector and
|
* Also, the three Z80's are located on the opposite side of the edge connector and
|
||||||
they are stacked in a column. (The Z80's are oriented vertically instead of
|
they are stacked in a column. (The Z80's are oriented vertically instead of
|
||||||
horizontal as the other chips are.)
|
horizontal as the other chips are.)
|
||||||
* The 4th edition TM-203 and SP-203 manuals cover this board.
|
* The 4th edition TM-203 and SP-203 manuals cover this board.
|
||||||
*/
|
*/
|
||||||
|
@ -5045,7 +5045,7 @@ GAME( 1981, frogf, frogger, frogf, frogger, froggers, ROT90, "Falcon",
|
|||||||
GAME( 1981, frogg, frogger, galaxian, frogg, frogg, ROT90, "bootleg", "Frog (Galaxian hardware)", GAME_SUPPORTS_SAVE )
|
GAME( 1981, frogg, frogger, galaxian, frogg, frogg, ROT90, "bootleg", "Frog (Galaxian hardware)", GAME_SUPPORTS_SAVE )
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Turtles based hardware
|
Turtles based hardware
|
||||||
|
|
||||||
CPU/Video Board: KT-4108-2
|
CPU/Video Board: KT-4108-2
|
||||||
|
@ -584,8 +584,8 @@
|
|||||||
- Added common MC6845 device interface.
|
- Added common MC6845 device interface.
|
||||||
- Merged witchcrd and sloco93 machine drivers.
|
- Merged witchcrd and sloco93 machine drivers.
|
||||||
- Added/corrected the 50/60 Hz. DIP switches to all games.
|
- Added/corrected the 50/60 Hz. DIP switches to all games.
|
||||||
The 50hz mode needs to be corrected. Some games as most bsuerte sets have
|
The 50hz mode needs to be corrected. Some games as most bsuerte sets have
|
||||||
the 50/60 Hz. DIP switch connection patched.
|
the 50/60 Hz. DIP switch connection patched.
|
||||||
|
|
||||||
|
|
||||||
TODO:
|
TODO:
|
||||||
|
@ -161,19 +161,19 @@ static ADDRESS_MAP_START( ncb3_map, ADDRESS_SPACE_PROGRAM, 8 )
|
|||||||
AM_RANGE(0xf820, 0xf823) AM_DEVREADWRITE(PPI8255, "ppi8255_2", ppi8255_r, ppi8255_w) /* Input/Output Ports */
|
AM_RANGE(0xf820, 0xf823) AM_DEVREADWRITE(PPI8255, "ppi8255_2", ppi8255_r, ppi8255_w) /* Input/Output Ports */
|
||||||
AM_RANGE(0xf830, 0xf830) AM_READWRITE(ay8910_read_port_0_r,ay8910_write_port_0_w)
|
AM_RANGE(0xf830, 0xf830) AM_READWRITE(ay8910_read_port_0_r,ay8910_write_port_0_w)
|
||||||
AM_RANGE(0xf840, 0xf840) AM_WRITE(ay8910_control_port_0_w)
|
AM_RANGE(0xf840, 0xf840) AM_WRITE(ay8910_control_port_0_w)
|
||||||
// AM_RANGE(0xf850, 0xf850) AM_WRITE(ncb3_p1_flip_w) // need flip?
|
// AM_RANGE(0xf850, 0xf850) AM_WRITE(ncb3_p1_flip_w) // need flip?
|
||||||
// AM_RANGE(0xf860, 0xf860) AM_WRITE(ncb3_p2_flip_w) // need flip?
|
// AM_RANGE(0xf860, 0xf860) AM_WRITE(ncb3_p2_flip_w) // need flip?
|
||||||
AM_RANGE(0xf870, 0xf870) AM_WRITE(sn76496_0_w) /* guess... device is initialized, but doesn't seems to be used.*/
|
AM_RANGE(0xf870, 0xf870) AM_WRITE(sn76496_0_w) /* guess... device is initialized, but doesn't seems to be used.*/
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static ADDRESS_MAP_START( ncb3_readwriteport, ADDRESS_SPACE_IO, 8 )
|
static ADDRESS_MAP_START( ncb3_readwriteport, ADDRESS_SPACE_IO, 8 )
|
||||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||||
// AM_RANGE(0x00, 0x00) AM_READ(ncb3_unkread_r) // read from 0x00 when controls set1 is used...
|
// AM_RANGE(0x00, 0x00) AM_READ(ncb3_unkread_r) // read from 0x00 when controls set1 is used...
|
||||||
// AM_RANGE(0x02, 0x02) AM_READ(ncb3_unkread_r) // read from 0x02 when controls set2 is used...
|
// AM_RANGE(0x02, 0x02) AM_READ(ncb3_unkread_r) // read from 0x02 when controls set2 is used...
|
||||||
// AM_RANGE(0x06, 0x06) AM_READ(ncb3_unkread_r) // unknown...
|
// AM_RANGE(0x06, 0x06) AM_READ(ncb3_unkread_r) // unknown...
|
||||||
// AM_RANGE(0x08, 0x08) AM_READ(ncb3_unkread_r) // unknown...
|
// AM_RANGE(0x08, 0x08) AM_READ(ncb3_unkread_r) // unknown...
|
||||||
AM_RANGE(0x10, 0x10) AM_READ_PORT("DSW5") /* confirmed for ncb3 */
|
AM_RANGE(0x10, 0x10) AM_READ_PORT("DSW5") /* confirmed for ncb3 */
|
||||||
// AM_RANGE(0x81, 0x81) ---> large writes.
|
// AM_RANGE(0x81, 0x81) ---> large writes.
|
||||||
|
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
@ -3110,7 +3110,7 @@ static void do_blockswaps(UINT8* ROM)
|
|||||||
0x0000, 0x4800, 0x2000, 0x5000,
|
0x0000, 0x4800, 0x2000, 0x5000,
|
||||||
0x1000, 0x7800, 0x6000, 0x3800,
|
0x1000, 0x7800, 0x6000, 0x3800,
|
||||||
/* bit below, I'm not sure, no exact match, but only the first ones matter,
|
/* bit below, I'm not sure, no exact match, but only the first ones matter,
|
||||||
as the is just garbage */
|
as the is just garbage */
|
||||||
0xc000, 0xc800, 0xd000, 0xd800,
|
0xc000, 0xc800, 0xd000, 0xd800,
|
||||||
0xe000, 0xe800, 0xf000, 0xf800,
|
0xe000, 0xe800, 0xf000, 0xf800,
|
||||||
0x8000, 0x8800, 0x9000, 0x9800,
|
0x8000, 0x8800, 0x9000, 0x9800,
|
||||||
@ -3237,7 +3237,7 @@ static DRIVER_INIT(cm)
|
|||||||
UINT8 *ROM = memory_region(machine, "main");
|
UINT8 *ROM = memory_region(machine, "main");
|
||||||
|
|
||||||
/* forcing PPI mode 0 for all, and A, B & C as input.
|
/* forcing PPI mode 0 for all, and A, B & C as input.
|
||||||
the mixed modes 2-0 are not working properly.
|
the mixed modes 2-0 are not working properly.
|
||||||
*/
|
*/
|
||||||
ROM[0x0021] = 0x9b;
|
ROM[0x0021] = 0x9b;
|
||||||
ROM[0x0025] = 0x9b;
|
ROM[0x0025] = 0x9b;
|
||||||
@ -3248,7 +3248,7 @@ static DRIVER_INIT(cmv4)
|
|||||||
UINT8 *ROM = memory_region(machine, "main");
|
UINT8 *ROM = memory_region(machine, "main");
|
||||||
|
|
||||||
/* forcing PPI mode 0 for all, and A, B & C as input.
|
/* forcing PPI mode 0 for all, and A, B & C as input.
|
||||||
the mixed modes 2-0 are not working properly.
|
the mixed modes 2-0 are not working properly.
|
||||||
*/
|
*/
|
||||||
ROM[0x0209] = 0x9b;
|
ROM[0x0209] = 0x9b;
|
||||||
ROM[0x020d] = 0x9b;
|
ROM[0x020d] = 0x9b;
|
||||||
@ -3259,7 +3259,7 @@ static DRIVER_INIT(cmast91)
|
|||||||
UINT8 *ROM = memory_region(machine, "main");
|
UINT8 *ROM = memory_region(machine, "main");
|
||||||
|
|
||||||
/* forcing PPI mode 0 for all, and A, B & C as input.
|
/* forcing PPI mode 0 for all, and A, B & C as input.
|
||||||
the mixed modes 2-0 are not working properly.
|
the mixed modes 2-0 are not working properly.
|
||||||
*/
|
*/
|
||||||
ROM[0x0070] = 0x9b;
|
ROM[0x0070] = 0x9b;
|
||||||
ROM[0x0a92] = 0x9b;
|
ROM[0x0a92] = 0x9b;
|
||||||
|
@ -204,43 +204,43 @@ static WRITE32_HANDLER( gstream_oki_banking_w )
|
|||||||
{
|
{
|
||||||
/* OKI BANKING (still far from perfect, based on game behaviour)
|
/* OKI BANKING (still far from perfect, based on game behaviour)
|
||||||
|
|
||||||
The two okis can indifferently play music or samples and are switched on the fly during game
|
The two okis can indifferently play music or samples and are switched on the fly during game
|
||||||
This is a preliminary table of the banks:
|
This is a preliminary table of the banks:
|
||||||
|
|
||||||
BANK MUSIC SAMPLES
|
BANK MUSIC SAMPLES
|
||||||
0 X
|
0 X
|
||||||
1 X
|
1 X
|
||||||
2 X
|
2 X
|
||||||
3 X
|
3 X
|
||||||
4 X
|
4 X
|
||||||
5 X
|
5 X
|
||||||
6 X
|
6 X
|
||||||
7 X
|
7 X
|
||||||
|
|
||||||
Two nibbles are used in this handler: (data & 0xf) and ((data >> 4) & 0xf)
|
Two nibbles are used in this handler: (data & 0xf) and ((data >> 4) & 0xf)
|
||||||
The values for the first nibble are the followings and should map the 8 oki banks:
|
The values for the first nibble are the followings and should map the 8 oki banks:
|
||||||
- 0x6, 0x7, 0x9, 0xa, 0xb, 0xd, 0xe, 0xf
|
- 0x6, 0x7, 0x9, 0xa, 0xb, 0xd, 0xe, 0xf
|
||||||
The values for the second nibble are the followings and should probably be used too:
|
The values for the second nibble are the followings and should probably be used too:
|
||||||
- 0x6, 0x9, 0xa
|
- 0x6, 0x9, 0xa
|
||||||
|
|
||||||
Same values are redudant, for example:
|
Same values are redudant, for example:
|
||||||
level 2: data = 0x99
|
level 2: data = 0x99
|
||||||
level 6: data = 0x99
|
level 6: data = 0x99
|
||||||
(this means same background music for the two levels - it could be correct, though)
|
(this means same background music for the two levels - it could be correct, though)
|
||||||
|
|
||||||
Also with current implementation, using only (data & 0xf), we have to force some values
|
Also with current implementation, using only (data & 0xf), we have to force some values
|
||||||
manually, because the correspondent places in the table are already used
|
manually, because the correspondent places in the table are already used
|
||||||
|
|
||||||
Musics order is completely guessed but close to what the original PCB game should be */
|
Musics order is completely guessed but close to what the original PCB game should be */
|
||||||
|
|
||||||
static const int bank_table_0[16] = { -1, -1, -1, -1, -1, -1, 0, 0, -1, 6, 0, 5, -1, 0, 0, 0 };
|
static const int bank_table_0[16] = { -1, -1, -1, -1, -1, -1, 0, 0, -1, 6, 0, 5, -1, 0, 0, 0 };
|
||||||
static const int bank_table_1[16] = { -1, -1, -1, -1, -1, -1, 2, 2, -1, 0, 0, 4, -1, 1, 1, 1 };
|
static const int bank_table_1[16] = { -1, -1, -1, -1, -1, -1, 2, 2, -1, 0, 0, 4, -1, 1, 1, 1 };
|
||||||
|
|
||||||
static int bank_0 = 0;
|
static int bank_0 = 0;
|
||||||
static int bank_1 = 0;
|
static int bank_1 = 0;
|
||||||
|
|
||||||
//popmessage("oki_0 banking value = %X\noki_1 banking value = %X\n",data & 0xf,(data >> 4) & 0xf);
|
//popmessage("oki_0 banking value = %X\noki_1 banking value = %X\n",data & 0xf,(data >> 4) & 0xf);
|
||||||
|
|
||||||
bank_0 = bank_table_0[data & 0xf];
|
bank_0 = bank_table_0[data & 0xf];
|
||||||
bank_1 = bank_table_1[data & 0xf]; // (data >> 4) & 0xf ??
|
bank_1 = bank_table_1[data & 0xf]; // (data >> 4) & 0xf ??
|
||||||
|
|
||||||
@ -253,14 +253,14 @@ static WRITE32_HANDLER( gstream_oki_banking_w )
|
|||||||
|
|
||||||
if (data == 0x9b)
|
if (data == 0x9b)
|
||||||
{
|
{
|
||||||
bank_0 = 7; // level 7 music
|
bank_0 = 7; // level 7 music
|
||||||
bank_1 = 0; // level 7 samples
|
bank_1 = 0; // level 7 samples
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data == 0x9f)
|
if (data == 0x9f)
|
||||||
{
|
{
|
||||||
bank_0 = 0; // end sequence samples
|
bank_0 = 0; // end sequence samples
|
||||||
bank_1 = 3; // end sequence music
|
bank_1 = 3; // end sequence music
|
||||||
}
|
}
|
||||||
|
|
||||||
okim6295_set_bank_base(0, bank_0 * 0x40000);
|
okim6295_set_bank_base(0, bank_0 * 0x40000);
|
||||||
@ -276,7 +276,7 @@ static ADDRESS_MAP_START( gstream_io, ADDRESS_SPACE_IO, 32 )
|
|||||||
AM_RANGE(0x4000, 0x4003) AM_READ_PORT("IN0")
|
AM_RANGE(0x4000, 0x4003) AM_READ_PORT("IN0")
|
||||||
AM_RANGE(0x4010, 0x4013) AM_READ_PORT("IN1")
|
AM_RANGE(0x4010, 0x4013) AM_READ_PORT("IN1")
|
||||||
AM_RANGE(0x4020, 0x4023) AM_READ_PORT("IN2") // extra coin switches etc
|
AM_RANGE(0x4020, 0x4023) AM_READ_PORT("IN2") // extra coin switches etc
|
||||||
AM_RANGE(0x4030, 0x4033) AM_WRITE(gstream_oki_banking_w) // oki banking
|
AM_RANGE(0x4030, 0x4033) AM_WRITE(gstream_oki_banking_w) // oki banking
|
||||||
AM_RANGE(0x4040, 0x4043) AM_WRITE(gstream_oki_4040_w) // ??
|
AM_RANGE(0x4040, 0x4043) AM_WRITE(gstream_oki_4040_w) // ??
|
||||||
AM_RANGE(0x4050, 0x4053) AM_READWRITE(gstream_oki_1_r, gstream_oki_1_w) // music and samples
|
AM_RANGE(0x4050, 0x4053) AM_READWRITE(gstream_oki_1_r, gstream_oki_1_w) // music and samples
|
||||||
AM_RANGE(0x4060, 0x4063) AM_READWRITE(gstream_oki_0_r, gstream_oki_0_w) // music and samples
|
AM_RANGE(0x4060, 0x4063) AM_READWRITE(gstream_oki_0_r, gstream_oki_0_w) // music and samples
|
||||||
|
@ -1307,12 +1307,12 @@ ROM_START( striv )
|
|||||||
ROM_REGION( 0x10000, "audio", 0 )
|
ROM_REGION( 0x10000, "audio", 0 )
|
||||||
ROM_LOAD( "snd.5a", 0x0000, 0x1000, CRC(b7ddf84f) SHA1(fa4cc0b2e5a88c82c62492c03e97ac6aa8a905b1) )
|
ROM_LOAD( "snd.5a", 0x0000, 0x1000, CRC(b7ddf84f) SHA1(fa4cc0b2e5a88c82c62492c03e97ac6aa8a905b1) )
|
||||||
|
|
||||||
ROM_REGION( 0x4000, "gfx1", ROMREGION_DISPOSE )
|
ROM_REGION( 0x4000, "gfx1", ROMREGION_DISPOSE )
|
||||||
ROM_LOAD( "chr3.5a", 0x0000, 0x1000, CRC(8f982a9c) SHA1(dd6f454dfd3e03d008080890881cfafd79758a40) )
|
ROM_LOAD( "chr3.5a", 0x0000, 0x1000, CRC(8f982a9c) SHA1(dd6f454dfd3e03d008080890881cfafd79758a40) )
|
||||||
ROM_LOAD( "chr2.4a", 0x1000, 0x1000, CRC(8f982a9c) SHA1(dd6f454dfd3e03d008080890881cfafd79758a40) )
|
ROM_LOAD( "chr2.4a", 0x1000, 0x1000, CRC(8f982a9c) SHA1(dd6f454dfd3e03d008080890881cfafd79758a40) )
|
||||||
ROM_LOAD( "chr1.2a", 0x2000, 0x1000, CRC(7ad4358e) SHA1(dd3a03c78fa8bf435e9905b901dc5a9987cd52e4) )
|
ROM_LOAD( "chr1.2a", 0x2000, 0x1000, CRC(7ad4358e) SHA1(dd3a03c78fa8bf435e9905b901dc5a9987cd52e4) )
|
||||||
ROM_LOAD( "chr0.1a", 0x3000, 0x1000, CRC(8f60229b) SHA1(96a888ae02797a205e1c6202395d3b42a820ad4d) )
|
ROM_LOAD( "chr0.1a", 0x3000, 0x1000, CRC(8f60229b) SHA1(96a888ae02797a205e1c6202395d3b42a820ad4d) )
|
||||||
|
|
||||||
ROM_REGION( 0x80000, "user1", ROMREGION_ERASEFF ) /* Question roms */
|
ROM_REGION( 0x80000, "user1", ROMREGION_ERASEFF ) /* Question roms */
|
||||||
ROM_LOAD( "rom.u6", 0x00000, 0x8000, CRC(a32d7a28) SHA1(fbad0b5c9f1dbeb4f245a2198248c18ceae556fa) )
|
ROM_LOAD( "rom.u6", 0x00000, 0x8000, CRC(a32d7a28) SHA1(fbad0b5c9f1dbeb4f245a2198248c18ceae556fa) )
|
||||||
ROM_LOAD( "rom.u7", 0x08000, 0x8000, CRC(bc44ae18) SHA1(815cc3c87b89fc702a9ca88d5117ab46464b53c0) )
|
ROM_LOAD( "rom.u7", 0x08000, 0x8000, CRC(bc44ae18) SHA1(815cc3c87b89fc702a9ca88d5117ab46464b53c0) )
|
||||||
|
@ -63,7 +63,7 @@ static VIDEO_UPDATE(jongkyo)
|
|||||||
// good mahjong tiles
|
// good mahjong tiles
|
||||||
data3 = 0x0f; // we're missing 2 bits.. there must be another piece of video ram somewhere or we can't use all the colours (6bpp).. banked somehow?
|
data3 = 0x0f; // we're missing 2 bits.. there must be another piece of video ram somewhere or we can't use all the colours (6bpp).. banked somehow?
|
||||||
// good girl tiles
|
// good girl tiles
|
||||||
// data3 = 0x00; // we're missing 2 bits.. there must be another piece of video ram somewhere or we can't use all the colours (6bpp).. banked somehow?
|
// data3 = 0x00; // we're missing 2 bits.. there must be another piece of video ram somewhere or we can't use all the colours (6bpp).. banked somehow?
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -107,7 +107,7 @@ static UINT8 mux_data;
|
|||||||
static WRITE8_HANDLER( mux_w )
|
static WRITE8_HANDLER( mux_w )
|
||||||
{
|
{
|
||||||
mux_data = ~data;
|
mux_data = ~data;
|
||||||
// printf("%02x\n",mux_data);
|
// printf("%02x\n",mux_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
static WRITE8_HANDLER( jongkyo_coin_counter_w )
|
static WRITE8_HANDLER( jongkyo_coin_counter_w )
|
||||||
@ -133,7 +133,7 @@ static READ8_HANDLER( input_1p_r )
|
|||||||
case 0x10: return input_port_read(space->machine, "PL1_5") | cr_clear;
|
case 0x10: return input_port_read(space->machine, "PL1_5") | cr_clear;
|
||||||
case 0x20: return input_port_read(space->machine, "PL1_6") | cr_clear;
|
case 0x20: return input_port_read(space->machine, "PL1_6") | cr_clear;
|
||||||
}
|
}
|
||||||
// printf("%04x\n",mux_data);
|
// printf("%04x\n",mux_data);
|
||||||
|
|
||||||
return (input_port_read(space->machine, "PL1_1") & input_port_read(space->machine, "PL1_2") & input_port_read(space->machine, "PL1_3") &
|
return (input_port_read(space->machine, "PL1_1") & input_port_read(space->machine, "PL1_2") & input_port_read(space->machine, "PL1_3") &
|
||||||
input_port_read(space->machine, "PL1_4") & input_port_read(space->machine, "PL1_5") & input_port_read(space->machine, "PL1_6")) | cr_clear;//input_port_read(space->machine, "PL1_0") && ;
|
input_port_read(space->machine, "PL1_4") & input_port_read(space->machine, "PL1_5") & input_port_read(space->machine, "PL1_6")) | cr_clear;//input_port_read(space->machine, "PL1_0") && ;
|
||||||
@ -154,7 +154,7 @@ static READ8_HANDLER( input_2p_r )
|
|||||||
case 0x10: return input_port_read(space->machine, "PL2_5") | coin_port;
|
case 0x10: return input_port_read(space->machine, "PL2_5") | coin_port;
|
||||||
case 0x20: return input_port_read(space->machine, "PL2_6") | coin_port;
|
case 0x20: return input_port_read(space->machine, "PL2_6") | coin_port;
|
||||||
}
|
}
|
||||||
// printf("%04x\n",mux_data);
|
// printf("%04x\n",mux_data);
|
||||||
|
|
||||||
return (input_port_read(space->machine, "PL2_1") & input_port_read(space->machine, "PL2_2") & input_port_read(space->machine, "PL2_3") &
|
return (input_port_read(space->machine, "PL2_1") & input_port_read(space->machine, "PL2_2") & input_port_read(space->machine, "PL2_3") &
|
||||||
input_port_read(space->machine, "PL2_4") & input_port_read(space->machine, "PL2_5") & input_port_read(space->machine, "PL2_6")) | coin_port;//input_port_read(space->machine, "PL1_0") && ;
|
input_port_read(space->machine, "PL2_4") & input_port_read(space->machine, "PL2_5") & input_port_read(space->machine, "PL2_6")) | coin_port;//input_port_read(space->machine, "PL1_0") && ;
|
||||||
|
@ -2,13 +2,13 @@
|
|||||||
|
|
||||||
Lucky Girl (newer 1991 version on different hardware?)
|
Lucky Girl (newer 1991 version on different hardware?)
|
||||||
-- there is an early 'Lucky Girl' which appears to be running on Nichibutsu like hardware.
|
-- there is an early 'Lucky Girl' which appears to be running on Nichibutsu like hardware.
|
||||||
|
|
||||||
The program rom extracted from the Z180 also refers to this as Lucky 74..
|
The program rom extracted from the Z180 also refers to this as Lucky 74..
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Lucky Girl
|
Lucky Girl
|
||||||
Wing 1991
|
Wing 1991
|
||||||
|
|
||||||
@ -41,7 +41,7 @@
|
|||||||
1x 06B30P 40-pin PDIP Unknown
|
1x 06B30P 40-pin PDIP Unknown
|
||||||
1x 101810P 64-pin SDIP Unknown
|
1x 101810P 64-pin SDIP Unknown
|
||||||
1x HG62E11B10P 64-pin SDIP Hitachi gate array (custom)
|
1x HG62E11B10P 64-pin SDIP Hitachi gate array (custom)
|
||||||
1x CPU module 90-pin SDIP
|
1x CPU module 90-pin SDIP
|
||||||
|
|
||||||
Others
|
Others
|
||||||
|
|
||||||
@ -69,19 +69,19 @@
|
|||||||
|
|
||||||
Reset switch cuts power supply going to Video/Work RAM.
|
Reset switch cuts power supply going to Video/Work RAM.
|
||||||
|
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include "driver.h"
|
#include "driver.h"
|
||||||
#include "cpu/z180/z180.h"
|
#include "cpu/z180/z180.h"
|
||||||
|
|
||||||
|
|
||||||
static ADDRESS_MAP_START( mainmap, ADDRESS_SPACE_PROGRAM, 8 )
|
static ADDRESS_MAP_START( mainmap, ADDRESS_SPACE_PROGRAM, 8 )
|
||||||
AM_RANGE(0x00000, 0x03fff) AM_ROM
|
AM_RANGE(0x00000, 0x03fff) AM_ROM
|
||||||
AM_RANGE(0x10000, 0x1ffff) AM_READ(SMH_BANK1)
|
AM_RANGE(0x10000, 0x1ffff) AM_READ(SMH_BANK1)
|
||||||
AM_RANGE(0x0d800, 0x0dfff) AM_RAM
|
AM_RANGE(0x0d800, 0x0dfff) AM_RAM
|
||||||
AM_RANGE(0x0f000, 0x0ffff) AM_RAM
|
AM_RANGE(0x0f000, 0x0ffff) AM_RAM
|
||||||
AM_RANGE(0xf0000, 0xfffff) AM_RAM
|
AM_RANGE(0xf0000, 0xfffff) AM_RAM
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
@ -107,7 +107,7 @@ static const gfx_layout tiles8x8_layout =
|
|||||||
};
|
};
|
||||||
static GFXDECODE_START( luckgrln )
|
static GFXDECODE_START( luckgrln )
|
||||||
GFXDECODE_ENTRY( "gfx1", 0, tiles8x8_layout, 0, 16 )
|
GFXDECODE_ENTRY( "gfx1", 0, tiles8x8_layout, 0, 16 )
|
||||||
GFXDECODE_ENTRY( "gfx2", 0, tiles8x8_layout, 0, 16 )
|
GFXDECODE_ENTRY( "gfx2", 0, tiles8x8_layout, 0, 16 )
|
||||||
GFXDECODE_END
|
GFXDECODE_END
|
||||||
|
|
||||||
static VIDEO_START(luckgrln)
|
static VIDEO_START(luckgrln)
|
||||||
@ -121,11 +121,11 @@ static VIDEO_UPDATE(luckgrln)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static MACHINE_DRIVER_START( luckgrln )
|
static MACHINE_DRIVER_START( luckgrln )
|
||||||
MDRV_CPU_ADD("main", Z180,8000000)
|
MDRV_CPU_ADD("main", Z180,8000000)
|
||||||
MDRV_CPU_PROGRAM_MAP(mainmap,0)
|
MDRV_CPU_PROGRAM_MAP(mainmap,0)
|
||||||
MDRV_CPU_IO_MAP(portmap,0)
|
MDRV_CPU_IO_MAP(portmap,0)
|
||||||
MDRV_CPU_VBLANK_INT("main", irq0_line_hold)
|
MDRV_CPU_VBLANK_INT("main", irq0_line_hold)
|
||||||
|
|
||||||
MDRV_SCREEN_ADD("main", RASTER)
|
MDRV_SCREEN_ADD("main", RASTER)
|
||||||
MDRV_SCREEN_REFRESH_RATE(60)
|
MDRV_SCREEN_REFRESH_RATE(60)
|
||||||
MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
|
MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
|
||||||
@ -145,7 +145,7 @@ DRIVER_INIT( luckgrln )
|
|||||||
int i;
|
int i;
|
||||||
UINT8 x,v;
|
UINT8 x,v;
|
||||||
UINT8* rom = memory_region(machine,"user1");
|
UINT8* rom = memory_region(machine,"user1");
|
||||||
|
|
||||||
for (i=0;i<0x20000;i++)
|
for (i=0;i<0x20000;i++)
|
||||||
{
|
{
|
||||||
x = rom[i];
|
x = rom[i];
|
||||||
@ -155,7 +155,7 @@ DRIVER_INIT( luckgrln )
|
|||||||
x = (x << (i & 7)) | (x >> (8-(i & 7)));
|
x = (x << (i & 7)) | (x >> (8-(i & 7)));
|
||||||
rom[i] = x;
|
rom[i] = x;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
{
|
{
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
@ -168,24 +168,24 @@ DRIVER_INIT( luckgrln )
|
|||||||
fclose(fp);
|
fclose(fp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// ??
|
// ??
|
||||||
memory_set_bankptr(machine, 1,&rom[0x010000]);
|
memory_set_bankptr(machine, 1,&rom[0x010000]);
|
||||||
}
|
}
|
||||||
|
|
||||||
ROM_START( luckgrln )
|
ROM_START( luckgrln )
|
||||||
ROM_REGION( 0x4000, "main", 0 ) // internal Z180 rom
|
ROM_REGION( 0x4000, "main", 0 ) // internal Z180 rom
|
||||||
ROM_LOAD( "lucky74.bin", 0x00000, 0x4000, CRC(fa128e05) SHA1(97a9534b8414f984159271db48b153b0724d22f9) )
|
ROM_LOAD( "lucky74.bin", 0x00000, 0x4000, CRC(fa128e05) SHA1(97a9534b8414f984159271db48b153b0724d22f9) )
|
||||||
|
|
||||||
ROM_REGION( 0x20000, "user1", 0 ) // external data / cpu rom
|
ROM_REGION( 0x20000, "user1", 0 ) // external data / cpu rom
|
||||||
ROM_LOAD( "falcon.13", 0x00000, 0x20000, CRC(f7a717fd) SHA1(49a39b84620876ee2faf73aaa405a1e17cab2da2) )
|
ROM_LOAD( "falcon.13", 0x00000, 0x20000, CRC(f7a717fd) SHA1(49a39b84620876ee2faf73aaa405a1e17cab2da2) )
|
||||||
|
|
||||||
ROM_REGION( 0x60000, "gfx1", 0 )
|
ROM_REGION( 0x60000, "gfx1", 0 )
|
||||||
ROM_LOAD( "eagle.1", 0x00000, 0x20000, CRC(37209082) SHA1(ffb30da5920886f37c6b97e03f5a8ec3b6265e68) )
|
ROM_LOAD( "eagle.1", 0x00000, 0x20000, CRC(37209082) SHA1(ffb30da5920886f37c6b97e03f5a8ec3b6265e68) )
|
||||||
ROM_LOAD( "eagle.2", 0x20000, 0x20000, CRC(bdb2d694) SHA1(3e58fe3f6b447181e3a85f0fc2a0c996231bc8e8) )
|
ROM_LOAD( "eagle.2", 0x20000, 0x20000, CRC(bdb2d694) SHA1(3e58fe3f6b447181e3a85f0fc2a0c996231bc8e8) )
|
||||||
ROM_LOAD( "eagle.3", 0x40000, 0x20000, CRC(2c765389) SHA1(d5697c73cc939aa46f36c2dd87e90bba2536e347))
|
ROM_LOAD( "eagle.3", 0x40000, 0x20000, CRC(2c765389) SHA1(d5697c73cc939aa46f36c2dd87e90bba2536e347))
|
||||||
|
|
||||||
ROM_REGION( 0x60000, "gfx2", 0 ) // luckgrlns - 3bpp
|
ROM_REGION( 0x60000, "gfx2", 0 ) // luckgrlns - 3bpp
|
||||||
ROM_LOAD( "falcon.4", 0x00000, 0x20000, CRC(369eaddf) SHA1(52387ea63e5c8fb0c27b796026152a06b68467af) )
|
ROM_LOAD( "falcon.4", 0x00000, 0x20000, CRC(369eaddf) SHA1(52387ea63e5c8fb0c27b796026152a06b68467af) )
|
||||||
ROM_LOAD( "falcon.5", 0x20000, 0x20000, CRC(c9ac1fe7) SHA1(fc027002754b90cc49ca74fac5240a99a194c0b3))
|
ROM_LOAD( "falcon.5", 0x20000, 0x20000, CRC(c9ac1fe7) SHA1(fc027002754b90cc49ca74fac5240a99a194c0b3))
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
1x 19.6608 MHz.
|
1x 19.6608 MHz.
|
||||||
|
|
||||||
- PLDs: 1x PAL16L8ACN
|
- PLDs: 1x PAL16L8ACN
|
||||||
1x PALCE18V8H-25
|
1x PALCE18V8H-25
|
||||||
|
|
||||||
|
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
@ -136,7 +136,7 @@ static ADDRESS_MAP_START( magicard_mem, ADDRESS_SPACE_PROGRAM, 16 )
|
|||||||
AM_RANGE(0x020002, 0x020003) AM_READ(test_r)
|
AM_RANGE(0x020002, 0x020003) AM_READ(test_r)
|
||||||
AM_RANGE(0x040000, 0x05ffff) AM_RAM
|
AM_RANGE(0x040000, 0x05ffff) AM_RAM
|
||||||
AM_RANGE(0x060000, 0x07ffff) AM_RAM AM_BASE(&blit_ram)
|
AM_RANGE(0x060000, 0x07ffff) AM_RAM AM_BASE(&blit_ram)
|
||||||
// AM_RANGE(0x100000, 0x17ffff) AM_RAM AM_REGION("main", 0)
|
// AM_RANGE(0x100000, 0x17ffff) AM_RAM AM_REGION("main", 0)
|
||||||
AM_RANGE(0x180000, 0x1ffbff) AM_ROM AM_REGION("main", 0)
|
AM_RANGE(0x180000, 0x1ffbff) AM_ROM AM_REGION("main", 0)
|
||||||
AM_RANGE(0x1ffc00, 0x1fffff) AM_RAM
|
AM_RANGE(0x1ffc00, 0x1fffff) AM_RAM
|
||||||
AM_RANGE(0x260000, 0x27ffff) AM_RAM /*???*/
|
AM_RANGE(0x260000, 0x27ffff) AM_RAM /*???*/
|
||||||
@ -160,27 +160,27 @@ MACHINE_RESET( magicard )
|
|||||||
|
|
||||||
static PALETTE_INIT( magicard )
|
static PALETTE_INIT( magicard )
|
||||||
{
|
{
|
||||||
/* int bit0, bit1, bit2 , r, g, b;
|
/* int bit0, bit1, bit2 , r, g, b;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < 0x100; ++i)
|
for (i = 0; i < 0x100; ++i)
|
||||||
{
|
{
|
||||||
bit0 = (color_prom[0] >> 0) & 0x01;
|
bit0 = (color_prom[0] >> 0) & 0x01;
|
||||||
bit1 = (color_prom[0] >> 1) & 0x01;
|
bit1 = (color_prom[0] >> 1) & 0x01;
|
||||||
bit2 = (color_prom[0] >> 2) & 0x01;
|
bit2 = (color_prom[0] >> 2) & 0x01;
|
||||||
r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
|
r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
|
||||||
bit0 = (color_prom[0] >> 3) & 0x01;
|
bit0 = (color_prom[0] >> 3) & 0x01;
|
||||||
bit1 = (color_prom[0] >> 4) & 0x01;
|
bit1 = (color_prom[0] >> 4) & 0x01;
|
||||||
bit2 = (color_prom[0] >> 5) & 0x01;
|
bit2 = (color_prom[0] >> 5) & 0x01;
|
||||||
g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
|
g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
|
||||||
bit0 = 0;
|
bit0 = 0;
|
||||||
bit1 = (color_prom[0] >> 6) & 0x01;
|
bit1 = (color_prom[0] >> 6) & 0x01;
|
||||||
bit2 = (color_prom[0] >> 7) & 0x01;
|
bit2 = (color_prom[0] >> 7) & 0x01;
|
||||||
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
|
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
|
||||||
|
|
||||||
palette_set_color(machine, i, MAKE_RGB(r, g, b));
|
palette_set_color(machine, i, MAKE_RGB(r, g, b));
|
||||||
color_prom++;
|
color_prom++;
|
||||||
}*/
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************
|
/*************************
|
||||||
@ -224,13 +224,13 @@ static const gfx_layout mca_tilelayout =
|
|||||||
static GFXDECODE_START( magicard )
|
static GFXDECODE_START( magicard )
|
||||||
GFXDECODE_ENTRY( "main", 0x21562, mca_charlayout, 0, 32 )
|
GFXDECODE_ENTRY( "main", 0x21562, mca_charlayout, 0, 32 )
|
||||||
GFXDECODE_ENTRY( "main", 0x16470, mca_tilelayout, 0, 32 )
|
GFXDECODE_ENTRY( "main", 0x16470, mca_tilelayout, 0, 32 )
|
||||||
// GFXDECODE_ENTRY( "main", 0x22efa, mca_tilelayout, 0, 32 )
|
// GFXDECODE_ENTRY( "main", 0x22efa, mca_tilelayout, 0, 32 )
|
||||||
GFXDECODE_END
|
GFXDECODE_END
|
||||||
|
|
||||||
static GFXDECODE_START( magicrda )
|
static GFXDECODE_START( magicrda )
|
||||||
GFXDECODE_ENTRY( "main", 0x21562 + 0x792, mca_charlayout, 0, 32 )
|
GFXDECODE_ENTRY( "main", 0x21562 + 0x792, mca_charlayout, 0, 32 )
|
||||||
GFXDECODE_ENTRY( "main", 0x16470, mca_tilelayout, 0, 32 )
|
GFXDECODE_ENTRY( "main", 0x16470, mca_tilelayout, 0, 32 )
|
||||||
// GFXDECODE_ENTRY( "main", 0x22efa, mca_tilelayout, 0, 32 )
|
// GFXDECODE_ENTRY( "main", 0x22efa, mca_tilelayout, 0, 32 )
|
||||||
GFXDECODE_END
|
GFXDECODE_END
|
||||||
|
|
||||||
|
|
||||||
@ -250,7 +250,7 @@ static INTERRUPT_GEN( magicard_irq )
|
|||||||
static MACHINE_DRIVER_START( magicard )
|
static MACHINE_DRIVER_START( magicard )
|
||||||
MDRV_CPU_ADD("main", M68000, CLOCK_A/2) /* SCC-68070 CCA84 datasheet */
|
MDRV_CPU_ADD("main", M68000, CLOCK_A/2) /* SCC-68070 CCA84 datasheet */
|
||||||
MDRV_CPU_PROGRAM_MAP(magicard_mem,0)
|
MDRV_CPU_PROGRAM_MAP(magicard_mem,0)
|
||||||
// MDRV_CPU_VBLANK_INT("main", magicard_irq) /* no interrupts? (it erases the vectors..) */
|
// MDRV_CPU_VBLANK_INT("main", magicard_irq) /* no interrupts? (it erases the vectors..) */
|
||||||
|
|
||||||
MDRV_SCREEN_ADD("main", RASTER)
|
MDRV_SCREEN_ADD("main", RASTER)
|
||||||
MDRV_SCREEN_REFRESH_RATE(60)
|
MDRV_SCREEN_REFRESH_RATE(60)
|
||||||
@ -287,8 +287,8 @@ ROM_START( magicard )
|
|||||||
ROM_REGION( 0x80000, "main", 0 ) /* 68000 Code & GFX */
|
ROM_REGION( 0x80000, "main", 0 ) /* 68000 Code & GFX */
|
||||||
ROM_LOAD16_WORD_SWAP( "magicorg.bin", 0x000000, 0x80000, CRC(810edf9f) SHA1(0f1638a789a4be7413aa019b4e198353ba9c12d9) )
|
ROM_LOAD16_WORD_SWAP( "magicorg.bin", 0x000000, 0x80000, CRC(810edf9f) SHA1(0f1638a789a4be7413aa019b4e198353ba9c12d9) )
|
||||||
|
|
||||||
// ROM_REGION( 0x400, "boot_prg", 0 )
|
// ROM_REGION( 0x400, "boot_prg", 0 )
|
||||||
// ROM_COPY( "main", 0x00000, 0x00000, 0x400)
|
// ROM_COPY( "main", 0x00000, 0x00000, 0x400)
|
||||||
|
|
||||||
ROM_REGION( 0x0100, "proms", 0 ) /* Color PROM?? */
|
ROM_REGION( 0x0100, "proms", 0 ) /* Color PROM?? */
|
||||||
ROM_LOAD16_WORD_SWAP("mgorigee.bin", 0x0000, 0x0100, CRC(73522889) SHA1(3e10d6c1585c3a63cff717a0b950528d5373c781) )
|
ROM_LOAD16_WORD_SWAP("mgorigee.bin", 0x0000, 0x0100, CRC(73522889) SHA1(3e10d6c1585c3a63cff717a0b950528d5373c781) )
|
||||||
@ -299,8 +299,8 @@ ROM_START( magicrda )
|
|||||||
ROM_LOAD16_WORD_SWAP( "mcorigg2.bin", 0x00000, 0x20000, CRC(48546aa9) SHA1(23099a5e4c9f2c3386496f6d7f5bb7d435a6fb16) )
|
ROM_LOAD16_WORD_SWAP( "mcorigg2.bin", 0x00000, 0x20000, CRC(48546aa9) SHA1(23099a5e4c9f2c3386496f6d7f5bb7d435a6fb16) )
|
||||||
ROM_LOAD16_WORD_SWAP( "mcorigg1.bin", 0x20000, 0x20000, CRC(c9e4a38d) SHA1(812e5826b27c7ad98142a0f52fbdb6b61a2e31d7) )
|
ROM_LOAD16_WORD_SWAP( "mcorigg1.bin", 0x20000, 0x20000, CRC(c9e4a38d) SHA1(812e5826b27c7ad98142a0f52fbdb6b61a2e31d7) )
|
||||||
|
|
||||||
// ROM_REGION( 0x400, "boot_prg", 0 )
|
// ROM_REGION( 0x400, "boot_prg", 0 )
|
||||||
// ROM_COPY( "main", 0x00000, 0x00000, 0x400)
|
// ROM_COPY( "main", 0x00000, 0x00000, 0x400)
|
||||||
|
|
||||||
ROM_REGION( 0x0100, "proms", 0 ) /* Color PROM?? */
|
ROM_REGION( 0x0100, "proms", 0 ) /* Color PROM?? */
|
||||||
ROM_LOAD("mgorigee.bin", 0x0000, 0x0100, CRC(73522889) SHA1(3e10d6c1585c3a63cff717a0b950528d5373c781) )
|
ROM_LOAD("mgorigee.bin", 0x0000, 0x0100, CRC(73522889) SHA1(3e10d6c1585c3a63cff717a0b950528d5373c781) )
|
||||||
|
@ -49,10 +49,10 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
|
|||||||
AM_RANGE(0x8001, 0x8001) AM_READ(test_r)
|
AM_RANGE(0x8001, 0x8001) AM_READ(test_r)
|
||||||
AM_RANGE(0x8002, 0x8002) AM_READ_PORT("IN1")
|
AM_RANGE(0x8002, 0x8002) AM_READ_PORT("IN1")
|
||||||
AM_RANGE(0x8003, 0x8003) AM_READ_PORT("IN2")
|
AM_RANGE(0x8003, 0x8003) AM_READ_PORT("IN2")
|
||||||
// AM_RANGE(0x8004, 0x8004) AM_READ(test_r)
|
// AM_RANGE(0x8004, 0x8004) AM_READ(test_r)
|
||||||
// AM_RANGE(0x8005, 0x8005) AM_READ(test_r)
|
// AM_RANGE(0x8005, 0x8005) AM_READ(test_r)
|
||||||
// AM_RANGE(0x8006, 0x8006) AM_READ(test_r)
|
// AM_RANGE(0x8006, 0x8006) AM_READ(test_r)
|
||||||
// AM_RANGE(0x8007, 0x8007) AM_READ(test_r)
|
// AM_RANGE(0x8007, 0x8007) AM_READ(test_r)
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static INPUT_PORTS_START( mpoker )
|
static INPUT_PORTS_START( mpoker )
|
||||||
|
@ -354,7 +354,7 @@ static WRITE8_HANDLER( barline_output_w )
|
|||||||
|
|
||||||
static ADDRESS_MAP_START( readport_barline, ADDRESS_SPACE_IO, 8 )
|
static ADDRESS_MAP_START( readport_barline, ADDRESS_SPACE_IO, 8 )
|
||||||
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
ADDRESS_MAP_GLOBAL_MASK(0xff)
|
||||||
// AM_RANGE(0x00, 0x7f) AM_READ(nb1413m3_sndrom_r)
|
// AM_RANGE(0x00, 0x7f) AM_READ(nb1413m3_sndrom_r)
|
||||||
AM_RANGE(0x80, 0x80) AM_READ(ym3812_status_port_0_r)
|
AM_RANGE(0x80, 0x80) AM_READ(ym3812_status_port_0_r)
|
||||||
AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
|
AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
|
||||||
AM_RANGE(0xa0, 0xa0) AM_READ(nb1413m3_inputport1_r)
|
AM_RANGE(0xa0, 0xa0) AM_READ(nb1413m3_inputport1_r)
|
||||||
@ -374,7 +374,7 @@ static ADDRESS_MAP_START( writeport_barline, ADDRESS_SPACE_IO, 8 )
|
|||||||
AM_RANGE(0xa0, 0xa0) AM_WRITE(nb1413m3_inputportsel_w)
|
AM_RANGE(0xa0, 0xa0) AM_WRITE(nb1413m3_inputportsel_w)
|
||||||
AM_RANGE(0xb0, 0xb0) AM_WRITE(barline_output_w)
|
AM_RANGE(0xb0, 0xb0) AM_WRITE(barline_output_w)
|
||||||
AM_RANGE(0xc0, 0xcf) AM_WRITE(nbmj8688_clut_w)
|
AM_RANGE(0xc0, 0xcf) AM_WRITE(nbmj8688_clut_w)
|
||||||
// AM_RANGE(0xd0, 0xd0) AM_WRITE(DAC_0_WRITE) //not used
|
// AM_RANGE(0xd0, 0xd0) AM_WRITE(DAC_0_WRITE) //not used
|
||||||
AM_RANGE(0xe0, 0xe0) AM_WRITE(secolove_romsel_w)
|
AM_RANGE(0xe0, 0xe0) AM_WRITE(secolove_romsel_w)
|
||||||
AM_RANGE(0xf0, 0xf0) AM_WRITE(mjsikaku_scrolly_w)
|
AM_RANGE(0xf0, 0xf0) AM_WRITE(mjsikaku_scrolly_w)
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
@ -3063,7 +3063,7 @@ static MACHINE_DRIVER_START( barline )
|
|||||||
MDRV_IMPORT_FROM(mbmj_h12bit)
|
MDRV_IMPORT_FROM(mbmj_h12bit)
|
||||||
MDRV_CPU_MODIFY("main")
|
MDRV_CPU_MODIFY("main")
|
||||||
MDRV_CPU_IO_MAP(readport_barline, writeport_barline)
|
MDRV_CPU_IO_MAP(readport_barline, writeport_barline)
|
||||||
// MDRV_CPU_VBLANK_INT_HACK(nb1413m3_interrupt, 128) // nmiclock = 60
|
// MDRV_CPU_VBLANK_INT_HACK(nb1413m3_interrupt, 128) // nmiclock = 60
|
||||||
|
|
||||||
MDRV_SOUND_REPLACE("8910", YM3812, 20000000/8)
|
MDRV_SOUND_REPLACE("8910", YM3812, 20000000/8)
|
||||||
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70)
|
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70)
|
||||||
|
@ -253,7 +253,7 @@ static UINT8 mux_data;
|
|||||||
static WRITE8_HANDLER( mux_w )
|
static WRITE8_HANDLER( mux_w )
|
||||||
{
|
{
|
||||||
mux_data = ~data;
|
mux_data = ~data;
|
||||||
// printf("%02x\n",mux_data);
|
// printf("%02x\n",mux_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
static READ8_HANDLER( input_1p_r )
|
static READ8_HANDLER( input_1p_r )
|
||||||
@ -271,7 +271,7 @@ static READ8_HANDLER( input_1p_r )
|
|||||||
case 0x10: return input_port_read(space->machine, "PL1_5") | cr_clear;
|
case 0x10: return input_port_read(space->machine, "PL1_5") | cr_clear;
|
||||||
case 0x20: return input_port_read(space->machine, "PL1_6") | cr_clear;
|
case 0x20: return input_port_read(space->machine, "PL1_6") | cr_clear;
|
||||||
}
|
}
|
||||||
// printf("%04x\n",mux_data);
|
// printf("%04x\n",mux_data);
|
||||||
|
|
||||||
return (input_port_read(space->machine, "PL1_1") & input_port_read(space->machine, "PL1_2") & input_port_read(space->machine, "PL1_3") &
|
return (input_port_read(space->machine, "PL1_1") & input_port_read(space->machine, "PL1_2") & input_port_read(space->machine, "PL1_3") &
|
||||||
input_port_read(space->machine, "PL1_4") & input_port_read(space->machine, "PL1_5") & input_port_read(space->machine, "PL1_6")) | cr_clear;//input_port_read(space->machine, "PL1_0") && ;
|
input_port_read(space->machine, "PL1_4") & input_port_read(space->machine, "PL1_5") & input_port_read(space->machine, "PL1_6")) | cr_clear;//input_port_read(space->machine, "PL1_0") && ;
|
||||||
@ -292,7 +292,7 @@ static READ8_HANDLER( input_2p_r )
|
|||||||
case 0x10: return input_port_read(space->machine, "PL2_5") | coin_port;
|
case 0x10: return input_port_read(space->machine, "PL2_5") | coin_port;
|
||||||
case 0x20: return input_port_read(space->machine, "PL2_6") | coin_port;
|
case 0x20: return input_port_read(space->machine, "PL2_6") | coin_port;
|
||||||
}
|
}
|
||||||
// printf("%04x\n",mux_data);
|
// printf("%04x\n",mux_data);
|
||||||
|
|
||||||
return (input_port_read(space->machine, "PL2_1") & input_port_read(space->machine, "PL2_2") & input_port_read(space->machine, "PL2_3") &
|
return (input_port_read(space->machine, "PL2_1") & input_port_read(space->machine, "PL2_2") & input_port_read(space->machine, "PL2_3") &
|
||||||
input_port_read(space->machine, "PL2_4") & input_port_read(space->machine, "PL2_5") & input_port_read(space->machine, "PL2_6")) | coin_port;//input_port_read(space->machine, "PL1_0") && ;
|
input_port_read(space->machine, "PL2_4") & input_port_read(space->machine, "PL2_5") & input_port_read(space->machine, "PL2_6")) | coin_port;//input_port_read(space->machine, "PL1_0") && ;
|
||||||
@ -318,7 +318,7 @@ static ADDRESS_MAP_START( nightgal_io, ADDRESS_SPACE_IO, 8 )
|
|||||||
AM_RANGE(0x01,0x01) AM_READ(ay8910_read_port_0_r) //ay read port
|
AM_RANGE(0x01,0x01) AM_READ(ay8910_read_port_0_r) //ay read port
|
||||||
AM_RANGE(0x02,0x02) AM_WRITE(ay8910_write_port_0_w)
|
AM_RANGE(0x02,0x02) AM_WRITE(ay8910_write_port_0_w)
|
||||||
AM_RANGE(0x03,0x03) AM_WRITE(ay8910_control_port_0_w)
|
AM_RANGE(0x03,0x03) AM_WRITE(ay8910_control_port_0_w)
|
||||||
// AM_RANGE(0x10,0x10) AM_WRITE(output_w)
|
// AM_RANGE(0x10,0x10) AM_WRITE(output_w)
|
||||||
AM_RANGE(0x10,0x10) AM_READ_PORT("DSWC")
|
AM_RANGE(0x10,0x10) AM_READ_PORT("DSWC")
|
||||||
AM_RANGE(0x11,0x11) AM_READ_PORT("SYSA")
|
AM_RANGE(0x11,0x11) AM_READ_PORT("SYSA")
|
||||||
AM_RANGE(0x12,0x12) AM_READ_PORT("DSWA")
|
AM_RANGE(0x12,0x12) AM_READ_PORT("DSWA")
|
||||||
@ -338,7 +338,7 @@ static ADDRESS_MAP_START( nsc_map, ADDRESS_SPACE_PROGRAM, 8 )
|
|||||||
AM_RANGE(0x1100, 0x1100) AM_READWRITE(z80_latch_r,z80_latch_w) //irq control?
|
AM_RANGE(0x1100, 0x1100) AM_READWRITE(z80_latch_r,z80_latch_w) //irq control?
|
||||||
AM_RANGE(0x1200, 0x1200) AM_READNOP //flip screen set bit
|
AM_RANGE(0x1200, 0x1200) AM_READNOP //flip screen set bit
|
||||||
AM_RANGE(0x1300, 0x130f) AM_READ(blit_vregs_r)
|
AM_RANGE(0x1300, 0x130f) AM_READ(blit_vregs_r)
|
||||||
// AM_RANGE(0x1000, 0xdfff) AM_ROM AM_REGION("gfx1", 0 )
|
// AM_RANGE(0x1000, 0xdfff) AM_ROM AM_REGION("gfx1", 0 )
|
||||||
AM_RANGE(0xe000, 0xffff) AM_ROM AM_WRITENOP
|
AM_RANGE(0xe000, 0xffff) AM_ROM AM_WRITENOP
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
@ -618,8 +618,8 @@ MACHINE_DRIVER_END
|
|||||||
static MACHINE_DRIVER_START( sexygal )
|
static MACHINE_DRIVER_START( sexygal )
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
MDRV_IMPORT_FROM( nightgal )
|
MDRV_IMPORT_FROM( nightgal )
|
||||||
// MDRV_CPU_MODIFY("main")
|
// MDRV_CPU_MODIFY("main")
|
||||||
// MDRV_CPU_VBLANK_INT("main", irq0_line_hold)
|
// MDRV_CPU_VBLANK_INT("main", irq0_line_hold)
|
||||||
MACHINE_DRIVER_END
|
MACHINE_DRIVER_END
|
||||||
|
|
||||||
|
|
||||||
@ -632,23 +632,23 @@ CPU:Z80
|
|||||||
SND:AY-3-8910
|
SND:AY-3-8910
|
||||||
ETC:CUSTOM(The surface of the chip is scrached, so the name of the chip is unknown), MemoryBackup
|
ETC:CUSTOM(The surface of the chip is scrached, so the name of the chip is unknown), MemoryBackup
|
||||||
|
|
||||||
NGAL_01.BIN graphic
|
NGAL_01.BIN graphic
|
||||||
NGAL_02.BIN graphic
|
NGAL_02.BIN graphic
|
||||||
NGAL_03.BIN graphic
|
NGAL_03.BIN graphic
|
||||||
NGAL_04.BIN graphic
|
NGAL_04.BIN graphic
|
||||||
NGAL_05.BIN graphic
|
NGAL_05.BIN graphic
|
||||||
NGAL_06.BIN graphic
|
NGAL_06.BIN graphic
|
||||||
NGAL_07.BIN graphic
|
NGAL_07.BIN graphic
|
||||||
NGAL_08.BIN graphic
|
NGAL_08.BIN graphic
|
||||||
NGAL_09.BIN program
|
NGAL_09.BIN program
|
||||||
NGAL_10.BIN program
|
NGAL_10.BIN program
|
||||||
NGAL_11.BIN program
|
NGAL_11.BIN program
|
||||||
NGAL_12.BIN program
|
NGAL_12.BIN program
|
||||||
NGAL_BP.BIN color
|
NGAL_BP.BIN color
|
||||||
|
|
||||||
Dumped by Gastroptosis. 2000/06/04
|
Dumped by Gastroptosis. 2000/06/04
|
||||||
Dumped by Uki. 2000/06/11
|
Dumped by Uki. 2000/06/11
|
||||||
|
?
|
||||||
*/
|
*/
|
||||||
|
|
||||||
ROM_START( nightgal )
|
ROM_START( nightgal )
|
||||||
@ -748,14 +748,14 @@ Sexy Gal
|
|||||||
XG-1B (main board)
|
XG-1B (main board)
|
||||||
SGP-A (sub board)
|
SGP-A (sub board)
|
||||||
|
|
||||||
CPU: Z80-A
|
CPU: Z80-A
|
||||||
SOUND: YM2203C
|
SOUND: YM2203C
|
||||||
DAC
|
DAC
|
||||||
OSC: 20.000MHz
|
OSC: 20.000MHz
|
||||||
10.000MHz
|
10.000MHz
|
||||||
6.000MHz (sub board)
|
6.000MHz (sub board)
|
||||||
Chips: CPU? 40pin
|
Chips: CPU? 40pin
|
||||||
CPU? 40pin (sub board)
|
CPU? 40pin (sub board)
|
||||||
|
|
||||||
|
|
||||||
1.3A prg?
|
1.3A prg?
|
||||||
@ -841,15 +841,15 @@ ROM_END
|
|||||||
Night Gal Summer (JPN Ver.)
|
Night Gal Summer (JPN Ver.)
|
||||||
(c)1985 Nihon Bussan
|
(c)1985 Nihon Bussan
|
||||||
|
|
||||||
CPU: Z80
|
CPU: Z80
|
||||||
SOUND: AY-3-8910
|
SOUND: AY-3-8910
|
||||||
DAC
|
DAC
|
||||||
OSC: 20.000MHz
|
OSC: 20.000MHz
|
||||||
6.000MHz (sub board)
|
6.000MHz (sub board)
|
||||||
|
|
||||||
Chips: NG138507 (CPU?)
|
Chips: NG138507 (CPU?)
|
||||||
Unknown 40pin
|
Unknown 40pin
|
||||||
Unknown 40pin
|
Unknown 40pin
|
||||||
|
|
||||||
|
|
||||||
1S.IC7 prg./samples?
|
1S.IC7 prg./samples?
|
||||||
|
@ -47,7 +47,7 @@ Twenty four 8116 rams.
|
|||||||
static ADDRESS_MAP_START( main_cpu, ADDRESS_SPACE_PROGRAM, 8 )
|
static ADDRESS_MAP_START( main_cpu, ADDRESS_SPACE_PROGRAM, 8 )
|
||||||
AM_RANGE(0x0000, 0x0fff) AM_RAM
|
AM_RANGE(0x0000, 0x0fff) AM_RAM
|
||||||
AM_RANGE(0x1000, 0x1fff) AM_RAM //AM_WRITE(deco_charram_w) AM_BASE(&deco_charram)
|
AM_RANGE(0x1000, 0x1fff) AM_RAM //AM_WRITE(deco_charram_w) AM_BASE(&deco_charram)
|
||||||
AM_RANGE(0x2000, 0x7fff) AM_RAM AM_BASE(&deco_charram) //AM_WRITE(deco_charram_w)
|
AM_RANGE(0x2000, 0x7fff) AM_RAM AM_BASE(&deco_charram) //AM_WRITE(deco_charram_w)
|
||||||
AM_RANGE(0x9000, 0x9000) AM_WRITENOP
|
AM_RANGE(0x9000, 0x9000) AM_WRITENOP
|
||||||
AM_RANGE(0x9000, 0x9000) AM_READNOP
|
AM_RANGE(0x9000, 0x9000) AM_READNOP
|
||||||
AM_RANGE(0x9200, 0x9200) AM_WRITENOP
|
AM_RANGE(0x9200, 0x9200) AM_WRITENOP
|
||||||
|
@ -1132,15 +1132,15 @@ The only ones with numbers are the EPROMs at 1A and 1B.
|
|||||||
/*
|
/*
|
||||||
This dump matches the already supported set, except for rom sizes:
|
This dump matches the already supported set, except for rom sizes:
|
||||||
|
|
||||||
1r 52201B.2R IDENTICAL
|
1r 52201B.2R IDENTICAL
|
||||||
2r 52202B.1R IDENTICAL
|
2r 52202B.1R IDENTICAL
|
||||||
nm52204.1b 52204.1B IDENTICAL
|
nm52204.1b 52204.1B IDENTICAL
|
||||||
nm52205.1a 52205.1A IDENTICAL
|
nm52205.1a 52205.1A IDENTICAL
|
||||||
2e [1/2] 52203.2E IDENTICAL
|
2e [1/2] 52203.2E IDENTICAL
|
||||||
9a 52211.9A [1/2] IDENTICAL
|
9a 52211.9A [1/2] IDENTICAL
|
||||||
9b 52210.9B [1/2] IDENTICAL
|
9b 52210.9B [1/2] IDENTICAL
|
||||||
9d 52208.9D [1/2] IDENTICAL
|
9d 52208.9D [1/2] IDENTICAL
|
||||||
9f 52206.9F [1/2] IDENTICAL
|
9f 52206.9F [1/2] IDENTICAL
|
||||||
*/
|
*/
|
||||||
#if 0
|
#if 0
|
||||||
ROM_START( dai2kaku_alt_rom_size )
|
ROM_START( dai2kaku_alt_rom_size )
|
||||||
|
@ -891,7 +891,7 @@ Spacech2: 0x008b: im 1 ed 56
|
|||||||
0x008d: nop 00
|
0x008d: nop 00
|
||||||
|
|
||||||
So... spacech2 is avoiding to enter the sub at $2929.
|
So... spacech2 is avoiding to enter the sub at $2929.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
ROM_START( spacech2 )
|
ROM_START( spacech2 )
|
||||||
ROM_REGION( 0x10000, "cpu1", 0 )
|
ROM_REGION( 0x10000, "cpu1", 0 )
|
||||||
|
@ -1786,7 +1786,7 @@ static MACHINE_DRIVER_START( system16a )
|
|||||||
|
|
||||||
MDRV_CPU_ADD("n7751", N7751, 6000000)
|
MDRV_CPU_ADD("n7751", N7751, 6000000)
|
||||||
MDRV_CPU_IO_MAP(n7751_portmap,0)
|
MDRV_CPU_IO_MAP(n7751_portmap,0)
|
||||||
|
|
||||||
MDRV_I8243_ADD("n7751_8243", NULL, n7751_rom_offset_w)
|
MDRV_I8243_ADD("n7751_8243", NULL, n7751_rom_offset_w)
|
||||||
|
|
||||||
MDRV_MACHINE_RESET(system16a)
|
MDRV_MACHINE_RESET(system16a)
|
||||||
|
@ -429,7 +429,7 @@ static ADDRESS_MAP_START( statusbj_io, ADDRESS_SPACE_IO, 8 )
|
|||||||
AM_RANGE(0xb0, 0xb0) AM_WRITE(ay8910_control_port_0_w)
|
AM_RANGE(0xb0, 0xb0) AM_WRITE(ay8910_control_port_0_w)
|
||||||
AM_RANGE(0xb1, 0xb1) AM_READWRITE(ay8910_read_port_0_r,ay8910_write_port_0_w)
|
AM_RANGE(0xb1, 0xb1) AM_READWRITE(ay8910_read_port_0_r,ay8910_write_port_0_w)
|
||||||
AM_RANGE(0xc0, 0xcf) AM_READWRITE(SMH_NOP, SMH_NOP) /* 9927 CRT controller? */
|
AM_RANGE(0xc0, 0xcf) AM_READWRITE(SMH_NOP, SMH_NOP) /* 9927 CRT controller? */
|
||||||
// AM_RANGE(0xce,0xce) AM_READ(test_r)
|
// AM_RANGE(0xce,0xce) AM_READ(test_r)
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
/*some sort of "simple" protection? This is just a kludge for it,coin chuts doesn't work consistantly,
|
/*some sort of "simple" protection? This is just a kludge for it,coin chuts doesn't work consistantly,
|
||||||
@ -446,7 +446,7 @@ static READ8_DEVICE_HANDLER( prot_r )
|
|||||||
|
|
||||||
//static WRITE8_DEVICE_HANDLER( ppi_portc_hi_w );
|
//static WRITE8_DEVICE_HANDLER( ppi_portc_hi_w );
|
||||||
//{
|
//{
|
||||||
// popmessage("PPI port C out: %02X", data);
|
// popmessage("PPI port C out: %02X", data);
|
||||||
//}
|
//}
|
||||||
|
|
||||||
|
|
||||||
@ -462,7 +462,7 @@ static const ppi8255_interface ppi8255_intf[1] =
|
|||||||
DEVICE8_PORT("IN2"), /* Port C read (Lower Nibble as Input) */
|
DEVICE8_PORT("IN2"), /* Port C read (Lower Nibble as Input) */
|
||||||
NULL, /* Port A write */
|
NULL, /* Port A write */
|
||||||
NULL, /* Port B write */
|
NULL, /* Port B write */
|
||||||
NULL //ppi_portc_hi_w /* Port C write (High nibble as Output) */
|
NULL //ppi_portc_hi_w /* Port C write (High nibble as Output) */
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
|
|
||||||
E63-01 PALCE16V8H
|
E63-01 PALCE16V8H
|
||||||
E63-02 PALCE22V10H
|
E63-02 PALCE22V10H
|
||||||
|
|
||||||
IC41 E63-06 PALCE16V8H
|
IC41 E63-06 PALCE16V8H
|
||||||
IC43 E63-07 PALCE16V8H
|
IC43 E63-07 PALCE16V8H
|
||||||
|
|
||||||
|
@ -8,62 +8,62 @@ Landing High Japan PCB info
|
|||||||
|
|
||||||
Taito Landing High
|
Taito Landing High
|
||||||
|
|
||||||
Top board
|
Top board
|
||||||
silkscreened TYPE-ZERO MOTHER PCB
|
silkscreened TYPE-ZERO MOTHER PCB
|
||||||
|
|
||||||
stickered 298100308
|
stickered 298100308
|
||||||
K11X0886A
|
K11X0886A
|
||||||
JC101
|
JC101
|
||||||
|
|
||||||
.5 29LV400BC-90 stamped E68-05-1
|
.5 29LV400BC-90 stamped E68-05-1
|
||||||
.6 29LV400BC-90 stamped E68-04-1
|
.6 29LV400BC-90 stamped E68-04-1
|
||||||
.24 PALV 18V8-10JC stamped E68-06
|
.24 PALV 18V8-10JC stamped E68-06
|
||||||
|
|
||||||
|
|
||||||
IC30 Taito TCG020AGP
|
IC30 Taito TCG020AGP
|
||||||
IC26 IDT7024 S35J V9928P
|
IC26 IDT7024 S35J V9928P
|
||||||
IC10 IBM EMPPC603eBG-100
|
IC10 IBM EMPPC603eBG-100
|
||||||
IC53 ADV7120KP30 9926 F101764.1
|
IC53 ADV7120KP30 9926 F101764.1
|
||||||
IC16,17 M54256V32A-10
|
IC16,17 M54256V32A-10
|
||||||
IC15,25,31,39,45,49,44 48D4811650GF-A10-9BT
|
IC15,25,31,39,45,49,44 48D4811650GF-A10-9BT
|
||||||
IC27,36 D4564163G5-A10n-9JF
|
IC27,36 D4564163G5-A10n-9JF
|
||||||
IC 41,46,42,47 D4516161AG5-A10B-9F
|
IC 41,46,42,47 D4516161AG5-A10B-9F
|
||||||
IC43 QSV991-7JRI
|
IC43 QSV991-7JRI
|
||||||
66.6667 Oscillator near IC43
|
66.6667 Oscillator near IC43
|
||||||
|
|
||||||
Bottom board
|
Bottom board
|
||||||
silkscreened JC101 DAUGHTER PCB
|
silkscreened JC101 DAUGHTER PCB
|
||||||
|
|
||||||
stickered K91J0775A
|
stickered K91J0775A
|
||||||
LANDING H.JAPAN
|
LANDING H.JAPAN
|
||||||
|
|
||||||
299100308
|
299100308
|
||||||
|
|
||||||
M43J0741A
|
M43J0741A
|
||||||
LANDING H.JAPAN
|
LANDING H.JAPAN
|
||||||
|
|
||||||
.14 27c1001 stickered E82
|
.14 27c1001 stickered E82
|
||||||
03*
|
03*
|
||||||
|
|
||||||
.15 27c1001 stickered E82
|
.15 27c1001 stickered E82
|
||||||
04*
|
04*
|
||||||
|
|
||||||
.44 PALCE16V8H stamped E82-01
|
.44 PALCE16V8H stamped E82-01
|
||||||
|
|
||||||
.45 PALCE22V10H stamped E82-02
|
.45 PALCE22V10H stamped E82-02
|
||||||
|
|
||||||
IC40 Toshiba TMP95C063F
|
IC40 Toshiba TMP95C063F
|
||||||
IC55 Panasonic MN89306
|
IC55 Panasonic MN89306
|
||||||
EPSON 9X5C pscillator near IC55
|
EPSON 9X5C pscillator near IC55
|
||||||
IC56 HY57V161610D TC-10
|
IC56 HY57V161610D TC-10
|
||||||
IC22 ID7133 SA70J
|
IC22 ID7133 SA70J
|
||||||
25.000 oscillator near IC22
|
25.000 oscillator near IC22
|
||||||
IC11 Xilinx XC9572
|
IC11 Xilinx XC9572
|
||||||
IC5 HY5118164C JC-60
|
IC5 HY5118164C JC-60
|
||||||
IC10 ZOOM ZSG-2
|
IC10 ZOOM ZSG-2
|
||||||
IC20 ZOOM ZFX 2 HD 96NE2VJ
|
IC20 ZOOM ZFX 2 HD 96NE2VJ
|
||||||
IC26 TM TECH UA4464V T224162B-28J
|
IC26 TM TECH UA4464V T224162B-28J
|
||||||
IC7 Panasonic MN1020819DA E68-01
|
IC7 Panasonic MN1020819DA E68-01
|
||||||
20.000 oscillator near IC7
|
20.000 oscillator near IC7
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
@ -171,7 +171,7 @@ ADDRESS_MAP_END
|
|||||||
static ADDRESS_MAP_START( extra_map, ADDRESS_SPACE_PROGRAM, 16 )
|
static ADDRESS_MAP_START( extra_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||||
AM_RANGE(0x000000, 0x03ffff) AM_ROM
|
AM_RANGE(0x000000, 0x03ffff) AM_ROM
|
||||||
AM_RANGE(0x060000, 0x07ffff) AM_ROM
|
AM_RANGE(0x060000, 0x07ffff) AM_ROM
|
||||||
AM_RANGE(0x160000, 0x16ffff) AM_RAM AM_SHARE(1)
|
AM_RANGE(0x160000, 0x16ffff) AM_RAM AM_SHARE(1)
|
||||||
AM_RANGE(0x260000, 0x26000f) AM_READ_PORT("260000")
|
AM_RANGE(0x260000, 0x26000f) AM_READ_PORT("260000")
|
||||||
AM_RANGE(0x260010, 0x260011) AM_READ_PORT("260010")
|
AM_RANGE(0x260010, 0x260011) AM_READ_PORT("260010")
|
||||||
AM_RANGE(0x260012, 0x260013) AM_READ(special_port2_r)
|
AM_RANGE(0x260012, 0x260013) AM_READ(special_port2_r)
|
||||||
@ -279,7 +279,7 @@ static MACHINE_DRIVER_START( thunderj )
|
|||||||
|
|
||||||
MDRV_MACHINE_RESET(thunderj)
|
MDRV_MACHINE_RESET(thunderj)
|
||||||
MDRV_NVRAM_HANDLER(atarigen)
|
MDRV_NVRAM_HANDLER(atarigen)
|
||||||
|
|
||||||
/* perfect synchronization due to shared RAM */
|
/* perfect synchronization due to shared RAM */
|
||||||
MDRV_QUANTUM_PERFECT_CPU("main")
|
MDRV_QUANTUM_PERFECT_CPU("main")
|
||||||
|
|
||||||
|
@ -75,8 +75,8 @@ Supported games:
|
|||||||
the original within days of its release!) and adds a "team" mode ala Batrider where you
|
the original within days of its release!) and adds a "team" mode ala Batrider where you
|
||||||
select a different ship for each of your three lives.
|
select a different ship for each of your three lives.
|
||||||
|
|
||||||
dogyuunk - PCB says "TOAPLAN CO.,LTD. TP-022-1 MADE IN KOREA". It contains 3 custom Toaplan chips
|
dogyuunk - PCB says "TOAPLAN CO.,LTD. TP-022-1 MADE IN KOREA". It contains 3 custom Toaplan chips
|
||||||
(2 gfx chips and TS-002-MACH sound MCU). Uses original Toaplan-badged MASKROMs for GFX
|
(2 gfx chips and TS-002-MACH sound MCU). Uses original Toaplan-badged MASKROMs for GFX
|
||||||
and sound and original 'TP-022 01 TOAPLAN' sticker on program EPROM.
|
and sound and original 'TP-022 01 TOAPLAN' sticker on program EPROM.
|
||||||
|
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
* TX-1 tyre screech noises are not implemented yet.
|
* TX-1 tyre screech noises are not implemented yet.
|
||||||
* 'buggyboy' set is using ROMs from 'buggybjr' for testing purposes
|
* 'buggyboy' set is using ROMs from 'buggybjr' for testing purposes
|
||||||
until the original set can be dumped.
|
until the original set can be dumped.
|
||||||
|
|
||||||
****************************************************************************
|
****************************************************************************
|
||||||
|
|
||||||
Buggy Boy Error Codes TX-1 Error Codes
|
Buggy Boy Error Codes TX-1 Error Codes
|
||||||
@ -415,14 +415,14 @@ static WRITE8_DEVICE_HANDLER( tx1_coin_cnt_w )
|
|||||||
{
|
{
|
||||||
coin_counter_w(0, data & 0x80);
|
coin_counter_w(0, data & 0x80);
|
||||||
coin_counter_w(1, data & 0x40);
|
coin_counter_w(1, data & 0x40);
|
||||||
// coin_counter_w(2, data & 0x40);
|
// coin_counter_w(2, data & 0x40);
|
||||||
}
|
}
|
||||||
|
|
||||||
static WRITE8_DEVICE_HANDLER( bb_coin_cnt_w )
|
static WRITE8_DEVICE_HANDLER( bb_coin_cnt_w )
|
||||||
{
|
{
|
||||||
coin_counter_w(0, data & 0x01);
|
coin_counter_w(0, data & 0x01);
|
||||||
coin_counter_w(1, data & 0x02);
|
coin_counter_w(1, data & 0x02);
|
||||||
// coin_counter_w(2, data & 0x04);
|
// coin_counter_w(2, data & 0x04);
|
||||||
}
|
}
|
||||||
|
|
||||||
static WRITE8_HANDLER( tx1_ppi_latch_w )
|
static WRITE8_HANDLER( tx1_ppi_latch_w )
|
||||||
|
@ -136,7 +136,7 @@ static TIMER_DEVICE_CALLBACK( vball_scanline )
|
|||||||
|
|
||||||
/* Save the scroll x register value */
|
/* Save the scroll x register value */
|
||||||
if (scanline < 256)
|
if (scanline < 256)
|
||||||
{
|
{
|
||||||
scrollx[255 - scanline] = (vb_scrollx_hi + vb_scrollx_lo+4);
|
scrollx[255 - scanline] = (vb_scrollx_hi + vb_scrollx_lo+4);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
Virtual Combat hardware games.
|
Virtual Combat hardware games.
|
||||||
|
|
||||||
Driver by Jason Eckhardt and Andrew Gardner.
|
Driver by Jason Eckhardt and Andrew Gardner.
|
||||||
|
|
||||||
----
|
----
|
||||||
|
|
||||||
There are two known games on this hardware. Both are developed by
|
There are two known games on this hardware. Both are developed by
|
||||||
@ -28,7 +28,7 @@ UPPER:
|
|||||||
8-way DIP switch
|
8-way DIP switch
|
||||||
574200D x4
|
574200D x4
|
||||||
PAL palce24v10 x2 (next to the i860)
|
PAL palce24v10 x2 (next to the i860)
|
||||||
Bt476 RAMDAC
|
Bt476 RAMDAC
|
||||||
|
|
||||||
LOWER:
|
LOWER:
|
||||||
Motorola MC68000P12 x2
|
Motorola MC68000P12 x2
|
||||||
@ -85,16 +85,16 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
|
|||||||
AM_RANGE(0x000000, 0x0fffff) AM_ROM
|
AM_RANGE(0x000000, 0x0fffff) AM_ROM
|
||||||
AM_RANGE(0x200000, 0x2fffff) AM_RAM
|
AM_RANGE(0x200000, 0x2fffff) AM_RAM
|
||||||
AM_RANGE(0x300000, 0x3fffff) AM_RAM AM_BASE(&framebuffer) AM_SHARE(1)
|
AM_RANGE(0x300000, 0x3fffff) AM_RAM AM_BASE(&framebuffer) AM_SHARE(1)
|
||||||
|
|
||||||
AM_RANGE(0x400000, 0x43ffff) AM_RAM AM_BASE(&vid_0_shared_RAM) AM_SHARE(2) /* First i860 shared RAM */
|
AM_RANGE(0x400000, 0x43ffff) AM_RAM AM_BASE(&vid_0_shared_RAM) AM_SHARE(2) /* First i860 shared RAM */
|
||||||
// AM_RANGE(0x440000, 0x440003) i860 #1 com 1
|
// AM_RANGE(0x440000, 0x440003) i860 #1 com 1
|
||||||
// AM_RANGE(0x480000, 0x480003) i860 #1 com 2
|
// AM_RANGE(0x480000, 0x480003) i860 #1 com 2
|
||||||
// AM_RANGE(0x4c0000, 0x4c0003) i860 #1 stop/start/reset
|
// AM_RANGE(0x4c0000, 0x4c0003) i860 #1 stop/start/reset
|
||||||
|
|
||||||
AM_RANGE(0x500000, 0x53ffff) AM_RAM AM_BASE(&vid_1_shared_RAM) AM_SHARE(3) /* Second i860 shared RAM */
|
AM_RANGE(0x500000, 0x53ffff) AM_RAM AM_BASE(&vid_1_shared_RAM) AM_SHARE(3) /* Second i860 shared RAM */
|
||||||
// AM_RANGE(0x540000, 0x540003) i860 #2 com 1
|
// AM_RANGE(0x540000, 0x540003) i860 #2 com 1
|
||||||
// AM_RANGE(0x580000, 0x580003) i860 #2 com 2
|
// AM_RANGE(0x580000, 0x580003) i860 #2 com 2
|
||||||
// AM_RANGE(0x5c0000, 0x5c0003) i860 #2 stop/start/reset
|
// AM_RANGE(0x5c0000, 0x5c0003) i860 #2 stop/start/reset
|
||||||
|
|
||||||
AM_RANGE(0x706000, 0x70601f) AM_READWRITE(tlc34076_lsb_r, tlc34076_lsb_w)
|
AM_RANGE(0x706000, 0x70601f) AM_READWRITE(tlc34076_lsb_r, tlc34076_lsb_w)
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
@ -103,9 +103,9 @@ ADDRESS_MAP_END
|
|||||||
/* The first i860 - middle board */
|
/* The first i860 - middle board */
|
||||||
static ADDRESS_MAP_START( vid_0_map, ADDRESS_SPACE_PROGRAM, 32 )
|
static ADDRESS_MAP_START( vid_0_map, ADDRESS_SPACE_PROGRAM, 32 )
|
||||||
AM_RANGE(0x00000000, 0x000fffff) AM_RAM AM_SHARE(1) /* Shared framebuffer */
|
AM_RANGE(0x00000000, 0x000fffff) AM_RAM AM_SHARE(1) /* Shared framebuffer */
|
||||||
// AM_RANGE(0x20000000, 0x20000003) com 1 (0x440000 in 68k-land)
|
// AM_RANGE(0x20000000, 0x20000003) com 1 (0x440000 in 68k-land)
|
||||||
// AM_RANGE(0x40000000, 0x401fffff) AM_ROM /* 3d data ROMs */
|
// AM_RANGE(0x40000000, 0x401fffff) AM_ROM /* 3d data ROMs */
|
||||||
// AM_RANGE(0x80000000, 0x80000003) com 2 (0x480000 in 68k-land)
|
// AM_RANGE(0x80000000, 0x80000003) com 2 (0x480000 in 68k-land)
|
||||||
AM_RANGE(0xfffc0000, 0xffffffff) AM_RAM AM_SHARE(2) /* Shared RAM with main */
|
AM_RANGE(0xfffc0000, 0xffffffff) AM_RAM AM_SHARE(2) /* Shared RAM with main */
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
@ -113,16 +113,16 @@ ADDRESS_MAP_END
|
|||||||
/* The second i860 - top board */
|
/* The second i860 - top board */
|
||||||
static ADDRESS_MAP_START( vid_1_map, ADDRESS_SPACE_PROGRAM, 32 )
|
static ADDRESS_MAP_START( vid_1_map, ADDRESS_SPACE_PROGRAM, 32 )
|
||||||
AM_RANGE(0x00000000, 0x000fffff) AM_RAM AM_SHARE(1) /* Shared framebuffer */
|
AM_RANGE(0x00000000, 0x000fffff) AM_RAM AM_SHARE(1) /* Shared framebuffer */
|
||||||
// AM_RANGE(0x20000000, 0x20000003) com 1 (0x540000 in 68k-land)
|
// AM_RANGE(0x20000000, 0x20000003) com 1 (0x540000 in 68k-land)
|
||||||
// AM_RANGE(0x40000000, 0x401fffff) AM_ROM /* 3d data ROMs */
|
// AM_RANGE(0x40000000, 0x401fffff) AM_ROM /* 3d data ROMs */
|
||||||
// AM_RANGE(0x80000000, 0x80000003) com 2 (0x580000 in 68k-land)
|
// AM_RANGE(0x80000000, 0x80000003) com 2 (0x580000 in 68k-land)
|
||||||
AM_RANGE(0xfffc0000, 0xffffffff) AM_RAM AM_SHARE(3) /* Shared RAM with main */
|
AM_RANGE(0xfffc0000, 0xffffffff) AM_RAM AM_SHARE(3) /* Shared RAM with main */
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
|
|
||||||
/* Sound CPU - temprarily disabled */
|
/* Sound CPU - temprarily disabled */
|
||||||
//static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 16 )
|
//static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||||
// AM_RANGE(0x000000, 0x03ffff) AM_ROM
|
// AM_RANGE(0x000000, 0x03ffff) AM_ROM
|
||||||
//ADDRESS_MAP_END
|
//ADDRESS_MAP_END
|
||||||
|
|
||||||
|
|
||||||
|
@ -1218,7 +1218,7 @@ READ8_HANDLER( decocass_e5xx_r )
|
|||||||
if (2 == (offset & E5XX_MASK))
|
if (2 == (offset & E5XX_MASK))
|
||||||
{
|
{
|
||||||
UINT8 bot_eot = (tape_get_status_bits(cassette_device) >> 5) & 1;
|
UINT8 bot_eot = (tape_get_status_bits(cassette_device) >> 5) & 1;
|
||||||
|
|
||||||
data =
|
data =
|
||||||
(BIT7(i8041_p1) << 0) | /* D0 = P17 - REQ/ */
|
(BIT7(i8041_p1) << 0) | /* D0 = P17 - REQ/ */
|
||||||
(BIT0(i8041_p2) << 1) | /* D1 = P20 - FNO/ */
|
(BIT0(i8041_p2) << 1) | /* D1 = P20 - FNO/ */
|
||||||
@ -1369,7 +1369,7 @@ static void decocass_reset_common(running_machine *machine)
|
|||||||
|
|
||||||
memset(decocass_quadrature_decoder, 0, sizeof(decocass_quadrature_decoder));
|
memset(decocass_quadrature_decoder, 0, sizeof(decocass_quadrature_decoder));
|
||||||
decocass_sound_ack = 0;
|
decocass_sound_ack = 0;
|
||||||
|
|
||||||
audio_nmi_enabled = 0;
|
audio_nmi_enabled = 0;
|
||||||
audio_nmi_state = 0;
|
audio_nmi_state = 0;
|
||||||
}
|
}
|
||||||
@ -1666,7 +1666,7 @@ WRITE8_HANDLER( i8041_p1_w )
|
|||||||
if ((data ^ i8041_p1) & 0x34)
|
if ((data ^ i8041_p1) & 0x34)
|
||||||
{
|
{
|
||||||
int newspeed = 0;
|
int newspeed = 0;
|
||||||
|
|
||||||
if ((data & 0x30) == 0x20)
|
if ((data & 0x30) == 0x20)
|
||||||
newspeed = (data & 0x04) ? -1 : -7;
|
newspeed = (data & 0x04) ? -1 : -7;
|
||||||
else if ((data & 0x30) == 0x10)
|
else if ((data & 0x30) == 0x10)
|
||||||
@ -1871,7 +1871,7 @@ INLINE tape_state *get_safe_token(const device_config *device)
|
|||||||
static UINT16 tape_crc16_byte(UINT16 crc, UINT8 data)
|
static UINT16 tape_crc16_byte(UINT16 crc, UINT8 data)
|
||||||
{
|
{
|
||||||
int bit;
|
int bit;
|
||||||
|
|
||||||
for (bit = 0; bit < 8; bit++)
|
for (bit = 0; bit < 8; bit++)
|
||||||
{
|
{
|
||||||
crc = (crc >> 1) | (crc << 15);
|
crc = (crc >> 1) | (crc << 15);
|
||||||
@ -1894,7 +1894,7 @@ static const char *tape_describe_state(tape_state *tape)
|
|||||||
static char buffer[40];
|
static char buffer[40];
|
||||||
char temprname[40];
|
char temprname[40];
|
||||||
const char *rname = temprname;
|
const char *rname = temprname;
|
||||||
|
|
||||||
if (tape->region == REGION_LEADER)
|
if (tape->region == REGION_LEADER)
|
||||||
rname = "LEAD";
|
rname = "LEAD";
|
||||||
else if (tape->region == REGION_LEADER_GAP)
|
else if (tape->region == REGION_LEADER_GAP)
|
||||||
@ -1916,7 +1916,7 @@ static const char *tape_describe_state(tape_state *tape)
|
|||||||
char tempbname[40];
|
char tempbname[40];
|
||||||
const char *bname = tempbname;
|
const char *bname = tempbname;
|
||||||
int clk;
|
int clk;
|
||||||
|
|
||||||
if (tape->bytenum <= BYTE_PRE_GAP_33)
|
if (tape->bytenum <= BYTE_PRE_GAP_33)
|
||||||
sprintf(tempbname, "PR%02d", tape->bytenum - BYTE_PRE_GAP_0);
|
sprintf(tempbname, "PR%02d", tape->bytenum - BYTE_PRE_GAP_0);
|
||||||
else if (tape->bytenum == BYTE_LEADIN)
|
else if (tape->bytenum == BYTE_LEADIN)
|
||||||
@ -1948,7 +1948,7 @@ static const char *tape_describe_state(tape_state *tape)
|
|||||||
|
|
||||||
sprintf(temprname, "BL%02X.%4s.%d.%d", tape->region - REGION_DATA_BLOCK_0, bname, tape->bitnum, clk);
|
sprintf(temprname, "BL%02X.%4s.%d.%d", tape->region - REGION_DATA_BLOCK_0, bname, tape->bitnum, clk);
|
||||||
}
|
}
|
||||||
|
|
||||||
sprintf(buffer, "{%9d=%s}", tape->clockpos, rname);
|
sprintf(buffer, "{%9d=%s}", tape->clockpos, rname);
|
||||||
return buffer;
|
return buffer;
|
||||||
}
|
}
|
||||||
@ -1963,7 +1963,7 @@ static TIMER_CALLBACK( tape_clock_callback )
|
|||||||
{
|
{
|
||||||
const device_config *device = ptr;
|
const device_config *device = ptr;
|
||||||
tape_state *tape = get_safe_token(device);
|
tape_state *tape = get_safe_token(device);
|
||||||
|
|
||||||
/* advance by one clock in the desired direction */
|
/* advance by one clock in the desired direction */
|
||||||
if (tape->speed < 0 && tape->clockpos > 0)
|
if (tape->speed < 0 && tape->clockpos > 0)
|
||||||
tape->clockpos--;
|
tape->clockpos--;
|
||||||
@ -1979,7 +1979,7 @@ static TIMER_CALLBACK( tape_clock_callback )
|
|||||||
tape->region = REGION_BOT;
|
tape->region = REGION_BOT;
|
||||||
else if (tape->clockpos < REGION_BOT_GAP_END_CLOCK)
|
else if (tape->clockpos < REGION_BOT_GAP_END_CLOCK)
|
||||||
tape->region = REGION_BOT_GAP;
|
tape->region = REGION_BOT_GAP;
|
||||||
|
|
||||||
/* look for states after the end of data */
|
/* look for states after the end of data */
|
||||||
else if (tape->clockpos >= tape->numclocks - REGION_LEADER_END_CLOCK)
|
else if (tape->clockpos >= tape->numclocks - REGION_LEADER_END_CLOCK)
|
||||||
tape->region = REGION_TRAILER;
|
tape->region = REGION_TRAILER;
|
||||||
@ -1989,24 +1989,24 @@ static TIMER_CALLBACK( tape_clock_callback )
|
|||||||
tape->region = REGION_EOT;
|
tape->region = REGION_EOT;
|
||||||
else if (tape->clockpos >= tape->numclocks - REGION_BOT_GAP_END_CLOCK)
|
else if (tape->clockpos >= tape->numclocks - REGION_BOT_GAP_END_CLOCK)
|
||||||
tape->region = REGION_EOT_GAP;
|
tape->region = REGION_EOT_GAP;
|
||||||
|
|
||||||
/* everything else is data */
|
/* everything else is data */
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UINT32 dataclock = tape->clockpos - REGION_BOT_GAP_END_CLOCK;
|
UINT32 dataclock = tape->clockpos - REGION_BOT_GAP_END_CLOCK;
|
||||||
|
|
||||||
/* compute the block number */
|
/* compute the block number */
|
||||||
tape->region = REGION_DATA_BLOCK_0 + dataclock / (TAPE_CLOCKS_PER_BYTE * BYTE_BLOCK_TOTAL);
|
tape->region = REGION_DATA_BLOCK_0 + dataclock / (TAPE_CLOCKS_PER_BYTE * BYTE_BLOCK_TOTAL);
|
||||||
dataclock -= (tape->region - REGION_DATA_BLOCK_0) * TAPE_CLOCKS_PER_BYTE * BYTE_BLOCK_TOTAL;
|
dataclock -= (tape->region - REGION_DATA_BLOCK_0) * TAPE_CLOCKS_PER_BYTE * BYTE_BLOCK_TOTAL;
|
||||||
|
|
||||||
/* compute the byte within the block */
|
/* compute the byte within the block */
|
||||||
tape->bytenum = dataclock / TAPE_CLOCKS_PER_BYTE;
|
tape->bytenum = dataclock / TAPE_CLOCKS_PER_BYTE;
|
||||||
dataclock -= tape->bytenum * TAPE_CLOCKS_PER_BYTE;
|
dataclock -= tape->bytenum * TAPE_CLOCKS_PER_BYTE;
|
||||||
|
|
||||||
/* compute the bit within the byte */
|
/* compute the bit within the byte */
|
||||||
tape->bitnum = dataclock / TAPE_CLOCKS_PER_BIT;
|
tape->bitnum = dataclock / TAPE_CLOCKS_PER_BIT;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* log */
|
/* log */
|
||||||
if (LOG_CASSETTE_STATE)
|
if (LOG_CASSETTE_STATE)
|
||||||
tape_describe_state(tape);
|
tape_describe_state(tape);
|
||||||
@ -2022,26 +2022,26 @@ static UINT8 tape_get_status_bits(const device_config *device)
|
|||||||
{
|
{
|
||||||
tape_state *tape = get_safe_token(device);
|
tape_state *tape = get_safe_token(device);
|
||||||
UINT8 tape_bits = 0;
|
UINT8 tape_bits = 0;
|
||||||
|
|
||||||
/* bit 0x20 is the BOT/EOT signal, which is also set in the leader/trailer area */
|
/* bit 0x20 is the BOT/EOT signal, which is also set in the leader/trailer area */
|
||||||
if (tape->region == REGION_LEADER || tape->region == REGION_BOT || tape->region == REGION_EOT || tape->region == REGION_TRAILER)
|
if (tape->region == REGION_LEADER || tape->region == REGION_BOT || tape->region == REGION_EOT || tape->region == REGION_TRAILER)
|
||||||
tape_bits |= 0x20;
|
tape_bits |= 0x20;
|
||||||
|
|
||||||
/* bit 0x40 is the clock, which is only valid in some areas of the data block */
|
/* bit 0x40 is the clock, which is only valid in some areas of the data block */
|
||||||
/* bit 0x80 is the data, which is only valid in some areas of the data block */
|
/* bit 0x80 is the data, which is only valid in some areas of the data block */
|
||||||
if (tape->region >= REGION_DATA_BLOCK_0 && tape->region <= REGION_DATA_BLOCK_255)
|
if (tape->region >= REGION_DATA_BLOCK_0 && tape->region <= REGION_DATA_BLOCK_255)
|
||||||
{
|
{
|
||||||
int blocknum = tape->region - REGION_DATA_BLOCK_0;
|
int blocknum = tape->region - REGION_DATA_BLOCK_0;
|
||||||
UINT8 byteval = 0x00;
|
UINT8 byteval = 0x00;
|
||||||
|
|
||||||
/* in the main data area, the clock alternates at the clock rate */
|
/* in the main data area, the clock alternates at the clock rate */
|
||||||
if (tape->bytenum >= BYTE_LEADIN && tape->bytenum <= BYTE_LEADOUT)
|
if (tape->bytenum >= BYTE_LEADIN && tape->bytenum <= BYTE_LEADOUT)
|
||||||
tape_bits |= ((UINT32)(tape->clockpos - REGION_BOT_GAP_END_CLOCK) & 1) ? 0x00 : 0x40;
|
tape_bits |= ((UINT32)(tape->clockpos - REGION_BOT_GAP_END_CLOCK) & 1) ? 0x00 : 0x40;
|
||||||
|
|
||||||
/* in the longclock area, the clock holds high */
|
/* in the longclock area, the clock holds high */
|
||||||
else if (tape->bytenum == BYTE_LONGCLOCK)
|
else if (tape->bytenum == BYTE_LONGCLOCK)
|
||||||
tape_bits |= 0x40;
|
tape_bits |= 0x40;
|
||||||
|
|
||||||
/* everywhere else, the clock holds to 0 */
|
/* everywhere else, the clock holds to 0 */
|
||||||
else
|
else
|
||||||
;
|
;
|
||||||
@ -2049,19 +2049,19 @@ static UINT8 tape_get_status_bits(const device_config *device)
|
|||||||
/* lead-in and lead-out bytes are 0xAA */
|
/* lead-in and lead-out bytes are 0xAA */
|
||||||
if (tape->bytenum == BYTE_HEADER || tape->bytenum == BYTE_TRAILER)
|
if (tape->bytenum == BYTE_HEADER || tape->bytenum == BYTE_TRAILER)
|
||||||
byteval = 0xaa;
|
byteval = 0xaa;
|
||||||
|
|
||||||
/* data block bytes are data */
|
/* data block bytes are data */
|
||||||
else if (tape->bytenum >= BYTE_DATA_0 && tape->bytenum <= BYTE_DATA_255)
|
else if (tape->bytenum >= BYTE_DATA_0 && tape->bytenum <= BYTE_DATA_255)
|
||||||
byteval = device->region[blocknum * 256 + (tape->bytenum - BYTE_DATA_0)];
|
byteval = device->region[blocknum * 256 + (tape->bytenum - BYTE_DATA_0)];
|
||||||
|
|
||||||
/* CRC MSB */
|
/* CRC MSB */
|
||||||
else if (tape->bytenum == BYTE_CRC16_MSB)
|
else if (tape->bytenum == BYTE_CRC16_MSB)
|
||||||
byteval = tape->crc16[blocknum] >> 8;
|
byteval = tape->crc16[blocknum] >> 8;
|
||||||
|
|
||||||
/* CRC LSB */
|
/* CRC LSB */
|
||||||
else if (tape->bytenum == BYTE_CRC16_LSB)
|
else if (tape->bytenum == BYTE_CRC16_LSB)
|
||||||
byteval = tape->crc16[blocknum];
|
byteval = tape->crc16[blocknum];
|
||||||
|
|
||||||
/* select the appropriate bit from the byte and move to the upper bit */
|
/* select the appropriate bit from the byte and move to the upper bit */
|
||||||
if ((byteval >> tape->bitnum) & 1)
|
if ((byteval >> tape->bitnum) & 1)
|
||||||
tape_bits |= 0x80;
|
tape_bits |= 0x80;
|
||||||
@ -2091,11 +2091,11 @@ static void tape_change_speed(const device_config *device, INT8 newspeed)
|
|||||||
tape_state *tape = get_safe_token(device);
|
tape_state *tape = get_safe_token(device);
|
||||||
attotime newperiod;
|
attotime newperiod;
|
||||||
INT8 absnewspeed;
|
INT8 absnewspeed;
|
||||||
|
|
||||||
/* do nothing if speed has not changed */
|
/* do nothing if speed has not changed */
|
||||||
if (tape->speed == newspeed)
|
if (tape->speed == newspeed)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* compute how fast to run the tape timer */
|
/* compute how fast to run the tape timer */
|
||||||
absnewspeed = (newspeed < 0) ? -newspeed : newspeed;
|
absnewspeed = (newspeed < 0) ? -newspeed : newspeed;
|
||||||
if (newspeed == 0)
|
if (newspeed == 0)
|
||||||
@ -2103,7 +2103,7 @@ static void tape_change_speed(const device_config *device, INT8 newspeed)
|
|||||||
else
|
else
|
||||||
newperiod = ATTOTIME_IN_HZ(TAPE_CLOCKRATE * absnewspeed);
|
newperiod = ATTOTIME_IN_HZ(TAPE_CLOCKRATE * absnewspeed);
|
||||||
|
|
||||||
/* set the new speed */
|
/* set the new speed */
|
||||||
timer_adjust_periodic(tape->timer, newperiod, 0, newperiod);
|
timer_adjust_periodic(tape->timer, newperiod, 0, newperiod);
|
||||||
tape->speed = newspeed;
|
tape->speed = newspeed;
|
||||||
}
|
}
|
||||||
@ -2117,7 +2117,7 @@ static DEVICE_START( decocass_tape )
|
|||||||
{
|
{
|
||||||
tape_state *tape = get_safe_token(device);
|
tape_state *tape = get_safe_token(device);
|
||||||
int curblock, offs, numblocks;
|
int curblock, offs, numblocks;
|
||||||
|
|
||||||
/* validate some basic stuff */
|
/* validate some basic stuff */
|
||||||
assert(device != NULL);
|
assert(device != NULL);
|
||||||
assert(device->static_config == NULL);
|
assert(device->static_config == NULL);
|
||||||
@ -2129,14 +2129,14 @@ static DEVICE_START( decocass_tape )
|
|||||||
tape->timer = timer_alloc(device->machine, tape_clock_callback, (void *)device);
|
tape->timer = timer_alloc(device->machine, tape_clock_callback, (void *)device);
|
||||||
if (device->region == NULL)
|
if (device->region == NULL)
|
||||||
return DEVICE_START_OK;
|
return DEVICE_START_OK;
|
||||||
|
|
||||||
/* scan for the first non-empty block in the image */
|
/* scan for the first non-empty block in the image */
|
||||||
for (offs = device->regionbytes - 1; offs >= 0; offs--)
|
for (offs = device->regionbytes - 1; offs >= 0; offs--)
|
||||||
if (device->region[offs] != 0)
|
if (device->region[offs] != 0)
|
||||||
break;
|
break;
|
||||||
numblocks = ((offs | 0xff) + 1) / 256;
|
numblocks = ((offs | 0xff) + 1) / 256;
|
||||||
assert(numblocks < ARRAY_LENGTH(tape->crc16));
|
assert(numblocks < ARRAY_LENGTH(tape->crc16));
|
||||||
|
|
||||||
/* compute the total length */
|
/* compute the total length */
|
||||||
tape->numclocks = REGION_BOT_GAP_END_CLOCK + numblocks * BYTE_BLOCK_TOTAL * 16 + REGION_BOT_GAP_END_CLOCK;
|
tape->numclocks = REGION_BOT_GAP_END_CLOCK + numblocks * BYTE_BLOCK_TOTAL * 16 + REGION_BOT_GAP_END_CLOCK;
|
||||||
|
|
||||||
@ -2145,7 +2145,7 @@ static DEVICE_START( decocass_tape )
|
|||||||
{
|
{
|
||||||
UINT16 crc = 0;
|
UINT16 crc = 0;
|
||||||
int testval;
|
int testval;
|
||||||
|
|
||||||
/* first CRC the 256 bytes of data */
|
/* first CRC the 256 bytes of data */
|
||||||
for (offs = 256 * curblock; offs < 256 * curblock + 256; offs++)
|
for (offs = 256 * curblock; offs < 256 * curblock + 256; offs++)
|
||||||
crc = tape_crc16_byte(crc, device->region[offs]);
|
crc = tape_crc16_byte(crc, device->region[offs]);
|
||||||
|
@ -217,7 +217,7 @@ static void memory_mapper_w(const address_space *space, struct memory_mapper_chi
|
|||||||
{
|
{
|
||||||
if ((chip->regs[offset] & 3) == 3)
|
if ((chip->regs[offset] & 3) == 3)
|
||||||
fd1094_machine_init(space->machine->cpu[0]);
|
fd1094_machine_init(space->machine->cpu[0]);
|
||||||
|
|
||||||
/* fd1094_machine_init calls device_reset on the CPU, so we must do this afterwards */
|
/* fd1094_machine_init calls device_reset on the CPU, so we must do this afterwards */
|
||||||
cpu_set_input_line(chip->cpu, INPUT_LINE_RESET, (chip->regs[offset] & 3) == 3 ? ASSERT_LINE : CLEAR_LINE);
|
cpu_set_input_line(chip->cpu, INPUT_LINE_RESET, (chip->regs[offset] & 3) == 3 ? ASSERT_LINE : CLEAR_LINE);
|
||||||
}
|
}
|
||||||
|
@ -30,7 +30,7 @@ static TILE_GET_INFO( goodejan_bg_tile_info )
|
|||||||
|
|
||||||
// WRONG!
|
// WRONG!
|
||||||
tile|= (goodejan_bgvram[tile_index]&0x8000)>>3;
|
tile|= (goodejan_bgvram[tile_index]&0x8000)>>3;
|
||||||
// if ((goodejan_bgvram[tile_index]&0x8000)==0x0000) tile+=0x1000;
|
// if ((goodejan_bgvram[tile_index]&0x8000)==0x0000) tile+=0x1000;
|
||||||
|
|
||||||
SET_TILE_INFO(1, tile, color, 0);
|
SET_TILE_INFO(1, tile, color, 0);
|
||||||
}
|
}
|
||||||
|
@ -43,7 +43,7 @@ static TILE_GET_INFO( get_bg_tile_info )
|
|||||||
{
|
{
|
||||||
int code = videoram[tile_index] + ((colorram[tile_index] & 0x18) << 5);
|
int code = videoram[tile_index] + ((colorram[tile_index] & 0x18) << 5);
|
||||||
int color = colorram[tile_index] & 0x07;
|
int color = colorram[tile_index] & 0x07;
|
||||||
|
|
||||||
// striv: colorram[tile_index] & 0x80 ???
|
// striv: colorram[tile_index] & 0x80 ???
|
||||||
|
|
||||||
SET_TILE_INFO(0, code, color, 0);
|
SET_TILE_INFO(0, code, color, 0);
|
||||||
|
@ -171,7 +171,7 @@ VIDEO_START( mrdo )
|
|||||||
|
|
||||||
tilemap_set_transparent_pen(bg_tilemap,0);
|
tilemap_set_transparent_pen(bg_tilemap,0);
|
||||||
tilemap_set_transparent_pen(fg_tilemap,0);
|
tilemap_set_transparent_pen(fg_tilemap,0);
|
||||||
|
|
||||||
tilemap_set_scrolldx(bg_tilemap, 0, 56);
|
tilemap_set_scrolldx(bg_tilemap, 0, 56);
|
||||||
tilemap_set_scrolldx(fg_tilemap, 0, 56);
|
tilemap_set_scrolldx(fg_tilemap, 0, 56);
|
||||||
tilemap_set_scrolldy(bg_tilemap, 0, 6);
|
tilemap_set_scrolldy(bg_tilemap, 0, 6);
|
||||||
|
@ -545,7 +545,7 @@ VIDEO_UPDATE( macross )
|
|||||||
|
|
||||||
VIDEO_UPDATE( tdragon )
|
VIDEO_UPDATE( tdragon )
|
||||||
{
|
{
|
||||||
// mcu_run(screen->machine, 1);
|
// mcu_run(screen->machine, 1);
|
||||||
|
|
||||||
tilemap_set_scrollx(tx_tilemap,0,-videoshift);
|
tilemap_set_scrollx(tx_tilemap,0,-videoshift);
|
||||||
|
|
||||||
@ -562,7 +562,7 @@ VIDEO_UPDATE( tdragon )
|
|||||||
|
|
||||||
VIDEO_UPDATE( hachamf )
|
VIDEO_UPDATE( hachamf )
|
||||||
{
|
{
|
||||||
// mcu_run(screen->machine, 0);
|
// mcu_run(screen->machine, 0);
|
||||||
|
|
||||||
tilemap_set_scrollx(tx_tilemap,0,-videoshift);
|
tilemap_set_scrollx(tx_tilemap,0,-videoshift);
|
||||||
|
|
||||||
|
@ -393,13 +393,13 @@ void debugwin_init_windows(void)
|
|||||||
{
|
{
|
||||||
int size = options_get_int(mame_options(), WINOPTION_DEBUGGER_FONT_SIZE);
|
int size = options_get_int(mame_options(), WINOPTION_DEBUGGER_FONT_SIZE);
|
||||||
TCHAR *t_face;
|
TCHAR *t_face;
|
||||||
|
|
||||||
// create a standard font
|
// create a standard font
|
||||||
t_face = tstring_from_utf8(options_get_string(mame_options(), WINOPTION_DEBUGGER_FONT));
|
t_face = tstring_from_utf8(options_get_string(mame_options(), WINOPTION_DEBUGGER_FONT));
|
||||||
debug_font = CreateFont(-MulDiv(size, GetDeviceCaps(temp_dc, LOGPIXELSY), 72), 0, 0, 0, FW_MEDIUM, FALSE, FALSE, FALSE,
|
debug_font = CreateFont(-MulDiv(size, GetDeviceCaps(temp_dc, LOGPIXELSY), 72), 0, 0, 0, FW_MEDIUM, FALSE, FALSE, FALSE,
|
||||||
ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FF_DONTCARE, t_face);
|
ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FF_DONTCARE, t_face);
|
||||||
free(t_face);
|
free(t_face);
|
||||||
|
|
||||||
// fall back to Lucida Console 8
|
// fall back to Lucida Console 8
|
||||||
if (debug_font == NULL)
|
if (debug_font == NULL)
|
||||||
{
|
{
|
||||||
|
@ -9,4 +9,4 @@
|
|||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
const char build_version[] = "0.128u7 ("__DATE__")";
|
const char build_version[] = "0.129 ("__DATE__")";
|
||||||
|
Loading…
Reference in New Issue
Block a user