/***************************************************************************
Some Dynax/Nakanihon games using the third version of their blitter
Driver by Nicola Salmoria, Luca Elia
Hardware:
CPU: Z80 or 68000
Sound: (AY-3-8910) + YM2413 + MSM6295
Other: Real Time Clock (Oki MSM6242B or 72421B)
------------------------------------------------------------------------------------------------------------------
Year + Game Board CPU Sound Custom Other
------------------------------------------------------------------------------------------------------------------
92 Monkey Mole Panic 2xZ80 AY8910 YM2413 M6295 NL-001 1108(x2) 1427(x2) 8251
93 Animalandia Jr. 2xZ80 AY8910 YM2413 M6295 NL-001 NL-003(x2) NL-004(x2) 8251
93 Quiz Channel Question N7311208L1-2 Z80 YM2413 M6295 NL-002 1108F0405 1427F0071
93 First Funky Fighter N7403208L-2 2xZ80 YM2149 YM2413 M6295 NL-001 NL-002 NL-005
94 Mysterious World D7107058L1-1 Z80 YM2149 YM2413 M6295 NL-002 1108F0405 1427F0071 4L02?
94 Mysterious Universe D7107058L1-1 Z80 YM2149 YM2413 M6295 NL-002 1108F0405 1427F0071
94 Mysterious Orient D7107058L1-1 Z80 YM2149 YM2413 M6295 NL-002 1108F0405 1427F0071
94 Quiz 365 68000 AY8910 YM2413 M6295
94 Rong Rong (J) N8010178L1 Z80 YM2413 M6295 NL-002 1108F0405 1427F0071 4L02F2637
94 Hana Ginga D8102048L1 Z80 YM2149 YM2413 M6295 NL-002 1108F0405 1427F0071 4L02?
94 Super Hana Paradise N8010178L1+N73RSUB Z80 YM2413 M6295 NL-002 1108F0406 1427F0071 4L02F2637
95 Dai Chuuka Ken D11107218L1 Z80 AY8910 YM2413 M6295 70C160F009
95 Hana Gokou N83061581L1 Z80 AY8910 YM2413 M6295 NL-002 1108? 1427? 4L02?
95 Hana Gokou Bangaihen N10805078L1 Z80 AY8910 YM2413 M6295 NL-002 1108? 1427? 4L02?
95 Nettoh Quiz Champion 68000 AY8910 YM2413 M6295
95 Don Den Lover (J) D1120901L8 68000 YMZ284 YM2413 M6295 NL-005
96 Don Den Lover (HK) D11309208L1 68000 YMZ284 YM2413 M6295 NL-005
96 Panel&Variety Akamaru 68000 YMZ284 YM2413 M6295 NL-005
96 Fantasic Love NS5000101+? Z80 YMZ284 YM2413 M6295 NL-005
96 Hana Kanzashi Z80 YM2413 M6295 70C160F011?
96 Mj Seiryu Densetsu NM5020403 Z80 YMZ284 YM2413 M6295 70C160F011?
97 Hana Kagerou Z80 YM2413 M6295 70C160F011
98 Chuukanejyo D11107218L1 Z80 AY8910 YM2413 M6295 70C160F009
98 Reach Ippatsu Z80 YM2413 M6295 70C160F011
99 Jong-Tei NM532-9902 Z80 YM2413 M6295 4L10FXXXX?
02 Mj Daimyojin TSM015-0111 Z80 YM2413 M6295 70C160F011
------------------------------------------------------------------------------------------------------------------
TODO:
- NVRAM, RTC
- verify whether clip_width/height is actually clip_x_end/y_end
(this also applies to rectangles drawing, command 1c):
the girl in hanakanz divided in 3 chunks (during the intro when bet is on)
is ok with the latter setting; scene 2 of gal 1 check in hkagerou (press 1 in scene 1)
is maybe clipped too much this way and hints at the former setting being correct.
There is an #if to switch between the two modes in do_plot.
- ddenlovr: understand the extra commands for the blitter compressed data,
used only by this game.
- ddenlovr: sometimes the colors of the girl in the presentation before the
beginning of a stage are wrong, and they correct themselves when the board
is drawn.
- the registers right after the palette bank selectors (e00048-e0004f in ddenlovr)
are not understood. They are related to the layer enable register and to the
unknown blitter register 05.
ddenlovr has a function at 001798 to initialize these four registers. It uses
a table with 7 possible different layouts:
0f 0f 3f cf
4f 0f af 1f
0f 0f 6f 9f
0f 0f 0f ff
0f 0f 7f 8f
0f 0f cf 3f
0f 0f 8f 7f
the table is copied to e00048-e0004f and is also used to create a 16-entry
array used to feed blitter register 05. Every element of the array is the OR
of the values in the table above corresponding to bits set in the layer enable
register. Note that in the table above the top 4 bits are split among the four
entries.
- The meaning of blitter commands 43 and 8c is not understood.
- quizchq: it locks up, some samples are played at the wrong pitch
- quiz365 protection
- ddenlovj, akamaru: the elapsed time text in the "game information" screen
is all wrong (RTC/interrupts related).
- sryudens: Transparency problems (Test->Option->Gal, Bonus Game during Demo mode).
e.g. in the latter, transparency pen is set to ff instead of 0 (I/O address 2b)
Notes:
- daimyojn: In Test->Option, press "N Ron Ron N" to access more options
***************************************************************************/
#include "emu.h"
#include "cpu/m68000/m68000.h"
#include "deprecat.h"
#include "cpu/z80/z80.h"
#include "sound/ay8910.h"
#include "sound/okim6295.h"
#include "sound/2413intf.h"
#include "machine/msm6242.h"
#include "profiler.h"
#include "includes/dynax.h"
/***************************************************************************
Blitter Data Format
The gfx data is a bitstream. Command size is always 3 bits, argument size
can be from 1 to 8 bits (up to 16 bits seem to be allowed, but not used).
Data starts with an 8 bit header:
7------- not used
-654---- size-1 of arguments indicating pen number (B)
----3210 size-1 of arguments indicating number of pixels (A)
The commands are:
000 Increment Y
001 Followed by A bits (N) and by B bits (P): draw N+1 pixels using pen P
010 Followed by A bits (N) and by (N+1)*B bits: copy N+1 pixels
011 Followed by A bits (N): skip N pixels
100 not used
101 Followed by 4 bits: change argument size
110 Followed by 3 bits: change pen size
111 Stop.
The drawing operation is verified (quiz365) to modify ddenlovr_blit_y.
***************************************************************************/
enum { BLIT_NEXT = 0, BLIT_LINE, BLIT_COPY, BLIT_SKIP, BLIT_CHANGE_NUM, BLIT_CHANGE_PEN, BLIT_UNKNOWN, BLIT_STOP };
// 0 1 2 3 4 5 6 7
static const int ddenlovr_commands[8] = { BLIT_NEXT, BLIT_LINE, BLIT_COPY, BLIT_SKIP, BLIT_UNKNOWN, BLIT_CHANGE_NUM, BLIT_CHANGE_PEN, BLIT_STOP };
static const int hanakanz_commands[8] = { BLIT_NEXT, BLIT_CHANGE_PEN, BLIT_CHANGE_NUM, BLIT_UNKNOWN, BLIT_SKIP, BLIT_COPY, BLIT_LINE, BLIT_STOP };
static const int mjflove_commands[8] = { BLIT_STOP, BLIT_CHANGE_PEN, BLIT_CHANGE_NUM, BLIT_UNKNOWN, BLIT_SKIP, BLIT_COPY, BLIT_LINE, BLIT_NEXT };
VIDEO_START( ddenlovr )
{
dynax_state *state = machine.driver_data<dynax_state>();
int i;
for (i = 0; i < 8; i++)
{
state->m_ddenlovr_pixmap[i] = auto_alloc_array(machine, UINT8, 512 * 512);
state->m_ddenlovr_scroll[i * 2 + 0] = state->m_ddenlovr_scroll[i * 2 + 1] = 0;
}
state->m_extra_layers = 0;
state->m_ddenlovr_clip_ctrl = 0x0f;
state->m_ddenlovr_layer_enable = state->m_ddenlovr_layer_enable2 = 0x0f;
state->m_ddenlovr_blit_pen_mask = 0xff;
// older games do not set these !?
state->m_ddenlovr_clip_width = 0x400;
state->m_ddenlovr_clip_height = 0x400;
state->m_ddenlovr_blit_rom_bits = 8;
state->m_ddenlovr_blit_commands = ddenlovr_commands;
/* init to 0 the remaining elements */
state->m_ddenlovr_dest_layer = 0;
state->m_ddenlovr_blit_flip = 0;
state->m_ddenlovr_blit_x = 0;
state->m_ddenlovr_blit_y = 0;
state->m_ddenlovr_blit_address = 0;
state->m_ddenlovr_blit_pen = 0;
state->m_ddenlovr_blit_pen_mode = 0;
state->m_ddenlovr_blitter_irq_flag = 0;
state->m_ddenlovr_blitter_irq_enable = 0;
state->m_ddenlovr_rect_width = 0;
state->m_ddenlovr_rect_height = 0;
state->m_ddenlovr_line_length = 0;
state->m_ddenlovr_clip_x = 0;
state->m_ddenlovr_clip_y = 0;
state->m_ddenlovr_priority = 0;
state->m_ddenlovr_priority2 = 0;
state->m_ddenlovr_bgcolor = 0;
state->m_ddenlovr_bgcolor2 = 0;
state->m_ddenlovr_blit_latch = 0;
state->m_ddenlovr_blit_regs[0] = 0;
state->m_ddenlovr_blit_regs[1] = 0;
for (i = 0; i < 8; i++)
{
state->m_ddenlovr_palette_base[i] = 0;
state->m_ddenlovr_palette_mask[i] = 0;
state->m_ddenlovr_transparency_pen[i] = 0;
state->m_ddenlovr_transparency_mask[i] = 0;
}
/* register save states */
state->save_item(NAME(state->m_ddenlovr_dest_layer));
state->save_item(NAME(state->m_ddenlovr_blit_flip));
state->save_item(NAME(state->m_ddenlovr_blit_x));
state->save_item(NAME(state->m_ddenlovr_blit_y));
state->save_item(NAME(state->m_ddenlovr_blit_address));
state->save_item(NAME(state->m_ddenlovr_blit_pen));
state->save_item(NAME(state->m_ddenlovr_blit_pen_mode));
state->save_item(NAME(state->m_ddenlovr_blitter_irq_flag));
state->save_item(NAME(state->m_ddenlovr_blitter_irq_enable));
state->save_item(NAME(state->m_ddenlovr_rect_width));
state->save_item(NAME(state->m_ddenlovr_rect_height));
state->save_item(NAME(state->m_ddenlovr_clip_width));
state->save_item(NAME(state->m_ddenlovr_clip_height));
state->save_item(NAME(state->m_ddenlovr_line_length));
state->save_item(NAME(state->m_ddenlovr_clip_ctrl));
state->save_item(NAME(state->m_ddenlovr_clip_x));
state->save_item(NAME(state->m_ddenlovr_clip_y));
state->save_item(NAME(state->m_ddenlovr_scroll));
state->save_item(NAME(state->m_ddenlovr_priority));
state->save_item(NAME(state->m_ddenlovr_priority2));
state->save_item(NAME(state->m_ddenlovr_bgcolor));
state->save_item(NAME(state->m_ddenlovr_bgcolor2));
state->save_item(NAME(state->m_ddenlovr_layer_enable));
state->save_item(NAME(state->m_ddenlovr_layer_enable2));
state->save_item(NAME(state->m_ddenlovr_palette_base));
state->save_item(NAME(state->m_ddenlovr_palette_mask));
state->save_item(NAME(state->m_ddenlovr_transparency_pen));
state->save_item(NAME(state->m_ddenlovr_transparency_mask));
state->save_item(NAME(state->m_ddenlovr_blit_latch));
state->save_item(NAME(state->m_ddenlovr_blit_pen_mask));
state->save_item(NAME(state->m_ddenlovr_blit_regs));
state->save_pointer(NAME(state->m_ddenlovr_pixmap[0]), 512 * 512);
state->save_pointer(NAME(state->m_ddenlovr_pixmap[1]), 512 * 512);
state->save_pointer(NAME(state->m_ddenlovr_pixmap[2]), 512 * 512);
state->save_pointer(NAME(state->m_ddenlovr_pixmap[3]), 512 * 512);
state->save_pointer(NAME(state->m_ddenlovr_pixmap[4]), 512 * 512);
state->save_pointer(NAME(state->m_ddenlovr_pixmap[5]), 512 * 512);
state->save_pointer(NAME(state->m_ddenlovr_pixmap[6]), 512 * 512);
state->save_pointer(NAME(state->m_ddenlovr_pixmap[7]), 512 * 512);
}
static VIDEO_START( mmpanic )
{
dynax_state *state = machine.driver_data<dynax_state>();
VIDEO_START_CALL(ddenlovr);
state->m_extra_layers = 1;
}
static VIDEO_START( hanakanz )
{
dynax_state *state = machine.driver_data<dynax_state>();
VIDEO_START_CALL(ddenlovr);
state->m_ddenlovr_blit_rom_bits = 16;
state->m_ddenlovr_blit_commands = hanakanz_commands;
}
static VIDEO_START( mjflove )
{
dynax_state *state = machine.driver_data<dynax_state>();
VIDEO_START_CALL(ddenlovr);
state->m_ddenlovr_blit_commands = mjflove_commands;
}
static void ddenlovr_flipscreen_w( UINT8 data )
{
logerror("flipscreen = %02x (%s)\n", data, (data & 1) ? "off" : "on");
}
static void ddenlovr_blit_flip_w( running_machine &machine, UINT8 data )
{
dynax_state *state = machine.driver_data<dynax_state>();
if ((data ^ state->m_ddenlovr_blit_flip) & 0xec)
{
#ifdef MAME_DEBUG
popmessage("warning ddenlovr_blit_flip = %02x", data);
#endif
logerror("warning ddenlovr_blit_flip = %02x\n", data);
}
state->m_ddenlovr_blit_flip = data;
}
WRITE8_HANDLER( ddenlovr_bgcolor_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
state->m_ddenlovr_bgcolor = data;
}
static WRITE8_HANDLER( ddenlovr_bgcolor2_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
state->m_ddenlovr_bgcolor2 = data;
}
static WRITE16_HANDLER( ddenlovr16_bgcolor_w )
{
if (ACCESSING_BITS_0_7)
ddenlovr_bgcolor_w(space, offset, data);
}
WRITE8_HANDLER( ddenlovr_priority_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
state->m_ddenlovr_priority = data;
}
static WRITE8_HANDLER( ddenlovr_priority2_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
state->m_ddenlovr_priority2 = data;
}
static WRITE16_HANDLER( ddenlovr16_priority_w )
{
if (ACCESSING_BITS_0_7)
ddenlovr_priority_w(space, offset, data);
}
WRITE8_HANDLER( ddenlovr_layer_enable_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
state->m_ddenlovr_layer_enable = data;
}
static WRITE8_HANDLER( ddenlovr_layer_enable2_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
state->m_ddenlovr_layer_enable2 = data;
}
static WRITE16_HANDLER( ddenlovr16_layer_enable_w )
{
if (ACCESSING_BITS_0_7)
ddenlovr_layer_enable_w(space, offset, data);
}
static void do_plot( running_machine &machine, int x, int y, int pen )
{
dynax_state *state = machine.driver_data<dynax_state>();
int addr, temp;
int xclip, yclip;
y &= 0x1ff;
x &= 0x1ff;
// swap x & y (see hanakanz gal check)
if (state->m_ddenlovr_blit_flip & 0x10) { temp = x; x = y; y = temp; }
// clipping rectangle (see hanakanz / hkagerou gal check)
#if 0
xclip = (x < state->m_ddenlovr_clip_x) || (x > state->m_ddenlovr_clip_x + state->m_ddenlovr_clip_width);
yclip = (y < state->m_ddenlovr_clip_y) || (y > state->m_ddenlovr_clip_y + state->m_ddenlovr_clip_height);
#else
xclip = (x < state->m_ddenlovr_clip_x) || (x > state->m_ddenlovr_clip_width);
yclip = (y < state->m_ddenlovr_clip_y) || (y > state->m_ddenlovr_clip_height);
#endif
if (!(state->m_ddenlovr_clip_ctrl & 1) && xclip) return;
if (!(state->m_ddenlovr_clip_ctrl & 2) && !xclip) return;
if (!(state->m_ddenlovr_clip_ctrl & 4) && yclip) return;
if (!(state->m_ddenlovr_clip_ctrl & 8) && !yclip) return;
addr = 512 * y + x;
if (state->m_ddenlovr_dest_layer & 0x0001) state->m_ddenlovr_pixmap[0][addr] = pen;
if (state->m_ddenlovr_dest_layer & 0x0002) state->m_ddenlovr_pixmap[1][addr] = pen;
if (state->m_ddenlovr_dest_layer & 0x0004) state->m_ddenlovr_pixmap[2][addr] = pen;
if (state->m_ddenlovr_dest_layer & 0x0008) state->m_ddenlovr_pixmap[3][addr] = pen;
if (!state->m_extra_layers) return;
if (state->m_ddenlovr_dest_layer & 0x0100) state->m_ddenlovr_pixmap[4][addr] = pen;
if (state->m_ddenlovr_dest_layer & 0x0200) state->m_ddenlovr_pixmap[5][addr] = pen;
if (state->m_ddenlovr_dest_layer & 0x0400) state->m_ddenlovr_pixmap[6][addr] = pen;
if (state->m_ddenlovr_dest_layer & 0x0800) state->m_ddenlovr_pixmap[7][addr] = pen;
}
INLINE int fetch_bit( UINT8 *src_data, int src_len, int *bit_addr )
{
int baddr = *bit_addr;
*bit_addr = ((*bit_addr) + 1) & 0x7ffffff;
if (baddr / 8 >= src_len)
{
#ifdef MAME_DEBUG
popmessage("GFX ROM OVER %06x", baddr / 8);
#endif
return 1;
}
return (src_data[baddr / 8] >> (7 - (baddr & 7))) & 1;
}
INLINE int fetch_word( UINT8 *src_data, int src_len, int *bit_addr, int word_len )
{
int res = 0;
while (word_len--)
{
res = (res << 1) | fetch_bit(src_data, src_len, bit_addr);
}
return res;
}
INLINE void log_draw_error( int src, int cmd )
{
#ifdef MAME_DEBUG
popmessage("%06x: warning unknown pixel command %02x", src, cmd);
#endif
logerror("%06x: warning unknown pixel command %02x\n", src, cmd);
}
/* Copy from ROM
initialized arguments are
0D/0E/0F source data pointer
14 X
02 Y
00 dest layer
05 unknown, related to layer
04 blit_pen
06 blit_pen_mode (replace values stored in ROM)
*/
static int blit_draw( running_machine &machine, int src, int sx )
{
dynax_state *state = machine.driver_data<dynax_state>();
UINT8 *src_data = machine.region("blitter")->base();
int src_len = machine.region("blitter")->bytes();
int bit_addr = (src & 0xffffff) * state->m_ddenlovr_blit_rom_bits; /* convert to bit address */
int pen_size, arg_size, cmd;
int x;
int xinc = (state->m_ddenlovr_blit_flip & 1) ? -1 : 1;
int yinc = (state->m_ddenlovr_blit_flip & 2) ? -1 : 1;
pen_size = fetch_word(src_data, src_len, &bit_addr, 4) + 1;
arg_size = fetch_word(src_data, src_len, &bit_addr, 4) + 1;
#ifdef MAME_DEBUG
if (pen_size > 4 || arg_size > 8)
popmessage("warning: pen_size %d arg_size %d", pen_size, arg_size);
#endif
// sryudens game bug
if (pen_size == 16 && arg_size == 16)
return src;
x = sx;
for (;;)
{
cmd = fetch_word(src_data, src_len, &bit_addr, 3);
switch (state->m_ddenlovr_blit_commands[cmd])
{
case BLIT_NEXT:
/* next line */
state->m_ddenlovr_blit_y += yinc;
x = sx;
break;
case BLIT_LINE:
{
int length = fetch_word(src_data, src_len, &bit_addr, arg_size);
int pen = fetch_word(src_data, src_len, &bit_addr, pen_size);
if (state->m_ddenlovr_blit_pen_mode)
pen = (state->m_ddenlovr_blit_pen & 0x0f);
pen |= state->m_ddenlovr_blit_pen & 0xf0;
while (length-- >= 0)
{
do_plot(machine, x, state->m_ddenlovr_blit_y, pen);
x += xinc;
}
}
break;
case BLIT_COPY:
{
int length = fetch_word(src_data, src_len, &bit_addr, arg_size);
while (length-- >= 0)
{
int pen = fetch_word(src_data, src_len, &bit_addr, pen_size);
if (state->m_ddenlovr_blit_pen_mode)
pen = (state->m_ddenlovr_blit_pen & 0x0f);
pen |= state->m_ddenlovr_blit_pen & 0xf0;
do_plot(machine, x, state->m_ddenlovr_blit_y, pen);
x += xinc;
}
}
break;
case BLIT_SKIP:
x += xinc * fetch_word(src_data, src_len, &bit_addr, arg_size);
break;
case BLIT_CHANGE_NUM:
arg_size = fetch_word(src_data, src_len, &bit_addr, 4) + 1;
break;
case BLIT_CHANGE_PEN:
pen_size = fetch_word(src_data, src_len, &bit_addr, 3) + 1;
break;
default:
log_draw_error(src, cmd);
// fall through
case BLIT_STOP:
return ((bit_addr + state->m_ddenlovr_blit_rom_bits - 1) / state->m_ddenlovr_blit_rom_bits) & 0xffffff;
}
}
}
/* Draw a simple rectangle
*/
static void blit_rect_xywh( running_machine &machine )
{
dynax_state *state = machine.driver_data<dynax_state>();
int x, y;
#ifdef MAME_DEBUG
// if (state->m_ddenlovr_clip_ctrl != 0x0f)
// popmessage("RECT clipx=%03x clipy=%03x ctrl=%x", state->m_ddenlovr_clip_x, state->m_ddenlovr_clip_y, state->m_ddenlovr_clip_ctrl);
#endif
for (y = 0; y <= state->m_ddenlovr_rect_height; y++)
for (x = 0; x <= state->m_ddenlovr_rect_width; x++)
do_plot(machine, x + state->m_ddenlovr_blit_x, y + state->m_ddenlovr_blit_y, state->m_ddenlovr_blit_pen);
}
/* Unknown. Initialized arguments are
00 dest layer
05 unknown, related to layer
14 X - always 0?
02 Y
0a width - always 0?
0b height
04 blit_pen
0c line_length - always 0?
*/
static void blit_rect_yh( running_machine &machine )
{
dynax_state *state = machine.driver_data<dynax_state>();
int start = 512 * state->m_ddenlovr_blit_y;
int length = 512 * (state->m_ddenlovr_rect_height + 1);
#ifdef MAME_DEBUG
// if (state->m_ddenlovr_clip_ctrl != 0x0f)
// popmessage("UNK8C clipx=%03x clipy=%03x ctrl=%x", state->m_ddenlovr_clip_x, state->m_ddenlovr_clip_y, state->m_ddenlovr_clip_ctrl);
#endif
if (start < 512 * 512)
{
if (start + length > 512 * 512)
length = 512 * 512 - start;
if (state->m_ddenlovr_dest_layer & 0x0001) memset(state->m_ddenlovr_pixmap[0] + start, state->m_ddenlovr_blit_pen, length);
if (state->m_ddenlovr_dest_layer & 0x0002) memset(state->m_ddenlovr_pixmap[1] + start, state->m_ddenlovr_blit_pen, length);
if (state->m_ddenlovr_dest_layer & 0x0004) memset(state->m_ddenlovr_pixmap[2] + start, state->m_ddenlovr_blit_pen, length);
if (state->m_ddenlovr_dest_layer & 0x0008) memset(state->m_ddenlovr_pixmap[3] + start, state->m_ddenlovr_blit_pen, length);
if (!state->m_extra_layers) return;
if (state->m_ddenlovr_dest_layer & 0x0100) memset(state->m_ddenlovr_pixmap[4] + start, state->m_ddenlovr_blit_pen, length);
if (state->m_ddenlovr_dest_layer & 0x0200) memset(state->m_ddenlovr_pixmap[5] + start, state->m_ddenlovr_blit_pen, length);
if (state->m_ddenlovr_dest_layer & 0x0400) memset(state->m_ddenlovr_pixmap[6] + start, state->m_ddenlovr_blit_pen, length);
if (state->m_ddenlovr_dest_layer & 0x0800) memset(state->m_ddenlovr_pixmap[7] + start, state->m_ddenlovr_blit_pen, length);
}
}
/* Fill from (X,Y) to end of ddenlovr_pixmap
initialized arguments are
00 dest layer
05 unknown, related to layer
14 X
02 Y
04 blit_pen
*/
static void blit_fill_xy( running_machine &machine, int x, int y )
{
dynax_state *state = machine.driver_data<dynax_state>();
int start = 512 * y + x;
#ifdef MAME_DEBUG
// if (x || y)
// popmessage("FILL command X %03x Y %03x", x, y);
#endif
if (state->m_ddenlovr_dest_layer & 0x0001) memset(state->m_ddenlovr_pixmap[0] + start, state->m_ddenlovr_blit_pen, 512 * 512 - start);
if (state->m_ddenlovr_dest_layer & 0x0002) memset(state->m_ddenlovr_pixmap[1] + start, state->m_ddenlovr_blit_pen, 512 * 512 - start);
if (state->m_ddenlovr_dest_layer & 0x0004) memset(state->m_ddenlovr_pixmap[2] + start, state->m_ddenlovr_blit_pen, 512 * 512 - start);
if (state->m_ddenlovr_dest_layer & 0x0008) memset(state->m_ddenlovr_pixmap[3] + start, state->m_ddenlovr_blit_pen, 512 * 512 - start);
if (!state->m_extra_layers) return;
if (state->m_ddenlovr_dest_layer & 0x0100) memset(state->m_ddenlovr_pixmap[4] + start, state->m_ddenlovr_blit_pen, 512 * 512 - start);
if (state->m_ddenlovr_dest_layer & 0x0200) memset(state->m_ddenlovr_pixmap[5] + start, state->m_ddenlovr_blit_pen, 512 * 512 - start);
if (state->m_ddenlovr_dest_layer & 0x0400) memset(state->m_ddenlovr_pixmap[6] + start, state->m_ddenlovr_blit_pen, 512 * 512 - start);
if (state->m_ddenlovr_dest_layer & 0x0800) memset(state->m_ddenlovr_pixmap[7] + start, state->m_ddenlovr_blit_pen, 512 * 512 - start);
}
/* Draw horizontal line
initialized arguments are
00 dest layer
05 unknown, related to layer
14 X
02 Y
0c line length
04 blit_pen
ddenlovr_blit_x and ddenlovr_blit_y are left pointing to the last pixel at the end of the command
*/
static void blit_horiz_line( running_machine &machine )
{
dynax_state *state = machine.driver_data<dynax_state>();
int i;
#ifdef MAME_DEBUG
popmessage("LINE X");
if (state->m_ddenlovr_clip_ctrl != 0x0f)
popmessage("LINE X clipx=%03x clipy=%03x ctrl=%x", state->m_ddenlovr_clip_x, state->m_ddenlovr_clip_y, state->m_ddenlovr_clip_ctrl);
if (state->m_ddenlovr_blit_flip)
popmessage("LINE X flip=%x", state->m_ddenlovr_blit_flip);
#endif
for (i = 0; i <= state->m_ddenlovr_line_length; i++)
do_plot(machine, state->m_ddenlovr_blit_x++, state->m_ddenlovr_blit_y, state->m_ddenlovr_blit_pen);
}
/* Draw vertical line
initialized arguments are
00 dest layer
05 unknown, related to layer
14 X
02 Y
0c line length
04 blit_pen
ddenlovr_blit_x and ddenlovr_blit_y are left pointing to the last pixel at the end of the command
*/
static void blit_vert_line( running_machine &machine )
{
dynax_state *state = machine.driver_data<dynax_state>();
int i;
#ifdef MAME_DEBUG
popmessage("LINE Y");
if (state->m_ddenlovr_clip_ctrl != 0x0f)
popmessage("LINE Y clipx=%03x clipy=%03x ctrl=%x", state->m_ddenlovr_clip_x, state->m_ddenlovr_clip_y, state->m_ddenlovr_clip_ctrl);
#endif
for (i = 0; i <= state->m_ddenlovr_line_length; i++)
do_plot(machine, state->m_ddenlovr_blit_x, state->m_ddenlovr_blit_y++, state->m_ddenlovr_blit_pen);
}
INLINE void log_blit( running_machine &machine, int data )
{
dynax_state *state = machine.driver_data<dynax_state>();
#if 1
logerror("%s: blit src %06x x %03x y %03x flags %02x layer %02x pen %02x penmode %02x w %03x h %03x linelen %03x flip %02x clip: ctrl %x xy %03x %03x wh %03x %03x\n",
machine.describe_context(),
state->m_ddenlovr_blit_address, state->m_ddenlovr_blit_x, state->m_ddenlovr_blit_y, data,
state->m_ddenlovr_dest_layer, state->m_ddenlovr_blit_pen, state->m_ddenlovr_blit_pen_mode, state->m_ddenlovr_rect_width, state->m_ddenlovr_rect_height, state->m_ddenlovr_line_length, state->m_ddenlovr_blit_flip,
state->m_ddenlovr_clip_ctrl, state->m_ddenlovr_clip_x, state->m_ddenlovr_clip_y, state->m_ddenlovr_clip_width, state->m_ddenlovr_clip_height);
#endif
}
static void blitter_w( address_space *space, int blitter, offs_t offset, UINT8 data, int irq_vector )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
int hi_bits;
g_profiler.start(PROFILER_VIDEO);
switch (offset)
{
case 0:
state->m_ddenlovr_blit_regs[blitter] = data;
break;
case 1:
hi_bits = (state->m_ddenlovr_blit_regs[blitter] & 0xc0) << 2;
switch (state->m_ddenlovr_blit_regs[blitter] & 0x3f)
{
case 0x00:
if (blitter) state->m_ddenlovr_dest_layer = (state->m_ddenlovr_dest_layer & 0x00ff) | (data << 8);
else state->m_ddenlovr_dest_layer = (state->m_ddenlovr_dest_layer & 0xff00) | (data << 0);
break;
case 0x01:
ddenlovr_flipscreen_w(data);
break;
case 0x02:
state->m_ddenlovr_blit_y = data | hi_bits;
break;
case 0x03:
ddenlovr_blit_flip_w(space->machine(), data);
break;
case 0x04:
state->m_ddenlovr_blit_pen = data;
break;
case 0x05:
state->m_ddenlovr_blit_pen_mask = data;
break;
case 0x06:
// related to pen, can be 0 or 1 for 0x10 blitter command
// 0 = only bits 7-4 of ddenlovr_blit_pen contain data
// 1 = bits 3-0 contain data as well
state->m_ddenlovr_blit_pen_mode = data;
break;
case 0x0a:
state->m_ddenlovr_rect_width = data | hi_bits;
break;
case 0x0b:
state->m_ddenlovr_rect_height = data | hi_bits;
break;
case 0x0c:
state->m_ddenlovr_line_length = data | hi_bits;
break;
case 0x0d:
state->m_ddenlovr_blit_address = (state->m_ddenlovr_blit_address & 0xffff00) | (data <<0);
break;
case 0x0e:
state->m_ddenlovr_blit_address = (state->m_ddenlovr_blit_address & 0xff00ff) | (data <<8);
break;
case 0x0f:
state->m_ddenlovr_blit_address = (state->m_ddenlovr_blit_address & 0x00ffff) | (data<<16);
break;
case 0x14:
state->m_ddenlovr_blit_x = data | hi_bits;
break;
case 0x16:
state->m_ddenlovr_clip_x = data | hi_bits;
break;
case 0x17:
state->m_ddenlovr_clip_y = data | hi_bits;
break;
case 0x18:
case 0x19:
case 0x1a:
case 0x1b:
case 0x1c:
case 0x1d:
case 0x1e:
case 0x1f:
state->m_ddenlovr_scroll[blitter * 8 + (state->m_ddenlovr_blit_regs[blitter] & 7)] = data | hi_bits;
break;
case 0x20:
state->m_ddenlovr_clip_ctrl = data;
break;
case 0x24:
log_blit(space->machine(), data);
switch (data)
{
case 0x04: blit_fill_xy(space->machine(), 0, 0);
break;
case 0x14: blit_fill_xy(space->machine(), state->m_ddenlovr_blit_x, state->m_ddenlovr_blit_y);
break;
case 0x10: state->m_ddenlovr_blit_address = blit_draw(space->machine(), state->m_ddenlovr_blit_address, state->m_ddenlovr_blit_x);
break;
case 0x13: blit_horiz_line(space->machine());
break;
case 0x1b: blit_vert_line(space->machine());
break;
case 0x1c: blit_rect_xywh(space->machine());
break;
// These two are issued one after the other (43 then 8c)
// 8c is issued immediately after 43 has finished, without
// changing any argument
case 0x43: break;
case 0x8c: blit_rect_yh(space->machine());
break;
default:
;
#ifdef MAME_DEBUG
popmessage("unknown blitter command %02x", data);
logerror("%06x: unknown blitter command %02x\n", cpu_get_pc(&space->device()), data);
#endif
}
if (irq_vector)
/* quizchq */
device_set_input_line_and_vector(&space->device(), 0, HOLD_LINE, irq_vector);
else
{
/* ddenlovr */
if (state->m_ddenlovr_blitter_irq_enable)
{
state->m_ddenlovr_blitter_irq_flag = 1;
device_set_input_line(&space->device(), 1, HOLD_LINE);
}
}
break;
default:
logerror("%06x: Blitter %d reg %02x = %02x\n", cpu_get_pc(&space->device()), blitter, state->m_ddenlovr_blit_regs[blitter], data);
break;
}
}
g_profiler.stop();
}
// differences wrt blitter_data_w: slightly different blitter commands
static void blitter_w_funkyfig( running_machine &machine, int blitter, offs_t offset, UINT8 data, int irq_vector )
{
dynax_state *state = machine.driver_data<dynax_state>();
int hi_bits;
g_profiler.start(PROFILER_VIDEO);
switch(offset)
{
case 0:
state->m_ddenlovr_blit_regs[blitter] = data;
break;
case 1:
hi_bits = (state->m_ddenlovr_blit_regs[blitter] & 0xc0) << 2;
switch (state->m_ddenlovr_blit_regs[blitter] & 0x3f)
{
case 0x00:
if (blitter) state->m_ddenlovr_dest_layer = (state->m_ddenlovr_dest_layer & 0x00ff) | (data << 8);
else state->m_ddenlovr_dest_layer = (state->m_ddenlovr_dest_layer & 0xff00) | (data << 0);
break;
case 0x01:
ddenlovr_flipscreen_w(data);
break;
case 0x02:
state->m_ddenlovr_blit_y = data | hi_bits;
break;
case 0x03:
ddenlovr_blit_flip_w(machine, data);
break;
case 0x04:
state->m_ddenlovr_blit_pen = data;
break;
case 0x05:
state->m_ddenlovr_blit_pen_mask = data;
break;
case 0x06:
// related to pen, can be 0 or 1 for 0x10 blitter command
// 0 = only bits 7-4 of ddenlovr_blit_pen contain data
// 1 = bits 3-0 contain data as well
state->m_ddenlovr_blit_pen_mode = data;
break;
case 0x0a:
state->m_ddenlovr_rect_width = data | hi_bits;
break;
case 0x0b:
state->m_ddenlovr_rect_height = data | hi_bits;
break;
case 0x0c:
state->m_ddenlovr_line_length = data | hi_bits;
break;
case 0x0d:
state->m_ddenlovr_blit_address = (state->m_ddenlovr_blit_address & 0xffff00) | (data << 0);
break;
case 0x0e:
state->m_ddenlovr_blit_address = (state->m_ddenlovr_blit_address & 0xff00ff) | (data << 8);
break;
case 0x0f:
state->m_ddenlovr_blit_address = (state->m_ddenlovr_blit_address & 0x00ffff) | (data << 16);
break;
case 0x14:
state->m_ddenlovr_blit_x = data | hi_bits;
break;
case 0x16:
state->m_ddenlovr_clip_x = data | hi_bits;
break;
case 0x17:
state->m_ddenlovr_clip_y = data | hi_bits;
break;
case 0x18:
case 0x19:
case 0x1a:
case 0x1b:
case 0x1c:
case 0x1d:
case 0x1e:
case 0x1f:
state->m_ddenlovr_scroll[blitter * 8 + (state->m_ddenlovr_blit_regs[blitter] & 7)] = data | hi_bits;
break;
case 0x20:
state->m_ddenlovr_clip_ctrl = data;
break;
case 0x24:
log_blit(machine, data);
switch (data)
{
case 0x84: // same as 04?
case 0x04: blit_fill_xy(machine, 0, 0);
break;
// unused?
// case 0x14: blit_fill_xy(machine, state->m_ddenlovr_blit_x, state->m_ddenlovr_blit_y);
// break;
case 0x00/*0x10*/: state->m_ddenlovr_blit_address = blit_draw(machine, state->m_ddenlovr_blit_address, state->m_ddenlovr_blit_x);
break;
case 0x0b: // same as 03? see the drawing of the R in "cRoss hatch" (key test)
case 0x03/*0x13*/: blit_horiz_line(machine);
break;
// unused?
// case 0x1b: blit_vert_line(machine);
// break;
case 0x0c/*0x1c*/: blit_rect_xywh(machine);
break;
// These two are issued one after the other (43 then 8c)
// 8c is issued immediately after 43 has finished, without
// changing any argument
case 0x43: break;
case 0x8c: blit_rect_yh(machine);
break;
default:
;
#ifdef MAME_DEBUG
popmessage("unknown blitter command %02x", data);
logerror("%s: unknown blitter command %02x\n", machine.describe_context(), data);
#endif
}
device_set_input_line_and_vector(state->m_maincpu, 0, HOLD_LINE, irq_vector);
break;
default:
logerror("%s: Blitter %d reg %02x = %02x\n", machine.describe_context(), blitter, state->m_ddenlovr_blit_regs[blitter], data);
break;
}
}
g_profiler.stop();
}
static WRITE8_HANDLER( hanakanz_blitter_reg_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
state->m_ddenlovr_blit_latch = data;
}
// differences wrt blitter_data_w: registers are shuffled around, hi_bits in the low bits, clip_w/h, includes layers registers
static WRITE8_HANDLER( hanakanz_blitter_data_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
int hi_bits;
g_profiler.start(PROFILER_VIDEO);
hi_bits = (state->m_ddenlovr_blit_latch & 0x03) << 8;
switch (state->m_ddenlovr_blit_latch & 0xfe)
{
case 0x00:
state->m_ddenlovr_dest_layer = data;
break;
case 0x04:
ddenlovr_flipscreen_w(data);
break;
case 0x08:
state->m_ddenlovr_blit_y = data | hi_bits;
break;
case 0x0c:
ddenlovr_blit_flip_w(space->machine(), data);
break;
case 0x10:
state->m_ddenlovr_blit_pen = data;
break;
case 0x14:
state->m_ddenlovr_blit_pen_mask = data;
break;
case 0x18:
// related to pen, can be 0 or 1 for 0x10 blitter command
// 0 = only bits 7-4 of ddenlovr_blit_pen contain data
// 1 = bits 3-0 contain data as well
state->m_ddenlovr_blit_pen_mode = data;
break;
case 0x28:
state->m_ddenlovr_rect_width = data | hi_bits;
break;
case 0x2c:
state->m_ddenlovr_rect_height = data | hi_bits;
break;
case 0x30:
state->m_ddenlovr_line_length = data | hi_bits;
break;
case 0x34:
state->m_ddenlovr_blit_address = (state->m_ddenlovr_blit_address & 0xffff00) | (data << 0);
break;
case 0x38:
state->m_ddenlovr_blit_address = (state->m_ddenlovr_blit_address & 0xff00ff) | (data << 8);
break;
case 0x3c:
state->m_ddenlovr_blit_address = (state->m_ddenlovr_blit_address & 0x00ffff) | (data << 16);
break;
case 0x50:
state->m_ddenlovr_blit_x = data | hi_bits;
break;
case 0x58:
state->m_ddenlovr_clip_x = data | hi_bits;
break;
case 0x5c:
state->m_ddenlovr_clip_y = data | hi_bits;
break;
case 0x60:
case 0x64:
case 0x68:
case 0x6c:
case 0x70:
case 0x74:
case 0x78:
case 0x7c:
state->m_ddenlovr_scroll[(state->m_ddenlovr_blit_latch & 0x1c) >> 2] = data | hi_bits;
break;
case 0x80:
state->m_ddenlovr_clip_ctrl = data;
break;
case 0x88:
case 0x8a: // can be 3ff
state->m_ddenlovr_clip_height = data | hi_bits;
break;
case 0x8c:
case 0x8e: // can be 3ff
state->m_ddenlovr_clip_width = data | hi_bits;
break;
case 0xc0:
case 0xc2:
case 0xc4:
case 0xc6:
state->m_ddenlovr_palette_base[(state->m_ddenlovr_blit_latch >> 1) & 3] = data | (hi_bits & 0x100);
break;
case 0xc8:
case 0xca:
case 0xcc:
case 0xce:
state->m_ddenlovr_palette_mask[(state->m_ddenlovr_blit_latch >> 1) & 3] = data;
break;
case 0xd0:
case 0xd2:
case 0xd4:
case 0xd6:
state->m_ddenlovr_transparency_pen[(state->m_ddenlovr_blit_latch >> 1) & 3] = data;
break;
case 0xd8:
case 0xda:
case 0xdc:
case 0xde:
state->m_ddenlovr_transparency_mask[(state->m_ddenlovr_blit_latch >> 1) & 3] = data;
break;
case 0xe4:
ddenlovr_priority_w(space, 0, data);
break;
case 0xe6:
ddenlovr_layer_enable_w(space, 0, data);
break;
case 0xe8:
state->m_ddenlovr_bgcolor = data | hi_bits;
break;
case 0x90:
log_blit(space->machine(), data);
switch (data)
{
case 0x04: blit_fill_xy(space->machine(), 0, 0);
break;
case 0x14: blit_fill_xy(space->machine(), state->m_ddenlovr_blit_x, state->m_ddenlovr_blit_y);
break;
case 0x10: state->m_ddenlovr_blit_address = blit_draw(space->machine(), state->m_ddenlovr_blit_address, state->m_ddenlovr_blit_x);
break;
case 0x13: blit_horiz_line(space->machine());
break;
case 0x1b: blit_vert_line(space->machine());
break;
case 0x1c: blit_rect_xywh(space->machine());
break;
// These two are issued one after the other (43 then 8c)
// 8c is issued immediately after 43 has finished, without
// changing any argument
case 0x43: break;
case 0x8c: blit_rect_yh(space->machine());
break;
default:
;
#ifdef MAME_DEBUG
popmessage("unknown blitter command %02x", data);
logerror("%06x: unknown blitter command %02x\n", cpu_get_pc(&space->device()), data);
#endif
}
// NO IRQ !?
break;
default:
logerror("%06x: Blitter 0 reg %02x = %02x\n", cpu_get_pc(&space->device()), state->m_ddenlovr_blit_latch, data);
break;
}
g_profiler.stop();
}
static WRITE8_HANDLER( rongrong_blitter_w )
{
blitter_w(space, 0, offset, data, 0xf8);
}
static WRITE16_HANDLER( ddenlovr_blitter_w )
{
if (ACCESSING_BITS_0_7)
blitter_w(space, 0, offset, data & 0xff, 0);
}
static WRITE16_HANDLER( ddenlovr_blitter_irq_ack_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
if (ACCESSING_BITS_0_7)
{
if (data & 1)
{
state->m_ddenlovr_blitter_irq_enable = 1;
}
else
{
state->m_ddenlovr_blitter_irq_enable = 0;
state->m_ddenlovr_blitter_irq_flag = 0;
}
}
}
static READ8_HANDLER( rongrong_gfxrom_r )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
UINT8 *rom = space->machine().region("blitter")->base();
size_t size = space->machine().region("blitter")->bytes();
int address = state->m_ddenlovr_blit_address;
if (address >= size)
{
logerror("CPU#0 PC %06X: Error, Blitter address %06X out of range\n", cpu_get_pc(&space->device()), address);
address %= size;
}
state->m_ddenlovr_blit_address = (state->m_ddenlovr_blit_address + 1) & 0xffffff;
return rom[address];
}
static READ16_HANDLER( ddenlovr_gfxrom_r )
{
return rongrong_gfxrom_r(space, offset);
}
static void copylayer(running_machine &machine, bitmap_t *bitmap, const rectangle *cliprect, int layer )
{
dynax_state *state = machine.driver_data<dynax_state>();
int x,y;
int scrollx = state->m_ddenlovr_scroll[layer / 4 * 8 + (layer % 4) + 0];
int scrolly = state->m_ddenlovr_scroll[layer / 4 * 8 + (layer % 4) + 4];
int palbase = state->m_ddenlovr_palette_base[layer];
int penmask = state->m_ddenlovr_palette_mask[layer];
int transpen = state->m_ddenlovr_transparency_pen[layer];
int transmask = state->m_ddenlovr_transparency_mask[layer];
palbase &= ~penmask;
transpen &= transmask;
if (((state->m_ddenlovr_layer_enable2 << 4) | state->m_ddenlovr_layer_enable) & (1 << layer))
{
for (y = cliprect->min_y; y <= cliprect->max_y; y++)
{
for (x = cliprect->min_x; x <= cliprect->max_x; x++)
{
int pen = state->m_ddenlovr_pixmap[layer][512 * ((y + scrolly) & 0x1ff) + ((x + scrollx) & 0x1ff)];
if ((pen & transmask) != transpen)
{
pen &= penmask;
pen |= palbase;
*BITMAP_ADDR16(bitmap, y, x) = pen;
}
}
}
}
}
SCREEN_UPDATE(ddenlovr)
{
dynax_state *state = screen->machine().driver_data<dynax_state>();
static const int order[24][4] =
{
{ 3,2,1,0 }, { 2,3,1,0 }, { 3,1,2,0 }, { 1,3,2,0 }, { 2,1,3,0 }, { 1,2,3,0 },
{ 3,2,0,1 }, { 2,3,0,1 }, { 3,0,2,1 }, { 0,3,2,1 }, { 2,0,3,1 }, { 0,2,3,1 },
{ 3,1,0,2 }, { 1,3,0,2 }, { 3,0,1,2 }, { 0,3,1,2 }, { 1,0,3,2 }, { 0,1,3,2 },
{ 2,1,0,3 }, { 1,2,0,3 }, { 2,0,1,3 }, { 0,2,1,3 }, { 1,0,2,3 }, { 0,1,2,3 }
};
int pri;
int enab = state->m_ddenlovr_layer_enable;
int enab2 = state->m_ddenlovr_layer_enable2;
#if 0
static int base = 0x0;
const UINT8 *gfx = screen->machine().region("blitter")->base();
int next;
memset(state->m_ddenlovr_pixmap[0], 0, 512 * 512);
memset(state->m_ddenlovr_pixmap[1], 0, 512 * 512);
memset(state->m_ddenlovr_pixmap[2], 0, 512 * 512);
memset(state->m_ddenlovr_pixmap[3], 0, 512 * 512);
state->m_ddenlovr_dest_layer = 8;
state->m_ddenlovr_blit_pen = 0;
state->m_ddenlovr_blit_pen_mode = 0;
state->m_ddenlovr_blit_y = 5;
state->m_ddenlovr_clip_ctrl = 0x0f;
next = blit_draw(screen->machine(), base, 0);
popmessage("GFX %06x", base);
if (screen->machine().input().code_pressed(KEYCODE_S)) base = next;
if (screen->machine().input().code_pressed_once(KEYCODE_X)) base = next;
if (screen->machine().input().code_pressed(KEYCODE_C)) { base--; while ((gfx[base] & 0xf0) != 0x30) base--; }
if (screen->machine().input().code_pressed(KEYCODE_V)) { base++; while ((gfx[base] & 0xf0) != 0x30) base++; }
if (screen->machine().input().code_pressed_once(KEYCODE_D)) { base--; while ((gfx[base] & 0xf0) != 0x30) base--; }
if (screen->machine().input().code_pressed_once(KEYCODE_F)) { base++; while ((gfx[base] & 0xf0) != 0x30) base++; }
#endif
bitmap_fill(bitmap, cliprect, state->m_ddenlovr_bgcolor);
#ifdef MAME_DEBUG
if (screen->machine().input().code_pressed(KEYCODE_Z))
{
int mask, mask2;
mask = 0;
if (screen->machine().input().code_pressed(KEYCODE_Q)) mask |= 1;
if (screen->machine().input().code_pressed(KEYCODE_W)) mask |= 2;
if (screen->machine().input().code_pressed(KEYCODE_E)) mask |= 4;
if (screen->machine().input().code_pressed(KEYCODE_R)) mask |= 8;
mask2 = 0;
if (state->m_extra_layers)
{
if (screen->machine().input().code_pressed(KEYCODE_A)) mask2 |= 1;
if (screen->machine().input().code_pressed(KEYCODE_S)) mask2 |= 2;
if (screen->machine().input().code_pressed(KEYCODE_D)) mask2 |= 4;
if (screen->machine().input().code_pressed(KEYCODE_F)) mask2 |= 8;
}
if (mask || mask2)
{
state->m_ddenlovr_layer_enable &= mask;
state->m_ddenlovr_layer_enable2 &= mask2;
}
}
#endif
pri = state->m_ddenlovr_priority;
if (pri >= 24)
{
popmessage("priority = %02x", pri);
pri = 0;
}
copylayer(screen->machine(), bitmap, cliprect, order[pri][0]);
copylayer(screen->machine(), bitmap, cliprect, order[pri][1]);
copylayer(screen->machine(), bitmap, cliprect, order[pri][2]);
copylayer(screen->machine(), bitmap, cliprect, order[pri][3]);
if (state->m_extra_layers)
{
pri = state->m_ddenlovr_priority2;
if (pri >= 24)
{
popmessage("priority2 = %02x", pri);
pri = 0;
}
copylayer(screen->machine(), bitmap, cliprect, order[pri][0] + 4);
copylayer(screen->machine(), bitmap, cliprect, order[pri][1] + 4);
copylayer(screen->machine(), bitmap, cliprect, order[pri][2] + 4);
copylayer(screen->machine(), bitmap, cliprect, order[pri][3] + 4);
}
state->m_ddenlovr_layer_enable = enab;
state->m_ddenlovr_layer_enable2 = enab2;
return 0;
}
static CUSTOM_INPUT( ddenlovr_special_r )
{
dynax_state *state = field.machine().driver_data<dynax_state>();
return state->m_ddenlovr_blitter_irq_flag;
}
static WRITE16_HANDLER( ddenlovr_coincounter_0_w )
{
if (ACCESSING_BITS_0_7)
coin_counter_w(space->machine(), 0, data & 1);
}
static WRITE16_HANDLER( ddenlovr_coincounter_1_w )
{
if (ACCESSING_BITS_0_7)
coin_counter_w(space->machine(), 1, data & 1);
}
static WRITE8_HANDLER( rongrong_palette_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
int r, g, b, d1, d2, indx;
state->m_palram[offset] = data;
indx = ((offset & 0x1e0) >> 1) | (offset & 0x00f);
d1 = state->m_palram[offset & ~0x10];
d2 = state->m_palram[offset | 0x10];
r = d1 & 0x1f;
g = d2 & 0x1f;
/* what were they smoking??? */
b = ((d1 & 0xe0) >> 5) | (d2 & 0xc0) >> 3;
palette_set_color_rgb(space->machine(), indx, pal5bit(r), pal5bit(g), pal5bit(b));
}
static WRITE16_HANDLER( ddenlovr_palette_w )
{
if (ACCESSING_BITS_0_7)
rongrong_palette_w(space, offset, data & 0xff);
}
WRITE8_HANDLER( ddenlovr_palette_base_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
state->m_ddenlovr_palette_base[offset] = data;
}
static WRITE8_HANDLER( ddenlovr_palette_base2_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
state->m_ddenlovr_palette_base[offset + 4] = data;
}
WRITE8_HANDLER( ddenlovr_palette_mask_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
state->m_ddenlovr_palette_mask[offset] = data;
}
static WRITE8_HANDLER( ddenlovr_palette_mask2_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
state->m_ddenlovr_palette_mask[offset + 4] = data;
}
WRITE8_HANDLER( ddenlovr_transparency_pen_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
state->m_ddenlovr_transparency_pen[offset] = data;
}
static WRITE8_HANDLER( ddenlovr_transparency_pen2_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
state->m_ddenlovr_transparency_pen[offset + 4] = data;
}
WRITE8_HANDLER( ddenlovr_transparency_mask_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
state->m_ddenlovr_transparency_mask[offset] = data;
}
static WRITE8_HANDLER( ddenlovr_transparency_mask2_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
state->m_ddenlovr_transparency_mask[offset + 4] = data;
}
static WRITE16_HANDLER( ddenlovr16_palette_base_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
if (ACCESSING_BITS_0_7)
state->m_ddenlovr_palette_base[offset] = data & 0xff;
}
static WRITE16_HANDLER( ddenlovr16_palette_mask_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
if (ACCESSING_BITS_0_7)
state->m_ddenlovr_palette_mask[offset] = data & 0xff;
}
static WRITE16_HANDLER( ddenlovr16_transparency_pen_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
if (ACCESSING_BITS_0_7)
state->m_ddenlovr_transparency_pen[offset] = data & 0xff;
}
static WRITE16_HANDLER( ddenlovr16_transparency_mask_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
if (ACCESSING_BITS_0_7)
state->m_ddenlovr_transparency_mask[offset] = data & 0xff;
}
static WRITE8_DEVICE_HANDLER( quizchq_oki_bank_w )
{
okim6295_device *oki = downcast<okim6295_device *>(device);
oki->set_bank_base((data & 1) * 0x40000);
}
static WRITE16_DEVICE_HANDLER( ddenlovr_oki_bank_w )
{
if (ACCESSING_BITS_0_7)
{
okim6295_device *oki = downcast<okim6295_device *>(device);
oki->set_bank_base((data & 7) * 0x40000);
}
}
static WRITE16_DEVICE_HANDLER( quiz365_oki_bank1_w )
{
dynax_state *state = device->machine().driver_data<dynax_state>();
if (ACCESSING_BITS_0_7)
{
state->m_okibank = (state->m_okibank & 2) | (data & 1);
okim6295_device *oki = downcast<okim6295_device *>(device);
oki->set_bank_base(state->m_okibank * 0x40000);
}
}
static WRITE16_DEVICE_HANDLER( quiz365_oki_bank2_w )
{
dynax_state *state = device->machine().driver_data<dynax_state>();
if (ACCESSING_BITS_0_7)
{
state->m_okibank = (state->m_okibank & 1) | ((data & 1) << 1);
okim6295_device *oki = downcast<okim6295_device *>(device);
oki->set_bank_base(state->m_okibank * 0x40000);
}
}
static READ8_HANDLER( unk_r )
{
return 0x78;
}
static READ16_HANDLER( unk16_r )
{
return unk_r(space, offset);
}
static WRITE8_DEVICE_HANDLER( ddenlovr_select_w )
{
dynax_state *state = device->machine().driver_data<dynax_state>();
state->m_dsw_sel = data;
}
static WRITE16_HANDLER( ddenlovr_select_16_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
if (ACCESSING_BITS_0_7)
state->m_dsw_sel = data;
}
static WRITE8_HANDLER( ddenlovr_select2_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
state->m_input_sel = data;
}
static WRITE16_HANDLER( ddenlovr_select2_16_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
if (ACCESSING_BITS_0_7)
state->m_input_sel = data;
}
static READ8_HANDLER( rongrong_input2_r )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
// logerror("%04x: input2_r offset %d select %x\n", cpu_get_pc(&space->device()), offset, state->m_input_sel);
/* 0 and 1 are read from offset 1, 2 from offset 0... */
switch (state->m_input_sel)
{
case 0x00: return input_port_read(space->machine(), "P1");
case 0x01: return input_port_read(space->machine(), "P2");
case 0x02: return input_port_read(space->machine(), "SYSTEM");
}
return 0xff;
}
static READ8_DEVICE_HANDLER( quiz365_input_r )
{
dynax_state *state = device->machine().driver_data<dynax_state>();
if (!BIT(state->m_dsw_sel, 0)) return input_port_read(device->machine(), "DSW1");
if (!BIT(state->m_dsw_sel, 1)) return input_port_read(device->machine(), "DSW2");
if (!BIT(state->m_dsw_sel, 2)) return input_port_read(device->machine(), "DSW3");
if (!BIT(state->m_dsw_sel, 3)) return 0xff;//device->machine().rand();
if (!BIT(state->m_dsw_sel, 4)) return 0xff;//device->machine().rand();
return 0xff;
}
static READ16_HANDLER( quiz365_input2_r )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
// logerror("%04x: input2_r offset %d select %x\n",cpu_get_pc(&space->device()), offset, state->m_input_sel);
/* 0 and 1 are read from offset 1, 2 from offset 0... */
switch (state->m_input_sel)
{
case 0x10: return input_port_read(space->machine(), "P1");
case 0x11: return input_port_read(space->machine(), "P2");
case 0x12: return input_port_read(space->machine(), "SYSTEM");
}
return 0xff;
}
static WRITE8_HANDLER( rongrong_blitter_busy_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
state->m_rongrong_blitter_busy_select = data;
if (data != 0x18)
logerror("%04x: rongrong_blitter_busy_w data = %02x\n", cpu_get_pc(&space->device()), data);
}
static READ8_HANDLER( rongrong_blitter_busy_r )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
switch (state->m_rongrong_blitter_busy_select)
{
case 0x18: return 0; // bit 5 = blitter busy
default:
logerror("%04x: rongrong_blitter_busy_r with select = %02x\n", cpu_get_pc(&space->device()), state->m_rongrong_blitter_busy_select);
}
return 0xff;
}
static WRITE16_HANDLER( quiz365_coincounter_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
if (ACCESSING_BITS_0_7)
{
if (state->m_input_sel == 0x1c)
{
coin_counter_w(space->machine(), 0, ~data & 1);
coin_counter_w(space->machine(), 1, ~data & 4);
}
}
}
/*
37,28,12 11 -> 88
67,4c,3a ?? -> 51
*/
static READ16_HANDLER( quiz365_protection_r )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
switch (state->m_quiz365_protection[0])
{
case 0x3a:
return 0x0051;
default:
return 0x0088;
}
}
static WRITE16_HANDLER( quiz365_protection_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
COMBINE_DATA(state->m_quiz365_protection + offset);
}
static ADDRESS_MAP_START( quiz365_map, AS_PROGRAM, 16 )
AM_RANGE(0x000000, 0x17ffff) AM_ROM // ROM
AM_RANGE(0x200000, 0x2003ff) AM_WRITE(ddenlovr_palette_w) // Palette
AM_RANGE(0x200c02, 0x200c03) AM_READ(quiz365_protection_r) // Protection
AM_RANGE(0x200e0a, 0x200e0d) AM_WRITE(quiz365_protection_w) // Protection
// AM_RANGE(0x201000, 0x2017ff) AM_WRITEONLY // ?
AM_RANGE(0x300200, 0x300201) AM_WRITE(ddenlovr_select2_16_w)
AM_RANGE(0x300202, 0x300203) AM_WRITE(quiz365_coincounter_w) // Coin Counters + more stuff written on startup
AM_RANGE(0x300204, 0x300207) AM_READ(quiz365_input2_r) //
AM_RANGE(0x300240, 0x300247) AM_WRITE(ddenlovr16_palette_base_w)
AM_RANGE(0x300248, 0x30024f) AM_WRITE(ddenlovr16_palette_mask_w)
AM_RANGE(0x300250, 0x300257) AM_WRITE(ddenlovr16_transparency_pen_w)
AM_RANGE(0x300258, 0x30025f) AM_WRITE(ddenlovr16_transparency_mask_w)
AM_RANGE(0x300268, 0x300269) AM_WRITE(ddenlovr16_bgcolor_w)
AM_RANGE(0x30026a, 0x30026b) AM_WRITE(ddenlovr16_priority_w)
AM_RANGE(0x30026c, 0x30026d) AM_WRITE(ddenlovr16_layer_enable_w)
AM_RANGE(0x300270, 0x300271) AM_READ(unk16_r) // ? must be 78 on startup (not necessary in ddlover)
AM_RANGE(0x300280, 0x300283) AM_WRITE(ddenlovr_blitter_w)
AM_RANGE(0x300286, 0x300287) AM_READ(ddenlovr_gfxrom_r) // Video Chip
AM_RANGE(0x3002c0, 0x3002c1) AM_DEVREADWRITE8_MODERN("oki", okim6295_device, read, write, 0x00ff)// Sound
AM_RANGE(0x300300, 0x300303) AM_DEVWRITE8("ymsnd", ym2413_w, 0x00ff)
AM_RANGE(0x300340, 0x30035f) AM_DEVREADWRITE8("rtc", msm6242_r, msm6242_w, 0x00ff) // 6242RTC
AM_RANGE(0x300380, 0x300383) AM_DEVWRITE8("aysnd", ay8910_address_data_w, 0x00ff)
AM_RANGE(0x300384, 0x300385) AM_DEVREAD8("aysnd", ay8910_r, 0x00ff)
AM_RANGE(0x3003c2, 0x3003c3) AM_DEVWRITE("oki", quiz365_oki_bank1_w)
AM_RANGE(0x3003ca, 0x3003cb) AM_WRITE(ddenlovr_blitter_irq_ack_w) // Blitter irq acknowledge
AM_RANGE(0x3003cc, 0x3003cd) AM_DEVWRITE("oki", quiz365_oki_bank2_w)
AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM
ADDRESS_MAP_END
static READ16_HANDLER( ddenlovj_dsw_r )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
UINT16 dsw = 0;
if ((~*state->m_dsw_sel16) & 0x01) dsw |= input_port_read(space->machine(), "DSW1");
if ((~*state->m_dsw_sel16) & 0x02) dsw |= input_port_read(space->machine(), "DSW2");
if ((~*state->m_dsw_sel16) & 0x04) dsw |= input_port_read(space->machine(), "DSW3");
return dsw;
}
static WRITE16_HANDLER( ddenlovj_coincounter_w )
{
if (ACCESSING_BITS_0_7)
{
coin_counter_w(space->machine(), 0, data & 0x01);
coin_counter_w(space->machine(), 1, data & 0x04);
// data & 0x80 ?
}
}
static CUSTOM_INPUT( ddenlovj_blitter_r )
{
dynax_state *state = field.machine().driver_data<dynax_state>();
return state->m_ddenlovr_blitter_irq_flag ? 0x03 : 0x00; // bit 4 = 1 -> blitter busy
}
static ADDRESS_MAP_START( ddenlovj_map, AS_PROGRAM, 16 )
AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
AM_RANGE(0x200000, 0x2003ff) AM_WRITE(ddenlovr_palette_w) // Palette
// AM_RANGE(0x201000, 0x2017ff) AM_WRITEONLY // ? B0 on startup, then 00
AM_RANGE(0x300040, 0x300047) AM_WRITE(ddenlovr16_palette_base_w)
AM_RANGE(0x300048, 0x30004f) AM_WRITE(ddenlovr16_palette_mask_w)
AM_RANGE(0x300050, 0x300057) AM_WRITE(ddenlovr16_transparency_pen_w)
AM_RANGE(0x300058, 0x30005f) AM_WRITE(ddenlovr16_transparency_mask_w)
AM_RANGE(0x300068, 0x300069) AM_WRITE(ddenlovr16_bgcolor_w)
AM_RANGE(0x30006a, 0x30006b) AM_WRITE(ddenlovr16_priority_w)
AM_RANGE(0x30006c, 0x30006d) AM_WRITE(ddenlovr16_layer_enable_w)
AM_RANGE(0x300070, 0x300071) AM_READ(unk16_r) // ? must be 78 on startup (not necessary in ddlover)
AM_RANGE(0x300080, 0x300083) AM_WRITE(ddenlovr_blitter_w)
AM_RANGE(0x300086, 0x300087) AM_READ(ddenlovr_gfxrom_r) // Video Chip
AM_RANGE(0x3000c0, 0x3000c3) AM_DEVWRITE8("ymsnd", ym2413_w, 0x00ff)
AM_RANGE(0x300100, 0x30011f) AM_DEVREADWRITE8("rtc", msm6242_r, msm6242_w, 0x00ff) // 6242RTC
AM_RANGE(0x300140, 0x300143) AM_DEVWRITE8("aysnd", ay8910_address_data_w, 0x00ff)
AM_RANGE(0x300180, 0x300181) AM_READ_PORT("P1")
AM_RANGE(0x300182, 0x300183) AM_READ_PORT("P2")
AM_RANGE(0x300184, 0x300185) AM_READ_PORT("SYSTEM")
AM_RANGE(0x300186, 0x300187) AM_READ(ddenlovj_dsw_r) // DSW
AM_RANGE(0x300188, 0x300189) AM_WRITE(ddenlovj_coincounter_w) // Coin Counters
AM_RANGE(0x30018a, 0x30018b) AM_WRITEONLY AM_BASE_MEMBER(dynax_state, m_dsw_sel16) // DSW select
AM_RANGE(0x30018c, 0x30018d) AM_DEVWRITE("oki", ddenlovr_oki_bank_w)
AM_RANGE(0x3001ca, 0x3001cb) AM_WRITE(ddenlovr_blitter_irq_ack_w) // Blitter irq acknowledge
AM_RANGE(0x300240, 0x300241) AM_DEVREADWRITE8_MODERN("oki", okim6295_device, read, write, 0x00ff)// Sound
AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM
ADDRESS_MAP_END
static READ16_HANDLER( ddenlovrk_protection1_r )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
switch (*state->m_protection1)
{
case 0x007e: return 0x00aa;
}
return *state->m_protection1;
}
static READ16_HANDLER( ddenlovrk_protection2_r )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
switch (*state->m_protection1)
{
case 0x0000: return *state->m_protection2;
}
return 0x80;
}
static WRITE16_HANDLER( ddenlovrk_protection2_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
COMBINE_DATA(state->m_protection2);
state->m_oki->set_bank_base(((*state->m_protection2) & 0x7) * 0x40000);
}
static ADDRESS_MAP_START( ddenlovrk_map, AS_PROGRAM, 16 )
AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
AM_RANGE(0x100000, 0x100001) AM_RAM_READ(ddenlovrk_protection1_r) AM_BASE_MEMBER(dynax_state, m_protection1)
AM_RANGE(0x200000, 0x200001) AM_READWRITE(ddenlovrk_protection2_r, ddenlovrk_protection2_w) AM_BASE_MEMBER(dynax_state, m_protection2)
AM_RANGE(0xd00000, 0xd003ff) AM_WRITE(ddenlovr_palette_w) // Palette
// AM_RANGE(0xd01000, 0xd017ff) AM_RAM // ? B0 on startup, then 00
AM_RANGE(0xe00040, 0xe00047) AM_WRITE(ddenlovr16_palette_base_w)
AM_RANGE(0xe00048, 0xe0004f) AM_WRITE(ddenlovr16_palette_mask_w)
AM_RANGE(0xe00050, 0xe00057) AM_WRITE(ddenlovr16_transparency_pen_w)
AM_RANGE(0xe00058, 0xe0005f) AM_WRITE(ddenlovr16_transparency_mask_w)
AM_RANGE(0xe00068, 0xe00069) AM_WRITE(ddenlovr16_bgcolor_w)
AM_RANGE(0xe0006a, 0xe0006b) AM_WRITE(ddenlovr16_priority_w)
AM_RANGE(0xe0006c, 0xe0006d) AM_WRITE(ddenlovr16_layer_enable_w)
AM_RANGE(0xe00070, 0xe00071) AM_READNOP
AM_RANGE(0xe00080, 0xe00083) AM_WRITE(ddenlovr_blitter_w)
AM_RANGE(0xe00086, 0xe00087) AM_READ(ddenlovr_gfxrom_r) // Video Chip
AM_RANGE(0xe00100, 0xe00101) AM_READ_PORT("P1")
AM_RANGE(0xe00102, 0xe00103) AM_READ_PORT("P2")
AM_RANGE(0xe00104, 0xe00105) AM_READ_PORT("SYSTEM")
AM_RANGE(0xe00200, 0xe00201) AM_READ_PORT("DSW")
AM_RANGE(0xe00302, 0xe00303) AM_WRITE(ddenlovr_blitter_irq_ack_w) // Blitter irq acknowledge
AM_RANGE(0xe00308, 0xe00309) AM_WRITE(ddenlovr_coincounter_0_w) // Coin Counters
AM_RANGE(0xe0030c, 0xe0030d) AM_WRITE(ddenlovr_coincounter_1_w) //
AM_RANGE(0xe00400, 0xe00403) AM_DEVWRITE8("ymsnd", ym2413_w, 0x00ff)
AM_RANGE(0xe00500, 0xe0051f) AM_DEVREADWRITE8("rtc", msm6242_r, msm6242_w, 0x00ff) // 6242RTC
AM_RANGE(0xe00600, 0xe00603) AM_DEVWRITE8("aysnd", ay8910_address_data_w, 0x00ff)
AM_RANGE(0xe00604, 0xe00605) AM_DEVREAD8("aysnd", ay8910_r, 0x00ff)
AM_RANGE(0xe00700, 0xe00701) AM_DEVREADWRITE8_MODERN("oki", okim6295_device, read, write, 0x00ff) // Sound
AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM
ADDRESS_MAP_END
static ADDRESS_MAP_START( ddenlovr_map, AS_PROGRAM, 16 )
AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
AM_RANGE(0x300000, 0x300001) AM_DEVWRITE("oki", ddenlovr_oki_bank_w)
AM_RANGE(0xd00000, 0xd003ff) AM_WRITE(ddenlovr_palette_w) // Palette
// AM_RANGE(0xd01000, 0xd017ff) AM_RAM // ? B0 on startup, then 00
AM_RANGE(0xe00040, 0xe00047) AM_WRITE(ddenlovr16_palette_base_w)
AM_RANGE(0xe00048, 0xe0004f) AM_WRITE(ddenlovr16_palette_mask_w)
AM_RANGE(0xe00050, 0xe00057) AM_WRITE(ddenlovr16_transparency_pen_w)
AM_RANGE(0xe00058, 0xe0005f) AM_WRITE(ddenlovr16_transparency_mask_w)
AM_RANGE(0xe00068, 0xe00069) AM_WRITE(ddenlovr16_bgcolor_w)
AM_RANGE(0xe0006a, 0xe0006b) AM_WRITE(ddenlovr16_priority_w)
AM_RANGE(0xe0006c, 0xe0006d) AM_WRITE(ddenlovr16_layer_enable_w)
AM_RANGE(0xe00070, 0xe00071) AM_READ(unk16_r) // ? must be 78 on startup (not necessary in ddlover)
AM_RANGE(0xe00080, 0xe00083) AM_WRITE(ddenlovr_blitter_w)
AM_RANGE(0xe00086, 0xe00087) AM_READ(ddenlovr_gfxrom_r) // Video Chip
AM_RANGE(0xe00100, 0xe00101) AM_READ_PORT("P1")
AM_RANGE(0xe00102, 0xe00103) AM_READ_PORT("P2")
AM_RANGE(0xe00104, 0xe00105) AM_READ_PORT("SYSTEM")
AM_RANGE(0xe00200, 0xe00201) AM_READ_PORT("DSW")
AM_RANGE(0xe00302, 0xe00303) AM_WRITE(ddenlovr_blitter_irq_ack_w) // Blitter irq acknowledge
AM_RANGE(0xe00308, 0xe00309) AM_WRITE(ddenlovr_coincounter_0_w) // Coin Counters
AM_RANGE(0xe0030c, 0xe0030d) AM_WRITE(ddenlovr_coincounter_1_w) //
AM_RANGE(0xe00400, 0xe00403) AM_DEVWRITE8("ymsnd", ym2413_w, 0x00ff)
AM_RANGE(0xe00500, 0xe0051f) AM_DEVREADWRITE8("rtc", msm6242_r, msm6242_w, 0x00ff) // 6242RTC
AM_RANGE(0xe00600, 0xe00603) AM_DEVWRITE8("aysnd", ay8910_address_data_w, 0x00ff)
AM_RANGE(0xe00604, 0xe00605) AM_DEVREAD8("aysnd", ay8910_r, 0x00ff)
AM_RANGE(0xe00700, 0xe00701) AM_DEVREADWRITE8_MODERN("oki", okim6295_device, read, write, 0x00ff) // Sound
AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM
ADDRESS_MAP_END
static CUSTOM_INPUT( nettoqc_special_r )
{
dynax_state *state = field.machine().driver_data<dynax_state>();
return state->m_ddenlovr_blitter_irq_flag ? 0x03 : 0x00;
}
static READ16_HANDLER( nettoqc_input_r )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
if (!BIT(state->m_dsw_sel, 0)) return input_port_read(space->machine(), "DSW1");
if (!BIT(state->m_dsw_sel, 1)) return input_port_read(space->machine(), "DSW2");
if (!BIT(state->m_dsw_sel, 2)) return input_port_read(space->machine(), "DSW3");
return 0xffff;
}
/*
Protection:
Writes 37 28 12 to 200e0b then 11 to 200e0d. Expects to read 88 from 200c03
Writes 67 4c 3a to 200e0b then 19 to 200e0d. Expects to read 51 from 200c03
*/
static READ16_HANDLER( nettoqc_protection_r )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
switch (state->m_protection1[0] & 0xff)
{
case 0x3a: return 0x0051;
default: return 0x0088;
}
}
static WRITE16_HANDLER( nettoqc_coincounter_w )
{
if (ACCESSING_BITS_0_7)
{
coin_counter_w(space->machine(), 0, data & 0x01);
coin_counter_w(space->machine(), 1, data & 0x04);
// data & 0x80 ?
}
}
static WRITE16_DEVICE_HANDLER( nettoqc_oki_bank_w )
{
if (ACCESSING_BITS_0_7)
{
okim6295_device *oki = downcast<okim6295_device *>(device);
oki->set_bank_base((data & 3) * 0x40000);
}
}
static ADDRESS_MAP_START( nettoqc_map, AS_PROGRAM, 16 )
AM_RANGE(0x000000, 0x17ffff) AM_ROM // ROM
AM_RANGE(0x200000, 0x2003ff) AM_WRITE(ddenlovr_palette_w) // Palette
AM_RANGE(0x200c02, 0x200c03) AM_READ(nettoqc_protection_r) //
AM_RANGE(0x200e0a, 0x200e0d) AM_WRITEONLY AM_BASE_MEMBER(dynax_state, m_protection1) //
AM_RANGE(0x201000, 0x2017ff) AM_WRITEONLY // ?
AM_RANGE(0x300040, 0x300047) AM_WRITE(ddenlovr16_palette_base_w)
AM_RANGE(0x300048, 0x30004f) AM_WRITE(ddenlovr16_palette_mask_w)
AM_RANGE(0x300050, 0x300057) AM_WRITE(ddenlovr16_transparency_pen_w)
AM_RANGE(0x300058, 0x30005f) AM_WRITE(ddenlovr16_transparency_mask_w)
AM_RANGE(0x300068, 0x300069) AM_WRITE(ddenlovr16_bgcolor_w)
AM_RANGE(0x30006a, 0x30006b) AM_WRITE(ddenlovr16_priority_w)
AM_RANGE(0x30006c, 0x30006d) AM_WRITE(ddenlovr16_layer_enable_w)
AM_RANGE(0x300070, 0x300071) AM_READ(unk16_r) // ? must be 78 on startup (not necessary in ddlover)
AM_RANGE(0x300080, 0x300083) AM_WRITE(ddenlovr_blitter_w)
AM_RANGE(0x300086, 0x300087) AM_READ(ddenlovr_gfxrom_r) // Video Chip
AM_RANGE(0x3000c0, 0x3000c3) AM_DEVWRITE8("ymsnd", ym2413_w, 0x00ff)
AM_RANGE(0x300100, 0x30011f) AM_DEVREADWRITE8("rtc", msm6242_r, msm6242_w, 0x00ff) // 6242RTC
AM_RANGE(0x300140, 0x300143) AM_DEVWRITE8("aysnd", ay8910_address_data_w, 0x00ff)
AM_RANGE(0x300180, 0x300181) AM_READ_PORT("P1")
AM_RANGE(0x300182, 0x300183) AM_READ_PORT("P2")
AM_RANGE(0x300184, 0x300185) AM_READ_PORT("SYSTEM")
AM_RANGE(0x300186, 0x300187) AM_READ(nettoqc_input_r) // DSW's
AM_RANGE(0x300188, 0x300189) AM_WRITE(nettoqc_coincounter_w) // Coin Counters
AM_RANGE(0x30018a, 0x30018b) AM_WRITE(ddenlovr_select_16_w) //
AM_RANGE(0x30018c, 0x30018d) AM_DEVWRITE("oki", nettoqc_oki_bank_w)
AM_RANGE(0x3001ca, 0x3001cb) AM_WRITE(ddenlovr_blitter_irq_ack_w) // Blitter irq acknowledge
AM_RANGE(0x300240, 0x300241) AM_DEVREADWRITE8_MODERN("oki", okim6295_device, read, write, 0x00ff) // Sound
AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM
ADDRESS_MAP_END
/***************************************************************************
Rong Rong
***************************************************************************/
static READ8_HANDLER( rongrong_input_r )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
if (!BIT(state->m_dsw_sel, 0)) return input_port_read(space->machine(), "DSW1");
if (!BIT(state->m_dsw_sel, 1)) return input_port_read(space->machine(), "DSW2");
if (!BIT(state->m_dsw_sel, 2)) return 0xff;//space->machine().rand();
if (!BIT(state->m_dsw_sel, 3)) return 0xff;//space->machine().rand();
if (!BIT(state->m_dsw_sel, 4)) return input_port_read(space->machine(), "DSW3");
return 0xff;
}
static WRITE8_HANDLER( rongrong_select_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
//logerror("%04x: rongrong_select_w %02x\n",cpu_get_pc(&space->device()),data);
/* bits 0-4 = **both** ROM bank **AND** input select */
memory_set_bank(space->machine(), "bank1", data & 0x1f);
state->m_dsw_sel = data;
/* bits 5-7 = RAM bank */
memory_set_bank(space->machine(), "bank2", ((data & 0xe0) >> 5));
}
static ADDRESS_MAP_START( quizchq_map, AS_PROGRAM, 8 )
AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM
AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM
AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked)
AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") AM_WRITE(rongrong_palette_w) // ROM (Banked)
ADDRESS_MAP_END
static ADDRESS_MAP_START( quizchq_portmap, AS_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x01) AM_WRITE(rongrong_blitter_w)
AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r)
AM_RANGE(0x1b, 0x1b) AM_READWRITE(rongrong_blitter_busy_r, rongrong_blitter_busy_w)
AM_RANGE(0x1c, 0x1c) AM_READ(rongrong_input_r)
AM_RANGE(0x1e, 0x1e) AM_WRITE(rongrong_select_w)
AM_RANGE(0x20, 0x20) AM_WRITE(ddenlovr_select2_w)
AM_RANGE(0x22, 0x23) AM_READ(rongrong_input2_r)
AM_RANGE(0x40, 0x40) AM_DEVREADWRITE_MODERN("oki", okim6295_device, read, write)
AM_RANGE(0x60, 0x61) AM_DEVWRITE("ymsnd", ym2413_w)
AM_RANGE(0x80, 0x83) AM_WRITE(ddenlovr_palette_base_w)
AM_RANGE(0x84, 0x87) AM_WRITE(ddenlovr_palette_mask_w)
AM_RANGE(0x88, 0x8b) AM_WRITE(ddenlovr_transparency_pen_w)
AM_RANGE(0x8c, 0x8f) AM_WRITE(ddenlovr_transparency_mask_w)
AM_RANGE(0x94, 0x94) AM_WRITE(ddenlovr_bgcolor_w)
AM_RANGE(0x95, 0x95) AM_WRITE(ddenlovr_priority_w)
AM_RANGE(0x96, 0x96) AM_WRITE(ddenlovr_layer_enable_w)
AM_RANGE(0x98, 0x98) AM_READ(unk_r) // ? must be 78 on startup
AM_RANGE(0xa0, 0xaf) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w) // 6242RTC
AM_RANGE(0xc0, 0xc0) AM_DEVWRITE("oki", quizchq_oki_bank_w)
AM_RANGE(0xc2, 0xc2) AM_WRITENOP // enables palette RAM at 8000
ADDRESS_MAP_END
static ADDRESS_MAP_START( rongrong_map, AS_PROGRAM, 8 )
AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM
AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM
AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked)
AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") AM_WRITE(rongrong_palette_w) // ROM (Banked)
ADDRESS_MAP_END
static ADDRESS_MAP_START( rongrong_portmap, AS_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x01) AM_WRITE(rongrong_blitter_w)
AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r)
AM_RANGE(0x1b, 0x1b) AM_READWRITE(rongrong_blitter_busy_r, rongrong_blitter_busy_w)
AM_RANGE(0x1c, 0x1c) AM_READ(rongrong_input_r)
AM_RANGE(0x1e, 0x1e) AM_WRITE(rongrong_select_w)
AM_RANGE(0x20, 0x2f) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w) // 6242RTC
AM_RANGE(0x40, 0x40) AM_DEVREADWRITE_MODERN("oki", okim6295_device, read, write)
AM_RANGE(0x60, 0x61) AM_DEVWRITE("ymsnd", ym2413_w)
AM_RANGE(0x80, 0x83) AM_WRITE(ddenlovr_palette_base_w)
AM_RANGE(0x84, 0x87) AM_WRITE(ddenlovr_palette_mask_w)
AM_RANGE(0x88, 0x8b) AM_WRITE(ddenlovr_transparency_pen_w)
AM_RANGE(0x8c, 0x8f) AM_WRITE(ddenlovr_transparency_mask_w)
AM_RANGE(0x94, 0x94) AM_WRITE(ddenlovr_bgcolor_w)
AM_RANGE(0x95, 0x95) AM_WRITE(ddenlovr_priority_w)
AM_RANGE(0x96, 0x96) AM_WRITE(ddenlovr_layer_enable_w)
AM_RANGE(0x98, 0x98) AM_READ(unk_r) // ? must be 78 on startup
AM_RANGE(0xa0, 0xa0) AM_WRITE(ddenlovr_select2_w)
AM_RANGE(0xa2, 0xa3) AM_READ(rongrong_input2_r)
AM_RANGE(0xc2, 0xc2) AM_WRITENOP // enables palette RAM at f000, and protection device at f705/f706/f601
ADDRESS_MAP_END
/*
1e input select,1c input read
3e=dsw1 3d=dsw2
a0 input select,a2 input read (protection?)
0=? 1=? 2=coins(from a3)
*/
/***************************************************************************
Monkey Mole Panic
***************************************************************************/
static READ8_HANDLER( magic_r )
{
return 0x01;
}
static WRITE8_HANDLER( mmpanic_rombank_w )
{
memory_set_bank(space->machine(), "bank1", data & 0x7);
/* Bit 4? */
}
static WRITE8_HANDLER( mmpanic_soundlatch_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
soundlatch_w(space, 0, data);
device_set_input_line(state->m_soundcpu, INPUT_LINE_NMI, PULSE_LINE);
}
static WRITE8_HANDLER( mmpanic_blitter_w )
{
blitter_w(space, 0, offset, data, 0xdf); // RST 18
}
static WRITE8_HANDLER( mmpanic_blitter2_w )
{
blitter_w(space, 1, offset, data, 0xdf); // RST 18
}
static void mmpanic_update_leds(running_machine &machine)
{
dynax_state *state = machine.driver_data<dynax_state>();
set_led_status(machine, 0, state->m_mmpanic_leds);
}
/* leds 1-8 */
static WRITE8_HANDLER( mmpanic_leds_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
state->m_mmpanic_leds = (state->m_mmpanic_leds & 0xff00) | data;
mmpanic_update_leds(space->machine());
}
/* led 9 */
static WRITE8_HANDLER( mmpanic_leds2_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
state->m_mmpanic_leds = (state->m_mmpanic_leds & 0xfeff) | (data ? 0x0100 : 0);
mmpanic_update_leds(space->machine());
}
static WRITE8_HANDLER( mmpanic_lockout_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
if (state->m_dsw_sel == 0x0c)
{
coin_counter_w(space->machine(), 0, (~data) & 0x01);
coin_lockout_w(space->machine(), 0, (~data) & 0x02);
set_led_status(space->machine(), 1, (~data) & 0x04);
}
}
static READ8_HANDLER( mmpanic_link_r ) { return 0xff; }
/* Main CPU */
static ADDRESS_MAP_START( mmpanic_map, AS_PROGRAM, 8 )
AM_RANGE(0x0051, 0x0051) AM_READ(magic_r) // ?
AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM
AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM
AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked)
AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") AM_WRITE(rongrong_palette_w) // ROM (Banked)
ADDRESS_MAP_END
static ADDRESS_MAP_START( mmpanic_portmap, AS_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x0f) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w) // 6242RTC
// Layers 0-3:
AM_RANGE(0x20, 0x23) AM_WRITE(ddenlovr_palette_base_w)
AM_RANGE(0x24, 0x27) AM_WRITE(ddenlovr_palette_mask_w)
AM_RANGE(0x28, 0x2b) AM_WRITE(ddenlovr_transparency_pen_w)
AM_RANGE(0x2c, 0x2f) AM_WRITE(ddenlovr_transparency_mask_w)
AM_RANGE(0x34, 0x34) AM_WRITE(ddenlovr_bgcolor_w)
AM_RANGE(0x35, 0x35) AM_WRITE(ddenlovr_priority_w)
AM_RANGE(0x36, 0x36) AM_WRITE(ddenlovr_layer_enable_w)
AM_RANGE(0x38, 0x38) AM_READ(unk_r) // ? must be 78 on startup
// Layers 4-7:
AM_RANGE(0x40, 0x43) AM_WRITE(ddenlovr_palette_base2_w)
AM_RANGE(0x44, 0x47) AM_WRITE(ddenlovr_palette_mask2_w)
AM_RANGE(0x48, 0x4b) AM_WRITE(ddenlovr_transparency_pen2_w)
AM_RANGE(0x4c, 0x4f) AM_WRITE(ddenlovr_transparency_mask2_w)
AM_RANGE(0x54, 0x54) AM_WRITE(ddenlovr_bgcolor2_w)
AM_RANGE(0x55, 0x55) AM_WRITE(ddenlovr_priority2_w)
AM_RANGE(0x56, 0x56) AM_WRITE(ddenlovr_layer_enable2_w)
AM_RANGE(0x58, 0x58) AM_READ(unk_r) // ? must be 78 on startup
AM_RANGE(0x60, 0x61) AM_WRITE(mmpanic_blitter_w)
AM_RANGE(0x63, 0x63) AM_READ(rongrong_gfxrom_r) // Video Chip
AM_RANGE(0x64, 0x65) AM_WRITE(mmpanic_blitter2_w)
AM_RANGE(0x68, 0x68) AM_DEVWRITE("aysnd", ddenlovr_select_w)
AM_RANGE(0x69, 0x69) AM_WRITE(mmpanic_lockout_w)
AM_RANGE(0x6a, 0x6a) AM_READ_PORT("IN0")
AM_RANGE(0x6b, 0x6b) AM_READ_PORT("IN1")
AM_RANGE(0x6c, 0x6d) AM_READ(mmpanic_link_r) // Other cabinets?
AM_RANGE(0x74, 0x74) AM_WRITE(mmpanic_rombank_w)
AM_RANGE(0x78, 0x78) AM_WRITENOP // 0, during RST 08 (irq acknowledge?)
AM_RANGE(0x7c, 0x7c) AM_DEVREADWRITE_MODERN("oki", okim6295_device, read, write) // Sound
AM_RANGE(0x8c, 0x8c) AM_WRITE(mmpanic_soundlatch_w) //
AM_RANGE(0x88, 0x88) AM_WRITE(mmpanic_leds_w) // Leds
AM_RANGE(0x90, 0x90) AM_WRITENOP // written just before port 8c
AM_RANGE(0x94, 0x94) AM_READ_PORT("DSW1")
AM_RANGE(0x98, 0x98) AM_READ_PORT("DSW2")
AM_RANGE(0x9c, 0x9c) AM_READ_PORT("DSW3") // DSW 1&2 high bits
AM_RANGE(0xa6, 0xa6) AM_WRITE(mmpanic_leds2_w) //
ADDRESS_MAP_END
/* Sound CPU */
static ADDRESS_MAP_START( mmpanic_sound_map, AS_PROGRAM, 8 )
AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM
AM_RANGE(0x6000, 0x66ff) AM_RAM // RAM
AM_RANGE(0x8000, 0xffff) AM_ROM // ROM
ADDRESS_MAP_END
static ADDRESS_MAP_START( mmpanic_sound_portmap, AS_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READ(soundlatch_r)
AM_RANGE(0x02, 0x02) AM_READNOP // read just before port 00
AM_RANGE(0x04, 0x04) AM_NOP // read only once at the start
AM_RANGE(0x06, 0x06) AM_WRITENOP // almost always 1, sometimes 0
AM_RANGE(0x08, 0x09) AM_DEVWRITE("ymsnd", ym2413_w)
AM_RANGE(0x0c, 0x0c) AM_DEVWRITE("aysnd", ay8910_data_w)
AM_RANGE(0x0e, 0x0e) AM_DEVWRITE("aysnd", ay8910_address_w)
ADDRESS_MAP_END
/***************************************************************************
The First Funky Fighter
***************************************************************************/
/* Main CPU */
static ADDRESS_MAP_START( funkyfig_map, AS_PROGRAM, 8 )
AM_RANGE(0x0000, 0x5fff) AM_ROM
AM_RANGE(0x6000, 0x6fff) AM_RAM
AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked)
AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1")
AM_RANGE(0x8000, 0x81ff) AM_WRITE(rongrong_palette_w)
AM_RANGE(0x8400, 0x87ff) AM_WRITENOP
ADDRESS_MAP_END
static READ8_HANDLER( funkyfig_busy_r )
{
// bit 0 ?
return 0x00; // bit 7 = blitter busy
}
static WRITE8_HANDLER( funkyfig_blitter_w )
{
blitter_w_funkyfig(space->machine(), 0, offset, data, 0xe0);
}
static WRITE8_HANDLER( funkyfig_rombank_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
state->m_dsw_sel = data;
memory_set_bank(space->machine(), "bank1", data & 0x0f);
// bit 4 selects palette ram at 8000?
memory_set_bank(space->machine(), "bank2", ((data & 0xe0) >> 5));
}
static READ8_HANDLER( funkyfig_dsw_r )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
if (!BIT(state->m_dsw_sel, 0)) return input_port_read(space->machine(), "DSW1");
if (!BIT(state->m_dsw_sel, 1)) return input_port_read(space->machine(), "DSW2");
if (!BIT(state->m_dsw_sel, 2)) return input_port_read(space->machine(), "DSW3");
logerror("%06x: warning, unknown bits read, ddenlovr_select = %02x\n", cpu_get_pc(&space->device()), state->m_dsw_sel);
return 0xff;
}
static READ8_HANDLER( funkyfig_coin_r )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
switch (state->m_input_sel)
{
case 0x22: return input_port_read(space->machine(), "IN2");
case 0x23: return state->m_funkyfig_lockout;
}
logerror("%06x: warning, unknown bits read, ddenlovr_select2 = %02x\n", cpu_get_pc(&space->device()), state->m_input_sel);
return 0xff;
}
static READ8_HANDLER( funkyfig_key_r )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
switch (state->m_input_sel)
{
case 0x20: return input_port_read(space->machine(), "IN0");
case 0x21: return input_port_read(space->machine(), "IN1");
}
logerror("%06x: warning, unknown bits read, ddenlovr_select2 = %02x\n", cpu_get_pc(&space->device()), state->m_input_sel);
return 0xff;
}
static WRITE8_HANDLER( funkyfig_lockout_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
switch (state->m_input_sel)
{
case 0x2c:
state->m_funkyfig_lockout = data;
coin_counter_w(space->machine(), 0, data & 0x01);
coin_lockout_w(space->machine(), 0, (~data) & 0x02);
if (data & ~0x03)
logerror("%06x: warning, unknown bits written, lockout = %02x\n", cpu_get_pc(&space->device()), data);
break;
// case 0xef: 16 bytes on startup
default:
logerror("%06x: warning, unknown bits written, ddenlovr_select2 = %02x, data = %02x\n", cpu_get_pc(&space->device()), state->m_input_sel, data);
}
}
static ADDRESS_MAP_START( funkyfig_portmap, AS_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_DEVREADWRITE_MODERN("oki", okim6295_device, read, write) // Sound
AM_RANGE(0x01, 0x01) AM_WRITE(mmpanic_leds_w) // Leds
AM_RANGE(0x02, 0x02) AM_WRITE(mmpanic_soundlatch_w) //
AM_RANGE(0x04, 0x04) AM_READ(funkyfig_busy_r)
AM_RANGE(0x1c, 0x1c) AM_READ(funkyfig_dsw_r)
AM_RANGE(0x1e, 0x1e) AM_WRITE(funkyfig_rombank_w)
AM_RANGE(0x20, 0x21) AM_WRITE(funkyfig_blitter_w)
AM_RANGE(0x23, 0x23) AM_READ(rongrong_gfxrom_r) // Video Chip
AM_RANGE(0x40, 0x4f) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w) // 6242RTC
// Layers 0-3:
AM_RANGE(0x60, 0x63) AM_WRITE(ddenlovr_palette_base_w)
AM_RANGE(0x64, 0x67) AM_WRITE(ddenlovr_palette_mask_w)
AM_RANGE(0x68, 0x6b) AM_WRITE(ddenlovr_transparency_pen_w)
AM_RANGE(0x6c, 0x6f) AM_WRITE(ddenlovr_transparency_mask_w)
AM_RANGE(0x74, 0x74) AM_WRITE(ddenlovr_bgcolor_w)
AM_RANGE(0x75, 0x75) AM_WRITE(ddenlovr_priority_w)
AM_RANGE(0x76, 0x76) AM_WRITE(ddenlovr_layer_enable_w)
AM_RANGE(0x78, 0x78) AM_READ(unk_r) // ? must be 78 on startup
AM_RANGE(0x80, 0x80) AM_WRITE(ddenlovr_select2_w)
AM_RANGE(0x81, 0x81) AM_WRITE(funkyfig_lockout_w)
AM_RANGE(0x82, 0x82) AM_READ(funkyfig_coin_r)
AM_RANGE(0x83, 0x83) AM_READ(funkyfig_key_r)
AM_RANGE(0xa2, 0xa2) AM_WRITE(mmpanic_leds2_w)
ADDRESS_MAP_END
/* Sound CPU */
static ADDRESS_MAP_START( funkyfig_sound_portmap, AS_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x02, 0x02) AM_READ(soundlatch_r)
AM_RANGE(0x04, 0x04) AM_READNOP // read only once at the start
ADDRESS_MAP_END
/***************************************************************************
Hana Kanzashi
***************************************************************************/
static WRITE8_HANDLER( hanakanz_rombank_w )
{
memory_set_bank(space->machine(), "bank1", data & 0x0f);
memory_set_bank(space->machine(), "bank2", ((data & 0xf0) >> 4));
}
static ADDRESS_MAP_START( hanakanz_map, AS_PROGRAM, 8 )
AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM
AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM
AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked)
AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") // ROM (Banked)
ADDRESS_MAP_END
static WRITE8_HANDLER( hanakanz_keyb_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
state->m_keyb = data;
}
static WRITE8_HANDLER( hanakanz_dsw_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
state->m_dsw_sel = data;
}
static READ8_HANDLER( hanakanz_keyb_r )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
UINT8 val = 0xff;
if (!BIT(state->m_keyb, 0)) val = input_port_read(space->machine(), offset ? "KEY5" : "KEY0");
else if (!BIT(state->m_keyb, 1)) val = input_port_read(space->machine(), offset ? "KEY6" : "KEY1");
else if (!BIT(state->m_keyb, 2)) val = input_port_read(space->machine(), offset ? "KEY7" : "KEY2");
else if (!BIT(state->m_keyb, 3)) val = input_port_read(space->machine(), offset ? "KEY8" : "KEY3");
else if (!BIT(state->m_keyb, 4)) val = input_port_read(space->machine(), offset ? "KEY9" : "KEY4");
val |= input_port_read(space->machine(), offset ? "HOPPER" : "BET");
return val;
}
static READ8_HANDLER( hanakanz_dsw_r )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
if (!BIT(state->m_dsw_sel, 0)) return input_port_read(space->machine(), "DSW1");
if (!BIT(state->m_dsw_sel, 1)) return input_port_read(space->machine(), "DSW2");
if (!BIT(state->m_dsw_sel, 2)) return input_port_read(space->machine(), "DSW3");
if (!BIT(state->m_dsw_sel, 3)) return input_port_read(space->machine(), "DSW4");
if (!BIT(state->m_dsw_sel, 4)) return input_port_read(space->machine(), "DSW5");
return 0xff;
}
static READ8_HANDLER( hanakanz_busy_r )
{
return 0x80; // bit 7 == 0 -> blitter busy
}
static READ8_HANDLER( hanakanz_gfxrom_r )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
UINT8 *rom = space->machine().region("blitter")->base();
size_t size = space->machine().region("blitter")->bytes();
int address = (state->m_ddenlovr_blit_address & 0xffffff) * 2;
if (address >= size)
{
logerror("CPU#0 PC %06X: Error, Blitter address %06X out of range\n", cpu_get_pc(&space->device()), address);
address %= size;
}
if (offset == 0)
{
state->m_romdata[0] = rom[address + 0];
state->m_romdata[1] = rom[address + 1];
state->m_ddenlovr_blit_address = (state->m_ddenlovr_blit_address + 1) & 0xffffff;
return state->m_romdata[0];
}
else
{
return state->m_romdata[1];
}
}
static WRITE8_HANDLER( hanakanz_coincounter_w )
{
// bit 0 = coin counter
// bit 1 = out counter
// bit 2 = 1 if bet on
// bit 3 = 1 if bet off
coin_counter_w(space->machine(), 0, data & 1);
if (data & 0xf0)
logerror("%04x: warning, coin counter = %02x\n", cpu_get_pc(&space->device()), data);
#ifdef MAME_DEBUG
// popmessage("93 = %02x", data);
#endif
}
static WRITE8_HANDLER( hanakanz_palette_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
if (state->m_ddenlovr_blit_latch & 0x80)
{
state->m_palette_index = data | ((state->m_ddenlovr_blit_latch & 1) << 8);
}
else
{
// 0bbggggg bbbrrrrr
// 04343210 21043210
int g = state->m_ddenlovr_blit_latch & 0x1f;
int r = data & 0x1f;
int b = ((data & 0xe0) >> 5) | ((state->m_ddenlovr_blit_latch & 0x60) >> 2);
palette_set_color_rgb(space->machine(), (state->m_palette_index++) & 0x1ff, pal5bit(r), pal5bit(g), pal5bit(b));
}
}
static WRITE8_DEVICE_HANDLER( hanakanz_oki_bank_w )
{
okim6295_device *oki = downcast<okim6295_device *>(device);
oki->set_bank_base((data & 0x40) ? 0x40000 : 0);
}
static READ8_HANDLER( hanakanz_rand_r )
{
return space->machine().rand();
}
static ADDRESS_MAP_START( hanakanz_portmap, AS_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x2c, 0x2c) AM_READ(hanakanz_busy_r) AM_DEVWRITE("oki", hanakanz_oki_bank_w)
AM_RANGE(0x2e, 0x2e) AM_WRITE(hanakanz_blitter_reg_w)
AM_RANGE(0x30, 0x30) AM_WRITE(hanakanz_rombank_w)
AM_RANGE(0x31, 0x31) AM_WRITE(hanakanz_dsw_w)
AM_RANGE(0x32, 0x32) AM_READ(hanakanz_dsw_r)
AM_RANGE(0x80, 0x80) AM_WRITE(hanakanz_blitter_data_w)
AM_RANGE(0x81, 0x81) AM_WRITE(hanakanz_palette_w)
AM_RANGE(0x83, 0x84) AM_READ(hanakanz_gfxrom_r)
AM_RANGE(0x90, 0x90) AM_READ_PORT("SYSTEM")
AM_RANGE(0x91, 0x92) AM_READ(hanakanz_keyb_r)
AM_RANGE(0x93, 0x93) AM_WRITE(hanakanz_coincounter_w)
AM_RANGE(0x94, 0x94) AM_WRITE(hanakanz_keyb_w)
AM_RANGE(0x96, 0x96) AM_READ(hanakanz_rand_r)
AM_RANGE(0xa0, 0xa1) AM_DEVWRITE("ymsnd", ym2413_w)
AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE_MODERN("oki", okim6295_device, read, write)
AM_RANGE(0xe0, 0xef) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w) // 6242RTC
ADDRESS_MAP_END
static ADDRESS_MAP_START( hkagerou_portmap, AS_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x2c, 0x2c) AM_READ(hanakanz_busy_r) AM_DEVWRITE("oki", hanakanz_oki_bank_w)
AM_RANGE(0x2e, 0x2e) AM_WRITE(hanakanz_blitter_reg_w)
AM_RANGE(0x30, 0x30) AM_WRITE(hanakanz_rombank_w)
AM_RANGE(0x31, 0x31) AM_WRITE(hanakanz_dsw_w)
AM_RANGE(0x32, 0x32) AM_READ(hanakanz_dsw_r)
AM_RANGE(0x80, 0x80) AM_WRITE(hanakanz_blitter_data_w)
AM_RANGE(0x81, 0x81) AM_WRITE(hanakanz_palette_w)
AM_RANGE(0x83, 0x84) AM_READ(hanakanz_gfxrom_r)
AM_RANGE(0xa0, 0xa1) AM_DEVWRITE("ymsnd", ym2413_w)
AM_RANGE(0xb0, 0xb0) AM_READ_PORT("SYSTEM")
AM_RANGE(0xb1, 0xb2) AM_READ(hanakanz_keyb_r)
AM_RANGE(0xb3, 0xb3) AM_WRITE(hanakanz_coincounter_w)
AM_RANGE(0xb4, 0xb4) AM_WRITE(hanakanz_keyb_w)
AM_RANGE(0xb6, 0xb6) AM_READ(hanakanz_rand_r)
AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE_MODERN("oki", okim6295_device, read, write)
AM_RANGE(0xe0, 0xef) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w) // 6242RTC
ADDRESS_MAP_END
static WRITE8_HANDLER( mjreach1_protection_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
state->m_prot_val = data;
}
static READ8_HANDLER( mjreach1_protection_r )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
return state->m_prot_val;
}
static ADDRESS_MAP_START( mjreach1_portmap, AS_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x2c, 0x2c) AM_READ(hanakanz_busy_r) AM_DEVWRITE("oki", hanakanz_oki_bank_w)
AM_RANGE(0x2e, 0x2e) AM_WRITE(hanakanz_blitter_reg_w)
AM_RANGE(0x30, 0x30) AM_WRITE(hanakanz_rombank_w)
AM_RANGE(0x31, 0x31) AM_WRITE(hanakanz_dsw_w)
AM_RANGE(0x32, 0x32) AM_READ(hanakanz_dsw_r)
AM_RANGE(0x80, 0x80) AM_WRITE(hanakanz_blitter_data_w)
AM_RANGE(0x81, 0x81) AM_WRITE(hanakanz_palette_w)
AM_RANGE(0x83, 0x84) AM_READ(hanakanz_gfxrom_r)
AM_RANGE(0x90, 0x90) AM_WRITE(hanakanz_keyb_w)
AM_RANGE(0x92, 0x92) AM_READ(hanakanz_rand_r)
AM_RANGE(0x93, 0x93) AM_READWRITE(mjreach1_protection_r, mjreach1_protection_w)
AM_RANGE(0x94, 0x94) AM_READ_PORT("SYSTEM")
AM_RANGE(0x95, 0x96) AM_READ(hanakanz_keyb_r)
AM_RANGE(0x97, 0x97) AM_WRITE(hanakanz_coincounter_w)
AM_RANGE(0xa0, 0xa1) AM_DEVWRITE("ymsnd", ym2413_w)
AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE_MODERN("oki", okim6295_device, read, write)
AM_RANGE(0xe0, 0xef) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w) // 6242RTC
ADDRESS_MAP_END
/***************************************************************************
Mahjong Chuukanejyo
***************************************************************************/
static READ8_HANDLER( mjchuuka_keyb_r )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
UINT8 val = 0xff;
if (!BIT(state->m_keyb, 0)) val = input_port_read(space->machine(), offset ? "KEY5" : "KEY0");
else if (!BIT(state->m_keyb, 1)) val = input_port_read(space->machine(), offset ? "KEY6" : "KEY1");
else if (!BIT(state->m_keyb, 2)) val = input_port_read(space->machine(), offset ? "KEY7" : "KEY2");
else if (!BIT(state->m_keyb, 3)) val = input_port_read(space->machine(), offset ? "KEY8" : "KEY3");
else if (!BIT(state->m_keyb, 4)) val = input_port_read(space->machine(), offset ? "KEY9" : "KEY4");
val |= input_port_read(space->machine(), offset ? "HOPPER" : "BET");
if (offset)
val |= 0x80; // blitter busy
return val;
}
static WRITE8_HANDLER( mjchuuka_blitter_w )
{
hanakanz_blitter_reg_w(space, 0, offset >> 8);
hanakanz_blitter_data_w(space, 0, data);
}
static void mjchuuka_get_romdata(running_machine &machine)
{
dynax_state *state = machine.driver_data<dynax_state>();
UINT8 *rom = machine.region("blitter")->base();
size_t size = machine.region("blitter")->bytes();
int address = (state->m_ddenlovr_blit_address & 0xffffff) * 2;
if (address >= size)
{
logerror("%s: Error, Blitter address %06X out of range\n", machine.describe_context(), address);
address %= size;
}
state->m_romdata[0] = rom[address + 0];
state->m_romdata[1] = rom[address + 1];
}
static READ8_HANDLER( mjchuuka_gfxrom_0_r )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
mjchuuka_get_romdata(space->machine());
state->m_ddenlovr_blit_address++;
return state->m_romdata[0];
}
static READ8_HANDLER( mjchuuka_gfxrom_1_r )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
return state->m_romdata[1];
}
static WRITE8_HANDLER( mjchuuka_palette_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
UINT16 rgb = (offset & 0xff00) | data;
if (rgb & 0x8000)
{
state->m_palette_index = rgb & 0x1ff;
}
else
{
// 0bbggggg bbbrrrrr
// 04343210 21043210
int r = (rgb >> 0) & 0x1f;
int g = (rgb >> 8) & 0x1f;
int b = ((rgb >> 5) & 0x07) | ((rgb & 0x6000) >> 10);
palette_set_color_rgb(space->machine(), (state->m_palette_index++) & 0x1ff, pal5bit(r), pal5bit(g), pal5bit(b));
}
}
static WRITE8_HANDLER( mjchuuka_coincounter_w )
{
// bit 0 = in counter
// bit 1 = out counter
// bit 3 = lockout
// bit 8?
coin_counter_w(space->machine(), 0, data & 0x01);
coin_lockout_w(space->machine(), 0, (~data) & 0x08);
if (data & 0x74)
logerror("%04x: warning, coin counter = %02x\n", cpu_get_pc(&space->device()), data);
#ifdef MAME_DEBUG
// popmessage("40 = %02x",data);
#endif
}
static WRITE8_DEVICE_HANDLER( mjchuuka_oki_bank_w )
{
// data & 0x08 ?
okim6295_device *oki = downcast<okim6295_device *>(device);
oki->set_bank_base((data & 0x01) ? 0x40000 : 0);
#ifdef MAME_DEBUG
// popmessage("1e = %02x",data);
#endif
}
static ADDRESS_MAP_START( mjchuuka_portmap, AS_IO, 8 ) // 16 bit I/O
AM_RANGE(0x13, 0x13) AM_MIRROR(0xff00) AM_READ(hanakanz_rand_r)
AM_RANGE(0x1c, 0x1c) AM_MIRROR(0xff00) AM_WRITE(hanakanz_rombank_w)
AM_RANGE(0x1e, 0x1e) AM_MIRROR(0xff00) AM_DEVWRITE("oki", mjchuuka_oki_bank_w )
AM_RANGE(0x20, 0x20) AM_MIRROR(0xff00) AM_MASK(0xff00) AM_WRITE(mjchuuka_blitter_w)
AM_RANGE(0x21, 0x21) AM_MIRROR(0xff00) AM_MASK(0xff00) AM_WRITE(mjchuuka_palette_w)
AM_RANGE(0x23, 0x23) AM_MIRROR(0xff00) AM_READ(mjchuuka_gfxrom_0_r)
AM_RANGE(0x40, 0x40) AM_MIRROR(0xff00) AM_WRITE(mjchuuka_coincounter_w)
AM_RANGE(0x41, 0x41) AM_MIRROR(0xff00) AM_WRITE(hanakanz_keyb_w)
AM_RANGE(0x42, 0x42) AM_MIRROR(0xff00) AM_READ_PORT("SYSTEM")
AM_RANGE(0x43, 0x44) AM_MIRROR(0xff00) AM_READ(mjchuuka_keyb_r)
AM_RANGE(0x45, 0x45) AM_MIRROR(0xff00) AM_READ(mjchuuka_gfxrom_1_r)
AM_RANGE(0x60, 0x60) AM_MIRROR(0xff00) AM_READ_PORT("DSW1")
AM_RANGE(0x61, 0x61) AM_MIRROR(0xff00) AM_READ_PORT("DSW2")
AM_RANGE(0x62, 0x62) AM_MIRROR(0xff00) AM_READ_PORT("DSW3")
AM_RANGE(0x63, 0x63) AM_MIRROR(0xff00) AM_READ_PORT("DSW4")
AM_RANGE(0x64, 0x64) AM_MIRROR(0xff00) AM_READ_PORT("DSW5") // DSW 1-4 high bits
AM_RANGE(0x80, 0x80) AM_MIRROR(0xff00) AM_DEVREADWRITE_MODERN("oki", okim6295_device, read, write)
AM_RANGE(0xa0, 0xa1) AM_MIRROR(0xff00) AM_DEVWRITE("ymsnd", ym2413_w)
AM_RANGE(0xc0, 0xcf) AM_MIRROR(0xff00) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w) // 6242RTC
AM_RANGE(0xe0, 0xe1) AM_MIRROR(0xff00) AM_DEVWRITE("aysnd", ay8910_address_data_w)
ADDRESS_MAP_END
/***************************************************************************
Mahjong The Mysterious World
***************************************************************************/
static ADDRESS_MAP_START( mjmyster_map, AS_PROGRAM, 8 )
AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM
AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM
AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked)
AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") // ROM/RAM (Banked)
AM_RANGE(0xf000, 0xf1ff) AM_WRITE(rongrong_palette_w) // RAM enabled by bit 4 of rombank
AM_RANGE(0xf200, 0xffff) AM_WRITENOP // ""
ADDRESS_MAP_END
static WRITE8_HANDLER( mjmyster_rambank_w )
{
memory_set_bank(space->machine(), "bank2", data & 0x07);
//logerror("%04x: rambank = %02x\n", cpu_get_pc(&space->device()), data);
}
static WRITE8_HANDLER( mjmyster_select2_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
state->m_input_sel = data;
if (data & 0x80)
state->m_keyb = 1;
}
static READ8_HANDLER( mjmyster_coins_r )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
switch (state->m_input_sel)
{
case 0x00: return input_port_read(space->machine(), "SYSTEM");
case 0x01: return 0xff;
case 0x02: return 0xff; // bit 7 = 0 -> blitter busy, + hopper switch
case 0x03: return 0xff;
}
logerror("%06x: warning, unknown bits read, ddenlovr_select2 = %02x\n", cpu_get_pc(&space->device()), state->m_input_sel);
return 0xff;
}
static READ8_HANDLER( mjmyster_keyb_r )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
UINT8 ret = 0xff;
if (BIT(state->m_keyb, 0)) ret = input_port_read(space->machine(), "KEY0");
else if (BIT(state->m_keyb, 1)) ret = input_port_read(space->machine(), "KEY1");
else if (BIT(state->m_keyb, 2)) ret = input_port_read(space->machine(), "KEY2");
else if (BIT(state->m_keyb, 3)) ret = input_port_read(space->machine(), "KEY3");
else if (BIT(state->m_keyb, 4)) ret = input_port_read(space->machine(), "KEY4");
else logerror("%06x: warning, unknown bits read, keyb = %02x\n", cpu_get_pc(&space->device()), state->m_keyb);
state->m_keyb <<= 1;
return ret;
}
static READ8_HANDLER( mjmyster_dsw_r )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
if (!BIT(state->m_dsw_sel, 0)) return input_port_read(space->machine(), "DSW4");
if (!BIT(state->m_dsw_sel, 1)) return input_port_read(space->machine(), "DSW3");
if (!BIT(state->m_dsw_sel, 2)) return input_port_read(space->machine(), "DSW2");
if (!BIT(state->m_dsw_sel, 3)) return input_port_read(space->machine(), "DSW1");
if (!BIT(state->m_dsw_sel, 4)) return input_port_read(space->machine(), "DSW5");
logerror("%06x: warning, unknown bits read, ddenlovr_select = %02x\n", cpu_get_pc(&space->device()), state->m_dsw_sel);
return 0xff;
}
static WRITE8_HANDLER( mjmyster_coincounter_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
switch (state->m_input_sel)
{
case 0x0c:
coin_counter_w(space->machine(), 0, (~data) & 0x01); // coin in
coin_counter_w(space->machine(), 0, (~data) & 0x02); // coin out actually
#ifdef MAME_DEBUG
// popmessage("cc: %02x",data);
#endif
break;
default:
logerror("%06x: warning, unknown bits written, ddenlovr_select2 = %02x, data = %02x\n", cpu_get_pc(&space->device()), state->m_input_sel, data);
}
}
static WRITE8_HANDLER( mjmyster_blitter_w )
{
blitter_w(space, 0, offset, data, 0xfc);
}
static ADDRESS_MAP_START( mjmyster_portmap, AS_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x01) AM_WRITE(mjmyster_blitter_w)
AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r)
AM_RANGE(0x1c, 0x1c) AM_WRITE(mjmyster_rambank_w)
AM_RANGE(0x1e, 0x1e) AM_WRITE(mmpanic_rombank_w)
AM_RANGE(0x20, 0x20) AM_WRITE(mjmyster_select2_w)
AM_RANGE(0x21, 0x21) AM_WRITE(mjmyster_coincounter_w)
AM_RANGE(0x22, 0x22) AM_READ(mjmyster_coins_r)
AM_RANGE(0x23, 0x23) AM_READ(mjmyster_keyb_r)
AM_RANGE(0x40, 0x40) AM_DEVREADWRITE_MODERN("oki", okim6295_device, read, write)
AM_RANGE(0x42, 0x43) AM_DEVWRITE("ymsnd", ym2413_w)
AM_RANGE(0x44, 0x44) AM_DEVREAD("aysnd", ay8910_r)
AM_RANGE(0x46, 0x46) AM_DEVWRITE("aysnd", ay8910_data_w)
AM_RANGE(0x48, 0x48) AM_DEVWRITE("aysnd", ay8910_address_w)
AM_RANGE(0x60, 0x6f) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w) // 6242RTC
AM_RANGE(0x80, 0x83) AM_WRITE(ddenlovr_palette_base_w)
AM_RANGE(0x84, 0x87) AM_WRITE(ddenlovr_palette_mask_w)
AM_RANGE(0x88, 0x8b) AM_WRITE(ddenlovr_transparency_pen_w)
AM_RANGE(0x8c, 0x8f) AM_WRITE(ddenlovr_transparency_mask_w)
AM_RANGE(0x94, 0x94) AM_WRITE(ddenlovr_bgcolor_w)
AM_RANGE(0x95, 0x95) AM_WRITE(ddenlovr_priority_w)
AM_RANGE(0x96, 0x96) AM_WRITE(ddenlovr_layer_enable_w)
AM_RANGE(0x98, 0x98) AM_READ(unk_r) // ? must be 78 on startup
AM_RANGE(0xc2, 0xc2) AM_READ(hanakanz_rand_r)
AM_RANGE(0xc3, 0xc3) AM_READ(mjmyster_dsw_r)
ADDRESS_MAP_END
/***************************************************************************
Hanafuda Hana Ginga
***************************************************************************/
static WRITE8_HANDLER( hginga_rombank_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
memory_set_bank(space->machine(), "bank1", data & 0x7);
state->m_hginga_rombank = data;
}
// similar to rongrong
static READ8_HANDLER( hginga_protection_r )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
UINT8 *rom = space->machine().region("maincpu")->base();
if (state->m_hginga_rombank & 0x10)
return hanakanz_rand_r(space, 0);
return rom[0x10000 + 0x8000 * (state->m_hginga_rombank & 0x7) + 0xf601 - 0x8000];
}
static ADDRESS_MAP_START( hginga_map, AS_PROGRAM, 8 )
AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM
AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM
AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked)
AM_RANGE(0xf601, 0xf601) AM_READ(hginga_protection_r)
AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") // ROM/RAM (Banked)
AM_RANGE(0xf000, 0xf1ff) AM_WRITE(rongrong_palette_w) // RAM enabled by bit 4 of rombank
AM_RANGE(0xf700, 0xf706) AM_WRITENOP
ADDRESS_MAP_END
static READ8_DEVICE_HANDLER( hginga_dsw_r )
{
dynax_state *state = device->machine().driver_data<dynax_state>();
if (!BIT(state->m_dsw_sel, 0)) return input_port_read(device->machine(), "DSW4");
if (!BIT(state->m_dsw_sel, 1)) return input_port_read(device->machine(), "DSW3");
if (!BIT(state->m_dsw_sel, 2)) return input_port_read(device->machine(), "DSW2");
if (!BIT(state->m_dsw_sel, 3)) return input_port_read(device->machine(), "DSW1");
if (!BIT(state->m_dsw_sel, 4)) return input_port_read(device->machine(), "DSW5");
logerror("%s: warning, unknown bits read, ddenlovr_select = %02x\n", device->machine().describe_context(), state->m_dsw_sel);
return 0xff;
}
static WRITE8_HANDLER( hginga_input_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
state->m_input_sel = data;
state->m_keyb = 0;
}
static READ8_HANDLER( hginga_coins_r )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
switch (state->m_input_sel)
{
case 0x20: return input_port_read(space->machine(), "SYSTEM");
case 0x21: return input_port_read(space->machine(), "BET");
case 0x22: return 0x7f; // bit 7 = blitter busy, bit 6 = hopper
case 0x23: return state->m_coins;
}
logerror("%04x: coins_r with select = %02x\n", cpu_get_pc(&space->device()), state->m_input_sel);
return 0xff;
}
static WRITE8_HANDLER( hginga_80_w )
{
// popmessage("port 80 = %02x", data);
}
static WRITE8_HANDLER( hginga_coins_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
switch (state->m_input_sel)
{
case 0x2d:
break;
case 0x2c:
// bit 0 = coin counter
// bit 1 = out counter
// bit 2 = 1 if bet on
// bit 3 = 1 if bet on
// bit 7?
coin_counter_w(space->machine(), 0, data & 1);
#ifdef MAME_DEBUG
// popmessage("COINS %02x", data);
#endif
state->m_coins = data;
break;
default:
logerror("%04x: coins_w with select = %02x, data = %02x\n", cpu_get_pc(&space->device()), state->m_input_sel, data);
}
}
static READ8_HANDLER( hginga_input_r )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
static const char *const keynames0[] = { "KEY0", "KEY1", "KEY2", "KEY3", "KEY4" };
static const char *const keynames1[] = { "KEY5", "KEY6", "KEY7", "KEY8", "KEY9" };
switch (state->m_input_sel)
{
case 0x2d:
return 0xff;
// player 1
case 0xa1:
return input_port_read(space->machine(), keynames0[state->m_keyb++]);
// player 2
case 0xa2:
return input_port_read(space->machine(), keynames1[state->m_keyb++]);
}
logerror("%04x: input_r with select = %02x\n", cpu_get_pc(&space->device()), state->m_input_sel);
return 0xff;
}
static WRITE8_HANDLER( hginga_blitter_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
if (offset == 0)
{
state->m_ddenlovr_blit_latch = data;
}
else
{
switch (state->m_ddenlovr_blit_latch & 0x3f)
{
case 0x00:
switch (data & 0xf)
{
case 0x03:
case 0x06:
case 0x0a:
data = data & ~2; // do not mirror writes of other layers to layer 1? (see code at 38d)
break;
}
break;
case 0x24:
if (data == 0x1b)
data = 0x13; // vertical lines -> horizontal lines (see numbers drawn on cards on "first chance")
break;
}
}
blitter_w(space, 0, offset, data, 0xfc);
}
static ADDRESS_MAP_START( hginga_portmap, AS_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x01) AM_WRITE(hginga_blitter_w)
AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r)
AM_RANGE(0x1c, 0x1c) AM_READNOP AM_WRITE(mjmyster_rambank_w)
AM_RANGE(0x1e, 0x1e) AM_WRITE(hginga_rombank_w)
AM_RANGE(0x22, 0x23) AM_DEVWRITE("ymsnd", ym2413_w)
AM_RANGE(0x24, 0x24) AM_DEVREAD("aysnd", ay8910_r)
AM_RANGE(0x26, 0x26) AM_DEVWRITE("aysnd", ay8910_data_w)
AM_RANGE(0x28, 0x28) AM_DEVWRITE("aysnd", ay8910_address_w)
AM_RANGE(0x40, 0x40) AM_WRITE(hginga_input_w)
AM_RANGE(0x41, 0x41) AM_WRITE(hginga_coins_w)
AM_RANGE(0x42, 0x42) AM_READ(hginga_coins_r)
AM_RANGE(0x43, 0x43) AM_READ(hginga_input_r)
AM_RANGE(0x60, 0x6f) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w) // 6242RTC
AM_RANGE(0x80, 0x80) AM_WRITE(hginga_80_w)
AM_RANGE(0xa0, 0xa3) AM_WRITE(ddenlovr_palette_base_w)
AM_RANGE(0xa4, 0xa7) AM_WRITE(ddenlovr_palette_mask_w)
AM_RANGE(0xa8, 0xab) AM_WRITE(ddenlovr_transparency_pen_w)
AM_RANGE(0xac, 0xaf) AM_WRITE(ddenlovr_transparency_mask_w)
AM_RANGE(0xb4, 0xb4) AM_WRITE(ddenlovr_bgcolor_w)
AM_RANGE(0xb5, 0xb5) AM_WRITE(ddenlovr_priority_w)
AM_RANGE(0xb6, 0xb6) AM_WRITE(ddenlovr_layer_enable_w)
AM_RANGE(0xb8, 0xb8) AM_READ(unk_r) // ? must be 78 on startup
ADDRESS_MAP_END
/***************************************************************************
Hanafuda Hana Gokou
***************************************************************************/
static UINT8 hgokou_player_r( address_space *space, int player )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
UINT8 hopper_bit = ((state->m_hopper && !(space->machine().primary_screen->frame_number() % 10)) ? 0 : (1 << 6));
if (!BIT(state->m_input_sel, 0)) return input_port_read(space->machine(), player ? "KEY5" : "KEY0") | hopper_bit;
if (!BIT(state->m_input_sel, 1)) return input_port_read(space->machine(), player ? "KEY6" : "KEY1") | hopper_bit;
if (!BIT(state->m_input_sel, 2)) return input_port_read(space->machine(), player ? "KEY7" : "KEY2") | hopper_bit;
if (!BIT(state->m_input_sel, 3)) return input_port_read(space->machine(), player ? "KEY8" : "KEY3") | hopper_bit;
if (!BIT(state->m_input_sel, 4)) return input_port_read(space->machine(), player ? "KEY9" : "KEY4") | hopper_bit;
return 0x7f; // bit 7 = blitter busy, bit 6 = hopper
}
static WRITE8_HANDLER( hgokou_dsw_sel_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
state->m_dsw_sel = data;
}
static READ8_HANDLER( hgokou_input_r )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
switch (state->m_dsw_sel)
{
case 0x20: return input_port_read(space->machine(), "SYSTEM");
case 0x21: return hgokou_player_r(space, 1);
case 0x22: return hgokou_player_r(space, 0);
case 0x23: return state->m_coins;
}
logerror("%06x: warning, unknown bits read, dsw_sel = %02x\n", cpu_get_pc(&space->device()), state->m_dsw_sel);
return 0xff;
}
static WRITE8_HANDLER( hgokou_input_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
switch (state->m_dsw_sel)
{
case 0x2c:
// bit 0 = coin counter
// bit 1 = out counter
// bit 2 = hopper
// bit 7 = ?
coin_counter_w(space->machine(), 0, data & 1);
state->m_hopper = data & 0x04;
#ifdef MAME_DEBUG
// popmessage("COINS %02x",data);
#endif
state->m_coins = data;
break;
case 0x2d: state->m_input_sel = data; break;
case 0x2f: break; // ? written with 2f (hgokou)
default:
logerror("%04x: input_w with select = %02x, data = %02x\n", cpu_get_pc(&space->device()), state->m_dsw_sel, data);
}
}
// similar to rongrong
static READ8_HANDLER( hgokou_protection_r )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
UINT8 *rom = space->machine().region("maincpu")->base();
if (state->m_hginga_rombank == 0)
return hanakanz_rand_r(space, 0);
return rom[0x10000 + 0x8000 * (state->m_hginga_rombank & 0x7) + 0xe601 - 0x8000];
}
static ADDRESS_MAP_START( hgokou_map, AS_PROGRAM, 8 )
AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM
AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM
AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked)
AM_RANGE(0xe601, 0xe601) AM_READ(hgokou_protection_r)
AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") // ROM (Banked)
AM_RANGE(0xe000, 0xe1ff) AM_WRITE(rongrong_palette_w)
AM_RANGE(0xe700, 0xe706) AM_WRITENOP
ADDRESS_MAP_END
static ADDRESS_MAP_START( hgokou_portmap, AS_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x01) AM_WRITE(hginga_blitter_w)
AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r)
AM_RANGE(0x1c, 0x1c) AM_READNOP AM_WRITE(mjmyster_rambank_w) // ? ack on RTC int
AM_RANGE(0x1e, 0x1e) AM_WRITE(hginga_rombank_w)
AM_RANGE(0x20, 0x2f) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w) // 6242RTC
AM_RANGE(0x40, 0x43) AM_WRITE(ddenlovr_palette_base_w)
AM_RANGE(0x44, 0x47) AM_WRITE(ddenlovr_palette_mask_w)
AM_RANGE(0x48, 0x4b) AM_WRITE(ddenlovr_transparency_pen_w)
AM_RANGE(0x4c, 0x4f) AM_WRITE(ddenlovr_transparency_mask_w)
AM_RANGE(0x54, 0x54) AM_WRITE(ddenlovr_bgcolor_w)
AM_RANGE(0x55, 0x55) AM_WRITE(ddenlovr_priority_w)
AM_RANGE(0x56, 0x56) AM_WRITE(ddenlovr_layer_enable_w)
AM_RANGE(0x58, 0x58) AM_READ(unk_r) // ? must be 78 on startup
AM_RANGE(0x60, 0x60) AM_WRITE(hgokou_dsw_sel_w)
AM_RANGE(0x61, 0x61) AM_WRITE(hgokou_input_w)
AM_RANGE(0x62, 0x62) AM_READ(hgokou_input_r)
AM_RANGE(0x80, 0x80) AM_DEVREADWRITE_MODERN("oki", okim6295_device, read, write)
AM_RANGE(0x82, 0x83) AM_DEVWRITE("ymsnd", ym2413_w)
AM_RANGE(0x84, 0x84) AM_DEVREAD("aysnd", ay8910_r)
AM_RANGE(0x86, 0x86) AM_DEVWRITE("aysnd", ay8910_data_w)
AM_RANGE(0x88, 0x88) AM_DEVWRITE("aysnd", ay8910_address_w)
AM_RANGE(0xb0, 0xb0) AM_READ(hanakanz_rand_r)
ADDRESS_MAP_END
/***************************************************************************
Hanafuda Hana Gokou Bangaihen
***************************************************************************/
static READ8_HANDLER( hgokbang_input_r )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
UINT8 ret;
switch (state->m_dsw_sel)
{
case 0x2d:
if (state->m_input_sel == 0xff) // reset auto-incrementing input_sel
state->m_input_sel = 0xfe;
return 0; // discarded
case 0xa1:
ret = hgokou_player_r(space, 1);
state->m_input_sel <<= 1; // auto-increment input_sel
state->m_input_sel |= 1;
return ret;
case 0xa2:
ret = hgokou_player_r(space, 0);
state->m_input_sel <<= 1; // auto-increment input_sel
state->m_input_sel |= 1;
return ret;
}
logerror("%06x: warning, unknown bits read, dsw_sel = %02x\n", cpu_get_pc(&space->device()), state->m_dsw_sel);
return 0xff;
}
static ADDRESS_MAP_START( hgokbang_portmap, AS_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x01) AM_WRITE(hginga_blitter_w)
AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r)
AM_RANGE(0x1c, 0x1c) AM_READNOP AM_WRITE(mjmyster_rambank_w) // ? ack on RTC int
AM_RANGE(0x1e, 0x1e) AM_WRITE(hginga_rombank_w)
AM_RANGE(0x20, 0x20) AM_DEVREADWRITE_MODERN("oki", okim6295_device, read, write)
AM_RANGE(0x22, 0x23) AM_DEVWRITE("ymsnd", ym2413_w)
AM_RANGE(0x24, 0x24) AM_DEVREAD("aysnd", ay8910_r)
AM_RANGE(0x26, 0x26) AM_DEVWRITE("aysnd", ay8910_data_w)
AM_RANGE(0x28, 0x28) AM_DEVWRITE("aysnd", ay8910_address_w)
AM_RANGE(0x40, 0x40) AM_WRITE(hgokou_dsw_sel_w)
AM_RANGE(0x41, 0x41) AM_WRITE(hgokou_input_w)
AM_RANGE(0x42, 0x42) AM_READ(hgokou_input_r)
AM_RANGE(0x43, 0x43) AM_READ(hgokbang_input_r)
AM_RANGE(0x60, 0x6f) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w) // 6242RTC
AM_RANGE(0xa0, 0xa3) AM_WRITE(ddenlovr_palette_base_w)
AM_RANGE(0xa4, 0xa7) AM_WRITE(ddenlovr_palette_mask_w)
AM_RANGE(0xa8, 0xab) AM_WRITE(ddenlovr_transparency_pen_w)
AM_RANGE(0xac, 0xaf) AM_WRITE(ddenlovr_transparency_mask_w)
AM_RANGE(0xb4, 0xb4) AM_WRITE(ddenlovr_bgcolor_w)
AM_RANGE(0xb5, 0xb5) AM_WRITE(ddenlovr_priority_w)
AM_RANGE(0xb6, 0xb6) AM_WRITE(ddenlovr_layer_enable_w)
AM_RANGE(0xb8, 0xb8) AM_READ(unk_r) // ? must be 78 on startup
AM_RANGE(0xe0, 0xe0) AM_READ(hanakanz_rand_r)
ADDRESS_MAP_END
/***************************************************************************
Super Hana Paradise
***************************************************************************/
static WRITE8_HANDLER( hparadis_select_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
state->m_dsw_sel = data;
state->m_keyb = 0;
memory_set_bank(space->machine(), "bank1", data & 0x07);
memory_set_bank(space->machine(), "bank2", ((data & 0xe0) >> 5));
}
static READ8_HANDLER( hparadis_input_r )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
static const char *const keynames0[] = { "KEY0", "KEY1", "KEY2", "KEY3", "KEY4" };
static const char *const keynames1[] = { "KEY5", "KEY6", "KEY7", "KEY8", "KEY9" };
switch (state->m_input_sel)
{
case 0x00: return input_port_read(space->machine(), "P1");
case 0x01: return input_port_read(space->machine(), "P2");
case 0x02: return input_port_read(space->machine(), "SYSTEM");
case 0x0d: return 0x00;
case 0x80: return input_port_read(space->machine(), keynames0[state->m_keyb++]); // P1 (Keys)
case 0x81: return input_port_read(space->machine(), keynames1[state->m_keyb++]); // P2 (Keys)
}
logerror("%06x: warning, unknown bits read, input_sel = %02x\n", cpu_get_pc(&space->device()), state->m_input_sel);
return 0xff;
}
static READ8_HANDLER( hparadis_dsw_r )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
if (!BIT(state->m_dsw_sel, 0)) return input_port_read(space->machine(), "DSW1");
if (!BIT(state->m_dsw_sel, 1)) return input_port_read(space->machine(), "DSW2");
if (!BIT(state->m_dsw_sel, 2)) return 0xff;
if (!BIT(state->m_dsw_sel, 3)) return 0xff;
if (!BIT(state->m_dsw_sel, 4)) return input_port_read(space->machine(), "DSW3");
return 0xff;
}
static WRITE8_HANDLER( hparadis_coin_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
switch (state->m_input_sel)
{
case 0x0c: coin_counter_w(space->machine(), 0, data & 1); break;
case 0x0d: break;
default:
logerror("%04x: coins_w with select = %02x, data = %02x\n",cpu_get_pc(&space->device()), state->m_input_sel, data);
}
}
static ADDRESS_MAP_START( hparadis_map, AS_PROGRAM, 8 )
AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM
AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM
AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked)
AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") // ROM (Banked)
AM_RANGE(0xc000, 0xc1ff) AM_WRITE(rongrong_palette_w)
ADDRESS_MAP_END
// the RTC seems unused
static ADDRESS_MAP_START( hparadis_portmap, AS_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x01) AM_WRITE(rongrong_blitter_w)
AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r)
AM_RANGE(0x1b, 0x1b) AM_READWRITE(rongrong_blitter_busy_r, rongrong_blitter_busy_w)
AM_RANGE(0x1c, 0x1c) AM_READ(hparadis_dsw_r)
AM_RANGE(0x1e, 0x1e) AM_WRITE(hparadis_select_w)
AM_RANGE(0x40, 0x40) AM_DEVREADWRITE_MODERN("oki", okim6295_device, read, write)
AM_RANGE(0x60, 0x61) AM_DEVWRITE("ymsnd", ym2413_w)
AM_RANGE(0x80, 0x83) AM_WRITE(ddenlovr_palette_base_w)
AM_RANGE(0x84, 0x87) AM_WRITE(ddenlovr_palette_mask_w)
AM_RANGE(0x88, 0x8b) AM_WRITE(ddenlovr_transparency_pen_w)
AM_RANGE(0x8c, 0x8f) AM_WRITE(ddenlovr_transparency_mask_w)
AM_RANGE(0x94, 0x94) AM_WRITE(ddenlovr_bgcolor_w)
AM_RANGE(0x95, 0x95) AM_WRITE(ddenlovr_priority_w)
AM_RANGE(0x96, 0x96) AM_WRITE(ddenlovr_layer_enable_w)
AM_RANGE(0x98, 0x98) AM_READ(unk_r) // ? must be 78 on startup
AM_RANGE(0xa0, 0xa0) AM_WRITE(hginga_input_w)
AM_RANGE(0xa1, 0xa1) AM_WRITE(hparadis_coin_w)
AM_RANGE(0xa2, 0xa3) AM_READ(hparadis_input_r)
AM_RANGE(0xc2, 0xc2) AM_WRITENOP // enables palette RAM at c000
ADDRESS_MAP_END
/***************************************************************************
Mahjong Mysterious World
***************************************************************************/
static READ8_HANDLER( mjmywrld_coins_r )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
switch (state->m_input_sel)
{
case 0x80: return input_port_read(space->machine(), "SYSTEM");
case 0x81: return 0x00;
case 0x82: return 0xff; // bit 7 = 0 -> blitter busy, + hopper switch
case 0x83: return 0x00;
}
logerror("%06x: warning, unknown bits read, input_sel = %02x\n", cpu_get_pc(&space->device()), state->m_input_sel);
return 0xff;
}
static ADDRESS_MAP_START( mjmywrld_portmap, AS_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x01) AM_WRITE(mjmyster_blitter_w)
AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r)
AM_RANGE(0x1c, 0x1c) AM_WRITE(mjmyster_rambank_w)
AM_RANGE(0x1e, 0x1e) AM_WRITE(hginga_rombank_w)
AM_RANGE(0x20, 0x20) AM_WRITE(mjmyster_select2_w)
AM_RANGE(0x21, 0x21) AM_WRITE(mjmyster_coincounter_w)
AM_RANGE(0x22, 0x22) AM_READ(mjmywrld_coins_r)
AM_RANGE(0x23, 0x23) AM_READ(mjmyster_keyb_r)
AM_RANGE(0x40, 0x40) AM_DEVREADWRITE_MODERN("oki", okim6295_device, read, write)
AM_RANGE(0x42, 0x43) AM_DEVWRITE("ymsnd", ym2413_w)
AM_RANGE(0x44, 0x44) AM_DEVREAD("aysnd", ay8910_r)
AM_RANGE(0x46, 0x46) AM_DEVWRITE("aysnd", ay8910_data_w)
AM_RANGE(0x48, 0x48) AM_DEVWRITE("aysnd", ay8910_address_w)
AM_RANGE(0x60, 0x6f) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w) // 6242RTC
AM_RANGE(0x80, 0x83) AM_WRITE(ddenlovr_palette_base_w)
AM_RANGE(0x84, 0x87) AM_WRITE(ddenlovr_palette_mask_w)
AM_RANGE(0x88, 0x8b) AM_WRITE(ddenlovr_transparency_pen_w)
AM_RANGE(0x8c, 0x8f) AM_WRITE(ddenlovr_transparency_mask_w)
AM_RANGE(0x94, 0x94) AM_WRITE(ddenlovr_bgcolor_w)
AM_RANGE(0x95, 0x95) AM_WRITE(ddenlovr_priority_w)
AM_RANGE(0x96, 0x96) AM_WRITE(ddenlovr_layer_enable_w)
AM_RANGE(0x98, 0x98) AM_READ(unk_r) // ? must be 78 on startup
AM_RANGE(0xc0, 0xc0) AM_READ(hanakanz_rand_r)
AM_RANGE(0xe0, 0xe0) AM_READ(mjmyster_dsw_r)
ADDRESS_MAP_END
/***************************************************************************
Panel & Variety Akamaru Q Jousyou Dont-R
***************************************************************************/
static READ16_HANDLER( akamaru_protection1_r )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
return (state->m_prot_16 & 0x0008) ? 0x0001 : 0x0000;
}
static WRITE16_HANDLER( akamaru_protection1_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
int bank;
COMBINE_DATA(&state->m_prot_16);
// BCD number?
bank = (((state->m_prot_16 >> 4) & 0x0f) % 10) * 10 + ((state->m_prot_16 & 0x0f) % 10);
state->m_oki->set_bank_base(bank * 0x40000);
// popmessage("bank $%0x (%d)", state->m_prot_16, bank);
}
static READ16_HANDLER( akamaru_protection2_r )
{
return 0x55;
}
static READ16_HANDLER( akamaru_dsw_r )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
UINT16 dsw = 0;
if (state->m_dsw_sel16[1] == 0xff) dsw |= input_port_read(space->machine(), "DSW1");
if (state->m_dsw_sel16[0] == 0xff) dsw |= input_port_read(space->machine(), "DSW2");
return dsw;
}
static READ16_HANDLER( akamaru_blitter_r )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
return state->m_ddenlovr_blitter_irq_flag << 6; // bit 7 = 1 -> blitter busy
}
static READ16_HANDLER( akamaru_e0010d_r )
{
return 0xffff; // read but not used, it seems
}
static ADDRESS_MAP_START( akamaru_map, AS_PROGRAM, 16 )
AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM
AM_RANGE(0x213570, 0x213571) AM_WRITE(akamaru_protection1_w) // OKI bank
AM_RANGE(0x624680, 0x624681) AM_READ(akamaru_protection1_r)
AM_RANGE(0xd00000, 0xd003ff) AM_WRITE(ddenlovr_palette_w) // Palette
// AM_RANGE(0xd01000, 0xd017ff) AM_WRITEONLY // 0
AM_RANGE(0xe00040, 0xe00047) AM_WRITE(ddenlovr16_palette_base_w)
AM_RANGE(0xe00048, 0xe0004f) AM_WRITE(ddenlovr16_palette_mask_w)
AM_RANGE(0xe00050, 0xe00057) AM_WRITE(ddenlovr16_transparency_pen_w)
AM_RANGE(0xe00058, 0xe0005f) AM_WRITE(ddenlovr16_transparency_mask_w)
AM_RANGE(0xe00068, 0xe00069) AM_WRITE(ddenlovr16_bgcolor_w)
AM_RANGE(0xe0006a, 0xe0006b) AM_WRITE(ddenlovr16_priority_w)
AM_RANGE(0xe0006c, 0xe0006d) AM_WRITE(ddenlovr16_layer_enable_w)
AM_RANGE(0xe00070, 0xe00071) AM_READ(unk16_r) // ? must be 78 on startup (not necessary in ddlover)
AM_RANGE(0xe00080, 0xe00083) AM_WRITE(ddenlovr_blitter_w)
AM_RANGE(0xe00086, 0xe00087) AM_READ(ddenlovr_gfxrom_r) // Video Chip
AM_RANGE(0xe00100, 0xe00101) AM_READ_PORT("P1")
AM_RANGE(0xe00102, 0xe00103) AM_READ_PORT("P2")
AM_RANGE(0xe00104, 0xe00105) AM_READ_PORT("SYSTEM")
AM_RANGE(0xe00106, 0xe00107) AM_READ(akamaru_protection2_r)
AM_RANGE(0xe00108, 0xe0010b) AM_WRITEONLY AM_BASE_MEMBER(dynax_state, m_protection2)
AM_RANGE(0xe0010c, 0xe0010d) AM_READ(akamaru_e0010d_r)
AM_RANGE(0xe00200, 0xe00201) AM_READ(akamaru_dsw_r) // DSW
AM_RANGE(0xe00204, 0xe00205) AM_READ(akamaru_blitter_r) // Blitter Busy & IRQ
AM_RANGE(0xe00302, 0xe00303) AM_WRITE(ddenlovr_blitter_irq_ack_w) // Blitter irq acknowledge
AM_RANGE(0xe00304, 0xe00307) AM_WRITEONLY AM_BASE_MEMBER(dynax_state, m_dsw_sel16) // DSW select
AM_RANGE(0xe00308, 0xe00309) AM_WRITE(ddenlovr_coincounter_0_w) // Coin Counters
AM_RANGE(0xe0030c, 0xe0030d) AM_WRITE(ddenlovr_coincounter_1_w) //
AM_RANGE(0xe00400, 0xe00403) AM_DEVWRITE8("ymsnd", ym2413_w, 0x00ff)
AM_RANGE(0xe00500, 0xe0051f) AM_DEVREADWRITE8("rtc", msm6242_r, msm6242_w, 0x00ff) // 6242RTC
AM_RANGE(0xe00600, 0xe00603) AM_DEVWRITE8("aysnd", ay8910_address_data_w, 0x00ff)
AM_RANGE(0xe00604, 0xe00605) AM_DEVREAD8("aysnd", ay8910_r, 0x00ff)
AM_RANGE(0xe00700, 0xe00701) AM_DEVREADWRITE8_MODERN("oki", okim6295_device, read, write, 0x00ff) // Sound
AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM
ADDRESS_MAP_END
/***************************************************************************
Mahjong Fantasic Love
***************************************************************************/
static WRITE8_HANDLER( mjflove_rombank_w )
{
memory_set_bank(space->machine(), "bank1", data & 0xf);
}
static WRITE8_DEVICE_HANDLER( mjflove_okibank_w )
{
okim6295_device *oki = downcast<okim6295_device *>(device);
oki->set_bank_base((data & 0x07) * 0x40000);
//popmessage("SOUND = %02x", data);
}
static READ8_HANDLER( mjflove_protection_r )
{
return 0x27;
}
static READ8_HANDLER( mjflove_keyb_r )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
UINT8 val = 0xff;
if (!BIT(state->m_keyb, 0)) val = input_port_read(space->machine(), offset ? "KEY5" : "KEY0");
else if (!BIT(state->m_keyb, 1)) val = input_port_read(space->machine(), offset ? "KEY6" : "KEY1");
else if (!BIT(state->m_keyb, 2)) val = input_port_read(space->machine(), offset ? "KEY7" : "KEY2");
else if (!BIT(state->m_keyb, 3)) val = input_port_read(space->machine(), offset ? "KEY8" : "KEY3");
else if (!BIT(state->m_keyb, 4)) val = input_port_read(space->machine(), offset ? "KEY9" : "KEY4");
return val;
}
static CUSTOM_INPUT( mjflove_blitter_r )
{
dynax_state *state = field.machine().driver_data<dynax_state>();
// bit 7 = 1 -> blitter busy
// bit 6 = 0 -> VBLANK?
// bit 5 = 0 -> RTC?
return state->m_mjflove_irq_cause;
}
static WRITE8_HANDLER( mjflove_blitter_w )
{
blitter_w(space, 0, offset, data, 0);
}
static WRITE8_HANDLER( mjflove_coincounter_w )
{
// bit 0 = in counter
coin_counter_w(space->machine(), 0, data & 0x01);
if (data & 0xfe)
{
logerror("%04x: warning, coin counter = %02x\n", cpu_get_pc(&space->device()), data);
// popmessage("COIN = %02x", data);
}
}
static ADDRESS_MAP_START( mjflove_portmap, AS_IO, 8 ) // 16 bit I/O
AM_RANGE(0x0010, 0x0010) AM_READ(hanakanz_rand_r) AM_MIRROR(0xff00)
AM_RANGE(0x001c, 0x001c) AM_READ_PORT("DSW2") AM_MIRROR(0xff00)
AM_RANGE(0x001e, 0x001e) AM_WRITE(hanakanz_keyb_w) AM_MIRROR(0xff00)
AM_RANGE(0x0020, 0x0023) AM_WRITE(ddenlovr_palette_base_w)
AM_RANGE(0x0024, 0x0027) AM_WRITE(ddenlovr_palette_mask_w)
AM_RANGE(0x0028, 0x002b) AM_WRITE(ddenlovr_transparency_pen_w)
AM_RANGE(0x002c, 0x002f) AM_WRITE(ddenlovr_transparency_mask_w)
AM_RANGE(0x0034, 0x0034) AM_WRITE(ddenlovr_bgcolor_w)
AM_RANGE(0x0035, 0x0035) AM_WRITE(ddenlovr_priority_w)
AM_RANGE(0x0036, 0x0036) AM_WRITE(ddenlovr_layer_enable_w)
AM_RANGE(0x0038, 0x0038) AM_READNOP // ? ack or watchdog
AM_RANGE(0x0040, 0x0041) AM_WRITE(mjflove_blitter_w) AM_MIRROR(0xff00)
AM_RANGE(0x0043, 0x0043) AM_READ(rongrong_gfxrom_r)
AM_RANGE(0x0080, 0x0081) AM_READ(mjflove_keyb_r)
AM_RANGE(0x0082, 0x0082) AM_READ_PORT("SYSTEM")
AM_RANGE(0x00da, 0x00da) AM_READ(mjflove_protection_r) AM_MIRROR(0xff00)
AM_RANGE(0x00f2, 0x00f2) AM_WRITE(mjmyster_rambank_w) AM_MIRROR(0xff00)
AM_RANGE(0x00f8, 0x00f8) AM_WRITE(mjflove_rombank_w) AM_MIRROR(0xff00)
AM_RANGE(0x00fa, 0x00fa) AM_DEVWRITE("oki", mjflove_okibank_w)
AM_RANGE(0x0100, 0x0100) AM_READ_PORT("DSW1")
AM_RANGE(0x0181, 0x0181) AM_WRITENOP // ? int. enable
AM_RANGE(0x0184, 0x0184) AM_WRITE(mjflove_coincounter_w)
AM_RANGE(0x0200, 0x0201) AM_DEVWRITE("ymsnd", ym2413_w)
AM_RANGE(0x0280, 0x028f) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w) // 6242RTC
AM_RANGE(0x0300, 0x0301) AM_DEVWRITE("aysnd", ay8910_address_data_w)
AM_RANGE(0x0380, 0x0380) AM_DEVREADWRITE_MODERN("oki", okim6295_device, read, write)
ADDRESS_MAP_END
/***************************************************************************
Mahjong Jong-Tei
***************************************************************************/
static WRITE8_DEVICE_HANDLER( jongtei_okibank_w )
{
okim6295_device *oki = downcast<okim6295_device *>(device);
oki->set_bank_base(((data >> 4) & 0x07) * 0x40000);
}
static WRITE8_HANDLER( jongtei_dsw_keyb_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
state->m_dsw_sel = data;
state->m_keyb = data;
}
static READ8_HANDLER( jongtei_busy_r )
{
return 0x04; // !bit 2 = blitter busy
}
static ADDRESS_MAP_START( jongtei_portmap, AS_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x2c, 0x2c) AM_READ(jongtei_busy_r) AM_DEVWRITE("oki", jongtei_okibank_w)
AM_RANGE(0x2e, 0x2e) AM_WRITE(hanakanz_blitter_reg_w)
AM_RANGE(0x30, 0x30) AM_WRITE(hanakanz_rombank_w)
AM_RANGE(0x31, 0x31) AM_WRITE(jongtei_dsw_keyb_w)
AM_RANGE(0x32, 0x32) AM_READ(hanakanz_dsw_r)
AM_RANGE(0x40, 0x40) AM_READ_PORT("SYSTEM")
AM_RANGE(0x41, 0x42) AM_READ(hanakanz_keyb_r)
AM_RANGE(0x43, 0x43) AM_WRITE(hanakanz_coincounter_w)
AM_RANGE(0x46, 0x46) AM_READ(hanakanz_rand_r)
AM_RANGE(0x60, 0x60) AM_WRITE(hanakanz_blitter_data_w)
AM_RANGE(0x61, 0x61) AM_WRITE(hanakanz_palette_w)
AM_RANGE(0x63, 0x64) AM_READ(hanakanz_gfxrom_r)
AM_RANGE(0x80, 0x81) AM_DEVWRITE("ymsnd", ym2413_w)
AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE_MODERN("oki", okim6295_device, read, write)
AM_RANGE(0xc0, 0xcf) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w) // 6242RTC
ADDRESS_MAP_END
/***************************************************************************
Mahjong Seiryu Densetsu
***************************************************************************/
static ADDRESS_MAP_START( sryudens_map, AS_PROGRAM, 8 )
AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM
AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM
AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked)
AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") // ROM (Banked)
AM_RANGE(0xe000, 0xe1ff) AM_WRITE(rongrong_palette_w)
ADDRESS_MAP_END
static READ8_HANDLER( sryudens_keyb_r )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
UINT8 val = 0x3f;
if (!BIT(state->m_keyb, 0)) val = input_port_read(space->machine(), offset ? "KEY5" : "KEY0");
else if (!BIT(state->m_keyb, 1)) val = input_port_read(space->machine(), offset ? "KEY6" : "KEY1");
else if (!BIT(state->m_keyb, 2)) val = input_port_read(space->machine(), offset ? "KEY7" : "KEY2");
else if (!BIT(state->m_keyb, 3)) val = input_port_read(space->machine(), offset ? "KEY8" : "KEY3");
else if (!BIT(state->m_keyb, 4)) val = input_port_read(space->machine(), offset ? "KEY9" : "KEY4");
val |= input_port_read(space->machine(), offset ? "HOPPER" : "BET");
if (offset)
val &= 0x7f; // bit 7 = blitter busy
return val;
}
static WRITE8_HANDLER( sryudens_coincounter_w )
{
// bit 0 = coin counter
// bit 1 = out counter
// bit 2
// bit 4
// bit 7 = ? mostly on
coin_counter_w(space->machine(), 0, data & 1);
if (data & 0x68)
logerror("%04x: warning, coin counter = %02x\n", cpu_get_pc(&space->device()), data);
#ifdef MAME_DEBUG
// popmessage("COIN = %02x", data);
#endif
}
static WRITE8_HANDLER( sryudens_rambank_w )
{
memory_set_bank(space->machine(), "bank2", data & 0x0f);
//logerror("%04x: rambank = %02x\n", cpu_get_pc(&space->device()), data);
}
static ADDRESS_MAP_START( sryudens_portmap, AS_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_DEVREADWRITE_MODERN("oki", okim6295_device, read, write)
AM_RANGE(0x02, 0x03) AM_DEVWRITE("ymsnd", ym2413_w)
AM_RANGE(0x04, 0x05) AM_DEVWRITE("aysnd", ay8910_address_data_w)
AM_RANGE(0x1c, 0x1c) AM_READNOP AM_WRITE(sryudens_rambank_w) // ? ack on RTC int
AM_RANGE(0x1e, 0x1e) AM_WRITE(mjflove_rombank_w)
AM_RANGE(0x20, 0x23) AM_WRITE(ddenlovr_palette_base_w)
AM_RANGE(0x24, 0x27) AM_WRITE(ddenlovr_palette_mask_w)
AM_RANGE(0x28, 0x2b) AM_WRITE(ddenlovr_transparency_pen_w)
AM_RANGE(0x2c, 0x2f) AM_WRITE(ddenlovr_transparency_mask_w)
AM_RANGE(0x34, 0x34) AM_WRITE(ddenlovr_bgcolor_w)
AM_RANGE(0x35, 0x35) AM_WRITE(ddenlovr_priority_w)
AM_RANGE(0x36, 0x36) AM_WRITE(ddenlovr_layer_enable_w)
AM_RANGE(0x38, 0x38) AM_READNOP // ? ack or watchdog
AM_RANGE(0x40, 0x41) AM_WRITE(mjflove_blitter_w)
AM_RANGE(0x43, 0x43) AM_READ(rongrong_gfxrom_r)
AM_RANGE(0x50, 0x50) AM_READ(hanakanz_rand_r)
AM_RANGE(0x70, 0x70) AM_DEVWRITE("oki", quizchq_oki_bank_w)
AM_RANGE(0x80, 0x8f) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w) // 6242RTC
AM_RANGE(0x90, 0x90) AM_READ_PORT("DSW1")
AM_RANGE(0x91, 0x91) AM_READ_PORT("DSW2")
AM_RANGE(0x92, 0x92) AM_READ_PORT("DSW4")
AM_RANGE(0x93, 0x93) AM_READ_PORT("DSW3")
AM_RANGE(0x94, 0x94) AM_READ_PORT("DSWTOP")
AM_RANGE(0x98, 0x98) AM_WRITE(sryudens_coincounter_w)
AM_RANGE(0x99, 0x99) AM_WRITE(hanakanz_keyb_w)
AM_RANGE(0x9a, 0x9a) AM_READ_PORT("SYSTEM")
AM_RANGE(0x9b, 0x9c) AM_READ(sryudens_keyb_r)
ADDRESS_MAP_END
/***************************************************************************
Mahjong Daimyojin
***************************************************************************/
static READ8_HANDLER( daimyojn_keyb1_r )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
UINT8 val = 0x3f;
if (!BIT(state->m_keyb, 0)) val = input_port_read(space->machine(), "KEY0");
else if (!BIT(state->m_keyb, 1)) val = input_port_read(space->machine(), "KEY1");
else if (!BIT(state->m_keyb, 2)) val = input_port_read(space->machine(), "KEY2");
else if (!BIT(state->m_keyb, 3)) val = input_port_read(space->machine(), "KEY3");
else if (!BIT(state->m_keyb, 4)) val = input_port_read(space->machine(), "KEY4");
val |= input_port_read(space->machine(), "BET");
return val;
}
static READ8_HANDLER( daimyojn_keyb2_r )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
UINT8 val = 0x3f;
if (!BIT(state->m_keyb, 0)) val = input_port_read(space->machine(), "KEY5");
else if (!BIT(state->m_keyb, 1)) val = input_port_read(space->machine(), "KEY6");
else if (!BIT(state->m_keyb, 2)) val = input_port_read(space->machine(), "KEY7");
else if (!BIT(state->m_keyb, 3)) val = input_port_read(space->machine(), "KEY8");
else if (!BIT(state->m_keyb, 4)) val = input_port_read(space->machine(), "KEY9");
val |= input_port_read(space->machine(), "HOPPER");
return val;
}
// 1B18: D4 ED 76 C9 CB
// 1B1D: 96 AF 34 8B 89
static WRITE8_HANDLER( daimyojn_protection_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
state->m_prot_val = data;
}
static READ8_HANDLER( daimyojn_protection_r )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
switch (state->m_prot_val)
{
case 0xd4: return 0x96;
case 0xed: return 0xaf;
case 0x76: return 0x34;
case 0xc9: return 0x8b;
case 0xcb: return 0x89;
}
return 0xff;
}
static WRITE8_DEVICE_HANDLER( daimyojn_okibank_w )
{
okim6295_device *oki = downcast<okim6295_device *>(device);
oki->set_bank_base(((data >> 4) & 0x01) * 0x40000);
}
static WRITE8_HANDLER( daimyojn_palette_sel_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
state->m_daimyojn_palette_sel = data;
}
static WRITE8_HANDLER( daimyojn_blitter_data_palette_w )
{
dynax_state *state = space->machine().driver_data<dynax_state>();
if (state->m_daimyojn_palette_sel & 0x01)
hanakanz_palette_w(space, offset, data);
else
hanakanz_blitter_data_w(space, offset, data);
}
static READ8_HANDLER( daimyojn_year_hack_r )
{
// See code at C8D7, 633f holds reg B of the RTC
return offset ? 1 : 0; // year = 0x10 (BCD)
}
static ADDRESS_MAP_START( daimyojn_portmap, AS_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x2c, 0x2c) AM_READ(jongtei_busy_r) AM_DEVWRITE("oki", daimyojn_okibank_w)
AM_RANGE(0x2e, 0x2e) AM_WRITE(daimyojn_palette_sel_w)
AM_RANGE(0x30, 0x30) AM_WRITE(hanakanz_blitter_reg_w)
AM_RANGE(0x31, 0x31) AM_WRITE(jongtei_dsw_keyb_w)
AM_RANGE(0x32, 0x32) AM_READ(hanakanz_dsw_r)
AM_RANGE(0x40, 0x40) AM_WRITE(daimyojn_blitter_data_palette_w)
AM_RANGE(0x42, 0x44) AM_READ(hanakanz_gfxrom_r)
AM_RANGE(0x8a, 0x8b) AM_READ(daimyojn_year_hack_r) // ?
AM_RANGE(0x80, 0x8f) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w) // 6242RTC
AM_RANGE(0xa0, 0xa1) AM_DEVWRITE("ymsnd", ym2413_w)
AM_RANGE(0xa2, 0xa2) AM_DEVREADWRITE_MODERN("oki", okim6295_device, read, write)
AM_RANGE(0xa8, 0xa8) AM_READ_PORT("SYSTEM")
AM_RANGE(0xaa, 0xaa) AM_READ(daimyojn_keyb1_r)
AM_RANGE(0xac, 0xac) AM_READ(daimyojn_keyb2_r)
AM_RANGE(0xae, 0xae) AM_WRITE(hanakanz_coincounter_w)
AM_RANGE(0xb0, 0xb0) AM_WRITE(mjmyster_rambank_w)
AM_RANGE(0xc0, 0xc0) AM_WRITE(mjflove_rombank_w)
AM_RANGE(0xd0, 0xd0) AM_READ(hanakanz_rand_r)
AM_RANGE(0xe0, 0xe0) AM_READWRITE(daimyojn_protection_r, daimyojn_protection_w)
ADDRESS_MAP_END
static INPUT_PORTS_START( ddenlovj )
PORT_START("P1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("P2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("SYSTEM")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) /* Test */
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) // blitter busy flag
PORT_BIT( 0x60, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(ddenlovj_blitter_r, NULL) // blitter irq flag? (bit 5) & RTC (bit 6)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL )
PORT_START("DSW1")
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )
PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) )
PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x04, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x0c, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x08, DEF_STR( 1C_2C ) )
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x10, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, "Helps" )
PORT_DIPSETTING( 0x20, "1" )
PORT_DIPSETTING( 0x00, "2" )
PORT_DIPNAME( 0x40, 0x40, "Unknown 1-6" )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, "Unknown 1-7" )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW2")
PORT_DIPNAME( 0x07, 0x07, DEF_STR( Difficulty ) )
PORT_DIPSETTING( 0x06, "1 (Easy)" )
PORT_DIPSETTING( 0x05, "2" )
PORT_DIPSETTING( 0x04, "3" )
PORT_DIPSETTING( 0x07, "4 (Normal)" )
PORT_DIPSETTING( 0x03, "5" )
PORT_DIPSETTING( 0x02, "6" )
PORT_DIPSETTING( 0x01, "7" )
PORT_DIPSETTING( 0x00, "8 (Hard)" )
PORT_DIPNAME( 0x18, 0x18, "Timer Speed" )
PORT_DIPSETTING( 0x10, "Slow" )
PORT_DIPSETTING( 0x18, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x08, "Fast" )
PORT_DIPSETTING( 0x00, "Fastest" )
PORT_DIPNAME( 0x20, 0x20, "Unknown 2-5" )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, "Unknown 2-6" )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, "Unknown 2-7" )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW3")
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_SERVICE( 0x02, IP_ACTIVE_LOW )
PORT_DIPNAME( 0x04, 0x04, "Unknown 2-8" )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, "Unknown 2-9" )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, "Unknown 3-4" )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, "Unknown 3-5" )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, "Unknown 3-6" )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x00, "Force Test Mode?" ) // shows all dsw's as off
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
PORT_DIPSETTING( 0x80, DEF_STR( Yes ) )
INPUT_PORTS_END
static INPUT_PORTS_START( ddenlovr )
PORT_START("P1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("P2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("SYSTEM")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) /* Test */
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SPECIAL ) // ? quiz365
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(ddenlovr_special_r, NULL) // blitter irq flag
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) // blitter busy flag
PORT_START("DSW")
PORT_SERVICE( 0x01, IP_ACTIVE_LOW )
PORT_DIPNAME( 0x02, 0x02, "Unknown 1-1" )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, "Unknown 1-2" )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, "Unknown 1-3" )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, "Unknown 1-4" )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, "Comments / Help" )
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
PORT_DIPSETTING( 0x20, DEF_STR( Yes ) )
PORT_DIPNAME( 0xc0, 0xc0, "Show Girl" )
PORT_DIPSETTING( 0x80, DEF_STR( No ) )
PORT_DIPSETTING( 0x40, "Yes, Clothed" )
PORT_DIPSETTING( 0xc0, "Yes, Bikini" )
PORT_DIPSETTING( 0x00, "Yes, Topless" )
INPUT_PORTS_END
static INPUT_PORTS_START( nettoqc )
PORT_START("P1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("P2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("SYSTEM")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) /* Test */
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) // blitter busy flag
PORT_BIT( 0x60, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(nettoqc_special_r, NULL) // ? (bit 5) & blitter irq flag (bit 6)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL )
PORT_START("DSW1")
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )
PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0c, "1" )
PORT_DIPSETTING( 0x08, "2" )
PORT_DIPSETTING( 0x04, "3" )
PORT_DIPSETTING( 0x00, "5" )
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x10, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Free_Play ) )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, "Unknown 1-6*" )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, "Unknown 1-7*" )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW2")
PORT_DIPNAME( 0x03, 0x03, "Unknown 2-0&1*" )
PORT_DIPSETTING( 0x02, "0" )
PORT_DIPSETTING( 0x03, "1" )
PORT_DIPSETTING( 0x01, "2" )
PORT_DIPSETTING( 0x00, "3" )
PORT_DIPNAME( 0x04, 0x04, "Unknown 2-2" )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, "Unknown 2-3*" )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, "Unknown 2-4*" )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, "Unknown 2-5*" )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, "Unknown 2-6*" )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, "Unknown 2-7*" )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW3")
PORT_DIPNAME( 0x01, 0x01, "Unknown 1-8*" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_SERVICE( 0x02, IP_ACTIVE_LOW )
PORT_DIPNAME( 0x04, 0x04, "Unknown 2-8*" )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, "Unknown 2-9*" )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_DIPNAME( 0x80, 0x00, "Detailed Tests" ) // menu "8 OPTION" in service mode
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
static INPUT_PORTS_START( quiz365 )
PORT_START("P1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("P2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("SYSTEM")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) /* Test */
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SPECIAL ) // ? quiz365
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(ddenlovr_special_r, NULL) // blitter irq flag
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) // blitter busy flag
PORT_START("DSW1")
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )
PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) )
PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x04, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x0c, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x08, DEF_STR( 1C_2C ) )
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x10, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, "Unknown 1-5*" )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0xc0, 0xc0, "Unknown 1-6&7" )
PORT_DIPSETTING( 0x40, "0" )
PORT_DIPSETTING( 0x80, "1" )
PORT_DIPSETTING( 0xc0, "2" )
// PORT_DIPSETTING( 0x00, "2" )
PORT_START("DSW2")
PORT_DIPNAME( 0x03, 0x03, "Unknown 2-0&1" )
PORT_DIPSETTING( 0x02, "0" )
PORT_DIPSETTING( 0x03, "1" )
PORT_DIPSETTING( 0x01, "2" )
PORT_DIPSETTING( 0x00, "3" )
PORT_DIPNAME( 0x0c, 0x0c, "Unknown 2-2&3" )
PORT_DIPSETTING( 0x08, "0" )
PORT_DIPSETTING( 0x0c, "1" )
PORT_DIPSETTING( 0x04, "2" )
PORT_DIPSETTING( 0x00, "3" )
PORT_DIPNAME( 0x10, 0x10, "Unknown 2-4" )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, "Unknown 2-5" )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, "Unknown 2-6" )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, "Unknown 2-7" )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW3")
PORT_DIPNAME( 0x01, 0x01, "Unknown 3-0" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_SERVICE( 0x02, IP_ACTIVE_LOW )
PORT_DIPNAME( 0x04, 0x00, "Detailed Tests" ) // menu "8 OPTION" in service mode
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, "Unknown 3-3" )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
static INPUT_PORTS_START( rongrong )
PORT_START("P1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
PORT_START("P2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
PORT_START("SYSTEM")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) PORT_TOGGLE
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SPECIAL ) // ? quiz365
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SPECIAL ) // ? blitter irq flag ?
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SPECIAL ) // ? blitter busy flag ?
PORT_START("DSW1")
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )
PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) )
PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x04, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x0c, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x08, DEF_STR( 1C_2C ) )
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Free_Play ) )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, "Helps" )
PORT_DIPSETTING( 0x00, "2" )
PORT_DIPSETTING( 0x20, "3" )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x40, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW2")
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) )
PORT_DIPSETTING( 0x02, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x03, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x01, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0c, "0" )
PORT_DIPSETTING( 0x08, "1" )
PORT_DIPSETTING( 0x04, "2" )
PORT_DIPSETTING( 0x00, "3" )
PORT_DIPNAME( 0x30, 0x30, "VS Rounds" )
PORT_DIPSETTING( 0x30, "1" )
PORT_DIPSETTING( 0x20, "2" )
PORT_DIPSETTING( 0x10, "3" )
// PORT_DIPSETTING( 0x00, "3" )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW3")
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_SERVICE( 0x02, IP_ACTIVE_LOW )
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, "Select Round" )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
static INPUT_PORTS_START( quizchq )
PORT_START("P1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("P2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("SYSTEM")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) /* Test */
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SPECIAL ) // ? quiz365
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SPECIAL ) // ? blitter irq flag ?
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SPECIAL ) // ? blitter busy flag ?
PORT_START("DSW1")
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )
PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) )
PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x04, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x0c, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x08, DEF_STR( 1C_2C ) )
PORT_DIPNAME( 0x10, 0x10, "Unknown 1-4" )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ))
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x20, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, "Unknown 1-6" )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, "Set Date" )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW2")
PORT_DIPNAME( 0x01, 0x01, "Unknown 2-0" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, "Unknown 2-1" )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, "Unknown 2-2" )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, "Unknown 2-3" )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, "Unknown 2-4" )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, "Unknown 2-5" )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, "Unknown 2-6" )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
PORT_START("DSW3")
PORT_DIPNAME( 0x01, 0x01, "Unknown 1-0" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, "Unknown 1-1" )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, "Unknown 1-2" )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, "Unknown 1-3" )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
static INPUT_PORTS_START( mmpanic )
PORT_START("IN0") /* 6a (68 = 1:used? 2:normal 3:goes to 69) */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) // tested?
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) /* Test */
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // tested?
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("8") PORT_CODE(KEYCODE_8_PAD)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("9") PORT_CODE(KEYCODE_9_PAD)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SPECIAL ) // busy?
PORT_START("IN1") /* 6b (68 = 0 & 1) */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("1") PORT_CODE(KEYCODE_1_PAD)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2") PORT_CODE(KEYCODE_2_PAD)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("3") PORT_CODE(KEYCODE_3_PAD)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("4") PORT_CODE(KEYCODE_4_PAD)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("5") PORT_CODE(KEYCODE_5_PAD)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("6") PORT_CODE(KEYCODE_6_PAD)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("7") PORT_CODE(KEYCODE_7_PAD)
PORT_START("DSW1")
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) )
PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
PORT_DIPNAME( 0x1c, 0x10, DEF_STR( Difficulty ) )
PORT_DIPSETTING( 0x1c, "0" )
PORT_DIPSETTING( 0x18, "1" )
PORT_DIPSETTING( 0x14, "2" )
PORT_DIPSETTING( 0x10, "3" )
PORT_DIPSETTING( 0x0c, "4" )
PORT_DIPSETTING( 0x08, "5" )
// PORT_DIPSETTING( 0x04, "5" )
// PORT_DIPSETTING( 0x00, "5" )
PORT_DIPNAME( 0x20, 0x20, "Linked Cabinets" )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x40, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, "Unknown 1-7*" ) // 2-0 is related to the same thing (flip?)
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW2")
PORT_DIPNAME( 0x01, 0x01, "Unknown 2-0*" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x0c, 0x0c, "Unknown 2-2&3*" )
PORT_DIPSETTING( 0x0c, "10" )
PORT_DIPSETTING( 0x08, "20" )
PORT_DIPSETTING( 0x04, "40" )
PORT_DIPSETTING( 0x00, "80" )
PORT_DIPNAME( 0x10, 0x10, "Unknown 2-4*" ) // used?
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, "Unknown 2-5*" ) // used?
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, "Unknown 2-6*" ) // 6 & 7?
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, "Unknown 2-7*" )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW3")
PORT_DIPNAME( 0x01, 0x01, "Set Date" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_SERVICE( 0x02, IP_ACTIVE_LOW )
PORT_DIPNAME( 0x04, 0x04, "Unknown 3-2*" ) // used?
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, "Unknown 3-3*" )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, "Unknown 3-4" )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, "Unknown 3-5" )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, "Unknown 3-6*" ) // used?
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, "Unknown 3-7*" )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
static INPUT_PORTS_START( animaljr )
PORT_START("IN0") /* 6a (68 = 1:used? 2:normal 3:goes to 69) */
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_SERVICE1 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) /* Test */
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SPECIAL ) // busy?
PORT_START("IN1") /* 6b (68 = 0 & 1) */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) // tested ?
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("1") PORT_CODE(KEYCODE_1_PAD)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2") PORT_CODE(KEYCODE_2_PAD)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("3") PORT_CODE(KEYCODE_3_PAD)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("4") PORT_CODE(KEYCODE_4_PAD)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("5") PORT_CODE(KEYCODE_5_PAD)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("6") PORT_CODE(KEYCODE_6_PAD)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("DSW1")
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) )
PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x02, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x01, DEF_STR( 1C_2C ) )
PORT_DIPNAME( 0x04, 0x04, "Unknown 1-2" )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, "Unknown 1-3" )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, "Unknown 1-4" )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0xe0, 0x80, "Difficulty?" )
PORT_DIPSETTING( 0xe0, "0" )
PORT_DIPSETTING( 0xc0, "1" )
PORT_DIPSETTING( 0xa0, "2" )
PORT_DIPSETTING( 0x80, "3" )
PORT_DIPSETTING( 0x60, "4" )
PORT_DIPSETTING( 0x40, "5" )
PORT_DIPSETTING( 0x20, "6" )
PORT_DIPSETTING( 0x00, "7" )
PORT_START("DSW2")
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x02, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, "Unknown 2-2*" )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x18, 0x18, "Unknown 2-3&4" ) // used ?
// PORT_DIPSETTING( 0x10, "0" )
PORT_DIPSETTING( 0x00, "0" )
PORT_DIPSETTING( 0x18, "1" )
PORT_DIPSETTING( 0x08, "2" )
PORT_DIPNAME( 0x20, 0x20, "Unknown 2-5" )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x00, "Pirate Fight" )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, "Taito Copyright" )
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
PORT_START("DSW3")
PORT_DIPNAME( 0x01, 0x01, "Unknown 3-0*" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, "Tickets" )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, "Unknown 3-2*" )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_SERVICE( 0x08, IP_ACTIVE_LOW )
PORT_DIPNAME( 0x10, 0x10, "Unknown 3-4" )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, "Unknown 3-5" )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, "Unknown 3-6" )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, "Unknown 3-7" )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
static INPUT_PORTS_START( hanakanz )
PORT_START("SYSTEM")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE3 ) // medal out
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) // Test
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) // analyzer
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE2 ) // data clear
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) // note
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN)
PORT_START("KEY0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_HANAFUDA_A ) PORT_PLAYER(2) // A
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_E ) PORT_PLAYER(2) // E
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // I
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_HANAFUDA_YES ) PORT_PLAYER(2)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // Kan
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
PORT_START("KEY1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_HANAFUDA_B ) PORT_PLAYER(2) // B
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_F ) PORT_PLAYER(2) // F
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // J
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_HANAFUDA_NO ) PORT_PLAYER(2)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // Reach
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) PORT_PLAYER(2) // BET
PORT_START("KEY2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_HANAFUDA_C ) PORT_PLAYER(2) // C
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_G ) PORT_PLAYER(2) // G
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // K
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) // Chi
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // Ron
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY3")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_HANAFUDA_D ) PORT_PLAYER(2) // D
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_H ) PORT_PLAYER(2) // H
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // L
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) // PON
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY4")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) PORT_PLAYER(2) // "t"
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) PORT_PLAYER(2) // "w"
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) PORT_PLAYER(2) // Flip Flop
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) PORT_PLAYER(2) // "b"
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) PORT_PLAYER(2) // "s"
PORT_START("KEY5")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_HANAFUDA_A )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_E )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // I
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_HANAFUDA_YES )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // Kan
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
PORT_START("KEY6")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_HANAFUDA_B )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_F )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // J
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_HANAFUDA_NO )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // Reach
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) // BET
PORT_START("KEY7")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_HANAFUDA_C )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_G )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // K
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) // Chi
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // Ron
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY8")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_HANAFUDA_D )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_H )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // L
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) // PON
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY9")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) // "t"
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) // "w"
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) // Flip Flop
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) // "b"
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) // "s"
PORT_START("DSW1")
PORT_DIPNAME( 0x07, 0x07, "Unknown 1-0&1&2" )
PORT_DIPSETTING( 0x07, "0" )
PORT_DIPSETTING( 0x06, "1" )
PORT_DIPSETTING( 0x05, "2" )
PORT_DIPSETTING( 0x04, "3" )
PORT_DIPSETTING( 0x03, "4" )
PORT_DIPSETTING( 0x02, "5" )
PORT_DIPSETTING( 0x01, "6" )
PORT_DIPSETTING( 0x00, "7" )
PORT_DIPNAME( 0x08, 0x08, "Unknown 1-3" )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, "Unknown 1-4" )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x60, 0x60, "Unknown 1-5&6" )
PORT_DIPSETTING( 0x60, "0" )
PORT_DIPSETTING( 0x40, "1" )
PORT_DIPSETTING( 0x20, "2" )
PORT_DIPSETTING( 0x00, "3" )
PORT_DIPNAME( 0x80, 0x80, "Unknown 1-7" )
PORT_DIPSETTING( 0x00, "5" )
PORT_DIPSETTING( 0x80, "10" )
PORT_START("DSW2")
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )
PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
PORT_DIPNAME( 0x0c, 0x0c, "Unknown 2-2&3" )
PORT_DIPSETTING( 0x0c, "10" )
PORT_DIPSETTING( 0x08, "20" )
PORT_DIPSETTING( 0x04, "30" )
PORT_DIPSETTING( 0x00, "50" )
PORT_DIPNAME( 0x30, 0x30, "Unknown 2-4&5" )
PORT_DIPSETTING( 0x30, "100" )
PORT_DIPSETTING( 0x20, "200" )
PORT_DIPSETTING( 0x10, "250" )
PORT_DIPSETTING( 0x00, "300" )
PORT_DIPNAME( 0xc0, 0xc0, "Unknown 2-6&7" )
PORT_DIPSETTING( 0xc0, "50" )
PORT_DIPSETTING( 0x80, "60" )
PORT_DIPSETTING( 0x40, "70" )
PORT_DIPSETTING( 0x00, "80" )
PORT_START("DSW3")
PORT_DIPNAME( 0x03, 0x03, "Game Type" )
PORT_DIPSETTING( 0x03, "8 Cards" )
PORT_DIPSETTING( 0x02, "6 Cards (Bets)" )
PORT_DIPSETTING( 0x01, "6 Cards (Bets)?" )
PORT_DIPSETTING( 0x00, "6 Cards (Bets)??" )
PORT_DIPNAME( 0x04, 0x04, "(C) Nihon (Censored)" )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x18, 0x18, "Unknown 3-3&4" )
PORT_DIPSETTING( 0x18, "10" )
PORT_DIPSETTING( 0x10, "20" )
PORT_DIPSETTING( 0x08, "30" )
PORT_DIPSETTING( 0x00, "50" )
PORT_DIPNAME( 0x60, 0x60, "Unknown 3-5&6" )
PORT_DIPSETTING( 0x60, "0" )
PORT_DIPSETTING( 0x40, "1" )
PORT_DIPSETTING( 0x20, "2" )
PORT_DIPSETTING( 0x00, "3" )
PORT_DIPNAME( 0x80, 0x80, "Girl" )
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
PORT_START("DSW4")
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x01, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, "Unknown 4-1" )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, "Unknown 4-2" )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, "Unknown 4-3" )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, "Unknown 4-4" )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, "Unknown 4-5" )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, "Keyboard" )
PORT_DIPSETTING( 0x40, "Hanafuda" )
PORT_DIPSETTING( 0x00, "Mahjong" )
PORT_DIPNAME( 0x80, 0x80, "Unknown 4-7" )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW5")
PORT_DIPNAME( 0x01, 0x01, "Unknown 1-8" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, "Unknown 1-9" )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x0c, 0x0c, "Unknown 2-8&9" )
PORT_DIPSETTING( 0x0c, "20" )
PORT_DIPSETTING( 0x08, "30" )
PORT_DIPSETTING( 0x04, "40" )
PORT_DIPSETTING( 0x00, "50" )
PORT_DIPNAME( 0x10, 0x10, "Unknown 3-8" )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, "Unknown 3-9" )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, "Unknown 4-8" )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
PORT_START("BET")
PORT_DIPNAME( 0x40, 0x40, "Allow Bets" )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("HOPPER")
PORT_DIPNAME( 0x40, 0x40, "? Hopper M." )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
static INPUT_PORTS_START( hkagerou )
PORT_START("SYSTEM")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE3 ) // medal out
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) // Test
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) // analyzer
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE2 ) // data clear
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) // note
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN)
PORT_START("KEY0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_NAME("P2 1 (Hanafuda) / P2 A (Mahjong)") PORT_PLAYER(2)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_NAME("P2 5 (Hanafuda) / P2 E (Mahjong)") PORT_PLAYER(2)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // P2 I (not used)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Yes") // P2 M
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // P2 Kan (not used)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
PORT_START("KEY1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B ) PORT_NAME("P2 2 (Hanafuda) / P2 B (Mahjong)") PORT_PLAYER(2)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_NAME("P2 6 (Hanafuda) / P2 F (Mahjong)") PORT_PLAYER(2)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // P2 J (not used)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 No") // P2 N
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // P2 Reach (not used)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) PORT_PLAYER(2) // P2 BET
PORT_START("KEY2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_NAME("P2 3 (Hanafuda) / P2 C (Mahjong)") PORT_PLAYER(2)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) // P2 G (not used)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // P2 K (not used)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) // P2 Chi (not used)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // P2 Ron (not used)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY3")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_NAME("P2 4 (Hanafuda) / P2 D (Mahjong)") PORT_PLAYER(2)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) // P2 H (not used)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // P2 L (not used)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) // P2 PON (not used)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY4")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN) // P2 ?? (not used)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) PORT_PLAYER(2) // P2 t (Take)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) PORT_PLAYER(2) // P2 w (W.Up)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) PORT_PLAYER(2) // P2 f (Flip Flop)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) PORT_PLAYER(2) // P2 b (Big)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) PORT_PLAYER(2) // P2 s (Small)
PORT_START("KEY5")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_NAME("P1 1 (Hanafuda) / P1 A (Mahjong)")
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_NAME("P1 5 (Hanafuda) / P1 E (Mahjong)")
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // P1 I (not used)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Yes") PORT_CODE(KEYCODE_Y) // P1 M
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // P1 Kan (not used)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
PORT_START("KEY6")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B ) PORT_NAME("P1 2 (Hanafuda) / P1 B (Mahjong)")
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_NAME("P1 6 (Hanafuda) / P1 F (Mahjong)")
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // P1 J (not used)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 No") PORT_CODE(KEYCODE_N) // P1 N
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // P1 Reach (not used)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) // P1 BET
PORT_START("KEY7")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_NAME("P1 3 (Hanafuda) / P1 C (Mahjong)")
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) // P1 G (not used)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // P1 K (not used)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) // P1 Chi (not used)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // P1 Ron (not used)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY8")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_NAME("P1 4 (Hanafuda) / P1 D (Mahjong)")
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) // P1 H (not used)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // P1 L (not used)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) // P1 PON (not used)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY9")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN) // P1 ?? (not used)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) // P1 t (Take)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) // P1 w (W.Up)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) // P1 f (Flip Flop)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) // P1 b (Big)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) // P1 s (Small)
PORT_START("DSW1")
PORT_DIPNAME( 0x07, 0x07, "Unknown 1-0&1&2" )
PORT_DIPSETTING( 0x07, "0" )
PORT_DIPSETTING( 0x06, "1" )
PORT_DIPSETTING( 0x05, "2" )
PORT_DIPSETTING( 0x04, "3" )
PORT_DIPSETTING( 0x03, "4" )
PORT_DIPSETTING( 0x02, "5" )
PORT_DIPSETTING( 0x01, "6" )
PORT_DIPSETTING( 0x00, "7" )
PORT_DIPNAME( 0x08, 0x08, "Unknown 1-3" )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, "Unknown 1-4" )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x60, 0x60, "Unknown 1-5&6" )
PORT_DIPSETTING( 0x60, "0" )
PORT_DIPSETTING( 0x40, "1" )
PORT_DIPSETTING( 0x20, "2" )
PORT_DIPSETTING( 0x00, "3" )
PORT_DIPNAME( 0x80, 0x80, "Credits Per Note" )
PORT_DIPSETTING( 0x00, "25" )
PORT_DIPSETTING( 0x80, "50" )
PORT_START("DSW2")
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )
PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x01, DEF_STR( 1C_5C ) )
PORT_DIPSETTING( 0x00, "1 Coin/10 Credits" )
PORT_DIPNAME( 0x0c, 0x0c, "Unknown 2-2&3" )
PORT_DIPSETTING( 0x0c, "10" )
PORT_DIPSETTING( 0x08, "20" )
PORT_DIPSETTING( 0x04, "30" )
PORT_DIPSETTING( 0x00, "50" )
PORT_DIPNAME( 0x30, 0x30, "Unknown 2-4&5" )
PORT_DIPSETTING( 0x30, "100" )
PORT_DIPSETTING( 0x20, "200" )
PORT_DIPSETTING( 0x10, "250" )
PORT_DIPSETTING( 0x00, "300" )
PORT_DIPNAME( 0xc0, 0xc0, "Unknown 2-6&7" )
PORT_DIPSETTING( 0xc0, "50" )
PORT_DIPSETTING( 0x80, "60" )
PORT_DIPSETTING( 0x40, "70" )
PORT_DIPSETTING( 0x00, "80" )
PORT_START("DSW3")
PORT_DIPNAME( 0x01, 0x01, "Game Type?" )
PORT_DIPSETTING( 0x01, "0" )
PORT_DIPSETTING( 0x00, "1" )
PORT_DIPNAME( 0x02, 0x02, "Unknown 3-2" )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, "(C) Nihon (Censored)" )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x18, 0x18, "Unknown 3-3&4" )
PORT_DIPSETTING( 0x18, "10" )
PORT_DIPSETTING( 0x10, "20" )
PORT_DIPSETTING( 0x08, "30" )
PORT_DIPSETTING( 0x00, "50" )
PORT_DIPNAME( 0x60, 0x60, "Unknown 3-5&6" )
PORT_DIPSETTING( 0x60, "0" )
PORT_DIPSETTING( 0x40, "1" )
PORT_DIPSETTING( 0x20, "2" )
PORT_DIPSETTING( 0x00, "3" )
PORT_DIPNAME( 0x80, 0x80, "Girl?" )
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
PORT_START("DSW4")
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x01, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, "Unknown 4-1" )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, "Unknown 4-2" )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, "Unknown 4-3" )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, "Unknown 4-4" )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, "Unknown 4-5" )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, "Keyboard" )
PORT_DIPSETTING( 0x40, "Hanafuda" )
PORT_DIPSETTING( 0x00, "Mahjong" )
PORT_DIPNAME( 0x80, 0x80, "Unknown 4-7" )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW5")
PORT_DIPNAME( 0x01, 0x01, "Unknown 1-8" )
PORT_DIPSETTING( 0x00, "5" )
PORT_DIPSETTING( 0x01, "10" )
PORT_DIPNAME( 0x02, 0x02, "Unknown 1-9" )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x0c, 0x0c, "Unknown 2-8&9" )
PORT_DIPSETTING( 0x0c, "20" )
PORT_DIPSETTING( 0x08, "30" )
PORT_DIPSETTING( 0x04, "40" )
PORT_DIPSETTING( 0x00, "50" )
PORT_DIPNAME( 0x10, 0x10, "Unknown 3-8" )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, "Unknown 3-9" )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, "Unknown 4-8" )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
PORT_START("BET")
PORT_DIPNAME( 0x40, 0x40, "Disable Bets" )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("HOPPER")
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
static INPUT_PORTS_START( mjreach1 )
PORT_START("SYSTEM")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE3 ) // medal out
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN)
PORT_SERVICE(0x04, IP_ACTIVE_LOW)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) // analyzer
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE2 ) // data clear
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) // note
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN)
PORT_START("KEY0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_PLAYER(2) // A
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_PLAYER(2) // E
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_PLAYER(2) // I
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_PLAYER(2) // M
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_PLAYER(2) // Kan
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 ) // Start 2
PORT_START("KEY1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B ) PORT_PLAYER(2) // B
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_PLAYER(2) // F
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J ) PORT_PLAYER(2) // J
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N ) PORT_PLAYER(2) // N
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) PORT_PLAYER(2) // Reach
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) PORT_PLAYER(2) // BET
PORT_START("KEY2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_PLAYER(2) // C
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G ) PORT_PLAYER(2) // G
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K ) PORT_PLAYER(2) // K
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) PORT_PLAYER(2) // Chi
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) PORT_PLAYER(2) // Ron
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_START("KEY3")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_PLAYER(2) // D
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H ) PORT_PLAYER(2) // H
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L ) PORT_PLAYER(2) // L
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_PLAYER(2) // Pon
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_START("KEY4")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) PORT_PLAYER(2) // "l"
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) PORT_PLAYER(2) // "t"
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) PORT_PLAYER(2) // "w"
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) PORT_PLAYER(2) // Flip Flop
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) PORT_PLAYER(2) // "b"
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) PORT_PLAYER(2) // "s"
PORT_START("KEY5")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) // A
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) // E
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I ) // I
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) // M
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) // Kan
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 ) // Start 1
PORT_START("KEY6")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B ) // B
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F ) // F
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J ) // J
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N ) // N
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) // Reach
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) // BET
PORT_START("KEY7")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C ) // C
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G ) // G
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K ) // K
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) // Chi
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) // Ron
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_START("KEY8")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D ) // D
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H ) // H
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L ) // L
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) // Pon
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_START("KEY9")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) // "l"
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) // "t"
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) // "w"
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) // Flip Flop
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) // "b"
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) // "s"
PORT_START("DSW1")
PORT_DIPNAME( 0x0f, 0x07, "Pay Out Rate (%)" )
PORT_DIPSETTING( 0x00, "50" )
PORT_DIPSETTING( 0x01, "53" )
PORT_DIPSETTING( 0x02, "56" )
PORT_DIPSETTING( 0x03, "59" )
PORT_DIPSETTING( 0x04, "62" )
PORT_DIPSETTING( 0x05, "65" )
PORT_DIPSETTING( 0x06, "68" )
PORT_DIPSETTING( 0x07, "71" )
PORT_DIPSETTING( 0x08, "75" )
PORT_DIPSETTING( 0x09, "78" )
PORT_DIPSETTING( 0x0a, "81" )
PORT_DIPSETTING( 0x0b, "84" )
PORT_DIPSETTING( 0x0c, "87" )
PORT_DIPSETTING( 0x0d, "90" )
PORT_DIPSETTING( 0x0e, "93" )
PORT_DIPSETTING( 0x0f, "96" )
PORT_DIPNAME( 0x30, 0x30, "Odds Rate" )
PORT_DIPSETTING( 0x30, "1 2 4 8 12 16 24 32" )
PORT_DIPSETTING( 0x00, "1 2 3 5 8 15 30 50" )
PORT_DIPSETTING( 0x20, "2 3 6 8 12 15 30 50" )
PORT_DIPSETTING( 0x10, "1 2 3 5 10 25 50 100" )
PORT_DIPNAME( 0xc0, 0xc0, "Max Bet" )
PORT_DIPSETTING( 0xc0, "1" )
PORT_DIPSETTING( 0x80, "5" )
PORT_DIPSETTING( 0x40, "10" )
PORT_DIPSETTING( 0x00, "20" )
PORT_START("DSW2")
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )
PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x01, DEF_STR( 1C_5C ) )
PORT_DIPSETTING( 0x00, "1 Coin/10 Credits" )
PORT_DIPNAME( 0x0c, 0x0c, "Min Rate To Play" )
PORT_DIPSETTING( 0x0c, "1" )
PORT_DIPSETTING( 0x08, "2" )
PORT_DIPSETTING( 0x04, "3" )
PORT_DIPSETTING( 0x00, "5" )
PORT_DIPNAME( 0x30, 0x30, "Payout" )
PORT_DIPSETTING( 0x30, "300" )
PORT_DIPSETTING( 0x20, "500" )
PORT_DIPSETTING( 0x10, "700" )
PORT_DIPSETTING( 0x00, "1000" )
PORT_DIPNAME( 0x40, 0x40, "W-BET" )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, "Last Chance" )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW3")
PORT_DIPNAME( 0x07, 0x07, "YAKUMAN Bonus" )
PORT_DIPSETTING( 0x07, "Cut" )
PORT_DIPSETTING( 0x06, "1 T" )
PORT_DIPSETTING( 0x05, "300" )
PORT_DIPSETTING( 0x04, "500" )
PORT_DIPSETTING( 0x03, "700" )
PORT_DIPSETTING( 0x02, "1000" )
PORT_DIPSETTING( 0x01, "1500" )
PORT_DIPSETTING( 0x00, "2000" )
PORT_DIPNAME( 0x18, 0x18, "YAKUMAN Times" )
// PORT_DIPSETTING( 0x00, "1" )
PORT_DIPSETTING( 0x18, "1" )
PORT_DIPSETTING( 0x10, "2" )
PORT_DIPSETTING( 0x08, "3" )
PORT_DIPNAME( 0x20, 0x20, "3 BAI In YAKUMAN Bonus Chance" )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, "Auto Tsumo" )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, "Credit Timing" )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW4")
PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x00, "In Game Music" )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x00, "Girls (Demo)" )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, "Girls Show After 3 Renso" )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x00, "Girls (Play)" ) // Shown as always OFF in dips sheet
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, "Boys In Game" )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, "Boys" )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, "Don Den Key" )
PORT_DIPSETTING( 0x80, "Start" )
PORT_DIPSETTING( 0x00, "Flip/Flop" )
PORT_START("DSW5")
PORT_DIPNAME( 0x01, 0x01, "Credits Per Note" )
PORT_DIPSETTING( 0x01, "5" )
PORT_DIPSETTING( 0x00, "10" )
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x0c, 0x0c, "Computer Strength" )
PORT_DIPSETTING( 0x0c, "Weak" )
PORT_DIPSETTING( 0x08, DEF_STR( Normal ))
PORT_DIPSETTING( 0x04, "Strong" )
PORT_DIPSETTING( 0x00, "Very Strong" )
PORT_DIPNAME( 0x10, 0x10, "Game Style" )
PORT_DIPSETTING( 0x10, "Credit" )
PORT_DIPSETTING( 0x00, "Credit Time" )
PORT_DIPNAME( 0x20, 0x20, "Start Method (Credit Time)" )
PORT_DIPSETTING( 0x20, "?" )
PORT_DIPSETTING( 0x00, "Rate" )
PORT_DIPNAME( 0x40, 0x40, "Unknown 4-8" )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, "Unknown 4-9" )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("BET")
PORT_DIPNAME( 0x40, 0x40, "Bets?" )
PORT_DIPSETTING( 0x40, "0" )
PORT_DIPSETTING( 0x00, "1" )
PORT_START("HOPPER")
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
static INPUT_PORTS_START( jongtei )
PORT_START("SYSTEM")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE3 ) // medal out
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN)
PORT_SERVICE(0x04, IP_ACTIVE_LOW)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) // analyzer
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE2 ) // data clear
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) // note
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN)
PORT_START("KEY0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_PLAYER(2) // A
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_PLAYER(2) // E
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_PLAYER(2) // I
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_PLAYER(2) // M
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_PLAYER(2) // Kan
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 ) // Start 2
PORT_START("KEY1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B ) PORT_PLAYER(2) // B
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_PLAYER(2) // F
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J ) PORT_PLAYER(2) // J
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N ) PORT_PLAYER(2) // N
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) PORT_PLAYER(2) // Reach
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) PORT_PLAYER(2) // BET
PORT_START("KEY2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_PLAYER(2) // C
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G ) PORT_PLAYER(2) // G
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K ) PORT_PLAYER(2) // K
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) PORT_PLAYER(2) // Chi
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) PORT_PLAYER(2) // Ron
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_START("KEY3")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_PLAYER(2) // D
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H ) PORT_PLAYER(2) // H
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L ) PORT_PLAYER(2) // L
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_PLAYER(2) // Pon
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_START("KEY4")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) PORT_PLAYER(2) // "l"
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) PORT_PLAYER(2) // "t"
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) PORT_PLAYER(2) // "w"
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) PORT_PLAYER(2) // Flip Flop
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) PORT_PLAYER(2) // "b"
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) PORT_PLAYER(2) // "s"
PORT_START("KEY5")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) // A
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) // E
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I ) // I
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) // M
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) // Kan
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 ) // Start 1
PORT_START("KEY6")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B ) // B
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F ) // F
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J ) // J
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N ) // N
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) // Reach
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) // BET
PORT_START("KEY7")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C ) // C
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G ) // G
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K ) // K
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) // Chi
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) // Ron
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_START("KEY8")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D ) // D
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H ) // H
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L ) // L
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) // Pon
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_START("KEY9")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) // "l"
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) // "t"
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) // "w"
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) // Flip Flop
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) // "b"
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) // "s"
PORT_START("DSW1")
PORT_DIPNAME( 0x0f, 0x07, "Pay Out Rate (%)" )
PORT_DIPSETTING( 0x00, "50" )
PORT_DIPSETTING( 0x01, "53" )
PORT_DIPSETTING( 0x02, "56" )
PORT_DIPSETTING( 0x03, "59" )
PORT_DIPSETTING( 0x04, "62" )
PORT_DIPSETTING( 0x05, "65" )
PORT_DIPSETTING( 0x06, "68" )
PORT_DIPSETTING( 0x07, "71" )
PORT_DIPSETTING( 0x08, "75" )
PORT_DIPSETTING( 0x09, "78" )
PORT_DIPSETTING( 0x0a, "81" )
PORT_DIPSETTING( 0x0b, "84" )
PORT_DIPSETTING( 0x0c, "87" )
PORT_DIPSETTING( 0x0d, "90" )
PORT_DIPSETTING( 0x0e, "93" )
PORT_DIPSETTING( 0x0f, "96" )
PORT_DIPNAME( 0x30, 0x30, "Odds Rate" )
PORT_DIPSETTING( 0x30, "1 2 4 8 12 16 24 32" )
PORT_DIPSETTING( 0x00, "1 2 3 5 8 15 30 50" )
PORT_DIPSETTING( 0x20, "2 3 6 8 12 15 30 50" )
PORT_DIPSETTING( 0x10, "1 2 3 5 10 25 50 100" )
PORT_DIPNAME( 0xc0, 0xc0, "Max Bet" )
PORT_DIPSETTING( 0xc0, "1" )
PORT_DIPSETTING( 0x80, "5" )
PORT_DIPSETTING( 0x40, "10" )
PORT_DIPSETTING( 0x00, "20" )
PORT_START("DSW2")
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )
PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x01, DEF_STR( 1C_5C ) )
PORT_DIPSETTING( 0x00, "1 Coin/10 Credits" )
PORT_DIPNAME( 0x0c, 0x0c, "Min Rate To Play" )
PORT_DIPSETTING( 0x0c, "1" )
// PORT_DIPSETTING( 0x08, "2" ) // ? these don't let you start a game
// PORT_DIPSETTING( 0x04, "3" )
// PORT_DIPSETTING( 0x00, "5" )
PORT_DIPNAME( 0x30, 0x30, "Payout" )
PORT_DIPSETTING( 0x30, "300" )
PORT_DIPSETTING( 0x20, "500" )
PORT_DIPSETTING( 0x10, "700" )
PORT_DIPSETTING( 0x00, "1000" )
PORT_DIPNAME( 0x40, 0x40, "W-BET" )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, "Last Chance" )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW3")
PORT_DIPNAME( 0x07, 0x07, "YAKUMAN Bonus" )
PORT_DIPSETTING( 0x07, "Cut" )
PORT_DIPSETTING( 0x06, "1 T" )
PORT_DIPSETTING( 0x05, "300" )
PORT_DIPSETTING( 0x04, "500" )
PORT_DIPSETTING( 0x03, "700" )
PORT_DIPSETTING( 0x02, "1000" )
PORT_DIPSETTING( 0x01, "1500" )
PORT_DIPSETTING( 0x00, "2000" )
PORT_DIPNAME( 0x18, 0x18, "YAKUMAN Times" )
// PORT_DIPSETTING( 0x00, "1" )
PORT_DIPSETTING( 0x18, "1" )
PORT_DIPSETTING( 0x10, "2" )
PORT_DIPSETTING( 0x08, "3" )
PORT_DIPNAME( 0x20, 0x20, "3 BAI In YAKUMAN Bonus Chance" )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, "Auto Tsumo" )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, "Credit Timing" )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW4")
PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x00, "In Game Music" )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x00, "Girls" )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, "Girls Show After 3 Renso" )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW5")
PORT_DIPNAME( 0x01, 0x01, "Credits Per Note" )
PORT_DIPSETTING( 0x01, "5" )
PORT_DIPSETTING( 0x00, "10" )
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x0c, 0x0c, "Computer Strength" )
PORT_DIPSETTING( 0x0c, "Weak" )
PORT_DIPSETTING( 0x08, DEF_STR( Normal ))
PORT_DIPSETTING( 0x04, "Strong" )
PORT_DIPSETTING( 0x00, "Very Strong" )
PORT_DIPNAME( 0x10, 0x10, "Game Style" )
PORT_DIPSETTING( 0x10, "Credit" )
PORT_DIPSETTING( 0x00, "Credit Time" )
PORT_DIPNAME( 0x20, 0x20, "Start Method (Credit Time)" )
PORT_DIPSETTING( 0x20, "?" )
PORT_DIPSETTING( 0x00, "Rate" )
PORT_DIPNAME( 0x40, 0x40, "Unknown 4-8" )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, "Unknown 4-9" )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("BET")
PORT_DIPNAME( 0x40, 0x40, "Bets?" )
PORT_DIPSETTING( 0x40, "0" )
PORT_DIPSETTING( 0x00, "1" )
PORT_START("HOPPER")
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
static INPUT_PORTS_START( mjchuuka )
PORT_START("SYSTEM")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE3 ) // medal out
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN)
PORT_SERVICE(0x04, IP_ACTIVE_LOW)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) // analyzer
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE2 ) // data clear
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) // note
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN)
PORT_START("KEY0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_PLAYER(2) // A
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_PLAYER(2) // E
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_PLAYER(2) // I
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_PLAYER(2) // M
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_PLAYER(2) // Kan
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 ) // Start 2
PORT_START("KEY1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B ) PORT_PLAYER(2) // B
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_PLAYER(2) // F
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J ) PORT_PLAYER(2) // J
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N ) PORT_PLAYER(2) // N
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) PORT_PLAYER(2) // Reach
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) PORT_PLAYER(2) // BET
PORT_START("KEY2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_PLAYER(2) // C
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G ) PORT_PLAYER(2) // G
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K ) PORT_PLAYER(2) // K
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) PORT_PLAYER(2) // Chi
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) PORT_PLAYER(2) // Ron
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_START("KEY3")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_PLAYER(2) // D
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H ) PORT_PLAYER(2) // H
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L ) PORT_PLAYER(2) // L
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_PLAYER(2) // Pon
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_START("KEY4")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) PORT_PLAYER(2) // "l"
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) PORT_PLAYER(2) // "t"
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) PORT_PLAYER(2) // "w"
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) PORT_PLAYER(2) // Flip Flop
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) PORT_PLAYER(2) // "b"
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) PORT_PLAYER(2) // "s"
PORT_START("KEY5")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) // A
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) // E
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I ) // I
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) // M
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) // Kan
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 ) // Start 1
PORT_START("KEY6")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B ) // B
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F ) // F
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J ) // J
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N ) // N
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) // Reach
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) // BET
PORT_START("KEY7")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C ) // C
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G ) // G
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K ) // K
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) // Chi
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) // Ron
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_START("KEY8")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D ) // D
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H ) // H
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L ) // L
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) // Pon
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_START("KEY9")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) // "l"
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) // "t"
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) // "w"
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) // Flip Flop
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) // "b"
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) // "s"
PORT_START("DSW1")
PORT_DIPNAME( 0x0f, 0x07, "Pay Out Rate (%)" )
PORT_DIPSETTING( 0x00, "50" )
PORT_DIPSETTING( 0x01, "53" )
PORT_DIPSETTING( 0x02, "56" )
PORT_DIPSETTING( 0x03, "59" )
PORT_DIPSETTING( 0x04, "62" )
PORT_DIPSETTING( 0x05, "65" )
PORT_DIPSETTING( 0x06, "68" )
PORT_DIPSETTING( 0x07, "71" )
PORT_DIPSETTING( 0x08, "75" )
PORT_DIPSETTING( 0x09, "78" )
PORT_DIPSETTING( 0x0a, "81" )
PORT_DIPSETTING( 0x0b, "84" )
PORT_DIPSETTING( 0x0c, "87" )
PORT_DIPSETTING( 0x0d, "90" )
PORT_DIPSETTING( 0x0e, "93" )
PORT_DIPSETTING( 0x0f, "96" )
PORT_DIPNAME( 0x30, 0x30, "Odds Rate" )
PORT_DIPSETTING( 0x20, "1 2 3 4 6 8 10 15" )
PORT_DIPSETTING( 0x30, "1 2 4 8 12 16 24 32" )
PORT_DIPSETTING( 0x00, "1 2 3 5 8 15 30 50" )
PORT_DIPSETTING( 0x10, "1 2 3 5 10 25 50 100" )
PORT_DIPNAME( 0xc0, 0xc0, "Max Bet" )
PORT_DIPSETTING( 0xc0, "1" )
PORT_DIPSETTING( 0x80, "5" )
PORT_DIPSETTING( 0x40, "10" )
PORT_DIPSETTING( 0x00, "20" )
PORT_START("DSW2")
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )
PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x01, DEF_STR( 1C_5C ) )
PORT_DIPSETTING( 0x00, "1 Coin/10 Credits" )
PORT_DIPNAME( 0x0c, 0x0c, "Min Rate To Play" )
PORT_DIPSETTING( 0x0c, "1" )
// PORT_DIPSETTING( 0x08, "2" ) // ? these don't let you start a game
// PORT_DIPSETTING( 0x04, "3" )
// PORT_DIPSETTING( 0x00, "5" )
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x10, "10" )
PORT_DIPSETTING( 0x00, "255" )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW3")
PORT_DIPNAME( 0x07, 0x07, "YAKUMAN Bonus" )
PORT_DIPSETTING( 0x07, "Cut" )
PORT_DIPSETTING( 0x06, "1 T" )
PORT_DIPSETTING( 0x05, "300" )
PORT_DIPSETTING( 0x04, "500" )
PORT_DIPSETTING( 0x03, "700" )
PORT_DIPSETTING( 0x02, "1000" )
PORT_DIPSETTING( 0x01, "1000?" )
PORT_DIPSETTING( 0x00, "1000?" )
PORT_DIPNAME( 0x18, 0x18, "YAKUMAN Times" )
// PORT_DIPSETTING( 0x00, "1" )
PORT_DIPSETTING( 0x18, "1" )
PORT_DIPSETTING( 0x10, "2" )
PORT_DIPSETTING( 0x08, "3?" )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, "DonDen Key" )
PORT_DIPSETTING( 0x40, "Start" )
PORT_DIPSETTING( 0x00, "Flip Flop" )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Flip_Screen ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW4")
PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x00, "In Game Music" )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x0c, 0x00, "Girls" )
PORT_DIPSETTING( 0x0c, DEF_STR( No ) )
PORT_DIPSETTING( 0x08, "Dressed" )
PORT_DIPSETTING( 0x04, "Underwear" )
PORT_DIPSETTING( 0x00, "Nude" )
PORT_DIPNAME( 0x10, 0x00, "Girls Speech" )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW5")
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, "Credits Per Note" )
PORT_DIPSETTING( 0x02, "5" )
PORT_DIPSETTING( 0x00, "10" )
PORT_DIPNAME( 0x0c, 0x0c, "Computer Strength?" )
PORT_DIPSETTING( 0x0c, "Weak" )
PORT_DIPSETTING( 0x08, DEF_STR( Normal ))
PORT_DIPSETTING( 0x04, "Strong" )
PORT_DIPSETTING( 0x00, "Very Strong" )
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, "Unknown 4-8" )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, "Unknown 4-9" )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("BET")
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("HOPPER")
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
static INPUT_PORTS_START( funkyfig )
PORT_START("IN0") /* Keys (port 83 with port 80 = 20) */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("1") PORT_CODE(KEYCODE_1_PAD)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("2") PORT_CODE(KEYCODE_2_PAD)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("3") PORT_CODE(KEYCODE_3_PAD)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("4") PORT_CODE(KEYCODE_4_PAD)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("5") PORT_CODE(KEYCODE_5_PAD)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("6") PORT_CODE(KEYCODE_6_PAD)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("7") PORT_CODE(KEYCODE_7_PAD)
PORT_START("IN1") /* ? (port 83 with port 80 = 21) */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START2 ) // ?
PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("IN2") /* Coins (port 82 with port 80 = 22) */
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_SERVICE1 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("8") PORT_CODE(KEYCODE_8_PAD)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("9") PORT_CODE(KEYCODE_9_PAD)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("DSW1") /* (low bits, port 1c with rombank = 1e) */
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) )
PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
PORT_DIPNAME( 0x1c, 0x10, DEF_STR( Difficulty ) )
PORT_DIPSETTING( 0x18, "0" )
PORT_DIPSETTING( 0x14, "1" )
PORT_DIPSETTING( 0x1c, "2" )
PORT_DIPSETTING( 0x10, "3" )
PORT_DIPSETTING( 0x0c, "4" )
PORT_DIPSETTING( 0x08, "5" )
// PORT_DIPSETTING( 0x04, "5" )
// PORT_DIPSETTING( 0x00, "5" )
PORT_DIPNAME( 0x20, 0x20, "Linked Cabinets" )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x40, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, "Play Rock Smash" )
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
PORT_DIPSETTING( 0x80, DEF_STR( Yes ) )
PORT_START("DSW2") /* (low bits, port 1c with rombank = 1d) */
PORT_DIPNAME( 0x01, 0x01, "2 Player Game" )
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
PORT_DIPSETTING( 0x01, DEF_STR( Yes ) )
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x0c, 0x0c, "Unknown 2-2&3*" )
PORT_DIPSETTING( 0x0c, "10" )
PORT_DIPSETTING( 0x08, "20" )
PORT_DIPSETTING( 0x04, "40" )
PORT_DIPSETTING( 0x00, "80" )
PORT_DIPNAME( 0x10, 0x10, "Unknown 2-4*" ) // used
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, "Unknown 2-5*" ) // used
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0xc0, 0xc0, "Unknown 2-6&7*" ) // used
PORT_DIPSETTING( 0xc0, "0" )
PORT_DIPSETTING( 0x80, "1" )
PORT_DIPSETTING( 0x40, "2" )
PORT_DIPSETTING( 0x00, "3" )
PORT_START("DSW3") /* (high bits, port 1c with rombank = 1b) */
PORT_DIPNAME( 0x01, 0x01, "Continue?" ) // related to continue
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_SERVICE( 0x02, IP_ACTIVE_LOW )
PORT_DIPNAME( 0x04, 0x04, "Debug Text" )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x00, "Country" )
PORT_DIPSETTING( 0x08, DEF_STR( Japan ) )
PORT_DIPSETTING( 0x00, DEF_STR( USA ) )
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unused ) )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
static INPUT_PORTS_START( mjmyster )
PORT_START("SYSTEM")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE3 ) // medal out
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN)
PORT_SERVICE_NO_TOGGLE(0x04, IP_ACTIVE_LOW)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) // analyzer
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE2 ) // data clear
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) // note
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN)
PORT_START("KEY0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) // A
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) // E
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I ) // I
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) // M
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) // Kan
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 ) // Start 1
PORT_START("KEY1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B ) // B
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F ) // F
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J ) // J
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N ) // N
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) // Reach
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) // BET
PORT_START("KEY2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C ) // C
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G ) // G
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K ) // K
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) // Chi
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) // Ron
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_START("KEY3")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D ) // D
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H ) // H
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L ) // L
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) // Pon
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_START("KEY4")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) // "l"
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) // "t"
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) // "w"
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) // Flip Flop
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) // "b"
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) // "s"
PORT_START("DSW1")
PORT_DIPNAME( 0x0f, 0x07, "Pay Out Rate (%)" )
PORT_DIPSETTING( 0x00, "50" )
PORT_DIPSETTING( 0x01, "53" )
PORT_DIPSETTING( 0x02, "56" )
PORT_DIPSETTING( 0x03, "59" )
PORT_DIPSETTING( 0x04, "62" )
PORT_DIPSETTING( 0x05, "65" )
PORT_DIPSETTING( 0x06, "68" )
PORT_DIPSETTING( 0x07, "71" )
PORT_DIPSETTING( 0x08, "75" )
PORT_DIPSETTING( 0x09, "78" )
PORT_DIPSETTING( 0x0a, "81" )
PORT_DIPSETTING( 0x0b, "84" )
PORT_DIPSETTING( 0x0c, "87" )
PORT_DIPSETTING( 0x0d, "90" )
PORT_DIPSETTING( 0x0e, "93" )
PORT_DIPSETTING( 0x0f, "96" )
PORT_DIPNAME( 0x30, 0x30, "Odds Rate" )
PORT_DIPSETTING( 0x20, "2 3 6 8 12 15 30 50" )
PORT_DIPSETTING( 0x30, "1 2 4 8 12 16 24 32" )
PORT_DIPSETTING( 0x00, "1 2 3 5 8 15 30 50" )
PORT_DIPSETTING( 0x10, "1 2 3 5 10 25 50 100" )
PORT_DIPNAME( 0xc0, 0xc0, "Max Bet" )
PORT_DIPSETTING( 0xc0, "1" )
PORT_DIPSETTING( 0x80, "5" )
PORT_DIPSETTING( 0x40, "10" )
PORT_DIPSETTING( 0x00, "20" )
PORT_START("DSW2")
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )
PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x01, DEF_STR( 1C_5C ) )
PORT_DIPSETTING( 0x00, "1 Coin/10 Credits" )
PORT_DIPNAME( 0x0c, 0x0c, "Min Rate To Play" )
PORT_DIPSETTING( 0x0c, "1" )
// PORT_DIPSETTING( 0x08, "2" ) // ? these don't let you start a game
// PORT_DIPSETTING( 0x04, "3" )
// PORT_DIPSETTING( 0x00, "5" )
PORT_DIPNAME( 0x70, 0x70, "YAKUMAN Bonus" )
PORT_DIPSETTING( 0x70, "Cut" )
PORT_DIPSETTING( 0x60, "1 T" )
PORT_DIPSETTING( 0x50, "300" )
PORT_DIPSETTING( 0x40, "500" )
PORT_DIPSETTING( 0x30, "700" )
PORT_DIPSETTING( 0x20, "1000" )
PORT_DIPSETTING( 0x10, "1000?" )
PORT_DIPSETTING( 0x00, "1000?" )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW3")
PORT_DIPNAME( 0x03, 0x03, "YAKUMAN Times" )
// PORT_DIPSETTING( 0x00, "1" )
PORT_DIPSETTING( 0x03, "1" )
PORT_DIPSETTING( 0x02, "2" )
PORT_DIPSETTING( 0x01, "3?" )
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x18, 0x18, "Payout" )
PORT_DIPSETTING( 0x18, "300" )
PORT_DIPSETTING( 0x10, "500" )
PORT_DIPSETTING( 0x08, "700" )
PORT_DIPSETTING( 0x00, "1000" )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW4")
PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x00, "In Game Music" )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Controls ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Region ) )
PORT_DIPSETTING( 0x80, DEF_STR( Japan ) )
PORT_DIPSETTING( 0x00, "Hong Kong" )
PORT_START("DSW5")
PORT_DIPNAME( 0x03, 0x03, "Computer Strength?" )
PORT_DIPSETTING( 0x03, "Weak" )
PORT_DIPSETTING( 0x02, DEF_STR( Normal ))
PORT_DIPSETTING( 0x01, "Strong" )
PORT_DIPSETTING( 0x00, "Very Strong" )
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, "DonDen Key" )
PORT_DIPSETTING( 0x08, "Start" )
PORT_DIPSETTING( 0x00, "Flip Flop" )
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, "Credits Per Note" )
PORT_DIPSETTING( 0x40, "5" )
PORT_DIPSETTING( 0x00, "10" )
PORT_DIPNAME( 0x80, 0x00, DEF_STR( Flip_Screen ) )
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
INPUT_PORTS_END
static INPUT_PORTS_START( hginga )
PORT_START("SYSTEM")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE3 ) // medal out
// PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) // Test
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) // analyzer
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE2 ) // data clear
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) // note
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1)
// PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_PLAYER(2) // A
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_PLAYER(2) // E
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // I
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_PLAYER(2) // M
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // Kan
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
PORT_START("KEY1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B ) PORT_PLAYER(2) // B
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_PLAYER(2) // F
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // J
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N ) PORT_PLAYER(2) // N
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // Reach
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) PORT_PLAYER(2) // BET
PORT_START("KEY2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_PLAYER(2) // C
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) // G
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // K
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) // Chi
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // Ron
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY3")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_PLAYER(2) // D
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) // H
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // L
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) // PON
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY4")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) PORT_PLAYER(2) // "t"
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) PORT_PLAYER(2) // "w"
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) PORT_PLAYER(2) // Flip Flop
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) PORT_PLAYER(2) // "b"
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) PORT_PLAYER(2) // "s"
PORT_START("KEY5")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) // A
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) // E
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // I
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) // M
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // Kan
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
PORT_START("KEY6")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B ) // B
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F ) // F
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // J
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N ) // N
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // Reach
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) // BET
PORT_START("KEY7")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C ) // C
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) // G
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // K
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) // Chi
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // Ron
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY8")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D ) // D
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) // H
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // L
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) // PON
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY9")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) // "t"
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) // "w"
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) // Flip Flop
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) // "b"
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) // "s"
PORT_START("DSW4")
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x01, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, "Unknown 4-1" )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, "Girls" )
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x04, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, "Unknown 4-3" )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, "Hint" )
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x10, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, "Unknown 4-5" )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, "Unknown 4-6" )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x00, "Cards Labels" )
PORT_DIPSETTING( 0x80, "Numbers" )
PORT_DIPSETTING( 0x00, "Letters" )
PORT_START("DSW3")
PORT_DIPNAME( 0x03, 0x03, "Unknown 3-0&1" )
PORT_DIPSETTING( 0x03, "1" )
PORT_DIPSETTING( 0x02, "2" )
PORT_DIPSETTING( 0x01, "3" )
PORT_DIPSETTING( 0x00, "4" )
PORT_DIPNAME( 0x04, 0x04, "Unknown 3-2" )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x18, 0x18, "Unknown 3-3&4" )
PORT_DIPSETTING( 0x18, "10" )
PORT_DIPSETTING( 0x10, "20" )
PORT_DIPSETTING( 0x08, "30" )
PORT_DIPSETTING( 0x00, "50" )
PORT_DIPNAME( 0x20, 0x20, "Unknown 3-5" )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0xc0, 0xc0, "Unknown 3-6&7" )
PORT_DIPSETTING( 0xc0, "0" )
PORT_DIPSETTING( 0x80, "1" )
PORT_DIPSETTING( 0x40, "2" )
PORT_DIPSETTING( 0x00, "3" )
PORT_START("DSW2")
PORT_DIPNAME( 0x03, 0x03, "Unknown 2-0&1" )
PORT_DIPSETTING( 0x03, "1" )
PORT_DIPSETTING( 0x02, "2" )
PORT_DIPSETTING( 0x01, "5" )
PORT_DIPSETTING( 0x00, "10" )
PORT_DIPNAME( 0x04, 0x04, "Unknown 2-2" )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, "Unknown 2-3" )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x30, 0x30, "Odds Rate" )
PORT_DIPSETTING( 0x30, "2 5 6 20 50 100" )
PORT_DIPSETTING( 0x20, "2 5 6 20 50 200" )
PORT_DIPSETTING( 0x10, "2 5 6 20 50 250" )
PORT_DIPSETTING( 0x00, "2 5 6 20 50 300" )
PORT_DIPNAME( 0xc0, 0xc0, "Unknown 2-6&7" )
PORT_DIPSETTING( 0xc0, "50" )
PORT_DIPSETTING( 0x80, "60" )
PORT_DIPSETTING( 0x40, "70" )
PORT_DIPSETTING( 0x00, "80" )
PORT_START("DSW1")
PORT_DIPNAME( 0x07, 0x07, "Unknown 1-0&1&2" )
PORT_DIPSETTING( 0x07, "0" )
PORT_DIPSETTING( 0x06, "1" )
PORT_DIPSETTING( 0x05, "2" )
PORT_DIPSETTING( 0x04, "3" )
PORT_DIPSETTING( 0x03, "4" )
PORT_DIPSETTING( 0x02, "5" )
PORT_DIPSETTING( 0x01, "6" )
PORT_DIPSETTING( 0x00, "7" )
PORT_DIPNAME( 0x08, 0x08, "Unknown 1-3" )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, "Unknown 1-4" )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x60, 0x60, "Unknown 1-5&6" )
PORT_DIPSETTING( 0x60, "0" )
PORT_DIPSETTING( 0x40, "1" )
PORT_DIPSETTING( 0x20, "2" )
PORT_DIPSETTING( 0x00, "3" )
PORT_DIPNAME( 0x80, 0x80, "Unknown 1-7" )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW5")
PORT_DIPNAME( 0x01, 0x01, "Keyboard" )
PORT_DIPSETTING( 0x00, "Hanafuda" ) // Requires different inputs
PORT_DIPSETTING( 0x01, "Mahjong" )
PORT_SERVICE( 0x02, IP_ACTIVE_LOW )
PORT_DIPNAME( 0x04, 0x04, "Unknown 2-8" )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, "Unknown 2-9" )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, "Unknown 3-8" )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, "Unknown 3-9" )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, "Unknown 4-8" )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Flip_Screen ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("BET")
PORT_DIPNAME( 0x40, 0x40, "Allow Bets" )
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x40, DEF_STR( On ) )
PORT_BIT( 0xbf, IP_ACTIVE_LOW, IPT_UNKNOWN)
INPUT_PORTS_END
static INPUT_PORTS_START( hgokou )
PORT_START("SYSTEM")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE3 ) // medal out
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) PORT_TOGGLE
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) // analyzer
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE2 ) // data clear
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) // note
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN)
PORT_START("KEY0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_HANAFUDA_A )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_E )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // I
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_HANAFUDA_YES )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) // Kan
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1)
PORT_START("KEY1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_HANAFUDA_B )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_F )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // J
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_HANAFUDA_NO )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) // Reach
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // BET
PORT_START("KEY2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_HANAFUDA_C )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) // G
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // K
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) // Chi
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // Ron
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY3")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_HANAFUDA_D )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) // H
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // L
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) // PON
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY4")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) // "t"
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // "w"
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // "b"
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // "s"
PORT_START("KEY5")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_HANAFUDA_A ) PORT_PLAYER(2)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_E ) PORT_PLAYER(2)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // I
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_HANAFUDA_YES ) PORT_PLAYER(2)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) PORT_PLAYER(2) // Kan
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2)
PORT_START("KEY6")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_HANAFUDA_B ) PORT_PLAYER(2)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_F ) PORT_PLAYER(2)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // J
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_HANAFUDA_NO ) PORT_PLAYER(2)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) PORT_PLAYER(2) // Reach
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // BET
PORT_START("KEY7")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_HANAFUDA_C ) PORT_PLAYER(2)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_PLAYER(2) // G
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // K
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) PORT_PLAYER(2) // Chi
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // Ron
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY8")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_HANAFUDA_D ) PORT_PLAYER(2)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_PLAYER(2) // H
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // L
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) PORT_PLAYER(2) // PON
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY9")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) // "t"
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // "w"
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // "b"
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // "s"
PORT_START("DSW4")
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x01, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, "Unknown 4-1" )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, "Girls" )
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x04, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, "Unknown 4-3" )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, "Hint" )
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x10, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, "Unknown 4-5" )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, "Unknown 4-6" )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x00, "Cards Labels" )
PORT_DIPSETTING( 0x80, "Numbers" )
PORT_DIPSETTING( 0x00, "Letters" )
PORT_START("DSW3")
PORT_DIPNAME( 0x03, 0x03, "Unknown 3-0&1" )
PORT_DIPSETTING( 0x03, "1" )
PORT_DIPSETTING( 0x02, "2" )
PORT_DIPSETTING( 0x01, "3" )
PORT_DIPSETTING( 0x00, "4" )
PORT_DIPNAME( 0x04, 0x04, "Unknown 3-2" )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x18, 0x18, "Unknown 3-3&4" )
PORT_DIPSETTING( 0x18, "10" )
PORT_DIPSETTING( 0x10, "20" )
PORT_DIPSETTING( 0x08, "30" )
PORT_DIPSETTING( 0x00, "50" )
PORT_DIPNAME( 0x20, 0x20, "Unknown 3-5" )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0xc0, 0xc0, "Unknown 3-6&7" )
PORT_DIPSETTING( 0xc0, "0" )
PORT_DIPSETTING( 0x80, "1" )
PORT_DIPSETTING( 0x40, "2" )
PORT_DIPSETTING( 0x00, "3" )
PORT_START("DSW2")
PORT_DIPNAME( 0x03, 0x03, "Unknown 2-0&1" )
PORT_DIPSETTING( 0x03, "1" )
PORT_DIPSETTING( 0x02, "2" )
PORT_DIPSETTING( 0x01, "5" )
PORT_DIPSETTING( 0x00, "10" )
PORT_DIPNAME( 0x04, 0x04, "Unknown 2-2" )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, "Unknown 2-3" )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x30, 0x30, "Odds Rate" )
PORT_DIPSETTING( 0x30, "2 5 6 20 50 100" )
PORT_DIPSETTING( 0x20, "2 5 6 20 50 200" )
PORT_DIPSETTING( 0x10, "2 5 6 20 50 250" )
PORT_DIPSETTING( 0x00, "2 5 6 20 50 300" )
PORT_DIPNAME( 0xc0, 0xc0, "Unknown 2-6&7" )
PORT_DIPSETTING( 0xc0, "50" )
PORT_DIPSETTING( 0x80, "60" )
PORT_DIPSETTING( 0x40, "70" )
PORT_DIPSETTING( 0x00, "80" )
PORT_START("DSW1")
PORT_DIPNAME( 0x07, 0x07, "Unknown 1-0&1&2" )
PORT_DIPSETTING( 0x07, "0" )
PORT_DIPSETTING( 0x06, "1" )
PORT_DIPSETTING( 0x05, "2" )
PORT_DIPSETTING( 0x04, "3" )
PORT_DIPSETTING( 0x03, "4" )
PORT_DIPSETTING( 0x02, "5" )
PORT_DIPSETTING( 0x01, "6" )
PORT_DIPSETTING( 0x00, "7" )
PORT_DIPNAME( 0x08, 0x08, "Unknown 1-3" )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, "Unknown 1-4" )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x60, 0x60, "Unknown 1-5&6" )
PORT_DIPSETTING( 0x60, "0" )
PORT_DIPSETTING( 0x40, "1" )
PORT_DIPSETTING( 0x20, "2" )
PORT_DIPSETTING( 0x00, "3" )
PORT_DIPNAME( 0x80, 0x80, "Unknown 1-7" )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW5")
PORT_DIPNAME( 0x01, 0x00, "Control Panel" )
PORT_DIPSETTING( 0x00, "Hanafuda" )
PORT_DIPSETTING( 0x01, "Mahjong" ) // Requires different inputs
PORT_SERVICE( 0x02, IP_ACTIVE_LOW )
PORT_DIPNAME( 0x04, 0x04, "Unknown 2-8" )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, "Unknown 2-9" )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, "Unknown 3-8" )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, "Unknown 3-9" )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, "Unknown 4-8" )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Flip_Screen ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
static INPUT_PORTS_START( mjmyornt )
PORT_START("SYSTEM")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE3 ) // medal out
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN)
PORT_SERVICE_NO_TOGGLE(0x04, IP_ACTIVE_LOW)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) // analyzer
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE2 ) // data clear
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) // note
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN)
PORT_START("KEY0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) // A
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) // E
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I ) // I
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) // M
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) // Kan
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 ) // Start 1
PORT_START("KEY1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B ) // B
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F ) // F
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J ) // J
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N ) // N
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) // Reach
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) // BET
PORT_START("KEY2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C ) // C
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G ) // G
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K ) // K
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) // Chi
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) // Ron
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_START("KEY3")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D ) // D
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H ) // H
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L ) // L
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) // Pon
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_START("KEY4")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) // "l"
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) // "t"
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) // "w"
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) // Flip Flop
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) // "b"
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) // "s"
PORT_START("DSW1")
PORT_DIPNAME( 0x0f, 0x07, "Pay Out Rate (%)" )
PORT_DIPSETTING( 0x00, "50" )
PORT_DIPSETTING( 0x01, "53" )
PORT_DIPSETTING( 0x02, "56" )
PORT_DIPSETTING( 0x03, "59" )
PORT_DIPSETTING( 0x04, "62" )
PORT_DIPSETTING( 0x05, "65" )
PORT_DIPSETTING( 0x06, "68" )
PORT_DIPSETTING( 0x07, "71" )
PORT_DIPSETTING( 0x08, "75" )
PORT_DIPSETTING( 0x09, "78" )
PORT_DIPSETTING( 0x0a, "81" )
PORT_DIPSETTING( 0x0b, "84" )
PORT_DIPSETTING( 0x0c, "87" )
PORT_DIPSETTING( 0x0d, "90" )
PORT_DIPSETTING( 0x0e, "93" )
PORT_DIPSETTING( 0x0f, "96" )
PORT_DIPNAME( 0x30, 0x30, "Odds Rate" )
PORT_DIPSETTING( 0x20, "2 3 6 8 12 15 30 50" )
PORT_DIPSETTING( 0x30, "1 2 4 8 12 16 24 32" )
PORT_DIPSETTING( 0x00, "1 2 3 5 8 15 30 50" )
PORT_DIPSETTING( 0x10, "1 2 3 5 10 25 50 100" )
PORT_DIPNAME( 0xc0, 0xc0, "Max Bet" )
PORT_DIPSETTING( 0xc0, "1" )
PORT_DIPSETTING( 0x80, "5" )
PORT_DIPSETTING( 0x40, "10" )
PORT_DIPSETTING( 0x00, "20" )
PORT_START("DSW2")
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )
PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x01, DEF_STR( 1C_5C ) )
PORT_DIPSETTING( 0x00, "1 Coin/10 Credits" )
PORT_DIPNAME( 0x0c, 0x0c, "Min Rate To Play" )
PORT_DIPSETTING( 0x0c, "1" )
// PORT_DIPSETTING( 0x08, "2" ) // ? these don't let you start a game
// PORT_DIPSETTING( 0x04, "3" )
// PORT_DIPSETTING( 0x00, "5" )
PORT_DIPNAME( 0x70, 0x70, "YAKUMAN Bonus" )
PORT_DIPSETTING( 0x70, "Cut" )
PORT_DIPSETTING( 0x60, "1 T" )
PORT_DIPSETTING( 0x50, "300" )
PORT_DIPSETTING( 0x40, "500" )
PORT_DIPSETTING( 0x30, "700" )
PORT_DIPSETTING( 0x20, "1000" )
PORT_DIPSETTING( 0x10, "1000?" )
PORT_DIPSETTING( 0x00, "1000?" )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW3")
PORT_DIPNAME( 0x03, 0x03, "YAKUMAN Times" )
// PORT_DIPSETTING( 0x00, "1" )
PORT_DIPSETTING( 0x03, "1" )
PORT_DIPSETTING( 0x02, "2" )
PORT_DIPSETTING( 0x01, "3?" )
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x18, 0x18, "Payout" )
PORT_DIPSETTING( 0x18, "300" )
PORT_DIPSETTING( 0x10, "500" )
PORT_DIPSETTING( 0x08, "700" )
PORT_DIPSETTING( 0x00, "1000" )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW4")
PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x00, "In Game Music" )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW5")
PORT_DIPNAME( 0x03, 0x03, "Computer Strength?" )
PORT_DIPSETTING( 0x03, "Weak" )
PORT_DIPSETTING( 0x02, DEF_STR( Normal ))
PORT_DIPSETTING( 0x01, "Strong" )
PORT_DIPSETTING( 0x00, "Very Strong" )
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, "DonDen Key" )
PORT_DIPSETTING( 0x08, "Start" )
PORT_DIPSETTING( 0x00, "Flip Flop" )
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, "Credits Per Note" )
PORT_DIPSETTING( 0x40, "5" )
PORT_DIPSETTING( 0x00, "10" )
PORT_DIPNAME( 0x80, 0x00, DEF_STR( Flip_Screen ) )
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
INPUT_PORTS_END
#ifdef UNUSED_DEFINITION
static INPUT_PORTS_START( mjmyuniv )
PORT_START("SYSTEM")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE3 ) // medal out
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN)
PORT_SERVICE_NO_TOGGLE(0x04, IP_ACTIVE_LOW)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) // analyzer
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE2 ) // data clear
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) // note
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN)
PORT_START("KEY0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) // A
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) // E
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I ) // I
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) // M
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) // Kan
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 ) // Start 1
PORT_START("KEY1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B ) // B
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F ) // F
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J ) // J
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N ) // N
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) // Reach
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) // BET
PORT_START("KEY2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C ) // C
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G ) // G
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K ) // K
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) // Chi
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) // Ron
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_START("KEY3")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D ) // D
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H ) // H
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L ) // L
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) // Pon
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_START("KEY4")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) // "l"
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) // "t"
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) // "w"
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) // Flip Flop
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) // "b"
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) // "s"
PORT_START("DSW1")
PORT_DIPNAME( 0x0f, 0x07, "Pay Out Rate (%)" )
PORT_DIPSETTING( 0x00, "50" )
PORT_DIPSETTING( 0x01, "53" )
PORT_DIPSETTING( 0x02, "56" )
PORT_DIPSETTING( 0x03, "59" )
PORT_DIPSETTING( 0x04, "62" )
PORT_DIPSETTING( 0x05, "65" )
PORT_DIPSETTING( 0x06, "68" )
PORT_DIPSETTING( 0x07, "71" )
PORT_DIPSETTING( 0x08, "75" )
PORT_DIPSETTING( 0x09, "78" )
PORT_DIPSETTING( 0x0a, "81" )
PORT_DIPSETTING( 0x0b, "84" )
PORT_DIPSETTING( 0x0c, "87" )
PORT_DIPSETTING( 0x0d, "90" )
PORT_DIPSETTING( 0x0e, "93" )
PORT_DIPSETTING( 0x0f, "96" )
PORT_DIPNAME( 0x30, 0x30, "Odds Rate" )
PORT_DIPSETTING( 0x20, "2 3 6 8 12 15 30 50" )
PORT_DIPSETTING( 0x30, "1 2 4 8 12 16 24 32" )
PORT_DIPSETTING( 0x00, "1 2 3 5 8 15 30 50" )
PORT_DIPSETTING( 0x10, "1 2 3 5 10 25 50 100" )
PORT_DIPNAME( 0xc0, 0xc0, "Max Bet" )
PORT_DIPSETTING( 0xc0, "1" )
PORT_DIPSETTING( 0x80, "5" )
PORT_DIPSETTING( 0x40, "10" )
PORT_DIPSETTING( 0x00, "20" )
PORT_START("DSW2")
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )
PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x01, DEF_STR( 1C_5C ) )
PORT_DIPSETTING( 0x00, "1 Coin/10 Credits" )
PORT_DIPNAME( 0x0c, 0x0c, "Min Rate To Play" )
PORT_DIPSETTING( 0x0c, "1" )
// PORT_DIPSETTING( 0x08, "2" ) // ? these don't let you start a game
// PORT_DIPSETTING( 0x04, "3" )
// PORT_DIPSETTING( 0x00, "5" )
PORT_DIPNAME( 0x70, 0x70, "YAKUMAN Bonus" )
PORT_DIPSETTING( 0x70, "Cut" )
PORT_DIPSETTING( 0x60, "1 T" )
PORT_DIPSETTING( 0x50, "300" )
PORT_DIPSETTING( 0x40, "500" )
PORT_DIPSETTING( 0x30, "700" )
PORT_DIPSETTING( 0x20, "1000" )
PORT_DIPSETTING( 0x10, "1000?" )
PORT_DIPSETTING( 0x00, "1000?" )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW3")
PORT_DIPNAME( 0x03, 0x03, "YAKUMAN Times" )
// PORT_DIPSETTING( 0x00, "1" )
PORT_DIPSETTING( 0x03, "1" )
PORT_DIPSETTING( 0x02, "2" )
PORT_DIPSETTING( 0x01, "3?" )
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x18, 0x18, "Payout" )
PORT_DIPSETTING( 0x18, "300" )
PORT_DIPSETTING( 0x10, "500" )
PORT_DIPSETTING( 0x08, "700" )
PORT_DIPSETTING( 0x00, "1000" )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW4")
PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x00, "In Game Music" )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW5")
PORT_DIPNAME( 0x03, 0x03, "Computer Strength?" )
PORT_DIPSETTING( 0x03, "Weak" )
PORT_DIPSETTING( 0x02, DEF_STR( Normal ))
PORT_DIPSETTING( 0x01, "Strong" )
PORT_DIPSETTING( 0x00, "Very Strong" )
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, "DonDen Key" )
PORT_DIPSETTING( 0x08, "Start" )
PORT_DIPSETTING( 0x00, "Flip Flop" )
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, "Credits Per Note" )
PORT_DIPSETTING( 0x40, "5" )
PORT_DIPSETTING( 0x00, "10" )
PORT_DIPNAME( 0x80, 0x00, DEF_STR( Flip_Screen ) )
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
INPUT_PORTS_END
#endif
static INPUT_PORTS_START( akamaru )
PORT_START("P1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("P2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("SYSTEM")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) /* Test */
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SPECIAL )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL ) // blitter irq flag
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) // blitter busy flag
PORT_START("DSW1")
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )
PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) )
PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x04, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x0c, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x08, DEF_STR( 1C_2C ) )
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x10, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, "Unknown 1-5" )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Flip_Screen ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
PORT_START("DSW2")
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) )
PORT_DIPSETTING( 0x02, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x03, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x01, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
PORT_DIPNAME( 0x04, 0x04, "Unknown 2-2" )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, "Unknown 2-3" )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, "Unknown 2-4" )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, "Unknown 2-5" )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, "Unknown 2-6" )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, "Unknown 2-7" )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
static INPUT_PORTS_START( mjflove )
PORT_START("SYSTEM")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) PORT_TOGGLE
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x60, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(mjflove_blitter_r, NULL) // RTC (bit 5) & blitter irq flag (bit 6)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) // blitter busy flag
PORT_START("KEY0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) // A
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) // E
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I ) // I
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) // M
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) // Kan
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 ) // Start 1
PORT_START("KEY1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B ) // B
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F ) // F
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J ) // J
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N ) // N
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) // Reach
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) // BET
PORT_START("KEY2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C ) // C
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G ) // G
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K ) // K
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) // Chi
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) // Ron
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_START("KEY3")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D ) // D
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H ) // H
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L ) // L
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) // Pon
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_START("KEY4")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) // "l"
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) // "t"
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) // "w"
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) // Flip Flop
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) // "b"
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) // "s"
PORT_START("KEY5")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_PLAYER(2) // A
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_PLAYER(2) // E
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_PLAYER(2) // I
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_PLAYER(2) // M
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_PLAYER(2) // Kan
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 ) // Start 2
PORT_START("KEY6")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B ) PORT_PLAYER(2) // B
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_PLAYER(2) // F
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J ) PORT_PLAYER(2) // J
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N ) PORT_PLAYER(2) // N
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) PORT_PLAYER(2) // Reach
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) PORT_PLAYER(2) // BET
PORT_START("KEY7")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_PLAYER(2) // C
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G ) PORT_PLAYER(2) // G
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K ) PORT_PLAYER(2) // K
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) PORT_PLAYER(2) // Chi
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) PORT_PLAYER(2) // Ron
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_START("KEY8")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_PLAYER(2) // D
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H ) PORT_PLAYER(2) // H
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L ) PORT_PLAYER(2) // L
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_PLAYER(2) // Pon
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_START("KEY9")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) PORT_PLAYER(2) // "l"
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) PORT_PLAYER(2) // "t"
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) PORT_PLAYER(2) // "w"
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) PORT_PLAYER(2) // Flip Flop
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) PORT_PLAYER(2) // "b"
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) PORT_PLAYER(2) // "s"
PORT_START("DSW1") /* IN11 - DSW1 */
PORT_DIPNAME( 0x01, 0x01, "Unknown 2-0" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, "Unknown 2-1" )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, "Unknown 2-2" )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, "Unknown 2-3" )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, "Unknown 2-4" )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, "Unknown 2-5" )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, "Unknown 2-6" )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, "Unknown 2-7" )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW2") /* IN12 - DSW2 */
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) )
PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
PORT_DIPNAME( 0x1c, 0x1c, DEF_STR( Difficulty ) )
PORT_DIPSETTING( 0x18, "0" )
PORT_DIPSETTING( 0x14, "1" )
PORT_DIPSETTING( 0x10, "2" )
PORT_DIPSETTING( 0x1c, "3" )
PORT_DIPSETTING( 0x0c, "4" )
PORT_DIPSETTING( 0x08, "5" )
PORT_DIPSETTING( 0x04, "6" )
PORT_DIPSETTING( 0x00, "7" )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x20, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, "Unknown 1-6" )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
INPUT_PORTS_END
static INPUT_PORTS_START( hparadis )
PORT_START("P1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("P2") /* IN1 - Player 2 */
PORT_BIT( 0x3f, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("SYSTEM")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) PORT_TOGGLE
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE2 ) // analyzer
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE3 ) // data clear
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
/* keyb 1 */
PORT_START("KEY0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_HANAFUDA_A )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_E )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // I
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_HANAFUDA_YES )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // Kan
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
PORT_START("KEY1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_HANAFUDA_B )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_F )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // J
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_HANAFUDA_NO )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // Reach
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // BET
PORT_START("KEY2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_HANAFUDA_C )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_G )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // K
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) // Chi
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // Ron
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY3")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_HANAFUDA_D )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_H )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // L
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) // PON
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY4")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) // "t"
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // "w"
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) // Flip Flop
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // "b"
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // "s"
/* keyb 2 */
PORT_START("KEY5")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_HANAFUDA_A ) PORT_PLAYER(2)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_E ) PORT_PLAYER(2)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // I
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_HANAFUDA_YES ) PORT_PLAYER(2)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // Kan
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
PORT_START("KEY6")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_HANAFUDA_B ) PORT_PLAYER(2)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_F ) PORT_PLAYER(2)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // J
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_HANAFUDA_NO ) PORT_PLAYER(2)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // Reach
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // BET
PORT_START("KEY7")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_HANAFUDA_C ) PORT_PLAYER(2)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_G ) PORT_PLAYER(2)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // K
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) // Chi
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // Ron
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY8")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_HANAFUDA_D ) PORT_PLAYER(2)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_H ) PORT_PLAYER(2)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // L
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) // PON
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("KEY9")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) // "t"
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // "w"
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) // Flip Flop
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // "b"
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // "s"
PORT_START("DSW1")
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) )
PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) )
PORT_DIPSETTING( 0x08, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x0c, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x04, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x10, DEF_STR( On ) )
PORT_DIPNAME( 0x60, 0x60, "Control Panel" )
PORT_DIPSETTING( 0x60, "Hanafuda" )
PORT_DIPSETTING( 0x40, "Mahjong" )
PORT_DIPSETTING( 0x20, DEF_STR( Joystick ) )
// PORT_DIPSETTING( 0x00, DEF_STR( Joystick ) )
PORT_DIPNAME( 0x80, 0x80, "First Chance" )
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
PORT_DIPSETTING( 0x80, DEF_STR( Yes ) )
PORT_START("DSW2")
PORT_DIPNAME( 0x03, 0x03, "Unknown 2-0&1" )
PORT_DIPSETTING( 0x03, "0" )
PORT_DIPSETTING( 0x02, "1" )
PORT_DIPSETTING( 0x01, "2" )
PORT_DIPSETTING( 0x00, "0?" )
PORT_DIPNAME( 0x04, 0x04, "Unknown 2-2" )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, "Unknown 2-3" )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, "Unknown 2-4" )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, "Unknown 2-5" )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, "Unknown 2-6" )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, "Unknown 2-7" )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW3")
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_SERVICE( 0x02, IP_ACTIVE_LOW )
PORT_DIPNAME( 0x04, 0x04, "Unknown 2-8" )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, "Unknown 2-9" )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
static INPUT_PORTS_START( sryudens )
PORT_START("SYSTEM")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE3 ) // medal out
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_SERVICE( 0x04, IP_ACTIVE_LOW )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) // analyzer
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE2 ) // data clear
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) // note
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN3 ) // note2
PORT_START("KEY0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_PLAYER(2) // A
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_PLAYER(2) // E
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_PLAYER(2) // I
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_PLAYER(2) // M
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_PLAYER(2) // Kan
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 ) // Start 2
PORT_START("KEY1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B ) PORT_PLAYER(2) // B
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_PLAYER(2) // F
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J ) PORT_PLAYER(2) // J
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N ) PORT_PLAYER(2) // N
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) PORT_PLAYER(2) // Reach
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) PORT_PLAYER(2) // BET
PORT_START("KEY2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_PLAYER(2) // C
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G ) PORT_PLAYER(2) // G
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K ) PORT_PLAYER(2) // K
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) PORT_PLAYER(2) // Chi
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) PORT_PLAYER(2) // Ron
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_START("KEY3")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_PLAYER(2) // D
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H ) PORT_PLAYER(2) // H
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L ) PORT_PLAYER(2) // L
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_PLAYER(2) // Pon
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_START("KEY4")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) PORT_PLAYER(2) // "l"
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) PORT_PLAYER(2) // "t"
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) PORT_PLAYER(2) // "w"
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) PORT_PLAYER(2) // Flip Flop
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) PORT_PLAYER(2) // "b"
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) PORT_PLAYER(2) // "s"
PORT_START("KEY5")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) // A
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) // E
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I ) // I
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) // M
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) // Kan
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 ) // Start 1
PORT_START("KEY6")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B ) // B
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F ) // F
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J ) // J
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N ) // N
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) // Reach
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) // BET
PORT_START("KEY7")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C ) // C
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G ) // G
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K ) // K
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) // Chi
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) // Ron
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_START("KEY8")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D ) // D
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H ) // H
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L ) // L
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) // Pon
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_START("KEY9")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) // "l"
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) // "t"
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) // "w"
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) // Flip Flop
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) // "b"
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) // "s"
PORT_START("DSW1")
PORT_DIPNAME( 0x0f, 0x07, "Pay Out Rate (%)" )
PORT_DIPSETTING( 0x00, "50" )
PORT_DIPSETTING( 0x01, "53" )
PORT_DIPSETTING( 0x02, "56" )
PORT_DIPSETTING( 0x03, "59" )
PORT_DIPSETTING( 0x04, "62" )
PORT_DIPSETTING( 0x05, "65" )
PORT_DIPSETTING( 0x06, "68" )
PORT_DIPSETTING( 0x07, "71" )
PORT_DIPSETTING( 0x08, "75" )
PORT_DIPSETTING( 0x09, "78" )
PORT_DIPSETTING( 0x0a, "81" )
PORT_DIPSETTING( 0x0b, "84" )
PORT_DIPSETTING( 0x0c, "87" )
PORT_DIPSETTING( 0x0d, "90" )
PORT_DIPSETTING( 0x0e, "93" )
PORT_DIPSETTING( 0x0f, "96" )
PORT_DIPNAME( 0x30, 0x30, "Odds Rate" )
PORT_DIPSETTING( 0x30, "1 2 4 8 12 16 24 32" )
PORT_DIPSETTING( 0x00, "1 2 3 5 8 15 30 50" )
PORT_DIPSETTING( 0x20, "2 3 6 8 12 15 30 50" )
PORT_DIPSETTING( 0x10, "1 2 3 5 10 25 50 100" )
// PORT_DIPSETTING( 0xxx, "1 2 3 4 5 6 8 10" )
PORT_DIPNAME( 0xc0, 0xc0, "Max Bet" )
PORT_DIPSETTING( 0xc0, "1" )
PORT_DIPSETTING( 0x80, "5" )
PORT_DIPSETTING( 0x40, "10" )
PORT_DIPSETTING( 0x00, "20" )
PORT_START("DSW2")
// PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )
// PORT_DIPSETTING( 0x02, DEF_STR( 2C_1C ) )
// PORT_DIPSETTING( 0x01, DEF_STR( 2C_2C ) )
// PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
// PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) )
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )
PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x01, DEF_STR( 1C_5C ) )
PORT_DIPSETTING( 0x00, "1 Coin/10 Credits" )
PORT_DIPNAME( 0x0c, 0x0c, "Min Rate To Play" )
PORT_DIPSETTING( 0x0c, "1" )
// PORT_DIPSETTING( 0x08, "2" ) // ? these don't let you start a game
// PORT_DIPSETTING( 0x04, "3" )
// PORT_DIPSETTING( 0x00, "5" )
PORT_DIPNAME( 0x30, 0x30, "Payout" )
PORT_DIPSETTING( 0x30, "300" )
PORT_DIPSETTING( 0x20, "500" )
PORT_DIPSETTING( 0x10, "700" )
PORT_DIPSETTING( 0x00, "1000" )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW3")
PORT_DIPNAME( 0x07, 0x07, "YAKUMAN Bonus" )
PORT_DIPSETTING( 0x07, "Cut" )
PORT_DIPSETTING( 0x06, "1 T" )
PORT_DIPSETTING( 0x05, "300" )
PORT_DIPSETTING( 0x04, "500" )
PORT_DIPSETTING( 0x03, "700" )
PORT_DIPSETTING( 0x02, "1000" )
// PORT_DIPSETTING( 0x01, "1000" )
// PORT_DIPSETTING( 0x00, "1000" )
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, "DonDen Key" )
PORT_DIPSETTING( 0x20, "Start" )
PORT_DIPSETTING( 0x00, "Flip Flop" )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW4")
PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x00, "In Game Music" )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, "Undress Girl" )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSWTOP")
PORT_DIPNAME( 0x01, 0x01, "Credits Per Note" )
PORT_DIPSETTING( 0x01, "5" )
PORT_DIPSETTING( 0x00, "10" )
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0c, "0" )
PORT_DIPSETTING( 0x00, "1" )
PORT_DIPSETTING( 0x04, "3" )
PORT_DIPSETTING( 0x08, "7" )
PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("BET")
PORT_DIPNAME( 0x40, 0x40, "Bets?" )
PORT_DIPSETTING( 0x40, "0" )
PORT_DIPSETTING( 0x00, "1" )
PORT_START("HOPPER")
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
static INPUT_PORTS_START( daimyojn )
PORT_START("SYSTEM")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE3 ) // medal out
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) PORT_TOGGLE
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) // analyzer
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE2 ) // data clear
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) // note
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN3 ) // note2
PORT_START("KEY0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_PLAYER(2) // A
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_PLAYER(2) // E
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_PLAYER(2) // I
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_PLAYER(2) // M
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_PLAYER(2) // Kan
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 ) // Start 2
PORT_START("KEY1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B ) PORT_PLAYER(2) // B
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_PLAYER(2) // F
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J ) PORT_PLAYER(2) // J
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N ) PORT_PLAYER(2) // N
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) PORT_PLAYER(2) // Reach
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) PORT_PLAYER(2) // BET
PORT_START("KEY2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_PLAYER(2) // C
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G ) PORT_PLAYER(2) // G
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K ) PORT_PLAYER(2) // K
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) PORT_PLAYER(2) // Chi
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) PORT_PLAYER(2) // Ron
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_START("KEY3")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_PLAYER(2) // D
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H ) PORT_PLAYER(2) // H
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L ) PORT_PLAYER(2) // L
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_PLAYER(2) // Pon
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_START("KEY4")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) PORT_PLAYER(2) // "l"
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) PORT_PLAYER(2) // "t"
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) PORT_PLAYER(2) // "w"
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) PORT_PLAYER(2) // Flip Flop
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) PORT_PLAYER(2) // "b"
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) PORT_PLAYER(2) // "s"
PORT_START("KEY5")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) // A
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) // E
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I ) // I
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) // M
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) // Kan
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 ) // Start 1
PORT_START("KEY6")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B ) // B
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F ) // F
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J ) // J
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N ) // N
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) // Reach
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) // BET
PORT_START("KEY7")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C ) // C
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G ) // G
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K ) // K
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) // Chi
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) // Ron
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_START("KEY8")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D ) // D
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H ) // H
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L ) // L
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) // Pon
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
PORT_START("KEY9")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) // "l"
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) // "t"
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) // "w"
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) // Flip Flop
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) // "b"
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) // "s"
PORT_START("DSW1")
PORT_DIPNAME( 0x0f, 0x07, "Pay Out Rate (%)" )
PORT_DIPSETTING( 0x00, "50" )
PORT_DIPSETTING( 0x01, "53" )
PORT_DIPSETTING( 0x02, "56" )
PORT_DIPSETTING( 0x03, "59" )
PORT_DIPSETTING( 0x04, "62" )
PORT_DIPSETTING( 0x05, "65" )
PORT_DIPSETTING( 0x06, "68" )
PORT_DIPSETTING( 0x07, "71" )
PORT_DIPSETTING( 0x08, "75" )
PORT_DIPSETTING( 0x09, "78" )
PORT_DIPSETTING( 0x0a, "81" )
PORT_DIPSETTING( 0x0b, "84" )
PORT_DIPSETTING( 0x0c, "87" )
PORT_DIPSETTING( 0x0d, "90" )
PORT_DIPSETTING( 0x0e, "93" )
PORT_DIPSETTING( 0x0f, "96" )
PORT_DIPNAME( 0x30, 0x30, "Odds Rate" )
PORT_DIPSETTING( 0x30, "1 2 4 8 12 16 24 32" )
// PORT_DIPSETTING( 0x00, "1 2 3 5 8 15 30 50" )
// PORT_DIPSETTING( 0x10, "1 2 3 5 10 25 50 100" )
// PORT_DIPSETTING( 0x20, "2 3 6 8 12 15 30 50" )
// PORT_DIPSETTING( 0x30, "2 3 6 8 12 15 30 50" )
PORT_DIPNAME( 0xc0, 0xc0, "Max Bet" )
PORT_DIPSETTING( 0xc0, "1" )
PORT_DIPSETTING( 0x80, "5" )
PORT_DIPSETTING( 0x40, "10" )
PORT_DIPSETTING( 0x00, "20" )
PORT_START("DSW2")
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )
PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x01, DEF_STR( 1C_5C ) )
PORT_DIPSETTING( 0x00, "1 Coin/10 Credits" )
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x38, 0x38, "Multiplier" )
PORT_DIPSETTING( 0x38, "1" )
PORT_DIPSETTING( 0x30, "2" )
PORT_DIPSETTING( 0x28, "3" )
PORT_DIPSETTING( 0x20, "4" )
PORT_DIPSETTING( 0x18, "5" )
PORT_DIPSETTING( 0x10, "6" )
PORT_DIPSETTING( 0x08, "7" )
PORT_DIPSETTING( 0x00, "8" )
PORT_DIPNAME( 0xc0, 0xc0, "Payout" )
PORT_DIPSETTING( 0xc0, "300" )
PORT_DIPSETTING( 0x80, "500" )
PORT_DIPSETTING( 0x40, "700" )
PORT_DIPSETTING( 0x00, "1000" )
PORT_START("DSW3")
PORT_DIPNAME( 0x07, 0x07, "YAKUMAN Bonus" )
PORT_DIPSETTING( 0x07, "Cut" )
PORT_DIPSETTING( 0x06, "1 T" )
PORT_DIPSETTING( 0x05, "300" )
PORT_DIPSETTING( 0x04, "500" )
PORT_DIPSETTING( 0x03, "700" )
PORT_DIPSETTING( 0x02, "1000" )
// PORT_DIPSETTING( 0x01, "1000" )
// PORT_DIPSETTING( 0x00, "1000" )
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW4")
PORT_SERVICE( 0x01, IP_ACTIVE_LOW )
PORT_DIPNAME( 0x02, 0x02, "DonDen Key" )
PORT_DIPSETTING( 0x02, "Start" )
PORT_DIPSETTING( 0x00, "Flip Flop" )
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW5")
PORT_DIPNAME( 0x01, 0x01, "Credits Per Note" )
PORT_DIPSETTING( 0x01, "5" )
PORT_DIPSETTING( 0x00, "10" )
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("BET")
PORT_DIPNAME( 0x40, 0x40, "Bets?" )
PORT_DIPSETTING( 0x40, "0" )
PORT_DIPSETTING( 0x00, "1" )
PORT_START("HOPPER")
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
/***************************************************************************
Machine Drivers
***************************************************************************/
static MACHINE_START( ddenlovr )
{
dynax_state *state = machine.driver_data<dynax_state>();
state->m_maincpu = machine.device("maincpu");
state->m_soundcpu = machine.device("soundcpu");
state->m_oki = machine.device<okim6295_device>("oki");
state->save_item(NAME(state->m_input_sel));
state->save_item(NAME(state->m_dsw_sel));
state->save_item(NAME(state->m_keyb));
state->save_item(NAME(state->m_coins));
state->save_item(NAME(state->m_hopper));
state->save_item(NAME(state->m_okibank));
state->save_item(NAME(state->m_rongrong_blitter_busy_select));
state->save_item(NAME(state->m_prot_val));
state->save_item(NAME(state->m_prot_16));
state->save_item(NAME(state->m_quiz365_protection));
state->save_item(NAME(state->m_mmpanic_leds));
state->save_item(NAME(state->m_funkyfig_lockout));
state->save_item(NAME(state->m_romdata));
state->save_item(NAME(state->m_palette_index));
state->save_item(NAME(state->m_hginga_rombank));
state->save_item(NAME(state->m_mjflove_irq_cause));
state->save_item(NAME(state->m_daimyojn_palette_sel));
state->save_item(NAME(state->m_palram));
state->save_item(NAME(state->m_irq_count));
}
static MACHINE_RESET( ddenlovr )
{
dynax_state *state = machine.driver_data<dynax_state>();
state->m_input_sel = 0;
state->m_dsw_sel = 0;
state->m_keyb = 0;
state->m_coins = 0;
state->m_hopper = 0;
state->m_okibank = 0;
state->m_rongrong_blitter_busy_select = 0;
state->m_prot_val = 0;
state->m_prot_16 = 0;
state->m_mmpanic_leds = 0;
state->m_funkyfig_lockout = 0;
state->m_palette_index = 0;
state->m_hginga_rombank = 0;
state->m_mjflove_irq_cause = 0;
state->m_daimyojn_palette_sel = 0;
state->m_irq_count = 0;
state->m_quiz365_protection[0] = 0;
state->m_quiz365_protection[1] = 0;
state->m_romdata[0] = 0;
state->m_romdata[1] = 0;
memset(state->m_palram, 0, ARRAY_LENGTH(state->m_palram));
}
static MACHINE_START( rongrong )
{
UINT8 *ROM = machine.region("maincpu")->base();
memory_configure_bank(machine, "bank1", 0, 0x20, &ROM[0x010000], 0x8000);
memory_configure_bank(machine, "bank2", 0, 8, &ROM[0x110000], 0x1000);
MACHINE_START_CALL(ddenlovr);
}
static MACHINE_START( mmpanic )
{
UINT8 *ROM = machine.region("maincpu")->base();
memory_configure_bank(machine, "bank1", 0, 8, &ROM[0x10000], 0x8000);
MACHINE_START_CALL(ddenlovr);
}
static MACHINE_START( funkyfig )
{
UINT8 *ROM = machine.region("maincpu")->base();
memory_configure_bank(machine, "bank1", 0, 0x10, &ROM[0x10000], 0x8000);
memory_configure_bank(machine, "bank2", 0, 8, &ROM[0x90000], 0x1000);
MACHINE_START_CALL(ddenlovr);
}
static MACHINE_START( hanakanz )
{
UINT8 *ROM = machine.region("maincpu")->base();
memory_configure_bank(machine, "bank1", 0, 0x10, &ROM[0x10000], 0x8000);
memory_configure_bank(machine, "bank2", 0, 0x10, &ROM[0x90000], 0x1000);
MACHINE_START_CALL(ddenlovr);
}
static MACHINE_START( mjmyster )
{
UINT8 *ROM = machine.region("maincpu")->base();
memory_configure_bank(machine, "bank1", 0, 8, &ROM[0x10000], 0x8000);
memory_configure_bank(machine, "bank2", 0, 8, &ROM[0x90000], 0x1000);
MACHINE_START_CALL(ddenlovr);
}
static MACHINE_START( hparadis )
{
UINT8 *ROM = machine.region("maincpu")->base();
memory_configure_bank(machine, "bank1", 0, 8, &ROM[0x10000], 0x8000);
memory_configure_bank(machine, "bank2", 0, 8, &ROM[0x50000], 0x1000);
MACHINE_START_CALL(ddenlovr);
}
static MACHINE_START( mjflove )
{
UINT8 *ROM = machine.region("maincpu")->base();
memory_configure_bank(machine, "bank1", 0, 0x10, &ROM[0x10000], 0x8000);
memory_configure_bank(machine, "bank2", 0, 8, &ROM[0x90000], 0x1000);
MACHINE_START_CALL(ddenlovr);
}
static MACHINE_START( sryudens )
{
UINT8 *ROM = machine.region("maincpu")->base();
memory_configure_bank(machine, "bank1", 0, 0x10, &ROM[0x10000], 0x8000);
memory_configure_bank(machine, "bank2", 0, 0x10, &ROM[0x90000], 0x1000);
MACHINE_START_CALL(ddenlovr);
}
/***************************************************************************
Don Den Lover Vol.1
***************************************************************************/
static MACHINE_CONFIG_START( ddenlovr, dynax_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu",M68000, XTAL_24MHz / 2)
MCFG_CPU_PROGRAM_MAP(ddenlovr_map)
MCFG_CPU_VBLANK_INT("screen", irq1_line_hold)
MCFG_MACHINE_START(ddenlovr)
MCFG_MACHINE_RESET(ddenlovr)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(336, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 5, 256-16+5-1)
MCFG_SCREEN_UPDATE(ddenlovr)
MCFG_PALETTE_LENGTH(0x100)
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
MCFG_VIDEO_START(ddenlovr)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("ymsnd", YM2413, XTAL_28_63636MHz / 8)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
MCFG_SOUND_ADD("aysnd", AY8910, XTAL_28_63636MHz / 16) // or /8 ?
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
MCFG_OKIM6295_ADD("oki", XTAL_28_63636MHz / 28, OKIM6295_PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
/* devices */
MCFG_MSM6242_ADD("rtc")
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( ddenlovj, ddenlovr )
/* basic machine hardware */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(ddenlovj_map)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( ddenlovrk, ddenlovr )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(ddenlovrk_map)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( akamaru, ddenlovr )
/* basic machine hardware */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(akamaru_map)
MACHINE_CONFIG_END
static const ay8910_interface quiz365_ay8910_interface =
{
AY8910_LEGACY_OUTPUT,
AY8910_DEFAULT_LOADS,
DEVCB_HANDLER(quiz365_input_r),
DEVCB_NULL,
DEVCB_NULL,
DEVCB_HANDLER(ddenlovr_select_w)
};
static MACHINE_CONFIG_DERIVED( quiz365, ddenlovr )
/* basic machine hardware */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(quiz365_map)
MCFG_SOUND_MODIFY("aysnd")
MCFG_SOUND_CONFIG(quiz365_ay8910_interface)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( nettoqc, ddenlovr )
/* basic machine hardware */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(nettoqc_map)
MACHINE_CONFIG_END
/***************************************************************************
Rong Rong
***************************************************************************/
/* the CPU is in Interrupt Mode 2
vector can be 0xee, 0xf8 0xfa 0xfc
rongrong: 0xf8 and 0xfa do nothing
quizchq: 0xf8 and 0xfa are very similar, they should be triggered by the blitter
0xee is vblank
0xfc is from the 6242RTC
*/
static INTERRUPT_GEN( quizchq_irq )
{
dynax_state *state = device->machine().driver_data<dynax_state>();
/* I haven't found a irq ack register, so I need this kludge to
make sure I don't lose any interrupt generated by the blitter,
otherwise quizchq would lock up. */
if (downcast<cpu_device *>(device)->input_state(0))
return;
if ((++state->m_irq_count % 60) == 0)
device_set_input_line_and_vector(device, 0, HOLD_LINE, 0xfc);
else
device_set_input_line_and_vector(device, 0, HOLD_LINE, 0xee);
}
#ifdef UNUSED_FUNCTION
static INTERRUPT_GEN( rtc_irq )
{
device_set_input_line_and_vector(device, 0, HOLD_LINE, 0xfc);
}
#endif
static MACHINE_CONFIG_START( quizchq, dynax_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz/2) /* Verified */
MCFG_CPU_PROGRAM_MAP(quizchq_map)
MCFG_CPU_IO_MAP(quizchq_portmap)
MCFG_CPU_VBLANK_INT("screen", quizchq_irq)
MCFG_MACHINE_START(rongrong)
MCFG_MACHINE_RESET(ddenlovr)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(336, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 5, 256-16+5-1)
MCFG_SCREEN_UPDATE(ddenlovr)
MCFG_PALETTE_LENGTH(0x100)
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
MCFG_VIDEO_START(ddenlovr)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("ymsnd", YM2413, XTAL_28_63636MHz/8) // 3.579545Mhz, verified
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.50)
MCFG_OKIM6295_ADD("oki", XTAL_28_63636MHz/28, OKIM6295_PIN7_HIGH) // clock frequency verified 1.022MHz, pin 7 verified high
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
/* devices */
MCFG_MSM6242_ADD("rtc")
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( rongrong, quizchq )
/* basic machine hardware */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(rongrong_map)
MCFG_CPU_IO_MAP(rongrong_portmap)
MACHINE_CONFIG_END
/***************************************************************************
Monkey Mole Panic
***************************************************************************/
/* the CPU is in Interrupt Mode 0:
RST 08 is vblank
RST 18 is from the blitter
RST 20 is from the 6242RTC
*/
static INTERRUPT_GEN( mmpanic_irq )
{
dynax_state *state = device->machine().driver_data<dynax_state>();
/* I haven't found a irq ack register, so I need this kludge to
make sure I don't lose any interrupt generated by the blitter,
otherwise the game would lock up. */
if (downcast<cpu_device *>(device)->input_state(0))
return;
if ((++state->m_irq_count % 60) == 0)
device_set_input_line_and_vector(device, 0, HOLD_LINE, 0xe7); // RST 20, clock
else
device_set_input_line_and_vector(device, 0, HOLD_LINE, 0xcf); // RST 08, vblank
}
static MACHINE_CONFIG_START( mmpanic, dynax_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", Z80, 8000000)
MCFG_CPU_PROGRAM_MAP(mmpanic_map)
MCFG_CPU_IO_MAP(mmpanic_portmap)
MCFG_CPU_VBLANK_INT("screen", mmpanic_irq)
MCFG_CPU_ADD("soundcpu", Z80, 3579545)
MCFG_CPU_PROGRAM_MAP(mmpanic_sound_map)
MCFG_CPU_IO_MAP(mmpanic_sound_portmap)
MCFG_CPU_VBLANK_INT("screen", irq0_line_hold) // NMI by main cpu
MCFG_MACHINE_START(mmpanic)
MCFG_MACHINE_RESET(ddenlovr)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(336, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 5, 256-16+5-1)
MCFG_SCREEN_UPDATE(ddenlovr)
MCFG_PALETTE_LENGTH(0x100)
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
MCFG_VIDEO_START(mmpanic) // extra layers
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("ymsnd", YM2413, 3579545)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
MCFG_SOUND_ADD("aysnd", AY8910, 3579545)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
MCFG_OKIM6295_ADD("oki", 1022720, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
/* devices */
MCFG_MSM6242_ADD("rtc")
MACHINE_CONFIG_END
/***************************************************************************
Hana Kanzashi
***************************************************************************/
/* the CPU is in Interrupt Mode 2
vector can be 0xe0, 0xe2
0xe0 is vblank
0xe2 is from the 6242RTC
*/
static INTERRUPT_GEN( hanakanz_irq )
{
dynax_state *state = device->machine().driver_data<dynax_state>();
/* I haven't found a irq ack register, so I need this kludge to
make sure I don't lose any interrupt generated by the blitter,
otherwise quizchq would lock up. */
if (downcast<cpu_device *>(device)->input_state(0))
return;
if ((++state->m_irq_count % 60) == 0)
device_set_input_line_and_vector(device, 0, HOLD_LINE, 0xe2);
else
device_set_input_line_and_vector(device, 0, HOLD_LINE, 0xe0);
}
static MACHINE_CONFIG_START( hanakanz, dynax_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu",Z80,8000000) // TMPZ84C015BF-8
MCFG_CPU_PROGRAM_MAP(hanakanz_map)
MCFG_CPU_IO_MAP(hanakanz_portmap)
MCFG_CPU_VBLANK_INT("screen", hanakanz_irq)
MCFG_MACHINE_START(hanakanz)
MCFG_MACHINE_RESET(ddenlovr)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(336, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 5, 256-11-1)
MCFG_SCREEN_UPDATE(ddenlovr)
MCFG_PALETTE_LENGTH(0x200)
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
MCFG_VIDEO_START(hanakanz) // blitter commands in the roms are shuffled around
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("ymsnd", YM2413, 3579545)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
MCFG_OKIM6295_ADD("oki", 1022720, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
/* devices */
MCFG_MSM6242_ADD("rtc")
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( hkagerou, hanakanz )
/* basic machine hardware */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_IO_MAP(hkagerou_portmap)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( mjreach1, hanakanz )
/* basic machine hardware */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_IO_MAP(mjreach1_portmap)
MACHINE_CONFIG_END
/***************************************************************************
Mahjong Chuukanejyo
***************************************************************************/
/* the CPU is in Interrupt Mode 2
vector can be 0xf8, 0xfa
0xf8 is vblank
0xfa is from the 6242RTC
*/
static INTERRUPT_GEN( mjchuuka_irq )
{
dynax_state *state = device->machine().driver_data<dynax_state>();
/* I haven't found a irq ack register, so I need this kludge to
make sure I don't lose any interrupt generated by the blitter,
otherwise quizchq would lock up. */
if (downcast<cpu_device *>(device)->input_state(0))
return;
if ((++state->m_irq_count % 60) == 0)
device_set_input_line_and_vector(device, 0, HOLD_LINE, 0xfa);
else
device_set_input_line_and_vector(device, 0, HOLD_LINE, 0xf8);
}
static MACHINE_CONFIG_DERIVED( mjchuuka, hanakanz )
/* basic machine hardware */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_IO_MAP(mjchuuka_portmap)
MCFG_CPU_VBLANK_INT("screen", mjchuuka_irq)
MCFG_SOUND_ADD("aysnd", AY8910, 1789772)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( funkyfig, mmpanic )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(funkyfig_map)
MCFG_CPU_IO_MAP(funkyfig_portmap)
MCFG_CPU_VBLANK_INT("screen", mjchuuka_irq)
MCFG_MACHINE_START(funkyfig)
MCFG_CPU_MODIFY("soundcpu")
MCFG_CPU_IO_MAP(funkyfig_sound_portmap)
MCFG_VIDEO_START(ddenlovr) // no extra layers?
MACHINE_CONFIG_END
/***************************************************************************
Mahjong The Mysterious World
***************************************************************************/
/* the CPU is in Interrupt Mode 2
vector can be 0xf8, 0xfa, 0xfc
0xf8 is vblank
0xfa and/or 0xfc are from the blitter (almost identical)
NMI triggered by the RTC
To do:
The game randomly locks up (like quizchq?) because of some lost
blitter interrupt I guess (nested blitter irqs?). Hence the hack
to trigger the blitter irq every frame.
*/
static INTERRUPT_GEN( mjmyster_irq )
{
/* I haven't found a irq ack register, so I need this kludge to
make sure I don't lose any interrupt generated by the blitter,
otherwise quizchq would lock up. */
if (downcast<cpu_device *>(device)->input_state(0))
return;
switch (cpu_getiloops(device))
{
case 0: device_set_input_line_and_vector(device, 0, HOLD_LINE, 0xf8); break;
case 1: device_set_input_line_and_vector(device, 0, HOLD_LINE, 0xfa); break;
}
}
static INTERRUPT_GEN( rtc_nmi_irq )
{
device_set_input_line(device, INPUT_LINE_NMI, PULSE_LINE);
}
static const ay8910_interface mjmyster_ay8910_interface =
{
AY8910_LEGACY_OUTPUT,
AY8910_DEFAULT_LOADS,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_NULL,
DEVCB_HANDLER(ddenlovr_select_w)
};
static MACHINE_CONFIG_DERIVED( mjmyster, quizchq )
/* basic machine hardware */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(mjmyster_map)
MCFG_CPU_IO_MAP(mjmyster_portmap)
MCFG_CPU_VBLANK_INT_HACK(mjmyster_irq, 2)
MCFG_CPU_PERIODIC_INT(rtc_nmi_irq, 1)
MCFG_MACHINE_START(mjmyster)
MCFG_SOUND_ADD("aysnd", AY8910, 3579545)
MCFG_SOUND_CONFIG(mjmyster_ay8910_interface)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
MACHINE_CONFIG_END
/***************************************************************************
Hanafuda Hana Ginga
***************************************************************************/
/* the CPU is in Interrupt Mode 2
vector can be 0xf8, 0xfa, 0xfc, 0xee
0xf8 is vblank
0xfa and/or 0xfc are from the blitter (almost identical)
0xee triggered by the RTC
*/
static INTERRUPT_GEN( hginga_irq )
{
dynax_state *state = device->machine().driver_data<dynax_state>();
/* I haven't found a irq ack register, so I need this kludge to
make sure I don't lose any interrupt generated by the blitter,
otherwise hginga would lock up. */
if (downcast<cpu_device *>(device)->input_state(0))
return;
if ((++state->m_irq_count % 60) == 0)
device_set_input_line_and_vector(device, 0, HOLD_LINE, 0xee);
else
device_set_input_line_and_vector(device, 0, HOLD_LINE, 0xf8);
}
static const ay8910_interface hginga_ay8910_interface =
{
AY8910_LEGACY_OUTPUT,
AY8910_DEFAULT_LOADS,
// A B
DEVCB_HANDLER(hginga_dsw_r), DEVCB_NULL, // R
DEVCB_NULL, DEVCB_HANDLER(ddenlovr_select_w) // W
};
static MACHINE_CONFIG_DERIVED( hginga, quizchq )
/* basic machine hardware */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(hginga_map)
MCFG_CPU_IO_MAP(hginga_portmap)
MCFG_CPU_VBLANK_INT("screen", hginga_irq)
MCFG_MACHINE_START(mjmyster)
MCFG_SOUND_ADD("aysnd", AY8910, 3579545)
MCFG_SOUND_CONFIG(hginga_ay8910_interface)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( hgokou, quizchq )
/* basic machine hardware */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(hgokou_map)
MCFG_CPU_IO_MAP(hgokou_portmap)
MCFG_CPU_VBLANK_INT("screen", hginga_irq)
MCFG_MACHINE_START(mjmyster)
MCFG_SOUND_ADD("aysnd", AY8910, 3579545)
MCFG_SOUND_CONFIG(hginga_ay8910_interface)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( hgokbang, hgokou )
/* basic machine hardware */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_IO_MAP(hgokbang_portmap)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( mjmywrld, mjmyster )
/* basic machine hardware */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(hginga_map)
MCFG_CPU_IO_MAP(mjmywrld_portmap)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( mjmyuniv, quizchq )
/* basic machine hardware */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(mjmyster_map)
MCFG_CPU_IO_MAP(mjmyster_portmap)
MCFG_CPU_VBLANK_INT_HACK(mjmyster_irq, 2)
MCFG_CPU_PERIODIC_INT(rtc_nmi_irq, 1)
MCFG_MACHINE_START(mjmyster)
MCFG_SOUND_ADD("aysnd", AY8910, 1789772)
MCFG_SOUND_CONFIG(mjmyster_ay8910_interface)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( mjmyornt, quizchq )
/* basic machine hardware */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_IO_MAP(mjmyster_portmap)
MCFG_CPU_VBLANK_INT_HACK(mjmyster_irq, 2)
MCFG_CPU_PERIODIC_INT(rtc_nmi_irq, 1)
MCFG_MACHINE_START(mjmyster)
MCFG_SOUND_ADD("aysnd", AY8910, 1789772)
MCFG_SOUND_CONFIG(mjmyster_ay8910_interface)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
MACHINE_CONFIG_END
static INTERRUPT_GEN( mjflove_irq )
{
dynax_state *state = device->machine().driver_data<dynax_state>();
state->m_mjflove_irq_cause = 1 | (1 << 1);
switch (cpu_getiloops(device))
{
case 0:
state->m_mjflove_irq_cause &= 1;
device_set_input_line(device, 0, HOLD_LINE);
break;
case 1:
state->m_mjflove_irq_cause &= 1 << 1;
device_set_input_line(device, 0, HOLD_LINE);
break;
}
}
static MACHINE_CONFIG_DERIVED( mjflove, quizchq )
/* basic machine hardware */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(rongrong_map)
MCFG_CPU_IO_MAP(mjflove_portmap)
MCFG_CPU_VBLANK_INT_HACK(mjflove_irq, 2)
MCFG_MACHINE_START(mjflove)
MCFG_VIDEO_START(mjflove) // blitter commands in the roms are shuffled around
MCFG_SOUND_ADD("aysnd", AY8910, 28636363/8)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
MACHINE_CONFIG_END
/* It runs in IM 2, thus needs a vector on the data bus:
0xee is vblank */
static INTERRUPT_GEN( hparadis_irq )
{
device_set_input_line_and_vector(device, 0, HOLD_LINE, 0xee);
}
static MACHINE_CONFIG_DERIVED( hparadis, quizchq )
/* basic machine hardware */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(hparadis_map)
MCFG_CPU_IO_MAP(hparadis_portmap)
MCFG_CPU_VBLANK_INT("screen", hparadis_irq)
MCFG_MACHINE_START(hparadis)
MACHINE_CONFIG_END
static MACHINE_CONFIG_START( jongtei, dynax_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu",Z80, XTAL_20MHz / 2) // ?
MCFG_CPU_PROGRAM_MAP(hanakanz_map)
MCFG_CPU_IO_MAP(jongtei_portmap)
MCFG_CPU_VBLANK_INT("screen", hanakanz_irq)
MCFG_MACHINE_START(hanakanz)
MCFG_MACHINE_RESET(ddenlovr)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(336, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 5, 256-11-1)
MCFG_SCREEN_UPDATE(ddenlovr)
MCFG_PALETTE_LENGTH(0x200)
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
MCFG_VIDEO_START(hanakanz) // blitter commands in the roms are shuffled around
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("ymsnd", YM2413, XTAL_28_63636MHz / 8)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
MCFG_OKIM6295_ADD("oki", XTAL_28_63636MHz / 28, OKIM6295_PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
/* devices */
MCFG_MSM6242_ADD("rtc")
MACHINE_CONFIG_END
/***************************************************************************
Mahjong Seiryu Densetsu
***************************************************************************/
static MACHINE_CONFIG_START( sryudens, dynax_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu",Z80, XTAL_16MHz / 2) // ?
MCFG_CPU_PROGRAM_MAP(sryudens_map)
MCFG_CPU_IO_MAP(sryudens_portmap)
MCFG_CPU_VBLANK_INT("screen", mjchuuka_irq)
MCFG_MACHINE_START(sryudens)
MCFG_MACHINE_RESET(ddenlovr)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60.8532) // VSync 60.8532Hz, HSync 15.2790kHz
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(336, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 0+5, 256-12-1)
MCFG_SCREEN_UPDATE(ddenlovr)
MCFG_PALETTE_LENGTH(0x100)
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
MCFG_VIDEO_START(mjflove) // blitter commands in the roms are shuffled around
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("ymsnd", YM2413, XTAL_28_63636MHz / 8)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
MCFG_SOUND_ADD("aysnd", AY8910, XTAL_28_63636MHz / 8)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
MCFG_OKIM6295_ADD("oki", XTAL_28_63636MHz / 28, OKIM6295_PIN7_HIGH) // ?
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
/* devices */
MCFG_MSM6242_ADD("rtc")
MACHINE_CONFIG_END
/***************************************************************************
Mahjong Daimyojin
***************************************************************************/
static MACHINE_CONFIG_START( daimyojn, dynax_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu",Z80, XTAL_20MHz / 2)
MCFG_CPU_PROGRAM_MAP(hanakanz_map)
MCFG_CPU_IO_MAP(daimyojn_portmap)
MCFG_CPU_VBLANK_INT("screen", hanakanz_irq)
MCFG_MACHINE_START(mjflove)
MCFG_MACHINE_RESET(ddenlovr)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(59.7922) // HSync 15.4248kHz
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(336, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 336-1-1, 1, 256-15-1)
MCFG_SCREEN_UPDATE(ddenlovr)
MCFG_PALETTE_LENGTH(0x200)
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
MCFG_VIDEO_START(hanakanz) // blitter commands in the roms are shuffled around
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("ymsnd", YM2413, XTAL_28_63636MHz / 8)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
MCFG_OKIM6295_ADD("oki", XTAL_28_63636MHz / 28, OKIM6295_PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
/* devices */
MCFG_MSM6242_ADD("rtc")
MACHINE_CONFIG_END
/***************************************************************************
Monkey Mole Panic
Nakanihon/Taito 1992
7001A 5563 6242
6295 7002
Z80
8910 5563 16MHz
DynaX NL-001 7003 14.318MHz
Z80 24 MHz
2018
DynaX 524256 524256 DynaX
1108 524256 524256 1427
DynaX 524256 524256 DynaX
1108 524256 524256 1427
8251 7006 7005 7004
The game asks players to slap buttons on a control panel and see mole-like creatures
get crunched on the eye-level video screen.
An on-screen test mode means the ticket dispenser can be adjusted from 1-99 tickets
and 15 score possibilities.
It also checks PCB EPROMs, switches and lamps, and the built-in income analyzer.
There are six levels of difficulty for one or two players.
The games are linkable (up to four) for competitive play.
***************************************************************************/
ROM_START( mmpanic )
ROM_REGION( 0x50000, "maincpu", 0 ) /* Z80 Code */
ROM_LOAD( "nwc7002a", 0x00000, 0x40000, CRC(725b337f) SHA1(4d1f1ebc4de524d959dde60498d3f7038c7f3ed2) )
ROM_RELOAD( 0x10000, 0x40000 )
ROM_REGION( 0x20000, "soundcpu", 0 ) /* Z80 Code */
ROM_LOAD( "nwc7003", 0x00000, 0x20000, CRC(4f02ce44) SHA1(9a3abd9c555d5863a2110d84d1a3f582ba9d56b9) ) // 1xxxxxxxxxxxxxxxx = 0xFF
ROM_REGION( 0x280000, "blitter", 0 ) /* blitter data */
ROM_LOAD( "nwc7004", 0x000000, 0x100000, CRC(5b4ad8c5) SHA1(a92a0bef01c71e745597ec96e7b8aa0ec26dc59d) )
ROM_LOAD( "nwc7005", 0x100000, 0x100000, CRC(9ec41956) SHA1(5a92d725cee7052e1c3cd671b58795125c6a4ea9) )
ROM_LOAD( "nwc7006a", 0x200000, 0x080000, CRC(9099c571) SHA1(9762612f41384602d545d2ec6dabd5f077d5fe21) )
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
ROM_LOAD( "nwc7001a", 0x00000, 0x40000, CRC(1ae3660d) SHA1(c4711f00a30f7d2c80fe241d7e0a464f0bb2555f) )
ROM_END
/***************************************************************************
Animalandia Jr.
Taito/Nakanihon, 1993
A wack-a-mole type kids game using 9 buttons
PCB Layout
----------
N7006018l1-3
|----------------------------------------------------|
|HA1384 VOL 7501S 5563 M6242 BATTERY |
| 358 PAL M6295 7502S 32.768kHz |
| |
| VOL Z80-1 |
| 358 16MHz |
| YM2413 |
|J AY3-8910 14.31818MHz|
|A |
|M NL-001 5563 |
|M 7503S 24MHz |
|A 2018 Z80-2 |
| |
| NL-003 |
| NL-004 524256 524256 |
| 524256 524256 NL-003 |
| DSW1(10) 524256 524256 |
| NL-004 524256 524256 PAL |
|75179 DSW2(10) |
|TMP82C51 7506S 7505 7504 |
|----------------------------------------------------|
Notes:
Z80-1 clock - 8.000MHz [16/2]
Z80-2 clock - 3.579545MHz [14.31818/4]
M6295 clock- 1.02272MHz [14.31818/14]. Sample rate = 2000000 / 132
AY3-8910 clock - 1.7897725MHz [14.31818/8]
YM2413 clock - 3.579545MHz [14.31818/4]
VSync - \
HSync - / No reading, dead PCB
Z80 x2
OSC 24MHz, 14.31818MHz, 16MHz
Oki M6295 + YM2413 + AY-3-8910
Oki 6242 + 3.6v battery + 32.768kHz (rtc)
Toshiba TMP82C51 (USART)
Custom ICs NL-004 (x2), NL-003 (x2), NL-001
RAM 8kx8 near 7502S
RAM 8kx8 near 7503S
RAM 2kx8 near NL-001
RAM 32kx8 (x8) near NL-003 & NL-003
DIPs 10-position (x2)
PAL near 7504
PAL near 7501S
probably 7501S is damaged, I can not get a consistent read. 10 reads supplied for comparison.
***************************************************************************/
ROM_START( animaljr ) /* English version */
ROM_REGION( 0x50000, "maincpu", 0 ) /* Z80 Code */
ROM_LOAD( "7502a.2e", 0x00000, 0x40000, CRC(78aa0f24) SHA1(5ae8cd27ddbd4d0d40112010d7c1ce3d55e02173) )
ROM_RELOAD( 0x10000, 0x40000 )
ROM_REGION( 0x20000, "soundcpu", 0 ) /* Z80 Code */
ROM_LOAD( "7503a.8e", 0x00000, 0x20000, CRC(a7032aae) SHA1(13f61b7e631b75f7af36f670c181614631801048) ) // 1xxxxxxxxxxxxxxxx = 0xFF
ROM_REGION( 0x200000, "blitter", 0 ) /* blitter data */
ROM_LOAD( "7504.17b", 0x000000, 0x100000, CRC(b62de6a3) SHA1(62abf09b52844d3b3325e8931cb572c15581964f) )
ROM_LOAD( "7505.17d", 0x100000, 0x080000, CRC(729b073f) SHA1(8e41fafc47adbe76452e92ab1459536a5a46784d) )
ROM_LOAD( "7506a.17f", 0x180000, 0x080000, CRC(21fb7d86) SHA1(1323225d64903a07f180673556463df5e60039eb) )
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
ROM_LOAD( "7501a.1h", 0x00000, 0x40000, CRC(52174727) SHA1(974029774eb8951d54f1eb4efa4f336e460456aa) )
ROM_REGION( 0x0200, "plds", 0 )
ROM_LOAD( "n75a.2j", 0x0000, 0x0117, CRC(0191d68d) SHA1(0b792708c8e9e84a6e07485c7723376cc58f64a6) ) /* lattice GAL16V8A-25LP */
ROM_LOAD( "n75b.15b", 0x0000, 0x0117, CRC(c6365977) SHA1(c55a5a0771aa299eec55263657f12cb3d756fac5) ) /* lattice GAL16V8A-25LP */
ROM_END
ROM_START( animaljrs ) /* Spanish version */
ROM_REGION( 0x50000, "maincpu", 0 ) /* Z80 Code */
ROM_LOAD( "7502s.2e", 0x00000, 0x40000, CRC(4b14a4be) SHA1(79f7207f7311c627ece1a0d8571b4bddcdefb336) )
ROM_RELOAD( 0x10000, 0x40000 )
ROM_REGION( 0x20000, "soundcpu", 0 ) /* Z80 Code */
ROM_LOAD( "7503s.8e", 0x00000, 0x20000, CRC(d1fac899) SHA1(dde2824d73b13c18b83e4c4b63fe7835bce87ea4) ) // 1xxxxxxxxxxxxxxxx = 0xFF
ROM_REGION( 0x200000, "blitter", 0 ) /* blitter data */
ROM_LOAD( "7504.17b", 0x000000, 0x100000, CRC(b62de6a3) SHA1(62abf09b52844d3b3325e8931cb572c15581964f) )
ROM_LOAD( "7505.17d", 0x100000, 0x080000, CRC(729b073f) SHA1(8e41fafc47adbe76452e92ab1459536a5a46784d) )
ROM_LOAD( "7506s.17f", 0x180000, 0x080000, CRC(1be1ae17) SHA1(57bf9bcd9df49cdbb1311ec9e850cb1a141e5069) )
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
ROM_LOAD( "7501s.1h", 0x00000, 0x40000, BAD_DUMP CRC(59debb66) SHA1(9021722d3f8956946f102eddc7c676e1ef41574e) )
ROM_END
ROM_START( animaljrj ) /* Japanese version */
ROM_REGION( 0x50000, "maincpu", 0 ) /* Z80 Code */
ROM_LOAD( "nwc_7502.2e", 0x00000, 0x40000, CRC(c526cf56) SHA1(466378125c06de1475de37c2e0b80c7522b82308) )
ROM_RELOAD( 0x10000, 0x40000 )
ROM_REGION( 0x20000, "soundcpu", 0 ) /* Z80 Code */
ROM_LOAD( "nwc_7503.8e", 0x00000, 0x20000, CRC(9c27e0b6) SHA1(e904725912391a776ef22cc79e25b9c8cf90ebf6) ) // 1xxxxxxxxxxxxxxxx = 0xFF
ROM_REGION( 0x200000, "blitter", 0 ) /* blitter data */
ROM_LOAD( "nwc_7504.17b", 0x000000, 0x100000, CRC(b62de6a3) SHA1(62abf09b52844d3b3325e8931cb572c15581964f) )
ROM_LOAD( "nwc_7505.17d", 0x100000, 0x080000, CRC(729b073f) SHA1(8e41fafc47adbe76452e92ab1459536a5a46784d) )
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
ROM_LOAD( "nwc_7501.1h", 0x00000, 0x40000, CRC(c821e589) SHA1(45ece97a1cd5114871ff07d2593057635d928959) )
ROM_END
/***************************************************************************
Quiz Channel Question (JPN ver.)
(c)1993 Nakanihon
N7311208L1-2
N73SUB
CPU: TMPZ84C015BF-8
Sound: YM2413
M6295 - 1.022Mhz pin 7 HI? (unverified from jpn ver)
OSC: 16MHz
28.6363MHz
32.768KHz ?
Custom: NL-002 - Nakanihon
(1108F0405) - Dynax
(1427F0071) - Dynax
Others: M6242B (RTC?)
***************************************************************************/
ROM_START( quizchq )
ROM_REGION( 0x118000, "maincpu", 0 ) /* Z80 Code + space for banked RAM */
ROM_LOAD( "nwc7302.3e", 0x00000, 0x80000, CRC(14217f2d) SHA1(3cdffcf73e62586893bfaa7c47520b0698d3afda) )
ROM_RELOAD( 0x10000, 0x80000 )
ROM_LOAD( "nwc7303.4e", 0x90000, 0x80000, CRC(ffc77601) SHA1(b25c4a027e1fa4397dd86299dfe9251022b0d174) )
ROM_REGION( 0x320000, "blitter", 0 ) /* blitter data */
ROM_LOAD( "nwc7307.s4b", 0x000000, 0x80000, CRC(a09d1dbe) SHA1(f17af24293eea803ebb5c758bffb4519dcad3a71) )
ROM_LOAD( "nwc7306.s3b", 0x080000, 0x80000, CRC(52d27aac) SHA1(3c38278a5ce757ca0c4a22e4de6052132edd7cbc) )
ROM_LOAD( "nwc7305.s2b", 0x100000, 0x80000, CRC(5f50914e) SHA1(1fe5df146e028995c53a5aca896546898d7b5914) )
ROM_LOAD( "nwc7304.s1b", 0x180000, 0x80000, CRC(72866919) SHA1(12b0c95f98c8c76a47e561e1d5035b62f1ec0789) )
ROM_LOAD( "nwc7310.s4a", 0x200000, 0x80000, CRC(5939aeab) SHA1(6fcf63d6801cb506822a6d06b7bce45ecbb0b4dd) )
ROM_LOAD( "nwc7309.s3a", 0x280000, 0x80000, CRC(88c863b2) SHA1(60e5098c84ffb302abce788a064c323bece9cc6b) )
ROM_LOAD( "nwc7308.s2a", 0x300000, 0x20000, CRC(6eb5c81d) SHA1(c8e31e246e1235c045f5a881c6db43a2aff848ff) )
ROM_REGION( 0x80000, "oki", 0 ) /* Samples */
ROM_LOAD( "nwc7301.1f", 0x00000, 0x80000, CRC(52c672e8) SHA1(bc05155f4d9c711cc2ed187a4dd2207b886452f0) ) // 2 banks
ROM_END
/***************************************************************************
Quiz Channel Question (Chinese ver.)
(c)1993 Laxan (licensed from Nakanihon)
N7311208L1-2
N73SUB
CPU: TMPZ84C015BF-8 @8mhz (16MHz/2) (verified)
Sound: YM2413 - 3.579545MHz (28.6363/8) (verified)
M6295 - 1.022MHz (28.6363/28); pin 7 HI (verified)
OSC: 16MHz - cpu
28.6363MHz - ym2413 and m6295
32.768KHz - RTC
Custom: NL-002 - Nakanihon
(1108F0405) - Dynax
(1427F0071) - Dynax
Others: M6242B (RTC)
***************************************************************************/
ROM_START( quizchql )
ROM_REGION( 0x118000, "maincpu", 0 ) /* Z80 Code + space for banked RAM */
ROM_LOAD( "2.rom", 0x00000, 0x80000, CRC(1bf8fb25) SHA1(2f9a62654a018f19f6783be655d992c457551fc9) )
ROM_RELOAD( 0x10000, 0x80000 )
ROM_LOAD( "3.rom", 0x90000, 0x80000, CRC(6028198f) SHA1(f78c3cfc0663b44655cb75928941a5ec4a57c8ba) )
ROM_REGION( 0x420000, "blitter", 0 ) /* blitter data */
ROM_LOAD( "4.rom", 0x000000, 0x80000, CRC(e6bdea31) SHA1(cb39d1d5e367ad2623c2bd0b2966541aa41bbb9b) )
ROM_LOAD( "5.rom", 0x080000, 0x80000, CRC(c243f10a) SHA1(22366a9441b8317780e85065accfa59fe1cd8258) )
ROM_LOAD( "11.rom", 0x100000, 0x80000, CRC(c9ae5880) SHA1(1bbda7293178132797dd017d71b24aba5ce57022) )
ROM_LOAD( "7.rom", 0x180000, 0x80000, CRC(a490aa4e) SHA1(05ff9982f0fb1062701063905aeeb50f37283e18) )
ROM_LOAD( "6.rom", 0x200000, 0x80000, CRC(fbf713b6) SHA1(3ce73fa30dc020053b313dca1587ef6dd8ba1690) )
ROM_LOAD( "8.rom", 0x280000, 0x80000, CRC(68d4b79f) SHA1(5937760495461dbe6a12670d631754c772171289) )
ROM_LOAD( "10.rom", 0x300000, 0x80000, CRC(d56eaf0e) SHA1(56214de0b08c7db703a9af7dfd7e2deb74f36542) )
ROM_LOAD( "9.rom", 0x380000, 0x80000, CRC(a11d535a) SHA1(5e95f07807cd2a5a0eae6cb5c70ccf4516d65124) )
ROM_LOAD( "12.rom", 0x400000, 0x20000, CRC(43f8e5c7) SHA1(de4c8cc0948b0ce9e1ddf4bea434a7640db451e2) )
ROM_REGION( 0x80000, "oki", 0 ) /* Samples */
ROM_LOAD( "1snd.rom", 0x00000, 0x80000, CRC(cebb9220) SHA1(7a2ee750f2e608a37858b849914316dc778bcae2) ) // 2 banks
ROM_END
ROM_START( quiz365 )
ROM_REGION( 0x180000, "maincpu", 0 ) /* 68000 Code */
ROM_LOAD16_BYTE( "7805.4b", 0x000000, 0x080000, CRC(70f93543) SHA1(03fb3f19b451c49359719e72baf294b2e9873307) )
ROM_LOAD16_BYTE( "7804.4d", 0x000001, 0x080000, CRC(2ae003f4) SHA1(4aafc75a68989d3a006a5959a64d589472f17474) )
ROM_LOAD16_BYTE( "7803.3b", 0x100000, 0x040000, CRC(10d315b1) SHA1(9f1bb57ba32152cca3b88fc3f841451b2b506a74) )
ROM_LOAD16_BYTE( "7802.3d", 0x100001, 0x040000, CRC(6616caa3) SHA1(3b3fda61fa62c10b4d9e07e898018ffc9fab0f91) )
ROM_REGION( 0x380000, "blitter", 0 ) /* blitter data */
ROM_LOAD( "7810.14b", 0x000000, 0x100000, CRC(4b1a4984) SHA1(581ee032b396d65cd604f39846153a4dcb296aad) )
ROM_LOAD( "7809.13b", 0x100000, 0x100000, CRC(139d52ab) SHA1(08d705301379fcb952cbb1add0e16a148e611bbb) )
ROM_LOAD( "7808.12b", 0x200000, 0x080000, CRC(a09fd4a4) SHA1(016ecbf1d27a4890dee01e1966ec5efff6eb3afe) )
ROM_LOAD( "7807.11b", 0x280000, 0x080000, CRC(988b3e84) SHA1(6c42d33c15806d1abe83994370c07ab7e446a111) )
ROM_LOAD( "7806.10b", 0x300000, 0x080000, CRC(7f9aa228) SHA1(e5b4ece2df4d85c61af1fb9fbb8530fd3b8ef35e) )
ROM_REGION( 0x100000, "oki", 0 ) /* Samples */
// piggy-backed sample roms dumped as 2 separate files
ROM_LOAD( "7801.1fu", 0x000000, 0x080000, CRC(53519d67) SHA1(c83b8504d5154c6667e25ff6e222e190ae771bc0) )
ROM_LOAD( "7801.1fd", 0x080000, 0x080000, CRC(448c58dd) SHA1(991a4e2f82d2ee9b0839a76962c00e0848623879) )
ROM_END
ROM_START( quiz365t )
ROM_REGION( 0x180000, "maincpu", 0 ) /* 68000 Code */
ROM_LOAD16_BYTE( "7805.rom", 0x000000, 0x080000, CRC(6db33222) SHA1(5f0cc9a15815252d8d5e85975ce8770717eb3ac8) )
ROM_LOAD16_BYTE( "7804.rom", 0x000001, 0x080000, CRC(46d04ace) SHA1(b6489309d7704d2382802aa0f2f7526e367667ad) )
ROM_LOAD16_BYTE( "7803.rom", 0x100000, 0x040000, CRC(5b7a78d3) SHA1(6ade16df301b57e4a7309834a47ca72300f50ffa) )
ROM_LOAD16_BYTE( "7802.rom", 0x100001, 0x040000, CRC(c3238a9d) SHA1(6b4b2ab1315fc9e2667b4f8f394e00a27923f926) )
ROM_REGION( 0x400000, "blitter", 0 ) /* blitter data */
ROM_LOAD( "7810.rom", 0x000000, 0x100000, CRC(4b1a4984) SHA1(581ee032b396d65cd604f39846153a4dcb296aad) )
ROM_LOAD( "7809.rom", 0x100000, 0x100000, CRC(139d52ab) SHA1(08d705301379fcb952cbb1add0e16a148e611bbb) )
ROM_LOAD( "7808.rom", 0x200000, 0x080000, CRC(a09fd4a4) SHA1(016ecbf1d27a4890dee01e1966ec5efff6eb3afe) )
ROM_LOAD( "7806.rom", 0x280000, 0x100000, CRC(75767c6f) SHA1(aef925dec3acfc01093d29f44e4a70f0fe28f66d) )
ROM_LOAD( "7807.rom", 0x380000, 0x080000, CRC(60fb1dfe) SHA1(35317220b6401ccb03bb4ab7d3c0b6ab7637d82a) )
ROM_REGION( 0x100000, "oki", 0 ) /* Samples */
ROM_LOAD( "7801.rom", 0x080000, 0x080000, CRC(285cc62a) SHA1(7cb3bd0ead303787964bcf7a0ecf896b6a6bfa54) ) // bank 2,3
ROM_CONTINUE( 0x000000, 0x080000 ) // bank 0,1
ROM_END
/***************************************************************************
Rong Rong
Here are the proms for Nakanihon's Rong Rong
It's a quite nice Puzzle game.
The CPU don't have any numbers on it except for this:
Nakanihon
NL-002
3J3 JAPAN
For the sound it uses A YM2413
***************************************************************************/
ROM_START( rongrong )
ROM_REGION( 0x118000, "maincpu", 0 ) /* Z80 Code + space for banked RAM */
ROM_LOAD( "8002e.3e", 0x00000, 0x80000, CRC(062fa1b6) SHA1(f15a78c4192dbc56bb6ac0f92cffee88040b0a17) )
ROM_RELOAD( 0x10000, 0x80000 )
/* 90000-10ffff empty */
ROM_REGION( 0x280000, "blitter", 0 ) /* blitter data */
ROM_LOAD( "8003.8c", 0x000000, 0x80000, CRC(f57192e5) SHA1(e33f5243028520492cd876be3e4b6a76a9b20d46) )
ROM_LOAD( "8004.9c", 0x080000, 0x80000, CRC(c8c0b5cb) SHA1(d0c99908022b7d5d484e6d1990c00f15f7d8665a) )
ROM_LOAD( "8005e.10c", 0x100000, 0x80000, CRC(11c7a23c) SHA1(96d6b82db2555f7d0df661367a7a09bd4eaecba9) )
ROM_LOAD( "8006e.11c", 0x180000, 0x80000, CRC(137e9b83) SHA1(5458f8982ce84990f0bc56f9269e46c691301ba1) )
ROM_LOAD( "8007e.12c", 0x200000, 0x80000, CRC(374a1d50) SHA1(bbbbaf048b06caaca292b9e3d4bf408ba5259ad6) )
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
ROM_LOAD( "8001w.2f", 0x00000, 0x40000, CRC(8edc87a2) SHA1(87e8ad50be025263e682cbfb5623f3a35b17118f) )
ROM_REGION( 0x0200, "plds", 0 )
ROM_LOAD( "gal16v8b.1e", 0x0000, 0x0117, CRC(cf1b6e1d) SHA1(f1db4cd0636f390d745be33026b2e9e0da599d22) )
ROM_END
/***************************************************************************
Rong Rong (Europe)
Nakanihon
Revision: 6.2.14
CPU:
1x Nakanihon NL-002-3D1 (main)
1x oscillator 28.6363MHz
1x Toshiba TMPZ84C015BF-8-9328ECZ
1x OKI M6295-3372202 (sound)
1x YM2413-9344HAAG (sound)
1x Tpshiba TD62003AP-9348K
1x DYNAX 1108F405-9401EAI
1x DYNAX 4L02F2637-9337EAI
1x DYNAX 1427F0071-9232EAI
ROMs:
1x M27C2001-12FI (8001W)(sound)
1x M27C4001-12FI (8002E)(sound)
2x TC534000AP (8003-8004)
2x M27C4001-12FI (8005E-8007E)
1x TMS 27C040-15 (8006E)
1x GAL16V8B-25LP
***************************************************************************/
ROM_START( rongrongg )
ROM_REGION( 0x118000, "maincpu", 0 ) /* Z80 Code + space for banked RAM */
ROM_LOAD( "rr_8002g.rom", 0x00000, 0x80000, CRC(9a5d2885) SHA1(9ca049085d14b1cfba6bd48adbb0b883494e7d29) )
ROM_RELOAD( 0x10000, 0x80000 )
/* 90000-10ffff empty */
ROM_REGION( 0x280000, "blitter", 0 ) /* blitter data */
ROM_LOAD( "rr_8003.rom", 0x000000, 0x80000, CRC(f57192e5) SHA1(e33f5243028520492cd876be3e4b6a76a9b20d46) )
ROM_LOAD( "rr_8004.rom", 0x080000, 0x80000, CRC(c8c0b5cb) SHA1(d0c99908022b7d5d484e6d1990c00f15f7d8665a) )
ROM_LOAD( "rr_8005g.rom", 0x100000, 0x80000, CRC(11c7a23c) SHA1(96d6b82db2555f7d0df661367a7a09bd4eaecba9) )
ROM_LOAD( "rr_8006g.rom", 0x180000, 0x80000, CRC(f3de77e6) SHA1(13839837eab6acf6f8d6a9ca08fe56c872d50e6a) )
ROM_LOAD( "rr_8007g.rom", 0x200000, 0x80000, CRC(38a8caa3) SHA1(41d6745bb340b7f8708a6b772f241989aa7fa09d) )
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
ROM_LOAD( "rr_8001w.rom", 0x00000, 0x40000, CRC(8edc87a2) SHA1(87e8ad50be025263e682cbfb5623f3a35b17118f) )
ROM_END
/***************************************************************************
Rong Rong (Japan)
(c)1994 Nakanihon (Dynax)
N8010178L1
CPU : TMPZ84C015BF-8
Sound : YM2413, M6295
OSC : 28.6363MHz, ?(near CPU)
DIPs : 10 position (x2)
Custom: NL-002
1427F0071 (10D)
4L02F2637 (10F)
1108F0405 (10H)
ROMs : 8001.2F [9fc8a367] - Samples
8002.3E [27142684] - Main program
8003.8C [f57192e5] \
8004.9C [c8c0b5cb] |
8005.10C [d1e5f74c] |- Blitter data
8006.11C [bcbd1b0b] |
8007.12C [c76cbb69] /
***************************************************************************/
ROM_START( rongrongj )
ROM_REGION( 0x118000, "maincpu", 0 ) /* Z80 Code + space for banked RAM */
ROM_LOAD( "8002.3e", 0x00000, 0x80000, CRC(27142684) SHA1(4626576d032a89b558c8542f82b286e5673f8662) )
ROM_RELOAD( 0x10000, 0x80000 )
/* 90000-10ffff empty */
ROM_REGION( 0x240000, "blitter", 0 ) /* blitter data */
ROM_LOAD( "8003.8c", 0x000000, 0x80000, CRC(f57192e5) SHA1(e33f5243028520492cd876be3e4b6a76a9b20d46) )
ROM_LOAD( "8004.9c", 0x080000, 0x80000, CRC(c8c0b5cb) SHA1(d0c99908022b7d5d484e6d1990c00f15f7d8665a) )
ROM_LOAD( "8005.10c", 0x100000, 0x80000, CRC(d1e5f74c) SHA1(808b37a4992f27768b85eea24fd868d5c9b1e1c0) )
ROM_LOAD( "8006.11c", 0x180000, 0x80000, CRC(bcbd1b0b) SHA1(9b2f990de495b8fafbed71e9649d715f30768f0e) )
ROM_LOAD( "8007.12c", 0x200000, 0x40000, CRC(c76cbb69) SHA1(691133fb4d6669106ea10880757168c45661154f) )
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
ROM_LOAD( "8001.2f", 0x00000, 0x40000, CRC(9fc8a367) SHA1(bd8c9ddb3c1c8867321ca235f2d53cdc4c837907) )
ROM_END
/***************************************************************************
Netto Quiz Champion (c) Nakanihon
CPU: 68HC000
Sound: OKI6295
Other: HN46505, unknown 68 pin, unknown 100 pin (x2), unknown 64 pin (part numbers scratched off).
PLDs: GAL16L8B (x2, protected)
RAM: TC524258BZ-10 (x5), TC55257BSPL-10 (x2), TC5588P-35
XTAL1: 16 MHz
XTAL2: 28.63636 MHz
***************************************************************************/
ROM_START( nettoqc )
ROM_REGION( 0x180000, "maincpu", 0 ) /* 68000 Code */
ROM_LOAD16_BYTE( "10305.rom", 0x000000, 0x080000, CRC(ebb14a1f) SHA1(5e4511a878d0bcede79a287fb184e912c9eb7dc5) )
ROM_LOAD16_BYTE( "10303.rom", 0x000001, 0x080000, CRC(30c114c3) SHA1(fa9c26d465d2d919e141bbc080a04ac0f87c7010) )
ROM_LOAD16_BYTE( "10306.rom", 0x100000, 0x040000, CRC(f19fe827) SHA1(37907bf3206af5f4613dc80b6bd91c87dd6645ab) )
ROM_LOAD16_BYTE( "10304.rom", 0x100001, 0x040000, CRC(da1f56e5) SHA1(76c865927ee8392dd77476a248816e04e60c784a) )
ROM_CONTINUE( 0x100001, 0x040000 ) // 1ST AND 2ND HALF IDENTICAL
ROM_REGION( 0x400000, "blitter", 0 ) /* blitter data */
ROM_LOAD( "10307.rom", 0x000000, 0x100000, CRC(c7a3b05f) SHA1(c931670c5d14f8446404ad00d785fa73d97dedfc) )
ROM_LOAD( "10308.rom", 0x100000, 0x100000, CRC(416807a1) SHA1(bccf746ddc9750e3956299fec5b3737a53b24c36) )
ROM_LOAD( "10309.rom", 0x200000, 0x100000, CRC(81841272) SHA1(659c009c41ae54d330da41922c8afd1fb293d854) )
ROM_LOAD( "10310.rom", 0x300000, 0x080000, CRC(0f790cda) SHA1(97c79b02ba95551514f8dee701bd71b53e41abf4) )
ROM_LOAD( "10311.rom", 0x380000, 0x080000, CRC(41109231) SHA1(5e2f4684fd65dcdfb61a94099e0600c23a4740b2) )
ROM_REGION( 0x100000, "oki", 0 ) /* Samples */
ROM_LOAD( "10301.rom", 0x000000, 0x080000, CRC(52afd952) SHA1(3ed6d92b78552d390ee305bb216648dbf6d63daf) )
ROM_LOAD( "10302.rom", 0x080000, 0x080000, CRC(6e2d4660) SHA1(d7924af8807f7238a7885b204a8c352ff75298b7) )
ROM_END
/***************************************************************************
Don Den Lover Vol.1 -Shiro Kuro Tsukeyo!-
(c)1995 Dynax
D1120901L8
CPU: 68000(surface scratched)
Sound: YM2413(OPLL)
YMZ284-D(AY-3-8910 without I/O ports)
M6295
OSC: 2x ?MHz (surface-scratched)
Video: HD46505SP-2(HD68B45SP)
Others: Battery, RTC 62421B
All custom chips, PALs, GALs are surface-scratched.
ROMs:
1121.2N [e2b8359e] \
1122.2M [e8619d66] -- Samples
1123.2H [d41cbed0] \
1124.2D [6a9ec557] -- Programs
1125.2B [0181f53c] \
1126.2A [17ff2df4] |
1127.3D [9c136914] |- Blitter data
1128.3C [757c9941] |
1129.3B [957bc57e] /
***************************************************************************/
ROM_START( ddenlovj )
ROM_REGION( 0x080000, "maincpu", 0 ) /* 68000 Code */
ROM_LOAD16_BYTE( "1124.2d", 0x000000, 0x040000, CRC(6a9ec557) SHA1(e1512601910a9d06e16a20e10ab7acc96a0819bd) )
ROM_LOAD16_BYTE( "1123.2h", 0x000001, 0x040000, CRC(d41cbed0) SHA1(5c80f6a6cf15518120f664a0446355e80eeb2a0f) )
ROM_REGION( 0xe80000, "blitter", 0 ) /* blitter data */
/* 000000-bfffff empty */
ROM_LOAD( "1125.2b", 0xc00000, 0x080000, CRC(0181f53c) SHA1(64a6a2f00f81f7181700b83912033a6ee8bbf73a) )
ROM_LOAD( "1126.2a", 0xc80000, 0x080000, CRC(17ff2df4) SHA1(7b6723e0a0f471698735a31aa19dc4ebabe35e8c) )
ROM_LOAD( "1127.3d", 0xd00000, 0x080000, CRC(9c136914) SHA1(ff1f9a90814523cafdaa2ed36926482b1078aa89) )
ROM_LOAD( "1128.3c", 0xd80000, 0x080000, CRC(757c9941) SHA1(31206112d4b20369b6584cae75dbe3b3e0ca9825) )
ROM_LOAD( "1129.3b", 0xe00000, 0x080000, CRC(957bc57e) SHA1(801f5cc4e9da8b46dcd9488741585a5c8c88b51a) )
ROM_REGION( 0x200000, "oki", 0 ) /* Samples */
ROM_LOAD( "1122.2m", 0x080000, 0x080000, CRC(e8619d66) SHA1(b40db5db1bd0a12cd66eb5192e53ddc5b85bd1cf) ) // bank 4, 5
ROM_LOAD( "1121.2n", 0x100000, 0x080000, CRC(e2b8359e) SHA1(d882635370405610a1707d9e39a0d8e025ad6e22) ) // bank 2, 3
ROM_END
/***************************************************************************
Don Den Lover (Korea)
Dynax, 1995
PCB Layout
----------
Top Board
N113SUB
|-----------------|
| PLCC44 |
|1F 1E 1B 1A|
| |
| |
| |
| 2E 2D 2C 2B 2A|
| |
|-----------------|
Notes:
PLCC44 - Actel A1010B CPLD
Bottom Board
|-------------------------------------|
|UPC1241 BATTERY |
|LM358 LM358 M28 6264 68000 |
|YM2413 72421 6264 |
|ULN2003 95105 PAL |
|J 24MHz |
|A M514262 |
|M M514262 |
|M 28.63636MHz M514262 |
|A 62256 M514262 |
| |
| NL-005 |
|DSW1(8) |
|-------------------------------------|
Notes:
68000 - clock 12.000MHz [24/2]
M28 - M6295 clock 1.022727143MHz [28.63636/28]. Pin7 HIGH
95105 - unknown DIP40 chip
72421 - RTC IC
YM2413- clock 3.579545MHz [28.63636/8]
VSync - 60.8516Hz
HSync - 15.2782kHz
Hardware info by Guru
***************************************************************************/
ROM_START( ddenlovrk )
ROM_REGION( 0x080000, "maincpu", 0 ) /* 68000 Code */
ROM_LOAD16_BYTE( "rom.1a", 0x000000, 0x40000, CRC(868c45f8) SHA1(023ceaa30cfa03470ef005c8b739a85ae9764e15) )
ROM_LOAD16_BYTE( "rom.1b", 0x000001, 0x40000, CRC(4fab3c90) SHA1(61a756a3ccae39f3a649371116b9d940d3b1b852) )
ROM_REGION( 0x280000, "blitter", 0 ) /* blitter data */
ROM_LOAD( "rom.2a", 0x000000, 0x80000, CRC(ee143d8e) SHA1(61a36c64d450209071e996b418adf416dfa68fd9) )
ROM_LOAD( "rom.2b", 0x080000, 0x80000, CRC(58a662be) SHA1(3e2fc167bdee74ebfa63c3b1b0d822e3d898c30c) )
ROM_LOAD( "rom.2c", 0x100000, 0x80000, CRC(f96e0708) SHA1(e910970a4203b9b1943c853e3d869dd43cdfbc2d) )
ROM_LOAD( "rom.2d", 0x180000, 0x80000, CRC(b47e27ec) SHA1(5a36e68eb7c868ce8ca9d11bd9bcaa7f101ee64f) )
ROM_LOAD( "rom.2e", 0x200000, 0x80000, CRC(7c7beef6) SHA1(f8631aaec7cc01cc6478f3fc95fdac51c5b5d226) )
ROM_REGION( 0x200000, "oki", ROMREGION_ERASE ) /* Samples */
ROM_LOAD( "rom.1e", 0x080000, 0x40000, CRC(a49318df) SHA1(d952cab857a21e7710fad5b4977b11ff3794ac4d) ) // bank 2
ROM_CONTINUE( 0x180000, 0x40000 ) // bank 6
ROM_LOAD( "rom.1f", 0x040000, 0x40000, CRC(9df4f029) SHA1(a8da9905f60910437756dede66a21c8653d98ca6) ) // bank 1
ROM_CONTINUE( 0x140000, 0x40000 ) // bank 5
ROM_END
/***************************************************************************
Don Den Lover Vol 1
(C) Dynax Inc 1995
CPU: TMP68HC000N-12
SND: OKI M6295, YM2413 (18 pin DIL), YMZ284-D (16 pin DIL. This chip is in place where a 40 pin chip is marked on PCB,
possibly a replacement for some other 40 pin YM chip?)
OSC: 28.636MHz (near large GFX chip), 24.000MHz (near CPU)
DIPS: 1 x 8 Position switch. DIP info is in Japanese !
RAM: 1 x Toshiba TC5588-35, 2 x Toshiba TC55257-10, 5 x OKI M514262-70
OTHER:
Battery
RTC 72421B 4382 (18 pin DIL)
3 X PAL's (2 on daughter-board at locations 2E & 2D, 1 on main board near CPU at location 4C)
GFX Chip - NAKANIHON NL-005 (208 pin, square, surface-mounted)
***************************************************************************/
ROM_START( ddenlovr )
ROM_REGION( 0x080000, "maincpu", 0 ) /* 68000 Code */
ROM_LOAD16_BYTE( "1134h.1a", 0x000000, 0x040000, CRC(43accdff) SHA1(3023d4a071fc877f8e4325e95e586739077ccb02) )
ROM_LOAD16_BYTE( "1133h.1c", 0x000001, 0x040000, CRC(361bf7b6) SHA1(1727112284cd1dcc1ed17ccba214cb0f8993650a) )
ROM_REGION( 0x480000, "blitter", 0 ) /* blitter data */
/* 000000-1fffff empty */
ROM_LOAD( "1135h.3h", 0x200000, 0x080000, CRC(ee143d8e) SHA1(61a36c64d450209071e996b418adf416dfa68fd9) )
ROM_LOAD( "1136h.3f", 0x280000, 0x080000, CRC(58a662be) SHA1(3e2fc167bdee74ebfa63c3b1b0d822e3d898c30c) )
ROM_LOAD( "1137h.3e", 0x300000, 0x080000, CRC(f96e0708) SHA1(e910970a4203b9b1943c853e3d869dd43cdfbc2d) )
ROM_LOAD( "1138h.3d", 0x380000, 0x080000, CRC(633cff33) SHA1(aaf9ded832ae8889f413d3734edfcde099f9c319) )
ROM_LOAD( "1139h.3c", 0x400000, 0x080000, CRC(be1189ca) SHA1(34b4102c6341ade03a1d44b6049ffa15666c6bb6) )
ROM_REGION( 0x200000, "oki", 0 ) /* Samples */
ROM_LOAD( "1131h.1f", 0x080000, 0x080000, CRC(32f68241) SHA1(585b5e0d2d959af8b57ecc0a277aeda27e5cae9c) ) // bank 2, 3
ROM_LOAD( "1132h.1e", 0x100000, 0x080000, CRC(2de6363d) SHA1(2000328e41bc0261f19e02323434e9dfdc61013a) ) // bank 4, 5
ROM_END
/*
Don Den Lover (bootleg)
PCB Layout
----------
|------------------------------------|
| ROM1 TC524258 |
| PAL PAL TC524258 |
| M6295 TC524258 |
| YM2413 6264 TC524258 PAL |
|J 28MHz TC524258 |
|A BATTERY |
|M ACTEL |
|M A1020 |
|A PAL |
| 32MHz ACTEL ROM4|
| DSW1 PAL A1020 ROM5|
| 62256 ROM2 ROM6|
| 62256 ROM3 ACTEL ROM7|
| 68000 A1020 ROM8|
|------------------------------------|
Notes:
68000 clock 14.00MHz [28/2]
YM2413 clock 3.50MHz [28/8]
M6295 clock 1.00MHz [32/32]
HSync 15.30kHz
VSync 60Hz
*/
ROM_START( ddenlovrb )
ROM_REGION( 0x080000, "maincpu", 0 ) /* 68000 Code */
ROM_LOAD16_BYTE( "rom2", 0x000000, 0x040000, CRC(cabdf78f) SHA1(789d4754c7b84964ee317b8a618f26a417f50bcc) )
ROM_LOAD16_BYTE( "rom3", 0x000001, 0x040000, CRC(36f8d05e) SHA1(78f75175541ebf377f5375ea30d80ea91f380971) )
ROM_REGION( 0x280000, "blitter", 0 ) /* blitter data */
ROM_LOAD( "rom4", 0x000000, 0x080000, CRC(ee143d8e) SHA1(61a36c64d450209071e996b418adf416dfa68fd9) )
ROM_LOAD( "rom5", 0x080000, 0x080000, CRC(58a662be) SHA1(3e2fc167bdee74ebfa63c3b1b0d822e3d898c30c) )
ROM_LOAD( "rom6", 0x100000, 0x080000, CRC(f96e0708) SHA1(e910970a4203b9b1943c853e3d869dd43cdfbc2d) )
ROM_LOAD( "rom7", 0x180000, 0x080000, CRC(b47e27ec) SHA1(5a36e68eb7c868ce8ca9d11bd9bcaa7f101ee64f) )
ROM_LOAD( "rom8", 0x200000, 0x080000, CRC(7c7beef6) SHA1(f8631aaec7cc01cc6478f3fc95fdac51c5b5d226) )
ROM_REGION( 0x200000, "oki", 0 ) /* Samples */
ROM_LOAD( "rom1", 0x000000, 0x080000, CRC(ba4723e8) SHA1(fd32b33bd43773fed083990b59a3994f4a631b04) )
ROM_END
static DRIVER_INIT( rongrong )
{
/* Rong Rong seems to have a protection that works this way:
- write 01 to port c2
- write three times to f705 (a fixed command?)
- write a parameter to f706
- read the answer back from f601
- write 00 to port c2
The parameter is read from RAM location 60d4, and the answer
is written back there. No matter what the protection device
does, it seems that making 60d4 always read 0 is enough to
bypass the protection. Actually, I'm wondering if this
version of the game might be a bootleg with the protection
patched. (both sets need this)
*/
machine.device("maincpu")->memory().space(AS_PROGRAM)->nop_read(0x60d4, 0x60d4);
}
/***************************************************************************
HANAKANZASHI
(c)1996 DYNAX.INC
CPU : Z-80 (TMPZ84C015BF-8)
SOUND : MSM6295 YM2413
REAL TIME CLOCK : MSM6242
***************************************************************************/
ROM_START( hanakanz )
ROM_REGION( 0x90000+16*0x1000, "maincpu", 0 ) /* Z80 Code */
ROM_LOAD( "50720.5b", 0x00000, 0x80000, CRC(dc40fcfc) SHA1(32c8b3d23039ac47504c881552572f2c22afa585) )
ROM_RELOAD( 0x10000, 0x80000 )
ROM_REGION( 0x300000, "blitter", 0 ) /* blitter data */
ROM_LOAD16_BYTE( "50740.8b", 0x000000, 0x80000, CRC(999e70ce) SHA1(421c137b43522fbf9f3f5aa86692dc563af86880) )
ROM_LOAD16_BYTE( "50730.8c", 0x000001, 0x80000, CRC(54e1731d) SHA1(c3f60c4412665b379b4b630ead576691d7b2a598) )
ROM_LOAD16_BYTE( "50760.10b", 0x100000, 0x80000, CRC(8fcb5da3) SHA1(86bd4f89e860cd476a026c21a87f34b7a208c539) )
ROM_LOAD16_BYTE( "50750.10c", 0x100001, 0x80000, CRC(0e58bf9e) SHA1(5e04a637fc81fd48c6e1626ec06f2f1f4f52264a) )
ROM_LOAD16_BYTE( "50780.12b", 0x200000, 0x80000, CRC(6dfd8a86) SHA1(4d0c9f2028533ebe51f2963cb776bde5c802883e) )
ROM_LOAD16_BYTE( "50770.12c", 0x200001, 0x80000, CRC(118e6baf) SHA1(8e14baa967af87a74558f80584b7d483c98112be) )
ROM_REGION( 0x80000, "oki", 0 ) /* Samples */
ROM_LOAD( "50710.1c", 0x00000, 0x80000, CRC(72ae072f) SHA1(024af2ae6aa12b7f76d12a9c589f07ec7f47e395) ) // 2 banks
ROM_END
/***************************************************************************
Hana Kagerou
(c)1996 Nakanihon (Dynax)
CPU: KL5C80A12
Sound: YM2413
M6295?
OSC: 20.000MHz
28.63636MHz
Custom: (70C160F011)
NM5101.1C samples
NM5102.5B prg.
NM5103.8C chr.
NM5104.8B
NM5105.10C
NM5106.10B
NM5107.12C
NM5108.12B
***************************************************************************/
ROM_START( hkagerou )
ROM_REGION( 0x90000+16*0x1000, "maincpu", 0 ) /* Z80 Code */
ROM_LOAD( "nm5102.5b", 0x00000, 0x80000, CRC(c56c0856) SHA1(9b3c17c80498c9fa0ea91aa876aa4853c95ebb8c) )
ROM_RELOAD( 0x10000, 0x80000 )
ROM_REGION( 0xe80000, "blitter", 0 ) /* blitter data */
ROM_LOAD16_BYTE( "nm5104.8b", 0xc00000, 0x080000, CRC(e91dd92b) SHA1(a4eb8a6237e63639da5fc1bc504c8dc2aee99ff5) )
ROM_LOAD16_BYTE( "nm5103.8c", 0xc00001, 0x080000, CRC(4d4e248b) SHA1(f981ba8a05bac59c665fb0fd201ea8ff3bd87a3c) )
ROM_LOAD16_BYTE( "nm5106.10b", 0xd00000, 0x080000, CRC(0853c32d) SHA1(120094d439f6bee05681e5d22998616639412011) )
ROM_LOAD16_BYTE( "nm5105.10c", 0xd00001, 0x080000, CRC(f109ec10) SHA1(05b86f7e02329745b6208941d5ca02d392e8526f) )
ROM_LOAD16_BYTE( "nm5108.12b", 0xe00000, 0x040000, CRC(d0a99b19) SHA1(555ba04f13e6f372f2b5fd6b6bafc9de65c78505) )
ROM_LOAD16_BYTE( "nm5107.12c", 0xe00001, 0x040000, CRC(65a0ebbd) SHA1(81c108ed647b8f8c2903c4b01c8bc314ecfd9796) )
ROM_REGION( 0x80000, "oki", 0 ) /* Samples */
ROM_LOAD( "nm5101.1c", 0x00000, 0x80000, CRC(bf7a397e) SHA1(163dfe68873bfcdf28bf11f235b3ca17e8bbf02d) ) // 2 banks
ROM_END
/***************************************************************************
Mahjong Reach Ippatsu
(c)1998 Nihon System/Dynax
CPU: KL5C80A12
Sound: YM2413
M6295
OSC: 20.000MHz
28.63636MHz
32.768KHz
Custom: (70C160F011)
Others: M6242B (RTC)
52601.1C samples
52602-N.5B prg.
52603.8C chr.
52604.8B
52605.10C
52606.10B
52607.12C
52608.12B
***************************************************************************/
ROM_START( mjreach1 )
ROM_REGION( 0x90000+16*0x1000, "maincpu", 0 ) /* Z80 Code */
ROM_LOAD( "52602-n.5b", 0x00000, 0x80000, CRC(6bef7978) SHA1(56e38448fb03e868094d75e5b7de4e4f4a4e850a) )
ROM_RELOAD( 0x10000, 0x80000 )
ROM_REGION( 0x500000, "blitter", 0 ) /* blitter data */
ROM_LOAD16_BYTE( "52604.8b", 0x000000, 0x100000, CRC(6ce01bb4) SHA1(800043d8203ab5560ed0b24e0a4e01c14b6a3ac0) )
ROM_LOAD16_BYTE( "52603.8c", 0x000001, 0x100000, CRC(16d2c169) SHA1(3e50b1109c86d0e8f931ce5a3abf20d807ebabba) )
ROM_LOAD16_BYTE( "52606.10b", 0x200000, 0x100000, CRC(07fe5dae) SHA1(221ec21c2d84497af5b769d7409f8775be933783) )
ROM_LOAD16_BYTE( "52605.10c", 0x200001, 0x100000, CRC(b5d57163) SHA1(d6480904bd72d298d48fbcb251b902b0b994cab1) )
ROM_LOAD16_BYTE( "52608.12b", 0x400000, 0x080000, CRC(2f93dde4) SHA1(8efaa920e485f50ef7f4396cc8c47dfbfc97bd01) )
ROM_LOAD16_BYTE( "52607.12c", 0x400001, 0x080000, CRC(5e685c4d) SHA1(57c99fb791429d0edb7416cffb4d1d1eb34a2813) )
ROM_REGION( 0x80000, "oki", 0 ) /* Samples */
ROM_LOAD( "52601.1c", 0x00000, 0x80000, CRC(52666107) SHA1(1e1c17b1da7ded5fc52422c7e569ef02af1ee11d) ) // 2 banks
ROM_END
/***************************************************************************
Mahjong Chuukanejyo
Dynax, 1995
PCB Layout
----------
D11107218L1
|-----------------------------------------------|
|10WAY 18WAY D12101 5.5V_BATT|
| 358 358 6606 |
| VOL 6868A |
| 16MHz |
| 95101 62256 |
| TMPZ84C015F-6 |
| D12102 |
|2 3631 |
|8 |
|W PAL |
|A 28.322MHz |
|Y |
| PAL |
| 70C160F009 |
| D12103 D12104 |
| TC524256Z-12 |
| TC524256Z-12 D12105 D12106 |
|DIP1 DIP2 TC524256Z-12 |
|DIP3 DIP4 TC524256Z-12 D12107 D12108 |
|-----------------------------------------------|
Notes:
Main CPU is Toshiba TMPZ84C015F-6 (QFP100)
95101 - Unknown 40 pin DIP, maybe equivalent to AY-3-8910?
6868A - Unknown 18 pin DIP, maybe some other sound related chip or a PIC?
3631 - Unknown 18 pin DIP, maybe RTC or a PIC?
6606 - Unknown QFP44, probably OKI M6295?
70C160F009 - QFP208 Dynax Custom
***************************************************************************/
ROM_START( mjchuuka )
ROM_REGION( 0x90000+16*0x1000, "maincpu", 0 ) /* Z80 Code */
ROM_LOAD( "d12102.5b", 0x00000, 0x80000, CRC(585a0a8e) SHA1(94b3eede36117fe0a34b61454484c72cd7f0ce6a) )
ROM_RELOAD( 0x10000, 0x80000 )
ROM_REGION( 0x300000, "blitter", ROMREGION_ERASEFF ) /* blitter data */
ROM_LOAD16_BYTE( "d12103.11c", 0x000000, 0x080000, CRC(83bfc841) SHA1(36547e737244f95004c598adeb46cebce9ab3231) )
ROM_LOAD16_BYTE( "d12104.11a", 0x000001, 0x080000, CRC(1bf6220a) SHA1(ea18fdf6e1298a3b4c91fbf6219b1edcfecaeca3) )
ROM_LOAD16_BYTE( "d12105.12c", 0x100000, 0x080000, CRC(3424c8ac) SHA1(ee48622b478d39c6bdb5a18cab204e14f7d54f7a) )
ROM_LOAD16_BYTE( "d12106.12a", 0x100001, 0x080000, CRC(9052bd09) SHA1(3e8e32dea6c0cea895b7f16883e500e487689e72) )
ROM_LOAD16_BYTE( "d12107.13c", 0x280000, 0x020000, CRC(184afa94) SHA1(57566123a6dde661770740ad7a6c364c7ef5de86) ) // 1xxxxxxxxxxxxxxxx = 0xFF
ROM_LOAD16_BYTE( "d12108.13a", 0x280001, 0x020000, CRC(f8e8558a) SHA1(69e64c83945c6462b704b6d9d0250c9d98f66859) ) // 1xxxxxxxxxxxxxxxx = 0xFF
ROM_REGION( 0x80000, "oki", 0 ) /* Samples */
ROM_LOAD( "d12101.1b", 0x00000, 0x80000, CRC(9759c65e) SHA1(cf098c07616b6d2a2ba10ff6ae0006442b675326) )
ROM_END
/***************************************************************************
Mahjong The Dai Chuuka Ken (China Version)
Dynax, 1995
PCB Layout
----------
D11107218L1 DYNAX INC. NAGOYA JAPAN
|-----------------------------------------------------|
|10-WAY 18-WAY 1 5.5V|
| 6606 x |
| MB3712 VOL 358 |
| 358 |
| 16MHz 43256 |
| 6868A |
| 95101 Z84C015 2 |
| |
|2 3631 |
|8 |
|W |
|A PAL |
|Y 28.322MHz PAL |
| |
| |---------| |
| |NAKANIHON| |
| |70C160F009 3 4 |
| 44C251 | | |
| 44C251 | | 5 6 |
| DSW1 DSW2 44C251 |---------| |
| DSW3 DSW4 44C251 7 8 |
|-----------------------------------------------------|
Notes:
PCB uses common 10-way/18-way and 28-way Mahjong pinouts
5.5V - Battery
6606 - Compatible to M6295 (QFP44)
6868A - compatible to YM2413 (DIP18)
3631 - Unknown DIP18 chip (maybe RTC?)
Z84C015 - Toshiba TMPZ84C015BF-6 Z80 compatible CPU (clock input 16.0MHz)
44C251 - Texas Instruments TMS44C251-12SD 256k x4 Dual Port VRAM (ZIP28)
95101 - Winbond 95101, compatible to AY-3-8910 (DIP40)
43256 - NEC D43256 32k x8 SRAM (DIP28)
70C160F009 - Custom Dynax graphics generator (QFP160)
All DIPSW's have 10 switches per DIPSW
All ROMs are 27C040
1 - Sound samples
2 - Main program
3,4 - Graphics
5-8 - unused DIP32 sockets
The same PCB is used with 'Mahjong Zhong Hua Er Nu', with ROM locations
as follows....
1 - D1111-A.1B
2 - D12102.5B
3 - D12103.11C
4 - D12104.11A
5 - D12105.12C
6 - D12106.12A
7 - D12107.13C
8 - D12108.13A
***************************************************************************/
ROM_START( mjdchuka )
ROM_REGION( 0x90000+16*0x1000, "maincpu", 0 ) /* Z80 Code */
ROM_LOAD( "2.5b", 0x00000, 0x80000, CRC(7957b4e7) SHA1(8b76c15694e42ff0b2ec5aeae059bf342f6bf476) )
ROM_RELOAD( 0x10000, 0x80000 )
ROM_REGION( 0x100000, "blitter", ROMREGION_ERASEFF ) /* blitter data */
ROM_LOAD16_BYTE( "3.11c", 0x000000, 0x080000, CRC(c66553c3) SHA1(6e5380fdb97cc8b52986f3a3a8cac43c0f38cf54) )
ROM_LOAD16_BYTE( "4.11a", 0x000001, 0x080000, CRC(972852fb) SHA1(157f0a772bf060efc39033b10e63a6cb1022edf6) )
ROM_REGION( 0x80000, "oki", 0 ) /* Samples */
ROM_LOAD( "1.1b", 0x00000, 0x80000, CRC(9759c65e) SHA1(cf098c07616b6d2a2ba10ff6ae0006442b675326) )
ROM_END
/***************************************************************************
The First Funky Fighter
Nakanihon, 1994
PCB Layout
----------
N7403208L-2
|------------------------------------------------------------------|
| VR1 7401 7402 32.768kHz M6242 3V_BATT|
| VR2 358 PAL M6295 TC55257 PAL |
| YM2413 TC5563 16MHz |
| 358 7403 |
| YM2149 Z80 TMPZ84C015BF-8 |
| |
|J |
|A |
|M NL-002 PAL |
|M |
|A DSW(10) |
| |
| DSW(10) |
| |
| TC5588 28.6363MHz |
| |-ROM-sub-board-N73RSUB-|
| | |
| DSW(4) |NL-005 PAL |
| SN75179 | | Sub-board contains 12 sockets.
| | 7404 7411 |----------- Only these 3 are populated.
| | 7405 7410 / |
|DB9 OMRON NL-006 TC524258BZ-10 7406 7409/ |
| G6A-474P TC524258BZ-10 TC524258BZ-10 7407 |
| TC524258BZ-10 TC524258BZ-10 7408 |
|DB9 TC524258BZ-10 PAL |
| | (on sub) |
|------------------------------------------|-----------------------|
the second halves of 7408.13b, 7409.4b, 7410.3b and 7411.2b are identical
***************************************************************************/
ROM_START( funkyfig )
ROM_REGION( 0x90000 + 0x1000*8, "maincpu", 0 ) /* Z80 Code + space for banked RAM */
ROM_LOAD( "7403.3c", 0x00000, 0x80000, CRC(ad0f5e14) SHA1(82de58d7ba35266f2d96503d72487796a9693996) )
ROM_RELOAD( 0x10000, 0x80000 )
ROM_REGION( 0x20000, "soundcpu", 0 ) /* Z80 Code */
ROM_LOAD( "7401.1h", 0x00000, 0x20000, CRC(0f47d785) SHA1(d57733db6dcfb4c2cdaad04b5d3f0f569a0e7461) ) // 1xxxxxxxxxxxxxxxx = 0xFF
ROM_REGION( 0x500000, "blitter", ROMREGION_ERASE00 ) /* blitter data */
ROM_LOAD( "7404.8b", 0x000000, 0x080000, CRC(aa4ddf32) SHA1(864890795a238ab34a85ca55a387d7e5efafccee) ) // \ 7e6f +
ROM_LOAD( "7405.9b", 0x080000, 0x080000, CRC(fc125bd8) SHA1(150578f67d89be59eeeb811c159a789e5e9c993e) ) // / 35bb = b42a OK
ROM_LOAD( "7406.10b", 0x100000, 0x080000, BAD_DUMP CRC(04a214b1) SHA1(af3e652377f5652377c7dedfad7c2677695eaf46) ) // \ af08 +
ROM_LOAD( "7407.11b", 0x180000, 0x080000, BAD_DUMP CRC(635d4052) SHA1(7bc2f20d633c69352fc2d5634349c83055c99408) ) // / 6d64 = 1c6c ERR (should be 1c68!)
ROM_LOAD( "7409.4b", 0x200000, 0x100000, CRC(064082c3) SHA1(26b0eec56b06365740b213b34e33a4b94ebc1d25) ) // \ 15bd +
ROM_LOAD( "7410.3b", 0x280000, 0x100000, CRC(0ba67874) SHA1(3d984c77a843501e1075cadcc27820a35410ea3b) ) // / 2e4c = 4409 OK
ROM_LOAD( "7408.13b", 0x300000, 0x100000, CRC(9efe4c60) SHA1(6462dca2af38517639bd2f182e68b7b1fc98a312) ) // 0f46 + 1825 = 276b OK
ROM_LOAD( "7411.2b", 0x400000, 0x100000, CRC(1e9c73dc) SHA1(ba64de6168dc626dc89d38b3f9d8991163f5e63e) ) // f248 + 1825 OK (first half)
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
ROM_LOAD( "7402.1e", 0x000000, 0x040000, CRC(5038cc34) SHA1(65618b232a6592ad36f4abbaa40625c208a015fd) )
ROM_END
/***************************************************************************
The Mysterious World
(c) 1994 DynaX
Board has a sticker labeled D7707308L1
The actual PCB is printed as D7107058L1-1
Most all chips are surface scratched
OSC: 24.000MHz, 14.318MHz
4 x 10 Switch Dipswitch
1 4 Switch Dipswitch
VR1, VR2 & Reset Switch
3.6V Ni/CD Battery
OKI M6242B - Real Time Clock
56 pin Non-JAMMA Connector
20 pin unknown Connector
36 pin unknown Connector
Sound Chips:
K-665 (OKI M6295)
YM2149F
YM2413
***************************************************************************/
ROM_START( mjmyster )
ROM_REGION( 0x90000 + 0x1000*8, "maincpu", 0 ) /* Z80 Code + space for banked RAM */
ROM_LOAD( "77t2.c3", 0x00000, 0x40000, CRC(b1427cce) SHA1(1640f5bb6275cce92e38cf3e0c788b4e65606459) )
ROM_RELOAD( 0x10000, 0x40000 )
ROM_REGION( 0x1a0000, "blitter", ROMREGION_ERASE00 ) /* blitter data */
ROM_LOAD( "77t6.b12", 0x000000, 0x080000, CRC(a287589a) SHA1(58659dd7e019d1d32efeaec548c84a7ded637c50) )
ROM_LOAD( "77t5.b11", 0x080000, 0x080000, CRC(a3475059) SHA1(ec86dcea3314b65d391a970680c021899c16449e) )
ROM_LOAD( "77t4.b10", 0x100000, 0x080000, CRC(f45c24d6) SHA1(0eca68f2ca5722717f27ac0839359966daa2715b) )
ROM_LOAD( "77t3.b9", 0x180000, 0x020000, CRC(8671165b) SHA1(23fad112909e82ac9d25dbb69bf6334f30fa6540) )
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
ROM_LOAD( "77t1.d1", 0x000000, 0x020000, CRC(09b7a9b2) SHA1(64d9ccbb726bb6c5b362afc92bca2e3db87fd454) )
ROM_END
/***************************************************************************
Mahjong The Mysterious World
Dynax, 1994
PCB Layout
----------
(no number)
|-------------------------------------------------------|
|MB3712 VOL 1.1E M6242B |
| K-665 32.768kHz PAL |
| YM2413 62256 |
| 2.3D |
| DSW5(8) YM2149 TMPZ84C015 |
| |
|M |
|A 16MHz|
|H PAL |
|J |
|O NL-002 |
|N PAL |
|G |
| 28.636MHz |
|DSW1(10) CY7C185 |
| |
|DSW2(10) 1108F0405 *** 1427F0071 3.10B |
| |
|DSW3(10) 4.11B |
| TC524256Z-10 TC524256Z-10 |
|DSW4(10) TC524256Z-10 TC524256Z-10 PAL PAL 5.12B |
|-------------------------------------------------------|
Notes:
TMPZ84C015 - Toshiba TMPZ84C015F-6 (QFP100). Clocks 16.000MHz (pins 65 & 66), 8.000MHz (pins 68 & 69)
62256 - 32k x8 SRAM (DIP28)
TC524256Z-10 - Toshiba TC524256Z-10 256k x4 Dual Port VRAM (ZIP28)
1427F0071 \ Dynax Custom ICs
1108F0405 /
NL-002 /
*** - Unknown QFP100 (surface scratched)
K-665 - == Oki M6295 (QFP44). Clock 1.02272MHz [28.636/28]. pin 7 = high
YM2149 - Clock 3.579545MHz [28.636/8]
YM2413 - Clock 3.579545MHz [28.636/8]
VSync - 61Hz
HSync - 15.27kHz
***************************************************************************/
ROM_START( mjmywrld )
ROM_REGION( 0x90000 + 0x1000*8, "maincpu", 0 ) /* Z80 Code + space for banked RAM */
ROM_LOAD( "2.3d", 0x00000, 0x40000, CRC(a1ff31fa) SHA1(f132aaf59570cbbd2c4eff3ee7bd4cec26ce2fbb) )
ROM_RELOAD( 0x10000, 0x40000 )
ROM_REGION( 0x1a0000, "blitter", ROMREGION_ERASE00 ) /* blitter data */
ROM_LOAD( "5.12b", 0x000000, 0x100000, CRC(a1f26722) SHA1(604780c1df622a1fb05ea8175acfa774cbe9f6e1) )
ROM_LOAD( "4.11b", 0x100000, 0x080000, CRC(f45c24d6) SHA1(0eca68f2ca5722717f27ac0839359966daa2715b) )
ROM_LOAD( "3.10b", 0x180000, 0x020000, CRC(8671165b) SHA1(23fad112909e82ac9d25dbb69bf6334f30fa6540) )
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
ROM_LOAD( "1.1e", 0x00000, 0x20000, CRC(09b7a9b2) SHA1(64d9ccbb726bb6c5b362afc92bca2e3db87fd454) )
ROM_END
/***************************************************************************
Hanafuda Hana Ginga
Dynax, 1994
PCB Layout
----------
D8102048L1 (almost same PCB as The Mysterious World)
|-------------------------------------------------------|
|MB3712 VOL DSW1(10) M6242B 62256 SW |
| K-665 32.768kHz |
| DSW2(10) BATTERY |
| 8101.2B |
| DSW5(4) DSW3(10) PAL TMPZ84C015 |
| |
|M YM2413 DSW4(10) |
|A 16MHz|
|H YM2149 |
|J |
|O NL-002 PAL |
|N |
|G 8102.9A |
| 28.636MHz |
| CY7C185 8103.10A |
| |
| 1108F0405 *** 1427F0071 8104.11A |
| |
| |
| TC524256Z-10 TC524256Z-10 |
| TC524256Z-10 TC524256Z-10 PAL PAL |
|-------------------------------------------------------|
Notes:
TMPZ84C015 - Toshiba TMPZ84C015F-6 (QFP100). Clocks 16.000MHz (pins 65 & 66), 8.000MHz (pins 68 & 69)
62256 - 32k x8 SRAM (DIP28)
TC524256Z-10 - Toshiba TC524256Z-10 256k x4 Dual Port VRAM (ZIP28)
1427F0071 \ Dynax Custom ICs
1108F0405 /
NL-002 /
*** - Unknown QFP100 (surface scratched)
K-665 - == Oki M6295 (QFP44). Clock 1.02272MHz [28.636/28]. pin 7 = high
YM2149 - Clock 3.579545MHz [28.636/8]
YM2413 - Clock 3.579545MHz [28.636/8]
VSync - 61Hz
HSync - 15.27kHz
SW - This resets the PCB and also clears the RAM (clears credits etc)
It is used on almost all Mahjong games by Dynax and IGS
***************************************************************************/
ROM_START( hginga )
ROM_REGION( 0x90000 + 0x1000*8, "maincpu", 0 ) /* Z80 Code + space for banked RAM */
ROM_LOAD( "8101.2b", 0x00000, 0x40000, CRC(77a64b71) SHA1(3426998746c834435ff10a8d1c6502ea64a5f2e2) )
ROM_RELOAD( 0x10000, 0x40000 )
ROM_REGION( 0x180000, "blitter", ROMREGION_ERASEFF ) /* blitter data */
ROM_LOAD( "8102.9a", 0x000000, 0x80000, CRC(0074af23) SHA1(39cd978bcc34b27fc896094cf2dd3b7d4596ab00) )
ROM_LOAD( "8103.10a", 0x080000, 0x80000, CRC(a3a4ecb5) SHA1(08264cf131fd4c02d8b5925564cf8daa56e0bbc2) )
ROM_LOAD( "8104.11a", 0x100000, 0x20000, CRC(24513af9) SHA1(ee1f440b64c1f8c1efc6f0c60e25cab257407865) )
ROM_RELOAD( 0x120000, 0x20000 )
ROM_RELOAD( 0x140000, 0x20000 )
ROM_RELOAD( 0x160000, 0x20000 )
ROM_REGION( 0x40000, "oki", ROMREGION_ERASEFF ) /* Samples - none */
ROM_END
/***************************************************************************
Mahjong The Mysterious Orient
Dynax, 1994
PCB Layout
----------
D7107058L1-1
|-------------------------------------------------------|
|MB3712 VOL 7101.1E M6242B |
| K-665 32.768kHz PAL |
| YM2413 62256 |
| 7102.3D |
| DSW5(4) YM2149 TMPZ84C015 |
| |
|M |
|A 14.31818MHz|
|H PAL |
|J |
|O NL-002 |
|N PAL |
|G |
| |
|DSW1(10) 6116 |
| |
|DSW2(10) 1108F0405 1427F0071 7103.10B |
| |
|DSW3(10) 24MHz 7104.11B |
| TC524256Z-10 TC524256Z-10 |
|DSW4(10) TC524256Z-10 TC524256Z-10 PAL PAL 7105.12B |
|-------------------------------------------------------|
Notes:
TMPZ84C015 - Toshiba TMPZ84C015F-6 (QFP100). Clocks 14.31818 (pins 65 & 66), 7.15909MHz (pins 68 & 69)
62256 - 32k x8 SRAM (DIP28)
TC524256Z-10 - Toshiba TC524256Z-10 256k x4 Dual Port VRAM (ZIP28)
1427F0071 \ Dynax Custom ICs
1108F0405 /
NL-002 /
K-665 - == Oki M6295 (QFP44). Clock 1.02272MHz [14.31818/14]. pin 7 = high
YM2149 - Clock 1.7897725MHz [14.31818/8]
YM2413 - Clock 3.579545MHz [14.31818/4]
VSync - 61Hz
HSync - 15.27kHz
***************************************************************************/
ROM_START( mjmyornt )
ROM_REGION( 0x90000 + 0x1000*8, "maincpu", 0 ) /* Z80 Code + space for banked RAM */
ROM_LOAD( "7102.3d", 0x00000, 0x40000, CRC(058f779b) SHA1(97253a86b2600c295f67e566ee3c0aa693ed117e) )
ROM_RELOAD( 0x10000, 0x40000 )
ROM_REGION( 0x1a0000, "blitter", 0 ) /* blitter data */
ROM_LOAD( "7105.12b", 0x000000, 0x100000, CRC(35ca0079) SHA1(41b950b6fb9b216671d55dc399acb058ec80391f) )
ROM_LOAD( "7104.11b", 0x100000, 0x080000, CRC(6d0fd29a) SHA1(9b31668acf1790d9aecd1f8e8c0cb52a7a625d2d) )
ROM_LOAD( "7103.10b", 0x180000, 0x020000, CRC(88511487) SHA1(eae3008ecfcfa9aed667e69742b91d8e9f7302ec) )
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
ROM_LOAD( "7101.1e", 0x00000, 0x20000, CRC(09b7a9b2) SHA1(64d9ccbb726bb6c5b362afc92bca2e3db87fd454) )
ROM_END
/***************************************************************************
Mahjong The Mysterious Universe
Dynax, 1994
PCB Layout
----------
D7107058L1-1
|-------------------------------------------------------|
|MB3712 VOL 1.1E M6242B |
| K-665 32.768kHz PAL |
| YM2413 62256 |
| 2.3D |
| DSW5(8) YM2149 TMPZ84C015 |
| |
|M |
|A 14.31818MHz|
|H PAL |
|J |
|O NL-002 |
|N PAL |
|G |
| |
|DSW1(10) 6116 3.9B |
| |
|DSW2(10) 1108F0405 1427F0071 4.10B |
| |
|DSW3(10) 24MHz 5.11B |
| TC524256Z-10 TC524256Z-10 |
|DSW4(10) TC524256Z-10 TC524256Z-10 PAL PAL 6.12B |
|-------------------------------------------------------|
Notes:
TMPZ84C015 - Toshiba TMPZ84C015F-6 (QFP100). Clocks 14.31818 (pins 65 & 66), 7.15909MHz (pins 68 & 69)
62256 - 32k x8 SRAM (DIP28)
TC524256Z-10 - Toshiba TC524256Z-10 256k x4 Dual Port VRAM (ZIP28)
1427F0071 \ Dynax Custom ICs
1108F0405 /
NL-002 /
K-665 - == Oki M6295 (QFP44). Clock 1.02272MHz [14.31818/14]. pin 7 = high
YM2149 - Clock 1.7897725MHz [14.31818/8]
YM2413 - Clock 3.579545MHz [14.31818/4]
VSync - 61Hz
HSync - 15.27kHz
***************************************************************************/
ROM_START( mjmyuniv )
ROM_REGION( 0x90000 + 0x1000*8, "maincpu", 0 ) /* Z80 Code + space for banked RAM */
ROM_LOAD( "2.3d", 0x00000, 0x40000, CRC(3284d714) SHA1(be2d5c5129ba9d689e030cb53bc30ed01c941703) )
ROM_RELOAD( 0x10000, 0x40000 )
ROM_REGION( 0x600000, "blitter", 0 ) /* blitter data */
// gap
ROM_LOAD( "5.11b", 0x400000, 0x80000, CRC(a287589a) SHA1(58659dd7e019d1d32efeaec548c84a7ded637c50) )
ROM_LOAD( "6.12b", 0x480000, 0x80000, CRC(a3475059) SHA1(ec86dcea3314b65d391a970680c021899c16449e) )
ROM_LOAD( "3.9b", 0x500000, 0x80000, CRC(f45c24d6) SHA1(0eca68f2ca5722717f27ac0839359966daa2715b) )
ROM_LOAD( "4.10b", 0x580000, 0x80000, CRC(57fb94cc) SHA1(b0c7bd3fda19f877ab908c666aef79e208c5bfc3) )
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
ROM_LOAD( "1.1e", 0x00000, 0x20000, CRC(09b7a9b2) SHA1(64d9ccbb726bb6c5b362afc92bca2e3db87fd454) )
ROM_END
/***************************************************************************
Panel & Variety Akamaru Q Jousyou Dont-R
(c)1996 Dynax (distributed by B&F)
CPU: TMP68HC000N-12
Sound: YM2413, YMZ284-D, M6295 (VRx2, 1 for BGM, 1 for Voice)
OSC: 24.00000MHz (near CPU), 28.63636MHz (near sound section)
RTC: 62421B
Custom: NAKANIHON NL-005
PLD: Actel A1010B (printed NM500)
ROMs (on subboard):
50101.1H (TMS 27C040)
50102.1G (TMS 27C040)
50103.1F (TMS 27C040)
50104.1E (TMS 27C040)
50105.1D (TMS 27C040)
50106.1C (TMS 27C040)
50107.1B (TMS 27C040)
50108.1A (TMS 27C040)
50109.2H (TC538000)
50110.3H (TC538000)
50111.4H (TMS 27C040)
50112.2D (TC538000)
50113.3D (TMS 27C040)
50114.4D (TMS 27C040)
***************************************************************************/
ROM_START( akamaru )
ROM_REGION( 0x200000, "maincpu", 0 ) /* 68000 Code */
ROM_LOAD16_BYTE( "50107.1b", 0x000000, 0x080000, CRC(8364d627) SHA1(ed445561b3a35e6445d1074000621554a6f26fc4) )
ROM_LOAD16_BYTE( "50105.1d", 0x000001, 0x080000, CRC(42ff4bec) SHA1(4bab20706542056d39dfcd91314523bf0f7fff07) )
ROM_LOAD16_BYTE( "50108.1a", 0x100000, 0x080000, CRC(1520ecad) SHA1(eaf44511148252eac0c7a7aab9bd689f87e5a40f) )
ROM_LOAD16_BYTE( "50106.1c", 0x100001, 0x080000, CRC(8e081747) SHA1(ef7fb469455671ca7982c2455e8cb113c2750e30) )
ROM_REGION( 0x480000, "blitter", 0 ) /* blitter data */
ROM_LOAD( "50109.2h", 0x000000, 0x100000, CRC(cdff154d) SHA1(d9cdf159cd55fef0dd1abe07c2f19f05f63b2d1e) )
ROM_LOAD( "50112.2d", 0x100000, 0x100000, CRC(7fdd9853) SHA1(d4ada01fa49b2932d02df5eb3d3e7eaad535df0b) )
ROM_LOAD( "50110.3h", 0x200000, 0x100000, CRC(06ca4d87) SHA1(c80708df3613d36950ba5cc98d36336533ee7699) )
ROM_LOAD( "50113.3d", 0x300000, 0x080000, CRC(c9a571cd) SHA1(6493d458a8adc0774d6c0ff67ba272a8f6e9ce07) )
ROM_LOAD( "50111.4h", 0x380000, 0x080000, CRC(b2de7a3c) SHA1(12b3e59f09dbad35a7a98e55ba64041cdb341488) )
ROM_LOAD( "50114.4d", 0x400000, 0x080000, CRC(2af39dfd) SHA1(61cfced3807a80be3233d1df3eedad25b796a9cf) )
ROM_REGION( 0x300000, "oki", 0 ) /* Samples */
// bank 0, 1
ROM_LOAD( "50101.1h", 0x080000, 0x080000, CRC(6bef6cab) SHA1(bd1c7e06ac4fc9de368ad90f0a9fc602024eda35) ) // bank 2, 3
ROM_LOAD( "50102.1g", 0x100000, 0x080000, CRC(056ac348) SHA1(26c34692dc858928268299743857c69e00eb969d) ) // bank 4, 5
// bank 6, 7
ROM_LOAD( "50104.1e", 0x200000, 0x080000, CRC(790f18c1) SHA1(72c1c6f711267e1b57dedad04bac44e3e0829725) ) // bank 8, 9
ROM_LOAD( "50103.1f", 0x280000, 0x080000, CRC(aff3a753) SHA1(1ee4464107531d90a1decb85c5a0fb937dd6706b) ) // bank 10, 11
ROM_END
/***************************************************************************
Mahjong Fantasic Love
Nakanihon, 1996
PCB Layout
----------
no number (scratched off) Looks like Don Den Lover h/w
|--------------------------------------------------|
|UPC1242H BATTERY P1 |
| M6295 TC55257 |
| * |
| 72421B_RTC TC55257 |
|YM2413 YMZ284-D PAL |
| |
| |
|J |
|A 24MHz |
|M 28.63636MHz |
|M M514262 |
|A |
| M514262 |
| |--------| |
| | | M514262 |
| | NL-005 | |
| TC5588 | | M514262 |
| | | |
| |--------| M514262 |
|DSW1(8) P2 |
|--------------------------------------------------|
Notes:
* - SDIP64 socket, not populated
P1/P2 - Connector joining to ROM daughterboard
TC55257 - 32k x8 SRAM
TC5588 - 8k x8 SRAM
M514262 - OKI M514262-70Z 262144-word x 4-bit Multiport DRAM
YMZ284 - Yamaha YMZ284-D Software Controlled Melody and Effect Sound Generator (DIP16)
Software compatible with YM2149. Clock 3.579545MHz [28.63636/8]
YM2413 - OPLL FM Sound Generator (DIP18). Clock 3.579545MHz [28.63636/8]
M6295 - Clock 1.02272MHz [28.63636/28]. Pin7 HIGH
VSync - 60Hz
HSync - 15.28kHz
Top Board
---------
NS5000101
|---------------------------------|
| 16MHz |
| & * |
| |
| |
| |
| DSW1(8)|
| |
|50001 50003 50005 50007 |
| 50002 50004 50006 |
| |
| |
|50008 50010 50012 |
| 50009 50011 50013|
| |
| |
|---------------------------------|
Notes:
& - Unknown PLCC68 chip (surface scratched). Maybe CPLD/FPGA or custom? Doesn't
look like 68000 as there is no measurable clock input on any pins.
* - Unknown QFP100 (surface scratched). Clock input of 16MHz. Possibly TMPZ84C015?
***************************************************************************/
ROM_START( mjflove )
ROM_REGION( 0x90000+16*0x1000, "maincpu", 0 ) /* Z80 Code */
ROM_LOAD( "50004.2e", 0x00000, 0x80000, CRC(20afcdec) SHA1(b3e7d6083dab812a497b69a501e9d993a8ca86e7) )
ROM_RELOAD( 0x10000, 0x80000 )
ROM_REGION( 0x3c0000, "blitter", 0 ) /* blitter data */
ROM_LOAD( "50005.2d", 0x000000, 0x80000, CRC(6494d5ad) SHA1(2313ee2f897320715c3de9a0de5c66e06b763a5f) )
ROM_LOAD( "50006.2c", 0x080000, 0x80000, CRC(a1d61eb7) SHA1(4755c3843890f4682d5e5804153baba3d98ac2cc) )
ROM_LOAD( "50007.2b", 0x100000, 0x80000, CRC(d79ea2f5) SHA1(9c783ee8fe1f646ad2402676c3b924678955a964) )
ROM_LOAD( "50009.3h", 0x180000, 0x80000, CRC(cba17351) SHA1(22f901bcd7d1513a4fb56fb95f8568c842a3d42a) )
ROM_LOAD( "50013.3a", 0x200000, 0x80000, CRC(ebb7c8bd) SHA1(16b4584d2a15c092ad7b2538850a39c81a5db753) )
ROM_LOAD( "50010.3d", 0x280000, 0x80000, CRC(62c05df9) SHA1(da60ba77d2bcc560abfba9ca19586f90c07c4411) )
ROM_LOAD( "50011.3c", 0x300000, 0x80000, CRC(7e05f586) SHA1(4dd17da3922365b9a1424f270ad07c5f6848558b) )
ROM_LOAD( "50012.3b", 0x380000, 0x40000, CRC(9853e5e4) SHA1(8596459ab8614dbd2ddd068afb1b4655cbe3bb08) )
ROM_REGION( 0x200000, "oki", 0 ) /* Samples */
ROM_LOAD( "50002.2h", 0x000000, 0x80000, CRC(955034db) SHA1(190f37b77df0331243d52a60ddbd9c1398053f18) ) // 0,1
ROM_LOAD( "50003.2f", 0x080000, 0x80000, CRC(8845734a) SHA1(c44d006cdf41da0187283faa8d060ed5d2d183fd) ) // 2,3
ROM_LOAD( "50001.2j", 0x100000, 0x80000, CRC(6c0a93fd) SHA1(6a4359af79a0c18979ab15c8a2700880ec530192) ) // 4,5
ROM_LOAD( "50008.3j", 0x180000, 0x40000, CRC(4a95b5eb) SHA1(02306cb11c889772c19f1635dbd34c0d03192af1) ) // 6
ROM_RELOAD( 0x1c0000, 0x40000 )
ROM_END
/***************************************************************************
Super Hana Paradise
1995
PCB almost like Mysterious World
PCB Layout
----------
N8010178L1
|-------------------------------------------------------|
|MA1384 VOL 1011.2F |
| 62256 |
| M6295 1012.3E |
| VOL 16MHz |
| YM2413 TMPZ84C015 |
| |
|M |
|A NL-002 DSW1(10)|
|H |
|J DSW2(10)|
|O |
|N |
|G DIP32 |
| 28.636MHz |
| TC5588 DIP32 |
| |
| 1108F0406 4L02F2637 1427F0071 DIP32 |
| |
| DIP32 |
| TC524258Z-10 TC524258Z-10 |
| TC524258Z-10 TC524258Z-10 DIP32 |
|-------------------------------------------------------|
Notes:
TMPZ84C015 - Toshiba TMPZ84C015F-6 (QFP100). Clocks 16.000MHz (pins 65 & 66), 8.000MHz (pins 68 & 69)
62256 - 32k x8 SRAM (DIP28)
TC5588 - 8k x8 SRAM (DIP28)
TC524258Z-10 - Toshiba TC524258Z-10 256k x4 Dual Port VRAM (ZIP28)
1427F0071 \
1108F0406 | Dynax Custom ICs
NL-002 |
4L02F2637 /
DIP32 - Empty sockets
M6295 - Oki M6295 (QFP44). Clock 1.02272MHz [28.636/28]. pin 7 = high
YM2413 - Clock 3.579545MHz [28.636/8]
VSync - 61Hz
HSync - 15.27kHz
ROM Daughterboard N73RSUB
Contains the remaining ROMS, 1 PAL and nothing else
1013, 1014, 1015, 1016
--
Super Hana Paradise
(c)1994 Dynax
D10110258L1
CPU: TMPZ84C015BF-8
Sound: YM2413 M6295
OSC: 28.6363MHz 16AKSS
Custom: NL-002
1427F0071
4L02F2637
1108F0405
ROMs:
1011.2F
1012.3E
Subboard
1013.1A
1014.2A
1015.3A
1016.4A
***************************************************************************/
ROM_START( hparadis )
ROM_REGION( 0x50000+8*0x1000, "maincpu", 0 ) /* Z80 Code */
ROM_LOAD( "1012.3e", 0x00000, 0x40000, CRC(bd3a3a8f) SHA1(35d70c2869a93192de7041b5c90b8a8a5e910946) )
ROM_RELOAD( 0x10000, 0x40000 )
ROM_REGION( 0x600000, "blitter", 0 ) /* blitter data */
// unused
ROM_LOAD( "1015.3a", 0x400000, 0x80000, CRC(ea7b282e) SHA1(4fb33f3a8fe0dd792bcdd90894b90f1ac09ef6a5) )
ROM_LOAD( "1014.2a", 0x480000, 0x80000, CRC(5f057c13) SHA1(d17211c3b697b48012018b738cff22fc4743d607) )
ROM_LOAD( "1016.4a", 0x500000, 0x80000, CRC(c8e7ffb6) SHA1(9a7df1d6b3723e56b69d56831ce32c5326764a68) )
ROM_LOAD( "1013.1a", 0x580000, 0x80000, CRC(c26b0563) SHA1(a09209c7e44fde418f917aed3a436bdf515942eb) )
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
ROM_LOAD( "1011.2f", 0x00000, 0x40000, CRC(8c852b1a) SHA1(39e3e037f441df1d7cc7a698fea3e7825f8f6984) )
ROM_END
/***************************************************************************
Hanafuda Hana Gokou
Dynax (Alba License), 1995
PCB almost like Mysterious World
PCB Layout
----------
N83061581L1
|-------------------------------------------------------|
|MB3714 VOL DSW1(10) M6242B TC55257 BATTERY |
| 32.768kHz 1081.2D 1082B.2B |
| VOL DSW2(10) M6295 |
| DSW5(4) 16MHz |
| YM2413 DSW3(10) PAL TMPZ84C015 |
| |
|M DSW4(10) |
|A YM2149 |
|H * |
|J NL-002 28.63636MHz |
|O PAL |
|N |
|G |
|2 |
|8 1083.9A |
| |
| & % # 1084.10A|
| |
| TC5588 DIP32 |
| TC524258Z-10 TC524258Z-10 DIP32 |
| TC524258Z-10 TC524258Z-10 DIP32 |
|-------------------------------------------------------|
Notes:
TMPZ84C015 - Toshiba TMPZ84C015F-6 (QFP100). Clocks 16.000MHz (pins 65 & 66), 8.000MHz (pins 68 & 69)
TC55257 - 32k x8 SRAM (DIP28)
TC5588 - 8k x8 SRAM (DIP28)
TC524258Z-10 - Toshiba TC524258Z-10 256k x4 Dual Port VRAM (ZIP28)
& - Unknown QFP64. Possibly Dynax Custom 1108F0406
% - Unknown QFP100. Possibly Dynax Custom 4L02F2637
# - Unknown QFP100. Possibly Dynax Custom 1427F0071
* - Unknown PLCC44. Possibly MACH311 or similar CPLD
DIP32 - Empty sockets
M6295 - Oki M6295 (QFP44). Clock 1.02272MHz [28.63636/28]. pin 7 = HIGH
YM2413 - Clock 3.579545MHz [28.63636/8]
YM2149 - Clock 3.579545MHz [28.63636/8]
VSync - 60Hz
HSync - 15.36kHz
***************************************************************************/
ROM_START( hgokou )
ROM_REGION( 0x90000+8*0x1000, "maincpu", 0 ) /* Z80 Code */
ROM_LOAD( "1082b.2b", 0x00000, 0x40000, CRC(e33bc5a5) SHA1(cb723cc81b914b45f89236812492c105c93c4e0b) )
ROM_RELOAD( 0x10000, 0x40000 )
ROM_REGION( 0x200000, "blitter", 0 ) /* blitter data */
// unused
ROM_LOAD( "1083.9a", 0x100000, 0x80000, CRC(054200c3) SHA1(7db457fa1f8639d15a6faa3e1e05d4302e7dd281) )
ROM_LOAD( "1084.10a", 0x180000, 0x80000, CRC(49f657e8) SHA1(077c553f88a76f826495ad516350a53ce361c6da) )
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
ROM_LOAD( "1081.2d", 0x00000, 0x40000, CRC(74dede40) SHA1(d148f9ab9223b4c0b2f457a6f0e7fa3d173ab12b) )
ROM_END
/***************************************************************************
Hanafuda Hana Gokou Bangaihen
Dynax 1995
PCB is almost identical to Hanafuda Hana Gokou by Dynax/Alba minus the CPLD
PCB Layout
----------
N10805078L1
|-------------------------------------------------------|
|MB3713 VOL DSW1(10) M6242B TC55257 BATTERY |
| 32.768kHz 1161.2D 1162.2B |
| VOL DSW2(10) M6295 |
| DSW5(4) 16MHz |
| YM2413 DSW3(10) PAL TMPZ84C015 |
| |
|M DSW4(10) |
|A YM2149 |
|H |
|J NL-002 28.63636MHz |
|O PAL |
|N |
|G |
|2 |
|8 1163.9A |
| |
| & % # 1164.10A|
| |
| TC5588 DIP32 |
| TC524258Z-10 TC524258Z-10 DIP32 |
| TC524258Z-10 TC524258Z-10 DIP32 |
|-------------------------------------------------------|
Notes:
TMPZ84C015 - Toshiba TMPZ84C015F-6 (QFP100). Clocks 16.000MHz (pins 65 & 66), 8.000MHz (pins 68 & 69)
TC55257 - 32k x8 SRAM (DIP28)
TC5588 - 8k x8 SRAM (DIP28)
TC524258Z-10 - Toshiba TC524258Z-10 256k x4 Dual Port VRAM (ZIP28)
& - Unknown QFP64. Possibly Dynax Custom 1108F0406
% - Unknown QFP100. Possibly Dynax Custom 4L02F2637
# - Unknown QFP100. Possibly Dynax Custom 1427F0071
DIP32 - Empty sockets
M6295 - Oki M6295 (QFP44). Clock 1.02272MHz [28.63636/28]. pin 7 = HIGH
YM2413 - Clock 3.579545MHz [28.63636/8]
YM2149 - Clock 3.579545MHz [28.63636/8]
VSync - 60Hz
HSync - 15.36kHz
***************************************************************************/
ROM_START( hgokbang )
ROM_REGION( 0x90000+8*0x1000, "maincpu", 0 ) /* Z80 Code */
ROM_LOAD( "1162.2b", 0x00000, 0x40000, CRC(02414b42) SHA1(00346d4c750c7cbf490f0a5bb90d1b2b3879c979) )
ROM_RELOAD( 0x10000, 0x40000 )
ROM_REGION( 0x500000, "blitter", 0 ) /* blitter data */
// unused
ROM_LOAD( "1163.9a", 0x400000, 0x80000, CRC(054200c3) SHA1(7db457fa1f8639d15a6faa3e1e05d4302e7dd281) )
ROM_LOAD( "1164.10a", 0x480000, 0x80000, CRC(25b40754) SHA1(b660f174826a11cdcf9d61249012390f45f446e6) )
ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
ROM_LOAD( "1161.2d", 0x00000, 0x40000, CRC(74dede40) SHA1(d148f9ab9223b4c0b2f457a6f0e7fa3d173ab12b) )
ROM_END
/***************************************************************************
Mahjong Jong-Tei
Dynax 1999
PCB Layout
----------
NM532-9902
|-----------------------------------------|
| TA7252 LM358 LM358 PST532 BATT |
| VOL M6295 32.768kHz|
| DSW5(4) 53201 |
|M YM2413 20MHz M6242|
|A |
|H DSW1(10) QFP100 62256 |
|J ACTEL DSW2(10) |
|O A1010 DSW3(10) 53202 |
|N DSW4(10) |
|G 28.63636MHz 53203 |
| |
| 53204 |
| M514262 4L10FXXXX |
| M524262 53205 |
| M514262 |
| M514262 53206 |
|-----------------------------------------|
Notes:
4L10FXXXX - Dynax graphics chip, surface scratch, but
it will be one of the usual ones
QFP100 - Main CPU, surface scratched. Clock input 20.00MHz
M6295 - Clock 1.022727143MHz [28.63636/28]. Pin 7 HIGH
YM2413 - Clock 3.579545MHz [28.63636/8]
VSync - 60.7194Hz
HSync - 15.2443kHz
***************************************************************************/
ROM_START( jongtei )
ROM_REGION( 0x90000+16*0x1000, "maincpu", 0 ) /* Z80 Code */
ROM_LOAD( "53202.5b", 0x00000, 0x80000, CRC(fa95a7f2) SHA1(bb67d74acb8908c222acdc92ee13d4a644358aef) )
ROM_RELOAD( 0x10000, 0x80000 )
ROM_REGION( 0x800000, "blitter", 0 ) /* blitter data */
ROM_LOAD( "53203.7b", 0x000000, 0x200000, CRC(55d6522a) SHA1(47996be70481a98ead10211645566613d20b5880) )
ROM_LOAD( "53204.8b", 0x200000, 0x200000, CRC(4f58a303) SHA1(2893e6b47c3098cb878cf5fa5957e9652559e420) )
ROM_LOAD( "53205.10b", 0x400000, 0x200000, CRC(d69e0355) SHA1(f67688eaf7954619785040204368d2cb5fc64e6e) )
ROM_LOAD( "53206.12b", 0x600000, 0x200000, CRC(f0652395) SHA1(286683728836c452b71c3b8c48bd0f7159b2a10c) )
ROM_REGION( 0x200000, "oki", 0 ) /* Samples */
ROM_LOAD( "53201.2a", 0x000000, 0x200000, CRC(c53d840c) SHA1(5a935320f48bdc8f3b9ed105dcdd0c6e33c3c38c) )
ROM_END
/***************************************************************************
Mahjong Seiryu Densetsu
Dynax 1996
PCB Layout
----------
NM5020403
|---------------------------------|
|MB3713 LM358 LM358 50201 |
| YM2413 M6295 BATT |
| DSW5 YMZ284 16MHz PAL |
|M QFP100 TC55257|
|A 50202 |
|H RTC62421 |
|J 28.63636MHz |
|O PLCC68 TC524258 |
|N QFP208 TC524258 |
|G TC524258 |
| TC5588 PAL TC524258 |
| DSW1 DSW2 50209 50206 50203 |
| DSW3 DSW4 50210 50207 50204 |
| 50211 50208 50205 |
|---------------------------------|
Notes:
YM2413 - Clock 3.579545MHz [28.63636/8]
YMZ284 - Clock 3.579545MHz [28.63636/8]
PLCC68 - Unknown PLCC68. Clock 1.7897725MHz [28.63636/16]
Possibly FPGA/CPLD/Gate Array or custom Dynax chip etc.
QFP100 - Unknown QFP100. Clock input 16MHz. Looks like TMPZ8400
QFP208 - Unknown QFP208 custom Dynax chip
DSW1-4 - 10-position DIP switches
DSW5 - 4-position DIP switch
VSync - 60.8532Hz
HSync - 15.2790kHz
***************************************************************************/
ROM_START( sryudens )
ROM_REGION( 0x90000+16*0x1000, "maincpu", 0 ) /* Z80 Code */
ROM_LOAD( "50202.5c", 0x00000, 0x80000, CRC(7072d3d9) SHA1(6a6605afd334d5adca0e8eed9758f2a2b37c389e) )
ROM_RELOAD( 0x10000, 0x80000 )
ROM_REGION( 0x480000, "blitter", 0 ) /* blitter data */
ROM_LOAD( "50203.13b", 0x000000, 0x80000, CRC(4da60d60) SHA1(bd34f9471baf8242a32908bb3e2106e10ae3310c) )
ROM_LOAD( "50204.14b", 0x080000, 0x80000, CRC(43d1d705) SHA1(ce7184a6dd04a10b7e0734039ae8c3dcf3819258) )
ROM_LOAD( "50205.15b", 0x100000, 0x80000, CRC(7c727fc0) SHA1(3f7fe11fb5abb4a2a85b38b670ef4597cd42edc7) )
ROM_LOAD( "50206.13d", 0x180000, 0x80000, CRC(c52396dd) SHA1(385dfda305011f4db0b783b861daeff4ee52ea9c) )
ROM_LOAD( "50207.14d", 0x200000, 0x80000, CRC(cb600774) SHA1(321b0ac01e70d17006871ad7f88f98f53536ca8d) )
ROM_LOAD( "50208.15d", 0x280000, 0x80000, CRC(0b30c780) SHA1(b2a263cc14e5a734eb9580451eb21dad980d18f0) )
ROM_LOAD( "50209.13f", 0x300000, 0x80000, CRC(8f34a31c) SHA1(9b56a462f871d935806b6594f07fa1e4214f9186) )
ROM_LOAD( "50210.14f", 0x380000, 0x80000, CRC(2fdd3b49) SHA1(db27d5d9f74f532ab4e9b8ffa81eef2fae2ef6fd) )
ROM_LOAD( "50211.15f", 0x400000, 0x80000, CRC(39ad357a) SHA1(899e369d7396ed40803df7c575199a65b18c046e) )
ROM_REGION( 0x80000, "oki", 0 ) /* Samples */
ROM_LOAD( "50201.1c", 0x00000, 0x80000, CRC(5a8cd45c) SHA1(25ca573b8ba226fb3f2de48c57b5ced6884eaa63) )
ROM_END
/***************************************************************************
Mahjong Daimyojin
Dynax/Techno Top Ltd/Techno Planning, 2002
PCB Layout
----------
TSM015-0111
|--------------------------------------|
|TA7252 VOL M6295 PST532 BATT |
| LM358 LM358 T0171 |
| DSW5 YM2413 32.768kHz
| 62003 20MHz TC55257|
|M QFP100 M6242B|
|A DSW1 DSW2 |
|H DSW3 DSW4 P0172 |
|J |
|O PLCC68 T0173 |
|N 28.63636MHz |
|G KM424C256 P0174 |
| KM424C256 |
| KM424C256 TSM100 |
| KM424C256 |
| KM424C256 |
| KM424C256 |
|--------------------------------------|
Notes:
PLCC68 - Unknown PLCC68. Clock input 10MHz [20/2]. Possibly FPGA/CPLD/Gate Array or custom chip etc.
QFP100 - Unknown QFP100. Clock input 20MHz. Looks like TMPZ8400
TSM100 - Custom QFP208 GFX chip. Details....
T-top SOFT
TSM100
70C160F011
JAPAN 0210EAI
D0002ZCA
YM2413 - Clock 3.579545MHz [28.63636/8]
M6295 - Clock 1.02272MHz [28.63636/28]. pin 7 high
VSync - 59.7922Hz
HSync - 15.4248kHz
***************************************************************************/
ROM_START( daimyojn )
ROM_REGION( 0x90000+16*0x1000, "maincpu", 0 ) /* Z80 Code */
ROM_LOAD( "p0172.6b", 0x00000, 0x80000, CRC(478442bd) SHA1(50efe7e014a55a5e5ac359628438ad2963df181c) )
ROM_RELOAD( 0x10000, 0x80000 )
ROM_REGION( 0x400000, "blitter", 0 ) /* blitter data */
ROM_LOAD( "t0173.7b", 0x000000, 0x200000, CRC(b54c7b02) SHA1(54a750708c91041caa89adb033d8133b409b0706) )
ROM_LOAD( "p0174.8b", 0x200000, 0x200000, CRC(861de43f) SHA1(c5bc279f476902baa46e046800c26bd52255a525) )
ROM_REGION( 0x80000, "oki", 0 ) /* Samples */
ROM_LOAD( "t0171.2b", 0x00000, 0x80000, CRC(464be04c) SHA1(3532ac8d7eaadb2dc33e2c2d9731654176231184) )
ROM_END
GAME( 1992, mmpanic, 0, mmpanic, mmpanic, 0, ROT0, "Nakanihon / East Technology (Taito license)", "Monkey Mole Panic (USA)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
GAME( 1993, funkyfig, 0, funkyfig, funkyfig, 0, ROT0, "Nakanihon / East Technology (Taito license)", "The First Funky Fighter", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) // scrolling, priority?
GAME( 1993, quizchq, 0, quizchq, quizchq, 0, ROT0, "Nakanihon", "Quiz Channel Question (Ver 1.00) (Japan)", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
GAME( 1993, quizchql, quizchq, quizchq, quizchq, 0, ROT0, "Nakanihon (Laxan license)", "Quiz Channel Question (Ver 1.23) (Taiwan?)", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
GAME( 1993, animaljr, 0, mmpanic, animaljr, 0, ROT0, "Nakanihon / East Technology (Taito license)", "Exciting Animal Land Jr. (USA)", GAME_NO_COCKTAIL | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
GAME( 1993, animaljrs, animaljr, mmpanic, animaljr, 0, ROT0, "Nakanihon / East Technology (Taito license)", "Animalandia Jr. (Spanish)", GAME_NO_COCKTAIL | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
GAME( 1993, animaljrj, animaljr, mmpanic, animaljr, 0, ROT0, "Nakanihon / East Technology (Taito license)", "Waiwai Animal Land Jr. (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
GAME( 1994, hginga, 0, hginga, hginga, 0, ROT0, "Dynax", "Hanafuda Hana Ginga", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
GAME( 1994, mjmyster, 0, mjmyster, mjmyster, 0, ROT0, "Dynax", "Mahjong The Mysterious World (set 1)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
GAME( 1994, mjmywrld, mjmyster, mjmywrld, mjmyster, 0, ROT0, "Dynax", "Mahjong The Mysterious World (set 2)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
GAME( 1994, mjmyornt, 0, mjmyornt, mjmyornt, 0, ROT0, "Dynax", "Mahjong The Mysterious Orient", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
GAME( 1994, mjmyuniv, 0, mjmyuniv, mjmyster, 0, ROT0, "Dynax", "Mahjong The Mysterious Universe", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
GAME( 1994, quiz365, 0, quiz365, quiz365, 0, ROT0, "Nakanihon", "Quiz 365 (Japan)", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_UNEMULATED_PROTECTION | GAME_SUPPORTS_SAVE )
GAME( 1994, quiz365t, quiz365, quiz365, quiz365, 0, ROT0, "Nakanihon / Taito", "Quiz 365 (Hong Kong & Taiwan)", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_UNEMULATED_PROTECTION | GAME_SUPPORTS_SAVE )
GAME( 1994, rongrong, 0, rongrong, rongrong, rongrong, ROT0, "Nakanihon (Activision license)", "Puzzle Game Rong Rong (Europe)", GAME_NO_COCKTAIL | GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE )
GAME( 1994, rongrongj, rongrong, rongrong, rongrong, rongrong, ROT0, "Nakanihon (Activision license)", "Puzzle Game Rong Rong (Japan)", GAME_NO_COCKTAIL | GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE )
GAME( 1994, rongrongg, rongrong, rongrong, rongrong, rongrong, ROT0, "Nakanihon (Activision license)", "Puzzle Game Rong Rong (Germany)", GAME_NO_COCKTAIL | GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE )
GAME( 1994, hparadis, 0, hparadis, hparadis, 0, ROT0, "Dynax", "Super Hana Paradise (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
GAME( 1995, hgokou, 0, hgokou, hgokou, 0, ROT0, "Dynax (Alba license)", "Hanafuda Hana Gokou (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
GAME( 1995, hgokbang, hgokou, hgokbang, hgokou, 0, ROT0, "Dynax", "Hanafuda Hana Gokou Bangaihen (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
GAME( 1995, mjdchuka, 0, mjchuuka, mjchuuka, 0, ROT0, "Dynax", "Mahjong The Dai Chuuka Ken (China, v. D111)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
GAME( 1995, nettoqc, 0, nettoqc, nettoqc, 0, ROT0, "Nakanihon", "Nettoh Quiz Champion (Japan)", GAME_NO_COCKTAIL | GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE )
GAME( 1995, ddenlovj, 0, ddenlovj, ddenlovj, 0, ROT0, "Dynax", "Don Den Lover Vol. 1 - Shiro Kuro Tsukeyo! (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
GAME( 1995, ddenlovrk, ddenlovj, ddenlovrk, ddenlovr, 0, ROT0, "Dynax", "Don Den Lover Vol. 1 - Heukbaeg-euro Jeonghaja (Korea)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
GAME( 1995, ddenlovrb, ddenlovj, ddenlovr, ddenlovr, 0, ROT0, "bootleg", "Don Den Lover Vol. 1 - Heukbaeg-euro Jeonghaja (Korea, bootleg)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
GAME( 1996, ddenlovr, ddenlovj, ddenlovr, ddenlovr, 0, ROT0, "Dynax", "Don Den Lover Vol. 1 (Hong Kong)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
GAME( 1996, hanakanz, 0, hanakanz, hanakanz, 0, ROT0, "Dynax", "Hana Kanzashi (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
GAME( 1996, akamaru, 0, akamaru, akamaru, 0, ROT0, "Dynax (Nakanihon license)", "Panel & Variety Akamaru Q Jousyou Dont-R", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
GAME( 1996, sryudens, 0, sryudens, sryudens, 0, ROT0, "Dynax / Face", "Mahjong Seiryu Densetsu (Japan, NM502)", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
GAME( 1996, mjflove, 0, mjflove, mjflove, 0, ROT0, "Nakanihon", "Mahjong Fantasic Love (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
GAME( 1997, hkagerou, 0, hkagerou, hkagerou, 0, ROT0, "Nakanihon / Dynax", "Hana Kagerou [BET] (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
GAME( 1998, mjchuuka, 0, mjchuuka, mjchuuka, 0, ROT0, "Dynax", "Mahjong Chuukanejyo (China)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
GAME( 1998, mjreach1, 0, mjreach1, mjreach1, 0, ROT0, "Nihon System", "Mahjong Reach Ippatsu (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
GAME( 1999, jongtei, 0, jongtei, jongtei, 0, ROT0, "Dynax", "Mahjong Jong-Tei (Japan, ver. NM532-01)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
GAME( 2002, daimyojn, 0, daimyojn, daimyojn, 0, ROT0, "Dynax / Techno-Top / Techno-Planning", "Mahjong Daimyojin (Japan, T017-PB-00)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )