Beispiel #1
0
        public static int K051960_vh_start(int gfx_memory_region, int[] planes, _K051960_callback callback)
        {
            int gfx_index;
            Mame.GfxLayout spritelayout =
            new Mame.GfxLayout(
                16, 16,
                0,				/* filled in later */
                4,
                new uint[] { 0, 0, 0, 0 },	/* filled in later */
                new uint[] { 0, 1, 2, 3, 4, 5, 6, 7, 8 * 32 + 0, 8 * 32 + 1, 8 * 32 + 2, 8 * 32 + 3, 8 * 32 + 4, 8 * 32 + 5, 8 * 32 + 6, 8 * 32 + 7 },
                new uint[] { 0 * 32, 1 * 32, 2 * 32, 3 * 32, 4 * 32, 5 * 32, 6 * 32, 7 * 32, 16 * 32, 17 * 32, 18 * 32, 19 * 32, 20 * 32, 21 * 32, 22 * 32, 23 * 32 },
                128 * 8
            );


            /* find first empty slot to decode gfx */
            for (gfx_index = 0; gfx_index < Mame.MAX_GFX_ELEMENTS; gfx_index++)
                if (Mame.Machine.gfx[gfx_index] == null)
                    break;
            if (gfx_index == Mame.MAX_GFX_ELEMENTS)
                return 1;

            /* tweak the structure for the number of tiles we have */
            spritelayout.total = (uint)Mame.memory_region_length(gfx_memory_region) / 128;
            spritelayout.planeoffset[0] = (uint)planes[0] * 8;
            spritelayout.planeoffset[1] = (uint)planes[1] * 8;
            spritelayout.planeoffset[2] = (uint)planes[2] * 8;
            spritelayout.planeoffset[3] = (uint)planes[3] * 8;

            /* decode the graphics */
            Mame.Machine.gfx[gfx_index] = Mame.decodegfx(Mame.memory_region(gfx_memory_region), spritelayout);
            if (Mame.Machine.gfx[gfx_index] == null)
                return 1;

            /* set the color information */
            Mame.Machine.gfx[gfx_index].colortable = new UShortSubArray(Mame.Machine.remapped_colortable);
            Mame.Machine.gfx[gfx_index].total_colors = (int)Mame.Machine.drv.color_table_len / 16;

            K051960_memory_region = gfx_memory_region;
            K051960_gfx = Mame.Machine.gfx[gfx_index];
            K051960_callback = callback;
            K051960_ram = new _BytePtr(0x400);
            if (K051960_ram == null) return 1;

            for (int i = 0; i < 0x400; i++) K051960_ram[i] = 0;//memset(K051960_ram,0,0x400);

            return 0;
        }
Beispiel #2
0
        public static int K051316_vh_start(int chip, int gfx_memory_region, int bpp, _K051316_callback callback)
        {
            int gfx_index;


            /* find first empty slot to decode gfx */
            for (gfx_index = 0; gfx_index < Mame.MAX_GFX_ELEMENTS; gfx_index++)
                if (Mame.Machine.gfx[gfx_index] == null)
                    break;
            if (gfx_index == Mame.MAX_GFX_ELEMENTS)
                return 1;

            if (bpp == 4)
            {
                Mame.GfxLayout charlayout =
                new Mame.GfxLayout(
                    16, 16,
                    0,				/* filled in later */
                    4,
                    new uint[] { 0, 1, 2, 3 },
                    new uint[] { 0 * 4, 1 * 4, 2 * 4, 3 * 4, 4 * 4, 5 * 4, 6 * 4, 7 * 4, 8 * 4, 9 * 4, 10 * 4, 11 * 4, 12 * 4, 13 * 4, 14 * 4, 15 * 4 },
                    new uint[] { 0 * 64, 1 * 64, 2 * 64, 3 * 64, 4 * 64, 5 * 64, 6 * 64, 7 * 64, 8 * 64, 9 * 64, 10 * 64, 11 * 64, 12 * 64, 13 * 64, 14 * 64, 15 * 64 },
                    128 * 8
                );


                /* tweak the structure for the number of tiles we have */
                charlayout.total = (uint)Mame.memory_region_length(gfx_memory_region) / 128;

                /* decode the graphics */
                Mame.Machine.gfx[gfx_index] = Mame.decodegfx(Mame.memory_region(gfx_memory_region), charlayout);
            }
            else if (bpp == 7)
            {
                Mame.GfxLayout charlayout =
                new Mame.GfxLayout(
                    16, 16,
                    0,				/* filled in later */
                    7,
                    new uint[] { 1, 2, 3, 4, 5, 6, 7 },
                    new uint[] { 0 * 8, 1 * 8, 2 * 8, 3 * 8, 4 * 8, 5 * 8, 6 * 8, 7 * 8, 8 * 8, 9 * 8, 10 * 8, 11 * 8, 12 * 8, 13 * 8, 14 * 8, 15 * 8 },
                    new uint[] { 0 * 128, 1 * 128, 2 * 128, 3 * 128, 4 * 128, 5 * 128, 6 * 128, 7 * 128, 8 * 128, 9 * 128, 10 * 128, 11 * 128, 12 * 128, 13 * 128, 14 * 128, 15 * 128 },
                    256 * 8
                );


                /* tweak the structure for the number of tiles we have */
                charlayout.total = (uint)Mame.memory_region_length(gfx_memory_region) / 256;

                /* decode the graphics */
                Mame.Machine.gfx[gfx_index] = Mame.decodegfx(Mame.memory_region(gfx_memory_region), charlayout);
            }
            else
            {
                //Mame.printf("K051316_vh_start supports only 4 or 7 bpp\n");
                return 1;
            }

            if (Mame.Machine.gfx[gfx_index] == null)
                return 1;

            /* set the color information */
            Mame.Machine.gfx[gfx_index].colortable = new UShortSubArray(Mame.Machine.remapped_colortable);
            Mame.Machine.gfx[gfx_index].total_colors = (int)(Mame.Machine.drv.color_table_len / (1 << bpp));

            K051316_memory_region[chip] = gfx_memory_region;
            K051316_gfxnum[chip] = gfx_index;
            K051316_bpp[chip] = bpp;
            K051316_callback[chip] = callback;

            K051316_tilemap[chip] = Mame.tilemap_create(K051316_get_tile_info, Mame.TILEMAP_OPAQUE, 16, 16, 32, 32);

            K051316_ram[chip] = new _BytePtr(0x800);

            if (K051316_ram[chip] == null || K051316_tilemap[chip] == null)
            {
                K051316_vh_stop(chip);
                return 1;
            }

            Mame.tilemap_set_clip(K051316_tilemap[chip], null);

            K051316_wraparound[chip] = 0;	/* default = no wraparound */
            K051316_offset[chip][0] = K051316_offset[chip][1] = 0;

            return 0;
        }
