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

📄 dlg_cheat.c

📁 著名ARC模拟器源码,包括多个平台
💻 C
📖 第 1 页 / 共 3 页
字号:
#include "raine.h"#include "rgui.h"#include "rguiproc.h"#include "gui.h"#include "dlg_cheat.h"#include "arpro.h"typedef char editf[256];static editf cheateditname,cheateditaddress,cheateditdata,cheateditinfo,  cheateditmask;static char *cheat_size_getter(int index, int *list_size){   static char *list_data[] =   {      "1 byte",      "2 bytes",      "3 bytes",      "4 bytes",   };   if(index == -1){      if(list_size)	 *list_size = sizeof(list_data) / sizeof(char *);      return NULL;   }   if(index >= 0)      return raine_translate_text(list_data[index]);   else      return NULL;}#define CHEAT_SIZE 15#define CHEAT_TYPE 17DIALOG cheatdata_edit_dialog[] ={   /* (dialog proc)      (x)   (y)   (w)   (h)   (fg)  (bg)  (key) (flags)  (d1)  (d2)  (dp) */   { d_raine_window_proc,40,   10,   320,  112,  GUI_COL_TEXT_1,  GUI_BOX_COL_MIDDLE,  0,    0,       0,    0,    "Edit Cheat Data"},   { x_raine_button_proc,48,   98,   48,   16,   GUI_COL_TEXT_1,  GUI_BOX_COL_MIDDLE,  'D',  D_EXIT,  0,    0,    "&Done"},   { x_raine_button_proc,104,  98,   48,   16,   GUI_COL_TEXT_1,  GUI_BOX_COL_MIDDLE,  'C',  D_EXIT,  0,    0,    "&Cancel"},   { x_text_proc,        48,   26,   0,    8,    GUI_COL_TEXT_2,  GUI_BOX_COL_MIDDLE,  0,    0,       0,    0,    "Edit Cheat Data:"},   { x_text_proc,        48,   38,   0,    8,    GUI_COL_TEXT_2,  GUI_BOX_COL_MIDDLE,  0,    0,       0,    0,    "Name:"},   { x_edit_proc,        80,   38,   6*12, 8,    GUI_COL_TEXT_1,  253,  0,    0,       255,  0,    cheateditname},   { x_text_proc,        48,   48,   0,    8,    GUI_COL_TEXT_2,  GUI_BOX_COL_MIDDLE,  0,    0,       0,    0,    "Addr:"},   { x_edit_proc,        80,   48,   6*9,  8,    GUI_COL_TEXT_1,  253,  0,    0,       8,    0,    cheateditaddress},   { x_text_proc,        48,   58,   0,    8,    GUI_COL_TEXT_2,  GUI_BOX_COL_MIDDLE,  0,    0,       0,    0,    "Data:"},   { x_edit_proc,        80,   58,   6*9,  8,    GUI_COL_TEXT_1,  253,  0,    0,       8,    0,    cheateditdata},   { x_text_proc,        48,   68,   0,    8,    GUI_COL_TEXT_2,  GUI_BOX_COL_MIDDLE,  0,    0,       0,    0,    "Info:"},   { x_edit_proc,        80,   68,   6*12, 8,    GUI_COL_TEXT_1,  253,  0,    0,       255,  0,    cheateditinfo},   { x_text_proc,        48,   78,   0,    8,    GUI_COL_TEXT_2,  GUI_BOX_COL_MIDDLE,  0,    0,       0,    0,    "Mask:"},   { x_edit_proc,        80,   78,   6*12, 8,    GUI_COL_TEXT_1,  253,  0,    0,       255,  0,    cheateditmask},   { x_text_proc, 170,   26,   0,    8,    GUI_COL_TEXT_2,  GUI_BOX_COL_MIDDLE,  0,    0,       0,    0,    "Size:"},   { d_raine_list_proc,       170,  36,   64, 30,   255,  GUI_BOX_COL_MIDDLE,    0,    0,       0,    0,    cheat_size_getter, NULL, NULL},   { x_text_proc, 240,   26,   0,    8,    GUI_COL_TEXT_2,  GUI_BOX_COL_MIDDLE,  0,    0,       0,    0,    "Type:"},   { x_raine_radio_proc, 240,    46,64,   9,    255,  GUI_BOX_COL_MIDDLE,    0,    0,       5,    1,    "Permanent", NULL, NULL},   { x_raine_radio_proc, 240,    36,64,   9,    255,  GUI_BOX_COL_MIDDLE,    0,    0,       5,    1,    "Temporary", NULL, NULL},   { x_raine_radio_proc, 240,    56,64,   9,    255,  GUI_BOX_COL_MIDDLE,    0,    0,       5,    1,    "Watchpoint", NULL, NULL},   { NULL,               0,    0,    0,    0,    0,    0,    0,    0,       0,    0,    NULL}};DIALOG actionreplay_dialog[] ={   /* (dialog proc)      (x)   (y)   (w)   (h)   (fg)  (bg)  (key) (flags)  (d1)  (d2)  (dp) */   { d_raine_window_proc,40,   10,   240,  178+12,GUI_COL_TEXT_1, GUI_BOX_COL_MIDDLE,  0,    0,       0,    0,    "Cheat Control"},   { d_raine_list_proc,  48,   26+12,224,  112,  GUI_COL_TEXT_1,  GUI_BOX_COL_MIDDLE,  0,    D_EXIT,  0,    0,    cheatlist_getter},   { x_raine_button_proc,48,   164+12,48,  16,   GUI_COL_TEXT_1,  GUI_BOX_COL_MIDDLE,  'D',  D_EXIT,  0,    0,    "&Done"},   { cheat_edit_proc,    48,   144+12,56,  16,   GUI_COL_TEXT_1,  GUI_BOX_COL_MIDDLE,  'T',  D_EXIT,  0,    0,    "&Toggle"},   { cheatdata_edit_proc,112,  144+12,48,  16,   GUI_COL_TEXT_1,  GUI_BOX_COL_MIDDLE,  'E',  D_EXIT,  0,    0,    "&Edit"},   { x_text_proc,        48,   26,   0,    8,    GUI_COL_TEXT_2,  GUI_BOX_COL_MIDDLE,  0,    0,       0,    0,    "Action Replay cheats:"},   { x_raine_button_proc,216,  164+12,56,  16,   GUI_COL_TEXT_1,  GUI_BOX_COL_MIDDLE,  'S',  D_EXIT,  0,    0,    "&Search>>"},   { cheat_new_proc,     168,  144+12,32,  16,   GUI_COL_TEXT_1,  GUI_BOX_COL_MIDDLE,  'N',  D_EXIT,  0,    0,    "&New"},   { cheat_del_proc,     208,  144+12,56,  16,   GUI_COL_TEXT_1,  GUI_BOX_COL_MIDDLE,  0,    D_EXIT,  0,    0,    "Delete"},   { NULL,               0,    0,    0,    0,    0,    0,    0,    0,       0,    0,    NULL}};int cheat_search_new_proc(int msg, DIALOG *d, int c);int cheat_search_cont_proc(int msg, DIALOG *d, int c);DIALOG search_main_dialog[] ={   /* (dialog proc)      (x)   (y)   (w)   (h)   (fg)  (bg)  (key) (flags)  (d1)  (d2)  (dp) */   { d_raine_window_proc,40,   10,   240,  178+12,GUI_COL_TEXT_1, GUI_BOX_COL_MIDDLE,  0,    0,       0,    0,    "Cheat Search"},   { x_raine_button_proc,48,   164+12,48,  16,   GUI_COL_TEXT_1,  GUI_BOX_COL_MIDDLE,  'D',  D_EXIT,  0,    0,    "&Done"},   { cheat_search_new_proc,48, 144+12,64,  16,   GUI_COL_TEXT_1,  GUI_BOX_COL_MIDDLE,  'S',  D_EXIT,  0,    0,    "New &Search"},   { cheat_search_cont_proc,120,144+12,64, 16,   GUI_COL_TEXT_1,  GUI_BOX_COL_MIDDLE,  'C',  D_EXIT,  0,    0,    "&Continue"},   { d_raine_list_proc,  48,   26+12,224,  112,  GUI_COL_TEXT_1,  GUI_BOX_COL_MIDDLE,  0,    D_EXIT,  0,    0,    search_list_getter},   { x_text_proc,        48,   26,     0,   8,   GUI_COL_TEXT_2,  GUI_BOX_COL_MIDDLE,  0,    0,       0,    0,    "Action Replay results:"},   { x_raine_button_proc,216,  164+12,56,  16,   GUI_COL_TEXT_1,  GUI_BOX_COL_MIDDLE,  'E',  D_EXIT,  0,    0,    "&Edit>>"},   { cheat_add_proc,     192,  144+12,64,  16,   GUI_COL_TEXT_1,  GUI_BOX_COL_MIDDLE,  'A',  D_EXIT,  0,    0,    "&Add Result"},   { NULL,               0,    0,      0,   0,     0,    0,   0,   0,       0,    0,    NULL}};char *search_mode_getter(int index, int *list_size);DIALOG search_mode_dialog[] ={   /* (dialog proc)      (x)   (y)   (w)   (h)   (fg)  (bg)  (key) (flags)  (d1)  (d2)  (dp) */   { d_raine_window_proc,40,   10,   180,  80+12,GUI_COL_TEXT_1, GUI_BOX_COL_MIDDLE,   0,    0,       0,    0,    "New Search"},   { x_text_proc,        48,   26,     0,   8,   GUI_COL_TEXT_2,  GUI_BOX_COL_MIDDLE,  0,    0,       0,    0,    "Choose Search Mode:"},   { d_raine_list_proc,  48,   26+12,164,  32+4, GUI_COL_TEXT_1,  GUI_BOX_COL_MIDDLE,  0,    D_EXIT,  0,    0,    search_mode_getter},   { x_raine_button_proc,48,   68+12, 48,  16,   GUI_COL_TEXT_1,  GUI_BOX_COL_MIDDLE,  'D',  D_EXIT,  0,    0,    "&Done"},   { NULL,               0,    0,      0,   0,     0,    0,   0,   0,       0,    0,    NULL}};char byte_hex_data[8];char byte_dec_data[8];char byte_sgn_data[8];char byte_asc_data[8];DIALOG *byte_hex_dialog;DIALOG *byte_dec_dialog;DIALOG *byte_sgn_dialog;DIALOG *byte_asc_dialog;int byte_hex_edit_proc(int msg, DIALOG *d, int c);int byte_dec_edit_proc(int msg, DIALOG *d, int c);int byte_sgn_edit_proc(int msg, DIALOG *d, int c);int byte_asc_edit_proc(int msg, DIALOG *d, int c);DIALOG search_type_0a_dialog[] ={   /* (dialog proc)      (x)   (y)   (w)   (h)   (fg)  (bg)  (key) (flags)  (d1)  (d2)  (dp) */   { d_raine_window_proc,40,   10,   180,  80+12,GUI_COL_TEXT_1, GUI_BOX_COL_MIDDLE,   0,    0,       0,    0,    "New Search"},   { x_text_proc,        48,   26,     0,   8,   GUI_COL_TEXT_2,  GUI_BOX_COL_MIDDLE,  0,    0,       0,    0,    "Enter Search Byte:"},   { x_text_proc,        48,   26+12,  0,   8,   GUI_COL_TEXT_2,  GUI_BOX_COL_MIDDLE,  0,    0,       0,    0,    "Hex:"},   { byte_hex_edit_proc, 48+(6*8),26+12,6*6,8,   GUI_COL_TEXT_1,  253,  0,    D_EXIT,  2,    0,    byte_hex_data},   { x_text_proc,        48,   36+12,  0,   8,   GUI_COL_TEXT_2,  GUI_BOX_COL_MIDDLE,  0,    0,       0,    0,    "Dec:"},   { byte_dec_edit_proc, 48+(6*8),36+12,6*6,8,   GUI_COL_TEXT_1,  253,  0,    D_EXIT,  3,    0,    byte_dec_data},   { x_text_proc,        48,   46+12,  0,   8,   GUI_COL_TEXT_2,  GUI_BOX_COL_MIDDLE,  0,    0,       0,    0,    "Signed:"},   { byte_sgn_edit_proc, 48+(6*8),46+12,6*6,8,   GUI_COL_TEXT_1,  253,  0,    D_EXIT,  4,    0,    byte_sgn_data},   { x_text_proc,        48,   56+12,  0,   8,   GUI_COL_TEXT_2,  GUI_BOX_COL_MIDDLE,  0,    0,       0,    0,    "Ascii:"},   { byte_asc_edit_proc, 48+(6*8),56+12,6*6,8,   GUI_COL_TEXT_1,  253,  0,    D_EXIT,  1,    0,    byte_asc_data},   { x_raine_button_proc,48,   68+12, 48,  16,   GUI_COL_TEXT_1,  GUI_BOX_COL_MIDDLE,  'D',  D_EXIT,  0,    0,    "&Done"},   { NULL,               0,    0,      0,   0,     0,    0,   0,   0,       0,    0,    NULL}};DIALOG search_type_0b_dialog[] ={   /* (dialog proc)      (x)   (y)   (w)   (h)   (fg)  (bg)  (key) (flags)  (d1)  (d2)  (dp) */   { d_raine_window_proc,40,   10,   180,  80+12,GUI_COL_TEXT_1, GUI_BOX_COL_MIDDLE,   0,    0,       0,    0,    "Continue Search"},   { x_text_proc,        48,   26,     0,   8,   GUI_COL_TEXT_2,  GUI_BOX_COL_MIDDLE,  0,    0,       0,    0,    "Enter Search Byte:"},   { x_text_proc,        48,   26+12,  0,   8,   GUI_COL_TEXT_2,  GUI_BOX_COL_MIDDLE,  0,    0,       0,    0,    "Hex:"},   { byte_hex_edit_proc, 48+(6*8),26+12,6*6,8,   GUI_COL_TEXT_1,  253,  0,    D_EXIT,  2,    0,    byte_hex_data},   { x_text_proc,        48,   36+12,  0,   8,   GUI_COL_TEXT_2,  GUI_BOX_COL_MIDDLE,  0,    0,       0,    0,    "Dec:"},   { byte_dec_edit_proc, 48+(6*8),36+12,6*6,8,   GUI_COL_TEXT_1,  253,  0,    D_EXIT,  3,    0,    byte_dec_data},   { x_text_proc,        48,   46+12,  0,   8,   GUI_COL_TEXT_2,  GUI_BOX_COL_MIDDLE,  0,    0,       0,    0,    "Signed:"},   { byte_sgn_edit_proc, 48+(6*8),46+12,6*6,8,   GUI_COL_TEXT_1,  253,  0,    D_EXIT,  4,    0,    byte_sgn_data},   { x_text_proc,        48,   56+12,  0,   8,   GUI_COL_TEXT_2,  GUI_BOX_COL_MIDDLE,  0,    0,       0,    0,    "Ascii:"},   { byte_asc_edit_proc, 48+(6*8),56+12,6*6,8,   GUI_COL_TEXT_1,  253,  0,    D_EXIT,  1,    0,    byte_asc_data},   { x_raine_button_proc,48,   68+12, 48,  16,   GUI_COL_TEXT_1,  GUI_BOX_COL_MIDDLE,  'D',  D_EXIT,  0,    0,    "&Done"},   { NULL,               0,    0,      0,   0,     0,    0,   0,   0,       0,    0,    NULL}};DIALOG search_type_1a_dialog[] ={   /* (dialog proc)      (x)   (y)   (w)   (h)   (fg)  (bg)  (key) (flags)  (d1)  (d2)  (dp) */   { d_raine_window_proc,40,   10,   160,  68,   GUI_COL_TEXT_1,  GUI_BOX_COL_MIDDLE,  0,    0,       0,    0,    "New Search"},   { x_text_proc,        48,   26,     0,   8,   GUI_COL_TEXT_2,  GUI_BOX_COL_MIDDLE,  0,    0,       0,    0,    "Search initialized, use"},   { x_text_proc,        48,   36,     0,   8,   GUI_COL_TEXT_2,  GUI_BOX_COL_MIDDLE,  0,    0,       0,    0,    "continue search when the"},   { x_text_proc,        48,   46,     0,   8,   GUI_COL_TEXT_2,  GUI_BOX_COL_MIDDLE,  0,    0,       0,    0,    "search value has changed."},   { x_raine_button_proc,48,   56,    48,  16,   GUI_COL_TEXT_1,  GUI_BOX_COL_MIDDLE,  'D',  D_EXIT,  0,    0,    "&Done"},   { NULL,               0,    0,      0,   0,     0,    0,   0,   0,       0,    0,    NULL}};DIALOG search_type_1b_dialog[] ={   /* (dialog proc)      (x)   (y)   (w)   (h)   (fg)  (bg)  (key) (flags)  (d1)  (d2)  (dp) */   { d_raine_window_proc,40,   10,   200,  80+12,GUI_COL_TEXT_1, GUI_BOX_COL_MIDDLE,   0,    0,       0,    0,    "Continue Search"},   { x_text_proc,        48,   26,     0,   8,   GUI_COL_TEXT_2,  GUI_BOX_COL_MIDDLE,  0,    0,       0,    0,    "Enter difference from last byte:"},   { x_text_proc,        48,   26+12,  0,   8,   GUI_COL_TEXT_2,  GUI_BOX_COL_MIDDLE,  0,    0,       0,    0,    "Hex:"},   { byte_hex_edit_proc, 48+(6*8),26+12,6*6,8,   GUI_COL_TEXT_1,  253,  0,    D_EXIT,  2,    0,    byte_hex_data},   { x_text_proc,        48,   36+12,  0,   8,   GUI_COL_TEXT_2,  GUI_BOX_COL_MIDDLE,  0,    0,       0,    0,    "Dec:"},   { byte_dec_edit_proc, 48+(6*8),36+12,6*6,8,   GUI_COL_TEXT_1,  253,  0,    D_EXIT,  3,    0,    byte_dec_data},   { x_text_proc,        48,   46+12,  0,   8,   GUI_COL_TEXT_2,  GUI_BOX_COL_MIDDLE,  0,    0,       0,    0,    "Signed:"},   { byte_sgn_edit_proc, 48+(6*8),46+12,6*6,8,   GUI_COL_TEXT_1,  253,  0,    D_EXIT,  4,    0,    byte_sgn_data},   { x_text_proc,        48,   56+12,  0,   8,   GUI_COL_TEXT_2,  GUI_BOX_COL_MIDDLE,  0,    0,       0,    0,    "Ascii:"},   { byte_asc_edit_proc, 48+(6*8),56+12,6*6,8,   GUI_COL_TEXT_1,  253,  0,    D_EXIT,  1,    0,    byte_asc_data},   { x_raine_button_proc,48,   68+12, 48,  16,   GUI_COL_TEXT_1,  GUI_BOX_COL_MIDDLE,  'D',  D_EXIT,  0,    0,    "&Done"},   { NULL,               0,    0,      0,   0,     0,    0,   0,   0,       0,    0,    NULL}};#define search_type_2a_dialog search_type_1a_dialogchar *search_type_2b_getter(int index, int *list_size);DIALOG search_type_2b_dialog[] ={   /* (dialog proc)      (x)   (y)   (w)   (h)   (fg)  (bg)  (key) (flags)  (d1)  (d2)  (dp) */   { d_raine_window_proc,40,   10,   180,  80+12,GUI_COL_TEXT_1, GUI_BOX_COL_MIDDLE,   0,    0,       0,    0,    "Continue Search"},   { x_text_proc,        48,   26,     0,   8,   GUI_COL_TEXT_2,  GUI_BOX_COL_MIDDLE,  0,    0,       0,    0,    "Bit status since last search:"},   { d_raine_list_proc,  48,   26+12,164,  32+4, GUI_COL_TEXT_1,  GUI_BOX_COL_MIDDLE,  0,    D_EXIT,  0,    0,    search_type_2b_getter},   { x_raine_button_proc,48,   68+12, 48,  16,   GUI_COL_TEXT_1,  GUI_BOX_COL_MIDDLE,  'D',  D_EXIT,  0,    0,    "&Done"},   { NULL,               0,    0,      0,   0,     0,    0,   0,   0,       0,    0,    NULL}};#define search_type_3a_dialog search_type_1a_dialogchar *search_type_3b_getter(int index, int *list_size);DIALOG search_type_3b_dialog[] ={   /* (dialog proc)     (x)   (y)   (w)   (h)   (fg)  (bg)  (key) (flags)  (d1)  (d2)  (dp) */   { d_raine_window_proc,0,    0,    180, 80+12,GUI_COL_TEXT_1,  GUI_BOX_COL_MIDDLE,   0,    0,       0,    0,    "Continue Search"},   { x_text_proc,        8,    16,   0,   8,    GUI_COL_TEXT_2,  GUI_BOX_COL_MIDDLE,  0,    0,       0,    0,    "Byte status since last search:"},   { d_raine_list_proc,  8,    28,   164, 32+4, GUI_COL_TEXT_1,  GUI_BOX_COL_MIDDLE,  0,    D_EXIT,  0,    0,    search_type_3b_getter},   { x_raine_button_proc,8,    70,   48,  16,   GUI_COL_TEXT_1,  GUI_BOX_COL_MIDDLE,  'D',  D_EXIT,  0,    0,    "&Done"},   { NULL,               0,    0,    0,   0,     0,    0,   0,   0,       0,    0,    NULL}};char *hex_view_getter(int index, int *list_size);DIALOG hex_view_dialog[] ={   /* (dialog proc)      (x)   (y)   (w)   (h)   (fg)  (bg)  (key) (flags)  (d1)  (d2)  (dp) */   { d_raine_window_proc,0,    10,   284,  200+12,GUI_COL_TEXT_1, GUI_BOX_COL_MIDDLE,  0,    0,       0,    0,    "View Memory"},   { x_raine_button_proc,8,    186+12,48,  16,   GUI_COL_TEXT_1,  GUI_BOX_COL_MIDDLE,  'D',  D_EXIT,  0,    0,    "&Done"},   { d_raine_list_proc,  8,    26+12,268,  156,  GUI_COL_TEXT_1,  GUI_BOX_COL_MIDDLE,  0,    D_EXIT,  0,    0,    hex_view_getter},   { x_text_proc,        8,    26,     0,   8,   GUI_COL_TEXT_2,  GUI_BOX_COL_MIDDLE,  0,    0,       0,    0,    "Memory Dump:"},   { NULL,               0,    0,      0,   0,     0,    0,  0,    0,       0,    0,    NULL}};static UINT32 hex_start;static UINT32 hex_end;static UINT32 hex_lines;char *hex_view_getter(int index, int *list_size){   int ta;   UINT8 data[8];   UINT8 state[8+1];   static char S[128];   switch(index){   case -1:			// Return List Size      *list_size = hex_lines;      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)&&((UINT32)index<hex_lines)){         sprintf(S,"%06X:",hex_start+(index<<3));         state[0] = 0;         for(ta=0;ta<8;ta++){            data[ta] = gen_cpu_read_byte_2(hex_start+(index<<3)+ta);            state[ta+1] = get_address_status(hex_start+(index<<3)+ta);         }         for(ta=0;ta<8;ta++){            if((state[ta])||(state[ta+1]))               sprintf(S+strlen(S),"*");            else               sprintf(S+strlen(S)," ");            sprintf(S+strlen(S),"%02X",data[ta]);         }         if(state[8])            sprintf(S+strlen(S),"*");         else            sprintf(S+strlen(S)," ");         for(ta=0;ta<8;ta++){            if((data[ta]>=0x20)&&(data[ta]<=0x7F))               sprintf(S+strlen(S),"%c",data[ta]);            else               sprintf(S+strlen(S),".");         }         return S;      }      else         return NULL;   break;   }}void do_hex_view(UINT32 offset){   int ret;   hex_start = get_search_range_start(offset);   hex_end   = get_search_range_end  (offset);   hex_lines = (hex_end + 1) - (hex_start);   hex_lines = hex_lines >> 3;   hex_view_dialog[2].d1 = (offset - hex_start) >> 3;   if(hex_view_dialog[2].d1 >= 9)      hex_view_dialog[2].d2 = hex_view_dialog[2].d1 - 9;   ret = raine_do_dialog(hex_view_dialog,-1);}static UINT32 *s_list;char *search_list_getter(int index, int *list_size){   int ta;   static char S[128];   if(match_all_count>0){   switch(index){   case -1:			// Return List Size      if(match_all_count>512){         *list_size=512;      }      else{         *list_size=match_all_count;      }      return NULL;   break;   case -2:			// Act upon List Object Selection      ta = search_main_dialog[4].d1;      if(ta<match_all_count){         do_hex_view(s_list[ta]);      }      *list_size=D_REDRAW;      return NULL;   break;   case -3:			// Act Keyboard Input      return NULL;   break;   default:      if((index >= 0)&&(index<511)){         sprintf(S,"%06x: %02x",s_list[index],gen_cpu_read_byte_2(s_list[index]));         return(S);      }      if(index==511){         return("......  ..");      }      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;

⌨️ 快捷键说明

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