亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pang.c

?? 這個是延伸mame的在wince平臺下的游戲模擬器的代碼
?? C
字號:
/***************************************************************************

 Pang Video Hardware

***************************************************************************/

#include "vidhrdw/generic.h"
#include "palette.h"

/* Constants */
const int pang_paletteram_size=0x1000;
#define pang_max_colors 0x80

/* Globals */
int pang_videoram_size;
int pang_colorram_size;
unsigned char *pang_videoram;
unsigned char *pang_colorram;

/* Private */
static struct osd_bitmap *pang_tmpbitmap;    /* Temp bitmap */

static unsigned char *pang_objram;           /* Sprite RAM */
static unsigned char *pang_color_dirty;      /* Color RAM dirty */

static unsigned char *pang_video_base;       /* Video RAM base ptr (banked) */
static unsigned char *pang_paletteram;       /* Palette RAM (banked) */
static unsigned char *pang_palette_base;
static unsigned char *pang_palette_dirty;    /* Palette RAM dirty (banked) */
static unsigned char *pang_palette_dirty_base;
static unsigned char *pang_video_dirty;      /* Video RAM dirty (banked) */
static unsigned char *pang_video_dirty_base;
static unsigned char pang_dirty_colors[pang_max_colors]; /* Color dirty (banked) */
static unsigned char *pang_dirty_colors_base;

/* Declarations */
void pang_vh_stop(void);


/***************************************************************************
  OBJ / CHAR RAM HANDLERS (BANK 0 = CHAR, BANK 1=OBJ)
***************************************************************************/

void pang_video_bank_w(int offset, int data)
{
	/* Bank handler (sets base pointers for video write) */
	if (data)
	{
		/* OBJ RAM write */
		pang_video_base=pang_objram;
		/* Dummy dirty buffer for obj RAM */
		pang_video_dirty_base=pang_video_dirty+pang_videoram_size;
	}
	else
	{
		/* Character RAM write */
		pang_video_base=pang_videoram;
		pang_video_dirty_base=pang_video_dirty;
	}
}

void pang_videoram_w(int offset, int data)
{
	pang_video_base[offset]=data;
	pang_video_dirty_base[offset]=1;
}

int pang_videoram_r(int offset)
{
	return pang_video_base[offset];
}

/***************************************************************************
  COLOUR RAM
****************************************************************************/

void pang_colorram_w(int offset, int data)
{
	pang_colorram[offset]=data;
	pang_color_dirty[offset]=1;
}

int pang_colorram_r(int offset)
{
	return pang_colorram[offset];
}

/***************************************************************************
  PALETTE HANDLERS (COLOURS: BANK 0 = 0x00-0x3f BANK 1=0x40-0xff)
****************************************************************************/
void pang_palette_bank_w(int offset, int data)
{
	/* Palette bank handlers (sets base pointers form memory handlers) */
	if (data == 0x28)
	{
		pang_palette_base=&pang_paletteram[0x0800];
		pang_palette_dirty_base=&pang_palette_dirty[0x0800];
		pang_dirty_colors_base=&pang_dirty_colors[0x40];
	}
	else
	{
		pang_palette_base=pang_paletteram;
		pang_palette_dirty_base=pang_palette_dirty;
		pang_dirty_colors_base=pang_dirty_colors;
	}
}

void pang_paletteram_w(int offset, int data)
{
	pang_palette_base[offset]=data;
	pang_palette_dirty_base[offset]=1;
	pang_dirty_colors_base[offset/32]=1;
}

int pang_paletteram_r(int offset)
{
	return pang_palette_base[offset];
}

/***************************************************************************
		Video init
***************************************************************************/

