Пример #1
0
BOOL Vga::init()
{
   //--------- Initialize DirectDraw object --------//

   if( !init_dd() )
      return FALSE;

   if( !set_mode(VGA_WIDTH, VGA_HEIGHT) )
      return FALSE;

   File palFile;
   palFile.file_open(DIR_RES"pal_std.res");

   BYTE palBuf[0x100][3];
   palFile.file_seek(8);     				// bypass the header info
   palFile.file_read(palBuf, sizeof(palBuf));
   palFile.file_close();

   // ------- palette description -------------//

   PalDesc palBufDesc( palBuf, 3, 0x100, 8 );

   //-------- create color remap table ---------//

   vga_color_table->generate_table_fast( MAX_BRIGHTNESS_ADJUST_DEGREE, palBufDesc, ColorTable::bright_func );
   default_remap_table = (short *) malloc(0x100 * 2);
   memcpy( default_remap_table, vga_color_table->get_table(0), 0x100 * 2 );

   default_blend_table = 0;
   transparent_code_w = translate_color(TRANSPARENT_CODE);
   return TRUE;
}
Пример #2
0
BOOL Vga::init() {
    char* warnStr = "Warning: Due to the low memory of your display card, "
	"you may experience problems when you quit the game or "
	"switch tasks during the game. "
	"To avoid this problem, set your Windows display "
	"to 800x600 16-bit color mode before running the game.";

    //--------- Initialize DirectDraw object --------//

    if( !init_dd() )
	return FALSE;

    // get current display mode
    DDSURFACEDESC2 ddsd;
    DDSCAPS2  ddsCaps;
    DWORD    dwTotal;
    DWORD    dwFree;

    memset(&ddsd, 0, sizeof(ddsd) );
    ddsd.dwSize = sizeof(ddsd);
    ddsCaps.dwCaps = DDSCAPS_VIDEOMEMORY;

    if( dd_obj->GetDisplayMode(&ddsd) == DD_OK &&
	dd_obj->GetAvailableVidMem(&ddsCaps, &dwTotal, &dwFree) == DD_OK ) {
	if( dwFree < (DWORD) VGA_WIDTH*VGA_HEIGHT*VGA_BPP/8 &&
	    !(ddsd.dwWidth==(DWORD)VGA_WIDTH && ddsd.dwHeight==(DWORD)VGA_HEIGHT && (ddsd.ddpfPixelFormat.dwRGBBitCount == (DWORD)VGA_BPP)) ) {
	    // not enough memory except same video mode

	    ShowCursor(TRUE);
	    // approximation of video memory required, actual video memory used should be calculated from vga_(true)_front->buf_pitch()

	    /*
	      extern char new_config_dat_flag;

	      if( new_config_dat_flag )
	      {
              MessageBox(sys.main_hwnd, warnStr,
	      WIN_TITLE, MB_OK | MB_ICONWARNING | MB_SETFOREGROUND );
	      }
	    */
	    low_video_memory_flag = 1;

	    ShowCursor(FALSE);
	}
    }

    if( !set_mode(VGA_WIDTH, VGA_HEIGHT) )
	return FALSE;

    return TRUE;
}
Пример #3
0
void init_device(
      struct device *dev,
      /* r4300 */
      unsigned int emumode,
      unsigned int count_per_op,
      int special_rom,
      /* ai */
      void * ai_user_data, void (*ai_set_audio_format)(void*,unsigned int, unsigned int),
      void (*ai_push_audio_samples)(void*,const void*,size_t),
      unsigned int fixed_audio_pos,
      /* pi */
      uint8_t *rom,
      size_t rom_size,
      void* flashram_user_data, void (*flashram_save)(void*), uint8_t* flashram_data,
      void* sram_user_data, void (*sram_save)(void*), uint8_t* sram_data,
      /* ri */
      uint32_t* dram, size_t dram_size,
      /* si */
      void* eeprom_user_data, void (*eeprom_save)(void*), uint8_t* eeprom_data, size_t eeprom_size, uint16_t eeprom_id,
      void* af_rtc_user_data, const struct tm* (*af_rtc_get_time)(void*),
      /* sp */
      unsigned int audio_signal,
      /* vi */
      unsigned int vi_clock,
      unsigned int expected_refresh_rate,
      uint8_t *ddrom,
      size_t ddrom_size,
      uint8_t *dd_disk,
      size_t dd_disk_size
      )
{
   init_r4300(&dev->r4300, emumode, count_per_op, special_rom);
   init_rdp(&dev->dp, &dev->r4300, &dev->sp, &dev->ri);
   init_rsp(&dev->sp, &dev->r4300, &dev->dp, &dev->ri, audio_signal);
   init_ai(&dev->ai, ai_user_data,
         ai_set_audio_format,
         ai_push_audio_samples,
         &dev->r4300, &dev->ri, &dev->vi,
	 fixed_audio_pos);
   init_pi(&dev->pi,
         rom, rom_size,
         ddrom, ddrom_size,
         flashram_user_data, flashram_save, flashram_data,
         sram_user_data, sram_save, sram_data,
         &dev->r4300, &dev->ri);
   init_ri(&dev->ri, dram, dram_size);
   init_si(&dev->si,
         eeprom_user_data,
         eeprom_save,
         eeprom_data,
         eeprom_size,
         eeprom_id,
         af_rtc_user_data,
         af_rtc_get_time,
         ((ddrom != NULL) && (ddrom_size != 0) && (rom == NULL) && (rom_size == 0)) ?
         (ddrom + 0x40) : (rom + 0x40),                       /* ipl3 */
         &dev->r4300, &dev->ri);

   init_vi(&dev->vi, vi_clock, expected_refresh_rate, &dev->r4300);
   init_dd(&dev->dd, &dev->r4300, dd_disk, dd_disk_size);
}