Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/devices/video/315_5313.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2221,10 +2221,10 @@ void sega315_5313_device::render_videobuffer_to_screenbuffer(int scanline)
m_32x_scanline_helper_func(scanline);
if (!m_32x_scanline_func.isnull())
{
for (int srcx = 0, xx = 0, dstx = 0; srcx < horz; dstx++)
for (int srcx = 0, xx = 0, dstx = 0; srcx < 320; dstx++)
{
m_32x_scanline_func(srcx, m_video_renderline[srcx] & 0x20000, lineptr[dstx]);
if (++xx >= mul)
if (++xx >= 4)
{
srcx++;
xx = 0;
Expand Down
6 changes: 3 additions & 3 deletions src/mame/sega/calcune.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,8 @@ INPUT_PORTS_END

uint16_t calcune_state::cal_700000_r()
{
m_vdp_state = 0;
if (!machine().side_effects_disabled())
m_vdp_state = 0;
return 0;
}

Expand Down Expand Up @@ -256,8 +257,7 @@ void calcune_state::calcune(machine_config &config)
Z80(config, "z80", OSC1_CLOCK / 15).set_disable(); /* 3.58 MHz, no code is ever uploaded for the Z80, so it's unused here even if it is present on the PCB */

screen_device &screen(SCREEN(config, "megadriv", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(double(OSC1_CLOCK) / 10.0 / 262.0 / 342.0); // same as SMS?
// screen.set_refresh_hz(double(OSC1_CLOCK) / 8.0 / 262.0 / 427.0); // or 427 Htotal?
screen.set_refresh_hz(double(OSC1_CLOCK) / 3420.0 / 262.0); // 3420 clock per scanline
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

3420 x 262 screenshot memes for a game that don't even boot ...

screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); // Vblank handled manually.
screen.set_size(64*8, 620);
screen.set_visarea(0, 40*8-1, 0, 28*8-1);
Expand Down
6 changes: 3 additions & 3 deletions src/mame/sega/mdconsole.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -433,7 +433,7 @@ void md_cons_state::_32x_scanline_helper_callback(int scanline)

void md_cons_state::genesis_32x(machine_config &config)
{
md_ntsc(config);
md_ntsc(config, true);

m_vdp->set_md_32x_scanline(FUNC(md_cons_state::_32x_scanline_callback));
m_vdp->set_md_32x_scanline_helper(FUNC(md_cons_state::_32x_scanline_helper_callback));
Expand Down Expand Up @@ -468,7 +468,7 @@ void md_cons_state::genesis_32x(machine_config &config)

void md_cons_state::mdj_32x(machine_config &config)
{
md_ntsc(config);
md_ntsc(config, true);

m_vdp->set_md_32x_scanline(FUNC(md_cons_state::_32x_scanline_callback));
m_vdp->set_md_32x_scanline_helper(FUNC(md_cons_state::_32x_scanline_helper_callback));
Expand Down Expand Up @@ -503,7 +503,7 @@ void md_cons_state::mdj_32x(machine_config &config)

void md_cons_state::md_32x(machine_config &config)
{
md_pal(config);
md_pal(config, true);

m_vdp->set_md_32x_scanline(FUNC(md_cons_state::_32x_scanline_callback));
m_vdp->set_md_32x_scanline_helper(FUNC(md_cons_state::_32x_scanline_helper_callback));
Expand Down
36 changes: 18 additions & 18 deletions src/mame/sega/megadriv.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -752,7 +752,7 @@ void md_core_state::megadriv_timers(machine_config &config)
TIMER(config, m_scan_timer).configure_generic(m_vdp, FUNC(sega315_5313_device::megadriv_scanline_timer_callback));
}

void md_core_state::md_core_ntsc(machine_config &config)
void md_core_state::md_core_ntsc(machine_config &config, bool use_lcm_scaling)
{
M68000(config, m_maincpu, MASTER_CLOCK_NTSC / 7); // 7.67 MHz
m_maincpu->set_addrmap(m68000_base_device::AS_CPU_SPACE, &md_core_state::cpu_space_map);
Expand All @@ -761,22 +761,22 @@ void md_core_state::md_core_ntsc(machine_config &config)
megadriv_timers(config);

SEGA315_5313(config, m_vdp, MASTER_CLOCK_NTSC, m_maincpu);
m_vdp->set_lcm_scaling(use_lcm_scaling);
m_vdp->set_is_pal(false);
m_vdp->vint_cb().set(FUNC(md_core_state::vdp_vint_cb));
m_vdp->hint_cb().set(FUNC(md_core_state::vdp_hint_cb));
m_vdp->set_screen("megadriv");

SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_refresh_hz(MASTER_CLOCK_NTSC / 10 / 262 / 342); // same as SMS?
// m_screen->set_refresh_hz(double(MASTER_CLOCK_NTSC) / 8 / 262 / 427); // or 427 Htotal?
m_screen->set_refresh_hz(MASTER_CLOCK_NTSC / 3420.0 / 262.0); // 3420 clock per scanline
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); // Vblank handled manually.
m_screen->set_size(64*8, 620);
m_screen->set_visarea(0, 32*8-1, 0, 28*8-1);
m_screen->set_size(64 * 8 * (use_lcm_scaling ? 5 : 1), 620);
m_screen->set_visarea(0, (32 * 8 * (use_lcm_scaling ? 5 : 1)) - 1, 0, 28 * 8-1);
m_screen->set_screen_update(FUNC(md_core_state::screen_update_megadriv)); /* Copies a bitmap */
m_screen->screen_vblank().set(FUNC(md_core_state::screen_vblank_megadriv)); /* Used to Sync the timing */
}

void md_core_state::md_core_pal(machine_config &config)
void md_core_state::md_core_pal(machine_config &config, bool use_lcm_scaling)
{
M68000(config, m_maincpu, MASTER_CLOCK_PAL / 7); // 7.67 MHz
m_maincpu->set_addrmap(m68000_base_device::AS_CPU_SPACE, &md_core_state::cpu_space_map);
Expand All @@ -785,17 +785,17 @@ void md_core_state::md_core_pal(machine_config &config)
megadriv_timers(config);

SEGA315_5313(config, m_vdp, MASTER_CLOCK_PAL, m_maincpu);
m_vdp->set_lcm_scaling(use_lcm_scaling);
m_vdp->set_is_pal(true);
m_vdp->vint_cb().set(FUNC(md_core_state::vdp_vint_cb));
m_vdp->hint_cb().set(FUNC(md_core_state::vdp_hint_cb));
m_vdp->set_screen("megadriv");

SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_refresh_hz(MASTER_CLOCK_PAL / 10 / 313 / 342); // same as SMS?
// m_screen->set_refresh_hz(MASTER_CLOCK_PAL / 8 / 313 / 423); // or 423 Htotal?
m_screen->set_refresh_hz(MASTER_CLOCK_PAL / 3420.0 / 313.0); // 3420 clock per scanline
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); // Vblank handled manually.
m_screen->set_size(64*8, 620);
m_screen->set_visarea(0, 32*8-1, 0, 28*8-1);
m_screen->set_size(64 * 8 * (use_lcm_scaling ? 5 : 1), 620);
m_screen->set_visarea(0, (32*8 * (use_lcm_scaling ? 5 : 1)) - 1, 0, 28 * 8 - 1);
m_screen->set_screen_update(FUNC(md_core_state::screen_update_megadriv)); /* Copies a bitmap */
m_screen->screen_vblank().set(FUNC(md_core_state::screen_vblank_megadriv)); /* Used to Sync the timing */
}
Expand Down Expand Up @@ -843,9 +843,9 @@ void md_ctrl_state::ctrl2_6button(machine_config &config)
}


void md_base_state::md_ntsc(machine_config &config)
void md_base_state::md_ntsc(machine_config &config, bool use_lcm_scaling)
{
md_core_ntsc(config);
md_core_ntsc(config, use_lcm_scaling);

m_maincpu->set_addrmap(AS_PROGRAM, &md_base_state::megadriv_68k_map);

Expand All @@ -870,9 +870,9 @@ void md_base_state::md_ntsc(machine_config &config)
m_ymsnd->add_route(1, "speaker", 0.50, 1);
}

void md_base_state::md2_ntsc(machine_config &config)
void md_base_state::md2_ntsc(machine_config &config, bool use_lcm_scaling)
{
md_ntsc(config);
md_ntsc(config, use_lcm_scaling);

// Internalized YM3438 in VDP ASIC
YM3438(config.replace(), m_ymsnd, MASTER_CLOCK_NTSC / 7); // 7.67 MHz
Expand All @@ -882,9 +882,9 @@ void md_base_state::md2_ntsc(machine_config &config)

/************ PAL hardware has a different master clock *************/

void md_base_state::md_pal(machine_config &config)
void md_base_state::md_pal(machine_config &config, bool use_lcm_scaling)
{
md_core_pal(config);
md_core_pal(config, use_lcm_scaling);

m_maincpu->set_addrmap(AS_PROGRAM, &md_base_state::megadriv_68k_map);

Expand All @@ -908,9 +908,9 @@ void md_base_state::md_pal(machine_config &config)
m_ymsnd->add_route(1, "speaker", 0.50, 1);
}

void md_base_state::md2_pal(machine_config &config)
void md_base_state::md2_pal(machine_config &config, bool use_lcm_scaling)
{
md_pal(config);
md_pal(config, use_lcm_scaling);

// Internalized YM3438 in VDP ASIC
YM3438(config.replace(), m_ymsnd, MASTER_CLOCK_PAL / 7); /* 7.67 MHz */
Expand Down
13 changes: 6 additions & 7 deletions src/mame/sega/megadriv.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,8 @@ class md_core_state : public driver_device

virtual void machine_reset() override ATTR_COLD;

void md_core_ntsc(machine_config &config);
void md_core_pal(machine_config &config);
void md_core_ntsc(machine_config &config, bool use_lcm_scaling = false);
void md_core_pal(machine_config &config, bool use_lcm_scaling = false);

void megadriv_tas_callback(offs_t offset, uint8_t data);

Expand Down Expand Up @@ -110,11 +110,10 @@ class md_base_state : public md_core_state

void megadriv_stop_scanline_timer();

void md_ntsc(machine_config &config);
void md2_ntsc(machine_config &config);
void md_pal(machine_config &config);
void md2_pal(machine_config &config);
void md_bootleg(machine_config &config);
void md_ntsc(machine_config &config, bool use_lcm_scaling = false);
void md2_ntsc(machine_config &config, bool use_lcm_scaling = false);
void md_pal(machine_config &config, bool use_lcm_scaling = false);
void md2_pal(machine_config &config, bool use_lcm_scaling = false);

virtual void machine_start() override ATTR_COLD;
virtual void machine_reset() override ATTR_COLD;
Expand Down
3 changes: 1 addition & 2 deletions src/mame/sega/segac2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1974,8 +1974,7 @@ void segac2_state::segac(machine_config &config)
TIMER(config, "scantimer").configure_scanline("gen_vdp", FUNC(sega315_5313_device::megadriv_scanline_timer_callback_alt_timing), "screen", 0, 1);

SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_refresh_hz(double(XL2_CLOCK.value()) / 10.0 / 262.0 / 342.0); // same as SMS?
// m_screen->set_refresh_hz(double(XL2_CLOCK.value()) / 8.0 / 262.0 / 427.0); // or 427 Htotal?
m_screen->set_refresh_hz(double(XL2_CLOCK.value()) / 3420.0 / 262.0); // 3420 clock per scanline
m_screen->set_size(512, 262);
m_screen->set_visarea(0, 32*8-1, 0, 28*8-1);
m_screen->set_screen_update(FUNC(segac2_state::screen_update_segac2_new));
Expand Down
Loading