mirror of
https://github.com/holub/mame
synced 2025-04-23 08:49:55 +03:00
Merge pull request #4736 from wilbertpol/wswan_simplify
wswan: simplify read/write handlers (nw)
This commit is contained in:
commit
c9930e9388
@ -205,26 +205,26 @@ void ws_rom_device::device_timer(emu_timer &timer, device_timer_id id, int param
|
||||
mapper specific handlers
|
||||
-------------------------------------------------*/
|
||||
|
||||
READ8_MEMBER(ws_rom_device::read_rom20)
|
||||
uint8_t ws_rom_device::read_rom20(offs_t offset)
|
||||
{
|
||||
return m_rom[offset + m_base20];
|
||||
}
|
||||
|
||||
|
||||
READ8_MEMBER(ws_rom_device::read_rom30)
|
||||
uint8_t ws_rom_device::read_rom30(offs_t offset)
|
||||
{
|
||||
return m_rom[offset + m_base30];
|
||||
}
|
||||
|
||||
|
||||
READ8_MEMBER(ws_rom_device::read_rom40)
|
||||
uint8_t ws_rom_device::read_rom40(offs_t offset)
|
||||
{
|
||||
// we still need to mask in some cases, e.g. when game is 512K
|
||||
return m_rom[(offset + m_base40) & (m_rom_size - 1)];
|
||||
}
|
||||
|
||||
|
||||
READ8_MEMBER(ws_rom_device::read_io)
|
||||
uint8_t ws_rom_device::read_io(offs_t offset)
|
||||
{
|
||||
uint8_t value = m_io_regs[offset];
|
||||
|
||||
@ -254,7 +254,7 @@ READ8_MEMBER(ws_rom_device::read_io)
|
||||
return value;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(ws_rom_device::write_io)
|
||||
void ws_rom_device::write_io(offs_t offset, uint8_t data)
|
||||
{
|
||||
switch (offset)
|
||||
{
|
||||
@ -344,30 +344,30 @@ WRITE8_MEMBER(ws_rom_device::write_io)
|
||||
m_io_regs[offset] = data;
|
||||
}
|
||||
|
||||
READ8_MEMBER(ws_rom_sram_device::read_ram)
|
||||
uint8_t ws_rom_sram_device::read_ram(offs_t offset)
|
||||
{
|
||||
return m_nvram[m_nvram_base + offset];
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(ws_rom_sram_device::write_ram)
|
||||
void ws_rom_sram_device::write_ram(offs_t offset, uint8_t data)
|
||||
{
|
||||
m_nvram[m_nvram_base + offset] = data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(ws_rom_sram_device::write_io)
|
||||
void ws_rom_sram_device::write_io(offs_t offset, uint8_t data)
|
||||
{
|
||||
switch (offset)
|
||||
{
|
||||
case 0x01: // SRAM bank to select
|
||||
m_nvram_base = (data * 0x10000) & (m_nvram.size() - 1);
|
||||
default:
|
||||
ws_rom_device::write_io(space, offset, data);
|
||||
ws_rom_device::write_io(offset, data);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
READ8_MEMBER(ws_rom_eeprom_device::read_io)
|
||||
uint8_t ws_rom_eeprom_device::read_io(offs_t offset)
|
||||
{
|
||||
uint8_t value = m_io_regs[offset];
|
||||
|
||||
@ -381,14 +381,14 @@ READ8_MEMBER(ws_rom_eeprom_device::read_io)
|
||||
// EEPROM reads, taken from regs
|
||||
break;
|
||||
default:
|
||||
value = ws_rom_device::read_io(space, offset);
|
||||
value = ws_rom_device::read_io(offset);
|
||||
break;
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(ws_rom_eeprom_device::write_io)
|
||||
void ws_rom_eeprom_device::write_io(offs_t offset, uint8_t data)
|
||||
{
|
||||
switch (offset)
|
||||
{
|
||||
@ -530,7 +530,7 @@ WRITE8_MEMBER(ws_rom_eeprom_device::write_io)
|
||||
break;
|
||||
|
||||
default:
|
||||
ws_rom_device::write_io(space, offset, data);
|
||||
ws_rom_device::write_io(offset, data);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -16,11 +16,11 @@ public:
|
||||
ws_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
// reading and writing
|
||||
virtual DECLARE_READ8_MEMBER(read_rom20) override;
|
||||
virtual DECLARE_READ8_MEMBER(read_rom30) override;
|
||||
virtual DECLARE_READ8_MEMBER(read_rom40) override;
|
||||
virtual DECLARE_READ8_MEMBER(read_io) override;
|
||||
virtual DECLARE_WRITE8_MEMBER(write_io) override;
|
||||
virtual uint8_t read_rom20(offs_t offset) override;
|
||||
virtual uint8_t read_rom30(offs_t offset) override;
|
||||
virtual uint8_t read_rom40(offs_t offset) override;
|
||||
virtual uint8_t read_io(offs_t offset) override;
|
||||
virtual void write_io(offs_t offset, uint8_t data) override;
|
||||
|
||||
protected:
|
||||
static constexpr device_timer_id TIMER_RTC = 0;
|
||||
@ -59,9 +59,9 @@ public:
|
||||
ws_rom_sram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
// reading and writing
|
||||
virtual DECLARE_READ8_MEMBER(read_ram) override;
|
||||
virtual DECLARE_WRITE8_MEMBER(write_ram) override;
|
||||
virtual DECLARE_WRITE8_MEMBER(write_io) override;
|
||||
virtual uint8_t read_ram(offs_t offset) override;
|
||||
virtual void write_ram(offs_t offset, uint8_t data) override;
|
||||
virtual void write_io(offs_t offset, uint8_t data) override;
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
@ -82,8 +82,8 @@ public:
|
||||
ws_rom_eeprom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
// reading and writing
|
||||
virtual DECLARE_READ8_MEMBER(read_io) override;
|
||||
virtual DECLARE_WRITE8_MEMBER(write_io) override;
|
||||
virtual uint8_t read_io(offs_t offset) override;
|
||||
virtual void write_io(offs_t offset, uint8_t data) override;
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
|
@ -312,10 +312,10 @@ std::string ws_cart_slot_device::get_default_card_software(get_default_card_soft
|
||||
read_rom20
|
||||
-------------------------------------------------*/
|
||||
|
||||
READ8_MEMBER(ws_cart_slot_device::read_rom20)
|
||||
uint8_t ws_cart_slot_device::read_rom20(offs_t offset)
|
||||
{
|
||||
if (m_cart)
|
||||
return m_cart->read_rom20(space, offset);
|
||||
return m_cart->read_rom20(offset);
|
||||
else
|
||||
return 0xff;
|
||||
}
|
||||
@ -324,10 +324,10 @@ READ8_MEMBER(ws_cart_slot_device::read_rom20)
|
||||
read_rom30
|
||||
-------------------------------------------------*/
|
||||
|
||||
READ8_MEMBER(ws_cart_slot_device::read_rom30)
|
||||
uint8_t ws_cart_slot_device::read_rom30(offs_t offset)
|
||||
{
|
||||
if (m_cart)
|
||||
return m_cart->read_rom30(space, offset);
|
||||
return m_cart->read_rom30(offset);
|
||||
else
|
||||
return 0xff;
|
||||
}
|
||||
@ -336,10 +336,10 @@ READ8_MEMBER(ws_cart_slot_device::read_rom30)
|
||||
read_rom40
|
||||
-------------------------------------------------*/
|
||||
|
||||
READ8_MEMBER(ws_cart_slot_device::read_rom40)
|
||||
uint8_t ws_cart_slot_device::read_rom40(offs_t offset)
|
||||
{
|
||||
if (m_cart)
|
||||
return m_cart->read_rom40(space, offset);
|
||||
return m_cart->read_rom40(offset);
|
||||
else
|
||||
return 0xff;
|
||||
}
|
||||
@ -348,10 +348,10 @@ READ8_MEMBER(ws_cart_slot_device::read_rom40)
|
||||
read_ram
|
||||
-------------------------------------------------*/
|
||||
|
||||
READ8_MEMBER(ws_cart_slot_device::read_ram)
|
||||
uint8_t ws_cart_slot_device::read_ram(offs_t offset)
|
||||
{
|
||||
if (m_cart)
|
||||
return m_cart->read_ram(space, offset);
|
||||
return m_cart->read_ram(offset);
|
||||
else
|
||||
return 0xff;
|
||||
}
|
||||
@ -360,20 +360,20 @@ READ8_MEMBER(ws_cart_slot_device::read_ram)
|
||||
write_ram
|
||||
-------------------------------------------------*/
|
||||
|
||||
WRITE8_MEMBER(ws_cart_slot_device::write_ram)
|
||||
void ws_cart_slot_device::write_ram(offs_t offset, uint8_t data)
|
||||
{
|
||||
if (m_cart)
|
||||
m_cart->write_ram(space, offset, data);
|
||||
m_cart->write_ram(offset, data);
|
||||
}
|
||||
|
||||
/*-------------------------------------------------
|
||||
read_io
|
||||
-------------------------------------------------*/
|
||||
|
||||
READ8_MEMBER(ws_cart_slot_device::read_io)
|
||||
uint8_t ws_cart_slot_device::read_io(offs_t offset)
|
||||
{
|
||||
if (m_cart)
|
||||
return m_cart->read_io(space, offset);
|
||||
return m_cart->read_io(offset);
|
||||
else
|
||||
return 0xff;
|
||||
}
|
||||
@ -382,10 +382,10 @@ READ8_MEMBER(ws_cart_slot_device::read_io)
|
||||
write_io
|
||||
-------------------------------------------------*/
|
||||
|
||||
WRITE8_MEMBER(ws_cart_slot_device::write_io)
|
||||
void ws_cart_slot_device::write_io(offs_t offset, uint8_t data)
|
||||
{
|
||||
if (m_cart)
|
||||
m_cart->write_io(space, offset, data);
|
||||
m_cart->write_io(offset, data);
|
||||
}
|
||||
|
||||
|
||||
|
@ -31,13 +31,13 @@ public:
|
||||
virtual ~device_ws_cart_interface();
|
||||
|
||||
// reading and writing
|
||||
virtual DECLARE_READ8_MEMBER(read_rom20) { return 0xff; }
|
||||
virtual DECLARE_READ8_MEMBER(read_rom30) { return 0xff; }
|
||||
virtual DECLARE_READ8_MEMBER(read_rom40) { return 0xff; }
|
||||
virtual DECLARE_READ8_MEMBER(read_ram) { return 0xff; }
|
||||
virtual DECLARE_WRITE8_MEMBER(write_ram) {}
|
||||
virtual DECLARE_READ8_MEMBER(read_io) { return 0xff; }
|
||||
virtual DECLARE_WRITE8_MEMBER(write_io) { }
|
||||
virtual uint8_t read_rom20(offs_t offset) { return 0xff; }
|
||||
virtual uint8_t read_rom30(offs_t offset) { return 0xff; }
|
||||
virtual uint8_t read_rom40(offs_t offset) { return 0xff; }
|
||||
virtual uint8_t read_ram(offs_t offset) { return 0xff; }
|
||||
virtual void write_ram(offs_t offset, uint8_t data) {}
|
||||
virtual uint8_t read_io(offs_t offset) { return 0xff; }
|
||||
virtual void write_io(offs_t offset, uint8_t data) { }
|
||||
|
||||
void rom_alloc(uint32_t size, const char *tag);
|
||||
void nvram_alloc(uint32_t size);
|
||||
@ -109,13 +109,13 @@ public:
|
||||
virtual std::string get_default_card_software(get_default_card_software_hook &hook) const override;
|
||||
|
||||
// reading and writing
|
||||
virtual DECLARE_READ8_MEMBER(read_rom20);
|
||||
virtual DECLARE_READ8_MEMBER(read_rom30);
|
||||
virtual DECLARE_READ8_MEMBER(read_rom40);
|
||||
virtual DECLARE_READ8_MEMBER(read_ram);
|
||||
virtual DECLARE_WRITE8_MEMBER(write_ram);
|
||||
virtual DECLARE_READ8_MEMBER(read_io);
|
||||
virtual DECLARE_WRITE8_MEMBER(write_io);
|
||||
virtual uint8_t read_rom20(offs_t offset);
|
||||
virtual uint8_t read_rom30(offs_t offset);
|
||||
virtual uint8_t read_rom40(offs_t offset);
|
||||
virtual uint8_t read_ram(offs_t offset);
|
||||
virtual void write_ram(offs_t offset, uint8_t data);
|
||||
virtual uint8_t read_io(offs_t offset);
|
||||
virtual void write_io(offs_t offset, uint8_t data);
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
|
@ -282,7 +282,7 @@ void wswan_sound_device::wswan_ch_set_freq( CHAN *ch, uint16_t freq )
|
||||
ch->period = 2048 - freq;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( wswan_sound_device::port_w )
|
||||
void wswan_sound_device::port_w(offs_t offset, uint8_t data)
|
||||
{
|
||||
m_channel->update();
|
||||
|
||||
|
@ -25,7 +25,7 @@ class wswan_sound_device : public device_t,
|
||||
public:
|
||||
wswan_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
DECLARE_WRITE8_MEMBER( port_w );
|
||||
void port_w(offs_t offset, uint8_t data);
|
||||
|
||||
protected:
|
||||
struct CHAN
|
||||
|
@ -85,9 +85,9 @@ protected:
|
||||
required_ioport m_cursy;
|
||||
required_ioport m_buttons;
|
||||
|
||||
DECLARE_READ8_MEMBER(bios_r);
|
||||
DECLARE_READ8_MEMBER(port_r);
|
||||
DECLARE_WRITE8_MEMBER(port_w);
|
||||
uint8_t bios_r(offs_t offset);
|
||||
uint8_t port_r(offs_t offset);
|
||||
void port_w(offs_t offset, uint8_t data);
|
||||
|
||||
void set_irq_line(int irq);
|
||||
void dma_sound_cb();
|
||||
|
@ -137,7 +137,7 @@ void wswan_state::dma_sound_cb()
|
||||
{
|
||||
address_space &space = m_maincpu->space(AS_PROGRAM);
|
||||
/* TODO: Output sound DMA byte */
|
||||
port_w(space, 0x89, space.read_byte(m_sound_dma.source));
|
||||
port_w(0x89, space.read_byte(m_sound_dma.source));
|
||||
m_sound_dma.size--;
|
||||
m_sound_dma.source = (m_sound_dma.source + 1) & 0x0fffff;
|
||||
if (m_sound_dma.size == 0)
|
||||
@ -180,15 +180,15 @@ void wswan_state::common_start()
|
||||
if (m_cart->exists())
|
||||
{
|
||||
// ROM
|
||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0x20000, 0x2ffff, read8_delegate(FUNC(ws_cart_slot_device::read_rom20),(ws_cart_slot_device*)m_cart));
|
||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0x30000, 0x3ffff, read8_delegate(FUNC(ws_cart_slot_device::read_rom30),(ws_cart_slot_device*)m_cart));
|
||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0x40000, 0xeffff, read8_delegate(FUNC(ws_cart_slot_device::read_rom40),(ws_cart_slot_device*)m_cart));
|
||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0x20000, 0x2ffff, read8sm_delegate(FUNC(ws_cart_slot_device::read_rom20),(ws_cart_slot_device*)m_cart));
|
||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0x30000, 0x3ffff, read8sm_delegate(FUNC(ws_cart_slot_device::read_rom30),(ws_cart_slot_device*)m_cart));
|
||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0x40000, 0xeffff, read8sm_delegate(FUNC(ws_cart_slot_device::read_rom40),(ws_cart_slot_device*)m_cart));
|
||||
|
||||
// SRAM
|
||||
if (m_cart->get_type() == WS_SRAM)
|
||||
{
|
||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0x10000, 0x1ffff, read8_delegate(FUNC(ws_cart_slot_device::read_ram),(ws_cart_slot_device*)m_cart));
|
||||
m_maincpu->space(AS_PROGRAM).install_write_handler(0x10000, 0x1ffff, write8_delegate(FUNC(ws_cart_slot_device::write_ram),(ws_cart_slot_device*)m_cart));
|
||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0x10000, 0x1ffff, read8sm_delegate(FUNC(ws_cart_slot_device::read_ram),(ws_cart_slot_device*)m_cart));
|
||||
m_maincpu->space(AS_PROGRAM).install_write_handler(0x10000, 0x1ffff, write8sm_delegate(FUNC(ws_cart_slot_device::write_ram),(ws_cart_slot_device*)m_cart));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -224,15 +224,15 @@ void wswan_state::machine_reset()
|
||||
memset(&m_sound_dma, 0, sizeof(m_sound_dma));
|
||||
}
|
||||
|
||||
READ8_MEMBER( wswan_state::bios_r )
|
||||
uint8_t wswan_state::bios_r(offs_t offset)
|
||||
{
|
||||
if (!m_bios_disabled)
|
||||
return m_ws_bios_bank[offset];
|
||||
else
|
||||
return m_cart->read_rom40(space, offset + 0xb0000);
|
||||
return m_cart->read_rom40(offset + 0xb0000);
|
||||
}
|
||||
|
||||
READ8_MEMBER( wswan_state::port_r )
|
||||
uint8_t wswan_state::port_r(offs_t offset)
|
||||
{
|
||||
uint8_t value = m_ws_portram[offset];
|
||||
|
||||
@ -240,7 +240,7 @@ READ8_MEMBER( wswan_state::port_r )
|
||||
logerror("PC=%X: port read %02X\n", m_maincpu->pc(), offset);
|
||||
|
||||
if (offset < 0x40 || (offset >= 0xa1 && offset < 0xb0))
|
||||
return m_vdp->reg_r(space, offset);
|
||||
return m_vdp->reg_r(offset);
|
||||
|
||||
switch (offset)
|
||||
{
|
||||
@ -263,7 +263,7 @@ READ8_MEMBER( wswan_state::port_r )
|
||||
value = m_sound_dma.enable;
|
||||
break;
|
||||
case 0x60:
|
||||
value = m_vdp->reg_r(space, offset);
|
||||
value = m_vdp->reg_r(offset);
|
||||
break;
|
||||
case 0xa0: // Hardware type
|
||||
// Bit 0 - Disable/enable Bios
|
||||
@ -289,14 +289,14 @@ READ8_MEMBER( wswan_state::port_r )
|
||||
case 0xcd:
|
||||
case 0xce:
|
||||
case 0xcf:
|
||||
value = m_cart->read_io(space, offset & 0x0f);
|
||||
value = m_cart->read_io(offset & 0x0f);
|
||||
break;
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( wswan_state::port_w )
|
||||
void wswan_state::port_w(offs_t offset, uint8_t data)
|
||||
{
|
||||
address_space &mem = m_maincpu->space(AS_PROGRAM);
|
||||
uint8_t input;
|
||||
@ -304,7 +304,7 @@ WRITE8_MEMBER( wswan_state::port_w )
|
||||
|
||||
if (offset < 0x40 || (offset >= 0xa1 && offset < 0xb0))
|
||||
{
|
||||
m_vdp->reg_w(space, offset, data);
|
||||
m_vdp->reg_w(offset, data);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -403,7 +403,7 @@ WRITE8_MEMBER( wswan_state::port_w )
|
||||
m_sound_dma.enable = data;
|
||||
break;
|
||||
case 0x60:
|
||||
m_vdp->reg_w(space, offset, data);
|
||||
m_vdp->reg_w(offset, data);
|
||||
break;
|
||||
case 0x80: /* Audio 1 freq (lo)
|
||||
Bit 0-7 - Audio channel 1 frequency bit 0-7
|
||||
@ -488,7 +488,7 @@ WRITE8_MEMBER( wswan_state::port_w )
|
||||
Bit 0-3 - Master volume
|
||||
Bit 4-7 - Unknown
|
||||
*/
|
||||
m_sound->port_w(space, offset, data);
|
||||
m_sound->port_w(offset, data);
|
||||
break;
|
||||
case 0xa0: /* Hardware type - this is probably read only
|
||||
Bit 0 - Enable cartridge slot and/or disable bios
|
||||
@ -652,7 +652,7 @@ WRITE8_MEMBER( wswan_state::port_w )
|
||||
case 0xcd:
|
||||
case 0xce:
|
||||
case 0xcf:
|
||||
m_cart->write_io(space, offset & 0x0f, data);
|
||||
m_cart->write_io(offset & 0x0f, data);
|
||||
break;
|
||||
default:
|
||||
logerror( "Write to unsupported port: %X - %X\n", offset, data );
|
||||
|
@ -856,7 +856,7 @@ uint32_t wswan_video_device::screen_update(screen_device &screen, bitmap_ind16 &
|
||||
}
|
||||
|
||||
|
||||
READ8_MEMBER(wswan_video_device::reg_r)
|
||||
uint8_t wswan_video_device::reg_r(offs_t offset)
|
||||
{
|
||||
uint8_t value = m_regs[offset];
|
||||
|
||||
@ -892,7 +892,7 @@ READ8_MEMBER(wswan_video_device::reg_r)
|
||||
}
|
||||
|
||||
|
||||
WRITE8_MEMBER(wswan_video_device::reg_w)
|
||||
void wswan_video_device::reg_w(offs_t offset, uint8_t data)
|
||||
{
|
||||
if (offset >= 0x20 && offset < 0x40)
|
||||
{
|
||||
@ -1206,12 +1206,12 @@ void wswan_video_device::scanline_interrupt()
|
||||
}
|
||||
|
||||
|
||||
READ8_MEMBER(wswan_video_device::vram_r)
|
||||
uint8_t wswan_video_device::vram_r(offs_t offset)
|
||||
{
|
||||
return m_vram[offset];
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(wswan_video_device::vram_w)
|
||||
void wswan_video_device::vram_w(offs_t offset, uint8_t data)
|
||||
{
|
||||
m_vram[offset] = data;
|
||||
}
|
||||
|
@ -47,10 +47,10 @@ public:
|
||||
|
||||
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
|
||||
virtual DECLARE_READ8_MEMBER(vram_r);
|
||||
virtual DECLARE_WRITE8_MEMBER(vram_w);
|
||||
virtual DECLARE_READ8_MEMBER(reg_r);
|
||||
virtual DECLARE_WRITE8_MEMBER(reg_w);
|
||||
uint8_t vram_r(offs_t offset);
|
||||
void vram_w(offs_t offset, uint8_t data);
|
||||
uint8_t reg_r(offs_t offset);
|
||||
void reg_w(offs_t offset, uint8_t data);
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
|
Loading…
Reference in New Issue
Block a user