mirror of
https://github.com/holub/mame
synced 2025-04-23 00:39:36 +03:00
New clones marked not working
----------------------------- Manguan Caishen (China, V106CS) [dyq, little0, Guru]
This commit is contained in:
parent
71935ea825
commit
6bbe76b32c
@ -22,6 +22,7 @@ Year + Game PCB CPU Sound
|
||||
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
|
||||
98 Manguan Caishen (V106CS) NO-0208 68000 M6295 IGS031 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
|
||||
@ -644,6 +645,7 @@ public:
|
||||
void lhzb2(machine_config &config);
|
||||
void lhzb2a(machine_config &config);
|
||||
void mgcs(machine_config &config);
|
||||
void mgcsa(machine_config &config);
|
||||
void mgdh(machine_config &config);
|
||||
void mgdha(machine_config &config);
|
||||
void sdmg2(machine_config &config);
|
||||
@ -657,6 +659,7 @@ public:
|
||||
void init_lhzb2();
|
||||
void init_lhzb2a();
|
||||
void init_mgcs();
|
||||
void init_mgcsa();
|
||||
void init_mgdh();
|
||||
void init_mgdha();
|
||||
void init_sdmg2();
|
||||
@ -832,6 +835,7 @@ private:
|
||||
void decrypt_program_rom(int mask, int a7, int a6, int a5, int a4, int a3, int a2, int a1, int a0);
|
||||
|
||||
void mgcs_decrypt_program_rom();
|
||||
void mgcsa_decrypt_program_rom();
|
||||
void mgcs_igs029_run();
|
||||
void starzan_decrypt_program_rom();
|
||||
void tarzan_decrypt_program_rom();
|
||||
@ -866,6 +870,7 @@ private:
|
||||
void lhzb2a_mux_map(address_map &map);
|
||||
void mgcs_map(address_map &map);
|
||||
void mgcs_mux_map(address_map &map);
|
||||
void mgcsa_map(address_map &map);
|
||||
void mgdh_mux_map(address_map &map);
|
||||
void mgdh_map(address_map &map);
|
||||
void mgdha_mux_map(address_map &map);
|
||||
@ -1097,6 +1102,50 @@ void igs017_state::mgcs_decrypt_program_rom()
|
||||
}
|
||||
}
|
||||
|
||||
void igs017_state::mgcsa_decrypt_program_rom()
|
||||
{
|
||||
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];
|
||||
|
||||
if (i & 0x20 / 2)
|
||||
{
|
||||
if (i & 0x02 / 2)
|
||||
{
|
||||
x ^= 0x0001;
|
||||
}
|
||||
}
|
||||
|
||||
if (!(i & 0x4000 / 2))
|
||||
{
|
||||
if (!(i & 0x300 / 2))
|
||||
{
|
||||
x ^= 0x0001;
|
||||
}
|
||||
}
|
||||
|
||||
if (!(i & 0x1000 / 2) && !(i & 0x100 / 2))
|
||||
{
|
||||
if (!(i & 0x20 / 2))
|
||||
{
|
||||
x ^= 0x0100;
|
||||
}
|
||||
}
|
||||
else if (i & 0x1000 / 2)
|
||||
{
|
||||
if ((!(i & 0x100 / 2)) || ((i & 0x20 / 2) && (!(i & 0x400 / 2))))
|
||||
{
|
||||
x ^= 0x0100;
|
||||
}
|
||||
}
|
||||
|
||||
rom[i] = x;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#if 0
|
||||
void igs017_state::mgcs_patch_rom()
|
||||
@ -1123,6 +1172,14 @@ void igs017_state::init_mgcs()
|
||||
// m_igs_string->dump("mgcs_string.key", 0x1424, 0x1338, true);
|
||||
}
|
||||
|
||||
void igs017_state::init_mgcsa()
|
||||
{
|
||||
mgcsa_decrypt_program_rom();
|
||||
|
||||
m_igs017_igs031->mgcs_decrypt_tiles();
|
||||
m_igs017_igs031->mgcs_flip_sprites();
|
||||
}
|
||||
|
||||
|
||||
// tarzan, tarzana
|
||||
|
||||
@ -2310,6 +2367,20 @@ void igs017_state::mgcs_mux_map(address_map &map)
|
||||
igs_string_mux_map(map); // 0x05 r, 0x20 - 0x27 w, 0x40 r
|
||||
}
|
||||
|
||||
void igs017_state::mgcsa_map(address_map &map)
|
||||
{
|
||||
map(0x000000, 0x07ffff).rom();
|
||||
map(0x100000, 0x103fff).ram();
|
||||
|
||||
map(0x49c000, 0x49c001).nopr().w(m_igs_mux, FUNC(igs_mux_device::address_w)).umask16(0x00ff); // clr.w dummy read
|
||||
map(0x49c002, 0x49c003).rw(m_igs_mux, FUNC(igs_mux_device::data_r), FUNC(igs_mux_device::data_w)).umask16(0x00ff);
|
||||
|
||||
map(0x900000, 0x90ffff).rw(m_igs017_igs031, FUNC(igs017_igs031_device::read), FUNC(igs017_igs031_device::write)).umask16(0x00ff);
|
||||
|
||||
map(0x912001, 0x912001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
||||
// oki banking through protection (code at $1a350)
|
||||
}
|
||||
|
||||
|
||||
// sdmg2
|
||||
|
||||
@ -4615,6 +4686,13 @@ void igs017_state::mgcs(machine_config &config)
|
||||
m_igs017_igs031->set_palette_scramble_cb(FUNC(igs017_state::mgcs_palette_bitswap));
|
||||
}
|
||||
|
||||
void igs017_state::mgcsa(machine_config &config)
|
||||
{
|
||||
mgcs(config);
|
||||
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &igs017_state::mgcsa_map);
|
||||
}
|
||||
|
||||
|
||||
// lhzb2
|
||||
|
||||
@ -5118,6 +5196,61 @@ ROM_START( mgcs )
|
||||
ROM_LOAD( "mgcs_string.key", 0x00, 0xec, CRC(6cdadd19) SHA1(c2b4ced5d45d0af1ddeeabd0e352fd5383995d32) )
|
||||
ROM_END
|
||||
|
||||
/*********************************************************************************
|
||||
|
||||
Man Guan Cai Shen, IGS 1998
|
||||
|
||||
PCB Layout
|
||||
----------
|
||||
|
||||
IGS PCB NO- 0208
|
||||
|-----------------------------------------|
|
||||
| JAMMA VOL TDA1020 |
|
||||
|1 F521(x25) 7805 |
|
||||
|8 S1502.U12 M6295 |
|
||||
|W 22MHz M1503.U22|
|
||||
|A LM2933 |
|
||||
|Y |
|
||||
| |
|
||||
|IGS029 |
|
||||
| 8MHz IGS031 |
|
||||
| M1501.U21|
|
||||
| |
|
||||
| 27C4096.U24|
|
||||
| 61256 |
|
||||
|1 IGS025 68000 6264 |
|
||||
|0 PAL |
|
||||
|W PAL |
|
||||
|A SW1 PAL |
|
||||
|Y SW2 SW3 T518B |
|
||||
|-----------------------------------------|
|
||||
Notes:
|
||||
68000 - Clock 11.000MHz [22/2]
|
||||
M6295 - Clock 1.000MHz [22/22]
|
||||
SW1/2 - 8-Position DIP Switch
|
||||
SW3 - Reset / NVRAM Clear
|
||||
6264 - 8kBx8-bit SRAM
|
||||
61256 - 32kBx8-bit SRAM
|
||||
|
||||
*********************************************************************************/
|
||||
|
||||
ROM_START( mgcsa )
|
||||
ROM_REGION( 0x80000, "maincpu", 0 )
|
||||
ROM_LOAD16_WORD_SWAP( "27c4096.u24", 0x00000, 0x80000, CRC(c41b7530) SHA1(1f9f821658c50b84b2e8cce97ffea8349fdae54f) )
|
||||
|
||||
ROM_REGION( 0x400000, "igs017_igs031:sprites", 0 )
|
||||
ROM_LOAD( "m1501.u21", 0x000000, 0x400000, CRC(96fce058) SHA1(6b87f47d646bad9b3061bdc8a9af65467fdbbc9f) ) // FIXED BITS (xxxxxxx0xxxxxxxx)
|
||||
|
||||
ROM_REGION( 0x80000, "igs017_igs031:tilemaps", 0 )
|
||||
ROM_LOAD( "m1503.u22", 0x00000, 0x80000, CRC(a37f9613) SHA1(812f060ca98a34540c48a180c359c3d0f1c0b5bb) )
|
||||
|
||||
ROM_REGION( 0x80000, "oki", 0 )
|
||||
ROM_LOAD( "s1502.u12", 0x00000, 0x80000, CRC(a8a6ba58) SHA1(59276a8ab4a31812600816c2a43b74bd71394419) )
|
||||
|
||||
ROM_REGION( 0xec, "igs_string", 0 )
|
||||
ROM_LOAD( "mgcs_string.key", 0x00, 0xec, BAD_DUMP CRC(6cdadd19) SHA1(c2b4ced5d45d0af1ddeeabd0e352fd5383995d32) ) // TODO: seems the same as the parent, but double-check
|
||||
ROM_END
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Chaoji Damanguan II (China, V754C)
|
||||
@ -5782,6 +5915,7 @@ GAME ( 1998, genius6, 0, genius6, genius6, igs017_state, init_iqblock
|
||||
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, mgcsa, mgcs, mgcsa, mgcs, igs017_state, init_mgcsa, ROT0, "IGS", "Manguan Caishen (China, V106CS)", 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
|
||||
|
@ -20197,6 +20197,7 @@ iqblockf // (c) 1996
|
||||
lhzb2 // (c) 1998
|
||||
lhzb2a // (c) 1998
|
||||
mgcs // (c) 1998
|
||||
mgcsa // (c) 1998
|
||||
mgdh // (c) 1997
|
||||
mgdha // (c) 1997
|
||||
sdmg2 // (c) 1997
|
||||
|
Loading…
Reference in New Issue
Block a user