mirror of
https://github.com/holub/mame
synced 2025-04-22 08:22:15 +03:00
igs/igs_m027.cpp: Identified lhzb3 internal CPU ROM and removed tilemap ROM unscrambling for games that don't use it. (#12705)
* igs/igs_m027.cpp: Confirmed lhzb3 uses the same IGS027A ROM as lhdmg. * igs/igs_m027.cpp: Removed tilemap ROM unscrambling for zhongguo and related games. * igs/igs017_igs031.cpp: Simplified graphics ROM address unscrambling for sdwx.
This commit is contained in:
parent
ae3bfa13f1
commit
88bd201514
@ -509,15 +509,9 @@ void igs017_igs031_device::sdwx_gfx_decrypt()
|
||||
std::vector<u8> result_data(rom_size);
|
||||
|
||||
for (int i = 0; i < rom_size; i++)
|
||||
result_data[i] = src[bitswap<24>(i, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 8, 7, 6, 10, 9, 5, 4, 3, 2, 1, 0)];
|
||||
result_data[i] = src[bitswap<24>(i, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 7, 8, 6, 10, 9, 5, 4, 3, 2, 1, 0)];
|
||||
|
||||
for (int i = 0; i < rom_size; i += 0x200)
|
||||
{
|
||||
memcpy(src + i + 0x000, &result_data[i + 0x000], 0x80);
|
||||
memcpy(src + i + 0x080, &result_data[i + 0x100], 0x80);
|
||||
memcpy(src + i + 0x100, &result_data[i + 0x080], 0x80);
|
||||
memcpy(src + i + 0x180, &result_data[i + 0x180], 0x80);
|
||||
}
|
||||
memcpy(src, result_data.data(), rom_size);
|
||||
}
|
||||
|
||||
|
||||
|
@ -23,9 +23,9 @@ public:
|
||||
template <typename T> void set_i8255_tag(T &&tag) { m_i8255.set_tag(std::forward<T>(tag)); }
|
||||
template <typename... T> void set_palette_scramble_cb(T &&... args) { m_palette_scramble_cb.set(std::forward<T>(args)...); }
|
||||
|
||||
void set_text_reverse_bits()
|
||||
void set_text_reverse_bits(bool revbits)
|
||||
{
|
||||
m_revbits = true;
|
||||
m_revbits = revbits;
|
||||
}
|
||||
|
||||
u16 palette_callback_straight(u16 bgr) const;
|
||||
|
@ -55,7 +55,6 @@ public:
|
||||
void init_sdwx();
|
||||
void init_chessc2();
|
||||
void init_lhzb4();
|
||||
void init_lhzb3();
|
||||
void init_gonefsh2();
|
||||
void init_sddz();
|
||||
void init_zhongguo();
|
||||
@ -443,7 +442,7 @@ void igs_m027_state::igs_mahjong(machine_config &config)
|
||||
|
||||
|
||||
IGS017_IGS031(config, m_igs017_igs031, 0);
|
||||
m_igs017_igs031->set_text_reverse_bits();
|
||||
m_igs017_igs031->set_text_reverse_bits(true);
|
||||
m_igs017_igs031->set_i8255_tag("ppi8255");
|
||||
|
||||
// sound hardware
|
||||
@ -810,7 +809,7 @@ ROM_END
|
||||
ROM_START( lhzb3 )
|
||||
ROM_REGION( 0x04000, "maincpu", 0 )
|
||||
// Internal ROM of IGS027A ARM based MCU
|
||||
ROM_LOAD( "lhzb3_igs027a", 0x00000, 0x4000, NO_DUMP ) // unknown sticker
|
||||
ROM_LOAD( "b6_igs027a", 0x00000, 0x4000, CRC(75645f8c) SHA1(738fba64a906f4f10e78e332ad30b8da9dc86b21) )
|
||||
|
||||
ROM_REGION32_LE( 0x80000, "user1", 0 ) // external ARM data / prg
|
||||
ROM_LOAD( "lhzb3_104.u9", 0x000000, 0x80000, CRC(70d61846) SHA1(662b59702ef6f26129de6b16346786df92f99097) )
|
||||
@ -1378,13 +1377,6 @@ void igs_m027_state::init_lhzb4()
|
||||
pgm_create_dummy_internal_arm_region();
|
||||
}
|
||||
|
||||
void igs_m027_state::init_lhzb3()
|
||||
{
|
||||
lhzb3_decrypt(machine());
|
||||
//m_igs017_igs031->sdwx_gfx_decrypt();
|
||||
pgm_create_dummy_internal_arm_region();
|
||||
}
|
||||
|
||||
void igs_m027_state::init_sddz()
|
||||
{
|
||||
sddz_decrypt(machine());
|
||||
@ -1402,15 +1394,13 @@ void igs_m027_state::init_gonefsh2()
|
||||
void igs_m027_state::init_zhongguo()
|
||||
{
|
||||
zhongguo_decrypt(machine());
|
||||
m_igs017_igs031->mgcs_decrypt_tiles(); // close, but wrong, see copyright date
|
||||
// sprites aren't encrypted
|
||||
m_igs017_igs031->set_text_reverse_bits(false);
|
||||
}
|
||||
|
||||
void igs_m027_state::init_slqz3()
|
||||
{
|
||||
slqz3_decrypt(machine());
|
||||
//m_igs017_igs031->slqz3_decrypt_tiles(); // none of the existing functions are correct for this
|
||||
// sprite gfx not encrypted
|
||||
m_igs017_igs031->set_text_reverse_bits(false);
|
||||
}
|
||||
|
||||
void igs_m027_state::init_fruitpar()
|
||||
@ -1451,6 +1441,7 @@ void igs_m027_state::init_qlgs()
|
||||
void igs_m027_state::init_mgzz()
|
||||
{
|
||||
mgzz_decrypt(machine());
|
||||
m_igs017_igs031->set_text_reverse_bits(false);
|
||||
}
|
||||
|
||||
void igs_m027_state::init_mgcs3()
|
||||
@ -1471,8 +1462,7 @@ void igs_m027_state::init_jking02()
|
||||
void igs_m027_state::init_lthy()
|
||||
{
|
||||
lthy_decrypt(machine());
|
||||
//m_igs017_igs031->sdwx_gfx_decrypt(); // wrong
|
||||
//pgm_create_dummy_internal_arm_region();
|
||||
m_igs017_igs031->set_text_reverse_bits(false);
|
||||
}
|
||||
|
||||
void igs_m027_state::init_luckycrs()
|
||||
@ -1492,16 +1482,14 @@ void igs_m027_state::init_olympic5()
|
||||
void igs_m027_state::init_lhdmg()
|
||||
{
|
||||
lhdmg_decrypt(machine());
|
||||
//qlgs_gfx_decrypt(machine());
|
||||
//pgm_create_dummy_internal_arm_region();
|
||||
m_igs017_igs031->set_text_reverse_bits(false);
|
||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0x4000000c, 0x4000000f, read32smo_delegate(*this, FUNC(igs_m027_state::lhdmg_unk2_r)));
|
||||
}
|
||||
|
||||
void igs_m027_state::init_lhdmgp()
|
||||
{
|
||||
lhdmgp_decrypt(machine());
|
||||
//qlgs_gfx_decrypt(machine());
|
||||
//pgm_create_dummy_internal_arm_region();
|
||||
m_igs017_igs031->set_text_reverse_bits(false);
|
||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0x4000000c, 0x4000000f, read32smo_delegate(*this, FUNC(igs_m027_state::lhdmg_unk2_r)));
|
||||
}
|
||||
|
||||
@ -1521,6 +1509,7 @@ GAME( 1999, qlgs, 0, igs_mahjong, qlgs, igs_m027_state, init_qlg
|
||||
GAME( 1999, fruitpar, 0, igs_mahjong, base, igs_m027_state, init_fruitpar, ROT0, "IGS", "Fruit Paradise (V214)", MACHINE_IS_SKELETON )
|
||||
GAME( 1999, lhdmg, 0, igs_mahjong, base, igs_m027_state, init_lhdmg, ROT0, "IGS", "Long Hu Da Man Guan", MACHINE_IS_SKELETON )
|
||||
GAME( 1999, lhdmgp, lhdmg, igs_mahjong, base, igs_m027_state, init_lhdmgp, ROT0, "IGS", "Long Hu Da Man Guan Plus", MACHINE_IS_SKELETON )
|
||||
GAME( 1999, lhzb3, lhdmg, igs_mahjong, base, igs_m027_state, init_lhdmg, ROT0, "IGS", "Long Hu Zhengba III", MACHINE_IS_SKELETON ) // 龙虎争霸Ⅲ
|
||||
GAME( 1999, lthy, 0, igs_mahjong, base, igs_m027_state, init_lthy, ROT0, "IGS", "Long Teng Hu Yue", MACHINE_IS_SKELETON )
|
||||
GAME( 2000, zhongguo, 0, igs_mahjong, base, igs_m027_state, init_zhongguo, ROT0, "IGS", "Zhong Guo Chu Da D", MACHINE_IS_SKELETON )
|
||||
GAME( 200?, jking02, 0, igs_mahjong, jking02, igs_m027_state, init_jking02, ROT0, "IGS", "Jungle King 2002 (V209US)", MACHINE_IS_SKELETON )
|
||||
@ -1539,7 +1528,6 @@ GAME( 2003, olympic5a, olympic5, igs_mahjong, base, igs_m027_state, init_oly
|
||||
GAME( 2003, amazoni2, 0, igs_mahjong, base, igs_m027_state, init_amazoni2, ROT0, "IGS", "Amazonia King II (V202BR)", MACHINE_IS_SKELETON )
|
||||
GAME( 2002, sdwx, 0, igs_mahjong, base, igs_m027_state, init_sdwx, ROT0, "IGS", "Sheng Dan Wu Xian", MACHINE_IS_SKELETON ) // aka Christmas 5 Line? (or Amazonia King II, shares roms at least?)
|
||||
GAME( 200?, sddz, 0, igs_mahjong, base, igs_m027_state, init_sddz, ROT0, "IGS", "Super Dou Di Zhu", MACHINE_IS_SKELETON )
|
||||
GAME( 200?, lhzb3, 0, igs_mahjong, base, igs_m027_state, init_lhzb3, ROT0, "IGS", "Long Hu Zhengba III", MACHINE_IS_SKELETON ) // 龙虎争霸Ⅲ
|
||||
GAME( 2004, lhzb4, 0, igs_mahjong, base, igs_m027_state, init_lhzb4, ROT0, "IGS", "Long Hu Zhengba 4", MACHINE_IS_SKELETON ) // 龙虎争霸4
|
||||
GAME( 200?, klxyj, 0, igs_mahjong, base, igs_m027_state, init_klxyj, ROT0, "IGS", "Kuai Le Xi You Ji", MACHINE_IS_SKELETON )
|
||||
GAME( 200?, extradrw, 0, igs_mahjong, base, igs_m027_state, init_qlgs, ROT0, "IGS", "Extra Draw", MACHINE_IS_SKELETON )
|
||||
|
@ -347,7 +347,7 @@ void extension_state::cjsll(machine_config &config)
|
||||
I8255A(config, "ppi");
|
||||
|
||||
IGS017_IGS031(config, m_igs017_igs031, 0);
|
||||
m_igs017_igs031->set_text_reverse_bits();
|
||||
m_igs017_igs031->set_text_reverse_bits(true);
|
||||
m_igs017_igs031->set_i8255_tag("ppi");
|
||||
|
||||
SPEAKER(config, "mono").front_center();
|
||||
|
@ -163,7 +163,7 @@ void igs_m027xa_state::igs_mahjong_xa(machine_config &config)
|
||||
m_ppi->in_pc_callback().set_ioport("TEST2");
|
||||
|
||||
IGS017_IGS031(config, m_igs017_igs031, 0);
|
||||
m_igs017_igs031->set_text_reverse_bits();
|
||||
m_igs017_igs031->set_text_reverse_bits(true);
|
||||
m_igs017_igs031->set_i8255_tag("ppi8255");
|
||||
|
||||
// sound hardware
|
||||
|
Loading…
Reference in New Issue
Block a user