Previous 199869 Revisions Next

r17991 Tuesday 18th September, 2012 at 11:00:03 UTC by Miodrag Milanović
Modernized nubus graphics cards screen updates (no whatsnew)
[src/mess/video]nubus_48gc.c nubus_48gc.h nubus_cb264.c nubus_cb264.h nubus_m2hires.c nubus_m2hires.h nubus_radiustpd.c nubus_radiustpd.h nubus_spec8.c nubus_spec8.h nubus_specpdq.c nubus_specpdq.h nubus_vikbw.c nubus_vikbw.h nubus_wsportrait.c nubus_wsportrait.h

trunk/src/mess/video/nubus_wsportrait.c
r17990r17991
1919
2020#define VRAM_SIZE   (0x80000)   // 512k max
2121
22static SCREEN_UPDATE_RGB32( wsportrait );
23
2422MACHINE_CONFIG_FRAGMENT( wsportrait )
2523   MCFG_SCREEN_ADD( WSPORTRAIT_SCREEN_NAME, RASTER)
26   MCFG_SCREEN_UPDATE_STATIC(wsportrait)
24   MCFG_SCREEN_UPDATE_DEVICE(DEVICE_SELF, nubus_wsportrait_device, screen_update)
2725   MCFG_SCREEN_SIZE(1024,960)
2826   MCFG_SCREEN_REFRESH_RATE(75.0)
2927   MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 870-1)
r17990r17991
140138
141139***************************************************************************/
142140
143static SCREEN_UPDATE_RGB32( wsportrait )
141UINT32 nubus_wsportrait_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
144142{
145143   UINT32 *scanline;
146144   int x, y;
147   nubus_wsportrait_device *card = downcast<nubus_wsportrait_device *>(screen.owner());
148145   UINT8 pixels, *vram;
149146
150147   // first time?  kick off the VBL timer
151   if (!card->m_screen)
148   if (!m_screen)
152149   {
153      card->m_screen = &screen;
154      card->m_timer->adjust(card->m_screen->time_until_pos(869, 0), 0);
150      m_screen = &screen;
151      m_timer->adjust(m_screen->time_until_pos(869, 0), 0);
155152   }
156153
157   vram = card->m_vram + 0x80;
154   vram = m_vram + 0x80;
158155
159   switch (card->m_mode)
156   switch (m_mode)
160157   {
161158      case 0: // 1 bpp?
162159         for (y = 0; y < 870; y++)
r17990r17991
166163            {
167164               pixels = vram[(y * 128) + (BYTE4_XOR_BE(x))];
168165
169               *scanline++ = card->m_palette[((pixels>>7)&0x1)];
170               *scanline++ = card->m_palette[((pixels>>6)&0x1)];
171               *scanline++ = card->m_palette[((pixels>>5)&0x1)];
172               *scanline++ = card->m_palette[((pixels>>4)&0x1)];
173               *scanline++ = card->m_palette[((pixels>>3)&0x1)];
174               *scanline++ = card->m_palette[((pixels>>2)&0x1)];
175               *scanline++ = card->m_palette[((pixels>>1)&0x1)];
176               *scanline++ = card->m_palette[(pixels&1)];
166               *scanline++ = m_palette[((pixels>>7)&0x1)];
167               *scanline++ = m_palette[((pixels>>6)&0x1)];
168               *scanline++ = m_palette[((pixels>>5)&0x1)];
169               *scanline++ = m_palette[((pixels>>4)&0x1)];
170               *scanline++ = m_palette[((pixels>>3)&0x1)];
171               *scanline++ = m_palette[((pixels>>2)&0x1)];
172               *scanline++ = m_palette[((pixels>>1)&0x1)];
173               *scanline++ = m_palette[(pixels&1)];
177174            }
178175         }
179176         break;
r17990r17991
186183            {
187184               pixels = vram[(y * 256) + (BYTE4_XOR_BE(x))];
188185
189               *scanline++ = card->m_palette[((pixels>>6)&3)];
190               *scanline++ = card->m_palette[((pixels>>4)&3)];
191               *scanline++ = card->m_palette[((pixels>>2)&3)];
192               *scanline++ = card->m_palette[(pixels&3)];
186               *scanline++ = m_palette[((pixels>>6)&3)];
187               *scanline++ = m_palette[((pixels>>4)&3)];
188               *scanline++ = m_palette[((pixels>>2)&3)];
189               *scanline++ = m_palette[(pixels&3)];
193190            }
194191         }
195192         break;
r17990r17991
203200            {
204201               pixels = vram[(y * 512) + (BYTE4_XOR_BE(x))];
205202
206               *scanline++ = card->m_palette[((pixels&0xf0)>>4)];
207               *scanline++ = card->m_palette[(pixels&0xf)];
203               *scanline++ = m_palette[((pixels&0xf0)>>4)];
204               *scanline++ = m_palette[(pixels&0xf)];
208205            }
209206         }
210207         break;
211208
212209      default:
213         fatalerror("wsportrait: unknown video mode %d\n", card->m_mode);
210         fatalerror("wsportrait: unknown video mode %d\n", m_mode);
214211         break;
215212   }
216213   return 0;
trunk/src/mess/video/nubus_cb264.c
r17990r17991
1919
2020#define VRAM_SIZE   (0x200000)   // 2 megs, maxed out
2121
22static SCREEN_UPDATE_RGB32( cb264 );
23
2422MACHINE_CONFIG_FRAGMENT( cb264 )
2523   MCFG_SCREEN_ADD( CB264_SCREEN_NAME, RASTER)
26   MCFG_SCREEN_UPDATE_STATIC(cb264)
24   MCFG_SCREEN_UPDATE_DEVICE(DEVICE_SELF, nubus_cb264_device, screen_update)
2725   MCFG_SCREEN_RAW_PARAMS(25175000, 800, 0, 640, 525, 0, 480)
2826   MCFG_SCREEN_SIZE(1024,768)
2927   MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
r17990r17991
127125
128126***************************************************************************/
129127
130static SCREEN_UPDATE_RGB32( cb264 )
128UINT32 nubus_cb264_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
131129{
132130   UINT32 *scanline, *base;
133131   int x, y;
134   nubus_cb264_device *card = downcast<nubus_cb264_device *>(screen.owner());
135132   UINT8 pixels;
136133
137   if (!card->m_cb264_vbl_disable)
134   if (!m_cb264_vbl_disable)
138135   {
139      card->raise_slot_irq();
136      raise_slot_irq();
140137   }
141138
142   switch (card->m_cb264_mode)
139   switch (m_cb264_mode)
143140   {
144141      case 0: // 1 bpp
145142         for (y = 0; y < 480; y++)
r17990r17991
147144            scanline = &bitmap.pix32(y);
148145            for (x = 0; x < 640/8; x++)
149146            {
150               pixels = card->m_vram[(y * 1024) + (BYTE4_XOR_BE(x))];
147               pixels = m_vram[(y * 1024) + (BYTE4_XOR_BE(x))];
151148
152               *scanline++ = card->m_palette[pixels&0x80];
153               *scanline++ = card->m_palette[(pixels<<1)&0x80];
154               *scanline++ = card->m_palette[(pixels<<2)&0x80];
155               *scanline++ = card->m_palette[(pixels<<3)&0x80];
156               *scanline++ = card->m_palette[(pixels<<4)&0x80];
157               *scanline++ = card->m_palette[(pixels<<5)&0x80];
158               *scanline++ = card->m_palette[(pixels<<6)&0x80];
159               *scanline++ = card->m_palette[(pixels<<7)&0x80];
149               *scanline++ = m_palette[pixels&0x80];
150               *scanline++ = m_palette[(pixels<<1)&0x80];
151               *scanline++ = m_palette[(pixels<<2)&0x80];
152               *scanline++ = m_palette[(pixels<<3)&0x80];
153               *scanline++ = m_palette[(pixels<<4)&0x80];
154               *scanline++ = m_palette[(pixels<<5)&0x80];
155               *scanline++ = m_palette[(pixels<<6)&0x80];
156               *scanline++ = m_palette[(pixels<<7)&0x80];
160157            }
161158         }
162159         break;
r17990r17991
167164            scanline = &bitmap.pix32(y);
168165            for (x = 0; x < 640/4; x++)
169166            {
170               pixels = card->m_vram[(y * 1024) + (BYTE4_XOR_BE(x))];
167               pixels = m_vram[(y * 1024) + (BYTE4_XOR_BE(x))];
171168
172               *scanline++ = card->m_palette[pixels&0xc0];
173               *scanline++ = card->m_palette[(pixels<<2)&0xc0];
174               *scanline++ = card->m_palette[(pixels<<4)&0xc0];
175               *scanline++ = card->m_palette[(pixels<<6)&0xc0];
169               *scanline++ = m_palette[pixels&0xc0];
170               *scanline++ = m_palette[(pixels<<2)&0xc0];
171               *scanline++ = m_palette[(pixels<<4)&0xc0];
172               *scanline++ = m_palette[(pixels<<6)&0xc0];
176173            }
177174         }
178175         break;
r17990r17991
184181
185182            for (x = 0; x < 640/2; x++)
186183            {
187               pixels = card->m_vram[(y * 1024) + (BYTE4_XOR_BE(x))];
184               pixels = m_vram[(y * 1024) + (BYTE4_XOR_BE(x))];
188185
189               *scanline++ = card->m_palette[pixels&0xf0];
190               *scanline++ = card->m_palette[(pixels<<4)&0xf0];
186               *scanline++ = m_palette[pixels&0xf0];
187               *scanline++ = m_palette[(pixels<<4)&0xf0];
191188            }
192189         }
193190         break;
r17990r17991
199196
200197            for (x = 0; x < 640; x++)
201198            {
202               pixels = card->m_vram[(y * 1024) + (BYTE4_XOR_BE(x))];
203               *scanline++ = card->m_palette[pixels];
199               pixels = m_vram[(y * 1024) + (BYTE4_XOR_BE(x))];
200               *scanline++ = m_palette[pixels];
204201            }
205202         }
206203         break;
r17990r17991
208205      case 4:   // 24 bpp
209206      case 7: // ???
210207         {
211            UINT32 *vram32 = (UINT32 *)card->m_vram;
208            UINT32 *vram32 = (UINT32 *)m_vram;
212209
213210            for (y = 0; y < 480; y++)
214211            {
r17990r17991
223220         break;
224221
225222      default:
226         fatalerror("cb264: unknown video mode %d\n", card->m_cb264_mode);
223         fatalerror("cb264: unknown video mode %d\n", m_cb264_mode);
227224         break;
228225   }
229226
trunk/src/mess/video/nubus_wsportrait.h
r17990r17991
2525      virtual machine_config_constructor device_mconfig_additions() const;
2626      virtual const rom_entry *device_rom_region() const;
2727
28      UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
2829protected:
2930        // device-level overrides
3031        virtual void device_start();
trunk/src/mess/video/nubus_cb264.h
r17990r17991
2525      virtual machine_config_constructor device_mconfig_additions() const;
2626      virtual const rom_entry *device_rom_region() const;
2727
28      UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
2829protected:
2930        // device-level overrides
3031        virtual void device_start();
trunk/src/mess/video/nubus_vikbw.c
r17990r17991
1616
1717#define VRAM_SIZE   (0x18000)  // 1024x768 @ 1bpp is 98,304 bytes (0x18000)
1818
19static SCREEN_UPDATE_RGB32( vikbw );
20
2119MACHINE_CONFIG_FRAGMENT( vikbw )
2220   MCFG_SCREEN_ADD( VIKBW_SCREEN_NAME, RASTER)
23   MCFG_SCREEN_UPDATE_STATIC(vikbw)
21   MCFG_SCREEN_UPDATE_DEVICE(DEVICE_SELF, nubus_vikbw_device, screen_update)
2422   MCFG_SCREEN_SIZE(1024,768)
2523   MCFG_SCREEN_VISIBLE_AREA(0, 1024-1, 0, 768-1)
2624   MCFG_SCREEN_REFRESH_RATE(70)
r17990r17991
122120
123121***************************************************************************/
124122
125static SCREEN_UPDATE_RGB32( vikbw )
123UINT32 nubus_vikbw_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
126124{
127125   UINT32 *scanline;
128126   int x, y;
129   nubus_vikbw_device *card = downcast<nubus_vikbw_device *>(screen.owner());
130127   UINT8 pixels;
131128
132   if (!card->m_vbl_disable)
129   if (!m_vbl_disable)
133130   {
134      card->raise_slot_irq();
131      raise_slot_irq();
135132   }
136133
137134   for (y = 0; y < 768; y++)
r17990r17991
139136      scanline = &bitmap.pix32(y);
140137      for (x = 0; x < 1024/8; x++)
141138      {
142         pixels = card->m_vram[(y * 128) + (BYTE4_XOR_BE(x))];
139         pixels = m_vram[(y * 128) + (BYTE4_XOR_BE(x))];
143140
144         *scanline++ = card->m_palette[(pixels>>7)&1];
145         *scanline++ = card->m_palette[(pixels>>6)&1];
146         *scanline++ = card->m_palette[(pixels>>5)&1];
147         *scanline++ = card->m_palette[(pixels>>4)&1];
148         *scanline++ = card->m_palette[(pixels>>3)&1];
149         *scanline++ = card->m_palette[(pixels>>2)&1];
150         *scanline++ = card->m_palette[(pixels>>1)&1];
151         *scanline++ = card->m_palette[(pixels&1)];
141         *scanline++ = m_palette[(pixels>>7)&1];
142         *scanline++ = m_palette[(pixels>>6)&1];
143         *scanline++ = m_palette[(pixels>>5)&1];
144         *scanline++ = m_palette[(pixels>>4)&1];
145         *scanline++ = m_palette[(pixels>>3)&1];
146         *scanline++ = m_palette[(pixels>>2)&1];
147         *scanline++ = m_palette[(pixels>>1)&1];
148         *scanline++ = m_palette[(pixels&1)];
152149      }
153150   }
154151
trunk/src/mess/video/nubus_vikbw.h
r17990r17991
2424      // optional information overrides
2525      virtual machine_config_constructor device_mconfig_additions() const;
2626      virtual const rom_entry *device_rom_region() const;
27
27     
28      UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
2829protected:
2930        // device-level overrides
3031        virtual void device_start();
trunk/src/mess/video/nubus_specpdq.c
r17990r17991
3131
3232#define VRAM_SIZE   (0x400000)
3333
34static SCREEN_UPDATE_RGB32( specpdq );
35
3634MACHINE_CONFIG_FRAGMENT( specpdq )
3735   MCFG_SCREEN_ADD( SPECPDQ_SCREEN_NAME, RASTER)
38   MCFG_SCREEN_UPDATE_STATIC(specpdq)
36   MCFG_SCREEN_UPDATE_DEVICE(DEVICE_SELF, nubus_specpdq_device, screen_update)
3937   MCFG_SCREEN_RAW_PARAMS(25175000, 800, 0, 640, 525, 0, 480)
4038   MCFG_SCREEN_SIZE(1280,1024)
4139   MCFG_SCREEN_VISIBLE_AREA(0, 1152-1, 0, 844-1)
r17990r17991
153151
154152***************************************************************************/
155153
156static SCREEN_UPDATE_RGB32( specpdq )
154UINT32 nubus_specpdq_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
157155{
158156   UINT32 *scanline;
159157   int x, y;
160   nubus_specpdq_device *card = downcast<nubus_specpdq_device *>(screen.owner());
161158   UINT8 pixels, *vram;
162159
163160   // first time?  kick off the VBL timer
164   if (!card->m_screen)
161   if (!m_screen)
165162   {
166      card->m_screen = &screen;
167      card->m_timer->adjust(card->m_screen->time_until_pos(843, 0), 0);
163      m_screen = &screen;
164      m_timer->adjust(m_screen->time_until_pos(843, 0), 0);
168165   }
169   vram = card->m_vram + 0x9000;
166   vram = m_vram + 0x9000;
170167
171   switch (card->m_mode)
168   switch (m_mode)
172169   {
173170      case 0: // 1 bpp
174171         for (y = 0; y < 844; y++)
r17990r17991
178175            {
179176               pixels = vram[(y * 512) + (BYTE4_XOR_BE(x))];
180177
181               *scanline++ = card->m_palette[(pixels&0x80)];
182               *scanline++ = card->m_palette[((pixels<<1)&0x80)];
183               *scanline++ = card->m_palette[((pixels<<2)&0x80)];
184               *scanline++ = card->m_palette[((pixels<<3)&0x80)];
185               *scanline++ = card->m_palette[((pixels<<4)&0x80)];
186               *scanline++ = card->m_palette[((pixels<<5)&0x80)];
187               *scanline++ = card->m_palette[((pixels<<6)&0x80)];
188               *scanline++ = card->m_palette[((pixels<<7)&0x80)];
178               *scanline++ = m_palette[(pixels&0x80)];
179               *scanline++ = m_palette[((pixels<<1)&0x80)];
180               *scanline++ = m_palette[((pixels<<2)&0x80)];
181               *scanline++ = m_palette[((pixels<<3)&0x80)];
182               *scanline++ = m_palette[((pixels<<4)&0x80)];
183               *scanline++ = m_palette[((pixels<<5)&0x80)];
184               *scanline++ = m_palette[((pixels<<6)&0x80)];
185               *scanline++ = m_palette[((pixels<<7)&0x80)];
189186            }
190187         }
191188         break;
r17990r17991
198195            {
199196               pixels = vram[(y * 512) + (BYTE4_XOR_BE(x))];
200197
201               *scanline++ = card->m_palette[(pixels&0xc0)];
202               *scanline++ = card->m_palette[((pixels<<2)&0xc0)];
203               *scanline++ = card->m_palette[((pixels<<4)&0xc0)];
204               *scanline++ = card->m_palette[((pixels<<6)&0xc0)];
198               *scanline++ = m_palette[(pixels&0xc0)];
199               *scanline++ = m_palette[((pixels<<2)&0xc0)];
200               *scanline++ = m_palette[((pixels<<4)&0xc0)];
201               *scanline++ = m_palette[((pixels<<6)&0xc0)];
205202            }
206203         }
207204         break;
r17990r17991
215212            {
216213               pixels = vram[(y * 1024) + (BYTE4_XOR_BE(x))];
217214
218               *scanline++ = card->m_palette[(pixels&0xf0)];
219               *scanline++ = card->m_palette[((pixels<<4)&0xf0)];
215               *scanline++ = m_palette[(pixels&0xf0)];
216               *scanline++ = m_palette[((pixels<<4)&0xf0)];
220217            }
221218         }
222219         break;
r17990r17991
229226            for (x = 0; x < 1152; x++)
230227            {
231228               pixels = vram[(y * 1152) + (BYTE4_XOR_BE(x))];
232               *scanline++ = card->m_palette[pixels];
229               *scanline++ = m_palette[pixels];
233230            }
234231         }
235232         break;
236233
237234      default:
238         fatalerror("specpdq: unknown video mode %d\n", card->m_mode);
235         fatalerror("specpdq: unknown video mode %d\n", m_mode);
239236         break;
240237   }
241238   return 0;
trunk/src/mess/video/nubus_specpdq.h
r17990r17991
2626      virtual const rom_entry *device_rom_region() const;
2727        virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
2828
29      UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
2930protected:
3031        // device-level overrides
3132        virtual void device_start();
trunk/src/mess/video/nubus_48gc.c
r17990r17991
1414
1515#define VRAM_SIZE   (0x200000)   // 2 megs, maxed out
1616
17static SCREEN_UPDATE_RGB32( mac_48gc );
18
1917MACHINE_CONFIG_FRAGMENT( macvideo_48gc )
2018   MCFG_SCREEN_ADD( GC48_SCREEN_NAME, RASTER)
21   MCFG_SCREEN_UPDATE_STATIC( mac_48gc )
19   MCFG_SCREEN_UPDATE_DEVICE(DEVICE_SELF, jmfb_device, screen_update)
2220   MCFG_SCREEN_RAW_PARAMS(25175000, 800, 0, 640, 525, 0, 480)
2321//  MCFG_SCREEN_SIZE(1152, 870)
2422//  MCFG_SCREEN_VISIBLE_AREA(0, 1152-1, 0, 870-1)
r17990r17991
141139
142140***************************************************************************/
143141
144static SCREEN_UPDATE_RGB32( mac_48gc )
142UINT32 jmfb_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
145143{
146   jmfb_device *card = downcast<jmfb_device *>(screen.owner());
147144   UINT32 *scanline, *base;
148145   int x, y;
149   UINT8 *vram8 = (UINT8 *)card->m_vram;
146   UINT8 *vram8 = (UINT8 *)m_vram;
150147   UINT8 pixels;
151148
152   if (!card->m_vbl_disable)
149   if (!m_vbl_disable)
153150   {
154      card->raise_slot_irq();
151      raise_slot_irq();
155152   }
156153
157154   vram8 += 0xa00;
158155
159   switch (card->m_mode)
156   switch (m_mode)
160157   {
161158      case 0:   // 1bpp
162         for (y = 0; y < card->m_yres; y++)
159         for (y = 0; y < m_yres; y++)
163160         {
164161            scanline = &bitmap.pix32(y);
165            for (x = 0; x < card->m_xres/8; x++)
162            for (x = 0; x < m_xres/8; x++)
166163            {
167               pixels = vram8[(y * card->m_stride) + (BYTE4_XOR_BE(x))];
164               pixels = vram8[(y * m_stride) + (BYTE4_XOR_BE(x))];
168165
169               *scanline++ = card->m_palette[(pixels>>7)&1];
170               *scanline++ = card->m_palette[(pixels>>6)&1];
171               *scanline++ = card->m_palette[(pixels>>5)&1];
172               *scanline++ = card->m_palette[(pixels>>4)&1];
173               *scanline++ = card->m_palette[(pixels>>3)&1];
174               *scanline++ = card->m_palette[(pixels>>2)&1];
175               *scanline++ = card->m_palette[(pixels>>1)&1];
176               *scanline++ = card->m_palette[pixels&1];
166               *scanline++ = m_palette[(pixels>>7)&1];
167               *scanline++ = m_palette[(pixels>>6)&1];
168               *scanline++ = m_palette[(pixels>>5)&1];
169               *scanline++ = m_palette[(pixels>>4)&1];
170               *scanline++ = m_palette[(pixels>>3)&1];
171               *scanline++ = m_palette[(pixels>>2)&1];
172               *scanline++ = m_palette[(pixels>>1)&1];
173               *scanline++ = m_palette[pixels&1];
177174            }
178175         }
179176         break;
180177
181178      case 1:   // 2bpp
182         for (y = 0; y < card->m_yres; y++)
179         for (y = 0; y < m_yres; y++)
183180         {
184181            scanline = &bitmap.pix32(y);
185            for (x = 0; x < card->m_xres/4; x++)
182            for (x = 0; x < m_xres/4; x++)
186183            {
187               pixels = vram8[(y * card->m_stride) + (BYTE4_XOR_BE(x))];
184               pixels = vram8[(y * m_stride) + (BYTE4_XOR_BE(x))];
188185
189               *scanline++ = card->m_palette[(pixels>>6)&0x3];
190               *scanline++ = card->m_palette[(pixels>>4)&0x3];
191               *scanline++ = card->m_palette[(pixels>>2)&0x3];
192               *scanline++ = card->m_palette[pixels&3];
186               *scanline++ = m_palette[(pixels>>6)&0x3];
187               *scanline++ = m_palette[(pixels>>4)&0x3];
188               *scanline++ = m_palette[(pixels>>2)&0x3];
189               *scanline++ = m_palette[pixels&3];
193190            }
194191         }
195192         break;
196193
197194      case 2: // 4 bpp
198         for (y = 0; y < card->m_yres; y++)
195         for (y = 0; y < m_yres; y++)
199196         {
200197            scanline = &bitmap.pix32(y);
201198
202            for (x = 0; x < card->m_xres/2; x++)
199            for (x = 0; x < m_xres/2; x++)
203200            {
204               pixels = vram8[(y * card->m_stride) + (BYTE4_XOR_BE(x))];
201               pixels = vram8[(y * m_stride) + (BYTE4_XOR_BE(x))];
205202
206               *scanline++ = card->m_palette[(pixels>>4)&0xf];
207               *scanline++ = card->m_palette[pixels&0xf];
203               *scanline++ = m_palette[(pixels>>4)&0xf];
204               *scanline++ = m_palette[pixels&0xf];
208205            }
209206         }
210207         break;
211208
212209      case 3: // 8 bpp
213         for (y = 0; y < card->m_yres; y++)
210         for (y = 0; y < m_yres; y++)
214211         {
215212            scanline = &bitmap.pix32(y);
216213
217            for (x = 0; x < card->m_xres; x++)
214            for (x = 0; x < m_xres; x++)
218215            {
219               pixels = vram8[(y * card->m_stride) + (BYTE4_XOR_BE(x))];
220               *scanline++ = card->m_palette[pixels];
216               pixels = vram8[(y * m_stride) + (BYTE4_XOR_BE(x))];
217               *scanline++ = m_palette[pixels];
221218            }
222219         }
223220         break;
224221
225222      case 4: // 24 bpp
226         for (y = 0; y < card->m_yres; y++)
223         for (y = 0; y < m_yres; y++)
227224         {
228225            scanline = &bitmap.pix32(y);
229            base = (UINT32 *)&card->m_vram[y * card->m_stride];
230            for (x = 0; x < card->m_xres; x++)
226            base = (UINT32 *)&m_vram[y * m_stride];
227            for (x = 0; x < m_xres; x++)
231228            {
232229               *scanline++ = *base++;
233230            }
trunk/src/mess/video/nubus_48gc.h
r17990r17991
2424      virtual machine_config_constructor device_mconfig_additions() const;
2525      virtual const rom_entry *device_rom_region() const;
2626
27      UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
2728protected:
2829        // device-level overrides
2930        virtual void device_start();
trunk/src/mess/video/nubus_m2hires.c
r17990r17991
1616
1717#define VRAM_SIZE   (0x80000)   // 512k max
1818
19static SCREEN_UPDATE_RGB32( m2hires );
20
2119MACHINE_CONFIG_FRAGMENT( m2hires )
2220   MCFG_SCREEN_ADD( M2HIRES_SCREEN_NAME, RASTER)
23   MCFG_SCREEN_UPDATE_STATIC(m2hires)
21   MCFG_SCREEN_UPDATE_DEVICE(DEVICE_SELF, nubus_m2hires_device, screen_update)
2422   MCFG_SCREEN_RAW_PARAMS(25175000, 800, 0, 640, 525, 0, 480)
2523   MCFG_SCREEN_SIZE(1024,768)
2624   MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
r17990r17991
140138
141139***************************************************************************/
142140
143static SCREEN_UPDATE_RGB32( m2hires )
141UINT32 nubus_m2hires_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
144142{
145143   UINT32 *scanline;
146144   int x, y;
147   nubus_m2hires_device *card = downcast<nubus_m2hires_device *>(screen.owner());
148145   UINT8 pixels, *vram;
149146
150147   // first time?  kick off the VBL timer
151   if (!card->m_screen)
148   if (!m_screen)
152149   {
153      card->m_screen = &screen;
154      card->m_timer->adjust(card->m_screen->time_until_pos(479, 0), 0);
150      m_screen = &screen;
151      m_timer->adjust(m_screen->time_until_pos(479, 0), 0);
155152   }
156153
157   vram = card->m_vram + 0x20;
154   vram = m_vram + 0x20;
158155
159   switch (card->m_mode)
156   switch (m_mode)
160157   {
161158      case 0: // 1 bpp?
162159         for (y = 0; y < 480; y++)
r17990r17991
166163            {
167164               pixels = vram[(y * 128) + (BYTE4_XOR_BE(x))];
168165
169               *scanline++ = card->m_palette[((pixels>>7)&0x1)];
170               *scanline++ = card->m_palette[((pixels>>6)&0x1)];
171               *scanline++ = card->m_palette[((pixels>>5)&0x1)];
172               *scanline++ = card->m_palette[((pixels>>4)&0x1)];
173               *scanline++ = card->m_palette[((pixels>>3)&0x1)];
174               *scanline++ = card->m_palette[((pixels>>2)&0x1)];
175               *scanline++ = card->m_palette[((pixels>>1)&0x1)];
176               *scanline++ = card->m_palette[(pixels&1)];
166               *scanline++ = m_palette[((pixels>>7)&0x1)];
167               *scanline++ = m_palette[((pixels>>6)&0x1)];
168               *scanline++ = m_palette[((pixels>>5)&0x1)];
169               *scanline++ = m_palette[((pixels>>4)&0x1)];
170               *scanline++ = m_palette[((pixels>>3)&0x1)];
171               *scanline++ = m_palette[((pixels>>2)&0x1)];
172               *scanline++ = m_palette[((pixels>>1)&0x1)];
173               *scanline++ = m_palette[(pixels&1)];
177174            }
178175         }
179176         break;
r17990r17991
186183            {
187184               pixels = vram[(y * 256) + (BYTE4_XOR_BE(x))];
188185
189               *scanline++ = card->m_palette[((pixels>>6)&3)];
190               *scanline++ = card->m_palette[((pixels>>4)&3)];
191               *scanline++ = card->m_palette[((pixels>>2)&3)];
192               *scanline++ = card->m_palette[(pixels&3)];
186               *scanline++ = m_palette[((pixels>>6)&3)];
187               *scanline++ = m_palette[((pixels>>4)&3)];
188               *scanline++ = m_palette[((pixels>>2)&3)];
189               *scanline++ = m_palette[(pixels&3)];
193190            }
194191         }
195192         break;
r17990r17991
203200            {
204201               pixels = vram[(y * 512) + (BYTE4_XOR_BE(x))];
205202
206               *scanline++ = card->m_palette[((pixels&0xf0)>>4)];
207               *scanline++ = card->m_palette[(pixels&0xf)];
203               *scanline++ = m_palette[((pixels&0xf0)>>4)];
204               *scanline++ = m_palette[(pixels&0xf)];
208205            }
209206         }
210207         break;
r17990r17991
217214            for (x = 0; x < 640; x++)
218215            {
219216               pixels = vram[(y * 1024) + (BYTE4_XOR_BE(x))];
220               *scanline++ = card->m_palette[pixels];
217               *scanline++ = m_palette[pixels];
221218            }
222219         }
223220         break;
224221
225222      default:
226         fatalerror("m2hires: unknown video mode %d\n", card->m_mode);
223         fatalerror("m2hires: unknown video mode %d\n", m_mode);
227224         break;
228225   }
229226   return 0;
trunk/src/mess/video/nubus_m2hires.h
r17990r17991
2525      virtual machine_config_constructor device_mconfig_additions() const;
2626      virtual const rom_entry *device_rom_region() const;
2727
28      UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
2829protected:
2930        // device-level overrides
3031        virtual void device_start();
trunk/src/mess/video/nubus_spec8.c
r17990r17991
1818
1919#define VRAM_SIZE   (0xc0000)   // 768k of VRAM for 1024x768 @ 8 bit
2020
21static SCREEN_UPDATE_RGB32( spec8s3 );
22
2321MACHINE_CONFIG_FRAGMENT( spec8s3 )
2422   MCFG_SCREEN_ADD( SPEC8S3_SCREEN_NAME, RASTER)
25   MCFG_SCREEN_UPDATE_STATIC(spec8s3)
23   MCFG_SCREEN_UPDATE_DEVICE(DEVICE_SELF, nubus_spec8s3_device, screen_update)
2624   MCFG_SCREEN_RAW_PARAMS(25175000, 800, 0, 640, 525, 0, 480)
2725   MCFG_SCREEN_SIZE(1024,768)
2826   MCFG_SCREEN_VISIBLE_AREA(0, 1024-1, 0, 768-1)
r17990r17991
144142
145143***************************************************************************/
146144
147static SCREEN_UPDATE_RGB32( spec8s3 )
145UINT32 nubus_spec8s3_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
148146{
149147   UINT32 *scanline;
150148   int x, y;
151   nubus_spec8s3_device *card = downcast<nubus_spec8s3_device *>(screen.owner());
152149   UINT8 pixels, *vram;
153150
154151   // first time?  kick off the VBL timer
155   if (!card->m_screen)
152   if (!m_screen)
156153   {
157      card->m_screen = &screen;
158      card->m_timer->adjust(card->m_screen->time_until_pos(767, 0), 0);
154      m_screen = &screen;
155      m_timer->adjust(m_screen->time_until_pos(767, 0), 0);
159156   }
160   vram = card->m_vram + 0x400;
157   vram = m_vram + 0x400;
161158
162   switch (card->m_mode)
159   switch (m_mode)
163160   {
164161      case 0: // 1 bpp
165162         for (y = 0; y < 768; y++)
r17990r17991
169166            {
170167               pixels = vram[(y * 512) + (BYTE4_XOR_BE(x))];
171168
172               *scanline++ = card->m_palette[pixels&0x80];
173               *scanline++ = card->m_palette[(pixels<<1)&0x80];
174               *scanline++ = card->m_palette[(pixels<<2)&0x80];
175               *scanline++ = card->m_palette[(pixels<<3)&0x80];
176               *scanline++ = card->m_palette[(pixels<<4)&0x80];
177               *scanline++ = card->m_palette[(pixels<<5)&0x80];
178               *scanline++ = card->m_palette[(pixels<<6)&0x80];
179               *scanline++ = card->m_palette[(pixels<<7)&0x80];
169               *scanline++ = m_palette[pixels&0x80];
170               *scanline++ = m_palette[(pixels<<1)&0x80];
171               *scanline++ = m_palette[(pixels<<2)&0x80];
172               *scanline++ = m_palette[(pixels<<3)&0x80];
173               *scanline++ = m_palette[(pixels<<4)&0x80];
174               *scanline++ = m_palette[(pixels<<5)&0x80];
175               *scanline++ = m_palette[(pixels<<6)&0x80];
176               *scanline++ = m_palette[(pixels<<7)&0x80];
180177            }
181178         }
182179         break;
r17990r17991
189186            {
190187               pixels = vram[(y * 512) + (BYTE4_XOR_BE(x))];
191188
192               *scanline++ = card->m_palette[pixels&0xc0];
193               *scanline++ = card->m_palette[(pixels<<2)&0xc0];
194               *scanline++ = card->m_palette[(pixels<<4)&0xc0];
195               *scanline++ = card->m_palette[(pixels<<6)&0xc0];
189               *scanline++ = m_palette[pixels&0xc0];
190               *scanline++ = m_palette[(pixels<<2)&0xc0];
191               *scanline++ = m_palette[(pixels<<4)&0xc0];
192               *scanline++ = m_palette[(pixels<<6)&0xc0];
196193            }
197194         }
198195         break;
r17990r17991
206203            {
207204               pixels = vram[(y * 512) + (BYTE4_XOR_BE(x))];
208205
209               *scanline++ = card->m_palette[pixels&0xf0];
210               *scanline++ = card->m_palette[(pixels<<4)&0xf0];
206               *scanline++ = m_palette[pixels&0xf0];
207               *scanline++ = m_palette[(pixels<<4)&0xf0];
211208            }
212209         }
213210         break;
r17990r17991
220217            for (x = 0; x < 1024; x++)
221218            {
222219               pixels = vram[(y * 1024) + (BYTE4_XOR_BE(x))];
223               *scanline++ = card->m_palette[pixels];
220               *scanline++ = m_palette[pixels];
224221            }
225222         }
226223         break;
227224
228225      default:
229         fatalerror("spec8s3: unknown video mode %d\n", card->m_mode);
226         fatalerror("spec8s3: unknown video mode %d\n", m_mode);
230227         break;
231228   }
232229   return 0;
trunk/src/mess/video/nubus_spec8.h
r17990r17991
2626      virtual const rom_entry *device_rom_region() const;
2727        virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
2828
29      UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
2930protected:
3031        // device-level overrides
3132        virtual void device_start();
trunk/src/mess/video/nubus_radiustpd.c
r17990r17991
1616
1717#define VRAM_SIZE   (0x40000)   // 256k.  1152x880 1 bit per pixel fits nicely.
1818
19static SCREEN_UPDATE_RGB32( radiustpd );
20
2119MACHINE_CONFIG_FRAGMENT( radiustpd )
2220   MCFG_SCREEN_ADD( RADIUSTPD_SCREEN_NAME, RASTER)
23   MCFG_SCREEN_UPDATE_STATIC(radiustpd)
21   MCFG_SCREEN_UPDATE_DEVICE(DEVICE_SELF, nubus_radiustpd_device, screen_update)
2422   MCFG_SCREEN_SIZE(1280, 960)
2523   MCFG_SCREEN_REFRESH_RATE(70)
2624   MCFG_SCREEN_VISIBLE_AREA(0, 1152-1, 0, 880-1)
r17990r17991
141139
142140***************************************************************************/
143141
144static SCREEN_UPDATE_RGB32( radiustpd )
142UINT32 nubus_radiustpd_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
145143{
146144   UINT32 *scanline;
147145   int x, y;
148   nubus_radiustpd_device *card = downcast<nubus_radiustpd_device *>(screen.owner());
149146   UINT8 pixels, *vram;
150147
151148   // first time?  kick off the VBL timer
152   if (!card->m_screen)
149   if (!m_screen)
153150   {
154      card->m_screen = &screen;
155      card->m_timer->adjust(card->m_screen->time_until_pos(479, 0), 0);
151      m_screen = &screen;
152      m_timer->adjust(m_screen->time_until_pos(479, 0), 0);
156153   }
157154
158   vram = card->m_vram + 0x200;
155   vram = m_vram + 0x200;
159156
160157   for (y = 0; y < 880; y++)
161158   {
r17990r17991
164161      {
165162         pixels = vram[(y * (1152/8)) + (BYTE4_XOR_BE(x))];
166163
167         *scanline++ = card->m_palette[((pixels>>7)&0x1)];
168         *scanline++ = card->m_palette[((pixels>>6)&0x1)];
169         *scanline++ = card->m_palette[((pixels>>5)&0x1)];
170         *scanline++ = card->m_palette[((pixels>>4)&0x1)];
171         *scanline++ = card->m_palette[((pixels>>3)&0x1)];
172         *scanline++ = card->m_palette[((pixels>>2)&0x1)];
173         *scanline++ = card->m_palette[((pixels>>1)&0x1)];
174         *scanline++ = card->m_palette[(pixels&1)];
164         *scanline++ = m_palette[((pixels>>7)&0x1)];
165         *scanline++ = m_palette[((pixels>>6)&0x1)];
166         *scanline++ = m_palette[((pixels>>5)&0x1)];
167         *scanline++ = m_palette[((pixels>>4)&0x1)];
168         *scanline++ = m_palette[((pixels>>3)&0x1)];
169         *scanline++ = m_palette[((pixels>>2)&0x1)];
170         *scanline++ = m_palette[((pixels>>1)&0x1)];
171         *scanline++ = m_palette[(pixels&1)];
175172      }
176173   }
177174
trunk/src/mess/video/nubus_radiustpd.h
r17990r17991
2525      virtual machine_config_constructor device_mconfig_additions() const;
2626      virtual const rom_entry *device_rom_region() const;
2727
28      UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
2829protected:
2930        // device-level overrides
3031        virtual void device_start();

Previous 199869 Revisions Next


© 1997-2024 The MAME Team