From 35a18bd96054d5f5e2638eea9f8a8c27f7bc2aa9 Mon Sep 17 00:00:00 2001 From: 0kmg <9137159+0kmg@users.noreply.github.com> Date: Sun, 9 Jan 2022 09:21:13 -0900 Subject: bus/nes: Nixed hold_irq_line for Future Media board + minor cleanups. (#9118) --- hash/nes.xml | 10 ++++---- src/devices/bus/nes/pirate.cpp | 52 ++++++++++++------------------------------ src/devices/bus/nes/pirate.h | 17 ++++---------- 3 files changed, 26 insertions(+), 53 deletions(-) diff --git a/hash/nes.xml b/hash/nes.xml index 9cd2846022a..c16c00fb837 100644 --- a/hash/nes.xml +++ b/hash/nes.xml @@ -66236,7 +66236,7 @@ from the NEStopia source, hence they would require confirmation. --> - Crayon Shin-Chan (Asia, Bio Miracle Bokutte Upa pirate, ripped from multicart?) + Crayon Shin-chan (Asia, Bio Miracle Bokutte Upa pirate, ripped from multicart?) 1995 <pirate> @@ -66253,10 +66253,11 @@ from the NEStopia source, hence they would require confirmation. --> - - La Bi Xiao Xin - Crayon Shin-Chan (Chi) + + Làbǐ Xiǎo Xīn - Crayon Shin-chan (China) 1995 Future Media + @@ -67368,9 +67369,10 @@ All musics were removed in this game. - San Guo Zhi 4 - Chi Bi Feng Yun (Chi) + Sānguózhì 4 - Chìbì Fēngyún (China) 1995 Future Media + diff --git a/src/devices/bus/nes/pirate.cpp b/src/devices/bus/nes/pirate.cpp index 7e935b28901..b6384d434b9 100644 --- a/src/devices/bus/nes/pirate.cpp +++ b/src/devices/bus/nes/pirate.cpp @@ -63,12 +63,12 @@ nes_fukutake_device::nes_fukutake_device(const machine_config &mconfig, const ch { } -nes_futuremedia_device::nes_futuremedia_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : nes_nrom_device(mconfig, NES_FUTUREMEDIA, tag, owner, clock), m_irq_count(0), m_irq_count_latch(0), m_irq_clear(0), m_irq_enable(0) +nes_futuremedia_device::nes_futuremedia_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) + : nes_nrom_device(mconfig, NES_FUTUREMEDIA, tag, owner, clock), m_irq_count(0), m_irq_count_latch(0), m_irq_enable(0) { } -nes_magseries_device::nes_magseries_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) +nes_magseries_device::nes_magseries_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) : nes_nrom_device(mconfig, NES_MAGSERIES, tag, owner, clock) { } @@ -158,7 +158,6 @@ void nes_fukutake_device::pcb_reset() void nes_futuremedia_device::device_start() { common_start(); - save_item(NAME(m_irq_clear)); save_item(NAME(m_irq_enable)); save_item(NAME(m_irq_count)); save_item(NAME(m_irq_count_latch)); @@ -166,28 +165,14 @@ void nes_futuremedia_device::device_start() void nes_futuremedia_device::pcb_reset() { - m_chr_source = m_vrom_chunks ? CHRROM : CHRRAM; prg16_89ab(0); prg16_cdef(m_prg_chunks - 1); - chr8(0, m_chr_source); + chr8(0, CHRROM); - m_irq_clear = 0; m_irq_enable = 0; m_irq_count = m_irq_count_latch = 0; } -void nes_magseries_device::device_start() -{ - common_start(); -} - -void nes_magseries_device::pcb_reset() -{ - m_chr_source = m_vrom_chunks ? CHRROM : CHRRAM; - prg32(0); - chr8(0, m_chr_source); -} - void nes_daou306_device::device_start() { common_start(); @@ -406,7 +391,7 @@ uint8_t nes_fukutake_device::read_m(offs_t offset) iNES: mapper 117 - In MESS: Unsupported. + In MAME: Partially supported. -------------------------------------------------*/ @@ -418,28 +403,22 @@ void nes_futuremedia_device::hblank_irq(int scanline, int vblank, int blanked) { m_irq_count--; if (!m_irq_count) - hold_irq_line(); + set_irq_line(ASSERT_LINE); } } } -void nes_futuremedia_device::write_h(offs_t offset, uint8_t data) +void nes_futuremedia_device::write_h(offs_t offset, u8 data) { LOG_MMC(("futuremedia write_h, offset: %04x, data: %02x\n", offset, data)); switch (offset) { case 0x0000: - prg8_89(data); - break; case 0x0001: - prg8_ab(data); - break; case 0x0002: - prg8_cd(data); - break; case 0x0003: - prg8_ef(data); + prg8_x(offset & 0x03, data); break; case 0x2000: case 0x2001: @@ -451,22 +430,21 @@ void nes_futuremedia_device::write_h(offs_t offset, uint8_t data) case 0x2007: chr1_x(offset & 0x07, data, CHRROM); break; - - case 0x5000: - set_nt_mirroring(BIT(data, 0) ? PPU_MIRROR_HORZ : PPU_MIRROR_VERT); - break; - case 0x4001: m_irq_count_latch = data; break; case 0x4002: - // IRQ cleared + set_irq_line(CLEAR_LINE); break; case 0x4003: m_irq_count = m_irq_count_latch; break; + case 0x5000: + set_nt_mirroring(BIT(data, 0) ? PPU_MIRROR_HORZ : PPU_MIRROR_VERT); + break; case 0x6000: m_irq_enable = data & 0x01; + set_irq_line(CLEAR_LINE); break; } } @@ -482,11 +460,11 @@ void nes_futuremedia_device::write_h(offs_t offset, uint8_t data) iNES: mapper 107 - In MESS: Supported. + In MAME: Supported. -------------------------------------------------*/ -void nes_magseries_device::write_h(offs_t offset, uint8_t data) +void nes_magseries_device::write_h(offs_t offset, u8 data) { LOG_MMC(("magseries write_h, offset: %04x, data: %02x\n", offset, data)); diff --git a/src/devices/bus/nes/pirate.h b/src/devices/bus/nes/pirate.h index 2185387f71d..b2b1b5ccaa5 100644 --- a/src/devices/bus/nes/pirate.h +++ b/src/devices/bus/nes/pirate.h @@ -75,9 +75,9 @@ class nes_futuremedia_device : public nes_nrom_device { public: // construction/destruction - nes_futuremedia_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + nes_futuremedia_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - virtual void write_h(offs_t offset, uint8_t data) override; + virtual void write_h(offs_t offset, u8 data) override; virtual void hblank_irq(int scanline, int vblank, int blanked) override; virtual void pcb_reset() override; @@ -87,8 +87,7 @@ protected: virtual void device_start() override; private: - uint16_t m_irq_count, m_irq_count_latch; - uint8_t m_irq_clear; + u8 m_irq_count, m_irq_count_latch; int m_irq_enable; }; @@ -99,15 +98,9 @@ class nes_magseries_device : public nes_nrom_device { public: // construction/destruction - nes_magseries_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - - virtual void write_h(offs_t offset, uint8_t data) override; + nes_magseries_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - virtual void pcb_reset() override; - -protected: - // device-level overrides - virtual void device_start() override; + virtual void write_h(offs_t offset, u8 data) override; }; -- cgit v1.2.3