From 8282f3041d44b15c1802c70609b5b68ac182617b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Banaan=20Ananas?= Date: Fri, 3 Jan 2014 22:59:20 +0000 Subject: [PATCH] Added video raw params. Also tried to hook up crtc but got screen offset glitches. --- src/mame/drivers/docastle.c | 25 ++++++++++--------------- src/mame/includes/docastle.h | 25 ++++++++++++++++--------- src/mame/video/docastle.c | 14 ++++++-------- 3 files changed, 32 insertions(+), 32 deletions(-) diff --git a/src/mame/drivers/docastle.c b/src/mame/drivers/docastle.c index 844c854f5a7..b630cf53602 100644 --- a/src/mame/drivers/docastle.c +++ b/src/mame/drivers/docastle.c @@ -37,7 +37,7 @@ c002 DSWA c003 IN0 bit 4-7 = joystick player 2 bit 0-3 = joystick player 1 -c004 flipscreen (proper cocktail mode implemented by Chad Hendrickson Aug 1, 1999) +c004 flipscreen c005 IN1 bit 7 = START 2 bit 6 = unused @@ -89,7 +89,7 @@ read: e000-e008 data from first CPU c003 bit 0-3 = joystick bit 4-7 = ? -c004 flipscreen (proper cocktail mode implemented by Chad Hendrickson Aug 1, 1999) +c004 flipscreen c005 bit 0 = fire bit 1 = fire (again?!) bit 2 = ? @@ -240,8 +240,8 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( docastle_io_map, AS_IO, 8, docastle_state ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_NOP // goes to CRT 46505S - AM_RANGE(0x02, 0x02) AM_NOP // goes to CRT 46505S + AM_RANGE(0x00, 0x00) AM_WRITENOP //AM_DEVWRITE("crtc", mc6845_device, address_w) + AM_RANGE(0x02, 0x02) AM_WRITENOP //AM_DEVWRITE("crtc", mc6845_device, register_w) ADDRESS_MAP_END @@ -596,29 +596,26 @@ static MACHINE_CONFIG_START( docastle, docastle_state ) MCFG_CPU_ADD("maincpu", Z80, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(docastle_map) MCFG_CPU_IO_MAP(docastle_io_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", docastle_state, irq0_line_hold) + MCFG_CPU_VBLANK_INT_DRIVER("screen", docastle_state, irq0_line_hold) MCFG_CPU_ADD("slave", Z80, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(docastle_map2) - MCFG_CPU_PERIODIC_INT_DRIVER(docastle_state, irq0_line_hold, 8*60) + MCFG_CPU_PERIODIC_INT_DRIVER(docastle_state, irq0_line_hold, 8*60) // ? MCFG_CPU_ADD("cpu3", Z80, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(docastle_map3) - MCFG_CPU_VBLANK_INT_DRIVER("screen", docastle_state, nmi_line_pulse) + MCFG_CPU_VBLANK_INT_DRIVER("screen", docastle_state, nmi_line_pulse) /* video hardware */ + //MCFG_MC6845_ADD("crtc", H46505, "screen", XTAL_9_828MHz / 16, mc6845_intf) + MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(59.60) // measured on pcb, real refresh rate should be derived from XTAL_9_828MHz, how? - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 4*8, 28*8-1) + MCFG_SCREEN_RAW_PARAMS(XTAL_9_828MHz/2, 0x138, 0+8, 0x110-24, 0x108, 0+32, 0xe0) // from crtc MCFG_SCREEN_UPDATE_DRIVER(docastle_state, screen_update_docastle) MCFG_GFXDECODE(docastle) MCFG_PALETTE_LENGTH(512) - - /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -642,7 +639,6 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( dorunrun, docastle ) /* basic machine hardware */ - MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(dorunrun_map) @@ -656,7 +652,6 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( idsoccer, docastle ) /* basic machine hardware */ - MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(idsoccer_map) diff --git a/src/mame/includes/docastle.h b/src/mame/includes/docastle.h index e69b129d654..6a425c4fa8b 100644 --- a/src/mame/includes/docastle.h +++ b/src/mame/includes/docastle.h @@ -1,3 +1,9 @@ +/*************************************************************************** + + Mr. Do's Castle hardware + +***************************************************************************/ + #include "sound/msm5205.h" class docastle_state : public driver_device @@ -5,12 +11,18 @@ class docastle_state : public driver_device public: docastle_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_videoram(*this, "videoram"), - m_colorram(*this, "colorram"), - m_spriteram(*this, "spriteram"), m_maincpu(*this, "maincpu"), m_slave(*this, "slave"), - m_msm(*this, "msm"){ } + m_msm(*this, "msm"), + m_videoram(*this, "videoram"), + m_colorram(*this, "colorram"), + m_spriteram(*this, "spriteram") + { } + + /* devices */ + required_device m_maincpu; + required_device m_slave; + optional_device m_msm; /* memory pointers */ required_shared_ptr m_videoram; @@ -28,11 +40,6 @@ public: UINT8 m_buffer0[9]; UINT8 m_buffer1[9]; - /* devices */ - required_device m_maincpu; - required_device m_slave; - optional_device m_msm; - DECLARE_READ8_MEMBER(docastle_shared0_r); DECLARE_READ8_MEMBER(docastle_shared1_r); DECLARE_WRITE8_MEMBER(docastle_shared0_w); diff --git a/src/mame/video/docastle.c b/src/mame/video/docastle.c index 628d9fbe8fd..92e3fc7b0c3 100644 --- a/src/mame/video/docastle.c +++ b/src/mame/video/docastle.c @@ -1,11 +1,9 @@ /*************************************************************************** - video.c + Mr. Do's Castle hardware Functions to emulate the video hardware of the machine. - (Cocktail mode implemented by Chad Hendrickson Aug 1, 1999) - ***************************************************************************/ #include "emu.h" @@ -111,7 +109,7 @@ TILE_GET_INFO_MEMBER(docastle_state::get_tile_info) void docastle_state::video_start_common( UINT32 tile_transmask ) { - m_do_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(docastle_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_do_tilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(docastle_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_do_tilemap->set_transmask(0, tile_transmask, 0x0000); } @@ -152,7 +150,7 @@ void docastle_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, p = palette t = tile number - */ + */ code = m_spriteram[offs + 3]; color = m_spriteram[offs + 2] & 0x0f; @@ -178,7 +176,7 @@ void docastle_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, p = palette t = tile number - */ + */ code = m_spriteram[offs + 3]; color = m_spriteram[offs + 2] & 0x1f; @@ -190,8 +188,8 @@ void docastle_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, if (flip_screen()) { - sx = 240 - sx; - sy = 240 - sy; + sx = 296 - sx; + sy = 248 - sy; flipx = !flipx; flipy = !flipy; }