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

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

?? gui.c

?? 著名ARC模擬器源碼,包括多個平臺
?? C
?? 第 1 頁 / 共 5 頁
字號:
   return 0;}void build_game_avail_list(void){   int ta,oldcount;   build_game_list();   if(GameAvail) free_game_avail_list();   oldcount = my_game_count;   if (!my_game_count) my_game_count = 1; // To avoid the segfault with efence   // when there are no games at all !!!      GameAvail   = (int *) malloc(sizeof(int) * my_game_count);   GameMissing = (int *) malloc(sizeof(int) * my_game_count);   my_game_count=oldcount;      GameAvailCount = 0;   GameMissingCount = 0;   for(ta=0; ta<my_game_count; ta++){      if( game_exists(ta) )         GameAvail[GameAvailCount++] = ta;      else         GameMissing[GameMissingCount++] = ta;   }   ta = rgui_cfg.game_list_mode;   rgui_cfg.game_list_mode = 0;   game_select[GAME_LIST].d1 = raine_cfg.req_game_index;   set_game_list_mode(ta);}void free_game_avail_list(void){   if(GameAvail) free(GameAvail);   GameAvail = NULL;   if(GameMissing) free(GameMissing);   GameMissing = NULL;}// listbox_getter():// Get game names for game select list, three// different listing modes.char *get_long_name(GAME_MAIN *game){#if 0	int len;#endif    return game->long_name;  // The rest of this function was to add a "S" for sound at the end...#if 0  strncpy(name_buffer,game->long_name,BOARD_POS);  len = strlen(name_buffer);  if (len < BOARD_POS) {    memset(&name_buffer[len],32,BOARD_POS-len);    name_buffer[BOARD_POS] = 0;  }  if (game->sound_list) {    strncat(name_buffer,"S",MAX_NAME_BUFFER-BOARD_POS);  }  name_buffer[MAX_NAME_BUFFER-1] = 0;  return name_buffer;#endif}static int get_normal_index(int index){  return index;}static int get_avail_index(int index){  return GameAvail[index];}static int get_missing_index(int index){  return GameMissing[index];}static char* pad(char* s,int len){  int len0=strlen(s);  strcpy(pad_buf,s);  if (len>len0)    memset(&pad_buf[len0],0x20,len-len0);  pad_buf[len] = 0;  return pad_buf;}static char* ipad(int n, int len){  char buff[10];  sprintf(buff,"%d",n);  return pad(buff,len);}static char* game_type_name(int type,int len){  char buff[50];  int ta;  buff[0]=0;  for (ta=0; ta<=7; ta++)    if (type & (1 << ta)){      sprintf(buff+strlen(buff),"%s ",game_type[ta+1]);      break;    }  return pad(buff,len);}static void setup_game_bitmap() {  int new_scale,hx,hy,vx,vy;  game_select[GAME_BITMAP].dp   = snapshot;  new_scale = text_height(gui_main_font);  hx = 130 * new_scale / 8;  hy = 76 * new_scale / 8;  vx = 70 * new_scale / 8;  vy = 120 * new_scale / 8;  if (snapshot->w > snapshot->h) { // horizontal    game_select[GAME_BITMAP].x = ((game_select[0].x+150)*new_scale)/8;    game_select[GAME_BITMAP].y = ((game_select[0].y+145)*new_scale)/8+5;    game_select[GAME_BITMAP].w    = (snapshot->w < hx ? snapshot->w : hx);    game_select[GAME_BITMAP].h    = (snapshot->h < hy ? snapshot->h : hy);  } else { // vertical    game_select[GAME_BITMAP].x = ((game_select[0].x + 235)*new_scale)/8;    game_select[GAME_BITMAP].y = ((game_select[0].y + 100)*new_scale)/8+5;    game_select[GAME_BITMAP].w    = (snapshot->w < vx ? snapshot->w : vx);    game_select[GAME_BITMAP].h    = (snapshot->h < vy ? snapshot->h : vy);  }}void destroy_snapshot(int redraw) {  if (redraw) // stupid allegro...    rectfill(screen, game_select[GAME_BITMAP].x, game_select[GAME_BITMAP].y, game_select[GAME_BITMAP].x+game_select[GAME_BITMAP].w-1, game_select[GAME_BITMAP].y+game_select[GAME_BITMAP].h-1, CGUI_BOX_COL_MIDDLE);  destroy_mapped_bitmap(snapshot,snapshot_cols);  snapshot = NULL;}static BITMAP* load_snapshot(char *name) {  char str[256];  BITMAP *snapshot;  PALETTE my_palette;    if (text_height(gui_main_font) > 8)     sprintf(str,"%ssnapshot" SLASH "big" SLASH "%s.pcx", dir_cfg.exe_path,name);  else    sprintf(str,"%ssnapshot" SLASH "%s.pcx", dir_cfg.exe_path,name);  snapshot = load_pcx(str,my_palette);  if (!snapshot && text_height(gui_main_font) > 8) {    sprintf(str,"%ssnapshot" SLASH "%s.pcx", dir_cfg.exe_path,name);    snapshot = load_pcx(str,my_palette);  }  if (snapshot)    set_palette_range(my_palette,0,239,1);  return snapshot;}static int listbox_active = 0; // to know if we can redraw or not...char *listbox_getter(int index, int *list_size){   int ta=0,list_length=0;   char tb[2];   char tc[2];   int (*get_index)(int)=get_normal_index;   DIR_INFO *head;   UINT8 *dir;      switch(rgui_cfg.game_list_mode){   case 0x00:			// Mode 0: List all games     list_length = my_game_count;     get_index = get_normal_index;     break;   case 0x01:			// Mode 1: List available games     list_length = GameAvailCount;     get_index = get_avail_index;     break;   case 2:     list_length = GameMissingCount;     get_index = get_missing_index;   }      switch(index){   case -1:			// Return List Size     *list_size = list_length;     return NULL;     break;   case -2:			// Act upon List Object Selection     break;   case -4:      if (snapshot)       destroy_snapshot(1);     if ((rgui_cfg.game_list_mode==0 && my_game_count>0) ||	 (rgui_cfg.game_list_mode==1 && GameAvailCount>0) ||	 (rgui_cfg.game_list_mode==2 && GameMissingCount>0)) {       ta = get_index(*list_size);       sprintf(game_select[GAME_DATA].dp,	       pad(game_company_name(my_game_list[ta]->company_id),20));       sprintf(game_select[GAME_DATA+1].dp,	       ipad(my_game_list[ta]->year,20));       if (my_game_list[ta]->sound_list)	 sprintf(game_select[GAME_DATA+2].dp,"Yes  ");       else	 sprintf(game_select[GAME_DATA+2].dp,"No   ");       sprintf(game_select[GAME_DATA+3].dp,	       game_type_name(my_game_list[ta]->flags & 0xff,14));	        snapshot = load_snapshot(my_game_list[ta]->main_name);              snapshot_cols = 240;              if (!snapshot) {	 head = my_game_list[ta]->dir_list;	 for (; head; head++) {	   dir = head[0].maindir;	   if( dir ){	     	     if( IS_ROMOF(dir) ){	     	       GAME_MAIN *game_romof;	       game_romof = find_game(dir+1);	     	       snapshot = load_snapshot(game_romof->main_name);	       	       if (snapshot) break;	     }	   } else	     break;	 }       }     } else {       sprintf(game_select[GAME_DATA].dp,	       pad("---",20));       sprintf(game_select[GAME_DATA+1].dp,	       pad("---",20));       if (my_game_list[ta]->sound_list)	 sprintf(game_select[GAME_DATA+2].dp,"--- ");       else	 sprintf(game_select[GAME_DATA+2].dp,"--- ");       sprintf(game_select[GAME_DATA+3].dp,	       pad("---",14));       snapshot = NULL;            }            if (!snapshot) {       snapshot_cols = 7;       snapshot = make_mapped_bitmap(RaineData[RaineLogo].dat, &ta, RaineData[GUIPalette].dat, snapshot_cols);     }          setup_game_bitmap();          if (listbox_active) {        // Redraw data fields       for (ta = 0; ta < 4; ta++)	 SEND_MESSAGE(&game_select[GAME_DATA+ta], MSG_DRAW, 0);     // Redraw titles       for (ta = -4; ta < 0; ta++)	 SEND_MESSAGE(&game_select[GAME_DATA+ta], MSG_DRAW, 0);       SEND_MESSAGE(&game_select[GAME_BITMAP],MSG_DRAW,0);     }     return NULL;   case -3:			// Act Keyboard Input     tb[0] = *list_size & 0xFF;     tb[1] = 0;     tc[1] = 0;     for(ta=0;ta<list_length;ta++){       tc[0] = my_game_list[get_index(ta)]->long_name[0];       if(!(strcasecmp(tb,tc))){	 game_select[GAME_LIST].d1 = ta;	 if(ta < (game_select[GAME_LIST].d2     )) game_select[GAME_LIST].d2 = ta;	 if(ta > (game_select[GAME_LIST].d2 + GLIST_SIZE)) game_select[GAME_LIST].d2 = ta - GLIST_SIZE+1;	 *list_size = D_USED_CHAR;	 return NULL;       }     }     return NULL;     break;   default:     if((index >= 0)&&(index<list_length))       return get_long_name(my_game_list[get_index(index)]);     else       return NULL;     break;   }   return NULL;}// game_radio_proc():// Radio buttons for game list mode, need to be custom// to incorporate automatic update on button selection.int game_radio_proc(int msg, DIALOG *d, int c){   int i;   int ret=x_raine_radio_proc(msg, d, c);   if((msg==MSG_KEY)||(msg==MSG_CLICK)){      // Get selected List Mode      // ----------------------      if((game_select[5+0].flags)&D_SELECTED) i = 0;      else if((game_select[5+1].flags)&D_SELECTED) i = 1;      else if((game_select[5+2].flags)&D_SELECTED) i = 2;	  else i = 0;      set_game_list_mode(i);      // Refresh the Game List      // ---------------------      SEND_MESSAGE(&game_select[GAME_LIST], MSG_END, 0);      SEND_MESSAGE(&game_select[GAME_LIST], MSG_START, 0);      	scare_mouse();      broadcast_dialog_message(MSG_DRAW, 0);	unscare_mouse();      // Wait for release      // ----------------	while(gui_mouse_b()){	  dialog_oxygen();	}   }   return ret;}static UINT32 current_game_rom_count;static UINT32 current_game_rom_load_count;int load_game_proc(int msg, DIALOG *d, int c){  int oldbpp = 0;	(void)(d);	(void)(c);  switch(msg){      case MSG_IDLE:         mouse_on_real_screen();         dialog_on_real_screen();         LoadDefault();         load_error = 0;         load_debug = malloc(0x10000);         sprintf(load_debug,"Load Game\n---------\n\n");	 if (my_game_list) // normal loading	   current_game = my_game_list[raine_cfg.req_game_index];	 else // uses -g switch	   current_game = game_list[raine_cfg.req_game_index];	 // I have to change the depth BEFORE loading.	 // Probably because of the set_color_mapper in the loading function	 if(wants_switch_res) // && switch_res(current_game->video_info))){	   switch_res(current_game->video_info);#if 0	 // For now I disable automatic depth changing, now that almost	 // every game does support all the depths...	 // Because some people running raine in a 16bpp display might	 // prefer running 8bpp games in 16bpp (like me)	   if (bestbpp) {	     oldbpp = display_cfg.bpp;	     display_cfg.bpp = bestbpp;	   }#endif	          /*         count roms         */         {            ROM_INFO *rom_list;            current_game_rom_count = 0;            current_game_rom_load_count = 0;            rom_list = current_game->rom_list;            while(rom_list->name)            {               current_game_rom_count ++;               rom_list ++;            }            if(!current_game_rom_count)               current_game_rom_count ++;            loading_dialog[2].d1 = current_game_rom_load_count;            loading_dialog[2].d2 = current_game_rom_count;	      scare_mouse();            SEND_MESSAGE(&loading_dialog[2], MSG_DRAW,  0);	      unscare_mouse();         }         load_game_rom_info();	 	 if (!(load_error & LOAD_FATAL_ERROR)) {	   current_game->load_game();	   // bpp must be changed in the last moment !!!	   if (oldbpp)	     display_cfg.bpp = oldbpp;	   	   init_inputs();	   init_dsw();	   init_romsw();	   init_sound_list();	   hs_open();	 }         dialog_on_buffer_screen();         mouse_on_buffer_screen();         loading_dialog[2].d1 = current_game_rom_count;         loading_dialog[2].d2 = current_game_rom_count;	   scare_mouse();         SEND_MESSAGE(&loading_dialog[2], MSG_DRAW,  0);	   unscare_mouse();         dialog_oxygen();         return D_EXIT;      break;      default:         return D_O_K;      break;   }}void do_load_game(void){   BITMAP *load_mouse;   int ta,size;   /*   satisfy the request   */   raine_cfg.req_load_game = 0;   /*   don't reload if the game is already in memory   */   if(my_game_list && current_game == my_game_list[raine_cfg.req_game_index])      return;   /*   close down the current game (if there is one)   */   if(current_game){      save_game_config();      hs_close();      current_game->clear_game();      ClearDefault();      current_game = NULL;   }      // Do the load (via a loading window)     load_mouse = make_mapped_bitmap_2(RaineData[mouse_busy].dat, &ta, RaineData[mouse_busy_pal].dat, 16);      set_mouse_sprite(load_mouse);      loading_dialog[2].d1 = 0;      loading_dialog[2].d2 = 1;      FadeGUI();            raine_do_dialog(loading_dialog,-1);      set_mouse_sprite(RaineData[Mouse].dat);      destroy_mapped_bitmap(load_mouse, 16);      // Check if the load was successful, if ok, load game config, if bad clear the mess      switch(load_error&3){      case LOAD_WARNING:			// WARNING - IT MIGHT RUN OK         FadeGUI();	 strcat(load_debug,"\n\nThe game might not run correctly.");         load_problem[2].dp = load_debug;         raine_do_dialog(load_problem,-1);      case 0x00:				// SUCCESS	size = GetMemoryPoolSize()/1024; // Minimum Kb	memcpy(&prev_display_cfg, &display_cfg, sizeof(DISPLAY_CFG));	load_game_config();	reset_game_hardware();		{	  char name[40];	  	  strncpy(name,current_game->long_name,39);	  name[39] = 0;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲黄色小说网站| 国产成人亚洲精品狼色在线| 免费在线成人网| 成人av免费在线观看| 日韩欧美成人一区| 一区二区三区高清不卡| 国产美女久久久久| 9191久久久久久久久久久| 亚洲同性gay激情无套| 国产一区二区三区久久久 | 欧美精品三级日韩久久| 欧美激情中文不卡| 久久国产精品72免费观看| 欧美精品三级在线观看| 一区二区三区国产精品| 91丨九色丨蝌蚪富婆spa| 久久精品亚洲国产奇米99| 日日夜夜免费精品| 欧美性猛交xxxxxxxx| 亚洲另类在线视频| proumb性欧美在线观看| 国产精品私人影院| 国产精品77777| 精品久久久久久综合日本欧美| 午夜不卡av免费| 欧美性视频一区二区三区| 最新中文字幕一区二区三区| 成人高清免费观看| 国产清纯在线一区二区www| 青青草97国产精品免费观看无弹窗版| 欧美性猛交xxxx乱大交退制版| 一区二区三区四区精品在线视频 | 欧美综合天天夜夜久久| 亚洲欧美日韩国产综合在线| 99久久综合精品| 国产精品成人一区二区艾草| av在线不卡网| 亚洲精品中文字幕在线观看| 91久久精品一区二区二区| 一区二区三区日韩精品视频| 一本大道久久a久久综合婷婷| 亚洲欧美国产三级| 欧美一a一片一级一片| 亚洲国产精品一区二区www| 欧美精品久久99| 免费成人av在线| 久久久综合激的五月天| 成人免费黄色在线| 亚洲精品高清在线观看| 欧美日韩一本到| 久久99久久99| 国产精品五月天| 在线观看免费一区| 理论电影国产精品| 国产日韩精品一区| 色综合色综合色综合| 亚洲高清免费观看 | 中文字幕高清一区| 91色综合久久久久婷婷| 天堂一区二区在线| 久久久精品人体av艺术| 在线视频国产一区| 另类中文字幕网| 亚洲视频在线观看三级| 欧美日韩精品一区二区在线播放| 久久99热这里只有精品| 亚洲日韩欧美一区二区在线| 在线播放亚洲一区| 成人午夜伦理影院| 亚洲v精品v日韩v欧美v专区| 久久精品人人爽人人爽| 欧美性大战久久久久久久蜜臀| 久久国产精品99久久人人澡| 一区在线观看免费| 日韩一级二级三级精品视频| 成人性色生活片免费看爆迷你毛片| 尤物视频一区二区| 久久精品一区二区三区不卡牛牛| 欧美亚洲尤物久久| 国产成人精品www牛牛影视| 天天综合日日夜夜精品| 国产精品三级视频| 精品少妇一区二区三区在线视频| 99re这里只有精品6| 九一久久久久久| 肉肉av福利一精品导航| 亚洲品质自拍视频| 国产清纯白嫩初高生在线观看91| 91精品一区二区三区在线观看| 色综合色狠狠综合色| 国产精品88av| 久久er精品视频| 日日骚欧美日韩| 亚洲一级二级在线| 中文子幕无线码一区tr| 欧美va亚洲va在线观看蝴蝶网| 91高清视频在线| 成人av第一页| 懂色av中文字幕一区二区三区| 六月婷婷色综合| 美女久久久精品| 日韩高清不卡一区二区三区| 玉足女爽爽91| 一二三区精品视频| 亚洲人成精品久久久久久 | 色偷偷一区二区三区| 国产成人综合在线| 国产麻豆午夜三级精品| 精品一区二区日韩| 美女免费视频一区二区| 看国产成人h片视频| 蜜桃精品视频在线观看| 免费成人在线播放| 日本不卡一区二区三区高清视频| 亚洲成a人v欧美综合天堂| 亚洲最新在线观看| 亚洲国产日韩在线一区模特| 亚洲综合丝袜美腿| 亚洲va国产va欧美va观看| 亚洲.国产.中文慕字在线| 午夜欧美大尺度福利影院在线看| 亚洲成人一区二区在线观看| 午夜精品久久久久久久久| 婷婷综合久久一区二区三区| 日韩电影在线一区二区| 奇米在线7777在线精品| 经典三级一区二区| 成人在线视频一区| 99久久精品国产毛片| 欧美色窝79yyyycom| 欧美日韩五月天| 日韩免费看的电影| 国产性天天综合网| ㊣最新国产の精品bt伙计久久| 一区二区理论电影在线观看| 婷婷成人综合网| 国产麻豆精品一区二区| 成人白浆超碰人人人人| 欧美亚洲国产怡红院影院| 欧美一区二区三区日韩| 久久久久久夜精品精品免费| 亚洲欧美日韩久久精品| 日韩av电影免费观看高清完整版在线观看 | 精品久久久久久综合日本欧美| 久久久久国产精品厨房| 亚洲色图丝袜美腿| 亚洲www啪成人一区二区麻豆| 久久99九九99精品| 97久久精品人人爽人人爽蜜臀| 777a∨成人精品桃花网| 欧美韩日一区二区三区四区| 亚洲综合自拍偷拍| 精品在线你懂的| 一本色道久久综合亚洲91 | 激情综合色丁香一区二区| 99久久国产综合精品女不卡| 欧美一区二区三区啪啪| 亚洲美女免费视频| 老司机精品视频一区二区三区| av色综合久久天堂av综合| 91精品国产色综合久久不卡电影| 久久这里只有精品首页| 亚洲午夜久久久久| 国产成人av一区二区三区在线| 欧美日韩免费视频| 中文字幕中文字幕一区| 日韩高清不卡一区| 91亚洲精品乱码久久久久久蜜桃| 日韩一区二区三区电影在线观看| 1024精品合集| 国内久久精品视频| 91精品国产麻豆| 一区二区不卡在线播放 | 欧美大片拔萝卜| 亚洲综合色噜噜狠狠| 免费观看成人鲁鲁鲁鲁鲁视频| caoporm超碰国产精品| 亚洲精品一区二区三区精华液| 一区二区欧美视频| 99久久精品免费精品国产| 国产日韩av一区| 久久精品国产亚洲高清剧情介绍| 精品视频一区二区三区免费| 亚洲另类中文字| 色呦呦网站一区| 亚洲人成亚洲人成在线观看图片| 国产成人8x视频一区二区| 亚洲精品一区二区在线观看| 另类欧美日韩国产在线| 欧美一级日韩免费不卡| 午夜精品一区二区三区免费视频| 99综合影院在线| 国产精品欧美精品| 成人激情免费视频| 中文字幕第一区第二区| 国产麻豆视频精品| 久久精品夜色噜噜亚洲a∨| 国产一区二区三区免费播放| 久久亚洲综合av| 国产91精品精华液一区二区三区 |