📄 dlg_cheat.c
字号:
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 + -