bus/nes/rcm: Skeletonized 3D Block device for future work. (#9121)

This commit is contained in:
0kmg 2022-02-16 18:05:03 -09:00 committed by GitHub
parent ddeb76eecb
commit 498ec2f0a4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 58 deletions

View File

@ -14,9 +14,6 @@
* RCM Tetris Family 9in1 [mapper 61]
* RCM 3D Block [mapper 355]
TODO:
- implement PIC16C54 protection for 3D Block
***********************************************************************************************************/
@ -70,8 +67,8 @@ 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)
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)
{
}
@ -93,19 +90,12 @@ void nes_gs2015_device::pcb_reset()
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;
}
@ -201,44 +191,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;
}
}

View File

@ -76,20 +76,13 @@ class nes_3dblock_device : public nes_nrom_device
{
public:
// construction/destruction
nes_3dblock_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
nes_3dblock_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
virtual void write_l(offs_t offset, uint8_t data) override;
virtual void hblank_irq(int scanline, int vblank, int blanked) override;
virtual void pcb_reset() override;
protected:
// device-level overrides
virtual void device_start() override;
private:
uint8_t m_reg[4];
uint8_t m_irq_count;
};