Previous 199869 Revisions Next

r33562 Thursday 27th November, 2014 at 12:06:34 UTC by David Haywood
new WORKING game
Cute Fighter [system11, David Haywood]
[src/mame/drivers]dreamwld.c

trunk/src/mame/drivers/dreamwld.c
r242073r242074
160160      xsize = (source[0] & 0x00000e00) >> 9;
161161      ysize = (source[0] & 0x0e000000) >> 25;
162162
163      tileno = (source[1] & 0x0000ffff) >>0;
163      tileno = (source[1] & 0x0001ffff) >>0;
164164      colour = (source[1] & 0x3f000000) >>24;
165165      xflip  = (source[1] & 0x40000000);
166166      yflip  = (source[1] & 0x80000000);
r242073r242074
372372
373373READ32_MEMBER(dreamwld_state::dreamwld_protdata_r)
374374{
375//  static int count = 0;
375//   static int count = 0;
376376
377
378//  printf("protection read %04x\n", count);
379//  count++;
380
381377   UINT8 *protdata = memregion("user1")->base();
382378   size_t protsize = memregion("user1")->bytes();
383379   UINT8 dat = protdata[(m_protindex++) % protsize];
384380
381//   printf("protection read %04x %02x\n", count, dat);
382//   count++;
383
385384   // real hw returns 00 after end of data, I haven't checked if it's possible to overflow the read counter
386385   // and read out the internal rom.
387386
388387   return dat << 24;
389388}
390389
390static ADDRESS_MAP_START( oki1_map, AS_0, 8, dreamwld_state )
391   AM_RANGE(0x00000, 0x2ffff) AM_ROM
392   AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("oki1bank")
393ADDRESS_MAP_END
391394
395static ADDRESS_MAP_START( oki2_map, AS_0, 8, dreamwld_state )
396   AM_RANGE(0x00000, 0x2ffff) AM_ROM
397   AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("oki2bank")
398ADDRESS_MAP_END
399
392400WRITE32_MEMBER(dreamwld_state::dreamwld_6295_0_bank_w)
393401{
394   UINT8 *sound = memregion("oki1")->base();
395
396402   if (ACCESSING_BITS_0_7)
397      memcpy(sound + 0x30000, sound + 0xb0000 + 0x10000 * (data&0x3), 0x10000);
403      membank("oki1bank")->set_entry(data&3);
398404   else
399405      logerror("OKI0: unk bank write %x mem_mask %8x\n", data, mem_mask);
400406}
401407
402408WRITE32_MEMBER(dreamwld_state::dreamwld_6295_1_bank_w)
403409{
404   UINT8 *sound = memregion("oki2")->base();
405
406410   if (ACCESSING_BITS_0_7)
407      memcpy(sound + 0x30000, sound + 0xb0000 + 0x10000 * (data&0x3), 0x10000);
411      membank("oki2bank")->set_entry(data&3);
408412   else
409413      logerror("OKI1: unk bank write %x mem_mask %8x\n", data, mem_mask);
410414}
r242073r242074
570574INPUT_PORTS_END
571575
572576
577static INPUT_PORTS_START( cutefght )
578   PORT_START("INPUTS")
579   PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_COIN1 )
580   PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_COIN2 )
581   PORT_BIT( 0x0000fffc, IP_ACTIVE_LOW, IPT_UNUSED )
582   PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_START2 )
583   PORT_BIT( 0x00020000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
584   PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
585   PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
586   PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )  PORT_PLAYER(2)
587   PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
588   PORT_BIT( 0x00400000, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )  PORT_PLAYER(2)
589   PORT_BIT( 0x00800000, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )    PORT_PLAYER(2)
590   PORT_BIT( 0x01000000, IP_ACTIVE_LOW, IPT_START1 )
591   PORT_BIT( 0x02000000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
592   PORT_BIT( 0x04000000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
593   PORT_BIT( 0x08000000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
594   PORT_BIT( 0x10000000, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )  PORT_PLAYER(1)
595   PORT_BIT( 0x20000000, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
596   PORT_BIT( 0x40000000, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )  PORT_PLAYER(1)
597   PORT_BIT( 0x80000000, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )    PORT_PLAYER(1)
598
599   PORT_START("c00004")
600   PORT_BIT( 0x0000ffff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "DSW")
601   PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "DSW")
602
603   PORT_START("DSW")
604   PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Unknown ) )
605   PORT_DIPSETTING(      0x0001, DEF_STR( Off ) )
606   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
607   PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
608   PORT_DIPSETTING(      0x0002, DEF_STR( Off ) )
609   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
610   PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) )
611   PORT_DIPSETTING(      0x0004, DEF_STR( Off ) )
612   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
613   PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
614   PORT_DIPSETTING(      0x0008, DEF_STR( Off ) )
615   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
616   PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) )
617   PORT_DIPSETTING(      0x0010, DEF_STR( Off ) )
618   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
619   PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) )
620   PORT_DIPSETTING(      0x0020, DEF_STR( Off ) )
621   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
622   PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )
623   PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
624   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
625   PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) )
626   PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
627   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
628   PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) )
629   PORT_DIPSETTING(      0x0100, DEF_STR( Off ) )
630   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
631   PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
632   PORT_DIPSETTING(      0x0200, DEF_STR( Off ) )
633   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
634   PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
635   PORT_DIPSETTING(      0x0400, DEF_STR( Off ) )
636   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
637   PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
638   PORT_DIPSETTING(      0x0800, DEF_STR( Off ) )
639   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
640   PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
641   PORT_DIPSETTING(      0x1000, DEF_STR( Off ) )
642   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
643   PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
644   PORT_DIPSETTING(      0x2000, DEF_STR( Off ) )
645   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
646   PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
647   PORT_DIPSETTING(      0x4000, DEF_STR( Off ) )
648   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
649   PORT_SERVICE_DIPLOC( 0x8000, IP_ACTIVE_LOW, "SW1:8" )
650INPUT_PORTS_END
651
652
573653static const gfx_layout layout_16x16x4 =
574654{
575655   16,16,
r242073r242074
591671
592672void dreamwld_state::machine_start()
593673{
674   if (subdevice("oki1"))
675   {
676      membank("oki1bank")->configure_entries(0, 4, memregion("oki1")->base()+0x30000, 0x10000);
677      membank("oki1bank")->set_entry(0);
678   }
679
680   if (subdevice("oki2"))
681   {
682      membank("oki2bank")->configure_entries(0, 4, memregion("oki2")->base()+0x30000, 0x10000);
683      membank("oki2bank")->set_entry(0);
684   }
685
594686   save_item(NAME(m_protindex));
595687   save_item(NAME(m_tilebank));
596688   save_item(NAME(m_tilebankold));
r242073r242074
633725   MCFG_OKIM6295_ADD("oki1", XTAL_32MHz/32, OKIM6295_PIN7_LOW) /* 1MHz verified */
634726   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
635727   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
728   MCFG_DEVICE_ADDRESS_MAP(AS_0, oki1_map)
729
636730MACHINE_CONFIG_END
637731
638732static MACHINE_CONFIG_DERIVED( dreamwld, baryon )
r242073r242074
645739   MCFG_OKIM6295_ADD("oki2", XTAL_32MHz/32, OKIM6295_PIN7_LOW) /* 1MHz verified */
646740   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
647741   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
742   MCFG_DEVICE_ADDRESS_MAP(AS_0, oki2_map)
743
648744MACHINE_CONFIG_END
649745
650746
r242073r242074
705801     ram.  The interrupt vectors point at the code placed in RAM. */
706802   ROM_LOAD( "protdata.bin", 0x000, 0x6c9 ,  CRC(f284b2fd) SHA1(9e8096c8aa8a288683f002311b38787b120748d1) ) /* extracted */
707803
708   ROM_REGION( 0x100000, "oki1", 0 ) /* OKI Samples - 1st chip */
804   ROM_REGION( 0x80000, "oki1", 0 ) /* OKI Samples - 1st chip */
709805   ROM_LOAD( "5.bin", 0x000000, 0x80000, CRC(9689570a) SHA1(4414233da8f46214ca7e9022df70953922a63aa4) )
710   ROM_RELOAD(0x80000,0x80000) // for the banks
711806
712   ROM_REGION( 0x100000, "oki2", 0 ) /* OKI Samples - 2nd chip */
807   ROM_REGION( 0x80000, "oki2", 0 ) /* OKI Samples - 2nd chip */
713808   ROM_LOAD( "6.bin", 0x000000, 0x80000, CRC(c8b91f30) SHA1(706004ca56d0a74bc7a3dfd73a21cdc09eb90f05) )
714   ROM_RELOAD(0x80000,0x80000) // for the banks
715809
716810   ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprite Tiles - decoded */
717811   ROM_LOAD16_WORD_SWAP( "9.bin", 0x000000, 0x200000, CRC(fa84e3af) SHA1(5978737d348fd382f4ec004d29870656c864d137) )
r242073r242074
738832   ROM_REGION( 0x10000, "cpu1", 0 ) /* 87C52 MCU Code */
739833   ROM_LOAD( "87c52.mcu", 0x00000, 0x10000 , NO_DUMP ) /* can't be dumped. */
740834
741   ROM_REGION( 0x1000, "user1", ROMREGION_ERASEFF ) /* Protection data  */ // not read yet
742   /* The MCU supplies this data.
743     The 68k reads it through a port, taking the size and destination write address from the level 1
744     and level 2 irq positions in the 68k vector table (there is code to check that they haven't been
745     modified!)  It then decodes the data using the rom checksum previously calculated and puts it in
746     ram.  The interrupt vectors point at the code placed in RAM. */
747   ROM_LOAD( "protdata.bin", 0x000, 0x701 , NO_DUMP )
835   ROM_REGION( 0x1000, "user1", ROMREGION_ERASEFF ) /* Protection data  */
836   ROM_LOAD( "protdata.bin", 0x000, 0x701 , CRC(764c3c0e) SHA1(ae044d016850b730b2d97ccb7845b6b438c1e074) )
748837
749   ROM_REGION( 0x100000, "oki1", 0 ) /* OKI Samples - 1st chip */
838   ROM_REGION( 0x80000, "oki1", 0 ) /* OKI Samples - 1st chip */
839   ROM_LOAD( "cf.2", 0x000000, 0x80000, CRC(694ddaf9) SHA1(f9138e7e1d8f771c4e69c17f27fb2b70fbee076a) )
840
841   ROM_REGION( 0x80000, "oki2", 0 ) /* OKI Samples - 2nd chip */
750842   ROM_LOAD( "cf.1", 0x000000, 0x80000, CRC(fa3b6890) SHA1(7534931c96d6fa05fee840a7ea07b87e2e2acc50) )
751   ROM_RELOAD(0x80000,0x80000) // for the banks
752843
753   ROM_REGION( 0x100000, "oki2", 0 ) /* OKI Samples - 2nd chip */
754   ROM_LOAD( "cf.2", 0x000000, 0x80000, CRC(694ddaf9) SHA1(f9138e7e1d8f771c4e69c17f27fb2b70fbee076a) )
755   ROM_RELOAD(0x80000,0x80000) // for the banks
756
757844   ROM_REGION( 0x800000, "gfx1", 0 ) /* Sprite Tiles - decoded */
758845   ROM_LOAD16_WORD_SWAP( "cf.10",  0x000000, 0x200000, CRC(62bf1e6e) SHA1(fb4b0db313e26687f0ebc6a8505a02e5348776da) )
759846   ROM_LOAD16_WORD_SWAP( "cf.11",  0x200000, 0x200000, CRC(796f23a7) SHA1(adaa4c8525de428599f4489ecc8e966fed0d514d) )
r242073r242074
826913   ROM_REGION( 0x10000, "user1", ROMREGION_ERASE00 ) /* Protection data  */
827914   ROM_LOAD( "protdata.bin", 0x000, 0x745, CRC(06b8a880) SHA1(b7d4bf26d34cb544825270c2c474bbd4c81a6c9e) ) /* extracted */
828915
829   ROM_REGION( 0x100000, "oki1", 0 ) /* OKI Samples - 1st chip*/
916   ROM_REGION( 0x80000, "oki1", 0 ) /* OKI Samples - 1st chip*/
830917   ROM_LOAD( "mx27c4000_5.bin", 0x000000, 0x80000, CRC(7afa6adb) SHA1(d4049e1068a5f7abf0e14d0b9fbbbc6dfb5d0170) )
831   ROM_RELOAD(0x80000,0x80000) // for the banks
832918
833   ROM_REGION( 0x100000, "oki2", ROMREGION_ERASE00 ) /* OKI Samples - 2nd chip (neither OKI or rom is present, empty sockets) */
919   ROM_REGION( 0x80000, "oki2", ROMREGION_ERASE00 ) /* OKI Samples - 2nd chip (neither OKI or rom is present, empty sockets) */
834920   /* not populared */
835921
836922   ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprite Tiles - decoded */
r242073r242074
896982   ROM_REGION( 0x6bd, "user1", 0 ) /* Protection data  */
897983   ROM_LOAD( "protdata.bin", 0x000, 0x6bd, CRC(117f32a8) SHA1(837bea09d3e59ab9e13bd1103b1fc988edb361c0) ) /* extracted */
898984
899   ROM_REGION( 0x100000, "oki1", 0 ) /* OKI Samples */
985   ROM_REGION( 0x80000, "oki1", 0 ) /* OKI Samples */
900986   ROM_LOAD( "1.bin", 0x000000, 0x80000, CRC(e0349074) SHA1(f3d53d96dff586a0ad1632f52e5559cdce5ed0d8) )
901   ROM_RELOAD(0x80000,0x80000) // for the banks
902987
903988   ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprite Tiles - decoded */
904989   ROM_LOAD16_WORD_SWAP( "9.bin",  0x000000, 0x200000, CRC(28bf828f) SHA1(271390cc4f4015a3b69976f0d0527947f13c971b) )
r242073r242074
9291014   ROM_REGION( 0x6bd, "user1", 0 ) /* Protection data - from baryon set, assumed to be the same */
9301015   ROM_LOAD( "protdata.bin", 0x000, 0x6bd, CRC(117f32a8) SHA1(837bea09d3e59ab9e13bd1103b1fc988edb361c0) ) /* extracted */
9311016
932   ROM_REGION( 0x100000, "oki1", 0 ) /* OKI Samples */
1017   ROM_REGION( 0x80000, "oki1", 0 ) /* OKI Samples */
9331018   ROM_LOAD( "rom_1_27c040.bin", 0x000000, 0x80000, CRC(e0349074) SHA1(f3d53d96dff586a0ad1632f52e5559cdce5ed0d8) )
934   ROM_RELOAD(0x80000,0x80000) // for the banks
9351019
9361020   ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprite Tiles - decoded */
9371021   ROM_LOAD16_WORD_SWAP( "rom_10_27c160.bin", 0x000000, 0x200000, CRC(28bf828f) SHA1(271390cc4f4015a3b69976f0d0527947f13c971b) )
r242073r242074
9481032   ROM_LOAD( "rom_9_27c512.bin", 0x000000, 0x10000, CRC(0da8db45) SHA1(7d5bd71c5b0b28ff74c732edd7c662f46f2ab25b) )
9491033ROM_END
9501034
1035
1036
9511037GAME( 1997, baryon,   0,      baryon,   baryon,   driver_device, 0, ROT270, "SemiCom",         "Baryon - Future Assault (set 1)", GAME_SUPPORTS_SAVE )
9521038GAME( 1997, baryona,  baryon, baryon,   baryon,   driver_device, 0, ROT270, "SemiCom",         "Baryon - Future Assault (set 2)", GAME_SUPPORTS_SAVE )
9531039
9541040GAME( 2000, dreamwld, 0, dreamwld, dreamwld, driver_device, 0, ROT0,   "SemiCom",         "Dream World", GAME_SUPPORTS_SAVE )
9551041
956GAME( 1998, cutefght, 0, dreamwld, dreamwld, driver_device, 0, ROT0,   "SemiCom",         "Cute Fighters", GAME_SUPPORTS_SAVE | GAME_NOT_WORKING ) // needs protection data
1042GAME( 1998, cutefght, 0, dreamwld, cutefght, driver_device, 0, ROT0,   "SemiCom",         "Cute Fighter", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS ) // wrong linescroll?
9571043
9581044GAME( 1999, rolcrush, 0, baryon,   rolcrush, driver_device, 0, ROT0,   "Trust / SemiCom", "Rolling Crush (version 1.07.E - 1999/02/11)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS ) // wrong linescroll


Previous 199869 Revisions Next


© 1997-2024 The MAME Team