summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--src/mess/video/apollo.c40
1 files changed, 28 insertions, 12 deletions
diff --git a/src/mess/video/apollo.c b/src/mess/video/apollo.c
index 8325e6813ad..5ea02df4865 100644
--- a/src/mess/video/apollo.c
+++ b/src/mess/video/apollo.c
@@ -113,19 +113,23 @@ public:
void device_reset();
void device_reset_mono19i();
- // monochrome
+ // monochrome control
READ8_DEVICE_HANDLER( apollo_mcr_r );
WRITE8_DEVICE_HANDLER( apollo_mcr_w );
- READ16_DEVICE_HANDLER( apollo_mgm_r );
- WRITE16_DEVICE_HANDLER( apollo_mgm_w );
- // color
+ // monochrome and color memory
+ READ16_DEVICE_HANDLER( apollo_mem_r );
+ WRITE16_DEVICE_HANDLER( apollo_mem_w );
+
+ // color control
READ8_DEVICE_HANDLER( apollo_ccr_r );
WRITE8_DEVICE_HANDLER( apollo_ccr_w );
UINT32 screen_update(bitmap_rgb32 &bitmap, const rectangle &cliprect);
void vblank_state_changed(device_t *device, screen_device &screen, bool vblank_state);
+ int is_mono() { return m_n_planes == 1; }
+
private:
class lut_fifo;
class bt458;
@@ -1368,7 +1372,7 @@ void apollo_graphics::blt(UINT32 dest_addr, UINT16 mem_mask)
Color graphics memory space at A0000 - BFFFF
***************************************************************************/
-READ16_DEVICE_HANDLER( apollo_graphics::apollo_mgm_r )
+READ16_DEVICE_HANDLER( apollo_graphics::apollo_mem_r )
{
UINT16 data;
UINT32 src_addr;
@@ -1407,7 +1411,7 @@ READ16_DEVICE_HANDLER( apollo_graphics::apollo_mgm_r )
return data;
}
-WRITE16_DEVICE_HANDLER( apollo_graphics::apollo_mgm_w )
+WRITE16_DEVICE_HANDLER( apollo_graphics::apollo_mem_w )
{
UINT32 dest_addr;
UINT32 src_addr;
@@ -1892,9 +1896,10 @@ WRITE8_DEVICE_HANDLER( apollo_graphics::apollo_ccr_w )
READ16_DEVICE_HANDLER( apollo_cgm_r )
{
- if (!apollo_config(APOLLO_CONF_MONO_15I))
+ apollo_graphics *apollo_graphics = get_safe_token(device);
+ if (!apollo_graphics->is_mono())
{
- return apollo_mgm_r(device, space, offset, mem_mask);
+ return apollo_graphics->apollo_mem_r(device, space, offset, mem_mask);
}
else
{
@@ -1904,9 +1909,10 @@ READ16_DEVICE_HANDLER( apollo_cgm_r )
WRITE16_DEVICE_HANDLER( apollo_cgm_w )
{
- if (!apollo_config(APOLLO_CONF_MONO_15I))
+ apollo_graphics *apollo_graphics = get_safe_token(device);
+ if (!apollo_graphics->is_mono())
{
- apollo_mgm_w(device, space, offset, data, mem_mask);
+ apollo_graphics->apollo_mem_w(device, space, offset, data, mem_mask);
}
}
@@ -2261,11 +2267,21 @@ WRITE8_DEVICE_HANDLER( apollo_mcr_w )
READ16_DEVICE_HANDLER( apollo_mgm_r )
{
apollo_graphics *apollo_graphics = get_safe_token(device);
- return apollo_graphics->apollo_mgm_r(device, space, offset, mem_mask);
+ if (apollo_graphics->is_mono())
+ {
+ return apollo_graphics->apollo_mem_r(device, space, offset, mem_mask);
+ }
+ else
+ {
+ return 0xffff;
+ }
}
WRITE16_DEVICE_HANDLER( apollo_mgm_w )
{
apollo_graphics *apollo_graphics = get_safe_token(device);
- apollo_graphics->apollo_mgm_w(device, space, offset, data, mem_mask);
+ if (apollo_graphics->is_mono())
+ {
+ apollo_graphics->apollo_mem_w(device, space, offset, data, mem_mask);
+ }
}