예제 #1
0
        private static void cps1_build_palette(int palette_offset)
        {
            int offset, page;
            int pallete_offset1 = palette_offset;
            int ctrl            = cps_b_regs[palette_control / 2];

            for (page = 0; page < 6; ++page)
            {
                if (((ctrl >> page) & 1) != 0)
                {
                    for (offset = 0; offset < 0x200; ++offset)
                    {
                        int palette = gfxram[pallete_offset1 * 2] * 0x100 + gfxram[pallete_offset1 * 2 + 1];
                        pallete_offset1++;
                        int r, g, b, bright;
                        bright = 0x0f + ((palette >> 12) << 1);
                        r      = ((palette >> 8) & 0x0f) * 0x11 * bright / 0x2d;
                        g      = ((palette >> 4) & 0x0f) * 0x11 * bright / 0x2d;
                        b      = ((palette >> 0) & 0x0f) * 0x11 * bright / 0x2d;
                        Palette.palette_entry_set_color(0x200 * page + offset, Palette.make_rgb(r, g, b));
                    }
                }
                else
                {
                    if (pallete_offset1 != palette_offset)
                    {
                        pallete_offset1 += 0x200;
                    }
                }
            }
        }
예제 #2
0
파일: Video.cs 프로젝트: beginor/mame.net
 public static void namcos1_paletteram_w(int offset, byte data)
 {
     if (namcos1_paletteram[offset] == data)
     {
         return;
     }
     if ((offset & 0x1800) != 0x1800)
     {
         int r, g, b;
         int color = ((offset & 0x6000) >> 2) | (offset & 0x7ff);
         namcos1_paletteram[offset] = data;
         offset &= ~0x1800;
         r       = namcos1_paletteram[offset];
         g       = namcos1_paletteram[offset + 0x0800];
         b       = namcos1_paletteram[offset + 0x1000];
         Palette.palette_entry_set_color(color, Palette.make_rgb(r, g, b));
     }
     else
     {
         int i, j;
         namcos1_cus116[offset & 0x0f] = data;
         for (i = 0x1800; i < 0x8000; i += 0x2000)
         {
             offset = (offset & 0x0f) | i;
             for (j = 0; j < 0x80; j++, offset += 0x10)
             {
                 namcos1_paletteram[offset] = data;
             }
         }
     }
 }
예제 #3
0
파일: Video.cs 프로젝트: beginor/mame.net
        public static void video_start_namcos1()
        {
            int i;

            namcos1_videoram          = new byte[0x8000];
            namcos1_cus116            = new byte[0x10];
            namcos1_spriteram         = new byte[0x1000];
            namcos1_playfield_control = new byte[0x20];
            Array.Clear(namcos1_videoram, 0, 0x8000);
            Array.Clear(namcos1_paletteram, 0, 0x8000);
            Array.Clear(namcos1_cus116, 0, 0x10);
            Array.Clear(namcos1_playfield_control, 0, 0x20);
            uu1FFF = new ushort[0x200 * 0x200];
            for (i = 0; i < 0x40000; i++)
            {
                uu1FFF[i] = 0x1fff;
            }
            Tmap.ttmap[4].tilemap_set_scrolldx(73, 512 - 73);
            Tmap.ttmap[5].tilemap_set_scrolldx(73, 512 - 73);
            Tmap.ttmap[4].tilemap_set_scrolldy(0x10, 0x110);
            Tmap.ttmap[5].tilemap_set_scrolldy(0x10, 0x110);
            for (i = 0; i < 0x2000; i++)
            {
                Palette.palette_entry_set_color(i, Palette.make_rgb(0, 0, 0));
            }
            copy_sprites = 0;
        }
예제 #4
0
파일: Video.cs 프로젝트: beginor/mame.net
        private static void igs011_palette(int offset, ushort data)
        {
            int rgb;

            paletteram16[offset] = data;
            rgb = (paletteram16[offset & 0x7ff] & 0xff) | ((paletteram16[offset | 0x800] & 0xff) << 8);
            Palette.palette_entry_set_color(offset & 0x7ff, (uint)((Palette.pal5bit((byte)(rgb >> 0)) << 16) | (Palette.pal5bit((byte)(rgb >> 5)) << 8) | Palette.pal5bit((byte)(rgb >> 10))));
        }
