summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Miodrag Milanovic <mmicko@gmail.com>2013-04-03 14:41:05 +0000
committer Miodrag Milanovic <mmicko@gmail.com>2013-04-03 14:41:05 +0000
commit99ff79a85953e31046f57ae989580051f0c718dc (patch)
treeeb83ae882674c2fc0b6ab38ef3066d3251acb03d
parent0dec19ddfc7a196ead8a30d0a4a947925e37b230 (diff)
preps for dynax and ddenlovr modernization (nw)
-rw-r--r--src/mame/drivers/ddenlovr.c1339
-rw-r--r--src/mame/drivers/dynax.c410
-rw-r--r--src/mame/includes/dynax.h243
-rw-r--r--src/mame/video/dynax.c76
4 files changed, 1044 insertions, 1024 deletions
diff --git a/src/mame/drivers/ddenlovr.c b/src/mame/drivers/ddenlovr.c
index 518a3d782b8..5a4b116dfa5 100644
--- a/src/mame/drivers/ddenlovr.c
+++ b/src/mame/drivers/ddenlovr.c
@@ -149,7 +149,211 @@ static const int ddenlovr_commands[8] = { BLIT_NEXT, BLIT_LINE, BLIT_COP
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_MEMBER(dynax_state,ddenlovr)
+class ddenlovr_state : public dynax_state
+{
+public:
+ ddenlovr_state(const machine_config &mconfig, device_type type, const char *tag)
+ : dynax_state(mconfig, type, tag)
+ { }
+
+ DECLARE_MACHINE_START(ddenlovr);
+ DECLARE_MACHINE_RESET(ddenlovr);
+ DECLARE_VIDEO_START(ddenlovr);
+ DECLARE_MACHINE_START(rongrong);
+ DECLARE_MACHINE_START(mmpanic);
+ DECLARE_VIDEO_START(mmpanic);
+ DECLARE_MACHINE_START(hanakanz);
+ DECLARE_VIDEO_START(hanakanz);
+ DECLARE_MACHINE_START(sryudens);
+ DECLARE_VIDEO_START(mjflove);
+ DECLARE_MACHINE_START(seljan2);
+ DECLARE_MACHINE_START(mjflove);
+ DECLARE_MACHINE_START(funkyfig);
+ DECLARE_MACHINE_START(mjmyster);
+ DECLARE_MACHINE_START(hparadis);
+ UINT32 screen_update_ddenlovr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ UINT32 screen_update_htengoku(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+
+ INTERRUPT_GEN_MEMBER(quizchq_irq);
+ INTERRUPT_GEN_MEMBER(mmpanic_irq);
+ DECLARE_WRITE_LINE_MEMBER(quizchq_rtc_irq);
+ DECLARE_WRITE_LINE_MEMBER(mmpanic_rtc_irq);
+ INTERRUPT_GEN_MEMBER(hanakanz_irq);
+ INTERRUPT_GEN_MEMBER(mjchuuka_irq);
+ INTERRUPT_GEN_MEMBER(hginga_irq);
+ INTERRUPT_GEN_MEMBER(mjflove_irq);
+ INTERRUPT_GEN_MEMBER(hparadis_irq);
+ DECLARE_WRITE_LINE_MEMBER(hanakanz_rtc_irq);
+ DECLARE_WRITE_LINE_MEMBER(mjchuuka_rtc_irq);
+ DECLARE_WRITE_LINE_MEMBER(hginga_rtc_irq);
+ DECLARE_WRITE_LINE_MEMBER(mjflove_rtc_irq);
+ DECLARE_WRITE_LINE_MEMBER(mjmyster_rtc_irq);
+ TIMER_DEVICE_CALLBACK_MEMBER(mjmyster_irq);
+
+ DECLARE_CUSTOM_INPUT_MEMBER(ddenlovr_blitter_irq_r);
+ DECLARE_CUSTOM_INPUT_MEMBER(ddenlovj_blitter_r);
+ DECLARE_CUSTOM_INPUT_MEMBER(nettoqc_special_r);
+ DECLARE_CUSTOM_INPUT_MEMBER(mjflove_blitter_r);
+ DECLARE_WRITE8_MEMBER(ddenlovr_bgcolor_w);
+ DECLARE_WRITE8_MEMBER(ddenlovr_bgcolor2_w);
+ DECLARE_WRITE16_MEMBER(ddenlovr16_bgcolor_w);
+ DECLARE_WRITE8_MEMBER(ddenlovr_priority_w);
+ DECLARE_WRITE8_MEMBER(ddenlovr_priority2_w);
+ DECLARE_WRITE16_MEMBER(ddenlovr16_priority_w);
+ DECLARE_WRITE8_MEMBER(ddenlovr_layer_enable_w);
+ DECLARE_WRITE8_MEMBER(ddenlovr_layer_enable2_w);
+ DECLARE_WRITE16_MEMBER(ddenlovr16_layer_enable_w);
+ DECLARE_WRITE8_MEMBER(hanakanz_blitter_reg_w);
+ DECLARE_WRITE8_MEMBER(hanakanz_blitter_data_w);
+ DECLARE_WRITE8_MEMBER(rongrong_blitter_w);
+ DECLARE_WRITE16_MEMBER(ddenlovr_blitter_w);
+ DECLARE_WRITE16_MEMBER(ddenlovr_blitter_irq_ack_w);
+ DECLARE_READ8_MEMBER(rongrong_gfxrom_r);
+ DECLARE_READ16_MEMBER(ddenlovr_gfxrom_r);
+ DECLARE_WRITE16_MEMBER(ddenlovr_coincounter_0_w);
+ DECLARE_WRITE16_MEMBER(ddenlovr_coincounter_1_w);
+ DECLARE_WRITE8_MEMBER(rongrong_palette_w);
+ DECLARE_WRITE16_MEMBER(ddenlovr_palette_w);
+ DECLARE_WRITE8_MEMBER(ddenlovr_palette_base_w);
+ DECLARE_WRITE8_MEMBER(ddenlovr_palette_base2_w);
+ DECLARE_WRITE8_MEMBER(ddenlovr_palette_mask_w);
+ DECLARE_WRITE8_MEMBER(ddenlovr_palette_mask2_w);
+ DECLARE_WRITE8_MEMBER(ddenlovr_transparency_pen_w);
+ DECLARE_WRITE8_MEMBER(ddenlovr_transparency_pen2_w);
+ DECLARE_WRITE8_MEMBER(ddenlovr_transparency_mask_w);
+ DECLARE_WRITE8_MEMBER(ddenlovr_transparency_mask2_w);
+ DECLARE_WRITE16_MEMBER(ddenlovr16_palette_base_w);
+ DECLARE_WRITE16_MEMBER(ddenlovr16_palette_mask_w);
+ DECLARE_WRITE16_MEMBER(ddenlovr16_transparency_pen_w);
+ DECLARE_WRITE16_MEMBER(ddenlovr16_transparency_mask_w);
+ DECLARE_READ8_MEMBER(unk_r);
+ DECLARE_READ16_MEMBER(unk16_r);
+ DECLARE_WRITE16_MEMBER(ddenlovr_select_16_w);
+ DECLARE_WRITE8_MEMBER(ddenlovr_select2_w);
+ DECLARE_WRITE16_MEMBER(ddenlovr_select2_16_w);
+ DECLARE_READ8_MEMBER(rongrong_input2_r);
+ DECLARE_READ16_MEMBER(quiz365_input2_r);
+ DECLARE_WRITE8_MEMBER(rongrong_blitter_busy_w);
+ DECLARE_READ8_MEMBER(rongrong_blitter_busy_r);
+ DECLARE_WRITE16_MEMBER(quiz365_coincounter_w);
+ DECLARE_READ16_MEMBER(quiz365_protection_r);
+ DECLARE_WRITE16_MEMBER(quiz365_protection_w);
+ DECLARE_READ16_MEMBER(ddenlovj_dsw_r);
+ DECLARE_WRITE16_MEMBER(ddenlovj_coincounter_w);
+ DECLARE_READ16_MEMBER(ddenlovrk_protection1_r);
+ DECLARE_READ16_MEMBER(ddenlovrk_protection2_r);
+ DECLARE_WRITE16_MEMBER(ddenlovrk_protection2_w);
+ DECLARE_READ16_MEMBER(nettoqc_input_r);
+ DECLARE_READ16_MEMBER(nettoqc_protection1_r);
+ DECLARE_WRITE16_MEMBER(nettoqc_coincounter_w);
+ DECLARE_READ16_MEMBER(ultrchmp_protection2_r);
+ DECLARE_WRITE16_MEMBER(ultrchmp_protection2_w);
+ DECLARE_READ8_MEMBER(rongrong_input_r);
+ DECLARE_WRITE8_MEMBER(rongrong_select_w);
+ DECLARE_READ8_MEMBER(magic_r);
+ DECLARE_WRITE8_MEMBER(mmpanic_rombank_w);
+ DECLARE_WRITE8_MEMBER(mmpanic_soundlatch_w);
+ DECLARE_WRITE8_MEMBER(mmpanic_blitter_w);
+ DECLARE_WRITE8_MEMBER(mmpanic_blitter2_w);
+ DECLARE_WRITE8_MEMBER(mmpanic_leds_w);
+ DECLARE_WRITE8_MEMBER(mmpanic_leds2_w);
+ DECLARE_WRITE8_MEMBER(mmpanic_lockout_w);
+ DECLARE_READ8_MEMBER(mmpanic_link_r);
+ DECLARE_READ8_MEMBER(funkyfig_busy_r);
+ DECLARE_WRITE8_MEMBER(funkyfig_blitter_w);
+ DECLARE_WRITE8_MEMBER(funkyfig_rombank_w);
+ DECLARE_READ8_MEMBER(funkyfig_dsw_r);
+ DECLARE_READ8_MEMBER(funkyfig_coin_r);
+ DECLARE_READ8_MEMBER(funkyfig_key_r);
+ DECLARE_WRITE8_MEMBER(funkyfig_lockout_w);
+ DECLARE_WRITE8_MEMBER(hanakanz_rombank_w);
+ DECLARE_WRITE8_MEMBER(hanakanz_keyb_w);
+ DECLARE_WRITE8_MEMBER(hanakanz_dsw_w);
+ DECLARE_READ8_MEMBER(hanakanz_keyb_r);
+ DECLARE_READ8_MEMBER(hanakanz_dsw_r);
+ DECLARE_READ8_MEMBER(hanakanz_busy_r);
+ DECLARE_READ8_MEMBER(hanakanz_gfxrom_r);
+ DECLARE_WRITE8_MEMBER(hanakanz_coincounter_w);
+ DECLARE_WRITE8_MEMBER(hanakanz_palette_w);
+ DECLARE_READ8_MEMBER(hanakanz_rand_r);
+ DECLARE_WRITE8_MEMBER(mjreach1_protection_w);
+ DECLARE_READ8_MEMBER(mjreach1_protection_r);
+ DECLARE_READ8_MEMBER(mjchuuka_keyb_r);
+ DECLARE_WRITE8_MEMBER(mjchuuka_blitter_w);
+ DECLARE_READ8_MEMBER(mjchuuka_gfxrom_0_r);
+ DECLARE_READ8_MEMBER(mjchuuka_gfxrom_1_r);
+ DECLARE_WRITE8_MEMBER(mjchuuka_palette_w);
+ DECLARE_WRITE8_MEMBER(mjchuuka_coincounter_w);
+ DECLARE_WRITE8_MEMBER(mjmyster_rambank_w);
+ DECLARE_WRITE8_MEMBER(mjmyster_select2_w);
+ DECLARE_READ8_MEMBER(mjmyster_coins_r);
+ DECLARE_READ8_MEMBER(mjmyster_keyb_r);
+ DECLARE_READ8_MEMBER(mjmyster_dsw_r);
+ DECLARE_WRITE8_MEMBER(mjmyster_coincounter_w);
+ DECLARE_WRITE8_MEMBER(mjmyster_blitter_w);
+ DECLARE_WRITE8_MEMBER(hginga_rombank_w);
+ DECLARE_READ8_MEMBER(hginga_protection_r);
+ DECLARE_WRITE8_MEMBER(hginga_input_w);
+ DECLARE_READ8_MEMBER(hginga_coins_r);
+ DECLARE_WRITE8_MEMBER(hginga_80_w);
+ DECLARE_WRITE8_MEMBER(hginga_coins_w);
+ DECLARE_READ8_MEMBER(hginga_input_r);
+ DECLARE_WRITE8_MEMBER(hginga_blitter_w);
+ DECLARE_WRITE8_MEMBER(hgokou_dsw_sel_w);
+ DECLARE_READ8_MEMBER(hgokou_input_r);
+ DECLARE_WRITE8_MEMBER(hgokou_input_w);
+ DECLARE_READ8_MEMBER(hgokou_protection_r);
+ DECLARE_READ8_MEMBER(hgokbang_input_r);
+ DECLARE_WRITE8_MEMBER(hparadis_select_w);
+ DECLARE_READ8_MEMBER(hparadis_input_r);
+ DECLARE_READ8_MEMBER(hparadis_dsw_r);
+ DECLARE_WRITE8_MEMBER(hparadis_coin_w);
+ DECLARE_READ8_MEMBER(mjmywrld_coins_r);
+ DECLARE_READ16_MEMBER(akamaru_protection1_r);
+ DECLARE_WRITE16_MEMBER(akamaru_protection1_w);
+ DECLARE_READ16_MEMBER(akamaru_protection2_r);
+ DECLARE_READ16_MEMBER(akamaru_dsw_r);
+ DECLARE_READ16_MEMBER(akamaru_blitter_r);
+ DECLARE_READ16_MEMBER(akamaru_e0010d_r);
+ DECLARE_WRITE8_MEMBER(mjflove_rombank_w);
+ DECLARE_READ8_MEMBER(mjflove_protection_r);
+ DECLARE_READ8_MEMBER(mjflove_keyb_r);
+ DECLARE_WRITE8_MEMBER(mjflove_blitter_w);
+ DECLARE_WRITE8_MEMBER(mjflove_coincounter_w);
+ DECLARE_WRITE8_MEMBER(jongtei_dsw_keyb_w);
+ DECLARE_READ8_MEMBER(jongtei_busy_r);
+ DECLARE_READ8_MEMBER(sryudens_keyb_r);
+ DECLARE_WRITE8_MEMBER(sryudens_coincounter_w);
+ DECLARE_WRITE8_MEMBER(sryudens_rambank_w);
+ DECLARE_READ8_MEMBER(daimyojn_keyb1_r);
+ DECLARE_READ8_MEMBER(daimyojn_keyb2_r);
+ DECLARE_WRITE8_MEMBER(daimyojn_protection_w);
+ DECLARE_READ8_MEMBER(daimyojn_protection_r);
+ DECLARE_READ8_MEMBER(momotaro_protection_r);
+ DECLARE_WRITE8_MEMBER(daimyojn_palette_sel_w);
+ DECLARE_WRITE8_MEMBER(daimyojn_blitter_data_palette_w);
+ DECLARE_READ8_MEMBER(daimyojn_year_hack_r);
+ DECLARE_WRITE8_MEMBER(janshinp_coincounter_w);
+ DECLARE_READ8_MEMBER(seljan2_busy_r);
+ DECLARE_WRITE8_MEMBER(seljan2_rombank_w);
+ DECLARE_WRITE8_MEMBER(seljan2_palette_enab_w);
+ DECLARE_WRITE8_MEMBER(seljan2_palette_w);
+ DECLARE_DRIVER_INIT(rongrong);
+ DECLARE_DRIVER_INIT(momotaro);
+ DECLARE_WRITE8_MEMBER(htengoku_select_w);
+ DECLARE_WRITE8_MEMBER(htengoku_coin_w);
+ DECLARE_READ8_MEMBER(htengoku_input_r);
+ DECLARE_READ8_MEMBER(htengoku_coin_r);
+ DECLARE_WRITE8_MEMBER(htengoku_rombank_w);
+ DECLARE_WRITE8_MEMBER(htengoku_blit_romregion_w);
+ DECLARE_MACHINE_START(htengoku);
+ DECLARE_VIDEO_START(htengoku);
+ DECLARE_WRITE8_MEMBER(htengoku_dsw_w);
+ DECLARE_READ8_MEMBER(htengoku_dsw_r);
+
+};
+
+VIDEO_START_MEMBER(ddenlovr_state,ddenlovr)
{
int i;
@@ -246,14 +450,14 @@ VIDEO_START_MEMBER(dynax_state,ddenlovr)
save_pointer(NAME(m_ddenlovr_pixmap[7]), 512 * 512);
}
-VIDEO_START_MEMBER(dynax_state,mmpanic)
+VIDEO_START_MEMBER(ddenlovr_state,mmpanic)
{
VIDEO_START_CALL_MEMBER(ddenlovr);
m_extra_layers = 1;
}
-VIDEO_START_MEMBER(dynax_state,hanakanz)
+VIDEO_START_MEMBER(ddenlovr_state,hanakanz)
{
VIDEO_START_CALL_MEMBER(ddenlovr);
@@ -261,7 +465,7 @@ VIDEO_START_MEMBER(dynax_state,hanakanz)
m_ddenlovr_blit_commands = hanakanz_commands;
}
-VIDEO_START_MEMBER(dynax_state,mjflove)
+VIDEO_START_MEMBER(ddenlovr_state,mjflove)
{
VIDEO_START_CALL_MEMBER(ddenlovr);
@@ -275,7 +479,7 @@ static void ddenlovr_flipscreen_w( UINT8 data )
static void ddenlovr_blit_flip_w( running_machine &machine, UINT8 data )
{
- dynax_state *state = machine.driver_data<dynax_state>();
+ ddenlovr_state *state = machine.driver_data<ddenlovr_state>();
if ((data ^ state->m_ddenlovr_blit_flip) & 0xec)
{
@@ -288,52 +492,52 @@ static void ddenlovr_blit_flip_w( running_machine &machine, UINT8 data )
state->m_ddenlovr_blit_flip = data;
}
-WRITE8_MEMBER(dynax_state::ddenlovr_bgcolor_w)
+WRITE8_MEMBER(ddenlovr_state::ddenlovr_bgcolor_w)
{
m_ddenlovr_bgcolor = data;
}
-WRITE8_MEMBER(dynax_state::ddenlovr_bgcolor2_w)
+WRITE8_MEMBER(ddenlovr_state::ddenlovr_bgcolor2_w)
{
m_ddenlovr_bgcolor2 = data;
}
-WRITE16_MEMBER(dynax_state::ddenlovr16_bgcolor_w)
+WRITE16_MEMBER(ddenlovr_state::ddenlovr16_bgcolor_w)
{
if (ACCESSING_BITS_0_7)
ddenlovr_bgcolor_w(space, offset, data);
}
-WRITE8_MEMBER(dynax_state::ddenlovr_priority_w)
+WRITE8_MEMBER(ddenlovr_state::ddenlovr_priority_w)
{
m_ddenlovr_priority = data;
}
-WRITE8_MEMBER(dynax_state::ddenlovr_priority2_w)
+WRITE8_MEMBER(ddenlovr_state::ddenlovr_priority2_w)
{
m_ddenlovr_priority2 = data;
}
-WRITE16_MEMBER(dynax_state::ddenlovr16_priority_w)
+WRITE16_MEMBER(ddenlovr_state::ddenlovr16_priority_w)
{
if (ACCESSING_BITS_0_7)
ddenlovr_priority_w(space, offset, data);
}
-WRITE8_MEMBER(dynax_state::ddenlovr_layer_enable_w)
+WRITE8_MEMBER(ddenlovr_state::ddenlovr_layer_enable_w)
{
m_ddenlovr_layer_enable = data;
}
-WRITE8_MEMBER(dynax_state::ddenlovr_layer_enable2_w)
+WRITE8_MEMBER(ddenlovr_state::ddenlovr_layer_enable2_w)
{
m_ddenlovr_layer_enable2 = data;
}
-WRITE16_MEMBER(dynax_state::ddenlovr16_layer_enable_w)
+WRITE16_MEMBER(ddenlovr_state::ddenlovr16_layer_enable_w)
{
if (ACCESSING_BITS_0_7)
ddenlovr_layer_enable_w(space, offset, data);
@@ -343,7 +547,7 @@ WRITE16_MEMBER(dynax_state::ddenlovr16_layer_enable_w)
static void do_plot( running_machine &machine, int x, int y, int pen )
{
- dynax_state *state = machine.driver_data<dynax_state>();
+ ddenlovr_state *state = machine.driver_data<ddenlovr_state>();
int addr, temp;
int xclip, yclip;
@@ -436,7 +640,7 @@ INLINE void log_draw_error( int src, int cmd )
static int blit_draw( running_machine &machine, int src, int sx )
{
- dynax_state *state = machine.driver_data<dynax_state>();
+ ddenlovr_state *state = machine.driver_data<ddenlovr_state>();
UINT8 *src_data = state->memregion("blitter")->base();
int src_len = state->memregion("blitter")->bytes();
int bit_addr = (src & 0xffffff) * state->m_ddenlovr_blit_rom_bits; /* convert to bit address */
@@ -531,7 +735,7 @@ static int blit_draw( running_machine &machine, int src, int sx )
*/
static void blit_rect_xywh( running_machine &machine )
{
- dynax_state *state = machine.driver_data<dynax_state>();
+ ddenlovr_state *state = machine.driver_data<ddenlovr_state>();
int x, y;
#ifdef MAME_DEBUG
@@ -558,7 +762,7 @@ static void blit_rect_xywh( running_machine &machine )
*/
static void blit_rect_yh( running_machine &machine )
{
- dynax_state *state = machine.driver_data<dynax_state>();
+ ddenlovr_state *state = machine.driver_data<ddenlovr_state>();
int start = 512 * state->m_ddenlovr_blit_y;
int length = 512 * (state->m_ddenlovr_rect_height + 1);
@@ -598,7 +802,7 @@ static void blit_rect_yh( running_machine &machine )
*/
static void blit_fill_xy( running_machine &machine, int x, int y )
{
- dynax_state *state = machine.driver_data<dynax_state>();
+ ddenlovr_state *state = machine.driver_data<ddenlovr_state>();
int start = 512 * y + x;
#ifdef MAME_DEBUG
@@ -633,7 +837,7 @@ static void blit_fill_xy( running_machine &machine, int x, int y )
*/
static void blit_horiz_line( running_machine &machine )
{
- dynax_state *state = machine.driver_data<dynax_state>();
+ ddenlovr_state *state = machine.driver_data<ddenlovr_state>();
int i;
#ifdef MAME_DEBUG
@@ -664,7 +868,7 @@ static void blit_horiz_line( running_machine &machine )
*/
static void blit_vert_line( running_machine &machine )
{
- dynax_state *state = machine.driver_data<dynax_state>();
+ ddenlovr_state *state = machine.driver_data<ddenlovr_state>();
int i;
#ifdef MAME_DEBUG
@@ -684,7 +888,7 @@ static void blit_vert_line( running_machine &machine )
INLINE void log_blit( running_machine &machine, int data )
{
#if 0
- dynax_state *state = machine.driver_data<dynax_state>();
+ ddenlovr_state *state = machine.driver_data<ddenlovr_state>();
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(),
@@ -696,7 +900,7 @@ INLINE void log_blit( running_machine &machine, int data )
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>();
+ ddenlovr_state *state = space.machine().driver_data<ddenlovr_state>();
int hi_bits;
g_profiler.start(PROFILER_VIDEO);
@@ -859,7 +1063,7 @@ 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>();
+ ddenlovr_state *state = machine.driver_data<ddenlovr_state>();
int hi_bits;
g_profiler.start(PROFILER_VIDEO);
@@ -1013,13 +1217,13 @@ g_profiler.stop();
-WRITE8_MEMBER(dynax_state::hanakanz_blitter_reg_w)
+WRITE8_MEMBER(ddenlovr_state::hanakanz_blitter_reg_w)
{
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
-WRITE8_MEMBER(dynax_state::hanakanz_blitter_data_w)
+WRITE8_MEMBER(ddenlovr_state::hanakanz_blitter_data_w)
{
int hi_bits;
@@ -1209,19 +1413,19 @@ g_profiler.stop();
}
-WRITE8_MEMBER(dynax_state::rongrong_blitter_w)
+WRITE8_MEMBER(ddenlovr_state::rongrong_blitter_w)
{
blitter_w(space, 0, offset, data, 0xf8);
}
-WRITE16_MEMBER(dynax_state::ddenlovr_blitter_w)
+WRITE16_MEMBER(ddenlovr_state::ddenlovr_blitter_w)
{
if (ACCESSING_BITS_0_7)
blitter_w(space, 0, offset, data & 0xff, 0);
}
-WRITE16_MEMBER(dynax_state::ddenlovr_blitter_irq_ack_w)
+WRITE16_MEMBER(ddenlovr_state::ddenlovr_blitter_irq_ack_w)
{
if (ACCESSING_BITS_0_7)
{
@@ -1238,7 +1442,7 @@ WRITE16_MEMBER(dynax_state::ddenlovr_blitter_irq_ack_w)
}
-READ8_MEMBER(dynax_state::rongrong_gfxrom_r)
+READ8_MEMBER(ddenlovr_state::rongrong_gfxrom_r)
{
UINT8 *rom = memregion("blitter")->base();
size_t size = memregion("blitter")->bytes();
@@ -1255,7 +1459,7 @@ READ8_MEMBER(dynax_state::rongrong_gfxrom_r)
return rom[address];
}
-READ16_MEMBER(dynax_state::ddenlovr_gfxrom_r)
+READ16_MEMBER(ddenlovr_state::ddenlovr_gfxrom_r)
{
return rongrong_gfxrom_r(space, offset);
}
@@ -1263,7 +1467,7 @@ READ16_MEMBER(dynax_state::ddenlovr_gfxrom_r)
static void copylayer(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer )
{
- dynax_state *state = machine.driver_data<dynax_state>();
+ ddenlovr_state *state = machine.driver_data<ddenlovr_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];
@@ -1295,7 +1499,7 @@ static void copylayer(running_machine &machine, bitmap_ind16 &bitmap, const rect
}
}
-UINT32 dynax_state::screen_update_ddenlovr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+UINT32 ddenlovr_state::screen_update_ddenlovr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
static const int order[24][4] =
{
@@ -1400,24 +1604,24 @@ UINT32 dynax_state::screen_update_ddenlovr(screen_device &screen, bitmap_ind16 &
return 0;
}
-CUSTOM_INPUT_MEMBER(dynax_state::ddenlovr_blitter_irq_r)
+CUSTOM_INPUT_MEMBER(ddenlovr_state::ddenlovr_blitter_irq_r)
{
return m_ddenlovr_blitter_irq_flag;
}
-WRITE16_MEMBER(dynax_state::ddenlovr_coincounter_0_w)
+WRITE16_MEMBER(ddenlovr_state::ddenlovr_coincounter_0_w)
{
if (ACCESSING_BITS_0_7)
coin_counter_w(machine(), 0, data & 1);
}
-WRITE16_MEMBER(dynax_state::ddenlovr_coincounter_1_w)
+WRITE16_MEMBER(ddenlovr_state::ddenlovr_coincounter_1_w)
{
if (ACCESSING_BITS_0_7)
coin_counter_w(machine(), 1, data & 1);
}
-WRITE8_MEMBER(dynax_state::rongrong_palette_w)
+WRITE8_MEMBER(ddenlovr_state::rongrong_palette_w)
{
int r, g, b, d1, d2, indx;
@@ -1435,75 +1639,75 @@ WRITE8_MEMBER(dynax_state::rongrong_palette_w)
palette_set_color_rgb(machine(), indx, pal5bit(r), pal5bit(g), pal5bit(b));
}
-WRITE16_MEMBER(dynax_state::ddenlovr_palette_w)
+WRITE16_MEMBER(ddenlovr_state::ddenlovr_palette_w)
{
if (ACCESSING_BITS_0_7)
rongrong_palette_w(space, offset, data & 0xff);
}
-WRITE8_MEMBER(dynax_state::ddenlovr_palette_base_w)
+WRITE8_MEMBER(ddenlovr_state::ddenlovr_palette_base_w)
{
m_ddenlovr_palette_base[offset] = data;
}
-WRITE8_MEMBER(dynax_state::ddenlovr_palette_base2_w)
+WRITE8_MEMBER(ddenlovr_state::ddenlovr_palette_base2_w)
{
m_ddenlovr_palette_base[offset + 4] = data;
}
-WRITE8_MEMBER(dynax_state::ddenlovr_palette_mask_w)
+WRITE8_MEMBER(ddenlovr_state::ddenlovr_palette_mask_w)
{
m_ddenlovr_palette_mask[offset] = data;
}
-WRITE8_MEMBER(dynax_state::ddenlovr_palette_mask2_w)
+WRITE8_MEMBER(ddenlovr_state::ddenlovr_palette_mask2_w)
{
m_ddenlovr_palette_mask[offset + 4] = data;
}
-WRITE8_MEMBER(dynax_state::ddenlovr_transparency_pen_w)
+WRITE8_MEMBER(ddenlovr_state::ddenlovr_transparency_pen_w)
{
m_ddenlovr_transparency_pen[offset] = data;
}
-WRITE8_MEMBER(dynax_state::ddenlovr_transparency_pen2_w)
+WRITE8_MEMBER(ddenlovr_state::ddenlovr_transparency_pen2_w)
{
m_ddenlovr_transparency_pen[offset + 4] = data;
}
-WRITE8_MEMBER(dynax_state::ddenlovr_transparency_mask_w)
+WRITE8_MEMBER(ddenlovr_state::ddenlovr_transparency_mask_w)
{
m_ddenlovr_transparency_mask[offset] = data;
}
-WRITE8_MEMBER(dynax_state::ddenlovr_transparency_mask2_w)
+WRITE8_MEMBER(ddenlovr_state::ddenlovr_transparency_mask2_w)
{
m_ddenlovr_transparency_mask[offset + 4] = data;
}
-WRITE16_MEMBER(dynax_state::ddenlovr16_palette_base_w)
+WRITE16_MEMBER(ddenlovr_state::ddenlovr16_palette_base_w)
{
if (ACCESSING_BITS_0_7)
m_ddenlovr_palette_base[offset] = data & 0xff;
}
-WRITE16_MEMBER(dynax_state::ddenlovr16_palette_mask_w)
+WRITE16_MEMBER(ddenlovr_state::ddenlovr16_palette_mask_w)
{
if (ACCESSING_BITS_0_7)
m_ddenlovr_palette_mask[offset] = data & 0xff;
}
-WRITE16_MEMBER(dynax_state::ddenlovr16_transparency_pen_w)
+WRITE16_MEMBER(ddenlovr_state::ddenlovr16_transparency_pen_w)
{
if (ACCESSING_BITS_0_7)
m_ddenlovr_transparency_pen[offset] = data & 0xff;
}
-WRITE16_MEMBER(dynax_state::ddenlovr16_transparency_mask_w)
+WRITE16_MEMBER(ddenlovr_state::ddenlovr16_transparency_mask_w)
{
if (ACCESSING_BITS_0_7)
m_ddenlovr_transparency_mask[offset] = data & 0xff;
@@ -1529,7 +1733,7 @@ static WRITE16_DEVICE_HANDLER( ddenlovr_oki_bank_w )
static WRITE16_DEVICE_HANDLER( quiz365_oki_bank1_w )
{
- dynax_state *state = space.machine().driver_data<dynax_state>();
+ ddenlovr_state *state = space.machine().driver_data<ddenlovr_state>();
if (ACCESSING_BITS_0_7)
{
@@ -1541,7 +1745,7 @@ static WRITE16_DEVICE_HANDLER( quiz365_oki_bank1_w )
static WRITE16_DEVICE_HANDLER( quiz365_oki_bank2_w )
{
- dynax_state *state = space.machine().driver_data<dynax_state>();
+ ddenlovr_state *state = space.machine().driver_data<ddenlovr_state>();
if (ACCESSING_BITS_0_7)
{
@@ -1553,12 +1757,12 @@ static WRITE16_DEVICE_HANDLER( quiz365_oki_bank2_w )
-READ8_MEMBER(dynax_state::unk_r)
+READ8_MEMBER(ddenlovr_state::unk_r)
{
return 0x78;
}
-READ16_MEMBER(dynax_state::unk16_r)
+READ16_MEMBER(ddenlovr_state::unk16_r)
{
return unk_r(space, offset);
}
@@ -1566,28 +1770,28 @@ READ16_MEMBER(dynax_state::unk16_r)
static WRITE8_DEVICE_HANDLER( ddenlovr_select_w )
{
- dynax_state *state = space.machine().driver_data<dynax_state>();
+ ddenlovr_state *state = space.machine().driver_data<ddenlovr_state>();
state->m_dsw_sel = data;
}
-WRITE16_MEMBER(dynax_state::ddenlovr_select_16_w)
+WRITE16_MEMBER(ddenlovr_state::ddenlovr_select_16_w)
{
if (ACCESSING_BITS_0_7)
m_dsw_sel = data;
}
-WRITE8_MEMBER(dynax_state::ddenlovr_select2_w)
+WRITE8_MEMBER(ddenlovr_state::ddenlovr_select2_w)
{
m_input_sel = data;
}
-WRITE16_MEMBER(dynax_state::ddenlovr_select2_16_w)
+WRITE16_MEMBER(ddenlovr_state::ddenlovr_select2_16_w)
{
if (ACCESSING_BITS_0_7)
m_input_sel = data;
}
-READ8_MEMBER(dynax_state::rongrong_input2_r)
+READ8_MEMBER(ddenlovr_state::rongrong_input2_r)
{
// logerror("%04x: input2_r offset %d select %x\n", space.device().safe_pc(), offset, m_input_sel);
/* 0 and 1 are read from offset 1, 2 from offset 0... */
@@ -1603,7 +1807,7 @@ READ8_MEMBER(dynax_state::rongrong_input2_r)
static READ8_DEVICE_HANDLER( quiz365_input_r )
{
- dynax_state *state = space.machine().driver_data<dynax_state>();
+ ddenlovr_state *state = space.machine().driver_data<ddenlovr_state>();
if (!BIT(state->m_dsw_sel, 0)) return state->ioport("DSW1")->read();
if (!BIT(state->m_dsw_sel, 1)) return state->ioport("DSW2")->read();
@@ -1613,7 +1817,7 @@ static READ8_DEVICE_HANDLER( quiz365_input_r )
return 0xff;
}
-READ16_MEMBER(dynax_state::quiz365_input2_r)
+READ16_MEMBER(ddenlovr_state::quiz365_input2_r)
{
// logerror("%04x: input2_r offset %d select %x\n",space.device().safe_pc(), offset, m_input_sel);
/* 0 and 1 are read from offset 1, 2 from offset 0... */
@@ -1627,7 +1831,7 @@ READ16_MEMBER(dynax_state::quiz365_input2_r)
}
-WRITE8_MEMBER(dynax_state::rongrong_blitter_busy_w)
+WRITE8_MEMBER(ddenlovr_state::rongrong_blitter_busy_w)
{
m_rongrong_blitter_busy_select = data;
@@ -1635,7 +1839,7 @@ WRITE8_MEMBER(dynax_state::rongrong_blitter_busy_w)
logerror("%04x: rongrong_blitter_busy_w data = %02x\n", space.device().safe_pc(), data);
}
-READ8_MEMBER(dynax_state::rongrong_blitter_busy_r)
+READ8_MEMBER(ddenlovr_state::rongrong_blitter_busy_r)
{
switch (m_rongrong_blitter_busy_select)
{
@@ -1648,7 +1852,7 @@ READ8_MEMBER(dynax_state::rongrong_blitter_busy_r)
}
-WRITE16_MEMBER(dynax_state::quiz365_coincounter_w)
+WRITE16_MEMBER(ddenlovr_state::quiz365_coincounter_w)
{
if (ACCESSING_BITS_0_7)
{
@@ -1664,7 +1868,7 @@ WRITE16_MEMBER(dynax_state::quiz365_coincounter_w)
37,28,12 11 -> 88
67,4c,3a ?? -> 51
*/
-READ16_MEMBER(dynax_state::quiz365_protection_r)
+READ16_MEMBER(ddenlovr_state::quiz365_protection_r)
{
switch (m_quiz365_protection[0])
{
@@ -1675,12 +1879,12 @@ READ16_MEMBER(dynax_state::quiz365_protection_r)
}
}
-WRITE16_MEMBER(dynax_state::quiz365_protection_w)
+WRITE16_MEMBER(ddenlovr_state::quiz365_protection_w)
{
COMBINE_DATA(m_quiz365_protection + offset);
}
-static ADDRESS_MAP_START( quiz365_map, AS_PROGRAM, 16, dynax_state )
+static ADDRESS_MAP_START( quiz365_map, AS_PROGRAM, 16, ddenlovr_state )
AM_RANGE(0x000000, 0x17ffff) AM_ROM // ROM
AM_RANGE(0x200000, 0x2003ff) AM_WRITE(ddenlovr_palette_w) // Palette
@@ -1717,7 +1921,7 @@ static ADDRESS_MAP_START( quiz365_map, AS_PROGRAM, 16, dynax_state )
ADDRESS_MAP_END
-READ16_MEMBER(dynax_state::ddenlovj_dsw_r)
+READ16_MEMBER(ddenlovr_state::ddenlovj_dsw_r)
{
UINT16 dsw = 0;
if ((~*m_dsw_sel16) & 0x01) dsw |= ioport("DSW1")->read();
@@ -1726,7 +1930,7 @@ READ16_MEMBER(dynax_state::ddenlovj_dsw_r)
return dsw;
}
-WRITE16_MEMBER(dynax_state::ddenlovj_coincounter_w)
+WRITE16_MEMBER(ddenlovr_state::ddenlovj_coincounter_w)
{
if (ACCESSING_BITS_0_7)
{
@@ -1736,12 +1940,12 @@ WRITE16_MEMBER(dynax_state::ddenlovj_coincounter_w)
}
}
-CUSTOM_INPUT_MEMBER(dynax_state::ddenlovj_blitter_r)
+CUSTOM_INPUT_MEMBER(ddenlovr_state::ddenlovj_blitter_r)
{
return m_ddenlovr_blitter_irq_flag ? 0x03 : 0x00; // bit 4 = 1 -> blitter busy
}
-static ADDRESS_MAP_START( ddenlovj_map, AS_PROGRAM, 16, dynax_state )
+static ADDRESS_MAP_START( ddenlovj_map, AS_PROGRAM, 16, ddenlovr_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
AM_RANGE(0x200000, 0x2003ff) AM_WRITE(ddenlovr_palette_w) // Palette
@@ -1773,7 +1977,7 @@ static ADDRESS_MAP_START( ddenlovj_map, AS_PROGRAM, 16, dynax_state )
ADDRESS_MAP_END
-READ16_MEMBER(dynax_state::ddenlovrk_protection1_r)
+READ16_MEMBER(ddenlovr_state::ddenlovrk_protection1_r)
{
switch (*m_protection1)
{
@@ -1782,7 +1986,7 @@ READ16_MEMBER(dynax_state::ddenlovrk_protection1_r)
return *m_protection1;
}
-READ16_MEMBER(dynax_state::ddenlovrk_protection2_r)
+READ16_MEMBER(ddenlovr_state::ddenlovrk_protection2_r)
{
switch (*m_protection1)
{
@@ -1790,13 +1994,13 @@ READ16_MEMBER(dynax_state::ddenlovrk_protection2_r)
}
return 0x80;
}
-WRITE16_MEMBER(dynax_state::ddenlovrk_protection2_w)
+WRITE16_MEMBER(ddenlovr_state::ddenlovrk_protection2_w)
{
COMBINE_DATA(m_protection2);
m_oki->set_bank_base(((*m_protection2) & 0x7) * 0x40000);
}
-static ADDRESS_MAP_START( ddenlovrk_map, AS_PROGRAM, 16, dynax_state )
+static ADDRESS_MAP_START( ddenlovrk_map, AS_PROGRAM, 16, ddenlovr_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
AM_RANGE(0x100000, 0x100001) AM_RAM_READ(ddenlovrk_protection1_r) AM_SHARE("protection1")
@@ -1835,7 +2039,7 @@ ADDRESS_MAP_END
-static ADDRESS_MAP_START( ddenlovr_map, AS_PROGRAM, 16, dynax_state )
+static ADDRESS_MAP_START( ddenlovr_map, AS_PROGRAM, 16, ddenlovr_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
AM_RANGE(0x300000, 0x300001) AM_DEVWRITE_LEGACY("oki", ddenlovr_oki_bank_w)
@@ -1871,12 +2075,12 @@ static ADDRESS_MAP_START( ddenlovr_map, AS_PROGRAM, 16, dynax_state )
ADDRESS_MAP_END
-CUSTOM_INPUT_MEMBER(dynax_state::nettoqc_special_r)
+CUSTOM_INPUT_MEMBER(ddenlovr_state::nettoqc_special_r)
{
return m_ddenlovr_blitter_irq_flag ? 0x03 : 0x00;
}
-READ16_MEMBER(dynax_state::nettoqc_input_r)
+READ16_MEMBER(ddenlovr_state::nettoqc_input_r)
{
if (!BIT(m_dsw_sel, 0)) return ioport("DSW1")->read();
if (!BIT(m_dsw_sel, 1)) return ioport("DSW2")->read();
@@ -1891,7 +2095,7 @@ READ16_MEMBER(dynax_state::nettoqc_input_r)
Writes 67 4c 3a to 200e0b then 19 to 200e0d. Expects to read 51 from 200c03
*/
-READ16_MEMBER(dynax_state::nettoqc_protection1_r)
+READ16_MEMBER(ddenlovr_state::nettoqc_protection1_r)
{
switch (*m_protection1 & 0xff)
{
@@ -1900,7 +2104,7 @@ READ16_MEMBER(dynax_state::nettoqc_protection1_r)
}
}
-WRITE16_MEMBER(dynax_state::nettoqc_coincounter_w)
+WRITE16_MEMBER(ddenlovr_state::nettoqc_coincounter_w)
{
if (ACCESSING_BITS_0_7)
{
@@ -1919,7 +2123,7 @@ static WRITE16_DEVICE_HANDLER( nettoqc_oki_bank_w )
}
}
-static ADDRESS_MAP_START( nettoqc_map, AS_PROGRAM, 16, dynax_state )
+static ADDRESS_MAP_START( nettoqc_map, AS_PROGRAM, 16, ddenlovr_state )
AM_RANGE(0x000000, 0x17ffff) AM_ROM // ROM
AM_RANGE(0x200000, 0x2003ff) AM_WRITE(ddenlovr_palette_w) // Palette
@@ -1953,7 +2157,7 @@ static ADDRESS_MAP_START( nettoqc_map, AS_PROGRAM, 16, dynax_state )
ADDRESS_MAP_END
-READ16_MEMBER(dynax_state::ultrchmp_protection2_r)
+READ16_MEMBER(ddenlovr_state::ultrchmp_protection2_r)
{
switch (*m_protection2)
{
@@ -1962,13 +2166,13 @@ READ16_MEMBER(dynax_state::ultrchmp_protection2_r)
}
return *m_protection2;
}
-WRITE16_MEMBER(dynax_state::ultrchmp_protection2_w)
+WRITE16_MEMBER(ddenlovr_state::ultrchmp_protection2_w)
{
// COMBINE_DATA(m_protection2);
m_oki->set_bank_base((data & 0xf) * 0x40000);
}
-static ADDRESS_MAP_START( ultrchmp_map, AS_PROGRAM, 16, dynax_state )
+static ADDRESS_MAP_START( ultrchmp_map, AS_PROGRAM, 16, ddenlovr_state )
AM_RANGE(0x000000, 0x17ffff) AM_ROM // ROM
AM_RANGE(0x224680, 0x224681) AM_RAM_READ(ultrchmp_protection2_r) AM_SHARE("protection2") // Protection 2
@@ -2013,7 +2217,7 @@ ADDRESS_MAP_END
Rong Rong
***************************************************************************/
-READ8_MEMBER(dynax_state::rongrong_input_r)
+READ8_MEMBER(ddenlovr_state::rongrong_input_r)
{
if (!BIT(m_dsw_sel, 0)) return ioport("DSW1")->read();
if (!BIT(m_dsw_sel, 1)) return ioport("DSW2")->read();
@@ -2023,7 +2227,7 @@ READ8_MEMBER(dynax_state::rongrong_input_r)
return 0xff;
}
-WRITE8_MEMBER(dynax_state::rongrong_select_w)
+WRITE8_MEMBER(ddenlovr_state::rongrong_select_w)
{
//logerror("%04x: rongrong_select_w %02x\n",space.device().safe_pc(),data);
@@ -2036,7 +2240,7 @@ WRITE8_MEMBER(dynax_state::rongrong_select_w)
}
-static ADDRESS_MAP_START( quizchq_map, AS_PROGRAM, 8, dynax_state )
+static ADDRESS_MAP_START( quizchq_map, AS_PROGRAM, 8, ddenlovr_state )
AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM
AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM
AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked)
@@ -2044,7 +2248,7 @@ static ADDRESS_MAP_START( quizchq_map, AS_PROGRAM, 8, dynax_state )
AM_RANGE(0x8000, 0x81ff) AM_WRITE(rongrong_palette_w)
ADDRESS_MAP_END
-static ADDRESS_MAP_START( quizchq_portmap, AS_IO, 8, dynax_state )
+static ADDRESS_MAP_START( quizchq_portmap, AS_IO, 8, ddenlovr_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x01) AM_WRITE(rongrong_blitter_w)
AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r)
@@ -2074,7 +2278,7 @@ ADDRESS_MAP_END
-static ADDRESS_MAP_START( rongrong_map, AS_PROGRAM, 8, dynax_state )
+static ADDRESS_MAP_START( rongrong_map, AS_PROGRAM, 8, ddenlovr_state )
AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM
AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM
AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked)
@@ -2082,7 +2286,7 @@ static ADDRESS_MAP_START( rongrong_map, AS_PROGRAM, 8, dynax_state )
AM_RANGE(0xf000, 0xf1ff) AM_WRITE(rongrong_palette_w)
ADDRESS_MAP_END
-static ADDRESS_MAP_START( rongrong_portmap, AS_IO, 8, dynax_state )
+static ADDRESS_MAP_START( rongrong_portmap, AS_IO, 8, ddenlovr_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x01) AM_WRITE(rongrong_blitter_w)
AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r)
@@ -2121,53 +2325,53 @@ a0 input select,a2 input read (protection?)
***************************************************************************/
-READ8_MEMBER(dynax_state::magic_r)
+READ8_MEMBER(ddenlovr_state::magic_r)
{
return 0x01;
}
-WRITE8_MEMBER(dynax_state::mmpanic_rombank_w)
+WRITE8_MEMBER(ddenlovr_state::mmpanic_rombank_w)
{
membank("bank1")->set_entry(data & 0x7);
/* Bit 4? */
}
-WRITE8_MEMBER(dynax_state::mmpanic_soundlatch_w)
+WRITE8_MEMBER(ddenlovr_state::mmpanic_soundlatch_w)
{
soundlatch_byte_w(space, 0, data);
m_soundcpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
}
-WRITE8_MEMBER(dynax_state::mmpanic_blitter_w)
+WRITE8_MEMBER(ddenlovr_state::mmpanic_blitter_w)
{
blitter_w(space, 0, offset, data, 0xdf); // RST 18
}
-WRITE8_MEMBER(dynax_state::mmpanic_blitter2_w)
+WRITE8_MEMBER(ddenlovr_state::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>();
+ ddenlovr_state *state = machine.driver_data<ddenlovr_state>();
set_led_status(machine, 0, state->m_mmpanic_leds);
}
/* leds 1-8 */
-WRITE8_MEMBER(dynax_state::mmpanic_leds_w)
+WRITE8_MEMBER(ddenlovr_state::mmpanic_leds_w)
{
m_mmpanic_leds = (m_mmpanic_leds & 0xff00) | data;
mmpanic_update_leds(machine());
}
/* led 9 */
-WRITE8_MEMBER(dynax_state::mmpanic_leds2_w)
+WRITE8_MEMBER(ddenlovr_state::mmpanic_leds2_w)
{
m_mmpanic_leds = (m_mmpanic_leds & 0xfeff) | (data ? 0x0100 : 0);
mmpanic_update_leds(machine());
}
-WRITE8_MEMBER(dynax_state::mmpanic_lockout_w)
+WRITE8_MEMBER(ddenlovr_state::mmpanic_lockout_w)
{
if (m_dsw_sel == 0x0c)
{
@@ -2177,11 +2381,11 @@ WRITE8_MEMBER(dynax_state::mmpanic_lockout_w)
}
}
-READ8_MEMBER(dynax_state::mmpanic_link_r){ return 0xff; }
+READ8_MEMBER(ddenlovr_state::mmpanic_link_r){ return 0xff; }
/* Main CPU */
-static ADDRESS_MAP_START( mmpanic_map, AS_PROGRAM, 8, dynax_state )
+static ADDRESS_MAP_START( mmpanic_map, AS_PROGRAM, 8, ddenlovr_state )
AM_RANGE(0x0051, 0x0051) AM_READ(magic_r) // ?
AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM
AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM
@@ -2190,7 +2394,7 @@ static ADDRESS_MAP_START( mmpanic_map, AS_PROGRAM, 8, dynax_state )
AM_RANGE(0x8000, 0x81ff) AM_WRITE(rongrong_palette_w)
ADDRESS_MAP_END
-static ADDRESS_MAP_START( mmpanic_portmap, AS_IO, 8, dynax_state )
+static ADDRESS_MAP_START( mmpanic_portmap, AS_IO, 8, ddenlovr_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x0f) AM_DEVREADWRITE("rtc", msm6242_device, read, write)
@@ -2236,13 +2440,13 @@ ADDRESS_MAP_END
/* Sound CPU */
-static ADDRESS_MAP_START( mmpanic_sound_map, AS_PROGRAM, 8, dynax_state )
+static ADDRESS_MAP_START( mmpanic_sound_map, AS_PROGRAM, 8, ddenlovr_state )
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, dynax_state )
+static ADDRESS_MAP_START( mmpanic_sound_portmap, AS_IO, 8, ddenlovr_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READ(soundlatch_byte_r)
AM_RANGE(0x02, 0x02) AM_READNOP // read just before port 00
@@ -2261,7 +2465,7 @@ ADDRESS_MAP_END
/* Main CPU */
-static ADDRESS_MAP_START( funkyfig_map, AS_PROGRAM, 8, dynax_state )
+static ADDRESS_MAP_START( funkyfig_map, AS_PROGRAM, 8, ddenlovr_state )
AM_RANGE(0x0000, 0x5fff) AM_ROM
AM_RANGE(0x6000, 0x6fff) AM_RAM
AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked)
@@ -2272,18 +2476,18 @@ static ADDRESS_MAP_START( funkyfig_map, AS_PROGRAM, 8, dynax_state )
ADDRESS_MAP_END
-READ8_MEMBER(dynax_state::funkyfig_busy_r)
+READ8_MEMBER(ddenlovr_state::funkyfig_busy_r)
{
// bit 0 ?
return 0x00; // bit 7 = blitter busy
}
-WRITE8_MEMBER(dynax_state::funkyfig_blitter_w)
+WRITE8_MEMBER(ddenlovr_state::funkyfig_blitter_w)
{
blitter_w_funkyfig(machine(), 0, offset, data, 0xe0);
}
-WRITE8_MEMBER(dynax_state::funkyfig_rombank_w)
+WRITE8_MEMBER(ddenlovr_state::funkyfig_rombank_w)
{
m_dsw_sel = data;
@@ -2292,7 +2496,7 @@ WRITE8_MEMBER(dynax_state::funkyfig_rombank_w)
membank("bank2")->set_entry(((data & 0xe0) >> 5));
}
-READ8_MEMBER(dynax_state::funkyfig_dsw_r)
+READ8_MEMBER(ddenlovr_state::funkyfig_dsw_r)
{
if (!BIT(m_dsw_sel, 0)) return ioport("DSW1")->read();
if (!BIT(m_dsw_sel, 1)) return ioport("DSW2")->read();
@@ -2301,7 +2505,7 @@ READ8_MEMBER(dynax_state::funkyfig_dsw_r)
return 0xff;
}
-READ8_MEMBER(dynax_state::funkyfig_coin_r)
+READ8_MEMBER(ddenlovr_state::funkyfig_coin_r)
{
switch (m_input_sel)
{
@@ -2312,7 +2516,7 @@ READ8_MEMBER(dynax_state::funkyfig_coin_r)
return 0xff;
}
-READ8_MEMBER(dynax_state::funkyfig_key_r)
+READ8_MEMBER(ddenlovr_state::funkyfig_key_r)
{
switch (m_input_sel)
{
@@ -2323,7 +2527,7 @@ READ8_MEMBER(dynax_state::funkyfig_key_r)
return 0xff;
}
-WRITE8_MEMBER(dynax_state::funkyfig_lockout_w)
+WRITE8_MEMBER(ddenlovr_state::funkyfig_lockout_w)
{
switch (m_input_sel)
{
@@ -2342,7 +2546,7 @@ WRITE8_MEMBER(dynax_state::funkyfig_lockout_w)
}
}
-static ADDRESS_MAP_START( funkyfig_portmap, AS_IO, 8, dynax_state )
+static ADDRESS_MAP_START( funkyfig_portmap, AS_IO, 8, ddenlovr_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("oki", okim6295_device, read, write) // Sound
AM_RANGE(0x01, 0x01) AM_WRITE(mmpanic_leds_w) // Leds
@@ -2375,7 +2579,7 @@ ADDRESS_MAP_END
/* Sound CPU */
-static ADDRESS_MAP_START( funkyfig_sound_portmap, AS_IO, 8, dynax_state )
+static ADDRESS_MAP_START( funkyfig_sound_portmap, AS_IO, 8, ddenlovr_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x02, 0x02) AM_READ(soundlatch_byte_r)
AM_RANGE(0x04, 0x04) AM_READNOP // read only once at the start
@@ -2389,13 +2593,13 @@ ADDRESS_MAP_END
***************************************************************************/
-WRITE8_MEMBER(dynax_state::hanakanz_rombank_w)
+WRITE8_MEMBER(ddenlovr_state::hanakanz_rombank_w)
{
membank("bank1")->set_entry(data & 0x0f);
membank("bank2")->set_entry(((data & 0xf0) >> 4));
}
-static ADDRESS_MAP_START( hanakanz_map, AS_PROGRAM, 8, dynax_state )
+static ADDRESS_MAP_START( hanakanz_map, AS_PROGRAM, 8, ddenlovr_state )
AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM
AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM
AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked)
@@ -2403,17 +2607,17 @@ static ADDRESS_MAP_START( hanakanz_map, AS_PROGRAM, 8, dynax_state )
ADDRESS_MAP_END
-WRITE8_MEMBER(dynax_state::hanakanz_keyb_w)
+WRITE8_MEMBER(ddenlovr_state::hanakanz_keyb_w)
{
m_keyb = data;
}
-WRITE8_MEMBER(dynax_state::hanakanz_dsw_w)
+WRITE8_MEMBER(ddenlovr_state::hanakanz_dsw_w)
{
m_dsw_sel = data;
}
-READ8_MEMBER(dynax_state::hanakanz_keyb_r)
+READ8_MEMBER(ddenlovr_state::hanakanz_keyb_r)
{
UINT8 val = 0xff;
@@ -2427,7 +2631,7 @@ READ8_MEMBER(dynax_state::hanakanz_keyb_r)
return val;
}
-READ8_MEMBER(dynax_state::hanakanz_dsw_r)
+READ8_MEMBER(ddenlovr_state::hanakanz_dsw_r)
{
if (!BIT(m_dsw_sel, 0)) return ioport("DSW1")->read();
if (!BIT(m_dsw_sel, 1)) return ioport("DSW2")->read();
@@ -2437,12 +2641,12 @@ READ8_MEMBER(dynax_state::hanakanz_dsw_r)
return 0xff;
}
-READ8_MEMBER(dynax_state::hanakanz_busy_r)
+READ8_MEMBER(ddenlovr_state::hanakanz_busy_r)
{
return 0x80; // bit 7 == 0 -> blitter busy
}
-READ8_MEMBER(dynax_state::hanakanz_gfxrom_r)
+READ8_MEMBER(ddenlovr_state::hanakanz_gfxrom_r)
{
UINT8 *rom = memregion("blitter")->base();
size_t size = memregion("blitter")->bytes();
@@ -2470,7 +2674,7 @@ READ8_MEMBER(dynax_state::hanakanz_gfxrom_r)
}
-WRITE8_MEMBER(dynax_state::hanakanz_coincounter_w)
+WRITE8_MEMBER(ddenlovr_state::hanakanz_coincounter_w)
{
// bit 0 = coin counter
// bit 1 = out counter
@@ -2488,7 +2692,7 @@ WRITE8_MEMBER(dynax_state::hanakanz_coincounter_w)
#endif
}
-WRITE8_MEMBER(dynax_state::hanakanz_palette_w)
+WRITE8_MEMBER(ddenlovr_state::hanakanz_palette_w)
{
if (m_ddenlovr_blit_latch & 0x80)
{
@@ -2512,12 +2716,12 @@ static WRITE8_DEVICE_HANDLER( hanakanz_oki_bank_w )
oki->set_bank_base((data & 0x40) ? 0x40000 : 0);
}
-READ8_MEMBER(dynax_state::hanakanz_rand_r)
+READ8_MEMBER(ddenlovr_state::hanakanz_rand_r)
{
return machine().rand();
}
-static ADDRESS_MAP_START( hanakanz_portmap, AS_IO, 8, dynax_state )
+static ADDRESS_MAP_START( hanakanz_portmap, AS_IO, 8, ddenlovr_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x2c, 0x2c) AM_READ(hanakanz_busy_r) AM_DEVWRITE_LEGACY("oki", hanakanz_oki_bank_w)
AM_RANGE(0x2e, 0x2e) AM_WRITE(hanakanz_blitter_reg_w)
@@ -2538,7 +2742,7 @@ static ADDRESS_MAP_START( hanakanz_portmap, AS_IO, 8, dynax_state )
ADDRESS_MAP_END
-static ADDRESS_MAP_START( hkagerou_portmap, AS_IO, 8, dynax_state )
+static ADDRESS_MAP_START( hkagerou_portmap, AS_IO, 8, ddenlovr_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x2c, 0x2c) AM_READ(hanakanz_busy_r) AM_DEVWRITE_LEGACY("oki", hanakanz_oki_bank_w)
AM_RANGE(0x2e, 0x2e) AM_WRITE(hanakanz_blitter_reg_w)
@@ -2560,7 +2764,7 @@ ADDRESS_MAP_END
// same as hkagerou, different inputs, no RTC
-static ADDRESS_MAP_START( kotbinyo_portmap, AS_IO, 8, dynax_state )
+static ADDRESS_MAP_START( kotbinyo_portmap, AS_IO, 8, ddenlovr_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x2c, 0x2c) AM_READ(hanakanz_busy_r) AM_DEVWRITE_LEGACY("oki", hanakanz_oki_bank_w)
AM_RANGE(0x2e, 0x2e) AM_WRITE(hanakanz_blitter_reg_w)
@@ -2584,7 +2788,7 @@ ADDRESS_MAP_END
// same as hkagerou, different inputs, no RTC
-static ADDRESS_MAP_START( kotbinsp_portmap, AS_IO, 8, dynax_state )
+static ADDRESS_MAP_START( kotbinsp_portmap, AS_IO, 8, ddenlovr_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x2c, 0x2c) AM_READ(hanakanz_busy_r) AM_DEVWRITE_LEGACY("oki", hanakanz_oki_bank_w)
AM_RANGE(0x2e, 0x2e) AM_WRITE(hanakanz_blitter_reg_w)
@@ -2607,17 +2811,17 @@ static ADDRESS_MAP_START( kotbinsp_portmap, AS_IO, 8, dynax_state )
ADDRESS_MAP_END
-WRITE8_MEMBER(dynax_state::mjreach1_protection_w)
+WRITE8_MEMBER(ddenlovr_state::mjreach1_protection_w)
{
m_prot_val = data;
}
-READ8_MEMBER(dynax_state::mjreach1_protection_r)
+READ8_MEMBER(ddenlovr_state::mjreach1_protection_r)
{
return m_prot_val;
}
-static ADDRESS_MAP_START( mjreach1_portmap, AS_IO, 8, dynax_state )
+static ADDRESS_MAP_START( mjreach1_portmap, AS_IO, 8, ddenlovr_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x2c, 0x2c) AM_READ(hanakanz_busy_r) AM_DEVWRITE_LEGACY("oki", hanakanz_oki_bank_w)
AM_RANGE(0x2e, 0x2e) AM_WRITE(hanakanz_blitter_reg_w)
@@ -2643,7 +2847,7 @@ ADDRESS_MAP_END
Mahjong Chuukanejyo
***************************************************************************/
-READ8_MEMBER(dynax_state::mjchuuka_keyb_r)
+READ8_MEMBER(ddenlovr_state::mjchuuka_keyb_r)
{
UINT8 val = 0xff;
@@ -2661,7 +2865,7 @@ READ8_MEMBER(dynax_state::mjchuuka_keyb_r)
return val;
}
-WRITE8_MEMBER(dynax_state::mjchuuka_blitter_w)
+WRITE8_MEMBER(ddenlovr_state::mjchuuka_blitter_w)
{
hanakanz_blitter_reg_w(space, 0, offset >> 8);
hanakanz_blitter_data_w(space, 0, data);
@@ -2669,7 +2873,7 @@ WRITE8_MEMBER(dynax_state::mjchuuka_blitter_w)
static void mjchuuka_get_romdata(running_machine &machine)
{
- dynax_state *state = machine.driver_data<dynax_state>();
+ ddenlovr_state *state = machine.driver_data<ddenlovr_state>();
UINT8 *rom = state->memregion("blitter")->base();
size_t size = state->memregion("blitter")->bytes();
int address = (state->m_ddenlovr_blit_address & 0xffffff) * 2;
@@ -2684,19 +2888,19 @@ static void mjchuuka_get_romdata(running_machine &machine)
state->m_romdata[1] = rom[address + 1];
}
-READ8_MEMBER(dynax_state::mjchuuka_gfxrom_0_r)
+READ8_MEMBER(ddenlovr_state::mjchuuka_gfxrom_0_r)
{
mjchuuka_get_romdata(machine());
m_ddenlovr_blit_address++;
return m_romdata[0];
}
-READ8_MEMBER(dynax_state::mjchuuka_gfxrom_1_r)
+READ8_MEMBER(ddenlovr_state::mjchuuka_gfxrom_1_r)
{
return m_romdata[1];
}
-WRITE8_MEMBER(dynax_state::mjchuuka_palette_w)
+WRITE8_MEMBER(ddenlovr_state::mjchuuka_palette_w)
{
UINT16 rgb = (offset & 0xff00) | data;
@@ -2716,7 +2920,7 @@ WRITE8_MEMBER(dynax_state::mjchuuka_palette_w)
}
}
-WRITE8_MEMBER(dynax_state::mjchuuka_coincounter_w)
+WRITE8_MEMBER(ddenlovr_state::mjchuuka_coincounter_w)
{
// bit 0 = in counter
// bit 1 = out counter
@@ -2745,7 +2949,7 @@ static WRITE8_DEVICE_HANDLER( mjchuuka_oki_bank_w )
#endif
}
-static ADDRESS_MAP_START( mjchuuka_portmap, AS_IO, 8, dynax_state ) // 16 bit I/O
+static ADDRESS_MAP_START( mjchuuka_portmap, AS_IO, 8, ddenlovr_state ) // 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_LEGACY("oki", mjchuuka_oki_bank_w )
@@ -2773,7 +2977,7 @@ ADDRESS_MAP_END
Mahjong The Mysterious World
***************************************************************************/
-static ADDRESS_MAP_START( mjmyster_map, AS_PROGRAM, 8, dynax_state )
+static ADDRESS_MAP_START( mjmyster_map, AS_PROGRAM, 8, ddenlovr_state )
AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM
AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM
AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked)
@@ -2782,13 +2986,13 @@ static ADDRESS_MAP_START( mjmyster_map, AS_PROGRAM, 8, dynax_state )
AM_RANGE(0xf200, 0xffff) AM_WRITENOP // ""
ADDRESS_MAP_END
-WRITE8_MEMBER(dynax_state::mjmyster_rambank_w)
+WRITE8_MEMBER(ddenlovr_state::mjmyster_rambank_w)
{
membank("bank2")->set_entry(data & 0x07);
//logerror("%04x: rambank = %02x\n", space.device().safe_pc(), data);
}
-WRITE8_MEMBER(dynax_state::mjmyster_select2_w)
+WRITE8_MEMBER(ddenlovr_state::mjmyster_select2_w)
{
m_input_sel = data;
@@ -2796,7 +3000,7 @@ WRITE8_MEMBER(dynax_state::mjmyster_select2_w)
m_keyb = 1;
}
-READ8_MEMBER(dynax_state::mjmyster_coins_r)
+READ8_MEMBER(ddenlovr_state::mjmyster_coins_r)
{
switch (m_input_sel)
{
@@ -2811,7 +3015,7 @@ READ8_MEMBER(dynax_state::mjmyster_coins_r)
return 0xff;
}
-READ8_MEMBER(dynax_state::mjmyster_keyb_r)
+READ8_MEMBER(ddenlovr_state::mjmyster_keyb_r)
{
UINT8 ret = 0xff;
@@ -2827,7 +3031,7 @@ READ8_MEMBER(dynax_state::mjmyster_keyb_r)
return ret;
}
-READ8_MEMBER(dynax_state::mjmyster_dsw_r)
+READ8_MEMBER(ddenlovr_state::mjmyster_dsw_r)
{
if (!BIT(m_dsw_sel, 0)) return ioport("DSW4")->read();
if (!BIT(m_dsw_sel, 1)) return ioport("DSW3")->read();
@@ -2838,7 +3042,7 @@ READ8_MEMBER(dynax_state::mjmyster_dsw_r)
return 0xff;
}
-WRITE8_MEMBER(dynax_state::mjmyster_coincounter_w)
+WRITE8_MEMBER(ddenlovr_state::mjmyster_coincounter_w)
{
switch (m_input_sel)
{
@@ -2856,12 +3060,12 @@ WRITE8_MEMBER(dynax_state::mjmyster_coincounter_w)
}
}
-WRITE8_MEMBER(dynax_state::mjmyster_blitter_w)
+WRITE8_MEMBER(ddenlovr_state::mjmyster_blitter_w)
{
blitter_w(space, 0, offset, data, 0xfc);
}
-static ADDRESS_MAP_START( mjmyster_portmap, AS_IO, 8, dynax_state )
+static ADDRESS_MAP_START( mjmyster_portmap, AS_IO, 8, ddenlovr_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x01) AM_WRITE(mjmyster_blitter_w)
AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r)
@@ -2893,14 +3097,14 @@ ADDRESS_MAP_END
Hanafuda Hana Ginga
***************************************************************************/
-WRITE8_MEMBER(dynax_state::hginga_rombank_w)
+WRITE8_MEMBER(ddenlovr_state::hginga_rombank_w)
{
membank("bank1")->set_entry(data & 0x7);
m_hginga_rombank = data;
}
// similar to rongrong
-READ8_MEMBER(dynax_state::hginga_protection_r)
+READ8_MEMBER(ddenlovr_state::hginga_protection_r)
{
UINT8 *rom = memregion("maincpu")->base();
@@ -2909,7 +3113,7 @@ READ8_MEMBER(dynax_state::hginga_protection_r)
return rom[0x10000 + 0x8000 * (m_hginga_rombank & 0x7) + 0xf601 - 0x8000];
}
-static ADDRESS_MAP_START( hginga_map, AS_PROGRAM, 8, dynax_state )
+static ADDRESS_MAP_START( hginga_map, AS_PROGRAM, 8, ddenlovr_state )
AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM
AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM
AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked)
@@ -2921,7 +3125,7 @@ ADDRESS_MAP_END
static READ8_DEVICE_HANDLER( hginga_dsw_r )
{
- dynax_state *state = space.machine().driver_data<dynax_state>();
+ ddenlovr_state *state = space.machine().driver_data<ddenlovr_state>();
if (!BIT(state->m_dsw_sel, 0)) return state->ioport("DSW4")->read();
if (!BIT(state->m_dsw_sel, 1)) return state->ioport("DSW3")->read();
@@ -2933,13 +3137,13 @@ static READ8_DEVICE_HANDLER( hginga_dsw_r )
return 0xff;
}
-WRITE8_MEMBER(dynax_state::hginga_input_w)
+WRITE8_MEMBER(ddenlovr_state::hginga_input_w)
{
m_input_sel = data;
m_keyb = 0;
}
-READ8_MEMBER(dynax_state::hginga_coins_r)
+READ8_MEMBER(ddenlovr_state::hginga_coins_r)
{
switch (m_input_sel)
{
@@ -2952,12 +3156,12 @@ READ8_MEMBER(dynax_state::hginga_coins_r)
return 0xff;
}
-WRITE8_MEMBER(dynax_state::hginga_80_w)
+WRITE8_MEMBER(ddenlovr_state::hginga_80_w)
{
// popmessage("port 80 = %02x", data);
}
-WRITE8_MEMBER(dynax_state::hginga_coins_w)
+WRITE8_MEMBER(ddenlovr_state::hginga_coins_w)
{
switch (m_input_sel)
{
@@ -2981,7 +3185,7 @@ WRITE8_MEMBER(dynax_state::hginga_coins_w)
}
}
-READ8_MEMBER(dynax_state::hginga_input_r)
+READ8_MEMBER(ddenlovr_state::hginga_input_r)
{
static const char *const keynames0[] = { "KEY0", "KEY1", "KEY2", "KEY3", "KEY4" };
static const char *const keynames1[] = { "KEY5", "KEY6", "KEY7", "KEY8", "KEY9" };
@@ -3003,7 +3207,7 @@ READ8_MEMBER(dynax_state::hginga_input_r)
return 0xff;
}
-WRITE8_MEMBER(dynax_state::hginga_blitter_w)
+WRITE8_MEMBER(ddenlovr_state::hginga_blitter_w)
{
if (offset == 0)
{
@@ -3033,7 +3237,7 @@ WRITE8_MEMBER(dynax_state::hginga_blitter_w)
blitter_w(space, 0, offset, data, 0xfc);
}
-static ADDRESS_MAP_START( hginga_portmap, AS_IO, 8, dynax_state )
+static ADDRESS_MAP_START( hginga_portmap, AS_IO, 8, ddenlovr_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x01) AM_WRITE(hginga_blitter_w)
AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r)
@@ -3066,7 +3270,7 @@ ADDRESS_MAP_END
static UINT8 hgokou_player_r( address_space &space, int player )
{
- dynax_state *state = space.machine().driver_data<dynax_state>();
+ ddenlovr_state *state = space.machine().driver_data<ddenlovr_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 state->ioport(player ? "KEY5" : "KEY0")->read() | hopper_bit;
@@ -3078,12 +3282,12 @@ static UINT8 hgokou_player_r( address_space &space, int player )
return 0x7f; // bit 7 = blitter busy, bit 6 = hopper
}
-WRITE8_MEMBER(dynax_state::hgokou_dsw_sel_w)
+WRITE8_MEMBER(ddenlovr_state::hgokou_dsw_sel_w)
{
m_dsw_sel = data;
}
-READ8_MEMBER(dynax_state::hgokou_input_r)
+READ8_MEMBER(ddenlovr_state::hgokou_input_r)
{
switch (m_dsw_sel)
{
@@ -3096,7 +3300,7 @@ READ8_MEMBER(dynax_state::hgokou_input_r)
return 0xff;
}
-WRITE8_MEMBER(dynax_state::hgokou_input_w)
+WRITE8_MEMBER(ddenlovr_state::hgokou_input_w)
{
switch (m_dsw_sel)
{
@@ -3124,7 +3328,7 @@ WRITE8_MEMBER(dynax_state::hgokou_input_w)
}
// similar to rongrong
-READ8_MEMBER(dynax_state::hgokou_protection_r)
+READ8_MEMBER(ddenlovr_state::hgokou_protection_r)
{
UINT8 *rom = memregion("maincpu")->base();
@@ -3133,7 +3337,7 @@ READ8_MEMBER(dynax_state::hgokou_protection_r)
return rom[0x10000 + 0x8000 * (m_hginga_rombank & 0x7) + 0xe601 - 0x8000];
}
-static ADDRESS_MAP_START( hgokou_map, AS_PROGRAM, 8, dynax_state )
+static ADDRESS_MAP_START( hgokou_map, AS_PROGRAM, 8, ddenlovr_state )
AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM
AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM
AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked)
@@ -3144,7 +3348,7 @@ static ADDRESS_MAP_START( hgokou_map, AS_PROGRAM, 8, dynax_state )
ADDRESS_MAP_END
-static ADDRESS_MAP_START( hgokou_portmap, AS_IO, 8, dynax_state )
+static ADDRESS_MAP_START( hgokou_portmap, AS_IO, 8, ddenlovr_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x01) AM_WRITE(hginga_blitter_w)
AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r)
@@ -3175,7 +3379,7 @@ ADDRESS_MAP_END
Hanafuda Hana Gokou Bangaihen
***************************************************************************/
-READ8_MEMBER(dynax_state::hgokbang_input_r)
+READ8_MEMBER(ddenlovr_state::hgokbang_input_r)
{
UINT8 ret;
switch (m_dsw_sel)
@@ -3199,7 +3403,7 @@ READ8_MEMBER(dynax_state::hgokbang_input_r)
return 0xff;
}
-static ADDRESS_MAP_START( hgokbang_portmap, AS_IO, 8, dynax_state )
+static ADDRESS_MAP_START( hgokbang_portmap, AS_IO, 8, ddenlovr_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x01) AM_WRITE(hginga_blitter_w)
AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r)
@@ -3231,7 +3435,7 @@ ADDRESS_MAP_END
Super Hana Paradise
***************************************************************************/
-WRITE8_MEMBER(dynax_state::hparadis_select_w)
+WRITE8_MEMBER(ddenlovr_state::hparadis_select_w)
{
m_dsw_sel = data;
m_keyb = 0;
@@ -3241,7 +3445,7 @@ WRITE8_MEMBER(dynax_state::hparadis_select_w)
}
-READ8_MEMBER(dynax_state::hparadis_input_r)
+READ8_MEMBER(ddenlovr_state::hparadis_input_r)
{
static const char *const keynames0[] = { "KEY0", "KEY1", "KEY2", "KEY3", "KEY4" };
static const char *const keynames1[] = { "KEY5", "KEY6", "KEY7", "KEY8", "KEY9" };
@@ -3259,7 +3463,7 @@ READ8_MEMBER(dynax_state::hparadis_input_r)
return 0xff;
}
-READ8_MEMBER(dynax_state::hparadis_dsw_r)
+READ8_MEMBER(ddenlovr_state::hparadis_dsw_r)
{
if (!BIT(m_dsw_sel, 0)) return ioport("DSW1")->read();
if (!BIT(m_dsw_sel, 1)) return ioport("DSW2")->read();
@@ -3269,7 +3473,7 @@ READ8_MEMBER(dynax_state::hparadis_dsw_r)
return 0xff;
}
-WRITE8_MEMBER(dynax_state::hparadis_coin_w)
+WRITE8_MEMBER(ddenlovr_state::hparadis_coin_w)
{
switch (m_input_sel)
{
@@ -3280,7 +3484,7 @@ WRITE8_MEMBER(dynax_state::hparadis_coin_w)
}
}
-static ADDRESS_MAP_START( hparadis_map, AS_PROGRAM, 8, dynax_state )
+static ADDRESS_MAP_START( hparadis_map, AS_PROGRAM, 8, ddenlovr_state )
AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM
AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM
AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked)
@@ -3289,7 +3493,7 @@ static ADDRESS_MAP_START( hparadis_map, AS_PROGRAM, 8, dynax_state )
ADDRESS_MAP_END
// the RTC seems unused
-static ADDRESS_MAP_START( hparadis_portmap, AS_IO, 8, dynax_state )
+static ADDRESS_MAP_START( hparadis_portmap, AS_IO, 8, ddenlovr_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x01) AM_WRITE(rongrong_blitter_w)
AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r)
@@ -3317,7 +3521,7 @@ ADDRESS_MAP_END
Mahjong Mysterious World
***************************************************************************/
-READ8_MEMBER(dynax_state::mjmywrld_coins_r)
+READ8_MEMBER(ddenlovr_state::mjmywrld_coins_r)
{
switch (m_input_sel)
{
@@ -3332,7 +3536,7 @@ READ8_MEMBER(dynax_state::mjmywrld_coins_r)
return 0xff;
}
-static ADDRESS_MAP_START( mjmywrld_portmap, AS_IO, 8, dynax_state )
+static ADDRESS_MAP_START( mjmywrld_portmap, AS_IO, 8, ddenlovr_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x01) AM_WRITE(mjmyster_blitter_w)
AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r)
@@ -3365,12 +3569,12 @@ ADDRESS_MAP_END
Panel & Variety Akamaru Q Jousyou Dont-R
***************************************************************************/
-READ16_MEMBER(dynax_state::akamaru_protection1_r)
+READ16_MEMBER(ddenlovr_state::akamaru_protection1_r)
{
return (m_prot_16 & 0x0008) ? 0x0001 : 0x0000;
}
-WRITE16_MEMBER(dynax_state::akamaru_protection1_w)
+WRITE16_MEMBER(ddenlovr_state::akamaru_protection1_w)
{
int bank;
@@ -3382,12 +3586,12 @@ WRITE16_MEMBER(dynax_state::akamaru_protection1_w)
// popmessage("bank $%0x (%d)", m_prot_16, bank);
}
-READ16_MEMBER(dynax_state::akamaru_protection2_r)
+READ16_MEMBER(ddenlovr_state::akamaru_protection2_r)
{
return 0x55;
}
-READ16_MEMBER(dynax_state::akamaru_dsw_r)
+READ16_MEMBER(ddenlovr_state::akamaru_dsw_r)
{
UINT16 dsw = 0;
@@ -3396,17 +3600,17 @@ READ16_MEMBER(dynax_state::akamaru_dsw_r)
return dsw;
}
-READ16_MEMBER(dynax_state::akamaru_blitter_r)
+READ16_MEMBER(ddenlovr_state::akamaru_blitter_r)
{
return m_ddenlovr_blitter_irq_flag << 6; // bit 7 = 1 -> blitter busy
}
-READ16_MEMBER(dynax_state::akamaru_e0010d_r)
+READ16_MEMBER(ddenlovr_state::akamaru_e0010d_r)
{
return 0xffff; // read but not used, it seems
}
-static ADDRESS_MAP_START( akamaru_map, AS_PROGRAM, 16, dynax_state )
+static ADDRESS_MAP_START( akamaru_map, AS_PROGRAM, 16, ddenlovr_state )
AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM
AM_RANGE(0x213570, 0x213571) AM_WRITE(akamaru_protection1_w) // OKI bank
@@ -3456,7 +3660,7 @@ ADDRESS_MAP_END
Mahjong Fantasic Love
***************************************************************************/
-WRITE8_MEMBER(dynax_state::mjflove_rombank_w)
+WRITE8_MEMBER(ddenlovr_state::mjflove_rombank_w)
{
membank("bank1")->set_entry(data & 0xf);
// bit 4 enables palette ram
@@ -3469,12 +3673,12 @@ static WRITE8_DEVICE_HANDLER( mjflove_okibank_w )
//popmessage("SOUND = %02x", data);
}
-READ8_MEMBER(dynax_state::mjflove_protection_r)
+READ8_MEMBER(ddenlovr_state::mjflove_protection_r)
{
return 0x27;
}
-READ8_MEMBER(dynax_state::mjflove_keyb_r)
+READ8_MEMBER(ddenlovr_state::mjflove_keyb_r)
{
UINT8 val = 0xff;
@@ -3487,7 +3691,7 @@ READ8_MEMBER(dynax_state::mjflove_keyb_r)
return val;
}
-CUSTOM_INPUT_MEMBER(dynax_state::mjflove_blitter_r)
+CUSTOM_INPUT_MEMBER(ddenlovr_state::mjflove_blitter_r)
{
// bit 7 = 1 -> blitter busy
// bit 6 = 0 -> VBLANK?
@@ -3495,12 +3699,12 @@ CUSTOM_INPUT_MEMBER(dynax_state::mjflove_blitter_r)
return m_mjflove_irq_cause;
}
-WRITE8_MEMBER(dynax_state::mjflove_blitter_w)
+WRITE8_MEMBER(ddenlovr_state::mjflove_blitter_w)
{
blitter_w(space, 0, offset, data, 0);
}
-WRITE8_MEMBER(dynax_state::mjflove_coincounter_w)
+WRITE8_MEMBER(ddenlovr_state::mjflove_coincounter_w)
{
// bit 0 = in counter
coin_counter_w(machine(), 0, data & 0x01);
@@ -3512,7 +3716,7 @@ WRITE8_MEMBER(dynax_state::mjflove_coincounter_w)
}
}
-static ADDRESS_MAP_START( mjflove_portmap, AS_IO, 8, dynax_state ) // 16 bit I/O
+static ADDRESS_MAP_START( mjflove_portmap, AS_IO, 8, ddenlovr_state ) // 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)
@@ -3552,18 +3756,18 @@ static WRITE8_DEVICE_HANDLER( jongtei_okibank_w )
oki->set_bank_base(((data >> 4) & 0x07) * 0x40000);
}
-WRITE8_MEMBER(dynax_state::jongtei_dsw_keyb_w)
+WRITE8_MEMBER(ddenlovr_state::jongtei_dsw_keyb_w)
{
m_dsw_sel = data;
m_keyb = data;
}
-READ8_MEMBER(dynax_state::jongtei_busy_r)
+READ8_MEMBER(ddenlovr_state::jongtei_busy_r)
{
return 0x04; // !bit 2 = blitter busy
}
-static ADDRESS_MAP_START( jongtei_portmap, AS_IO, 8, dynax_state )
+static ADDRESS_MAP_START( jongtei_portmap, AS_IO, 8, ddenlovr_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x2c, 0x2c) AM_READ(jongtei_busy_r) AM_DEVWRITE_LEGACY("oki", jongtei_okibank_w)
AM_RANGE(0x2e, 0x2e) AM_WRITE(hanakanz_blitter_reg_w)
@@ -3587,7 +3791,7 @@ ADDRESS_MAP_END
Mahjong Seiryu Densetsu
***************************************************************************/
-static ADDRESS_MAP_START( sryudens_map, AS_PROGRAM, 8, dynax_state )
+static ADDRESS_MAP_START( sryudens_map, AS_PROGRAM, 8, ddenlovr_state )
AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM
AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM
AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked)
@@ -3595,7 +3799,7 @@ static ADDRESS_MAP_START( sryudens_map, AS_PROGRAM, 8, dynax_state )
AM_RANGE(0xe000, 0xe1ff) AM_WRITE(rongrong_palette_w)
ADDRESS_MAP_END
-READ8_MEMBER(dynax_state::sryudens_keyb_r)
+READ8_MEMBER(ddenlovr_state::sryudens_keyb_r)
{
UINT8 val = 0x3f;
@@ -3611,7 +3815,7 @@ READ8_MEMBER(dynax_state::sryudens_keyb_r)
return val;
}
-WRITE8_MEMBER(dynax_state::sryudens_coincounter_w)
+WRITE8_MEMBER(ddenlovr_state::sryudens_coincounter_w)
{
// bit 0 = coin counter
// bit 1 = out counter
@@ -3631,13 +3835,13 @@ WRITE8_MEMBER(dynax_state::sryudens_coincounter_w)
#endif
}
-WRITE8_MEMBER(dynax_state::sryudens_rambank_w)
+WRITE8_MEMBER(ddenlovr_state::sryudens_rambank_w)
{
membank("bank2")->set_entry(data & 0x0f);
//logerror("%04x: rambank = %02x\n", space.device().safe_pc(), data);
}
-static ADDRESS_MAP_START( sryudens_portmap, AS_IO, 8, dynax_state )
+static ADDRESS_MAP_START( sryudens_portmap, AS_IO, 8, ddenlovr_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("oki", okim6295_device, read, write)
AM_RANGE(0x02, 0x03) AM_DEVWRITE_LEGACY("ymsnd", ym2413_w)
@@ -3673,7 +3877,7 @@ ADDRESS_MAP_END
Mahjong Janshin Plus
***************************************************************************/
-WRITE8_MEMBER(dynax_state::janshinp_coincounter_w)
+WRITE8_MEMBER(ddenlovr_state::janshinp_coincounter_w)
{
// bit 0 = coin counter
// bit 1 = out counter
@@ -3691,7 +3895,7 @@ WRITE8_MEMBER(dynax_state::janshinp_coincounter_w)
#endif
}
-static ADDRESS_MAP_START( janshinp_map, AS_PROGRAM, 8, dynax_state )
+static ADDRESS_MAP_START( janshinp_map, AS_PROGRAM, 8, ddenlovr_state )
AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM
AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM
AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked)
@@ -3699,7 +3903,7 @@ static ADDRESS_MAP_START( janshinp_map, AS_PROGRAM, 8, dynax_state )
AM_RANGE(0xe000, 0xe1ff) AM_WRITE(rongrong_palette_w)
ADDRESS_MAP_END
-static ADDRESS_MAP_START( janshinp_portmap, AS_IO, 8, dynax_state )
+static ADDRESS_MAP_START( janshinp_portmap, AS_IO, 8, ddenlovr_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW1")
AM_RANGE(0x01, 0x01) AM_READ_PORT("DSW2")
@@ -3736,24 +3940,24 @@ ADDRESS_MAP_END
Return Of Sel Jan II
***************************************************************************/
-READ8_MEMBER(dynax_state::seljan2_busy_r)
+READ8_MEMBER(ddenlovr_state::seljan2_busy_r)
{
return 0x00; // bit 7 = blitter busy
}
-WRITE8_MEMBER(dynax_state::seljan2_rombank_w)
+WRITE8_MEMBER(ddenlovr_state::seljan2_rombank_w)
{
membank("bank1")->set_entry(data & 0x0f); // disable palette?
}
-WRITE8_MEMBER(dynax_state::seljan2_palette_enab_w)
+WRITE8_MEMBER(ddenlovr_state::seljan2_palette_enab_w)
{
membank("bank1")->set_entry((membank("bank1")->entry() & 0x0f) | ((data & 0x01) << 4));
if (data & ~0x01)
logerror("%s: warning, unknown palette_enab bits written = %02x\n", machine().describe_context(), data);
}
-WRITE8_MEMBER(dynax_state::seljan2_palette_w)
+WRITE8_MEMBER(ddenlovr_state::seljan2_palette_w)
{
if ((membank("bank1")->entry() & 0x10) && offset >= 0xb000-0x8000 && offset <= 0xb1ff-0x8000)
{
@@ -3766,7 +3970,7 @@ WRITE8_MEMBER(dynax_state::seljan2_palette_w)
static READ8_DEVICE_HANDLER( seljan2_dsw_r )
{
- dynax_state *state = space.machine().driver_data<dynax_state>();
+ ddenlovr_state *state = space.machine().driver_data<ddenlovr_state>();
if (!BIT(state->m_dsw_sel, 0)) return state->ioport("DSW1")->read();
if (!BIT(state->m_dsw_sel, 1)) return state->ioport("DSW2")->read();
@@ -3778,7 +3982,7 @@ static READ8_DEVICE_HANDLER( seljan2_dsw_r )
return 0xff;
}
-static ADDRESS_MAP_START( seljan2_map, AS_PROGRAM, 8, dynax_state )
+static ADDRESS_MAP_START( seljan2_map, AS_PROGRAM, 8, ddenlovr_state )
AM_RANGE(0x0000, 0x5fff) AM_ROM // ROM
AM_RANGE(0x6000, 0x6fff) AM_RAM // RAM
AM_RANGE(0x7000, 0x7fff) AM_RAMBANK("bank2") // RAM (Banked)
@@ -3786,7 +3990,7 @@ static ADDRESS_MAP_START( seljan2_map, AS_PROGRAM, 8, dynax_state )
AM_RANGE(0x8000, 0xffff) AM_WRITE(seljan2_palette_w)
ADDRESS_MAP_END
-static ADDRESS_MAP_START( seljan2_portmap, AS_IO, 8, dynax_state )
+static ADDRESS_MAP_START( seljan2_portmap, AS_IO, 8, ddenlovr_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x0f) AM_DEVREADWRITE("rtc", msm6242_device, read, write)
AM_RANGE(0x1c, 0x1c) AM_READ(seljan2_busy_r) AM_WRITE(hanakanz_keyb_w)
@@ -3816,10 +4020,242 @@ ADDRESS_MAP_END
/***************************************************************************
+ Hanafuda Hana Tengoku
+***************************************************************************/
+// htengoku uses the mixer chip from ddenlovr
+
+VIDEO_START_MEMBER(ddenlovr_state,htengoku)
+{
+ VIDEO_START_CALL_MEMBER(ddenlovr);
+ VIDEO_START_CALL_MEMBER(hnoridur);
+}
+
+UINT32 ddenlovr_state::screen_update_htengoku(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ int layer, x, y;
+
+ // render the layers, one by one, "dynax.c" style. Then convert the pixmaps to "ddenlovr.c"
+ // format and let SCREEN_UPDATE_IND16(ddenlovr) do the final compositing (priorities + palettes)
+ for (layer = 0; layer < 4; layer++)
+ {
+ bitmap.fill(0, cliprect);
+ hanamai_copylayer(bitmap, cliprect, layer);
+
+ for (y = 0; y < 256; y++)
+ for (x = 0; x < 512; x++)
+ m_ddenlovr_pixmap[3 - layer][y * 512 + x] = (UINT8)(bitmap.pix16(y, x));
+ }
+
+ return screen_update_ddenlovr(screen, bitmap, cliprect);
+}
+
+MACHINE_START_MEMBER(ddenlovr_state,htengoku)
+{
+ UINT8 *ROM = memregion("maincpu")->base();
+
+ membank("bank1")->configure_entries(0, 8, &ROM[0x10000], 0x8000);
+
+ MACHINE_START_CALL_MEMBER(dynax);
+}
+
+WRITE8_MEMBER(ddenlovr_state::htengoku_select_w)
+{
+ m_input_sel = data;
+ m_keyb = 0;
+}
+
+WRITE8_MEMBER(ddenlovr_state::htengoku_dsw_w)
+{
+ m_dsw_sel = data;
+}
+
+READ8_MEMBER(ddenlovr_state::htengoku_dsw_r)
+{
+ if (!BIT(m_dsw_sel, 0)) return ioport("DSW0")->read();
+ if (!BIT(m_dsw_sel, 1)) return ioport("DSW1")->read();
+ if (!BIT(m_dsw_sel, 2)) return ioport("DSW2")->read();
+ if (!BIT(m_dsw_sel, 3)) return ioport("DSW3")->read();
+ if (!BIT(m_dsw_sel, 4)) return ioport("DSW4")->read();
+ logerror("%s: warning, unknown bits read, dsw_sel = %02x\n", machine().describe_context(), m_dsw_sel);
+
+ return 0xff;
+}
+
+WRITE8_MEMBER(ddenlovr_state::htengoku_coin_w)
+{
+ switch (m_input_sel)
+ {
+ case 0x0c:
+ // bit 0 = coin counter
+ // bit 1 = out counter
+ // bit 2 = hopper
+ coin_counter_w(machine(), 0, data & 1);
+ m_hopper = data & 0x04;
+#ifdef MAME_DEBUG
+// popmessage("COINS %02x",data);
+#endif
+ m_coins = data;
+
+ case 0x0d: break; // ff resets input port sequence?
+
+ case 0xff: break; // CRT controller?
+ default:
+ logerror("%04x: coins_w with select = %02x, data = %02x\n", space.device().safe_pc(), m_input_sel, data);
+ }
+}
+
+READ8_MEMBER(ddenlovr_state::htengoku_input_r)
+{
+ static const char *const keynames0[] = { "KEY0", "KEY1", "KEY2", "KEY3", "KEY4" };
+ static const char *const keynames1[] = { "KEY5", "KEY6", "KEY7", "KEY8", "KEY9" };
+
+ switch (m_input_sel)
+ {
+ case 0x81: return ioport(keynames1[m_keyb++])->read();
+ case 0x82: return ioport(keynames0[m_keyb++])->read();
+ case 0x0d: return 0xff; // unused
+ }
+ logerror("%04x: input_r with select = %02x\n", space.device().safe_pc(), m_input_sel);
+ return 0xff;
+}
+
+READ8_MEMBER(ddenlovr_state::htengoku_coin_r)
+{
+ switch (m_input_sel)
+ {
+ case 0x00: return ioport("COINS")->read();
+ case 0x01: return 0xff; //?
+ case 0x02: return 0xbf | ((m_hopper && !(machine().primary_screen->frame_number() % 10)) ? 0 : (1 << 6)); // bit 7 = blitter busy, bit 6 = hopper
+ case 0x03: return m_coins;
+ }
+ logerror("%04x: coin_r with select = %02x\n", space.device().safe_pc(), m_input_sel);
+ return 0xff;
+}
+
+WRITE8_MEMBER(ddenlovr_state::htengoku_rombank_w)
+{
+ membank("bank1")->set_entry(data & 0x07);
+ m_hnoridur_bank = data;
+}
+
+WRITE8_MEMBER(ddenlovr_state::htengoku_blit_romregion_w)
+{
+ switch (data)
+ {
+ case 0x80: dynax_blit_romregion_w(space, 0, 0); return;
+ case 0x81: dynax_blit_romregion_w(space, 0, 1); return;
+ case 0x00: dynax_blit_romregion_w(space, 0, 2); return;
+ }
+ logerror("%04x: unmapped romregion=%02X\n", space.device().safe_pc(), data);
+}
+
+static ADDRESS_MAP_START( htengoku_io_map, AS_IO, 8, ddenlovr_state )
+ ADDRESS_MAP_GLOBAL_MASK(0xff)
+ AM_RANGE( 0x01, 0x07 ) AM_WRITE(dynax_blitter_rev2_w) // Blitter
+ AM_RANGE( 0x20, 0x20 ) AM_WRITE(htengoku_select_w) // Controls
+ AM_RANGE( 0x21, 0x21 ) AM_WRITE(htengoku_coin_w) //
+ AM_RANGE( 0x22, 0x22 ) AM_READ(htengoku_coin_r) //
+ AM_RANGE( 0x23, 0x23 ) AM_READ(htengoku_input_r) //
+ AM_RANGE( 0x40, 0x40 ) AM_DEVWRITE_LEGACY("aysnd", ay8910_address_w) // AY8910
+ AM_RANGE( 0x42, 0x42 ) AM_DEVREAD_LEGACY("aysnd", ay8910_r) //
+ AM_RANGE( 0x44, 0x44 ) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_w) //
+ AM_RANGE( 0x46, 0x47 ) AM_DEVWRITE_LEGACY("ymsnd", ym2413_w) //
+ AM_RANGE( 0x80, 0x8f ) AM_DEVREADWRITE("rtc", msm6242_device, read, write)
+ AM_RANGE( 0xa0, 0xa3 ) AM_WRITE(ddenlovr_palette_base_w) // ddenlovr mixer chip
+ 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)
+ // b0-b3 ?
+ 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( 0xc2, 0xc2 ) AM_WRITE(htengoku_rombank_w) // BANK ROM Select
+ AM_RANGE( 0xc0, 0xc0 ) AM_WRITE(dynax_extra_scrollx_w) // screen scroll X
+ AM_RANGE( 0xc1, 0xc1 ) AM_WRITE(dynax_extra_scrolly_w) // screen scroll Y
+ AM_RANGE( 0xc3, 0xc3 ) AM_WRITE(dynax_vblank_ack_w) // VBlank IRQ Ack
+ AM_RANGE( 0xc4, 0xc4 ) AM_WRITE(dynax_blit_pen_w) // Destination Pen
+ AM_RANGE( 0xc5, 0xc5 ) AM_WRITE(dynax_blit_dest_w) // Destination Layer
+ AM_RANGE( 0xc6, 0xc6 ) AM_WRITE(htengoku_blit_romregion_w) // Blitter ROM bank
+ AM_RANGE( 0xe0, 0xe0 ) AM_WRITE(yarunara_flipscreen_w)
+ AM_RANGE( 0xe1, 0xe1 ) AM_WRITE(yarunara_layer_half_w) // half of the interleaved layer to write to
+ AM_RANGE( 0xe2, 0xe2 ) AM_WRITE(yarunara_layer_half2_w) //
+ AM_RANGE( 0xe5, 0xe5 ) AM_WRITE(dynax_blitter_ack_w) // Blitter IRQ Ack
+ADDRESS_MAP_END
+
+/***************************************************************************
+ Hanafuda Hana Tengoku
+***************************************************************************/
+
+static const ay8910_interface htengoku_ay8910_interface =
+{
+ AY8910_LEGACY_OUTPUT,
+ AY8910_DEFAULT_LOADS,
+ // A B
+ DEVCB_DRIVER_MEMBER(ddenlovr_state,htengoku_dsw_r), DEVCB_NULL, // R
+ DEVCB_NULL, DEVCB_DRIVER_MEMBER(ddenlovr_state,htengoku_dsw_w) // W
+};
+
+static MSM6242_INTERFACE( htengoku_rtc_intf )
+{
+ DEVCB_NULL
+};
+
+static ADDRESS_MAP_START( yarunara_mem_map, AS_PROGRAM, 8, dynax_state )
+ AM_RANGE( 0x0000, 0x5fff ) AM_ROM
+ AM_RANGE( 0x6000, 0x6fff ) AM_RAM
+ AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram")
+ AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK("bank1")
+ AM_RANGE( 0x8000, 0x81ff ) AM_WRITE(yarunara_palette_w) // Palette or RTC
+ADDRESS_MAP_END
+
+static MACHINE_CONFIG_START( htengoku, ddenlovr_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu",Z80,20000000 / 4)
+ MCFG_CPU_PROGRAM_MAP(yarunara_mem_map)
+ MCFG_CPU_IO_MAP(htengoku_io_map)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", ddenlovr_state, sprtmtch_vblank_interrupt) /* IM 0 needs an opcode on the data bus */
+ MCFG_CPU_PERIODIC_INT_DRIVER(ddenlovr_state, yarunara_clock_interrupt, 60) // RTC
+
+ MCFG_MACHINE_START_OVERRIDE(ddenlovr_state,htengoku)
+ MCFG_MACHINE_RESET_OVERRIDE(ddenlovr_state,dynax)
+
+ MCFG_NVRAM_ADD_0FILL("nvram")
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 0+8, 256-1-8)
+ MCFG_SCREEN_UPDATE_DRIVER(ddenlovr_state, screen_update_htengoku)
+
+ MCFG_PALETTE_LENGTH(16*256)
+
+ MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
+ MCFG_VIDEO_START_OVERRIDE(ddenlovr_state,htengoku)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+
+ MCFG_SOUND_ADD("aysnd", AY8910, 20000000 / 16)
+ MCFG_SOUND_CONFIG(htengoku_ay8910_interface)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20)
+
+ MCFG_SOUND_ADD("ymsnd", YM2413, 3579545)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+
+ /* devices */
+ MCFG_MSM6242_ADD("rtc", htengoku_rtc_intf)
+MACHINE_CONFIG_END
+
+
+/***************************************************************************
Mahjong Daimyojin
***************************************************************************/
-READ8_MEMBER(dynax_state::daimyojn_keyb1_r)
+READ8_MEMBER(ddenlovr_state::daimyojn_keyb1_r)
{
UINT8 val = 0x3f;
@@ -3835,7 +4271,7 @@ READ8_MEMBER(dynax_state::daimyojn_keyb1_r)
return val;
}
-READ8_MEMBER(dynax_state::daimyojn_keyb2_r)
+READ8_MEMBER(ddenlovr_state::daimyojn_keyb2_r)
{
UINT8 val = 0x3f;
@@ -3852,12 +4288,12 @@ READ8_MEMBER(dynax_state::daimyojn_keyb2_r)
// 1B18: D4 ED 76 C9 CB
// 1B1D: 96 AF 34 8B 89
-WRITE8_MEMBER(dynax_state::daimyojn_protection_w)
+WRITE8_MEMBER(ddenlovr_state::daimyojn_protection_w)
{
m_prot_val = data;
}
-READ8_MEMBER(dynax_state::daimyojn_protection_r)
+READ8_MEMBER(ddenlovr_state::daimyojn_protection_r)
{
switch (m_prot_val)
{
@@ -3873,7 +4309,7 @@ READ8_MEMBER(dynax_state::daimyojn_protection_r)
// 1ADD: D4 ED 76 C9 CB
// 1AE2: D9 E0 7B C4 C6
-READ8_MEMBER(dynax_state::momotaro_protection_r)
+READ8_MEMBER(ddenlovr_state::momotaro_protection_r)
{
switch (m_prot_val)
{
@@ -3893,12 +4329,12 @@ static WRITE8_DEVICE_HANDLER( daimyojn_okibank_w )
oki->set_bank_base(((data >> 4) & 0x01) * 0x40000);
}
-WRITE8_MEMBER(dynax_state::daimyojn_palette_sel_w)
+WRITE8_MEMBER(ddenlovr_state::daimyojn_palette_sel_w)
{
m_daimyojn_palette_sel = data;
}
-WRITE8_MEMBER(dynax_state::daimyojn_blitter_data_palette_w)
+WRITE8_MEMBER(ddenlovr_state::daimyojn_blitter_data_palette_w)
{
if (m_daimyojn_palette_sel & 0x01)
hanakanz_palette_w(space, offset, data);
@@ -3906,13 +4342,13 @@ WRITE8_MEMBER(dynax_state::daimyojn_blitter_data_palette_w)
hanakanz_blitter_data_w(space, offset, data);
}
-READ8_MEMBER(dynax_state::daimyojn_year_hack_r)
+READ8_MEMBER(ddenlovr_state::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, dynax_state )
+static ADDRESS_MAP_START( daimyojn_portmap, AS_IO, 8, ddenlovr_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x2c, 0x2c) AM_READ(jongtei_busy_r) AM_DEVWRITE_LEGACY("oki", daimyojn_okibank_w)
AM_RANGE(0x2e, 0x2e) AM_WRITE(daimyojn_palette_sel_w)
@@ -3964,7 +4400,7 @@ static INPUT_PORTS_START( ddenlovj )
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_MEMBER(DEVICE_SELF, dynax_state,ddenlovj_blitter_r, NULL) // blitter irq flag? (bit 5) & RTC (bit 6)
+ PORT_BIT( 0x60, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, ddenlovr_state,ddenlovj_blitter_r, NULL) // blitter irq flag? (bit 5) & RTC (bit 6)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL )
PORT_START("DSW1")
@@ -4070,7 +4506,7 @@ static INPUT_PORTS_START( ddenlovr )
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_MEMBER(DEVICE_SELF, dynax_state,ddenlovr_blitter_irq_r, NULL) // blitter irq flag
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, ddenlovr_state,ddenlovr_blitter_irq_r, NULL) // blitter irq flag
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) // blitter busy flag
PORT_START("DSW")
@@ -4125,7 +4561,7 @@ static INPUT_PORTS_START( nettoqc )
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_MEMBER(DEVICE_SELF, dynax_state,nettoqc_special_r, NULL) // ? (bit 5) & blitter irq flag (bit 6)
+ PORT_BIT( 0x60, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, ddenlovr_state,nettoqc_special_r, NULL) // ? (bit 5) & blitter irq flag (bit 6)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL )
PORT_START("DSW1")
@@ -4223,7 +4659,7 @@ static INPUT_PORTS_START( ultrchmp )
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_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, dynax_state,ddenlovr_blitter_irq_r, NULL) // blitter irq flag
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, ddenlovr_state,ddenlovr_blitter_irq_r, NULL) // blitter irq flag
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) // blitter busy flag
PORT_START("DSW")
@@ -4237,6 +4673,143 @@ static INPUT_PORTS_START( ultrchmp )
PORT_DIPUNKNOWN( 0x80, 0x80 )
INPUT_PORTS_END
+INPUT_PORTS_EXTERN( HANAFUDA_KEYS_BET );
+
+static INPUT_PORTS_START( htengoku )
+ PORT_START("COINS")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE4 ) // 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_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // analyzer
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE3 ) // 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_INCLUDE( HANAFUDA_KEYS_BET )
+
+ PORT_START("DSW0") /* IN11 - DSW1 */
+ PORT_DIPNAME( 0x01, 0x01, "Show Girls" )
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x02, 0x02, "Select Stage" )
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x04, 0x04, "Secret Trick" )
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x08, 0x08, "Secret Character" )
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x10, 0x10, "In Game Sounds" )
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, "Guide" )
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Flip_Screen ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ PORT_START("DSW1") /* IN12 - DSW2 */
+ PORT_DIPNAME( 0x07, 0x05, "Payout Rate" )
+ PORT_DIPSETTING( 0x00, "Lowest" )
+ PORT_DIPSETTING( 0x01, "Lower" )
+ PORT_DIPSETTING( 0x02, DEF_STR( Low ) )
+ PORT_DIPSETTING( 0x03, "Bit Low" )
+ PORT_DIPSETTING( 0x04, DEF_STR( Medium ) )
+ PORT_DIPSETTING( 0x05, DEF_STR( High ) )
+ PORT_DIPSETTING( 0x06, DEF_STR( Higher ) )
+ PORT_DIPSETTING( 0x07, DEF_STR( Highest ) )
+ PORT_DIPNAME( 0x08, 0x08, "Payout Wave" )
+ PORT_DIPSETTING( 0x00, "Small" )
+ PORT_DIPSETTING( 0x08, "Big" )
+ PORT_DIPNAME( 0x10, 0x10, "Goko Yaku" )
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x60, 0x60, "Double-Up Win Rate" )
+ PORT_DIPSETTING( 0x00, "65%" )
+ PORT_DIPSETTING( 0x20, "70%" )
+ PORT_DIPSETTING( 0x40, "75%" )
+ PORT_DIPSETTING( 0x60, "80%" )
+ PORT_DIPNAME( 0x80, 0x80, "Unknown 2-7" )
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ PORT_START("DSW2") /* IN13 - DSW3 */
+ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) )
+ 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, "Credits Per Note" )
+ PORT_DIPSETTING( 0x00, "5" )
+ PORT_DIPSETTING( 0x04, "10" )
+ PORT_DIPNAME( 0x08, 0x08, "Max Bet" )
+ PORT_DIPSETTING( 0x08, "5" )
+ PORT_DIPSETTING( 0x00, "10" )
+ PORT_DIPNAME( 0x30, 0x30, "Min Rate To Start" )
+ PORT_DIPSETTING( 0x30, "1" )
+ PORT_DIPSETTING( 0x20, "2" )
+ PORT_DIPSETTING( 0x10, "3" )
+ PORT_DIPSETTING( 0x00, "5" )
+ PORT_DIPNAME( 0xc0, 0xc0, "Credits Limit" )
+ PORT_DIPSETTING( 0xc0, "1000" )
+ PORT_DIPSETTING( 0x80, "2000" )
+ PORT_DIPSETTING( 0x40, "3000" )
+ PORT_DIPSETTING( 0x00, "5000" )
+
+ PORT_START("DSW3") /* IN14 - DSW4 */
+ PORT_DIPNAME( 0x03, 0x03, "Odds For Goko" )
+ PORT_DIPSETTING( 0x03, "100" )
+ PORT_DIPSETTING( 0x02, "200" )
+ PORT_DIPSETTING( 0x01, "250" )
+ PORT_DIPSETTING( 0x00, "300" )
+ PORT_DIPNAME( 0x0c, 0x0c, "Odds For Shiko" )
+ PORT_DIPSETTING( 0x0c, "50" )
+ PORT_DIPSETTING( 0x08, "60" )
+ PORT_DIPSETTING( 0x04, "70" )
+ PORT_DIPSETTING( 0x00, "80" )
+ PORT_DIPNAME( 0x30, 0x30, "Odds For Ameshiko" )
+ PORT_DIPSETTING( 0x30, "20" )
+ PORT_DIPSETTING( 0x20, "30" )
+ PORT_DIPSETTING( 0x10, "40" )
+ PORT_DIPSETTING( 0x00, "50" )
+ PORT_DIPNAME( 0x40, 0x40, "Unknown 4-6" )
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, "Unknown 4-7" )
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ PORT_START("DSW4") /* IN15 - DSWs top bits */
+ PORT_SERVICE( 0x01, IP_ACTIVE_LOW )
+ PORT_DIPNAME( 0x02, 0x02, "Set Clock" )
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ 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, "Pay Out Type" )
+ PORT_DIPSETTING( 0x10, "Credit" )
+ PORT_DIPSETTING( 0x00, "Hopper" )
+ PORT_DIPNAME( 0x20, 0x20, "Hopper Switch" )
+ PORT_DIPSETTING( 0x20, "Active Low" )
+ PORT_DIPSETTING( 0x00, "Active High" )
+ 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 ) )
+INPUT_PORTS_END
+
static INPUT_PORTS_START( quiz365 )
PORT_START("P1")
@@ -4266,7 +4839,7 @@ static INPUT_PORTS_START( quiz365 )
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_MEMBER(DEVICE_SELF, dynax_state,ddenlovr_blitter_irq_r, NULL) // blitter irq flag
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, ddenlovr_state,ddenlovr_blitter_irq_r, NULL) // blitter irq flag
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) // blitter busy flag
PORT_START("DSW1")
@@ -7237,7 +7810,7 @@ static INPUT_PORTS_START( mjflove )
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_MEMBER(DEVICE_SELF, dynax_state,mjflove_blitter_r, NULL) // RTC (bit 5) & blitter irq flag (bit 6)
+ PORT_BIT( 0x60, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, ddenlovr_state,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")
@@ -8723,7 +9296,7 @@ INPUT_PORTS_END
***************************************************************************/
-MACHINE_START_MEMBER(dynax_state,ddenlovr)
+MACHINE_START_MEMBER(ddenlovr_state,ddenlovr)
{
m_maincpu = machine().device<cpu_device>("maincpu");
m_soundcpu = machine().device<cpu_device>("soundcpu");
@@ -8754,7 +9327,7 @@ MACHINE_START_MEMBER(dynax_state,ddenlovr)
save_item(NAME(m_irq_count));
}
-MACHINE_RESET_MEMBER(dynax_state,ddenlovr)
+MACHINE_RESET_MEMBER(ddenlovr_state,ddenlovr)
{
m_input_sel = 0;
m_dsw_sel = 0;
@@ -8782,7 +9355,7 @@ MACHINE_RESET_MEMBER(dynax_state,ddenlovr)
memset(m_palram, 0, ARRAY_LENGTH(m_palram));
}
-MACHINE_START_MEMBER(dynax_state,rongrong)
+MACHINE_START_MEMBER(ddenlovr_state,rongrong)
{
UINT8 *ROM = memregion("maincpu")->base();
membank("bank1")->configure_entries(0, 0x20, &ROM[0x010000], 0x8000);
@@ -8791,7 +9364,7 @@ MACHINE_START_MEMBER(dynax_state,rongrong)
MACHINE_START_CALL_MEMBER(ddenlovr);
}
-MACHINE_START_MEMBER(dynax_state,mmpanic)
+MACHINE_START_MEMBER(ddenlovr_state,mmpanic)
{
UINT8 *ROM = memregion("maincpu")->base();
membank("bank1")->configure_entries(0, 8, &ROM[0x10000], 0x8000);
@@ -8799,7 +9372,7 @@ MACHINE_START_MEMBER(dynax_state,mmpanic)
MACHINE_START_CALL_MEMBER(ddenlovr);
}
-MACHINE_START_MEMBER(dynax_state,funkyfig)
+MACHINE_START_MEMBER(ddenlovr_state,funkyfig)
{
UINT8 *ROM = memregion("maincpu")->base();
membank("bank1")->configure_entries(0, 0x10, &ROM[0x10000], 0x8000);
@@ -8808,7 +9381,7 @@ MACHINE_START_MEMBER(dynax_state,funkyfig)
MACHINE_START_CALL_MEMBER(ddenlovr);
}
-MACHINE_START_MEMBER(dynax_state,hanakanz)
+MACHINE_START_MEMBER(ddenlovr_state,hanakanz)
{
UINT8 *ROM = memregion("maincpu")->base();
membank("bank1")->configure_entries(0, 0x10, &ROM[0x10000], 0x8000);
@@ -8817,7 +9390,7 @@ MACHINE_START_MEMBER(dynax_state,hanakanz)
MACHINE_START_CALL_MEMBER(ddenlovr);
}
-MACHINE_START_MEMBER(dynax_state,mjmyster)
+MACHINE_START_MEMBER(ddenlovr_state,mjmyster)
{
UINT8 *ROM = memregion("maincpu")->base();
membank("bank1")->configure_entries(0, 8, &ROM[0x10000], 0x8000);
@@ -8826,7 +9399,7 @@ MACHINE_START_MEMBER(dynax_state,mjmyster)
MACHINE_START_CALL_MEMBER(ddenlovr);
}
-MACHINE_START_MEMBER(dynax_state,hparadis)
+MACHINE_START_MEMBER(ddenlovr_state,hparadis)
{
UINT8 *ROM = memregion("maincpu")->base();
membank("bank1")->configure_entries(0, 8, &ROM[0x10000], 0x8000);
@@ -8835,7 +9408,7 @@ MACHINE_START_MEMBER(dynax_state,hparadis)
MACHINE_START_CALL_MEMBER(ddenlovr);
}
-MACHINE_START_MEMBER(dynax_state,mjflove)
+MACHINE_START_MEMBER(ddenlovr_state,mjflove)
{
UINT8 *ROM = memregion("maincpu")->base();
membank("bank1")->configure_entries(0, 0x10, &ROM[0x10000], 0x8000);
@@ -8844,7 +9417,7 @@ MACHINE_START_MEMBER(dynax_state,mjflove)
MACHINE_START_CALL_MEMBER(ddenlovr);
}
-MACHINE_START_MEMBER(dynax_state,sryudens)
+MACHINE_START_MEMBER(ddenlovr_state,sryudens)
{
UINT8 *ROM = memregion("maincpu")->base();
membank("bank1")->configure_entries(0, 0x10, &ROM[0x10000], 0x8000);
@@ -8862,15 +9435,15 @@ static MSM6242_INTERFACE( ddenlovr_rtc_intf )
DEVCB_NULL
};
-static MACHINE_CONFIG_START( ddenlovr, dynax_state )
+static MACHINE_CONFIG_START( ddenlovr, ddenlovr_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu",M68000, XTAL_24MHz / 2)
MCFG_CPU_PROGRAM_MAP(ddenlovr_map)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", dynax_state, irq1_line_hold)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", ddenlovr_state, irq1_line_hold)
- MCFG_MACHINE_START_OVERRIDE(dynax_state,ddenlovr)
- MCFG_MACHINE_RESET_OVERRIDE(dynax_state,ddenlovr)
+ MCFG_MACHINE_START_OVERRIDE(ddenlovr_state,ddenlovr)
+ MCFG_MACHINE_RESET_OVERRIDE(ddenlovr_state,ddenlovr)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -8878,12 +9451,12 @@ static MACHINE_CONFIG_START( ddenlovr, dynax_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(336, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 5, 256-16+5-1)
- MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_ddenlovr)
+ MCFG_SCREEN_UPDATE_DRIVER(ddenlovr_state, screen_update_ddenlovr)
MCFG_PALETTE_LENGTH(0x100)
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
- MCFG_VIDEO_START_OVERRIDE(dynax_state,ddenlovr)
+ MCFG_VIDEO_START_OVERRIDE(ddenlovr_state,ddenlovr)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -8955,7 +9528,7 @@ static MACHINE_CONFIG_DERIVED( ultrchmp, nettoqc )
MCFG_NVRAM_ADD_0FILL("nvram")
- MCFG_VIDEO_START_OVERRIDE(dynax_state,mjflove)
+ MCFG_VIDEO_START_OVERRIDE(ddenlovr_state,mjflove)
MACHINE_CONFIG_END
/***************************************************************************
@@ -8969,7 +9542,7 @@ MACHINE_CONFIG_END
0xee is vblank
0xfc is from the 6242RTC
*/
-INTERRUPT_GEN_MEMBER(dynax_state::quizchq_irq)
+INTERRUPT_GEN_MEMBER(ddenlovr_state::quizchq_irq)
{
// int scanline = param;
@@ -8982,26 +9555,26 @@ INTERRUPT_GEN_MEMBER(dynax_state::quizchq_irq)
m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xee);
}
-WRITE_LINE_MEMBER(dynax_state::quizchq_rtc_irq )
+WRITE_LINE_MEMBER(ddenlovr_state::quizchq_rtc_irq )
{
m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xfc);
}
static MSM6242_INTERFACE( quizchq_rtc_intf )
{
- DEVCB_DRIVER_LINE_MEMBER(dynax_state,quizchq_rtc_irq)
+ DEVCB_DRIVER_LINE_MEMBER(ddenlovr_state,quizchq_rtc_irq)
};
-static MACHINE_CONFIG_START( quizchq, dynax_state )
+static MACHINE_CONFIG_START( quizchq, ddenlovr_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_DRIVER("screen", dynax_state, quizchq_irq)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", ddenlovr_state, quizchq_irq)
- MCFG_MACHINE_START_OVERRIDE(dynax_state,rongrong)
- MCFG_MACHINE_RESET_OVERRIDE(dynax_state,ddenlovr)
+ MCFG_MACHINE_START_OVERRIDE(ddenlovr_state,rongrong)
+ MCFG_MACHINE_RESET_OVERRIDE(ddenlovr_state,ddenlovr)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -9009,12 +9582,12 @@ static MACHINE_CONFIG_START( quizchq, dynax_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(336, 256+22)
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 5, 256-16+5-1)
- MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_ddenlovr)
+ MCFG_SCREEN_UPDATE_DRIVER(ddenlovr_state, screen_update_ddenlovr)
MCFG_PALETTE_LENGTH(0x100)
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
- MCFG_VIDEO_START_OVERRIDE(dynax_state,ddenlovr)
+ MCFG_VIDEO_START_OVERRIDE(ddenlovr_state,ddenlovr)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -9050,7 +9623,7 @@ MACHINE_CONFIG_END
RST 20 is from the link device?
*/
-INTERRUPT_GEN_MEMBER(dynax_state::mmpanic_irq)
+INTERRUPT_GEN_MEMBER(ddenlovr_state::mmpanic_irq)
{
//int scanline = param;
@@ -9064,31 +9637,31 @@ INTERRUPT_GEN_MEMBER(dynax_state::mmpanic_irq)
}
-WRITE_LINE_MEMBER(dynax_state::mmpanic_rtc_irq )
+WRITE_LINE_MEMBER(ddenlovr_state::mmpanic_rtc_irq )
{
m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xdf); // RST 18, clock
}
static MSM6242_INTERFACE( mmpanic_rtc_intf )
{
- DEVCB_DRIVER_LINE_MEMBER(dynax_state,mmpanic_rtc_irq)
+ DEVCB_DRIVER_LINE_MEMBER(ddenlovr_state,mmpanic_rtc_irq)
};
-static MACHINE_CONFIG_START( mmpanic, dynax_state )
+static MACHINE_CONFIG_START( mmpanic, ddenlovr_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_DRIVER("screen", dynax_state, mmpanic_irq)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", ddenlovr_state, 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_DRIVER("screen", dynax_state, irq0_line_hold) // NMI by main cpu
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", ddenlovr_state, irq0_line_hold) // NMI by main cpu
- MCFG_MACHINE_START_OVERRIDE(dynax_state,mmpanic)
- MCFG_MACHINE_RESET_OVERRIDE(dynax_state,ddenlovr)
+ MCFG_MACHINE_START_OVERRIDE(ddenlovr_state,mmpanic)
+ MCFG_MACHINE_RESET_OVERRIDE(ddenlovr_state,ddenlovr)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -9096,12 +9669,12 @@ static MACHINE_CONFIG_START( mmpanic, dynax_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(336, 256+22)
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 5, 256-16+5-1)
- MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_ddenlovr)
+ MCFG_SCREEN_UPDATE_DRIVER(ddenlovr_state, screen_update_ddenlovr)
MCFG_PALETTE_LENGTH(0x100)
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
- MCFG_VIDEO_START_OVERRIDE(dynax_state,mmpanic) // extra layers
+ MCFG_VIDEO_START_OVERRIDE(ddenlovr_state,mmpanic) // extra layers
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -9132,7 +9705,7 @@ MACHINE_CONFIG_END
0xe2 is from the 6242RTC
*/
-INTERRUPT_GEN_MEMBER(dynax_state::hanakanz_irq)
+INTERRUPT_GEN_MEMBER(ddenlovr_state::hanakanz_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,
@@ -9143,7 +9716,7 @@ INTERRUPT_GEN_MEMBER(dynax_state::hanakanz_irq)
m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xe0);
}
-WRITE_LINE_MEMBER(dynax_state::hanakanz_rtc_irq)
+WRITE_LINE_MEMBER(ddenlovr_state::hanakanz_rtc_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,
@@ -9156,19 +9729,19 @@ WRITE_LINE_MEMBER(dynax_state::hanakanz_rtc_irq)
static MSM6242_INTERFACE( hanakanz_rtc_intf )
{
- DEVCB_DRIVER_LINE_MEMBER(dynax_state,hanakanz_rtc_irq)
+ DEVCB_DRIVER_LINE_MEMBER(ddenlovr_state,hanakanz_rtc_irq)
};
-static MACHINE_CONFIG_START( hanakanz, dynax_state )
+static MACHINE_CONFIG_START( hanakanz, ddenlovr_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_DRIVER("screen", dynax_state, hanakanz_irq)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", ddenlovr_state, hanakanz_irq)
- MCFG_MACHINE_START_OVERRIDE(dynax_state,hanakanz)
- MCFG_MACHINE_RESET_OVERRIDE(dynax_state,ddenlovr)
+ MCFG_MACHINE_START_OVERRIDE(ddenlovr_state,hanakanz)
+ MCFG_MACHINE_RESET_OVERRIDE(ddenlovr_state,ddenlovr)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -9176,12 +9749,12 @@ static MACHINE_CONFIG_START( hanakanz, dynax_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(336, 256+22)
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 5, 256-11-1)
- MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_ddenlovr)
+ MCFG_SCREEN_UPDATE_DRIVER(ddenlovr_state, screen_update_ddenlovr)
MCFG_PALETTE_LENGTH(0x200)
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
- MCFG_VIDEO_START_OVERRIDE(dynax_state,hanakanz) // blitter commands in the roms are shuffled around
+ MCFG_VIDEO_START_OVERRIDE(ddenlovr_state,hanakanz) // blitter commands in the roms are shuffled around
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -9203,16 +9776,16 @@ static MACHINE_CONFIG_DERIVED( hkagerou, hanakanz )
MCFG_CPU_IO_MAP(hkagerou_portmap)
MACHINE_CONFIG_END
-static MACHINE_CONFIG_START( kotbinyo, dynax_state )
+static MACHINE_CONFIG_START( kotbinyo, ddenlovr_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu",Z80, XTAL_20MHz / 2) // !! KL5C80A12CFP @ 10MHz? (actually 4 times faster than Z80) !!
MCFG_CPU_PROGRAM_MAP(hanakanz_map)
MCFG_CPU_IO_MAP(kotbinyo_portmap)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", dynax_state, hanakanz_irq)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", ddenlovr_state, hanakanz_irq)
- MCFG_MACHINE_START_OVERRIDE(dynax_state,hanakanz)
- MCFG_MACHINE_RESET_OVERRIDE(dynax_state,ddenlovr)
+ MCFG_MACHINE_START_OVERRIDE(ddenlovr_state,hanakanz)
+ MCFG_MACHINE_RESET_OVERRIDE(ddenlovr_state,ddenlovr)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -9220,12 +9793,12 @@ static MACHINE_CONFIG_START( kotbinyo, dynax_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(336, 256+22)
MCFG_SCREEN_VISIBLE_AREA(0, 336-1-1, 1+4, 256-15-1+4)
- MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_ddenlovr)
+ MCFG_SCREEN_UPDATE_DRIVER(ddenlovr_state, screen_update_ddenlovr)
MCFG_PALETTE_LENGTH(0x200)
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
- MCFG_VIDEO_START_OVERRIDE(dynax_state,hanakanz) // blitter commands in the roms are shuffled around
+ MCFG_VIDEO_START_OVERRIDE(ddenlovr_state,hanakanz) // blitter commands in the roms are shuffled around
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -9265,7 +9838,7 @@ MACHINE_CONFIG_END
0xf8 is vblank
0xfa is from the 6242RTC
*/
-INTERRUPT_GEN_MEMBER(dynax_state::mjchuuka_irq)
+INTERRUPT_GEN_MEMBER(ddenlovr_state::mjchuuka_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,
@@ -9276,7 +9849,7 @@ INTERRUPT_GEN_MEMBER(dynax_state::mjchuuka_irq)
m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xf8);
}
-WRITE_LINE_MEMBER(dynax_state::mjchuuka_rtc_irq)
+WRITE_LINE_MEMBER(ddenlovr_state::mjchuuka_rtc_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,
@@ -9289,7 +9862,7 @@ WRITE_LINE_MEMBER(dynax_state::mjchuuka_rtc_irq)
static MSM6242_INTERFACE( mjchuuka_rtc_intf )
{
- DEVCB_DRIVER_LINE_MEMBER(dynax_state,mjchuuka_rtc_irq)
+ DEVCB_DRIVER_LINE_MEMBER(ddenlovr_state,mjchuuka_rtc_irq)
};
static MACHINE_CONFIG_DERIVED( mjchuuka, hanakanz )
@@ -9297,7 +9870,7 @@ static MACHINE_CONFIG_DERIVED( mjchuuka, hanakanz )
/* basic machine hardware */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_IO_MAP(mjchuuka_portmap)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", dynax_state, mjchuuka_irq)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", ddenlovr_state, mjchuuka_irq)
MCFG_DEVICE_MODIFY("rtc")
MCFG_DEVICE_CONFIG(mjchuuka_rtc_intf)
@@ -9311,9 +9884,9 @@ 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_DRIVER("screen", dynax_state, mjchuuka_irq)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", ddenlovr_state, mjchuuka_irq)
- MCFG_MACHINE_START_OVERRIDE(dynax_state,funkyfig)
+ MCFG_MACHINE_START_OVERRIDE(ddenlovr_state,funkyfig)
MCFG_DEVICE_MODIFY("rtc")
MCFG_DEVICE_CONFIG(mjchuuka_rtc_intf)
@@ -9321,7 +9894,7 @@ static MACHINE_CONFIG_DERIVED( funkyfig, mmpanic )
MCFG_CPU_MODIFY("soundcpu")
MCFG_CPU_IO_MAP(funkyfig_sound_portmap)
- MCFG_VIDEO_START_OVERRIDE(dynax_state,ddenlovr) // no extra layers?
+ MCFG_VIDEO_START_OVERRIDE(ddenlovr_state,ddenlovr) // no extra layers?
MACHINE_CONFIG_END
@@ -9342,7 +9915,7 @@ MACHINE_CONFIG_END
to trigger the blitter irq every frame.
*/
-TIMER_DEVICE_CALLBACK_MEMBER(dynax_state::mjmyster_irq)
+TIMER_DEVICE_CALLBACK_MEMBER(ddenlovr_state::mjmyster_irq)
{
int scanline = param;
@@ -9368,7 +9941,7 @@ static const ay8910_interface mjmyster_ay8910_interface =
DEVCB_NULL, DEVCB_HANDLER(ddenlovr_select_w) // W
};
-WRITE_LINE_MEMBER(dynax_state::mjmyster_rtc_irq)
+WRITE_LINE_MEMBER(ddenlovr_state::mjmyster_rtc_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,
@@ -9381,7 +9954,7 @@ WRITE_LINE_MEMBER(dynax_state::mjmyster_rtc_irq)
static MSM6242_INTERFACE( mjmyster_rtc_intf )
{
- DEVCB_DRIVER_LINE_MEMBER(dynax_state,mjmyster_rtc_irq)
+ DEVCB_DRIVER_LINE_MEMBER(ddenlovr_state,mjmyster_rtc_irq)
};
@@ -9393,12 +9966,12 @@ static MACHINE_CONFIG_DERIVED( mjmyster, quizchq )
MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz/2) /* Verified */
MCFG_CPU_PROGRAM_MAP(mjmyster_map)
MCFG_CPU_IO_MAP(mjmyster_portmap)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", dynax_state, mjmyster_irq, "screen", 0, 1)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", ddenlovr_state, mjmyster_irq, "screen", 0, 1)
MCFG_DEVICE_MODIFY("rtc")
MCFG_DEVICE_CONFIG(mjmyster_rtc_intf)
- MCFG_MACHINE_START_OVERRIDE(dynax_state,mjmyster)
+ MCFG_MACHINE_START_OVERRIDE(ddenlovr_state,mjmyster)
MCFG_SOUND_ADD("aysnd", AY8910, 3579545)
MCFG_SOUND_CONFIG(mjmyster_ay8910_interface)
@@ -9415,7 +9988,7 @@ MACHINE_CONFIG_END
0xfa and/or 0xfc are from the blitter (almost identical)
0xee triggered by the RTC
*/
-INTERRUPT_GEN_MEMBER(dynax_state::hginga_irq)
+INTERRUPT_GEN_MEMBER(ddenlovr_state::hginga_irq)
{
// int scanline = param;
@@ -9437,7 +10010,7 @@ static const ay8910_interface hginga_ay8910_interface =
DEVCB_NULL, DEVCB_HANDLER(ddenlovr_select_w) // W
};
-WRITE_LINE_MEMBER(dynax_state::hginga_rtc_irq)
+WRITE_LINE_MEMBER(ddenlovr_state::hginga_rtc_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,
@@ -9450,7 +10023,7 @@ WRITE_LINE_MEMBER(dynax_state::hginga_rtc_irq)
static MSM6242_INTERFACE( hginga_rtc_intf )
{
- DEVCB_DRIVER_LINE_MEMBER(dynax_state,hginga_rtc_irq)
+ DEVCB_DRIVER_LINE_MEMBER(ddenlovr_state,hginga_rtc_irq)
};
static MACHINE_CONFIG_DERIVED( hginga, quizchq )
@@ -9459,12 +10032,12 @@ static MACHINE_CONFIG_DERIVED( hginga, quizchq )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(hginga_map)
MCFG_CPU_IO_MAP(hginga_portmap)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", dynax_state, hginga_irq)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", ddenlovr_state, hginga_irq)
MCFG_DEVICE_MODIFY("rtc")
MCFG_DEVICE_CONFIG(hginga_rtc_intf)
- MCFG_MACHINE_START_OVERRIDE(dynax_state,mjmyster)
+ MCFG_MACHINE_START_OVERRIDE(ddenlovr_state,mjmyster)
MCFG_SOUND_ADD("aysnd", AY8910, 3579545)
MCFG_SOUND_CONFIG(hginga_ay8910_interface)
@@ -9477,12 +10050,12 @@ static MACHINE_CONFIG_DERIVED( hgokou, quizchq )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(hgokou_map)
MCFG_CPU_IO_MAP(hgokou_portmap)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", dynax_state, hginga_irq)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", ddenlovr_state, hginga_irq)
MCFG_DEVICE_MODIFY("rtc")
MCFG_DEVICE_CONFIG(hginga_rtc_intf)
- MCFG_MACHINE_START_OVERRIDE(dynax_state,mjmyster)
+ MCFG_MACHINE_START_OVERRIDE(ddenlovr_state,mjmyster)
MCFG_SOUND_ADD("aysnd", AY8910, 3579545)
MCFG_SOUND_CONFIG(hginga_ay8910_interface)
@@ -9513,9 +10086,9 @@ static MACHINE_CONFIG_DERIVED( mjmyuniv, quizchq )
MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz/2) /* Verified */
MCFG_CPU_PROGRAM_MAP(mjmyster_map)
MCFG_CPU_IO_MAP(mjmyster_portmap)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", dynax_state, mjmyster_irq, "screen", 0, 1)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", ddenlovr_state, mjmyster_irq, "screen", 0, 1)
- MCFG_MACHINE_START_OVERRIDE(dynax_state,mjmyster)
+ MCFG_MACHINE_START_OVERRIDE(ddenlovr_state,mjmyster)
MCFG_DEVICE_MODIFY("rtc")
MCFG_DEVICE_CONFIG(mjmyster_rtc_intf)
@@ -9533,9 +10106,9 @@ static MACHINE_CONFIG_DERIVED( mjmyornt, quizchq )
MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz/2) /* Verified */
MCFG_CPU_PROGRAM_MAP(quizchq_map)
MCFG_CPU_IO_MAP(mjmyster_portmap)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", dynax_state, mjmyster_irq, "screen", 0, 1)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", ddenlovr_state, mjmyster_irq, "screen", 0, 1)
- MCFG_MACHINE_START_OVERRIDE(dynax_state,mjmyster)
+ MCFG_MACHINE_START_OVERRIDE(ddenlovr_state,mjmyster)
MCFG_DEVICE_MODIFY("rtc")
MCFG_DEVICE_CONFIG(mjmyster_rtc_intf)
@@ -9546,13 +10119,13 @@ static MACHINE_CONFIG_DERIVED( mjmyornt, quizchq )
MACHINE_CONFIG_END
-INTERRUPT_GEN_MEMBER(dynax_state::mjflove_irq)
+INTERRUPT_GEN_MEMBER(ddenlovr_state::mjflove_irq)
{
m_mjflove_irq_cause = 1;
m_maincpu->set_input_line(0, HOLD_LINE);
}
-WRITE_LINE_MEMBER(dynax_state::mjflove_rtc_irq)
+WRITE_LINE_MEMBER(ddenlovr_state::mjflove_rtc_irq)
{
m_mjflove_irq_cause = 2;
m_maincpu->set_input_line(0, HOLD_LINE);
@@ -9560,7 +10133,7 @@ WRITE_LINE_MEMBER(dynax_state::mjflove_rtc_irq)
static MSM6242_INTERFACE( mjflove_rtc_intf )
{
- DEVCB_DRIVER_LINE_MEMBER(dynax_state,mjflove_rtc_irq)
+ DEVCB_DRIVER_LINE_MEMBER(ddenlovr_state,mjflove_rtc_irq)
};
static MACHINE_CONFIG_DERIVED( mjflove, quizchq )
@@ -9571,14 +10144,14 @@ static MACHINE_CONFIG_DERIVED( mjflove, quizchq )
MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz/2) /* Verified */
MCFG_CPU_PROGRAM_MAP(rongrong_map)
MCFG_CPU_IO_MAP(mjflove_portmap)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", dynax_state, mjflove_irq)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", ddenlovr_state, mjflove_irq)
- MCFG_MACHINE_START_OVERRIDE(dynax_state,mjflove)
+ MCFG_MACHINE_START_OVERRIDE(ddenlovr_state,mjflove)
MCFG_DEVICE_MODIFY("rtc")
MCFG_DEVICE_CONFIG(mjflove_rtc_intf)
- MCFG_VIDEO_START_OVERRIDE(dynax_state,mjflove) // blitter commands in the roms are shuffled around
+ MCFG_VIDEO_START_OVERRIDE(ddenlovr_state,mjflove) // blitter commands in the roms are shuffled around
MCFG_SOUND_ADD("aysnd", AY8910, 28636363/8)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
@@ -9586,7 +10159,7 @@ MACHINE_CONFIG_END
/* It runs in IM 2, thus needs a vector on the data bus:
0xee is vblank */
-INTERRUPT_GEN_MEMBER(dynax_state::hparadis_irq)
+INTERRUPT_GEN_MEMBER(ddenlovr_state::hparadis_irq)
{
device.execute().set_input_line_and_vector(0, HOLD_LINE, 0xee);
}
@@ -9597,23 +10170,23 @@ static MACHINE_CONFIG_DERIVED( hparadis, quizchq )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(hparadis_map)
MCFG_CPU_IO_MAP(hparadis_portmap)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", dynax_state, hparadis_irq)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", ddenlovr_state, hparadis_irq)
- MCFG_MACHINE_START_OVERRIDE(dynax_state,hparadis)
+ MCFG_MACHINE_START_OVERRIDE(ddenlovr_state,hparadis)
MACHINE_CONFIG_END
-static MACHINE_CONFIG_START( jongtei, dynax_state )
+static MACHINE_CONFIG_START( jongtei, ddenlovr_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_DRIVER("screen", dynax_state, hanakanz_irq)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", ddenlovr_state, hanakanz_irq)
- MCFG_MACHINE_START_OVERRIDE(dynax_state,hanakanz)
- MCFG_MACHINE_RESET_OVERRIDE(dynax_state,ddenlovr)
+ MCFG_MACHINE_START_OVERRIDE(ddenlovr_state,hanakanz)
+ MCFG_MACHINE_RESET_OVERRIDE(ddenlovr_state,ddenlovr)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -9621,12 +10194,12 @@ static MACHINE_CONFIG_START( jongtei, dynax_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(336, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 5, 256-11-1)
- MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_ddenlovr)
+ MCFG_SCREEN_UPDATE_DRIVER(ddenlovr_state, screen_update_ddenlovr)
MCFG_PALETTE_LENGTH(0x200)
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
- MCFG_VIDEO_START_OVERRIDE(dynax_state,hanakanz) // blitter commands in the roms are shuffled around
+ MCFG_VIDEO_START_OVERRIDE(ddenlovr_state,hanakanz) // blitter commands in the roms are shuffled around
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -9645,16 +10218,16 @@ MACHINE_CONFIG_END
Mahjong Seiryu Densetsu
***************************************************************************/
-static MACHINE_CONFIG_START( sryudens, dynax_state )
+static MACHINE_CONFIG_START( sryudens, ddenlovr_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_DRIVER("screen", dynax_state, mjchuuka_irq)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", ddenlovr_state, mjchuuka_irq)
- MCFG_MACHINE_START_OVERRIDE(dynax_state,sryudens)
- MCFG_MACHINE_RESET_OVERRIDE(dynax_state,ddenlovr)
+ MCFG_MACHINE_START_OVERRIDE(ddenlovr_state,sryudens)
+ MCFG_MACHINE_RESET_OVERRIDE(ddenlovr_state,ddenlovr)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -9662,12 +10235,12 @@ static MACHINE_CONFIG_START( sryudens, dynax_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(336, 256+22)
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 0+5, 256-12-1)
- MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_ddenlovr)
+ MCFG_SCREEN_UPDATE_DRIVER(ddenlovr_state, screen_update_ddenlovr)
MCFG_PALETTE_LENGTH(0x100)
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
- MCFG_VIDEO_START_OVERRIDE(dynax_state,mjflove) // blitter commands in the roms are shuffled around
+ MCFG_VIDEO_START_OVERRIDE(ddenlovr_state,mjflove) // blitter commands in the roms are shuffled around
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -9690,16 +10263,16 @@ MACHINE_CONFIG_END
***************************************************************************/
// PCB: NM7001004
-static MACHINE_CONFIG_START( janshinp, dynax_state )
+static MACHINE_CONFIG_START( janshinp, ddenlovr_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu",Z80, XTAL_16MHz / 2)
MCFG_CPU_PROGRAM_MAP(janshinp_map)
MCFG_CPU_IO_MAP(janshinp_portmap)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", dynax_state, mjchuuka_irq)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", ddenlovr_state, mjchuuka_irq)
- MCFG_MACHINE_START_OVERRIDE(dynax_state,hanakanz)
- MCFG_MACHINE_RESET_OVERRIDE(dynax_state,ddenlovr)
+ MCFG_MACHINE_START_OVERRIDE(ddenlovr_state,hanakanz)
+ MCFG_MACHINE_RESET_OVERRIDE(ddenlovr_state,ddenlovr)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -9707,12 +10280,12 @@ static MACHINE_CONFIG_START( janshinp, dynax_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(336, 256+22)
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 0+5, 256-12-1)
- MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_ddenlovr)
+ MCFG_SCREEN_UPDATE_DRIVER(ddenlovr_state, screen_update_ddenlovr)
MCFG_PALETTE_LENGTH(0x100)
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
- MCFG_VIDEO_START_OVERRIDE(dynax_state,ddenlovr)
+ MCFG_VIDEO_START_OVERRIDE(ddenlovr_state,ddenlovr)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -9733,7 +10306,7 @@ MACHINE_CONFIG_END
// Same PCB as janshinp
static MACHINE_CONFIG_DERIVED( dtoyoken, janshinp )
- MCFG_VIDEO_START_OVERRIDE(dynax_state,mjflove) // blitter commands in the roms are shuffled around
+ MCFG_VIDEO_START_OVERRIDE(ddenlovr_state,mjflove) // blitter commands in the roms are shuffled around
MACHINE_CONFIG_END
@@ -9750,7 +10323,7 @@ static const ay8910_interface seljan2_ay8910_interface =
DEVCB_NULL, DEVCB_HANDLER(ddenlovr_select_w) // W
};
-MACHINE_START_MEMBER(dynax_state,seljan2)
+MACHINE_START_MEMBER(ddenlovr_state,seljan2)
{
UINT8 *ROM = memregion("maincpu")->base();
@@ -9764,16 +10337,16 @@ MACHINE_START_MEMBER(dynax_state,seljan2)
MACHINE_START_CALL_MEMBER(ddenlovr);
}
-static MACHINE_CONFIG_START( seljan2, dynax_state )
+static MACHINE_CONFIG_START( seljan2, ddenlovr_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu",Z80, XTAL_16MHz / 2)
MCFG_CPU_PROGRAM_MAP(seljan2_map)
MCFG_CPU_IO_MAP(seljan2_portmap)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", dynax_state, mjchuuka_irq)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", ddenlovr_state, mjchuuka_irq)
- MCFG_MACHINE_START_OVERRIDE(dynax_state,seljan2)
- MCFG_MACHINE_RESET_OVERRIDE(dynax_state,ddenlovr)
+ MCFG_MACHINE_START_OVERRIDE(ddenlovr_state,seljan2)
+ MCFG_MACHINE_RESET_OVERRIDE(ddenlovr_state,ddenlovr)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -9781,12 +10354,12 @@ static MACHINE_CONFIG_START( seljan2, dynax_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(336, 256+22)
MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 0+5, 256-12-1)
- MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_ddenlovr)
+ MCFG_SCREEN_UPDATE_DRIVER(ddenlovr_state, screen_update_ddenlovr)
MCFG_PALETTE_LENGTH(0x100)
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
- MCFG_VIDEO_START_OVERRIDE(dynax_state,mjflove) // blitter commands in the roms are shuffled around
+ MCFG_VIDEO_START_OVERRIDE(ddenlovr_state,mjflove) // blitter commands in the roms are shuffled around
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -9811,16 +10384,16 @@ MACHINE_CONFIG_END
***************************************************************************/
-static MACHINE_CONFIG_START( daimyojn, dynax_state )
+static MACHINE_CONFIG_START( daimyojn, ddenlovr_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_DRIVER("screen", dynax_state, hanakanz_irq)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", ddenlovr_state, hanakanz_irq)
- MCFG_MACHINE_START_OVERRIDE(dynax_state,mjflove)
- MCFG_MACHINE_RESET_OVERRIDE(dynax_state,ddenlovr)
+ MCFG_MACHINE_START_OVERRIDE(ddenlovr_state,mjflove)
+ MCFG_MACHINE_RESET_OVERRIDE(ddenlovr_state,ddenlovr)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -9828,12 +10401,12 @@ static MACHINE_CONFIG_START( daimyojn, dynax_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(336, 256+22)
MCFG_SCREEN_VISIBLE_AREA(0, 336-1-1, 1, 256-15-1)
- MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_ddenlovr)
+ MCFG_SCREEN_UPDATE_DRIVER(ddenlovr_state, screen_update_ddenlovr)
MCFG_PALETTE_LENGTH(0x200)
MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
- MCFG_VIDEO_START_OVERRIDE(dynax_state,hanakanz) // blitter commands in the roms are shuffled around
+ MCFG_VIDEO_START_OVERRIDE(ddenlovr_state,hanakanz) // blitter commands in the roms are shuffled around
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -10557,7 +11130,7 @@ ROM_START( ddenlovrb )
ROM_LOAD( "rom1", 0x000000, 0x080000, CRC(ba4723e8) SHA1(fd32b33bd43773fed083990b59a3994f4a631b04) )
ROM_END
-DRIVER_INIT_MEMBER(dynax_state,rongrong)
+DRIVER_INIT_MEMBER(ddenlovr_state,rongrong)
{
/* Rong Rong seems to have a protection that works this way:
- write 01 to port c2
@@ -11919,11 +12492,85 @@ ROM_START( seljan2 )
ROM_LOAD( "5571.1c", 0x000000, 0x80000, CRC(5a8cd45c) SHA1(25ca573b8ba226fb3f2de48c57b5ced6884eaa63) ) // = 50201.1c (sryudens)
ROM_END
-DRIVER_INIT_MEMBER(dynax_state,momotaro)
+DRIVER_INIT_MEMBER(ddenlovr_state,momotaro)
{
- machine().device("maincpu")->memory().space(AS_IO).install_read_handler(0xe0, 0xe0, read8_delegate(FUNC(dynax_state::momotaro_protection_r),this));
+ machine().device("maincpu")->memory().space(AS_IO).install_read_handler(0xe0, 0xe0, read8_delegate(FUNC(ddenlovr_state::momotaro_protection_r),this));
}
+/***************************************************************************
+
+Hanafuda Hana Tengoku
+(c)1992 Dynax
+
+D6502208L1
+CPU : TMP91P640? (surface scratched)
+Sound : AY38910A/P(YM2149F version exists), YM2413
+OSC : 20.00000MHz, 14.31818MHz, ?(near 6242)
+Others: M6242B(RTC), battery
+DIPs : 10 position (x4), 4 position (x1)
+ROMs : 6501.4B
+ 6509.10B
+ 6510.11B
+
+D6107068L-1
+ROMs : 6502.1A
+ 6503.2A
+ 6504.1B
+ 6505.2B
+ 6506.4C
+ 6507.5C
+ 6508.6C
+
+dumped by sayu
+--- Team Japump!!! ---
+
+
+Daughterboard number - D6107068L-1
+Top daughterboard has most of the ROMs
+Mainboard has roms labelled 6501, 6509, 6510
+The main board is almost like a few other Dynax Mahjong PCB's I've
+documented, so most of the details should be the same. The layout is
+similar to Mysterious World.
+
+Mainboard number - D6502208L1
+Mainboard main parts include.....
+AY3-8910
+YM2413
+RAM TC5563 x1
+RAM 2018 x1
+RAM HM53461 x6 (plus 2 empty spaces for 2 more)
+RAM TC524256 x2
+M6242 RTC + BATTERY
+Two scratched SDIP64 chips (possibly NL-001 and NL-002 or similar)
+Another scratched chip QFP64.... should be another known Dynax IC.
+DIP40 chip near ROM 6501... surface scratched too. Probably Z80
+XTALs - 20Mz, 14.31818MHz
+DSWs - 4x 10-position, 1x 4-position
+
+***************************************************************************/
+
+ROM_START( htengoku )
+ ROM_REGION( 0x50000, "maincpu", 0 ) // Z80 Code
+ ROM_LOAD( "6501.4b", 0x00000, 0x40000, CRC(29a7fc83) SHA1(5d3cf0a72918e58b5b60f7c978e559c7c1306bce) )
+ ROM_RELOAD( 0x10000, 0x40000 )
+
+ ROM_REGION( 0x80000, "gfx1", 0 ) // blitter data
+ ROM_LOAD( "6506.4c", 0x00000, 0x80000, CRC(7de17b26) SHA1(326667063ab045ac50e850f2f7821a65317879ad) )
+
+ ROM_REGION( 0xc0000, "gfx2", 0 ) // blitter data
+ ROM_LOAD( "6507.5c", 0x00000, 0x20000, CRC(ced3155b) SHA1(658e3947781f1be2ee87b43952999281c66683a6) )
+ ROM_LOAD( "6508.6c", 0x20000, 0x20000, CRC(ca46ed48) SHA1(0769ac0b211181b7b57033f09f72828c885186cc) )
+ ROM_LOAD( "6505.2b", 0x40000, 0x20000, CRC(161058fd) SHA1(cfc21abdc036e874d34bfa3c60486a5ab87cf9cd) )
+ ROM_LOAD( "6504.1b", 0x60000, 0x20000, CRC(b2ca9838) SHA1(7104697802a0466fab40414a467146a224eb6a74) )
+ ROM_LOAD( "6503.2a", 0x80000, 0x20000, CRC(6ac42304) SHA1(ce822da6d61e68578c08c9f1d0af1557c64ac5ae) )
+ ROM_LOAD( "6502.1a", 0xa0000, 0x20000, CRC(9276a10a) SHA1(5a68fff20631a2002509d6cace06b5a9fa0e75d2) )
+
+ ROM_REGION( 0xa0000, "gfx3", 0 ) // blitter data
+ ROM_LOAD( "6509.10b", 0x00000, 0x80000, CRC(f8524c28) SHA1(d50b99664c9f0735838adb55aa7db53e58a43f99) )
+ ROM_LOAD( "6510.11b", 0x80000, 0x20000, CRC(0fdd6edf) SHA1(c6870ab538987110337e6e154cba98391c68fb98) )
+ROM_END
+
+GAME( 1992, htengoku, 0, htengoku, htengoku, driver_device, 0, ROT180, "Dynax", "Hanafuda Hana Tengoku (Japan)", GAME_SUPPORTS_SAVE )
GAME( 1992, mmpanic, 0, mmpanic, mmpanic, driver_device, 0, ROT0, "Nakanihon / East Technology (Taito license)", "Monkey Mole Panic (USA)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
GAME( 1993, funkyfig, 0, funkyfig, funkyfig, driver_device, 0, ROT0, "Nakanihon / East Technology (Taito license)", "The First Funky Fighter", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS ) // scrolling, priority?
GAME( 1993, quizchq, 0, quizchq, quizchq, driver_device, 0, ROT0, "Nakanihon", "Quiz Channel Question (Ver 1.00) (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
@@ -11938,9 +12585,9 @@ GAME( 1994, mjmyornt, 0, mjmyornt, mjmyornt, driver_device, 0, R
GAME( 1994, mjmyuniv, 0, mjmyuniv, mjmyster, driver_device, 0, ROT0, "Dynax", "Mahjong The Mysterious Universe", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
GAME( 1994, quiz365, 0, quiz365, quiz365, driver_device, 0, ROT0, "Nakanihon", "Quiz 365 (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS | GAME_UNEMULATED_PROTECTION )
GAME( 1994, quiz365t, quiz365, quiz365, quiz365, driver_device, 0, ROT0, "Nakanihon / Taito", "Quiz 365 (Hong Kong & Taiwan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS | GAME_UNEMULATED_PROTECTION )
-GAME( 1994, rongrong, 0, rongrong, rongrong, dynax_state, rongrong, ROT0, "Nakanihon (Activision license)", "Puzzle Game Rong Rong (Europe)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE | GAME_IMPERFECT_COLORS )
-GAME( 1994, rongrongj, rongrong, rongrong, rongrong, dynax_state, rongrong, ROT0, "Nakanihon (Activision license)", "Puzzle Game Rong Rong (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE | GAME_IMPERFECT_COLORS )
-GAME( 1994, rongrongg, rongrong, rongrong, rongrong, dynax_state, rongrong, ROT0, "Nakanihon (Activision license)", "Puzzle Game Rong Rong (Germany)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE | GAME_IMPERFECT_COLORS )
+GAME( 1994, rongrong, 0, rongrong, rongrong, ddenlovr_state, rongrong, ROT0, "Nakanihon (Activision license)", "Puzzle Game Rong Rong (Europe)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE | GAME_IMPERFECT_COLORS )
+GAME( 1994, rongrongj, rongrong, rongrong, rongrong, ddenlovr_state, rongrong, ROT0, "Nakanihon (Activision license)", "Puzzle Game Rong Rong (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE | GAME_IMPERFECT_COLORS )
+GAME( 1994, rongrongg, rongrong, rongrong, rongrong, ddenlovr_state, rongrong, ROT0, "Nakanihon (Activision license)", "Puzzle Game Rong Rong (Germany)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE | GAME_IMPERFECT_COLORS )
GAME( 1994, hparadis, 0, hparadis, hparadis, driver_device, 0, ROT0, "Dynax", "Super Hana Paradise (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
GAME( 1995, hgokou, 0, hgokou, hgokou, driver_device, 0, ROT0, "Dynax (Alba license)", "Hanafuda Hana Gokou (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
GAME( 1995, hgokbang, hgokou, hgokbang, hgokou, driver_device, 0, ROT0, "Dynax", "Hanafuda Hana Gokou Bangaihen (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
@@ -11965,4 +12612,4 @@ GAME( 1998, mjchuuka, 0, mjchuuka, mjchuuka, driver_device, 0, R
GAME( 1998, mjreach1, 0, mjreach1, mjreach1, driver_device, 0, ROT0, "Nihon System", "Mahjong Reach Ippatsu (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
GAME( 1999, jongtei, 0, jongtei, jongtei, driver_device, 0, ROT0, "Dynax", "Mahjong Jong-Tei (Japan, ver. NM532-01)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
GAME( 2002, daimyojn, 0, daimyojn, daimyojn, driver_device, 0, ROT0, "Dynax / Techno-Top / Techno-Planning", "Mahjong Daimyojin (Japan, T017-PB-00)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 2004, momotaro, 0, daimyojn, daimyojn, dynax_state, momotaro, ROT0, "Techno-Top", "Mahjong Momotarou (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS | GAME_NOT_WORKING )
+GAME( 2004, momotaro, 0, daimyojn, daimyojn, ddenlovr_state, momotaro, ROT0, "Techno-Top", "Mahjong Momotarou (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS | GAME_NOT_WORKING )
diff --git a/src/mame/drivers/dynax.c b/src/mame/drivers/dynax.c
index 244e5c9cf1f..cece02fe93b 100644
--- a/src/mame/drivers/dynax.c
+++ b/src/mame/drivers/dynax.c
@@ -1095,136 +1095,6 @@ ADDRESS_MAP_END
/***************************************************************************
- Hanafuda Hana Tengoku
-***************************************************************************/
-
-WRITE8_MEMBER(dynax_state::htengoku_select_w)
-{
- m_input_sel = data;
- m_keyb = 0;
-}
-
-WRITE8_MEMBER(dynax_state::htengoku_dsw_w)
-{
- m_dsw_sel = data;
-}
-
-READ8_MEMBER(dynax_state::htengoku_dsw_r)
-{
- if (!BIT(m_dsw_sel, 0)) return ioport("DSW0")->read();
- if (!BIT(m_dsw_sel, 1)) return ioport("DSW1")->read();
- if (!BIT(m_dsw_sel, 2)) return ioport("DSW2")->read();
- if (!BIT(m_dsw_sel, 3)) return ioport("DSW3")->read();
- if (!BIT(m_dsw_sel, 4)) return ioport("DSW4")->read();
- logerror("%s: warning, unknown bits read, dsw_sel = %02x\n", machine().describe_context(), m_dsw_sel);
-
- return 0xff;
-}
-
-WRITE8_MEMBER(dynax_state::htengoku_coin_w)
-{
- switch (m_input_sel)
- {
- case 0x0c:
- // bit 0 = coin counter
- // bit 1 = out counter
- // bit 2 = hopper
- coin_counter_w(machine(), 0, data & 1);
- m_hopper = data & 0x04;
-#ifdef MAME_DEBUG
-// popmessage("COINS %02x",data);
-#endif
- m_coins = data;
-
- case 0x0d: break; // ff resets input port sequence?
-
- case 0xff: break; // CRT controller?
- default:
- logerror("%04x: coins_w with select = %02x, data = %02x\n", space.device().safe_pc(), m_input_sel, data);
- }
-}
-
-READ8_MEMBER(dynax_state::htengoku_input_r)
-{
- static const char *const keynames0[] = { "KEY0", "KEY1", "KEY2", "KEY3", "KEY4" };
- static const char *const keynames1[] = { "KEY5", "KEY6", "KEY7", "KEY8", "KEY9" };
-
- switch (m_input_sel)
- {
- case 0x81: return ioport(keynames1[m_keyb++])->read();
- case 0x82: return ioport(keynames0[m_keyb++])->read();
- case 0x0d: return 0xff; // unused
- }
- logerror("%04x: input_r with select = %02x\n", space.device().safe_pc(), m_input_sel);
- return 0xff;
-}
-
-READ8_MEMBER(dynax_state::htengoku_coin_r)
-{
- switch (m_input_sel)
- {
- case 0x00: return ioport("COINS")->read();
- case 0x01: return 0xff; //?
- case 0x02: return 0xbf | ((m_hopper && !(machine().primary_screen->frame_number() % 10)) ? 0 : (1 << 6)); // bit 7 = blitter busy, bit 6 = hopper
- case 0x03: return m_coins;
- }
- logerror("%04x: coin_r with select = %02x\n", space.device().safe_pc(), m_input_sel);
- return 0xff;
-}
-
-WRITE8_MEMBER(dynax_state::htengoku_rombank_w)
-{
- membank("bank1")->set_entry(data & 0x07);
- m_hnoridur_bank = data;
-}
-
-WRITE8_MEMBER(dynax_state::htengoku_blit_romregion_w)
-{
- switch (data)
- {
- case 0x80: dynax_blit_romregion_w(space, 0, 0); return;
- case 0x81: dynax_blit_romregion_w(space, 0, 1); return;
- case 0x00: dynax_blit_romregion_w(space, 0, 2); return;
- }
- logerror("%04x: unmapped romregion=%02X\n", space.device().safe_pc(), data);
-}
-
-static ADDRESS_MAP_START( htengoku_io_map, AS_IO, 8, dynax_state )
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x01, 0x07 ) AM_WRITE(dynax_blitter_rev2_w) // Blitter
- AM_RANGE( 0x20, 0x20 ) AM_WRITE(htengoku_select_w) // Controls
- AM_RANGE( 0x21, 0x21 ) AM_WRITE(htengoku_coin_w) //
- AM_RANGE( 0x22, 0x22 ) AM_READ(htengoku_coin_r) //
- AM_RANGE( 0x23, 0x23 ) AM_READ(htengoku_input_r) //
- AM_RANGE( 0x40, 0x40 ) AM_DEVWRITE_LEGACY("aysnd", ay8910_address_w) // AY8910
- AM_RANGE( 0x42, 0x42 ) AM_DEVREAD_LEGACY("aysnd", ay8910_r) //
- AM_RANGE( 0x44, 0x44 ) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_w) //
- AM_RANGE( 0x46, 0x47 ) AM_DEVWRITE_LEGACY("ymsnd", ym2413_w) //
- AM_RANGE( 0x80, 0x8f ) AM_DEVREADWRITE("rtc", msm6242_device, read, write)
- AM_RANGE( 0xa0, 0xa3 ) AM_WRITE(ddenlovr_palette_base_w) // ddenlovr mixer chip
- 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)
- // b0-b3 ?
- 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( 0xc2, 0xc2 ) AM_WRITE(htengoku_rombank_w) // BANK ROM Select
- AM_RANGE( 0xc0, 0xc0 ) AM_WRITE(dynax_extra_scrollx_w) // screen scroll X
- AM_RANGE( 0xc1, 0xc1 ) AM_WRITE(dynax_extra_scrolly_w) // screen scroll Y
- AM_RANGE( 0xc3, 0xc3 ) AM_WRITE(dynax_vblank_ack_w) // VBlank IRQ Ack
- AM_RANGE( 0xc4, 0xc4 ) AM_WRITE(dynax_blit_pen_w) // Destination Pen
- AM_RANGE( 0xc5, 0xc5 ) AM_WRITE(dynax_blit_dest_w) // Destination Layer
- AM_RANGE( 0xc6, 0xc6 ) AM_WRITE(htengoku_blit_romregion_w) // Blitter ROM bank
- AM_RANGE( 0xe0, 0xe0 ) AM_WRITE(yarunara_flipscreen_w)
- AM_RANGE( 0xe1, 0xe1 ) AM_WRITE(yarunara_layer_half_w) // half of the interleaved layer to write to
- AM_RANGE( 0xe2, 0xe2 ) AM_WRITE(yarunara_layer_half2_w) //
- AM_RANGE( 0xe5, 0xe5 ) AM_WRITE(dynax_blitter_ack_w) // Blitter IRQ Ack
-ADDRESS_MAP_END
-
-
-/***************************************************************************
Mahjong Tenkaigen
***************************************************************************/
@@ -1895,7 +1765,7 @@ static INPUT_PORTS_START( HANAFUDA_KEYS )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
-static INPUT_PORTS_START( HANAFUDA_KEYS_BET )
+INPUT_PORTS_START( HANAFUDA_KEYS_BET )
PORT_START("KEY0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_HANAFUDA_A ) PORT_PLAYER(1)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_E ) PORT_PLAYER(1)
@@ -3967,141 +3837,6 @@ static INPUT_PORTS_START( mjreach )
PORT_INCLUDE( MAHJONG_KEYS_BET )
INPUT_PORTS_END
-static INPUT_PORTS_START( htengoku )
- PORT_START("COINS")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE4 ) // 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_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // analyzer
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE3 ) // 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_INCLUDE( HANAFUDA_KEYS_BET )
-
- PORT_START("DSW0") /* IN11 - DSW1 */
- PORT_DIPNAME( 0x01, 0x01, "Show Girls" )
- PORT_DIPSETTING( 0x00, DEF_STR( No ) )
- PORT_DIPSETTING( 0x01, DEF_STR( Yes ) )
- PORT_DIPNAME( 0x02, 0x02, "Select Stage" )
- PORT_DIPSETTING( 0x00, DEF_STR( No ) )
- PORT_DIPSETTING( 0x02, DEF_STR( Yes ) )
- PORT_DIPNAME( 0x04, 0x04, "Secret Trick" )
- PORT_DIPSETTING( 0x00, DEF_STR( No ) )
- PORT_DIPSETTING( 0x04, DEF_STR( Yes ) )
- PORT_DIPNAME( 0x08, 0x08, "Secret Character" )
- PORT_DIPSETTING( 0x00, DEF_STR( No ) )
- PORT_DIPSETTING( 0x08, DEF_STR( Yes ) )
- PORT_DIPNAME( 0x10, 0x10, "In Game Sounds" )
- PORT_DIPSETTING( 0x00, DEF_STR( No ) )
- PORT_DIPSETTING( 0x10, DEF_STR( Yes ) )
- PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) )
- PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x20, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x40, "Guide" )
- PORT_DIPSETTING( 0x00, DEF_STR( No ) )
- PORT_DIPSETTING( 0x40, DEF_STR( Yes ) )
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Flip_Screen ) )
- PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
-
- PORT_START("DSW1") /* IN12 - DSW2 */
- PORT_DIPNAME( 0x07, 0x05, "Payout Rate" )
- PORT_DIPSETTING( 0x00, "Lowest" )
- PORT_DIPSETTING( 0x01, "Lower" )
- PORT_DIPSETTING( 0x02, DEF_STR( Low ) )
- PORT_DIPSETTING( 0x03, "Bit Low" )
- PORT_DIPSETTING( 0x04, DEF_STR( Medium ) )
- PORT_DIPSETTING( 0x05, DEF_STR( High ) )
- PORT_DIPSETTING( 0x06, DEF_STR( Higher ) )
- PORT_DIPSETTING( 0x07, DEF_STR( Highest ) )
- PORT_DIPNAME( 0x08, 0x08, "Payout Wave" )
- PORT_DIPSETTING( 0x00, "Small" )
- PORT_DIPSETTING( 0x08, "Big" )
- PORT_DIPNAME( 0x10, 0x10, "Goko Yaku" )
- PORT_DIPSETTING( 0x00, DEF_STR( No ) )
- PORT_DIPSETTING( 0x10, DEF_STR( Yes ) )
- PORT_DIPNAME( 0x60, 0x60, "Double-Up Win Rate" )
- PORT_DIPSETTING( 0x00, "65%" )
- PORT_DIPSETTING( 0x20, "70%" )
- PORT_DIPSETTING( 0x40, "75%" )
- PORT_DIPSETTING( 0x60, "80%" )
- PORT_DIPNAME( 0x80, 0x80, "Unknown 2-7" )
- PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
-
- PORT_START("DSW2") /* IN13 - DSW3 */
- PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) )
- 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, "Credits Per Note" )
- PORT_DIPSETTING( 0x00, "5" )
- PORT_DIPSETTING( 0x04, "10" )
- PORT_DIPNAME( 0x08, 0x08, "Max Bet" )
- PORT_DIPSETTING( 0x08, "5" )
- PORT_DIPSETTING( 0x00, "10" )
- PORT_DIPNAME( 0x30, 0x30, "Min Rate To Start" )
- PORT_DIPSETTING( 0x30, "1" )
- PORT_DIPSETTING( 0x20, "2" )
- PORT_DIPSETTING( 0x10, "3" )
- PORT_DIPSETTING( 0x00, "5" )
- PORT_DIPNAME( 0xc0, 0xc0, "Credits Limit" )
- PORT_DIPSETTING( 0xc0, "1000" )
- PORT_DIPSETTING( 0x80, "2000" )
- PORT_DIPSETTING( 0x40, "3000" )
- PORT_DIPSETTING( 0x00, "5000" )
-
- PORT_START("DSW3") /* IN14 - DSW4 */
- PORT_DIPNAME( 0x03, 0x03, "Odds For Goko" )
- PORT_DIPSETTING( 0x03, "100" )
- PORT_DIPSETTING( 0x02, "200" )
- PORT_DIPSETTING( 0x01, "250" )
- PORT_DIPSETTING( 0x00, "300" )
- PORT_DIPNAME( 0x0c, 0x0c, "Odds For Shiko" )
- PORT_DIPSETTING( 0x0c, "50" )
- PORT_DIPSETTING( 0x08, "60" )
- PORT_DIPSETTING( 0x04, "70" )
- PORT_DIPSETTING( 0x00, "80" )
- PORT_DIPNAME( 0x30, 0x30, "Odds For Ameshiko" )
- PORT_DIPSETTING( 0x30, "20" )
- PORT_DIPSETTING( 0x20, "30" )
- PORT_DIPSETTING( 0x10, "40" )
- PORT_DIPSETTING( 0x00, "50" )
- PORT_DIPNAME( 0x40, 0x40, "Unknown 4-6" )
- PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x80, "Unknown 4-7" )
- PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
-
- PORT_START("DSW4") /* IN15 - DSWs top bits */
- PORT_SERVICE( 0x01, IP_ACTIVE_LOW )
- PORT_DIPNAME( 0x02, 0x02, "Set Clock" )
- PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- 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, "Pay Out Type" )
- PORT_DIPSETTING( 0x10, "Credit" )
- PORT_DIPSETTING( 0x00, "Hopper" )
- PORT_DIPNAME( 0x20, 0x20, "Hopper Switch" )
- PORT_DIPSETTING( 0x20, "Active Low" )
- PORT_DIPSETTING( 0x00, "Active High" )
- 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 ) )
-INPUT_PORTS_END
-
static INPUT_PORTS_START( gekisha )
PORT_START("DSW1") // $7C20
PORT_DIPNAME( 0x0f, 0x07, "Pay Out Rate" )
@@ -4329,15 +4064,6 @@ MACHINE_START_MEMBER(dynax_state,hnoridur)
MACHINE_START_CALL_MEMBER(dynax);
}
-MACHINE_START_MEMBER(dynax_state,htengoku)
-{
- UINT8 *ROM = memregion("maincpu")->base();
-
- membank("bank1")->configure_entries(0, 8, &ROM[0x10000], 0x8000);
-
- MACHINE_START_CALL_MEMBER(dynax);
-}
-
/***************************************************************************
Hana no Mai
***************************************************************************/
@@ -4881,66 +4607,6 @@ static MACHINE_CONFIG_DERIVED( majxtal7, neruton )
MACHINE_CONFIG_END
-/***************************************************************************
- Hanafuda Hana Tengoku
-***************************************************************************/
-
-static const ay8910_interface htengoku_ay8910_interface =
-{
- AY8910_LEGACY_OUTPUT,
- AY8910_DEFAULT_LOADS,
- // A B
- DEVCB_DRIVER_MEMBER(dynax_state,htengoku_dsw_r), DEVCB_NULL, // R
- DEVCB_NULL, DEVCB_DRIVER_MEMBER(dynax_state,htengoku_dsw_w) // W
-};
-
-static MSM6242_INTERFACE( htengoku_rtc_intf )
-{
- DEVCB_NULL
-};
-
-
-static MACHINE_CONFIG_START( htengoku, dynax_state )
-
- /* basic machine hardware */
- MCFG_CPU_ADD("maincpu",Z80,20000000 / 4)
- MCFG_CPU_PROGRAM_MAP(yarunara_mem_map)
- MCFG_CPU_IO_MAP(htengoku_io_map)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", dynax_state, sprtmtch_vblank_interrupt) /* IM 0 needs an opcode on the data bus */
- MCFG_CPU_PERIODIC_INT_DRIVER(dynax_state, yarunara_clock_interrupt, 60) // RTC
-
- MCFG_MACHINE_START_OVERRIDE(dynax_state,htengoku)
- MCFG_MACHINE_RESET_OVERRIDE(dynax_state,dynax)
-
- MCFG_NVRAM_ADD_0FILL("nvram")
-
- /* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(512, 256)
- MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 0+8, 256-1-8)
- MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_htengoku)
-
- MCFG_PALETTE_LENGTH(16*256)
-
- MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
- MCFG_VIDEO_START_OVERRIDE(dynax_state,htengoku)
-
- /* sound hardware */
- MCFG_SPEAKER_STANDARD_MONO("mono")
-
- MCFG_SOUND_ADD("aysnd", AY8910, 20000000 / 16)
- MCFG_SOUND_CONFIG(htengoku_ay8910_interface)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20)
-
- MCFG_SOUND_ADD("ymsnd", YM2413, 3579545)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
-
- /* devices */
- MCFG_MSM6242_ADD("rtc", htengoku_rtc_intf)
-MACHINE_CONFIG_END
-
/***************************************************************************
Mahjong Tenkaigen
@@ -7202,79 +6868,6 @@ ROM_END
/***************************************************************************
-Hanafuda Hana Tengoku
-(c)1992 Dynax
-
-D6502208L1
-CPU : TMP91P640? (surface scratched)
-Sound : AY38910A/P(YM2149F version exists), YM2413
-OSC : 20.00000MHz, 14.31818MHz, ?(near 6242)
-Others: M6242B(RTC), battery
-DIPs : 10 position (x4), 4 position (x1)
-ROMs : 6501.4B
- 6509.10B
- 6510.11B
-
-D6107068L-1
-ROMs : 6502.1A
- 6503.2A
- 6504.1B
- 6505.2B
- 6506.4C
- 6507.5C
- 6508.6C
-
-dumped by sayu
---- Team Japump!!! ---
-
-
-Daughterboard number - D6107068L-1
-Top daughterboard has most of the ROMs
-Mainboard has roms labelled 6501, 6509, 6510
-The main board is almost like a few other Dynax Mahjong PCB's I've
-documented, so most of the details should be the same. The layout is
-similar to Mysterious World.
-
-Mainboard number - D6502208L1
-Mainboard main parts include.....
-AY3-8910
-YM2413
-RAM TC5563 x1
-RAM 2018 x1
-RAM HM53461 x6 (plus 2 empty spaces for 2 more)
-RAM TC524256 x2
-M6242 RTC + BATTERY
-Two scratched SDIP64 chips (possibly NL-001 and NL-002 or similar)
-Another scratched chip QFP64.... should be another known Dynax IC.
-DIP40 chip near ROM 6501... surface scratched too. Probably Z80
-XTALs - 20Mz, 14.31818MHz
-DSWs - 4x 10-position, 1x 4-position
-
-***************************************************************************/
-
-ROM_START( htengoku )
- ROM_REGION( 0x50000, "maincpu", 0 ) // Z80 Code
- ROM_LOAD( "6501.4b", 0x00000, 0x40000, CRC(29a7fc83) SHA1(5d3cf0a72918e58b5b60f7c978e559c7c1306bce) )
- ROM_RELOAD( 0x10000, 0x40000 )
-
- ROM_REGION( 0x80000, "gfx1", 0 ) // blitter data
- ROM_LOAD( "6506.4c", 0x00000, 0x80000, CRC(7de17b26) SHA1(326667063ab045ac50e850f2f7821a65317879ad) )
-
- ROM_REGION( 0xc0000, "gfx2", 0 ) // blitter data
- ROM_LOAD( "6507.5c", 0x00000, 0x20000, CRC(ced3155b) SHA1(658e3947781f1be2ee87b43952999281c66683a6) )
- ROM_LOAD( "6508.6c", 0x20000, 0x20000, CRC(ca46ed48) SHA1(0769ac0b211181b7b57033f09f72828c885186cc) )
- ROM_LOAD( "6505.2b", 0x40000, 0x20000, CRC(161058fd) SHA1(cfc21abdc036e874d34bfa3c60486a5ab87cf9cd) )
- ROM_LOAD( "6504.1b", 0x60000, 0x20000, CRC(b2ca9838) SHA1(7104697802a0466fab40414a467146a224eb6a74) )
- ROM_LOAD( "6503.2a", 0x80000, 0x20000, CRC(6ac42304) SHA1(ce822da6d61e68578c08c9f1d0af1557c64ac5ae) )
- ROM_LOAD( "6502.1a", 0xa0000, 0x20000, CRC(9276a10a) SHA1(5a68fff20631a2002509d6cace06b5a9fa0e75d2) )
-
- ROM_REGION( 0xa0000, "gfx3", 0 ) // blitter data
- ROM_LOAD( "6509.10b", 0x00000, 0x80000, CRC(f8524c28) SHA1(d50b99664c9f0735838adb55aa7db53e58a43f99) )
- ROM_LOAD( "6510.11b", 0x80000, 0x20000, CRC(0fdd6edf) SHA1(c6870ab538987110337e6e154cba98391c68fb98) )
-ROM_END
-
-/***************************************************************************
-
Mahjong Gekisha
1989 Dynax
@@ -7387,7 +6980,6 @@ GAME( 1991, tenkaibb, tenkai, tenkai, tenkai, driver_device, 0, ROT
GAME( 1991, tenkaicb, tenkai, tenkai, tenkai, driver_device, 0, ROT0, "bootleg", "Mahjong Tenkaigen (bootleg c)", GAME_SUPPORTS_SAVE )
GAME( 1991, tenkaid, tenkai, tenkai, tenkai, driver_device, 0, ROT0, "Dynax", "Mahjong Tenkaigen (set 1)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
GAME( 1991, tenkaie, tenkai, tenkai, tenkai, driver_device, 0, ROT0, "Dynax", "Mahjong Tenkaigen (set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1992, htengoku, 0, htengoku, htengoku, driver_device, 0, ROT180, "Dynax", "Hanafuda Hana Tengoku (Japan)", GAME_SUPPORTS_SAVE )
GAME( 1994, mjreach, 0, tenkai, mjreach, dynax_state, mjreach, ROT0, "bootleg / Dynax", "Mahjong Reach (bootleg)", GAME_SUPPORTS_SAVE )
GAME( 1995, shpeng, 0, sprtmtch, drgpunch, driver_device, 0, ROT0, "WSAC Systems?", "Sea Hunter Penguin", GAME_NO_COCKTAIL | GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE ) // not a dynax board. proms?
GAME( 1996, majrjhdx, 0, majrjhdx, tenkai, driver_device, 0, ROT0, "Dynax", "Mahjong Raijinhai DX", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
diff --git a/src/mame/includes/dynax.h b/src/mame/includes/dynax.h
index b6b0c05f6b7..7013707ee6a 100644
--- a/src/mame/includes/dynax.h
+++ b/src/mame/includes/dynax.h
@@ -204,12 +204,6 @@ public:
DECLARE_READ8_MEMBER(mjelctrn_keyboard_1_r);
DECLARE_READ8_MEMBER(mjelctrn_dsw_r);
DECLARE_WRITE8_MEMBER(mjelctrn_blitter_ack_w);
- DECLARE_WRITE8_MEMBER(htengoku_select_w);
- DECLARE_WRITE8_MEMBER(htengoku_coin_w);
- DECLARE_READ8_MEMBER(htengoku_input_r);
- DECLARE_READ8_MEMBER(htengoku_coin_r);
- DECLARE_WRITE8_MEMBER(htengoku_rombank_w);
- DECLARE_WRITE8_MEMBER(htengoku_blit_romregion_w);
DECLARE_WRITE8_MEMBER(tenkai_ipsel_w);
DECLARE_WRITE8_MEMBER(tenkai_ip_w);
DECLARE_READ8_MEMBER(tenkai_ip_r);
@@ -268,241 +262,56 @@ public:
DECLARE_WRITE8_MEMBER(jantouki_blitter2_rev2_w);
DECLARE_WRITE8_MEMBER(hanamai_priority_w);
DECLARE_WRITE8_MEMBER(tenkai_priority_w);
- DECLARE_CUSTOM_INPUT_MEMBER(ddenlovr_blitter_irq_r);
- DECLARE_CUSTOM_INPUT_MEMBER(ddenlovj_blitter_r);
- DECLARE_CUSTOM_INPUT_MEMBER(nettoqc_special_r);
- DECLARE_CUSTOM_INPUT_MEMBER(mjflove_blitter_r);
- DECLARE_WRITE8_MEMBER(ddenlovr_bgcolor_w);
- DECLARE_WRITE8_MEMBER(ddenlovr_bgcolor2_w);
- DECLARE_WRITE16_MEMBER(ddenlovr16_bgcolor_w);
- DECLARE_WRITE8_MEMBER(ddenlovr_priority_w);
- DECLARE_WRITE8_MEMBER(ddenlovr_priority2_w);
- DECLARE_WRITE16_MEMBER(ddenlovr16_priority_w);
- DECLARE_WRITE8_MEMBER(ddenlovr_layer_enable_w);
- DECLARE_WRITE8_MEMBER(ddenlovr_layer_enable2_w);
- DECLARE_WRITE16_MEMBER(ddenlovr16_layer_enable_w);
- DECLARE_WRITE8_MEMBER(hanakanz_blitter_reg_w);
- DECLARE_WRITE8_MEMBER(hanakanz_blitter_data_w);
- DECLARE_WRITE8_MEMBER(rongrong_blitter_w);
- DECLARE_WRITE16_MEMBER(ddenlovr_blitter_w);
- DECLARE_WRITE16_MEMBER(ddenlovr_blitter_irq_ack_w);
- DECLARE_READ8_MEMBER(rongrong_gfxrom_r);
- DECLARE_READ16_MEMBER(ddenlovr_gfxrom_r);
- DECLARE_WRITE16_MEMBER(ddenlovr_coincounter_0_w);
- DECLARE_WRITE16_MEMBER(ddenlovr_coincounter_1_w);
- DECLARE_WRITE8_MEMBER(rongrong_palette_w);
- DECLARE_WRITE16_MEMBER(ddenlovr_palette_w);
- DECLARE_WRITE8_MEMBER(ddenlovr_palette_base_w);
- DECLARE_WRITE8_MEMBER(ddenlovr_palette_base2_w);
- DECLARE_WRITE8_MEMBER(ddenlovr_palette_mask_w);
- DECLARE_WRITE8_MEMBER(ddenlovr_palette_mask2_w);
- DECLARE_WRITE8_MEMBER(ddenlovr_transparency_pen_w);
- DECLARE_WRITE8_MEMBER(ddenlovr_transparency_pen2_w);
- DECLARE_WRITE8_MEMBER(ddenlovr_transparency_mask_w);
- DECLARE_WRITE8_MEMBER(ddenlovr_transparency_mask2_w);
- DECLARE_WRITE16_MEMBER(ddenlovr16_palette_base_w);
- DECLARE_WRITE16_MEMBER(ddenlovr16_palette_mask_w);
- DECLARE_WRITE16_MEMBER(ddenlovr16_transparency_pen_w);
- DECLARE_WRITE16_MEMBER(ddenlovr16_transparency_mask_w);
- DECLARE_READ8_MEMBER(unk_r);
- DECLARE_READ16_MEMBER(unk16_r);
- DECLARE_WRITE16_MEMBER(ddenlovr_select_16_w);
- DECLARE_WRITE8_MEMBER(ddenlovr_select2_w);
- DECLARE_WRITE16_MEMBER(ddenlovr_select2_16_w);
- DECLARE_READ8_MEMBER(rongrong_input2_r);
- DECLARE_READ16_MEMBER(quiz365_input2_r);
- DECLARE_WRITE8_MEMBER(rongrong_blitter_busy_w);
- DECLARE_READ8_MEMBER(rongrong_blitter_busy_r);
- DECLARE_WRITE16_MEMBER(quiz365_coincounter_w);
- DECLARE_READ16_MEMBER(quiz365_protection_r);
- DECLARE_WRITE16_MEMBER(quiz365_protection_w);
- DECLARE_READ16_MEMBER(ddenlovj_dsw_r);
- DECLARE_WRITE16_MEMBER(ddenlovj_coincounter_w);
- DECLARE_READ16_MEMBER(ddenlovrk_protection1_r);
- DECLARE_READ16_MEMBER(ddenlovrk_protection2_r);
- DECLARE_WRITE16_MEMBER(ddenlovrk_protection2_w);
- DECLARE_READ16_MEMBER(nettoqc_input_r);
- DECLARE_READ16_MEMBER(nettoqc_protection1_r);
- DECLARE_WRITE16_MEMBER(nettoqc_coincounter_w);
- DECLARE_READ16_MEMBER(ultrchmp_protection2_r);
- DECLARE_WRITE16_MEMBER(ultrchmp_protection2_w);
- DECLARE_READ8_MEMBER(rongrong_input_r);
- DECLARE_WRITE8_MEMBER(rongrong_select_w);
- DECLARE_READ8_MEMBER(magic_r);
- DECLARE_WRITE8_MEMBER(mmpanic_rombank_w);
- DECLARE_WRITE8_MEMBER(mmpanic_soundlatch_w);
- DECLARE_WRITE8_MEMBER(mmpanic_blitter_w);
- DECLARE_WRITE8_MEMBER(mmpanic_blitter2_w);
- DECLARE_WRITE8_MEMBER(mmpanic_leds_w);
- DECLARE_WRITE8_MEMBER(mmpanic_leds2_w);
- DECLARE_WRITE8_MEMBER(mmpanic_lockout_w);
- DECLARE_READ8_MEMBER(mmpanic_link_r);
- DECLARE_READ8_MEMBER(funkyfig_busy_r);
- DECLARE_WRITE8_MEMBER(funkyfig_blitter_w);
- DECLARE_WRITE8_MEMBER(funkyfig_rombank_w);
- DECLARE_READ8_MEMBER(funkyfig_dsw_r);
- DECLARE_READ8_MEMBER(funkyfig_coin_r);
- DECLARE_READ8_MEMBER(funkyfig_key_r);
- DECLARE_WRITE8_MEMBER(funkyfig_lockout_w);
- DECLARE_WRITE8_MEMBER(hanakanz_rombank_w);
- DECLARE_WRITE8_MEMBER(hanakanz_keyb_w);
- DECLARE_WRITE8_MEMBER(hanakanz_dsw_w);
- DECLARE_READ8_MEMBER(hanakanz_keyb_r);
- DECLARE_READ8_MEMBER(hanakanz_dsw_r);
- DECLARE_READ8_MEMBER(hanakanz_busy_r);
- DECLARE_READ8_MEMBER(hanakanz_gfxrom_r);
- DECLARE_WRITE8_MEMBER(hanakanz_coincounter_w);
- DECLARE_WRITE8_MEMBER(hanakanz_palette_w);
- DECLARE_READ8_MEMBER(hanakanz_rand_r);
- DECLARE_WRITE8_MEMBER(mjreach1_protection_w);
- DECLARE_READ8_MEMBER(mjreach1_protection_r);
- DECLARE_READ8_MEMBER(mjchuuka_keyb_r);
- DECLARE_WRITE8_MEMBER(mjchuuka_blitter_w);
- DECLARE_READ8_MEMBER(mjchuuka_gfxrom_0_r);
- DECLARE_READ8_MEMBER(mjchuuka_gfxrom_1_r);
- DECLARE_WRITE8_MEMBER(mjchuuka_palette_w);
- DECLARE_WRITE8_MEMBER(mjchuuka_coincounter_w);
- DECLARE_WRITE8_MEMBER(mjmyster_rambank_w);
- DECLARE_WRITE8_MEMBER(mjmyster_select2_w);
- DECLARE_READ8_MEMBER(mjmyster_coins_r);
- DECLARE_READ8_MEMBER(mjmyster_keyb_r);
- DECLARE_READ8_MEMBER(mjmyster_dsw_r);
- DECLARE_WRITE8_MEMBER(mjmyster_coincounter_w);
- DECLARE_WRITE8_MEMBER(mjmyster_blitter_w);
- DECLARE_WRITE8_MEMBER(hginga_rombank_w);
- DECLARE_READ8_MEMBER(hginga_protection_r);
- DECLARE_WRITE8_MEMBER(hginga_input_w);
- DECLARE_READ8_MEMBER(hginga_coins_r);
- DECLARE_WRITE8_MEMBER(hginga_80_w);
- DECLARE_WRITE8_MEMBER(hginga_coins_w);
- DECLARE_READ8_MEMBER(hginga_input_r);
- DECLARE_WRITE8_MEMBER(hginga_blitter_w);
- DECLARE_WRITE8_MEMBER(hgokou_dsw_sel_w);
- DECLARE_READ8_MEMBER(hgokou_input_r);
- DECLARE_WRITE8_MEMBER(hgokou_input_w);
- DECLARE_READ8_MEMBER(hgokou_protection_r);
- DECLARE_READ8_MEMBER(hgokbang_input_r);
- DECLARE_WRITE8_MEMBER(hparadis_select_w);
- DECLARE_READ8_MEMBER(hparadis_input_r);
- DECLARE_READ8_MEMBER(hparadis_dsw_r);
- DECLARE_WRITE8_MEMBER(hparadis_coin_w);
- DECLARE_READ8_MEMBER(mjmywrld_coins_r);
- DECLARE_READ16_MEMBER(akamaru_protection1_r);
- DECLARE_WRITE16_MEMBER(akamaru_protection1_w);
- DECLARE_READ16_MEMBER(akamaru_protection2_r);
- DECLARE_READ16_MEMBER(akamaru_dsw_r);
- DECLARE_READ16_MEMBER(akamaru_blitter_r);
- DECLARE_READ16_MEMBER(akamaru_e0010d_r);
- DECLARE_WRITE8_MEMBER(mjflove_rombank_w);
- DECLARE_READ8_MEMBER(mjflove_protection_r);
- DECLARE_READ8_MEMBER(mjflove_keyb_r);
- DECLARE_WRITE8_MEMBER(mjflove_blitter_w);
- DECLARE_WRITE8_MEMBER(mjflove_coincounter_w);
- DECLARE_WRITE8_MEMBER(jongtei_dsw_keyb_w);
- DECLARE_READ8_MEMBER(jongtei_busy_r);
- DECLARE_READ8_MEMBER(sryudens_keyb_r);
- DECLARE_WRITE8_MEMBER(sryudens_coincounter_w);
- DECLARE_WRITE8_MEMBER(sryudens_rambank_w);
- DECLARE_READ8_MEMBER(daimyojn_keyb1_r);
- DECLARE_READ8_MEMBER(daimyojn_keyb2_r);
- DECLARE_WRITE8_MEMBER(daimyojn_protection_w);
- DECLARE_READ8_MEMBER(daimyojn_protection_r);
- DECLARE_READ8_MEMBER(momotaro_protection_r);
- DECLARE_WRITE8_MEMBER(daimyojn_palette_sel_w);
- DECLARE_WRITE8_MEMBER(daimyojn_blitter_data_palette_w);
- DECLARE_READ8_MEMBER(daimyojn_year_hack_r);
- DECLARE_WRITE8_MEMBER(adpcm_reset_w);
- DECLARE_WRITE8_MEMBER(htengoku_dsw_w);
- DECLARE_READ8_MEMBER(htengoku_dsw_r);
- DECLARE_WRITE8_MEMBER(tenkai_dswsel_w);
- DECLARE_READ8_MEMBER(tenkai_dsw_r);
- DECLARE_WRITE_LINE_MEMBER(tenkai_rtc_irq);
- DECLARE_WRITE8_MEMBER(janshinp_coincounter_w);
- DECLARE_READ8_MEMBER(seljan2_busy_r);
- DECLARE_WRITE8_MEMBER(seljan2_rombank_w);
- DECLARE_WRITE8_MEMBER(seljan2_palette_enab_w);
- DECLARE_WRITE8_MEMBER(seljan2_palette_w);
DECLARE_DRIVER_INIT(mjelct3);
DECLARE_DRIVER_INIT(blktouch);
DECLARE_DRIVER_INIT(mjelct3a);
DECLARE_DRIVER_INIT(mjreach);
DECLARE_DRIVER_INIT(maya);
- DECLARE_DRIVER_INIT(rongrong);
- DECLARE_DRIVER_INIT(momotaro);
-
- DECLARE_MACHINE_START(ddenlovr);
- DECLARE_MACHINE_RESET(ddenlovr);
- DECLARE_VIDEO_START(ddenlovr);
- DECLARE_MACHINE_START(rongrong);
- DECLARE_MACHINE_START(mmpanic);
- DECLARE_VIDEO_START(mmpanic);
- DECLARE_MACHINE_START(hanakanz);
- DECLARE_VIDEO_START(hanakanz);
- DECLARE_MACHINE_START(sryudens);
- DECLARE_VIDEO_START(mjflove);
- DECLARE_MACHINE_START(seljan2);
- DECLARE_MACHINE_START(mjflove);
- DECLARE_MACHINE_START(hanamai);
- DECLARE_MACHINE_RESET(dynax);
- DECLARE_VIDEO_START(hanamai);
- DECLARE_PALETTE_INIT(sprtmtch);
- DECLARE_PALETTE_INIT(janyuki);
- DECLARE_MACHINE_START(hnoridur);
- DECLARE_VIDEO_START(hnoridur);
- DECLARE_VIDEO_START(sprtmtch);
- DECLARE_VIDEO_START(mjdialq2);
- DECLARE_MACHINE_START(jantouki);
- DECLARE_VIDEO_START(jantouki);
- DECLARE_MACHINE_START(htengoku);
- DECLARE_VIDEO_START(htengoku);
- DECLARE_MACHINE_START(tenkai);
- DECLARE_VIDEO_START(mjelctrn);
- DECLARE_MACHINE_START(gekisha);
- DECLARE_MACHINE_RESET(gekisha);
- DECLARE_MACHINE_START(funkyfig);
- DECLARE_MACHINE_START(mjmyster);
- DECLARE_MACHINE_START(hparadis);
- DECLARE_VIDEO_START(mcnpshnt);
- DECLARE_VIDEO_START(neruton);
- DECLARE_MACHINE_START(dynax);
- DECLARE_MACHINE_RESET(adpcm);
- UINT32 screen_update_ddenlovr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_hanamai(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_hnoridur(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_sprtmtch(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_mjdialq2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_jantouki_top(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_jantouki_bottom(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- UINT32 screen_update_htengoku(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(sprtmtch_vblank_interrupt);
INTERRUPT_GEN_MEMBER(jantouki_vblank_interrupt);
INTERRUPT_GEN_MEMBER(jantouki_sound_vblank_interrupt);
INTERRUPT_GEN_MEMBER(yarunara_clock_interrupt);
- INTERRUPT_GEN_MEMBER(mjelctrn_vblank_interrupt);
- INTERRUPT_GEN_MEMBER(quizchq_irq);
- INTERRUPT_GEN_MEMBER(mmpanic_irq);
- INTERRUPT_GEN_MEMBER(hanakanz_irq);
- INTERRUPT_GEN_MEMBER(mjchuuka_irq);
- INTERRUPT_GEN_MEMBER(hginga_irq);
- INTERRUPT_GEN_MEMBER(mjflove_irq);
- INTERRUPT_GEN_MEMBER(hparadis_irq);
+ INTERRUPT_GEN_MEMBER(mjelctrn_vblank_interrupt);
TIMER_DEVICE_CALLBACK_MEMBER(neruton_irq_scanline);
TIMER_DEVICE_CALLBACK_MEMBER(majxtal7_vblank_interrupt);
TIMER_DEVICE_CALLBACK_MEMBER(tenkai_interrupt);
- TIMER_DEVICE_CALLBACK_MEMBER(mjmyster_irq);
void tenkai_update_rombank();
void gekisha_bank_postload();
DECLARE_WRITE_LINE_MEMBER(sprtmtch_sound_callback);
DECLARE_WRITE_LINE_MEMBER(jantouki_sound_callback);
DECLARE_WRITE_LINE_MEMBER(adpcm_int);
DECLARE_WRITE_LINE_MEMBER(adpcm_int_cpu1);
- DECLARE_WRITE_LINE_MEMBER(quizchq_rtc_irq);
- DECLARE_WRITE_LINE_MEMBER(mmpanic_rtc_irq);
- DECLARE_WRITE_LINE_MEMBER(hanakanz_rtc_irq);
- DECLARE_WRITE_LINE_MEMBER(mjchuuka_rtc_irq);
- DECLARE_WRITE_LINE_MEMBER(hginga_rtc_irq);
- DECLARE_WRITE_LINE_MEMBER(mjflove_rtc_irq);
- DECLARE_WRITE_LINE_MEMBER(mjmyster_rtc_irq);
+
+ DECLARE_MACHINE_RESET(adpcm);
+ DECLARE_WRITE8_MEMBER(adpcm_reset_w);
+ DECLARE_MACHINE_START(gekisha);
+ DECLARE_MACHINE_RESET(gekisha);
+ DECLARE_MACHINE_START(tenkai);
+ DECLARE_WRITE8_MEMBER(tenkai_dswsel_w);
+ DECLARE_READ8_MEMBER(tenkai_dsw_r);
+ DECLARE_WRITE_LINE_MEMBER(tenkai_rtc_irq);
+ DECLARE_MACHINE_RESET(dynax);
+ DECLARE_MACHINE_START(dynax);
+ DECLARE_MACHINE_START(hanamai);
+ DECLARE_VIDEO_START(hanamai);
+ DECLARE_MACHINE_START(hnoridur);
+ DECLARE_VIDEO_START(hnoridur);
+ DECLARE_PALETTE_INIT(sprtmtch);
+ DECLARE_VIDEO_START(sprtmtch);
+ DECLARE_MACHINE_START(jantouki);
+ DECLARE_VIDEO_START(jantouki);
+ DECLARE_VIDEO_START(mjelctrn);
+ DECLARE_VIDEO_START(mjdialq2);
+ DECLARE_VIDEO_START(mcnpshnt);
+ DECLARE_PALETTE_INIT(janyuki);
+ DECLARE_VIDEO_START(neruton);
+ void hanamai_copylayer(bitmap_ind16 &bitmap, const rectangle &cliprect, int i );
};
//----------- defined in drivers/dynax.c -----------
diff --git a/src/mame/video/dynax.c b/src/mame/video/dynax.c
index b0c6810a831..8998df44b75 100644
--- a/src/mame/video/dynax.c
+++ b/src/mame/video/dynax.c
@@ -966,36 +966,35 @@ VIDEO_START_MEMBER(dynax_state,neruton)
***************************************************************************/
-static void hanamai_copylayer( running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect, int i )
+void dynax_state::hanamai_copylayer(bitmap_ind16 &bitmap, const rectangle &cliprect, int i )
{
- dynax_state *state = machine.driver_data<dynax_state>();
int color;
int scrollx, scrolly;
switch (i)
{
- case 0: color = (state->m_blit_palettes >> 0) & 0x0f; break;
- case 1: color = (state->m_blit_palettes >> 4) & 0x0f; break;
- case 2: color = (state->m_blit_palettes >> 8) & 0x0f; break;
- case 3: color = (state->m_blit_palettes >> 12) & 0x0f; break;
+ case 0: color = (m_blit_palettes >> 0) & 0x0f; break;
+ case 1: color = (m_blit_palettes >> 4) & 0x0f; break;
+ case 2: color = (m_blit_palettes >> 8) & 0x0f; break;
+ case 3: color = (m_blit_palettes >> 12) & 0x0f; break;
default: return;
}
- color += (state->m_blit_palbank & 0x0f) * 16;
+ color += (m_blit_palbank & 0x0f) * 16;
- scrollx = state->m_blit_scroll_x;
- scrolly = state->m_blit_scroll_y;
+ scrollx = m_blit_scroll_x;
+ scrolly = m_blit_scroll_y;
- if (i == 1 && (state->m_layer_layout == LAYOUT_HANAMAI || state->m_layer_layout == LAYOUT_HNORIDUR))
+ if (i == 1 && (m_layer_layout == LAYOUT_HANAMAI || m_layer_layout == LAYOUT_HNORIDUR))
{
- scrollx = state->m_extra_scroll_x;
- scrolly = state->m_extra_scroll_y;
+ scrollx = m_extra_scroll_x;
+ scrolly = m_extra_scroll_y;
}
{
int dy, length, pen;
- UINT8 *src1 = state->m_pixmap[i][1];
- UINT8 *src2 = state->m_pixmap[i][0];
+ UINT8 *src1 = m_pixmap[i][1];
+ UINT8 *src2 = m_pixmap[i][0];
int palbase = 16 * color;
@@ -1268,10 +1267,10 @@ UINT32 dynax_state::screen_update_hanamai(screen_device &screen, bitmap_ind16 &b
case 0x15: lay[0] = 0; lay[1] = 2; lay[2] = 3; lay[3] = 1; break;
}
- if (BIT(layers_ctrl, lay[0])) hanamai_copylayer(machine(), bitmap, cliprect, lay[0]);
- if (BIT(layers_ctrl, lay[1])) hanamai_copylayer(machine(), bitmap, cliprect, lay[1]);
- if (BIT(layers_ctrl, lay[2])) hanamai_copylayer(machine(), bitmap, cliprect, lay[2]);
- if (BIT(layers_ctrl, lay[3])) hanamai_copylayer(machine(), bitmap, cliprect, lay[3]);
+ if (BIT(layers_ctrl, lay[0])) hanamai_copylayer(bitmap, cliprect, lay[0]);
+ if (BIT(layers_ctrl, lay[1])) hanamai_copylayer(bitmap, cliprect, lay[1]);
+ if (BIT(layers_ctrl, lay[2])) hanamai_copylayer(bitmap, cliprect, lay[2]);
+ if (BIT(layers_ctrl, lay[3])) hanamai_copylayer(bitmap, cliprect, lay[3]);
return 0;
}
@@ -1303,10 +1302,10 @@ UINT32 dynax_state::screen_update_hnoridur(screen_device &screen, bitmap_ind16 &
lay[2] = (pri >> 4) & 3;
lay[3] = (pri >> 0) & 3;
- if (BIT(layers_ctrl, lay[0])) hanamai_copylayer(machine(), bitmap, cliprect, lay[0]);
- if (BIT(layers_ctrl, lay[1])) hanamai_copylayer(machine(), bitmap, cliprect, lay[1]);
- if (BIT(layers_ctrl, lay[2])) hanamai_copylayer(machine(), bitmap, cliprect, lay[2]);
- if (BIT(layers_ctrl, lay[3])) hanamai_copylayer(machine(), bitmap, cliprect, lay[3]);
+ if (BIT(layers_ctrl, lay[0])) hanamai_copylayer(bitmap, cliprect, lay[0]);
+ if (BIT(layers_ctrl, lay[1])) hanamai_copylayer(bitmap, cliprect, lay[1]);
+ if (BIT(layers_ctrl, lay[2])) hanamai_copylayer(bitmap, cliprect, lay[2]);
+ if (BIT(layers_ctrl, lay[3])) hanamai_copylayer(bitmap, cliprect, lay[3]);
return 0;
}
@@ -1323,9 +1322,9 @@ UINT32 dynax_state::screen_update_sprtmtch(screen_device &screen, bitmap_ind16 &
bitmap.fill((m_blit_backpen & 0xff) + (m_blit_palbank & 1) * 256, cliprect);
- if (BIT(layers_ctrl, 0)) hanamai_copylayer(machine(), bitmap, cliprect, 0);
- if (BIT(layers_ctrl, 1)) hanamai_copylayer(machine(), bitmap, cliprect, 1);
- if (BIT(layers_ctrl, 2)) hanamai_copylayer(machine(), bitmap, cliprect, 2);
+ if (BIT(layers_ctrl, 0)) hanamai_copylayer(bitmap, cliprect, 0);
+ if (BIT(layers_ctrl, 1)) hanamai_copylayer(bitmap, cliprect, 1);
+ if (BIT(layers_ctrl, 2)) hanamai_copylayer(bitmap, cliprect, 2);
return 0;
}
@@ -1382,30 +1381,3 @@ UINT32 dynax_state::screen_update_mjdialq2(screen_device &screen, bitmap_ind16 &
if (BIT(layers_ctrl, 1)) mjdialq2_copylayer(machine(), bitmap, cliprect, 1);
return 0;
}
-
-// htengoku uses the mixer chip from ddenlovr
-
-VIDEO_START_MEMBER(dynax_state,htengoku)
-{
- VIDEO_START_CALL_MEMBER(ddenlovr);
- VIDEO_START_CALL_MEMBER(hnoridur);
-}
-
-UINT32 dynax_state::screen_update_htengoku(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
-{
- int layer, x, y;
-
- // render the layers, one by one, "dynax.c" style. Then convert the pixmaps to "ddenlovr.c"
- // format and let SCREEN_UPDATE_IND16(ddenlovr) do the final compositing (priorities + palettes)
- for (layer = 0; layer < 4; layer++)
- {
- bitmap.fill(0, cliprect);
- hanamai_copylayer(machine(), bitmap, cliprect, layer);
-
- for (y = 0; y < 256; y++)
- for (x = 0; x < 512; x++)
- m_ddenlovr_pixmap[3 - layer][y * 512 + x] = (UINT8)(bitmap.pix16(y, x));
- }
-
- return screen_update_ddenlovr(screen, bitmap, cliprect);
-}