int pang_vh_start(void)
{
	pang_tmpbitmap=NULL;
	pang_video_dirty=NULL;
	pang_color_dirty=NULL;
	pang_objram=NULL;
	pang_paletteram=NULL;
	pang_palette_dirty=NULL;

	pang_tmpbitmap = osd_create_bitmap(0x40*8, 0x20*8);
	if (!pang_tmpbitmap)
	{
		pang_vh_stop();
		return 1;
	}

	/*
		Video RAM dirty buffer : NB The video ram memory handler
		also writes sprite data (dirty buffer has to be
		2xpang_videoram_size)
	*/
	pang_video_dirty=malloc(pang_videoram_size*2);
	if (!pang_video_dirty)
	{
		pang_vh_stop();
		return 1;
	}
	memset(pang_video_dirty, 1, pang_videoram_size);
	pang_video_dirty_base=pang_video_dirty;

	/*
		OBJ RAM
	*/
	pang_objram=malloc(pang_videoram_size);
	if (!pang_objram)
	{
		pang_vh_stop();
		return 1;
	}
	memset(pang_objram, 0, pang_videoram_size);

	/*
		Char colour dirty buffer
	*/
	pang_color_dirty=malloc(pang_colorram_size);
	if (!pang_color_dirty)
	{
		pang_vh_stop();
		return 1;
	}
	memset(pang_color_dirty, 1, pang_colorram_size);

	/*
		Palette RAM
	*/
	pang_paletteram=malloc(pang_paletteram_size);
	if (!pang_paletteram)
	{
		pang_vh_stop();
		return 1;
	}
	memset(pang_paletteram, 0, pang_paletteram_size);

	/*
		Palette dirty buffer
	*/
	pang_palette_dirty=malloc(pang_paletteram_size);
	if (!pang_palette_dirty)
	{
		return 1;
	}
	memset(pang_palette_dirty, 1, pang_paletteram_size);

	/* Set up default bank base pointers */
	pang_palette_bank_w(0,0);
	pang_video_bank_w(0,0);


	return 0;
}

void pang_vh_stop(void)
{
	if (pang_tmpbitmap)
		osd_free_bitmap(pang_tmpbitmap);
	if (pang_video_dirty)
		free(pang_video_dirty);
	if (pang_color_dirty)
		free(pang_color_dirty);
	if (pang_objram)
		free(pang_objram);
	if (pang_paletteram)
		free(pang_paletteram);
	if (pang_palette_dirty)
		free(pang_palette_dirty);
}

/***************************************************************************
 Palette refresh
***************************************************************************/
INLINE void pang_refresh_palette( void )
{
	/* rebuild the color lookup table from RAM palette */
	int offs, i;
	unsigned char pang_used_colors[pang_max_colors];

	/* Rebuild any dirty palette entries */
	for( offs=0; offs<pang_max_colors*16*2; offs+=2 )
	{
		if (pang_palette_dirty[offs] || pang_palette_dirty[offs+1])
		{
			int bg, r, red, green, blue, bright;
			pang_palette_dirty[offs]=pang_palette_dirty[offs+1]=0;
			bg=pang_paletteram[offs];
			r =pang_paletteram[offs+1];
			red   = (r&0x0f);
			green = ((bg>>4)&0x0f);
			blue  = (bg&0x0f);
			red   = red<<4 | red;
			green = green<<4 | green;
			blue  = blue<<4 | blue;
			palette_change_color(offs/2, red, green, blue);
		}
	}

	/* Work out what colors we are actually using */
	memset(pang_used_colors,0, sizeof(pang_used_colors));
	memset(palette_used_colors,PALETTE_COLOR_UNUSED,Machine->drv->total_colors * sizeof(unsigned char));

	/* Characters */
	for (i=0; i<pang_colorram_size;i++)
	{
		pang_used_colors[pang_colorram[i]&0x7f]=1;
	}
	/* Sprites */
	for (i=1; i<pang_videoram_size; i+=4)
	{
		pang_used_colors[pang_objram[i]&0x0f]=1;
	}
	for (i=0; i<pang_max_colors; i++)
	{
		if (pang_used_colors[i])
		{
			memset(palette_used_colors+i*16, PALETTE_COLOR_USED, 16);
			palette_used_colors[i*16+15]=PALETTE_COLOR_TRANSPARENT;
		}
	}
	if (palette_recalc())
	{
		/* Whole screen needs a refresh */
		memset(pang_color_dirty, 1, pang_colorram_size);
	}
}

