Various changes to Nichibutsu Mahjong drivers: [Takahiro Nogi]

* drivers/nbmj8688.c: Fixed graphics in orangec,orangeci,vipclub sets, removed GAME_IMPERFECT_GRAPHICS flag for these.
* drivers/nbmj8891.c: Added Font Select configuration setting for hanamomo
* machine/nb1413m3.c: Added special case for ORANGECI and removed unnecessary information in the file
This commit is contained in:
Angelo Salese 2012-12-03 15:01:55 +00:00
parent 625352d50d
commit 50d53abf35
6 changed files with 70 additions and 51 deletions

View File

@ -20,7 +20,7 @@ TODO:
- Input handling is wrong in crystalg, crystal2 and nightlov.
- Some games display "GFXROM BANK OVER!!" or "GFXROM ADDRESS OVER!!"
0- Some games display "GFXROM BANK OVER!!" or "GFXROM ADDRESS OVER!!"
in Debug build.
- Screen flip is not perfect.
@ -2096,28 +2096,28 @@ INPUT_PORTS_END
static INPUT_PORTS_START( orangec )
PORT_START("DSWA")
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x07, 0x07, DEF_STR( Difficulty ) )
PORT_DIPSETTING( 0x07, "1 (Easy)" )
PORT_DIPSETTING( 0x06, "2" )
PORT_DIPSETTING( 0x05, "3" )
PORT_DIPSETTING( 0x04, "4" )
PORT_DIPSETTING( 0x03, "5" )
PORT_DIPSETTING( 0x02, "6" )
PORT_DIPSETTING( 0x01, "7" )
PORT_DIPSETTING( 0x00, "8 (Hard)" )
PORT_DIPNAME( 0x08, 0x00, "Select Girl" )
PORT_DIPSETTING( 0x08, DEF_STR( No ) )
PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
PORT_DIPNAME( 0x10, 0x00, "Extend TSUMO" )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Coinage ) )
PORT_DIPSETTING( 0x20, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x00, DEF_STR( 1C_2C ) )
PORT_DIPNAME( 0x40, 0x40, "Character Display Test" )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
PORT_DIPNAME( 0x80, 0x80, "DIPSW 1-8" )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
@ -3603,8 +3603,9 @@ ROM_START( orangec )
ROM_LOAD( "ic2.bin", 0x140000, 0x40000, CRC(da46163e) SHA1(c6e5f59fe813915f94d81ff28526614c943b7082) )
ROM_LOAD( "ic3.bin", 0x180000, 0x40000, CRC(efb13b61) SHA1(61d100b52d01e447dd599cc9ff06b97dd7a4ae0b) )
ROM_LOAD( "ic4.bin", 0x1c0000, 0x40000, CRC(9acc54fa) SHA1(7975370e1dd32ecd98d7f2e32f14feb88e0cdb43) )
ROM_LOAD( "ic6i.bin", 0x0f0000, 0x10000, CRC(94bf4847) SHA1(a1ff0a5b1918b9f1a0f608ad341d091512988c1a) )
ROM_LOAD( "ic7i.bin", 0x110000, 0x10000, CRC(284f5648) SHA1(f0a734744901313f5052ea1727815e11a93e1811) ) // overlaps ic1!
ROM_LOAD( "ic6i.bin", 0x0f0000, 0x10000, CRC(94bf4847) SHA1(a1ff0a5b1918b9f1a0f608ad341d091512988c1a) ) // orangec/ic6i.bin
ROM_LOAD( "ic7i.bin", 0x100000, 0x10000, CRC(284f5648) SHA1(f0a734744901313f5052ea1727815e11a93e1811) ) // orangec/ic7i.bin overlaps ic1!
ROM_LOAD( "ic7i.bin", 0x110000, 0x10000, CRC(284f5648) SHA1(f0a734744901313f5052ea1727815e11a93e1811) ) // orangec/ic7i.bin overlaps ic1!
ROM_END
ROM_START( orangeci )
@ -3626,8 +3627,9 @@ ROM_START( orangeci )
ROM_LOAD( "ic2.bin", 0x140000, 0x40000, CRC(da46163e) SHA1(c6e5f59fe813915f94d81ff28526614c943b7082) )
ROM_LOAD( "ic3.bin", 0x180000, 0x40000, CRC(efb13b61) SHA1(61d100b52d01e447dd599cc9ff06b97dd7a4ae0b) )
ROM_LOAD( "ic4.bin", 0x1c0000, 0x40000, CRC(9acc54fa) SHA1(7975370e1dd32ecd98d7f2e32f14feb88e0cdb43) )
ROM_LOAD( "ic6i.bin", 0x0f0000, 0x10000, CRC(94bf4847) SHA1(a1ff0a5b1918b9f1a0f608ad341d091512988c1a) )
ROM_LOAD( "ic7i.bin", 0x110000, 0x10000, CRC(284f5648) SHA1(f0a734744901313f5052ea1727815e11a93e1811) ) // overlaps ic1!
ROM_LOAD( "ic6i.bin", 0x0f0000, 0x10000, CRC(94bf4847) SHA1(a1ff0a5b1918b9f1a0f608ad341d091512988c1a) ) // orangec/ic6i.bin
ROM_LOAD( "ic7i.bin", 0x100000, 0x10000, CRC(284f5648) SHA1(f0a734744901313f5052ea1727815e11a93e1811) ) // orangec/ic7i.bin overlaps ic1!
ROM_LOAD( "ic7i.bin", 0x110000, 0x10000, CRC(284f5648) SHA1(f0a734744901313f5052ea1727815e11a93e1811) ) // orangec/ic7i.bin overlaps ic1!
ROM_END
ROM_START( vipclub )
@ -3636,7 +3638,7 @@ ROM_START( vipclub )
ROM_LOAD( "1.2c", 0x08000, 0x08000, CRC(42101925) SHA1(b3e1b4a3c905e0c5ad85fd1276b221440937719e) )
ROM_REGION( 0x10000, "voice", 0 ) /* voice */
ROM_LOAD( "ft3.5c", 0x00000, 0x10000, CRC(2390a28b) SHA1(7bced9e7680d0cc98e30ab82da1c4ab0c4ef37b4) ) // orangec/ft3.5c
ROM_LOAD( "ft3.5c", 0x00000, 0x10000, CRC(2390a28b) SHA1(7bced9e7680d0cc98e30ab82da1c4ab0c4ef37b4) )
ROM_REGION( 0x200000, "gfx1", 0 ) /* gfx */
ROM_LOAD( "ic5.bin", 0x000000, 0x10000, CRC(e6fe4540) SHA1(00625ea017305b2622ac31ad2e6e4c928ee0cfcd) ) // orangec/ic5.bin
@ -3650,6 +3652,7 @@ ROM_START( vipclub )
ROM_LOAD( "ic3.bin", 0x180000, 0x40000, CRC(efb13b61) SHA1(61d100b52d01e447dd599cc9ff06b97dd7a4ae0b) ) // orangec/ic3.bin
ROM_LOAD( "ic4.bin", 0x1c0000, 0x40000, CRC(9acc54fa) SHA1(7975370e1dd32ecd98d7f2e32f14feb88e0cdb43) ) // orangec/ic4.bin
ROM_LOAD( "ic6i.bin", 0x0f0000, 0x10000, CRC(94bf4847) SHA1(a1ff0a5b1918b9f1a0f608ad341d091512988c1a) ) // orangec/ic6i.bin
ROM_LOAD( "ic7i.bin", 0x100000, 0x10000, CRC(284f5648) SHA1(f0a734744901313f5052ea1727815e11a93e1811) ) // orangec/ic7i.bin overlaps ic1!
ROM_LOAD( "ic7i.bin", 0x110000, 0x10000, CRC(284f5648) SHA1(f0a734744901313f5052ea1727815e11a93e1811) ) // orangec/ic7i.bin overlaps ic1!
ROM_END
@ -4045,9 +4048,9 @@ GAME( 1987, housemn2, 0, mbmj_p16bit_LCD, housemn2, nbmj8688_state, house
GAME( 1987, livegal, 0, mbmj_p16bit_LCD, livegal, nbmj8688_state, livegal, ROT0, "Central Denshi", "Live Gal (Japan 870530)", 0 )
GAME( 1987, bijokkoy, 0, mbmj_p16bit_LCD, bijokkoy, nbmj8688_state, bijokkoy, ROT0, "Nichibutsu", "Bijokko Yume Monogatari (Japan 870925)", 0 )
GAME( 1988, bijokkog, 0, mbmj_p16bit_LCD, bijokkog, nbmj8688_state, bijokkog, ROT0, "Nichibutsu", "Bijokko Gakuen (Japan 880116)", 0 )
GAME( 1988, orangec, 0, mbmj_p16bit, orangec, nbmj8688_state, orangec, ROT0, "Daiichi Denshi", "Orange Club - Maruhi Kagai Jugyou (Japan 880213)", GAME_IMPERFECT_GRAPHICS )
GAME( 1988, orangeci, orangec, mbmj_p16bit, orangeci, nbmj8688_state, orangeci, ROT0, "Daiichi Denshi", "Orange Club - Maru-hi Ippatsu Kaihou [BET] (Japan 880221)", GAME_IMPERFECT_GRAPHICS )
GAME( 1988, vipclub, orangec, mbmj_p16bit, vipclub, nbmj8688_state, vipclub, ROT0, "Daiichi Denshi", "Vip Club - Maru-hi Ippatsu Kaihou [BET] (Japan 880310)", GAME_IMPERFECT_GRAPHICS )
GAME( 1988, orangec, 0, mbmj_p16bit, orangec, nbmj8688_state, orangec, ROT0, "Daiichi Denshi", "Orange Club - Maruhi Kagai Jugyou (Japan 880213)", 0 )
GAME( 1988, orangeci, orangec, mbmj_p16bit, orangeci, nbmj8688_state, orangeci, ROT0, "Daiichi Denshi", "Orange Club - Maru-hi Ippatsu Kaihou [BET] (Japan 880221)", 0 )
GAME( 1988, vipclub, orangec, mbmj_p16bit, vipclub, nbmj8688_state, vipclub, ROT0, "Daiichi Denshi", "Vip Club - Maru-hi Ippatsu Kaihou [BET] (Japan 880310)", 0 )
/* pure 12-bit palette */
GAME( 1988, kaguya, 0, mbmj_p12bit, kaguya, nbmj8688_state, kaguya, ROT0, "Miki Syouji", "Mahjong Kaguyahime [BET] (Japan 880521)", 0 )

View File

@ -706,6 +706,13 @@ static INPUT_PORTS_START( hanamomo )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN1
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE1 ) // SERVICE
/* This DIPSW is fake. Type A is common, Type B is rare */
PORT_START("FONTTYPE")
PORT_CONFNAME( 0x01, 0x00, "Font Type" )
PORT_CONFSETTING( 0x00, "Type-A" )
PORT_CONFSETTING( 0x01, "Type-B" )
PORT_BIT( 0xfe, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_INCLUDE( nbmjcontrols )
INPUT_PORTS_END
@ -2625,7 +2632,7 @@ static MACHINE_CONFIG_START( gionbana, nbmj8891_state )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MCFG_DAC_ADD("dac")
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( mgion, gionbana )

View File

@ -110,13 +110,13 @@ enum {
NB1413M3_PAIRSTEN
};
#define NB1413M3_VCR_NOP 0x00
#define NB1413M3_VCR_POWER 0x01
#define NB1413M3_VCR_STOP 0x02
#define NB1413M3_VCR_REWIND 0x04
#define NB1413M3_VCR_PLAY 0x08
#define NB1413M3_VCR_NOP 0x00
#define NB1413M3_VCR_POWER 0x01
#define NB1413M3_VCR_STOP 0x02
#define NB1413M3_VCR_REWIND 0x04
#define NB1413M3_VCR_PLAY 0x08
#define NB1413M3_VCR_FFORWARD 0x10
#define NB1413M3_VCR_PAUSE 0x20
#define NB1413M3_VCR_PAUSE 0x20
/*----------- defined in machine/nb1413m3.c -----------*/

View File

@ -16,11 +16,9 @@ Memo:
#define NB1413M3_DEBUG 0
#define NB1413M3_CHEAT 0
int nb1413m3_type;
//int nb1413m3_sndromregion;
const char * nb1413m3_sndromrgntag;
int nb1413m3_sndrombank1;
int nb1413m3_sndrombank2;
@ -62,17 +60,17 @@ static TIMER_CALLBACK( nb1413m3_timer_callback )
switch (nb1413m3_type)
{
case NB1413M3_TAIWANMB:
nb1413m3_74ls193_counter = 0x05; // 130 ???
nb1413m3_74ls193_counter = 0x05;
break;
case NB1413M3_OMOTESND:
nb1413m3_74ls193_counter = 0x05; // 130 ???
nb1413m3_74ls193_counter = 0x05;
break;
case NB1413M3_PASTELG:
nb1413m3_74ls193_counter = 0x02; // 96 ???
nb1413m3_74ls193_counter = 0x02;
break;
case NB1413M3_HYHOO:
case NB1413M3_HYHOO2:
nb1413m3_74ls193_counter = 0x05; // 128 ???
nb1413m3_74ls193_counter = 0x05;
break;
}
}
@ -152,18 +150,12 @@ WRITE8_HANDLER( nb1413m3_nmi_clock_w )
INTERRUPT_GEN( nb1413m3_interrupt )
{
// nb1413m3_busyflag = 1;
// nb1413m3_busyctr = 0;
device->execute().set_input_line(0, HOLD_LINE);
#if NB1413M3_DEBUG
popmessage("NMI SW:%01X CLOCK:%02X COUNT:%02X", nb1413m3_nmi_enable, nb1413m3_nmi_clock, nb1413m3_nmi_count);
nb1413m3_nmi_count = 0;
#endif
#if NB1413M3_CHEAT
#include "nbmjchet.inc"
#endif
}
READ8_HANDLER( nb1413m3_sndrom_r )
@ -201,6 +193,8 @@ READ8_HANDLER( nb1413m3_sndrom_r )
case NB1413M3_HOUSEMN2: // 0-1
case NB1413M3_LIVEGAL: // 0-1
case NB1413M3_ORANGEC: // 0-1
case NB1413M3_ORANGECI: // 0-1
case NB1413M3_VIPCLUB: // 0-1
case NB1413M3_KAGUYA: // 0-3
case NB1413M3_KAGUYA2: // 0-3 + 4-5 for protection
case NB1413M3_BIJOKKOY: // 0-7

