diff options
Diffstat (limited to 'src/mame/drivers/namcos22.cpp')
-rw-r--r-- | src/mame/drivers/namcos22.cpp | 308 |
1 files changed, 163 insertions, 145 deletions
diff --git a/src/mame/drivers/namcos22.cpp b/src/mame/drivers/namcos22.cpp index c32842148fd..6a27f262867 100644 --- a/src/mame/drivers/namcos22.cpp +++ b/src/mame/drivers/namcos22.cpp @@ -1724,20 +1724,21 @@ WRITE32_MEMBER(namcos22_state::namcos22s_chipselect_w) // System 22 -ADDRESS_MAP_START(namcos22_state::namcos22_am) +void namcos22_state::namcos22_am(address_map &map) +{ /** * Program ROM (2M bytes) * Mounted position: LLB: CPU 4D, LMB: CPU 2D, UMB: CPU 8D, UUB: CPU 6D * Known ROM chip type: TI TMS27C040-10, ST M27C4001-10, M27C4001-12Z */ - AM_RANGE(0x00000000, 0x001fffff) AM_ROM + map(0x00000000, 0x001fffff).rom(); /** * Main RAM (128K bytes) * Mounted position: CPU 3D, 5D, 7D, 9D * Known DRAM chip type: TC55328P-25, N3441256P-15 */ - AM_RANGE(0x10000000, 0x1001ffff) AM_RAM AM_MIRROR(0x08000000) + map(0x10000000, 0x1001ffff).ram().mirror(0x08000000); /** * KEYCUS @@ -1748,7 +1749,7 @@ ADDRESS_MAP_START(namcos22_state::namcos22_am) * C389? (Cyber Cycles) * C392? (Ace Driver Victory Lap) */ - AM_RANGE(0x20000000, 0x2000000f) AM_READWRITE16(namcos22_keycus_r, namcos22_keycus_w, 0xffffffff) + map(0x20000000, 0x2000000f).rw(this, FUNC(namcos22_state::namcos22_keycus_r), FUNC(namcos22_state::namcos22_keycus_w)); /** * C139 SCI Buffer @@ -1760,7 +1761,7 @@ ADDRESS_MAP_START(namcos22_state::namcos22_am) * 20010000 - 20011fff TX Buffer * 20012000 - 20013fff RX FIFO Buffer (also used for TX Buffer) */ - AM_RANGE(0x20010000, 0x20013fff) AM_RAM + map(0x20010000, 0x20013fff).ram(); /** * C139 SCI Register @@ -1791,13 +1792,13 @@ ADDRESS_MAP_START(namcos22_state::namcos22_am) * 2002000c 2 R/W RX FIFO Pointer (0x0000 - 0x0fff) * 2002000e 2 W TX FIFO Pointer (0x0000 - 0x1fff) */ - AM_RANGE(0x20020000, 0x2002000f) AM_READ(namcos22_sci_r) AM_WRITEONLY + map(0x20020000, 0x2002000f).r(this, FUNC(namcos22_state::namcos22_sci_r)).writeonly(); /** * System Controller: Interrupt Control, Peripheral Control * */ - AM_RANGE(0x40000000, 0x4000001f) AM_READWRITE8(namcos22_system_controller_r, namcos22_system_controller_w, 0xffffffff) + map(0x40000000, 0x4000001f).rw(this, FUNC(namcos22_state::namcos22_system_controller_r), FUNC(namcos22_state::namcos22_system_controller_w)); /** * Unknown Device (optional for diagnostics?) @@ -1805,22 +1806,22 @@ ADDRESS_MAP_START(namcos22_state::namcos22_am) * zero means not-connected. * may be related to device at 0x94000000 */ - AM_RANGE(0x48000000, 0x4800003f) AM_READNOP AM_WRITENOP + map(0x48000000, 0x4800003f).nopr().nopw(); /** * DIPSW * 0x50000000 - DIPSW3 * 0x50000001 - DIPSW2 */ - AM_RANGE(0x50000000, 0x50000003) AM_READWRITE16(namcos22_dipswitch_r, namcos22_cpuleds_w, 0xffffffff) - AM_RANGE(0x50000008, 0x5000000b) AM_READWRITE16(namcos22_portbit_r, namcos22_portbit_w, 0xffffffff) + map(0x50000000, 0x50000003).rw(this, FUNC(namcos22_state::namcos22_dipswitch_r), FUNC(namcos22_state::namcos22_cpuleds_w)); + map(0x50000008, 0x5000000b).rw(this, FUNC(namcos22_state::namcos22_portbit_r), FUNC(namcos22_state::namcos22_portbit_w)); /** * EEPROM * Mounted position: CPU 9E * Known chip type: HN58C65P-25 (8k x 8bit EEPROM) */ - AM_RANGE(0x58000000, 0x58001fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0xffffffff) + map(0x58000000, 0x58001fff).rw(m_eeprom, FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)); /** * C74 (Mitsubishi M37702 MCU) Shared RAM (0x60004000 - 0x6000bfff) @@ -1861,8 +1862,8 @@ ADDRESS_MAP_START(namcos22_state::namcos22_am) * +0x0100 - 0x02ff Parameter RAM from Main MPU (for SEs) * +0x0300 - 0x03ff? Song Title (put messages here from Sound CPU) */ - AM_RANGE(0x60000000, 0x60003fff) AM_WRITENOP - AM_RANGE(0x60004000, 0x6000bfff) AM_RAM AM_SHARE("shareram") + map(0x60000000, 0x60003fff).nopw(); + map(0x60004000, 0x6000bfff).ram().share("shareram"); /** * C71 (TI TMS320C25 DSP) Shared RAM (0x70000000 - 0x70020000) @@ -1872,43 +1873,43 @@ ADDRESS_MAP_START(namcos22_state::namcos22_am) * Known chip type: TC55328P-25, N341256P-15 * Notes: connected bits = 0x00ffffff (24bit) */ - AM_RANGE(0x70000000, 0x7001ffff) AM_READWRITE(namcos22_dspram_r, namcos22_dspram_w) AM_SHARE("polygonram") + map(0x70000000, 0x7001ffff).rw(this, FUNC(namcos22_state::namcos22_dspram_r), FUNC(namcos22_state::namcos22_dspram_w)).share("polygonram"); /** * LED on PCB(?) */ - AM_RANGE(0x90000000, 0x90000003) AM_RAM + map(0x90000000, 0x90000003).ram(); /** * Depth-cueing Look-up Table (fog density between near to far) * Mounted position: VIDEO 8P * Known chip type: TC55328P-25 */ - AM_RANGE(0x90010000, 0x90017fff) AM_RAM AM_SHARE("czram") + map(0x90010000, 0x90017fff).ram().share("czram"); /** * C305 (Display Controller) * Mounted position: VIDEO 7D (C305) * Notes: Boot time check: 0x90020100 - 0x9002027f */ - AM_RANGE(0x90020000, 0x90027fff) AM_RAM AM_SHARE("video_mixer") + map(0x90020000, 0x90027fff).ram().share("video_mixer"); /** * Mounted position: VIDEO 6B, 7B, 8B (near C305) * Note: 0xff00-0xffff are for Tilemap (16 x 16) */ - AM_RANGE(0x90028000, 0x9003ffff) AM_RAM_WRITE(namcos22_paletteram_w) AM_SHARE("paletteram") + map(0x90028000, 0x9003ffff).ram().w(this, FUNC(namcos22_state::namcos22_paletteram_w)).share("paletteram"); /** * unknown (option) * Note: This device may be optional. This may relate to device at 0x40000000 */ - AM_RANGE(0x90040000, 0x9007ffff) AM_RAM /* diagnostic ROM? */ + map(0x90040000, 0x9007ffff).ram(); /* diagnostic ROM? */ /** * Tilemap PCG Memory */ - AM_RANGE(0x90080000, 0x9009dfff) AM_RAM_WRITE(namcos22_cgram_w) AM_SHARE("cgram") + map(0x90080000, 0x9009dfff).ram().w(this, FUNC(namcos22_state::namcos22_cgram_w)).share("cgram"); /** * Tilemap Memory (64 x 64) @@ -1916,43 +1917,44 @@ ADDRESS_MAP_START(namcos22_state::namcos22_am) * Known chip type: HM511664 (64k x 16bit SRAM) * Note: Self test: 90084000 - 9009ffff */ - AM_RANGE(0x9009e000, 0x9009ffff) AM_RAM_WRITE(namcos22_textram_w) AM_SHARE("textram") + map(0x9009e000, 0x9009ffff).ram().w(this, FUNC(namcos22_state::namcos22_textram_w)).share("textram"); /** * Tilemap Register * Mounted position: unknown */ - AM_RANGE(0x900a0000, 0x900a000f) AM_READWRITE(namcos22_tilemapattr_r, namcos22_tilemapattr_w) AM_SHARE("tilemapattr") -ADDRESS_MAP_END + map(0x900a0000, 0x900a000f).rw(this, FUNC(namcos22_state::namcos22_tilemapattr_r), FUNC(namcos22_state::namcos22_tilemapattr_w)).share("tilemapattr"); +} // Super System 22 -ADDRESS_MAP_START(namcos22_state::namcos22s_am) - AM_RANGE(0x000000, 0x3fffff) AM_ROM - AM_RANGE(0x400000, 0x40001f) AM_READWRITE16(namcos22_keycus_r, namcos22_keycus_w, 0xffffffff) - AM_RANGE(0x410000, 0x413fff) AM_RAM /* C139 SCI buffer */ - AM_RANGE(0x420000, 0x42000f) AM_READ(namcos22_sci_r) AM_WRITEONLY /* C139 SCI registers */ - AM_RANGE(0x440000, 0x440003) AM_READWRITE16(namcos22_dipswitch_r, namcos22_cpuleds_w, 0xffffffff) - AM_RANGE(0x450008, 0x45000b) AM_READWRITE16(namcos22_portbit_r, namcos22_portbit_w, 0xffffffff) - AM_RANGE(0x460000, 0x463fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0xff00ff00) - AM_RANGE(0x700000, 0x70001f) AM_READWRITE8(namcos22_system_controller_r, namcos22s_system_controller_w, 0xffffffff) - AM_RANGE(0x800000, 0x800003) AM_WRITE(namcos22s_chipselect_w) - AM_RANGE(0x810000, 0x81000f) AM_RAM AM_SHARE("czattr") - AM_RANGE(0x810200, 0x8103ff) AM_READWRITE(namcos22s_czram_r, namcos22s_czram_w) - AM_RANGE(0x820000, 0x8202ff) AM_WRITENOP /* leftover of old (non-super) video mixer device */ - AM_RANGE(0x824000, 0x8243ff) AM_RAM AM_SHARE("video_mixer") - AM_RANGE(0x828000, 0x83ffff) AM_RAM_WRITE(namcos22_paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0x860000, 0x860007) AM_READWRITE(namcos22s_spotram_r, namcos22s_spotram_w) - AM_RANGE(0x880000, 0x89dfff) AM_RAM_WRITE(namcos22_cgram_w) AM_SHARE("cgram") - AM_RANGE(0x89e000, 0x89ffff) AM_RAM_WRITE(namcos22_textram_w) AM_SHARE("textram") - AM_RANGE(0x8a0000, 0x8a000f) AM_READWRITE(namcos22_tilemapattr_r, namcos22_tilemapattr_w) AM_SHARE("tilemapattr") - AM_RANGE(0x900000, 0x90ffff) AM_RAM AM_SHARE("vics_data") - AM_RANGE(0x940000, 0x94007f) AM_READWRITE(namcos22s_vics_control_r, namcos22s_vics_control_w) AM_SHARE("vics_control") - AM_RANGE(0x980000, 0x9affff) AM_RAM AM_SHARE("spriteram") /* C374 */ - AM_RANGE(0xa04000, 0xa0bfff) AM_RAM AM_SHARE("shareram") /* COM RAM */ - AM_RANGE(0xc00000, 0xc1ffff) AM_READWRITE(namcos22_dspram_r, namcos22_dspram_w) AM_SHARE("polygonram") - AM_RANGE(0xe00000, 0xe3ffff) AM_RAM /* workram */ -ADDRESS_MAP_END +void namcos22_state::namcos22s_am(address_map &map) +{ + map(0x000000, 0x3fffff).rom(); + map(0x400000, 0x40001f).rw(this, FUNC(namcos22_state::namcos22_keycus_r), FUNC(namcos22_state::namcos22_keycus_w)); + map(0x410000, 0x413fff).ram(); /* C139 SCI buffer */ + map(0x420000, 0x42000f).r(this, FUNC(namcos22_state::namcos22_sci_r)).writeonly(); /* C139 SCI registers */ + map(0x440000, 0x440003).rw(this, FUNC(namcos22_state::namcos22_dipswitch_r), FUNC(namcos22_state::namcos22_cpuleds_w)); + map(0x450008, 0x45000b).rw(this, FUNC(namcos22_state::namcos22_portbit_r), FUNC(namcos22_state::namcos22_portbit_w)); + map(0x460000, 0x463fff).rw(m_eeprom, FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask32(0xff00ff00); + map(0x700000, 0x70001f).rw(this, FUNC(namcos22_state::namcos22_system_controller_r), FUNC(namcos22_state::namcos22s_system_controller_w)); + map(0x800000, 0x800003).w(this, FUNC(namcos22_state::namcos22s_chipselect_w)); + map(0x810000, 0x81000f).ram().share("czattr"); + map(0x810200, 0x8103ff).rw(this, FUNC(namcos22_state::namcos22s_czram_r), FUNC(namcos22_state::namcos22s_czram_w)); + map(0x820000, 0x8202ff).nopw(); /* leftover of old (non-super) video mixer device */ + map(0x824000, 0x8243ff).ram().share("video_mixer"); + map(0x828000, 0x83ffff).ram().w(this, FUNC(namcos22_state::namcos22_paletteram_w)).share("paletteram"); + map(0x860000, 0x860007).rw(this, FUNC(namcos22_state::namcos22s_spotram_r), FUNC(namcos22_state::namcos22s_spotram_w)); + map(0x880000, 0x89dfff).ram().w(this, FUNC(namcos22_state::namcos22_cgram_w)).share("cgram"); + map(0x89e000, 0x89ffff).ram().w(this, FUNC(namcos22_state::namcos22_textram_w)).share("textram"); + map(0x8a0000, 0x8a000f).rw(this, FUNC(namcos22_state::namcos22_tilemapattr_r), FUNC(namcos22_state::namcos22_tilemapattr_w)).share("tilemapattr"); + map(0x900000, 0x90ffff).ram().share("vics_data"); + map(0x940000, 0x94007f).rw(this, FUNC(namcos22_state::namcos22s_vics_control_r), FUNC(namcos22_state::namcos22s_vics_control_w)).share("vics_control"); + map(0x980000, 0x9affff).ram().share("spriteram"); /* C374 */ + map(0xa04000, 0xa0bfff).ram().share("shareram"); /* COM RAM */ + map(0xc00000, 0xc1ffff).rw(this, FUNC(namcos22_state::namcos22_dspram_r), FUNC(namcos22_state::namcos22_dspram_w)).share("polygonram"); + map(0xe00000, 0xe3ffff).ram(); /* workram */ +} // Time Crisis gun @@ -1976,10 +1978,11 @@ READ32_MEMBER(namcos22_state::namcos22_gun_r) } } -ADDRESS_MAP_START(namcos22_state::timecris_am) - AM_IMPORT_FROM( namcos22s_am ) - AM_RANGE(0x430000, 0x43000f) AM_READ(namcos22_gun_r) -ADDRESS_MAP_END +void namcos22_state::timecris_am(address_map &map) +{ + namcos22s_am(map); + map(0x430000, 0x43000f).r(this, FUNC(namcos22_state::namcos22_gun_r)); +} // Alpine Surfer protection @@ -2009,11 +2012,12 @@ WRITE32_MEMBER(namcos22_state::alpinesa_prot_w) } } -ADDRESS_MAP_START(namcos22_state::alpinesa_am) - AM_IMPORT_FROM( namcos22s_am ) - AM_RANGE(0x200000, 0x200003) AM_READ(alpinesa_prot_r) - AM_RANGE(0x300000, 0x300003) AM_WRITE(alpinesa_prot_w) -ADDRESS_MAP_END +void namcos22_state::alpinesa_am(address_map &map) +{ + namcos22s_am(map); + map(0x200000, 0x200003).r(this, FUNC(namcos22_state::alpinesa_prot_r)); + map(0x300000, 0x300003).w(this, FUNC(namcos22_state::alpinesa_prot_w)); +} @@ -2539,33 +2543,36 @@ WRITE16_MEMBER(namcos22_state::master_render_device_w) } } -ADDRESS_MAP_START(namcos22_state::master_dsp_program) - AM_RANGE(0x0000, 0x0fff) AM_ROM /* internal ROM (4k words) */ - AM_RANGE(0x4000, 0x7fff) AM_ROM AM_SHARE("masterextram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos22_state::master_dsp_data) - AM_RANGE(0x1000, 0x3fff) AM_RAM - AM_RANGE(0x4000, 0x7fff) AM_READ(master_external_ram_r) AM_WRITE(master_external_ram_w) - AM_RANGE(0x8000, 0xffff) AM_READ(namcos22_dspram16_r) AM_WRITE(namcos22_dspram16_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos22_state::master_dsp_io) - AM_RANGE(0x0, 0x0) AM_READWRITE(point_loword_r, point_loword_iw) - AM_RANGE(0x1, 0x1) AM_READWRITE(point_hiword_ir, point_hiword_w) - AM_RANGE(0x2, 0x2) AM_READWRITE(pdp_begin_r, dsp_unk2_w) - AM_RANGE(0x3, 0x3) AM_READWRITE(dsp_unk_port3_r, point_address_w) - AM_RANGE(0x4, 0x4) AM_WRITENOP /* unknown */ - AM_RANGE(0x7, 0x7) AM_WRITE(upload_code_to_slave_dsp_w) - AM_RANGE(0x8, 0x8) AM_READWRITE(dsp_unk8_r, dsp_unk8_w) /* trigger irq? */ - AM_RANGE(0x9, 0x9) AM_READ(custom_ic_status_r) AM_WRITENOP /* trigger irq? */ - AM_RANGE(0xa, 0xa) AM_WRITE(dsp_unk_porta_w) - AM_RANGE(0xb, 0xb) AM_WRITENOP /* RINT-related? */ - AM_RANGE(0xc, 0xc) AM_WRITE(master_render_device_w) - AM_RANGE(0xd, 0xd) AM_WRITE(namcos22_dspram16_bank_w) - AM_RANGE(0xe, 0xe) AM_WRITE(dsp_led_w) - AM_RANGE(0xf, 0xf) AM_READ(dsp_upload_status_r) AM_WRITENOP -ADDRESS_MAP_END +void namcos22_state::master_dsp_program(address_map &map) +{ + map(0x0000, 0x0fff).rom(); /* internal ROM (4k words) */ + map(0x4000, 0x7fff).rom().share("masterextram"); +} + +void namcos22_state::master_dsp_data(address_map &map) +{ + map(0x1000, 0x3fff).ram(); + map(0x4000, 0x7fff).r(this, FUNC(namcos22_state::master_external_ram_r)).w(this, FUNC(namcos22_state::master_external_ram_w)); + map(0x8000, 0xffff).r(this, FUNC(namcos22_state::namcos22_dspram16_r)).w(this, FUNC(namcos22_state::namcos22_dspram16_w)); +} + +void namcos22_state::master_dsp_io(address_map &map) +{ + map(0x0, 0x0).rw(this, FUNC(namcos22_state::point_loword_r), FUNC(namcos22_state::point_loword_iw)); + map(0x1, 0x1).rw(this, FUNC(namcos22_state::point_hiword_ir), FUNC(namcos22_state::point_hiword_w)); + map(0x2, 0x2).rw(this, FUNC(namcos22_state::pdp_begin_r), FUNC(namcos22_state::dsp_unk2_w)); + map(0x3, 0x3).rw(this, FUNC(namcos22_state::dsp_unk_port3_r), FUNC(namcos22_state::point_address_w)); + map(0x4, 0x4).nopw(); /* unknown */ + map(0x7, 0x7).w(this, FUNC(namcos22_state::upload_code_to_slave_dsp_w)); + map(0x8, 0x8).rw(this, FUNC(namcos22_state::dsp_unk8_r), FUNC(namcos22_state::dsp_unk8_w)); /* trigger irq? */ + map(0x9, 0x9).r(this, FUNC(namcos22_state::custom_ic_status_r)).nopw(); /* trigger irq? */ + map(0xa, 0xa).w(this, FUNC(namcos22_state::dsp_unk_porta_w)); + map(0xb, 0xb).nopw(); /* RINT-related? */ + map(0xc, 0xc).w(this, FUNC(namcos22_state::master_render_device_w)); + map(0xd, 0xd).w(this, FUNC(namcos22_state::namcos22_dspram16_bank_w)); + map(0xe, 0xe).w(this, FUNC(namcos22_state::dsp_led_w)); + map(0xf, 0xf).r(this, FUNC(namcos22_state::dsp_upload_status_r)).nopw(); +} READ16_MEMBER(namcos22_state::dsp_bioz_r) @@ -2625,31 +2632,34 @@ WRITE16_MEMBER(namcos22_state::dsp_slave_portb_w) /* The slave dsp uses this to transmit a command sequence to an external device. */ } -ADDRESS_MAP_START(namcos22_state::slave_dsp_program) - AM_RANGE(0x0000, 0x0fff) AM_ROM /* internal ROM */ - AM_RANGE(0x8000, 0x9fff) AM_ROM AM_SHARE("slaveextram") -ADDRESS_MAP_END +void namcos22_state::slave_dsp_program(address_map &map) +{ + map(0x0000, 0x0fff).rom(); /* internal ROM */ + map(0x8000, 0x9fff).rom().share("slaveextram"); +} -ADDRESS_MAP_START(namcos22_state::slave_dsp_data) - AM_RANGE(0x8000, 0x9fff) AM_READWRITE(slave_external_ram_r, slave_external_ram_w) -ADDRESS_MAP_END +void namcos22_state::slave_dsp_data(address_map &map) +{ + map(0x8000, 0x9fff).rw(this, FUNC(namcos22_state::slave_external_ram_r), FUNC(namcos22_state::slave_external_ram_w)); +} -ADDRESS_MAP_START(namcos22_state::slave_dsp_io) +void namcos22_state::slave_dsp_io(address_map &map) +{ /* unknown signal */ - AM_RANGE(0x3, 0x3) AM_READ(dsp_slave_port3_r) + map(0x3, 0x3).r(this, FUNC(namcos22_state::dsp_slave_port3_r)); - AM_RANGE(0x4, 0x4) AM_READ(dsp_slave_port4_r) - AM_RANGE(0x5, 0x5) AM_READ(dsp_slave_port5_r) - AM_RANGE(0x6, 0x6) AM_READ(dsp_slave_port6_r) AM_WRITENOP + map(0x4, 0x4).r(this, FUNC(namcos22_state::dsp_slave_port4_r)); + map(0x5, 0x5).r(this, FUNC(namcos22_state::dsp_slave_port5_r)); + map(0x6, 0x6).r(this, FUNC(namcos22_state::dsp_slave_port6_r)).nopw(); /* render device state */ - AM_RANGE(0x8, 0x8) AM_READ(dsp_slave_port8_r) AM_WRITENOP + map(0x8, 0x8).r(this, FUNC(namcos22_state::dsp_slave_port8_r)).nopw(); /* render device */ - AM_RANGE(0xb, 0xb) AM_READWRITE(dsp_slave_portb_r, dsp_slave_portb_w) + map(0xb, 0xb).rw(this, FUNC(namcos22_state::dsp_slave_portb_r), FUNC(namcos22_state::dsp_slave_portb_w)); - AM_RANGE(0xc, 0xc) AM_WRITE(dsp_slave_portc_w) -ADDRESS_MAP_END + map(0xc, 0xc).w(this, FUNC(namcos22_state::dsp_slave_portc_w)); +} /*********************************************************************************************/ @@ -2705,28 +2715,32 @@ READ8_MEMBER(namcos22_state::iomcu_port4_s22_r) return 0x00; } -ADDRESS_MAP_START(namcos22_state::mcu_s22_program) - AM_RANGE(0x002000, 0x002fff) AM_DEVREADWRITE("c352", c352_device, read, write) - AM_RANGE(0x004000, 0x00bfff) AM_READWRITE(s22mcu_shared_r, s22mcu_shared_w ) - AM_RANGE(0x080000, 0x0fffff) AM_ROM AM_REGION("mcu", 0) - AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("mcu", 0) - AM_RANGE(0x280000, 0x2fffff) AM_ROM AM_REGION("mcu", 0) - AM_RANGE(0x301000, 0x301001) AM_NOP // watchdog? LEDs? - AM_RANGE(0x308000, 0x308003) AM_NOP // volume control IC? -ADDRESS_MAP_END +void namcos22_state::mcu_s22_program(address_map &map) +{ + map(0x002000, 0x002fff).rw("c352", FUNC(c352_device::read), FUNC(c352_device::write)); + map(0x004000, 0x00bfff).rw(this, FUNC(namcos22_state::s22mcu_shared_r), FUNC(namcos22_state::s22mcu_shared_w)); + map(0x080000, 0x0fffff).rom().region("mcu", 0); + map(0x200000, 0x27ffff).rom().region("mcu", 0); + map(0x280000, 0x2fffff).rom().region("mcu", 0); + map(0x301000, 0x301001).noprw(); // watchdog? LEDs? + map(0x308000, 0x308003).noprw(); // volume control IC? +} -ADDRESS_MAP_START(namcos22_state::iomcu_s22_program) +void namcos22_state::iomcu_s22_program(address_map &map) +{ // is there any external memory or MMIO on this one? -ADDRESS_MAP_END +} -ADDRESS_MAP_START(namcos22_state::mcu_s22_io) - AM_RANGE(M37710_PORT4, M37710_PORT4) AM_READ(mcu_port4_s22_r) -ADDRESS_MAP_END +void namcos22_state::mcu_s22_io(address_map &map) +{ + map(M37710_PORT4, M37710_PORT4).r(this, FUNC(namcos22_state::mcu_port4_s22_r)); +} -ADDRESS_MAP_START(namcos22_state::iomcu_s22_io) - AM_RANGE(M37710_PORT4, M37710_PORT4) AM_READ(iomcu_port4_s22_r) - AM_RANGE(0x00, 0xff) AM_NOP -ADDRESS_MAP_END +void namcos22_state::iomcu_s22_io(address_map &map) +{ + map(M37710_PORT4, M37710_PORT4).r(this, FUNC(namcos22_state::iomcu_port4_s22_r)); + map(0x00, 0xff).noprw(); +} // Super System 22 M37710 @@ -2794,24 +2808,26 @@ READ8_MEMBER(namcos22_state::namcos22s_mcu_adc_r) return (offset & 1) ? adc >> 8 : adc; } -ADDRESS_MAP_START(namcos22_state::mcu_program) - AM_RANGE(0x002000, 0x002fff) AM_DEVREADWRITE("c352", c352_device, read, write) - AM_RANGE(0x004000, 0x00bfff) AM_READWRITE(s22mcu_shared_r, s22mcu_shared_w ) - AM_RANGE(0x00c000, 0x00ffff) AM_ROM AM_REGION("mcu", 0xc000) - AM_RANGE(0x080000, 0x0fffff) AM_ROM AM_REGION("mcu", 0) - AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("mcu", 0) - AM_RANGE(0x280000, 0x2fffff) AM_ROM AM_REGION("mcu", 0) - AM_RANGE(0x301000, 0x301001) AM_NOP // watchdog? LEDs? - AM_RANGE(0x308000, 0x308003) AM_NOP // volume control IC? -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos22_state::mcu_io) - AM_RANGE(M37710_PORT4, M37710_PORT4) AM_READWRITE(mcu_port4_r, mcu_port4_w) - AM_RANGE(M37710_PORT5, M37710_PORT5) AM_READWRITE(mcu_port5_r, mcu_port5_w) - AM_RANGE(M37710_PORT6, M37710_PORT6) AM_READWRITE(mcu_port6_r, mcu_port6_w) - AM_RANGE(M37710_PORT7, M37710_PORT7) AM_READWRITE(mcu_port7_r, mcu_port7_w) - AM_RANGE(M37710_ADC0_L, M37710_ADC7_H) AM_READ(namcos22s_mcu_adc_r) -ADDRESS_MAP_END +void namcos22_state::mcu_program(address_map &map) +{ + map(0x002000, 0x002fff).rw("c352", FUNC(c352_device::read), FUNC(c352_device::write)); + map(0x004000, 0x00bfff).rw(this, FUNC(namcos22_state::s22mcu_shared_r), FUNC(namcos22_state::s22mcu_shared_w)); + map(0x00c000, 0x00ffff).rom().region("mcu", 0xc000); + map(0x080000, 0x0fffff).rom().region("mcu", 0); + map(0x200000, 0x27ffff).rom().region("mcu", 0); + map(0x280000, 0x2fffff).rom().region("mcu", 0); + map(0x301000, 0x301001).noprw(); // watchdog? LEDs? + map(0x308000, 0x308003).noprw(); // volume control IC? +} + +void namcos22_state::mcu_io(address_map &map) +{ + map(M37710_PORT4, M37710_PORT4).rw(this, FUNC(namcos22_state::mcu_port4_r), FUNC(namcos22_state::mcu_port4_w)); + map(M37710_PORT5, M37710_PORT5).rw(this, FUNC(namcos22_state::mcu_port5_r), FUNC(namcos22_state::mcu_port5_w)); + map(M37710_PORT6, M37710_PORT6).rw(this, FUNC(namcos22_state::mcu_port6_r), FUNC(namcos22_state::mcu_port6_w)); + map(M37710_PORT7, M37710_PORT7).rw(this, FUNC(namcos22_state::mcu_port7_r), FUNC(namcos22_state::mcu_port7_w)); + map(M37710_ADC0_L, M37710_ADC7_H).r(this, FUNC(namcos22_state::namcos22s_mcu_adc_r)); +} /*********************************************************************************************/ @@ -2954,10 +2970,11 @@ WRITE8_MEMBER(namcos22_state::alpine_mcu_port5_w) } } -ADDRESS_MAP_START(namcos22_state::alpine_io_map) - AM_IMPORT_FROM( mcu_io ) - AM_RANGE(M37710_PORT5, M37710_PORT5) AM_WRITE(alpine_mcu_port5_w) -ADDRESS_MAP_END +void namcos22_state::alpine_io_map(address_map &map) +{ + mcu_io(map); + map(M37710_PORT5, M37710_PORT5).w(this, FUNC(namcos22_state::alpine_mcu_port5_w)); +} // Prop Cycle @@ -2971,10 +2988,11 @@ WRITE8_MEMBER(namcos22_state::propcycle_mcu_port5_w) output().set_led_value(0, data & 2); } -ADDRESS_MAP_START(namcos22_state::propcycl_io_map) - AM_IMPORT_FROM( mcu_io ) - AM_RANGE(M37710_PORT5, M37710_PORT5) AM_WRITE(propcycle_mcu_port5_w) -ADDRESS_MAP_END +void namcos22_state::propcycl_io_map(address_map &map) +{ + mcu_io(map); + map(M37710_PORT5, M37710_PORT5).w(this, FUNC(namcos22_state::propcycle_mcu_port5_w)); +} TIMER_DEVICE_CALLBACK_MEMBER(namcos22_state::propcycl_pedal_interrupt) { |