diff options
Diffstat (limited to 'src/mame/drivers/taitojc.cpp')
-rw-r--r-- | src/mame/drivers/taitojc.cpp | 126 |
1 files changed, 66 insertions, 60 deletions
diff --git a/src/mame/drivers/taitojc.cpp b/src/mame/drivers/taitojc.cpp index c6659cd4e3c..d25b3c3fb56 100644 --- a/src/mame/drivers/taitojc.cpp +++ b/src/mame/drivers/taitojc.cpp @@ -618,26 +618,27 @@ WRITE8_MEMBER(taitojc_state::jc_lan_w) } -ADDRESS_MAP_START(taitojc_state::taitojc_map) - AM_RANGE(0x00000000, 0x001fffff) AM_ROM AM_MIRROR(0x200000) - AM_RANGE(0x00400000, 0x01bfffff) AM_ROM AM_REGION("gfx1", 0) - AM_RANGE(0x04000000, 0x040f7fff) AM_RAM AM_SHARE("vram") - AM_RANGE(0x040f8000, 0x040fbfff) AM_READWRITE(taitojc_tile_r, taitojc_tile_w) - AM_RANGE(0x040fc000, 0x040fefff) AM_READWRITE(taitojc_char_r, taitojc_char_w) - AM_RANGE(0x040ff000, 0x040fffff) AM_RAM AM_SHARE("objlist") - AM_RANGE(0x05800000, 0x0580003f) AM_READ8(jc_pcbid_r, 0xffffffff) - AM_RANGE(0x05900000, 0x05900007) AM_READWRITE8(mcu_comm_r, mcu_comm_w, 0xffffffff) - AM_RANGE(0x06400000, 0x0641ffff) AM_READWRITE(taitojc_palette_r, taitojc_palette_w) AM_SHARE("palette_ram") - AM_RANGE(0x06600000, 0x0660001f) AM_DEVREADWRITE8("tc0640fio", tc0640fio_device, read, write, 0xff000000) - AM_RANGE(0x0660004c, 0x0660004f) AM_WRITE_PORT("EEPROMOUT") - AM_RANGE(0x06800000, 0x06800003) AM_WRITE8(jc_irq_unk_w, 0x00ff0000) - AM_RANGE(0x06a00000, 0x06a01fff) AM_DEVREADWRITE8("taito_en:dpram", mb8421_device, left_r, left_w, 0xff000000) - AM_RANGE(0x06c00000, 0x06c0001f) AM_READWRITE8(jc_lan_r, jc_lan_w, 0x00ff0000) - AM_RANGE(0x08000000, 0x080fffff) AM_RAM AM_SHARE("main_ram") - AM_RANGE(0x10000000, 0x10001fff) AM_READWRITE16(dsp_shared_r, dsp_shared_w, 0xffff0000) - AM_RANGE(0x10001ff8, 0x10001ffb) AM_READ16(dsp_to_main_7fe_r, 0xffff0000) - AM_RANGE(0x10001ffc, 0x10001fff) AM_WRITE16(main_to_dsp_7ff_w, 0xffff0000) -ADDRESS_MAP_END +void taitojc_state::taitojc_map(address_map &map) +{ + map(0x00000000, 0x001fffff).rom().mirror(0x200000); + map(0x00400000, 0x01bfffff).rom().region("gfx1", 0); + map(0x04000000, 0x040f7fff).ram().share("vram"); + map(0x040f8000, 0x040fbfff).rw(this, FUNC(taitojc_state::taitojc_tile_r), FUNC(taitojc_state::taitojc_tile_w)); + map(0x040fc000, 0x040fefff).rw(this, FUNC(taitojc_state::taitojc_char_r), FUNC(taitojc_state::taitojc_char_w)); + map(0x040ff000, 0x040fffff).ram().share("objlist"); + map(0x05800000, 0x0580003f).r(this, FUNC(taitojc_state::jc_pcbid_r)); + map(0x05900000, 0x05900007).rw(this, FUNC(taitojc_state::mcu_comm_r), FUNC(taitojc_state::mcu_comm_w)); + map(0x06400000, 0x0641ffff).rw(this, FUNC(taitojc_state::taitojc_palette_r), FUNC(taitojc_state::taitojc_palette_w)).share("palette_ram"); + map(0x06600000, 0x0660001f).rw(m_tc0640fio, FUNC(tc0640fio_device::read), FUNC(tc0640fio_device::write)).umask32(0xff000000); + map(0x0660004c, 0x0660004f).portw("EEPROMOUT"); + map(0x06800001, 0x06800001).w(this, FUNC(taitojc_state::jc_irq_unk_w)); + map(0x06a00000, 0x06a01fff).rw("taito_en:dpram", FUNC(mb8421_device::left_r), FUNC(mb8421_device::left_w)).umask32(0xff000000); + map(0x06c00000, 0x06c0001f).rw(this, FUNC(taitojc_state::jc_lan_r), FUNC(taitojc_state::jc_lan_w)).umask32(0x00ff0000); + map(0x08000000, 0x080fffff).ram().share("main_ram"); + map(0x10000000, 0x10001fff).rw(this, FUNC(taitojc_state::dsp_shared_r), FUNC(taitojc_state::dsp_shared_w)).umask32(0xffff0000); + map(0x10001ff8, 0x10001ff9).r(this, FUNC(taitojc_state::dsp_to_main_7fe_r)); + map(0x10001ffc, 0x10001ffd).w(this, FUNC(taitojc_state::main_to_dsp_7ff_w)); +} /* @@ -668,12 +669,13 @@ WRITE8_MEMBER(taitojc_state::dendego_brakemeter_w) } } -ADDRESS_MAP_START(taitojc_state::dendego_map) - AM_IMPORT_FROM( taitojc_map ) - AM_RANGE(0x06e00000, 0x06e00003) AM_WRITE8(dendego_speedmeter_w, 0x00ff0000) - AM_RANGE(0x06e00004, 0x06e00007) AM_WRITE8(dendego_brakemeter_w, 0x00ff0000) - AM_RANGE(0x06e0000c, 0x06e0000f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff0000) -ADDRESS_MAP_END +void taitojc_state::dendego_map(address_map &map) +{ + taitojc_map(map); + map(0x06e00001, 0x06e00001).w(this, FUNC(taitojc_state::dendego_speedmeter_w)); + map(0x06e00005, 0x06e00005).w(this, FUNC(taitojc_state::dendego_brakemeter_w)); + map(0x06e0000d, 0x06e0000d).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} @@ -743,18 +745,20 @@ READ8_MEMBER(taitojc_state::hc11_analog_r) } -ADDRESS_MAP_START(taitojc_state::hc11_pgm_map) - AM_RANGE(0x4000, 0x5fff) AM_RAM - AM_RANGE(0x8000, 0xffff) AM_ROM -ADDRESS_MAP_END +void taitojc_state::hc11_pgm_map(address_map &map) +{ + map(0x4000, 0x5fff).ram(); + map(0x8000, 0xffff).rom(); +} -ADDRESS_MAP_START(taitojc_state::hc11_io_map) - AM_RANGE(MC68HC11_IO_PORTA, MC68HC11_IO_PORTA ) AM_READNOP // ? - AM_RANGE(MC68HC11_IO_PORTG, MC68HC11_IO_PORTG ) AM_READWRITE(hc11_comm_r, hc11_comm_w) - AM_RANGE(MC68HC11_IO_PORTH, MC68HC11_IO_PORTH ) AM_READWRITE(hc11_output_r, hc11_output_w) - AM_RANGE(MC68HC11_IO_SPI2_DATA, MC68HC11_IO_SPI2_DATA) AM_READWRITE(hc11_data_r, hc11_data_w) - AM_RANGE(MC68HC11_IO_AD0, MC68HC11_IO_AD7 ) AM_READ(hc11_analog_r) -ADDRESS_MAP_END +void taitojc_state::hc11_io_map(address_map &map) +{ + map(MC68HC11_IO_PORTA, MC68HC11_IO_PORTA).nopr(); // ? + map(MC68HC11_IO_PORTG, MC68HC11_IO_PORTG).rw(this, FUNC(taitojc_state::hc11_comm_r), FUNC(taitojc_state::hc11_comm_w)); + map(MC68HC11_IO_PORTH, MC68HC11_IO_PORTH).rw(this, FUNC(taitojc_state::hc11_output_r), FUNC(taitojc_state::hc11_output_w)); + map(MC68HC11_IO_SPI2_DATA, MC68HC11_IO_SPI2_DATA).rw(this, FUNC(taitojc_state::hc11_data_r), FUNC(taitojc_state::hc11_data_w)); + map(MC68HC11_IO_AD0, MC68HC11_IO_AD7).r(this, FUNC(taitojc_state::hc11_analog_r)); +} @@ -845,29 +849,31 @@ WRITE16_MEMBER(taitojc_state::dsp_rom_w) } } -ADDRESS_MAP_START(taitojc_state::tms_program_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM AM_MIRROR(0x4000) - AM_RANGE(0x6000, 0x7fff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(taitojc_state::tms_data_map) - AM_RANGE(0x6a01, 0x6a02) AM_DEVWRITE("tc0780fpa", tc0780fpa_device, render_w) - AM_RANGE(0x6a11, 0x6a12) AM_NOP // same as 0x6a01..02 for the second renderer chip? - AM_RANGE(0x6b20, 0x6b20) AM_DEVWRITE("tc0780fpa", tc0780fpa_device, poly_fifo_w) - AM_RANGE(0x6b22, 0x6b22) AM_DEVWRITE("tc0780fpa", tc0780fpa_device, tex_w) - AM_RANGE(0x6b23, 0x6b23) AM_DEVREADWRITE("tc0780fpa", tc0780fpa_device, tex_addr_r, tex_addr_w) - AM_RANGE(0x6c00, 0x6c01) AM_READWRITE(dsp_rom_r, dsp_rom_w) - AM_RANGE(0x7000, 0x7002) AM_WRITE(dsp_math_projection_w) - AM_RANGE(0x7010, 0x7012) AM_WRITE(dsp_math_intersection_w) - AM_RANGE(0x7013, 0x7015) AM_WRITE(dsp_math_viewport_w) - AM_RANGE(0x701b, 0x701b) AM_READ(dsp_math_intersection_r) - AM_RANGE(0x701d, 0x701d) AM_READ(dsp_math_projection_y_r) - AM_RANGE(0x701f, 0x701f) AM_READ(dsp_math_projection_x_r) - AM_RANGE(0x7022, 0x7022) AM_READ(dsp_math_unk_r) - AM_RANGE(0x7800, 0x7fff) AM_RAM AM_SHARE("dsp_shared") - AM_RANGE(0x7ffe, 0x7ffe) AM_WRITE(dsp_to_main_7fe_w) - AM_RANGE(0x8000, 0xffff) AM_RAM -ADDRESS_MAP_END +void taitojc_state::tms_program_map(address_map &map) +{ + map(0x0000, 0x1fff).ram().mirror(0x4000); + map(0x6000, 0x7fff).ram(); +} + +void taitojc_state::tms_data_map(address_map &map) +{ + map(0x6a01, 0x6a02).w(m_tc0780fpa, FUNC(tc0780fpa_device::render_w)); + map(0x6a11, 0x6a12).noprw(); // same as 0x6a01..02 for the second renderer chip? + map(0x6b20, 0x6b20).w(m_tc0780fpa, FUNC(tc0780fpa_device::poly_fifo_w)); + map(0x6b22, 0x6b22).w(m_tc0780fpa, FUNC(tc0780fpa_device::tex_w)); + map(0x6b23, 0x6b23).rw(m_tc0780fpa, FUNC(tc0780fpa_device::tex_addr_r), FUNC(tc0780fpa_device::tex_addr_w)); + map(0x6c00, 0x6c01).rw(this, FUNC(taitojc_state::dsp_rom_r), FUNC(taitojc_state::dsp_rom_w)); + map(0x7000, 0x7002).w(this, FUNC(taitojc_state::dsp_math_projection_w)); + map(0x7010, 0x7012).w(this, FUNC(taitojc_state::dsp_math_intersection_w)); + map(0x7013, 0x7015).w(this, FUNC(taitojc_state::dsp_math_viewport_w)); + map(0x701b, 0x701b).r(this, FUNC(taitojc_state::dsp_math_intersection_r)); + map(0x701d, 0x701d).r(this, FUNC(taitojc_state::dsp_math_projection_y_r)); + map(0x701f, 0x701f).r(this, FUNC(taitojc_state::dsp_math_projection_x_r)); + map(0x7022, 0x7022).r(this, FUNC(taitojc_state::dsp_math_unk_r)); + map(0x7800, 0x7fff).ram().share("dsp_shared"); + map(0x7ffe, 0x7ffe).w(this, FUNC(taitojc_state::dsp_to_main_7fe_w)); + map(0x8000, 0xffff).ram(); +} |