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

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

?? sega.c

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

  vidhrdw.c

  Generic functions used by the Sega Vector games

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

/*
 * History:
 *
 * 97???? Converted Al Kossow's G80 sources. LBO
 * 970807 Scaling support and dynamic sin/cos tables. ASG
 * 980124 Suport for antialiasing. .ac
 * 980203 cleaned up and interfaced to generic vector routines. BW
 *
 * TODO: use floating point math instead of fixed point.
 */

#include "driver.h"
#include "avgdvg.h"
#include "vector.h"
#include <math.h>

#define VEC_SHIFT 15	/* do not use a higher value. Values will overflow */
#ifndef PI
#define PI 3.14159265357989
#endif /* PI */

static int width, height, cent_x, cent_y, min_x, min_y, max_x, max_y;
static long *sinTable, *cosTable;
static int intensity;

void sega_generate_vector_list (void)
{
	int deltax, deltay;
	int currentX, currentY;

	int vectorIndex;
	int symbolIndex;

	int rotate, scale;
	int attrib;

	int angle, length;
	int color;

	int draw;

	vector_clear_list();

	symbolIndex = 0;	/* Reset vector PC to 0 */

	/*
	 * walk the symbol list until 'last symbol' set
	 */

	do {
		draw = vectorram[symbolIndex++];

		if (draw & 1)	/* if symbol active */
		{
			currentX    = vectorram[symbolIndex + 0] | (vectorram[symbolIndex + 1] << 8);
			currentY    = vectorram[symbolIndex + 2] | (vectorram[symbolIndex + 3] << 8);
			vectorIndex = vectorram[symbolIndex + 4] | (vectorram[symbolIndex + 5] << 8);
			rotate      = vectorram[symbolIndex + 6] | (vectorram[symbolIndex + 7] << 8);
			scale       = vectorram[symbolIndex + 8];

			currentX = ((currentX & 0x7ff) - min_x) << VEC_SHIFT;
			currentY = (max_y - (currentY & 0x7ff)) << VEC_SHIFT;
			vector_add_point ( currentX, currentY, 0, 0);
			vectorIndex &= 0xfff;

			/* walk the vector list until 'last vector' bit */
			/* is set in attributes */

			do
			{
				attrib = vectorram[vectorIndex + 0];
				length = vectorram[vectorIndex + 1];
				angle  = vectorram[vectorIndex + 2] | (vectorram[vectorIndex + 3] << 8);

				vectorIndex += 4;

				/* calculate deltas based on len, angle(s), and scale factor */

				angle = (angle + rotate) & 0x3ff;
				deltax = sinTable[angle] * scale * length;
				deltay = cosTable[angle] * scale * length;

				currentX += deltax >> 7;
				currentY -= deltay >> 7;

				color = attrib & 0x7e;
				if ((attrib & 1) && color)
				{
					if (translucency)
						intensity = 0xa0; /* leave room for translucency */
					else
						intensity = 0xff;
				}
				else
					intensity = 0;
				vector_add_point ( currentX, currentY, color, intensity );

			} while (!(attrib & 0x80));
		}

		symbolIndex += 9;
		if (symbolIndex >= vectorram_size)
			break;

	} while (!(draw & 0x80));
}
/***************************************************************************

  The Sega vector games don't have a color PROM, it uses RGB values for the
  vector guns.
  This routine sets up the color tables to simulate it.

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


void sega_init_colors (unsigned char *palette, unsigned short *colortable,const unsigned char *color_prom)
{
	int i,r,g,b;

	/* Bits are-> Red: 6&5 (0x60), Green: 4&3 (0x18), Blue: 2&1 (0x06) */
	for (i=0; i<128; i+=2)
	{
		palette[3*i  ] = 85 * ((i>>5)&0x3);
		palette[3*i+1] = 85 * ((i>>3)&0x3);
		palette[3*i+2] = 85 * ((i>>1)&0x3);
		/* Set the color table */
		colortable[i] = i;
	}
	/*
	 * Fill in the holes with good anti-aliasing colors.  This is a very good
	 * range of colors based on the previous palette entries.     .ac JAN2498
	 */
	i=1;
	for (r=0; r<=6; r++)
	{
		for (g=0; g<=6; g++)
		{
			for (b=0; b<=6; b++)
			{
				if (!((r|g|b)&0x1) ) continue;
				if ((g==5 || g==6) && (b==1 || b==2 || r==1 || r==2)) continue;
				if ((g==3 || g==4) && (b==1         || r==1        )) continue;
				if ((b==6 || r==6) && (g==1 || g==2                )) continue;
				if ((r==5)         && (b==1)                        ) continue;
				if ((b==5)         && (r==1)                        ) continue;
				palette[3*i  ] = (255*r) / 6;
				palette[3*i+1] = (255*g) / 6;
				palette[3*i+2] = (255*b) / 6;
				colortable[i]  = i;
				if (i < 128)
					i+=2;
				else
					i++;
			}
		}
	}
	/* There are still 4 colors left, just going to put some grays in. */
	for (i=252; i<=255; i++)
	{
		palette[3*i  ] =
		palette[3*i+1] =
		palette[3*i+2] = 107 + (42*(i-252));
	}
}

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

  Start the video hardware emulation.

