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

📄 dlg_cheat.c

📁 著名ARC模拟器源码,包括多个平台
💻 C
📖 第 1 页 / 共 3 页
字号:
      search_data = search_type_3b_dialog[2].d1;      if(search_data>5) search_data=0;      if(search_data<0) search_data=0;      continue_arpro_search( (UINT8) search_data);      break;      default:      break;      }      if(match_all_count>0){         if(match_all_count>512){            s_list = get_arpro_results(512);         }         else{            s_list = get_arpro_results(match_all_count);         }      }      SEND_MESSAGE(&search_main_dialog[4], MSG_START, 0);      return D_REDRAW;   }   return ret;}int cheat_main_proc(void){   int ret;   ret=0;   while(ret>=0){      ret = raine_do_dialog(actionreplay_dialog,-1);      switch(ret){      case 0x02:	// [Done]         return -1;      break;      case 0x01:	// List Click         DoCheatEdit();      break;      case 0x06:	// [Search>>]         ar_window = 1;         ret = -1;      break;      }   }   return 0;}int cheat_search_proc(void){   int ret;   ret=0;   while(ret>=0){      sprintf(cheateditdata,"%02x",search_data);      if(match_all_count>0){         if(match_all_count>512){            s_list = get_arpro_results(512);         }         else{            s_list = get_arpro_results(match_all_count);         }      }      ret = raine_do_dialog(search_main_dialog,-1);      sscanf(cheateditdata,"%x",&search_data);      search_data&=0xFF;      switch(ret){      case 0x01:	// [Done]         return -1;      break;      case 0x06:	// [Edit>>]         ar_window = 0;         ret = -1;      break;      }   }   return 0;}int do_cheat_data_edit(int ta){   int ret;      if(ta<CheatCount){         sprintf(cheateditname,"%s",CheatList[ta].name);         sprintf(cheateditaddress,"%08x",CheatList[ta].address);         sprintf(cheateditdata,"%02x",CheatList[ta].data);         sprintf(cheateditmask,"%02x",CheatList[ta].mask);         sprintf(cheateditinfo,"%s",CheatList[ta].info);	 cheatdata_edit_dialog[CHEAT_SIZE].d1 = CheatList[ta].type & 3;	 cheatdata_edit_dialog[CHEAT_TYPE].flags =	   cheatdata_edit_dialog[CHEAT_TYPE+1].flags =	   cheatdata_edit_dialog[CHEAT_TYPE+2].flags = 0;	 	 if (CheatList[ta].type & CHEAT_WATCH) // watchpoint	   cheatdata_edit_dialog[CHEAT_TYPE+2].flags = D_SELECTED;	 else	   cheatdata_edit_dialog[CHEAT_TYPE+((CheatList[ta].type & 0x08)>>3)].flags = D_SELECTED;         ret = raine_do_dialog(cheatdata_edit_dialog,-1);         if(ret==1){            sprintf(CheatList[ta].name,"%s",cheateditname);            sscanf(cheateditaddress,"%x",&CheatList[ta].address);            sscanf(cheateditdata,"%x",&CheatList[ta].data);            sscanf(cheateditmask,"%x",&CheatList[ta].mask);            sprintf(CheatList[ta].info,"%s",cheateditinfo);	    CheatList[ta].type = cheatdata_edit_dialog[CHEAT_SIZE].d1 & 3;	    if (CheatList[ta].mask) CheatList[ta].type |= 4;	    if (cheatdata_edit_dialog[CHEAT_TYPE+2].flags)	      CheatList[ta].type |= CHEAT_WATCH; // Watchpoint	    else if (cheatdata_edit_dialog[CHEAT_TYPE+1].flags)	      CheatList[ta].type |= CHEAT_1_TIME; // Temporary            return 1;         }         else{            return 0;         }      }      else{         return 0;      }}int cheatdata_edit_proc(int msg, DIALOG *d, int c){   int ret = x_raine_button_proc(msg, d, c);   if(ret==D_CLOSE){      Unselect_Button(d);      FadeGUI();      ret = do_cheat_data_edit(actionreplay_dialog[1].d1);      return D_REDRAW;   }   return ret;}char *cheatlist_getter(int index, int *list_size){   static char S[128];   if(CheatCount){   switch(index){   case -1:			// Return List Size      *list_size=CheatCount;      return NULL;   break;   case -2:			// Act upon List Object Selection      DoCheatEdit();      *list_size=D_REDRAW;      return NULL;   break;   case -3:			// Act Keyboard Input      return NULL;   break;   default:      if((index >= 0)&&(index<CheatCount)){         sprintf(S,"%-29s", CheatList[index].name);         S[29] = 0;         if(CheatList[index].active)            sprintf(S+strlen(S)," %s", raine_translate_text("On"));         else            sprintf(S+strlen(S)," %s", raine_translate_text("Off"));         return S;      }      else         return NULL;   break;   }   }   else{   switch(index){   case -1:			// Return List Size      *list_size=1;      return NULL;   break;   case -2:			// Act upon List Object Selection      *list_size=D_REDRAW;      return NULL;   break;   case -3:			// Act Keyboard Input      return NULL;   break;   default:      if(index == 0)         return raine_translate_text("<No Cheats Mapped>");      else         return NULL;   break;   }   }}void DoCheatEdit(void){   int ta;   ta=actionreplay_dialog[1].d1;   if(ta<CheatCount){      CheatList[ta].active^=1;   }}int cheat_edit_proc(int msg, DIALOG *d, int c){   int ret=x_raine_button_proc(msg, d, c);   if(ret==D_CLOSE){      Unselect_Button(d);      DoCheatEdit();      return D_REDRAW;   }   return ret;}void do_cheat_add(UINT32 addr, UINT8 data){   int ta, ret;      if(CheatCount<CHEAT_MAX){         ta = CheatCount;         CheatCount++;         sprintf(CheatList[ta].name,"New Cheat %d",ta);         CheatList[ta].address = addr;         CheatList[ta].data    = data;         CheatList[ta].mask    = 0xFF;         CheatList[ta].type    = 0x00;         CheatList[ta].info[0] = 0;         CheatList[ta].active  = 0;         ret = do_cheat_data_edit(ta);         if( ret != 1) CheatCount--;      }}int cheat_add_proc(int msg, DIALOG *d, int c){   int ta;   int ret=x_raine_button_proc(msg, d, c);   if(ret==D_CLOSE){      Unselect_Button(d);      FadeGUI();      ta = search_main_dialog[4].d1;      if(ta<match_all_count){      do_cheat_add(s_list[ta], gen_cpu_read_byte_2(s_list[ta]));      }      return D_REDRAW;   }   return ret;}int cheat_new_proc(int msg, DIALOG *d, int c){   int ret=x_raine_button_proc(msg, d, c);   if(ret==D_CLOSE){      Unselect_Button(d);      FadeGUI();      do_cheat_add(0,0);      return D_REDRAW;   }   return ret;}void DoCheatDelete(void){   int ta,tb;   ta=actionreplay_dialog[1].d1;   if(ta<CheatCount){      if((raine_alert(raine_translate_text("Warning"),raine_translate_text("Really delete this cheat"),raine_translate_text("permanently?"),NULL,raine_translate_text("&Yes"),raine_translate_text("&No"),'Y','N'))==1){         for(tb=ta; tb<(CheatCount-1); tb++){            memcpy(&CheatList[tb], &CheatList[tb+1], sizeof(CHEAT));         }         CheatCount--;      }   }}int cheat_del_proc(int msg, DIALOG *d, int c){   int ret=x_raine_button_proc(msg, d, c);   if(ret==D_CLOSE){      Unselect_Button(d);      DoCheatDelete();      return D_REDRAW;   }   return ret;}int actionreplay_proc(int msg, DIALOG *d, int c){   int ta;   int ret=x_raine_button_proc(msg,d,c);   if(ret==D_CLOSE){      Unselect_Button(d);      FadeGUI();      ta=0;      while(ta==0){      switch(ar_window){         case 0x00:            ta = cheat_main_proc();         break;         case 0x01:            ta = cheat_search_proc();         break;      }      }      return D_REDRAW;   }   return ret;}

⌨️ 快捷键说明

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