mirror of
https://github.com/holub/mame
synced 2025-04-20 15:32:45 +03:00
Renamed Genesis VDP to Sega 315-5313 and moved it to emu/video/. nw.
This commit is contained in:
parent
f27342d4e8
commit
d9b8e1b420
4
.gitattributes
vendored
4
.gitattributes
vendored
@ -3095,6 +3095,8 @@ src/emu/video.c svneol=native#text/plain
|
||||
src/emu/video.h svneol=native#text/plain
|
||||
src/emu/video/315_5124.c svneol=native#text/plain
|
||||
src/emu/video/315_5124.h svneol=native#text/plain
|
||||
src/emu/video/315_5313.c svneol=native#text/plain
|
||||
src/emu/video/315_5313.h svneol=native#text/plain
|
||||
src/emu/video/bufsprite.c svneol=native#text/plain
|
||||
src/emu/video/bufsprite.h svneol=native#text/plain
|
||||
src/emu/video/cdp1861.c svneol=native#text/plain
|
||||
@ -6474,8 +6476,6 @@ src/mame/machine/mc8123.h svneol=native#text/plain
|
||||
src/mame/machine/mcr.c svneol=native#text/plain
|
||||
src/mame/machine/mcr68.c svneol=native#text/plain
|
||||
src/mame/machine/megadriv.c svneol=native#text/plain
|
||||
src/mame/machine/megavdp.c svneol=native#text/plain
|
||||
src/mame/machine/megavdp.h svneol=native#text/plain
|
||||
src/mame/machine/meters.c svneol=native#text/plain
|
||||
src/mame/machine/meters.h svneol=native#text/plain
|
||||
src/mame/machine/mexico86.c svneol=native#text/plain
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* Megadrive VDP */
|
||||
/* Sega 315-5313 - Megadrive VDP */
|
||||
|
||||
#include "emu.h"
|
||||
#include "megavdp.h"
|
||||
#include "video/315_5313.h"
|
||||
|
||||
/* still have dependencies on the following external gunk */
|
||||
|
||||
@ -10,10 +10,10 @@
|
||||
#define MAX_HPOSITION 480
|
||||
|
||||
|
||||
const device_type SEGA_GEN_VDP = &device_creator<sega_genesis_vdp_device>;
|
||||
const device_type SEGA315_5313 = &device_creator<sega315_5313_device>;
|
||||
|
||||
sega_genesis_vdp_device::sega_genesis_vdp_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||
: sega315_5124_device( mconfig, SEGA315_5246, "Sega Genesis VDP", tag, owner, clock, SEGA315_5124_CRAM_SIZE, 0, true, "sega_genesis_vdp", __FILE__),
|
||||
sega315_5313_device::sega315_5313_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||
: sega315_5124_device( mconfig, SEGA315_5246, "Sega 315-5313 (Genesis VDP)", tag, owner, clock, SEGA315_5124_CRAM_SIZE, 0, true, "sega315_5313", __FILE__),
|
||||
m_sndirqline_callback(*this),
|
||||
m_lv6irqline_callback(*this),
|
||||
m_lv4irqline_callback(*this),
|
||||
@ -28,9 +28,9 @@ sega_genesis_vdp_device::sega_genesis_vdp_device(const machine_config &mconfig,
|
||||
// palette device
|
||||
//-------------------------------------------------
|
||||
|
||||
void sega_genesis_vdp_device::static_set_palette_tag(device_t &device, const char *tag)
|
||||
void sega315_5313_device::static_set_palette_tag(device_t &device, const char *tag)
|
||||
{
|
||||
downcast<sega_genesis_vdp_device &>(device).m_palette.set_tag(tag);
|
||||
downcast<sega315_5313_device &>(device).m_palette.set_tag(tag);
|
||||
}
|
||||
|
||||
|
||||
@ -44,18 +44,18 @@ MACHINE_CONFIG_END
|
||||
// the device's machine fragment
|
||||
//-------------------------------------------------
|
||||
|
||||
machine_config_constructor sega_genesis_vdp_device::device_mconfig_additions() const
|
||||
machine_config_constructor sega315_5313_device::device_mconfig_additions() const
|
||||
{
|
||||
return MACHINE_CONFIG_NAME( sega_genesis_vdp );
|
||||
}
|
||||
|
||||
static TIMER_CALLBACK( render_timer_callback )
|
||||
{
|
||||
sega_genesis_vdp_device* vdp = (sega_genesis_vdp_device*)ptr;
|
||||
sega315_5313_device* vdp = (sega315_5313_device*)ptr;
|
||||
vdp->render_scanline();
|
||||
}
|
||||
|
||||
void sega_genesis_vdp_device::vdp_handle_irq6_on_timer_callback(int param)
|
||||
void sega315_5313_device::vdp_handle_irq6_on_timer_callback(int param)
|
||||
{
|
||||
// m_irq6_pending = 1;
|
||||
if (MEGADRIVE_REG01_IRQ6_ENABLE)
|
||||
@ -64,40 +64,39 @@ void sega_genesis_vdp_device::vdp_handle_irq6_on_timer_callback(int param)
|
||||
|
||||
static TIMER_CALLBACK( irq6_on_timer_callback )
|
||||
{
|
||||
sega_genesis_vdp_device* vdp = (sega_genesis_vdp_device*)ptr;
|
||||
sega315_5313_device* vdp = (sega315_5313_device*)ptr;
|
||||
vdp->vdp_handle_irq6_on_timer_callback(param);
|
||||
}
|
||||
|
||||
void sega_genesis_vdp_device::vdp_handle_irq4_on_timer_callback(int param)
|
||||
void sega315_5313_device::vdp_handle_irq4_on_timer_callback(int param)
|
||||
{
|
||||
m_lv4irqline_callback(true);
|
||||
}
|
||||
|
||||
static TIMER_CALLBACK( irq4_on_timer_callback )
|
||||
{
|
||||
sega_genesis_vdp_device* vdp = (sega_genesis_vdp_device*)ptr;
|
||||
sega315_5313_device* vdp = (sega315_5313_device*)ptr;
|
||||
vdp->vdp_handle_irq4_on_timer_callback(param);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void sega_genesis_vdp_device::set_alt_timing(device_t &device, int use_alt_timing)
|
||||
void sega315_5313_device::set_alt_timing(device_t &device, int use_alt_timing)
|
||||
{
|
||||
sega_genesis_vdp_device &dev = downcast<sega_genesis_vdp_device &>(device);
|
||||
sega315_5313_device &dev = downcast<sega315_5313_device &>(device);
|
||||
dev.m_use_alt_timing = use_alt_timing;
|
||||
}
|
||||
|
||||
void sega_genesis_vdp_device::set_palwrite_base(device_t &device, int palwrite_base)
|
||||
void sega315_5313_device::set_palwrite_base(device_t &device, int palwrite_base)
|
||||
{
|
||||
sega_genesis_vdp_device &dev = downcast<sega_genesis_vdp_device &>(device);
|
||||
sega315_5313_device &dev = downcast<sega315_5313_device &>(device);
|
||||
dev.m_palwrite_base = palwrite_base;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void sega_genesis_vdp_device::device_start()
|
||||
void sega315_5313_device::device_start()
|
||||
{
|
||||
m_sndirqline_callback.resolve_safe();
|
||||
m_lv6irqline_callback.resolve_safe();
|
||||
@ -193,7 +192,7 @@ void sega_genesis_vdp_device::device_start()
|
||||
sega315_5124_device::device_start();
|
||||
}
|
||||
|
||||
void sega_genesis_vdp_device::device_reset()
|
||||
void sega315_5313_device::device_reset()
|
||||
{
|
||||
m_command_pending = 0;
|
||||
m_command_part1 = 0;
|
||||
@ -215,7 +214,7 @@ void sega_genesis_vdp_device::device_reset()
|
||||
sega315_5124_device::device_reset();
|
||||
}
|
||||
|
||||
void sega_genesis_vdp_device::device_reset_old()
|
||||
void sega315_5313_device::device_reset_old()
|
||||
{
|
||||
// other stuff, are we sure we want to set some of these every reset?
|
||||
// it's called from machine_reset
|
||||
@ -227,7 +226,7 @@ void sega_genesis_vdp_device::device_reset_old()
|
||||
|
||||
|
||||
|
||||
void sega_genesis_vdp_device::vdp_vram_write(UINT16 data)
|
||||
void sega315_5313_device::vdp_vram_write(UINT16 data)
|
||||
{
|
||||
UINT16 sprite_base_address = MEGADRIVE_REG0C_RS1?((MEGADRIVE_REG05_SPRITE_ADDR&0x7e)<<9):((MEGADRIVE_REG05_SPRITE_ADDR&0x7f)<<9);
|
||||
int spritetable_size = MEGADRIVE_REG0C_RS1?0x400:0x200;
|
||||
@ -254,7 +253,7 @@ void sega_genesis_vdp_device::vdp_vram_write(UINT16 data)
|
||||
m_vdp_address &= 0xffff;
|
||||
}
|
||||
|
||||
void sega_genesis_vdp_device::vdp_vsram_write(UINT16 data)
|
||||
void sega315_5313_device::vdp_vsram_write(UINT16 data)
|
||||
{
|
||||
m_vsram[(m_vdp_address&0x7e)>>1] = data;
|
||||
|
||||
@ -265,7 +264,7 @@ void sega_genesis_vdp_device::vdp_vsram_write(UINT16 data)
|
||||
m_vdp_address &=0xffff;
|
||||
}
|
||||
|
||||
void sega_genesis_vdp_device::write_cram_value(int offset, int data)
|
||||
void sega315_5313_device::write_cram_value(int offset, int data)
|
||||
{
|
||||
m_cram[offset] = data;
|
||||
|
||||
@ -289,7 +288,7 @@ void sega_genesis_vdp_device::write_cram_value(int offset, int data)
|
||||
}
|
||||
}
|
||||
|
||||
void sega_genesis_vdp_device::vdp_cram_write(UINT16 data)
|
||||
void sega315_5313_device::vdp_cram_write(UINT16 data)
|
||||
{
|
||||
int offset;
|
||||
offset = (m_vdp_address&0x7e)>>1;
|
||||
@ -302,7 +301,7 @@ void sega_genesis_vdp_device::vdp_cram_write(UINT16 data)
|
||||
}
|
||||
|
||||
|
||||
void sega_genesis_vdp_device::data_port_w(int data)
|
||||
void sega315_5313_device::data_port_w(int data)
|
||||
{
|
||||
m_command_pending = 0;
|
||||
|
||||
@ -397,7 +396,7 @@ void sega_genesis_vdp_device::data_port_w(int data)
|
||||
|
||||
|
||||
|
||||
void sega_genesis_vdp_device::vdp_set_register(int regnum, UINT8 value)
|
||||
void sega315_5313_device::vdp_set_register(int regnum, UINT8 value)
|
||||
{
|
||||
m_regs[regnum] = value;
|
||||
|
||||
@ -448,7 +447,7 @@ void sega_genesis_vdp_device::vdp_set_register(int regnum, UINT8 value)
|
||||
// mame_printf_debug("%s: Setting VDP Register #%02x to %02x\n",machine().describe_context(), regnum,value);
|
||||
}
|
||||
|
||||
void sega_genesis_vdp_device::update_code_and_address(void)
|
||||
void sega315_5313_device::update_code_and_address(void)
|
||||
{
|
||||
m_vdp_code = ((m_command_part1 & 0xc000) >> 14) |
|
||||
((m_command_part2 & 0x00f0) >> 2);
|
||||
@ -459,7 +458,7 @@ void sega_genesis_vdp_device::update_code_and_address(void)
|
||||
|
||||
// if either SVP CPU or segaCD is present, there is a 'lag' we have to compensate for
|
||||
// hence, for segacd and svp we set m_dma_delay to the appropriate value at start
|
||||
inline UINT16 sega_genesis_vdp_device::vdp_get_word_from_68k_mem(UINT32 source)
|
||||
inline UINT16 sega315_5313_device::vdp_get_word_from_68k_mem(UINT32 source)
|
||||
{
|
||||
// should we limit the valid areas here?
|
||||
// how does this behave with the segacd etc?
|
||||
@ -503,7 +502,7 @@ inline UINT16 sega_genesis_vdp_device::vdp_get_word_from_68k_mem(UINT32 source)
|
||||
as the 68k address bus isn't accessed */
|
||||
|
||||
/* Wani Wani World, James Pond 3, Pirates Gold! */
|
||||
void sega_genesis_vdp_device::insta_vram_copy(UINT32 source, UINT16 length)
|
||||
void sega315_5313_device::insta_vram_copy(UINT32 source, UINT16 length)
|
||||
{
|
||||
int x;
|
||||
|
||||
@ -531,7 +530,7 @@ void sega_genesis_vdp_device::insta_vram_copy(UINT32 source, UINT16 length)
|
||||
}
|
||||
|
||||
/* Instant, but we pause the 68k a bit */
|
||||
void sega_genesis_vdp_device::insta_68k_to_vram_dma(UINT32 source,int length)
|
||||
void sega315_5313_device::insta_68k_to_vram_dma(UINT32 source,int length)
|
||||
{
|
||||
int count;
|
||||
|
||||
@ -558,7 +557,7 @@ void sega_genesis_vdp_device::insta_68k_to_vram_dma(UINT32 source,int length)
|
||||
}
|
||||
|
||||
|
||||
void sega_genesis_vdp_device::insta_68k_to_cram_dma(UINT32 source,UINT16 length)
|
||||
void sega315_5313_device::insta_68k_to_cram_dma(UINT32 source,UINT16 length)
|
||||
{
|
||||
int count;
|
||||
|
||||
@ -586,7 +585,7 @@ void sega_genesis_vdp_device::insta_68k_to_cram_dma(UINT32 source,UINT16 length)
|
||||
|
||||
}
|
||||
|
||||
void sega_genesis_vdp_device::insta_68k_to_vsram_dma(UINT32 source,UINT16 length)
|
||||
void sega315_5313_device::insta_68k_to_vsram_dma(UINT32 source,UINT16 length)
|
||||
{
|
||||
int count;
|
||||
|
||||
@ -614,7 +613,7 @@ void sega_genesis_vdp_device::insta_68k_to_vsram_dma(UINT32 source,UINT16 length
|
||||
}
|
||||
|
||||
/* This can be simplified quite a lot.. */
|
||||
void sega_genesis_vdp_device::handle_dma_bits()
|
||||
void sega315_5313_device::handle_dma_bits()
|
||||
{
|
||||
#if 0
|
||||
if (m_vdp_code&0x20)
|
||||
@ -745,7 +744,7 @@ void sega_genesis_vdp_device::handle_dma_bits()
|
||||
}
|
||||
}
|
||||
|
||||
void sega_genesis_vdp_device::ctrl_port_w(int data)
|
||||
void sega315_5313_device::ctrl_port_w(int data)
|
||||
{
|
||||
// logerror("write to vdp control port %04x\n",data);
|
||||
m_vram_fill_pending = 0; // ??
|
||||
@ -786,7 +785,7 @@ void sega_genesis_vdp_device::ctrl_port_w(int data)
|
||||
}
|
||||
}
|
||||
|
||||
WRITE16_MEMBER( sega_genesis_vdp_device::megadriv_vdp_w )
|
||||
WRITE16_MEMBER( sega315_5313_device::vdp_w )
|
||||
{
|
||||
switch (offset<<1)
|
||||
{
|
||||
@ -835,22 +834,22 @@ WRITE16_MEMBER( sega_genesis_vdp_device::megadriv_vdp_w )
|
||||
}
|
||||
}
|
||||
|
||||
UINT16 sega_genesis_vdp_device::vdp_vram_r(void)
|
||||
UINT16 sega315_5313_device::vdp_vram_r(void)
|
||||
{
|
||||
return MEGADRIV_VDP_VRAM((m_vdp_address&0xfffe)>>1);
|
||||
}
|
||||
|
||||
UINT16 sega_genesis_vdp_device::vdp_vsram_r(void)
|
||||
UINT16 sega315_5313_device::vdp_vsram_r(void)
|
||||
{
|
||||
return m_vsram[(m_vdp_address&0x7e)>>1];
|
||||
}
|
||||
|
||||
UINT16 sega_genesis_vdp_device::vdp_cram_r(void)
|
||||
UINT16 sega315_5313_device::vdp_cram_r(void)
|
||||
{
|
||||
return m_cram[(m_vdp_address&0x7e)>>1];
|
||||
}
|
||||
|
||||
UINT16 sega_genesis_vdp_device::data_port_r()
|
||||
UINT16 sega315_5313_device::data_port_r()
|
||||
{
|
||||
UINT16 retdata=0;
|
||||
|
||||
@ -967,7 +966,7 @@ PAL, 256x224
|
||||
|
||||
|
||||
|
||||
UINT16 sega_genesis_vdp_device::ctrl_port_r()
|
||||
UINT16 sega315_5313_device::ctrl_port_r()
|
||||
{
|
||||
/* Battletoads is very fussy about the vblank flag
|
||||
it wants it to be 1. in scanline 224 */
|
||||
@ -1130,7 +1129,7 @@ static const UINT8 vc_pal_240[] =
|
||||
};
|
||||
|
||||
|
||||
UINT16 sega_genesis_vdp_device::get_hposition()
|
||||
UINT16 sega315_5313_device::get_hposition()
|
||||
{
|
||||
UINT16 value4;
|
||||
|
||||
@ -1158,7 +1157,7 @@ UINT16 sega_genesis_vdp_device::get_hposition()
|
||||
return value4;
|
||||
}
|
||||
|
||||
int sega_genesis_vdp_device::get_scanline_counter()
|
||||
int sega315_5313_device::get_scanline_counter()
|
||||
{
|
||||
if (!m_use_alt_timing)
|
||||
return m_scanline_counter;
|
||||
@ -1167,7 +1166,7 @@ int sega_genesis_vdp_device::get_scanline_counter()
|
||||
}
|
||||
|
||||
|
||||
UINT16 sega_genesis_vdp_device::megadriv_read_hv_counters()
|
||||
UINT16 sega315_5313_device::megadriv_read_hv_counters()
|
||||
{
|
||||
/* Bubble and Squeek wants vcount=0xe0 */
|
||||
/* Dracula is very sensitive to this */
|
||||
@ -1203,7 +1202,7 @@ UINT16 sega_genesis_vdp_device::megadriv_read_hv_counters()
|
||||
|
||||
}
|
||||
|
||||
READ16_MEMBER( sega_genesis_vdp_device::megadriv_vdp_r )
|
||||
READ16_MEMBER( sega315_5313_device::vdp_r )
|
||||
{
|
||||
UINT16 retvalue = 0;
|
||||
|
||||
@ -1286,7 +1285,7 @@ READ16_MEMBER( sega_genesis_vdp_device::megadriv_vdp_r )
|
||||
|
||||
*/
|
||||
|
||||
void sega_genesis_vdp_device::render_spriteline_to_spritebuffer(int scanline)
|
||||
void sega315_5313_device::render_spriteline_to_spritebuffer(int scanline)
|
||||
{
|
||||
int screenwidth;
|
||||
int maxsprites=0;
|
||||
@ -1476,7 +1475,7 @@ void sega_genesis_vdp_device::render_spriteline_to_spritebuffer(int scanline)
|
||||
}
|
||||
|
||||
/* Clean up this function (!) */
|
||||
void sega_genesis_vdp_device::render_videoline_to_videobuffer(int scanline)
|
||||
void sega315_5313_device::render_videoline_to_videobuffer(int scanline)
|
||||
{
|
||||
UINT16 base_a;
|
||||
UINT16 base_w=0;
|
||||
@ -2500,7 +2499,7 @@ void sega_genesis_vdp_device::render_videoline_to_videobuffer(int scanline)
|
||||
|
||||
|
||||
/* This converts our render buffer to real screen colours */
|
||||
void sega_genesis_vdp_device::render_videobuffer_to_screenbuffer(int scanline)
|
||||
void sega315_5313_device::render_videobuffer_to_screenbuffer(int scanline)
|
||||
{
|
||||
UINT16 *lineptr;
|
||||
|
||||
@ -2587,7 +2586,7 @@ void sega_genesis_vdp_device::render_videobuffer_to_screenbuffer(int scanline)
|
||||
}
|
||||
}
|
||||
|
||||
void sega_genesis_vdp_device::render_scanline()
|
||||
void sega315_5313_device::render_scanline()
|
||||
{
|
||||
int scanline = get_scanline_counter();
|
||||
|
||||
@ -2600,7 +2599,7 @@ void sega_genesis_vdp_device::render_scanline()
|
||||
}
|
||||
}
|
||||
|
||||
void sega_genesis_vdp_device::vdp_handle_scanline_callback(int scanline)
|
||||
void sega315_5313_device::vdp_handle_scanline_callback(int scanline)
|
||||
{
|
||||
/* Compensate for some rounding errors
|
||||
|
||||
@ -2674,7 +2673,7 @@ void sega_genesis_vdp_device::vdp_handle_scanline_callback(int scanline)
|
||||
}
|
||||
|
||||
|
||||
void sega_genesis_vdp_device::vdp_handle_eof()
|
||||
void sega315_5313_device::vdp_handle_eof()
|
||||
{
|
||||
rectangle visarea;
|
||||
int scr_width = 320;
|
||||
@ -2731,7 +2730,7 @@ void sega_genesis_vdp_device::vdp_handle_eof()
|
||||
|
||||
|
||||
// called at the start of each scanline
|
||||
TIMER_DEVICE_CALLBACK_MEMBER( sega_genesis_vdp_device::megadriv_scanline_timer_callback )
|
||||
TIMER_DEVICE_CALLBACK_MEMBER( sega315_5313_device::megadriv_scanline_timer_callback )
|
||||
{
|
||||
if (!m_use_alt_timing)
|
||||
{
|
||||
@ -2746,7 +2745,7 @@ TIMER_DEVICE_CALLBACK_MEMBER( sega_genesis_vdp_device::megadriv_scanline_timer_c
|
||||
}
|
||||
}
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER( sega_genesis_vdp_device::megadriv_scanline_timer_callback_alt_timing )
|
||||
TIMER_DEVICE_CALLBACK_MEMBER( sega315_5313_device::megadriv_scanline_timer_callback_alt_timing )
|
||||
{
|
||||
if (m_use_alt_timing)
|
||||
{
|
@ -144,32 +144,32 @@
|
||||
#define MEGADRIVE_REG17_UNUSED ((m_regs[0x17]&0x3f)>>0)
|
||||
|
||||
|
||||
#define MCFG_SEGAGEN_VDP_IS_PAL(_bool) \
|
||||
sega_genesis_vdp_device::set_signal_type(*device, _bool);
|
||||
#define MCFG_SEGA315_5313_IS_PAL(_bool) \
|
||||
sega315_5313_device::set_signal_type(*device, _bool);
|
||||
|
||||
#define MCFG_SEGAGEN_VDP_INT_CB(_devcb) \
|
||||
devcb = &sega_genesis_vdp_device::set_int_callback(*device, DEVCB2_##_devcb);
|
||||
#define MCFG_SEGA315_5313_INT_CB(_devcb) \
|
||||
devcb = &sega315_5313_device::set_int_callback(*device, DEVCB2_##_devcb);
|
||||
|
||||
#define MCFG_SEGAGEN_VDP_PAUSE_CB(_devcb) \
|
||||
devcb = &sega_genesis_vdp_device::set_pause_callback(*device, DEVCB2_##_devcb);
|
||||
#define MCFG_SEGA315_5313_PAUSE_CB(_devcb) \
|
||||
devcb = &sega315_5313_device::set_pause_callback(*device, DEVCB2_##_devcb);
|
||||
|
||||
#define MCFG_SEGAGEN_VDP_SND_IRQ_CALLBACK(_write) \
|
||||
devcb = &sega_genesis_vdp_device::set_sndirqline_callback(*device, DEVCB2_##_write);
|
||||
#define MCFG_SEGA315_5313_SND_IRQ_CALLBACK(_write) \
|
||||
devcb = &sega315_5313_device::set_sndirqline_callback(*device, DEVCB2_##_write);
|
||||
|
||||
#define MCFG_SEGAGEN_VDP_LV6_IRQ_CALLBACK(_write) \
|
||||
devcb = &sega_genesis_vdp_device::set_lv6irqline_callback(*device, DEVCB2_##_write);
|
||||
#define MCFG_SEGA315_5313_LV6_IRQ_CALLBACK(_write) \
|
||||
devcb = &sega315_5313_device::set_lv6irqline_callback(*device, DEVCB2_##_write);
|
||||
|
||||
#define MCFG_SEGAGEN_VDP_LV4_IRQ_CALLBACK(_write) \
|
||||
devcb = &sega_genesis_vdp_device::set_lv4irqline_callback(*device, DEVCB2_##_write);
|
||||
#define MCFG_SEGA315_5313_LV4_IRQ_CALLBACK(_write) \
|
||||
devcb = &sega315_5313_device::set_lv4irqline_callback(*device, DEVCB2_##_write);
|
||||
|
||||
#define MCFG_SEGAGEN_VDP_ALT_TIMING(_data) \
|
||||
sega_genesis_vdp_device::set_alt_timing(*device, _data);
|
||||
#define MCFG_SEGA315_5313_ALT_TIMING(_data) \
|
||||
sega315_5313_device::set_alt_timing(*device, _data);
|
||||
|
||||
#define MCFG_SEGAGEN_VDP_PAL_WRITE_BASE(_data) \
|
||||
sega_genesis_vdp_device::set_palwrite_base(*device, _data);
|
||||
#define MCFG_SEGA315_5313_PAL_WRITE_BASE(_data) \
|
||||
sega315_5313_device::set_palwrite_base(*device, _data);
|
||||
|
||||
#define MCFG_SEGAGEN_VDP_PALETTE(_palette_tag) \
|
||||
sega_genesis_vdp_device::static_set_palette_tag(*device, "^" _palette_tag);
|
||||
#define MCFG_SEGA315_5313_PALETTE(_palette_tag) \
|
||||
sega315_5313_device::static_set_palette_tag(*device, "^" _palette_tag);
|
||||
|
||||
|
||||
// Temporary solution while 32x VDP mixing and scanline interrupting is moved outside MD VDP
|
||||
@ -177,38 +177,38 @@ typedef device_delegate<void (int x, UINT32 priority, UINT16 &lineptr)> md_32x_s
|
||||
typedef device_delegate<void (int scanline, int irq6)> md_32x_interrupt_delegate;
|
||||
typedef device_delegate<void (int scanline)> md_32x_scanline_helper_delegate;
|
||||
|
||||
#define MCFG_SEGAGEN_VDP_32X_SCANLINE_CB(_class, _method) \
|
||||
sega_genesis_vdp_device::set_md_32x_scanline(*device, md_32x_scanline_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
|
||||
#define MCFG_SEGA315_5313_32X_SCANLINE_CB(_class, _method) \
|
||||
sega315_5313_device::set_md_32x_scanline(*device, md_32x_scanline_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
|
||||
|
||||
#define MCFG_SEGAGEN_VDP_32X_INTERRUPT_CB(_class, _method) \
|
||||
sega_genesis_vdp_device::set_md_32x_interrupt(*device, md_32x_interrupt_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
|
||||
#define MCFG_SEGA315_5313_32X_INTERRUPT_CB(_class, _method) \
|
||||
sega315_5313_device::set_md_32x_interrupt(*device, md_32x_interrupt_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
|
||||
|
||||
#define MCFG_SEGAGEN_VDP_32X_SCANLINE_HELPER_CB(_class, _method) \
|
||||
sega_genesis_vdp_device::set_md_32x_scanline_helper(*device, md_32x_scanline_helper_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
|
||||
#define MCFG_SEGA315_5313_32X_SCANLINE_HELPER_CB(_class, _method) \
|
||||
sega315_5313_device::set_md_32x_scanline_helper(*device, md_32x_scanline_helper_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
|
||||
|
||||
|
||||
class sega_genesis_vdp_device : public sega315_5124_device
|
||||
class sega315_5313_device : public sega315_5124_device
|
||||
{
|
||||
public:
|
||||
sega_genesis_vdp_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
sega315_5313_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
|
||||
template<class _Object> static devcb2_base &set_sndirqline_callback(device_t &device, _Object object) { return downcast<sega_genesis_vdp_device &>(device).m_sndirqline_callback.set_callback(object); }
|
||||
template<class _Object> static devcb2_base &set_lv6irqline_callback(device_t &device, _Object object) { return downcast<sega_genesis_vdp_device &>(device).m_lv6irqline_callback.set_callback(object); }
|
||||
template<class _Object> static devcb2_base &set_lv4irqline_callback(device_t &device, _Object object) { return downcast<sega_genesis_vdp_device &>(device).m_lv4irqline_callback.set_callback(object); }
|
||||
template<class _Object> static devcb2_base &set_sndirqline_callback(device_t &device, _Object object) { return downcast<sega315_5313_device &>(device).m_sndirqline_callback.set_callback(object); }
|
||||
template<class _Object> static devcb2_base &set_lv6irqline_callback(device_t &device, _Object object) { return downcast<sega315_5313_device &>(device).m_lv6irqline_callback.set_callback(object); }
|
||||
template<class _Object> static devcb2_base &set_lv4irqline_callback(device_t &device, _Object object) { return downcast<sega315_5313_device &>(device).m_lv4irqline_callback.set_callback(object); }
|
||||
static void set_alt_timing(device_t &device, int use_alt_timing);
|
||||
static void set_palwrite_base(device_t &device, int palwrite_base);
|
||||
static void static_set_palette_tag(device_t &device, const char *tag);
|
||||
|
||||
static void set_md_32x_scanline(device_t &device, md_32x_scanline_delegate callback) { downcast<sega_genesis_vdp_device &>(device).m_32x_scanline_func = callback; }
|
||||
static void set_md_32x_interrupt(device_t &device, md_32x_interrupt_delegate callback) { downcast<sega_genesis_vdp_device &>(device).m_32x_interrupt_func = callback; }
|
||||
static void set_md_32x_scanline_helper(device_t &device, md_32x_scanline_helper_delegate callback) { downcast<sega_genesis_vdp_device &>(device).m_32x_scanline_helper_func = callback; }
|
||||
static void set_md_32x_scanline(device_t &device, md_32x_scanline_delegate callback) { downcast<sega315_5313_device &>(device).m_32x_scanline_func = callback; }
|
||||
static void set_md_32x_interrupt(device_t &device, md_32x_interrupt_delegate callback) { downcast<sega315_5313_device &>(device).m_32x_interrupt_func = callback; }
|
||||
static void set_md_32x_scanline_helper(device_t &device, md_32x_scanline_helper_delegate callback) { downcast<sega315_5313_device &>(device).m_32x_scanline_helper_func = callback; }
|
||||
|
||||
int m_use_alt_timing; // use MAME scanline timer instead, render only one scanline to a single line buffer, to be rendered by a partial update call.. experimental
|
||||
|
||||
int m_palwrite_base; // if we want to write to the actual MAME palette..
|
||||
|
||||
DECLARE_READ16_MEMBER( megadriv_vdp_r );
|
||||
DECLARE_WRITE16_MEMBER( megadriv_vdp_w );
|
||||
DECLARE_READ16_MEMBER( vdp_r );
|
||||
DECLARE_WRITE16_MEMBER( vdp_w );
|
||||
|
||||
int get_scanline_counter();
|
||||
|
||||
@ -353,4 +353,4 @@ private:
|
||||
};
|
||||
|
||||
|
||||
extern const device_type SEGA_GEN_VDP;
|
||||
extern const device_type SEGA315_5313;
|
@ -23,6 +23,15 @@ ifneq ($(filter SEGA315_5124,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/315_5124.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#@src/emu/video/315_5313.h,VIDEOS += SEGA315_5313
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter SEGA315_5313,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/315_5313.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#@src/emu/video/bufsprite.h,VIDEOS += BUFSPRITE
|
||||
|
@ -672,7 +672,7 @@ static MACHINE_CONFIG_START( megaplay, mplay_state )
|
||||
MCFG_SCREEN_UPDATE_DRIVER(mplay_state, screen_update_megplay)
|
||||
|
||||
MCFG_DEVICE_MODIFY("gen_vdp")
|
||||
MCFG_SEGAGEN_VDP_INT_CB(WRITELINE(mplay_state, bios_int_callback))
|
||||
MCFG_SEGA315_5313_INT_CB(WRITELINE(mplay_state, bios_int_callback))
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
|
@ -698,7 +698,7 @@ static MACHINE_CONFIG_START( megatech, mtech_state )
|
||||
MCFG_SCREEN_VBLANK_DRIVER(mtech_state, screen_eof_main)
|
||||
|
||||
MCFG_DEVICE_MODIFY("gen_vdp")
|
||||
MCFG_SEGAGEN_VDP_INT_CB(WRITELINE(mtech_state, snd_int_callback))
|
||||
MCFG_SEGA315_5313_INT_CB(WRITELINE(mtech_state, snd_int_callback))
|
||||
|
||||
MCFG_SCREEN_ADD("menu", RASTER)
|
||||
// check frq
|
||||
|
@ -50,7 +50,6 @@ Notes:
|
||||
|
||||
#include "includes/megadriv.h"
|
||||
|
||||
#include "machine/megavdp.h"
|
||||
|
||||
/* Puckman Pockimon Input Ports */
|
||||
static INPUT_PORTS_START( puckpkmn )
|
||||
@ -221,7 +220,7 @@ static ADDRESS_MAP_START( puckpkmn_map, AS_PROGRAM, 16, md_boot_state )
|
||||
AM_RANGE(0x700018, 0x700019) AM_READ_PORT("DSW2")
|
||||
AM_RANGE(0x700022, 0x700023) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
|
||||
AM_RANGE(0xa04000, 0xa04003) AM_READWRITE8(megadriv_68k_YM2612_read, megadriv_68k_YM2612_write, 0xffff)
|
||||
AM_RANGE(0xc00000, 0xc0001f) AM_DEVREADWRITE("gen_vdp", sega_genesis_vdp_device, megadriv_vdp_r,megadriv_vdp_w)
|
||||
AM_RANGE(0xc00000, 0xc0001f) AM_DEVREADWRITE("gen_vdp", sega315_5313_device, vdp_r, vdp_w)
|
||||
|
||||
AM_RANGE(0xe00000, 0xe0ffff) AM_RAM AM_MIRROR(0x1f0000)
|
||||
|
||||
@ -245,7 +244,7 @@ static ADDRESS_MAP_START( jzth_map, AS_PROGRAM, 16, md_boot_state )
|
||||
AM_RANGE(0x700018, 0x700019) AM_READ_PORT("DSW2")
|
||||
AM_RANGE(0x700022, 0x700023) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
|
||||
AM_RANGE(0xa04000, 0xa04003) AM_READWRITE8( megadriv_68k_YM2612_read, megadriv_68k_YM2612_write, 0xffff)
|
||||
AM_RANGE(0xc00000, 0xc0001f) AM_DEVREADWRITE("gen_vdp", sega_genesis_vdp_device, megadriv_vdp_r,megadriv_vdp_w)
|
||||
AM_RANGE(0xc00000, 0xc0001f) AM_DEVREADWRITE("gen_vdp", sega315_5313_device, vdp_r, vdp_w)
|
||||
|
||||
AM_RANGE(0xe00000, 0xe0ffff) AM_RAM AM_MIRROR(0x1f0000)
|
||||
|
||||
|
@ -694,7 +694,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, segac2_state )
|
||||
AM_RANGE(0x840100, 0x840107) AM_MIRROR(0x13fef8) AM_DEVREADWRITE8("ymsnd", ym3438_device, read, write, 0x00ff)
|
||||
AM_RANGE(0x880100, 0x880101) AM_MIRROR(0x13fefe) AM_WRITE(counter_timer_w)
|
||||
AM_RANGE(0x8c0000, 0x8c0fff) AM_MIRROR(0x13f000) AM_READWRITE(palette_r, palette_w) AM_SHARE("paletteram")
|
||||
AM_RANGE(0xc00000, 0xc0001f) AM_MIRROR(0x18ff00) AM_DEVREADWRITE("gen_vdp", sega_genesis_vdp_device, megadriv_vdp_r,megadriv_vdp_w)
|
||||
AM_RANGE(0xc00000, 0xc0001f) AM_MIRROR(0x18ff00) AM_DEVREADWRITE("gen_vdp", sega315_5313_device, vdp_r, vdp_w)
|
||||
AM_RANGE(0xe00000, 0xe0ffff) AM_MIRROR(0x1f0000) AM_RAM AM_SHARE("nvram")
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -1441,15 +1441,15 @@ static MACHINE_CONFIG_START( segac, segac2_state )
|
||||
MCFG_MACHINE_RESET_OVERRIDE(segac2_state,segac2)
|
||||
MCFG_NVRAM_ADD_RANDOM_FILL("nvram")
|
||||
|
||||
MCFG_DEVICE_ADD("gen_vdp", SEGA_GEN_VDP, 0)
|
||||
MCFG_SEGAGEN_VDP_IS_PAL(false)
|
||||
MCFG_SEGAGEN_VDP_SND_IRQ_CALLBACK(WRITELINE(segac2_state, vdp_sndirqline_callback_c2));
|
||||
MCFG_SEGAGEN_VDP_LV6_IRQ_CALLBACK(WRITELINE(segac2_state, vdp_lv6irqline_callback_c2));
|
||||
MCFG_SEGAGEN_VDP_LV4_IRQ_CALLBACK(WRITELINE(segac2_state, vdp_lv4irqline_callback_c2));
|
||||
MCFG_SEGAGEN_VDP_ALT_TIMING(1);
|
||||
MCFG_DEVICE_ADD("gen_vdp", SEGA315_5313, 0)
|
||||
MCFG_SEGA315_5313_IS_PAL(false)
|
||||
MCFG_SEGA315_5313_SND_IRQ_CALLBACK(WRITELINE(segac2_state, vdp_sndirqline_callback_c2));
|
||||
MCFG_SEGA315_5313_LV6_IRQ_CALLBACK(WRITELINE(segac2_state, vdp_lv6irqline_callback_c2));
|
||||
MCFG_SEGA315_5313_LV4_IRQ_CALLBACK(WRITELINE(segac2_state, vdp_lv4irqline_callback_c2));
|
||||
MCFG_SEGA315_5313_ALT_TIMING(1);
|
||||
MCFG_VIDEO_SET_SCREEN("megadriv")
|
||||
|
||||
MCFG_TIMER_DEVICE_ADD_SCANLINE("scantimer", "gen_vdp", sega_genesis_vdp_device, megadriv_scanline_timer_callback_alt_timing, "megadriv", 0, 1)
|
||||
MCFG_TIMER_DEVICE_ADD_SCANLINE("scantimer", "gen_vdp", sega315_5313_device, megadriv_scanline_timer_callback_alt_timing, "megadriv", 0, 1)
|
||||
|
||||
|
||||
MCFG_SCREEN_ADD("megadriv", RASTER)
|
||||
|
@ -551,12 +551,12 @@ WRITE8_MEMBER( segas18_state::mcu_data_w )
|
||||
|
||||
READ16_MEMBER( segas18_state::genesis_vdp_r )
|
||||
{
|
||||
return m_vdp->megadriv_vdp_r(space,offset,mem_mask);
|
||||
return m_vdp->vdp_r(space, offset, mem_mask);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER( segas18_state::genesis_vdp_w )
|
||||
{
|
||||
m_vdp->megadriv_vdp_w(space,offset,data,mem_mask);
|
||||
m_vdp->vdp_w(space, offset, data, mem_mask);
|
||||
}
|
||||
|
||||
|
||||
@ -1226,16 +1226,16 @@ static MACHINE_CONFIG_START( system18, segas18_state )
|
||||
MCFG_SEGA_315_5195_MAPPER_ADD("mapper", "maincpu", segas18_state, memory_mapper, mapper_sound_r, mapper_sound_w)
|
||||
|
||||
|
||||
MCFG_DEVICE_ADD("gen_vdp", SEGA_GEN_VDP, 0)
|
||||
MCFG_SEGAGEN_VDP_IS_PAL(false)
|
||||
MCFG_SEGAGEN_VDP_SND_IRQ_CALLBACK(WRITELINE(segas18_state, vdp_sndirqline_callback_s18));
|
||||
MCFG_SEGAGEN_VDP_LV6_IRQ_CALLBACK(WRITELINE(segas18_state, vdp_lv6irqline_callback_s18));
|
||||
MCFG_SEGAGEN_VDP_LV4_IRQ_CALLBACK(WRITELINE(segas18_state, vdp_lv4irqline_callback_s18));
|
||||
MCFG_SEGAGEN_VDP_ALT_TIMING(1);
|
||||
MCFG_SEGAGEN_VDP_PAL_WRITE_BASE(0x2000);
|
||||
MCFG_SEGAGEN_VDP_PALETTE("palette")
|
||||
MCFG_DEVICE_ADD("gen_vdp", SEGA315_5313, 0)
|
||||
MCFG_SEGA315_5313_IS_PAL(false)
|
||||
MCFG_SEGA315_5313_SND_IRQ_CALLBACK(WRITELINE(segas18_state, vdp_sndirqline_callback_s18));
|
||||
MCFG_SEGA315_5313_LV6_IRQ_CALLBACK(WRITELINE(segas18_state, vdp_lv6irqline_callback_s18));
|
||||
MCFG_SEGA315_5313_LV4_IRQ_CALLBACK(WRITELINE(segas18_state, vdp_lv4irqline_callback_s18));
|
||||
MCFG_SEGA315_5313_ALT_TIMING(1);
|
||||
MCFG_SEGA315_5313_PAL_WRITE_BASE(0x2000);
|
||||
MCFG_SEGA315_5313_PALETTE("palette")
|
||||
|
||||
MCFG_TIMER_DEVICE_ADD_SCANLINE("scantimer", "gen_vdp", sega_genesis_vdp_device, megadriv_scanline_timer_callback_alt_timing, "screen", 0, 1)
|
||||
MCFG_TIMER_DEVICE_ADD_SCANLINE("scantimer", "gen_vdp", sega315_5313_device, megadriv_scanline_timer_callback_alt_timing, "screen", 0, 1)
|
||||
|
||||
|
||||
// video hardware
|
||||
|
@ -4,7 +4,7 @@
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "sound/2612intf.h"
|
||||
#include "sound/sn76496.h"
|
||||
#include "machine/megavdp.h"
|
||||
#include "video/315_5313.h"
|
||||
|
||||
#define MASTER_CLOCK_NTSC 53693175
|
||||
#define MASTER_CLOCK_PAL 53203424
|
||||
@ -49,7 +49,7 @@ public:
|
||||
required_device<m68000_base_device> m_maincpu;
|
||||
optional_device<cpu_device> m_z80snd;
|
||||
optional_device<ym2612_device> m_ymsnd;
|
||||
required_device<sega_genesis_vdp_device> m_vdp;
|
||||
required_device<sega315_5313_device> m_vdp;
|
||||
optional_shared_ptr<UINT16> m_megadrive_ram;
|
||||
|
||||
ioport_port *m_io_reset;
|
||||
|
@ -9,9 +9,9 @@
|
||||
#include "cpu/m68000/m68000.h"
|
||||
#include "cpu/mcs51/mcs51.h"
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "machine/megavdp.h"
|
||||
#include "machine/nvram.h"
|
||||
#include "machine/segaic16.h"
|
||||
#include "video/315_5313.h"
|
||||
#include "video/segaic16.h"
|
||||
#include "video/sega16sp.h"
|
||||
|
||||
@ -124,7 +124,7 @@ protected:
|
||||
required_device<m68000_device> m_maincpu;
|
||||
required_device<z80_device> m_soundcpu;
|
||||
optional_device<i8751_device> m_mcu;
|
||||
required_device<sega_genesis_vdp_device> m_vdp;
|
||||
required_device<sega315_5313_device> m_vdp;
|
||||
required_device<nvram_device> m_nvram;
|
||||
required_device<sega_sys16b_sprite_device> m_sprites;
|
||||
required_device<segaic16_video_device> m_segaic16vid;
|
||||
|
@ -479,8 +479,8 @@ static ADDRESS_MAP_START( megadriv_map, AS_PROGRAM, 16, md_base_state )
|
||||
// AM_RANGE(0xb10000, 0xb1007f) AM_RAM AM_SHARE("megadrive_vdp_vsram")
|
||||
// AM_RANGE(0xb10100, 0xb1017f) AM_RAM AM_SHARE("megadrive_vdp_cram")
|
||||
|
||||
AM_RANGE(0xc00000, 0xc0001f) AM_DEVREADWRITE("gen_vdp", sega_genesis_vdp_device, megadriv_vdp_r,megadriv_vdp_w)
|
||||
AM_RANGE(0xd00000, 0xd0001f) AM_DEVREADWRITE("gen_vdp", sega_genesis_vdp_device, megadriv_vdp_r,megadriv_vdp_w) // the earth defend
|
||||
AM_RANGE(0xc00000, 0xc0001f) AM_DEVREADWRITE("gen_vdp", sega315_5313_device, vdp_r, vdp_w)
|
||||
AM_RANGE(0xd00000, 0xd0001f) AM_DEVREADWRITE("gen_vdp", sega315_5313_device, vdp_r, vdp_w) // the earth defend
|
||||
AM_RANGE(0xe00000, 0xe0ffff) AM_RAM AM_MIRROR(0x1f0000) AM_SHARE("megadrive_ram")
|
||||
// AM_RANGE(0xff0000, 0xffffff) AM_READONLY
|
||||
/* 0xe00000 - 0xffffff) == MAIN RAM (64kb, Mirrored, most games use ff0000 - ffffff) */
|
||||
@ -773,8 +773,8 @@ static ADDRESS_MAP_START( md_bootleg_map, AS_PROGRAM, 16, md_boot_state )
|
||||
AM_RANGE(0xa11100, 0xa11101) AM_READWRITE(megadriv_68k_check_z80_bus, megadriv_68k_req_z80_bus)
|
||||
AM_RANGE(0xa11200, 0xa11201) AM_WRITE(megadriv_68k_req_z80_reset)
|
||||
|
||||
AM_RANGE(0xc00000, 0xc0001f) AM_DEVREADWRITE("gen_vdp", sega_genesis_vdp_device, megadriv_vdp_r,megadriv_vdp_w)
|
||||
AM_RANGE(0xd00000, 0xd0001f) AM_DEVREADWRITE("gen_vdp", sega_genesis_vdp_device, megadriv_vdp_r,megadriv_vdp_w)
|
||||
AM_RANGE(0xc00000, 0xc0001f) AM_DEVREADWRITE("gen_vdp", sega315_5313_device, vdp_r, vdp_w)
|
||||
AM_RANGE(0xd00000, 0xd0001f) AM_DEVREADWRITE("gen_vdp", sega315_5313_device, vdp_r, vdp_w)
|
||||
|
||||
AM_RANGE(0xe00000, 0xe0ffff) AM_RAM AM_MIRROR(0x1f0000) AM_SHARE("megadrive_ram")
|
||||
ADDRESS_MAP_END
|
||||
@ -920,7 +920,7 @@ IRQ_CALLBACK_MEMBER(md_base_state::genesis_int_callback)
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_FRAGMENT( megadriv_timers )
|
||||
MCFG_TIMER_DEVICE_ADD("md_scan_timer", "gen_vdp", sega_genesis_vdp_device, megadriv_scanline_timer_callback)
|
||||
MCFG_TIMER_DEVICE_ADD("md_scan_timer", "gen_vdp", sega315_5313_device, megadriv_scanline_timer_callback)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
@ -939,11 +939,11 @@ MACHINE_CONFIG_FRAGMENT( md_ntsc )
|
||||
|
||||
MCFG_FRAGMENT_ADD(megadriv_timers)
|
||||
|
||||
MCFG_DEVICE_ADD("gen_vdp", SEGA_GEN_VDP, 0)
|
||||
MCFG_SEGAGEN_VDP_IS_PAL(false)
|
||||
MCFG_SEGAGEN_VDP_SND_IRQ_CALLBACK(WRITELINE(md_base_state, vdp_sndirqline_callback_genesis_z80));
|
||||
MCFG_SEGAGEN_VDP_LV6_IRQ_CALLBACK(WRITELINE(md_base_state, vdp_lv6irqline_callback_genesis_68k));
|
||||
MCFG_SEGAGEN_VDP_LV4_IRQ_CALLBACK(WRITELINE(md_base_state, vdp_lv4irqline_callback_genesis_68k));
|
||||
MCFG_DEVICE_ADD("gen_vdp", SEGA315_5313, 0)
|
||||
MCFG_SEGA315_5313_IS_PAL(false)
|
||||
MCFG_SEGA315_5313_SND_IRQ_CALLBACK(WRITELINE(md_base_state, vdp_sndirqline_callback_genesis_z80));
|
||||
MCFG_SEGA315_5313_LV6_IRQ_CALLBACK(WRITELINE(md_base_state, vdp_lv6irqline_callback_genesis_68k));
|
||||
MCFG_SEGA315_5313_LV4_IRQ_CALLBACK(WRITELINE(md_base_state, vdp_lv4irqline_callback_genesis_68k));
|
||||
MCFG_VIDEO_SET_SCREEN("megadriv")
|
||||
|
||||
MCFG_SCREEN_ADD("megadriv", RASTER)
|
||||
@ -986,11 +986,11 @@ MACHINE_CONFIG_FRAGMENT( md_pal )
|
||||
|
||||
MCFG_FRAGMENT_ADD(megadriv_timers)
|
||||
|
||||
MCFG_DEVICE_ADD("gen_vdp", SEGA_GEN_VDP, 0)
|
||||
MCFG_SEGAGEN_VDP_IS_PAL(true)
|
||||
MCFG_SEGAGEN_VDP_SND_IRQ_CALLBACK(WRITELINE(md_base_state, vdp_sndirqline_callback_genesis_z80));
|
||||
MCFG_SEGAGEN_VDP_LV6_IRQ_CALLBACK(WRITELINE(md_base_state, vdp_lv6irqline_callback_genesis_68k));
|
||||
MCFG_SEGAGEN_VDP_LV4_IRQ_CALLBACK(WRITELINE(md_base_state, vdp_lv4irqline_callback_genesis_68k));
|
||||
MCFG_DEVICE_ADD("gen_vdp", SEGA315_5313, 0)
|
||||
MCFG_SEGA315_5313_IS_PAL(true)
|
||||
MCFG_SEGA315_5313_SND_IRQ_CALLBACK(WRITELINE(md_base_state, vdp_sndirqline_callback_genesis_z80));
|
||||
MCFG_SEGA315_5313_LV6_IRQ_CALLBACK(WRITELINE(md_base_state, vdp_lv6irqline_callback_genesis_68k));
|
||||
MCFG_SEGA315_5313_LV4_IRQ_CALLBACK(WRITELINE(md_base_state, vdp_lv4irqline_callback_genesis_68k));
|
||||
MCFG_VIDEO_SET_SCREEN("megadriv")
|
||||
|
||||
MCFG_SCREEN_ADD("megadriv", RASTER)
|
||||
|
@ -271,6 +271,7 @@ SOUNDS += MOS7360
|
||||
#-------------------------------------------------
|
||||
|
||||
VIDEOS += SEGA315_5124
|
||||
VIDEOS += SEGA315_5313
|
||||
VIDEOS += BUFSPRITE
|
||||
#VIDEOS += CDP1861
|
||||
#VIDEOS += CDP1862
|
||||
@ -1545,7 +1546,6 @@ $(MAMEOBJ)/sega.a: \
|
||||
$(DRIVERS)/kopunch.o $(VIDEO)/kopunch.o \
|
||||
$(DRIVERS)/lindbergh.o \
|
||||
$(MACHINE)/megadriv.o \
|
||||
$(MACHINE)/megavdp.o \
|
||||
$(DRIVERS)/megadrvb.o \
|
||||
$(DRIVERS)/megaplay.o \
|
||||
$(DRIVERS)/megatech.o \
|
||||
|
@ -528,9 +528,9 @@ static MACHINE_CONFIG_START( genesis_32x, md_cons_state )
|
||||
MCFG_MACHINE_RESET_OVERRIDE(md_cons_state, ms_megadriv)
|
||||
|
||||
MCFG_DEVICE_MODIFY("gen_vdp")
|
||||
MCFG_SEGAGEN_VDP_32X_SCANLINE_CB(md_cons_state, _32x_scanline_callback);
|
||||
MCFG_SEGAGEN_VDP_32X_SCANLINE_HELPER_CB(md_cons_state, _32x_scanline_helper_callback);
|
||||
MCFG_SEGAGEN_VDP_32X_INTERRUPT_CB(md_cons_state, _32x_interrupt_callback);
|
||||
MCFG_SEGA315_5313_32X_SCANLINE_CB(md_cons_state, _32x_scanline_callback);
|
||||
MCFG_SEGA315_5313_32X_SCANLINE_HELPER_CB(md_cons_state, _32x_scanline_helper_callback);
|
||||
MCFG_SEGA315_5313_32X_INTERRUPT_CB(md_cons_state, _32x_interrupt_callback);
|
||||
|
||||
MCFG_DEVICE_ADD("sega32x", SEGA_32X_NTSC, 0)
|
||||
MCFG_SEGA_32X_PALETTE("gen_vdp:palette")
|
||||
@ -570,9 +570,9 @@ static MACHINE_CONFIG_START( mdj_32x, md_cons_state )
|
||||
MCFG_MACHINE_RESET_OVERRIDE(md_cons_state, ms_megadriv)
|
||||
|
||||
MCFG_DEVICE_MODIFY("gen_vdp")
|
||||
MCFG_SEGAGEN_VDP_32X_SCANLINE_CB(md_cons_state, _32x_scanline_callback);
|
||||
MCFG_SEGAGEN_VDP_32X_SCANLINE_HELPER_CB(md_cons_state, _32x_scanline_helper_callback);
|
||||
MCFG_SEGAGEN_VDP_32X_INTERRUPT_CB(md_cons_state, _32x_interrupt_callback);
|
||||
MCFG_SEGA315_5313_32X_SCANLINE_CB(md_cons_state, _32x_scanline_callback);
|
||||
MCFG_SEGA315_5313_32X_SCANLINE_HELPER_CB(md_cons_state, _32x_scanline_helper_callback);
|
||||
MCFG_SEGA315_5313_32X_INTERRUPT_CB(md_cons_state, _32x_interrupt_callback);
|
||||
|
||||
MCFG_DEVICE_ADD("sega32x", SEGA_32X_NTSC, 0)
|
||||
MCFG_SEGA_32X_PALETTE("gen_vdp:palette")
|
||||
@ -612,9 +612,9 @@ static MACHINE_CONFIG_START( md_32x, md_cons_state )
|
||||
MCFG_MACHINE_RESET_OVERRIDE(md_cons_state, ms_megadriv)
|
||||
|
||||
MCFG_DEVICE_MODIFY("gen_vdp")
|
||||
MCFG_SEGAGEN_VDP_32X_SCANLINE_CB(md_cons_state, _32x_scanline_callback);
|
||||
MCFG_SEGAGEN_VDP_32X_SCANLINE_HELPER_CB(md_cons_state, _32x_scanline_helper_callback);
|
||||
MCFG_SEGAGEN_VDP_32X_INTERRUPT_CB(md_cons_state, _32x_interrupt_callback);
|
||||
MCFG_SEGA315_5313_32X_SCANLINE_CB(md_cons_state, _32x_scanline_callback);
|
||||
MCFG_SEGA315_5313_32X_SCANLINE_HELPER_CB(md_cons_state, _32x_scanline_helper_callback);
|
||||
MCFG_SEGA315_5313_32X_INTERRUPT_CB(md_cons_state, _32x_interrupt_callback);
|
||||
|
||||
MCFG_DEVICE_ADD("sega32x", SEGA_32X_PAL, 0)
|
||||
MCFG_SEGA_32X_PALETTE("gen_vdp:palette")
|
||||
|
@ -300,7 +300,7 @@ static ADDRESS_MAP_START( pico_mem, AS_PROGRAM, 16, pico_base_state )
|
||||
|
||||
AM_RANGE(0x800000, 0x80001f) AM_READWRITE(pico_68k_io_read, pico_68k_io_write)
|
||||
|
||||
AM_RANGE(0xc00000, 0xc0001f) AM_DEVREADWRITE("gen_vdp", sega_genesis_vdp_device, megadriv_vdp_r,megadriv_vdp_w)
|
||||
AM_RANGE(0xc00000, 0xc0001f) AM_DEVREADWRITE("gen_vdp", sega315_5313_device, vdp_r, vdp_w)
|
||||
AM_RANGE(0xe00000, 0xe0ffff) AM_RAM AM_MIRROR(0x1f0000)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -530,7 +530,7 @@ static ADDRESS_MAP_START( copera_mem, AS_PROGRAM, 16, copera_state )
|
||||
|
||||
AM_RANGE(0x800000, 0x80001f) AM_READWRITE(pico_68k_io_read, pico_68k_io_write)
|
||||
|
||||
AM_RANGE(0xc00000, 0xc0001f) AM_DEVREADWRITE("gen_vdp", sega_genesis_vdp_device, megadriv_vdp_r,megadriv_vdp_w)
|
||||
AM_RANGE(0xc00000, 0xc0001f) AM_DEVREADWRITE("gen_vdp", sega315_5313_device, vdp_r, vdp_w)
|
||||
|
||||
AM_RANGE(0xe00000, 0xe0ffff) AM_RAM AM_MIRROR(0x1f0000)
|
||||
ADDRESS_MAP_END
|
||||
|
@ -1038,7 +1038,7 @@ READ16_MEMBER( sega_32x_device::_32x_common_vdp_regs_r )
|
||||
void sega_32x_device::_32x_check_framebuffer_swap(bool enabled)
|
||||
{
|
||||
// this logic should be correct, but makes things worse?
|
||||
// enabled = (genesis_scanline_counter >= megadrive_irq6_scanline) from megavdp.c
|
||||
// enabled = (genesis_scanline_counter >= megadrive_irq6_scanline) from video/315_5313.c
|
||||
//if (enabled)
|
||||
{
|
||||
m_32x_a1518a_reg = m_32x_fb_swap & 1;
|
||||
|
@ -258,6 +258,7 @@ SOUNDS += VRC6
|
||||
#-------------------------------------------------
|
||||
|
||||
VIDEOS += SEGA315_5124
|
||||
VIDEOS += SEGA315_5313
|
||||
#VIDEOS += BUFSPRITE
|
||||
VIDEOS += CDP1861
|
||||
VIDEOS += CDP1862
|
||||
@ -801,7 +802,6 @@ $(MESSOBJ)/mame.a: \
|
||||
$(MAME_VIDEO)/rdptpipe.o \
|
||||
$(MAME_VIDEO)/rdpspn16.o \
|
||||
$(MAME_MACHINE)/megadriv.o \
|
||||
$(MAME_MACHINE)/megavdp.o \
|
||||
$(MAME_MACHINE)/dc.o \
|
||||
$(MAME_DRIVERS)/naomi.o \
|
||||
$(MAME_VIDEO)/powervr2.o \
|
||||
|
Loading…
Reference in New Issue
Block a user