new NOT WORKING - VG Pocket (VG-2000) [BeckieRGB] (#2433)

* new NOT WORKING  -  VG Pocket (VG-2000) [BeckieRGB]

* new NOT WORKING
VG Pocket Mini (VG-1500) [BeckieRGB]

mostly needs the nametable mirroring registers emulated, and proper palettes for this extended mode
This commit is contained in:
David Haywood 2017-07-14 02:43:13 +01:00 committed by Vas Crabb
parent 68d43e41c4
commit c17e4d8ca8
2 changed files with 44 additions and 5 deletions

View File

@ -15,8 +15,8 @@
VT03 - above + 4bpp sprite / bg modes, enhanced palette
VT08 - ?
VT09 - 8bpp or direct colour modes?
VT09 - alt 4bpp modes?
VT16 - ?
VT18 - ?
@ -46,6 +46,9 @@
Add more Famiclone roms here, there should be plenty more dumps of VTxx
based systems floating about.
Make sure that none of the unenhanced sets were actually sold as cartridges
instead, there is a lack of information for some of the older dumps and
still some dumps in nes.xml that might belong here.
NON-bugs (same happens on real hardware)
@ -67,6 +70,7 @@ class nes_vt_state : public nes_base_state
public:
nes_vt_state(const machine_config &mconfig, device_type type, const char *tag)
: nes_base_state(mconfig, type, tag)
, m_ntram(nullptr)
, m_ppu(*this, "ppu")
, m_apu(*this, "apu")
, m_prg(*this, "prg")
@ -100,6 +104,12 @@ public:
DECLARE_READ8_MEMBER(chr_r);
private:
/* expansion nametable - todo, see if we can refactor NES code to be reusable without having to add full NES bus etc. */
std::unique_ptr<uint8_t[]> m_ntram;
DECLARE_READ8_MEMBER(nt_r);
DECLARE_WRITE8_MEMBER(nt_w);
void scanline_irq(int scanline, int vblank, int blanked);
uint8_t m_410x[0xc];
@ -321,7 +331,16 @@ void nes_vt_state::scanline_irq(int scanline, int vblank, int blanked)
m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
}
/* todo, handle custom VT nametable stuff here */
READ8_MEMBER(nes_vt_state::nt_r)
{
return m_ntram[offset];
}
WRITE8_MEMBER(nes_vt_state::nt_w)
{
m_ntram[offset] = data;
}
void nes_vt_state::machine_start()
{
@ -342,8 +361,13 @@ void nes_vt_state::machine_start()
save_item(NAME(m_timer_running));
save_item(NAME(m_timer_val));
m_ntram = std::make_unique<uint8_t[]>(0x2000);
save_pointer(NAME(m_ntram.get()), 0x2000);
m_ppu->set_scanline_callback(ppu2c0x_device::scanline_delegate(FUNC(nes_vt_state::scanline_irq),this));
// m_ppu->set_hblank_callback(ppu2c0x_device::hblank_delegate(FUNC(device_nes_cart_interface::hblank_irq),m_cartslot->m_cart));
// m_ppu->space(AS_PROGRAM).install_readwrite_handler(0, 0x1fff, read8_delegate(FUNC(device_nes_cart_interface::chr_r),m_cartslot->m_cart), write8_delegate(FUNC(device_nes_cart_interface::chr_w),m_cartslot->m_cart));
m_ppu->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8_delegate(FUNC(nes_vt_state::nt_r),this), write8_delegate(FUNC(nes_vt_state::nt_w),this));
}
void nes_vt_state::machine_reset()
@ -371,7 +395,7 @@ void nes_vt_state::machine_reset()
int nes_vt_state::calculate_real_video_address(int addr, int extended, int readtype)
{
// might be a VT09 only feature (8bpp?) but where are the other 4 bits?
// might be a VT09 only feature (alt 4bpp mode?)
int alt_order = m_ppu->get_201x_reg(0x0) & 0x40;
if (readtype == 0)
@ -521,7 +545,7 @@ int nes_vt_state::calculate_real_video_address(int addr, int extended, int readt
}
else
{
finaladdr = (finaladdr << 1) | (va34 << 4);
finaladdr = (finaladdr << 1) | va34;
}
}
}
@ -569,7 +593,7 @@ int nes_vt_state::calculate_real_video_address(int addr, int extended, int readt
}
else
{
finaladdr = (finaladdr << 1) | (va34 << 4);
finaladdr = (finaladdr << 1) | va34;
}
}
@ -1007,6 +1031,17 @@ ROM_START( gprnrs16 )
ROM_LOAD( "gprnrs16.bin", 0x00000, 0x2000000, CRC(bdffa40a) SHA1(3d01907211f18e8415171dfc6c1d23cf5952e7bb) )
ROM_END
ROM_START( vgpocket )
ROM_REGION( 0x400000, "mainrom", 0 )
ROM_LOAD( "vgpocket.bin", 0x00000, 0x400000, CRC(843634c6) SHA1(c59dab0e43d364f59eb3a138abb585bc54e5d674) )
// there was a dump of a 'secure' area with this, but it was just the top 0x10000 bytes of the existing rom.
ROM_END
ROM_START( vgpmini )
ROM_REGION( 0x400000, "mainrom", 0 )
ROM_LOAD( "vgpmini.bin", 0x00000, 0x400000, CRC(a1121843) SHA1(c96013ae6cf2f8173e65a167d45685cb61536d36) )
// there was a dump of a 'secure' area with this, but it was just the bottom 0x10000 bytes of the existing rom.
ROM_END
// earlier version of vdogdemo
CONS( 200?, vdogdeme, 0, 0, nes_vt, nes_vt, nes_vt_state, 0, "VRT", "V-Dog (prototype, earlier)", MACHINE_NOT_WORKING )
@ -1023,6 +1058,8 @@ CONS( 200?, vgtablet, 0, 0, nes_vt, nes_vt, nes_vt_state, 0, "<unk
// this is VT09 based, and needs 8bpp modes at least
// it boots, but gfx look wrong due to unsupported mode
CONS( 2009, cybar120, 0, 0, nes_vt_xx, nes_vt, nes_vt_state, 0, "Defender", "Defender M2500P 120-in-1", MACHINE_NOT_WORKING )
CONS( 200?, vgpocket, 0, 0, nes_vt_xx, nes_vt, nes_vt_state, 0, "<unknown>", "VG Pocket (VG-2000)", MACHINE_NOT_WORKING )
CONS( 200?, vgpmini, 0, 0, nes_vt_xx, nes_vt, nes_vt_state, 0, "<unknown>", "VG Pocket Mini (VG-1500)", MACHINE_NOT_WORKING )
// these are NOT VT03, but something newer but based around the same basic designs
// (no visible tiles in ROM using standard decodes tho, might need moving out of here)

View File

@ -29407,6 +29407,8 @@ mc_sam60
vgtablet
gprnrs1
gprnrs16
vgpocket
vgpmini
@source:newbrain.cpp
newbrain //