void I_InitGraphics(void) { int i; // make sure that signals bring us back into text mode signal(SIGINT, (void(*)(int))I_Quit); signal(SIGQUIT, (void(*)(int))I_Quit); signal(SIGHUP, (void(*)(int))I_Quit); signal(SIGTERM, (void(*)(int))I_Quit); // init VGA card if (vga_init() != 0) I_Error("Could not initialize graphics console\n"); if (vga_setmode(G320x200x256) != 0) I_Error("Could not switch to graphics mode\n"); // init keyboard keyboard_init(); keyboard_seteventhandler(keyboard_events); // init mouse if (usemouse) { mouse_type = MOUSE_NONE; for (i = 0; mousetypes[i].name != NULL; i++) { if (!strcmp(mousetype, mousetypes[i].name)) mouse_type = mousetypes[i].type; } mouse_init(mousedev, mouse_type, MOUSE_DEFAULTSAMPLERATE); mouse_setxrange(0, SCREENWIDTH - 1); mouse_setyrange(0, SCREENHEIGHT - 1); mouse_setwrap(MOUSE_NOWRAP); mouse_seteventhandler(mouse_events); } #ifdef USE_JOYSTICK // init joystick if (usejoystick) I_InitJoystick(); #endif }
void RW_IN_Init(in_state_t *in_state_p) { int mtype; int i; in_state = in_state_p; // mouse variables m_filter = ri.Cvar_Get ("m_filter", "0", 0); in_mouse = ri.Cvar_Get ("in_mouse", "1", CVAR_ARCHIVE); freelook = ri.Cvar_Get( "freelook", "0", 0 ); lookstrafe = ri.Cvar_Get ("lookstrafe", "0", 0); sensitivity = ri.Cvar_Get ("sensitivity", "3", 0); m_pitch = ri.Cvar_Get ("m_pitch", "0.022", 0); m_yaw = ri.Cvar_Get ("m_yaw", "0.022", 0); m_forward = ri.Cvar_Get ("m_forward", "1", 0); m_side = ri.Cvar_Get ("m_side", "0.8", 0); ri.Cmd_AddCommand ("+mlook", RW_IN_MLookDown); ri.Cmd_AddCommand ("-mlook", RW_IN_MLookUp); ri.Cmd_AddCommand ("force_centerview", Force_CenterView_f); mouse_buttons = 3; mtype = vga_getmousetype(); mdev = ri.Cvar_Get ("mdev", "/dev/mouse", 0); mrate = ri.Cvar_Get ("mrate", "1200", 0); // printf("Mouse: dev=%s,type=%s,speed=%d\n", // mousedev, mice[mtype].name, mouserate); if (mouse_init(mdev->string, mtype, (int)mrate->value)) { ri.Con_Printf(PRINT_ALL, "No mouse found\n"); UseMouse = false; } else mouse_seteventhandler(mousehandler); }
static void IN_init_mouse ( void ) { int mtype; char *mousedev; int mouserate = MOUSE_DEFAULTSAMPLERATE; mouse_button_commands[0] = Cvar_Get ("mouse1","+attack",0,"None"); mouse_button_commands[1] = Cvar_Get ("mouse2","+strafe",0,"None"); mouse_button_commands[2] = Cvar_Get ("mouse2","+forward",0,"None"); m_filter = Cvar_Get ("m_filter","0",0,"None"); Cmd_AddCommand("force_centerview", Force_CenterView_f); mouse_buttons = 3; mtype = vga_getmousetype(); mousedev = "/dev/mouse"; if (getenv("MOUSEDEV")) mousedev = getenv("MOUSEDEV"); if (COM_CheckParm("-mdev")) { mousedev = com_argv[COM_CheckParm("-mdev")+1]; } if (getenv("MOUSERATE")) mouserate = atoi(getenv("MOUSERATE")); if (COM_CheckParm("-mrate")) { mouserate = atoi(com_argv[COM_CheckParm("-mrate")+1]); } #if 0 printf("Mouse: dev=%s,type=%s,speed=%d\n", mousedev, mice[mtype].name, mouserate); #endif if (mouse_init(mousedev, mtype, mouserate)) { Con_Printf("No mouse found\n"); UseMouse = 0; } else{ mouse_seteventhandler((void*)mousehandler); } }
SDL_Surface *SVGA_SetVideoMode(_THIS, SDL_Surface *current, int width, int height, int bpp, Uint32 flags) { int mode; int vgamode; vga_modeinfo *modeinfo; int screenpage_len; /* Try to set the requested linear video mode */ bpp = (bpp+7)/8-1; for ( mode=0; SDL_modelist[bpp][mode]; ++mode ) { if ( (SDL_modelist[bpp][mode]->w == width) && (SDL_modelist[bpp][mode]->h == height) ) { break; } } if ( SDL_modelist[bpp][mode] == NULL ) { SDL_SetError("Couldn't find requested mode in list"); return(NULL); } vga_setmode(SDL_vgamode[bpp][mode]); vga_setpage(0); vgamode=SDL_vgamode[bpp][mode]; if ((vga_setlinearaddressing()<0) && (vgamode!=G320x200x256)) { SDL_SetError("Unable to set linear addressing"); return(NULL); } modeinfo = vga_getmodeinfo(SDL_vgamode[bpp][mode]); /* Update hardware acceleration info */ SVGA_UpdateVideoInfo(this); /* Allocate the new pixel format for the screen */ bpp = (bpp+1)*8; if ( (bpp == 16) && (modeinfo->colors == 32768) ) { bpp = 15; } if ( ! SDL_ReallocFormat(current, bpp, 0, 0, 0, 0) ) { return(NULL); } /* Set up the new mode framebuffer */ current->flags = (SDL_FULLSCREEN|SDL_HWSURFACE); if ( bpp == 8 ) { /* FIXME: What about DirectColor? */ current->flags |= SDL_HWPALETTE; } current->w = width; current->h = height; current->pitch = modeinfo->linewidth; current->pixels = vga_getgraphmem(); /* set double-buffering */ if ( flags & SDL_DOUBLEBUF ) { /* length of one screen page in bytes */ screenpage_len=current->h*modeinfo->linewidth; /* if start address should be aligned */ if ( modeinfo->linewidth_unit ) { if ( screenpage_len % modeinfo->linewidth_unit ) { screenpage_len += modeinfo->linewidth_unit - ( screenpage_len % modeinfo->linewidth_unit ); } } /* if we heve enough videomemory = ak je dost videopamete */ if ( modeinfo->memory > ( screenpage_len * 2 / 1024 ) ) { current->flags |= SDL_DOUBLEBUF; flip_page = 0; flip_offset[0] = 0; flip_offset[1] = screenpage_len; flip_address[0] = vga_getgraphmem(); flip_address[1] = flip_address[0]+screenpage_len; SVGA_FlipHWSurface(this,current); } } /* Set the blit function */ this->UpdateRects = SVGA_DirectUpdate; /* Set up the mouse handler again (buggy SVGAlib 1.40) */ mouse_seteventhandler(SVGA_mousecallback); /* We're done */ return(current); }
int gr_set_mode(u_int32_t mode) { unsigned int w, h; char vgamode[16]; vga_modeinfo *modeinfo; int modenum, rowsize; void *framebuffer; #ifdef NOGRAPH return 0; #endif if (mode<=0) return 0; w=SM_W(mode); h=SM_H(mode); gr_palette_clear(); sprintf(vgamode, "G%dx%dx256", w, h); modenum = vga_getmodenumber(vgamode); vga_setmode(modenum); #ifdef SVGALIB_INPUT mouse_seteventhandler(mouse_handler); #endif modeinfo = vga_getmodeinfo(modenum); if (modeinfo->flags & CAPABLE_LINEAR) { usebuffer = 0; vga_setlinearaddressing(); // Set up physical screen only gl_setcontextvga(modenum); physicalscreen = gl_allocatecontext(); gl_getcontext(physicalscreen); screenbuffer = physicalscreen; framebuffer = physicalscreen->vbuf; rowsize = physicalscreen->bytewidth; } else { usebuffer = 1; // Set up the physical screen gl_setcontextvga(modenum); physicalscreen = gl_allocatecontext(); gl_getcontext(physicalscreen); // Set up the virtual screen gl_setcontextvgavirtual(modenum); screenbuffer = gl_allocatecontext(); gl_getcontext(screenbuffer); framebuffer = screenbuffer->vbuf; rowsize = screenbuffer->bytewidth; } memset(grd_curscreen, 0, sizeof(grs_screen)); grd_curscreen->sc_mode = mode; grd_curscreen->sc_w = w; grd_curscreen->sc_h = h; grd_curscreen->sc_aspect = fixdiv(grd_curscreen->sc_w*3,grd_curscreen->sc_h*4); grd_curscreen->sc_canvas.cv_bitmap.bm_x = 0; grd_curscreen->sc_canvas.cv_bitmap.bm_y = 0; grd_curscreen->sc_canvas.cv_bitmap.bm_w = w; grd_curscreen->sc_canvas.cv_bitmap.bm_h = h; grd_curscreen->sc_canvas.cv_bitmap.bm_rowsize = rowsize; grd_curscreen->sc_canvas.cv_bitmap.bm_type = BM_LINEAR; grd_curscreen->sc_canvas.cv_bitmap.bm_data = framebuffer; gr_set_current_canvas(NULL); gamefont_choose_game_font(w,h); return 0; }