diff options
-rw-r--r-- | src/mame/drivers/fcrash.cpp | 47 | ||||
-rw-r--r-- | src/mame/includes/cps1.h | 1 |
2 files changed, 40 insertions, 8 deletions
diff --git a/src/mame/drivers/fcrash.cpp b/src/mame/drivers/fcrash.cpp index 84a2fa439cb..c551b14ef94 100644 --- a/src/mame/drivers/fcrash.cpp +++ b/src/mame/drivers/fcrash.cpp @@ -494,6 +494,37 @@ WRITE16_MEMBER(cps_state::sf2mdta_layer_w) } } +WRITE16_MEMBER(cps_state::sf2b_layer_w) +{ + switch (offset) + { + case 0x06: + m_cps_a_regs[0x0c / 2] = data + 0xffbe; /* scroll 1x */ + break; + case 0x07: + m_cps_a_regs[0x0e / 2] = data; /* scroll 1y */ + break; + case 0x08: + m_cps_a_regs[0x14 / 2] = data + 0xffce; /* scroll 3x */ + break; + case 0x09: + m_cps_a_regs[0x12 / 2] = data; /* scroll 2y */ + m_cps_a_regs[CPS1_ROWSCROLL_OFFS] = data; /* row scroll start */ + break; + case 0x0a: + m_cps_a_regs[0x10 / 2] = data + 0xffce; /* scroll 2x */ + break; + case 0x0b: + m_cps_a_regs[0x16 / 2] = data; /* scroll 3y */ + break; + case 0x26: + m_cps_b_regs[m_layer_enable_reg / 2] = data; + break; + default: + printf("%X:%X ",offset,data); + } +} + WRITE16_MEMBER(cps_state::slampic_layer_w) { switch (offset) @@ -725,7 +756,7 @@ void cps_state::knightsb_map(address_map &map) map(0x900000, 0x93ffff).ram().w(FUNC(cps_state::cps1_gfxram_w)).share("gfxram"); map(0x980000, 0x98002f).w(FUNC(cps_state::knightsb_layer_w)); map(0x990000, 0x990001).nopw(); // same as 880000 - map(0xff0000, 0xffffff).ram(); + map(0xff0000, 0xffffff).ram().share("mainram"); } void cps_state::dinopic_map(address_map &map) @@ -745,7 +776,7 @@ void cps_state::dinopic_map(address_map &map) map(0xf1c000, 0xf1c001).portr("IN2"); /* Player 3 controls (later games) */ map(0xf1c004, 0xf1c005).w(FUNC(cps_state::cpsq_coinctrl2_w)); /* Coin control2 (later games) */ map(0xf1c006, 0xf1c007).portr("EEPROMIN").portw("EEPROMOUT"); - map(0xff0000, 0xffffff).ram(); + map(0xff0000, 0xffffff).ram().share("mainram"); } void cps_state::fcrash_map(address_map &map) @@ -759,7 +790,7 @@ void cps_state::fcrash_map(address_map &map) map(0x880008, 0x88000f).r(FUNC(cps_state::cps1_dsw_r)); /* System input ports / Dip Switches */ map(0x890000, 0x890001).nopw(); // palette related? map(0x900000, 0x92ffff).ram().w(FUNC(cps_state::cps1_gfxram_w)).share("gfxram"); - map(0xff0000, 0xffffff).ram(); + map(0xff0000, 0xffffff).ram().share("mainram"); } void cps_state::mtwinsb_map(address_map &map) @@ -810,7 +841,7 @@ void cps_state::sf2m1_map(address_map &map) map(0x900000, 0x93ffff).ram().w(FUNC(cps_state::cps1_gfxram_w)).share("gfxram"); map(0x980000, 0x9801ff).w(FUNC(cps_state::sf2m1_layer_w)); map(0x990000, 0x990001).nopw(); // same as 880000 - map(0xff0000, 0xffffff).ram(); + map(0xff0000, 0xffffff).ram().share("mainram"); } void cps_state::sf2mdt_map(address_map &map) @@ -832,7 +863,7 @@ void cps_state::sf2mdt_map(address_map &map) void cps_state::sf2b_map(address_map &map) { map(0x000000, 0x3fffff).rom(); - map(0x708100, 0x7081ff).w(FUNC(cps_state::sf2mdta_layer_w)); + map(0x708100, 0x7081ff).w(FUNC(cps_state::sf2b_layer_w)); map(0x70c000, 0x70c001).portr("IN1"); map(0x70c008, 0x70c009).portr("IN2"); map(0x70c018, 0x70c01f).r(FUNC(cps_state::cps1_hack_dsw_r)); @@ -842,7 +873,7 @@ void cps_state::sf2b_map(address_map &map) map(0x800100, 0x80013f).ram().share("cps_a_regs"); /* CPS-A custom */ map(0x800140, 0x80017f).rw(FUNC(cps_state::cps1_cps_b_r), FUNC(cps_state::cps1_cps_b_w)).share("cps_b_regs"); /* CPS-B custom */ map(0x900000, 0x92ffff).ram().w(FUNC(cps_state::cps1_gfxram_w)).share("gfxram"); - map(0xff0000, 0xffffff).ram(); + map(0xff0000, 0xffffff).ram().share("mainram"); } void cps_state::sgyxz_map(address_map &map) @@ -876,7 +907,7 @@ void cps_state::wofabl_map(address_map &map) map(0x900000, 0x92ffff).ram().w(FUNC(cps_state::cps1_gfxram_w)).share("gfxram"); map(0xf1c004, 0xf1c005).w(FUNC(cps_state::cpsq_coinctrl2_w)); /* Coin control2 (later games) */ map(0xf1c006, 0xf1c007).portr("EEPROMIN").portw("EEPROMOUT"); - map(0xff0000, 0xffffff).ram(); + map(0xff0000, 0xffffff).ram().share("mainram"); } void cps_state::slampic_map(address_map &map) @@ -897,7 +928,7 @@ void cps_state::slampic_map(address_map &map) map(0xf1c004, 0xf1c005).w(FUNC(cps_state::cpsq_coinctrl2_w)); /* Coin control2 (later games) */ map(0xf1c006, 0xf1c007).portr("EEPROMIN").portw("EEPROMOUT"); map(0xf1f000, 0xf1ffff).noprw(); // writes 0 to range, then reads F1F6EC - map(0xff0000, 0xffffff).ram(); + map(0xff0000, 0xffffff).ram().share("mainram"); } void cps_state::sound_map(address_map &map) diff --git a/src/mame/includes/cps1.h b/src/mame/includes/cps1.h index 8134893c5e4..2edf51d21d3 100644 --- a/src/mame/includes/cps1.h +++ b/src/mame/includes/cps1.h @@ -236,6 +236,7 @@ public: DECLARE_WRITE16_MEMBER(punipic_layer_w); DECLARE_WRITE16_MEMBER(sf2mdt_layer_w); DECLARE_WRITE16_MEMBER(sf2mdta_layer_w); + DECLARE_WRITE16_MEMBER(sf2b_layer_w); DECLARE_WRITE16_MEMBER(slampic_layer_w); DECLARE_WRITE16_MEMBER(fcrash_soundlatch_w); DECLARE_WRITE8_MEMBER(fcrash_snd_bankswitch_w); |