⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 draw.c

📁 DC的SEGA_GG模拟器源代码
💻 C
字号:
#include "dream.h"#define PI 3.14159265358979;void clear_screen(int rgb){	int i;	for (i=0; i< vram_size + 640; i++)		vram_s[i] = rgb;}void put_pixel(int x, int y, int rgb){	vram_s[y*640+x] = rgb;}



//mine

void put_pixel_3(int x, int y, int r, int g, int b)
{
	vram_s[y*640+x] = ((r >> 3) << 11)
	         	| ((g >> 2) << 5)
			| ((b >> 3) << 0);
}


int rgb_combine(int r, int g, int b){	return ((r >> 3) << 11)
	         	| ((g >> 2) << 5)
			| ((b >> 3) << 0);}
//end mine

int get_pixel(int x, int y){	return vram_s[y*640+x];}int abs(int value){	return value < 0 ? -value : value;}int sign(int value){	return value < 0 ? -1 : 1;}void line(int x1, int y1, int x2, int y2, int rgb){   int d, x, y, ax, ay, sx, sy, dx, dy;   dx = x2-x1;   ax = abs(dx) << 1;   sx = sign(dx);   dy = y2-y1;   ay = abs(dy) << 1;   sy = sign(dy);   x = x1;   y = y1;   if( ax > ay )   {      d = ay - (ax >> 1);      while( x != x2 )      {         put_pixel(x, y, rgb);         if( d >= 0 )         {            y += sy;            d -= ax;         }         x += sx;         d += ay;      }   }   else   {      d = ax - (ay >> 1);      while( y != y2 )      {         put_pixel(x, y, rgb);         if( d >= 0 )         {            x += sx;            d -= ay;         }         y += sy;         d += ax;      }   }}void filled_square(int x, int y, int width, int color){	int i,j;	for (i = y - width; i < y + width; i++) {		for (j = x - width; j < x + width; j++) {			vram_s[i*640+j] = color;		}	}}void square(int x, int y, int width, int color){	line (x - width/2 ,y - width/2, x + width/2, y - width/2,color);	line (x - width/2, y + width/2, x + width/2, y + width/2,color);	line (x - width/2, y - width/2, x - width/2, y + width/2,color);	line (x + width/2, y - width/2, x + width/2, y + width/2,color);}void circle(int x, int y, int radius, int d){   int cx = 0;   int cy = radius;   int df = 1 - radius;   int d_e = 3;   int d_se = -2 * radius + 5;   do {      put_pixel(x+cx, y+cy, d);      if (cx)	 put_pixel(x-cx, y+cy, d);      if (cy)	 put_pixel(x+cx, y-cy, d);      if ((cx) && (cy))	 put_pixel(x-cx, y-cy, d);      if (cx != cy) {	 put_pixel(x+cy, y+cx, d);	 if (cx)	    put_pixel(x+cy, y-cx, d);	 if (cy)	    put_pixel(x-cy, y+cx, d);	 if (cx && cy)	    put_pixel(x-cy, y-cx, d);      }      if (df < 0)  {	 df += d_e;	 d_e += 2;	 d_se += 2;      }      else {	 df += d_se;	 d_e += 2;	 d_se += 4;	 cy--;      }      cx++;   } while (cx <= cy);}void circle_fill(int x, int y, int radius, int color){   int cx = 0;   int cy = radius;   int df = 1 - radius;   int d_e = 3;   int d_se = -2 * radius + 5;   do {      line(x-cy, y-cx, x+cy, y-cx, color);      if (cx)	 line(x-cy, y+cx, x+cy, y+cx, color);      if (df < 0)  {	 df += d_e;	 d_e += 2;	 d_se += 2;      }      else {	 if (cx != cy) {	    line(x-cx, y-cy, x+cx, y-cy, color);	    if (cy)	       line(x-cx, y+cy, x+cx, y+cy, color);	 }	 df += d_se;	 d_e += 2;	 d_se += 4;	 cy--;      }      cx++;   } while (cx <= cy);}void rect (int x1, int y1, int x2, int y2, int rgb){	line(x1,y1,x1,y2,rgb);	line(x1,y2,x2,y2,rgb);	line(x2,y2,x2,y1,rgb);	line(x2,y1,x1,y1,rgb);}void rect_fill (int x1, int y1, int x2, int y2, int rgb){	int i,j;	for (i = y1; i <= y2; i++)	{		for (j = x1; j <= x2; j++)		{			vram_s[i*640+j] = rgb;		}	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -