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 }
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 }