mirror of
https://github.com/holub/mame
synced 2025-07-11 20:54:11 +03:00
Cleanups and version bump to 0.123u5.
This commit is contained in:
parent
4d5014585a
commit
a6b4a6ad50
@ -549,7 +549,7 @@ void z80pio_irq_reti(int which)
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
READ/WRITE HANDLERS
|
||||
READ/WRITE HANDLERS
|
||||
***************************************************************************/
|
||||
READ8_HANDLER(z80pio_0_r)
|
||||
{
|
||||
|
@ -96,7 +96,7 @@ int z80pio_irq_ack(int which);
|
||||
void z80pio_irq_reti(int which);
|
||||
|
||||
/***************************************************************************
|
||||
READ/WRITE HANDLERS
|
||||
READ/WRITE HANDLERS
|
||||
***************************************************************************/
|
||||
READ8_HANDLER(z80pio_0_r);
|
||||
WRITE8_HANDLER(z80pio_0_w);
|
||||
|
@ -522,7 +522,7 @@ static void machine_config_detokenize(machine_config *config, const machine_conf
|
||||
sound->route[sound->routes].target = TOKEN_GET_STRING(tokens);
|
||||
sound->routes++;
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
fatalerror("Invalid token %d in machine config\n", entrytype);
|
||||
break;
|
||||
|
@ -16,27 +16,27 @@
|
||||
|
||||
Next, the address is broken into two halves, an upper half and a
|
||||
lower half. The number of bits in each half can be controlled via
|
||||
the macros in LEVEL1_BITS and LEVEL2_BITS, but they default to the
|
||||
upper 18 bits and the lower 14 bits.
|
||||
|
||||
The upper half is then used as an index into a lookup table of bytes.
|
||||
If the value pulled from the table is between SUBTABLE_BASE and 255,
|
||||
then the lower half of the address is needed to resolve the final
|
||||
handler. In this case, the value from the table is combined with the
|
||||
the macros in LEVEL1_BITS and LEVEL2_BITS, but they default to the
|
||||
upper 18 bits and the lower 14 bits.
|
||||
|
||||
The upper half is then used as an index into a lookup table of bytes.
|
||||
If the value pulled from the table is between SUBTABLE_BASE and 255,
|
||||
then the lower half of the address is needed to resolve the final
|
||||
handler. In this case, the value from the table is combined with the
|
||||
lower address bits to form an index into a subtable.
|
||||
|
||||
|
||||
The final result of the lookup is a value from 0 to SUBTABLE_BASE - 1.
|
||||
These values correspond to memory handlers. The lower numbered
|
||||
handlers (from 0 through STATIC_COUNT - 1) are fixed handlers and refer
|
||||
to either memory banks or other special cases. The remaining handlers
|
||||
(from STATIC_COUNT through SUBTABLE_BASE - 1) are dynamically
|
||||
allocated to driver-specified handlers.
|
||||
|
||||
|
||||
Thus, table entries fall into these categories:
|
||||
|
||||
0 .. STATIC_COUNT - 1 = fixed handlers
|
||||
STATIC_COUNT .. SUBTABLE_BASE - 1 = driver-specific handlers
|
||||
SUBTABLE_BASE .. 255 = need to look up lower bits in subtable
|
||||
|
||||
0 .. STATIC_COUNT - 1 = fixed handlers
|
||||
STATIC_COUNT .. SUBTABLE_BASE - 1 = driver-specific handlers
|
||||
SUBTABLE_BASE .. 255 = need to look up lower bits in subtable
|
||||
|
||||
Caveats:
|
||||
|
||||
@ -527,7 +527,7 @@ void memory_init(running_machine *machine)
|
||||
static void memory_exit(running_machine *machine)
|
||||
{
|
||||
int cpunum, spacenum;
|
||||
|
||||
|
||||
/* free the memory blocks */
|
||||
while (memory_block_list != NULL)
|
||||
{
|
||||
@ -640,7 +640,7 @@ const data_accessors *memory_get_accessors(int spacenum, int databits, int endia
|
||||
***************************************************************************/
|
||||
|
||||
/*-------------------------------------------------
|
||||
address_map_alloc - build and allocate an
|
||||
address_map_alloc - build and allocate an
|
||||
address map for a CPU's address space
|
||||
-------------------------------------------------*/
|
||||
|
||||
@ -649,7 +649,7 @@ address_map *address_map_alloc(const machine_config *config, int cpunum, int spa
|
||||
int cputype = config->cpu[cpunum].type;
|
||||
const addrmap_token *internal_map = (const addrmap_token *)cputype_get_info_ptr(cputype, CPUINFO_PTR_INTERNAL_MEMORY_MAP + spacenum);
|
||||
address_map *map;
|
||||
|
||||
|
||||
map = malloc_or_die(sizeof(*map));
|
||||
memset(map, 0, sizeof(*map));
|
||||
|
||||
@ -681,15 +681,15 @@ void address_map_free(address_map *map)
|
||||
map->entrylist = entry->next;
|
||||
free(entry);
|
||||
}
|
||||
|
||||
|
||||
/* free the map */
|
||||
free(map);
|
||||
}
|
||||
|
||||
|
||||
/*-------------------------------------------------
|
||||
memory_get_address_map - return a pointer to
|
||||
the constructed address map for a CPU's
|
||||
memory_get_address_map - return a pointer to
|
||||
the constructed address map for a CPU's
|
||||
address space
|
||||
-------------------------------------------------*/
|
||||
|
||||
@ -710,7 +710,7 @@ static void address_map_detokenize(address_map *map, const addrmap_token *tokens
|
||||
address_map_entry *entry;
|
||||
UINT8 spacenum, databits;
|
||||
UINT32 entrytype;
|
||||
|
||||
|
||||
/* check the first token */
|
||||
TOKEN_GET_UINT32_UNPACK3(tokens, entrytype, 8, spacenum, 8, databits, 8);
|
||||
if (entrytype != ADDRMAP_TOKEN_START)
|
||||
@ -723,7 +723,7 @@ static void address_map_detokenize(address_map *map, const addrmap_token *tokens
|
||||
fatalerror("Included a mismatched address map (space %d) for an existing map of type %d!\n", spacenum, map->spacenum);
|
||||
if (map->databits != 0 && map->databits != databits)
|
||||
fatalerror("Included a mismatched address map (databits %d) for an existing map with databits %d!\n", databits, map->databits);
|
||||
|
||||
|
||||
/* fill in the map values */
|
||||
map->spacenum = spacenum;
|
||||
map->databits = databits;
|
||||
@ -755,7 +755,7 @@ static void address_map_detokenize(address_map *map, const addrmap_token *tokens
|
||||
TOKEN_UNGET_UINT32(tokens);
|
||||
TOKEN_GET_UINT64_UNPACK2(tokens, entrytype, 8, map->globalmask, 32);
|
||||
break;
|
||||
|
||||
|
||||
case ADDRMAP_TOKEN_UNMAP_VALUE:
|
||||
TOKEN_UNGET_UINT32(tokens);
|
||||
TOKEN_GET_UINT32_UNPACK2(tokens, entrytype, 8, map->unmapval, 1);
|
||||
@ -768,17 +768,17 @@ static void address_map_detokenize(address_map *map, const addrmap_token *tokens
|
||||
memset(entry, 0, sizeof(*entry));
|
||||
TOKEN_GET_UINT64_UNPACK2(tokens, entry->addrstart, 32, entry->addrend, 32);
|
||||
break;
|
||||
|
||||
|
||||
case ADDRMAP_TOKEN_MASK:
|
||||
TOKEN_UNGET_UINT32(tokens);
|
||||
TOKEN_GET_UINT64_UNPACK2(tokens, entrytype, 8, entry->addrmask, 32);
|
||||
break;
|
||||
|
||||
|
||||
case ADDRMAP_TOKEN_MIRROR:
|
||||
TOKEN_UNGET_UINT32(tokens);
|
||||
TOKEN_GET_UINT64_UNPACK2(tokens, entrytype, 8, entry->addrmirror, 32);
|
||||
break;
|
||||
|
||||
|
||||
case ADDRMAP_TOKEN_READ:
|
||||
entry->read = TOKEN_GET_PTR(tokens, read);
|
||||
entry->read_name = TOKEN_GET_STRING(tokens);
|
||||
@ -795,7 +795,7 @@ static void address_map_detokenize(address_map *map, const addrmap_token *tokens
|
||||
entry->read_devtype = TOKEN_GET_PTR(tokens, devtype);
|
||||
entry->read_devtag = TOKEN_GET_STRING(tokens);
|
||||
break;
|
||||
|
||||
|
||||
case ADDRMAP_TOKEN_DEVICE_WRITE:
|
||||
entry->write = TOKEN_GET_PTR(tokens, write);
|
||||
entry->write_name = TOKEN_GET_STRING(tokens);
|
||||
@ -812,21 +812,21 @@ static void address_map_detokenize(address_map *map, const addrmap_token *tokens
|
||||
case 64: entry->read.mhandler64 = port_tag_to_handler64(TOKEN_GET_STRING(tokens)); break;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case ADDRMAP_TOKEN_REGION:
|
||||
TOKEN_UNGET_UINT32(tokens);
|
||||
TOKEN_GET_UINT64_UNPACK3(tokens, entrytype, 8, entry->region, 24, entry->region_offs, 32);
|
||||
break;
|
||||
|
||||
|
||||
case ADDRMAP_TOKEN_SHARE:
|
||||
TOKEN_UNGET_UINT32(tokens);
|
||||
TOKEN_GET_UINT32_UNPACK2(tokens, entrytype, 8, entry->share, 24);
|
||||
break;
|
||||
|
||||
|
||||
case ADDRMAP_TOKEN_BASEPTR:
|
||||
entry->baseptr = (void **)TOKEN_GET_PTR(tokens, voidptr);
|
||||
break;
|
||||
|
||||
|
||||
case ADDRMAP_TOKEN_BASE_MEMBER:
|
||||
TOKEN_UNGET_UINT32(tokens);
|
||||
TOKEN_GET_UINT32_UNPACK2(tokens, entrytype, 8, entry->baseptroffs_plus1, 24);
|
||||
@ -836,13 +836,13 @@ static void address_map_detokenize(address_map *map, const addrmap_token *tokens
|
||||
case ADDRMAP_TOKEN_SIZEPTR:
|
||||
entry->sizeptr = TOKEN_GET_PTR(tokens, sizeptr);
|
||||
break;
|
||||
|
||||
|
||||
case ADDRMAP_TOKEN_SIZE_MEMBER:
|
||||
TOKEN_UNGET_UINT32(tokens);
|
||||
TOKEN_GET_UINT32_UNPACK2(tokens, entrytype, 8, entry->sizeptroffs_plus1, 24);
|
||||
entry->sizeptroffs_plus1++;
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
fatalerror("Invalid token %d in address map\n", entrytype);
|
||||
break;
|
||||
@ -873,7 +873,7 @@ void memory_set_decrypted_region(int cpunum, offs_t addrstart, offs_t addrend, v
|
||||
for (banknum = 0; banknum < STATIC_COUNT; banknum++)
|
||||
{
|
||||
bank_info *bank = &bankdata[banknum];
|
||||
|
||||
|
||||
/* consider this bank if it is used for reading and matches the CPU/address space */
|
||||
if (bank->used && bank->read && bank->cpunum == cpunum && bank->spacenum == ADDRESS_SPACE_PROGRAM)
|
||||
{
|
||||
@ -888,7 +888,7 @@ void memory_set_decrypted_region(int cpunum, offs_t addrstart, offs_t addrend, v
|
||||
if (cpu_getactivecpu() >= 0 && cpunum == cur_context && opcode_entry == banknum)
|
||||
force_opbase_update();
|
||||
}
|
||||
|
||||
|
||||
/* fatal error if the decrypted region straddles the bank */
|
||||
else if (bank->bytestart < byteend && bank->byteend > bytestart)
|
||||
fatalerror("memory_set_decrypted_region found straddled region %08X-%08X for CPU %d", bytestart, byteend, cpunum);
|
||||
@ -918,7 +918,7 @@ opbase_handler_func memory_set_opbase_handler(int cpunum, opbase_handler_func fu
|
||||
|
||||
|
||||
/*-------------------------------------------------
|
||||
memory_set_opbase - called by CPU cores to
|
||||
memory_set_opbase - called by CPU cores to
|
||||
update the opcode base for the given address
|
||||
-------------------------------------------------*/
|
||||
|
||||
@ -1429,7 +1429,7 @@ static void memory_init_cpudata(const machine_config *config)
|
||||
cpu->region = memory_region(REGION_CPU1 + cpunum);
|
||||
cpu->regionsize = memory_region_length(REGION_CPU1 + cpunum);
|
||||
|
||||
/* initialize each address space, and build up a mask of spaces */
|
||||
/* initialize each address space, and build up a mask of spaces */
|
||||
for (spacenum = 0; spacenum < ADDRESS_SPACES; spacenum++)
|
||||
{
|
||||
addrspace_data *space = &cpu->space[spacenum];
|
||||
@ -1497,7 +1497,7 @@ static void memory_init_preflight(const machine_config *config)
|
||||
{
|
||||
cpu_data *cpu = &cpudata[cpunum];
|
||||
int spacenum;
|
||||
|
||||
|
||||
/* loop over valid address spaces */
|
||||
for (spacenum = 0; spacenum < ADDRESS_SPACES; spacenum++)
|
||||
if (cpu->spacemask & (1 << spacenum))
|
||||
@ -1550,7 +1550,7 @@ static void memory_init_preflight(const machine_config *config)
|
||||
if (entry->region_offs + (entry->byteend - entry->bytestart + 1) > length)
|
||||
fatalerror("Error: CPU %d space %d memory map entry %X-%X extends beyond region %d size (%X)", cpunum, spacenum, entry->addrstart, entry->addrend, entry->region, length);
|
||||
}
|
||||
|
||||
|
||||
/* convert any region-relative entries to their memory pointers */
|
||||
if (entry->region != 0)
|
||||
entry->memory = memory_region(entry->region) + entry->region_offs;
|
||||
@ -1594,11 +1594,11 @@ static void memory_init_populate(running_machine *machine)
|
||||
if (space->map != NULL)
|
||||
{
|
||||
const address_map_entry *last_entry = NULL;
|
||||
|
||||
|
||||
while (last_entry != space->map->entrylist)
|
||||
{
|
||||
const address_map_entry *entry;
|
||||
|
||||
|
||||
/* find the entry before the last one we processed */
|
||||
for (entry = space->map->entrylist; entry->next != last_entry; entry = entry->next) ;
|
||||
last_entry = entry;
|
||||
@ -1774,7 +1774,7 @@ static void install_mem_handler(addrspace_data *space, read_or_write readorwrite
|
||||
static void bank_assign_static(int banknum, int cpunum, int spacenum, read_or_write readorwrite, offs_t bytestart, offs_t byteend)
|
||||
{
|
||||
bank_info *bank = &bankdata[banknum];
|
||||
|
||||
|
||||
/* if we're not yet used, fill in the data */
|
||||
if (!bank->used)
|
||||
{
|
||||
@ -1845,7 +1845,7 @@ static UINT8 get_handler_index(handler_data *table, void *object, genf *handler,
|
||||
if (HANDLER_IS_STATIC(handler))
|
||||
{
|
||||
entry = (FPTR)handler;
|
||||
|
||||
|
||||
/* if it is a bank, copy in the relevant information */
|
||||
if (HANDLER_IS_BANK(handler))
|
||||
{
|
||||
@ -1862,7 +1862,7 @@ static UINT8 get_handler_index(handler_data *table, void *object, genf *handler,
|
||||
for (entry = STATIC_COUNT; entry < SUBTABLE_BASE; entry++)
|
||||
{
|
||||
handler_data *hdata = &table[entry];
|
||||
|
||||
|
||||
/* if we hit a NULL hdata, then we need to allocate this one as a new one */
|
||||
if (hdata->handler.generic == NULL)
|
||||
{
|
||||
@ -1874,7 +1874,7 @@ static UINT8 get_handler_index(handler_data *table, void *object, genf *handler,
|
||||
hdata->object = object;
|
||||
return entry;
|
||||
}
|
||||
|
||||
|
||||
/* if we find a perfect match, return a duplicate entry */
|
||||
if (hdata->handler.generic == handler && hdata->bytestart == bytestart && hdata->bytemask == bytemask && hdata->object == object)
|
||||
return entry;
|
||||
@ -2271,12 +2271,12 @@ static void *allocate_memory_block(int cpunum, int spacenum, offs_t bytestart, o
|
||||
int region;
|
||||
|
||||
VPRINTF(("allocate_memory_block(%d,%d,%08X,%08X,%p)\n", cpunum, spacenum, bytestart, byteend, memory));
|
||||
|
||||
|
||||
/* determine how much memory to allocate for this */
|
||||
bytestoalloc = sizeof(*block);
|
||||
if (allocatemem)
|
||||
bytestoalloc += byteend - bytestart + 1;
|
||||
|
||||
|
||||
/* allocate and clear the memory */
|
||||
block = malloc_or_die(bytestoalloc);
|
||||
memset(block, 0, bytestoalloc);
|
||||
@ -2304,11 +2304,11 @@ static void *allocate_memory_block(int cpunum, int spacenum, offs_t bytestart, o
|
||||
block->bytestart = bytestart;
|
||||
block->byteend = byteend;
|
||||
block->data = memory;
|
||||
|
||||
|
||||
/* attach us to the head of the list */
|
||||
block->next = memory_block_list;
|
||||
memory_block_list = block;
|
||||
|
||||
|
||||
return memory;
|
||||
}
|
||||
|
||||
|
@ -57,7 +57,7 @@ enum
|
||||
ADDRMAP_TOKEN_START,
|
||||
ADDRMAP_TOKEN_END,
|
||||
ADDRMAP_TOKEN_INCLUDE,
|
||||
|
||||
|
||||
ADDRMAP_TOKEN_GLOBAL_MASK,
|
||||
ADDRMAP_TOKEN_UNMAP_VALUE,
|
||||
|
||||
@ -663,7 +663,7 @@ void memory_init(running_machine *machine);
|
||||
/* set the current memory context */
|
||||
void memory_set_context(int activecpu);
|
||||
|
||||
/* get a pointer to the set of memory accessor functions based on the address space,
|
||||
/* get a pointer to the set of memory accessor functions based on the address space,
|
||||
databus width, and endianness */
|
||||
const data_accessors *memory_get_accessors(int spacenum, int databits, int endianness);
|
||||
|
||||
|
@ -199,8 +199,8 @@ static void rgb888_draw_primitives(const render_primitive *primlist, void *dstda
|
||||
***************************************************************************/
|
||||
|
||||
/*-------------------------------------------------
|
||||
get_safe_token - makes sure that the passed
|
||||
in device is, in fact, a screen
|
||||
get_safe_token - makes sure that the passed
|
||||
in device is, in fact, a screen
|
||||
-------------------------------------------------*/
|
||||
|
||||
INLINE screen_state *get_safe_token(const device_config *device)
|
||||
|
@ -592,9 +592,9 @@ static void v9938_check_int (void)
|
||||
( (vdp->statReg[1] & 0x01) && (vdp->contReg[0] & 0x10) );
|
||||
|
||||
/*if(n && vdp->vblank_int)
|
||||
{
|
||||
vdp->vblank_int = 0;
|
||||
}*/
|
||||
{
|
||||
vdp->vblank_int = 0;
|
||||
}*/
|
||||
|
||||
if (n != vdp->INT)
|
||||
{
|
||||
@ -777,7 +777,7 @@ static void v9938_register_write (int reg, int data)
|
||||
/*
|
||||
WTF is this? Whatever this was intended to do, it is nonsensical.
|
||||
Might as well pick a random number....
|
||||
This was an attempt to emulate H-Blank flag ;)
|
||||
This was an attempt to emulate H-Blank flag ;)
|
||||
n = cycles_currently_ran ();
|
||||
if ( (n < 28) || (n > 199) ) vdp.statReg[2] |= 0x20;
|
||||
else vdp.statReg[2] &= ~0x20;
|
||||
@ -1516,8 +1516,8 @@ int v9938_interrupt (int which)
|
||||
}
|
||||
|
||||
/*
|
||||
Not really right... won't work with sprites in graphics 7
|
||||
and with palette updated mid-screen
|
||||
Not really right... won't work with sprites in graphics 7
|
||||
and with palette updated mid-screen
|
||||
*/
|
||||
int v9938_get_transpen(int which)
|
||||
{
|
||||
|
@ -195,7 +195,7 @@ Earthjkr: Wrong screen size? Left edge of green blueprints in
|
||||
attract looks like it's incorrectly off screen.
|
||||
|
||||
Cadash: Hooks for twin arcade machine setup: will involve emulating an extra
|
||||
microcontroller, the 07 rom might be the program for it. Cadash background
|
||||
microcontroller, the 07 rom might be the program for it. Cadash background
|
||||
colors don't reinitialize properly with save states.
|
||||
|
||||
Galmedes: Test mode has select1/2 stuck at on.
|
||||
|
@ -254,8 +254,8 @@ static INPUT_PORTS_START( baraduke )
|
||||
PORT_DIPSETTING( 0x30, DEF_STR( Normal ) )
|
||||
PORT_DIPSETTING( 0x10, DEF_STR( Hard ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Very_Hard ) )
|
||||
/* To advance rounds: set SWB:5 to ON, coin up game and push 1P start.
|
||||
Use joystick to select round 1 - 48. Set SWB:5 to OFF to play selected round. */
|
||||
/* To advance rounds: set SWB:5 to ON, coin up game and push 1P start.
|
||||
Use joystick to select round 1 - 48. Set SWB:5 to OFF to play selected round. */
|
||||
PORT_DIPNAME( 0x08, 0x08, "Round Select" ) PORT_DIPLOCATION("SWB:5")
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
@ -323,8 +323,8 @@ static INPUT_PORTS_START( metrocrs )
|
||||
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SWB:1")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
|
||||
/* To advance rounds: set SWB:2 to ON, coin up game and push 1P start.
|
||||
Use joystick to select round 1 - 32. Set SWB:2 to OFF to play selected round. */
|
||||
/* To advance rounds: set SWB:2 to ON, coin up game and push 1P start.
|
||||
Use joystick to select round 1 - 32. Set SWB:2 to OFF to play selected round. */
|
||||
PORT_DIPNAME( 0x40, 0x40, "Round Select" ) PORT_DIPLOCATION("SWB:2")
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
|
@ -7,7 +7,7 @@ driver by Ernesto Corvi
|
||||
Notes:
|
||||
This board seems to be an Irem design.
|
||||
The sound hardware is modified the 6803-based one used by the classic Irem
|
||||
games. There's only one AY 3-8910 chip and no MSM5205. There are also two
|
||||
games. There's only one AY 3-8910 chip and no MSM5205. There are also two
|
||||
SN76489 controlled directly by main(!) cpu, and used only for in-game music.
|
||||
The video hardware is pretty much like Irem games too. The only
|
||||
strange thing is that the screen is flipped vertically.
|
||||
@ -265,7 +265,7 @@ static MACHINE_DRIVER_START( kncljoe )
|
||||
MDRV_CPU_ADD(Z80, XTAL_6MHz) /* verified on pcb */
|
||||
MDRV_CPU_PROGRAM_MAP(main_map,0)
|
||||
MDRV_CPU_VBLANK_INT("main", irq0_line_hold)
|
||||
|
||||
|
||||
MDRV_CPU_ADD_TAG("sound", M6803, XTAL_3_579545MHz) /* verified on pcb */
|
||||
MDRV_CPU_PROGRAM_MAP(sound_map,0)
|
||||
MDRV_CPU_IO_MAP(sound_portmap,0)
|
||||
@ -295,7 +295,7 @@ static MACHINE_DRIVER_START( kncljoe )
|
||||
MDRV_SOUND_ADD(AY8910, XTAL_3_579545MHz/4) /* verified on pcb */
|
||||
MDRV_SOUND_CONFIG(ay8910_interface)
|
||||
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
|
||||
|
||||
|
||||
MDRV_SOUND_ADD(SN76489, XTAL_3_579545MHz) /* verified on pcb */
|
||||
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
|
||||
|
||||
|
@ -1,15 +1,15 @@
|
||||
/*
|
||||
/*
|
||||
Merit CRT250 and CRT260 hardware
|
||||
|
||||
|
||||
Driver by Mariusz Wojcieszek
|
||||
|
||||
|
||||
CRT 250 (basic components, also used by CRT260)
|
||||
Main CPU: 1xZ80B
|
||||
Sound: 1xYM2149F (or compatible)
|
||||
Video: 2xYamaha V9938 (MSX2 video chip!)
|
||||
Other: 2xZ80APIO (I/O and interrupt controllers)
|
||||
1x8255 (I/O)
|
||||
|
||||
|
||||
CRT 260 additional components:
|
||||
- Microtouch touch screen controller (SMT-3)
|
||||
- PC16550 UART (for communication with touch screen controller)
|
||||
@ -52,7 +52,7 @@
|
||||
- megat4: rom u32 was bad, currently using u32 from megat4te
|
||||
- megat5: has jmp $0000 in the initialization code causing infinite loop, is rom bad?
|
||||
*/
|
||||
|
||||
|
||||
#include "driver.h"
|
||||
#include "deprecat.h"
|
||||
#include "cpu/z80/z80.h"
|
||||
@ -86,7 +86,7 @@ static UINT8* meritm_ram;
|
||||
#define DS1204_STATE_READ_KEY 2
|
||||
#define DS1204_STATE_WRITE_SECURITY_MATCH 3
|
||||
#define DS1204_STATE_READ_NVRAM 4
|
||||
|
||||
|
||||
static struct
|
||||
{
|
||||
int state;
|
||||
@ -96,9 +96,9 @@ static struct
|
||||
UINT8 nvram[16];
|
||||
int out_bit;
|
||||
UINT8 command[3];
|
||||
|
||||
|
||||
} ds1204;
|
||||
|
||||
|
||||
void ds1204_w( int rst, int clk, int dq )
|
||||
{
|
||||
//logerror("ds1204_w: rst = %d, clk = %d, dq = %d\n", rst, clk, dq );
|
||||
@ -177,13 +177,13 @@ void ds1204_w( int rst, int clk, int dq )
|
||||
ds1204.last_clk = clk;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
int ds1204_r(void)
|
||||
{
|
||||
//logerror("ds1204_r\n");
|
||||
return ds1204.out_bit;
|
||||
};
|
||||
|
||||
|
||||
void ds1204_init(const UINT8* key, const UINT8* nvram)
|
||||
{
|
||||
memset(&ds1204, 0, sizeof(ds1204));
|
||||
@ -204,7 +204,7 @@ void ds1204_init(const UINT8* key, const UINT8* nvram)
|
||||
* Microtouch touch screen controller
|
||||
*
|
||||
*************************************/
|
||||
|
||||
|
||||
static struct
|
||||
{
|
||||
UINT8 tx_buffer[16];
|
||||
@ -220,7 +220,7 @@ static struct
|
||||
void (*tx_callback)(UINT8 data);
|
||||
int (*touch_callback)(int *touch_x, int *touch_y);
|
||||
} microtouch;
|
||||
|
||||
|
||||
|
||||
static int microtouch_check_command( const char* commandtocheck, int command_len, UINT8* command_data )
|
||||
{
|
||||
@ -236,7 +236,7 @@ static int microtouch_check_command( const char* commandtocheck, int command_len
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void microtouch_send_format_table_packet(UINT8 flag, int x, int y)
|
||||
{
|
||||
microtouch.tx_callback(flag);
|
||||
@ -321,7 +321,7 @@ static void microtouch_rx(int count, UINT8* data)
|
||||
microtouch.tx_buffer[i+microtouch.tx_buffer_ptr] = data[i];
|
||||
microtouch.tx_buffer_ptr++;
|
||||
}
|
||||
|
||||
|
||||
if (microtouch.tx_buffer_ptr > 0 && (microtouch.tx_buffer[microtouch.tx_buffer_ptr-1] == 0x0d))
|
||||
{
|
||||
// check command
|
||||
@ -385,7 +385,7 @@ static int meritm_touch_coord_transform(int *touch_x, int *touch_y)
|
||||
int xscr = (int)((double)(*touch_x)/0x4000*544);
|
||||
int yscr = (int)((double)(*touch_y)/0x4000*480);
|
||||
|
||||
if( (xscr < 16) ||
|
||||
if( (xscr < 16) ||
|
||||
(xscr > 544-16) ||
|
||||
(yscr < 16) ||
|
||||
(yscr > 480-16))
|
||||
@ -753,7 +753,7 @@ static INPUT_PORTS_START(meritm_crt260)
|
||||
PORT_START_TAG("PIO1_PORTB")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2)
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN)
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME( "Calibration" ) PORT_CODE(KEYCODE_C)
|
||||
INPUT_PORTS_END
|
||||
|
||||
@ -771,7 +771,7 @@ static INPUT_PORTS_START(meritm_crt250)
|
||||
PORT_START_TAG("PIO1_PORTB")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2)
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN)
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN)
|
||||
INPUT_PORTS_END
|
||||
|
||||
@ -963,7 +963,7 @@ static const z80pio_interface meritm_io_pio_intf =
|
||||
/*
|
||||
static void meritm_pio1_portb_input_changed_callback(void *param, UINT32 oldval, UINT32 newval)
|
||||
{
|
||||
z80pio_p_w(1, 1, (UINT8)newval);
|
||||
z80pio_p_w(1, 1, (UINT8)newval);
|
||||
}
|
||||
*/
|
||||
|
||||
@ -1059,14 +1059,14 @@ static MACHINE_DRIVER_START(meritm_crt250)
|
||||
MDRV_SCREEN_SIZE(MSX2_TOTAL_XRES_PIXELS, MSX2_TOTAL_YRES_PIXELS)
|
||||
MDRV_SCREEN_VISIBLE_AREA(MSX2_XBORDER_PIXELS - MSX2_VISIBLE_XBORDER_PIXELS, MSX2_TOTAL_XRES_PIXELS - MSX2_XBORDER_PIXELS + MSX2_VISIBLE_XBORDER_PIXELS - 1, MSX2_YBORDER_PIXELS - MSX2_VISIBLE_YBORDER_PIXELS, MSX2_TOTAL_YRES_PIXELS - MSX2_YBORDER_PIXELS + MSX2_VISIBLE_YBORDER_PIXELS - 1)
|
||||
MDRV_PALETTE_LENGTH(512)
|
||||
|
||||
|
||||
MDRV_PALETTE_INIT( v9938 )
|
||||
|
||||
MDRV_VIDEO_START(meritm)
|
||||
MDRV_VIDEO_UPDATE(meritm)
|
||||
|
||||
/* sound hardware */
|
||||
MDRV_SPEAKER_STANDARD_MONO("mono")
|
||||
MDRV_SPEAKER_STANDARD_MONO("mono")
|
||||
MDRV_SOUND_ADD(AY8910, SYSTEM_CLK/6)
|
||||
MDRV_SOUND_CONFIG(ay8910_interface)
|
||||
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||
@ -1270,7 +1270,7 @@ ROM_START( megat4te )
|
||||
ROM_RELOAD( 0x280000, 0x080000 )
|
||||
ROM_LOAD( "megat4.u38", 0x300000, 0x080000, CRC(124d5b84) SHA1(3c2117f56d0dc406bfb508989729e36781e215a4) )
|
||||
ROM_RELOAD( 0x380000, 0x080000 )
|
||||
|
||||
|
||||
ROM_REGION( 0x8000, REGION_USER1, 0 ) // DS1644 nv ram
|
||||
ROM_LOAD( "ds1644.u31", 0x00000, 0x8000, CRC(0908bc39) SHA1(e6ec6238d6bf5c802e046407c0f25a83b09f6135) )
|
||||
|
||||
@ -1390,7 +1390,7 @@ static DRIVER_INIT(megat3)
|
||||
|
||||
static DRIVER_INIT(megat4)
|
||||
{
|
||||
static const UINT8 megat4_ds1204_nvram[16] =
|
||||
static const UINT8 megat4_ds1204_nvram[16] =
|
||||
{ 0xe3, 0x08, 0x39, 0xd8, 0x4c, 0xbb, 0xc4, 0xf8, 0xf0, 0xe2, 0xd8, 0x77, 0xa8, 0x3d, 0x95, 0x02 };
|
||||
|
||||
ds1204_init(0, megat4_ds1204_nvram);
|
||||
@ -1398,7 +1398,7 @@ static DRIVER_INIT(megat4)
|
||||
|
||||
static DRIVER_INIT(megat4te)
|
||||
{
|
||||
static const UINT8 megat4te_ds1204_nvram[16] =
|
||||
static const UINT8 megat4te_ds1204_nvram[16] =
|
||||
{ 0x05, 0x21, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00 };
|
||||
|
||||
ds1204_init(0, megat4te_ds1204_nvram);
|
||||
@ -1410,7 +1410,7 @@ static DRIVER_INIT(megat4te)
|
||||
|
||||
static DRIVER_INIT(megat6)
|
||||
{
|
||||
static const UINT8 megat6_ds1204_nvram[16] =
|
||||
static const UINT8 megat6_ds1204_nvram[16] =
|
||||
{ 0x07, 0x15, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00 };
|
||||
|
||||
ds1204_init(0, megat6_ds1204_nvram);
|
||||
|
@ -1108,7 +1108,7 @@ static MACHINE_DRIVER_START( hrdtimes )
|
||||
MDRV_CPU_PROGRAM_MAP(hrdtimes_main_map, 0)
|
||||
MDRV_CPU_VBLANK_INT("main", irq6_line_hold)
|
||||
|
||||
// MDRV_CPU_ADD(PIC16C57, XTAL_24MHz/2) /* verified on pcb */
|
||||
// MDRV_CPU_ADD(PIC16C57, XTAL_24MHz/2) /* verified on pcb */
|
||||
/* Program and Data Maps are internal to the MCU */
|
||||
// MDRV_CPU_IO_MAP(playmark_sound_io_map, 0)
|
||||
|
||||
|
@ -98,8 +98,8 @@ write:
|
||||
***************************************************************************
|
||||
|
||||
DIP locations verified for:
|
||||
-punchout (manual)
|
||||
-spnchout (manual)
|
||||
-punchout (manual)
|
||||
-spnchout (manual)
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
@ -545,12 +545,12 @@ static INPUT_PORTS_START( punchout )
|
||||
PORT_DIPSETTING( 0x0c, DEF_STR( 3C_1C ) )
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
|
||||
// PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) /* Not documented */
|
||||
// PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) /* Not documented */
|
||||
PORT_DIPSETTING( 0x08, "1 Coin/2 Credits (2 Credits/1 Play)" ) /* Not documented */
|
||||
PORT_DIPSETTING( 0x0d, "1 Coin/3 Credits (2 Credits/1 Play)" ) /* Not documented */
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
|
||||
// PORT_DIPSETTING( 0x04, DEF_STR( 1C_2C ) ) /* Not documented */
|
||||
// PORT_DIPSETTING( 0x09, DEF_STR( 1C_2C ) ) /* Not documented */
|
||||
// PORT_DIPSETTING( 0x04, DEF_STR( 1C_2C ) ) /* Not documented */
|
||||
// PORT_DIPSETTING( 0x09, DEF_STR( 1C_2C ) ) /* Not documented */
|
||||
PORT_DIPSETTING( 0x05, DEF_STR( 1C_3C ) )
|
||||
PORT_DIPSETTING( 0x06, DEF_STR( 1C_4C ) )
|
||||
PORT_DIPSETTING( 0x0a, DEF_STR( 1C_5C ) )
|
||||
@ -576,11 +576,11 @@ static INPUT_PORTS_START( spnchout )
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( 6C_1C ) ) /* Not documented */
|
||||
PORT_DIPSETTING( 0x04, DEF_STR( 5C_1C ) ) /* Not documented */
|
||||
PORT_DIPSETTING( 0x03, DEF_STR( 4C_1C ) ) /* Not documented */
|
||||
// PORT_DIPSETTING( 0x09, DEF_STR( 4C_1C ) ) /* Not documented */
|
||||
// PORT_DIPSETTING( 0x09, DEF_STR( 4C_1C ) ) /* Not documented */
|
||||
PORT_DIPSETTING( 0x0c, DEF_STR( 3C_1C ) )
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
|
||||
// PORT_DIPSETTING( 0x0e, DEF_STR( 1C_1C ) ) /* Not documented */
|
||||
// PORT_DIPSETTING( 0x0e, DEF_STR( 1C_1C ) ) /* Not documented */
|
||||
PORT_DIPSETTING( 0x0d, "1 Coin/3 Credits (2 Credits/1 Play)" ) /* Not documented */
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
|
||||
PORT_DIPSETTING( 0x0b, "1 Coin/2 Credits (3 Credits/1 Play)" ) /* Not documented */
|
||||
|
@ -130,12 +130,12 @@ static OPBASE_HANDLER( esb_setopbase )
|
||||
if ((address & 0xe000) == 0x8000)
|
||||
{
|
||||
offs_t pc = activecpu_get_pc();
|
||||
|
||||
|
||||
/* filter out duplicates; we get these because the handler gets called for
|
||||
multiple reasons:
|
||||
1. Because we have read/write handlers backing the current address
|
||||
2. Because the CPU core executed a jump to a new address
|
||||
*/
|
||||
multiple reasons:
|
||||
1. Because we have read/write handlers backing the current address
|
||||
2. Because the CPU core executed a jump to a new address
|
||||
*/
|
||||
if (pc != slapstic_last_pc || address != slapstic_last_address)
|
||||
{
|
||||
slapstic_last_pc = pc;
|
||||
|
@ -511,8 +511,8 @@ static void slapstic_postload(void)
|
||||
static OPBASE_HANDLER( atarigen_slapstic_setopbase )
|
||||
{
|
||||
/* if we jump to an address in the slapstic region, tweak the slapstic
|
||||
at that address and return ~0; this will cause us to be called on
|
||||
subsequent fetches as well */
|
||||
at that address and return ~0; this will cause us to be called on
|
||||
subsequent fetches as well */
|
||||
address &= ~atarigen_slapstic_mirror;
|
||||
if (address >= atarigen_slapstic_base && address < atarigen_slapstic_base + 0x8000)
|
||||
{
|
||||
@ -557,7 +557,7 @@ void atarigen_slapstic_init(int cpunum, offs_t base, offs_t mirror, int chipnum)
|
||||
|
||||
/* ensure we recopy memory for the bank */
|
||||
atarigen_slapstic_bank = 0xff;
|
||||
|
||||
|
||||
/* install an opcode base handler if we are a 68000 or variant */
|
||||
atarigen_slapstic_base = base;
|
||||
atarigen_slapstic_mirror = mirror;
|
||||
|
@ -871,11 +871,11 @@ int slapstic_bank(void)
|
||||
static int alt2_kludge(offs_t offset)
|
||||
{
|
||||
/* Of the 3 alternate addresses, only the middle one needs to actually hit
|
||||
in the slapstic region; the first and third ones can be anywhere in the
|
||||
address space. For this reason, the read/write handlers usually only
|
||||
see the 2nd access. For the 68000-based games, we do the following
|
||||
kludge to examine the opcode that is executing and look for the 1st
|
||||
and 3rd accesses. */
|
||||
in the slapstic region; the first and third ones can be anywhere in the
|
||||
address space. For this reason, the read/write handlers usually only
|
||||
see the 2nd access. For the 68000-based games, we do the following
|
||||
kludge to examine the opcode that is executing and look for the 1st
|
||||
and 3rd accesses. */
|
||||
|
||||
if (access_68k)
|
||||
{
|
||||
|
@ -176,7 +176,7 @@ VIDEO_EOF( xmen6p )
|
||||
|
||||
xmen_current_frame ^=0x8000;
|
||||
|
||||
// const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
|
||||
// const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
|
||||
// cliprect.min_x = visarea->min_x;
|
||||
// cliprect.max_x = visarea->max_x;
|
||||
// cliprect.min_y = visarea->min_y;
|
||||
|
@ -9,4 +9,4 @@
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
const char build_version[] = "0.123u4 ("__DATE__")";
|
||||
const char build_version[] = "0.123u5 ("__DATE__")";
|
||||
|
Loading…
Reference in New Issue
Block a user