Previous 199869 Revisions Next

r33486 Saturday 22nd November, 2014 at 22:18:48 UTC by Brian Troha
cv1k.c: Detangle the speedups - NW
[src/mame/drivers]cv1k.c

trunk/src/mame/drivers/cv1k.c
r241997r241998
210210
211211   /* game specific */
212212   DECLARE_READ64_MEMBER(mushisam_speedup_r);
213   DECLARE_READ64_MEMBER(mushisama_speedup_r);
213   DECLARE_READ64_MEMBER(ibara_speedup_r);
214214   DECLARE_READ64_MEMBER(espgal2_speedup_r);
215   DECLARE_READ64_MEMBER(mushitam_speedup_r);
216   DECLARE_READ64_MEMBER(pinkswts_speedup_r);
217   DECLARE_READ64_MEMBER(deathsml_speedup_r);
218   DECLARE_READ64_MEMBER(dpddfk_speedup_r);
215219   DECLARE_DRIVER_INIT(mushisam);
216   DECLARE_DRIVER_INIT(mushisama);
220   DECLARE_DRIVER_INIT(ibara);
217221   DECLARE_DRIVER_INIT(espgal2);
222   DECLARE_DRIVER_INIT(mushitam);
223   DECLARE_DRIVER_INIT(pinkswts);
224   DECLARE_DRIVER_INIT(deathsml);
225   DECLARE_DRIVER_INIT(dpddfk);
218226
219227   required_ioport m_blitrate;
220228   required_ioport m_eepromout;
221229};
222230
223231
224#define MASTER_CLOCK  XTAL_12_8MHz
225#define CPU_CLOCK     (MASTER_CLOCK * 8)
226
227
228
229232/**************************************************************************/
230233
231234UINT32 cv1k_state::screen_update_cv1k(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
r241997r241998
421424static MACHINE_CONFIG_START( cv1k, cv1k_state )
422425
423426   /* basic machine hardware */
424   MCFG_CPU_ADD("maincpu", SH3BE, CPU_CLOCK)
427   MCFG_CPU_ADD("maincpu", SH3BE, XTAL_12_8MHz*8) // 102.4MHz
425428   MCFG_SH4_MD0(0)  // none of this is verified
426429   MCFG_SH4_MD1(0)  // (the sh3 is different to the sh4 anyway, should be changed)
427430   MCFG_SH4_MD2(0)
r241997r241998
431434   MCFG_SH4_MD6(0)
432435   MCFG_SH4_MD7(1)
433436   MCFG_SH4_MD8(0)
434   MCFG_SH4_CLOCK(CPU_CLOCK)
437   MCFG_SH4_CLOCK(XTAL_12_8MHz*8) // 102.4MHz
435438   MCFG_CPU_PROGRAM_MAP(cv1k_map)
436439   MCFG_CPU_IO_MAP(cv1k_port)
437440   MCFG_CPU_VBLANK_INT_DRIVER("screen", cv1k_state, irq2_line_hold)
r241997r241998
463466   /* basic machine hardware */
464467   MCFG_DEVICE_REMOVE("maincpu")
465468
466   MCFG_CPU_ADD("maincpu", SH3BE, CPU_CLOCK)
469   MCFG_CPU_ADD("maincpu", SH3BE, XTAL_12_8MHz*8) // 102.4MHz
467470   MCFG_SH4_MD0(0)  // none of this is verified
468471   MCFG_SH4_MD1(0)  // (the sh3 is different to the sh4 anyway, should be changed)
469472   MCFG_SH4_MD2(0)
r241997r241998
473476   MCFG_SH4_MD6(0)
474477   MCFG_SH4_MD7(1)
475478   MCFG_SH4_MD8(0)
476   MCFG_SH4_CLOCK(CPU_CLOCK)
479   MCFG_SH4_CLOCK(XTAL_12_8MHz*8) // 102.4MHz
477480   MCFG_CPU_PROGRAM_MAP(cv1k_d_map)
478481   MCFG_CPU_IO_MAP(cv1k_port)
479482   MCFG_CPU_VBLANK_INT_DRIVER("screen", cv1k_state, irq2_line_hold)
r241997r241998
810813
811814READ64_MEMBER( cv1k_state::mushisam_speedup_r )
812815{
813   int pc = m_maincpu->pc();
814   if ( pc == 0xc04a0aa ) m_maincpu->spin_until_time( attotime::from_usec(10)); // mushisam
815   else if (pc == 0xc04a0da)  m_maincpu->spin_until_time( attotime::from_usec(10)); // mushitam
816   if (m_maincpu->pc()== 0xc04a2aa ) m_maincpu->spin_until_time( attotime::from_usec(10)); // mushisam / mushisamb
816817//  else printf("read %08x\n", m_maincpu->pc());
817   return m_ram[0x0022f0/8];
818   return m_ram[0x00024d8/8];
818819}
819820
820821DRIVER_INIT_MEMBER(cv1k_state,mushisam)
821822{
822   m_maincpu->space(AS_PROGRAM).install_read_handler(0xc0022f0, 0xc0022f7, read64_delegate(FUNC(cv1k_state::mushisam_speedup_r),this));
823   m_maincpu->space(AS_PROGRAM).install_read_handler(0xc0024d8, 0xc0024df, read64_delegate(FUNC(cv1k_state::mushisam_speedup_r),this));
823824}
824825
825READ64_MEMBER( cv1k_state::mushisama_speedup_r )
826READ64_MEMBER( cv1k_state::ibara_speedup_r )
826827{
827   if (m_maincpu->pc()== 0xc04a2aa ) m_maincpu->spin_until_time( attotime::from_usec(10)); // mushisam
828//  else printf("read %08x\n", m_maincpu->pc());
829   return m_ram[0x00024d8/8];
828   if (m_maincpu->pc()==  0xc04a0aa ) m_maincpu->spin_until_time( attotime::from_usec(10)); // ibara / mushisama
829   return m_ram[0x0022f0/8];
830830}
831831
832DRIVER_INIT_MEMBER(cv1k_state,mushisama)
832DRIVER_INIT_MEMBER(cv1k_state,ibara)
833833{
834   m_maincpu->space(AS_PROGRAM).install_read_handler(0xc0024d8, 0xc0024df, read64_delegate(FUNC(cv1k_state::mushisama_speedup_r),this));
834   m_maincpu->space(AS_PROGRAM).install_read_handler(0xc0022f0, 0xc0022f7, read64_delegate(FUNC(cv1k_state::ibara_speedup_r),this));
835835}
836836
837837READ64_MEMBER( cv1k_state::espgal2_speedup_r )
838838{
839   int pc = m_maincpu->pc();
840
841   if ( pc == 0xc05177a ) m_maincpu->spin_until_time( attotime::from_usec(10)); // espgal2
842   else if ( pc == 0xc05176a ) m_maincpu->spin_until_time( attotime::from_usec(10)); // futari15 / futari15a / futari10 / futariblk / ibarablk / ibarablka / mmpork / mmmbanc
843   else if ( pc == 0xc0519a2 ) m_maincpu->spin_until_time( attotime::from_usec(10)); // deathsml
844   else if ( pc == 0xc1d1346 ) m_maincpu->spin_until_time( attotime::from_usec(10)); // dpddfk / dsmbl
845//  else printf("read %08x\n", m_maincpu->pc());
839   if (m_maincpu->pc()== 0xc05177a ) m_maincpu->spin_until_time( attotime::from_usec(10)); // espgal2
846840   return m_ram[0x002310/8];
847841}
848842
r241997r241998
851845   m_maincpu->space(AS_PROGRAM).install_read_handler(0xc002310, 0xc002317, read64_delegate(FUNC(cv1k_state::espgal2_speedup_r),this));
852846}
853847
848READ64_MEMBER( cv1k_state::mushitam_speedup_r )
849{
854850
851   if (m_maincpu->pc()==  0xc04a0da)  m_maincpu->spin_until_time( attotime::from_usec(10)); // mushitam / mushitama
852   return m_ram[0x0022f0/8];
853}
854
855DRIVER_INIT_MEMBER(cv1k_state,mushitam)
856{
857   m_maincpu->space(AS_PROGRAM).install_read_handler(0xc0022f0, 0xc0022f7, read64_delegate(FUNC(cv1k_state::mushitam_speedup_r),this));
858}
859
860READ64_MEMBER( cv1k_state::pinkswts_speedup_r )
861{
862   // pinkswts / pinkswtsa / pinkswtsb / pinkswtsx / futari15 / futari15a / futari10 / futaribl / futariblj / ibarablk / ibarablka / mmpork / mmmbanc
863   if (m_maincpu->pc()== 0xc05176a ) m_maincpu->spin_until_time( attotime::from_usec(10));
864   return m_ram[0x002310/8];
865}
866
867DRIVER_INIT_MEMBER(cv1k_state,pinkswts)
868{
869   m_maincpu->space(AS_PROGRAM).install_read_handler(0xc002310, 0xc002317, read64_delegate(FUNC(cv1k_state::pinkswts_speedup_r),this));
870}
871
872READ64_MEMBER( cv1k_state::deathsml_speedup_r )
873{
874   if (m_maincpu->pc()== 0xc0519a2 ) m_maincpu->spin_until_time( attotime::from_usec(10)); // deathsml
875   return m_ram[0x002310/8];
876}
877
878DRIVER_INIT_MEMBER(cv1k_state,deathsml)
879{
880   m_maincpu->space(AS_PROGRAM).install_read_handler(0xc002310, 0xc002317, read64_delegate(FUNC(cv1k_state::deathsml_speedup_r),this));
881}
882
883READ64_MEMBER( cv1k_state::dpddfk_speedup_r )
884{
885   if (m_maincpu->pc()== 0xc1d1346 ) m_maincpu->spin_until_time( attotime::from_usec(10)); // dpddfk / dpddfk10 / dsmbl
886   return m_ram[0x002310/8];
887}
888
889DRIVER_INIT_MEMBER(cv1k_state,dpddfk)
890{
891   m_maincpu->space(AS_PROGRAM).install_read_handler(0xc002310, 0xc002317, read64_delegate(FUNC(cv1k_state::dpddfk_speedup_r),this));
892}
893
894
855895// The black label versions are intentionally not set as clones, they were re-releases with different game codes, not bugfixes.
856896
857897// CA011  Mushihime-Sama
858GAME( 2004, mushisam,   0,        cv1k,   cv1k, cv1k_state, mushisama, ROT270, "Cave (AMI license)", "Mushihime-Sama (2004/10/12.MASTER VER.)",                         0 )
859GAME( 2004, mushisama,  mushisam, cv1k,   cv1k, cv1k_state, mushisam,  ROT270, "Cave (AMI license)", "Mushihime-Sama (2004/10/12 MASTER VER.)",                         0 )
860GAME( 2004, mushisamb,  mushisam, cv1k,   cv1k, cv1k_state, mushisama, ROT270, "Cave (AMI license)", "Mushihime-Sama (2004/10/12 MASTER VER)",                          0 )
898GAME( 2004, mushisam,   0,        cv1k,   cv1k, cv1k_state, mushisam,  ROT270, "Cave (AMI license)", "Mushihime-Sama (2004/10/12.MASTER VER.)",                         0 )
899GAME( 2004, mushisama,  mushisam, cv1k,   cv1k, cv1k_state, ibara,     ROT270, "Cave (AMI license)", "Mushihime-Sama (2004/10/12 MASTER VER.)",                         0 )
900GAME( 2004, mushisamb,  mushisam, cv1k,   cv1k, cv1k_state, mushisam,  ROT270, "Cave (AMI license)", "Mushihime-Sama (2004/10/12 MASTER VER)",                          0 )
861901
862902// CA012  Ibara
863GAME( 2005, ibara,      0,        cv1k,   cv1k, cv1k_state, mushisam,  ROT270, "Cave (AMI license)", "Ibara (2005/03/22 MASTER VER..)",                                 0 )
903GAME( 2005, ibara,      0,        cv1k,   cv1k, cv1k_state, ibara,     ROT270, "Cave (AMI license)", "Ibara (2005/03/22 MASTER VER..)",                                 0 )
864904
865905// CA012B Ibara Kuro Black Label
866GAME( 2006, ibarablk,   0,        cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Ibara Kuro Black Label (2006/02/06. MASTER VER.)",                0 )
867GAME( 2006, ibarablka,  ibarablk, cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Ibara Kuro Black Label (2006/02/06 MASTER VER.)",                 0 )
906GAME( 2006, ibarablk,   0,        cv1k,   cv1k, cv1k_state, pinkswts,  ROT270, "Cave (AMI license)", "Ibara Kuro Black Label (2006/02/06. MASTER VER.)",                0 )
907GAME( 2006, ibarablka,  ibarablk, cv1k,   cv1k, cv1k_state, pinkswts,  ROT270, "Cave (AMI license)", "Ibara Kuro Black Label (2006/02/06 MASTER VER.)",                 0 )
868908
869909// CA013  Espgaluda II
870910GAME( 2005, espgal2,    0,        cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Espgaluda II (2005/11/14 MASTER VER)",                            0 )
871911
872912// CA???  Puzzle! Mushihime-Tama
873GAME( 2005, mushitam,   0,        cv1k,   cv1k, cv1k_state, mushisam,  ROT0,   "Cave (AMI license)", "Puzzle! Mushihime-Tama (2005/09/09.MASTER VER)",                  0 )
874GAME( 2005, mushitama,  mushitam, cv1k,   cv1k, cv1k_state, mushisam,  ROT0,   "Cave (AMI license)", "Puzzle! Mushihime-Tama (2005/09/09 MASTER VER)",                  0 )
913GAME( 2005, mushitam,   0,        cv1k,   cv1k, cv1k_state, mushitam,  ROT0,   "Cave (AMI license)", "Puzzle! Mushihime-Tama (2005/09/09.MASTER VER)",                  0 )
914GAME( 2005, mushitama,  mushitam, cv1k,   cv1k, cv1k_state, mushitam,  ROT0,   "Cave (AMI license)", "Puzzle! Mushihime-Tama (2005/09/09 MASTER VER)",                  0 )
875915
876916// CA014  Pink Sweets: Ibara Sorekara
877GAME( 2006, pinkswts,   0,        cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Pink Sweets: Ibara Sorekara (2006/04/06 MASTER VER....)",         0 )
878GAME( 2006, pinkswtsa,  pinkswts, cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Pink Sweets: Ibara Sorekara (2006/04/06 MASTER VER...)",          0 )
879GAME( 2006, pinkswtsb,  pinkswts, cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Pink Sweets: Ibara Sorekara (2006/04/06 MASTER VER.)",            0 )
880GAME( 2006, pinkswtsx,  pinkswts, cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Pink Sweets: Ibara Sorekara (2006/xx/xx MASTER VER.)",            0 ) // defaults to freeplay, possibly bootlegged from show/dev version?
917GAME( 2006, pinkswts,   0,        cv1k,   cv1k, cv1k_state, pinkswts,  ROT270, "Cave (AMI license)", "Pink Sweets: Ibara Sorekara (2006/04/06 MASTER VER....)",         0 )
918GAME( 2006, pinkswtsa,  pinkswts, cv1k,   cv1k, cv1k_state, pinkswts,  ROT270, "Cave (AMI license)", "Pink Sweets: Ibara Sorekara (2006/04/06 MASTER VER...)",          0 )
919GAME( 2006, pinkswtsb,  pinkswts, cv1k,   cv1k, cv1k_state, pinkswts,  ROT270, "Cave (AMI license)", "Pink Sweets: Ibara Sorekara (2006/04/06 MASTER VER.)",            0 )
920GAME( 2006, pinkswtsx,  pinkswts, cv1k,   cv1k, cv1k_state, pinkswts,  ROT270, "Cave (AMI license)", "Pink Sweets: Ibara Sorekara (2006/xx/xx MASTER VER.)",            0 ) // defaults to freeplay, possibly bootlegged from show/dev version?
881921
882922// CA015  Mushihime-Sama Futari
883GAME( 2006, futari15,   0,        cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Mushihime-Sama Futari Ver 1.5 (2006/12/8.MASTER VER. 1.54.)",     0 )
884GAME( 2006, futari15a,  futari15, cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Mushihime-Sama Futari Ver 1.5 (2006/12/8 MASTER VER 1.54)",       0 )
885GAME( 2006, futari10,   futari15, cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Mushihime-Sama Futari Ver 1.0 (2006/10/23 MASTER VER.)",          0 )
923GAME( 2006, futari15,   0,        cv1k,   cv1k, cv1k_state, pinkswts,  ROT270, "Cave (AMI license)", "Mushihime-Sama Futari Ver 1.5 (2006/12/8.MASTER VER. 1.54.)",     0 )
924GAME( 2006, futari15a,  futari15, cv1k,   cv1k, cv1k_state, pinkswts,  ROT270, "Cave (AMI license)", "Mushihime-Sama Futari Ver 1.5 (2006/12/8 MASTER VER 1.54)",       0 )
925GAME( 2006, futari10,   futari15, cv1k,   cv1k, cv1k_state, pinkswts,  ROT270, "Cave (AMI license)", "Mushihime-Sama Futari Ver 1.0 (2006/10/23 MASTER VER.)",          0 )
886926
887927// CA016  Muchi Muchi Pork!
888GAME( 2007, mmpork,     0,        cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Muchi Muchi Pork! (2007/ 4/17 MASTER VER.)",                      0 )
928GAME( 2007, mmpork,     0,        cv1k,   cv1k, cv1k_state, pinkswts,  ROT270, "Cave (AMI license)", "Muchi Muchi Pork! (2007/ 4/17 MASTER VER.)",                      0 )
889929
890930// CA015B Mushihime-Sama Futari Black Label
891GAME( 2007, futaribl,   0,        cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Mushihime-Sama Futari Black Label (2009/11/27 INTERNATIONAL BL)", 0 )
892GAME( 2007, futariblj,  futaribl, cv1k,   cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "Mushihime-Sama Futari Black Label (2007/12/11 BLACK LABEL VER)",  0 )
931GAME( 2007, futaribl,   0,        cv1k,   cv1k, cv1k_state, pinkswts,  ROT270, "Cave (AMI license)", "Mushihime-Sama Futari Black Label (2009/11/27 INTERNATIONAL BL)", 0 )
932GAME( 2007, futariblj,  futaribl, cv1k,   cv1k, cv1k_state, pinkswts,  ROT270, "Cave (AMI license)", "Mushihime-Sama Futari Black Label (2007/12/11 BLACK LABEL VER)",  0 )
893933
894934// CA017  Deathsmiles
895GAME( 2007, deathsml,   0,        cv1k,   cv1k, cv1k_state, espgal2,   ROT0,   "Cave (AMI license)", "Deathsmiles (2007/10/09 MASTER VER)",                             0 )
935GAME( 2007, deathsml,   0,        cv1k,   cv1k, cv1k_state, deathsml,  ROT0,   "Cave (AMI license)", "Deathsmiles (2007/10/09 MASTER VER)",                             0 )
896936
897937// CA017B Deathsmiles Black Label
898GAME( 2008, dsmbl,      0,        cv1k_d, cv1k, cv1k_state, espgal2,   ROT0,   "Cave (AMI license)", "Deathsmiles MegaBlack Label (2008/10/06 MEGABLACK LABEL VER)",    0 )
938GAME( 2008, dsmbl,      0,        cv1k_d, cv1k, cv1k_state, dpddfk,    ROT0,   "Cave (AMI license)", "Deathsmiles MegaBlack Label (2008/10/06 MEGABLACK LABEL VER)",    0 )
899939
900940// CA019  Do-Don-Pachi Dai-Fukkatsu
901GAME( 2008, ddpdfk,     0,        cv1k_d, cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "DoDonPachi Dai-Fukkatsu Ver 1.5 (2008/06/23  MASTER VER 1.5)",    0 )
902GAME( 2008, ddpdfk10,   ddpdfk,   cv1k_d, cv1k, cv1k_state, espgal2,   ROT270, "Cave (AMI license)", "DoDonPachi Dai-Fukkatsu Ver 1.0 (2008/05/16  MASTER VER)",        0 )
941GAME( 2008, ddpdfk,     0,        cv1k_d, cv1k, cv1k_state, dpddfk,    ROT270, "Cave (AMI license)", "DoDonPachi Dai-Fukkatsu Ver 1.5 (2008/06/23  MASTER VER 1.5)",    0 )
942GAME( 2008, ddpdfk10,   ddpdfk,   cv1k_d, cv1k, cv1k_state, dpddfk,    ROT270, "Cave (AMI license)", "DoDonPachi Dai-Fukkatsu Ver 1.0 (2008/05/16  MASTER VER)",        0 )
903943
904944// CMDL01 Medal Mahjong Moukari Bancho
905GAME( 2007, mmmbanc,    0,        cv1k,   cv1k, cv1k_state, espgal2,   ROT0,   "Cave (AMI license)", "Medal Mahjong Moukari Bancho (2007/06/05 MASTER VER.)",            GAME_NOT_WORKING )
945GAME( 2007, mmmbanc,    0,        cv1k,   cv1k, cv1k_state, pinkswts,  ROT0,   "Cave (AMI license)", "Medal Mahjong Moukari Bancho (2007/06/05 MASTER VER.)",            GAME_NOT_WORKING )


Previous 199869 Revisions Next


© 1997-2024 The MAME Team