From 33001fcae20260c7fbc57ff53e746100a454622c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felipe=20Corr=C3=AAa=20da=20Silva=20Sanches?= Date: Thu, 10 Sep 2015 14:26:38 -0300 Subject: [PATCH] new nw: IGS 027A: Amazonia King V104BR --- src/mame/arcade.lst | 1 + src/mame/drivers/igs_m027.c | 40 +++++++++++++++++++++++++++++++ src/mame/machine/pgmcrypt.c | 47 +++++++++++++++++++++++++++++++++++++ src/mame/machine/pgmcrypt.h | 1 + 4 files changed, 89 insertions(+) diff --git a/src/mame/arcade.lst b/src/mame/arcade.lst index 99bd7c68c2d..6a28bcf75e2 100644 --- a/src/mame/arcade.lst +++ b/src/mame/arcade.lst @@ -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 diff --git a/src/mame/drivers/igs_m027.c b/src/mame/drivers/igs_m027.c index fbaaee1b032..053e98a4a92 100644 --- a/src/mame/drivers/igs_m027.c +++ b/src/mame/drivers/igs_m027.c @@ -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 ) diff --git a/src/mame/machine/pgmcrypt.c b/src/mame/machine/pgmcrypt.c index c897e369f97..2607b94f901 100644 --- a/src/mame/machine/pgmcrypt.c +++ b/src/mame/machine/pgmcrypt.c @@ -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> 1) & 0xff] << 8; + + src[i] = x; + } +} diff --git a/src/mame/machine/pgmcrypt.h b/src/mame/machine/pgmcrypt.h index a2351b5309c..49b7839a8bc 100644 --- a/src/mame/machine/pgmcrypt.h +++ b/src/mame/machine/pgmcrypt.h @@ -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);