Free Hero Mesh

Check-in [165d3cd4f7]
Login
This is a mirror of the main repository for Free Hero Mesh. New tickets and changes will not be accepted at this mirror.
Overview
Comment:Add traceAll resource
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 165d3cd4f7b5906632ba04a46e9f5967556e8510
User & Date: user on 2020-12-01 22:09:48
Other Links: manifest | tags
Context
2020-12-02
00:39
Fix send_message so that it correctly skips sending if the message pointer is 0xFFFF, not zero check-in: 166412b059 user: user tags: trunk
2020-12-01
22:09
Add traceAll resource check-in: 165d3cd4f7 user: user tags: trunk
2020-11-30
21:37
Add names for Transform, TRANSFORMING, and TRANSFORMED; not implemented yet check-in: 56fff32581 user: user tags: trunk
Changes

Modified exec.c from [00ba881dd8] to [d1ca262282].

296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
    p=o->prev;
    if(!c || o->class==c) {
      v=send_message(from,n,msg,arg1,arg2,arg3);
      if(s>0) {
        switch(v.t) {
          case TY_NUMBER: t+=v.u; break;
          case TY_CLASS: t++; break;
          case TY_MESSAGE: break;
          default:
            if(v.t<=TY_MAXTYPE) Throw("Invalid return type for BroadcastSum");
            t++;
        }
      } else {
        if(s<0) arg2=v;
        t++;







<







296
297
298
299
300
301
302

303
304
305
306
307
308
309
    p=o->prev;
    if(!c || o->class==c) {
      v=send_message(from,n,msg,arg1,arg2,arg3);
      if(s>0) {
        switch(v.t) {
          case TY_NUMBER: t+=v.u; break;
          case TY_CLASS: t++; break;

          default:
            if(v.t<=TY_MAXTYPE) Throw("Invalid return type for BroadcastSum");
            t++;
        }
      } else {
        if(s<0) arg2=v;
        t++;

Modified main.c from [64955f8adb] to [ee9e1c16af].

794
795
796
797
798
799
800











801
802
803
804
805
806
807
}
#endif

const char*log_if_error(const char*t) {
  if(t && main_options['v']) fprintf(stderr,"!! %s\n",t);
  return t;
}












int main(int argc,char**argv) {
  int optind=1;
  while(argc>optind && argv[optind][0]=='-') {
    int i;
    const char*s=argv[optind++];
    if(s[1]=='-' && !s[2]) break;







>
>
>
>
>
>
>
>
>
>
>







794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
}
#endif

const char*log_if_error(const char*t) {
  if(t && main_options['v']) fprintf(stderr,"!! %s\n",t);
  return t;
}

static void set_tracing(void) {
  const char*v;
  int i;
  optionquery[1]=Q_traceAll;
  v=xrm_get_resource(resourcedb,optionquery,optionquery,2)?:"";
  if(boolxrm(v,0)) {
    memset(message_trace,255,sizeof(message_trace));
    for(i=0;i<0x4000;i++) if(classes[i]) classes[i]->cflags|=CF_TRACEIN|CF_TRACEOUT;
  }
}

int main(int argc,char**argv) {
  int optind=1;
  while(argc>optind && argv[optind][0]=='-') {
    int i;
    const char*s=argv[optind++];
    if(s[1]=='-' && !s[2]) break;
840
841
842
843
844
845
846

847
848
849
850
851
852
853
854
855
856
    return 0;
  }
  init_usercache();
  load_classes();
  load_level_index();
  optionquery[1]=Q_maxObjects;
  max_objects=strtoll(xrm_get_resource(resourcedb,optionquery,optionquery,2)?:"",0,0)?:0xFFFF0000L;

  annihilate();
  optionquery[1]=Q_level;
  if(level_ord=strtol(xrm_get_resource(resourcedb,optionquery,optionquery,2)?:"",0,10)) log_if_error(load_level(-level_ord));
  if(main_options['x']) {
    fprintf(stderr,"Ready for executing SQL statements.\n");
    do_sql_mode();
    return 0;
  }
  for(;;) { if(main_options['e']) run_editor(); else run_game(); }
}







>










851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
    return 0;
  }
  init_usercache();
  load_classes();
  load_level_index();
  optionquery[1]=Q_maxObjects;
  max_objects=strtoll(xrm_get_resource(resourcedb,optionquery,optionquery,2)?:"",0,0)?:0xFFFF0000L;
  set_tracing();
  annihilate();
  optionquery[1]=Q_level;
  if(level_ord=strtol(xrm_get_resource(resourcedb,optionquery,optionquery,2)?:"",0,10)) log_if_error(load_level(-level_ord));
  if(main_options['x']) {
    fprintf(stderr,"Ready for executing SQL statements.\n");
    do_sql_mode();
    return 0;
  }
  for(;;) { if(main_options['e']) run_editor(); else run_game(); }
}

Modified quarks from [a113357ac4] to [049bdf1ebf].

208
209
210
211
212
213
214

215
sqlPowerSafe

! Miscellaneous
level
tracePrefix
stackProtection
maxObjects









>

208
209
210
211
212
213
214
215
216
sqlPowerSafe

! Miscellaneous
level
tracePrefix
stackProtection
maxObjects
traceAll

Modified quarks.h from [6b9c60aaee] to [def9f2d174].

173
174
175
176
177
178
179

180
181
182
183
184
185
186
#define Q_sqlSmallAllocations 174
#define Q_sqlCoveringIndexScan 175
#define Q_sqlPowerSafe 176
#define Q_level 177
#define Q_tracePrefix 178
#define Q_stackProtection 179
#define Q_maxObjects 180

static const char*const global_quarks[]={
  "screenWidth",
  "screenHeight",
  "margin",
  "palette",
  "popupColors",
  "imageSize",







>







173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
#define Q_sqlSmallAllocations 174
#define Q_sqlCoveringIndexScan 175
#define Q_sqlPowerSafe 176
#define Q_level 177
#define Q_tracePrefix 178
#define Q_stackProtection 179
#define Q_maxObjects 180
#define Q_traceAll 181
static const char*const global_quarks[]={
  "screenWidth",
  "screenHeight",
  "margin",
  "palette",
  "popupColors",
  "imageSize",
353
354
355
356
357
358
359

360
361
362
363
364
365
366
  "sqlSmallAllocations",
  "sqlCoveringIndexScan",
  "sqlPowerSafe",
  "level",
  "tracePrefix",
  "stackProtection",
  "maxObjects",

0};
#ifdef HEROMESH_BINDINGS
static const SDLKey quark_to_key[Q_undo+1-Q_backspace]={
SDLK_BACKSPACE,
SDLK_TAB,
SDLK_CLEAR,
SDLK_RETURN,







>







354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
  "sqlSmallAllocations",
  "sqlCoveringIndexScan",
  "sqlPowerSafe",
  "level",
  "tracePrefix",
  "stackProtection",
  "maxObjects",
  "traceAll",
0};
#ifdef HEROMESH_BINDINGS
static const SDLKey quark_to_key[Q_undo+1-Q_backspace]={
SDLK_BACKSPACE,
SDLK_TAB,
SDLK_CLEAR,
SDLK_RETURN,