예제 #5
0
파일: Video.cs 프로젝트: beginor/mame.net
        private static void igs011_palette(int offset, byte data)
        {
            int rgb;

            if ((offset & 1) == 0)
            {
                paletteram16[offset / 2] = (ushort)((data << 8) | (paletteram16[offset / 2] & 0xff));
            }
            else if ((offset & 1) == 1)
            {
                paletteram16[offset / 2] = (ushort)((paletteram16[offset / 2] & 0xff00) | data);
            }
            rgb = (paletteram16[(offset / 2) & 0x7ff] & 0xff) | ((paletteram16[(offset / 2) | 0x800] & 0xff) << 8);
            Palette.palette_entry_set_color((offset / 2) & 0x7ff, (uint)((Palette.pal5bit((byte)(rgb >> 0)) << 16) | (Palette.pal5bit((byte)(rgb >> 5)) << 8) | Palette.pal5bit((byte)(rgb >> 10))));
        }
예제 #6
0
        public static void video_start_cps()
        {
            int i;

            Tmap.ttmap[0].enable          = true;
            Tmap.ttmap[1].enable          = true;
            Tmap.ttmap[2].enable          = true;
            Tmap.ttmap[0].all_tiles_dirty = true;
            Tmap.ttmap[1].all_tiles_dirty = true;
            Tmap.ttmap[2].all_tiles_dirty = true;
            Array.Clear(Tmap.ttmap[0].pen_to_flags, 0, 0x40);
            Array.Clear(Tmap.ttmap[1].pen_to_flags, 0, 0x40);
            Array.Clear(Tmap.ttmap[2].pen_to_flags, 0, 0x40);
            cps1_update_transmasks();
            for (i = 0; i < 0xc00; i++)
            {
                Palette.palette_entry_set_color(i, Palette.make_rgb(0, 0, 0));
            }
            primasks           = new uint[8];
            cps1_stars_enabled = new int[2];
            cps1_buffered_obj  = new ushort[0x400];
            cps2_buffered_obj  = new ushort[0x1000];
            cps2_objram1       = new ushort[0x1000];
            cps2_objram2       = new ushort[0x1000];

            uuBFF = new ushort[0x200 * 0x200];
            for (i = 0; i < 0x40000; i++)
            {
                uuBFF[i] = 0xbff;
            }
            Array.Clear(cps1_buffered_obj, 0, 0x400);
            Array.Clear(cps2_buffered_obj, 0, 0x1000);

            Array.Clear(gfxram, 0, 0x30000);
            Array.Clear(cps_a_regs, 0, 0x20);
            Array.Clear(cps_b_regs, 0, 0x20);
            Array.Clear(cps2_objram1, 0, 0x1000);
            Array.Clear(cps2_objram2, 0, 0x1000);

            cps_a_regs[CPS1_OBJ_BASE]     = 0x9200;
            cps_a_regs[CPS1_SCROLL1_BASE] = 0x9000;
            cps_a_regs[CPS1_SCROLL2_BASE] = 0x9040;
            cps_a_regs[CPS1_SCROLL3_BASE] = 0x9080;
            cps_a_regs[CPS1_OTHER_BASE]   = 0x9100;
            if (bootleg_kludge == 0)
            {
                scroll1xoff = 0;
                scroll2xoff = 0;
                scroll3xoff = 0;
            }
            else if (bootleg_kludge == 1)
            {
                scroll1xoff = -0x0c;
                scroll2xoff = -0x0e;
                scroll3xoff = -0x10;
            }
            else if (bootleg_kludge == 2)
            {
                scroll1xoff = -0x0c;
                scroll2xoff = -0x10;
                scroll3xoff = -0x10;
            }
            else if (bootleg_kludge == 3)
            {
                scroll1xoff = -0x08;
                scroll2xoff = -0x0b;
                scroll3xoff = -0x0c;
            }
            else if (bootleg_kludge == 0x88)
            {
                scroll1xoff = 0x4;
                scroll2xoff = 0x6;
                scroll3xoff = 0xa;
            }
            cps1_get_video_base();   /* Calculate base pointers */
            cps1_get_video_base();   /* Calculate old base pointers */
        }
예제 #7
0
 public static void changecolor(int color, int r, int g, int b)
 {
     Palette.palette_entry_set_color(color, Palette.make_rgb(Palette.pal5bit((byte)r), Palette.pal5bit((byte)g), Palette.pal5bit((byte)b)));
 }
예제 #8
0
파일: Video.cs 프로젝트: beginor/mame.net
 public static void set_color_555(int color, int rshift, int gshift, int bshift, ushort data)
 {
     Palette.palette_entry_set_color(color, Palette.make_rgb(Palette.pal5bit((byte)(data >> rshift)), Palette.pal5bit((byte)(data >> gshift)), (int)Palette.pal5bit((byte)(data >> bshift))));
 }