mirror of
https://github.com/holub/mame
synced 2025-07-03 00:56:03 +03:00
lucky74.cpp: enabled save state support
This commit is contained in:
parent
f668cb4637
commit
625a0595fb
@ -2212,7 +2212,7 @@ static INPUT_PORTS_START( cmast91 )
|
||||
|
||||
PORT_INCLUDE( cmv4_dsw5 )
|
||||
PORT_MODIFY("DSW5")
|
||||
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW5:1") /* normally Display of Doll On Demo, but no whores in this set */
|
||||
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW5:1") /* normally Display of Doll On Demo, but no ladies in this set */
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
/* Coin In Limit OK */
|
||||
@ -2223,7 +2223,7 @@ static INPUT_PORTS_START( cmast91 )
|
||||
PORT_DIPNAME( 0x40, 0x40, "Skill Stop" ) PORT_DIPLOCATION("DSW5:7") /* OK */
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW5:8") /* normally Test Mode For Disp. Of Doll, but no whores in this set */
|
||||
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW5:8") /* normally Test Mode For Disp. Of Doll, but no ladies in this set */
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
INPUT_PORTS_END
|
||||
|
@ -709,7 +709,7 @@
|
||||
- Changes on the interrupt system (need to be verified on the PCB).
|
||||
- Renamed the graphics regions to more descriptive names.
|
||||
- Corrected the manufacturer's name.
|
||||
- Splitted the driver to driver + video.
|
||||
- Split the driver to driver + video.
|
||||
- Updated technical notes.
|
||||
|
||||
|
||||
@ -763,7 +763,6 @@
|
||||
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "sound/ay8910.h"
|
||||
#include "sound/msm5205.h"
|
||||
#include "sound/sn76496.h"
|
||||
#include "machine/i8255.h"
|
||||
#include "machine/nvram.h"
|
||||
@ -773,29 +772,42 @@
|
||||
#include "lucky74.lh"
|
||||
|
||||
|
||||
#define MASTER_CLOCK XTAL(12'000'000) /* confirmed */
|
||||
#define MASTER_CLOCK XTAL(12'000'000) // confirmed
|
||||
|
||||
/* custom 06B49P clocks */
|
||||
#define C_06B49P_CLKOUT_01 (MASTER_CLOCK/2) /* 6 MHz. */
|
||||
#define C_06B49P_CLKOUT_02 (MASTER_CLOCK/4) /* 3 MHz. */
|
||||
#define C_06B49P_CLKOUT_03 (MASTER_CLOCK/4) /* 3 MHz. */
|
||||
#define C_06B49P_CLKOUT_04 (MASTER_CLOCK/8) /* 1.5 MHz. */
|
||||
#define C_06B49P_CLKOUT_05 (MASTER_CLOCK/16) /* 750 kHz. */
|
||||
#define C_06B49P_CLKOUT_06 (MASTER_CLOCK/32) /* 375 kHz. */
|
||||
#define C_06B49P_CLKOUT_07 (MASTER_CLOCK/64) /* 187.5 kHz. */
|
||||
#define C_06B49P_CLKOUT_08 (MASTER_CLOCK/128) /* 93.75 kHz. */
|
||||
#define C_06B49P_CLKOUT_09 (MASTER_CLOCK/256) /* 46875 Hz. */
|
||||
#define C_06B49P_CLKOUT_10 (7782) /* 7782 Hz. measured */
|
||||
#define C_06B49P_CLKOUT_11 (3920) /* 3920 Hz. measured */
|
||||
#define C_06B49P_CLKOUT_12 (1960) /* 1960 Hz. measured */
|
||||
#define C_06B49P_CLKOUT_13 (950) /* 950 Hz. measured */
|
||||
#define C_06B49P_CLKOUT_14 (475) /* 475 Hz. measured */
|
||||
#define C_06B49P_CLKOUT_15 (237) /* 237 Hz. measured */
|
||||
#define C_06B49P_CLKOUT_16 (MASTER_CLOCK/100000) /* 120 Hz. */
|
||||
#define C_06B49P_CLKOUT_17 (MASTER_CLOCK/200000) /* 60 Hz. */
|
||||
#define C_06B49P_CLKOUT_18 (MASTER_CLOCK/256/3) /* 15625 Hz. (H-Sync) */
|
||||
#define C_06B49P_CLKOUT_19 (MASTER_CLOCK/200000) /* 60 Hz. (V-Sync) */
|
||||
// custom 06B49P clocks
|
||||
#define C_06B49P_CLKOUT_01 (MASTER_CLOCK/2) // 6 MHz.
|
||||
#define C_06B49P_CLKOUT_02 (MASTER_CLOCK/4) // 3 MHz.
|
||||
#define C_06B49P_CLKOUT_03 (MASTER_CLOCK/4) // 3 MHz.
|
||||
#define C_06B49P_CLKOUT_04 (MASTER_CLOCK/8) // 1.5 MHz.
|
||||
#define C_06B49P_CLKOUT_05 (MASTER_CLOCK/16) // 750 kHz.
|
||||
#define C_06B49P_CLKOUT_06 (MASTER_CLOCK/32) // 375 kHz.
|
||||
#define C_06B49P_CLKOUT_07 (MASTER_CLOCK/64) // 187.5 kHz.
|
||||
#define C_06B49P_CLKOUT_08 (MASTER_CLOCK/128) // 93.75 kHz.
|
||||
#define C_06B49P_CLKOUT_09 (MASTER_CLOCK/256) // 46875 Hz.
|
||||
#define C_06B49P_CLKOUT_10 (7782) // 7782 Hz. measured
|
||||
#define C_06B49P_CLKOUT_11 (3920) // 3920 Hz. measured
|
||||
#define C_06B49P_CLKOUT_12 (1960) // 1960 Hz. measured
|
||||
#define C_06B49P_CLKOUT_13 (950) // 950 Hz. measured
|
||||
#define C_06B49P_CLKOUT_14 (475) // 475 Hz. measured
|
||||
#define C_06B49P_CLKOUT_15 (237) // 237 Hz. measured
|
||||
#define C_06B49P_CLKOUT_16 (MASTER_CLOCK/100000) // 120 Hz.
|
||||
#define C_06B49P_CLKOUT_17 (MASTER_CLOCK/200000) // 60 Hz.
|
||||
#define C_06B49P_CLKOUT_18 (MASTER_CLOCK/256/3) // 15625 Hz. (H-Sync)
|
||||
#define C_06B49P_CLKOUT_19 (MASTER_CLOCK/200000) // 60 Hz. (V-Sync)
|
||||
|
||||
void lucky74_state::machine_start()
|
||||
{
|
||||
m_lamps.resolve();
|
||||
|
||||
save_item(NAME(m_ym2149_portb));
|
||||
save_item(NAME(m_usart_8251));
|
||||
save_item(NAME(m_copro_sm7831));
|
||||
save_item(NAME(m_adpcm_pos));
|
||||
save_item(NAME(m_adpcm_end));
|
||||
save_item(NAME(m_adpcm_data));
|
||||
save_item(NAME(m_adpcm_reg));
|
||||
save_item(NAME(m_adpcm_busy_line));
|
||||
}
|
||||
|
||||
void lucky74_state::machine_reset()
|
||||
{
|
||||
@ -838,28 +850,28 @@ void lucky74_state::ym2149_portb_w(uint8_t data)
|
||||
|
||||
uint8_t lucky74_state::usart_8251_r()
|
||||
{
|
||||
/* reads to USART 8251 port */
|
||||
// reads to USART 8251 port
|
||||
logerror("read from USART port.\n");
|
||||
return 0xff;
|
||||
}
|
||||
|
||||
void lucky74_state::usart_8251_w(uint8_t data)
|
||||
{
|
||||
/* writes to USART 8251 port */
|
||||
// writes to USART 8251 port
|
||||
m_usart_8251 = data;
|
||||
logerror("write to USART port: %02x \n", m_usart_8251);
|
||||
}
|
||||
|
||||
uint8_t lucky74_state::copro_sm7831_r()
|
||||
{
|
||||
/* read from SM7831 co-processor */
|
||||
// read from SM7831 co-processor
|
||||
logerror("read from co-processor.\n");
|
||||
return 0xff;
|
||||
}
|
||||
|
||||
void lucky74_state::copro_sm7831_w(uint8_t data)
|
||||
{
|
||||
/* write to SM7831 co-processor */
|
||||
// write to SM7831 co-processor
|
||||
m_copro_sm7831 = data;
|
||||
logerror("write to co-processor: %2X\n", m_copro_sm7831);
|
||||
}
|
||||
@ -878,10 +890,10 @@ void lucky74_state::lamps_a_w(uint8_t data)
|
||||
---- xx-- BIG + SMALL (need to be individualized)
|
||||
*/
|
||||
|
||||
m_lamps[8] = BIT(data, 0); /* D-UP */
|
||||
m_lamps[9] = BIT(data, 1); /* TAKE SCORE */
|
||||
m_lamps[10] = BIT(data, 2); /* BIG */
|
||||
m_lamps[11] = BIT(data, 3); /* SMALL */
|
||||
m_lamps[8] = BIT(data, 0); // D-UP
|
||||
m_lamps[9] = BIT(data, 1); // TAKE SCORE
|
||||
m_lamps[10] = BIT(data, 2); // BIG
|
||||
m_lamps[11] = BIT(data, 3); // SMALL
|
||||
}
|
||||
|
||||
void lucky74_state::lamps_b_w(uint8_t data)
|
||||
@ -895,17 +907,17 @@ void lucky74_state::lamps_b_w(uint8_t data)
|
||||
---- x--- HOLD4
|
||||
---x ---- HOLD5
|
||||
-xx- ---- BET + START (need to be individualized)
|
||||
x--- ---- CANCEL (should lit start too?)
|
||||
x--- ---- CANCEL (should light start too?)
|
||||
*/
|
||||
|
||||
m_lamps[0] = BIT(data, 0); /* HOLD1 */
|
||||
m_lamps[1] = BIT(data, 1); /* HOLD2 */
|
||||
m_lamps[2] = BIT(data, 2); /* HOLD3 */
|
||||
m_lamps[3] = BIT(data, 3); /* HOLD4 */
|
||||
m_lamps[4] = BIT(data, 4); /* HOLD5 */
|
||||
m_lamps[5] = BIT(data, 5); /* BET */
|
||||
m_lamps[6] = BIT(data, 6) | BIT(data, 7); /* START */
|
||||
m_lamps[7] = BIT(data, 7); /* CANCEL */
|
||||
m_lamps[0] = BIT(data, 0); // HOLD1
|
||||
m_lamps[1] = BIT(data, 1); // HOLD2
|
||||
m_lamps[2] = BIT(data, 2); // HOLD3
|
||||
m_lamps[3] = BIT(data, 3); // HOLD4
|
||||
m_lamps[4] = BIT(data, 4); // HOLD5
|
||||
m_lamps[5] = BIT(data, 5); // BET
|
||||
m_lamps[6] = BIT(data, 6) | BIT(data, 7); // START
|
||||
m_lamps[7] = BIT(data, 7); // CANCEL
|
||||
}
|
||||
|
||||
|
||||
@ -915,7 +927,7 @@ void lucky74_state::lamps_b_w(uint8_t data)
|
||||
|
||||
INTERRUPT_GEN_MEMBER(lucky74_state::nmi_interrupt)
|
||||
{
|
||||
if ((m_ym2149_portb & 0x10) == 0) /* ym2149 portB bit 4 trigger the NMI */
|
||||
if ((m_ym2149_portb & 0x10) == 0) // ym2149 portB bit 4 triggers the NMI
|
||||
{
|
||||
device.execute().pulse_input_line(INPUT_LINE_NMI, attotime::zero);
|
||||
}
|
||||
@ -926,31 +938,31 @@ INTERRUPT_GEN_MEMBER(lucky74_state::nmi_interrupt)
|
||||
* Memory Map Information *
|
||||
*************************/
|
||||
|
||||
void lucky74_state::lucky74_map(address_map &map)
|
||||
void lucky74_state::prg_map(address_map &map)
|
||||
{
|
||||
map(0x0000, 0xbfff).rom();
|
||||
map(0xc000, 0xcfff).ram().share("nvram"); /* NVRAM */
|
||||
map(0xd000, 0xd7ff).ram().w(FUNC(lucky74_state::lucky74_fg_videoram_w)).share("fg_videoram"); // VRAM1-1
|
||||
map(0xd800, 0xdfff).ram().w(FUNC(lucky74_state::lucky74_fg_colorram_w)).share("fg_colorram"); // VRAM1-2
|
||||
map(0xe000, 0xe7ff).ram().w(FUNC(lucky74_state::lucky74_bg_videoram_w)).share("bg_videoram"); // VRAM2-1
|
||||
map(0xe800, 0xefff).ram().w(FUNC(lucky74_state::lucky74_bg_colorram_w)).share("bg_colorram"); // VRAM2-2
|
||||
map(0xf000, 0xf003).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); // Input Ports 0 & 1
|
||||
map(0xf080, 0xf083).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); // DSW 1, 2 & 3
|
||||
map(0xf0c0, 0xf0c3).rw("ppi8255_3", FUNC(i8255_device::read), FUNC(i8255_device::write)); // DSW 4
|
||||
map(0xf100, 0xf100).w("sn1", FUNC(sn76489_device::write)); // SN76489 #1
|
||||
map(0xf200, 0xf203).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); // Input Ports 2 & 4
|
||||
map(0xf300, 0xf300).w("sn2", FUNC(sn76489_device::write)); // SN76489 #2
|
||||
map(0xf400, 0xf400).w("aysnd", FUNC(ay8910_device::address_w)); // YM2149 control
|
||||
map(0xf500, 0xf500).w("sn3", FUNC(sn76489_device::write)); // SN76489 #3
|
||||
map(0xf600, 0xf600).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); // YM2149 (Input Port 1)
|
||||
map(0xf700, 0xf701).rw(FUNC(lucky74_state::usart_8251_r), FUNC(lucky74_state::usart_8251_w)); // USART 8251 port
|
||||
map(0xf800, 0xf803).rw(FUNC(lucky74_state::copro_sm7831_r), FUNC(lucky74_state::copro_sm7831_w)); // SM7831 Co-Processor
|
||||
map(0xc000, 0xcfff).ram().share("nvram"); // NVRAM
|
||||
map(0xd000, 0xd7ff).ram().w(FUNC(lucky74_state::fg_videoram_w)).share(m_fg_videoram); // VRAM1-1
|
||||
map(0xd800, 0xdfff).ram().w(FUNC(lucky74_state::fg_colorram_w)).share(m_fg_colorram); // VRAM1-2
|
||||
map(0xe000, 0xe7ff).ram().w(FUNC(lucky74_state::bg_videoram_w)).share(m_bg_videoram); // VRAM2-1
|
||||
map(0xe800, 0xefff).ram().w(FUNC(lucky74_state::bg_colorram_w)).share(m_bg_colorram); // VRAM2-2
|
||||
map(0xf000, 0xf003).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); // Input Ports 0 & 1
|
||||
map(0xf080, 0xf083).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); // DSW 1, 2 & 3
|
||||
map(0xf0c0, 0xf0c3).rw("ppi8255_3", FUNC(i8255_device::read), FUNC(i8255_device::write)); // DSW 4
|
||||
map(0xf100, 0xf100).w("sn1", FUNC(sn76489_device::write)); // SN76489 #1
|
||||
map(0xf200, 0xf203).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); // Input Ports 2 & 4
|
||||
map(0xf300, 0xf300).w("sn2", FUNC(sn76489_device::write)); // SN76489 #2
|
||||
map(0xf400, 0xf400).w("aysnd", FUNC(ay8910_device::address_w)); // YM2149 control
|
||||
map(0xf500, 0xf500).w("sn3", FUNC(sn76489_device::write)); // SN76489 #3
|
||||
map(0xf600, 0xf600).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); // YM2149 (Input Port 1)
|
||||
map(0xf700, 0xf701).rw(FUNC(lucky74_state::usart_8251_r), FUNC(lucky74_state::usart_8251_w)); // USART 8251 port
|
||||
map(0xf800, 0xf803).rw(FUNC(lucky74_state::copro_sm7831_r), FUNC(lucky74_state::copro_sm7831_w)); // SM7831 Co-Processor
|
||||
}
|
||||
|
||||
void lucky74_state::lucky74_portmap(address_map &map)
|
||||
void lucky74_state::portmap(address_map &map)
|
||||
{
|
||||
map.global_mask(0xff);
|
||||
map(0x00, 0x05).rw(FUNC(lucky74_state::custom_09R81P_port_r), FUNC(lucky74_state::custom_09R81P_port_w)); /* custom 09R81P (samples system) */
|
||||
map(0x00, 0x05).rw(FUNC(lucky74_state::custom_09R81P_port_r), FUNC(lucky74_state::custom_09R81P_port_w)); // custom 09R81P (samples system)
|
||||
map(0xff, 0xff).ram(); // presumably HS satellite control port (check patched in Lucky 74)
|
||||
}
|
||||
|
||||
@ -1019,24 +1031,24 @@ static INPUT_PORTS_START( lucky74 )
|
||||
Test mode shows them as dupes. Maybe are multiplexed?
|
||||
*/
|
||||
PORT_START("IN0")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) /* 'A' in test mode */
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) /* 'B' in test mode */
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) /* 'C' in test mode */
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) /* 'D' in test mode */
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) /* 'E' in test mode */
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_LOW ) PORT_NAME("Small") /* 'F' in test mode */
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Flip SC Off") PORT_CODE(KEYCODE_O) /* 'G' in test mode (normal screen) */
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Input H") PORT_CODE(KEYCODE_K) /* 'H' in test mode */
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) // 'A' in test mode
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) // 'B' in test mode
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) // 'C' in test mode
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) // 'D' in test mode
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) // 'E' in test mode
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_LOW ) PORT_NAME("Small") // 'F' in test mode
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Flip SC Off") PORT_CODE(KEYCODE_O) // 'G' in test mode (normal screen)
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Input H") PORT_CODE(KEYCODE_K) // 'H' in test mode
|
||||
|
||||
PORT_START("IN1")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) /* 'I' in test mode */
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Start") /* 'J' in test mode */
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_CANCEL ) /* 'K' in test mode */
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_D_UP ) /* 'L' in test mode */
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_TAKE ) /* 'M' & 'Q' in test mode */
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_HIGH ) PORT_NAME("Big") /* 'N' & 'P' in test mode */
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Flip SC On") PORT_CODE(KEYCODE_I) /* 'O' in test mode (inverted screen) */
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* not in test mode */
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) // 'I' in test mode
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Start") // 'J' in test mode
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_CANCEL ) // 'K' in test mode
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_D_UP ) // 'L' in test mode
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_TAKE ) // 'M' & 'Q' in test mode
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_HIGH ) PORT_NAME("Big") // 'N' & 'P' in test mode
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Flip SC On") PORT_CODE(KEYCODE_I) // 'O' in test mode (inverted screen)
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) // not in test mode
|
||||
|
||||
PORT_START("IN2")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
@ -1048,11 +1060,11 @@ static INPUT_PORTS_START( lucky74 )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
|
||||
PORT_START("IN3") /* YM2149, port A */
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2) /* Coin A */
|
||||
PORT_START("IN3") // YM2149, port A
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2) // Coin A
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2) /* Coin B */
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_IMPULSE(2) /* Coin C */
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2) // Coin B
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_IMPULSE(2) // Coin C
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_SERVICE ) PORT_NAME("Service")
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
@ -1069,38 +1081,38 @@ static INPUT_PORTS_START( lucky74 )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
|
||||
PORT_START("DSW1")
|
||||
PORT_DIPNAME( 0x01, 0x01, "Auto Hold" ) PORT_DIPLOCATION("DSW1:1") /* see note 1 */
|
||||
PORT_DIPNAME( 0x01, 0x01, "Auto Hold" ) PORT_DIPLOCATION("DSW1:1") // see note 1
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( Yes ) )
|
||||
PORT_DIPNAME( 0x02, 0x02, "Jackpot" ) PORT_DIPLOCATION("DSW1:2") /* see note 2 */
|
||||
PORT_DIPNAME( 0x02, 0x02, "Jackpot" ) PORT_DIPLOCATION("DSW1:2") // see note 2
|
||||
PORT_DIPSETTING( 0x02, "Bet x 100" )
|
||||
PORT_DIPSETTING( 0x00, "Bet x 150" )
|
||||
PORT_DIPNAME( 0x04, 0x04, "Ceiling Bonus Point" ) PORT_DIPLOCATION("DSW1:3") /* see note 3 */
|
||||
PORT_DIPNAME( 0x04, 0x04, "Ceiling Bonus Point" ) PORT_DIPLOCATION("DSW1:3") // see note 3
|
||||
PORT_DIPSETTING( 0x04, "Bet x 40" )
|
||||
PORT_DIPSETTING( 0x00, "Bet x 50" )
|
||||
PORT_DIPNAME( 0x78, 0x40, "Percentage" ) PORT_DIPLOCATION("DSW1:4,5,6,7") /* see note 4 */
|
||||
PORT_DIPSETTING( 0x00, "90%" ) /* 110% in the instruction sheet */
|
||||
PORT_DIPSETTING( 0x08, "87%" ) /* 106% in the instruction sheet */
|
||||
PORT_DIPSETTING( 0x10, "84%" ) /* 102% in the instruction sheet */
|
||||
PORT_DIPSETTING( 0x18, "81%" ) /* 98% in the instruction sheet */
|
||||
PORT_DIPSETTING( 0x20, "78%" ) /* 94% in the instruction sheet */
|
||||
PORT_DIPSETTING( 0x28, "75%" ) /* 90% in the instruction sheet */
|
||||
PORT_DIPSETTING( 0x30, "72%" ) /* 86% in the instruction sheet */
|
||||
PORT_DIPSETTING( 0x38, "69%" ) /* 82% in the instruction sheet */
|
||||
PORT_DIPSETTING( 0x40, "66%" ) /* 78% in the instruction sheet */
|
||||
PORT_DIPSETTING( 0x48, "63%" ) /* 74% in the instruction sheet */
|
||||
PORT_DIPSETTING( 0x50, "60%" ) /* 70% in the instruction sheet */
|
||||
PORT_DIPSETTING( 0x58, "57%" ) /* 66% in the instruction sheet */
|
||||
PORT_DIPSETTING( 0x60, "54%" ) /* 62% in the instruction sheet */
|
||||
PORT_DIPSETTING( 0x68, "51%" ) /* 58% in the instruction sheet */
|
||||
PORT_DIPSETTING( 0x70, "48%" ) /* 54% in the instruction sheet */
|
||||
PORT_DIPSETTING( 0x78, "45%" ) /* 50% in the instruction sheet */
|
||||
PORT_DIPNAME( 0x78, 0x40, "Percentage" ) PORT_DIPLOCATION("DSW1:4,5,6,7") // see note 4
|
||||
PORT_DIPSETTING( 0x00, "90%" ) // 110% in the instruction sheet
|
||||
PORT_DIPSETTING( 0x08, "87%" ) // 106% in the instruction sheet
|
||||
PORT_DIPSETTING( 0x10, "84%" ) // 102% in the instruction sheet
|
||||
PORT_DIPSETTING( 0x18, "81%" ) // 98% in the instruction sheet
|
||||
PORT_DIPSETTING( 0x20, "78%" ) // 94% in the instruction sheet
|
||||
PORT_DIPSETTING( 0x28, "75%" ) // 90% in the instruction sheet
|
||||
PORT_DIPSETTING( 0x30, "72%" ) // 86% in the instruction sheet
|
||||
PORT_DIPSETTING( 0x38, "69%" ) // 82% in the instruction sheet
|
||||
PORT_DIPSETTING( 0x40, "66%" ) // 78% in the instruction sheet
|
||||
PORT_DIPSETTING( 0x48, "63%" ) // 74% in the instruction sheet
|
||||
PORT_DIPSETTING( 0x50, "60%" ) // 70% in the instruction sheet
|
||||
PORT_DIPSETTING( 0x58, "57%" ) // 66% in the instruction sheet
|
||||
PORT_DIPSETTING( 0x60, "54%" ) // 62% in the instruction sheet
|
||||
PORT_DIPSETTING( 0x68, "51%" ) // 58% in the instruction sheet
|
||||
PORT_DIPSETTING( 0x70, "48%" ) // 54% in the instruction sheet
|
||||
PORT_DIPSETTING( 0x78, "45%" ) // 50% in the instruction sheet
|
||||
PORT_DIPNAME( 0x80, 0x80, "Panties" ) PORT_DIPLOCATION("DSW1:8")
|
||||
PORT_DIPSETTING( 0x00, "Without" )
|
||||
PORT_DIPSETTING( 0x80, "With" )
|
||||
|
||||
PORT_START("DSW2")
|
||||
/* DIPs 1-4 handle the harcoded coinage for Coin A, B and Remote credits (B = A x 5; R = A x 10) */
|
||||
// DIPs 1-4 handle the hardcoded coinage for Coin A, B and Remote credits (B = A x 5; R = A x 10)
|
||||
PORT_DIPNAME( 0x0f, 0x0f, "Coinage A, B & Remote" ) PORT_DIPLOCATION("DSW2:1,2,3,4")
|
||||
PORT_DIPSETTING( 0x00, "A: 20 Coins/1 Credit; B: 4 Coins/1 Credit; R: 2 Pulses/1 Credit" )
|
||||
PORT_DIPSETTING( 0x01, "A: 15 Coins/1 Credit; B: 3 Coins/1 Credit; R: 15 Pulses/10 Credits" )
|
||||
@ -1118,13 +1130,13 @@ static INPUT_PORTS_START( lucky74 )
|
||||
PORT_DIPSETTING( 0x0d, "A: 1 Coin/2 Credits; B: 1 Coin/10 Credits; R: 1 Pulse/20 Credits" )
|
||||
PORT_DIPSETTING( 0x0e, "A: 1 Coin/5 Credits; B: 1 Coin/25 Credits; R: 1 Pulse/50 Credits" )
|
||||
PORT_DIPSETTING( 0x0f, "A: 1 Coin/10 Credits; B: 1 Coin/50 Credits; R: 1 Pulse/100 Credits" )
|
||||
/* DIPs 5-8 handle the Coin C coinage */
|
||||
// DIPs 5-8 handle the Coin C coinage
|
||||
PORT_DIPNAME( 0xf0, 0xf0, "Coinage C" ) PORT_DIPLOCATION("DSW2:5,6,7,8")
|
||||
PORT_DIPSETTING( 0x00, "10 Coins/1 Credit" )
|
||||
PORT_DIPSETTING( 0x10, DEF_STR( 5C_1C ) )
|
||||
PORT_DIPSETTING( 0x30, DEF_STR( 4C_1C ) )
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( 3C_1C ) )
|
||||
PORT_DIPSETTING( 0x20, "5 Coins/2 Credits" ) /* 2.5 coins per credit */
|
||||
PORT_DIPSETTING( 0x20, "5 Coins/2 Credits" ) // 2.5 coins per credit
|
||||
PORT_DIPSETTING( 0x50, DEF_STR( 2C_1C ) )
|
||||
PORT_DIPSETTING( 0x70, DEF_STR( 1C_1C ) )
|
||||
PORT_DIPSETTING( 0x60, DEF_STR( 2C_3C ) )
|
||||
@ -1141,7 +1153,7 @@ static INPUT_PORTS_START( lucky74 )
|
||||
PORT_DIPNAME( 0x01, 0x00, "Bet Max" ) PORT_DIPLOCATION("DSW3:1")
|
||||
PORT_DIPSETTING( 0x01, "20" )
|
||||
PORT_DIPSETTING( 0x00, "40" )
|
||||
PORT_DIPNAME( 0x06, 0x06, "Minimum Bet" ) PORT_DIPLOCATION("DSW3:2,3") /* Bet Min */
|
||||
PORT_DIPNAME( 0x06, 0x06, "Minimum Bet" ) PORT_DIPLOCATION("DSW3:2,3") // Bet Min
|
||||
PORT_DIPSETTING( 0x06, "1" )
|
||||
PORT_DIPSETTING( 0x04, "5" )
|
||||
PORT_DIPSETTING( 0x02, "8" )
|
||||
@ -1151,12 +1163,12 @@ static INPUT_PORTS_START( lucky74 )
|
||||
PORT_DIPSETTING( 0x10, "10000" )
|
||||
PORT_DIPSETTING( 0x08, "15000" )
|
||||
PORT_DIPSETTING( 0x00, "20000" )
|
||||
PORT_DIPNAME( 0x20, 0x20, "Woman's figure in Main Game" ) PORT_DIPLOCATION("DSW3:6") /* see note 6 */
|
||||
PORT_DIPNAME( 0x20, 0x20, "Woman's figure in Main Game" ) PORT_DIPLOCATION("DSW3:6") // see note 6
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
|
||||
PORT_DIPSETTING( 0x20, DEF_STR( Yes ) )
|
||||
PORT_DIPNAME( 0x40, 0x40, "Type of Poker" ) PORT_DIPLOCATION("DSW3:7")
|
||||
PORT_DIPSETTING( 0x40, "A - Without Wild Card" ) /* see the game notes */
|
||||
PORT_DIPSETTING( 0x00, "B - Joker Wild Poker" ) /* see the game notes */
|
||||
PORT_DIPSETTING( 0x40, "A - Without Wild Card" ) // see the game notes
|
||||
PORT_DIPSETTING( 0x00, "B - Joker Wild Poker" ) // see the game notes
|
||||
PORT_DIPNAME( 0x80, 0x80, "Kinds of Poker" ) PORT_DIPLOCATION("DSW3:8")
|
||||
PORT_DIPSETTING( 0x80, "A - Hold" )
|
||||
PORT_DIPSETTING( 0x00, "B - Discard" )
|
||||
@ -1171,20 +1183,20 @@ static INPUT_PORTS_START( lucky74 )
|
||||
PORT_DIPNAME( 0x04, 0x00, "Hopper Capacity" ) PORT_DIPLOCATION("DSW4:3")
|
||||
PORT_DIPSETTING( 0x04, "700" )
|
||||
PORT_DIPSETTING( 0x00, "Unlimited" )
|
||||
PORT_DIPNAME( 0x08, 0x08, "Woman's figure in D-UP game" ) PORT_DIPLOCATION("DSW4:4") /* doesn't seems to work */
|
||||
PORT_DIPNAME( 0x08, 0x08, "Woman's figure in D-UP game" ) PORT_DIPLOCATION("DSW4:4") // doesn't seems to work
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( Yes ) )
|
||||
PORT_DIPNAME( 0x10, 0x10, "Double-Up game" ) PORT_DIPLOCATION("DSW4:5")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
|
||||
PORT_DIPSETTING( 0x10, DEF_STR( Yes ) )
|
||||
PORT_DIPNAME( 0x20, 0x20, "Stop by 6th Double-Up" ) PORT_DIPLOCATION("DSW4:6") /* see note 7 */
|
||||
PORT_DIPNAME( 0x20, 0x20, "Stop by 6th Double-Up" ) PORT_DIPLOCATION("DSW4:6") // see note 7
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
|
||||
PORT_DIPSETTING( 0x20, DEF_STR( Yes ) )
|
||||
PORT_DIPNAME( 0xC0, 0xC0, "Double-Up difficulty" ) PORT_DIPLOCATION("DSW4:7,8")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) /* easy (from instruction sheet) */
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( Hard ) ) /* .... (from instruction sheet) */
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Normal ) ) /* .... (from instruction sheet) */
|
||||
PORT_DIPSETTING( 0xC0, DEF_STR( Easy ) ) /* difficult (from instruction sheet) */
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) // easy (from instruction sheet)
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( Hard ) ) // .... (from instruction sheet)
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Normal ) ) // .... (from instruction sheet)
|
||||
PORT_DIPSETTING( 0xC0, DEF_STR( Easy ) ) // difficult (from instruction sheet)
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
@ -1194,22 +1206,22 @@ static INPUT_PORTS_START( lucky74a )
|
||||
|
||||
PORT_MODIFY("DSW1")
|
||||
PORT_DIPNAME( 0x78, 0x40, "Percentage" ) PORT_DIPLOCATION("DSW1:4,5,6,7")
|
||||
PORT_DIPSETTING( 0x00, "110%" ) /* 110% in the instruction sheet */
|
||||
PORT_DIPSETTING( 0x08, "106%" ) /* 106% in the instruction sheet */
|
||||
PORT_DIPSETTING( 0x10, "102%" ) /* 102% in the instruction sheet */
|
||||
PORT_DIPSETTING( 0x18, "98%" ) /* 98% in the instruction sheet */
|
||||
PORT_DIPSETTING( 0x20, "94%" ) /* 94% in the instruction sheet */
|
||||
PORT_DIPSETTING( 0x28, "90%" ) /* 90% in the instruction sheet */
|
||||
PORT_DIPSETTING( 0x30, "86%" ) /* 86% in the instruction sheet */
|
||||
PORT_DIPSETTING( 0x38, "82%" ) /* 82% in the instruction sheet */
|
||||
PORT_DIPSETTING( 0x40, "78%" ) /* 78% in the instruction sheet */
|
||||
PORT_DIPSETTING( 0x48, "74%" ) /* 74% in the instruction sheet */
|
||||
PORT_DIPSETTING( 0x50, "70%" ) /* 70% in the instruction sheet */
|
||||
PORT_DIPSETTING( 0x58, "66%" ) /* 66% in the instruction sheet */
|
||||
PORT_DIPSETTING( 0x60, "62%" ) /* 62% in the instruction sheet */
|
||||
PORT_DIPSETTING( 0x68, "58%" ) /* 58% in the instruction sheet */
|
||||
PORT_DIPSETTING( 0x70, "54%" ) /* 54% in the instruction sheet */
|
||||
PORT_DIPSETTING( 0x78, "50%" ) /* 50% in the instruction sheet */
|
||||
PORT_DIPSETTING( 0x00, "110%" ) // 110% in the instruction sheet
|
||||
PORT_DIPSETTING( 0x08, "106%" ) // 106% in the instruction sheet
|
||||
PORT_DIPSETTING( 0x10, "102%" ) // 102% in the instruction sheet
|
||||
PORT_DIPSETTING( 0x18, "98%" ) // 98% in the instruction sheet
|
||||
PORT_DIPSETTING( 0x20, "94%" ) // 94% in the instruction sheet
|
||||
PORT_DIPSETTING( 0x28, "90%" ) // 90% in the instruction sheet
|
||||
PORT_DIPSETTING( 0x30, "86%" ) // 86% in the instruction sheet
|
||||
PORT_DIPSETTING( 0x38, "82%" ) // 82% in the instruction sheet
|
||||
PORT_DIPSETTING( 0x40, "78%" ) // 78% in the instruction sheet
|
||||
PORT_DIPSETTING( 0x48, "74%" ) // 74% in the instruction sheet
|
||||
PORT_DIPSETTING( 0x50, "70%" ) // 70% in the instruction sheet
|
||||
PORT_DIPSETTING( 0x58, "66%" ) // 66% in the instruction sheet
|
||||
PORT_DIPSETTING( 0x60, "62%" ) // 62% in the instruction sheet
|
||||
PORT_DIPSETTING( 0x68, "58%" ) // 58% in the instruction sheet
|
||||
PORT_DIPSETTING( 0x70, "54%" ) // 54% in the instruction sheet
|
||||
PORT_DIPSETTING( 0x78, "50%" ) // 50% in the instruction sheet
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
@ -1377,12 +1389,12 @@ INPUT_PORTS_END
|
||||
static const gfx_layout tilelayout =
|
||||
{
|
||||
8, 8,
|
||||
RGN_FRAC(1,4), /* 4096 tiles */
|
||||
RGN_FRAC(1,4), // 4096 tiles */
|
||||
4,
|
||||
{ 0, RGN_FRAC(1,4), RGN_FRAC(2,4), RGN_FRAC(3,4) }, /* bitplanes are separated */
|
||||
{ 0, RGN_FRAC(1,4), RGN_FRAC(2,4), RGN_FRAC(3,4) }, // bitplanes are separated
|
||||
{ 0, 1, 2, 3, 4, 5, 6, 7 },
|
||||
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
|
||||
8*8 /* every char takes 8 consecutive bytes */
|
||||
8*8 // every char takes 8 consecutive bytes
|
||||
};
|
||||
|
||||
|
||||
@ -1391,8 +1403,8 @@ static const gfx_layout tilelayout =
|
||||
******************************/
|
||||
|
||||
static GFXDECODE_START( gfx_lucky74 )
|
||||
GFXDECODE_ENTRY( "fgtiles", 0, tilelayout, 0, 16 ) /* text, frames & cards */
|
||||
GFXDECODE_ENTRY( "bgtiles", 0, tilelayout, 256, 16 ) /* title & whores */
|
||||
GFXDECODE_ENTRY( "fgtiles", 0, tilelayout, 0, 16 ) // text, frames & cards
|
||||
GFXDECODE_ENTRY( "bgtiles", 0, tilelayout, 256, 16 ) // title & ladies
|
||||
GFXDECODE_END
|
||||
|
||||
|
||||
@ -1402,7 +1414,7 @@ GFXDECODE_END
|
||||
|
||||
void lucky74_state::sound_start()
|
||||
{
|
||||
/* cleaning all 09R81P registers */
|
||||
// cleaning all 09R81P registers
|
||||
|
||||
uint8_t i;
|
||||
|
||||
@ -1411,18 +1423,18 @@ void lucky74_state::sound_start()
|
||||
m_adpcm_reg[i] = 0;
|
||||
}
|
||||
|
||||
m_adpcm_busy_line = 0x01; /* free and ready */
|
||||
m_adpcm_busy_line = 0x01; // free and ready
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER(lucky74_state::lucky74_adpcm_int)
|
||||
WRITE_LINE_MEMBER(lucky74_state::adpcm_int)
|
||||
{
|
||||
if (m_adpcm_reg[05] == 0x01) /* register 0x05 (bit 0 activated), trigger the sample */
|
||||
if (m_adpcm_reg[05] == 0x01) // register 0x05 (bit 0 activated), trigger the sample
|
||||
{
|
||||
/* conditional zone for samples reproduction */
|
||||
// conditional zone for samples reproduction
|
||||
|
||||
if (m_adpcm_busy_line) /* still not started */
|
||||
if (m_adpcm_busy_line) // still not started
|
||||
{
|
||||
/* init all 09R81P registers */
|
||||
// init all 09R81P registers
|
||||
logerror("init ADPCM registers\n");
|
||||
m_adpcm_end = (m_adpcm_reg[04] << 8) + m_adpcm_reg[03];
|
||||
m_adpcm_pos = (m_adpcm_reg[01] << 8) + m_adpcm_reg[00];
|
||||
@ -1435,22 +1447,22 @@ WRITE_LINE_MEMBER(lucky74_state::lucky74_adpcm_int)
|
||||
|
||||
if (m_adpcm_data == -1)
|
||||
{
|
||||
/* transferring 1st nibble */
|
||||
// transferring 1st nibble
|
||||
m_adpcm_data = memregion("adpcm")->base()[m_adpcm_pos];
|
||||
m_adpcm_pos = (m_adpcm_pos + 1) & 0xffff;
|
||||
m_msm->data_w(m_adpcm_data >> 4);
|
||||
|
||||
if (m_adpcm_pos == m_adpcm_end)
|
||||
{
|
||||
m_msm->reset_w(0); /* reset the M5205 */
|
||||
m_adpcm_reg[05] = 0; /* clean trigger register */
|
||||
m_adpcm_busy_line = 0x01; /* deactivate busy flag */
|
||||
m_msm->reset_w(0); // reset the M5205
|
||||
m_adpcm_reg[05] = 0; // clean trigger register
|
||||
m_adpcm_busy_line = 0x01; // deactivate busy flag
|
||||
logerror("end of sample.\n");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* transferring 2nd nibble */
|
||||
// transferring 2nd nibble
|
||||
m_msm->data_w(m_adpcm_data & 0x0f);
|
||||
m_adpcm_data = -1;
|
||||
}
|
||||
@ -1465,11 +1477,11 @@ WRITE_LINE_MEMBER(lucky74_state::lucky74_adpcm_int)
|
||||
|
||||
void lucky74_state::lucky74(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
Z80(config, m_maincpu, C_06B49P_CLKOUT_03); /* 3 MHz. */
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &lucky74_state::lucky74_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &lucky74_state::lucky74_portmap);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(lucky74_state::nmi_interrupt)); /* 60 Hz. measured */
|
||||
// basic machine hardware
|
||||
Z80(config, m_maincpu, C_06B49P_CLKOUT_03); // 3 MHz.
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &lucky74_state::prg_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &lucky74_state::portmap);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(lucky74_state::nmi_interrupt)); // 60 Hz. measured
|
||||
|
||||
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
|
||||
|
||||
@ -1494,34 +1506,34 @@ void lucky74_state::lucky74(machine_config &config)
|
||||
ppi3.out_pb_callback().set(FUNC(lucky74_state::lamps_a_w));
|
||||
ppi3.out_pc_callback().set(FUNC(lucky74_state::lamps_b_w));
|
||||
|
||||
/* video hardware */
|
||||
// video hardware
|
||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
||||
screen.set_refresh_hz(60);
|
||||
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
|
||||
screen.set_size(64*8, 32*8);
|
||||
screen.set_visarea(0*8, 64*8-1, 1*8, 30*8-1);
|
||||
screen.set_screen_update(FUNC(lucky74_state::screen_update_lucky74));
|
||||
screen.set_screen_update(FUNC(lucky74_state::screen_update));
|
||||
screen.set_palette("palette");
|
||||
|
||||
GFXDECODE(config, m_gfxdecode, "palette", gfx_lucky74);
|
||||
PALETTE(config, "palette", FUNC(lucky74_state::lucky74_palette), 512);
|
||||
PALETTE(config, "palette", FUNC(lucky74_state::palette), 512);
|
||||
|
||||
/* sound hardware */
|
||||
// sound hardware
|
||||
SPEAKER(config, "mono").front_center();
|
||||
|
||||
SN76489(config, "sn1", C_06B49P_CLKOUT_03).add_route(ALL_OUTPUTS, "mono", 0.80); /* 3 MHz. */
|
||||
SN76489(config, "sn2", C_06B49P_CLKOUT_03).add_route(ALL_OUTPUTS, "mono", 0.80); /* 3 MHz. */
|
||||
SN76489(config, "sn3", C_06B49P_CLKOUT_03).add_route(ALL_OUTPUTS, "mono", 0.80); /* 3 MHz. */
|
||||
SN76489(config, "sn1", C_06B49P_CLKOUT_03).add_route(ALL_OUTPUTS, "mono", 0.80); // 3 MHz.
|
||||
SN76489(config, "sn2", C_06B49P_CLKOUT_03).add_route(ALL_OUTPUTS, "mono", 0.80); // 3 MHz.
|
||||
SN76489(config, "sn3", C_06B49P_CLKOUT_03).add_route(ALL_OUTPUTS, "mono", 0.80); // 3 MHz.
|
||||
|
||||
ay8910_device &aysnd(AY8910(config, "aysnd", C_06B49P_CLKOUT_04)); /* 1.5 MHz. */
|
||||
ay8910_device &aysnd(AY8910(config, "aysnd", C_06B49P_CLKOUT_04)); // 1.5 MHz.
|
||||
aysnd.port_a_read_callback().set_ioport("IN3");
|
||||
/* port b read is a sort of status byte */
|
||||
// port b read is a sort of status byte
|
||||
aysnd.port_b_write_callback().set(FUNC(lucky74_state::ym2149_portb_w));
|
||||
aysnd.add_route(ALL_OUTPUTS, "mono", 0.00); /* not routed to audio hardware */
|
||||
aysnd.add_route(ALL_OUTPUTS, "mono", 0.00); // not routed to audio hardware
|
||||
|
||||
MSM5205(config, m_msm, C_06B49P_CLKOUT_06); /* 375 kHz. */
|
||||
m_msm->vck_legacy_callback().set(FUNC(lucky74_state::lucky74_adpcm_int)); /* interrupt function */
|
||||
m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8KHz */
|
||||
MSM5205(config, m_msm, C_06B49P_CLKOUT_06); // 375 kHz.
|
||||
m_msm->vck_legacy_callback().set(FUNC(lucky74_state::adpcm_int)); // interrupt function
|
||||
m_msm->set_prescaler_selector(msm5205_device::S48_4B); // 8KHz
|
||||
m_msm->add_route(ALL_OUTPUTS, "mono", 0.70);
|
||||
}
|
||||
|
||||
@ -1557,9 +1569,9 @@ ROM_START( lucky74 )
|
||||
ROM_LOAD( "luckychi.18", 0x10000, 0x8000, CRC(f2d45e76) SHA1(46df7bf98434c836fd38539575a35bf67c9ec2c6) )
|
||||
ROM_LOAD( "luckychi.19", 0x18000, 0x8000, CRC(6b0196f3) SHA1(277049279dcfcf07189dbdb20935c2a71b2f6061) )
|
||||
|
||||
ROM_REGION( 0x20000, "adpcm", 0 ) /* 4-bits ADPCM samples @ 8kHz */
|
||||
ROM_LOAD( "luckyson.15", 0x00000, 0x10000, CRC(b896c87f) SHA1(985e625a937abd6353218f0cace14d3adec4c1bf) ) /* location 2n */
|
||||
ROM_FILL( 0x10000, 0x10000, 0xff ) /* empty socket @ 1n */
|
||||
ROM_REGION( 0x20000, "adpcm", 0 ) // 4-bits ADPCM samples @ 8kHz
|
||||
ROM_LOAD( "luckyson.15", 0x00000, 0x10000, CRC(b896c87f) SHA1(985e625a937abd6353218f0cace14d3adec4c1bf) ) // location 2n
|
||||
ROM_FILL( 0x10000, 0x10000, 0xff ) // empty socket @ 1n
|
||||
|
||||
ROM_REGION( 0x0600, "proms", 0 )
|
||||
ROM_LOAD( "luckyprom.e6", 0x0000, 0x0100, CRC(ae793fef) SHA1(e4e2d2dccabad7d756811fb2d5e123bf30f106f3) )
|
||||
@ -1627,9 +1639,9 @@ ROM_START( lucky74a )
|
||||
ROM_LOAD( "8.1k", 0x10000, 0x8000, CRC(f2d45e76) SHA1(46df7bf98434c836fd38539575a35bf67c9ec2c6) )
|
||||
ROM_LOAD( "9.1m", 0x18000, 0x8000, CRC(6b0196f3) SHA1(277049279dcfcf07189dbdb20935c2a71b2f6061) )
|
||||
|
||||
ROM_REGION( 0x20000, "adpcm", 0 ) /* 4-bits ADPCM samples @ 8kHz */
|
||||
ROM_LOAD( "5.2n", 0x00000, 0x10000, CRC(b896c87f) SHA1(985e625a937abd6353218f0cace14d3adec4c1bf) ) /* location 2n */
|
||||
ROM_FILL( 0x10000, 0x10000, 0xff ) /* empty socket @ 1n */
|
||||
ROM_REGION( 0x20000, "adpcm", 0 ) // 4-bits ADPCM samples @ 8kHz
|
||||
ROM_LOAD( "5.2n", 0x00000, 0x10000, CRC(b896c87f) SHA1(985e625a937abd6353218f0cace14d3adec4c1bf) ) // location 2n
|
||||
ROM_FILL( 0x10000, 0x10000, 0xff ) // empty socket @ 1n
|
||||
|
||||
ROM_REGION( 0x0600, "proms", 0 )
|
||||
ROM_LOAD( "82s129.e6", 0x0000, 0x0100, CRC(ae793fef) SHA1(e4e2d2dccabad7d756811fb2d5e123bf30f106f3) )
|
||||
@ -1652,7 +1664,7 @@ ROM_END
|
||||
*/
|
||||
ROM_START( lucky74b )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
ROM_LOAD( "luckygde.00", 0x0000, 0x10000, CRC(e3f7db99) SHA1(5c7d9d3fed9eb19d3d666c8c08b34968a9996a96) ) /* bad dump? */
|
||||
ROM_LOAD( "luckygde.00", 0x0000, 0x10000, CRC(e3f7db99) SHA1(5c7d9d3fed9eb19d3d666c8c08b34968a9996a96) ) // bad dump?
|
||||
|
||||
ROM_REGION( 0x20000, "fgtiles", 0 )
|
||||
ROM_LOAD( "luckygde.12", 0x00000, 0x8000, CRC(7127465b) SHA1(3f72f91652fcab52c073744b1651fdfe772c584a) )
|
||||
@ -1666,9 +1678,9 @@ ROM_START( lucky74b )
|
||||
ROM_LOAD( "luckygde.18", 0x10000, 0x8000, CRC(717e5f4e) SHA1(0f14c9525bf77bbc4de0d9695648acb40870a176) )
|
||||
ROM_LOAD( "luckygde.19", 0x18000, 0x8000, CRC(bb4608ae) SHA1(cc8ec596f445fe0364f254241227de368f309ebb) )
|
||||
|
||||
ROM_REGION( 0x20000, "adpcm", 0 ) /* 4-bits ADPCM samples @ 8kHz */
|
||||
ROM_LOAD( "luckyson.15", 0x00000, 0x10000, CRC(b896c87f) SHA1(985e625a937abd6353218f0cace14d3adec4c1bf) ) /* location 2n */
|
||||
ROM_FILL( 0x10000, 0x10000, 0xff ) /* empty socket @ 1n */
|
||||
ROM_REGION( 0x20000, "adpcm", 0 ) // 4-bits ADPCM samples @ 8kHz
|
||||
ROM_LOAD( "luckyson.15", 0x00000, 0x10000, CRC(b896c87f) SHA1(985e625a937abd6353218f0cace14d3adec4c1bf) ) // location 2n
|
||||
ROM_FILL( 0x10000, 0x10000, 0xff ) // empty socket @ 1n
|
||||
|
||||
ROM_REGION( 0x0600, "proms", 0 )
|
||||
ROM_LOAD( "luckyprom.e6", 0x0000, 0x0100, CRC(ae793fef) SHA1(e4e2d2dccabad7d756811fb2d5e123bf30f106f3) )
|
||||
@ -1721,9 +1733,9 @@ ROM_START( excitbj )
|
||||
ROM_LOAD( "ebj_s8.1k", 0x20000, 0x10000, CRC(297443a7) SHA1(3a20498dcf69412f5bd3156391a55d3b1273c0b4) )
|
||||
ROM_LOAD( "ebj_s9.1l", 0x30000, 0x10000, CRC(79ba7d75) SHA1(7301143a019d5e79eff7941a1a34fe96036acffa) )
|
||||
|
||||
ROM_REGION( 0x20000, "adpcm", 0 ) /* 4-bits ADPCM samples @ 8kHz */
|
||||
ROM_LOAD( "ebj_s5.2n", 0x00000, 0x10000, CRC(9b4a10a2) SHA1(843ab5955ba96bb1b1a5367652d0f6424ba23bdf) ) /* location 2n */
|
||||
ROM_LOAD( "ebj_s10.1n", 0x10000, 0x10000, CRC(2fa7401d) SHA1(80a5dfd2b7c183acd2fc124d220de4a4921178b2) ) /* location 1n */
|
||||
ROM_REGION( 0x20000, "adpcm", 0 ) // 4-bits ADPCM samples @ 8kHz
|
||||
ROM_LOAD( "ebj_s5.2n", 0x00000, 0x10000, CRC(9b4a10a2) SHA1(843ab5955ba96bb1b1a5367652d0f6424ba23bdf) ) // location 2n
|
||||
ROM_LOAD( "ebj_s10.1n", 0x10000, 0x10000, CRC(2fa7401d) SHA1(80a5dfd2b7c183acd2fc124d220de4a4921178b2) ) // location 1n
|
||||
|
||||
ROM_REGION( 0x0600, "proms", 0 )
|
||||
ROM_LOAD( "6e-a.6e", 0x0000, 0x0100, CRC(bcaa7a0d) SHA1(75554d539bf67effb862234cdf89e4df4e2193ed) )
|
||||
@ -1739,8 +1751,8 @@ ROM_END
|
||||
* Game Drivers *
|
||||
**********************************************/
|
||||
|
||||
// YEAR NAME PARENT MACHINE INPUT STATS INIT ROT COMPANY FULLNAME FLAGS LAYOUT
|
||||
GAMEL( 1988, lucky74, 0, lucky74, lucky74, lucky74_state, empty_init, ROT0, "Wing Co., Ltd.", "Lucky 74 (bootleg, set 1)", 0, layout_lucky74 )
|
||||
GAMEL( 1988, lucky74a, lucky74, lucky74, lucky74a, lucky74_state, empty_init, ROT0, "Wing Co., Ltd.", "Lucky 74 (bootleg, set 3)", 0, layout_lucky74 )
|
||||
GAMEL( 1988, lucky74b, lucky74, lucky74, lucky74, lucky74_state, empty_init, ROT0, "Wing Co., Ltd.", "Lucky 74 (bootleg, set 2)", MACHINE_NOT_WORKING, layout_lucky74 )
|
||||
GAME( 1989, excitbj, 0, lucky74, excitbj, lucky74_state, empty_init, ROT0, "Sega", "Exciting Black Jack", MACHINE_NOT_WORKING )
|
||||
// YEAR NAME PARENT MACHINE INPUT STATS INIT ROT COMPANY FULLNAME FLAGS LAYOUT
|
||||
GAMEL( 1988, lucky74, 0, lucky74, lucky74, lucky74_state, empty_init, ROT0, "Wing Co., Ltd.", "Lucky 74 (bootleg, set 1)", MACHINE_SUPPORTS_SAVE, layout_lucky74 )
|
||||
GAMEL( 1988, lucky74a, lucky74, lucky74, lucky74a, lucky74_state, empty_init, ROT0, "Wing Co., Ltd.", "Lucky 74 (bootleg, set 3)", MACHINE_SUPPORTS_SAVE, layout_lucky74 )
|
||||
GAMEL( 1988, lucky74b, lucky74, lucky74, lucky74, lucky74_state, empty_init, ROT0, "Wing Co., Ltd.", "Lucky 74 (bootleg, set 2)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_lucky74 )
|
||||
GAME( 1989, excitbj, 0, lucky74, excitbj, lucky74_state, empty_init, ROT0, "Sega", "Exciting Black Jack", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
||||
|
@ -27,7 +27,7 @@ public:
|
||||
void lucky74(machine_config &config);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override { m_lamps.resolve(); }
|
||||
virtual void machine_start() override;
|
||||
virtual void video_start() override;
|
||||
virtual void machine_reset() override;
|
||||
virtual void sound_start() override;
|
||||
@ -39,21 +39,21 @@ private:
|
||||
void usart_8251_w(uint8_t data);
|
||||
uint8_t copro_sm7831_r();
|
||||
void copro_sm7831_w(uint8_t data);
|
||||
void lucky74_fg_videoram_w(offs_t offset, uint8_t data);
|
||||
void lucky74_fg_colorram_w(offs_t offset, uint8_t data);
|
||||
void lucky74_bg_videoram_w(offs_t offset, uint8_t data);
|
||||
void lucky74_bg_colorram_w(offs_t offset, uint8_t data);
|
||||
void fg_videoram_w(offs_t offset, uint8_t data);
|
||||
void fg_colorram_w(offs_t offset, uint8_t data);
|
||||
void bg_videoram_w(offs_t offset, uint8_t data);
|
||||
void bg_colorram_w(offs_t offset, uint8_t data);
|
||||
void ym2149_portb_w(uint8_t data);
|
||||
void lamps_a_w(uint8_t data);
|
||||
void lamps_b_w(uint8_t data);
|
||||
TILE_GET_INFO_MEMBER(get_fg_tile_info);
|
||||
TILE_GET_INFO_MEMBER(get_bg_tile_info);
|
||||
void lucky74_palette(palette_device &palette) const;
|
||||
uint32_t screen_update_lucky74(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void palette(palette_device &palette) const;
|
||||
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
INTERRUPT_GEN_MEMBER(nmi_interrupt);
|
||||
DECLARE_WRITE_LINE_MEMBER(lucky74_adpcm_int);
|
||||
void lucky74_map(address_map &map);
|
||||
void lucky74_portmap(address_map &map);
|
||||
DECLARE_WRITE_LINE_MEMBER(adpcm_int);
|
||||
void prg_map(address_map &map);
|
||||
void portmap(address_map &map);
|
||||
|
||||
uint8_t m_ym2149_portb;
|
||||
uint8_t m_usart_8251;
|
||||
|
@ -82,7 +82,7 @@
|
||||
_
|
||||
|
||||
|
||||
Regarding the abobe diagram, there are 2 different states controlled by both 06B53P.
|
||||
Regarding the above diagram, there are 2 different states controlled by both 06B53P.
|
||||
Each state arrange a different palette that will be assigned to each graphics bank.
|
||||
|
||||
As we can see here, same pin of different PROMs are connected together in parallel.
|
||||
@ -100,32 +100,32 @@
|
||||
#include "includes/lucky74.h"
|
||||
|
||||
|
||||
void lucky74_state::lucky74_fg_videoram_w(offs_t offset, uint8_t data)
|
||||
void lucky74_state::fg_videoram_w(offs_t offset, uint8_t data)
|
||||
{
|
||||
m_fg_videoram[offset] = data;
|
||||
m_fg_tilemap->mark_tile_dirty(offset);
|
||||
}
|
||||
|
||||
void lucky74_state::lucky74_fg_colorram_w(offs_t offset, uint8_t data)
|
||||
void lucky74_state::fg_colorram_w(offs_t offset, uint8_t data)
|
||||
{
|
||||
m_fg_colorram[offset] = data;
|
||||
m_fg_tilemap->mark_tile_dirty(offset);
|
||||
}
|
||||
|
||||
void lucky74_state::lucky74_bg_videoram_w(offs_t offset, uint8_t data)
|
||||
void lucky74_state::bg_videoram_w(offs_t offset, uint8_t data)
|
||||
{
|
||||
m_bg_videoram[offset] = data;
|
||||
m_bg_tilemap->mark_tile_dirty(offset);
|
||||
}
|
||||
|
||||
void lucky74_state::lucky74_bg_colorram_w(offs_t offset, uint8_t data)
|
||||
void lucky74_state::bg_colorram_w(offs_t offset, uint8_t data)
|
||||
{
|
||||
m_bg_colorram[offset] = data;
|
||||
m_bg_tilemap->mark_tile_dirty(offset);
|
||||
}
|
||||
|
||||
|
||||
void lucky74_state::lucky74_palette(palette_device &palette) const
|
||||
void lucky74_state::palette(palette_device &palette) const
|
||||
{
|
||||
// There are 2 states (see the technical notes).
|
||||
// We're constructing a double-sized palette with one half for each state.
|
||||
@ -233,7 +233,7 @@ void lucky74_state::video_start()
|
||||
m_fg_tilemap->set_transparent_pen(0);
|
||||
}
|
||||
|
||||
uint32_t lucky74_state::screen_update_lucky74(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
uint32_t lucky74_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
|
||||
m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
|
||||
|
Loading…
Reference in New Issue
Block a user