diff options
Diffstat (limited to 'src/devices/bus/nes/rcm.cpp')
-rw-r--r-- | src/devices/bus/nes/rcm.cpp | 98 |
1 files changed, 12 insertions, 86 deletions
diff --git a/src/devices/bus/nes/rcm.cpp b/src/devices/bus/nes/rcm.cpp index f3adba8a49d..73b78644170 100644 --- a/src/devices/bus/nes/rcm.cpp +++ b/src/devices/bus/nes/rcm.cpp @@ -14,9 +14,6 @@ * RCM Tetris Family 9in1 [mapper 61] * RCM 3D Block [mapper 355] - TODO: - - implement PIC16C54 protection for 3D Block - ***********************************************************************************************************/ @@ -24,14 +21,12 @@ #include "rcm.h" - #ifdef NES_PCB_DEBUG -#define VERBOSE 1 +#define VERBOSE (LOG_GENERAL) #else -#define VERBOSE 0 +#define VERBOSE (0) #endif - -#define LOG_MMC(x) do { if (VERBOSE) logerror x; } while (0) +#include "logmacro.h" //------------------------------------------------- @@ -70,42 +65,9 @@ nes_tf9_device::nes_tf9_device(const machine_config &mconfig, const char *tag, d { } -nes_3dblock_device::nes_3dblock_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : nes_nrom_device(mconfig, NES_3DBLOCK, tag, owner, clock), m_irq_count(0) -{ -} - - - - -void nes_gs2015_device::device_start() -{ - common_start(); -} - -void nes_gs2015_device::pcb_reset() +nes_3dblock_device::nes_3dblock_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) + : nes_nrom_device(mconfig, NES_3DBLOCK, tag, owner, clock) { - m_chr_source = m_vrom_chunks ? CHRROM : CHRRAM; - prg32(0); - chr8(0, m_chr_source); -} - -void nes_3dblock_device::device_start() -{ - common_start(); - save_item(NAME(m_reg)); - save_item(NAME(m_irq_count)); -} - -void nes_3dblock_device::pcb_reset() -{ - prg32(0); - chr8(0, CHRRAM); - m_reg[0] = 0; - m_reg[1] = 0; - m_reg[2] = 0; - m_reg[3] = 0; - m_irq_count = 0; } @@ -133,7 +95,7 @@ void nes_3dblock_device::pcb_reset() void nes_gs2015_device::write_h(offs_t offset, uint8_t data) { - LOG_MMC(("gs2015 write_h, offset: %04x, data: %02x\n", offset, data)); + LOG("gs2015 write_h, offset: %04x, data: %02x\n", offset, data); prg32(offset); chr8(offset >> 1, m_chr_source); @@ -141,7 +103,7 @@ void nes_gs2015_device::write_h(offs_t offset, uint8_t data) uint8_t nes_gs2015_device::read_m(offs_t offset) { - LOG_MMC(("gs2015 read_m, offset: %04x\n", offset)); + LOG("gs2015 read_m, offset: %04x\n", offset); return 0; // Videopoker Bonza needs this (sort of protection? or related to inputs?) } @@ -159,13 +121,13 @@ uint8_t nes_gs2015_device::read_m(offs_t offset) u8 nes_gs2004_device::read_m(offs_t offset) { - LOG_MMC(("gs2004 read_m, offset: %04x\n", offset)); + LOG("gs2004 read_m, offset: %04x\n", offset); return m_prg[m_base + offset]; // fixed base differs per device } void nes_gs2004_device::write_h(offs_t offset, u8 data) { - LOG_MMC(("gs2004 write_h, offset: %04x, data: %02x\n", offset, data)); + LOG("gs2004 write_h, offset: %04x, data: %02x\n", offset, data); prg32(data); } @@ -183,7 +145,7 @@ void nes_gs2004_device::write_h(offs_t offset, u8 data) void nes_tf9_device::write_h(offs_t offset, u8 data) { - LOG_MMC(("tetrisfam write_h, offset: %04x, data: %02x\n", offset, data)); + LOG("tetrisfam write_h, offset: %04x, data: %02x\n", offset, data); u8 bank = (offset & 0x0f) << 1 | BIT(offset, 5); u8 mode = !BIT(offset, 4); @@ -201,44 +163,8 @@ void nes_tf9_device::write_h(offs_t offset, u8 data) NES 2.0: mapper 355 - In MESS: Very Preliminary Support. What is the purpose - of the writes to $4800-$4900-$4a00? These writes - also happens on the RCM version, which however works - (probably an unused leftover code in that version) + In MAME: Not supported. - FCEUmm suggests it might be IRQ related, but - it does not seem to help much... + TODO: implement PIC16C54 protection -------------------------------------------------*/ - -void nes_3dblock_device::hblank_irq(int scanline, int vblank, int blanked) -{ - if (m_irq_count) - { - m_irq_count--; - if (!m_irq_count) - hold_irq_line(); - } -} - -void nes_3dblock_device::write_l(offs_t offset, uint8_t data) -{ - LOG_MMC(("3dblock write_l, offset: %04x, data: %02x\n", offset, data)); - offset += 0x100; - - switch (offset) - { - case 0x800: // $4800 - m_reg[0] = data; - break; - case 0x900: // $4900 - m_reg[1] = data; - break; - case 0xa00: // $4a00 - m_reg[2] = data; - break; - case 0xe00: // $4e00 - m_reg[3] = data; m_irq_count = 0x10; - break; - } -} |