***************************************************************************/
int sega_vh_start (void)
{
	int i;

	if (vectorram_size == 0)
		return 1;
	min_x =Machine->drv->visible_area.min_x;
	min_y =Machine->drv->visible_area.min_y;
	max_x =Machine->drv->visible_area.max_x;
	max_y =Machine->drv->visible_area.max_y;
	width =max_x-min_x;
	height=max_y-min_y;
	cent_x=(max_x+min_x)/2;
	cent_y=(max_y+min_y)/2;

	vector_set_shift (VEC_SHIFT);

	/* allocate memory for the sine and cosine lookup tables ASG 080697 */
	sinTable = malloc (0x400 * sizeof (long));
	if (!sinTable)
		return 1;
	cosTable = malloc (0x400 * sizeof (long));
	if (!cosTable)
	{
		free (sinTable);
		return 1;
	}

	/* generate the sine/cosine lookup tables */
	for (i = 0; i < 0x400; i++)
	{
		double angle = ((2. * PI) / (double)0x400) * (double)i;
		double temp;

		temp = sin (angle);
		if (temp < 0)
			sinTable[i] = (long)(temp * (double)(1 << VEC_SHIFT) - 0.5);
		else
			sinTable[i] = (long)(temp * (double)(1 << VEC_SHIFT) + 0.5);

		temp = cos (angle);
		if (temp < 0)
			cosTable[i] = (long)(temp * (double)(1 << VEC_SHIFT) - 0.5);
		else
			cosTable[i] = (long)(temp * (double)(1 << VEC_SHIFT) + 0.5);

	}

	return vector_vh_start();
}

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

  Stop the video hardware emulation.

***************************************************************************/
void sega_vh_stop (void)
{
	if (sinTable)
		free (sinTable);
	sinTable = NULL;
	if (cosTable)
		free (cosTable);
	cosTable = NULL;

	vector_vh_stop();
}

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

  Draw the game screen in the given osd_bitmap.
  Do NOT call osd_update_display() from this function, it will be called by
  the main emulation engine.