/***************************************************************************
  screen update
***************************************************************************/
void pang_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh)
{
	int offs, offsclr, sx, sy;

	/* Refresh the palette */
	pang_refresh_palette();

	/* Draw chars to temporary bitmap */
	offs=0;
	offsclr=0;
	for (sy=0; sy<0x20; sy++)
	{
		for (sx=0; sx<0x40; sx++)
		{
			int attrib=pang_colorram[offsclr];
			int color=attrib & 0x7f;
			if (    pang_video_dirty[offs] ||
					pang_video_dirty[offs+1] ||
					pang_color_dirty[offsclr] ||
					pang_dirty_colors[color] )
			{
					int code=pang_videoram[offs] +
							 pang_videoram[offs+1]*256;

					pang_video_dirty[offs]=0;
					pang_video_dirty[offs+1]=0;
					pang_color_dirty[offsclr]=0;

					drawgfx(pang_tmpbitmap,Machine->gfx[0],
							code,
							color,
							attrib & 0x80,0,
							8*sx,8*sy,
							NULL,
							TRANSPARENCY_NONE,0);
				}
				offs+=2;
				offsclr++;
		}
	}
	memset(pang_dirty_colors, 0, sizeof(pang_dirty_colors));

	copybitmap(bitmap,pang_tmpbitmap,0,0,0,0,&Machine->drv->visible_area,TRANSPARENCY_NONE,0);

	/* Draw sprites */
	/* the last entry is not a sprite, we skip it otherwise spang shows a bubble */
	/* moving diagonally across the screen */
	for (offs = 0x1000-0x40;offs >= 0;offs -= 0x20)
	{
		int code = pang_objram[offs];
		int attr = pang_objram[offs+1];
		int color = attr & 0x0f;
		sx = pang_objram[offs+3] + ((attr & 0x10) << 4);
		sy = ((pang_objram[offs+2] + 8) & 0xff) - 8;
		code += (attr & 0xe0) << 3;
		drawgfx(bitmap,Machine->gfx[1],
				 code,
				 color,
				 0,0,
				 sx,sy,
				 &Machine->drv->visible_area,
				 TRANSPARENCY_PEN,15);
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
青青草国产精品97视觉盛宴| 欧洲人成人精品| 精品奇米国产一区二区三区| 免费黄网站欧美| 欧美成人bangbros| 国产乱人伦精品一区二区在线观看| 日韩精品自拍偷拍| 国产黄色成人av| 一色桃子久久精品亚洲| 在线观看亚洲精品视频| 日韩极品在线观看| 久久久国际精品| 91蜜桃网址入口| 偷窥少妇高潮呻吟av久久免费| 欧美日韩一级二级| 久久精品国产亚洲aⅴ| 久久久精品国产免大香伊| www.激情成人| 亚洲3atv精品一区二区三区| 日韩欧美一区在线| 成人国产视频在线观看| 午夜日韩在线观看| 久久久久久久久久久久电影 | 日韩欧美美女一区二区三区| 精品午夜久久福利影院| 国产精品的网站| 欧美二区三区的天堂| 国产一区不卡视频| 亚洲乱码中文字幕| 欧美成人vps| 日本韩国精品一区二区在线观看| 亚洲sss视频在线视频| 亚洲品质自拍视频| 91精品国产黑色紧身裤美女| 丁香亚洲综合激情啪啪综合| 亚洲网友自拍偷拍| 国产日产亚洲精品系列| 精品视频999| 国产91精品一区二区| 午夜一区二区三区视频| 国产精品三级在线观看| 日韩一二三四区| 色综合天天在线| 韩国三级电影一区二区| 亚洲一区二区黄色| 日本一区二区三区视频视频| 欧美欧美欧美欧美首页| 91小视频免费看| 国产一区二区导航在线播放| 亚洲va欧美va国产va天堂影院| 国产日产欧美一区二区视频| 69久久99精品久久久久婷婷| 91女人视频在线观看| 国产伦精品一区二区三区免费| 亚洲第一成年网| 亚洲精品中文在线影院| 中文字幕欧美区| 精品国产制服丝袜高跟| 在线观看成人小视频| 99久久精品国产毛片| 国产酒店精品激情| 另类小说色综合网站| 午夜精品福利一区二区蜜股av| 久久国内精品自在自线400部| 亚洲男人天堂av| 亚洲欧洲日产国码二区| 久久久电影一区二区三区| 日韩欧美在线网站| 欧美一区二区视频网站| 欧美精品v日韩精品v韩国精品v| 91亚洲国产成人精品一区二区三 | 国产一级精品在线| 奇米888四色在线精品| 五月激情综合网| 亚洲国产裸拍裸体视频在线观看乱了| 亚洲天堂精品视频| 成人免费一区二区三区视频 | 正在播放一区二区| 欧美日韩在线综合| 国产精品一级片在线观看| 亚洲成人动漫在线免费观看| 亚洲日本va午夜在线影院| 国产精品久久毛片a| 国产精品私人影院| 国产精品国产自产拍在线| 国产精品麻豆视频| 亚洲欧洲成人精品av97| 亚洲人成7777| 亚洲国产aⅴ成人精品无吗| 天天做天天摸天天爽国产一区| 午夜av区久久| 久久国内精品自在自线400部| 黄色成人免费在线| 国产91高潮流白浆在线麻豆 | 国产亚洲欧美一级| 久久精品视频免费观看| 国产精品看片你懂得| 亚洲欧美日韩综合aⅴ视频| 亚洲最新在线观看| 日韩专区在线视频| 国产在线视频一区二区三区| 国产成人av电影在线| 色综合久久久久综合体桃花网| 在线日韩av片| 日韩欧美在线影院| 国产精品伦一区| 亚洲福利一区二区三区| 美女国产一区二区三区| 国产成人午夜精品影院观看视频 | 亚洲国产日韩a在线播放性色| 亚洲国产欧美在线| 精品亚洲国内自在自线福利| 高清久久久久久| 欧美性猛片xxxx免费看久爱| 日韩一级完整毛片| 中文字幕中文字幕一区二区| 午夜影视日本亚洲欧洲精品| 国产在线一区二区综合免费视频| 国产精品乱码妇女bbbb| 99re热视频这里只精品| 欧美在线观看禁18| 日韩精品中文字幕一区二区三区 | 91电影在线观看| 日韩写真欧美这视频| 国产精品久久久久久户外露出| 亚洲成人在线观看视频| 国产精品一品视频| 欧美日韩精品福利| 国产欧美精品一区二区色综合 | 国产一区二区久久| 在线观看区一区二| 欧美精品一区二区三区久久久 | 亚洲成人免费在线| 国产精品一区二区三区乱码| 欧美丝袜丝nylons| 中日韩免费视频中文字幕| 青青青伊人色综合久久| 色综合天天综合| 国产欧美日韩三级| 日本亚洲最大的色成网站www| 成人精品在线视频观看| 日韩一区二区影院| 亚洲综合色在线| av综合在线播放| 精品福利一二区| 亚洲mv在线观看| 在线免费观看成人短视频| 亚洲国产成人午夜在线一区| 欧美a级理论片| 欧美色综合久久| 亚洲老司机在线| 成人av在线影院| 久久久久国产精品麻豆ai换脸| 日韩国产高清在线| 欧美亚洲自拍偷拍| 一区二区在线观看免费视频播放| 国产成人啪免费观看软件| 精品国产一区二区三区久久影院 | 成人精品小蝌蚪| 精品处破学生在线二十三| 日本免费新一区视频| 欧美精品aⅴ在线视频| 亚洲一区视频在线| 91九色02白丝porn| 亚洲美女视频在线观看| 91免费视频观看| 一区二区三区在线影院| 91丝袜国产在线播放| ...xxx性欧美| 色婷婷一区二区| 亚洲一区二区在线免费看| 日本精品免费观看高清观看| 亚洲欧美另类久久久精品2019| 不卡高清视频专区| 亚洲日穴在线视频| 91福利在线导航| 亚洲a一区二区| 日韩精品一区在线观看| 国产综合久久久久影院| 久久久久久久国产精品影院| 国产精品自拍毛片| 国产精品久久久久久久午夜片| 99久久免费国产| 亚洲一区二区视频| 欧美日韩在线观看一区二区 | 国产欧美精品一区aⅴ影院| 成人免费视频网站在线观看| 国产精品国产三级国产有无不卡 | 一区二区三区高清不卡| 欧美日韩一区精品| 精品一区二区在线播放| 国产欧美一区二区三区鸳鸯浴| 成人动漫在线一区| 亚洲最大成人网4388xx| 欧美高清www午色夜在线视频| 麻豆国产精品视频| 国产精品久久看| 欧美自拍偷拍一区| 久久国产剧场电影| 久久国产尿小便嘘嘘尿|