summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/r2dx_v33.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/r2dx_v33.cpp')
-rw-r--r--src/mame/drivers/r2dx_v33.cpp249
1 files changed, 130 insertions, 119 deletions
diff --git a/src/mame/drivers/r2dx_v33.cpp b/src/mame/drivers/r2dx_v33.cpp
index e828666cc7f..ac511fb55ea 100644
--- a/src/mame/drivers/r2dx_v33.cpp
+++ b/src/mame/drivers/r2dx_v33.cpp
@@ -383,134 +383,143 @@ READ16_MEMBER(r2dx_v33_state::r2dx_debug_r)
return 0xffff;
}
-ADDRESS_MAP_START(r2dx_v33_state::rdx_v33_map)
- AM_RANGE(0x00000, 0x003ff) AM_RAM // vectors copied here
+void r2dx_v33_state::rdx_v33_map(address_map &map)
+{
+ map(0x00000, 0x003ff).ram(); // vectors copied here
- AM_RANGE(0x00400, 0x00401) AM_WRITE(r2dx_tilemapdma_w) // tilemaps to private buffer
- AM_RANGE(0x00402, 0x00403) AM_WRITE(r2dx_paldma_w) // palettes to private buffer
+ map(0x00400, 0x00401).w(this, FUNC(r2dx_v33_state::r2dx_tilemapdma_w)); // tilemaps to private buffer
+ map(0x00402, 0x00403).w(this, FUNC(r2dx_v33_state::r2dx_paldma_w)); // palettes to private buffer
- AM_RANGE(0x00404, 0x00405) AM_WRITE(r2dx_rom_bank_w)
- AM_RANGE(0x00406, 0x00407) AM_WRITE(tile_bank_w)
+ map(0x00404, 0x00405).w(this, FUNC(r2dx_v33_state::r2dx_rom_bank_w));
+ map(0x00406, 0x00407).w(this, FUNC(r2dx_v33_state::tile_bank_w));
- AM_RANGE(0x00420, 0x00421) AM_WRITE(r2dx_dx_w)
- AM_RANGE(0x00422, 0x00423) AM_WRITE(r2dx_dy_w)
- AM_RANGE(0x00424, 0x00425) AM_WRITE(r2dx_sdistl_w)
- AM_RANGE(0x00426, 0x00427) AM_WRITE(r2dx_sdisth_w)
- AM_RANGE(0x00428, 0x00429) AM_WRITE(r2dx_angle_w)
+ map(0x00420, 0x00421).w(this, FUNC(r2dx_v33_state::r2dx_dx_w));
+ map(0x00422, 0x00423).w(this, FUNC(r2dx_v33_state::r2dx_dy_w));
+ map(0x00424, 0x00425).w(this, FUNC(r2dx_v33_state::r2dx_sdistl_w));
+ map(0x00426, 0x00427).w(this, FUNC(r2dx_v33_state::r2dx_sdisth_w));
+ map(0x00428, 0x00429).w(this, FUNC(r2dx_v33_state::r2dx_angle_w));
- AM_RANGE(0x00430, 0x00431) AM_READ(r2dx_angle_r)
- AM_RANGE(0x00432, 0x00433) AM_READ(r2dx_dist_r)
- AM_RANGE(0x00434, 0x00435) AM_READ(r2dx_sin_r)
- AM_RANGE(0x00436, 0x00437) AM_READ(r2dx_cos_r)
+ map(0x00430, 0x00431).r(this, FUNC(r2dx_v33_state::r2dx_angle_r));
+ map(0x00432, 0x00433).r(this, FUNC(r2dx_v33_state::r2dx_dist_r));
+ map(0x00434, 0x00435).r(this, FUNC(r2dx_v33_state::r2dx_sin_r));
+ map(0x00436, 0x00437).r(this, FUNC(r2dx_v33_state::r2dx_cos_r));
- AM_RANGE(0x00600, 0x0063f) AM_DEVREADWRITE("crtc", seibu_crtc_device, read, write)
+ map(0x00600, 0x0063f).rw("crtc", FUNC(seibu_crtc_device::read), FUNC(seibu_crtc_device::write));
//AM_RANGE(0x00640, 0x006bf) AM_DEVREADWRITE("obj", seibu_encrypted_sprite_device, read, write)
- AM_RANGE(0x0068e, 0x0068f) AM_WRITENOP // sprite buffering
- AM_RANGE(0x006b0, 0x006b1) AM_WRITE(mcu_prog_w) // could be encryption key uploads just like raiden2.cpp ?
- AM_RANGE(0x006b2, 0x006b3) AM_WRITE(mcu_prog_w2)
+ map(0x0068e, 0x0068f).nopw(); // sprite buffering
+ map(0x006b0, 0x006b1).w(this, FUNC(r2dx_v33_state::mcu_prog_w)); // could be encryption key uploads just like raiden2.cpp ?
+ map(0x006b2, 0x006b3).w(this, FUNC(r2dx_v33_state::mcu_prog_w2));
// AM_RANGE(0x006b4, 0x006b5) AM_WRITENOP
// AM_RANGE(0x006b6, 0x006b7) AM_WRITENOP
- AM_RANGE(0x006bc, 0x006bd) AM_WRITE(mcu_prog_offs_w)
+ map(0x006bc, 0x006bd).w(this, FUNC(r2dx_v33_state::mcu_prog_offs_w));
// AM_RANGE(0x006be, 0x006bf) AM_WRITENOP
// sprite protection not 100% verified as the same
- AM_RANGE(0x006c0, 0x006c1) AM_READWRITE(sprite_prot_off_r, sprite_prot_off_w)
- AM_RANGE(0x006c2, 0x006c3) AM_READWRITE(sprite_prot_src_seg_r, sprite_prot_src_seg_w)
- AM_RANGE(0x006c6, 0x006c7) AM_WRITE(sprite_prot_dst1_w)
-
- AM_RANGE(0x006d8, 0x006d9) AM_WRITE(sprite_prot_x_w)
- AM_RANGE(0x006da, 0x006db) AM_WRITE(sprite_prot_y_w)
- AM_RANGE(0x006dc, 0x006dd) AM_READWRITE(sprite_prot_maxx_r, sprite_prot_maxx_w)
- AM_RANGE(0x006de, 0x006df) AM_WRITE(sprite_prot_src_w)
-
-
- AM_RANGE(0x00700, 0x00701) AM_WRITE(rdx_v33_eeprom_w)
- AM_RANGE(0x00740, 0x00741) AM_READ(r2dx_debug_r)
- AM_RANGE(0x00744, 0x00745) AM_READ_PORT("INPUT")
- AM_RANGE(0x0074c, 0x0074d) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x00762, 0x00763) AM_READ(sprite_prot_dst1_r)
-
- AM_RANGE(0x00780, 0x00781) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // single OKI chip on this version
-
- AM_RANGE(0x00800, 0x00fff) AM_RAM // copies eeprom here?
- AM_RANGE(0x01000, 0x0bfff) AM_RAM
-
- AM_RANGE(0x0c000, 0x0c7ff) AM_RAM AM_SHARE("sprites")
- AM_RANGE(0x0c800, 0x0cfff) AM_RAM
- AM_RANGE(0x0d000, 0x0d7ff) AM_RAM //_WRITE(raiden2_background_w) AM_SHARE("back_data")
- AM_RANGE(0x0d800, 0x0dfff) AM_RAM //_WRITE(raiden2_foreground_w) AM_SHARE("fore_data")
- AM_RANGE(0x0e000, 0x0e7ff) AM_RAM //_WRITE(raiden2_midground_w) AM_SHARE("mid_data")
- AM_RANGE(0x0e800, 0x0f7ff) AM_RAM //_WRITE(raiden2_text_w) AM_SHARE("text_data")
- AM_RANGE(0x0f800, 0x0ffff) AM_RAM /* Stack area */
- AM_RANGE(0x10000, 0x1efff) AM_RAM
- AM_RANGE(0x1f000, 0x1ffff) AM_RAM //_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
-
- AM_RANGE(0x20000, 0x2ffff) AM_ROMBANK("bank1") AM_WRITENOP
- AM_RANGE(0x30000, 0xfffff) AM_ROMBANK("bank3") AM_WRITENOP
-ADDRESS_MAP_END
+ map(0x006c0, 0x006c1).rw(this, FUNC(r2dx_v33_state::sprite_prot_off_r), FUNC(r2dx_v33_state::sprite_prot_off_w));
+ map(0x006c2, 0x006c3).rw(this, FUNC(r2dx_v33_state::sprite_prot_src_seg_r), FUNC(r2dx_v33_state::sprite_prot_src_seg_w));
+ map(0x006c6, 0x006c7).w(this, FUNC(r2dx_v33_state::sprite_prot_dst1_w));
+
+ map(0x006d8, 0x006d9).w(this, FUNC(r2dx_v33_state::sprite_prot_x_w));
+ map(0x006da, 0x006db).w(this, FUNC(r2dx_v33_state::sprite_prot_y_w));
+ map(0x006dc, 0x006dd).rw(this, FUNC(r2dx_v33_state::sprite_prot_maxx_r), FUNC(r2dx_v33_state::sprite_prot_maxx_w));
+ map(0x006de, 0x006df).w(this, FUNC(r2dx_v33_state::sprite_prot_src_w));
+
+
+ map(0x00700, 0x00701).w(this, FUNC(r2dx_v33_state::rdx_v33_eeprom_w));
+ map(0x00740, 0x00741).r(this, FUNC(r2dx_v33_state::r2dx_debug_r));
+ map(0x00744, 0x00745).portr("INPUT");
+ map(0x0074c, 0x0074d).portr("SYSTEM");
+ map(0x00762, 0x00763).r(this, FUNC(r2dx_v33_state::sprite_prot_dst1_r));
+
+ map(0x00780, 0x00780).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // single OKI chip on this version
+
+ map(0x00800, 0x00fff).ram(); // copies eeprom here?
+ map(0x01000, 0x0bfff).ram();
+
+ map(0x0c000, 0x0c7ff).ram().share("sprites");
+ map(0x0c800, 0x0cfff).ram();
+ map(0x0d000, 0x0d7ff).ram(); //_WRITE(raiden2_background_w) AM_SHARE("back_data")
+ map(0x0d800, 0x0dfff).ram(); //_WRITE(raiden2_foreground_w) AM_SHARE("fore_data")
+ map(0x0e000, 0x0e7ff).ram(); //_WRITE(raiden2_midground_w) AM_SHARE("mid_data")
+ map(0x0e800, 0x0f7ff).ram(); //_WRITE(raiden2_text_w) AM_SHARE("text_data")
+ map(0x0f800, 0x0ffff).ram(); /* Stack area */
+ map(0x10000, 0x1efff).ram();
+ map(0x1f000, 0x1ffff).ram(); //_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
+
+ map(0x20000, 0x2ffff).bankr("bank1").nopw();
+ map(0x30000, 0xfffff).bankr("bank3").nopw();
+}
-ADDRESS_MAP_START(r2dx_v33_state::nzeroteam_base_map)
- AM_RANGE(0x00000, 0x003ff) AM_RAM //stack area
+void r2dx_v33_state::nzeroteam_base_map(address_map &map)
+{
+ map(0x00000, 0x003ff).ram(); //stack area
- AM_RANGE(0x00400, 0x00401) AM_WRITE(r2dx_tilemapdma_w) // tilemaps to private buffer
- AM_RANGE(0x00402, 0x00403) AM_WRITE(r2dx_paldma_w) // palettes to private buffer
+ map(0x00400, 0x00401).w(this, FUNC(r2dx_v33_state::r2dx_tilemapdma_w)); // tilemaps to private buffer
+ map(0x00402, 0x00403).w(this, FUNC(r2dx_v33_state::r2dx_paldma_w)); // palettes to private buffer
// 0x404 is bank on r2dx, this doesn't need it
// AM_RANGE(0x00406, 0x00407) AM_WRITE(tile_bank_w) // not the same?
- AM_RANGE(0x00406, 0x00407) AM_NOP // always 6022, supposed to be the tile bank but ignores the actual value???
-
- AM_RANGE(0x00420, 0x00421) AM_WRITE(r2dx_dx_w)
- AM_RANGE(0x00422, 0x00423) AM_WRITE(r2dx_dy_w)
- AM_RANGE(0x00424, 0x00425) AM_WRITE(r2dx_sdistl_w)
- AM_RANGE(0x00426, 0x00427) AM_WRITE(r2dx_sdisth_w)
- AM_RANGE(0x00428, 0x00429) AM_WRITE(r2dx_angle_w)
-
- AM_RANGE(0x00430, 0x00431) AM_READ(r2dx_angle_r)
- AM_RANGE(0x00432, 0x00433) AM_READ(r2dx_dist_r)
- AM_RANGE(0x00434, 0x00435) AM_READ(r2dx_sin_r)
- AM_RANGE(0x00436, 0x00437) AM_READ(r2dx_cos_r)
+ map(0x00406, 0x00407).noprw(); // always 6022, supposed to be the tile bank but ignores the actual value???
+
+ map(0x00420, 0x00421).w(this, FUNC(r2dx_v33_state::r2dx_dx_w));
+ map(0x00422, 0x00423).w(this, FUNC(r2dx_v33_state::r2dx_dy_w));
+ map(0x00424, 0x00425).w(this, FUNC(r2dx_v33_state::r2dx_sdistl_w));
+ map(0x00426, 0x00427).w(this, FUNC(r2dx_v33_state::r2dx_sdisth_w));
+ map(0x00428, 0x00429).w(this, FUNC(r2dx_v33_state::r2dx_angle_w));
+
+ map(0x00430, 0x00431).r(this, FUNC(r2dx_v33_state::r2dx_angle_r));
+ map(0x00432, 0x00433).r(this, FUNC(r2dx_v33_state::r2dx_dist_r));
+ map(0x00434, 0x00435).r(this, FUNC(r2dx_v33_state::r2dx_sin_r));
+ map(0x00436, 0x00437).r(this, FUNC(r2dx_v33_state::r2dx_cos_r));
+
+ map(0x00600, 0x0063f).rw("crtc", FUNC(seibu_crtc_device::read), FUNC(seibu_crtc_device::write));
+ //map(0x00640, 0x006bf)rw("obj", FUNC(seibu_encrypted_sprite_device::read), FUNC(seibu_encrypted_sprite_device::write));
+ map(0x0068e, 0x0068f).nopw(); // sprite buffering
+ map(0x006b0, 0x006b1).w(this, FUNC(r2dx_v33_state::mcu_prog_w));
+ map(0x006b2, 0x006b3).w(this, FUNC(r2dx_v33_state::mcu_prog_w2));
+// map(0x006b4, 0x006b5).nopw();
+// map(0x006b6, 0x006b7).nopw();
+ map(0x006bc, 0x006bd).w(this, FUNC(r2dx_v33_state::mcu_prog_offs_w));
+// map(0x006d8, 0x006d9).w(this, FUNC(r2dx_v33_state::bbbbll_w)); // scroll?
+// map(0x006dc, 0x006dd).r(this, FUNC(r2dx_v33_state::nzerotea_unknown_r));
+// map(0x006de, 0x006df).w(this, FUNC(r2dx_v33_state::mcu_unkaa_w)); // mcu command related?
+// map(0x00700, 0x00701).w(this, FUNC(r2dx_v33_state::rdx_v33_eeprom_w));
+
+// map(0x00762, 0x00763).r(this, FUNC(r2dx_v33_state::nzerotea_unknown_r));
+
+ map(0x00780, 0x0079f).lrw8("seibu_sound_rw",
+ [this](address_space &space, offs_t offset, u8 mem_mask) {
+ return m_seibu_sound->main_r(space, offset >> 1, mem_mask);
+ },
+ [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) {
+ m_seibu_sound->main_w(space, offset >> 1, data, mem_mask);
+ }).umask16(0x00ff);
+
+ map(0x00800, 0x00fff).ram();
+ map(0x01000, 0x0bfff).ram();
+
+ map(0x0c000, 0x0c7ff).ram().share("sprites");
+ map(0x0c800, 0x0cfff).ram();
+ map(0x0d000, 0x0d7ff).ram(); //.w(this, FUNC(r2dx_v33_state::raiden2_background_w)).share("back_data");
+ map(0x0d800, 0x0dfff).ram(); //.w(this, FUNC(r2dx_v33_state::raiden2_foreground_w)).share("fore_data");
+ map(0x0e000, 0x0e7ff).ram(); //.w(this, FUNC(r2dx_v33_state::raiden2_midground_w)).share("mid_data");
+ map(0x0e800, 0x0f7ff).ram(); //.w(this, FUNC(r2dx_v33_state::raiden2_text_w)).share("text_data");
+ map(0x0f800, 0x0ffff).ram(); /* Stack area */
+ map(0x10000, 0x1efff).ram();
+ map(0x1f000, 0x1ffff).ram(); //.w("palette", FUNC(palette_device::write)).share("palette");
+
+ map(0x20000, 0xfffff).rom().region("maincpu", 0x20000);
+}
- AM_RANGE(0x00600, 0x0063f) AM_DEVREADWRITE("crtc", seibu_crtc_device, read, write)
- //AM_RANGE(0x00640, 0x006bf) AM_DEVREADWRITE("obj", seibu_encrypted_sprite_device, read, write)
- AM_RANGE(0x0068e, 0x0068f) AM_WRITENOP // sprite buffering
- AM_RANGE(0x006b0, 0x006b1) AM_WRITE(mcu_prog_w)
- AM_RANGE(0x006b2, 0x006b3) AM_WRITE(mcu_prog_w2)
-// AM_RANGE(0x006b4, 0x006b5) AM_WRITENOP
-// AM_RANGE(0x006b6, 0x006b7) AM_WRITENOP
- AM_RANGE(0x006bc, 0x006bd) AM_WRITE(mcu_prog_offs_w)
-// AM_RANGE(0x006d8, 0x006d9) AM_WRITE(bbbbll_w) // scroll?
-// AM_RANGE(0x006dc, 0x006dd) AM_READ(nzerotea_unknown_r)
-// AM_RANGE(0x006de, 0x006df) AM_WRITE(mcu_unkaa_w) // mcu command related?
- //AM_RANGE(0x00700, 0x00701) AM_WRITE(rdx_v33_eeprom_w)
-
-// AM_RANGE(0x00762, 0x00763) AM_READ(nzerotea_unknown_r)
-
- ;map(0x00780, 0x0079f).lrw8("seibu_sound_rw", [this](address_space &space, offs_t offset, u8 mem_mask){ return m_seibu_sound->main_r(space, offset >> 1, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask){ m_seibu_sound->main_w(space, offset >> 1, data, mem_mask); }).umask16(0x00ff);
-
- AM_RANGE(0x00800, 0x00fff) AM_RAM
- AM_RANGE(0x01000, 0x0bfff) AM_RAM
-
- AM_RANGE(0x0c000, 0x0c7ff) AM_RAM AM_SHARE("sprites")
- AM_RANGE(0x0c800, 0x0cfff) AM_RAM
- AM_RANGE(0x0d000, 0x0d7ff) AM_RAM //_WRITE(raiden2_background_w) AM_SHARE("back_data")
- AM_RANGE(0x0d800, 0x0dfff) AM_RAM //_WRITE(raiden2_foreground_w) AM_SHARE("fore_data")
- AM_RANGE(0x0e000, 0x0e7ff) AM_RAM //_WRITE(raiden2_midground_w) AM_SHARE("mid_data")
- AM_RANGE(0x0e800, 0x0f7ff) AM_RAM //_WRITE(raiden2_text_w) AM_SHARE("text_data")
- AM_RANGE(0x0f800, 0x0ffff) AM_RAM /* Stack area */
- AM_RANGE(0x10000, 0x1efff) AM_RAM
- AM_RANGE(0x1f000, 0x1ffff) AM_RAM //_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
-
- AM_RANGE(0x20000, 0xfffff) AM_ROM AM_REGION("maincpu", 0x20000 )
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(r2dx_v33_state::nzerotea_map)
- AM_IMPORT_FROM( nzeroteam_base_map )
- AM_RANGE(0x00740, 0x00741) AM_READ_PORT("DSW")
- AM_RANGE(0x00744, 0x00745) AM_READ_PORT("INPUT")
- AM_RANGE(0x0074c, 0x0074d) AM_READ_PORT("SYSTEM")
-ADDRESS_MAP_END
+void r2dx_v33_state::nzerotea_map(address_map &map)
+{
+ nzeroteam_base_map(map);
+ map(0x00740, 0x00741).portr("DSW");
+ map(0x00744, 0x00745).portr("INPUT");
+ map(0x0074c, 0x0074d).portr("SYSTEM");
+}
WRITE16_MEMBER(r2dx_v33_state::zerotm2k_eeprom_w)
{
@@ -521,13 +530,14 @@ WRITE16_MEMBER(r2dx_v33_state::zerotm2k_eeprom_w)
m_eeprom->cs_write((data & 0x01) ? ASSERT_LINE : CLEAR_LINE);
}
-ADDRESS_MAP_START(r2dx_v33_state::zerotm2k_map)
- AM_IMPORT_FROM( nzeroteam_base_map )
- AM_RANGE(0x00740, 0x00741) AM_READ_PORT("P3_P4")
- AM_RANGE(0x00744, 0x00745) AM_READ_PORT("INPUT")
- AM_RANGE(0x0074c, 0x0074d) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x00748, 0x00749) AM_WRITE(zerotm2k_eeprom_w)
-ADDRESS_MAP_END
+void r2dx_v33_state::zerotm2k_map(address_map &map)
+{
+ nzeroteam_base_map(map);
+ map(0x00740, 0x00741).portr("P3_P4");
+ map(0x00744, 0x00745).portr("INPUT");
+ map(0x0074c, 0x0074d).portr("SYSTEM");
+ map(0x00748, 0x00749).w(this, FUNC(r2dx_v33_state::zerotm2k_eeprom_w));
+}
@@ -769,9 +779,10 @@ MACHINE_RESET_MEMBER(r2dx_v33_state,nzeroteam)
mid_bank = 1;
}
-ADDRESS_MAP_START(r2dx_v33_state::r2dx_oki_map)
- AM_RANGE(0x00000, 0x3ffff) AM_ROMBANK("okibank")
-ADDRESS_MAP_END
+void r2dx_v33_state::r2dx_oki_map(address_map &map)
+{
+ map(0x00000, 0x3ffff).bankr("okibank");
+}
MACHINE_CONFIG_START(r2dx_v33_state::rdx_v33)