summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Angelo Salese <angelosa@users.noreply.github.com>2010-12-30 03:28:04 +0000
committer Angelo Salese <angelosa@users.noreply.github.com>2010-12-30 03:28:04 +0000
commitde8d599059d408c3b8bb89cfbd91a5b35ea2c688 (patch)
treecc005dc46e8d7ffeb64346b2d1f002e0b48264f8 /src
parentfd09ba21d50ca6adf52b3fdadd41fbac4d0e9f48 (diff)
Implemented ROM banking support in Raiden 2 HW, improving Raiden 2 and Zero Team behaviour [O.Galibert]
Diffstat (limited to 'src')
-rw-r--r--src/mame/drivers/raiden2.c30
-rw-r--r--src/mame/includes/raiden2.h2
2 files changed, 30 insertions, 2 deletions
diff --git a/src/mame/drivers/raiden2.c b/src/mame/drivers/raiden2.c
index acb97ebfd39..8cd3271ffab 100644
--- a/src/mame/drivers/raiden2.c
+++ b/src/mame/drivers/raiden2.c
@@ -859,6 +859,8 @@ static MACHINE_RESET(raiden2)
sprcpt_init();
MACHINE_RESET_CALL(seibu_sound);
+ memory_set_bank(machine, "mainbank", 1);
+
//cop_init();
}
@@ -871,6 +873,22 @@ static MACHINE_RESET(zeroteam)
sprcpt_init();
MACHINE_RESET_CALL(seibu_sound);
+ memory_set_bank(machine, "mainbank", 1);
+
+ //cop_init();
+}
+
+static MACHINE_RESET(xsedae)
+{
+ raiden2_state *state = machine->driver_data<raiden2_state>();
+ state->bg_bank = 0;
+ state->fg_bank = 2;
+ state->mid_bank = 1;
+ sprcpt_init();
+ MACHINE_RESET_CALL(seibu_sound);
+
+ //memory_set_bank(machine, "mainbank", 1);
+
//cop_init();
}
@@ -897,6 +915,13 @@ WRITE16_MEMBER(raiden2_state::raiden2_sound_comms_w)
}
}
+WRITE16_MEMBER(raiden2_state::raiden2_bank_w)
+{
+ if(ACCESSING_BITS_8_15) {
+ logerror("select bank %d %04x\n", (data >> 15) & 1, data);
+ memory_set_bank(space.machine, "mainbank", !((data >> 15) & 1));
+ }
+}
/* MEMORY MAPS */
static ADDRESS_MAP_START( raiden2_cop_mem, ADDRESS_SPACE_PROGRAM, 16, raiden2_state )
@@ -920,7 +945,7 @@ static ADDRESS_MAP_START( raiden2_cop_mem, ADDRESS_SPACE_PROGRAM, 16, raiden2_st
AM_RANGE(0x0047e, 0x0047f) AM_WRITE(cop_dma_mode_w)
AM_RANGE(0x004a0, 0x004a7) AM_READWRITE(cop_reg_high_r, cop_reg_high_w)
AM_RANGE(0x004c0, 0x004c7) AM_READWRITE(cop_reg_low_r, cop_reg_low_w)
- AM_RANGE(0x00500, 0x00503) AM_WRITE(cop_cmd_w)
+ AM_RANGE(0x00500, 0x00505) AM_WRITE(cop_cmd_w)
AM_RANGE(0x00590, 0x00599) AM_READ(cop_itoa_digits_r)
AM_RANGE(0x005b0, 0x005b1) AM_READ(cop_status_r)
AM_RANGE(0x005b2, 0x005b3) AM_READ(cop_dist_r)
@@ -936,6 +961,7 @@ static ADDRESS_MAP_START( raiden2_cop_mem, ADDRESS_SPACE_PROGRAM, 16, raiden2_st
AM_RANGE(0x006b4, 0x006b7) AM_WRITE(sprcpt_data_2_w)
AM_RANGE(0x006b8, 0x006bb) AM_WRITE(sprcpt_val_2_w)
AM_RANGE(0x006bc, 0x006bf) AM_WRITE(sprcpt_adr_w)
+ AM_RANGE(0x006ca, 0x006cb) AM_WRITE(raiden2_bank_w)
AM_RANGE(0x006cc, 0x006cd) AM_WRITE(tile_bank_01_w)
AM_RANGE(0x006ce, 0x006cf) AM_WRITE(sprcpt_flags_2_w)
AM_RANGE(0x006fc, 0x006fd) AM_WRITE(cop_dma_trigger_w)
@@ -1405,7 +1431,7 @@ static MACHINE_CONFIG_DERIVED( xsedae, raiden2 )
MDRV_CPU_MODIFY("maincpu")
MDRV_CPU_PROGRAM_MAP(xsedae_mem)
- MDRV_MACHINE_RESET(zeroteam)
+ MDRV_MACHINE_RESET(xsedae)
MDRV_SCREEN_MODIFY("screen")
MDRV_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0, 32*8-1)
diff --git a/src/mame/includes/raiden2.h b/src/mame/includes/raiden2.h
index c6d17d8aa50..1634fdf28e3 100644
--- a/src/mame/includes/raiden2.h
+++ b/src/mame/includes/raiden2.h
@@ -29,7 +29,9 @@ public:
DECLARE_READ16_MEMBER ( cop_status_r );
DECLARE_READ16_MEMBER ( cop_dist_r );
DECLARE_READ16_MEMBER ( cop_angle_r );
+
DECLARE_WRITE16_MEMBER ( cop_dma_trigger_w );
+ DECLARE_WRITE16_MEMBER ( raiden2_bank_w );
DECLARE_WRITE16_MEMBER ( cop_tile_bank_2_w );
DECLARE_WRITE16_MEMBER ( tilemap_enable_w );
DECLARE_WRITE16_MEMBER ( tile_scroll_w );