示例#1
0
        void dkong2b_palette(palette_device palette)
        {
            Pointer <uint8_t> color_prom = new Pointer <uint8_t>(memregion("proms").base_());  //const uint8_t *color_prom = memregion("proms")->base();

            std.vector <rgb_t> rgb;
            compute_res_net_all(out rgb, color_prom, dkong_decode_info, dkong_net_info);
            palette.set_pen_colors(0, rgb);

            // Now treat tri-state black background generation

            for (int i = 0; i < 256; i++)
            {
                if ((i & 0x03) == 0x00)  // NOR => CS=1 => Tristate => real black
                {
                    int r  = compute_res_net(1, 0, dkong_net_bck_info);
                    int gr = compute_res_net(1, 1, dkong_net_bck_info);
                    int b  = compute_res_net(1, 2, dkong_net_bck_info);
                    palette.set_pen_color((pen_t)i, (u8)r, (u8)gr, (u8)b);
                }
            }

            palette.palette().normalize_range(0, 255);

            color_prom += 512;
            // color_prom now points to the beginning of the character color codes
            m_color_codes = color_prom; // we'll need it later
        }
示例#2
0
        void radarscp_palette(palette_device palette)
        {
            Pointer <uint8_t> color_prom = new Pointer <uint8_t>(memregion("proms").base_());  //const uint8_t *color_prom = memregion("proms")->base();

            for (int i = 0; i < 256; i++)
            {
                // red component
                int r = compute_res_net((color_prom[256] >> 1) & 0x07, 0, radarscp_net_info);
                // green component
                int gr = compute_res_net(((color_prom[256] << 2) & 0x04) | ((color_prom[0] >> 2) & 0x03), 1, radarscp_net_info);
                // blue component
                int b = compute_res_net((color_prom[0] >> 0) & 0x03, 2, radarscp_net_info);

                palette.set_pen_color((pen_t)i, (u8)r, (u8)gr, (u8)b);
                color_prom++;
            }

            // Now treat tri-state black background generation

            for (int i = 0; i < 256; i++)
            {
                if ((m_vidhw != DKONG_RADARSCP_CONVERSION) && ((i & 0x03) == 0x00))  //  NOR => CS=1 => Tristate => real black
                {
                    int r  = compute_res_net(1, 0, radarscp_net_bck_info);
                    int gr = compute_res_net(1, 1, radarscp_net_bck_info);
                    int b  = compute_res_net(1, 2, radarscp_net_bck_info);
                    palette.set_pen_color((pen_t)i, (u8)r, (u8)gr, (u8)b);
                }
            }

            // Star color
            palette.set_pen_color(RADARSCP_STAR_COL,
                                  (u8)compute_res_net(1, 0, radarscp_stars_net_info),
                                  (u8)compute_res_net(0, 1, radarscp_stars_net_info),
                                  (u8)compute_res_net(0, 2, radarscp_stars_net_info));

            // Oscillating background
            for (int i = 0; i < 256; i++)
            {
                int r  = compute_res_net(0, 0, radarscp_blue_net_info);
                int gr = compute_res_net(0, 1, radarscp_blue_net_info);
                int b  = compute_res_net(i, 2, radarscp_blue_net_info);

                palette.set_pen_color(RADARSCP_BCK_COL_OFFSET + (pen_t)i, (u8)r, (u8)gr, (u8)b);
            }

            // Grid
            for (int i = 0; i < 8; i++)
            {
                int r  = compute_res_net(BIT(i, 0), 0, radarscp_grid_net_info);
                int gr = compute_res_net(BIT(i, 1), 1, radarscp_grid_net_info);
                int b  = compute_res_net(BIT(i, 2), 2, radarscp_grid_net_info);

                palette.set_pen_color(RADARSCP_GRID_COL_OFFSET + (pen_t)i, (u8)r, (u8)gr, (u8)b);
            }

            palette.palette().normalize_range(0, RADARSCP_GRID_COL_OFFSET + 7);

            color_prom += 256;
            // color_prom now points to the beginning of the character color codes
            m_color_codes = color_prom; // we'll need it later
        }