summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author hap <happppp@users.noreply.github.com>2021-05-18 00:26:16 +0200
committer hap <happppp@users.noreply.github.com>2021-05-18 00:26:16 +0200
commitfde37c3d4c2a69c68bac03269f73743a9125039c (patch)
treeb5f2e8a24a4f380aac1c3685a63d3dfbbbc12a75
parentc5ae39b4146c1b88d738b48f2ae35cf7a0c9ddbc (diff)
coco3: remove the dual screens, machine config option instead
-rw-r--r--src/mame/drivers/coco3.cpp34
-rw-r--r--src/mame/drivers/hh_tms1k.cpp1
-rw-r--r--src/mame/includes/coco3.h10
-rw-r--r--src/mame/layout/coco3.lay20
-rw-r--r--src/mame/machine/coco3.cpp17
5 files changed, 21 insertions, 61 deletions
diff --git a/src/mame/drivers/coco3.cpp b/src/mame/drivers/coco3.cpp
index b62d2525fa3..145916a9478 100644
--- a/src/mame/drivers/coco3.cpp
+++ b/src/mame/drivers/coco3.cpp
@@ -18,7 +18,6 @@
#include "cpu/m6809/hd6309.h"
#include "formats/coco_cas.h"
#include "softlist.h"
-#include "coco3.lh"
@@ -147,6 +146,11 @@ static INPUT_PORTS_START( coco3_keyboard )
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, 0) PORT_CODE(KEYCODE_F1) PORT_CHAR(UCHAR_MAMEKEY(F1))
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, 0) PORT_CODE(KEYCODE_F2) PORT_CHAR(UCHAR_MAMEKEY(F2))
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, coco3_state, coco_state::keyboard_changed, 0) PORT_NAME("SHIFT") PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
+
+ PORT_START("screen_config")
+ PORT_CONFNAME( 0x01, 0x00, "Monitor Type" )
+ PORT_CONFSETTING( 0x00, "Composite" )
+ PORT_CONFSETTING( 0x01, "RGB" )
INPUT_PORTS_END
@@ -306,31 +310,21 @@ void coco3_state::coco3(machine_config &config)
COCO_VHD(config, m_vhd_1, 0, m_maincpu);
// video hardware
- config.set_default_layout(layout_coco3);
-
GIME_NTSC(config, m_gime, XTAL(28'636'363), MAINCPU_TAG, RAM_TAG, CARTRIDGE_TAG, MAINCPU_TAG);
- m_gime->set_screen(COMPOSITE_SCREEN_TAG);
+ m_gime->set_screen("screen");
m_gime->hsync_wr_callback().set(PIA0_TAG, FUNC(pia6821_device::ca1_w));
m_gime->fsync_wr_callback().set(PIA0_TAG, FUNC(pia6821_device::cb1_w));
m_gime->irq_wr_callback().set(m_irqs, FUNC(input_merger_device::in_w<2>));
m_gime->firq_wr_callback().set(m_firqs, FUNC(input_merger_device::in_w<2>));
m_gime->floating_bus_rd_callback().set(FUNC(coco3_state::floating_bus_r));
- // composite monitor
- screen_device &composite_screen(SCREEN(config, COMPOSITE_SCREEN_TAG, SCREEN_TYPE_RASTER));
- composite_screen.set_refresh_hz(60);
- composite_screen.set_screen_update(FUNC(coco3_state::screen_update));
- composite_screen.set_size(640, 243);
- composite_screen.set_visarea(0, 640-1, 1, 241-1);
- composite_screen.set_vblank_time(0);
-
- // RGB monitor
- screen_device &rgb_screen(SCREEN(config, RGB_SCREEN_TAG, SCREEN_TYPE_RASTER));
- rgb_screen.set_refresh_hz(60);
- rgb_screen.set_screen_update(FUNC(coco3_state::screen_update));
- rgb_screen.set_size(640, 243);
- rgb_screen.set_visarea(0, 640-1, 1, 241-1);
- rgb_screen.set_vblank_time(0);
+ // monitor
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_refresh_hz(60);
+ screen.set_screen_update(FUNC(coco3_state::screen_update));
+ screen.set_size(640, 243);
+ screen.set_visarea(0, 640-1, 1, 241-1);
+ screen.set_vblank_time(0);
// internal ram
RAM(config, RAM_TAG).set_default_size("512K").set_extra_options("128K,2M,8M");
@@ -351,7 +345,7 @@ void coco3_state::coco3p(machine_config &config)
// An additional 4.433618 MHz XTAL is required for PAL color encoding
GIME_PAL(config.replace(), m_gime, XTAL(28'475'000), MAINCPU_TAG, RAM_TAG, CARTRIDGE_TAG, MAINCPU_TAG);
- m_gime->set_screen(COMPOSITE_SCREEN_TAG);
+ m_gime->set_screen("screen");
m_gime->hsync_wr_callback().set(PIA0_TAG, FUNC(pia6821_device::ca1_w));
m_gime->fsync_wr_callback().set(PIA0_TAG, FUNC(pia6821_device::cb1_w));
m_gime->irq_wr_callback().set(m_irqs, FUNC(input_merger_device::in_w<2>));
diff --git a/src/mame/drivers/hh_tms1k.cpp b/src/mame/drivers/hh_tms1k.cpp
index f1b8b5be8ba..dea3fc8e9a3 100644
--- a/src/mame/drivers/hh_tms1k.cpp
+++ b/src/mame/drivers/hh_tms1k.cpp
@@ -30,6 +30,7 @@ on Joerg Woerner's datamath.org: http://www.datamath.org/IC_List.htm
@MP0166 TMS1000 1980, A-One Arrange Ball/LJN Computer Impulse/Tandy Zingo (model 60-2123)
@MP0168 TMS1000 1979, Conic Multisport/Tandy Sports Arena (model 60-2158)
@MP0170 TMS1000 1979, Conic Football
+ *MP0220 TMS1000 1980, Tomy Teacher
*MP0230 TMS1000 1980, Entex Blast It (6015)
@MP0271 TMS1000 1982, Radio Shack Monkey See
@MP0907 TMS1000 1979, Conic Basketball (101-006)
diff --git a/src/mame/includes/coco3.h b/src/mame/includes/coco3.h
index 8ef5786f105..8522e2c966c 100644
--- a/src/mame/includes/coco3.h
+++ b/src/mame/includes/coco3.h
@@ -4,7 +4,7 @@
coco3.h
- TRS-80 Radio Shack Color Computer 1/2 Family
+ TRS-80 Radio Shack Color Computer 3 Family
***************************************************************************/
@@ -23,9 +23,6 @@
#define GIME_TAG "gime"
#define VDG_TAG "vdg"
-#define COMPOSITE_SCREEN_TAG "composite"
-#define RGB_SCREEN_TAG "rgb"
-
//**************************************************************************
@@ -37,7 +34,8 @@ class coco3_state : public coco_state
public:
coco3_state(const machine_config &mconfig, device_type type, const char *tag)
: coco_state(mconfig, type, tag)
- , m_gime(*this, GIME_TAG) { }
+ , m_gime(*this, GIME_TAG)
+ , m_screen_config(*this, "screen_config") { }
virtual void ff20_write(offs_t offset, uint8_t data) override;
virtual uint8_t ff40_read(offs_t offset) override;
@@ -50,6 +48,7 @@ public:
void coco3dw1(machine_config &config);
void coco3(machine_config &config);
void coco3_mem(address_map &map);
+
protected:
virtual void update_cart_base(uint8_t *cart_base) override;
@@ -59,6 +58,7 @@ protected:
private:
required_device<gime_device> m_gime;
+ required_ioport m_screen_config;
};
#endif // MAME_INCLUDES_COCO3_H
diff --git a/src/mame/layout/coco3.lay b/src/mame/layout/coco3.lay
deleted file mode 100644
index 561248b7dc1..00000000000
--- a/src/mame/layout/coco3.lay
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0"?>
-<!--
-license:CC0
--->
-<mamelayout version="2">
- <view name="Composite">
- <!-- workaround for MAME selecting a 2-screen view by default -->
- <screen index="1"><bounds left="0" top="0" right="4" bottom="3" /><color alpha="0" /></screen>
-
- <screen index="0">
- <bounds left="0" top="0" right="4" bottom="3" />
- </screen>
- </view>
-
- <view name="RGB">
- <screen index="1">
- <bounds left="0" top="0" right="4" bottom="3" />
- </screen>
- </view>
-</mamelayout>
diff --git a/src/mame/machine/coco3.cpp b/src/mame/machine/coco3.cpp
index b49d79ef2b0..60595c3425d 100644
--- a/src/mame/machine/coco3.cpp
+++ b/src/mame/machine/coco3.cpp
@@ -127,20 +127,5 @@ void coco3_state::update_cart_base(uint8_t *cart_base)
uint32_t coco3_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- bool result;
- if (!strcmp(screen.tag(), ":" COMPOSITE_SCREEN_TAG))
- {
- /* composite screen */
- result = m_gime->update_composite(bitmap, cliprect);
- }
- else if (!strcmp(screen.tag(), ":" RGB_SCREEN_TAG))
- {
- /* rgb screen */
- result = m_gime->update_rgb(bitmap, cliprect);
- }
- else
- {
- fatalerror("Called screen_update() with invalid tag '%s'\n", screen.tag());
- }
- return result;
+ return (m_screen_config->read() & 1) ? m_gime->update_rgb(bitmap, cliprect) : m_gime->update_composite(bitmap, cliprect);
}