Beispiel #3
0
        public static int K052109_vh_start(int gfx_memory_region, int[] planes, _K052109_callback callback)
        {
            int gfx_index;
            Mame.GfxLayout charlayout =
            new Mame.GfxLayout(
                8, 8,
                0,				/* filled in later */
                4,
                new uint[] { 0, 0, 0, 0 },	/* filled in later */
                new uint[] { 0, 1, 2, 3, 4, 5, 6, 7 },
                new uint[] { 0 * 32, 1 * 32, 2 * 32, 3 * 32, 4 * 32, 5 * 32, 6 * 32, 7 * 32 },
                32 * 8
            );


            /* find first empty slot to decode gfx */
            for (gfx_index = 0; gfx_index < Mame.MAX_GFX_ELEMENTS; gfx_index++)
                if (Mame.Machine.gfx[gfx_index] == null)
                    break;
            if (gfx_index == Mame.MAX_GFX_ELEMENTS)
                return 1;

            /* tweak the structure for the number of tiles we have */
            charlayout.total = (uint)Mame.memory_region_length(gfx_memory_region) / 32;
            charlayout.planeoffset[0] = (uint)planes[3] * 8;
            charlayout.planeoffset[1] = (uint)planes[2] * 8;
            charlayout.planeoffset[2] = (uint)planes[1] * 8;
            charlayout.planeoffset[3] = (uint)planes[0] * 8;

            /* decode the graphics */
            Mame.Machine.gfx[gfx_index] = Mame.decodegfx(Mame.memory_region(gfx_memory_region), charlayout);
            if (Mame.Machine.gfx[gfx_index] == null)
                return 1;

            /* set the color information */
            Mame.Machine.gfx[gfx_index].colortable = new UShortSubArray(Mame.Machine.remapped_colortable);
            Mame.Machine.gfx[gfx_index].total_colors = (int)Mame.Machine.drv.color_table_len / 16;

            K052109_memory_region = gfx_memory_region;
            K052109_gfxnum = gfx_index;
            K052109_callback = callback;
            K052109_RMRD_line = Mame.CLEAR_LINE;

            has_extra_video_ram = 0;

            K052109_tilemap[0] = Mame.tilemap_create(K052109_get_tile_info, Mame.TILEMAP_TRANSPARENT, 8, 8, 64, 32);
            K052109_tilemap[1] = Mame.tilemap_create(K052109_get_tile_info, Mame.TILEMAP_TRANSPARENT, 8, 8, 64, 32);
            K052109_tilemap[2] = Mame.tilemap_create(K052109_get_tile_info, Mame.TILEMAP_TRANSPARENT, 8, 8, 64, 32);

            K052109_ram = new _BytePtr(0x6000);

            if (K052109_ram == null || K052109_tilemap[0] == null || K052109_tilemap[1] == null || K052109_tilemap[2] == null)
            {
                K052109_vh_stop();
                return 1;
            }
            for (int i = 0; i < 0x6000; i++) K052109_ram[i] = 0;//memset(K052109_ram,0,0x6000);

            K052109_colorram_F = new _BytePtr(K052109_ram, 0x0000);
            K052109_colorram_A = new _BytePtr(K052109_ram, 0x0800);
            K052109_colorram_B = new _BytePtr(K052109_ram, 0x1000);
            K052109_videoram_F = new _BytePtr(K052109_ram, 0x2000);
            K052109_videoram_A = new _BytePtr(K052109_ram, 0x2800);
            K052109_videoram_B = new _BytePtr(K052109_ram, 0x3000);
            K052109_videoram2_F = new _BytePtr(K052109_ram, 0x4000);
            K052109_videoram2_A = new _BytePtr(K052109_ram, 0x4800);
            K052109_videoram2_B = new _BytePtr(K052109_ram, 0x5000);

            K052109_tilemap[0].transparent_pen = 0;
            K052109_tilemap[1].transparent_pen = 0;
            K052109_tilemap[2].transparent_pen = 0;

            return 0;
        }