From 50d53abf350ad8c149956c18b677dff44cce0e8a Mon Sep 17 00:00:00 2001 From: Angelo Salese Date: Mon, 3 Dec 2012 15:01:55 +0000 Subject: [PATCH] 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 --- src/mame/drivers/nbmj8688.c | 49 +++++++++++++++++++----------------- src/mame/drivers/nbmj8891.c | 9 ++++++- src/mame/includes/nb1413m3.h | 12 ++++----- src/mame/machine/nb1413m3.c | 18 +++++-------- src/mame/video/nbmj8688.c | 17 +++++++++---- src/mame/video/nbmj8891.c | 16 +++++++++--- 6 files changed, 70 insertions(+), 51 deletions(-) diff --git a/src/mame/drivers/nbmj8688.c b/src/mame/drivers/nbmj8688.c index fee69f96575..0af80d3dac3 100644 --- a/src/mame/drivers/nbmj8688.c +++ b/src/mame/drivers/nbmj8688.c @@ -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 ) diff --git a/src/mame/drivers/nbmj8891.c b/src/mame/drivers/nbmj8891.c index 652c7737198..c480b3d9833 100644 --- a/src/mame/drivers/nbmj8891.c +++ b/src/mame/drivers/nbmj8891.c @@ -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 ) diff --git a/src/mame/includes/nb1413m3.h b/src/mame/includes/nb1413m3.h index cf930730e52..46c149adc02 100644 --- a/src/mame/includes/nb1413m3.h +++ b/src/mame/includes/nb1413m3.h @@ -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 -----------*/ diff --git a/src/mame/machine/nb1413m3.c b/src/mame/machine/nb1413m3.c index ab8967fb88f..9cfdbf4cb0a 100644 --- a/src/mame/machine/nb1413m3.c +++ b/src/mame/machine/nb1413m3.c @@ -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 diff --git a/src/mame/video/nbmj8688.c b/src/mame/video/nbmj8688.c index 41c7a7df83c..2fb887919d5 100644 --- a/src/mame/video/nbmj8688.c +++ b/src/mame/video/nbmj8688.c @@ -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; } diff --git a/src/mame/video/nbmj8891.c b/src/mame/video/nbmj8891.c index d114b48b081..fcf76234a58 100644 --- a/src/mame/video/nbmj8891.c +++ b/src/mame/video/nbmj8891.c @@ -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;