Previous 199869 Revisions Next

r25484 Wednesday 2nd October, 2013 at 00:53:58 UTC by David Haywood
actually add the thing the new comments reference... (nw)
[src/mame]mame.lst
[src/mame/drivers]cps3.c
[src/mame/includes]cps3.h

trunk/src/mame/drivers/cps3.c
r25483r25484
445445
4464461. Remove the custom QFP144 CPU and replace it with a standard Hitachi HD6417095 SH-2 CPU
4474472. Remove the 29F400 TSOP48 flashROM and re-program it with the decrypted and modified main program ROM from set
448   'cps3nobatt' in MAME. A 28F400 SOP44 flashROM can be used instead and mounted to the back side of the security cart
448   'cps3boot' in MAME. A 28F400 SOP44 flashROM can be used instead and mounted to the back side of the security cart
449449   PCB. Do not mount both SOP44 and TSOP48 flashROMs, use only one TSOP48 flashROM or one SOP44 flashROM.
4504503. Power on the PCB and using the built-in cart flashROM menu re-program the SIMMs for your chosen game using the CD
451   from set 'cps3nobatt' in MAME.
451   from set 'cps3boot' in MAME.
4524524. That is all. Enjoy your working PCB.
453453 
454454*/
r25483r25484
712712
713713UINT32 cps3_state::cps3_mask(UINT32 address, UINT32 key1, UINT32 key2)
714714{
715   // ignore all encryption
716   if (m_altEncryption == 2)
717      return 0;
718
715719   UINT16 val;
716720
717721   address ^= key1;
r25483r25484
760764#endif
761765}
762766
767void cps3_state::init_common(void)
768{
769   /* just some NOPs for the game to execute if it crashes and starts executing unmapped addresses
770    - this prevents MAME from crashing */
771   m_nops = auto_alloc(machine(), UINT32);
772   m_nops[0] = 0x00090009;
763773
764void cps3_state::init_common(UINT32 key1, UINT32 key2, int altEncryption)
774   // flash roms
775   astring tempstr;
776   for (int simmnum = 0; simmnum < 7; simmnum++)
777      for (int chipnum = 0; chipnum < 8; chipnum++)
778         m_simm[simmnum][chipnum] = machine().device<fujitsu_29f016a_device>(tempstr.format("simm%d.%d", simmnum + 1, chipnum));
779
780   m_eeprom = auto_alloc_array(machine(), UINT32, 0x400/4);
781   machine().device<nvram_device>("eeprom")->set_base(m_eeprom, 0x400);
782}
783
784
785void cps3_state::init_crypt(UINT32 key1, UINT32 key2, int altEncryption)
765786{
766787   m_key1 = key1;
767788   m_key2 = key2;
r25483r25484
780801   cps3_decrypt_bios();
781802   m_decrypted_gamerom = auto_alloc_array(machine(), UINT32, 0x1000000/4);
782803
783   /* just some NOPs for the game to execute if it crashes and starts executing unmapped addresses
784    - this prevents MAME from crashing */
785   m_nops = auto_alloc(machine(), UINT32);
786   m_nops[0] = 0x00090009;
787804
788
789805   m_0xc0000000_ram_decrypted = auto_alloc_array(machine(), UINT32, 0x400/4);
790806
791807   address_space &main = m_maincpu->space(AS_PROGRAM);
792808   main.set_direct_update_handler(direct_update_delegate(FUNC(cps3_state::cps3_direct_handler), this));
793809
794   // flash roms
795   astring tempstr;
796   for (int simmnum = 0; simmnum < 7; simmnum++)
797      for (int chipnum = 0; chipnum < 8; chipnum++)
798         m_simm[simmnum][chipnum] = machine().device<fujitsu_29f016a_device>(tempstr.format("simm%d.%d", simmnum + 1, chipnum));
810   init_common();
799811
800   m_eeprom = auto_alloc_array(machine(), UINT32, 0x400/4);
801   machine().device<nvram_device>("eeprom")->set_base(m_eeprom, 0x400);
802812}
803813
804DRIVER_INIT_MEMBER(cps3_state,redearth)  { init_common(0x9e300ab1, 0xa175b82c, 0); }
805DRIVER_INIT_MEMBER(cps3_state,sfiii)     { init_common(0xb5fe053e, 0xfc03925a, 0); }
806DRIVER_INIT_MEMBER(cps3_state,sfiii2)    { init_common(0x00000000, 0x00000000, 1); }
807DRIVER_INIT_MEMBER(cps3_state,jojo)      { init_common(0x02203ee3, 0x01301972, 0); }
808DRIVER_INIT_MEMBER(cps3_state,sfiii3)    { init_common(0xa55432b4, 0x0c129981, 0); }
809DRIVER_INIT_MEMBER(cps3_state,jojoba)    { init_common(0x23323ee3, 0x03021972, 0); }
814DRIVER_INIT_MEMBER(cps3_state,redearth)  { init_crypt(0x9e300ab1, 0xa175b82c, 0); }
815DRIVER_INIT_MEMBER(cps3_state,sfiii)     { init_crypt(0xb5fe053e, 0xfc03925a, 0); }
816DRIVER_INIT_MEMBER(cps3_state,sfiii2)    { init_crypt(0x00000000, 0x00000000, 1); }
817DRIVER_INIT_MEMBER(cps3_state,jojo)      { init_crypt(0x02203ee3, 0x01301972, 0); }
818DRIVER_INIT_MEMBER(cps3_state,sfiii3)    { init_crypt(0xa55432b4, 0x0c129981, 0); }
819DRIVER_INIT_MEMBER(cps3_state,jojoba)    { init_crypt(0x23323ee3, 0x03021972, 0); }
820DRIVER_INIT_MEMBER(cps3_state,cps3boot)  { init_crypt(-1,-1,2); }
810821
811822
812823
r25483r25484
28082819ROM_END
28092820
28102821
2822
2823
2824
28112825/* NO CD sets - use NO CD BIOS roms - don't require the CD image to boot */
28122826
28132827ROM_START( sfiiin )
r25483r25484
36013615   ROM_LOAD( "jojoba-simm5.7",  0x00000, 0x200000, CRC(8c8be520) SHA1(c461f3f76a83592b36b29afb316679a7c8972404) )
36023616ROM_END
36033617
3618/* Bootlegs for use with modified security carts */
36043619
3620ROM_START( cps3boot )
3621   ROM_REGION32_BE( 0x080000, "user1", 0 ) /* bios region */
3622   ROM_LOAD( "no-battery_bios_29f400.u2", 0x000000, 0x080000, CRC(cb9bd5b0) SHA1(ea7ecb3deb69f5307a62d8f0d7d8e68d49013d07))
3623
3624   DISK_REGION( "scsi:cdrom" )
3625   DISK_IMAGE_READONLY( "no-battery_multi-game_bootleg_cd_for_hd6417095_sh2", 0, SHA1(123f2fcb0f3dd3d6b859e82a51d0127e46763776) )
3626ROM_END
3627
36053628/*****************************************************************************************
36063629  CPS3 game region / special flag information
36073630*****************************************************************************************/
r25483r25484
38153838GAME( 1999, jojobar1,  jojoba,   jojoba,   cps3_jojo, cps3_state, jojoba,   ROT0, "Capcom", "JoJo no Kimyou na Bouken: Mirai e no Isan (Japan 990913)", GAME_IMPERFECT_GRAPHICS )
38163839GAME( 1999, jojobanr1, jojoba,   jojoba,   cps3_jojo, cps3_state, jojoba,   ROT0, "Capcom", "JoJo no Kimyou na Bouken: Mirai e no Isan (Japan 990913, NO CD)", GAME_IMPERFECT_GRAPHICS )
38173840GAME( 1999, jojobaner1,jojoba,   jojoba,   cps3_jojo, cps3_state, jojoba,   ROT0, "Capcom", "JoJo's Bizarre Adventure (Euro 990913, NO CD)", GAME_IMPERFECT_GRAPHICS )
3841
3842// bootleg
3843GAME( 1999, cps3boot,  0,        sfiii3,   cps3_jojo, cps3_state, cps3boot,   ROT0, "bootleg", "CPS3 Multi-game bootleg for HD6417095 type SH2", GAME_IMPERFECT_GRAPHICS ) // hold start 1 while booting to write a different game
3844
trunk/src/mame/mame.lst
r25483r25484
34503450jojobanr1       // 13/09/1999 (c) 1999 (Japan)
34513451jojobane        // 27/09/1999 (c) 1999 (Euro)
34523452jojobaner1      // 13/09/1999 (c) 1999 (Euro)
3453cps3boot      // bootleg
34533454
34543455// Capcom ZN1
34553456cpzn1
trunk/src/mame/includes/cps3.h
r25483r25484
103103   DECLARE_DRIVER_INIT(jojo);
104104   DECLARE_DRIVER_INIT(jojoba);
105105   DECLARE_DRIVER_INIT(sfiii2);
106   DECLARE_DRIVER_INIT(cps3boot);
106107   virtual void machine_reset();
107108   virtual void video_start();
108109   UINT32 screen_update_cps3(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
r25483r25484
112113   UINT16 rotxor(UINT16 val, UINT16 xorval);
113114   UINT32 cps3_mask(UINT32 address, UINT32 key1, UINT32 key2);
114115   void cps3_decrypt_bios();
115   void init_common(UINT32 key1, UINT32 key2, int altEncryption);
116   void init_common(void);
117   void init_crypt(UINT32 key1, UINT32 key2, int altEncryption);
116118   void cps3_set_mame_colours(int colournum, UINT16 data, UINT32 fadeval);
117119   void cps3_draw_tilemapsprite_line(int tmnum, int drawline, bitmap_rgb32 &bitmap, const rectangle &cliprect );
118120   UINT32 cps3_flashmain_r(address_space &space, int which, UINT32 offset, UINT32 mem_mask);

Previous 199869 Revisions Next


© 1997-2024 The MAME Team