***************************************************************************/
void sega_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh)
{
	sega_generate_vector_list();
	vector_vh_update(bitmap,full_refresh);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美日韩国产手机在线 | 9191国产精品| 精品剧情v国产在线观看在线| 中文字幕一区二区在线播放| 日韩成人午夜精品| 99精品久久99久久久久| 日韩欧美色综合| 亚洲一区二区在线免费看| 国产suv一区二区三区88区| 日韩精品中午字幕| 亚洲一线二线三线久久久| 成人免费毛片嘿嘿连载视频| 日韩欧美在线观看一区二区三区| 亚洲激情六月丁香| 国产99久久久国产精品潘金| 久久尤物电影视频在线观看| 蜜臀精品一区二区三区在线观看 | 欧美色精品天天在线观看视频| 久久免费视频色| 日本不卡中文字幕| 欧美日韩精品一区二区三区蜜桃 | 麻豆免费精品视频| 欧美日韩一区三区四区| 亚洲综合色婷婷| 91在线看国产| 国产精品成人在线观看| 丁香激情综合国产| 日本一区二区三区四区| 国产美女精品人人做人人爽| 精品黑人一区二区三区久久 | 欧美高清视频不卡网| 国产精品久久久久久久岛一牛影视 | 色呦呦国产精品| 国产精品免费丝袜| 风流少妇一区二区| 国产欧美一区二区精品仙草咪| 精久久久久久久久久久| 久久亚洲综合av| 国产不卡高清在线观看视频| 中文在线一区二区| 波多野结衣精品在线| 亚洲色图第一区| 欧美午夜精品久久久久久超碰| 亚洲丰满少妇videoshd| 欧美肥胖老妇做爰| 青娱乐精品视频在线| 精品日韩欧美在线| 国产精品一区在线| 国产精品久久久一区麻豆最新章节| eeuss国产一区二区三区| 亚洲色图一区二区三区| 欧美日韩国产综合一区二区| 日韩精品亚洲专区| 久久一二三国产| 99精品欧美一区二区蜜桃免费| 伊人开心综合网| 欧美久久久一区| 国产一区视频网站| 中文字幕在线不卡视频| 欧美三片在线视频观看| 免费欧美高清视频| 中文久久乱码一区二区| 欧美偷拍一区二区| 激情成人综合网| 综合在线观看色| 欧美一区二区不卡视频| 国产成人在线电影| 亚洲男人的天堂一区二区| 欧美日韩国产高清一区| 国产一区二区三区国产| 亚洲自拍偷拍欧美| 亚洲精品一线二线三线无人区| 91亚洲午夜精品久久久久久| 秋霞午夜av一区二区三区| 中文av一区二区| 在线播放中文一区| www.66久久| 国内精品免费**视频| 亚洲欧美色图小说| 久久免费的精品国产v∧| 欧美少妇一区二区| 国产精品18久久久久| 一区二区成人在线| 久久久久久久久久久久久久久99 | 日韩视频在线一区二区| 99精品1区2区| 国产一区二区在线视频| 亚洲成人av电影在线| 国产精品毛片久久久久久| 91麻豆精品国产91久久久资源速度| eeuss鲁片一区二区三区| 久久国产精品色婷婷| 一区二区欧美视频| 日韩不卡一区二区| 亚洲欧美综合色| 国产性天天综合网| 日韩区在线观看| 在线观看av不卡| 一本一道久久a久久精品综合蜜臀 一本一道综合狠狠老 | 免费观看成人av| 亚洲午夜激情av| 亚洲免费毛片网站| 五月综合激情网| |精品福利一区二区三区| 久久毛片高清国产| 精品成人佐山爱一区二区| 在线成人免费视频| 欧美日本在线一区| 欧美日韩综合在线免费观看| 色综合咪咪久久| eeuss鲁一区二区三区| 国产成都精品91一区二区三 | 亚洲成人精品一区二区| 亚洲美女区一区| 亚洲精品高清在线观看| 成人免费视频在线观看| 国产精品免费丝袜| 中文字幕日韩一区二区| 国产精品久久久久aaaa| 国产精品成人免费在线| 一区在线观看视频| 亚洲人xxxx| 亚洲国产一区二区在线播放| 亚洲国产日韩av| 亚洲国产精品久久不卡毛片| 五月婷婷久久丁香| 视频一区在线播放| 久久91精品久久久久久秒播| 久久草av在线| 国产精品夜夜爽| 91蜜桃免费观看视频| 成人美女视频在线观看18| 福利一区二区在线| 91麻豆国产在线观看| 欧美日韩国产123区| 日韩限制级电影在线观看| 精品三级在线看| 久久色在线观看| 日韩美女视频一区| 肉丝袜脚交视频一区二区| 精品在线视频一区| 成人的网站免费观看| 欧美一a一片一级一片| 欧美电视剧在线观看完整版| 欧美国产视频在线| 亚洲电影视频在线| 国产成人综合在线观看| 91免费国产在线| 欧美一区二区在线视频| 精品久久久久久久久久久久久久久久久| 日韩欧美二区三区| 亚洲精品久久久蜜桃| 九色|91porny| 91福利国产精品| 2023国产精华国产精品| 亚洲色图在线看| 久久不见久久见中文字幕免费| www.66久久| 精品国产百合女同互慰| 亚洲精品中文字幕乱码三区| 日本不卡123| 99久免费精品视频在线观看 | 欧美a一区二区| 色综合天天视频在线观看| 欧美一区二区三区人| 国产精品对白交换视频| 精品影视av免费| 91麻豆6部合集magnet| 久久久久久久网| 青青草国产成人av片免费 | 国产99精品国产| 欧美日韩在线电影| 国产精品久久久久三级| 日本人妖一区二区| 色香蕉久久蜜桃| 久久精品人人做人人综合| 亚洲成人资源在线| 一道本成人在线| 国产精品第13页| 成人三级在线视频| 日韩欧美一级二级| 视频精品一区二区| 91小视频在线免费看| 国产欧美日韩中文久久| 久久99精品国产麻豆不卡| 欧美日韩在线直播| 高潮精品一区videoshd| 精品久久久久久久一区二区蜜臀| 婷婷六月综合网| 欧美午夜片在线观看| 亚洲免费观看高清完整版在线| 国产98色在线|日韩| 国产午夜精品一区二区| 国产中文字幕精品| 精品久久一区二区| 美女一区二区视频| 欧美成人在线直播| 激情五月播播久久久精品| 精品国产乱码久久久久久免费| 日韩激情一区二区|