mirror of
https://github.com/holub/mame
synced 2025-04-23 17:00:53 +03:00
New systems marked not working
------------------------------ Maque Wangchao / Chaoji Damanguan 2 - Jiaqiang Ban (China, V100C) [dyq, little0, Guru] Tong Zi Maque [dyq, little0, Guru]
This commit is contained in:
parent
113a9863fd
commit
b19c9a27ac
@ -11,25 +11,26 @@ Video: IGS017 or IGS031 (2 tilemaps, variable size sprites, protection)
|
||||
Other: IGS025 (8255), IGS022 (protection, MCU), IGS029 (protection)
|
||||
Sound: M6295(K668/AR17961) + [YM2413(U3567)]
|
||||
|
||||
--------------------------------------------------------------------------------------------------------
|
||||
Year + Game PCB CPU Sound Custom Other
|
||||
--------------------------------------------------------------------------------------------------------
|
||||
96 Shuzi Leyuan (V127M) NO-0131-4 Z180 AR17961 U3567 IGS017 8255 Battery
|
||||
97 Chaoji Da Man Guan II (V754C) NO-0147-6 68000 K668 IGS031 8255 Battery
|
||||
97 Tian Jiang Shen Bing (V137C) NO-0157-2 Z180 AR17961 U3567 IGS017 IGS025 Battery
|
||||
97 Man Guan Daheng (V123T1) NO-0252 68000 M6295 IGS031 IGS025 IGS???* Battery
|
||||
98 Genius 6 (V110F) NO-0131-4 Z180 K668 U3567 IGS017 IGS003c Battery
|
||||
98 Long Hu Zhengba 2 (set 1) NO-0206 68000 K668 IGS031 IGS025 IGS022* Battery
|
||||
98 Shuang Long Qiang Zhu 2 VS (VS203J) NO-0207 68000 K668 IGS031 IGS025 IGS022 Battery
|
||||
98 Man Guan Caishen (V103CS) NO-0192-1 68000 K668 IGS017 IGS025 IGS029 Battery
|
||||
99 Tarzan (V107) NO-0228? Z180 U6295 IGS031 IGS025 IGS029 Battery
|
||||
99 Tarzan (V109C) NO-0248-1 Z180 U6295 IGS031 IGS025 Battery
|
||||
00? Super Tarzan (V100I) NO-0230-1 Z180 K668 IGS031 IGS025 Battery
|
||||
00? Happy Skill (V611IT) NO-0281 Z180 K668 IGS031 IGS025 Battery
|
||||
00? Champion Poker 2 (V100A) unreadable Z180 M6295 IGS031 IGS025 Battery
|
||||
00? Super Poker (V100xD03) / Formosa NO-0187 Z180 K668 U3567 IGS017 IGS025 Battery
|
||||
--------------------------------------------------------------------------------------------------------
|
||||
not present in another set *
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
Year + Game PCB CPU Sound Custom Other
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
96 Shuzi Leyuan (V127M) NO-0131-4 Z180 AR17961 U3567 IGS017 8255 Battery
|
||||
97 Chaoji Damanguan II (V754C) NO-0147-6 68000 K668 IGS031 8255 Battery
|
||||
97 Tian Jiang Shen Bing (V137C) NO-0157-2 Z180 AR17961 U3567 IGS017 IGS025 Battery
|
||||
97 Manguan Daheng (V123T1) NO-0252 68000 M6295 IGS031 IGS025 IGS???* Battery
|
||||
98 Genius 6 (V110F) NO-0131-4 Z180 K668 U3567 IGS017 IGS003c Battery
|
||||
98 Long Hu Zhengba 2 (set 1) NO-0206 68000 K668 IGS031 IGS025 IGS022* Battery
|
||||
98 Shuang Long Qiang Zhu 2 VS (VS203J) NO-0207 68000 K668 IGS031 IGS025 IGS022 Battery
|
||||
98 Manguan Caishen (V103CS) NO-0192-1 68000 K668 IGS017 IGS025 IGS029 Battery
|
||||
99 Tarzan (V107) NO-0228? Z180 U6295 IGS031 IGS025 IGS029 Battery
|
||||
99 Tarzan (V109C) NO-0248-1 Z180 U6295 IGS031 IGS025 Battery
|
||||
00 Chaoji Damanguan 2 - Jiaqiang Ban (V100C) NO-0271 68000 K668 IGS031 IGS025 Battery
|
||||
00? Super Tarzan (V100I) NO-0230-1 Z180 K668 IGS031 IGS025 Battery
|
||||
00? Happy Skill (V611IT) NO-0281 Z180 K668 IGS031 IGS025 Battery
|
||||
00? Champion Poker 2 (V100A) unreadable Z180 M6295 IGS031 IGS025 Battery
|
||||
00? Super Poker (V100xD03) / Formosa NO-0187 Z180 K668 U3567 IGS017 IGS025 Battery
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
not present in another set *
|
||||
To Do:
|
||||
|
||||
- Protection emulation in some games, instead of patching the roms.
|
||||
@ -646,6 +647,7 @@ public:
|
||||
void mgdh(machine_config &config);
|
||||
void mgdha(machine_config &config);
|
||||
void sdmg2(machine_config &config);
|
||||
void sdmg2p(machine_config &config);
|
||||
void slqz2(machine_config &config);
|
||||
|
||||
// Init
|
||||
@ -658,6 +660,7 @@ public:
|
||||
void init_mgdh();
|
||||
void init_mgdha();
|
||||
void init_sdmg2();
|
||||
void init_sdmg2p();
|
||||
void init_slqz2();
|
||||
void init_spkrform();
|
||||
void init_starzan();
|
||||
@ -805,6 +808,8 @@ private:
|
||||
u8 sdmg2_keys_joy_r();
|
||||
void sdmg2_keys_hopper_w(u8 data);
|
||||
|
||||
u8 sdmg2p_keys_r();
|
||||
|
||||
void slqz2_sound_hopper_w(u8 data);
|
||||
u8 slqz2_scramble_data_r();
|
||||
|
||||
@ -876,6 +881,8 @@ private:
|
||||
void mgdha_mux_map(address_map &map);
|
||||
void sdmg2_map(address_map &map);
|
||||
void sdmg2_mux_map(address_map &map);
|
||||
void sdmg2p_map(address_map &map);
|
||||
void sdmg2p_mux_map(address_map &map);
|
||||
void slqz2_map(address_map &map);
|
||||
void slqz2_mux_map(address_map &map);
|
||||
void spkrform_io(address_map &map);
|
||||
@ -1491,6 +1498,34 @@ void igs017_state::init_sdmg2()
|
||||
}
|
||||
}
|
||||
|
||||
// sdmg2p
|
||||
|
||||
void igs017_state::init_sdmg2p()
|
||||
{
|
||||
const int rom_size = memregion("maincpu")->bytes();
|
||||
u16 * const rom = (u16 *)memregion("maincpu")->base();
|
||||
|
||||
for (int i = 0; i < rom_size / 2; i++)
|
||||
{
|
||||
u16 x = rom[i];
|
||||
|
||||
// bit 0 xor layer
|
||||
if (((i & 0x4320 / 2) == (0x0000 / 2)) || ((i & 0x4322 / 2) == (0x0020 / 2)) || ((i & 0x0122 / 2) == (0x0122 / 2)) || ((i & 0x0222 / 2) == (0x0222 / 2)) || ((i & 0x4322 / 2) == (0x4022 / 2)))
|
||||
x ^= 0x0001;
|
||||
|
||||
// bit 6 xor layer
|
||||
if ((i & 0x4000 / 2) || (i & 0x0200 / 2) || ((i & 0x4b68 / 2) == (0x0048 / 2)) || ((i & 0x4b40 / 2) == (0x0840 / 2)))
|
||||
x ^= 0x0040;
|
||||
|
||||
// bit 13 xor layer
|
||||
if (((i & 0x60000 / 2 ) == (0x00000 / 2)) || ((i & 0x60000 / 2 ) == (0x60000 / 2)))
|
||||
x ^= 0x2000;
|
||||
|
||||
rom[i] = x;
|
||||
}
|
||||
|
||||
// m_igs_string->dump("sdmg2p_string.key", 0x7f512, 0x?????, true);
|
||||
}
|
||||
|
||||
// mgdh, mgdha
|
||||
|
||||
@ -2569,6 +2604,43 @@ void igs017_state::mgdh_mux_map(address_map &map)
|
||||
// igs_string_mux_map(map); // 0x05 r, 0x20 - 0x27 w, 0x40 r (actually unused except for the game id check?)
|
||||
}
|
||||
|
||||
// sdmg2p
|
||||
|
||||
u8 igs017_state::sdmg2p_keys_r()
|
||||
{
|
||||
u8 ret = 0xff;
|
||||
if (!BIT(m_input_select, 2)) ret &= bitswap<8>(m_io_key[0]->read(), 5, 4, 3, 2, 1, 0, 7, 6);
|
||||
if (!BIT(m_input_select, 3)) ret &= bitswap<8>(m_io_key[1]->read(), 5, 4, 3, 2, 1, 0, 7, 6);
|
||||
if (!BIT(m_input_select, 4)) ret &= bitswap<8>(m_io_key[2]->read(), 5, 4, 3, 2, 1, 0, 7, 6);
|
||||
if (!BIT(m_input_select, 5)) ret &= bitswap<8>(m_io_key[3]->read(), 5, 4, 3, 2, 1, 0, 7, 6);
|
||||
if (!BIT(m_input_select, 6)) ret &= bitswap<8>(m_io_key[4]->read(), 5, 4, 3, 2, 1, 0, 7, 6);
|
||||
return ret;
|
||||
}
|
||||
|
||||
void igs017_state::sdmg2p_map(address_map &map)
|
||||
{
|
||||
map(0x000000, 0x07ffff).rom();
|
||||
|
||||
map(0x100000, 0x103fff).ram();
|
||||
|
||||
map(0x38d000, 0x38d001).nopr().w(m_igs_mux, FUNC(igs_mux_device::address_w)).umask16(0x00ff); // clr.w dummy read
|
||||
map(0x38d002, 0x38d003).rw(m_igs_mux, FUNC(igs_mux_device::data_r), FUNC(igs_mux_device::data_w)).umask16(0x00ff);
|
||||
|
||||
map(0xb00000, 0xb0ffff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write)).umask16(0x00ff);
|
||||
|
||||
map(0xb10001, 0xb10001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
||||
}
|
||||
|
||||
void igs017_state::sdmg2p_mux_map(address_map &map) // TODO: hopper motor w
|
||||
{
|
||||
map.unmap_value_high();
|
||||
map(0x00, 0x00).r(FUNC(igs017_state::sdmg2p_keys_r));
|
||||
map(0x01, 0x01).portr("JOY");
|
||||
map(0x02, 0x02).portr("BUTTONS").w(FUNC(igs017_state::mgdh_keys_hopper_w));
|
||||
map(0x03, 0x03).portr("COINS").w(FUNC(igs017_state::mgdh_counter_w));
|
||||
|
||||
igs_string_mux_map(map);
|
||||
}
|
||||
|
||||
// tjsb
|
||||
|
||||
@ -3479,6 +3551,153 @@ static INPUT_PORTS_START( sdmg2 )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( sdmg2p )
|
||||
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_5C ) )
|
||||
PORT_DIPNAME( 0x0c, 0x0c, "Credits Per Note" ) 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_DIPLOCATION("SW1:5")
|
||||
PORT_DIPSETTING( 0x10, "2000" )
|
||||
PORT_DIPSETTING( 0x00, "29999" )
|
||||
PORT_DIPNAME( 0x20, 0x20, "Money Type" ) PORT_DIPLOCATION("SW1:6")
|
||||
PORT_DIPSETTING( 0x20, "Coins" )
|
||||
PORT_DIPSETTING( 0x00, "Notes" )
|
||||
PORT_DIPNAME( 0x40, 0x40, "Pay Out Type" ) PORT_DIPLOCATION("SW1:7")
|
||||
PORT_DIPSETTING( 0x40, "Coins" )
|
||||
PORT_DIPSETTING( 0x00, "Notes" )
|
||||
PORT_DIPNAME( 0x80, 0x80, "Hidden Function" ) PORT_DIPLOCATION("SW1:8") // 隐分功能 (Yǐnfēn Gōngnéng) TODO: determine what this does
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
|
||||
PORT_START("DSW2")
|
||||
PORT_DIPNAME( 0x01, 0x01, "Game Title" ) PORT_DIPLOCATION("SW2:1") // 機種名稱 (Jīzhǒng Míngchēng)
|
||||
PORT_DIPSETTING( 0x01, "Maque Wangchao" )
|
||||
PORT_DIPSETTING( 0x00, "Chaoji Damanguan 2 - Jiaqiang Ban" ) // actually abbreviated in 超二加強 (Chāo èr jiāqiáng)
|
||||
PORT_DIPNAME( 0x02, 0x02, "Double Up Limit" ) PORT_DIPLOCATION("SW2:2")
|
||||
PORT_DIPSETTING( 0x02, "500" )
|
||||
PORT_DIPSETTING( 0x00, "1000" )
|
||||
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" ) PORT_DIPLOCATION("SW2:5")
|
||||
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x20, 0x20, "Double-up/Continue" ) PORT_DIPLOCATION("SW2:6") // 比倍續玩 TODO: determine what this does
|
||||
PORT_DIPSETTING( 0x20, "Double Up" ) // 比倍
|
||||
PORT_DIPSETTING( 0x00, "Continue Game" ) // 續玩
|
||||
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Controls ) ) PORT_DIPLOCATION("SW2:7")
|
||||
PORT_DIPSETTING( 0x40, "Keyboard" )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Joystick ) )
|
||||
PORT_DIPNAME( 0x80, 0x80, "Number Type" ) PORT_DIPLOCATION("SW2:8")
|
||||
PORT_DIPSETTING( 0x80, "Number" )
|
||||
PORT_DIPSETTING( 0x00, "Tile" )
|
||||
|
||||
PORT_START("DSW3")
|
||||
PORT_DIPUNKNOWN_DIPLOC( 0x01, IP_ACTIVE_LOW, "SW3:1" )
|
||||
PORT_DIPUNKNOWN_DIPLOC( 0x02, IP_ACTIVE_LOW, "SW3:2" )
|
||||
PORT_DIPUNKNOWN_DIPLOC( 0x04, IP_ACTIVE_LOW, "SW3:3" )
|
||||
PORT_DIPUNKNOWN_DIPLOC( 0x08, IP_ACTIVE_LOW, "SW3:4" )
|
||||
PORT_DIPUNKNOWN_DIPLOC( 0x10, IP_ACTIVE_LOW, "SW3:5" )
|
||||
PORT_DIPUNKNOWN_DIPLOC( 0x20, IP_ACTIVE_LOW, "SW3:6" )
|
||||
PORT_DIPUNKNOWN_DIPLOC( 0x40, IP_ACTIVE_LOW, "SW3:7" )
|
||||
PORT_DIPUNKNOWN_DIPLOC( 0x80, IP_ACTIVE_LOW, "SW3:8" )
|
||||
|
||||
PORT_START("COINS")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
// Joystick mode only?:
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CONDITION("DSW2",0x40,EQUALS,0x00)
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW2",0x40,EQUALS,0x40)
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Pay Out") PORT_CODE(KEYCODE_O)
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK )
|
||||
PORT_SERVICE_NO_TOGGLE( 0x20, IP_ACTIVE_LOW ) // also keep pressed while booting
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
|
||||
PORT_START("JOY")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 )
|
||||
|
||||
PORT_START("KEY0")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
|
||||
PORT_START("KEY1")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
|
||||
PORT_START("KEY2")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
|
||||
PORT_START("KEY3")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
|
||||
PORT_START("KEY4")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
|
||||
PORT_START("BUTTONS")
|
||||
// Joystick mode only:
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CONDITION("DSW2",0x40,EQUALS,0x00)
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW2",0x40,EQUALS,0x40)
|
||||
// Keyboard mode only:
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_CONDITION("DSW2",0x40,EQUALS,0x40) PORT_NAME("Hide Gambling") // shown in test mode as "clear" (清除)
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW2",0x40,EQUALS,0x00)
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper", hopper_device, line_r) // hopper switch, TODO: verify
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( mgdh )
|
||||
PORT_START("DSW1")
|
||||
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:1")
|
||||
@ -4745,6 +4964,26 @@ void igs017_state::mgdh(machine_config &config)
|
||||
// IGS_STRING(config, m_igs_string, 0);
|
||||
}
|
||||
|
||||
void igs017_state::sdmg2p(machine_config &config)
|
||||
{
|
||||
base_machine_oki(config, 22_MHz_XTAL / 22);
|
||||
|
||||
M68000(config, m_maincpu, 22_MHz_XTAL / 2);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::sdmg2p_map);
|
||||
TIMER(config, "scantimer").configure_scanline(FUNC(igs017_state::mgcs_interrupt), "screen", 0, 1);
|
||||
|
||||
// i/o
|
||||
m_igs_mux->set_addrmap(0, &igs017_state::sdmg2p_mux_map);
|
||||
|
||||
m_ppi->in_pa_callback().set_ioport("DSW1");
|
||||
m_ppi->in_pb_callback().set_ioport("DSW2");
|
||||
m_ppi->in_pc_callback().set_ioport("DSW3"); // there are 3 DIP banks on PCB but only two are shown in test mode
|
||||
|
||||
HOPPER(config, m_hopper, attotime::from_msec(50), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
|
||||
|
||||
IGS_STRING(config, m_igs_string, 0);
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
ROMs Loading
|
||||
@ -5004,7 +5243,7 @@ ROM_END
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Man Guan Caishen (V103CS)
|
||||
Manguan Caishen (V103CS)
|
||||
满贯财神 (Mǎn Guàn Cáishén)
|
||||
IGS, 1998
|
||||
|
||||
@ -5065,7 +5304,7 @@ ROM_END
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Chaoji Da Man Guan II (China, V754C)
|
||||
Chaoji Da Manguan II (China, V754C)
|
||||
超級大滿貫(Chāojí dà mǎn guàn)
|
||||
IGS, 1997
|
||||
|
||||
@ -5124,6 +5363,69 @@ ROM_END
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Maque Wangchao / Chaoji Damanguan 2 - Jiaqiang Ban
|
||||
麻雀王朝 / 超級大滿貫 2 -加強版 (Mahjong Dynasty / Super Grand Slam 2 - Enhanced Edition)
|
||||
|
||||
IGS 2000
|
||||
Hardware info By Guru
|
||||
---------------------
|
||||
|
||||
IGS PCB NO-0271
|
||||
|--------------------------------------|
|
||||
|PC817x19 JAMMA |
|
||||
| |-----| MA.DY_TEXT.U18|
|
||||
| | IGS | |
|
||||
| | 025 | |
|
||||
| |-----| 22MHz |
|
||||
| |-------| |
|
||||
| | IGS031| IGS_M0906.U20|
|
||||
|PC817x6 | | |
|
||||
| 22V10 | | MA.DY_V100C.U21|
|
||||
| SW1 |-------| |
|
||||
| SW2 61256|------| |
|
||||
| SW3 |68000 | 22V10 BATT|
|
||||
| | | 6264 |
|
||||
| 16V8 |------| |
|
||||
|LM7805 K668 |
|
||||
| SW4 |
|
||||
|TDA1020 VOL MA.DY_SP.U14 |
|
||||
|--------------------------------------|
|
||||
Notes:
|
||||
68000 - Clock 11.0MHz [22/2]
|
||||
K668 - ==OKI M6295. Clock 1.0MHz [22/22]. Pin 7 HIGH
|
||||
61256 - 32kB x8-bit SRAM
|
||||
6262 - 8kB x8-bit SRAM (battery-backed)
|
||||
SW1-3 - 8-position DIP Switch
|
||||
SW4 - High Score Reset / Back-up Battery RAM Re-initialize / PCB Reset
|
||||
PC817 - Sharp PC817 Optocoupler
|
||||
16V8 - Atmel ATF16V8B PLD
|
||||
22V10 - Atmel ATF22V10B PLD
|
||||
TDA1020 - Audio Power Amp
|
||||
U18/U21 - 27C4002 EPROM
|
||||
U14 - 27C040 EPROM
|
||||
U20 - MX23C3210 mask ROM
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
ROM_START( sdmg2p )
|
||||
ROM_REGION( 0x80000, "maincpu", 0 )
|
||||
ROM_LOAD16_WORD_SWAP( "ma.dy_v100c.u21", 0x00000, 0x80000,CRC(c071270e) SHA1(8b55a80da30f4233c862bb5d8a79a76af634a296) )
|
||||
|
||||
ROM_REGION( 0x400000, "igs017_igs031:sprites", 0 )
|
||||
ROM_LOAD( "igs_m0906.u20", 0x000000, 0x400000, CRC(01ea0a60) SHA1(66f083084f6d9e8dc4d1d50f3c5bcf2b79025fc0) ) // FIXED BITS (xxxxxxxx0xxxxxxx)
|
||||
|
||||
ROM_REGION( 0x80000, "igs017_igs031:tilemaps", 0 )
|
||||
ROM_LOAD( "ma.dy_text.u18", 0x000000, 0x080000, CRC(e46a3a52) SHA1(7b3f113170904dc474712a6a76162a8ee5dbd318) )
|
||||
|
||||
ROM_REGION( 0x80000, "oki", 0 )
|
||||
ROM_LOAD( "ma.dy_sp.u14", 0x00000, 0x80000, CRC(b31c6349) SHA1(9e8e5b029e1eff47581f99ecf2da3f17bee01f32) ) // 1ST AND 2ND HALF IDENTICAL
|
||||
|
||||
ROM_REGION( 0xec, "igs_string", 0 )
|
||||
ROM_LOAD( "sdmg2p_string.key", 0x00, 0xec, NO_DUMP )
|
||||
ROM_END
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Long Hu Zhengba 2 (set 1)
|
||||
龙虎争霸 (Lóng Hǔ Zhēngbà)
|
||||
IGS, 1998
|
||||
@ -5270,8 +5572,8 @@ ROM_END
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Man Guan Daheng (V123T1)
|
||||
滿貫大亨 (Mǎn Guàn Dàhēng)
|
||||
Manguan Daheng (V123T1)
|
||||
滿貫大亨 (Mǎnguàn Dàhēng)
|
||||
(c) 1997 IGS
|
||||
|
||||
PCB Layout
|
||||
@ -5325,8 +5627,8 @@ ROM_END
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Man Guan Daheng (V125T1)
|
||||
滿貫大亨 (Mǎn Guàn Dàhēng)
|
||||
Manguan Daheng (V125T1)
|
||||
滿貫大亨 (Mǎnguàn Dàhēng)
|
||||
(c) 1997 IGS
|
||||
|
||||
No hardware info, no sprites rom for this set.
|
||||
@ -5631,23 +5933,24 @@ ROM_END
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
GAME ( 1996, iqblocka, iqblock, iqblocka, iqblocka, igs017_state, init_iqblocka, ROT0, "IGS", "Shuzi Leyuan (China, V127M, gambling)", 0 ) // 數字樂園
|
||||
GAME ( 1997, iqblockf, iqblock, iqblockf, iqblockf, igs017_state, init_iqblocka, ROT0, "IGS", "IQ Block (V113FR, gambling)", 0 )
|
||||
GAME ( 1997, mgdh, 0, mgdh, mgdh, igs017_state, init_mgdh, ROT0, "IGS", "Man Guan Daheng (Taiwan, V125T1)", MACHINE_IMPERFECT_COLORS | MACHINE_UNEMULATED_PROTECTION) // 滿貫大亨, wrong colors in betting screen, game id check (patched out)
|
||||
GAME ( 1997, mgdha, mgdh, mgdha, mgdh, igs017_state, init_mgdha, ROT0, "IGS", "Man Guan Daheng (Taiwan, V123T1)", 0 ) // 滿貫大亨
|
||||
GAME ( 1997, sdmg2, 0, sdmg2, sdmg2, igs017_state, init_sdmg2, ROT0, "IGS", "Chaoji Da Man Guan II (China, V754C)", 0 ) // 超級大滿貫II
|
||||
GAME ( 1997, tjsb, 0, tjsb, tjsb, igs017_state, init_tjsb, ROT0, "IGS", "Tian Jiang Shen Bing (China, V137C)", MACHINE_UNEMULATED_PROTECTION ) // 天將神兵, fails the bonus round protection check (if enabled via DSW), see e.g. demo mode
|
||||
GAME ( 1998, genius6, 0, genius6, genius6, igs017_state, init_iqblocka, ROT0, "IGS", "Genius 6 (V110F)", 0 ) // shows chinese text in puzzle game
|
||||
GAME ( 1997, genius6a, genius6, genius6, genius6, igs017_state, init_iqblocka, ROT0, "IGS", "Genius 6 (V133F)", 0 ) // clone because it has older copyright year
|
||||
GAME ( 1997, genius6b, genius6, genius6, genius6, igs017_state, init_iqblocka, ROT0, "IGS", "Genius 6 (V132F)", 0 ) // "
|
||||
GAME ( 1998, mgcs, 0, mgcs, mgcs, igs017_state, init_mgcs, ROT0, "IGS", "Man Guan Caishen (China, V103CS)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION ) // 满贯财神, finish IGS029 protection
|
||||
GAME ( 1998, lhzb2, 0, lhzb2, lhzb2, igs017_state, init_lhzb2, ROT0, "IGS", "Long Hu Zhengba 2 (China, set 1)", MACHINE_UNEMULATED_PROTECTION ) // 龙虎争霸2, finish IGS022 protection
|
||||
GAME ( 1998, lhzb2a, lhzb2, lhzb2a, lhzb2a, igs017_state, init_lhzb2a, ROT0, "IGS", "Long Hu Zhengba 2 (China, VS221M)", 0 ) // 龙虎争霸2
|
||||
GAME ( 1998, slqz2, 0, slqz2, slqz2, igs017_state, init_slqz2, ROT0, "IGS", "Shuang Long Qiang Zhu 2 VS (China, VS203J)", MACHINE_UNEMULATED_PROTECTION ) // 双龙抢珠, finish IGS022 protection
|
||||
GAME ( 1999, tarzanc, 0, tarzan, tarzan, igs017_state, init_tarzanc, ROT0, "IGS", "Tarzan Chuang Tian Guan (China, V109C, set 1)", 0 )
|
||||
GAME ( 1999, tarzan, tarzanc, tarzan, tarzan, igs017_state, init_tarzan, ROT0, "IGS", "Tarzan Chuang Tian Guan (China, V109C, set 2)", MACHINE_NOT_WORKING ) // missing sprites and sound rom, imperfect tiles decryption
|
||||
GAME ( 1999, tarzana, tarzanc, tarzan, tarzan, igs017_state, init_tarzana, ROT0, "IGS", "Tarzan (V107)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION ) // missing IGS029 protection, missing sprites and sound rom
|
||||
GAMEL( 2000?, starzan, 0, starzan, starzan, igs017_state, init_starzan, ROT0, "IGS (G.F. Gioca license)", "Super Tarzan (Italy, V100I)", 0, layout_igsslot )
|
||||
GAMEL( 2000?, happyskl, 0, happyskl, happyskl, igs017_state, init_happyskl, ROT0, "IGS", "Happy Skill (Italy, V611IT)", 0, layout_igspoker )
|
||||
GAMEL( 2000?, cpoker2, 0, cpoker2, cpoker2, igs017_state, init_cpoker2, ROT0, "IGS", "Champion Poker 2 (V100A)", 0, layout_igspoker )
|
||||
GAME ( 2000?, spkrform, spk306us, spkrform, spkrform, igs017_state, init_spkrform, ROT0, "IGS", "Super Poker (V100xD03) / Formosa", MACHINE_UNEMULATED_PROTECTION ) // poker game enabling forced with a patch. Parent spk306us in driver spoker.cpp
|
||||
GAME ( 1996, iqblocka, iqblock, iqblocka, iqblocka, igs017_state, init_iqblocka, ROT0, "IGS", "Shuzi Leyuan (China, V127M, gambling)", 0 ) // 數字樂園
|
||||
GAME ( 1997, iqblockf, iqblock, iqblockf, iqblockf, igs017_state, init_iqblocka, ROT0, "IGS", "IQ Block (V113FR, gambling)", 0 )
|
||||
GAME ( 1997, mgdh, 0, mgdh, mgdh, igs017_state, init_mgdh, ROT0, "IGS", "Manguan Daheng (Taiwan, V125T1)", MACHINE_IMPERFECT_COLORS | MACHINE_UNEMULATED_PROTECTION) // 滿貫大亨, wrong colors in betting screen, game id check (patched out)
|
||||
GAME ( 1997, mgdha, mgdh, mgdha, mgdh, igs017_state, init_mgdha, ROT0, "IGS", "Manguan Daheng (Taiwan, V123T1)", 0 ) // 滿貫大亨
|
||||
GAME ( 1997, sdmg2, 0, sdmg2, sdmg2, igs017_state, init_sdmg2, ROT0, "IGS", "Chaoji Damanguan II (China, V754C)", 0 ) // 超級大滿貫II
|
||||
GAME ( 1997, tjsb, 0, tjsb, tjsb, igs017_state, init_tjsb, ROT0, "IGS", "Tian Jiang Shen Bing (China, V137C)", MACHINE_UNEMULATED_PROTECTION ) // 天將神兵, fails the bonus round protection check (if enabled via DSW), see e.g. demo mode
|
||||
GAME ( 1998, genius6, 0, genius6, genius6, igs017_state, init_iqblocka, ROT0, "IGS", "Genius 6 (V110F)", 0 ) // shows Chinese text in puzzle game
|
||||
GAME ( 1997, genius6a, genius6, genius6, genius6, igs017_state, init_iqblocka, ROT0, "IGS", "Genius 6 (V133F)", 0 ) // clone because it has older copyright year
|
||||
GAME ( 1997, genius6b, genius6, genius6, genius6, igs017_state, init_iqblocka, ROT0, "IGS", "Genius 6 (V132F)", 0 ) // "
|
||||
GAME ( 1998, mgcs, 0, mgcs, mgcs, igs017_state, init_mgcs, ROT0, "IGS", "Manguan Caishen (China, V103CS)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION ) // 满贯财神, finish IGS029 protection
|
||||
GAME ( 1998, lhzb2, 0, lhzb2, lhzb2, igs017_state, init_lhzb2, ROT0, "IGS", "Long Hu Zhengba 2 (China, set 1)", MACHINE_UNEMULATED_PROTECTION ) // 龙虎争霸2, finish IGS022 protection
|
||||
GAME ( 1998, lhzb2a, lhzb2, lhzb2a, lhzb2a, igs017_state, init_lhzb2a, ROT0, "IGS", "Long Hu Zhengba 2 (China, VS221M)", 0 ) // 龙虎争霸2
|
||||
GAME ( 1998, slqz2, 0, slqz2, slqz2, igs017_state, init_slqz2, ROT0, "IGS", "Shuang Long Qiang Zhu 2 VS (China, VS203J)", MACHINE_UNEMULATED_PROTECTION ) // 双龙抢珠, finish IGS022 protection
|
||||
GAME ( 1999, tarzanc, 0, tarzan, tarzan, igs017_state, init_tarzanc, ROT0, "IGS", "Tarzan Chuang Tian Guan (China, V109C, set 1)", 0 ) // 泰山闯天关
|
||||
GAME ( 1999, tarzan, tarzanc, tarzan, tarzan, igs017_state, init_tarzan, ROT0, "IGS", "Tarzan Chuang Tian Guan (China, V109C, set 2)", MACHINE_NOT_WORKING ) // missing sprites and sound rom, imperfect tiles decryption
|
||||
GAME ( 1999, tarzana, tarzanc, tarzan, tarzan, igs017_state, init_tarzana, ROT0, "IGS", "Tarzan (V107)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION ) // missing IGS029 protection, missing sprites and sound rom
|
||||
GAME ( 2000, sdmg2p, 0, sdmg2p, sdmg2p, igs017_state, init_sdmg2p, ROT0, "IGS", "Maque Wangchao / Chaoji Damanguan 2 - Jiaqiang Ban (China, V100C)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) // 麻雀王朝 / 超級大滿貫 2 -加強版 protection kicks in after starting game, hopper isn't hooked up correctly
|
||||
GAMEL( 2000?, starzan, 0, starzan, starzan, igs017_state, init_starzan, ROT0, "IGS (G.F. Gioca license)", "Super Tarzan (Italy, V100I)", 0, layout_igsslot )
|
||||
GAMEL( 2000?, happyskl, 0, happyskl, happyskl, igs017_state, init_happyskl, ROT0, "IGS", "Happy Skill (Italy, V611IT)", 0, layout_igspoker )
|
||||
GAMEL( 2000?, cpoker2, 0, cpoker2, cpoker2, igs017_state, init_cpoker2, ROT0, "IGS", "Champion Poker 2 (V100A)", 0, layout_igspoker )
|
||||
GAME ( 2000?, spkrform, spk306us, spkrform, spkrform, igs017_state, init_spkrform, ROT0, "IGS", "Super Poker (V100xD03) / Formosa", MACHINE_UNEMULATED_PROTECTION ) // poker game enabling forced with a patch. Parent spk306us in driver spoker.cpp
|
||||
|
@ -20098,6 +20098,7 @@ mgcs // (c) 1998
|
||||
mgdh // (c) 1997
|
||||
mgdha // (c) 1997
|
||||
sdmg2 // (c) 1997
|
||||
sdmg2p // (c) 2000
|
||||
slqz2 // (c) 1998
|
||||
spkrform // (c) 2000?
|
||||
starzan // (c) 2000?
|
||||
@ -42099,6 +42100,9 @@ sols5e // Solbourne Series 5E computer workstation
|
||||
@source:skeleton/squale.cpp
|
||||
squale //
|
||||
|
||||
@source:skeleton/sterz80.cpp
|
||||
tongzi
|
||||
|
||||
@source:skeleton/swyft.cpp
|
||||
swyft //
|
||||
|
||||
|
202
src/mame/skeleton/sterz80.cpp
Normal file
202
src/mame/skeleton/sterz80.cpp
Normal file
@ -0,0 +1,202 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:
|
||||
|
||||
/*******************************************************************
|
||||
Tong Zi Maque
|
||||
Ster, 2003 (might be incorrect?)
|
||||
Hardware info By Guru
|
||||
---------------------
|
||||
|
||||
No PCB number
|
||||
"MADE IN SPIDER" on some ROMs and spider web logo on PCB
|
||||
MADE IN TAIWAN 2003
|
||||
|--------------------------------------|
|
||||
|BATT 62256 Z80-PROG.U2 |
|
||||
| 62256 15MHz Z80 |-|
|
||||
| DS12B887.U12 |
|
||||
|GFX1.U6 13.560MHz |
|
||||
| |
|
||||
| GFX2.U5 M|
|
||||
| |--------| TLP620-4 A|
|
||||
| |ALTERA | TLP620-4 H|
|
||||
| |EPM7256 | |--------| J|
|
||||
| |SQC208 | |ALTERA | O|
|
||||
| |--------| |EPM7192 | N|
|
||||
| |SQC160 | G|
|
||||
| |--------| |
|
||||
| U6295 93C46.U11 |
|
||||
|78L05 29F002.U9 BUTTON TLP620-4 |
|
||||
|uPC1241H T518A TLP620-4 |
|
||||
| VOL |-|
|
||||
|-| 10WAY |-----| 22WAY |
|
||||
|---------| |--------------------|
|
||||
Notes:
|
||||
Z80 - Zilog Z84C0008 Z80 CPU. Clock (possibly 7.5MHz; TO-DO)
|
||||
U6295 - OKI M6295. Clock (TO-DO)
|
||||
62256 - 32kB x8-bit SRAM
|
||||
BUTTON - Reset? Test?
|
||||
TLP620-4 - Toshiba TLP620-4 Photocoupler. Package contains 4 driver/receiver pairs.
|
||||
EMP7256 - Altera Max 7000-Series EPM7256SQC208 Programmable Logic Device
|
||||
EMP7192 - Altera Max 7000-Series EPM7192SQC160 Programmable Logic Device
|
||||
uPC1241H - NEC uPC1241H Mono Audio Power Amp
|
||||
T518A - PST518A System Reset IC
|
||||
78L05 - 5V Regulator in TO92 package
|
||||
U5/U6 - 27C160 EPROM (graphics)
|
||||
93C46.U11 - Atmel AT93C46 EEPROM (128 bytes) (for game settings or high scores?)
|
||||
Z80-PROG.U2 - Winbond W29EE011 EEPROM (Z80 program). The databus on this ROM connects to the EPM7192 and the Z80 databus is also connected
|
||||
to the EPM7192 on different pins. Additionally there's no valid Z80 code and no plain text in the ROM. This all leads to it
|
||||
being highly likely that the program is encrypted.
|
||||
29F002 - AMD AM29F002 PLCC32 (surface-mounted) EEPROM. This is connected to the OKI chip and holds the audio samples.
|
||||
DS12B887.U12 - Dallas DS12B887 Real Time Clock Module. This looks suspiciously like it's used for protection data? The PCB contains a battery
|
||||
(for game settings or high scores?) and a 93C46 EEPROM (for game settings or high scores?). No other data needs to be sotred
|
||||
anywhere. The DS12B887 is connected to the EPM7192 chip. It's possible it might just be for time/bookkeeping. The chip
|
||||
(dated 9614) is dumped but I'd be surprised if the battery inside was still alive and the data is good, although the data isn't
|
||||
just garbage and reads the same each time so by some miracle it might be ok.
|
||||
The first 14 bytes are clock and control registers. The remaining space is general-purpose battery-backed RAM. These same chips
|
||||
were used often in PCs around the 286/386/486 era to store the CMOS data. The RAM can technically hold anything, maybe even
|
||||
a decryption key....
|
||||
|
||||
*******************************************************************/
|
||||
|
||||
|
||||
#include "emu.h"
|
||||
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "machine/ds128x.h"
|
||||
#include "machine/eepromser.h"
|
||||
#include "sound/okim6295.h"
|
||||
|
||||
#include "emupal.h"
|
||||
#include "screen.h"
|
||||
#include "speaker.h"
|
||||
#include "tilemap.h"
|
||||
|
||||
|
||||
namespace {
|
||||
|
||||
class sterz80_state : public driver_device
|
||||
{
|
||||
public:
|
||||
sterz80_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||
driver_device(mconfig, type, tag),
|
||||
m_maincpu(*this, "maincpu")
|
||||
{ }
|
||||
|
||||
void tongzi(machine_config &config) ATTR_COLD;
|
||||
|
||||
void init_tongzi() ATTR_COLD;
|
||||
|
||||
private:
|
||||
required_device<cpu_device> m_maincpu;
|
||||
|
||||
uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||
|
||||
void program_map(address_map &map) ATTR_COLD;
|
||||
void io_map(address_map &map) ATTR_COLD;
|
||||
};
|
||||
|
||||
|
||||
uint32_t sterz80_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
bitmap.fill(rgb_t::black(), cliprect);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void sterz80_state::program_map(address_map &map)
|
||||
{
|
||||
map(0x0000, 0xffff).rom();
|
||||
}
|
||||
|
||||
void sterz80_state::io_map(address_map &map)
|
||||
{
|
||||
map.global_mask(0xff);
|
||||
map.unmap_value_high();
|
||||
}
|
||||
|
||||
|
||||
static INPUT_PORTS_START( tongzi )
|
||||
PORT_START("IN0")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
|
||||
PORT_START("IN1")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
void sterz80_state::tongzi(machine_config &config)
|
||||
{
|
||||
// basic machine hardware
|
||||
Z80(config, m_maincpu, 15'000'000 / 2); // TODO: clock / divisor
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &sterz80_state::program_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &sterz80_state::io_map);
|
||||
// m_maincpu->set_vblank_int("screen", FUNC(sterz80_state::irq0_line_hold));
|
||||
|
||||
EEPROM_93C46_8BIT(config, "eeprom");
|
||||
|
||||
DS12885(config, "rtc", XTAL(32'768)); // TODO: should be DS12B887
|
||||
|
||||
// video hardware
|
||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); // TODO: verify everything once emulation works
|
||||
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, 2*8, 30*8-1);
|
||||
screen.set_screen_update(FUNC(sterz80_state::screen_update));
|
||||
|
||||
PALETTE(config, "palette").set_entries(0x100); // TODO
|
||||
|
||||
// sound hardware
|
||||
SPEAKER(config, "mono").front_center();
|
||||
|
||||
OKIM6295(config, "oki", 1'000'000, okim6295_device::PIN7_LOW).add_route(ALL_OUTPUTS, "mono", 1.0); // TODO: clock / divisor and pin 7
|
||||
}
|
||||
|
||||
|
||||
ROM_START( tongzi )
|
||||
ROM_REGION( 0x20000, "maincpu", 0 )
|
||||
ROM_LOAD( "3.u2", 0x00000, 0x20000, CRC(8f394f91) SHA1(e49c682cb819885334c1f25d5221e3f59c21a7e2) ) // encrypted
|
||||
|
||||
ROM_REGION( 0x400000, "gfx", 0 )
|
||||
ROM_LOAD( "1.u6", 0x000000, 0x200000, CRC(e885dcc9) SHA1(ea4a72eec7b65cb668c5abb64347426192bd0f86) )
|
||||
ROM_LOAD( "2.u5", 0x200000, 0x200000, CRC(a7c11185) SHA1(96c9479802db0594845b2b282553c73406b84bb0) )
|
||||
|
||||
ROM_REGION( 0x80, "eeprom", 0 )
|
||||
ROM_LOAD( "93c46.u11", 0x00, 0x80, CRC(bc385e5a) SHA1(b6a2c02e3b558aff2fb2a3b84ea307ad0996a70c) )
|
||||
|
||||
ROM_REGION( 0x80, "rtc", 0 )
|
||||
ROM_LOAD( "ds12887.u12", 0x00, 0x80, CRC(520e6efb) SHA1(f4e59ac6a519d310e8362fd088f50c7ee7f970e1) )
|
||||
|
||||
ROM_REGION( 0x40000, "oki", 0 )
|
||||
ROM_LOAD( "am29f002.u9", 0x00000, 0x40000, CRC(4bbd8cfa) SHA1(690d7a98764162b0771629c02fd3c488761d8ec0) ) // encrypted
|
||||
ROM_END
|
||||
|
||||
|
||||
void sterz80_state::init_tongzi()
|
||||
{
|
||||
// decrypt main CPU ROM
|
||||
// TODO
|
||||
|
||||
// decrypt M6295 ROM
|
||||
// TODO
|
||||
}
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
|
||||
GAME( 2003, tongzi, 0, tongzi, tongzi, sterz80_state, init_tongzi, ROT0, "Ster", "Tong Zi Maque", MACHINE_IS_SKELETON )
|
Loading…
Reference in New Issue
Block a user