Esempio n. 1
0
File: vid.c Progetto: btb/d2x
int vid_set_mode(uint32_t mode)
{
	short w, h;

#ifdef NOGRAPH
return 0;
#endif
//	mode=0;
	if (mode<=0)
		return 0;

	if (mode == Vid_current_mode)
		return 0;

	w=SM_W(mode);
	h=SM_H(mode);
	Vid_current_mode = mode;

	//if (screen != NULL) gr_palette_clear();

//	ogl_init_state();

	gr_init_screen(BM_OGL, w, h, 0, 0, w, NULL);

	//gr_enable_default_palette_loading();
	
	ogl_init_window(w,h);//platform specific code

	ogl_get_verinfo();

	OGL_VIEWPORT(0,0,w,h);

	ogl_set_screen_mode();

//	gamefont_choose_game_font(w,h);
	
	return 0;
}
Esempio n. 2
0
short vga_set_mode(short mode)
{
	int retcode;
	unsigned int w,h,t,data, r;

#if defined(POLY_ACC)
if(mode != SM_640x480x15xPA)
{
    Int3();
    mprintf((0, "vga_set_mode(%d)\n", mode));
    return 0;
}
#endif

	LinearSVGABuffer=0; 
	   
	if (!vga_installed)
		return 1;
   
  
	switch(mode)
	{
	case SM_ORIGINAL:
		return 0;

	case SM_320x200C:
		if (!isvga()) return 1;
		vga_set_misc_mode(0x13);	
		w = 320; r = 320; h = 200; t=BM_LINEAR; data = 0xA0000;
		break;
	
	case SM_640x400V:
		retcode = vga_vesa_setmode( 0x100 ); 
		//gr_enable_default_palette_loading();
		if (retcode !=0 ) return retcode;
		w = 640; r = 640; h = 400; t=BM_SVGA; data = 0;
		break;

	case SM_640x480V:
		retcode = vga_vesa_setmode( 0x101 ); 
		//gr_enable_default_palette_loading();
		if (retcode !=0 ) return retcode;
		w = 640; r = 640; h = 480; t=BM_SVGA; data = 0;
		break;

	case SM_800x600V:
		retcode = vga_vesa_setmode( 0x103 ); 
		//gr_enable_default_palette_loading();
		if (retcode !=0 ) return retcode;
		w = 800; h = 600; t=BM_SVGA; data = 0;
      r=VesaGetRowSize (0x103);
		break;

	case SM_1024x768V:
		retcode = vga_vesa_setmode( 0x105 ); 
		//gr_enable_default_palette_loading();
		if (retcode !=0 ) return retcode;
		w = 1024; r = 1024; h = 768; t=BM_SVGA; data = 0;
      r=VesaGetRowSize (0x105);
		break;

	case SM_1280x1024V:
		retcode = vga_vesa_setmode( 0x107 ); 
		//gr_enable_default_palette_loading();
		if (retcode !=0 ) return retcode;
		w = 1280; r = 1280; h = 1024; t=BM_SVGA; data = 0;
      r=VesaGetRowSize (0x107);
		break;

	case SM_640x480V15:
		retcode = vga_vesa_setmode( 0x110 ); 
		//gr_enable_default_palette_loading();
		if (retcode !=0 ) return retcode;
		w = 640; r = 640*2; h=480; t=BM_SVGA15; data = 0;
		break;

	case SM_800x600V15:
		retcode = vga_vesa_setmode( 0x113 ); 
		//gr_enable_default_palette_loading();
		if (retcode !=0 ) return retcode;
		w = 800; r = 800*2; h=600; t=BM_SVGA15; data = 0;
		break;

	//super-special code for 3dmax high-res mode
	case SM_320x400_3DMAX:			// 3dmax 320x400
		if (!isvga()) return 1;
		gr_set_3dbios_mode(0x31);
		//w = 320; r = 320/4; h = 400; t=BM_MODEX; data = 0;
		w = 320; r = 320; h = 400; t=BM_SVGA; data = 0;
		break;

	//@@case 19:
	//@@	if (!isvga()) return 1;
	//@@	vga_set_misc_mode(0x13);	
	//@@	vga_set_cellheight( 3 );
	//@@	w = 320; r = 320; h = 200; t=BM_LINEAR; data = 0xA0000;
	//@@	break;
	//@@
	//@@case 20:
	//@@	retcode = vga_vesa_setmode( 0x102 ); 
	//@@	//gr_enable_default_palette_loading();
	//@@	if (retcode !=0 ) return retcode;
	//@@	vga_16_to_256();
	//@@	vga_set_linear();
	//@@	//gr_set_cellheight( 1 );
	//@@	gr_vesa_setlogical( 400 );
	//@@	w = 400; r = 400; h = 600; t=BM_SVGA; data = 0;
	//@@	break;
	//@@
	//@@case 21:
	//@@	if (!isvga()) return 1;
	//@@	vga_set_misc_mode(0xd);	
	//@@	vga_16_to_256();
	//@@	vga_set_linear();
	//@@	//gr_set_cellheight( 3 );
	//@@	w = 160; r = 160; h = 200; t=BM_LINEAR; data = 0xA0000;
  	//@@	break;

	case SM_320x200U:
	case SM_320x240U:
	case SM_360x200U:
	case SM_360x240U:
	case SM_376x282U:
	case SM_320x400U:
	case SM_320x480U:
	case SM_360x400U:
	case SM_360x480U:
	case SM_360x360U:
	case SM_376x308U:
	case SM_376x564U:		//mode X modes

		if (!isvga()) return 1;
		w = gr_modex_setmode( mode );
		//gr_enable_default_palette_loading();
		h = w & 0xffff; w = w >> 16; r = w / 4;t = BM_MODEX; data = 0;
		break;

#if defined(POLY_ACC)
	case SM_640x480x15xPA:
		pa_set_mode(mode);
		w = 640; r = 640*2; h=480; t=BM_LINEAR15; data = 0; //$$ data should be what?
	   #ifdef PA_3DFX_VOODOO
		  r=2048;
		#endif
		break;
#endif

	default:			//unknown mode!!!  Very bad!!
		Error("Unknown mode %d in vga_set_mode()",mode);
	}

//	if (vga_palette_realized  && (vga_prevent_palette_loading==0))
//		gr_pal_setblock( 0, 256, gr_palette);

//	return 0;

	VGA_current_mode = mode;
#if defined(POLY_ACC)
    vga_screen_addr = pa_get_buffer_address(0);
#else
	if (LinearSVGABuffer)
		{
			mprintf ((0,"GREEEEAT!\n"));
			t=BM_LINEAR;
			vga_screen_addr=(ubyte *)VesaGetPtr();
		}
	else
		vga_screen_addr=(ubyte *)0xa0000;
#endif

	gr_palette_clear();
	return gr_init_screen( t,w,h,0,0,r,vga_screen_addr);
}