summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/igs/igs011.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/igs/igs011.cpp')
-rw-r--r--src/mame/igs/igs011.cpp440
1 files changed, 236 insertions, 204 deletions
diff --git a/src/mame/igs/igs011.cpp b/src/mame/igs/igs011.cpp
index ec6c08faa8a..a10619ea2b5 100644
--- a/src/mame/igs/igs011.cpp
+++ b/src/mame/igs/igs011.cpp
@@ -60,7 +60,7 @@ To do:
Also the background palette is wrong since the fade routine is called with wrong
parameters, but in this case the PCB does the same.
-- lhb3: DIP definitions
+- lhb3: emulated game crashes with an illegal instruction error on bookkeeping menu
- xymga: stop during attract mode with 'RECORD ERROR 3'
@@ -151,11 +151,11 @@ public:
protected:
struct blitter_t
{
- u16 x, y, w, h,
- gfx_lo, gfx_hi,
- depth,
- pen,
- flags;
+ u16 x = 0, y = 0, w = 0, h = 0,
+ gfx_lo = 0, gfx_hi = 0,
+ depth = 0,
+ pen = 0,
+ flags = 0;
};
/* devices */
@@ -179,29 +179,29 @@ protected:
optional_ioport m_io_coin;
std::unique_ptr<u8[]> m_layer[8];
- u16 m_priority;
- u8 m_blitter_pen_hi;
- u16 m_dips_sel;
- u16 m_input_sel;
- u16 m_hopper_bit;
- u8 m_prot1;
- u8 m_prot1_swap;
- u32 m_prot1_addr;
- u8 m_prot2;
- u8 m_igs012_prot;
- u8 m_igs012_prot_swap;
- u8 m_igs012_prot_mode;
- u16 m_igs003_reg;
- u16 m_lhb_irq_enable;
+ u16 m_priority = 0;
+ u8 m_blitter_pen_hi = 0;
+ u16 m_dips_sel = 0;
+ u16 m_input_sel = 0;
+ u16 m_hopper_bit = 0;
+ u8 m_prot1 = 0;
+ u8 m_prot1_swap = 0;
+ u32 m_prot1_addr = 0;
+ u8 m_prot2 = 0;
+ u8 m_igs012_prot = 0;
+ u8 m_igs012_prot_swap = 0;
+ u8 m_igs012_prot_mode = 0;
+ u16 m_igs003_reg = 0;
+ u16 m_lhb_irq_enable = 0;
blitter_t m_blitter;
- u16 m_igs003_prot_hold;
- u8 m_igs003_prot_x;
- u8 m_igs003_prot_y;
- u8 m_igs003_prot_z;
- u8 m_igs003_prot_h1;
- u8 m_igs003_prot_h2;
+ u16 m_igs003_prot_hold = 0;
+ u8 m_igs003_prot_x = 0;
+ u8 m_igs003_prot_y = 0;
+ u8 m_igs003_prot_z = 0;
+ u8 m_igs003_prot_h1 = 0;
+ u8 m_igs003_prot_h2 = 0;
virtual void machine_start() override ATTR_COLD;
virtual void video_start() override ATTR_COLD;
@@ -592,17 +592,14 @@ void igs011_state::igs011_blit_flags_w(offs_t offset, u16 data, u16 mem_mask)
clear_pen = m_blitter.pen;
}
- const int xstart = (m_blitter.x & 0x1ff) - (m_blitter.x & 0x200);
- const int ystart = (m_blitter.y & 0x0ff) - (m_blitter.y & 0x100);
-
- int xend, xinc;
- int yend, yinc;
-
- if (flipx) { xend = xstart - (m_blitter.w & 0x1ff) - 1; xinc = -1; }
- else { xend = xstart + (m_blitter.w & 0x1ff) + 1; xinc = 1; }
-
- if (flipy) { yend = ystart - (m_blitter.h & 0x0ff) - 1; yinc = -1; }
- else { yend = ystart + (m_blitter.h & 0x0ff) + 1; yinc = 1; }
+ const int xstart = util::sext(m_blitter.x, 10);
+ const int ystart = util::sext(m_blitter.y, 9);
+ const int xsize = (m_blitter.w & 0x1ff) + 1;
+ const int ysize = (m_blitter.h & 0x0ff) + 1;
+ const int xend = flipx ? (xstart - xsize) : (xstart + xsize);
+ const int yend = flipy ? (ystart - ysize) : (ystart + ysize);
+ const int xinc = flipx ? -1 : 1;
+ const int yinc = flipy ? -1 : 1;
for (int y = ystart; y != yend; y += yinc)
{
@@ -2910,7 +2907,7 @@ void igs011_state::lhb2_mem(address_map &map)
map(0x000000, 0x07ffff).rom();
// lhb2: IGS011 protection dynamically mapped at 1ff8x
-// map(0x01ff80, 0x01ff87).w(FUNC(igs011_state::igs011_prot1_w)).umask16(0xff00);
+// map(0x01ff80, 0x01ff87).umask16(0xff00).w(FUNC(igs011_state::igs011_prot1_w));
// map(0x01ff88, 0x01ff89).r(FUNC(igs011_state::igs011_prot1_r));
map(0x020000, 0x0201ff).w(FUNC(igs011_state::igs011_prot2_inc_w)); // inc (55)
@@ -2920,12 +2917,12 @@ void igs011_state::lhb2_mem(address_map &map)
map(0x100000, 0x103fff).ram().share("nvram");
map(0x200001, 0x200001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
- map(0x204000, 0x204003).w("ymsnd", FUNC(ym2413_device::write)).umask16(0x00ff);
+ map(0x204000, 0x204003).umask16(0x00ff).w("ymsnd", FUNC(ym2413_device::write));
map(0x208000, 0x208001).nopr().w(FUNC(igs011_state::igs003_w));
map(0x208002, 0x208003).rw(FUNC(igs011_state::lhb2_igs003_r), FUNC(igs011_state::lhb2_igs003_w));
map(0x20c000, 0x20cfff).ram().share(m_priority_ram);
- map(0x210000, 0x210fff).rw(m_palette, FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0x00ff).share("palette");
- map(0x211000, 0x211fff).rw(m_palette, FUNC(palette_device::read8_ext), FUNC(palette_device::write8_ext)).umask16(0x00ff).share("palette_ext");
+ map(0x210000, 0x210fff).umask16(0x00ff).rw(m_palette, FUNC(palette_device::read8), FUNC(palette_device::write8)).share("palette");
+ map(0x211000, 0x211fff).umask16(0x00ff).rw(m_palette, FUNC(palette_device::read8_ext), FUNC(palette_device::write8_ext)).share("palette_ext");
map(0x214000, 0x214001).portr("COIN");
map(0x300000, 0x3fffff).rw(FUNC(igs011_state::igs011_layers_r), FUNC(igs011_state::igs011_layers_w));
map(0xa20000, 0xa20001).w(FUNC(igs011_state::igs011_priority_w));
@@ -3397,7 +3394,7 @@ static INPUT_PORTS_START( lhb2 )
PORT_DIPSETTING( 0x02, "70%" )
PORT_DIPSETTING( 0x01, "74%" )
PORT_DIPSETTING( 0x00, "78%" )
- PORT_DIPNAME( 0x08, 0x00, "Odds Rate" ) PORT_DIPLOCATION("SW1:4") // 倍數?
+ PORT_DIPNAME( 0x08, 0x00, "Odds Rate" ) PORT_DIPLOCATION("SW1:4") // 倍數表
PORT_DIPSETTING( 0x00, "1,2,3,4,5,6,7,8" )
PORT_DIPSETTING( 0x08, "1,2,3,5,8,15,30,50" )
PORT_DIPNAME( 0x10, 0x00, "Maximum Bet" ) PORT_DIPLOCATION("SW1:5") // 最大押注
@@ -3408,9 +3405,9 @@ static INPUT_PORTS_START( lhb2 )
PORT_DIPSETTING( 0x40, "2" )
PORT_DIPSETTING( 0x20, "3" )
PORT_DIPSETTING( 0x00, "5" )
- PORT_DIPNAME( 0x80, 0x80, "Credit Timer" ) PORT_DIPLOCATION("SW1:8") // ??清除 (clears credits after timeout if you don't start a game)
- PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) // ?
- PORT_DIPSETTING( 0x00, DEF_STR( On ) ) // ?
+ PORT_DIPNAME( 0x80, 0x80, "Credit Timer" ) PORT_DIPLOCATION("SW1:8") // 自動清除 (clears credits after timeout if you don't start a game)
+ PORT_DIPSETTING( 0x80, DEF_STR(Off) ) // 無
+ PORT_DIPSETTING( 0x00, DEF_STR(On) ) // ?
PORT_START("DSW2")
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW2:1,2") // 投幣比率
@@ -3430,22 +3427,24 @@ static INPUT_PORTS_START( lhb2 )
PORT_DIPNAME( 0x20, 0x20, "Payout Mode" ) PORT_DIPLOCATION("SW2:6") // 退分方式
PORT_DIPSETTING( 0x20, "Key-Out" ) // 洗分
PORT_DIPSETTING( 0x00, "Return Coins" ) // 退幣 (doesn't seem to work properly)
- PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "SW2:7" ) // ????
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:8") // ??音?
- PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) // ?
- PORT_DIPSETTING( 0x80, DEF_STR( On ) ) // ?
+ PORT_DIPNAME( 0x40, 0x40, "Auto Reach" ) PORT_DIPLOCATION("SW2:7") // 自動摸打 (automatically draws and discards tiles after reach)
+ PORT_DIPSETTING( 0x00, DEF_STR(Off) ) // ?
+ PORT_DIPSETTING( 0x40, DEF_STR(On) ) // 有
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR(Demo_Sounds) ) PORT_DIPLOCATION("SW2:8") // 示範音樂
+ PORT_DIPSETTING( 0x00, DEF_STR(Off) ) // 無
+ PORT_DIPSETTING( 0x80, DEF_STR(On) ) // 有
PORT_START("DSW3")
- PORT_DIPNAME( 0x03, 0x03, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:1,2") // ??限?
+ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:1,2") // 破台限制
PORT_DIPSETTING( 0x03, "500" )
PORT_DIPSETTING( 0x02, "1000" )
PORT_DIPSETTING( 0x01, "2000" )
PORT_DIPSETTING( 0x00, "?" ) // ?限?
PORT_DIPNAME( 0x0c, 0x0c, "Gals" ) PORT_DIPLOCATION("SW3:3,4") // 美女
- PORT_DIPSETTING( 0x0c, "0?" ) // ?美女
- PORT_DIPSETTING( 0x08, "1?" ) // ?美女
- PORT_DIPSETTING( 0x04, "2?" ) // ?開女
- PORT_DIPSETTING( 0x00, "3?" ) // ?開女
+ PORT_DIPSETTING( 0x0c, DEF_STR(Off) ) // 無美女
+ PORT_DIPSETTING( 0x08, "1?" ) // ??
+ PORT_DIPSETTING( 0x04, "2?" ) // 開?
+ PORT_DIPSETTING( 0x00, "3?" ) // 開?
PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "SW3:5" ) // (not shown in settings display)
PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "SW3:6" ) // (not shown in settings display)
PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "SW3:7" ) // (not shown in settings display)
@@ -3582,37 +3581,39 @@ INPUT_PORTS_END
// basically same game as lhb2 and nkishusp but with joystick controls
static INPUT_PORTS_START( tygn )
PORT_START("DSW1")
- PORT_DIPNAME( 0x07, 0x07, "Pay Out (%)" ) PORT_DIPLOCATION("DSW1:1,2,3")
- PORT_DIPSETTING( 0x07, "50" )
- PORT_DIPSETTING( 0x06, "54" )
- PORT_DIPSETTING( 0x05, "58" )
- PORT_DIPSETTING( 0x04, "62" )
- PORT_DIPSETTING( 0x03, "66" )
- PORT_DIPSETTING( 0x02, "70" )
- PORT_DIPSETTING( 0x01, "74" )
- PORT_DIPSETTING( 0x00, "78" )
- PORT_DIPNAME( 0x08, 0x08, "Minimum Bet" ) PORT_DIPLOCATION("DSW1:4")
+ PORT_DIPNAME( 0x07, 0x02, "Payout Rate" ) PORT_DIPLOCATION("SW1:1,2,3") // 機率調整
+ PORT_DIPSETTING( 0x07, "50%" )
+ PORT_DIPSETTING( 0x06, "54%" )
+ PORT_DIPSETTING( 0x05, "58%" )
+ PORT_DIPSETTING( 0x04, "62%" )
+ PORT_DIPSETTING( 0x03, "66%" )
+ PORT_DIPSETTING( 0x02, "70%" )
+ PORT_DIPSETTING( 0x01, "74%" )
+ PORT_DIPSETTING( 0x00, "78%" )
+ PORT_DIPNAME( 0x08, 0x08, "Minimum Bet" ) PORT_DIPLOCATION("SW1:4") // 最小押注
PORT_DIPSETTING( 0x08, "1" )
PORT_DIPSETTING( 0x00, "2" )
- PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coinage ) ) PORT_DIPLOCATION("DSW1:5,6")
- PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) )
- PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) )
- PORT_DIPSETTING( 0x20, DEF_STR( 1C_2C ) )
- PORT_DIPSETTING( 0x10, DEF_STR( 1C_3C ) )
- PORT_DIPNAME( 0x40, 0x40, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("DSW1:7")
- PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x40, DEF_STR( On ) )
- PORT_DIPUNKNOWN( 0x80, 0x80 ) PORT_DIPLOCATION("DSW1:8")
+ PORT_DIPNAME( 0x30, 0x30, DEF_STR(Coinage) ) PORT_DIPLOCATION("SW1:5,6") // 投幣比率
+ PORT_DIPSETTING( 0x00, DEF_STR(2C_1C) )
+ PORT_DIPSETTING( 0x30, DEF_STR(1C_1C) )
+ PORT_DIPSETTING( 0x20, DEF_STR(1C_2C) )
+ PORT_DIPSETTING( 0x10, DEF_STR(1C_3C) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR(Demo_Sounds) ) PORT_DIPLOCATION("SW1:7") // 示範音樂
+ PORT_DIPSETTING( 0x00, DEF_STR(Off) ) // ?
+ PORT_DIPSETTING( 0x40, DEF_STR(On) ) // 有
+ PORT_DIPNAME( 0x80, 0x80, "Credit Timer" ) PORT_DIPLOCATION("SW1:8") // 自動清除 (clears credits after timeout if you don't start a game)
+ PORT_DIPSETTING( 0x80, DEF_STR(Off) ) // ?
+ PORT_DIPSETTING( 0x00, DEF_STR(On) ) // ?
PORT_START("DSW2") // not shown in test mode
- PORT_DIPUNKNOWN( 0x01, 0x01 ) PORT_DIPLOCATION("DSW2:1")
- PORT_DIPUNKNOWN( 0x02, 0x02 ) PORT_DIPLOCATION("DSW2:2")
- PORT_DIPUNKNOWN( 0x04, 0x04 ) PORT_DIPLOCATION("DSW2:3")
- PORT_DIPUNKNOWN( 0x08, 0x08 ) PORT_DIPLOCATION("DSW2:4")
- PORT_DIPUNKNOWN( 0x10, 0x10 ) PORT_DIPLOCATION("DSW2:5")
- PORT_DIPUNKNOWN( 0x20, 0x20 ) PORT_DIPLOCATION("DSW2:6")
- PORT_DIPUNKNOWN( 0x40, 0x40 ) PORT_DIPLOCATION("DSW2:7")
- PORT_DIPUNKNOWN( 0x80, 0x80 ) PORT_DIPLOCATION("DSW2:8")
+ PORT_DIPUNKNOWN( 0x01, 0x01 ) PORT_DIPLOCATION("SW2:1")
+ PORT_DIPUNKNOWN( 0x02, 0x02 ) PORT_DIPLOCATION("SW2:2")
+ PORT_DIPUNKNOWN( 0x04, 0x04 ) PORT_DIPLOCATION("SW2:3")
+ PORT_DIPUNKNOWN( 0x08, 0x08 ) PORT_DIPLOCATION("SW2:4")
+ PORT_DIPUNKNOWN( 0x10, 0x10 ) PORT_DIPLOCATION("SW2:5")
+ PORT_DIPUNKNOWN( 0x20, 0x20 ) PORT_DIPLOCATION("SW2:6")
+ PORT_DIPUNKNOWN( 0x40, 0x40 ) PORT_DIPLOCATION("SW2:7")
+ PORT_DIPUNKNOWN( 0x80, 0x80 ) PORT_DIPLOCATION("SW2:8")
PORT_START("DSW3") // only 2 out of 4 DIP banks phisically present
PORT_DIPNAME( 0xff, 0xff, DEF_STR( Unused ) )
@@ -3659,8 +3660,53 @@ static INPUT_PORTS_START( tygn )
INPUT_PORTS_END
-static INPUT_PORTS_START( wlcc )
+static INPUT_PORTS_START( xymg )
PORT_START("DSW1")
+ PORT_DIPNAME( 0x03, 0x03, DEF_STR(Coinage) ) PORT_DIPLOCATION("SW1:1,2") // 投幣比率
+ PORT_DIPSETTING( 0x03, DEF_STR(1C_1C) )
+ PORT_DIPSETTING( 0x02, DEF_STR(1C_2C) )
+ PORT_DIPSETTING( 0x01, DEF_STR(1C_3C) )
+ PORT_DIPSETTING( 0x00, DEF_STR(1C_4C) )
+ PORT_DIPNAME( 0x0c, 0x0c, "Key-in Rate" ) PORT_DIPLOCATION("SW1:3,4") // 開分比率
+ PORT_DIPSETTING( 0x0c, "10" )
+ PORT_DIPSETTING( 0x08, "20" )
+ PORT_DIPSETTING( 0x04, "50" )
+ PORT_DIPSETTING( 0x00, "100" )
+ PORT_DIPNAME( 0x10, 0x10, "Credit Limit" ) PORT_DIPLOCATION("SW1:5") // 進分上限
+ PORT_DIPSETTING( 0x10, "500" )
+ PORT_DIPSETTING( 0x00, "Unlimited" ) // 無限制 (if you have 10,000 or more credits, further credits will be rejected)
+ PORT_DIPNAME( 0x20, 0x20, "Credit Mode" ) PORT_DIPLOCATION("SW1:6") // 進分方式
+ PORT_DIPSETTING( 0x20, "Coin Acceptor" ) // 投幣
+ PORT_DIPSETTING( 0x00, "Key-In" ) // 開分
+ PORT_DIPNAME( 0x40, 0x40, "Payout Mode" ) PORT_DIPLOCATION("SW1:7") // 退分方式
+ PORT_DIPSETTING( 0x40, "Return Coins" ) // 退幣
+ PORT_DIPSETTING( 0x00, "Key-Out" ) // 洗分
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR(Demo_Sounds) ) PORT_DIPLOCATION("SW1:8") // 示範音樂
+ PORT_DIPSETTING( 0x00, DEF_STR(Off) ) // 無
+ PORT_DIPSETTING( 0x80, DEF_STR(On) ) // 有
+
+ PORT_START("DSW2")
+ PORT_DIPNAME( 0x03, 0x03, "Double Up Jackpot" ) PORT_DIPLOCATION("SW2:1,2") // 比倍爆機
+ PORT_DIPSETTING( 0x03, "1000" )
+ PORT_DIPSETTING( 0x02, "1500" )
+ PORT_DIPSETTING( 0x01, "2000" )
+ PORT_DIPSETTING( 0x00, "3000" )
+ PORT_DIPNAME( 0x0c, 0x0c, "Minimum Bet" ) PORT_DIPLOCATION("SW2:3,4") // 最小押注
+ PORT_DIPSETTING( 0x0c, "1" )
+ PORT_DIPSETTING( 0x08, "2" )
+ PORT_DIPSETTING( 0x04, "3" )
+ PORT_DIPSETTING( 0x00, "5" )
+ PORT_DIPNAME( 0x10, 0x10, "Double Up Game" ) PORT_DIPLOCATION("SW2:5") // 比倍遊戲
+ PORT_DIPSETTING( 0x00, DEF_STR(Off) ) // 無
+ PORT_DIPSETTING( 0x10, DEF_STR(On) ) // 有
+ PORT_DIPNAME( 0x20, 0x20, "Title Screen" ) PORT_DIPLOCATION("SW2:6" ) // (not shown in settings display)
+ PORT_DIPSETTING( 0x00, DEF_STR(Off) ) // (shows disclaimer and copyright message over black background)
+ PORT_DIPSETTING( 0x20, DEF_STR(On) )
+ PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "SW2:7" ) // (not shown in settings display)
+ PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "SW2:8" ) // (not shown in settings display)
+
+ // FIXME: SW3 doesn't respond in input test - are these hooked up correctly?
+ PORT_START("DSW3")
PORT_DIPUNKNOWN( 0x01, 0x01 )
PORT_DIPUNKNOWN( 0x02, 0x02 )
PORT_DIPUNKNOWN( 0x04, 0x04 )
@@ -3670,77 +3716,113 @@ static INPUT_PORTS_START( wlcc )
PORT_DIPUNKNOWN( 0x40, 0x40 )
PORT_DIPUNKNOWN( 0x80, 0x80 )
+ // TODO: hook up SW4 shown in input test but not settings display
+ // TODO: hook up SW5 shown in input test but not settings display
+
+ PORT_START("COIN")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(FUNC(igs011_state::igs_hopper_r)) // hopper switch
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_SERVICE_NO_TOGGLE( 0x04, IP_ACTIVE_LOW ) // keep pressed while booting
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) // stats
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_CONDITION("DSW1", 0x20, EQUALS, 0x20)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN ) PORT_CONDITION("DSW1", 0x20, EQUALS, 0x00)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_CONDITION("DSW1", 0x40, EQUALS, 0x40)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) PORT_CONDITION("DSW1", 0x40, EQUALS, 0x00)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_INCLUDE(igs_mahjong_matrix)
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( wlcc )
+ PORT_START("DSW1")
+ PORT_DIPUNKNOWN_DIPLOC( 0x01, 0x01, "SW3:1" ) // (not shown in settings display)
+ PORT_DIPUNKNOWN_DIPLOC( 0x02, 0x02, "SW3:2" ) // (not shown in settings display)
+ PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x04, "SW3:3" ) // (not shown in settings display)
+ PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "SW3:4" ) // (not shown in settings display)
+ PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "SW3:5" ) // (not shown in settings display)
+ PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "SW3:6" ) // (not shown in settings display)
+ PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "SW3:7" ) // (not shown in settings display)
+ PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "SW3:8" ) // (not shown in settings display)
+
PORT_START("DSW2")
- PORT_DIPNAME( 0x03, 0x03, DEF_STR( Unknown ) )
+ PORT_DIPNAME( 0x03, 0x03, "Double Up Jackpot" ) PORT_DIPLOCATION("SW2:1,2") // 比倍爆機
PORT_DIPSETTING( 0x03, "1000" )
PORT_DIPSETTING( 0x02, "1500" )
PORT_DIPSETTING( 0x01, "2000" )
PORT_DIPSETTING( 0x00, "3000" )
- PORT_DIPNAME( 0x0c, 0x0c, "Min Bet" )
+ PORT_DIPNAME( 0x0c, 0x0c, "Minimum Bet" ) PORT_DIPLOCATION("SW2:3,4") // 最小押注
PORT_DIPSETTING( 0x0c, "1" )
PORT_DIPSETTING( 0x08, "2" )
PORT_DIPSETTING( 0x04, "3" )
PORT_DIPSETTING( 0x00, "5" )
- PORT_DIPUNKNOWN( 0x10, 0x10 ) // shown in test mode
- PORT_DIPUNKNOWN( 0x20, 0x20 )
- PORT_DIPNAME( 0x40, 0x40, "Hide Title" )
- PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPUNKNOWN( 0x80, 0x80 )
+ PORT_DIPNAME( 0x10, 0x10, "Double Up Game" ) PORT_DIPLOCATION("SW2:5") // 比倍遊戲
+ PORT_DIPSETTING( 0x00, DEF_STR(Off) ) // 無
+ PORT_DIPSETTING( 0x10, DEF_STR(On) ) // 有
+ PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "SW2:6" ) // (not shown in settings display)
+ PORT_DIPNAME( 0x40, 0x40, "Title Screen" ) PORT_DIPLOCATION("SW2:7" ) // (not shown in settings display)
+ PORT_DIPSETTING( 0x00, DEF_STR(Off) ) // (shows disclaimer and copyright message over black background)
+ PORT_DIPSETTING( 0x40, DEF_STR(On) )
+ PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "SW2:8" ) // (not shown in settings display)
PORT_START("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_3C ) )
- PORT_DIPSETTING( 0x00, DEF_STR( 1C_4C ) )
- PORT_DIPNAME( 0x0c, 0x0c, "Credits Per Note" )
+ PORT_DIPNAME( 0x03, 0x03, DEF_STR(Coinage) ) PORT_DIPLOCATION("SW1:1,2") // 投幣比率
+ PORT_DIPSETTING( 0x03, DEF_STR(1C_1C) )
+ PORT_DIPSETTING( 0x02, DEF_STR(1C_2C) )
+ PORT_DIPSETTING( 0x01, DEF_STR(1C_3C) )
+ PORT_DIPSETTING( 0x00, DEF_STR(1C_4C) )
+ PORT_DIPNAME( 0x0c, 0x0c, "Key-in Rate" ) PORT_DIPLOCATION("SW1:3,4") // 開分比率
PORT_DIPSETTING( 0x0c, "10" )
PORT_DIPSETTING( 0x08, "20" )
PORT_DIPSETTING( 0x04, "50" )
PORT_DIPSETTING( 0x00, "100" )
- PORT_DIPNAME( 0x10, 0x10, "Max Note Credits" )
+ PORT_DIPNAME( 0x10, 0x10, "Credit Limit" ) PORT_DIPLOCATION("SW1:5") // 進分上限
PORT_DIPSETTING( 0x10, "500" )
- PORT_DIPSETTING( 0x00, "9999" )
- PORT_DIPNAME( 0x20, 0x20, "Money Type" )
- PORT_DIPSETTING( 0x20, "Coins" ) // use bits 0-1
- PORT_DIPSETTING( 0x00, "Notes" ) // use bits 2-3
- PORT_DIPNAME( 0x40, 0x00, "Pay Out Type" )
- PORT_DIPSETTING( 0x00, "Coins" )
- PORT_DIPSETTING( 0x40, "Notes" )
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Demo_Sounds ) )
- PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x80, DEF_STR( On ) )
+ PORT_DIPSETTING( 0x00, "Unlimited" ) // 無限制 (if you have 10,000 or more credits, further credits will be rejected)
+ PORT_DIPNAME( 0x20, 0x20, "Credit Mode" ) PORT_DIPLOCATION("SW1:6") // 進分方式
+ PORT_DIPSETTING( 0x20, "Coin Acceptor" ) // 投幣
+ PORT_DIPSETTING( 0x00, "Key-In" ) // 開分
+ PORT_DIPNAME( 0x40, 0x40, "Payout Mode" ) PORT_DIPLOCATION("SW1:7") // 退分方式
+ PORT_DIPSETTING( 0x40, "Return Coins" ) // 退幣
+ PORT_DIPSETTING( 0x00, "Key-Out" ) // 洗分
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR(Demo_Sounds) ) PORT_DIPLOCATION("SW1:8") // 示範音樂
+ PORT_DIPSETTING( 0x00, DEF_STR(Off) ) // 無
+ PORT_DIPSETTING( 0x80, DEF_STR(On) ) // 有
PORT_START("DSW4")
- PORT_DIPUNKNOWN( 0x01, 0x01 )
- PORT_DIPUNKNOWN( 0x02, 0x02 )
- PORT_DIPUNKNOWN( 0x04, 0x04 )
- PORT_DIPUNKNOWN( 0x08, 0x08 )
- PORT_DIPUNKNOWN( 0x10, 0x10 )
- PORT_DIPUNKNOWN( 0x20, 0x20 )
- PORT_DIPUNKNOWN( 0x40, 0x40 )
- PORT_DIPUNKNOWN( 0x80, 0x80 )
+ PORT_DIPUNKNOWN_DIPLOC( 0x01, 0x01, "SW4:1" ) // (not shown in settings display)
+ PORT_DIPUNKNOWN_DIPLOC( 0x02, 0x02, "SW4:2" ) // (not shown in settings display)
+ PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x04, "SW4:3" ) // (not shown in settings display)
+ PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "SW4:4" ) // (not shown in settings display)
+ PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "SW4:5" ) // (not shown in settings display)
+ PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "SW4:6" ) // (not shown in settings display)
+ PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "SW4:7" ) // (not shown in settings display)
+ PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "SW4:8" ) // (not shown in settings display)
+
+ // TODO: hook up SW5 shown in input test but not settings display
PORT_START("COIN")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
- PORT_SERVICE_NO_TOGGLE( 0x04, IP_ACTIVE_LOW ) // keep pressed while booting
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE2 ) // shown in test mode
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Pay Out") PORT_CODE(KEYCODE_O) // clear coin
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(FUNC(igs011_state::igs_hopper_r)) // hopper switch
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_CONDITION("DSW3", 0x20, EQUALS, 0x20) // 投幣
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN ) PORT_CONDITION("DSW3", 0x20, EQUALS, 0x00) // 投幣
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_SERVICE_NO_TOGGLE( 0x04, IP_ACTIVE_LOW ) // 測試
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) // 査帳
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // 清除
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_CONDITION("DSW3", 0x40, EQUALS, 0x40) // 退幣
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) PORT_CONDITION("DSW3", 0x40, EQUALS, 0x00) // 退幣
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(FUNC(igs011_state::igs_hopper_r)) // hopper switch
PORT_START("IN0")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) // 開始/得分
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) // bet
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON3 )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) // 摸/捨 大/雙比倍
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) // 押注 全比倍
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON3 ) // 功能 小/半比倍
INPUT_PORTS_END
@@ -4018,76 +4100,6 @@ static INPUT_PORTS_START( vbowlj )
INPUT_PORTS_END
-static INPUT_PORTS_START( xymg )
- PORT_START("DSW1")
- PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:1,2") // 投幣比率
- PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
- PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
- PORT_DIPSETTING( 0x01, DEF_STR( 1C_3C ) )
- PORT_DIPSETTING( 0x00, DEF_STR( 1C_4C ) )
- PORT_DIPNAME( 0x0c, 0x0c, "Key-in Rate" ) PORT_DIPLOCATION("SW1:3,4") // 開分比率
- PORT_DIPSETTING( 0x0c, "10" )
- PORT_DIPSETTING( 0x08, "20" )
- PORT_DIPSETTING( 0x04, "50" )
- PORT_DIPSETTING( 0x00, "100" )
- PORT_DIPNAME( 0x10, 0x10, "Credit Limit" ) PORT_DIPLOCATION("SW1:5") // 進分上限
- PORT_DIPSETTING( 0x10, "500" )
- PORT_DIPSETTING( 0x00, "Unlimited" ) // 無限制 (if you have 10,000 or more credits, further credits will be rejected)
- PORT_DIPNAME( 0x20, 0x20, "Credit Mode" ) PORT_DIPLOCATION("SW1:6") // 進分方式
- PORT_DIPSETTING( 0x20, "Coin Acceptor" ) // 投幣
- PORT_DIPSETTING( 0x00, "Key-In" ) // 開分
- PORT_DIPNAME( 0x40, 0x40, "Payout Mode" ) PORT_DIPLOCATION("SW1:7") // 退分方式
- PORT_DIPSETTING( 0x40, "Return Coins" ) // 退幣
- PORT_DIPSETTING( 0x00, "Key-Out" ) // 洗分
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:8") // 示範音樂
- PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) // 無
- PORT_DIPSETTING( 0x80, DEF_STR( On ) ) // 有
-
- PORT_START("DSW2")
- PORT_DIPNAME( 0x03, 0x03, "Double Up Jackpot" ) PORT_DIPLOCATION("SW2:1,2") // 比倍爆機
- PORT_DIPSETTING( 0x03, "1000" )
- PORT_DIPSETTING( 0x02, "1500" )
- PORT_DIPSETTING( 0x01, "2000" )
- PORT_DIPSETTING( 0x00, "3000" )
- PORT_DIPNAME( 0x0c, 0x0c, "Minimum Bet" ) PORT_DIPLOCATION("SW2:3,4") // 最小押注
- PORT_DIPSETTING( 0x0c, "1" )
- PORT_DIPSETTING( 0x08, "2" )
- PORT_DIPSETTING( 0x04, "3" )
- PORT_DIPSETTING( 0x00, "5" )
- PORT_DIPNAME( 0x10, 0x10, "Double Up Game" ) PORT_DIPLOCATION("SW2:5") // 比倍遊戲
- PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) // 無
- PORT_DIPSETTING( 0x10, DEF_STR( On ) ) // 有
- PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "SW2:6" ) // (not shown in settings display)
- PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "SW2:7" ) // (not shown in settings display)
- PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "SW2:8" ) // (not shown in settings display)
-
- // FIXME: SW3 doesn't respond in input test - are these hooked up correctly?
- PORT_START("DSW3")
- PORT_DIPUNKNOWN( 0x01, 0x01 )
- PORT_DIPUNKNOWN( 0x02, 0x02 )
- PORT_DIPUNKNOWN( 0x04, 0x04 )
- PORT_DIPUNKNOWN( 0x08, 0x08 )
- PORT_DIPUNKNOWN( 0x10, 0x10 )
- PORT_DIPUNKNOWN( 0x20, 0x20 )
- PORT_DIPUNKNOWN( 0x40, 0x40 )
- PORT_DIPUNKNOWN( 0x80, 0x80 )
-
- PORT_START("COIN")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(FUNC(igs011_state::igs_hopper_r)) // hopper switch
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_SERVICE_NO_TOGGLE( 0x04, IP_ACTIVE_LOW ) // keep pressed while booting
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) // stats
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_CONDITION("DSW1", 0x20, EQUALS, 0x20)
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN ) PORT_CONDITION("DSW1", 0x20, EQUALS, 0x00)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_CONDITION("DSW1", 0x40, EQUALS, 0x40)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) PORT_CONDITION("DSW1", 0x40, EQUALS, 0x00)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
-
- PORT_INCLUDE(igs_mahjong_matrix)
-INPUT_PORTS_END
-
-
/***************************************************************************
Machine Drivers
@@ -4141,7 +4153,8 @@ void igs011_state::igs011_base(machine_config &config)
PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 0x2000/4);
m_palette->set_membits(8);
-// GFXDECODE(config, "gfxdecode", m_palette, gfx_igs011);
+
+ //GFXDECODE(config, "gfxdecode", m_palette, gfx_igs011);
/* sound hardware */
SPEAKER(config, "mono").front_center();
@@ -4158,8 +4171,10 @@ TIMER_DEVICE_CALLBACK_MEMBER( igs011_state::timer_irq_cb )
void igs011_state::drgnwrld(machine_config &config)
{
igs011_base(config);
+
m_maincpu->set_addrmap(AS_PROGRAM, &igs011_state::drgnwrld_mem);
m_maincpu->set_vblank_int("screen", FUNC(igs011_state::irq6_line_hold));
+
TIMER(config, "timer_irq").configure_periodic(FUNC(igs011_state::timer_irq_cb<5>), attotime::from_hz(240)); // lev5 frequency drives the music tempo
YM3812(config, "ymsnd", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 2.0);
@@ -4168,6 +4183,7 @@ void igs011_state::drgnwrld(machine_config &config)
void igs011_state::drgnwrld_igs012(machine_config &config)
{
drgnwrld(config);
+
m_maincpu->set_addrmap(AS_PROGRAM, &igs011_state::drgnwrld_igs012_mem);
}
@@ -4191,8 +4207,10 @@ TIMER_DEVICE_CALLBACK_MEMBER( igs011_state::lhb_timer_irq_cb )
void igs011_state::lhb(machine_config &config)
{
igs011_base(config);
+
m_maincpu->set_addrmap(AS_PROGRAM, &igs011_state::lhb_mem);
m_maincpu->set_vblank_int("screen", FUNC(igs011_state::lhb_vblank_irq));
+
TIMER(config, "timer_irq").configure_periodic(FUNC(igs011_state::lhb_timer_irq_cb), attotime::from_hz(240)); // lev5 frequency drives the music tempo
// irq 3 points to an apparently unneeded routine
}
@@ -4200,8 +4218,10 @@ void igs011_state::lhb(machine_config &config)
void igs011_state::wlcc(machine_config &config)
{
igs011_base(config);
+
m_maincpu->set_addrmap(AS_PROGRAM, &igs011_state::wlcc_mem);
m_maincpu->set_vblank_int("screen", FUNC(igs011_state::irq6_line_hold));
+
TIMER(config, "timer_irq").configure_periodic(FUNC(igs011_state::timer_irq_cb<3>), attotime::from_hz(240)); // lev3 frequency drives the music tempo
}
@@ -4209,8 +4229,10 @@ void igs011_state::wlcc(machine_config &config)
void igs011_state::xymg(machine_config &config)
{
igs011_base(config);
+
m_maincpu->set_addrmap(AS_PROGRAM, &igs011_state::xymg_mem);
m_maincpu->set_vblank_int("screen", FUNC(igs011_state::irq6_line_hold));
+
TIMER(config, "timer_irq").configure_periodic(FUNC(igs011_state::timer_irq_cb<3>), attotime::from_hz(240)); // lev3 frequency drives the music tempo
}
@@ -4218,6 +4240,7 @@ void igs011_state::xymg(machine_config &config)
void igs011_state::xymga(machine_config &config)
{
xymg(config);
+
m_maincpu->set_addrmap(AS_PROGRAM, &igs011_state::xymga_mem);
}
@@ -4225,11 +4248,13 @@ void igs011_state::xymga(machine_config &config)
void igs011_state::lhb2(machine_config &config)
{
igs011_base(config);
+
m_maincpu->set_addrmap(AS_PROGRAM, &igs011_state::lhb2_mem);
m_maincpu->set_vblank_int("screen", FUNC(igs011_state::irq6_line_hold));
+
TIMER(config, "timer_irq").configure_periodic(FUNC(igs011_state::timer_irq_cb<5>), attotime::from_hz(240)); // lev5 frequency drives the music tempo
-// GFXDECODE(config, "gfxdecode", m_palette, gfx_igs011_hi);
+ //GFXDECODE(config, "gfxdecode", m_palette, gfx_igs011_hi);
YM2413(config, "ymsnd", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 2.0);
}
@@ -4238,13 +4263,15 @@ void igs011_state::lhb2(machine_config &config)
void igs011_state::nkishusp(machine_config &config)
{
igs011_base(config);
+
m_maincpu->set_addrmap(AS_PROGRAM, &igs011_state::nkishusp_mem);
m_maincpu->set_vblank_int("screen", FUNC(igs011_state::irq6_line_hold));
+
TIMER(config, "timer_irq").configure_periodic(FUNC(igs011_state::timer_irq_cb<3>), attotime::from_hz(240)); // lev3 frequency drives the music tempo
// VSync 60.0052Hz, HSync 15.620kHz
-// GFXDECODE(config, "gfxdecode", m_palette, gfx_igs011_hi);
+ //GFXDECODE(config, "gfxdecode", m_palette, gfx_igs011_hi);
YM2413(config, "ymsnd", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 2.0);
}
@@ -4253,28 +4280,32 @@ void igs011_state::nkishusp(machine_config &config)
void igs011_state::tygn(machine_config &config)
{
nkishusp(config);
+
m_maincpu->set_addrmap(AS_PROGRAM, &igs011_state::tygn_mem);
}
void vbowl_state::sound_irq(int state)
{
-// m_maincpu->set_input_line(3, state);
+ //m_maincpu->set_input_line(3, state);
}
void vbowl_state::vbowl(machine_config &config)
{
igs011_base(config);
+
m_maincpu->set_addrmap(AS_PROGRAM, &vbowl_state::vbowl_mem);
m_maincpu->set_vblank_int("screen", FUNC(vbowl_state::irq6_line_hold));
+
TIMER(config, "timer_irq").configure_periodic(FUNC(vbowl_state::timer_irq_cb<3>), attotime::from_hz(240)); // lev3 frequency drives the music tempo
// irq 5 points to a debug function (all routines are clearly patched out)
// irq 4 points to an apparently unneeded routine
m_screen->screen_vblank().set(FUNC(vbowl_state::screen_vblank));
-// GFXDECODE(config, "gfxdecode", m_palette, gfx_igs011_hi);
+ //GFXDECODE(config, "gfxdecode", m_palette, gfx_igs011_hi);
config.device_remove("oki");
+
ICS2115(config, m_ics, 33.8688_MHz_XTAL);
m_ics->irq().set(FUNC(vbowl_state::sound_irq));
m_ics->add_route(ALL_OUTPUTS, "mono", 5.0);
@@ -4283,6 +4314,7 @@ void vbowl_state::vbowl(machine_config &config)
void vbowl_state::vbowlhk(machine_config &config)
{
vbowl(config);
+
m_maincpu->set_addrmap(AS_PROGRAM, &vbowl_state::vbowlhk_mem);
}
@@ -4592,7 +4624,7 @@ ROM_END
/***************************************************************************
- 龙虎榜/Lóng hǔ bǎng (V035C)
+ 龙虎榜/Lóng Hǔ Bǎng (V035C)
Other files in the zip:
@@ -5108,7 +5140,7 @@ GAME( 1995, dbc, lhb, lhb, lhb, igs011_state, i
GAME( 1995, ryukobou, lhb, lhb, lhb, igs011_state, init_ryukobou, ROT0, "IGS / Alta", "Mahjong Ryukobou (Japan, V030J)", MACHINE_SUPPORTS_SAVE )
GAME( 1996, lhb2, 0, lhb2, lhb2, igs011_state, init_lhb2, ROT0, "IGS", "Lung Fu Bong II (Hong Kong, V185H)", MACHINE_SUPPORTS_SAVE )
GAME( 1996, tygn, lhb2, tygn, tygn, igs011_state, init_tygn, ROT0, "IGS", "Te Yi Gong Neng (China, V632C)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION ) // ROM patches
-GAME( 1996, lhb3, lhb2, nkishusp, nkishusp, igs011_state, init_lhb3, ROT0, "IGS", "Long Hu Bang III: Cuo Pai Gaoshou (China, V242C)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION ) // ROM patches
+GAME( 1996, lhb3, lhb2, nkishusp, lhb2, igs011_state, init_lhb3, ROT0, "IGS", "Long Hu Bang III: Cuo Pai Gaoshou (China, V242C)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION ) // ROM patches
GAME( 1996, xymg, 0, xymg, xymg, igs011_state, init_xymg, ROT0, "IGS", "Xingyun Manguan (China, V651C, set 1)", MACHINE_SUPPORTS_SAVE )
GAME( 1996, xymga, xymg, xymga, xymg, igs011_state, init_xymga, ROT0, "IGS", "Xingyun Manguan (China, V651C, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) // different encryption and without IGS003
GAME( 1996, wlcc, xymg, wlcc, wlcc, igs011_state, init_wlcc, ROT0, "IGS", "Wanli Changcheng (China, V638C)", MACHINE_SUPPORTS_SAVE )