diff options
-rw-r--r-- | src/mess/video/apollo.c | 40 |
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); + } } |