tceptor: get rid of hacky 3d glasses simulation (nw)

This commit is contained in:
hap 2017-10-24 18:28:13 +02:00
parent 0853bb469b
commit a237076eb8
4 changed files with 21 additions and 82 deletions

View File

@ -22,12 +22,9 @@
#include "rendlay.h"
#include "speaker.h"
#include "tceptor2.lh"
/*******************************************************************/
READ8_MEMBER(tceptor_state::m68k_shared_r)
{
return m_m68k_shared_ram[offset];
@ -293,7 +290,7 @@ static INPUT_PORTS_START( tceptor2 )
PORT_INCLUDE( tceptor )
PORT_MODIFY("DSW2")
PORT_DIPNAME( 0x04, 0x04, "MODE" )
PORT_DIPNAME( 0x04, 0x00, "Mode" ) // NOTE: factory default is actually 3D
PORT_DIPSETTING( 0x00, "2D" )
PORT_DIPSETTING( 0x04, "3D" )
PORT_BIT( 0xf8, IP_ACTIVE_LOW, IPT_UNKNOWN )
@ -347,76 +344,55 @@ void tceptor_state::machine_reset()
static MACHINE_CONFIG_START( tceptor )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M6809, 49152000/32)
MCFG_CPU_ADD("maincpu", M6809, XTAL_49_152MHz/32)
MCFG_CPU_PROGRAM_MAP(m6809_map)
MCFG_CPU_VBLANK_INT_DRIVER("2dscreen", tceptor_state, m6809_vb_interrupt)
MCFG_CPU_VBLANK_INT_DRIVER("screen", tceptor_state, m6809_vb_interrupt)
MCFG_CPU_ADD("audiocpu", M65C02, 49152000/24)
MCFG_CPU_ADD("audiocpu", M65C02, XTAL_49_152MHz/24)
MCFG_CPU_PROGRAM_MAP(m6502_a_map)
MCFG_CPU_ADD("audio2", M65C02, 49152000/24)
MCFG_CPU_ADD("audio2", M65C02, XTAL_49_152MHz/24)
MCFG_CPU_PROGRAM_MAP(m6502_b_map)
MCFG_CPU_ADD("sub", M68000, 49152000/4)
MCFG_CPU_ADD("sub", M68000, XTAL_49_152MHz/4)
MCFG_CPU_PROGRAM_MAP(m68k_map)
MCFG_CPU_VBLANK_INT_DRIVER("2dscreen", tceptor_state, m68k_vb_interrupt)
MCFG_CPU_VBLANK_INT_DRIVER("screen", tceptor_state, m68k_vb_interrupt)
MCFG_CPU_ADD("mcu", HD63701, 49152000/8) /* or compatible 6808 with extra instructions */
MCFG_CPU_ADD("mcu", HD63701, XTAL_49_152MHz/8) // or compatible 6808 with extra instructions
MCFG_CPU_PROGRAM_MAP(mcu_map)
MCFG_CPU_IO_MAP(mcu_io_map)
MCFG_CPU_VBLANK_INT_DRIVER("2dscreen", tceptor_state, mcu_vb_interrupt)
MCFG_CPU_VBLANK_INT_DRIVER("screen", tceptor_state, mcu_vb_interrupt)
MCFG_QUANTUM_TIME(attotime::from_hz(6000))
MCFG_NVRAM_ADD_1FILL("nvram")
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", "palette", tceptor)
MCFG_PALETTE_ADD("palette", 4096)
MCFG_PALETTE_INDIRECT_ENTRIES(1024)
MCFG_PALETTE_INIT_OWNER(tceptor_state, tceptor)
MCFG_DEFAULT_LAYOUT(layout_horizont)
MCFG_NAMCO_C45_ROAD_ADD("c45_road")
MCFG_GFX_PALETTE("palette")
MCFG_SCREEN_ADD("2dscreen", RASTER)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60.606060)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(38*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(2*8, 34*8-1 + 2*8, 0*8, 28*8-1 + 0)
MCFG_SCREEN_UPDATE_DRIVER(tceptor_state, screen_update_tceptor_2d)
MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_ADD("3dleft", RASTER)
MCFG_SCREEN_REFRESH_RATE(60.606060)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(38*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(2*8, 34*8-1 + 2*8, 0*8, 28*8-1 + 0)
MCFG_SCREEN_UPDATE_DRIVER(tceptor_state, screen_update_tceptor_3d_left)
MCFG_SCREEN_PALETTE("palette")
MCFG_SCREEN_ADD("3dright", RASTER)
MCFG_SCREEN_REFRESH_RATE(60.606060)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(38*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(2*8, 34*8-1 + 2*8, 0*8, 28*8-1 + 0)
MCFG_SCREEN_UPDATE_DRIVER(tceptor_state, screen_update_tceptor_3d_right)
MCFG_SCREEN_UPDATE_DRIVER(tceptor_state, screen_update_tceptor)
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(tceptor_state, screen_vblank_tceptor))
MCFG_SCREEN_PALETTE("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_YM2151_ADD("ymsnd", 14318180/4)
MCFG_YM2151_ADD("ymsnd", XTAL_14_31818MHz/4)
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
MCFG_SOUND_ADD("namco", NAMCO_CUS30, 49152000/2048)
MCFG_SOUND_ADD("namco", NAMCO_CUS30, XTAL_49_152MHz/2048)
MCFG_NAMCO_AUDIO_VOICES(8)
MCFG_NAMCO_AUDIO_STEREO(1)
MCFG_SOUND_ROUTE(0, "lspeaker", 0.40)
@ -542,6 +518,6 @@ ROM_START( tceptor2 )
ROM_END
// ( YEAR NAME PARENT MACHINE INPUT STATE INIT MONITOR COMPANY FULLNAME FLAGS )
GAME ( 1986, tceptor, 0, tceptor, tceptor, tceptor_state, 0, ROT0, "Namco", "Thunder Ceptor", 0)
GAMEL( 1986, tceptor2, tceptor, tceptor, tceptor2, tceptor_state, 0, ROT0, "Namco", "Thunder Ceptor II", 0, layout_tceptor2)
// ( YEAR NAME PARENT MACHINE INPUT STATE INIT MONITOR COMPANY FULLNAME FLAGS )
GAME ( 1986, tceptor, 0, tceptor, tceptor, tceptor_state, 0, ROT0, "Namco", "Thunder Ceptor", 0)
GAME ( 1986, tceptor2, tceptor, tceptor, tceptor2, tceptor_state, 0, ROT0, "Namco", "3-D Thunder Ceptor II", 0)

View File

@ -17,7 +17,7 @@ public:
m_m68k_shared_ram(*this, "m68k_shared_ram"),
m_sprite_ram(*this, "sprite_ram"),
m_c45_road(*this, "c45_road"),
m_2dscreen(*this, "2dscreen"),
m_screen(*this, "screen"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette") { }
@ -65,7 +65,7 @@ public:
void tile_mark_dirty(int offset);
required_device<namco_c45_road_device> m_c45_road;
required_device<screen_device> m_2dscreen;
required_device<screen_device> m_screen;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
@ -76,9 +76,7 @@ public:
virtual void machine_reset() override;
virtual void video_start() override;
DECLARE_PALETTE_INIT(tceptor);
uint32_t screen_update_tceptor_2d(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_tceptor_3d_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_tceptor_3d_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_tceptor(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_WRITE_LINE_MEMBER(screen_vblank_tceptor);
INTERRUPT_GEN_MEMBER(m6809_vb_interrupt);
INTERRUPT_GEN_MEMBER(m68k_vb_interrupt);

View File

@ -1,21 +0,0 @@
<?xml version="1.0"?>
<mamelayout version="2">
<view name="3D Glasses Side-by-Side">
<screen index="1">
<bounds x="0" y="0" width="4" height="3" />
</screen>
<screen index="2">
<bounds x="4.03" y="0" width="4" height="3" />
</screen>
</view>
<view name="3D Glasses Left">
<screen index="1">
<bounds x="0" y="0" width="4" height="3" />
</screen>
</view>
<view name="3D Glasses Right">
<screen index="2">
<bounds x="0" y="0" width="4" height="3" />
</screen>
</view>
</mamelayout>

View File

@ -375,7 +375,7 @@ void tceptor_state::video_start()
decode_sprite32("gfx4");
/* allocate temp bitmaps */
m_2dscreen->register_screen_bitmap(m_temp_bitmap);
m_screen->register_screen_bitmap(m_temp_bitmap);
m_c45_road->set_transparent_color(m_palette->pen_indirect(0xfff));
@ -498,7 +498,7 @@ void tceptor_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect
}
uint32_t tceptor_state::screen_update_tceptor_2d(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
uint32_t tceptor_state::screen_update_tceptor(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
rectangle rect;
int pri;
@ -529,20 +529,6 @@ uint32_t tceptor_state::screen_update_tceptor_2d(screen_device &screen, bitmap_i
return 0;
}
uint32_t tceptor_state::screen_update_tceptor_3d_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
if ((screen.frame_number() & 1) == 1)
return UPDATE_HAS_NOT_CHANGED;
return screen_update_tceptor_2d(screen, bitmap, cliprect);
}
uint32_t tceptor_state::screen_update_tceptor_3d_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
if ((screen.frame_number() & 1) == 0)
return UPDATE_HAS_NOT_CHANGED;
return screen_update_tceptor_2d(screen, bitmap, cliprect);
}
WRITE_LINE_MEMBER(tceptor_state::screen_vblank_tceptor)
{