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

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

?? sdl_driver.c

?? 小型游戲引擎
?? C
?? 第 1 頁 / 共 4 頁
字號:
int VBE_getPalette(long start, long num, char *palettebuffer){    SDL_Color *sdlp = surface->format->palette->colors + start;    char *p = palettebuffer + (start * 4);    int i;    for (i = 0; i < num; i++)    {        *p++ = (Uint8) ((((float) sdlp->b) / 255.0) * 63.0);        *p++ = (Uint8) ((((float) sdlp->g) / 255.0) * 63.0);        *p++ = (Uint8) ((((float) sdlp->r) / 255.0) * 63.0);        *p++ = sdlp->unused;   /* This byte is unused in both SDL and BUILD. */        sdlp++;    } /* for */    return(1);} /* VBE_getPalette */void _uninitengine(void){   SDL_QuitSubSystem(SDL_INIT_VIDEO);} /* _uninitengine */void uninitvesa(void){   SDL_QuitSubSystem(SDL_INIT_VIDEO);} /* uninitvesa */int setupmouse(void){    SDL_GrabMode mode = SDL_GRAB_OFF;    if (surface == NULL)        return(0);    if (mouse_grabbed)        mode = SDL_GRAB_ON;    SDL_WM_GrabInput(mode);    SDL_ShowCursor(0);    mouse_x = surface->w / 2;    mouse_y = surface->h / 2;    mouse_relative_x = mouse_relative_y = 0;        /*         * this global usually gets set by BUILD, but it's a one-shot         *  deal, and we may not have an SDL surface at that point. --ryan.         */    moustat = 1;    return(1);} /* setupmouse */void readmousexy(short *x, short *y){    if (x) *x = mouse_relative_x << 2;    if (y) *y = mouse_relative_y << 2;    mouse_relative_x = mouse_relative_y = 0;} /* readmousexy */void readmousebstatus(short *bstatus){    if (bstatus)        *bstatus = mouse_buttons;} /* readmousebstatus */static unsigned char mirrorcolor = 0;void _updateScreenRect(long x, long y, long w, long h){    if (renderer == RENDERER_SOFTWARE)        SDL_UpdateRect(surface, x, y, w, h);} /* _updatescreenrect */void _nextpage(void){    Uint32 ticks;    handle_events();    if (renderer == RENDERER_SOFTWARE)    {        if (qsetmode == 200)            memcpy(surface->pixels, (const void *) frameplace, surface->w * surface->h);        SDL_UpdateRect(surface, 0, 0, 0, 0);        /*SDL_Flip(surface);  !!! */    } /* if */#ifdef USE_OPENGL    else if (renderer == RENDERER_OPENGL3D)    {        opengl_swapbuffers();    } /* else if */#endif    if ((debug_hall_of_mirrors) && (qsetmode == 200) && (frameplace))    {        memset((void *) frameplace, mirrorcolor, surface->w * surface->h);        mirrorcolor++;    } /* if */    ticks = SDL_GetTicks();    total_render_time = (ticks - last_render_ticks);    if (total_render_time > 1000)    {        total_rendered_frames = 0;        total_render_time = 1;        last_render_ticks = ticks;    } /* if */    total_rendered_frames++;} /* _nextpage */unsigned char readpixel(long offset){    return( *((unsigned char *) offset) );} /* readpixel */void drawpixel(long offset, Uint8 pixel){    *((unsigned char *) offset) = pixel;} /* drawpixel *//* !!! These are incorrect. */void drawpixels(long offset, Uint16 pixels){    Uint8 *surface_end;    Uint16 *pos;                printf("Blargh!\n");                exit(91);    if (SDL_MUSTLOCK(surface))        SDL_LockSurface(surface);    surface_end = (((Uint8 *) surface->pixels) + (surface->w * surface->h)) - 2;    pos = (Uint16 *) (((Uint8 *) surface->pixels) + offset);    if ((pos >= (Uint16 *) surface->pixels) && (pos < (Uint16 *) surface_end))        *pos = pixels;    if (SDL_MUSTLOCK(surface))        SDL_UnlockSurface(surface);} /* drawpixels */void drawpixelses(long offset, Uint32 pixelses){    Uint8 *surface_end;    Uint32 *pos;                printf("Blargh!\n");                exit(91);    if (SDL_MUSTLOCK(surface))        SDL_LockSurface(surface);    surface_end = (((Uint8 *)surface->pixels) + (surface->w * surface->h)) - 2;    pos = (Uint32 *) (((Uint8 *) surface->pixels) + offset);    if ((pos >= (Uint32 *) surface->pixels) && (pos < (Uint32 *) surface_end))        *pos = pixelses;    if (SDL_MUSTLOCK(surface))        SDL_UnlockSurface(surface);} /* drawpixelses *//* Fix this up The Right Way (TM) - DDOI */void setcolor16(int col){	drawpixel_color = col;}void drawpixel16(long offset){    drawpixel(((long) surface->pixels + offset), drawpixel_color);} /* drawpixel16 */void fillscreen16(long offset, long color, long blocksize){    Uint8 *surface_end;    Uint8 *wanted_end;    Uint8 *pixels;#if (defined USE_OPENGL)    if (renderer == RENDERER_OPENGL3D)    {        /* !!! dglClearColor() ... */        return;    } /* if */#endif    if (SDL_MUSTLOCK(surface))        SDL_LockSurface(surface);    pixels = get_framebuffer();    /* Make this function pageoffset aware - DDOI */    if (!pageoffset) { 	    offset = offset << 3;	    offset += 640*336;    }    surface_end = (pixels + (surface->w * surface->h)) - 1;    wanted_end = (pixels + offset) + blocksize;    if (offset < 0)        offset = 0;    if (wanted_end > surface_end)        blocksize = ((unsigned long) surface_end) - ((unsigned long) pixels + offset);    memset(pixels + offset, (int) color, blocksize);    if (SDL_MUSTLOCK(surface))        SDL_UnlockSurface(surface);    _nextpage();} /* fillscreen16 *//* Most of this line code is taken from Abrash's "Graphics Programming Blackbook".Remember, sharing code is A Good Thing. AH */inline void DrawHorizontalRun (char **ScreenPtr, int XAdvance, int RunLength, char Color){    int i;    char *WorkingScreenPtr = *ScreenPtr;    for (i=0; i<RunLength; i++)    {        *WorkingScreenPtr = Color;        WorkingScreenPtr += XAdvance;    }    WorkingScreenPtr += surface->w;    *ScreenPtr = WorkingScreenPtr;}inline void DrawVerticalRun (char **ScreenPtr, int XAdvance, int RunLength, char Color){    int i;    char *WorkingScreenPtr = *ScreenPtr;    for (i=0; i<RunLength; i++)    {      	*WorkingScreenPtr = Color;    	WorkingScreenPtr += surface->w;    }    WorkingScreenPtr += XAdvance;    *ScreenPtr = WorkingScreenPtr;}void drawline16(long XStart, long YStart, long XEnd, long YEnd, char Color){    int Temp, AdjUp, AdjDown, ErrorTerm, XAdvance, XDelta, YDelta;    int WholeStep, InitialPixelCount, FinalPixelCount, i, RunLength;    char *ScreenPtr;    long dx, dy;    if (SDL_MUSTLOCK(surface))        SDL_LockSurface(surface);	dx = XEnd-XStart; dy = YEnd-YStart;	if (dx >= 0)	{		if ((XStart > 639) || (XEnd < 0)) return;		if (XStart < 0) { if (dy) YStart += scale(0-XStart,dy,dx); XStart = 0; }		if (XEnd > 639) { if (dy) YEnd += scale(639-XEnd,dy,dx); XEnd = 639; }	}	else	{		if ((XEnd > 639) || (XStart < 0)) return;		if (XEnd < 0) { if (dy) YEnd += scale(0-XEnd,dy,dx); XEnd = 0; }		if (XStart > 639) { if (dy) YStart += scale(639-XStart,dy,dx); XStart = 639; }	}	if (dy >= 0)	{		if ((YStart >= ydim16) || (YEnd < 0)) return;		if (YStart < 0) { if (dx) XStart += scale(0-YStart,dx,dy); YStart = 0; }		if (YEnd >= ydim16) { if (dx) XEnd += scale(ydim16-1-YEnd,dx,dy); YEnd = ydim16-1; }	}	else	{		if ((YEnd >= ydim16) || (YStart < 0)) return;		if (YEnd < 0) { if (dx) XEnd += scale(0-YEnd,dx,dy); YEnd = 0; }		if (YStart >= ydim16) { if (dx) XStart += scale(ydim16-1-YStart,dx,dy); YStart = ydim16-1; }	}	/* Make sure the status bar border draws correctly - DDOI */	if (!pageoffset) { YStart += 336; YEnd += 336; }    /* We'll always draw top to bottom */    if (YStart > YEnd) {        Temp = YStart;        YStart = YEnd;        YEnd = Temp;        Temp = XStart;        XStart = XEnd;        XEnd = Temp;    }    /* Point to the bitmap address first pixel to draw */    ScreenPtr = (char *) (get_framebuffer()) + XStart + (surface->w * YStart);    /* Figure out whether we're going left or right, and how far we're going horizontally */    if ((XDelta = XEnd - XStart) < 0)    {        XAdvance = (-1);        XDelta = -XDelta;    } else {        XAdvance = 1;    }    /* Figure out how far we're going vertically */    YDelta = YEnd - YStart;    /* Special cases: Horizontal, vertical, and diagonal lines */    if (XDelta == 0)    {        for (i=0; i <= YDelta; i++)        {            *ScreenPtr = Color;            ScreenPtr += surface->w;        }        UNLOCK_SURFACE_AND_RETURN;    }    if (YDelta == 0)    {    	for (i=0; i <= XDelta; i++)    	{      	    *ScreenPtr = Color;    	    ScreenPtr += XAdvance;    	}        UNLOCK_SURFACE_AND_RETURN;    }    if (XDelta == YDelta)    {    	for (i=0; i <= XDelta; i++)        {            *ScreenPtr = Color;            ScreenPtr += XAdvance + surface->w;        }        UNLOCK_SURFACE_AND_RETURN;    }    /* Determine whether the line is X or Y major, and handle accordingly */    if (XDelta >= YDelta) /* X major line */    {        WholeStep = XDelta / YDelta;        AdjUp = (XDelta % YDelta) * 2;        AdjDown = YDelta * 2;        ErrorTerm = (XDelta % YDelta) - (YDelta * 2);        InitialPixelCount = (WholeStep / 2) + 1;        FinalPixelCount = InitialPixelCount;        if ((AdjUp == 0) && ((WholeStep & 0x01) == 0)) InitialPixelCount--;        if ((WholeStep & 0x01) != 0) ErrorTerm += YDelta;        DrawHorizontalRun(&ScreenPtr, XAdvance, InitialPixelCount, Color);        for (i=0; i<(YDelta-1); i++)        {            RunLength = WholeStep;            if ((ErrorTerm += AdjUp) > 0)            {        	RunLength ++;        	ErrorTerm -= AdjDown;            }            DrawHorizontalRun(&ScreenPtr, XAdvance, RunLength, Color);         }         DrawHorizontalRun(&ScreenPtr, XAdvance, FinalPixelCount, Color);         UNLOCK_SURFACE_AND_RETURN;    } else {	/* Y major line */    	WholeStep = YDelta / XDelta;    	AdjUp = (YDelta % XDelta) * 2;    	AdjDown = XDelta * 2;        ErrorTerm = (YDelta % XDelta) - (XDelta * 2);        InitialPixelCount = (WholeStep / 2) + 1;        FinalPixelCount = InitialPixelCount;        if ((AdjUp == 0) && ((WholeStep & 0x01) == 0)) InitialPixelCount --;        if ((WholeStep & 0x01) != 0) ErrorTerm += XDelta;        DrawVerticalRun(&ScreenPtr, XAdvance, InitialPixelCount, Color);        for (i=0; i<(XDelta-1); i++)        {            RunLength = WholeStep;            if ((ErrorTerm += AdjUp) > 0)            {            	RunLength ++;            	ErrorTerm -= AdjDown;            }            DrawVerticalRun(&ScreenPtr, XAdvance, RunLength, Color);        }        DrawVerticalRun(&ScreenPtr, XAdvance, FinalPixelCount, Color);        UNLOCK_SURFACE_AND_RETURN;     }} /* drawline16 */void clear2dscreen(void){    SDL_Rect rect;    rect.x = rect.y = 0;    rect.w = surface->w;	if (qsetmode == 350)        rect.h = 350;	else if (qsetmode == 480)	{		if (ydim16 <= 336)            rect.h = 336;        else            rect.h = 480;	} /* else if */    SDL_FillRect(surface, &rect, 0);} /* clear2dscreen */void _idle(void){    handle_events();    SDL_Delay(1);} /* _idle */void *_getVideoBase(void){    return((void *) surface->pixels);}void setactivepage(long dapagenum){	/* !!! Is this really still needed? - DDOI */    /*fprintf(stderr, "%s, line %d; setactivepage(): STUB.\n", __FILE__, __LINE__);*/} /* setactivepage */void limitrate(void){    /* this is a no-op in SDL. It was for buggy VGA cards in DOS. */} /* limitrate */Uint32 _timer_catcher(Uint32 interval, void *bleh){    timerhandler();    return(1);} /* _timer_catcher */void inittimer(void){    SDL_ClearError();    primary_timer = SDL_AddTimer(1000 / PLATFORM_TIMER_HZ, _timer_catcher, NULL);    if (primary_timer == NULL)    {        fprintf(stderr, "BUILDSDL: -ERROR- Problem initializing primary timer!\n");        fprintf(stderr, "BUILDSDL:  Reason: [%s]\n", SDL_GetError());        SDL_Quit();        exit(2);    } /* if */}void uninittimer(void){    if (primary_timer != NULL)    {        SDL_RemoveTimer(primary_timer);        primary_timer = NULL;    } /* if */}void initkeys(void){    /* does nothing in SDL. Key input handling is set up elsewhere. */    /* !!! why not here? */}void uninitkeys(void){    /* does nothing in SDL. Key input handling is set up elsewhere. */}void set16color_palette(void){	/* Backup old palette */	/*VBE_getPalette (0, 16, (char *)&backup_palette);*/	memcpy (&backup_palette, &palette, 16*3);	/* Set new palette */	/*VBE_setPalette (0, 16, (char *)&egapalette);*/	memcpy (&palette, &egapalette, 16*3);	in_egapalette = 1;} /* set16color_palette */void restore256_palette(void){	/*VBE_setPalette (0, 16, (char *)&backup_palette);*/	memcpy (&palette, &backup_palette, 16*3);	in_egapalette = 0;} /* restore256_palette */unsigned long getticks(void){    return(SDL_GetTicks());} /* getticks *//* end of sdl_driver.c ... */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产不卡高清在线观看视频| 欧美一区二区三区日韩视频| 91.成人天堂一区| 国产精品婷婷午夜在线观看| 青青草91视频| 欧美唯美清纯偷拍| 国产日韩精品一区二区三区在线| 亚洲尤物视频在线| 国产精品影视在线观看| 3d成人动漫网站| 综合色天天鬼久久鬼色| 国内久久精品视频| 欧美精品欧美精品系列| 亚洲免费观看视频| 成人福利在线看| 久久久不卡网国产精品二区| 青青国产91久久久久久| 在线观看视频91| 亚洲码国产岛国毛片在线| 成人一区二区在线观看| 精品国产乱码久久久久久夜甘婷婷| 亚洲午夜久久久久久久久电影院 | 麻豆久久久久久| 在线观看不卡视频| 一区二区三区中文字幕| 色一情一乱一乱一91av| 国产精品久久久久久福利一牛影视 | 99九九99九九九视频精品| 欧美高清在线一区二区| 国产成人亚洲综合a∨婷婷 | 风间由美一区二区三区在线观看| 精品国产免费人成在线观看| 麻豆精品一区二区三区| 日韩美女在线视频| 久久精品国产精品亚洲精品| 精品av综合导航| 国产一区福利在线| 久久久久久久久久久久久女国产乱 | 轻轻草成人在线| 精品国产三级a在线观看| 精久久久久久久久久久| 久久久亚洲综合| 成人免费视频一区| 亚洲少妇中出一区| 欧美理论电影在线| 免费视频最近日韩| 国产午夜精品一区二区| 成人高清伦理免费影院在线观看| 亚洲乱码国产乱码精品精小说| 色婷婷久久久综合中文字幕| 亚洲第一久久影院| 久久久久久毛片| 99免费精品在线观看| 亚洲国产乱码最新视频 | 亚洲人午夜精品天堂一二香蕉| 在线观看一区日韩| 麻豆国产欧美一区二区三区| 亚洲国产精品高清| 91国偷自产一区二区三区观看| 天堂在线亚洲视频| 国产女人水真多18毛片18精品视频| 91在线一区二区三区| 婷婷夜色潮精品综合在线| 国产日韩欧美精品在线| 欧美精品v日韩精品v韩国精品v| 国模少妇一区二区三区| 一区二区成人在线| 26uuu欧美| 欧美日韩二区三区| 成人免费看的视频| 美女一区二区三区| 日韩一区欧美一区| 精品区一区二区| 欧美最猛性xxxxx直播| 国产成人午夜片在线观看高清观看| 亚洲欧美日韩一区二区三区在线观看| 欧美一级国产精品| 99久久精品费精品国产一区二区| 免费精品视频在线| 亚洲一区二区在线免费观看视频| 久久久电影一区二区三区| 欧美日韩视频在线一区二区| 成人av动漫网站| 精品一二三四区| 五月激情丁香一区二区三区| 中文字幕在线视频一区| 久久一区二区三区四区| 欧美日高清视频| 色婷婷av久久久久久久| 成人精品视频一区二区三区| 美女精品自拍一二三四| 五月综合激情日本mⅴ| 亚洲欧洲精品一区二区精品久久久| 精品国产乱码久久久久久浪潮 | 国产精品午夜在线观看| 91精品国产91热久久久做人人| 91浏览器打开| 成人av网站在线观看免费| 激情六月婷婷久久| 青青青爽久久午夜综合久久午夜| 亚洲第四色夜色| 亚洲男同性视频| 中文幕一区二区三区久久蜜桃| 亚洲精品在线网站| 日韩天堂在线观看| 3atv一区二区三区| 91精品中文字幕一区二区三区| 欧美中文字幕一区| 欧美日韩在线电影| 欧美日韩中文另类| 欧美美女喷水视频| 欧美日韩色综合| 欧美区在线观看| 欧美日韩亚洲高清一区二区| 欧美日韩一本到| 欧美日韩一区小说| 7777精品伊人久久久大香线蕉| 欧美嫩在线观看| 欧美一区二区视频在线观看 | 亚洲美女屁股眼交| 一区二区三区久久久| 亚洲sss视频在线视频| 人人狠狠综合久久亚洲| 精品系列免费在线观看| 国产精品亚洲综合一区在线观看| 懂色av一区二区夜夜嗨| 9人人澡人人爽人人精品| 91麻豆蜜桃一区二区三区| 91久久精品国产91性色tv| 欧美精品成人一区二区三区四区| 日韩一区二区精品葵司在线| 日韩欧美国产一区在线观看| 久久精品视频一区| 国产精品久久久久久久久免费樱桃 | 色94色欧美sute亚洲线路一久| 在线观看免费视频综合| 91麻豆精品91久久久久同性| 精品久久久影院| 成人免费在线视频观看| 午夜精品一区二区三区电影天堂 | 在线观看av不卡| 日韩片之四级片| 亚洲国产岛国毛片在线| 亚洲午夜一二三区视频| 九九精品视频在线看| 成人黄色av电影| 欧美精品三级在线观看| 久久久99精品久久| 亚洲自拍偷拍av| 国产在线视频一区二区| 91啪九色porn原创视频在线观看| 3d动漫精品啪啪一区二区竹菊 | www..com久久爱| 欧美精品久久一区二区三区| 久久精品一二三| 亚洲成人免费在线观看| 国产一区二区三区综合| 在线欧美一区二区| 久久精品视频网| 午夜精彩视频在线观看不卡| 成人爽a毛片一区二区免费| 欧美区一区二区三区| 国产精品久久影院| 五月激情综合婷婷| 色呦呦一区二区三区| 精品久久久久久久一区二区蜜臀| 亚洲男帅同性gay1069| 久久激五月天综合精品| 精品视频1区2区3区| 中文字幕av一区二区三区高| 日韩avvvv在线播放| 色偷偷久久一区二区三区| 久久天堂av综合合色蜜桃网| 亚洲成a人v欧美综合天堂| youjizz国产精品| 26uuu亚洲综合色| 免费观看91视频大全| 欧美日韩中文字幕精品| 亚洲天堂精品视频| 成人app网站| 国产精品美女一区二区三区 | 国内精品第一页| 日韩一区二区电影网| 亚洲风情在线资源站| 91丝袜美女网| 亚洲少妇最新在线视频| 高清在线观看日韩| 久久午夜电影网| 国产一区二区三区在线观看免费| 欧美日本乱大交xxxxx| 亚洲成人动漫在线观看| 色噜噜狠狠色综合中国| 亚洲黄色小说网站| 91首页免费视频| 亚洲日本电影在线| 91丝袜美女网| 亚洲午夜私人影院| 欧美日韩精品专区| 日本视频一区二区三区| 欧美一区二视频|