From 71e4a6e7148dddc1d4c0b9548f49e2cf0511a7fb Mon Sep 17 00:00:00 2001 From: Curt Coder Date: Fri, 1 Jan 2016 23:14:46 +0200 Subject: [PATCH] pet/cbm2: HSG/HRG WIP. (nw) --- src/devices/bus/cbm2/hrg.cpp | 47 +++++++++++++++++++++--------------- src/devices/bus/cbm2/hrg.h | 3 ++- src/devices/bus/pet/hsg.cpp | 41 +++++++++++++++---------------- src/devices/bus/pet/hsg.h | 5 ++-- 4 files changed, 51 insertions(+), 45 deletions(-) diff --git a/src/devices/bus/cbm2/hrg.cpp b/src/devices/bus/cbm2/hrg.cpp index cb489ec359f..512c50be0c0 100644 --- a/src/devices/bus/cbm2/hrg.cpp +++ b/src/devices/bus/cbm2/hrg.cpp @@ -26,7 +26,7 @@ //************************************************************************** #define EF9365_TAG "ef9365" -#define EF9366_TAG "ef9366" +#define EF9366_TAG EF9365_TAG #define SCREEN_TAG "screen" @@ -64,14 +64,17 @@ const rom_entry *cbm2_graphic_cartridge_device::device_rom_region() const //------------------------------------------------- static MACHINE_CONFIG_FRAGMENT( cbm2_hrg_a ) -/* MCFG_SCREEN_ADD(SCREEN_TAG, RASTER) - MCFG_SCREEN_UPDATE_DEVICE(EF9365_TAG, ef9365_device, screen_update) - MCFG_SCREEN_SIZE(512, 512) - MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 512-1) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) - MCFG_SCREEN_REFRESH_RATE(50) + MCFG_SCREEN_ADD(SCREEN_TAG, RASTER) + MCFG_SCREEN_UPDATE_DEVICE(EF9365_TAG, ef9365_device, screen_update) + MCFG_SCREEN_SIZE(512, 512) + MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 512-1) + MCFG_SCREEN_REFRESH_RATE(25) - MCFG_EF9365_ADD(EF9365_TAG, gdp_intf)*/ + MCFG_DEVICE_ADD(EF9365_TAG, EF9365, 1750000) + MCFG_VIDEO_SET_SCREEN(SCREEN_TAG) + MCFG_EF936X_PALETTE("palette") + MCFG_EF936X_BITPLANES_CNT(1); + MCFG_EF936X_DISPLAYMODE(EF936X_512x512_DISPLAY_MODE); MACHINE_CONFIG_END @@ -80,14 +83,17 @@ MACHINE_CONFIG_END //------------------------------------------------- static MACHINE_CONFIG_FRAGMENT( cbm2_hrg_b ) -/* MCFG_SCREEN_ADD(SCREEN_TAG, RASTER) - MCFG_SCREEN_UPDATE_DEVICE(EF9366_TAG, ef9366_device, screen_update) - MCFG_SCREEN_SIZE(512, 256) - MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) - MCFG_SCREEN_REFRESH_RATE(50) + MCFG_SCREEN_ADD(SCREEN_TAG, RASTER) + MCFG_SCREEN_UPDATE_DEVICE(EF9366_TAG, ef9365_device, screen_update) + MCFG_SCREEN_SIZE(512, 256) + MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1) + MCFG_SCREEN_REFRESH_RATE(50) - MCFG_EF9366_ADD(EF9366_TAG, gdp_intf)*/ + MCFG_DEVICE_ADD(EF9366_TAG, EF9365, 1750000) + MCFG_VIDEO_SET_SCREEN(SCREEN_TAG) + MCFG_EF936X_PALETTE("palette") + MCFG_EF936X_BITPLANES_CNT(1); + MCFG_EF936X_DISPLAYMODE(EF936X_512x256_DISPLAY_MODE); MACHINE_CONFIG_END @@ -119,19 +125,18 @@ machine_config_constructor cbm2_graphic_cartridge_b_device::device_mconfig_addit cbm2_graphic_cartridge_device::cbm2_graphic_cartridge_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source) : device_t(mconfig, type, name, tag, owner, clock, shortname, source), device_cbm2_expansion_card_interface(mconfig, *this), + m_gdc(*this, EF9366_TAG), m_bank3(*this, "bank3") { } cbm2_graphic_cartridge_a_device::cbm2_graphic_cartridge_a_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : cbm2_graphic_cartridge_device(mconfig, CBM2_HRG_A, "CBM 500/600/700 High Resolution Graphics (A)", tag, owner, clock, "cbm2_hrga", __FILE__) - //m_gdc(*this, EF9365_TAG) { } cbm2_graphic_cartridge_b_device::cbm2_graphic_cartridge_b_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : cbm2_graphic_cartridge_device(mconfig, CBM2_HRG_B, "CBM 500/600/700 High Resolution Graphics (B)", tag, owner, clock, "cbm2_hrgb", __FILE__) - //m_gdc(*this, EF9366_TAG) { } @@ -142,6 +147,8 @@ cbm2_graphic_cartridge_b_device::cbm2_graphic_cartridge_b_device(const machine_c void cbm2_graphic_cartridge_device::device_start() { + m_gdc->set_color_entry(0, 0, 0, 0); + m_gdc->set_color_entry(1, 0, 0xff, 00); } @@ -151,7 +158,7 @@ void cbm2_graphic_cartridge_device::device_start() void cbm2_graphic_cartridge_device::device_reset() { - //m_gdc->reset(); + m_gdc->reset(); } @@ -190,7 +197,7 @@ UINT8 cbm2_graphic_cartridge_device::cbm2_bd_r(address_space &space, offs_t offs } else if (offset >= 0x7ff0) { - //data = m_gdc->data_r(space, offset & 0x07); + data = m_gdc->data_r(space, offset & 0x07); } } @@ -225,7 +232,7 @@ void cbm2_graphic_cartridge_device::cbm2_bd_w(address_space &space, offs_t offse } else if (offset >= 0x7ff0) { - //m_gdc->data_w(space, offset & 0x07, data); + m_gdc->data_w(space, offset & 0x07, data); } } } diff --git a/src/devices/bus/cbm2/hrg.h b/src/devices/bus/cbm2/hrg.h index 61773cbc559..fc759049cf6 100644 --- a/src/devices/bus/cbm2/hrg.h +++ b/src/devices/bus/cbm2/hrg.h @@ -13,6 +13,7 @@ #include "emu.h" #include "exp.h" +#include "video/ef9365.h" @@ -42,7 +43,7 @@ protected: virtual void cbm2_bd_w(address_space &space, offs_t offset, UINT8 data, int csbank1, int csbank2, int csbank3) override; private: - //required_device m_gdc; + required_device m_gdc; required_memory_region m_bank3; }; diff --git a/src/devices/bus/pet/hsg.cpp b/src/devices/bus/pet/hsg.cpp index 5f2d7d1df9d..117100bafe7 100644 --- a/src/devices/bus/pet/hsg.cpp +++ b/src/devices/bus/pet/hsg.cpp @@ -26,7 +26,7 @@ //************************************************************************** #define EF9365_TAG "ef9365" -#define EF9366_TAG "ef9366" +#define EF9366_TAG EF9365_TAG #define SCREEN_TAG "screen" @@ -62,29 +62,22 @@ const rom_entry *cbm8000_hsg_t::device_rom_region() const } -//------------------------------------------------- -// screen_update - -//------------------------------------------------- - -UINT32 cbm8000_hsg_t::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) -{ - return 0; -} - - //------------------------------------------------- // MACHINE_CONFIG_FRAGMENT( cbm8000_hsg_a ) //------------------------------------------------- static MACHINE_CONFIG_FRAGMENT( cbm8000_hsg_a ) MCFG_SCREEN_ADD(SCREEN_TAG, RASTER) - MCFG_SCREEN_UPDATE_DEVICE(DEVICE_SELF, cbm8000_hsg_t, screen_update) + MCFG_SCREEN_UPDATE_DEVICE(EF9365_TAG, ef9365_device, screen_update) MCFG_SCREEN_SIZE(512, 512) MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 512-1) MCFG_SCREEN_REFRESH_RATE(25) - MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette") - //MCFG_DEVICE_ADD(EF9365_TAG, EF9365, 0) + MCFG_DEVICE_ADD(EF9365_TAG, EF9365, 1750000) + MCFG_VIDEO_SET_SCREEN(SCREEN_TAG) + MCFG_EF936X_PALETTE("palette") + MCFG_EF936X_BITPLANES_CNT(1); + MCFG_EF936X_DISPLAYMODE(EF936X_512x512_DISPLAY_MODE); MACHINE_CONFIG_END @@ -94,13 +87,16 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_FRAGMENT( cbm8000_hsg_b ) MCFG_SCREEN_ADD(SCREEN_TAG, RASTER) - MCFG_SCREEN_UPDATE_DEVICE(DEVICE_SELF, cbm8000_hsg_t, screen_update) + MCFG_SCREEN_UPDATE_DEVICE(EF9366_TAG, ef9365_device, screen_update) MCFG_SCREEN_SIZE(512, 256) MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1) MCFG_SCREEN_REFRESH_RATE(50) - MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette") - //MCFG_DEVICE_ADD(EF9366_TAG, EF9366, 0) + MCFG_DEVICE_ADD(EF9366_TAG, EF9365, 1750000) + MCFG_VIDEO_SET_SCREEN(SCREEN_TAG) + MCFG_EF936X_PALETTE("palette") + MCFG_EF936X_BITPLANES_CNT(1); + MCFG_EF936X_DISPLAYMODE(EF936X_512x256_DISPLAY_MODE); MACHINE_CONFIG_END @@ -132,6 +128,7 @@ machine_config_constructor cbm8000_hsg_b_t::device_mconfig_additions() const cbm8000_hsg_t::cbm8000_hsg_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source) : device_t(mconfig, type, name, tag, owner, clock, shortname, source), device_pet_expansion_card_interface(mconfig, *this), + m_gdc(*this, EF9365_TAG), m_9000(*this, "9000"), m_a000(*this, "a000") { @@ -139,13 +136,11 @@ cbm8000_hsg_t::cbm8000_hsg_t(const machine_config &mconfig, device_type type, co cbm8000_hsg_a_t::cbm8000_hsg_a_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : cbm8000_hsg_t(mconfig, CBM8000_HSG_A, "CBM 8000 High Speed Graphics (A)", tag, owner, clock, "cbm8000_hsg_a", __FILE__) - //m_gdc(*this, EF9365_TAG) { } cbm8000_hsg_b_t::cbm8000_hsg_b_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : cbm8000_hsg_t(mconfig, CBM8000_HSG_B, "CBM 8000 High Speed Graphics (B)", tag, owner, clock, "cbm8000_hsg_b", __FILE__) - //m_gdc(*this, EF9366_TAG) { } @@ -156,6 +151,8 @@ cbm8000_hsg_b_t::cbm8000_hsg_b_t(const machine_config &mconfig, const char *tag, void cbm8000_hsg_t::device_start() { + m_gdc->set_color_entry(0, 0, 0, 0); + m_gdc->set_color_entry(1, 0, 0xff, 00); } @@ -165,7 +162,7 @@ void cbm8000_hsg_t::device_start() void cbm8000_hsg_t::device_reset() { - //m_gdc->reset(); + m_gdc->reset(); } @@ -219,7 +216,7 @@ UINT8 cbm8000_hsg_t::pet_bd_r(address_space &space, offs_t offset, UINT8 data, i } else if (offset >= 0xaf70 && offset < 0xaf80) { - //data = m_gdc->data_r(space, offset & 0x0f); + data = m_gdc->data_r(space, offset & 0x0f); } break; } @@ -253,6 +250,6 @@ void cbm8000_hsg_t::pet_bd_w(address_space &space, offs_t offset, UINT8 data, in } else if (offset >= 0xaf70 && offset < 0xaf80) { - //m_gdc->data_w(space, offset & 0x0f, data); + m_gdc->data_w(space, offset & 0x0f, data); } } diff --git a/src/devices/bus/pet/hsg.h b/src/devices/bus/pet/hsg.h index 1562eadedd3..abe9067c498 100644 --- a/src/devices/bus/pet/hsg.h +++ b/src/devices/bus/pet/hsg.h @@ -13,6 +13,7 @@ #include "emu.h" #include "exp.h" +#include "video/ef9365.h" @@ -23,7 +24,7 @@ // ======================> cbm8000_hsg_t class cbm8000_hsg_t : public device_t, - public device_pet_expansion_card_interface + public device_pet_expansion_card_interface { public: // construction/destruction @@ -45,7 +46,7 @@ protected: virtual void device_reset() override; private: - //required_device m_gdc; + required_device m_gdc; required_memory_region m_9000; required_memory_region m_a000; };