Previous 199869 Revisions Next

r26179 Friday 15th November, 2013 at 18:33:14 UTC by David Haywood
added 'wave.u29' to thegladpcb set, this is used for the Japanese music and seems exclusive to the PCB version.  I guess all PCBs were Japan and all carts were non-Japan.

also at this point I think we can put it in the whastnew so as a formality..

NEW WORKING GAME
-------
The Gladiator / Road of the Sword / Shen Jian [David Haywood, rtw]
[src/mame/drivers]pgm.c
[src/mame/includes]pgm.h
[src/mame/machine]pgmprot_igs027a_type3.c

trunk/src/mame/drivers/pgm.c
r26178r26179
31953195
31963196   ROM_REGION( 0x4000, "prot", 0 ) /* ARM protection ASIC - internal rom */
31973197   ROM_LOAD( "thegladpcb_igs027a_execute_only_area", 0x0000, 0x00188, NO_DUMP )
3198   ROM_LOAD( "thegladpcb_igs027a.bin", 0x0188, 0x3e78, CRC(d7f06e2d) SHA1(9c3aca7a487f5329d84731e2c63d5ed591bf9d24) )    // from 'thegladpcb set'
3198   ROM_LOAD( "thegladpcb_igs027a_v100_japan.bin", 0x0188, 0x3e78, CRC(d7f06e2d) SHA1(9c3aca7a487f5329d84731e2c63d5ed591bf9d24) )    // from 'thegladpcb set'
31993199
32003200   ROM_REGION( 0x800000, "user1", 0 ) /* Protection Data (encrypted external ARM data, internal missing) */
32013201   ROM_LOAD( "v107.u26", 0x000000, 0x200000,  CRC(f7c61357) SHA1(52d31c464dfc83c5371b078cb6b73c0d0e0d57e3) )
r26178r26179
32243224   ROM_LOAD16_WORD_SWAP( "u6.rom",       0x100000, 0x080000, CRC(14c85212) SHA1(8d2489708e176a2c460498a13173be01f645b79e) )
32253225
32263226   ROM_REGION( 0x4000, "prot", 0 ) /* ARM protection ASIC - internal rom */
3227   ROM_LOAD( "theglada_igs027a.bin", 0x0000, 0x4000, NO_DUMP ) // this set clearly uses a different internal rom, the pointers in the external ROM are wrong for the v100 rom.
3227   ROM_LOAD( "thegladpcb_igs027a_execute_only_area", 0x0000, 0x00188, NO_DUMP )
3228   ROM_LOAD( "thegladpcb_igs027a_older.bin", 0x0188, 0x3e78, BAD_DUMP CRC(d7f06e2d) SHA1(9c3aca7a487f5329d84731e2c63d5ed591bf9d24) ) // this is wrong for this set, we patch it to work
32283229
32293230   ROM_REGION( 0x800000, "user1", 0 ) /* Protection Data (encrypted external ARM data, internal missing) */
32303231   ROM_LOAD( "u2.rom", 0x000000, 0x200000,  CRC(c7bcf2ae) SHA1(10bc012c83987f594d5375a51bc4be2e17568a81) )
r26178r26179
32553256
32563257   ROM_REGION( 0x4000, "prot", 0 ) /* ARM protection ASIC - internal rom */
32573258   ROM_LOAD( "thegladpcb_igs027a_execute_only_area", 0x0000, 0x00188, NO_DUMP )
3258   ROM_LOAD( "thegladpcb_igs027a.bin", 0x0188, 0x3e78, CRC(d7f06e2d) SHA1(9c3aca7a487f5329d84731e2c63d5ed591bf9d24) )    // from 'thegladpcb set'
3259   ROM_LOAD( "thegladpcb_igs027a_v100_japan.bin", 0x0188, 0x3e78, CRC(d7f06e2d) SHA1(9c3aca7a487f5329d84731e2c63d5ed591bf9d24) )    // from 'thegladpcb set'
32593260
32603261   ROM_REGION( 0x800000, "user1", 0 ) /* Protection Data (encrypted external ARM data, internal missing) */
32613262   ROM_LOAD( "v101.u26", 0x000000, 0x200000, CRC(23faec02) SHA1(9065d55c2a14e6889e735a452bbc32530056645a) )
r26178r26179
32793280ROM_END
32803281
32813282
3282
32833283ROM_START( thegladpcb )
32843284   ROM_REGION( 0x600000, "maincpu", 0 ) /* 68000 Code */
32853285   ROM_LOAD16_WORD_SWAP( "bios.42",    0x000000, 0x020000, CRC(517cf7a2) SHA1(f5720b29e3be6ec22be03a768618cb2a1aa4ade7) )
r26178r26179
32873287
32883288   ROM_REGION( 0x4000, "prot", 0 ) /* ARM protection ASIC - internal rom */
32893289   ROM_LOAD( "thegladpcb_igs027a_execute_only_area", 0x0000, 0x00188, NO_DUMP )
3290   ROM_LOAD( "thegladpcb_igs027a.bin", 0x0188, 0x3e78, CRC(d7f06e2d) SHA1(9c3aca7a487f5329d84731e2c63d5ed591bf9d24) )    // from 'thegladpcb set'
3290   ROM_LOAD( "thegladpcb_igs027a_v100_japan.bin", 0x0188, 0x3e78, CRC(d7f06e2d) SHA1(9c3aca7a487f5329d84731e2c63d5ed591bf9d24) )    // from 'thegladpcb set'
32913291
32923292   ROM_REGION( 0x800000, "user1", 0 ) /* Protection Data (encrypted external ARM data, internal missing) */
3293   ROM_LOAD( "igs.62", 0x000000, 0x200000, CRC(0f3f511e) SHA1(28dd8d27495cec86e968a3ea549c5b30513dbb6e) )
3293   ROM_LOAD( "igs_v100.62", 0x000000, 0x200000, CRC(0f3f511e) SHA1(28dd8d27495cec86e968a3ea549c5b30513dbb6e) )
32943294
32953295   ROM_REGION( 0xc00000, "tiles", 0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */
3296   PGM_VIDEO_BIOS
3297   ROM_LOAD( "t04601.u33",   0x180000, 0x800000, CRC(e5dab371) SHA1(2e3c93958eb0326b6b84b95c2168626f26bbac76) )
3296   ROM_LOAD( "pgm_t01s.u72", 0x000000, 0x200000, CRC(1a7123a0) SHA1(cc567f577bfbf45427b54d6695b11b74f2578af3) ) // standard PGM tx bios
3297   ROM_LOAD( "t04601.u71",   0x180000, 0x800000, CRC(e5dab371) SHA1(2e3c93958eb0326b6b84b95c2168626f26bbac76) )
32983298
32993299   ROM_REGION( 0x1800000, "sprcol", 0 ) /* Sprite Colour Data */
3300   ROM_LOAD( "a04601.u2",    0x0000000, 0x0800000,  CRC(d9b2e004) SHA1(8e1882b800fe9f12d7d49303e7417ba5b6f8ef85) )
3301   ROM_LOAD( "a04602.u4",    0x0800000, 0x0800000,  CRC(14f22308) SHA1(7fad54704e8c97eab723f53dfb50fb3e7bb606d2) )
3302   ROM_LOAD( "a04603.u6",    0x1000000, 0x0800000,  CRC(8f621e17) SHA1(b0f87f378e0115d0c95017ca0f1b0d508827a7c6) )
3300   ROM_LOAD( "a04601.u30",    0x0000000, 0x0800000,  CRC(d9b2e004) SHA1(8e1882b800fe9f12d7d49303e7417ba5b6f8ef85) )
3301   ROM_LOAD( "a04602.u31",    0x0800000, 0x0800000,  CRC(14f22308) SHA1(7fad54704e8c97eab723f53dfb50fb3e7bb606d2) )
3302   ROM_LOAD( "a04603.u32",    0x1000000, 0x0800000,  CRC(8f621e17) SHA1(b0f87f378e0115d0c95017ca0f1b0d508827a7c6) )
33033303
33043304   ROM_REGION( 0x1000000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */
3305   ROM_LOAD( "b04601.u11",   0x0000000, 0x0800000, CRC(ee72bccf) SHA1(73c25fe659f6c903447066e4ef83d2f580449d76) )
3306   ROM_LOAD( "b04602.u12",   0x0800000, 0x0400000, CRC(7dba9c38) SHA1(a03d509274e8f6a500a7ebe2da5aab8bed4e7f2f) )
3305   ROM_LOAD( "b04601.u40",   0x0000000, 0x0800000, CRC(ee72bccf) SHA1(73c25fe659f6c903447066e4ef83d2f580449d76) )
3306   ROM_LOAD( "b04602.u41",   0x0800000, 0x0400000, CRC(7dba9c38) SHA1(a03d509274e8f6a500a7ebe2da5aab8bed4e7f2f) )
33073307
33083308   ROM_REGION( 0x1000000, "ics", 0 ) /* Samples - (8 bit mono 11025Hz) - */
3309   PGM_AUDIO_BIOS
3310   ROM_LOAD( "w04601.u1",    0x400000, 0x800000, CRC(5f15ddb3) SHA1(c38dcef8e06802a84e42a7fc9fa505475fc3ac65) )
3309   ROM_LOAD( "pgm_m01s.u4", 0x000000, 0x200000, CRC(45ae7159) SHA1(d3ed3ff3464557fd0df6b069b2e431528b0ebfa8) ) // standard PGM sample bios
3310   ROM_LOAD( "w04601.u8",    0x400000, 0x800000, CRC(5f15ddb3) SHA1(c38dcef8e06802a84e42a7fc9fa505475fc3ac65) )
3311   ROM_LOAD( "igs29.bin",    0xc00000, 0x200000, CRC(51acb395) SHA1(65a2ecd3de2ff782f2aa0f0f905f9b18323aea64) ) // extra ROM on the PCB version for the Japanese music
33113312ROM_END
33123313
33133314ROM_START( oldsplus )
r26178r26179
41594160GAME( 2003, theglad,      pgm,       pgm_arm_type3,     theglad, pgm_arm_type3_state,    theglad,    ROT0,   "IGS", "The Gladiator / Road of the Sword / Shen Jian (M68k label V101) (ARM label V107, ROM 06/06/03 SHEN JIAN V107)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) // ARM time: 16:17:27
41604161GAME( 2003, theglad101,   theglad,   pgm_arm_type3,     theglad, pgm_arm_type3_state,    theglad,    ROT0,   "IGS", "The Gladiator / Road of the Sword / Shen Jian (M68k label V100) (ARM label V101, ROM 03/13/03 SHEN JIAN)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) // ARM time: 14:06:44
41614162// the v100 68k ROM on this is older than the v101 set, this set also uses a different internal ROM to everything else, must be a very early release, maybe pre v100 proto with v100 strings?
4162GAME( 2003, theglad100,   theglad,   pgm_arm_type3,     theglad, pgm_arm_type3_state,    theglad,    ROT0,   "IGS", "The Gladiator / Road of the Sword / Shen Jian (M68k label V100) (ARM label V100, ROM 01/16/03 SHEN JIAN)", GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) /* need internal rom of IGS027A */ // ARM time: 10:39:25
4163// newer than ARM V100 Cart, older than ARM V101 Cart, same 68k rom as V101 Cart
4164GAME( 2003, thegladpcb,   theglad,   pgm_arm_type3,     theglad, pgm_arm_type3_state,    theglad,    ROT0,   "IGS", "The Gladiator / Road of the Sword / Shen Jian (M68k label V100) (ARM label V100, ROM 02/25/03 SHEN JIAN) (JAMMA PCB)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )// ARM time: 16:32:21
4163GAME( 2003, theglad100,   theglad,   pgm_arm_type3,     theglad, pgm_arm_type3_state,    theglada,   ROT0,   "IGS", "The Gladiator / Road of the Sword / Shen Jian (M68k label V100) (ARM label V100, ROM 01/16/03 SHEN JIAN)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) /* need correct internal rom of IGS027A - we currently patch the one we have */ // ARM time: 10:39:25
4164// newer than ARM V100 Cart, older than ARM V101 Cart, same 68k rom as V101 Cart.
4165GAME( 2003, thegladpcb,   theglad,   pgm_arm_type3,     pgm,    pgm_arm_type3_state,    theglad,    ROT0,   "IGS", "The Gladiator / Road of the Sword / Shen Jian (M68k label V100) (ARM label V100, ROM 02/25/03 SHEN JIAN) (Japan, JAMMA PCB)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )// ARM time: 16:32:21
41654166
41664167
41674168/* -----------------------------------------------------------------------------------------------------------------------
trunk/src/mame/machine/pgmprot_igs027a_type3.c
r26178r26179
154154   int base = -1;
155155
156156   if (!strcmp(machine().system().name, "theglad")) base = 0x3316;
157   if (!strcmp(machine().system().name, "theglad100")) base = 0x3316;
157158   if (!strcmp(machine().system().name, "theglad101")) base = 0x3316;
158   if (!strcmp(machine().system().name, "thegladpcb")) base = 0x3316;
159159
160160   if (base != -1)
161161   {
r26178r26179
478478   machine().device("prot")->memory().space(AS_PROGRAM).install_read_handler(0x1000000c, 0x1000000f, read32_delegate(FUNC(pgm_arm_type3_state::theglad_speedup_r),this));
479479}
480480
481DRIVER_INIT_MEMBER(pgm_arm_type3_state, theglada)
482{
483   DRIVER_INIT_CALL(theglad);
484
485   // we don't have the correct internal ROM for this version, so insead we use the one we have and patch the jump table in the external ROM
486   UINT32 subroutine_addresses[] =
487   {
488      0x00FC, 0x00E8, 0x0110, 0x0150, 0x0194, 0x06C8, 0x071C, 0x0728,
489      0x0734, 0x0740, 0x0784, 0x0794, 0x07FC, 0x0840, 0x086C, 0x0988,
490      0x0A54, 0x0AA8, 0x0AD4, 0x0EB8, 0x0EF8, 0x0F2C, 0x0F3C, 0x0F78,
491      0x0FA8, 0x0FD8, 0x1028, 0x1038, 0x1048, 0x1058, 0x1068, 0x1070,
492      0x1090, 0x10B0, 0x10D4, 0x1100, 0x113C, 0x1198, 0x1234, 0x1258,
493      0x127C, 0x12A8, 0x12E4, 0x1368, 0x142C, 0x0B10, 0x0B54, 0x0B74,
494      0x0C08, 0x0C90, 0x0D18, 0x0D90, 0x1570, 0x1600, 0x1640, 0x1694,
495      0x1730, 0x176C, 0x17AC, 0x17D8, 0x18C4, 0x18E0, 0x1904, 0x1930,
496      0x19D8, 0x1A38, 0x1950, 0x1970, 0x1990, 0x19B8, 0x19C8, 0x1A9C,
497      0x1AC4, 0x1AE8, 0x1B20, 0x1B48, 0x1B70, 0x1B8C, 0x1BB4, 0x1BD8,
498      0x1BFC, 0x1C10, 0x1C24, 0x1CA0, 0x1D5C, 0x1D7C, 0x1D8C, 0x1DAC,
499      0x1DCC, 0x1DE0, 0x1DF4, 0x1E1C, 0x1E2C, 0x1E60, 0x1E94, 0x1EA4,
500      0x1ECC, 0x1ED8, 0x1EE4, 0x1F14, 0x1F44, 0x1FB4, 0x1FC4, 0x2040,
501      0x20BC, 0x2140, 0x21C4, 0x2240, 0x22BC, 0x2340, 0x23C4, 0x23D0,
502      0x2400, 0x2430, 0x244C, 0x245C, 0x246C, 0x2FCC, 0x3000, 0x3028,
503      0x3050, 0x30A4, 0x30F8, 0x3120, 0x249C, 0x24C0, 0x27BC, 0x2B40,
504      0x2BF4, 0x2CD8, 0x2E2C
505   };
506   UINT16 *extprot = (UINT16 *)memregion("user1")->base();
507   int base = 0x82078;
508   /*
509   0x00C8,0x00B4,0x00DC,0x011C,0x0160,0x02DC,0x0330,0x033C,
510   0x0348,0x0354,0x0398,0x03A8,0x0410,0x0454,0x0480,0x059C,
511   0x0668,0x06BC,0x06E8,0x0ACC,0x0B0C,0x0B40,0x0B50,0x0B8C,
512   0x0BBC,0x0BEC,0x0C3C,0x0C4C,0x0C5C,0x0C6C,0x0C7C,0x0C84,
513   0x0CA4,0x0CC4,0x0CE8,0x0D14,0x0D50,0x0DAC,0x0E48,0x0E6C,
514   0x0E90,0x0EBC,0x0EF8,0x0F7C,0x1040,0x0724,0x0768,0x0788,
515   0x081C,0x08A4,0x092C,0x09A4,0x1184,0x1214,0x1254,0x12A8,
516   0x1344,0x1380,0x13C0,0x13EC,0x14D8,0x14F4,0x1518,0x1544,
517   0x15EC,0x164C,0x1564,0x1584,0x15A4,0x15CC,0x15DC,0x16B0,
518   0x16D8,0x16FC,0x1734,0x175C,0x1784,0x17A0,0x17C8,0x17EC,
519   0x1810,0x1824,0x1838,0x18B4,0x1970,0x1990,0x19A0,0x19C0,
520   0x19E0,0x19F4,0x1A08,0x1A30,0x1A40,0x1A74,0x1AA8,0x1AB8,
521   0x1AE0,0x1AEC,0x1AF8,0x1B28,0x1B58,0x1BC8,0x1BD8,0x1C54,
522   0x1CD0,0x1D54,0x1DD8,0x1E54,0x1ED0,0x1F54,0x1FD8,0x1FE4,
523   0x2014,0x2044,0x2060,0x2070,0x2080,0x2BE0,0x2C14,0x2C3C,
524   0x2C64,0x2CB8,0x2D0C,0x2D34,0x20B0,0x20D4,0x23D0,0x2754,
525   0x2808,0x28EC,0x2A40
526   */
527
528
529   for (int i = 0; i < 131; i++)
530   {
531//      UINT32 addr = extprot[(base/2)] | (extprot[(base/2) + 1] << 16);
532      extprot[(base / 2)] = subroutine_addresses[i];
533
534      base += 4;
535//      printf("%04x (%08x)\n", subroutine_addresses[i], addr );
536   }
537
538   
539}
540
481541INPUT_PORTS_START( theglad )
482542   PORT_INCLUDE ( pgm )
483543
484544   PORT_START("RegionHack")    /* Region - actually supplied by protection device */
485   PORT_CONFNAME( 0x00ff, 0x0006, DEF_STR( Region ) ) // oddly the game has no music when set to Japan, might be an emulation bug.. hack it to another region until we figure that out
545   PORT_CONFNAME( 0x00ff, 0x0006, DEF_STR( Region ) )
486546   PORT_CONFSETTING(      0x0000, DEF_STR( China ) )
487547   PORT_CONFSETTING(      0x0001, DEF_STR( Taiwan ) )
488   PORT_CONFSETTING(      0x0002, DEF_STR( Japan ) )
548   //PORT_CONFSETTING(      0x0002, DEF_STR( Japan ) ) // it doesn't appear that carts of the Japanese version were released, the PCB has an extra sample ROM used in Japanese mode for the music
489549   PORT_CONFSETTING(      0x0003, DEF_STR( Korea ) )
490550   PORT_CONFSETTING(      0x0004, DEF_STR( Hong_Kong ) )
491551   PORT_CONFSETTING(      0x0005, "Spanish Territories" )
trunk/src/mame/includes/pgm.h
r26178r26179
8080   DECLARE_WRITE8_MEMBER(z80_l3_w);
8181   DECLARE_WRITE16_MEMBER(pgm_tx_videoram_w);
8282   DECLARE_WRITE16_MEMBER(pgm_bg_videoram_w);
83   DECLARE_DRIVER_INIT(ket);
84   DECLARE_DRIVER_INIT(killbld);
83   
8584   DECLARE_DRIVER_INIT(pgm);
86   DECLARE_DRIVER_INIT(kovsh);
87   DECLARE_DRIVER_INIT(killbldp);
88   DECLARE_DRIVER_INIT(ddp2);
89   DECLARE_DRIVER_INIT(drgw2j);
90   DECLARE_DRIVER_INIT(kov2);
91   DECLARE_DRIVER_INIT(puzzli2);
92   DECLARE_DRIVER_INIT(dw2001);
93   DECLARE_DRIVER_INIT(martmast);
94   DECLARE_DRIVER_INIT(kovlsqh2);
95   DECLARE_DRIVER_INIT(espgal);
96   DECLARE_DRIVER_INIT(happy6);
97   DECLARE_DRIVER_INIT(oldsplus);
98   DECLARE_DRIVER_INIT(kovboot);
99   DECLARE_DRIVER_INIT(kovshp);
100   DECLARE_DRIVER_INIT(kovshxas);
101   DECLARE_DRIVER_INIT(theglad);
102   DECLARE_DRIVER_INIT(kov2p);
103   DECLARE_DRIVER_INIT(olds);
104   DECLARE_DRIVER_INIT(svg);
105   DECLARE_DRIVER_INIT(photoy2k);
106   DECLARE_DRIVER_INIT(svgpcb);
107   DECLARE_DRIVER_INIT(dmnfrnt);
108   DECLARE_DRIVER_INIT(dw2v100x);
109   DECLARE_DRIVER_INIT(kovqhsgs);
110   DECLARE_DRIVER_INIT(ddp3);
111   DECLARE_DRIVER_INIT(drgw2c);
112   DECLARE_DRIVER_INIT(dwpc);
113   DECLARE_DRIVER_INIT(kov);
114   DECLARE_DRIVER_INIT(py2k2);
115   DECLARE_DRIVER_INIT(drgw2);
116   DECLARE_DRIVER_INIT(drgw3);
117   DECLARE_DRIVER_INIT(orlegend);
118   DECLARE_DRIVER_INIT(pstar);
85
11986   TILE_GET_INFO_MEMBER(get_pgm_tx_tilemap_tile_info);
12087   TILE_GET_INFO_MEMBER(get_pgm_bg_tilemap_tile_info);
12188   DECLARE_VIDEO_START(pgm);
r26178r26179
359326   optional_device<cpu_device> m_prot;
360327
361328   DECLARE_DRIVER_INIT(theglad);
329   DECLARE_DRIVER_INIT(theglada);
362330   DECLARE_DRIVER_INIT(svg);
363331   DECLARE_DRIVER_INIT(svgpcb);
364332   DECLARE_DRIVER_INIT(killbldp);

Previous 199869 Revisions Next


© 1997-2024 The MAME Team