Previous 199869 Revisions Next

r19712 Friday 21st December, 2012 at 01:47:21 UTC by David Haywood
pgm3in1 decryption [iq_132]
[src/mame/drivers]pgm.c
[src/mame/includes]pgm.h
[src/mame/machine]pgmcrypt.c pgmcrypt.h pgmprot1.c

trunk/src/mame/includes/pgm.h
r19711r19712
201201   DECLARE_DRIVER_INIT(espgal);
202202   DECLARE_DRIVER_INIT(puzzli2);
203203   DECLARE_DRIVER_INIT(py2k2);
204   DECLARE_DRIVER_INIT(pgm3in1);
204205   DECLARE_DRIVER_INIT(pstar);
205206   DECLARE_DRIVER_INIT(kov);
206207   DECLARE_DRIVER_INIT(kovboot);
trunk/src/mame/drivers/pgm.c
r19711r19712
17971797   ROM_LOAD( "pgm_a1102.u6",    0x1000000, 0x0800000, CRC(6da7c143) SHA1(9408ba7722bfc8013f851aadea5e2819f5263129) ) // == y2k2_a1102.u8
17981798   ROM_LOAD( "pgm_a1103.u7",    0x1800000, 0x0800000, CRC(0ebebfdc) SHA1(4faad7f97c7e734f179ec934a37e75d8d6adccf4) ) // == y2k2_a1103.u9
17991799   ROM_LOAD( "ext_bit_cg.u20",  0x2000000, 0x0400000, CRC(fe314754) SHA1(ae3e8bbdce852a3fa39806a5221c053dee5abfd4) )
1800
1801   ROM_REGION( 0x1800000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */
1800   
1801   ROM_REGION( 0x1000000, "sprmask", ROMREGION_ERASE00 ) /* Sprite Masks + Colour Indexes */
18021802   ROM_LOAD( "pgm_b1100.u8",    0x0000000, 0x0800000, CRC(fa53d6f6) SHA1(c2da55f4b7e721fa1c63bd7f9528f261643164e8) ) // == y2k2_b1100.u4
18031803   ROM_LOAD( "pgm_b1101.u9",    0x0800000, 0x0800000, CRC(001e4c81) SHA1(21119055f8fd7f831529e73ff9c97bca3987a1dc) ) // == y2k2_b1101.u5
1804   ROM_LOAD( "ext_bit_map.u21", 0x1000000, 0x0200000, CRC(fe31dca6) SHA1(825bab7342c944794514fc7fe3e41779de3b5cd4) )
1804   ROM_LOAD( "ext_bit_map.u21", 0x0f00000, 0x0100000, CRC(fe31dca6) SHA1(825bab7342c944794514fc7fe3e41779de3b5cd4) ) // yes this loads over the empty part of u9
1805   ROM_IGNORE(0x0100000) // the 2nd half is empty
18051806
18061807   ROM_REGION( 0xe80000, "ics", 0 ) /* Samples - (8 bit mono 11025Hz) - */
18071808   PGM_AUDIO_BIOS
18081809   ROM_LOAD( "pgm_m1100.u17",    0x400000, 0x200000, CRC(fb1515f8) SHA1(90e5e5bfdac9a460445bf224952e4a536888dc1b) ) // == y2k2_m1100.u3
1809   ROM_LOAD( "u16.u16",          0x600000, 0x800000, CRC(714c33e5) SHA1(5478d5247349cdfb5f835171615d6ca2e5689140) )
1810   ROM_LOAD( "u16.u16",          0x600000, 0x800000, CRC(714c33e5) SHA1(5478d5247349cdfb5f835171615d6ca2e5689140) ) // check loading
18101811ROM_END
18111812
18121813
r19711r19712
39193920GAME( 1999, puzlstar,     pgm,       pgm_arm_type1_sim,    pstar, pgm_arm_type1_state,    pstar,      ROT0,   "IGS", "Puzzle Star (ver. 100MG)", GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) /* need internal rom of IGS027A */
39203921
39213922GAME( 2001, py2k2,        pgm,       pgm_arm_type1_sim,    py2k2, pgm_arm_type1_state,    py2k2,      ROT0,   "IGS", "Photo Y2K 2", GAME_NOT_WORKING )  /* need internal rom of IGS027A */
3922GAME( 2004, pgm3in1,      pgm,       pgm_arm_type1_sim,    py2k2, pgm_arm_type1_state,    py2k2,      ROT0,   "IGS", "Photo Y2K 2 (3-in-1)", GAME_NOT_WORKING )  /* need internal rom of IGS027A */
3923GAME( 2004, pgm3in1,      pgm,       pgm_arm_type1_sim,    py2k2, pgm_arm_type1_state,    pgm3in1,      ROT0,   "IGS", "Photo Y2K 2 (Flash 3-in-1)", GAME_NOT_WORKING )  /* need internal rom of IGS027A */
39233924
39243925GAME( 1999, puzzli2,      pgm,       pgm_arm_type1_sim,  puzzli2, pgm_arm_type1_state,    puzzli2,    ROT0,   "IGS", "Puzzli 2 (ver. 100)", GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // ROM label is V100
39253926GAME( 2001, puzzli2s,     puzzli2,   pgm_arm_type1_sim,  puzzli2, pgm_arm_type1_state,    puzzli2,    ROT0,   "IGS", "Puzzli 2 Super (ver. 200)", GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
trunk/src/mame/machine/pgmcrypt.c
r19711r19712
14571457      src[i] = x;
14581458   }
14591459}
1460
1461
1462static unsigned char pgm3in1_tab[256] = {
1463   0x49, 0x47, 0x53, 0x30, 0x30, 0x31, 0x31, 0x72, 0x64, 0x31, 0x30, 0x34, 0x30, 0x36, 0x33, 0x30,
1464   0xc2, 0xbe, 0xde, 0x8b, 0x80, 0x8f, 0x04, 0xbb, 0xd2, 0xd6, 0x11, 0x4a, 0x54, 0xa9, 0x8d, 0x27,
1465   0xf1, 0x74, 0x88, 0xc2, 0xa3, 0xdd, 0x73, 0x97, 0x6c, 0xf8, 0x41, 0xf9, 0x95, 0xac, 0xbe, 0x20,
1466   0x26, 0x65, 0x2f, 0x76, 0xa6, 0xfc, 0x2b, 0x1f, 0x15, 0xe3, 0xb9, 0xc7, 0x27, 0x95, 0xab, 0xaf,
1467   0xc2, 0x3d, 0x3a, 0xfb, 0xba, 0xa5, 0xe3, 0x35, 0xcb, 0x62, 0x81, 0x26, 0xd7, 0x3e, 0xac, 0xd7,
1468   0x62, 0xe6, 0x51, 0xe2, 0x4b, 0xd5, 0x92, 0xfe, 0xcd, 0x80, 0xe0, 0xca, 0xb6, 0xc3, 0x57, 0xda,
1469   0xe6, 0x8b, 0x59, 0x00, 0x0a, 0xc5, 0x6f, 0xdc, 0x9a, 0x87, 0x5c, 0xa6, 0x11, 0x7e, 0x83, 0x3b,
1470   0x6c, 0x98, 0x7b, 0x66, 0xe6, 0xf2, 0xf0, 0x71, 0xf2, 0x04, 0xbd, 0xed, 0x78, 0x0b, 0x47, 0xbd,
1471   0x54, 0xb6, 0x1d, 0x69, 0x0d, 0x15, 0xcd, 0xa2, 0xd2, 0xc0, 0x09, 0x11, 0xbb, 0x44, 0xfb, 0x64,
1472   0x3d, 0xd3, 0xe5, 0x9b, 0xee, 0x2b, 0xfd, 0x90, 0x7b, 0xc6, 0x88, 0xc5, 0xe7, 0x44, 0x35, 0x73,
1473   0x06, 0x17, 0xbc, 0xcf, 0x39, 0x6e, 0xb7, 0x9f, 0x6b, 0x63, 0xc1, 0xfe, 0x4c, 0x68, 0xcd, 0x6c,
1474   0xcd, 0xee, 0xc8, 0x19, 0xdc, 0x58, 0x72, 0x72, 0x62, 0x20, 0x7a, 0xed, 0x79, 0x48, 0xd8, 0x12,
1475   0xf2, 0x04, 0x70, 0xca, 0x07, 0xa6, 0xe5, 0xec, 0x5d, 0xc9, 0xba, 0x05, 0x3e, 0xc2, 0xb0, 0x68,
1476   0x14, 0x43, 0x5b, 0x77, 0x28, 0x51, 0x06, 0x30, 0x9d, 0x69, 0xc9, 0xfb, 0xa8, 0xee, 0xe9, 0xb2,
1477   0x11, 0xd7, 0x70, 0xf2, 0xef, 0x96, 0x0d, 0xa1, 0xa0, 0x4b, 0x2e, 0xc0, 0x07, 0x2a, 0x5c, 0x72,
1478   0x09, 0x29, 0xd6, 0x4d, 0x4a, 0xef, 0x71, 0xe1, 0x25, 0xf9, 0xb0, 0x87, 0xea, 0x0f, 0x1f, 0x6c,
1479};
1480
1481void pgm_decrypt_pgm3in1(running_machine &machine)
1482{
1483   int i;
1484   UINT16 *src = (UINT16 *) (machine.root_device().memregion("maincpu")->base()+0x100000);
1485
1486   int rom_size = 0x400000;
1487
1488   for(i=0; i<rom_size/2; i++)
1489   {
1490      UINT16 x = src[i];
1491         
1492      IGS27_CRYPT1
1493      IGS27_CRYPT2
1494      IGS27_CRYPT3_ALT
1495      IGS27_CRYPT4_ALT
1496      IGS27_CRYPT5
1497      IGS27_CRYPT6
1498      IGS27_CRYPT7
1499      IGS27_CRYPT8_ALT
1500
1501      x ^= pgm3in1_tab[i & 0xff] << 8;
1502
1503      src[i] = x;
1504   }
1505}
1506
trunk/src/mame/machine/pgmcrypt.h
r19711r19712
3131void mgfx_decrypt(running_machine &machine);
3232void lhzb4_decrypt(running_machine &machine);
3333void fearless_decrypt(running_machine &machine);
34void pgm_decrypt_pgm3in1(running_machine &machine);
35
trunk/src/mame/machine/pgmprot1.c
r19711r19712
14531453   machine().device("maincpu")->memory().space(AS_PROGRAM).install_legacy_read_handler(0x4f0000, 0x4f003f, FUNC(pgm_arm7_type1_sim_protram_r));
14541454}
14551455
1456DRIVER_INIT_MEMBER(pgm_arm_type1_state,pgm3in1)
1457{
1458   pgm_basic_init(machine());
1459   pgm_decrypt_pgm3in1(machine());
1460   arm_sim_handler = command_handler_py2k2;
1461   machine().device("maincpu")->memory().space(AS_PROGRAM).install_legacy_readwrite_handler(0x500000, 0x500005, FUNC(pgm_arm7_type1_sim_r), FUNC(pgm_arm7_type1_sim_w));
1462   machine().device("maincpu")->memory().space(AS_PROGRAM).install_legacy_read_handler(0x4f0000, 0x4f003f, FUNC(pgm_arm7_type1_sim_protram_r));
1463   m_irq4_disabled = 1; // // doesn't like this irq??
1464}
1465
14561466DRIVER_INIT_MEMBER(pgm_arm_type1_state,pstar)
14571467{
14581468   pgm_basic_init(machine());

Previous 199869 Revisions Next


© 1997-2024 The MAME Team