Previous 199869 Revisions Next

r36242 Wednesday 4th March, 2015 at 15:29:10 UTC by Robbbert
(MESS) mbee : fixed colours (nw)
[src/mess/drivers]mbee.c
[src/mess/includes]mbee.h
[src/mess/video]mbee.c

trunk/src/mess/drivers/mbee.c
r244753r244754
731731   MCFG_CPU_IO_MAP(mbeepc_io)
732732MACHINE_CONFIG_END
733733
734static MACHINE_CONFIG_DERIVED( mbeepc85b, mbeepc )
735   MCFG_PALETTE_MODIFY("palette")
736   MCFG_PALETTE_INIT_OWNER(mbee_state, mbeepc85b)
737MACHINE_CONFIG_END
738
739734static MACHINE_CONFIG_DERIVED( mbeeppc, mbeeic )
740735   MCFG_CPU_MODIFY( "maincpu" )
741736   MCFG_CPU_PROGRAM_MAP(mbeeppc_mem)
r244753r244754
11381133COMP( 1982, mbeeic,   mbee,     0,      mbeeic,   mbee,     mbee_state,  mbeeic,     "Applied Technology",  "Microbee 32 IC" , 0 )
11391134COMP( 1982, mbeepc,   mbee,     0,      mbeepc,   mbee,     mbee_state,  mbeepc,     "Applied Technology",  "Microbee Personal Communicator" , 0 )
11401135COMP( 1985, mbeepc85, mbee,     0,      mbeepc,   mbee,     mbee_state,  mbeepc85,   "Applied Technology",  "Microbee PC85" , 0 )
1141COMP( 1985, mbeepc85b,mbee,     0,      mbeepc85b,mbee,     mbee_state,  mbeepc85,   "Applied Technology",  "Microbee PC85 (New version)" , 0 )
1136COMP( 1985, mbeepc85b,mbee,     0,      mbeepc,   mbee,     mbee_state,  mbeepc85,   "Applied Technology",  "Microbee PC85 (New version)" , 0 )
11421137COMP( 1985, mbeepc85s,mbee,     0,      mbeepc,   mbee,     mbee_state,  mbeepc85,   "Applied Technology",  "Microbee PC85 (Swedish)" , 0 )
11431138COMP( 1986, mbeeppc,  mbee,     0,      mbeeppc,  mbee,     mbee_state,  mbeeppc,    "Applied Technology",  "Microbee Premium PC85" , 0 )
11441139COMP( 1986, mbeett,   mbee,     0,      mbeett,   mbee256,  mbee_state,  mbeett,     "Applied Technology",  "Microbee Teleterm" , GAME_NOT_WORKING )
trunk/src/mess/includes/mbee.h
r244753r244754
100100   DECLARE_VIDEO_START(standard);
101101   DECLARE_VIDEO_START(premium);
102102   DECLARE_PALETTE_INIT(standard);
103   DECLARE_PALETTE_INIT(mbeepc85b);
104103   DECLARE_PALETTE_INIT(premium);
105104   DECLARE_MACHINE_RESET(mbee56);
106105   DECLARE_MACHINE_RESET(mbee128);
trunk/src/mess/video/mbee.c
r244753r244754
7474   if (m_is_premium && ((m_1c & 0x9f) == 0x90))
7575      return m_p_attribram[offset];
7676   else
77   if BIT(m_0b, 0)
77   if (m_0b)
7878      return m_p_gfxram[offset];
7979   else
8080      return m_p_videoram[offset];
r244753r244754
120120
121121WRITE8_MEMBER( mbee_state::port08_w )
122122{
123   m_08 = data;
123   m_08 = data & 0x4e;
124124}
125125
126126READ8_MEMBER( mbee_state::port1c_r )
r244753r244754
362362MC6845_UPDATE_ROW( mbee_state::colour_update_row )
363363{
364364   const rgb_t *palette = m_palette->palette()->entry_list_raw();
365   UINT8 inv,attr,gfx,fg,bg;
366   UINT16 mem,x,col,chr;
367   UINT16 colourm = (m_08 & 0x0e) << 7;
365   UINT8 inv,attr,gfx,fg,bg,col;
366   UINT16 mem,x,chr;
367   UINT8 colourm = (m_08 & 0x0e) >> 1;
368368   UINT32 *p = &bitmap.pix32(y);
369369
370370   for (x = 0; x < x_count; x++)           // for each character
r244753r244754
387387         if (BIT(attr, 7) & BIT(m_framecnt, 4))            // flashing attribute
388388            chr = 0x20;
389389      }
390      else
391         col |= colourm;
392390
393391      oldkb_scan(x+ma);
394392
r244753r244754
403401      if (m_is_premium)
404402      {
405403         fg = col & 15;
406         bg = (col & 0xf0) >> 4;
404         bg = col >> 4;
407405      }
408406      else
409407      {
410         fg = (col & 0x001f) | 64;
411         bg = (col & 0x07e0) >> 5;
408         fg = (col & 0x1f) | 64;
409         bg = ((col & 0xe0) >> 2) | colourm;
412410      }
413411
414412      /* Display a scanline of a character (8 pixels) */
r244753r244754
424422}
425423
426424
427/***********************************************************
425/*****************************************************************************************************
428426
429427    Palette
430428
431************************************************************/
429    Standard Palette: The 8 bits from the colour RAM are divided into 5 bits for foreground, and 3
430    bits for background. The 5 foreground bits pass through a PAL, which has 6 outputs. A write to
431    port 8 produces 3 more background lines, giving 6 in total. These 12 lines travel to a pair of
432    74LS157 switching chips, where the foreground or background lines are selected by the absence or
433    or presence of a pixel. The 6 chosen lines pass through a 7407 then are merged to the final 3 RGB
434    lines. Each pair is merged like this:
435    VCC --- 330 ohm --- primary colour line + out to monitor ---- 120 ohm --- secondary colour line
432436
437*****************************************************************************************************/
438
433439PALETTE_INIT_MEMBER( mbee_state, standard )
434440{
435441   const UINT8 *color_prom = memregion("proms")->base();
436   UINT16 i;
437   UINT8 r, b, g, k;
438   UINT8 level[] = { 0, 0x80, 0xff, 0xff };    /* off, half, full intensity */
442   UINT8 i=0, r, b, g, k, r1, g1, b1;
443   UINT8 bglevel[] = { 0, 0x54, 0xa0, 0xff };
444   UINT8 fglevel[] = { 0, 0xa0, 0xff, 0xff };
439445
440   /* set up background palette (00-63) */
441   for (i = 0; i < 64; i++)
446   // set up background colours (00-63)
447   for (b1 = 0; b1 < 4; b1++)
442448   {
443      r = level[((i>>0)&1)|((i>>2)&2)];
444      g = level[((i>>1)&1)|((i>>3)&2)];
445      b = level[((i>>2)&1)|((i>>4)&2)];
446      palette.set_pen_color(i, rgb_t(r, g, b));
449      b = bglevel[b1];
450      for (g1 = 0; g1 < 4; g1++)
451      {
452         g = bglevel[g1];
453         for (r1 = 0; r1 < 4; r1++)
454         {
455            r = bglevel[r1];
456            k = BITSWAP8(i, 7, 6, 5, 3, 1, 4, 2, 0);
457            palette.set_pen_color(k, rgb_t(r, g, b));
458            i++;
459         }
460      }
447461   }
448462
449   /* set up foreground palette (64-95) by reading the prom */
463   // set up foreground palette (64-95) by reading the prom
450464   for (i = 0; i < 32; i++)
451465   {
452466      k = color_prom[i];
453      r = level[((k>>2)&1)|((k>>4)&2)];
454      g = level[((k>>1)&1)|((k>>3)&2)];
455      b = level[((k>>0)&1)|((k>>2)&2)];
467      r = fglevel[(BIT(k, 2))|(BIT(k, 5)<<1)];
468      g = fglevel[(BIT(k, 1))|(BIT(k, 4)<<1)];
469      b = fglevel[(BIT(k, 0))|(BIT(k, 3)<<1)];
456470      palette.set_pen_color(i|64, rgb_t(r, g, b));
457471   }
458472}
459473
460474
461PALETTE_INIT_MEMBER( mbee_state, mbeepc85b )
462{
463   const UINT8 *color_prom = memregion("proms")->base();
464   UINT16 i;
465   UINT8 r, b, g, k;
466   UINT8 level[] = { 0, 0x80, 0x80, 0xff };    /* off, half, full intensity */
467
468   /* set up background palette (00-63) */
469   for (i = 0; i < 64; i++)
470   {
471      r = level[((i>>0)&1)|((i>>2)&2)];
472      g = level[((i>>1)&1)|((i>>3)&2)];
473      b = level[((i>>2)&1)|((i>>4)&2)];
474      palette.set_pen_color(i, rgb_t(r, g, b));
475   }
476
477   level[2] = 0xff;
478
479   /* set up foreground palette (64-95) by reading the prom */
480   for (i = 0; i < 32; i++)
481   {
482      k = color_prom[i];
483      r = level[((k>>2)&1)|((k>>4)&2)];
484      g = level[((k>>1)&1)|((k>>3)&2)];
485      b = level[((k>>0)&1)|((k>>2)&2)];
486      palette.set_pen_color(i|64, rgb_t(r, g, b));
487   }
488}
489
490
491475PALETTE_INIT_MEMBER( mbee_state, premium )
492476{
493   UINT16 i;
494   UINT8 r, b, g;
477   UINT8 i, r, b, g;
495478
496479   /* set up 8 low intensity colours */
497480   for (i = 0; i < 8; i++)
498481   {
499      r = (i & 1) ? 0xc0 : 0;
500      g = (i & 2) ? 0xc0 : 0;
501      b = (i & 4) ? 0xc0 : 0;
482      r = BIT(i, 0) ? 0xa0 : 0;
483      g = BIT(i, 1) ? 0xa0 : 0;
484      b = BIT(i, 2) ? 0xa0 : 0;
502485      palette.set_pen_color(i, rgb_t(r, g, b));
503486   }
504487
505488   /* set up 8 high intensity colours */
506489   for (i = 9; i < 16; i++)
507490   {
508      r = (i & 1) ? 0xff : 0;
509      g = (i & 2) ? 0xff : 0;
510      b = (i & 4) ? 0xff : 0;
491      r = BIT(i, 0) ? 0xff : 0;
492      g = BIT(i, 1) ? 0xff : 0;
493      b = BIT(i, 2) ? 0xff : 0;
511494      palette.set_pen_color(i, rgb_t(r, g, b));
512495   }
513496}


Previous 199869 Revisions Next


© 1997-2024 The MAME Team