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

📄 i_video_3dfx.c

📁 The source code of Doom legacy for windows
💻 C
📖 第 1 页 / 共 2 页
字号:
                i = I_GetTime();                tics = i - lasttic;                lasttic = i;                if (tics > 20)                tics = 20;                for (i=0 ; i<tics*2 ; i+=2)                        screens[0][ (SCREENHEIGHT-2)*SCREENWIDTH + i + 3] = 0xff;                for ( ; i<20*2 ; i+=2)                        screens[0][ (SCREENHEIGHT-2)*SCREENWIDTH + i + 3] = 0x0;        }#ifdef RENDER_LFB        /* convert the engine rendered image to RGB image, double size */        y = SCREENHEIGHT-1;        do {                x = SCREENWIDTH-1;                do {                        pixel = colors[*src++];                        *dst1++ = pixel;                        *dst1++ = pixel;                        *dst2++ = pixel;                        *dst2++ = pixel;                } while (x--);                dst1 += step;                dst2 += step;        } while (y--);        /* write image into back buffer */        grLfbWriteRegion(GR_BUFFER_BACKBUFFER, 0, 0, FRAMEBUFFER_FORMAT,                DFX_WIDTH, DFX_HEIGHT, DFX_WIDTH*BPP, &image[0]);#else        /* convert every pixel to a vertex and draw anti-aliased vertices */        grBufferClear(0, 0, GR_ZDEPTHVALUE_FARTHEST);        for (y=0; y<SCREENHEIGHT; y++) {                for (x=0; x<SCREENWIDTH; x++) {                        vertex.x = (float)(x*2+1);                        vertex.y = (float)(y*2+1);                        vertex.r = colors[0][*src];                        vertex.g = colors[1][*src];                        vertex.b = colors[2][*src];                        grAADrawPoint(&vertex);                        src++;                }        }#endif        /* swap buffers and make new frame visible */        grBufferSwap(1);}void I_UpdateNoBlit(void){        /* empty */}void I_ReadScreen(byte *scr){        memcpy (scr, screens[0], SCREENWIDTH*SCREENHEIGHT);}void I_SetPalette(RGBA_t *palette){        register int    i;#ifdef RENDER_LFB        /* build LUT with 16 or 32bit RGB colors for palette */        for (i=0; i<256; i++,palette++) {#if (FRAMEBUFFER_FORMAT == GR_LFB_SRC_FMT_888)                colors[i] = (palette->s.red<<16) |                            (palette->s.green<<8) |                            (palette->s.blue);#else                colors[i] = ((palette->s.red>>3)<<10) |                            ((palette->s.green>>3)<<5) |                             (palette->s.blue>>3);#endif        }#else        /* built color table for vertices */        for (i=0; i<256; i++,palette++) {             colors[0][i] = (float) palette->s.red;             colors[1][i] = (float) palette->s.green;             colors[2][i] = (float) palette->s.blue;        }#endif}void I_OsPolling (void){        keyboard_events();}void I_StartFrame(void){        /* frame syncronous IO operations not needed for 3DFX */}/* ------------------------------------------------------------------------ *//*                              keyboard event handling                                                                         *//* ------------------------------------------------------------------------ */static void keyboard_events(void){        unsigned char           c;        event_t                         event;        if (read(fileno(stdin), &c, 1) == 1) {                event.type = (c & 0x80) ? ev_keyup : ev_keydown;                event.data1 = xlatekey((int)(c & 0x7F));                D_PostEvent(&event);        }}static int xlatekey(int c){        int rc;        switch (c) {        case 1:         rc = KEY_ESCAPE;                                break;        case 2:         rc = '1';                                               break;        case 3:         rc = '2';                                               break;        case 4:         rc = '3';                                               break;        case 5:         rc = '4';                                               break;        case 6:         rc = '5';                                               break;        case 7:         rc = '6';                                               break;        case 8:         rc = '7';                                               break;        case 9:         rc = '8';                                               break;        case 10:        rc = '9';                                               break;        case 11:        rc = '0';                                               break;        case 12:        rc = KEY_MINUS;                                 break;        case 13:        rc = KEY_EQUALS;                                break;        case 14:        rc = KEY_BACKSPACE;                             break;        case 15:        rc = KEY_TAB;                                   break;        case 16:        rc = 'q';                                               break;        case 17:        rc = 'w';                                               break;        case 18:        rc = 'e';                                               break;        case 19:        rc = 'r';                                               break;        case 20:        rc = 't';                                               break;        case 21:        rc = 'y';                                               break;        case 22:        rc = 'u';                                               break;        case 23:        rc = 'i';                                               break;        case 24:        rc = 'o';                                               break;        case 25:        rc = 'p';                                               break;        case 28:        rc = KEY_ENTER;                                 break;        case 29:        rc = KEY_RCTRL;                                 break;        case 30:        rc = 'a';                                               break;        case 31:        rc = 's';                                               break;        case 32:        rc = 'd';                                               break;        case 33:        rc = 'f';                                               break;        case 34:        rc = 'g';                                               break;        case 35:        rc = 'h';                                               break;        case 36:        rc = 'j';                                               break;        case 37:        rc = 'k';                                               break;        case 38:        rc = 'l';                                               break;        case 41:        rc = '`';                                               break;        case 42:        rc = KEY_RSHIFT;                                break;        case 44:        rc = 'z';                                               break;        case 45:        rc = 'x';                                               break;        case 46:        rc = 'c';                                               break;        case 47:        rc = 'v';                                               break;        case 48:        rc = 'b';                                               break;        case 49:        rc = 'n';                                               break;        case 50:        rc = 'm';                                               break;        case 54:        rc = KEY_RSHIFT;                                break;        case 56:        rc = KEY_RALT;                                  break;        case 57:        rc = ' ';                                               break;        case 58:        rc = KEY_CAPSLOCK;                              break;        case 59:        rc = KEY_F1;                                    break;        case 60:        rc = KEY_F2;                                    break;        case 61:        rc = KEY_F3;                                    break;        case 62:        rc = KEY_F4;                                    break;        case 63:        rc = KEY_F5;                                    break;        case 64:        rc = KEY_F6;                                    break;        case 65:        rc = KEY_F7;                                    break;        case 66:        rc = KEY_F8;                                    break;        case 67:        rc = KEY_F9;                                    break;        case 68:        rc = KEY_F10;                                   break;        case 74:        rc = KEY_MINUS;                                 break;        case 78:        rc = KEY_EQUALS;                                break;        case 86:        rc = '<';                                               break;        case 87:        rc = KEY_F11;                                   break;        case 88:        rc = KEY_F12;                                   break;        case 97:        rc = KEY_RCTRL;                                 break;        case 100:       rc = KEY_RALT;                                  break;        case 72:        case 103:       rc = KEY_UPARROW;                               break;        case 75:        case 105:       rc = KEY_LEFTARROW;                             break;        case 77:        case 106:       rc = KEY_RIGHTARROW;                    break;        case 80:        case 108:       rc = KEY_DOWNARROW;                             break;        case 111:       rc = KEY_BACKSPACE;                             break;        case 119:       rc = KEY_PAUSE;                                 break;        default:        rc = 0;                                                 break;        }        return rc;}

⌨️ 快捷键说明

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