Previous 199869 Revisions Next

r24023 Sunday 30th June, 2013 at 17:12:29 UTC by R. Belmont
(MESS) Apollo: fix out-of-bounds framebuffer access crash on OS X [Hans Ostermeyer]
[src/mess/video]apollo.c

trunk/src/mess/video/apollo.c
r24022r24023
113113   void device_reset();
114114   void device_reset_mono19i();
115115
116   // monochrome
116   // monochrome control
117117   READ8_DEVICE_HANDLER( apollo_mcr_r );
118118   WRITE8_DEVICE_HANDLER( apollo_mcr_w );
119   READ16_DEVICE_HANDLER( apollo_mgm_r );
120   WRITE16_DEVICE_HANDLER( apollo_mgm_w );
121119
122   // color
120   // monochrome and color memory
121   READ16_DEVICE_HANDLER( apollo_mem_r );
122   WRITE16_DEVICE_HANDLER( apollo_mem_w );
123
124   // color control
123125   READ8_DEVICE_HANDLER( apollo_ccr_r );
124126   WRITE8_DEVICE_HANDLER( apollo_ccr_w );
125127
126128   UINT32 screen_update(bitmap_rgb32 &bitmap, const rectangle &cliprect);
127129   void vblank_state_changed(device_t *device, screen_device &screen, bool vblank_state);
128130
131   int is_mono() { return m_n_planes == 1; }
132
129133private:
130134   class lut_fifo;
131135   class bt458;
r24022r24023
13681372 Color graphics memory space at A0000 - BFFFF
13691373 ***************************************************************************/
13701374
1371READ16_DEVICE_HANDLER( apollo_graphics::apollo_mgm_r )
1375READ16_DEVICE_HANDLER( apollo_graphics::apollo_mem_r )
13721376{
13731377   UINT16 data;
13741378   UINT32 src_addr;
r24022r24023
14071411   return data;
14081412}
14091413
1410WRITE16_DEVICE_HANDLER( apollo_graphics::apollo_mgm_w )
1414WRITE16_DEVICE_HANDLER( apollo_graphics::apollo_mem_w )
14111415{
14121416   UINT32 dest_addr;
14131417   UINT32 src_addr;
r24022r24023
18921896
18931897READ16_DEVICE_HANDLER( apollo_cgm_r )
18941898{
1895   if (!apollo_config(APOLLO_CONF_MONO_15I))
1899   apollo_graphics *apollo_graphics = get_safe_token(device);
1900   if (!apollo_graphics->is_mono())
18961901   {
1897      return apollo_mgm_r(device, space, offset, mem_mask);
1902      return apollo_graphics->apollo_mem_r(device, space, offset, mem_mask);
18981903   }
18991904   else
19001905   {
r24022r24023
19041909
19051910WRITE16_DEVICE_HANDLER( apollo_cgm_w )
19061911{
1907   if (!apollo_config(APOLLO_CONF_MONO_15I))
1912   apollo_graphics *apollo_graphics = get_safe_token(device);
1913   if (!apollo_graphics->is_mono())
19081914   {
1909      apollo_mgm_w(device, space, offset, data, mem_mask);
1915      apollo_graphics->apollo_mem_w(device, space, offset, data, mem_mask);
19101916   }
19111917}
19121918
r24022r24023
22612267READ16_DEVICE_HANDLER( apollo_mgm_r )
22622268{
22632269   apollo_graphics *apollo_graphics = get_safe_token(device);
2264   return apollo_graphics->apollo_mgm_r(device, space, offset, mem_mask);
2270   if (apollo_graphics->is_mono())
2271   {
2272      return apollo_graphics->apollo_mem_r(device, space, offset, mem_mask);
2273   }
2274   else
2275   {
2276      return 0xffff;
2277   }
22652278}
22662279
22672280WRITE16_DEVICE_HANDLER( apollo_mgm_w )
22682281{
22692282   apollo_graphics *apollo_graphics = get_safe_token(device);
2270   apollo_graphics->apollo_mgm_w(device, space, offset, data, mem_mask);
2283   if (apollo_graphics->is_mono())
2284   {
2285      apollo_graphics->apollo_mem_w(device, space, offset, data, mem_mask);
2286   }
22712287}

Previous 199869 Revisions Next


© 1997-2024 The MAME Team