mirror of
https://github.com/holub/mame
synced 2025-10-04 16:34:53 +03:00
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:
parent
68d43e41c4
commit
c17e4d8ca8
@ -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)
|
||||
|
@ -29407,6 +29407,8 @@ mc_sam60
|
||||
vgtablet
|
||||
gprnrs1
|
||||
gprnrs16
|
||||
vgpocket
|
||||
vgpmini
|
||||
|
||||
@source:newbrain.cpp
|
||||
newbrain //
|
||||
|
Loading…
Reference in New Issue
Block a user