new nw: IGS 027A: Amazonia King V104BR

This commit is contained in:
Felipe Corrêa da Silva Sanches 2015-09-10 14:26:38 -03:00
parent a392cdbdb9
commit 33001fcae2
4 changed files with 89 additions and 0 deletions

View File

@ -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

View File

@ -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 )

View File

@ -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;
}
}

View File

@ -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);