mirror of
https://github.com/holub/mame
synced 2025-04-22 16:31:49 +03:00
new nw: IGS 027A: Amazonia King V104BR
This commit is contained in:
parent
a392cdbdb9
commit
33001fcae2
@ -9913,6 +9913,7 @@ starzan // (c) 2000?
|
||||
|
||||
// IGS027A Cpu Games
|
||||
slqz3 // (c) 1999
|
||||
amazonia // (c) 1999
|
||||
fruitpar // (c) 200?
|
||||
zhongguo // (c) 2000
|
||||
sdwx // (c) 2002
|
||||
|
@ -68,6 +68,7 @@ public:
|
||||
DECLARE_DRIVER_INIT(fearless);
|
||||
DECLARE_DRIVER_INIT(slqz3);
|
||||
DECLARE_DRIVER_INIT(fruitpar);
|
||||
DECLARE_DRIVER_INIT(amazonia);
|
||||
TILE_GET_INFO_MEMBER(get_tx_tilemap_tile_info);
|
||||
TILE_GET_INFO_MEMBER(get_bg_tilemap_tile_info);
|
||||
virtual void video_start();
|
||||
@ -538,6 +539,37 @@ ROM_END
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Amazonia King
|
||||
IGS
|
||||
|
||||
IGS PCB-0367-00-FG-1
|
||||
|
||||
- IGS 027A
|
||||
- IGS 031
|
||||
- IGS A2107
|
||||
- IGS T2105
|
||||
- K668 (qfp44) == OKI6225
|
||||
- 82C55
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
ROM_START( amazonia )
|
||||
ROM_REGION( 0x04000, "maincpu", 0 )
|
||||
/* Internal rom of IGS027A type G ARM based MCU */
|
||||
ROM_LOAD( "amazonia_igs027a", 0x00000, 0x4000, NO_DUMP )
|
||||
|
||||
ROM_REGION( 0x80000, "user1", 0 ) // external ARM data / prg
|
||||
ROM_LOAD( "amazonia_v-104br.u23", 0x00000, 0x80000, CRC(c203f875) SHA1(e8465ac74b873cc4d372a656bb50994bffed8406) )
|
||||
|
||||
ROM_REGION( 0x480000, "gfx1", 0 )
|
||||
ROM_LOAD( "amazonia_cg.u11", 0x000000, 0x80000, CRC(2ac2cfd1) SHA1(f8750a4727ddabf1415dab6eaa4a72e60e86e7f1) )
|
||||
|
||||
ROM_REGION( 0x80000, "oki", 0 )
|
||||
ROM_LOAD( "igs_s2102.u28", 0x00000, 0x80000, CRC(90dda82d) SHA1(67fbc1e8d76b85e124136e2f1df09c8b6c5a8f97) )
|
||||
ROM_END
|
||||
|
||||
|
||||
ROM_START( sdwx )
|
||||
ROM_REGION( 0x04000, "maincpu", 0 )
|
||||
@ -1064,6 +1096,13 @@ DRIVER_INIT_MEMBER(igs_m027_state,fruitpar)
|
||||
pgm_create_dummy_internal_arm_region();
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER(igs_m027_state,amazonia)
|
||||
{
|
||||
amazonia_decrypt(machine());
|
||||
//sdwx_gfx_decrypt(machine());
|
||||
pgm_create_dummy_internal_arm_region();
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Game Drivers
|
||||
@ -1071,6 +1110,7 @@ DRIVER_INIT_MEMBER(igs_m027_state,fruitpar)
|
||||
***************************************************************************/
|
||||
|
||||
GAME( 1999, slqz3, 0, igs_majhong, sdwx, igs_m027_state, slqz3, ROT0, "IGS", "Mahjong Shuang Long Qiang Zhu 3 (China, VS107C)", MACHINE_IS_SKELETON )
|
||||
GAME( 1999, amazonia, 0, igs_majhong, sdwx, igs_m027_state, amazonia, ROT0, "IGS", "Amazonia King (V104BR)", MACHINE_IS_SKELETON )
|
||||
GAME( 200?, fruitpar, 0, igs_majhong, sdwx, igs_m027_state, fruitpar, ROT0, "IGS", "Fruit Paradise (V214)", MACHINE_IS_SKELETON )
|
||||
GAME( 2002, sdwx, 0, igs_majhong, sdwx, igs_m027_state, sdwx, ROT0, "IGS", "Sheng Dan Wu Xian", MACHINE_IS_SKELETON ) // aka Christmas 5 Line?
|
||||
GAME( 200?, sddz, 0, igs_majhong, sdwx, igs_m027_state, sddz, ROT0, "IGS", "Super Dou Di Zhu", MACHINE_IS_SKELETON )
|
||||
|
@ -1571,3 +1571,50 @@ void fruitpar_decrypt(running_machine &machine)
|
||||
src[i] = x;
|
||||
}
|
||||
}
|
||||
|
||||
/*FIXME: This is incorrect. Was simply copied from fruitpar as an initial boilerplate code: */
|
||||
static const UINT8 amazonia_tab[0x100] = {
|
||||
0xe9, 0x0b, 0x95, 0x7e, 0x0d, 0x7d, 0x5c, 0x1e, 0x81, 0x0e, 0xa6, 0xd4, 0x8e, 0x90, 0xd8, 0x54,
|
||||
0x27, 0x65, 0x51, 0x08, 0x1c, 0xa0, 0x3b, 0x51, 0x83, 0x60, 0x93, 0x02, 0x64, 0x69, 0x77, 0x1a,
|
||||
0xa4, 0x03, 0xb0, 0xc2, 0x34, 0x18, 0x80, 0x87, 0x7a, 0x88, 0xad, 0xd9, 0xff, 0xd0, 0xce, 0xc4,
|
||||
0x5b, 0xdc, 0xd5, 0xed, 0x5e, 0x29, 0xdd, 0xcf, 0x80, 0x1f, 0x36, 0x38, 0x8b, 0xae, 0xae, 0xfe,
|
||||
0x87, 0x27, 0x22, 0x07, 0xe6, 0x5d, 0x46, 0x79, 0xf1, 0xfc, 0xb1, 0x3d, 0x72, 0x29, 0x2c, 0xba,
|
||||
0xa3, 0x5b, 0x3c, 0xcf, 0x57, 0x79, 0xed, 0x12, 0x67, 0x34, 0xe1, 0x48, 0x5f, 0xa7, 0x9a, 0x24,
|
||||
0x6a, 0x2e, 0x04, 0x44, 0x7b, 0x84, 0x46, 0x6a, 0xbd, 0x20, 0xca, 0xf7, 0x3e, 0xd1, 0x8b, 0xad,
|
||||
0xd7, 0x98, 0x9e, 0xa6, 0x5e, 0xc6, 0x04, 0x90, 0x0f, 0x57, 0xae, 0x2b, 0x38, 0x8d, 0xd2, 0x0c,
|
||||
0x25, 0xd1, 0x6d, 0x73, 0x4b, 0xc6, 0x19, 0xd3, 0xb8, 0xae, 0x11, 0x01, 0xba, 0x02, 0x82, 0x17,
|
||||
0xcf, 0x4d, 0x14, 0x6a, 0xcd, 0x4a, 0xb9, 0xc1, 0x52, 0x3e, 0xb5, 0xd8, 0x6f, 0x98, 0xee, 0x16,
|
||||
0x90, 0xc6, 0x76, 0x8a, 0xaf, 0x5a, 0x56, 0x2b, 0xb9, 0x5e, 0x9e, 0x51, 0x40, 0xf4, 0xaa, 0x6e,
|
||||
0x63, 0x32, 0xb6, 0x12, 0xfb, 0x3c, 0xa5, 0x1f, 0x07, 0xa3, 0x0d, 0x49, 0x5a, 0xfe, 0x88, 0xd1,
|
||||
0x83, 0xc7, 0x37, 0x82, 0xfd, 0x78, 0x97, 0xec, 0x98, 0xe6, 0x88, 0xe0, 0x27, 0xde, 0x9a, 0x2c,
|
||||
0x6b, 0xfd, 0x9b, 0x98, 0x40, 0xd5, 0x5f, 0x20, 0x06, 0x3e, 0xcf, 0x74, 0x52, 0xf9, 0x35, 0xae,
|
||||
0xd6, 0x8c, 0xc7, 0x53, 0x8e, 0x59, 0x71, 0x8c, 0x2d, 0x00, 0xe7, 0xa5, 0xc7, 0xf8, 0xeb, 0xc7,
|
||||
0xbf, 0x68, 0xdc, 0xf2, 0xf4, 0x4c, 0x80, 0x3e, 0x27, 0xc5, 0x13, 0x52, 0xb0, 0xc0, 0x90, 0x2d
|
||||
};
|
||||
|
||||
void amazonia_decrypt(running_machine &machine)
|
||||
{
|
||||
int i;
|
||||
UINT16 *src = (UINT16 *) machine.root_device().memregion("user1")->base();
|
||||
|
||||
int rom_size = 0x80000;
|
||||
|
||||
// not 100% verified
|
||||
for(i=0; i<rom_size/2; i++)
|
||||
{
|
||||
UINT16 x = src[i];
|
||||
|
||||
IGS27_CRYPT1
|
||||
// IGS27_CRYPT2
|
||||
// IGS27_CRYPT3
|
||||
IGS27_CRYPT4_ALT
|
||||
IGS27_CRYPT5
|
||||
IGS27_CRYPT6_ALT
|
||||
IGS27_CRYPT7
|
||||
IGS27_CRYPT8
|
||||
|
||||
x ^= amazonia_tab[(i>> 1) & 0xff] << 8;
|
||||
|
||||
src[i] = x;
|
||||
}
|
||||
}
|
||||
|
@ -36,3 +36,4 @@ void fearless_decrypt(running_machine &machine);
|
||||
void pgm_decrypt_pgm3in1(running_machine &machine);
|
||||
void slqz3_decrypt(running_machine &machine);
|
||||
void fruitpar_decrypt(running_machine &machine);
|
||||
void amazonia_decrypt(running_machine &machine);
|
||||
|
Loading…
Reference in New Issue
Block a user