View File

@ -319,7 +319,9 @@ static void mbmj8688_gfxdraw(running_machine &machine, int gfxtype)
gfxlen = machine.root_device().memregion("gfx1")->bytes();
gfxaddr = (state->m_mjsikaku_gfxrom << 17) + (state->m_blitter_src_addr << 1);
//popmessage("ADDR:%08X DX:%03d DY:%03d SX:%03d SY:%03d", gfxaddr, startx, starty, sizex, sizey);
//logerror("ADDR:%08X DX:%03d DY:%03d SX:%03d SY:%03d\n", gfxaddr, startx, starty, sizex, sizey);
//if (state->m_blitter_direction_x|state->m_blitter_direction_y) popmessage("ADDR:%08X FX:%01d FY:%01d", gfxaddr, state->m_blitter_direction_x, state->m_blitter_direction_y);
for (y = starty, ctry = sizey; ctry >= 0; y += skipy, ctry--)
@ -328,9 +330,9 @@ static void mbmj8688_gfxdraw(running_machine &machine, int gfxtype)
{
if ((gfxaddr > (gfxlen - 1)))
{
#ifdef MAME_DEBUG
//#ifdef MAME_DEBUG
popmessage("GFXROM ADDRESS OVER!!");
#endif
//#endif
gfxaddr = 0;
}
@ -664,6 +666,11 @@ UINT32 nbmj8688_state::screen_update_mbmj8688(screen_device &screen, bitmap_ind1
{
int x, y;
if(machine().input().code_pressed_once(KEYCODE_T))
{
//
}
if (m_mjsikaku_screen_refresh)
{
m_mjsikaku_screen_refresh = 0;
@ -676,7 +683,7 @@ UINT32 nbmj8688_state::screen_update_mbmj8688(screen_device &screen, bitmap_ind1
}
}
if (m_mjsikaku_dispflag)
// if (m_mjsikaku_dispflag)
{
int scrolly;
if (m_mjsikaku_flipscreen) scrolly = m_mjsikaku_scrolly;
@ -685,8 +692,8 @@ UINT32 nbmj8688_state::screen_update_mbmj8688(screen_device &screen, bitmap_ind1
copybitmap(bitmap, *m_mjsikaku_tmpbitmap, 0, 0, 0, scrolly, cliprect);
copybitmap(bitmap, *m_mjsikaku_tmpbitmap, 0, 0, 0, scrolly - 256, cliprect);
}
else
bitmap.fill(0);
// else
// bitmap.fill(0);
return 0;
}

View File

@ -230,10 +230,6 @@ WRITE8_MEMBER(nbmj8891_state::nbmj8891_taiwanmb_mcu_w)
nbmj8891_gfxdraw(machine());
}
// m_blitter_direction_x = 0; // for debug
// m_blitter_direction_y = 0; // for debug
m_dispflag = 1; // for debug
m_param_cnt++;
}
@ -376,6 +372,18 @@ static void nbmj8891_gfxdraw(running_machine &machine)
color = GFX[gfxaddr++];
// for hanamomo font type
if ((state->ioport("FONTTYPE")->read()) == 0)
{
if (nb1413m3_type == NB1413M3_HANAMOMO)
{
if ((gfxaddr >= 0x20000) && (gfxaddr < 0x28000))
{
color |= ((color & 0x0f) << 4);
}
}
}
dx1 = (2 * x + 0) & 0x1ff;
dx2 = (2 * x + 1) & 0x1ff;